diff --git a/.ci/azure/analyze_gtest_log.py b/.ci/azure/analyze_gtest_log.py new file mode 100644 index 00000000000000..c1d8c64ebc4af8 --- /dev/null +++ b/.ci/azure/analyze_gtest_log.py @@ -0,0 +1,53 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +""" +Analyze GTest logs +""" + +import re +from argparse import ArgumentParser + + +def get_passed_tests(log_file_path): + """Gets passed tests with OK status""" + ok_test_line_pattern = "[ OK ] " + ok_tests = [] + with open(log_file_path) as log_file_obj: + for line in log_file_obj.readlines(): + if ok_test_line_pattern in line: + ok_tests.append(line.split(ok_test_line_pattern)[1]) + return ok_tests + + +def get_total_time(tests): + """Gets total execution time (sec)""" + re_compile_time = re.compile(r".+ \(([0-9]+) ms\)") + total_time = 0.0 + for test in tests: + re_time = re_compile_time.match(test) + if re_time: + total_time += int(re_time.group(1)) / 1000 + else: + print("No time in the test line:", test) + return total_time + + +def main(): + """The main entry point function""" + arg_parser = ArgumentParser() + arg_parser.add_argument( + "--log-file", metavar="PATH", default="gtest.log", help="Path to GTest log file" + ) + args = arg_parser.parse_args() + + passed_tests = get_passed_tests(args.log_file) + print("PASSED tests count:", len(passed_tests)) + print("Total execution time of passed tests (sec):", get_total_time(passed_tests)) + + print("\nPASSED tests:") + print("".join(sorted(passed_tests))) + + +if __name__ == "__main__": + main() diff --git a/.ci/azure/ci_utils/onnxruntime/skip_tests b/.ci/azure/ci_utils/onnxruntime/skip_tests new file mode 100644 index 00000000000000..475b79b4acac66 --- /dev/null +++ b/.ci/azure/ci_utils/onnxruntime/skip_tests @@ -0,0 +1,6 @@ +TransposeOpTest.NHWC2NCHW +TransposeOpTest.NCHW2NHWC +TransposeOpTest.TwoDim_int16 +GatherOpTest.Gather_axis1_indices2d_int16 +SoftmaxOperator.ThreeDimsAxis1 +SoftmaxOperator.ThreeDimsAxis0 diff --git a/.ci/azure/ci_utils/onnxruntime/version b/.ci/azure/ci_utils/onnxruntime/version new file mode 100644 index 00000000000000..3abd49542da1e3 --- /dev/null +++ b/.ci/azure/ci_utils/onnxruntime/version @@ -0,0 +1 @@ +rel-1.7.1 diff --git a/.ci/azure/linux_conditional_compilation.yml b/.ci/azure/linux_conditional_compilation.yml new file mode 100644 index 00000000000000..6d2d33574b7295 --- /dev/null +++ b/.ci/azure/linux_conditional_compilation.yml @@ -0,0 +1,87 @@ +jobs: +- job: LinCC + # About 150% of total time + timeoutInMinutes: 90 + + pool: + name: LIN_VMSS_VENV_F16S_WU2 + + variables: + system.debug: true + VSTS_HTTP_RETRY: 5 + VSTS_HTTP_TIMEOUT: 200 + WORKERS_NUMBER: 16 + BUILD_TYPE: Release + REPO_DIR: $(Build.Repository.LocalPath) + OPENVINO_CONTRIB_REPO_DIR: $(REPO_DIR)/../openvino_contrib + MODELS_PATH: $(REPO_DIR)/../testdata + WORK_DIR: $(Pipeline.Workspace)/_w + BUILD_DIR: $(WORK_DIR)/build + BIN_DIR: $(REPO_DIR)/bin/intel64/$(BUILD_TYPE) + INSTALL_DIR: $(WORK_DIR)/install_pkg + SETUPVARS: $(INSTALL_DIR)/bin/setupvars.sh + + steps: + - script: | + curl -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2019-06-01" + whoami + uname -a + echo Python3 info ; which python3 ; python3 --version + echo Python info ; which python ; python --version + echo Java info ; which java ; java -version + echo gcc info ; which gcc ; gcc --version + lsb_release + env + cat /proc/cpuinfo + cat /proc/meminfo + cat /etc/fstab + vmstat -s + df + lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd" + free -h + displayName: 'System info' + + - script: | + rm -rf $(WORK_DIR) ; mkdir $(WORK_DIR) + rm -rf $(BUILD_DIR) ; mkdir $(BUILD_DIR) + displayName: 'Make dir' + + - checkout: self + clean: true + lfs: false + submodules: recursive + path: openvino + + - script: | + sudo apt --assume-yes install libusb-1.0-0-dev + python3 -m pip install -r $(REPO_DIR)/inference-engine/ie_bridges/python/requirements.txt + # Speed up build + wget https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-linux.zip + unzip ninja-linux.zip + sudo cp -v ninja /usr/local/bin/ + workingDirectory: $(WORK_DIR) + displayName: 'Install dependencies' + + - task: CMake@1 + inputs: + cmakeArgs: > + -GNinja + -DVERBOSE_BUILD=ON + -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) + -DENABLE_FASTER_BUILD=ON + -DENABLE_PROFILING_ITT=ON + -DSELECTIVE_BUILD=COLLECT + $(REPO_DIR) + workingDirectory: $(BUILD_DIR) + + - script: ninja + workingDirectory: $(BUILD_DIR) + displayName: 'Build' + + - script: ls -alR $(REPO_DIR)/bin/ + displayName: 'List files' + + - script: cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -P cmake_install.cmake + workingDirectory: $(BUILD_DIR) + displayName: 'Install' + diff --git a/.ci/azure/linux_ngraph_onnx.yml b/.ci/azure/linux_ngraph_onnx.yml index c2ee9f1c31b575..e11e72e102d33f 100644 --- a/.ci/azure/linux_ngraph_onnx.yml +++ b/.ci/azure/linux_ngraph_onnx.yml @@ -43,7 +43,7 @@ jobs: sudo rm -rf $(TMP_DIR) ; sudo mkdir $(TMP_DIR) ; sudo chmod 777 -R $(TMP_DIR) sudo mkdir -p $(MODELS_DIR) sudo apt --assume-yes install nfs-common - sudo mount -t nfs cinfsshare.file.core.windows.net:/cinfsshare/onnxtestdata $(MODELS_DIR) -o vers=4,minorversion=1,sec=sys + sudo mount -vvv -t nfs cinfsshare.file.core.windows.net:/cinfsshare/onnxtestdata $(MODELS_DIR) -o vers=4,minorversion=1,sec=sys displayName: 'Make dirs' - checkout: self diff --git a/.ci/azure/linux_onnxruntime.yml b/.ci/azure/linux_onnxruntime.yml new file mode 100644 index 00000000000000..2fad953f50e578 --- /dev/null +++ b/.ci/azure/linux_onnxruntime.yml @@ -0,0 +1,155 @@ +jobs: +- job: onnxruntime + timeoutInMinutes: 90 + + pool: + name: LIN_VMSS_VENV_ONNX_WU2 + + variables: + system.debug: true + VSTS_HTTP_RETRY: 5 + VSTS_HTTP_TIMEOUT: 200 + WORKERS_NUMBER: 8 + BUILD_TYPE: Release + REPO_DIR: $(Build.Repository.LocalPath) + ONNXRUNTIME_REPO_DIR: $(REPO_DIR)/../onnxruntime + WORK_DIR: $(Pipeline.Workspace)/_w + MODELS_DIR: /mount/cinfsshare/onnxtestdata + TMP_DIR: /mnt/tmp + INSTALL_DIR: $(WORK_DIR)/install_pkg + BUILD_DIR: $(WORK_DIR)/build + ONNXRUNTIME_UTILS: $(REPO_DIR)/.ci/azure/ci_utils/onnxruntime + ONNXRUNTIME_BUILD_DIR: $(ONNXRUNTIME_REPO_DIR)/build + steps: + - script: | + curl -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2019-06-01" + whoami + uname -a + echo Python3 info ; which python3 ; python3 --version + echo Python info ; which python ; python --version + echo Java info ; which java ; java -version + echo gcc info ; which gcc ; gcc --version + lsb_release + env + cat /proc/cpuinfo + cat /proc/meminfo + cat /etc/fstab + vmstat -s + df + lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd" + free -h + displayName: 'System info' + + - script: | + rm -rf $(WORK_DIR) ; mkdir $(WORK_DIR) + sudo rm -rf $(TMP_DIR) ; sudo mkdir $(TMP_DIR) ; sudo chmod 777 -R $(TMP_DIR) + sudo mkdir -p $(MODELS_DIR) + sudo apt --assume-yes install nfs-common + sudo mount -vvv -t nfs cinfsshare.file.core.windows.net:/cinfsshare/onnxtestdata $(MODELS_DIR) -o vers=4,minorversion=1,sec=sys + displayName: 'Make dirs' + + - checkout: self + clean: true + lfs: false + submodules: recursive + path: openvino + + - script: | + branch=`tr -s '\n ' < $(ONNXRUNTIME_UTILS)/version` + git clone --branch $branch --single-branch --recursive https://github.com/microsoft/onnxruntime.git $(ONNXRUNTIME_REPO_DIR) + displayName: 'Clone onnxruntime' + + - script: | + sudo apt --assume-yes install libusb-1.0-0-dev + python3 -m pip install -r $(REPO_DIR)/inference-engine/ie_bridges/python/requirements.txt + # For running Python API tests + python3 -m pip install -r $(REPO_DIR)/inference-engine/ie_bridges/python/src/requirements-dev.txt + # Speed up build + wget https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-linux.zip + unzip ninja-linux.zip + sudo cp -v ninja /usr/local/bin/ + # Speed up tests + git clone https://github.com/google/gtest-parallel.git + workingDirectory: $(WORK_DIR) + displayName: 'Install dependencies' + + - task: CMake@1 + inputs: + # CMake must get Python 3.x version by default + cmakeArgs: > + -GNinja + -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) + -DENABLE_PYTHON=ON + -DPYTHON_EXECUTABLE=/usr/bin/python3.6 + -DENABLE_VPU=OFF + -DENABLE_GNA=OFF + -DENABLE_OPENCV=OFF + -DENABLE_CPPLINT=OFF + -DENABLE_TESTS=OFF + -DENABLE_MKL_DNN=ON + -DENABLE_CLDNN=OFF + -DENABLE_PROFILING_ITT=OFF + -DENABLE_SAMPLES=OFF + -DENABLE_SPEECH_DEMO=OFF + -DENABLE_PYTHON=ON + -DNGRAPH_ONNX_IMPORT_ENABLE=ON + -DNGRAPH_INTERPRETER_ENABLE=ON + -DNGRAPH_DEBUG_ENABLE=OFF + -DNGRAPH_DYNAMIC_COMPONENTS_ENABLE=ON + $(REPO_DIR) + workingDirectory: $(BUILD_DIR) + + - script: ninja + workingDirectory: $(BUILD_DIR) + displayName: 'Build Lin' + + - script: ls -alR $(REPO_DIR)/bin/ + displayName: 'List files' + + - script: cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -P cmake_install.cmake + workingDirectory: $(BUILD_DIR) + displayName: 'Install' + + - script: | + source $(INSTALL_DIR)/bin/setupvars.sh + echo "2021.2" > $(INSTALL_DIR)/deployment_tools/inference_engine/version.txt + ./build.sh --config RelWithDebInfo --use_openvino CPU_FP32 --build_shared_lib --parallel --skip_tests --build_dir $(ONNXRUNTIME_BUILD_DIR) + workingDirectory: $(ONNXRUNTIME_REPO_DIR) + displayName: 'Build ONNX Runtime' + + - script: | + source $(INSTALL_DIR)/bin/setupvars.sh + skip_tests=`tr -s '\n ' ':' < $(ONNXRUNTIME_UTILS)/skip_tests` + ./onnxruntime_test_all --gtest_filter=-$skip_tests + workingDirectory: $(ONNXRUNTIME_BUILD_DIR)/RelWithDebInfo + displayName: 'Run onnxruntime_test_all' + + - script: | + source $(INSTALL_DIR)/bin/setupvars.sh + ./onnxruntime_shared_lib_test + workingDirectory: $(ONNXRUNTIME_BUILD_DIR)/RelWithDebInfo + displayName: 'Run onnxruntime_shared_lib_test' + + - script: | + source $(INSTALL_DIR)/bin/setupvars.sh + ./onnxruntime_global_thread_pools_test + workingDirectory: $(ONNXRUNTIME_BUILD_DIR)/RelWithDebInfo + displayName: 'Run onnxruntime_global_thread_pools_test' + + - script: | + source $(INSTALL_DIR)/bin/setupvars.sh + ./onnxruntime_api_tests_without_env + workingDirectory: $(ONNXRUNTIME_BUILD_DIR)/RelWithDebInfo + displayName: 'Run onnxruntime_api_tests_without_env' + + - script: | + source $(INSTALL_DIR)/bin/setupvars.sh + ./onnx_test_runner "$(ONNXRUNTIME_REPO_DIR)/cmake/external/onnx/onnx/backend/test/data/pytorch-converted" + workingDirectory: $(ONNXRUNTIME_BUILD_DIR)/RelWithDebInfo + displayName: 'Run pytorch-converted tests' + + - script: | + source $(INSTALL_DIR)/bin/setupvars.sh + ./onnx_test_runner "$(ONNXRUNTIME_REPO_DIR)/cmake/external/onnx/onnx/backend/test/data/pytorch-operator" + workingDirectory: $(ONNXRUNTIME_BUILD_DIR)/RelWithDebInfo + displayName: 'Run pytorch-operator tests' diff --git a/.ci/azure/windows.yml b/.ci/azure/windows.yml index ecb5f96fc1697a..e344f1d8243032 100644 --- a/.ci/azure/windows.yml +++ b/.ci/azure/windows.yml @@ -32,9 +32,11 @@ jobs: BIN_DIR: $(REPO_DIR)\bin\intel64 MSVS_VARS_PATH: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat MSVC_COMPILER_PATH: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64\cl.exe - TEST_ENV_PATH: $(REPO_DIR)\inference-engine\temp\tbb\bin;$(REPO_DIR)\inference-engine\temp\opencv_4.5.1\opencv\bin;%PATH% INSTALL_DIR: $(WORK_DIR)\install_pkg SETUPVARS: $(INSTALL_DIR)\bin\setupvars.bat + IB_DIR: C:\Program Files (x86)\IncrediBuild + IB_TESTCONSOLE: $(IB_DIR)\IBTestConsole.exe + TEST_ENV_PATH: $(REPO_DIR)\inference-engine\temp\tbb\bin;$(REPO_DIR)\inference-engine\temp\opencv_4.5.1\opencv\bin;$(IB_DIR);%PATH% steps: - script: | @@ -56,6 +58,12 @@ jobs: rd /Q /S $(BUILD_DIR) & mkdir $(BUILD_DIR) displayName: 'Make dir' + - script: | + certutil -urlcache -split -f https://incredibuilddiag1wu2.blob.core.windows.net/incredibuild/install_ib_console.bat install_ib_console.bat + call install_ib_console.bat + workingDirectory: $(WORK_DIR) + displayName: 'Install IncrediBuild' + - checkout: self clean: true lfs: false @@ -80,12 +88,6 @@ jobs: workingDirectory: $(WORK_DIR) displayName: 'Install dependencies' - - script: | - certutil -urlcache -split -f https://incredibuilddiag1wu2.blob.core.windows.net/incredibuild/install_ib_console.bat install_ib_console.bat - call install_ib_console.bat - workingDirectory: $(WORK_DIR) - displayName: 'Install IncrediBuild' - - script: | set PATH=$(WORK_DIR)\ninja-win;%PATH% call "$(MSVS_VARS_PATH)" && cmake -GNinja -DENABLE_FASTER_BUILD=ON -DENABLE_TEMPLATE_PLUGIN=ON -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DENABLE_TESTS=ON -DIE_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)\modules -DCMAKE_C_COMPILER:PATH="$(MSVC_COMPILER_PATH)" -DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" $(REPO_DIR) @@ -94,7 +96,7 @@ jobs: - script: | set PATH=$(WORK_DIR)\ninja-win;%PATH% - call "$(MSVS_VARS_PATH)" && "C:\Program Files (x86)\IncrediBuild\BuildConsole.exe" /COMMAND="ninja" /MaxCPUS=40 + call "$(MSVS_VARS_PATH)" && "C:\Program Files (x86)\IncrediBuild\BuildConsole.exe" /COMMAND="ninja" workingDirectory: $(BUILD_DIR) displayName: 'Build Win' @@ -113,9 +115,8 @@ jobs: - script: | set PATH=$(TEST_ENV_PATH) - $(BIN_DIR)\InferenceEngineUnitTests --gtest_print_time=1 --gtest_output=xml:TEST-InferenceEngineUnitTests.xml - displayName: 'IE UT old' - continueOnError: false + "$(IB_TESTCONSOLE)" $(BIN_DIR)\InferenceEngineUnitTests.exe --gtest_output=xml:TEST-InferenceEngineUnitTests-IB.xml + displayName: 'IE UT old - IB' - script: | set PATH=$(TEST_ENV_PATH) @@ -161,8 +162,8 @@ jobs: - script: | set PATH=$(TEST_ENV_PATH) - $(BIN_DIR)\cpuFuncTests --gtest_filter=*smoke* --gtest_print_time=1 --gtest_output=xml:TEST-cpuFuncTests.xml - displayName: 'CPU FuncTests' + "$(IB_TESTCONSOLE)" $(BIN_DIR)\cpuFuncTests.exe --gtest_filter=*smoke*:-*CompareWithRefs/base_size=16_pre_nms_topn=100_post_nms_topn=100_nms_thresh=0.7_feat_stride=1_min_size=1_ratio* --gtest_output=xml:TEST-cpuFuncTests-IB.xml /testlevel=24 + displayName: 'CPU FuncTests - IB' continueOnError: false - script: | @@ -172,12 +173,13 @@ jobs: continueOnError: false # Add for gtest-parallel, it hangs now (CVS-33386) - #python $(BUILD_DIR)\gtest-parallel\gtest-parallel $(BIN_DIR)\MklDnnFunctionalTests --workers=$(WORKERS_NUMBER) --dump_json_test_results=MklDnnFunctionalTests.json --gtest_filter=*smoke* -- --gtest_print_time=1 + #python $(WORK_DIR)\gtest-parallel\gtest-parallel $(BIN_DIR)\MklDnnFunctionalTests --workers=$(WORKERS_NUMBER) --dump_json_test_results=MklDnnFunctionalTests.json --gtest_filter=*smoke* -- --gtest_print_time=1 - script: | set PATH=$(TEST_ENV_PATH) set DATA_PATH=$(MODELS_PATH) set MODELS_PATH=$(MODELS_PATH) - $(BIN_DIR)\MklDnnFunctionalTests --gtest_filter=*smoke* --gtest_print_time=1 --gtest_output=xml:TEST-MklDnnFunctionalTests.xml + rem "$(IB_TESTCONSOLE)" $(BIN_DIR)\MklDnnFunctionalTests.exe --gtest_filter=*smoke* --gtest_output=xml:TEST-MklDnnFunctionalTests-IB.xml + $(BIN_DIR)\MklDnnFunctionalTests.exe --gtest_filter=*smoke* --gtest_output=xml:TEST-MklDnnFunctionalTests.xml displayName: 'MklDnnFunctionalTests' continueOnError: false @@ -201,7 +203,7 @@ jobs: buildPlatform: 'x64' # Optional buildConfiguration: 'Windows' # Optional #publishRunAttachments: true # Optional - + - script: echo Stop IncrediBuild_Agent && net stop IncrediBuild_Agent displayName: Stop IncrediBuild continueOnError: true diff --git a/.ci/azure/windows_conditional_compilation.yml b/.ci/azure/windows_conditional_compilation.yml new file mode 100644 index 00000000000000..e627030a36223e --- /dev/null +++ b/.ci/azure/windows_conditional_compilation.yml @@ -0,0 +1,89 @@ +jobs: +- job: WinCC + # About 150% of total time + timeoutInMinutes: 120 + + pool: + name: WIN_VMSS_VENV_F8S_WU2 + + variables: + system.debug: true + VSTS_HTTP_RETRY: 5 + VSTS_HTTP_TIMEOUT: 200 + WORKERS_NUMBER: 8 + BUILD_TYPE: Release + REPO_DIR: $(Build.Repository.LocalPath) + OPENVINO_CONTRIB_REPO_DIR: $(REPO_DIR)\..\openvino_contrib + MODELS_PATH: $(REPO_DIR)\..\testdata + WORK_DIR: $(Pipeline.Workspace)\_w + BUILD_DIR: D:\build + BIN_DIR: $(REPO_DIR)\bin\intel64 + MSVS_VARS_PATH: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat + MSVC_COMPILER_PATH: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64\cl.exe + INSTALL_DIR: $(WORK_DIR)\install_pkg + SETUPVARS: $(INSTALL_DIR)\bin\setupvars.bat + IB_DIR: C:\Program Files (x86)\IncrediBuild + IB_TESTCONSOLE: $(IB_DIR)\IBTestConsole.exe + TEST_ENV_PATH: $(REPO_DIR)\inference-engine\temp\tbb\bin;$(REPO_DIR)\inference-engine\temp\opencv_4.5.1\opencv\bin;$(IB_DIR);%PATH% + + steps: + - script: | + powershell -command "Invoke-RestMethod -Headers @{\"Metadata\"=\"true\"} -Method GET -Uri http://169.254.169.254/metadata/instance/compute?api-version=2019-06-01 | format-custom" + where python3 + where python + python --version + where java + java -version + wmic computersystem get TotalPhysicalMemory + wmic cpu list + wmic logicaldisk get description,name + wmic VOLUME list + set + displayName: 'System info' + + - script: | + rd /Q /S $(WORK_DIR) & mkdir $(WORK_DIR) + rd /Q /S $(BUILD_DIR) & mkdir $(BUILD_DIR) + displayName: 'Make dir' + + - script: | + certutil -urlcache -split -f https://incredibuilddiag1wu2.blob.core.windows.net/incredibuild/install_ib_console.bat install_ib_console.bat + call install_ib_console.bat + workingDirectory: $(WORK_DIR) + displayName: 'Install IncrediBuild' + + - checkout: self + clean: true + lfs: false + submodules: recursive + path: openvino + + - script: | + certutil -urlcache -split -f https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip ninja-win.zip + powershell -command "Expand-Archive -Force ninja-win.zip" + workingDirectory: $(WORK_DIR) + displayName: 'Install dependencies' + + - script: | + set PATH=$(WORK_DIR)\ninja-win;%PATH% + call "$(MSVS_VARS_PATH)" && cmake -GNinja -DENABLE_FASTER_BUILD=ON -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DENABLE_PROFILING_ITT=ON -DSELECTIVE_BUILD=COLLECT -DCMAKE_C_COMPILER:PATH="$(MSVC_COMPILER_PATH)" -DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" $(REPO_DIR) + workingDirectory: $(BUILD_DIR) + displayName: 'CMake' + + - script: | + set PATH=$(WORK_DIR)\ninja-win;%PATH% + call "$(MSVS_VARS_PATH)" && "C:\Program Files (x86)\IncrediBuild\BuildConsole.exe" /COMMAND="ninja" + workingDirectory: $(BUILD_DIR) + displayName: 'Build Win' + + - script: dir $(REPO_DIR)\bin\ /s + displayName: 'List files' + + - script: cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -P cmake_install.cmake + workingDirectory: $(BUILD_DIR) + displayName: 'Install' + + - script: echo Stop IncrediBuild_Agent && net stop IncrediBuild_Agent + displayName: Stop IncrediBuild + continueOnError: true + enabled: false diff --git a/.ci/openvino-onnx/Dockerfile b/.ci/openvino-onnx/Dockerfile index 5fe36e46219061..6879c49182a8fb 100644 --- a/.ci/openvino-onnx/Dockerfile +++ b/.ci/openvino-onnx/Dockerfile @@ -10,6 +10,7 @@ ENV https_proxy ${https_proxy} ENV CI=true ENV DEBIAN_FRONTEND=noninteractive ENV PYTHONUNBUFFERED 1 +ARG PROTOBUF_LITE=OFF # Install base dependencies RUN apt-get update && apt-get install -y locales && apt-get clean autoclean && apt-get autoremove -y @@ -68,14 +69,13 @@ RUN cmake .. \ -DNGRAPH_INTERPRETER_ENABLE=ON \ -DNGRAPH_DEBUG_ENABLE=OFF \ -DNGRAPH_DYNAMIC_COMPONENTS_ENABLE=ON \ - -DCMAKE_INSTALL_PREFIX=/openvino/dist + -DCMAKE_INSTALL_PREFIX=/openvino/dist \ + -DNGRAPH_USE_PROTOBUF_LITE=${PROTOBUF_LITE} RUN make -j $(nproc) install # Run tests via tox WORKDIR /openvino/ngraph/python ENV NGRAPH_CPP_BUILD_PATH=/openvino/dist/deployment_tools/ngraph ENV LD_LIBRARY_PATH=/openvino/dist/deployment_tools/ngraph/lib -ENV NGRAPH_ONNX_IMPORT_ENABLE=TRUE ENV PYTHONPATH=/openvino/bin/intel64/Release/lib/python_api/python3.8:${PYTHONPATH} -RUN git clone --recursive https://github.com/pybind/pybind11.git -b v2.5.0 --depth 1 CMD tox diff --git a/.ci/openvino-onnx/Jenkinsfile b/.ci/openvino-onnx/Jenkinsfile index b16a134553a35d..de359f0b21d026 100644 --- a/.ci/openvino-onnx/Jenkinsfile +++ b/.ci/openvino-onnx/Jenkinsfile @@ -4,11 +4,16 @@ DOCKER_CONTAINER_NAME= "openvino-onnx-ci-container" DOCKER_IMAGE_TAG = "openvino-onnx-ci-image" +BACKEND_CONFIGURATIONS = [ + [ protobuf_lite : "ON" ], + [ protobuf_lite : "OFF" ] +] + // workaround for aborting previous builds on PR update @NonCPS def stopPreviousRunningBuilds() { def jobname = env.JOB_NAME - if (jobname.startsWith("onnx/openvino_ci/PR")){ + if (jobname.startsWith("onnx-ci/openvino onnx ci/openvino/PR")){ def buildnum = env.BUILD_NUMBER.toInteger() def job = Jenkins.instance.getItemByFullName(jobname) def job_newest = job.builds.first() @@ -77,16 +82,24 @@ def gitSubmoduleUpdate(String repository_name) { } } +def prepare_repository() { + dir("${WORKDIR}") { + checkout scm + gitSubmoduleUpdate(PROJECT_NAME) + } +} + def updateModels() { sh """ ./ngraph/python/tests/test_onnx/model_zoo_preprocess.sh -d ${HOME}/ONNX_CI/data -o """ } -def buildDockerImage() { +def buildDockerImage(String protobuf_lite="OFF") { updateModels() sh """ - docker build --tag=${DOCKER_IMAGE_TAG} --file=.ci/openvino-onnx/Dockerfile \ + docker build --tag=${DOCKER_IMAGE_TAG} --build-arg PROTOBUF_LITE=${protobuf_lite} \ + --file=.ci/openvino-onnx/Dockerfile \ --build-arg http_proxy=http://proxy-chain.intel.com:911/ \ --build-arg https_proxy=http://proxy-chain.intel.com:912/ . """ @@ -100,54 +113,57 @@ def runTests() { """ } - -pipeline { - agent { - label "OpenVino" - } - environment { - PROJECT_NAME = "openvino" - WORKDIR = "${WORKSPACE}/${BUILD_NUMBER}" - } - options { - skipDefaultCheckout true - timeout(activity: true, time: 60, unit: 'MINUTES') +def getConfigurationsMap() { + def configurationsMap = [:] + for (backend in BACKEND_CONFIGURATIONS) { + def configuration = backend.clone() + configuration.name = "protobuf-lite ${configuration.protobuf_lite}" + configurationsMap[configuration.name] = { + stage(configuration.name) { CONFIGURATION_WORKFLOW(configuration) } + } } - stages { - stage("Clone repository") { - steps{ + return configurationsMap +} + +CONFIGURATION_WORKFLOW = { configuration -> + node("OpenVino") { + try { + PROJECT_NAME = "openvino" + WORKDIR = "${HOME}/workspace/${BUILD_NUMBER}" + + stage("Clone repository") { stopPreviousRunningBuilds() - dir("${WORKDIR}") { - checkout scm + try { + prepare_repository() + } + catch(e){ + sleep(time: 30, unit: "SECONDS") + prepare_repository() } - gitSubmoduleUpdate(PROJECT_NAME) } - } - stage("Prepare Docker environment") { - steps{ + stage("Prepare Docker environment") { dir("${WORKDIR}") { - buildDockerImage() + buildDockerImage(configuration.protobuf_lite) } } - } - stage("Run tests") { - options { - timeout(time: 60, unit: 'MINUTES') - } - steps{ - runTests() + stage("Run tests") { + timeout(time: 20, unit: 'MINUTES') { + runTests() + } } } - } - post { - failure { - script { + catch(e) { + // Set result to ABORTED if exception contains exit code of a process interrupted by SIGTERM + if ("$e".contains("143")) { + currentBuild.result = "ABORTED" + } else { + currentBuild.result = "FAILURE" + } gitPrInfo = getGitPrInfo(PROJECT_NAME) notifyByEmail(gitPrInfo) - } } - cleanup { - dir("${WORKDIR}") { + finally { + stage("Cleanup") { deleteDir() sh """ docker image prune -f @@ -157,3 +173,22 @@ pipeline { } } } + +pipeline { + agent none + options { + skipDefaultCheckout true + timeout(activity: true, time: 60, unit: 'MINUTES') + } + stages { + stage('Parallel CI') { + steps { + script { + parallelStagesMap = getConfigurationsMap() + parallel parallelStagesMap + } + } + + } + } +} diff --git a/.ci/openvino-onnx/watchdog/src/git_wrapper.py b/.ci/openvino-onnx/watchdog/src/git_wrapper.py index b432c60b5dca0a..4b42ab7c8bb514 100644 --- a/.ci/openvino-onnx/watchdog/src/git_wrapper.py +++ b/.ci/openvino-onnx/watchdog/src/git_wrapper.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 import logging diff --git a/.ci/openvino-onnx/watchdog/src/jenkins_wrapper.py b/.ci/openvino-onnx/watchdog/src/jenkins_wrapper.py index 5dd76177f7ad48..4abc345a08ff4b 100644 --- a/.ci/openvino-onnx/watchdog/src/jenkins_wrapper.py +++ b/.ci/openvino-onnx/watchdog/src/jenkins_wrapper.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 import requests diff --git a/.ci/openvino-onnx/watchdog/src/main.py b/.ci/openvino-onnx/watchdog/src/main.py index 7628d5bafe3011..a0b7ae23bdf270 100644 --- a/.ci/openvino-onnx/watchdog/src/main.py +++ b/.ci/openvino-onnx/watchdog/src/main.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 import argparse diff --git a/.ci/openvino-onnx/watchdog/src/ms_teams_communicator.py b/.ci/openvino-onnx/watchdog/src/ms_teams_communicator.py index 18cb0c55ac2a54..47765f35664486 100644 --- a/.ci/openvino-onnx/watchdog/src/ms_teams_communicator.py +++ b/.ci/openvino-onnx/watchdog/src/ms_teams_communicator.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 import requests diff --git a/.ci/openvino-onnx/watchdog/src/watchdog.py b/.ci/openvino-onnx/watchdog/src/watchdog.py index c95050c5a10549..9c695ef22be18a 100644 --- a/.ci/openvino-onnx/watchdog/src/watchdog.py +++ b/.ci/openvino-onnx/watchdog/src/watchdog.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 import datetime diff --git a/.github/org_control/__init__.py b/.github/org_control/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/.github/org_control/__init__.py +++ b/.github/org_control/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/.github/org_control/check_org.py b/.github/org_control/check_org.py index a67aba2cc115f4..f6858586f47ec2 100644 --- a/.github/org_control/check_org.py +++ b/.github/org_control/check_org.py @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ diff --git a/.github/org_control/check_pr.py b/.github/org_control/check_pr.py index e796eed6cb3afc..46107ae101b472 100644 --- a/.github/org_control/check_pr.py +++ b/.github/org_control/check_pr.py @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ diff --git a/.github/org_control/configs.py b/.github/org_control/configs.py index 9dd3b5fbf30cee..e0daa1a4389afb 100644 --- a/.github/org_control/configs.py +++ b/.github/org_control/configs.py @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ diff --git a/.github/org_control/github_api.py b/.github/org_control/github_api.py index 3dae60fa75b9a0..ddb0595104a840 100644 --- a/.github/org_control/github_api.py +++ b/.github/org_control/github_api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ diff --git a/.github/workflows/code_style.yml b/.github/workflows/code_style.yml index 650327a6d59abc..b538a1793397ef 100644 --- a/.github/workflows/code_style.yml +++ b/.github/workflows/code_style.yml @@ -2,42 +2,42 @@ name: Code Style on: [push, pull_request] jobs: - nGraph: - runs-on: ubuntu-18.04 + clang-format: + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: submodules: recursive - - name: Install clang-format-3.9 - run: sudo apt --assume-yes install clang-format-3.9 + - name: Install clang-format-9 + run: sudo apt --assume-yes install clang-format-9 - name: Install dependencies run: | sudo apt --assume-yes install libusb-1.0-0-dev python3 -m pip install -r ./inference-engine/ie_bridges/python/requirements.txt + # Run cmake with -DENABLE_PROFILING_ITT=ON -DSELECTIVE_BUILD=COLLECT in order to enable codestyle check for ITT collector - name: CMake run: | mkdir build cd build - cmake .. + cmake -DENABLE_PROFILING_ITT=ON -DSELECTIVE_BUILD=COLLECT .. - name: Check code style - run: make style-check - working-directory: build + run: cmake --build build --target clang_format_check_all - name: Create code style diff if: failure() run: | - ngraph/maint/apply-code-format.sh - git diff >ngraph_code_style_diff.patch + cmake --build build --target clang_format_fix_all + git diff > code_style_diff.diff - uses: actions/upload-artifact@v2 if: failure() with: - name: ngraph_code_style_diff - path: ngraph_code_style_diff.patch + name: code_style_diff + path: code_style_diff.diff ShellCheck: runs-on: ubuntu-18.04 diff --git a/.github/workflows/mo.yml b/.github/workflows/mo.yml index 7dcb851466aae3..15d9ad146e8085 100644 --- a/.github/workflows/mo.yml +++ b/.github/workflows/mo.yml @@ -85,7 +85,7 @@ jobs: wget -q http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz tar -xf mobilenet_v1_1.0_224.tgz python3 -m pip install model-optimizer/dist/*.whl - python3 -c "import sys, subprocess, mo_tf; subprocess.run([sys.executable, mo_tf.__file__, '--input_model', 'mobilenet_v1_1.0_224_frozen.pb', '--input_shape', '[1,224,224,3]'], check=True)" + python3 -m mo --input_model mobilenet_v1_1.0_224_frozen.pb --input_shape "[1,224,224,3]" - uses: actions/upload-artifact@v2 with: diff --git a/CMakeLists.txt b/CMakeLists.txt index e72f2b61f1898a..a37eaf10782469 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,12 +102,12 @@ function(build_ngraph) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) endif() - ie_cpack_add_component(ngraph) + ie_cpack_add_component(ngraph REQUIRED) set(SDL_cmake_included ON) - set(NGRAPH_COMPONENT_PREFIX "deployment_tools/ngraph/") add_subdirectory(ngraph) set(NGRAPH_LIBRARIES ngraph PARENT_SCOPE) + set(FRONTEND_LIBRARIES frontend_manager PARENT_SCOPE) set(NGRAPH_REF_LIBRARIES ngraph_reference PARENT_SCOPE) endfunction() @@ -197,7 +197,7 @@ endif() # install files for demo -ie_cpack_add_component(demo_scripts REQUIRED DEPENDS core) +ie_cpack_add_component(demo_scripts DEPENDS core) if(UNIX) install(DIRECTORY scripts/demo/ diff --git a/README.md b/README.md index d8346171b7de3f..7d54e9e8f9cd33 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ -# [OpenVINO™ Toolkit](https://01.org/openvinotoolkit) - Deep Learning Deployment Toolkit repository -[![Stable release](https://img.shields.io/badge/version-2021.2-green.svg)](https://github.com/openvinotoolkit/openvino/releases/tag/2021.2) +# OpenVINO™ Toolkit +[![Stable release](https://img.shields.io/badge/version-2021.3-green.svg)](https://github.com/openvinotoolkit/openvino/releases/tag/2021.3) [![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE) -![Azure DevOps builds (branch)](https://img.shields.io/azure-devops/build/openvinoci/b2bab62f-ab2f-4871-a538-86ea1be7d20f/9/master?label=Public%20CI) +![GitHub branch checks state](https://img.shields.io/github/checks-status/openvinotoolkit/openvino/master?label=GitHub%20checks) +![Azure DevOps builds (branch)](https://img.shields.io/azure-devops/build/openvinoci/b2bab62f-ab2f-4871-a538-86ea1be7d20f/13?label=Public%20CI) This toolkit allows developers to deploy pre-trained deep learning models through a high-level C++ Inference Engine API integrated with application logic. -This open source version includes several components: namely [Model Optimizer], [ngraph] and +This open source version includes several components: namely [Model Optimizer], [nGraph] and [Inference Engine], as well as CPU, GPU, MYRIAD, multi device and heterogeneous plugins to accelerate deep learning inferencing on Intel® CPUs and Intel® Processor Graphics. It supports pre-trained models from the [Open Model Zoo], along with 100+ open source and public models in popular formats such as Caffe\*, TensorFlow\*, @@ -14,7 +15,7 @@ MXNet\* and ONNX\*. ## Repository components: * [Inference Engine] -* [ngraph] +* [nGraph] * [Model Optimizer] ## License @@ -26,9 +27,10 @@ and release your contribution under these terms. * Docs: https://docs.openvinotoolkit.org/ * Wiki: https://github.com/openvinotoolkit/openvino/wiki * Issue tracking: https://github.com/openvinotoolkit/openvino/issues -* Additional OpenVINO modules: https://github.com/openvinotoolkit/openvino_contrib -* [HomePage](https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit.html) -* [OpenVINO™ Release Notes](https://software.intel.com/en-us/articles/OpenVINO-RelNotes) +* Storage: https://storage.openvinotoolkit.org/ +* Additional OpenVINO™ modules: https://github.com/openvinotoolkit/openvino_contrib +* [Intel® Distribution of OpenVINO™ toolkit Product Page](https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit.html) +* [Intel® Distribution of OpenVINO™ toolkit Release Notes](https://software.intel.com/en-us/articles/OpenVINO-RelNotes) ## Support Please report questions, issues and suggestions using: @@ -43,5 +45,4 @@ Please report questions, issues and suggestions using: [Open Model Zoo]:https://github.com/opencv/open_model_zoo [Inference Engine]:https://software.intel.com/en-us/articles/OpenVINO-InferEngine [Model Optimizer]:https://software.intel.com/en-us/articles/OpenVINO-ModelOptimizer -[tag on StackOverflow]:https://stackoverflow.com/search?q=%23openvino -[ngraph]:https://docs.openvinotoolkit.org/latest/openvino_docs_nGraph_DG_DevGuide.html \ No newline at end of file +[nGraph]:https://docs.openvinotoolkit.org/latest/openvino_docs_nGraph_DG_DevGuide.html diff --git a/cmake/arm.toolchain.cmake b/cmake/arm.toolchain.cmake index fc3c0e6e0551f2..95d132c86c7792 100644 --- a/cmake/arm.toolchain.cmake +++ b/cmake/arm.toolchain.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/arm64.toolchain.cmake b/cmake/arm64.toolchain.cmake index e24089ba560b9e..2e5b8ee1ab57d0 100644 --- a/cmake/arm64.toolchain.cmake +++ b/cmake/arm64.toolchain.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index aed76147342d02..6cb15a077e9ba4 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/FindTBB.cmake b/cmake/developer_package/FindTBB.cmake index 765b12e69eb3bb..efdeb9b3400a64 100644 --- a/cmake/developer_package/FindTBB.cmake +++ b/cmake/developer_package/FindTBB.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/IEDevScriptsConfig.cmake b/cmake/developer_package/IEDevScriptsConfig.cmake index 76324e9aa6fbb1..58dfb519e50c70 100644 --- a/cmake/developer_package/IEDevScriptsConfig.cmake +++ b/cmake/developer_package/IEDevScriptsConfig.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -202,6 +202,9 @@ endif() # General flags +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) + include(compile_flags/sdl) include(compile_flags/os_flags) include(compile_flags/sanitizer) @@ -222,6 +225,23 @@ if(ENABLE_FUZZING) enable_fuzzing() endif() +# macro to mark target as conditionally compiled + +function(ie_mark_target_as_cc TARGET_NAME) + target_link_libraries(${TARGET_NAME} PRIVATE openvino::conditional_compilation) + + if(NOT (SELECTIVE_BUILD STREQUAL "ON")) + return() + endif() + + if(NOT TARGET ${TARGET_NAME}) + message(FATAL_ERROR "${TARGET_NAME} does not represent target") + endif() + + get_target_property(sources ${TARGET_NAME} SOURCES) + set_source_files_properties(${sources} PROPERTIES OBJECT_DEPENDS ${GENERATED_HEADER}) +endfunction() + # Code style utils include(cpplint/cpplint) diff --git a/cmake/developer_package/add_ie_target.cmake b/cmake/developer_package/add_ie_target.cmake index b081a69459da1d..d44149383c7609 100644 --- a/cmake/developer_package/add_ie_target.cmake +++ b/cmake/developer_package/add_ie_target.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/api_validator/api_validator.cmake b/cmake/developer_package/api_validator/api_validator.cmake index 6b0222a03d1f0d..c12b4108f4be38 100644 --- a/cmake/developer_package/api_validator/api_validator.cmake +++ b/cmake/developer_package/api_validator/api_validator.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/api_validator/api_validator_run.cmake b/cmake/developer_package/api_validator/api_validator_run.cmake index 759feac6b2a310..ac22f420ef726b 100644 --- a/cmake/developer_package/api_validator/api_validator_run.cmake +++ b/cmake/developer_package/api_validator/api_validator_run.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/clang_format/clang_format.cmake b/cmake/developer_package/clang_format/clang_format.cmake index 6e35f387c72c10..1484e7038d789a 100644 --- a/cmake/developer_package/clang_format/clang_format.cmake +++ b/cmake/developer_package/clang_format/clang_format.cmake @@ -1,6 +1,7 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # + if (ENABLE_CLANG_FORMAT) set(CLANG_FORMAT_FILENAME clang-format-9 clang-format) find_program(CLANG_FORMAT NAMES ${CLANG_FORMAT_FILENAME} PATHS ENV PATH) diff --git a/cmake/developer_package/clang_format/clang_format_check.cmake b/cmake/developer_package/clang_format/clang_format_check.cmake index ebb02ec033d013..63707ce765cfc8 100644 --- a/cmake/developer_package/clang_format/clang_format_check.cmake +++ b/cmake/developer_package/clang_format/clang_format_check.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/clang_format/clang_format_fix.cmake b/cmake/developer_package/clang_format/clang_format_fix.cmake index 155a04eaac4d49..907a9515e3532e 100644 --- a/cmake/developer_package/clang_format/clang_format_fix.cmake +++ b/cmake/developer_package/clang_format/clang_format_fix.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/compile_flags/fuzzing.cmake b/cmake/developer_package/compile_flags/fuzzing.cmake index cb60203fb462f1..0f2a7e604f6d8c 100644 --- a/cmake/developer_package/compile_flags/fuzzing.cmake +++ b/cmake/developer_package/compile_flags/fuzzing.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/compile_flags/os_flags.cmake b/cmake/developer_package/compile_flags/os_flags.cmake index 87359245b541e9..bf2d4c1875ee25 100644 --- a/cmake/developer_package/compile_flags/os_flags.cmake +++ b/cmake/developer_package/compile_flags/os_flags.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -38,9 +38,10 @@ endmacro() macro(ie_deprecated_no_errors) if(WIN32) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - set(ie_c_cxx_deprecated "/Qdiag-warning:1478,1786") + set(ie_c_cxx_deprecated_no_errors "/Qdiag-warning:1478,1786") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - set(ie_c_cxx_deprecated "/wd4996") + # show 4996 only for /w4 + set(ie_c_cxx_deprecated_no_errors "/w44996") endif() else() if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") @@ -183,7 +184,6 @@ endfunction() # set(CMAKE_POSITION_INDEPENDENT_CODE ON) -set(THREADS_PREFER_PTHREAD_FLAG ON) # to allows to override CMAKE_CXX_STANDARD from command line if(NOT DEFINED CMAKE_CXX_STANDARD) @@ -260,6 +260,8 @@ if(WIN32) # and observing warning D9025 about flag override string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") + string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") else() # TODO: enable for C sources as well # ie_add_compiler_flags(-Werror) diff --git a/cmake/developer_package/compile_flags/sanitizer.cmake b/cmake/developer_package/compile_flags/sanitizer.cmake index a9b8a47c72a171..3e73ef280767d1 100644 --- a/cmake/developer_package/compile_flags/sanitizer.cmake +++ b/cmake/developer_package/compile_flags/sanitizer.cmake @@ -1,17 +1,9 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # include(CheckCXXCompilerFlag) -if (ENABLE_SANITIZER OR ENABLE_THREAD_SANITIZER) - # This is workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/16609. - # It ensures pthread is searched without ASAN linking. - # Line bellow must be before adding -fsanitize=address or -fsanitize=thread to - # build options for the trick to work. - find_package(Threads REQUIRED) -endif() - if (ENABLE_SANITIZER) set(SANITIZER_COMPILER_FLAGS "-g -fsanitize=address -fno-omit-frame-pointer") CHECK_CXX_COMPILER_FLAG("-fsanitize-recover=address" SANITIZE_RECOVER_SUPPORTED) @@ -20,6 +12,9 @@ if (ENABLE_SANITIZER) endif() set(SANITIZER_LINKER_FLAGS "-fsanitize=address") + # prevent unloading libraries at runtime, so sanitizer can resolve their symbols + set(SANITIZER_LINKER_FLAGS "${SANITIZER_LINKER_FLAGS} -Wl,-z,nodelete") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(SANITIZER_LINKER_FLAGS "${SANITIZER_LINKER_FLAGS} -fuse-ld=gold") elseif(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$" AND NOT WIN32) @@ -38,6 +33,8 @@ endif() if (ENABLE_THREAD_SANITIZER) set(SANITIZER_COMPILER_FLAGS "-g -fsanitize=thread -fno-omit-frame-pointer") set(SANITIZER_LINKER_FLAGS "-fsanitize=thread") + set(SANITIZER_LINKER_FLAGS "${SANITIZER_LINKER_FLAGS} -Wl,-z,nodelete") + if(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$" AND NOT WIN32) if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0) set(SANITIZER_LINKER_FLAGS "${SANITIZER_LINKER_FLAGS} -fuse-ld=lld") diff --git a/cmake/developer_package/compile_flags/sdl.cmake b/cmake/developer_package/compile_flags/sdl.cmake index 7027a697119b21..10a1e86ad6d48f 100644 --- a/cmake/developer_package/compile_flags/sdl.cmake +++ b/cmake/developer_package/compile_flags/sdl.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/coverage/coverage.cmake b/cmake/developer_package/coverage/coverage.cmake index 71c24fcd9ddab3..a64ccf51889156 100644 --- a/cmake/developer_package/coverage/coverage.cmake +++ b/cmake/developer_package/coverage/coverage.cmake @@ -1,6 +1,7 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # +set(OV_COVERAGE_GCDA_DATA_DIRECTORY "${CMAKE_BINARY_DIR}") if(NOT TARGET ie_coverage_clean) add_custom_target(ie_coverage_clean) diff --git a/cmake/developer_package/coverage/coverage_clean.cmake b/cmake/developer_package/coverage/coverage_clean.cmake index 94c17277ef89c1..b9972856bd0634 100644 --- a/cmake/developer_package/coverage/coverage_clean.cmake +++ b/cmake/developer_package/coverage/coverage_clean.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/coverage/coverage_merge.cmake b/cmake/developer_package/coverage/coverage_merge.cmake index 3fc120b47baba1..b6f7096b603bec 100644 --- a/cmake/developer_package/coverage/coverage_merge.cmake +++ b/cmake/developer_package/coverage/coverage_merge.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/cpplint/cpplint.cmake b/cmake/developer_package/cpplint/cpplint.cmake index ccd97f8df8c8bd..32fa8542940387 100644 --- a/cmake/developer_package/cpplint/cpplint.cmake +++ b/cmake/developer_package/cpplint/cpplint.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/cpplint/cpplint_html.cmake b/cmake/developer_package/cpplint/cpplint_html.cmake index bd5977d24a083c..de502267cadb61 100644 --- a/cmake/developer_package/cpplint/cpplint_html.cmake +++ b/cmake/developer_package/cpplint/cpplint_html.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/cpplint/cpplint_merge.cmake b/cmake/developer_package/cpplint/cpplint_merge.cmake index 5e8490bbd6cb23..b703a81250fe2b 100644 --- a/cmake/developer_package/cpplint/cpplint_merge.cmake +++ b/cmake/developer_package/cpplint/cpplint_merge.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/cpplint/cpplint_run.cmake b/cmake/developer_package/cpplint/cpplint_run.cmake index 05c1d5d83db60e..e0d82873038ab6 100644 --- a/cmake/developer_package/cpplint/cpplint_run.cmake +++ b/cmake/developer_package/cpplint/cpplint_run.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/cpplint/cpplint_to_cppcheck_xml.cmake b/cmake/developer_package/cpplint/cpplint_to_cppcheck_xml.cmake index 19567656db37aa..9546b9150e4ce7 100644 --- a/cmake/developer_package/cpplint/cpplint_to_cppcheck_xml.cmake +++ b/cmake/developer_package/cpplint/cpplint_to_cppcheck_xml.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/cross_compile/cross_compiled_disp_gen.cmake b/cmake/developer_package/cross_compile/cross_compiled_disp_gen.cmake index a0ed53cf60d9c1..f7fe488366bc6a 100644 --- a/cmake/developer_package/cross_compile/cross_compiled_disp_gen.cmake +++ b/cmake/developer_package/cross_compile/cross_compiled_disp_gen.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/cross_compile/cross_compiled_func.cmake b/cmake/developer_package/cross_compile/cross_compiled_func.cmake index 9939eee440ccd9..ed969a3869f29c 100644 --- a/cmake/developer_package/cross_compile/cross_compiled_func.cmake +++ b/cmake/developer_package/cross_compile/cross_compiled_func.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/debug.cmake b/cmake/developer_package/debug.cmake index 169c93fab65561..bb4538dfe02584 100644 --- a/cmake/developer_package/debug.cmake +++ b/cmake/developer_package/debug.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/download/dependency_solver.cmake b/cmake/developer_package/download/dependency_solver.cmake index 3d181a45b21a29..7a5fc13ca900a6 100644 --- a/cmake/developer_package/download/dependency_solver.cmake +++ b/cmake/developer_package/download/dependency_solver.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/download/download.cmake b/cmake/developer_package/download/download.cmake index 566109cb6fa93e..f9c341be6e7104 100644 --- a/cmake/developer_package/download/download.cmake +++ b/cmake/developer_package/download/download.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/download/download_and_apply.cmake b/cmake/developer_package/download/download_and_apply.cmake index 3e2e954b29918d..a4575f07d5e674 100644 --- a/cmake/developer_package/download/download_and_apply.cmake +++ b/cmake/developer_package/download/download_and_apply.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/download/download_and_check.cmake b/cmake/developer_package/download/download_and_check.cmake index 9395814ef9e724..ede3f15bc41009 100644 --- a/cmake/developer_package/download/download_and_check.cmake +++ b/cmake/developer_package/download/download_and_check.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/download/download_and_extract.cmake b/cmake/developer_package/download/download_and_extract.cmake index cf4da01b743fa2..20f7e8cacdc654 100644 --- a/cmake/developer_package/download/download_and_extract.cmake +++ b/cmake/developer_package/download/download_and_extract.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/download/extract.cmake b/cmake/developer_package/download/extract.cmake index 7b342d8187af51..26fc5f7209afc5 100644 --- a/cmake/developer_package/download/extract.cmake +++ b/cmake/developer_package/download/extract.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/faster_build.cmake b/cmake/developer_package/faster_build.cmake index 429a6eda9b3e51..b9832f70a950cf 100644 --- a/cmake/developer_package/faster_build.cmake +++ b/cmake/developer_package/faster_build.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/features.cmake b/cmake/developer_package/features.cmake index 441d8fad826650..5d41fd8d97f4ff 100644 --- a/cmake/developer_package/features.cmake +++ b/cmake/developer_package/features.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -42,11 +42,15 @@ ie_option (BUILD_SHARED_LIBS "Build as a shared library" ON) ie_dependent_option (ENABLE_FASTER_BUILD "Enable build features (PCH, UNITY) to speed up build time" OFF "CMAKE_VERSION VERSION_GREATER_EQUAL 3.16" OFF) -ie_dependent_option (ENABLE_CPPLINT "Enable cpplint checks during the build" ON "UNIX;NOT ANDROID" OFF) +if(NOT DEFINED ENABLE_CPPLINT) + ie_dependent_option (ENABLE_CPPLINT "Enable cpplint checks during the build" ON "UNIX;NOT ANDROID" OFF) +endif() -ie_dependent_option (ENABLE_CPPLINT_REPORT "Build cpplint report instead of failing the build" OFF "ENABLE_CPPLINT" OFF) +if(NOT DEFINED ENABLE_CPPLINT_REPORT) + ie_dependent_option (ENABLE_CPPLINT_REPORT "Build cpplint report instead of failing the build" OFF "ENABLE_CPPLINT" OFF) +endif() -ie_option (ENABLE_CLANG_FORMAT "Enable clang-format checks during the build" ON) +ie_dependent_option (ENABLE_CLANG_FORMAT "Enable clang-format checks during the build" ON "UNIX;NOT ANDROID" OFF) ie_option (VERBOSE_BUILD "shows extra information about build" OFF) diff --git a/cmake/developer_package/linux_name.cmake b/cmake/developer_package/linux_name.cmake index 28afd53746a454..645c71da35686e 100644 --- a/cmake/developer_package/linux_name.cmake +++ b/cmake/developer_package/linux_name.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/message.cmake b/cmake/developer_package/message.cmake index 26912b05566599..36dd8a499e04a5 100644 --- a/cmake/developer_package/message.cmake +++ b/cmake/developer_package/message.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/models.cmake b/cmake/developer_package/models.cmake index 031112044b36f0..1446f6a0829b31 100644 --- a/cmake/developer_package/models.cmake +++ b/cmake/developer_package/models.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/options.cmake b/cmake/developer_package/options.cmake index cedbd099962029..54c657ab5c0c50 100644 --- a/cmake/developer_package/options.cmake +++ b/cmake/developer_package/options.cmake @@ -1,6 +1,7 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # + # Usage: ie_option( "description" [IF ]) include (CMakeDependentOption) @@ -28,6 +29,7 @@ macro (ie_option_enum variable description value) list(APPEND IE_OPTIONS ${variable}) set(${variable} ${value} CACHE STRING "${description}") + set_property(CACHE ${variable} PROPERTY STRINGS ${IE_OPTION_ENUM_ALLOWED_VALUES}) endmacro() function (print_enabled_features) diff --git a/cmake/developer_package/packaging.cmake b/cmake/developer_package/packaging.cmake index b846bf732dcb1a..2b5e945b17af54 100644 --- a/cmake/developer_package/packaging.cmake +++ b/cmake/developer_package/packaging.cmake @@ -1,5 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# include(CPackComponent) unset(IE_CPACK_COMPONENTS_ALL CACHE) diff --git a/cmake/developer_package/plugins/create_plugin_file.cmake b/cmake/developer_package/plugins/create_plugin_file.cmake index fee03ac7b291a9..88f33904bee30a 100644 --- a/cmake/developer_package/plugins/create_plugin_file.cmake +++ b/cmake/developer_package/plugins/create_plugin_file.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/plugins/plugins.cmake b/cmake/developer_package/plugins/plugins.cmake index a66d2568d98cc1..faafb8e99167eb 100644 --- a/cmake/developer_package/plugins/plugins.cmake +++ b/cmake/developer_package/plugins/plugins.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -55,7 +55,7 @@ function(ie_add_plugin) add_library(${IE_PLUGIN_NAME} MODULE ${input_files}) target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN) - ie_add_vs_version_file(NAME ${TARGET_NAME} + ie_add_vs_version_file(NAME ${IE_PLUGIN_NAME} FILEDESCRIPTION "Inference Engine ${IE_PLUGIN_DEVICE_NAME} device plugin library") if(TARGET IE::inference_engine_plugin_api) @@ -65,7 +65,7 @@ function(ie_add_plugin) endif() if(WIN32) - set_target_properties(${IE_PLUGIN_NAME} PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}) + set_target_properties(${IE_PLUGIN_NAME} PROPERTIES COMPILE_PDB_NAME ${IE_PLUGIN_NAME}) endif() set(custom_filter "") @@ -75,10 +75,21 @@ function(ie_add_plugin) add_cpplint_target(${IE_PLUGIN_NAME}_cpplint FOR_TARGETS ${IE_PLUGIN_NAME} CUSTOM_FILTERS ${custom_filter}) + # check that plugin with such name is not registered + + foreach(plugin_entry IN LISTS PLUGIN_FILES) + string(REPLACE ":" ";" plugin_entry "${plugin_entry}") + list(GET plugin_entry -1 library_name) + list(GET plugin_entry 0 plugin_name) + if(plugin_name STREQUAL "${IE_PLUGIN_DEVICE_NAME}" AND + NOT library_name STREQUAL ${IE_PLUGIN_NAME}) + message(FATAL_ERROR "${IE_PLUGIN_NAME} and ${library_name} are both registered as ${plugin_name}") + endif() + endforeach() + # append plugin to the list to register list(APPEND PLUGIN_FILES "${IE_PLUGIN_DEVICE_NAME}:${IE_PLUGIN_NAME}") - list(REMOVE_DUPLICATES PLUGIN_FILES) set(PLUGIN_FILES "${PLUGIN_FILES}" CACHE INTERNAL "" FORCE) add_dependencies(ie_plugins ${IE_PLUGIN_NAME}) diff --git a/cmake/developer_package/plugins/register_plugin_cmake.cmake b/cmake/developer_package/plugins/register_plugin_cmake.cmake index 39a9657944756b..20fa14db994e2b 100644 --- a/cmake/developer_package/plugins/register_plugin_cmake.cmake +++ b/cmake/developer_package/plugins/register_plugin_cmake.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/plugins/unregister_plugin_cmake.cmake b/cmake/developer_package/plugins/unregister_plugin_cmake.cmake index c28aeed12b700b..d966930c361e9f 100644 --- a/cmake/developer_package/plugins/unregister_plugin_cmake.cmake +++ b/cmake/developer_package/plugins/unregister_plugin_cmake.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/shellcheck/shellcheck.cmake b/cmake/developer_package/shellcheck/shellcheck.cmake index df7a310792ba37..2f0dea00b76fd0 100644 --- a/cmake/developer_package/shellcheck/shellcheck.cmake +++ b/cmake/developer_package/shellcheck/shellcheck.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/shellcheck/shellcheck_process.cmake b/cmake/developer_package/shellcheck/shellcheck_process.cmake index 1dcf121c379c06..58713a952581a9 100644 --- a/cmake/developer_package/shellcheck/shellcheck_process.cmake +++ b/cmake/developer_package/shellcheck/shellcheck_process.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/target_flags.cmake b/cmake/developer_package/target_flags.cmake index 030fcbfea96458..181c4dd4187e1b 100644 --- a/cmake/developer_package/target_flags.cmake +++ b/cmake/developer_package/target_flags.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # # Target system specific flags @@ -39,10 +39,10 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") set(X86_64 ON) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*") set(X86 ON) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64.*|aarch64.*|AARCH64.*)") + set(AARCH64 ON) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") set(ARM ON) -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") - set(AARCH64 ON) endif() # in case of cross-compilation (or -m32) CMAKE_SYSTEM_PROCESSOR is equal to diff --git a/cmake/developer_package/tbb/lnx/TBBConfig.cmake b/cmake/developer_package/tbb/lnx/TBBConfig.cmake index e7dd356b39cd82..8198af0d139fab 100644 --- a/cmake/developer_package/tbb/lnx/TBBConfig.cmake +++ b/cmake/developer_package/tbb/lnx/TBBConfig.cmake @@ -1,19 +1,6 @@ -#=============================================================================== -# Copyright 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -#=============================================================================== - # TBB_FOUND should not be set explicitly. It is defined automatically by CMake. # Handling of TBB_VERSION is in TBBConfigVersion.cmake. diff --git a/cmake/developer_package/tbb/mac/TBBConfig.cmake b/cmake/developer_package/tbb/mac/TBBConfig.cmake index 602dceff5efd86..f18eb82bb9467a 100644 --- a/cmake/developer_package/tbb/mac/TBBConfig.cmake +++ b/cmake/developer_package/tbb/mac/TBBConfig.cmake @@ -1,18 +1,6 @@ -#=============================================================================== -# Copyright 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -#=============================================================================== # TBB_FOUND should not be set explicitly. It is defined automatically by CMake. # Handling of TBB_VERSION is in TBBConfigVersion.cmake. diff --git a/cmake/developer_package/tbb/win/TBBConfig.cmake b/cmake/developer_package/tbb/win/TBBConfig.cmake index 46fc3ada82a6f3..dc1576fd36895e 100644 --- a/cmake/developer_package/tbb/win/TBBConfig.cmake +++ b/cmake/developer_package/tbb/win/TBBConfig.cmake @@ -1,18 +1,6 @@ -#=============================================================================== -# Copyright 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -#=============================================================================== # TBB_FOUND should not be set explicitly. It is defined automatically by CMake. # Handling of TBB_VERSION is in TBBConfigVersion.cmake. diff --git a/cmake/developer_package/version.cmake b/cmake/developer_package/version.cmake index 9dd1ecbc923780..c17c55b7b2043d 100644 --- a/cmake/developer_package/version.cmake +++ b/cmake/developer_package/version.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/developer_package/vs_version/vs_version.cmake b/cmake/developer_package/vs_version/vs_version.cmake index 12f11a9f1d74e9..21063c86aca8e6 100644 --- a/cmake/developer_package/vs_version/vs_version.cmake +++ b/cmake/developer_package/vs_version/vs_version.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -24,7 +24,7 @@ endif() set(IE_VS_VER_COMPANY_NAME_STR "Intel Corporation") set(IE_VS_VER_PRODUCTVERSION_STR "${CI_BUILD_NUMBER}") set(IE_VS_VER_PRODUCTNAME_STR "OpenVINO toolkit") -set(IE_VS_VER_COPYRIGHT_STR "Copyright (C) 2018-2020, Intel Corporation") +set(IE_VS_VER_COPYRIGHT_STR "Copyright (C) 2018-2021, Intel Corporation") set(IE_VS_VER_COMMENTS_STR "https://docs.openvinotoolkit.org/") # @@ -51,6 +51,11 @@ function(ie_add_vs_version_file) message(FATAL_ERROR "${VS_VER_NAME} must define a target") endif() + get_target_property(target_type ${VS_VER_NAME} TYPE) + if(NOT target_type MATCHES "^(SHARED|MODULE)_LIBRARY$") + message(FATAL_ERROR "ie_add_vs_version_file can work only with dynamic libraries") + endif() + macro(_vs_ver_update_variable name) if(VS_VER_NAME AND DEFINED IE_${VS_VER_NAME}_VS_VER_${name}) set(IE_VS_VER_${name} "${IE_${VS_VER_NAME}_VS_VER_${name}}") diff --git a/cmake/developer_package/whole_archive.cmake b/cmake/developer_package/whole_archive.cmake index e12ad7ddf76ae1..22cbf2fafdbd76 100644 --- a/cmake/developer_package/whole_archive.cmake +++ b/cmake/developer_package/whole_archive.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/features.cmake b/cmake/features.cmake index 49b29562abe3b1..275961f1ad8744 100644 --- a/cmake/features.cmake +++ b/cmake/features.cmake @@ -1,14 +1,8 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # -if(X86_64) - set(ENABLE_MKL_DNN_DEFAULT ON) -else() - set(ENABLE_MKL_DNN_DEFAULT OFF) -endif() - -ie_option (ENABLE_MKL_DNN "MKL-DNN plugin for inference engine" ${ENABLE_MKL_DNN_DEFAULT}) +ie_dependent_option (ENABLE_MKL_DNN "MKL-DNN plugin for inference engine" ON "X86_64" OFF) ie_option (ENABLE_TESTS "unit, behavior and functional tests" OFF) @@ -27,6 +21,14 @@ Usage: -DSELECTIVE_BUILD=ON -DSELECTIVE_BUILD_STAT=/path/*.csv" OFF ie_option(ENABLE_ERROR_HIGHLIGHT "Highlight errors and warnings during compile time" OFF) + +# +# enable or disable output from NGRAPH_DEBUG statements +# +if(NGRAPH_DEBUG_ENABLE) + add_definitions(-DNGRAPH_DEBUG_ENABLE) +endif() + # # Process options # diff --git a/cmake/toolchains/ia32.linux.toolchain.cmake b/cmake/toolchains/ia32.linux.toolchain.cmake index 13c090fb9a73d7..675b0b3c4613ad 100644 --- a/cmake/toolchains/ia32.linux.toolchain.cmake +++ b/cmake/toolchains/ia32.linux.toolchain.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -20,8 +20,5 @@ endmacro() # need libusb 32-bits version _set_if_not_defined(ENABLE_VPU OFF) -# _mm_loadl_epi64 is not defined -_set_if_not_defined(ENABLE_SSE42 OFF) - # fix conversion from uint64_t / int64_t to size_t _set_if_not_defined(NGRAPH_ONNX_IMPORT_ENABLE OFF) diff --git a/cmake/toolchains/mt.runtime.win32.toolchain.cmake b/cmake/toolchains/mt.runtime.win32.toolchain.cmake index 484a4c8b282ae3..899fecb679bce9 100644 --- a/cmake/toolchains/mt.runtime.win32.toolchain.cmake +++ b/cmake/toolchains/mt.runtime.win32.toolchain.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/cmake/toolchains/uwp.toolchain.cmake b/cmake/toolchains/uwp.toolchain.cmake index 3e9f6b603c1cb1..1841d1d03a510d 100644 --- a/cmake/toolchains/uwp.toolchain.cmake +++ b/cmake/toolchains/uwp.toolchain.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index e34e8fe3ade2e2..7b3d025a2166ac 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/docs/HOWTO/Custom_Layers_Guide.md b/docs/HOWTO/Custom_Layers_Guide.md index 8037e6e95a29ee..5816311af8c148 100644 --- a/docs/HOWTO/Custom_Layers_Guide.md +++ b/docs/HOWTO/Custom_Layers_Guide.md @@ -84,7 +84,7 @@ Each device plugin includes a library of optimized implementations to execute kn execute a custom operation. The custom operation extension is implemented according to the target device: - Custom Operation CPU Extension - - A compiled shared library (`.so`, `.dylib` or `.dll`) needed by the CPU Plugin for executing the custom operation + - A compiled shared library (`.so` or `.dll`) needed by the CPU Plugin for executing the custom operation on a CPU. Refer to the [How to Implement Custom CPU Operations](../IE_DG/Extensibility_DG/CPU_Kernel.md) for more details. - Custom Operation GPU Extension @@ -342,9 +342,9 @@ cmake .. -DCMAKE_BUILD_TYPE=Release make --jobs=$(nproc) ``` -The result of this command is a compiled shared library (`.so`, `.dylib` or `.dll`). It should be loaded in the +The result of this command is a compiled shared library (`.so` or `.dll`). It should be loaded in the application using `Core` class instance method `AddExtension` like this -`core.AddExtension(make_so_pointer(compiled_library_file_name), "CPU");`. +`core.AddExtension(std::make_shared(compiled_library_file_name), "CPU");`. To test that the extension is implemented correctly we can run the "mri_reconstruction_demo.py" with the following content: diff --git a/docs/HOWTO/mo_extensions/front/tf/Complex.py b/docs/HOWTO/mo_extensions/front/tf/Complex.py index 465608dfaba644..fa23d9b1f4df0b 100644 --- a/docs/HOWTO/mo_extensions/front/tf/Complex.py +++ b/docs/HOWTO/mo_extensions/front/tf/Complex.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 #! [complex:transformation] import logging as log diff --git a/docs/HOWTO/mo_extensions/front/tf/ComplexAbs.py b/docs/HOWTO/mo_extensions/front/tf/ComplexAbs.py index bac4140d732f91..4fe0368fd66cf3 100644 --- a/docs/HOWTO/mo_extensions/front/tf/ComplexAbs.py +++ b/docs/HOWTO/mo_extensions/front/tf/ComplexAbs.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 #! [complex_abs:transformation] import numpy as np diff --git a/docs/HOWTO/mo_extensions/front/tf/FFT_ext.py b/docs/HOWTO/mo_extensions/front/tf/FFT_ext.py index 283c87ba838f80..e5216d2ea3ec2f 100644 --- a/docs/HOWTO/mo_extensions/front/tf/FFT_ext.py +++ b/docs/HOWTO/mo_extensions/front/tf/FFT_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # ! [fft_ext:extractor] from ...ops.FFT import FFT diff --git a/docs/HOWTO/mo_extensions/ops/FFT.py b/docs/HOWTO/mo_extensions/ops/FFT.py index c3f37f7d6d6919..92645cd6967c47 100644 --- a/docs/HOWTO/mo_extensions/ops/FFT.py +++ b/docs/HOWTO/mo_extensions/ops/FFT.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 #! [fft:operation] from mo.front.common.partial_infer.elemental import copy_shape_infer diff --git a/docs/HOWTO/mri_reconstruction_demo.py b/docs/HOWTO/mri_reconstruction_demo.py index 74ce15721fc68a..9b03880e39c32f 100644 --- a/docs/HOWTO/mri_reconstruction_demo.py +++ b/docs/HOWTO/mri_reconstruction_demo.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 #! [mri_demo:demo] import numpy as np diff --git a/docs/IE_DG/API_Changes.md b/docs/IE_DG/API_Changes.md index c23c427e6edf38..372b2d320ebfa5 100644 --- a/docs/IE_DG/API_Changes.md +++ b/docs/IE_DG/API_Changes.md @@ -2,6 +2,28 @@ The sections below contain detailed list of changes made to the Inference Engine API in recent releases. +## 2021.4 + +### Deprecated API + + * InferenceEngine::Parameter(const std::shared_ptr&) + * InferenceEngine::Parameter(std::shared_ptr& var) + * std::shared_ptr InferenceEngine::Parameter::asVariant() const + * InferenceEngine::Parameter::operator std::shared_ptr() const + +## 2021.3 + +### New API + + * InferenceEngine::InferRequest::Cancel to cancel inference request execution + * InferenceEngine::Layout::HWC to support HWC layout for input or output blobs + * InferenceEngine::Precision::F64 data precision for f64 data type + * InferenceEngine::CNNNetwork::getOVNameForTensor to map frameworks tensor names to OpenVINO internal tensor names + +### Deprecated API + + * InferenceEngine::IVariableState interface is deprecated, use InferenceEngine::VariableState wrapper + ## 2021.2 ### New API diff --git a/docs/IE_DG/Extensibility_DG/AddingNGraphOps.md b/docs/IE_DG/Extensibility_DG/AddingNGraphOps.md index 9717b08f1c427d..e98edf7e8f0acc 100644 --- a/docs/IE_DG/Extensibility_DG/AddingNGraphOps.md +++ b/docs/IE_DG/Extensibility_DG/AddingNGraphOps.md @@ -1,24 +1,24 @@ # Custom nGraph Operation {#openvino_docs_IE_DG_Extensibility_DG_AddingNGraphOps} -Inference Engine Extension API allows to register operation sets (opsets) with custom nGraph operations, it allows to support Networks with unknown operations. +Inference Engine Extension API enables you to register operation sets (opsets) with custom nGraph operations to support models with operations which OpenVINO™ does not support out-of-the-box. ## Operation Class To add your custom nGraph operation, create a new class that extends `ngraph::Op`, which is in turn derived from `ngraph::Node`, the base class for all graph operations in nGraph. Follow the steps below: -1. Define a `NodeTypeInfo` object that identifies the type of the operation to the graph users and helps with dynamic type resolution. The type info of an nGraph operation currently consists of a string identifier and a version number, but this may change in the future. +1. Add the `NGRAPH_RTTI_DECLARATION` and `NGRAPH_RTTI_DEFINITION` macros which define a `NodeTypeInfo` object that identifies the type of the operation to the graph users and helps with dynamic type resolution. The type info of an nGraph operation currently consists of a string identifier and a version number, but this may change in the future. -2. Implement constructors that can optionally take the operation inputs and attributes as parameters. +2. Implement constructors that optionally take the operation inputs and attributes as parameters. -3. Override the shape inference method `validate_and_infer_types`. This method is called multiple times during graph manipulations to determine the shapes and element types of the outputs of the operations. You can access the input shapes through the `get_input_partial_shape()` method and input element types through the `get_input_element_type()` method of `ngraph::Node`. Set the inferred shape and element type of the output using `set_output_type`. +3. Override the shape inference method `validate_and_infer_types`. This method is called multiple times during graph manipulations to determine the shapes and element types of the operations outputs. To access the input shapes and input element types, use the `get_input_partial_shape()` and `get_input_element_type()` methods of `ngraph::Node`. Set the inferred shape and element type of the output using `set_output_type`. -4. Override the `clone_with_new_inputs` method, which allows graph manipulation routines to create copies of this operation and connect it to different nodes during optimization. +4. Override the `clone_with_new_inputs` method, which enables graph manipulation routines to create copies of this operation and connect it to different nodes during optimization. -5. Override the `visit_attributes` method, which allows serialization and deserialization of attributes. An `AttributeVisitor` is passed to the method, and the implementation is expected to walk over all the attributes in the op using the type-aware `on_attribute` helper. Helpers are already implemented for standard C++ types like `int64_t`, `float`, `bool`, `vector` and for existing nGraph defined types. +5. Override the `visit_attributes` method, which enables serialization and deserialization of operation attributes. An `AttributeVisitor` is passed to the method, and the implementation is expected to walk over all the attributes in the op using the type-aware `on_attribute` helper. Helpers are already implemented for standard C++ types like `int64_t`, `float`, `bool`, `vector`, and for existing nGraph defined types. 6. Override `evaluate`, which is an optional method that enables the application of constant folding if there is a custom operation on the constant branch. -Based on that, declaration of a operation class can look as follows: +Based on that, declaration of an operation class can look as follows: @snippet template_extension/op.hpp op:header @@ -26,36 +26,38 @@ Based on that, declaration of a operation class can look as follows: The provided implementation has several fields: - * `add` of type `int64_t` is an attribute of custom operation - * `type_info` of type `ngraph::NodeTypeInfo` defines the type and version of operation + * `add` of type `int64_t` is an attribute of a custom operation. + * `type_info` of type `ngraph::NodeTypeInfo` defines the type and version of an operation. ### Operation Constructors -nGraph operation contains two constructors: a default constructor, which allows to create operation without attributes and a constructor that creates and validates operation with specified inputs and attributes. +nGraph operation contains two constructors: +* Default constructor, which enables you to create an operation without attributes +* Constructor that creates and validates an operation with specified inputs and attributes @snippet template_extension/op.cpp op:ctor ### `validate_and_infer_types()` -`ngraph::Node::validate_and_infer_types` method validates operation attributes and calculates output shapes using attributes of operation. +`ngraph::Node::validate_and_infer_types` method validates operation attributes and calculates output shapes using attributes of the operation. @snippet template_extension/op.cpp op:validate ### `clone_with_new_inputs()` -`ngraph::Node::clone_with_new_inputs` method creates a copy of nGraph operation with new inputs. +`ngraph::Node::clone_with_new_inputs` method creates a copy of the nGraph operation with new inputs. @snippet template_extension/op.cpp op:copy ### `visit_attributes()` -`ngraph::Node::visit_attributes` method allows to visit all operation attributes. +`ngraph::Node::visit_attributes` method enables you to visit all operation attributes. @snippet template_extension/op.cpp op:visit_attributes ### `evaluate()` -`ngraph::Node::evaluate` method allows to apply constant folding to an operation. +`ngraph::Node::evaluate` method enables you to apply constant folding to an operation. @snippet template_extension/op.cpp op:evaluate @@ -67,7 +69,7 @@ To add custom operations to the [Extension](Extension.md) class, create an opera This method returns a map of opsets that exist in the extension library. -nGraph provides opsets mechanism for operation versioning. Different opsets distinguish between different versions of one operation. +nGraph provides an opset mechanism to group operations into clusters. S. Different opsets distinguish between different versions of one operation. When specifying opset names, follow the rules below: * Use unique opset names. diff --git a/docs/IE_DG/Extensibility_DG/CPU_Kernel.md b/docs/IE_DG/Extensibility_DG/CPU_Kernel.md index 0e2adca76a8775..923bcc36bc2158 100644 --- a/docs/IE_DG/Extensibility_DG/CPU_Kernel.md +++ b/docs/IE_DG/Extensibility_DG/CPU_Kernel.md @@ -1,6 +1,6 @@ # How to Implement Custom CPU Operations {#openvino_docs_IE_DG_Extensibility_DG_CPU_Kernel} -The primary vehicle for the performance of the CPU codepath in the Inference Engine is the Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN), and new CPU kernels extend the Inference Engine plugin for the Intel MKL-DNN. Implementing the InferenceEngine::ILayerExecImpl defines a general CPU-side extension. There are no Intel MKL-DNN specifics in the way you need to implement a kernel. +The primary means of the performance of the CPU codepath in the Inference Engine is the Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN), and new CPU kernels extend the Inference Engine plugin for the Intel MKL-DNN. Implementing the InferenceEngine::ILayerExecImpl defines a general CPU-side extension. There are no Intel MKL-DNN specifics in the way you need to implement a kernel. ## Implementation Class @@ -13,20 +13,20 @@ Based on that, declaration of a kernel implementation class can look as follows: The provided implementation has several fields: - * `add` of the type `int64_t` is an attribute of a custom operation - * `inShape` of the type `ngraph::Shape` is an input shape - * `outShape` of the type `ngraph::Shape` is an output shape - * `error` of the type `std::string` is a field to handle errors from a constructor + * `add` of the type `int64_t` is an attribute of a custom operation. + * `inShape` of the type `ngraph::Shape` is an input shape. + * `outShape` of the type `ngraph::Shape` is an output shape. + * `error` of the type `std::string` is a field to handle errors from a constructor. ### Constructor of Implementation -An implementation constructor checks parameters of nGraph operation, stores needed attributes, and stores an error message in the case of an error. +An implementation constructor checks parameters of an nGraph operation, stores required attributes, and stores an error message in the case of an error. @snippet template_extension/cpu_kernel.cpp cpu_implementation:ctor ### `getSupportedConfigurations` -InferenceEngine::ILayerExecImpl::getSupportedConfigurations method returns all supported configuration formats (input/output tensor layouts) for your implementation. To specify formats of data, use InferenceEngine::TensorDesc. Refer to the [Memory Primitives](../Memory_primitives.md) section for instructions on how to do it. +InferenceEngine::ILayerExecImpl::getSupportedConfigurations method returns all supported configuration formats (input/output tensor layouts) for your implementation. To specify formats of data, use InferenceEngine::TensorDesc. Refer to the [Memory Primitives](../Memory_primitives.md) section for instructions. @snippet template_extension/cpu_kernel.cpp cpu_implementation:getSupportedConfigurations diff --git a/docs/IE_DG/Extensibility_DG/Custom_ONNX_Ops.md b/docs/IE_DG/Extensibility_DG/Custom_ONNX_Ops.md index b6728e65bc402d..e0cdb7cc584070 100644 --- a/docs/IE_DG/Extensibility_DG/Custom_ONNX_Ops.md +++ b/docs/IE_DG/Extensibility_DG/Custom_ONNX_Ops.md @@ -1,17 +1,17 @@ -# Custom ONNX operators {#openvino_docs_IE_DG_Extensibility_DG_Custom_ONNX_Ops} +# Custom ONNX* Operators {#openvino_docs_IE_DG_Extensibility_DG_Custom_ONNX_Ops} -ONNX importer provides mechanism to register custom ONNX operators based on predefined or user-defined nGraph operations. +The ONNX\* importer provides a mechanism to register custom ONNX operators based on predefined or custom nGraph operations. The function responsible for registering a new operator is called `ngraph::onnx_import::register_operator` and is defined in `onnx_import/onnx_utils.hpp`. -## Registering custom ONNX operator based on predefined nGraph operations +## Register Custom ONNX Operator Based on Predefined nGraph Operations -The steps below explain how to register a custom ONNX operator, for example, CustomRelu, in a domain called com.example. +The steps below explain how to register a custom ONNX operator, for example, CustomRelu, in a domain called `com.example`. CustomRelu is defined as follows: ``` x >= 0 => f(x) = x * alpha -x < 0 => f(x) = x * beta +x < 0 => f(x) = x * beta ``` -where alpha, beta are float constants. +where `alpha` and `beta` are float constants. 1. Include headers: @snippet onnx_custom_op/onnx_custom_op.cpp onnx_custom_op:headers @@ -20,38 +20,40 @@ where alpha, beta are float constants. @snippet onnx_custom_op/onnx_custom_op.cpp onnx_custom_op:register_operator The `register_operator` function takes four arguments: op_type, opset version, domain, and a function object. The function object is a user-defined function that takes `ngraph::onnx_import::Node` as an input and based on that, returns a graph with nGraph operations. -The `ngraph::onnx_import::Node` class represents a node in ONNX model. It provides functions to fetch input node(s) (`get_ng_inputs`), fetch attribute value (`get_attribute_value`) and many more (please refer to `onnx_import/core/node.hpp` for full class declaration). -New operator registration must happen before the ONNX model is read, for example, if an ONNX model uses the 'CustomRelu' operator, `register_operator("CustomRelu", ...)` must be called before InferenceEngine::Core::ReadNetwork. -Re-registering ONNX operators within the same process is supported. During registration of the existing operator, a warning is printed. +The `ngraph::onnx_import::Node` class represents a node in an ONNX model. It provides functions to fetch input node(s) using `get_ng_inputs`, attribute value using `get_attribute_value`, and many more. See `onnx_import/core/node.hpp` for full class declaration. -The example below demonstrates an exemplary model that requires previously created 'CustomRelu' operator: +New operator registration must happen before an ONNX model is read. For example, if an model uses the `CustomRelu` operator, call `register_operator("CustomRelu", ...)` before InferenceEngine::Core::ReadNetwork. +Reregistering ONNX operators within the same process is supported. If you register an existing operator, you get a warning. + +The example below demonstrates an exemplary model that requires a previously created `CustomRelu` operator: @snippet onnx_custom_op/onnx_custom_op.cpp onnx_custom_op:model -For a reference on how to create a graph with nGraph operations, visit [Custom nGraph Operations](AddingNGraphOps.md). -For a complete list of predefined nGraph operators, visit [available operations sets](../../ops/opset.md). +To create a graph with nGraph operations, visit [Custom nGraph Operations](AddingNGraphOps.md). +For a complete list of predefined nGraph operators, visit [Available Operations Sets](../../ops/opset.md). -If operator is no longer needed, it can be unregistered by calling `unregister_operator`. The function takes three arguments `op_type`, `version`, and `domain`. +If you do not need an operator anymore, unregister it by calling `unregister_operator`. The function takes three arguments: `op_type`, `version`, and `domain`. @snippet onnx_custom_op/onnx_custom_op.cpp onnx_custom_op:unregister_operator -## Registering custom ONNX operator based on custom nGraph operations +## Register Custom ONNX Operator Based on Custom nGraph Operations -The same principles apply when registering custom ONNX operator based on custom nGraph operations. -This example shows how to register custom ONNX operator based on `Operation` presented in [this tutorial](AddingNGraphOps.md), which is used in [TemplateExtension](Extension.md). +The same principles apply when registering a custom ONNX operator based on custom nGraph operations. +This example shows how to register a custom ONNX operator based on `Operation` presented in [this tutorial](AddingNGraphOps.md), which is used in [TemplateExtension](Extension.md). @snippet template_extension/extension.cpp extension:ctor -Here, the `register_operator` function is called in Extension's constructor, which makes sure that it is called before InferenceEngine::Core::ReadNetwork (since InferenceEngine::Core::AddExtension must be called before a model with custom operator is read). +Here, the `register_operator` function is called in the constructor of Extension. The constructor makes sure that the function is called before InferenceEngine::Core::ReadNetwork, because InferenceEngine::Core::AddExtension must be called before a model with a custom operator is read. -The example below demonstrates how to unregister operator from Extension's destructor: +The example below demonstrates how to unregister an operator from the destructor of Extension: @snippet template_extension/extension.cpp extension:dtor -Note that it is mandatory to unregister custom ONNX operator if it is defined in dynamic shared library. -## Requirements for building with CMake +> **NOTE**: It is mandatory to unregister a custom ONNX operator if it is defined in a dynamic shared library. + +## Requirements for Building with CMake -Program that uses the `register_operator` functionality, requires (in addition to Inference Engine) `ngraph` and `onnx_importer` libraries. -The `onnx_importer` is a component of `ngraph` package , so `find_package(ngraph REQUIRED COMPONENTS onnx_importer)` is sufficient to find both. -The `ngraph` package exposes two variables (`${NGRAPH_LIBRARIES}` and `${ONNX_IMPORTER_LIBRARIES}`), which reference `ngraph` and `onnx_importer` libraries. +A program that uses the `register_operator` functionality requires `ngraph` and `onnx_importer` libraries in addition to the Inference Engine. +The `onnx_importer` is a component of the `ngraph` package , so `find_package(ngraph REQUIRED COMPONENTS onnx_importer)` can find both. +The `ngraph` package exposes two variables, `${NGRAPH_LIBRARIES}` and `${ONNX_IMPORTER_LIBRARIES}`, which reference the `ngraph` and `onnx_importer` libraries. Those variables need to be passed to the `target_link_libraries` command in the CMakeLists.txt file. -See below CMakeLists.txt for reference: +See CMakeLists.txt below for reference: @snippet onnx_custom_op/CMakeLists.txt cmake:onnx_custom_op diff --git a/docs/IE_DG/Extensibility_DG/Extension.md b/docs/IE_DG/Extensibility_DG/Extension.md index 69bb614e605681..178d0099df68ee 100644 --- a/docs/IE_DG/Extensibility_DG/Extension.md +++ b/docs/IE_DG/Extensibility_DG/Extension.md @@ -1,29 +1,29 @@ # Extension Library {#openvino_docs_IE_DG_Extensibility_DG_Extension} Inference Engine provides an InferenceEngine::IExtension interface, which defines the interface for Inference Engine Extension libraries. -All extension libraries should be inherited from this interface. The example below contains implementation of two operations: `Template` +Inherit all extension libraries from this interface. The example below contains an implementation of two operations: `Template` used as an example in this document and `FFT` used as a more complex example from the [Custom Operations Guide](../../HOWTO/Custom_Layers_Guide.md). -> **NOTE**: `FFT` operation is implemented using OpenCV library functions `cv::dft` and `cv::idft`. +> **NOTE**: `FFT` operation is implemented using the OpenCV library functions `cv::dft` and `cv::idft`. -Based on that, declaration of an extension class can look as follows: +Based on that, the declaration of an extension class can look as follows: @snippet template_extension/extension.hpp extension:header -The extension library should contain and export the method InferenceEngine::CreateExtension, which creates an `Extension` class: +The extension library should contain and export the InferenceEngine::CreateExtension method, which creates an `Extension` class: @snippet template_extension/extension.cpp extension:CreateExtension Also, an `Extension` object should implement the following methods: -* InferenceEngine::IExtension::Release deletes an extension object +* InferenceEngine::IExtension::Release deletes an extension object. -* InferenceEngine::IExtension::GetVersion returns information about version of the library +* InferenceEngine::IExtension::GetVersion returns information about the version of the library. @snippet template_extension/extension.cpp extension:GetVersion -Implement the InferenceEngine::IExtension::getOpSets method if the extension contains custom layers. -Read the [guide about custom operations](AddingNGraphOps.md) for more information. +Implement the InferenceEngine::IExtension::getOpSets method if the extension contains custom layers. +Read [Custom nGraph Operation](AddingNGraphOps.md) for more information. -To understand how integrate execution kernels to the extension library, read the [guide about development of custom CPU kernels](CPU_Kernel.md). -To understand how to register custom ONNX operator to the extension library, read the [guide about custom ONNX operators](Custom_ONNX_Ops.md). +To integrate execution kernels to the extension library, read [How to Implement Custom CPU Operations](CPU_Kernel.md). +To register a custom ONNX\* operator to the extension library, read [Custom ONNX Operators](Custom_ONNX_Ops.md). diff --git a/docs/IE_DG/Extensibility_DG/GPU_Kernel.md b/docs/IE_DG/Extensibility_DG/GPU_Kernel.md index 59c0f070cf0693..09ace6f0a2942f 100644 --- a/docs/IE_DG/Extensibility_DG/GPU_Kernel.md +++ b/docs/IE_DG/Extensibility_DG/GPU_Kernel.md @@ -1,15 +1,15 @@ # How to Implement Custom GPU Operations {#openvino_docs_IE_DG_Extensibility_DG_GPU_Kernel} -The GPU codepath abstracts many details about OpenCL™. You need to provide the kernel code in OpenCL C and the configuration file that connects the kernel and its parameters to the parameters of the operation. +The GPU codepath abstracts many details about OpenCL\*. You need to provide the kernel code in OpenCL C and the configuration file that connects the kernel and its parameters to the parameters of the operation. -There are two options of using custom operation configuration file: +There are two options of using the custom operation configuration file: * Include a section with your kernels into the global automatically-loaded `cldnn_global_custom_kernels/cldnn_global_custom_kernels.xml` file, which is hosted in the `/deployment_tools/inference_engine/bin/intel64/{Debug/Release}` folder * Call the `InferenceEngine::Core::SetConfig()` method from your application with the `InferenceEngine::PluginConfigParams::KEY_CONFIG_FILE` key and the configuration file name as a value before loading the network that uses custom operations to the plugin: @snippet snippets/GPU_Kernel.cpp part0 -All Inference Engine samples, except trivial `hello_classification`, +All Inference Engine samples, except the trivial `hello_classification`, feature a dedicated command-line option `-c` to load custom kernels. For example, to load custom operations for the classification sample, run the command below: ```sh $ ./classification_sample -m /bvlc_alexnet_fp16.xml -i ./validation_set/daily/227x227/apron.bmp -d GPU @@ -25,12 +25,12 @@ The definitions described in the sections below use the following notations: Notation | Description ---|--- -(0/1) | Can have 0 or 1 instances of this node/attribute -(1) | Must have only 1 instance of this node/attribute -(0+) | Can have any number of instances of this node/attribute -(1+) | Can have 1 or more instances of this node/attribute +(0/1) | Can have zero or one instance of this node or attribute +(1) | Must have only one instance of this node or attribute +(0+) | Can have any number of instances of this node or attribute +(1+) | Can have one or more instances of this node or attribute -### CustomLayer Node and Sub-node Structure +### CustomLayer Node and Sub-Node Structure `CustomLayer` node contains the entire configuration for a single custom operation. @@ -43,60 +43,60 @@ Notation | Description **Sub-nodes**: `Kernel` (1), `Buffers` (1), `CompilerOptions` (0+), `WorkSizes` (0/1) -### Kernel Node and Sub-node Structure +### Kernel Node and Sub-Node Structure `Kernel` node contains all kernel source code configuration. No kernel node structure exists. **Sub-nodes**: `Source` (1+), `Define` (0+) -### Source Node and Sub-node Structure +### Source Node and Sub-Node Structure `Source` node points to a single OpenCL source file. -| Attribute Name | \# || +| Attribute Name | \# |Description| |-----|-----|-----| -| `filename` | (1) | Name of the file containing OpenCL source code. Notice that path is relative to your executable. Multiple source nodes will have their sources concatenated in order. | +| `filename` | (1) | Name of the file containing OpenCL source code. Note that the path is relative to your executable. Multiple source nodes will have their sources concatenated in order. | **Sub-nodes**: None -### Define Node and Sub-node Structure +### Define Node and Sub-Node Structure `Define` node configures a single `#‍define` instruction to be added to the sources during compilation (JIT). | Attribute Name | \# | Description | |------|-------|------| -| `name` | (1) | The name of the defined JIT. For static constants, this can include the value as well (taken as a string). | +| `name` | (1) | The name of the defined JIT. For static constants, this can include the value as well, which is taken as a string. | | `param` | (0/1) | This parameter value is used as the value of this JIT definition. | | `type` | (0/1) | The parameter type. Accepted values: `int`, `float`, and `int[]`, `float[]` for arrays. | -| `default` | (0/1) | The default value to be used if the specified parameters is missing from the operation in the IR. | +| `default` | (0/1) | The default value to be used if the specified parameters are missing from the operation in the IR. | **Sub-nodes:** None The resulting JIT has the following form: `#‍define [name] [type] [value/default]`. -### Buffers Node and Sub-node Structure +### Buffers Node and Sub-Node Structure `Buffers` node configures all input/output buffers for the OpenCL entry function. No buffers node structure exists. **Sub-nodes:** `Data` (0+), `Tensor` (1+) -### Data Node and Sub-node Structure +### Data Node and Sub-Node Structure -`Data` node configures a single input with static data (for example, -weights or biases). +`Data` node configures a single input with static data, for example, +weights or biases. | Attribute Name | \# | Description | |----|-----|------| -| `name` | (1) | Name of a blob attached to a operation in the IR | +| `name` | (1) | Name of a blob attached to an operation in the IR | | `arg-index` | (1) | 0-based index in the entry function arguments to be bound to | **Sub-nodes**: None -### Tensor Node and Sub-node Structure +### Tensor Node and Sub-Node Structure `Tensor` node configures a single input or output tensor. @@ -105,9 +105,9 @@ weights or biases). | `arg-index` | (1) | 0-based index in the entry function arguments to be bound to. | | `type` | (1) | `input` or `output` | | `port-index` | (1) | 0-based index in the operation input/output ports in the IR | -| `format` | (0/1) | Data layout declaration for the tensor. Accepted values: `BFYX`, `BYXF`, `YXFB`, `FYXB` (also in all lowercase). Default value: `BFYX` | +| `format` | (0/1) | Data layout declaration for the tensor. Accepted values: `BFYX`, `BYXF`, `YXFB`, `FYXB`, and same values in all lowercase. Default value: `BFYX` | -### CompilerOptions Node and Sub-node Structure +### CompilerOptions Node and Sub-Node Structure `CompilerOptions` node configures the compilation flags for the OpenCL sources. @@ -118,22 +118,22 @@ sources. **Sub-nodes**: None -### WorkSizes Node and Sub-node Structure +### WorkSizes Node and Sub-Node Structure `WorkSizes` node configures the global/local work sizes to be used when -queuing the OpenCL program for execution. +queuing an OpenCL program for execution. | Attribute Name | \# | Description | |-----|------|-----| -| `global`
`local` | (0/1)
(0/1) | An array of up to 3 integers (or formulas) for defining the OpenCL work-sizes to be used during execution.
The formulas can use the values of the B,F,Y,X dimensions and contain the operators: +,-,/,\*,% (all evaluated in integer arithmetic).
Default value: `global=”B*F*Y*X” local=””` | -| `dim` | (0/1) | A tensor to take the work size from. Accepted values: `input N`, `output`, where `N` is an index of input tensor starting with 0. Default value: `output` | +| `global`
`local` | (0/1)
(0/1) | An array of up to three integers or formulas for defining OpenCL work-sizes to be used during execution.
The formulas can use the values of the B,F,Y,X dimensions and contain the operators: +,-,/,\*,%. All operators are evaluated in integer arithmetic.
Default value: `global=”B*F*Y*X” local=””` | +| `dim` | (0/1) | A tensor to take the work-size from. Accepted values: `input N`, `output`, where `N` is an index of input tensor starting with 0. Default value: `output` | **Sub-nodes**: None ## Example Configuration File -The following code sample provides an example configuration file (in the -`.xml` format). For information on configuration file structure, see +The following code sample provides an example configuration file in the +`.xml` format. For information on the configuration file structure, see [Configuration File Format](#config-file-format). ```xml @@ -150,10 +150,10 @@ The following code sample provides an example configuration file (in the ``` -## Built-In Defines for Custom Layers +## Built-In Definitions for Custom Layers The following table includes definitions that are attached before -the user sources, where `` is the actual input and output, for +user sources, where `` is the actual input and output, for example, `INPUT0` or `OUTPUT0`. For an example, see [Example Kernel](#example-kernel). @@ -175,10 +175,10 @@ For an example, see [Example Kernel](#example-kernel). | `_UPPER_PADDING_SIZE` | The size of the `_UPPER_PADDING` array | | `_PITCHES` | The number of elements between adjacent elements in each dimension. Always ordered as BFYX.| | `_PITCHES_SIZE`| The size of the `_PITCHES` array | -| `_OFFSET`| The number of elements from the start of the tensor to the first valid element (bypassing the lower padding) | +| `_OFFSET`| The number of elements from the start of the tensor to the first valid element, bypassing the lower padding. | All `` values are automatically defined for every tensor -bound to this operation (`INPUT0`, `INPUT1`, `OUTPUT0`, and so on), as shown -in the following for example: +bound to this operation, such as `INPUT0`, `INPUT1`, and `OUTPUT0`, as shown +in the following example: ```sh #define INPUT0_DIMS_SIZE 4 @@ -208,7 +208,7 @@ __kernel void example_relu_kernel( } ``` -> **NOTE:** As described in the previous section, all the things like +> **NOTE:** As described in the previous section, all things like > `INPUT0_TYPE` are actually defined as OpenCL (pre-)compiler inputs by > the Inference Engine for efficiency reasons. See [Debugging > Tips](#debugging-tips) for information on debugging the results. diff --git a/docs/IE_DG/Extensibility_DG/Intro.md b/docs/IE_DG/Extensibility_DG/Intro.md index 06d030fc710294..525462043411a4 100644 --- a/docs/IE_DG/Extensibility_DG/Intro.md +++ b/docs/IE_DG/Extensibility_DG/Intro.md @@ -1,25 +1,25 @@ # Inference Engine Extensibility Mechanism {#openvino_docs_IE_DG_Extensibility_DG_Intro} -Inference Engine Extensibility API allows to add support of custom operations to the Inference Engine. +Inference Engine Extensibility API enables you to add support of custom operations to the Inference Engine. Extension should contain operation sets with custom operations and execution kernels for custom operations. Physically, an extension library can be represented as a dynamic library exporting the single `CreateExtension` function -that allows to create a new extension instance. +that creates a new extension instance. -Extensibility library can be loaded to the `InferenceEngine::Core` object using the +To load the Extensibility library to the `InferenceEngine::Core` object, use the `InferenceEngine::Core::AddExtension` method. ## Inference Engine Extension Library -Inference Engine Extension dynamic library contains several components: +Inference Engine Extension dynamic library contains the following components: * [Extension Library](Extension.md): - - Contains custom operation sets - - Provides CPU implementations for custom operations + - Contains custom operation sets. + - Provides CPU implementations for custom operations. * [Custom nGraph Operation](AddingNGraphOps.md): - - Allows to use `InferenceEngine::Core::ReadNetwork` to read Intermediate Representation (IR) with unsupported - operations - - Allows to create `ngraph::Function` with unsupported operations - - Provides shape inference mechanism for custom operations + - Enables the use of `InferenceEngine::Core::ReadNetwork` to read Intermediate Representation (IR) with unsupported + operations. + - Enables the creation of `ngraph::Function` with unsupported operations. + - Provides a shape inference mechanism for custom operations. > **NOTE**: This documentation is written based on the `Template extension`, which demonstrates extension development details. Find the complete code of the `Template extension`, which is fully compilable and up-to-date, @@ -43,10 +43,8 @@ The following pages describe how to integrate custom _kernels_ into the Inferenc * [Introduction to development of custom GPU kernels](GPU_Kernel.md) * [Introduction to development of custom VPU kernels](VPU_Kernel.md) -## Additional Resources +## See Also * [Build an extension library using CMake*](Building.md) - -## See Also * [Using Inference Engine Samples](../Samples_Overview.md) * [Hello Shape Infer SSD sample](../../../inference-engine/samples/hello_reshape_ssd/README.md) diff --git a/docs/IE_DG/Extensibility_DG/VPU_Kernel.md b/docs/IE_DG/Extensibility_DG/VPU_Kernel.md index fccdd27e0d84fb..ec102b1b51cfdc 100644 --- a/docs/IE_DG/Extensibility_DG/VPU_Kernel.md +++ b/docs/IE_DG/Extensibility_DG/VPU_Kernel.md @@ -1,24 +1,24 @@ # How to Implement Custom Layers for VPU (Intel® Neural Compute Stick 2) {#openvino_docs_IE_DG_Extensibility_DG_VPU_Kernel} -> **NOTE:** OpenCL™ custom layer support is available in the preview mode. +> **NOTES:** +> * OpenCL\* custom layer support is available in the preview mode. +> * This section assumes you are familiar with developing kernels using OpenCL. -> **NOTE:** This section assumes you are familiar with developing kernels using OpenCL™. +To customize your topology with an OpenCL layer, follow the steps below: -To customize your topology with an OpenCL™ layer, follow the steps below: +1. Write and compile your OpenCL code with the standalone offline OpenCL compiler (`clc`). +2. Write a configuration file to bind the OpenCL kernel to the topology file (`.xml`) of the model IR. +3. Pass the configuration file to the Inference Engine with the model IR. -1. Write and compile you OpenCL™ code with the standalone offline OpenCL™ compiler (`clc`). -2. Write a configuration file to bind the OpenCL™ kernel to the topology file (`.xml`) of the model IR. -3. Pass the configuration file to Inference engine with the model IR. - -## Compile OpenCL™ code for VPU (Intel® Neural Compute Stick 2) +## Compile OpenCL code for VPU (Intel® Neural Compute Stick 2) > **NOTE:** OpenCL compiler, targeting Intel® Neural Compute Stick 2 for the SHAVE* processor only, is redistributed with OpenVINO. OpenCL support is provided by ComputeAorta*, and is distributed under a license agreement between Intel® and Codeplay* Software Ltd. -The OpenCL™ toolchain for the Intel® Neural Compute Stick 2 supports offline compilation only, so first compile OpenCL C code using the standalone `clc` compiler. You can find the compiler binary at `/deployment_tools/tools/cl_compiler`. +The OpenCL toolchain for the Intel® Neural Compute Stick 2 supports offline compilation only, so first compile OpenCL C code using the standalone `clc` compiler. You can find the compiler binary at `/deployment_tools/tools/cl_compiler`. > **NOTE:** By design, custom OpenCL layers support any OpenCL kernels written with 1.2 version assumed. It also supports half float -extension and is optimized for this type, because it is a native type for Intel® Movidius™ VPUs. +extension and is optimized for this type, because it is a native type for Intel® Movidius™ VPUs. 1. Prior to running a compilation, make sure that the following variables are set: * `SHAVE_MA2X8XLIBS_DIR=/deployment_tools/tools/cl_compiler/lib/` @@ -57,25 +57,25 @@ Configuration file for this kernel might be the following: ``` Each custom layer is described with the `CustomLayer` node. It has the following nodes and attributes: - Root node `CustomLayer` contains the following attributes: - - `name` – (Required) A name of the Inference Engine layer to bind the kernel with. + - `name` – (Required) The name of the Inference Engine layer to bind the kernel with. - `type` and `version` – (Required) Reserved for future use. Set them to `MVCL` and `1` respectively. - - `max-shaves` – (Optional) The maximum number of SHAVE cores that should be dedicated for the layer. It is useful for debugging concurrency issues or for resource saving if memory bound kernel does not scale well with the number of cores, so more resources can be left for the rest of a topology. + - `max-shaves` – (Optional) The maximum number of SHAVE cores that should be dedicated for the layer. It is useful for debugging concurrency issues or for resource saving that memory bound kernel does not scale well with the number of cores, so more resources can be left for the rest of a topology. - Sub-node `Kernel` must contain the following attributes: - - `entry` – A name of your kernel function as you defined it in a source file (in the example above, it is `reorg_nhwc`). + - `entry` – The name of your kernel function as you defined it in a source file. In the example above, it is `reorg_nhwc`. - Node `Source` must contain the following attributes: - - `filename` – A path to a compiled binary relative to the `.xml` binding file. + - `filename` – The path to a compiled binary relative to the `.xml` binding file. - Sub-node `Parameters` – Describes parameters bindings. For more information, see the description below. - Sub-node `WorkSizes` – Describes local and global work group sizes and the source for dimension deduction as a pair `direction,port`. In the example above, the work group is described relatively to the dimension of the input tensor that comes through port 0 in the IR. `global` and `local` work group configurations support any simple math expressions with +,-,\*,/, and () from `B`(batch), `Y`(height), `X`(width) and `F`(channels). - - Sub-node `Where` – Allows to customize bindings with the `key="value"` attribute. For example, to substitute only 3x3 convolutions, write `` in the binging xml. + - Sub-node `Where` – Allows to customize bindings with the `key="value"` attribute. For example, to substitute only 3x3 convolutions, write `` in the binding xml. Parameter description supports `Tensor` of one of tensor types such as `input`, `output`, `input_buffer`, `output_buffer` or `data`, `Scalar`, or `Data` nodes and has the following format: - Each `Tensor` node of `input` or `output` type must contain the following attributes: - - `arg-name` – A name of a kernel parameter in the kernel signature. + - `arg-name` – The name of a kernel parameter in the kernel signature. - `type` – Node type: `input` or `output` as in the IR. - `port-index` – A number of input/output ports as in the IR. - `format` – The channel order in the tensor. Optional conversion layers are generated if the custom layer format is not compatible with formats of neighboring layers. `BFXY`, `BYXF`, and `ANY` formats are supported currently. - Each `Tensor` node of `input_buffer` or `output_buffer` type must contain the following attributes: - - `arg-name` – A name of a kernel parameter in the kernel signature. + - `arg-name` – The name of a kernel parameter in the kernel signature. - `type` – Node type: `input_buffer` or `output_buffer`. Use the appropriate type to bind multiple kernels that correspond to different stages of the same layer. - `port-index` – The unique identifier to bind by. - `dim` – The dim source with the same `direction,port` format used for `WorkSizes` bindings. @@ -110,7 +110,7 @@ Each custom layer is described with the `CustomLayer` node. It has the following ``` - Each `Tensor` node that has the type `data` must contain the following attributes: - - `source` – A name of the blob as it is in the IR (typical example is `weights` for convolution + - `source` – A name of the blob as it is in the IR. Typical example is `weights` for convolution. - `format` – Specifies the channel order in the tensor. Optional conversion layers are generated if the custom layer format is not. ```xml @@ -127,15 +127,15 @@ Each custom layer is described with the `CustomLayer` node. It has the following ``` - Each `Scalar` node must contain the following attributes: - - `arg-name` – A name of a kernel parameter in the kernel signature. + - `arg-name` – The name of a kernel parameter in the kernel signature. - `type` – `int` or `float` value. It is used for correct argument extraction from IR parameters. - `source` – Contains the name of the parameter in the IR file or input/output (`I`/`O`, `In`/`On`, where `n` is a port number) followed by dimension `B`(batch), `Y`(height), `X`(width), or `F`(channels). - Each `Data` node must contain the following attributes: - - `arg-name` – A name of a kernel parameter in the kernel signature. - - `type` – Node type. Currently, `local_data` is the only supported value, which defines buffer allocated in fast local on-chip memory. It is limited to 100K for all `__local` and - `__private` arrays defined inside the kernel as well as all `__local` parameters passed to the kernel. Please, consider that a manual-DMA extension requires double buffering. + - `arg-name` – The name of a kernel parameter in the kernel signature. + - `type` – Node type. Currently, `local_data` is the only supported value, which defines buffer allocated in fast local on-chip memory. It is limited to 100KB for all `__local` and + `__private` arrays defined inside the kernel as well as all `__local` parameters passed to the kernel. Note that a manual-DMA extension requires double buffering. If the custom layer is detected to run out of local memory, the inference fails. - `dim` – The dim source with the same `direction,port` format used for `WorkSizes` bindings. - `size` – Amount of bytes needed. The current expression syntax supports only expression over dimensions of over selected input/output tensor or constants and may be extended in the future. @@ -177,7 +177,7 @@ config["VPU_CUSTOM_LAYERS"] = "/path/to/your/customLayers.xml"; auto exeNetwork = core.LoadNetwork(cnnNetwork, "MYRIAD", networkConfig); ``` -## Optimizing Kernels with OpenCL™ for VPU (Intel® Neural Compute Stick 2) +## Optimizing Kernels with OpenCL for VPU (Intel® Neural Compute Stick 2) This section provides optimization guidelines on writing custom layers with OpenCL for VPU devices. Knowledge about general OpenCL programming model and OpenCL kernel language is assumed and not a subject of this section. The OpenCL model mapping to VPU is described in the table below. @@ -196,9 +196,9 @@ work grid among available compute resources and executes them in an arbitrary or 1. Split work evenly across work groups. 2. Adjust work group granularity to maintain equal workload for all compute codes. -3. Set the maximum number of cores (using the `max-shaves` attribute for the `CustomLayer` node). This keeps more resources for the rest of topology. It is also useful if the kernel scalability reached its limits, which may happen while optimizing memory bound kernels or kernels with poor parallelization. +3. Set the maximum number of cores using the `max-shaves` attribute for the `CustomLayer` node. This keeps more resources for the rest of topology. It is also useful if the kernel scalability reached its limits, which may happen while optimizing memory bound kernels or kernels with poor parallelization. 4. Try an alternate data layout (`BFXY`/`BYXF`) for the kernel if it improves work group partitioning or data access patterns. -Consider full topology performance (not just specific layer boost) since data conversion layers would be automatically inserted +Consider not just specific layer boost, but full topology performance because data conversion layers would be automatically inserted as appropriate. Offline OpenCL compiler (`clc`) features automatic vectorization over `get_global_id(0)` usage, if uniform access is detected. @@ -218,11 +218,11 @@ patterns. WGV works if and only if vector types are not used in the code. Here is a short list of optimization tips: 1. Help auto-vectorizer ensure non-aliasing pointers for kernel parameters by putting `restrict` where possible. - - This may give a performance boost, especially for kernels with unrolling, like `ocl_grn` from the example below. + - This can give a performance boost, especially for kernels with unrolling, like `ocl_grn` from the example below. - Place `restrict` markers for kernels with manually vectorized codes. In the `ocl_grn` kernel below, the unrolled version without `restrict` is up to 20% slower than the most optimal one, which combines unrolling and `restrict`. -2. Put `#‍pragma unroll N` to your loop header. Since the compiler does not trigger unrolling by default, it is your responsibility to +2. Put `#‍pragma unroll N` to your loop header. The compiler does not trigger unrolling by default, so it is your responsibility to annotate the code with pragmas as appropriate. The `ocl_grn` version with `#‍pragma unroll 4` is up to 50% faster, most of which comes from unrolling the first loop, because LLVM, in general, is better in scheduling 3-stage loops (load-compute-store), while the fist loop - `variance += (float)(src_data[c*H*W + y*W + x] * src_data[c*H*W + y*W + x]);` is only 2-stage (load-compute). Please, pay + `variance += (float)(src_data[c*H*W + y*W + x] * src_data[c*H*W + y*W + x]);` is only 2-stage (load-compute). Pay attention to unrolling such cases first. Unrolling factor is loop-dependent. Choose the smallest number that still improves performance as an optimum between the kernel size and execution speed. For this specific kernel, changing the unroll factor from `4`to `6` results in the same performance, so unrolling factor equal to 4 is an optimum. For Intel® Neural Compute Stick 2, unrolling is conjugated with the automatic software pipelining for load, store, and compute stages: ```cpp @@ -294,15 +294,15 @@ __kernel void ocl_grn_line(__global const half* restrict src_data, __global hal Both versions perform the same, but the second one has more complex code. 3. If it is easy to predict the work group size, you can also use the `reqd_work_group_size` kernel attribute to ask the compiler -to unroll the code up to local size of the work group. Please note that if the kernel is actually executed with the +to unroll the code up to the local size of the work group. Note that if the kernel is actually executed with the different work group configuration, the result is undefined. -4. Prefer to use the `half` compute, if it keeps reasonable accuracy. 16-bit float is a native type for Intel® Neural Compute Stick 2, most of the functions `half_*` are mapped to a single hardware instruction. +4. Prefer to use the `half` compute if it keeps reasonable accuracy. 16-bit float is a native type for Intel® Neural Compute Stick 2, most of the functions `half_*` are mapped to a single hardware instruction. Use the standard `native_*` function for the rest of types. -5. Prefer to use the `convert_half` function over `vstore_half` if conversion to 32-bit float is required. `convert_half` is mapped to a single hardware instruction. For the `cvtf32f16` kernel above, the line `outImage[idx] = convert_half(inImage[idx]*scale+bais);` is 8 times slower than the code with `vstore_half`. +5. Prefer to use the `convert_half` function over `vstore_half` if conversion to 32-bit float is required. `convert_half` is mapped to a single hardware instruction. For the `cvtf32f16` kernel above, the line `outImage[idx] = convert_half(inImage[idx]*scale+bais);` is eight times slower than the code with `vstore_half`. -6. Mind early exits. Early exit may be extremely costly for the current version of the `clc` compiler due to conflicts with the +6. Mind early exits. Early exit can be extremely costly for the current version of the `clc` compiler due to conflicts with the auto-vectorizer. The generic advice would be to setup local size by `x` dimension equal to inputs or/and outputs width. If it is impossible to define the work grid that exactly matches inputs or/and outputs to eliminate checks, for example, `if (get_global_id(0) >= width) return`, use line-wise kernel variant with manual vectorization. @@ -333,9 +333,9 @@ The kernel example below demonstrates the impact of early exits on kernel perfor out[W*H*c + W*h + w] = src[W2*H2*c2 + W2*h2 + w2]; } ``` -This `reorg` kernel is auto-vectorizable, but an input for YOLO v2 topology is `NCHW=<1,64,26,26>` and it is not multiple of vector width (which is `8` for `half` data type). As a result, the Inference Engine does not select the auto-vectorized kernel. -To compare performance of auto-vectorized and scalar version of the kernel, change the input size to`NCHW=<1,64,26,32>`. This allows the auto-vectorized version to be selected by the Inference Engine and can give you about 30% uplift. -Since the auto-vectorized version is faster, it makes sense to enable it for the YOLO v2 topology input size by setting the local size multiple of vector (e.g. 32) and adjust global sizes accordingly. As a result, the execution work grid exceeds actual input dimension, so out-of-bound checks should be inserted. See the updated kernel version below: +This `reorg` kernel is auto-vectorizable, but an input for YOLO v2 topology is `NCHW=<1,64,26,26>` and it is not multiple of vector width, which is `8` for `half` data type. As a result, the Inference Engine does not select the auto-vectorized kernel. +To compare performance of auto-vectorized and scalar version of the kernel, change the input size to`NCHW=<1,64,26,32>`. This enables the auto-vectorized version to be selected by the Inference Engine and can give you about 30% uplift. +Since the auto-vectorized version is faster, it makes sense to enable it for the YOLO v2 topology input size by setting the local size multiple of vector, for example, 32, and adjust global sizes accordingly. As a result, the execution work grid exceeds actual input dimension, so out-of-bound checks should be inserted. See the updated kernel version below: ```cpp // Version with out-of-bound checks added __kernel void reorg(const __global half* restrict src, __global half* restrict out, int W, int stride) @@ -445,7 +445,7 @@ from/to a `__blobal` pointer since work-group copying could be done in a vector } } ``` -This kernel can be rewritten to introduce special data binding `__dma_preload` and `__dma_postwrite intrinsics`. This means that instead of one kernel, a group of three kernels should be implemented: `kernelName`, `__dma_preload_kernelName` and `__dma_postwrite_kernelName`. `__dma_preload_kernelName` for a particular work group `n` is guaranteed to be executed before `n`-th work group itself, while `__dma_postwrite_kernelName` is guaranteed to be executed after a corresponding work group. You can define one of those functions that are intended to be used to copy data from-to `__global` and `__local` memory. The syntactics requires exact functional signature match. The example below illustrates how to prepare your kernel for manual-DMA. +This kernel can be rewritten to introduce special data binding `__dma_preload` and `__dma_postwrite intrinsics`. This means that instead of one kernel, a group of three kernels should be implemented: `kernelName`, `__dma_preload_kernelName`, and `__dma_postwrite_kernelName`. `__dma_preload_kernelName` for a particular work group `n` is guaranteed to be executed before the `n`-th work group itself, while `__dma_postwrite_kernelName` is guaranteed to be executed after a corresponding work group. You can define one of those functions that are intended to be used to copy data from-to `__global` and `__local` memory. The syntactics requires exact functional signature match. The example below illustrates how to prepare your kernel for manual-DMA. ```cpp __kernel void __dma_preload_grn_NCHW( __global const half* restrict src, @@ -612,7 +612,7 @@ __kernel void grn_NCHW( } ``` -Please note `get_local_size` and `get_local_id` usage inside the kernel. 21x speedup is expected for a kernel on enet-curbs setup since it was completely limited by memory usage. +Note the `get_local_size` and `get_local_id` usage inside the kernel. 21x speedup is expected for a kernel on enet-curbs setup because it was completely limited by memory usage. An alternative method of using DMA is to use work item copy extension. Those functions are executed inside a kernel and requires work groups equal to single work item. diff --git a/docs/IE_DG/img/applying_low_latency.png b/docs/IE_DG/img/applying_low_latency.png new file mode 100755 index 00000000000000..bad3a9ef90dc9a --- /dev/null +++ b/docs/IE_DG/img/applying_low_latency.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4f6e9d35869fa2c414e58914aaec1607eb7d4768b69c0cbcce5d5fa3ceddba3 +size 56444 diff --git a/docs/IE_DG/img/low_latency_limitation_1.png b/docs/IE_DG/img/low_latency_limitation_1.png new file mode 100755 index 00000000000000..8aea64eacd76d2 --- /dev/null +++ b/docs/IE_DG/img/low_latency_limitation_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28f4e7ee50785e9c571725942e67c899d08e87af3802f6bea4721c64bfdb2bac +size 21722 diff --git a/docs/IE_DG/img/low_latency_limitation_2.png b/docs/IE_DG/img/low_latency_limitation_2.png new file mode 100755 index 00000000000000..3fea1052da815a --- /dev/null +++ b/docs/IE_DG/img/low_latency_limitation_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0923af3acfb69dd0b88a5edf097e60c2655828b643d8e328561b13b0196c0850 +size 47997 diff --git a/docs/IE_DG/img/state_network_example.png b/docs/IE_DG/img/state_network_example.png new file mode 100644 index 00000000000000..fde28abd820577 --- /dev/null +++ b/docs/IE_DG/img/state_network_example.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9976341ca931f3ab4e4fbccea26844b738adb27b091149a4c6231eda841ab867 +size 144541 diff --git a/docs/IE_DG/inference_engine_intro.md b/docs/IE_DG/inference_engine_intro.md index 41e8711e366acb..d23f168ba5131c 100644 --- a/docs/IE_DG/inference_engine_intro.md +++ b/docs/IE_DG/inference_engine_intro.md @@ -38,7 +38,7 @@ This library contains the classes to: ### Plugin Libraries to read a network object ### Starting from 2020.4 release, Inference Engine introduced a concept of `CNNNetwork` reader plugins. Such plugins can be automatically dynamically loaded by Inference Engine in runtime depending on file format: -* Linux* OS: +* Unix* OS: - `libinference_engine_ir_reader.so` to read a network from IR - `libinference_engine_onnx_reader.so` to read a network from ONNX model format * Windows* OS: diff --git a/docs/IE_DG/network_state_intro.md b/docs/IE_DG/network_state_intro.md new file mode 100644 index 00000000000000..e55b081a9dd97a --- /dev/null +++ b/docs/IE_DG/network_state_intro.md @@ -0,0 +1,336 @@ +Introduction to OpenVINO state API {#openvino_docs_IE_DG_network_state_intro} +============================== + +This section describes how to work with stateful networks in OpenVINO toolkit, specifically: +* How stateful networks are represented in IR and nGraph +* How operations with state can be done + +The section additionally provides small examples of stateful network and code to infer it. + +## What is a stateful network + + Several use cases require processing of data sequences. When length of a sequence is known and small enough, + we can process it with RNN like networks that contain a cycle inside. But in some cases, like online speech recognition of time series + forecasting, length of data sequence is unknown. Then data can be divided in small portions and processed step-by-step. But dependency + between data portions should be addressed. For that, networks save some data between inferences - state. When one dependent sequence is over, + state should be reset to initial value and new sequence can be started. + + Several frameworks have special API for states in networks. For example, Keras have special option for RNNs `stateful` that turns on saving state + between inferences. Kaldi contains special specifier `Offset` to define time offset in a network. + + OpenVINO also contains special API to simplify work with networks with states. State is automatically saved between inferences, + and there is a way to reset state when needed. You can also read state or set it to some new value between inferences. + +## OpenVINO state representation + + OpenVINO contains a special abstraction `Variable` to represent a state in a network. There are two operations to work with the state: +* `Assign` to save value in state +* `ReadValue` to read value saved on previous iteration + +You can find more details on these operations in [ReadValue specification](../ops/infrastructure/ReadValue_3.md) and +[Assign specification](../ops/infrastructure/Assign_3.md). + +## Examples of representation of a network with states + +To get a model with states ready for inference, you can convert a model from another framework to IR with Model Optimizer or create an nGraph function +(details can be found in [Build nGraph Function section](../nGraph_DG/build_function.md)). +Let's represent the following graph in both forms: +![state_network_example] + +### Example of IR with state + +The `bin` file for this graph should contain float 0 in binary form. Content of `xml` is the following. + +```xml + + + + + + + + 1 + 1 + + + + + + + + 1 + 1 + + + + + 1 + 1 + + + + + + + + 1 + 1 + + + + + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + + + + + + 1 + 1 + + + + + + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + +``` + +### Example of creating model nGraph API + +```cpp + #include + #include + // ... + + auto arg = make_shared(element::f32, Shape{1, 1}); + auto init_const = ngraph::opset6::Constant::create(element::f32, Shape{1, 1}, {0}); + + // The ReadValue/Assign operations must be used in pairs in the network. + // For each such a pair, its own variable object must be created. + const std::string variable_name("variable0"); + auto variable = std::make_shared(VariableInfo{PartialShape::dynamic(), element::dynamic, variable_name}); + + // Creating ngraph::function + auto read = make_shared(init_const, variable); + std::vector> args = {arg, read}; + auto add = make_shared(arg, read); + auto assign = make_shared(add, variable); + auto add2 = make_shared(add, read); + auto res = make_shared(add2); + + auto f = make_shared(ResultVector({res}), ParameterVector({arg}), SinkVector({assign})); +``` + +In this example, `SinkVector` is used to create `ngraph::Function`. For network with states, except inputs and outputs, `Assign` nodes should also point to `Function` +to avoid deleting it during graph transformations. You can do it with the constructor, as shown in the example, or with the special method `add_sinks(const SinkVector& sinks)`. Also you can delete +sink from `ngraph::Function` after deleting the node from graph with the `delete_sink()` method. + +## OpenVINO state API + + Inference Engine has the `InferRequest::QueryState` method to get the list of states from a network and `IVariableState` interface to operate with states. Below you can find brief description of methods and the workable example of how to use this interface. + is below and next section contains small workable example how this interface can be used. + + * `std::string GetName() const` + returns name(variable_id) of according Variable + * `void Reset()` + reset state to default value + * `void SetState(Blob::Ptr newState)` + set new value for state + * `Blob::CPtr GetState() const` + returns current value of state + +## Example of stateful network inference + +Let's take an IR from the previous section example. The example below demonstrates inference of two independent sequences of data. State should be reset between these sequences. + +One infer request and one thread +will be used in this example. Using several threads is possible if you have several independent sequences. Then each sequence can be processed in its own infer +request. Inference of one sequence in several infer requests is not recommended. In one infer request state will be saved automatically between inferences, but +if the first step is done in one infer request and the second in another, state should be set in new infer request manually (using `IVariableState::SetState` method). + +@snippet openvino/docs/snippets/InferenceEngine_network_with_state_infer.cpp part1 + +You can find more powerful examples demonstrating how to work with networks with states in speech sample and demo. +Decsriptions can be found in [Samples Overview](./Samples_Overview.md) + +[state_network_example]: ./img/state_network_example.png + + +## LowLatency transformation + +If the original framework does not have a special API for working with states, after importing the model, OpenVINO representation will not contain Assign/ReadValue layers. For example, if the original ONNX model contains RNN operations, IR will contain TensorIterator operations and the values will be obtained only after the execution of whole TensorIterator primitive, intermediate values from each iteration will not be available. To be able to work with these intermediate values of each iteration and receive them with a low latency after each infer request, a special LowLatency transformation was introduced. + +LowLatency transformation changes the structure of the network containing [TensorIterator](../ops/infrastructure/TensorIterator_1.md) and [Loop](../ops/infrastructure/Loop_5.md) by adding the ability to work with the state, inserting the Assign/ReadValue layers as it is shown in the picture below. + +![applying_low_latency_example](./img/applying_low_latency.png) + +After applying the transformation, ReadValue operations can receive other operations as an input, as shown in the picture above. These inputs should set the initial value for initialization of ReadValue operations. However, such initialization is not supported in the current State API implementation. Input values are ignored and the initial values for the ReadValue operations are set to zeros unless otherwise specified by the user via [State API](#openvino-state-api). + +### Steps to apply LowLatency transformation + +1. Get CNNNetwork. Any way is acceptable: + + * [from IR or ONNX model](Integrate_with_customer_application_new_API.md#integration-steps) + * [from nGraph Function](../nGraph_DG/build_function.md) + +2. [Reshape](ShapeInference) CNNNetwork network if necessary +**Necessary case:** the sequence_lengths dimension of input > 1, it means the TensorIterator layer will have number_iterations > 1. We should reshape the inputs of the network to set sequence_dimension exactly to 1. + +Usually, the following exception, which occurs after applying a transform when trying to infer the network in a plugin, indicates the need to apply reshape feature: `C++ exception with description "Function is incorrect. Assign and ReadValue operations must be used in pairs in the network."` +This means that there are several pairs of Assign/ReadValue operations with the same variable_id in the network, operations were inserted into each iteration of the TensorIterator. + +```cpp + +// Network before reshape: Parameter (name: X, shape: [2 (sequence_lengths), 1, 16]) -> TensorIterator (num_iteration = 2, axis = 0) -> ... + +cnnNetwork.reshape({"X" : {1, 1, 16}); + +// Network after reshape: Parameter (name: X, shape: [1 (sequence_lengths), 1, 16]) -> TensorIterator (num_iteration = 1, axis = 0) -> ... + +``` + +3. Apply LowLatency transformation +```cpp +#include "ie_transformations.hpp" + +... + +InferenceEngine::LowLatency(cnnNetwork); +``` +**State naming rule:** a name of a state is a concatenation of names: original TensorIterator operation, Parameter of the body, and additional suffix "variable_" + id (0-base indexing, new indexing for each TensorIterator). You can use these rules to predict what the name of the inserted State will be after the transformation is applied. For example: +```cpp + // Precondition in ngraph::function. + // Created TensorIterator and Parameter in body of TensorIterator with names + std::string tensor_iterator_name = "TI_name" + std::string body_parameter_name = "param_name" + std::string idx = "0"; // it's a first variable in the network + + // The State will be named "TI_name/param_name/variable_0" + auto state_name = tensor_iterator_name + "//" + body_parameter_name + "//" + "variable_" + idx; + + InferenceEngine::CNNNetwork cnnNetwork = InferenceEngine::CNNNetwork{function}; + InferenceEngine::LowLatency(cnnNetwork); + + InferenceEngine::ExecutableNetwork executableNetwork = core->LoadNetwork(/*cnnNetwork, targetDevice, configuration*/); + + // Try to find the Variable by name + auto states = executableNetwork.QueryState(); + for (auto& state : states) { + auto name = state.GetName(); + if (name == state_name) { + // some actions + } + } +``` +4. Use state API. See sections [OpenVINO state API](#openvino-state-api), [Example of stateful network inference](#example-of-stateful-network-inference). + + +### Known limitations +1. Parameters connected directly to ReadValues (States) after the transformation is applied are not allowed. + + Unnecessary parameters may remain on the graph after applying the transformation. The automatic handling of this case inside the transformation is not possible now. Such Parameters should be removed manually from `ngraph::Function` or replaced with a Constant. + + ![low_latency_limitation_1](./img/low_latency_limitation_1.png) + + **Current solutions:** + * Replace Parameter with Constant (freeze) with the value [0, 0, 0 … 0] via [ModelOptimizer CLI](../MO_DG/prepare_model/convert_model/Converting_Model_General.md) `--input` or `--freeze_placeholder_with_value`. + * Use ngraph API to replace Parameter with Constant. + + ```cpp + // nGraph example. How to replace Parameter with Constant. + auto func = cnnNetwork.getFunction(); + // Creating the new Constant with zero values. + auto new_const = std::make_shared( /*type, shape, std::vector with zeros*/ ); + for (const auto& param : func->get_parameters()) { + // Trying to find the problematic Constant by name. + if (param->get_friendly_name() == "param_name") { + // Replacing the problematic Param with a Constant. + ngraph::replace_node(param, new_const); + // Removing problematic Parameter from ngraph::function + func->remove_parameter(param); + } + } + ``` + +2. Unable to execute reshape precondition to apply the transformation correctly due to hardcoded values of shapes somewhere in the network. + + Networks can be non-reshapable, the most common reason is that the value of shapes is hardcoded in the Constant somewhere in the network. + + ![low_latency_limitation_2](./img/low_latency_limitation_2.png) + + **Current solution:** trim non-reshapable layers via [ModelOptimizer CLI](../MO_DG/prepare_model/convert_model/Converting_Model_General.md) `--input`, `--output`. For example, we can trim the Parameter and the problematic Constant in the picture above, using the following command line option: + `--input Reshape_layer_name`. We can also replace the problematic Constant using ngraph, as shown in the example below. + +```cpp + // nGraph example. How to replace a Constant with hardcoded values of shapes in the network with another one with the new values. + // Assume we know which Constant (const_with_hardcoded_shape) prevents the reshape from being applied. + // Then we can find this Constant by name on the network and replace it with a new one with the correct shape. + auto func = cnnNetwork.getFunction(); + // Creating the new Constant with a correct shape. + // For the example shown in the picture above, the new values of the Constant should be 1, 1, 10 instead of 1, 49, 10 + auto new_const = std::make_shared( /*type, shape, value_with_correct_shape*/ ); + for (const auto& node : func->get_ops()) { + // Trying to find the problematic Constant by name. + if (node->get_friendly_name() == "name_of_non_reshapable_const") { + auto const_with_hardcoded_shape = std::dynamic_pointer_cast(node); + // Replacing the problematic Constant with a new one. Do this for all the problematic Constants in the network, then + // you can apply the reshape feature. + ngraph::replace_node(const_with_hardcoded_shape, new_const); + } + } +``` diff --git a/docs/IE_DG/supported_plugins/CPU.md b/docs/IE_DG/supported_plugins/CPU.md index 3d41c6030f1511..8f75a792adeeb2 100644 --- a/docs/IE_DG/supported_plugins/CPU.md +++ b/docs/IE_DG/supported_plugins/CPU.md @@ -113,8 +113,8 @@ CPU-specific settings: | Parameter name | Parameter values | Default | Description | | :--- | :--- | :--- | :--- | | KEY_CPU_THREADS_NUM | positive integer values| 0 | Specifies the number of threads that CPU plugin should use for inference. Zero (default) means using all (logical) cores| -| KEY_CPU_BIND_THREAD | YES/NUMA/NO | YES | Binds inference threads to CPU cores. 'YES' (default) binding option maps threads to cores - this works best for static/synthetic scenarios like benchmarks. The 'NUMA' binding is more relaxed, binding inference threads only to NUMA nodes, leaving further scheduling to specific cores to the OS. This option might perform better in the real-life/contended scenarios. Note that for the latency-oriented cases (single execution stream, see below) both YES and NUMA options limit number of inference threads to the number of hardware cores (ignoring hyper-threading) on the multi-socket machines. | -| KEY_CPU_THROUGHPUT_STREAMS | KEY_CPU_THROUGHPUT_NUMA, KEY_CPU_THROUGHPUT_AUTO, or positive integer values| 1 | Specifies number of CPU "execution" streams for the throughput mode. Upper bound for the number of inference requests that can be executed simultaneously. All available CPU cores are evenly distributed between the streams. The default value is 1, which implies latency-oriented behavior with all available cores processing requests one by one.
KEY_CPU_THROUGHPUT_NUMA creates as many streams as needed to accommodate NUMA and avoid associated penalties.
KEY_CPU_THROUGHPUT_AUTO creates bare minimum of streams to improve the performance; this is the most portable option if you don't know how many cores your target machine has (and what would be the optimal number of streams). Note that your application should provide enough parallel slack (for example, run many inference requests) to leverage the throughput mode.
Non-negative integer value creates the requested number of streams. If a number of streams is 0, no internal streams are created and user threads are interpreted as stream master threads.| +| KEY_CPU_BIND_THREAD | YES/NUMA/NO | YES | Binds inference threads to CPU cores. 'YES' (default) binding option maps threads to cores - this works best for static/synthetic scenarios like benchmarks. The 'NUMA' binding is more relaxed, binding inference threads only to NUMA nodes, leaving further scheduling to specific cores to the OS. This option might perform better in the real-life/contended scenarios. Note that for the latency-oriented cases (number of the streams is less or equal to the number of NUMA nodes, see below) both YES and NUMA options limit number of inference threads to the number of hardware cores (ignoring hyper-threading) on the multi-socket machines. | +| KEY_CPU_THROUGHPUT_STREAMS | KEY_CPU_THROUGHPUT_NUMA, KEY_CPU_THROUGHPUT_AUTO, or positive integer values| 1 | Specifies number of CPU "execution" streams for the throughput mode. Upper bound for the number of inference requests that can be executed simultaneously. All available CPU cores are evenly distributed between the streams. The default value is 1, which implies latency-oriented behavior for single NUMA-node machine, with all available cores processing requests one by one. On the multi-socket (multiple NUMA nodes) machine, the best latency numbers usually achieved with a number of streams matching the number of NUMA-nodes.
KEY_CPU_THROUGHPUT_NUMA creates as many streams as needed to accommodate NUMA and avoid associated penalties.
KEY_CPU_THROUGHPUT_AUTO creates bare minimum of streams to improve the performance; this is the most portable option if you don't know how many cores your target machine has (and what would be the optimal number of streams). Note that your application should provide enough parallel slack (for example, run many inference requests) to leverage the throughput mode.
Non-negative integer value creates the requested number of streams. If a number of streams is 0, no internal streams are created and user threads are interpreted as stream master threads.| | KEY_ENFORCE_BF16 | YES/NO| YES | The name for setting to execute in bfloat16 precision whenever it is possible. This option lets plugin know to downscale the precision where it sees performance benefits from bfloat16 execution. Such option does not guarantee accuracy of the network, you need to verify the accuracy in this mode separately, based on performance and accuracy results. It should be your decision whether to use this option or not. | > **NOTE**: To disable all internal threading, use the following set of configuration parameters: `KEY_CPU_THROUGHPUT_STREAMS=0`, `KEY_CPU_THREADS_NUM=1`, `KEY_CPU_BIND_THREAD=NO`. diff --git a/docs/IE_DG/supported_plugins/GNA.md b/docs/IE_DG/supported_plugins/GNA.md index 3a1bada28ba68c..f47297571840a4 100644 --- a/docs/IE_DG/supported_plugins/GNA.md +++ b/docs/IE_DG/supported_plugins/GNA.md @@ -66,11 +66,10 @@ For the list of supported layers, see the **GNA** column of the **Supported Laye Limitations include: -- Only 1D convolutions are natively supported in the models converted from: - - [Kaldi](../../MO_DG/prepare_model/convert_model/Convert_Model_From_Kaldi.md) framework - - [TensorFlow](../../MO_DG/prepare_model/convert_model/Convert_Model_From_TensorFlow.md) framework. For TensorFlow models, use the `--disable_nhwc_to_nchw` option when running the Model Optimizer. +- Only 1D convolutions are natively supported. - The number of output channels for convolutions must be a multiple of 4. - Permute layer support is limited to the cases where no data reordering is needed or when reordering is happening for two dimensions, at least one of which is not greater than 8. +- Splits and concatenations are supported for continuous portions of memory (e.g., split of 1,2,3,4 to 1,1,3,4 and 1,1,3,4 or concats of 1,2,3,4 and 1,2,3,5 to 2,2,3,4). #### Experimental Support for 2D Convolutions @@ -78,7 +77,7 @@ The Intel® GNA hardware natively supports only 1D convolution. However, 2D convolutions can be mapped to 1D when a convolution kernel moves in a single direction. GNA Plugin performs such a transformation for Kaldi `nnet1` convolution. From this perspective, the Intel® GNA hardware convolution operation accepts an `NHWC` input and produces an `NHWC` output. Because OpenVINO™ only supports the `NCHW` layout, you may need to insert `Permute` layers before or after convolutions. -For example, the Kaldi model optimizer inserts such a permute after convolution for the [rm_cnn4a network](https://download.01.org/openvinotoolkit/models_contrib/speech/kaldi/rm_cnn4a_smbr/). This `Permute` layer is automatically removed by the GNA Plugin, because the Intel® GNA hardware convolution layer already produces the required `NHWC` result. +For example, the Kaldi model optimizer inserts such a permute after convolution for the [rm_cnn4a network](https://storage.openvinotoolkit.org/models_contrib/speech/2021.2/rm_cnn4a_smbr/). This `Permute` layer is automatically removed by the GNA Plugin, because the Intel® GNA hardware convolution layer already produces the required `NHWC` result. ## Operation Precision diff --git a/docs/IE_DG/supported_plugins/Supported_Devices.md b/docs/IE_DG/supported_plugins/Supported_Devices.md index 27a78279ba40d2..c687e4ae602985 100644 --- a/docs/IE_DG/supported_plugins/Supported_Devices.md +++ b/docs/IE_DG/supported_plugins/Supported_Devices.md @@ -88,7 +88,7 @@ the supported output precision depends on the actual underlying devices. _Gener |:-------------|:------------:|:------------:|:------------:|:------------:| |CPU plugin |Supported |Supported |Supported |Supported | |GPU plugin |Supported |Supported |Supported |Supported | -|VPU plugins |Not supported |Supported |Supported |Supported | +|VPU plugins |Supported |Supported |Supported |Supported | |GNA plugin |Not supported |Supported |Supported |Supported | ### Supported Output Layout @@ -111,9 +111,9 @@ The following layers are supported by the plugins and by [Shape Inference featur | Acosh | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | Activation-Clamp | Supported |Supported\*\*\*| Supported | Supported | Supported | | Activation-ELU | Supported |Supported\*\*\*| Supported | Not Supported | Supported | -| Activation-Exp | Supported |Supported\*\*\*| Not Supported | Supported | Supported | +| Activation-Exp | Supported |Supported\*\*\*| Supported | Supported | Supported | | Activation-Leaky ReLU | Supported |Supported\*\*\*| Supported | Supported | Supported | -| Activation-Not | Supported |Supported\*\*\*| Not Supported | Not Supported | Supported | +| Activation-Not | Supported |Supported\*\*\*| Supported | Not Supported | Supported | | Activation-PReLU | Supported |Supported\*\*\*| Supported | Not Supported | Supported | | Activation-ReLU | Supported |Supported\*\*\*| Supported | Supported | Supported | | Activation-ReLU6 | Supported |Supported\*\*\*| Supported | Not Supported | Supported | @@ -127,7 +127,7 @@ The following layers are supported by the plugins and by [Shape Inference featur | BatchNormalization | Supported | Supported | Supported | Not Supported | Supported | | BinaryConvolution | Supported | Supported | Not Supported | Not Supported | Supported | | Broadcast | Supported | Supported\*\* | Supported | Not Supported | Supported | -| Ceil | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| Ceil | Supported | Supported\*\* | Supported | Not Supported | Supported | | Concat | Supported |Supported\*\*\*| Supported | Supported | Supported | | Const | Supported | Supported | Supported | Supported | Not Supported | | Convolution-Dilated | Supported | Supported | Supported | Not Supported | Supported | @@ -145,8 +145,8 @@ The following layers are supported by the plugins and by [Shape Inference featur | DeformableConvolution | Supported | Supported | Not Supported | Not Supported | Supported | | DepthToSpace | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | DetectionOutput | Supported | Supported\*\* | Supported\* | Not Supported | Supported | -| Eltwise-And | Supported |Supported\*\*\*| Not Supported | Not Supported | Supported | -| Eltwise-Add | Supported |Supported\*\*\*| Not Supported | Not Supported | Supported | +| Eltwise-And | Supported |Supported\*\*\*| Supported | Not Supported | Supported | +| Eltwise-Add | Supported |Supported\*\*\*| Supported | Not Supported | Supported | | Eltwise-Div | Supported |Supported\*\*\*| Supported | Not Supported | Supported | | Eltwise-Equal | Supported |Supported\*\*\*| Supported | Not Supported | Supported | | Eltwise-FloorMod | Supported |Supported\*\*\*| Supported | Not Supported | Supported | @@ -166,12 +166,12 @@ The following layers are supported by the plugins and by [Shape Inference featur | Eltwise-SquaredDiff | Supported |Supported\*\*\*| Supported | Not Supported | Supported | | Eltwise-Sub | Supported |Supported\*\*\*| Supported | Supported | Supported | | Eltwise-Sum | Supported |Supported\*\*\*| Supported | Supported | Supported | -| Erf | Supported | Supported\*\* | Not Supported | Not Supported | Supported | -| Exp | Supported | Supported | Not Supported | Supported | Supported | +| Erf | Supported | Supported\*\* | Supported | Not Supported | Supported | +| Exp | Supported | Supported | Supported | Supported | Supported | | FakeQuantize | Not Supported | Supported | Not Supported | Not Supported | Supported | | Fill | Not Supported | Supported\*\* | Not Supported | Not Supported | Supported | | Flatten | Supported | Supported | Supported | Not Supported | Supported | -| Floor | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| Floor | Supported | Supported\*\* | Supported | Not Supported | Supported | | FullyConnected (Inner Product) | Supported |Supported\*\*\*| Supported | Supported | Supported | | Gather | Supported | Supported\*\* | Supported | Not Supported | Supported | | GatherTree | Not Supported | Supported\*\* | Not Supported | Not Supported | Supported | @@ -191,9 +191,9 @@ The following layers are supported by the plugins and by [Shape Inference featur | Memory | Not Supported | Supported | Not Supported | Supported | Supported | | MVN | Supported | Supported\*\* | Supported\* | Not Supported | Supported | | Neg | Supported | Supported\*\* | Not Supported | Not Supported | Supported | -| NonMaxSuppression | Not Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| NonMaxSuppression | Not Supported | Supported\*\* | Supported | Not Supported | Supported | | Normalize | Supported | Supported\*\* | Supported\* | Not Supported | Supported | -| OneHot | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| OneHot | Supported | Supported\*\* | Supported | Not Supported | Supported | | Pad | Supported | Supported\*\* | Supported\* | Not Supported | Supported | | Permute | Supported | Supported | Supported | Supported\* | Supported | | Pooling(AVG,MAX) | Supported | Supported | Supported | Supported | Supported | @@ -206,17 +206,17 @@ The following layers are supported by the plugins and by [Shape Inference featur | PSROIPooling | Supported | Supported\*\* | Supported | Not Supported | Supported | | Range | Not Supported | Supported\*\* | Not Supported | Not Supported | Supported | | Reciprocal | Supported | Supported\*\* | Not Supported | Not Supported | Supported | -| ReduceAnd | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| ReduceAnd | Supported | Supported\*\* | Supported | Not Supported | Supported | | ReduceL1 | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | ReduceL2 | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | ReduceLogSum | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | ReduceLogSumExp | Supported | Supported\*\* | Not Supported | Not Supported | Supported | -| ReduceMax | Supported | Supported\*\* | Not Supported | Not Supported | Supported | -| ReduceMean | Supported | Supported\*\* | Not Supported | Not Supported | Supported | -| ReduceMin | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| ReduceMax | Supported | Supported\*\* | Supported | Not Supported | Supported | +| ReduceMean | Supported | Supported\*\* | Supported | Not Supported | Supported | +| ReduceMin | Supported | Supported\*\* | Supported | Not Supported | Supported | | ReduceOr | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | ReduceProd | Supported | Supported\*\* | Not Supported | Not Supported | Supported | -| ReduceSum | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| ReduceSum | Supported | Supported\*\* | Supported | Not Supported | Supported | | ReduceSumSquare | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | RegionYolo | Supported | Supported\*\* | Supported | Not Supported | Supported | | ReorgYolo | Supported | Supported\*\* | Supported | Not Supported | Supported | @@ -226,7 +226,7 @@ The following layers are supported by the plugins and by [Shape Inference featur | RNN | Not Supported | Supported | Supported | Not Supported | Not Supported | | ROIPooling | Supported\* | Supported | Supported | Not Supported | Supported | | ScaleShift | Supported |Supported\*\*\*| Supported\* | Supported | Supported | -| ScatterUpdate | Not Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| ScatterUpdate | Not Supported | Supported\*\* | Supported | Not Supported | Supported | | Select | Supported | Supported | Supported | Not Supported | Supported | | Selu | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | ShuffleChannels | Supported | Supported\*\* | Not Supported | Not Supported | Supported | @@ -236,17 +236,17 @@ The following layers are supported by the plugins and by [Shape Inference featur | SimplerNMS | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | Slice | Supported |Supported\*\*\*| Supported | Supported | Supported | | SoftMax | Supported |Supported\*\*\*| Supported | Not Supported | Supported | -| Softplus | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| Softplus | Supported | Supported\*\* | Supported | Not Supported | Supported | | Softsign | Supported | Supported\*\* | Not Supported | Supported | Supported | | SpaceToDepth | Not Supported | Supported\*\* | Not Supported | Not Supported | Supported | | SpatialTransformer | Not Supported | Supported\*\* | Not Supported | Not Supported | Supported | | Split | Supported |Supported\*\*\*| Supported | Supported | Supported | | Squeeze | Supported | Supported\*\* | Supported | Supported | Supported | -| StridedSlice | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| StridedSlice | Supported | Supported\*\* | Supported | Not Supported | Supported | | Tan | Supported | Supported\*\* | Not Supported | Not Supported | Supported | | TensorIterator | Not Supported | Supported | Supported | Supported | Not Supported | | Tile | Supported\*\* |Supported\*\*\*| Supported | Not Supported | Supported | -| TopK | Supported | Supported\*\* | Not Supported | Not Supported | Supported | +| TopK | Supported | Supported\*\* | Supported | Not Supported | Supported | | Unpooling | Supported | Not Supported | Not Supported | Not Supported | Not Supported | | Unsqueeze | Supported | Supported\*\* | Supported | Supported | Supported | | Upsampling | Supported | Not Supported | Not Supported | Not Supported | Not Supported | diff --git a/docs/MO_DG/prepare_model/Supported_Frameworks_Layers.md b/docs/MO_DG/prepare_model/Supported_Frameworks_Layers.md index 6c040532812316..605963f0e09343 100644 --- a/docs/MO_DG/prepare_model/Supported_Frameworks_Layers.md +++ b/docs/MO_DG/prepare_model/Supported_Frameworks_Layers.md @@ -98,7 +98,7 @@ Standard MXNet\* symbols: | InstanceNorm | No | | L2Normalization | only 4D input is supported | | LRN | No | -| LeakyReLU | No | +| LeakyReLU | supported "act_type" = "prelu", "elu", "leaky", "gelu" | | Pad | No | | Pooling | No | | ROIPooling | No | @@ -130,10 +130,11 @@ Standard TensorFlow\* operations: | Asinh | No | | Atanh | No | | AvgPool | No | -| AvgPoolV2 | Supported only for constant kernel_size and strides inputs | +| AvgPoolV2 | Supported only for constant-foldable kernel_size and strides inputs | | BatchToSpaceND | No | | BiasAdd | No | | Bucketize | CPU only | +| BroadcastTo | No | | Cast | No | | Ceil | No | | Concat | No | @@ -181,7 +182,7 @@ Standard TensorFlow\* operations: | MatMul | No | | Max | No | | MaxPool | No | -| MaxPoolV2 | Supported only for constant kernel_size and strides inputs | +| MaxPoolV2 | Supported only for constant-foldable kernel_size and strides inputs | | Maximum | No | | Mean | No | | Merge | Supported only when it is fused to the TensorIterator layer | @@ -233,7 +234,7 @@ Standard TensorFlow\* operations: | Square| No | | Squeeze | The case when squeeze axis is not specified is not supported | | StopGradient | Not needed for shape inference | -| StridedSlice | Supported only for constant begin, end, and strides inputs | +| StridedSlice | Supported only for constant-foldable begin, end, and strides inputs | | Sub | No | | Sum | No | | Swish | No | @@ -254,6 +255,89 @@ Standard TensorFlow\* operations: | ZerosLike | No | +## TensorFlow 2 Keras\* Supported Operations + +Standard TensorFlow 2 Keras\* operations: + +| Operation Name in TensorFlow 2 Keras\* | Limitations| +| :----------| :----------| +| ActivityRegularization | No | +| Add | No | +| AdditiveAttention | No | +| AlphaDropout | No | +| Attention | No | +| Average | No | +| AveragePooling1D | No | +| AveragePooling2D | No | +| AveragePooling3D | No | +| BatchNormalization | No | +| Bidirectional | No | +| Concatenate | No | +| Conv1D | No | +| Conv1DTranspose | Not supported if dilation is not equal to 1 | +| Conv2D | No | +| Conv2DTranspose | No | +| Conv3D | No | +| Conv3DTranspose | No | +| Cropping1D | No | +| Cropping2D | No | +| Cropping3D | No | +| Dense | No | +| DenseFeatures | Not supported for categorical and crossed features | +| DepthwiseConv2D | No | +| Dot | No | +| Dropout | No | +| ELU | No | +| Embedding | No | +| Flatten | No | +| GRU | No | +| GRUCell | No | +| GaussianDropout | No | +| GaussianNoise | No | +| GlobalAveragePooling1D | No | +| GlobalAveragePooling2D | No | +| GlobalAveragePooling3D | No | +| GlobalMaxPool1D | No | +| GlobalMaxPool2D | No | +| GlobalMaxPool3D | No | +| LSTM | No | +| LSTMCell | No | +| Lambda | No | +| LayerNormalization | No | +| LeakyReLU | No | +| LocallyConnected1D | No | +| LocallyConnected2D | No | +| MaxPool1D | No | +| MaxPool2D | No | +| MaxPool3D | No | +| Maximum | No | +| Minimum | No | +| Multiply | No | +| PReLU | No | +| Permute | No | +| RNN | Not supported for some custom cells | +| ReLU | No | +| RepeatVector | No | +| Reshape | No | +| SeparableConv1D | No | +| SeparableConv2D | No | +| SimpleRNN | No | +| SimpleRNNCell | No | +| Softmax | No | +| SpatialDropout1D | No | +| SpatialDropout2D | No | +| SpatialDropout3D | No | +| StackedRNNCells | No | +| Subtract | No | +| ThresholdedReLU | No | +| TimeDistributed | No | +| UpSampling1D | No | +| UpSampling2D | No | +| UpSampling3D | No | +| ZeroPadding1D | No | +| ZeroPadding2D | No | +| ZeroPadding3D | No | + ## Kaldi\* Supported Layers Standard Kaldi\* Layers: diff --git a/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_ONNX.md b/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_ONNX.md index 947971369ddb09..6b4e91e2818fa1 100644 --- a/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_ONNX.md +++ b/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_ONNX.md @@ -23,6 +23,7 @@ | VGG19 | [model archive](https://s3.amazonaws.com/download.onnx/models/opset_8/vgg19.tar.gz) | | zfnet512 | [model archive](https://s3.amazonaws.com/download.onnx/models/opset_8/zfnet512.tar.gz) | | GPT-2 | [model archive](https://github.com/onnx/models/blob/master/text/machine_comprehension/gpt-2/model/gpt2-10.tar.gz) | +| YOLOv3 | [model archive](https://github.com/onnx/models/blob/master/vision/object_detection_segmentation/yolov3/model/yolov3-10.tar.gz) | Listed models are built with the operation set version 8 except the GPT-2 model. Models that are upgraded to higher operation set versions may not be supported. diff --git a/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_TensorFlow.md b/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_TensorFlow.md index 7748206c36d09e..97f801bd06b409 100644 --- a/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_TensorFlow.md +++ b/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_TensorFlow.md @@ -35,11 +35,11 @@ Detailed information on how to convert models from the Object Detection Models Zoo is available in the [Converting TensorFlow Object Detection API Models](tf_specific/Convert_Object_Detection_API_Models.md) chapter. The table below contains models from the Object Detection Models zoo that are supported. +Detailed information on how to convert models from the TensorFlow 1 Detection Model Zoo is available in the [Converting TensorFlow Object Detection API Models](tf_specific/Convert_Object_Detection_API_Models.md) chapter. The table below contains models from the Object Detection Models zoo that are supported. -| Model Name| TensorFlow Object Detection API Models (Frozen)| +| Model Name| TensorFlow 1 Object Detection API Models| | :------------- | -----:| |SSD MobileNet V1 COCO\*| [ssd_mobilenet_v1_coco_2018_01_28.tar.gz](http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2018_01_28.tar.gz)| |SSD MobileNet V1 0.75 Depth COCO| [ssd_mobilenet_v1_0.75_depth_300x300_coco14_sync_2018_07_03.tar.gz](http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_0.75_depth_300x300_coco14_sync_2018_07_03.tar.gz)| @@ -68,6 +68,43 @@ Detailed information on how to convert models from the TensorFlow 2 Detection Model Zoo is available in the [Converting TensorFlow Object Detection API Models](tf_specific/Convert_Object_Detection_API_Models.md) chapter. The table below contains models from the Object Detection Models zoo that are supported. + +| Model Name| TensorFlow 2 Object Detection API Models| +| :------------- | -----:| +| EfficientDet D0 512x512 | [efficientdet_d0_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d0_coco17_tpu-32.tar.gz)| +| EfficientDet D1 640x640 | [efficientdet_d1_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d1_coco17_tpu-32.tar.gz)| +| EfficientDet D2 768x768 | [efficientdet_d2_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d2_coco17_tpu-32.tar.gz)| +| EfficientDet D3 896x896 | [efficientdet_d3_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d3_coco17_tpu-32.tar.gz)| +| EfficientDet D4 1024x1024 | [efficientdet_d4_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d4_coco17_tpu-32.tar.gz)| +| EfficientDet D5 1280x1280 | [efficientdet_d5_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d5_coco17_tpu-32.tar.gz)| +| EfficientDet D6 1280x1280 | [efficientdet_d6_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d6_coco17_tpu-32.tar.gz)| +| EfficientDet D7 1536x1536 | [efficientdet_d7_coco17_tpu-32.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d7_coco17_tpu-32.tar.gz)| +| SSD MobileNet v2 320x320 | [ssd_mobilenet_v2_320x320_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_320x320_coco17_tpu-8.tar.gz)| +| SSD MobileNet V1 FPN 640x640 | [ssd_mobilenet_v1_fpn_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v1_fpn_640x640_coco17_tpu-8.tar.gz)| +| SSD MobileNet V2 FPNLite 320x320 | [ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8.tar.gz)| +| SSD MobileNet V2 FPNLite 640x640 | [ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8.tar.gz)| +| SSD ResNet50 V1 FPN 640x640 (RetinaNet50) | [ssd_resnet50_v1_fpn_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet50_v1_fpn_640x640_coco17_tpu-8.tar.gz)| +| SSD ResNet50 V1 FPN 1024x1024 (RetinaNet50) | [ssd_resnet50_v1_fpn_1024x1024_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet50_v1_fpn_1024x1024_coco17_tpu-8.tar.gz)| +| SSD ResNet101 V1 FPN 640x640 (RetinaNet101) | [ssd_resnet101_v1_fpn_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet101_v1_fpn_640x640_coco17_tpu-8.tar.gz)| +| SSD ResNet101 V1 FPN 1024x1024 (RetinaNet101) | [ssd_resnet101_v1_fpn_1024x1024_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet101_v1_fpn_1024x1024_coco17_tpu-8.tar.gz)| +| SSD ResNet152 V1 FPN 640x640 (RetinaNet152) | [ssd_resnet152_v1_fpn_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet152_v1_fpn_640x640_coco17_tpu-8.tar.gz)| +| SSD ResNet152 V1 FPN 1024x1024 (RetinaNet152) | [ssd_resnet152_v1_fpn_1024x1024_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_resnet152_v1_fpn_1024x1024_coco17_tpu-8.tar.gz)| +| Faster R-CNN ResNet50 V1 640x640 | [faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz)| +| Faster R-CNN ResNet50 V1 1024x1024 | [faster_rcnn_resnet50_v1_1024x1024_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet50_v1_1024x1024_coco17_tpu-8.tar.gz)| +| Faster R-CNN ResNet50 V1 800x1333 | [faster_rcnn_resnet50_v1_800x1333_coco17_gpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet50_v1_800x1333_coco17_gpu-8.tar.gz)| +| Faster R-CNN ResNet101 V1 640x640 | [faster_rcnn_resnet101_v1_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet101_v1_640x640_coco17_tpu-8.tar.gz)| +| Faster R-CNN ResNet101 V1 1024x1024 | [faster_rcnn_resnet101_v1_1024x1024_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet101_v1_1024x1024_coco17_tpu-8.tar.gz)| +| Faster R-CNN ResNet101 V1 800x1333 | [faster_rcnn_resnet101_v1_800x1333_coco17_gpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet101_v1_800x1333_coco17_gpu-8.tar.gz)| +| Faster R-CNN ResNet152 V1 640x640 | [faster_rcnn_resnet152_v1_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet152_v1_640x640_coco17_tpu-8.tar.gz)| +| Faster R-CNN ResNet152 V1 1024x1024 | [faster_rcnn_resnet152_v1_1024x1024_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet152_v1_1024x1024_coco17_tpu-8.tar.gz)| +| Faster R-CNN ResNet152 V1 800x1333 | [faster_rcnn_resnet152_v1_800x1333_coco17_gpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet152_v1_800x1333_coco17_gpu-8.tar.gz)| +| Faster R-CNN Inception ResNet V2 640x640 | [faster_rcnn_inception_resnet_v2_640x640_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_inception_resnet_v2_640x640_coco17_tpu-8.tar.gz)| +| Faster R-CNN Inception ResNet V2 1024x1024 | [faster_rcnn_inception_resnet_v2_1024x1024_coco17_tpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_inception_resnet_v2_1024x1024_coco17_tpu-8.tar.gz)| +| Mask R-CNN Inception ResNet V2 1024x1024 | [mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.tar.gz](http://download.tensorflow.org/models/object_detection/tf2/20200711/mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.tar.gz)| + **Supported Frozen Quantized Topologies** The topologies hosted on the TensorFlow\* Lite [site](https://www.tensorflow.org/lite/guide/hosted_models). The frozen model file (`.pb` file) should be fed to the Model Optimizer. @@ -115,6 +152,7 @@ Where `HEIGHT` and `WIDTH` are the input images height and width for which the m | Keras-TCN | [Repo](https://github.com/philipperemy/keras-tcn) | | PRNet | [Repo](https://github.com/YadiraF/PRNet) | | YOLOv4 | [Repo](https://github.com/Ma-Dan/keras-yolo4) | +| STN | [Repo](https://github.com/oarriaga/STN.keras) | * YOLO topologies from DarkNet* can be converted using [instruction](tf_specific/Convert_YOLO_From_Tensorflow.md), * FaceNet topologies can be converted using [instruction](tf_specific/Convert_FaceNet_From_Tensorflow.md). @@ -342,11 +380,9 @@ model = tf.keras.models.load_model('model.h5', custom_objects={'CustomLayer': Cu tf.saved_model.save(model,'model') ``` -Then follow the above instructions for the SavedModel format. - -> **NOTE:** Do not use other hacks to resave TensorFlow* 2 models into TensorFlow* 1 formats. +Then follow the above instructions for the SavedModel format. -> **NOTE**: Currently, OpenVINO™ support for TensorFlow* 2 models is in preview (aka Beta), which means limited and not of production quality yet. OpenVINO™ does not support models with Keras RNN and Embedding layers. +> **NOTE:** Do not use other hacks to resave TensorFlow* 2 models into TensorFlow* 1 formats. ## Custom Layer Definition @@ -360,7 +396,7 @@ See [Custom Layers in the Model Optimizer](../customize_model_optimizer/Customiz * Custom layer implementation details -## Supported TensorFlow\* Layers +## Supported TensorFlow\* and TensorFlow 2 Keras\* Layers Refer to [Supported Framework Layers ](../Supported_Frameworks_Layers.md) for the list of supported standard layers. diff --git a/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_F3Net.md b/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_F3Net.md new file mode 100644 index 00000000000000..ae5a2a9490535f --- /dev/null +++ b/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_F3Net.md @@ -0,0 +1,28 @@ +# Convert PyTorch* F3Net to the Intermediate Representation {#openvino_docs_MO_DG_prepare_model_convert_model_onnx_specific_Convert_F3Net} + +[F3Net](https://github.com/weijun88/F3Net): Fusion, Feedback and Focus for Salient Object Detection + +## Download and Convert the Model to ONNX* + +To download the pretrained model or train the model yourself, refer to the +[instruction](https://github.com/weijun88/F3Net/blob/master/README.md) in the F3Net model repository. Firstly, +convert the model to ONNX\* format. Create and run the script with the following content in the `src` +directory of the model repository: +```python +import torch + +from dataset import Config +from net import F3Net + +cfg = Config(mode='test', snapshot=) +net = F3Net(cfg) +image = torch.zeros([1, 3, 352, 352]) +torch.onnx.export(net, image, 'f3net.onnx', export_params=True, do_constant_folding=True, opset_version=11) +``` +The script generates the ONNX\* model file f3net.onnx. The model conversion was tested with the repository hash commit `eecace3adf1e8946b571a4f4397681252f9dc1b8`. + +## Convert ONNX* F3Net Model to IR + +```sh +./mo.py --input_model /f3net.onnx +``` diff --git a/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_QuartzNet.md b/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_QuartzNet.md new file mode 100644 index 00000000000000..dde3a5688ee7a8 --- /dev/null +++ b/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_QuartzNet.md @@ -0,0 +1,32 @@ +# Convert PyTorch* QuartzNet to the Intermediate Representation {#openvino_docs_MO_DG_prepare_model_convert_model_onnx_specific_Convert_QuartzNet} + +[NeMo project](https://github.com/NVIDIA/NeMo) provides the QuartzNet model. + +## Download the Pre-Trained QuartzNet Model + +To download the pre-trained model, refer to the [NeMo Speech Models Catalog](https://ngc.nvidia.com/catalog/models/nvidia:nemospeechmodels). +Here are the instructions on how to obtain QuartzNet in ONNX* format. +```python +import nemo +import nemo.collections.asr as nemo_asr + +quartznet = nemo_asr.models.ASRConvCTCModel.from_pretrained(model_info='QuartzNet15x5-En') +# Export QuartzNet model to ONNX* format +quartznet.export('qn.onnx') +``` +This code produces 3 ONNX* model files: `encoder_qt.onnx`, `decoder_qt.onnx`, `qn.onnx`. +They are `decoder`, `encoder` and a combined `decoder(encoder(x))` models, respectively. + +## Convert ONNX* QuartzNet model to IR + +If using a combined model: +```sh +./mo.py --input_model /qt.onnx --input_shape [B,64,X] +``` +If using separate models: +```sh +./mo.py --input_model /encoder_qt.onnx --input_shape [B,64,X] +./mo.py --input_model /decoder_qt.onnx --input_shape [B,1024,Y] +``` + +Where shape is determined by the audio file Mel-Spectrogram length: B - batch dimension, X - dimension based on the input length, Y - determined by encoder output, usually `X / 2`. diff --git a/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_YOLACT.md b/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_YOLACT.md new file mode 100644 index 00000000000000..162cae36d57f84 --- /dev/null +++ b/docs/MO_DG/prepare_model/convert_model/onnx_specific/Convert_YOLACT.md @@ -0,0 +1,188 @@ +# Convert PyTorch* YOLACT to the Intermediate Representation {#openvino_docs_MO_DG_prepare_model_convert_model_onnx_specific_Convert_YOLACT} + +You Only Look At CoefficienTs (YOLACT) is a simple, fully convolutional model for real-time instance segmentation. +The PyTorch\* implementation is publicly available in [this GitHub* repository](https://github.com/dbolya/yolact). +The YOLACT++ model is not supported, because it uses deformable convolutional layers that cannot be represented in ONNX* format. + +## Create a Patch File + +Before converting the model, create a patch file for the repository. +The patch modifies the framework code by adding a special command-line argument to the framework options that enables inference graph dumping: + +1. Go to a writable directory and create a `YOLACT_onnx_export.patch` file. +2. Copy the following diff code to the file: +```git +From 76deb67d4f09f29feda1a633358caa18335d9e9f Mon Sep 17 00:00:00 2001 +From: "OpenVINO" +Date: Fri, 12 Mar 2021 00:27:35 +0300 +Subject: [PATCH] Add export to ONNX + +--- + eval.py | 5 ++++- + utils/augmentations.py | 7 +++++-- + yolact.py | 29 +++++++++++++++++++---------- + 3 files changed, 28 insertions(+), 13 deletions(-) + +diff --git a/eval.py b/eval.py +index 547bc0a..bde0680 100644 +--- a/eval.py ++++ b/eval.py +@@ -593,9 +593,12 @@ def badhash(x): + return x + + def evalimage(net:Yolact, path:str, save_path:str=None): +- frame = torch.from_numpy(cv2.imread(path)).cuda().float() ++ frame = torch.from_numpy(cv2.imread(path)).float() ++ if torch.cuda.is_available(): ++ frame = frame.cuda() + batch = FastBaseTransform()(frame.unsqueeze(0)) + preds = net(batch) ++ torch.onnx.export(net, batch, "yolact.onnx", opset_version=11) + + img_numpy = prep_display(preds, frame, None, None, undo_transform=False) + +diff --git a/utils/augmentations.py b/utils/augmentations.py +index cc7a73a..2420603 100644 +--- a/utils/augmentations.py ++++ b/utils/augmentations.py +@@ -623,8 +623,11 @@ class FastBaseTransform(torch.nn.Module): + def __init__(self): + super().__init__() + +- self.mean = torch.Tensor(MEANS).float().cuda()[None, :, None, None] +- self.std = torch.Tensor( STD ).float().cuda()[None, :, None, None] ++ self.mean = torch.Tensor(MEANS).float()[None, :, None, None] ++ self.std = torch.Tensor( STD ).float()[None, :, None, None] ++ if torch.cuda.is_available(): ++ self.mean.cuda() ++ self.std.cuda() + self.transform = cfg.backbone.transform + + def forward(self, img): +diff --git a/yolact.py b/yolact.py +index d83703b..f8c787c 100644 +--- a/yolact.py ++++ b/yolact.py +@@ -17,19 +17,22 @@ import torch.backends.cudnn as cudnn + from utils import timer + from utils.functions import MovingAverage, make_net + +-# This is required for Pytorch 1.0.1 on Windows to initialize Cuda on some driver versions. +-# See the bug report here: https://github.com/pytorch/pytorch/issues/17108 +-torch.cuda.current_device() +- +-# As of March 10, 2019, Pytorch DataParallel still doesn't support JIT Script Modules +-use_jit = torch.cuda.device_count() <= 1 +-if not use_jit: +- print('Multiple GPUs detected! Turning off JIT.') ++use_jit = False + + ScriptModuleWrapper = torch.jit.ScriptModule if use_jit else nn.Module + script_method_wrapper = torch.jit.script_method if use_jit else lambda fn, _rcn=None: fn + + ++def decode(loc, priors): ++ variances = [0.1, 0.2] ++ boxes = torch.cat((priors[:, :2] + loc[:, :, :2] * variances[0] * priors[:, 2:], priors[:, 2:] * torch.exp(loc[:, :, 2:] * variances[1])), 2) ++ ++ boxes_result1 = boxes[:, :, :2] - boxes[:, :, 2:] / 2 ++ boxes_result2 = boxes[:, :, 2:] + boxes[:, :, :2] ++ boxes_result = torch.cat((boxes_result1, boxes_result2), 2) ++ ++ return boxes_result ++ + + class Concat(nn.Module): + def __init__(self, nets, extra_params): +@@ -476,7 +479,10 @@ class Yolact(nn.Module): + + def load_weights(self, path): + """ Loads weights from a compressed save file. """ +- state_dict = torch.load(path) ++ if torch.cuda.is_available(): ++ state_dict = torch.load(path) ++ else: ++ state_dict = torch.load(path, map_location=torch.device('cpu')) + + # For backward compatability, remove these (the new variable is called layers) + for key in list(state_dict.keys()): +@@ -673,8 +679,11 @@ class Yolact(nn.Module): + else: + pred_outs['conf'] = F.softmax(pred_outs['conf'], -1) + +- return self.detect(pred_outs, self) ++ pred_outs['boxes'] = decode(pred_outs['loc'], pred_outs['priors']) # decode output boxes + ++ pred_outs.pop('priors') # remove unused in postprocessing layers ++ pred_outs.pop('loc') # remove unused in postprocessing layers ++ return pred_outs + + + +-- +``` +3. Save and close the file. + +## Convert YOLACT Model to the Intermediate Representation (IR) format + +**Step 1**. Clone the GitHub repository and check out the commit: + +1. Clone the YOLACT repository: +```sh +git clone https://github.com/dbolya/yolact +``` +2. Check out the necessary commit: +```sh +git checkout 57b8f2d95e62e2e649b382f516ab41f949b57239 +``` + +**Step 2**. Download a pretrained model, for example `yolact_base_54_800000.pth`. + +**Step 3**. Export the model to ONNX* format. + +1. Apply the `YOLACT_onnx_export.patch` patch to the repository. Refer to the Create a Patch File instructions if you do not have it: +```sh +git apply /path/to/patch/YOLACT_onnx_export.patch +``` + +2. Evaluate the YOLACT model to export it to ONNX* format: + +```sh +python3 eval.py \ + --trained_model=/path/to/yolact_base_54_800000.pth \ + --score_threshold=0.3 \ + --top_k=10 \ + --image=/path/to/image.jpg +``` + +3. You should get `yolact.onnx` file. + +**Step 4**. Convert the model to the IR: + +```sh +python path/to/model_optimizer/mo.py --input_model /path/to/yolact.onnx +``` + +**Step 4**. Embed input preprocessing into the IR: + +To get performance gain by offloading to the OpenVINO application of mean/scale values and RGB->BGR conversion, use the following options of the Model Optimizer (MO): + +* If the backbone of the model is Resnet50-FPN or Resnet101-FPN, use the following MO command line: + +```sh +python path/to/model_optimizer/mo.py \ + --input_model /path/to/yolact.onnx \ + --reverse_input_channels \ + --mean_values "[123.68, 116.78, 103.94]" \ + --scale_values "[58.40, 57.12, 57.38]" +``` + +* If the backbone of the model is Darknet53-FPN, use the following MO command line: + +```sh +python path/to/model_optimizer/mo.py \ + --input_model /path/to/yolact.onnx \ + --reverse_input_channels \ + --scale 255 +``` + diff --git a/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_Object_Detection_API_Models.md b/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_Object_Detection_API_Models.md index a7880220c94af6..e2886e272e0206 100644 --- a/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_Object_Detection_API_Models.md +++ b/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_Object_Detection_API_Models.md @@ -18,27 +18,30 @@ To convert a TensorFlow\* Object Detection API model, go to the `/d * `--input_model ` --- File with a pre-trained model (binary or text .pb file after freezing) OR `--saved_model_dir ` for the TensorFlow\* 2 models * `--transformations_config ` --- A subgraph replacement configuration file with transformations description. For the models downloaded from the TensorFlow\* Object Detection API zoo, you can find the configuration files in the `/deployment_tools/model_optimizer/extensions/front/tf` directory. Use: * `ssd_v2_support.json` --- for frozen SSD topologies from the models zoo version up to 1.13.X inclusively - * `ssd_support_api_v.1.14.json` --- for frozen SSD topologies trained using the TensorFlow\* Object Detection API version 1.14 up to 1.14.X inclusively - * `ssd_support_api_v.1.15.json` --- for frozen SSD topologies trained using the TensorFlow\* Object Detection API version 1.15 up to 2.0 - * `ssd_support_api_v.2.0.json` --- for frozen SSD topologies trained using the TensorFlow\* Object Detection API version 2.0 or higher - * `faster_rcnn_support.json` --- for frozen Faster R-CNN topologies from the models zoo + * `ssd_support_api_v.1.14.json` --- for SSD topologies trained using the TensorFlow\* Object Detection API version 1.14 up to 1.14.X inclusively + * `ssd_support_api_v.1.15.json` --- for SSD topologies trained using the TensorFlow\* Object Detection API version 1.15 up to 2.0 + * `ssd_support_api_v.2.0.json` --- for SSD topologies trained using the TensorFlow\* Object Detection API version 2.0 up to 2.3.X inclusively + * `ssd_support_api_v.2.4.json` --- for SSD topologies trained using the TensorFlow\* Object Detection API version 2.4 or higher + * `efficient_det_support_api_v.2.0.json` --- for EfficientDet topologies trained using the TensorFlow\* Object Detection API version 2.0 up to 2.3.X inclusively + * `efficient_det_support_api_v.2.4.json` --- for EfficientDet topologies trained using the TensorFlow\* Object Detection API version 2.4 or higher + * `faster_rcnn_support.json` --- for Faster R-CNN topologies from the TF 1.X models zoo trained with TensorFlow\* version up to 1.6.X inclusively * `faster_rcnn_support_api_v1.7.json` --- for Faster R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.7.0 up to 1.9.X inclusively * `faster_rcnn_support_api_v1.10.json` --- for Faster R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.10.0 up to 1.12.X inclusively * `faster_rcnn_support_api_v1.13.json` --- for Faster R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.13.X * `faster_rcnn_support_api_v1.14.json` --- for Faster R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.14.0 up to 1.14.X inclusively * `faster_rcnn_support_api_v1.15.json` --- for Faster R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.15.0 up to 2.0 * `faster_rcnn_support_api_v2.0.json` --- for Faster R-CNN topologies trained using the TensorFlow\* Object Detection API version 2.0 or higher - * `mask_rcnn_support.json` --- for frozen Mask R-CNN topologies from the models zoo + * `mask_rcnn_support.json` --- for Mask R-CNN topologies from the TF 1.X models zoo trained with TensorFlow\* version 1.9.0 or lower. * `mask_rcnn_support_api_v1.7.json` --- for Mask R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.7.0 up to 1.9.X inclusively * `mask_rcnn_support_api_v1.11.json` --- for Mask R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.11.0 up to 1.12.X inclusively * `mask_rcnn_support_api_v1.13.json` --- for Mask R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.13.0 up to 1.13.X inclusively * `mask_rcnn_support_api_v1.14.json` --- for Mask R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.14.0 up to 1.14.X inclusively * `mask_rcnn_support_api_v1.15.json` --- for Mask R-CNN topologies trained using the TensorFlow\* Object Detection API version 1.15.0 up to 2.0 * `mask_rcnn_support_api_v2.0.json` --- for Mask R-CNN topologies trained using the TensorFlow\* Object Detection API version 2.0 or higher - * `rfcn_support.json` --- for the frozen RFCN topology from the models zoo frozen with TensorFlow\* version 1.9.0 or lower. - * `rfcn_support_api_v1.10.json` --- for the frozen RFCN topology from the models zoo frozen with TensorFlow\* version 1.10.0 up to 1.12.X inclusively - * `rfcn_support_api_v1.13.json` --- for the frozen RFCN topology from the models zoo frozen with TensorFlow\* version 1.13.X. - * `rfcn_support_api_v1.14.json` --- for the frozen RFCN topology from the models zoo frozen with TensorFlow\* version 1.14.0 or higher. + * `rfcn_support.json` --- for RFCN topology from the models zoo trained with TensorFlow\* version up to 1.9.X inclusively + * `rfcn_support_api_v1.10.json` --- for RFCN topology from the models zoo frozen with TensorFlow\* version 1.10.0 up to 1.12.X inclusively + * `rfcn_support_api_v1.13.json` --- for RFCN topology from the models zoo frozen with TensorFlow\* version 1.13.X + * `rfcn_support_api_v1.14.json` --- for RFCN topology from the models zoo frozen with TensorFlow\* version 1.14.0 or higher * `--tensorflow_object_detection_api_pipeline_config ` --- A special configuration file that describes the topology hyper-parameters and structure of the TensorFlow Object Detection API model. For the models downloaded from the TensorFlow\* Object Detection API zoo, the configuration file is named `pipeline.config`. If you plan to train a model yourself, you can find templates for these files in the [models repository](https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs). * `--input_shape` (optional) --- A custom input image shape. Refer to [Custom Input Shape](#tf_od_custom_input_shape) for more information how the `--input_shape` parameter is handled for the TensorFlow* Object Detection API models. @@ -96,7 +99,7 @@ def calculate_shape_keeping_aspect_ratio(H: int, W: int, min_dimension: int, max Models with `keep_aspect_ratio_resizer` were trained to recognize object in real aspect ratio, in contrast with most of the classification topologies trained to recognize objects stretched vertically and horizontally as well. By default, the Model Optimizer converts topologies with `keep_aspect_ratio_resizer` to consume a square input image. If the non-square image is provided as input, it is stretched without keeping aspect ratio that results to objects detection quality decrease. -> **NOTE**: It is highly recommended to specify the `--input_shape` command line parameter for the models with `keep_aspect_ratio_resizer` if the input image dimensions are known in advance. +> **NOTE**: It is highly recommended specifying the `--input_shape` command line parameter for the models with `keep_aspect_ratio_resizer` if the input image dimensions are known in advance. ## Important Notes About Feeding Input Images to the Samples diff --git a/docs/doxygen/build_main_layout.py b/docs/doxygen/build_main_layout.py index e566d70435ac8f..e8a23d729b54fc 100644 --- a/docs/doxygen/build_main_layout.py +++ b/docs/doxygen/build_main_layout.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import argparse import os diff --git a/docs/doxygen/doxy_md_filter.py b/docs/doxygen/doxy_md_filter.py index 80a77e14ff2953..5969063167554e 100644 --- a/docs/doxygen/doxy_md_filter.py +++ b/docs/doxygen/doxy_md_filter.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os import re diff --git a/docs/doxygen/ie_docs.xml b/docs/doxygen/ie_docs.xml index b7636009e5dc0f..a6f5dd3250c818 100644 --- a/docs/doxygen/ie_docs.xml +++ b/docs/doxygen/ie_docs.xml @@ -53,6 +53,9 @@ limitations under the License. + + + @@ -81,6 +84,7 @@ limitations under the License. + @@ -124,6 +128,7 @@ limitations under the License. + @@ -132,6 +137,11 @@ limitations under the License. + + + + + @@ -141,9 +151,11 @@ limitations under the License. + + @@ -151,6 +163,7 @@ limitations under the License. + @@ -215,12 +228,13 @@ limitations under the License. + - + @@ -283,6 +297,7 @@ limitations under the License. + diff --git a/docs/doxygen/log.py b/docs/doxygen/log.py index 4455fc321f8831..122ecb8df5702d 100644 --- a/docs/doxygen/log.py +++ b/docs/doxygen/log.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import argparse import os diff --git a/docs/doxygen/pyx_filter.py b/docs/doxygen/pyx_filter.py index 52e34061d9b730..44ae37aedd23a7 100644 --- a/docs/doxygen/pyx_filter.py +++ b/docs/doxygen/pyx_filter.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import re import argparse diff --git a/docs/install_guides/installing-openvino-docker-linux.md b/docs/install_guides/installing-openvino-docker-linux.md index 2228425fe192ef..38d23610f3b903 100644 --- a/docs/install_guides/installing-openvino-docker-linux.md +++ b/docs/install_guides/installing-openvino-docker-linux.md @@ -19,7 +19,9 @@ This guide provides the steps for creating a Docker* image with Intel® Distribu ## Prebuilt images -Prebuilt images are available on [Docker Hub](https://hub.docker.com/u/openvino). +Prebuilt images are available on: +- [Docker Hub](https://hub.docker.com/u/openvino) +- [Quay.io](https://quay.io/organization/openvino) ## Use Docker* Image for CPU @@ -45,7 +47,8 @@ docker run -it --rm - GPU is not available in container by default, you must attach it to the container. - Kernel driver must be installed on the host. - Intel® OpenCL™ runtime package must be included into the container. -- In the container, user must be in the `video` group. +- In the container, non-root user must be in the `video` and `render` groups. To add a user to the render group, follow the [Configuration Guide for the Intel® Graphics Compute Runtime for OpenCL™ on Ubuntu* 20.04](https://github.com/openvinotoolkit/docker_ci/blob/master/configure_gpu_ubuntu20.md). + Before building a Docker* image on GPU, add the following commands to a Dockerfile: @@ -94,6 +97,7 @@ To make GPU available in the container, attach the GPU to the container using `- ```sh docker run -it --rm --device /dev/dri ``` +> **NOTE**: If your host system is Ubuntu 20, follow the [Configuration Guide for the Intel® Graphics Compute Runtime for OpenCL™ on Ubuntu* 20.04](https://github.com/openvinotoolkit/docker_ci/blob/master/configure_gpu_ubuntu20.md). ## Use a Docker* Image for Intel® Neural Compute Stick 2 diff --git a/docs/install_guides/installing-openvino-linux-ivad-vpu.md b/docs/install_guides/installing-openvino-linux-ivad-vpu.md index 405f2f6e32e8bb..ab2962542d8544 100644 --- a/docs/install_guides/installing-openvino-linux-ivad-vpu.md +++ b/docs/install_guides/installing-openvino-linux-ivad-vpu.md @@ -30,7 +30,7 @@ Now the dependencies are installed and you are ready to use the Intel® Vision A ## Optional Steps -* For advanced configuration steps for your IEI Mustang-V100-MX8 accelerator, see [Intel® Movidius™ VPUs Setup Guide for Use with Intel® Distribution of OpenVINO™ toolkit](movidius-setup-guide.md). +* For advanced configuration steps for your **IEI Mustang-V100-MX8-R10** accelerator, see [Intel® Movidius™ VPUs Setup Guide for Use with Intel® Distribution of OpenVINO™ toolkit](movidius-setup-guide.md). **IEI Mustang-V100-MX8-R11** accelerator doesn't require any additional steps. * After you've configured your Intel® Vision Accelerator Design with Intel® Movidius™ VPUs, see [Intel® Movidius™ VPUs Programming Guide for Use with Intel® Distribution of OpenVINO™ toolkit](movidius-programming-guide.md) to learn how to distribute a model across all 8 VPUs to maximize performance. diff --git a/docs/install_guides/installing-openvino-pip.md b/docs/install_guides/installing-openvino-pip.md index 92d7077f5347f0..7e36a0d77563ce 100644 --- a/docs/install_guides/installing-openvino-pip.md +++ b/docs/install_guides/installing-openvino-pip.md @@ -1,82 +1,15 @@ # Install Intel® Distribution of OpenVINO™ Toolkit from PyPI Repository {#openvino_docs_install_guides_installing_openvino_pip} -This guide provides installation steps for the Intel® distribution of OpenVINO™ toolkit distributed through the PyPI repository. +OpenVINO™ toolkit is a comprehensive toolkit for quickly developing applications and solutions that solve a variety of tasks including emulation of human vision, automatic speech recognition, natural language processing, recommendation systems, and many others. Based on latest generations of artificial neural networks, including Convolutional Neural Networks (CNNs), recurrent and attention-based networks, the toolkit extends computer vision and non-vision workloads across Intel® hardware, maximizing performance. It accelerates applications with high-performance, AI and deep learning inference deployed from edge to cloud. -## System Requirements +Intel® Distribution of OpenVINO™ Toolkit provides the following packages available for installation through the PyPI repository: -* [Python* distribution](https://www.python.org/) 3.6 or 3.7 -* Operating Systems: - - Ubuntu* 18.04 long-term support (LTS), 64-bit - - macOS* 10.15.x versions - - Windows 10*, 64-bit Pro, Enterprise or Education (1607 Anniversary Update, Build 14393 or higher) editions - - Windows Server* 2016 or higher - -## Install the Runtime Package Using the PyPI Repository - -### Step 1. Set up and update pip to the highest version - -Run the command below: -```sh -python3 -m pip install --upgrade pip -``` - -### Step 2. Install the Intel® distribution of OpenVINO™ toolkit - -Run the command below: - ```sh - pip install openvino - ``` - -### Step 3. Add PATH to environment variables - -Run a command for your operating system: -- Ubuntu 18.04 and macOS: -```sh -export LD_LIBRARY_PATH=:${LD_LIBRARY_PATH} -``` -- Windows* 10: -```sh -set PATH=;%PATH% -``` -To find `library_dir`: -**Ubuntu, macOS**: -- Standard user: -```sh -echo $(python3 -m site --user-base)/lib -``` -- Root or sudo user: -```sh -/usr/local/lib -``` -- Virtual environments or custom Python installations (from sources or tarball): -```sh -echo $(which python3)/../../lib -``` -**Windows**: -- Standard Python: -```sh -python -c "import os, sys; print((os.path.dirname(sys.executable))+'\Library\\bin')" -``` -- Virtual environments or custom Python installations (from sources or tarball): -```sh -python -c "import os, sys; print((os.path.dirname(sys.executable))+'\..\Library\\bin')" -``` - -### Step 4. Verify that the package is installed - -Run the command below: -```sh -python3 -c "import openvino" -``` - -Now you are ready to develop and run your application. +* Runtime package with the Inference Engine inside: [https://pypi.org/project/openvino/](https://pypi.org/project/openvino/). +* Developers package that includes the runtime package as a dependency, Model Optimizer, Accuracy Checker and Post-Training Optimization Tool: [https://pypi.org/project/openvino-dev](https://pypi.org/project/openvino-dev). ## Additional Resources - [Intel® Distribution of OpenVINO™ toolkit](https://software.intel.com/en-us/openvino-toolkit). -- [OpenVINO™ toolkit online documentation](https://docs.openvinotoolkit.org). - [Model Optimizer Developer Guide](../MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). - [Inference Engine Developer Guide](../IE_DG/Deep_Learning_Inference_Engine_DevGuide.md). -- For more information on Sample Applications, see the [Inference Engine Samples Overview](../IE_DG/Samples_Overview.md). -- [Intel® Distribution of OpenVINO™ toolkit PIP home page](https://pypi.org/project/openvino/) - +- [Inference Engine Samples Overview](../IE_DG/Samples_Overview.md). diff --git a/docs/install_guides/movidius-setup-guide.md b/docs/install_guides/movidius-setup-guide.md index 4c3956266140f5..421dfbab4024a2 100644 --- a/docs/install_guides/movidius-setup-guide.md +++ b/docs/install_guides/movidius-setup-guide.md @@ -1,5 +1,7 @@ # Intel® Movidius™ VPUs Setup Guide for Use with Intel® Distribution of OpenVINO™ toolkit {#openvino_docs_install_guides_movidius_setup_guide} +> **NOTE**: These steps are only required for **IEI Mustang-V100-MX8-R10** card. **IEI Mustang-V100-MX8-R11** card doesn't require any additional steps and it's completely configured using the [general guidance](installing-openvino-linux-ivad-vpu.md). + ## See Also - [Intel® Movidius™ VPUs Programming Guide for use with the Intel® Distribution of OpenVINO™](movidius-programming-guide.md) @@ -9,7 +11,7 @@ - Intel® Vision Accelerator Design with Intel® Movidius™ VPUs Errata The IEI Mustang-V100-MX8 is an OEM version of the Intel® Vision Accelerator Design with Intel® Movidius™ VPUs. -This guide assumes you have installed the [Mustang-V100-MX8](https://download.ieiworld.com/) and the [Intel® Distribution of OpenVINO™ Toolkit](https://software.intel.com/en-us/openvino-toolkit). +This guide assumes you have installed the [Mustang-V100-MX8](https://download.ieiworld.com/) and the [Intel® Distribution of OpenVINO™ Toolkit](https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit.html). Instructions in this guide for configuring your accelerator include: 1. Installing the required IEI\* BSL reset software diff --git a/docs/install_guides/pypi-openvino-dev.md b/docs/install_guides/pypi-openvino-dev.md new file mode 100644 index 00000000000000..3da7e3c1088fd8 --- /dev/null +++ b/docs/install_guides/pypi-openvino-dev.md @@ -0,0 +1,96 @@ +# Intel® Distribution of OpenVINO™ Toolkit Developer Package + +> **LEGAL NOTICE**: Your use of this software and any required dependent software (the +“Software Package”) is subject to the terms and conditions of the [software license agreements](https://software.intel.com/en-us/license/eula-for-intel-software-development-products) for the Software Package, which may also include notices, disclaimers, or +license terms for third party or open source software included in or with the Software Package, and your use indicates your acceptance of all such terms. Please refer to the “third-party-programs.txt” or other similarly-named text file included with the Software Package for additional details. + +## Introduction + +OpenVINO™ toolkit is a comprehensive toolkit for quickly developing applications and solutions that solve a variety of tasks including emulation of human vision, automatic speech recognition, natural language processing, recommendation systems, and many others. Based on latest generations of artificial neural networks, including Convolutional Neural Networks (CNNs), recurrent and attention-based networks, the toolkit extends computer vision and non-vision workloads across Intel® hardware, maximizing performance. It accelerates applications with high-performance, AI and deep learning inference deployed from edge to cloud. + +**The Developer Package Includes the Following Components Installed by Default:** + +| Component | Description | +|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Model Optimizer](https://docs.openvinotoolkit.org/latest/openvino_docs_MO_DG_Deep_Learning_Model_Optimizer_DevGuide.html) | This tool imports, converts, and optimizes models that were trained in popular frameworks to a format usable by Intel tools, especially the Inference Engine. 
Popular frameworks include Caffe\*, TensorFlow\*, MXNet\*, and ONNX\*. | +| Additional Tools | A set of tools to work with your models including [Accuracy Checker utility](https://docs.openvinotoolkit.org/latest/omz_tools_accuracy_checker_README.html), [Post-Training Optimization Tool](https://docs.openvinotoolkit.org/latest/pot_README.html) | + +**The Runtime Package Includes the Following Components Installed by Dependency:** + +| Component | Description | +|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Inference Engine](https://pypi.org/project/openvino) | This is the engine that runs the deep learning model. It includes a set of libraries for an easy inference integration into your applications. | + + +## System Requirements + +The table below lists the supported operating systems and Python* versions required to run the installation. + +| Supported Operating System | [Python* Version (64-bit)](https://www.python.org/) | +| :------------------------------------------------------------| :---------------------------------------------------| +| Ubuntu* 18.04 long-term support (LTS), 64-bit | 3.6, 3.7 | +| Ubuntu* 20.04 long-term support (LTS), 64-bit | 3.6, 3.7 | +| Red Hat* Enterprise Linux* 8.2, 64-bit | 3.6, 3.7 | +| CentOS* 7.4, 64-bit | 3.6, 3.7 | +| macOS* 10.15.x versions | 3.6, 3.7, 3.8 | +| Windows 10*, 64-bit Pro, Enterprise or Education (1607 Anniversary Update, Build 14393 or higher) editions | 3.6, 3.7, 3.8 | +| Windows Server* 2016 or higher | 3.6, 3.7, 3.8 | + +> **NOTE**: This package can be installed on other versions of Linux and Windows OSes, but only the specific versions above are fully validated. + +## Install the Developer Package + +### Step 1. Set Up Python Virtual Environment + +To avoid dependency conflicts, use a virtual environment. Skip this + step only if you do want to install all dependencies globally. + +Create virtual environment: +```sh +python -m pip install --user virtualenv +python -m venv openvino_env --system-site-packages +``` + +> **NOTE**: On Linux and macOS, you may need to type `python3` instead of +`python`. You may also need to [install pip](https://pip.pypa.io/en/stable/installing/). + +### Step 2. Activate Virtual Environment + +On Linux and macOS: +```sh +source openvino_env/bin/activate +``` +On Windows: +```sh +openvino_env\Scripts\activate +``` + +### Step 3. Set Up and Update pip to the Highest Version + +Run the command below: +```sh +python -m pip install --upgrade pip +``` + +### Step 4. Install the Package + +Run the command below:
+ + ```sh + pip install openvino-dev + ``` + +### Step 5. Verify that the Package is Installed + +Run the command below (this may take a few seconds): +```sh +pot -h +``` + +You will see the help message for Post-Training Optimization Tool if installation finished successfully. + +## Additional Resources + +- Intel® Distribution of OpenVINO™ toolkit home page: [https://software.intel.com/en-us/openvino-toolkit](https://software.intel.com/en-us/openvino-toolkit) +- OpenVINO™ toolkit online documentation: [https://docs.openvinotoolkit.org](https://docs.openvinotoolkit.org) + diff --git a/docs/install_guides/pypi-openvino-rt.md b/docs/install_guides/pypi-openvino-rt.md new file mode 100644 index 00000000000000..9b825c8651873a --- /dev/null +++ b/docs/install_guides/pypi-openvino-rt.md @@ -0,0 +1,93 @@ +# Intel® Distribution of OpenVINO™ Toolkit Runtime Package + +> **LEGAL NOTICE**: Your use of this software and any required dependent software (the +“Software Package”) is subject to the terms and conditions of the [software license agreements](https://software.intel.com/en-us/license/eula-for-intel-software-development-products) for the Software Package, which may also include notices, disclaimers, or +license terms for third party or open source software included in or with the Software Package, and your use indicates your acceptance of all such terms. Please refer to the “third-party-programs.txt” or other similarly-named text file included with the Software Package for additional details. + +## Introduction + +OpenVINO™ toolkit is a comprehensive toolkit for quickly developing applications and solutions that solve a variety of tasks including emulation of human vision, automatic speech recognition, natural language processing, recommendation systems, and many others. Based on latest generations of artificial neural networks, including Convolutional Neural Networks (CNNs), recurrent and attention-based networks, the toolkit extends computer vision and non-vision workloads across Intel® hardware, maximizing performance. It accelerates applications with high-performance, AI and deep learning inference deployed from edge to cloud. + +The Intel® Distribution of OpenVINO™ toolkit for Linux\*: +- Enables CNN-based deep learning inference on the edge +- Supports heterogeneous execution across Intel® CPU, Intel® Integrated Graphics, Intel® Neural Compute Stick 2, and Intel® Vision Accelerator Design with Intel® Movidius™ VPUs +- Speeds time-to-market via an easy-to-use library of computer vision functions and pre-optimized kernels + +**The Runtime Package Includes the Following Components Installed by Default:** + +| Component | Description | +|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Inference Engine](https://docs.openvinotoolkit.org/latest/openvino_docs_IE_DG_inference_engine_intro.html) | This is the engine that runs the deep learning model. It includes a set of libraries for an easy inference integration into your applications. | + +## System Requirements + +The table below lists the supported operating systems and Python* versions required to run the installation. + +| Supported Operating System | [Python* Version (64-bit)](https://www.python.org/) | +| :------------------------------------------------------------| :---------------------------------------------------| +| Ubuntu* 18.04 long-term support (LTS), 64-bit | 3.6, 3.7 | +| Ubuntu* 20.04 long-term support (LTS), 64-bit | 3.6, 3.7 | +| Red Hat* Enterprise Linux* 8.2, 64-bit | 3.6, 3.7 | +| CentOS* 7.4, 64-bit | 3.6, 3.7 | +| macOS* 10.15.x versions | 3.6, 3.7, 3.8 | +| Windows 10*, 64-bit Pro, Enterprise or Education (1607 Anniversary Update, Build 14393 or higher) editions | 3.6, 3.7, 3.8 | +| Windows Server* 2016 or higher | 3.6, 3.7, 3.8 | + +> **NOTE**: This package can be installed on other versions of Linux and Windows OSes, but only the specific versions above are fully validated. + +## Install the Runtime Package + +### Step 1. Set Up Python Virtual Environment + +To avoid dependency conflicts, use a virtual environment. Skip this + step only if you do want to install all dependencies globally. + +Create virtual environment: +```sh +python -m pip install --user virtualenv +python -m venv openvino_env --system-site-packages +``` + +> **NOTE**: On Linux and macOS, you may need to type `python3` instead of +`python`. You may also need to [install pip](https://pip.pypa.io/en/stable/installing/). + +### Step 2. Activate Virtual Environment + +On Linux and macOS: +```sh +source openvino_env/bin/activate +``` +On Windows: +```sh +openvino_env\Scripts\activate +``` + +### Step 3. Set Up and Update pip to the Highest Version + +Run the command below: +```sh +python -m pip install --upgrade pip +``` + +### Step 4. Install the Package + +Run the command below:
+ + ```sh + pip install openvino + ``` + +### Step 5. Verify that the Package is Installed + +Run the command below: +```sh +python -c "from openvino.inference_engine import IECore" +``` + +You will not see any error messages if installation finished successfully. + +## Additional Resources + +- [Intel® Distribution of OpenVINO™ toolkit](https://software.intel.com/en-us/openvino-toolkit). +- [OpenVINO™ toolkit online documentation](https://docs.openvinotoolkit.org). + diff --git a/docs/onnx_custom_op/CMakeLists.txt b/docs/onnx_custom_op/CMakeLists.txt index 0f8decc81f3067..8446846dcfe072 100644 --- a/docs/onnx_custom_op/CMakeLists.txt +++ b/docs/onnx_custom_op/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/docs/onnx_custom_op/onnx_custom_op.cpp b/docs/onnx_custom_op/onnx_custom_op.cpp index 222e454b17b762..2d8c6198e64f73 100644 --- a/docs/onnx_custom_op/onnx_custom_op.cpp +++ b/docs/onnx_custom_op/onnx_custom_op.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/onnx_custom_op/onnx_custom_op.hpp b/docs/onnx_custom_op/onnx_custom_op.hpp index a5189c63d30f28..fae687097045a4 100644 --- a/docs/onnx_custom_op/onnx_custom_op.hpp +++ b/docs/onnx_custom_op/onnx_custom_op.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/ops/activation/Clamp_1.md b/docs/ops/activation/Clamp_1.md index 8ee374fdf25254..91dba4b0ab261f 100644 --- a/docs/ops/activation/Clamp_1.md +++ b/docs/ops/activation/Clamp_1.md @@ -6,48 +6,63 @@ **Short description**: *Clamp* operation represents clipping activation function. +**Detailed description**: + +*Clamp* performs clipping operation over the input tensor element-wise. Element values of the output are within the range `[min, max]`. +* Input values that are smaller than *min* are replaced with *min* value. +* Input values that are greater than *max* are replaced with *max* value. +* Input values within the range `[min, max]` remain unchanged. + +Let *min_value* and *max_value* be *min* and *max*, respectively. The mathematical formula of *Clamp* is as follows: +\f[ +clamp( x_{i} )=\min\big( \max\left( x_{i}, min\_value \right), max\_value \big) +\f] + **Attributes**: * *min* - * **Description**: *min* is the lower bound of values in the output. Any value in the input that is smaller than the bound, is replaced with the *min* value. For example, *min* equal 10 means that any value in the input that is smaller than the bound, is replaced by 10. - * **Range of values**: non-negative positive floating point number - * **Type**: float + * **Description**: *min* is the lower bound of values in the output. + * **Range of values**: arbitrary floating point number + * **Type**: `float` * **Default value**: None * **Required**: *yes* * *max* - * **Description**: *max* is the upper bound of values in the output. Any value in the input that is greater than the bound, is replaced with the *max* value. For example, *max* equals 50 means that any value in the input that is greater than the bound, is replaced by 50. - * **Range of values**: positive floating point number - * **Type**: float + * **Description**: *max* is the upper bound of values in the output. + * **Range of values**: arbitrary floating point number + * **Type**: `float` * **Default value**: None * **Required**: *yes* **Inputs**: -* **1**: Multidimensional input tensor. Required. +* **1**: A tensor of type `T` and arbitrary shape. **Required**. **Outputs**: -* **1**: Multidimensional output tensor with shape and type matching the input tensor. +* **1**: A tensor of type `T` with same shape as input tensor. -**Detailed description**: +**Types** -*Clamp* does the following with the input tensor element-wise: -\f[ -clamp( x )=\left\{\begin{array}{ll} - max\_value \quad \mbox{if } \quad input( x )>max\_value \\ - min\_value \quad \mbox{if } \quad input( x ) -\end{array}\right. -\f] +* *T*: any numeric type. +* **Note**: In case of integral numeric type, ceil is used to convert *min* from `float` to `T` and floor is used to convert *max* from `float` to `T`. **Example** ```xml - + - ... - ... + + + 256 + + + + + 256 + + ``` diff --git a/docs/ops/activation/Elu_1.md b/docs/ops/activation/Elu_1.md index 8d5d424d02312b..60a093c506fff6 100644 --- a/docs/ops/activation/Elu_1.md +++ b/docs/ops/activation/Elu_1.md @@ -8,29 +8,58 @@ **Detailed Description** -For each element from the input tensor calculates corresponding -element in the output tensor with the following formula: +*Elu* operation is introduced in this [article](https://arxiv.org/abs/1511.07289v3). +It performs element-wise activation function on a given input tensor, based on the following mathematical formula: + \f[ -elu(x) = \left\{\begin{array}{ll} - alpha(e^{x} - 1) \quad \mbox{if } x < 0 \\ - x \quad \mbox{if } x \geq 0 +Elu(x) = \left\{\begin{array}{r} + x \qquad \mbox{if } x > 0 \\ + \alpha(e^{x} - 1) \quad \mbox{if } x \leq 0 \end{array}\right. \f] +where α corresponds to *alpha* attribute. + +*Elu* is equivalent to *ReLU* operation when *alpha* is equal to zero. + **Attributes** * *alpha* * **Description**: scale for the negative factor - * **Range of values**: arbitrary floating point number - * **Type**: float + * **Range of values**: non-negative arbitrary floating-point number + * **Type**: `float` * **Default value**: none * **Required**: *yes* **Inputs**: -* **1**: Input tensor x of any floating point type. Required. +* **1**: A tensor of type `T` and arbitrary shape. **Required**. **Outputs**: -* **1**: Result of Elu function applied to the input tensor *x*. Floating point tensor with shape and type matching the input tensor. +* **1**: The result of element-wise *Elu* function applied to the input tensor. A tensor of type `T` and the same shape as input tensor. + +**Types** + +* *T*: arbitrary supported floating-point type. + +**Example** + +```xml + + + + + 1 + 128 + + + + + 1 + 128 + + + +``` diff --git a/docs/ops/activation/Exp_1.md b/docs/ops/activation/Exp_1.md index b5815a271603cb..fad5c24c3bd1bd 100644 --- a/docs/ops/activation/Exp_1.md +++ b/docs/ops/activation/Exp_1.md @@ -6,12 +6,43 @@ **Short description**: Exponential element-wise activation function. -**Attributes**: has no attributes +**Detailed description** -**Inputs**: +*Exp* performs element-wise exponential activation function on a given input tensor. The mathematical formula is as follows: -* **1**: Input tensor x of any floating point type. Required. +\f[ +exp(x) = e^{x} +\f] -**Outputs**: +**Attributes**: *Exp* operation has no attributes. -* **1**: Result of Exp function applied to the input tensor *x*. Floating point tensor with shape and type matching the input tensor. +**Inputs** + +* **1**: A tensor of type `T` and arbitrary shape. **Required**. + +**Outputs** + +* **1**: The result of element-wise *Exp* function applied to the input tensor. A tensor of type `T` and the same shape as input tensor. + +**Types** + +* *T*: arbitrary supported floating-point type. + +**Example** + +```xml + + + + 1 + 256 + + + + + 1 + 256 + + + +``` \ No newline at end of file diff --git a/docs/ops/activation/GELU_2.md b/docs/ops/activation/GELU_2.md index 461defb02c9e56..9f48eba8791c06 100644 --- a/docs/ops/activation/GELU_2.md +++ b/docs/ops/activation/GELU_2.md @@ -2,35 +2,40 @@ **Versioned name**: *Gelu-2* -**Category**: *Activation* +**Category**: *Activation function* -**Short description**: [Reference](https://pytorch.org/docs/stable/nn.functional.html#gelu) +**Short description**: Gaussian error linear unit element-wise activation function. -**Detailed description**: [Reference](https://arxiv.org/abs/1606.08415) +**Detailed description** -**Attributes**: *Gelu* operation has no attributes. - -**Mathematical Formulation** -Gelu(x)=x*Φ(x), where Φ(x) is the Cumulative Distribution Function for Gaussian Distribution. -The following equivalent combination is recognized and fused into single Gelu op: +*Gelu* operation is introduced in this [article](https://arxiv.org/abs/1606.08415). +It performs element-wise activation function on a given input tensor, based on the following mathematical formula: \f[ - Gelu(x) = 0.5*x*(1.0 + erf((x) / \sqrt{2}) + Gelu(x) = x\cdot\Phi(x) = x\cdot\frac{1}{2}\cdot\left[1 + erf\left(x/\sqrt{2}\right)\right] \f] -Similarly, the following Gelu approximation (typical for the TensorFlow*) is recognized and fused into single Gelu op +where Φ(x) is the Cumulative Distribution Function for Gaussian Distribution. + +Additionally, *Gelu* function may be approximated as follows: \f[ - Gelu(x) \approx 0.5x(1.0 + tanh(\sqrt{2.0/pi} * (x + 0.044715 * x ^ 3)) + Gelu(x) \approx 0.5\cdot x\cdot \left(1 + \tanh\left[\sqrt{2/\pi} \cdot (x + 0.044715 \cdot x^3)\right]\right) \f] +**Attributes**: *Gelu* operation has no attributes. + **Inputs**: -* **1**: Multidimensional input tensor. Required. +* **1**: A tensor of type `T` and arbitrary shape. **Required**. **Outputs**: -* **1**: Floating point tensor with shape and type matching the input tensor. +* **1**: The result of element-wise *Gelu* function applied to the input tensor. A tensor of type `T` and the same shape as input tensor. + +**Types** + +* *T*: arbitrary supported floating-point type. **Example** diff --git a/docs/ops/activation/GELU_7.md b/docs/ops/activation/GELU_7.md new file mode 100644 index 00000000000000..1619894d173347 --- /dev/null +++ b/docs/ops/activation/GELU_7.md @@ -0,0 +1,89 @@ +## GELU- Gaussian Error Linear Unit {#openvino_docs_ops_activation_GELU_7} + +**Versioned name**: *Gelu-7* + +**Category**: *Activation* + +**Short description**: Calculates Gaussian error linear. + +**Detailed description**: `Gelu(x) = x * Φ(x)`, where `Φ(x)` is the Cumulative Distribution Function for Gaussian Distribution. +The Gelu operation is introduced in the [paper](https://arxiv.org/abs/1606.08415). + +**Attributes** + +* *approximation_mode* + + * **Description**: Specifies the formulae to calculate the output. + * **Range of values**: + * `erf` -- calculate output using the Gauss error function. + * `tanh` -- calculate output using tanh approximation + * **Type**: `string` + * **Default value**: `erf` + * **Required**: *no* + + +**Mathematical Formulation** + +For the `erf` approximation mode: +\f[ + Gelu(x) = 0.5 \cdot x \cdot (1.0 + erf((x) / \sqrt{2}) +\f] + +For the `tanh` approximation mode: + +\f[ + Gelu(x) \approx 0.5 \cdot x \cdot (1.0 + tanh(\sqrt{2.0/pi} \cdot (x + 0.044715 \cdot x ^ 3)) +\f] + +**Inputs**: + +* **1**: Multidimensional input tensor of type *T*. Required. + +**Outputs**: + +* **1**: Floating point tensor with shape and type *T* matching the input tensor. + +**Types** + +* *T*: any floating point type. + +**Examples** + +```xml + + + + + 1 + 128 + + + + + 1 + 128 + + + +``` + +```xml + + + + + 3 + 7 + 9 + + + + + 3 + 7 + 9 + + + + +``` diff --git a/docs/ops/activation/HSigmoid_5.md b/docs/ops/activation/HSigmoid_5.md index 412ceb4214f3bc..ee9e592d4e2912 100644 --- a/docs/ops/activation/HSigmoid_5.md +++ b/docs/ops/activation/HSigmoid_5.md @@ -9,9 +9,9 @@ **Detailed description**: For each element from the input tensor calculates corresponding element in the output tensor with the following formula: - \f[ - HSigmoid(x) = \frac{min(max(x + 3, 0), 6)}{6} - \f] +\f[ +HSigmoid(x) = \frac{min(max(x + 3, 0), 6)}{6} +\f] The HSigmoid operation is introduced in the following [article](https://arxiv.org/pdf/1905.02244.pdf). diff --git a/docs/ops/activation/Selu_1.md b/docs/ops/activation/Selu_1.md new file mode 100644 index 00000000000000..0af534b8f56292 --- /dev/null +++ b/docs/ops/activation/Selu_1.md @@ -0,0 +1,71 @@ +## Selu {#openvino_docs_ops_activation_Selu_1} + +**Versioned name**: *Selu-1* + +**Category**: *Activation function* + +**Short description**: *Selu* is a scaled exponential linear unit element-wise activation function. + +**Detailed Description** + +*Selu* operation is introduced in this [article](https://arxiv.org/abs/1706.02515), as activation function for self-normalizing neural networks (SNNs). + +*Selu* performs element-wise activation function on a given input tensor `data`, based on the following mathematical formula: + +\f[ +Selu(x) = \lambda \left\{\begin{array}{r} + x \quad \mbox{if } x > 0 \\ + \alpha(e^{x} - 1) \quad \mbox{if } x \le 0 +\end{array}\right. +\f] + +where α and λ correspond to inputs `alpha` and `lambda` respectively. + +Another mathematical representation that may be found in other references: + +\f[ +Selu(x) = \lambda\cdot\big(\max(0, x) + \min(0, \alpha(e^{x}-1))\big) +\f] + +**Attributes**: *Selu* operation has no attributes. + +**Inputs** + +* **1**: `data`. A tensor of type `T` and arbitrary shape. **Required.** + +* **2**: `alpha`. 1D tensor with one element of type `T`. **Required.** + +* **3**: `lambda`. 1D tensor with one element of type `T`. **Required.** + +**Outputs** + +* **1**: The result of element-wise *Selu* function applied to `data` input tensor. A tensor of type `T` and the same shape as `data` input tensor. + +**Types** + +* *T*: arbitrary supported floating-point type. + +**Example** + +```xml + + + + 256 + 56 + + + 1 + + + 1 + + + + + 256 + 56 + + + +``` diff --git a/docs/ops/arithmetic/Add_1.md b/docs/ops/arithmetic/Add_1.md index cd81141d1eaa44..85a431117b1502 100644 --- a/docs/ops/arithmetic/Add_1.md +++ b/docs/ops/arithmetic/Add_1.md @@ -4,7 +4,15 @@ **Category**: Arithmetic binary operation -**Short description**: *Add* performs element-wise addition operation with two given tensors applying multi-directional broadcast rules. +**Short description**: *Add* performs element-wise addition operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. + +**Detailed description** +Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attribute is not `none`. Broadcasting is performed according to `auto_broadcast` value. +After broadcasting *Add* performs addition operation for the input tensors *a* and *b* using the formula below: + +\f[ +o_{i} = a_{i} + b_{i} +\f] **Attributes**: @@ -12,33 +20,26 @@ * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match, + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md), + * *pdpd* - PaddlePaddle-style implicit broadcasting, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md). * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: A tensor of type T. Required. -* **2**: A tensor of type T. Required. +* **1**: A tensor of type T and arbitrary shape and rank. **Required.** +* **2**: A tensor of type T and arbitrary shape and rank. **Required.** **Outputs** -* **1**: The result of element-wise addition operation. A tensor of type T. +* **1**: The result of element-wise addition operation. A tensor of type T with shape equal to broadcasted shape of the two inputs. **Types** * *T*: any numeric type. -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *Add* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = a_{i} + b_{i} -\f] **Examples** @@ -46,6 +47,7 @@ o_{i} = a_{i} + b_{i} ```xml + 256 @@ -68,6 +70,7 @@ o_{i} = a_{i} + b_{i} *Example 2: broadcast* ```xml + 8 diff --git a/docs/ops/arithmetic/Divide_1.md b/docs/ops/arithmetic/Divide_1.md index 63db0fa8a1bd01..694ed91ce8d604 100644 --- a/docs/ops/arithmetic/Divide_1.md +++ b/docs/ops/arithmetic/Divide_1.md @@ -4,41 +4,54 @@ **Category**: Arithmetic binary operation -**Short description**: *Divide* performs element-wise division operation with two given tensors applying multi-directional broadcast rules. +**Short description**: *Divide* performs element-wise division operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. + +**Detailed description** +Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attribute is not `none`. Broadcasting is performed according to `auto_broadcast` value. +After broadcasting *Divide* performs division operation for the input tensors *a* and *b* using the formula below: + +\f[ +o_{i} = a_{i} / b_{i} +\f] + +The result of division by zero is undefined. **Attributes**: +* *pythondiv* + + * **Description**: specifies if floor division should be calculate. This attribute is supported only for integer data types. + * **Range of values**: + * false - regular division + * true - floor division + * **Type**: boolean + * **Default value**: true + * **Required**: *no* + * *auto_broadcast* * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match, + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md), + * *pdpd* - PaddlePaddle-style implicit broadcasting, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md). * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: A tensor of type T. **Required.** -* **2**: A tensor of type T. **Required.** +* **1**: A tensor of type T and arbitrary shape and rank. **Required.** +* **2**: A tensor of type T and arbitrary shape and rank. **Required.** **Outputs** -* **1**: The result of element-wise division operation. A tensor of type T. +* **1**: The result of element-wise division operation. A tensor of type T with shape equal to broadcasted shape of the two inputs. **Types** * *T*: any numeric type. -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *Divide* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = a_{i} / b_{i} -\f] **Examples** @@ -46,6 +59,7 @@ o_{i} = a_{i} / b_{i} ```xml + 256 @@ -68,6 +82,7 @@ o_{i} = a_{i} / b_{i} *Example 2: broadcast* ```xml + 8 diff --git a/docs/ops/arithmetic/FloorMod_1.md b/docs/ops/arithmetic/FloorMod_1.md index fca707d5a31d68..26986df0f3c3dc 100644 --- a/docs/ops/arithmetic/FloorMod_1.md +++ b/docs/ops/arithmetic/FloorMod_1.md @@ -4,9 +4,16 @@ **Category**: Arithmetic binary operation -**Short description**: *FloorMod* returns an element-wise division reminder with two given tensors applying multi-directional broadcast rules. -The result here is consistent with a flooring divide (like in Python programming language): `floor(x / y) * y + mod(x, y) = x`. -The sign of the result is equal to a sign of the divisor. +**Short description**: *FloorMod* performs an element-wise floor modulo operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* attribute. + +**Detailed description** +As a first step input tensors *a* and *b* are broadcasted if their shapes differ. Broadcasting is performed according to `auto_broadcast` attribute specification. As a second step *FloorMod* operation is computed element-wise on the input tensors *a* and *b* according to the formula below: + +\f[ +o_{i} = a_{i} % b_{i} +\f] + +*FloorMod* operation computes a reminder of a floored division. It is the same behaviour like in Python programming language: `floor(x / y) * y + floor_mod(x, y) = x`. The sign of the result is equal to a sign of a dividend. The result of division by zero is undefined. **Attributes**: @@ -14,20 +21,20 @@ The sign of the result is equal to a sign of the divisor. * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md) * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: A tensor of type T. Required. -* **2**: A tensor of type T. Required. +* **1**: A tensor of type T and arbitrary shape. Required. +* **2**: A tensor of type T and arbitrary shape. Required. **Outputs** -* **1**: The element-wise division reminder. A tensor of type T. +* **1**: The result of element-wise floor modulo operation. A tensor of type T with shape equal to broadcasted shape of two inputs. **Types** @@ -35,10 +42,11 @@ The sign of the result is equal to a sign of the divisor. **Examples** -*Example 1* +*Example 1 - no broadcasting* ```xml + 256 @@ -58,9 +66,10 @@ The sign of the result is equal to a sign of the divisor. ``` -*Example 2: broadcast* +*Example 2: numpy broadcasting* ```xml + 8 diff --git a/docs/ops/arithmetic/Maximum_1.md b/docs/ops/arithmetic/Maximum_1.md index 9c4a96d4d637e9..b456761d9a3f6d 100644 --- a/docs/ops/arithmetic/Maximum_1.md +++ b/docs/ops/arithmetic/Maximum_1.md @@ -4,7 +4,16 @@ **Category**: Arithmetic binary operation -**Short description**: *Maximum* performs element-wise maximum operation with two given tensors applying multi-directional broadcast rules. +**Short description**: *Maximum* performs element-wise maximum operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* attribute. + +**Detailed description** +As a first step input tensors *a* and *b* are broadcasted if their shapes differ. Broadcasting is performed according to `auto_broadcast` attribute specification. As a second step *Maximum* operation is computed element-wise on the input tensors *a* and *b* according to the formula below: + +After broadcasting *Maximum* does the following with the input tensors *a* and *b*: + +\f[ +o_{i} = max(a_{i}, b_{i}) +\f] **Attributes**: @@ -12,40 +21,32 @@ * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md) * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: First input tensor of type T. Required. -* **2**: Second input tensor of type T. Required. +* **1**: A tensor of type T and arbitrary shape. Required. +* **2**: A tensor of type T and arbitrary shape. Required. **Outputs** -* **1**: The result of element-wise maximum operation. A tensor of type T. +* **1**: The result of element-wise maximum operation. A tensor of type T with shape equal to broadcasted shape of two inputs. **Types** -* *T*: arbitrary type, which supports less/greater comparison. - -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *Maximum* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = max(a_{i}, b_{i}) -\f] +* *T*: any numeric type. **Examples** -*Example 1* +*Example 1 - no broadcasting* ```xml + 256 @@ -65,9 +66,10 @@ o_{i} = max(a_{i}, b_{i}) ``` -*Example 2: broadcast* +*Example 2: numpy broadcasting* ```xml + 8 diff --git a/docs/ops/arithmetic/Minimum_1.md b/docs/ops/arithmetic/Minimum_1.md index 283f33c0b094e2..e9d5b2c47c96a9 100644 --- a/docs/ops/arithmetic/Minimum_1.md +++ b/docs/ops/arithmetic/Minimum_1.md @@ -4,7 +4,14 @@ **Category**: Arithmetic binary operation -**Short description**: *Minimum* performs element-wise minimum operation with two given tensors applying multi-directional broadcast rules. +**Short description**: *Minimum* performs element-wise minimum operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* attribute. + +**Detailed description** +As a first step input tensors *a* and *b* are broadcasted if their shapes differ. Broadcasting is performed according to `auto_broadcast` attribute specification. As a second step *Minimum* operation is computed element-wise on the input tensors *a* and *b* according to the formula below: + +\f[ +o_{i} = min(a_{i}, b_{i}) +\f] **Attributes**: @@ -12,40 +19,32 @@ * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md) * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: First input tensor of type T. **Required.** -* **2**: Second input tensor of type T. **Required.** +* **1**: A tensor of type T and arbitrary shape. Required. +* **2**: A tensor of type T and arbitrary shape. Required. **Outputs** -* **1**: The result of element-wise minimum operation. A tensor of type T. +* **1**: The result of element-wise minimum operation. A tensor of type T with shape equal to broadcasted shape of two inputs. **Types** -* *T*: arbitrary type, which supports less/greater comparison. - -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *Minimum* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = min(a_{i}, b_{i}) -\f] +* *T*: any numeric type. **Examples** -*Example 1* +*Example 1 - no broadcasting* ```xml + 256 @@ -65,9 +64,10 @@ o_{i} = min(a_{i}, b_{i}) ``` -*Example 2: broadcast* +*Example 2: numpy broadcasting* ```xml + 8 diff --git a/docs/ops/arithmetic/Mod_1.md b/docs/ops/arithmetic/Mod_1.md index e95ccf2e5c6aa8..f55a1efa05be89 100644 --- a/docs/ops/arithmetic/Mod_1.md +++ b/docs/ops/arithmetic/Mod_1.md @@ -4,9 +4,16 @@ **Category**: Arithmetic binary operation -**Short description**: *Mod* returns an element-wise division reminder with two given tensors applying multi-directional broadcast rules. -The result here is consistent with a truncated divide (like in C programming language): `truncated(x / y) * y + truncated_mod(x, y) = x`. -The sign of the result is equal to a sign of a dividend. +**Short description**: *Mod* performs an element-wise modulo operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* attribute. + +**Detailed description** +As a first step input tensors *a* and *b* are broadcasted if their shapes differ. Broadcasting is performed according to `auto_broadcast` attribute specification. As a second step *Mod* operation is computed element-wise on the input tensors *a* and *b* according to the formula below: + +\f[ +o_{i} = a_{i} % b_{i} +\f] + +*Mod* operation computes a reminder of a truncated division. It is the same behaviour like in C programming language: `truncated(x / y) * y + truncated_mod(x, y) = x`. The sign of the result is equal to a sign of a dividend. The result of division by zero is undefined. **Attributes**: @@ -14,20 +21,21 @@ The sign of the result is equal to a sign of a dividend. * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md) * **Type**: string * **Default value**: "numpy" * **Required**: *no* + **Inputs** -* **1**: A tensor of type T. Required. -* **2**: A tensor of type T. Required. +* **1**: A tensor of type T and arbitrary shape. Required. +* **2**: A tensor of type T and arbitrary shape. Required. **Outputs** -* **1**: The element-wise division reminder. A tensor of type T. +* **1**: The result of element-wise modulo operation. A tensor of type T with shape equal to broadcasted shape of two inputs. **Types** @@ -35,10 +43,11 @@ The sign of the result is equal to a sign of a dividend. **Examples** -*Example 1* +*Example 1 - no broadcasting* ```xml - + + 256 @@ -58,9 +67,10 @@ The sign of the result is equal to a sign of a dividend. ``` -*Example 2: broadcast* +*Example 2: numpy broadcasting* ```xml - + + 8 diff --git a/docs/ops/arithmetic/Multiply_1.md b/docs/ops/arithmetic/Multiply_1.md index 3fa0365473c86c..eff8b30d568235 100644 --- a/docs/ops/arithmetic/Multiply_1.md +++ b/docs/ops/arithmetic/Multiply_1.md @@ -4,7 +4,15 @@ **Category**: Arithmetic binary operation -**Short description**: *Multiply* performs element-wise multiplication operation with two given tensors applying multi-directional broadcast rules. +**Short description**: *Multiply* performs element-wise multiplication operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. + +**Detailed description** +Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attribute is not `none`. Broadcasting is performed according to `auto_broadcast` value. +After broadcasting *Multiply* performs multiplication operation for the input tensors *a* and *b* using the formula below: + +\f[ +o_{i} = a_{i} * b_{i} +\f] **Attributes**: @@ -12,33 +20,26 @@ * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match, + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md), + * *pdpd* - PaddlePaddle-style implicit broadcasting, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md). * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: A tensor of type T. **Required.** -* **2**: A tensor of type T. **Required.** +* **1**: A tensor of type T and arbitrary shape and rank. **Required.** +* **2**: A tensor of type T and arbitrary shape and rank. **Required.** **Outputs** -* **1**: The result of element-wise multiplication operation. A tensor of type T. +* **1**: The result of element-wise multiplication operation. A tensor of type T with shape equal to broadcasted shape of the two inputs. **Types** * *T*: any numeric type. -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *Multiply* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = a_{i} * b_{i} -\f] **Examples** @@ -46,6 +47,7 @@ o_{i} = a_{i} * b_{i} ```xml + 256 @@ -68,6 +70,7 @@ o_{i} = a_{i} * b_{i} *Example 2: broadcast* ```xml + 8 diff --git a/docs/ops/arithmetic/Power_1.md b/docs/ops/arithmetic/Power_1.md index 81f13e9802b0d8..81be1dd80eaa51 100644 --- a/docs/ops/arithmetic/Power_1.md +++ b/docs/ops/arithmetic/Power_1.md @@ -4,7 +4,14 @@ **Category**: Arithmetic binary operation -**Short description**: *Power* performs element-wise power operation with two given tensors applying multi-directional broadcast rules. +**Short description**: *Power* performs element-wise power operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* attribute. + +**Detailed description** +As a first step input tensors *a* and *b* are broadcasted if their shapes differ. Broadcasting is performed according to `auto_broadcast` attribute specification. As a second step *Power* operation is computed element-wise on the input tensors *a* and *b* according to the formula below: + +\f[ +o_{i} = {a_{i} ^ b_{i}} +\f] **Attributes**: @@ -12,40 +19,33 @@ * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md) * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: A tensor of type T. Required. -* **2**: A tensor of type T. Required. +* **1**: A tensor of type T and arbitrary shape. Required. +* **2**: A tensor of type T and arbitrary shape. Required. **Outputs** -* **1**: The result of element-wise power operation. A tensor of type T. +* **1**: The result of element-wise power operation. A tensor of type T with shape equal to broadcasted shape of two inputs. **Types** * *T*: any numeric type. -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *Power* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = {a_{i} ^ b}_{i} -\f] **Examples** -*Example 1* +*Example 1 - no broadcasting* ```xml + 256 @@ -65,9 +65,10 @@ o_{i} = {a_{i} ^ b}_{i} ``` -*Example 2: broadcast* +*Example 2: numpy broadcasting* ```xml + 8 diff --git a/docs/ops/arithmetic/Selu_1.md b/docs/ops/arithmetic/Selu_1.md deleted file mode 100644 index 8d69d13fbf2e37..00000000000000 --- a/docs/ops/arithmetic/Selu_1.md +++ /dev/null @@ -1,65 +0,0 @@ -## Selu {#openvino_docs_ops_arithmetic_Selu_1} - -**Versioned name**: *Selu-1* - -**Category**: Arithmetic unary operation - -**Short description**: *Selu* calculates the SELU activation function (https://arxiv.org/abs/1706.02515) element-wise with given tensor. - -**Detailed Description** - -For each element from the input tensor calculates corresponding -element in the output tensor with the following formula: -\f[ -selu(x) = \lambda \left\{\begin{array}{ll} - \alpha(e^{x} - 1) \quad \mbox{if } x \le 0 \\ - x \quad \mbox{if } x > 0 -\end{array}\right. -\f] - -**Attributes**: - - No attributes available. - -**Inputs** - -* **1**: An tensor of type T. **Required.** - -* **2**: `alpha` 1D tensor with one element of type T. **Required.** - -* **3**: `lambda` 1D tensor with one element of type T. **Required.** - -**Outputs** - -* **1**: The result of element-wise operation. A tensor of type T. - -**Types** - -* *T*: any supported floating point type. - -**Examples** - -*Example 1* - -```xml - - - - 256 - 56 - - - 1 - - - 1 - - - - - 256 - 56 - - - -``` \ No newline at end of file diff --git a/docs/ops/arithmetic/Sin_1.md b/docs/ops/arithmetic/Sin_1.md index 0a4e9ca413db3c..3f785e4442c0a5 100644 --- a/docs/ops/arithmetic/Sin_1.md +++ b/docs/ops/arithmetic/Sin_1.md @@ -6,13 +6,20 @@ **Short description**: *Sin* performs element-wise sine operation with given tensor. +**Detailed description**: *sin* does the following with the input tensor *a*: +\f[ +a_{i} = sin(a_{i}) +\f] + +a - value representing angle in radians. + **Attributes**: No attributes available. **Inputs** -* **1**: An tensor of type T. **Required.** +* **1**: An tensor of type T and arbitrary rank. **Required.** **Outputs** @@ -22,11 +29,6 @@ * *T*: any numeric type. -*sin* does the following with the input tensor *a*: - -\f[ -a_{i} = sin(a_{i}) -\f] **Examples** @@ -47,4 +49,4 @@ a_{i} = sin(a_{i}) -``` \ No newline at end of file +``` diff --git a/docs/ops/arithmetic/SquaredDifference_1.md b/docs/ops/arithmetic/SquaredDifference_1.md index 565dc00f0fca44..5e5b89b5727883 100644 --- a/docs/ops/arithmetic/SquaredDifference_1.md +++ b/docs/ops/arithmetic/SquaredDifference_1.md @@ -4,7 +4,14 @@ **Category**: Arithmetic binary operation -**Short description**: *SquaredDifference* performs element-wise subtraction operation with two given tensors applying multi-directional broadcast rules, after that each result of the subtraction is squared. +**Short description**: *SquaredDifference* performs element-wise subtract and square the result operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* attribute. + +**Detailed description** +As a first step input tensors *a* and *b* are broadcasted if their shapes differ. Broadcasting is performed according to `auto_broadcast` attribute specification. As a second step *Substract* and *Square* the result operation is computed element-wise on the input tensors *a* and *b* according to the formula below: + +\f[ +o_{i} = (a_{i} - b_{i})^2 +\f] **Attributes**: @@ -12,40 +19,32 @@ * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md) * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: A tensor of type T. **Required.** -* **2**: A tensor of type T. **Required.** +* **1**: A tensor of type T and arbitrary shape. Required. +* **2**: A tensor of type T and arbitrary shape. Required. **Outputs** -* **1**: The result of element-wise SquaredDifference operation. A tensor of type T. +* **1**: The result of element-wise subtract and square the result operation. A tensor of type T with shape equal to broadcasted shape of two inputs. **Types** * *T*: any numeric type. -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *SquaredDifference* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = (a_{i} - b_{i})^2 -\f] - **Examples** -*Example 1* +*Example 1 - no broadcasting* ```xml + 256 @@ -64,9 +63,10 @@ o_{i} = (a_{i} - b_{i})^2 ``` -*Example 2: broadcast* +*Example 2: numpy broadcasting* ```xml + 8 diff --git a/docs/ops/arithmetic/Subtract_1.md b/docs/ops/arithmetic/Subtract_1.md index d0b6f5dd74e5a7..347fbbd0b345cd 100644 --- a/docs/ops/arithmetic/Subtract_1.md +++ b/docs/ops/arithmetic/Subtract_1.md @@ -4,7 +4,15 @@ **Category**: Arithmetic binary operation -**Short description**: *Subtract* performs element-wise subtraction operation with two given tensors applying multi-directional broadcast rules. +**Short description**: *Subtract* performs element-wise subtraction operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. + +**Detailed description** +Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attribute is not `none`. Broadcasting is performed according to `auto_broadcast` value. +After broadcasting *Subtract* performs subtraction operation for the input tensors *a* and *b* using the formula below: + +\f[ +o_{i} = a_{i} - b_{i} +\f] **Attributes**: @@ -12,40 +20,33 @@ * **Description**: specifies rules used for auto-broadcasting of input tensors. * **Range of values**: - * *none* - no auto-broadcasting is allowed, all input shapes should match - * *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in ONNX docs. + * *none* - no auto-broadcasting is allowed, all input shapes must match, + * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md), + * *pdpd* - PaddlePaddle-style implicit broadcasting, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md). * **Type**: string * **Default value**: "numpy" * **Required**: *no* **Inputs** -* **1**: A tensor of type T. **Required.** -* **2**: A tensor of type T. **Required.** +* **1**: A tensor of type T and arbitrary shape and rank. **Required.** +* **2**: A tensor of type T and arbitrary shape and rank. **Required.** **Outputs** -* **1**: The result of element-wise subtraction operation. A tensor of type T. +* **1**: The result of element-wise subtraction operation. A tensor of type T with shape equal to broadcasted shape of the two inputs. **Types** * *T*: any numeric type. -**Detailed description** -Before performing arithmetic operation, input tensors *a* and *b* are broadcasted if their shapes are different and `auto_broadcast` attributes is not `none`. Broadcasting is performed according to `auto_broadcast` value. - -After broadcasting *Subtract* does the following with the input tensors *a* and *b*: - -\f[ -o_{i} = a_{i} - b_{i} -\f] - **Examples** *Example 1* ```xml + 256 @@ -67,6 +68,7 @@ o_{i} = a_{i} - b_{i} *Example 2: broadcast* ```xml + 8 diff --git a/docs/ops/broadcast_rules.md b/docs/ops/broadcast_rules.md new file mode 100644 index 00000000000000..3490fae37134c7 --- /dev/null +++ b/docs/ops/broadcast_rules.md @@ -0,0 +1,139 @@ +# Broadcast Rules For Elementwise Operations {#openvino_docs_ops_broadcast_rules} + +The purpose of this document is to provide a set of common rules which are applicable for ops using broadcasting. + +## Description + +Broadcast allows to perform element-wise operation for inputs of arbitrary number of dimensions. There are 2 types of broadcasts supported: Numpy and PDPD. + +## Rules + +**None broadcast**: +1. Input tensors dimensions must match. +2. No implicit broadcast rule is applied. + +**Numpy broadcast**: +1. Right aligned dimensions of the two tensors are compared elementwise. +2. Smaller tensor is prepended with dimension(s) of size 1 in order to have the same shape as the larger tensor. +3. After alignment two tensors are compatible when both are equal or one of the dimensions is 1. +4. Tensor with dimension of size 1 will be implicitly broadcasted to match the size of the second tensor. +5. When both inputs are of rank = 0 the result is a scalar. + +**PDPD broadcast**: +1. First input tensor A is of any rank, second input B has rank smaller or equal to the first input. +2. Input tensor B is a continuous subsequence of input A. +3. Apply broadcast B to match the shape of A, where provided *axis* is the start dimension index + for broadcasting B onto A. +4. If *axis* is set to default (-1) calculate new value: `axis = rank(A) - rank(B)`. +5. The trailing dimensions of size 1 for input B will be ignored for the consideration of + subsequence, such as `shape(B) = (3, 1) => (3)`. + +## Numpy examples + +* `A: Shape(,) -> scalar`
+ `B: Shape(,) -> scalar`
+ `Result: Shape(,) -> scalar` + +* `A: Shape(2, 3)`
+ `B: Shape( 1)`
+ `Result: Shape(2, 3)` + +* `A: Shape( 3)`
+ `B: Shape(2, 3)`
+ `Result: Shape(2, 3)` + +* `A: Shape(2, 3, 5)`
+ `B: Shape(,) -> scalar`
+ `Result: Shape(2, 3, 5)` + +* `A: Shape(2, 1, 5)`
+ `B: Shape(1, 4, 5)`
+ `Result: Shape(2, 4, 5)` + +* `A: Shape( 6, 5)`
+ `B: Shape(2, 1, 5)`
+ `Result: Shape(2, 6, 5)` + +* `A: Shape(2, 1, 5)`
+ `B: Shape( 4, 1)`
+ `Result: Shape(2, 4, 5)`
+ +* `A: Shape(3, 2, 1, 4)`
+ `B: Shape( 5, 4)`
+ `Result: Shape(3, 2, 5, 4)` + +* `A: Shape( 1, 5, 3)`
+ `B: Shape(5, 2, 1, 3)`
+ `Result: Shape(5, 2, 5, 3)` + +* `A: Shape(3)`
+ `B: Shape(2)`
+ `Result: broadcast won't happen due to dimensions mismatch` + +* `A: Shape(3, 1, 5)`
+ `B: Shape(4, 4, 5)`
+ `Result: broadcast won't happen due to dimensions mismatch on the leftmost axis` + +## PDPD examples + +* `A: Shape(2, 3, 4, 5)`
+ `B: Shape( 3, 4 ) with axis = 1`
+ `Result: Shape(2, 3, 4, 5)` + +* `A: Shape(2, 3, 4, 5)`
+ `B: Shape( 3, 1 ) with axis = 1`
+ `Result: Shape(2, 3, 4, 5)` + +* `A: Shape(2, 3, 4, 5)`
+ `B: Shape( 4, 5) with axis=-1(default) or axis=2`
+ `Result: Shape(2, 3, 4, 5)` + +* `A: Shape(2, 3, 4, 5)`
+ `B: Shape(1, 3 ) with axis = 0`
+ `Result: Shape(2, 3, 4, 5)` + +* `A: Shape(2, 3, 4, 5)`
+ `B: Shape(,)`
+ `Result: Shape(2, 3, 4, 5)`
+ +* `A: Shape(2, 3, 4, 5)`
+ `B: Shape(5,)`
+ `Result: Shape(2, 3, 4, 5)` + +# Bidirectional Broadcast Rules {#openvino_docs_ops_bidirectional_broadcast_rules} + +## Description + +Bidirectional Broadcast is not intended for element-wise operations. Its purpose is to broadcast an array to a given shape. + +## Rules + +**Bidirectional broadcast**: +1. Dimensions of the input tensors are right alignment. +2. Following broadcast rule is applied: `numpy.array(input) * numpy.ones(target_shape)`. +3. Two corresponding dimension must have the same value, or one of them is equal to 1. +4. Output shape may not be equal to `target_shape` if: + * `target_shape` contains dimensions of size 1, + * `target_shape` rank is smaller than the rank of input tensor. + +## Bidirectional examples + +* `A: Shape(5)`
+ `B: Shape(1)`
+ `Result: Shape(5)` + +* `A: Shape(2, 3)`
+ `B: Shape( 3)`
+ `Result: Shape(2, 3)` + +* `A: Shape(3, 1)`
+ `B: Shape(3, 4)`
+ `Result: Shape(3, 4)` + +* `A: Shape(3, 4)`
+ `B: Shape(,) -> scalar`
+ `Result: Shape(3, 4)` + +* `A: Shape( 3, 1)`
+ `B: Shape(2, 1, 6)`
+ `Result: Shape(2, 3, 6)` diff --git a/docs/ops/convolution/BinaryConvolution_1.md b/docs/ops/convolution/BinaryConvolution_1.md index 21d3a5b7fb5f2b..6ab2458035c1c8 100644 --- a/docs/ops/convolution/BinaryConvolution_1.md +++ b/docs/ops/convolution/BinaryConvolution_1.md @@ -4,20 +4,61 @@ **Category**: *Convolution* -**Short description**: *BinaryConvolution* convolution with binary weights, binary input and integer output +**Short description**: Computes 2D convolution of binary input and binary kernel tensors. + +**Detailed description**: The operation behaves as regular *Convolution* but uses specialized algorithm for computations on binary data. More thorough explanation can be found in [Understanding Binary Neural Networks](https://sushscience.wordpress.com/2017/10/01/understanding-binary-neural-networks/) and [Bitwise Neural Networks](https://saige.sice.indiana.edu/wp-content/uploads/icml2015_mkim.pdf). + + +Computation algorithm for mode *xnor-popcount*: +- `X = XNOR(input_patch, filter)`, where XNOR is bitwise operation on two bit streams +- `P = popcount(X)`, where popcount is the number of `1` bits in the `X` bit stream +- `Output = 2 * P - B`, where `B` is the total number of bits in the `P` bit stream **Attributes**: -The operation has the same attributes as a regular *Convolution* layer and several unique attributes that are listed below: +* *strides* + + * **Description**: *strides* is a distance (in pixels) to slide the filter on the feature map over the `(y, x)` axes for 2D convolutions. For example, *strides* equal `2,1` means sliding the filter 2 pixel at a time over height dimension and 1 over width dimension. + * **Range of values**: integer values starting from 0 + * **Type**: int[] + * **Default value**: None + * **Required**: *yes* + +* *pads_begin* + + * **Description**: *pads_begin* is a number of pixels to add to the beginning along each axis. For example, *pads_begin* equal `1,2` means adding 1 pixel to the top of the input and 2 to the left of the input. + * **Range of values**: integer values starting from 0 + * **Type**: int[] + * **Default value**: None + * **Required**: *yes* + * **Note**: the attribute is ignored when *auto_pad* attribute is specified. + +* *pads_end* + + * **Description**: *pads_end* is a number of pixels to add to the ending along each axis. For example, *pads_end* equal `1,2` means adding 1 pixel to the bottom of the input and 2 to the right of the input. + * **Range of values**: integer values starting from 0 + * **Type**: int[] + * **Default value**: None + * **Required**: *yes* + * **Note**: the attribute is ignored when *auto_pad* attribute is specified. + +* *dilations* + + * **Description**: *dilations* denotes the distance in width and height between elements (weights) in the filter. For example, *dilation* equal `1,1` means that all the elements in the filter are neighbors, so it is the same as for the usual convolution. *dilation* equal `2,2` means that all the elements in the filter are matched not to adjacent elements in the input matrix, but to those that are adjacent with distance 1. + * **Range of values**: integer value starting from 0 + * **Type**: int[] + * **Default value**: None + * **Required**: *yes* * *mode* - * **Description**: *mode* defines how input tensor 0/1 values and weights 0/1 are interpreted as real numbers and how the result is computed. + * **Description**: *mode* defines how input tensor `0/1` values and weights `0/1` are interpreted as real numbers and how the result is computed. * **Range of values**: * *xnor-popcount* * **Type**: `string` * **Default value**: None * **Required**: *yes* + * **Note**: value `0` in inputs is interpreted as `-1`, value `1` as `1` * *pad_value* @@ -27,13 +68,61 @@ The operation has the same attributes as a regular *Convolution* layer and sever * **Default value**: None * **Required**: *yes* -**Inputs**: +* *auto_pad* -* **1**: ND tensor with N >= 3, containing integer, float or binary values; filled with 0/1 values of any appropriate type. 0 means -1, 1 means 1 for `mode="xnor-popcount"`. Required. + * **Description**: *auto_pad* how the padding is calculated. Possible values: + * *explicit* - use explicit padding values from *pads_begin* and *pads_end*. + * *same_upper* - the input is padded to match the output size. In case of odd padding value an extra padding is added at the end. + * *same_lower* - the input is padded to match the output size. In case of odd padding value an extra padding is added at the beginning. + * *valid* - do not use padding. + * **Type**: string + * **Default value**: explicit + * **Required**: *no* + * **Note**: *pads_begin* and *pads_end* attributes are ignored when *auto_pad* is specified. + +**Inputs**: -* **2**: ND tensor with N >= 3 that represents convolutional kernel filled by integer, float or binary values; filled with 0/1 values. 0 means -1, 1 means 1 for `mode="xnor-popcount"`. Required. +* **1**: Input tensor of type *T1* and rank 4. Layout is NCYX (number of batches, number of channels, spatial axes Y, X). Required. +* **2**: Kernel tensor of type *T2* and rank 4. Layout is OIYX (number of output channels, number of input channels, spatial axes Y, X). Required. +* **Note**: Interpretation of tensor values is defined by *mode* attribute. **Outputs**: -* **1**: output tensor containing float values. +* **1**: Output tensor of type *T3* and rank 4. Layout is NOYX (number of batches, number of kernel output channels, spatial axes Y, X). + +**Types**: + +* *T1*: floating point type with values `0` or `1`. +* *T2*: `u1` type with binary values `0` or `1`. +* *T3*: *T1* type with full range of values. + +**Example**: +2D Convolution +```xml + + + + + 1 + 3 + 224 + 224 + + + 64 + 3 + 5 + 5 + + + + + 1 + 64 + 224 + 224 + + + +``` diff --git a/docs/ops/detection/ExperimentalDetectronDetectionOutput_6.md b/docs/ops/detection/ExperimentalDetectronDetectionOutput_6.md new file mode 100644 index 00000000000000..4ef48bb0cce8a6 --- /dev/null +++ b/docs/ops/detection/ExperimentalDetectronDetectionOutput_6.md @@ -0,0 +1,195 @@ +## ExperimentalDetectronDetectionOutput {#openvino_docs_ops_detection_ExperimentalDetectronDetectionOutput_6} + +**Versioned name**: *ExperimentalDetectronDetectionOutput-6* + +**Category**: Object detection + +**Short description**: An operation *ExperimentalDetectronDetectionOutput* performs non-maximum suppression to generate +the detection output using information on location and score predictions. + +**Detailed description**: Operation doing next steps: + +1. Applies deltas to boxes sizes [x1, y1, x2, y2] and takes coordinates of +refined boxes according to formulas: + +`x1_new = ctr_x + (dx - 0.5 * exp(min(d_log_w, max_delta_log_wh))) * box_w` + +`y0_new = ctr_y + (dy - 0.5 * exp(min(d_log_h, max_delta_log_wh))) * box_h` + +`x1_new = ctr_x + (dx + 0.5 * exp(min(d_log_w, max_delta_log_wh))) * box_w - 1.0` + +`y1_new = ctr_y + (dy + 0.5 * exp(min(d_log_h, max_delta_log_wh))) * box_h - 1.0` + +* `box_w` and `box_h` are width and height of box: + +`box_w = x1 - x0 + 1.0` + +`box_h = y1 - y0 + 1.0` + +* `ctr_x` and `ctr_y` are center location of box: + +`ctr_x = x0 + 0.5f * box_w` + +`ctr_y = y0 + 0.5f * box_h` + +* `dx`, `dy`, `d_log_w` and `d_log_h` are deltas calculated according to next formulas and `deltas_tensor` is second +input: + +`dx = deltas_tensor[roi_idx, 4 * class_idx + 0] / deltas_weights[0]` + +`dy = deltas_tensor[roi_idx, 4 * class_idx + 1] / deltas_weights[1]` + +`d_log_w = deltas_tensor[roi_idx, 4 * class_idx + 2] / deltas_weights[2]` + +`d_log_h = deltas_tensor[roi_idx, 4 * class_idx + 3] / deltas_weights[3]` + +2. If *class_agnostic_box_regression* is `true` then operation removes predictions for background classes; +3. Clips boxes to image; +4. Applies *score_threshold* on detection scores; +5. Applies non-maximum suppression class-wise with *nms_threshold* and returns *post_nms_count* or less detections per +class; +6. Operation returns *max_detections_per_image* detections if total number of detections is more than it, otherwise +returns total number of detections and the output tensor is filled with undefined values for rest output tensor +elements. + +**Attributes**: + +* *score_threshold* + + * **Description**: *score_threshold* attribute specifies threshold to consider only detections whose score are + larger than a threshold. + * **Range of values**: non-negative floating point number + * **Type**: float + * **Default value**: None + * **Required**: *yes* + +* *nms_threshold* + + * **Description**: *nms_threshold* attribute specifies threshold to be used in the NMS stage. + * **Range of values**: non-negative floating point number + * **Type**: float + * **Default value**: None + * **Required**: *yes* + +* *num_classes* + + * **Description**: *num_classes* attribute specifies number of detected classes. + * **Range of values**: non-negative integer number + * **Type**: int + * **Default value**: None + * **Required**: *yes* + +* *post_nms_count* + + * **Description**: *post_nms_count* attribute specifies the maximal number of detections per class. + * **Range of values**: non-negative integer number + * **Type**: int + * **Default value**: None + * **Required**: *yes* + +* *max_detections_per_image* + + * **Description**: *max_detections_per_image* attribute specifies maximal number of detections per image. + * **Range of values**: non-negative integer number + * **Type**: int + * **Default value**: None + * **Required**: *yes* + +* *class_agnostic_box_regression* + + * **Description**: *class_agnostic_box_regression* attribute ia a flag specifies whether to delete background + classes or not. + * **Range of values**: + * `true` means background classes should be deleted + * `false` means background classes shouldn't be deleted + * **Type**: boolean + * **Default value**: false + * **Required**: *no* + +* *max_delta_log_wh* + + * **Description**: *max_delta_log_wh* attribute specifies maximal delta of logarithms for width and height. + * **Range of values**: floating point number + * **Type**: float + * **Default value**: None + * **Required**: *yes* + +* *deltas_weights* + + * **Description**: *deltas_weights* attribute specifies weights for bounding boxes sizes deltas. + * **Range of values**: a list of non-negative floating point numbers + * **Type**: float[] + * **Default value**: None + * **Required**: *yes* + +**Inputs** + +* **1**: A 2D tensor of type *T* with input ROIs, with shape `[number_of_ROIs, 4]` describing the ROIs as 4-tuples: +[x1, y1, x2, y2]. The batch dimension of first, second and third inputs +should be the same. **Required.** + +* **2**: A 2D tensor of type *T* with shape `[number_of_ROIs, num_classes * 4]` describing deltas for input boxes. + **Required.** + +* **3**: A 2D tensor of type *T* with shape `[number_of_ROIs, num_classes]` describing detections scores. **Required.** + +* **4**: A 2D tensor of type *T* with shape `[1, 3]` contains 3 elements + `[image_height, image_width, scale_height_and_width]` describing input image size info. **Required.** + +**Outputs** + +* **1**: A 2D tensor of type *T* with shape `[max_detections_per_image, 4]` describing boxes indices. + +* **2**: A 1D tensor of type *T_IND* with shape `[max_detections_per_image]` describing classes indices. + +* **3**: A 1D tensor of type *T* with shape `[max_detections_per_image]` describing scores indices. + +* **4**: A 1D tensor of type *T_IND* with shape `[max_detections_per_image]` describing batches indices. + +**Types** + +* *T*: any supported floating point type. + +* *T_IND*: `int64` or `int32`. + + +**Example** + +```xml + + + + + 1000 + 4 + + + 1000 + 324 + + + 1000 + 81 + + + 1 + 3 + + + + + 100 + 4 + + + 100 + + + 100 + + + 100 + + + +``` diff --git a/docs/ops/detection/ExperimentalDetectronGenerateProposalsSingleImage_6.md b/docs/ops/detection/ExperimentalDetectronGenerateProposalsSingleImage_6.md new file mode 100644 index 00000000000000..7f8726f20d3ff8 --- /dev/null +++ b/docs/ops/detection/ExperimentalDetectronGenerateProposalsSingleImage_6.md @@ -0,0 +1,113 @@ +## ExperimentalDetectronGenerateProposalsSingleImage {#openvino_docs_ops_detection_ExperimentalDetectronGenerateProposalsSingleImage_6} + +**Versioned name**: *ExperimentalDetectronGenerateProposalsSingleImage-6* + +**Category**: Object detection + +**Short description**: An operation *ExperimentalDetectronGenerateProposalsSingleImage* computes ROIs and their scores +based on input data. + +**Detailed description**: Operation doing next steps: + +1. Transposes and reshape predicted bounding boxes deltas and scores to get them into the same order as the anchors; +2. Transforms anchors into proposals using deltas and clips proposals to image; +3. Removes predicted boxes with either height or width < *min_size*; +4. Sorts all `(proposal, score)` pairs by score from highest to lowest, order of pairs with equal scores is undefined; +5. Takes top *pre_nms_count* proposals, if total number of proposals is less than *pre_nms_count* then operation takes +all proposals; +6. Applies non-maximum suppression with *nms_threshold*; +7. Takes top *post_nms_count* proposals and return these top proposals and their scores. If total number of proposals +is less than *post_nms_count* then operation returns output tensors filled by zeroes. + +**Attributes**: + +* *min_size* + + * **Description**: *min_size* attribute specifies minimum box width and height. + * **Range of values**: non-negative floating point number + * **Type**: float + * **Default value**: None + * **Required**: *yes* + +* *nms_threshold* + + * **Description**: *nms_threshold* attribute specifies threshold to be used in the NMS stage. + * **Range of values**: non-negative floating point number + * **Type**: float + * **Default value**: None + * **Required**: *yes* + +* *pre_nms_count* + + * **Description**: *pre_nms_count* attribute specifies number of top-n proposals before NMS. + * **Range of values**: non-negative integer number + * **Type**: int + * **Default value**: None + * **Required**: *yes* + +* *post_nms_count* + + * **Description**: *post_nms_count* attribute specifies number of top-n proposals after NMS. + * **Range of values**: non-negative integer number + * **Type**: int + * **Default value**: None + * **Required**: *yes* + +**Inputs** + +* **1**: A 1D tensor of type *T* with 3 elements `[image_height, image_width, scale_height_and_width]` describing input +image size info. **Required.** + +* **2**: A 2D tensor of type *T* with shape `[height * width * number_of_channels, 4]` describing anchors. **Required.** + +* **3**: A 3D tensor of type *T* with shape `[number_of_channels * 4, height, width]` describing deltas for anchors. +Height and width for third and fourth inputs should be equal. **Required.** + +* **4**: A 3D tensor of type *T* with shape `[number_of_channels, height, width]` describing proposals scores. +**Required.** + +**Outputs** + +* **1**: A 2D tensor of type *T* with shape `[post_nms_count, 4]` describing ROIs. + +* **2**: A 1D tensor of type *T* with shape `[post_nms_count]` describing ROIs scores. + +**Types** + +* *T*: any supported floating point type. + +**Example** + +```xml + + + + + 3 + + + 12600 + 4 + + + 12 + 50 + 84 + + + 3 + 50 + 84 + + + + + 1000 + 4 + + + 1000 + + + +``` diff --git a/docs/ops/detection/ExperimentalDetectronPriorGridGenerator_6.md b/docs/ops/detection/ExperimentalDetectronPriorGridGenerator_6.md new file mode 100644 index 00000000000000..5a474c7efc782e --- /dev/null +++ b/docs/ops/detection/ExperimentalDetectronPriorGridGenerator_6.md @@ -0,0 +1,117 @@ +## ExperimentalDetectronPriorGridGenerator {#openvino_docs_ops_detection_ExperimentalDetectronPriorGridGenerator_6} + +**Versioned name**: *ExperimentalDetectronPriorGridGenerator-6* + +**Category**: Object detection + +**Short description**: An operation *ExperimentalDetectronPriorGridGenerator* generates prior grids of +specified sizes. + +**Detailed description**: Operation takes coordinates of centres of boxes and add strides with offset `0.5` to them to +calculate coordinates of prior grids. + +Numbers of generated cells is `featmap_height` and `featmap_width` if *h* and *w* are zeroes, otherwise *h* and *w* +respectively. Steps of generated grid are `image_height` / `layer_height` and `image_width` / `layer_width` if +*stride_h* and *stride_w* are zeroes, otherwise *stride_h* and *stride_w* respectively. + +`featmap_height`, `featmap_width`, `image_height` and `image_width` are spatial dimensions values from second and third +inputs respectively. + +**Attributes**: + +* *flatten* + + * **Description**: *flatten* attribute specifies whether the output tensor should be 2D or 4D. + * **Range of values**: + * `true` - the output tensor should be 2D tensor + * `false` - the output tensor should be 4D tensor + * **Type**: boolean + * **Default value**: true + * **Required**: *no* + +* *h* + + * **Description**: *h* attribute specifies number of cells of the generated grid with respect to height. + * **Range of values**: non-negative integer number less or equal than `featmap_height` + * **Type**: int + * **Default value**: 0 + * **Required**: *no* + +* *w* + + * **Description**: *w* attribute specifies number of cells of the generated grid with respect to width. + * **Range of values**: non-negative integer number less or equal than `featmap_width` + * **Type**: int + * **Default value**: 0 + * **Required**: *no* + +* *stride_x* + + * **Description**: *stride_x* attribute specifies the step of generated grid with respect to x coordinate. + * **Range of values**: non-negative float number + * **Type**: float + * **Default value**: 0.0 + * **Required**: *no* + +* *stride_y* + + * **Description**: *stride_y* attribute specifies the step of generated grid with respect to y coordinate. + * **Range of values**: non-negative float number + * **Type**: float + * **Default value**: 0.0 + * **Required**: *no* + +**Inputs** + +* **1**: A 2D tensor of type *T* with shape `[number_of_priors, 4]` contains priors. **Required.** + +* **2**: A 4D tensor of type *T* with input feature map `[1, number_of_channels, featmap_height, featmap_width]`. This +operation uses only sizes of this input tensor, not its data.**Required.** + +* **3**: A 4D tensor of type *T* with input image `[1, number_of_channels, image_height, image_width]`. The number of +channels of both feature map and input image tensors must match. This operation uses only sizes of this input tensor, +not its data. **Required.** + +**Outputs** + +* **1**: A tensor of type *T* with priors grid with shape `[featmap_height * featmap_width * number_of_priors, 4]` +if flatten is `true` or `[featmap_height, featmap_width, number_of_priors, 4]` otherwise. +In case then 0 < *h* < `featmap_height` and/or 0 < *w* < `featmap_width` the output data size is less than +`featmap_height` * `featmap_width` * `number_of_priors` * 4 and the output tensor is filled with undefined values for +rest output tensor elements. + +**Types** + +* *T*: any supported floating point type. + +**Example** + +```xml + + + + + 3 + 4 + + + 1 + 256 + 25 + 42 + + + 1 + 3 + 800 + 1344 + + + + + 3150 + 4 + + + +``` diff --git a/docs/ops/detection/ExperimentalDetectronROIFeatureExtractor_6.md b/docs/ops/detection/ExperimentalDetectronROIFeatureExtractor_6.md new file mode 100644 index 00000000000000..d4e93a188fc204 --- /dev/null +++ b/docs/ops/detection/ExperimentalDetectronROIFeatureExtractor_6.md @@ -0,0 +1,139 @@ +## ExperimentalDetectronROIFeatureExtractor {#openvino_docs_ops_detection_ExperimentalDetectronROIFeatureExtractor_6} + +**Versioned name**: *ExperimentalDetectronROIFeatureExtractor-6* + +**Category**: Object detection + +**Short description**: *ExperimentalDetectronROIFeatureExtractor* is the [ROIAlign](ROIAlign_3.md) operation applied +over a feature pyramid. + +**Detailed description**: *ExperimentalDetectronROIFeatureExtractor* maps input ROIs to the levels of the pyramid +depending on the sizes of ROIs and parameters of the operation, and then extracts features via ROIAlign from +corresponding pyramid levels. + +Operation applies the *ROIAlign* algorithm to the pyramid layers: + +`output[i, :, :, :] = ROIAlign(inputPyramid[j], rois[i])` + +`j = PyramidLevelMapper(rois[i])` + +PyramidLevelMapper maps the ROI to the pyramid level using the following formula: + +`j = floor(2 + log2(sqrt(w * h) / 224)` + +Here 224 is the canonical ImageNet pre-training size, 2 is the pyramid starting level, and `w`, `h` are the ROI width and height. + +For more details please see the following source: +[Feature Pyramid Networks for Object Detection](https://arxiv.org/pdf/1612.03144.pdf). + +**Attributes**: + +* *output_size* + + * **Description**: *output_size* attribute specifies the width and height of the output tensor. + * **Range of values**: a positive integer number + * **Type**: int + * **Default value**: None + * **Required**: *yes* + +* *sampling_ratio* + + * **Description**: *sampling_ratio* attribute specifies the number of sampling points per the output value. If 0, + then use adaptive number computed as `ceil(roi_width / output_width)`, and likewise for height. + * **Range of values**: a non-negative integer number + * **Type**: int + * **Default value**: None + * **Required**: *yes* + +* *pyramid_scales* + + * **Description**: *pyramid_scales* enlists `image_size / layer_size[l]` ratios for pyramid layers `l=1,...,L`, + where `L` is the number of pyramid layers, and `image_size` refers to network's input image. Note that pyramid's + largest layer may have smaller size than input image, e.g. `image_size` is `800 x 1344` in the XML example below. + * **Range of values**: a list of positive integer numbers + * **Type**: int[] + * **Default value**: None + * **Required**: *yes* + +* *aligned* + + * **Description**: *aligned* attribute specifies add offset (`-0.5`) to ROIs sizes or not. + * **Range of values**: + * `true` - add offset to ROIs sizes + * `false` - do not add offset to ROIs sizes + * **Type**: boolean + * **Default value**: false + * **Required**: *no* + +**Inputs**: + +* **1**: 2D input tensor of type *T* with shape `[number_of_ROIs, 4]` describing the ROIs as 4-tuples: +[x1, y1, x2, y2]. Coordinates *x* and *y* are refer to the network's input +*image_size*. **Required**. + +* **2**, ..., **L**: Pyramid of 4D input tensors with feature maps. Shape must be +`[1, number_of_channels, layer_size[l], layer_size[l]]`. The number of channels must be the same for all layers of the +pyramid. The layer width and height must equal to the `layer_size[l] = image_size / pyramid_scales[l]`. **Required**. + +**Outputs**: + +* **1**: 4D output tensor of type *T* with ROIs features. Shape must be +`[number_of_ROIs, number_of_channels, output_size, output_size]`. Channels number is the same as for all images in the +input pyramid. + +* **2**: 2D output tensor of type *T* with reordered ROIs according to their mapping to the pyramid levels. Shape +must be the same as for 1 input: `[number_of_ROIs, 4]`. + +**Types** + +* *T*: any supported floating point type. + +**Example** + +```xml + + + + + 1000 + 4 + + + 1 + 256 + 200 + 336 + + + 1 + 256 + 100 + 168 + + + 1 + 256 + 50 + 84 + + + 1 + 256 + 25 + 42 + + + + + 1000 + 256 + 7 + 7 + + + 1000 + 4 + + + +``` \ No newline at end of file diff --git a/docs/ops/detection/PriorBoxClustered_1.md b/docs/ops/detection/PriorBoxClustered_1.md index 6762fe5fe97e68..b2047c242ffff8 100644 --- a/docs/ops/detection/PriorBoxClustered_1.md +++ b/docs/ops/detection/PriorBoxClustered_1.md @@ -20,8 +20,8 @@ * **Description**: *clip* is a flag that denotes if each value in the output tensor should be clipped within [0,1]. * **Range of values**: - * false - clipping is not performed - * true - each value in the output tensor is within [0,1] + * false or 0 - clipping is not performed + * true or 1 - each value in the output tensor is within [0,1] * **Type**: boolean * **Default value**: true * **Required**: *no* diff --git a/docs/ops/detection/PriorBox_1.md b/docs/ops/detection/PriorBox_1.md index 4a4aa35186bda3..6517711ee9ed60 100644 --- a/docs/ops/detection/PriorBox_1.md +++ b/docs/ops/detection/PriorBox_1.md @@ -28,8 +28,8 @@ * **Description**: *flip* is a flag that denotes that each *aspect_ratio* is duplicated and flipped. For example, *flip* equals 1 and *aspect_ratio* equals to "4.0,2.0" mean that aspect_ratio is equal to "4.0,2.0,0.25,0.5". * **Range of values**: - * false - each *aspect_ratio* is flipped - * true - each *aspect_ratio* is not flipped + * false or 0 - each *aspect_ratio* is flipped + * true or 1 - each *aspect_ratio* is not flipped * **Type**: boolean * **Default value**: false * **Required**: *no* @@ -38,8 +38,8 @@ * **Description**: *clip* is a flag that denotes if each value in the output tensor should be clipped to [0,1] interval. * **Range of values**: - * false - clipping is not performed - * true - each value in the output tensor is clipped to [0,1] interval. + * false or 0 - clipping is not performed + * true or 1 - each value in the output tensor is clipped to [0,1] interval. * **Type**: boolean * **Default value**: false * **Required**: *no* diff --git a/docs/ops/matrix/MatMul_1.md b/docs/ops/matrix/MatMul_1.md index 346b7e1cc45c25..191a94c9858718 100644 --- a/docs/ops/matrix/MatMul_1.md +++ b/docs/ops/matrix/MatMul_1.md @@ -57,14 +57,17 @@ Two attributes, `transpose_a` and `transpose_b` specify embedded transposition f **Inputs**: -* **1**: Input batch of matrices A. Rank >= 1. Required. +* **1**: Tensor of type *T* with matrices A. Rank >= 1. Required. -* **2**: Input batch of matrices B. Rank >= 1. Required. +* **2**: Tensor of type *T* with matrices B. Rank >= 1. Required. **Outputs** -* **1**: Tensor with results of the multiplication. +* **1**: Tensor of type *T* with results of the multiplication. +**Types**: + +* *T*: any supported floating point or integer type. **Example** diff --git a/docs/ops/movement/Broadcast_1.md b/docs/ops/movement/Broadcast_1.md index a9b37505ce81ea..00dfbfc618e6e6 100644 --- a/docs/ops/movement/Broadcast_1.md +++ b/docs/ops/movement/Broadcast_1.md @@ -10,7 +10,7 @@ *Broadcast* takes the first tensor `data` and, following broadcasting rules that are specified by `mode` attribute and the 3rd input `axes_mapping`, builds a new tensor with shape matching the 2nd input tensor `target_shape`. `target_shape` input is a 1D integer tensor that represents required shape of the output. -Attribute `mode` and the 3rd input `axes_mapping` are relevant for cases when rank of the input `data` tensor doesn't match the size of the `target_shape` input. They both define how axes from `data` shape are mapped to the output axes. If `mode` is set to `numpy`, it means that the standard one-directional numpy broadcasting rules are applied. They are similar to rules that applied in all binary element-wise operations in case when `auto_broadcasting` attribute is set to `numpy`, and are similar to rules described at [here](https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html#general-broadcasting-rules), when only one-directional broadcasting is applied: input tensor `data` is broadcasted to `target_shape` but not vice-versa. +Attribute `mode` and the 3rd input `axes_mapping` are relevant for cases when rank of the input `data` tensor doesn't match the size of the `target_shape` input. They both define how axes from `data` shape are mapped to the output axes. If `mode` is set to `numpy`, it means that the standard one-directional numpy broadcasting rules are applied. These rules are described in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md), when only one-directional broadcasting is applied: input tensor `data` is broadcasted to `target_shape` but not vice-versa. In case if `mode` is set to `explicit`, then 3rd input `axes_mapping` comes to play. It contains a list of axis indices, each index maps an axis from the 1st input tensor `data` to axis in the output. The size of `axis_mapping` should match the rank of input `data` tensor, so all axes from `data` tensor should be mapped to axes of the output. diff --git a/docs/ops/movement/Broadcast_3.md b/docs/ops/movement/Broadcast_3.md index 460f613dbd739f..40b31fffad26af 100644 --- a/docs/ops/movement/Broadcast_3.md +++ b/docs/ops/movement/Broadcast_3.md @@ -10,9 +10,9 @@ *Broadcast* takes the first tensor `data` and, following broadcasting rules that are specified by `mode` attribute and the 3rd input `axes_mapping`, builds a new tensor with shape matching the 2nd input tensor `target_shape`. `target_shape` input is a 1D integer tensor that represents required shape of the output. -Attribute `mode` and the 3rd input `axes_mapping` are relevant for cases when rank of the input `data` tensor doesn't match the size of the `target_shape` input. They both define how axes from `data` shape are mapped to the output axes. If `mode` is set to `numpy`, it means that the standard one-directional numpy broadcasting rules are applied. They are similar to rules that applied in all binary element-wise operations in case when `auto_broadcasting` attribute is set to `numpy`, and are similar to rules described at [here](https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html#general-broadcasting-rules), when only one-directional broadcasting is applied: input tensor `data` is broadcasted to `target_shape` but not vice-versa. +Attribute `mode` and the 3rd input `axes_mapping` are relevant for cases when rank of the input `data` tensor doesn't match the size of the `target_shape` input. They both define how axes from `data` shape are mapped to the output axes. If `mode` is set to `numpy`, it means that the standard one-directional numpy broadcasting rules are applied. These rules are described in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md), when only one-directional broadcasting is applied: input tensor `data` is broadcasted to `target_shape` but not vice-versa. -In case if `mode` is set to `bidirectional`, then the broadcast rule is similar to `numpy.array(input) * numpy.ones(target_shape)`. Dimensions are right alignment. Two corresponding dimension must have the same value, or one of them is equal to 1. If this attribute value is used, then the 3rd input for the operation shouldn't be provided. The behaviour of such kind of broadcasting is equivalent to ONNX operation [Expand](https://github.com/onnx/onnx/blob/rel-1.7.0/docs/Operators.md#Expand). +In case if `mode` is set to `bidirectional`, then the broadcast rule is similar to `numpy.array(input) * numpy.ones(target_shape)`. Dimensions are right alignment. Two corresponding dimension must have the same value, or one of them is equal to 1. If this attribute value is used, then the 3rd input for the operation shouldn't be provided. The behaviour is described in [Bidirectional Broadcast Rules](../broadcast_rules.md). In case if `mode` is set to `explicit`, then 3rd input `axes_mapping` comes to play. It contains a list of axis indices, each index maps an axis from the 1st input tensor `data` to axis in the output. The size of `axis_mapping` should match the rank of input `data` tensor, so all axes from `data` tensor should be mapped to axes of the output. diff --git a/docs/ops/movement/Concat_1.md b/docs/ops/movement/Concat_1.md index 45ac2e2d4108dd..6a8bdb6ab4c980 100644 --- a/docs/ops/movement/Concat_1.md +++ b/docs/ops/movement/Concat_1.md @@ -11,7 +11,7 @@ * *axis* * **Description**: *axis* specifies dimension to concatenate along - * **Range of values**: integer number. Negative value means counting dimension from the end + * **Range of values**: integer number. Negative value means counting dimension from the end. The range is `[-R, R-1]`, where `R` is the rank of all inputs. * **Type**: int * **Default value**: None * **Required**: *yes* @@ -28,7 +28,7 @@ * *T*: any numeric type. -**Example** +**Examples** ```xml @@ -63,4 +63,39 @@ -``` \ No newline at end of file +``` + +```xml + + + + + 1 + 8 + 50 + 50 + + + 1 + 16 + 50 + 50 + + + 1 + 32 + 50 + 50 + + + + + 1 + 56 + 50 + 50 + + + + +``` diff --git a/docs/ops/movement/Gather_1.md b/docs/ops/movement/Gather_1.md index 984cdfc1ec515b..284b3d7dad717e 100644 --- a/docs/ops/movement/Gather_1.md +++ b/docs/ops/movement/Gather_1.md @@ -8,9 +8,10 @@ **Detailed description** - output[:, ... ,:, i, ... , j,:, ... ,:] = input1[:, ... ,:, input2[i, ... ,j],:, ... ,:] + output[p_0, p_1, ..., p_{axis-1}, i, ..., j, ...] = + input1[p_0, p_1, ..., p_{axis-1}, input2[i, ..., j], ...] -Where `i` is the value from the third input. +Where `axis` is the value from the third input. **Attributes**: *Gather* has no attributes diff --git a/docs/ops/movement/Gather_7.md b/docs/ops/movement/Gather_7.md new file mode 100644 index 00000000000000..b6370807fd3cb2 --- /dev/null +++ b/docs/ops/movement/Gather_7.md @@ -0,0 +1,167 @@ +## Gather {#openvino_docs_ops_movement_Gather_7} + +**Versioned name**: *Gather-7* + +**Category**: Data movement operations + +**Short description**: *Gather* operation takes slices of data of the first input tensor according to the indices + specified with the second input tensor and axis from the third input. Semantics of this operation is identical to +TensorFlow\* [Gather](https://www.tensorflow.org/api_docs/python/tf/gather) operation. + +**Detailed description** + + output[p_0, p_1, ..., p_{axis-1}, p_axis, ..., p_{axis + k}, ...] = + data[p_0, p_1, ..., p_{axis-1}, indices[p_0, p_1, ..., p_{b-1}, p_b, ..., p_{axis}, j], ...] + +Where `data`, `indices` and `axis` are tensors from first, second and third inputs correspondingly, and `b` is +the number of batch dimensions. + +**Attributes**: +* *batch_dims* + * **Description**: *batch_dims* (also denoted as `b`) is a leading number of dimensions of `data` tensor and `indices` + representing the batches, and *Gather* starts to gather from the `b` dimension. It requires the first `b` + dimensions in `data` and `indices` tensors to be equal. + * **Range of values**: `[0; min(data.rank, indices.rank))` and `batch_dims <= axis` + * **Type**: *T_AXIS* + * **Default value**: 0 + * **Required**: *no* + +Example 1 with default *batch_dims* value: +``` +batch_dims = 0 +axis = 0 + +indices = [0, 0, 4] +data = [1, 2, 3, 4, 5] +output = [1, 1, 5] +``` + +Example 2 with non-default *batch_dims* value: +``` +batch_dims = 1 +axis = 1 + +indices = [[0, 0, 4], <-- this is applied to the first batch + [4, 0, 0]] <-- this is applied to the second batch +indices_shape = (2, 3) + +data = [[1, 2, 3, 4, 5], <-- the first batch + [6, 7, 8, 9, 10]] <-- the second batch +data_shape = (2, 5) + +output = [[ 1, 1, 5], + [10, 6, 6]] +output_shape = (2, 3) +``` + +Example 3 with non-default *batch_dims* value: +``` +batch_dims = 2 +axis = 2 + +indices = [[[0, 0, 4], <-- this is applied to the first batch, index = (0, 0) + [4, 0, 0]], <-- this is applied to the second batch, index = (0, 1) + + [[1, 2, 4], <-- this is applied to the third batch, index = (1, 0) + [4, 3, 2]]] <-- this is applied to the fourth batch, index = (1, 1) +indices_shape = (2, 2, 3) + +data = [[[1, 2, 3, 4, 5], <-- the first batch, index = (0, 0) + [6, 7, 8, 9, 10]], <-- the second batch, index = (0, 1) + + [[11, 12, 13, 14, 15], <-- the third batch, index = (1, 0) + [16, 17, 18, 19, 20]]] <-- the fourth batch, index = (1, 1) +data_shape = (2, 2, 5) + +output = [[[ 1, 1, 5], + [10, 6, 6]], + + [[12, 13, 15], + [20, 19, 18]]] +output_shape = (2, 2, 3) +``` +Example 4 with *axis* > *batch_dims*: +``` +batch_dims = 1 +axis = 2 + +indices = [[1, 2, 4], <-- this is applied to the first batch + [4, 3, 2]] <-- this is applied to the second batch +indices_shape = (2, 3) + +data = [[[[ 1, 2, 3, 4], <-- first batch + [ 5, 6, 7, 8], + [ 9, 10, 11, 12], + [13, 14, 15, 16], + [17, 18, 19, 20]]], + + [[[21, 22, 23, 24], <-- second batch + [25, 26, 27, 28], + [29, 30, 31, 32], + [33, 34, 35, 36], + [37, 38, 39, 40]]]] +data_shape = (2, 1, 5, 4) + +output = [[[[ 5, 6, 7, 8], + [ 9, 10, 11, 12], + [17, 18, 19, 20]]], + + [[[37, 38, 39, 40], + [33, 34, 35, 36], + [29, 30, 31, 32]]]] +output_shape = (2, 1, 3, 4) +``` + +**Inputs** + +* **1**: `data` tensor of type *T* with arbitrary data. **Required**. + +* **2**: `indices` tensor of type *T_IND* with indices to gather. The values for indices are in the range `[0, data[axis] - 1]`. +**Required**. + +* **3**: Scalar or 1D tensor `axis` of *T_AXIS* type is a dimension index to gather data from. For example, +*axis* equal to 1 means that gathering is performed over the first dimension. Negative value means reverse indexing. +Allowed values are from `[-len(data.shape), len(indices.shape) - 1]` and `axis >= batch_dims`. +**Required**. + +**Outputs** + +* **1**: The resulting tensor of type *T* that consists of elements from `data` tensor gathered by `indices`. The shape +of the output tensor is `data.shape[:axis] + indices.shape[batch_dims:] + data.shape[axis + 1:]` + +**Types** + +* *T*: any supported type. + +* *T_IND*: `int32` or `int64`. + +* *T_AXIS*: `int32` or `int64`. + +**Example** + +```xml + + + + + 2 + 64 + 128 + + + 2 + 32 + 21 + + + + + + 2 + 32 + 21 + 128 + + + +``` diff --git a/docs/ops/movement/Pad_1.md b/docs/ops/movement/Pad_1.md index 5b2c591c10ac86..79684706675d9a 100644 --- a/docs/ops/movement/Pad_1.md +++ b/docs/ops/movement/Pad_1.md @@ -6,46 +6,14 @@ **Short description**: *Pad* operation extends an input tensor on edges. The amount and value of padded elements are defined by inputs and attributes. -**Attributes** - -* *pad_mode* - - * **Description**: *pad_mode* specifies the method used to generate new element values. - * **Range of values**: Name of the method in string format: - * `constant` - padded values are equal to the value of the *pad_value* operation attribute. - * `edge` - padded values are copied from the respective edge of the input `data` tensor. - * `reflect` - padded values are a reflection of the input `data` tensor; values on the edges are not duplicated. `pads_begin[D]` and `pads_end[D]` must be not greater than `data.shape[D] – 1` for any valid `D`. - * `symmetric` - padded values are symmetrically added from the input `data` tensor. This method is similar to the `reflect`, but values on edges are duplicated. Refer to the examples below for more details. `pads_begin[D]` and `pads_end[D]` must be not greater than `data.shape[D]` for any valid `D`. - * **Type**: string - * **Default value**: None - * **Required**: *yes* - -**Inputs** - -* **1**: `data` - input tensor to be padded. Required. - -* **2**: `pads_begin` - specifies the number of padding elements at the beginning of each axis. A list of non-negative integers. The length of the list must be equal to the number of dimensions in the input tensor. Required. - -* **3**: `pads_end` - specifies the number of padding elements at the beginning of each axis. A list of non-negative integers. The length of the list must be equal to the number of dimensions in the input tensor. Required. - -* **4**: `pad_value` - scalar tensor of type matching type of elements in `data` tensor to be replicated in padded area. Used with the `pad_mode = "constant"` only. All new elements are populated with this value. Optional for `pad_mode = "constant"`. If not provided, 0 of appropriate type is used. Shouldn't be set for other `pad_mode` values. - - -**Outputs** - -* **1**: Output padded tensor with dimensions `pads_begin[D] + data.shape[D] + pads_end[D]` for each `D` from `0` to `len(data.shape) - 1`. - - -**Detailed Description** - -The attributes specify a number of elements to add along each axis and a rule by which new element values are generated: for example, whether they are filled with a given constant or generated based on the input tensor content. +**Detailed Description**: The attributes specify a number of elements to add along each axis and a rule by which new element values are generated: for example, whether they are filled with a given constant or generated based on the input tensor content. The following examples illustrate how output tensor is generated for the *Pad* layer for a given input tensor: ``` INPUT = [[ 1 2 3 4 ] -[ 5 6 7 8 ] -[ 9 10 11 12 ]] + [ 5 6 7 8 ] + [ 9 10 11 12 ]] ``` with the following attributes: ``` @@ -57,40 +25,76 @@ depending on the *pad_mode*. ``` OUTPUT = [[ 0 1 2 3 4 0 0 0 ] -[ 0 5 6 7 8 0 0 0 ] -[ 0 9 10 11 12 0 0 0 ] -[ 0 0 0 0 0 0 0 0 ] -[ 0 0 0 0 0 0 0 0 ]] + [ 0 5 6 7 8 0 0 0 ] + [ 0 9 10 11 12 0 0 0 ] + [ 0 0 0 0 0 0 0 0 ] + [ 0 0 0 0 0 0 0 0 ]] ``` * `pad_mode = "edge"`: ``` OUTPUT = [[ 1 1 2 3 4 4 4 4 ] -[ 5 5 6 7 8 8 8 8 ] -[ 9 9 10 11 12 12 12 12 ] -[ 9 9 10 11 12 12 12 12 ] -[ 9 9 10 11 12 12 12 12 ]] + [ 5 5 6 7 8 8 8 8 ] + [ 9 9 10 11 12 12 12 12 ] + [ 9 9 10 11 12 12 12 12 ] + [ 9 9 10 11 12 12 12 12 ]] ``` * `pad_mode = "reflect"`: ``` OUTPUT = -[[ 2 1 2 3 4 3 2 1 ] -[ 6 5 6 7 8 7 6 5 ] -[ 10 9 10 11 12 11 10 9 ] -[ 6 5 6 7 8 7 6 5 ] -[ 2 1 2 3 4 3 2 1 ]] +[[ 2 1 2 3 4 3 2 1 ] + [ 6 5 6 7 8 7 6 5 ] + [ 10 9 10 11 12 11 10 9 ] + [ 6 5 6 7 8 7 6 5 ] + [ 2 1 2 3 4 3 2 1 ]] ``` * `pad_mode = "symmetric"`: ``` OUTPUT = [[ 1 1 2 3 4 4 3 2 ] -[ 5 5 6 7 8 8 7 6 ] -[ 9 9 10 11 12 12 11 10 ] -[ 9 9 10 11 12 12 11 10 ] -[ 5 5 6 7 8 8 7 6 ]] + [ 5 5 6 7 8 8 7 6 ] + [ 9 9 10 11 12 12 11 10 ] + [ 9 9 10 11 12 12 11 10 ] + [ 5 5 6 7 8 8 7 6 ]] ``` -**Example** +**Attributes** + +* *pad_mode* + + * **Description**: *pad_mode* specifies the method used to generate new element values. + * **Range of values**: Name of the method in string format: + * `constant` - padded values are equal to the value of the *pad_value* input, if input not provided zero value is padded. + * `edge` - padded values are copied from the respective edge of the input `data` tensor. + * `reflect` - padded values are a reflection of the input `data` tensor; values on the edges are not duplicated. `pads_begin[D]` and `pads_end[D]` must be not greater than `data.shape[D] – 1` for any valid `D`. + * `symmetric` - padded values are symmetrically added from the input `data` tensor. This method is similar to the `reflect`, but values on edges are duplicated. Refer to the examples above for more details. `pads_begin[D]` and `pads_end[D]` must be not greater than `data.shape[D]` for any valid `D`. + * **Type**: `string` + * **Default value**: None + * **Required**: *yes* + +**Inputs** + +* **1**: `data` tensor of arbitrary shape and type *T*. Required. + +* **2**: `pads_begin` 1D tensor of type *T_INT*. Number of elements matches the number of indices in *data* attribute. Specifies the number of padding elements at the beginning of each axis. Required. + +* **3**: `pads_end` 1D tensor of type *T_INT*. Number of elements matches the number of indices in *data* attribute. Specifies the number of padding elements at the ending of each axis. Required. + +* **4**: `pad_value` scalar tensor of type *T*. Used with the `pad_mode = "constant"` only. All new elements are populated with this value or with 0 if input not provided. Shouldn't be set for other `pad_mode` values. Optional. + + +**Outputs** + +* **1**: Output padded tensor of type *T* with dimensions `pads_begin[D] + data.shape[D] + pads_end[D]` for each `D` from `0` to `len(data.shape) - 1`. + +**Types** + +* *T*: any numeric type. + +* *T_INT*: any non-negative integer type. + + +**Example**: constant mode ```xml @@ -122,4 +126,35 @@ OUTPUT =
+``` + +**Example**: edge mode + +```xml + + + + + 1 + 3 + 32 + 40 + + + 4 + + + 4 + + + + + 2 + 8 + 37 + 48 + + + + ``` \ No newline at end of file diff --git a/docs/ops/movement/Roll_7.md b/docs/ops/movement/Roll_7.md new file mode 100644 index 00000000000000..fb338731fd5752 --- /dev/null +++ b/docs/ops/movement/Roll_7.md @@ -0,0 +1,131 @@ +## Roll {#openvino_docs_ops_movement_Roll_7} + +**Versioned name**: *Roll-7* + +**Category**: data movement operation + +**Short description**: The *Roll* operation shifts elements of a tensor along specified axes. + +**Detailed description**: *Roll* produces a tensor with the same shape as the first input tensor and with elements shifted along dimensions specified in the *axes* tensor. The shift size is specified in the *shift* input tensor. Elements that are shifted beyond the last position will be added in the same order starting from the first position. + +Example 1. *Roll* output with `shift` = 1, `axes` = 0: + +``` +data = [[ 1, 2, 3], + [ 4, 5, 6], + [ 7, 8, 9], + [10, 11, 12]] +output = [[10, 11, 12], + [ 1, 2, 3], + [ 4, 5, 6], + [ 7, 8, 9]] +``` + +Example 2. *Roll* output with `shift` = [-1, 2], `axes` = [0, 1]: + +``` +data = [[ 1, 2, 3], + [ 4, 5, 6], + [ 7, 8, 9], + [10, 11, 12]] +output = [[ 5, 6, 4], + [ 8, 9, 7], + [11, 12, 10], + [ 2, 3, 1]] +``` + +Example 3. *Roll* output with `shift` = [1, 2, 1], `axes` = [0, 1, 0]: + +``` +data = [[ 1, 2, 3], + [ 4, 5, 6], + [ 7, 8, 9], + [10, 11, 12]] +output = [[ 8, 9, 7], + [11, 12, 10], + [ 2, 3, 1], + [ 5, 6, 4]] +``` + +**Attributes** + +No attributes available. + +**Inputs**: + +* **1**: `data` a tensor of type *T*. **Required.** + +* **2**: a `shift` scalar or 1D tensor of type *T_IND_1*. Specifies the number of places by which the elements of the `data` tensor are shifted. If `shift` is a scalar, each dimension specified in the `axes` tensor are rolled by the same `shift` value. If `shift` is a 1D tensor, `axes` must be a 1D tensor of the same size, and each dimension from `axes` tensor are rolled by the corresponding value from the `shift` tensor. If the value of `shift` is positive, elements are shifted positively (towards larger indices). Otherwise, elements are shifted negatively (towards smaller indices). **Required.** + +* **3**: `axes` a scalar or 1D tensor of type *T_IND_2*. Specifies axes along which elements are shifted. If the same axis is referenced more than once, the total shift for that axis will be the sum of all the shifts that belong to that axis. If `axes` has negative value, axis index will be calculated using the formula: `N_dims + axis`, where `N_dims` - total number of dimensions in the `data` tensor, `axis` - negative axis index from the `axes` tensor. **Required.** + + +**Outputs**: + +* **1**: output tensor with shape and type equal to the `data` tensor. + +**Types** + +* *T*: any supported type. +* *T_IND_1*: `int32` or `int64`. +* *T_IND_2*: `int32` or `int64`. + +**Example** + +*Example 1: "shift" and "axes" are 1D tensors.* + +```xml + + + + 3 + 10 + 100 + 200 + + + 2 + + + 2 + + + + + 3 + 10 + 100 + 200 + + + +``` + +*Example 2: "shift" value is a scalar and multiple axes are specified.* + +```xml + + + + 3 + 10 + 100 + 200 + + + 1 + + + 2 + + + + + 3 + 10 + 100 + 200 + + + +``` diff --git a/docs/ops/movement/ScatterNDUpdate_3.md b/docs/ops/movement/ScatterNDUpdate_3.md index 256cd963e1e20a..5dd1ed9a462957 100644 --- a/docs/ops/movement/ScatterNDUpdate_3.md +++ b/docs/ops/movement/ScatterNDUpdate_3.md @@ -4,11 +4,11 @@ **Category**: Data movement operations -**Short description**: Creates a copy of the first input tensor with updated elements specified with second and third input tensors. This is similar to [Reference](https://github.com/onnx/onnx/blob/master/docs/Operators.md#ScatterND) +**Short description**: Creates a copy of the first input tensor with updated elements specified with second and third input tensors. **Detailed description**: The operation produces a copy of `data` tensor and updates its value to values specified by `updates` at specific index positions specified by `indices`. The output shape is the same as the shape of `data`. -`indices` tensor must not have duplicate entries. In case duplicate entries in `indices` the result is undefined. +`indices` tensor must not have duplicate entries. In case of duplicate entries in `indices` the result is undefined. The last dimension of `indices` can be at most the rank of `data.shape`. The last dimension of `indices` corresponds to indices into elements if `indices.shape[-1]` = `data.shape.rank` or slices @@ -48,7 +48,7 @@ output = [[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]], * **2**: `indices` tensor with indices of arbitrary rank `q` >= 1 and of type *T_IND*. All index values `i_j` in index entry `(i_0, i_1, ...,i_k)` (where `k = indices.shape[-1]`) must be within bounds `[0, s_j - 1]` where `s_j = data.shape[j]`. `k` must be at most `r`. Required. -* **3**: `updates` tensor of rank `r - indices.shape[-1] + q - 1` of type *T*. Required. +* **3**: `updates` tensor of rank `r - indices.shape[-1] + q - 1` of type *T*. If expected `updates` rank is 0D it can be a tensor with single element. Required. **Outputs**: @@ -56,9 +56,9 @@ output = [[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]], **Types** -* *T*: any supported type. +* *T*: any numeric type. -* *T_IND*: any supported integer types. +* *T_IND*: `int32` or `int64` **Example** diff --git a/docs/ops/normalization/MVN_6.md b/docs/ops/normalization/MVN_6.md index da82e352a9bd4d..cb6ebeaf4d64c9 100644 --- a/docs/ops/normalization/MVN_6.md +++ b/docs/ops/normalization/MVN_6.md @@ -58,7 +58,7 @@ o_{i}=\frac{o_{i}}{\sqrt {\sum {o_{k}^2}}+\epsilon} * **1**: `data` - Input tensor to be normalized. Type *T*. Required. -* **2**: `axes` - 1D tensor which specifies indices of dimensions in `data` that define normalization slices. Type *T_IND*. Required. +* **2**: `axes` - 1D tensor which specifies indices of dimensions in `data` that define normalization slices. Allowed range of axes is `[-r; r-1]` where `r = rank(data)`, the order can be not sorted. Negative value means counting dimensions from the back. Type *T_IND*. Required. **Outputs** diff --git a/docs/ops/opset.md b/docs/ops/opset.md index 72c72549d02ec5..e114f5b2267190 100644 --- a/docs/ops/opset.md +++ b/docs/ops/opset.md @@ -6,6 +6,7 @@ This topic provides a complete list of available sets of operations supported in | OpenVINO™ Version | Actual Operations Set | | :---------------- | :------------------------------- | +| 2021.4 | [opset7](opset7.md) | | 2021.3 | [opset6](opset6.md) | | 2021.2 | [opset5](opset5.md) | | 2021.1 | [opset4](opset4.md) | diff --git a/docs/ops/opset1.md b/docs/ops/opset1.md index 73da245d2dc541..eec109ad9c3877 100644 --- a/docs/ops/opset1.md +++ b/docs/ops/opset1.md @@ -93,7 +93,7 @@ declared in `namespace opset1`. * [Result](infrastructure/Result_1.md) * [ReverseSequence](movement/ReverseSequence_1.md) * [Select](condition/Select_1.md) -* [Selu](arithmetic/Selu_1.md) +* [Selu](activation/Selu_1.md) * [ShapeOf](shape/ShapeOf_1.md) * [Sigmoid](activation/Sigmoid_1.md) * [Sign](arithmetic/Sign_1.md) diff --git a/docs/ops/opset2.md b/docs/ops/opset2.md index bfee6cee9c45a8..67c51385a78a80 100644 --- a/docs/ops/opset2.md +++ b/docs/ops/opset2.md @@ -98,7 +98,7 @@ declared in `namespace opset2`. * [ReverseSequence](movement/ReverseSequence_1.md) * [ROIPooling](detection/ROIPooling_1.md) * [Select](condition/Select_1.md) -* [Selu](arithmetic/Selu_1.md) +* [Selu](activation/Selu_1.md) * [ShapeOf](shape/ShapeOf_1.md) * [Sigmoid](activation/Sigmoid_1.md) * [Sign](arithmetic/Sign_1.md) diff --git a/docs/ops/opset3.md b/docs/ops/opset3.md index e36d4be27c5227..52af67efc0f0de 100644 --- a/docs/ops/opset3.md +++ b/docs/ops/opset3.md @@ -113,7 +113,7 @@ declared in `namespace opset3`. * [ScatterElementsUpdate](movement/ScatterElementsUpdate_3.md) * [ScatterUpdate](movement/ScatterUpdate_3.md) * [Select](condition/Select_1.md) -* [Selu](arithmetic/Selu_1.md) +* [Selu](activation/Selu_1.md) * [ShapeOf](shape/ShapeOf_3.md) * [ShuffleChannels](movement/ShuffleChannels_1.md) * [Sigmoid](activation/Sigmoid_1.md) diff --git a/docs/ops/opset4.md b/docs/ops/opset4.md index 709319f0640d16..71607453ee983c 100644 --- a/docs/ops/opset4.md +++ b/docs/ops/opset4.md @@ -121,7 +121,7 @@ declared in `namespace opset4`. * [ScatterNDUpdate](movement/ScatterNDUpdate_3.md) * [ScatterUpdate](movement/ScatterUpdate_3.md) * [Select](condition/Select_1.md) -* [Selu](arithmetic/Selu_1.md) +* [Selu](activation/Selu_1.md) * [ShapeOf](shape/ShapeOf_3.md) * [ShuffleChannels](movement/ShuffleChannels_1.md) * [Sigmoid](activation/Sigmoid_1.md) diff --git a/docs/ops/opset5.md b/docs/ops/opset5.md index 7db25f894d5d32..6c79caca19b0a4 100644 --- a/docs/ops/opset5.md +++ b/docs/ops/opset5.md @@ -129,7 +129,7 @@ declared in `namespace opset5`. * [ScatterNDUpdate](movement/ScatterNDUpdate_3.md) * [ScatterUpdate](movement/ScatterUpdate_3.md) * [Select](condition/Select_1.md) -* [Selu](arithmetic/Selu_1.md) +* [Selu](activation/Selu_1.md) * [ShapeOf](shape/ShapeOf_3.md) * [ShuffleChannels](movement/ShuffleChannels_1.md) * [Sigmoid](activation/Sigmoid_1.md) diff --git a/docs/ops/opset6.md b/docs/ops/opset6.md index cde1171082c42d..92deb4a6fbea3d 100644 --- a/docs/ops/opset6.md +++ b/docs/ops/opset6.md @@ -50,6 +50,11 @@ declared in `namespace opset6`. * [Equal](comparison/Equal_1.md) * [Erf](arithmetic/Erf_1.md) * [Exp](activation/Exp_1.md) +* [ExperimentalDetectronDetectionOutput_6](detection/ExperimentalDetectronDetectionOutput_6.md) +* [ExperimentalDetectronGenerateProposalsSingleImage_6](detection/ExperimentalDetectronGenerateProposalsSingleImage_6.md) +* [ExperimentalDetectronPriorGridGenerator_6](detection/ExperimentalDetectronPriorGridGenerator_6.md) +* [ExperimentalDetectronROIFeatureExtractor_6](detection/ExperimentalDetectronROIFeatureExtractor_6.md) +* [ExperimentalDetectronTopKROIs_6](sort/ExperimentalDetectronTopKROIs_6.md) * [ExtractImagePatches](movement/ExtractImagePatches_3.md) * [FakeQuantize](quantization/FakeQuantize_1.md) * [Floor](arithmetic/Floor_1.md) @@ -120,7 +125,6 @@ declared in `namespace opset6`. * [ReorgYolo](detection/ReorgYolo_1.md) * [Reshape](shape/Reshape_1.md) * [Result](infrastructure/Result_1.md) -* [Reverse](movement/Reverse_1.md) * [ReverseSequence](movement/ReverseSequence_1.md) * [RNNCell](sequence/RNNCell_3.md) * [RNNSequence](sequence/RNNSequence_5.md) @@ -131,7 +135,7 @@ declared in `namespace opset6`. * [ScatterNDUpdate](movement/ScatterNDUpdate_3.md) * [ScatterUpdate](movement/ScatterUpdate_3.md) * [Select](condition/Select_1.md) -* [Selu](arithmetic/Selu_1.md) +* [Selu](activation/Selu_1.md) * [ShapeOf](shape/ShapeOf_3.md) * [ShuffleChannels](movement/ShuffleChannels_1.md) * [Sigmoid](activation/Sigmoid_1.md) diff --git a/docs/ops/opset7.md b/docs/ops/opset7.md new file mode 100644 index 00000000000000..c04b90e81a0391 --- /dev/null +++ b/docs/ops/opset7.md @@ -0,0 +1,166 @@ +# Operation Set `opset7` Specification {#openvino_docs_ops_opset7} + +This specification document describes the `opset7` operation set supported in OpenVINO™. +Support for each particular operation from the list below depends on the capabilities available in an inference plugin +and may vary among different hardware platforms and devices. Examples of operation instances are provided as IR V10 xml +snippets. Such IR is generated by the Model Optimizer. The semantics match corresponding nGraph operation classes +declared in `namespace opset7`. + + +## Table of Contents + +* [Abs](arithmetic/Abs_1.md) +* [Acos](arithmetic/Acos_1.md) +* [Acosh](arithmetic/Acosh_3.md) +* [Add](arithmetic/Add_1.md) +* [Asin](arithmetic/Asin_1.md) +* [Asinh](arithmetic/Asinh_3.md) +* [Assign](infrastructure/Assign_3.md) +* [Atan](arithmetic/Atan_1.md) +* [Atanh](arithmetic/Atanh_3.md) +* [AvgPool](pooling/AvgPool_1.md) +* [BatchNormInference](normalization/BatchNormInference_5.md) +* [BatchToSpace](movement/BatchToSpace_2.md) +* [BinaryConvolution](convolution/BinaryConvolution_1.md) +* [Broadcast](movement/Broadcast_3.md) +* [Bucketize](condition/Bucketize_3.md) +* [CTCGreedyDecoder](sequence/CTCGreedyDecoder_1.md) +* [CTCGreedyDecoderSeqLen](sequence/CTCGreedyDecoderSeqLen_6.md) +* [CTCLoss](sequence/CTCLoss_4.md) +* [Ceiling](arithmetic/Ceiling_1.md) +* [Clamp](activation/Clamp_1.md) +* [Concat](movement/Concat_1.md) +* [Constant](infrastructure/Constant_1.md) +* [Convert](type/Convert_1.md) +* [ConvertLike](type/ConvertLike_1.md) +* [Convolution](convolution/Convolution_1.md) +* [ConvolutionBackpropData](convolution/ConvolutionBackpropData_1.md) +* [Cos](arithmetic/Cos_1.md) +* [Cosh](arithmetic/Cosh_1.md) +* [CumSum](arithmetic/CumSum_3.md) +* [DeformableConvolution](convolution/DeformableConvolution_1.md) +* [DeformablePSROIPooling](detection/DeformablePSROIPooling_1.md) +* [DepthToSpace](movement/DepthToSpace_1.md) +* [DetectionOutput](detection/DetectionOutput_1.md) +* [DFT](signals/DFT_7.md) +* [Divide](arithmetic/Divide_1.md) +* [Elu](activation/Elu_1.md) +* [EmbeddingBagOffsetsSum](sparse/EmbeddingBagOffsetsSum_3.md) +* [EmbeddingBagPackedSum](sparse/EmbeddingBagPackedSum_3.md) +* [EmbeddingSegmentsSum](sparse/EmbeddingSegmentsSum_3.md) +* [Equal](comparison/Equal_1.md) +* [Erf](arithmetic/Erf_1.md) +* [Exp](activation/Exp_1.md) +* [ExperimentalDetectronDetectionOutput_6](detection/ExperimentalDetectronDetectionOutput_6.md) +* [ExperimentalDetectronGenerateProposalsSingleImage_6](detection/ExperimentalDetectronGenerateProposalsSingleImage_6.md) +* [ExperimentalDetectronPriorGridGenerator_6](detection/ExperimentalDetectronPriorGridGenerator_6.md) +* [ExperimentalDetectronROIFeatureExtractor_6](detection/ExperimentalDetectronROIFeatureExtractor_6.md) +* [ExperimentalDetectronTopKROIs_6](sort/ExperimentalDetectronTopKROIs_6.md) +* [ExtractImagePatches](movement/ExtractImagePatches_3.md) +* [FakeQuantize](quantization/FakeQuantize_1.md) +* [Floor](arithmetic/Floor_1.md) +* [FloorMod](arithmetic/FloorMod_1.md) +* [Gather](movement/Gather_7.md) +* [GatherElements](movement/GatherElements_6.md) +* [GatherND_5](movement/GatherND_5.md) +* [GatherTree](movement/GatherTree_1.md) +* [Gelu](activation/GELU_7.md) +* [Greater](comparison/Greater_1.md) +* [GreaterEqual](comparison/GreaterEqual_1.md) +* [GRN](normalization/GRN_1.md) +* [GroupConvolution](convolution/GroupConvolution_1.md) +* [GroupConvolutionBackpropData](convolution/GroupConvolutionBackpropData_1.md) +* [GRUCell](sequence/GRUCell_3.md) +* [GRUSequence](sequence/GRUSequence_5.md) +* [HardSigmoid](activation/HardSigmoid_1.md) +* [HSigmoid](activation/HSigmoid_5.md) +* [HSwish](activation/HSwish_4.md) +* [IDFT](signals/IDFT_7.md) +* [Interpolate](image/Interpolate_4.md) +* [Less](comparison/Less_1.md) +* [LessEqual](comparison/LessEqual_1.md) +* [Log](arithmetic/Log_1.md) +* [LogicalAnd](logical/LogicalAnd_1.md) +* [LogicalNot](logical/LogicalNot_1.md) +* [LogicalOr](logical/LogicalOr_1.md) +* [LogicalXor](logical/LogicalXor_1.md) +* [LogSoftmax](activation/LogSoftmax_5.md) +* [Loop](infrastructure/Loop_5.md) +* [LRN](normalization/LRN_1.md) +* [LSTMCell](sequence/LSTMCell_1.md) +* [LSTMSequence](sequence/LSTMSequence_1.md) +* [MatMul](matrix/MatMul_1.md) +* [MaxPool](pooling/MaxPool_1.md) +* [Maximum](arithmetic/Maximum_1.md) +* [Minimum](arithmetic/Minimum_1.md) +* [Mish](activation/Mish_4.md) +* [Mod](arithmetic/Mod_1.md) +* [MVN](normalization/MVN_6.md) +* [Multiply](arithmetic/Multiply_1.md) +* [Negative](arithmetic/Negative_1.md) +* [NonMaxSuppression](sort/NonMaxSuppression_5.md) +* [NonZero](condition/NonZero_3.md) +* [NormalizeL2](normalization/NormalizeL2_1.md) +* [NotEqual](comparison/NotEqual_1.md) +* [OneHot](sequence/OneHot_1.md) +* [Pad](movement/Pad_1.md) +* [Parameter](infrastructure/Parameter_1.md) +* [Power](arithmetic/Power_1.md) +* [PReLU](activation/PReLU_1.md) +* [PriorBoxClustered](detection/PriorBoxClustered_1.md) +* [PriorBox](detection/PriorBox_1.md) +* [Proposal](detection/Proposal_4.md) +* [PSROIPooling](detection/PSROIPooling_1.md) +* [Range](generation/Range_4.md) +* [ReLU](activation/ReLU_1.md) +* [ReadValue](infrastructure/ReadValue_3.md) +* [ReduceL1](reduction/ReduceL1_4.md) +* [ReduceL2](reduction/ReduceL2_4.md) +* [ReduceLogicalAnd](reduction/ReduceLogicalAnd_1.md) +* [ReduceLogicalOr](reduction/ReduceLogicalOr_1.md) +* [ReduceMax](reduction/ReduceMax_1.md) +* [ReduceMean](reduction/ReduceMean_1.md) +* [ReduceMin](reduction/ReduceMin_1.md) +* [ReduceProd](reduction/ReduceProd_1.md) +* [ReduceSum](reduction/ReduceSum_1.md) +* [RegionYolo](detection/RegionYolo_1.md) +* [ReorgYolo](detection/ReorgYolo_1.md) +* [Reshape](shape/Reshape_1.md) +* [Result](infrastructure/Result_1.md) +* [ReverseSequence](movement/ReverseSequence_1.md) +* [RNNCell](sequence/RNNCell_3.md) +* [RNNSequence](sequence/RNNSequence_5.md) +* [ROIAlign](detection/ROIAlign_3.md) +* [ROIPooling](detection/ROIPooling_1.md) +* [Roll](movement/Roll_7.md) +* [Round](arithmetic/Round_5.md) +* [ScatterElementsUpdate](movement/ScatterElementsUpdate_3.md) +* [ScatterNDUpdate](movement/ScatterNDUpdate_3.md) +* [ScatterUpdate](movement/ScatterUpdate_3.md) +* [Select](condition/Select_1.md) +* [Selu](activation/Selu_1.md) +* [ShapeOf](shape/ShapeOf_3.md) +* [ShuffleChannels](movement/ShuffleChannels_1.md) +* [Sigmoid](activation/Sigmoid_1.md) +* [Sign](arithmetic/Sign_1.md) +* [Sin](arithmetic/Sin_1.md) +* [Sinh](arithmetic/Sinh_1.md) +* [SoftMax](activation/SoftMax_1.md) +* [SoftPlus](activation/SoftPlus_4.md) +* [SpaceToBatch](movement/SpaceToBatch_2.md) +* [SpaceToDepth](movement/SpaceToDepth_1.md) +* [Split](movement/Split_1.md) +* [Sqrt](arithmetic/Sqrt_1.md) +* [SquaredDifference](arithmetic/SquaredDifference_1.md) +* [Squeeze](shape/Squeeze_1.md) +* [StridedSlice](movement/StridedSlice_1.md) +* [Subtract](arithmetic/Subtract_1.md) +* [Swish](activation/Swish_4.md) +* [Tan](arithmetic/Tan_1.md) +* [Tanh](arithmetic/Tanh_1.md) +* [TensorIterator](infrastructure/TensorIterator_1.md) +* [Tile](movement/Tile_1.md) +* [TopK](sort/TopK_3.md) +* [Transpose](movement/Transpose_1.md) +* [Unsqueeze](shape/Unsqueeze_1.md) +* [VariadicSplit](movement/VariadicSplit_1.md) diff --git a/docs/ops/sequence/CTCGreedyDecoderSeqLen_6.md b/docs/ops/sequence/CTCGreedyDecoderSeqLen_6.md index f59c1636f1eb2f..adc04ac0ebc8e9 100644 --- a/docs/ops/sequence/CTCGreedyDecoderSeqLen_6.md +++ b/docs/ops/sequence/CTCGreedyDecoderSeqLen_6.md @@ -53,7 +53,7 @@ The main difference between [CTCGreedyDecoder](CTCGreedyDecoder_1.md) and CTCGre * **2**: `sequence_length` - input tensor of type *T_I* of shape `[N]` with sequence lengths. The values of sequence length must be less or equal to `T`. **Required.** -* **3**: `blank_index` - scalar or 1D tensor with 1 element of type *T_I*. Specifies the class index to use for the blank class. The `blank_index` is not saved to the result sequence and it is used for post-processing. Default value is `C-1`. **Optional**. +* **3**: `blank_index` - scalar or 1D tensor with 1 element of type *T_I*. Specifies the class index to use for the blank class. Regardless of the value of `merge_repeated` attribute, if the output index for a given batch and time step corresponds to the `blank_index`, no new element is emitted. Default value is `C-1`. **Optional**. **Output** diff --git a/docs/ops/sequence/CTCGreedyDecoder_1.md b/docs/ops/sequence/CTCGreedyDecoder_1.md index 7a56c7e57ad683..1104e1c096ef57 100644 --- a/docs/ops/sequence/CTCGreedyDecoder_1.md +++ b/docs/ops/sequence/CTCGreedyDecoder_1.md @@ -17,6 +17,8 @@ p(C|X) = \prod_{t=1}^{T} p(c_{t}|X) Sequences in the batch can have different length. The lengths of sequences are coded as values 1 and 0 in the second input tensor `sequence_mask`. Value `sequence_mask[j, i]` specifies whether there is a sequence symbol at index `i` in the sequence `i` in the batch of sequences. If there is no symbol at `j`-th position `sequence_mask[j, i] = 0`, and `sequence_mask[j, i] = 1` otherwise. Starting from `j = 0`, `sequence_mass[j, i]` are equal to 1 up to the particular index `j = last_sequence_symbol`, which is defined independently for each sequence `i`. For `j > last_sequence_symbol`, values in `sequence_mask[j, i]` are all zeros. +**Note**: Regardless of the value of `ctc_merge_repeated` attribute, if the output index for a given batch and time step corresponds to the `blank_index`, no new element is emitted. + **Attributes** * *ctc_merge_repeated* diff --git a/docs/ops/shape/Squeeze_1.md b/docs/ops/shape/Squeeze_1.md index 9dff893cd8a419..4510748ca17551 100644 --- a/docs/ops/shape/Squeeze_1.md +++ b/docs/ops/shape/Squeeze_1.md @@ -4,15 +4,19 @@ **Category**: Shape manipulation -**Short description**: *Squeeze* removes specified dimensions (second input) equal to 1 of the first input tensor. If the second input is omitted then all dimensions equal to 1 are removed. If the specified dimension is not equal to one then error is raised. +**Short description**: *Squeeze* removes dimensions equal to 1 from the first input tensor. + +**Detailed description**: *Squeeze* can be used with or without the second input tensor. +* If only the first input is provided, every dimension that is equal to 1 will be removed from it. +* With the second input provided, each value is an index of a dimension from the first tensor that is to be removed. Specified dimension has to be equal to 1, otherwise an error will be raised. Dimension indices can be specified directly, or by negative indices (counting dimensions from the end). **Attributes**: *Squeeze* operation doesn't have attributes. **Inputs**: -* **1**: Multidimensional input tensor of type *T*. *Required*. +* **1**: Multidimensional input tensor of type *T*. **Required**. -* **2**: 0D or 1D tensor of type *T_SHAPE* with dimensions indices to squeeze. Values could be negative. *Optional*. +* **2**: Scalar or 1D tensor of type *T_INT* with indices of dimensions to squeeze. Values could be negative (have to be from range `[-R, R-1]`, where `R` is the rank of the first input). **Optional**. **Outputs**: @@ -20,13 +24,13 @@ **Types** -* *T*: supported type. +* *T*: any numeric type. -* *T_SHAPE*: supported integer type. +* *T_INT*: any supported integer type. **Example** -*Example 1:* +*Example 1: squeeze 4D tensor to a 2D tensor* ```xml diff --git a/docs/ops/signals/DFT_7.md b/docs/ops/signals/DFT_7.md new file mode 100644 index 00000000000000..e984ea17a23c2a --- /dev/null +++ b/docs/ops/signals/DFT_7.md @@ -0,0 +1,211 @@ +## Discrete Fourier Transformation (DFT) {#openvino_docs_ops_signals_DFT_7} + +**Versioned name**: *DFT-7* + +**Category**: Signal processing + +**Short description**: *DFT* operation performs the discrete complex-to-complex Fourier transformation of input tensor by specified dimensions. + +**Attributes**: + + No attributes available. + +**Inputs** + +* **1**: `data` - Input tensor of type *T* with data for the DFT transformation. Type of elements is any supported floating-point type. The last dimension of the input tensor must be equal to 2, that is the input tensor shape must have the form `[D_0, D_1, ..., D_{N-1}, 2]`, representing the real and imaginary components of complex numbers in `[:, ..., :, 0]` and in `[:, ..., :, 1]` correspondingly. Required. +* **2**: `axes` - 1D tensor of type *T_IND* specifying dimension indices where DFT is applied, and `axes` is any unordered list of indices of different dimensions of input tensor, for example, `[0, 4]`, `[4, 0]`, `[4, 2, 1]`, `[1, 2, 3]`, `[-3, 0, -2]`. These indices should be integers from `-(r - 1)` to `(r - 2)` inclusively, where `r = rank(data)`. A negative axis `a` is interpreted as an axis `r - 1 + a`. Other dimensions do not change. The order of elements in `axes` attribute matters, and is mapped directly to elements in the third input `signal_size`. Required. +* **NOTE**: The following constraint must be satisfied: `rank(data) >= len(axes) + 1 and input_shape[-1] == 2 and (rank(data) - 1) not in axes and (-1) not in axes`. +* **3**: `signal_size` - 1D tensor of type *T_SIZE* describing signal size with respect to axes from the input `axes`. If `signal_size[i] == -1`, then DFT is calculated for full size of the axis `axes[i]`. If `signal_size[i] > input_shape[: r - 1][axes[i]]`, then input data are zero-padded with respect to the axis `axes[i]` at the end. Finally, `signal_size[i] < input_shape[: r - 1][axes[i]]`, then input data are trimmed with respect to the axis `axes[i]`. More precisely, if `signal_size[i] < input_shape[: r - 1][axes[i]]`, the slice `0: signal_size[i]` of the axis `axes[i]` is considered. Optional, with default value `[input_shape[: r - 1][a] for a in axes]`. +* **NOTE**: If the input `signal_size` is specified, the size of `signal_size` must be the same as the size of `axes`. + +**Outputs** + +* **1**: Resulting tensor with elements of the same type as input `data` tensor. The shape of the output is calculated as follows: if the input `signal_size` is not specified, the shape of output is the same as the shape of `data`. Otherwise, `output_shape[axis] = input_shape[axis]` for `axis not in axes`, and if `signal_size[i] == -1`, then `output_shape[: r - 1][axes[i]] = input_shape[: r - 1][axes[i]]`, else `output_shape[: r - 1][axes[i]] = signal_size[i]`. + +**Types** + +* *T*: floating-point type. + +* *T_IND*: `int64` or `int32`. + +* *T_SIZE*: `int64` or `int32`. + +**Detailed description**: *DFT* performs the discrete Fourier transformation of input tensor with respect to specified axes. Calculations are performed according to the following rules. + +For simplicity, assume that an input tensor `A` has the shape `[B_0, ..., B_{k-1}, M_0, ..., M_{r-1}, 2]`, `axes=[k+1,...,k+r]`, and `signal_size=[S_0,...,S_{r-1}]`. + +Let `D` be an input tensor `A`, taking into account the `signal_size`, and, hence, `D` has the shape `[B_0, ..., B_{k-1}, S_0, ..., S_{r-1}, 2]`. + +Next, put +\f[X[j_0,\dots,j_{k-1},j_k,\dots,j_{k+r}]=D[j_0,\dots,j_{k-1},j_k,\dots,j_{k+r},0]+iD[j_0,\dots,j_{k-1},j_k,\dots,j_{k+r},1]\f] +for all indices `j_0,...,j_{k+r}`, where `i` is an imaginary unit, that is `X` is a complex tensor. + +Then the discrete Fourier transform is the tensor `Y` of the same shape as the tensor `X`, such that +\f[Y[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}]=\sum\limits_{p_0=0}^{S_0}\cdots\sum\limits_{p_{r-1}=0}^{S_{r-1}}X[n_0,\dots,n_{k-1},j_0,\dots,j_{r-1}]\exp\left(-2\pi i\sum\limits_{q=0}^{r-1}\frac{m_qj_q}{S_s}\right)\f] +for all indices `n_0,...,n_{k-1}`, `m_0,...,m_{r-1}`, and the result of the operation is the real tensor `Z` with the shape `[B_0, ..., B_{k-1}, S_0, ..., S_{r-1}, 2]` and such that +\f[Z[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}, 0]=Re Y[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}],\f] +\f[Z[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}, 1]=Im Y[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}].\f] + +Calculations for the generic case of axes and signal sizes are similar. + +**Example**: + +There is no `signal_size` input (4D input tensor): +```xml + + + + 1 + 320 + 320 + 2 + + + 2 + + + + 1 + 320 + 320 + 2 + + + +``` + +There is no `signal_size` input (3D input tensor): +```xml + + + + 320 + 320 + 2 + + + 2 + + + + 320 + 320 + 2 + + + +``` + + +There is `signal_size` input (4D input tensor): +```xml + + + + 1 + 320 + 320 + 2 + + + 2 + + + 2 + + + + 1 + 512 + 100 + 2 + + + +``` + + +There is `signal_size` input (3D input tensor): +```xml + + + + 320 + 320 + 2 + + + 2 + + + 2 + + + + 512 + 100 + 2 + + + +``` + + +There is `signal_size` input (5D input tensor, `-1` in `signal_size`, unsorted axes): +```xml + + + + 16 + 768 + 580 + 320 + 2 + + + 3 + + + 3 + + + + 16 + 768 + 1024 + 170 + 2 + + + +``` + + +There is `signal_size` input (5D input tensor, `-1` in `signal_size`, unsorted axes, the second example): +```xml + + + + 16 + 768 + 580 + 320 + 2 + + + 3 + + + 3 + + + + 16 + 768 + 2056 + 258 + 2 + + + +``` diff --git a/docs/ops/signals/IDFT_7.md b/docs/ops/signals/IDFT_7.md new file mode 100644 index 00000000000000..dcebc84e59a2b8 --- /dev/null +++ b/docs/ops/signals/IDFT_7.md @@ -0,0 +1,211 @@ +## Inverse Discrete Fourier Transformation (IDFT) {#openvino_docs_ops_signals_IDFT_7} + +**Versioned name**: *IDFT-7* + +**Category**: Signal processing + +**Short description**: *IDFT* operation performs the inverse discrete Fourier transformation of input tensor by specified dimensions. + +**Attributes**: + + No attributes available. + +**Inputs** + +* **1**: `data` - Input tensor of type *T* with data for the IDFT transformation. Type of elements is any supported floating-point type. The last dimension of the input tensor must be equal to 2, that is the input tensor shape must have the form `[D_0, D_1, ..., D_{N-1}, 2]`, representing the real and imaginary components of complex numbers in `[:, ..., :, 0]` and in `[:, ..., :, 1]` correspondingly. Required. +* **2**: **2**: `axes` - 1D tensor of type *T_IND* specifying dimension indices where IDFT is applied, and `axes` is any unordered list of indices of different dimensions of input tensor, for example, `[0, 4]`, `[4, 0]`, `[4, 2, 1]`, `[1, 2, 3]`, `[-3, 0, -2]`. These indices should be integers from `-(r - 1)` to `(r - 2)` inclusively, where `r = rank(data)`. A negative axis `a` is interpreted as an axis `r - 1 + a`. Other dimensions do not change. The order of elements in `axes` attribute matters, and is mapped directly to elements in the third input `signal_size`. Required. +* **NOTE**: The following constraint must be satisfied: `rank(data) >= len(axes) + 1 and input_shape[-1] == 2 and (rank(data) - 1) not in axes and (-1) not in axes`. +* **3**: `signal_size` - 1D tensor of type *T_SIZE* describing signal size with respect to axes from the input `axes`. If `signal_size[i] == -1`, then IDFT is calculated for full size of the axis `axes[i]`. If `signal_size[i] > input_shape[: r - 1][axes[i]]`, then input data are zero-padded with respect to the axis `axes[i]` at the end. Finally, if `signal_size[i] < input_shape[: r - 1][axes[i]]`, then input data are trimmed with respect to the axis `axes[i]`. More precisely, if `signal_size[i] < input_shape[: r - 1][axes[i]]`, the slice `0: signal_size[i]` of the axis `axes[i]` is considered. Optional, with default value `[input_shape[: r - 1][a] for a in axes]`. +* **NOTE**: If the input `signal_size` is specified, then the size of `signal_size` must be the same as the size of `axes`. + +**Outputs** + +* **1**: Resulting tensor with elements of the same type as input `data` tensor. The shape of the output is calculated as follows. If the input `signal_size` is not specified, then the shape of output is the same as the shape of `data`. Otherwise, `output_shape[axis] = input_shape[axis]` for `axis not in axes`, and if `signal_size[i] == -1`, then `output_shape[: r - 1][axes[i]] = input_shape[: r - 1][axes[i]]`, else `output_shape[: r - 1][axes[i]] = signal_size[i]`. + +**Types** + +* *T*: floating-point type. + +* *T_IND*: `int64` or `int32`. + +* *T_SIZE*: `int64` or `int32`. + +**Detailed description**: *IDFT* performs the discrete Fourier transformation of input tensor, according to the following rules. + +For simplicity, assume that an input tensor `A` has the shape `[B_0, ..., B_{k-1}, M_0, ..., M_{r-1}, 2]`, `axes=[k+1,...,k+r]`, and `signal_size=[S_0,...,S_{r-1}]`. + +Let `D` be an input tensor `A`, taking into account the `signal_size`, and, hence, `D` has the shape `[B_0, ..., B_{k-1}, S_0, ..., S_{r-1}, 2]`. + +Next, put +\f[X[j_0,\dots,j_{k-1},j_k,\dots,j_{k+r}]=D[j_0,\dots,j_{k-1},j_k,\dots,j_{k+r},0]+iD[j_0,\dots,j_{k-1},j_k,\dots,j_{k+r},1]\f] +for all indices `j_0,...,j_{k+r}`, where `i` is an imaginary unit, that is `X` is a complex tensor. + +Then the inverse discrete Fourier transform is the tensor `Y` of the same shape as the tensors `X`, such that +\f[Y[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}]=\frac{1}{\prod\limits_{j=0}^{r-1}S_j}\sum\limits_{p_0=0}^{S_0}\cdots\sum\limits_{p_{r-1}=0}^{S_{r-1}}X[n_0,\dots,n_{k-1},j_0,\dots,j_{r-1}]\exp\left(2\pi i\sum\limits_{q=0}^{r-1}\frac{m_qj_q}{S_s}\right)\f] +for all indices `n_0,...,n_{k-1}`, `m_0,...,m_{r-1}`, and the result of the operation is the real tensor `Z` with the shape `[B_0, ..., B_{k-1}, S_0, ..., S_{r-1}, 2]` and such that +\f[Z[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}, 0]=Re Y[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}],\f] +\f[Z[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}, 1]=Im Y[n_0,\dots,n_{k-1},m_0,\dots,m_{r-1}].\f] + +Calculations for the generic case of axes and signal sizes are similar. + +**Example**: + +There is no `signal_size` input (4D input tensor): +```xml + + + + 1 + 320 + 320 + 2 + + + 2 + + + + 1 + 320 + 320 + 2 + + + +``` + +There is no `signal_size` input (3D input tensor): +```xml + + + + 320 + 320 + 2 + + + 2 + + + + 320 + 320 + 2 + + + +``` + + +There is `signal_size` input (4D input tensor): +```xml + + + + 1 + 320 + 320 + 2 + + + 2 + + + 2 + + + + 1 + 512 + 100 + 2 + + + +``` + + +There is `signal_size` input (3D input tensor): +```xml + + + + 320 + 320 + 2 + + + 2 + + + 2 + + + + 512 + 100 + 2 + + + +``` + + +There is `signal_size` input (5D input tensor, `-1` in `signal_size`, unsorted axes): +```xml + + + + 16 + 768 + 580 + 320 + 2 + + + 3 + + + 3 + + + + 16 + 768 + 1024 + 170 + 2 + + + +``` + + +There is `signal_size` input (5D input tensor, `-1` in `signal_size`, unsorted axes, the second example): +```xml + + + + 16 + 768 + 580 + 320 + 2 + + + 3 + + + 3 + + + + 16 + 768 + 2056 + 258 + 2 + + + +``` diff --git a/docs/ops/sort/ExperimentalDetectronTopKROIs_6.md b/docs/ops/sort/ExperimentalDetectronTopKROIs_6.md new file mode 100644 index 00000000000000..a378d3b378d315 --- /dev/null +++ b/docs/ops/sort/ExperimentalDetectronTopKROIs_6.md @@ -0,0 +1,61 @@ +## ExperimentalDetectronTopKROIs {#openvino_docs_ops_sort_ExperimentalDetectronTopKROIs_6} + +**Versioned name**: *ExperimentalDetectronTopKROIs-6* + +**Category**: Sort + +**Short description**: An operation *ExperimentalDetectronTopKROIs* is TopK operation applied to probabilities of input +ROIs. + +**Detailed description**: Operation performs probabilities descending sorting for input ROIs and returns *max_rois* +number of ROIs. Order of sorted ROIs with equal probabilities is undefined. If number of ROIs is less than *max_rois* +then operation returns all ROIs descended sorted and the output tensor is filled with undefined values for rest output +tensor elements. + +**Attributes**: + +* *max_rois* + + * **Description**: *max_rois* attribute specifies maximal numbers of output ROIs. + * **Range of values**: non-negative integer number + * **Type**: int + * **Default value**: 0 + * **Required**: *no* + +**Inputs** + +* **1**: A 2D tensor of type *T* with shape `[number_of_ROIs, 4]` describing the ROIs as 4-tuples: +[x1, y1, x2, y2]. **Required.** + +* **2**: A 1D tensor of type *T* with shape `[number_of_input_ROIs]` contains probabilities for input ROIs. **Required.** + +**Outputs** + +* **1**: A 2D tensor of type *T* with shape `[max_rois, 4]` describing *max_rois* ROIs with highest probabilities. + +**Types** + +* *T*: any supported floating point type. + +**Example** + +```xml + + + + + 5000 + 4 + + + 5000 + + + + + 1000 + 4 + + + +``` diff --git a/docs/ops/sort/TopK_1.md b/docs/ops/sort/TopK_1.md index f705d6caaaa12b..cd9a4990c29578 100644 --- a/docs/ops/sort/TopK_1.md +++ b/docs/ops/sort/TopK_1.md @@ -68,6 +68,8 @@ Sorting and minimum/maximum are controlled by `sort` and `mode` attributes: * *mode*=`min`, *sort*=`index` - ascending by index * *mode*=`min`, *sort*=`none` - undefined +If there are several elements with the same value then their output order is not determined. + **Example** ```xml diff --git a/docs/ops/sort/TopK_3.md b/docs/ops/sort/TopK_3.md index d3a03ae2b6f58d..c2756277b30cab 100644 --- a/docs/ops/sort/TopK_3.md +++ b/docs/ops/sort/TopK_3.md @@ -75,6 +75,8 @@ Sorting and minimum/maximum are controlled by `sort` and `mode` attributes: * *mode*=`min`, *sort*=`index` - ascending by index * *mode*=`min`, *sort*=`none` - undefined +If there are several elements with the same value then their output order is not determined. + **Example** ```xml diff --git a/docs/optimization_guide/dldt_optimization_guide.md b/docs/optimization_guide/dldt_optimization_guide.md index 73e99437ac8828..2c13d91d206e90 100644 --- a/docs/optimization_guide/dldt_optimization_guide.md +++ b/docs/optimization_guide/dldt_optimization_guide.md @@ -13,11 +13,11 @@ Deep Learning Inference Engine is a part of Intel® Deep Learning Deployment Below, there are the three main steps of the deployment process: 1. **Conversion**
- Trained models are converted from a specific framework (like Caffe\* or TensorFlow\*) to a framework-agnostic Intermediate Representation (IR) format. + Trained models are converted from a specific framework, like TensorFlow\*, or format, like ONNX\*, to the framework-agnostic Intermediate Representation (IR) format. - *Performance flow*: This is an offline step where general topology-level optimizations happen automatically (see Model Optimizer Knobs Related to Performance). - - *Tools*: Intel DL Deployment Toolkit features the Model Optimizer that enables automatic and seamless transition from the training environment to the deployment environment. + - *Tools*: OpenVINO™ features the Model Optimizer that enables automatic and seamless transition from a training to deployment environment. 2. **Model Inference/Execution**
After conversion, Inference Engine consumes the IR to perform inference. While Inference Engine API itself is target-agnostic, internally, it has a notion of plugins, which are device-specific libraries facilitating the hardware-assisted acceleration. @@ -55,14 +55,16 @@ In contrast, for the latency-oriented tasks, the time to a single frame is more Refer to the [Benchmark App](../../inference-engine/samples/benchmark_app/README.md) sample, which allows latency vs. throughput measuring. -> **NOTE**: Most samples also support batching (automatically packing multiple input images into a single request). However, high batch size results in a latency penalty. So for more real-time oriented usages, lower batch sizes (as low as a single input) are usually used. However, devices like CPU, Intel® Movidius™ Myriad™ 2 VPU, Intel® Movidius™ Myriad™ X VPU, or Intel® Vision Accelerator Design with Intel® Movidius™ VPU require a number of parallel requests instead of batching to leverage the performance. +> **NOTE**: The [Benchmark App](../../inference-engine/samples/benchmark_app/README.md) sample also supports batching, that is automatically packing multiple input images into a single request. However, high batch size results in a latency penalty. So for more real-time oriented usages, batch sizes that are as low as a single input are usually used. Still, devices like CPU, Intel®Movidius™ Myriad™ 2 VPU, Intel® Movidius™ Myriad™ X VPU, or Intel® Vision Accelerator Design with Intel® Movidius™ VPU require a number of parallel requests instead of batching to leverage the performance. Running multiple requests should be coupled with a device configured to the corresponding number of streams. See details on CPU streams for an example. + +[OpenVINO™ Deep Learning Workbench tool](https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Introduction.html) provides throughput versus latency charts for different numbers of streams, requests, and batch sizes to find the performance sweet spot. ### Comparing Performance with Native/Framework Code When comparing the Inference Engine performance with the framework or another reference code, make sure that both versions are as similar as possible: -- Wrap exactly the inference execution (refer to the [Inference Engine Samples](../IE_DG/Samples_Overview.md) for examples). -- Do not include model loading time. +- Wrap exactly the inference execution (refer to the [Benchmark App](../../inference-engine/samples/benchmark_app/README.md) sample for an example). +- Track model loading time separately. - Ensure the inputs are identical for the Inference Engine and the framework. For example, Caffe\* allows to auto-populate the input with random values. Notice that it might give different performance than on real images. - Similarly, for correct performance comparison, make sure the access pattern, for example, input layouts, is optimal for Inference Engine (currently, it is NCHW). - Any user-side pre-processing should be tracked separately. @@ -77,7 +79,7 @@ You need to build your performance conclusions on reproducible data. Do the perf - If the warm-up run does not help or execution time still varies, you can try running a large number of iterations and then average or find a mean of the results. - For time values that range too much, use geomean. -Refer to the [Inference Engine Samples](../IE_DG/Samples_Overview.md) for code examples for the performance measurements. Almost every sample, except interactive demos, has a `-ni` option to specify the number of iterations. +Refer to the [Benchmark App](../../inference-engine/samples/benchmark_app/README.md) for code examples of performance measurements. Almost every sample, except interactive demos, has the `-ni` option to specify the number of iterations. ## Model Optimizer Knobs Related to Performance diff --git a/docs/ovsa/ovsa_get_started.md b/docs/ovsa/ovsa_get_started.md index f45d4bf299cff8..e9062dc7670228 100644 --- a/docs/ovsa/ovsa_get_started.md +++ b/docs/ovsa/ovsa_get_started.md @@ -606,7 +606,7 @@ This example uses `curl` to download the `face-detection-retail-004` model from 2. Download a model from the Model Zoo: ```sh cd $OVSA_DEV_ARTEFACTS - curl --create-dirs https://download.01.org/opencv/2021/openvinotoolkit/2021.1/open_model_zoo/models_bin/1/face-detection-retail-0004/FP32/face-detection-retail-0004.xml https:// download.01.org/opencv/2021/openvinotoolkit/2021.1/open_model_zoo/models_bin/1/face-detection-retail-0004/FP32/face-detection-retail-0004.bin -o model/face-detection-retail-0004.xml -o model/face-detection-retail-0004.bin + curl --create-dirs https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.3/models_bin/1/face-detection-retail-0004/FP32/face-detection-retail-0004.xml https:// storage.openvinotoolkit.org/repositories/open_model_zoo/2021.3/models_bin/1/face-detection-retail-0004/FP32/face-detection-retail-0004.bin -o model/face-detection-retail-0004.xml -o model/face-detection-retail-0004.bin ``` The model is downloaded to the `OVSA_DEV_ARTEFACTS/model` directory. diff --git a/docs/snippets/CPU_Kernel.cpp b/docs/snippets/CPU_Kernel.cpp index 920005ffcd31ff..2bf99784fe1109 100644 --- a/docs/snippets/CPU_Kernel.cpp +++ b/docs/snippets/CPU_Kernel.cpp @@ -5,7 +5,7 @@ using namespace InferenceEngine; //! [part0] InferenceEngine::Core core; // Load CPU extension as a shared library -auto extension_ptr = make_so_pointer(""); +auto extension_ptr = std::make_shared(std::string{""}); // Add extension to the CPU device core.AddExtension(extension_ptr, "CPU"); //! [part0] diff --git a/docs/snippets/InferenceEngine_network_with_state_infer.cpp b/docs/snippets/InferenceEngine_network_with_state_infer.cpp new file mode 100644 index 00000000000000..4a169c188b936e --- /dev/null +++ b/docs/snippets/InferenceEngine_network_with_state_infer.cpp @@ -0,0 +1,109 @@ +// Copyright (C) 2018-2020 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +using namespace InferenceEngine; + +int main(int argc, char *argv[]) { + try { + // --------------------------- 1. Load inference engine ------------------------------------- + std::cout << "Loading Inference Engine" << std::endl; + Core ie; + + // 2. Read a model in OpenVINO Intermediate Representation (.xml and .bin files) or ONNX (.onnx file) format + std::cout << "Loading network files" << std::endl; + CNNNetwork network; + network = ie.ReadNetwork(std::string("c:\\work\\git\\github_dldt3\\openvino\\model-optimizer\\summator.xml")); + network.setBatchSize(1); + + // 3. Load network to CPU + ExecutableNetwork executableNet = ie.LoadNetwork(network, "CPU"); + // 4. Create Infer Request + InferRequest inferRequest = executableNet.CreateInferRequest(); + + // 5. Prepare inputs + ConstInputsDataMap cInputInfo = executableNet.GetInputsInfo(); + std::vector ptrInputBlobs; + for (const auto& input : cInputInfo) { + ptrInputBlobs.push_back(inferRequest.GetBlob(input.first)); + } + InputsDataMap inputInfo; + inputInfo = network.getInputsInfo(); + for (auto &item : inputInfo) { + Precision inputPrecision = Precision::FP32; + item.second->setPrecision(inputPrecision); + } + + // 6. Prepare outputs + std::vector ptrOutputBlobs; + ConstOutputsDataMap cOutputInfo = executableNet.GetOutputsInfo(); + for (const auto& output : cOutputInfo) { + ptrOutputBlobs.push_back(inferRequest.GetBlob(output.first)); + } + + // 7. Initialize memory state before starting + for (auto &&state : inferRequest.QueryState()) { + state.Reset(); + } + + //! [part1] + // input data + std::vector data = { 1,2,3,4,5,6}; + // infer the first utterance + for (size_t next_input = 0; next_input < data.size()/2; next_input++) { + MemoryBlob::Ptr minput = as(ptrInputBlobs[0]); + auto minputHolder = minput->wmap(); + + std::memcpy(minputHolder.as(), + &data[next_input], + sizeof(float)); + + inferRequest.Infer(); + // check states + auto states = inferRequest.QueryState(); + auto mstate = as(states[0].GetState()); + auto state_buf = mstate->rmap(); + float * state =state_buf.as(); + std::cout << state[0] << "\n"; + } + + // resetting state between utterances + std::cout<<"Reset state\n"; + for (auto &&state : inferRequest.QueryState()) { + state.Reset(); + } + + // infer the second utterance + for (size_t next_input = data.size()/2; next_input < data.size(); next_input++) { + MemoryBlob::Ptr minput = as(ptrInputBlobs[0]); + auto minputHolder = minput->wmap(); + + std::memcpy(minputHolder.as(), + &data[next_input], + sizeof(float)); + + inferRequest.Infer(); + // check states + auto states = inferRequest.QueryState(); + auto mstate = as(states[0].GetState()); + auto state_buf = mstate->rmap(); + float * state =state_buf.as(); + std::cout << state[0] << "\n"; + } + //! [part1] + } + catch (const std::exception &error) { + std::cerr << error.what() << std::endl; + return 1; + } + catch (...) { + std::cerr << "Unknown/internal exception happened" << std::endl; + return 1; + } + + std::cerr << "Execution successful" << std::endl; + return 0; +} diff --git a/docs/template_extension/CMakeLists.txt b/docs/template_extension/CMakeLists.txt index 7183e1d0299117..9224383ffd62f5 100644 --- a/docs/template_extension/CMakeLists.txt +++ b/docs/template_extension/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/docs/template_extension/cpu_kernel.cpp b/docs/template_extension/cpu_kernel.cpp index ae19744ea56bc7..9469094e4c10bc 100644 --- a/docs/template_extension/cpu_kernel.cpp +++ b/docs/template_extension/cpu_kernel.cpp @@ -1,9 +1,9 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "cpu_kernel.hpp" #include "op.hpp" -#include
#include using namespace TemplateExtension; @@ -13,19 +13,19 @@ OpImplementation::OpImplementation(const std::shared_ptr &node) { try { auto castedNode = std::dynamic_pointer_cast(node); if (!castedNode) - THROW_IE_EXCEPTION << "Cannot create implementation for unknown operation!"; + IE_THROW() << "Cannot create implementation for unknown operation!"; if (castedNode->inputs().size() != 1 || castedNode->outputs().size() != 1) - THROW_IE_EXCEPTION << "Cannot create implementation for operation with incorrect number of inputs or outputs!"; + IE_THROW() << "Cannot create implementation for operation with incorrect number of inputs or outputs!"; if (castedNode->get_input_partial_shape(0).is_dynamic() || castedNode->get_output_partial_shape(0).is_dynamic()) - THROW_IE_EXCEPTION << "Cannot create implementation for op with dynamic shapes!"; + IE_THROW() << "Cannot create implementation for op with dynamic shapes!"; if (castedNode->get_input_shape(0).size() != 4 || castedNode->get_output_shape(0).size() != 4) - THROW_IE_EXCEPTION << "Operation supports only 4d tensors for input and output."; + IE_THROW() << "Operation supports only 4d tensors for input and output."; if (castedNode->get_input_element_type(0) != ngraph::element::f32 || castedNode->get_output_element_type(0) != ngraph::element::f32) - THROW_IE_EXCEPTION << "Operation supports only FP32 tensors."; + IE_THROW() << "Operation supports only FP32 tensors."; add = castedNode->getAddAttr(); inShape = castedNode->get_input_shape(0); outShape = castedNode->get_output_shape(0); - } catch (InferenceEngine::details::InferenceEngineException& ex) { + } catch (InferenceEngine::Exception& ex) { error = ex.what(); } } @@ -88,18 +88,19 @@ InferenceEngine::StatusCode OpImplementation::getSupportedConfigurations(std::ve InferenceEngine::StatusCode OpImplementation::init(InferenceEngine::LayerConfig &config, InferenceEngine::ResponseDesc *resp) noexcept { try { if (config.inConfs.size() != 1 || config.outConfs.size() != 1) { - THROW_IE_EXCEPTION << "Operation cannot be initialized with incorrect number of inputs/outputs!"; + IE_THROW() << "Operation cannot be initialized with incorrect number of inputs/outputs!"; } if (config.inConfs[0].desc.getDims().size() != 4 || config.outConfs[0].desc.getDims().size() != 4) { - THROW_IE_EXCEPTION << "Operation can be initialized only with 4d input/output tensors!"; + IE_THROW() + << "Operation can be initialized only with 4d input/output tensors!"; } if (config.outConfs[0].desc.getPrecision() != InferenceEngine::Precision::FP32 || config.inConfs[0].desc.getPrecision() != InferenceEngine::Precision::FP32) { - THROW_IE_EXCEPTION << "Operation supports only FP32 precisions!"; + IE_THROW() << "Operation supports only FP32 precisions!"; } - } catch (InferenceEngine::details::InferenceEngineException& ex) { + } catch (InferenceEngine::Exception& ex) { if (resp) { strncpy(resp->msg, error.c_str(), sizeof(resp->msg) - 1); resp->msg[sizeof(resp->msg)-1] = 0; diff --git a/docs/template_extension/cpu_kernel.hpp b/docs/template_extension/cpu_kernel.hpp index 84e92398b750e6..692bbbbec307bc 100644 --- a/docs/template_extension/cpu_kernel.hpp +++ b/docs/template_extension/cpu_kernel.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_extension/extension.cpp b/docs/template_extension/extension.cpp index a66ddf462bc413..d9baa69a059efb 100644 --- a/docs/template_extension/extension.cpp +++ b/docs/template_extension/extension.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "extension.hpp" #include "cpu_kernel.hpp" #include "op.hpp" @@ -109,7 +110,10 @@ InferenceEngine::ILayerImpl::Ptr Extension::getImplementation(const std::shared_ //! [extension:getImplementation] //! [extension:CreateExtension] -// Exported function +//Generate exported function +IE_DEFINE_EXTENSION_CREATE_FUNCTION(Extension) +//! [extension:CreateExtension] + INFERENCE_EXTENSION_API(InferenceEngine::StatusCode) InferenceEngine::CreateExtension(InferenceEngine::IExtension *&ext, InferenceEngine::ResponseDesc *resp) noexcept { try { @@ -123,4 +127,3 @@ INFERENCE_EXTENSION_API(InferenceEngine::StatusCode) InferenceEngine::CreateExte return InferenceEngine::GENERAL_ERROR; } } -//! [extension:CreateExtension] diff --git a/docs/template_extension/extension.hpp b/docs/template_extension/extension.hpp index fa7463b7cf1159..24e731bcf2d297 100644 --- a/docs/template_extension/extension.hpp +++ b/docs/template_extension/extension.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,6 @@ class Extension : public InferenceEngine::IExtension { ~Extension(); void GetVersion(const InferenceEngine::Version*& versionInfo) const noexcept override; void Unload() noexcept override {} - void Release() noexcept override { delete this; } std::map getOpSets() override; std::vector getImplTypes(const std::shared_ptr& node) override; diff --git a/docs/template_extension/fft_kernel.cpp b/docs/template_extension/fft_kernel.cpp index 799ca3f3877ce4..8e37bdfce9fcb6 100644 --- a/docs/template_extension/fft_kernel.cpp +++ b/docs/template_extension/fft_kernel.cpp @@ -1,11 +1,10 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // //! [fft_kernel:implementation] #include "fft_kernel.hpp" #include "fft_op.hpp" -#include
#include #include @@ -15,13 +14,13 @@ using namespace TemplateExtension; FFTImpl::FFTImpl(const std::shared_ptr &node) { auto castedNode = std::dynamic_pointer_cast(node); if (!castedNode) - THROW_IE_EXCEPTION << "Cannot create implementation for unknown operation!"; + IE_THROW() << "Cannot create implementation for unknown operation!"; if (castedNode->inputs().size() != 1 || castedNode->outputs().size() != 1) - THROW_IE_EXCEPTION << "Cannot create implementation for operation with incorrect number of inputs or outputs!"; + IE_THROW() << "Cannot create implementation for operation with incorrect number of inputs or outputs!"; if (castedNode->get_input_partial_shape(0).is_dynamic() || castedNode->get_output_partial_shape(0).is_dynamic()) - THROW_IE_EXCEPTION << "Cannot create implementation for op with dynamic shapes!"; + IE_THROW() << "Cannot create implementation for op with dynamic shapes!"; if (castedNode->get_input_element_type(0) != ngraph::element::f32 || castedNode->get_output_element_type(0) != ngraph::element::f32) - THROW_IE_EXCEPTION << "Operation supports only FP32 tensors."; + IE_THROW() << "Operation supports only FP32 tensors."; inpShape = castedNode->get_input_shape(0); outShape = castedNode->get_output_shape(0); inverse = castedNode->inverse; @@ -58,14 +57,14 @@ InferenceEngine::StatusCode FFTImpl::getSupportedConfigurations(std::vectormsg, error.c_str(), sizeof(resp->msg) - 1); resp->msg[sizeof(resp->msg)-1] = 0; diff --git a/docs/template_extension/fft_kernel.hpp b/docs/template_extension/fft_kernel.hpp index 0adfb537502cb0..74fc3a4b13805b 100644 --- a/docs/template_extension/fft_kernel.hpp +++ b/docs/template_extension/fft_kernel.hpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// source: https://github.com/openvinotoolkit/openvino/tree/master/docs/template_extension //! [fft_kernel:header] #pragma once diff --git a/docs/template_extension/fft_op.cpp b/docs/template_extension/fft_op.cpp index b6e81cad492ffb..8d85d5c08f59cb 100644 --- a/docs/template_extension/fft_op.cpp +++ b/docs/template_extension/fft_op.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_extension/fft_op.hpp b/docs/template_extension/fft_op.hpp index b2d84d6956e0b7..eca07bcb7fcc37 100644 --- a/docs/template_extension/fft_op.hpp +++ b/docs/template_extension/fft_op.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_extension/op.cpp b/docs/template_extension/op.cpp index e6a7f950aa18b5..416b39495c1bf7 100644 --- a/docs/template_extension/op.cpp +++ b/docs/template_extension/op.cpp @@ -1,13 +1,14 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "op.hpp" using namespace TemplateExtension; -constexpr ngraph::NodeTypeInfo Operation::type_info; - //! [op:ctor] +NGRAPH_RTTI_DEFINITION(TemplateExtension::Operation, "Template", 0); + Operation::Operation(const ngraph::Output &arg, int64_t add) : Op({arg}), add(add) { constructor_validate_and_infer_types(); } diff --git a/docs/template_extension/op.hpp b/docs/template_extension/op.hpp index ffdc11b014248b..dd03e20db162c6 100644 --- a/docs/template_extension/op.hpp +++ b/docs/template_extension/op.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,8 +11,7 @@ namespace TemplateExtension { class Operation : public ngraph::op::Op { public: - static constexpr ngraph::NodeTypeInfo type_info{"Template", 0}; - const ngraph::NodeTypeInfo& get_type_info() const override { return type_info; } + NGRAPH_RTTI_DECLARATION; Operation() = default; Operation(const ngraph::Output& arg, int64_t add); diff --git a/docs/template_plugin/CMakeLists.txt b/docs/template_plugin/CMakeLists.txt index dcd55e272edcee..7131008d6de9dd 100644 --- a/docs/template_plugin/CMakeLists.txt +++ b/docs/template_plugin/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/docs/template_plugin/include/template/template_config.hpp b/docs/template_plugin/include/template/template_config.hpp index 62f603cbf16764..4749f8dc0eece2 100644 --- a/docs/template_plugin/include/template/template_config.hpp +++ b/docs/template_plugin/include/template/template_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/src/CMakeLists.txt b/docs/template_plugin/src/CMakeLists.txt index 6332fc04e1536d..68693126df70f2 100644 --- a/docs/template_plugin/src/CMakeLists.txt +++ b/docs/template_plugin/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/docs/template_plugin/src/template_async_infer_request.cpp b/docs/template_plugin/src/template_async_infer_request.cpp index 41c1f62724f6b5..503607530004b7 100644 --- a/docs/template_plugin/src/template_async_infer_request.cpp +++ b/docs/template_plugin/src/template_async_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/src/template_async_infer_request.hpp b/docs/template_plugin/src/template_async_infer_request.hpp index 8e9dd807212d8f..f3fa7f8d47a53c 100644 --- a/docs/template_plugin/src/template_async_infer_request.hpp +++ b/docs/template_plugin/src/template_async_infer_request.hpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #pragma once #include diff --git a/docs/template_plugin/src/template_config.cpp b/docs/template_plugin/src/template_config.cpp index 7297c5effbdd3a..b713cfa98ea9ac 100644 --- a/docs/template_plugin/src/template_config.cpp +++ b/docs/template_plugin/src/template_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -29,12 +29,12 @@ Configuration::Configuration(const ConfigMap& config, const Configuration & defa } else if (CONFIG_KEY(DEVICE_ID) == key) { deviceId = std::stoi(value); if (deviceId > 0) { - THROW_IE_EXCEPTION << "Device ID " << deviceId << " is not supported"; + IE_THROW() << "Device ID " << deviceId << " is not supported"; } } else if (CONFIG_KEY(PERF_COUNT) == key) { perfCount = (CONFIG_VALUE(YES) == value); } else if (throwOnUnsupported) { - THROW_IE_EXCEPTION << NOT_FOUND_str << ": " << key; + IE_THROW(NotFound) << ": " << key; } } } @@ -53,6 +53,6 @@ InferenceEngine::Parameter Configuration::Get(const std::string& name) const { } else if (name == CONFIG_KEY_INTERNAL(CPU_THREADS_PER_STREAM)) { return {std::to_string(_streamsExecutorConfig._threadsPerStream)}; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << ": " << name; + IE_THROW(NotFound) << ": " << name; } } diff --git a/docs/template_plugin/src/template_config.hpp b/docs/template_plugin/src/template_config.hpp index b57d40a63b3b70..2085e290af2171 100644 --- a/docs/template_plugin/src/template_config.hpp +++ b/docs/template_plugin/src/template_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/src/template_executable_network.cpp b/docs/template_plugin/src/template_executable_network.cpp index 0a2193342d8af5..b20eb939b71950 100644 --- a/docs/template_plugin/src/template_executable_network.cpp +++ b/docs/template_plugin/src/template_executable_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,12 +27,12 @@ TemplatePlugin::ExecutableNetwork::ExecutableNetwork(const std::shared_ptr(std::static_pointer_cast(internalRequest), _taskExecutor, _plugin->_waitExecutor, _callbackExecutor); - asyncRequest.reset(new InferenceEngine::InferRequestBase(asyncThreadSafeImpl), - [](InferenceEngine::IInferRequest *p) { p->Release(); }); + asyncRequest.reset(new InferenceEngine::InferRequestBase(asyncThreadSafeImpl)); asyncThreadSafeImpl->SetPointerToPublicInterface(asyncRequest); return asyncRequest; } @@ -182,7 +181,7 @@ InferenceEngine::Parameter TemplatePlugin::ExecutableNetwork::GetMetric(const st unsigned int value = _cfg._streamsExecutorConfig._streams; IE_SET_METRIC_RETURN(OPTIMAL_NUMBER_OF_INFER_REQUESTS, value); } else { - THROW_IE_EXCEPTION << "Unsupported ExecutableNetwork metric: " << name; + IE_THROW() << "Unsupported ExecutableNetwork metric: " << name; } } // ! [executable_network:get_metric] diff --git a/docs/template_plugin/src/template_executable_network.hpp b/docs/template_plugin/src/template_executable_network.hpp index ee3c8821eb2369..b1d0d3b0958efb 100644 --- a/docs/template_plugin/src/template_executable_network.hpp +++ b/docs/template_plugin/src/template_executable_network.hpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #pragma once #include diff --git a/docs/template_plugin/src/template_function_transformation.cpp b/docs/template_plugin/src/template_function_transformation.cpp index 731ebdb4096d60..0c58de4c00cf87 100644 --- a/docs/template_plugin/src/template_function_transformation.cpp +++ b/docs/template_plugin/src/template_function_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/src/template_function_transformation.hpp b/docs/template_plugin/src/template_function_transformation.hpp index 2876c6e8f53aa6..3cd330edce2503 100644 --- a/docs/template_plugin/src/template_function_transformation.hpp +++ b/docs/template_plugin/src/template_function_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/src/template_infer_request.cpp b/docs/template_plugin/src/template_infer_request.cpp index b32d268ae8d77a..6394fe491d3128 100644 --- a/docs/template_plugin/src/template_infer_request.cpp +++ b/docs/template_plugin/src/template_infer_request.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include #include @@ -70,43 +69,48 @@ void TemplateInferRequest::allocateDeviceBuffers() { } template -static void AllocateImpl(const BlobDataMap& blobDataMap, - BlobMap& blobMap, - BlobMap& networkBlobMap, +static void AllocateImpl(const BlobDataMap& userDataMap, + BlobMap& userBlobMap, + BlobMap& deviceBlobMap, GetNetworkPrecisionF&& GetNetworkPrecision) { - for (auto&& blobData : blobDataMap) { - auto& dims = blobData.second->getTensorDesc().getDims(); - auto& precision = blobData.second->getTensorDesc().getPrecision(); - auto layout = blobData.second->getTensorDesc().getLayout(); - Blob::Ptr blob; - switch (precision) { - case Precision::U8: { - blob = InferenceEngine::make_shared_blob({precision, dims, layout}); - } break; - case Precision::FP32 : { - blob = InferenceEngine::make_shared_blob({precision, dims, layout}); - } break; - default: THROW_IE_EXCEPTION << "Template Plugin: Unsupported Input/Output Presision"; + for (auto&& userData : userDataMap) { + auto& dims = userData.second->getTensorDesc().getDims(); + const auto devicePrecision = Precision::FP32; + const auto deviceLayout = TensorDesc::getLayoutByDims(dims); + auto userPrecision = userData.second->getTensorDesc().getPrecision(); + auto userLayout = userData.second->getTensorDesc().getLayout(); + + Blob::Ptr userBlob; + switch (userPrecision) { + case Precision::U8: { + userBlob = InferenceEngine::make_shared_blob({userPrecision, dims, userLayout}); + } break; + case Precision::FP32 : { + userBlob = InferenceEngine::make_shared_blob({userPrecision, dims, userLayout}); + } break; + default: IE_THROW() << "Template Plugin: Unsupported Input/Output Precision"; } - blob->allocate(); - blobMap[blobData.first] = blob; + userBlob->allocate(); + userBlobMap[userData.first] = userBlob; - auto networkPresion = GetNetworkPrecision(blobData.first); - Blob::Ptr networkBlob; - switch (networkPresion) { - case ngraph::element::Type_t::f32 : { - if (precision == Precision::FP32) { - networkBlob = blob; - } else { - networkBlob = InferenceEngine::make_shared_blob({Precision::FP32, dims, layout}); - } - } break; - default: THROW_IE_EXCEPTION << "Template Plugin: Unsupported network Input/Output Presision"; + auto networkPrecision = GetNetworkPrecision(userData.first); + Blob::Ptr deviceBlob; + switch (networkPrecision) { + case ngraph::element::Type_t::f32 : { + if (userPrecision == devicePrecision && userLayout == deviceLayout) { + deviceBlob = userBlob; + } else { + deviceBlob = InferenceEngine::make_shared_blob({devicePrecision, dims, deviceLayout}); + } + } break; + default: IE_THROW() << "Template Plugin: Unsupported network Input/Output Presision"; } - if (blob != networkBlob) { - networkBlob->allocate(); + // preprocessing converts user input blob to desired device input blob automatically + // NOTE: this is not supported for output user blobs yet + if (userBlob != deviceBlob) { + deviceBlob->allocate(); } - networkBlobMap[blobData.first] = networkBlob; + deviceBlobMap[userData.first] = deviceBlob; } } @@ -147,7 +151,7 @@ static void blobCopy(const Blob::Ptr& src, const Blob::Ptr& dst) { blobCopy(src, dst); } break; default : { - THROW_IE_EXCEPTION << "Unsupported precision conversion from " + IE_THROW() << "Unsupported precision conversion from " << src->getTensorDesc().getPrecision() <<" to " << dst->getTensorDesc().getPrecision(); } } @@ -159,13 +163,13 @@ static void blobCopy(const Blob::Ptr& src, const Blob::Ptr& dst) { blobCopy(src, dst); } break; default : { - THROW_IE_EXCEPTION << "Unsupported precision conversion from " + IE_THROW() << "Unsupported precision conversion from " << src->getTensorDesc().getPrecision() <<" to " << dst->getTensorDesc().getPrecision(); } } } break; default : { - THROW_IE_EXCEPTION << "Unsupported precision conversion from " << src->getTensorDesc().getPrecision(); + IE_THROW() << "Unsupported precision conversion from " << src->getTensorDesc().getPrecision(); } } } diff --git a/docs/template_plugin/src/template_infer_request.hpp b/docs/template_plugin/src/template_infer_request.hpp index c6ec41b293e347..a6956be4a6a115 100644 --- a/docs/template_plugin/src/template_infer_request.hpp +++ b/docs/template_plugin/src/template_infer_request.hpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #pragma once #include diff --git a/docs/template_plugin/src/template_itt.hpp b/docs/template_plugin/src/template_itt.hpp index 0b118a0305ba08..089d49c17522f7 100644 --- a/docs/template_plugin/src/template_itt.hpp +++ b/docs/template_plugin/src/template_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/docs/template_plugin/src/template_pattern_transformation.cpp b/docs/template_plugin/src/template_pattern_transformation.cpp index cda77d889c8533..8a7c3bb8d3fd33 100644 --- a/docs/template_plugin/src/template_pattern_transformation.cpp +++ b/docs/template_plugin/src/template_pattern_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/src/template_pattern_transformation.hpp b/docs/template_plugin/src/template_pattern_transformation.hpp index 68dc777ebb4334..4ea8fadf14d826 100644 --- a/docs/template_plugin/src/template_pattern_transformation.hpp +++ b/docs/template_plugin/src/template_pattern_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/src/template_plugin.cpp b/docs/template_plugin/src/template_plugin.cpp index ff339499645cb0..50e1d828f73f20 100644 --- a/docs/template_plugin/src/template_plugin.cpp +++ b/docs/template_plugin/src/template_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,6 +14,7 @@ #include #include #include +#include #include "template/template_config.hpp" #include "template_itt.hpp" @@ -58,6 +59,8 @@ std::shared_ptr TransformNetwork(const std::shared_ptr(); + // Template plugin handles only FP32 networks + passManager.register_pass(ngraph::element::f16, ngraph::element::f32); // Example: register plugin specific transformation passManager.register_pass(); passManager.register_pass(); @@ -89,7 +92,7 @@ InferenceEngine::ExecutableNetworkInternal::Ptr Plugin::LoadExeNetworkImpl(const if (output_precision != InferenceEngine::Precision::FP32 && output_precision != InferenceEngine::Precision::FP16 && output_precision != InferenceEngine::Precision::U8) { - THROW_IE_EXCEPTION << "Template device supports only U8, FP16 and FP32 output precision."; + IE_THROW() << "Template device supports only U8, FP16 and FP32 output precision."; } } @@ -100,14 +103,14 @@ InferenceEngine::ExecutableNetworkInternal::Ptr Plugin::LoadExeNetworkImpl(const input_precision != InferenceEngine::Precision::FP16 && input_precision != InferenceEngine::Precision::I16 && input_precision != InferenceEngine::Precision::U8) { - THROW_IE_EXCEPTION << "Input image format " << input_precision << " is not supported yet.\n" + IE_THROW() << "Input image format " << input_precision << " is not supported yet.\n" << "Supported formats are: FP32, FP16, I16 and U8."; } } auto function = network.getFunction(); if (function == nullptr) { - THROW_IE_EXCEPTION << "TEMPLATE plugin can compile only IR v10 networks"; + IE_THROW() << "TEMPLATE plugin can compile only IR v10 networks"; } return std::make_shared(function, cfg, std::static_pointer_cast(shared_from_this())); @@ -135,7 +138,7 @@ InferenceEngine::QueryNetworkResult Plugin::QueryNetwork(const InferenceEngine:: auto function = network.getFunction(); if (function == nullptr) { - THROW_IE_EXCEPTION << "Template Plugin supports only ngraph cnn network representation"; + IE_THROW() << "Template Plugin supports only ngraph cnn network representation"; } // 1. First of all we should store initial input operation set @@ -215,7 +218,7 @@ InferenceEngine::QueryNetworkResult Plugin::QueryNetwork(const InferenceEngine:: // ! [plugin:add_extension] void Plugin::AddExtension(InferenceEngine::IExtensionPtr /*extension*/) { // TODO: add extensions if plugin supports extensions - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } // ! [plugin:add_extension] @@ -239,6 +242,8 @@ InferenceEngine::Parameter Plugin::GetMetric(const std::string& name, const std: METRIC_KEY(SUPPORTED_METRICS), METRIC_KEY(SUPPORTED_CONFIG_KEYS), METRIC_KEY(FULL_DEVICE_NAME), + METRIC_KEY(IMPORT_EXPORT_SUPPORT), + METRIC_KEY(DEVICE_ARCHITECTURE), METRIC_KEY(OPTIMIZATION_CAPABILITIES), METRIC_KEY(RANGE_FOR_ASYNC_INFER_REQUESTS) }; IE_SET_METRIC_RETURN(SUPPORTED_METRICS, supportedMetrics); @@ -261,6 +266,12 @@ InferenceEngine::Parameter Plugin::GetMetric(const std::string& name, const std: } else if (METRIC_KEY(FULL_DEVICE_NAME) == name) { std::string name = "Template Device Full Name"; IE_SET_METRIC_RETURN(FULL_DEVICE_NAME, name); + } else if (METRIC_KEY(IMPORT_EXPORT_SUPPORT) == name) { + IE_SET_METRIC_RETURN(IMPORT_EXPORT_SUPPORT, true); + } else if (METRIC_KEY(DEVICE_ARCHITECTURE) == name) { + // TODO: return device architecture for device specified by DEVICE_ID config + std::string arch = "TEMPLATE"; + IE_SET_METRIC_RETURN(DEVICE_ARCHITECTURE, arch); } else if (METRIC_KEY(OPTIMIZATION_CAPABILITIES) == name) { // TODO: fill actual list of supported capabilities: e.g. Template device supports only FP32 std::vector capabilities = { METRIC_VALUE(FP32) /*, TEMPLATE_METRIC_VALUE(HARDWARE_CONVOLUTION)*/ }; @@ -270,7 +281,7 @@ InferenceEngine::Parameter Plugin::GetMetric(const std::string& name, const std: using uint = unsigned int; IE_SET_METRIC_RETURN(RANGE_FOR_ASYNC_INFER_REQUESTS, std::make_tuple(uint{1}, uint{1}, uint{1})); } else { - THROW_IE_EXCEPTION << "Unsupported device metric: " << name; + IE_THROW() << "Unsupported device metric: " << name; } } // ! [plugin:get_metric] diff --git a/docs/template_plugin/src/template_plugin.hpp b/docs/template_plugin/src/template_plugin.hpp index fe099ff734bc96..fd520767444b0c 100644 --- a/docs/template_plugin/src/template_plugin.hpp +++ b/docs/template_plugin/src/template_plugin.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ class Plugin : public InferenceEngine::InferencePluginInternal { using Ptr = std::shared_ptr; Plugin(); - ~Plugin() override; + ~Plugin(); void SetConfig(const std::map &config) override; InferenceEngine::QueryNetworkResult diff --git a/docs/template_plugin/tests/functional/CMakeLists.txt b/docs/template_plugin/tests/functional/CMakeLists.txt index 627e112c4e223e..a2962cea0ae2c6 100644 --- a/docs/template_plugin/tests/functional/CMakeLists.txt +++ b/docs/template_plugin/tests/functional/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2019 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/docs/template_plugin/tests/functional/core_config.cpp b/docs/template_plugin/tests/functional/core_config.cpp index 25bc749cc4fc8d..e75091f571fa70 100644 --- a/docs/template_plugin/tests/functional/core_config.cpp +++ b/docs/template_plugin/tests/functional/core_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/caching_tests.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/caching_tests.cpp new file mode 100644 index 00000000000000..f61e4c54d7ec81 --- /dev/null +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/caching_tests.cpp @@ -0,0 +1,25 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "behavior/caching_tests.hpp" + +using namespace LayerTestsDefinitions; + +namespace { + static const std::vector precisionsTemplate = { + ngraph::element::f32, + }; + + static const std::vector batchSizesTemplate = { + 1, 2 + }; + + INSTANTIATE_TEST_CASE_P(smoke_CachingSupportCase_Template, LoadNetworkCacheTestBase, + ::testing::Combine( + ::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), + ::testing::ValuesIn(precisionsTemplate), + ::testing::ValuesIn(batchSizesTemplate), + ::testing::Values(CommonTestUtils::DEVICE_TEMPLATE)), + LoadNetworkCacheTestBase::getTestCaseName); +} // namespace diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/config.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/config.cpp index 8b714fca32798b..e10f8d64c688af 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/config.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/core_integration.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/core_integration.cpp index f9c51e91fbb595..2b669a6520a376 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/core_integration.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/core_integration.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/cpp_holders.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/cpp_holders.cpp index 051d1ae2d07999..8a2ee657b7917a 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/cpp_holders.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/cpp_holders.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/exec_graph_info.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/exec_graph_info.cpp index ecaa8620dc0ea4..a0aa412fb0d6e9 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/exec_graph_info.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/exec_graph_info.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request.cpp index d689497dd36e6b..2b39ef540057b0 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_callback.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_callback.cpp index 5349d1c32c1e7b..8fd635ae8bf481 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_callback.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_callback.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_config.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_config.cpp index df830d9cad843d..3ee70738e5a0d5 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_config.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_input.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_input.cpp index 6bd1095c0c1235..118aa905757b79 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_input.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_input.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_output.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_output.cpp index 47a1c3f014869d..3643cc688541fd 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_output.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/infer_request_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/layout.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/layout.cpp index a3b244befc2e23..c5770ede2a0956 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/layout.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/layout.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/preprocessing.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/preprocessing.cpp index 1897979f5b5d4b..7041ceb5080dc1 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/preprocessing.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/preprocessing.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/set_preprocess.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/set_preprocess.cpp index c90fdefc88a4a6..1dd8b83f2eca4d 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/set_preprocess.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/set_preprocess.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,4 +26,32 @@ INSTANTIATE_TEST_CASE_P(smoke_BehaviorTests, PreprocessTest, ::testing::ValuesIn(configs)), PreprocessTest::getTestCaseName); +const std::vector ioPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::U8 +}; +const std::vector netLayouts = { + InferenceEngine::Layout::NCHW, + // InferenceEngine::Layout::NHWC +}; + +const std::vector ioLayouts = { + InferenceEngine::Layout::NCHW, + InferenceEngine::Layout::NHWC +}; + +INSTANTIATE_TEST_CASE_P(smoke_BehaviorTests, PreprocessConversionTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(CommonTestUtils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + PreprocessConversionTest::getTestCaseName); + } // namespace \ No newline at end of file diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/test_plugin.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/test_plugin.cpp index 70f5dd83d357f9..8d65895bc36b04 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/test_plugin.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/test_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/version.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/version.cpp index 11e71777566def..818a627a51973a 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/behavior/version.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/behavior/version.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/hetero/query_network.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/hetero/query_network.cpp index 98d41cb452e67f..b369e55adf225e 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/hetero/query_network.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/hetero/query_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/hetero/synthetic.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/hetero/synthetic.cpp index 4cca0161d7e101..15f940780ddb64 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/hetero/synthetic.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/hetero/synthetic.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp index 675b607de2b5b5..3f6d9c494066c7 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,6 +14,7 @@ namespace { // ! [test_convolution:declare_parameters] const std::vector netPrecisions = { InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, }; /* ============= 2D Convolution ============= */ @@ -112,7 +113,7 @@ const auto conv3DParams_AutoPadValid = ::testing::Combine( ::testing::Values(ngraph::op::PadType::VALID) ); -INSTANTIATE_TEST_CASE_P(Convolution3D_ExplicitPadding, ConvolutionLayerTest, +INSTANTIATE_TEST_CASE_P(smoke_Convolution3D_ExplicitPadding, ConvolutionLayerTest, ::testing::Combine( conv3DParams_ExplicitPadding, ::testing::ValuesIn(netPrecisions), @@ -124,7 +125,7 @@ INSTANTIATE_TEST_CASE_P(Convolution3D_ExplicitPadding, ConvolutionLayerTest, ::testing::Values(CommonTestUtils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); -INSTANTIATE_TEST_CASE_P(Convolution3D_AutoPadValid, ConvolutionLayerTest, +INSTANTIATE_TEST_CASE_P(nightly_Convolution3D_AutoPadValid, ConvolutionLayerTest, ::testing::Combine( conv3DParams_AutoPadValid, ::testing::ValuesIn(netPrecisions), diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp index 10561e623967c2..85313f410d3606 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,7 +14,7 @@ const std::vector netPrecisions = { InferenceEngine::Precision::FP32, }; -INSTANTIATE_TEST_CASE_P(ReshapeCheckDynBatch, ReshapeLayerTest, +INSTANTIATE_TEST_CASE_P(smoke_ReshapeCheckDynBatch, ReshapeLayerTest, ::testing::Combine( ::testing::Values(true), ::testing::ValuesIn(netPrecisions), @@ -28,7 +28,7 @@ INSTANTIATE_TEST_CASE_P(ReshapeCheckDynBatch, ReshapeLayerTest, ::testing::Values(std::map({}))), ReshapeLayerTest::getTestCaseName); -INSTANTIATE_TEST_CASE_P(ReshapeCheck, ReshapeLayerTest, +INSTANTIATE_TEST_CASE_P(smoke_ReshapeCheck, ReshapeLayerTest, ::testing::Combine( ::testing::Values(true), ::testing::ValuesIn(netPrecisions), diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp index 290b0a2fd96930..3ad1b07c736e5e 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -42,7 +42,7 @@ const auto params2D = testing::Combine( ); INSTANTIATE_TEST_CASE_P( - SoftMax2D, + smoke_SoftMax2D, SoftMaxLayerTest, params2D, SoftMaxLayerTest::getTestCaseName @@ -69,7 +69,7 @@ const auto params4D = testing::Combine( ); INSTANTIATE_TEST_CASE_P( - SoftMax4D, + smoke_SoftMax4D, SoftMaxLayerTest, params4D, SoftMaxLayerTest::getTestCaseName diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp index 1372a797e28d74..44f2c6737785b4 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp @@ -1,6 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 - +// #include @@ -11,7 +11,7 @@ using namespace LayerTestsDefinitions; namespace { -INSTANTIATE_TEST_CASE_P(NumSplitsCheck, SplitLayerTest, +INSTANTIATE_TEST_CASE_P(smoke_NumSplitsCheck, SplitLayerTest, ::testing::Combine( ::testing::Values(1, 2, 3, 5, 6, 10, 30), ::testing::Values(0, 1, 2, 3), diff --git a/docs/template_plugin/tests/functional/skip_tests_config.cpp b/docs/template_plugin/tests/functional/skip_tests_config.cpp index 37d4a75c74c72d..7b3d7e75b905f4 100644 --- a/docs/template_plugin/tests/functional/skip_tests_config.cpp +++ b/docs/template_plugin/tests/functional/skip_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,5 +14,8 @@ std::vector disabledTestPatterns() { R"(.*SplitLayerTest.*numSplits\=30.*)", // CVS-44774 ".*PreprocessTest.*", + // CVS-51758 + ".*PreprocessConversionTest.*oPRC=U8.*", + ".*PreprocessConversionTest.*oLT=NHWC.*" }; } \ No newline at end of file diff --git a/docs/template_plugin/tests/functional/transformations/template_transformations_test.cpp b/docs/template_plugin/tests/functional/transformations/template_transformations_test.cpp index ca67fdacc7b794..a699cf452827d2 100644 --- a/docs/template_plugin/tests/functional/transformations/template_transformations_test.cpp +++ b/docs/template_plugin/tests/functional/transformations/template_transformations_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/CMakeLists.txt b/inference-engine/CMakeLists.txt index 95c657222ef1bd..4f6df8b1f3a1b2 100644 --- a/inference-engine/CMakeLists.txt +++ b/inference-engine/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -13,8 +13,6 @@ include(cmake/features.cmake) # resolving dependencies for the project include(cmake/dependencies.cmake) -find_package(Threads REQUIRED) - function(ie_developer_export_targets) openvino_developer_export_targets(COMPONENT inference_engine TARGETS ${ARGN}) endfunction() @@ -72,7 +70,7 @@ add_subdirectory(ie_bridges/c) # install C++ samples -ie_cpack_add_component(cpp_samples REQUIRED DEPENDS core) +ie_cpack_add_component(cpp_samples DEPENDS core) if(UNIX) install(DIRECTORY samples/ @@ -92,7 +90,7 @@ endif() # install C samples -ie_cpack_add_component(c_samples REQUIRED DEPENDS core) +ie_cpack_add_component(c_samples DEPENDS core_c) if(UNIX) install(PROGRAMS samples/build_samples.sh @@ -116,7 +114,7 @@ install(FILES samples/CMakeLists.txt # install Python samples if(ENABLE_PYTHON) - ie_cpack_add_component(python_samples REQUIRED DEPENDS core) + ie_cpack_add_component(python_samples DEPENDS core) install(DIRECTORY ${ie_python_api_SOURCE_DIR}/sample/ DESTINATION ${IE_CPACK_IE_DIR}/samples/python @@ -126,7 +124,7 @@ endif() # install speech demo files if(SPEECH_LIBS_AND_DEMOS) - ie_cpack_add_component(speech_demo_files REQUIRED) + ie_cpack_add_component(speech_demo_files) install(DIRECTORY ${TEMP}/deployment_tools ${TEMP}/data_processing @@ -138,7 +136,7 @@ endif() # Developer package # -openvino_developer_export_targets(COMPONENT openvino_common TARGETS format_reader) +openvino_developer_export_targets(COMPONENT openvino_common TARGETS format_reader gflags ie_samples_utils) openvino_developer_export_targets(COMPONENT ngraph TARGETS ${NGRAPH_LIBRARIES}) # for Template plugin diff --git a/inference-engine/cmake/coverage.cmake b/inference-engine/cmake/coverage.cmake index 3c0982ec70e5e7..141df2dad83829 100644 --- a/inference-engine/cmake/coverage.cmake +++ b/inference-engine/cmake/coverage.cmake @@ -1,15 +1,13 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # - -set(DLDT_COVERAGE_GCDA_DATA_DIRECTORY "${CMAKE_BINARY_DIR}/inference-engine/src") set(DLDT_COVERAGE_BASE_DIRECTORY "${IE_MAIN_SOURCE_DIR}/src") ie_coverage_clean(REPOSITORY "dldt" - DIRECTORY "${DLDT_COVERAGE_GCDA_DATA_DIRECTORY}") + DIRECTORY "${OV_COVERAGE_GCDA_DATA_DIRECTORY}") ie_coverage_capture(INFO_FILE "dldt" BASE_DIRECTORY "${DLDT_COVERAGE_BASE_DIRECTORY}" - DIRECTORY "${DLDT_COVERAGE_GCDA_DATA_DIRECTORY}") + DIRECTORY "${OV_COVERAGE_GCDA_DATA_DIRECTORY}") # Generate reports @@ -19,9 +17,10 @@ ie_coverage_extract(INPUT "dldt" OUTPUT "inference_engine" ie_coverage_genhtml(INFO_FILE "inference_engine" PREFIX "${DLDT_COVERAGE_BASE_DIRECTORY}") -ie_coverage_extract(INPUT "dldt" OUTPUT "inference_engine_ir_reader" - PATTERNS "${DLDT_COVERAGE_BASE_DIRECTORY}/readers/*") -ie_coverage_genhtml(INFO_FILE "inference_engine_ir_reader" +ie_coverage_extract(INPUT "dldt" OUTPUT "inference_engine_ir_v10_reader" + PATTERNS "${DLDT_COVERAGE_BASE_DIRECTORY}/readers/ir_reader/*" + "${DLDT_COVERAGE_BASE_DIRECTORY}/readers/reader_api/*") +ie_coverage_genhtml(INFO_FILE "inference_engine_ir_v10_reader" PREFIX "${DLDT_COVERAGE_BASE_DIRECTORY}") ie_coverage_extract(INPUT "dldt" OUTPUT "inference_engine_legacy" @@ -49,15 +48,20 @@ ie_coverage_extract(INPUT "dldt" OUTPUT "inference_engine_transformations" ie_coverage_genhtml(INFO_FILE "inference_engine_transformations" PREFIX "${DLDT_COVERAGE_BASE_DIRECTORY}") +ie_coverage_extract(INPUT "dldt" OUTPUT "inference_engine_snippets" + PATTERNS "${DLDT_COVERAGE_BASE_DIRECTORY}/snippets/*") +ie_coverage_genhtml(INFO_FILE "inference_engine_snippets" + PREFIX "${DLDT_COVERAGE_BASE_DIRECTORY}") + ie_coverage_extract(INPUT "dldt" OUTPUT "low_precision_transformations" PATTERNS "${DLDT_COVERAGE_BASE_DIRECTORY}/low_precision_transformations/*") ie_coverage_genhtml(INFO_FILE "low_precision_transformations" PREFIX "${DLDT_COVERAGE_BASE_DIRECTORY}") ie_coverage_extract(INPUT "dldt" OUTPUT "template_plugin" - PATTERNS "${DLDT_COVERAGE_BASE_DIRECTORY}/template_plugin/*") + PATTERNS "${DLDT_COVERAGE_BASE_DIRECTORY}/template_plugin/*") ie_coverage_genhtml(INFO_FILE "template_plugin" - PREFIX "${DLDT_COVERAGE_BASE_DIRECTORY}") + PREFIX "${DLDT_COVERAGE_BASE_DIRECTORY}") if(ENABLE_MKL_DNN) ie_coverage_extract(INPUT "dldt" OUTPUT "mkldnn_plugin" diff --git a/inference-engine/cmake/dependencies.cmake b/inference-engine/cmake/dependencies.cmake index ae69fcc016a54b..7c6428b669eae9 100644 --- a/inference-engine/cmake/dependencies.cmake +++ b/inference-engine/cmake/dependencies.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -126,7 +126,7 @@ if (THREADING STREQUAL "OMP") log_rpath_from_dir(OMP "${OMP}/lib") debug_message(STATUS "intel_omp=" ${OMP}) - ie_cpack_add_component(omp) + ie_cpack_add_component(omp REQUIRED) file(GLOB_RECURSE source_list "${OMP}/*${CMAKE_SHARED_LIBRARY_SUFFIX}*") install(FILES ${source_list} DESTINATION "deployment_tools/inference_engine/external/omp/lib" @@ -247,7 +247,7 @@ if (ENABLE_OPENCV) elseif (LINUX_OS_NAME STREQUAL "Ubuntu 18.04" AND X86_64) set(OPENCV_SUFFIX "ubuntu18") set(OPENCV_HASH "8ec3e3552500dee334162386b98cc54a5608de1f1a18f283523fc0cc13ee2f83") - elseif (LINUX_OS_NAME STREQUAL "Ubuntu 20.04" AND X86_64) + elseif ((LINUX_OS_NAME STREQUAL "Ubuntu 20.04" OR LINUX_OS_NAME STREQUAL "LinuxMint 20.1") AND X86_64) set(OPENCV_SUFFIX "ubuntu20") set(OPENCV_HASH "2b7808d002864acdc5fc0b19cd30dadc31a37cc267931cad605f23f2383bfc21") elseif(NOT DEFINED OpenCV_DIR AND NOT DEFINED ENV{OpenCV_DIR}) diff --git a/inference-engine/cmake/features.cmake b/inference-engine/cmake/features.cmake index 56aeba29020835..54068b3b9e7cf9 100644 --- a/inference-engine/cmake/features.cmake +++ b/inference-engine/cmake/features.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -126,8 +126,4 @@ if (ENABLE_GNA) endif() endif() -if (ENABLE_SPEECH_DEMO) - add_definitions(-DENABLE_SPEECH_DEMO) -endif() - print_enabled_features() diff --git a/inference-engine/cmake/ie_parallel.cmake b/inference-engine/cmake/ie_parallel.cmake index f8988aa1057634..f6d5ea62c2533a 100644 --- a/inference-engine/cmake/ie_parallel.cmake +++ b/inference-engine/cmake/ie_parallel.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/cmake/libGNAConfig.cmake b/inference-engine/cmake/libGNAConfig.cmake index a32466102e1cb5..cf70b22430aac4 100644 --- a/inference-engine/cmake/libGNAConfig.cmake +++ b/inference-engine/cmake/libGNAConfig.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/cmake/templates/InferenceEngineConfig-build.cmake.in b/inference-engine/cmake/templates/InferenceEngineConfig-build.cmake.in index 723d6f8cf85114..3aee97e834fcfe 100644 --- a/inference-engine/cmake/templates/InferenceEngineConfig-build.cmake.in +++ b/inference-engine/cmake/templates/InferenceEngineConfig-build.cmake.in @@ -1,6 +1,21 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # +# +# FindIE +# ------ +# +# This will define the following variables: +# +# InferenceEngine_FOUND - True if the system has the Inference Engine library +# InferenceEngine_INCLUDE_DIRS - Inference Engine include directories +# InferenceEngine_LIBRARIES - Inference Engine libraries +# +# and the following imported targets: +# +# IE::inference_engine - The Inference Engine library +# IE::inference_engine_c_api - The Inference Engine C API library +# if(DEFINED IE_MAIN_SOURCE_DIR AND TARGET inference_engine) set(InferenceEngine_LIBRARIES inference_engine inference_engine_c_api) @@ -12,14 +27,11 @@ if(DEFINED IE_MAIN_SOURCE_DIR AND TARGET inference_engine) endif() else() include("${CMAKE_CURRENT_LIST_DIR}/inference_engine_targets.cmake") - if(NOT MSVC) - set_target_properties(IE::inference_engine PROPERTIES INTERFACE_COMPILE_OPTIONS "-Wno-error=deprecated-declarations") - endif() file(TO_CMAKE_PATH "${CMAKE_CURRENT_LIST_DIR}" cache_path) set (ie_options THREADING) load_cache("${cache_path}" READ_WITH_PREFIX "" ${ie_options}) - message(STATUS "The following CMake options are exported from the Inference Engine build") + message(STATUS "The following CMake options are exported from the Inference Engine build tree") message("") foreach(option IN LISTS ie_options) message(" ${option}: ${${option}}") @@ -42,4 +54,9 @@ else() INTERFACE_LINK_OPTIONS "-Wl,--allow-shlib-undefined") endif() endforeach() + + if(NOT MSVC) + set_target_properties(${InferenceEngine_LIBRARIES} PROPERTIES + INTERFACE_COMPILE_OPTIONS "-Wno-error=deprecated-declarations") + endif() endif() diff --git a/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in b/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in index 092a6af08761be..2527401804d791 100644 --- a/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in +++ b/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in @@ -1,34 +1,29 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # # TODO: remove after changing [private plugins] -set(OpenVINO_MAIN_SOURCE_DIR "@OpenVINO_MAIN_SOURCE_DIR@") # KMB, HDDL -set(IE_MAIN_SOURCE_DIR "@IE_MAIN_SOURCE_DIR@") # KMB, HDDL +set(OpenVINO_MAIN_SOURCE_DIR "@OpenVINO_MAIN_SOURCE_DIR@") # KMB +set(IE_MAIN_SOURCE_DIR "@IE_MAIN_SOURCE_DIR@") # HDDL # Variables to export in plugin's projects set(ie_options "@IE_OPTIONS@;CMAKE_BUILD_TYPE;CMAKE_SKIP_RPATH") file(TO_CMAKE_PATH "${CMAKE_CURRENT_LIST_DIR}" cache_path) -foreach(option IN LISTS ie_options) - if(NOT DEFINED "${option}") - load_cache("${cache_path}" READ_WITH_PREFIX "" ${option}) - endif() -endforeach() - message(STATUS "The following CMake options are exported from Inference Engine Developer package") message("") foreach(option IN LISTS ie_options) + if(NOT DEFINED "${option}") + load_cache("${cache_path}" READ_WITH_PREFIX "" ${option}) + endif() message(" ${option}: ${${option}}") endforeach() message("") +# for samples in 3rd party projects set(gflags_DIR "@gflags_BINARY_DIR@") -# GNA lib dir -set(GNA "@GNA@") - # Targets if(USE_SYSTEM_PUGIXML) @@ -40,7 +35,6 @@ foreach(component @openvino_export_components@) include("${CMAKE_CURRENT_LIST_DIR}/${component}_dev_targets.cmake") endforeach() -get_target_property(InferenceEngine_INCLUDE_DIRS IE::inference_engine INTERFACE_INCLUDE_DIRECTORIES) set(InferenceEngine_LIBRARIES IE::inference_engine) # @@ -75,5 +69,3 @@ if (THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO") load_cache("${cache_path}" READ_WITH_PREFIX "" TBB_DIR) find_package(TBB) endif() - -find_package(Threads REQUIRED) diff --git a/inference-engine/cmake/vpu_dependencies.cmake b/inference-engine/cmake/vpu_dependencies.cmake index d83fb174aff804..86add651af1970 100644 --- a/inference-engine/cmake/vpu_dependencies.cmake +++ b/inference-engine/cmake/vpu_dependencies.cmake @@ -6,14 +6,14 @@ include_guard(GLOBAL) set(VPU_SUPPORTED_FIRMWARES usb-ma2x8x pcie-ma2x8x) set(VPU_SUPPORTED_FIRMWARES_HASH - "c89fc2e3e18345235daf0015990e0bb5c68444bb727596b6c062b70ab6245f7e" - "f25cf233fba2460f6535baa7747cb77a491d70e32402afc990be204ae3153119") + "d0f6aaaf71a595963e6013ef59045e20b07324f1a47deaa3f906419d39b2bd5a" + "18d3cd10cf6cc36ff58001812d3d215c0bbb2de09a8832128592401c8f959358") # # Default packages # -set(FIRMWARE_PACKAGE_VERSION 1619) +set(FIRMWARE_PACKAGE_VERSION 1642) set(VPU_CLC_MA2X8X_VERSION "movi-cltools-20.09.2") # diff --git a/inference-engine/ie_bridges/c/CMakeLists.txt b/inference-engine/ie_bridges/c/CMakeLists.txt index c4feefd3f3533e..75fd413e2029d7 100644 --- a/inference-engine/ie_bridges/c/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/ie_bridges/c/docs/api_overview.md b/inference-engine/ie_bridges/c/docs/api_overview.md index bad0d4ebc4d5cb..f2d9dd92b32df7 100644 --- a/inference-engine/ie_bridges/c/docs/api_overview.md +++ b/inference-engine/ie_bridges/c/docs/api_overview.md @@ -121,15 +121,19 @@ enum precision_e{ ​ FP16 = 11, /**< 16bit floating point value */ BF16 = 12, /**< 16bit floating point value, 8 bit for exponent, 7 bit for mantisa*/ - + FP64 = 13, /**< 64bit floating point value */ ​ Q78 = 20, /**< 16bit specific signed fixed point precision */ ​ I16 = 30, /**< 16bit signed integer value */ +​ U4 = 39, /**< 4bit unsigned integer value */ + ​ U8 = 40, /**< 8bit unsigned integer value */ +​ I4 = 49, /**< 4bit signed integer value */ + ​ I8 = 50, /**< 8bit signed integer value */ ​ U16 = 60, /**< 16bit unsigned integer value */ diff --git a/inference-engine/ie_bridges/c/include/c_api/ie_c_api.h b/inference-engine/ie_bridges/c/include/c_api/ie_c_api.h index fca7493be1c2bc..a85f8db3775ab6 100644 --- a/inference-engine/ie_bridges/c/include/c_api/ie_c_api.h +++ b/inference-engine/ie_bridges/c/include/c_api/ie_c_api.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -177,7 +177,9 @@ typedef enum { FP64 = 13, /**< 64bit floating point value */ Q78 = 20, /**< 16bit specific signed fixed point precision */ I16 = 30, /**< 16bit signed integer value */ + U4 = 39, /**< 4bit unsigned integer value */ U8 = 40, /**< 8bit unsigned integer value */ + I4 = 49, /**< 4bit signed integer value */ I8 = 50, /**< 8bit signed integer value */ U16 = 60, /**< 16bit unsigned integer value */ I32 = 70, /**< 32bit signed integer value */ @@ -242,7 +244,8 @@ typedef enum { RESULT_NOT_READY = -9, NOT_ALLOCATED = -10, INFER_NOT_STARTED = -11, - NETWORK_NOT_READ = -12 + NETWORK_NOT_READ = -12, + INFER_CANCELLED = -13, } IEStatusCode; /** @@ -405,6 +408,20 @@ INFERENCE_ENGINE_C_API(IE_NODISCARD IEStatusCode) ie_core_read_network_from_memo INFERENCE_ENGINE_C_API(IE_NODISCARD IEStatusCode) ie_core_load_network(ie_core_t *core, const ie_network_t *network, const char *device_name, \ const ie_config_t *config, ie_executable_network_t **exe_network); +/** +* @brief Reads model and creates an executable network from IR or ONNX file. Users can create as many networks as they need and use +* them simultaneously (up to the limitation of the hardware resources). Use the ie_exec_network_free() method to free memory. +* @ingroup Core +* @param core A pointer to ie_core_t instance. +* @param xml .xml file's path of the IR. Weights file name will be calculated automatically +* @param device_name Name of device to load network to. +* @param config Device configuration. +* @param exe_network A pointer to the newly created executable network. +* @return Status code of the operation: OK(0) for success. +*/ +INFERENCE_ENGINE_C_API(IE_NODISCARD IEStatusCode) ie_core_load_network_from_file(ie_core_t *core, const char *xml, const char *device_name, \ + const ie_config_t *config, ie_executable_network_t **exe_network); + /** * @brief Sets configuration for device. * @ingroup Core diff --git a/inference-engine/ie_bridges/c/samples/CMakeLists.txt b/inference-engine/ie_bridges/c/samples/CMakeLists.txt index bdec266b84c432..e7e91882aa1e98 100644 --- a/inference-engine/ie_bridges/c/samples/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/samples/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt index aff7229c9f0b84..5aadc249c40933 100644 --- a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -12,7 +12,7 @@ file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) add_library(${TARGET_NAME} SHARED ${HEADERS} ${SOURCES}) # Find OpenCV components if exist -find_package(OpenCV COMPONENTS imgcodecs videoio QUIET) +find_package(OpenCV COMPONENTS core imgproc imgcodecs QUIET) if(NOT OpenCV_FOUND) message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} is built without OPENCV support") else() diff --git a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.cpp b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.cpp index fefeaee5099fca..6491b4071be162 100644 --- a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.cpp +++ b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,8 +31,13 @@ int image_read(const char *img_path, c_mat_t *img) { img->mat_width = mat.size().width; img->mat_height = mat.size().height; img->mat_type = mat.type(); - img->mat_data_size = img->mat_channels * img->mat_width * img->mat_height; + img->mat_data_size = mat.elemSize() * img->mat_width * img->mat_height; img->mat_data = (unsigned char *)malloc(sizeof(unsigned char) * img->mat_data_size); + + if (img->mat_data == NULL) { + return -1; + } + for (int i = 0; i < img->mat_data_size; ++i) { img->mat_data[i] = mat.data[i]; } @@ -54,8 +59,13 @@ int image_resize(const c_mat_t *src_img, c_mat_t *dst_img, const int width, cons dst_img->mat_width = mat_dst.size().width; dst_img->mat_height = mat_dst.size().height; dst_img->mat_type = mat_dst.type(); - dst_img->mat_data_size = dst_img->mat_channels * dst_img->mat_width * dst_img->mat_height; + dst_img->mat_data_size = mat_dst.elemSize() * dst_img->mat_width * dst_img->mat_height; dst_img->mat_data = (unsigned char *)malloc(sizeof(unsigned char) * dst_img->mat_data_size); + + if (dst_img->mat_data == NULL) { + return -1; + } + for (int i = 0; i < dst_img->mat_data_size; ++i) { dst_img->mat_data[i] = mat_dst.data[i]; } diff --git a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.h b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.h index 65623ea4979e15..80ecfefbba4a8c 100644 --- a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.h +++ b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/opencv_c_wraper.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/ie_bridges/c/samples/hello_classification/CMakeLists.txt b/inference-engine/ie_bridges/c/samples/hello_classification/CMakeLists.txt index d5b4fda62e0411..2f35544d9bf00d 100644 --- a/inference-engine/ie_bridges/c/samples/hello_classification/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/samples/hello_classification/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/ie_bridges/c/samples/hello_classification/main.c b/inference-engine/ie_bridges/c/samples/hello_classification/main.c index d961bce6180b61..e17107f8213e92 100644 --- a/inference-engine/ie_bridges/c/samples/hello_classification/main.c +++ b/inference-engine/ie_bridges/c/samples/hello_classification/main.c @@ -1,5 +1,5 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier : Apache-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include @@ -39,6 +39,9 @@ struct classify_res *output_blob_to_classify_res(ie_blob_t *blob, size_t *n) { *n = output_dim.dims[1]; struct classify_res *cls = (struct classify_res *)malloc(sizeof(struct classify_res) * (*n)); + if (!cls) { + return NULL; + } ie_blob_buffer_t blob_cbuffer; status = ie_blob_get_cbuffer(blob, &blob_cbuffer); diff --git a/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/CMakeLists.txt b/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/CMakeLists.txt index d090436b81d25c..d0452b283558d9 100644 --- a/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/main.c b/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/main.c index 529c8ac92de90a..55343c5b7ff07c 100644 --- a/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/main.c +++ b/inference-engine/ie_bridges/c/samples/hello_nv12_input_classification/main.c @@ -1,5 +1,5 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier : Apache-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include @@ -38,6 +38,9 @@ struct classify_res *output_blob_to_classify_res(ie_blob_t *blob, size_t *n) { *n = output_dim.dims[1]; struct classify_res *cls = (struct classify_res *)malloc(sizeof(struct classify_res) * (*n)); + if (!cls) { + return NULL; + } ie_blob_buffer_t blob_cbuffer; status = ie_blob_get_cbuffer(blob, &blob_cbuffer); @@ -76,8 +79,8 @@ size_t read_image_from_file(const char *img_path, unsigned char *img_data, size_ fseek(fp, 0, SEEK_SET); read_size = fread(img_data, 1, size, fp); } + fclose(fp); } - fclose(fp); return read_size; } diff --git a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/CMakeLists.txt b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/CMakeLists.txt index fd6fc2ee3ffb08..7bd03eec333d74 100644 --- a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/c_w_dirent.h b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/c_w_dirent.h index ae24b5c042c3f8..56c7005b2ea937 100644 --- a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/c_w_dirent.h +++ b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/c_w_dirent.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/main.c b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/main.c index 2cb5ce23d3f33d..33099ac95e8e27 100644 --- a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/main.c +++ b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/main.c @@ -1,5 +1,5 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier : Apache-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include @@ -122,6 +122,7 @@ void readInputFilesArgument(const char *arg) { for (i = 0; i < file_num; ++i) { free(file_paths[i]); } + free(file_path); free(file_paths); file_num = 0; } @@ -279,6 +280,10 @@ int main(int argc, char **argv) { ie_version_free(&version); char **argv_temp =(char **)calloc(argc, sizeof(char *)); + if (!argv_temp) { + return EXIT_FAILURE; + } + int i, j; for (i = 0; i < argc; ++i) { argv_temp[i] = argv[i]; @@ -419,6 +424,10 @@ int main(int argc, char **argv) { /** Collect images data **/ c_mat_t *originalImages = (c_mat_t *)calloc(file_num, sizeof(c_mat_t)); c_mat_t *images = (c_mat_t *)calloc(file_num, sizeof(c_mat_t)); + + if (!originalImages || !images) + goto err; + int image_num = 0; for (i = 0; i < file_num; ++i) { c_mat_t img = {NULL, 0, 0, 0, 0, 0}; @@ -435,20 +444,27 @@ int main(int argc, char **argv) { resized_img.mat_height = img.mat_height; resized_img.mat_type = img.mat_type; resized_img.mat_data = calloc(1, resized_img.mat_data_size); + if (resized_img.mat_data == NULL) { + image_free(&img); + continue; + } + for (j = 0; j < resized_img.mat_data_size; ++j) resized_img.mat_data[j] = img.mat_data[j]; } else { printf("%sImage is resized from (%d, %d) to (%zu, %zu)\n", \ - warn, img.mat_width, img.mat_height, input_width, input_height); + warn, img.mat_width, img.mat_height, input_width, input_height); - image_resize(&img, &resized_img, (int)input_width, (int)input_height); + if (image_resize(&img, &resized_img, (int)input_width, (int)input_height) == -1) { + printf("%sImage %s cannot be resized!\n", warn, file_paths[i]); + image_free(&img); + continue; + } } - if (resized_img.mat_data) { - originalImages[image_num] = img; - images[image_num] = resized_img; - ++image_num; - } + originalImages[image_num] = img; + images[image_num] = resized_img; + ++image_num; } if (!image_num) { @@ -523,8 +539,8 @@ int main(int argc, char **argv) { if (config_msg) { ie_config_t * config = parseConfig(config_msg, '#'); status = ie_core_load_network(core, network, device_name, config, &exe_network); + config_free(config); if (status != OK) { - config_free(config); goto err; } } else { diff --git a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/object_detection_sample_ssd.h b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/object_detection_sample_ssd.h index 47acc4efc47d93..c097aaf968b8cb 100644 --- a/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/object_detection_sample_ssd.h +++ b/inference-engine/ie_bridges/c/samples/object_detection_sample_ssd/object_detection_sample_ssd.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/ie_bridges/c/src/CMakeLists.txt b/inference-engine/ie_bridges/c/src/CMakeLists.txt index 586f3e216772a8..45db9c43096594 100644 --- a/inference-engine/ie_bridges/c/src/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -29,11 +29,13 @@ export(TARGETS ${TARGET_NAME} NAMESPACE IE:: # install +ie_cpack_add_component(core_c DEPENDS core) + install(TARGETS ${TARGET_NAME} - RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT core - ARCHIVE DESTINATION ${IE_CPACK_ARCHIVE_PATH} COMPONENT core - LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT core) + RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT core_c + ARCHIVE DESTINATION ${IE_CPACK_ARCHIVE_PATH} COMPONENT core_c + LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT core_c) install(DIRECTORY ${InferenceEngine_C_API_SOURCE_DIR}/include/ - DESTINATION ${IE_CPACK_IE_DIR}/include/ - COMPONENT core) + DESTINATION ${IE_CPACK_IE_DIR}/include + COMPONENT core_c) diff --git a/inference-engine/ie_bridges/c/src/ie_c_api.cpp b/inference-engine/ie_bridges/c/src/ie_c_api.cpp index 1cbed78a3597dc..d9fe8a2b37204d 100644 --- a/inference-engine/ie_bridges/c/src/ie_c_api.cpp +++ b/inference-engine/ie_bridges/c/src/ie_c_api.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,6 @@ #include #include #include "inference_engine.hpp" -#include "details/ie_exception.hpp" #include "ie_compound_blob.h" #include "c_api/ie_c_api.h" @@ -83,7 +82,9 @@ std::map precision_map = {{IE::Precision::UNSPECIFIE {IE::Precision::FP64, precision_e::FP64}, {IE::Precision::Q78, precision_e::Q78}, {IE::Precision::I16, precision_e::I16}, + {IE::Precision::U4, precision_e::U4}, {IE::Precision::U8, precision_e::U8}, + {IE::Precision::I4, precision_e::I4}, {IE::Precision::I8, precision_e::I8}, {IE::Precision::U16, precision_e::U16}, {IE::Precision::I32, precision_e::I32}, @@ -119,6 +120,23 @@ std::map colorformat_map = {{IE::ColorFormat::RA {IE::ColorFormat::NV12, colorformat_e::NV12}, {IE::ColorFormat::I420, colorformat_e::I420}}; +#define CATCH_IE_EXCEPTION(StatusCode, ExceptionType) catch (const IE::ExceptionType&) {return IEStatusCode::StatusCode;} + +#define CATCH_IE_EXCEPTIONS \ + CATCH_IE_EXCEPTION(GENERAL_ERROR, GeneralError) \ + CATCH_IE_EXCEPTION(NOT_IMPLEMENTED, NotImplemented) \ + CATCH_IE_EXCEPTION(NETWORK_NOT_LOADED, NetworkNotLoaded) \ + CATCH_IE_EXCEPTION(PARAMETER_MISMATCH, ParameterMismatch) \ + CATCH_IE_EXCEPTION(NOT_FOUND, NotFound) \ + CATCH_IE_EXCEPTION(OUT_OF_BOUNDS, OutOfBounds) \ + CATCH_IE_EXCEPTION(UNEXPECTED, Unexpected) \ + CATCH_IE_EXCEPTION(REQUEST_BUSY, RequestBusy) \ + CATCH_IE_EXCEPTION(RESULT_NOT_READY, ResultNotReady) \ + CATCH_IE_EXCEPTION(NOT_ALLOCATED, NotAllocated) \ + CATCH_IE_EXCEPTION(INFER_NOT_STARTED, InferNotStarted) \ + CATCH_IE_EXCEPTION(NETWORK_NOT_READ, NetworkNotRead) \ + CATCH_IE_EXCEPTION(INFER_CANCELLED, InferCancelled) + /** *@brief convert the config type data to map type data. */ @@ -222,9 +240,7 @@ IEStatusCode ie_core_create(const char *xml_config_file, ie_core_t **core) { std::unique_ptr tmp(new ie_core_t); tmp->object = IE::Core(xml_config_file); *core = tmp.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -268,9 +284,7 @@ IEStatusCode ie_core_get_versions(const ie_core_t *core, const char *device_name vers_ptrs[i].description = iter->second.description; } versions->versions = vers_ptrs.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -303,9 +317,7 @@ IEStatusCode ie_core_read_network(ie_core_t *core, const char *xml, const char * } network_result->object = core->object.ReadNetwork(xml, bin); *network = network_result.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -325,9 +337,7 @@ IEStatusCode ie_core_read_network_from_memory(ie_core_t *core, const uint8_t *xm network_result->object = core->object.ReadNetwork(std::string(reinterpret_cast(xml_content), reinterpret_cast(xml_content + xml_content_size)), weight_blob->object); *network = network_result.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -351,9 +361,30 @@ IEStatusCode ie_core_load_network(ie_core_t *core, const ie_network_t *network, // create plugin in the registery and then create ExecutableNetwork. exe_net->object = core->object.LoadNetwork(network->object, device_name, conf_map); *exe_network = exe_net.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { + return IEStatusCode::UNEXPECTED; + } + + return status; +} + +IEStatusCode ie_core_load_network_from_file(ie_core_t *core, const char *xml, const char *device_name, \ + const ie_config_t *config, ie_executable_network_t **exe_network) { + IEStatusCode status = IEStatusCode::OK; + + if (core == nullptr || xml == nullptr || device_name == nullptr || config == nullptr || exe_network == nullptr) { + status = IEStatusCode::GENERAL_ERROR; + return status; + } + + try { + std::map conf_map; + conf_map = config2Map(config); + std::unique_ptr exe_net(new ie_executable_network_t); + + exe_net->object = core->object.LoadNetwork(xml, device_name, conf_map); + *exe_network = exe_net.release(); + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -376,9 +407,7 @@ IEStatusCode ie_core_set_config(ie_core_t *core, const ie_config_t *ie_core_conf try { core->object.SetConfig(conf_map, deviceName); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -395,9 +424,7 @@ IEStatusCode ie_core_register_plugin(ie_core_t *core, const char *plugin_name, c try { core->object.RegisterPlugin(plugin_name, device_name); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -414,9 +441,7 @@ IEStatusCode ie_core_register_plugins(ie_core_t *core, const char *xml_config_fi try { core->object.RegisterPlugins(xml_config_file); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -433,9 +458,7 @@ IEStatusCode ie_core_unregister_plugin(ie_core_t *core, const char *device_name) try { core->object.UnregisterPlugin(device_name); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -451,12 +474,10 @@ IEStatusCode ie_core_add_extension(ie_core_t *core, const char *extension_path, } try { - auto extension_ptr = InferenceEngine::make_so_pointer(extension_path); + auto extension_ptr = std::make_shared(std::string{extension_path}); auto extension = std::dynamic_pointer_cast(extension_ptr); core->object.AddExtension(extension, device_name); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -474,9 +495,7 @@ IEStatusCode ie_core_get_metric(const ie_core_t *core, const char *device_name, try { IE::Parameter param = core->object.GetMetric(device_name, metric_name); parameter2IEparam(param, param_result); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -496,9 +515,7 @@ IEStatusCode ie_core_get_config(const ie_core_t *core, const char *device_name, // convert the parameter to ie_param_t parameter2IEparam(param, param_result); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -522,9 +539,7 @@ IEStatusCode ie_core_get_available_devices(const ie_core_t *core, ie_available_d memcpy(dev_ptrs[i], _devices[i].c_str(), _devices[i].length() + 1); } avai_devices->devices = dev_ptrs.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -563,9 +578,7 @@ IEStatusCode ie_exec_network_create_infer_request(ie_executable_network_t *ie_ex std::unique_ptr req(new ie_infer_request_t); req->object = ie_exec_network->object.CreateInferRequest(); *request = req.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -583,9 +596,7 @@ IEStatusCode ie_exec_network_get_metric(const ie_executable_network_t *ie_exec_n try { InferenceEngine::Parameter parameter = ie_exec_network->object.GetMetric(metric_name); parameter2IEparam(parameter, param_result); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -603,9 +614,7 @@ IEStatusCode ie_exec_network_set_config(ie_executable_network_t *ie_exec_network try { const std::map conf_map = config2ParamMap(param_config); ie_exec_network->object.SetConfig(conf_map); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -623,9 +632,7 @@ IEStatusCode ie_exec_network_get_config(const ie_executable_network_t *ie_exec_n try { InferenceEngine::Parameter parameter = ie_exec_network->object.GetConfig(metric_config); parameter2IEparam(parameter, param_result); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -649,9 +656,7 @@ IEStatusCode ie_network_get_name(const ie_network_t *network, char **name) { std::unique_ptr netName(new char[_name.length() + 1]); *name = netName.release(); memcpy(*name, _name.c_str(), _name.length() + 1); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -668,9 +673,7 @@ IEStatusCode ie_network_get_inputs_number(const ie_network_t *network, size_t *s try { IE::InputsDataMap inputs = network->object.getInputsInfo(); *size_result = inputs.size(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -699,9 +702,7 @@ IEStatusCode ie_network_get_input_name(const ie_network_t *network, size_t numbe *name = inputName.release(); memcpy(*name, iter->first.c_str(), iter->first.length() + 1); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -724,9 +725,7 @@ IEStatusCode ie_network_get_input_precision(const ie_network_t *network, const c IE::Precision p = inputs[input_name]->getPrecision(); *prec_result = precision_map[p]; } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -755,9 +754,7 @@ IEStatusCode ie_network_set_input_precision(ie_network_t *network, const char *i } inputs[input_name]->setPrecision(precision); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -780,9 +777,7 @@ IEStatusCode ie_network_get_input_layout(const ie_network_t *network, const char IE::Layout l = inputs[input_name]->getLayout(); *layout_result = layout_map[l]; } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -811,9 +806,7 @@ IEStatusCode ie_network_set_input_layout(ie_network_t *network, const char *inpu } inputs[input_name]->setLayout(layout); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -839,9 +832,7 @@ IEStatusCode ie_network_get_input_dims(const ie_network_t *network, const char * dims_result->dims[i] = dims[i]; } } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -864,9 +855,7 @@ IEStatusCode ie_network_get_input_resize_algorithm(const ie_network_t *network, IE::ResizeAlgorithm resize = inputs[input_name]->getPreProcess().getResizeAlgorithm(); *resize_alg_result = resize_alg_map[resize]; } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -895,9 +884,7 @@ IEStatusCode ie_network_set_input_resize_algorithm(ie_network_t *network, const } inputs[input_name]->getPreProcess().setResizeAlgorithm(resize); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -920,9 +907,7 @@ IEStatusCode ie_network_get_color_format(const ie_network_t *network, const char IE::ColorFormat color = inputs[input_name]->getPreProcess().getColorFormat(); *colformat_result = colorformat_map[color]; } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -951,9 +936,7 @@ IEStatusCode ie_network_set_color_format(ie_network_t *network, const char *inpu } inputs[input_name]->getPreProcess().setColorFormat(color); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -991,9 +974,7 @@ IEStatusCode ie_network_get_input_shapes(ie_network *network, input_shapes_t *sh } shapes->shapes = shape_ptrs.release(); status = IEStatusCode::OK; - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1020,9 +1001,7 @@ IEStatusCode ie_network_reshape(ie_network_t *network, const input_shapes_t shap } network->object.reshape(net_shapes); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1040,9 +1019,7 @@ IEStatusCode ie_network_get_outputs_number(const ie_network_t *network, size_t * try { IE::OutputsDataMap outputs = network->object.getOutputsInfo(); *size_result = outputs.size(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1071,9 +1048,7 @@ IEStatusCode ie_network_get_output_name(const ie_network_t *network, const size_ *name = outputName.release(); memcpy(*name, iter->first.c_str(), iter->first.length() + 1); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1096,9 +1071,7 @@ IEStatusCode ie_network_get_output_precision(const ie_network_t *network, const IE::Precision p = outputs[output_name]->getPrecision(); *prec_result = precision_map[p]; } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1127,9 +1100,7 @@ IEStatusCode ie_network_set_output_precision(ie_network_t *network, const char * } outputs[output_name]->setPrecision(precision); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1152,9 +1123,7 @@ IEStatusCode ie_network_get_output_layout(const ie_network_t *network, const cha IE::Layout l = outputs[output_name]->getLayout(); *layout_result = layout_map[l]; } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1183,9 +1152,7 @@ IEStatusCode ie_network_set_output_layout(ie_network_t *network, const char *out } outputs[output_name]->setLayout(layout); } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1211,9 +1178,7 @@ IEStatusCode ie_network_get_output_dims(const ie_network_t *network, const char dims_result->dims[i] = dims[i]; } } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1258,9 +1223,7 @@ IEStatusCode ie_infer_request_get_blob(ie_infer_request_t *infer_request, const std::unique_ptr blob_result(new ie_blob_t); blob_result->object = blob_ptr; *blob = blob_result.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1277,9 +1240,7 @@ IEStatusCode ie_infer_request_set_blob(ie_infer_request_t *infer_request, const try { infer_request->object.SetBlob(name, blob->object); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1296,9 +1257,7 @@ IEStatusCode ie_infer_request_infer(ie_infer_request_t *infer_request) { try { infer_request->object.Infer(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1315,9 +1274,7 @@ IEStatusCode ie_infer_request_infer_async(ie_infer_request_t *infer_request) { try { infer_request->object.StartAsync(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1337,9 +1294,7 @@ IEStatusCode ie_infer_set_completion_callback(ie_infer_request_t *infer_request, callback->completeCallBackFunc(callback->args); }; infer_request->object.SetCompletionCallback(fun); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1357,9 +1312,7 @@ IEStatusCode ie_infer_request_wait(ie_infer_request_t *infer_request, const int6 try { IE::StatusCode status_code = infer_request->object.Wait(timeout); status = status_map[status_code]; - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1376,9 +1329,7 @@ IEStatusCode ie_infer_request_set_batch(ie_infer_request_t *infer_request, const try { infer_request->object.SetBatch(size); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1420,7 +1371,7 @@ IEStatusCode ie_blob_make_memory(const tensor_desc_t *tensorDesc, ie_blob_t **bl _blob->object = IE::make_shared_blob(tensor); } else if (prec == IE::Precision::U16) { _blob->object = IE::make_shared_blob(tensor); - } else if (prec == IE::Precision::I8 || prec == IE::Precision::BIN) { + } else if (prec == IE::Precision::I8 || prec == IE::Precision::BIN || prec == IE::Precision::I4 || prec == IE::Precision::U4) { _blob->object = IE::make_shared_blob(tensor); } else if (prec == IE::Precision::I16 || prec == IE::Precision::FP16 || prec == IE::Precision::Q78) { _blob->object = IE::make_shared_blob(tensor); @@ -1442,9 +1393,7 @@ IEStatusCode ie_blob_make_memory(const tensor_desc_t *tensorDesc, ie_blob_t **bl _blob->object->allocate(); *blob = _blob.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1487,7 +1436,7 @@ IEStatusCode ie_blob_make_memory_from_preallocated(const tensor_desc_t *tensorDe } else if (prec == IE::Precision::U16) { uint16_t *p = reinterpret_cast(ptr); _blob->object = IE::make_shared_blob(tensor, p, size); - } else if (prec == IE::Precision::I8 || prec == IE::Precision::BIN) { + } else if (prec == IE::Precision::I8 || prec == IE::Precision::BIN || prec == IE::Precision::I4 || prec == IE::Precision::U4) { int8_t *p = reinterpret_cast(ptr); _blob->object = IE::make_shared_blob(tensor, p, size); } else if (prec == IE::Precision::I16 || prec == IE::Precision::FP16 || prec == IE::Precision::Q78) { @@ -1516,9 +1465,7 @@ IEStatusCode ie_blob_make_memory_from_preallocated(const tensor_desc_t *tensorDe _blob->object = IE::make_shared_blob(tensor, p, size); } *blob = _blob.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1536,9 +1483,7 @@ IEStatusCode ie_blob_make_memory_with_roi(const ie_blob_t *inputBlob, const roi_ IE::ROI roi_d = {roi->id, roi->posX, roi->posY, roi->sizeX, roi->sizeY}; _blob->object = IE::make_shared_blob(inputBlob->object, roi_d); *blob = _blob.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1554,9 +1499,7 @@ IEStatusCode ie_blob_make_memory_nv12(const ie_blob_t *y, const ie_blob_t *uv, i std::unique_ptr _blob(new ie_blob_t); _blob->object = IE::make_shared_blob(y->object, uv->object); *nv12Blob = _blob.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1572,9 +1515,7 @@ IEStatusCode ie_blob_make_memory_i420(const ie_blob_t *y, const ie_blob_t *u, co std::unique_ptr _blob(new ie_blob_t); _blob->object = IE::make_shared_blob(y->object, u->object, v->object); *i420Blob = _blob.release(); - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1649,9 +1590,7 @@ IEStatusCode ie_blob_get_dims(const ie_blob_t *blob, dimensions_t *dims_result) for (size_t i = 0; i< dims_result->ranks; ++i) { dims_result->dims[i] = size_vector[i]; } - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1669,9 +1608,7 @@ IEStatusCode ie_blob_get_layout(const ie_blob_t *blob, layout_e *layout_result) try { IE::Layout l = blob->object->getTensorDesc().getLayout(); *layout_result = layout_map[l]; - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } @@ -1689,9 +1626,7 @@ IEStatusCode ie_blob_get_precision(const ie_blob_t *blob, precision_e *prec_resu try { IE::Precision p = blob->object->getTensorDesc().getPrecision(); *prec_result = precision_map[p]; - } catch (const IE::details::InferenceEngineException& e) { - return e.hasStatus() ? status_map[e.getStatus()] : IEStatusCode::UNEXPECTED; - } catch (...) { + } CATCH_IE_EXCEPTIONS catch (...) { return IEStatusCode::UNEXPECTED; } diff --git a/inference-engine/ie_bridges/c/tests/CMakeLists.txt b/inference-engine/ie_bridges/c/tests/CMakeLists.txt index fa5514db0a2b6c..818c4acbea35d5 100644 --- a/inference-engine/ie_bridges/c/tests/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/tests/CMakeLists.txt @@ -1,11 +1,11 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # set(TARGET_NAME "InferenceEngineCAPITests") # Find OpenCV components if exist -find_package(OpenCV COMPONENTS imgcodecs videoio imgproc QUIET) +find_package(OpenCV COMPONENTS core imgproc imgcodecs QUIET) if(NOT OpenCV_FOUND) message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} is disabled") return() diff --git a/inference-engine/ie_bridges/c/tests/ie_c_api_test.cpp b/inference-engine/ie_bridges/c/tests/ie_c_api_test.cpp index b8c1f61adfcc9d..f061b024bd0608 100644 --- a/inference-engine/ie_bridges/c/tests/ie_c_api_test.cpp +++ b/inference-engine/ie_bridges/c/tests/ie_c_api_test.cpp @@ -1,5 +1,5 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier : Apache-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include @@ -53,8 +53,8 @@ size_t read_image_from_file(const char* img_path, unsigned char *img_data, size_ fseek(fp, 0, SEEK_SET); read_size = fread(img_data, 1, size, fp); } + fclose(fp); } - fclose(fp); return read_size; } @@ -368,6 +368,48 @@ TEST(ie_core_load_network, loadNetworkNoConfig) { ie_core_free(&core); } +TEST(ie_core_load_network_from_file, loadNetworkNoConfig) { + ie_core_t *core = nullptr; + IE_ASSERT_OK(ie_core_create("", &core)); + ASSERT_NE(nullptr, core); + + ie_config_t config = {nullptr, nullptr, nullptr}; + ie_executable_network_t *exe_network = nullptr; + IE_EXPECT_OK(ie_core_load_network_from_file(core, xml, "CPU", &config, &exe_network)); + EXPECT_NE(nullptr, exe_network); + + ie_exec_network_free(&exe_network); + ie_core_free(&core); +} + +TEST(ie_core_load_network_from_file, loadNetwork_errorHandling) { + ie_core_t *core = nullptr; + IE_ASSERT_OK(ie_core_create("", &core)); + ASSERT_NE(nullptr, core); + + ie_config_t config = {nullptr, nullptr, nullptr}; + ie_executable_network_t *exe_network = nullptr; + IE_EXPECT_NOT_OK(ie_core_load_network_from_file(nullptr, xml, "CPU", &config, &exe_network)); + EXPECT_EQ(nullptr, exe_network); + + IE_EXPECT_NOT_OK(ie_core_load_network_from_file(core, nullptr, "CPU", &config, &exe_network)); + EXPECT_EQ(nullptr, exe_network); + + IE_EXPECT_NOT_OK(ie_core_load_network_from_file(core, xml, nullptr, &config, &exe_network)); + EXPECT_EQ(nullptr, exe_network); + + IE_EXPECT_NOT_OK(ie_core_load_network_from_file(core, xml, "CPU", nullptr, &exe_network)); + EXPECT_EQ(nullptr, exe_network); + + IE_EXPECT_NOT_OK(ie_core_load_network_from_file(core, xml, "CPU", &config, nullptr)); + EXPECT_EQ(nullptr, exe_network); + + IE_EXPECT_NOT_OK(ie_core_load_network_from_file(core, xml, "UnregisteredDevice", &config, &exe_network)); + EXPECT_EQ(nullptr, exe_network); + + ie_core_free(&core); +} + TEST(ie_network_get_name, networkName) { ie_core_t *core = nullptr; IE_ASSERT_OK(ie_core_create("", &core)); diff --git a/inference-engine/ie_bridges/c/tests/test_model_repo.hpp b/inference-engine/ie_bridges/c/tests/test_model_repo.hpp index f279389b6af5ea..e6a099f591f126 100644 --- a/inference-engine/ie_bridges/c/tests/test_model_repo.hpp +++ b/inference-engine/ie_bridges/c/tests/test_model_repo.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/ie_bridges/python/CMakeLists.txt b/inference-engine/ie_bridges/python/CMakeLists.txt index 4969474a93e1f1..5167b33a5ec0d4 100644 --- a/inference-engine/ie_bridges/python/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/CMakeLists.txt @@ -1,5 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# # Defines the CMake commands/policies cmake_minimum_required (VERSION 3.13) @@ -75,7 +76,7 @@ endif() # install -ie_cpack_add_component(${PYTHON_VERSION} REQUIRED) +ie_cpack_add_component(${PYTHON_VERSION}) install(FILES requirements.txt DESTINATION ${PYTHON_BRIDGE_CPACK_PATH}/${PYTHON_VERSION} diff --git a/inference-engine/ie_bridges/python/README.md b/inference-engine/ie_bridges/python/README.md index dcb8e9509de69a..0b50a0e2a6a938 100644 --- a/inference-engine/ie_bridges/python/README.md +++ b/inference-engine/ie_bridges/python/README.md @@ -18,7 +18,7 @@ Build Inference Engine Python API alongside with the Inference Engine build. You need to run Inference Engine build with the following flags: ```shellscript - cd + cd /openvino mkdir -p build cd build cmake -DENABLE_PYTHON=ON -DPYTHON_EXECUTABLE=`which python3.6` \ @@ -32,7 +32,7 @@ You need to run Inference Engine build with the following flags: You need to run Inference Engine build with the following flags: ```shellscript - cd + cd /openvino mkdir build cd build set PATH=C:\Program Files\Python36\Scripts;%PATH% diff --git a/inference-engine/ie_bridges/python/cmake/CythonConfig.cmake b/inference-engine/ie_bridges/python/cmake/CythonConfig.cmake index 5ac7c7049f76d9..1d013f91320310 100644 --- a/inference-engine/ie_bridges/python/cmake/CythonConfig.cmake +++ b/inference-engine/ie_bridges/python/cmake/CythonConfig.cmake @@ -1,16 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. # # Following changes were done on top of original file: # Add CYTHON_EXECUTABLE searching hints at lines 50 and 51 diff --git a/inference-engine/ie_bridges/python/cmake/UseCython.cmake b/inference-engine/ie_bridges/python/cmake/UseCython.cmake index a71e38d136a07c..0cdd8d133f4872 100644 --- a/inference-engine/ie_bridges/python/cmake/UseCython.cmake +++ b/inference-engine/ie_bridges/python/cmake/UseCython.cmake @@ -46,7 +46,7 @@ # # See also FindCython.cmake -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/inference-engine/ie_bridges/python/docs/api_overview.md b/inference-engine/ie_bridges/python/docs/api_overview.md index 85338cc8caa01f..a2fbea2ea58ad0 100644 --- a/inference-engine/ie_bridges/python/docs/api_overview.md +++ b/inference-engine/ie_bridges/python/docs/api_overview.md @@ -8,24 +8,24 @@ This API provides a simplified interface for Inference Engine functionality that ## Supported OSes -Inference Engine Python\* API is supported on Ubuntu\* 16.04 and 18.04, CentOS\* 7.3 OSes, Raspbian\* 9, Windows\* 10 +Inference Engine Python\* API is supported on Ubuntu\* 18.04 and 20.04, CentOS\* 7.3 OSes, Raspbian\* 9, Windows\* 10 and macOS\* 10.x. Supported Python* versions: | Operating System | Supported Python\* versions: | |:----- | :----- | -| Ubuntu\* 16.04 | 2.7, 3.5, 3.6, 3.7 | -| Ubuntu\* 18.04 | 2.7, 3.5, 3.6, 3.7 | -| Windows\* 10 | 3.5, 3.6, 3.7 | -| CentOS\* 7.3 | 3.4, 3.5, 3.6, 3.7 | -| macOS\* 10.x | 3.5, 3.6, 3.7 | -| Raspbian\* 9 | 3.5, 3.6, 3.7 | +| Ubuntu\* 18.04 | 3.6, 3.7 | +| Ubuntu\* 20.04 | 3.6, 3.7, 3.8 | +| Windows\* 10 | 3.6, 3.7, 3.8 | +| CentOS\* 7.3 | 3.6, 3.7 | +| macOS\* 10.x | 3.6, 3.7 | +| Raspbian\* 9 | 3.6, 3.7 | ## Set Up the Environment To configure the environment for the Inference Engine Python\* API, run: - * On Ubuntu\* 16.04 or 18.04 CentOS\* 7.4: `source /bin/setupvars.sh .` + * On Ubuntu\* 18.04 or 20.04: `source /bin/setupvars.sh .` * On CentOS\* 7.4: `source /bin/setupvars.sh .` * On macOS\* 10.x: `source /bin/setupvars.sh .` * On Raspbian\* 9,: `source /bin/setupvars.sh .` diff --git a/inference-engine/ie_bridges/python/sample/classification_sample_async/classification_sample_async.py b/inference-engine/ie_bridges/python/sample/classification_sample_async/classification_sample_async.py index e0b5b46dc262af..ece2cfd95ac65c 100644 --- a/inference-engine/ie_bridges/python/sample/classification_sample_async/classification_sample_async.py +++ b/inference-engine/ie_bridges/python/sample/classification_sample_async/classification_sample_async.py @@ -1,19 +1,6 @@ -#!/usr/bin/env python -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from __future__ import print_function import sys import os diff --git a/inference-engine/ie_bridges/python/sample/hello_classification/hello_classification.py b/inference-engine/ie_bridges/python/sample/hello_classification/hello_classification.py index 63b6a1eedd0375..2c47a706b7f961 100644 --- a/inference-engine/ie_bridges/python/sample/hello_classification/hello_classification.py +++ b/inference-engine/ie_bridges/python/sample/hello_classification/hello_classification.py @@ -1,19 +1,6 @@ -#!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from __future__ import print_function import sys import os diff --git a/inference-engine/ie_bridges/python/sample/hello_query_device/hello_query_device.py b/inference-engine/ie_bridges/python/sample/hello_query_device/hello_query_device.py index 22097b3658069d..4da5dcba244665 100644 --- a/inference-engine/ie_bridges/python/sample/hello_query_device/hello_query_device.py +++ b/inference-engine/ie_bridges/python/sample/hello_query_device/hello_query_device.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import sys from openvino.inference_engine import IECore diff --git a/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/README.md b/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/README.md index b08704bede0e14..e3fcd93b3a5263 100644 --- a/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/README.md +++ b/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/README.md @@ -7,7 +7,7 @@ networks like SSD-VGG. The sample shows how to use [Shape Inference feature](../ ## Running -To run the sample, you can use public or pre-trained models. To download the pre-trained models, use the OpenVINO [Model Downloader](@ref omz_tools_downloader_README) or go to [https://download.01.org/opencv/](https://download.01.org/opencv/). +To run the sample, you can use public or pre-trained models. To download the pre-trained models, use the OpenVINO [Model Downloader](@ref omz_tools_downloader_README). > **NOTE**: Before running the sample with a trained model, make sure the model is converted to the Inference Engine format (\*.xml + \*.bin) using the [Model Optimizer tool](../../../docs/MO_DG/Deep_Learning_Model_Optimizer_DevGuide.md). > diff --git a/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/hello_reshape_ssd.py b/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/hello_reshape_ssd.py index 47679011953b4f..63b925b940a599 100644 --- a/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/hello_reshape_ssd.py +++ b/inference-engine/ie_bridges/python/sample/hello_reshape_ssd/hello_reshape_ssd.py @@ -1,19 +1,8 @@ #!/usr/bin/env python -''' - Copyright (c) 2018 Intel Corporation - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -''' from __future__ import print_function from argparse import ArgumentParser, SUPPRESS import logging as log diff --git a/inference-engine/ie_bridges/python/sample/ngraph_function_creation_sample/ngraph_function_creation_sample.py b/inference-engine/ie_bridges/python/sample/ngraph_function_creation_sample/ngraph_function_creation_sample.py index 23116a06b7dc83..d64fc4c808ff73 100644 --- a/inference-engine/ie_bridges/python/sample/ngraph_function_creation_sample/ngraph_function_creation_sample.py +++ b/inference-engine/ie_bridges/python/sample/ngraph_function_creation_sample/ngraph_function_creation_sample.py @@ -1,19 +1,5 @@ -#!/usr/bin/env python -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys import os diff --git a/inference-engine/ie_bridges/python/sample/object_detection_sample_ssd/object_detection_sample_ssd.py b/inference-engine/ie_bridges/python/sample/object_detection_sample_ssd/object_detection_sample_ssd.py index 5bbd3a4609268b..d065c99346d45a 100644 --- a/inference-engine/ie_bridges/python/sample/object_detection_sample_ssd/object_detection_sample_ssd.py +++ b/inference-engine/ie_bridges/python/sample/object_detection_sample_ssd/object_detection_sample_ssd.py @@ -1,19 +1,6 @@ -#!/usr/bin/env python -""" - Copyright (c) 2018 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from __future__ import print_function import sys import os diff --git a/inference-engine/ie_bridges/python/sample/style_transfer_sample/style_transfer_sample.py b/inference-engine/ie_bridges/python/sample/style_transfer_sample/style_transfer_sample.py index 63b9454191bc34..1c35e15227e07b 100644 --- a/inference-engine/ie_bridges/python/sample/style_transfer_sample/style_transfer_sample.py +++ b/inference-engine/ie_bridges/python/sample/style_transfer_sample/style_transfer_sample.py @@ -1,19 +1,6 @@ -#!/usr/bin/env python -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from __future__ import print_function import sys import os diff --git a/inference-engine/ie_bridges/python/src/openvino/__init__.py b/inference-engine/ie_bridges/python/src/openvino/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/inference-engine/ie_bridges/python/src/openvino/__init__.py +++ b/inference-engine/ie_bridges/python/src/openvino/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt index 6b1f9e111b7db1..78f22b6500cfeb 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt @@ -1,9 +1,13 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# set(TARGET_NAME "ie_api") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine) +set(CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine) +set(CMAKE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine) file(GLOB SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/ie_api.pyx diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py b/inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py index 8ef0fa65c4e0c3..d9fc2fa0eb8181 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/__init__.py @@ -1,14 +1,30 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import sys if sys.platform == "win32": - # PIP installs openvino dlls 3 directories above in openvino.libs by default - # and this path needs to be visible to the openvino modules + # Installer, yum, pip installs openvino dlls to the different directories + # and those paths need to be visible to the openvino modules # # If you're using a custom installation of openvino, # add the location of openvino dlls to your system PATH. - openvino_dll = os.path.join(os.path.dirname(__file__), "..", "..", "..", "openvino.libs") - os.environ["PATH"] = os.path.abspath(openvino_dll) + ";" + os.environ["PATH"] + # + # looking for the libs in the pip installation path by default. + openvino_libs = [os.path.join(os.path.dirname(__file__), '..', '..', 'openvino', 'libs')] + # setupvars.bat script set all libs paths to OPENVINO_LIB_PATHS environment variable. + openvino_libs_installer = os.getenv('OPENVINO_LIB_PATHS') + if openvino_libs_installer: + openvino_libs.extend(openvino_libs_installer.split(';')) + for lib in openvino_libs: + lib_path = os.path.join(os.path.dirname(__file__), lib) + if os.path.isdir(lib_path): + # On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH. + if (3, 8) <= sys.version_info: + os.add_dll_directory(os.path.abspath(lib_path)) + else: + os.environ["PATH"] = os.path.abspath(lib_path) + ";" + os.environ["PATH"] from .ie_api import * __all__ = ['IENetwork', "TensorDesc", "IECore", "Blob", "PreProcessInfo", "get_version"] diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/constants.pyx b/inference-engine/ie_bridges/python/src/openvino/inference_engine/constants.pyx index ce5ca4d6dede81..d39b2c398179be 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/constants.pyx +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/constants.pyx @@ -1,24 +1,13 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from .cimport ie_api_impl_defs as C import numpy as np from enum import Enum -supported_precisions = ["FP32", "FP64", "FP16", "I64", "U64", "I32", "U32", "I16", "I8", "U16", "U8", "BOOL"] +supported_precisions = ["FP32", "FP64", "FP16", "I64", "U64", "I32", "U32", + "I16", "I4", "I8", "U16", "U4", "U8", "BOOL", "BIN", "BF16"] known_plugins = ['CPU', 'GPU', 'FPGA', 'MYRIAD', 'HETERO', 'HDDL', 'MULTI'] @@ -28,14 +17,20 @@ layout_int_to_str_map = {0: "ANY", 1: "NCHW", 2: "NHWC", 3: "NCDHW", 4: "NDHWC", format_map = { 'FP32' : np.float32, 'FP64' : np.float64, - 'I32' : np.int32, 'FP16' : np.float16, + 'I64' : np.int64, + 'U64' : np.uint64, + 'I32' : np.int32, + 'U32' : np.uint32, 'I16' : np.int16, 'U16' : np.uint16, + 'I4' : np.int8, 'I8' : np.int8, + 'U4' : np.int8, 'U8' : np.uint8, - 'I64' : np.int64, - 'BOOL' : np.uint8 + 'BOOL' : np.uint8, + 'BIN' : np.int8, + 'BF16' : np.float16, } layout_str_to_enum = {'ANY': C.Layout.ANY, diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pxd b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pxd index 7a920059bbcf54..5338fa13d4ab08 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pxd +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pxd @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from .cimport ie_api_impl_defs as C from .ie_api_impl_defs cimport CBlob, CTensorDesc, InputInfo, CPreProcessChannel, CPreProcessInfo @@ -51,7 +54,7 @@ cdef class ExecutableNetwork: cdef class IECore: cdef C.IECore impl cpdef IENetwork read_network(self, model : [str, bytes, os.PathLike], weights : [str, bytes, os.PathLike] = ?, bool init_from_buffer = ?) - cpdef ExecutableNetwork load_network(self, IENetwork network, str device_name, config = ?, int num_requests = ?) + cpdef ExecutableNetwork load_network(self, network: [IENetwork, str], str device_name, config = ?, int num_requests = ?) cpdef ExecutableNetwork import_network(self, str model_file, str device_name, config = ?, int num_requests = ?) diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pyx b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pyx index c92040d40cf76a..a2ce9b629e9a9c 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pyx +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api.pyx @@ -1,5 +1,9 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + #distutils: language=c++ #cython: embedsignature=True + from cython.operator cimport dereference as deref from libcpp.string cimport string from libcpp.vector cimport vector @@ -8,7 +12,7 @@ from libcpp.pair cimport pair from libcpp.map cimport map from libcpp.memory cimport unique_ptr from libc.stdlib cimport malloc, free -from libc.stdint cimport int64_t, uint8_t, int8_t, int32_t, uint16_t, int16_t +from libc.stdint cimport int64_t, uint8_t, int8_t, int32_t, uint16_t, int16_t, uint32_t, uint64_t from libc.stddef cimport size_t from libc.string cimport memcpy @@ -119,6 +123,8 @@ cdef class Blob: cdef int8_t[::1] I8_array_memview cdef int32_t[::1] I32_array_memview cdef int64_t[::1] I64_array_memview + cdef uint32_t[::1] U32_array_memview + cdef uint64_t[::1] U64_array_memview cdef int16_t[:] x_as_uint cdef int16_t[:] y_as_uint @@ -138,18 +144,22 @@ cdef class Blob: self._ptr = C.make_shared_blob[float](c_tensor_desc) elif precision == "FP64": self._ptr = C.make_shared_blob[double](c_tensor_desc) - elif precision == "FP16" or precision == "I16": + elif precision == "FP16" or precision == "I16" or precision == "BF16": self._ptr = C.make_shared_blob[int16_t](c_tensor_desc) elif precision == "Q78" or precision == "U16": self._ptr = C.make_shared_blob[uint16_t](c_tensor_desc) elif precision == "U8" or precision == "BOOL": self._ptr = C.make_shared_blob[uint8_t](c_tensor_desc) - elif precision == "I8" or precision == "BIN": + elif precision == "I8" or precision == "BIN" or precision == "I4" or precision == "U4": self._ptr = C.make_shared_blob[int8_t](c_tensor_desc) elif precision == "I32": self._ptr = C.make_shared_blob[int32_t](c_tensor_desc) + elif precision == "U32": + self._ptr = C.make_shared_blob[uint32_t](c_tensor_desc) elif precision == "I64": self._ptr = C.make_shared_blob[int64_t](c_tensor_desc) + elif precision == "U64": + self._ptr = C.make_shared_blob[uint64_t](c_tensor_desc) else: raise AttributeError(f"Unsupported precision {precision} for blob") deref(self._ptr).allocate() @@ -172,7 +182,7 @@ cdef class Blob: elif precision == "FP64": fp64_array_memview = self._array_data self._ptr = C.make_shared_blob[double](c_tensor_desc, &fp64_array_memview[0], fp64_array_memview.shape[0]) - elif precision == "FP16": + elif precision == "FP16" or precision == "BF16": I16_array_memview = self._array_data.view(dtype=np.int16) self._ptr = C.make_shared_blob[int16_t](c_tensor_desc, &I16_array_memview[0], I16_array_memview.shape[0]) elif precision == "I16": @@ -184,15 +194,21 @@ cdef class Blob: elif precision == "U8" or precision == "BOOL": U8_array_memview = self._array_data self._ptr = C.make_shared_blob[uint8_t](c_tensor_desc, &U8_array_memview[0], U8_array_memview.shape[0]) - elif precision == "I8" or precision == "BIN": + elif precision == "I8" or precision == "BIN" or precision == "I4" or precision == "U4": I8_array_memview = self._array_data self._ptr = C.make_shared_blob[int8_t](c_tensor_desc, &I8_array_memview[0], I8_array_memview.shape[0]) elif precision == "I32": I32_array_memview = self._array_data self._ptr = C.make_shared_blob[int32_t](c_tensor_desc, &I32_array_memview[0], I32_array_memview.shape[0]) + elif precision == "U32": + U32_array_memview = self._array_data + self._ptr = C.make_shared_blob[uint32_t](c_tensor_desc, &U32_array_memview[0], U32_array_memview.shape[0]) elif precision == "I64": I64_array_memview = self._array_data self._ptr = C.make_shared_blob[int64_t](c_tensor_desc, &I64_array_memview[0], I64_array_memview.shape[0]) + elif precision == "U64": + U64_array_memview = self._array_data + self._ptr = C.make_shared_blob[uint64_t](c_tensor_desc, &U64_array_memview[0], U64_array_memview.shape[0]) else: raise AttributeError(f"Unsupported precision {precision} for blob") @@ -292,7 +308,7 @@ cdef class IECore: # and creates an `ExecutableNetwork` object of the `IENetwork` class. # You can create as many networks as you need and use them simultaneously (up to the limitation of the hardware # resources). - # @param network: A valid `IENetwork` instance + # @param network: A valid `IENetwork` instance. Model file name .xml, .onnx can also be passed as argument # @param device_name: A device name of a target plugin # @param config: A dictionary of plugin configuration keys and their values # @param num_requests: A positive integer value of infer requests to be created. Number of infer requests is limited @@ -306,7 +322,7 @@ cdef class IECore: # net = ie.read_network(model=path_to_xml_file, weights=path_to_bin_file) # exec_net = ie.load_network(network=net, device_name="CPU", num_requests=2) # ``` - cpdef ExecutableNetwork load_network(self, IENetwork network, str device_name, config=None, int num_requests=1): + cpdef ExecutableNetwork load_network(self, network: [IENetwork, str], str device_name, config=None, int num_requests=1): cdef ExecutableNetwork exec_net = ExecutableNetwork() cdef map[string, string] c_config if num_requests < 0: @@ -315,7 +331,10 @@ cdef class IECore: if config: c_config = dict_to_c_map(config) exec_net.ie_core_impl = self.impl - exec_net.impl = move(self.impl.loadNetwork(network.impl, device_name.encode(), c_config, num_requests)) + if isinstance(network, str): + exec_net.impl = move(self.impl.loadNetworkFromFile((network).encode(), device_name.encode(), c_config, num_requests)) + else: + exec_net.impl = move(self.impl.loadNetwork((network).impl, device_name.encode(), c_config, num_requests)) return exec_net ## Creates an executable network from a previously exported network @@ -1447,10 +1466,6 @@ cdef class IENetwork: name = bytes(orig_name, 'utf-8') return self.impl.getOVNameForTensor(name).decode('utf-8') - def get_ov_name_for_operation(self, orig_name: str): - name = bytes(orig_name, 'utf-8') - return self.impl.getOVNameForOperation(name).decode('utf-8') - cdef class BlobBuffer: """Copy-less accessor for Inference Engine Blob""" @@ -1509,6 +1524,9 @@ cdef class BlobBuffer: 'U32': 'I', # unsigned int 'I64': 'q', # signed long int 'U64': 'Q', # unsigned long int + 'BOOL': 'B', # unsigned char + 'BF16': 'h', # signed short + 'BIN': 'b', # signed char } if name not in precision_to_format: raise ValueError(f"Unknown Blob precision: {name}") diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.cpp b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.cpp index 7a2bd205a0837d..d8967c54abbaaa 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.cpp +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,7 +34,7 @@ std::map layout_map = {{"ANY", Infere #define IE_CHECK_CALL(expr) { \ auto ret = (expr); \ if (ret != InferenceEngine::StatusCode::OK) { \ - THROW_IE_EXCEPTION << response.msg; \ + IE_THROW() << response.msg; \ } \ } \ @@ -51,14 +51,14 @@ uint32_t getOptimalNumberOfRequests(const InferenceEngine::IExecutableNetwork::P if (parameter_value.is()) return parameter_value.as(); else - THROW_IE_EXCEPTION << "Unsupported format for " << key << "!" + IE_THROW() << "Unsupported format for " << key << "!" << " Please specify number of infer requests directly!"; } else { - THROW_IE_EXCEPTION << "Can't load network: " << key << " is not supported!" + IE_THROW() << "Can't load network: " << key << " is not supported!" << " Please specify number of infer requests directly!"; } } catch (const std::exception &ex) { - THROW_IE_EXCEPTION << "Can't load network: " << ex.what() + IE_THROW() << "Can't load network: " << ex.what() << " Please specify number of infer requests directly!"; } } @@ -176,7 +176,7 @@ InferenceEnginePython::IENetwork::IENetwork(const std::string &model, const std: InferenceEnginePython::IENetwork::IENetwork(const std::shared_ptr &cnn_network) : actual(cnn_network) { - if (actual == nullptr) THROW_IE_EXCEPTION << "IENetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "IENetwork was not initialized."; name = actual->getName(); batch_size = actual->getBatchSize(); } @@ -185,7 +185,7 @@ InferenceEnginePython::IENetwork::IENetwork(PyObject* network) { auto* capsule_ptr = PyCapsule_GetPointer(network, "ngraph_function"); auto* function_sp = static_cast*>(capsule_ptr); if (function_sp == nullptr) - THROW_IE_EXCEPTION << "Cannot create CNNNetwork from capsule! Capsule doesn't contain nGraph function!"; + IE_THROW() << "Cannot create CNNNetwork from capsule! Capsule doesn't contain nGraph function!"; InferenceEngine::CNNNetwork cnnNetwork(*function_sp); actual = std::make_shared(cnnNetwork); @@ -264,10 +264,6 @@ std::string InferenceEnginePython::IENetwork::getOVNameForTensor(const std::stri return actual->getOVNameForTensor(orig_name); } -std::string InferenceEnginePython::IENetwork::getOVNameForOperation(const std::string& orig_name) { - return actual->getOVNameForOperation(orig_name); -} - void InferenceEnginePython::IENetwork::addOutput(const std::string &out_layer, size_t port_id) { actual->addOutput(out_layer, port_id); @@ -387,7 +383,10 @@ void InferenceEnginePython::InferRequestWrap::setBatch(int size) { void latency_callback(InferenceEngine::IInferRequest::Ptr request, InferenceEngine::StatusCode code) { if (code != InferenceEngine::StatusCode::OK) { - THROW_IE_EXCEPTION << "Async Infer Request failed with status code " << code; + IE_EXCEPTION_SWITCH(code, ExceptionType, + InferenceEngine::details::ThrowNow{} + <<= std::stringstream{} << IE_LOCATION + << InferenceEngine::details::ExceptionTraits::string()); } InferenceEnginePython::InferRequestWrap *requestWrap; InferenceEngine::ResponseDesc dsc; @@ -565,6 +564,17 @@ std::unique_ptr InferenceEnginePython::IE return exec_network; } +std::unique_ptr InferenceEnginePython::IECore::loadNetworkFromFile( + const std::string &modelPath, const std::string &deviceName, const std::map &config, int num_requests) { + auto exec_network = InferenceEnginePython::make_unique(modelPath, + num_requests); + exec_network->actual = actual.LoadNetwork(modelPath, deviceName, config); + exec_network->createInferRequests(num_requests); + + return exec_network; +} + std::unique_ptr InferenceEnginePython::IECore::importNetwork( const std::string &modelFIle, const std::string &deviceName, const std::map &config, int num_requests) { @@ -603,7 +613,7 @@ void InferenceEnginePython::IECore::registerPlugins(const std::string &xmlConfig } void InferenceEnginePython::IECore::addExtension(const std::string &ext_lib_path, const std::string &deviceName) { - auto extension_ptr = InferenceEngine::make_so_pointer(ext_lib_path); + auto extension_ptr = std::make_shared(ext_lib_path); auto extension = std::dynamic_pointer_cast(extension_ptr); actual.AddExtension(extension, deviceName); } diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp index eff8c8cec3f504..29cb1acfd61fe4 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -73,7 +73,6 @@ struct IENetwork { void convertToOldRepresentation(); std::string getOVNameForTensor(const std::string& orig_name); - std::string getOVNameForOperation(const std::string& orig_name); }; @@ -162,6 +161,8 @@ struct IECore { InferenceEnginePython::IENetwork readNetwork(const std::string& model, const uint8_t *bin, size_t bin_size); std::unique_ptr loadNetwork(IENetwork network, const std::string & deviceName, const std::map & config, int num_requests); + std::unique_ptr loadNetworkFromFile(const std::string & modelPath, + const std::string & deviceName, const std::map & config, int num_requests); std::unique_ptr importNetwork(const std::string & modelFIle, const std::string & deviceName, const std::map & config, int num_requests); std::map queryNetwork(IENetwork network, const std::string & deviceName, diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl_defs.pxd b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl_defs.pxd index 91b3e9af849e90..6acf8e0b755d0b 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl_defs.pxd +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/ie_api_impl_defs.pxd @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from libc.stddef cimport size_t from libcpp cimport bool from libcpp.string cimport string @@ -176,7 +179,6 @@ cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython": object getFunction() except + void convertToOldRepresentation() except + string getOVNameForTensor(const string &) except + - string getOVNameForOperation(const string &) except + cdef cppclass InferRequestWrap: double exec_time; @@ -200,6 +202,8 @@ cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython": IENetwork readNetwork(const string& modelPath,uint8_t*bin, size_t bin_size) except + unique_ptr[IEExecNetwork] loadNetwork(IENetwork network, const string deviceName, const map[string, string] & config, int num_requests) except + + unique_ptr[IEExecNetwork] loadNetworkFromFile(const string & modelPath, const string & deviceName, + const map[string, string] & config, int num_requests) except + unique_ptr[IEExecNetwork] importNetwork(const string & modelFIle, const string & deviceName, const map[string, string] & config, int num_requests) except + map[string, string] queryNetwork(IENetwork network, const string deviceName, diff --git a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/CMakeLists.txt index dc2d401c52ccbf..9c67863f0d4d0b 100644 --- a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/CMakeLists.txt @@ -1,9 +1,13 @@ -# Copyright (C) 2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# set(TARGET_NAME "offline_transformations_api") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/offline_transformations) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/offline_transformations) +set(CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/offline_transformations) +set(CMAKE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/offline_transformations) file(GLOB SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/offline_transformations_api.pyx diff --git a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/__init__.py b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/__init__.py index 998ef9aa183e72..1a793c30091651 100644 --- a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/__init__.py +++ b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/__init__.py @@ -1,2 +1,30 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import sys + +if sys.platform == "win32": + # Installer, yum, pip installs openvino dlls to the different directories + # and those paths need to be visible to the openvino modules + # + # If you're using a custom installation of openvino, + # add the location of openvino dlls to your system PATH. + # + # looking for the libs in the pip installation path by default. + openvino_libs = [os.path.join(os.path.dirname(__file__), '..', '..', 'openvino', 'libs')] + # setupvars.bat script set all libs paths to OPENVINO_LIB_PATHS environment variable. + openvino_libs_installer = os.getenv('OPENVINO_LIB_PATHS') + if openvino_libs_installer: + openvino_libs.extend(openvino_libs_installer.split(';')) + for lib in openvino_libs: + lib_path = os.path.join(os.path.dirname(__file__), lib) + if os.path.isdir(lib_path): + # On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH. + if (3, 8) <= sys.version_info: + os.add_dll_directory(os.path.abspath(lib_path)) + else: + os.environ["PATH"] = os.path.abspath(lib_path) + ";" + os.environ["PATH"] + from .offline_transformations_api import * __all__ = ['ApplyMOCTransformations'] diff --git a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api.pyx b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api.pyx index a3601bad23163a..8e9be27b31ba80 100644 --- a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api.pyx +++ b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api.pyx @@ -1,18 +1,6 @@ -""" - Copyright (C) 2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from .cimport offline_transformations_api_impl_defs as C from ..inference_engine.ie_api cimport IENetwork @@ -23,3 +11,9 @@ def ApplyMOCTransformations(IENetwork network, bool cf): def ApplyLowLatencyTransformation(IENetwork network): C.ApplyLowLatencyTransformation(network.impl) + +def ApplyPruningTransformation(IENetwork network): + C.ApplyPruningTransformation(network.impl) + +def CheckAPI(): + C.CheckAPI() diff --git a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.cpp b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.cpp index c03915495f3d62..eeb19a63ac5c74 100644 --- a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.cpp +++ b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.cpp @@ -1,16 +1,20 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "offline_transformations_api_impl.hpp" #include +#include #include +#include #include #include +#include + void InferenceEnginePython::ApplyMOCTransformations(InferenceEnginePython::IENetwork network, bool cf) { ngraph::pass::Manager manager; manager.register_pass(cf); @@ -28,3 +32,27 @@ void InferenceEnginePython::ApplyLowLatencyTransformation(InferenceEnginePython: }); manager.run_passes(network.actual->getFunction()); } + +void InferenceEnginePython::ApplyPruningTransformation(InferenceEnginePython::IENetwork network) { + ngraph::pass::Manager manager; + manager.register_pass(); + manager.run_passes(network.actual->getFunction()); +} + + +void InferenceEnginePython::CheckAPI() { + std::shared_ptr f; + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{1, 1000, 4}); + auto reshape = std::make_shared(input, std::make_shared(input), true); + f = std::make_shared(ngraph::NodeVector{reshape}, ngraph::ParameterVector{input}); + } + ngraph::pass::Manager m; + m.register_pass(); + m.run_passes(f); + + assert(f->get_results().size() == 1); + auto reshape = f->get_result()->input_value(0).get_node_shared_ptr(); + assert(std::dynamic_pointer_cast(reshape->input_value(0).get_node_shared_ptr())); + assert(std::dynamic_pointer_cast(reshape->input_value(1).get_node_shared_ptr())); +} \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.hpp b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.hpp index 910897732c4cda..038574423a4a39 100644 --- a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.hpp +++ b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,4 +13,8 @@ void ApplyMOCTransformations(InferenceEnginePython::IENetwork network, bool cf); void ApplyLowLatencyTransformation(InferenceEnginePython::IENetwork network); +void ApplyPruningTransformation(InferenceEnginePython::IENetwork network); + +void CheckAPI(); + }; // namespace InferenceEnginePython diff --git a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl_defs.pxd b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl_defs.pxd index ae39f27cf29adb..ce8928af39e289 100644 --- a/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl_defs.pxd +++ b/inference-engine/ie_bridges/python/src/openvino/offline_transformations/offline_transformations_api_impl_defs.pxd @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from libcpp cimport bool from ..inference_engine.ie_api_impl_defs cimport IENetwork @@ -5,3 +8,7 @@ cdef extern from "offline_transformations_api_impl.hpp" namespace "InferenceEngi cdef void ApplyMOCTransformations(IENetwork network, bool cf) cdef void ApplyLowLatencyTransformation(IENetwork network) + + cdef void ApplyPruningTransformation(IENetwork network) + + cdef void CheckAPI() \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/src/openvino/test_utils/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/test_utils/CMakeLists.txt index efa349b7c9fda1..949d32f1692399 100644 --- a/inference-engine/ie_bridges/python/src/openvino/test_utils/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/src/openvino/test_utils/CMakeLists.txt @@ -1,9 +1,13 @@ -# Copyright (C) 2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# set(TARGET_NAME "test_utils_api") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/test_utils) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/test_utils) +set(CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/test_utils) +set(CMAKE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/test_utils) file(GLOB SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/test_utils_api.pyx diff --git a/inference-engine/ie_bridges/python/src/openvino/test_utils/__init__.py b/inference-engine/ie_bridges/python/src/openvino/test_utils/__init__.py index c2f795f1fbd6f4..a74171baad48e3 100644 --- a/inference-engine/ie_bridges/python/src/openvino/test_utils/__init__.py +++ b/inference-engine/ie_bridges/python/src/openvino/test_utils/__init__.py @@ -1,2 +1,5 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from .test_utils_api import * __all__ = ['CompareNetworks'] diff --git a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api.pyx b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api.pyx index ce98edd0506b54..e4eaa7eeaa9978 100644 --- a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api.pyx +++ b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api.pyx @@ -1,18 +1,6 @@ -""" - Copyright (C) 2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from .cimport test_utils_api_impl_defs as C from ..inference_engine.ie_api cimport IENetwork diff --git a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.cpp b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.cpp index 70a2bb860d8320..48cba8526f776d 100644 --- a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.cpp +++ b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.hpp b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.hpp index 34047680be329d..bce3c2d00aeb3f 100644 --- a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.hpp +++ b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl_defs.pxd b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl_defs.pxd index afc477d923bd41..cb3d7704482fcd 100644 --- a/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl_defs.pxd +++ b/inference-engine/ie_bridges/python/src/openvino/test_utils/test_utils_api_impl_defs.pxd @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from libcpp cimport bool from libcpp.string cimport string from libcpp.pair cimport pair diff --git a/inference-engine/ie_bridges/python/tests/conftest.py b/inference-engine/ie_bridges/python/tests/conftest.py index 75b750c9ce383c..fd327147c33238 100644 --- a/inference-engine/ie_bridges/python/tests/conftest.py +++ b/inference-engine/ie_bridges/python/tests/conftest.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import pytest diff --git a/inference-engine/ie_bridges/python/tests/test_Blob.py b/inference-engine/ie_bridges/python/tests/test_Blob.py index 2353e60c61c293..1f0d00519ab02c 100644 --- a/inference-engine/ie_bridges/python/tests/test_Blob.py +++ b/inference-engine/ie_bridges/python/tests/test_Blob.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest import numpy as np @@ -36,7 +39,22 @@ def test_get_buffer(): blob = Blob(tensor_desc, array) assert np.array_equal(blob.buffer, array) -def write_to_buffer(precision, numpy_precision): + +@pytest.mark.parametrize("precision, numpy_precision", [ + ("FP32", np.float32), + ("FP64", np.float64), + ("FP16", np.float16), + ("I8", np.int8), + ("U8", np.uint8), + ("I32", np.int32), + ("I16", np.int16), + ("U16", np.uint16), + ("I64", np.int64), + ("BOOL", np.uint8), + ("BIN", np.int8), + ("BF16", np.float16), +]) +def test_write_to_buffer(precision, numpy_precision): tensor_desc = TensorDesc(precision, [1, 3, 127, 127], "NCHW") array = np.zeros(shape=(1, 3, 127, 127), dtype=numpy_precision) blob = Blob(tensor_desc, array) @@ -44,41 +62,6 @@ def write_to_buffer(precision, numpy_precision): blob.buffer[:] = ones_arr assert np.array_equal(blob.buffer, ones_arr) -def test_write_to_buffer_fp32(): - write_to_buffer("FP32", np.float32) - - -def test_write_to_buffer_fp64(): - write_to_buffer("FP64", np.float64) - - -def test_write_to_buffer_fp16(): - write_to_buffer("FP16", np.float16) - - -def test_write_to_buffer_int8(): - write_to_buffer("I8", np.int8) - - -def test_write_to_buffer_uint8(): - write_to_buffer("U8", np.uint8) - - -def test_write_to_buffer_int32(): - write_to_buffer("I32", np.int32) - - -def test_write_to_buffer_int16(): - write_to_buffer("I16", np.int16) - - -def test_write_to_buffer_uint16(): - write_to_buffer("U16", np.uint16) - - -def test_write_to_buffer_int64(): - write_to_buffer("I64", np.int64) - def test_write_numpy_scalar_int64(): tensor_desc = TensorDesc("I64", [], "SCALAR") diff --git a/inference-engine/ie_bridges/python/tests/test_CDataPtr.py b/inference-engine/ie_bridges/python/tests/test_CDataPtr.py index e24ab8cf68d63e..d81dd46a5cc18d 100644 --- a/inference-engine/ie_bridges/python/tests/test_CDataPtr.py +++ b/inference-engine/ie_bridges/python/tests/test_CDataPtr.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest from openvino.inference_engine import CDataPtr, IECore diff --git a/inference-engine/ie_bridges/python/tests/test_DataPtr.py b/inference-engine/ie_bridges/python/tests/test_DataPtr.py index f1813e80f71cbc..9b125fb585405c 100644 --- a/inference-engine/ie_bridges/python/tests/test_DataPtr.py +++ b/inference-engine/ie_bridges/python/tests/test_DataPtr.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest from openvino.inference_engine import IECore, DataPtr diff --git a/inference-engine/ie_bridges/python/tests/test_ExecutableNetwork.py b/inference-engine/ie_bridges/python/tests/test_ExecutableNetwork.py index c0eba340f8ea99..2193a6501c24bb 100644 --- a/inference-engine/ie_bridges/python/tests/test_ExecutableNetwork.py +++ b/inference-engine/ie_bridges/python/tests/test_ExecutableNetwork.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import os import pytest @@ -231,10 +234,11 @@ def test_plugin_accessible_after_deletion(device): del ie_core -@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") == "ARM", - reason=f"Cannot run test on device {os.environ.get('TEST_DEVICE')}") def test_exec_graph(device): ie_core = ie.IECore() + if device == "CPU": + if ie_core.get_metric(device, "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to get_exec_graph_info method isn't implemented") net = ie_core.read_network(model=test_net_xml, weights=test_net_bin) exec_net = ie_core.load_network(net, device) img = read_image() @@ -291,9 +295,11 @@ def test_get_metric(device): assert network_name == "test_model" -@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device independent test") +@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device dependent test") def test_get_config(device): ie_core = ie.IECore() + if ie_core.get_metric(device, "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to CPU dependent test") net = ie_core.read_network(model=test_net_xml, weights=test_net_bin) exec_net = ie_core.load_network(net, device) config = exec_net.get_config("PERF_COUNT") diff --git a/inference-engine/ie_bridges/python/tests/test_IECore.py b/inference-engine/ie_bridges/python/tests/test_IECore.py index 3dfce9ec3b9d69..41d28f1c41b1f6 100644 --- a/inference-engine/ie_bridges/python/tests/test_IECore.py +++ b/inference-engine/ie_bridges/python/tests/test_IECore.py @@ -1,7 +1,9 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import pytest from sys import platform -import numpy as np from pathlib import Path from openvino.inference_engine import IENetwork, IECore, ExecutableNetwork @@ -42,6 +44,12 @@ def test_load_network(device): assert isinstance(exec_net, ExecutableNetwork) +def test_load_network_from_file(device): + ie = IECore() + exec_net = ie.load_network(test_net_xml, device) + assert isinstance(exec_net, ExecutableNetwork) + + @pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device independent test") def test_load_network_wrong_device(): ie = IECore() @@ -52,8 +60,11 @@ def test_load_network_wrong_device(): def test_query_network(device): - import ngraph as ng ie = IECore() + if device == "CPU": + if ie.get_metric(device, "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to ngraph") + import ngraph as ng net = ie.read_network(model=test_net_xml, weights=test_net_bin) query_res = ie.query_network(net, device) func_net = ng.function_from_cnn(net) @@ -64,18 +75,22 @@ def test_query_network(device): assert next(iter(set(query_res.values()))) == device, "Wrong device for some layers" -@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device independent test") +@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device dependent test") def test_register_plugin(): ie = IECore() + if ie.get_metric("CPU", "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to MKLDNNPlugin specific test") ie.register_plugin("MKLDNNPlugin", "BLA") net = ie.read_network(model=test_net_xml, weights=test_net_bin) exec_net = ie.load_network(net, "BLA") assert isinstance(exec_net, ExecutableNetwork), "Cannot load the network to the registered plugin with name 'BLA'" -@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device independent test") +@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device dependent test") def test_register_plugins(): ie = IECore() + if ie.get_metric("CPU", "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to MKLDNNPlugin specific test") if platform == "linux" or platform == "linux2": ie.register_plugins(plugins_xml) elif platform == "darwin": @@ -117,11 +132,12 @@ def test_get_metric_list_of_str(): "metric are strings!" - @pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason=f"Cannot run test on device {os.environ.get('TEST_DEVICE')}, Plugin specific test") def test_get_metric_tuple_of_two_ints(): ie = IECore() + if ie.get_metric("CPU", "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to unsupported device metric") param = ie.get_metric("CPU", "RANGE_FOR_STREAMS") assert isinstance(param, tuple), "Parameter value for 'RANGE_FOR_STREAMS' " \ f"metric must be tuple but {type(param)} is returned" @@ -133,6 +149,8 @@ def test_get_metric_tuple_of_two_ints(): reason=f"Cannot run test on device {os.environ.get('TEST_DEVICE')}, Plugin specific test") def test_get_metric_tuple_of_three_ints(): ie = IECore() + if ie.get_metric("CPU", "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to unsupported device metric") param = ie.get_metric("CPU", "RANGE_FOR_ASYNC_INFER_REQUESTS") assert isinstance(param, tuple), "Parameter value for 'RANGE_FOR_ASYNC_INFER_REQUESTS' " \ f"metric must be tuple but {type(param)} is returned" @@ -176,21 +194,25 @@ def test_read_network_from_onnx(): net = ie.read_network(model=test_net_onnx) assert isinstance(net, IENetwork) + def test_read_network_from_onnx_as_path(): ie = IECore() net = ie.read_network(model=Path(test_net_onnx)) assert isinstance(net, IENetwork) + def test_read_network_from_prototxt(): ie = IECore() net = ie.read_network(model=test_net_prototxt) assert isinstance(net, IENetwork) + def test_read_network_from_prototxt_as_path(): ie = IECore() net = ie.read_network(model=Path(test_net_prototxt)) assert isinstance(net, IENetwork) + def test_incorrect_xml(): ie = IECore() with pytest.raises(Exception) as e: diff --git a/inference-engine/ie_bridges/python/tests/test_IENetwork.py b/inference-engine/ie_bridges/python/tests/test_IENetwork.py index a1192fe64e9ccf..1c3474e689134d 100644 --- a/inference-engine/ie_bridges/python/tests/test_IENetwork.py +++ b/inference-engine/ie_bridges/python/tests/test_IENetwork.py @@ -1,7 +1,9 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import pytest import warnings -import numpy as np from openvino.inference_engine import IECore, IENetwork, DataPtr, InputInfoPtr, PreProcessInfo from conftest import model_path @@ -180,9 +182,12 @@ def test_batch_size_after_reshape(): assert net.input_info['data'].input_data.shape == [8, 3, 32, 32] -def test_serialize(): - import ngraph as ng +def test_serialize(device): ie = IECore() + if device == "CPU": + if ie.get_metric(device, "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to ngraph") + import ngraph as ng net = ie.read_network(model=test_net_xml, weights=test_net_bin) net.serialize("./serialized_net.xml", "./serialized_net.bin") serialized_net = ie.read_network(model="./serialized_net.xml", weights="./serialized_net.bin") @@ -304,4 +309,3 @@ def test_tensor_names(): assert net.get_ov_name_for_tensor("relu_t") == "activation" assert net.get_ov_name_for_tensor("identity_t") == "activation" assert net.get_ov_name_for_tensor("input") == "in1" - assert net.get_ov_name_for_operation("output") == "activation" diff --git a/inference-engine/ie_bridges/python/tests/test_InferRequest.py b/inference-engine/ie_bridges/python/tests/test_InferRequest.py index c66a9ceb6eeee3..5a534703598fc3 100644 --- a/inference-engine/ie_bridges/python/tests/test_InferRequest.py +++ b/inference-engine/ie_bridges/python/tests/test_InferRequest.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import os import pytest @@ -373,6 +376,9 @@ def execute(self, input_data): def test_get_perf_counts(device): ie_core = ie.IECore() + if device == "CPU": + if ie_core.get_metric(device, "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to ngraph") net = ie_core.read_network(test_net_xml, test_net_bin) ie_core.set_config({"PERF_COUNT": "YES"}, device) exec_net = ie_core.load_network(net, device) @@ -392,6 +398,8 @@ def test_get_perf_counts(device): "Dynamic batch fully supported only on CPU") def test_set_batch_size(device): ie_core = ie.IECore() + if ie_core.get_metric(device, "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin due-to dynamic batch isn't supported") ie_core.set_config({"DYN_BATCH_ENABLED": "YES"}, device) net = ie_core.read_network(test_net_xml, test_net_bin) net.batch_size = 10 @@ -435,6 +443,9 @@ def test_set_negative_batch_size(device): def test_blob_setter(device): ie_core = ie.IECore() + if device == "CPU": + if ie_core.get_metric(device, "FULL_DEVICE_NAME") == "arm_compute::NEON": + pytest.skip("Can't run on ARM plugin") net = ie_core.read_network(test_net_xml, test_net_bin) exec_net_1 = ie_core.load_network(network=net, device_name=device, num_requests=1) diff --git a/inference-engine/ie_bridges/python/tests/test_InputInfoCPtr.py b/inference-engine/ie_bridges/python/tests/test_InputInfoCPtr.py index 81eb9513e1f934..abfab2ce1b35dd 100644 --- a/inference-engine/ie_bridges/python/tests/test_InputInfoCPtr.py +++ b/inference-engine/ie_bridges/python/tests/test_InputInfoCPtr.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest from openvino.inference_engine import InputInfoCPtr, DataPtr, IECore, TensorDesc diff --git a/inference-engine/ie_bridges/python/tests/test_InputInfoPtr.py b/inference-engine/ie_bridges/python/tests/test_InputInfoPtr.py index 730b35e6c5872b..a37a5f6b00c081 100644 --- a/inference-engine/ie_bridges/python/tests/test_InputInfoPtr.py +++ b/inference-engine/ie_bridges/python/tests/test_InputInfoPtr.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest from openvino.inference_engine import InputInfoPtr, PreProcessInfo, DataPtr, IECore, TensorDesc, ColorFormat diff --git a/inference-engine/ie_bridges/python/tests/test_NGraph.py b/inference-engine/ie_bridges/python/tests/test_NGraph.py index 4643b48e04352d..6d5c110b9c8518 100644 --- a/inference-engine/ie_bridges/python/tests/test_NGraph.py +++ b/inference-engine/ie_bridges/python/tests/test_NGraph.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from openvino.inference_engine import IECore, IENetwork import ngraph as ng from ngraph.impl.op import Parameter diff --git a/inference-engine/ie_bridges/python/tests/test_PreProcessInfo.py b/inference-engine/ie_bridges/python/tests/test_PreProcessInfo.py index 3fe94db6fb1ce7..5de106ec2701d3 100644 --- a/inference-engine/ie_bridges/python/tests/test_PreProcessInfo.py +++ b/inference-engine/ie_bridges/python/tests/test_PreProcessInfo.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest from openvino.inference_engine import PreProcessInfo, IECore, TensorDesc, Blob, PreProcessChannel,\ diff --git a/inference-engine/ie_bridges/python/tests/test_TensorDesc.py b/inference-engine/ie_bridges/python/tests/test_TensorDesc.py index e63a40b2f7b950..e628919ebd355f 100644 --- a/inference-engine/ie_bridges/python/tests/test_TensorDesc.py +++ b/inference-engine/ie_bridges/python/tests/test_TensorDesc.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest from openvino.inference_engine import TensorDesc diff --git a/inference-engine/ie_bridges/python/tests/test_offline_api.py b/inference-engine/ie_bridges/python/tests/test_offline_api.py index 323de4dd34fe88..b5565c04bb4d66 100644 --- a/inference-engine/ie_bridges/python/tests/test_offline_api.py +++ b/inference-engine/ie_bridges/python/tests/test_offline_api.py @@ -1,5 +1,8 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from openvino.inference_engine import IECore, IENetwork -from openvino.offline_transformations import ApplyMOCTransformations, ApplyLowLatencyTransformation +from openvino.offline_transformations import ApplyMOCTransformations, ApplyLowLatencyTransformation, ApplyPruningTransformation import ngraph as ng from ngraph.impl.op import Parameter @@ -38,3 +41,12 @@ def test_low_latency_transformations(): f = ng.function_from_cnn(net) assert f != None assert len(f.get_ops()) == 3 + + +def test_pruning_transformations(): + net = get_test_cnnnetwork() + ApplyPruningTransformation(net) + + f = ng.function_from_cnn(net) + assert f != None + assert len(f.get_ops()) == 3 \ No newline at end of file diff --git a/inference-engine/ie_bridges/python/tests/test_utils.py b/inference-engine/ie_bridges/python/tests/test_utils.py index 52db126a2ba0c6..e54648ecd73e64 100644 --- a/inference-engine/ie_bridges/python/tests/test_utils.py +++ b/inference-engine/ie_bridges/python/tests/test_utils.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from openvino.inference_engine import IECore, IENetwork import ngraph as ng diff --git a/inference-engine/ie_bridges/python/wheel/CMakeLists.txt b/inference-engine/ie_bridges/python/wheel/CMakeLists.txt index 46f0ac4ed91bbd..bd6d6e80d72b57 100644 --- a/inference-engine/ie_bridges/python/wheel/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/wheel/CMakeLists.txt @@ -1,23 +1,26 @@ # Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# set(WHEEL_PACKAGE_NAME "openvino" CACHE STRING "Name of the package") set(WHEEL_LICENCE_TYPE "OSI Approved :: Apache Software License" CACHE STRING "License type for the package") set(WHEEL_AUTHOR "Intel Corporation" CACHE STRING "Package author’s name") set(WHEEL_AUTHOR_EMAIL "openvino_pushbot@intel.com" CACHE STRING "Email address of the package author") set(WHEEL_DESC "Inference Engine Python* API" CACHE STRING "Short, summary description of the package") +set(WHEEL_URL "https://docs.openvinotoolkit.org/latest/index.html" CACHE STRING "Home page url") +set(WHEEL_DOWNLOAD_URL "https://github.com/openvinotoolkit/openvino/tags" CACHE STRING "Download page url") set(WHEEL_VERSION "0.0.0" CACHE STRING "Version of this release") set(WHEEL_BUILD "000" CACHE STRING "Build number of this release") set(WHEEL_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE" CACHE STRING "Wheel license file") set(WHEEL_REQUIREMENTS "${CMAKE_CURRENT_SOURCE_DIR}/meta/openvino.requirements.txt" CACHE STRING "Wheel requirements.txt file") -set(WHEEL_OVERVIEW "${CMAKE_CURRENT_SOURCE_DIR}/meta/pypi_overview.md" CACHE STRING "WHEEL_AUTHOR detailed description") +set(WHEEL_OVERVIEW "${CMAKE_CURRENT_SOURCE_DIR}/meta/pypi_overview.md" CACHE STRING "Detailed description") set(SETUP_PY "${CMAKE_CURRENT_SOURCE_DIR}/setup.py") set(SETUP_ENV "${CMAKE_CURRENT_SOURCE_DIR}/.env.in") set(CORE_LIBS_DIR ${IE_CPACK_RUNTIME_PATH}) set(PLUGINS_LIBS_DIR ${IE_CPACK_RUNTIME_PATH}) -set(NGRAPH_LIBS_DIR ${IE_CPACK_IE_DIR}/../ngraph/lib) +set(NGRAPH_LIBS_DIR deployment_tools/ngraph/lib) set(PY_PACKAGES_DIR ${PYTHON_BRIDGE_CPACK_PATH}/${PYTHON_VERSION}) set(TBB_LIBS_DIR deployment_tools/inference_engine/external/tbb/lib) @@ -35,7 +38,18 @@ endif() configure_file(${SETUP_ENV} "${CMAKE_CURRENT_SOURCE_DIR}/.env") -add_custom_target(ie_wheel ALL DEPENDS ie_libraries ie_plugins ie_api _pyngraph) +add_custom_target(ie_wheel ALL DEPENDS ie_libraries ie_plugins ie_api) + +if(TARGET _pyngraph) + add_dependencies(ie_wheel _pyngraph) +endif() + +if(LINUX) + find_host_program(patchelf_program NAMES patchelf) + if(NOT patchelf_program) + message(FATAL_ERROR "patchelf is not found, which is needed to build ie_wheel") + endif() +endif() add_custom_command(TARGET ie_wheel POST_BUILD diff --git a/inference-engine/ie_bridges/python/wheel/meta/openvino-dev.requirements.txt b/inference-engine/ie_bridges/python/wheel/meta/openvino-dev.requirements.txt new file mode 100644 index 00000000000000..9fbd32370e952c --- /dev/null +++ b/inference-engine/ie_bridges/python/wheel/meta/openvino-dev.requirements.txt @@ -0,0 +1,27 @@ +defusedxml>=0.5.0 +scipy==1.5.4 +jstyleson==0.0.2 +numpy==1.16.6 +addict==2.2.1 +pandas==0.24.2 +hyperopt==0.1.2 +networkx==2.2 +tqdm==4.31.1 +texttable==1.6.3 +py-cpuinfo!=5.0,!=6.0 +PyYAML>=5.4.1 +pillow>=8.1.0 +scikit-image +scikit-learn +yamlloader +shapely +nibabel +pydicom +sentencepiece +tokenizers +editdistance +parasail +fast-ctc-decode +rawpy +nltk +opencv-python diff --git a/inference-engine/ie_bridges/python/wheel/meta/openvino-dev.setup.cfg b/inference-engine/ie_bridges/python/wheel/meta/openvino-dev.setup.cfg new file mode 100644 index 00000000000000..9b9012f08bb6c3 --- /dev/null +++ b/inference-engine/ie_bridges/python/wheel/meta/openvino-dev.setup.cfg @@ -0,0 +1,25 @@ +[options] +py_modules = + mo + mo_tf + mo_caffe + mo_mxnet + mo_onnx + mo_kaldi + +[options.package_data] + mo = *.txt + +[options.entry_points] +console_scripts = + pot=app.run:main + accuracy_check=accuracy_checker.main:main + convert_annotation=accuracy_checker.annotation_converters.convert:main + +[metadata] +license_files = + readme* + *LICENSE* + *license* + *third-party-programs* + *EULA* diff --git a/inference-engine/ie_bridges/python/wheel/setup.cfg b/inference-engine/ie_bridges/python/wheel/setup.cfg new file mode 100644 index 00000000000000..abb1790b67f2d4 --- /dev/null +++ b/inference-engine/ie_bridges/python/wheel/setup.cfg @@ -0,0 +1,7 @@ +[metadata] +license_files = + readme* + *LICENSE* + *license* + *third-party-programs* + *EULA* diff --git a/inference-engine/ie_bridges/python/wheel/setup.py b/inference-engine/ie_bridges/python/wheel/setup.py index 3e061840090d40..6f03554ffeb4e8 100644 --- a/inference-engine/ie_bridges/python/wheel/setup.py +++ b/inference-engine/ie_bridges/python/wheel/setup.py @@ -1,16 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - This conversation was marked as resolved by dkurt - 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. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os.path import sys @@ -27,16 +16,17 @@ from setuptools.command.build_clib import build_clib from decouple import config -WHEEL_LIBS_INSTALL_DIR = "openvino.libs" +WHEEL_LIBS_INSTALL_DIR = os.path.join('openvino', 'libs') +WHEEL_LIBS_PACKAGE = 'openvino.libs' PYTHON_VERSION = f"python{sys.version_info.major}.{sys.version_info.minor}" # The following variables can be defined in environment or .env file -CMAKE_BUILD_DIR = os.path.normpath(config('CMAKE_BUILD_DIR', ".")) -CORE_LIBS_DIR = os.path.normpath(config('CORE_LIBS_DIR', '')) -PLUGINS_LIBS_DIR = os.path.normpath(config('PLUGINS_LIBS_DIR', '')) -NGRAPH_LIBS_DIR = os.path.normpath(config('NGRAPH_LIBS_DIR', '')) -TBB_LIBS_DIR = os.path.normpath(config('TBB_LIBS_DIR', '')) -PY_PACKAGES_DIR = os.path.normpath(config('PY_PACKAGES_DIR', '')) +CMAKE_BUILD_DIR = config('CMAKE_BUILD_DIR', ".") +CORE_LIBS_DIR = config('CORE_LIBS_DIR', '') +PLUGINS_LIBS_DIR = config('PLUGINS_LIBS_DIR', '') +NGRAPH_LIBS_DIR = config('NGRAPH_LIBS_DIR', '') +TBB_LIBS_DIR = config('TBB_LIBS_DIR', '') +PY_PACKAGES_DIR = config('PY_PACKAGES_DIR', '') LIBS_RPATH = "$ORIGIN" if sys.platform == "linux" else "@loader_path" LIB_INSTALL_CFG = { @@ -50,26 +40,31 @@ 'name': 'hetero', 'prefix': 'libs.plugins', 'install_dir': PLUGINS_LIBS_DIR, + 'rpath': LIBS_RPATH, }, "gpu_plugin": { - 'name': 'cldnn', + 'name': 'gpu', 'prefix': 'libs.plugins', 'install_dir': PLUGINS_LIBS_DIR, + 'rpath': LIBS_RPATH, }, "cpu_plugin": { - 'name': 'mkldnn', + 'name': 'cpu', 'prefix': 'libs.plugins', - 'install_dir': PLUGINS_LIBS_DIR + 'install_dir': PLUGINS_LIBS_DIR, + 'rpath': LIBS_RPATH, }, "multi_plugin": { 'name': 'multi', 'prefix': 'libs.plugins', - 'install_dir': PLUGINS_LIBS_DIR + 'install_dir': PLUGINS_LIBS_DIR, + 'rpath': LIBS_RPATH, }, "myriad_plugin": { 'name': 'myriad', 'prefix': 'libs.plugins', 'install_dir': PLUGINS_LIBS_DIR, + 'rpath': LIBS_RPATH, }, "ngraph_libs": { 'name': 'ngraph', @@ -128,6 +123,7 @@ class PrepareLibs(build_clib): def run(self): self.configure(LIB_INSTALL_CFG) self.configure(PY_INSTALL_CFG) + self.generate_package(get_dir_list(LIB_INSTALL_CFG)) def configure(self, install_cfg): """Collect prebuilt libraries. Install them to the temp directories, set rpath.""" @@ -143,9 +139,32 @@ def configure(self, install_cfg): "--component", comp_data.get('name')]) # set rpath if applicable if sys.platform != "win32" and comp_data.get('rpath'): - lib_pattern = "*.so" if sys.platform == "linux" else "*.dylib" - for path in Path(install_dir).glob(lib_pattern): - set_rpath(comp_data['rpath'], path) + file_types = ["*.so"] if sys.platform == "linux" else ["*.dylib", "*.so"] + for file in file_types: + for path in Path(install_dir).glob(file): + set_rpath(comp_data['rpath'], path) + + def generate_package(self, src_dirs): + """ + Collect package data files from preinstalled dirs and + put all runtime libraries to the subpackage + """ + # additional blacklist filter, just to fix cmake install issues + blacklist = ['.lib', '.pdb', '_debug.dll', '_debug.dylib'] + package_dir = os.path.join(get_package_dir(PY_INSTALL_CFG), WHEEL_LIBS_INSTALL_DIR) + for src_dir in src_dirs: + local_base_dir = Path(src_dir) + for file_path in local_base_dir.rglob('*'): + file_name = os.path.basename(file_path) + if file_path.is_file() and not any(file_name.endswith(ext) for ext in blacklist): + dst_file = os.path.join(package_dir, os.path.relpath(file_path, local_base_dir)) + os.makedirs(os.path.dirname(dst_file), exist_ok=True) + copyfile(file_path, dst_file) + + if Path(package_dir).exists(): + self.announce(f"Adding {WHEEL_LIBS_PACKAGE} package", level=3) + packages.append(WHEEL_LIBS_PACKAGE) + package_data.update({WHEEL_LIBS_PACKAGE: ['*']}) class CopyExt(build_ext): @@ -181,6 +200,24 @@ def is_tool(name): return True +def remove_rpath(file_path): + """ + Remove rpath from binaries + :param file_path: binary path + :type file_path: pathlib.Path + """ + if sys.platform == "darwin": + cmd = f'otool -l {file_path} ' \ + f'| grep LC_RPATH -A3 ' \ + f'| grep -o "path.*" ' \ + f'| cut -d " " -f2 ' \ + f'| xargs -I{{}} install_name_tool -delete_rpath {{}} {file_path}' + if os.WEXITSTATUS(os.system(cmd)) != 0: + sys.exit(f"Could not remove rpath for {file_path}") + else: + sys.exit(f"Unsupported platform: {sys.platform}") + + def set_rpath(rpath, executable): """Setting rpath for linux and macOS libraries""" print(f"Setting rpath {rpath} for {executable}") @@ -196,37 +233,14 @@ def set_rpath(rpath, executable): sys.exit(f"Unsupported platform: {sys.platform}") if is_tool(rpath_tool): + if sys.platform == "darwin": + remove_rpath(executable) ret_info = subprocess.run(cmd, check=True) if ret_info.returncode != 0: sys.exit(f"Could not set rpath: {rpath} for {executable}") else: sys.exit(f"Could not found {rpath_tool} on the system, " - f"please make sure that this tool is installed") - - -def find_data_files(src_dirs): - """Collect package data files from src_dirs""" - # The install directory for data_files should be a relative path. - # It is interpreted relative to the installation prefix - # (Python’s sys.prefix for system installations; site.USER_BASE for user installations). - if sys.platform == "win32": - install_subdir = f"Lib/site-packages/{WHEEL_LIBS_INSTALL_DIR}" - else: - install_subdir = f"lib/{PYTHON_VERSION}/site-packages/{WHEEL_LIBS_INSTALL_DIR}" - # additional blacklist filter, just to fix cmake install issues - data_blacklist = ['.lib', '.pdb', '_debug.dll', '_debug.dylib'] - data_files = [] - for src_dir in src_dirs: - local_base_dir = Path(src_dir) - for file_path in local_base_dir.rglob('*'): - file_name = os.path.basename(file_path) - dir_name = os.path.dirname(file_path) - if file_path.is_file() and not any(file_name.endswith(ext) for ext in data_blacklist): - data_files.append([ - os.path.join(install_subdir, os.path.relpath(dir_name, local_base_dir)), - [str(file_path)] - ]) - return data_files + f"please make sure that this tool is installed") def find_prebuilt_extensions(search_dirs): @@ -302,6 +316,9 @@ def get_package_dir(install_cfg): if os.path.exists(package_license): copyfile(package_license, "LICENSE") +packages = find_packages(','.join(get_dir_list(PY_INSTALL_CFG))) +package_data = {} + setup( version=config('WHEEL_VERSION', '0.0.0'), author_email=config('WHEEL_AUTHOR_EMAIL', 'openvino_pushbot@intel.com'), @@ -312,6 +329,8 @@ def get_package_dir(install_cfg): install_requires=get_dependencies(config('WHEEL_REQUIREMENTS', "requirements.txt")), long_description=get_description(config('WHEEL_OVERVIEW', 'pypi_overview.md')), long_description_content_type="text/markdown", + download_url=config('WHEEL_DOWNLOAD_URL', 'https://github.com/openvinotoolkit/openvino/tags'), + url=config('WHEEL_URL', 'https://docs.openvinotoolkit.org/latest/index.html'), cmdclass={ "build": CustomBuild, "install": CustomInstall, @@ -319,8 +338,8 @@ def get_package_dir(install_cfg): "build_ext": CopyExt, }, ext_modules=find_prebuilt_extensions(get_dir_list(PY_INSTALL_CFG)), - packages=find_packages(','.join(get_dir_list(PY_INSTALL_CFG))), + packages=packages, package_dir={'': get_package_dir(PY_INSTALL_CFG)}, - data_files=find_data_files(get_dir_list(LIB_INSTALL_CFG)), + package_data=package_data, zip_safe=False, ) diff --git a/inference-engine/include/cldnn/cldnn_config.hpp b/inference-engine/include/cldnn/cldnn_config.hpp index dcb2efd702e092..faf198517fc9d4 100644 --- a/inference-engine/include/cldnn/cldnn_config.hpp +++ b/inference-engine/include/cldnn/cldnn_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -72,6 +72,11 @@ DECLARE_CLDNN_CONFIG_KEY(ENABLE_FP16_FOR_QUANTIZED_MODELS); */ DECLARE_CLDNN_CONFIG_KEY(NV12_TWO_INPUTS); +/** +* @brief This key sets the max number of host threads that can be used by GPU plugin on model loading. +* Default value is maximum number of threads available in the environment. +*/ +DECLARE_CLDNN_CONFIG_KEY(MAX_NUM_THREADS); } // namespace CLDNNConfigParams } // namespace InferenceEngine diff --git a/inference-engine/include/cpp/ie_cnn_network.h b/inference-engine/include/cpp/ie_cnn_network.h index 8fc28ec41351d0..476b78604f09d8 100644 --- a/inference-engine/include/cpp/ie_cnn_network.h +++ b/inference-engine/include/cpp/ie_cnn_network.h @@ -19,7 +19,6 @@ #include "ie_blob.h" #include "ie_common.h" #include "ie_data.h" -#include "details/ie_exception_conversion.hpp" #include "ie_extension.h" namespace ngraph { @@ -202,19 +201,6 @@ class INFERENCE_ENGINE_API_CLASS(CNNNetwork) { return ov_name; } - /** - * @brief Method maps framework operator name to OpenVINO name - * - * @param orig_name Framework operation name - * - * @return OpenVINO name - */ - std::string getOVNameForOperation(const std::string& orig_name) const { - std::string ov_name; - CALL_STATUS_FNC(getOVNameForOperation, ov_name, orig_name); - return ov_name; - } - protected: IE_SUPPRESS_DEPRECATED_START /** diff --git a/inference-engine/include/cpp/ie_executable_network.hpp b/inference-engine/include/cpp/ie_executable_network.hpp index babe31c25f4b05..9716d40bacf2d9 100644 --- a/inference-engine/include/cpp/ie_executable_network.hpp +++ b/inference-engine/include/cpp/ie_executable_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,6 @@ */ #pragma once -#include #include #include #include @@ -19,15 +18,14 @@ #include "cpp/ie_infer_request.hpp" #include "cpp/ie_memory_state.hpp" #include "ie_iexecutable_network.hpp" -#include "details/ie_exception_conversion.hpp" #include "details/ie_so_loader.h" namespace InferenceEngine { /** - * @brief wrapper over IExecutableNetwork + * @brief This is an interface of an executable network */ -class ExecutableNetwork { +class INFERENCE_ENGINE_API_CLASS(ExecutableNetwork) { IExecutableNetwork::Ptr actual; details::SharedObjectLoader::Ptr plg; @@ -38,11 +36,9 @@ class ExecutableNetwork { ExecutableNetwork() = default; /** - * @brief Destructor + * @brief Default destructor */ - ~ExecutableNetwork() { - actual = nullptr; - } + ~ExecutableNetwork(); /** * @brief Constructs ExecutableNetwork from the initialized shared_pointer @@ -50,37 +46,30 @@ class ExecutableNetwork { * @param actual Initialized shared pointer * @param plg Plugin to use */ - explicit ExecutableNetwork(IExecutableNetwork::Ptr actual, details::SharedObjectLoader::Ptr plg = {}) - : actual(actual), plg(plg) { - // plg can be null, but not the actual - if (actual == nullptr) { - THROW_IE_EXCEPTION << "ExecutableNetwork wrapper was not initialized."; - } - } + explicit ExecutableNetwork(IExecutableNetwork::Ptr actual, details::SharedObjectLoader::Ptr plg = {}); /** - * @copybrief IExecutableNetwork::GetOutputsInfo + * @brief Gets the Executable network output Data node information. + * + * The received info is stored in the given InferenceEngine::ConstOutputsDataMap node. + * This method need to be called to find output names for using them later + * when calling InferenceEngine::InferRequest::GetBlob or InferenceEngine::InferRequest::SetBlob * - * Wraps IExecutableNetwork::GetOutputsInfo. * @return A collection that contains string as key, and const Data smart pointer as value */ - ConstOutputsDataMap GetOutputsInfo() const { - ConstOutputsDataMap data; - CALL_STATUS_FNC(GetOutputsInfo, data); - return data; - } + ConstOutputsDataMap GetOutputsInfo() const; /** - * @copybrief IExecutableNetwork::GetInputsInfo + * @brief Gets the executable network input Data node information. + * + * The received info is stored in the given InferenceEngine::ConstInputsDataMap object. + * This method need to be called to find out input names for using them later + * when calling InferenceEngine::InferRequest::SetBlob * - * Wraps IExecutableNetwork::GetInputsInfo + * @param inputs Reference to InferenceEngine::ConstInputsDataMap object. * @return A collection that contains string as key, and const InputInfo smart pointer as value */ - ConstInputsDataMap GetInputsInfo() const { - ConstInputsDataMap info; - CALL_STATUS_FNC(GetInputsInfo, info); - return info; - } + ConstInputsDataMap GetInputsInfo() const; /** * @brief reset owned object to new pointer. @@ -88,28 +77,16 @@ class ExecutableNetwork { * Eessential for cases when simultaneously loaded networks not expected. * @param newActual actual pointed object */ - void reset(IExecutableNetwork::Ptr newActual) { - if (actual == nullptr) { - THROW_IE_EXCEPTION << "ExecutableNetwork wrapper was not initialized."; - } - if (newActual == nullptr) { - THROW_IE_EXCEPTION << "ExecutableNetwork wrapper used for reset was not initialized."; - } - this->actual.swap(newActual); - } + void reset(IExecutableNetwork::Ptr newActual); /** - * @copybrief IExecutableNetwork::CreateInferRequest + * @brief Creates an inference request object used to infer the network. + * + * The created request has allocated input and output blobs (that can be changed later). * - * Wraps IExecutableNetwork::CreateInferRequest. * @return InferRequest object */ - InferRequest CreateInferRequest() { - IInferRequest::Ptr req; - CALL_STATUS_FNC(CreateInferRequest, req); - if (req.get() == nullptr) THROW_IE_EXCEPTION << "Internal error: pointer to infer request is null"; - return InferRequest(req, plg); - } + InferRequest CreateInferRequest(); /** * @copybrief IExecutableNetwork::CreateInferRequest @@ -117,45 +94,31 @@ class ExecutableNetwork { * Wraps IExecutableNetwork::CreateInferRequest. * @return shared pointer on InferenceEngine::InferRequest object */ - InferRequest::Ptr CreateInferRequestPtr() { - IInferRequest::Ptr req; - CALL_STATUS_FNC(CreateInferRequest, req); - return std::make_shared(req, plg); - } + InferRequest::Ptr CreateInferRequestPtr(); /** - * @copybrief IExecutableNetwork::Export - * - * Wraps IExecutableNetwork::Export. + * @brief Exports the current executable network. * * @see Core::ImportNetwork * * @param modelFileName Full path to the location of the exported file */ - void Export(const std::string& modelFileName) { - CALL_STATUS_FNC(Export, modelFileName); - } + void Export(const std::string& modelFileName); /** - * @copybrief IExecutableNetwork::Export - * - * Wraps IExecutableNetwork::Export. + * @brief Exports the current executable network. * * @see Core::ImportNetwork * - * @param networkModel network model output stream + * @param networkModel Network model output stream */ - void Export(std::ostream& networkModel) { - CALL_STATUS_FNC(Export, networkModel); - } + void Export(std::ostream& networkModel); /** * @brief cast operator is used when this wrapper initialized by LoadNetwork - * @return A shared pointer to IExecutableNetwork interface. + * @return A shared pointer to IExecutableNetwork interface. */ - operator IExecutableNetwork::Ptr&() { - return actual; - } + operator IExecutableNetwork::Ptr&(); /** * @copybrief IExecutableNetwork::GetExecGraphInfo @@ -163,88 +126,56 @@ class ExecutableNetwork { * Wraps IExecutableNetwork::GetExecGraphInfo. * @return CNNetwork containing Executable Graph Info */ - CNNNetwork GetExecGraphInfo() { - IE_SUPPRESS_DEPRECATED_START - ICNNNetwork::Ptr ptr = nullptr; - CALL_STATUS_FNC(GetExecGraphInfo, ptr); - return CNNNetwork(ptr); - IE_SUPPRESS_DEPRECATED_END - } + CNNNetwork GetExecGraphInfo(); /** - * @copybrief IExecutableNetwork::QueryState + * @deprecated Use InferRequest::QueryState instead + * @brief Gets state control interface for given executable network. + * + * State control essential for recurrent networks * - * Wraps IExecutableNetwork::QueryState * @return A vector of Memory State objects */ INFERENCE_ENGINE_DEPRECATED("Use InferRequest::QueryState instead") - std::vector QueryState() { - if (actual == nullptr) THROW_IE_EXCEPTION << "ExecutableNetwork was not initialized."; - IVariableState::Ptr pState = nullptr; - auto res = OK; - std::vector controller; - for (size_t idx = 0; res == OK; ++idx) { - ResponseDesc resp; - IE_SUPPRESS_DEPRECATED_START - res = actual->QueryState(pState, idx, &resp); - IE_SUPPRESS_DEPRECATED_END - if (res != OK && res != OUT_OF_BOUNDS) { - THROW_IE_EXCEPTION << resp.msg; - } - if (res != OUT_OF_BOUNDS) { - controller.push_back(VariableState(pState, plg)); - } - } - - return controller; - } - - /** - * @copybrief IExecutableNetwork::SetConfig - * - * Wraps IExecutableNetwork::SetConfig. + std::vector QueryState(); + + /** + * @brief Sets configuration for current executable network + * * @param config Map of pairs: (config parameter name, config parameter value) */ - void SetConfig(const std::map& config) { - CALL_STATUS_FNC(SetConfig, config); - } + void SetConfig(const std::map& config); - /** - * @copybrief IExecutableNetwork::GetConfig + /** @brief Gets configuration for current executable network. + * + * The method is responsible to extract information + * which affects executable network execution. The list of supported configuration values can be extracted via + * ExecutableNetwork::GetMetric with the SUPPORTED_CONFIG_KEYS key, but some of these keys cannot be changed + * dymanically, e.g. DEVICE_ID cannot changed if an executable network has already been compiled for particular + * device. * - * Wraps IExecutableNetwork::GetConfig - * @param name - config key, can be found in ie_plugin_config.hpp + * @param name config key, can be found in ie_plugin_config.hpp * @return Configuration parameter value */ - Parameter GetConfig(const std::string& name) const { - Parameter configValue; - CALL_STATUS_FNC(GetConfig, name, configValue); - return configValue; - } + Parameter GetConfig(const std::string& name) const; /** - * @copybrief IExecutableNetwork::GetMetric + * @brief Gets general runtime metric for an executable network. + * + * It can be network name, actual device ID on + * which executable network is running or all other properties which cannot be changed dynamically. * - * Wraps IExecutableNetwork::GetMetric - * @param name - metric name to request + * @param name metric name to request * @return Metric parameter value */ - Parameter GetMetric(const std::string& name) const { - Parameter metricValue; - CALL_STATUS_FNC(GetMetric, name, metricValue); - return metricValue; - } + Parameter GetMetric(const std::string& name) const; /** * @brief Returns pointer to plugin-specific shared context * on remote accelerator device that was used to create this ExecutableNetwork * @return A context */ - RemoteContext::Ptr GetContext() const { - RemoteContext::Ptr pContext; - CALL_STATUS_FNC(GetContext, pContext); - return pContext; - } + RemoteContext::Ptr GetContext() const; /** * @brief A smart pointer to the ExecutableNetwork object diff --git a/inference-engine/include/cpp/ie_infer_request.hpp b/inference-engine/include/cpp/ie_infer_request.hpp index d68c313152e08f..9650cbb9deaa72 100644 --- a/inference-engine/include/cpp/ie_infer_request.hpp +++ b/inference-engine/include/cpp/ie_infer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,8 +16,8 @@ #include "cpp/ie_memory_state.hpp" #include "ie_remote_context.hpp" #include "ie_iinfer_request.hpp" -#include "details/ie_exception_conversion.hpp" #include "details/ie_so_loader.h" +#include "ie_blob.h" namespace InferenceEngine { @@ -90,7 +90,7 @@ class InferRequest { InferenceEngine::details::SharedObjectLoader::Ptr splg = {}): actual(request), plg(splg) { // plg can be null, but not the actual - if (actual == nullptr) THROW_IE_EXCEPTION << "InferRequest was not initialized."; + if (actual == nullptr) IE_THROW() << "InferRequest was not initialized."; } /** @@ -125,8 +125,8 @@ class InferRequest { std::string error = "Internal error: blob with name `" + name + "` is not allocated!"; auto blobPtr = data.get(); const bool remoteBlobPassed = blobPtr->is(); - if (blobPtr == nullptr) THROW_IE_EXCEPTION << error; - if (!remoteBlobPassed && blobPtr->buffer() == nullptr) THROW_IE_EXCEPTION << error; + if (blobPtr == nullptr) IE_THROW() << error; + if (!remoteBlobPassed && blobPtr->buffer() == nullptr) IE_THROW() << error; return data; } @@ -240,11 +240,13 @@ class InferRequest { */ StatusCode Wait(int64_t millis_timeout) { ResponseDesc resp; - if (actual == nullptr) THROW_IE_EXCEPTION << "InferRequest was not initialized."; + if (actual == nullptr) IE_THROW() << "InferRequest was not initialized."; auto res = actual->Wait(millis_timeout, &resp); if (res != OK && res != RESULT_NOT_READY && res != INFER_NOT_STARTED && res != INFER_CANCELLED) { - THROW_IE_EXCEPTION << InferenceEngine::details::as_status << res << resp.msg; + IE_EXCEPTION_SWITCH(res, ExceptionType, + InferenceEngine::details::ThrowNow{} + <<= std::stringstream{} << IE_LOCATION << resp.msg) } return res; } @@ -271,7 +273,7 @@ class InferRequest { */ std::vector QueryState() { IE_SUPPRESS_DEPRECATED_START - if (actual == nullptr) THROW_IE_EXCEPTION << "ExecutableNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "ExecutableNetwork was not initialized."; IVariableState::Ptr pState = nullptr; auto res = OK; std::vector controller; @@ -279,7 +281,7 @@ class InferRequest { ResponseDesc resp; res = actual->QueryState(pState, idx, &resp); if (res != OK && res != OUT_OF_BOUNDS) { - THROW_IE_EXCEPTION << resp.msg; + IE_THROW() << resp.msg; } if (res != OUT_OF_BOUNDS) { controller.push_back(VariableState(pState, plg)); @@ -295,7 +297,7 @@ class InferRequest { * @return A shared pointer to underlying IInferRequest interface */ operator IInferRequest::Ptr&() { - if (actual == nullptr) THROW_IE_EXCEPTION << "InferRequest was not initialized."; + if (actual == nullptr) IE_THROW() << "InferRequest was not initialized."; return actual; } diff --git a/inference-engine/include/cpp/ie_memory_state.hpp b/inference-engine/include/cpp/ie_memory_state.hpp index 6f6ec043d9436a..88cec51177ef12 100644 --- a/inference-engine/include/cpp/ie_memory_state.hpp +++ b/inference-engine/include/cpp/ie_memory_state.hpp @@ -13,7 +13,6 @@ #include #include "ie_blob.h" -#include "details/ie_exception_conversion.hpp" #include "details/ie_so_loader.h" namespace InferenceEngine { diff --git a/inference-engine/include/details/ie_blob_iterator.hpp b/inference-engine/include/details/ie_blob_iterator.hpp index 8e6eb52dcb0180..8025fbca8a0c8d 100644 --- a/inference-engine/include/details/ie_blob_iterator.hpp +++ b/inference-engine/include/details/ie_blob_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_exception.hpp b/inference-engine/include/details/ie_exception.hpp index 73babcf367723a..ab11392113459a 100644 --- a/inference-engine/include/details/ie_exception.hpp +++ b/inference-engine/include/details/ie_exception.hpp @@ -1,169 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -/** - * @brief A header file for the main Inference Engine exception - * - * @file ie_exception.hpp - */ #pragma once -#include "ie_api.h" - -#include -#include -#include -#include -#include -#include - -/** - * @def THROW_IE_EXCEPTION - * @brief A macro used to throw general exception with a description - */ -#define THROW_IE_EXCEPTION throw InferenceEngine::details::InferenceEngineException(__FILE__, __LINE__) - -/** - * @def IE_ASSERT - * @brief Uses assert() function if NDEBUG is not defined, InferenceEngine exception otherwise - */ -#ifdef NDEBUG -#define IE_ASSERT(EXPRESSION) \ - if (!(EXPRESSION)) \ - throw InferenceEngine::details::InferenceEngineException(__FILE__, __LINE__) \ - << "AssertionFailed: " << #EXPRESSION // NOLINT -#else -#include - -/** - * @private - */ -class NullStream { -public: - template - NullStream& operator<<(const T&) noexcept { - return *this; - } - - NullStream& operator<<(std::ostream& (*)(std::ostream&)) noexcept { - return *this; - } -}; - -#define IE_ASSERT(EXPRESSION) \ - assert((EXPRESSION)); \ - NullStream() -#endif // NDEBUG - -namespace InferenceEngine { -enum StatusCode : int; -namespace details { - -/** - * @brief The InferenceEngineException class implements the main Inference Engine exception - */ -class INFERENCE_ENGINE_API_CLASS(InferenceEngineException): public std::exception { - mutable std::string errorDesc; - StatusCode status_code = static_cast(0); - std::string _file; - int _line; - std::shared_ptr exception_stream; - bool save_to_status_code = false; - -public: - /** - * @brief A C++ std::exception API member - * @return An exception description with a file name and file line - */ - const char* what() const noexcept override { - if (errorDesc.empty() && exception_stream) { - errorDesc = exception_stream->str(); -#ifndef NDEBUG - errorDesc += "\n" + _file + ":" + std::to_string(_line); -#endif - } - return errorDesc.c_str(); - } - - /** - * @brief A constructor. Creates an InferenceEngineException object from a specific file and line - * @param filename File where exception has been thrown - * @param line Line of the exception emitter - * @param message Exception message - */ - InferenceEngineException(const std::string& filename, const int line, const std::string& message = "") noexcept; - - /** - * @brief noexcept required for copy ctor - * @details The C++ Standard, [except.throw], paragraph 3 [ISO/IEC 14882-2014] - */ - InferenceEngineException(const InferenceEngineException& that) noexcept; - - /** - * @brief A stream output operator to be used within exception - * @param arg Object for serialization in the exception message - */ - template - InferenceEngineException& operator<<(const T& arg) { - if (save_to_status_code) { - auto can_convert = status_code_assign(arg); - save_to_status_code = false; - if (can_convert.second) { - this->status_code = can_convert.first; - return *this; - } - } - if (!exception_stream) { - exception_stream.reset(new std::stringstream()); - } - (*exception_stream) << arg; - return *this; - } - - /** - * @brief Manipulator to indicate that next item has to be converted to StatusCode to save - * @param iex InferenceEngineException object - */ - friend InferenceEngineException& as_status(InferenceEngineException& iex) { - iex.save_to_status_code = true; - return iex; - } - - /** - * @brief A stream output operator to catch InferenceEngineException manipulators - * @param manip InferenceEngineException manipulator to call - */ - InferenceEngineException& operator<<(InferenceEngineException& (*manip)(InferenceEngineException&)) { - return manip(*this); - } - - /** @brief Check if it has StatusCode value */ - bool hasStatus() const { - return this->status_code == 0 ? false : true; - } - - /** @brief Get StatusCode value */ - StatusCode getStatus() const { - return this->status_code; - } - - ~InferenceEngineException() noexcept override; - -private: - std::pair status_code_assign(const StatusCode& status) { - return {status, true}; - } - - template - std::pair status_code_assign(const T&) { - return {static_cast(0), false}; - } -}; - -InferenceEngineException& as_status(InferenceEngineException& iex); - -static_assert(std::is_nothrow_copy_constructible::value, - "InferenceEngineException must be nothrow copy constructible"); -} // namespace details -} // namespace InferenceEngine +#include "ie_common.h" diff --git a/inference-engine/include/details/ie_exception_conversion.hpp b/inference-engine/include/details/ie_exception_conversion.hpp deleted file mode 100644 index 3dc288d07677ee..00000000000000 --- a/inference-engine/include/details/ie_exception_conversion.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -/** - * @brief A header file that provides macros to handle no exception methods - * - * @file ie_exception_conversion.hpp - */ -#pragma once - -#include "ie_common.h" -#include "details/ie_exception.hpp" - -#define CALL_STATUS_FNC(function, ...) \ - if (!actual) THROW_IE_EXCEPTION << "Wrapper used in the CALL_STATUS_FNC was not initialized."; \ - ResponseDesc resp; \ - auto res = actual->function(__VA_ARGS__, &resp); \ - if (res != OK) InferenceEngine::details::extract_exception(res, resp.msg); - -#define CALL_STATUS_FNC_NO_ARGS(function) \ - if (!actual) THROW_IE_EXCEPTION << "Wrapper used in the CALL_STATUS_FNC_NO_ARGS was not initialized."; \ - ResponseDesc resp; \ - auto res = actual->function(&resp); \ - if (res != OK) InferenceEngine::details::extract_exception(res, resp.msg); - -#define CALL_FNC_NO_ARGS(function) \ - if (!actual) THROW_IE_EXCEPTION << "Wrapper used in the CALL_FNC_NO_ARGS was not initialized."; \ - ResponseDesc resp; \ - auto result = actual->function(&resp); \ - if (resp.msg[0] != '\0') { \ - THROW_IE_EXCEPTION << resp.msg; \ - } \ - return result; - -namespace InferenceEngine { -namespace details { - -inline void extract_exception(StatusCode status, const char* msg) { - switch (status) { - case NOT_IMPLEMENTED: - throw NotImplemented(msg); - case NETWORK_NOT_LOADED: - throw NetworkNotLoaded(msg); - case PARAMETER_MISMATCH: - throw ParameterMismatch(msg); - case NOT_FOUND: - throw NotFound(msg); - case OUT_OF_BOUNDS: - throw OutOfBounds(msg); - case UNEXPECTED: - throw Unexpected(msg); - case REQUEST_BUSY: - throw RequestBusy(msg); - case RESULT_NOT_READY: - throw ResultNotReady(msg); - case NOT_ALLOCATED: - throw NotAllocated(msg); - case INFER_NOT_STARTED: - throw InferNotStarted(msg); - case NETWORK_NOT_READ: - throw NetworkNotRead(msg); - case INFER_CANCELLED: - throw InferCancelled(msg); - default: - THROW_IE_EXCEPTION << msg << InferenceEngine::details::as_status << status; - } -} - -} // namespace details -} // namespace InferenceEngine diff --git a/inference-engine/include/details/ie_irelease.hpp b/inference-engine/include/details/ie_irelease.hpp deleted file mode 100644 index 2bcdb02b62f71b..00000000000000 --- a/inference-engine/include/details/ie_irelease.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -/** - * @brief A header file for the Inference Engine plugins destruction mechanism - * - * @file ie_irelease.hpp - */ -#pragma once - -#include - -#include "ie_api.h" -#include "ie_no_copy.hpp" - -namespace InferenceEngine { -namespace details { -/** - * @brief This class is used for objects allocated by a shared module (in *.so) - */ -class IRelease : public no_copy { -public: - /** - * @brief Releases current allocated object and all related resources. - * Once this method is called, the pointer to this interface is no longer valid - */ - virtual void Release() noexcept = 0; - -protected: - /** - * @brief Default destructor - */ - ~IRelease() override = default; -}; - -template -inline std::shared_ptr shared_from_irelease(T* ptr) { - std::shared_ptr pointer(ptr, [](IRelease* p) { - if (p) - p->Release(); - }); - return pointer; -} - -} // namespace details -} // namespace InferenceEngine diff --git a/inference-engine/include/details/ie_no_copy.hpp b/inference-engine/include/details/ie_no_copy.hpp index 6e4ec2a4eb0cb2..5cf967539cf975 100644 --- a/inference-engine/include/details/ie_no_copy.hpp +++ b/inference-engine/include/details/ie_no_copy.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/details/ie_no_release.hpp b/inference-engine/include/details/ie_no_release.hpp deleted file mode 100644 index 1a036cf1cffa46..00000000000000 --- a/inference-engine/include/details/ie_no_release.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -/** - * @brief Utility header file. Provides no release base class - * - * @file ie_no_release.hpp - */ -#pragma once - -namespace InferenceEngine { -namespace details { - -/** - * @brief prevent Release method from being called on specific objects - */ -template -class NoReleaseOn : public T { -private: - void Release() noexcept = 0; -}; - -} // namespace details -} // namespace InferenceEngine \ No newline at end of file diff --git a/inference-engine/include/details/ie_pre_allocator.hpp b/inference-engine/include/details/ie_pre_allocator.hpp index 70cce33b2580c5..0e598cbb12f554 100644 --- a/inference-engine/include/details/ie_pre_allocator.hpp +++ b/inference-engine/include/details/ie_pre_allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,14 +12,13 @@ #include #include "ie_allocator.hpp" -#include "details/ie_exception.hpp" namespace InferenceEngine { namespace details { /* * @brief This is a helper class to wrap external memory */ -class PreAllocator : public IAllocator { +class PreAllocator final : public IAllocator { void* _actualData; size_t _sizeInBytes; @@ -59,17 +58,6 @@ class PreAllocator : public IAllocator { bool free(void*) noexcept override { // NOLINT return false; } - - /** - * @brief Deletes current allocator. - * Can be used if a shared_from_irelease pointer is used - */ - void Release() noexcept override { - delete this; - } - -protected: - virtual ~PreAllocator() = default; }; /** @@ -80,7 +68,7 @@ class PreAllocator : public IAllocator { */ template std::shared_ptr make_pre_allocator(T* ptr, size_t size) { - return shared_from_irelease(new PreAllocator(ptr, size * sizeof(T))); + return std::make_shared(ptr, size * sizeof(T)); } } // namespace details diff --git a/inference-engine/include/details/ie_so_loader.h b/inference-engine/include/details/ie_so_loader.h index cf1edd4dff32e6..6ba85360271ff1 100644 --- a/inference-engine/include/details/ie_so_loader.h +++ b/inference-engine/include/details/ie_so_loader.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -52,7 +52,7 @@ class INFERENCE_ENGINE_API_CLASS(SharedObjectLoader) { * @brief Searches for a function symbol in the loaded module * @param symbolName Name of function to find * @return A pointer to the function if found - * @throws InferenceEngineException if the function is not found + * @throws Exception if the function is not found */ void* get_symbol(const char* symbolName) const; }; diff --git a/inference-engine/include/details/ie_so_pointer.hpp b/inference-engine/include/details/ie_so_pointer.hpp index bb7ad2d46baea1..3342d03af74b8c 100644 --- a/inference-engine/include/details/ie_so_pointer.hpp +++ b/inference-engine/include/details/ie_so_pointer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,64 +12,13 @@ #include #include #include +#include #include "ie_common.h" #include "ie_so_loader.h" -#include "details/ie_exception.hpp" -#include "details/ie_no_release.hpp" -#include "details/ie_irelease.hpp" namespace InferenceEngine { namespace details { - -/** - * @brief This class is a C++ helper to load a symbol from a library and create its instance - */ -template -class SymbolLoader { -private: - std::shared_ptr _so_loader; - -public: - /** - * @brief The main constructor - * @param loader Library to load from - */ - explicit SymbolLoader(std::shared_ptr loader): _so_loader(loader) { - if (_so_loader == nullptr) { - THROW_IE_EXCEPTION << "SymbolLoader cannot be created with nullptr"; - } - } - - /** - * @brief Calls a function from the library that creates an object and returns StatusCode - * @param name Name of function to load object with - * @return If StatusCode provided by function is OK then returns the loaded object. Throws an exception otherwise - */ - template - T* instantiateSymbol(const std::string& name) const { - T* instance = nullptr; - ResponseDesc desc; - StatusCode sts = bind_function(name)(instance, &desc); - if (sts != OK) { - THROW_IE_EXCEPTION << desc.msg; - } - return instance; - } - -private: - /** - * @brief Loads function from the library and returns a pointer to it - * @param functionName Name of function to load - * @return The loaded function - */ - template - std::function bind_function(const std::string& functionName) const { - std::function ptr(reinterpret_cast(_so_loader->get_symbol(functionName.c_str()))); - return ptr; - } -}; - /** * @brief This class is a trait class that provides a creator with a function name corresponding to the templated class * parameter @@ -93,6 +42,13 @@ template class SOPointer { template friend class SOPointer; +IE_SUPPRESS_DEPRECATED_START + struct HasRelease { + template static char test(decltype(&C::Release)); + template static long test(...); + constexpr static const bool value = sizeof(test(nullptr)) == sizeof(char); + }; +IE_SUPPRESS_DEPRECATED_END public: /** @@ -107,26 +63,26 @@ class SOPointer { template > explicit SOPointer(const std::basic_string & name) - : _so_loader(new Loader(name.c_str())), - _pointedObj(details::shared_from_irelease( - SymbolLoader(_so_loader).template instantiateSymbol(SOCreatorTrait::name))) {} + : _so_loader(new Loader(name.c_str())) { + Load(std::integral_constant{}); + } /** * @brief The main constructor * @param name Name of a shared library file */ explicit SOPointer(const char * name) - : _so_loader(new Loader(name)), - _pointedObj(details::shared_from_irelease( - SymbolLoader(_so_loader).template instantiateSymbol(SOCreatorTrait::name))) {} + : _so_loader(new Loader(name)) { + Load(std::integral_constant{}); + } /** * @brief Constructs an object with existing reference - * @param pointedObj Existing reference to wrap + * @param pointedObj Existing reference to wrap */ explicit SOPointer(T* pointedObj): _so_loader(), _pointedObj(pointedObj) { if (_pointedObj == nullptr) { - THROW_IE_EXCEPTION << "Cannot create SOPointer from nullptr"; + IE_THROW() << "Cannot create SOPointer from nullptr"; } } @@ -134,10 +90,10 @@ class SOPointer { * @brief Constructs an object with existing loader * @param so_loader Existing pointer to a library loader */ - explicit SOPointer(std::shared_ptr so_loader) - : _so_loader(so_loader), - _pointedObj(details::shared_from_irelease( - SymbolLoader(_so_loader).template instantiateSymbol(SOCreatorTrait::name))) {} + explicit SOPointer(const std::shared_ptr& so_loader) + : _so_loader(so_loader) { + Load(std::integral_constant{}); + } /** * @brief The copy-like constructor, can create So Pointer that dereferenced into child type if T is derived of U @@ -147,24 +103,22 @@ class SOPointer { SOPointer(const SOPointer& that) : _so_loader(std::dynamic_pointer_cast(that._so_loader)), _pointedObj(std::dynamic_pointer_cast(that._pointedObj)) { - if (_pointedObj == nullptr) { - THROW_IE_EXCEPTION << "Cannot create object from SOPointer reference"; - } + IE_ASSERT(_pointedObj != nullptr); } /** * @brief Standard pointer operator * @return underlined interface with disabled Release method */ - details::NoReleaseOn* operator->() const noexcept { - return reinterpret_cast*>(_pointedObj.get()); + T* operator->() const noexcept { + return _pointedObj.get(); } /** * @brief Standard dereference operator * @return underlined interface with disabled Release method */ - details::NoReleaseOn* operator*() const noexcept { + const T* operator*() const noexcept { return this->operator->(); } @@ -196,6 +150,71 @@ class SOPointer { } protected: +#define CATCH_IE_EXCEPTION(ExceptionType) catch (const InferenceEngine::ExceptionType& e) {throw e;} +#define CATCH_IE_EXCEPTIONS \ + CATCH_IE_EXCEPTION(GeneralError) \ + CATCH_IE_EXCEPTION(NotImplemented) \ + CATCH_IE_EXCEPTION(NetworkNotLoaded) \ + CATCH_IE_EXCEPTION(ParameterMismatch) \ + CATCH_IE_EXCEPTION(NotFound) \ + CATCH_IE_EXCEPTION(OutOfBounds) \ + CATCH_IE_EXCEPTION(Unexpected) \ + CATCH_IE_EXCEPTION(RequestBusy) \ + CATCH_IE_EXCEPTION(ResultNotReady) \ + CATCH_IE_EXCEPTION(NotAllocated) \ + CATCH_IE_EXCEPTION(InferNotStarted) \ + CATCH_IE_EXCEPTION(NetworkNotRead) \ + CATCH_IE_EXCEPTION(InferCancelled) + + /** + * @brief Implements load of object from library if Release method is presented + */ + void Load(std::true_type) { + try { + void* create = nullptr; + try { + create = _so_loader->get_symbol((SOCreatorTrait::name + std::string("Shared")).c_str()); + } catch (const NotFound&) {} + if (create == nullptr) { + create = _so_loader->get_symbol(SOCreatorTrait::name); + using CreateF = StatusCode(T*&, ResponseDesc*); + T* object = nullptr; + ResponseDesc desc; + StatusCode sts = reinterpret_cast(create)(object, &desc); + if (sts != OK) { + IE_EXCEPTION_SWITCH(sts, ExceptionType, + InferenceEngine::details::ThrowNow{} <<= std::stringstream{} << IE_LOCATION << desc.msg) + } + IE_SUPPRESS_DEPRECATED_START + _pointedObj = std::shared_ptr(object, [] (T* ptr){ptr->Release();}); + IE_SUPPRESS_DEPRECATED_END + } else { + using CreateF = void(std::shared_ptr&); + reinterpret_cast(create)(_pointedObj); + } + } CATCH_IE_EXCEPTIONS catch (const std::exception& ex) { + IE_THROW() << ex.what(); + } catch(...) { + IE_THROW(Unexpected); + } + } + + /** + * @brief Implements load of object from library + */ + void Load(std::false_type) { + try { + using CreateF = void(std::shared_ptr&); + reinterpret_cast(_so_loader->get_symbol(SOCreatorTrait::name))(_pointedObj); + } CATCH_IE_EXCEPTIONS catch (const std::exception& ex) { + IE_THROW() << ex.what(); + } catch(...) { + IE_THROW(Unexpected); + } + } + #undef CATCH_IE_EXCEPTION + #undef CATCH_IE_EXCEPTIONS + /** * @brief Gets a smart pointer to the DLL */ @@ -206,19 +225,5 @@ class SOPointer { */ std::shared_ptr _pointedObj; }; - } // namespace details - -/** - * @brief Creates a special shared_pointer wrapper for the given type from a specific shared module - * @tparam T An type of object SOPointer can hold - * @param name Name of the shared library file - * @return A created object - */ -template -inline std::shared_ptr make_so_pointer(const std::string & name) = delete; - -template -inline std::shared_ptr make_so_pointer(const std::wstring & name) = delete; - } // namespace InferenceEngine diff --git a/inference-engine/include/gna/gna_config.hpp b/inference-engine/include/gna/gna_config.hpp index fd7dd701bdd627..8b91de3b066e85 100644 --- a/inference-engine/include/gna/gna_config.hpp +++ b/inference-engine/include/gna/gna_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -92,6 +92,13 @@ DECLARE_GNA_CONFIG_KEY(COMPACT_MODE); */ DECLARE_GNA_CONFIG_KEY(PWL_UNIFORM_DESIGN); +/** +* @brief The option to allow to specify the maximum error percent that the optimized algorithm finding +* will use to find PWL functions. +* By default (in case of NO value set), 1.0 value is used. +*/ +DECLARE_GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT); + /** * @brief By default, the GNA plugin uses one worker thread for inference computations. * This parameter allows you to create up to 127 threads for software modes. diff --git a/inference-engine/include/gpu/details/gpu_context_helpers.hpp b/inference-engine/include/gpu/details/gpu_context_helpers.hpp index 08b344bd190180..4a7cdca6497f16 100644 --- a/inference-engine/include/gpu/details/gpu_context_helpers.hpp +++ b/inference-engine/include/gpu/details/gpu_context_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,15 +34,15 @@ class param_map_obj_getter { const std::string& obj_T2 = "__") const { auto itrType = params.find(type_Key); if (itrType == params.end()) - THROW_IE_EXCEPTION << "Parameter of type " << type_Key << " not found"; + IE_THROW() << "Parameter of type " << type_Key << " not found"; std::string param_val = itrType->second.as(); if (obj_T1 != param_val && obj_T2 != param_val) - THROW_IE_EXCEPTION << "Unexpected object type " << param_val; + IE_THROW() << "Unexpected object type " << param_val; auto itrHandle = params.find(handle_Key); if (itrHandle == params.end()) { - THROW_IE_EXCEPTION << "No parameter " << handle_Key << " found"; + IE_THROW() << "No parameter " << handle_Key << " found"; } Tmp handle = itrHandle->second; @@ -57,7 +57,7 @@ class param_map_obj_getter { Result _ObjFromParamSimple(const ParamMap& params, const std::string& handle_Key) const { auto itrHandle = params.find(handle_Key); if (itrHandle == params.end()) { - THROW_IE_EXCEPTION << "No parameter " << handle_Key << " found"; + IE_THROW() << "No parameter " << handle_Key << " found"; } Result handle = itrHandle->second; @@ -72,7 +72,7 @@ class param_map_obj_getter { std::string Key) const { auto itrType = params.find(Key); if (itrType == params.end()) - THROW_IE_EXCEPTION << "Parameter key " << Key << " not found"; + IE_THROW() << "Parameter key " << Key << " not found"; return itrType->second.as(); } }; diff --git a/inference-engine/include/gpu/gpu_context_api_dx.hpp b/inference-engine/include/gpu/gpu_context_api_dx.hpp index cbf959b941524a..751c0ae8a25f03 100644 --- a/inference-engine/include/gpu/gpu_context_api_dx.hpp +++ b/inference-engine/include/gpu/gpu_context_api_dx.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -128,7 +128,7 @@ class D3DSurface2DBlob : public ClImage2DBlob { static inline Blob::Ptr make_shared_blob_nv12(size_t height, size_t width, RemoteContext::Ptr ctx, ID3D11Texture2D* nv12_surf) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } // despite of layout, blob dimensions always follow in N,C,H,W order @@ -174,7 +174,7 @@ static inline D3DContext::Ptr make_shared_context(Core& core, std::string device static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext::Ptr ctx, ID3D11Buffer* buffer) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } ParamMap params = { @@ -196,7 +196,7 @@ static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext:: static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext::Ptr ctx, ID3D11Texture2D* surface, uint32_t plane = 0) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } ParamMap params = { { GPU_PARAM_KEY(SHARED_MEM_TYPE), GPU_PARAM_VALUE(VA_SURFACE) }, diff --git a/inference-engine/include/gpu/gpu_context_api_ocl.hpp b/inference-engine/include/gpu/gpu_context_api_ocl.hpp index 9bcdf0adbedba0..a39446b0368640 100644 --- a/inference-engine/include/gpu/gpu_context_api_ocl.hpp +++ b/inference-engine/include/gpu/gpu_context_api_ocl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -177,7 +177,7 @@ class ClImage2DBlob : public ClBlob, public details::param_map_obj_getter { static inline Blob::Ptr make_shared_blob_nv12(RemoteContext::Ptr ctx, cl::Image2D& nv12_image_plane_y, cl::Image2D& nv12_image_plane_uv) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } size_t width = nv12_image_plane_y.getImageInfo(); @@ -235,7 +235,7 @@ static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, ClContext::Ptr static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext::Ptr ctx, cl::Buffer& buffer) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } ParamMap params = { @@ -255,7 +255,7 @@ static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext:: static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext::Ptr ctx, cl_mem buffer) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } ParamMap params = { @@ -275,7 +275,7 @@ static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext:: static inline Blob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext::Ptr ctx, cl::Image2D& image) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } ParamMap params = { diff --git a/inference-engine/include/gpu/gpu_context_api_va.hpp b/inference-engine/include/gpu/gpu_context_api_va.hpp index 041700f81a5d91..edd6cba6f3efdd 100644 --- a/inference-engine/include/gpu/gpu_context_api_va.hpp +++ b/inference-engine/include/gpu/gpu_context_api_va.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -92,7 +92,7 @@ class VASurfaceBlob : public ClImage2DBlob { static inline Blob::Ptr make_shared_blob_nv12(size_t height, size_t width, RemoteContext::Ptr ctx, VASurfaceID nv12_surf) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } // despite of layout, blob dimensions always follow in N,C,H,W order @@ -128,7 +128,7 @@ static inline VAContext::Ptr make_shared_context(Core& core, std::string deviceN static inline VASurfaceBlob::Ptr make_shared_blob(const TensorDesc& desc, RemoteContext::Ptr ctx, VASurfaceID surface, uint32_t plane = 0) { auto casted = std::dynamic_pointer_cast(ctx); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid remote context passed"; + IE_THROW() << "Invalid remote context passed"; } ParamMap params = { { GPU_PARAM_KEY(SHARED_MEM_TYPE), GPU_PARAM_VALUE(VA_SURFACE) }, diff --git a/inference-engine/include/gpu/gpu_ocl_wrapper.hpp b/inference-engine/include/gpu/gpu_ocl_wrapper.hpp index 68ccf3217fa4a4..31f77f93e0cc12 100644 --- a/inference-engine/include/gpu/gpu_ocl_wrapper.hpp +++ b/inference-engine/include/gpu/gpu_ocl_wrapper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/gpu/gpu_params.hpp b/inference-engine/include/gpu/gpu_params.hpp index 308f0af6f78963..f7ccc86dcb0271 100644 --- a/inference-engine/include/gpu/gpu_params.hpp +++ b/inference-engine/include/gpu/gpu_params.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/hetero/hetero_plugin_config.hpp b/inference-engine/include/hetero/hetero_plugin_config.hpp index a0388c6663f52f..a867aee7e7b040 100644 --- a/inference-engine/include/hetero/hetero_plugin_config.hpp +++ b/inference-engine/include/hetero/hetero_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_allocator.hpp b/inference-engine/include/ie_allocator.hpp index edfec358c4bc26..c51c90776f9e34 100644 --- a/inference-engine/include/ie_allocator.hpp +++ b/inference-engine/include/ie_allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,7 @@ #pragma once #include "ie_api.h" -#include "details/ie_irelease.hpp" +#include namespace InferenceEngine { @@ -26,7 +26,7 @@ enum LockOp { * @interface IAllocator * @brief Allocator concept to be used for memory management and is used as part of the Blob. */ -class IAllocator : public details::IRelease { +class IAllocator : public std::enable_shared_from_this { public: /** * @brief Maps handle to heap memory accessible by any memory manipulation routines. @@ -60,10 +60,7 @@ class IAllocator : public details::IRelease { virtual bool free(void* handle) noexcept = 0; protected: - /** - * @brief Disables the ability of deleting the object without release. - */ - ~IAllocator() override = default; + ~IAllocator() = default; }; /** @@ -71,6 +68,6 @@ class IAllocator : public details::IRelease { * * @return The Inference Engine IAllocator* instance */ -INFERENCE_ENGINE_API(InferenceEngine::IAllocator*) CreateDefaultAllocator() noexcept; +INFERENCE_ENGINE_API_CPP(std::shared_ptr) CreateDefaultAllocator() noexcept; } // namespace InferenceEngine diff --git a/inference-engine/include/ie_api.h b/inference-engine/include/ie_api.h index 4d9160c8bee57a..f640bfaac75ca7 100644 --- a/inference-engine/include/ie_api.h +++ b/inference-engine/include/ie_api.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_blob.h b/inference-engine/include/ie_blob.h index 30b9b6b978ad58..dbe264c054de7f 100644 --- a/inference-engine/include/ie_blob.h +++ b/inference-engine/include/ie_blob.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,7 +25,6 @@ #include "ie_locked_memory.hpp" #include "ie_precision.hpp" #include "details/ie_blob_iterator.hpp" -#include "details/ie_exception.hpp" #include "details/ie_pre_allocator.hpp" namespace InferenceEngine { @@ -525,7 +524,7 @@ class TBlob : public MemoryBlob { } if (data_size != 0 && ptr == nullptr) { - THROW_IE_EXCEPTION << "Using Blob on external nullptr memory"; + IE_THROW() << "Using Blob on external nullptr memory"; } _allocator = details::make_pre_allocator(ptr, data_size); @@ -542,7 +541,7 @@ class TBlob : public MemoryBlob { */ TBlob(const TensorDesc& tensorDesc, const std::shared_ptr& alloc) : MemoryBlob(tensorDesc), _allocator(alloc) { - if (_allocator == nullptr) THROW_IE_EXCEPTION << "TBlob allocator was not initialized."; + if (_allocator == nullptr) IE_THROW() << "TBlob allocator was not initialized."; } /** @@ -577,14 +576,7 @@ class TBlob : public MemoryBlob { /** *@brief Virtual destructor. */ - -#if defined(__clang__) && !defined(__SYCL_COMPILER_VERSION) virtual ~TBlob(); -#else - virtual ~TBlob() { - free(); - } -#endif // __clang__ && !__SYCL_COMPILER_VERSION /** * @brief Gets the size of the given type. @@ -779,7 +771,7 @@ class TBlob : public MemoryBlob { const std::shared_ptr& getAllocator() const noexcept override { // in case when constructor without allocator was used if (!_allocator) { - _allocator = shared_from_irelease(CreateDefaultAllocator()); + _allocator = CreateDefaultAllocator(); } return _allocator; @@ -807,7 +799,6 @@ class TBlob : public MemoryBlob { } }; -#if defined(__clang__) && !defined(__SYCL_COMPILER_VERSION) extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); @@ -820,7 +811,8 @@ extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); -#endif // __clang__ && !__SYCL_COMPILER_VERSION +extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); +extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob); /** * @brief Creates a blob with the given tensor descriptor. @@ -832,7 +824,7 @@ extern template class INFERENCE_ENGINE_API_CLASS(InferenceEngine::TBlob inline typename InferenceEngine::TBlob::Ptr make_shared_blob(const TensorDesc& tensorDesc) { if (!tensorDesc.getPrecision().hasStorageType()) - THROW_IE_EXCEPTION << "Cannot make shared blob! " + IE_THROW() << "Cannot make shared blob! " << "The blob type cannot be used to store objects of current precision"; return std::make_shared>(tensorDesc); } @@ -850,7 +842,7 @@ template inline typename InferenceEngine::TBlob::Ptr make_shared_blob(const TensorDesc& tensorDesc, Type* ptr, size_t size = 0) { if (!tensorDesc.getPrecision().hasStorageType()) - THROW_IE_EXCEPTION << "Cannot make shared blob! " + IE_THROW() << "Cannot make shared blob! " << "The blob type cannot be used to store objects of current precision"; return std::make_shared>(tensorDesc, ptr, size); } @@ -867,7 +859,7 @@ template inline typename InferenceEngine::TBlob::Ptr make_shared_blob( const TensorDesc& tensorDesc, const std::shared_ptr& alloc) { if (!tensorDesc.getPrecision().hasStorageType()) - THROW_IE_EXCEPTION << "Cannot make shared blob! " + IE_THROW() << "Cannot make shared blob! " << "The blob type cannot be used to store objects of current precision"; return std::make_shared>(tensorDesc, alloc); } diff --git a/inference-engine/include/ie_common.h b/inference-engine/include/ie_common.h index 39f33d9a774fa4..263579d62dd6db 100644 --- a/inference-engine/include/ie_common.h +++ b/inference-engine/include/ie_common.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,14 @@ #include #include #include +#include +#include +#include +#include +#ifndef NDEBUG +#include +#endif namespace InferenceEngine { /** * @brief Represents tensor size. @@ -274,73 +281,223 @@ struct QueryNetworkResult { ResponseDesc resp; }; -/** @brief This class represents StatusCode::GENERIC_ERROR exception */ -class GeneralError : public std::logic_error { - using std::logic_error::logic_error; +namespace details { +struct INFERENCE_ENGINE_DEPRECATED("Use InferRequest::Exception") +INFERENCE_ENGINE_API_CLASS(InferenceEngineException) : public std::runtime_error { + using std::runtime_error::runtime_error; + bool hasStatus() const {return true;} + StatusCode getStatus() const; }; +} // namespace details -/** @brief This class represents StatusCode::NOT_IMPLEMENTED exception */ -class NotImplemented : public std::logic_error { - using std::logic_error::logic_error; +/** + * @brief Base Inference Engine exception class + */ +IE_SUPPRESS_DEPRECATED_START +struct INFERENCE_ENGINE_API_CLASS(Exception) : public details::InferenceEngineException { + using InferenceEngineException::InferenceEngineException; }; +IE_SUPPRESS_DEPRECATED_END + +/// @cond +namespace details { + template struct ExceptionTraits; +} + +#define INFERENCE_ENGINE_DECLARE_EXCEPTION(ExceptionType, statusCode) \ +struct INFERENCE_ENGINE_API_CLASS(ExceptionType) final : public InferenceEngine::Exception { \ + using Exception::Exception; \ +}; \ +namespace details { \ +template<> struct ExceptionTraits { \ + static const char* string() {return "[ " #statusCode " ]";} \ +}; \ +} +/// @endcond + +/** @brief This class represents StatusCode::GENERAL_ERROR exception */ +INFERENCE_ENGINE_DECLARE_EXCEPTION(GeneralError, GENERAL_ERROR) + +/** @brief This class represents StatusCode::NOT_IMPLEMENTED exception */ +INFERENCE_ENGINE_DECLARE_EXCEPTION(NotImplemented, NOT_IMPLEMENTED) /** @brief This class represents StatusCode::NETWORK_NOT_LOADED exception */ -class NetworkNotLoaded : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(NetworkNotLoaded, NETWORK_NOT_LOADED) /** @brief This class represents StatusCode::PARAMETER_MISMATCH exception */ -class ParameterMismatch : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(ParameterMismatch, PARAMETER_MISMATCH) /** @brief This class represents StatusCode::NOT_FOUND exception */ -class NotFound : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(NotFound, NOT_FOUND) /** @brief This class represents StatusCode::OUT_OF_BOUNDS exception */ -class OutOfBounds : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(OutOfBounds, OUT_OF_BOUNDS) /** @brief This class represents StatusCode::UNEXPECTED exception */ -class Unexpected : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(Unexpected, UNEXPECTED) /** @brief This class represents StatusCode::REQUEST_BUSY exception */ -class RequestBusy : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(RequestBusy, REQUEST_BUSY) /** @brief This class represents StatusCode::RESULT_NOT_READY exception */ -class ResultNotReady : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(ResultNotReady, RESULT_NOT_READY) /** @brief This class represents StatusCode::NOT_ALLOCATED exception */ -class NotAllocated : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(NotAllocated, NOT_ALLOCATED) /** @brief This class represents StatusCode::INFER_NOT_STARTED exception */ -class InferNotStarted : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(InferNotStarted, INFER_NOT_STARTED) /** @brief This class represents StatusCode::NETWORK_NOT_READ exception */ -class NetworkNotRead : public std::logic_error { - using std::logic_error::logic_error; -}; +INFERENCE_ENGINE_DECLARE_EXCEPTION(NetworkNotRead, NETWORK_NOT_READ) /** @brief This class represents StatusCode::INFER_CANCELLED exception */ -class InferCancelled : public std::logic_error { - using std::logic_error::logic_error; +INFERENCE_ENGINE_DECLARE_EXCEPTION(InferCancelled, INFER_CANCELLED) + +/** + * @private + */ +#undef INFERENCE_ENGINE_DECLARE_EXCEPTION + +// TODO: Move this section out of public API +namespace details { +/** + * @brief Tag struct used to throw exception + */ +template +struct ThrowNow final { + [[noreturn]] void operator<<=(const std::ostream& ostream) { + std::ostringstream stream; + stream << ostream.rdbuf(); + throw ExceptionType{stream.str()}; + } }; -} // namespace InferenceEngine +/// @cond +#ifndef NDEBUG +#define IE_LOCATION '\n' << __FILE__ << ':' << __LINE__<< ' ' +#else +#define IE_LOCATION "" +#endif // NDEBUG + + +// WARNING: DO NOT USE THIS MACRO! Use openvino/pp.hpp macro library +#define IE_PP_EXPAND(X) X +#define IE_PP_NARG(...) IE_PP_EXPAND(IE_PP_NARG_(__VA_ARGS__, IE_PP_RSEQ_N())) +#define IE_PP_NARG_(...) IE_PP_EXPAND(IE_PP_ARG_N(__VA_ARGS__)) +#define IE_PP_ARG_N(_0, _1, N, ...) N +#define IE_PP_RSEQ_N() 0, 1, 0 +#define IE_PP_NO_ARGS(NAME) , +#define IE_PP_CAT3_(x, y, z) x ## y ## z +#define IE_PP_CAT3(x, y, z) IE_PP_CAT3_(x, y, z) +#define IE_PP_OVERLOAD(NAME, ...) IE_PP_EXPAND(IE_PP_CAT3(NAME, _, IE_PP_EXPAND(IE_PP_NARG(IE_PP_NO_ARGS __VA_ARGS__ (NAME))))(__VA_ARGS__)) +// ENDWARNING + +#define IE_THROW_0() \ + InferenceEngine::details::ThrowNow {} <<= std::stringstream {} \ + << IE_LOCATION + +#define IE_THROW_1(ExceptionType) \ + InferenceEngine::details::ThrowNow {} <<= std::stringstream {} \ + << IE_LOCATION << InferenceEngine::details::ExceptionTraits::string() << ' ' +/// @endcond + +/** + * @def IE_THROW + * @brief A macro used to throw specified exception with a description + */ +#define IE_THROW(...) IE_PP_OVERLOAD(IE_THROW, __VA_ARGS__) + +/** + * @def IE_ASSERT + * @brief Uses assert() function if NDEBUG is not defined, InferenceEngine exception otherwise + */ +#ifdef NDEBUG +#define IE_ASSERT(EXPRESSION) \ + if (!(EXPRESSION)) \ + IE_THROW(GeneralError) << " AssertionFailed: " << #EXPRESSION // NOLINT +#else +/** + * @private + */ +struct NullStream { + template + NullStream& operator<<(const T&) noexcept {return *this;} +}; + +#define IE_ASSERT(EXPRESSION) \ + assert((EXPRESSION)); \ + InferenceEngine::details::NullStream() +#endif // NDEBUG + +/// @cond +#define THROW_IE_EXCEPTION \ + InferenceEngine::details::ThrowNow {} <<= std::stringstream {} \ + << IE_LOCATION +#define IE_EXCEPTION_CASE(TYPE_ALIAS, STATUS_CODE, EXCEPTION_TYPE, ...) \ + case InferenceEngine::STATUS_CODE : { \ + using InferenceEngine::EXCEPTION_TYPE; using TYPE_ALIAS = EXCEPTION_TYPE; __VA_ARGS__; \ + } break; +/// @endcond + +/** + * @def IE_EXCEPTION_SWITCH + * @brief Generate Switch statement over error codes adn maps them to coresponding exceptions type + */ +#define IE_EXCEPTION_SWITCH(STATUS, TYPE_ALIAS, ...) \ + switch (STATUS) { \ + IE_EXCEPTION_CASE(TYPE_ALIAS, GENERAL_ERROR , GeneralError , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, NOT_IMPLEMENTED , NotImplemented , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, NETWORK_NOT_LOADED , NetworkNotLoaded , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, PARAMETER_MISMATCH , ParameterMismatch , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, NOT_FOUND , NotFound , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, OUT_OF_BOUNDS , OutOfBounds , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, UNEXPECTED , Unexpected , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, REQUEST_BUSY , RequestBusy , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, RESULT_NOT_READY , ResultNotReady , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, NOT_ALLOCATED , NotAllocated , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, INFER_NOT_STARTED , InferNotStarted , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, NETWORK_NOT_READ , NetworkNotRead , __VA_ARGS__) \ + IE_EXCEPTION_CASE(TYPE_ALIAS, INFER_CANCELLED , InferCancelled , __VA_ARGS__) \ + default: IE_ASSERT(!"Unreachable"); \ + } + +/** + * @private + */ +#define CALL_STATUS_FNC(function, ...) \ + if (!actual) IE_THROW() << "Wrapper used was not initialized."; \ + ResponseDesc resp; \ + auto res = actual->function(__VA_ARGS__, &resp); \ + if (res != OK) IE_EXCEPTION_SWITCH(res, ExceptionType, \ + InferenceEngine::details::ThrowNow{} \ + <<= std::stringstream{} << IE_LOCATION << resp.msg) + +/** + * @private + */ +#define CALL_STATUS_FNC_NO_ARGS(function) \ + if (!actual) IE_THROW() << "Wrapper used in the CALL_STATUS_FNC_NO_ARGS was not initialized."; \ + ResponseDesc resp; \ + auto res = actual->function(&resp); \ + if (res != OK) IE_EXCEPTION_SWITCH(res, ExceptionType, \ + InferenceEngine::details::ThrowNow{} \ + <<= std::stringstream{} << IE_LOCATION) + +/** + * @private + */ +#define CALL_FNC_NO_ARGS(function) \ + if (!actual) IE_THROW() << "Wrapper used in the CALL_FNC_NO_ARGS was not initialized."; \ + ResponseDesc resp; \ + auto result = actual->function(&resp); \ + if (resp.msg[0] != '\0') { \ + IE_THROW() << resp.msg \ + } \ + return result; +} // namespace details +} // namespace InferenceEngine #if defined(_WIN32) #define __PRETTY_FUNCTION__ __FUNCSIG__ #else diff --git a/inference-engine/include/ie_compound_blob.h b/inference-engine/include/ie_compound_blob.h index b52347a7b6175e..e96047929c3315 100644 --- a/inference-engine/include/ie_compound_blob.h +++ b/inference-engine/include/ie_compound_blob.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_core.hpp b/inference-engine/include/ie_core.hpp index 41046a2087bfd4..fddf2b29069027 100644 --- a/inference-engine/include/ie_core.hpp +++ b/inference-engine/include/ie_core.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -85,6 +85,9 @@ class INFERENCE_ENGINE_API_CLASS(Core) { * `InferenceEngine::Core::ReadNetwork(const std::string& model, const Blob::CPtr& weights) const` * function overload which takes a filesystem path to the model. * For ONNX case the second parameter should contain empty blob. + * @note Created InferenceEngine::CNNNetwork object shares the weights with `weights` object. + * So, do not create `weights` on temporary data which can be later freed, since the network + * constant datas become to point to invalid memory. * @return CNNNetwork */ CNNNetwork ReadNetwork(const std::string& model, const Blob::CPtr& weights) const; @@ -105,6 +108,23 @@ class INFERENCE_ENGINE_API_CLASS(Core) { const CNNNetwork& network, const std::string& deviceName, const std::map& config = {}); + /** + * @brief Reads model and creates an executable network from IR or ONNX file + * + * This can be more efficient than using ReadNetwork + LoadNetwork(CNNNetwork) flow + * especially for cases when caching is enabled and cached model is available + * + * @param modelPath path to model + * @param deviceName Name of device to load network to + * @param config Optional map of pairs: (config parameter name, config parameter value) relevant only for this load + * operation/ + * + * @return An executable network reference + */ + ExecutableNetwork LoadNetwork( + const std::string& modelPath, const std::string& deviceName, + const std::map& config = {}); + /** * @brief Registers extension * @param extension Pointer to already loaded extension @@ -134,8 +154,8 @@ class INFERENCE_ENGINE_API_CLASS(Core) { /** * @brief Creates an executable network from a previously exported network * - * @param deviceName Name of device load executable network on * @param modelFileName Path to the location of the exported file + * @param deviceName Name of device load executable network on * @param config Optional map of pairs: (config parameter name, config parameter value) relevant only for this load * operation* * @return An executable network reference @@ -146,8 +166,8 @@ class INFERENCE_ENGINE_API_CLASS(Core) { /** * @brief Creates an executable network from a previously exported network - * @param deviceName Name of device load executable network on * @param networkModel network model stream + * @param deviceName Name of device load executable network on * @param config Optional map of pairs: (config parameter name, config parameter value) relevant only for this load * operation* * @return An executable network reference diff --git a/inference-engine/include/ie_data.h b/inference-engine/include/ie_data.h index 0a11cced55d53f..0adbfbff64cdd4 100644 --- a/inference-engine/include/ie_data.h +++ b/inference-engine/include/ie_data.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_extension.h b/inference-engine/include/ie_extension.h index 612620931853a7..8014d658d804c7 100644 --- a/inference-engine/include/ie_extension.h +++ b/inference-engine/include/ie_extension.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -38,7 +38,7 @@ class SOCreatorTrait { /** * @brief This class is a C++ helper to work with objects created using extensions. */ -class INFERENCE_ENGINE_API_CLASS(Extension) : public IExtension { +class INFERENCE_ENGINE_API_CLASS(Extension) final : public IExtension { public: /** * @brief Loads extension from a shared library @@ -65,11 +65,6 @@ class INFERENCE_ENGINE_API_CLASS(Extension) : public IExtension { actual->Unload(); } - /** - * @brief Does nothing since destruction is done via the regular mechanism - */ - void Release() noexcept override {} - /** * @brief Returns operation sets * This method throws an exception if it was not implemented @@ -83,7 +78,7 @@ class INFERENCE_ENGINE_API_CLASS(Extension) : public IExtension { * @return vector of strings */ std::vector getImplTypes(const std::shared_ptr& node) override { - if (node == nullptr) THROW_IE_EXCEPTION << "Provided ngraph::Node pointer is nullptr."; + if (node == nullptr) IE_THROW() << "Provided ngraph::Node pointer is nullptr."; return actual->getImplTypes(node); } @@ -94,7 +89,7 @@ class INFERENCE_ENGINE_API_CLASS(Extension) : public IExtension { * @return shared pointer to implementation */ ILayerImpl::Ptr getImplementation(const std::shared_ptr& node, const std::string& implType) override { - if (node == nullptr) THROW_IE_EXCEPTION << "Provided ngraph::Node pointer is nullptr."; + if (node == nullptr) IE_THROW() << "Provided ngraph::Node pointer is nullptr."; return actual->getImplementation(node, implType); } @@ -106,23 +101,29 @@ class INFERENCE_ENGINE_API_CLASS(Extension) : public IExtension { }; /** - * @brief Creates a special shared_pointer wrapper for the given type from a specific shared module - * - * @param name A std::string name of the shared library file - * @return shared_pointer A wrapper for the given type from a specific shared module + * @brief Creates extension using deprecated API + * @tparam T extension type + * @param name extension library name + * @return shared pointer to extension */ -template <> -inline std::shared_ptr make_so_pointer(const std::string& name) { +template +INFERENCE_ENGINE_DEPRECATED("Use std::make_shared") +inline std::shared_ptr make_so_pointer(const std::string& name) { return std::make_shared(name); } #ifdef ENABLE_UNICODE_PATH_SUPPORT -template <> +/** + * @brief Creates extension using deprecated API + * @param name extension library name + * @return shared pointer to extension + */ +template +INFERENCE_ENGINE_DEPRECATED("Use std::make_shared") inline std::shared_ptr make_so_pointer(const std::wstring& name) { return std::make_shared(name); } #endif - } // namespace InferenceEngine diff --git a/inference-engine/include/ie_icnn_network.hpp b/inference-engine/include/ie_icnn_network.hpp index 2c6b5bea3ff2f0..25ee2715167a6f 100644 --- a/inference-engine/include/ie_icnn_network.hpp +++ b/inference-engine/include/ie_icnn_network.hpp @@ -17,7 +17,6 @@ #include "ie_common.h" #include "ie_data.h" #include "ie_input_info.hpp" -#include "details/ie_irelease.hpp" #if defined IMPLEMENT_INFERENCE_ENGINE_API || defined IMPLEMENT_INFERENCE_ENGINE_PLUGIN || 1 # define INFERENCE_ENGINE_ICNNNETWORK_CLASS(...) INFERENCE_ENGINE_API_CLASS(__VA_ARGS__) @@ -45,7 +44,7 @@ using OutputsDataMap = std::map; * @interface ICNNNetwork * @brief This is the main interface to describe the NN topology */ -class INFERENCE_ENGINE_ICNNNETWORK_CLASS(ICNNNetwork) : public details::IRelease { +class INFERENCE_ENGINE_ICNNNETWORK_CLASS(ICNNNetwork): public std::enable_shared_from_this { public: /** * @brief A shared pointer to a ICNNNetwork interface @@ -72,8 +71,8 @@ class INFERENCE_ENGINE_ICNNNETWORK_CLASS(ICNNNetwork) : public details::IRelease * This method need to be called to find out OpenVINO output names for using them later * when calling InferenceEngine::InferRequest::GetBlob or InferenceEngine::InferRequest::SetBlob * - * If you want to use framework names, you can use InferenceEngine::ICNNNetwork::getOVNameForTensor or - * InferenceEngine::ICNNNetwork::getOVNameForOperation methods to map framework names to OpenVINO names + * If you want to use framework names, you can use InferenceEngine::ICNNNetwork::getOVNameForTensor + * method to map framework names to OpenVINO names * * @param out Reference to the OutputsDataMap object */ @@ -87,8 +86,8 @@ class INFERENCE_ENGINE_ICNNNETWORK_CLASS(ICNNNetwork) : public details::IRelease * This method need to be called to find out OpenVINO input names for using them later * when calling InferenceEngine::InferRequest::SetBlob * - * If you want to use framework names, you can use InferenceEngine::ICNNNetwork::getOVNameForTensor or - * InferenceEngine::ICNNNetwork::getOVNameForOperation methods to map framework names to OpenVINO names + * If you want to use framework names, you can use InferenceEngine::ICNNNetwork::getOVNameForTensor + * method to map framework names to OpenVINO names * * @param inputs Reference to InputsDataMap object. */ @@ -200,25 +199,10 @@ class INFERENCE_ENGINE_ICNNNETWORK_CLASS(ICNNNetwork) : public details::IRelease return NOT_IMPLEMENTED; } +protected: /** - * @brief Methods maps framework operation name to OpenVINO name - * - * @param ov_name OpenVINO name - * @param orig_name Framework operation name - * @param resp Pointer to the response message that holds a description of an error if any occurred - * - * @return Status code of the operation - */ - virtual StatusCode getOVNameForOperation(std::string& ov_name, const std::string& orig_name, ResponseDesc* resp) const noexcept { - (void) ov_name; - (void) orig_name; - (void) resp; - return NOT_IMPLEMENTED; - } - - /** - * @brief A virtual destructor. + * @brief Default destructor. */ - virtual ~ICNNNetwork(); + ~ICNNNetwork() = default; }; } // namespace InferenceEngine diff --git a/inference-engine/include/ie_iexecutable_network.hpp b/inference-engine/include/ie_iexecutable_network.hpp index 741727d4698b97..04bbd2df052905 100644 --- a/inference-engine/include/ie_iexecutable_network.hpp +++ b/inference-engine/include/ie_iexecutable_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,7 +32,7 @@ using ConstOutputsDataMap = std::map; /** * @brief This is an interface of an executable network */ -class IExecutableNetwork : public details::IRelease { +class IExecutableNetwork : public std::enable_shared_from_this { public: /** * @brief A smart pointer to the current IExecutableNetwork object @@ -173,6 +173,9 @@ class IExecutableNetwork : public details::IRelease { * @return code of the operation. InferenceEngine::OK if succeeded */ virtual StatusCode GetContext(RemoteContext::Ptr& pContext, ResponseDesc* resp) const noexcept = 0; + +protected: + ~IExecutableNetwork() = default; }; } // namespace InferenceEngine diff --git a/inference-engine/include/ie_iextension.h b/inference-engine/include/ie_iextension.h index 964d84865ede59..2010bca16442e4 100644 --- a/inference-engine/include/ie_iextension.h +++ b/inference-engine/include/ie_iextension.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,7 +25,6 @@ * @def INFERENCE_EXTENSION_API(TYPE) * @brief Defines Inference Engine Extension API method */ - #if defined(_WIN32) && defined(IMPLEMENT_INFERENCE_EXTENSION_API) #define INFERENCE_EXTENSION_API(TYPE) extern "C" __declspec(dllexport) TYPE #else @@ -146,7 +145,7 @@ class INFERENCE_ENGINE_API_CLASS(ILayerExecImpl) : public ILayerImpl { /** * @brief This class is the main extension interface */ -class INFERENCE_ENGINE_API_CLASS(IExtension) : public InferenceEngine::details::IRelease { +class INFERENCE_ENGINE_API_CLASS(IExtension) : public std::enable_shared_from_this { public: /** * @brief Returns operation sets @@ -187,6 +186,17 @@ class INFERENCE_ENGINE_API_CLASS(IExtension) : public InferenceEngine::details:: * @param versionInfo Pointer to version info, will be set by plugin */ virtual void GetVersion(const InferenceEngine::Version*& versionInfo) const noexcept = 0; + + /** + * @brief Implements deprecated API + */ + INFERENCE_ENGINE_DEPRECATED("Do not override or use this method. Use IE_DEFINE_EXTENSION_CREATE_FUNCTION to export extension") + virtual void Release() noexcept { + delete this; + } + +protected: + virtual ~IExtension() = default; }; /** @@ -198,9 +208,31 @@ using IExtensionPtr = std::shared_ptr; * @brief Creates the default instance of the extension * * @param ext Extension interface - * @param resp Response description - * @return Status code */ -INFERENCE_EXTENSION_API(StatusCode) CreateExtension(IExtension*& ext, ResponseDesc* resp) noexcept; +INFERENCE_EXTENSION_API(void) CreateExtensionShared(IExtensionPtr& ext); +/** + * @note: Deprecated API + * @brief Creates the default instance of the extension + * @param ext Extension interface + * @param resp Responce + * @return InferenceEngine::OK if extension is constructed and InferenceEngine::GENERAL_ERROR otherwise + */ +#if defined(_WIN32) +INFERENCE_ENGINE_DEPRECATED("Use IE_DEFINE_EXTENSION_CREATE_FUNCTION macro") +INFERENCE_EXTENSION_API(StatusCode) +CreateExtension(IExtension*& ext, ResponseDesc* resp) noexcept; +#else +INFERENCE_EXTENSION_API(StatusCode) +CreateExtension(IExtension*& ext, ResponseDesc* resp) noexcept INFERENCE_ENGINE_DEPRECATED("Use IE_DEFINE_EXTENSION_CREATE_FUNCTION macro"); +#endif + +/** + * @def IE_DEFINE_EXTENSION_CREATE_FUNCTION + * @brief Generates extension creation function + */ +#define IE_DEFINE_EXTENSION_CREATE_FUNCTION(ExtensionType) \ +INFERENCE_EXTENSION_API(void) InferenceEngine::CreateExtensionShared(std::shared_ptr& ext) { \ + ext = std::make_shared(); \ +} } // namespace InferenceEngine diff --git a/inference-engine/include/ie_iinfer_request.hpp b/inference-engine/include/ie_iinfer_request.hpp index faa17f1f71e4be..a7b61a1f63580e 100644 --- a/inference-engine/include/ie_iinfer_request.hpp +++ b/inference-engine/include/ie_iinfer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,6 @@ #include "ie_common.h" #include "ie_preprocess.hpp" #include "ie_imemory_state.hpp" -#include "details/ie_irelease.hpp" namespace InferenceEngine { @@ -26,7 +25,7 @@ namespace InferenceEngine { * @brief This is an interface of asynchronous infer request * */ -class IInferRequest : public details::IRelease { +class IInferRequest : public std::enable_shared_from_this { public: /** * @enum WaitMode @@ -198,7 +197,9 @@ class IInferRequest : public details::IRelease { * given index */ virtual StatusCode QueryState(IVariableState::Ptr& pState, size_t idx, ResponseDesc* resp) noexcept = 0; - IE_SUPPRESS_DEPRECATED_END + +protected: + ~IInferRequest() = default; }; } // namespace InferenceEngine \ No newline at end of file diff --git a/inference-engine/include/ie_imemory_state.hpp b/inference-engine/include/ie_imemory_state.hpp index dcf9125e2a4c19..fdac3c7ebbb0de 100644 --- a/inference-engine/include/ie_imemory_state.hpp +++ b/inference-engine/include/ie_imemory_state.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_input_info.hpp b/inference-engine/include/ie_input_info.hpp index fe2d92b4e3ee13..9ea794c3bbf765 100644 --- a/inference-engine/include/ie_input_info.hpp +++ b/inference-engine/include/ie_input_info.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,7 +44,7 @@ class InputInfo { */ Precision getPrecision() const { if (!_inputData) { - THROW_IE_EXCEPTION << "Data is empty!"; + IE_THROW() << "Data is empty!"; } return _inputData->getPrecision(); } @@ -57,7 +57,7 @@ class InputInfo { */ void setPrecision(Precision p) { if (!_inputData) { - THROW_IE_EXCEPTION << "Data is empty!"; + IE_THROW() << "Data is empty!"; } _inputData->setPrecision(p); } @@ -76,7 +76,7 @@ class InputInfo { */ Layout getLayout() { if (!_inputData) { - THROW_IE_EXCEPTION << "Data is empty!"; + IE_THROW() << "Data is empty!"; } return _inputData->getLayout(); } @@ -89,7 +89,7 @@ class InputInfo { */ void setLayout(Layout l) { if (!_inputData) { - THROW_IE_EXCEPTION << "Data is empty!"; + IE_THROW() << "Data is empty!"; } _inputData->setLayout(l); } @@ -100,6 +100,9 @@ class InputInfo { * @return A string - the name of the input */ const std::string& name() const { + if (!_inputData) { + IE_THROW() << "Data is empty!"; + } return _inputData->getName(); } @@ -130,7 +133,7 @@ class InputInfo { */ const TensorDesc& getTensorDesc() const { if (!_inputData) { - THROW_IE_EXCEPTION << "Data is empty!"; + IE_THROW() << "Data is empty!"; } return _inputData->getTensorDesc(); } diff --git a/inference-engine/include/ie_layouts.h b/inference-engine/include/ie_layouts.h index 219dd6b9d1f3b3..31c42e1d02ad87 100644 --- a/inference-engine/include/ie_layouts.h +++ b/inference-engine/include/ie_layouts.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_locked_memory.hpp b/inference-engine/include/ie_locked_memory.hpp index 5a8c0d529fdfa5..2bc272091fa5d4 100644 --- a/inference-engine/include/ie_locked_memory.hpp +++ b/inference-engine/include/ie_locked_memory.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_parallel.hpp b/inference-engine/include/ie_parallel.hpp index bc33c92e01266a..fbdc72c7368993 100644 --- a/inference-engine/include/ie_parallel.hpp +++ b/inference-engine/include/ie_parallel.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_parameter.hpp b/inference-engine/include/ie_parameter.hpp index e53cef2fb2cade..086556151f7764 100644 --- a/inference-engine/include/ie_parameter.hpp +++ b/inference-engine/include/ie_parameter.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,6 @@ #include #include -#include
#include #include #include @@ -51,19 +50,23 @@ class INFERENCE_ENGINE_API_CLASS(Parameter) { } /** + * @deprecated Use ngraph::Variant directly * @brief Creates parameter from variant. * This method creates empty parameter if variant doesn't contain Parameter * * @param var ngraph variant */ + INFERENCE_ENGINE_DEPRECATED("Use ngraph::Variant directly") Parameter(const std::shared_ptr& var); /** + * @deprecated Use ngraph::Variant directly * @brief Creates parameter from variant. * This method creates empty parameter if variant doesn't contain Parameter * * @param var ngraph variant */ + INFERENCE_ENGINE_DEPRECATED("Use ngraph::Variant directly") Parameter(std::shared_ptr& var); /** @@ -201,19 +204,25 @@ class INFERENCE_ENGINE_API_CLASS(Parameter) { } /** + * @deprecated Use ngraph::Variant directly * @brief Converts parameter to shared pointer on ngraph::Variant * * @return shared pointer on ngraph::Variant */ + INFERENCE_ENGINE_DEPRECATED("Use ngraph::Variant directly") std::shared_ptr asVariant() const; /** + * @deprecated Use ngraph::Variant directly * @brief Casts to shared pointer on ngraph::Variant * * @return shared pointer on ngraph::Variant */ + INFERENCE_ENGINE_DEPRECATED("Use ngraph::Variant directly") operator std::shared_ptr() const { + IE_SUPPRESS_DEPRECATED_START return asVariant(); + IE_SUPPRESS_DEPRECATED_END } /** @@ -265,11 +274,11 @@ class INFERENCE_ENGINE_API_CLASS(Parameter) { struct HasOperatorEqual : CheckOperatorEqual::type {}; struct Any { -#if defined(__clang__) && !defined(__SYCL_COMPILER_VERSION) +#ifdef __ANDROID__ virtual ~Any(); #else virtual ~Any() = default; -#endif // __clang__ && !__SYCL_COMPILER_VERSION +#endif virtual bool is(const std::type_info&) const = 0; virtual Any* copy() const = 0; virtual bool operator==(const Any& rhs) const = 0; @@ -297,7 +306,7 @@ class INFERENCE_ENGINE_API_CLASS(Parameter) { template typename std::enable_if::value, bool>::type equal(const Any& left, const Any& rhs) const { - THROW_IE_EXCEPTION << "Parameter doesn't contain equal operator"; + IE_THROW() << "Parameter doesn't contain equal operator"; } template @@ -313,20 +322,20 @@ class INFERENCE_ENGINE_API_CLASS(Parameter) { template static T& dyn_cast(Any* obj) { - if (obj == nullptr) THROW_IE_EXCEPTION << "Parameter is empty!"; + if (obj == nullptr) IE_THROW() << "Parameter is empty!"; return dynamic_cast&>(*obj).get(); } template static const T& dyn_cast(const Any* obj) { - if (obj == nullptr) THROW_IE_EXCEPTION << "Parameter is empty!"; + if (obj == nullptr) IE_THROW() << "Parameter is empty!"; return dynamic_cast&>(*obj).get(); } Any* ptr = nullptr; }; -#if defined(__clang__) && !defined(__SYCL_COMPILER_VERSION) +#ifdef __ANDROID__ extern template struct INFERENCE_ENGINE_API_CLASS(InferenceEngine::Parameter::RealData); extern template struct INFERENCE_ENGINE_API_CLASS(InferenceEngine::Parameter::RealData); extern template struct INFERENCE_ENGINE_API_CLASS(InferenceEngine::Parameter::RealData); @@ -341,6 +350,6 @@ extern template struct INFERENCE_ENGINE_API_CLASS( InferenceEngine::Parameter::RealData>); extern template struct INFERENCE_ENGINE_API_CLASS( InferenceEngine::Parameter::RealData>); -#endif // __clang__ && !__SYCL_COMPILER_VERSION +#endif } // namespace InferenceEngine diff --git a/inference-engine/include/ie_plugin_config.hpp b/inference-engine/include/ie_plugin_config.hpp index e6175eb53567eb..a211c491be6e75 100644 --- a/inference-engine/include/ie_plugin_config.hpp +++ b/inference-engine/include/ie_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -143,6 +143,16 @@ DECLARE_METRIC_KEY(NUMBER_OF_WAITING_INFER_REQUESTS, unsigned int); */ DECLARE_METRIC_KEY(NUMBER_OF_EXEC_INFER_REQUESTS, unsigned int); +/** + * @brief Metric which defines the device architecture. + */ +DECLARE_METRIC_KEY(DEVICE_ARCHITECTURE, std::string); + +/** + * @brief Metric which defines support of import/export functionality by plugin + */ +DECLARE_METRIC_KEY(IMPORT_EXPORT_SUPPORT, bool); + /** * @brief Metric to get a name of network. String value is "NETWORK_NAME". */ @@ -363,16 +373,23 @@ DECLARE_CONFIG_KEY(DUMP_EXEC_GRAPH_AS_DOT); DECLARE_CONFIG_KEY(ENFORCE_BF16); /** -* @brief This key defines the directory which will be used to store any data cached by plugins. -* -* This key supports unicode symbols in path -* The underlying cache structure is not defined and might differ between OpenVINO releases -* Cached data might be platform/device specific and might be invalid after OpenVINO version change -* If this key is not specified or value is empty string, then caching is disabled. -* The key might enable caching for all plugin or some specific ones, e.g.: -* ie.SetConfig({{CONFIG_KEY(CACHE_DIR), "cache/"}}) - enables cache for all plugins that might want to use it -* ie.SetConfig({{CONFIG_KEY(CACHE_DIR), "cache/"}}, {"GPU"}) - enables cache only for GPU plugin -*/ + * @brief This key defines the directory which will be used to store any data cached by plugins. + * + * The underlying cache structure is not defined and might differ between OpenVINO releases + * Cached data might be platform / device specific and might be invalid after OpenVINO version change + * If this key is not specified or value is empty string, then caching is disabled. + * The key might enable caching for the plugin using the following code: + * + * @code + * ie.SetConfig({{CONFIG_KEY(CACHE_DIR), "cache/"}}, "GPU"); // enables cache for GPU plugin + * @endcode + * + * The following code enables caching of compiled network blobs for devices where import/export is supported + * + * @code + * ie.SetConfig({{CONFIG_KEY(CACHE_DIR), "cache/"}}); // enables models cache + * @endcode + */ DECLARE_CONFIG_KEY(CACHE_DIR); } // namespace PluginConfigParams diff --git a/inference-engine/include/ie_precision.hpp b/inference-engine/include/ie_precision.hpp index 18059ce2020e33..9d4bfef0c32116 100644 --- a/inference-engine/include/ie_precision.hpp +++ b/inference-engine/include/ie_precision.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,8 @@ #include #include -#include "details/ie_exception.hpp" +#include "ie_common.h" + namespace InferenceEngine { @@ -32,7 +33,9 @@ class Precision { FP64 = 13, /**< 64bit floating point value */ Q78 = 20, /**< 16bit specific signed fixed point precision */ I16 = 30, /**< 16bit signed integer value */ + U4 = 39, /**< 4bit unsigned integer value */ U8 = 40, /**< 8bit unsigned integer value */ + I4 = 49, /**< 4bit signed integer value */ I8 = 50, /**< 8bit signed integer value */ U16 = 60, /**< 16bit unsigned integer value */ I32 = 70, /**< 32bit signed integer value */ @@ -77,7 +80,7 @@ class Precision { */ explicit Precision(size_t bitsSize, const char* name = nullptr) { if (bitsSize == 0) { - THROW_IE_EXCEPTION << "Precision with 0 elements size not supported"; + IE_THROW() << "Precision with 0 elements size not supported"; } precisionInfo.bitsSize = bitsSize; if (name == nullptr) { @@ -115,10 +118,12 @@ class Precision { CASE(FP64, double); CASE2(FP16, int16_t, uint16_t); CASE2(BF16, int16_t, uint16_t); + CASE2(I4, int8_t, uint8_t); CASE(I8, int8_t); CASE(I16, int16_t); CASE(I32, int32_t); CASE(I64, int64_t); + CASE(U4, uint8_t); CASE(U8, uint8_t); CASE(U16, uint16_t); CASE(U32, uint32_t); @@ -223,8 +228,8 @@ class Precision { static const std::unordered_map names = { #define PRECISION_NAME(s) {#s, s} PRECISION_NAME(Q78), PRECISION_NAME(BOOL), PRECISION_NAME(BF16), - PRECISION_NAME(I8), PRECISION_NAME(I16), PRECISION_NAME(I32), PRECISION_NAME(I64), - PRECISION_NAME(U8), PRECISION_NAME(U16), PRECISION_NAME(U32), PRECISION_NAME(U64), + PRECISION_NAME(I4), PRECISION_NAME(I8), PRECISION_NAME(I16), PRECISION_NAME(I32), PRECISION_NAME(I64), + PRECISION_NAME(U4), PRECISION_NAME(U8), PRECISION_NAME(U16), PRECISION_NAME(U32), PRECISION_NAME(U64), PRECISION_NAME(FP32), PRECISION_NAME(FP64), PRECISION_NAME(FP16), PRECISION_NAME(MIXED), PRECISION_NAME(BIN), #undef PRECISION_NAME @@ -239,7 +244,7 @@ class Precision { */ size_t size() const { if (precisionInfo.bitsSize == 0) { - THROW_IE_EXCEPTION << " cannot estimate element if precision is " << precisionInfo.name; + IE_THROW() << " cannot estimate element if precision is " << precisionInfo.name; } return precisionInfo.bitsSize >> 3; } @@ -263,7 +268,7 @@ class Precision { (precisionInfo.value == Precision::I16) || (precisionInfo.value == Precision::I8) || (precisionInfo.value == Precision::I32) || (precisionInfo.value == Precision::I64) || (precisionInfo.value == Precision::BIN) || (precisionInfo.value == Precision::BF16) || - (precisionInfo.value == Precision::CUSTOM); + (precisionInfo.value == Precision::CUSTOM) || (precisionInfo.value == Precision::I4); } protected: @@ -308,10 +313,12 @@ class Precision { CASE(FP64); CASE(FP16); CASE(BF16); + CASE(I4); CASE(I8); CASE(I16); CASE(I32); CASE(I64); + CASE(U4); CASE(U8); CASE(U16); CASE(U32); @@ -365,10 +372,18 @@ struct PrecisionTrait { using value_type = uint16_t; }; template <> +struct PrecisionTrait { + using value_type = uint8_t; +}; +template <> struct PrecisionTrait { using value_type = uint8_t; }; template <> +struct PrecisionTrait { + using value_type = int8_t; +}; +template <> struct PrecisionTrait { using value_type = int8_t; }; diff --git a/inference-engine/include/ie_preprocess.hpp b/inference-engine/include/ie_preprocess.hpp index 19fe86dcb7818c..6c85cd8db160c5 100644 --- a/inference-engine/include/ie_preprocess.hpp +++ b/inference-engine/include/ie_preprocess.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -74,10 +74,10 @@ class PreProcessInfo { */ PreProcessChannel::Ptr& operator[](size_t index) { if (_channelsInfo.empty()) { - THROW_IE_EXCEPTION << "accessing pre-process when nothing was set."; + IE_THROW() << "accessing pre-process when nothing was set."; } if (index >= _channelsInfo.size()) { - THROW_IE_EXCEPTION << "pre process index " << index << " is out of bounds."; + IE_THROW() << "pre process index " << index << " is out of bounds."; } return _channelsInfo[index]; } @@ -92,10 +92,10 @@ class PreProcessInfo { */ const PreProcessChannel::Ptr& operator[](size_t index) const { if (_channelsInfo.empty()) { - THROW_IE_EXCEPTION << "accessing pre-process when nothing was set."; + IE_THROW() << "accessing pre-process when nothing was set."; } if (index >= _channelsInfo.size()) { - THROW_IE_EXCEPTION << "pre process index " << index << " is out of bounds."; + IE_THROW() << "pre process index " << index << " is out of bounds."; } return _channelsInfo[index]; } @@ -130,13 +130,13 @@ class PreProcessInfo { */ void setMeanImage(const Blob::Ptr& meanImage) { if (meanImage.get() == nullptr) { - THROW_IE_EXCEPTION << "Failed to set invalid mean image: nullptr"; + IE_THROW() << "Failed to set invalid mean image: nullptr"; } else if (meanImage.get()->getTensorDesc().getLayout() != Layout::CHW) { - THROW_IE_EXCEPTION << "Mean image layout should be CHW"; + IE_THROW() << "Mean image layout should be CHW"; } else if (meanImage.get()->getTensorDesc().getDims().size() != 3) { - THROW_IE_EXCEPTION << "Failed to set invalid mean image: number of dimensions != 3"; + IE_THROW() << "Failed to set invalid mean image: number of dimensions != 3"; } else if (meanImage.get()->getTensorDesc().getDims()[0] != getNumberOfChannels()) { - THROW_IE_EXCEPTION << "Failed to set invalid mean image: number of channels != " << getNumberOfChannels(); + IE_THROW() << "Failed to set invalid mean image: number of channels != " << getNumberOfChannels(); } _variant = MEAN_IMAGE; } @@ -151,11 +151,11 @@ class PreProcessInfo { */ void setMeanImageForChannel(const Blob::Ptr& meanImage, const size_t channel) { if (meanImage.get() == nullptr) { - THROW_IE_EXCEPTION << "Failed to set invalid mean image for channel: nullptr"; + IE_THROW() << "Failed to set invalid mean image for channel: nullptr"; } else if (meanImage.get()->getTensorDesc().getDims().size() != 2) { - THROW_IE_EXCEPTION << "Failed to set invalid mean image for channel: number of dimensions != 2"; + IE_THROW() << "Failed to set invalid mean image for channel: number of dimensions != 2"; } else if (channel >= _channelsInfo.size()) { - THROW_IE_EXCEPTION << "Channel " << channel + IE_THROW() << "Channel " << channel << " exceed number of PreProcess channels: " << _channelsInfo.size(); } _variant = MEAN_IMAGE; diff --git a/inference-engine/include/ie_remote_context.hpp b/inference-engine/include/ie_remote_context.hpp index bd8f00a632818a..1fd7d9c74192df 100644 --- a/inference-engine/include/ie_remote_context.hpp +++ b/inference-engine/include/ie_remote_context.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_transformations.hpp b/inference-engine/include/ie_transformations.hpp index 673e563f4e8887..6691fa74daeedd 100644 --- a/inference-engine/include/ie_transformations.hpp +++ b/inference-engine/include/ie_transformations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_unicode.hpp b/inference-engine/include/ie_unicode.hpp index 7a23f48bb25fd2..dc943d6f558be5 100644 --- a/inference-engine/include/ie_unicode.hpp +++ b/inference-engine/include/ie_unicode.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/ie_version.hpp b/inference-engine/include/ie_version.hpp index e3773d6e1f1643..69982a0336ae15 100644 --- a/inference-engine/include/ie_version.hpp +++ b/inference-engine/include/ie_version.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/inference_engine.hpp b/inference-engine/include/inference_engine.hpp index 300566f79b9e5a..8c6c4768a53815 100644 --- a/inference-engine/include/inference_engine.hpp +++ b/inference-engine/include/inference_engine.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/multi-device/multi_device_config.hpp b/inference-engine/include/multi-device/multi_device_config.hpp index 2f5bdb3da62822..5062297a141050 100644 --- a/inference-engine/include/multi-device/multi_device_config.hpp +++ b/inference-engine/include/multi-device/multi_device_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/vpu/hddl_config.hpp b/inference-engine/include/vpu/hddl_config.hpp index 5b669fa35bca52..be1649e6916263 100644 --- a/inference-engine/include/vpu/hddl_config.hpp +++ b/inference-engine/include/vpu/hddl_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/vpu/hddl_plugin_config.hpp b/inference-engine/include/vpu/hddl_plugin_config.hpp index 78388ca5f87411..5eb1436973e86b 100644 --- a/inference-engine/include/vpu/hddl_plugin_config.hpp +++ b/inference-engine/include/vpu/hddl_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/vpu/myriad_config.hpp b/inference-engine/include/vpu/myriad_config.hpp index 76393bca6a6524..2b09a0ffc9dd79 100644 --- a/inference-engine/include/vpu/myriad_config.hpp +++ b/inference-engine/include/vpu/myriad_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/vpu/myriad_plugin_config.hpp b/inference-engine/include/vpu/myriad_plugin_config.hpp index e3d223b45ffe0f..d16227f37cd670 100644 --- a/inference-engine/include/vpu/myriad_plugin_config.hpp +++ b/inference-engine/include/vpu/myriad_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/vpu/vpu_config.hpp b/inference-engine/include/vpu/vpu_config.hpp index df46da327d8818..f9a21055156059 100644 --- a/inference-engine/include/vpu/vpu_config.hpp +++ b/inference-engine/include/vpu/vpu_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/include/vpu/vpu_plugin_config.hpp b/inference-engine/include/vpu/vpu_plugin_config.hpp index a3a3bfaf64d43f..2ab022c231e73a 100644 --- a/inference-engine/include/vpu/vpu_plugin_config.hpp +++ b/inference-engine/include/vpu/vpu_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/CMakeLists.txt b/inference-engine/samples/CMakeLists.txt index dfe9f2303d81e3..25a5b863a59940 100644 --- a/inference-engine/samples/CMakeLists.txt +++ b/inference-engine/samples/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -143,6 +143,10 @@ else() find_package(InferenceEngine 2.1 REQUIRED) endif() +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/common/utils") + add_subdirectory(common/utils) +endif() + # format reader must be added after find_package(InferenceEngine) to get # exactly the same OpenCV_DIR path which was used for the InferenceEngine build if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/common/format_reader") diff --git a/inference-engine/samples/benchmark_app/CMakeLists.txt b/inference-engine/samples/benchmark_app/CMakeLists.txt index f1fbba74dec49e..cef62a7c323b3e 100644 --- a/inference-engine/samples/benchmark_app/CMakeLists.txt +++ b/inference-engine/samples/benchmark_app/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -8,5 +8,6 @@ file (GLOB HDR ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) ie_add_sample(NAME benchmark_app SOURCES ${SRC} HEADERS ${HDR} - DEPENDENCIES format_reader frontend_manager + DEPENDENCIES format_reader ie_samples_utils frontend_manager OPENCV_DEPENDENCIES imgcodecs) + diff --git a/inference-engine/samples/benchmark_app/README.md b/inference-engine/samples/benchmark_app/README.md index 0f02101720af26..084edf45a046f1 100644 --- a/inference-engine/samples/benchmark_app/README.md +++ b/inference-engine/samples/benchmark_app/README.md @@ -105,6 +105,9 @@ Options: -nthreads "" Optional. Number of threads to use for inference on the CPU (including HETERO and MULTI cases). -enforcebf16 Optional. Enforcing of floating point operations execution in bfloat16 precision on platforms with native bfloat16 support. By default, this key sets "true" on platforms with native bfloat16 support and "false" for other platforms. Use "-enforcebf16=false" to disable this feature. -pin "YES"/"NO"/"NUMA" Optional. Enable threads->cores ("YES", default), threads->(NUMA)nodes ("NUMA") or completely disable ("NO") CPU threads pinning for CPU-involved inference. + -ip "U8"/"FP16"/"FP32" Optional. Specifies precision for all input layers of the network. + -op "U8"/"FP16"/"FP32" Optional. Specifies precision for all output layers of the network. + -iop Optional. Specifies precision for input and output layers by name. Example: -iop "input:FP16, output:FP16". Notice that quotes are required. Overwrites precision from ip and op options for specified layers. Statistics dumping options: diff --git a/inference-engine/samples/benchmark_app/benchmark_app.hpp b/inference-engine/samples/benchmark_app/benchmark_app.hpp index 9ac25bb82a1e55..bfe75ccf7b6392 100644 --- a/inference-engine/samples/benchmark_app/benchmark_app.hpp +++ b/inference-engine/samples/benchmark_app/benchmark_app.hpp @@ -108,6 +108,18 @@ static const char layout_message[] = "Optional. Prompts how network layouts shou // @brief message for quantization bits static const char gna_qb_message[] = "Optional. Weight bits for quantization: 8 or 16 (default)"; +static constexpr char inputs_precision_message[] = + "Optional. Specifies precision for all input layers of the network."; + +static constexpr char outputs_precision_message[] = + "Optional. Specifies precision for all output layers of the network."; + +static constexpr char iop_message[] = + "Optional. Specifies precision for input and output layers by name.\n" +" Example: -iop \"input:FP16, output:FP16\".\n" +" Notice that quotes are required.\n" +" Overwrites precision from ip and op options for specified layers."; + /// @brief Define flag for showing help message
DEFINE_bool(h, false, help_message); @@ -198,6 +210,18 @@ DEFINE_string(layout, "", layout_message); /// @brief Define flag for quantization bits (default 16) DEFINE_int32(qb, 16, gna_qb_message); +/// @brief Specify precision for all input layers of the network +DEFINE_string(ip, "", inputs_precision_message); + +/// @brief Specify precision for all ouput layers of the network +DEFINE_string(op, "", outputs_precision_message); + +/// @brief Specify precision for input and output layers by name.\n" +/// Example: -iop \"input:FP16, output:FP16\".\n" +/// Notice that quotes are required.\n" +/// Overwrites layout from ip and op options for specified layers."; +DEFINE_string(iop, "", iop_message); + /** * @brief This function show a help message */ @@ -237,4 +261,7 @@ static void showUsage() { std::cout << " -load_config " << load_config_message << std::endl; #endif std::cout << " -qb " << gna_qb_message << std::endl; + std::cout << " -ip " << inputs_precision_message << std::endl; + std::cout << " -op " << outputs_precision_message << std::endl; + std::cout << " -iop \"\" " << iop_message << std::endl; } diff --git a/inference-engine/samples/benchmark_app/infer_request_wrap.hpp b/inference-engine/samples/benchmark_app/infer_request_wrap.hpp index 945c5a0f9ced65..c003064c14469a 100644 --- a/inference-engine/samples/benchmark_app/infer_request_wrap.hpp +++ b/inference-engine/samples/benchmark_app/infer_request_wrap.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/benchmark_app/inputs_filling.cpp b/inference-engine/samples/benchmark_app/inputs_filling.cpp index 4742ddb361ce1b..c024e00c7bcad6 100644 --- a/inference-engine/samples/benchmark_app/inputs_filling.cpp +++ b/inference-engine/samples/benchmark_app/inputs_filling.cpp @@ -54,7 +54,7 @@ void fillBlobImage(Blob::Ptr& inputBlob, const size_t& inputSize) { MemoryBlob::Ptr minput = as(inputBlob); if (!minput) { - THROW_IE_EXCEPTION << "We expect inputBlob to be inherited from MemoryBlob in fillBlobImage, " << + IE_THROW() << "We expect inputBlob to be inherited from MemoryBlob in fillBlobImage, " << "but by fact we were not able to cast inputBlob to MemoryBlob"; } // locked memory holder should be alive all time while access to its buffer happens @@ -114,7 +114,7 @@ void fillBlobBinary(Blob::Ptr& inputBlob, const size_t& inputSize) { MemoryBlob::Ptr minput = as(inputBlob); if (!minput) { - THROW_IE_EXCEPTION << "We expect inputBlob to be inherited from MemoryBlob in fillBlobBinary, " << + IE_THROW() << "We expect inputBlob to be inherited from MemoryBlob in fillBlobBinary, " << "but by fact we were not able to cast inputBlob to MemoryBlob"; } // locked memory holder should be alive all time while access to its buffer happens @@ -127,17 +127,17 @@ void fillBlobBinary(Blob::Ptr& inputBlob, slog::info << "Prepare binary file " << filePaths[inputIndex] << slog::endl; std::ifstream binaryFile(filePaths[inputIndex], std::ios_base::binary | std::ios_base::ate); if (!binaryFile) { - THROW_IE_EXCEPTION << "Cannot open " << filePaths[inputIndex]; + IE_THROW() << "Cannot open " << filePaths[inputIndex]; } auto fileSize = static_cast(binaryFile.tellg()); binaryFile.seekg(0, std::ios_base::beg); if (!binaryFile.good()) { - THROW_IE_EXCEPTION << "Can not read " << filePaths[inputIndex]; + IE_THROW() << "Can not read " << filePaths[inputIndex]; } auto inputSize = inputBlob->size()*sizeof(T)/batchSize; if (fileSize != inputSize) { - THROW_IE_EXCEPTION << "File " << filePaths[inputIndex] << " contains " << std::to_string(fileSize) << " bytes " + IE_THROW() << "File " << filePaths[inputIndex] << " contains " << std::to_string(fileSize) << " bytes " "but the network expects " << std::to_string(inputSize); } binaryFile.read(&inputBlobData[i*inputSize], inputSize); @@ -145,19 +145,33 @@ void fillBlobBinary(Blob::Ptr& inputBlob, } template -void fillBlobRandom(Blob::Ptr& inputBlob) { +using uniformDistribution = + typename std::conditional< + std::is_floating_point::value, + std::uniform_real_distribution, + typename std::conditional< + std::is_integral::value, + std::uniform_int_distribution, + void>::type + >::type; + +template +void fillBlobRandom(Blob::Ptr& inputBlob, + T rand_min = std::numeric_limits::min(), + T rand_max = std::numeric_limits::max()) { MemoryBlob::Ptr minput = as(inputBlob); if (!minput) { - THROW_IE_EXCEPTION << "We expect inputBlob to be inherited from MemoryBlob in fillBlobRandom, " + IE_THROW() << "We expect inputBlob to be inherited from MemoryBlob in fillBlobRandom, " << "but by fact we were not able to cast inputBlob to MemoryBlob"; } // locked memory holder should be alive all time while access to its buffer happens auto minputHolder = minput->wmap(); auto inputBlobData = minputHolder.as(); + std::mt19937 gen(0); + uniformDistribution distribution(rand_min, rand_max); for (size_t i = 0; i < inputBlob->size(); i++) { - auto rand_max = RAND_MAX; - inputBlobData[i] = (T) rand() / static_cast(rand_max) * 10; + inputBlobData[i] = static_cast(distribution(gen)); } } @@ -167,7 +181,7 @@ void fillBlobImInfo(Blob::Ptr& inputBlob, std::pair image_size) { MemoryBlob::Ptr minput = as(inputBlob); if (!minput) { - THROW_IE_EXCEPTION << "We expect inputBlob to be inherited from MemoryBlob in fillBlobImInfo, " << + IE_THROW() << "We expect inputBlob to be inherited from MemoryBlob in fillBlobImInfo, " << "but by fact we were not able to cast inputBlob to MemoryBlob"; } // locked memory holder should be alive all time while access to its buffer happens @@ -283,10 +297,10 @@ void fillBlobs(const std::vector& inputFiles, fillBlobBinary(inputBlob, binaryFiles, batchSize, requestId, binaryInputId++, binaryInputCount); } else if (precision == InferenceEngine::Precision::I64) { fillBlobBinary(inputBlob, binaryFiles, batchSize, requestId, binaryInputId++, binaryInputCount); - } else if (precision == InferenceEngine::Precision::U8) { + } else if ((precision == InferenceEngine::Precision::U8) || (precision == InferenceEngine::Precision::BOOL)) { fillBlobBinary(inputBlob, binaryFiles, batchSize, requestId, binaryInputId++, binaryInputCount); } else { - THROW_IE_EXCEPTION << "Input precision is not supported for " << item.first; + IE_THROW() << "Input precision is not supported for " << item.first; } continue; } @@ -305,7 +319,7 @@ void fillBlobs(const std::vector& inputFiles, } else if (precision == InferenceEngine::Precision::I64) { fillBlobImInfo(inputBlob, batchSize, image_size); } else { - THROW_IE_EXCEPTION << "Input precision is not supported for image info!"; + IE_THROW() << "Input precision is not supported for image info!"; } continue; } @@ -315,23 +329,27 @@ void fillBlobs(const std::vector& inputFiles, << std::string((app_info.isImage() ? "image" : "some binary data")) << " is expected)" << slog::endl; if (precision == InferenceEngine::Precision::FP32) { - fillBlobRandom(inputBlob); + fillBlobRandom(inputBlob); } else if (precision == InferenceEngine::Precision::FP16) { - fillBlobRandom(inputBlob); + fillBlobRandom(inputBlob); } else if (precision == InferenceEngine::Precision::I32) { - fillBlobRandom(inputBlob); + fillBlobRandom(inputBlob); } else if (precision == InferenceEngine::Precision::I64) { - fillBlobRandom(inputBlob); + fillBlobRandom(inputBlob); } else if (precision == InferenceEngine::Precision::U8) { - fillBlobRandom(inputBlob); + // uniform_int_distribution is not allowed in the C++17 standard and vs2017/19 + fillBlobRandom(inputBlob); } else if (precision == InferenceEngine::Precision::I8) { - fillBlobRandom(inputBlob); + // uniform_int_distribution is not allowed in the C++17 standard and vs2017/19 + fillBlobRandom(inputBlob); } else if (precision == InferenceEngine::Precision::U16) { - fillBlobRandom(inputBlob); + fillBlobRandom(inputBlob); } else if (precision == InferenceEngine::Precision::I16) { - fillBlobRandom(inputBlob); + fillBlobRandom(inputBlob); + } else if (precision == InferenceEngine::Precision::BOOL) { + fillBlobRandom(inputBlob, 0, 1); } else { - THROW_IE_EXCEPTION << "Input precision is not supported for " << item.first; + IE_THROW() << "Input precision is not supported for " << item.first; } } } diff --git a/inference-engine/samples/benchmark_app/main.cpp b/inference-engine/samples/benchmark_app/main.cpp index 839c4c3f1dfb2b..b1ea2c42d6ecda 100644 --- a/inference-engine/samples/benchmark_app/main.cpp +++ b/inference-engine/samples/benchmark_app/main.cpp @@ -69,6 +69,14 @@ bool ParseAndCheckCommandLine(int argc, char *argv[]) { throw std::logic_error("only " + std::string(detailedCntReport) + " report type is supported for MULTI device"); } + bool isNetworkCompiled = fileExt(FLAGS_m) == "blob"; + bool isPrecisionSet = !(FLAGS_ip.empty() && FLAGS_op.empty() && FLAGS_iop.empty()); + if (isNetworkCompiled && isPrecisionSet) { + std::string err = std::string("Cannot set precision for a compiled network. ") + + std::string("Please re-compile your network with required precision using compile_tool"); + + throw std::logic_error(err); + } return true; } @@ -90,7 +98,7 @@ static void next_step(const std::string additional_info = "") { step_id++; if (step_names.count(step_id) == 0) - THROW_IE_EXCEPTION << "Step ID " << step_id << " is out of total steps number " << step_names.size(); + IE_THROW() << "Step ID " << step_id << " is out of total steps number " << step_names.size(); std::cout << "[Step " << step_id << "/" << step_names.size() << "] " << step_names.at(step_id) << (additional_info.empty() ? "" : " (" + additional_info + ")") << std::endl; @@ -167,7 +175,7 @@ int main(int argc, char *argv[]) { Core ie; if (FLAGS_d.find("CPU") != std::string::npos && !FLAGS_l.empty()) { // CPU (MKLDNN) extensions is loaded as a shared library and passed as a pointer to base extension - const auto extension_ptr = InferenceEngine::make_so_pointer(FLAGS_l); + const auto extension_ptr = std::make_shared(FLAGS_l); ie.AddExtension(extension_ptr); slog::info << "CPU (MKLDNN) extensions is loaded " << FLAGS_l << slog::endl; } @@ -390,6 +398,10 @@ int main(int argc, char *argv[]) { item.second->setPrecision(app_inputs_info.at(item.first).precision); } } + + processPrecision(cnnNetwork, FLAGS_ip, FLAGS_op, FLAGS_iop); + + printInputAndOutputsInfo(cnnNetwork); // ----------------- 7. Loading the model to the device -------------------------------------------------------- next_step(); startTime = Time::now(); @@ -442,8 +454,8 @@ int main(int argc, char *argv[]) { std::string key = METRIC_KEY(OPTIMAL_NUMBER_OF_INFER_REQUESTS); try { nireq = exeNetwork.GetMetric(key).as(); - } catch (const details::InferenceEngineException& ex) { - THROW_IE_EXCEPTION + } catch (const std::exception& ex) { + IE_THROW() << "Every device used with the benchmark_app should " << "support OPTIMAL_NUMBER_OF_INFER_REQUESTS ExecutableNetwork metric. " << "Failed to query the metric for the " << device_name << " with error:" << ex.what(); @@ -541,7 +553,7 @@ int main(int argc, char *argv[]) { // warming up - out of scope auto inferRequest = inferRequestsQueue.getIdleRequest(); if (!inferRequest) { - THROW_IE_EXCEPTION << "No idle Infer Requests!"; + IE_THROW() << "No idle Infer Requests!"; } if (FLAGS_api == "sync") { inferRequest->infer(); @@ -570,7 +582,7 @@ int main(int argc, char *argv[]) { (FLAGS_api == "async" && iteration % nireq != 0)) { inferRequest = inferRequestsQueue.getIdleRequest(); if (!inferRequest) { - THROW_IE_EXCEPTION << "No idle Infer Requests!"; + IE_THROW() << "No idle Infer Requests!"; } if (FLAGS_api == "sync") { diff --git a/inference-engine/samples/benchmark_app/progress_bar.hpp b/inference-engine/samples/benchmark_app/progress_bar.hpp index 916d3af191cb87..0893a04bb028da 100644 --- a/inference-engine/samples/benchmark_app/progress_bar.hpp +++ b/inference-engine/samples/benchmark_app/progress_bar.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/benchmark_app/statistics_report.cpp b/inference-engine/samples/benchmark_app/statistics_report.cpp index 1f7b5a37e32799..39bdaa034b0254 100644 --- a/inference-engine/samples/benchmark_app/statistics_report.cpp +++ b/inference-engine/samples/benchmark_app/statistics_report.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/benchmark_app/statistics_report.hpp b/inference-engine/samples/benchmark_app/statistics_report.hpp index b2e9f8a3429105..df6d08707cafb7 100644 --- a/inference-engine/samples/benchmark_app/statistics_report.hpp +++ b/inference-engine/samples/benchmark_app/statistics_report.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/build_samples.sh b/inference-engine/samples/build_samples.sh index 68697325496189..91354e3913d6eb 100755 --- a/inference-engine/samples/build_samples.sh +++ b/inference-engine/samples/build_samples.sh @@ -1,18 +1,7 @@ #!/usr/bin/env bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 error() { local code="${3:-1}" diff --git a/inference-engine/samples/build_samples_msvc.bat b/inference-engine/samples/build_samples_msvc.bat index 2a39ada704c29d..d7f0bce1dd4c1d 100644 --- a/inference-engine/samples/build_samples_msvc.bat +++ b/inference-engine/samples/build_samples_msvc.bat @@ -1,19 +1,7 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. - +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 @setlocal SETLOCAL EnableDelayedExpansion diff --git a/inference-engine/samples/classification_sample_async/CMakeLists.txt b/inference-engine/samples/classification_sample_async/CMakeLists.txt index dd7aa6b9f31d77..c1dc01d0536afb 100644 --- a/inference-engine/samples/classification_sample_async/CMakeLists.txt +++ b/inference-engine/samples/classification_sample_async/CMakeLists.txt @@ -1,8 +1,8 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # ie_add_sample(NAME classification_sample_async SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" HEADERS classification_sample_async.h - DEPENDENCIES format_reader) + DEPENDENCIES format_reader ie_samples_utils) diff --git a/inference-engine/samples/classification_sample_async/classification_sample_async.h b/inference-engine/samples/classification_sample_async/classification_sample_async.h index 09d2ebb8cb279a..07e6895d8ea6c6 100644 --- a/inference-engine/samples/classification_sample_async/classification_sample_async.h +++ b/inference-engine/samples/classification_sample_async/classification_sample_async.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -48,6 +48,7 @@ DEFINE_string(i, "", image_message); /// @brief Define parameter for set model file
/// It is a required parameter DEFINE_string(m, "", model_message); +DEFINE_string(m2, "", model_message); /// @brief device the target device to infer on
DEFINE_string(d, "CPU", target_device_message); diff --git a/inference-engine/samples/classification_sample_async/main.cpp b/inference-engine/samples/classification_sample_async/main.cpp index 264d4ba155f0e0..2b420d2e003120 100644 --- a/inference-engine/samples/classification_sample_async/main.cpp +++ b/inference-engine/samples/classification_sample_async/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -78,7 +78,7 @@ int main(int argc, char *argv[]) { if (!FLAGS_l.empty()) { // CPU(MKLDNN) extensions are loaded as a shared library and passed as a pointer to base extension - IExtensionPtr extension_ptr = make_so_pointer(FLAGS_l); + IExtensionPtr extension_ptr = std::make_shared(FLAGS_l); ie.AddExtension(extension_ptr); slog::info << "CPU Extension loaded: " << FLAGS_l << slog::endl; } diff --git a/inference-engine/samples/common/format_reader/CMakeLists.txt b/inference-engine/samples/common/format_reader/CMakeLists.txt index c5c54496775482..132eadcf626c3c 100644 --- a/inference-engine/samples/common/format_reader/CMakeLists.txt +++ b/inference-engine/samples/common/format_reader/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -21,11 +21,11 @@ source_group("include" FILES ${LIBRARY_HEADERS}) add_library(${TARGET_NAME} SHARED ${MAIN_SRC} ${LIBRARY_HEADERS}) # Find OpenCV components if exist -find_package(OpenCV COMPONENTS imgcodecs videoio imgproc QUIET) +find_package(OpenCV COMPONENTS core imgproc imgcodecs QUIET) if(NOT OpenCV_FOUND) message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} will be built without OPENCV support") else() - target_link_libraries(${TARGET_NAME} PRIVATE ${OpenCV_LIBRARIES}) + target_link_libraries(${TARGET_NAME} PRIVATE ${OpenCV_LIBRARIES} ie_samples_utils) if(UNIX AND NOT APPLE) # Workaround issue that rpath-link is missing for PRIVATE dependencies # Fixed in cmake 3.16.0 https://gitlab.kitware.com/cmake/cmake/issues/19556 diff --git a/inference-engine/samples/common/format_reader/MnistUbyte.cpp b/inference-engine/samples/common/format_reader/MnistUbyte.cpp index 9f3703322c11ac..7ddf335b167fe1 100644 --- a/inference-engine/samples/common/format_reader/MnistUbyte.cpp +++ b/inference-engine/samples/common/format_reader/MnistUbyte.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/MnistUbyte.h b/inference-engine/samples/common/format_reader/MnistUbyte.h index 211f95adddb5d3..6a9c2e3e1caebd 100644 --- a/inference-engine/samples/common/format_reader/MnistUbyte.h +++ b/inference-engine/samples/common/format_reader/MnistUbyte.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,10 +43,6 @@ class MnistUbyte : public Reader { return _width * _height * 1; } - void Release() noexcept override { - delete this; - } - std::shared_ptr getData(size_t width, size_t height) override { if ((width * height != 0) && (_width * _height != width * height)) { std::cout << "[ WARNING ] Image won't be resized! Please use OpenCV.\n"; diff --git a/inference-engine/samples/common/format_reader/bmp.cpp b/inference-engine/samples/common/format_reader/bmp.cpp index e7f13a873fae6d..dc4bf1546aec1f 100644 --- a/inference-engine/samples/common/format_reader/bmp.cpp +++ b/inference-engine/samples/common/format_reader/bmp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/bmp.h b/inference-engine/samples/common/format_reader/bmp.h index a3187f3f7fada0..8e97aa731f49aa 100644 --- a/inference-engine/samples/common/format_reader/bmp.h +++ b/inference-engine/samples/common/format_reader/bmp.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -60,10 +60,6 @@ class BitMap : public Reader { return _width * _height * 3; } - void Release() noexcept override { - delete this; - } - std::shared_ptr getData(size_t width, size_t height) override { if ((width * height != 0) && (_width * _height != width * height)) { std::cout << "[ WARNING ] Image won't be resized! Please use OpenCV.\n"; diff --git a/inference-engine/samples/common/format_reader/format_reader.cpp b/inference-engine/samples/common/format_reader/format_reader.cpp index 02d78eb8d006bf..dc8bb4e7edc58c 100644 --- a/inference-engine/samples/common/format_reader/format_reader.cpp +++ b/inference-engine/samples/common/format_reader/format_reader.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,7 +23,7 @@ Reader *Registry::CreateReader(const char *filename) { for (auto maker : _data) { Reader *ol = maker(filename); if (ol != nullptr && ol->size() != 0) return ol; - if (ol != nullptr) ol->Release(); + if (ol != nullptr) delete ol; } return nullptr; } diff --git a/inference-engine/samples/common/format_reader/format_reader.h b/inference-engine/samples/common/format_reader/format_reader.h index fc5b1cbbbc988c..4b415c282d1ebe 100644 --- a/inference-engine/samples/common/format_reader/format_reader.h +++ b/inference-engine/samples/common/format_reader/format_reader.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -45,6 +45,8 @@ class Reader { std::shared_ptr _data; public: + virtual ~Reader() = default; + /** * \brief Get width * @return width @@ -69,8 +71,6 @@ class Reader { * @return size */ virtual size_t size() const = 0; - - virtual void Release() noexcept = 0; }; } // namespace FormatReader diff --git a/inference-engine/samples/common/format_reader/format_reader_ptr.h b/inference-engine/samples/common/format_reader/format_reader_ptr.h index b69bbf539a80c9..d2beb3e1b5a199 100644 --- a/inference-engine/samples/common/format_reader/format_reader_ptr.h +++ b/inference-engine/samples/common/format_reader/format_reader_ptr.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,10 +15,7 @@ namespace FormatReader { class ReaderPtr { public: - explicit ReaderPtr(const char *imageName) : reader(CreateFormatReader(imageName), - [](Reader *p) { - p->Release(); - }) {} + explicit ReaderPtr(const char *imageName) : reader(CreateFormatReader(imageName)) {} /** * @brief dereference operator overload * @return Reader @@ -40,6 +37,6 @@ class ReaderPtr { } protected: - std::unique_ptr> reader; + std::unique_ptr reader; }; } // namespace FormatReader diff --git a/inference-engine/samples/common/format_reader/opencv_wraper.cpp b/inference-engine/samples/common/format_reader/opencv_wraper.cpp index d4f75042718d38..a27d2f901257b0 100644 --- a/inference-engine/samples/common/format_reader/opencv_wraper.cpp +++ b/inference-engine/samples/common/format_reader/opencv_wraper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/format_reader/opencv_wraper.h b/inference-engine/samples/common/format_reader/opencv_wraper.h index c642b87dfdc30d..2b48047bc7326f 100644 --- a/inference-engine/samples/common/format_reader/opencv_wraper.h +++ b/inference-engine/samples/common/format_reader/opencv_wraper.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -46,10 +46,6 @@ class OCVReader : public Reader { return _size; } - void Release() noexcept override { - delete this; - } - std::shared_ptr getData(size_t width, size_t height) override; }; } // namespace FormatReader diff --git a/inference-engine/samples/common/format_reader/register.h b/inference-engine/samples/common/format_reader/register.h index 36e0ac94d3936c..58d59caf1f61f2 100644 --- a/inference-engine/samples/common/format_reader/register.h +++ b/inference-engine/samples/common/format_reader/register.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // /** diff --git a/inference-engine/samples/common/samples/args_helper.hpp b/inference-engine/samples/common/samples/args_helper.hpp deleted file mode 100644 index fa2e34aa5e7d66..00000000000000 --- a/inference-engine/samples/common/samples/args_helper.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -/** - * @brief a header file with common samples functionality - * @file args_helper.hpp - */ - -#pragma once - -#include -#include -#include -#include -#include - -#include - -#ifdef _WIN32 -#include -#else -#include -#endif - -/** -* @brief This function checks input args and existence of specified files in a given folder -* @param arg path to a file to be checked for existence -* @return files updated vector of verified input files -*/ -void readInputFilesArguments(std::vector &files, const std::string& arg) { - struct stat sb; - if (stat(arg.c_str(), &sb) != 0) { - slog::warn << "File " << arg << " cannot be opened!" << slog::endl; - return; - } - if (S_ISDIR(sb.st_mode)) { - DIR *dp; - dp = opendir(arg.c_str()); - if (dp == nullptr) { - slog::warn << "Directory " << arg << " cannot be opened!" << slog::endl; - return; - } - - struct dirent *ep; - while (nullptr != (ep = readdir(dp))) { - std::string fileName = ep->d_name; - if (fileName == "." || fileName == "..") continue; - files.push_back(arg + "/" + ep->d_name); - } - closedir(dp); - } else { - files.push_back(arg); - } - - if (files.size() < 20) { - slog::info << "Files were added: " << files.size() << slog::endl; - for (std::string filePath : files) { - slog::info << " " << filePath << slog::endl; - } - } else { - slog::info << "Files were added: " << files.size() << ". Too many to display each of them." << slog::endl; - } -} - -/** -* @brief This function find -i/--images key in input args -* It's necessary to process multiple values for single key -* @return files updated vector of verified input files -*/ -void parseInputFilesArguments(std::vector &files) { - std::vector args = gflags::GetArgvs(); - bool readArguments = false; - for (size_t i = 0; i < args.size(); i++) { - if (args.at(i) == "-i" || args.at(i) == "--images") { - readArguments = true; - continue; - } - if (!readArguments) { - continue; - } - if (args.at(i).c_str()[0] == '-') { - break; - } - readInputFilesArguments(files, args.at(i)); - } -} diff --git a/inference-engine/samples/common/utils/CMakeLists.txt b/inference-engine/samples/common/utils/CMakeLists.txt new file mode 100644 index 00000000000000..fb5d462a2f2398 --- /dev/null +++ b/inference-engine/samples/common/utils/CMakeLists.txt @@ -0,0 +1,19 @@ +# Copyright (C) Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# +set(TARGET_NAME "ie_samples_utils") + +file(GLOB_RECURSE SOURCES "*.cpp" "*.hpp") +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SOURCES}) + +add_library(${TARGET_NAME} STATIC ${SOURCES}) +set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "src") + +target_include_directories(${TARGET_NAME} + PUBLIC + "${CMAKE_CURRENT_SOURCE_DIR}/include") + +target_link_libraries(${TARGET_NAME} + PUBLIC + IE::inference_engine + gflags) diff --git a/inference-engine/samples/common/utils/include/samples/args_helper.hpp b/inference-engine/samples/common/utils/include/samples/args_helper.hpp new file mode 100644 index 00000000000000..0b4d5da3c29e74 --- /dev/null +++ b/inference-engine/samples/common/utils/include/samples/args_helper.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief a header file with common samples functionality + * @file args_helper.hpp + */ + +#pragma once + +#include +#include + +#include + +/** +* @brief This function checks input args and existence of specified files in a given folder +* @param arg path to a file to be checked for existence +* @return files updated vector of verified input files +*/ +void readInputFilesArguments(std::vector &files, const std::string& arg); + +/** +* @brief This function find -i/--images key in input args +* It's necessary to process multiple values for single key +* @return files updated vector of verified input files +*/ +void parseInputFilesArguments(std::vector &files); + +void processPrecision(InferenceEngine::CNNNetwork& network, const std::string &ip, const std::string &op, const std::string &iop); + +void processLayout(InferenceEngine::CNNNetwork& network, const std::string& il, const std::string& ol, const std::string& iol); + +void printInputAndOutputsInfo(const InferenceEngine::CNNNetwork& network); + diff --git a/inference-engine/samples/common/samples/classification_results.h b/inference-engine/samples/common/utils/include/samples/classification_results.h similarity index 96% rename from inference-engine/samples/common/samples/classification_results.h rename to inference-engine/samples/common/utils/include/samples/classification_results.h index bda0ae29a1f035..3435694579f68b 100644 --- a/inference-engine/samples/common/samples/classification_results.h +++ b/inference-engine/samples/common/utils/include/samples/classification_results.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,6 +6,8 @@ * @brief a header file with output classification results * @file classification_results.hpp */ +#pragma once + #include #include #include @@ -55,7 +57,7 @@ class ClassificationResultT { void topResults(unsigned int n, InferenceEngine::TBlob& input, std::vector& output) { InferenceEngine::SizeVector dims = input.getTensorDesc().getDims(); size_t input_rank = dims.size(); - if (!input_rank || !dims[0]) THROW_IE_EXCEPTION << "Input blob has incorrect dimensions!"; + if (!input_rank || !dims[0]) IE_THROW() << "Input blob has incorrect dimensions!"; size_t batchSize = dims[0]; std::vector indexes(input.size() / batchSize); @@ -109,7 +111,7 @@ class ClassificationResultT { TBLOB_TOP_RESULT(U64); TBLOB_TOP_RESULT(I64); default: - THROW_IE_EXCEPTION << "cannot locate blob for precision: " << input.getTensorDesc().getPrecision(); + IE_THROW() << "cannot locate blob for precision: " << input.getTensorDesc().getPrecision(); } #undef TBLOB_TOP_RESULT diff --git a/inference-engine/samples/common/samples/common.hpp b/inference-engine/samples/common/utils/include/samples/common.hpp similarity index 96% rename from inference-engine/samples/common/samples/common.hpp rename to inference-engine/samples/common/utils/include/samples/common.hpp index cd6948e1e1c7ea..7e0da7cb67b0c5 100644 --- a/inference-engine/samples/common/samples/common.hpp +++ b/inference-engine/samples/common/utils/include/samples/common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -137,7 +137,7 @@ static UNUSED std::vector> blobToImageOutputArray(InferenceE H = outputDims.at(3); W = outputDims.at(4); } else { - THROW_IE_EXCEPTION << "Output blob has unsupported layout " << output->getTensorDesc().getLayout(); + IE_THROW() << "Output blob has unsupported layout " << output->getTensorDesc().getLayout(); } // Get classes @@ -268,7 +268,7 @@ static UNUSED void writeOutputBmp(std::vector> data, size_t auto width = data.at(0).size(); if (height > (size_t) std::numeric_limits::max || width > (size_t) std::numeric_limits::max) { - THROW_IE_EXCEPTION << "File size is too big: " << height << " X " << width; + IE_THROW() << "File size is too big: " << height << " X " << width; } int padSize = static_cast(4 - (width * 3) % 4) % 4; @@ -351,7 +351,7 @@ static UNUSED bool writeOutputBmp(std::string name, unsigned char *data, size_t }; if (height > (size_t)std::numeric_limits::max || width > (size_t)std::numeric_limits::max) { - THROW_IE_EXCEPTION << "File size is too big: " << height << " X " << width; + IE_THROW() << "File size is too big: " << height << " X " << width; } int padSize = static_cast(4 - (width * 3) % 4) % 4; @@ -520,7 +520,7 @@ static UNUSED bool writeOutputBmp(unsigned char *data, size_t height, size_t wid }; if (height > (size_t)std::numeric_limits::max || width > (size_t)std::numeric_limits::max) { - THROW_IE_EXCEPTION << "File size is too big: " << height << " X " << width; + IE_THROW() << "File size is too big: " << height << " X " << width; } int padSize = static_cast(4 - (width * 3) % 4) % 4; @@ -642,7 +642,7 @@ inline std::map getMapFullDevicesNames(InferenceEngine p = ie.GetMetric(deviceName, METRIC_KEY(FULL_DEVICE_NAME)); devicesMap.insert(std::pair(deviceName, p.as())); } - catch (InferenceEngine::details::InferenceEngineException &) { + catch (InferenceEngine::Exception &) { } } } @@ -664,7 +664,7 @@ inline std::string getFullDeviceName(InferenceEngine::Core& ie, std::string devi p = ie.GetMetric(device, METRIC_KEY(FULL_DEVICE_NAME)); return p.as(); } - catch (InferenceEngine::details::InferenceEngineException &) { + catch (InferenceEngine::Exception &) { return ""; } } @@ -1034,7 +1034,7 @@ inline std::size_t getTensorWidth(const InferenceEngine::TensorDesc& desc) { // Regardless of layout, dimensions are stored in fixed order return dims.back(); } else { - THROW_IE_EXCEPTION << "Tensor does not have width dimension"; + IE_THROW() << "Tensor does not have width dimension"; } return 0; } @@ -1057,7 +1057,7 @@ inline std::size_t getTensorHeight(const InferenceEngine::TensorDesc& desc) { // Regardless of layout, dimensions are stored in fixed order return dims.at(size - 2); } else { - THROW_IE_EXCEPTION << "Tensor does not have height dimension"; + IE_THROW() << "Tensor does not have height dimension"; } return 0; } @@ -1083,10 +1083,10 @@ inline std::size_t getTensorChannels(const InferenceEngine::TensorDesc& desc) { case InferenceEngine::Layout::SCALAR: // [[fallthrough]] case InferenceEngine::Layout::BLOCKED: // [[fallthrough]] default: - THROW_IE_EXCEPTION << "Tensor does not have channels dimension"; + IE_THROW() << "Tensor does not have channels dimension"; } } else { - THROW_IE_EXCEPTION << "Tensor does not have channels dimension"; + IE_THROW() << "Tensor does not have channels dimension"; } return 0; } @@ -1110,10 +1110,10 @@ inline std::size_t getTensorBatch(const InferenceEngine::TensorDesc& desc) { case InferenceEngine::Layout::SCALAR: // [[fallthrough]] case InferenceEngine::Layout::BLOCKED: // [[fallthrough]] default: - THROW_IE_EXCEPTION << "Tensor does not have channels dimension"; + IE_THROW() << "Tensor does not have channels dimension"; } } else { - THROW_IE_EXCEPTION << "Tensor does not have channels dimension"; + IE_THROW() << "Tensor does not have channels dimension"; } return 0; } @@ -1129,3 +1129,13 @@ inline void showAvailableDevices() { } std::cout << std::endl; } + +/** +* @brief Parse text config file. The file must have the following format (with space a delimeter): +* CONFIG_NAME1 CONFIG_VALUE1 +* CONFIG_NAME2 CONFIG_VALUE2 +* +* @param configName - filename for a file with config options +* @param comment - lines starting with symbol `comment` are skipped +*/ +std::map parseConfig(const std::string &configName, char comment = '#'); diff --git a/inference-engine/samples/common/samples/console_progress.hpp b/inference-engine/samples/common/utils/include/samples/console_progress.hpp similarity index 98% rename from inference-engine/samples/common/samples/console_progress.hpp rename to inference-engine/samples/common/utils/include/samples/console_progress.hpp index 79b8a4415ca442..500a0165549bf5 100644 --- a/inference-engine/samples/common/samples/console_progress.hpp +++ b/inference-engine/samples/common/utils/include/samples/console_progress.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/samples/csv_dumper.hpp b/inference-engine/samples/common/utils/include/samples/csv_dumper.hpp similarity index 98% rename from inference-engine/samples/common/samples/csv_dumper.hpp rename to inference-engine/samples/common/utils/include/samples/csv_dumper.hpp index 2ae702d27342ba..dbd4001ad25439 100644 --- a/inference-engine/samples/common/samples/csv_dumper.hpp +++ b/inference-engine/samples/common/utils/include/samples/csv_dumper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/samples/ocv_common.hpp b/inference-engine/samples/common/utils/include/samples/ocv_common.hpp similarity index 94% rename from inference-engine/samples/common/samples/ocv_common.hpp rename to inference-engine/samples/common/utils/include/samples/ocv_common.hpp index 6fb4afb366e115..8505c753675fb1 100644 --- a/inference-engine/samples/common/samples/ocv_common.hpp +++ b/inference-engine/samples/common/utils/include/samples/ocv_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,7 @@ void matU8ToBlob(const cv::Mat& orig_image, InferenceEngine::Blob::Ptr& blob, in const size_t channels = blobSize[1]; InferenceEngine::MemoryBlob::Ptr mblob = InferenceEngine::as(blob); if (!mblob) { - THROW_IE_EXCEPTION << "We expect blob to be inherited from MemoryBlob in matU8ToBlob, " + IE_THROW() << "We expect blob to be inherited from MemoryBlob in matU8ToBlob, " << "but by fact we were not able to cast inputBlob to MemoryBlob"; } // locked memory holder should be alive all time while access to its buffer happens @@ -71,7 +71,7 @@ static UNUSED InferenceEngine::Blob::Ptr wrapMat2Blob(const cv::Mat &mat) { strideW == channels && strideH == channels * width; - if (!is_dense) THROW_IE_EXCEPTION + if (!is_dense) IE_THROW() << "Doesn't support conversion from not dense cv::Mat"; InferenceEngine::TensorDesc tDesc(InferenceEngine::Precision::U8, diff --git a/inference-engine/samples/common/os/windows/w_dirent.h b/inference-engine/samples/common/utils/include/samples/os/windows/w_dirent.h similarity index 98% rename from inference-engine/samples/common/os/windows/w_dirent.h rename to inference-engine/samples/common/utils/include/samples/os/windows/w_dirent.h index 928e19058c842b..2be58061ace4ea 100644 --- a/inference-engine/samples/common/os/windows/w_dirent.h +++ b/inference-engine/samples/common/utils/include/samples/os/windows/w_dirent.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/samples/slog.hpp b/inference-engine/samples/common/utils/include/samples/slog.hpp similarity index 97% rename from inference-engine/samples/common/samples/slog.hpp rename to inference-engine/samples/common/utils/include/samples/slog.hpp index 3bd6124b0dc9dc..5bfc75e16da33c 100644 --- a/inference-engine/samples/common/samples/slog.hpp +++ b/inference-engine/samples/common/utils/include/samples/slog.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/vpu/vpu_tools_common.hpp b/inference-engine/samples/common/utils/include/samples/vpu/vpu_tools_common.hpp similarity index 92% rename from inference-engine/samples/common/vpu/vpu_tools_common.hpp rename to inference-engine/samples/common/utils/include/samples/vpu/vpu_tools_common.hpp index 2418cafa180f9f..a260053dc3a39f 100644 --- a/inference-engine/samples/common/vpu/vpu_tools_common.hpp +++ b/inference-engine/samples/common/utils/include/samples/vpu/vpu_tools_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/common/utils/src/args_helper.cpp b/inference-engine/samples/common/utils/src/args_helper.cpp new file mode 100644 index 00000000000000..aa262a11124f61 --- /dev/null +++ b/inference-engine/samples/common/utils/src/args_helper.cpp @@ -0,0 +1,310 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "samples/args_helper.hpp" + +#include +#include +#include + +#include + +#ifdef _WIN32 +#include +#else +#include +#endif + +void readInputFilesArguments(std::vector &files, const std::string& arg) { + struct stat sb; + if (stat(arg.c_str(), &sb) != 0) { + slog::warn << "File " << arg << " cannot be opened!" << slog::endl; + return; + } + if (S_ISDIR(sb.st_mode)) { + struct CloseDir { + void operator()(DIR* d) const noexcept { + if (d) { + closedir(d); + } + } + }; + using Dir = std::unique_ptr; + Dir dp(opendir(arg.c_str())); + if (dp == nullptr) { + slog::warn << "Directory " << arg << " cannot be opened!" << slog::endl; + return; + } + + struct dirent *ep; + while (nullptr != (ep = readdir(dp.get()))) { + std::string fileName = ep->d_name; + if (fileName == "." || fileName == "..") continue; + files.push_back(arg + "/" + ep->d_name); + } + } else { + files.push_back(arg); + } + + if (files.size() < 20) { + slog::info << "Files were added: " << files.size() << slog::endl; + for (const auto& filePath : files) { + slog::info << " " << filePath << slog::endl; + } + } else { + slog::info << "Files were added: " << files.size() << ". Too many to display each of them." << slog::endl; + } +} + +void parseInputFilesArguments(std::vector &files) { + std::vector args = gflags::GetArgvs(); + const auto is_image_arg = [](const std::string& s){ return s == "-i" || s == "--images";}; + const auto is_arg = [](const std::string& s){return s.front() == '-';}; + const auto img_start = std::find_if(begin(args), end(args), is_image_arg); + if (img_start == end(args)) { + return; + } + const auto img_begin = std::next(img_start); + const auto img_end = std::find_if(img_begin, end(args), is_arg); + for (auto img = img_begin; img != img_end; ++img) { + readInputFilesArguments(files, *img); + } +} + +namespace { + +std::vector splitStringList(const std::string& str, char delim) { + if (str.empty()) + return {}; + + std::istringstream istr(str); + + std::vector result; + std::string elem; + while (std::getline(istr, elem, delim)) { + if (elem.empty()) { + continue; + } + result.emplace_back(std::move(elem)); + } + + return result; +} + +std::map parseArgMap(std::string argMap) { + argMap.erase(std::remove_if(argMap.begin(), argMap.end(), ::isspace), argMap.end()); + + const auto pairs = splitStringList(argMap, ','); + + std::map parsedMap; + for (auto&& pair : pairs) { + const auto keyValue = splitStringList(pair, ':'); + if (keyValue.size() != 2) { + throw std::invalid_argument("Invalid key/value pair " + pair + ". Expected :"); + } + + parsedMap[keyValue[0]] = keyValue[1]; + } + + return parsedMap; +} + + +using supported_precisions_t = std::unordered_map; + +InferenceEngine::Precision getPrecision(std::string value, + const supported_precisions_t& supported_precisions) { + std::transform(value.begin(), value.end(), value.begin(), ::toupper); + + const auto precision = supported_precisions.find(value); + if (precision == supported_precisions.end()) { + throw std::logic_error("\"" + value + "\"" + " is not a valid precision"); + } + + return precision->second; +} + +InferenceEngine::Precision getPrecision(const std::string& value) { + static const supported_precisions_t supported_precisions = { + { "FP32", InferenceEngine::Precision::FP32 }, + { "FP16", InferenceEngine::Precision::FP16 }, + { "BF16", InferenceEngine::Precision::BF16 }, + { "U64", InferenceEngine::Precision::U64 }, + { "I64", InferenceEngine::Precision::I64 }, + { "U32", InferenceEngine::Precision::U32 }, + { "I32", InferenceEngine::Precision::I32 }, + { "U16", InferenceEngine::Precision::U16 }, + { "I16", InferenceEngine::Precision::I16 }, + { "U8", InferenceEngine::Precision::U8 }, + { "I8", InferenceEngine::Precision::I8 }, + { "BOOL", InferenceEngine::Precision::BOOL }, + }; + + return getPrecision(value, supported_precisions); +} + +void setPrecisions(const InferenceEngine::CNNNetwork& network, const std::string &iop) { + const auto user_precisions_map = parseArgMap(iop); + + auto inputs = network.getInputsInfo(); + auto outputs = network.getOutputsInfo(); + + for (auto&& item : user_precisions_map) { + const auto& layer_name = item.first; + const auto& user_precision = item.second; + + const auto input = inputs.find(layer_name); + const auto output = outputs.find(layer_name); + + if (input != inputs.end()) { + input->second->setPrecision(getPrecision(user_precision)); + } else if (output != outputs.end()) { + output->second->setPrecision(getPrecision(user_precision)); + } else { + throw std::logic_error(layer_name + " is not an input neither output"); + } + } +} + +} // namespace + +void processPrecision(InferenceEngine::CNNNetwork& network, const std::string &ip, const std::string &op, + const std::string &iop) { + if (!ip.empty()) { + const auto user_precision = getPrecision(ip); + for (auto&& layer : network.getInputsInfo()) { + layer.second->setPrecision(user_precision); + } + } + + if (!op.empty()) { + auto user_precision = getPrecision(op); + for (auto&& layer : network.getOutputsInfo()) { + layer.second->setPrecision(user_precision); + } + } + + if (!iop.empty()) { + setPrecisions(network, iop); + } +} + +namespace { + +using supported_layouts_t = std::unordered_map; +using matchLayoutToDims_t = std::unordered_map; + +InferenceEngine::Layout getLayout(std::string value, + const supported_layouts_t& supported_layouts) { + std::transform(value.begin(), value.end(), value.begin(), ::toupper); + + const auto layout = supported_layouts.find(value); + if (layout == supported_layouts.end()) { + throw std::logic_error("\"" + value + "\"" + " is not a valid layout"); + } + + return layout->second; +} + +InferenceEngine::Layout getLayout(const std::string& value) { + static const supported_layouts_t supported_layouts = { + { "NCDHW", InferenceEngine::Layout::NCDHW }, + { "NDHWC", InferenceEngine::Layout::NDHWC }, + { "NCHW", InferenceEngine::Layout::NCHW }, + { "NHWC", InferenceEngine::Layout::NHWC }, + { "CHW", InferenceEngine::Layout::CHW }, + { "HWC", InferenceEngine::Layout::HWC}, + { "NC", InferenceEngine::Layout::NC }, + { "C", InferenceEngine::Layout::C }, + }; + + return getLayout(value, supported_layouts); +} + +bool isMatchLayoutToDims(InferenceEngine::Layout layout, size_t dimension) { + static const matchLayoutToDims_t matchLayoutToDims = { + {static_cast(InferenceEngine::Layout::NCDHW), 5 }, + {static_cast(InferenceEngine::Layout::NDHWC), 5 }, + {static_cast(InferenceEngine::Layout::NCHW), 4 }, + {static_cast(InferenceEngine::Layout::NHWC), 4 }, + {static_cast(InferenceEngine::Layout::CHW), 3 }, + {static_cast(InferenceEngine::Layout::NC), 2 }, + {static_cast(InferenceEngine::Layout::C), 1 } + }; + + const auto dims = matchLayoutToDims.find(static_cast(layout)); + if (dims == matchLayoutToDims.end()) { + throw std::logic_error("Layout is not valid."); + } + + return dimension == dims->second; +} + +void setLayouts(const InferenceEngine::CNNNetwork& network, const std::string iol) { + const auto user_layouts_map = parseArgMap(iol); + + auto inputs = network.getInputsInfo(); + auto outputs = network.getOutputsInfo(); + + for (auto&& item : user_layouts_map) { + const auto& layer_name = item.first; + const auto& user_layout = getLayout(item.second); + + const auto input = inputs.find(layer_name); + const auto output = outputs.find(layer_name); + + if (input != inputs.end()) { + if (!isMatchLayoutToDims(user_layout, input->second->getTensorDesc().getDims().size())) { + throw std::logic_error(item.second + " layout is not applicable to " + layer_name); + } + + input->second->setLayout(user_layout); + } else if (output != outputs.end()) { + if (!isMatchLayoutToDims(user_layout, output->second->getTensorDesc().getDims().size())) { + throw std::logic_error(item.second + " layout is not applicable to " + layer_name); + } + + output->second->setLayout(user_layout); + } else { + throw std::logic_error(layer_name + " is not an input neither output"); + } + } +} + +} // namespace + +void processLayout(InferenceEngine::CNNNetwork& network, const std::string& il, const std::string& ol, const std::string& iol) { + if (!il.empty()) { + const auto layout = getLayout(il); + for (auto&& layer : network.getInputsInfo()) { + if (isMatchLayoutToDims(layout, layer.second->getTensorDesc().getDims().size())) { + layer.second->setLayout(layout); + } + } + } + + if (!ol.empty()) { + const auto layout = getLayout(ol); + for (auto&& layer : network.getOutputsInfo()) { + if (isMatchLayoutToDims(layout, layer.second->getTensorDesc().getDims().size())) { + layer.second->setLayout(layout); + } + } + } + + if (!iol.empty()) { + setLayouts(network, iol); + } +} + +void printInputAndOutputsInfo(const InferenceEngine::CNNNetwork& network) { + std::cout << "Network inputs:" << std::endl; + for (auto&& layer : network.getInputsInfo()) { + std::cout << " " << layer.first << " : " << layer.second->getPrecision() << " / " << layer.second->getLayout() << std::endl; + } + std::cout << "Network outputs:" << std::endl; + for (auto&& layer : network.getOutputsInfo()) { + std::cout << " " << layer.first << " : " << layer.second->getPrecision() << " / " << layer.second->getLayout() << std::endl; + } +} diff --git a/inference-engine/samples/common/utils/src/common.cpp b/inference-engine/samples/common/utils/src/common.cpp new file mode 100644 index 00000000000000..e434c53a4609b7 --- /dev/null +++ b/inference-engine/samples/common/utils/src/common.cpp @@ -0,0 +1,24 @@ +// Copyright (C) Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "samples/common.hpp" + +std::map parseConfig(const std::string &configName, char comment) { + std::map config = {}; + + std::ifstream file(configName); + if (!file.is_open()) { + return config; + } + + std::string key, value; + while (file >> key >> value) { + if (key.empty() || key[0] == comment) { + continue; + } + config[key] = value; + } + + return config; +} diff --git a/inference-engine/samples/hello_classification/CMakeLists.txt b/inference-engine/samples/hello_classification/CMakeLists.txt index 303f54bb8b1363..bf6b0389a1eb46 100644 --- a/inference-engine/samples/hello_classification/CMakeLists.txt +++ b/inference-engine/samples/hello_classification/CMakeLists.txt @@ -1,7 +1,9 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # ie_add_sample(NAME hello_classification SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" - OPENCV_DEPENDENCIES imgcodecs) + DEPENDENCIES ie_samples_utils frontend_manager + OPENCV_DEPENDENCIES core imgcodecs) + diff --git a/inference-engine/samples/hello_classification/main.cpp b/inference-engine/samples/hello_classification/main.cpp index 11be6821db6588..74cfd1e58489e5 100644 --- a/inference-engine/samples/hello_classification/main.cpp +++ b/inference-engine/samples/hello_classification/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,6 +11,8 @@ #include #include #include +#include + using namespace InferenceEngine; @@ -88,7 +90,14 @@ int main(int argc, char *argv[]) { // 2. Read a model in OpenVINO Intermediate Representation (.xml and .bin files) or ONNX (.onnx file) format CNNNetwork network = ie.ReadNetwork(input_model); - if (network.getOutputsInfo().size() != 1) throw std::logic_error("Sample supports topologies with 1 output only"); +// ngraph::frontend::FrontEndManager manager; +// auto FE = manager.loadByFramework("pdpd"); +// auto inputModel = FE->loadFromFile(input_model); +// //inputModel->setPartialShape(inputModel->getInputs()[0], ngraph::PartialShape({1, 224, 224, 3})); +// auto ngFunc = FE->convert(inputModel); +// CNNNetwork network(ngFunc); + + //if (network.getOutputsInfo().size() != 1) throw std::logic_error("Sample supports topologies with 1 output only"); if (network.getInputsInfo().size() != 1) throw std::logic_error("Sample supports topologies with 1 input only"); // ----------------------------------------------------------------------------------------------------- @@ -105,10 +114,14 @@ int main(int argc, char *argv[]) { input_info->setPrecision(Precision::U8); // --------------------------- Prepare output blobs ---------------------------------------------------- - DataPtr output_info = network.getOutputsInfo().begin()->second; - std::string output_name = network.getOutputsInfo().begin()->first; + std::vector output_info; + std::vector output_name; + for (auto &out : network.getOutputsInfo()) { + out.second->setPrecision(Precision::FP32); + output_info.push_back(out.second); + output_name.push_back(out.first); + } - output_info->setPrecision(Precision::FP32); // ----------------------------------------------------------------------------------------------------- // --------------------------- 4. Loading model to the device ------------------------------------------ @@ -132,10 +145,12 @@ int main(int argc, char *argv[]) { // ----------------------------------------------------------------------------------------------------- // --------------------------- 8. Process output ------------------------------------------------------ - Blob::Ptr output = infer_request.GetBlob(output_name); - // Print classification results - ClassificationResult_t classificationResult(output, {input_image_path}); - classificationResult.print(); + for (auto name : output_name) { + Blob::Ptr output = infer_request.GetBlob(name); + // Print classification results + ClassificationResult_t classificationResult(output, {input_image_path}); + classificationResult.print(); + } // ----------------------------------------------------------------------------------------------------- } catch (const std::exception & ex) { std::cerr << ex.what() << std::endl; diff --git a/inference-engine/samples/hello_nv12_input_classification/CMakeLists.txt b/inference-engine/samples/hello_nv12_input_classification/CMakeLists.txt index 287797ae420301..82b782d0493cc0 100644 --- a/inference-engine/samples/hello_nv12_input_classification/CMakeLists.txt +++ b/inference-engine/samples/hello_nv12_input_classification/CMakeLists.txt @@ -1,6 +1,7 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # ie_add_sample(NAME hello_nv12_input_classification - SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp") + SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" + DEPENDENCIES ie_samples_utils) diff --git a/inference-engine/samples/hello_nv12_input_classification/main.cpp b/inference-engine/samples/hello_nv12_input_classification/main.cpp index 5276d5618af9e8..6d95e8baddac4f 100644 --- a/inference-engine/samples/hello_nv12_input_classification/main.cpp +++ b/inference-engine/samples/hello_nv12_input_classification/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ #include #ifdef _WIN32 -#include +#include #else #include #endif diff --git a/inference-engine/samples/hello_query_device/CMakeLists.txt b/inference-engine/samples/hello_query_device/CMakeLists.txt index eafbd30b082c68..508e7357cd79dc 100644 --- a/inference-engine/samples/hello_query_device/CMakeLists.txt +++ b/inference-engine/samples/hello_query_device/CMakeLists.txt @@ -1,6 +1,7 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # ie_add_sample(NAME hello_query_device - SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp") + SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" + DEPENDENCIES ie_samples_utils) diff --git a/inference-engine/samples/hello_query_device/main.cpp b/inference-engine/samples/hello_query_device/main.cpp index ab8c8b5f8bba62..98fe85c2cc82b1 100644 --- a/inference-engine/samples/hello_query_device/main.cpp +++ b/inference-engine/samples/hello_query_device/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,9 @@ std::ostream & operator << (std::ostream & stream, const std::vector & v) { } void printParameterValue(const Parameter & value) { - if (value.is()) { + if (value.empty()) { + std::cout << "EMPTY VALUE" << std::endl; + } else if (value.is()) { std::cout << std::boolalpha << value.as() << std::noboolalpha << std::endl; } else if (value.is()) { std::cout << value.as() << std::endl; @@ -112,7 +114,7 @@ int main(int argc, char *argv[]) { std::cout << std::endl; } } catch (const std::exception & ex) { - std::cerr << ex.what() << std::endl; + std::cerr << std::endl << "Exception occurred: " << ex.what() << std::endl << std::flush; return EXIT_FAILURE; } return EXIT_SUCCESS; diff --git a/inference-engine/samples/hello_reshape_ssd/CMakeLists.txt b/inference-engine/samples/hello_reshape_ssd/CMakeLists.txt index f87718c7d5a085..5c47b6e2fe83fd 100644 --- a/inference-engine/samples/hello_reshape_ssd/CMakeLists.txt +++ b/inference-engine/samples/hello_reshape_ssd/CMakeLists.txt @@ -1,21 +1,12 @@ -# Copyright (C) 2018-2020 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# ie_add_sample(NAME hello_reshape_ssd SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/reshape_ssd_extension.hpp" - OPENCV_DEPENDENCIES imgcodecs) + DEPENDENCIES ie_samples_utils + OPENCV_DEPENDENCIES core imgproc imgcodecs) find_package(ngraph REQUIRED) target_link_libraries(hello_reshape_ssd PRIVATE ${NGRAPH_LIBRARIES}) diff --git a/inference-engine/samples/hello_reshape_ssd/main.cpp b/inference-engine/samples/hello_reshape_ssd/main.cpp index a2551dce384af3..17fa76655f6f80 100644 --- a/inference-engine/samples/hello_reshape_ssd/main.cpp +++ b/inference-engine/samples/hello_reshape_ssd/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -95,7 +95,7 @@ int main(int argc, char* argv[]) { throw std::logic_error("Incorrect output dimensions for SSD model"); } if (output_info == nullptr) { - THROW_IE_EXCEPTION << "[SAMPLES] internal error - output information is empty"; + IE_THROW() << "[SAMPLES] internal error - output information is empty"; } output_info->setPrecision(Precision::FP32); diff --git a/inference-engine/samples/hello_reshape_ssd/reshape_ssd_extension.hpp b/inference-engine/samples/hello_reshape_ssd/reshape_ssd_extension.hpp index 699824d6112653..391730ac3c3829 100644 --- a/inference-engine/samples/hello_reshape_ssd/reshape_ssd_extension.hpp +++ b/inference-engine/samples/hello_reshape_ssd/reshape_ssd_extension.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -131,8 +131,6 @@ class InPlaceExtension : public InferenceEngine::IExtension { void Unload() noexcept override {} - void Release() noexcept override {} - std::vector getImplTypes(const std::shared_ptr& node) override { if (impls.find(node->description()) == impls.end()) return {}; diff --git a/inference-engine/samples/ngraph_function_creation_sample/CMakeLists.txt b/inference-engine/samples/ngraph_function_creation_sample/CMakeLists.txt index 3f63e9d1848c95..cae02806b5f432 100644 --- a/inference-engine/samples/ngraph_function_creation_sample/CMakeLists.txt +++ b/inference-engine/samples/ngraph_function_creation_sample/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -10,7 +10,7 @@ file (GLOB MAIN_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) ie_add_sample(NAME ngraph_function_creation_sample SOURCES ${MAIN_SRC} HEADERS ${MAIN_HEADERS} - DEPENDENCIES format_reader) + DEPENDENCIES format_reader ie_samples_utils) find_package(ngraph REQUIRED) target_link_libraries(${TARGET_NAME} PRIVATE ${NGRAPH_LIBRARIES}) diff --git a/inference-engine/samples/ngraph_function_creation_sample/main.cpp b/inference-engine/samples/ngraph_function_creation_sample/main.cpp index cb067e5b11e910..1d4164f09e4fc8 100644 --- a/inference-engine/samples/ngraph_function_creation_sample/main.cpp +++ b/inference-engine/samples/ngraph_function_creation_sample/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -85,7 +85,7 @@ std::shared_ptr createNgraphFunction() { TBlob::CPtr weightsPtr = ReadWeights(FLAGS_m); if (weightsPtr->byteSize() != 1724336) - THROW_IE_EXCEPTION << "Incorrect weights file"; + IE_THROW() << "Incorrect weights file"; // -------input------ std::vector padBegin{ 0, 0 }; diff --git a/inference-engine/samples/ngraph_function_creation_sample/ngraph_function_creation_sample.hpp b/inference-engine/samples/ngraph_function_creation_sample/ngraph_function_creation_sample.hpp index da20c59c7e97ed..dccb19f924f0f1 100644 --- a/inference-engine/samples/ngraph_function_creation_sample/ngraph_function_creation_sample.hpp +++ b/inference-engine/samples/ngraph_function_creation_sample/ngraph_function_creation_sample.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/object_detection_sample_ssd/CMakeLists.txt b/inference-engine/samples/object_detection_sample_ssd/CMakeLists.txt index 5eec67b4abab3d..46dbb6bfe23c7e 100644 --- a/inference-engine/samples/object_detection_sample_ssd/CMakeLists.txt +++ b/inference-engine/samples/object_detection_sample_ssd/CMakeLists.txt @@ -1,11 +1,11 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # ie_add_sample(NAME object_detection_sample_ssd SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/object_detection_sample_ssd.h" - DEPENDENCIES format_reader) + DEPENDENCIES format_reader ie_samples_utils) find_package(ngraph REQUIRED) target_link_libraries(object_detection_sample_ssd PRIVATE ${NGRAPH_LIBRARIES}) diff --git a/inference-engine/samples/object_detection_sample_ssd/main.cpp b/inference-engine/samples/object_detection_sample_ssd/main.cpp index 233caa7f881e84..86cf69a922efc8 100644 --- a/inference-engine/samples/object_detection_sample_ssd/main.cpp +++ b/inference-engine/samples/object_detection_sample_ssd/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,6 @@ #include #include -#include #include #include "object_detection_sample_ssd.h" @@ -87,7 +86,7 @@ int main(int argc, char *argv[]) { if (!FLAGS_l.empty()) { // CPU(MKLDNN) extensions are loaded as a shared library and passed as a pointer to base extension - IExtensionPtr extension_ptr = make_so_pointer(FLAGS_l); + IExtensionPtr extension_ptr = std::make_shared(FLAGS_l); ie.AddExtension(extension_ptr); slog::info << "CPU Extension loaded: " << FLAGS_l << slog::endl; } diff --git a/inference-engine/samples/object_detection_sample_ssd/object_detection_sample_ssd.h b/inference-engine/samples/object_detection_sample_ssd/object_detection_sample_ssd.h index e0f0200b50bad4..dd09fbdcb12eca 100644 --- a/inference-engine/samples/object_detection_sample_ssd/object_detection_sample_ssd.h +++ b/inference-engine/samples/object_detection_sample_ssd/object_detection_sample_ssd.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/samples/speech_libs_and_demos/Speech_libs_and_demos.md b/inference-engine/samples/speech_libs_and_demos/Speech_libs_and_demos.md index 3bb4b34bbdf00e..212ffb26f19fba 100644 --- a/inference-engine/samples/speech_libs_and_demos/Speech_libs_and_demos.md +++ b/inference-engine/samples/speech_libs_and_demos/Speech_libs_and_demos.md @@ -32,7 +32,7 @@ The package contains the following components: * [Kaldi Statistical Language Model Conversion Tool](Kaldi_SLM_conversion_tool.md), which converts custom language models to use in the decoder -Additionally, [new acoustic and language models](http://download.01.org/opencv/2020/openvinotoolkit/2020.1/models_contrib/speech/kaldi/librispeech_s5/) to be used by new demos are located at [download.01.org](https://01.org/). +Additionally, new acoustic and language models are available in the OpenVINO™ [storage](https://storage.openvinotoolkit.org/models_contrib/speech/2021.2/librispeech_s5/). ## Run Speech Recognition Demos with Pretrained Models diff --git a/inference-engine/samples/speech_sample/CMakeLists.txt b/inference-engine/samples/speech_sample/CMakeLists.txt index 400d628606572d..5a705a34fa766f 100644 --- a/inference-engine/samples/speech_sample/CMakeLists.txt +++ b/inference-engine/samples/speech_sample/CMakeLists.txt @@ -1,7 +1,8 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # ie_add_sample(NAME speech_sample SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" - HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/speech_sample.hpp") + HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/speech_sample.hpp" + DEPENDENCIES ie_samples_utils) diff --git a/inference-engine/samples/speech_sample/README.md b/inference-engine/samples/speech_sample/README.md index 7095d7dae2a16f..5c8dcadf0063e2 100644 --- a/inference-engine/samples/speech_sample/README.md +++ b/inference-engine/samples/speech_sample/README.md @@ -109,6 +109,10 @@ Options: If you use the cw_l or cw_r flag, then batch size and nthreads arguments are ignored. -cw_r "" Optional. Number of frames for right context windows (default is 0). Works only with context window networks. If you use the cw_r or cw_l flag, then batch size and nthreads arguments are ignored. + -oname "" Optional. Layer names for output blobs. The names are separated with ",". Allows to change the order of output layers for -o flag. + Example: Output1:port,Output2:port. + -iname "" Optional. Layer names for input blobs. The names are separated with ",". Allows to change the order of input layers for -i flag. + Example: Input1,Input2 ``` @@ -136,7 +140,7 @@ The following pre-trained models are available: * rm\_lstm4f * rm\_cnn4a\_smbr -All of them can be downloaded from [https://download.01.org/openvinotoolkit/models_contrib/speech/kaldi](https://download.01.org/openvinotoolkit/models_contrib/speech/kaldi) or using the OpenVINO [Model Downloader](@ref omz_tools_downloader_README) . +All of them can be downloaded from [https://storage.openvinotoolkit.org/models_contrib/speech/2021.2/](https://storage.openvinotoolkit.org/models_contrib/speech/2021.2/) or using the OpenVINO [Model Downloader](@ref omz_tools_downloader_README) . ### Speech Inference diff --git a/inference-engine/samples/speech_sample/main.cpp b/inference-engine/samples/speech_sample/main.cpp index dced4a7f9abbaa..11a90ad09700c3 100644 --- a/inference-engine/samples/speech_sample/main.cpp +++ b/inference-engine/samples/speech_sample/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -519,6 +519,10 @@ bool ParseAndCheckCommandLine(int argc, char *argv[]) { throw std::logic_error("Invalid value for 'cw_l' argument. It must be greater than or equal to 0"); } + if (FLAGS_pwl_me < 0.0 || FLAGS_pwl_me > 100.0) { + throw std::logic_error("Invalid value for 'pwl_me' argument. It must be greater than 0.0 and less than 100.0"); + } + return true; } @@ -671,6 +675,7 @@ int main(int argc, char *argv[]) { gnaPluginConfig[GNAConfigParams::KEY_GNA_LIB_N_THREADS] = std::to_string((FLAGS_cw_r > 0 || FLAGS_cw_l > 0) ? 1 : FLAGS_nthreads); gnaPluginConfig[GNA_CONFIG_KEY(COMPACT_MODE)] = CONFIG_VALUE(NO); + gnaPluginConfig[GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT)] = std::to_string(FLAGS_pwl_me); // ----------------------------------------------------------------------------------------------------- // --------------------------- 5. Write model to file -------------------------------------------------- @@ -982,7 +987,7 @@ int main(int argc, char *argv[]) { // locked memory holder should be alive all time while access to its buffer happens auto moutputHolder = moutput->rmap(); auto byteSize = - inferRequest.numFramesThisBatch * numScoresPerFrame * sizeof(float); + numScoresPerFrame * sizeof(float); std::memcpy(outputFrame, moutputHolder.as(), byteSize); @@ -1024,24 +1029,37 @@ int main(int argc, char *argv[]) { continue; } + ptrInputBlobs.clear(); if (FLAGS_iname.empty()) { - size_t num_files = FLAGS_iname.empty() ? numInputArkFiles : ptrInputBlobs.size(); - for (size_t i = 0; i < num_files; ++i) { - MemoryBlob::Ptr minput = as(ptrInputBlobs[i]); - if (!minput) { - slog::err << "We expect ptrInputBlobs[" << i - << "] to be inherited from MemoryBlob, " << - "but in fact we were not able to cast input blob to MemoryBlob" - << slog::endl; - return 1; + for (auto &input : cInputInfo) { + ptrInputBlobs.push_back(inferRequest.inferRequest.GetBlob(input.first)); + } + } else { + std::vector inputNameBlobs = ParseBlobName(FLAGS_iname); + for (const auto& input : inputNameBlobs) { + Blob::Ptr blob = inferRequests.begin()->inferRequest.GetBlob(input); + if (!blob) { + std::string errMessage("No blob with name : " + input); + throw std::logic_error(errMessage); } - // locked memory holder should be alive all time while access to its buffer happens - auto minputHolder = minput->wmap(); + ptrInputBlobs.push_back(blob); + } + } - std::memcpy(minputHolder.as(), - inputFrame[i], - minput->byteSize()); + for (size_t i = 0; i < numInputArkFiles; ++i) { + MemoryBlob::Ptr minput = as(ptrInputBlobs[i]); + if (!minput) { + std::string errMessage("We expect ptrInputBlobs[" + std::to_string(i) + + "] to be inherited from MemoryBlob, " + + "but in fact we were not able to cast input blob to MemoryBlob"); + throw std::logic_error(errMessage); } + // locked memory holder should be alive all time while access to its buffer happens + auto minputHolder = minput->wmap(); + + std::memcpy(minputHolder.as(), + inputFrame[i], + minput->byteSize()); } int index = static_cast(frameIndex) - (FLAGS_cw_l + FLAGS_cw_r); diff --git a/inference-engine/samples/speech_sample/speech_sample.hpp b/inference-engine/samples/speech_sample/speech_sample.hpp index 5fc905ae689ec8..2f1a074c302127 100644 --- a/inference-engine/samples/speech_sample/speech_sample.hpp +++ b/inference-engine/samples/speech_sample/speech_sample.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -91,6 +91,10 @@ static const char input_layer_names_message[] = "Optional. Layer names for input "The names are separated with \",\" " \ "Example: Input1,Input2 "; +/// @brief message for PWL max error percent +static const char pwl_max_error_percent_message[] = "Optional. The maximum percent of error for PWL function." \ + "The value must be in <0, 100> range. The default value is 1.0."; + /// \brief Define flag for showing help message
DEFINE_bool(h, false, help_message); @@ -161,6 +165,9 @@ DEFINE_string(oname, "", output_layer_names_message); /// @brief Input layer name DEFINE_string(iname, "", input_layer_names_message); +/// @brief PWL max error percent +DEFINE_double(pwl_me, 1.0, pwl_max_error_percent_message); + /** * \brief This function show a help message */ @@ -191,5 +198,6 @@ static void showUsage() { std::cout << " -cw_r \"\" " << context_window_message_r << std::endl; std::cout << " -oname \"\" " << output_layer_names_message << std::endl; std::cout << " -iname \"\" " << input_layer_names_message << std::endl; + std::cout << " -pwl_me \"\" " << pwl_max_error_percent_message << std::endl; } diff --git a/inference-engine/samples/style_transfer_sample/CMakeLists.txt b/inference-engine/samples/style_transfer_sample/CMakeLists.txt index d73e8f9e35d387..991ca1e81424f1 100644 --- a/inference-engine/samples/style_transfer_sample/CMakeLists.txt +++ b/inference-engine/samples/style_transfer_sample/CMakeLists.txt @@ -1,8 +1,8 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # ie_add_sample(NAME style_transfer_sample SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/style_transfer_sample.h" - DEPENDENCIES format_reader) + DEPENDENCIES format_reader ie_samples_utils) diff --git a/inference-engine/samples/style_transfer_sample/main.cpp b/inference-engine/samples/style_transfer_sample/main.cpp index 6a036a9191a254..47b397c1114205 100644 --- a/inference-engine/samples/style_transfer_sample/main.cpp +++ b/inference-engine/samples/style_transfer_sample/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -70,7 +70,7 @@ int main(int argc, char *argv[]) { if (!FLAGS_l.empty()) { // CPU(MKLDNN) extensions are loaded as a shared library and passed as a pointer to base extension - IExtensionPtr extension_ptr = make_so_pointer(FLAGS_l); + IExtensionPtr extension_ptr = std::make_shared(FLAGS_l); ie.AddExtension(extension_ptr); slog::info << "CPU Extension loaded: " << FLAGS_l << slog::endl; } diff --git a/inference-engine/samples/style_transfer_sample/style_transfer_sample.h b/inference-engine/samples/style_transfer_sample/style_transfer_sample.h index 853aa7c953cdb8..53c42bf3cbe1bc 100644 --- a/inference-engine/samples/style_transfer_sample/style_transfer_sample.h +++ b/inference-engine/samples/style_transfer_sample/style_transfer_sample.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/scripts/create_vs2017_proj_x64.cmd b/inference-engine/scripts/create_vs2017_proj_x64.cmd deleted file mode 100644 index ff91c5945a59cf..00000000000000 --- a/inference-engine/scripts/create_vs2017_proj_x64.cmd +++ /dev/null @@ -1,31 +0,0 @@ -@echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: SPDX-License-Identifier: Apache-2.0 - -pushd ..\.. -if not exist "vs2017x64" ( - mkdir "vs2017x64" -) - -cmake -E chdir "vs2017x64" cmake -G "Visual Studio 15 2017 Win64" -T "Intel C++ Compiler 18.0" -DOS_FOLDER=ON ^ - -DENABLE_MYRIAD=OFF -DENABLE_VPU=OFF -DENABLE_GNA=ON -DENABLE_CLDNN=OFF ^ - -DENABLE_OPENCV=ON -DENABLE_MKL_DNN=ON ^ - -DVERBOSE_BUILD=ON -DENABLE_TESTS=ON -DTHREADING=TBB .. - - -chdir -cd "vs2017x64\thirdparty\" -"C:\Program Files (x86)\Common Files\Intel\shared files\ia32\Bin\ICProjConvert180.exe" mkldnn.vcxproj /IC - -chdir -cd "..\src\mkldnn_plugin" -"C:\Program Files (x86)\Common Files\Intel\shared files\ia32\Bin\ICProjConvert180.exe" MKLDNNPlugin.vcxproj /IC -"C:\Program Files (x86)\Common Files\Intel\shared files\ia32\Bin\ICProjConvert180.exe" test_MKLDNNPlugin.vcxproj /IC - -chdir -cd "..\..\tests\unit" -"C:\Program Files (x86)\Common Files\Intel\shared files\ia32\Bin\ICProjConvert180.exe" InferenceEngineUnitTests.vcxproj /IC - - -popd -pause diff --git a/inference-engine/scripts/dependencies.bat b/inference-engine/scripts/dependencies.bat index ee002202bfe677..aa7528527c8738 100644 --- a/inference-engine/scripts/dependencies.bat +++ b/inference-engine/scripts/dependencies.bat @@ -1,5 +1,6 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation + +:: Copyright (C) 2018-2021 Intel Corporation :: SPDX-License-Identifier: Apache-2.0 setlocal enabledelayedexpansion diff --git a/inference-engine/scripts/dependencies.sh b/inference-engine/scripts/dependencies.sh index f0228b898d5c53..640ed7e9947187 100755 --- a/inference-engine/scripts/dependencies.sh +++ b/inference-engine/scripts/dependencies.sh @@ -1,5 +1,6 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 if [ "$1" = "" ]; then diff --git a/inference-engine/scripts/run_tests_myriad_multistick.sh b/inference-engine/scripts/run_tests_myriad_multistick.sh index 74cf6d94bd6dd2..468817c6f75109 100755 --- a/inference-engine/scripts/run_tests_myriad_multistick.sh +++ b/inference-engine/scripts/run_tests_myriad_multistick.sh @@ -1,5 +1,6 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 APP_NAME="MyriadFunctionalTests" diff --git a/inference-engine/src/CMakeLists.txt b/inference-engine/src/CMakeLists.txt index 63d85a820c288d..bfd718f556042d 100644 --- a/inference-engine/src/CMakeLists.txt +++ b/inference-engine/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -40,14 +40,16 @@ add_subdirectory(low_precision_transformations) add_subdirectory(offline_transformations) +add_subdirectory(snippets) + # add a custom target to build all Inference Engine Core libraries add_custom_target(ie_libraries ALL DEPENDS inference_engine_transformations inference_engine_legacy inference_engine inference_engine_preproc inference_engine_ir_v7_reader inference_engine_ir_reader - inference_engine_lp_transformations) + inference_engine_lp_transformations inference_engine_snippets) if(NGRAPH_ONNX_IMPORT_ENABLE) - add_dependencies(ie_libraries inference_engine_onnx_reader) + add_dependencies(ie_libraries inference_engine_onnx_reader frontend_manager) endif() diff --git a/inference-engine/src/cldnn_engine/CMakeLists.txt b/inference-engine/src/cldnn_engine/CMakeLists.txt index 3a3fb83f8e8a53..1ba2bc9e98e277 100644 --- a/inference-engine/src/cldnn_engine/CMakeLists.txt +++ b/inference-engine/src/cldnn_engine/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -28,15 +28,20 @@ target_link_libraries(${TARGET_NAME} PRIVATE clDNN_lib pugixml inference_engine_lp_transformations ${NGRAPH_LIBRARIES}) +add_cpplint_target(clDNN_lib_cpplint FOR_TARGETS clDNN_lib) +add_cpplint_target(cldnn_kernel_selector_cpplint FOR_TARGETS cldnn_kernel_selector) + set(CLDNN_TOP_FOLDER "${IE_MAIN_SOURCE_DIR}/thirdparty/clDNN") target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} $ - ${CLDNN__IOCL_ICD_INCDIRS} + ${CLDNN__OCL_ICD_INCDIRS} ${CLDNN_TOP_FOLDER}) set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) + +set_ie_threading_interface_for(clDNN_lib) # Failed because of OpenCL # ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME}) diff --git a/inference-engine/src/cldnn_engine/cldnn_async_infer_request.cpp b/inference-engine/src/cldnn_engine/cldnn_async_infer_request.cpp index 1d20e1df40b613..9f9f4dd61ea56e 100644 --- a/inference-engine/src/cldnn_engine/cldnn_async_infer_request.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_async_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/cldnn_async_infer_request.h b/inference-engine/src/cldnn_engine/cldnn_async_infer_request.h index 0c960bc2712a25..ce97695cf11503 100644 --- a/inference-engine/src/cldnn_engine/cldnn_async_infer_request.h +++ b/inference-engine/src/cldnn_engine/cldnn_async_infer_request.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/cldnn_common_utils.h b/inference-engine/src/cldnn_engine/cldnn_common_utils.h index 5405674f59fbb5..cdf6b9d285b2eb 100644 --- a/inference-engine/src/cldnn_engine/cldnn_common_utils.h +++ b/inference-engine/src/cldnn_engine/cldnn_common_utils.h @@ -1,11 +1,10 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once #include -#include
#include #include @@ -24,7 +23,7 @@ const auto CldnnTensorFromIEDims = [](const InferenceEngine::SizeVector& dims, i case 4: return cldnn::tensor(cldnn::batch(dims[0]), cldnn::feature(dims[1]), cldnn::spatial(dims[3], dims[2])); case 5: return cldnn::tensor(cldnn::batch(dims[0]), cldnn::feature(dims[1]), cldnn::spatial(dims[4], dims[3], dims[2])); case 6: return cldnn::tensor(cldnn::batch(dims[0]), cldnn::feature(dims[1]), cldnn::spatial(dims[5], dims[4], dims[3], dims[2])); - default: THROW_IE_EXCEPTION << "Invalid dimensions size(" << dims.size() << ") for clDNN tensor"; + default: IE_THROW() << "Invalid dimensions size(" << dims.size() << ") for clDNN tensor"; } }; @@ -49,7 +48,8 @@ inline cldnn::data_types DataTypeFromPrecision(InferenceEngine::Precision p) { case InferenceEngine::Precision::BOOL: return cldnn::data_types::i8; default: - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "The plugin does not support " << p.name() << " precision"; + IE_THROW(ParameterMismatch) + << "The plugin does not support " << p.name() << " precision"; } } @@ -74,7 +74,8 @@ inline cldnn::data_types DataTypeFromPrecision(ngraph::element::Type t) { case ngraph::element::Type_t::u1: return cldnn::data_types::bin; default: - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "The plugin does not support " << t.get_type_name()<< " precision"; + IE_THROW(ParameterMismatch) + << "The plugin does not support " << t.get_type_name()<< " precision"; } } @@ -94,7 +95,7 @@ inline cldnn::format FormatFromLayout(InferenceEngine::Layout l) { case InferenceEngine::Layout::NHWC: return cldnn::format::byxf; default: - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "The plugin does not support " << l << " layout"; + IE_THROW(ParameterMismatch) << "The plugin does not support " << l << " layout"; } } @@ -119,7 +120,8 @@ inline cldnn::format FormatFromTensorDesc(InferenceEngine::TensorDesc desc) { case InferenceEngine::Layout::NHWC: return cldnn::format::byxf; default: - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "The plugin does not support " << desc.getLayout() << " layout"; + IE_THROW(ParameterMismatch) + << "The plugin does not support " << desc.getLayout() << " layout"; } } @@ -135,7 +137,8 @@ inline cldnn::format ImageFormatFromLayout(InferenceEngine::Layout l) { case InferenceEngine::Layout::NHWC: return cldnn::format::nv12; default: - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "The plugin does not support " << l << " image layout"; + IE_THROW(ParameterMismatch) + << "The plugin does not support " << l << " image layout"; } } @@ -152,7 +155,7 @@ inline cldnn::format DefaultFormatForDims(size_t dimensions) { case 6: return cldnn::format::bfwzyx; default: - THROW_IE_EXCEPTION << "Unsupported number of dimensions: " << dimensions; + IE_THROW() << "Unsupported number of dimensions: " << dimensions; } return cldnn::format::bfyx; // Should not get here diff --git a/inference-engine/src/cldnn_engine/cldnn_config.cpp b/inference-engine/src/cldnn_engine/cldnn_config.cpp index 64dfffbd0cb898..c25ef88d122a31 100644 --- a/inference-engine/src/cldnn_engine/cldnn_config.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_config.cpp @@ -7,11 +7,11 @@ #include #include "cldnn_config.h" #include "cpp_interfaces/exception2status.hpp" -#include "details/ie_exception.hpp" #include "cpp_interfaces/interface/ie_internal_plugin_config.hpp" #include "ie_api.h" #include "file_utils.h" #include "cldnn_itt.h" +#include #ifdef _WIN32 # include @@ -36,7 +36,7 @@ static void createDirectory(std::string _path) { auto err = mkdir(path, 0755); if (err != 0 && errno != EEXIST) { - THROW_IE_EXCEPTION << "Couldn't create directory! (err=" << err << "; errno=" << errno << ")"; + IE_THROW() << "Couldn't create directory! (err=" << err << "; errno=" << errno << ")"; } } @@ -52,7 +52,7 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { useProfiling = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported property value by plugin: " << val; } } else if (key.compare(PluginConfigParams::KEY_DYN_BATCH_ENABLED) == 0) { if (val.compare(PluginConfigParams::YES) == 0) { @@ -60,7 +60,7 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { enableDynamicBatch = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported property value by plugin: " << val; } } else if (key.compare(PluginConfigParams::KEY_DUMP_KERNELS) == 0) { if (val.compare(PluginConfigParams::YES) == 0) { @@ -68,14 +68,14 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { dumpCustomKernels = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported property value by plugin: " << val; } } else if (key.compare(CLDNNConfigParams::KEY_CLDNN_PLUGIN_PRIORITY) == 0) { std::stringstream ss(val); uint32_t uVal(0); ss >> uVal; if (ss.fail()) { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported property value by plugin: " << val; } switch (uVal) { case 0: @@ -91,7 +91,7 @@ void Config::UpdateFromMap(const std::map& configMap) queuePriority = cldnn::priority_mode_types::high; break; default: - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Unsupported queue priority value: " << uVal; + IE_THROW(ParameterMismatch) << "Unsupported queue priority value: " << uVal; } } else if (key.compare(CLDNNConfigParams::KEY_CLDNN_PLUGIN_THROTTLE) == 0) { @@ -99,7 +99,7 @@ void Config::UpdateFromMap(const std::map& configMap) uint32_t uVal(0); ss >> uVal; if (ss.fail()) { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported property value by plugin: " << val; } switch (uVal) { case 0: @@ -115,7 +115,7 @@ void Config::UpdateFromMap(const std::map& configMap) queueThrottle = cldnn::throttle_mode_types::high; break; default: - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Unsupported queue throttle value: " << uVal; + IE_THROW(ParameterMismatch) << "Unsupported queue throttle value: " << uVal; } } else if (key.compare(PluginConfigParams::KEY_CONFIG_FILE) == 0) { std::stringstream ss(val); @@ -137,7 +137,7 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::TUNING_RETUNE) == 0) { tuningConfig.mode = cldnn::tuning_mode::tuning_retune_and_cache; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported tuning mode value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported tuning mode value by plugin: " << val; } } else if (key.compare(PluginConfigParams::KEY_TUNING_FILE) == 0) { tuningConfig.cache_file_path = val; @@ -147,7 +147,7 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { memory_pool_on = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported memory pool flag value: " << val; + IE_THROW(NotFound) << "Unsupported memory pool flag value: " << val; } } else if (key.compare(CLDNNConfigParams::KEY_CLDNN_GRAPH_DUMPS_DIR) == 0) { if (!val.empty()) { @@ -170,7 +170,7 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { exclusiveAsyncRequests = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported property value by plugin: " << val; } } else if (key.compare(PluginConfigParams::KEY_GPU_THROUGHPUT_STREAMS) == 0) { if (val.compare(PluginConfigParams::GPU_THROUGHPUT_AUTO) == 0) { @@ -180,7 +180,7 @@ void Config::UpdateFromMap(const std::map& configMap) try { val_i = std::stoi(val); } catch (const std::exception&) { - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigParams::KEY_GPU_THROUGHPUT_STREAMS + IE_THROW() << "Wrong value for property key " << PluginConfigParams::KEY_GPU_THROUGHPUT_STREAMS << ". Expected only positive numbers (#streams) or " << "PluginConfigParams::GPU_THROUGHPUT_AUTO"; } @@ -193,7 +193,7 @@ void Config::UpdateFromMap(const std::map& configMap) int val_i = std::stoi(val); (void)val_i; } catch (const std::exception&) { - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigParams::KEY_DEVICE_ID + IE_THROW() << "Wrong value for property key " << PluginConfigParams::KEY_DEVICE_ID << ". DeviceIDs are only represented by positive numbers"; } // Set this value. @@ -204,7 +204,7 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { enableInt8 = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property value by plugin: " << val; + IE_THROW(NotFound) << "Unsupported property value by plugin: " << val; } } else if (key.compare(CLDNNConfigParams::KEY_CLDNN_NV12_TWO_INPUTS) == 0) { if (val.compare(PluginConfigParams::YES) == 0) { @@ -212,7 +212,7 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { nv12_two_inputs = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported NV12 flag value: " << val; + IE_THROW(NotFound) << "Unsupported NV12 flag value: " << val; } } else if (key.compare(CLDNNConfigParams::KEY_CLDNN_ENABLE_FP16_FOR_QUANTIZED_MODELS) == 0) { if (val.compare(PluginConfigParams::YES) == 0) { @@ -220,10 +220,24 @@ void Config::UpdateFromMap(const std::map& configMap) } else if (val.compare(PluginConfigParams::NO) == 0) { enable_fp16_for_quantized_models = false; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported KEY_CLDNN_ENABLE_FP16_FOR_QUANTIZED_MODELS flag value: " << val; + IE_THROW(NotFound) << "Unsupported KEY_CLDNN_ENABLE_FP16_FOR_QUANTIZED_MODELS flag value: " << val; + } + } else if (key.compare(CLDNNConfigParams::KEY_CLDNN_MAX_NUM_THREADS) == 0) { + int max_threads = std::max(1, static_cast(std::thread::hardware_concurrency())); + try { + int val_i = std::stoi(val); + if (val_i <= 0 || val_i > max_threads) { + n_threads = max_threads; + } else { + n_threads = val_i; + } + } catch (const std::exception&) { + IE_THROW() << "Wrong value for property key " << CLDNNConfigParams::KEY_CLDNN_MAX_NUM_THREADS << ": " << val + << "\nSpecify the number of threads use for build as an integer." + << "\nOut of range value will be set as a default value, maximum concurrent threads."; } } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property key by plugin: " << key; + IE_THROW(NotFound) << "Unsupported property key by plugin: " << key; } adjustKeyMapValues(); @@ -307,5 +321,6 @@ void Config::adjustKeyMapValues() { key_config_map[PluginConfigParams::KEY_GPU_THROUGHPUT_STREAMS] = std::to_string(throughput_streams); key_config_map[PluginConfigParams::KEY_DEVICE_ID] = device_id; key_config_map[PluginConfigParams::KEY_CONFIG_FILE] = ""; + key_config_map[CLDNNConfigParams::KEY_CLDNN_MAX_NUM_THREADS] = std::to_string(n_threads); } } // namespace CLDNNPlugin diff --git a/inference-engine/src/cldnn_engine/cldnn_config.h b/inference-engine/src/cldnn_engine/cldnn_config.h index c9231494c2f866..756f324cf99739 100644 --- a/inference-engine/src/cldnn_engine/cldnn_config.h +++ b/inference-engine/src/cldnn_engine/cldnn_config.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,7 +31,8 @@ struct Config { graph_dumps_dir(""), sources_dumps_dir(""), device_id(""), - kernels_cache_dir("") { + kernels_cache_dir(""), + n_threads(std::max(static_cast(1), std::thread::hardware_concurrency())) { adjustKeyMapValues(); } @@ -56,6 +57,7 @@ struct Config { std::string sources_dumps_dir; std::string device_id; std::string kernels_cache_dir; + size_t n_threads; std::map key_config_map; }; diff --git a/inference-engine/src/cldnn_engine/cldnn_custom_layer.cpp b/inference-engine/src/cldnn_engine/cldnn_custom_layer.cpp index 523187dc64b4ce..82b06eb028669a 100644 --- a/inference-engine/src/cldnn_engine/cldnn_custom_layer.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_custom_layer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -233,7 +233,7 @@ void CLDNNCustomLayer::LoadFromFile(const std::string configFile, CLDNNCustomLay // config file might not exist - like global config, for example return; } else { - THROW_IE_EXCEPTION << "Error loading custom layer configuration file: " << configFile << ", " << res.description() + IE_THROW() << "Error loading custom layer configuration file: " << configFile << ", " << res.description() << " at offset " << res.offset; } } @@ -246,7 +246,7 @@ void CLDNNCustomLayer::LoadFromFile(const std::string configFile, CLDNNCustomLay char* abs_path_ptr = realpath(configFile.c_str(), path); #endif if (abs_path_ptr == nullptr) { - THROW_IE_EXCEPTION << "Error loading custom layer configuration file: " << configFile << ", " + IE_THROW() << "Error loading custom layer configuration file: " << configFile << ", " << "Can't get canonicalized absolute pathname."; } @@ -262,7 +262,7 @@ void CLDNNCustomLayer::LoadFromFile(const std::string configFile, CLDNNCustomLay // path is absolute dir_path = abs_file_name.substr(0, dir_split_pos); } else { - THROW_IE_EXCEPTION << "Error loading custom layer configuration file: " << configFile << ", " + IE_THROW() << "Error loading custom layer configuration file: " << configFile << ", " << "Path is not valid"; } @@ -271,7 +271,7 @@ void CLDNNCustomLayer::LoadFromFile(const std::string configFile, CLDNNCustomLay layer->LoadSingleLayer(r); if (layer->Error()) { customLayers.clear(); - THROW_IE_EXCEPTION << layer->m_ErrorMessage; + IE_THROW() << layer->m_ErrorMessage; } else { customLayers[layer->Name()] = layer; } diff --git a/inference-engine/src/cldnn_engine/cldnn_custom_layer.h b/inference-engine/src/cldnn_engine/cldnn_custom_layer.h index 5a192bee86c2da..95a6ff4c5c9f82 100644 --- a/inference-engine/src/cldnn_engine/cldnn_custom_layer.h +++ b/inference-engine/src/cldnn_engine/cldnn_custom_layer.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/cldnn_engine.cpp b/inference-engine/src/cldnn_engine/cldnn_engine.cpp index 2a8a2acdd691e7..01ea25f87eead8 100644 --- a/inference-engine/src/cldnn_engine/cldnn_engine.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_engine.cpp @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include @@ -29,8 +29,10 @@ #include #include +#include #include #include "transformations/common_optimizations/convert_quantize_dequantize.hpp" +#include "transformations/common_optimizations/softmax_fusion.hpp" #include #include #include @@ -53,16 +55,20 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include -#include +#include +#include +#include #include #include #include @@ -108,7 +114,7 @@ cldnn::device_info clDNNEngine::GetDeviceInfo(const std::map( - std::vector{ ngraph::element::i8, ngraph::element::u8 }); + std::vector{ ngraph::element::i8, ngraph::element::u8, ngraph::element::i4, ngraph::element::u4 }); } manager.register_pass(); @@ -175,6 +181,8 @@ InferenceEngine::CNNNetwork clDNNEngine::CloneAndTransformNetwork(const Inferenc {ngraph::element::u16, ngraph::element::i32}, {ngraph::element::u32, ngraph::element::i32}, {ngraph::element::boolean, ngraph::element::u8}, + {ngraph::element::i4, ngraph::element::i8}, + {ngraph::element::u4, ngraph::element::u8}, }; for (auto& precision : convert_precision_list) { @@ -216,31 +224,56 @@ InferenceEngine::CNNNetwork clDNNEngine::CloneAndTransformNetwork(const Inferenc }); auto isCellPrimitiveSupported = [](const_node_ptr &node) -> bool { - if (std::dynamic_pointer_cast(node) || std::dynamic_pointer_cast(node)) { + if (std::dynamic_pointer_cast(node)) { return false; - } else if (std::dynamic_pointer_cast(node) || - std::dynamic_pointer_cast(node)) { + } else if (std::dynamic_pointer_cast(node)) { return false; - } else if (const auto &lstm_cell = std::dynamic_pointer_cast(node)) { + } else if (const auto &lstm_cell = std::dynamic_pointer_cast(node)) { return lstm_cell->get_clip() == 0.0f && lstm_cell->get_activations() == std::vector{"sigmoid", "tanh", "tanh"}; - } else if (const auto &lstm_cell_v1 = std::dynamic_pointer_cast(node)) { + } else if (const auto &lstm_cell_v1 = std::dynamic_pointer_cast(node)) { return lstm_cell_v1->get_clip() == 0.0f && lstm_cell_v1->get_activations() == std::vector{"sigmoid", "tanh", "tanh"}; - } else if (const auto &lstm_sequence = std::dynamic_pointer_cast(node)) { - return lstm_sequence->get_clip() == 0.0f && lstm_sequence->get_activations() == std::vector{"sigmoid", "tanh", "tanh"}; } return false; }; - pass_config->set_callback bool { + const auto& data = node->input(0); + const auto& data_pshape = data.get_partial_shape(); + if (data_pshape.rank().is_static() && data_pshape.rank().get_length() > 1 && !data_pshape[1].is_static()) + return false; + auto max_seq_len = data.get_shape().at(1); + if (std::dynamic_pointer_cast(node)) { + return false; + } else if (std::dynamic_pointer_cast(node)) { + return false; + } else if (const auto &lstm_seq = std::dynamic_pointer_cast(node)) { + return lstm_seq->get_clip() == 0.0f && + lstm_seq->get_activations() == std::vector{"sigmoid", "tanh", "tanh"} && + !ngraph::op::util::is_seq_len_provided(lstm_seq->get_input_node_shared_ptr(3), + max_seq_len); + } + return false; + }; + + pass_config->set_callback( [isCellPrimitiveSupported](const_node_ptr &node) -> bool { return isCellPrimitiveSupported(node); }); + pass_config->set_callback( + [isSequencePrimitiveSupported](const_node_ptr &node) -> bool { + return isSequencePrimitiveSupported(node); + }); + pass_config->set_callback( @@ -266,6 +299,36 @@ InferenceEngine::CNNNetwork clDNNEngine::CloneAndTransformNetwork(const Inferenc node->input_value(1).get_shape().size() == 3lu; }); + pass_config->set_callback( + [](const_node_ptr &node) -> bool { + const auto mvn = std::dynamic_pointer_cast(node); + if (mvn != nullptr && node->get_input_size() == 2) { + if (auto axesNode = dynamic_cast(mvn->get_input_node_ptr(1))) { + auto axesVal = axesNode->cast_vector(); + auto& mvnShape = mvn->get_output_shape(0); + for (int32_t& axis : axesVal) + axis = axis < 0 ? axis + mvnShape.size() : axis; + std::sort(axesVal.begin(), axesVal.end()); + if (mvnShape.size() == 1) + return false; + if (mvnShape.size() > 5 || (mvnShape.size() != axesVal.size() + 1 && mvnShape.size() != axesVal.size() + 2)) + return false; + int value = mvnShape.size() - 1; + for (int i = axesVal.size() - 1; i >= 0; i--, value--) { + if (axesVal[i] != value) + return false; + } + return true; + } + } + return false; + }); + + pass_config->set_callback( + [](const_node_ptr &node) -> bool { + return node->input_value(0).get_partial_shape().rank().get_length() > 5; + }); + // List of enabled/disabled transformations pass_config->disable(); pass_config->disable(); @@ -278,6 +341,7 @@ InferenceEngine::CNNNetwork clDNNEngine::CloneAndTransformNetwork(const Inferenc pass_config->disable(); pass_config->disable(); pass_config->disable(); + pass_config->disable(); pass_config->enable(); @@ -297,16 +361,28 @@ InferenceEngine::CNNNetwork clDNNEngine::CloneAndTransformNetwork(const Inferenc if (enableInt8) { OV_ITT_SCOPED_TASK(itt::domains::CLDNNPlugin, "clDNNEngine::TransformNetwork::LPT"); using namespace ngraph::pass::low_precision; - ngraph::pass::Manager conversion_manager; - // [WA part1] Convert quantized FP16 model to FP32 to avoid possible overflow and mixed precision errors - conversion_manager.register_pass(ngraph::element::f16, ngraph::element::f32); - conversion_manager.run_passes(nGraphFunc); + + ngraph::pass::Manager manager; + // Conversion to FP32 might be needed for quantized models that face any fp16 related issues (e.g. overflow) for non-quantized layers + // With this key users can work-around such issues + if (!config.enable_fp16_for_quantized_models) { + manager.register_pass(ngraph::element::f16, ngraph::element::f32); + } + auto lptPrerequisites = manager.register_pass(); + const std::vector supportedTypes = { ngraph::element::i8, ngraph::element::u8 }; + lptPrerequisites->add_matcher(supportedTypes); + lptPrerequisites->add_matcher(supportedTypes); + lptPrerequisites->add_matcher(); + manager.run_passes(nGraphFunc); + auto params = LayerTransformation::Params(true, // updatePrecisions LayerTransformation::QuantizedTensorAlignment::UpdateLevel, // quantizedTensorAlignmentOnActivations LayerTransformation::QuantizedTensorAlignment::None, // quantizedTensorAlignmentOnWeights true); // supportAsymmetricQuantization LowPrecisionTransformer transformer(LowPrecisionTransformer::getAllTransformations(params) - .add(LayerTransformation::Params(params).setSupportAsymmetricQuantization(false)) + .add(LayerTransformation::Params(params) + .setSupportAsymmetricQuantization(false) + .setSupport3DTensorOnActivations(false)) // INT8 StridedSlice not supported .remove()); @@ -373,7 +449,7 @@ auto check_inputs = [](InferenceEngine::InputsDataMap _networkInputs) { input_precision != InferenceEngine::Precision::I32 && input_precision != InferenceEngine::Precision::I64 && input_precision != InferenceEngine::Precision::BOOL) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str + IE_THROW(NotImplemented) << "Input image format " << input_precision << " is not supported yet..."; } } @@ -418,7 +494,8 @@ ExecutableNetworkInternal::Ptr clDNNEngine::LoadExeNetworkImpl(const InferenceEn context_config.tuningConfig.mode == current_config.tuningConfig.mode && context_config.tuningConfig.cache_file_path == current_config.tuningConfig.cache_file_path && context_config.kernels_cache_dir == current_config.kernels_cache_dir && - context_config.device_id == current_config.device_id; + context_config.device_id == current_config.device_id && + context_config.n_threads == current_config.n_threads; }; { @@ -446,7 +523,7 @@ ExecutableNetworkInternal::Ptr clDNNEngine::LoadExeNetworkImpl(const InferenceEn auto casted = std::dynamic_pointer_cast(context); if (nullptr == casted) { - THROW_IE_EXCEPTION << "Invalid context"; + IE_THROW() << "Invalid context"; } CLDNNPlugin::Config conf = getContextImpl(casted)->GetConfig(); @@ -471,7 +548,7 @@ RemoteContext::Ptr clDNNEngine::CreateContext(const ParamMap& params) { #endif return std::dynamic_pointer_cast(context); } else { - THROW_IE_EXCEPTION << "Invalid remote context type" << contextTypeStr; + IE_THROW() << "Invalid remote context type" << contextTypeStr; } } @@ -493,10 +570,15 @@ QueryNetworkResult clDNNEngine::QueryNetwork(const CNNNetwork& network, CLDNNPlugin::Config conf = _impl->m_config; UpdateConfig(conf, network, config); - Program prog; + if (m_defaultContext == nullptr) { + m_defaultContext.reset(new CLDNNRemoteCLContext( + std::const_pointer_cast(shared_from_this()), + ParamMap(), conf)); + } + Program prog(m_defaultContext->getImpl()->GetEngine(), conf); auto function = network.getFunction(); if (function == nullptr) { - THROW_IE_EXCEPTION << "CNNetworkImpl representation is not supported anymore"; + IE_THROW() << "CNNetworkImpl representation is not supported anymore"; } std::unordered_set originalOpNames; @@ -708,7 +790,7 @@ Parameter clDNNEngine::GetConfig(const std::string& name, const std::mapm_config.key_config_map.end()) { result = option->second; } else { - THROW_IE_EXCEPTION << "Unsupported config key : " << name; + IE_THROW() << "Unsupported config key : " << name; } return result; } @@ -783,7 +865,7 @@ Parameter clDNNEngine::GetMetric(const std::string& name, const std::map range = std::make_tuple(1, 2); IE_SET_METRIC_RETURN(RANGE_FOR_STREAMS, range); } else { - THROW_IE_EXCEPTION << "Unsupported metric key " << name; + IE_THROW() << "Unsupported metric key " << name; } } diff --git a/inference-engine/src/cldnn_engine/cldnn_engine.h b/inference-engine/src/cldnn_engine/cldnn_engine.h index 963d9fd6069c69..d57d9e063760b7 100644 --- a/inference-engine/src/cldnn_engine/cldnn_engine.h +++ b/inference-engine/src/cldnn_engine/cldnn_engine.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -24,7 +24,7 @@ class clDNNEngine : public InferenceEngine::InferencePluginInternal, std::map device_map; std::mutex engine_mutex; - CLDNNRemoteCLContext::Ptr m_defaultContext; + mutable CLDNNRemoteCLContext::Ptr m_defaultContext; cldnn::device_info GetDeviceInfo(const std::map &config) const; InferenceEngine::CNNNetwork CloneAndTransformNetwork(const InferenceEngine::CNNNetwork& network, diff --git a/inference-engine/src/cldnn_engine/cldnn_executable_network.cpp b/inference-engine/src/cldnn_engine/cldnn_executable_network.cpp index 229f202300ea3d..70080c6b95bf22 100644 --- a/inference-engine/src/cldnn_engine/cldnn_executable_network.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_executable_network.cpp @@ -50,7 +50,7 @@ CLDNNExecNetwork::CLDNNExecNetwork(InferenceEngine::CNNNetwork &network, RemoteC auto casted_context = std::dynamic_pointer_cast(context); if (nullptr == casted_context) { - THROW_IE_EXCEPTION << "Invalid remote context"; + IE_THROW() << "Invalid remote context"; } m_context = casted_context; @@ -66,16 +66,16 @@ InferRequestInternal::Ptr CLDNNExecNetwork::CreateInferRequestImpl(InputsDataMap OutputsDataMap networkOutputs) { OV_ITT_SCOPED_TASK(itt::domains::CLDNNPlugin, "CLDNNExecNetwork::CreateInferRequestImpl"); if (m_graphs.empty()) { - THROW_IE_EXCEPTION << NETWORK_NOT_LOADED_str; + IE_THROW(NetworkNotLoaded); } for (auto& graph : m_graphs) { if (graph == nullptr) { - THROW_IE_EXCEPTION << NETWORK_NOT_LOADED_str; + IE_THROW(NetworkNotLoaded); } if (!graph->IsLoaded()) { - THROW_IE_EXCEPTION << NETWORK_NOT_LOADED_str << ": no networks created"; + IE_THROW(NetworkNotLoaded) << ": no networks created"; } } @@ -98,7 +98,7 @@ IInferRequest::Ptr CLDNNExecNetwork::CreateInferRequest() { InferenceEngine::CNNNetwork CLDNNExecNetwork::GetExecGraphInfo() { if (m_graphs.empty()) - THROW_IE_EXCEPTION << NETWORK_NOT_LOADED_str; + IE_THROW(NetworkNotLoaded); return m_graphs.front()->GetExecGraphInfo(); } @@ -108,7 +108,7 @@ InferenceEngine::Parameter CLDNNExecNetwork::GetConfig(const std::string &name) if (it != m_config.key_config_map.end()) { return it->second; } else { - THROW_IE_EXCEPTION << "Unsupported ExecutableNetwork config key: " << name; + IE_THROW() << "Unsupported ExecutableNetwork config key: " << name; } } @@ -132,7 +132,7 @@ InferenceEngine::Parameter CLDNNExecNetwork::GetMetric(const std::string &name) unsigned int nr = m_config.throughput_streams * 2u; IE_SET_METRIC_RETURN(OPTIMAL_NUMBER_OF_INFER_REQUESTS, nr); } else { - THROW_IE_EXCEPTION << "Unsupported ExecutableNetwork metric: " << name; + IE_THROW() << "Unsupported ExecutableNetwork metric: " << name; } } diff --git a/inference-engine/src/cldnn_engine/cldnn_executable_network.h b/inference-engine/src/cldnn_engine/cldnn_executable_network.h index c9eb89178f2cc5..904d719650067b 100644 --- a/inference-engine/src/cldnn_engine/cldnn_executable_network.h +++ b/inference-engine/src/cldnn_engine/cldnn_executable_network.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/cldnn_graph.cpp b/inference-engine/src/cldnn_engine/cldnn_graph.cpp index dfa88e4a64b4e3..d8c222504dcf43 100644 --- a/inference-engine/src/cldnn_engine/cldnn_graph.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_graph.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -743,7 +743,7 @@ std::map CLDNNGraph::G std::shared_ptr CLDNNGraph::GetNetwork(size_t idx) const { if (idx >= GetNetworksCount()) - THROW_IE_EXCEPTION << "Unable to find network with id=" << idx << ". Stored networks count: " << GetNetworksCount(); + IE_THROW() << "Unable to find network with id=" << idx << ". Stored networks count: " << GetNetworksCount(); return m_networks[idx]; } @@ -755,18 +755,18 @@ std::string CLDNNGraph::MapOutputName(std::string outName) const { // Find correct output ID. Start with name stored in IR. if (primitiveIDs.find(outName) == primitiveIDs.end()) { - THROW_IE_EXCEPTION << "output with name " << outName << " was not found in primitiveIDs"; + IE_THROW() << "output with name " << outName << " was not found in primitiveIDs"; } std::string outputID = primitiveIDs.at(outName); while (std::find(networkOutputsIDs.begin(), networkOutputsIDs.end(), outputID) == networkOutputsIDs.end()) { // If current ID isn't found in cldnn network outputs, get previous primitive id and try again. auto prim = allPrimitiveIds.find(outputID); if (prim == allPrimitiveIds.end()) { - THROW_IE_EXCEPTION << "Unknown primitive id " << outputID; + IE_THROW() << "Unknown primitive id " << outputID; } if (prevPrimitiveIDs.at(outputID).size() != 1 || prim->second != "_optimized_") { - THROW_IE_EXCEPTION << "Unable to find parent for output primitive " << outputID; + IE_THROW() << "Unable to find parent for output primitive " << outputID; } outputID = prevPrimitiveIDs.at(outputID)[0]; } diff --git a/inference-engine/src/cldnn_engine/cldnn_graph.h b/inference-engine/src/cldnn_engine/cldnn_graph.h index 45a4510843defc..774b159a16c2b9 100644 --- a/inference-engine/src/cldnn_engine/cldnn_graph.h +++ b/inference-engine/src/cldnn_engine/cldnn_graph.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/cldnn_infer_request.cpp b/inference-engine/src/cldnn_engine/cldnn_infer_request.cpp index 2e7b1b00d9a1dd..a14b2566c73f07 100644 --- a/inference-engine/src/cldnn_engine/cldnn_infer_request.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -73,7 +73,7 @@ Blob::Ptr CLDNNInferRequest::createInputBlob(const TensorDesc& desc, uint8_t* me else return make_shared_blob(desc); default: - THROW_IE_EXCEPTION << "The plugin does not support input " << p.name() << " precision"; + IE_THROW() << "The plugin does not support input " << p.name() << " precision"; } } @@ -103,7 +103,7 @@ Blob::Ptr CLDNNInferRequest::createOutputBlob(const TensorDesc& desc, uint8_t* m else return make_shared_blob(desc); default: - THROW_IE_EXCEPTION << "The plugin does not support output " << p.name() << " precision"; + IE_THROW() << "The plugin does not support output " << p.name() << " precision"; } } @@ -149,7 +149,7 @@ void CLDNNInferRequest::copyOutputData(const cldnn::memory& outputMemory, case Precision::FP32: { auto out_f = locked.as(); if (out_f == nullptr) { - THROW_IE_EXCEPTION << "Invalid output blob"; + IE_THROW() << "Invalid output blob"; } auto resPtr = outputMemory.pointer(); float *resVec = out_f + offset; @@ -179,7 +179,7 @@ void CLDNNInferRequest::copyOutputData(const cldnn::memory& outputMemory, case Precision::FP16: { auto out_f = locked.as(); if (out_f == nullptr) { - THROW_IE_EXCEPTION << "Invalid output blob"; + IE_THROW() << "Invalid output blob"; } auto resPtr = outputMemory.pointer(); uint16_t* resVec = out_f + offset; @@ -209,7 +209,7 @@ void CLDNNInferRequest::copyOutputData(const cldnn::memory& outputMemory, case Precision::I32: { auto out_f = locked.as(); if (out_f == nullptr) { - THROW_IE_EXCEPTION << "Invalid output blob"; + IE_THROW() << "Invalid output blob"; } auto resPtr = outputMemory.pointer(); int32_t* resVec = out_f + offset; @@ -239,7 +239,7 @@ void CLDNNInferRequest::copyOutputData(const cldnn::memory& outputMemory, case Precision::I64: { auto out_f = locked.as(); if (out_f == nullptr) { - THROW_IE_EXCEPTION << "Invalid output blob"; + IE_THROW() << "Invalid output blob"; } auto resPtr = outputMemory.pointer(); int64_t* resVec = out_f + offset; @@ -267,7 +267,7 @@ void CLDNNInferRequest::copyOutputData(const cldnn::memory& outputMemory, } break; default: - THROW_IE_EXCEPTION << "The plugin does not support output " << bptr->getTensorDesc().getPrecision() << " precision"; + IE_THROW() << "The plugin does not support output " << bptr->getTensorDesc().getPrecision() << " precision"; } } @@ -318,7 +318,7 @@ void CLDNNInferRequest::copyInputData(std::shared_ptr network, break; } default: - THROW_IE_EXCEPTION << "The plugin does not support input " << inputBlob.getTensorDesc().getPrecision() << " precision"; + IE_THROW() << "The plugin does not support input " << inputBlob.getTensorDesc().getPrecision() << " precision"; } } @@ -329,7 +329,7 @@ void checkInputBlob(const Blob::Ptr &blob, const std::string strNotMatched("The input blob size is not equal to the network input size"); if (!blob) { - THROW_IE_EXCEPTION << str_not_allocated; + IE_THROW() << str_not_allocated; } if (ColorFormat::NV12 == foundInput->getPreProcess().getColorFormat() && @@ -337,19 +337,19 @@ void checkInputBlob(const Blob::Ptr &blob, auto nv12_ptr = blob->as(); if (nv12_ptr == nullptr) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << wrong_nv12_blob; + IE_THROW(ParameterMismatch) << wrong_nv12_blob; } auto y_ptr = nv12_ptr->y()->as(); // if the blobs are not remote, check their size if (!y_ptr) { - if (nv12_ptr->y()->buffer() == nullptr) THROW_IE_EXCEPTION << str_not_allocated; + if (nv12_ptr->y()->buffer() == nullptr) IE_THROW() << str_not_allocated; } auto uv_ptr = nv12_ptr->uv()->as(); if (!uv_ptr) { - if (nv12_ptr->uv()->buffer() == nullptr) THROW_IE_EXCEPTION << str_not_allocated; + if (nv12_ptr->uv()->buffer() == nullptr) IE_THROW() << str_not_allocated; } } else { SizeVector dims = foundInput->getTensorDesc().getDims(); @@ -359,11 +359,11 @@ void checkInputBlob(const Blob::Ptr &blob, : 1; if (refSize != blob->size()) { - THROW_IE_EXCEPTION << strNotMatched + ": got " << blob->size() << " expecting " << refSize; + IE_THROW() << strNotMatched + ": got " << blob->size() << " expecting " << refSize; } if (!blob->is()) { - if (blob->buffer() == nullptr) THROW_IE_EXCEPTION << str_not_allocated; + if (blob->buffer() == nullptr) IE_THROW() << str_not_allocated; } } } @@ -375,7 +375,7 @@ void checkOutputBlob(const Blob::Ptr &blob, const std::string strNotMatched("The output blob size is not equal to the network output size"); if (!blob) { - THROW_IE_EXCEPTION << strNotAllocated; + IE_THROW() << strNotAllocated; } SizeVector dims = foundOutput->getTensorDesc().getDims(); size_t refSize = foundOutput->getTensorDesc().getLayout() != SCALAR @@ -383,11 +383,11 @@ void checkOutputBlob(const Blob::Ptr &blob, : 1; if (refSize != blob->size()) { - THROW_IE_EXCEPTION << strNotMatched + ": got " << blob->size() << " expecting " << refSize; + IE_THROW() << strNotMatched + ": got " << blob->size() << " expecting " << refSize; } if (!blob->is()) { - if (blob->buffer() == nullptr) THROW_IE_EXCEPTION << strNotAllocated; + if (blob->buffer() == nullptr) IE_THROW() << strNotAllocated; } } @@ -402,7 +402,8 @@ void CLDNNInferRequest::checkBlobs() { if (foundInputPair != std::end(_networkInputs)) { foundInput = foundInputPair->second; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Failed to find input with name: \'" << input.first << "\'"; + IE_THROW(NotFound) + << "Failed to find input with name: \'" << input.first << "\'"; } checkInputBlob(input.second, input.first, foundInput, m_graph->getConfig().nv12_two_inputs); } @@ -415,7 +416,8 @@ void CLDNNInferRequest::checkBlobs() { if (foundOutputPair != std::end(_networkOutputs)) { foundOutput = foundOutputPair->second; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Failed to find output with name: \'" << output.first << "\'"; + IE_THROW(NotFound) + << "Failed to find output with name: \'" << output.first << "\'"; } checkOutputBlob(output.second, output.first, foundOutput); } @@ -449,14 +451,14 @@ void CLDNNInferRequest::SetBlob(const std::string& name, const Blob::Ptr &data) // perform all common checks first if (name.empty()) { - THROW_IE_EXCEPTION << NOT_FOUND_str + "Failed to set blob with empty name"; + IE_THROW(NotFound) << "Failed to set blob with empty name"; } if (!data) - THROW_IE_EXCEPTION << NOT_ALLOCATED_str << "Failed to set empty blob with name: \'" << name << "\'"; + IE_THROW(NotAllocated) << "Failed to set empty blob with name: \'" << name << "\'"; size_t dataSize = data->size(); if (0 == dataSize) { - THROW_IE_EXCEPTION << "Input data is empty. Input name: \'" << name << "\'"; + IE_THROW() << "Input data is empty. Input name: \'" << name << "\'"; } const bool compoundBlobPassed = data->is(); @@ -470,7 +472,7 @@ void CLDNNInferRequest::SetBlob(const std::string& name, const Blob::Ptr &data) : foundOutput->getTensorDesc(); if (desc.getPrecision() != blobDesc.getPrecision()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str + IE_THROW(ParameterMismatch) << "Failed to set Blob with precision not corresponding to user " << (is_input ? "input" : "output") << " precision"; } @@ -498,7 +500,7 @@ void CLDNNInferRequest::SetBlob(const std::string& name, const Blob::Ptr &data) auto nv12_ptr = data->as(); if (nv12_ptr == nullptr) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << wrong_nv12_blob; + IE_THROW(ParameterMismatch) << wrong_nv12_blob; } auto y_ptr = nv12_ptr->y()->as(); @@ -530,25 +532,25 @@ void CLDNNInferRequest::SetBlob(const std::string& name, const Blob::Ptr &data) _preProcData[name]->setRoiBlob(data); } else { if (compoundBlobPassed) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str << cannot_set_compound; + IE_THROW(NotImplemented) << cannot_set_compound; } size_t blobSize = desc.getLayout() != SCALAR ? details::product(desc.getDims()) : 1; if (dataSize != blobSize) { - THROW_IE_EXCEPTION << "Input blob size is not equal network input size (" + IE_THROW() << "Input blob size is not equal network input size (" << dataSize << "!=" << blobSize << ")."; } if (data->buffer() == nullptr) - THROW_IE_EXCEPTION << str_not_allocated << " Input name: \'" << name << "\'"; + IE_THROW() << str_not_allocated << " Input name: \'" << name << "\'"; _inputs[name] = data; } } } else { if (compoundBlobPassed) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str << cannot_set_compound; + IE_THROW(NotImplemented) << cannot_set_compound; } if (is_remote) { @@ -560,11 +562,11 @@ void CLDNNInferRequest::SetBlob(const std::string& name, const Blob::Ptr &data) ? details::product(desc.getDims()) : 1; if (dataSize != outputSize) { - THROW_IE_EXCEPTION << "Output blob size is not equal network output size (" << dataSize + IE_THROW() << "Output blob size is not equal network output size (" << dataSize << "!=" << outputSize << ")."; } if (data->buffer() == nullptr) - THROW_IE_EXCEPTION << str_not_allocated << " Input name: \'" << name << "\'"; + IE_THROW() << str_not_allocated << " Input name: \'" << name << "\'"; } _outputs[name] = data; } @@ -584,10 +586,10 @@ void CLDNNInferRequest::AllocateInputs() { cldnn::primitive_id UVName(name + "_UV"); if (inputLayouts.find(YName) == inputLayouts.end()) { - THROW_IE_EXCEPTION << "Input layout for " << YName << " is not found"; + IE_THROW() << "Input layout for " << YName << " is not found"; } if (inputLayouts.find(UVName) == inputLayouts.end()) { - THROW_IE_EXCEPTION << "Input layout for " << UVName << " is not found"; + IE_THROW() << "Input layout for " << UVName << " is not found"; } input_alloc(YName, inputLayouts.at(YName)); input_alloc(UVName, inputLayouts.at(UVName)); @@ -604,7 +606,7 @@ void CLDNNInferRequest::AllocateInputs() { _inputs[name] = make_shared_blob(blobY, blobUV); } else { if (inputLayouts.find(name) == inputLayouts.end()) { - THROW_IE_EXCEPTION << "Input layout for " << name << " is not found"; + IE_THROW() << "Input layout for " << name << " is not found"; } cldnn::layout layout = inputLayouts.at(name); input_alloc(name, layout); @@ -631,7 +633,7 @@ void CLDNNInferRequest::AllocateInputsDyn() { if (!dims.empty()) { *dims.begin() = static_cast(m_graph->GetMaxDynamicBatchSize()); } else { - THROW_IE_EXCEPTION << "Empty dimensions for input blob " << input.first; + IE_THROW() << "Empty dimensions for input blob " << input.first; } Blob::Ptr inputBlob = createInputBlob(desc); @@ -655,7 +657,7 @@ void CLDNNInferRequest::AllocateOutputs() { cldnn::memory output_mem = m_graph->GetNetwork()->get_output_memory(outputID); cldnn::pointer output_mem_ptr = output_mem.pointer(); if (output_mem_ptr.data() == nullptr) { - THROW_IE_EXCEPTION << "Empty output memory for primitive " << outputID; + IE_THROW() << "Empty output memory for primitive " << outputID; } DataPtr oi = no.second; @@ -683,7 +685,7 @@ void CLDNNInferRequest::AllocateOutputsDyn() { if (!dims.empty()) { *dims.begin() = static_cast(m_graph->GetMaxDynamicBatchSize()); } else { - THROW_IE_EXCEPTION << "Empty dimensions for output blob " << no.first; + IE_THROW() << "Empty dimensions for output blob " << no.first; } Blob::Ptr outputBlob = createOutputBlob(desc); @@ -697,7 +699,7 @@ void CLDNNInferRequest::SetGraph(std::shared_ptr graph) m_graph = graph; if (m_graph == nullptr) { - THROW_IE_EXCEPTION << NETWORK_NOT_LOADED_str; + IE_THROW(NetworkNotLoaded); } if (m_graph->GetMaxDynamicBatchSize() > 1) { @@ -713,10 +715,10 @@ void CLDNNInferRequest::SetGraph(std::shared_ptr graph) void CLDNNInferRequest::SetBatch(int new_batch) { OV_ITT_SCOPED_TASK(itt::domains::CLDNNPlugin, "CLDNNInferRequest::SetBatch"); if (m_graph->GetMaxDynamicBatchSize() < 0) - THROW_IE_EXCEPTION << "Dynamic batch is not enabled."; + IE_THROW() << "Dynamic batch is not enabled."; if (new_batch < 1 || new_batch > m_graph->GetMaxDynamicBatchSize()) { - THROW_IE_EXCEPTION << "Invalid dynamic batch size " << new_batch << + IE_THROW() << "Invalid dynamic batch size " << new_batch << " for this request. Got: " << new_batch << ". Expected value in range [1;" << m_graph->GetMaxDynamicBatchSize() << "]"; } @@ -889,7 +891,7 @@ void CLDNNInferRequest::InferImpl() { std::map CLDNNInferRequest::GetPerformanceCounts() const { OV_ITT_SCOPED_TASK(itt::domains::CLDNNPlugin, "CLDNNInferRequest::GetPerformanceCounts"); if (!m_useProfiling) { - THROW_IE_EXCEPTION << "Performance counters were not enabled"; + IE_THROW() << "Performance counters were not enabled"; } else { return m_graph->GetPerformanceCounts(); } @@ -905,13 +907,13 @@ void copyToFloat(float* dst, const InferenceEngine::Blob* src) { } const InferenceEngine::TBlob* t_blob = dynamic_cast*>(src); if (t_blob == nullptr) { - THROW_IE_EXCEPTION << "input type is " << src->getTensorDesc().getPrecision() << " but input is not " + IE_THROW() << "input type is " << src->getTensorDesc().getPrecision() << " but input is not " << typeid(T).name(); } const T* srcPtr = t_blob->readOnly(); if (srcPtr == nullptr) { - THROW_IE_EXCEPTION << "Input data was not allocated."; + IE_THROW() << "Input data was not allocated."; } for (size_t i = 0; i < t_blob->size(); i++) dst[i] = srcPtr[i]; } @@ -922,7 +924,7 @@ void CLDNNInferRequest::PrepareInput(const cldnn::primitive_id &inputName, const OV_ITT_SCOPED_TASK(itt::domains::CLDNNPlugin, "CLDNNInferRequest::PrepareInput"); // Get input layout if (m_graph->GetInputLayouts().find(inputName) == m_graph->GetInputLayouts().end()) { - THROW_IE_EXCEPTION << "Input name mismatch."; + IE_THROW() << "Input name mismatch."; } auto inputLayout = m_graph->GetInputLayouts().at(inputName); auto is_same_buffer = [](const Blob& blob, const cldnn::memory& memory) -> bool { @@ -931,7 +933,7 @@ void CLDNNInferRequest::PrepareInput(const cldnn::primitive_id &inputName, const const uint8_t* blob_ptr = blob.cbuffer().as(); const uint8_t* mem_ptr = ptr.data(); if (blob_ptr == nullptr || mem_ptr == nullptr) { - THROW_IE_EXCEPTION << str_not_allocated; + IE_THROW() << str_not_allocated; } return (blob_ptr == mem_ptr) && (blob.byteSize() == memory.size()); }; @@ -969,7 +971,7 @@ void CLDNNInferRequest::PrepareInput(const cldnn::primitive_id &inputName, const break; } default: - THROW_IE_EXCEPTION << "Unsupported input precision " << prec; + IE_THROW() << "Unsupported input precision " << prec; } } else { // Otherwise, we have to attach to user memory and then copy the data. diff --git a/inference-engine/src/cldnn_engine/cldnn_infer_request.h b/inference-engine/src/cldnn_engine/cldnn_infer_request.h index a557c9b94af303..b5068ebd78951e 100644 --- a/inference-engine/src/cldnn_engine/cldnn_infer_request.h +++ b/inference-engine/src/cldnn_engine/cldnn_infer_request.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/cldnn_itt.h b/inference-engine/src/cldnn_engine/cldnn_itt.h index 8a6ba1ed81a4ed..5070eeb9099828 100644 --- a/inference-engine/src/cldnn_engine/cldnn_itt.h +++ b/inference-engine/src/cldnn_engine/cldnn_itt.h @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/cldnn_engine/cldnn_primitives_list.hpp b/inference-engine/src/cldnn_engine/cldnn_primitives_list.hpp index 7fa2f38ccf87e6..54ec6f5eb798f6 100644 --- a/inference-engine/src/cldnn_engine/cldnn_primitives_list.hpp +++ b/inference-engine/src/cldnn_engine/cldnn_primitives_list.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -158,6 +158,7 @@ REGISTER_FACTORY(v3, EmbeddingSegmentsSum); REGISTER_FACTORY(v3, ExtractImagePatches); REGISTER_FACTORY(v3, ScatterUpdate); REGISTER_FACTORY(v3, ScatterElementsUpdate); +REGISTER_FACTORY(v3, ScatterNDUpdate); // REGISTER_FACTORY(v3, NonMaxSuppression); Supported via v3 -> v5 internal conversion // ----------------------------- Unsupported v3 ops ----------------------------- // @@ -167,7 +168,6 @@ REGISTER_FACTORY(v3, ScatterElementsUpdate); // REGISTER_FACTORY(v3, NonZero); // REGISTER_FACTORY(v3, ROIAlign); // REGISTER_FACTORY(v3, ReadValue); -// REGISTER_FACTORY(v3, ScatterNDUpdate); // REGISTER_FACTORY(v3, ShapeOf); // REGISTER_FACTORY(v3, TopK); @@ -203,6 +203,7 @@ REGISTER_FACTORY(v5, Round); // ------------------------------ Supported v6 ops ------------------------------ // REGISTER_FACTORY(v6, CTCGreedyDecoderSeqLen); +REGISTER_FACTORY(v6, MVN); // --------------------------- Supported internal ops --------------------------- // REGISTER_FACTORY(internal, NonMaxSuppressionIEInternal); diff --git a/inference-engine/src/cldnn_engine/cldnn_program.cpp b/inference-engine/src/cldnn_engine/cldnn_program.cpp index 98d4dab7f0cdc8..d5aa942feda9ed 100644 --- a/inference-engine/src/cldnn_engine/cldnn_program.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_program.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -48,7 +48,7 @@ void Program::ValidateInputs(const std::shared_ptr& op, std::vecto } } - THROW_IE_EXCEPTION << "Invalid inputs count (" << op->get_input_size() << ") in " + IE_THROW() << "Invalid inputs count (" << op->get_input_size() << ") in " << op->get_friendly_name() << " (" << op->get_type_name() << " op::v" << op->get_type_info().version << ")"; } @@ -103,7 +103,7 @@ Program::Program(InferenceEngine::CNNNetwork& network, std::shared_ptrget_ordered_ops(); @@ -111,7 +111,7 @@ Program::Program(InferenceEngine::CNNNetwork& network, std::shared_ptr 1) { // check topology for applicability if (!CanProcessDynBatch(ops, networkInputs)) { - THROW_IE_EXCEPTION << "Such topology cannot be compiled for dynamic batch!"; + IE_THROW() << "Such topology cannot be compiled for dynamic batch!"; } } @@ -156,7 +156,7 @@ int Program::GetMaxBatchSizeForSingleProgram() { std::shared_ptr Program::GetCompiledProgram(int program_id) { if (program_id >= m_programs.size()) - THROW_IE_EXCEPTION << "Invalid program ID"; + IE_THROW() << "Invalid program ID"; return m_programs[program_id]; } @@ -215,7 +215,7 @@ bool Program::IsOpSupported(const InferenceEngine::CNNNetwork& network, const st CreateSingleLayerPrimitive(topology, op); CleanupBuild(); DisableQueryMode(); - } catch (std::exception& ex) { + } catch (std::exception&) { // Exception means that an operation or some of it's parameters are not supported CleanupBuild(); return false; @@ -247,7 +247,7 @@ void Program::CreateSingleLayerPrimitive(cldnn::topology& topology, const std::s } if (!is_created) { - THROW_IE_EXCEPTION << "Operation: " << op->get_friendly_name() + IE_THROW() << "Operation: " << op->get_friendly_name() << " of type " << op->get_type_name() << "(op::v" << op->get_type_info().version << ") is not supported"; } @@ -268,7 +268,7 @@ std::vector Program::GetInputPrimitiveIDs(const std::shared if (!queryMode) { if (primitiveIDs.find(prevName) == primitiveIDs.end()) { - THROW_IE_EXCEPTION << "Input " << prevName << " hasn't been found in primitiveIDs map"; + IE_THROW() << "Input " << prevName << " hasn't been found in primitiveIDs map"; } inputPrimitives.push_back(primitiveIDs.at(prevName)); } else { diff --git a/inference-engine/src/cldnn_engine/cldnn_program.h b/inference-engine/src/cldnn_engine/cldnn_program.h index ebae4c466053c2..d8abfd433d401e 100644 --- a/inference-engine/src/cldnn_engine/cldnn_program.h +++ b/inference-engine/src/cldnn_engine/cldnn_program.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,6 @@ #include #include -#include "details/ie_exception.hpp" #include "cldnn_config.h" @@ -39,7 +38,7 @@ void __register ## _ ## op_name ## _ ## op_version() { [](Program& p, const std::shared_ptr& op) { \ auto op_casted = std::dynamic_pointer_cast(op); \ if (!op_casted) \ - THROW_IE_EXCEPTION << "Invalid ngraph Node type passed into " << __PRETTY_FUNCTION__; \ + IE_THROW() << "Invalid ngraph Node type passed into " << __PRETTY_FUNCTION__; \ Create##op_name##Op(p, op_casted); \ }); \ } @@ -71,6 +70,8 @@ struct PerfCounter { class Program { public: Program(InferenceEngine::CNNNetwork& network, std::shared_ptr engine, const Config& config); + Program(std::shared_ptr engine, const Config& config) : m_config(config), m_engine(engine), + m_curBatch(-1), queryMode(false), m_max_batch(1) {} Program() : m_config({}), m_engine(nullptr), m_curBatch(-1), queryMode(false), m_max_batch(1) {} static const cldnn::primitive_id m_preProcessTag; @@ -136,7 +137,7 @@ class Program { template void AddPrimitive(PType prim) { if (m_topology == nullptr) { - THROW_IE_EXCEPTION << "m_topology object was not created in clDNNPlugin::Program"; + IE_THROW() << "m_topology object was not created in clDNNPlugin::Program"; } m_topology->add(prim); diff --git a/inference-engine/src/cldnn_engine/cldnn_remote_context.cpp b/inference-engine/src/cldnn_engine/cldnn_remote_context.cpp index 50dd852b3b2d23..f03db1c4834e0d 100644 --- a/inference-engine/src/cldnn_engine/cldnn_remote_context.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_remote_context.cpp @@ -21,7 +21,7 @@ CLDNNRemoteBlobImpl::CLDNNRemoteBlobImpl(ClContext::Ptr context, uint32_t plane, BlobType mem_type) : m_context(context), m_layout(layout), m_mem_type(mem_type), m_mem(mem), m_surf(surf), m_plane(plane), - _handle(nullptr) { + _handle(nullptr), _allocator(nullptr), m_memObject(nullptr), lockedHolder(nullptr) { } ParamMap CLDNNRemoteBlobImpl::getParams() const { @@ -62,7 +62,7 @@ ParamMap CLDNNRemoteBlobImpl::getParams() const { { GPU_PARAM_KEY(VA_PLANE), params.plane } }; default: - THROW_IE_EXCEPTION << "Unsupported shared object type " << m_mem_type; + IE_THROW() << "Unsupported shared object type " << m_mem_type; } } @@ -110,7 +110,7 @@ void CLDNNRemoteBlobImpl::allocate_if_needed() { m_memObject = std::unique_ptr(new cldnn::memory(cldnn::memory::share_image(*eng, m_layout, m_mem))); break; default: - THROW_IE_EXCEPTION << unsupported_str << m_mem_type; + IE_THROW() << unsupported_str << m_mem_type; } } @@ -151,7 +151,7 @@ void CLDNNRemoteBlobImpl::allocate() noexcept { const std::shared_ptr& CLDNNRemoteBlobImpl::getAllocator() const noexcept { if (!_allocator) { - _allocator = shared_from_irelease(reinterpret_cast(&m_allocator)); + _allocator = std::shared_ptr(&m_allocator, [] (IAllocator*) {}); } return _allocator; }; @@ -240,7 +240,7 @@ CLDNNExecutionContextImpl::CLDNNExecutionContextImpl(const std::shared_ptr(params, GPU_PARAM_KEY(VA_DEVICE)); m_type = ContextType::DEV_SHARED; } else { - THROW_IE_EXCEPTION << "Invalid execution context type" << contextTypeStr; + IE_THROW() << "Invalid execution context type" << contextTypeStr; } } @@ -267,7 +267,8 @@ CLDNNExecutionContextImpl::CLDNNExecutionContextImpl(const std::shared_ptr; @@ -409,7 +407,7 @@ class typedCLDNNExecutionContext : public TpublicContextAPI, check_if_shared(); #endif } else { - THROW_IE_EXCEPTION << "Unsupported shared object type " << memTypeStr; + IE_THROW() << "Unsupported shared object type " << memTypeStr; } return reuse_obj(tensorDesc, mem, blob_type); diff --git a/inference-engine/src/cldnn_engine/ops/batch_to_space.cpp b/inference-engine/src/cldnn_engine/ops/batch_to_space.cpp index 16db80ff398e2a..51d70e05f1a525 100644 --- a/inference-engine/src/cldnn_engine/ops/batch_to_space.cpp +++ b/inference-engine/src/cldnn_engine/ops/batch_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,7 @@ void CreateBatchToSpaceOp(Program& p, const std::shared_ptr(op->get_input_node_shared_ptr(i)); if (!inConst) - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; std::vector sizes = inConst->cast_vector(); int32_t default_size = i == 1 ? 1 : 0; diff --git a/inference-engine/src/cldnn_engine/ops/broadcast.cpp b/inference-engine/src/cldnn_engine/ops/broadcast.cpp index 2e8cc9f6c2441d..af0ed9b7b751da 100644 --- a/inference-engine/src/cldnn_engine/ops/broadcast.cpp +++ b/inference-engine/src/cldnn_engine/ops/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -86,7 +86,7 @@ void CreateBroadcastOp(Program& p, const std::shared_ptrget_broadcast_spec().m_type == ngraph::op::AutoBroadcastType::NONE && op->get_input_size() == 3) { auto axis_mapping_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(2)); if (!axis_mapping_node) - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; auto axis_mapping = axis_mapping_node->get_axis_set_val(); CreateCommonBroadcastOp(p, op, axis_mapping); @@ -102,7 +102,7 @@ void CreateBroadcastOp(Program& p, const std::shared_ptrget_input_size() == 3) { auto axis_mapping_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(2)); if (!axis_mapping_node) - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; axis_mapping = axis_mapping_node->get_axis_set_val(); } diff --git a/inference-engine/src/cldnn_engine/ops/concat.cpp b/inference-engine/src/cldnn_engine/ops/concat.cpp index 0f0a19de37f675..5a300c3dc8f394 100644 --- a/inference-engine/src/cldnn_engine/ops/concat.cpp +++ b/inference-engine/src/cldnn_engine/ops/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,7 @@ namespace CLDNNPlugin { static cldnn::concatenation::concatenation_axis GetConcatAxis(int32_t axis, size_t rank) { if (axis >= rank) - THROW_IE_EXCEPTION << "Concatenation axis exceeds number of dimensions"; + IE_THROW() << "Concatenation axis exceeds number of dimensions"; // Difference in dimension ordering between IE and clDNN, // reverse spatial dimensions after batch and feature. @@ -32,7 +32,7 @@ static cldnn::concatenation::concatenation_axis GetConcatAxis(int32_t axis, size case 3: return cldnn::concatenation::concatenation_axis::along_y; case 4: return cldnn::concatenation::concatenation_axis::along_z; case 5: return cldnn::concatenation::concatenation_axis::along_w; - default: THROW_IE_EXCEPTION << "Unsupported concatenation axis: " << axis; + default: IE_THROW() << "Unsupported concatenation axis: " << axis; } return cldnn::concatenation::concatenation_axis::along_f; // shouldn't get here diff --git a/inference-engine/src/cldnn_engine/ops/constant.cpp b/inference-engine/src/cldnn_engine/ops/constant.cpp index 9ab2ec439f010b..6c5ebc317751b2 100644 --- a/inference-engine/src/cldnn_engine/ops/constant.cpp +++ b/inference-engine/src/cldnn_engine/ops/constant.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -72,7 +72,7 @@ static cldnn::tensor getConstTensor(const ngraph::Shape constDims) { break; case 0: constTensor = cldnn::tensor(1, 1, 1, 1); break; - default: THROW_IE_EXCEPTION << "Invalid constant blob dimensions"; + default: IE_THROW() << "Invalid constant blob dimensions"; } return constTensor; } @@ -138,7 +138,7 @@ void CreateConstantOp(Program& p, const std::shared_ptr constDims.size()) - THROW_IE_EXCEPTION << "Invalid constant properties or shape"; + IE_THROW() << "Invalid constant properties or shape"; auto newDims = constDims; if (prop.hasGroupDimension) { diff --git a/inference-engine/src/cldnn_engine/ops/convert.cpp b/inference-engine/src/cldnn_engine/ops/convert.cpp index 43a72d6a589d12..29fb037258f092 100644 --- a/inference-engine/src/cldnn_engine/ops/convert.cpp +++ b/inference-engine/src/cldnn_engine/ops/convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/convolution.cpp b/inference-engine/src/cldnn_engine/ops/convolution.cpp index 9fda5d94e25161..3207dab623aefa 100644 --- a/inference-engine/src/cldnn_engine/ops/convolution.cpp +++ b/inference-engine/src/cldnn_engine/ops/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,7 +34,7 @@ static ConvoltuionParameters GetConvolutionParameters(const ngraph::CoordinateDi uint32_t groups) { cldnn::tensor stride, padding, dilation; if (pads_begin.size() != strides.size() || dilations.size() != strides.size()) - THROW_IE_EXCEPTION << "Strides, Dilations and Pads are supposed to have the same elements count"; + IE_THROW() << "Strides, Dilations and Pads are supposed to have the same elements count"; switch (strides.size()) { case 3: { @@ -55,7 +55,7 @@ static ConvoltuionParameters GetConvolutionParameters(const ngraph::CoordinateDi dilation = cldnn::tensor(cldnn::batch(1), cldnn::feature(1), cldnn::spatial(dilations[0], 1, 1)); break; } - default: THROW_IE_EXCEPTION << "Unsupported convolve parameters size. Only 1d, 2d, and 3d cases are supported"; + default: IE_THROW() << "Unsupported convolve parameters size. Only 1d, 2d, and 3d cases are supported"; } return {stride, padding, dilation, groups}; @@ -127,7 +127,7 @@ void CreateConvolutionBackpropDataOp(Program& p, const std::shared_ptrget_dilations(); for (auto d : dilations) { if (d != 1) { - THROW_IE_EXCEPTION << "Unsupported dilation in ConvolutionBackpropData " << op->get_friendly_name(); + IE_THROW() << "Unsupported dilation in ConvolutionBackpropData " << op->get_friendly_name(); } } @@ -180,7 +180,7 @@ void CreateGroupConvolutionBackpropDataOp(Program& p, const std::shared_ptrget_dilations(); for (auto d : dilations) { if (d != 1) { - THROW_IE_EXCEPTION << "Unsupported dilation in GroupConvolutionBackpropData " << op->get_friendly_name(); + IE_THROW() << "Unsupported dilation in GroupConvolutionBackpropData " << op->get_friendly_name(); } } diff --git a/inference-engine/src/cldnn_engine/ops/ctc_greedy_decoder.cpp b/inference-engine/src/cldnn_engine/ops/ctc_greedy_decoder.cpp index 7a4398dd23c83f..2887360724535e 100644 --- a/inference-engine/src/cldnn_engine/ops/ctc_greedy_decoder.cpp +++ b/inference-engine/src/cldnn_engine/ops/ctc_greedy_decoder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -46,11 +46,11 @@ void CreateCommonCTCGreedyDecoderOp(Program& p, const std::shared_ptr(op->get_input_node_shared_ptr(2)); if (!blank_index_node) { - THROW_IE_EXCEPTION << "Unsupported blank_index node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported blank_index node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } float val; if (ngraph::shape_size(blank_index_node->get_output_shape(0)) != 1 || !ngraph::op::util::get_single_value(blank_index_node, val)) { - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } blank_index = static_cast(val); reorderedInputs.pop_back(); diff --git a/inference-engine/src/cldnn_engine/ops/cum_sum.cpp b/inference-engine/src/cldnn_engine/ops/cum_sum.cpp index 579d4083958a99..6252a258269899 100644 --- a/inference-engine/src/cldnn_engine/ops/cum_sum.cpp +++ b/inference-engine/src/cldnn_engine/ops/cum_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,7 @@ static inline cldnn::cum_sum::cum_sum_axis GetCumSumAxis(int32_t axis, uint32_t if (axis < 0) axis += rank; if (axis < 0 || axis >= rank) - THROW_IE_EXCEPTION << "CumSum axis is not correspond to number of dimensions"; + IE_THROW() << "CumSum axis is not correspond to number of dimensions"; // Difference in dimension ordering between IE and clDNN, // reverse spatial dimensions after batch and feature. @@ -35,7 +35,7 @@ static inline cldnn::cum_sum::cum_sum_axis GetCumSumAxis(int32_t axis, uint32_t case 3: return cldnn::cum_sum::cum_sum_axis::along_y; case 4: return cldnn::cum_sum::cum_sum_axis::along_z; case 5: return cldnn::cum_sum::cum_sum_axis::along_w; - default: THROW_IE_EXCEPTION << "Unsupported CumSum axis: " << axis; + default: IE_THROW() << "Unsupported CumSum axis: " << axis; } return cldnn::cum_sum::cum_sum_axis::along_f; // shouldn't get here @@ -54,7 +54,7 @@ void CreateCumSumOp(Program& p, const std::shared_ptr& o if (op->get_input_size() == 2) { auto axes_constant = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(1)); if (!axes_constant) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } axis = axes_constant->cast_vector()[0]; } diff --git a/inference-engine/src/cldnn_engine/ops/custom.cpp b/inference-engine/src/cldnn_engine/ops/custom.cpp index 17d2ae8a7aba68..5211fc94efd3aa 100644 --- a/inference-engine/src/cldnn_engine/ops/custom.cpp +++ b/inference-engine/src/cldnn_engine/ops/custom.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,7 +43,7 @@ class CustomLayerAttributeVisitor : public ngraph::AttributeVisitor { CustomLayerAttributeVisitor() : m_values({}) { } void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { - THROW_IE_EXCEPTION << "Attribute " << name << " can't be processed\n"; + IE_THROW() << "Attribute " << name << " can't be processed\n"; } // The remaining adapter methods fall back on the void adapter if not implemented void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { @@ -165,7 +165,7 @@ void CreateCustomOp(Program& p, const std::shared_ptr& op, CLDNNCu break; } default: - THROW_IE_EXCEPTION << "Invalid custom layer param type: " << param.type << " in operation: " << op->get_friendly_name(); + IE_THROW() << "Invalid custom layer param type: " << param.type << " in operation: " << op->get_friendly_name(); } } const std::string layerTitle("\n// Layer " + op->get_friendly_name() + " using Custom Layer " + customLayer->Name() + "\n"); @@ -194,7 +194,7 @@ void CreateCustomOp(Program& p, const std::shared_ptr& op, CLDNNCu // if input index is greater than -1, take dimension from input if (iidx >= 0) { if (iidx >= op->get_input_size()) - THROW_IE_EXCEPTION << "Invalid input tensor for index: " << iidx; + IE_THROW() << "Invalid input tensor for index: " << iidx; auto inputDims = op->get_input_shape(iidx); xDim = inputDims[inputDims.size() - 1]; diff --git a/inference-engine/src/cldnn_engine/ops/depth_to_space.cpp b/inference-engine/src/cldnn_engine/ops/depth_to_space.cpp index 84ecdeec471746..4c407a126d50e0 100644 --- a/inference-engine/src/cldnn_engine/ops/depth_to_space.cpp +++ b/inference-engine/src/cldnn_engine/ops/depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,7 +17,7 @@ static cldnn::depth_to_space_mode GetDepthMode(ngraph::op::v0::DepthToSpace::Dep return cldnn::depth_to_space_mode::blocks_first; case ngraph::op::v0::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST: return cldnn::depth_to_space_mode::depth_first; - default: THROW_IE_EXCEPTION << "Unsupported DepthToSpaceMode value: " << static_cast(mode); + default: IE_THROW() << "Unsupported DepthToSpaceMode value: " << static_cast(mode); } return cldnn::depth_to_space_mode::blocks_first; } diff --git a/inference-engine/src/cldnn_engine/ops/detection_output.cpp b/inference-engine/src/cldnn_engine/ops/detection_output.cpp index f65e1dfbea28b1..8bbe102bcfd05d 100644 --- a/inference-engine/src/cldnn_engine/ops/detection_output.cpp +++ b/inference-engine/src/cldnn_engine/ops/detection_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ static cldnn::prior_box_code_type PriorBoxCodeFromString(const std::string& str) if (it != CodeNameToType.end()) { return it->second; } else { - THROW_IE_EXCEPTION << "Unknown Prior-Box code type: " << str; + IE_THROW() << "Unknown Prior-Box code type: " << str; } return cldnn::prior_box_code_type::corner; } diff --git a/inference-engine/src/cldnn_engine/ops/eltwise.cpp b/inference-engine/src/cldnn_engine/ops/eltwise.cpp index 4a04dce1d172e6..66dcca7b459c47 100644 --- a/inference-engine/src/cldnn_engine/ops/eltwise.cpp +++ b/inference-engine/src/cldnn_engine/ops/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -151,7 +151,7 @@ void CreatePowerOp(Program& p, const std::shared_ptr& op) if (ngraph::shape_size(power_node->get_output_shape(0)) == 1) { float pow; if (!ngraph::op::util::get_single_value(power_node, pow)) - THROW_IE_EXCEPTION << "Invalid parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Invalid parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; CreateUnaryEltwiseOp(p, op, cldnn::activation_func::pow, {pow}); return; } diff --git a/inference-engine/src/cldnn_engine/ops/embedding_bag.cpp b/inference-engine/src/cldnn_engine/ops/embedding_bag.cpp index 1195fcc302f867..35b9f00096d009 100644 --- a/inference-engine/src/cldnn_engine/ops/embedding_bag.cpp +++ b/inference-engine/src/cldnn_engine/ops/embedding_bag.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,12 +25,12 @@ void CreateEmbeddingBagOffsetsSumOp(Program& p, const std::shared_ptr 3) { auto index_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(3)); if (!index_node) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } float val; if (ngraph::shape_size(index_node->get_output_shape(0)) != 1 || !ngraph::op::util::get_single_value(index_node, val)) - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; defaultIndex = static_cast(val); inputPrimitives.erase(inputPrimitives.begin() + 3); // Remove "default_index" @@ -116,12 +116,12 @@ void CreateEmbeddingSegmentsSumOp(Program& p, const std::shared_ptr 3) { auto index_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(4)); if (!index_node) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } float val; if (ngraph::shape_size(index_node->get_output_shape(0)) != 1 || !ngraph::op::util::get_single_value(index_node, val)) - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; defaultIndex = static_cast(val); inputPrimitives.erase(inputPrimitives.begin() + 3); // Remove "default_index" diff --git a/inference-engine/src/cldnn_engine/ops/extract_image_patches.cpp b/inference-engine/src/cldnn_engine/ops/extract_image_patches.cpp index 9e397228567acc..42f7c4e8e99666 100644 --- a/inference-engine/src/cldnn_engine/ops/extract_image_patches.cpp +++ b/inference-engine/src/cldnn_engine/ops/extract_image_patches.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,7 @@ static inline std::string PadToString(ngraph::op::PadType pad) { case ngraph::op::PadType::SAME_UPPER: return "same_upper"; case ngraph::op::PadType::SAME_LOWER: return "same_lower"; case ngraph::op::PadType::VALID: return "valid"; - default: THROW_IE_EXCEPTION << "Unsupported pad type in ExtractImagePatches primitive " << pad; + default: IE_THROW() << "Unsupported pad type in ExtractImagePatches primitive " << pad; } return ""; diff --git a/inference-engine/src/cldnn_engine/ops/fake_quantize.cpp b/inference-engine/src/cldnn_engine/ops/fake_quantize.cpp index 9a59b10ade582a..ca3d950694c4f3 100644 --- a/inference-engine/src/cldnn_engine/ops/fake_quantize.cpp +++ b/inference-engine/src/cldnn_engine/ops/fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/gather tree.cpp b/inference-engine/src/cldnn_engine/ops/gather tree.cpp index 3718b8771bf053..a6c806bcbe8c1b 100644 --- a/inference-engine/src/cldnn_engine/ops/gather tree.cpp +++ b/inference-engine/src/cldnn_engine/ops/gather tree.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/gather.cpp b/inference-engine/src/cldnn_engine/ops/gather.cpp index 63cc05577d9f1a..807d9c4aa7aea9 100644 --- a/inference-engine/src/cldnn_engine/ops/gather.cpp +++ b/inference-engine/src/cldnn_engine/ops/gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,7 @@ static cldnn::gather::gather_axis GetGatherAxis(int32_t axis, cldnn::format inpu case -1: return cldnn::gather::gather_axis::along_y; case -2: return cldnn::gather::gather_axis::along_f; case -3: return cldnn::gather::gather_axis::along_b; - default: THROW_IE_EXCEPTION << "Unsupported gather axis: " << axis; + default: IE_THROW() << "Unsupported gather axis: " << axis; } } else if (inputFormat == cldnn::format::bfzyx) { switch (axis) { @@ -37,7 +37,7 @@ static cldnn::gather::gather_axis GetGatherAxis(int32_t axis, cldnn::format inpu case -2: return cldnn::gather::gather_axis::along_z; case -3: return cldnn::gather::gather_axis::along_f; case -4: return cldnn::gather::gather_axis::along_b; - default: THROW_IE_EXCEPTION << "Unsupported gather axis: " << axis; + default: IE_THROW() << "Unsupported gather axis: " << axis; } } else if (inputFormat == cldnn::format::bfwzyx) { switch (axis) { @@ -50,10 +50,10 @@ static cldnn::gather::gather_axis GetGatherAxis(int32_t axis, cldnn::format inpu case -3: return cldnn::gather::gather_axis::along_w; case -4: return cldnn::gather::gather_axis::along_f; case -5: return cldnn::gather::gather_axis::along_b; - default: THROW_IE_EXCEPTION << "Unsupported gather axis: " << axis; + default: IE_THROW() << "Unsupported gather axis: " << axis; } } else { - THROW_IE_EXCEPTION << "Unsupported gather axis: " << axis; + IE_THROW() << "Unsupported gather axis: " << axis; } } diff --git a/inference-engine/src/cldnn_engine/ops/grn.cpp b/inference-engine/src/cldnn_engine/ops/grn.cpp index 5efadf0d2a6b02..3eb750f85a920c 100644 --- a/inference-engine/src/cldnn_engine/ops/grn.cpp +++ b/inference-engine/src/cldnn_engine/ops/grn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/interpolate.cpp b/inference-engine/src/cldnn_engine/ops/interpolate.cpp index d0c401669d39ad..4212459d5798df 100644 --- a/inference-engine/src/cldnn_engine/ops/interpolate.cpp +++ b/inference-engine/src/cldnn_engine/ops/interpolate.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,7 @@ static cldnn::coordinate_transformation_mode GetCoordinateTransformationMode(ngr return cldnn::coordinate_transformation_mode::align_corners; } - THROW_IE_EXCEPTION << "Unknown coordinate transformation mode: " << static_cast(mode); + IE_THROW() << "Unknown coordinate transformation mode: " << static_cast(mode); } static cldnn::nearest_mode GetNearestMode(ngraph::op::v4::Interpolate::NearestMode mode) { @@ -44,7 +44,7 @@ static cldnn::nearest_mode GetNearestMode(ngraph::op::v4::Interpolate::NearestMo return cldnn::nearest_mode::simple; } - THROW_IE_EXCEPTION << "Unknown nearest mode: " << static_cast(mode); + IE_THROW() << "Unknown nearest mode: " << static_cast(mode); } static cldnn::shape_calculation_mode GetShapeCalculationMode(ngraph::op::v4::Interpolate::ShapeCalcMode mode) { @@ -52,7 +52,7 @@ static cldnn::shape_calculation_mode GetShapeCalculationMode(ngraph::op::v4::Int case ngraph::op::v4::Interpolate::ShapeCalcMode::sizes: return cldnn::shape_calculation_mode::sizes; case ngraph::op::v4::Interpolate::ShapeCalcMode::scales: return cldnn::shape_calculation_mode::scales; } - THROW_IE_EXCEPTION << "Unknown shape calculation mode: " << static_cast(mode); + IE_THROW() << "Unknown shape calculation mode: " << static_cast(mode); } static cldnn::resample_type GetResampleType(ngraph::op::v4::Interpolate::InterpolateMode mode) { @@ -62,14 +62,14 @@ static cldnn::resample_type GetResampleType(ngraph::op::v4::Interpolate::Interpo case ngraph::op::v4::Interpolate::InterpolateMode::linear_onnx: return cldnn::resample_type::linear_onnx; case ngraph::op::v4::Interpolate::InterpolateMode::cubic: return cldnn::resample_type::cubic; } - THROW_IE_EXCEPTION << "Unknown interpolation mode: " << static_cast(mode); + IE_THROW() << "Unknown interpolation mode: " << static_cast(mode); } static cldnn::resample::resample_axis GetInterpolationAxis(int32_t axis, uint32_t sz) { if (axis < 0) axis += sz; if (axis < 0 || axis >= sz) - THROW_IE_EXCEPTION << "Interpolate axis is not correspond to number of dimensions"; + IE_THROW() << "Interpolate axis is not correspond to number of dimensions"; // Difference in dimension ordering between IE and clDNN, // reverse spatial dimensions after batch and feature. @@ -97,7 +97,7 @@ static cldnn::resample::resample_axis GetInterpolationAxis(int32_t axis, uint32_ default: break; } - THROW_IE_EXCEPTION << "Unsupported Interpolate axis: " << axis; + IE_THROW() << "Unsupported Interpolate axis: " << axis; } void CreateInterpolateOp(Program& p, const std::shared_ptr& op) { @@ -124,14 +124,22 @@ void CreateInterpolateOp(Program& p, const std::shared_ptrv4 Interpolate converison + // This WA must be removed as soon as optimized kernel supports linear mode + auto input_shape_rank = op->get_input_shape(0).size(); + auto mode = attrs.mode; + if (mode == ngraph::op::v4::Interpolate::InterpolateMode::linear && input_shape_rank < 5) { + mode = ngraph::op::v4::Interpolate::InterpolateMode::linear_onnx; + } + + auto cldnnSampleType = GetResampleType(mode); auto shapeCalcMode = GetShapeCalculationMode(attrs.shape_calculation_mode); auto coordTransMode = GetCoordinateTransformationMode(attrs.coordinate_transformation_mode); auto nearestMode = GetNearestMode(attrs.nearest_mode); auto scales_constant = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(SCALES_INDEX)); if (!scales_constant) { - THROW_IE_EXCEPTION << "Unsupported parameter node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } std::vector scales = scales_constant->cast_vector(); @@ -139,7 +147,7 @@ void CreateInterpolateOp(Program& p, const std::shared_ptrget_input_size() == 4) { auto axes_constant = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(AXES_INDEX)); if (!axes_constant) { - THROW_IE_EXCEPTION << "Unsupported parameter node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } auto ie_axes = axes_constant->cast_vector(); for (auto axis : ie_axes) { @@ -152,7 +160,7 @@ void CreateInterpolateOp(Program& p, const std::shared_ptrget_friendly_name() << " Incorrect axes and scales should be the same size"; + IE_THROW() << op->get_friendly_name() << " Incorrect axes and scales should be the same size"; cldnn::resample::AxesAndScales axesAndScales; for (size_t i = 0; i < axes.size(); ++i) { @@ -161,9 +169,9 @@ void CreateInterpolateOp(Program& p, const std::shared_ptr& op) { auto axis_const = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(1)); if (!axis_const) { - THROW_IE_EXCEPTION << "Unsupported axes node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported axes node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } auto axis_value = axis_const->cast_vector(); auto localSize = op->get_nsize(); diff --git a/inference-engine/src/cldnn_engine/ops/matmul.cpp b/inference-engine/src/cldnn_engine/ops/matmul.cpp index 6db97d9d9f567d..289a5cb5d7df64 100644 --- a/inference-engine/src/cldnn_engine/ops/matmul.cpp +++ b/inference-engine/src/cldnn_engine/ops/matmul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,7 +43,7 @@ static std::pair get_aligned_shapes(const ngraph:: for (size_t i = 0; i < max_size - 2; ++i) { if (shape_a_aligned[i] != shape_b_aligned[i] && shape_a_aligned[i] > 1 && shape_b_aligned[i] > 1) { - THROW_IE_EXCEPTION << "Shapes can't be aligned: " << shape_a_aligned << " " << shape_b_aligned; + IE_THROW() << "Shapes can't be aligned: " << shape_a_aligned << " " << shape_b_aligned; } size_t max_value = std::max(shape_a_aligned[i], shape_b_aligned[i]); shape_a_aligned[i] = shape_b_aligned[i] = max_value; @@ -68,7 +68,7 @@ void CreateMatMulOp(Program& p, const std::shared_ptr& o ngraph::Shape shape_a_aligned, shape_b_aligned; std::tie(shape_a_aligned, shape_b_aligned) = get_aligned_shapes(shape_a, shape_b, op); if (shape_a_aligned.size() < 2 || shape_b_aligned.size() < 2) { - THROW_IE_EXCEPTION << "MatMul " << op->get_friendly_name() << " shapes are inconsistent."; + IE_THROW() << "MatMul " << op->get_friendly_name() << " shapes are inconsistent."; } size_t K = *(shape_a_aligned.end() - 1); @@ -119,7 +119,7 @@ void CreateMatMulOp(Program& p, const std::shared_ptr& o std::vector reshapeSize = { total / features, features }; if (total != reshapeSize[0] * reshapeSize[1]) - THROW_IE_EXCEPTION << "Inconsistent reshape in Matmul op: " << op->get_friendly_name(); + IE_THROW() << "Inconsistent reshape in Matmul op: " << op->get_friendly_name(); auto reshapeInName = op->get_friendly_name() + suffix; auto reshapeInPrim = cldnn::reshape(reshapeInName, inputName, CldnnTensorFromIEDims(reshapeSize)); @@ -167,7 +167,7 @@ void CreateMatMulOp(Program& p, const std::shared_ptr& o case 4: return cldnn::tensor(cldnn::batch(dims[0]), cldnn::feature(dims[1]), cldnn::spatial(dims[3], dims[2])); case 5: return cldnn::tensor(cldnn::batch(dims[0]), cldnn::feature(dims[1]), cldnn::spatial(dims[4], dims[3], dims[2])); case 6: return cldnn::tensor(cldnn::batch(dims[0]), cldnn::feature(dims[1]), cldnn::spatial(dims[5], dims[4], dims[3], dims[2])); - default: THROW_IE_EXCEPTION << "Invalid dimensions size(" << dims.size() << ") for Gemm layer"; + default: IE_THROW() << "Invalid dimensions size(" << dims.size() << ") for Gemm layer"; } }; diff --git a/inference-engine/src/cldnn_engine/ops/mvn.cpp b/inference-engine/src/cldnn_engine/ops/mvn.cpp index 94973c9584b04d..79001b812e1854 100644 --- a/inference-engine/src/cldnn_engine/ops/mvn.cpp +++ b/inference-engine/src/cldnn_engine/ops/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,33 +6,61 @@ #include "cldnn_common_utils.h" #include "ngraph/op/mvn.hpp" +#include "ngraph/op/constant.hpp" #include "api/mvn.hpp" +#include namespace CLDNNPlugin { -void CreateMVNOp(Program& p, const std::shared_ptr& op) { - p.ValidateInputs(op, {1}); +static void CreateCommonMVNOp(Program& p, const std::shared_ptr& op, + bool across_channels, bool normalize_variance, float eps, bool eps_inside_sqrt = true) { auto inputPrimitives = p.GetInputPrimitiveIDs(op); std::string layerName = layer_type_name_ID(op); - const size_t chanelAxis = 1; - ngraph::AxisSet reductionAxes = op->get_reduction_axes(); - // FIXME: op->get_across_channels(); doesn't work for some reason. Is it expected? - bool across_channels = reductionAxes.count(chanelAxis) > 0; - bool normalize_variance = op->get_normalize_variance(); - float eps = op->get_eps(); - auto mvnPrim = cldnn::mvn(layerName, inputPrimitives[0], - across_channels, normalize_variance, - eps); + eps, + eps_inside_sqrt, + across_channels); p.AddPrimitive(mvnPrim); p.AddPrimitiveToProfiler(op); } +void CreateMVNOp(Program& p, const std::shared_ptr& op) { + p.ValidateInputs(op, {1}); + + bool across_channels = op->get_across_channels(); + bool normalize_variance = op->get_normalize_variance(); + float eps = op->get_eps(); + + CreateCommonMVNOp(p, op, across_channels, normalize_variance, eps); +} + +void CreateMVNOp(Program& p, const std::shared_ptr& op) { + p.ValidateInputs(op, {2}); + + auto inConst = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(1)); + if (!inConst) + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + + auto& mvnShape = op->get_output_shape(0); + std::vector axes = inConst->cast_vector(); + for (int32_t& axis : axes) + axis = axis < 0 ? axis + mvnShape.size() : axis; + + const size_t chanelAxis = 1; + bool across_channels = std::find(axes.begin(), axes.end(), chanelAxis) != axes.end(); + bool normalize_variance = op->get_normalize_variance(); + float eps = op->get_eps(); + bool eps_inside_sqrt = op->get_eps_mode() == ngraph::op::MVNEpsMode::INSIDE_SQRT; + + CreateCommonMVNOp(p, op, across_channels, normalize_variance, eps, eps_inside_sqrt); +} + REGISTER_FACTORY_IMPL(v0, MVN); +REGISTER_FACTORY_IMPL(v6, MVN); } // namespace CLDNNPlugin diff --git a/inference-engine/src/cldnn_engine/ops/non_max_suppression.cpp b/inference-engine/src/cldnn_engine/ops/non_max_suppression.cpp index 3aeec61e1a0749..8b124309467e10 100644 --- a/inference-engine/src/cldnn_engine/ops/non_max_suppression.cpp +++ b/inference-engine/src/cldnn_engine/ops/non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,7 +19,7 @@ static bool GetCenterPointBox(ngraph::op::v5::NonMaxSuppression::BoxEncodingType switch (encoding) { case ::ngraph::op::v5::NonMaxSuppression::BoxEncodingType::CENTER: return true; case ::ngraph::op::v5::NonMaxSuppression::BoxEncodingType::CORNER: return false; - default: THROW_IE_EXCEPTION << "NonMaxSuppression layer has unsupported box encoding"; + default: IE_THROW() << "NonMaxSuppression layer has unsupported box encoding"; } return false; } @@ -101,7 +101,7 @@ void CreateNonMaxSuppressionIEInternalOp(Program& p, const std::shared_ptrget_friendly_name(); + default: IE_THROW() << "Incorrect number of output for layer: " << op->get_friendly_name(); } auto nonMaxSupressionLayerName = num_output > 1 ? layer_type_name_ID(op) + ".0" : layer_type_name_ID(op); @@ -121,7 +121,7 @@ void CreateNonMaxSuppressionIEInternalOp(Program& p, const std::shared_ptrget_friendly_name(); + default: IE_THROW() << "Incorrect number of input primitives for layer: " << op->get_friendly_name(); } switch (num_output) { diff --git a/inference-engine/src/cldnn_engine/ops/normalize_l2.cpp b/inference-engine/src/cldnn_engine/ops/normalize_l2.cpp index 34ec375b5d7660..1d679d1dc85f84 100644 --- a/inference-engine/src/cldnn_engine/ops/normalize_l2.cpp +++ b/inference-engine/src/cldnn_engine/ops/normalize_l2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ void CreateNormalizeL2Op(Program& p, const std::shared_ptr(op->get_input_node_shared_ptr(1)); if (!const_axis) - THROW_IE_EXCEPTION << "Unsupported axis node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported axis node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; auto axis = const_axis->cast_vector(); bool across_spatial = !(axis.size() == 1 && axis[0] == 1); @@ -41,7 +41,7 @@ void CreateNormalizeL2Op(Program& p, const std::shared_ptrget_output_tensor(0).size(); if (bufSize != constLayout.bytes_count()) - THROW_IE_EXCEPTION << "Invalid scales buffer in NormalizeL2 op " << op->get_friendly_name(); + IE_THROW() << "Invalid scales buffer in NormalizeL2 op " << op->get_friendly_name(); std::memcpy(&buf[0], scale->get_data_ptr(), bufSize); auto scalesName = layerName + "_cldnn_input_scales"; diff --git a/inference-engine/src/cldnn_engine/ops/one_hot.cpp b/inference-engine/src/cldnn_engine/ops/one_hot.cpp index bdb1b66cada796..1076bf595efb0f 100644 --- a/inference-engine/src/cldnn_engine/ops/one_hot.cpp +++ b/inference-engine/src/cldnn_engine/ops/one_hot.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,20 +22,20 @@ void CreateOneHotOp(Program& p, const std::shared_ptr& o auto off_value_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(3)); if (on_value_node == nullptr || off_value_node == nullptr) - THROW_IE_EXCEPTION << "Unsupported on/off node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported on/off node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; float on_value; float off_value; if (!ngraph::op::util::get_single_value(on_value_node, on_value) || !ngraph::op::util::get_single_value(off_value_node, off_value)) { - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } auto dims = op->get_input_shape(0); if (axis < -1 || axis > static_cast(dims.size())) - THROW_IE_EXCEPTION << op->get_friendly_name() << " Incorrect OneHot axis value: " << axis << ". Should be between -1 and " << dims.size(); + IE_THROW() << op->get_friendly_name() << " Incorrect OneHot axis value: " << axis << ". Should be between -1 and " << dims.size(); if (axis == -1) { axis = dims.size(); diff --git a/inference-engine/src/cldnn_engine/ops/pad.cpp b/inference-engine/src/cldnn_engine/ops/pad.cpp index d9bc215cc4f924..790670ee9dd144 100644 --- a/inference-engine/src/cldnn_engine/ops/pad.cpp +++ b/inference-engine/src/cldnn_engine/ops/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ static cldnn::border_type GetBorderType(ngraph::op::PadMode mode) { case ngraph::op::PadMode::EDGE: return cldnn::border_type::edge; case ngraph::op::PadMode::REFLECT: return cldnn::border_type::mirror_101; case ngraph::op::PadMode::SYMMETRIC: return cldnn::border_type::mirror; - default: THROW_IE_EXCEPTION << "Invalid border mode " << mode << " in layer "; + default: IE_THROW() << "Invalid border mode " << mode << " in layer "; } return cldnn::border_type::constant; } @@ -50,10 +50,10 @@ void CreatePadOp(Program& p, const std::shared_ptr& op) { if (op->get_input_size() == 4) { auto const_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(3)); if (!const_node) { - THROW_IE_EXCEPTION << "Unsupported const node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported const node type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } if (!ngraph::op::util::get_single_value(const_node, pad_value)) { - THROW_IE_EXCEPTION << "Unsupported pad value in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported pad value in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } } diff --git a/inference-engine/src/cldnn_engine/ops/parameter.cpp b/inference-engine/src/cldnn_engine/ops/parameter.cpp index 19f39dfe8a4971..19286ef9278ffd 100644 --- a/inference-engine/src/cldnn_engine/ops/parameter.cpp +++ b/inference-engine/src/cldnn_engine/ops/parameter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ namespace CLDNNPlugin { void CreateParameterOp(Program& p, const std::shared_ptr& op) { auto networkInputs = p.GetNetworkInputs(); if (networkInputs.find(op->get_friendly_name()) == networkInputs.end()) { - THROW_IE_EXCEPTION << "Can't find input " << op->get_friendly_name() << " in InputsDataMap"; + IE_THROW() << "Can't find input " << op->get_friendly_name() << " in InputsDataMap"; } auto inputInfo = networkInputs.at(op->get_friendly_name()); @@ -50,7 +50,7 @@ void CreateParameterOp(Program& p, const std::shared_ptrname(); + IE_THROW() << "Unsupported layout (" << l << ") in 5D input " << inputInfo->name(); } break; case 4: @@ -61,21 +61,21 @@ void CreateParameterOp(Program& p, const std::shared_ptrname(); + IE_THROW() << "Unsupported layout (" << l << ") in 4D input " + inputInfo->name(); } break; case 3: if (Layout::CHW == l) { dataTensor = cldnn::tensor(TensorValue(inputDims[0]), TensorValue(inputDims[1]), 1, TensorValue(inputDims[2])); } else { - THROW_IE_EXCEPTION << "Unsupported layout (" << l << ") in 3D input " + inputInfo->name(); + IE_THROW() << "Unsupported layout (" << l << ") in 3D input " + inputInfo->name(); } break; case 2: if (Layout::NCHW == l || NC == l) { dataTensor = cldnn::tensor(batch, TensorValue(inputDims[1]), 1, 1); } else { - THROW_IE_EXCEPTION << "Unsupported layout (" << l << ") in 2D input " << inputInfo->name(); + IE_THROW() << "Unsupported layout (" << l << ") in 2D input " << inputInfo->name(); } break; case 1: @@ -84,7 +84,7 @@ void CreateParameterOp(Program& p, const std::shared_ptr 0) && (meanChannels != networkInputLayout.size.feature[0])) { - THROW_IE_EXCEPTION << "Mismatched mean values channels in input " << inputName; + IE_THROW() << "Mismatched mean values channels in input " << inputName; } switch (preProcess.getMeanVariant()) { @@ -112,7 +112,7 @@ void CreateParameterOp(Program& p, const std::shared_ptr 0) { for (size_t c = 0; c < meanChannels; c++) { if (fabs(preProcess[c]->stdScale - 1.0f) > 1e-10) - THROW_IE_EXCEPTION << "not supporting stdScale yet in input " << inputName; + IE_THROW() << "not supporting stdScale yet in input " << inputName; meanValues.push_back(preProcess[c]->meanValue); } } @@ -128,7 +128,7 @@ void CreateParameterOp(Program& p, const std::shared_ptr meanBlob(desc); @@ -136,7 +136,7 @@ void CreateParameterOp(Program& p, const std::shared_ptrstdScale - 1.0f) > 1e-10) - THROW_IE_EXCEPTION << "not supporting stdScale yet in input " << inputName; + IE_THROW() << "not supporting stdScale yet in input " << inputName; auto channelMeanBlob = std::dynamic_pointer_cast>(preProcess[c]->meanData); auto channelSize = channelMeanBlob->size(); auto channelBlobData = channelMeanBlob->data(); @@ -170,7 +170,7 @@ void CreateParameterOp(Program& p, const std::shared_ptrname(); } int height = inputDims[2]; @@ -209,7 +209,7 @@ void CreateParameterOp(Program& p, const std::shared_ptr pb_casted(pads_begin.begin(), pads_begin.end()); std::vector pe_casted(pads_end.begin(), pads_end.end()); @@ -51,7 +51,7 @@ static PoolingParameters GetPoolingParameters(const ngraph::Shape& kernel, pe = cldnn::tensor(cldnn::batch(0), cldnn::feature(0), cldnn::spatial(-pe_casted[0], 0, 0)); break; } - default: THROW_IE_EXCEPTION << "Unsupported pooling parameters size. Only 1d, 2d, and 3d cases are supported"; + default: IE_THROW() << "Unsupported pooling parameters size. Only 1d, 2d, and 3d cases are supported"; } return {k, s, pb, pe}; diff --git a/inference-engine/src/cldnn_engine/ops/prior_box.cpp b/inference-engine/src/cldnn_engine/ops/prior_box.cpp index 4b64fa6a802cd8..07c6a4ca3ee240 100644 --- a/inference-engine/src/cldnn_engine/ops/prior_box.cpp +++ b/inference-engine/src/cldnn_engine/ops/prior_box.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/proposal.cpp b/inference-engine/src/cldnn_engine/ops/proposal.cpp index 7223d78dbf7991..70ff3d154f107d 100644 --- a/inference-engine/src/cldnn_engine/ops/proposal.cpp +++ b/inference-engine/src/cldnn_engine/ops/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/reduce.cpp b/inference-engine/src/cldnn_engine/ops/reduce.cpp index c79182c191c190..3331d581b86c3e 100644 --- a/inference-engine/src/cldnn_engine/ops/reduce.cpp +++ b/inference-engine/src/cldnn_engine/ops/reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,7 +30,7 @@ void CreateReduceOp(Program& p, const std::shared_ptr& op, cldnn:: auto axes_constant = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(1)); if (!axes_constant) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } std::vector rawAxes = axes_constant->cast_vector(); @@ -39,7 +39,7 @@ void CreateReduceOp(Program& p, const std::shared_ptr& op, cldnn:: if (rawAxes[a] < 0) rawAxes[a] = rawAxes[a] + rank; if (rawAxes[a] < 0 || rawAxes[a] > rank - 1) - THROW_IE_EXCEPTION << op->get_friendly_name() << " Incorrect Reduce axis value: " << rawAxes[a]; + IE_THROW() << op->get_friendly_name() << " Incorrect Reduce axis value: " << rawAxes[a]; if (rank == 6) { switch (rawAxes[a]) { case 0: axes.push_back(cldnn::reduce::along_b); break; diff --git a/inference-engine/src/cldnn_engine/ops/region_yolo.cpp b/inference-engine/src/cldnn_engine/ops/region_yolo.cpp index 7a78aec6ab6d97..6e5fd660e3fa91 100644 --- a/inference-engine/src/cldnn_engine/ops/region_yolo.cpp +++ b/inference-engine/src/cldnn_engine/ops/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/reorg_yolo.cpp b/inference-engine/src/cldnn_engine/ops/reorg_yolo.cpp index 12703a4537e81d..7ddc45221a6cfb 100644 --- a/inference-engine/src/cldnn_engine/ops/reorg_yolo.cpp +++ b/inference-engine/src/cldnn_engine/ops/reorg_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/reshape.cpp b/inference-engine/src/cldnn_engine/ops/reshape.cpp index 5dbb1978de8fd5..b2111e77f64aa7 100644 --- a/inference-engine/src/cldnn_engine/ops/reshape.cpp +++ b/inference-engine/src/cldnn_engine/ops/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/result.cpp b/inference-engine/src/cldnn_engine/ops/result.cpp index 536caf22eb7555..4974f1ec56cdc7 100644 --- a/inference-engine/src/cldnn_engine/ops/result.cpp +++ b/inference-engine/src/cldnn_engine/ops/result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -29,7 +29,7 @@ void CreateResultOp(Program& p, const std::shared_ptr& o } auto it = networkOutputs.find(inputID); if (it == networkOutputs.end()) { - THROW_IE_EXCEPTION << "Can't find output " << inputID << " in OutputsDataMap"; + IE_THROW() << "Can't find output " << inputID << " in OutputsDataMap"; } std::string originalOutName = it->first; DataPtr outputData = it->second; @@ -48,7 +48,7 @@ void CreateResultOp(Program& p, const std::shared_ptr& o outputlayout != NC && outputlayout != C && outputlayout != SCALAR) { - THROW_IE_EXCEPTION << "Unsupported layout (" << outputlayout << ") in output: " << originalOutName; + IE_THROW() << "Unsupported layout (" << outputlayout << ") in output: " << originalOutName; } auto outLayerName = layer_type_name_ID(op); diff --git a/inference-engine/src/cldnn_engine/ops/reverse_sequence.cpp b/inference-engine/src/cldnn_engine/ops/reverse_sequence.cpp index fc76b898de5828..4537d3d34b7f0a 100644 --- a/inference-engine/src/cldnn_engine/ops/reverse_sequence.cpp +++ b/inference-engine/src/cldnn_engine/ops/reverse_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/rnn.cpp b/inference-engine/src/cldnn_engine/ops/rnn.cpp index c3b59976bbb02f..5801ef91549d67 100644 --- a/inference-engine/src/cldnn_engine/ops/rnn.cpp +++ b/inference-engine/src/cldnn_engine/ops/rnn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -40,11 +40,11 @@ void GetLSTMActivationParams(const std::shared_ptr& op, auto op_activations = op->get_activations(); if (!op_activations.empty()) { if (op_activations.size() != 3) - THROW_IE_EXCEPTION << "Wrong number of activations for LSTMCell op " << op->get_friendly_name(); + IE_THROW() << "Wrong number of activations for LSTMCell op " << op->get_friendly_name(); for (int i = 0; i < 3; i++) { auto af = GetActivationFunc(op_activations[i]); if (af == cldnn::activation_func::none) - THROW_IE_EXCEPTION << "Wrong or unsupported activation type " << op_activations[i] + IE_THROW() << "Wrong or unsupported activation type " << op_activations[i] << " for LSTMCell op " << op->get_friendly_name(); activations[i] = af; } @@ -53,7 +53,7 @@ void GetLSTMActivationParams(const std::shared_ptr& op, auto op_b = op->get_activations_beta(); if (!op_a.empty()) { if (op_a.size() != 3 || op_b.size() != 3) - THROW_IE_EXCEPTION << "Wrong number of activation parameters for LSTMCell op " << op->get_friendly_name(); + IE_THROW() << "Wrong number of activation parameters for LSTMCell op " << op->get_friendly_name(); for (int i = 0; i < 3; i++) { cldnn::activation_additional_params params = { op_a[i], op_b[i] }; activation_params.push_back(cldnn::activation_additional_params(params)); @@ -80,7 +80,7 @@ void CreateLSTMCellOp(Program& p, const std::shared_ptrget_input_shape(1).size() != 2 || op->get_input_shape(2).size() != 2) - THROW_IE_EXCEPTION << "Wrong input shapes for LSTMCell op " << op->get_friendly_name(); + IE_THROW() << "Wrong input shapes for LSTMCell op " << op->get_friendly_name(); lstm_input_size = in_dims0.back(); lstm_batch_size = in_dims0.at(in_dims0.size()-2); @@ -153,11 +153,19 @@ void CreateLSTMCellOp(Program& p, const std::shared_ptrget_friendly_name(), op); p.AddInnerPrimitiveToProfiler(lstm_elt_id, op->get_friendly_name(), op); + cldnn::tensor outSz = cldnn::tensor{ lstm_batch_size, lstm_hidden_size, 1, 1 }; + cldnn::primitive_id outputHiddenCropID = layerName + "_hc"; cldnn::primitive_id outputHiddenID = layerName + ".0"; - p.AddPrimitive(cldnn::crop(outputHiddenID, lstm_elt_id, hiddenSz, cldnn::tensor{0, 0, 0, 0})); + p.AddPrimitive(cldnn::crop(outputHiddenCropID, lstm_elt_id, hiddenSz, cldnn::tensor{0, 0, 0, 0})); + p.AddInnerPrimitiveToProfiler(outputHiddenCropID, op->get_friendly_name(), op); + p.AddPrimitive(cldnn::reshape(outputHiddenID, outputHiddenCropID, outSz)); p.AddInnerPrimitiveToProfiler(outputHiddenID, op->get_friendly_name(), op); + + cldnn::primitive_id outputCellCropID = layerName + "_cc"; cldnn::primitive_id outputCellID = layerName + ".1"; - p.AddPrimitive(cldnn::crop(outputCellID, lstm_elt_id, hiddenSz, cellCropSz)); + p.AddPrimitive(cldnn::crop(outputCellCropID, lstm_elt_id, hiddenSz, cellCropSz)); + p.AddInnerPrimitiveToProfiler(outputCellCropID, op->get_friendly_name(), op); + p.AddPrimitive(cldnn::reshape(outputCellID, outputHiddenCropID, outSz)); p.AddInnerPrimitiveToProfiler(outputCellID, op->get_friendly_name(), op); // output primitive IDs @@ -186,7 +194,7 @@ void CreateLSTMSequenceOp(Program& p, const std::shared_ptrget_input_shape(1).size() != 3 || op->get_input_shape(2).size() != 3) - THROW_IE_EXCEPTION << "Wrong input shapes for LSTMSequence op " << op->get_friendly_name(); + IE_THROW() << "Wrong input shapes for LSTMSequence op " << op->get_friendly_name(); lstm_input_size = in_dims0.back(); lstm_sequence_len = in_dims0.at(in_dims0.size() - 2); diff --git a/inference-engine/src/cldnn_engine/ops/roi_pooling.cpp b/inference-engine/src/cldnn_engine/ops/roi_pooling.cpp index cb1cf155be600f..8dc57e3a5c63ff 100644 --- a/inference-engine/src/cldnn_engine/ops/roi_pooling.cpp +++ b/inference-engine/src/cldnn_engine/ops/roi_pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/scatter_elements_update.cpp b/inference-engine/src/cldnn_engine/ops/scatter_elements_update.cpp index 5c9002c64aaa44..98c22e2a19966e 100644 --- a/inference-engine/src/cldnn_engine/ops/scatter_elements_update.cpp +++ b/inference-engine/src/cldnn_engine/ops/scatter_elements_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,7 @@ static inline cldnn::scatter_elements_update::scatter_elements_update_axis GetSc if (axis < 0) axis += rank; if (axis < 0 || axis >= rank) - THROW_IE_EXCEPTION << "ScatterElementsUpdate axis is not correspond to number of dimensions"; + IE_THROW() << "ScatterElementsUpdate axis is not correspond to number of dimensions"; // Difference in dimension ordering between IE and clDNN, // reverse spatial dimensions after batch and feature. @@ -35,7 +35,7 @@ static inline cldnn::scatter_elements_update::scatter_elements_update_axis GetSc case 3: return cldnn::scatter_elements_update::scatter_elements_update_axis::along_y; case 4: return cldnn::scatter_elements_update::scatter_elements_update_axis::along_z; case 5: return cldnn::scatter_elements_update::scatter_elements_update_axis::along_w; - default: THROW_IE_EXCEPTION << "Unsupported ScatterElementsUpdate axis: " << axis; + default: IE_THROW() << "Unsupported ScatterElementsUpdate axis: " << axis; } return cldnn::scatter_elements_update::scatter_elements_update_axis::along_f; // shouldn't get here @@ -49,7 +49,7 @@ void CreateScatterElementsUpdateOp(Program& p, const std::shared_ptrget_input_shape(0).size(); auto axes_constant = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(3)); if (!axes_constant) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } int32_t axis = axes_constant->cast_vector()[0]; diff --git a/inference-engine/src/cldnn_engine/ops/scatter_nd_update.cpp b/inference-engine/src/cldnn_engine/ops/scatter_nd_update.cpp new file mode 100644 index 00000000000000..1b422736575054 --- /dev/null +++ b/inference-engine/src/cldnn_engine/ops/scatter_nd_update.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "cldnn_program.h" +#include "cldnn_common_utils.h" + +#include "ngraph/op/scatter_nd_update.hpp" +#include "ngraph/op/constant.hpp" + +#include "api/scatter_nd_update.hpp" + +namespace CLDNNPlugin { + +void CreateScatterNDUpdateOp(Program& p, const std::shared_ptr& op) { + p.ValidateInputs(op, {3}); + auto inputPrimitives = p.GetInputPrimitiveIDs(op); + std::string layerName = layer_type_name_ID(op); + auto indices_rank = op->get_input_shape(1).size(); + + auto primitive = cldnn::scatter_nd_update(layerName, + inputPrimitives[0], + inputPrimitives[1], + inputPrimitives[2], + indices_rank); + + p.AddPrimitive(primitive); + p.AddPrimitiveToProfiler(op); +} + +REGISTER_FACTORY_IMPL(v3, ScatterNDUpdate); + +} // namespace CLDNNPlugin diff --git a/inference-engine/src/cldnn_engine/ops/scatter_update.cpp b/inference-engine/src/cldnn_engine/ops/scatter_update.cpp index 18971a9b29a002..85388032de8690 100644 --- a/inference-engine/src/cldnn_engine/ops/scatter_update.cpp +++ b/inference-engine/src/cldnn_engine/ops/scatter_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,7 @@ static inline cldnn::scatter_update::scatter_update_axis GetScatterUpdateAxis(in if (axis < 0) axis += rank; if (axis < 0 || axis >= rank) - THROW_IE_EXCEPTION << "ScatterUpdate axis is not correspond to number of dimensions"; + IE_THROW() << "ScatterUpdate axis is not correspond to number of dimensions"; // Difference in dimension ordering between IE and clDNN, // reverse spatial dimensions after batch and feature. @@ -35,7 +35,7 @@ static inline cldnn::scatter_update::scatter_update_axis GetScatterUpdateAxis(in case 3: return cldnn::scatter_update::scatter_update_axis::along_y; case 4: return cldnn::scatter_update::scatter_update_axis::along_z; case 5: return cldnn::scatter_update::scatter_update_axis::along_w; - default: THROW_IE_EXCEPTION << "Unsupported ScatterUpdate axis: " << axis; + default: IE_THROW() << "Unsupported ScatterUpdate axis: " << axis; } return cldnn::scatter_update::scatter_update_axis::along_f; // shouldn't get here @@ -49,7 +49,7 @@ void CreateScatterUpdateOp(Program& p, const std::shared_ptrget_input_shape(0).size(); auto axes_constant = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(3)); if (!axes_constant) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } int32_t axis = axes_constant->cast_vector()[0]; diff --git a/inference-engine/src/cldnn_engine/ops/select.cpp b/inference-engine/src/cldnn_engine/ops/select.cpp index bf1d18a89c9dfd..0d3ae8e182c901 100644 --- a/inference-engine/src/cldnn_engine/ops/select.cpp +++ b/inference-engine/src/cldnn_engine/ops/select.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,7 +25,7 @@ void CreateSelectOp(Program& p, const std::shared_ptr& o if (broadcast_type.m_type != ngraph::op::AutoBroadcastType::NONE && broadcast_type.m_type != ngraph::op::AutoBroadcastType::NUMPY) { - THROW_IE_EXCEPTION << "Unsupported broadcast type (" << broadcast_type.m_type << ") in layer " + op->get_friendly_name(); + IE_THROW() << "Unsupported broadcast type (" << broadcast_type.m_type << ") in layer " + op->get_friendly_name(); } if (broadcast_type.m_type == ngraph::op::AutoBroadcastType::NUMPY) { diff --git a/inference-engine/src/cldnn_engine/ops/shuffle_channels.cpp b/inference-engine/src/cldnn_engine/ops/shuffle_channels.cpp index afeedb6fee1c0d..0c0cafd03ef633 100644 --- a/inference-engine/src/cldnn_engine/ops/shuffle_channels.cpp +++ b/inference-engine/src/cldnn_engine/ops/shuffle_channels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,13 +25,13 @@ void CreateShuffleChannelsOp(Program& p, const std::shared_ptr= in_rank) - THROW_IE_EXCEPTION << "Incorrect axis value! Actual axis is" + std::to_string(group); + IE_THROW() << "Incorrect axis value! Actual axis is" + std::to_string(group); if (group < 1) - THROW_IE_EXCEPTION << "Invalid group size value (should equal at least one). Actual block size is" << std::to_string(group); + IE_THROW() << "Invalid group size value (should equal at least one). Actual block size is" << std::to_string(group); if (op->get_input_shape(0)[axis] % group != 0) - THROW_IE_EXCEPTION << "Group parameter must evenly divide the channel dimension. Actual group size is " << std::to_string(axis); + IE_THROW() << "Group parameter must evenly divide the channel dimension. Actual group size is " << std::to_string(axis); auto shuffleChannelsPrim = cldnn::shuffle_channels(layerName, inputPrimitives[0], diff --git a/inference-engine/src/cldnn_engine/ops/softmax.cpp b/inference-engine/src/cldnn_engine/ops/softmax.cpp index d27c9c4b92cc48..566aca800ea398 100644 --- a/inference-engine/src/cldnn_engine/ops/softmax.cpp +++ b/inference-engine/src/cldnn_engine/ops/softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,7 +30,7 @@ static cldnn::softmax::dimension_t GetSoftmaxAxis(int64_t axis, size_t rank) { return cldnn::softmax::normalize_x; case 4: return cldnn::softmax::normalize_x; - default: THROW_IE_EXCEPTION << "Invalid softmax axis " << axis; + default: IE_THROW() << "Invalid softmax axis " << axis; } return cldnn::softmax::normalize_fyx; } diff --git a/inference-engine/src/cldnn_engine/ops/space_to_batch.cpp b/inference-engine/src/cldnn_engine/ops/space_to_batch.cpp index 9748864884056d..7846375dff700c 100644 --- a/inference-engine/src/cldnn_engine/ops/space_to_batch.cpp +++ b/inference-engine/src/cldnn_engine/ops/space_to_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,7 @@ void CreateSpaceToBatchOp(Program& p, const std::shared_ptr(op->get_input_node_shared_ptr(i)); if (!inConst) - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; std::vector sizes = inConst->cast_vector(); int32_t default_size = i == 1 ? 1 : 0; diff --git a/inference-engine/src/cldnn_engine/ops/space_to_depth.cpp b/inference-engine/src/cldnn_engine/ops/space_to_depth.cpp index e9731348d59f4d..a8d73eea79d545 100644 --- a/inference-engine/src/cldnn_engine/ops/space_to_depth.cpp +++ b/inference-engine/src/cldnn_engine/ops/space_to_depth.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,7 +15,7 @@ static cldnn::space_to_depth::depth_mode GetDepthMode(ngraph::op::v0::SpaceToDep switch (mode) { case ngraph::op::v0::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST: return cldnn::space_to_depth::blocks_first; case ngraph::op::v0::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST: return cldnn::space_to_depth::depth_first; - default: THROW_IE_EXCEPTION << "Unsupported SpaceToDepthMode value: " << static_cast(mode); + default: IE_THROW() << "Unsupported SpaceToDepthMode value: " << static_cast(mode); } return cldnn::space_to_depth::blocks_first; } diff --git a/inference-engine/src/cldnn_engine/ops/split.cpp b/inference-engine/src/cldnn_engine/ops/split.cpp index 3639a3c583a2e5..6706ccebd8b88c 100644 --- a/inference-engine/src/cldnn_engine/ops/split.cpp +++ b/inference-engine/src/cldnn_engine/ops/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,12 +26,12 @@ void CreateCommonSplitOp(Program& p, const std::shared_ptr& op) { const auto outLayerDims = op->get_output_shape(i); NGRAPH_SUPPRESS_DEPRECATED_START if (outLayerDims.size() != startOffset.size()) { - THROW_IE_EXCEPTION << "Invalid dimesions in split layer: " << op->get_friendly_name() + IE_THROW() << "Invalid dimesions in split layer: " << op->get_friendly_name() << " output: " << op->get_output_tensor_name(i); } for (size_t i = 0; i < inputDims.size(); i++) { if ((outLayerDims[i] + startOffset[i]) > inputDims[i]) { - THROW_IE_EXCEPTION << "Invalid dimesions in split layer: " << op->get_friendly_name() + IE_THROW() << "Invalid dimesions in split layer: " << op->get_friendly_name() << " output: " << op->get_output_tensor_name(i); } } diff --git a/inference-engine/src/cldnn_engine/ops/strided_slice.cpp b/inference-engine/src/cldnn_engine/ops/strided_slice.cpp index 46e968a386ba96..0bf5adb74e22e4 100644 --- a/inference-engine/src/cldnn_engine/ops/strided_slice.cpp +++ b/inference-engine/src/cldnn_engine/ops/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,25 +31,6 @@ void CreateStridedSliceOp(Program& p, const std::shared_ptrget_begin_mask()) { - if (m != 0) { - valid_mask = false; - break; - } - } - - for (auto& m : op->get_end_mask()) { - if (m != 0) { - valid_mask = false; - break; - } - } - - if (!valid_mask) { - break; - } - auto input_shape = op->get_input_shape(0); auto output_shape = op->get_output_shape(0); @@ -125,9 +106,13 @@ void CreateStridedSliceOp(Program& p, const std::shared_ptr(input_shape[input_shape_idx]) + lb, + static_cast(0)); + offset.emplace_back(begin_mask.count(axis) ? 0 : lb); input_shape_idx++; } else { // calculate dimension using begin, end, begin_mask, end_mask, stride @@ -215,7 +200,7 @@ void CreateStridedSliceOp(Program& p, const std::shared_ptr offset_tensor{ 0, 0, 0, 0 }; for (size_t i = 0; i < axes.size(); i++) { if (axes[i] < 0 || axes[i] > 3) { - THROW_IE_EXCEPTION << "Invalid crop axis: " << std::to_string(axes[i]) << " in op " + op->get_friendly_name(); + IE_THROW() << "Invalid crop axis: " << std::to_string(axes[i]) << " in op " + op->get_friendly_name(); } offset_tensor[axes[i]] = offset[i]; } diff --git a/inference-engine/src/cldnn_engine/ops/tile.cpp b/inference-engine/src/cldnn_engine/ops/tile.cpp index 0b4eb265ba32bc..a4856ad80dc210 100644 --- a/inference-engine/src/cldnn_engine/ops/tile.cpp +++ b/inference-engine/src/cldnn_engine/ops/tile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/ops/topk.cpp b/inference-engine/src/cldnn_engine/ops/topk.cpp index b0e01db5a9f995..d527aee1d61b6e 100644 --- a/inference-engine/src/cldnn_engine/ops/topk.cpp +++ b/inference-engine/src/cldnn_engine/ops/topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -114,7 +114,7 @@ void CreateTopKOp(Program& p, const std::shared_ptr& op) { p.AddPrimitive(argmaxPrim); p.AddPrimitiveToProfiler(op); } else { - THROW_IE_EXCEPTION << op->get_friendly_name() << " Incorrect TopK outputs number"; + IE_THROW() << op->get_friendly_name() << " Incorrect TopK outputs number"; } } diff --git a/inference-engine/src/cldnn_engine/ops/transpose.cpp b/inference-engine/src/cldnn_engine/ops/transpose.cpp index fc3b56cf0886c5..a1c8ce63caef6f 100644 --- a/inference-engine/src/cldnn_engine/ops/transpose.cpp +++ b/inference-engine/src/cldnn_engine/ops/transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ void CreateTransposeOp(Program& p, const std::shared_ptrget_input_size() == 2) { auto order_constant = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(1)); if (!order_constant) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } ie_order = order_constant->cast_vector(); } diff --git a/inference-engine/src/cldnn_engine/ops/unary.cpp b/inference-engine/src/cldnn_engine/ops/unary.cpp index 943690af4d0b64..334d68c5f2379f 100644 --- a/inference-engine/src/cldnn_engine/ops/unary.cpp +++ b/inference-engine/src/cldnn_engine/ops/unary.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -81,7 +81,7 @@ void CreatePReluOp(Program& p, const std::shared_ptr& op) if (slope_node && ngraph::shape_size(slope_shape) == 1) { float slope; if (!ngraph::op::util::get_single_value(slope_node, slope)) - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; CreateUnaryEltwiseOp(p, op, cldnn::activation_func::relu_negative_slope, {slope}); } else if (out_shape.size() >= 2 && ngraph::shape_size(slope_shape) == out_shape[1]) { auto inputs = p.GetInputPrimitiveIDs(op); @@ -155,14 +155,14 @@ void CreateHardSigmoidOp(Program& p, const std::shared_ptr(op->get_input_node_shared_ptr(1)); auto beta_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(2)); if (!alpha_node || !beta_node) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } if (ngraph::shape_size(alpha_node->get_output_shape(0)) == 1 && ngraph::shape_size(beta_node->get_output_shape(0)) == 1) { float alpha, beta; if (!ngraph::op::util::get_single_value(alpha_node, alpha) || !ngraph::op::util::get_single_value(beta_node, beta)) { - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } CreateUnaryEltwiseOp(p, op, cldnn::activation_func::hard_sigmoid, {alpha, beta}); } @@ -181,18 +181,18 @@ void CreateSeluOp(Program& p, const std::shared_ptr& op) { auto alpha_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(1)); auto lambda_node = std::dynamic_pointer_cast(op->get_input_node_shared_ptr(2)); if (!alpha_node || !lambda_node) { - THROW_IE_EXCEPTION << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter nodes type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } if (ngraph::shape_size(alpha_node->get_output_shape(0)) == 1 && ngraph::shape_size(lambda_node->get_output_shape(0)) == 1) { float alpha, lambda; if (!ngraph::op::util::get_single_value(alpha_node, alpha) || !ngraph::op::util::get_single_value(lambda_node, lambda)) { - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } CreateUnaryEltwiseOp(p, op, cldnn::activation_func::selu, {alpha, lambda}); } else { - THROW_IE_EXCEPTION << "Unsupported shapes of parameter nodes in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported shapes of parameter nodes in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } } @@ -228,14 +228,14 @@ void CreateSwishOp(Program& p, const std::shared_ptr& op) if (ngraph::shape_size(beta_node->get_output_shape(0)) == 1) { float beta; if (!ngraph::op::util::get_single_value(beta_node, beta)) { - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } CreateUnaryEltwiseOp(p, op, cldnn::activation_func::swish, {beta}); } else { - THROW_IE_EXCEPTION << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter size in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } } else { - THROW_IE_EXCEPTION << "Unsupported parameter type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; + IE_THROW() << "Unsupported parameter type in " << op->get_friendly_name() << " (" << op->get_type_name() << ")"; } } else { CreateUnaryEltwiseOp(p, op, cldnn::activation_func::swish, {1.0f}); @@ -267,7 +267,7 @@ void CreateRoundOp(Program& p, const std::shared_ptr& op) switch (op->get_mode()) { case ngraph::op::v5::Round::RoundMode::HALF_TO_EVEN : func = cldnn::activation_func::round_half_to_even; break; case ngraph::op::v5::Round::RoundMode::HALF_AWAY_FROM_ZERO : func = cldnn::activation_func::round_half_away_from_zero; break; - default: THROW_IE_EXCEPTION << "Unsupported round mode in " << op->get_friendly_name() << ": " << static_cast(op->get_mode()); + default: IE_THROW() << "Unsupported round mode in " << op->get_friendly_name() << ": " << static_cast(op->get_mode()); } CreateUnaryEltwiseOp(p, op, func, {}); } diff --git a/inference-engine/src/cldnn_engine/simple_math.cpp b/inference-engine/src/cldnn_engine/simple_math.cpp index ba0cddd3679cd0..d8bf376a575c91 100644 --- a/inference-engine/src/cldnn_engine/simple_math.cpp +++ b/inference-engine/src/cldnn_engine/simple_math.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/simple_math.h b/inference-engine/src/cldnn_engine/simple_math.h index 4b8413874ddf0d..216642a9371c74 100644 --- a/inference-engine/src/cldnn_engine/simple_math.h +++ b/inference-engine/src/cldnn_engine/simple_math.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/cldnn_engine/va/va.h b/inference-engine/src/cldnn_engine/va/va.h index be25665ad93d31..dd5be760d20f7d 100644 --- a/inference-engine/src/cldnn_engine/va/va.h +++ b/inference-engine/src/cldnn_engine/va/va.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/CMakeLists.txt b/inference-engine/src/gna_plugin/CMakeLists.txt index 23679faabf2567..f3ce2858570733 100644 --- a/inference-engine/src/gna_plugin/CMakeLists.txt +++ b/inference-engine/src/gna_plugin/CMakeLists.txt @@ -1,5 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +# set(TARGET_NAME "GNAPlugin") diff --git a/inference-engine/src/gna_plugin/backend/am_intel_dnn.cpp b/inference-engine/src/gna_plugin/backend/am_intel_dnn.cpp index 68d8a797976016..e3b0f417ff0f3c 100644 --- a/inference-engine/src/gna_plugin/backend/am_intel_dnn.cpp +++ b/inference-engine/src/gna_plugin/backend/am_intel_dnn.cpp @@ -223,6 +223,7 @@ void GNAPluginNS::backend::AMIntelDNN::InitConvolutional2DComponentPrivate(intel OvGnaTensor filterTensor, OvGnaTensor biasTensor, std::array convStride, + std::array zeroPadding, float weight_scale_factor, float output_scale_factor, void*& ptr_inputs, @@ -241,6 +242,7 @@ void GNAPluginNS::backend::AMIntelDNN::InitConvolutional2DComponentPrivate(intel comp.ptr_inputs = ptr_inputs; comp.ptr_outputs = ptr_outputs; comp.op.conv2D.convStride = convStride; + comp.op.conv2D.zeroPadding = zeroPadding; comp.op.conv2D.weight_scale_factor = weight_scale_factor; comp.output_scale_factor = output_scale_factor; comp.input_scale_factor = output_scale_factor / weight_scale_factor; @@ -253,34 +255,26 @@ void GNAPluginNS::backend::AMIntelDNN::InitConvolutional2DComponentPrivate(intel #endif void GNAPluginNS::backend::AMIntelDNN::InitMaxpoolComponentPrivate(intel_dnn_component_t &comp, - uint32_t num_rows_in, - uint32_t num_columns_in, - uint32_t num_rows_out, - uint32_t num_columns_out, - uint32_t num_bytes_per_input, - uint32_t num_bytes_per_output, - uint32_t num_pool_size, - uint32_t num_pool_step, - uint32_t num_pool_stride, - bool do_sum_not_max, - float output_scale_factor, - void *&ptr_inputs, - void *&ptr_outputs, - bool postInitMem) { - comp.num_rows_in = num_rows_in; - comp.num_columns_in = num_columns_in; - comp.num_rows_out = num_rows_out; - comp.num_columns_out = num_columns_out; + std::array inCHW, + std::array outCHW, + uint32_t num_bytes_per_input, + uint32_t num_bytes_per_output, + std::array poolingWindowXY, + std::array poolingStrideXY, + float output_scale_factor, + void *&ptr_inputs, + void *&ptr_outputs, + bool postInitMem) { comp.num_bytes_per_input = num_bytes_per_input; comp.num_bytes_per_output = num_bytes_per_output; comp.operation = kDnnMaxPoolOp; comp.macro_operation = kDnnMacroOpNone; comp.orientation_in = kDnnNonInterleavedOrientation; comp.orientation_out = kDnnNonInterleavedOrientation; - comp.op.maxpool.num_inputs = num_pool_size; - comp.op.maxpool.num_inputs_step = num_pool_step; - comp.op.maxpool.num_inputs_stride = num_pool_stride; - comp.op.maxpool.do_sum_not_max = do_sum_not_max; + comp.op.maxpool.inCHW = inCHW; + comp.op.maxpool.outCHW = outCHW; + comp.op.maxpool.poolingWindowXY = poolingWindowXY; + comp.op.maxpool.poolingStrideXY = poolingStrideXY; comp.output_scale_factor = output_scale_factor; comp.input_scale_factor = output_scale_factor; if (!postInitMem) { @@ -1055,6 +1049,9 @@ void GNAPluginNS::backend::AMIntelDNN::WriteDnnText(const char *filename, intel_ const auto convolution_stride_0 = component[i].op.conv2D.convStride[0]; const auto convolution_stride_1 = component[i].op.conv2D.convStride[1]; + const auto zero_padding_0 = component[i].op.conv2D.zeroPadding[0]; + const auto zero_padding_1 = component[i].op.conv2D.zeroPadding[1]; + out_file << std::setprecision(12) << std::scientific << " " << output_scale_factor << "\n"; out_file << std::setprecision(12) << std::scientific << " " @@ -1062,6 +1059,9 @@ void GNAPluginNS::backend::AMIntelDNN::WriteDnnText(const char *filename, intel_ PrintTensors(out_file, component[i].tensors); out_file << " " << std::dec << convolution_stride_0 << "\n"; out_file << " " << std::dec << convolution_stride_1 << "\n"; + + out_file << " " << std::dec << zero_padding_0 << "\n"; + out_file << " " << std::dec << zero_padding_1 << "\n"; out_file << "\n"; #else fprintf(stderr, "Unsupported GNA Library version (!= 2) in WriteDnnText's kDnnConvolutional2dOp case!\n"); @@ -1201,11 +1201,17 @@ void GNAPluginNS::backend::AMIntelDNN::WriteDnnText(const char *filename, intel_ } break; case kDnnMaxPoolOp: { - uint32_t num_pool_type = (component[i].op.maxpool.do_sum_not_max) ? 2 : 1; - out_file << " " << std::dec << num_pool_type << "\n"; - out_file << " " << std::dec << component[i].op.maxpool.num_inputs << "\n"; - out_file << " " << std::dec << component[i].op.maxpool.num_inputs_step << "\n"; - out_file << " " << std::dec << component[i].op.maxpool.num_inputs_stride << "\n"; + out_file << " MAX\n"; + out_file << " " << std::dec << component[i].op.maxpool.poolingWindowXY[0] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.poolingWindowXY[1] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.poolingStrideXY[0] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.poolingStrideXY[1] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.inCHW[0] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.inCHW[1] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.inCHW[2] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.outCHW[0] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.outCHW[1] << "\n"; + out_file << " " << std::dec << component[i].op.maxpool.outCHW[2] << "\n"; out_file << std::setprecision(12) << std::scientific << " " << component[i].output_scale_factor << "\n"; } @@ -1235,15 +1241,15 @@ void GNAPluginNS::backend::AMIntelDNN::WriteDnnText(const char *filename, intel_ break; case kActFakeQuantize : out_file << " " << - std::dec << component[i].op.pwl.func_id.args.fakeQuantize.levels << "\n"; + std::dec << component[i].op.pwl.func_id.fqParams.levels << "\n"; out_file << " " << - std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.args.fakeQuantize.input_low << "\n"; + std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.fqParams.input_low << "\n"; out_file << " " << - std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.args.fakeQuantize.input_high << "\n"; + std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.fqParams.input_high << "\n"; out_file << " " << - std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.args.fakeQuantize.output_low << "\n"; + std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.fqParams.output_low << "\n"; out_file << " " << - std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.args.fakeQuantize.output_high << "\n"; + std::setprecision(12) << std::scientific << component[i].op.pwl.func_id.fqParams.output_high << "\n"; break; default: break; @@ -1261,19 +1267,19 @@ void GNAPluginNS::backend::AMIntelDNN::WriteDnnText(const char *filename, intel_ << GNAPluginNS::memory::MemoryOffset(component[i].op.pwl.ptr_segments, ptr_dnn_memory_) << "\n"; if (compute_precision_ == kDnnInt) { out_file << " "; - for (int segment = 0; segment < num_segments; segment++) { + for (uint32_t segment = 0; segment < num_segments; segment++) { out_file << "0x" << std::setfill('0') << std::setw(4) << std::hex << ptr_segment[segment].slope << " "; } out_file << "\n"; out_file << " "; - for (int segment = 0; segment < component[i].op.pwl.num_segments; segment++) { + for (uint32_t segment = 0; segment < component[i].op.pwl.num_segments; segment++) { out_file << "0x" << std::setfill('0') << std::setw(4) << std::hex << ptr_segment[segment].yBase << " "; } out_file << "\n"; out_file << " "; - for (int segment = 0; segment < component[i].op.pwl.num_segments; segment++) { + for (uint32_t segment = 0; segment < component[i].op.pwl.num_segments; segment++) { out_file << "0x" << std::setfill('0') << std::setw(8) << std::hex << ptr_segment[segment].xBase << " "; } @@ -1336,6 +1342,26 @@ uint32_t GNAPluginNS::backend::AMIntelDNN::CountLayers() { return n; } +namespace { +uint32_t outputFromConv(const uint32_t in, const uint32_t flt, const uint32_t stride) { + // floor[(in - flt)/stride] + 1, GNA Spec 1.24 + if (flt > in || flt == 0 || stride == 0) { + THROW_GNA_EXCEPTION << "Invalid (input, filter, stride) = (" << in << "," << flt << "," << stride << ")"; + } + return (in - flt) / stride + 1; +} + +uint32_t outputFromPooling(const uint32_t in, const uint32_t window, const uint32_t stride) { + // ceil[(in - window)/stride] + 1, GNA Spec 1.24 + if (window > in || window == 0 || stride == 0) { + THROW_GNA_EXCEPTION << "Invalid (input, window, stride) = (" << in << "," << window << "," << stride << ")"; + } + if (window == in) return 1; + + return (in - window - 1) / stride + 2; +} +} // namespace + #if GNA_LIB_VER == 2 void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(Gna2Model *gnaModel) { Gna2Operation * gnaOperation; @@ -1541,6 +1567,7 @@ void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(intel_nnet_type_t *ptr_nnet nullptr, create_shape1D_parameter( comp.op.conv1D.num_feature_maps * comp.op.conv1D.num_feature_map_columns), + nullptr, nullptr); AdvanceCnnOperationIfAllApplied(component, i, gnaOperation); @@ -1598,7 +1625,9 @@ void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(intel_nnet_type_t *ptr_nnet nullptr, create_shape2D_parameter( comp.op.conv2D.convStride[0], comp.op.conv2D.convStride[1]), - nullptr); + nullptr, + create_shape2D_parameter( + comp.op.conv2D.zeroPadding[0], comp.op.conv2D.zeroPadding[1])); AdvanceCnnOperationIfAllApplied(component, i, gnaOperation); #else @@ -1611,18 +1640,29 @@ void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(intel_nnet_type_t *ptr_nnet #if GNA_LIB_VER == 2 } else if (gnaOperation->Type == Gna2OperationTypeConvolution) { auto pwlOperand = gnaOperation->Operands[PwlOpIdx]; - if (pwlOperand != nullptr && pwlOperand->Shape.Dimensions[0] != 0) { - THROW_GNA_EXCEPTION << "Encountered activation component before pooling component at." << i; + if (pwlOperand != nullptr && pwlOperand->Shape.Dimensions[0] != 0 && + gnaOperation->Operands[InOpIdx]->Shape.NumberOfDimensions == 2) { // kDnnConvolutional1dOp + THROW_GNA_EXCEPTION << "Encountered activation component before pooling component at index == " << i; } else { const auto poolMode = reinterpret_cast(gnaUserAllocator(sizeof(Gna2PoolingMode))); IE_ASSERT(poolMode != nullptr); - *poolMode = (comp.op.maxpool.do_sum_not_max) ? Gna2PoolingModeSum : Gna2PoolingModeMax; - const auto poolWindow = create_shape1D_parameter(comp.op.maxpool.num_inputs); - const auto poolStride = create_shape1D_parameter(comp.op.maxpool.num_inputs_step); + *poolMode = Gna2PoolingModeMax; + + Gna2Shape* poolWindow{}; + Gna2Shape* poolStride{}; + + if (gnaOperation->Operands[InOpIdx]->Shape.NumberOfDimensions == 2) { // kDnnConvolutional1dOp + // TODO: issue 50379 find out why looks like CNN1D pooling uses stride == window only + poolWindow = create_shape1D_parameter(comp.op.maxpool.poolingWindowXY[0]); + poolStride = create_shape1D_parameter(comp.op.maxpool.poolingWindowXY[0]); + } else { + poolWindow = create_shape2D_parameter(comp.op.maxpool.poolingWindowXY[1], comp.op.maxpool.poolingWindowXY[0]); + poolStride = create_shape2D_parameter(comp.op.maxpool.poolingStrideXY[1], comp.op.maxpool.poolingStrideXY[0]); + } // number of output columns correction - based on GNA-library expectations - if ((gnaOperation->NumberOfParameters > PoolModeParamIdx && gnaOperation->Parameters[PoolModeParamIdx] !=nullptr) || + if ((gnaOperation->NumberOfParameters > PoolModeParamIdx && gnaOperation->Parameters[PoolModeParamIdx] != nullptr) || (gnaOperation->NumberOfParameters > PoolWinParamIdx && gnaOperation->Parameters[PoolWinParamIdx] != nullptr) || (gnaOperation->NumberOfParameters > PoolStrideParamIdx && gnaOperation->Parameters[PoolStrideParamIdx] != nullptr)) { THROW_GNA_EXCEPTION << "Pooling parameters should not be initialized"; @@ -1631,15 +1671,41 @@ void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(intel_nnet_type_t *ptr_nnet HelperGna2OperationSetParameter(gnaOperation, gnaUserAllocator, gnaUserFree, PoolWinParamIdx, poolWindow); HelperGna2OperationSetParameter(gnaOperation, gnaUserAllocator, gnaUserFree, PoolStrideParamIdx, poolStride); - const auto inVecCnt = gnaOperation->Operands[InOpIdx]->Shape.Dimensions[1]; - - const auto nFltSize = gnaOperation->Operands[FilterOpIdx]->Shape.Dimensions[1]; - // Always move 1 "row" - const auto fltStrideSz = reinterpret_cast(gnaOperation->Parameters[ConvStrideParamIdx])->Dimensions[0]; - const auto maxNCOE = (inVecCnt - nFltSize) / fltStrideSz + 1; - // FLAT input matrix, pooled outputs per filter - const_cast(gnaOperation->Operands[OutOpIdx])->Shape.Dimensions[1] = - (maxNCOE - 1) / poolStride->Dimensions[0] + 1; + auto& outputTensor = const_cast(*gnaOperation->Operands[OutOpIdx]); + const auto fltStrideShape = reinterpret_cast(gnaOperation->Parameters[ConvStrideParamIdx]); + // adjust Gna2OperationTypeConvolution fused layer output dimensions to reflect convolution zeroPadding and pooling + if (gnaOperation->Operands[InOpIdx]->Shape.NumberOfDimensions == 2) { // kDnnConvolutional1dOp + const auto inVecCnt = gnaOperation->Operands[InOpIdx]->Shape.Dimensions[1]; + + const auto nFltSize = gnaOperation->Operands[FilterOpIdx]->Shape.Dimensions[1]; + // Always move 1 "row" + const auto fltStride = fltStrideShape->Dimensions[0]; + const auto outFromConv = outputFromConv(inVecCnt, nFltSize, fltStride); + // FLAT input matrix, pooled outputs per filter + // TODO: Issue 50386 check why (outFromConv - 1) an not (outFromConv - poolingWindow) + outputTensor.Shape.Dimensions[1] = + (outFromConv - 1) / poolStride->Dimensions[0] + 1; + } else { // kDnnConvolutional2dOp + // Override GNA operation output pointer with the one from pooling component + outputTensor.Data = comp.ptr_outputs; + + Gna2Shape zeroPadding{}; + if (gnaOperation->NumberOfParameters > ZeroPaddingParamIdx && gnaOperation->Parameters[ZeroPaddingParamIdx] != nullptr) { + zeroPadding = *reinterpret_cast(gnaOperation->Parameters[ZeroPaddingParamIdx]); + } + const int beginOfHInNHWC = 1; + const int beginOfHInHW = 0; + for (auto&& dimHW : { 0, 1 }) { + const auto inputPadded = gnaOperation->Operands[InOpIdx]->Shape.Dimensions[beginOfHInNHWC + dimHW] + + zeroPadding.Dimensions[beginOfHInHW + dimHW] * 2; + const auto nFltSize = gnaOperation->Operands[FilterOpIdx]->Shape.Dimensions[beginOfHInNHWC + dimHW]; + const auto fltStride = fltStrideShape->Dimensions[beginOfHInHW + dimHW]; + const auto outFromConv = outputFromConv(inputPadded, nFltSize, fltStride); + outputTensor.Shape.Dimensions[beginOfHInNHWC + dimHW] = + outputFromPooling(outFromConv, poolWindow->Dimensions[beginOfHInHW + dimHW], poolStride->Dimensions[beginOfHInHW + dimHW]); + } + AdvanceOperationIfAllApplied(component, i, gnaOperation); + } } #else } else if (pLayer->nLayerKind == INTEL_CONVOLUTIONAL) { @@ -1651,21 +1717,18 @@ void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(intel_nnet_type_t *ptr_nnet if (pConvolutionalLayer->pwl.nSegments != 0) { THROW_GNA_EXCEPTION << "Encountered activation component before pooling component at." << i; } else { - pConvolutionalLayer->poolType = - (component[i].op.maxpool.do_sum_not_max) ? INTEL_SUM_POOLING : INTEL_MAX_POOLING; - pConvolutionalLayer->nPoolSize = component[i].op.maxpool.num_inputs; - pConvolutionalLayer->nPoolStride = component[i].op.maxpool.num_inputs_step; - + pConvolutionalLayer->poolType = INTEL_MAX_POOLING; + // TODO: issue 50379 find out why looks like CNN1D pooling uses stride == window only + pConvolutionalLayer->nPoolSize = component[i].op.maxpool.poolingWindowXY[0]; + pConvolutionalLayer->nPoolStride = component[i].op.maxpool.poolingWindowXY[0]; // number of output columns correction - based on GNA-library expectations auto nFltSize = pConvolutionalLayer->nFilterCoefficients; auto fltStrideSz = pConvolutionalLayer->nFeatureMaps * pConvolutionalLayer->nFeatureMapColumns; // always move 1 "row" - auto maxNCOE = (pLayer->nInputColumns - nFltSize) / fltStrideSz + 1; + auto outFromConv = outputFromConv(pLayer->nInputColumns, nFltSize, fltStrideSz); // FLAT input matrix, pooled outputs per filter - pLayer->nOutputColumns = pConvolutionalLayer->nFilters * ((maxNCOE - 1) / pConvolutionalLayer->nPoolStride + 1); - - // old code - // pLayer->nOutputColumns /= pConvolutionalLayer->nPoolStride; + // TODO: Issue 50386 check why (outFromConv - 1) an not (outFromConv - nPoolSize) + pLayer->nOutputColumns = pConvolutionalLayer->nFilters * ((outFromConv - 1) / pConvolutionalLayer->nPoolStride + 1); } #endif } else { @@ -1687,6 +1750,7 @@ void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(intel_nnet_type_t *ptr_nnet || (component[i - 1].operation == kDnnDiagonalOp) || (component[i - 1].operation == kDnnRecurrentOp) || (component[i - 1].operation == kDnnConvolutional1dOp) + || (component[i - 1].operation == kDnnConvolutional2dOp) || ((component[i - 1].operation == kDnnMaxPoolOp) && (component[i - 2].operation == kDnnConvolutional1dOp))) { if (gnaOperation->Operands[PwlOpIdx] == nullptr) { @@ -1703,9 +1767,21 @@ void GNAPluginNS::backend::AMIntelDNN::InitGNAStruct(intel_nnet_type_t *ptr_nnet THROW_GNA_EXCEPTION << "PWL after CNN output size mismatch"; } } + if (component[i - 1].operation == kDnnConvolutional2dOp) { + if (outputTensor.Shape.NumberOfDimensions != 4) { + THROW_GNA_EXCEPTION << "CNN2D output NumberOfDimensions != 4"; + } + if (outputTensor.Shape.Dimensions[0] * + outputTensor.Shape.Dimensions[1] * + outputTensor.Shape.Dimensions[2] * + outputTensor.Shape.Dimensions[3] != + comp.num_columns_out * comp.num_rows_out) { + THROW_GNA_EXCEPTION << "PWL after CNN2D output size mismatch"; + } + } } } - gnaOperation++; + AdvancePwlOperationIfAllApplied(component, i, gnaOperation); #else pLayer->pOutputs = component[i].ptr_outputs; pLayer->nBytesPerOutput = component[i].num_bytes_per_output; diff --git a/inference-engine/src/gna_plugin/backend/am_intel_dnn.hpp b/inference-engine/src/gna_plugin/backend/am_intel_dnn.hpp index 67023fb4496e2d..87a71b010c7741 100644 --- a/inference-engine/src/gna_plugin/backend/am_intel_dnn.hpp +++ b/inference-engine/src/gna_plugin/backend/am_intel_dnn.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -141,6 +141,7 @@ class AMIntelDNN { OvGnaTensor filterTensor, OvGnaTensor biasTensor, std::array convStride, + std::array zeroPadding, float weight_scale_factor, float output_scale_factor, A*& ptr_inputs, @@ -153,6 +154,7 @@ class AMIntelDNN { filterTensor, biasTensor, convStride, + zeroPadding, weight_scale_factor, output_scale_factor, (void*&)ptr_inputs, @@ -164,30 +166,22 @@ class AMIntelDNN { template static void InitMaxpoolComponent(intel_dnn_component_t &cmp, - uint32_t num_rows_in, - uint32_t num_columns_in, - uint32_t num_rows_out, - uint32_t num_columns_out, + std::array inCHW, + std::array outCHW, uint32_t num_bytes_per_input, uint32_t num_bytes_per_output, - uint32_t num_pool_size, - uint32_t num_pool_step, - uint32_t num_pool_stride, - bool do_sum_not_max, + std::array poolingWindowXY, + std::array poolingStrideXY, float output_scale_factor, A *&ptr_inputs, B *&ptr_outputs) { InitMaxpoolComponentPrivate(cmp, - num_rows_in, - num_columns_in, - num_rows_out, - num_columns_out, + inCHW, + outCHW, num_bytes_per_input, num_bytes_per_output, - num_pool_size, - num_pool_step, - num_pool_stride, - do_sum_not_max, + poolingWindowXY, + poolingStrideXY, output_scale_factor, (void *&) ptr_inputs, (void *&) ptr_outputs, @@ -387,16 +381,12 @@ class AMIntelDNN { bool postInitMem); static void InitMaxpoolComponentPrivate(intel_dnn_component_t &cmp, - uint32_t num_rows_in, - uint32_t num_columns_in, - uint32_t num_rows_out, - uint32_t num_columns_out, + std::array inCHW, + std::array outCHW, uint32_t num_bytes_per_input, uint32_t num_bytes_per_output, - uint32_t num_pool_size, - uint32_t num_pool_step, - uint32_t num_pool_stride, - bool do_sum_not_max, + std::array poolingWindowXY, + std::array poolingStrideXY, float output_scale_factor, void *&ptr_inputs, void *&ptr_outputs, @@ -467,6 +457,7 @@ class AMIntelDNN { OvGnaTensor filterTensor, OvGnaTensor biasTensor, std::array convStride, + std::array zeroPadding, float weight_scale_factor, float output_scale_factor, void*& ptr_inputs, diff --git a/inference-engine/src/gna_plugin/backend/dnn.cpp b/inference-engine/src/gna_plugin/backend/dnn.cpp index 70176a1bdb816b..fb7ecd1301035c 100644 --- a/inference-engine/src/gna_plugin/backend/dnn.cpp +++ b/inference-engine/src/gna_plugin/backend/dnn.cpp @@ -1,11 +1,10 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include -#include
#if GNA_LIB_VER == 2 #include diff --git a/inference-engine/src/gna_plugin/backend/dnn.hpp b/inference-engine/src/gna_plugin/backend/dnn.hpp index 3369e73a98c25d..7b8feda361c3b2 100644 --- a/inference-engine/src/gna_plugin/backend/dnn.hpp +++ b/inference-engine/src/gna_plugin/backend/dnn.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -57,5 +57,12 @@ void AdvanceCnnOperationIfAllApplied(const std::vector& c } } +template +void AdvancePwlOperationIfAllApplied(const std::vector& component, int i, T*& operation) { + if (i == component.size() - 1 || (component[i + 1].operation != kDnnMaxPoolOp)) { + operation++; + } +} + } // namespace backend } // namespace GNAPluginNS diff --git a/inference-engine/src/gna_plugin/backend/dnn_components.cpp b/inference-engine/src/gna_plugin/backend/dnn_components.cpp index bfff0888484820..4c0d374f7ff742 100644 --- a/inference-engine/src/gna_plugin/backend/dnn_components.cpp +++ b/inference-engine/src/gna_plugin/backend/dnn_components.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/backend/dnn_components.hpp b/inference-engine/src/gna_plugin/backend/dnn_components.hpp index fd653f6513e420..5cda9f0cf984d4 100644 --- a/inference-engine/src/gna_plugin/backend/dnn_components.hpp +++ b/inference-engine/src/gna_plugin/backend/dnn_components.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/backend/dnn_traits.hpp b/inference-engine/src/gna_plugin/backend/dnn_traits.hpp index 7e874427d613d0..35a8f53ed8a0a5 100644 --- a/inference-engine/src/gna_plugin/backend/dnn_traits.hpp +++ b/inference-engine/src/gna_plugin/backend/dnn_traits.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // // dnn_traits.hpp : c++ trait approach to define dnn objects diff --git a/inference-engine/src/gna_plugin/backend/dnn_types.cpp b/inference-engine/src/gna_plugin/backend/dnn_types.cpp index 36d8f060b6d565..79c26e99ecb265 100644 --- a/inference-engine/src/gna_plugin/backend/dnn_types.cpp +++ b/inference-engine/src/gna_plugin/backend/dnn_types.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/backend/dnn_types.h b/inference-engine/src/gna_plugin/backend/dnn_types.h index 7681de8489ddfd..403799f4b1be1d 100644 --- a/inference-engine/src/gna_plugin/backend/dnn_types.h +++ b/inference-engine/src/gna_plugin/backend/dnn_types.h @@ -34,9 +34,25 @@ enum DnnActivationType : uint8_t { kActNumType }; +struct FakeQuantizeParams { + int8_t set; + int32_t levels; + // if input is per-channel quantization - input pointers contains per-channel ranges + int8_t inputPerChannel; + float* input_low; + float* input_high; + // if output is per-channel quantization - output pointers contains per-channel ranges + int8_t outputPerChannel; + float* output_low; + float* output_high; +}; + struct DnnActivation { // for prelu DnnActivationType type; + FakeQuantizeParams fqParams; + FakeQuantizeParams srcFQParams; + union { struct { float negative_slope; @@ -50,17 +66,6 @@ struct DnnActivation { float low; float high; } clamp; - struct { - int32_t levels; - // if input is per-channel quantization - input pointers contains per-channel ranges - int8_t inputPerChannel; - float *input_low; - float *input_high; - // if output is per-channel quantization - output pointers contains per-channel ranges - int8_t outputPerChannel; - float *output_low; - float *output_high; - } fakeQuantize; } args; operator DnnActivationType () const noexcept { return type; @@ -152,16 +157,17 @@ typedef struct { typedef struct { std::array convStride; + std::array zeroPadding; float weight_scale_factor; void* ptr_filters; // filters stored one after the other void* ptr_biases; } intel_convolutional2D_t; typedef struct { - uint32_t num_inputs; // pool size - uint32_t num_inputs_step; // pool step - uint32_t num_inputs_stride; // pool stride (number of convolution filters) - bool do_sum_not_max; + std::array poolingWindowXY; + std::array poolingStrideXY; + std::array inCHW; + std::array outCHW; } intel_maxpool_t; typedef struct { @@ -251,7 +257,7 @@ static std::string OvGnaModeToString(OvGnaMode mode) { } #endif -typedef struct { +struct intel_dnn_component_t { #if GNA_LIB_VER == 2 std::vector < OvGnaTensor > tensors; #endif @@ -281,9 +287,9 @@ typedef struct { float output_scale_factor; float input_scale_factor; const char * original_layer_name = nullptr; -} intel_dnn_component_t; +}; -typedef struct { +struct intel_score_error_t { uint32_t num_scores; uint32_t num_errors; float threshold; @@ -295,4 +301,4 @@ typedef struct { float max_rel_error; float sum_rel_error; float sum_squared_rel_error; -} intel_score_error_t; +}; diff --git a/inference-engine/src/gna_plugin/backend/gna_limitations.hpp b/inference-engine/src/gna_plugin/backend/gna_limitations.hpp index 99b62f6332f366..f293b7110cfc47 100644 --- a/inference-engine/src/gna_plugin/backend/gna_limitations.hpp +++ b/inference-engine/src/gna_plugin/backend/gna_limitations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,6 +12,7 @@ namespace GNALimitations { constexpr uint32_t convMinFiltersNum = 4; constexpr uint32_t convMaxFiltersNum = 65532; constexpr uint32_t convFiltersNumDivider = 4; +constexpr uint32_t convEachKernelByteAlignment = 16; } -} // namespace GNAPluginNS \ No newline at end of file +} // namespace GNAPluginNS diff --git a/inference-engine/src/gna_plugin/backend/gna_types.h b/inference-engine/src/gna_plugin/backend/gna_types.h index 4a3c50e77b8cc9..4756d4bff71128 100644 --- a/inference-engine/src/gna_plugin/backend/gna_types.h +++ b/inference-engine/src/gna_plugin/backend/gna_types.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/backend/make_pwl.cpp b/inference-engine/src/gna_plugin/backend/make_pwl.cpp index f7f34d33270504..c63ab7a314526b 100644 --- a/inference-engine/src/gna_plugin/backend/make_pwl.cpp +++ b/inference-engine/src/gna_plugin/backend/make_pwl.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,15 +34,20 @@ void make_gna_pwl(const DnnActivation fun, gna_pwl[0].xBase = static_cast (INT32_MIN & XBASEMASK); // zero out the 2 lsb if (fun == kActSigmoid) { gnalog() << "=========================== Sigmoid Segments ===========================\n"; - gna_pwl[0].yBase = gna_pwl[1].yBase = 0; + auto minVal = fun.fqParams.set? FLOAT_TO_INT16(*fun.fqParams.input_low * out_scale): 0; + gna_pwl[0].yBase = gna_pwl[1].yBase = minVal; gna_pwl[1].xBase = (static_cast (in_scale * (-pwl[0].b / pwl[0].m))) & XBASEMASK; } else if (fun == kActTanh) { gnalog() << "=========================== Tanh Segments ===========================\n"; - gna_pwl[0].yBase = gna_pwl[1].yBase = static_cast(-1.0 * out_scale); + auto minVal = fun.fqParams.set ? FLOAT_TO_INT16(*fun.fqParams.input_low * out_scale) : + static_cast(-1.0 * out_scale); + gna_pwl[0].yBase = gna_pwl[1].yBase = minVal; gna_pwl[1].xBase = (static_cast (in_scale * (-1.0 - pwl[0].b) / pwl[0].m)) & XBASEMASK; } else { gnalog() << "=========================== SoftSign Segments ===========================\n"; - gna_pwl[0].yBase = gna_pwl[1].yBase = static_cast(-1.0 * out_scale); + auto minVal = fun.fqParams.set ? FLOAT_TO_INT16(*fun.fqParams.input_low * out_scale) : + static_cast(-1.0 * out_scale); + gna_pwl[0].yBase = gna_pwl[1].yBase = minVal; gna_pwl[1].xBase = (static_cast (in_scale * (-1.0 - pwl[0].b) / pwl[0].m)) & XBASEMASK; } gna_pwl[0].slope = 0; @@ -74,9 +79,10 @@ void make_gna_pwl(const DnnActivation fun, << "\n"; } // insert extra segment for xvalues > u_bound + auto maxVal = fun.fqParams.set ? *fun.fqParams.input_high : 1.0; gna_pwl[n_segments - 1].xBase = ((uint32_t) (in_scale * (1.0 - pwl[pwl_size - 2].b) / pwl[pwl_size - 2].m)) & XBASEMASK; - gna_pwl[n_segments - 1].yBase = FLOAT_TO_INT16(1.0 * out_scale); + gna_pwl[n_segments - 1].yBase = FLOAT_TO_INT16(maxVal * out_scale); gna_pwl[n_segments - 1].slope = 0; gnalog() << (gna_pwl[n_segments - 1].xBase / in_scale) @@ -223,9 +229,19 @@ void make_gna_pwl(const DnnActivation fun, else gnalog() << "=========================== LeakyReLU Segments ======================\n"; int32_t x_lower = INT32_MIN; + int32_t x_upper = INT32_MAX; int16_t y_lower = INT16_MIN; - if (x_lower < y_lower * in_scale / out_scale) x_lower = FLOAT_TO_INT32(y_lower * in_scale / out_scale); - if (y_lower < x_lower * out_scale / in_scale) y_lower = FLOAT_TO_INT16(x_lower * out_scale / in_scale); + int16_t y_upper = INT16_MAX; + if (fun.fqParams.set) { + x_lower = FLOAT_TO_INT32(*fun.fqParams.input_low * 1.25 * in_scale); + x_upper = FLOAT_TO_INT32(*fun.fqParams.input_high * 1.25 * in_scale); + y_lower = FLOAT_TO_INT16(*fun.fqParams.input_low * 1.25 * out_scale); + y_upper = FLOAT_TO_INT16(*fun.fqParams.input_high * 1.25 * out_scale); + } else { + if (x_lower < y_lower * in_scale / out_scale) x_lower = FLOAT_TO_INT32(y_lower * in_scale / out_scale); + if (y_lower < x_lower * out_scale / in_scale) y_lower = FLOAT_TO_INT16(x_lower * out_scale / in_scale); + } + gna_pwl[0].yBase = y_lower * fun.args.lrelu.negative_slope; s = gna_slope(fun.args.lrelu.negative_slope, in_scale, out_scale); gna_pwl[0].xBase = (x_lower & XBASEMASK) | s.slope_scale_index; // zero out the 2 lsb @@ -244,6 +260,18 @@ void make_gna_pwl(const DnnActivation fun, << " " << 0.0 << " " << (gna_pwl[1].slope * in_scale) / (out_scale*s.slope_scale) << "\n"; + + if (fun.fqParams.set) { // need a right segment + gna_pwl.push_back({ + static_cast(x_upper & XBASEMASK), // zero out the 2 lsb + y_upper, + 0 }); + + gnalog() << (x_upper & XBASEMASK) / in_scale + << " " << gna_pwl[n_segments].yBase / out_scale + << " " << 0 + << "\n"; + } break; } case kActSign: { @@ -281,11 +309,18 @@ void make_gna_pwl(const DnnActivation fun, break; } case kActIdentity: - case kActKaldiLstmClipping: { + case kActKaldiLstmClipping: + case kActFakeQuantize: { int32_t x_lower = INT32_MIN; int32_t x_upper = INT32_MAX; int16_t y_lower = INT16_MIN; int16_t y_upper = INT16_MAX; + if (fun == kActFakeQuantize && fun.fqParams.set) { + x_lower = *fun.fqParams.input_low * in_scale; + x_upper = *fun.fqParams.input_high * in_scale; + y_lower = *fun.fqParams.input_low * out_scale; + y_upper = *fun.fqParams.input_high * out_scale; + } auto n_segments = 2; if (fun == kActKaldiLstmClipping) { gnalog() << "=========================== Clipping Segments ===========================\n"; @@ -311,6 +346,8 @@ void make_gna_pwl(const DnnActivation fun, if (x_upper > y_upper * in_scale / out_scale) x_upper = FLOAT_TO_INT32(y_upper * in_scale / out_scale); if (y_lower < x_lower * out_scale / in_scale) y_lower = FLOAT_TO_INT16(x_lower * out_scale / in_scale); if (y_upper > x_upper * out_scale / in_scale) y_upper = FLOAT_TO_INT16(x_upper * out_scale / in_scale); + } else if (fun == kActFakeQuantize) { + gnalog() << "=========================== Fake Quantize Segments ===========================\n"; } gna_pwl.resize(n_segments); gna_pwl[0].xBase = INT32_MIN & XBASEMASK; // zero out the 2 lsb diff --git a/inference-engine/src/gna_plugin/backend/make_pwl.hpp b/inference-engine/src/gna_plugin/backend/make_pwl.hpp index 68a42f688617d0..eef981034ed2ce 100644 --- a/inference-engine/src/gna_plugin/backend/make_pwl.hpp +++ b/inference-engine/src/gna_plugin/backend/make_pwl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/connection_details.hpp b/inference-engine/src/gna_plugin/connection_details.hpp index 01a34050451a71..7f87d7c95689a5 100644 --- a/inference-engine/src/gna_plugin/connection_details.hpp +++ b/inference-engine/src/gna_plugin/connection_details.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/descriptions/gna_flags.hpp b/inference-engine/src/gna_plugin/descriptions/gna_flags.hpp index 34af49e55862c0..1669fe050fc079 100644 --- a/inference-engine/src/gna_plugin/descriptions/gna_flags.hpp +++ b/inference-engine/src/gna_plugin/descriptions/gna_flags.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,6 +13,7 @@ struct GNAFlags { bool compact_mode = false; bool exclusive_async_requests = false; bool uniformPwlDesign = false; + float pwlMaxErrorPercent = 1.0f; bool gna_openmp_multithreading = false; bool sw_fp32 = false; bool fake_quantized = false; diff --git a/inference-engine/src/gna_plugin/descriptions/gna_input_desc.cpp b/inference-engine/src/gna_plugin/descriptions/gna_input_desc.cpp index a8104e826d36fd..3fc2d49afb6df7 100644 --- a/inference-engine/src/gna_plugin/descriptions/gna_input_desc.cpp +++ b/inference-engine/src/gna_plugin/descriptions/gna_input_desc.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/descriptions/gna_input_desc.hpp b/inference-engine/src/gna_plugin/descriptions/gna_input_desc.hpp index f80931b3efd38c..555e4ab112e6cf 100644 --- a/inference-engine/src/gna_plugin/descriptions/gna_input_desc.hpp +++ b/inference-engine/src/gna_plugin/descriptions/gna_input_desc.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/descriptions/gna_output_desc.hpp b/inference-engine/src/gna_plugin/descriptions/gna_output_desc.hpp index 5a5d271ad70d87..eef68a00e814c0 100644 --- a/inference-engine/src/gna_plugin/descriptions/gna_output_desc.hpp +++ b/inference-engine/src/gna_plugin/descriptions/gna_output_desc.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/frontend/layer_quantizer.hpp b/inference-engine/src/gna_plugin/frontend/layer_quantizer.hpp index dba694b8055ac5..ae0edf28013240 100644 --- a/inference-engine/src/gna_plugin/frontend/layer_quantizer.hpp +++ b/inference-engine/src/gna_plugin/frontend/layer_quantizer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -95,6 +95,15 @@ struct QuantPair { static B optional () { return B();} }; +struct FakeQuantizeParams { + bool paramsSet = false; + uint32_t levelsNum = 1; + float inputMinValue = 1.0f; + float inputMaxValue = 1.0f; + float outputMinValue = 1.0f; + float outputMaxValue = 1.0f; +}; + /** * @brief should allocated blob for specific data type, in case of src blob is nullptr * @tparam T @@ -170,14 +179,41 @@ class Quant { template -inline InferenceEngine::Blob::Ptr fp32_to_precision_blob(InferenceEngine::Blob::Ptr fp32_blob, InferenceEngine::Precision precision, float scale_factor) { +inline InferenceEngine::Blob::Ptr fp32_to_precision_blob(InferenceEngine::Blob::Ptr fp32_blob, InferenceEngine::Precision precision, + float scale_factor, const FakeQuantizeParams& fqParams) { auto prec_blob = InferenceEngine::make_shared_blob({ precision, fp32_blob->getTensorDesc().getDims(), fp32_blob->getTensorDesc().getLayout() }); prec_blob->allocate(); + auto input_low = 0.0f; + auto input_high = 0.0f; + auto output_low = 0.0f; + auto output_high = 0.0f; + auto levels = 1; + if (fqParams.paramsSet) { + input_low = fqParams.inputMinValue; + input_high = fqParams.inputMaxValue; + output_low = fqParams.outputMinValue; + output_high = fqParams.outputMaxValue; + levels = fqParams.levelsNum; + } + int i = 0; for (auto& precValue : *prec_blob) { - auto f32Value = fp32_blob->buffer().template as::value_type*>()[i++] * scale_factor; + auto f32Value = fp32_blob->buffer().template as::value_type*>()[i++]; + if (fqParams.paramsSet) { + auto x = f32Value; + if (x <= std::min(input_low, input_high)) { + f32Value = output_low; + } else if (x > std::max(input_low, input_high)) { + f32Value = output_high; + } else { + f32Value = nearbyint((x - input_low) / (input_high - input_low) * (levels - 1)) / + (levels - 1) * (output_high - output_low) + output_low; + } + } + + f32Value = f32Value * scale_factor; if (f32Value > std::numeric_limits::max()) { precValue = std::numeric_limits::max(); } else if (f32Value < std::numeric_limits::min()) { @@ -190,20 +226,21 @@ inline InferenceEngine::Blob::Ptr fp32_to_precision_blob(InferenceEngine::Blob:: return static_cast(prec_blob); } -inline InferenceEngine::Blob::Ptr fp32_to_precision_blob(InferenceEngine::Blob::Ptr fp32_blob, InferenceEngine::Precision precision, float scale_factor) { +inline InferenceEngine::Blob::Ptr fp32_to_precision_blob(InferenceEngine::Blob::Ptr fp32_blob, InferenceEngine::Precision precision, + float scale_factor, const FakeQuantizeParams &fqParams) { InferenceEngine::Blob::Ptr result_ptr = nullptr; switch (precision) { case InferenceEngine::Precision::FP32: - result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor); + result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor, fqParams); break; case InferenceEngine::Precision::I32: - result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor); + result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor, fqParams); break; case InferenceEngine::Precision::I16: - result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor); + result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor, fqParams); break; case InferenceEngine::Precision::I8: - result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor); + result_ptr = fp32_to_precision_blob(fp32_blob, precision, scale_factor, fqParams); break; default: THROW_GNA_EXCEPTION << "FP32 to " << precision << " not supported"; @@ -232,8 +269,9 @@ inline void quantizeWeightsBiases(const QuantDesc & quantDesc, make_custom_blob(InferenceEngine::C, InferenceEngine::SizeVector({wl->_weights->size()})); intWeights->allocate(); if (intWeights->buffer() == nullptr) { - THROW_GNA_EXCEPTION << InferenceEngine::details::as_status << InferenceEngine::NOT_ALLOCATED - << "cannot copy weights for layer :"<< wl->name << " of size" << intWeights->byteSize(); + IE_THROW(NotAllocated) + << "[GNAPlugin] in function " << __PRETTY_FUNCTION__<< ": " + << "cannot copy weights for layer :"<< wl->name << " of size" << intWeights->byteSize(); } int oIdx = wl->outData[0]->getDims().size() - 1; @@ -259,8 +297,9 @@ inline void quantizeWeightsBiases(const QuantDesc & quantDesc, })); bias->allocate(); if (bias->buffer() == nullptr) { - THROW_GNA_EXCEPTION << InferenceEngine::details::as_status << InferenceEngine::NOT_ALLOCATED - << "cannot copy bias for layer :"<< wl->name <<"of size" << bias->byteSize(); + IE_THROW(NotAllocated) + << "[GNAPlugin] in function " << __PRETTY_FUNCTION__<< ": " + << "cannot copy bias for layer :"<< wl->name <<"of size" << bias->byteSize(); } memset(bias->buffer(), 0, bias->byteSize()); @@ -276,14 +315,14 @@ inline void quantizeWeightsBiases(const QuantDesc & quantDesc, input_scale_factor = quantDataForInputLayer->_dst_quant.GetScale(); if (std::isnan(input_scale_factor) || std::isinf(input_scale_factor)) { - THROW_IE_EXCEPTION << "Unsupported input scale factor value " << input_scale_factor; + IE_THROW() << "Unsupported input scale factor value " << input_scale_factor; } } if (wl->outData[0]->getDims().size() < 2) { - THROW_IE_EXCEPTION << "Unsupported output dims size for " << wl->name <<", should be > 1, but " << wl->outData[0]->getDims().size(); + IE_THROW() << "Unsupported output dims size for " << wl->name <<", should be > 1, but " << wl->outData[0]->getDims().size(); } if (wl->insData[0].lock().get()->getDims().size() < 2) { - THROW_IE_EXCEPTION << "Unsupported input dims size for " << wl->name << ", should be > 1, but " << wl->insData[0].lock().get()->getDims().size(); + IE_THROW() << "Unsupported input dims size for " << wl->name << ", should be > 1, but " << wl->insData[0].lock().get()->getDims().size(); } uint32_t num_rows = isDiagonal ? 1 : wl->outData[0]->getDims()[oIdx]; uint32_t num_columns = isDiagonal ? wl->_weights->size() : wl->insData[0].lock().get()->getDims()[iIdx]; @@ -304,13 +343,15 @@ inline void quantizeWeightsBiases(const QuantDesc & quantDesc, auto quantData = InferenceEngine::getInjectedData(*wl); { - auto per_channel_weights = !quantData->_weights_quant.GetMinValues().empty(); + auto weightsStats = !quantData->_weights_quant.GetMinValues().empty(); auto weightsScale = quantData->_weights_quant.GetScale(); auto dstScale = quantData->_dst_quant.GetScale(); - fnc(wl->_weights->buffer().as(), - wl->_biases ? wl->_biases->buffer().as() : nullptr, + auto blob_precision = wl->_weights->getTensorDesc().getPrecision(); + auto quantizedWeights = blob_precision != InferenceEngine::Precision::FP32 && blob_precision != InferenceEngine::Precision::FP16; + fnc(wl->_weights->buffer().as(), + wl->_biases ? wl->_biases->buffer().as() : nullptr, intWeights->buffer(), - intBiases ? intBiases->buffer() : static_cast(nullptr), + intBiases ? intBiases->buffer() : static_cast(nullptr), input_scale_factor, &weightsScale, &dstScale, @@ -318,12 +359,13 @@ inline void quantizeWeightsBiases(const QuantDesc & quantDesc, num_columns, num_rows_padded, num_columns_padded, + quantizedWeights, quantData->_weights_quant.GetLevels(), - nullptr, - nullptr, - per_channel_weights ? &quantData->_weights_quant.GetMinValues().front(): nullptr, - per_channel_weights ? &quantData->_weights_quant.GetMaxValues().front(): nullptr, - &quantData->_weights_quantized); + quantData->_weights_quant.GetMinValues().size(), + weightsStats ? &quantData->_weights_quant.GetMinValues(true).front() : nullptr, + weightsStats ? &quantData->_weights_quant.GetMaxValues(true).front() : nullptr, + weightsStats ? &quantData->_weights_quant.GetMinValues(false).front() : nullptr, + weightsStats ? &quantData->_weights_quant.GetMaxValues(false).front() : nullptr); } wl->_weights = intWeights; wl->_biases = intBiases; @@ -346,8 +388,9 @@ inline void quantizeWeightsBiasesConv(const QuantDesc & quantDesc, auto intWeights = make_custom_blob(InferenceEngine::C, InferenceEngine::SizeVector({conv->_weights->size()})); intWeights->allocate(); if (intWeights->buffer() == nullptr) { - THROW_GNA_EXCEPTION << InferenceEngine::details::as_status << InferenceEngine::NOT_ALLOCATED - << "cannot copy weights for layer :"<< conv->name << " of size" << intWeights->byteSize(); + IE_THROW(NotAllocated) + << "[GNAPlugin] in function " << __PRETTY_FUNCTION__<< ": " + << "cannot copy weights for layer :"<< conv->name << " of size" << intWeights->byteSize(); } auto getBiasSizeForLayer = [](InferenceEngine::WeightableLayer *wl) { @@ -370,8 +413,9 @@ inline void quantizeWeightsBiasesConv(const QuantDesc & quantDesc, })); bias->allocate(); if (bias->buffer() == nullptr) { - THROW_GNA_EXCEPTION << InferenceEngine::details::as_status << InferenceEngine::NOT_ALLOCATED - << "cannot copy bias for layer :"<< conv->name <<"of size" << bias->byteSize(); + IE_THROW(NotAllocated) + << "[GNAPlugin] in function " << __PRETTY_FUNCTION__<< ": " + << "cannot copy bias for layer :"<< conv->name <<"of size" << bias->byteSize(); } memset(bias->buffer(), 0, bias->byteSize()); @@ -386,14 +430,14 @@ inline void quantizeWeightsBiasesConv(const QuantDesc & quantDesc, input_scale_factor = quantDataForInputLayer->_dst_quant.GetScale(); if (std::isnan(input_scale_factor) || std::isinf(input_scale_factor)) { - THROW_IE_EXCEPTION << "Unsupported input scale factor value " << input_scale_factor; + IE_THROW() << "Unsupported input scale factor value " << input_scale_factor; } } if (conv->outData[0]->getDims().size() < 2) { - THROW_IE_EXCEPTION << "Unsupported output dims size for " << conv->name <<", should be > 1, but " << conv->outData[0]->getDims().size(); + IE_THROW() << "Unsupported output dims size for " << conv->name <<", should be > 1, but " << conv->outData[0]->getDims().size(); } if (conv->insData[0].lock().get()->getDims().size() < 2) { - THROW_IE_EXCEPTION << "Unsupported input dims size for " << conv->name << ", should be > 1, but " << conv->insData[0].lock().get()->getDims().size(); + IE_THROW() << "Unsupported input dims size for " << conv->name << ", should be > 1, but " << conv->insData[0].lock().get()->getDims().size(); } auto inputData = conv->insData[0].lock(); @@ -410,19 +454,29 @@ inline void quantizeWeightsBiasesConv(const QuantDesc & quantDesc, auto quantData = InferenceEngine::getInjectedData(*conv); { + auto weightsStats = !quantData->_weights_quant.GetMinValues().empty(); auto weightsScale = quantData->_weights_quant.GetScale(); auto dstScale = quantData->_dst_quant.GetScale(); - fnc(conv->_weights->buffer().as(), - conv->_biases ? conv->_biases->buffer().as() : nullptr, + auto blob_precision = conv->_weights->getTensorDesc().getPrecision(); + auto quantizedWeights = blob_precision != InferenceEngine::Precision::FP32 && blob_precision != InferenceEngine::Precision::FP16; + fnc(conv->_weights->buffer().as(), + conv->_biases ? conv->_biases->buffer().as() : nullptr, intWeights->buffer(), - intBiases ? intBiases->buffer() : static_cast(nullptr), + intBiases ? intBiases->buffer() : static_cast(nullptr), input_scale_factor, &weightsScale, &dstScale, num_rows, num_columns, num_rows_padded, - num_columns_padded); + num_columns_padded, + quantizedWeights, + quantData->_weights_quant.GetLevels(), + quantData->_weights_quant.GetMinValues().size(), + weightsStats ? &quantData->_weights_quant.GetMinValues(true).front() : nullptr, + weightsStats ? &quantData->_weights_quant.GetMaxValues(true).front() : nullptr, + weightsStats ? &quantData->_weights_quant.GetMinValues(false).front() : nullptr, + weightsStats ? &quantData->_weights_quant.GetMaxValues(false).front() : nullptr); } conv->_weights = intWeights; conv->_biases = intBiases; @@ -473,7 +527,7 @@ class DataQuantizer : public DataQuantizerBas outData->setPrecision(Desc::mandatory().getInputPrecision()); } } else { - if (LayerInfo(*cnnLayer).isActivation() || + if (LayerInfo(*cnnLayer).isActivation() || LayerInfo(*cnnLayer).isCopy() || LayerInfo(*cnnLayer).isNonFunctional() || LayerInfo(*cnnLayer).isPermute() || @@ -483,6 +537,13 @@ class DataQuantizer : public DataQuantizerBas outData->setPrecision(Desc::mandatory().getInputPrecision()); } } + // for pooling layer output precision is the same as input precision + if (LayerInfo(*cnnLayer).isMaxPooling()) { + const auto inputPrecision = cnnLayer->insData.front().lock()->getPrecision(); + for (auto&& outData : cnnLayer->outData) { + outData->setPrecision(inputPrecision); + } + } } cnnLayer->precision = Desc::mandatory().getInputPrecision(); @@ -494,11 +555,22 @@ class DataQuantizer : public DataQuantizerBas if (initial_precision == InferenceEngine::Precision::FP16) { cnnLayer->blobs["custom"] = make_fp32_blob(cnnLayer->blobs["custom"]); } - auto const_scale_factor = InferenceEngine::getInjectedData(*cnnLayer)->_dst_quant.GetScale(); + auto quantParams = InferenceEngine::getInjectedData(*cnnLayer); auto new_const_blob = InferenceEngine::Blob::CreateFromData(cnnLayer->outData[0]); auto const_blob = cnnLayer->blobs["custom"]; if (const_blob->getTensorDesc().getPrecision() == InferenceEngine::Precision::FP32) { - cnnLayer->blobs["custom"] = fp32_to_precision_blob(const_blob, cnnLayer->outData[0]->getPrecision(), const_scale_factor); + auto fqParams = FakeQuantizeParams{}; + if (quantParams->_dst_quant.IsStatsSet()) { + fqParams.paramsSet = true; + fqParams.levelsNum = quantParams->_dst_quant.GetLevels(); + fqParams.inputMinValue = quantParams->_dst_quant.GetMinValues(true).front(); + fqParams.inputMaxValue = quantParams->_dst_quant.GetMaxValues(true).front(); + fqParams.outputMinValue = quantParams->_dst_quant.GetMinValues(false).front(); + fqParams.outputMaxValue = quantParams->_dst_quant.GetMaxValues(false).front(); + } + + cnnLayer->blobs["custom"] = fp32_to_precision_blob(const_blob, cnnLayer->outData[0]->getPrecision(), + quantParams->_dst_quant.GetScale(), fqParams); } } diff --git a/inference-engine/src/gna_plugin/frontend/model_quantizer.hpp b/inference-engine/src/gna_plugin/frontend/model_quantizer.hpp index 523fdb3d47ad75..46b000e35df2ba 100644 --- a/inference-engine/src/gna_plugin/frontend/model_quantizer.hpp +++ b/inference-engine/src/gna_plugin/frontend/model_quantizer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "gna_graph_tools.hpp" @@ -77,7 +78,8 @@ class ModelQuantizer { scaleIndex++; } - propagateScaleFactor(sortedNewNet, T::mandatory().getWeightsPrecision().size()); + bool isFakeQuantize = std::is_same() || std::is_same(); + propagateScaleFactor(sortedNewNet, T::mandatory().getWeightsPrecision().size(), isFakeQuantize); // sorted order gives possibility for propagate quantisation along depended layers for (auto &&layer : sortedNewNet) { @@ -88,8 +90,8 @@ class ModelQuantizer { } private : - void propagateScaleFactor(std::vector & net, int weightsBytesSize) const { - ScaleFactorCalculator sf(net, weightsBytesSize); + void propagateScaleFactor(std::vector & net, int weightsBytesSize, bool fakeQuantize) const { + ScaleFactorCalculator sf(net, weightsBytesSize, fakeQuantize); while (!sf.allLayersProcessed()) { for (auto &&layer : sf.getStartLayers()) { diff --git a/inference-engine/src/gna_plugin/frontend/precision_ex.hpp b/inference-engine/src/gna_plugin/frontend/precision_ex.hpp index 5af1f4bf3c3f40..c29ec5e48a0c6f 100644 --- a/inference-engine/src/gna_plugin/frontend/precision_ex.hpp +++ b/inference-engine/src/gna_plugin/frontend/precision_ex.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/frontend/quantization.cpp b/inference-engine/src/gna_plugin/frontend/quantization.cpp index 33999cffe3ecf3..df060354f09edb 100644 --- a/inference-engine/src/gna_plugin/frontend/quantization.cpp +++ b/inference-engine/src/gna_plugin/frontend/quantization.cpp @@ -1,14 +1,14 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include -#include
#include #include #include "backend/gna_types.h" #include "quantization.h" +#include #ifdef DEBUG #define QUANTWARNING(...) (fprintf(stderr, __VA_ARGS__)) @@ -19,25 +19,43 @@ template<> void QuantizationCallback::runFakeQuantize() const { + if (quantizedWeights) { + THROW_GNA_EXCEPTION << "Quantized weights are not yet supported in int16 quantization mode"; + } + uint32_t num_saturate = 0; + auto input_low = 0.0f; + auto input_high = 0.0f; + auto output_low = 0.0f; + auto output_high = 0.0f; + auto levels = 1; + if (fq_num_stats > 0) { + input_low = *fq_ptr_input_low; + input_high = *fq_ptr_input_high; + output_low = *fq_ptr_output_low; + output_high = *fq_ptr_output_high; + levels = fq_levels; + } for (uint32_t row = 0; row < num_rows; row++) { for (uint32_t col = 0; col < num_columns; col++) { float rounding_value = (ptr_float_weights[row * num_columns + col] > 0) ? 0.5f : -0.5f; float value = ptr_float_weights[row * num_columns + col]; - if (!*ptr_quantized_weights) { - value = value * *ptr_weight_scale_factor + rounding_value; - } else { - value -= MAX_VAL_2B_WEIGHT; + if (fq_num_stats > 0) { + auto x = value; + if (x <= std::min(input_low, input_high)) { + value = output_low; + } else if (x > std::max(input_low, input_high)) { + value = output_high; + } else { + value = nearbyint((x - input_low) / (input_high - input_low) * (levels - 1)) / + (levels - 1) * (output_high - output_low) + output_low; + } } - int16_t* ptr_weight_16 = ptr_int_weights + (row * num_columns_padded + col); + value = value * *ptr_weight_scale_factor + rounding_value; - if (*ptr_quantized_weights && - (value > std::numeric_limits::max() || - value < std::numeric_limits::min())) { - THROW_GNA_EXCEPTION << "unsupported weights range for I16 quantisation: " << value; - } + int16_t* ptr_weight_16 = ptr_int_weights + (row * num_columns_padded + col); if (value > std::numeric_limits::max()) { *ptr_weight_16 = std::numeric_limits::max(); @@ -91,37 +109,6 @@ void QuantizationCallback::runFakeQuantize() const { template<> void QuantizationCallback::runQuantize() const { uint32_t num_saturate = 0; - - if (*ptr_weight_scale_factor == 1.0) { - // scale factor for weights is not calculated yet - float mean_weight = 0.0; - float mean_weight_squared = 0.0; - float max_weight = -1e20f; - float var_weight; - float mean_plus_2stdev; - - for (uint32_t i = 0; i < num_rows; i++) { - for (uint32_t j = 0; j < num_columns; j++) { - float weight = ptr_float_weights[i * num_columns + j]; - mean_weight += weight; - mean_weight_squared += weight * weight; - if (fabs(weight) > max_weight) { - max_weight = fabs(weight); - } - } - } - - mean_weight /= static_cast(num_rows * num_columns); - mean_weight_squared /= static_cast(num_rows * num_columns); - var_weight = mean_weight_squared - mean_weight * mean_weight; - mean_plus_2stdev = mean_weight + 2.0f * static_cast(sqrtf(var_weight)); - - if (max_weight != 0.0f) { - *ptr_weight_scale_factor = static_cast(MAX_VAL_2B_WEIGHT) / max_weight; - } - *ptr_output_scale_factor = input_scale_factor * *ptr_weight_scale_factor; - } - for (uint32_t row = 0; row < num_rows; row++) { for (uint32_t col = 0; col < num_columns; col++) { float rounding_value = (ptr_float_weights[row * num_columns + col] > 0) ? 0.5f : -0.5f; @@ -176,6 +163,24 @@ void QuantizationCallback::runQuantize() const { } } +std::pair FindMinMaxValues(void* ptr_float_memory, size_t num_elements) { + float* ptr_float_feat = reinterpret_cast(ptr_float_memory); + float min = num_elements ? ptr_float_feat[0] : 0.0; + float max = num_elements ? ptr_float_feat[0] : 0.0; + + for (size_t i = 1; i < num_elements; i++) { + if (fabs(ptr_float_feat[i]) > max) { + max = fabs(ptr_float_feat[i]); + } + + if (fabs(ptr_float_feat[i]) < min) { + min = fabs(ptr_float_feat[i]); + } + } + + return { min, max }; +} + float ScaleFactorForQuantization(void *ptr_float_memory, float target_max, size_t num_elements) { float *ptr_float_feat = reinterpret_cast(ptr_float_memory); float max = 0.0; @@ -224,17 +229,37 @@ template<> void QuantizationCallback::runFakeQuantize() const { uint32_t num_saturate = 0; - if (fq_ptr_output_high == nullptr || fq_ptr_output_low == nullptr) { - THROW_GNA_EXCEPTION << "Fake quantized output range not set"; - } - if (fq_levels == 0 || fq_levels == 1) { - THROW_GNA_EXCEPTION << "Fake quantized levels not set"; - } - + auto input_low = 0.0f; + auto input_high = 0.0f; + auto output_low = 0.0f; + auto output_high = 0.0f; + auto levels = 1; + float valueAcc = 0.0; for (uint32_t i = 0; i < num_rows; i++) { - uint32_t channel_multiplier = ((fq_ptr_output_high[i] - fq_ptr_output_low[i]) * - *ptr_weight_scale_factor) / (fq_levels - 1) + 0.5f; - ptr_int_biases[i].multiplier = static_cast (channel_multiplier); + uint32_t channel_multiplier = 1; + if (fq_num_stats > 0) { + auto idx = fq_num_stats == 1 ? 0 : i; + input_low = fq_ptr_input_low[idx]; + input_high = fq_ptr_input_high[idx]; + output_low = fq_ptr_output_low[idx]; + output_high = fq_ptr_output_high[idx]; + levels = fq_levels; + + channel_multiplier = ((input_high - input_low) * *ptr_weight_scale_factor) / (levels - 1); + } else { + float scaled_row_max = 0; + for (uint32_t col = 0; col < num_columns; col++) { + float value = ptr_float_weights[i * num_columns + col] * *ptr_weight_scale_factor; + valueAcc += value; + if (fabs(value) > scaled_row_max) { + scaled_row_max = fabs(value); + } + } + + channel_multiplier = scaled_row_max / static_cast(MAX_VAL_1B_WEIGHT); + } + + ptr_int_biases[i].multiplier = static_cast (channel_multiplier + 0.5f); if (channel_multiplier > MAX_OUT_MULTIPLIER) { THROW_GNA_EXCEPTION << "invalid channel multiplier: " << channel_multiplier; } @@ -243,19 +268,25 @@ void QuantizationCallback::runFakeQuantize() const auto offset = i * num_columns + j; auto rounding_value = (ptr_float_weights[i * num_columns + j] > 0) ? 0.5f : -0.5f; float value = ptr_float_weights[offset]; - if (!*ptr_quantized_weights) { + if (!quantizedWeights) { + if (fq_num_stats > 0) { + auto x = value; + if (x <= std::min(input_low, input_high)) { + value = output_low; + } else if (x > std::max(input_low, input_high)) { + value = output_high; + } else { + value = nearbyint((x - input_low) / (input_high - input_low) * (levels - 1)) / + (levels - 1) * (output_high - output_low) + output_low; + } + } + value = value * (*ptr_weight_scale_factor / ptr_int_biases[i].multiplier) + rounding_value; } else { value -= MAX_VAL_1B_WEIGHT; } auto normalizedWeight = static_cast(value); - if (*ptr_quantized_weights && - (value > std::numeric_limits::max() || - value < std::numeric_limits::min())) { - THROW_GNA_EXCEPTION << "unsupported weights range for I8 quantization: " << value; - } - if (value > std::numeric_limits::max()) { normalizedWeight = std::numeric_limits::max(); num_saturate++; @@ -305,44 +336,10 @@ void QuantizationCallback::runFakeQuantize() const template<> void QuantizationCallback::runQuantize() const { if (ptr_int_biases == nullptr) { - THROW_IE_EXCEPTION << "Int biases are empty"; + IE_THROW() << "Int biases are empty"; } uint32_t num_saturate = 0; - if (*ptr_weight_scale_factor == 1.0) { - // scale factor for weights is not calculated yet - float mean_weight = 0.0; - float mean_weight_squared = 0.0; - float max_weight = -1e20f; - float var_weight; - float mean_plus_2stdev; - - for (uint32_t i = 0; i < num_rows; i++) { - for (uint32_t j = 0; j < num_columns; j++) { - float weight = ptr_float_weights[i*num_columns + j]; - mean_weight += weight; - mean_weight_squared += weight * weight; - if (fabs(weight) > max_weight) { - max_weight = fabs(weight); - } - } - } - - mean_weight /= static_cast(num_rows * num_columns); - mean_weight_squared /= static_cast(num_rows * num_columns); - var_weight = mean_weight_squared - mean_weight * mean_weight; - mean_plus_2stdev = mean_weight + 2.0f * static_cast(sqrtf(var_weight)); - - *ptr_weight_scale_factor = static_cast(MAX_VAL_1B_WEIGHT) / max_weight; - - // For 8 bit weights quantize as follows: - // 1. adjust scale factor to increase dynamic range of entire matrix by max multiplier - // 2. find maximum scaled weight for each row - // 3. find multiplier such that dividing by the multiplier brings row back within 8-bit dynamic range - // 4. quantize and store scaled row - *ptr_weight_scale_factor = MAX_OUT_MULTIPLIER * *ptr_weight_scale_factor; // increase dynamic range by max multiplier - *ptr_output_scale_factor = input_scale_factor * *ptr_weight_scale_factor; - } float valueAcc = 0.0; for (uint32_t row = 0; row < num_rows; row++) { float scaled_row_max = 0; diff --git a/inference-engine/src/gna_plugin/frontend/quantization.h b/inference-engine/src/gna_plugin/frontend/quantization.h index 67a72aadadff69..7817b66da297a5 100644 --- a/inference-engine/src/gna_plugin/frontend/quantization.h +++ b/inference-engine/src/gna_plugin/frontend/quantization.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,12 +31,13 @@ struct QuantizationCallback { uint32_t num_rows_padded; uint32_t num_columns_padded; + bool quantizedWeights; int32_t fq_levels; + const size_t fq_num_stats; const float *fq_ptr_input_low; const float *fq_ptr_input_high; - const float *fq_ptr_output_low; - const float *fq_ptr_output_high; - const bool* ptr_quantized_weights; + const float* fq_ptr_output_low; + const float* fq_ptr_output_high; void runQuantize() const; void runFakeQuantize() const; @@ -45,5 +46,6 @@ struct QuantizationCallback { template class QuantizationCallback; template class QuantizationCallback; +std::pair FindMinMaxValues(void* ptr_float_memory, size_t num_elements); float ScaleFactorForQuantization(void *ptr_float_memory, float target_max, size_t num_elements); void QuantizeVector16(float *ptr_float_memory, int16_t *ptr_int_memory, uint32_t num_elements, float scale_factor); diff --git a/inference-engine/src/gna_plugin/frontend/quantized_layer_params.hpp b/inference-engine/src/gna_plugin/frontend/quantized_layer_params.hpp index 5f6c6a609071c1..4de70f711e89db 100644 --- a/inference-engine/src/gna_plugin/frontend/quantized_layer_params.hpp +++ b/inference-engine/src/gna_plugin/frontend/quantized_layer_params.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -24,27 +24,57 @@ class Quantization { int32_t GetLevels() const { return levels; } - void SetMinValues(const std::vector &min) { - min_values.clear(); - min_values.insert(min_values.end(), min.begin(), min.end()); + bool IsStatsSet() const { + return !input_min_values.empty() && !input_max_values.empty(); } - const std::vector& GetMinValues() const { - return min_values; + void SetMinValues(const std::vector &min, bool input = true) { + if (input) { + input_min_values.clear(); + input_min_values.insert(input_min_values.end(), min.begin(), min.end()); + } else { + output_min_values.clear(); + output_min_values.insert(output_min_values.end(), min.begin(), min.end()); + } } - void SetMaxValues(const std::vector& max) { - max_values.clear(); - max_values.insert(max_values.end(), max.begin(), max.end()); + std::vector& GetMinValues(bool input = true) { + if (input) { + return input_min_values; + } + + return output_min_values; + } + void SetMaxValues(const std::vector& max, bool input = true) { + if (input) { + input_max_values.clear(); + input_max_values.insert(input_max_values.end(), max.begin(), max.end()); + } else { + output_max_values.clear(); + output_max_values.insert(output_max_values.end(), max.begin(), max.end()); + } + } + std::vector& GetMaxValues(bool input = true) { + if (input) { + return input_max_values; + } + + return output_max_values; } - const std::vector& GetMaxValues() const { - return max_values; + void CopyStats(Quantization &src) { + levels = src.GetLevels(); + SetMinValues(src.GetMinValues(true), true); + SetMaxValues(src.GetMaxValues(true), true); + SetMinValues(src.GetMinValues(false), false); + SetMaxValues(src.GetMaxValues(false), false); } private: float scale = 1.0f; bool scale_set = false; int32_t levels = 0; - std::vector min_values; - std::vector max_values; + std::vector input_min_values; + std::vector input_max_values; + std::vector output_min_values; + std::vector output_max_values; }; struct QuantizedLayerParams { @@ -53,7 +83,6 @@ struct QuantizedLayerParams { // deprecate this Quantization _weights_quant; - bool _weights_quantized = false; Quantization _bias_quant; float _o_shift = 0.0f; float _b_shift = 0.0f; diff --git a/inference-engine/src/gna_plugin/frontend/scale_factor_calc.hpp b/inference-engine/src/gna_plugin/frontend/scale_factor_calc.hpp index c11078021d6165..80280df403a0f7 100644 --- a/inference-engine/src/gna_plugin/frontend/scale_factor_calc.hpp +++ b/inference-engine/src/gna_plugin/frontend/scale_factor_calc.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,9 +16,13 @@ #include "layers/gna_layer_info.hpp" #include "gna_plugin_log.hpp" #include "gna_slope_scale.h" +#include "runtime/pwl.h" namespace GNAPluginNS { namespace frontend { +static const float MIN_SEARCH_WEIGHTS_VAL = 1.0f; +static const float MAX_SEARCH_WEIGHTS_VAL = 1024.0f; + struct ScaleFactorUpdateResult { InferenceEngine::CNNLayer *restartLayer = nullptr; ScaleFactorUpdateResult() = default; @@ -29,6 +33,146 @@ struct ScaleFactorUpdateResult { } }; +/** + * @brief Compares two float values and returns if they are equal + * @param p1 First float value + * @param p2 Second float value + * @return Returns true if two float values are equal + */ +static bool fp32eq(float p1, float p2) { + return (std::abs(p1 - p2) <= 0.00001f * std::min(std::abs(p1), std::abs(p2))); +} + +/** + * @brief Calculates PWL slopes for specified function in a given input range + * @param info Layer information + * @return Array of slopes for a function + */ +static std::vector getPWLSlopes(const LayerInfo& info) { + if (info.isIdentity() || info.isFakeQuantize() || info.isRelu() || info.isClamp() || info.isAbs()) { + return { 1.0f }; + } + + return {}; +} + +/** + * @brief Finds the best output activation scale factor that allows to get the most precise PWL slope + * @param inScale Input activation layer scale factor + * @param outScales Array of output activation scale factors + * @param slopes Array of slopes for a given function + * @return Best output activation scale factor + */ +static float selectBestOutputScaleFactors(float inScale, std::vector outScales, const std::vector& slopes) { + std::vector scaleErrors; + for (size_t i = 0; i < outScales.size(); ++i) { + auto outScale = outScales[i]; + + auto sd = 0.0; + for (size_t j = 0; j < slopes.size(); ++j) { + auto s = gna_slope(slopes[j], inScale, outScale); + auto slope = static_cast(s.slope * s.slope_scale); + if (slope < static_cast(std::numeric_limits::min()) && slope > static_cast(std::numeric_limits::max())) { + sd += std::numeric_limits::max(); + continue; + } + + auto testSlope = static_cast(slope) / s.slope_scale * inScale / outScale; + if (fp32eq(testSlope, slopes[j])) { + return outScale; + } + + sd += pow(testSlope - slopes[j], 2.0); + } + + sd /= slopes.size(); + sd = sqrtf(sd); + scaleErrors.push_back(sd); + } + + size_t minIndex = 0; + auto minError = scaleErrors[0]; + for (size_t i = 1; i < scaleErrors.size(); ++i) { + if (scaleErrors[i] < minError) { + minError = scaleErrors[i]; + minIndex = i; + } + } + + return outScales[minIndex]; +} + +/** + * @brief Finds the weights scale factor that allows to get the most precise PWL slope + * @param inScale Input weightable layer scale factor + * @param outScale Output activation scale factor + * @param weightsScales Array of weights scales to check + * @return Best weights scale factor + */ +static float selectBestWeightsScaleFactors(float inScale, float outScale, std::vector weightsScales, + const std::vector& slopes) { + std::vector scaleErrors; + for (size_t i = 0; i < weightsScales.size(); ++i) { + auto weightScale = weightsScales[i]; + + auto sd = 0.0; + for (size_t j = 0; j < slopes.size(); ++j) { + auto s = gna_slope(slopes[j], inScale * weightScale, outScale); + auto slope = static_cast(s.slope * s.slope_scale); + if (slope < static_cast(std::numeric_limits::min()) && slope > static_cast(std::numeric_limits::max())) { + sd += std::numeric_limits::max(); + continue; + } + + auto testSlope = static_cast(slope) / s.slope_scale * (inScale * weightScale) / outScale; + if (fp32eq(testSlope, slopes[j])) { + return outScale; + } + sd += pow(testSlope - slopes[j], 2.0); + } + + sd /= slopes.size(); + sd = sqrtf(sd); + scaleErrors.push_back(sd); + } + + size_t minIndex = 0; + auto minError = scaleErrors[0]; + for (size_t i = 1; i < scaleErrors.size(); ++i) { + if (scaleErrors[i] < minError) { + minError = scaleErrors[i]; + minIndex = i; + } + } + + return weightsScales[minIndex]; +} + +/** + * @brief Generates specified number of scale factors in a given range. + * @param startRange First scale factor + * @param endRange Last scale factor + * @param numIterations number of scale factors to generate + * @return Array of scale factors + */ +static std::vector generateScaleFactors(float startRange, float endRange, size_t numScaleFactors) { + if (!numScaleFactors) { + return { startRange, endRange }; + } + + auto scaleFactors = std::vector{}; + auto domain = endRange - startRange; + auto step = domain / numScaleFactors; + for (size_t i = 0; i <= numScaleFactors; ++i) { + auto scale = startRange + step * i; + if (!std::isnan(scale)) { + scaleFactors.push_back(scale); + } + } + + return scaleFactors; +} + /** * @brief calculates output scale factor per layer * @tparam T @@ -44,7 +188,7 @@ class ScaleFactorPerLayer { * @param result * @return */ - bool operator()(T cnnLayer, int weightsSize, ScaleFactorUpdateResult &result) { + bool operator()(T cnnLayer, int weightsSize, ScaleFactorUpdateResult &result, const bool fakeQuantize) { return false; } }; @@ -54,17 +198,15 @@ class ScaleFactorPerLayer { private : const float activation_scale_factor = 2048.f; const float identity_scale_factor = 2049.0f; + const float max_activation_scale_factor = 4096.0f; const float k = 5; const float k_identity = 6; const double pow_domain = 16; protected : - static bool fp32eq(float p1, float p2) { - return (std::abs(p1 - p2) <= 0.00001f * std::min(std::abs(p1), std::abs(p2))); - } - float getActivationScale(InferenceEngine::CNNLayer const* cnnLayer, - GNAPluginNS::LayerInfo const& layer) { + GNAPluginNS::LayerInfo const& layer, + const bool fakeQuantize) { auto quantizedParams = InferenceEngine::getInjectedData(*cnnLayer); // todo: calculate proper scale factor where we need to expand it a bit to be safe to stay in int16 weights @@ -112,7 +254,7 @@ class ScaleFactorPerLayer { } else if (layer.isPower()) { auto powerLayer = dynamic_cast(cnnLayer); if (!powerLayer) { - THROW_IE_EXCEPTION << "Incorrect Power Layer pointer \n"; + IE_THROW() << "Incorrect Power Layer pointer \n"; } auto input_min_value = static_cast(std::numeric_limits::min()); @@ -136,27 +278,153 @@ class ScaleFactorPerLayer { } } - if (!quantizedParams->_dst_quant.GetMaxValues().empty()) { - auto min_value = quantizedParams->_dst_quant.GetMinValues().front(); - auto max_value = quantizedParams->_dst_quant.GetMaxValues().front(); - auto newScaleFactor = (quantizedParams->_dst_quant.GetLevels() - 1) / (max_value - min_value); - result = newScaleFactor < result ? newScaleFactor : result; + // Identity layer is inserted by GNA passes and requires statistics to correctly set output + // scale factor. POT does not produce any statistics for this layer as it does not exist + // in the source IR. + if (fakeQuantize && !quantizedParams->_dst_quant.IsScaleSet() && layer.isIdentity()) { + auto prevLayer = CNNNetPrevLayer(cnnLayer); + while (prevLayer != nullptr) { + auto prevQuantParams = InferenceEngine::getInjectedData(*prevLayer); + if (prevQuantParams->_dst_quant.IsStatsSet()) { + quantizedParams->_dst_quant.CopyStats(prevQuantParams->_dst_quant); + quantizedParams->_src_quant.CopyStats(prevQuantParams->_dst_quant); + break; + } + + // Take the input statistics only if layer does not modify input values. + if (prevQuantParams->_src_quant.IsStatsSet() && + (LayerInfo(prevLayer).isNonFunctional() || LayerInfo(prevLayer).isMemory() || + LayerInfo(prevLayer).isConst() || LayerInfo(prevLayer).isInput())) { + quantizedParams->_dst_quant.CopyStats(prevQuantParams->_src_quant); + quantizedParams->_src_quant.CopyStats(prevQuantParams->_src_quant); + break; + } + + // Stop searching for statistics if previous layer does not modify input values. + if ((LayerInfo(prevLayer).isWeightable() && !LayerInfo(prevLayer).isWeightableIdentity()) + || LayerInfo(prevLayer).isEltwise() || LayerInfo(prevLayer).isActivation()) { + break; + } + + if (!CNNNetHasPrevLayer(prevLayer.get())) { + break; + } + + prevLayer = CNNNetPrevLayer(prevLayer); + } + + // If did not find statistics by searching previous layers, check if a next layer has + // statistics set. + if (!quantizedParams->_dst_quant.IsStatsSet()) { + auto donotSkip = [](InferenceEngine::CNNLayerPtr) { + return false; + }; + + auto nextLayers = CNNNetGetAllNextLayersSkipCertain(cnnLayer, -1, donotSkip); + for (auto &l : nextLayers) { + auto nextQuantParams = InferenceEngine::getInjectedData(*l); + if (nextQuantParams->_src_quant.IsStatsSet()) { + quantizedParams->_dst_quant.CopyStats(nextQuantParams->_src_quant); + quantizedParams->_src_quant.CopyStats(nextQuantParams->_src_quant); + break; + } + + // Take output statistics only if a next layer does not modify input values + if (nextQuantParams->_dst_quant.IsStatsSet() && + (LayerInfo(l).isNonFunctional() || LayerInfo(l).isMemory())) { + quantizedParams->_dst_quant.CopyStats(nextQuantParams->_dst_quant); + quantizedParams->_src_quant.CopyStats(nextQuantParams->_dst_quant); + break; + } + } + } + } + + // Adjust output scale factor based on statistics (if present) in the following steps: + // 1. calculate scale factor based on output min and max values + // 2. (temporary W/A) clamp scale factor to maximum activation scale factor + // 3. search previous layers if there was already scale factor set + // 4. adjust output scale factor to get the most precise PWL slope + if (quantizedParams->_dst_quant.IsStatsSet()) { + auto minOutValue = quantizedParams->_dst_quant.GetMinValues().front(); + auto maxOutValue = quantizedParams->_dst_quant.GetMaxValues().front(); + auto absMax = std::max(std::abs(minOutValue), std::abs(maxOutValue)); + auto absMin = std::min(std::abs(minOutValue), std::abs(maxOutValue)); + + result = (quantizedParams->_dst_quant.GetLevels() - 1) / (maxOutValue - minOutValue); + if (0 && fp32eq(absMin, 0.0f) && !fp32eq(absMax, 0.0f)) { + result = (quantizedParams->_dst_quant.GetLevels() - 1) / (2 * absMax); + } + // + //result = MAX_VAL_2B_FEAT / absMax; + if (std::isinf(result) || fp32eq(absMax, 0.0f)) { + result = max_activation_scale_factor; + } + + // TODO: remove clamping maximum scale factor + result = result > max_activation_scale_factor ? max_activation_scale_factor : result; + if (!layer.isIdentity() && !layer.isFakeQuantize() && !layer.isRelu() && !layer.isClamp()) { + result = result > activation_scale_factor ? activation_scale_factor : result; + } + + // Take input scale factor from previous layer if previous layer does not modify + // input values + bool usePrevScaleFactor = false; + auto skipNonFunctional = [](InferenceEngine::CNNLayerPtr l) { + return LayerInfo(l).isNonFunctional(); + }; + + auto prevLayer = CNNNetPrevLayerSkipCertain(cnnLayer, 0, skipNonFunctional); + auto prevLayer2 = prevLayer != nullptr? CNNNetPrevLayerSkipCertain(prevLayer, 0, skipNonFunctional): nullptr; + if (prevLayer != nullptr && + (layer.isIdentity() || layer.isFakeQuantize()) && LayerInfo(prevLayer).isWeightableIdentity()) { + auto prevLayerQuant = InferenceEngine::getInjectedData(*prevLayer); + if (!fp32eq(prevLayerQuant->_src_quant.GetScale(), 1.0f) && + (prevLayer2 == nullptr || LayerInfo(prevLayer2).has16BOutput())) { + result = prevLayerQuant->_src_quant.GetScale(); + usePrevScaleFactor = true; + } + } + + // Adjust output scale factor to get the most precise PWL slope. + // NOTE: Currently it is only implemented for identity, clamp, relu and FQ layers. + // For all other layers, it does not improve accuracy. + auto slopes = getPWLSlopes(layer); + if (!slopes.empty() && !usePrevScaleFactor) { + auto div = 10; + auto mul = 10; + auto startRange = result > 1.0f ? static_cast(result) : result; + auto endRange = startRange - startRange / div; + endRange = endRange > 1.0f ? static_cast(endRange) : endRange; + auto scaleFactors = generateScaleFactors(startRange, endRange, static_cast(startRange - endRange) * mul); + auto newScaleFactor = selectBestOutputScaleFactors(quantizedParams->_src_quant.GetScale(), scaleFactors, slopes); + if (!fp32eq(result, newScaleFactor) && + !fp32eq(newScaleFactor, 1.0f) && !fp32eq(newScaleFactor, 0.0f) && !std::isinf(newScaleFactor)) { + gnalog() << "[INFO] Adjusting scale factor for " << cnnLayer->name + << " from: " << result << " to: " << newScaleFactor << "\n"; + result = newScaleFactor; + } + } } return result; } public : - bool operator()(InferenceEngine::CNNLayer *cnnLayer, int weightsSize, ScaleFactorUpdateResult &result) { + bool operator()(InferenceEngine::CNNLayer *cnnLayer, int weightsSize, ScaleFactorUpdateResult &result, const bool fakeQuantize) { if ( !cnnLayer ) { - THROW_IE_EXCEPTION << "Incorrect Convolutional Layer pointer \n"; + IE_THROW() << "Incorrect Convolutional Layer pointer \n"; } LayerInfo layerInfo(*cnnLayer); // TODO: current approach set input scale factor for true input layer(s) equals to provided factor, auto quant = InferenceEngine::getInjectedData(*cnnLayer); if (InferenceEngine::details::CaselessEq()(cnnLayer->type, "Memory")) { - if (!CNNNetHasPrevLayer(cnnLayer) && quant->_dst_quant.IsScaleSet()) { + if (CNNNetHasPrevLayer(cnnLayer) && quant->_dst_quant.IsStatsSet() && !quant->_dst_quant.IsScaleSet()) { + auto minOutValue = quant->_dst_quant.GetMinValues().front(); + auto maxOutValue = quant->_dst_quant.GetMaxValues().front(); + auto scale = (quant->_dst_quant.GetLevels() - 1) / (maxOutValue - minOutValue); + quant->_dst_quant.SetScale(scale); quant->_src_quant = quant->_dst_quant; } @@ -180,7 +448,9 @@ class ScaleFactorPerLayer { return true; } - if (quantSibling->_dst_quant.IsScaleSet()) { + if ((!fakeQuantize && quantSibling->_dst_quant.IsScaleSet()) || + (fakeQuantize && quantSibling->_dst_quant.IsScaleSet() && !fp32eq(quantSibling->_dst_quant.GetScale(), 1.0) && + quantSibling->_dst_quant.GetScale() < inputQuant->_dst_quant.GetScale())) { // means we already restarted propagation input memory layer // need to search for requantiseable layer prior memory output layer InferenceEngine::CNNLayerPtr restartedLayer; @@ -230,7 +500,8 @@ class ScaleFactorPerLayer { << activation_scale_factor << ", restarting from corresponding memory: " << input->name << std::endl; // try updating memory input layer scale factor and restart from it - quantSibling->_src_quant = quantSibling->_dst_quant = inputQuant->_dst_quant; + quantSibling->_src_quant.SetScale(inputQuant->_dst_quant.GetScale()); + quantSibling->_dst_quant.SetScale(inputQuant->_dst_quant.GetScale()); result = ScaleFactorUpdateResult(input.get()); return true; } @@ -241,49 +512,55 @@ class ScaleFactorPerLayer { if (cnnLayer->type == "Const") { if (quant->_dst_quant.IsScaleSet()) { quant->_src_quant = quant->_dst_quant; - return ScaleFactorUpdateResult(); - } - - auto blob = cnnLayer->blobs["custom"]; - auto blob_precision = blob->getTensorDesc().getPrecision(); - - if (blob_precision != InferenceEngine::Precision::FP32 && blob_precision != InferenceEngine::Precision::FP16) { - quant->_dst_quant.SetScale(1.0f); return true; } - if (blob_precision == InferenceEngine::Precision::FP16) { - blob = make_fp32_blob(blob); - } - auto max_val = std::numeric_limits::min(); auto min_val = std::numeric_limits::max(); + if (quant->_dst_quant.IsStatsSet()) { + min_val = quant->_dst_quant.GetMinValues().front(); + max_val = quant->_dst_quant.GetMaxValues().front(); + } else { + auto blob = cnnLayer->blobs["custom"]; + auto blob_precision = blob->getTensorDesc().getPrecision(); + + if (blob_precision != InferenceEngine::Precision::FP32 && blob_precision != InferenceEngine::Precision::FP16) { + quant->_dst_quant.SetScale(1.0f); + return true; + } - auto flt_buf = blob->buffer().as(); - auto size = blob->size(); + if (blob_precision == InferenceEngine::Precision::FP16) { + blob = make_fp32_blob(blob); + } + + auto flt_buf = blob->buffer().as(); + auto size = blob->size(); - for (int i=0; i < size; i++) { - auto val = flt_buf[i]; - if (val > max_val) max_val = val; - if (val < min_val) min_val = val; + for (int i = 0; i < size; i++) { + auto val = flt_buf[i]; + if (val > max_val) max_val = val; + if (val < min_val) min_val = val; + } } + auto levels = fakeQuantize ? MAX_VAL_2B_FEAT : std::numeric_limits::max(); auto abs_val = std::max(std::abs(max_val), std::abs(min_val)); - auto scale_val = static_cast(std::numeric_limits::max()) / abs_val; + auto scale_val = static_cast(levels) / abs_val; + //TODO: use FQ formula for scale factor calculation - // TODO: Investigate what should be the scale in such cases (31910) - if (std::isinf(scale_val)) { - quant->_dst_quant.SetScale(quant->_src_quant.GetScale()); + if (std::isinf(scale_val) || fp32eq(abs_val, 0.0f)) { + quant->_dst_quant.SetScale(fakeQuantize ? levels : 1.0f); } else { quant->_dst_quant.SetScale(scale_val); } + quant->_src_quant.SetScale(quant->_dst_quant.GetScale()); - return ScaleFactorUpdateResult(); + return true; } if (!CNNNetHasPrevLayer(cnnLayer)) { quant->_dst_quant = quant->_src_quant; - return ScaleFactorUpdateResult(); + return true; } // by default layer is pass thru its scale factor @@ -292,17 +569,41 @@ class ScaleFactorPerLayer { THROW_GNA_EXCEPTION << "layer: " << CNNNetPrevLayer(cnnLayer)->name << "not quantized"; } - quant->_src_quant = inputQuant->_dst_quant; - if (layerInfo.isActivation()) { + if (layerInfo.isPower() && !layerInfo.isActivation()) { + auto quant = InferenceEngine::getInjectedData(*cnnLayer); + auto powerLayer = dynamic_cast(cnnLayer); + if (!powerLayer) { + IE_THROW() << "Incorrect Power Layer pointer \n"; + } + + auto powerScale = std::abs(powerLayer->scale); + if (fp32eq(powerScale, 0.0f)) { + powerScale = 1.0f; + } + auto weightsScaleFactor = MAX_VAL_2B_WEIGHT / powerScale; + quant->_src_quant.SetScale(inputQuant->_dst_quant.GetScale()); + quant->_weights_quant.SetScale(weightsScaleFactor); + quant->_dst_quant.SetScale(quant->_weights_quant.GetScale() * quant->_src_quant.GetScale()); + return true; + } else if (layerInfo.isActivation()) { // todo: calculate proper scale factor where we need to expand it a bit to be safe to stay in int16 weights // set the initial value - if (!quant->_dst_quant.IsScaleSet()) { - auto scale = getActivationScale(cnnLayer, layerInfo); + if (!quant->_dst_quant.IsScaleSet() || fp32eq(quant->_dst_quant.GetScale(), 1.0f) || + !fp32eq(quant->_src_quant.GetScale(), inputQuant->_dst_quant.GetScale())) { + quant->_src_quant.SetScale(inputQuant->_dst_quant.GetScale()); + auto scale = getActivationScale(cnnLayer, layerInfo, fakeQuantize); quant->_dst_quant.SetScale(scale); } return true; + } else if (layerInfo.isCropAffined()) { + auto weightsScaleFactor = 1; + quant->_weights_quant.SetScale(weightsScaleFactor); + quant->_src_quant.SetScale(inputQuant->_dst_quant.GetScale()); + quant->_dst_quant.SetScale(quant->_weights_quant.GetScale() * quant->_src_quant.GetScale()); + return true; } - quant->_dst_quant = inputQuant->_dst_quant; + quant->_src_quant.SetScale(inputQuant->_dst_quant.GetScale()); + quant->_dst_quant.SetScale(inputQuant->_dst_quant.GetScale()); return true; } @@ -311,7 +612,7 @@ class ScaleFactorPerLayer { template<> class ScaleFactorPerLayer { public: - bool operator()(InferenceEngine::EltwiseLayer* eltwiseLayer, int weightsSize, ScaleFactorUpdateResult &result) { + bool operator()(InferenceEngine::EltwiseLayer* eltwiseLayer, int weightsSize, ScaleFactorUpdateResult &result, const bool fakeQuantize) { if ( !eltwiseLayer ) { THROW_GNA_EXCEPTION << "Incorrect Eltwise Layer pointer \n"; } @@ -325,7 +626,7 @@ class ScaleFactorPerLayer { switch (eltwiseLayer->_operation) { case InferenceEngine::EltwiseLayer::Prod: { - quantData->_weights_quant = quantParams1->_dst_quant; + quantData->_weights_quant.SetScale(quantParams1->_dst_quant.GetScale()); quantData->_dst_quant.SetScale(quantParams0->_dst_quant.GetScale() * quantParams1->_dst_quant.GetScale()); break; } @@ -344,9 +645,51 @@ class ScaleFactorPerLayer { std::swap(quantParams0, quantParams1); } + auto prevLayer = in1; + while (LayerInfo(prevLayer).isNonFunctional() && CNNNetHasPrevLayer(prevLayer.get(), 0)) { + prevLayer = CNNNetPrevLayer(prevLayer); + } + // this path might result in significant data loss quantData->_bias_quant.SetScale(quantParams1->_dst_quant.GetScale() / quantParams0->_dst_quant.GetScale()); - quantData->_weights_quant.SetScale(quantParams1->_dst_quant.GetScale() / quantParams0->_dst_quant.GetScale()); + auto weightsScale = quantParams1->_dst_quant.GetScale() / quantParams0->_dst_quant.GetScale(); + auto prevLayerIn1 = CNNNetPrevLayer(in1); + // If a previous layer is a layer where freely weights scale factor can be selected, + // try to find the scale factor that will allow to use integer as weights scale factor for eltwise + // operation. + // If the weights scale factor for eltwise sum/sub is not integer, it will cause accuracy degradation. + if (fakeQuantize && LayerInfo(in1).isWeightableIdentity() && + (prevLayerIn1 == nullptr || LayerInfo(prevLayerIn1).has16BOutput())) { + auto bestWeightsScale = 0.0f; + auto bestError = static_cast(std::numeric_limits::max()); + auto scaleIn0Dst = quantParams0->_dst_quant.GetScale(); + auto scaleIn1Src = quantParams1->_src_quant.GetScale(); + for (size_t i = MAX_VAL_2B_FEAT; i > 0; --i) { + auto scaleIn1Dst = i * scaleIn1Src; + auto eltwiseWeightsScale = scaleIn1Dst / scaleIn0Dst; + if (eltwiseWeightsScale < 1.0 || eltwiseWeightsScale > std::numeric_limits::max() - 1) { + continue; + } + + auto error = std::abs(eltwiseWeightsScale - static_cast(eltwiseWeightsScale)); + if (error < bestError) { + bestError = error; + bestWeightsScale = i; + } + + if (fp32eq(error, 0.0f)) { + break; + } + } + + if (!fp32eq(bestWeightsScale, quantParams1->_weights_quant.GetScale())) { + quantParams1->_weights_quant.SetScale(bestWeightsScale); + quantParams1->_dst_quant.SetScale(quantParams1->_weights_quant.GetScale() * quantParams1->_src_quant.GetScale()); + result = ScaleFactorUpdateResult(in1.get()); + return true; + } + } + quantData->_weights_quant.SetScale(weightsScale); quantData->_dst_quant.SetScale(quantParams1->_dst_quant.GetScale()); // eltwise will always work in int16 @@ -382,6 +725,22 @@ class ScaleFactorPerLayer { break; } + if (fakeQuantize && info.isWeightableIdentity()) { + auto quantDataForInputLayer = InferenceEngine::getInjectedData(*in); + if (!fp32eq(quantDataForInputLayer->_weights_quant.GetScale(), 1.0f)) { + auto reducer = quantData->_weights_quant.GetScale() / std::numeric_limits::max(); + reducer = std::max(1.0f, reducer); + auto newWeightsScale = quantDataForInputLayer->_weights_quant.GetScale() / reducer; + newWeightsScale = std::max(1.0f, newWeightsScale); + quantDataForInputLayer->_weights_quant.SetScale(static_cast(newWeightsScale)); + quantDataForInputLayer->_dst_quant.SetScale(quantDataForInputLayer->_weights_quant.GetScale() * + quantDataForInputLayer->_src_quant.GetScale()); + + result = ScaleFactorUpdateResult(in.get()); + return true; + } + } + // if we are here it means that we are in the port 1 if (info.isFullyConnected() || info.isConvolution()) { auto quantDataForInputLayer = InferenceEngine::getInjectedData(*in); @@ -408,7 +767,7 @@ class ScaleFactorPerLayer { template<> class ScaleFactorPerLayer { public: - bool operator()(InferenceEngine::ConcatLayer* concatLayer, int weightsSize, ScaleFactorUpdateResult &result) { + bool operator()(InferenceEngine::ConcatLayer* concatLayer, int weightsSize, ScaleFactorUpdateResult &result, const bool fakeQuantize) { if ( !concatLayer ) { THROW_GNA_EXCEPTION << "Incorrect Concat Layer pointer \n"; } @@ -417,18 +776,13 @@ class ScaleFactorPerLayer { THROW_GNA_EXCEPTION << "Concat layer has unsupported number of incoming layers."; } - auto fp32eq = [](float p1, float p2) -> bool { - return (std::abs(p1 - p2) <= 0.00001f * std::min(std::abs(p1), std::abs(p2))); - }; - auto quantData = InferenceEngine::getInjectedData(*concatLayer); std::vector inputLayers; for (auto input_idx = 0; input_idx != concatLayer->insData.size(); input_idx++) { - auto prev_layer = InferenceEngine::CNNNetPrevLayer(concatLayer, input_idx); - // FlattenConcat inserts reshape between concat and its inputs, which results in taking wrong layers as inputs for scale factor calulation - if (prev_layer->type == "reshape" && prev_layer->insData.size() == 1 && prev_layer->outData.size() == 1) { - prev_layer = InferenceEngine::CNNNetPrevLayer(prev_layer, 0); - } + auto notChangeScaleFactors = [](InferenceEngine::CNNLayerPtr layer) { + return LayerInfo(layer).isNonFunctional() || LayerInfo(layer).isSplit() || LayerInfo(layer).isCopy(); + }; + auto prev_layer = CNNNetPrevLayerSkipCertain(concatLayer, input_idx, notChangeScaleFactors); inputLayers.push_back(prev_layer); } @@ -436,7 +790,7 @@ class ScaleFactorPerLayer { auto in0 = inputLayers.front(); auto quantParams0 = InferenceEngine::getInjectedData(in0); auto scaleFactor = quantParams0->_dst_quant.GetScale(); - auto scaleFactorCheck = [scaleFactor, &fp32eq](InferenceEngine::CNNLayerPtr& inputLayer) { + auto scaleFactorCheck = [scaleFactor](InferenceEngine::CNNLayerPtr& inputLayer) { auto quantParams = InferenceEngine::getInjectedData(inputLayer); return fp32eq(quantParams->_dst_quant.GetScale(), scaleFactor); }; @@ -454,14 +808,14 @@ class ScaleFactorPerLayer { }; GNAPluginNS::QuantizedLayerParams* sourceQuantParams = nullptr; - auto firstInputIt = std::find_if(inputLayers.begin(), inputLayers.end(), inputLayerCheck); - if (firstInputIt != inputLayers.end()) { - auto quantParamsFirst = InferenceEngine::getInjectedData(*firstInputIt); - auto nextInputIt = firstInputIt + 1; + auto sourceLayerIt = std::find_if(inputLayers.begin(), inputLayers.end(), inputLayerCheck); + if (sourceLayerIt != inputLayers.end()) { + auto quantParamsFirst = InferenceEngine::getInjectedData(*sourceLayerIt); + auto nextInputIt = sourceLayerIt + 1; while ((nextInputIt = std::find_if(nextInputIt, inputLayers.end(), inputLayerCheck)) != inputLayers.end()) { auto quantParamsSecond = InferenceEngine::getInjectedData(*nextInputIt); if (!fp32eq(quantParamsSecond->_dst_quant.GetScale(), quantParamsFirst->_dst_quant.GetScale())) { - THROW_GNA_EXCEPTION << "Two Input layers " << (*firstInputIt)->name + THROW_GNA_EXCEPTION << "Two Input layers " << (*sourceLayerIt)->name << " and " << (*nextInputIt)->name << " have different scales in concat!!! \n"; } } @@ -470,7 +824,6 @@ class ScaleFactorPerLayer { // find a source quant value // - 1st candidate - input layer // - 2nd candidate - non-activation layer with non-1 scale factor - // - 3rd candidate - 1st layer with non-1 scale factor static std::map restarted_counter; auto restartedCountIt = restarted_counter.find(concatLayer->name); if (restartedCountIt == restarted_counter.end()) { @@ -478,29 +831,45 @@ class ScaleFactorPerLayer { restartedCountIt = pos.first; } - auto sourceLayerIt = firstInputIt; if (sourceLayerIt == inputLayers.end()) { if (((restartedCountIt->second) / 2) % 2 == 1) { std::reverse(inputLayers.begin(), inputLayers.end()); } - if (((restartedCountIt->second) / 4) % 2 == 0) { - auto sourceLayerCheck = [&fp32eq](InferenceEngine::CNNLayerPtr& inputLayer) { - auto quantParams = InferenceEngine::getInjectedData(inputLayer); - LayerInfo info(inputLayer); - return !info.isActivation() && !fp32eq(quantParams->_dst_quant.GetScale(), 1.0f); - }; - sourceLayerIt = std::find_if(inputLayers.begin(), inputLayers.end(), sourceLayerCheck); - } - } - ++restartedCountIt->second; - if (sourceLayerIt == inputLayers.end()) { - auto nonDefaultScaleFactor = [&fp32eq](InferenceEngine::CNNLayerPtr& inputLayer) { - auto quantParams = InferenceEngine::getInjectedData(inputLayer); - return !fp32eq(quantParams->_dst_quant.GetScale(), 1.0f); - }; + if (fakeQuantize) { + sourceLayerIt = inputLayers.begin(); + auto quantParamsFirst = InferenceEngine::getInjectedData(*inputLayers.begin()); + auto minScaleFactor = quantParamsFirst->_dst_quant.GetScale(); + for (auto it = inputLayers.begin(); it != inputLayers.end(); ++it) { + auto quantParams = InferenceEngine::getInjectedData(*it); + if (quantParams->_dst_quant.GetScale() < minScaleFactor && + !fp32eq(quantParams->_dst_quant.GetScale(), 1.0f) || + fp32eq(minScaleFactor, 1.0f)) { + minScaleFactor = quantParams->_dst_quant.GetScale(); + sourceLayerIt = it; + } + } + } else { + if (((restartedCountIt->second) / 4) % 2 == 0) { + auto sourceLayerCheck = [](InferenceEngine::CNNLayerPtr& inputLayer) { + auto quantParams = InferenceEngine::getInjectedData(inputLayer); + LayerInfo info(inputLayer); + return !info.isActivation() && !fp32eq(quantParams->_dst_quant.GetScale(), 1.0f); + }; + sourceLayerIt = std::find_if(inputLayers.begin(), inputLayers.end(), sourceLayerCheck); + } - sourceLayerIt = std::find_if(inputLayers.begin(), inputLayers.end(), nonDefaultScaleFactor); + if (sourceLayerIt == inputLayers.end()) { + auto nonDefaultScaleFactor = [](InferenceEngine::CNNLayerPtr& inputLayer) { + auto quantParams = InferenceEngine::getInjectedData(inputLayer); + return !fp32eq(quantParams->_dst_quant.GetScale(), 1.0f); + }; + + sourceLayerIt = std::find_if(inputLayers.begin(), inputLayers.end(), nonDefaultScaleFactor); + } + } + + ++restartedCountIt->second; } std::set concatIdxToUpdate; @@ -515,24 +884,29 @@ class ScaleFactorPerLayer { continue; } - // possible case when some of the concat inputs are free to select scale ex: const->concat<-affine - if (!fp32eq(quantParamsIn->_dst_quant.GetScale(), 1.0f) && !LayerInfo(*it).isActivation()) { + if (fakeQuantize) { concatIdxToUpdate.insert(std::distance(inputLayers.begin(), it)); - } + quantParamsIn->_dst_quant.SetScale(quantParams->_dst_quant.GetScale()); + } else { + // possible case when some of the concat inputs are free to select scale ex: const->concat<-affine + if (!fp32eq(quantParamsIn->_dst_quant.GetScale(), 1.0f) && !LayerInfo(*it).isActivation()) { + concatIdxToUpdate.insert(std::distance(inputLayers.begin(), it)); + } - quantParamsIn->_dst_quant.SetScale(quantParams->_dst_quant.GetScale()); + quantParamsIn->_dst_quant.SetScale(quantParams->_dst_quant.GetScale()); + } } } auto updatedScaleFactor = InferenceEngine::getInjectedData(in0)->_dst_quant.GetScale(); - auto equalScaleFactor = [updatedScaleFactor, &fp32eq](InferenceEngine::CNNLayerPtr& inputLayer) { + auto equalScaleFactor = [updatedScaleFactor](InferenceEngine::CNNLayerPtr& inputLayer) { auto quantParams = InferenceEngine::getInjectedData(inputLayer); return fp32eq(quantParams->_dst_quant.GetScale(), updatedScaleFactor); }; auto layerIt = std::find_if_not(inputLayers.begin() + 1, inputLayers.end(), equalScaleFactor); if (layerIt != inputLayers.end()) { - THROW_GNA_EXCEPTION << "layers entered into concat have different scale factors" << concatLayer->name; + THROW_GNA_EXCEPTION << "layers entered into concat have different scale factors. Layer name: " << concatLayer->name; } quantData->_dst_quant.SetScale(sourceQuantParams->_dst_quant.GetScale()); @@ -556,7 +930,7 @@ class ScaleFactorPerLayer { gnalog() << "[UFS] from : " << concatLayer->name << " reached: " << layer->name; // found that direct input to concat is a indirect parent of align filter - so no link required auto info = LayerInfo(layer); - if (!info.isWeightable() && !info.isActivation() && !info.isConst() && !info.isMemory()) { + if (!info.isWeightable() && !info.isActivation() && !info.isConst()) { gnalog() << "... skipped\n"; return; } @@ -576,16 +950,44 @@ class ScaleFactorPerLayer { auto restarLayerInfo = LayerInfo(restartedLayer); if (restarLayerInfo.isActivation()) { // requantize activation by just changing it's output scale factor - quantDataForConCatInput->_dst_quant.SetScale(sourceQuantParams->_dst_quant.GetScale()); - } - if (restarLayerInfo.isConst()) { + auto newScaleFactor = sourceQuantParams->_dst_quant.GetScale(); + auto skipNonFunctional = [](InferenceEngine::CNNLayerPtr l) { + return LayerInfo(l).isNonFunctional(); + }; + + auto prevLayer = CNNNetPrevLayerSkipCertain(restartedLayer, 0, skipNonFunctional); + auto prevLayer2 = prevLayer != nullptr ? CNNNetPrevLayerSkipCertain(prevLayer, 0, skipNonFunctional) : nullptr; + + if (fakeQuantize && prevLayer != nullptr && LayerInfo(prevLayer).isWeightableIdentity() && + (prevLayer2 == nullptr || LayerInfo(prevLayer2).has16BOutput())) { + auto weightsScales = generateScaleFactors(MIN_SEARCH_WEIGHTS_VAL, MAX_SEARCH_WEIGHTS_VAL, + MAX_SEARCH_WEIGHTS_VAL - MIN_SEARCH_WEIGHTS_VAL); + + auto prevLayerQuant = InferenceEngine::getInjectedData(*prevLayer); + auto bestWeightsScale = 1.0f; + auto slopes = getPWLSlopes(restarLayerInfo); + if (!slopes.empty() && !fp32eq(prevLayerQuant->_src_quant.GetScale(), newScaleFactor)) { + bestWeightsScale = selectBestWeightsScaleFactors(prevLayerQuant->_src_quant.GetScale(), + newScaleFactor, weightsScales, { 1.0f }); + } + if (!slopes.empty() && !fp32eq(bestWeightsScale, prevLayerQuant->_weights_quant.GetScale())) { + gnalog() << "[INFO][Concat] Optimizing weights scale factor for '" << prevLayer->name << "' layer. Change from " + << prevLayerQuant->_weights_quant.GetScale() << " to " << bestWeightsScale << "\n"; + + prevLayerQuant->_weights_quant.SetScale(bestWeightsScale); + prevLayerQuant->_dst_quant.SetScale(prevLayerQuant->_weights_quant.GetScale() * prevLayerQuant->_src_quant.GetScale()); + result = ScaleFactorUpdateResult(prevLayer.get()); + return true; + } + } + + quantDataForConCatInput->_dst_quant.SetScale(newScaleFactor); + } else if (restarLayerInfo.isConst()) { gnalog() << "... warning const layer will be requantized\n"; - quantDataForConCatInput->_dst_quant.SetScale(sourceQuantParams->_dst_quant.GetScale()); - } - if (restarLayerInfo.isMemory()) { - gnalog() << "... warning memory layer will be requantized\n"; quantDataForConCatInput->_src_quant.SetScale(sourceQuantParams->_dst_quant.GetScale()); quantDataForConCatInput->_dst_quant.SetScale(sourceQuantParams->_dst_quant.GetScale()); + } else { + THROW_GNA_EXCEPTION << "cannot requantize '" << restartedLayer->name << "' input to concat: " << concatLayer->name; } result = ScaleFactorUpdateResult(restartedLayer.get()); } @@ -608,7 +1010,7 @@ class ScaleFactorPerLayer { uint16_t const _scale_change_threshold_200 = 200; public: - bool operator()(InferenceEngine::WeightableLayer *wl, int weightsSize, ScaleFactorUpdateResult &result) { + bool operator()(InferenceEngine::WeightableLayer *wl, int weightsSize, ScaleFactorUpdateResult &result, const bool fakeQuantize) { if ( !wl ) { THROW_GNA_EXCEPTION << "Incorrect Weightable Layer pointer \n"; } else if (!wl->_weights) { @@ -621,8 +1023,30 @@ class ScaleFactorPerLayer { auto quant = InferenceEngine::getInjectedData(*wl); quant->_src_quant = quantDataForInputLayer->_dst_quant; + if (quant->_weights_quant.IsStatsSet() && !quant->_weights_quant.IsScaleSet()) { + auto getScale = [&quant](size_t i) { + return (quant->_weights_quant.GetLevels() - 1) / + (quant->_weights_quant.GetMaxValues(false)[i] - quant->_weights_quant.GetMinValues(false)[i]); + }; + + float min_channel_scale = getScale(0); + for (uint32_t i = 1; i < quant->_weights_quant.GetMinValues().size(); i++) { + min_channel_scale = std::min(min_channel_scale, getScale(i)); + } + + auto multiplier = 1.0f; + if (quant->_weights_quant.GetLevels() <= std::numeric_limits::max()) { + // GNA supports additional multiplier for only 8bit weights. + // The multipler is used to extend dynamic range. + multiplier = MAX_OUT_MULTIPLIER; + } + + // Common weights scale calculation + quant->_weights_quant.SetScale(min_channel_scale * multiplier); + } + // TODO: pass 8 bits somehow - if (quant->_weights_quant.GetScale() == 1.0f) { + if (!quant->_weights_quant.IsScaleSet()) { size_t scaleRange = 0; if (weightsSize == 2) { scaleRange = MAX_VAL_2B_WEIGHT; @@ -633,7 +1057,7 @@ class ScaleFactorPerLayer { } quant->_weights_quant.SetScale( ScaleFactorForQuantization(wl->_weights->buffer().as(), scaleRange, wl->_weights->size())); - if (quant->_weights_quant.GetScale() == -1.0f) { + if (quant->_weights_quant.GetScale() == -1.0f || (fakeQuantize && LayerInfo(wl).isConcatAlignFilter())) { quant->_weights_quant.SetScale(1.0f); } @@ -686,6 +1110,39 @@ class ScaleFactorPerLayer { } quant->_dst_quant.SetScale(quant->_weights_quant.GetScale() * quant->_src_quant.GetScale()); + if (quant->_dst_quant.IsStatsSet()) { + // Adjust weights scale factor if output values exceed int32 maximum value + + if (wl->_biases && !quant->_bias_quant.IsScaleSet()) { + auto minMax = FindMinMaxValues(wl->_biases->buffer().as(), wl->_biases->size()); + quant->_bias_quant.SetMinValues({ minMax.first }); + quant->_bias_quant.SetMaxValues({ minMax.second }); + + auto biasScale = ScaleFactorForQuantization(wl->_biases->buffer().as(), MAX_VAL_4B_BIAS, wl->_biases->size()); + quant->_bias_quant.SetScale(biasScale); + if (quant->_bias_quant.GetScale() != -1.0f && quant->_bias_quant.GetScale() < quant->_dst_quant.GetScale()) { + quant->_weights_quant.SetScale(quant->_bias_quant.GetScale() / quant->_src_quant.GetScale()); + quant->_dst_quant.SetScale(quant->_weights_quant.GetScale() * quant->_src_quant.GetScale()); + } + } + + auto maxAbsVal = std::max(std::abs(quant->_dst_quant.GetMinValues().front()), + std::abs(quant->_dst_quant.GetMaxValues().front())); + + auto maxIntVal = static_cast(maxAbsVal * quant->_dst_quant.GetScale() + 0.5f); + auto weightsReducer = static_cast(maxIntVal) / std::numeric_limits::max(); + weightsReducer = std::max(1.0, weightsReducer); + if (!fp32eq(weightsReducer, 1.0f)) { + quant->_weights_quant.SetScale(quant->_weights_quant.GetScale() / weightsReducer); + } + + if (fp32eq(quant->_weights_quant.GetScale(), 0.0f) || std::isinf(quant->_weights_quant.GetScale())) { + quant->_weights_quant.SetScale(1.0f); + } + + quant->_dst_quant.SetScale(quant->_weights_quant.GetScale() * quant->_src_quant.GetScale()); + } + return true; } }; @@ -693,8 +1150,8 @@ class ScaleFactorPerLayer { template<> class ScaleFactorPerLayer : public ScaleFactorPerLayer { public: - bool operator()(InferenceEngine::WeightableLayer *wl, int weightsSize, ScaleFactorUpdateResult &result) { - return ScaleFactorPerLayer::operator()(wl, 2, result); + bool operator()(InferenceEngine::WeightableLayer *wl, int weightsSize, ScaleFactorUpdateResult &result, const bool fakeQuantize) { + return ScaleFactorPerLayer::operator()(wl, 2, result, fakeQuantize); } }; @@ -718,10 +1175,11 @@ class ScaleFactorCalculator { mutable Cnt::const_iterator idx; mutable bool needRestart = false; int weightsBytesSize; + bool isFakeQuantize; public: - ScaleFactorCalculator(Cnt &net, int weightsBytesSize) - : net(net), weightsBytesSize(weightsBytesSize) { + ScaleFactorCalculator(Cnt &net, int weightsBytesSize, bool fakeQuantize) + : net(net), weightsBytesSize(weightsBytesSize), isFakeQuantize(fakeQuantize) { idx = std::begin(this->net); } bool needToRestart() const { @@ -737,7 +1195,7 @@ class ScaleFactorCalculator { bool operator()(T ptr) const { needRestart = false; frontend::ScaleFactorUpdateResult result; - if (!frontend::ScaleFactorPerLayer()(ptr, weightsBytesSize, result)) { + if (!frontend::ScaleFactorPerLayer()(ptr, weightsBytesSize, result, isFakeQuantize)) { return false; } if (result) { diff --git a/inference-engine/src/gna_plugin/frontend/weights_converter.hpp b/inference-engine/src/gna_plugin/frontend/weights_converter.hpp index 064e84988fe8fc..d3a7fece06ecfa 100644 --- a/inference-engine/src/gna_plugin/frontend/weights_converter.hpp +++ b/inference-engine/src/gna_plugin/frontend/weights_converter.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna2_model_debug_log.cpp b/inference-engine/src/gna_plugin/gna2_model_debug_log.cpp index 175ccc01f457f1..b47afdc8db3855 100644 --- a/inference-engine/src/gna_plugin/gna2_model_debug_log.cpp +++ b/inference-engine/src/gna_plugin/gna2_model_debug_log.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,6 @@ #if GNA_LIB_VER == 2 #include "gna2_model_debug_log.hpp" #include "gna2-model-api.h" -#include
#include #include @@ -18,9 +17,10 @@ #include #include #include +#include -std::string getLayerType(Gna2OperationType kind) { - switch (kind) { +std::string GetLayerType(Gna2OperationType type) { + switch (type) { case Gna2OperationTypeFullyConnectedAffine: return "Gna2OperationTypeFullyConnectedAffine"; case Gna2OperationTypeElementWiseAffine: return "Gna2OperationTypeElementWiseAffine"; case Gna2OperationTypeRecurrent: return "Gna2OperationTypeRecurrent"; @@ -49,6 +49,7 @@ std::string GetSimpleString(Gna2Shape shape) { } return out.str(); } + template bool NextElement(T & elementIndex, const Gna2Shape& total) { if (total.NumberOfDimensions == 0) return false; @@ -85,6 +86,8 @@ int32_t GetValue(const Gna2Tensor& tensor, const T & elementIndex) { intValue = (reinterpret_cast(tensor.Data)[linearIndex]); } else if (tensor.Type == Gna2DataTypeInt16) { intValue = reinterpret_cast(tensor.Data)[linearIndex]; + } else { + intValue = reinterpret_cast(tensor.Data)[linearIndex]; } return intValue; } @@ -97,7 +100,7 @@ void WriteInputAndOutputTextGNAImpl(const Gna2Model & gnaModel, const std::strin const auto & intputTensor = *operation.Operands[InOpIdx]; out_file_name << std::setfill('0') << std::setw(2) << i << "_" - << getLayerType(operation.Type) + << GetLayerType(operation.Type) << "-" << GetSimpleString(intputTensor.Shape) << "-" << GetSimpleString(outputTensor.Shape); @@ -158,4 +161,242 @@ void WriteInputAndOutputTextGNAImpl(const Gna2Model & gnaModel, const std::strin } } +static std::string GetOperandType(Gna2DataType type) { + const std::map operandTypeMap = { + {Gna2DataTypeNone, "Gna2DataTypeNone"}, + {Gna2DataTypeBoolean, "Gna2DataTypeBoolean"}, + {Gna2DataTypeInt4, "Gna2DataTypeInt4"}, + {Gna2DataTypeInt8, "Gna2DataTypeInt8"}, + {Gna2DataTypeInt16, "Gna2DataTypeInt16"}, + {Gna2DataTypeInt32, "Gna2DataTypeInt32"}, + {Gna2DataTypeUint4, "Gna2DataTypeUint4"}, + {Gna2DataTypeUint8, "Gna2DataTypeUint8"}, + {Gna2DataTypeUint16, "Gna2DataTypeUint16"}, + {Gna2DataTypeUint32, "Gna2DataTypeUint32"}, + {Gna2DataTypeUint64, "Gna2DataTypeUint64"}, + {Gna2DataTypeCompoundBias, "Gna2DataTypeCompoundBias"}, + {Gna2DataTypePwlSegment, "Gna2DataTypePwlSegment"}, + {Gna2DataTypeWeightScaleFactor, "Gna2DataTypeWeightScaleFactor"} + }; + return operandTypeMap.find(type)->second; +} + +static std::vector GetOperandNames(Gna2OperationType type) { + const std::map> operationOperandNamesMap = { + {Gna2OperationTypeConvolution, {"inputs", "outputs", "filters", "biases", "activationFunction"}}, + {Gna2OperationTypeCopy, {"inputs", "outputs"}}, + {Gna2OperationTypeFullyConnectedAffine, {"inputs", "outputs", "weights", "biases", "activationFunction", "weightScaleFactors"}}, + {Gna2OperationTypeElementWiseAffine, {"inputs", "outputs", "weights", "biases", "activationFunction"}}, + {Gna2OperationTypeGmm, {"inputs", "outputs", "means/interleaved", "inverseCovariances", "constants"}}, + {Gna2OperationTypeRecurrent, {"inputs", "outputs", "weights", "biases", "activationFunction"}}, + {Gna2OperationTypeTransposition, {"inputs", "outputs"}} + }; + return operationOperandNamesMap.find(type)->second; +} + +static std::vector GetParamaterNames(Gna2OperationType type) { + const std::map> operationParamaterNamesMap = { + {Gna2OperationTypeConvolution, {"convolutionStride", "biasMode", "poolingMode", "poolingWindow", "poolingStride", "zeroPadding"}}, + {Gna2OperationTypeCopy, {"shape (sub-tensor shape)"}}, + {Gna2OperationTypeFullyConnectedAffine, {"biasMode", "biasVectorIndex"}}, + {Gna2OperationTypeGmm, {"maximumScore"}}, + {Gna2OperationTypeRecurrent, {"delay"}} + }; + return operationParamaterNamesMap.find(type)->second; +} + +static std::string GetBiasMode(Gna2BiasMode mode) { + const std::map biasModeMap = { + {Gna2BiasModeDefault, "Gna2BiasModeDefault"}, + {Gna2BiasModePerStride, "Gna2BiasModePerStride"}, + {Gna2BiasModeGrouping, "Gna2BiasModeGrouping"} + }; + return biasModeMap.find(mode)->second; +} + +static std::string GetPoolingMode(Gna2PoolingMode mode) { + const std::map poolingModeMap = { + {Gna2PoolingModeDisabled, "Gna2PoolingModeDisabled"}, + {Gna2PoolingModeMax, "Gna2PoolingModeMax"}, + {Gna2PoolingModeSum, "Gna2PoolingModeSum"} + }; + return poolingModeMap.find(mode)->second; +} + +static void DumpShape(std::ostream& dumpFile, Gna2Shape* shape, const std::string paramName) { + dumpFile << "\tParameter name: " << paramName << ", "; + dumpFile << "parameter type: Gna2Shape\n"; + dumpFile << "\t\tNumber of dimensions: " << shape->NumberOfDimensions; + dumpFile << "\n\t\tDimensions: ["; + for (uint32_t i = 0; i < shape->NumberOfDimensions; i++) { + dumpFile << std::setw(8) << shape->Dimensions[i]; + } + dumpFile << "]\n"; +} + +static void DumpConvolutionParameters(std::ostream& dumpFile, void** parameters, size_t knownParamCount, const std::vector paramNames) { + size_t i = 0; + + while (i < knownParamCount) { + if (i == ConvStrideParamIdx || i == PoolWinParamIdx || i == PoolStrideParamIdx || i == ZeroPaddingParamIdx) { + Gna2Shape* shape = reinterpret_cast(parameters[i]); + if (shape != nullptr) + DumpShape(dumpFile, shape, paramNames[i]); + } else if (i == BiasModeCnnParamIdx) { + Gna2BiasMode* biasMode = reinterpret_cast(parameters[i]); + if (biasMode != nullptr) + dumpFile << "\tParameter name: " << paramNames[i] << ", value: " << GetBiasMode(*biasMode) << "\n"; + } else { + Gna2PoolingMode* poolingMode = reinterpret_cast(parameters[i]); + if (poolingMode != nullptr) + dumpFile << "\tParameter name: " << paramNames[i] << ", value: " << GetPoolingMode(*poolingMode) << "\n"; + } + i++; + } + } + +static void DumpCopyParameters(std::ostream& dumpFile, void** parameters, size_t knownParamCount, const std::vector paramNames) { + Gna2Shape* subTensorShape = reinterpret_cast(parameters[CopyShapeParamIdx]); + DumpShape(dumpFile, subTensorShape, paramNames[CopyShapeParamIdx]); +} + +static void DumpFCAffineParameters(std::ostream& dumpFile, void** parameters, size_t knownParamCount, const std::vector paramNames) { + size_t i = 0; + + while (i < knownParamCount) { + if (i == BiasModeFCAffineParamIdx) { + Gna2BiasMode* biasMode = reinterpret_cast(parameters[BiasModeFCAffineParamIdx]); + if (biasMode != nullptr) + dumpFile << "\tParameter name: " << paramNames[i] << ", value: " << GetBiasMode(*biasMode) << "\n"; + } else { + uint32_t* biasVectorIndex = reinterpret_cast(parameters[BiasModeFCAffineParamIdx]); + if (biasVectorIndex != nullptr) + dumpFile << "\tParameter name: " << paramNames[i] << ", value: " << *biasVectorIndex << "\n"; + } + i++; + } +} + +static void DumpIntParameter(std::ostream& dumpFile, void** parameters, size_t knownParamCount, const std::vector paramNames) { + uint32_t* param = reinterpret_cast(parameters[0]); + if (param != nullptr) + dumpFile << "\tParameter name: " << paramNames[0] << ", value: " << *param << "\n"; +} + +typedef void (*dumpParamaters) (std::ostream&, void**, size_t, const std::vector); + +static dumpParamaters GetParamDumpFunc(Gna2OperationType type) { + static const std::map dumpParamMap = { + {Gna2OperationTypeConvolution, DumpConvolutionParameters}, + {Gna2OperationTypeCopy, DumpCopyParameters}, + {Gna2OperationTypeFullyConnectedAffine, DumpFCAffineParameters}, + {Gna2OperationTypeGmm, DumpIntParameter}, + {Gna2OperationTypeRecurrent, DumpIntParameter} + }; + return dumpParamMap.find(type) != dumpParamMap.end() ? dumpParamMap.find(type)->second : nullptr; +} + +static void DumpPwl(std::ostream& dumpFile, const Gna2Tensor& activation) { + const Gna2PwlSegment* const segments = static_cast(activation.Data); + const uint32_t numberOfSegments = activation.Shape.Dimensions[0]; + + for (uint32_t k = 0; k < numberOfSegments; k++) { + uint32_t scale = ((segments[k].xBase & 3) + 1) * 8; + uint64_t factor = 1ULL << scale; + int32_t B = segments[k].xBase & 0xfffffffc; + double a = static_cast(segments[k].Slope) / factor; + double b = static_cast(segments[k].yBase) - ((static_cast(B) * segments[k].Slope) / factor); + + dumpFile << "\t\tBase value for input (B) : " << B << "\n"; + dumpFile << "\t\tBase value for output (b) : " << segments[k].yBase << "\n"; + dumpFile << "\t\tSegment slope (S): " << segments[k].Slope << "\n"; + dumpFile << "\t\tShift (scale) : " << scale << "\n"; + dumpFile << "\t\ty = ax + b: a = " << a << ", b = " << b; + if (segments[k].Slope != 0) { + double x0 = static_cast(B) - ((static_cast(segments[k].yBase) * factor) / segments[k].Slope); + dumpFile << ", x0 = " << x0; + } + dumpFile << "\n"; + } +} + +static void DumpCompoundBias(std::ostream& dumpFile, const Gna2Tensor& tensor) { + auto i = 0; + + while (i < tensor.Shape.Dimensions[0]) { + const Gna2CompoundBias* const bias = static_cast(tensor.Data) + i; + dumpFile << "\t\tBias for row " << i << " : " << bias->Bias << ", multiplier: " << unsigned(bias->Multiplier) << "\n"; + i++; + } +} + +static void DumpCharArray(std::ostream& dumpFile, const char *carray, size_t count) { + auto i = 0; + while (*(carray + i) != 0 && i < count) { + dumpFile << *(carray + i) << " "; + i++; + } + dumpFile << "\n"; +} + +void DumpGna2Model(const Gna2Model& gnaModel, const std::string dumpFolderNameGNA, bool dumpData) { + std::stringstream dumpFileName; + uint32_t opsNo = gnaModel.NumberOfOperations; + std::time_t currTime = std::time(nullptr); + + dumpFileName << dumpFolderNameGNA << "Gna2ModelDebugDump_" << opsNo << "_layer_" << std::put_time(std::localtime(&currTime), "%Y%m%d%H%M%S"); + + std::ofstream dumpFile(dumpFileName.str() + ".txt", std::ios::out); + + dumpFile << "Layers (operations) count: " << opsNo << "\n"; + + for (uint32_t i = 0; i < opsNo; i++) { + const auto& operation = gnaModel.Operations[i]; + + dumpFile << "------------------------------------------------------------------------\n\n"; + + dumpFile << "Layer (operation): " << i << "\n"; + dumpFile << "Layer (operation) type: " << GetLayerType(operation.Type) << "\n"; + dumpFile << "Number of possible operands: " << operation.NumberOfOperands << "\n"; + + for (uint32_t j = 0; j < operation.NumberOfOperands; j++) { + if (operation.Operands[j] == nullptr) { + dumpFile << "\tOperand " << j << " == nullptr\n"; + continue; + } + const auto& operand = *operation.Operands[j]; + dumpFile << "\tOperand " << j << " (" << GetOperandNames(operation.Type)[j] << ")" + << " type: " << GetOperandType(operand.Type) << + " shape: " << GetSimpleString(operand.Shape) << + " layout: "; + + DumpCharArray(dumpFile, operand.Layout, GNA2_SHAPE_MAXIMUM_NUMBER_OF_DIMENSIONS); + + if (operand.Type == Gna2DataTypePwlSegment) { + DumpPwl(dumpFile, operand); + } else if (operand.Type == Gna2DataTypeCompoundBias) { + DumpCompoundBias(dumpFile, operand); + } else if (dumpData) { + std::ofstream datFile(dumpFileName.str() + ".dat", std::ios::out); + std::vector elementIndex(operand.Shape.NumberOfDimensions); + + datFile << "Layer " << i << ", type " << GetLayerType(operation.Type) << + ", operand " << j << " - " << GetOperandNames(operation.Type)[j] << "\n"; + + do { + int32_t value = GetValue(operand, elementIndex); + datFile << value << "\n"; + } while (NextElement(elementIndex, operand.Shape)); + } + } + + dumpFile << "Parameters: \n"; + + if (operation.NumberOfParameters > 0 && GetParamDumpFunc(operation.Type) != nullptr) { + std::vector paramNames = GetParamaterNames(operation.Type); + size_t knownParamCount = operation.NumberOfParameters <= paramNames.size() ? operation.NumberOfParameters : paramNames.size(); + GetParamDumpFunc(operation.Type)(dumpFile, operation.Parameters, knownParamCount, paramNames); + } + } +} #endif diff --git a/inference-engine/src/gna_plugin/gna2_model_debug_log.hpp b/inference-engine/src/gna_plugin/gna2_model_debug_log.hpp index f6889b3e115250..5b6378fa2cdb93 100644 --- a/inference-engine/src/gna_plugin/gna2_model_debug_log.hpp +++ b/inference-engine/src/gna_plugin/gna2_model_debug_log.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,5 +11,6 @@ #include "gna2-model-api.h" void WriteInputAndOutputTextGNAImpl(const Gna2Model & gnaModel, const std::string dumpFolderNameGNA, const std::string refFolderName); +void DumpGna2Model(const Gna2Model& gnaModel, const std::string dumpFolderNameGNA, bool dumpData); #endif diff --git a/inference-engine/src/gna_plugin/gna2_model_export_helper.cpp b/inference-engine/src/gna_plugin/gna2_model_export_helper.cpp index 87472f97b2860d..373ceca5f35612 100644 --- a/inference-engine/src/gna_plugin/gna2_model_export_helper.cpp +++ b/inference-engine/src/gna_plugin/gna2_model_export_helper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna2_model_export_helper.hpp b/inference-engine/src/gna_plugin/gna2_model_export_helper.hpp index 04d8b109333d2a..e2d1e29898ec83 100644 --- a/inference-engine/src/gna_plugin/gna2_model_export_helper.hpp +++ b/inference-engine/src/gna_plugin/gna2_model_export_helper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna2_model_helper.cpp b/inference-engine/src/gna_plugin/gna2_model_helper.cpp index f3ef8aeabe5828..3775ac6748c266 100644 --- a/inference-engine/src/gna_plugin/gna2_model_helper.cpp +++ b/inference-engine/src/gna_plugin/gna2_model_helper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -156,7 +156,7 @@ Gna2Shape* create_shape2D_parameter(uint32_t x, uint32_t y) { void freeGna2Operation(Gna2Operation& operation) { if (operation.Operands != nullptr) { - for (auto i = 0; i < operation.NumberOfOperands; i++) { + for (uint32_t i = 0; i < operation.NumberOfOperands; i++) { if (operation.Operands[i] != nullptr) { gnaUserFree(const_cast(operation.Operands[i])); operation.Operands[i] = nullptr; @@ -167,7 +167,7 @@ void freeGna2Operation(Gna2Operation& operation) { operation.NumberOfOperands = 0; } if (operation.Parameters != nullptr) { - for (auto i = 0; i < operation.NumberOfParameters; i++) { + for (uint32_t i = 0; i < operation.NumberOfParameters; i++) { if (operation.Parameters[i] != nullptr) { gnaUserFree(operation.Parameters[i]); operation.Parameters[i] = nullptr; @@ -272,11 +272,13 @@ void HelperGna2OperationInitConvolution(Gna2Operation * operation, Gna2Tensor * filters, Gna2Tensor * biases, Gna2Tensor * activation, Gna2Shape * convolutionStride, - Gna2BiasMode * biasMode) { + Gna2BiasMode * biasMode, + Gna2Shape* zeroPadding) { HelperGna2OperationInitElementWiseAffine(operation, userAllocator, userFree, inputs, outputs, filters, biases, activation); operation->Type = Gna2OperationTypeConvolution; HelperGna2OperationSetParameter(operation, userAllocator, userFree, ConvStrideParamIdx, convolutionStride); HelperGna2OperationSetParameter(operation, userAllocator, userFree, BiasModeCnnParamIdx, biasMode); + HelperGna2OperationSetParameter(operation, userAllocator, userFree, ZeroPaddingParamIdx, zeroPadding); } void HelperGna2OperationInitCopy(Gna2Operation * operation, diff --git a/inference-engine/src/gna_plugin/gna2_model_helper.hpp b/inference-engine/src/gna_plugin/gna2_model_helper.hpp index ebb7dd2e0ec16c..a9e773a99e5482 100644 --- a/inference-engine/src/gna_plugin/gna2_model_helper.hpp +++ b/inference-engine/src/gna_plugin/gna2_model_helper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,6 +27,8 @@ constexpr uint32_t DelayParamIdx = 0; constexpr uint32_t PoolModeParamIdx = 2; constexpr uint32_t PoolWinParamIdx = 3; constexpr uint32_t PoolStrideParamIdx = 4; +constexpr uint32_t ZeroPaddingParamIdx = 5; +constexpr uint32_t MaximumScoreParamIdx = 0; #define GNA_MAX_OP_PARAM 10 typedef void (*GnaUserFree)(void*); @@ -104,7 +106,8 @@ void HelperGna2OperationInitConvolution( Gna2Tensor * filters, Gna2Tensor * biases, Gna2Tensor * activation, Gna2Shape * convolutionStride, - enum Gna2BiasMode * biasMode); + enum Gna2BiasMode * biasMode, + Gna2Shape* zeroPadding); void HelperGna2OperationInitCopy( Gna2Operation * operation, diff --git a/inference-engine/src/gna_plugin/gna_api_wrapper.hpp b/inference-engine/src/gna_plugin/gna_api_wrapper.hpp index b6486673f684bf..4569c3e80162c6 100644 --- a/inference-engine/src/gna_plugin/gna_api_wrapper.hpp +++ b/inference-engine/src/gna_plugin/gna_api_wrapper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -51,7 +51,7 @@ class CPPWrapper { THROW_GNA_EXCEPTION << "out of memory in while allocating "<< n << " GNA layers"; } obj.NumberOfOperations = n; - for (int i = 0; i < obj.NumberOfOperations; i++) { + for (uint32_t i = 0; i < obj.NumberOfOperations; i++) { obj.Operations[i].Type = Gna2OperationTypeNone; obj.Operations[i].Operands = nullptr; obj.Operations[i].NumberOfOperands = 0; @@ -61,7 +61,7 @@ class CPPWrapper { } ~CPPWrapper() { if (obj.Operations != nullptr) { - for (int i = 0; i < obj.NumberOfOperations; i++) { + for (uint32_t i = 0; i < obj.NumberOfOperations; i++) { freeGna2Operation(obj.Operations[i]); } gnaUserFree(obj.Operations); diff --git a/inference-engine/src/gna_plugin/gna_device.cpp b/inference-engine/src/gna_plugin/gna_device.cpp index de26b552da3b09..9d14d647587165 100644 --- a/inference-engine/src/gna_plugin/gna_device.cpp +++ b/inference-engine/src/gna_plugin/gna_device.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,14 +18,16 @@ #include "gna2-instrumentation-api.h" #include "gna2-memory-api.h" #include "gna2_model_export_helper.hpp" +#include "gna2_model_debug_log.hpp" #else #include "gna-api-status.h" #include "gna-api.h" #endif -#include "details/ie_exception.hpp" #include "gna_plugin_log.hpp" +//#define MODEL_DUMP + std::mutex GNADeviceHelper::acrossPluginsSync{}; uint8_t* GNADeviceHelper::alloc(uint32_t size_requested, uint32_t *size_granted) { @@ -131,6 +133,15 @@ uint32_t GNADeviceHelper::createModel(Gna2Model& gnaModel) const { if (isUpTo20GnaHwDevice() && isGnaLibVersion2_1) { enforceLegacyCnns(gnaModel); } +#if GNA_LIB_VER == 2 && defined MODEL_DUMP + std::string path = +#ifdef _WIN32 + ".\\"; +#else + "./"; +#endif + DumpGna2Model(gnaModel, path, false); +#endif const auto status = Gna2ModelCreate(nGnaDeviceIndex, &gnaModel, &modelId); checkGna2Status(status, gnaModel); diff --git a/inference-engine/src/gna_plugin/gna_device.hpp b/inference-engine/src/gna_plugin/gna_device.hpp index 63479712442524..ad639291e3db0c 100644 --- a/inference-engine/src/gna_plugin/gna_device.hpp +++ b/inference-engine/src/gna_plugin/gna_device.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna_executable_network.hpp b/inference-engine/src/gna_plugin/gna_executable_network.hpp index 0193586a026ab1..76d3432f999c6e 100644 --- a/inference-engine/src/gna_plugin/gna_executable_network.hpp +++ b/inference-engine/src/gna_plugin/gna_executable_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -81,11 +81,11 @@ class GNAExecutableNetwork : public InferenceEngine::ExecutableNetworkThreadSafe void SetConfig(const std::map& config) override { using namespace InferenceEngine::GNAConfigParams; if (config.empty()) { - THROW_IE_EXCEPTION << "The list of configuration values is empty"; + IE_THROW() << "The list of configuration values is empty"; } for (auto&& item : config) { if (item.first != KEY_GNA_DEVICE_MODE) { - THROW_IE_EXCEPTION << "The following config value cannot be changed dynamically for ExecutableNetwork in the GNA plugin: " + IE_THROW() << "The following config value cannot be changed dynamically for ExecutableNetwork in the GNA plugin: " << item.first << ". Only " << KEY_GNA_DEVICE_MODE << " is supported."; } } @@ -93,12 +93,12 @@ class GNAExecutableNetwork : public InferenceEngine::ExecutableNetworkThreadSafe InferenceEngine::Parameter old_mode_parameter = GetConfig(KEY_GNA_DEVICE_MODE); auto old_mode = old_mode_parameter.as(); if (old_mode == InferenceEngine::GNAConfigParams::GNA_SW_FP32) { - THROW_IE_EXCEPTION << "Dynamic switching from GNA_SW_FP32 mode is not supported for ExecutableNetwork."; + IE_THROW() << "Dynamic switching from GNA_SW_FP32 mode is not supported for ExecutableNetwork."; } auto new_mode = config.begin()->second.as(); if (new_mode == InferenceEngine::GNAConfigParams::GNA_SW_FP32) { - THROW_IE_EXCEPTION << "Dynamic switching to GNA_SW_FP32 mode is not supported for ExecutableNetwork."; + IE_THROW() << "Dynamic switching to GNA_SW_FP32 mode is not supported for ExecutableNetwork."; } std::map configForPlugin; diff --git a/inference-engine/src/gna_plugin/gna_fused_iterator.hpp b/inference-engine/src/gna_plugin/gna_fused_iterator.hpp index 8b78f02e3fd756..e6844161c4faa4 100644 --- a/inference-engine/src/gna_plugin/gna_fused_iterator.hpp +++ b/inference-engine/src/gna_plugin/gna_fused_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna_graph_compiler.cpp b/inference-engine/src/gna_plugin/gna_graph_compiler.cpp index 9fab04f8bed25e..f4a37b930e4bf7 100644 --- a/inference-engine/src/gna_plugin/gna_graph_compiler.cpp +++ b/inference-engine/src/gna_plugin/gna_graph_compiler.cpp @@ -264,6 +264,17 @@ void GNAGraphCompiler::ConvolutionPrimitive(InferenceEngine::CNNLayerPtr layer) std::swap(convolution._dilation_x, convolution._dilation_y); } + // Map 2d convolution to 1d if it's possible + if (in_height > 1 && in_width > 1 && in_width == convolution._kernel_x && convolution._stride_x == 1) { + in_width *= in_height; + in_height = 1; + out_width *= out_height; + out_height = 1; + convolution._stride_x *= (convolution._stride_y * convolution._kernel_x); + convolution._kernel_x *= convolution._kernel_y; + convolution._kernel_y = 1; + } + if (in_batch != 1 || out_batch != 1) { THROW_GNA_LAYER_EXCEPTION(layer) << "with batch size not equals 1 is not supported"; } @@ -314,6 +325,12 @@ void GNAGraphCompiler::finalizeConvolution1DPrimitive(InferenceEngine::CNNLayerP const auto inputs = convolution.insData.front().lock(); const auto outputs = convolution.outData.front(); + if (layer->GetParamAsString("auto_pad", "explicit") != "valid" && + (convolution._padding[0] != 0 || convolution._padding[0] != 0 || + convolution._pads_end[0] != 0 || convolution._pads_end[1] != 0)) { + THROW_GNA_LAYER_EXCEPTION(&convolution) << "Padding isn't supported by GNA"; + } + std::size_t calculated_out_width = (in_width * in_height - convolution._kernel_x + 2 * convolution._padding_x) / convolution._stride_x + 1; if (out_width * in_height != calculated_out_width) { THROW_GNA_LAYER_EXCEPTION(&convolution) << "Invalid output configuration. " @@ -523,8 +540,26 @@ void GNAGraphCompiler::finalizeConvolution2DPrimitive(InferenceEngine::CNNLayerP // TODO add function // printConvolution2DLayer(convolution); - if (convolution._kernel_x > in_width || - convolution._kernel_y > in_height) { + auto effectiveInputWidth = in_width; + auto effectiveInputHeight = in_height; + + if (policy.cnn2dInputPaddingSupported) { + effectiveInputWidth += convolution._padding_x * 2; + effectiveInputHeight += convolution._padding_y * 2; + } else if (convolution._padding_x != 0 || convolution._padding_y != 0 || + convolution._pads_end.at(X_AXIS) != 0 || convolution._pads_end.at(Y_AXIS) != 0) { + THROW_GNA_LAYER_EXCEPTION(layer) << "Convolution's input padding is not supported"; + } + + if (convolution._padding_x != convolution._pads_end.at(X_AXIS)) { + THROW_GNA_LAYER_EXCEPTION(layer) << "Convolution's input padding is not symetric along X axis"; + } + if (convolution._padding_y != convolution._pads_end.at(Y_AXIS)) { + THROW_GNA_LAYER_EXCEPTION(layer) << "Convolution's input padding is not symetric along Y axis"; + } + + if (convolution._kernel_x > effectiveInputWidth || + convolution._kernel_y > effectiveInputHeight) { THROW_GNA_LAYER_EXCEPTION(layer) << "Kernel dimensions XY (" << convolution._kernel_x << ", " << convolution._kernel_y << ")" << " are bigger than input dimensions WH (" << in_width << "," << in_height << ")"; } @@ -582,7 +617,8 @@ void GNAGraphCompiler::finalizeConvolution2DPrimitive(InferenceEngine::CNNLayerP { {out_batch, out_height, out_width, out_channels}, outputPrec, {} }, { {filter_n, convolution._kernel_y, convolution._kernel_x, in_channels}, weightPrec, {} }, { {filter_n}, biasPrec, {} }, - { convolution._stride_x , convolution._stride_y}, + { convolution._stride_y, convolution._stride_x}, + { convolution._padding_y, convolution._padding_x }, weight_scale_factor, output_scale_factor, ptr_inputs, @@ -619,31 +655,6 @@ void GNAGraphCompiler::finalizeConvolution2DPrimitive(InferenceEngine::CNNLayerP connectOutput(layer, ptr_outputs, num_data_bytes_out); - // When there's a NCHW convolution as a last layer, the output needs to be transposed back to NCHW - // TODO: Jira: 43659 - the issue also appears when after conv there's an eltwise or activation - // For last layer or when next ones are only non functional, the data can be reordered when exporting scores - // For other cases inserting permute is required if data are reordered - auto isNonFunctional = [](CNNLayerPtr l) { - return LayerInfo(l).isNonFunctional(); - }; - if (getInputTo(outputs).empty() || !CNNNetHasNextLayerSkipCertain(layer, 0, 0, isNonFunctional)) { - // if height dim and width dim both equal 1, the permute is not needed to return correct results - // if height dim doesn't equal 1, the case requires additional permute - // auto inputDimsCheck = (in_channels != 1 || - // (in_height == 1 && in_width == 1) || - // in_height != 1); - const auto outputNeedsTranspose = out_channels > 1 && out_height * out_width > 1; - - //if kernel is pow of 2 and heigher than 8, then the issue doesn't appear - // auto kernelCheck = convolution._kernel_x > 15 && !(convolution._kernel_x & (convolution._kernel_x - 1)); - // if (!inputDimsCheck && !kernelCheck) { - if (outputNeedsTranspose) { - dnn->do_rotate_output = true; - dnn->num_rotate_output_rows = out_height * out_width; - dnn->num_rotate_output_columns = out_channels; - } - } - const auto kernelHW = convolution._kernel_y * convolution._kernel_x; std::vector transposedWeights; @@ -680,7 +691,7 @@ void GNAGraphCompiler::PowerPrimitive(InferenceEngine::CNNLayerPtr layer) { IE_ASSERT(gnaFlags->sw_fp32 ? (quantized == nullptr) : (quantized != nullptr)); if (power.power < 0.0f || power.power > 2.8f) { - THROW_IE_EXCEPTION << "[GNA plugin] unsupported power factor, expected be in <0, 2.8> range but was " << power.power; + IE_THROW() << "[GNA plugin] unsupported power factor, expected be in <0, 2.8> range but was " << power.power; } auto input = layer->insData[0].lock(); @@ -746,6 +757,8 @@ void GNAGraphCompiler::PowerPrimitive(InferenceEngine::CNNLayerPtr layer) { auto orientation = kDnnInterleavedOrientation; auto activation_type = DnnActivation::fromType(kActPow); + activation_type.fqParams.set = false; + activation_type.srcFQParams.set = false; activation_type.args.pow.exponent = power.power; activation_type.args.pow.scale = power.scale; activation_type.args.pow.offset = power.offset; @@ -774,7 +787,8 @@ void GNAGraphCompiler::PowerPrimitive(InferenceEngine::CNNLayerPtr layer) { PwlDesignOpt16(activation_type, ptr_pwl_segments, input_pwl_scale_factor, - output_pwl_scale_factor); + output_pwl_scale_factor, + gnaFlags->pwlMaxErrorPercent); } } @@ -819,15 +833,15 @@ void GNAGraphCompiler::PoolingPrimitive(InferenceEngine::CNNLayerPtr layer) { auto inputs = layer->insData.begin()->lock(); auto outputs = *layer->outData.begin(); - auto in_order = getFromIRDimsOrderNCHW(inputs->getLayout()); + const auto in_order = getFromIRDimsOrderNCHW(inputs->getLayout()); uint32_t w_dim_in = FROM_IR_DIM(inputs, in_order[3]); uint32_t h_dim_in = FROM_IR_DIM(inputs, in_order[2]); - uint32_t c_dim_in = FROM_IR_DIM(inputs, in_order[1]); + const uint32_t c_dim_in = FROM_IR_DIM(inputs, in_order[1]); - auto out_order = getFromIRDimsOrderNCHW(outputs->getLayout()); + const auto out_order = getFromIRDimsOrderNCHW(outputs->getLayout()); uint32_t w_dim_out = FROM_IR_DIM(outputs, out_order[3]); uint32_t h_dim_out = FROM_IR_DIM(outputs, out_order[2]); - uint32_t c_dim_out = FROM_IR_DIM(outputs, out_order[1]); + const uint32_t c_dim_out = FROM_IR_DIM(outputs, out_order[1]); if (w_dim_in == 1) { // swap dimensions if needed to support swapped 1D case swap(h_dim_in, w_dim_in); @@ -835,12 +849,6 @@ void GNAGraphCompiler::PoolingPrimitive(InferenceEngine::CNNLayerPtr layer) { swap(pooling._kernel[X_AXIS], pooling._kernel[Y_AXIS]); } - uint32_t num_rows_in = w_dim_in; - uint32_t num_columns_in = c_dim_in; - uint32_t num_rows_out = w_dim_out; - uint32_t num_columns_out = c_dim_out; - uint32_t num_padding = ALIGN(num_rows_in, 8) - num_rows_in; - void* ptr_inputs = nullptr; void* ptr_outputs = nullptr; @@ -856,16 +864,12 @@ void GNAGraphCompiler::PoolingPrimitive(InferenceEngine::CNNLayerPtr layer) { } dnn->InitMaxpoolComponent(currentComponent, - 1, - num_columns_in * num_rows_in, - 1, - num_columns_out * num_rows_out, + { c_dim_in, h_dim_in, w_dim_in }, + { c_dim_out, h_dim_out, w_dim_out }, inputs->getPrecision().size(), outputs->getPrecision().size(), - pooling._kernel[X_AXIS], - pooling._kernel[X_AXIS], - num_columns_in, - false, + { pooling._kernel[X_AXIS], pooling._kernel[Y_AXIS] }, + { pooling._stride[X_AXIS], pooling._stride[Y_AXIS] }, quantized == nullptr ? 1 : quantized->_dst_quant.GetScale(), ptr_inputs, ptr_outputs); @@ -873,7 +877,11 @@ void GNAGraphCompiler::PoolingPrimitive(InferenceEngine::CNNLayerPtr layer) { size_t num_data_bytes_out = InferenceEngine::details::product(begin(outputs->getDims()), end(outputs->getDims())) * outputs->getPrecision().size(); - size_t num_data_bytes_in = num_columns_in * (num_rows_in + num_padding) * inputs->getPrecision().size(); + const auto hw_in = h_dim_in * w_dim_in; + + // TODO: Is this really needed?, find out why + uint32_t num_padding = ALIGN(hw_in, 8) - hw_in; + size_t num_data_bytes_in = c_dim_in * (hw_in + num_padding) * inputs->getPrecision().size(); connectInput(layer, ptr_inputs, num_data_bytes_in); connectOutput(layer, ptr_outputs, num_data_bytes_out); @@ -1345,7 +1353,7 @@ void GNAGraphCompiler::AffinePrimitive(InferenceEngine::CNNLayerPtr layer, bool // direct order is 0, 1, 2, 3, supported order is only 0,3,2,1 where dim 2 is usually equals to 1 auto permuteOrder = connectionInfo.permute->GetParamAsInts("order"); if (permuteOrder != vector({ 0, 3, 2, 1 })) { - THROW_IE_EXCEPTION << "[GNA plugin] Unsupported permute order: was " << layer->GetParamAsString("order") << + IE_THROW() << "[GNA plugin] Unsupported permute order: was " << layer->GetParamAsString("order") << ", but only support 0, 3, 2, 1"; } @@ -1353,7 +1361,7 @@ void GNAGraphCompiler::AffinePrimitive(InferenceEngine::CNNLayerPtr layer, bool * TODO: weights transpose happened after quantisation might result in poor quality for in 8 - move this to passes */ if (weightable._weights->getTensorDesc().getPrecision() == Precision::I8) { - THROW_IE_EXCEPTION << "[GNA plugin] Unsupported permute operation for 8 bit weights for layer: " << layer->name; + IE_THROW() << "[GNA plugin] Unsupported permute operation for 8 bit weights for layer: " << layer->name; } // this affine connected to convolution via pool or activation @@ -1372,7 +1380,7 @@ void GNAGraphCompiler::AffinePrimitive(InferenceEngine::CNNLayerPtr layer, bool 64); } else { gnamem->readonly().push_initializer(ptr_weights, weightable._weights->byteSize(), [=](void* data, size_t size) { - for (int k = 0; k < (isDiag ? 1 : num_rows_out); k++) { + for (uint32_t k = 0; k < (isDiag ? 1 : num_rows_out); k++) { auto rowOffset = k * transposedRows * transposedCols * weightable.precision.size(); auto cbuffer = weightable._weights->cbuffer().as() + rowOffset; auto u8Data = reinterpret_cast(data) + rowOffset; @@ -1401,7 +1409,7 @@ void GNAGraphCompiler::AffinePrimitive(InferenceEngine::CNNLayerPtr layer, bool auto paddedWeightsSize = paddedWeights * weightable.precision.size(); gnamem->readonly().push_initializer(ptr_weights, paddedWeightsSize, [=](void* data, size_t size) { - for (int i = 0; i < (isDiag ? 1 : num_rows_out); i++) { + for (uint32_t i = 0; i < (isDiag ? 1 : num_rows_out); i++) { ie_memcpy(data, size, weightable._weights->cbuffer().as() + num_rows_in * i * weightable.precision.size(), num_rows_in * weightable.precision.size()); @@ -1655,7 +1663,7 @@ void GNAGraphCompiler::AffineFilterPrimitive(InferenceEngine::CNNLayerPtr layer) gnamem->readonly().push_initializer(ptr_weights, paddedWeightsSize, [=](void* data, size_t size) { size_t offset = 0; - for (int i = 0; i < num_rows_out && size >= offset; i++) { + for (uint32_t i = 0; i < num_rows_out && size >= offset; i++) { ie_memcpy(reinterpret_cast(data) + offset, size - offset, filterLayer->_weights->cbuffer().as() + num_rows_in * i * filterLayer->precision.size(), num_rows_in* filterLayer->precision.size()); @@ -1674,14 +1682,6 @@ void GNAGraphCompiler::AffineFilterPrimitive(InferenceEngine::CNNLayerPtr layer) } } -void GNAGraphCompiler::FakeQuantizePrimitive(InferenceEngine::CNNLayerPtr layer) { - // in FP32 mode lets use special form of activation that satisfies fakeQuantize formula - if (gnaFlags->sw_fp32) { - PWLPrimitive(layer); - return; - } -} - void GNAGraphCompiler::PWLPrimitive(InferenceEngine::CNNLayerPtr layer) { auto* generic = dynamic_cast(layer.get()); std::string type; @@ -1774,6 +1774,24 @@ void GNAGraphCompiler::PWLPrimitive(InferenceEngine::CNNLayerPtr layer) { THROW_GNA_EXCEPTION << "Activation function type not yet supported: " << type; } auto activation_type = DnnActivation::fromType(it->second); + activation_type.fqParams.set = false; + if (quantized != nullptr && quantized->_dst_quant.IsStatsSet()) { + activation_type.fqParams.set = true; + activation_type.fqParams.levels = quantized->_dst_quant.GetLevels(); + activation_type.fqParams.inputPerChannel = false; + activation_type.fqParams.input_low = &(quantized->_dst_quant.GetMinValues(true).front()); + activation_type.fqParams.input_high = &(quantized->_dst_quant.GetMaxValues(true).front()); + } + + activation_type.srcFQParams.set = false; + if (quantized != nullptr && quantized->_src_quant.IsStatsSet()) { + activation_type.srcFQParams.set = true; + activation_type.srcFQParams.levels = quantized->_src_quant.GetLevels(); + activation_type.srcFQParams.inputPerChannel = false; + activation_type.srcFQParams.input_low = &(quantized->_src_quant.GetMinValues(true).front()); + activation_type.srcFQParams.input_high = &(quantized->_src_quant.GetMaxValues(true).front()); + } + if (it->second == kActRelu) { auto reluLayer = dynamic_cast(layer.get()); activation_type.args.lrelu.negative_slope = reluLayer != nullptr ? reluLayer->negative_slope : 0.0f; @@ -1781,11 +1799,9 @@ void GNAGraphCompiler::PWLPrimitive(InferenceEngine::CNNLayerPtr layer) { activation_type.args.lrelu.negative_slope = 0.0f; } - if (it->second == kActFakeQuantize) { + if (quantized == nullptr && it->second == kActFakeQuantize) { activation_type = GNAFakeQuantizeLayer(layer).parseAsActivation(); - } - - if (it->second == kActKaldiLstmClipping) { + } else if (it->second == kActKaldiLstmClipping) { auto clamp_layer = dynamic_cast(layer.get()); if (clamp_layer) { if (clamp_layer->min_value == 0 && clamp_layer->max_value == 0) { @@ -1862,7 +1878,8 @@ case name:\ PwlDesignOpt16(activation_type, ptr_pwl_segments, input_pwl_scale_factor, - output_pwl_scale_factor); + output_pwl_scale_factor, + gnaFlags->pwlMaxErrorPercent); } ptr_pwl_segments_target = reinterpret_cast(&ptr_pwl_segments_target); } @@ -2007,7 +2024,7 @@ void GNAGraphCompiler::CreateLayerPrimitive(CNNLayerPtr layer) { {{DelayedCopyLayerName}, CREATE(CopyPrimitive)}, {{"TensorIterator"}, SKIP}, {{"LSTMCell"}, SKIP}, - {{"FakeQuantize"}, CREATE(FakeQuantizePrimitive)} // TODO: fakequantize layer should be properly converted to GNA scale factors for integer case + {{"FakeQuantize"}, CREATE(PWLPrimitive)} }; (void)layersBuilder; auto it = LayersBuilder::getStorage().find(layer->type); diff --git a/inference-engine/src/gna_plugin/gna_graph_patterns.hpp b/inference-engine/src/gna_plugin/gna_graph_patterns.hpp index d16e0089309f06..ad76391dd07eef 100644 --- a/inference-engine/src/gna_plugin/gna_graph_patterns.hpp +++ b/inference-engine/src/gna_plugin/gna_graph_patterns.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -140,10 +140,6 @@ inline bool MustBeConvertedFromNCHWToNHWC(const std::vector FindTranspositionInfoFromPrevLayers(InferenceEngine::CNNLayerPtr layer) { std::function(InferenceEngine::CNNLayerPtr)> findTranspositionInfoRecursive = [&findTranspositionInfoRecursive](InferenceEngine::CNNLayerPtr layer) -> std::vector { - if (LayerInfo(layer).isSplit()) { - THROW_GNA_EXCEPTION << layer->name << " Failed to find transposition info"; - } - if (LayerInfo(layer).isConvolution() || LayerInfo(layer).isPooling()) { auto out_dims = layer->outData[0]->getDims(); return {{true, out_dims[1], out_dims[2] * out_dims[3]}}; @@ -153,7 +149,7 @@ inline std::vector FindTranspositionInfoFromPrevLayers(Infere * its output size to skip this part during transposition if transposed layer is a result of concatination */ if (LayerInfo(layer).isFullyConnected() || LayerInfo(layer).isInput()) { auto out_dims = layer->outData[0]->getDims(); - return {{false, 1, InferenceEngine::details::product(std::begin(out_dims) + 1, std::end(out_dims))}}; + return {{false, 1, InferenceEngine::details::product(std::begin(out_dims), std::end(out_dims))}}; } // If an eltwise is reached we should follow only one not-const direction @@ -168,10 +164,14 @@ inline std::vector FindTranspositionInfoFromPrevLayers(Infere for (int idx = 0; idx < layer->insData.size(); ++idx) { if (!InferenceEngine::CNNNetHasPrevLayer(layer.get(), idx)) continue; auto inputLayer = InferenceEngine::CNNNetPrevLayer(layer, idx); - // If a concat input is a const we should keep its size to skip this part during transposition - if (LayerInfo(layer).isConcat() && LayerInfo(inputLayer).isConst()) { + if (LayerInfo(inputLayer).isSplit()) { + // If we found split it's not possible to rotate data + auto in_dims = layer->insData[idx].lock()->getDims(); + transpositionInfo.push_back({false, 1, InferenceEngine::details::product(std::begin(in_dims), std::end(in_dims))}); + } else if (LayerInfo(layer).isConcat() && LayerInfo(inputLayer).isConst()) { + // If a concat input is a const we should keep its size to skip this part during transposition auto in_dims = layer->insData[idx].lock()->getDims(); - auto data_size = InferenceEngine::details::product(std::begin(in_dims) + 1, std::end(in_dims)); + auto data_size = InferenceEngine::details::product(std::begin(in_dims), std::end(in_dims)); transpositionInfo.push_back({false, 1, data_size}); } else { std::vector results = findTranspositionInfoRecursive(inputLayer); @@ -191,8 +191,6 @@ inline std::vector FindTranspositionInfoFromPrevLayers(Infere inline std::vector FindTranspositionInfoFromNextLayers(InferenceEngine::CNNLayerPtr layer) { std::function(InferenceEngine::CNNLayerPtr)> findTranspositionInfoRecursive = [&findTranspositionInfoRecursive](InferenceEngine::CNNLayerPtr layer) -> std::vector { - if (LayerInfo(layer).isConcat()) return {}; - if (LayerInfo(layer).isConvolution()) { auto in_dims = layer->input()->getDims(); return {{true, in_dims[1], in_dims[2] * in_dims[3]}}; @@ -200,18 +198,28 @@ inline std::vector FindTranspositionInfoFromNextLayers(Infere /* If a fullyconnected or output layers are reached, it means that transposition isn't needed, but we should keep * its input size to skip this part during transposition if transposed layer is splitting */ - if (LayerInfo(layer).isFullyConnected() || LayerInfo(layer).isOutput()) { + if (LayerInfo(layer).isFullyConnected() || layer->outData.empty()) { auto in_dims = layer->input()->getDims(); - return {{false, 1, InferenceEngine::details::product(std::begin(in_dims) + 1, std::end(in_dims))}}; + return {{false, 1, InferenceEngine::details::product(std::begin(in_dims), std::end(in_dims))}}; } std::vector transpositionInfo; for (const auto &output : layer->outData) { - if (getInputTo(output).empty()) continue; + if (getInputTo(output).empty()) { + auto out_dims = output->getDims(); + transpositionInfo.push_back({false, 1, InferenceEngine::details::product(std::begin(out_dims), std::end(out_dims))}); + continue; + } std::vector results; // Return transposition info from the first branch where convolution is found for (const auto &inputTo : getInputTo(output)) { - results = findTranspositionInfoRecursive(inputTo.second); + if (LayerInfo(inputTo.second).isConcat()) { + // If we found concat it's not possible to rotate data + auto out_dims = output->getDims(); + results = {{false, 1, InferenceEngine::details::product(std::begin(out_dims), std::end(out_dims))}}; + } else { + results = findTranspositionInfoRecursive(inputTo.second); + } auto found = std::find_if(std::begin(results), std::end(results), [](const TranspositionInfo & result) { return result.transpose; }); @@ -222,6 +230,29 @@ inline std::vector FindTranspositionInfoFromNextLayers(Infere } transpositionInfo.insert(std::end(transpositionInfo), std::begin(results), std::end(results)); } + + if (LayerInfo(layer).isCrop()) { + auto in_dims = layer->input()->getDims(); + auto in_total_size = InferenceEngine::details::product(std::begin(in_dims), std::end(in_dims)); + auto crop_layer = LayerInfo(layer).as(); + IE_ASSERT(crop_layer != nullptr); + size_t crop_offset = 1; + size_t crop_out_size = 1; + bool first_cropped_dim = true; + for (int i = 0; i < crop_layer->axis.size(); ++i) { + if (crop_layer->offset[i] == 0 && crop_layer->dim[i] == in_dims[i]) continue; + crop_offset *= first_cropped_dim ? crop_layer->offset[i] : crop_layer->dim[i]; + crop_out_size *= crop_layer->dim[i]; + first_cropped_dim = false; + } + auto crop_rest_size = in_total_size - crop_offset - crop_out_size; + if (crop_offset > 0) { + transpositionInfo.insert(std::begin(transpositionInfo), {false, 1, crop_offset}); + } + if (crop_rest_size > 0) { + transpositionInfo.push_back({false, 1, crop_rest_size}); + } + } return transpositionInfo; }; diff --git a/inference-engine/src/gna_plugin/gna_graph_tools.hpp b/inference-engine/src/gna_plugin/gna_graph_tools.hpp index 173a15edd3bf50..95546c41662742 100644 --- a/inference-engine/src/gna_plugin/gna_graph_tools.hpp +++ b/inference-engine/src/gna_plugin/gna_graph_tools.hpp @@ -69,7 +69,7 @@ inline InferenceEngine::CNNLayerPtr CNNNetPrevLayer(const InferenceEngine::CNNL IE_ASSERT(prevData != nullptr); return getCreatorLayer(prevData).lock(); } else { - THROW_IE_EXCEPTION << "Layer " << layer->name << " has no previous layer"; + IE_THROW() << "Layer " << layer->name << " has no previous layer"; } } @@ -84,7 +84,7 @@ inline InferenceEngine::CNNLayerPtr CNNNetPrevLayer(const InferenceEngine::CNNL auto prevData = layer->insData[idx].lock(); return getCreatorLayer(prevData).lock(); } else { - THROW_IE_EXCEPTION << "Layer " << layer->name << " has no previous layer"; + IE_THROW() << "Layer " << layer->name << " has no previous layer"; } } @@ -161,7 +161,7 @@ inline std::pair CNNNetCheckNextLayerSkipCer if (bOnlyCheck) return {nullptr, 0}; THROW_GNA_LAYER_EXCEPTION(layer) << " no next output layer for outdata: " << oidx; } - if (iidx >= getInputTo(layer->outData[oidx]).size()) { + if (getInputTo(layer->outData[oidx]).empty() || iidx >= getInputTo(layer->outData[oidx]).size()) { if (bOnlyCheck) return {nullptr, 0}; THROW_GNA_LAYER_EXCEPTION(layer) << " no next output layer for outdata: " << oidx << " and inputTo index: " << iidx; } @@ -301,16 +301,16 @@ inline std::pair::iterator> CNNLayer inline void CNNNetSwapLayers(InferenceEngine::CNNLayerPtr lhs, InferenceEngine::CNNLayerPtr rhs) { if (lhs == nullptr || rhs ==nullptr) { - THROW_IE_EXCEPTION << "CNNNetSwapLayers : nullptr"; + IE_THROW() << "CNNNetSwapLayers : nullptr"; } if (lhs.get() == rhs.get()) return; if (lhs->outData.size() > 1) { - THROW_IE_EXCEPTION << "Unsupported layer for swap operation : " << lhs->name; + IE_THROW() << "Unsupported layer for swap operation : " << lhs->name; } if (rhs->outData.size() > 1) { - THROW_IE_EXCEPTION << "Unsupported layer for swap operation : " << rhs->name; + IE_THROW() << "Unsupported layer for swap operation : " << rhs->name; } auto &rhs_outputs = getInputTo(rhs->outData.front()); @@ -510,13 +510,16 @@ inline CNNLayerPtr CNNNetworkCreateReshape(TensorDesc td, std::string name, bool inline void CNNNetworkInsertLayer(CNNLayerPtr after, CNNLayerPtr before, CNNLayerPtr layerToInsert, - size_t outDataIndex = invalid_data_idx) { + size_t outDataIndex = invalid_data_idx, + size_t inDataIndex = invalid_data_idx) { if (after == nullptr && before == nullptr) { - THROW_IE_EXCEPTION << "Cannot Insert Layer: before or after layers should be valid layer pointers"; + IE_THROW() << "Cannot Insert Layer: before or after layers should be valid layer pointers"; } bool bLocated = false; bool hasOutputIndex = outDataIndex != invalid_data_idx; + int number_of_connections_between_after_n_before = 0; + if (after != nullptr) { int nUnconnectedOData = 0; for (auto && data : after->outData) { @@ -531,8 +534,10 @@ inline void CNNNetworkInsertLayer(CNNLayerPtr after, continue; // located data - for (auto x : CNNLayerFindInsDataIdxes(data, input)) { - input->insData[x] = layerToInsert->outData.front(); + for (auto input_port_idx : CNNLayerFindInsDataIdxes(data, input)) { + if (((size_t)inDataIndex != invalid_data_idx && (size_t)inDataIndex == input_port_idx) || (size_t)inDataIndex == invalid_data_idx) + input->insData[input_port_idx] = layerToInsert->outData.front(); + number_of_connections_between_after_n_before++; } getInputTo(layerToInsert->outData.front())[inputIt->first] = input; @@ -540,7 +545,10 @@ inline void CNNNetworkInsertLayer(CNNLayerPtr after, bLocated = true; // erasing only one particular connection - getInputTo(data).erase(inputIt->first); + // we must check if there is only one connection between after <=> before + if (number_of_connections_between_after_n_before == 1) + getInputTo(data).erase(inputIt->first); + if (before != nullptr) { break; } @@ -565,7 +573,7 @@ inline void CNNNetworkInsertLayer(CNNLayerPtr after, // separately checking case of possible single unconnected output of given layer if (!bLocated && !before && !hasOutputIndex) { - if (nUnconnectedOData != 1) { + if (nUnconnectedOData != 1 && number_of_connections_between_after_n_before <= 1) { THROW_GNA_EXCEPTION << "Cannot insert layer: " << LAYER_NAME(layerToInsert) <<" after: " << LAYER_NAME(after); } @@ -583,7 +591,7 @@ inline void CNNNetworkInsertLayer(CNNLayerPtr after, // if given outputDataIndex is not correct, lets find index that matches *before* layer if (!bLocated) { if (before != nullptr) { - IE_ASSERT(before->insData.size() == 1); + IE_ASSERT(before->insData.size() == 1 || inDataIndex != invalid_data_idx && inDataIndex < before->insData.size()); auto prevLayer = after; for (auto idx = prevLayer->outData.begin(); idx != prevLayer->outData.end(); idx++) { auto &outputports = getInputTo(*idx); @@ -591,8 +599,7 @@ inline void CNNNetworkInsertLayer(CNNLayerPtr after, if (ll->second.get() == before.get()) { // looks we found where need to remove outputports.erase(ll); - before->insData.clear(); - before->insData.push_back(layerToInsert->outData.front()); + before->insData[inDataIndex != invalid_data_idx ? inDataIndex : 0] = layerToInsert->outData.front(); getInputTo(layerToInsert->outData.front())[before->name] = before; bLocated = true; @@ -603,7 +610,7 @@ inline void CNNNetworkInsertLayer(CNNLayerPtr after, break; } } - // now we have a before layer without inputs + // now we have a before layer with one input less } if (bLocated) { // inserting into node that doesnt have child @@ -617,7 +624,7 @@ inline void CNNNetworkInsertLayer(CNNLayerPtr after, } } if (!bLocated) { - THROW_IE_EXCEPTION << "Cannot insert layer between: " << + IE_THROW() << "Cannot insert layer between: " << ((after == nullptr) ? std::string("nullptr") : after->name) << " and " << ((before == nullptr) ? std::string("nullptr") : before->name); } @@ -652,24 +659,24 @@ std::vector > CNNNetGetPrevLayersSkip(CNNLayerPtr or */ inline void CNNNetworkRemoveLayer(CNNLayerPtr layer, bool checkDims = true) { if (!layer) { - THROW_IE_EXCEPTION << "Cannot remove layer pointed to NULL"; + IE_THROW() << "Cannot remove layer pointed to NULL"; } gnalog() << "Removing " << layer->name << " layer\n"; if (layer->insData.size() != 1) { - THROW_IE_EXCEPTION << "Cannot remove layer : "<< layer->name <<" that has not 1 input"; + IE_THROW() << "Cannot remove layer : "<< layer->name <<" that has different number of inputs than 1"; } if (layer->outData.size() != 1) { - THROW_IE_EXCEPTION << "Cannot remove layer : "<< layer->name <<" that has not 1 output"; + IE_THROW() << "Cannot remove layer : "<< layer->name <<" that has different number of outputs than 1"; } auto isp = layer->insData.front().lock(); if (!isp) { - THROW_IE_EXCEPTION << "Cannot remove layer : "<< layer->name <<" cannot get it's input"; + IE_THROW() << "Cannot remove layer : "<< layer->name <<" cannot get it's input"; } // if dimensions of input layer not equal target dimensions - shape infer or reshape layer required, so skipping those cases auto osp = layer->outData.front(); if (checkDims && isp->getDims() != osp->getDims()) { - THROW_IE_EXCEPTION << "Cannot remove layer : "<< layer->name <<" its input layer(" + IE_THROW() << "Cannot remove layer : "<< layer->name <<" its input layer(" << isp->getName() << ") and output(" << osp->getName() << ") have incompatible dimensions"; } @@ -686,12 +693,12 @@ inline void CNNNetworkRemoveLayer(CNNLayerPtr layer, bool checkDims = true) { for (int i = 0; i < outData.second->insData.size(); i++) { auto insData = outData.second->insData[i].lock(); if (!insData) { - THROW_IE_EXCEPTION << "Cannot remove layer : "<< layer->name <<", its output layer(" << + IE_THROW() << "Cannot remove layer : "<< layer->name <<", its output layer(" << outData.first << " has invalid input configuration"; } auto creator = getCreatorLayer(insData).lock(); if (!creator) { - THROW_IE_EXCEPTION << "Cannot remove layer : "<< layer->name <<", its output layer(" << + IE_THROW() << "Cannot remove layer : "<< layer->name <<", its output layer(" << outData.first << " has invalid input configuration"; } @@ -725,26 +732,26 @@ inline void CNNNetworkReconnectLayer(CNNLayerPtr old_prev_layer, CNNLayerPtr new gnalog() << "Reconnecting " << old_prev_layer->name << " --> " << layer->name << " layer to " << new_prev_layer->name << " -- > " << layer->name << "layer\n"; if (!layer) { - THROW_IE_EXCEPTION << "Cannot reconnect layer pointed to NULL"; + IE_THROW() << "Cannot reconnect layer pointed to NULL"; } if (!old_prev_layer) { - THROW_IE_EXCEPTION << "Cannot reconnect layer old parent is NULL"; + IE_THROW() << "Cannot reconnect layer old parent is NULL"; } if (!new_prev_layer) { - THROW_IE_EXCEPTION << "Cannot reconnect layer new parent is NULL"; + IE_THROW() << "Cannot reconnect layer new parent is NULL"; } if (layer->insData.size() < 1) { - THROW_IE_EXCEPTION << "Cannot reconnect layer : " << layer->name + IE_THROW() << "Cannot reconnect layer : " << layer->name << " operation supports only layers with at least 1 incomming port"; } if (old_prev_layer->outData.size() != 1) { - THROW_IE_EXCEPTION << "Cannot reconnect layer : " << old_prev_layer->name << " must have exactly 1 outgoing port"; + IE_THROW() << "Cannot reconnect layer : " << old_prev_layer->name << " must have exactly 1 outgoing port"; } if (new_prev_layer->outData.size() != 1) { - THROW_IE_EXCEPTION << "Cannot reconnect layer : " << new_prev_layer->name << " must have exactly 1 outgoing port"; + IE_THROW() << "Cannot reconnect layer : " << new_prev_layer->name << " must have exactly 1 outgoing port"; } // layer has ports // each port has several layers connected to port @@ -753,7 +760,7 @@ inline void CNNNetworkReconnectLayer(CNNLayerPtr old_prev_layer, CNNLayerPtr new auto new_prev_layer_out_port_0 = new_prev_layer->outData.front(); if (checkDims && old_prev_layer_out_port_0->getDims() != new_prev_layer_out_port_0->getDims()) { - THROW_IE_EXCEPTION << "Cannot reconnect layer : " << old_prev_layer->name << " as its output have different dims than" + IE_THROW() << "Cannot reconnect layer : " << old_prev_layer->name << " as its output have different dims than" << new_prev_layer->name; } diff --git a/inference-engine/src/gna_plugin/gna_groups.hpp b/inference-engine/src/gna_plugin/gna_groups.hpp index b2f3f106e708ea..30faed4673123b 100644 --- a/inference-engine/src/gna_plugin/gna_groups.hpp +++ b/inference-engine/src/gna_plugin/gna_groups.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna_helper.cpp b/inference-engine/src/gna_plugin/gna_helper.cpp index 2e9090ba0326db..acd22bb8450ed2 100644 --- a/inference-engine/src/gna_plugin/gna_helper.cpp +++ b/inference-engine/src/gna_plugin/gna_helper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // // gna_helper.cpp : various GNA-related utility functions diff --git a/inference-engine/src/gna_plugin/gna_infer_request.hpp b/inference-engine/src/gna_plugin/gna_infer_request.hpp index 4b2fea5663e8b1..6ba7757a6c0153 100644 --- a/inference-engine/src/gna_plugin/gna_infer_request.hpp +++ b/inference-engine/src/gna_plugin/gna_infer_request.hpp @@ -90,7 +90,7 @@ class GNAInferRequest : public InferenceEngine::AsyncInferRequestInternal { if (inferRequestIdx == -1) { return InferenceEngine::INFER_NOT_STARTED; } else if (millis_timeout < -1) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str; + IE_THROW(ParameterMismatch); } if (millis_timeout == InferenceEngine::IInferRequest::WaitMode::RESULT_READY) { diff --git a/inference-engine/src/gna_plugin/gna_lib_ver_selector.hpp b/inference-engine/src/gna_plugin/gna_lib_ver_selector.hpp index 0455b721c1881b..d9bab715e9a768 100644 --- a/inference-engine/src/gna_plugin/gna_lib_ver_selector.hpp +++ b/inference-engine/src/gna_plugin/gna_lib_ver_selector.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna_model_serial.cpp b/inference-engine/src/gna_plugin/gna_model_serial.cpp index bd373c1952f4d3..3effccfb85e996 100644 --- a/inference-engine/src/gna_plugin/gna_model_serial.cpp +++ b/inference-engine/src/gna_plugin/gna_model_serial.cpp @@ -4,7 +4,6 @@ #include #include -#include
#include #include #include @@ -17,6 +16,7 @@ #else #include #include +#include #endif @@ -76,12 +76,17 @@ const int gna_header_magic = is_little_endian() ? 0x4d414e47 : 0x474e414d; GNAPluginNS::HeaderLatest::ModelHeader GNAModelSerial::ReadHeader(std::istream &is) { is.exceptions(std::istream::failbit); + auto startPos = is.tellg(); + if (startPos == -1) { + THROW_GNA_EXCEPTION << "Can't open stream to import"; + } is.seekg(0, is.end); auto stream_len = is.tellg(); if (stream_len == -1) { THROW_GNA_EXCEPTION << "Can't open file to import"; } - is.seekg(0, is.beg); + stream_len -= startPos; + is.seekg(startPos, is.beg); HeaderLatest::ModelHeader header; header.version.major = 0u; @@ -102,7 +107,7 @@ GNAPluginNS::HeaderLatest::ModelHeader GNAModelSerial::ReadHeader(std::istream & std::hex << std::setw(2) << static_cast(header.gnam[3]); } - is.seekg(0, is.beg); + is.seekg(startPos, is.beg); Header2dot1::ModelHeader tempHeader2dot1; switch (header.version.major) { case 2: @@ -127,7 +132,8 @@ GNAPluginNS::HeaderLatest::ModelHeader GNAModelSerial::ReadHeader(std::istream & break; } case 5: - readNBytes(&header, sizeof(Header2dot5::ModelHeader), is); + case 6: + readNBytes(&header, sizeof(HeaderLatest::ModelHeader), is); break; default: THROW_GNA_EXCEPTION << "Imported file unsupported. minor version should have values in range 1 to 4 and is: " << header.version.minor; @@ -288,11 +294,28 @@ void GNAModelSerial::Import(void *basePointer, for (int i = 0; i != nStates; i++) { void *pSegment; - readOffset(pSegment, basePointer, is); - uint32_t segmentSz; - readBits(segmentSz, is); - if (pstates) { - (*pstates)[i] = { pSegment, segmentSz }; + if ( modelHeader.version.major == 2 ) { + if ( modelHeader.version.minor < 6 ) { + readOffset(pSegment, basePointer, is); + uint32_t segmentSz = 0; + readBits(segmentSz, is); + if (pstates) { + (*pstates)[i] = std::make_tuple( pSegment, segmentSz, "noname", 1.0f ); + } + } else { + readOffset(pSegment, basePointer, is); + uint32_t segmentSz = 0; + readBits(segmentSz, is); + uint32_t nameSize = 0; + readNBits<32>(nameSize, is); + std::string inName("", nameSize); + readNBytes(&inName[0], nameSize, is); + float scale_factor = 1.0f; + readBits(scale_factor, is); + if (pstates) { + (*pstates)[i] = std::make_tuple( pSegment, segmentSz, inName, scale_factor); + } + } } } @@ -390,10 +413,17 @@ void GNAModelSerial::Export(void * basePointer, size_t gnaGraphSize, std::ostrea writeBits(layer.NumberOfOperands, os); for (uint32_t i = 0; i < layer.NumberOfOperands; i++) { - if (layer.Operands[i] == nullptr) + if (layer.Operands[i] == nullptr) { writeBits(Gna2Tensor{}, os); - else - writeBits(getTensorWithProperOffset(*layer.Operands[i]), os); + } else { + Gna2Tensor tensor = getTensorWithProperOffset(*layer.Operands[i]); + // we need to remove legacy (up to & including GNA HW 2.0) CNN enforement during export + // to avoid issues when importing and running the model on newer GNA HW with libGNA 2.1.x.y + if (i == OutOpIdx && layer.Type == Gna2OperationTypeConvolution) { + memset(tensor.Layout, 0, sizeof(tensor.Layout)); + } + writeBits(tensor, os); + } } writeBits(layer.NumberOfParameters, os); @@ -424,8 +454,17 @@ void GNAModelSerial::Export(void * basePointer, size_t gnaGraphSize, std::ostrea // writing memory information writeBits(static_cast(states.size()), os); for (auto && state : states) { - writeBits(offsetFromBase(state.first), os); - writeBits(state.second, os); + void* gna_ptr = nullptr; + uint32_t reserved_size = 0; + std::string name; + float scale_factor = 1.0f; + std::tie(gna_ptr, reserved_size, name, scale_factor) = state; + writeBits(offsetFromBase(gna_ptr), os); + writeBits(reserved_size, os); + const auto nameSize = strlen(name.c_str()) + 1; + writeBits(static_cast(nameSize), os); + writeNBytes(name.c_str(), nameSize, os); + writeBits(scale_factor, os); } // once structure has been written lets push gna graph @@ -564,11 +603,28 @@ void GNAModelSerial::Import(void *basePointer, for (int i = 0; i != nStates; i++) { void *pSegment; - readOffset(pSegment, basePointer, is); - uint32_t segmentSz; - readBits(segmentSz, is); - if (pstates) { - (*pstates)[i] = { pSegment, segmentSz }; + if ( modelHeader.version.major == 2 ) { + if ( modelHeader.version.minor < 6 ) { + readOffset(pSegment, basePointer, is); + uint32_t segmentSz = 0; + readBits(segmentSz, is); + if (pstates) { + (*pstates)[i] = std::make_tuple( pSegment, segmentSz, "noname", 1.0f); + } + } else { + readOffset(pSegment, basePointer, is); + uint32_t segmentSz = 0; + readBits(segmentSz, is); + uint32_t nameSize = 0; + readNBits<32>(nameSize, is); + std::string inName("", nameSize); + readNBytes(&inName[0], nameSize, is); + float scale_factor = 1.0f; + readBits(scale_factor, is); + if (pstates) { + (*pstates)[i] = std::make_tuple( pSegment, segmentSz, inName, scale_factor ); + } + } } } @@ -715,8 +771,17 @@ void GNAModelSerial::Export(void * basePointer, size_t gnaGraphSize, std::ostrea // writing memory information writeBits(static_cast(states.size()), os); for (auto && state : states) { - writeBits(offsetFromBase(state.first), os); - writeBits(state.second, os); + void* gna_ptr = nullptr; + uint32_t reserved_size = 0; + std::string name; + float scale_factor = 1.0f; + std::tie(gna_ptr, reserved_size, name, scale_factor) = state; + writeBits(offsetFromBase(gna_ptr), os); + writeBits(reserved_size, os); + const auto nameSize = strlen(name.c_str()) + 1; + writeBits(static_cast(nameSize), os); + writeNBytes(name.c_str(), nameSize, os); + writeBits(scale_factor, os); } // once structure has been written lets push gna graph @@ -778,7 +843,7 @@ void GNAModelSerial::ImportInputs(std::istream &is, InferenceEngine::InputsDataMap& dataMap) { dataMap.clear(); - for (auto inputIndex = 0; inputIndex < modelHeader.nInputs; inputIndex++) { + for (uint32_t inputIndex = 0; inputIndex < modelHeader.nInputs; inputIndex++) { const std::string& name = (modelHeader.version.major == 2 && modelHeader.version.minor >= 3) ? inputNames.at(inputIndex) : std::string("input" + std::to_string(inputIndex)); HeaderLatest::RuntimeEndPoint input; @@ -807,7 +872,7 @@ void GNAModelSerial::ImportOutputs(std::istream &is, dataMap.clear(); desc.resize(modelHeader.nOutputs); - for (auto outputIndex = 0; outputIndex < modelHeader.nOutputs; outputIndex++) { + for (uint32_t outputIndex = 0; outputIndex < modelHeader.nOutputs; outputIndex++) { const std::string& name = (modelHeader.version.major == 2 && modelHeader.version.minor >= 3) ? outputNames.at(outputIndex) : std::string("output" + std::to_string(outputIndex)); HeaderLatest::RuntimeEndPoint output; diff --git a/inference-engine/src/gna_plugin/gna_model_serial.hpp b/inference-engine/src/gna_plugin/gna_model_serial.hpp index 9d9e1a7e94a613..a0c8e08fed55f7 100644 --- a/inference-engine/src/gna_plugin/gna_model_serial.hpp +++ b/inference-engine/src/gna_plugin/gna_model_serial.hpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include "descriptions/gna_input_desc.hpp" #include "descriptions/gna_output_desc.hpp" @@ -22,7 +24,7 @@ */ class GNAModelSerial { public: - using MemoryType = std::vector>; + using MemoryType = std::vector>; private: #if GNA_LIB_VER == 2 @@ -122,10 +124,11 @@ class GNAModelSerial { * mark certain part of gna_blob as state (in future naming is possible) * @param descriptor_ptr * @param size + * @param layerName * @return */ - GNAModelSerial & AddState(void* descriptor_ptr, size_t size) { - states.emplace_back(descriptor_ptr, size); + GNAModelSerial & AddState(void* descriptor_ptr, size_t size, std::string layerName = "noname", float scale_factor = 1.0f) { + states.emplace_back(descriptor_ptr, size, layerName, scale_factor); return *this; } diff --git a/inference-engine/src/gna_plugin/gna_plugin.cpp b/inference-engine/src/gna_plugin/gna_plugin.cpp index 1236b695acfda6..3f93ec3055153b 100644 --- a/inference-engine/src/gna_plugin/gna_plugin.cpp +++ b/inference-engine/src/gna_plugin/gna_plugin.cpp @@ -24,7 +24,6 @@ #include #include #include "gna_plugin_config.hpp" -#include #include "gna_plugin.hpp" #include "optimizer/gna_pass_manager.hpp" #include "layers/gna_layer_type.hpp" @@ -39,6 +38,8 @@ #include "runtime/gna_float_runtime.hpp" #include #include "gna_graph_patterns.hpp" +#include "gna_tensor_tools.hpp" +#include #include #include @@ -50,6 +51,11 @@ #include #include #include +#include +#include +#include +#include +#include #if GNA_LIB_VER == 2 #include @@ -80,12 +86,10 @@ using namespace std; using namespace GNAPluginNS; using namespace InferenceEngine::details; -#ifdef __clang__ namespace InferenceEngine { template<> - InferenceEngine::TBlob >::~TBlob() { free(); } + InferenceEngine::TBlob >::~TBlob() { free(); } } -#endif // __clang__ template void GNAPlugin::copyInputData(T *dst, @@ -125,7 +129,7 @@ void GNAPlugin::copyInputData(T *dst, T *ptr_dst_vec = reinterpret_cast(dst) + i * num_vector_stride; const U *ptr_src_vec = reinterpret_cast(src) + i * num_vector_elements; std::memset(ptr_dst_vec, 0, num_vector_stride * sizeof(T)); - for (int j=0; j < num_vector_elements; j++) { + for (uint32_t j=0; j < num_vector_elements; j++) { ptr_dst_vec[j] = GNAPluginNS::ConvertFloatToInt16(ptr_src_vec[j] * scaleFactor); } } @@ -243,12 +247,22 @@ void GNAPlugin::ExportScores(void *ptr_dst, ptr_src_vec, num_active_elements * sizeof(int16_t)); } } else if (num_bytes_per_element == 4) { // should work for both int and float - for (uint32_t i = 0; i < num_frames; i++) { - void *ptr_dst_vec = reinterpret_cast(ptr_dst) + i * num_vector_elements * sizeof(float); - const void *ptr_src_vec = reinterpret_cast(ptr_src) + i * num_vector_stride * sizeof(float); - memset(ptr_dst_vec, 0, num_vector_elements * sizeof(float)); - ie_memcpy(ptr_dst_vec, num_active_elements * sizeof(float), - ptr_src_vec, num_active_elements * sizeof(float)); + if (num_bytes_per_element_input == 2) { + for (uint32_t i = 0; i < num_frames; i++) { + auto ptr_dst_vec = reinterpret_cast(ptr_dst) + i * num_vector_elements; + auto ptr_src_vec = reinterpret_cast(ptr_src) + i * num_vector_stride; + for (uint32_t j = 0; j < num_vector_elements; j++) { + ptr_dst_vec[j] = ptr_src_vec[j]; + } + } + } else { + for (uint32_t i = 0; i < num_frames; i++) { + void* ptr_dst_vec = reinterpret_cast(ptr_dst) + i * num_vector_elements * sizeof(float); + const void* ptr_src_vec = reinterpret_cast(ptr_src) + i * num_vector_stride * sizeof(float); + memset(ptr_dst_vec, 0, num_vector_elements * sizeof(float)); + ie_memcpy(ptr_dst_vec, num_active_elements * sizeof(float), + ptr_src_vec, num_active_elements * sizeof(float)); + } } } else { THROW_GNA_EXCEPTION << "Unsupported target precision for infer : " << num_bytes_per_element << "bytes"; @@ -394,9 +408,9 @@ void GNAPlugin::UpdateInputScaleFromNetwork(InferenceEngine::CNNNetwork & networ // search for FQ layers // only supports cases of int16 or int8 InputsDataMap inputs = network.getInputsInfo(); - for (auto && input : inputs) { + size_t inputIdx = 0; + for (auto&& input : inputs) { auto data = input.second->getInputData(); - size_t inputIdx = 0; for (auto && nextToInputLayer : getInputTo(data)) { if (!LayerInfo(nextToInputLayer.second).isFakeQuantize()) { inputIdx++; @@ -411,7 +425,16 @@ void GNAPlugin::UpdateInputScaleFromNetwork(InferenceEngine::CNNNetwork & networ THROW_GNA_LAYER_EXCEPTION(nextToInputLayer.second) << "unsupported, per-channel quantization for input layer : " << input.second->name(); } + + auto fp32eq = [](float p1, float p2) -> bool { + return (std::abs(p1 - p2) <= 0.00001f * std::min(std::abs(p1), std::abs(p2))); + }; float scaleInput = (fqLayer.getLevels() - 1) / (inputRange.second[0] - inputRange.first[0]); + auto minAbsVal = std::min(std::abs(inputRange.second[0]), std::abs(inputRange.first[0])); + auto maxAbsVal = std::max(std::abs(inputRange.second[0]), std::abs(inputRange.first[0])); + if (fp32eq(minAbsVal, 0.0f) && !fp32eq(maxAbsVal, 0.0f)) { + scaleInput = (fqLayer.getLevels() - 1) / (2 * maxAbsVal); + } if (!config.inputScaleFactors.empty()) { gnalog() << "Scale factor calculated during model quantization (" << scaleInput @@ -485,59 +508,7 @@ bool GNAPlugin::TryToInitOutput(int portId, InferenceEngine::CNNLayerPtr layer) return false; } -static void TransposeTensorFromNCHWToNHWC(size_t precision, size_t rows, size_t columns, uint8_t* buffer, bool transpose_rows, - const std::vector &transpositionInfo) { - size_t weightsTotalSize = rows * columns * precision; - std::vector transposedWeights(weightsTotalSize); - size_t weightsPartOffset = 0; - bool transposed = false; - for (const auto &transpositionInfoPart : transpositionInfo) { - auto partSize = transpositionInfoPart.num_transpose_rows * transpositionInfoPart.num_transpose_columns; - size_t weightsPartSize = partSize * precision * (transpose_rows ? rows : columns); - if (transpositionInfoPart.transpose && - transpositionInfoPart.num_transpose_rows != 1 && - transpositionInfoPart.num_transpose_columns != 1) { - if (transpose_rows) { - for (int weightsRowIx = 0; weightsRowIx < rows; ++weightsRowIx) { - auto weightsRowsOffset = weightsRowIx * partSize * precision; - auto cbuffer = buffer + weightsPartOffset + weightsRowsOffset; - auto weights_ptr = transposedWeights.data() + weightsPartOffset + weightsRowsOffset; - for (int colsIx = 0; colsIx < transpositionInfoPart.num_transpose_columns; ++colsIx) { - for (int rowIx = 0; rowIx < transpositionInfoPart.num_transpose_rows; ++rowIx) { - auto offsetWrite = (colsIx * transpositionInfoPart.num_transpose_rows + rowIx) * precision; - auto offsetRead = (transpositionInfoPart.num_transpose_columns * rowIx + colsIx) * precision; - ie_memcpy(weights_ptr + offsetWrite, weightsPartSize - weightsRowsOffset - offsetWrite, - cbuffer + offsetRead, precision); - } - } - } - } else { - auto cbuffer = buffer + weightsPartOffset; - auto weights_ptr = transposedWeights.data() + weightsPartOffset; - for (int colsIx = 0; colsIx < transpositionInfoPart.num_transpose_columns; ++colsIx) { - for (int rowIx = 0; rowIx < transpositionInfoPart.num_transpose_rows; ++rowIx) { - auto offsetWrite = (colsIx * transpositionInfoPart.num_transpose_rows + rowIx) * columns * precision; - auto offsetRead = (transpositionInfoPart.num_transpose_columns * rowIx + colsIx) * columns * precision; - ie_memcpy(weights_ptr + offsetWrite, weightsPartSize - offsetWrite, cbuffer + offsetRead, columns * precision); - } - } - } - transposed = true; - } else { - // Just copy data which should not be transposed - ie_memcpy(transposedWeights.data() + weightsPartOffset, - weightsPartSize, - buffer + weightsPartOffset, - weightsPartSize); - } - weightsPartOffset += weightsPartSize; - } - if (transposed) { - ie_memcpy(buffer, weightsTotalSize, transposedWeights.data(), weightsTotalSize); - } -} - -void GNAPlugin::ConvertModelLayoutFromNCHWToNHWC(const std::vector &layers) { +void GNAPlugin::FillInputsAndOutputsTranspositionInfo(const InferenceEngine::CNNNetwork& net) { auto printTranspositionInfo = [](const std::vector &transpositionInfo) { for (const auto &transpositionInfoPart : transpositionInfo) { gnalog() << "transpose=" << transpositionInfoPart.transpose << " rows_num=" << transpositionInfoPart.num_transpose_rows @@ -545,136 +516,99 @@ void GNAPlugin::ConvertModelLayoutFromNCHWToNHWC(const std::vector } }; - auto foundPartToTranspose = [](const std::vector &transpositionInfo) { - auto partToTranspose = std::find_if(std::begin(transpositionInfo), std::end(transpositionInfo), - [](const TranspositionInfo &infoPart) { return infoPart.transpose; }); - return partToTranspose != std::end(transpositionInfo); - }; - - for (auto& l : layers) { + auto inputLayers = CNNNetGetAllInputLayers(net); + for (const auto& inputLayer : inputLayers) { // Collect information for inputs transposition - if (LayerInfo(l).isInput()) { - auto transpositionInfo = FindTranspositionInfoFromNextLayers(l); - if (!transpositionInfo.empty()) { - transpose_inputs_info.insert({l->name, transpositionInfo}); - gnalog() << "Input " << l->name << " transposition info: \n"; - printTranspositionInfo(transpositionInfo); - } - } + if (!LayerInfo(inputLayer).isInput()) continue; + auto transpositionInfo = FindTranspositionInfoFromNextLayers(inputLayer); + if (transpositionInfo.empty()) continue; + transpose_inputs_info.insert({inputLayer->name, transpositionInfo}); + gnalog() << "Input " << inputLayer->name << " transposition info: \n"; + printTranspositionInfo(transpositionInfo); + } + + auto outputsMap = net.getOutputsInfo(); + for (const auto& outPort : outputsMap) { + auto outLayer = getCreatorLayer(outPort.second).lock(); // Collect information for outputs transposition - if (LayerInfo(l).isOutput()) { - auto transpositionInfo = FindTranspositionInfoFromPrevLayers(l); - if (!transpositionInfo.empty()) { - // Swap transposition info rows and columns since we need to transpose output back from NHWC to NCHW - for (auto && transpositionInfoPart : transpositionInfo) { - if (transpositionInfoPart.transpose) { - std::swap(transpositionInfoPart.num_transpose_rows, transpositionInfoPart.num_transpose_columns); - } - } - transpose_outputs_info.insert({l->name, transpositionInfo}); - gnalog() << "Output " << l->name << " transposition info: \n"; - printTranspositionInfo(transpositionInfo); + if (!LayerInfo(outLayer).isOutput()) continue; + auto transpositionInfo = FindTranspositionInfoFromPrevLayers(outLayer); + if (transpositionInfo.empty()) continue; + + // Swap transposition info rows and columns since we need to transpose output back from NHWC to NCHW + for (auto && transpositionInfoPart : transpositionInfo) { + if (transpositionInfoPart.transpose) { + std::swap(transpositionInfoPart.num_transpose_rows, transpositionInfoPart.num_transpose_columns); } } + transpose_outputs_info.insert({outLayer->name, transpositionInfo}); + gnalog() << "Output " << outLayer->name << " transposition info: \n"; + printTranspositionInfo(transpositionInfo); + } +} - // Transpose weights - if (LayerInfo(l).isScaleShift()) { - std::vector transpositionInfo; - // Try to find a convolution in previous layers - if (InferenceEngine::CNNNetHasPrevLayer(l.get())) { - transpositionInfo = FindTranspositionInfoFromPrevLayers(InferenceEngine::CNNNetPrevLayer(l)); - // If no convolutions are found try to find them in next layers - if (!foundPartToTranspose(transpositionInfo)) { - transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); - } +#ifdef PLOT +void GNAPlugin::AddDebugProperties(const InferenceEngine::CNNLayerPtr layer, + InferenceEngine::ordered_properties& printed_properties, + InferenceEngine::ordered_properties& node_properties) { + // printing quantized params + auto quantized = InferenceEngine::getInjectedData(layer); + if (!quantized) { + return; + } + if (LayerInfo(layer).isWeightable() || LayerInfo(layer).isEltwise()) { + printed_properties.emplace_back( + "weights scale factor", std::to_string(quantized->_weights_quant.GetScale())); + if (quantized->_weights_quant.IsStatsSet()) { + for (auto& min : quantized->_weights_quant.GetMinValues()) { + printed_properties.emplace_back( + "weights min val", std::to_string(min)); } - if (!transpositionInfo.empty()) { - auto weightable = dynamic_cast(l.get()); - IE_ASSERT(weightable != nullptr); - TransposeTensorFromNCHWToNHWC(weightable->precision.size(), 1, weightable->_weights->size(), - weightable->_weights->cbuffer().as(), true, transpositionInfo); - if (weightable->_biases) { - TransposeTensorFromNCHWToNHWC(weightable->precision.size(), 1, weightable->_biases->size(), - weightable->_biases->cbuffer().as(), true, transpositionInfo); - } - gnalog() << l->name << " weights and biases rows transposition info:\n"; - printTranspositionInfo(transpositionInfo); + for (auto& max : quantized->_weights_quant.GetMaxValues()) { + printed_properties.emplace_back( + "weights max val", std::to_string(max)); } } - if (LayerInfo(l).isFullyConnected()) { - auto weightable = dynamic_cast(l.get()); - IE_ASSERT(weightable != nullptr); - auto precision = weightable->precision.size(); - auto out_dims = l->outData[0]->getDims(); - auto in_dims = l->input()->getDims(); - auto weightsRows = InferenceEngine::details::product(std::begin(out_dims) + 1, std::end(out_dims)); - auto weightsColumns = InferenceEngine::details::product(std::begin(in_dims) + 1, std::end(in_dims)); - // Find a convolution in previous layers to rotate weights rows - if (InferenceEngine::CNNNetHasPrevLayer(l.get())) { - auto transpositionInfo = FindTranspositionInfoFromPrevLayers(InferenceEngine::CNNNetPrevLayer(l)); - if (!transpositionInfo.empty()) { - size_t totalColumns = 0; - for (auto && transpositionInfoPart : transpositionInfo) { - totalColumns += transpositionInfoPart.num_transpose_rows * transpositionInfoPart.num_transpose_columns; - } - if (weightsColumns != totalColumns) { - THROW_GNA_EXCEPTION << l->name << " weights columns from transposition info (" << totalColumns - << ") don't match input dimensions (" << weightsColumns << ")"; - } - TransposeTensorFromNCHWToNHWC(precision, weightsRows, weightsColumns, weightable->_weights->cbuffer().as(), - true, transpositionInfo); - gnalog() << l->name << " weights rows transposition info:\n"; - printTranspositionInfo(transpositionInfo); - } + if (quantized->_bias_quant.IsStatsSet()) { + for (auto& min : quantized->_bias_quant.GetMinValues()) { + printed_properties.emplace_back( + "bias min val", std::to_string(min)); } - // Find a convolution in next layers to rotate weights columns - if (!l->outData.empty() && !getInputTo(l->outData[0]).empty()) { - auto transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); - if (!transpositionInfo.empty()) { - size_t totalRows = 0; - for (const auto& transpositionInfoPart : transpositionInfo) { - totalRows += transpositionInfoPart.num_transpose_rows * transpositionInfoPart.num_transpose_columns; - } - if (weightsRows != totalRows) { - THROW_GNA_EXCEPTION << l->name << "weights rows from transposition info (" << totalRows - << ") don't match output dimensions (" << weightsRows << ")"; - } - TransposeTensorFromNCHWToNHWC(precision, weightsRows, weightsColumns, weightable->_weights->cbuffer().as(), - false, transpositionInfo); - gnalog() << l->name << " weights columns transposition info:\n"; - printTranspositionInfo(transpositionInfo); - } + for (auto& max : quantized->_bias_quant.GetMaxValues()) { + printed_properties.emplace_back( + "bias max val", std::to_string(max)); } } + } + printed_properties.emplace_back( + "src scale factor", std::to_string(quantized->_src_quant.GetScale())); + if (quantized->_src_quant.IsStatsSet()) { + for (auto& min : quantized->_src_quant.GetMinValues()) { + printed_properties.emplace_back( + "src min val", std::to_string(min)); + } + for (auto& max : quantized->_src_quant.GetMaxValues()) { + printed_properties.emplace_back( + "src max val", std::to_string(max)); + } + } - if (LayerInfo(l).isEltwise()) { - // We need to transpose a constant which is an eltwise input - auto firstInput = InferenceEngine::CNNNetPrevLayer(l, 0); - auto secondInput = InferenceEngine::CNNNetPrevLayer(l, 1); - if (!LayerInfo(firstInput).isConst() && !LayerInfo(secondInput).isConst()) { - continue; - } - // Let a constant to be the second input - if (LayerInfo(firstInput).isConst()) { - std::swap(firstInput, secondInput); - } - // Find a convolution in previous or next layers - auto transpositionInfo = FindTranspositionInfoFromPrevLayers(firstInput); - if (!foundPartToTranspose(transpositionInfo)) { - transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); - } - if (!transpositionInfo.empty()) { - auto blob = secondInput->blobs["custom"]; - TransposeTensorFromNCHWToNHWC(blob->getTensorDesc().getPrecision().size(), 1, blob->size(), - blob->buffer().as(), true, transpositionInfo); - gnalog() << l->name << " data transposition info:\n"; - printTranspositionInfo(transpositionInfo); - } + printed_properties.emplace_back( + "dst scale factor", std::to_string(quantized->_dst_quant.GetScale())); + if (quantized->_dst_quant.IsStatsSet()) { + for (auto& min : quantized->_dst_quant.GetMinValues()) { + printed_properties.emplace_back( + "dst min val", std::to_string(min)); + } + for (auto& max : quantized->_dst_quant.GetMaxValues()) { + printed_properties.emplace_back( + "dst max val", std::to_string(max)); } } } +#endif void GNAPlugin::LoadNetwork(CNNNetwork & _network) { std::shared_ptr convertedNetwork; @@ -698,6 +632,12 @@ void GNAPlugin::LoadNetwork(CNNNetwork & _network) { // UnrollTI transformation is disabled by default, is turned on by LowLatency transformation return node->get_rt_info().count("UNROLL_TI") == 0; }); + pass_config->disable(); + pass_config->disable(); + pass_config->disable(); + pass_config->disable(); + // Consider to enable after per-channel quantization on FakeQuantize layer is supported in GNAPlugin, see issue 52034 + pass_config->disable(); manager.run_passes(graph); convertedNetwork = InferenceEngine::details::convertFunctionToICNNNetwork(graph, clonedNetwork); } @@ -717,9 +657,8 @@ void GNAPlugin::LoadNetwork(CNNNetwork & _network) { UpdateGnaQuantModeFromNetwork(network); UpdateInputScaleFromNetwork(network); - auto layers = details::CNNNetSortTopologically(network); - if (MustBeConvertedFromNCHWToNHWC(layers)) { - ConvertModelLayoutFromNCHWToNHWC(layers); + if (MustBeConvertedFromNCHWToNHWC(details::CNNNetSortTopologically(network))) { + FillInputsAndOutputsTranspositionInfo(network); } // network optimisation phases @@ -737,6 +676,8 @@ void GNAPlugin::LoadNetwork(CNNNetwork & _network) { passes->registerPass(); passes->registerPass(); + passes->registerPass(); + passes->registerPass(); passes->registerPass(); @@ -809,17 +750,11 @@ void GNAPlugin::LoadNetwork(CNNNetwork & _network) { #ifdef PLOT std::ofstream file("gna_passes.dot"); - saveGraphToDot(newNet, file, [](const CNNLayerPtr layer, - ordered_properties &printed_properties, - ordered_properties &node_properties) { - // printing quantized params - auto quantized = InferenceEngine::getInjectedData(layer); - if (!quantized) { - return; - } - printed_properties.emplace_back( - "scale factor", std::to_string(quantized->_dst_quant.GetScale())); - }); + saveGraphToDot(newNet, file, [this](const CNNLayerPtr layer, + ordered_properties& printed_properties, + ordered_properties& node_properties) { + AddDebugProperties(layer, printed_properties, node_properties); + }); #endif auto sortedNet = CNNNetSortTopologicallyEx(newNet, make_fuzed_order); @@ -1175,7 +1110,7 @@ uint32_t GNAPlugin::QueueInference(const InferenceEngine::BlobMap &inputs, Infer Wait(0); freeNnet = nnets.begin(); } else { - THROW_IE_EXCEPTION << as_status << REQUEST_BUSY + IE_THROW(RequestBusy) << "GNA executable network has max of " << static_cast(gnaFlags->gna_lib_async_threads_num) << " parallel infer requests, please sync one of already running"; @@ -1193,12 +1128,6 @@ uint32_t GNAPlugin::QueueInference(const InferenceEngine::BlobMap &inputs, Infer << input.second->getTensorDesc().getLayout(); } - auto dims = input.second->getTensorDesc().getDims(); - if (inputLayout == Layout::CHW && (dims[0] != 1 || dims[1] != 1)) { - THROW_GNA_EXCEPTION << "For Layout::CHW only dimension with height = 1 and channel = 1 is supported, but was: " - << dims; - } - if (inputLayout == Layout::NCHW || inputLayout == Layout::CHW) { // specific case that can be squeezed to 2d inputLayout = Layout::NC; @@ -1230,6 +1159,7 @@ uint32_t GNAPlugin::QueueInference(const InferenceEngine::BlobMap &inputs, Infer } } + auto dims = input.second->getTensorDesc().getDims(); auto importedElements = is1D ? dims[0] : details::product(++std::begin(dims), std::end(dims)); auto importedFrames = (is3D || is1D) ? 1 : dims[0]; auto targetGroups = is1D ? 1 : dims[0]; // TODO: no proper support for groups yet @@ -1266,7 +1196,7 @@ uint32_t GNAPlugin::QueueInference(const InferenceEngine::BlobMap &inputs, Infer << ") do not match input buffer length of " << elementsPerBatch; } auto input_ptr = reinterpret_cast(inputsDesc->getPtrInputsGlobal(input.first)[idx]); - TransposeTensorFromNCHWToNHWC(gnadevice ? 2 : 4, batchSize, elementsPerBatch, input_ptr, true, transpose_info->second); + ConvertTensorFromNCHWToNHWC(gnadevice ? 2 : 4, batchSize, elementsPerBatch, input_ptr, true, transpose_info->second); } ++inputNum; } @@ -1343,9 +1273,9 @@ GnaWaitStatus GNAPlugin::WaitFor(uint32_t request_idx, int64_t millisTimeout) { for (auto && outputBlobIt : request) { auto & outputBlob = outputBlobIt.second; auto & outputDesc = outputsDesc[output_idx]; - if (!outputBlob->getTensorDesc().getLayout() == Layout::C && !outputBlob->getTensorDesc().getLayout() == Layout::NC && - !outputBlob->getTensorDesc().getLayout() == Layout::CN && !outputBlob->getTensorDesc().getLayout() == Layout::NCHW && - !outputBlob->getTensorDesc().getLayout() == Layout::CHW) { + if (outputBlob->getTensorDesc().getLayout() != Layout::C && outputBlob->getTensorDesc().getLayout() != Layout::NC && + outputBlob->getTensorDesc().getLayout() != Layout::CN && outputBlob->getTensorDesc().getLayout() != Layout::NCHW && + outputBlob->getTensorDesc().getLayout() != Layout::CHW) { THROW_GNA_EXCEPTION << "Expected output blob to have Layout::C, Layout::NC, Layout::CN, Layout::NCHW or Layout::CHW. But was " << outputBlob->getTensorDesc().getLayout(); } @@ -1368,12 +1298,12 @@ GnaWaitStatus GNAPlugin::WaitFor(uint32_t request_idx, int64_t millisTimeout) { THROW_GNA_EXCEPTION << "Transposed data size (" << transposed_data_size << ") do not match output buffer length of " << elementsPerBatch; } - TransposeTensorFromNCHWToNHWC(outputDesc.num_bytes_per_element, - batchSize, - elementsPerBatch, - reinterpret_cast(outputDesc.ptrs[request_idx]), - true, - transpose_output_info->second); + ConvertTensorFromNCHWToNHWC(outputDesc.num_bytes_per_element, + batchSize, + elementsPerBatch, + reinterpret_cast(outputDesc.ptrs[request_idx]), + true, + transpose_output_info->second); } ExportScores(outputBlob->buffer(), @@ -1569,10 +1499,9 @@ InferenceEngine::ExecutableNetwork GNAPlugin::ImportNetwork(std::istream& networ for (auto && memory : mt) { GNAMemoryLayer memoryLayer(nullptr, nullptr, gnaFlags->sw_fp32 ? 4 : 2); - memoryLayer.gna_ptr = memory.first; - memoryLayer.reserved_size = memory.second; - - graphCompiler.memory_connection.emplace_back(make_pair(std::string("noname"), memoryLayer)); + std::string name; + std::tie(memoryLayer.gna_ptr, memoryLayer.reserved_size, name, memoryLayer.scale_factor) = memory; + graphCompiler.memory_connection.emplace_back(make_pair(name, memoryLayer)); } DumpXNNToFile(); @@ -1627,7 +1556,9 @@ void GNAPlugin::Export(std::ostream &outStream) { .SetOutputRotation(transpose_outputs_info); for (auto && memoryConnection : graphCompiler.memory_connection) { - serial.AddState(memoryConnection.second.gna_ptr, memoryConnection.second.reserved_size); + auto state = std::make_shared(memoryConnection.first, std::make_shared (memoryConnection.second)); + gnalog() << "Scale factor Memory layer " << state->GetScaleFactor() << std::endl; + serial.AddState(memoryConnection.second.gna_ptr, memoryConnection.second.reserved_size, memoryConnection.first, state->GetScaleFactor()); } serial.Export(gnamem->getBasePtr(), gnamem->getTotalBytes(), outStream); @@ -1660,7 +1591,7 @@ InferenceEngine::QueryNetworkResult GNAPlugin::QueryNetwork(const InferenceEngin InferenceEngine::QueryNetworkResult res; if (network.getFunction()) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str << " ngraph::Function is not supported natively"; + IE_THROW(NotImplemented) << " ngraph::Function is not supported natively"; } std::unordered_set allLayers; diff --git a/inference-engine/src/gna_plugin/gna_plugin.hpp b/inference-engine/src/gna_plugin/gna_plugin.hpp index 1a6e20d558c660..611ba2c6912c00 100644 --- a/inference-engine/src/gna_plugin/gna_plugin.hpp +++ b/inference-engine/src/gna_plugin/gna_plugin.hpp @@ -23,6 +23,7 @@ #include "gna_plugin_policy.hpp" #include "gna_plugin_log.hpp" #include "gna_plugin_config.hpp" +#include #if GNA_LIB_VER == 2 #include @@ -231,12 +232,16 @@ class GNAPlugin : public InferenceEngine::IInferencePlugin { bool TryToInitOutput(int portId, InferenceEngine::CNNLayerPtr layer); /** - * @brief Converts a model from NCHW to NHWC. It fills inputs and outputs transposition info and - * changes weights order for affine, eltwise and scaleshift layers. Information for transposition - * is found from convolution/pooling input or output dimensions. + * @brief Fills inputs and outputs transposition info for model convertion from NCHW to NHWC. + * Information for transposition is found from convolution/pooling input or output dimensions. * @param layers model sorted layers */ - void ConvertModelLayoutFromNCHWToNHWC(const std::vector &layers); + void FillInputsAndOutputsTranspositionInfo(const InferenceEngine::CNNNetwork& net); +#ifdef PLOT + void AddDebugProperties(const InferenceEngine::CNNLayerPtr layer, + InferenceEngine::ordered_properties& printed_properties, + InferenceEngine::ordered_properties& node_properties); +#endif }; } // namespace GNAPluginNS diff --git a/inference-engine/src/gna_plugin/gna_plugin_config.cpp b/inference-engine/src/gna_plugin/gna_plugin_config.cpp index 60d4d8542142dc..b006e2353234f6 100644 --- a/inference-engine/src/gna_plugin/gna_plugin_config.cpp +++ b/inference-engine/src/gna_plugin/gna_plugin_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -156,6 +156,24 @@ void Config::UpdateFromMap(const std::map& config) { THROW_GNA_EXCEPTION << "GNA pwl uniform algorithm parameter " << "should be equal to YES/NO, but not" << value; } + } else if (key == GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT)) { + float max_error; + try { + max_error = InferenceEngine::CNNLayer::ie_parse_float(value); + if (max_error < 0.0f || max_error > 100.0f) { + throw std::out_of_range(""); + } + } + catch (std::invalid_argument&) { + THROW_GNA_EXCEPTION << "Invalid value of PWL max error percent"; + } + catch (std::out_of_range&) { + log << "Unsupported PWL error percent value: " << value + << ", should be greater than 0 and less than 100"; + THROW_GNA_EXCEPTION << "Unsupported PWL error percent value: " << value + << ", should be greater than 0 and less than 100"; + } + gnaFlags.pwlMaxErrorPercent = max_error; } else if (key == CONFIG_KEY(PERF_COUNT)) { if (value == PluginConfigParams::YES) { gnaFlags.performance_counting = true; @@ -193,8 +211,9 @@ void Config::UpdateFromMap(const std::map& config) { THROW_GNA_EXCEPTION << "EXCLUSIVE_ASYNC_REQUESTS should be YES/NO, but not" << value; } } else { - THROW_GNA_EXCEPTION << as_status << NOT_FOUND << "Incorrect GNA Plugin config. Key " << item.first - << " not supported"; + IE_THROW(NotFound) + << "[GNAPlugin] in function " << __PRETTY_FUNCTION__<< ": " + << "Incorrect GNA Plugin config. Key " << item.first << " not supported"; } if (gnaFlags.sw_fp32 && gnaFlags.gna_lib_async_threads_num > 1) { @@ -252,6 +271,7 @@ void Config::AdjustKeyMapValues() { keyConfigMap[GNA_CONFIG_KEY(PRECISION)] = gnaPrecision.name(); keyConfigMap[GNA_CONFIG_KEY(PWL_UNIFORM_DESIGN)] = gnaFlags.uniformPwlDesign ? PluginConfigParams::YES: PluginConfigParams::NO; + keyConfigMap[GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT)] = std::to_string(gnaFlags.pwlMaxErrorPercent); keyConfigMap[CONFIG_KEY(PERF_COUNT)] = gnaFlags.performance_counting ? PluginConfigParams::YES: PluginConfigParams::NO; keyConfigMap[GNA_CONFIG_KEY(LIB_N_THREADS)] = std::to_string(gnaFlags.gna_lib_async_threads_num); diff --git a/inference-engine/src/gna_plugin/gna_plugin_config.hpp b/inference-engine/src/gna_plugin/gna_plugin_config.hpp index c9f8b0d676a620..f6e48fb04b2583 100644 --- a/inference-engine/src/gna_plugin/gna_plugin_config.hpp +++ b/inference-engine/src/gna_plugin/gna_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,6 +23,13 @@ struct Config { AdjustKeyMapValues(); } Config(const Config& r) { + Copy(r); + } + Config& operator=(const Config& r) { + Copy(r); + return *this; + } + void Copy(const Config& r) { gnaPrecision = r.gnaPrecision; dumpXNNPath = r.dumpXNNPath; dumpXNNGeneration = r.dumpXNNGeneration; @@ -34,7 +41,7 @@ struct Config { #endif inputScaleFactors = r.inputScaleFactors; gnaFlags = r.gnaFlags; - std::lock_guard(r.mtx4keyConfigMap); + std::lock_guard lock(r.mtx4keyConfigMap); keyConfigMap = r.keyConfigMap; } void UpdateFromMap(const std::map& configMap); diff --git a/inference-engine/src/gna_plugin/gna_plugin_entry_points.cpp b/inference-engine/src/gna_plugin/gna_plugin_entry_points.cpp index 87994ac161a1be..707c298c8eab97 100644 --- a/inference-engine/src/gna_plugin/gna_plugin_entry_points.cpp +++ b/inference-engine/src/gna_plugin/gna_plugin_entry_points.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna_plugin_internal.hpp b/inference-engine/src/gna_plugin/gna_plugin_internal.hpp index 5917e28128fe83..9a57dbc123d457 100644 --- a/inference-engine/src/gna_plugin/gna_plugin_internal.hpp +++ b/inference-engine/src/gna_plugin/gna_plugin_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,6 +17,7 @@ namespace GNAPluginNS { class GNAPluginInternal : public InferenceEngine::InferencePluginInternal { private: + std::mutex syncCallsToLoadExeNetworkImpl; Config defaultConfig; std::weak_ptr plgPtr; std::shared_ptr GetCurrentPlugin() const { @@ -32,6 +33,7 @@ class GNAPluginInternal : public InferenceEngine::InferencePluginInternal { InferenceEngine::ExecutableNetworkInternal::Ptr LoadExeNetworkImpl( const InferenceEngine::CNNNetwork &network, const std::map &config) override { + std::lock_guard lock{ syncCallsToLoadExeNetworkImpl }; Config updated_config(defaultConfig); updated_config.UpdateFromMap(config); auto plg = std::make_shared(updated_config.keyConfigMap); @@ -75,7 +77,7 @@ class GNAPluginInternal : public InferenceEngine::InferencePluginInternal { auto plg = GetCurrentPlugin(); try { plg->SetConfig(config); - } catch (InferenceEngine::details::InferenceEngineException) {} + } catch (InferenceEngine::Exception&) {} return plg->QueryNetwork(network, config); } diff --git a/inference-engine/src/gna_plugin/gna_plugin_log.hpp b/inference-engine/src/gna_plugin/gna_plugin_log.hpp index bba788b3007570..de3b9dec8f9bce 100644 --- a/inference-engine/src/gna_plugin/gna_plugin_log.hpp +++ b/inference-engine/src/gna_plugin/gna_plugin_log.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,7 +6,6 @@ #include #include -#include
// #define GNA_DEBUG #ifdef GNA_DEBUG @@ -71,7 +70,7 @@ inline GnaLog & gnawarn() { if (!(expr)) { \ THROW_GNA_LAYER_EXCEPTION(layer) << ": " << #expr; \ } -#define THROW_GNA_EXCEPTION THROW_IE_EXCEPTION << "[GNAPlugin] in function " << __PRETTY_FUNCTION__<< ": " +#define THROW_GNA_EXCEPTION IE_THROW() << "[GNAPlugin] in function " << __PRETTY_FUNCTION__<< ": " #define THROW_GNA_LAYER_EXCEPTION(layer) THROW_GNA_EXCEPTION << LAYER_NAME(layer) #define LAYER_NAME(layer) (layer)->type << " layer : \"" << (layer)->name << "\" " diff --git a/inference-engine/src/gna_plugin/gna_plugin_policy.hpp b/inference-engine/src/gna_plugin/gna_plugin_policy.hpp index bf6b5aa9b9dc48..b14917a4061cfb 100644 --- a/inference-engine/src/gna_plugin/gna_plugin_policy.hpp +++ b/inference-engine/src/gna_plugin/gna_plugin_policy.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,6 +67,8 @@ class Policy { }; uint32_t limitedTo = LIMITED_TO_DEFAULT_GNA2_65536; } GNAAffineDiagonalPolicy; + + bool cnn2dInputPaddingSupported = true; }; inline std::ostream& operator<<(std::ostream& os, Policy::ScaleShift policy) { diff --git a/inference-engine/src/gna_plugin/gna_plugin_query_api.cpp b/inference-engine/src/gna_plugin/gna_plugin_query_api.cpp index 6d89b1daed63e2..9d7ffe9ac97516 100644 --- a/inference-engine/src/gna_plugin/gna_plugin_query_api.cpp +++ b/inference-engine/src/gna_plugin/gna_plugin_query_api.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna_slope_scale.cpp b/inference-engine/src/gna_plugin/gna_slope_scale.cpp index fbf16450b5f8aa..0b912953fe1412 100644 --- a/inference-engine/src/gna_plugin/gna_slope_scale.cpp +++ b/inference-engine/src/gna_plugin/gna_slope_scale.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/gna_slope_scale.h b/inference-engine/src/gna_plugin/gna_slope_scale.h index 967bdeb393dea3..30a543dd1d12fc 100644 --- a/inference-engine/src/gna_plugin/gna_slope_scale.h +++ b/inference-engine/src/gna_plugin/gna_slope_scale.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,10 +6,10 @@ #include -typedef struct { +struct pwl_gna_slope_scale_t { double slope {}; uint64_t slope_scale = 0; uint32_t slope_scale_index {}; -} pwl_gna_slope_scale_t; +}; pwl_gna_slope_scale_t gna_slope(const double slope, const double in_scale, const double out_scale); diff --git a/inference-engine/src/gna_plugin/gna_tensor_tools.hpp b/inference-engine/src/gna_plugin/gna_tensor_tools.hpp new file mode 100644 index 00000000000000..c0cb00f058780c --- /dev/null +++ b/inference-engine/src/gna_plugin/gna_tensor_tools.hpp @@ -0,0 +1,82 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include "gna_data_types.hpp" + +namespace GNAPluginNS { + +/** + * @brief convert a tensor or its parts from NCHW to NHWC order on the base of transposition information. + * The tensor to be converted from NCHW to NHWC may be 2D. But we may need to change data order inside one of its dimensions since + * its data is reshaped to/from 4D data used by convolution. TranspositionInfo contains number of rows (corresponds to C dimension) + * and columns (corresponds to HW dimensions) of every part of the tensor which should or shouldn't be transposed (for example if output + * of some convolution layer is concatenated with output of another convolution layer and there is a fully connected layer after that, + * we need to transpose its weights parts corresponding to different convolutions outputs separately). + * If the tensor is input, output data, scaleshift weights or a constant input of eltwise, it's rows number is equal to 1 and its columns number + * is equal to the product of input dimensions (N * C * H * W). The row (or its separate parts) should be transposed. + * If the tensor is fully connected layer weights, it's rows number is equal to the product of input dimensions and it's columns number is + * equal to the product of output dimensions. Every row of this tensor (or its separate parts) should be transposed if there are convolution + * layers before this layer. Every column (or its separate parts) should be transposed if there are convolution layers after this layer. + * @param precision data precision + * @param rows number of rows in the whole tensor + * @param columns number of columns in the whole tensor + * @param buffer pointer to a tensor buffer + * @param transpose_rows flag indicated if tensor rows or tensor columns must be transposed + * @param transpositionInfo vector of structures with information about transposition: every element contains information about tensor + * part which should be transposed separately or shouldn't be transposed + */ +inline void ConvertTensorFromNCHWToNHWC(size_t precision, size_t rows, size_t columns, uint8_t* buffer, bool transpose_rows, + const std::vector &transpositionInfo) { + size_t weightsTotalSize = rows * columns * precision; + std::vector transposedWeights(weightsTotalSize); + size_t weightsPartOffset = 0; + bool transposed = false; + for (const auto &transpositionInfoPart : transpositionInfo) { + auto partSize = transpositionInfoPart.num_transpose_rows * transpositionInfoPart.num_transpose_columns; + size_t weightsPartSize = partSize * precision * (transpose_rows ? rows : columns); + if (transpositionInfoPart.transpose && + transpositionInfoPart.num_transpose_rows != 1 && + transpositionInfoPart.num_transpose_columns != 1) { + if (transpose_rows) { + for (int weightsRowIx = 0; weightsRowIx < rows; ++weightsRowIx) { + auto weightsRowsOffset = weightsRowIx * partSize * precision; + auto cbuffer = buffer + weightsPartOffset + weightsRowsOffset; + auto weights_ptr = transposedWeights.data() + weightsPartOffset + weightsRowsOffset; + for (int colsIx = 0; colsIx < transpositionInfoPart.num_transpose_columns; ++colsIx) { + for (int rowIx = 0; rowIx < transpositionInfoPart.num_transpose_rows; ++rowIx) { + auto offsetWrite = (colsIx * transpositionInfoPart.num_transpose_rows + rowIx) * precision; + auto offsetRead = (transpositionInfoPart.num_transpose_columns * rowIx + colsIx) * precision; + ie_memcpy(weights_ptr + offsetWrite, weightsPartSize - weightsRowsOffset - offsetWrite, + cbuffer + offsetRead, precision); + } + } + } + } else { + auto cbuffer = buffer + weightsPartOffset; + auto weights_ptr = transposedWeights.data() + weightsPartOffset; + for (int colsIx = 0; colsIx < transpositionInfoPart.num_transpose_columns; ++colsIx) { + for (int rowIx = 0; rowIx < transpositionInfoPart.num_transpose_rows; ++rowIx) { + auto offsetWrite = (colsIx * transpositionInfoPart.num_transpose_rows + rowIx) * columns * precision; + auto offsetRead = (transpositionInfoPart.num_transpose_columns * rowIx + colsIx) * columns * precision; + ie_memcpy(weights_ptr + offsetWrite, weightsPartSize - offsetWrite, cbuffer + offsetRead, columns * precision); + } + } + } + transposed = true; + } else { + // Just copy data which should not be transposed + ie_memcpy(transposedWeights.data() + weightsPartOffset, + weightsPartSize, + buffer + weightsPartOffset, + weightsPartSize); + } + weightsPartOffset += weightsPartSize; + } + if (transposed) { + ie_memcpy(buffer, weightsTotalSize, transposedWeights.data(), weightsTotalSize); + } +} + +} // namespace GNAPluginNS \ No newline at end of file diff --git a/inference-engine/src/gna_plugin/gna_upstream_iterator.hpp b/inference-engine/src/gna_plugin/gna_upstream_iterator.hpp index 559fb8388b72bd..2ff0f7c2a99b17 100644 --- a/inference-engine/src/gna_plugin/gna_upstream_iterator.hpp +++ b/inference-engine/src/gna_plugin/gna_upstream_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/layers/gna_concat_layer.hpp b/inference-engine/src/gna_plugin/layers/gna_concat_layer.hpp index 7c714317bf8a6c..5828bdbfbe8b7f 100644 --- a/inference-engine/src/gna_plugin/layers/gna_concat_layer.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_concat_layer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/layers/gna_copy_layer.hpp b/inference-engine/src/gna_plugin/layers/gna_copy_layer.hpp index 4a687f780175fa..45107e6fc4a9ad 100644 --- a/inference-engine/src/gna_plugin/layers/gna_copy_layer.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_copy_layer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/layers/gna_crop_layer.hpp b/inference-engine/src/gna_plugin/layers/gna_crop_layer.hpp index 248ba9ecde50f8..d0f5f54014eb10 100644 --- a/inference-engine/src/gna_plugin/layers/gna_crop_layer.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_crop_layer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/layers/gna_fake_quantize_layer.hpp b/inference-engine/src/gna_plugin/layers/gna_fake_quantize_layer.hpp index c80cb62d6e55a6..722fbe863e6a23 100644 --- a/inference-engine/src/gna_plugin/layers/gna_fake_quantize_layer.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_fake_quantize_layer.hpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #pragma once #include "gna_layer_info.hpp" @@ -29,7 +28,7 @@ class GNAFakeQuantizeLayer { DnnActivation parseAsActivation() const { DnnActivation fqActivation; - fqActivation.args.fakeQuantize.levels = fqLayer->GetParamAsInt("levels"); + fqActivation.fqParams.levels = fqLayer->GetParamAsInt("levels"); auto inputShape = getShapeForRange(fqLayer, 1); auto outputShape = getShapeForRange(fqLayer, 3); @@ -37,13 +36,15 @@ class GNAFakeQuantizeLayer { auto inputRangeSize = InferenceEngine::details::product(inputShape.begin(), inputShape.end()); auto outputRangeSize = InferenceEngine::details::product(outputShape.begin(), outputShape.end()); - fqActivation.args.fakeQuantize.inputPerChannel = inputRangeSize != 1; - fqActivation.args.fakeQuantize.input_low = getParamFromInputAsFloats(fqLayer, 1); - fqActivation.args.fakeQuantize.input_high = getParamFromInputAsFloats(fqLayer, 2); + fqActivation.fqParams.set = true; + + fqActivation.fqParams.inputPerChannel = inputRangeSize != 1; + fqActivation.fqParams.input_low = getParamFromInputAsFloats(fqLayer, 1); + fqActivation.fqParams.input_high = getParamFromInputAsFloats(fqLayer, 2); - fqActivation.args.fakeQuantize.outputPerChannel = outputRangeSize != 1; - fqActivation.args.fakeQuantize.output_low = getParamFromInputAsFloats(fqLayer, 3); - fqActivation.args.fakeQuantize.output_high = getParamFromInputAsFloats(fqLayer, 4); + fqActivation.fqParams.outputPerChannel = outputRangeSize != 1; + fqActivation.fqParams.output_low = getParamFromInputAsFloats(fqLayer, 3); + fqActivation.fqParams.output_high = getParamFromInputAsFloats(fqLayer, 4); fqActivation.type = kActFakeQuantize; return fqActivation; diff --git a/inference-engine/src/gna_plugin/layers/gna_layer_helpers.hpp b/inference-engine/src/gna_plugin/layers/gna_layer_helpers.hpp index 3b56184b9e0b72..abed0f4f78eb96 100644 --- a/inference-engine/src/gna_plugin/layers/gna_layer_helpers.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_layer_helpers.hpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #pragma once #include "gna_layer_info.hpp" diff --git a/inference-engine/src/gna_plugin/layers/gna_layer_info.hpp b/inference-engine/src/gna_plugin/layers/gna_layer_info.hpp index 6c1bf161e28b83..732ef1384f017b 100644 --- a/inference-engine/src/gna_plugin/layers/gna_layer_info.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_layer_info.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -103,7 +103,8 @@ class LayerInfo { "neglog", "neghalflog", "softsign", - "power"}; + "power", + "fakequantize"}; if (isPower()) { auto powerLayer = as(); @@ -157,7 +158,10 @@ class LayerInfo { IS_VALID(); return nullptr != as(); } - + bool isSyntheticScaleShift() const noexcept { + IS_VALID(); + return layer->name.find("SyntheticScaleShift") != std::string::npos; + } bool isEltwise() const noexcept { IS_VALID(); return nullptr != as(); @@ -193,6 +197,18 @@ class LayerInfo { bool isIdentity() const noexcept { return isOfType("identity"); } + bool isTanh() const noexcept { + return isOfType("tanh"); + } + bool isSigmoid() const noexcept { + return isOfType("sigmoid"); + } + bool isSoftSign() const noexcept { + return isOfType("softsign"); + } + bool isClamp() const noexcept { + return isOfType("clamp"); + } bool isFullyConnected() const noexcept { return isOfType("FullyConnected") || isOfType("InnerProduct"); } @@ -283,6 +299,9 @@ class LayerInfo { bool isCopyDelayed() const noexcept { return isOfType(DelayedCopyLayerName); } + bool isWeightableIdentity() const noexcept { + return isConcatAlignFilter() || isSyntheticScaleShift() || isCropAffined(); + } size_t paddingSize() const { static InferenceEngine::details::caseless_set layersWithPossiblePadding = {"FullyConnected", diff --git a/inference-engine/src/gna_plugin/layers/gna_layer_type.hpp b/inference-engine/src/gna_plugin/layers/gna_layer_type.hpp index 61db16b15fe541..9634c570d30e3b 100644 --- a/inference-engine/src/gna_plugin/layers/gna_layer_type.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_layer_type.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/layers/gna_memory_layer.hpp b/inference-engine/src/gna_plugin/layers/gna_memory_layer.hpp index 6ead05c0401399..c4891f8b35ed8c 100644 --- a/inference-engine/src/gna_plugin/layers/gna_memory_layer.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_memory_layer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -51,5 +51,9 @@ class GNAMemoryLayer { * gna memory of this offset from gna_ptr */ size_t reserved_offset = 0; + /** + * scale factor to gna memory layer + */ + float scale_factor = 1.0f; }; } // namespace GNAPluginNS diff --git a/inference-engine/src/gna_plugin/layers/gna_permute.hpp b/inference-engine/src/gna_plugin/layers/gna_permute.hpp index e3df5db139a931..d4376515765429 100644 --- a/inference-engine/src/gna_plugin/layers/gna_permute.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_permute.hpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #pragma once #include #include diff --git a/inference-engine/src/gna_plugin/layers/gna_split_layer.hpp b/inference-engine/src/gna_plugin/layers/gna_split_layer.hpp index 106327455a482d..c6c16ffe99ac11 100644 --- a/inference-engine/src/gna_plugin/layers/gna_split_layer.hpp +++ b/inference-engine/src/gna_plugin/layers/gna_split_layer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/layers/layers_builder.hpp b/inference-engine/src/gna_plugin/layers/layers_builder.hpp index 8d2d53553704e3..3e194d88d1fbf7 100644 --- a/inference-engine/src/gna_plugin/layers/layers_builder.hpp +++ b/inference-engine/src/gna_plugin/layers/layers_builder.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/memory/gna_allocator.hpp b/inference-engine/src/gna_plugin/memory/gna_allocator.hpp index 77d3fe478ae6cf..9a3dc71f4e113c 100644 --- a/inference-engine/src/gna_plugin/memory/gna_allocator.hpp +++ b/inference-engine/src/gna_plugin/memory/gna_allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/memory/gna_mem_requests.hpp b/inference-engine/src/gna_plugin/memory/gna_mem_requests.hpp index 0cfe4193192059..88fc8a0278d13a 100644 --- a/inference-engine/src/gna_plugin/memory/gna_mem_requests.hpp +++ b/inference-engine/src/gna_plugin/memory/gna_mem_requests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/memory/gna_mem_requests_queue.hpp b/inference-engine/src/gna_plugin/memory/gna_mem_requests_queue.hpp index e7f124ad973f31..0faaa922e1c75b 100644 --- a/inference-engine/src/gna_plugin/memory/gna_mem_requests_queue.hpp +++ b/inference-engine/src/gna_plugin/memory/gna_mem_requests_queue.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/memory/gna_memory.hpp b/inference-engine/src/gna_plugin/memory/gna_memory.hpp index 5916ab52a91f9a..cc52398b95f99a 100644 --- a/inference-engine/src/gna_plugin/memory/gna_memory.hpp +++ b/inference-engine/src/gna_plugin/memory/gna_memory.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,7 +30,7 @@ class GNAMemory : public GNAMemRequestsQueue { size_t _rw_section_size = 0; size_t _ro_section_size = 0; Allocator _allocator; - std::shared_ptr heap; + std::shared_ptr heap = nullptr; size_t _page_alignment = 1; class GNAMemRequestsReadOnlyQueue : public GNAMemRequestsQueue { diff --git a/inference-engine/src/gna_plugin/memory/gna_memory_state.cpp b/inference-engine/src/gna_plugin/memory/gna_memory_state.cpp index f4df84a638f134..19a089e7625b01 100644 --- a/inference-engine/src/gna_plugin/memory/gna_memory_state.cpp +++ b/inference-engine/src/gna_plugin/memory/gna_memory_state.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -71,7 +71,7 @@ namespace memory { case InferenceEngine::Precision::I16: { if (new_state_precision == InferenceEngine::Precision::FP32) { auto quantized = InferenceEngine::getInjectedData(state->getInput()); - auto scale_factor = quantized != nullptr ? quantized->_dst_quant.GetScale() : 1.0f; + auto scale_factor = quantized != nullptr ? quantized->_dst_quant.GetScale() : state->scale_factor; GNAPluginNS::ConvertToInt16(static_cast(state->gna_ptr), newState->buffer().as(), 1, @@ -97,7 +97,7 @@ namespace memory { if (state->getInput() && state_precision == InferenceEngine::Precision::I16) { auto quantized = InferenceEngine::getInjectedData(state->getInput()); - auto scale_factor = quantized != nullptr ? quantized->_dst_quant.GetScale() : 1.0f; + auto scale_factor = quantized != nullptr ? quantized->_dst_quant.GetScale() : state->scale_factor; auto result_blob = make_blob_with_precision(InferenceEngine::TensorDesc(InferenceEngine::Precision::FP32, InferenceEngine::SizeVector({ 1, elements }), @@ -122,5 +122,11 @@ namespace memory { return result_blob; } } + + float GNAVariableState::GetScaleFactor() const { + auto quantized = InferenceEngine::getInjectedData(state->getInput()); + auto scale_factor = quantized != nullptr ? quantized->_dst_quant.GetScale() : state->scale_factor; + return scale_factor; + } } // namespace memory } // namespace GNAPluginNS diff --git a/inference-engine/src/gna_plugin/memory/gna_memory_state.hpp b/inference-engine/src/gna_plugin/memory/gna_memory_state.hpp index 2fc0b30c3f6e58..3ffdb7d7280896 100644 --- a/inference-engine/src/gna_plugin/memory/gna_memory_state.hpp +++ b/inference-engine/src/gna_plugin/memory/gna_memory_state.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,6 +20,7 @@ class GNAVariableState : public InferenceEngine::IVariableStateInternal { void SetState(InferenceEngine::Blob::Ptr newState) override; InferenceEngine::Blob::CPtr GetState() const override; std::string GetName() const override; + float GetScaleFactor() const; private: std::shared_ptr state; diff --git a/inference-engine/src/gna_plugin/memory/gna_memory_util.cpp b/inference-engine/src/gna_plugin/memory/gna_memory_util.cpp index df1bb385da2620..7e5872bd5a8ca3 100644 --- a/inference-engine/src/gna_plugin/memory/gna_memory_util.cpp +++ b/inference-engine/src/gna_plugin/memory/gna_memory_util.cpp @@ -1,11 +1,10 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "gna_memory_util.hpp" #include -#include
#include "gna_plugin_log.hpp" int32_t GNAPluginNS::memory::MemoryOffset(void *ptr_target, void *ptr_base) { diff --git a/inference-engine/src/gna_plugin/memory/gna_memory_util.hpp b/inference-engine/src/gna_plugin/memory/gna_memory_util.hpp index eabf8c44ac3d04..726b235d88abb3 100644 --- a/inference-engine/src/gna_plugin/memory/gna_memory_util.hpp +++ b/inference-engine/src/gna_plugin/memory/gna_memory_util.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/memory/ipolymorph_allocator.hpp b/inference-engine/src/gna_plugin/memory/ipolymorph_allocator.hpp index d2f93836b5200a..9aada8e9c94a5c 100644 --- a/inference-engine/src/gna_plugin/memory/ipolymorph_allocator.hpp +++ b/inference-engine/src/gna_plugin/memory/ipolymorph_allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/memory/polymorph_allocator.hpp b/inference-engine/src/gna_plugin/memory/polymorph_allocator.hpp index 3c6eb9fb723874..ac69c41a5df002 100644 --- a/inference-engine/src/gna_plugin/memory/polymorph_allocator.hpp +++ b/inference-engine/src/gna_plugin/memory/polymorph_allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.cpp b/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.cpp index c5b0ef56ea6f9c..1c217dbba57c47 100644 --- a/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.cpp +++ b/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.cpp @@ -39,6 +39,8 @@ #include "frontend/quantization.h" #include "gna_groups.hpp" #include "gna_graph_patterns.hpp" +#include "gna_data_types.hpp" +#include "gna_tensor_tools.hpp" using namespace InferenceEngine; using namespace InferenceEngine::details; @@ -54,6 +56,10 @@ std::shared_ptr BasePass::getPassManager() { return sharedMgr; } + +static bool fp32eq(float p1, float p2) { + return (std::abs(p1 - p2) <= 0.00001f * std::min(std::abs(p1), std::abs(p2))); +} // indexes stored in pass manager static const char identityLayersCounterName[] = "identityLayerCounter"; static const char diagonalLayersCounterName[] = "diagonalLayerCounter"; @@ -116,7 +122,7 @@ static CNNLayerPtr InsertCopyLayer(CNNLayerPtr prevLayer, CNNLayerPtr nextLayer, copyLayer; getCreatorLayer(dataPtr) = copyWithQuant; copyWithQuant->outData.push_back(dataPtr); - CNNNetworkInsertLayer(prevLayer, nextLayer, copyWithQuant); + CNNNetworkInsertLayer(prevLayer, nextLayer, copyWithQuant, invalid_data_idx, beforeIdx); return copyWithQuant; } @@ -202,6 +208,16 @@ static std::vector getCandidatesForIdentityInsertion(const CNNLayer auto prevLayer = PrevFunctionalLayer(l, 0); + // No need to instert identity activation + // when activation was already there before pooling + // in case of CNN -> Activation -> Pooling order + if (LayerInfo(prevLayer).isPooling()) { + auto prevPrevLayer = PrevFunctionalLayer(prevLayer, 0); + if (LayerInfo(prevPrevLayer).isActivation()) { + return prevLayers; + } + } + if (!LayerInfo(prevLayer).has32BOutput()) return prevLayers; @@ -306,6 +322,13 @@ void ForbidActivationFusingPass::run() { } } +namespace { + template + bool is2D(T&& vec) { + return vec.size() >= 2 && vec[0] > 1 && vec[1] > 1; + } +} // namespace + void ReorderMaxPoolPass::run() { // detecting following pattern // conv->relu->maxpooling @@ -314,6 +337,10 @@ void ReorderMaxPoolPass::run() { auto pool = LayerInfo(l); if (!pool.isMaxPooling()) continue; + // don't reorder if pooling is 2D for CNN2D + auto pooling = dynamic_cast(l.get()); + if (pooling == nullptr || (is2D(pooling->_kernel) || is2D(pooling->_stride))) continue; + // checking prev layer type auto activation = LayerInfo(CNNNetPrevLayer(l)); if (!activation.isActivation()) continue; @@ -678,11 +705,15 @@ void RemovePermutationsNHWCToNCHWPass::run() { data->setLayout(Layout::NHWC); }; - auto current_layer = getInputTo(pattern_start->outData[0]).begin()->second; + auto input_to = getInputTo(pattern_start->outData[0]); + IE_ASSERT(!input_to.empty()); + auto current_layer = input_to.begin()->second; setNHWCOrder(current_layer->input()); while (current_layer != pattern_end) { setNHWCOrder(current_layer->outData[0]); - current_layer = getInputTo(current_layer->outData[0]).begin()->second; + input_to = getInputTo(current_layer->outData[0]); + IE_ASSERT(!input_to.empty()); + current_layer = input_to.begin()->second; } if (LayerInfo(pattern_start).isPermute() && !getInputTo(pattern_start->outData.front()).empty()) { @@ -812,43 +843,47 @@ void InsertIdentityLayerPass::run() { void InsertCopyLayerPass::run() { // Copy layer insertion happens in few cases: // Crop output goes to concat layer -> copy layer insertion + // Splitted part of input goes to concat layer -> copy layer insertion // Concat|Split|Crop layer goes to memory layer -> delayed copy layer insertion // One output goes to multiple concat and/or memory layers -> delayed copies before memory layers - // and copies before concay layers (one less copy than outputs) + // and copies before concat layers (one less copy than outputs) for (auto & l : *pLayers) { if (LayerInfo(l).isNonFunctional()) continue; - // Crop -> Concat and Concat -> Memory cases - if ((LayerInfo(l).isCrop() && !LayerInfo(l).isCropAffined()) || LayerInfo(l).isConcat()) { + + // Crop -> Concat, Input -> Split -> Concat and Concat -> Memory cases + if ((LayerInfo(l).isCrop() && !LayerInfo(l).isCropAffined()) || LayerInfo(l).isConcat() || LayerInfo(l).isSplit()) { std::vector> copy_insertion_tuples; std::vector> delayed_copy_insertion_tuples; - for (auto output : l->outData) { auto& inputTo = getInputTo(output); for (auto& childLayer : inputTo) { auto original_child = childLayer.second; auto original_parent = l; auto current_layer = original_child; - size_t input_idx = CNNLayerFindInsDataIdxes(output, original_child)[0]; - - while (LayerInfo(current_layer).isNonFunctional()) { - if (current_layer->outData.size() == 0) break; - if (getInputTo(current_layer->outData[0]).size() == 0) break; - - auto next_layer = CNNNetGetNextLayerSkipCertain(current_layer, 0, 0, [](CNNLayerPtr origin){return false;}).first; - if (current_layer->outData.size() == 1 && getInputTo(current_layer->outData[0]).size() == 1 && original_child == current_layer) { - original_child = next_layer; - original_parent = current_layer; - input_idx = CNNLayerFindInsDataIdxes(original_parent->outData[0], original_child)[0]; + std::vector connections = CNNLayerFindInsDataIdxes(output, original_child); + + for (auto input_idx : connections) { + while (LayerInfo(current_layer).isNonFunctional()) { + if (current_layer->outData.size() == 0) break; + if (getInputTo(current_layer->outData[0]).size() == 0) break; + + auto next_layer = CNNNetGetNextLayerSkipCertain(current_layer, 0, 0, [](CNNLayerPtr origin) {return false; }).first; + if (current_layer->outData.size() == 1 && getInputTo(current_layer->outData[0]).size() == 1 && original_child == current_layer) { + original_child = next_layer; + original_parent = current_layer; + input_idx = CNNLayerFindInsDataIdxes(original_parent->outData[0], original_child)[0]; + } + current_layer = next_layer; } - current_layer = next_layer; - } - if ((LayerInfo(l).isConcat() || LayerInfo(l).isCrop() || LayerInfo(l).isSplit()) && LayerInfo(current_layer).isMemory()) { - // Concat|Split|Crop -> Memory case - delayed_copy_insertion_tuples.push_back(std::make_tuple(original_parent, original_child, input_idx)); - } else if (LayerInfo(l).isCrop() && LayerInfo(current_layer).isConcat()) { - // Crop -> Concat case - copy_insertion_tuples.push_back(std::make_tuple(original_parent, original_child, input_idx)); + if ((LayerInfo(l).isConcat() || LayerInfo(l).isCrop() || LayerInfo(l).isSplit()) && LayerInfo(current_layer).isMemory()) { + // Concat|Split|Crop -> Memory case + delayed_copy_insertion_tuples.push_back(std::make_tuple(original_parent, original_child, input_idx)); + } else if ((LayerInfo(l).isSplit() || LayerInfo(l).isCrop()) && LayerInfo(current_layer).isConcat()) { + // Split|Crop -> Concat case + // concat may be connected to previous layer with multiple connections + copy_insertion_tuples.push_back(std::make_tuple(original_parent, original_child, input_idx)); + } } } } @@ -940,7 +975,7 @@ void FlattenTrivialConcatPass::run() { auto axis = concatLayer->_axis; bool skip_layer = false; - for (int i = 0; i < axis; i++) { + for (unsigned int i = 0; i < axis; i++) { if (concatLayer->insData[0].lock()->getDims()[i] != 1) skip_layer = true; } if (skip_layer) continue; @@ -1305,7 +1340,7 @@ static InferenceEngine::Blob::Ptr tileBlob(Blob::Ptr& blob, size_t TileTo) { auto weightsElements = blob->size(); auto weightsBytes = blob->byteSize(); if (weightsElements == 0) { - THROW_IE_EXCEPTION << "Blob size is 0"; + IE_THROW() << "Blob size is 0"; } auto tiledBlob = make_plain_blob(blob->getTensorDesc().getPrecision(), { TileTo }); @@ -1828,9 +1863,6 @@ void FuseFQIntoWeightsPass::run() { weightableLayer->insData.resize(1); // 2. running FQ function for given layer - if (weightDims.size() != 2) { - THROW_GNA_LAYER_EXCEPTION(fqLayer) << " layout of weigths not equal to NC not yet supported"; - } auto outputSize = details::product(weightDims.begin(), weightDims.end()); // depending on compute precision weights will be recreated @@ -1866,61 +1898,42 @@ void FuseFQIntoWeightsPass::run() { // check if // - weights were float values and need to be quantized, // - weights are integer values and quantization can be skipped - for (size_t i = 0; i < outputRange.first.size(); ++i) { - if (inputRange.first[i] > outputRange.first[i] || - inputRange.second[i] > outputRange.second[i]) { - quantized->_weights_quantized = true; - break; - } - } - - quantized->_weights_quant.SetMinValues(outputRange.first); - quantized->_weights_quant.SetMaxValues(outputRange.second); + quantized->_weights_quant.SetMinValues(inputRange.first, true); + quantized->_weights_quant.SetMaxValues(inputRange.second, true); + quantized->_weights_quant.SetMinValues(outputRange.first, false); + quantized->_weights_quant.SetMaxValues(outputRange.second, false); quantized->_weights_quant.SetLevels(levels); // lets find out minimum scale factor among channels - if (quantized->_weights_quant.GetMinValues().empty()) { + if (!quantized->_weights_quant.IsStatsSet()) { THROW_GNA_LAYER_EXCEPTION(fqLayer) << " per channel/tensor weigths scales are missed"; } - auto getScale = [&quantized](size_t i) { - return (quantized->_weights_quant.GetLevels() - 1) / - (quantized->_weights_quant.GetMaxValues()[i] - quantized->_weights_quant.GetMinValues()[i]); - }; - - float min_channel_scale = getScale(0); - for (uint32_t i = 1; i < quantized->_weights_quant.GetMinValues().size(); i++) { - min_channel_scale = std::min(min_channel_scale, getScale(i)); - } - - auto multiplier = 1.0f; - if (quantized->_weights_quant.GetLevels() <= std::numeric_limits::max()) { - // GNA supports additional multiplier for only 8bit weights. - // The multipler is used to extend dynamic range. - multiplier = MAX_OUT_MULTIPLIER; - } - - // Common weights scale calculation - quantized->_weights_quant.SetScale(min_channel_scale * multiplier); continue; } + size_t depth = 1; intel_dnn_component_t component; component.num_columns_in = weightDims[1]; component.num_rows_in = weightDims[0]; + if (LayerInfo(weightableLayer).isConvolution()) { + depth = (weightDims.size() == 4)? weightDims[3]: 1; + } + intel_piecewiselinear_t *transform = reinterpret_cast(&component.op.pwl); transform->func_id = gnaFakeQuantizeLayer.parseAsActivation(); auto quantizedWeightsData = quantizedWeights->buffer(); - component.ptr_inputs = quantizedWeightsData.as(); - auto dequantizedWeights = make_shared_blob(TensorDesc(Precision::FP32, {outputSize}, Layout::C)); dequantizedWeights->allocate(); auto resultBuffer = dequantizedWeights->buffer(); - component.ptr_outputs = resultBuffer.as(); + for (size_t i = 0; i < depth; ++i) { + component.ptr_inputs = quantizedWeightsData.as() + i * component.num_columns_in * component.num_rows_in; + component.ptr_outputs = resultBuffer.as() + i * component.num_columns_in * component.num_rows_in; - PwlApply32(&component, 0, component.num_rows_in - 1, 0, component.num_columns_in - 1); + PwlApply32(&component, 0, component.num_rows_in - 1, 0, component.num_columns_in - 1); + } // 3. assign dequantized const blob to weightable layer assignWeightsAndBiases(weightableLayer, dequantizedWeights, biases); @@ -1936,6 +1949,97 @@ void MoveFakeQuantizeLayerIntoQuantParamsPass :: run() { auto donotSkip = [](CNNLayerPtr) { return false; }; + + auto allowFQFuse = [](CNNLayerPtr layer) -> bool { + auto doNotSkup = [](CNNLayerPtr layer) { + return false; + }; + + if (CNNNetGetAllNextLayersSkipCertain(layer, -1, doNotSkup).empty()) { + return false; + } + + auto skipNonFunctional = [](CNNLayerPtr layer) { + return LayerInfo(layer).isNonFunctional(); + }; + + auto prevLayer = CNNNetPrevLayerSkipCertain(layer, 0, skipNonFunctional); + if (LayerInfo(prevLayer).isActivation() || LayerInfo(prevLayer).isConst()) { + return true; + } + + auto nextLayers = CNNNetGetAllNextLayersSkipCertain(layer, -1, skipNonFunctional); + for (auto& l : nextLayers) { + if (!LayerInfo(l).isActivation()) { + return false; + } + } + + return true; + }; + + std::function propagateStatistics = + [&propagateStatistics](QuantizedLayerParams* srcQuantParams, CNNLayerPtr layer) { + if (LayerInfo(layer).isFakeQuantize()) { + return; + } + + auto donotSkip = [](CNNLayerPtr) { + return false; + }; + + auto quantParams = InferenceEngine::getInjectedData(layer); + + // Find all output layers connected to FQ + auto nextLayers = CNNNetGetAllNextLayersSkipCertain(layer.get(), -1, donotSkip); + if (nextLayers.empty()) { + quantParams->_src_quant.CopyStats(srcQuantParams->_dst_quant); + if (LayerInfo(layer).isNonFunctional()) { + quantParams->_dst_quant.CopyStats(srcQuantParams->_dst_quant); + } + return; + } + + auto srcMinVals = srcQuantParams->_dst_quant.GetMinValues().front(); + auto srcMaxVals = srcQuantParams->_dst_quant.GetMaxValues().front(); + // If a next layer is concat, find minimum nad maximum statistics + if (LayerInfo(layer).isConcat() && quantParams->_src_quant.IsStatsSet()) { + auto concatMinVal = quantParams->_src_quant.GetMinValues().front(); + auto concatMaxVal = quantParams->_src_quant.GetMaxValues().front(); + quantParams->_src_quant.SetMinValues({ std::min(srcMinVals, concatMinVal) }); + quantParams->_src_quant.SetMaxValues({ std::max(srcMaxVals, concatMaxVal) }); + } else if (quantParams->_src_quant.IsStatsSet()) { + return; + } else { + quantParams->_src_quant.CopyStats(srcQuantParams->_dst_quant); + } + + if (!LayerInfo(layer).isWeightable() && !LayerInfo(layer).isEltwise() && + !LayerInfo(layer).isActivation() && !LayerInfo(layer).isFakeQuantize()) { + auto doNotSetDstStats = false; + for (auto& l : nextLayers) { + if (LayerInfo(l).isFakeQuantize()) { + doNotSetDstStats = true; + continue; + } + } + + if (doNotSetDstStats) { + return; + } + + quantParams->_dst_quant.CopyStats(quantParams->_src_quant); + + for (auto& l : nextLayers) { + if (LayerInfo(l).isFakeQuantize()) { + continue; + } + + propagateStatistics(quantParams, l); + } + } + }; + for (auto &&l : *pLayers) { if (!LayerInfo(l).isFakeQuantize()) { continue; @@ -1948,28 +2052,56 @@ void MoveFakeQuantizeLayerIntoQuantParamsPass :: run() { auto inputRange = fqLayer.getInputRange(); auto outputRange = fqLayer.getOutputRange(); - if (inputRange.second.size() != 1 || inputRange.second.size() != 1 || - outputRange.second.size() != 1 || outputRange.second.size() != 1) { + if (inputRange.first.size() != 1 || inputRange.second.size() != 1 || + outputRange.first.size() != 1 || outputRange.second.size() != 1) { THROW_GNA_LAYER_EXCEPTION(fqLayer) << " unsupported per-channel quantisation"; } + if (!LayerInfo(prevLayer).isConst() && + !fp32eq(inputRange.first.front(), outputRange.first.front()) && + !fp32eq(inputRange.second.front(), outputRange.second.front())) { + THROW_GNA_LAYER_EXCEPTION(fqLayer) << " unsupported data range conversion. Input: (" << + inputRange.first.front() << "," << inputRange.second.front() << "), output: (" << + outputRange.first.front() << "," << outputRange.second.front() << ")"; + } + float fqLevels = fqLayer.getLevels(); - float scaleOutputs = (fqLevels - 1) / (outputRange.second[0] - outputRange.first[0]); // Before FQ layer is removed, the previous layer has to be updated with its quantization data auto quantParamsPrevLayer = InferenceEngine::getInjectedData(prevLayer); - quantParamsPrevLayer->_dst_quant.SetScale(scaleOutputs); quantParamsPrevLayer->_dst_quant.SetLevels(fqLevels); - quantParamsPrevLayer->_dst_quant.SetMinValues({ inputRange.first[0] }); - quantParamsPrevLayer->_dst_quant.SetMaxValues({ inputRange.second[0] }); - + quantParamsPrevLayer->_dst_quant.SetMinValues({ inputRange.first[0] }, true); + quantParamsPrevLayer->_dst_quant.SetMaxValues({ inputRange.second[0] }, true); + quantParamsPrevLayer->_dst_quant.SetMinValues({ outputRange.first[0] }, false); + quantParamsPrevLayer->_dst_quant.SetMaxValues({ outputRange.second[0] }, false); + + auto fqQauntParams = InferenceEngine::getInjectedData(l); + fqQauntParams->_dst_quant.SetLevels(fqLevels); + fqQauntParams->_dst_quant.SetMinValues({ inputRange.first[0] }, true); + fqQauntParams->_dst_quant.SetMaxValues({ inputRange.second[0] }, true); + fqQauntParams->_dst_quant.SetMinValues({ outputRange.first[0] }, false); + fqQauntParams->_dst_quant.SetMaxValues({ outputRange.second[0] }, false); + fqQauntParams->_src_quant = fqQauntParams->_dst_quant; + + l->insData.resize(1); + if (!CNNNetHasPrevLayer(prevLayer.get())) { + quantParamsPrevLayer->_src_quant = quantParamsPrevLayer->_dst_quant; + } + + // Allow FQ Fuse checks if FQ layer can be fused to a layer before or after. + // FQ Layer is fused only when previous layer is const or activation layer + // or a next layer is activation layer. + bool isFQFuseAllowed = allowFQFuse(l); auto prevData = prevLayer->outData.front(); - getInputTo(prevLayer->outData.front()).clear(); // Find all output layers connected to FQ auto nextLayers = CNNNetGetAllNextLayersSkipCertain(*fqLayer, -1, donotSkip); if (nextLayers.empty()) { - THROW_GNA_LAYER_EXCEPTION(fqLayer) << " fake quantize does not have any output layers connected"; + return; + } + + if (isFQFuseAllowed) { + getInputTo(prevLayer->outData.front()).clear(); } // Connect all next layers after FQ to the layer that is before FQ @@ -1981,16 +2113,127 @@ void MoveFakeQuantizeLayerIntoQuantParamsPass :: run() { << LAYER_NAME(nextLayers[i]) << " is not correct"; } - nextLayers[i]->insData[insDatas.front()] = prevData; - getInputTo(prevLayer->outData.front())[nextLayers[i]->name] = nextLayers[i]; + if (isFQFuseAllowed) { + nextLayers[i]->insData[insDatas.front()] = prevData; + getInputTo(prevLayer->outData.front())[nextLayers[i]->name] = nextLayers[i]; + } - // After layer gets removed lets absorb its params in QuantParams structure - // replacing scale factor from this fq layer - auto quantParamsNextLayer = InferenceEngine::getInjectedData(nextLayers[i]); - quantParamsNextLayer->_src_quant.SetScale(scaleOutputs); - quantParamsNextLayer->_src_quant.SetLevels(fqLevels); - quantParamsNextLayer->_src_quant.SetMinValues({ outputRange.first[0] }); - quantParamsNextLayer->_src_quant.SetMaxValues({ outputRange.second[0] }); + propagateStatistics(quantParamsPrevLayer, nextLayers[i]); + } + } +} + +void TransposeWeightsFromNCHWToNHWCPass::run() { + if (!MustBeConvertedFromNCHWToNHWC(*pLayers)) return; + + auto printTranspositionInfo = [](const std::vector &transpositionInfo) { + for (const auto &transpositionInfoPart : transpositionInfo) { + gnalog() << "transpose=" << transpositionInfoPart.transpose << " rows_num=" << transpositionInfoPart.num_transpose_rows + << " columns_num=" << transpositionInfoPart.num_transpose_columns << "\n"; + } + }; + + auto foundPartToTranspose = [](const std::vector &transpositionInfo) { + auto partToTranspose = std::find_if(std::begin(transpositionInfo), std::end(transpositionInfo), + [](const TranspositionInfo &infoPart) { return infoPart.transpose; }); + return partToTranspose != std::end(transpositionInfo); + }; + + for (auto &&l : *pLayers) { + if (LayerInfo(l).isScaleShift()) { + std::vector transpositionInfo; + // Try to find a convolution in previous layers + if (InferenceEngine::CNNNetHasPrevLayer(l.get())) { + transpositionInfo = FindTranspositionInfoFromPrevLayers(InferenceEngine::CNNNetPrevLayer(l)); + // If no convolutions are found try to find them in next layers + if (!foundPartToTranspose(transpositionInfo) && !l->outData.empty() && !getInputTo(l->outData[0]).empty()) { + transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); + } + } + if (!transpositionInfo.empty()) { + auto weightable = dynamic_cast(l.get()); + IE_ASSERT(weightable != nullptr); + ConvertTensorFromNCHWToNHWC(weightable->precision.size(), 1, weightable->_weights->size(), + weightable->_weights->cbuffer().as(), true, transpositionInfo); + if (weightable->_biases) { + ConvertTensorFromNCHWToNHWC(weightable->precision.size(), 1, weightable->_biases->size(), + weightable->_biases->cbuffer().as(), true, transpositionInfo); + } + gnalog() << l->name << " weights and biases rows transposition info:\n"; + printTranspositionInfo(transpositionInfo); + } + } + + if (LayerInfo(l).isFullyConnected()) { + auto weightable = dynamic_cast(l.get()); + IE_ASSERT(weightable != nullptr); + IE_ASSERT(weightable->_weights != nullptr); + auto precision = weightable->precision.size(); + auto out_dims = l->outData[0]->getDims(); + auto in_dims = l->input()->getDims(); + auto weightsRows = InferenceEngine::details::product(std::begin(out_dims) + 1, std::end(out_dims)); + auto weightsColumns = InferenceEngine::details::product(std::begin(in_dims) + 1, std::end(in_dims)); + // Find a convolution in previous layers to rotate weights rows + if (InferenceEngine::CNNNetHasPrevLayer(l.get())) { + auto transpositionInfo = FindTranspositionInfoFromPrevLayers(InferenceEngine::CNNNetPrevLayer(l)); + if (!transpositionInfo.empty()) { + size_t totalColumns = 0; + for (auto && transpositionInfoPart : transpositionInfo) { + totalColumns += transpositionInfoPart.num_transpose_rows * transpositionInfoPart.num_transpose_columns; + } + if (weightsColumns != totalColumns) { + THROW_GNA_EXCEPTION << l->name << " weights columns from transposition info (" << totalColumns + << ") don't match input dimensions (" << weightsColumns << ")"; + } + ConvertTensorFromNCHWToNHWC(precision, weightsRows, weightsColumns, weightable->_weights->cbuffer().as(), + true, transpositionInfo); + gnalog() << l->name << " weights rows transposition info:\n"; + printTranspositionInfo(transpositionInfo); + } + } + // Find a convolution in next layers to rotate weights columns + if (!l->outData.empty() && !getInputTo(l->outData[0]).empty() && !l->outData.empty() && !getInputTo(l->outData[0]).empty()) { + auto transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); + if (!transpositionInfo.empty()) { + size_t totalRows = 0; + for (const auto& transpositionInfoPart : transpositionInfo) { + totalRows += transpositionInfoPart.num_transpose_rows * transpositionInfoPart.num_transpose_columns; + } + if (weightsRows != totalRows) { + THROW_GNA_EXCEPTION << l->name << "weights rows from transposition info (" << totalRows + << ") don't match output dimensions (" << weightsRows << ")"; + } + ConvertTensorFromNCHWToNHWC(precision, weightsRows, weightsColumns, weightable->_weights->cbuffer().as(), + false, transpositionInfo); + gnalog() << l->name << " weights columns transposition info:\n"; + printTranspositionInfo(transpositionInfo); + } + } + } + + if (LayerInfo(l).isEltwise()) { + // We need to transpose a constant which is an eltwise input + auto firstInput = InferenceEngine::CNNNetPrevLayer(l, 0); + auto secondInput = InferenceEngine::CNNNetPrevLayer(l, 1); + if (!LayerInfo(firstInput).isConst() && !LayerInfo(secondInput).isConst()) { + continue; + } + // Let a constant to be the second input + if (LayerInfo(firstInput).isConst()) { + std::swap(firstInput, secondInput); + } + // Find a convolution in previous or next layers + auto transpositionInfo = FindTranspositionInfoFromPrevLayers(firstInput); + if (!foundPartToTranspose(transpositionInfo)) { + transpositionInfo = FindTranspositionInfoFromNextLayers(getInputTo(l->outData[0]).begin()->second); + } + if (!transpositionInfo.empty()) { + auto blob = secondInput->blobs["custom"]; + ConvertTensorFromNCHWToNHWC(blob->getTensorDesc().getPrecision().size(), 1, blob->size(), + blob->buffer().as(), true, transpositionInfo); + gnalog() << l->name << " data transposition info:\n"; + printTranspositionInfo(transpositionInfo); + } } } } @@ -2005,7 +2248,9 @@ int PassManager::run(int index) { ordered_properties &printed_properties, ordered_properties &node_properties) {}); #endif +#ifdef ENABLE_V7_SERIALIZE network.serialize(name + ".xml", name + ".bin"); +#endif }; #else auto dumpNetworkAfterPass = [] (std::shared_ptr ) {}; diff --git a/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.hpp b/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.hpp index c7ac4a8bbba145..2ee84584e9d648 100644 --- a/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.hpp +++ b/inference-engine/src/gna_plugin/optimizer/gna_pass_manager.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -209,6 +209,13 @@ DECL_PASS(FuseFQIntoWeights); */ DECL_PASS(MoveFakeQuantizeLayerIntoQuantParams); +/** +* @brief convert FullyConnected, ScaleShift and Eltwise layers weights order from NCHW to NHWC. +* Information for transposition is found from convolution/pooling input or output dimensions. +* Convolution weights are transposed in finalizeConvolution1DPrimitive() method (gna_graph_compiler.cpp). +* They are transposed for the both, NCHW and NHWC models since MO always stores them in NCHW layout. +*/ +DECL_PASS(TransposeWeightsFromNCHWToNHWC); struct PassManagerSettings { Policy policy; diff --git a/inference-engine/src/gna_plugin/preprocessing.cpp b/inference-engine/src/gna_plugin/preprocessing.cpp index 170167e218bb68..33924b51b9b241 100644 --- a/inference-engine/src/gna_plugin/preprocessing.cpp +++ b/inference-engine/src/gna_plugin/preprocessing.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/preprocessing.hpp b/inference-engine/src/gna_plugin/preprocessing.hpp index 2889198c209ad8..a09cfde2982ec6 100644 --- a/inference-engine/src/gna_plugin/preprocessing.hpp +++ b/inference-engine/src/gna_plugin/preprocessing.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/round_float_define.hpp b/inference-engine/src/gna_plugin/round_float_define.hpp index d11dd1e0eced4b..1bcbb2a4a29d9a 100644 --- a/inference-engine/src/gna_plugin/round_float_define.hpp +++ b/inference-engine/src/gna_plugin/round_float_define.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/runtime/cnn.cpp b/inference-engine/src/gna_plugin/runtime/cnn.cpp index 47d2970676f58f..a751024e462b4b 100644 --- a/inference-engine/src/gna_plugin/runtime/cnn.cpp +++ b/inference-engine/src/gna_plugin/runtime/cnn.cpp @@ -1,7 +1,8 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // +#include #include #include #include @@ -9,6 +10,8 @@ #include "cnn.h" #include "backend/dnn_types.h" +#include "backend/gna_limitations.hpp" +#include "gna_lib_ver_selector.hpp" void CNNFilter32(intel_dnn_component_t *component) { @@ -43,36 +46,38 @@ void CNNFilter32(intel_dnn_component_t *component) { } } -void CNNMaxPool(intel_dnn_component_t *component, intel_dnn_number_type_t number_type) { +void CNNMaxPoolLegacy(intel_dnn_component_t *component, intel_dnn_number_type_t number_type, const bool sumPoolingOverRide) { + const uint32_t num_inputs = component->op.maxpool.inCHW[0] * component->op.maxpool.inCHW[1] * component->op.maxpool.inCHW[2]; + const uint32_t in_c = component->op.maxpool.inCHW[0]; + // TODO: issue 50379 find out why looks like CNN1D pooling uses stride == window only + const uint32_t num_pool_size = component->op.maxpool.poolingWindowXY[0]; + const uint32_t num_pool_step = component->op.maxpool.poolingWindowXY[0]; + const uint32_t num_rows_in = num_inputs / in_c; + if (number_type == kDnnInt) { int32_t *ptr_inputs = reinterpret_cast(component->ptr_inputs); int32_t *ptr_outputs = reinterpret_cast(component->ptr_outputs); - uint32_t num_inputs = component->num_columns_in; - uint32_t num_columns = component->op.maxpool.num_inputs_stride; - uint32_t num_pool_size = component->op.maxpool.num_inputs; - uint32_t num_pool_step = component->op.maxpool.num_inputs_step; - uint32_t num_rows_in = num_inputs / component->op.maxpool.num_inputs_stride; - for (uint32_t i = 0; i < num_columns; i++) { + for (uint32_t i = 0; i < in_c; i++) { int32_t m = 0; - if (component->op.maxpool.do_sum_not_max) { + if (sumPoolingOverRide) { uint32_t num_saturate = 0; for (uint32_t j = 0; j < num_rows_in; j += num_pool_step) { int64_t sum = 0; uint32_t num_end = (j + num_pool_size > num_rows_in) ? num_rows_in : j + num_pool_size; for (uint32_t k = j; k < num_end; k++) { - sum += ptr_inputs[k * num_columns + i]; + sum += ptr_inputs[k * in_c + i]; } constexpr int32_t sum_max_threshold = std::numeric_limits::max(); constexpr int32_t sum_min_threshold = std::numeric_limits::min(); if (sum > sum_max_threshold) { - ptr_outputs[m * num_columns + i] = sum_max_threshold; + ptr_outputs[m * in_c + i] = sum_max_threshold; num_saturate++; } else if (sum < sum_min_threshold) { - ptr_outputs[m * num_columns + i] = sum_min_threshold; + ptr_outputs[m * in_c + i] = sum_min_threshold; num_saturate++; } else { - ptr_outputs[m * num_columns + i] = static_cast(sum); + ptr_outputs[m * in_c + i] = static_cast(sum); } m++; } @@ -84,9 +89,9 @@ void CNNMaxPool(intel_dnn_component_t *component, intel_dnn_number_type_t number int32_t max = INT32_MIN; uint32_t num_end = (j + num_pool_size > num_rows_in) ? num_rows_in : j + num_pool_size; for (uint32_t k = j; k < num_end; k++) { - if (ptr_inputs[k * num_columns + i] > max) max = ptr_inputs[k * num_columns + i]; + if (ptr_inputs[k * in_c + i] > max) max = ptr_inputs[k * in_c + i]; } - ptr_outputs[m * num_columns + i] = max; + ptr_outputs[m * in_c + i] = max; m++; } } @@ -94,22 +99,17 @@ void CNNMaxPool(intel_dnn_component_t *component, intel_dnn_number_type_t number } else { float *ptr_inputs = reinterpret_cast(component->ptr_inputs); float *ptr_outputs = reinterpret_cast(component->ptr_outputs); - uint32_t num_inputs = component->num_columns_in; - uint32_t num_columns = component->op.maxpool.num_inputs_stride; - uint32_t num_pool_size = component->op.maxpool.num_inputs; - uint32_t num_pool_step = component->op.maxpool.num_inputs_step; - uint32_t num_rows_in = num_inputs / component->op.maxpool.num_inputs_stride; - for (uint32_t i = 0; i < num_columns; i++) { + for (uint32_t i = 0; i < in_c; i++) { int32_t m = 0; - if (component->op.maxpool.do_sum_not_max) { + if (sumPoolingOverRide) { for (uint32_t j = 0; j < num_rows_in; j += num_pool_step) { float sum = 0.0; uint32_t num_end = (j + num_pool_size > num_rows_in) ? num_rows_in : j + num_pool_size; for (uint32_t k = j; k < num_end; k++) { - sum += ptr_inputs[k * num_columns + i]; + sum += ptr_inputs[k * in_c + i]; } - ptr_outputs[m * num_columns + i] = sum; + ptr_outputs[m * in_c + i] = sum; m++; } } else { @@ -117,12 +117,182 @@ void CNNMaxPool(intel_dnn_component_t *component, intel_dnn_number_type_t number float max = -1e20f; uint32_t num_end = (j + num_pool_size > num_rows_in) ? num_rows_in : j + num_pool_size; for (uint32_t k = j; k < num_end; k++) { - if (ptr_inputs[k * num_columns + i] > max) max = ptr_inputs[k * num_columns + i]; + if (ptr_inputs[k * in_c + i] > max) max = ptr_inputs[k * in_c + i]; } - ptr_outputs[m * num_columns + i] = max; + ptr_outputs[m * in_c + i] = max; m++; } } } } } + +namespace { +// a1: fastest changing index +// A - size neede +template +T getQubeIndex(T a1, T a2, T a3, T A2, T A3) { + return a1 * A2 * A3 + a2 * A3 + a3; +} +} // namespace + +float MaxPool2D32SingleHWC(const unsigned poolWinH, const unsigned poolWinW, + const float* input, const unsigned IH, const unsigned IW, const unsigned IC, + const unsigned oh, const unsigned ow, const unsigned oc, + const uint32_t poolStrideH, + const uint32_t poolStrideW) { + float output = std::numeric_limits::lowest(); + const auto winStartH = oh * poolStrideH; + const auto winStartW = ow * poolStrideW; + for (unsigned winIdxH = 0; winIdxH < poolWinH && winStartH + winIdxH < IH; winIdxH++) { + for (unsigned winIdxW = 0; winIdxW < poolWinW && winStartW + winIdxW < IW; winIdxW++) { + const auto inputIndex = getQubeIndex(winStartH + winIdxH, winStartW + winIdxW, oc, IW, IC); + output = (std::max)(output, input[inputIndex]); + } + } + return output; +} + +void CNNMaxPool2DFloat(intel_dnn_component_t* component) { + float* ptr_inputs = reinterpret_cast(component->ptr_inputs); + float* ptr_outputs = reinterpret_cast(component->ptr_outputs); + const auto OC = component->op.maxpool.outCHW[0]; + const auto OH = component->op.maxpool.outCHW[1]; + const auto OW = component->op.maxpool.outCHW[2]; + + const auto IC = component->op.maxpool.inCHW[0]; + const auto IH = component->op.maxpool.inCHW[1]; + const auto IW = component->op.maxpool.inCHW[2]; + + const auto poolWinW = component->op.maxpool.poolingWindowXY[0]; + const auto poolWinH = component->op.maxpool.poolingWindowXY[1]; + const auto poolStrideW = component->op.maxpool.poolingStrideXY[0]; + const auto poolStrideH = component->op.maxpool.poolingStrideXY[1]; + + for (unsigned oc = 0; oc < OC; oc++) { + for (unsigned ow = 0; ow < OW; ow++) { + for (unsigned oh = 0; oh < OH; oh++) { + const auto outputIndex = getQubeIndex(oh, ow, oc, OW, OC); + ptr_outputs[outputIndex] = MaxPool2D32SingleHWC(poolWinH, poolWinW, + ptr_inputs, IH, IW, IC, + oh, ow, oc, + poolStrideH, + poolStrideW); + } + } + } +} + +#if GNA_LIB_VER == 2 + +bool matchesPaddedArea(unsigned filterIndex, unsigned outputIndex, unsigned inputSize, unsigned paddingSize, unsigned stride) { + const auto paddedIndex = stride * outputIndex + filterIndex; + if (paddedIndex >= inputSize + 2 * paddingSize) { + THROW_GNA_EXCEPTION << "In: isZeroPaddingCase, paddedIndex >= inputSize + 2 * paddingSize"; + } + if (paddedIndex < paddingSize || paddedIndex >= inputSize + paddingSize) { + return true; + } + return false; +} + +float CNN2DFilter32SingleHWC(const float bias, const float* filter, const unsigned KH, const unsigned KW, const unsigned KC, + const float* image, const unsigned IH, const unsigned IW, const unsigned IC, + const unsigned oh, const unsigned ow, const unsigned oc, + const std::array& convStride, + const std::array& zeroPadding) { + + const auto cSH = convStride[0]; + const auto cSW = convStride[1]; + + const auto zPH = zeroPadding[0]; + const auto zPW = zeroPadding[1]; + float output = 0; + for (unsigned kh = 0; kh < KH; kh++) { + for (unsigned kw = 0; kw < KW; kw++) { + for (unsigned kc = 0; kc < KC; kc++) { + if (!matchesPaddedArea(kh, oh, IH, zPH, cSH) && + !matchesPaddedArea(kw, ow, IW, zPW, cSW)) { + const auto ih = (cSH * oh + kh) - zPH; + const auto iw = (cSW * ow + kw) - zPW; + const auto ic = kc; + const auto imageIndex = getQubeIndex(ih, iw, ic, IW, IC); + const auto imageElement = image[imageIndex]; + const auto filterIndex = getQubeIndex(kh, kw, kc, KW, KC); + const auto filterElement = filter[filterIndex]; + const auto product = imageElement * filterElement; + output += product; + } + } + } + } + output += bias; + return output; +} + +void CNN2DFilter32(intel_dnn_component_t* component) { + float* ptr_filters = reinterpret_cast(component->op.conv2D.ptr_filters); + float* ptr_biases = reinterpret_cast(component->op.conv2D.ptr_biases); + float* ptr_inputs = reinterpret_cast(component->ptr_inputs); + float* ptr_outputs = reinterpret_cast(component->ptr_outputs); + + std::string layer_name; + layer_name = " In layer '" + std::string(component->original_layer_name) + "'"; + + const auto IH = component->tensors[0].dimensions[1]; // NHWC + const auto IW = component->tensors[0].dimensions[2]; // NHWC + const auto IC = component->tensors[0].dimensions[3]; // NHWC + + const auto OH = component->tensors[1].dimensions[1]; // NHWC + const auto OW = component->tensors[1].dimensions[2]; // NHWC + const auto OC = component->tensors[1].dimensions[3]; // NHWC + + const auto kn = component->tensors[2].dimensions[0]; // NHWC + const auto kh = component->tensors[2].dimensions[1]; // NHWC + const auto kw = component->tensors[2].dimensions[2]; // NHWC + const auto kc = component->tensors[2].dimensions[3]; // NHWC + + if (kn != OC) { + THROW_GNA_EXCEPTION << "Number of filters should be equal to output depth!" << layer_name; + } + if (kc != IC) { + THROW_GNA_EXCEPTION << "Depth of filter should be equal to input depth!" << layer_name; + } + auto kernelIndex = 0; + for (unsigned oc = 0; oc < OC; oc++) { + for (unsigned ow = 0; ow < OW; ow++) { + for (unsigned oh = 0; oh < OH; oh++) { + const auto outputIndex = getQubeIndex(oh, ow, oc, OW, OC); + ptr_outputs[outputIndex] = CNN2DFilter32SingleHWC(*(ptr_biases + oc), ptr_filters + kernelIndex, kh, kw, kc, + ptr_inputs, IH, IW, IC, + oh, ow, oc, + component->op.conv2D.convStride, + component->op.conv2D.zeroPadding); + } + } + // kernel padded to 16B = 4 * sizeof(float) + kernelIndex += ALIGN(kh * kw * kc, GNAPluginNS::GNALimitations::convEachKernelByteAlignment / sizeof(float)); + } +} + +#endif + +namespace { +template +bool is2D(T&& vec) { + return vec.size() >= 2 && vec[0] > 1 && vec[1] > 1; +} +} // namespace + +void CNNMaxPool(intel_dnn_component_t* component, intel_dnn_number_type_t number_type, const bool sumPoolingOverRide) { + if (is2D(component->op.maxpool.poolingStrideXY) || + is2D(component->op.maxpool.poolingWindowXY)) { + if (!sumPoolingOverRide) { + CNNMaxPool2DFloat(component); + } else { + THROW_GNA_EXCEPTION << "SUM pooling2D not supported"; + } + } else { + CNNMaxPoolLegacy(component, number_type, sumPoolingOverRide); + } +} diff --git a/inference-engine/src/gna_plugin/runtime/cnn.h b/inference-engine/src/gna_plugin/runtime/cnn.h index 3278d66139c05a..0911702963abc1 100644 --- a/inference-engine/src/gna_plugin/runtime/cnn.h +++ b/inference-engine/src/gna_plugin/runtime/cnn.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,4 +12,8 @@ #define CNN_MAX_POOL_SIZE 6 void CNNFilter32(intel_dnn_component_t *component); -void CNNMaxPool(intel_dnn_component_t *component, intel_dnn_number_type_t number_type); +void CNNMaxPool(intel_dnn_component_t *component, intel_dnn_number_type_t number_type, const bool sumPoolingOverRide = false); + +#if GNA_LIB_VER == 2 +void CNN2DFilter32(intel_dnn_component_t* component); +#endif diff --git a/inference-engine/src/gna_plugin/runtime/floatmath.cpp b/inference-engine/src/gna_plugin/runtime/floatmath.cpp index 9f33e9a91f5045..e5b496c407b335 100644 --- a/inference-engine/src/gna_plugin/runtime/floatmath.cpp +++ b/inference-engine/src/gna_plugin/runtime/floatmath.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // // floatmath.cpp : unoptimized floating point math routines (for reference) diff --git a/inference-engine/src/gna_plugin/runtime/floatmath.h b/inference-engine/src/gna_plugin/runtime/floatmath.h index c12a57abe17bbe..903f4913ad4bf9 100644 --- a/inference-engine/src/gna_plugin/runtime/floatmath.h +++ b/inference-engine/src/gna_plugin/runtime/floatmath.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/runtime/gna_float_runtime.cpp b/inference-engine/src/gna_plugin/runtime/gna_float_runtime.cpp index 8804305facd445..b55be59f2b674d 100644 --- a/inference-engine/src/gna_plugin/runtime/gna_float_runtime.cpp +++ b/inference-engine/src/gna_plugin/runtime/gna_float_runtime.cpp @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 // - #include #include #include @@ -61,6 +60,10 @@ void FP::infer() { ApplyConvolutional1DTransform(comp); break; } + case kDnnConvolutional2dOp: { + ApplyConvolutional2DTransform(comp); + break; + } case kDnnPiecewiselinearOp: { ApplyPiecewiseLinearTransform(comp, kDnnFloat, num_active_outputs); break; @@ -85,4 +88,4 @@ void FP::infer() { THROW_GNA_EXCEPTION << "[GNA FP32 RUNTIME] Bad operation " << comp->operation; } } -} \ No newline at end of file +} diff --git a/inference-engine/src/gna_plugin/runtime/gna_float_runtime.hpp b/inference-engine/src/gna_plugin/runtime/gna_float_runtime.hpp index ce0457ca5304bc..9e8bb8bd7aa3d7 100644 --- a/inference-engine/src/gna_plugin/runtime/gna_float_runtime.hpp +++ b/inference-engine/src/gna_plugin/runtime/gna_float_runtime.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,6 +12,7 @@ namespace runtime { */ class FP { std::shared_ptr dnn; + public: FP(std::shared_ptr dnn) : dnn(dnn) { } @@ -24,6 +25,7 @@ class FP { static void ApplyDiagonalTransform(intel_dnn_component_t *component); static void ApplyRecurrentTransform(intel_dnn_component_t *component, uint32_t row, void *ptr_feedbacks); static void ApplyConvolutional1DTransform(intel_dnn_component_t *component); + static void ApplyConvolutional2DTransform(intel_dnn_component_t* component); static void ApplyPiecewiseLinearTransform(intel_dnn_component_t *component, intel_dnn_number_type_t number_type, uint32_t listsize); diff --git a/inference-engine/src/gna_plugin/runtime/gna_float_runtime_op.cpp b/inference-engine/src/gna_plugin/runtime/gna_float_runtime_op.cpp index f62d02ac1db6e3..f91ba6c9f31187 100644 --- a/inference-engine/src/gna_plugin/runtime/gna_float_runtime_op.cpp +++ b/inference-engine/src/gna_plugin/runtime/gna_float_runtime_op.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -114,6 +114,14 @@ void FP::ApplyConvolutional1DTransform(intel_dnn_component_t *component) { CNNFilter32(component); } +void FP::ApplyConvolutional2DTransform(intel_dnn_component_t* component) { +#if GNA_LIB_VER == 2 + CNN2DFilter32(component); +#else + THROW_GNA_EXCEPTION << "Wrong GNA Library: GNA_LIB_VER != 2"; +#endif +} + void FP::ApplyPiecewiseLinearTransform(intel_dnn_component_t *component, intel_dnn_number_type_t number_type, uint32_t listsize) { diff --git a/inference-engine/src/gna_plugin/runtime/pwl.cpp b/inference-engine/src/gna_plugin/runtime/pwl.cpp index 4c2a07aa954488..8d8528a0b113c0 100644 --- a/inference-engine/src/gna_plugin/runtime/pwl.cpp +++ b/inference-engine/src/gna_plugin/runtime/pwl.cpp @@ -499,22 +499,41 @@ std::vector pwl_search(const DnnActivation& activation_type, void PwlDesignOpt16(const DnnActivation activation_type, std::vector &ptr_segment, const float scale_in, - const float scale_out) { + const float scale_out, + const float pwlMaxErrorPercent) { std::vector pwl; double err_pct = 0.0; + auto minInputStats = 0.0f; + auto maxInputStats = 0.0f; + if (activation_type.srcFQParams.set) { + minInputStats = std::min(*activation_type.srcFQParams.input_low, *activation_type.srcFQParams.input_high) * 1.25f; + maxInputStats = std::max(*activation_type.srcFQParams.input_low, *activation_type.srcFQParams.input_high) * 1.25f; + } switch (activation_type) { - case kActSigmoid: - pwl = pwl_search(activation_type, -SIGMOID_DOMAIN, SIGMOID_DOMAIN, PWL_DESIGN_THRESHOLD, PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); - make_gna_pwl(activation_type, pwl, -SIGMOID_DOMAIN, SIGMOID_DOMAIN, scale_in, scale_out, ptr_segment); + case kActSigmoid: { + auto absMax = std::max(std::abs(minInputStats), std::abs(maxInputStats)); + auto minInput = (activation_type.srcFQParams.set && absMax < SIGMOID_DOMAIN) ? -absMax : -SIGMOID_DOMAIN; + auto maxInput = (activation_type.srcFQParams.set && absMax < SIGMOID_DOMAIN) ? absMax : SIGMOID_DOMAIN; + pwl = pwl_search(activation_type, minInput, maxInput, PWL_DESIGN_THRESHOLD, pwlMaxErrorPercent, PWL_DESIGN_SAMPLES, err_pct); + make_gna_pwl(activation_type, pwl, minInput, maxInput, scale_in, scale_out, ptr_segment); break; - case kActTanh: - pwl = pwl_search(activation_type, -TANH_DOMAIN, TANH_DOMAIN, PWL_DESIGN_THRESHOLD, PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); - make_gna_pwl(activation_type, pwl, -TANH_DOMAIN, TANH_DOMAIN, scale_in, scale_out, ptr_segment); + } + case kActTanh: { + auto absMax = std::max(std::abs(minInputStats), std::abs(maxInputStats)); + auto minInput = (activation_type.srcFQParams.set && absMax < TANH_DOMAIN) ? -absMax : -TANH_DOMAIN; + auto maxInput = (activation_type.srcFQParams.set && absMax < TANH_DOMAIN) ? absMax : TANH_DOMAIN; + pwl = pwl_search(activation_type, minInput, maxInput, PWL_DESIGN_THRESHOLD, pwlMaxErrorPercent, PWL_DESIGN_SAMPLES, err_pct); + make_gna_pwl(activation_type, pwl, minInput, maxInput, scale_in, scale_out, ptr_segment); break; - case kActSoftSign: - pwl = pwl_search(activation_type, -SOFTSIGN_DOMAIN, SOFTSIGN_DOMAIN, PWL_DESIGN_THRESHOLD, PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); - make_gna_pwl(activation_type, pwl, -SOFTSIGN_DOMAIN, SOFTSIGN_DOMAIN, scale_in, scale_out, ptr_segment); + } + case kActSoftSign: { + auto absMax = std::max(std::abs(minInputStats), std::abs(maxInputStats)); + auto minInput = (activation_type.srcFQParams.set && absMax < SOFTSIGN_DOMAIN) ? -absMax : -SOFTSIGN_DOMAIN; + auto maxInput = (activation_type.srcFQParams.set && absMax < SOFTSIGN_DOMAIN) ? absMax : SOFTSIGN_DOMAIN; + pwl = pwl_search(activation_type, minInput, maxInput, PWL_DESIGN_THRESHOLD, pwlMaxErrorPercent, PWL_DESIGN_SAMPLES, err_pct); + make_gna_pwl(activation_type, pwl, minInput, maxInput, scale_in, scale_out, ptr_segment); break; + } case kActRelu: make_gna_pwl(activation_type, pwl, -1.0, 1.0, scale_in, scale_out, ptr_segment); break; @@ -522,6 +541,7 @@ void PwlDesignOpt16(const DnnActivation activation_type, make_gna_pwl(activation_type, pwl, -1.0, 1.0, scale_in, scale_out, ptr_segment); break; case kActIdentity: + case kActFakeQuantize: make_gna_pwl(activation_type, pwl, -1.0, 1.0, scale_in, scale_out, ptr_segment); break; case kActKaldiLstmClipping: @@ -530,28 +550,28 @@ void PwlDesignOpt16(const DnnActivation activation_type, case kActLog: { double x_min = (1 + ~XBASEMASK) / scale_in; double x_max = ((INT32_MAX / scale_in) < LOG_DOMAIN) ? (INT32_MAX / scale_in) : LOG_DOMAIN; - pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, 0.066*PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); + pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, pwlMaxErrorPercent, PWL_DESIGN_SAMPLES, err_pct); make_gna_pwl(activation_type, pwl, x_min, x_max, scale_in, scale_out, ptr_segment); break; } case kActNegLog: { double x_min = (1 + ~XBASEMASK) / scale_in; double x_max = ((INT32_MAX / scale_in) < LOG_DOMAIN) ? (INT32_MAX / scale_in) : LOG_DOMAIN; - pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, 0.066*PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); + pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, pwlMaxErrorPercent, PWL_DESIGN_SAMPLES, err_pct); make_gna_pwl(activation_type, pwl, x_min, x_max, scale_in, scale_out, ptr_segment); break; } case kActNegHalfLog: { double x_min = (1 + ~XBASEMASK) / scale_in; double x_max = ((INT32_MAX / scale_in) < LOG_DOMAIN) ? (INT32_MAX / scale_in) : LOG_DOMAIN; - pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, 0.066*PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); + pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, pwlMaxErrorPercent, PWL_DESIGN_SAMPLES, err_pct); make_gna_pwl(activation_type, pwl, x_min, x_max, scale_in, scale_out, ptr_segment); break; } case kActExp: { double x_min = -log(scale_out); double x_max = x_min + log(INT16_MAX); - pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, 0.5*PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); + pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, pwlMaxErrorPercent, PWL_DESIGN_SAMPLES, err_pct); make_gna_pwl(activation_type, pwl, x_min, x_max, scale_in, scale_out, ptr_segment); break; } @@ -576,7 +596,8 @@ void PwlDesignOpt16(const DnnActivation activation_type, x_max = std::min(x_max, POW_DOMAIN); if (activation_type.args.pow.exponent != 0.0f && activation_type.args.pow.exponent != 1.0f) { - pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, 0.015 * PWL_MAX_ERR_PERCENT, PWL_DESIGN_SAMPLES, err_pct); + auto maxError = pwlMaxErrorPercent > 0.015f? 0.015f: pwlMaxErrorPercent; + pwl = pwl_search(activation_type, x_min, x_max, PWL_DESIGN_THRESHOLD, maxError, PWL_DESIGN_SAMPLES, err_pct); } make_gna_pwl(activation_type, pwl, x_min, x_max, scale_in, scale_out, ptr_segment); @@ -980,15 +1001,14 @@ void PwlApply32(intel_dnn_component_t *component, break; case kActKaldiLstmClipping: { float upper_limit = component->op.pwl.func_id.args.clamp.high; - float lowwer_limit = component->op.pwl.func_id.args.clamp.low; + float lower_limit = component->op.pwl.func_id.args.clamp.low; for (uint32_t i = num_row_start; i <= num_row_end; i++) { for (uint32_t j = num_col_start; j <= num_col_end; j++) { float val = ptr_in[i * num_columns + j]; - if (val > upper_limit) { ptr_out[i * num_columns + j] = upper_limit; - } else if (val < lowwer_limit) { - ptr_out[i * num_columns + j] = lowwer_limit; + } else if (val < lower_limit) { + ptr_out[i * num_columns + j] = lower_limit; } else { ptr_out[i * num_columns + j] = val; } @@ -1050,32 +1070,36 @@ void PwlApply32(intel_dnn_component_t *component, } break; case kActFakeQuantize: { - auto levels = transform->func_id.args.fakeQuantize.levels; + bool clamping = true; + double levels = transform->func_id.fqParams.levels; for (uint32_t i = num_row_start; i <= num_row_end; i++) { - auto inputChannel = transform->func_id.args.fakeQuantize.inputPerChannel ? i : 0; - auto outputChannel = transform->func_id.args.fakeQuantize.outputPerChannel ? i : 0; + auto inputChannel = transform->func_id.fqParams.inputPerChannel ? i : 0; + auto outputChannel = transform->func_id.fqParams.outputPerChannel ? i : 0; - auto input_low = transform->func_id.args.fakeQuantize.input_low[inputChannel]; - auto input_high = transform->func_id.args.fakeQuantize.input_high[inputChannel]; - auto output_low = transform->func_id.args.fakeQuantize.output_low[outputChannel]; - auto output_high = transform->func_id.args.fakeQuantize.output_high[outputChannel]; + double input_low = transform->func_id.fqParams.input_low[inputChannel]; + double input_high = transform->func_id.fqParams.input_high[inputChannel]; + double output_low = transform->func_id.fqParams.output_low[outputChannel]; + double output_high = transform->func_id.fqParams.output_high[outputChannel]; - // TODO: this special modification for spedup-compute give different result with straight FQ formulae - // but this used in reference graph FakeQuantize implementations so we need to honor it for a while - float scaleInput = (input_high - input_low) / (levels-1); - float scaleOutputs = (output_high - output_low) / (levels-1); + auto scaleInput = (levels - 1) / (input_high - input_low); + auto scaleOutput = (levels - 1) / (output_high - output_low); for (uint32_t j = num_col_start; j <= num_col_end; j++) { auto offset = i * num_columns + j; auto x = ptr_in[offset]; + if (!clamping) { + ptr_out[offset] = ptr_in[offset] * scaleInput / scaleOutput; + continue; + } - if (x < std::min(input_low, input_high)) { + if (x <= std::min(input_low, input_high)) { ptr_out[offset] = output_low; } else if (x > std::max(input_low, input_high)) { ptr_out[offset] = output_high; } else { - ptr_out[offset] = nearbyint((x - input_low) / scaleInput) * scaleOutputs + output_low; + ptr_out[offset] = nearbyint((x - input_low) / (input_high - input_low) * (levels - 1)) / + (levels - 1) * (output_high - output_low) + output_low; } } } diff --git a/inference-engine/src/gna_plugin/runtime/pwl.h b/inference-engine/src/gna_plugin/runtime/pwl.h index 86b3cfb93e76fc..b4ab2dc30d0a37 100644 --- a/inference-engine/src/gna_plugin/runtime/pwl.h +++ b/inference-engine/src/gna_plugin/runtime/pwl.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -103,4 +103,5 @@ void PwlDesign16(const DnnActivation activation_type, void PwlDesignOpt16(const DnnActivation activation_type, std::vector &ptr_segment, const float scale_in, - const float scale_out); + const float scale_out, + const float pwlMaxErrorPercent); diff --git a/inference-engine/src/gna_plugin/serial/headers/2dot1/gna_model_header.hpp b/inference-engine/src/gna_plugin/serial/headers/2dot1/gna_model_header.hpp index 3a1b384116fa82..e386700d833983 100644 --- a/inference-engine/src/gna_plugin/serial/headers/2dot1/gna_model_header.hpp +++ b/inference-engine/src/gna_plugin/serial/headers/2dot1/gna_model_header.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/serial/headers/2dot2/gna_model_header.hpp b/inference-engine/src/gna_plugin/serial/headers/2dot2/gna_model_header.hpp index 14b55500d14518..7131d1dc561a7e 100644 --- a/inference-engine/src/gna_plugin/serial/headers/2dot2/gna_model_header.hpp +++ b/inference-engine/src/gna_plugin/serial/headers/2dot2/gna_model_header.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/serial/headers/2dot3/gna_model_header.hpp b/inference-engine/src/gna_plugin/serial/headers/2dot3/gna_model_header.hpp index e95f5c81c46e32..e35d8c86bdc62c 100644 --- a/inference-engine/src/gna_plugin/serial/headers/2dot3/gna_model_header.hpp +++ b/inference-engine/src/gna_plugin/serial/headers/2dot3/gna_model_header.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/serial/headers/2dot4/gna_model_header.hpp b/inference-engine/src/gna_plugin/serial/headers/2dot4/gna_model_header.hpp index 5f0a533e9d5ed7..6aacd9492ef090 100644 --- a/inference-engine/src/gna_plugin/serial/headers/2dot4/gna_model_header.hpp +++ b/inference-engine/src/gna_plugin/serial/headers/2dot4/gna_model_header.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/serial/headers/2dot5/gna_model_header.hpp b/inference-engine/src/gna_plugin/serial/headers/2dot5/gna_model_header.hpp index 0fa4e4a007de1d..d3f9d09d0b666b 100644 --- a/inference-engine/src/gna_plugin/serial/headers/2dot5/gna_model_header.hpp +++ b/inference-engine/src/gna_plugin/serial/headers/2dot5/gna_model_header.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/gna_plugin/serial/headers/2dot6/gna_model_header.hpp b/inference-engine/src/gna_plugin/serial/headers/2dot6/gna_model_header.hpp new file mode 100644 index 00000000000000..3aa1583e40bada --- /dev/null +++ b/inference-engine/src/gna_plugin/serial/headers/2dot6/gna_model_header.hpp @@ -0,0 +1,145 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include "backend/dnn_types.h" +#include "serial/headers/2dot4/gna_model_header.hpp" +#include "gna_data_types.hpp" +#pragma pack(push, 1) + +namespace GNAPluginNS { +namespace Header2dot6 { + +/** + * @brief Header version 2.6 + */ +struct ModelHeader { + /** + *@brief MagicNumber – GNAM in ascii table, equals to hex 0x474e414d + */ + char gnam[4] = {}; + /** + * @brief if header size is not equal to sizeof ModelHeader - some reserved data append in the end of header + * usually it is an indicator of working with version of model different that is current export function produce + */ + uint32_t headerSize = 0u; + struct Version { + /** + * @details Version of format Major – unsigned int, ex: 0x0001 + * every change in the header or in the layers definition should be reflected in version change + * for backward compatibility new parsers can read old versions of model with certain restrictions + */ + uint16_t major = 2u; + /** + * @details Version of Format Minor – unsigned int, corresponding to build revision for example + * changes in minor version are not affected layout of model + */ + uint32_t minor = 6u; + } version; + /** + * @brief Memory required to be allocated using GNAAlloc() + */ + uint64_t gnaMemSize = 0ull; + /** + * @brief Number of GNA Layers + */ + uint64_t layersCount = 0ull; + /** + * @brief Grouping level + */ + uint32_t nGroup = 0u; + + /** + * Convolution related setting - they are affecting input transformation + */ + uint32_t nRotateRows = 0u; + uint32_t nRotateColumns = 0u; + bool doRotateInput = false; + + uint32_t nInputs = 0u; + uint32_t nOutputs = 0u; + + /** + * Convolution related setting - they are affecting output transformation + */ + uint32_t nRotateOutputRows = 0u; + uint32_t nRotateOutputColumns = 0u; + bool doRotateOutput = false; + + uint32_t nTransposeInputs = 0u; + uint32_t nTransposeOutputs = 0u; + + /** + * Reserved Data might be here + */ + ModelHeader() = default; + ModelHeader(GNAPluginNS::Header2dot1::ModelHeader const &old) { + gnaMemSize = old.gnaMemSize; + layersCount = old.layersCount; + nGroup = old.nGroup; + nRotateRows = old.nRotateRows; + nRotateColumns = old.nRotateColumns; + nInputs = old.nInputs; + nOutputs = old.nOutputs; + version.minor = old.version.minor; + } + ModelHeader(GNAPluginNS::Header2dot4::ModelHeader const &old) { + gnaMemSize = old.gnaMemSize; + layersCount = old.layersCount; + nGroup = old.nGroup; + nRotateRows = old.nRotateRows; + nRotateColumns = old.nRotateColumns; + nInputs = old.nInputs; + nOutputs = old.nOutputs; + nRotateOutputRows = old.nRotateOutputRows; + nRotateOutputColumns = old.nRotateOutputColumns; + doRotateOutput = old.doRotateOutput; + version.minor = old.version.minor; + } +}; +#pragma pack(pop) + +/* + * In runtime endpoint mostly same as in serial version, except of descriptor field + */ +struct RuntimeEndPoint { + /** + * if scale factor is different then pased into infer , network might need to be requantized + */ + float scaleFactor = 0; + /** + * Pointer descriptor + */ + void* descriptor_ptr = nullptr; + /** + * Endpoint resolution in bytes. + */ + uint32_t element_size = 0; + /** + * Number of elements + */ + uint32_t elements_count = 0; + /** + * Offset in bytes of pointer descriptor + */ + uint64_t descriptor_offset = 0ull; + + intel_dnn_orientation_t orientation = kDnnUnknownOrientation; + + RuntimeEndPoint() = default; + RuntimeEndPoint(double scaleFactor, + void* descriptor_ptr, + uint32_t element_size, + uint32_t elements_count, + intel_dnn_orientation_t orientation) : scaleFactor(scaleFactor), + descriptor_ptr(descriptor_ptr), + element_size(element_size), + elements_count(elements_count), + orientation(orientation) { } +}; +} // namespace Header2dot6 +} // namespace GNAPluginNS diff --git a/inference-engine/src/gna_plugin/serial/headers/latest/gna_model_header.hpp b/inference-engine/src/gna_plugin/serial/headers/latest/gna_model_header.hpp index 702f7ea1fd7270..89292ab88afb17 100644 --- a/inference-engine/src/gna_plugin/serial/headers/latest/gna_model_header.hpp +++ b/inference-engine/src/gna_plugin/serial/headers/latest/gna_model_header.hpp @@ -1,14 +1,14 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once -#include "serial/headers/2dot5/gna_model_header.hpp" +#include "serial/headers/2dot6/gna_model_header.hpp" namespace GNAPluginNS { namespace HeaderLatest { -using ModelHeader = GNAPluginNS::Header2dot5::ModelHeader; -using RuntimeEndPoint = GNAPluginNS::Header2dot5::RuntimeEndPoint; +using ModelHeader = GNAPluginNS::Header2dot6::ModelHeader; +using RuntimeEndPoint = GNAPluginNS::Header2dot6::RuntimeEndPoint; } } diff --git a/inference-engine/src/hetero_plugin/CMakeLists.txt b/inference-engine/src/hetero_plugin/CMakeLists.txt index 41eb7688e6ab4f..307313bd2c440e 100644 --- a/inference-engine/src/hetero_plugin/CMakeLists.txt +++ b/inference-engine/src/hetero_plugin/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/hetero_plugin/hetero_async_infer_request.cpp b/inference-engine/src/hetero_plugin/hetero_async_infer_request.cpp index ab4ef5710cd373..464ee56dda1309 100644 --- a/inference-engine/src/hetero_plugin/hetero_async_infer_request.cpp +++ b/inference-engine/src/hetero_plugin/hetero_async_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -35,10 +35,13 @@ HeteroAsyncInferRequest::HeteroAsyncInferRequest(const InferRequestInternal::Ptr Task _task; }; - auto reuestExecutor = std::make_shared(_heteroInferRequest->_inferRequests[requestId]._request.get()); - _pipeline.emplace_back(reuestExecutor, [reuestExecutor] { - if (StatusCode::OK != reuestExecutor->_status) { - THROW_IE_EXCEPTION << InferenceEngine::details::as_status << reuestExecutor->_status; + auto requestExecutor = std::make_shared(_heteroInferRequest->_inferRequests[requestId]._request.get()); + _pipeline.emplace_back(requestExecutor, [requestExecutor] { + if (StatusCode::OK != requestExecutor->_status) { + IE_EXCEPTION_SWITCH(requestExecutor->_status, ExceptionType, + InferenceEngine::details::ThrowNow{} + <<= std::stringstream{} << IE_LOCATION + << InferenceEngine::details::ExceptionTraits::string()); } }); } diff --git a/inference-engine/src/hetero_plugin/hetero_async_infer_request.hpp b/inference-engine/src/hetero_plugin/hetero_async_infer_request.hpp index 55497b7cfe415c..d3563e68fa7275 100644 --- a/inference-engine/src/hetero_plugin/hetero_async_infer_request.hpp +++ b/inference-engine/src/hetero_plugin/hetero_async_infer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/hetero_plugin/hetero_executable_network.cpp b/inference-engine/src/hetero_plugin/hetero_executable_network.cpp index 6241118511a7ce..6582b5ccadc96b 100644 --- a/inference-engine/src/hetero_plugin/hetero_executable_network.cpp +++ b/inference-engine/src/hetero_plugin/hetero_executable_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -83,7 +83,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo if (it != _config.end()) { queryNetworkResult = _heteroPlugin->QueryNetwork(network, _config); } else { - THROW_IE_EXCEPTION << "The 'TARGET_FALLBACK' option was not defined for heterogeneous plugin"; + IE_THROW() << "The 'TARGET_FALLBACK' option was not defined for heterogeneous plugin"; } } @@ -104,7 +104,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo : node->output(0).get_target_inputs().begin()->get_node()->get_friendly_name(); auto itAffinity = queryNetworkResult.supportedLayersMap.find(nodeWithAffinityName); if (itAffinity == queryNetworkResult.supportedLayersMap.end()) { - THROW_IE_EXCEPTION << "Node " << nodeWithAffinityName << + IE_THROW() << "Node " << nodeWithAffinityName << " was not assigned on any pointed device."; } queryNetworkResult.supportedLayersMap.emplace(node->get_friendly_name(), itAffinity->second); @@ -121,13 +121,13 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo affinities[node.get()] = itAffinity->second; devices.emplace(itAffinity->second); } else if (allEmpty) { - THROW_IE_EXCEPTION << "Hetero plugin used default fallback policy, but some layers eg: \n(Name:" << + IE_THROW() << "Hetero plugin used default fallback policy, but some layers eg: \n(Name:" << node->get_friendly_name() << ", Type: " << node->get_type_name() << ") were not able to be assigned on any pointed device.\n" << "It happened because these layers are not supported in plugins by default.\n" << "You need to implement custom layers to support them."; } else { - THROW_IE_EXCEPTION << "Network passed to LoadNetwork has affinity assigned, but some layers eg: \n(Name:" << + IE_THROW() << "Network passed to LoadNetwork has affinity assigned, but some layers eg: \n(Name:" << node->get_friendly_name() << ", Type: " << node->get_type_name() << ") were not assigned to any device.\n" << "It might happen if you assigned layers manually and missed some layers or\n" << @@ -368,7 +368,6 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo OutputsDataMap externalOutputsData = network.getOutputsInfo(); networks.resize(orderedSubgraphs.size()); std::vector> subFunctions(orderedSubgraphs.size()); - std::vector isInputSubnetwork(orderedSubgraphs.size()); int id = 0; for (auto&& subgraph : orderedSubgraphs) { networks[id]._device = subgraph._affinity; @@ -386,11 +385,15 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo itClonedInput->second->setLayout(externalInput.second->getLayout()); } } - isInputSubnetwork[id] = std::any_of(std::begin(subgraph._parameters), - std::end(subgraph._parameters), - [&] (const std::shared_ptr& p) { - return contains(graphInputNodes, p.get()); - }); + // update output info + auto clonedOutputs = networks[id]._clonedNetwork.getOutputsInfo(); + for (auto&& externalOutput : externalOutputsData) { + auto itClonedOutput = clonedOutputs.find(externalOutput.first); + if (itClonedOutput != clonedOutputs.end() && nullptr != itClonedOutput->second) { + itClonedOutput->second->setPrecision(externalOutput.second->getPrecision()); + itClonedOutput->second->setLayout(externalOutput.second->getLayout()); + } + } ++id; } if (dumpDotFile) { @@ -415,6 +418,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo } for (auto&& network : networks) { auto metaDevices = _heteroPlugin->GetDevicePlugins(network._device, _config); + metaDevices[network._device].emplace(CONFIG_KEY_INTERNAL(FORCE_DISABLE_CACHE), ""); network._network = _heteroPlugin->GetCore()->LoadNetwork(network._clonedNetwork, network._device, metaDevices[network._device]); } @@ -431,7 +435,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(std::istream& pugi::xml_parse_result res = heteroXmlDoc.load_string(heteroXmlStr.c_str()); if (res.status != pugi::status_ok) { - THROW_IE_EXCEPTION_WITH_STATUS(NETWORK_NOT_READ) << "Error reading HETERO plugin xml header"; + IE_THROW(NetworkNotRead) << "Error reading HETERO plugin xml header"; } using namespace XMLParseUtils; @@ -478,9 +482,9 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(std::istream& InferenceEngine::ExecutableNetwork executableNetwork; CNNNetwork cnnnetwork; bool loaded = false; - try { + if (ImportExportSupported(deviceName)) { executableNetwork = _heteroPlugin->GetCore()->ImportNetwork(heteroModel, deviceName, loadConfig); - } catch (const InferenceEngine::NotImplemented &) { + } else { // read XML content std::string xmlString; std::uint64_t dataSize = 0; @@ -606,12 +610,12 @@ void HeteroExecutableNetwork::ExportImpl(std::ostream& heteroModel) { heteroModel << std::endl; for (auto&& subnetwork : networks) { - try { + if (ImportExportSupported(subnetwork._device)) { subnetwork._network.Export(heteroModel); - } catch (const InferenceEngine::NotImplemented &) { + } else { auto subnet = subnetwork._clonedNetwork; if (!subnet.getFunction()) { - THROW_IE_EXCEPTION << "Hetero plugin supports only ngraph function representation"; + IE_THROW() << "Hetero plugin supports only ngraph function representation"; } // Note: custom ngraph extensions are not supported @@ -681,7 +685,7 @@ InferenceEngine::Parameter HeteroExecutableNetwork::GetConfig(const std::string } } - THROW_IE_EXCEPTION << "Unsupported ExecutableNetwork config key: " << name; + IE_THROW() << "Unsupported ExecutableNetwork config key: " << name; } return result; @@ -792,6 +796,16 @@ InferenceEngine::Parameter HeteroExecutableNetwork::GetMetric(const std::string } } - THROW_IE_EXCEPTION << "Unsupported ExecutableNetwork metric: " << name; + IE_THROW() << "Unsupported ExecutableNetwork metric: " << name; } } + +bool HeteroExecutableNetwork::ImportExportSupported(const std::string& deviceName) const { + std::vector supportedMetricKeys = _heteroPlugin->GetCore()->GetMetric( + deviceName, METRIC_KEY(SUPPORTED_METRICS)); + auto it = std::find(supportedMetricKeys.begin(), supportedMetricKeys.end(), + METRIC_KEY(IMPORT_EXPORT_SUPPORT)); + bool supported = (it != supportedMetricKeys.end()) && + _heteroPlugin->GetCore()->GetMetric(deviceName, METRIC_KEY(IMPORT_EXPORT_SUPPORT)); + return supported; +} diff --git a/inference-engine/src/hetero_plugin/hetero_executable_network.hpp b/inference-engine/src/hetero_plugin/hetero_executable_network.hpp index 7e5ce5eda2af09..7cb0a2ac8b34bc 100644 --- a/inference-engine/src/hetero_plugin/hetero_executable_network.hpp +++ b/inference-engine/src/hetero_plugin/hetero_executable_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -63,6 +63,7 @@ class HeteroExecutableNetwork : public InferenceEngine::ExecutableNetworkThreadS private: void InitCNNImpl(const InferenceEngine::CNNNetwork& network); void InitNgraph(const InferenceEngine::CNNNetwork& network); + bool ImportExportSupported(const std::string& deviceName) const; struct NetworkDesc { std::string _device; diff --git a/inference-engine/src/hetero_plugin/hetero_infer_request.cpp b/inference-engine/src/hetero_plugin/hetero_infer_request.cpp index 9d831f7703082f..83a5d15a8db477 100644 --- a/inference-engine/src/hetero_plugin/hetero_infer_request.cpp +++ b/inference-engine/src/hetero_plugin/hetero_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,7 +23,7 @@ HeteroInferRequest::HeteroInferRequest(InferenceEngine::InputsDataMap networkInp InferRequestInternal(networkInputs, networkOutputs), _inferRequests(inferRequests) { if (_networkOutputs.empty() || _networkInputs.empty()) { - THROW_IE_EXCEPTION << "Internal error: no information about network's output/input"; + IE_THROW() << "Internal error: no information about network's output/input"; } auto requestBlob([&](const std::string& blobName, InferenceEngine::InferRequest::Ptr r) { @@ -77,11 +77,7 @@ void HeteroInferRequest::SetBlob(const std::string& name, const InferenceEngine: if (findInputAndOutputBlobByName(name, foundInput, foundOutput)) { r->SetBlob(name, data, foundInput->getPreProcess()); } - } catch (const InferenceEngine::details::InferenceEngineException & ex) { - std::string message = ex.what(); - if (message.find(NOT_FOUND_str) == std::string::npos) - throw ex; - } + } catch (const InferenceEngine::NotFound& ex) {} } } diff --git a/inference-engine/src/hetero_plugin/hetero_infer_request.hpp b/inference-engine/src/hetero_plugin/hetero_infer_request.hpp index aee93ced131e21..fd9dc591ab09e7 100644 --- a/inference-engine/src/hetero_plugin/hetero_infer_request.hpp +++ b/inference-engine/src/hetero_plugin/hetero_infer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/hetero_plugin/hetero_itt.hpp b/inference-engine/src/hetero_plugin/hetero_itt.hpp index 0c9c8aa3573b79..f14541b380a424 100644 --- a/inference-engine/src/hetero_plugin/hetero_itt.hpp +++ b/inference-engine/src/hetero_plugin/hetero_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/hetero_plugin/hetero_plugin.cpp b/inference-engine/src/hetero_plugin/hetero_plugin.cpp index 7133e4337db1a6..1a2250442d197f 100644 --- a/inference-engine/src/hetero_plugin/hetero_plugin.cpp +++ b/inference-engine/src/hetero_plugin/hetero_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -41,18 +41,18 @@ Engine::Configs mergeConfigs(Engine::Configs config, const Engine::Configs & loc InferenceEngine::ExecutableNetworkInternal::Ptr Engine::LoadExeNetworkImpl(const InferenceEngine::CNNNetwork& network, const Configs& config) { if (GetCore() == nullptr) { - THROW_IE_EXCEPTION << "Please, work with HETERO device via InferencEngine::Core object"; + IE_THROW() << "Please, work with HETERO device via InferencEngine::Core object"; } auto tconfig = mergeConfigs(_config, config); auto it = tconfig.find("TARGET_FALLBACK"); if (it == tconfig.end()) { - THROW_IE_EXCEPTION << "The 'TARGET_FALLBACK' option was not defined for heterogeneous plugin"; + IE_THROW() << "The 'TARGET_FALLBACK' option was not defined for heterogeneous plugin"; } DeviceMetaInformationMap metaDevices = GetDevicePlugins(it->second, tconfig); auto function = network.getFunction(); if (function == nullptr) { - THROW_IE_EXCEPTION << "HETERO plugin supports just ngraph network representation"; + IE_THROW() << "HETERO plugin supports just ngraph network representation"; } return std::make_shared(network, mergeConfigs(_config, config), this); @@ -60,7 +60,7 @@ InferenceEngine::ExecutableNetworkInternal::Ptr Engine::LoadExeNetworkImpl(const InferenceEngine::ExecutableNetwork Engine::ImportNetworkImpl(std::istream& heteroModel, const Configs& config) { if (GetCore() == nullptr) { - THROW_IE_EXCEPTION << "Please, work with HETERO device via InferencEngine::Core object"; + IE_THROW() << "Please, work with HETERO device via InferencEngine::Core object"; } return make_executable_network(std::make_shared(heteroModel, @@ -102,11 +102,6 @@ Engine::DeviceMetaInformationMap Engine::GetDevicePlugins(const std::string& tar if (metaDevices.end() == itPlugin) { metaDevices[deviceName] = getDeviceConfig(deviceName); } - std::vector supportedConfigKeys = GetCore()->GetMetric(deviceName, METRIC_KEY(SUPPORTED_CONFIG_KEYS)); - if (std::find(std::begin(supportedConfigKeys), std::end(supportedConfigKeys), CONFIG_KEY_INTERNAL(AGGREGATED_PLUGIN)) - != std::end(supportedConfigKeys)) { - metaDevices[deviceName].emplace(CONFIG_KEY_INTERNAL(AGGREGATED_PLUGIN), ""); - } } return metaDevices; } @@ -121,13 +116,13 @@ QueryNetworkResult Engine::QueryNetwork(const CNNNetwork &network, const Configs QueryNetworkResult qr; if (GetCore() == nullptr) { - THROW_IE_EXCEPTION << "Please, work with HETERO device via InferencEngine::Core object"; + IE_THROW() << "Please, work with HETERO device via InferencEngine::Core object"; } auto tconfig = mergeConfigs(_config, config); auto it = tconfig.find("TARGET_FALLBACK"); if (it == tconfig.end()) { - THROW_IE_EXCEPTION << "The 'TARGET_FALLBACK' option was not defined for heterogeneous plugin"; + IE_THROW() << "The 'TARGET_FALLBACK' option was not defined for heterogeneous plugin"; } std::string fallbackDevicesStr = it->second; @@ -135,7 +130,7 @@ QueryNetworkResult Engine::QueryNetwork(const CNNNetwork &network, const Configs auto function = network.getFunction(); if (function == nullptr) { - THROW_IE_EXCEPTION << "HETERO plugin supports just ngraph network representation"; + IE_THROW() << "HETERO plugin supports just ngraph network representation"; } std::map queryResults; @@ -159,23 +154,51 @@ QueryNetworkResult Engine::QueryNetwork(const CNNNetwork &network, const Configs return qr; } -Parameter Engine::GetMetric(const std::string& name, const std::map & /*options*/) const { +Parameter Engine::GetMetric(const std::string& name, const std::map& options) const { if (METRIC_KEY(SUPPORTED_METRICS) == name) { IE_SET_METRIC_RETURN(SUPPORTED_METRICS, std::vector{ METRIC_KEY(SUPPORTED_METRICS), METRIC_KEY(FULL_DEVICE_NAME), - METRIC_KEY(SUPPORTED_CONFIG_KEYS)}); + METRIC_KEY(SUPPORTED_CONFIG_KEYS), + METRIC_KEY(DEVICE_ARCHITECTURE), + METRIC_KEY(IMPORT_EXPORT_SUPPORT)}); } else if (METRIC_KEY(SUPPORTED_CONFIG_KEYS) == name) { IE_SET_METRIC_RETURN(SUPPORTED_CONFIG_KEYS, std::vector{ HETERO_CONFIG_KEY(DUMP_GRAPH_DOT), "TARGET_FALLBACK", - CONFIG_KEY(EXCLUSIVE_ASYNC_REQUESTS), - CONFIG_KEY_INTERNAL(AGGREGATED_PLUGIN)}); + CONFIG_KEY(EXCLUSIVE_ASYNC_REQUESTS)}); } else if (METRIC_KEY(FULL_DEVICE_NAME) == name) { IE_SET_METRIC_RETURN(FULL_DEVICE_NAME, std::string{"HETERO"}); + } else if (METRIC_KEY(IMPORT_EXPORT_SUPPORT) == name) { + IE_SET_METRIC_RETURN(IMPORT_EXPORT_SUPPORT, true); + } else if (METRIC_KEY(DEVICE_ARCHITECTURE) == name) { + auto deviceIt = options.find("TARGET_FALLBACK"); + std::string targetFallback; + if (deviceIt != options.end()) { + targetFallback = deviceIt->second.as(); + } else { + targetFallback = GetConfig("TARGET_FALLBACK", {}).as(); + } + IE_SET_METRIC_RETURN(DEVICE_ARCHITECTURE, DeviceArchitecture(targetFallback)); } else { - THROW_IE_EXCEPTION << "Unsupported Plugin metric: " << name; + IE_THROW() << "Unsupported Plugin metric: " << name; + } +} +std::string Engine::DeviceArchitecture(const std::string& targetFallback) const { + auto fallbackDevices = InferenceEngine::DeviceIDParser::getHeteroDevices(targetFallback); + std::string resArch; + for (const auto& device : fallbackDevices) { + InferenceEngine::DeviceIDParser parser(device); + + std::vector supportedMetricKeys = GetCore()->GetMetric( + parser.getDeviceName(), METRIC_KEY(SUPPORTED_METRICS)); + auto it = std::find(supportedMetricKeys.begin(), supportedMetricKeys.end(), + METRIC_KEY(DEVICE_ARCHITECTURE)); + auto arch = (it != supportedMetricKeys.end()) ? + GetCore()->GetMetric(device, METRIC_KEY(DEVICE_ARCHITECTURE)).as() : parser.getDeviceName(); + resArch += " " + arch; } + return resArch; } Parameter Engine::GetConfig(const std::string& name, const std::map & /*options*/) const { @@ -187,12 +210,12 @@ Parameter Engine::GetConfig(const std::string& name, const std::mapsecond }; } } else { - THROW_IE_EXCEPTION << "Unsupported config key: " << name; + IE_THROW() << "Unsupported config key: " << name; } } diff --git a/inference-engine/src/hetero_plugin/hetero_plugin.hpp b/inference-engine/src/hetero_plugin/hetero_plugin.hpp index ee04693fcdc2e1..a6c3908d8e2f41 100644 --- a/inference-engine/src/hetero_plugin/hetero_plugin.hpp +++ b/inference-engine/src/hetero_plugin/hetero_plugin.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,5 +44,6 @@ class Engine : public InferenceEngine::InferencePluginInternal { private: Configs GetSupportedConfig(const Configs& config, const std::string & deviceName) const; + std::string DeviceArchitecture(const std::string& targetFallback) const; }; } // namespace HeteroPlugin diff --git a/inference-engine/src/inference_engine/CMakeLists.txt b/inference-engine/src/inference_engine/CMakeLists.txt index 3a3d622852d435..b1a31f09529e81 100644 --- a/inference-engine/src/inference_engine/CMakeLists.txt +++ b/inference-engine/src/inference_engine/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -84,7 +84,7 @@ target_include_directories(${TARGET_NAME}_plugin_api INTERFACE $ ${PUBLIC_HEADERS_DIR}) -target_link_libraries(${TARGET_NAME}_plugin_api INTERFACE openvino::itt openvino::conditional_compilation) +target_link_libraries(${TARGET_NAME}_plugin_api INTERFACE openvino::itt) set_ie_threading_interface_for(${TARGET_NAME}_plugin_api) @@ -108,6 +108,7 @@ target_compile_definitions(${TARGET_NAME}_obj PRIVATE IMPLEMENT_INFERENCE_ENGINE $) target_include_directories(${TARGET_NAME}_obj SYSTEM PRIVATE $ + $ $ $) @@ -136,8 +137,8 @@ ie_add_vs_version_file(NAME ${TARGET_NAME} set_ie_threading_interface_for(${TARGET_NAME}) -target_link_libraries(${TARGET_NAME} PRIVATE pugixml openvino::itt openvino::conditional_compilation ${CMAKE_DL_LIBS} Threads::Threads - ${NGRAPH_LIBRARIES} inference_engine_transformations) +target_link_libraries(${TARGET_NAME} PRIVATE pugixml openvino::itt ${CMAKE_DL_LIBS} Threads::Threads + ${NGRAPH_LIBRARIES} ${FRONTEND_LIBRARIES} inference_engine_transformations) target_include_directories(${TARGET_NAME} INTERFACE ${PUBLIC_HEADERS_DIR} PRIVATE $ @@ -171,7 +172,8 @@ if(WIN32) set_target_properties(${TARGET_NAME}_s PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}_s) endif() -target_link_libraries(${TARGET_NAME}_s PRIVATE openvino::itt openvino::conditional_compilation ${CMAKE_DL_LIBS} ${NGRAPH_LIBRARIES} +target_link_libraries(${TARGET_NAME}_s PRIVATE openvino::itt ${CMAKE_DL_LIBS} ${NGRAPH_LIBRARIES} + inference_engine_snippets inference_engine_transformations pugixml) target_compile_definitions(${TARGET_NAME}_s PUBLIC USE_STATIC_IE) diff --git a/inference-engine/src/inference_engine/blob_factory.cpp b/inference-engine/src/inference_engine/blob_factory.cpp index e54f5b72c5cb6e..c9a8ba7a9bb057 100644 --- a/inference-engine/src/inference_engine/blob_factory.cpp +++ b/inference-engine/src/inference_engine/blob_factory.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/blob_transform.cpp b/inference-engine/src/inference_engine/blob_transform.cpp index e24ddde05bbbbb..186afd36368a88 100644 --- a/inference-engine/src/inference_engine/blob_transform.cpp +++ b/inference-engine/src/inference_engine/blob_transform.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -144,7 +144,7 @@ static inline void blob_copy_4d(Blob::Ptr src, Blob::Ptr dst) { break; default: - THROW_IE_EXCEPTION << "Unsupported blob transformation for precision " << src->getTensorDesc().getPrecision(); + IE_THROW() << "Unsupported blob transformation for precision " << src->getTensorDesc().getPrecision(); } } @@ -284,28 +284,28 @@ static inline void blob_copy_5d(Blob::Ptr src, Blob::Ptr dst) { break; default: - THROW_IE_EXCEPTION << "Unsupported blob transformation for precision " << src->getTensorDesc().getPrecision(); + IE_THROW() << "Unsupported blob transformation for precision " << src->getTensorDesc().getPrecision(); } } void blob_copy(Blob::Ptr src, Blob::Ptr dst) { - if (src->buffer() == nullptr) THROW_IE_EXCEPTION << "Cannot copy blob data. Source is not allocated."; + if (src->buffer() == nullptr) IE_THROW() << "Cannot copy blob data. Source is not allocated."; - if (dst->buffer() == nullptr) THROW_IE_EXCEPTION << "Cannot copy blob data. Destination is not allocated."; + if (dst->buffer() == nullptr) IE_THROW() << "Cannot copy blob data. Destination is not allocated."; if (src->getTensorDesc().getPrecision() != dst->getTensorDesc().getPrecision()) - THROW_IE_EXCEPTION << "Unimplemented blob transformation from precision " << src->getTensorDesc().getPrecision() + IE_THROW() << "Unimplemented blob transformation from precision " << src->getTensorDesc().getPrecision() << " to " << src->getTensorDesc().getPrecision(); if (src->getTensorDesc().getDims() != dst->getTensorDesc().getDims()) - THROW_IE_EXCEPTION << "Unimplemented blob transformation from different shapes "; + IE_THROW() << "Unimplemented blob transformation from different shapes "; if (src->getTensorDesc().getDims().size() == 4) blob_copy_4d(src, dst); else if (src->getTensorDesc().getDims().size() == 5) blob_copy_5d(src, dst); else - THROW_IE_EXCEPTION << "Unimplemented blob transformation. Only 4d or 5d supported."; + IE_THROW() << "Unimplemented blob transformation. Only 4d or 5d supported."; } } // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/cnn_network_ngraph_impl.cpp b/inference-engine/src/inference_engine/cnn_network_ngraph_impl.cpp index 156b9ab3eccc72..9504d94a4324d0 100644 --- a/inference-engine/src/inference_engine/cnn_network_ngraph_impl.cpp +++ b/inference-engine/src/inference_engine/cnn_network_ngraph_impl.cpp @@ -29,6 +29,8 @@ #include #include +#include + #include "ie_ngraph_utils.hpp" #include "exec_graph_info.hpp" #include "ie_itt.hpp" @@ -78,7 +80,7 @@ void CNNNetworkNGraphImpl::createDataForResult(const ::ngraph::Output<::ngraph:: } for (const auto& dim : dims) { if (!dim) - THROW_IE_EXCEPTION << outName << " has zero dimension which is not allowed"; + IE_THROW() << outName << " has zero dimension which is not allowed"; } if (ptr) { @@ -117,7 +119,6 @@ CNNNetworkNGraphImpl::CNNNetworkNGraphImpl( IE_ASSERT(layer->get_output_size() == 1); // Parameter as only singly output port // map original names to OpenVINO name - _opNames[outName] = outName; for (const auto& name : layer->get_output_tensor(0).get_names()) { _tensorNames[name] = outName; } @@ -143,14 +144,13 @@ CNNNetworkNGraphImpl::CNNNetworkNGraphImpl(const CNNNetwork& network) { const ICNNNetwork& iNetwork = network; const auto net = dynamic_cast(&iNetwork); if (network.getFunction() == nullptr || !net) { - THROW_IE_EXCEPTION << "Cannot create CNNNetwork with nGraph from legacy network format!"; + IE_THROW() << "Cannot create CNNNetwork with nGraph from legacy network format!"; } _ngraph_function = copyFunction(network.getFunction(), false); InputsDataMap inputs = network.getInputsInfo(); OutputsDataMap outputs = network.getOutputsInfo(); - _opNames = net->_opNames; _tensorNames = net->_tensorNames; for (const auto& outputInfo : outputs) { @@ -252,12 +252,6 @@ void CNNNetworkNGraphImpl::addOutput(const ::ngraph::Output<::ngraph::Node> & ou for (const auto& name : output.get_tensor().get_names()) { _tensorNames[name] = dataName; } - for (const auto consumerInput : output.get_target_inputs()) { - const auto &consumerLayer = consumerInput.get_node()->shared_from_this(); - if (std::dynamic_pointer_cast(consumerLayer)) { - _opNames[consumerLayer->get_friendly_name()] = dataName; - } - } } size_t CNNNetworkNGraphImpl::getBatchSize() const noexcept { @@ -355,6 +349,7 @@ CNNNetworkNGraphImpl::reshape(const std::map>& ::ngraph::pass::Manager manager; // resolves dynamism by replacing dynamic operation with static version manager.register_pass<::ngraph::pass::ConvertNMS5ToLegacyMatcher>(false); + manager.register_pass<::ngraph::pass::DisableConvertConstantFoldingOnConstPath>(); manager.register_pass<::ngraph::pass::ConstantFolding>(); // OneHotToLegacy changes output precision manager.register_pass<::ngraph::pass::ConvertOneHotToOneHotIEMatcher>()->detect_output_type( @@ -410,7 +405,7 @@ CNNNetworkNGraphImpl::reshape(const std::map>& for (const auto ¶meter : specialized_ngraph_function->get_parameters()) { const auto &outName = parameter->get_friendly_name(); if (opName.find(outName) != opName.end()) { - THROW_IE_EXCEPTION << "All operations in nGraph function should have unique friendly names!"; + IE_THROW() << "All operations in nGraph function should have unique friendly names!"; } opName.insert(outName); createDataForResult(parameter, outName, _data[outName]); @@ -432,7 +427,7 @@ StatusCode CNNNetworkNGraphImpl::serialize(const std::string& xmlPath, xmlPath, binPath, ngraph::pass::Serialize::Version::IR_V10, custom_opsets); manager.run_passes(_ngraph_function); - } catch (const InferenceEngineException& e) { + } catch (const Exception& e) { return DescriptionBuffer(GENERAL_ERROR, resp) << e.what(); } catch (const std::exception& e) { return DescriptionBuffer(UNEXPECTED, resp) << e.what(); @@ -449,13 +444,6 @@ StatusCode CNNNetworkNGraphImpl::getOVNameForTensor(std::string& ov_name, const return OK; } -StatusCode CNNNetworkNGraphImpl::getOVNameForOperation(std::string& ov_name, const std::string& orig_name, ResponseDesc* resp) const noexcept { - if (_opNames.find(orig_name) == _opNames.end()) - return DescriptionBuffer(NOT_FOUND, resp) << "Framework operation with name \"" << orig_name << "\" was not mapped to OpenVINO data!"; - ov_name = _opNames.at(orig_name); - return OK; -} - StatusCode CNNNetworkNGraphImpl::setBatchSize(size_t size, ResponseDesc* responseDesc) noexcept { try { if (getBatchSize() == size) return OK; diff --git a/inference-engine/src/inference_engine/cnn_network_ngraph_impl.hpp b/inference-engine/src/inference_engine/cnn_network_ngraph_impl.hpp index 7778ec8ae82424..9d0bc076dd7b89 100644 --- a/inference-engine/src/inference_engine/cnn_network_ngraph_impl.hpp +++ b/inference-engine/src/inference_engine/cnn_network_ngraph_impl.hpp @@ -36,12 +36,11 @@ namespace details { /** * @brief Ngraph-based implementation of the ICNNNetwork interface. */ -class INFERENCE_ENGINE_API_CLASS(CNNNetworkNGraphImpl): public ICNNNetwork { +class INFERENCE_ENGINE_API_CLASS(CNNNetworkNGraphImpl) final : public ICNNNetwork { public: CNNNetworkNGraphImpl(const std::shared_ptr<::ngraph::Function>& nGraph, const std::vector& exts = {}); CNNNetworkNGraphImpl(const CNNNetwork& nGraph); - ~CNNNetworkNGraphImpl() override = default; void getOutputsInfo(std::map& out) const noexcept override; @@ -63,10 +62,6 @@ class INFERENCE_ENGINE_API_CLASS(CNNNetworkNGraphImpl): public ICNNNetwork { void addOutput(const ::ngraph::Output<::ngraph::Node> & dataName); - void Release() noexcept override { - delete this; - } - std::shared_ptr getFunction() const noexcept override { return _ngraph_function; } @@ -84,8 +79,6 @@ class INFERENCE_ENGINE_API_CLASS(CNNNetworkNGraphImpl): public ICNNNetwork { StatusCode getOVNameForTensor(std::string& ov_name, const std::string& orig_name, ResponseDesc* resp) const noexcept override; - StatusCode getOVNameForOperation(std::string& ov_name, const std::string& orig_name, ResponseDesc* resp) const noexcept override; - // used by convertFunctionToICNNNetwork from legacy library std::map _data; protected: @@ -96,7 +89,6 @@ class INFERENCE_ENGINE_API_CLASS(CNNNetworkNGraphImpl): public ICNNNetwork { InferenceEngine::InputsDataMap _inputData; std::map _outputData; const std::vector _ie_extensions; - std::unordered_map _opNames; std::unordered_map _tensorNames; /** @@ -114,16 +106,5 @@ class INFERENCE_ENGINE_API_CLASS(CNNNetworkNGraphImpl): public ICNNNetwork { void reshape(); void reshape(const std::map>& inputShapes); }; - -class TINGraphBody : public CNNNetworkNGraphImpl { -public: - explicit TINGraphBody(const std::shared_ptr<::ngraph::Function>& func): CNNNetworkNGraphImpl(func) {} - -protected: - std::shared_ptr<::ngraph::Function> cloneFunction(bool constFolding) const override { - return _ngraph_function; - } -}; - } // namespace details } // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/compilation_context.cpp b/inference-engine/src/inference_engine/compilation_context.cpp new file mode 100644 index 00000000000000..1463dfc48be06a --- /dev/null +++ b/inference-engine/src/inference_engine/compilation_context.cpp @@ -0,0 +1,220 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "compilation_context.hpp" + +#include +#include + +#ifndef WIN32 +#include +#endif +#include + +#include "ie_itt.hpp" +#include "cpp_interfaces/exception2status.hpp" +#include "transformations/serialize.hpp" +#include "cpp/ie_cnn_network.h" +#include "details/ie_exception.hpp" + +#include "ngraph/variant.hpp" +#include "ngraph/opsets/opset6.hpp" +#include "transformations/rt_info/dequantization_attribute.hpp" +#include "transformations/rt_info/fused_names_attribute.hpp" +#include "transformations/rt_info/primitives_priority_attribute.hpp" +#include "file_utils.h" + +#ifdef WIN32 +#define stat _stat +#endif + +namespace InferenceEngine { + +template +static std::size_t hash_combine(std::size_t seed, const T& a) { + // Hash combine formula from boost + return seed ^ (std::hash()(a) + 0x9e3779b9 + (seed << 6) + (seed >> 2)); +} + +template +static int32_t as_int32_t(T v) { + return static_cast(v); +} + +class OstreamHashWrapper final: public std::streambuf { + std::size_t m_res = {}; +public: + std::size_t getResult() const { return m_res; } + std::streamsize xsputn(const char* s, std::streamsize n) override { + const std::int64_t* intS = (const std::int64_t *)s; + std::streamsize n64 = n / sizeof(std::int64_t); + std::streamsize i = 0; + // Using 64-bit values executes much faster than char + while (i++ < n64) { + m_res += *(intS++); + } + + std::streamsize rest = n % sizeof(std::int64_t); + for (i = 0; i < rest; i++) { + m_res += s[n - rest + i]; + } + return n; + } +}; + +////////////////////////////////////////////////// + +std::string NetworkCompilationContext::calculateFileInfo(const std::string& filePath) { + size_t seed {}; + auto absPath = filePath; + try { + absPath = FileUtils::absoluteFilePath(filePath); + } catch (...) { + // can't get absolute path, will use filePath for hash + } + + seed = hash_combine(seed, absPath); + + std::string res; + struct stat result; + if (stat(absPath.c_str(), &result) == 0) { + seed = hash_combine(seed, result.st_mtime); + seed = hash_combine(seed, result.st_size); + } + return std::to_string(seed); +} + +std::string NetworkCompilationContext::computeHash(const CNNNetwork& network, + const std::map& compileOptions) { + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "NetworkCompilationContext::computeHash - CNN"); + OstreamHashWrapper xmlHash; + OstreamHashWrapper binHash; + std::ostream xml(&xmlHash); + std::ostream bin(&binHash); + + IE_ASSERT(network.getFunction()); + + // 1. Serialize + CNNNetwork net(network); + ngraph::pass::Serialize serializer(xml, bin, + ngraph::pass::Serialize::Version::IR_V10); + serializer.run_on_function(net.getFunction()); + + // 2. Compute hash on serialized data and options + size_t seed {}; + seed = hash_combine(seed, xmlHash.getResult()); + seed = hash_combine(seed, binHash.getResult()); + + for (const auto& kvp : compileOptions) { + seed = hash_combine(seed, kvp.first + kvp.second); + } + + // 3. Add runtime information which may not be serialized + for (const auto& op : network.getFunction()->get_ordered_ops()) { + const auto& rt = op->get_rt_info(); + for (const auto& rtMapData : rt) { + seed = hash_combine(seed, rtMapData.first); + + if (auto stringData = std::dynamic_pointer_cast>(rtMapData.second)) { + seed = hash_combine(seed, stringData->get()); + } else if (auto intData = std::dynamic_pointer_cast>(rtMapData.second)) { + seed = hash_combine(seed, intData->get()); + } else if (auto deq = std::dynamic_pointer_cast>(rtMapData.second)) { + seed = hash_combine(seed, deq->get().getDequantizationAttr()); + } else if (auto fNames = std::dynamic_pointer_cast>(rtMapData.second)) { + seed = hash_combine(seed, fNames->get().getNames()); + } else if (auto prim = std::dynamic_pointer_cast>(rtMapData.second)) { + seed = hash_combine(seed, prim->get().getPrimitivesPriority()); + } + } + } + + // 4. Add inputs info + for (const auto& input : network.getInputsInfo()) { + InputInfo::Ptr info = input.second; + seed = hash_combine(seed, as_int32_t(info->getPrecision())); + seed = hash_combine(seed, as_int32_t(info->getLayout())); + + const InferenceEngine::PreProcessInfo& preproc = info->getPreProcess(); + seed = hash_combine(seed, as_int32_t(preproc.getMeanVariant())); + + if (preproc.getMeanVariant() == MeanVariant::MEAN_VALUE) { + seed = hash_combine(seed, preproc.getNumberOfChannels()); + for (size_t c = 0; c < preproc.getNumberOfChannels(); ++c) { + const PreProcessChannel::Ptr & channelInfo = preproc[c]; + seed = hash_combine(seed, channelInfo->stdScale); + seed = hash_combine(seed, channelInfo->meanValue); + } + } else if (preproc.getMeanVariant() == MeanVariant::MEAN_IMAGE) { + // TODO: think if we need to compute hash for mean image if it exists + } + } + + // 5. Add outputs info + for (const auto& output : network.getOutputsInfo()) { + DataPtr info = output.second; + seed = hash_combine(seed, as_int32_t(info->getPrecision())); + seed = hash_combine(seed, as_int32_t(info->getLayout())); + } + + return std::to_string(seed); +} + +std::string NetworkCompilationContext::computeHash(const std::string& modelName, + const std::map& compileOptions) { + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "NetworkCompilationContext::computeHash - ModelName"); + size_t seed {}; + try { + seed = hash_combine(seed, FileUtils::absoluteFilePath(modelName)); + } catch (...) { + // can't get absolute path, use modelName for hash calculation + seed = hash_combine(seed, modelName); + } + for (const auto& kvp : compileOptions) { + seed = hash_combine(seed, kvp.first + kvp.second); + } + return std::to_string(seed); +} + +////////////////////////////////////////////////// + +CompiledBlobHeader::CompiledBlobHeader() {} + +CompiledBlobHeader::CompiledBlobHeader(const std::string& ieVersion, const std::string& fileInfo) : + m_ieVersion(ieVersion), + m_fileInfo(fileInfo) { +} + +std::istream& operator >> (std::istream& stream, CompiledBlobHeader& header) { + std::string xmlStr; + std::getline(stream, xmlStr); + + pugi::xml_document document; + pugi::xml_parse_result res = document.load_string(xmlStr.c_str()); + + if (res.status != pugi::status_ok) { + IE_THROW(NetworkNotRead) << "Error reading compiled blob header"; + } + + pugi::xml_node compiledBlobNode = document.document_element(); + header.m_ieVersion = XMLParseUtils::GetStrAttr(compiledBlobNode, "ie_version"); + header.m_fileInfo = XMLParseUtils::GetStrAttr(compiledBlobNode, "file_info"); + + return stream; +} + +std::ostream& operator << (std::ostream& stream, const CompiledBlobHeader& header) { + pugi::xml_document document; + auto compiledBlobNode = document.append_child("compiled_blob"); + compiledBlobNode.append_attribute("ie_version").set_value(header.m_ieVersion.c_str()); + compiledBlobNode.append_attribute("file_info").set_value(header.m_fileInfo.c_str()); + + document.save(stream, nullptr, pugi::format_raw); + document.reset(); + stream << std::endl; + + return stream; +} + +} // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/compilation_context.hpp b/inference-engine/src/inference_engine/compilation_context.hpp new file mode 100644 index 00000000000000..53a78dae4e12b4 --- /dev/null +++ b/inference-engine/src/inference_engine/compilation_context.hpp @@ -0,0 +1,47 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace InferenceEngine { + +class CNNNetwork; + +struct NetworkCompilationContext final { + static std::string calculateFileInfo(const std::string& filePath); + + static std::string computeHash(const CNNNetwork& network, + const std::map& compileOptions); + + static std::string computeHash(const std::string& modelName, + const std::map& compileOptions); +}; + +class CompiledBlobHeader final { + std::string m_ieVersion; + std::string m_fileInfo; + +public: + CompiledBlobHeader(); + CompiledBlobHeader(const std::string& ieVersion, const std::string& fileInfo); + + const std::string& getIeVersion() const { + return m_ieVersion; + } + + const std::string& getFileInfo() const { + return m_fileInfo; + } + + friend std::istream & operator >> (std::istream& stream, CompiledBlobHeader& header); + + friend std::ostream & operator << (std::ostream& stream, const CompiledBlobHeader& header); +}; + +} // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/cpp/ie_cnn_network.cpp b/inference-engine/src/inference_engine/cpp/ie_cnn_network.cpp index 1c2ac1d3700bfc..13f09261a9f200 100644 --- a/inference-engine/src/inference_engine/cpp/ie_cnn_network.cpp +++ b/inference-engine/src/inference_engine/cpp/ie_cnn_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,8 +10,6 @@ namespace InferenceEngine { -ICNNNetwork::~ICNNNetwork() {} - CNNNetwork::CNNNetwork() : network(), actual(), output() { } @@ -19,7 +17,7 @@ CNNNetwork::CNNNetwork() : CNNNetwork::CNNNetwork(std::shared_ptr network) : network(network) { actual = network.get(); - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; } CNNNetwork::CNNNetwork(const std::shared_ptr& graph, @@ -27,38 +25,38 @@ CNNNetwork::CNNNetwork(const std::shared_ptr& graph, OV_ITT_SCOPED_TASK(itt::domains::IE, "CNNNetwork::CNNNetwork"); if (graph == nullptr) { - THROW_IE_EXCEPTION << "CNNNetwork was not initialized: 'graph' object is empty"; + IE_THROW() << "CNNNetwork was not initialized: 'graph' object is empty"; } // Create CNNNetworkNGraphImpl network = std::make_shared(graph, exts); actual = network.get(); if (actual == nullptr) { - THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + IE_THROW() << "CNNNetwork was not initialized."; } } OutputsDataMap CNNNetwork::getOutputsInfo() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; OutputsDataMap outputs; actual->getOutputsInfo(outputs); return outputs; } InputsDataMap CNNNetwork::getInputsInfo() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; InputsDataMap inputs; actual->getInputsInfo(inputs); return inputs; } size_t CNNNetwork::layerCount() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; return actual->layerCount(); } const std::string& CNNNetwork::getName() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; return actual->getName(); } @@ -67,7 +65,7 @@ void CNNNetwork::setBatchSize(const size_t size) { } size_t CNNNetwork::getBatchSize() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; return actual->getBatchSize(); } @@ -77,22 +75,22 @@ CNNNetwork::operator ICNNNetwork::Ptr() { } CNNNetwork::operator ICNNNetwork&() { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; return *actual; } CNNNetwork::operator const ICNNNetwork&() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; return *actual; } std::shared_ptr CNNNetwork::getFunction() { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; return actual->getFunction(); } std::shared_ptr CNNNetwork::getFunction() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; return actual->getFunction(); } @@ -101,7 +99,7 @@ void CNNNetwork::addOutput(const std::string& layerName, size_t outputIndex) { } ICNNNetwork::InputShapes CNNNetwork::getInputShapes() const { - if (actual == nullptr) THROW_IE_EXCEPTION << "CNNNetwork was not initialized."; + if (actual == nullptr) IE_THROW() << "CNNNetwork was not initialized."; ICNNNetwork::InputShapes shapes; InputsDataMap inputs; actual->getInputsInfo(inputs); diff --git a/inference-engine/src/inference_engine/cpp/ie_executable_network.cpp b/inference-engine/src/inference_engine/cpp/ie_executable_network.cpp new file mode 100644 index 00000000000000..7378fbb8a4fb4b --- /dev/null +++ b/inference-engine/src/inference_engine/cpp/ie_executable_network.cpp @@ -0,0 +1,120 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "cpp/ie_executable_network.hpp" +#include "ie_common.h" + +namespace InferenceEngine { + +ExecutableNetwork::ExecutableNetwork(IExecutableNetwork::Ptr actual_, details::SharedObjectLoader::Ptr plg) + : actual(actual_), plg(plg) { + // plg can be null, but not the actual + if (actual == nullptr) { + IE_THROW() << "ExecutableNetwork wrapper was not initialized."; + } +} + +ExecutableNetwork::~ExecutableNetwork() { + actual = {}; +} + +ConstOutputsDataMap ExecutableNetwork::GetOutputsInfo() const { + ConstOutputsDataMap data; + CALL_STATUS_FNC(GetOutputsInfo, data); + return data; +} + +ConstInputsDataMap ExecutableNetwork::GetInputsInfo() const { + ConstInputsDataMap info; + CALL_STATUS_FNC(GetInputsInfo, info); + return info; +} + +void ExecutableNetwork::reset(IExecutableNetwork::Ptr newActual) { + if (actual == nullptr) { + IE_THROW() << "ExecutableNetwork wrapper was not initialized."; + } + if (newActual == nullptr) { + IE_THROW() << "ExecutableNetwork wrapper used for reset was not initialized."; + } + this->actual.swap(newActual); +} + +InferRequest ExecutableNetwork::CreateInferRequest() { + IInferRequest::Ptr req; + CALL_STATUS_FNC(CreateInferRequest, req); + if (req.get() == nullptr) IE_THROW() << "Internal error: pointer to infer request is null"; + return InferRequest(req, plg); +} + +InferRequest::Ptr ExecutableNetwork::CreateInferRequestPtr() { + IInferRequest::Ptr req; + CALL_STATUS_FNC(CreateInferRequest, req); + return std::make_shared(req, plg); +} + +void ExecutableNetwork::Export(const std::string& modelFileName) { + CALL_STATUS_FNC(Export, modelFileName); +} + +void ExecutableNetwork::Export(std::ostream& networkModel) { + CALL_STATUS_FNC(Export, networkModel); +} + +ExecutableNetwork::operator IExecutableNetwork::Ptr&() { + return actual; +} + +CNNNetwork ExecutableNetwork::GetExecGraphInfo() { + IE_SUPPRESS_DEPRECATED_START + ICNNNetwork::Ptr ptr = nullptr; + CALL_STATUS_FNC(GetExecGraphInfo, ptr); + return CNNNetwork(ptr); + IE_SUPPRESS_DEPRECATED_END +} + + +std::vector ExecutableNetwork::QueryState() { + if (actual == nullptr) IE_THROW() << "ExecutableNetwork was not initialized."; + IVariableState::Ptr pState = nullptr; + auto res = OK; + std::vector controller; + for (size_t idx = 0; res == OK; ++idx) { + ResponseDesc resp; + IE_SUPPRESS_DEPRECATED_START + res = actual->QueryState(pState, idx, &resp); + IE_SUPPRESS_DEPRECATED_END + if (res != OK && res != OUT_OF_BOUNDS) { + IE_THROW() << resp.msg; + } + if (res != OUT_OF_BOUNDS) { + controller.push_back(VariableState(pState, plg)); + } + } + + return controller; +} + +void ExecutableNetwork::SetConfig(const std::map& config) { + CALL_STATUS_FNC(SetConfig, config); +} + +Parameter ExecutableNetwork::GetConfig(const std::string& name) const { + Parameter configValue; + CALL_STATUS_FNC(GetConfig, name, configValue); + return configValue; +} + +Parameter ExecutableNetwork::GetMetric(const std::string& name) const { + Parameter metricValue; + CALL_STATUS_FNC(GetMetric, name, metricValue); + return metricValue; +} + +RemoteContext::Ptr ExecutableNetwork::GetContext() const { + RemoteContext::Ptr pContext; + CALL_STATUS_FNC(GetContext, pContext); + return pContext; +} +} // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/cpp/ie_variable_state.cpp b/inference-engine/src/inference_engine/cpp/ie_variable_state.cpp index 6c14d84ac68f9a..434d91eb259cf3 100644 --- a/inference-engine/src/inference_engine/cpp/ie_variable_state.cpp +++ b/inference-engine/src/inference_engine/cpp/ie_variable_state.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include "ie_imemory_state.hpp" #include "cpp/ie_memory_state.hpp" @@ -12,7 +11,7 @@ IE_SUPPRESS_DEPRECATED_START VariableState::VariableState(IVariableState::Ptr pState, details::SharedObjectLoader::Ptr plg) : actual(pState), plugin(plg) { if (actual == nullptr) { - THROW_IE_EXCEPTION << "VariableState wrapper was not initialized."; + IE_THROW() << "VariableState wrapper was not initialized."; } } diff --git a/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.cpp b/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.cpp index 3017d2db7f4edc..350fe6839b59f0 100644 --- a/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.cpp +++ b/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.hpp b/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.hpp index 6b89c6e5735512..cf5a9807a67869 100644 --- a/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.hpp +++ b/inference-engine/src/inference_engine/cpu_x86_sse42/blob_transform_sse42.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/file_utils.cpp b/inference-engine/src/inference_engine/file_utils.cpp index 15898395770d99..c13403ec9cb79f 100644 --- a/inference-engine/src/inference_engine/file_utils.cpp +++ b/inference-engine/src/inference_engine/file_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,8 +12,9 @@ #endif #include -#include
- +#include +#include +#include "ie_common.h" #ifndef _WIN32 # include # include @@ -32,6 +33,38 @@ # include #endif +#ifdef _WIN32 + +#include + +// Copied from linux libc sys/stat.h: +# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) + +/// @brief Windows-specific 'mkdir' wrapper +#define makedir(dir) _mkdir(dir) + +/// @brief Max length of absolute file path +#define MAX_ABS_PATH _MAX_PATH +/// @brief Get absolute file path, returns NULL in case of error +#define get_absolute_path(result, path) _fullpath(result, path.c_str(), MAX_ABS_PATH) + +/// @brief Windows-specific 'stat' wrapper +#define stat _stat + +#else + +#include + +/// @brief mkdir wrapper +#define makedir(dir) mkdir(dir, 0755) + +/// @brief Max length of absolute file path +#define MAX_ABS_PATH PATH_MAX +/// @brief Get absolute file path, returns NULL in case of error +#define get_absolute_path(result, path) realpath(path.c_str(), result) + +#endif + #ifdef ENABLE_UNICODE_PATH_SUPPORT std::string FileUtils::wStringtoMBCSstringChar(const std::wstring& wstr) { @@ -73,6 +106,44 @@ long long FileUtils::fileSize(const char* charfilepath) { return in.tellg(); } +std::string FileUtils::absoluteFilePath(const std::string& filePath) { + std::string absolutePath; + absolutePath.resize(MAX_ABS_PATH); + auto absPath = get_absolute_path(&absolutePath[0], filePath); + if (!absPath) { + IE_THROW() << "Can't get absolute file path for [" << filePath << "], err = " << strerror(errno); + } + absolutePath.resize(strlen(absPath)); + return absolutePath; +} + +bool FileUtils::directoryExists(const std::string &path) { + struct stat sb; + + if (stat(path.c_str(), &sb) == 0 && S_ISDIR(sb.st_mode)) { + return true; + } + return false; +} + +void FileUtils::createDirectoryRecursive(const std::string& dirPath) { + if (dirPath.empty() || directoryExists(dirPath)) { + return; + } + + std::size_t pos = dirPath.rfind(FileUtils::FileSeparator); + if (pos != std::string::npos) { + createDirectoryRecursive(dirPath.substr(0, pos)); + } + + int err = makedir(dirPath.c_str()); + if (err != 0 && errno != EEXIST) { + // TODO: in case of exception it may be needed to remove all created sub-directories + IE_THROW() << "Couldn't create directory [" + << dirPath << "], err=" << strerror(errno) << ")"; + } +} + namespace InferenceEngine { namespace { @@ -95,7 +166,7 @@ static std::string getIELibraryPathA() { HMODULE hm = NULL; if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, reinterpret_cast(getIELibraryPath), &hm)) { - THROW_IE_EXCEPTION << "GetModuleHandle returned " << GetLastError(); + IE_THROW() << "GetModuleHandle returned " << GetLastError(); } GetModuleFileNameA(hm, (LPSTR)ie_library_path, sizeof(ie_library_path)); return getPathName(std::string(ie_library_path)); @@ -129,7 +200,7 @@ std::wstring getIELibraryPathW() { HMODULE hm = NULL; if (!GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, reinterpret_cast(getIELibraryPath), &hm)) { - THROW_IE_EXCEPTION << "GetModuleHandle returned " << GetLastError(); + IE_THROW() << "GetModuleHandle returned " << GetLastError(); } GetModuleFileNameW(hm, (LPWSTR)ie_library_path, sizeof(ie_library_path) / sizeof(ie_library_path[0])); return getPathName(std::wstring(ie_library_path)); diff --git a/inference-engine/src/inference_engine/ie_blob_common.cpp b/inference-engine/src/inference_engine/ie_blob_common.cpp index 876b4ec9642db8..70554bbd12cda3 100644 --- a/inference-engine/src/inference_engine/ie_blob_common.cpp +++ b/inference-engine/src/inference_engine/ie_blob_common.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,7 +11,7 @@ namespace InferenceEngine { Blob::Ptr Blob::createROI(const ROI&) const { - THROW_IE_EXCEPTION << "[NOT_IMPLEMENTED] createROI is not implemented for current type of Blob"; + IE_THROW(NotImplemented) << "createROI is not implemented for current type of Blob"; } Blob::Ptr make_shared_blob(const Blob::Ptr& inputBlob, const ROI& roi) { diff --git a/inference-engine/src/inference_engine/ie_cache_manager.hpp b/inference-engine/src/inference_engine/ie_cache_manager.hpp new file mode 100644 index 00000000000000..2b5718d73e5d8a --- /dev/null +++ b/inference-engine/src/inference_engine/ie_cache_manager.hpp @@ -0,0 +1,121 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief This is a header file for the Inference Engine Cache Manager class C++ API + * + * @file ie_cache_manager.hpp + */ +#pragma once + +#include +#include +#include +#include +#include "ie_api.h" +#include "file_utils.h" + +namespace InferenceEngine { + +/** + * @brief This class represents private interface for Cache Manager + * + */ +class ICacheManager { +public: + /** + * @brief Default destructor + */ + virtual ~ICacheManager() = default; + + /** + * @brief Function passing created output stream + * + */ + using StreamWriter = std::function; + /** + * @brief Callback when Inference Engine intends to write network to cache + * + * Client needs to call create std::ostream object and call writer(ostream) + * Otherwise, network will not be cached + * + * @param id Id of cache (hash of the network) + * @param writer Lambda function to be called when stream is created + */ + virtual void writeCacheEntry(const std::string& id, StreamWriter writer) = 0; + + /** + * @brief Function passing created input stream + * + */ + using StreamReader = std::function; + /** + * @brief Callback when Inference Engine intends to read network from cache + * + * Client needs to call create std::istream object and call reader(istream) + * Otherwise, network will not be read from cache and will be loaded as usual + * + * @param id Id of cache (hash of the network) + * @param reader Lambda function to be called when input stream is created + */ + virtual void readCacheEntry(const std::string& id, StreamReader reader) = 0; + + /** + * @brief Callback when Inference Engine intends to remove cache entry + * + * Client needs to perform appropriate cleanup (e.g. delete a cache file) + * + * @param id Id of cache (hash of the network) + */ + virtual void removeCacheEntry(const std::string& id) = 0; +}; + +/** + * @brief File storage-based Implementation of ICacheManager + * + * Uses simple file for read/write cached models. + * + */ +class FileStorageCacheManager final : public ICacheManager { + std::string m_cachePath; + + std::string getBlobFile(const std::string& blobHash) const { + return FileUtils::makePath(m_cachePath, blobHash + ".blob"); + } + +public: + /** + * @brief Constructor + * + */ + FileStorageCacheManager(std::string&& cachePath) : m_cachePath(std::move(cachePath)) {} + + /** + * @brief Destructor + * + */ + ~FileStorageCacheManager() override = default; + +private: + void writeCacheEntry(const std::string& id, StreamWriter writer) override { + std::ofstream stream(getBlobFile(id), std::ios_base::binary | std::ofstream::out); + writer(stream); + } + + void readCacheEntry(const std::string& id, StreamReader reader) override { + auto blobFileName = getBlobFile(id); + if (FileUtils::fileExist(blobFileName)) { + std::ifstream stream(blobFileName, std::ios_base::binary); + reader(stream); + } + } + + void removeCacheEntry(const std::string& id) override { + auto blobFileName = getBlobFile(id); + if (FileUtils::fileExist(blobFileName)) + std::remove(blobFileName.c_str()); + } +}; + +} // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/ie_common.cpp b/inference-engine/src/inference_engine/ie_common.cpp new file mode 100644 index 00000000000000..9fb105c0fd8720 --- /dev/null +++ b/inference-engine/src/inference_engine/ie_common.cpp @@ -0,0 +1,147 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace ExecGraphInfoSerialization { +// +// exec_graph_info.hpp +// +constexpr ngraph::NodeTypeInfo ExecutionNode::type_info; + +const ngraph::NodeTypeInfo& ExecutionNode::get_type_info() const { + return type_info; +} +} // namespace ExecGraphInfoSerialization + +namespace InferenceEngine { +// +// ie_blob.h +// + +Blob::~Blob() {} +MemoryBlob::~MemoryBlob() {} + +// +// ie_iextension.h +// +ILayerImpl::~ILayerImpl() {} +ILayerExecImpl::~ILayerExecImpl() {} +std::map IExtension::getOpSets() { + return {}; +} + +// +// ie_extension.h +// +std::map Extension::getOpSets() { + return actual->getOpSets(); +} +namespace details { +IE_SUPPRESS_DEPRECATED_START + +StatusCode InferenceEngineException::getStatus() const { + return ExceptionToStatus(dynamic_cast(*this)); +} +} // namespace details +IE_SUPPRESS_DEPRECATED_END + +INFERENCE_ENGINE_API_CPP(StatusCode) ExceptionToStatus(const Exception& exception) { + if (dynamic_cast(&exception) != nullptr) { + return GENERAL_ERROR; + } else if (dynamic_cast(&exception) != nullptr) { + return NOT_IMPLEMENTED; + } else if (dynamic_cast(&exception) != nullptr) { + return NETWORK_NOT_LOADED; + } else if (dynamic_cast(&exception) != nullptr) { + return PARAMETER_MISMATCH; + } else if (dynamic_cast(&exception) != nullptr) { + return NOT_FOUND; + } else if (dynamic_cast(&exception) != nullptr) { + return OUT_OF_BOUNDS; + } else if (dynamic_cast(&exception) != nullptr) { + return UNEXPECTED; + } else if (dynamic_cast(&exception) != nullptr) { + return REQUEST_BUSY; + } else if (dynamic_cast(&exception) != nullptr) { + return RESULT_NOT_READY; + } else if (dynamic_cast(&exception) != nullptr) { + return NOT_ALLOCATED; + } else if (dynamic_cast(&exception) != nullptr) { + return INFER_NOT_STARTED; + } else if (dynamic_cast(&exception) != nullptr) { + return NETWORK_NOT_READ; + } else if (dynamic_cast(&exception) != nullptr) { + return INFER_CANCELLED; + } else { + assert(!"Unreachable"); return OK; + } +} + +// +// ie_parameter.hpp +// + +Parameter::~Parameter() { + clear(); +} + +#ifdef __ANDROID__ +Parameter::Any::~Any() {} + +template struct Parameter::RealData; +template struct Parameter::RealData; +template struct Parameter::RealData; +template struct Parameter::RealData; +template struct Parameter::RealData; +template struct Parameter::RealData; +template struct Parameter::RealData; +template struct Parameter::RealData>; +template struct Parameter::RealData>; +template struct Parameter::RealData>; +template struct Parameter::RealData>; +template struct Parameter::RealData>; +template struct Parameter::RealData; +#endif + +// +// ie_blob.h +// + +template +TBlob::~TBlob() { + free(); +} + +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; +template class TBlob; + +} // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/ie_compound_blob.cpp b/inference-engine/src/inference_engine/ie_compound_blob.cpp index b8f71250ecf933..0029d85cd80237 100644 --- a/inference-engine/src/inference_engine/ie_compound_blob.cpp +++ b/inference-engine/src/inference_engine/ie_compound_blob.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,12 +21,12 @@ namespace { TensorDesc verifyNV12BlobInput(const Blob::Ptr& y, const Blob::Ptr& uv) { // Y and UV must be valid pointers if (y == nullptr || uv == nullptr) { - THROW_IE_EXCEPTION << "Y and UV planes must be valid Blob objects"; + IE_THROW() << "Y and UV planes must be valid Blob objects"; } // both Y and UV must be MemoryBlob objects if (!y->is() || !uv->is()) { - THROW_IE_EXCEPTION << "Y and UV planes must be MemoryBlob objects"; + IE_THROW() << "Y and UV planes must be MemoryBlob objects"; } // NOTE: having Blob::Ptr (shared_ptr) and checking Blob::is() status above ensures that the @@ -35,7 +35,7 @@ TensorDesc verifyNV12BlobInput(const Blob::Ptr& y, const Blob::Ptr& uv) { auto uvMemoryBlob = uv->as(); // check Blob element size if (yMemoryBlob->element_size() != uvMemoryBlob->element_size()) { - THROW_IE_EXCEPTION << "Y and UV planes have different element sizes: " << yMemoryBlob->element_size() + IE_THROW() << "Y and UV planes have different element sizes: " << yMemoryBlob->element_size() << " != " << uvMemoryBlob->element_size(); } @@ -45,50 +45,50 @@ TensorDesc verifyNV12BlobInput(const Blob::Ptr& y, const Blob::Ptr& uv) { // check precision if (yDesc.getPrecision() != Precision::U8) { - THROW_IE_EXCEPTION << "Y plane precision must be U8, actual: " << yDesc.getPrecision(); + IE_THROW() << "Y plane precision must be U8, actual: " << yDesc.getPrecision(); } if (uvDesc.getPrecision() != Precision::U8) { - THROW_IE_EXCEPTION << "UV plane precision must be U8, actual: " << uvDesc.getPrecision(); + IE_THROW() << "UV plane precision must be U8, actual: " << uvDesc.getPrecision(); } // check layout if (yDesc.getLayout() != Layout::NHWC) { - THROW_IE_EXCEPTION << "Y plane layout must be NHWC, actual: " << yDesc.getLayout(); + IE_THROW() << "Y plane layout must be NHWC, actual: " << yDesc.getLayout(); } if (uvDesc.getLayout() != Layout::NHWC) { - THROW_IE_EXCEPTION << "UV plane layout must be NHWC, actual: " << uvDesc.getLayout(); + IE_THROW() << "UV plane layout must be NHWC, actual: " << uvDesc.getLayout(); } // check dimensions const auto& yDims = yDesc.getDims(); const auto& uvDims = uvDesc.getDims(); if (yDims.size() != 4 || uvDims.size() != 4) { - THROW_IE_EXCEPTION << "Y and UV planes dimension sizes must be 4, actual: " << yDims.size() << "(Y plane) and " + IE_THROW() << "Y and UV planes dimension sizes must be 4, actual: " << yDims.size() << "(Y plane) and " << uvDims.size() << "(UV plane)"; } // check batch size if (yDims[0] != uvDims[0]) { - THROW_IE_EXCEPTION << "Y and UV planes must have the same batch size"; + IE_THROW() << "Y and UV planes must have the same batch size"; } // check number of channels if (yDims[1] != 1) { - THROW_IE_EXCEPTION << "Y plane must have 1 channel, actual: " << yDims[1]; + IE_THROW() << "Y plane must have 1 channel, actual: " << yDims[1]; } if (uvDims[1] != 2) { - THROW_IE_EXCEPTION << "UV plane must have 2 channels, actual: " << uvDims[1]; + IE_THROW() << "UV plane must have 2 channels, actual: " << uvDims[1]; } // check height if (yDims[2] != 2 * uvDims[2]) { - THROW_IE_EXCEPTION << "The height of the Y plane must be equal to (2 * the height of the UV plane), actual: " + IE_THROW() << "The height of the Y plane must be equal to (2 * the height of the UV plane), actual: " << yDims[2] << "(Y plane) and " << uvDims[2] << "(UV plane)"; } // check width if (yDims[3] != 2 * uvDims[3]) { - THROW_IE_EXCEPTION << "The width of the Y plane must be equal to (2 * the width of the UV plane), actual: " + IE_THROW() << "The width of the Y plane must be equal to (2 * the width of the UV plane), actual: " << yDims[3] << "(Y plane) and " << uvDims[3] << "(UV plane)"; } @@ -98,12 +98,12 @@ TensorDesc verifyNV12BlobInput(const Blob::Ptr& y, const Blob::Ptr& uv) { TensorDesc verifyI420BlobInput(const Blob::Ptr& y, const Blob::Ptr& u, const Blob::Ptr& v) { // Y and UV must be valid pointers if (y == nullptr || u == nullptr || v == nullptr) { - THROW_IE_EXCEPTION << "Y, U and V planes must be valid Blob objects"; + IE_THROW() << "Y, U and V planes must be valid Blob objects"; } // both Y and UV must be MemoryBlob objects if (!y->is() || !u->is() || !v->is()) { - THROW_IE_EXCEPTION << "Y, U and V planes must be MemoryBlob objects"; + IE_THROW() << "Y, U and V planes must be MemoryBlob objects"; } // NOTE: having Blob::Ptr (shared_ptr) and checking Blob::is() status above ensures that the @@ -113,7 +113,7 @@ TensorDesc verifyI420BlobInput(const Blob::Ptr& y, const Blob::Ptr& u, const Blo auto vMemoryBlob = v->as(); // check Blob element size if (yMemoryBlob->element_size() != uMemoryBlob->element_size() || yMemoryBlob->element_size() != vMemoryBlob->element_size()) { - THROW_IE_EXCEPTION << "Y and UV planes have different element sizes: " << yMemoryBlob->element_size() + IE_THROW() << "Y and UV planes have different element sizes: " << yMemoryBlob->element_size() << " != " << uMemoryBlob->element_size() << " != " << vMemoryBlob->element_size(); } @@ -125,24 +125,24 @@ TensorDesc verifyI420BlobInput(const Blob::Ptr& y, const Blob::Ptr& u, const Blo // check precision if (yDesc.getPrecision() != Precision::U8) { - THROW_IE_EXCEPTION << "Y plane precision must be U8, actual: " << yDesc.getPrecision(); + IE_THROW() << "Y plane precision must be U8, actual: " << yDesc.getPrecision(); } if (uDesc.getPrecision() != Precision::U8) { - THROW_IE_EXCEPTION << "U plane precision must be U8, actual: " << uDesc.getPrecision(); + IE_THROW() << "U plane precision must be U8, actual: " << uDesc.getPrecision(); } if (vDesc.getPrecision() != Precision::U8) { - THROW_IE_EXCEPTION << "V plane precision must be U8, actual: " << vDesc.getPrecision(); + IE_THROW() << "V plane precision must be U8, actual: " << vDesc.getPrecision(); } // check layout if (yDesc.getLayout() != Layout::NHWC) { - THROW_IE_EXCEPTION << "Y plane layout must be NHWC, actual: " << yDesc.getLayout(); + IE_THROW() << "Y plane layout must be NHWC, actual: " << yDesc.getLayout(); } if (uDesc.getLayout() != Layout::NHWC) { - THROW_IE_EXCEPTION << "U plane layout must be NHWC, actual: " << uDesc.getLayout(); + IE_THROW() << "U plane layout must be NHWC, actual: " << uDesc.getLayout(); } if (uDesc.getLayout() != Layout::NHWC) { - THROW_IE_EXCEPTION << "V plane layout must be NHWC, actual: " << vDesc.getLayout(); + IE_THROW() << "V plane layout must be NHWC, actual: " << vDesc.getLayout(); } // check dimensions @@ -151,45 +151,45 @@ TensorDesc verifyI420BlobInput(const Blob::Ptr& y, const Blob::Ptr& u, const Blo const auto& vDims = vDesc.getDims(); if (yDims.size() != 4 || uDims.size() != 4 || vDims.size() != 4) { - THROW_IE_EXCEPTION << "Y,U and V planes dimension sizes must be 4, actual: " << yDims.size() << "(Y plane) and " + IE_THROW() << "Y,U and V planes dimension sizes must be 4, actual: " << yDims.size() << "(Y plane) and " << uDims.size() << "(U plane) " << vDims.size() << "(V plane)"; } // check batch size if (yDims[0] != uDims[0] || yDims[0] != vDims[0]) { - THROW_IE_EXCEPTION << "Y, U and U planes must have the same batch size"; + IE_THROW() << "Y, U and U planes must have the same batch size"; } // check number of channels if (yDims[1] != 1) { - THROW_IE_EXCEPTION << "Y plane must have 1 channel, actual: " << yDims[1]; + IE_THROW() << "Y plane must have 1 channel, actual: " << yDims[1]; } if (uDims[1] != 1) { - THROW_IE_EXCEPTION << "U plane must have 1 channel, actual: " << uDims[1]; + IE_THROW() << "U plane must have 1 channel, actual: " << uDims[1]; } if (vDims[1] != 1) { - THROW_IE_EXCEPTION << "V plane must have 1 channel, actual: " << vDims[1]; + IE_THROW() << "V plane must have 1 channel, actual: " << vDims[1]; } // check height if (yDims[2] != 2 * uDims[2]) { - THROW_IE_EXCEPTION << "The height of the Y plane must be equal to (2 * the height of the U plane), actual: " + IE_THROW() << "The height of the Y plane must be equal to (2 * the height of the U plane), actual: " << yDims[2] << "(Y plane) and " << uDims[2] << "(U plane)"; } if (yDims[2] != 2 * vDims[2]) { - THROW_IE_EXCEPTION << "The height of the Y plane must be equal to (2 * the height of the UV plane), actual: " + IE_THROW() << "The height of the Y plane must be equal to (2 * the height of the UV plane), actual: " << yDims[2] << "(Y plane) and " << vDims[2] << "(V plane)"; } // check width if (yDims[3] != 2 * uDims[3]) { - THROW_IE_EXCEPTION << "The width of the Y plane must be equal to (2 * the width of the UV plane), actual: " + IE_THROW() << "The width of the Y plane must be equal to (2 * the width of the UV plane), actual: " << yDims[3] << "(Y plane) and " << uDims[3] << "(U plane)"; } if (yDims[3] != 2 * vDims[3]) { - THROW_IE_EXCEPTION << "The width of the Y plane must be equal to (2 * the width of the UV plane), actual: " + IE_THROW() << "The width of the Y plane must be equal to (2 * the width of the UV plane), actual: " << yDims[3] << "(Y plane) and " << vDims[3] << "(V plane)"; } @@ -215,14 +215,14 @@ TensorDesc getBlobTensorDesc(const Blob::Ptr& blob) { TensorDesc verifyBatchedBlobInput(const std::vector& blobs) { // verify invariants if (blobs.empty()) { - THROW_IE_EXCEPTION << "BatchedBlob cannot be created from empty vector of Blob, Please, make sure vector contains at least one Blob"; + IE_THROW() << "BatchedBlob cannot be created from empty vector of Blob, Please, make sure vector contains at least one Blob"; } // Cannot create a compound blob from nullptr Blob objects if (std::any_of(blobs.begin(), blobs.end(), [](const Blob::Ptr& blob) { return blob == nullptr; })) { - THROW_IE_EXCEPTION << "Cannot create a compound blob from nullptr Blob objects"; + IE_THROW() << "Cannot create a compound blob from nullptr Blob objects"; } const auto subBlobDesc = getBlobTensorDesc(blobs[0]); @@ -231,7 +231,7 @@ TensorDesc verifyBatchedBlobInput(const std::vector& blobs) { [&subBlobDesc](const Blob::Ptr& blob) { return getBlobTensorDesc(blob) != subBlobDesc; })) { - THROW_IE_EXCEPTION << "All blobs tensors should be equal"; + IE_THROW() << "All blobs tensors should be equal"; } auto subBlobLayout = subBlobDesc.getLayout(); @@ -247,7 +247,7 @@ TensorDesc verifyBatchedBlobInput(const std::vector& blobs) { case CN: blobLayout = subBlobLayout; if (blobDims[0] != 1) { - THROW_IE_EXCEPTION << "All blobs should be batch 1"; + IE_THROW() << "All blobs should be batch 1"; } blobDims[0] = blobs.size(); break; @@ -264,7 +264,7 @@ TensorDesc verifyBatchedBlobInput(const std::vector& blobs) { blobDims.insert(blobDims.begin(), blobs.size()); break; default: - THROW_IE_EXCEPTION << "Unsupported sub-blobs layout - to be one of: [NCHW, NHWC, NCDHW, NDHWC, NC, CN, C, CHW]"; + IE_THROW() << "Unsupported sub-blobs layout - to be one of: [NCHW, NHWC, NCDHW, NDHWC, NC, CN, C, CHW]"; } return TensorDesc{subBlobDesc.getPrecision(), blobDims, blobLayout}; @@ -279,7 +279,7 @@ CompoundBlob::CompoundBlob(const std::vector& blobs): CompoundBlob(Te if (std::any_of(blobs.begin(), blobs.end(), [](const Blob::Ptr& blob) { return blob == nullptr; })) { - THROW_IE_EXCEPTION << "Cannot create a compound blob from nullptr Blob objects"; + IE_THROW() << "Cannot create a compound blob from nullptr Blob objects"; } // Check that none of the blobs provided is compound. If at least one of them is compound, throw @@ -287,7 +287,7 @@ CompoundBlob::CompoundBlob(const std::vector& blobs): CompoundBlob(Te if (std::any_of(blobs.begin(), blobs.end(), [](const Blob::Ptr& blob) { return blob->is(); })) { - THROW_IE_EXCEPTION << "Cannot create a compound blob from other compound blobs"; + IE_THROW() << "Cannot create a compound blob from other compound blobs"; } this->_blobs = blobs; @@ -298,7 +298,7 @@ CompoundBlob::CompoundBlob(std::vector&& blobs): CompoundBlob(TensorD if (std::any_of(blobs.begin(), blobs.end(), [](const Blob::Ptr& blob) { return blob == nullptr; })) { - THROW_IE_EXCEPTION << "Cannot create a compound blob from nullptr Blob objects"; + IE_THROW() << "Cannot create a compound blob from nullptr Blob objects"; } // Check that none of the blobs provided is compound. If at least one of them is compound, throw @@ -306,7 +306,7 @@ CompoundBlob::CompoundBlob(std::vector&& blobs): CompoundBlob(TensorD if (std::any_of(blobs.begin(), blobs.end(), [](const Blob::Ptr& blob) { return blob->is(); })) { - THROW_IE_EXCEPTION << "Cannot create a compound blob from other compound blobs"; + IE_THROW() << "Cannot create a compound blob from other compound blobs"; } this->_blobs = std::move(blobs); diff --git a/inference-engine/src/inference_engine/ie_core.cpp b/inference-engine/src/inference_engine/ie_core.cpp index b5bb82116cb82b..2118e6aaca8d63 100644 --- a/inference-engine/src/inference_engine/ie_core.cpp +++ b/inference-engine/src/inference_engine/ie_core.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,8 +6,8 @@ #include #include #include -#include #include +#include #include #include @@ -15,16 +15,21 @@ #include #include #include +#include #include +#include "compilation_context.hpp" #include "ie_plugin_cpp.hpp" #include "ie_plugin_config.hpp" +#include "ie_cache_manager.hpp" #include "ie_itt.hpp" #include "file_utils.h" #include "ie_network_reader.hpp" #include "xml_parse_utils.h" +#include "cpp_interfaces/interface/ie_internal_plugin_config.hpp" using namespace InferenceEngine::PluginConfigParams; +using namespace std::placeholders; namespace InferenceEngine { @@ -90,7 +95,7 @@ template void allowNotImplemented(F && f) { try { f(); - } catch (const NotImplemented & ex) { } + } catch (const NotImplemented&) { } } } // namespace @@ -158,6 +163,41 @@ class Core::Impl : public ICore { mutable std::map plugins; + class CoreConfig final { + public: + struct CacheConfig { + std::shared_ptr _cacheManager; + }; + + void setAndUpdate(std::map& config) { + auto it = config.find(CONFIG_KEY(CACHE_DIR)); + if (it != config.end()) { + std::lock_guard lock(_cacheConfigMutex); + if (!it->second.empty()) { + FileUtils::createDirectoryRecursive(it->second); + _cacheConfig._cacheManager = std::make_shared(std::move(it->second)); + } else { + _cacheConfig._cacheManager = nullptr; + } + + config.erase(it); + } + } + + // Creating thread-safe copy of config including shared_ptr to ICacheManager + CacheConfig getCacheConfig() const { + std::lock_guard lock(_cacheConfigMutex); + return _cacheConfig; + } + + private: + mutable std::mutex _cacheConfigMutex; + CacheConfig _cacheConfig; + }; + + // Core settings (cache config, etc) + CoreConfig coreConfig; + struct PluginDescriptor { FileUtils::FilePath libraryLocation; std::map defaultConfig; @@ -166,13 +206,154 @@ class Core::Impl : public ICore { std::unordered_set opsetNames; std::vector extensions; + ngraph::frontend::FrontEndManager frontEndManager; std::map pluginRegistry; mutable std::mutex pluginsMutex; // to lock parallel access to pluginRegistry and plugins + bool DeviceSupportsImportExport(const InferencePlugin& plugin) const { + std::vector supportedMetricKeys = plugin.GetMetric(METRIC_KEY(SUPPORTED_METRICS), {}); + auto it = std::find(supportedMetricKeys.begin(), supportedMetricKeys.end(), + METRIC_KEY(IMPORT_EXPORT_SUPPORT)); + bool supported = (it != supportedMetricKeys.end()) && + plugin.GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), {}); + return supported; + } + + ExecutableNetwork LoadNetworkImpl(const CNNNetwork& network, + InferencePlugin& plugin, + const std::map& parsedConfig, + const RemoteContext::Ptr& context, + const std::string& blobID, + const std::string& modelPath = std::string(), + bool forceDisableCache = false) { + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "Core::Impl::LoadNetworkImpl"); + ExecutableNetwork execNetwork; + execNetwork = context ? plugin.LoadNetwork(network, context, parsedConfig) : + plugin.LoadNetwork(network, parsedConfig); + auto cacheManager = coreConfig.getCacheConfig()._cacheManager; + if (!forceDisableCache && cacheManager && DeviceSupportsImportExport(plugin)) { + try { + // need to export network for further import from "cache" + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "Core::LoadNetwork::Export"); + cacheManager->writeCacheEntry(blobID, [&](std::ostream& networkStream) { + networkStream << CompiledBlobHeader(GetInferenceEngineVersion()->buildNumber, + NetworkCompilationContext::calculateFileInfo(modelPath)); + execNetwork.Export(networkStream); + }); + } catch (...) { + cacheManager->removeCacheEntry(blobID); + throw; + } + } + return execNetwork; + } + + ExecutableNetwork LoadNetworkFromCache(const std::shared_ptr& cacheManager, + const std::string& blobId, + InferencePlugin& plugin, + const std::map& config, + const RemoteContext::Ptr& context, + bool& networkIsImported, + const std::string& modelPath = std::string()) { + ExecutableNetwork execNetwork; + struct HeaderException {}; + + IE_ASSERT(cacheManager != nullptr); + try { + cacheManager->readCacheEntry(blobId, [&](std::istream &networkStream) { + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "Core::LoadNetworkFromCache::ReadStreamAndImport"); + try { + CompiledBlobHeader header; + networkStream >> header; + if (header.getIeVersion() != GetInferenceEngineVersion()->buildNumber) { + // Build number mismatch, don't use this cache + throw NetworkNotRead("Version does not match"); + } + if (header.getFileInfo() != NetworkCompilationContext::calculateFileInfo(modelPath)) { + // Original file is changed, don't use cache + throw NetworkNotRead("Original model file is changed"); + } + } catch (...) { + throw HeaderException(); + } + + execNetwork = context ? + plugin.ImportNetwork(networkStream, context, config) : + plugin.ImportNetwork(networkStream, config); + networkIsImported = true; + }); + } catch (const HeaderException& ex) { + // For these exceptions just remove old cache and set that import didn't work + cacheManager->removeCacheEntry(blobId); + networkIsImported = false; + } catch (...) { + cacheManager->removeCacheEntry(blobId); + throw; + } + return execNetwork; + } + + std::map CreateCompileConfig(const InferencePlugin& plugin, + const std::string& deviceFamily, + const std::map& origConfig) const { + std::map getMetricConfig; + auto compileConfig = origConfig; + + // 0. Remove TARGET_FALLBACK key, move it to getMetricConfig + auto targetFallbackIt = compileConfig.find("TARGET_FALLBACK"); + if (targetFallbackIt != compileConfig.end()) { + getMetricConfig[targetFallbackIt->first] = targetFallbackIt->second; + compileConfig.erase(targetFallbackIt); + } + + // 1. remove DEVICE_ID key + auto deviceIt = compileConfig.find(CONFIG_KEY(DEVICE_ID)); + if (deviceIt != compileConfig.end()) { + getMetricConfig[deviceIt->first] = deviceIt->second; + compileConfig.erase(deviceIt); + } + + // 2. replace it with DEVICE_ARCHITECTURE value + std::vector supportedMetricKeys = + plugin.GetMetric(METRIC_KEY(SUPPORTED_METRICS), getMetricConfig); + auto archIt = std::find(supportedMetricKeys.begin(), supportedMetricKeys.end(), + METRIC_KEY(DEVICE_ARCHITECTURE)); + if (archIt != supportedMetricKeys.end()) { + auto value = plugin.GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), getMetricConfig); + compileConfig[METRIC_KEY(DEVICE_ARCHITECTURE)] = value.as(); + } else { + // Take device name if device does not support DEVICE_ARCHITECTURE metric + compileConfig[METRIC_KEY(DEVICE_ARCHITECTURE)] = deviceFamily; + } + return compileConfig; + } + + std::string CalculateNetworkHash(const CNNNetwork& network, const std::string& deviceFamily, + const InferencePlugin& plugin, + const std::map& config) const { + auto compileConfig = CreateCompileConfig(plugin, deviceFamily, config); + return NetworkCompilationContext::computeHash(network, compileConfig); + } + + std::string CalculateFileHash(const std::string& modelName, const std::string& deviceFamily, + const InferencePlugin& plugin, + const std::map& config) const { + auto compileConfig = CreateCompileConfig(plugin, deviceFamily, config); + return NetworkCompilationContext::computeHash(modelName, compileConfig); + } + public: - Impl(); - ~Impl() override; + Impl() { + opsetNames.insert("opset1"); + opsetNames.insert("opset2"); + opsetNames.insert("opset3"); + opsetNames.insert("opset4"); + opsetNames.insert("opset5"); + opsetNames.insert("opset6"); + } + + ~Impl() override = default; /** * @brief Register plugins for devices which are located in .xml configuration file. The function supports UNICODE path @@ -183,7 +364,7 @@ class Core::Impl : public ICore { auto parse_result = ParseXml(xmlConfigFile.c_str()); if (!parse_result.error_msg.empty()) { - THROW_IE_EXCEPTION << parse_result.error_msg; + IE_THROW() << parse_result.error_msg; } pugi::xml_document& xmlDoc = *parse_result.xml; @@ -197,7 +378,7 @@ class Core::Impl : public ICore { FileUtils::FilePath pluginPath = FileUtils::toFilePath(GetStrAttr(pluginNode, "location").c_str()); if (deviceName.find('.') != std::string::npos) { - THROW_IE_EXCEPTION << "Device name must not contain dot '.' symbol"; + IE_THROW() << "Device name must not contain dot '.' symbol"; } // append IR library path for default IE plugins @@ -250,20 +431,85 @@ class Core::Impl : public ICore { } CNNNetwork ReadNetwork(const std::string& modelPath, const std::string& binPath) const override { - OV_ITT_SCOPED_TASK(itt::domains::IE); + OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::Impl::ReadNetwork from file"); return details::ReadNetwork(modelPath, binPath, extensions); } CNNNetwork ReadNetwork(const std::string& model, const Blob::CPtr& weights) const override { - OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::Impl::ReadNetwork"); + OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::Impl::ReadNetwork from memory"); return details::ReadNetwork(model, weights, extensions); } + // TODO: In future this method can be added to ICore interface + ExecutableNetwork LoadNetwork(const CNNNetwork& network, const RemoteContext::Ptr& context, + const std::map& config) { + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "Core::LoadNetwork::RemoteContext"); + if (context == nullptr) { + IE_THROW() << "Remote context is null"; + } + auto parsed = parseDeviceNameIntoConfig(context->getDeviceName(), config); + auto plugin = GetCPPPluginByName(parsed._deviceName); + bool loadedFromCache = false; + ExecutableNetwork res; + std::string hash; + auto cacheManager = coreConfig.getCacheConfig()._cacheManager; + if (cacheManager && DeviceSupportsImportExport(plugin)) { + hash = CalculateNetworkHash(network, parsed._deviceName, plugin, parsed._config); + res = LoadNetworkFromCache(cacheManager, hash, plugin, parsed._config, context, loadedFromCache); + } + + if (!loadedFromCache) { + res = LoadNetworkImpl(network, plugin, parsed._config, context, hash); + } + return res; + } + ExecutableNetwork LoadNetwork(const CNNNetwork& network, const std::string& deviceName, const std::map& config) override { - OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::Impl::LoadNetwork"); + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "Core::LoadNetwork::CNN"); + bool forceDisableCache = config.count(CONFIG_KEY_INTERNAL(FORCE_DISABLE_CACHE)) > 0; + auto parsed = parseDeviceNameIntoConfig(deviceName, config); + if (forceDisableCache) { + // remove this config key from parsed as plugins can throw unsupported exception + parsed._config.erase(CONFIG_KEY_INTERNAL(FORCE_DISABLE_CACHE)); + } + auto plugin = GetCPPPluginByName(parsed._deviceName); + bool loadedFromCache = false; + ExecutableNetwork res; + std::string hash; + auto cacheManager = coreConfig.getCacheConfig()._cacheManager; + if (!forceDisableCache && cacheManager && DeviceSupportsImportExport(plugin)) { + hash = CalculateNetworkHash(network, parsed._deviceName, plugin, parsed._config); + res = LoadNetworkFromCache(cacheManager, hash, plugin, parsed._config, nullptr, loadedFromCache); + } + + if (!loadedFromCache) { + res = LoadNetworkImpl(network, plugin, parsed._config, nullptr, hash, {}, forceDisableCache); + } + return res; + } + + // TODO: In future this method can be added to ICore interface + ExecutableNetwork LoadNetwork(const std::string& modelPath, const std::string& deviceName, + const std::map& config) { + OV_ITT_SCOPED_TASK(itt::domains::IE_LT, "Core::LoadNetwork::Path"); auto parsed = parseDeviceNameIntoConfig(deviceName, config); - return GetCPPPluginByName(parsed._deviceName).LoadNetwork(network, parsed._config); + auto plugin = GetCPPPluginByName(parsed._deviceName); + bool loadedFromCache = false; + ExecutableNetwork res; + std::string hash; + auto cacheManager = coreConfig.getCacheConfig()._cacheManager; + if (cacheManager && DeviceSupportsImportExport(plugin)) { + hash = CalculateFileHash(modelPath, parsed._deviceName, plugin, parsed._config); + res = LoadNetworkFromCache(cacheManager, hash, plugin, parsed._config, + nullptr, loadedFromCache, modelPath); + } + + if (!loadedFromCache) { + auto cnnNetwork = ReadNetwork(modelPath, std::string()); + res = LoadNetworkImpl(cnnNetwork, plugin, parsed._config, nullptr, hash, modelPath); + } + return res; } ExecutableNetwork ImportNetwork(std::istream& networkModel, const std::string& deviceName, @@ -286,15 +532,36 @@ class Core::Impl : public ICore { QueryNetworkResult QueryNetwork(const CNNNetwork& network, const std::string& deviceName, const std::map& config) const override { + OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::QueryNetwork"); auto parsed = parseDeviceNameIntoConfig(deviceName, config); - return GetCPPPluginByName(parsed._deviceName).QueryNetwork(network, parsed._config); + auto res = GetCPPPluginByName(parsed._deviceName).QueryNetwork(network, parsed._config); + if (!network.getFunction() || res.supportedLayersMap.empty()) + return res; + + const auto& func = network.getFunction(); + auto specialized_function = ngraph::clone_function(*func); + + std::string defDevice = res.supportedLayersMap.begin()->second; + ngraph::pass::ConstantFolding().run_on_function(specialized_function); + std::unordered_set opNames; + + for (const auto& op : specialized_function->get_ops()) + opNames.emplace(op->get_friendly_name()); + + for (const auto& op : func->get_ops()) { + if (opNames.find(op->get_friendly_name()) == opNames.end() || + (!res.supportedLayersMap.count(op->get_friendly_name()) && + std::dynamic_pointer_cast(op))) + res.supportedLayersMap[op->get_friendly_name()] = defDevice; + } + return res; } Parameter GetMetric(const std::string& deviceName, const std::string& name) const override { // HETERO case { if (deviceName.find("HETERO:") == 0) { - THROW_IE_EXCEPTION + IE_THROW() << "You can get specific metrics with the GetMetric only for the HETERO itself (without devices). " "To get individual devices's metrics call GetMetric for each device separately"; } @@ -303,7 +570,7 @@ class Core::Impl : public ICore { // MULTI case { if (deviceName.find("MULTI:") == 0) { - THROW_IE_EXCEPTION + IE_THROW() << "You can get specific metrics with the GetMetric only for the MULTI itself (without devices). " "To get individual devices's metrics call GetMetric for each device separately"; } @@ -318,7 +585,6 @@ class Core::Impl : public ICore { } /** - * @deprecated * @brief Returns reference to CPP plugin wrapper by a device name * @param deviceName A name of device * @return Reference to a CPP plugin wrapper @@ -330,7 +596,7 @@ class Core::Impl : public ICore { auto it = pluginRegistry.find(deviceName); if (it == pluginRegistry.end()) { - THROW_IE_EXCEPTION << "Device with \"" << deviceName << "\" name is not registered in the InferenceEngine"; + IE_THROW() << "Device with \"" << deviceName << "\" name is not registered in the InferenceEngine"; } // Plugin is in registry, but not created, let's create @@ -364,14 +630,14 @@ class Core::Impl : public ICore { allowNotImplemented([&]() { for (auto&& extensionLocation : desc.listOfExtentions) { - plugin.AddExtension(make_so_pointer(extensionLocation)); + plugin.AddExtension(std::make_shared(extensionLocation)); } }); } plugins[deviceName] = plugin; - } catch (const details::InferenceEngineException& ex) { - THROW_IE_EXCEPTION << "Failed to create plugin " << FileUtils::fromFilePath(desc.libraryLocation) << " for device " << deviceName + } catch (const Exception& ex) { + IE_THROW() << "Failed to create plugin " << FileUtils::fromFilePath(desc.libraryLocation) << " for device " << deviceName << "\n" << "Please, check your environment\n" << ex.what() << "\n"; @@ -389,7 +655,7 @@ class Core::Impl : public ICore { std::lock_guard lock(pluginsMutex); auto it = plugins.find(deviceName); if (it == plugins.end()) { - THROW_IE_EXCEPTION << "Device with \"" << deviceName << "\" name is not registered in the InferenceEngine"; + IE_THROW() << "Device with \"" << deviceName << "\" name is not registered in the InferenceEngine"; } plugins.erase(deviceName); @@ -404,11 +670,11 @@ class Core::Impl : public ICore { auto it = pluginRegistry.find(deviceName); if (it != pluginRegistry.end()) { - THROW_IE_EXCEPTION << "Device with \"" << deviceName << "\" is already registered in the InferenceEngine"; + IE_THROW() << "Device with \"" << deviceName << "\" is already registered in the InferenceEngine"; } if (deviceName.find('.') != std::string::npos) { - THROW_IE_EXCEPTION << "Device name must not contain dot '.' symbol"; + IE_THROW() << "Device name must not contain dot '.' symbol"; } // append IR library path for default IE plugins @@ -443,10 +709,18 @@ class Core::Impl : public ICore { * @brief Sets config values for a plugin or set of plugins * @param deviceName A device name to set config to * If empty, config is set for all the plugins / plugin's meta-data + * @note `deviceName` is not allowed in form of MULTI:CPU, HETERO:FPGA,CPU + * just simple forms like CPU, GPU, MULTU, GPU.0, etc */ - void SetConfigForPlugins(const std::map& config, const std::string& deviceName) { + void SetConfigForPlugins(const std::map& configMap, const std::string& deviceName) { + auto config = configMap; + std::lock_guard lock(pluginsMutex); + if (deviceName.empty()) { + coreConfig.setAndUpdate(config); + } + // set config for plugins in registry bool configIsSet = false; for (auto& desc : pluginRegistry) { @@ -459,7 +733,7 @@ class Core::Impl : public ICore { } if (!configIsSet && !deviceName.empty()) { - THROW_IE_EXCEPTION << "Device with \"" << deviceName << "\" name is not registered in the InferenceEngine"; + IE_THROW() << "Device with \"" << deviceName << "\" name is not registered in the InferenceEngine"; } // set config for already created plugins @@ -482,7 +756,7 @@ class Core::Impl : public ICore { std::map opsets = extension->getOpSets(); for (const auto& it : opsets) { if (opsetNames.find(it.first) != opsetNames.end()) - THROW_IE_EXCEPTION << "Cannot add opset with name: " << it.first << ". Opset with the same name already exists."; + IE_THROW() << "Cannot add opset with name: " << it.first << ". Opset with the same name already exists."; opsetNames.insert(it.first); } @@ -504,15 +778,6 @@ class Core::Impl : public ICore { } }; -Core::Impl::Impl() { - opsetNames.insert("opset1"); - opsetNames.insert("opset2"); - opsetNames.insert("opset3"); - opsetNames.insert("opset4"); -} - -Core::Impl::~Impl() {} - Core::Core(const std::string& xmlConfigFile) { _impl = std::make_shared(); @@ -583,28 +848,22 @@ ExecutableNetwork Core::LoadNetwork(const CNNNetwork& network, const std::string return _impl->LoadNetwork(network, deviceName, config); } -void Core::AddExtension(const IExtensionPtr& extension) { - _impl->AddExtension(extension); -} - ExecutableNetwork Core::LoadNetwork(const CNNNetwork& network, RemoteContext::Ptr context, const std::map& config) { - OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::LoadNetwork"); - - if (context == nullptr) { - THROW_IE_EXCEPTION << "Remote context is null"; - } + return _impl->LoadNetwork(network, context, config); +} - auto parsed = parseDeviceNameIntoConfig(context->getDeviceName(), config); - return _impl->GetCPPPluginByName(parsed._deviceName).LoadNetwork(network, parsed._config, context); +ExecutableNetwork Core::LoadNetwork(const std::string& modelPath, const std::string& deviceName, + const std::map& config) { + return _impl->LoadNetwork(modelPath, deviceName, config); } RemoteContext::Ptr Core::CreateContext(const std::string& deviceName, const ParamMap& params) { if (deviceName.find("HETERO") == 0) { - THROW_IE_EXCEPTION << "HETERO device does not support remote context"; + IE_THROW() << "HETERO device does not support remote context"; } if (deviceName.find("MULTI") == 0) { - THROW_IE_EXCEPTION << "MULTI device does not support remote context"; + IE_THROW() << "MULTI device does not support remote context"; } auto parsed = parseDeviceNameIntoConfig(deviceName, params); @@ -613,10 +872,10 @@ RemoteContext::Ptr Core::CreateContext(const std::string& deviceName, const Para RemoteContext::Ptr Core::GetDefaultContext(const std::string& deviceName) { if (deviceName.find("HETERO") == 0) { - THROW_IE_EXCEPTION << "HETERO device does not support remote context"; + IE_THROW() << "HETERO device does not support remote context"; } if (deviceName.find("MULTI") == 0) { - THROW_IE_EXCEPTION << "MULTI device does not support remote context"; + IE_THROW() << "MULTI device does not support remote context"; } auto parsed = parseDeviceNameIntoConfig(deviceName, ParamMap()); @@ -625,24 +884,31 @@ RemoteContext::Ptr Core::GetDefaultContext(const std::string& deviceName) { void Core::AddExtension(IExtensionPtr extension, const std::string& deviceName_) { if (deviceName_.find("HETERO") == 0) { - THROW_IE_EXCEPTION + IE_THROW() << "HETERO device does not support extensions. Please, set extensions directly to fallback devices"; } if (deviceName_.find("MULTI") == 0) { - THROW_IE_EXCEPTION + IE_THROW() << "MULTI device does not support extensions. Please, set extensions directly to fallback devices"; } _impl->AddExtension(extension); } +void Core::AddExtension(const IExtensionPtr& extension) { + _impl->AddExtension(extension); +} + ExecutableNetwork Core::ImportNetwork(const std::string& modelFileName, const std::string& deviceName, const std::map& config) { + OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::ImportNetwork"); + + // TODO: remove once NotImplemented exception is deprecated and not used if (deviceName.find("HETERO") == 0) { - THROW_IE_EXCEPTION << "HETERO device does not support ImportNetwork"; + IE_THROW() << "HETERO device does not support ImportNetwork"; } if (deviceName.find("MULTI") == 0) { - THROW_IE_EXCEPTION << "MULTI device does not support ImportNetwork"; + IE_THROW() << "MULTI device does not support ImportNetwork"; } auto parsed = parseDeviceNameIntoConfig(deviceName, config); @@ -660,7 +926,7 @@ ExecutableNetwork Core::ImportNetwork(std::istream& networkModel, OV_ITT_SCOPED_TASK(itt::domains::IE, "Core::ImportNetwork"); if (context == nullptr) { - THROW_IE_EXCEPTION << "Remote context is null"; + IE_THROW() << "Remote context is null"; } std::string deviceName_ = context->getDeviceName(); @@ -678,19 +944,21 @@ QueryNetworkResult Core::QueryNetwork(const CNNNetwork& network, const std::stri void Core::SetConfig(const std::map& config, const std::string& deviceName) { // HETERO case - { - if (deviceName.find("HETERO:") == 0) { - THROW_IE_EXCEPTION << "SetConfig is supported only for HETERO itself (without devices). " - "You can configure the devices with SetConfig before creating the HETERO on top."; - } + if (deviceName.find("HETERO:") == 0) { + IE_THROW() << "SetConfig is supported only for HETERO itself (without devices). " + "You can configure the devices with SetConfig before creating the HETERO on top."; } // MULTI case - { - if (deviceName.find("MULTI:") == 0) { - THROW_IE_EXCEPTION << "SetConfig is supported only for MULTI itself (without devices). " - "You can configure the devices with SetConfig before creating the MULTI on top."; - } + if (deviceName.find("MULTI:") == 0) { + IE_THROW() << "SetConfig is supported only for MULTI itself (without devices). " + "You can configure the devices with SetConfig before creating the MULTI on top."; + } + + // GPU.0, FPGA.1 cases + if (deviceName.find(".") != std::string::npos) { + IE_THROW() << "SetConfig is supported only for device family itself (without particular device .#). " + "You can pass .# as a particular device instance to QueryNetwork, LoadNetwork, ImportNetwork only"; } if (deviceName.empty()) { @@ -705,7 +973,7 @@ Parameter Core::GetConfig(const std::string& deviceName, const std::string& name // HETERO case { if (deviceName.find("HETERO:") == 0) { - THROW_IE_EXCEPTION + IE_THROW() << "You can only GetConfig of the HETERO itself (without devices). " "GetConfig is also possible for the individual devices before creating the HETERO on top."; } @@ -713,7 +981,7 @@ Parameter Core::GetConfig(const std::string& deviceName, const std::string& name // MULTI case { if (deviceName.find("MULTI:") == 0) { - THROW_IE_EXCEPTION + IE_THROW() << "You can only GetConfig of the MULTI itself (without devices). " "GetConfig is also possible for the individual devices before creating the MULTI on top."; } @@ -738,17 +1006,16 @@ std::vector Core::GetAvailableDevices() const { for (auto&& deviceName : _impl->GetListOfDevicesInRegistry()) { std::vector devicesIDs; - try { Parameter p = GetMetric(deviceName, propertyName); devicesIDs = p.as>(); - } catch (details::InferenceEngineException&) { + } catch (Exception&) { // plugin is not created by e.g. invalid env } catch (const std::exception& ex) { - THROW_IE_EXCEPTION << "An exception is thrown while trying to create the " << deviceName + IE_THROW() << "An exception is thrown while trying to create the " << deviceName << " device and call GetMetric: " << ex.what(); } catch (...) { - THROW_IE_EXCEPTION << "Unknown exception is thrown while trying to create the " << deviceName + IE_THROW() << "Unknown exception is thrown while trying to create the " << deviceName << " device and call GetMetric"; } diff --git a/inference-engine/src/inference_engine/ie_data.cpp b/inference-engine/src/inference_engine/ie_data.cpp index 3c6a6444e96903..552cbe09df8605 100644 --- a/inference-engine/src/inference_engine/ie_data.cpp +++ b/inference-engine/src/inference_engine/ie_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -37,7 +37,7 @@ Blob::Ptr Blob::CreateFromData(const DataPtr& data) { case InferenceEngine::Precision::BF16: return std::make_shared>(desc); default: - THROW_IE_EXCEPTION << "precision is no set"; + IE_THROW() << "precision is no set"; } } diff --git a/inference-engine/src/inference_engine/ie_itt.hpp b/inference-engine/src/inference_engine/ie_itt.hpp index f49261bb49e1f5..8bd72cfc21514b 100644 --- a/inference-engine/src/inference_engine/ie_itt.hpp +++ b/inference-engine/src/inference_engine/ie_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/inference_engine/ie_layouts.cpp b/inference-engine/src/inference_engine/ie_layouts.cpp index 5def2480cfdb64..b566693c1552c4 100644 --- a/inference-engine/src/inference_engine/ie_layouts.cpp +++ b/inference-engine/src/inference_engine/ie_layouts.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,7 @@ TensorDesc::TensorDesc(const Precision& precision, const SizeVector& dims, const return; } if (dims.size() != *std::max_element(blockDesc.getOrder().begin(), blockDesc.getOrder().end()) + 1) - THROW_IE_EXCEPTION << "Cannot create TensorDesc! Blocked dims are inconsistent with original dims."; + IE_THROW() << "Cannot create TensorDesc! Blocked dims are inconsistent with original dims."; layout = Layout::BLOCKED; if (dims.size() == blockingDesc.getBlockDims().size()) { @@ -90,7 +90,7 @@ void TensorDesc::setDims(const SizeVector& dims) { blockingDesc = BlockingDesc(newDims, newOrder); } else { if (layout == Layout::SCALAR && (dims.size() > 1 || (dims.size() == 1 && dims[0] != 1))) - THROW_IE_EXCEPTION << "Cannot set dimensions for SCALAR layout!"; + IE_THROW() << "Cannot set dimensions for SCALAR layout!"; blockingDesc = BlockingDesc(dims, layout); } if (layout != Layout::SCALAR) this->dims = dims; @@ -138,7 +138,7 @@ void TensorDesc::setLayout(Layout l) { } if (inconsistentLayout) { - THROW_IE_EXCEPTION << "Size of dims(" << std::to_string(dims.size()) << ") and format(" << l + IE_THROW() << "Size of dims(" << std::to_string(dims.size()) << ") and format(" << l << ") are inconsistent."; } @@ -181,7 +181,7 @@ Layout TensorDesc::getLayoutByDims(const SizeVector& dims) { } size_t TensorDesc::offset(const SizeVector& v) const { - if (layout == Layout::ANY) THROW_IE_EXCEPTION << "Cannot calculate offset for any format!"; + if (layout == Layout::ANY) IE_THROW() << "Cannot calculate offset for any format!"; if (layout == Layout::SCALAR) return blockingDesc.getOffsetPadding(); @@ -192,7 +192,7 @@ size_t TensorDesc::offset(const SizeVector& v) const { size_t n_blocked_dims = order.size(); if (blockedDims.size() != n_blocked_dims || strides.size() != n_blocked_dims) { - THROW_IE_EXCEPTION << "Cannot calculate offset. Incorrect primitive descriptor!"; + IE_THROW() << "Cannot calculate offset. Incorrect primitive descriptor!"; } SizeVector blockedShift(n_blocked_dims); for (size_t i = 1; i <= n_blocked_dims; i++) { @@ -221,7 +221,7 @@ size_t TensorDesc::offset(size_t l) const { void TensorDesc::reshape(const SizeVector& dims, Layout layout) { for (auto& padd : blockingDesc.getOffsetPaddingToData()) { - if (padd) THROW_IE_EXCEPTION << "Cannot reshape a non-packaged blob!"; + if (padd) IE_THROW() << "Cannot reshape a non-packaged blob!"; } if (layout != Layout::ANY) { blockingDesc = BlockingDesc(dims, layout); @@ -256,7 +256,7 @@ BlockingDesc::BlockingDesc(const SizeVector& blocked_dims, const SizeVector& ord : BlockingDesc(blocked_dims, order) { this->offsetPadding = offset; if (blocked_dims.size() != dimOffsets.size()) - THROW_IE_EXCEPTION << "Offsets are not initialized for all dimensions."; + IE_THROW() << "Offsets are not initialized for all dimensions."; this->offsetPaddingToData = dimOffsets; } @@ -264,10 +264,10 @@ BlockingDesc::BlockingDesc(const SizeVector& blocked_dims, const SizeVector& ord const SizeVector& dimOffsets, const SizeVector& strides) : BlockingDesc(blocked_dims, order) { this->offsetPadding = offset; - if (blocked_dims.size() != strides.size()) THROW_IE_EXCEPTION << "Strides are not initialized for all dimensions."; + if (blocked_dims.size() != strides.size()) IE_THROW() << "Strides are not initialized for all dimensions."; this->strides = strides; if (blocked_dims.size() != dimOffsets.size()) - THROW_IE_EXCEPTION << "Offsets are not initialized for all dimensions."; + IE_THROW() << "Offsets are not initialized for all dimensions."; this->offsetPaddingToData = dimOffsets; } @@ -276,7 +276,7 @@ BlockingDesc::BlockingDesc(const SizeVector& dims, Layout layout): offsetPadding offsetPadding = 0; auto checkDims = [](size_t r_size, size_t e_size) { - if (r_size != e_size) THROW_IE_EXCEPTION << "Dims and format are inconsistent."; + if (r_size != e_size) IE_THROW() << "Dims and format are inconsistent."; }; SizeVector l_order; SizeVector l_dims; @@ -325,7 +325,7 @@ BlockingDesc::BlockingDesc(const SizeVector& dims, Layout layout): offsetPadding case Layout::HWC: checkDims(dims.size(), 3); l_order = {1, 2, 0}; - l_dims = dims; + l_dims = {dims[1], dims[2], dims[0]}; break; case Layout::CN: checkDims(dims.size(), 2); @@ -350,9 +350,9 @@ BlockingDesc::BlockingDesc(const SizeVector& dims, Layout layout): offsetPadding void BlockingDesc::fillDesc(const SizeVector& blocked_dims, const SizeVector& order) { if (order.size() != blocked_dims.size()) - THROW_IE_EXCEPTION << "Cannot fill descriptor. Size of dimensions and order vector don't match."; + IE_THROW() << "Cannot fill descriptor. Size of dimensions and order vector don't match."; if (blocked_dims.empty() || order.empty()) - THROW_IE_EXCEPTION << "Cannot fill descriptor. Dimensions and order vector are empty."; + IE_THROW() << "Cannot fill descriptor. Dimensions and order vector are empty."; this->order = order; this->blockedDims = blocked_dims; offsetPadding = 0; @@ -398,7 +398,7 @@ void checkROI( const auto numDims = origDesc.getDims().size(); if (roi.size() != numDims) { - THROW_IE_EXCEPTION + IE_THROW() << "ROI num dims " << roi.size() << " differs from original num dims " << numDims; } @@ -411,7 +411,7 @@ void checkROI( const auto endInd = roiSlice.startInd + roiSlice.size; if (endInd > fullSize) { - THROW_IE_EXCEPTION + IE_THROW() << "ROI [" << roiSlice.startInd << ", " << endInd << ")" << " is out of range " << fullSize << " for dimension " << dimInd; @@ -469,7 +469,7 @@ TensorSlice make_roi_slice( const ROI& roi) { const auto layout = origDesc.getLayout(); if (layout != Layout::NCHW && layout != Layout::NHWC) { - THROW_IE_EXCEPTION + IE_THROW() << "Unsupported layout " << layout; } diff --git a/inference-engine/src/inference_engine/ie_memcpy.cpp b/inference-engine/src/inference_engine/ie_memcpy.cpp index 728c592f27cdf6..32d9191577bec4 100644 --- a/inference-engine/src/inference_engine/ie_memcpy.cpp +++ b/inference-engine/src/inference_engine/ie_memcpy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/ie_network_reader.cpp b/inference-engine/src/inference_engine/ie_network_reader.cpp index 904f7d2a6e3a14..9dd7b7a0b41d7e 100644 --- a/inference-engine/src/inference_engine/ie_network_reader.cpp +++ b/inference-engine/src/inference_engine/ie_network_reader.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -7,7 +7,6 @@ #include
#include -#include #include #include @@ -49,7 +48,7 @@ class Reader: public IReader { FileUtils::FilePath readersLibraryPath = FileUtils::makePluginLibraryName(getInferenceEngineLibraryPath(), libraryName); if (!FileUtils::fileExist(readersLibraryPath)) { - THROW_IE_EXCEPTION << "Please, make sure that Inference Engine ONNX reader library " + IE_THROW() << "Please, make sure that Inference Engine ONNX reader library " << FileUtils::fromFilePath(::FileUtils::makePluginLibraryName({}, libraryName)) << " is in " << getIELibraryPath(); } @@ -63,10 +62,6 @@ class Reader: public IReader { return const_cast(this)->getReaderPtr(); } - void Release() noexcept override { - delete this; - } - public: using Ptr = std::shared_ptr; Reader(const std::string& name, const std::string location): name(name), location(location) {} @@ -148,7 +143,7 @@ void assertIfIRv7LikeModel(std::istream & modelStream) { } } - THROW_IE_EXCEPTION << "The support of IR v" << irVersion << " has been removed from the product. " + IE_THROW() << "The support of IR v" << irVersion << " has been removed from the product. " "Please, convert the original model using the Model Optimizer which comes with this " "version of the OpenVINO to generate supported IR version."; } @@ -173,7 +168,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath, const std::string& const std::string path_to_save_in_stream = modelPath; modelStream.pword(0) = const_cast(path_to_save_in_stream.c_str()); if (!modelStream.is_open()) - THROW_IE_EXCEPTION << "Model file " << modelPath << " cannot be opened!"; + IE_THROW() << "Model file " << modelPath << " cannot be opened!"; assertIfIRv7LikeModel(modelStream); @@ -208,7 +203,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath, const std::string& std::ifstream binStream; binStream.open(weights_path, std::ios::binary); if (!binStream.is_open()) - THROW_IE_EXCEPTION << "Weights file " << bPath << " cannot be opened!"; + IE_THROW() << "Weights file " << bPath << " cannot be opened!"; binStream.seekg(0, std::ios::end); size_t fileSize = binStream.tellg(); @@ -230,7 +225,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath, const std::string& return reader->read(modelStream, exts); } } - THROW_IE_EXCEPTION << "Unknown model format! Cannot find reader for model format: " << fileExt << " and read the model: " << modelPath << + IE_THROW() << "Unknown model format! Cannot find reader for model format: " << fileExt << " and read the model: " << modelPath << ". Please check that reader library exists in your PATH."; } @@ -239,7 +234,6 @@ CNNNetwork details::ReadNetwork(const std::string& model, const Blob::CPtr& weig // Register readers if it is needed registerReaders(); std::istringstream modelStream(model); - details::BlobStream binStream(weights); assertIfIRv7LikeModel(modelStream); @@ -251,7 +245,7 @@ CNNNetwork details::ReadNetwork(const std::string& model, const Blob::CPtr& weig return reader->read(modelStream, exts); } } - THROW_IE_EXCEPTION << "Unknown model format! Cannot find reader for the model and read it. Please check that reader library exists in your PATH."; + IE_THROW() << "Unknown model format! Cannot find reader for the model and read it. Please check that reader library exists in your PATH."; } } // namespace InferenceEngine diff --git a/inference-engine/src/inference_engine/ie_network_reader.hpp b/inference-engine/src/inference_engine/ie_network_reader.hpp index cae90e3031d901..2e8a16041f16a2 100644 --- a/inference-engine/src/inference_engine/ie_network_reader.hpp +++ b/inference-engine/src/inference_engine/ie_network_reader.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/ie_ngraph_utils.cpp b/inference-engine/src/inference_engine/ie_ngraph_utils.cpp index 1663b35c012434..d3bfb61c2fce12 100644 --- a/inference-engine/src/inference_engine/ie_ngraph_utils.cpp +++ b/inference-engine/src/inference_engine/ie_ngraph_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,7 @@ CNNNetwork cloneNetwork(const CNNNetwork& network) { return CNNNetwork(std::make_shared(network)); } - THROW_IE_EXCEPTION << "InferenceEngine::details::cloneNetwork requires ngraph-based `network` object to clone"; + IE_THROW() << "InferenceEngine::details::cloneNetwork requires ngraph-based `network` object to clone"; } } // namespace details diff --git a/inference-engine/src/inference_engine/ie_parameter.cpp b/inference-engine/src/inference_engine/ie_parameter.cpp index 67b8a067b027e1..61fbf54c37dcc2 100644 --- a/inference-engine/src/inference_engine/ie_parameter.cpp +++ b/inference-engine/src/inference_engine/ie_parameter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/ie_plugin_cpp.hpp b/inference-engine/src/inference_engine/ie_plugin_cpp.hpp index e57239e95aec9a..a78ec7b43e9f8e 100644 --- a/inference-engine/src/inference_engine/ie_plugin_cpp.hpp +++ b/inference-engine/src/inference_engine/ie_plugin_cpp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,25 +16,39 @@ #include "file_utils.h" #include "cpp/ie_executable_network.hpp" #include "cpp/ie_cnn_network.h" -#include "details/ie_exception_conversion.hpp" #include "ie_plugin_ptr.hpp" +#include "cpp_interfaces/exception2status.hpp" #if defined __GNUC__ # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wreturn-type" #endif +#define CATCH_IE_EXCEPTION(ExceptionType) catch (const InferenceEngine::ExceptionType& e) {throw e;} + +#define CATCH_IE_EXCEPTIONS \ + CATCH_IE_EXCEPTION(GeneralError) \ + CATCH_IE_EXCEPTION(NotImplemented) \ + CATCH_IE_EXCEPTION(NetworkNotLoaded) \ + CATCH_IE_EXCEPTION(ParameterMismatch) \ + CATCH_IE_EXCEPTION(NotFound) \ + CATCH_IE_EXCEPTION(OutOfBounds) \ + CATCH_IE_EXCEPTION(Unexpected) \ + CATCH_IE_EXCEPTION(RequestBusy) \ + CATCH_IE_EXCEPTION(ResultNotReady) \ + CATCH_IE_EXCEPTION(NotAllocated) \ + CATCH_IE_EXCEPTION(InferNotStarted) \ + CATCH_IE_EXCEPTION(NetworkNotRead) \ + CATCH_IE_EXCEPTION(InferCancelled) + #define CALL_STATEMENT(...) \ - if (!actual) THROW_IE_EXCEPTION << "Wrapper used in the CALL_STATEMENT was not initialized."; \ + if (!actual) IE_THROW() << "Wrapper used in the CALL_STATEMENT was not initialized."; \ try { \ __VA_ARGS__; \ - } catch (const InferenceEngine::details::InferenceEngineException& iex) { \ - InferenceEngine::details::extract_exception(iex.hasStatus() ? \ - iex.getStatus() : GENERAL_ERROR, iex.what()); \ - } catch (const std::exception& ex) { \ - InferenceEngine::details::extract_exception(GENERAL_ERROR, ex.what()); \ + } CATCH_IE_EXCEPTIONS catch (const std::exception& ex) { \ + IE_THROW() << ex.what(); \ } catch (...) { \ - InferenceEngine::details::extract_exception(UNEXPECTED, ""); \ + IE_THROW(Unexpected); \ } namespace InferenceEngine { @@ -52,14 +66,14 @@ class InferencePlugin { explicit InferencePlugin(const InferenceEnginePluginPtr& pointer): actual(pointer) { if (actual == nullptr) { - THROW_IE_EXCEPTION << "InferencePlugin wrapper was not initialized."; + IE_THROW() << "InferencePlugin wrapper was not initialized."; } } explicit InferencePlugin(const FileUtils::FilePath & libraryLocation) : actual(libraryLocation) { if (actual == nullptr) { - THROW_IE_EXCEPTION << "InferencePlugin wrapper was not initialized."; + IE_THROW() << "InferencePlugin wrapper was not initialized."; } } @@ -75,10 +89,6 @@ class InferencePlugin { CALL_STATEMENT(return actual->GetVersion()); } - ExecutableNetwork LoadNetwork(CNNNetwork network, const std::map& config) { - CALL_STATEMENT(return ExecutableNetwork(actual->LoadNetwork(network, config), actual)); - } - void AddExtension(InferenceEngine::IExtensionPtr extension) { CALL_STATEMENT(actual->AddExtension(extension)); } @@ -87,31 +97,40 @@ class InferencePlugin { CALL_STATEMENT(actual->SetConfig(config)); } - ExecutableNetwork ImportNetwork(const std::string& modelFileName, - const std::map& config) { - CALL_STATEMENT(return ExecutableNetwork(actual->ImportNetwork(modelFileName, config), actual)); + ExecutableNetwork LoadNetwork(const CNNNetwork& network, const std::map& config) { + CALL_STATEMENT(return ExecutableNetwork(actual->LoadNetwork(network, config), actual)); + } + + ExecutableNetwork LoadNetwork(const CNNNetwork& network, RemoteContext::Ptr context, const std::map& config) { + CALL_STATEMENT(return ExecutableNetwork(actual->LoadNetwork(network, config, context), actual)); } QueryNetworkResult QueryNetwork(const CNNNetwork& network, const std::map& config) const { QueryNetworkResult res; CALL_STATEMENT(res = actual->QueryNetwork(network, config)); - if (res.rc != OK) THROW_IE_EXCEPTION << res.resp.msg; + if (res.rc != OK) IE_THROW() << res.resp.msg; return res; } + ExecutableNetwork ImportNetwork(const std::string& modelFileName, + const std::map& config) { + CALL_STATEMENT(return ExecutableNetwork(actual->ImportNetwork(modelFileName, config), actual)); + } + ExecutableNetwork ImportNetwork(std::istream& networkModel, - const std::map &config) { + const std::map& config) { CALL_STATEMENT(return ExecutableNetwork(actual->ImportNetwork(networkModel, config), actual)); } - Parameter GetMetric(const std::string& name, const std::map& options) const { - CALL_STATEMENT(return actual->GetMetric(name, options)); + ExecutableNetwork ImportNetwork(std::istream& networkModel, + const RemoteContext::Ptr& context, + const std::map& config) { + CALL_STATEMENT(return ExecutableNetwork(actual->ImportNetwork(networkModel, context, config), actual)); } - ExecutableNetwork LoadNetwork(const CNNNetwork& network, const std::map& config, - RemoteContext::Ptr context) { - CALL_STATEMENT(return ExecutableNetwork(actual->LoadNetwork(network, config, context), actual)); + Parameter GetMetric(const std::string& name, const std::map& options) const { + CALL_STATEMENT(return actual->GetMetric(name, options)); } RemoteContext::Ptr CreateContext(const ParamMap& params) { @@ -122,12 +141,6 @@ class InferencePlugin { CALL_STATEMENT(return actual->GetDefaultContext(params)); } - ExecutableNetwork ImportNetwork(std::istream& networkModel, - const RemoteContext::Ptr& context, - const std::map& config) { - CALL_STATEMENT(return ExecutableNetwork(actual->ImportNetwork(networkModel, context, config), actual)); - } - Parameter GetConfig(const std::string& name, const std::map& options) const { CALL_STATEMENT(return actual->GetConfig(name, options)); } diff --git a/inference-engine/src/inference_engine/ie_plugin_ptr.hpp b/inference-engine/src/inference_engine/ie_plugin_ptr.hpp index fb31846a43dbeb..e12b41fc1c9910 100644 --- a/inference-engine/src/inference_engine/ie_plugin_ptr.hpp +++ b/inference-engine/src/inference_engine/ie_plugin_ptr.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/ie_rtti.cpp b/inference-engine/src/inference_engine/ie_rtti.cpp deleted file mode 100644 index e32e69ff1881f5..00000000000000 --- a/inference-engine/src/inference_engine/ie_rtti.cpp +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include -#include -#include -#include -#include - -#include
-#include -#include -#include -#include -#include - -#include - -using namespace InferenceEngine; - -// -// exec_graph_info.hpp -// -constexpr ngraph::NodeTypeInfo ExecGraphInfoSerialization::ExecutionNode::type_info; - -const ngraph::NodeTypeInfo& -ExecGraphInfoSerialization::ExecutionNode::get_type_info() const { - return type_info; -} - -// -// ie_blob.h -// - -Blob::~Blob() {} -MemoryBlob::~MemoryBlob() {} - -// -// ie_iextension.h -// -ILayerImpl::~ILayerImpl() {} -ILayerExecImpl::~ILayerExecImpl() {} -std::map IExtension::getOpSets() { - return {}; -} - -// -// ie_extension.h -// -std::map Extension::getOpSets() { - return actual->getOpSets(); -} - -// -// details/ie_exception.hpp -// - -details::InferenceEngineException::~InferenceEngineException() noexcept {} - -details::InferenceEngineException::InferenceEngineException(const std::string& filename, const int line, const std::string& message) noexcept : - std::exception(), _file(filename), _line(line) { - if (!message.empty()) { - exception_stream = std::make_shared(message); - } -} - -details::InferenceEngineException::InferenceEngineException(const InferenceEngineException& that) noexcept : - std::exception() { - errorDesc = that.errorDesc; - status_code = that.status_code; - _file = that._file; - _line = that._line; - exception_stream = that.exception_stream; -} -// -// ie_parameter.hpp -// - -Parameter::~Parameter() { - clear(); -} - -#if defined(__clang__) && !defined(__SYCL_COMPILER_VERSION) -Parameter::Any::~Any() {} - -template struct InferenceEngine::Parameter::RealData; -template struct InferenceEngine::Parameter::RealData; -template struct InferenceEngine::Parameter::RealData; -template struct InferenceEngine::Parameter::RealData; -template struct InferenceEngine::Parameter::RealData; -template struct InferenceEngine::Parameter::RealData; -template struct InferenceEngine::Parameter::RealData; -template struct InferenceEngine::Parameter::RealData>; -template struct InferenceEngine::Parameter::RealData>; -template struct InferenceEngine::Parameter::RealData>; -template struct InferenceEngine::Parameter::RealData>; -template struct InferenceEngine::Parameter::RealData>; -template struct InferenceEngine::Parameter::RealData; -#endif // __clang__ && !__SYCL_COMPILER_VERSION -// -// ie_blob.h -// - -#if defined(__clang__) && !defined(__SYCL_COMPILER_VERSION) -template -TBlob::~TBlob() { - free(); -} - -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -template class InferenceEngine::TBlob; -#endif // __clang__ && !__SYCL_COMPILER_VERSION diff --git a/inference-engine/src/inference_engine/ie_system_conf.cpp b/inference-engine/src/inference_engine/ie_system_conf.cpp index 45dc2bade6f40e..fa7793ecc9c1a0 100644 --- a/inference-engine/src/inference_engine/ie_system_conf.cpp +++ b/inference-engine/src/inference_engine/ie_system_conf.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/ie_transformations.cpp b/inference-engine/src/inference_engine/ie_transformations.cpp index 798510a161c66d..15360ae97ea09a 100644 --- a/inference-engine/src/inference_engine/ie_transformations.cpp +++ b/inference-engine/src/inference_engine/ie_transformations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/ie_version.cpp b/inference-engine/src/inference_engine/ie_version.cpp index d29456898c5dd8..8ef895dd668bfd 100644 --- a/inference-engine/src/inference_engine/ie_version.cpp +++ b/inference-engine/src/inference_engine/ie_version.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/os/lin/lin_shared_object_loader.cpp b/inference-engine/src/inference_engine/os/lin/lin_shared_object_loader.cpp index 3252adce7d5687..4c3251a6f2e479 100644 --- a/inference-engine/src/inference_engine/os/lin/lin_shared_object_loader.cpp +++ b/inference-engine/src/inference_engine/os/lin/lin_shared_object_loader.cpp @@ -1,10 +1,9 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include -#include "details/ie_exception.hpp" #include "details/ie_so_loader.h" #include "file_utils.h" @@ -20,7 +19,7 @@ class SharedObjectLoader::Impl { shared_object = dlopen(pluginName, RTLD_LAZY); if (shared_object == nullptr) - THROW_IE_EXCEPTION << "Cannot load library '" << pluginName << "': " << dlerror(); + IE_THROW() << "Cannot load library '" << pluginName << "': " << dlerror(); } #ifdef ENABLE_UNICODE_PATH_SUPPORT @@ -30,7 +29,7 @@ class SharedObjectLoader::Impl { ~Impl() noexcept(false) { if (0 != dlclose(shared_object)) { - THROW_IE_EXCEPTION << "dlclose failed: " << dlerror(); + IE_THROW() << "dlclose failed: " << dlerror(); } } @@ -38,14 +37,15 @@ class SharedObjectLoader::Impl { * @brief Searches for a function symbol in the loaded module * @param symbolName Name of the function to find * @return A pointer to the function if found - * @throws InferenceEngineException if the function is not found + * @throws Exception if the function is not found */ void* get_symbol(const char* symbolName) const { void* procAddr = nullptr; procAddr = dlsym(shared_object, symbolName); if (procAddr == nullptr) - THROW_IE_EXCEPTION << "dlSym cannot locate method '" << symbolName << "': " << dlerror(); + IE_THROW(NotFound) + << "dlSym cannot locate method '" << symbolName << "': " << dlerror(); return procAddr; } }; @@ -60,8 +60,7 @@ SharedObjectLoader::SharedObjectLoader(const char * pluginName) { _impl.reset(new Impl(pluginName)); } -SharedObjectLoader::~SharedObjectLoader() noexcept(false) { -} +SharedObjectLoader::~SharedObjectLoader() noexcept(false) {} void* SharedObjectLoader::get_symbol(const char* symbolName) const { return _impl->get_symbol(symbolName); diff --git a/inference-engine/src/inference_engine/os/lin/lin_system_conf.cpp b/inference-engine/src/inference_engine/os/lin/lin_system_conf.cpp index f7ec324195dae7..c90fe681903c98 100644 --- a/inference-engine/src/inference_engine/os/lin/lin_system_conf.cpp +++ b/inference-engine/src/inference_engine/os/lin/lin_system_conf.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,7 @@ #include #include "ie_system_conf.h" #include "ie_parallel.hpp" -#include "details/ie_exception.hpp" +#include "ie_common.h" #include diff --git a/inference-engine/src/inference_engine/os/win/win_shared_object_loader.cpp b/inference-engine/src/inference_engine/os/win/win_shared_object_loader.cpp index 360da0c76ce4c1..8fd09a06db0785 100644 --- a/inference-engine/src/inference_engine/os/win/win_shared_object_loader.cpp +++ b/inference-engine/src/inference_engine/os/win/win_shared_object_loader.cpp @@ -1,8 +1,8 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - -#include "details/ie_exception.hpp" + +#include "ie_common.h" #include "details/ie_so_loader.h" #include "file_utils.h" @@ -204,13 +204,13 @@ class SharedObjectLoader::Impl { ExcludeCurrentDirectoryW(); LoadPluginFromDirectoryW(pluginName); - if(!shared_object) { + if (!shared_object) { shared_object = LoadLibraryW(pluginName); } if (!shared_object) { char cwd[1024]; - THROW_IE_EXCEPTION << "Cannot load library '" << FileUtils::wStringtoMBCSstringChar(std::wstring(pluginName)) << "': " << GetLastError() + IE_THROW() << "Cannot load library '" << FileUtils::wStringtoMBCSstringChar(std::wstring(pluginName)) << "': " << GetLastError() << " from cwd: " << _getcwd(cwd, sizeof(cwd)); } } @@ -226,7 +226,7 @@ class SharedObjectLoader::Impl { if (!shared_object) { char cwd[1024]; - THROW_IE_EXCEPTION << "Cannot load library '" << pluginName << "': " << GetLastError() + IE_THROW() << "Cannot load library '" << pluginName << "': " << GetLastError() << " from cwd: " << _getcwd(cwd, sizeof(cwd)); } } @@ -239,15 +239,16 @@ class SharedObjectLoader::Impl { * @brief Searches for a function symbol in the loaded module * @param symbolName Name of function to find * @return A pointer to the function if found - * @throws InferenceEngineException if the function is not found + * @throws Exception if the function is not found */ void* get_symbol(const char* symbolName) const { if (!shared_object) { - THROW_IE_EXCEPTION << "Cannot get '" << symbolName << "' content from unknown library!"; + IE_THROW() << "Cannot get '" << symbolName << "' content from unknown library!"; } auto procAddr = reinterpret_cast(GetProcAddress(shared_object, symbolName)); if (procAddr == nullptr) - THROW_IE_EXCEPTION << "GetProcAddress cannot locate method '" << symbolName << "': " << GetLastError(); + IE_THROW(NotFound) + << "GetProcAddress cannot locate method '" << symbolName << "': " << GetLastError(); return procAddr; } diff --git a/inference-engine/src/inference_engine/os/win/win_system_conf.cpp b/inference-engine/src/inference_engine/os/win/win_system_conf.cpp index d90e25aa8ab622..97860492c0ac83 100644 --- a/inference-engine/src/inference_engine/os/win/win_system_conf.cpp +++ b/inference-engine/src/inference_engine/os/win/win_system_conf.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/precision_utils.cpp b/inference-engine/src/inference_engine/precision_utils.cpp index 991ae5f67751cd..0fefd93b576e1a 100644 --- a/inference-engine/src/inference_engine/precision_utils.cpp +++ b/inference-engine/src/inference_engine/precision_utils.cpp @@ -1,9 +1,8 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "precision_utils.h" -#include
#include diff --git a/inference-engine/src/inference_engine/precomp.hpp b/inference-engine/src/inference_engine/precomp.hpp index eebe470d7f0b62..b604a638d7d07b 100644 --- a/inference-engine/src/inference_engine/precomp.hpp +++ b/inference-engine/src/inference_engine/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/system_allocator.cpp b/inference-engine/src/inference_engine/system_allocator.cpp index 43072edc4f7689..38c34f2e2d92f3 100644 --- a/inference-engine/src/inference_engine/system_allocator.cpp +++ b/inference-engine/src/inference_engine/system_allocator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,9 +6,9 @@ namespace InferenceEngine { -IAllocator* CreateDefaultAllocator() noexcept { +INFERENCE_ENGINE_API_CPP(std::shared_ptr) CreateDefaultAllocator() noexcept { try { - return new SystemMemoryAllocator(); + return std::make_shared(); } catch (...) { return nullptr; } diff --git a/inference-engine/src/inference_engine/system_allocator.hpp b/inference-engine/src/inference_engine/system_allocator.hpp index 078cee3fd35933..66c56511a67024 100644 --- a/inference-engine/src/inference_engine/system_allocator.hpp +++ b/inference-engine/src/inference_engine/system_allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,12 +8,9 @@ #include "ie_allocator.hpp" +namespace InferenceEngine { class SystemMemoryAllocator : public InferenceEngine::IAllocator { public: - void Release() noexcept override { - delete this; - } - void* lock(void* handle, InferenceEngine::LockOp = InferenceEngine::LOCK_FOR_WRITE) noexcept override { return handle; } @@ -36,4 +33,6 @@ class SystemMemoryAllocator : public InferenceEngine::IAllocator { } return true; } -}; \ No newline at end of file +}; + +} // namespace InferenceEngine \ No newline at end of file diff --git a/inference-engine/src/inference_engine/threading/ie_cpu_streams_executor.cpp b/inference-engine/src/inference_engine/threading/ie_cpu_streams_executor.cpp index ede8313359ff19..7343dfb1488e7a 100644 --- a/inference-engine/src/inference_engine/threading/ie_cpu_streams_executor.cpp +++ b/inference-engine/src/inference_engine/threading/ie_cpu_streams_executor.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,6 @@ #include "ie_parallel.hpp" #include "ie_system_conf.h" #include "threading/ie_thread_affinity.hpp" -#include "details/ie_exception.hpp" #include "threading/ie_cpu_streams_executor.hpp" #include diff --git a/inference-engine/src/inference_engine/threading/ie_executor_manager.cpp b/inference-engine/src/inference_engine/threading/ie_executor_manager.cpp index 75436215e08705..98b4dab8ecc408 100644 --- a/inference-engine/src/inference_engine/threading/ie_executor_manager.cpp +++ b/inference-engine/src/inference_engine/threading/ie_executor_manager.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/threading/ie_istreams_executor.cpp b/inference-engine/src/inference_engine/threading/ie_istreams_executor.cpp index 6ee30912faf408..cc54cdc3b28af2 100644 --- a/inference-engine/src/inference_engine/threading/ie_istreams_executor.cpp +++ b/inference-engine/src/inference_engine/threading/ie_istreams_executor.cpp @@ -1,11 +1,10 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "threading/ie_istreams_executor.hpp" #include "ie_plugin_config.hpp" #include "cpp_interfaces/interface/ie_internal_plugin_config.hpp" -#include "details/ie_exception.hpp" #include "ie_parallel.hpp" #include "ie_system_conf.h" #include "ie_parameter.hpp" @@ -32,7 +31,7 @@ void IStreamsExecutor::Config::SetConfig(const std::string& key, const std::stri if (value == CONFIG_VALUE(YES) || value == CONFIG_VALUE(NUMA)) { #if (IE_THREAD == IE_THREAD_TBB || IE_THREAD == IE_THREAD_TBB_AUTO) && (TBB_INTERFACE_VERSION < 11100) if (value == CONFIG_VALUE(NUMA)) - THROW_IE_EXCEPTION << CONFIG_KEY(CPU_BIND_THREAD) << " property value was set to NUMA. But IE was built with " + IE_THROW() << CONFIG_KEY(CPU_BIND_THREAD) << " property value was set to NUMA. But IE was built with " << "TBB version without NUMA-aware API. Current TBB API version is " << TBB_INTERFACE_VERSION << ", required API version 11100 or greater."; #endif @@ -47,7 +46,7 @@ void IStreamsExecutor::Config::SetConfig(const std::string& key, const std::stri } else if (value == CONFIG_VALUE(NO)) { _threadBindingType = IStreamsExecutor::ThreadBindingType::NONE; } else { - THROW_IE_EXCEPTION << "Wrong value for property key " << CONFIG_KEY(CPU_BIND_THREAD) + IE_THROW() << "Wrong value for property key " << CONFIG_KEY(CPU_BIND_THREAD) << ". Expected only YES(binds to cores) / NO(no binding) / NUMA(binds to NUMA nodes)"; } } else if (key == CONFIG_KEY(CPU_THROUGHPUT_STREAMS)) { @@ -70,12 +69,12 @@ void IStreamsExecutor::Config::SetConfig(const std::string& key, const std::stri try { val_i = std::stoi(value); } catch (const std::exception&) { - THROW_IE_EXCEPTION << "Wrong value for property key " << CONFIG_KEY(CPU_THROUGHPUT_STREAMS) + IE_THROW() << "Wrong value for property key " << CONFIG_KEY(CPU_THROUGHPUT_STREAMS) << ". Expected only positive numbers (#streams) or " << "PluginConfigParams::CPU_THROUGHPUT_NUMA/CPU_THROUGHPUT_AUTO"; } if (val_i < 0) { - THROW_IE_EXCEPTION << "Wrong value for property key " << CONFIG_KEY(CPU_THROUGHPUT_STREAMS) + IE_THROW() << "Wrong value for property key " << CONFIG_KEY(CPU_THROUGHPUT_STREAMS) << ". Expected only positive numbers (#streams)"; } _streams = val_i; @@ -85,11 +84,11 @@ void IStreamsExecutor::Config::SetConfig(const std::string& key, const std::stri try { val_i = std::stoi(value); } catch (const std::exception&) { - THROW_IE_EXCEPTION << "Wrong value for property key " << CONFIG_KEY(CPU_THREADS_NUM) + IE_THROW() << "Wrong value for property key " << CONFIG_KEY(CPU_THREADS_NUM) << ". Expected only positive numbers (#threads)"; } if (val_i < 0) { - THROW_IE_EXCEPTION << "Wrong value for property key " << CONFIG_KEY(CPU_THREADS_NUM) + IE_THROW() << "Wrong value for property key " << CONFIG_KEY(CPU_THREADS_NUM) << ". Expected only positive numbers (#threads)"; } _threads = val_i; @@ -98,16 +97,16 @@ void IStreamsExecutor::Config::SetConfig(const std::string& key, const std::stri try { val_i = std::stoi(value); } catch (const std::exception&) { - THROW_IE_EXCEPTION << "Wrong value for property key " << CONFIG_KEY_INTERNAL(CPU_THREADS_PER_STREAM) + IE_THROW() << "Wrong value for property key " << CONFIG_KEY_INTERNAL(CPU_THREADS_PER_STREAM) << ". Expected only non negative numbers (#threads)"; } if (val_i < 0) { - THROW_IE_EXCEPTION << "Wrong value for property key " << CONFIG_KEY_INTERNAL(CPU_THREADS_PER_STREAM) + IE_THROW() << "Wrong value for property key " << CONFIG_KEY_INTERNAL(CPU_THREADS_PER_STREAM) << ". Expected only non negative numbers (#threads)"; } _threadsPerStream = val_i; } else { - THROW_IE_EXCEPTION << "Wrong value for property key " << key; + IE_THROW() << "Wrong value for property key " << key; } } @@ -131,7 +130,7 @@ Parameter IStreamsExecutor::Config::GetConfig(const std::string& key) { } else if (key == CONFIG_KEY_INTERNAL(CPU_THREADS_PER_STREAM)) { return {_threadsPerStream}; } else { - THROW_IE_EXCEPTION << "Wrong value for property key " << key; + IE_THROW() << "Wrong value for property key " << key; } return {}; } diff --git a/inference-engine/src/inference_engine/threading/ie_itask_executor.cpp b/inference-engine/src/inference_engine/threading/ie_itask_executor.cpp index ea9f326bb2c5e5..0addba46761551 100644 --- a/inference-engine/src/inference_engine/threading/ie_itask_executor.cpp +++ b/inference-engine/src/inference_engine/threading/ie_itask_executor.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/threading/ie_thread_affinity.cpp b/inference-engine/src/inference_engine/threading/ie_thread_affinity.cpp index 300b267855569c..a270adc9965f44 100644 --- a/inference-engine/src/inference_engine/threading/ie_thread_affinity.cpp +++ b/inference-engine/src/inference_engine/threading/ie_thread_affinity.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/inference_engine/xml_parse_utils.cpp b/inference-engine/src/inference_engine/xml_parse_utils.cpp index 3dc8da1b17c543..7a829d9a77d90a 100644 --- a/inference-engine/src/inference_engine/xml_parse_utils.cpp +++ b/inference-engine/src/inference_engine/xml_parse_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,6 @@ #include #include -#include "details/ie_exception.hpp" #include "ie_precision.hpp" template @@ -33,16 +32,14 @@ bool is_bool_value(const std::string & str, T & val) { int XMLParseUtils::GetIntAttr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " << node.offset_debug(); std::string str_value = std::string(attr.value()); std::size_t idx = 0; - int int_value; - if (!is_bool_value(str_value, int_value)) { - int_value = std::stoi(str_value, &idx, 10); - } + int int_value = std::stoi(str_value, &idx, 10); +//mnosov: TODO - commented out according to rebase // if (idx != str_value.length()) -// THROW_IE_EXCEPTION << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value +// IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value // << "\" which is not an integer" // << " at offset " << node.offset_debug(); return int_value; @@ -51,13 +48,13 @@ int XMLParseUtils::GetIntAttr(const pugi::xml_node& node, const char* str) { int64_t XMLParseUtils::GetInt64Attr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " << node.offset_debug(); std::string str_value = std::string(attr.value()); std::size_t idx = 0; long long int_value = std::stoll(str_value, &idx, 10); if (idx != str_value.length()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value + IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value << "\" which is not a signed 64 bit integer" << " at offset " << node.offset_debug(); return static_cast(int_value); @@ -66,13 +63,13 @@ int64_t XMLParseUtils::GetInt64Attr(const pugi::xml_node& node, const char* str) uint64_t XMLParseUtils::GetUInt64Attr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " << node.offset_debug(); std::string str_value = std::string(attr.value()); std::size_t idx = 0; long long int_value = std::stoll(str_value, &idx, 10); if (idx != str_value.length() || int_value < 0) - THROW_IE_EXCEPTION << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value + IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value << "\" which is not an unsigned 64 bit integer" << " at offset " << node.offset_debug(); return static_cast(int_value); @@ -81,16 +78,14 @@ uint64_t XMLParseUtils::GetUInt64Attr(const pugi::xml_node& node, const char* st unsigned int XMLParseUtils::GetUIntAttr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " << node.offset_debug(); std::string str_value = std::string(attr.value()); std::size_t idx = 0; - long long int_value; - if (!is_bool_value(str_value, int_value)) { - int_value = std::stoll(str_value, &idx, 10); - } + long long int_value = std::stoll(str_value, &idx, 10); +// TODO: mnosov: commented out according to rebase // if (idx != str_value.length() || int_value < 0 || int_value > (std::numeric_limits::max)()) -// THROW_IE_EXCEPTION << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value +// IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value // << "\" which is not an unsigned integer" // << " at offset " << node.offset_debug(); return static_cast(int_value); @@ -99,7 +94,7 @@ unsigned int XMLParseUtils::GetUIntAttr(const pugi::xml_node& node, const char* std::string XMLParseUtils::GetStrAttr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: '" << str << "' at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: '" << str << "' at offset " << node.offset_debug(); return attr.value(); } @@ -124,7 +119,7 @@ bool XMLParseUtils::GetBoolAttr(const pugi::xml_node& node, const char* str, con bool is_false = false_names.find(string_attr) != false_names.end(); if (!is_true && !is_false) { - THROW_IE_EXCEPTION << "Unsupported boolean attribute type: " << string_attr; + IE_THROW() << "Unsupported boolean attribute type: " << string_attr; } return is_true; @@ -133,7 +128,7 @@ bool XMLParseUtils::GetBoolAttr(const pugi::xml_node& node, const char* str, con bool XMLParseUtils::GetBoolAttr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " << node.offset_debug(); std::string string_attr = attr.value(); std::transform(string_attr.begin(), string_attr.end(), string_attr.begin(), [](char ch) { @@ -146,7 +141,7 @@ bool XMLParseUtils::GetBoolAttr(const pugi::xml_node& node, const char* str) { bool is_false = false_names.find(string_attr) != false_names.end(); if (!is_true && !is_false) { - THROW_IE_EXCEPTION << "Unsupported boolean attribute type: " << string_attr; + IE_THROW() << "Unsupported boolean attribute type: " << string_attr; } return is_true; @@ -155,7 +150,7 @@ bool XMLParseUtils::GetBoolAttr(const pugi::xml_node& node, const char* str) { float XMLParseUtils::GetFloatAttr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " << node.offset_debug(); std::string str_value = std::string(attr.value()); std::stringstream str_stream(str_value); @@ -163,7 +158,7 @@ float XMLParseUtils::GetFloatAttr(const pugi::xml_node& node, const char* str) { float float_value; str_stream >> float_value; if (!str_stream.eof()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value + IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value << "\" which is not a floating point" << " at offset " << node.offset_debug(); return float_value; @@ -172,7 +167,7 @@ float XMLParseUtils::GetFloatAttr(const pugi::xml_node& node, const char* str) { InferenceEngine::Precision XMLParseUtils::GetPrecisionAttr(const pugi::xml_node& node, const char* str) { auto attr = node.attribute(str); if (attr.empty()) - THROW_IE_EXCEPTION << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " + IE_THROW() << "node <" << node.name() << "> is missing mandatory attribute: " << str << " at offset " << node.offset_debug(); return InferenceEngine::Precision::FromStr(attr.value()); } diff --git a/inference-engine/src/legacy_api/CMakeLists.txt b/inference-engine/src/legacy_api/CMakeLists.txt index 66498fdbd49f57..5993b0ad3120af 100644 --- a/inference-engine/src/legacy_api/CMakeLists.txt +++ b/inference-engine/src/legacy_api/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -42,6 +42,7 @@ target_include_directories(${TARGET_NAME}_obj PRIVATE ${PUBLIC_HEADERS_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src ${IE_MAIN_SOURCE_DIR}/src/inference_engine # For CNNNetworkNGraphImpl + $ $ $ $ @@ -53,7 +54,7 @@ add_cpplint_target(${TARGET_NAME}_obj_cpplint FOR_TARGETS ${TARGET_NAME}_obj) # Create shared library -add_library(${TARGET_NAME} SHARED +add_library(${TARGET_NAME} SHARED ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp $) @@ -62,7 +63,7 @@ ie_add_vs_version_file(NAME ${TARGET_NAME} set_ie_threading_interface_for(${TARGET_NAME}) -target_link_libraries(${TARGET_NAME} PUBLIC inference_engine +target_link_libraries(${TARGET_NAME} PUBLIC inference_engine inference_engine_snippets PRIVATE pugixml openvino::itt ${NGRAPH_LIBRARIES} inference_engine_transformations) diff --git a/inference-engine/src/legacy_api/include/legacy/cnn_network_impl.hpp b/inference-engine/src/legacy_api/include/legacy/cnn_network_impl.hpp index 9ff94d99e00ca2..045f10a12e4bba 100644 --- a/inference-engine/src/legacy_api/include/legacy/cnn_network_impl.hpp +++ b/inference-engine/src/legacy_api/include/legacy/cnn_network_impl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,13 +25,12 @@ namespace details { IE_SUPPRESS_DEPRECATED_START -class INFERENCE_ENGINE_API_CLASS(CNNNetworkImpl): public ICNNNetwork, - public std::enable_shared_from_this { +class INFERENCE_ENGINE_API_CLASS(CNNNetworkImpl) final : public ICNNNetwork { public: CNNNetworkImpl(); explicit CNNNetworkImpl(const ICNNNetwork & ngraphImpl); explicit CNNNetworkImpl(const CNNNetwork & ngraphImpl); - ~CNNNetworkImpl() override; + ~CNNNetworkImpl(); std::shared_ptr<::ngraph::Function> getFunction() noexcept override { return nullptr; @@ -116,10 +115,6 @@ class INFERENCE_ENGINE_API_CLASS(CNNNetworkImpl): public ICNNNetwork, void removeOutput(const std::string& dataName); - void Release() noexcept override { - delete this; - } - virtual void validate(int = 2); StatusCode reshape(const std::map>& inputShapes, diff --git a/inference-engine/src/legacy_api/include/legacy/convert_function_to_cnn_network.hpp b/inference-engine/src/legacy_api/include/legacy/convert_function_to_cnn_network.hpp index 2434fe0faaa62e..63cf0a1dbe8a51 100644 --- a/inference-engine/src/legacy_api/include/legacy/convert_function_to_cnn_network.hpp +++ b/inference-engine/src/legacy_api/include/legacy/convert_function_to_cnn_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -33,10 +33,6 @@ class ConstAllocatorWrapper : public IAllocator { public: explicit ConstAllocatorWrapper(std::shared_ptr constOp): _constOp(std::move(constOp)) {} - void Release() noexcept override { - delete this; - } - void* lock(void* handle, LockOp) noexcept override { return handle; } @@ -60,7 +56,7 @@ enum BlobType { biases }; inline Blob::Ptr shareWeights(const std::shared_ptr& constLayer) { - if (!constLayer) THROW_IE_EXCEPTION << "Cannot share weights! Constant operation is empty!"; + if (!constLayer) IE_THROW() << "Cannot share weights! Constant operation is empty!"; auto dataPrecision = convertPrecision(constLayer->get_element_type()); size_t shapeSize = ngraph::shape_size(constLayer->get_shape()); diff --git a/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_iterator.hpp b/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_iterator.hpp index f513fdcf5bf1b4..e272a9d78a83cf 100644 --- a/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_iterator.hpp +++ b/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -38,7 +38,7 @@ CNNNetworkIterator { void init(const ICNNNetwork* net) { network = net; - if (network == nullptr) THROW_IE_EXCEPTION << "ICNNNetwork object is nullptr"; + if (network == nullptr) IE_THROW() << "ICNNNetwork object is nullptr"; OutputsDataMap outputs; network->getOutputsInfo(outputs); @@ -71,7 +71,7 @@ CNNNetworkIterator { for (const auto & input : node->insData) { auto locked_input = input.lock(); if (!locked_input) { - THROW_IE_EXCEPTION << "insData for " << node->name << " is not valid."; + IE_THROW() << "insData for " << node->name << " is not valid."; } if (auto next_node = getCreatorLayer(locked_input).lock()) { if (!visited.count(next_node.get())) { @@ -188,7 +188,7 @@ CNNNetworkIterator { */ const CNNLayerPtr& operator*() const { if (nullptr == currentLayer) { - THROW_IE_EXCEPTION << "iterator out of bound"; + IE_THROW() << "iterator out of bound"; } return currentLayer; } @@ -198,7 +198,7 @@ CNNNetworkIterator { */ CNNLayerPtr& operator*() { if (nullptr == currentLayer) { - THROW_IE_EXCEPTION << "iterator out of bound"; + IE_THROW() << "iterator out of bound"; } return currentLayer; } diff --git a/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_tools.h b/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_tools.h index 48bd32f2c717d2..d2338fde862627 100644 --- a/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_tools.h +++ b/inference-engine/src/legacy_api/include/legacy/details/ie_cnn_network_tools.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/graph_tools.hpp b/inference-engine/src/legacy_api/include/legacy/graph_tools.hpp index 0fa7e33d812e82..202ada193f0ee3 100644 --- a/inference-engine/src/legacy_api/include/legacy/graph_tools.hpp +++ b/inference-engine/src/legacy_api/include/legacy/graph_tools.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -193,7 +193,7 @@ inline void UnorderedDFS(std::unordered_set& visited, const Inference for (size_t i = 0; i < cnnLayer->insData.size(); i++) { auto& input = cnnLayer->insData[i]; if (!input.lock()) { - THROW_IE_EXCEPTION << "Data " << i << " inserted into layer " << cnnLayer->name << " is nullptr"; + IE_THROW() << "Data " << i << " inserted into layer " << cnnLayer->name << " is nullptr"; } else { auto creatorLayer = getCreatorLayer(input.lock()).lock(); if (creatorLayer) { @@ -457,7 +457,7 @@ std::vector CNNNetSortTopologicallyEx(const CNNNetwork& network, La false, ordering); if (!res) { - THROW_IE_EXCEPTION << "Sorting not possible, due to existed loop."; + IE_THROW() << "Sorting not possible, due to existed loop."; } std::reverse(std::begin(stackOfVisited), std::end(stackOfVisited)); @@ -496,7 +496,7 @@ inline CNNNetwork CNNNetCopy(const CNNNetwork& input, const Copier& cp) { true); if (!res) { - THROW_IE_EXCEPTION << "Copying of network not possible, due to existed loop."; + IE_THROW() << "Copying of network not possible, due to existed loop."; } // internal utility to locate out data idx in layer @@ -504,7 +504,7 @@ inline CNNNetwork CNNNetCopy(const CNNNetwork& input, const Copier& cp) { int dataIdx = -1; auto sourceLayer = getCreatorLayer(sourceData).lock(); if (!sourceLayer) { - THROW_IE_EXCEPTION << "Data " << sourceData->getName() << " has no creator layer"; + IE_THROW() << "Data " << sourceData->getName() << " has no creator layer"; } for (size_t j = 0; j < sourceLayer->outData.size(); j++) { if (sourceData.get() == sourceLayer->outData[j].get()) { @@ -582,7 +582,7 @@ inline CNNNetwork CNNNetCopy(const CNNNetwork& input, const Copier& cp) { auto sourceData = current->insData[i].lock(); auto sourceLayer = getCreatorLayer(sourceData).lock(); if (!sourceLayer) { - THROW_IE_EXCEPTION << "Data " << sourceData->getName() << " has no creator layer"; + IE_THROW() << "Data " << sourceData->getName() << " has no creator layer"; } // find insData Entry in outData of sourceLayer newLayer->insData[i] = oldToNewLayers[sourceLayer.get()]->outData[findOutDataIdx(sourceData)]; @@ -609,14 +609,14 @@ inline CNNNetwork CNNNetCopy(const CNNNetwork& input, const Copier& cp) { for (auto&& data : outmap) { ResponseDesc dsc; if (OK != net->addOutput(getCreatorLayer(data.second).lock()->name, findOutDataIdx(data.second), &dsc)) { - THROW_IE_EXCEPTION << dsc.msg; + IE_THROW() << dsc.msg; } } ResponseDesc dsc; // transfer batch size if (OK != net->setBatchSize(input.getBatchSize(), &dsc)) { - THROW_IE_EXCEPTION << dsc.msg; + IE_THROW() << dsc.msg; } return CNNNetwork(net); @@ -702,7 +702,7 @@ inline std::vector CNNSubnetSortTopologically(const CNNSubnet& subn }, false); if (!res) { - THROW_IE_EXCEPTION << "Sorting not possible, due to existed loop."; + IE_THROW() << "Sorting not possible, due to existed loop."; } std::reverse(stackOfVisited.begin(), stackOfVisited.end()); diff --git a/inference-engine/src/legacy_api/include/legacy/graph_transformer.h b/inference-engine/src/legacy_api/include/legacy/graph_transformer.h index 6dbf0771aa9f86..b8b66b804ca706 100644 --- a/inference-engine/src/legacy_api/include/legacy/graph_transformer.h +++ b/inference-engine/src/legacy_api/include/legacy/graph_transformer.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ie_layers.h b/inference-engine/src/legacy_api/include/legacy/ie_layers.h index 9766715814204e..b1c036278e42f6 100644 --- a/inference-engine/src/legacy_api/include/legacy/ie_layers.h +++ b/inference-engine/src/legacy_api/include/legacy/ie_layers.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -205,7 +205,7 @@ class INFERENCE_ENGINE_INTERNAL_CNNLAYER_CLASS(CNNLayer) { * * @param str input string with float value * @return float value if parsing was successful - * @throws InferenceEngineException in case of parsing error + * @throws Exception in case of parsing error */ static float ie_parse_float(const std::string& str); diff --git a/inference-engine/src/legacy_api/include/legacy/ie_layers_internal.hpp b/inference-engine/src/legacy_api/include/legacy/ie_layers_internal.hpp index 3d6447ffcc7d7a..fdf014abfcbfe8 100644 --- a/inference-engine/src/legacy_api/include/legacy/ie_layers_internal.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ie_layers_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ie_layers_property.hpp b/inference-engine/src/legacy_api/include/legacy/ie_layers_property.hpp index fcc9b872c4e112..34c0e578d4b71b 100644 --- a/inference-engine/src/legacy_api/include/legacy/ie_layers_property.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ie_layers_property.hpp @@ -1,16 +1,17 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // /** * @brief a header file for describing property style structure used by CNNLayers - * + * * @file ie_layers_property.hpp */ #pragma once #include -#include
+ +#include namespace InferenceEngine { @@ -29,7 +30,7 @@ class PropertyVector { PropertyVector(size_t len, T val) { if (len > N) { - THROW_IE_EXCEPTION << "Property size exceeed limit of: " << N; + IE_THROW() << "Property size exceeed limit of: " << N; } for (size_t i = 0; i < len; i++) { _axises[i] = val; @@ -60,21 +61,21 @@ class PropertyVector { */ T& at(int index) { if (index >= N) { - THROW_IE_EXCEPTION << "Property index is out of bounds (" << index << "/" << N; + IE_THROW() << "Property index is out of bounds (" << index << "/" << N; } return _axises[index]; } const T& operator[](size_t index) const { if (index >= N || !_allocated[index]) { - THROW_IE_EXCEPTION << "Property index (" << index << ") is out of bounds"; + IE_THROW() << "Property index (" << index << ") is out of bounds"; } return _axises[index]; } T& operator[](size_t index) { if (index >= N || !_allocated[index]) { - THROW_IE_EXCEPTION << "Property index (" << index << ") is out of bounds"; + IE_THROW() << "Property index (" << index << ") is out of bounds"; } return _axises[index]; } @@ -112,7 +113,7 @@ class PropertyVector { } _axises[axis] = val; } else { - THROW_IE_EXCEPTION << "Layer Property insertion at(axis) should be in [0," << N << ")"; + IE_THROW() << "Layer Property insertion at(axis) should be in [0," << N << ")"; } } diff --git a/inference-engine/src/legacy_api/include/legacy/ie_util_internal.hpp b/inference-engine/src/legacy_api/include/legacy/ie_util_internal.hpp index 31dbdc4d59f32d..106233e2e3c2a2 100644 --- a/inference-engine/src/legacy_api/include/legacy/ie_util_internal.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ie_util_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -81,12 +81,4 @@ using printer_callback = INFERENCE_ENGINE_API_CPP(void) saveGraphToDot(const InferenceEngine::CNNNetwork& network, std::ostream& out, printer_callback layer_cb = nullptr); -/** - @brief Return root data objects, i.e. objects came from input or const layers - @param network - network to process - @return set of root data objects, - */ -INFERENCE_ENGINE_API_CPP(std::unordered_set) -getRootDataObjects(const InferenceEngine::CNNNetwork& network); - } // namespace InferenceEngine diff --git a/inference-engine/src/legacy_api/include/legacy/layer_transform.hpp b/inference-engine/src/legacy_api/include/legacy/layer_transform.hpp index c35fe71369a2b0..44ae71a31f826c 100644 --- a/inference-engine/src/legacy_api/include/legacy/layer_transform.hpp +++ b/inference-engine/src/legacy_api/include/legacy/layer_transform.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/net_pass.h b/inference-engine/src/legacy_api/include/legacy/net_pass.h index c6abe46b9c9f9e..4765ff5bb97e1c 100644 --- a/inference-engine/src/legacy_api/include/legacy/net_pass.h +++ b/inference-engine/src/legacy_api/include/legacy/net_pass.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/crop_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/crop_ie.hpp index 7ea22b4518b4fa..eb0f8a0eab6cc8 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/crop_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/crop_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/eltwise.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/eltwise.hpp index fc2b3f0fc9e34f..e9b7e04cc41166 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/eltwise.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/eltwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/fully_connected.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/fully_connected.hpp index 37ba80d998a8a7..462654e2467a9e 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/fully_connected.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/fully_connected.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_ie.hpp index e82a64713e65d2..6fe50e52c58929 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_tree_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_tree_ie.hpp index 89350cb8a1754f..730f7889642eeb 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_tree_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gather_tree_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_cell_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_cell_ie.hpp index 9d3e1c1f98141b..21831eba07b7d1 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_cell_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_cell_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_sequence_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_sequence_ie.hpp index a33dc8a8739d39..c550e2ceff9b87 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_sequence_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/gru_sequence_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/hard_sigmoid_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/hard_sigmoid_ie.hpp index 0361aae89c76c9..616912459b932d 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/hard_sigmoid_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/hard_sigmoid_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/interp.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/interp.hpp index ab9957a2e3ae15..506532678d40fb 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/interp.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/interp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lrn_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lrn_ie.hpp index 109a3b301d635e..80050c00c449bf 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lrn_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lrn_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_cell_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_cell_ie.hpp index 32e54c27ab1684..b2b494e89ea6e8 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_cell_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_cell_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_sequence_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_sequence_ie.hpp index 76e6ea07b87462..68f2688a57fa14 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_sequence_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/lstm_sequence_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/nms_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/nms_ie.hpp index f8b04c5fcca48d..810ab427b47265 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/nms_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/nms_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/normalize_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/normalize_ie.hpp index 5bb17795117594..0f81112eee92bb 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/normalize_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/normalize_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/onehot_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/onehot_ie.hpp index 9e3af14fab4f2a..f4f38736c9e8e3 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/onehot_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/onehot_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/pad_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/pad_ie.hpp index dfd73a21f07906..e32f98292caa8d 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/pad_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/pad_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/power.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/power.hpp index 1ded433785c053..6b50a58f0e86dd 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/power.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/power.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_clustered_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_clustered_ie.hpp index ff785c89308c01..1d54bf3bc03c63 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_clustered_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_clustered_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_ie.hpp index 824b5d4bd2717a..72f63b1a221fa1 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/prior_box_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/proposal_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/proposal_ie.hpp index d1fcc6a95edf54..e6b4e4e13a4039 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/proposal_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/proposal_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/relu_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/relu_ie.hpp index 412887cd89ec1c..29f1cdeab8f5ac 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/relu_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/relu_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_cell_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_cell_ie.hpp index 992094158dc247..d18c04f2805424 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_cell_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_cell_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_sequence_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_sequence_ie.hpp index df258a79eea839..982bc07867f41f 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_sequence_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/rnn_sequence_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/scaleshift.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/scaleshift.hpp index 1c99fe80e18a1a..7c11477156ad19 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/scaleshift.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/scaleshift.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/selu_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/selu_ie.hpp index 80fef80c9c6770..061a39401ec7ea 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/selu_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/selu_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/swish_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/swish_ie.hpp index 6fc58899f68330..2621b3a02028d6 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/swish_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/swish_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/tile_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/tile_ie.hpp index ac08cf3573597b..cfa5066809a78a 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/tile_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/tile_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/topk_ie.hpp b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/topk_ie.hpp index 284e70ebdfb795..b41eb662b3e19f 100644 --- a/inference-engine/src/legacy_api/include/legacy/ngraph_ops/topk_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/ngraph_ops/topk_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.hpp index 17b1a401cef94a..bb3bcf73135ff2 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.hpp index 56bbe3b37cba59..ee07087081964b 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.hpp index 15716967561b2b..7f8df3e8ec84c5 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.hpp index c2cc49f482b765..a094295c4f4326 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.hpp index 89738938775958..41036b4312bafa 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.hpp index c6df673e13398d..46e425f0209f17 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.hpp index 55fd96aa20f3ad..9879fc86b72a25 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.hpp index 15d9b423098940..96146468f54d23 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.hpp index 20f8b5c8bdd79f..e4a1b495abd1b0 100755 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.hpp index a352caa8b07b0c..130910c4706289 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.hpp index 3455a087ff46b5..199573a50d2ca2 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.hpp index e11bcaaa6f19a5..9f0033be882a9a 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.hpp index f0d7f54414b0d1..0983be6c8144c3 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.hpp index b22968ff2f08e5..02d2e87029c49f 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.hpp index b798a31ac208ca..049840aff8a190 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.hpp index 5deebfdf85975b..ab87407162eaa4 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.hpp index 7e354043f6f426..d87fbe93bd5cac 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.hpp index 49aa116724d198..5f86e7e719e287 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.hpp index 9575b9935bffa3..cb85d4e2e63127 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.hpp index 77109a1a09a3e5..afc54832afef57 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.hpp index 70fec3f63e1c90..dd9d9651f2f3c0 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.hpp index 01bc726463cac2..563924813cb374 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.hpp index 6e7131173d99b7..0273412a74ba4f 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.hpp index 6e45792d130679..1a926de05cb903 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.hpp index 91fc8f7b10c883..faf6f28f34c987 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.hpp index a53534e6197d88..c8270c6b285870 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/fc_bias_fusion.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/fc_bias_fusion.hpp index 94db3df71bef5c..169b73717e7314 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/fc_bias_fusion.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/fc_bias_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_1d_ops.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_1d_ops.hpp index 453a7f858ca18b..a6a17f8ef429e5 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_1d_ops.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_1d_ops.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fc_fusion.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fc_fusion.hpp index e5fac7769439d9..26d2e81022ce86 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fc_fusion.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fc_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fully_connected.hpp b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fully_connected.hpp index 4a1f58170ef063..5de3d711c1a2ac 100644 --- a/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fully_connected.hpp +++ b/inference-engine/src/legacy_api/include/legacy/transformations/convert_opset1_to_legacy/reshape_fully_connected.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/cnn_network_impl.cpp b/inference-engine/src/legacy_api/src/cnn_network_impl.cpp index 69ba2ea25d5945..b2976848536507 100644 --- a/inference-engine/src/legacy_api/src/cnn_network_impl.cpp +++ b/inference-engine/src/legacy_api/src/cnn_network_impl.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -57,18 +57,18 @@ std::map getConstLayersMap(const CNNNetwork& network) { for (const DataWeakPtr& insWeakData : layer->insData) { const DataPtr insData = insWeakData.lock(); if (insData == nullptr) { - THROW_IE_EXCEPTION << "input data is absent"; + IE_THROW() << "input data is absent"; } const CNNLayerWeakPtr parentWeak = getCreatorLayer(insData); const CNNLayerPtr parent = parentWeak.lock(); if (parent == nullptr) { - THROW_IE_EXCEPTION << "parentLayer is absent"; + IE_THROW() << "parentLayer is absent"; } const auto parentIt = result.find(parent.get()); if (parentIt == result.end()) { - THROW_IE_EXCEPTION << "parent layer '" << parent->name << "' was not found"; + IE_THROW() << "parent layer '" << parent->name << "' was not found"; } if (!parentIt->second) { @@ -161,28 +161,28 @@ void CNNNetworkImpl::removeLayer(const std::string& layerName) { void CNNNetworkImpl::renameLayer(const std::string& currentName, const std::string& newName) { const auto currentIt = _layers.find(currentName); if (currentIt == _layers.end()) { - THROW_IE_EXCEPTION << "Layer '" << currentName << "' was not found in layers"; + IE_THROW() << "Layer '" << currentName << "' was not found in layers"; } if (_layers.find(newName) != _layers.end()) { - THROW_IE_EXCEPTION << "Layer with name '" << currentName << "' already exists in layers"; + IE_THROW() << "Layer with name '" << currentName << "' already exists in layers"; } if (_inputData.find(newName) != _inputData.end()) { - THROW_IE_EXCEPTION << "Layer with name '" << currentName << "' already exists in input data"; + IE_THROW() << "Layer with name '" << currentName << "' already exists in input data"; } if (_outputData.find(newName) != _outputData.end()) { - THROW_IE_EXCEPTION << "Layer with name '" << currentName << "' already exists in output data"; + IE_THROW() << "Layer with name '" << currentName << "' already exists in output data"; } const auto currentDataIt = _data.find(currentName); if (currentDataIt == _data.end()) { - THROW_IE_EXCEPTION << "Layer '" << currentName << "' was not found in data"; + IE_THROW() << "Layer '" << currentName << "' was not found in data"; } if (_data.find(newName) != _data.end()) { - THROW_IE_EXCEPTION << "Layer with name '" << currentName << "' already exists in data"; + IE_THROW() << "Layer with name '" << currentName << "' already exists in data"; } bool wasUpdatedInput = false; @@ -230,7 +230,7 @@ void CNNNetworkImpl::validate(int version) { InputsDataMap inputs; this->getInputsInfo(inputs); if (inputs.empty()) { - THROW_IE_EXCEPTION << "No input layers"; + IE_THROW() << "No input layers"; } bool res = CNNNetForestDFS( @@ -245,14 +245,14 @@ void CNNNetworkImpl::validate(int version) { auto iter = inputTo.find(layerName); auto dataName = data->getName(); if (iter == inputTo.end()) { - THROW_IE_EXCEPTION << "Data " << data->getName() << " which inserted into the layer " + IE_THROW() << "Data " << data->getName() << " which inserted into the layer " << layerName << " does not point at this layer"; } if (!getCreatorLayer(data).lock()) { - THROW_IE_EXCEPTION << "Data " << dataName << " has no creator layer"; + IE_THROW() << "Data " << dataName << " has no creator layer"; } } else { - THROW_IE_EXCEPTION << "Data which inserted into the layer " << layerName << " is nullptr"; + IE_THROW() << "Data which inserted into the layer " << layerName << " is nullptr"; } } for (auto data : layer->outData) { @@ -261,7 +261,7 @@ void CNNNetworkImpl::validate(int version) { for (auto layerIter : inputTo) { CNNLayerPtr layerInData = layerIter.second; if (!layerInData) { - THROW_IE_EXCEPTION << "Layer which takes data " << dataName << " is nullptr"; + IE_THROW() << "Layer which takes data " << dataName << " is nullptr"; } auto insertedDatas = layerInData->insData; @@ -270,18 +270,18 @@ void CNNNetworkImpl::validate(int version) { return d.lock() == data; }); if (it == insertedDatas.end()) { - THROW_IE_EXCEPTION << "Layer " << layerInData->name << " which takes data " << dataName + IE_THROW() << "Layer " << layerInData->name << " which takes data " << dataName << " does not point at this data"; } } auto dataNameSetPair = dataNames.insert(dataName); if (!dataNameSetPair.second) { - THROW_IE_EXCEPTION << "Data name " << dataName << " is not unique"; + IE_THROW() << "Data name " << dataName << " is not unique"; } } auto layerSetPair = layerNames.insert(layerName); if (!layerSetPair.second) { - THROW_IE_EXCEPTION << "Layer name " << layerName << " is not unique"; + IE_THROW() << "Layer name " << layerName << " is not unique"; } }, false); @@ -290,13 +290,13 @@ void CNNNetworkImpl::validate(int version) { for (auto i : inputs) { CNNLayerPtr layer = getCreatorLayer(i.second->getInputData()).lock(); if (layer && !equal(layer->type, inputType)) { - THROW_IE_EXCEPTION << "Input layer " << layer->name << " should have Input type but actually its type is " + IE_THROW() << "Input layer " << layer->name << " should have Input type but actually its type is " << layer->type; } } if (!res) { - THROW_IE_EXCEPTION << "Sorting not possible, due to existed loop."; + IE_THROW() << "Sorting not possible, due to existed loop."; } } @@ -325,7 +325,7 @@ void CNNNetworkImpl::resolveOutput() { // check orphan nodes... for (auto kvp : _data) { if (!kvp.second->isInitialized()) - THROW_IE_EXCEPTION << "data name [" << kvp.first << "] dimensions is not known"; + IE_THROW() << "data name [" << kvp.first << "] dimensions is not known"; // data nodes not going to any layer are basically graph output... if (getInputTo(kvp.second).empty()) { @@ -337,7 +337,7 @@ void CNNNetworkImpl::resolveOutput() { void CNNNetworkImpl::addOutput(const string& dataName) { auto it = _data.find(dataName); if (it == _data.end()) { - THROW_IE_EXCEPTION << "data [" << dataName << "] doesn't exist"; + IE_THROW() << "data [" << dataName << "] doesn't exist"; } auto data = it->second; assert(data->getName() == dataName); @@ -400,7 +400,7 @@ StatusCode CNNNetworkImpl::serialize(const std::string& xmlPath, const std::stri std::const_pointer_cast(shared_from_this()))); return OK; #endif - } catch (const InferenceEngineException& e) { + } catch (const Exception& e) { return DescriptionBuffer(GENERAL_ERROR, resp) << e.what(); } catch (const std::exception& e) { return DescriptionBuffer(UNEXPECTED, resp) << e.what(); @@ -434,7 +434,7 @@ StatusCode CNNNetworkImpl::setBatchSize(size_t size, ResponseDesc* responseDesc) if (layerT) { const auto it = layersMap.find(layerT.get()); if (it == layersMap.end()) { - THROW_IE_EXCEPTION << "layer '" << layerT->name << "' was not found in layers map"; + IE_THROW() << "layer '" << layerT->name << "' was not found in layers map"; } constOrAbsent = it->second; } else { @@ -448,7 +448,7 @@ StatusCode CNNNetworkImpl::setBatchSize(size_t size, ResponseDesc* responseDesc) } } return OK; - } catch (const InferenceEngineException& e) { + } catch (const Exception& e) { return DescriptionBuffer(GENERAL_ERROR, responseDesc) << e.what(); } catch (const std::exception& e) { return DescriptionBuffer(UNEXPECTED, responseDesc) << e.what(); @@ -472,7 +472,7 @@ StatusCode CNNNetworkImpl::setBatchSizeReshape(size_t size, ResponseDesc* respon } } return reshape(inputShapes, responseDesc); - } catch (const InferenceEngineException& e) { + } catch (const Exception& e) { return DescriptionBuffer(GENERAL_ERROR, responseDesc) << e.what(); } catch (const std::exception& e) { return DescriptionBuffer(UNEXPECTED, responseDesc) << e.what(); diff --git a/inference-engine/src/legacy_api/src/convert_function_to_cnn_network.cpp b/inference-engine/src/legacy_api/src/convert_function_to_cnn_network.cpp index 12d330a48f1cec..c40c76f69c320f 100644 --- a/inference-engine/src/legacy_api/src/convert_function_to_cnn_network.cpp +++ b/inference-engine/src/legacy_api/src/convert_function_to_cnn_network.cpp @@ -39,6 +39,7 @@ #include "legacy/ngraph_ops/rnn_sequence_ie.hpp" #include "legacy/ngraph_ops/lstm_sequence_ie.hpp" #include "legacy/ngraph_ops/gru_sequence_ie.hpp" +#include "snippets/op/subgraph.hpp" #include "exec_graph_info.hpp" #include "caseless.hpp" @@ -54,7 +55,46 @@ #include "legacy/graph_tools.hpp" #include "legacy/net_pass.h" #include "ie_legacy_itt.hpp" -#include "ie_cnn_layer_builder_ngraph.h" + +namespace Builder { + +template +std::string asString(const T& value) { + return std::to_string(value); +} + +template +std::string asString(const std::vector& value) { + std::string result; + for (const auto& item : value) { + if (!result.empty()) result += ","; + result += asString(item); + } + return result; +} + +template <> +std::string asString(const double& value) { + std::ostringstream sStrm; + sStrm.precision(std::numeric_limits::digits10); + sStrm << std::fixed << value; + std::string result = sStrm.str(); + + auto pos = result.find_last_not_of("0"); + if (pos != std::string::npos) result.erase(pos + 1); + + pos = result.find_last_not_of("."); + if (pos != std::string::npos) result.erase(pos + 1); + + return result; +} + +template <> +std::string asString(const float& value) { + return asString(static_cast(value)); +} + +} // namespace Builder namespace InferenceEngine { namespace details { @@ -63,7 +103,7 @@ namespace details { #define REQUIRED_IE_CONVERSION_CREATOR(type_name, ie_type_name)\ addSpecificCreator({type_name}, [](const std::shared_ptr<::ngraph::Node>& node, \ const std::map& params) -> CNNLayerPtr {\ - THROW_IE_EXCEPTION << type_name << " operation has a form that is not supported. " << node->get_friendly_name()\ + IE_THROW() << type_name << " operation has a form that is not supported. " << node->get_friendly_name()\ << " should be converted to " << ie_type_name << " operation.";\ return nullptr;\ });\ @@ -74,7 +114,7 @@ namespace details { CNNLayer::Ptr createSubGraphLayer(const std::shared_ptr& layer) { auto sub_graph = std::dynamic_pointer_cast(layer); if (!sub_graph) { - THROW_IE_EXCEPTION << "Cannot cast layer to SubGraphOp."; + IE_THROW() << "Cannot cast layer to SubGraphOp."; } // inputs/outputs of TensorIterator (ngraph representation) @@ -97,7 +137,7 @@ CNNLayer::Ptr createSubGraphLayer(const std::shared_ptr& layer) { bool res = CNNNetForestDFS( CNNNetGetAllInputLayers(net), [](const CNNLayerPtr& layer) {}, false); if (!res) { - THROW_IE_EXCEPTION << "Loop detected. SubGraphOp body should not contain loops."; + IE_THROW() << "Loop detected. SubGraphOp body should not contain loops."; } // Get inputs/outputs of cnn network @@ -228,7 +268,7 @@ CNNLayer::Ptr createSubGraphLayer(const std::shared_ptr& layer) { res->output_port_map.emplace_back(InferenceEngine::TensorIterator::PortMap { static_cast(output_desc->m_output_index), static_cast(body_output_idx), -1, 1, 0, -1, 1}); } else { - THROW_IE_EXCEPTION << "Incorrect type of the output description."; + IE_THROW() << "Incorrect type of the output description."; } } @@ -254,7 +294,7 @@ CNNLayer::Ptr createSubGraphLayer(const std::shared_ptr& layer) { res->input_port_map.emplace_back(InferenceEngine::TensorIterator::PortMap { static_cast(inv_desc->m_input_index), static_cast(body_input_index), -1, 1, 0, -1, 1}); } else { - THROW_IE_EXCEPTION << "Incorrect type of the input description."; + IE_THROW() << "Incorrect type of the input description."; } } @@ -392,7 +432,7 @@ void InferenceEngine::details::CNNLayerCreator::on_adapter(const std::string& na params[name] = std::string(data_beg, a->get()->size()); } } else { - THROW_IE_EXCEPTION << "Error converting ngraph to CNN network. " + IE_THROW() << "Error converting ngraph to CNN network. " "Attribute adapter can not be found for " << name << " parameter"; } } @@ -451,7 +491,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr res->params["operation"] = "logical_xor"; } else if (node->description() == "Eltwise") { auto castedLayer = std::dynamic_pointer_cast<::ngraph::op::Eltwise>(node); - if (castedLayer == nullptr) THROW_IE_EXCEPTION << "Cannot get " << attrs.type << " layer " << attrs.name; + if (castedLayer == nullptr) IE_THROW() << "Cannot get " << attrs.type << " layer " << attrs.name; std::string type; switch (castedLayer->eltwise_type) { case ELTWISE_TYPE::Sum: @@ -464,7 +504,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr type = "prod"; break; default: - THROW_IE_EXCEPTION << "Not supported eltwise type!"; + IE_THROW() << "Not supported eltwise type!"; } res->params["operation"] = type; @@ -801,13 +841,13 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr auto scale_all_sizes = std::stoi(res->params["scale_all_sizes"]); if (!scale_all_sizes) { auto data_pshape = node->get_input_partial_shape(0); - if (data_pshape.is_dynamic()) THROW_IE_EXCEPTION << "Dynamic 0-port input of PriorBox is not supported"; + if (data_pshape.is_dynamic()) IE_THROW() << "Dynamic 0-port input of PriorBox is not supported"; auto data_shape = data_pshape.to_shape(); - if (data_shape.size() != 4) THROW_IE_EXCEPTION << "PriorBox has " << data_shape.size() << " items in 0-port input, 4 expected"; + if (data_shape.size() != 4) IE_THROW() << "PriorBox has " << data_shape.size() << " items in 0-port input, 4 expected"; auto img_pshape = node->get_input_partial_shape(1); - if (img_pshape.is_dynamic()) THROW_IE_EXCEPTION << "Dynamic 1-port input of PriorBox is not supported"; + if (img_pshape.is_dynamic()) IE_THROW() << "Dynamic 1-port input of PriorBox is not supported"; auto img_shape = img_pshape.to_shape(); - if (img_shape.size() != 4) THROW_IE_EXCEPTION << "PriorBox has " << data_shape.size() << " items in 1-port input, 4 expected"; + if (img_shape.size() != 4) IE_THROW() << "PriorBox has " << data_shape.size() << " items in 1-port input, 4 expected"; // mxnet-like PriorBox auto img_H = img_shape[2]; @@ -921,7 +961,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr auto axis_node = node->input_value(1).get_node_shared_ptr(); const auto axis_node_const = std::dynamic_pointer_cast(axis_node); if (!axis_node_const) { - THROW_IE_EXCEPTION << "Split " << node->get_friendly_name() << " has no axes as Constant"; + IE_THROW() << "Split " << node->get_friendly_name() << " has no axes as Constant"; } auto axis = axis_node_const->cast_vector()[0]; if (axis < 0) { @@ -1048,7 +1088,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr output_type_str = "I64"; break; default: - THROW_IE_EXCEPTION << "Unsupported output type"; + IE_THROW() << "Unsupported output type"; } res->params["output_type"] = output_type_str; @@ -1076,7 +1116,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr res->params["center_point_box"] = "true"; break; default: - THROW_IE_EXCEPTION << "Unsupported box encoding for NonMaxSuppression op"; + IE_THROW() << "Unsupported box encoding for NonMaxSuppression op"; break; } @@ -1090,7 +1130,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr output_type_str = "I64"; break; default: - THROW_IE_EXCEPTION << "Unsupported output type"; + IE_THROW() << "Unsupported output type"; } res->params["output_type"] = output_type_str; @@ -1198,7 +1238,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr [](const std::shared_ptr<::ngraph::Node>& node, const std::map& params) -> CNNLayerPtr { const std::string& type_name = node->get_type_name(); - THROW_IE_EXCEPTION << type_name << " operation has a form that is not supported. " << node->get_friendly_name() + IE_THROW() << type_name << " operation has a form that is not supported. " << node->get_friendly_name() << " should be converted to " << type_name + "IE operation."; return nullptr; }); @@ -1208,7 +1248,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr LayerParams attrs = {node->get_friendly_name(), node->description(), details::convertPrecision(node->get_output_element_type(0))}; auto reduce_node = std::dynamic_pointer_cast(node); if (reduce_node == nullptr) - THROW_IE_EXCEPTION << "Node '" << node->get_name() << "' is not an instance of ArithmeticReductionKeepDims."; + IE_THROW() << "Node '" << node->get_name() << "' is not an instance of ArithmeticReductionKeepDims."; auto res = std::make_shared(attrs); res->params = params; res->params["keep_dims"] = reduce_node->get_keep_dims() ? "True" : "False"; @@ -1219,7 +1259,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr LayerParams attrs = {node->get_friendly_name(), "ReduceAnd", details::convertPrecision(node->get_output_element_type(0))}; auto reduce_node = std::dynamic_pointer_cast(node); if (reduce_node == nullptr) - THROW_IE_EXCEPTION << "Node '" << node->get_name() << "' is not an instance of LogicalReductionKeepDims."; + IE_THROW() << "Node '" << node->get_name() << "' is not an instance of LogicalReductionKeepDims."; auto res = std::make_shared(attrs); res->params = params; res->params["keep_dims"] = reduce_node->get_keep_dims() ? "True" : "False"; @@ -1230,7 +1270,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr LayerParams attrs = {node->get_friendly_name(), "ReduceOr", details::convertPrecision(node->get_output_element_type(0))}; auto reduce_node = std::dynamic_pointer_cast(node); if (reduce_node == nullptr) - THROW_IE_EXCEPTION << "Node '" << node->get_name() << "' is not an instance of LogicalReductionKeepDims."; + IE_THROW() << "Node '" << node->get_name() << "' is not an instance of LogicalReductionKeepDims."; auto res = std::make_shared(attrs); res->params = params; res->params["keep_dims"] = reduce_node->get_keep_dims() ? "True" : "False"; @@ -1241,7 +1281,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr LayerParams attrs = {node->get_friendly_name(), "Const", details::convertPrecision(node->get_output_element_type(0))}; auto res = std::make_shared(attrs); auto castedLayer = ngraph::as_type_ptr(node); - if (!res) THROW_IE_EXCEPTION << "Cannot get " << attrs.type << " layer " << attrs.name; + if (!res) IE_THROW() << "Cannot get " << attrs.type << " layer " << attrs.name; res->blobs["custom"] = InferenceEngine::details::shareWeights(castedLayer); @@ -1297,7 +1337,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr precision_str = "BOOL"; break; default: - THROW_IE_EXCEPTION << "Unsupported type"; + IE_THROW() << "Unsupported type"; } res->params["precision"] = precision_str; @@ -1376,7 +1416,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr auto res = std::make_shared(attrs); auto castedLayer = std::dynamic_pointer_cast(node); - if (castedLayer == nullptr) THROW_IE_EXCEPTION << "Cannot get " << attrs.type << " layer " << attrs.name; + if (castedLayer == nullptr) IE_THROW() << "Cannot get " << attrs.type << " layer " << attrs.name; res->params["axis"] = Builder::asString(castedLayer->get_axis()); @@ -1413,7 +1453,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr auto castedLayer = std::dynamic_pointer_cast(node); if (!castedLayer) - THROW_IE_EXCEPTION << "Cannot get " << attrs.type << " layer " << attrs.name; + IE_THROW() << "Cannot get " << attrs.type << " layer " << attrs.name; res->params["alpha"] = Builder::asString(castedLayer->get_alpha()); res->params["beta"] = Builder::asString(castedLayer->get_beta()); @@ -1424,15 +1464,15 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr const std::map& params) -> CNNLayerPtr { LayerParams attrs = {node->get_friendly_name(), "Interp", details::convertPrecision(node->get_output_element_type(0))}; auto castedLayer = std::dynamic_pointer_cast(node); - if (!castedLayer) THROW_IE_EXCEPTION << "Cannot get " << attrs.type << " layer " << attrs.name; + if (!castedLayer) IE_THROW() << "Cannot get " << attrs.type << " layer " << attrs.name; auto interp_attrs = castedLayer->get_attrs(); if (interp_attrs.antialias) { - THROW_IE_EXCEPTION << "Interp do not support antialias"; + IE_THROW() << "Interp do not support antialias"; } if (interp_attrs.mode != "linear") { - THROW_IE_EXCEPTION << "Interp do not support mode '" << interp_attrs.mode << "'"; + IE_THROW() << "Interp do not support mode '" << interp_attrs.mode << "'"; } auto res = std::make_shared(attrs); @@ -1593,12 +1633,12 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr LayerParams attrs = {node->get_friendly_name(), "Split", details::convertPrecision(node->get_output_element_type(0))}; auto res = std::make_shared(attrs); auto castedLayer = std::dynamic_pointer_cast(node); - if (!castedLayer) THROW_IE_EXCEPTION << "Cannot get " << attrs.type << " layer " << attrs.name; + if (!castedLayer) IE_THROW() << "Cannot get " << attrs.type << " layer " << attrs.name; auto axis_node = castedLayer->input_value(1).get_node_shared_ptr(); const auto axis_node_const = ngraph::as_type_ptr(axis_node); if (!axis_node_const) { - THROW_IE_EXCEPTION << "Split " << castedLayer->get_friendly_name() << " has no axes as Constant"; + IE_THROW() << "Split " << castedLayer->get_friendly_name() << " has no axes as Constant"; } auto axis = axis_node_const->cast_vector()[0]; @@ -1643,7 +1683,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr auto& rtInfo = node->get_rt_info(); if (rtInfo.count(ExecGraphInfoSerialization::LAYER_TYPE) == 0) { - THROW_IE_EXCEPTION << "No " << ExecGraphInfoSerialization::LAYER_TYPE + IE_THROW() << "No " << ExecGraphInfoSerialization::LAYER_TYPE << " attribute is set in " << node->get_friendly_name() << " node"; } @@ -1723,7 +1763,7 @@ InferenceEngine::details::CNNLayerCreator::CNNLayerCreator(const std::shared_ptr auto res = std::make_shared(attrs); auto castedLayer = ngraph::as_type_ptr(node); - if (castedLayer == nullptr) THROW_IE_EXCEPTION << "Cannot get " << attrs.type << " layer " << attrs.name; + if (castedLayer == nullptr) IE_THROW() << "Cannot get " << attrs.type << " layer " << attrs.name; res->params = params; // This is needed as scale parameter requires high precision res->params["scale"] = Builder::asString(castedLayer->scale); @@ -1763,7 +1803,7 @@ void convertFunctionToICNNNetwork(const std::shared_ptrget_friendly_name() << " to CNNLayer!"; + IE_THROW() << "Cannot cast ngraph node " << node->get_friendly_name() << " to CNNLayer!"; NGraphCNNLayer * layer = reinterpret_cast(result.get()); layer->setNode(node); return result; @@ -1861,7 +1901,7 @@ void convertFunctionToICNNNetwork(const std::shared_ptr(&network); @@ -1913,7 +1953,7 @@ void convertFunctionToICNNNetwork(const std::shared_ptrparams[ExecGraphInfoSerialization::ORIGINAL_NAMES] = originalNames; } + if (auto subgraph = ::ngraph::as_type_ptr(layer)) { + std::string names = ""; + for (const auto& op : subgraph->get_body()->get_ordered_ops()) { + names += ", " + op->get_friendly_name(); + } + + cnnLayer->params["originalLayersNames"] += names; + } + std::string primitivesPriority = ::ngraph::getPrimitivesPriority(layer); if (!primitivesPriority.empty()) { cnnLayer->params["PrimitivesPriority"] = primitivesPriority; @@ -2008,7 +2057,7 @@ void convertFunctionToICNNNetwork(const std::shared_ptrget_output_shape(i); for (const auto &dim : dims) { if (!dim) - THROW_IE_EXCEPTION << cnnLayer->type << " layer " << cnnLayer->name + IE_THROW() << cnnLayer->type << " layer " << cnnLayer->name << " has incorrect dimensions in the output data " << i; } if (!ptr && nGraphImpl && nGraphImpl->_data.find(outName) != nGraphImpl->_data.end()) { @@ -2071,17 +2120,17 @@ void convertFunctionToICNNNetwork(const std::shared_ptrgetLayerByName(input->get_friendly_name().c_str(), prevCnnLayer, nullptr); if (ret != OK) - THROW_IE_EXCEPTION << "Cannot find layer with name: " << input->get_friendly_name(); + IE_THROW() << "Cannot find layer with name: " << input->get_friendly_name(); CNNLayerPtr cnnLayer; ret = cnnNetworkImpl->getLayerByName(layer->get_friendly_name().c_str(), cnnLayer, nullptr); if (ret != OK) - THROW_IE_EXCEPTION << "Cannot find layer with name: " << layer->get_friendly_name(); + IE_THROW() << "Cannot find layer with name: " << layer->get_friendly_name(); auto inIndex = layer->input(i).get_index(); if (cnnLayer->insData.size() <= (inIndex - count_of_skipped) || prevCnnLayer->outData.size() <= output_port.get_index() || count_of_skipped > inIndex) - THROW_IE_EXCEPTION << "Cannot create ICNNNetwork. Network structure is incorrect! " + IE_THROW() << "Cannot create ICNNNetwork. Network structure is incorrect! " << "Input port " << inIndex << " (max " << cnnLayer->insData.size() << ") of " << cnnLayer->type << " layer " << cnnLayer->name << " cannot be connected with output port " << output_port.get_index() @@ -2099,7 +2148,7 @@ void convertFunctionToICNNNetwork(const std::shared_ptrinsData[i].lock()) { - THROW_IE_EXCEPTION << "Layer " << layer->name.c_str() << " input port " << i + IE_THROW() << "Layer " << layer->name.c_str() << " input port " << i << " is not connected to any data"; } } @@ -2110,7 +2159,7 @@ void convertFunctionToICNNNetwork(const std::shared_ptr CNNNetSortTopologically(const CNNNetwork& network) { false); if (!res) { - THROW_IE_EXCEPTION << "Sorting not possible, due to existed loop."; + IE_THROW() << "Sorting not possible, due to existed loop."; } std::reverse(std::begin(stackOfVisited), std::end(stackOfVisited)); diff --git a/inference-engine/src/legacy_api/src/graph_transformer.cpp b/inference-engine/src/legacy_api/src/graph_transformer.cpp index f8fe47306ba607..1545e5699d2622 100644 --- a/inference-engine/src/legacy_api/src/graph_transformer.cpp +++ b/inference-engine/src/legacy_api/src/graph_transformer.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include #include @@ -65,13 +64,13 @@ static std::vector get_outputs(details::CNNNetworkImpl* _network) { ConstTransformer::ConstTransformer(details::CNNNetworkImpl* _network) : network(_network), inputs(get_inputs(_network)), outputs(get_outputs(_network)) { if (!_network) - THROW_IE_EXCEPTION << "[ERROR]: Failed to init ConstTransformer with null pointer of network"; + IE_THROW() << "[ERROR]: Failed to init ConstTransformer with null pointer of network"; } ConstTransformer::ConstTransformer(std::vector &_inputs, std::vector &_outputs) : network(nullptr), inputs(_inputs), outputs(_outputs) { if (inputs.empty() || outputs.empty()) - THROW_IE_EXCEPTION << "[ERROR]: Failed to init ConstTransformer with empty list of inputs or outputs"; + IE_THROW() << "[ERROR]: Failed to init ConstTransformer with empty list of inputs or outputs"; } std::vector ConstTransformer::foldConstSubgraphsInternal(const std::map& constLayers, @@ -306,13 +305,13 @@ const BlobMap ConstTransformer::getConstData(const std::map& bool isForShape = constLayers.at(layerName); if (!isForShape && layer->type != "Const") - THROW_IE_EXCEPTION << "Failed to find reference implementation for `" + layer->name + + IE_THROW() << "Failed to find reference implementation for `" + layer->name + "` Layer with `" + layer->type + "` Type on constant propagation"; if (!isForShape) { auto & blobs = layer->blobs; auto it = blobs.find("custom"); if (it == blobs.end()) - THROW_IE_EXCEPTION << "Missed `custom` blob in Const layer"; + IE_THROW() << "Missed `custom` blob in Const layer"; auto dataName = layer->outData[0]->getName(); constData[dataName] = (*it).second; @@ -334,7 +333,7 @@ static CNNLayerPtr replace_with_static_reshape(CNNLayerPtr &layer) { auto in_data = layer->insData[0].lock(); if (in_data == nullptr) - THROW_IE_EXCEPTION << "Layer '" << layer->name << "' has invalid input data"; + IE_THROW() << "Layer '" << layer->name << "' has invalid input data"; auto out_data = layer->outData[0]; auto precision = out_data->getPrecision(); diff --git a/inference-engine/src/legacy_api/src/ie_cnn_layer_builder_ngraph.h b/inference-engine/src/legacy_api/src/ie_cnn_layer_builder_ngraph.h deleted file mode 100644 index 657cbb5a87708b..00000000000000 --- a/inference-engine/src/legacy_api/src/ie_cnn_layer_builder_ngraph.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include "blob_factory.hpp" - -#include -#include - -namespace InferenceEngine { - -namespace Builder { - -template -std::string asString(const T& value) { - return std::to_string(value); -} - -template -std::string asString(const std::vector& value) { - std::string result; - for (const auto& item : value) { - if (!result.empty()) result += ","; - result += asString(item); - } - return result; -} - -template <> -std::string asString(const double& value) { - std::ostringstream sStrm; - sStrm.precision(std::numeric_limits::digits10); - sStrm << std::fixed << value; - std::string result = sStrm.str(); - - auto pos = result.find_last_not_of("0"); - if (pos != std::string::npos) result.erase(pos + 1); - - pos = result.find_last_not_of("."); - if (pos != std::string::npos) result.erase(pos + 1); - - return result; -} - -template <> -std::string asString(const float& value) { - return asString(static_cast(value)); -} - -} // namespace Builder -} // namespace InferenceEngine diff --git a/inference-engine/src/legacy_api/src/ie_layer_validators.cpp b/inference-engine/src/legacy_api/src/ie_layer_validators.cpp index cd21dc63468629..c4c7d55b566c12 100644 --- a/inference-engine/src/legacy_api/src/ie_layer_validators.cpp +++ b/inference-engine/src/legacy_api/src/ie_layer_validators.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,8 +36,8 @@ void CNNLayer::parseParams() { try { LayerValidator::Ptr validator = LayerValidators::getInstance()->getValidator(type); validator->parseParams(this); - } catch (const InferenceEngineException& ie_e) { - THROW_IE_EXCEPTION << "Error of validate layer: " << this->name << " with type: " << this->type << ". " + } catch (const Exception& ie_e) { + IE_THROW() << "Error of validate layer: " << this->name << " with type: " << this->type << ". " << ie_e.what(); } } @@ -61,7 +61,7 @@ GeneralValidator::GeneralValidator(const std::string& _type): LayerValidator(_ty void FullyConnectedValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of FullyConnectedLayer class"; + IE_THROW() << "Layer is not instance of FullyConnectedLayer class"; } casted->_out_num = casted->GetParamAsUInt("out-size"); } @@ -73,7 +73,7 @@ FullyConnectedValidator::FullyConnectedValidator(const std::string& _type): Laye void CropValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of CropLayer class"; + IE_THROW() << "Layer is not instance of CropLayer class"; } if (casted->axis.empty()) { auto getArray = [](std::string param, vector& array) { @@ -106,7 +106,7 @@ ConvolutionValidator::ConvolutionValidator(const std::string& _type): LayerValid void ConvolutionValidator::parseParams(CNNLayer* layer) { auto convLayer = dynamic_cast(layer); if (!convLayer) { - THROW_IE_EXCEPTION << "Layer is not instance of ConvolutionLayer class"; + IE_THROW() << "Layer is not instance of ConvolutionLayer class"; } convLayer->_out_depth = convLayer->GetParamAsUInt("output"); @@ -152,7 +152,7 @@ void ConvolutionValidator::parseParams(CNNLayer* layer) { vector strides = convLayer->GetParamAsUInts("strides", default_1); for (size_t i = 1; i <= strides.size(); i++) { if (strides[strides.size() - i] == 0) { - THROW_IE_EXCEPTION << "Stride could not be 0.\nIn layer " << convLayer->name; + IE_THROW() << "Stride could not be 0.\nIn layer " << convLayer->name; } convLayer->_stride.insert(i - 1, strides[strides.size() - i]); } @@ -182,7 +182,7 @@ void ConvolutionValidator::parseParams(CNNLayer* layer) { void DeconvolutionValidator::parseParams(CNNLayer* layer) { auto deconvLayer = dynamic_cast(layer); if (!deconvLayer) { - THROW_IE_EXCEPTION << "Layer is not instance of DeconvolutionLayer class"; + IE_THROW() << "Layer is not instance of DeconvolutionLayer class"; } ConvolutionValidator::parseParams(layer); } @@ -196,7 +196,7 @@ DeformableConvolutionValidator::DeformableConvolutionValidator(const std::string void DeformableConvolutionValidator::parseParams(CNNLayer* layer) { auto deformable_conv_layer = dynamic_cast(layer); if (!deformable_conv_layer) { - THROW_IE_EXCEPTION << "Layer is not instance of DeformableConvolutionLayer class"; + IE_THROW() << "Layer is not instance of DeformableConvolutionLayer class"; } deformable_conv_layer->_deformable_group = deformable_conv_layer->GetParamAsUInt("deformable_group", 1u); ConvolutionValidator::parseParams(layer); @@ -209,7 +209,7 @@ PoolingValidator::PoolingValidator(const std::string& _type): LayerValidator(_ty void PoolingValidator::parseParams(CNNLayer* layer) { auto poolLayer = dynamic_cast(layer); if (!poolLayer) { - THROW_IE_EXCEPTION << "Layer is not instance of PoolingLayer class"; + IE_THROW() << "Layer is not instance of PoolingLayer class"; } poolLayer->_kernel.clear(); @@ -276,7 +276,7 @@ void PoolingValidator::parseParams(CNNLayer* layer) { std::string alg = poolLayer->GetParamAsString("pool-method", "max"); poolLayer->_type = alg == "avg" ? PoolingLayer::AVG : PoolingLayer::MAX; if (alg != "max" && alg != "avg") { - THROW_IE_EXCEPTION << "Layer with type `" << _type << "` has incorrect pool-type!"; + IE_THROW() << "Layer with type `" << _type << "` has incorrect pool-type!"; } } } else { @@ -290,7 +290,7 @@ void PoolingValidator::parseParams(CNNLayer* layer) { vector strides = poolLayer->GetParamAsUInts("strides", default_1); for (size_t i = 1; i <= strides.size(); i++) { if (strides[strides.size() - i] == 0) { - THROW_IE_EXCEPTION << "Stride could not be 0.\nIn layer " << poolLayer->name; + IE_THROW() << "Stride could not be 0.\nIn layer " << poolLayer->name; } poolLayer->_stride.insert(i - 1, strides[strides.size() - i]); } @@ -309,7 +309,7 @@ void PoolingValidator::parseParams(CNNLayer* layer) { std::string alg = poolLayer->GetParamAsString("pool-method", "max"); poolLayer->_type = alg == "avg" ? PoolingLayer::AVG : PoolingLayer::MAX; if (alg != "max" && alg != "avg") { - THROW_IE_EXCEPTION << "Layer with type `" << _type << "` has incorrect pad-type!"; + IE_THROW() << "Layer with type `" << _type << "` has incorrect pad-type!"; } } // TODO: checks for presence of all required attributes, and that there's no extraneous parameters only. @@ -320,7 +320,7 @@ void PoolingValidator::parseParams(CNNLayer* layer) { void BatchNormalizationValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of BatchNormalizationLayer class"; + IE_THROW() << "Layer is not instance of BatchNormalizationLayer class"; } casted->epsilon = casted->GetParamAsFloat("epsilon"); } @@ -332,7 +332,7 @@ BatchNormalizationValidator::BatchNormalizationValidator(const std::string& _typ void PowerValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of PowerLayer class"; + IE_THROW() << "Layer is not instance of PowerLayer class"; } casted->offset = casted->GetParamAsFloat("shift"); casted->power = casted->GetParamAsFloat("power"); @@ -346,7 +346,7 @@ PowerValidator::PowerValidator(const std::string& _type): LayerValidator(_type) void PReLUValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of PReLULayer class"; + IE_THROW() << "Layer is not instance of PReLULayer class"; } casted->_channel_shared = casted->GetParamAsBool("channel_shared", false); } @@ -358,7 +358,7 @@ PReLUValidator::PReLUValidator(const std::string& _type): LayerValidator(_type) void ScaleShiftValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ScaleShiftLayer class"; + IE_THROW() << "Layer is not instance of ScaleShiftLayer class"; } if (casted->params.count("broadcast")) { casted->_broadcast = casted->GetParamAsUInt("broadcast", 2); @@ -372,7 +372,7 @@ ScaleShiftValidator::ScaleShiftValidator(const std::string& _type): LayerValidat void TileValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of TileLayer class"; + IE_THROW() << "Layer is not instance of TileLayer class"; } casted->axis = casted->GetParamAsInt("axis", -1); casted->tiles = casted->GetParamAsInt("tiles", -1); @@ -387,7 +387,7 @@ ReshapeValidator::ReshapeValidator(const std::string& _type): LayerValidator(_ty void ReshapeValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ReshapeLayer class"; + IE_THROW() << "Layer is not instance of ReshapeLayer class"; } casted->shape.clear(); if (casted->type == "Flatten" && casted->params.count("end_axis") && casted->params.count("axis")) { @@ -403,7 +403,7 @@ void ReshapeValidator::parseParams(CNNLayer* layer) { void EltwiseValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of EltwiseLayer class"; + IE_THROW() << "Layer is not instance of EltwiseLayer class"; } // TODO: fix this onece we switched to IR v2.x also enable dedicated unit tests // @details: need to remove sum @@ -450,7 +450,7 @@ void EltwiseValidator::parseParams(CNNLayer* layer) { } else if (op == "mean") { casted->_operation = EltwiseLayer::Mean; } else { - THROW_IE_EXCEPTION << "Unsupported element wise operation: " << op; + IE_THROW() << "Unsupported element wise operation: " << op; } casted->coeff = casted->GetParamAsFloats("coeff", {}); @@ -463,7 +463,7 @@ EltwiseValidator::EltwiseValidator(const std::string& _type): LayerValidator(_ty void ClampValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ClampLayer class"; + IE_THROW() << "Layer is not instance of ClampLayer class"; } casted->min_value = casted->GetParamAsFloat("min"); casted->max_value = casted->GetParamAsFloat("max"); @@ -476,7 +476,7 @@ ClampValidator::ClampValidator(const std::string& _type): LayerValidator(_type) void ReLUValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ReLULayer class"; + IE_THROW() << "Layer is not instance of ReLULayer class"; } if (casted->params.count("negative_slope")) { casted->negative_slope = casted->GetParamAsFloat("negative_slope"); @@ -490,7 +490,7 @@ ReLUValidator::ReLUValidator(const std::string& _type): LayerValidator(_type) {} void MVNValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of MVNLayer class"; + IE_THROW() << "Layer is not instance of MVNLayer class"; } casted->across_channels = casted->GetParamAsInt("across_channels", 0); casted->normalize = casted->GetParamAsInt("normalize_variance", 1); @@ -503,7 +503,7 @@ MVNValidator::MVNValidator(const std::string& _type): LayerValidator(_type) {} void GRNValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of GRNLayer class"; + IE_THROW() << "Layer is not instance of GRNLayer class"; } casted->bias = casted->GetParamAsFloat("bias", 0.f); } @@ -515,7 +515,7 @@ GRNValidator::GRNValidator(const std::string& _type): LayerValidator(_type) {} void SoftMaxValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of SoftMaxLayer class"; + IE_THROW() << "Layer is not instance of SoftMaxLayer class"; } casted->axis = casted->GetParamAsInt("axis", 1); } @@ -527,7 +527,7 @@ SoftMaxValidator::SoftMaxValidator(const std::string& _type): LayerValidator(_ty void NormValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of NormLayer class"; + IE_THROW() << "Layer is not instance of NormLayer class"; } casted->_size = casted->GetParamAsUInt("local_size", 0); casted->_size += casted->GetParamAsUInt("local-size", 0); @@ -546,7 +546,7 @@ SplitValidator::SplitValidator(const std::string& _type): LayerValidator(_type) void SplitValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of SplitLayer class"; + IE_THROW() << "Layer is not instance of SplitLayer class"; } casted->_axis = casted->GetParamAsUInt("axis", 1); @@ -554,7 +554,7 @@ void SplitValidator::parseParams(CNNLayer* layer) { for (auto& i : layer->outData) { if (!out_sizes.empty()) out_sizes += ","; if (static_cast(i->getTensorDesc().getDims().size()) <= casted->_axis) { - THROW_IE_EXCEPTION << "Internal error - dimensions are empty"; + IE_THROW() << "Internal error - dimensions are empty"; } out_sizes += std::to_string(i->getTensorDesc().getDims()[casted->_axis]); } @@ -568,7 +568,7 @@ ConcatValidator::ConcatValidator(const std::string& _type): LayerValidator(_type void ConcatValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ConcatLayer class"; + IE_THROW() << "Layer is not instance of ConcatLayer class"; } casted->_axis = casted->GetParamAsUInt("axis", 1); } @@ -580,7 +580,7 @@ GemmValidator::GemmValidator(const std::string& _type): LayerValidator(_type) {} void GemmValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of GemmLayer class"; + IE_THROW() << "Layer is not instance of GemmLayer class"; } casted->alpha = casted->GetParamAsFloat("alpha", 1); casted->beta = casted->GetParamAsFloat("beta", 1); @@ -595,7 +595,7 @@ PadValidator::PadValidator(const std::string& _type): LayerValidator(_type) {} void PadValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of PadLayer class"; + IE_THROW() << layer->name << " Layer is not instance of PadLayer class"; } std::vector pads_begin = casted->GetParamAsUInts("pads_begin"); std::vector pads_end = casted->GetParamAsUInts("pads_end"); @@ -622,7 +622,7 @@ void PadValidator::parseParams(CNNLayer* layer) { } else if (mode == "symmetric") { casted->pad_mode = PadLayer::Symmetric; } else { - THROW_IE_EXCEPTION << layer->name << " Unsupported pad mode operation: " << mode; + IE_THROW() << layer->name << " Unsupported pad mode operation: " << mode; } } @@ -634,7 +634,7 @@ void GatherValidator::parseParams(CNNLayer* layer) { if (auto casted = dynamic_cast(layer)) { casted->axis = casted->GetParamAsInt("axis", 0); } else if (layer->insData.size() != 3) { - THROW_IE_EXCEPTION << layer->name << " Gather layer is expected to have 3 inputs"; + IE_THROW() << layer->name << " Gather layer is expected to have 3 inputs"; } } @@ -645,7 +645,7 @@ StridedSliceValidator::StridedSliceValidator(const std::string& _type): LayerVal void StridedSliceValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of StridedSlice class"; + IE_THROW() << layer->name << " Layer is not instance of StridedSlice class"; } casted->begin_mask = layer->GetParamAsString("begin_mask", ""); @@ -662,7 +662,7 @@ ShuffleChannelsValidator::ShuffleChannelsValidator(const std::string& _type): La void ShuffleChannelsValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of ShuffleChannels class"; + IE_THROW() << layer->name << " Layer is not instance of ShuffleChannels class"; } casted->axis = casted->GetParamAsInt("axis", 1); @@ -676,7 +676,7 @@ DepthToSpaceValidator::DepthToSpaceValidator(const std::string& _type): LayerVal void DepthToSpaceValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of DepthToSpace class"; + IE_THROW() << layer->name << " Layer is not instance of DepthToSpace class"; } casted->block_size = casted->GetParamAsUInt("block_size", 1); @@ -689,7 +689,7 @@ SpaceToDepthValidator::SpaceToDepthValidator(const std::string& _type): LayerVal void SpaceToDepthValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of SpaceToDepth class"; + IE_THROW() << layer->name << " Layer is not instance of SpaceToDepth class"; } casted->block_size = casted->GetParamAsUInt("block_size", 1); @@ -702,20 +702,20 @@ SpaceToBatchValidator::SpaceToBatchValidator(const std::string& _type): LayerVal void SpaceToBatchValidator::parseParams(CNNLayer* layer) { auto spaceToBatchLayer = dynamic_cast(layer); if (!spaceToBatchLayer) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; if (spaceToBatchLayer->insData.size() != 4 || spaceToBatchLayer->outData.size() != 1) - THROW_IE_EXCEPTION << "'" << spaceToBatchLayer->name << "' layer has incorrect number of inputs or outputs edges!"; + IE_THROW() << "'" << spaceToBatchLayer->name << "' layer has incorrect number of inputs or outputs edges!"; auto getParams = [](const DataPtr& dataPtr, std::vector& dst, std::string& layerName) { if (dataPtr == nullptr) - THROW_IE_EXCEPTION << "'" << layerName << "' layer has nullable input data"; + IE_THROW() << "'" << layerName << "' layer has nullable input data"; if (dataPtr->getTensorDesc().getPrecision() != Precision::I32 && dataPtr->getTensorDesc().getPrecision() != Precision::I64) - THROW_IE_EXCEPTION << "'" << layerName << "' layer has invalid input precision"; + IE_THROW() << "'" << layerName << "' layer has invalid input precision"; auto creator = getCreatorLayer(dataPtr).lock(); if (creator == nullptr) - THROW_IE_EXCEPTION << "'" << layerName << "' layer has nullable input layer"; + IE_THROW() << "'" << layerName << "' layer has nullable input layer"; const auto& blob = creator->blobs.begin()->second; dst.resize(blob->size()); @@ -731,7 +731,7 @@ void SpaceToBatchValidator::parseParams(CNNLayer* layer) { }; if (spaceToBatchLayer->insData[0].lock() == nullptr) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has nullable input data"; + IE_THROW() << "'" << layer->name << "' layer has nullable input data"; getParams(spaceToBatchLayer->insData[1].lock(), spaceToBatchLayer->_block_shape, layer->name); getParams(spaceToBatchLayer->insData[2].lock(), spaceToBatchLayer->_pads_begin, layer->name); getParams(spaceToBatchLayer->insData[3].lock(), spaceToBatchLayer->_pads_end, layer->name); @@ -744,25 +744,25 @@ BatchToSpaceValidator::BatchToSpaceValidator(const std::string& _type): LayerVal void BatchToSpaceValidator::parseParams(CNNLayer* layer) { auto batchToSpaceLayer = dynamic_cast(layer); if (!batchToSpaceLayer) { - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; } if (batchToSpaceLayer->insData.empty()) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer does not have any input data"; + IE_THROW() << "'" << layer->name << "' layer does not have any input data"; auto inData = batchToSpaceLayer->insData[0].lock(); if (inData == nullptr) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has nullable input data"; + IE_THROW() << "'" << layer->name << "' layer has nullable input data"; auto getParams = [](const DataPtr& dataPtr, std::vector& dst, std::string& layerName) { if (dataPtr == nullptr) - THROW_IE_EXCEPTION << "'" << layerName << "' layer has nullable input data"; + IE_THROW() << "'" << layerName << "' layer has nullable input data"; if (dataPtr->getTensorDesc().getPrecision() != Precision::I32 && dataPtr->getTensorDesc().getPrecision() != Precision::I64) - THROW_IE_EXCEPTION << "'" << layerName << "' layer has invalid input precision"; + IE_THROW() << "'" << layerName << "' layer has invalid input precision"; auto creator = getCreatorLayer(dataPtr).lock(); if (creator == nullptr) - THROW_IE_EXCEPTION << "'" << layerName << "' layer has nullable input layer"; + IE_THROW() << "'" << layerName << "' layer has nullable input layer"; const auto& blob = creator->blobs.begin()->second; dst.resize(blob->size()); @@ -778,7 +778,7 @@ void BatchToSpaceValidator::parseParams(CNNLayer* layer) { }; if (batchToSpaceLayer->insData[0].lock() == nullptr) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has nullable input data"; + IE_THROW() << "'" << layer->name << "' layer has nullable input data"; getParams(batchToSpaceLayer->insData[1].lock(), batchToSpaceLayer->_block_shape, layer->name); getParams(batchToSpaceLayer->insData[2].lock(), batchToSpaceLayer->_crops_begin, layer->name); getParams(batchToSpaceLayer->insData[3].lock(), batchToSpaceLayer->_crops_end, layer->name); @@ -791,7 +791,7 @@ BucketizeValidator::BucketizeValidator(const std::string& _type) : LayerValidato void BucketizeValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Bucketize class"; + IE_THROW() << layer->name << " Layer is not instance of Bucketize class"; } casted->with_right_bound = casted->GetParamAsBool("with_right_bound", true); @@ -804,7 +804,7 @@ ReverseSequenceValidator::ReverseSequenceValidator(const std::string& _type): La void ReverseSequenceValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of ReverseSequence class"; + IE_THROW() << layer->name << " Layer is not instance of ReverseSequence class"; } casted->seq_axis = casted->GetParamAsInt("seq_axis", 1); @@ -823,7 +823,7 @@ static RNNCellBase::CellType cell_type_from(string type_name) { } if (!one_of(type_name, "LSTM", "RNN", "GRU")) - THROW_IE_EXCEPTION << "Unknown RNN cell type " << type_name << ". " + IE_THROW() << "Unknown RNN cell type " << type_name << ". " << "Expected one of [ LSTM | RNN | GRU ]."; return type_name == "LSTM" @@ -834,7 +834,7 @@ static RNNCellBase::CellType cell_type_from(string type_name) { static RNNSequenceLayer::Direction direction_from(string direction_name) { if (!one_of(direction_name, "Forward", "Backward", "Bidirectional")) - THROW_IE_EXCEPTION << "Unknown RNN direction type " << direction_name << ". " + IE_THROW() << "Unknown RNN direction type " << direction_name << ". " << "Expected one of [ Forward | Backward | Bidirectional ]."; return direction_name == "Forward" @@ -870,7 +870,7 @@ RNNBaseValidator::RNNBaseValidator(const std::string& _type, RNNSequenceLayer::C void RNNBaseValidator::parseParams(CNNLayer* layer) { auto rnn = dynamic_cast(layer); - if (!rnn) THROW_IE_EXCEPTION << "Layer is not instance of RNNLayer class"; + if (!rnn) IE_THROW() << "Layer is not instance of RNNLayer class"; rnn->cellType = cell_type_from(layer->type); rnn->hidden_size = rnn->GetParamAsInt("hidden_size"); @@ -895,7 +895,7 @@ void RNNSequenceValidator::parseParams(CNNLayer* layer) { RNNBaseValidator::parseParams(layer); auto casted = dynamic_cast(layer); - if (!casted) THROW_IE_EXCEPTION << "Layer is not instance of RNNLayer class"; + if (!casted) IE_THROW() << "Layer is not instance of RNNLayer class"; std::string direction = layer->GetParamAsString("direction"); @@ -921,11 +921,11 @@ template class details::RNNCellValidator; void DetectionOutputValidator::parseParams(CNNLayer* layer) { unsigned int num_classes = layer->GetParamAsUInt("num_classes"); if (num_classes == 0) { - THROW_IE_EXCEPTION << "num_classes parameter of DetectionOutput layer can't be equal to zero"; + IE_THROW() << "num_classes parameter of DetectionOutput layer can't be equal to zero"; } float _nms_threshold = layer->GetParamAsFloat("nms_threshold"); if (_nms_threshold < 0) { - THROW_IE_EXCEPTION << "nms_threshold parameter of DetectionOutput layer can't be less then zero"; + IE_THROW() << "nms_threshold parameter of DetectionOutput layer can't be less then zero"; } int _keep_top_k = layer->GetParamAsInt("keep_top_k", -1); (void)_keep_top_k; @@ -957,7 +957,7 @@ void DetectionOutputValidator::parseParams(CNNLayer* layer) { if (layer->CheckParamPresence("confidence_threshold")) { float _confidence_threshold = layer->GetParamAsFloat("confidence_threshold"); if (_confidence_threshold < 0) { - THROW_IE_EXCEPTION << "_confidence_threshold parameter of DetectionOutput layer can't be less then zero"; + IE_THROW() << "_confidence_threshold parameter of DetectionOutput layer can't be less then zero"; } } @@ -969,7 +969,7 @@ void DetectionOutputValidator::parseParams(CNNLayer* layer) { std::vector code_types = {"caffe.priorboxparameter.center_size", "caffe.priorboxparameter.corner"}; auto it = std::find(code_types.begin(), code_types.end(), _code_type); if (it == code_types.end()) { - THROW_IE_EXCEPTION << "Parameter code_type of DetectionOutput layer "; + IE_THROW() << "Parameter code_type of DetectionOutput layer "; } } } @@ -993,13 +993,13 @@ OneHotValidator::OneHotValidator(const std::string& _type): LayerValidator(_type void OneHotValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not an instance of the OneHot class"; + IE_THROW() << "Layer is not an instance of the OneHot class"; } if (layer->CheckParamPresence("depth")) { casted->depth = layer->GetParamAsUInt("depth"); } else { - THROW_IE_EXCEPTION << "The required depth parameter of OneHot layer is missing"; + IE_THROW() << "The required depth parameter of OneHot layer is missing"; } auto on_value_str = layer->GetParamAsString("on_value", "1.0"); @@ -1030,13 +1030,13 @@ QuantizeValidator::QuantizeValidator(const std::string& _type): LayerValidator(_ void QuantizeValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of QuantizeLayer class"; + IE_THROW() << "Layer is not instance of QuantizeLayer class"; } casted->levels = casted->GetParamAsInt("levels", 1); if (casted->levels <= 1) { - THROW_IE_EXCEPTION << layer->name << ": Incorrect value for parameter levels = " << casted->levels + IE_THROW() << layer->name << ": Incorrect value for parameter levels = " << casted->levels << ". Expected to be > 1."; } } @@ -1048,14 +1048,14 @@ BinaryConvolutionValidator::BinaryConvolutionValidator(const std::string& _type) void BinaryConvolutionValidator::parseParams(CNNLayer* layer) { auto binConvLayer = dynamic_cast(layer); if (!binConvLayer) { - THROW_IE_EXCEPTION << "Layer is not instance of BinaryConvolutionLayer class"; + IE_THROW() << "Layer is not instance of BinaryConvolutionLayer class"; } binConvLayer->_pad_value = binConvLayer->GetParamAsFloat("pad_value", 0.f); binConvLayer->_in_depth = binConvLayer->GetParamAsUInt("input"); binConvLayer->_mode = BinaryConvolutionLayer::xnor_popcount; std::string mode = binConvLayer->GetParamAsString("mode", "xnor-popcount"); - if (mode != "xnor-popcount") THROW_IE_EXCEPTION << "Layer with type `" << _type << "` has incorrect mode!"; + if (mode != "xnor-popcount") IE_THROW() << "Layer with type `" << _type << "` has incorrect mode!"; binConvLayer->_out_depth = binConvLayer->GetParamAsUInt("output"); @@ -1101,7 +1101,7 @@ void BinaryConvolutionValidator::parseParams(CNNLayer* layer) { vector strides = binConvLayer->GetParamAsUInts("strides", default_1); for (size_t i = 1; i <= strides.size(); i++) { if (strides[strides.size() - i] == 0) { - THROW_IE_EXCEPTION << "Stride could not be 0.\nIn layer " << binConvLayer->name; + IE_THROW() << "Stride could not be 0.\nIn layer " << binConvLayer->name; } binConvLayer->_stride.insert(i - 1, strides[strides.size() - i]); } @@ -1133,7 +1133,7 @@ ReduceValidator::ReduceValidator(const std::string& _type): LayerValidator(_type void ReduceValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Reduce class"; + IE_THROW() << layer->name << " Layer is not instance of Reduce class"; } casted->keep_dims = layer->GetParamAsBool("keep_dims", "true"); @@ -1146,16 +1146,16 @@ TopKValidator::TopKValidator(const std::string& _type): LayerValidator(_type) {} void TopKValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of TopK class"; + IE_THROW() << layer->name << " Layer is not instance of TopK class"; } casted->mode = layer->GetParamAsString("mode", "max"); if (casted->mode != "max" && casted->mode != "min") - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " TopK can take only 'max' or 'min' for mode, but actually it has: " << casted->mode; casted->sort = layer->GetParamAsString("sort", "index"); if (casted->sort != "value" && casted->sort != "index" && casted->sort != "none") - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " TopK can take only 'value', 'index' or 'none' for sort, but actually it has: " << casted->sort; casted->axis = layer->GetParamAsInt("axis", -1); @@ -1168,7 +1168,7 @@ UniqueValidator::UniqueValidator(const std::string& _type): LayerValidator(_type void UniqueValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Unique class"; + IE_THROW() << layer->name << " Layer is not instance of Unique class"; } casted->sorted = layer->GetParamAsBool("sorted"); @@ -1183,7 +1183,7 @@ NMSValidator::NMSValidator(const std::string& _type): LayerValidator(_type) {} void NMSValidator::parseParams(CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of NonMaxSuppression class"; + IE_THROW() << layer->name << " Layer is not instance of NonMaxSuppression class"; } casted->center_point_box = layer->GetParamAsBool("center_point_box", false); diff --git a/inference-engine/src/legacy_api/src/ie_layer_validators.hpp b/inference-engine/src/legacy_api/src/ie_layer_validators.hpp index 4b28e58ebb7a1d..70c534fa5f0461 100644 --- a/inference-engine/src/legacy_api/src/ie_layer_validators.hpp +++ b/inference-engine/src/legacy_api/src/ie_layer_validators.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ie_layers.cpp b/inference-engine/src/legacy_api/src/ie_layers.cpp index 11f8f8b0fe82d0..35dc24d2b1c1f3 100644 --- a/inference-engine/src/legacy_api/src/ie_layers.cpp +++ b/inference-engine/src/legacy_api/src/ie_layers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,11 +36,11 @@ WeightableLayer::WeightableLayer(const LayerParams& prms) : CNNLayer(prms) {} const DataPtr CNNLayer::input() const { if (insData.empty()) { - THROW_IE_EXCEPTION << "Internal error: input data is empty"; + IE_THROW() << "Internal error: input data is empty"; } auto lockedFirstInsData = insData[0].lock(); if (!lockedFirstInsData) { - THROW_IE_EXCEPTION << "Internal error: unable to lock weak_ptr\n"; + IE_THROW() << "Internal error: unable to lock weak_ptr\n"; } return lockedFirstInsData; } @@ -55,7 +55,7 @@ float CNNLayer::ie_parse_float(const std::string& str) { std::stringstream val_stream(str); val_stream.imbue(std::locale("C")); val_stream >> res; - if (!val_stream.eof()) THROW_IE_EXCEPTION; + if (!val_stream.eof()) IE_THROW(); return res; } } @@ -72,7 +72,7 @@ float CNNLayer::GetParamAsFloat(const char* param, float def) const { try { return ie_parse_float(val); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " + IE_THROW() << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " << val << " cannot be casted to float."; } } @@ -82,7 +82,7 @@ float CNNLayer::GetParamAsFloat(const char* param) const { try { return ie_parse_float(val); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " + IE_THROW() << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " << val << " cannot be casted to float."; } } @@ -98,7 +98,7 @@ std::vector CNNLayer::GetParamAsFloats(const char* param, std::vector CNNLayer::GetParamAsFloats(const char* param) const { float val = ie_parse_float(str); result.push_back(val); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " " << str << " from IR for layer " << name + IE_THROW() << "Cannot parse parameter " << param << " " << str << " from IR for layer " << name << ". Value " << vals << " cannot be casted to floats."; } } @@ -127,7 +127,7 @@ int CNNLayer::GetParamAsInt(const char* param, int def) const { try { return std::stoi(val); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " + IE_THROW() << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " << val << " cannot be casted to int."; } } @@ -137,7 +137,7 @@ int CNNLayer::GetParamAsInt(const char* param) const { try { return std::stoi(val); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " + IE_THROW() << "Cannot parse parameter " << param << " from IR for layer " << name << ". Value " << val << " cannot be casted to int."; } } @@ -152,7 +152,7 @@ std::vector CNNLayer::GetParamAsInts(const char* param, std::vector de try { result.push_back(std::stoi(str)); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " " << str << " from IR for layer " << name + IE_THROW() << "Cannot parse parameter " << param << " " << str << " from IR for layer " << name << ". Value " << vals << " cannot be casted to int."; } } @@ -168,7 +168,7 @@ std::vector CNNLayer::GetParamAsInts(const char* param) const { try { result.push_back(std::stoi(str)); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " " << str << " from IR for layer " << name + IE_THROW() << "Cannot parse parameter " << param << " " << str << " from IR for layer " << name << ". Value " << vals << " cannot be casted to int."; } } @@ -182,11 +182,11 @@ unsigned int CNNLayer::GetParamAsUInt(const char* param, unsigned int def) const try { int value = std::stoi(val); if (value < 0) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } return static_cast(value); } catch (...) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } } @@ -197,11 +197,11 @@ unsigned int CNNLayer::GetParamAsUInt(const char* param) const { try { int value = std::stoi(val); if (value < 0) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } return static_cast(value); } catch (...) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } } @@ -217,11 +217,11 @@ std::vector CNNLayer::GetParamAsUInts(const char* param, std::vect try { int value = std::stoi(str); if (value < 0) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } result.push_back(static_cast(value)); } catch (...) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } } return result; @@ -238,11 +238,11 @@ std::vector CNNLayer::GetParamAsUInts(const char* param) const { try { int value = std::stoi(str); if (value < 0) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } result.push_back(static_cast(value)); } catch (...) { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } } return result; @@ -301,7 +301,7 @@ bool CNNLayer::CheckParamPresence(const char* param) const { std::string CNNLayer::GetParamAsString(const char* param) const { auto it = params.find(param); if (it == params.end()) { - THROW_IE_EXCEPTION << "No such parameter name '" << param << "' for layer " << name; + IE_THROW() << "No such parameter name '" << param << "' for layer " << name; } return (*it).second; } @@ -326,7 +326,7 @@ std::vector CNNLayer::GetParamAsStrings(const char* param, std::vec try { result.push_back(str); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << param << " from IR for layer " << name << "."; + IE_THROW() << "Cannot parse parameter " << param << " from IR for layer " << name << "."; } } return result; diff --git a/inference-engine/src/legacy_api/src/ie_layers_internal.cpp b/inference-engine/src/legacy_api/src/ie_layers_internal.cpp index e269045674110f..6b40daf60ac048 100644 --- a/inference-engine/src/legacy_api/src/ie_layers_internal.cpp +++ b/inference-engine/src/legacy_api/src/ie_layers_internal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -40,14 +40,14 @@ Paddings getPaddingsInternal(const Layer& layer) { PropertyVector(layer._kernel.size(), 0u)}; } else { if ((insData.size() > 3 || insData.empty()) && layer.type != "DeformableConvolution") - THROW_IE_EXCEPTION << "number of inputs should be in range [1, 3]"; + IE_THROW() << "number of inputs should be in range [1, 3]"; if ((insData.size() > 4 || insData.empty()) && layer.type == "DeformableConvolution") - THROW_IE_EXCEPTION << "number of inputs should be in range [2, 4]"; + IE_THROW() << "number of inputs should be in range [2, 4]"; auto firstInput = insData[0].lock(); - if (!firstInput) THROW_IE_EXCEPTION << "input is empty"; + if (!firstInput) IE_THROW() << "input is empty"; auto shape = firstInput->getTensorDesc().getDims(); auto shape_size = shape.size(); - if (shape_size < 4 || shape_size > 5) THROW_IE_EXCEPTION << "input shape must be 4D or 5D"; + if (shape_size < 4 || shape_size > 5) IE_THROW() << "input shape must be 4D or 5D"; std::vector shapes; shapes.push_back(static_cast(shape[shape_size - 1])); @@ -91,8 +91,8 @@ Paddings getPaddingsInternal(const Layer& layer) { } } return {layer._padding, layer._pads_end}; - } catch (const InferenceEngine::details::InferenceEngineException& iee) { - THROW_IE_EXCEPTION << errorPrefix << iee.what(); + } catch (const InferenceEngine::Exception& iee) { + IE_THROW() << errorPrefix << iee.what(); } } @@ -107,7 +107,7 @@ class PaddingsUpdater { return true; } bool operator()(CNNLayer* layer) const { - THROW_IE_EXCEPTION << "padding calculation for layer: " << layer->name << "(" << layer->type << ") unsupported"; + IE_THROW() << "padding calculation for layer: " << layer->name << "(" << layer->type << ") unsupported"; } }; @@ -124,13 +124,13 @@ int getNumIteration(const TensorIterator& tensorIterator) { const auto isIterable = [](const PortMap& rule) { return rule.axis != -1; }; const auto getNumIterations = [](const PortMap& rule, const DataPtr& iterableData) -> int { if (iterableData == nullptr) { - THROW_IE_EXCEPTION << ": Iteration over an invalid data object (null pointer dereference)"; + IE_THROW() << ": Iteration over an invalid data object (null pointer dereference)"; } const auto& dimensions = iterableData->getDims(); const auto axis = rule.axis; if (axis < 0 || static_cast(axis) >= dimensions.size()) { - THROW_IE_EXCEPTION << R"(: Invalid "axis" value in an iteration component: )" + IE_THROW() << R"(: Invalid "axis" value in an iteration component: )" << rule.axis << ", dimensions number = " << dimensions.size() << " (out of range)"; } const auto space = dimensions[axis]; @@ -139,7 +139,7 @@ int getNumIteration(const TensorIterator& tensorIterator) { const auto stride = rule.stride; if (stride == 0) { - THROW_IE_EXCEPTION << R"(: Invalid "stride" value in an iteration component: )" << rule.stride << " (infinite loop)"; + IE_THROW() << R"(: Invalid "stride" value in an iteration component: )" << rule.stride << " (infinite loop)"; } const auto step = std::abs(stride); @@ -147,12 +147,12 @@ int getNumIteration(const TensorIterator& tensorIterator) { const auto dst = stride < 0 ? start : end; const auto length = dst - src; if (src < 0 || src >= dst || dst > static_cast(space) || length < step) { - THROW_IE_EXCEPTION << R"(: Invalid "start"/"stride"/"end" values in an iteration component)" + IE_THROW() << R"(: Invalid "start"/"stride"/"end" values in an iteration component)" << ": \"start\" = " << rule.start << ", \"stride\" = " << rule.stride << ", \"end\" = " << rule.end; } if (length % step != 0) { - THROW_IE_EXCEPTION << ": Each iteration must be the same size: length (" << length << ") is not divisible by step (" << step << ")"; + IE_THROW() << ": Each iteration must be the same size: length (" << length << ") is not divisible by step (" << step << ")"; } return static_cast(length / step); @@ -167,7 +167,7 @@ int getNumIteration(const TensorIterator& tensorIterator) { } if (rule.from < 0 || rule.from >= static_cast(tensorIterator.insData.size())) { - THROW_IE_EXCEPTION << R"(: Invalid "from" value: "from" = )" << rule.from + IE_THROW() << R"(: Invalid "from" value: "from" = )" << rule.from << " inputs number = " << tensorIterator.insData.size() << " (out of range)"; } @@ -176,7 +176,7 @@ int getNumIteration(const TensorIterator& tensorIterator) { isDefault = false; numIterations = currentNumIterations; } else if (numIterations != currentNumIterations) { - THROW_IE_EXCEPTION << ": There are at least two different iterations numbers: " << numIterations << " and " << currentNumIterations; + IE_THROW() << ": There are at least two different iterations numbers: " << numIterations << " and " << currentNumIterations; } } @@ -186,7 +186,7 @@ int getNumIteration(const TensorIterator& tensorIterator) { } if (rule.from < 0 || rule.from >= static_cast(tensorIterator.outData.size())) { - THROW_IE_EXCEPTION << R"(: Invalid "from" value: "from" = )" << rule.from + IE_THROW() << R"(: Invalid "from" value: "from" = )" << rule.from << " inputs number = " << tensorIterator.outData.size() << " (out of range)"; } @@ -195,7 +195,7 @@ int getNumIteration(const TensorIterator& tensorIterator) { isDefault = false; numIterations = currentNumIterations; } else if (numIterations != currentNumIterations) { - THROW_IE_EXCEPTION << ": There are at least two different iterations numbers: " << numIterations << " and " << currentNumIterations; + IE_THROW() << ": There are at least two different iterations numbers: " << numIterations << " and " << currentNumIterations; } } diff --git a/inference-engine/src/legacy_api/src/ie_legacy_itt.hpp b/inference-engine/src/legacy_api/src/ie_legacy_itt.hpp index afb1ef8b55287a..203394e6eaf12d 100644 --- a/inference-engine/src/legacy_api/src/ie_legacy_itt.hpp +++ b/inference-engine/src/legacy_api/src/ie_legacy_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/legacy_api/src/ie_util_internal.cpp b/inference-engine/src/legacy_api/src/ie_util_internal.cpp index 5d34ac63b67282..cbe1e3ec8ee9a7 100644 --- a/inference-engine/src/legacy_api/src/ie_util_internal.cpp +++ b/inference-engine/src/legacy_api/src/ie_util_internal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -569,20 +569,4 @@ void saveGraphToDot(const InferenceEngine::CNNNetwork& network, std::ostream& ou out << "}" << std::endl; } -std::unordered_set getRootDataObjects(const CNNNetwork& network) { - std::unordered_set ret; - details::CNNNetworkIterator i(network); - while (i != details::CNNNetworkIterator()) { - CNNLayer::Ptr layer = *i; - - // TODO: Data without creatorLayer - if (CaselessEq()(layer->type, "input") || CaselessEq()(layer->type, "const") || - CaselessEq()(layer->type, "memory")) { - ret.insert(layer->outData.begin(), layer->outData.end()); - } - i++; - } - return ret; -} - } // namespace InferenceEngine diff --git a/inference-engine/src/legacy_api/src/layer_transform.cpp b/inference-engine/src/legacy_api/src/layer_transform.cpp index 5775125f84c1b9..898306ba722315 100644 --- a/inference-engine/src/legacy_api/src/layer_transform.cpp +++ b/inference-engine/src/legacy_api/src/layer_transform.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/net_pass.cpp b/inference-engine/src/legacy_api/src/net_pass.cpp index de0cb5409d6e45..6eb7033d93e26c 100644 --- a/inference-engine/src/legacy_api/src/net_pass.cpp +++ b/inference-engine/src/legacy_api/src/net_pass.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -223,7 +223,7 @@ TensorIterator::Body CopyTIBody(const TensorIterator::Body& body, std::string su /************************************************************/ inline bool is_full_ranged(const TensorIterator::PortMap& rule, const DataPtr& data) { - if (!data) THROW_IE_EXCEPTION << "Internal error. data == nullptr"; + if (!data) IE_THROW() << "Internal error. data == nullptr"; if (rule.axis == -1 || !one_of(rule.stride, 1, -1)) return false; @@ -1543,7 +1543,7 @@ void ConvertPrecision(CNNNetwork& net, Precision from, Precision to) { convertPrecisionForAll(net); break; default: - THROW_IE_EXCEPTION << "Precision conversion from " << from << " to " << to + IE_THROW() << "Precision conversion from " << from << " to " << to << " currently is not supported. You may expand precision" " conversion pass."; } diff --git a/inference-engine/src/legacy_api/src/network_serializer_v7.cpp b/inference-engine/src/legacy_api/src/network_serializer_v7.cpp index c86f2094166900..1edfb272949129 100644 --- a/inference-engine/src/legacy_api/src/network_serializer_v7.cpp +++ b/inference-engine/src/legacy_api/src/network_serializer_v7.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,6 +17,7 @@ #include "xml_parse_utils.h" #include "exec_graph_info.hpp" #include "network_serializer_v7.hpp" +#include "legacy/details/ie_cnn_network_tools.h" namespace InferenceEngine { namespace Serialization { @@ -48,7 +49,7 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { if (CaselessEq()(layer->type, "power")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of PowerLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of PowerLayer class"; } params["scale"] = CNNLayer::ie_serialize_float(lr->scale); params["shift"] = CNNLayer::ie_serialize_float(lr->offset); @@ -57,7 +58,7 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { CaselessEq()(layer->type, "deconvolution")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of ConvolutionLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of ConvolutionLayer class"; } params["kernel"] = arrayRevertToIRProperty(lr->_kernel); params["pads_begin"] = arrayRevertToIRProperty(lr->_padding); @@ -69,7 +70,7 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { } else if (CaselessEq()(layer->type, "deformable_convolution")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of DeformableConvolutionLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of DeformableConvolutionLayer class"; } params["kernel"] = arrayRevertToIRProperty(lr->_kernel); params["pads_begin"] = arrayRevertToIRProperty(lr->_padding); @@ -82,7 +83,7 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { } else if (CaselessEq()(layer->type, "relu")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of ReLULayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of ReLULayer class"; } if (lr->negative_slope != 0.0f) { params["negative_slope"] = CNNLayer::ie_serialize_float(lr->negative_slope); @@ -90,7 +91,7 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { } else if (CaselessEq()(layer->type, "norm") || CaselessEq()(layer->type, "lrn")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of NormLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of NormLayer class"; } params["alpha"] = CNNLayer::ie_serialize_float(lr->_alpha); params["beta"] = CNNLayer::ie_serialize_float(lr->_beta); @@ -99,7 +100,7 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { } else if (CaselessEq()(layer->type, "pooling")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of PoolingLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of PoolingLayer class"; } params["kernel"] = arrayRevertToIRProperty(lr->_kernel); params["pads_begin"] = arrayRevertToIRProperty(lr->_padding); @@ -115,44 +116,44 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { break; default: - THROW_IE_EXCEPTION << "Found unsupported pooling method: " << lr->_type; + IE_THROW() << "Found unsupported pooling method: " << lr->_type; } } else if (CaselessEq()(layer->type, "split")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of SplitLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of SplitLayer class"; } params["axis"] = std::to_string(lr->_axis); } else if (CaselessEq()(layer->type, "concat")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of ConcatLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of ConcatLayer class"; } params["axis"] = std::to_string(lr->_axis); } else if (CaselessEq()(layer->type, "FullyConnected") || CaselessEq()(layer->type, "InnerProduct")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of FullyConnectedLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of FullyConnectedLayer class"; } params["out-size"] = std::to_string(lr->_out_num); } else if (CaselessEq()(layer->type, "softmax")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of SoftMaxLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of SoftMaxLayer class"; } params["axis"] = std::to_string(lr->axis); } else if (CaselessEq()(layer->type, "reshape")) { // need to add here support of flatten layer if it is created from API auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of ReshapeLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of ReshapeLayer class"; } params["dim"] = arrayToIRProperty(lr->shape); } else if (CaselessEq()(layer->type, "Eltwise")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of EltwiseLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of EltwiseLayer class"; } std::string op; @@ -178,13 +179,13 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { } else if (CaselessEq()(layer->type, "scaleshift")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of ScaleShiftLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of ScaleShiftLayer class"; } params["broadcast"] = std::to_string(lr->_broadcast); } else if (CaselessEq()(layer->type, "crop")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of CropLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of CropLayer class"; } params["axis"] = arrayToIRProperty(lr->axis); params["offset"] = arrayToIRProperty(lr->offset); @@ -192,51 +193,51 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { } else if (CaselessEq()(layer->type, "tile")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of TileLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of TileLayer class"; } params["axis"] = std::to_string(lr->axis); params["tiles"] = std::to_string(lr->tiles); } else if (CaselessEq()(layer->type, "prelu")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of PReLULayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of PReLULayer class"; } params["channel_shared"] = std::to_string(lr->_channel_shared); } else if (CaselessEq()(layer->type, "clamp")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of ClampLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of ClampLayer class"; } params["min"] = CNNLayer::ie_serialize_float(lr->min_value); params["max"] = CNNLayer::ie_serialize_float(lr->max_value); } else if (CaselessEq()(layer->type, "BatchNormalization")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of BatchNormalizationLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of BatchNormalizationLayer class"; } params["epsilon"] = CNNLayer::ie_serialize_float(lr->epsilon); } else if (CaselessEq()(layer->type, "grn")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of GRNLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of GRNLayer class"; } params["bias"] = CNNLayer::ie_serialize_float(lr->bias); } else if (CaselessEq()(layer->type, "mvn")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of MVNLayer class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of MVNLayer class"; } params["across_channels"] = std::to_string(lr->across_channels); params["normalize_variance"] = std::to_string(lr->normalize); } else if (CaselessEq()(layer->type, "LSTMCell")) { auto* lr = dynamic_cast(layerPtr); if (lr == nullptr) { - THROW_IE_EXCEPTION << "Layer " << layerPtr->name << " is not instance of LSTMCell class"; + IE_THROW() << "Layer " << layerPtr->name << " is not instance of LSTMCell class"; } params["hidden_size"] = std::to_string(lr->hidden_size); } else if (CaselessEq()(layer->type, "rnn") || CaselessEq()(layer->type, "TensorIterator")) { - THROW_IE_EXCEPTION << "Not covered layers for writing to IR"; + IE_THROW() << "Not covered layers for writing to IR"; } if (layer->params.find("quantization_level") != layer->params.end()) { @@ -255,87 +256,9 @@ void UpdateStdLayerParams(const CNNLayer::Ptr& layer) { } } -std::vector TopologicalSort(const CNNNetwork& network) { - std::vector ordered; - std::unordered_set used; - - OutputsDataMap outputs = network.getOutputsInfo(); - InputsDataMap inputs = network.getInputsInfo(); - - auto get_consumers = [](const CNNLayerPtr& node) -> std::vector { - std::vector consumers; - for (const auto & output : node->outData) { - for (const auto &consumer : getInputTo(output)) { - consumers.push_back(consumer.second); - } - } - return consumers; - }; - auto bfs = [&used, &ordered, &get_consumers](const CNNLayerPtr& start_node, bool traverse_via_outputs = false) { - if (!start_node) return; - std::deque q; - q.push_front(start_node); - while (!q.empty()) { - auto node = q.front(); - q.pop_front(); - if (used.insert(node->name).second) { - ordered.push_back(node); - } - - // Traverse via inputs - for (const auto & input : node->insData) { - auto locked_input = input.lock(); - if (!locked_input) { - THROW_IE_EXCEPTION << "insData for " << node->name << " is not valid."; - } - if (auto next_node = getCreatorLayer(locked_input).lock()) { - if (!used.count(next_node->name)) { - // Check that all consumers were used - bool all_consumers_used(true); - for (const auto & consumer : get_consumers(next_node)) { - if (!used.count(consumer->name)) all_consumers_used = false; - } - if (all_consumers_used) { - q.push_front(next_node); - } - } - } - } - - // Traverse via outputs - if (traverse_via_outputs) { - for (const auto &consumer : get_consumers(node)) { - if (!used.count(consumer->name)) { - q.push_front(consumer); - } - } - } - } - }; - - // First we run bfs starting from outputs that provides deterministic graph traverse - for (const auto & output : outputs) { - if (!used.count(output.first)) { - bfs(getCreatorLayer(output.second).lock()); - } - } - - // For cases when graph has no outputs we start bfs from inputs to ensure topological sort - for (const auto & input : inputs) { - const auto data_ptr = input.second->getInputData(); - for (const auto & consumer : getInputTo(data_ptr)) - if (!used.count(consumer.first)) { - bfs(consumer.second, true); - } - } - - std::reverse(ordered.begin(), ordered.end()); - return ordered; -} - std::size_t FillXmlDoc(const InferenceEngine::CNNNetwork& network, pugi::xml_document& doc, const bool execGraphInfoSerialization, const bool dumpWeights) { - const std::vector ordered = TopologicalSort(network); + const std::vector ordered = InferenceEngine::details::CNNNetSortTopologically(network); pugi::xml_node netXml = doc.append_child("net"); netXml.append_attribute("name").set_value(network.getName().c_str()); @@ -427,7 +350,7 @@ std::size_t FillXmlDoc(const InferenceEngine::CNNNetwork& network, pugi::xml_doc if (!node->outData.empty()) { auto itFrom = matching.find(node); if (itFrom == matching.end()) { - THROW_IE_EXCEPTION << "Internal error, cannot find " << node->name + IE_THROW() << "Internal error, cannot find " << node->name << " in matching container during serialization of IR"; } for (size_t oport = 0; oport < node->outData.size(); oport++) { @@ -437,7 +360,7 @@ std::size_t FillXmlDoc(const InferenceEngine::CNNNetwork& network, pugi::xml_doc if (inputTo.second->insData[iport].lock() == outData) { auto itTo = matching.find(inputTo.second); if (itTo == matching.end()) { - THROW_IE_EXCEPTION << "Broken edge form layer " << node->name << " to layer " + IE_THROW() << "Broken edge form layer " << node->name << " to layer " << inputTo.first << "during serialization of IR"; } pugi::xml_node edge = edges.append_child("edge"); @@ -457,7 +380,7 @@ std::size_t FillXmlDoc(const InferenceEngine::CNNNetwork& network, pugi::xml_doc } void SerializeBlobs(std::ostream& stream, const InferenceEngine::CNNNetwork& network) { - const std::vector ordered = TopologicalSort(network); + const std::vector ordered = InferenceEngine::details::CNNNetSortTopologically(network); for (auto&& node : ordered) { if (!node->blobs.empty()) { for (const auto& dataIt : node->blobs) { @@ -466,7 +389,7 @@ void SerializeBlobs(std::ostream& stream, const InferenceEngine::CNNNetwork& net size_t dataSize = dataIt.second->byteSize(); stream.write(dataPtr, dataSize); if (!stream.good()) { - THROW_IE_EXCEPTION << "Error during writing blob weights"; + IE_THROW() << "Error during writing blob weights"; } } } @@ -484,7 +407,7 @@ void SerializeBlobs(std::ostream& stream, const InferenceEngine::CNNNetwork& net size_t dataSize = preProcessChannel->meanData->byteSize(); stream.write(dataPtr, dataSize); if (!stream.good()) { - THROW_IE_EXCEPTION << "Error during writing mean data"; + IE_THROW() << "Error during writing mean data"; } } } @@ -500,14 +423,14 @@ void Serialize(const std::string& xmlPath, const std::string& binPath, bool execGraphInfoSerialization = false; pugi::xml_document doc; - const std::vector ordered = TopologicalSort(network); + const std::vector ordered = InferenceEngine::details::CNNNetSortTopologically(network); // If first layer has perfCounter parameter set then it's executable graph info serialization. // All other layers must also have this parameter set. if (ordered[0]->params.find(ExecGraphInfoSerialization::PERF_COUNTER) != ordered[0]->params.end()) { execGraphInfoSerialization = true; for (const auto& layer : ordered) { if (layer->params.find(ExecGraphInfoSerialization::PERF_COUNTER) == layer->params.end()) { - THROW_IE_EXCEPTION << "Each node must have " << ExecGraphInfoSerialization::PERF_COUNTER + IE_THROW() << "Each node must have " << ExecGraphInfoSerialization::PERF_COUNTER << " parameter set in case of executable graph info serialization"; } } @@ -517,14 +440,14 @@ void Serialize(const std::string& xmlPath, const std::string& binPath, FillXmlDoc(network, doc, execGraphInfoSerialization, dumpWeights); if (!doc.save_file(xmlPath.c_str())) { - THROW_IE_EXCEPTION << "file '" << xmlPath << "' was not serialized"; + IE_THROW() << "file '" << xmlPath << "' was not serialized"; } if (dumpWeights) { std::ofstream ofsBin; ofsBin.open(binPath, std::ofstream::out | std::ofstream::binary); if (!ofsBin.is_open()) { - THROW_IE_EXCEPTION << "File '" << binPath << "' is not opened as out file stream"; + IE_THROW() << "File '" << binPath << "' is not opened as out file stream"; } try { SerializeBlobs(ofsBin, network); @@ -534,9 +457,9 @@ void Serialize(const std::string& xmlPath, const std::string& binPath, } ofsBin.close(); if (!ofsBin.good()) { - THROW_IE_EXCEPTION << "Error during '" << binPath << "' closing"; + IE_THROW() << "Error during '" << binPath << "' closing"; } } } } // namespace Serialization -} // namespace InferenceEngine \ No newline at end of file +} // namespace InferenceEngine diff --git a/inference-engine/src/legacy_api/src/network_serializer_v7.hpp b/inference-engine/src/legacy_api/src/network_serializer_v7.hpp index ae0149fb243d7f..a97f5c8575b449 100644 --- a/inference-engine/src/legacy_api/src/network_serializer_v7.hpp +++ b/inference-engine/src/legacy_api/src/network_serializer_v7.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/crop_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/crop_ie.cpp index 36fec4b14eacf4..88b6c458a4c0e2 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/crop_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/crop_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/eltwise.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/eltwise.cpp index e5c363b3af12ee..ed10c65989507e 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/eltwise.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/fully_connected.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/fully_connected.cpp index f01ab76f7efec3..5a148039eba0c6 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/fully_connected.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/fully_connected.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/gather_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/gather_ie.cpp index 1e40623b9b93cb..5191353c7c9359 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/gather_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/gather_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/gather_tree_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/gather_tree_ie.cpp index dcb4dab38e12c2..fed64466e3d3a2 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/gather_tree_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/gather_tree_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/gru_cell_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/gru_cell_ie.cpp index fb50c25e0e828f..0707a0e59eca4c 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/gru_cell_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/gru_cell_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/gru_sequence_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/gru_sequence_ie.cpp index 6f88d4546b7989..296e65a786d7af 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/gru_sequence_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/gru_sequence_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/hard_sigmoid_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/hard_sigmoid_ie.cpp index 4ccc0e8e60a82b..f3cf07687123c4 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/hard_sigmoid_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/hard_sigmoid_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/interp.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/interp.cpp index 505b85ebbcce21..5364a16d9e0024 100755 --- a/inference-engine/src/legacy_api/src/ngraph_ops/interp.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/interp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/lrn_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/lrn_ie.cpp index 9cdf5a53f36436..d33640bb4ab9c3 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/lrn_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/lrn_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/lstm_cell_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/lstm_cell_ie.cpp index 67f417a78fc942..49c9221cc472f6 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/lstm_cell_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/lstm_cell_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/lstm_sequence_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/lstm_sequence_ie.cpp index d21e82dbd40524..e0aa3f3ef77064 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/lstm_sequence_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/lstm_sequence_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/nms_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/nms_ie.cpp index 34a65d45e05922..82a0315ec74fe0 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/nms_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/nms_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/normalize_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/normalize_ie.cpp index cacd807031f086..bacbd7b447903e 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/normalize_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/normalize_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/onehot_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/onehot_ie.cpp index 403b82fcd61ec5..378349c763c91c 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/onehot_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/onehot_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/pad_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/pad_ie.cpp index 4456466f54c07a..89d855afdff691 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/pad_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/pad_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/power.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/power.cpp index 93e0648ea119d3..91a098de6285d2 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/power.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/power.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_clustered_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_clustered_ie.cpp index 39d09996789cb9..1b822ee0ce8011 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_clustered_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_clustered_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,15 +44,6 @@ bool op::PriorBoxClusteredIE::visit_attributes(AttributeVisitor& visitor) { visitor.on_attribute("step", step); visitor.on_attribute("step_w", m_attrs.step_widths); visitor.on_attribute("step_h", m_attrs.step_heights); - if (step != 0) { - // deserialization: if step_w/h is 0 replace it with step - if (m_attrs.step_widths == 0) { - m_attrs.step_widths = step; - } - if (m_attrs.step_heights == 0) { - m_attrs.step_heights = step; - } - } visitor.on_attribute("width", m_attrs.widths); visitor.on_attribute("height", m_attrs.heights); visitor.on_attribute("clip", m_attrs.clip); diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_ie.cpp index 8429807b91d4f7..3ced449bf784b3 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/prior_box_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/proposal_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/proposal_ie.cpp index 9dc0de5c45ea07..cb05d5eebcfa02 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/proposal_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/proposal_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/relu_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/relu_ie.cpp index 1ed40f28ac80e9..cc8925d855fcd8 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/relu_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/relu_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/rnn_cell_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/rnn_cell_ie.cpp index e6b4de45ee1bbc..ce94660d908561 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/rnn_cell_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/rnn_cell_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/rnn_sequence_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/rnn_sequence_ie.cpp index 4aac87fe5a2ef1..6b0a1c97dd400d 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/rnn_sequence_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/rnn_sequence_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/scaleshift.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/scaleshift.cpp index a0d5444b0829fa..7957d72ef2d5c6 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/scaleshift.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/scaleshift.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/selu_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/selu_ie.cpp index 172e7c639447eb..fe97fafcb87cb4 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/selu_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/selu_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/swish_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/swish_ie.cpp index e2cd788f15bf70..b4ba481f847df5 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/swish_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/swish_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/tile_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/tile_ie.cpp index 2ca0647063de7f..432bc59d85db91 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/tile_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/tile_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/ngraph_ops/topk_ie.cpp b/inference-engine/src/legacy_api/src/ngraph_ops/topk_ie.cpp index 0a780d2b896c23..cef70012374907 100644 --- a/inference-engine/src/legacy_api/src/ngraph_ops/topk_ie.cpp +++ b/inference-engine/src/legacy_api/src/ngraph_ops/topk_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/precomp.hpp b/inference-engine/src/legacy_api/src/precomp.hpp index 9dbb2938812fab..78e7c11b636275 100644 --- a/inference-engine/src/legacy_api/src/precomp.hpp +++ b/inference-engine/src/legacy_api/src/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.cpp index 10aed9b5a15336..d26329f29df58c 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.cpp index 3b8e9786b7a064..c0c7d12f17b4a1 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.cpp index fa596d347d2fd1..fc09caa5c49ae3 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.cpp index f406918967455d..6772e7647f8557 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.cpp index a7c822ef4616b9..795e8cb5be63db 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.cpp index bd6d5493ea8296..3a07f34b034755 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.cpp index 081f8a25bea7bd..8374256f11a0c5 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,6 +39,11 @@ ngraph::pass::ConvertMatMulToFC::ConvertMatMulToFC() { auto shape_b = input_b.get_shape(); auto output_shape = matmul->get_shape(); + // Transformation to FC is not supported for 1D second input + if (shape_b.size() == 1) { + return false; + } + /* * get_aligned_shapes function align two input shapes to have the same size and * the same batch dimensions (last two dimensions are not comparable). @@ -54,7 +59,7 @@ ngraph::pass::ConvertMatMulToFC::ConvertMatMulToFC() { for (size_t i = 0, cnt = max_size - shape_b_aligned.size(); i < cnt; ++i) shape_b_aligned.insert(shape_b_aligned.begin(), 1); - if (matmul->get_transpose_a()) { + if (matmul->get_transpose_a() && shape_a.size() != 1) { std::swap(*(shape_a_aligned.end() - 1), *(shape_a_aligned.end() - 2)); } if (matmul->get_transpose_b()) { @@ -138,7 +143,7 @@ ngraph::pass::ConvertMatMulToFC::ConvertMatMulToFC() { } // Input normalization - if (matmul->get_transpose_a()) { + if (matmul->get_transpose_a() && shape_a.size() != 1) { fc_input_a = create_transpose(fc_input_a, matmul->get_friendly_name() + "/transpose_a"); new_ops.push_back(fc_input_a.get_node_shared_ptr()); } @@ -185,7 +190,33 @@ ngraph::pass::ConvertMatMulToGemm::ConvertMatMulToGemm() { auto fc_input_a = input_a, fc_input_b = input_b; NodeVector new_ops; + if (shape_a.size() == 1) { + // If the first input is 1D tensor, it is unsqueezed to 2D tensor (row vector) + // by adding axes with size 1 at ROW_INDEX_DIM, to the left of the shape. + // For example {S} will be reshaped to {1, S}. + fc_input_a = std::make_shared(fc_input_a, + ngraph::opset1::Constant::create(element::i64, Shape{1}, {0})); + shape_a = fc_input_a.get_shape(); + new_ops.push_back(fc_input_a.get_node_shared_ptr()); + // For 1D inputs transpose flag is expected to always act like `false` + matmul->set_transpose_a(false); + } + if (shape_b.size() == 1) { + // If the second input is 1D tensor, it is unsqueezed to 2D tensor (column vector) + // by adding axes with size 1 at COL_INDEX_DIM, to the right of the shape. + // For example {S} will be reshaped to {S, 1}. + fc_input_b = std::make_shared(fc_input_b, + ngraph::opset1::Constant::create(element::i64, Shape{1}, {1})); + shape_b = fc_input_b.get_shape(); + new_ops.push_back(fc_input_b.get_node_shared_ptr()); + // For 1D inputs transpose flag is expected to always act like `false` + matmul->set_transpose_b(false); + } + // WA for IE that Gemm must have inputs with the same length. + // If ranks of input arguments are still different, + // the smaller tensor is unsqueezed from the left side of the shape + // by necessary number of axes to make both shapes of the same rank. if (shape_a.size() < shape_b.size()) { // Reshape first input (fc_input_a) Shape reshape_shape(shape_b.size() - shape_a.size(), 1); @@ -194,17 +225,8 @@ ngraph::pass::ConvertMatMulToGemm::ConvertMatMulToGemm() { new_ops.push_back(fc_input_a.get_node_shared_ptr()); } else if (shape_b.size() < shape_a.size()) { // Reshape second input (fc_input_b) - Shape reshape_shape; - if (shape_b.size() == 1) { - // In case if shape_b has only one dimension we reshape it to [...,1,X,1] - reshape_shape = Shape(shape_a.size() - (shape_b.size() + 1), 1); - reshape_shape.push_back(shape_b[0]); // add X dimension - reshape_shape.push_back(1); // add last 1 dimension - } else { - // In this case we reshape shape_b to [...,1,1,X] - reshape_shape = Shape(shape_a.size() - shape_b.size(), 1); - reshape_shape.insert(reshape_shape.end(), shape_b.begin(), shape_b.end()); - } + Shape reshape_shape(shape_a.size() - shape_b.size(), 1); + reshape_shape.insert(reshape_shape.end(), shape_b.begin(), shape_b.end()); fc_input_b = op::util::reshapeTo(fc_input_b, reshape_shape); new_ops.push_back(fc_input_b.get_node_shared_ptr()); } @@ -213,10 +235,18 @@ ngraph::pass::ConvertMatMulToGemm::ConvertMatMulToGemm() { new_ops.push_back(gemm); if (gemm->get_shape() != output_shape) { - // This case is possible only when second input had exactly 1 dimension (that is not supported by GEMM operation) - // and for this case we have to reshape second input to first but this affects output shape (additional dimensions) + // This case is possible when one of the inputs has exactly 1 dimension (that is not supported by GEMM operation) // So to preserve output shape we insert additional reshape operation - auto reshape_output = op::util::reshapeTo(gemm, output_shape); + std::shared_ptr reshape_output; + if (output_shape.size() == 0) { + std::vector dim_indices(gemm->get_shape().size()); + std::iota(dim_indices.begin(), dim_indices.end(), 0); + reshape_output = std::make_shared(gemm, + ngraph::opset1::Constant::create(element::i64, Shape{dim_indices.size()}, dim_indices)); + } else { + reshape_output = op::util::reshapeTo(gemm, output_shape); + } + new_ops.push_back(reshape_output); gemm->set_friendly_name(matmul->get_friendly_name() + "/gemm"); reshape_output->set_friendly_name(matmul->get_friendly_name()); diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.cpp index d0c18fc4248811..de8bf432af65c7 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_add_to_scaleshift_or_power.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.cpp index 6d2d80f39fdc97..150e60cda34044 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_mul_or_add_finally.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.cpp index 8c4c0e76cb786e..94c6c1f8b1f564 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_5_to_legacy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.cpp index 5403c5fa860d30..81094ea043595f 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.cpp index 34c9ca8591ba33..be8c8a704efcf3 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.cpp index e4728557a34ae2..ecc0e8d43c7529 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.cpp index bda1a0651f3f0f..004b61bd8a0c1e 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.cpp index 37b4dcdf3b6031..f6ef75d4ec1f6d 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.cpp index 67471fa3ec5133..3b7b354630efa9 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.cpp index 92ae4b7aefdb01..d62dc4101bb341 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.cpp index 88ebbd8263d1b4..9222f95b622ed3 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_prior_to_ie_prior.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.cpp index 2f8abc8b08abfa..4a0a90851e0761 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.cpp index ebf50f04988ddd..3578811c57226c 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.cpp index 7aa5ebd85038bb..a1a0ad9f509781 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sequences_to_sequences_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -116,6 +116,7 @@ ngraph::pass::ConvertLSTMSequenceMatcher::ConvertLSTMSequenceMatcher() { if (lstm_target_inputs.empty()) return false; auto transpose_after = lstm_target_inputs.begin()->get_node()->shared_from_this(); + unsqueeze_1->set_friendly_name(transpose_after->get_friendly_name()); ngraph::replace_node(transpose_after, unsqueeze_1); ngraph::replace_node(lstm_sequence, {lstm_sequence_ie->output(0), unsqueeze_2->output(0), unsqueeze_3->output(0)}); } @@ -186,6 +187,7 @@ ngraph::pass::ConvertGRUSequenceMatcher::ConvertGRUSequenceMatcher() { if (gru_target_inputs.empty()) return false; auto transpose_after = gru_target_inputs.begin()->get_node()->shared_from_this(); + unsqueeze_1->set_friendly_name(transpose_after->get_friendly_name()); ngraph::replace_node(transpose_after, unsqueeze_1); ngraph::replace_node(gru_sequence, {gru_sequence_ie->output(0), unsqueeze_2->output(0)}); } @@ -257,6 +259,7 @@ ngraph::pass::ConvertRNNSequenceMatcher::ConvertRNNSequenceMatcher() { if (rnn_target_inputs.empty()) return false; auto transpose_after = rnn_target_inputs.begin()->get_node()->shared_from_this(); + unsqueeze_1->set_friendly_name(transpose_after->get_friendly_name()); ngraph::replace_node(transpose_after, unsqueeze_1); ngraph::replace_node(rnn_sequence, {rnn_sequence_ie->output(0), unsqueeze_2->output(0)}); } diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.cpp index 08880bc2a460f5..6af9a987096135 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.cpp index 083a1a0a56c942..a3ec122b9c7ab3 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.cpp index 4cfa19dac56b65..0d630356bc7fca 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_swish_to_swish_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.cpp index 702fe6f5ec2efe..a69e7ae68f3b4f 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.cpp index 8b01bd47bba5ce..6b0d59880096d7 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/fc_bias_fusion.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/fc_bias_fusion.cpp index ac2571d4435455..6431f3f6cc3dd0 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/fc_bias_fusion.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/fc_bias_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_1d_ops.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_1d_ops.cpp index f66ac792a1e97d..0c9a207942585c 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_1d_ops.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_1d_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fc_fusion.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fc_fusion.cpp index 93333e85a4eb29..4683cee54169ce 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fc_fusion.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fc_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fully_connected.cpp b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fully_connected.cpp index 509f1bd620d060..f5f5ea1f16a3d1 100644 --- a/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fully_connected.cpp +++ b/inference-engine/src/legacy_api/src/transformations/convert_opset1_to_legacy/reshape_fully_connected.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/CMakeLists.txt b/inference-engine/src/low_precision_transformations/CMakeLists.txt index 55e73a0d7d9bac..9ec6757c192627 100644 --- a/inference-engine/src/low_precision_transformations/CMakeLists.txt +++ b/inference-engine/src/low_precision_transformations/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/add.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/add.hpp index bae35aadb12293..fa64037797a384 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/add.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/add.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/avg_pool.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/avg_pool.hpp index 5bb38a3f0f7955..823c8990110904 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/avg_pool.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/avg_pool.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/clamp.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/clamp.hpp index 1fd9e3f8fbc50b..7698cf5b6da3ca 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/clamp.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/clamp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/common/dequantization_op.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/common/dequantization_op.hpp index b25f020fe103cc..e2fdc58f1b7e18 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/common/dequantization_op.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/common/dequantization_op.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/common/fake_quantize_dequantization.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/common/fake_quantize_dequantization.hpp index 33d9507836a7d9..67c522bb7e3fcf 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/common/fake_quantize_dequantization.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/common/fake_quantize_dequantization.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -29,7 +29,7 @@ class FakeQuantizeDequantization { const std::shared_ptr& multiplyConstant); bool empty() const; - bool multiplyHasZero() const; + bool multiplyHasZeroOrDenormal() const; bool isShared() const; bool isLowPrecision() const; diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/common/ie_lpt_exception.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/common/ie_lpt_exception.hpp index a426b2b8fe0e6d..aef713a02ccb22 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/common/ie_lpt_exception.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/common/ie_lpt_exception.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,12 +19,12 @@ namespace ngraph { namespace pass { namespace low_precision { -class TRANSFORMATIONS_API InferenceEngineException : std::exception { +class TRANSFORMATIONS_API Exception : std::exception { std::shared_ptr buffer; mutable std::string buffer_str; public: template - InferenceEngineException& operator<< (const T& x) { + Exception& operator<< (const T& x) { *buffer << x; return *this; } @@ -35,10 +35,10 @@ class TRANSFORMATIONS_API InferenceEngineException : std::exception { } }; -#define THROW_TRANSFORMATION_EXCEPTION throw ::ngraph::pass::low_precision::InferenceEngineException() << __FILE__ << ":" << __LINE__ << " " +#define THROW_TRANSFORMATION_EXCEPTION throw ::ngraph::pass::low_precision::Exception() << __FILE__ << ":" << __LINE__ << " " -class TRANSFORMATIONS_API InferenceEngineLptException : public InferenceEngineException { +class TRANSFORMATIONS_API InferenceEngineLptException : public Exception { public: InferenceEngineLptException(const std::string& filename, const size_t line, const Node& node) { *this diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/common/subgraph.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/common/subgraph.hpp index 2703d92ef028ae..83e8cfc9cc955c 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/common/subgraph.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/common/subgraph.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/concat.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/concat.hpp index 834a735da31ab4..8ed8dfde55c013 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/concat.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/concat_multi_channels.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/concat_multi_channels.hpp index dd6132bfd15f59..06515d0d72e6d5 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/concat_multi_channels.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/concat_multi_channels.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,19 +27,19 @@ class TRANSFORMATIONS_API ConcatMultiChannelsTransformation : public ConcatTrans bool isPrecisionPreserved(std::shared_ptr layer) const noexcept override; private: - static void fillDequantization( + void fillDequantization( std::shared_ptr layer, std::unordered_map& dequantizationByFakeQuantize, - std::vector& dequantizationsToConcatenate); + std::vector& dequantizationsToConcatenate) const; - static void fillQuantization( + void fillQuantization( const std::shared_ptr layer, const std::unordered_map& dequantizationByFakeQuantize, - std::vector& dequantization); + std::vector& dequantization) const; - static FakeQuantizeDequantization getConcatenatedDequantization( + FakeQuantizeDequantization getConcatenatedDequantization( const std::shared_ptr concat, - const std::vector& dequantization); + const std::vector& dequantization) const; static FakeQuantizeDequantization getFoldedDequantization( const std::shared_ptr operation, diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/convert.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/convert.hpp index e01c79ce903282..ca860903420873 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/convert.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/convert.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/convolution.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/convolution.hpp index 3edd32584705e0..e3041a0b08f2c1 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/convolution.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/depth_to_space.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/depth_to_space.hpp index 2deb9b75ac5fd2..0fc9d6446897d1 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/depth_to_space.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/depth_to_space.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/eltwise_base_transformation.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/eltwise_base_transformation.hpp index e6780d99e9b78e..bffbd7bea508c6 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/eltwise_base_transformation.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/eltwise_base_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize.hpp index 4a260aeebcaefa..ac75f406a2be98 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize_decomposition.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize_decomposition.hpp index 15cc2c1e9858ff..0c6da56592e334 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize_decomposition.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/fake_quantize_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/fold_convert.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/fold_convert.hpp index 56fcb241e7416b..d41706f920579b 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/fold_convert.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/fold_convert.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_convert.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_convert.hpp index 28446b72fff9fa..e8f2e864e46e29 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_convert.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_convert.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_fake_quantize.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_fake_quantize.hpp index 2ad3f5a07d595c..8d46c68f3d77d1 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_fake_quantize.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_fake_quantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_multiply_to_fake_quantize.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_multiply_to_fake_quantize.hpp index 129edf9a5d2145..dea0fa340551b3 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_multiply_to_fake_quantize.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_multiply_to_fake_quantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_subtract_to_fake_quantize.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_subtract_to_fake_quantize.hpp index ad63f9013fadfb..2c67aebfcf186a 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/fuse_subtract_to_fake_quantize.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/fuse_subtract_to_fake_quantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/group_convolution.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/group_convolution.hpp index dd1ec9382253dd..0372f0173d9d87 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/group_convolution.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/group_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/ilayer_transformations_manager.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/ilayer_transformations_manager.hpp index 9df25cb85aeb7d..389584b7448203 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/ilayer_transformations_manager.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/ilayer_transformations_manager.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/interpolate.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/interpolate.hpp index 55f1f86202c81b..184d1c159fe615 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/interpolate.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/interpolate.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/iparams_manager.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/iparams_manager.hpp index c7119eea88915a..2d45179a600b9a 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/iparams_manager.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/iparams_manager.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/layer_transformation.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/layer_transformation.hpp index ac9b90c72524c2..e401bf8d6f71ad 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/layer_transformation.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/layer_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -171,13 +171,17 @@ class TRANSFORMATIONS_API LayerTransformation { const QuantizedTensorAlignment quantizedTensorAlignmentOnWeights = QuantizedTensorAlignment::None, bool supportAsymmetricQuantization = false, std::vector precisionsOnActivations = { element::u8, element::i8 }, - std::vector precisionsOnWeights = { element::i8 }) : + std::vector precisionsOnWeights = { element::i8 }, + element::Type deqPrecision = element::f32, + bool support3DTensorOnActivations = true) : updatePrecisions(updatePrecisions), quantizedTensorAlignmentOnActivations(quantizedTensorAlignmentOnActivations), quantizedTensorAlignmentOnWeights(quantizedTensorAlignmentOnWeights), supportAsymmetricQuantization(supportAsymmetricQuantization), precisionsOnActivations(precisionsOnActivations), - precisionsOnWeights(precisionsOnWeights) { + precisionsOnWeights(precisionsOnWeights), + deqPrecision(deqPrecision), + support3DTensorOnActivations(support3DTensorOnActivations) { if (precisionsOnActivations.size() == 0ul) { THROW_TRANSFORMATION_EXCEPTION << "precisions on activations are not specisifed"; } @@ -217,12 +221,19 @@ class TRANSFORMATIONS_API LayerTransformation { return *this; } + Params& setSupport3DTensorOnActivations(const bool support3DTensorOnActivations) { + this->support3DTensorOnActivations = support3DTensorOnActivations; + return *this; + } + bool updatePrecisions; QuantizedTensorAlignment quantizedTensorAlignmentOnActivations; QuantizedTensorAlignment quantizedTensorAlignmentOnWeights; bool supportAsymmetricQuantization; std::vector precisionsOnActivations; std::vector precisionsOnWeights; + element::Type deqPrecision; + bool support3DTensorOnActivations; }; class PrecisionDetails { @@ -297,6 +308,8 @@ class TRANSFORMATIONS_API LayerTransformation { bool supportAsymmetricQuantization; std::vector precisionsOnActivations; std::vector precisionsOnWeights; + element::Type deqPrecision; + bool support3DTensorOnActivations; // absolute value, used to determine quantization interval asymmetry float quantizationIntervalAsymmetryThreshold; diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/main.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/main.hpp index a1bed3b576e448..79ce4f06ace999 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/main.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/main.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/mat_mul.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/mat_mul.hpp index f2da73453df751..332d28b934b44e 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/mat_mul.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/mat_mul.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/max_pool.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/max_pool.hpp index 892e197f12e9c4..2cf1d54eda7f44 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/max_pool.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/max_pool.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/multiply.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/multiply.hpp index bd2f8d0e37c8b3..30f1cff5444d37 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/multiply.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/multiply.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/multiply_to_group_convolution.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/multiply_to_group_convolution.hpp index 49a6c007d524e6..d4a575f4d9a9de 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/multiply_to_group_convolution.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/multiply_to_group_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/mvn.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/mvn.hpp index 3210068c4fd049..37244a3aa74c0b 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/mvn.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/mvn.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/network_helper.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/network_helper.hpp index 1d1e21747734a6..f113f749c687fe 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/network_helper.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/network_helper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -78,6 +78,13 @@ class TRANSFORMATIONS_API NetworkHelper { static std::shared_ptr getConstantInput(std::shared_ptr node); + static int getConstantInputIndex(std::shared_ptr node); + + static std::vector updateReshapeValues( + const Shape& elementwiseConstantShape, + const Shape& elementwiseShape, + const std::vector& reshapeValues); + // Optimizes the series of multiplies after a given output port static std::shared_ptr optimizeMultipliesAfter(std::shared_ptr multiply); @@ -91,7 +98,8 @@ class TRANSFORMATIONS_API NetworkHelper { const float min, const float max, const bool hasZeroPoint, - const bool updatePrecision); + const bool updatePrecision, + const element::Type deqPrecision = element::f32); static std::shared_ptr updateFakeQuantize( std::shared_ptr fq, @@ -105,8 +113,7 @@ class TRANSFORMATIONS_API NetworkHelper { const ngraph::element::Type originalPrecision, const ngraph::Shape dataNodeOutputShape, element::Type precision, - float min, - float max); + const element::Type deqPrecision = element::f32); static FakeQuantizeDequantization createDequantizationFromFakeQuantize( std::shared_ptr fq, @@ -114,7 +121,8 @@ class TRANSFORMATIONS_API NetworkHelper { float min, float max, const bool hasZeroPoint, - const bool updatePrecision); + const bool updatePrecision, + const element::Type deqPrecision = element::f32); static bool areQuantizeAndDequantizeSupportedForSubtract(const std::shared_ptr& node); @@ -128,6 +136,8 @@ class TRANSFORMATIONS_API NetworkHelper { static FakeQuantizeDequantization normalizeDequantization(FakeQuantizeDequantization dequantization); + static std::shared_ptr normalizeDequantizationShape(const std::shared_ptr& eltwise); + // 1. remove Convert if possible // 2. optimize Constant if possible // 3. remove Subtract if Constant on the second branch is zero @@ -155,8 +165,6 @@ class TRANSFORMATIONS_API NetworkHelper { static size_t getParentOutputIndex(const std::shared_ptr& parent, const std::shared_ptr& child); - static std::vector> getInputs(const std::shared_ptr& node); - static FakeQuantizeDequantizationValues createEmptyValues(const FakeQuantizeDequantization& dequantization); static bool isZeroConst(const std::shared_ptr& node); diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/normalize_l2.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/normalize_l2.hpp index d44d08976efb33..9591a631e86a6b 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/normalize_l2.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/normalize_l2.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/prelu.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/prelu.hpp index 7a1c68e7ad87dc..ef767127315a60 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/prelu.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/prelu.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/pull_reshape_through_dequantization.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/pull_reshape_through_dequantization.hpp new file mode 100644 index 00000000000000..639e1a00e65c74 --- /dev/null +++ b/inference-engine/src/low_precision_transformations/include/low_precision/pull_reshape_through_dequantization.hpp @@ -0,0 +1,26 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace ngraph { +namespace pass { +namespace low_precision { + +class TRANSFORMATIONS_API PullReshapeThroughDequantization; + +} // namespace low_precision +} // namespace pass +} // namespace ngraph + +class ngraph::pass::low_precision::PullReshapeThroughDequantization : public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + PullReshapeThroughDequantization(const std::vector& inputPrecisions = {}); +}; diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/pull_transpose_through_dequantization.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/pull_transpose_through_dequantization.hpp new file mode 100644 index 00000000000000..3f1648841220b3 --- /dev/null +++ b/inference-engine/src/low_precision_transformations/include/low_precision/pull_transpose_through_dequantization.hpp @@ -0,0 +1,26 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +namespace ngraph { +namespace pass { +namespace low_precision { + +class TRANSFORMATIONS_API PullTransposeThroughDequantization; + +} // namespace low_precision +} // namespace pass +} // namespace ngraph + +class ngraph::pass::low_precision::PullTransposeThroughDequantization : public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + PullTransposeThroughDequantization(const std::vector& inputPrecisions = {}); +}; diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/relu.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/relu.hpp index 041580d759acd9..734a42273c50c3 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/relu.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/relu.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/reshape.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/reshape.hpp index e46dda375615a8..0b0c31c914a4c0 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/reshape.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/reshape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/split.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/split.hpp index 5d34c3e51f637b..c7a41cd25c7b37 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/split.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/squeeze.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/squeeze.hpp index 6bba267fff6ad4..df4d3576a2b68d 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/squeeze.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/squeeze.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/strided_slice.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/strided_slice.hpp index ab8e8330920ffc..2228020d45988c 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/strided_slice.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/strided_slice.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/subtract.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/subtract.hpp index 5e194b4154e4ce..e0beb34946ae88 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/subtract.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/subtract.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/subtract_multiply_to_multiply_add.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/subtract_multiply_to_multiply_add.hpp index 695e992e218d2a..62bcd527663a6e 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/subtract_multiply_to_multiply_add.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/subtract_multiply_to_multiply_add.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/transformation_context.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/transformation_context.hpp index 248a76129f7118..0419cac1256cc8 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/transformation_context.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/transformation_context.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/transformer.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/transformer.hpp index e14d61536bde1d..7a10d1daeb1b74 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/transformer.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/transformer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/transparent_base_transformation.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/transparent_base_transformation.hpp index 428d087526827e..d915515b598197 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/transparent_base_transformation.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/transparent_base_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/transpose.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/transpose.hpp index 3c762112943b8d..3b41f3d48b25a7 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/transpose.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/transpose.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/unsqueeze.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/unsqueeze.hpp index eaaa332d984bf9..ea166c979120ab 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/unsqueeze.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/unsqueeze.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/variadic_split.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/variadic_split.hpp index acb626a36231a0..c9fdf76998af41 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/variadic_split.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/variadic_split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/weightable_layer_transformation.hpp b/inference-engine/src/low_precision_transformations/include/low_precision/weightable_layer_transformation.hpp index 388175be774110..3bea283ca0fb1e 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/weightable_layer_transformation.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision/weightable_layer_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/add.cpp b/inference-engine/src/low_precision_transformations/src/add.cpp index a901ba1c039d5a..c2d0dc50a0e170 100644 --- a/inference-engine/src/low_precision_transformations/src/add.cpp +++ b/inference-engine/src/low_precision_transformations/src/add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -50,10 +50,13 @@ std::shared_ptr replaceToSubtract(const std::shared_ptr& auto constant = fold(add->get_input_node_shared_ptr(constBranchIndex)); auto constOutput = constant->output(0); - const auto subtract = std::make_shared( - add->get_input_node_shared_ptr(dataBranchIndex), - constOutput, + const auto subtract = std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{ op->get_output_element_type(0) }, + ngraph::op::TemporaryReplaceOutputType(add->get_input_node_shared_ptr(dataBranchIndex), element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(constOutput, element::f32).get(), add->get_autob()); + NetworkHelper::copyInfo(add, subtract); replace_node(add, subtract); @@ -75,7 +78,7 @@ std::shared_ptr fuseWithSubtract(const std::shared_ptr& const auto newSubtract = std::make_shared>( std::vector{element::f32, element::f32}, - std::vector{ element::f32 }, + std::vector{ op->get_output_element_type(0) }, ngraph::op::TemporaryReplaceOutputType(add->get_input_node_shared_ptr(0)->get_input_node_shared_ptr(0), element::f32).get(), ngraph::op::TemporaryReplaceOutputType(newSubConst, element::f32).get()); NetworkHelper::copyInfo(add, newSubtract); @@ -175,10 +178,10 @@ bool AddTransformation::transform(TransformationContext& context, ngraph::patter } // graph update - std::vector> inputs{ {}, {} }; + std::vector> inputs{ {}, {} }; auto fullPathInput = dequantizationFullPath.convert == nullptr ? dequantizationFullPath.data : dequantizationFullPath.convert; - inputs[emptyPathIndex] = dequantizationEmptyPath.data.get_node_shared_ptr(); + inputs[emptyPathIndex] = dequantizationEmptyPath.data; inputs[fullPathIndex] = std::make_shared( newSubtractFullPathValues == nullptr ? fullPathInput : @@ -189,7 +192,10 @@ bool AddTransformation::transform(TransformationContext& context, ngraph::patter std::vector{element::f32, element::f32}, std::vector{ element::f32 }, ngraph::op::TemporaryReplaceOutputType(inputs[0], element::f32).get(), ngraph::op::TemporaryReplaceOutputType(inputs[1], element::f32).get()); - newMultiply = std::make_shared(newAddOrSubtract, multiplyEmptyPathValues); + newMultiply = std::make_shared>( + std::vector{element::f32, element::f32}, std::vector{ add->get_output_element_type(0) }, + ngraph::op::TemporaryReplaceOutputType(newAddOrSubtract, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(multiplyEmptyPathValues, element::f32).get()); replace_node(add, newMultiply); NetworkHelper::copyInfo(add, newAddOrSubtract); @@ -208,12 +214,12 @@ bool AddTransformation::transform(TransformationContext& context, ngraph::patter bool AddTransformation::canBeTransformed(const TransformationContext& context, std::shared_ptr layer) const { const FakeQuantizeDequantization dequantization1 = pass::low_precision::NetworkHelper::getDequantization(layer, 0ul); - if (dequantization1.multiplyHasZero()) { + if (dequantization1.multiplyHasZeroOrDenormal()) { return false; } const FakeQuantizeDequantization dequantization2 = pass::low_precision::NetworkHelper::getDequantization(layer, 1ul); - if (dequantization2.multiplyHasZero()) { + if (dequantization2.multiplyHasZeroOrDenormal()) { return false; } diff --git a/inference-engine/src/low_precision_transformations/src/avg_pool.cpp b/inference-engine/src/low_precision_transformations/src/avg_pool.cpp index 2eb260ceba5833..375cb1789f6fd5 100644 --- a/inference-engine/src/low_precision_transformations/src/avg_pool.cpp +++ b/inference-engine/src/low_precision_transformations/src/avg_pool.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,7 +34,7 @@ bool AvgPoolTransformation::transform(TransformationContext& context, ngraph::pa const std::vector> children = getChildrenRecursivelyExceptPrecisionPreserved(pooling); bool updatePrecision; - // issue #40768 + if ((children.size() == 1ul) && (!this->layerTransformationsManager->isQuantized(children[0]))) { updatePrecision = false; } else { diff --git a/inference-engine/src/low_precision_transformations/src/clamp.cpp b/inference-engine/src/low_precision_transformations/src/clamp.cpp index 7f844eb124df2d..56cee1d88a497b 100644 --- a/inference-engine/src/low_precision_transformations/src/clamp.cpp +++ b/inference-engine/src/low_precision_transformations/src/clamp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -77,7 +77,7 @@ bool ClampTransformation::transform(TransformationContext& context, ngraph::patt max += shift; } - replacement = std::make_shared(newClamp->get_input_node_shared_ptr(0), min, max); + replacement = std::make_shared(newClamp->get_input_source_output(0), min, max); } replace_node(newClamp, replacement); @@ -92,14 +92,13 @@ bool ClampTransformation::canBeTransformed(const TransformationContext& context, if (!LayerTransformation::canBeTransformed(context, op)) { return false; } - const FakeQuantizeDequantization dequantization = NetworkHelper::getDequantization(op); - const auto mulConst = as_type_ptr(dequantization.multiply->get_input_node_shared_ptr(1)); - if (mulConst == nullptr) { + const auto dequantization = NetworkHelper::getDequantization(op); + if (dequantization.multiply == nullptr) { return false; } - return NetworkHelper::isScalarLike(mulConst); + return NetworkHelper::isScalarLike(dequantization.multiplyConstant); } bool ClampTransformation::isPrecisionPreserved(std::shared_ptr layer) const noexcept { diff --git a/inference-engine/src/low_precision_transformations/src/concat.cpp b/inference-engine/src/low_precision_transformations/src/concat.cpp index 6be788c3de9dcd..8a57bafb7d4e2a 100644 --- a/inference-engine/src/low_precision_transformations/src/concat.cpp +++ b/inference-engine/src/low_precision_transformations/src/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -156,8 +156,7 @@ bool ConcatTransformation::transform(TransformationContext& context, ngraph::pat subgraph.quantizationLayers[0]->get_output_element_type(0), subgraph.quantizationLayers[0]->get_output_shape(0), updatePrecisions ? dataPrecision.precision : subgraph.quantizationLayers[0]->get_output_element_type(0), - dataPrecision.min, - dataPrecision.max); + deqPrecision); for (size_t index = 0; index < subgraph.quantizationLayers.size(); index++) { std::shared_ptr fakeQuantizeLayer = as_type_ptr( @@ -313,9 +312,9 @@ void ConcatTransformation::addDequantizationLayers( convertNodes.push_back(dequantization.convert); } - const ngraph::element::Type precision = dequantization.data.get_element_type(); - ngraph::Shape targetShape(dequantization.data.get_shape().size(), 1ul); - targetShape[1] = dequantization.data.get_shape()[1]; + const ngraph::element::Type precision = deqPrecision; + ngraph::Shape targetShape(layer->get_input_shape(i).size(), 1ul); + targetShape[1] = layer->get_input_shape(i)[1]; if (!allDequantizationShiftAreZero) { subtractNodes.push_back(dequantization.subtract == nullptr ? @@ -375,11 +374,13 @@ void ConcatTransformation::addDequantizationLayers( if (!multiplyNodes.empty()) { const size_t sourceOutputIdx = NetworkHelper::getChildInputIndex(source, destination); - std::shared_ptr multiply = std::make_shared( - destination->get_input_source_output(sourceOutputIdx), - NetworkHelper::toScalarIfPossible(multiplyNodes.size() == 1ul ? - multiplyNodes[0] : - ngraph::pass::low_precision::fold(multiplyNodes, 1))); + std::shared_ptr multiply = std::make_shared>( + DequantizationMultiply( + destination->get_input_source_output(sourceOutputIdx), + NetworkHelper::toScalarIfPossible(multiplyNodes.size() == 1ul ? + multiplyNodes[0] : + ngraph::pass::low_precision::fold(multiplyNodes, 1))), + layerDequantizations[0].multiply->get_output_element_type(0)); insert_new_node_between(source, destination, multiply); ngraph::copy_runtime_info({ layer, multiply }, multiply); source = multiply; diff --git a/inference-engine/src/low_precision_transformations/src/concat_multi_channels.cpp b/inference-engine/src/low_precision_transformations/src/concat_multi_channels.cpp index f5c580e7164027..2877016aa5e19a 100644 --- a/inference-engine/src/low_precision_transformations/src/concat_multi_channels.cpp +++ b/inference-engine/src/low_precision_transformations/src/concat_multi_channels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -116,7 +116,8 @@ bool ConcatMultiChannelsTransformation::transform(TransformationContext& context dataPrecision.min, dataPrecision.max, dataPrecision.precision == currentDataPrecision.precision ? currentDataPrecision.hasZeroPoint : true, - updatePrecisions); + updatePrecisions, + deqPrecision); dequantizations[fakeQuantizeLayer->get_friendly_name()] = fakeQuantizeDequantization; // 2. update FakeQuantize - one time action @@ -184,7 +185,7 @@ bool ConcatMultiChannelsTransformation::isPrecisionPreserved(std::shared_ptr layer, std::unordered_map& dequantizationByFakeQuantize, - std::vector& dequantizationsToConcatenate) { + std::vector& dequantizationsToConcatenate) const { std::shared_ptr currentFakeQuantize = ngraph::as_type_ptr(layer); if (currentFakeQuantize) { const auto it = dequantizationByFakeQuantize.find(currentFakeQuantize->get_friendly_name()); @@ -201,7 +202,7 @@ void ConcatMultiChannelsTransformation::fillDequantization( void ConcatMultiChannelsTransformation::fillQuantization( const std::shared_ptr layer, const std::unordered_map& dequantizationByFakeQuantize, - std::vector& dequantization) { + std::vector& dequantization) const { for (size_t i = 0; i < layer->get_input_size(); ++i) { std::shared_ptr parent = layer->get_input_node_shared_ptr(i); @@ -277,7 +278,7 @@ FakeQuantizeDequantization ConcatMultiChannelsTransformation::broadcastDequantia FakeQuantizeDequantization ConcatMultiChannelsTransformation::getConcatenatedDequantization( const std::shared_ptr concat, - const std::vector& dequantization) { + const std::vector& dequantization) const { bool allDequantizationShiftAreZero = true; bool allDequantizationMultiplyAreZero = true; for (const auto& deq : dequantization) { @@ -294,7 +295,6 @@ FakeQuantizeDequantization ConcatMultiChannelsTransformation::getConcatenatedDeq NodeVector mulNodes; //preparing to concatenate dequantization nodes for (const auto& deq : dequantization) { - const ngraph::element::Type precision = deq.data.get_element_type(); ngraph::Shape targetShape(deq.data.get_shape().size(), 1ul); targetShape[1] = deq.data.get_shape()[1]; @@ -303,12 +303,12 @@ FakeQuantizeDequantization ConcatMultiChannelsTransformation::getConcatenatedDeq } if (!allDequantizationShiftAreZero) { subNodes.push_back(deq.subtract == nullptr ? - std::make_shared(precision, targetShape, std::vector({ 0.f })) : + std::make_shared(deqPrecision, targetShape, std::vector({ 0.f })) : deq.subtractConstant); } if (!allDequantizationMultiplyAreZero) { mulNodes.push_back(deq.multiply == nullptr ? - std::make_shared(precision, targetShape, std::vector({ 1.0f })) : + std::make_shared(deqPrecision, targetShape, std::vector({ 1.0f })) : deq.multiplyConstant); } } diff --git a/inference-engine/src/low_precision_transformations/src/convert.cpp b/inference-engine/src/low_precision_transformations/src/convert.cpp index fb9ba697c80ac0..e9044316875250 100644 --- a/inference-engine/src/low_precision_transformations/src/convert.cpp +++ b/inference-engine/src/low_precision_transformations/src/convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/convolution.cpp b/inference-engine/src/low_precision_transformations/src/convolution.cpp index 705610f97ae93f..6e933667a08cc1 100644 --- a/inference-engine/src/low_precision_transformations/src/convolution.cpp +++ b/inference-engine/src/low_precision_transformations/src/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -126,7 +126,7 @@ bool ConvolutionTransformation::transform(TransformationContext &context, ngraph } newMultiplyAfterConst = std::make_shared( - dequantization.multiply->get_output_element_type(0), + dequantization.multiply->get_input_element_type(1), newMulShape, outputScales); } @@ -139,18 +139,33 @@ bool ConvolutionTransformation::transform(TransformationContext &context, ngraph reducedConstant->cast_vector()[0]); } - auto newConvolution = convolution->copy_with_new_inputs({ dequantization.multiply->input_value(0), convolution->input_value(1) }); + const auto copyNode = convolution->copy_with_new_inputs({ dequantization.multiply->input_value(0), convolution->input_value(1) }); + auto conv = as_type_ptr(copyNode); + std::shared_ptr relaxedNewConvolution; + if (conv) { + relaxedNewConvolution = std::make_shared>( + *conv, + std::vector{deqPrecision, deqPrecision}, + std::vector{deqPrecision}); + } else { + relaxedNewConvolution = std::make_shared>( + *as_type_ptr(copyNode), + std::vector{deqPrecision, deqPrecision}, + std::vector{deqPrecision}); + } + std::shared_ptr newMultiplyAfter = std::make_shared>( - std::vector{ element::f32, element::f32 }, std::vector{ element::f32 }, - ngraph::op::TemporaryReplaceOutputType(newConvolution, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(newMultiplyAfterConst, element::f32).get()); + std::vector{ deqPrecision, deqPrecision }, + std::vector{ dequantization.multiply->get_output_element_type(0) }, + ngraph::op::TemporaryReplaceOutputType(relaxedNewConvolution, deqPrecision).get(), + ngraph::op::TemporaryReplaceOutputType(newMultiplyAfterConst, deqPrecision).get()); replace_node(convolution, newMultiplyAfter); convolution = newMultiplyAfter->input_value(0).get_node_shared_ptr(); if (is_type(convolution->get_input_node_ptr(0))) { auto newConvolution = convolution->clone_with_new_inputs({ - convolution->get_input_node_ptr(0)->get_input_node_shared_ptr(0), + convolution->get_input_node_ptr(0)->get_input_source_output(0), convolution->get_input_node_shared_ptr(1) }); replace_node(convolution, newConvolution); convolution = newConvolution; @@ -199,10 +214,12 @@ bool ConvolutionTransformation::transform(TransformationContext &context, ngraph reshapeFromWeights : multiplyFromWeights->input_value(0) }), - fold_reshape( - multiplyFromWeights->input_value(1), - std::make_shared(element::u64, Shape{ newScaleShape.size() }, newScaleShape), - false)); + fold( + fold_reshape( + multiplyFromWeights->input_value(1), + std::make_shared(element::u64, Shape{ newScaleShape.size() }, newScaleShape), + false), + convolution->get_output_element_type(0))); replace_node(convolution, newMultiplyAfter); convolution = newMultiplyAfter->input_value(0).get_node_shared_ptr(); } @@ -236,7 +253,7 @@ bool ConvolutionTransformation::transform(TransformationContext &context, ngraph std::shared_ptr childNode = reshapeFromWeights == nullptr ? convolution : reshapeFromWeights; auto newConvolution = convolution->clone_with_new_inputs({ - convolution->get_input_node_shared_ptr(0), + convolution->get_input_source_output(0), childNode.get() == convolution.get() ? convolution->get_input_node_ptr(1)->get_input_node_shared_ptr(0) : childNode->copy_with_new_inputs({convertFromWeights->input_value(0), childNode->input_value(1)})}); @@ -261,6 +278,9 @@ bool ConvolutionTransformation::transform(TransformationContext &context, ngraph ngraph::copy_runtime_info({ convolution, finalDequantization }, finalDequantization); updateOutput(context, finalDequantization, convolution); + // [C, 1, 1] -> [1, C, 1, 1] + NetworkHelper::normalizeDequantizationShape(finalDequantization); + auto onWeights = convolution->get_input_node_shared_ptr(1); if (is_type(onWeights)) { onWeights = onWeights->get_input_node_shared_ptr(0); diff --git a/inference-engine/src/low_precision_transformations/src/depth_to_space.cpp b/inference-engine/src/low_precision_transformations/src/depth_to_space.cpp index 98c85d6c39cc3f..c004d0ca59f92a 100644 --- a/inference-engine/src/low_precision_transformations/src/depth_to_space.cpp +++ b/inference-engine/src/low_precision_transformations/src/depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/eltwise_base_transformation.cpp b/inference-engine/src/low_precision_transformations/src/eltwise_base_transformation.cpp index 80eb83f8ea949a..53fa6b3d618353 100644 --- a/inference-engine/src/low_precision_transformations/src/eltwise_base_transformation.cpp +++ b/inference-engine/src/low_precision_transformations/src/eltwise_base_transformation.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "low_precision/eltwise_base_transformation.hpp" #include @@ -70,12 +71,14 @@ bool EltwiseBaseTransformation::canBeTransformed(const TransformationContext& co } if ((dequantization1.data.get_node() == nullptr) || - (dequantization1.empty() && !is_type(dequantization1.data.get_node_shared_ptr()))) { + (dequantization1.empty() && !is_type(dequantization1.data.get_node_shared_ptr()) && + !is_type(dequantization2.data.get_node_shared_ptr()))) { return false; } if ((dequantization2.data.get_node() == nullptr) || - (dequantization2.empty() && !is_type(dequantization2.data.get_node_shared_ptr()))) { + (dequantization2.empty() && !is_type(dequantization2.data.get_node_shared_ptr()) && + !is_type(dequantization1.data.get_node_shared_ptr()))) { return false; } diff --git a/inference-engine/src/low_precision_transformations/src/fake_quantize.cpp b/inference-engine/src/low_precision_transformations/src/fake_quantize.cpp index 7169d5ca32d7dc..d57fcb6b4191fd 100644 --- a/inference-engine/src/low_precision_transformations/src/fake_quantize.cpp +++ b/inference-engine/src/low_precision_transformations/src/fake_quantize.cpp @@ -1,9 +1,10 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "low_precision/fake_quantize.hpp" +#include #include #include @@ -72,6 +73,17 @@ static std::shared_ptr getConstant(const std::shared_ptr } // namespace fq bool FakeQuantizeTransformation::checkElementwise(const std::shared_ptr& eltwise) { + const auto eltwiseInputShape = eltwise->get_input_shape(0); + const auto eltwiseOutputShape = eltwise->get_output_shape(0); + if (eltwiseInputShape.size() != eltwiseOutputShape.size()) { + return false; + } + for (size_t i = 0; i < eltwiseOutputShape.size(); ++i) { + if (eltwiseInputShape[i] != eltwiseOutputShape[i]) { + return false; + } + } + std::shared_ptr constant = fq::getConstant(eltwise); if (constant == nullptr) { return false; @@ -79,12 +91,11 @@ bool FakeQuantizeTransformation::checkElementwise(const std::shared_ptr& e Shape shape = constant->get_output_shape(0); if ((!shape.empty()) && (shape_size(shape) != 1ul)) { - const Shape eltwiseShape = eltwise->get_output_shape(0); - if ((eltwiseShape.size() - shape.size()) > 1) { + if ((eltwiseOutputShape.size() - shape.size()) > 1) { return false; } - if ((eltwiseShape.size() - shape.size()) == 1ul) { + if ((eltwiseOutputShape.size() - shape.size()) == 1ul) { shape.insert(shape.begin(), 1ul); } @@ -103,14 +114,14 @@ std::shared_ptr FakeQuantizeTransformation::fuseElementwis const std::shared_ptr& fakeQuantize) const { const std::shared_ptr eltwise = fakeQuantize->get_input_node_shared_ptr(0); - std::shared_ptr inputLowConst = fakeQuantize->get_input_node_shared_ptr(1); - std::shared_ptr inputHightConst = fakeQuantize->get_input_node_shared_ptr(2); + std::shared_ptr inputLowConst_f32 = fold(fakeQuantize->get_input_node_shared_ptr(1), deqPrecision); + std::shared_ptr inputHightConst_f32 = fold(fakeQuantize->get_input_node_shared_ptr(2), deqPrecision); std::shared_ptr constant = fq::getConstant(eltwise); if (is_type(eltwise) && checkElementwise(eltwise)) { - const auto value = constant->get_output_element_type(0) == eltwise->get_output_element_type(0) ? + const auto value = constant->get_output_element_type(0) == deqPrecision ? constant : - fold(constant, eltwise->get_output_element_type(0)); + fold(constant, deqPrecision); const auto valueVec = as_type_ptr(value)->cast_vector(); // TODO: temporary fix for GPU Plugin (inverted intervals) @@ -120,12 +131,17 @@ std::shared_ptr FakeQuantizeTransformation::fuseElementwis } } - inputLowConst = fq::updateShape(fold(inputLowConst, value), fakeQuantize->get_output_shape(0)); - inputHightConst = fq::updateShape(fold(inputHightConst, value), fakeQuantize->get_output_shape(0)); + // avoid division by zero + if (std::any_of(valueVec.cbegin(), valueVec.cend(), [](const float value) { return (value == 0.f) || (std::abs(value) < 1.e-32); })) { + return nullptr; + } + + inputLowConst_f32 = fq::updateShape(fold(inputLowConst_f32, value), fakeQuantize->get_output_shape(0)); + inputHightConst_f32 = fq::updateShape(fold(inputHightConst_f32, value), fakeQuantize->get_output_shape(0)); } else if (is_type(eltwise) && checkElementwise(eltwise)) { - const auto value = constant->get_output_element_type(0) == eltwise->get_output_element_type(0) ? + const auto value = constant->get_output_element_type(0) == deqPrecision ? constant : - fold(constant, eltwise->get_output_element_type(0)); + fold(constant, deqPrecision); const auto valueVec = as_type_ptr(value)->cast_vector(); // TODO: temporary fix for GPU Plugin (inverted intervals) @@ -135,42 +151,45 @@ std::shared_ptr FakeQuantizeTransformation::fuseElementwis } } - inputLowConst = fq::updateShape(fold(inputLowConst, value), fakeQuantize->get_output_shape(0)); - inputHightConst = fq::updateShape(fold(inputHightConst, value), fakeQuantize->get_output_shape(0)); + inputLowConst_f32 = fq::updateShape(fold(inputLowConst_f32, value), fakeQuantize->get_output_shape(0)); + inputHightConst_f32 = fq::updateShape(fold(inputHightConst_f32, value), fakeQuantize->get_output_shape(0)); } else if (is_type(eltwise) && checkElementwise(eltwise)) { - const auto value = constant->get_output_element_type(0) == eltwise->get_output_element_type(0) ? + const auto value = constant->get_output_element_type(0) == deqPrecision ? constant : - fold(constant, eltwise->get_output_element_type(0)); + fold(constant, deqPrecision); - inputLowConst = fq::updateShape(fold(inputLowConst, value), fakeQuantize->get_output_shape(0)); - inputHightConst = fq::updateShape(fold(inputHightConst, value), fakeQuantize->get_output_shape(0)); + inputLowConst_f32 = fq::updateShape(fold(inputLowConst_f32, value), fakeQuantize->get_output_shape(0)); + inputHightConst_f32 = fq::updateShape(fold(inputHightConst_f32, value), fakeQuantize->get_output_shape(0)); } else if (is_type(eltwise) && checkElementwise(eltwise)) { if (is_type(fq::getData(eltwise)) || is_type(fq::getData(eltwise))) { return nullptr; } - const auto value = constant->get_output_element_type(0) == eltwise->get_output_element_type(0) ? + const auto value = constant->get_output_element_type(0) == deqPrecision ? constant : - fold(constant, eltwise->get_output_element_type(0)); + fold(constant, deqPrecision); - inputLowConst = fq::updateShape(fold(inputLowConst, value), fakeQuantize->get_output_shape(0)); - inputHightConst = fq::updateShape(fold(inputHightConst, value), fakeQuantize->get_output_shape(0)); + inputLowConst_f32 = fq::updateShape(fold(inputLowConst_f32, value), fakeQuantize->get_output_shape(0)); + inputHightConst_f32 = fq::updateShape(fold(inputHightConst_f32, value), fakeQuantize->get_output_shape(0)); } else if (is_type(eltwise)) { // issue #40611 - if ((eltwise->input(0).get_element_type() == element::i32) && (eltwise->output(0).get_element_type() == element::f32)) { + if ((eltwise->input(0).get_element_type() == element::i32) && + ((eltwise->output(0).get_element_type() == element::f16) || (eltwise->output(0).get_element_type() == element::f32))) { return nullptr; } } else { return nullptr; } + const auto data = fq::getData(eltwise); + const size_t outputIdx = NetworkHelper::getParentOutputIndex(data, eltwise); std::shared_ptr newFakeQuantize = as_type_ptr(fakeQuantize->clone_with_new_inputs({ - fq::getData(eltwise), - inputLowConst, - inputHightConst, - fakeQuantize->input_value(3), - fakeQuantize->input_value(4) })); + data->output(outputIdx), + inputLowConst_f32, + inputHightConst_f32, + fold(fakeQuantize->input_value(3), deqPrecision), + fold(fakeQuantize->input_value(4), deqPrecision) })); replace_node(fakeQuantize, newFakeQuantize); ngraph::copy_runtime_info({ fakeQuantize, eltwise }, newFakeQuantize); diff --git a/inference-engine/src/low_precision_transformations/src/fake_quantize_decomposition.cpp b/inference-engine/src/low_precision_transformations/src/fake_quantize_decomposition.cpp index d295258a2c898d..e4c9769e87afd8 100644 --- a/inference-engine/src/low_precision_transformations/src/fake_quantize_decomposition.cpp +++ b/inference-engine/src/low_precision_transformations/src/fake_quantize_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/fake_quantize_dequantization.cpp b/inference-engine/src/low_precision_transformations/src/fake_quantize_dequantization.cpp index a3a88e511b8493..f7a9cf88b5acdd 100644 --- a/inference-engine/src/low_precision_transformations/src/fake_quantize_dequantization.cpp +++ b/inference-engine/src/low_precision_transformations/src/fake_quantize_dequantization.cpp @@ -1,7 +1,8 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // +#include #include #include @@ -36,7 +37,7 @@ bool FakeQuantizeDequantization::empty() const { return (convert == nullptr) && (subtract == nullptr) && (multiply == nullptr); } -bool FakeQuantizeDequantization::multiplyHasZero() const { +bool FakeQuantizeDequantization::multiplyHasZeroOrDenormal() const { if (multiply == nullptr) { return false; } @@ -50,7 +51,7 @@ bool FakeQuantizeDequantization::multiplyHasZero() const { } auto const values = multiplyConstant->cast_vector(); - return std::any_of(values.begin(), values.end(), [](const float value) { return value == 0.f; }); + return std::any_of(values.begin(), values.end(), [](const float value) { return (value == 0.f) || (std::abs(value) < 1.e-32); }); } bool FakeQuantizeDequantization::isShared() const { diff --git a/inference-engine/src/low_precision_transformations/src/fold_convert.cpp b/inference-engine/src/low_precision_transformations/src/fold_convert.cpp index 16b0c93ac35435..43aaa9771d4c0c 100644 --- a/inference-engine/src/low_precision_transformations/src/fold_convert.cpp +++ b/inference-engine/src/low_precision_transformations/src/fold_convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/fuse_convert.cpp b/inference-engine/src/low_precision_transformations/src/fuse_convert.cpp index df65e1520be133..fba86ef6c608e5 100644 --- a/inference-engine/src/low_precision_transformations/src/fuse_convert.cpp +++ b/inference-engine/src/low_precision_transformations/src/fuse_convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -51,17 +51,12 @@ std::shared_ptr removeConvertIfPossibleForSubtract( } bool FuseConvertTransformation::transform(TransformationContext& context, ngraph::pattern::Matcher &m) const { - auto op = m.get_match_root(); + const auto op = m.get_match_root(); if (!canBeTransformed(context, op)) { return false; } - std::shared_ptr convert = as_type_ptr(op->get_input_node_shared_ptr(0)); - // issue #40395 - if (convert == nullptr) { - return false; - } - + const auto convert = as_type_ptr(op->get_input_node_shared_ptr(0)); std::shared_ptr parent = convert->get_input_node_shared_ptr(0); if (is_type(parent)) { @@ -99,6 +94,17 @@ bool FuseConvertTransformation::transform(TransformationContext& context, ngraph } bool FuseConvertTransformation::canBeTransformed(const TransformationContext& context, std::shared_ptr op) const { + const auto convert = as_type_ptr(op->get_input_node_shared_ptr(0)); + // issue #40395 + if (convert == nullptr) { + return false; + } + + const auto destType = convert->get_destination_type(); + if ((destType != element::f16) && (destType != element::f32)) { + return false; + } + return true; } diff --git a/inference-engine/src/low_precision_transformations/src/fuse_fake_quantize.cpp b/inference-engine/src/low_precision_transformations/src/fuse_fake_quantize.cpp index d53049894ed36a..dfca1b164ef6a9 100644 --- a/inference-engine/src/low_precision_transformations/src/fuse_fake_quantize.cpp +++ b/inference-engine/src/low_precision_transformations/src/fuse_fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/fuse_multiply_to_fake_quantize.cpp b/inference-engine/src/low_precision_transformations/src/fuse_multiply_to_fake_quantize.cpp index 58da9e53cb147b..02448aa6dccebf 100644 --- a/inference-engine/src/low_precision_transformations/src/fuse_multiply_to_fake_quantize.cpp +++ b/inference-engine/src/low_precision_transformations/src/fuse_multiply_to_fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,15 +32,15 @@ bool FuseMultiplyToFakeQuantizeTransformation::transform(TransformationContext& const auto multiplyConstant = multiply->get_input_node_shared_ptr(1); - auto outputLowConst = fakeQuantize->get_input_node_shared_ptr(3); - auto outputHighConst = fakeQuantize->get_input_node_shared_ptr(4); + auto outputLowConst_f32 = fold(fakeQuantize->get_input_node_shared_ptr(3), deqPrecision); + auto outputHighConst_f32 = fold(fakeQuantize->get_input_node_shared_ptr(4), deqPrecision); - const auto value = multiplyConstant->get_output_element_type(0) == outputLowConst->get_output_element_type(0) ? + const auto value = multiplyConstant->get_output_element_type(0) == element::f32 ? multiplyConstant : - fold(multiplyConstant, outputLowConst->get_output_element_type(0)); + fold(multiplyConstant, deqPrecision); - outputLowConst = fold(outputLowConst, value); - outputHighConst = fold(outputHighConst, value); + outputLowConst_f32 = fold(outputLowConst_f32, value); + outputHighConst_f32 = fold(outputHighConst_f32, value); const auto fakeQuantizeParent = fakeQuantize->get_input_node_shared_ptr(0); const size_t parentIndex = NetworkHelper::getParentOutputIndex(fakeQuantizeParent, fakeQuantize); @@ -48,10 +48,10 @@ bool FuseMultiplyToFakeQuantizeTransformation::transform(TransformationContext& auto newFakeQuantize = std::make_shared>( opset1::FakeQuantize( fakeQuantizeParent->output(parentIndex), - fakeQuantize->input_value(1), - fakeQuantize->input_value(2), - outputLowConst, - outputHighConst, + fold(fakeQuantize->input_value(1), deqPrecision), + fold(fakeQuantize->input_value(2), deqPrecision), + outputLowConst_f32, + outputHighConst_f32, fakeQuantize->get_levels()), multiply->get_output_element_type(0)); diff --git a/inference-engine/src/low_precision_transformations/src/fuse_subtract_to_fake_quantize.cpp b/inference-engine/src/low_precision_transformations/src/fuse_subtract_to_fake_quantize.cpp index 5fdda60663b2dc..dc67cfe4110c5c 100644 --- a/inference-engine/src/low_precision_transformations/src/fuse_subtract_to_fake_quantize.cpp +++ b/inference-engine/src/low_precision_transformations/src/fuse_subtract_to_fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,16 +32,15 @@ bool FuseSubtractToFakeQuantizeTransformation::transform(TransformationContext& const auto subtractConstant = subtract->get_input_node_shared_ptr(1); - auto outputLowConst = fakeQuantize->get_input_node_shared_ptr(3); - auto outputHighConst = fakeQuantize->get_input_node_shared_ptr(4); + auto outputLowConst_f32 = fold(fakeQuantize->get_input_node_shared_ptr(3), deqPrecision); + auto outputHighConst_f32 = fold(fakeQuantize->get_input_node_shared_ptr(4), deqPrecision); - const auto value = - outputLowConst->get_output_element_type(0) == subtractConstant->get_output_element_type(0) ? + const auto value = subtractConstant->get_output_element_type(0) == element::f32 ? subtractConstant : - fold(subtractConstant, outputLowConst->get_output_element_type(0)); + fold(subtractConstant, deqPrecision); - outputLowConst = fold(outputLowConst, value); - outputHighConst = fold(outputHighConst, value); + outputLowConst_f32 = fold(outputLowConst_f32, value); + outputHighConst_f32 = fold(outputHighConst_f32, value); const auto fakeQuantizeParent = fakeQuantize->get_input_node_shared_ptr(0); const size_t parentIndex = NetworkHelper::getParentOutputIndex(fakeQuantizeParent, fakeQuantize); @@ -49,10 +48,10 @@ bool FuseSubtractToFakeQuantizeTransformation::transform(TransformationContext& auto newFakeQuantize = std::make_shared>( opset1::FakeQuantize( fakeQuantizeParent->output(parentIndex), - fakeQuantize->input_value(1), - fakeQuantize->input_value(2), - outputLowConst, - outputHighConst, + fold(fakeQuantize->input_value(1), deqPrecision), + fold(fakeQuantize->input_value(2), deqPrecision), + outputLowConst_f32, + outputHighConst_f32, fakeQuantize->get_levels()), subtract->get_output_element_type(0)); diff --git a/inference-engine/src/low_precision_transformations/src/group_convolution.cpp b/inference-engine/src/low_precision_transformations/src/group_convolution.cpp index d5637854af52b5..3c55e62cc6830a 100644 --- a/inference-engine/src/low_precision_transformations/src/group_convolution.cpp +++ b/inference-engine/src/low_precision_transformations/src/group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/interpolate.cpp b/inference-engine/src/low_precision_transformations/src/interpolate.cpp index a1a460e213d046..66aba3fc7c429f 100644 --- a/inference-engine/src/low_precision_transformations/src/interpolate.cpp +++ b/inference-engine/src/low_precision_transformations/src/interpolate.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/layer_transformation.cpp b/inference-engine/src/low_precision_transformations/src/layer_transformation.cpp index a7928488c0cbbb..a3d3b3b15d2e63 100644 --- a/inference-engine/src/low_precision_transformations/src/layer_transformation.cpp +++ b/inference-engine/src/low_precision_transformations/src/layer_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,6 +30,8 @@ LayerTransformation::LayerTransformation(const Params& params) : supportAsymmetricQuantization(params.supportAsymmetricQuantization), precisionsOnActivations(params.precisionsOnActivations), precisionsOnWeights(params.precisionsOnWeights), + deqPrecision(params.deqPrecision), + support3DTensorOnActivations(params.support3DTensorOnActivations), quantizationIntervalAsymmetryThreshold(0.002f), zeroThreshold(1.e-6f), minQuantizationLevels(2ul), diff --git a/inference-engine/src/low_precision_transformations/src/mat_mul.cpp b/inference-engine/src/low_precision_transformations/src/mat_mul.cpp index 9526ee5831dd68..8bb6cfa5d604cf 100644 --- a/inference-engine/src/low_precision_transformations/src/mat_mul.cpp +++ b/inference-engine/src/low_precision_transformations/src/mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,6 +23,9 @@ bool MatMulTransformation::transform(TransformationContext &context, ngraph::pat } matMul = as_type_ptr(NetworkHelper::separateInStandaloneBranch(matMul)); + if (!support3DTensorOnActivations && (matMul->input(0).get_shape().size() == 3ul)) { + return false; + } const auto dequantization1 = NetworkHelper::getDequantization(matMul, 0); auto dequantization2 = NetworkHelper::getDequantization(matMul, 1); @@ -51,13 +54,12 @@ bool MatMulTransformation::transform(TransformationContext &context, ngraph::pat dequantization2 = NetworkHelper::getDequantization(matMul, 1); } - const std::shared_ptr newMatMul = std::make_shared>( - std::vector({ element::f32, element::f32 }), std::vector({}), - op::TemporaryReplaceOutputType(dequantization1.data, element::f32).get(), - op::TemporaryReplaceOutputType(dequantization2.data, element::f32).get(), + const std::shared_ptr newMatMul = std::make_shared>( + std::vector({ deqPrecision, deqPrecision }), std::vector({ deqPrecision }), + ngraph::op::TemporaryReplaceOutputType(dequantization1.data, deqPrecision).get(), + ngraph::op::TemporaryReplaceOutputType(dequantization2.data, deqPrecision).get(), matMul->get_transpose_a(), matMul->get_transpose_b()); - NetworkHelper::setOutDataPrecisionForTypeRelaxed(newMatMul, matMul->get_output_element_type(0)); NetworkHelper::copyInfo(matMul, newMatMul); std::shared_ptr parent = newMatMul; @@ -124,8 +126,16 @@ bool MatMulTransformation::transform(TransformationContext &context, ngraph::pat } } - const auto newMulConst = NetworkHelper::toScalarIfPossible(fold(mulConst1, mulConst2)); - const std::shared_ptr newMultiply = std::make_shared(parent, newMulConst); + const auto newMulConst = NetworkHelper::toScalarIfPossible(fold( + mulConst1, + fold(mulConst2, element::f32))); + + const auto newMultiply = std::make_shared>( + std::vector{ deqPrecision, deqPrecision }, + std::vector{ dequantization1.multiply->get_output_element_type(0) }, + ngraph::op::TemporaryReplaceOutputType(parent, deqPrecision).get(), + ngraph::op::TemporaryReplaceOutputType(newMulConst, deqPrecision).get()); + newMultiply->set_friendly_name(newMatMul->get_friendly_name() + "/DequantizationMultiply"); replace_node(matMul, newMultiply); diff --git a/inference-engine/src/low_precision_transformations/src/max_pool.cpp b/inference-engine/src/low_precision_transformations/src/max_pool.cpp index 1204e7442ef3a6..4f867cc4bdda49 100644 --- a/inference-engine/src/low_precision_transformations/src/max_pool.cpp +++ b/inference-engine/src/low_precision_transformations/src/max_pool.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/multiply.cpp b/inference-engine/src/low_precision_transformations/src/multiply.cpp index 992c63ceb90a6f..0094a283fb99b0 100644 --- a/inference-engine/src/low_precision_transformations/src/multiply.cpp +++ b/inference-engine/src/low_precision_transformations/src/multiply.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -63,18 +63,22 @@ bool MultiplyTransformation::transform(TransformationContext& context, ngraph::p return false; } - auto multiplyParent = multiply->get_input_node_shared_ptr(multiplyBranch.first); - auto constParent = multiply->get_input_node_shared_ptr(multiplyBranch.first == 0 ? 1 : 0); - auto multiplyParentParent = multiplyParent->get_input_node_shared_ptr(multiplyBranch.second); - auto multiplyParentConst = multiplyParent->get_input_node_shared_ptr(multiplyBranch.second == 0 ? 1 : 0); + auto multiplyParent = multiply->get_input_source_output(multiplyBranch.first); + auto constParent = multiply->get_input_source_output(multiplyBranch.first == 0 ? 1 : 0); + auto multiplyParentParent = multiplyParent.get_node_shared_ptr()->get_input_source_output(multiplyBranch.second); + auto multiplyParentConst = multiplyParent.get_node_shared_ptr()->get_input_source_output(multiplyBranch.second == 0 ? 1 : 0); newMultiply = std::make_shared>( std::vector{ element::f32, element::f32 }, - std::vector{element::f32}, + std::vector{ multiply->get_output_element_type(0) }, ngraph::op::TemporaryReplaceOutputType(multiplyParentParent, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(fold(multiplyParentConst, constParent), element::f32).get()); + ngraph::op::TemporaryReplaceOutputType( + fold( + fold(multiplyParentConst, element::f32), + fold(constParent, element::f32)), + element::f32).get()); - NetworkHelper::copyInfo(multiplyParent, newMultiply); + NetworkHelper::copyInfo(multiplyParent.get_node_shared_ptr(), newMultiply); NetworkHelper::copyInfo(multiply, newMultiply); if (!FakeQuantizeDequantization::checkElementwise(newMultiply)) { @@ -114,7 +118,7 @@ bool MultiplyTransformation::transform(TransformationContext& context, ngraph::p // after : Y = (SC1' * (X1 - SH1)) * (X2) , where : // SC1' = SC1 * SC2 std::shared_ptr newMultiplyValuesFullPath = fold(multiplyValuesEmptyPath, multiplyValuesFullPath); - std::vector> inputs{ {}, {} }; + OutputVector inputs{ {}, {} }; inputs[emptyPathIndex] = dequantizationEmptyPath.data; inputs[fullPathIndex] = std::make_shared( dequantizationFullPath.subtract == nullptr ? @@ -123,7 +127,12 @@ bool MultiplyTransformation::transform(TransformationContext& context, ngraph::p dequantizationFullPath.subtract, newMultiplyValuesFullPath); - newMultiply = multiply->clone_with_new_inputs(inputs); + newMultiply = std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{ multiply->get_output_element_type(0) }, + ngraph::op::TemporaryReplaceOutputType(inputs[0], element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(inputs[1], element::f32).get()); + NetworkHelper::copyInfo(multiply, newMultiply); } replace_node(multiply, newMultiply); diff --git a/inference-engine/src/low_precision_transformations/src/multiply_to_group_convolution.cpp b/inference-engine/src/low_precision_transformations/src/multiply_to_group_convolution.cpp index 2ecbd2658d3464..d0949f5353e029 100644 --- a/inference-engine/src/low_precision_transformations/src/multiply_to_group_convolution.cpp +++ b/inference-engine/src/low_precision_transformations/src/multiply_to_group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/mvn.cpp b/inference-engine/src/low_precision_transformations/src/mvn.cpp index cc6b64a298e8ed..543ef7bdfbdc0a 100644 --- a/inference-engine/src/low_precision_transformations/src/mvn.cpp +++ b/inference-engine/src/low_precision_transformations/src/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,6 +15,8 @@ #include "low_precision/network_helper.hpp" #include "low_precision/common/dequantization_op.hpp" +#include "ngraph/opsets/opset6.hpp" + using namespace ngraph; using namespace ngraph::pass; using namespace ngraph::pass::low_precision; @@ -41,29 +43,43 @@ bool MVNTransformation::canBeTransformed(const TransformationContext& context, s return false; } - if (NetworkHelper::getDequantization(operation).subtract != nullptr) { + const auto dequantization = NetworkHelper::getDequantization(operation); + if (dequantization.empty() || dequantization.subtract != nullptr) { return false; } - auto mvn = as_type_ptr(operation); - if (mvn == nullptr) { - return false; + std::shared_ptr mvn = as_type_ptr(operation); + if (!mvn) { + mvn = as_type_ptr(operation); + if (!mvn) { + return false; + } } - const std::shared_ptr multiply = mvn->get_input_node_shared_ptr(0); - auto scalesConst = as_type_ptr(multiply->get_input_node_shared_ptr(1)); - if (scalesConst == nullptr) { - scalesConst = as_type_ptr(multiply->get_input_node_shared_ptr(0)); + const auto scalesConst = as_type_ptr(NetworkHelper::getConstantInput(mvn->get_input_node_shared_ptr(0))); + bool isScalarScales = NetworkHelper::isScalarLike(scalesConst); + + AxisSet reduction_axes; + if (is_type(mvn)) { + reduction_axes = as_type_ptr(mvn)->get_reduction_axes(); + } else { + reduction_axes = as_type_ptr(mvn->get_input_node_shared_ptr(1))->get_axis_set_val(); } - if (scalesConst == nullptr) { - return false; + + if (reduction_axes.count(1) == 0) { + return true; } - const bool acrossChannels = mvn->get_reduction_axes().count(1) > 0; - if (!NetworkHelper::isScalarLike(scalesConst) && acrossChannels) { - return false; + bool perTensor = true; + const auto rank = mvn->get_input_shape(0).size(); + for (size_t i = 2; i < rank; ++i) { + if (reduction_axes.count(i) == 0) { + perTensor = false; + break; + } } - return true; + + return perTensor && isScalarScales; } void MVNTransformation::registerMatcherIn(GraphRewrite& pass, TransformationContext& context) const { @@ -71,6 +87,11 @@ void MVNTransformation::registerMatcherIn(GraphRewrite& pass, TransformationCont pass, context, make_op_pattern({ make_op_label() })); + addPattern( + pass, + context, + make_op_pattern({ make_op_label(), + make_op_label() })); } bool MVNTransformation::transform(TransformationContext &context, ngraph::pattern::Matcher &m) const { @@ -79,7 +100,17 @@ bool MVNTransformation::transform(TransformationContext &context, ngraph::patter return false; } - auto mvn = as_type_ptr(NetworkHelper::separateInStandaloneBranch(operation)); + std::shared_ptr mvn = as_type_ptr(operation); + if (!mvn) { + mvn = as_type_ptr(operation); + } + + bool normalizeVariance; + if (is_type(mvn)) { + normalizeVariance = as_type_ptr(mvn)->get_normalize_variance(); + } else { + normalizeVariance = as_type_ptr(mvn)->get_normalize_variance(); + } FakeQuantizeDequantization dequantization = NetworkHelper::getDequantization(mvn); auto scalesConst = as_type_ptr(dequantization.multiply->get_input_node_shared_ptr(1)); @@ -87,8 +118,6 @@ bool MVNTransformation::transform(TransformationContext &context, ngraph::patter scalesConst = as_type_ptr(dequantization.multiply->get_input_node_shared_ptr(0)); } - const bool normalizeVariance = mvn->get_normalize_variance(); - auto newScalesConst = scalesConst; const auto type = scalesConst->get_output_element_type(0); if (normalizeVariance) { @@ -106,18 +135,18 @@ bool MVNTransformation::transform(TransformationContext &context, ngraph::patter } } } - - auto newMVN = std::make_shared>( - op::MVN(dequantization.subtract ? - dequantization.subtract : - dequantization.data, - mvn->get_reduction_axes(), - mvn->get_normalize_variance(), - mvn->get_eps()), - type); + std::shared_ptr newMVN; + if (is_type(mvn)) { + newMVN = mvn->copy_with_new_inputs({dequantization.data}); + } else { + newMVN = mvn->copy_with_new_inputs({dequantization.data, mvn->get_input_node_shared_ptr(1)}); + } + NetworkHelper::setOutDataPrecisionForTypeRelaxed(newMVN, deqPrecision); NetworkHelper::copyInfo(mvn, newMVN); - auto newMultiply = std::make_shared(newMVN, newScalesConst); + auto newMultiply = std::make_shared>( + DequantizationMultiply(newMVN, newScalesConst), + mvn->get_output_element_type(0)); ngraph::copy_runtime_info({ mvn, newMultiply }, newMultiply); replace_node(mvn, newMultiply); diff --git a/inference-engine/src/low_precision_transformations/src/network_helper.cpp b/inference-engine/src/low_precision_transformations/src/network_helper.cpp index ab8a31484dbdf3..b9721da78692a6 100644 --- a/inference-engine/src/low_precision_transformations/src/network_helper.cpp +++ b/inference-engine/src/low_precision_transformations/src/network_helper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,6 +14,7 @@ #include #include #include +#include #include #include "low_precision/common/ie_lpt_exception.hpp" @@ -189,8 +190,8 @@ std::shared_ptr NetworkHelper::swapMultiplyAndAdd(std::shared_ptrget_input_node_shared_ptr(multiplyInputBranch); - const auto a = multiply->get_input_node_shared_ptr(multiplyInputBranch == 0 ? 1 : 0); - const auto b = addAfterMultiply->get_input_node_shared_ptr(multiplyBranch == 0 ? 1 : 0); + auto a = multiply->get_input_node_shared_ptr(multiplyInputBranch == 0 ? 1 : 0); + auto b = addAfterMultiply->get_input_node_shared_ptr(multiplyBranch == 0 ? 1 : 0); std::shared_ptr bDivA; if (shape_size(b->get_output_shape(0)) == 1 || @@ -213,12 +214,18 @@ std::shared_ptr NetworkHelper::swapMultiplyAndAdd(std::shared_ptrget_output_element_type(0); bDivA = std::make_shared( - b->get_output_element_type(0), + aPrecision, aBroadcasted ? b->get_output_shape(0) : a->get_output_shape(0), bDivAValues); } else { + b = fold(b, element::f32); + a = fold(a, element::f32); bDivA = fold(b, a); + // TODO: issue #49868 + bDivA = fold(bDivA, a->get_output_element_type(0)); } std::vector> inputs{ {}, {} }; @@ -227,14 +234,17 @@ std::shared_ptr NetworkHelper::swapMultiplyAndAdd(std::shared_ptr newAdd = std::make_shared>( - std::vector{element::f32, element::f32}, std::vector{ element::f32 }, + std::vector{element::f32, element::f32}, + std::vector{ x->get_output_element_type(0) }, ngraph::op::TemporaryReplaceOutputType(inputs[0], element::f32).get(), ngraph::op::TemporaryReplaceOutputType(inputs[1], element::f32).get()); copyInfo(addAfterMultiply, newAdd); - NetworkHelper::setOutDataPrecision(newAdd, addAfterMultiply->get_output_element_type(0)); - - auto newMultiply = std::make_shared(newAdd, a); + auto newMultiply = std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{ multiply->get_output_element_type(0) }, + ngraph::op::TemporaryReplaceOutputType(newAdd, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(a, element::f32).get()); copyInfo(multiply, newMultiply); replace_node(addAfterMultiply, newMultiply); @@ -293,8 +303,50 @@ std::shared_ptr NetworkHelper::getConstantInput(std::shared_ptr node return constant1; } +int NetworkHelper::getConstantInputIndex(std::shared_ptr node) { + if (as_type_ptr(node->get_input_node_shared_ptr(1)) != nullptr) { + return 1; + } + + if (as_type_ptr(node->get_input_node_shared_ptr(0)) != nullptr) { + return 0; + } + + return -1; +} + +std::vector NetworkHelper::updateReshapeValues( + const Shape& elementwiseConstantShape, + const Shape& elementwiseShape, + const std::vector& reshapeValues) { + Shape updatedReshapeValues = reshapeValues; + for (size_t elementwiseIndex = 0, reshapeIndex = 0; elementwiseIndex < elementwiseConstantShape.size(); ++elementwiseIndex) { + if (elementwiseConstantShape[elementwiseIndex] != elementwiseShape[elementwiseIndex]) { + size_t reducedValue = 1ul; + for (; reshapeIndex < reshapeValues.size(); ++reshapeIndex) { + reducedValue *= reshapeValues[reshapeIndex]; + updatedReshapeValues[reshapeIndex] = 1ul; + if (reducedValue == elementwiseShape[elementwiseIndex]) { + reshapeIndex++; + break; + } + } + } else { + size_t reducedValue = 1ul; + for (; reshapeIndex < reshapeValues.size(); ++reshapeIndex) { + reducedValue *= reshapeValues[reshapeIndex]; + if (reducedValue == elementwiseConstantShape[elementwiseIndex]) { + reshapeIndex++; + break; + } + } + } + } + return updatedReshapeValues; +} + std::shared_ptr NetworkHelper::optimizeMultipliesAfter(std::shared_ptr node) { - std::shared_ptr multiply = as_type_ptr(node); + std::shared_ptr multiply = as_type_ptr(std::move(node)); if (!multiply) { THROW_IE_LPT_EXCEPTION(*multiply) << "Unexpected operation type"; } @@ -304,19 +356,26 @@ std::shared_ptr NetworkHelper::optimizeMultipliesAfter if (!constant1 || constant1->output(0).get_target_inputs().size() != 1) { return multiply; } + auto nextMultiplyInput = *multiply->output(0).get_target_inputs().begin(); - auto nextMultiply = as_type_ptr(nextMultiplyInput.get_node()->shared_from_this()); + auto nextMultiply = as_type_ptr>(nextMultiplyInput.get_node()->shared_from_this()); if (nextMultiply) { auto constant2 = getConstantInput(nextMultiply); if (!constant2 || constant2->output(0).get_target_inputs().size() != 1) { return multiply; } + auto newInput = multiply->input_value(1 - constant1->output(0).get_target_inputs().begin()->get_index()); auto newConst = fold(constant1, constant2); + auto inputPrecision0 = nextMultiply->get_origin_input_type(0); + auto inputPrecision1 = nextMultiply->get_origin_input_type(1); + auto outputPrecision = nextMultiply->get_overridden_output_type(0); auto newMultiply = - std::make_shared( - multiply->input_value(1 - constant1->output(0).get_target_inputs().begin()->get_index()), - newConst->output(0)); + std::make_shared>( + std::vector{ inputPrecision0, inputPrecision1 }, + std::vector{ outputPrecision }, + ngraph::op::TemporaryReplaceOutputType(newInput, inputPrecision0).get(), + ngraph::op::TemporaryReplaceOutputType(newConst, inputPrecision1).get()); copy_runtime_info(multiply, newMultiply); replace_node(nextMultiply, newMultiply); return newMultiply; @@ -363,6 +422,10 @@ FakeQuantizeDequantization NetworkHelper::foldDequantization(const std::shared_p } if (dequantization.subtract != nullptr) { + if (dequantization.subtract->input(0).get_element_type() != dequantization.subtract->input(1).get_element_type()) { + return dequantization; + } + if (dequantization.subtractConvert != nullptr) { const auto convertionResult = fold( dequantization.subtractConstant, @@ -388,20 +451,27 @@ FakeQuantizeDequantization NetworkHelper::foldDequantization(const std::shared_p } if (dequantization.multiply != nullptr) { - const std::shared_ptr result = fold( - dequantization.multiply->get_input_node_shared_ptr(0), - dequantization.multiply->get_input_node_shared_ptr(1)); - if (is_type(result)) { - if (inPlace) { - copyInfo(dequantization.multiply, result); - } - replace_node(dequantization.multiply, result); - dequantization = NetworkHelper::getDequantization(node, branchIndex, inPlace); - } else { + if (dequantization.multiply->input(0).get_element_type() != dequantization.multiply->input(1).get_element_type()) { + return dequantization; + } + + std::shared_ptr result = fold( + dequantization.multiply->get_input_node_shared_ptr(0), + dequantization.multiply->get_input_node_shared_ptr(1)); + if (!is_type(result)) { return dequantization; } + if (dequantization.multiply->get_output_element_type(0) != result->get_element_type()) { + result = fold(result, dequantization.multiply->get_output_element_type(0)); + } + if (inPlace) { + copyInfo(dequantization.multiply, result); + } + replace_node(dequantization.multiply, result); + dequantization = NetworkHelper::getDequantization(node, branchIndex, inPlace); } + return dequantization; } @@ -434,7 +504,7 @@ std::shared_ptr NetworkHelper::separateInStandaloneBranch(std::sha parent.get_node_shared_ptr()->set_friendly_name(parent.get_node_shared_ptr()->get_name() + "_new"); } - std::vector> inputs = NetworkHelper::getInputs(node); + std::vector> inputs = node->input_values(); const size_t inputIndex = NetworkHelper::getChildInputIndex(dequantization.multiply, node); inputs[inputIndex] = parent; const std::shared_ptr newNode = node->clone_with_new_inputs(inputs); @@ -661,14 +731,36 @@ std::shared_ptr NetworkHelper::composeFakeQuantize(const s } if (dequantization.multiply != nullptr) { + // multiply different precision constants (value1 & value2) and convert result to first argument precision (value1) + auto multiply = []( + const std::shared_ptr& value1, + const std::shared_ptr& value2) -> std::shared_ptr { + const ngraph::element::Type precision1 = value1->output(0).get_element_type(); + const ngraph::element::Type precision2 = value2->output(0).get_element_type(); + // 1) precision1 & precision2 are not equal but similar + // 2) precision2 >= precision1 + assert((precision2.is_real() == precision1.is_real()) && (precision2.bitwidth() >= precision1.bitwidth())); + + auto output = fold( + precision2 != precision1 ? fold(value1, precision2) : value1, + value2); + + if (output->output(0).get_element_type() != precision1) { + output = fold(output, precision1); + } + + return output; + }; + const std::shared_ptr replacement = std::make_shared>( - newFakeQuantize->input_value(0), - newFakeQuantize->input_value(1), - newFakeQuantize->input_value(2), - fold(newFakeQuantize->get_input_node_shared_ptr(3), dequantization.multiply->get_input_node_shared_ptr(1)), - fold(newFakeQuantize->get_input_node_shared_ptr(4), dequantization.multiply->get_input_node_shared_ptr(1)), + newFakeQuantize->input_value(0ul), + newFakeQuantize->input_value(1ul), + newFakeQuantize->input_value(2ul), + multiply(newFakeQuantize->get_input_node_shared_ptr(3ul), dequantization.multiplyConstant), + multiply(newFakeQuantize->get_input_node_shared_ptr(4ul), dequantization.multiplyConstant), newFakeQuantize->get_levels(), newFakeQuantize->get_auto_broadcast()); + replace_node(dequantization.multiply, replacement); replacement->set_friendly_name(newFakeQuantize->get_friendly_name()); newFakeQuantize = replacement; @@ -685,7 +777,8 @@ std::tuple, std::shared_ptr> NetworkHelper::decompos const float min, const float max, const bool hasZeroPoint, - const bool updatePrecision) { + const bool updatePrecision, + const element::Type deqPrecision) { using std::make_shared; const auto outputLow = fq->input_value(3); @@ -714,9 +807,9 @@ std::tuple, std::shared_ptr> NetworkHelper::decompos } std::shared_ptr shift = hasZeroPoint ? - std::make_shared(outputLow.get_element_type(), outputLow.get_shape(), shifts) : + std::make_shared(deqPrecision, outputLow.get_shape(), shifts) : nullptr; - std::shared_ptr scale = std::make_shared(outputLow.get_element_type(), outputLow.get_shape(), scales); + std::shared_ptr scale = std::make_shared(element::f32, outputLow.get_shape(), scales); auto newMin = make_shared(outputLow.get_element_type(), outputLow.get_shape(), minValues); auto newMax = make_shared(outputLow.get_element_type(), outputLow.get_shape(), maxValues); @@ -802,9 +895,12 @@ std::tuple, std::shared_ptr> NetworkHelper::decompos ngraph::copy_runtime_info({ newFQ, sub }, sub); } - const std::shared_ptr dequantize = std::make_shared( - sub == nullptr ? (convert2 == nullptr ? newFQ : convert2) : sub, - scale); + const auto dequantize = + std::make_shared>( + std::vector{ element::f32, element::f32 }, + std::vector{ fq->get_output_element_type(0) }, + ngraph::op::TemporaryReplaceOutputType(sub == nullptr ? (convert2 == nullptr ? newFQ : convert2) : sub, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(scale, element::f32).get()); dequantize->set_friendly_name(newFQ->get_friendly_name() + "/DequantizationMultiply"); ngraph::copy_runtime_info({ newFQ, dequantize }, dequantize); @@ -843,37 +939,36 @@ FakeQuantizeDequantization NetworkHelper::makeDequantization( const ngraph::element::Type originalPrecision, const ngraph::Shape dataNodeOutputShape, element::Type precision, - float min, - float max) { + const ngraph::element::Type deqPrecision) { // TODO: we create input here! we really need it here? const std::shared_ptr input = std::make_shared(precision, dataNodeOutputShape); std::shared_ptr parent = input; std::shared_ptr convert; - if (precision == originalPrecision) { + if (precision == deqPrecision) { convert = nullptr; } else { convert = std::make_shared( input, - originalPrecision); + deqPrecision); parent = convert; } std::shared_ptr subtract; std::shared_ptr subtractConstant; if (std::abs(dequantizationSub) > 1e-6) { - subtractConstant = std::make_shared(originalPrecision, ngraph::Shape({}), std::vector({ dequantizationSub })); - subtract = std::make_shared>(parent, subtractConstant); - subtract->set_output_type(0, originalPrecision, subtract->get_output_partial_shape(0)); + subtract = std::make_shared>( + parent, + std::make_shared(deqPrecision, ngraph::Shape({}), std::vector({ dequantizationSub }))); + subtract->set_output_type(0, deqPrecision, subtract->get_output_partial_shape(0)); parent = subtract; } // mandatory - std::shared_ptr multiplyConstant = std::make_shared( - originalPrecision, - ngraph::Shape({}), - std::vector({ dequantizationMul })); - std::shared_ptr multiply = std::make_shared(parent, multiplyConstant); + auto multiplyConstant = std::make_shared(deqPrecision, ngraph::Shape({}), std::vector({ dequantizationMul })); + auto multiply = std::make_shared>( + DequantizationMultiply(parent, multiplyConstant), + originalPrecision); return FakeQuantizeDequantization(input, convert, subtract, nullptr, subtractConstant, multiply, multiplyConstant); } @@ -884,7 +979,8 @@ FakeQuantizeDequantization NetworkHelper::createDequantizationFromFakeQuantize( float min, float max, const bool hasZeroPoint, - const bool updatePrecision) { + const bool updatePrecision, + const element::Type deqPrecision) { using std::make_shared; const ngraph::element::Type_t fqPrecision = fq->get_output_element_type(0); @@ -896,18 +992,17 @@ FakeQuantizeDequantization NetworkHelper::createDequantizationFromFakeQuantize( // TODO: threshold values have to used here to avoid shifts - const std::shared_ptr scale = as_type_ptr(fold( + const std::shared_ptr scale = as_type_ptr(fold(fold( fold(outputHigh, outputLow), - fold(newMax, newMin))); + fold(newMax, newMin)), deqPrecision)); assert(scale != nullptr); - std::shared_ptr shift; - if (hasZeroPoint) { - shift = as_type_ptr(fold( + std::shared_ptr shift = hasZeroPoint ? + as_type_ptr(fold(fold( fold(fold(newMin, outputHigh), fold(newMax, outputLow)), - fold(outputHigh, outputLow))); - assert(shift != nullptr); - } + fold(outputHigh, outputLow)), deqPrecision)) : + nullptr; + assert((!hasZeroPoint) || (hasZeroPoint && shift != nullptr)); if (shift != nullptr) { std::shared_ptr shiftConst = as_type_ptr(shift); @@ -925,8 +1020,8 @@ FakeQuantizeDequantization NetworkHelper::createDequantizationFromFakeQuantize( std::shared_ptr parent = input; std::shared_ptr convert; - if (updatePrecision) { - convert = std::make_shared(parent, fq->get_output_element_type(0)); + if (updatePrecision || (parent->output(0).get_element_type() != deqPrecision)) { + convert = std::make_shared(parent, deqPrecision); parent = convert; } else { convert = nullptr; @@ -935,12 +1030,13 @@ FakeQuantizeDequantization NetworkHelper::createDequantizationFromFakeQuantize( std::shared_ptr subtract; if (shift != nullptr) { subtract = make_shared>(parent, shift); - subtract->set_output_type(0, fq->get_output_element_type(0), subtract->get_output_partial_shape(0)); + subtract->set_output_type(0, deqPrecision, subtract->get_output_partial_shape(0)); parent = subtract; } else { subtract = nullptr; } const std::shared_ptr multiply = std::make_shared(parent, scale); + multiply->set_output_type(0, fq->get_output_element_type(0), multiply->get_output_partial_shape(0)); return FakeQuantizeDequantization(fq, convert, subtract, nullptr, shift, multiply, scale); } @@ -1006,7 +1102,7 @@ FakeQuantizeDequantization NetworkHelper::getDequantization(const std::shared_pt return 1ul; }; - Output dataNode = inPlace ? node : node->input_value(parentIndex); + Output dataNode = inPlace ? node->output(0) : node->input_value(parentIndex); const std::shared_ptr multiply = as_type_ptr(dataNode.get_node_shared_ptr()); std::shared_ptr multiplyConstant; @@ -1118,6 +1214,40 @@ FakeQuantizeDequantization NetworkHelper::normalizeDequantization(FakeQuantizeDe return dequantization; } +std::shared_ptr NetworkHelper::normalizeDequantizationShape(const std::shared_ptr& eltwise) { + const size_t constantIdx = getConstantInputIndex(eltwise); + const auto constant = as_type_ptr(eltwise->get_input_node_shared_ptr(constantIdx)); + + const auto getConstWithNormalizeShape = []( + const std::shared_ptr& eltwise, + const std::shared_ptr& constant) { + const auto constantShape = constant->get_shape(); + if (constantShape.empty()) { + return constant; + } + + const auto eltwiseShape = eltwise->get_output_shape(0); + if (constantShape.size() < eltwiseShape.size()) { + Shape unsqueezeConstantShape(eltwiseShape.size() - constantShape.size()); + std::iota(unsqueezeConstantShape.begin(), unsqueezeConstantShape.end(), 0ul); + + const auto newConstant = fold( + constant, + op::Constant::create(element::i32, Shape{ unsqueezeConstantShape.size() }, unsqueezeConstantShape)); + + return as_type_ptr(newConstant); + } else { + return constant; + } + }; + + const auto normalizedConstant = getConstWithNormalizeShape(eltwise, constant); + replace_node(constant, normalizedConstant); + copy_runtime_info(constant, normalizedConstant); + + return normalizedConstant; +} + FakeQuantizeDequantizationValues NetworkHelper::createEmptyValues(const FakeQuantizeDequantization& dequantization) { std::shared_ptr parent = dequantization.convert ? dequantization.convert : dequantization.data.get_node_shared_ptr(); @@ -1245,22 +1375,26 @@ NetworkHelper::InsertDequantizationResult NetworkHelper::moveDequantizationAfter newOperation->set_friendly_name(operation->get_friendly_name()); ngraph::copy_runtime_info(operation, newOperation); - if (updatePrecision) { - auto op = std::dynamic_pointer_cast(newOperation); - if (op == nullptr) { - THROW_IE_LPT_EXCEPTION(*newOperation) << "not possible to update precision for not TypeRelaxedBase operation"; + auto op = std::dynamic_pointer_cast(newOperation); + if (op != nullptr) { + if (updatePrecision) { + op->set_overridden_output_type(newOperation->get_input_element_type(0)); + } else if (dequantization.multiply) { + op->set_overridden_output_type(dequantization.multiply->get_input_element_type(1)); + } else if (dequantization.subtract) { + op->set_overridden_output_type(dequantization.subtract->get_input_element_type(1)); } - op->set_overridden_output_type(newOperation->get_input_element_type(0)); std::dynamic_pointer_cast(newOperation)->validate_and_infer_types(); } - const bool shouldConvert = (newOperation->get_output_element_type(0) != dequantization.multiply->get_output_element_type(0)); + const element::Type deqPrecision = dequantization.multiply->get_input_node_shared_ptr(1)->get_output_element_type(0); + const bool shouldConvert = (newOperation->get_output_element_type(0) != deqPrecision); auto parent = newOperation; if (shouldConvert) { const auto convertOutputPrecision = dequantization.convert != nullptr ? dequantization.convert->get_output_element_type(0) : - dequantization.multiply->get_output_element_type(0); + deqPrecision; parent = std::make_shared(parent, convertOutputPrecision); ngraph::copy_runtime_info({ newOperation, parent }, parent); } @@ -1296,11 +1430,12 @@ NetworkHelper::InsertDequantizationResult NetworkHelper::moveDequantizationAfter ", multiply dequantization constant " << multiplyConstant->get_friendly_name() << ":" << multiplyConstant->output(0).get_element_type(); } - parent = std::make_shared( - parent, - multiplyConstant->output(0).get_element_type() == parentPrecision ? - multiplyConstant : - fold(multiplyConstant->output(0), parentPrecision)); + parent = std::make_shared>( + DequantizationMultiply(parent, + multiplyConstant->output(0).get_element_type() == parentPrecision ? + multiplyConstant : + fold(multiplyConstant->output(0), parentPrecision)), + dequantization.multiply->get_output_element_type(0)); ngraph::copy_runtime_info({ newOperation, parent }, parent); } replace_node(operation, parent); @@ -1353,14 +1488,6 @@ size_t NetworkHelper::getParentOutputIndex(const std::shared_ptr& parent->get_friendly_name() << " and " << child->get_friendly_name() << " was not found"; } -std::vector> NetworkHelper::getInputs(const std::shared_ptr& node) { - std::vector> inputs(node->get_input_size()); - for (size_t i = 0; i < node->get_input_size(); ++i) { - inputs[i] = node->get_input_node_shared_ptr(i); - } - return inputs; -} - std::shared_ptr NetworkHelper::toScalarIfPossible(std::shared_ptr node) { std::shared_ptr constant = as_type_ptr(node); if (constant == nullptr) { diff --git a/inference-engine/src/low_precision_transformations/src/normalize_l2.cpp b/inference-engine/src/low_precision_transformations/src/normalize_l2.cpp index 68d55727a35cf9..4368a48075f324 100644 --- a/inference-engine/src/low_precision_transformations/src/normalize_l2.cpp +++ b/inference-engine/src/low_precision_transformations/src/normalize_l2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -120,7 +120,8 @@ bool NormalizeL2Transformation::transform(TransformationContext &context, ngraph } auto newNormalize = std::make_shared>( - std::vector{ element::f32, element::f32 }, std::vector{element::f32}, + std::vector{ element::f32, element::f32 }, + std::vector{deqPrecision}, ngraph::op::TemporaryReplaceOutputType(dequantization.subtract == nullptr ? dequantization.data : dequantization.subtract, element::f32).get(), ngraph::op::TemporaryReplaceOutputType(axes->clone_with_new_inputs({}), element::f32).get(), normalize->get_eps(), @@ -128,7 +129,8 @@ bool NormalizeL2Transformation::transform(TransformationContext &context, ngraph NetworkHelper::copyInfo(normalize, newNormalize); auto newMultiply = std::make_shared>( - std::vector{ element::f32, element::f32 }, std::vector{element::f32}, + std::vector{ element::f32, element::f32 }, + std::vector{normalize->get_output_element_type(0)}, ngraph::op::TemporaryReplaceOutputType(newNormalize, element::f32).get(), ngraph::op::TemporaryReplaceOutputType(newScalesConst, element::f32).get()); diff --git a/inference-engine/src/low_precision_transformations/src/prelu.cpp b/inference-engine/src/low_precision_transformations/src/prelu.cpp index 1c1a7c33218490..b5a15c1bca2f8b 100644 --- a/inference-engine/src/low_precision_transformations/src/prelu.cpp +++ b/inference-engine/src/low_precision_transformations/src/prelu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/pull_reshape_through_dequantization.cpp b/inference-engine/src/low_precision_transformations/src/pull_reshape_through_dequantization.cpp new file mode 100644 index 00000000000000..a6dc3fe4e6d85c --- /dev/null +++ b/inference-engine/src/low_precision_transformations/src/pull_reshape_through_dequantization.cpp @@ -0,0 +1,129 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "low_precision/pull_reshape_through_dequantization.hpp" + +#include +#include +#include + +#include +#include +#include +#include "low_precision/network_helper.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(ngraph::pass::low_precision::PullReshapeThroughDequantization, "PullReshapeThroughDequantizationFusion", 0); + +namespace pull_reshape_through_dequantization { + +std::shared_ptr moveThroughElementwise(const std::shared_ptr& reshape, const std::shared_ptr& elementwise) { + const auto reshapeValues = reshape->get_input_node_shared_ptr(1); + NGRAPH_CHECK(reshapeValues != nullptr, "Reshape constant was not found"); + + const auto constantIndex = ngraph::pass::low_precision::NetworkHelper::getConstantInputIndex(elementwise); + NGRAPH_CHECK(constantIndex != -1); + + const auto elementwiseValues = elementwise->get_input_node_shared_ptr(constantIndex); + + const std::shared_ptr newReshape = as_type_ptr(reshape->clone_with_new_inputs({ + elementwise->get_input_node_shared_ptr(constantIndex == 1 ? 0ul : 1ul), + reshapeValues })); + + std::shared_ptr newElementwiseValues; + + const Shape elementwiseValuesShape = elementwiseValues->output(0).get_shape(); + if (!elementwiseValuesShape.empty() && (elementwiseValuesShape.size() != 1ul)) { + // update shape constant value to avoid eltwise constan value broadcasting + const Shape elementwiseShape = elementwise->output(0).get_shape(); + const std::vector reshapeValuesVector = as_type_ptr(reshapeValues)->cast_vector(); + + const std::vector newReshapeValuesVector = ngraph::pass::low_precision::NetworkHelper::updateReshapeValues( + elementwiseValuesShape, + elementwiseShape, + reshapeValuesVector); + + const auto newReshapeValues = std::make_shared( + reshapeValues->output(0).get_element_type(), + Shape{ newReshapeValuesVector.size() }, + newReshapeValuesVector); + + newElementwiseValues = ngraph::pass::low_precision::fold_reshape( + elementwiseValues->output(0), + newReshapeValues->output(0), + as_type_ptr(reshape)->get_special_zero()); + } else { + newElementwiseValues = elementwiseValues; + } + const auto newElementwise = elementwise->clone_with_new_inputs({ newReshape, newElementwiseValues }); + + replace_node(reshape, newElementwise); + copy_runtime_info({ elementwise, reshape }, { newReshape, newElementwise }); + return newReshape; +} + +std::shared_ptr moveThroughConvert(const std::shared_ptr& reshape, const std::shared_ptr& convert) { + const auto newReshape = reshape->clone_with_new_inputs({ convert->get_input_node_shared_ptr(0), reshape->get_input_node_shared_ptr(1) }); + const auto newConvert = convert->clone_with_new_inputs({ newReshape }); + replace_node(reshape, newConvert); + copy_runtime_info({ convert, reshape }, { newReshape, newConvert }); + + return newReshape; +} + +void fuseConstant(const std::shared_ptr& reshape, const std::shared_ptr& constant) { + ngraph::OutputVector result(1); + reshape->constant_fold(result, { constant->output(0), reshape->get_input_node_ptr(1)->output(0) }); + const auto newConstant = result[0].get_node_shared_ptr(); + replace_node(reshape, newConstant); + copy_runtime_info({ constant, reshape }, newConstant); +} + +} // namespace pull_reshape_through_dequantization + +ngraph::pass::low_precision::PullReshapeThroughDequantization::PullReshapeThroughDequantization( + const std::vector& inputPrecisions) { + const auto weights = ngraph::pattern::wrap_type(pattern::type_matches_any(inputPrecisions)); + const auto convert = ngraph::pattern::wrap_type({ weights }); + const auto subtractConvert = ngraph::pattern::wrap_type(); + const auto subtract = ngraph::pattern::wrap_type({ convert, subtractConvert }); + + const auto subtractOrConvert = std::make_shared(OutputVector{ convert, subtract }); + + const auto multiplyConstant = ngraph::pattern::wrap_type(); + const auto multiply = ngraph::pattern::wrap_type({ subtractOrConvert, multiplyConstant }); + + const auto reshapeConstant = ngraph::pattern::wrap_type(); + auto reshapeWrapper = ngraph::pattern::wrap_type({ multiply, reshapeConstant }); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher & m) -> bool { + const auto& opsMap = m.get_pattern_value_map(); + auto reshape = opsMap.find(reshapeWrapper)->second.get_node()->shared_from_this(); + + auto child = reshape->get_output_target_inputs(0).begin()->get_node(); + if (is_type(child)) { + return false; + } + + while (reshape != nullptr) { + const auto parent = reshape->get_input_node_shared_ptr(0); + if (is_type(parent) || is_type(parent)) { + reshape = pull_reshape_through_dequantization::moveThroughElementwise(reshape, parent); + } else if (is_type(parent)) { + reshape = pull_reshape_through_dequantization::moveThroughConvert(reshape, parent); + } else if (is_type(parent)) { + pull_reshape_through_dequantization::fuseConstant(reshape, as_type_ptr(parent)); + reshape = nullptr; + } else { + THROW_IE_LPT_EXCEPTION(*parent) << "unexepcted operation type"; + } + } + + return true; + }; + + auto m = std::make_shared(reshapeWrapper, "PullReshapeThroughDequantization"); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/low_precision_transformations/src/pull_transpose_through_dequantization.cpp b/inference-engine/src/low_precision_transformations/src/pull_transpose_through_dequantization.cpp new file mode 100644 index 00000000000000..90f2230848c409 --- /dev/null +++ b/inference-engine/src/low_precision_transformations/src/pull_transpose_through_dequantization.cpp @@ -0,0 +1,122 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "low_precision/pull_transpose_through_dequantization.hpp" + +#include +#include +#include +#include + +#include +#include +#include +#include "low_precision/network_helper.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(ngraph::pass::low_precision::PullTransposeThroughDequantization, "PullTransposeThroughDequantization", 0); + +namespace pull_transpose_through_dequantization { + +std::shared_ptr moveThroughElementwise(const std::shared_ptr& transpose, const std::shared_ptr& elementwise) { + const auto transposeValues = transpose->get_input_node_shared_ptr(1); + NGRAPH_CHECK(transposeValues != nullptr, "transpose constant was not found"); + + const auto constantIndex = ngraph::pass::low_precision::NetworkHelper::getConstantInputIndex(elementwise); + NGRAPH_CHECK(constantIndex != -1); + + auto elementwiseValues = elementwise->get_input_node_shared_ptr(constantIndex); + const auto transposeValuesShape = transposeValues->output(0).get_shape(); + const auto elementwiseValuesShape = elementwiseValues->output(0).get_shape(); + if (elementwiseValuesShape.size() != shape_size(transposeValuesShape)) { + if (shape_size(elementwiseValuesShape) != 1ul) { + return nullptr; + } + + elementwiseValues = ngraph::pass::low_precision::fold( + elementwiseValues, + std::make_shared( + element::i64, + Shape{ shape_size(transposeValuesShape) }, + std::vector(shape_size(transposeValuesShape), 1ul))); + assert(is_type(elementwiseValues)); + } + + const std::shared_ptr newTranspose = as_type_ptr(transpose->clone_with_new_inputs({ + elementwise->get_input_node_shared_ptr(constantIndex == 1 ? 0ul : 1ul), + transposeValues })); + + const auto newElementwiseValues = ngraph::pass::low_precision::fold( + elementwiseValues->output(0), + transposeValues->output(0)); + assert(is_type(newElementwiseValues)); + + const auto newElementwise = elementwise->clone_with_new_inputs({ newTranspose, newElementwiseValues }); + + replace_node(transpose, newElementwise); + copy_runtime_info({ elementwise, transpose }, { newTranspose, newElementwise }); + + return newTranspose; +} + +std::shared_ptr moveThroughConvert(const std::shared_ptr& transpose, const std::shared_ptr& convert) { + const auto newTranspose = transpose->clone_with_new_inputs({convert->get_input_node_shared_ptr(0), transpose->get_input_node_ptr(1)->output(0) }); + const auto newConvert = convert->clone_with_new_inputs({ newTranspose }); + replace_node(transpose, newConvert); + copy_runtime_info({ convert, transpose }, { newTranspose, newConvert }); + + return newTranspose; +} + +void fuseConstant(const std::shared_ptr& transpose, const std::shared_ptr& constant) { + const auto newConstant = ngraph::pass::low_precision::fold( + constant->output(0), + transpose->get_input_node_ptr(1)->output(0)); + + replace_node(transpose, newConstant); + copy_runtime_info({ constant, transpose }, newConstant); +} + +} // namespace pull_transpose_through_dequantization + +ngraph::pass::low_precision::PullTransposeThroughDequantization::PullTransposeThroughDequantization( + const std::vector& inputPrecisions) { + const auto weights = ngraph::pattern::wrap_type(pattern::type_matches_any(inputPrecisions)); + const auto convert = ngraph::pattern::wrap_type({ weights }); + const auto subtractConvert = ngraph::pattern::wrap_type(); + const auto subtract = ngraph::pattern::wrap_type({ convert, subtractConvert }); + + const auto subtractOrConvert = std::make_shared(OutputVector{ convert, subtract }); + + const auto multiplyConstant = ngraph::pattern::wrap_type(); + const auto multiply = ngraph::pattern::wrap_type({ subtractOrConvert, multiplyConstant }); + + const auto transposeConstant = ngraph::pattern::wrap_type(); + auto matcherTranspose = ngraph::pattern::wrap_type({ multiply, transposeConstant }); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher & m) -> bool { + const auto& opsMap = m.get_pattern_value_map(); + auto transpose = opsMap.find(matcherTranspose)->second.get_node()->shared_from_this(); + + while (transpose != nullptr) { + const auto parent = transpose->get_input_node_shared_ptr(0); + if (is_type(parent) || is_type(parent)) { + transpose = pull_transpose_through_dequantization::moveThroughElementwise(transpose, parent); + } else if (is_type(parent)) { + transpose = pull_transpose_through_dequantization::moveThroughConvert(transpose, parent); + } else if (is_type(parent)) { + pull_transpose_through_dequantization::fuseConstant(transpose, as_type_ptr(parent)); + transpose = nullptr; + } else { + THROW_IE_LPT_EXCEPTION(*parent) << "unexepcted operation type"; + } + } + + return true; + }; + + auto m = std::make_shared(matcherTranspose, "PullTransposeThroughDequantization"); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/low_precision_transformations/src/quantization_details.cpp b/inference-engine/src/low_precision_transformations/src/quantization_details.cpp index ffaba7f5c5951d..a813624b78c357 100644 --- a/inference-engine/src/low_precision_transformations/src/quantization_details.cpp +++ b/inference-engine/src/low_precision_transformations/src/quantization_details.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/relu.cpp b/inference-engine/src/low_precision_transformations/src/relu.cpp index 2500882dda635b..05a81e3554b206 100644 --- a/inference-engine/src/low_precision_transformations/src/relu.cpp +++ b/inference-engine/src/low_precision_transformations/src/relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/reshape.cpp b/inference-engine/src/low_precision_transformations/src/reshape.cpp index 5527b82d3adb83..deffd2092003ba 100644 --- a/inference-engine/src/low_precision_transformations/src/reshape.cpp +++ b/inference-engine/src/low_precision_transformations/src/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -114,9 +114,9 @@ void reshapeDequantizationConstant(const std::shared_ptr& resha const bool shouldBroadcast = (shape_size(newReshapeConstValues) != 1ul) && (reshapeConstValues[1] != 0) && (((reshapeConstValues[1] != -1) && - (static_cast(constantShape[1]) != reshapeConstValues[1])) || + (static_cast(newOperationConstantShape[1]) != reshapeConstValues[1])) || ((reshapeConstValues[1] == -1) && - (constantShape[1] != overallValue))); + (newOperationConstantShape[1] != overallValue))); const std::shared_ptr broadcastedConstant = shouldBroadcast ? fold( diff --git a/inference-engine/src/low_precision_transformations/src/split.cpp b/inference-engine/src/low_precision_transformations/src/split.cpp index c10d840b980753..a14867fc8e4a63 100644 --- a/inference-engine/src/low_precision_transformations/src/split.cpp +++ b/inference-engine/src/low_precision_transformations/src/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/squeeze.cpp b/inference-engine/src/low_precision_transformations/src/squeeze.cpp index 3a5d299de8bfa1..a715e52ad751bc 100644 --- a/inference-engine/src/low_precision_transformations/src/squeeze.cpp +++ b/inference-engine/src/low_precision_transformations/src/squeeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/strided_slice.cpp b/inference-engine/src/low_precision_transformations/src/strided_slice.cpp index 10ebb60d3915ec..e7b7a796566900 100644 --- a/inference-engine/src/low_precision_transformations/src/strided_slice.cpp +++ b/inference-engine/src/low_precision_transformations/src/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,14 +22,19 @@ std::shared_ptr stridedSliceDeqConstant( // return NetworkHelper::toScalar(constant); //} - if (strSlice->get_input_shape(0).size() != constant->get_shape().size()) { - const auto constantShape = constant->get_shape(); - const auto stridedSliceShape = strSlice->get_input_shape(0); - ngraph::Shape newConstantShape(stridedSliceShape.size(), 1); - - for (size_t i = 0; i < constantShape.size(); ++i) { - if (constantShape[i] != 1) { - newConstantShape[i] = constantShape[i]; + const auto stridedSliceShape = strSlice->get_input_shape(0); + const auto constantShape = constant->get_shape(); + if (stridedSliceShape.size() != constantShape.size()) { + ngraph::Shape newConstantShape; + if (ngraph::shape_size(constantShape) == 1) { + newConstantShape = ngraph::Shape(stridedSliceShape.size(), 1); + } else { + newConstantShape = constantShape; + + // case when constShape without batch + if ((constantShape.size() > 1) && + (constantShape.size() < stridedSliceShape.size())) { + newConstantShape.insert(newConstantShape.begin(), stridedSliceShape[0]); } } diff --git a/inference-engine/src/low_precision_transformations/src/subgraph.cpp b/inference-engine/src/low_precision_transformations/src/subgraph.cpp index c1e04c3b867c19..c7f1caf56ddc36 100644 --- a/inference-engine/src/low_precision_transformations/src/subgraph.cpp +++ b/inference-engine/src/low_precision_transformations/src/subgraph.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,7 +32,7 @@ bool isQuantizationPerChannel(const std::shared_ptr& node) { return true; } - const auto inputs = ngraph::pass::low_precision::NetworkHelper::getInputs(node); + const auto inputs = node->input_values(); for (const auto& input : inputs) { if (ngraph::is_type(input.get_node())) { continue; diff --git a/inference-engine/src/low_precision_transformations/src/subtract.cpp b/inference-engine/src/low_precision_transformations/src/subtract.cpp index 10b49dc481eb4d..2f86bfc97c7931 100644 --- a/inference-engine/src/low_precision_transformations/src/subtract.cpp +++ b/inference-engine/src/low_precision_transformations/src/subtract.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/subtract_multiply_to_multiply_add.cpp b/inference-engine/src/low_precision_transformations/src/subtract_multiply_to_multiply_add.cpp index a8565131e5cc46..0160830cefbade 100644 --- a/inference-engine/src/low_precision_transformations/src/subtract_multiply_to_multiply_add.cpp +++ b/inference-engine/src/low_precision_transformations/src/subtract_multiply_to_multiply_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,9 +67,7 @@ bool SubtractMultiplyToMultiplyAddTransformation::transform(TransformationContex dequantization.subtract->get_input_element_type(0)) : dequantization.convert->get_input_element_type(0); - const element::Type precisionAfterDequantization = dequantization.subtract == nullptr ? - dequantization.multiply->get_output_element_type(0) : - dequantization.subtract->get_output_element_type(0); + const element::Type precisionAfterDequantization = dequantization.multiply->get_output_element_type(0); if (dequantization.empty()) { return false; @@ -84,23 +82,18 @@ bool SubtractMultiplyToMultiplyAddTransformation::transform(TransformationContex { const std::shared_ptr multiplyConstant = dequantization.multiply->get_input_node_shared_ptr(1); - if (lastNewPrecision != precisionAfterDequantization) { - lastNew = std::make_shared>( - std::vector{element::f32, element::f32}, std::vector{}, - ngraph::op::TemporaryReplaceOutputType(lastNew, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(multiplyConstant, element::f32).get()); + lastNew = std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{deqPrecision}, + ngraph::op::TemporaryReplaceOutputType(lastNew, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(multiplyConstant, element::f32).get()); - auto lastNewPtr = lastNew.get_node_shared_ptr(); - NetworkHelper::setOutDataPrecision(as_type_ptr(lastNewPtr), precisionAfterDequantization); - } else { - lastNew = std::make_shared(lastNew, multiplyConstant); - } if (dequantization.multiply != nullptr) { auto lastNewPtr = lastNew.get_node_shared_ptr(); NetworkHelper::copyInfo(dequantization.multiply, lastNewPtr); } - lastNewPrecision = precisionAfterDequantization; + lastNewPrecision = deqPrecision; } if (dequantization.subtract != nullptr) { @@ -108,9 +101,9 @@ bool SubtractMultiplyToMultiplyAddTransformation::transform(TransformationContex std::shared_ptr subtractConstant = fold( fold( - fold(originalSubtractConstant, precisionAfterDequantization), - std::make_shared(precisionAfterDequantization, Shape{}, std::vector{ -1.f })), - fold(dequantization.multiply->get_input_node_shared_ptr(1), precisionAfterDequantization)); + fold(originalSubtractConstant, deqPrecision), + std::make_shared(deqPrecision, Shape{}, std::vector{ -1.f })), + fold(dequantization.multiply->get_input_node_shared_ptr(1), deqPrecision)); if (is_type(subtractConstant)) { std::shared_ptr constant = as_type_ptr(subtractConstant); @@ -119,22 +112,18 @@ bool SubtractMultiplyToMultiplyAddTransformation::transform(TransformationContex } } - if (lastNewPrecision != precisionAfterDequantization) { - lastNew = std::make_shared>( - std::vector{element::f32, element::f32}, std::vector{}, - ngraph::op::TemporaryReplaceOutputType(lastNew, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(subtractConstant, element::f32).get()); - - auto lastNewPtr = lastNew.get_node_shared_ptr(); - NetworkHelper::setOutDataPrecision(as_type_ptr(lastNewPtr), precisionAfterDequantization); - } else { - lastNew = std::make_shared(lastNew, subtractConstant); - } + lastNew = std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{precisionAfterDequantization}, + ngraph::op::TemporaryReplaceOutputType(lastNew, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(subtractConstant, element::f32).get()); auto lastNewPtr = lastNew.get_node_shared_ptr(); NetworkHelper::copyInfo(dequantization.subtract, lastNewPtr); lastNewPrecision = precisionAfterDequantization; + } else { + NetworkHelper::setOutDataPrecision(as_type_ptr(lastNew.get_node_shared_ptr()), precisionAfterDequantization); } const std::shared_ptr lastOriginal = dequantization.multiply == nullptr ? diff --git a/inference-engine/src/low_precision_transformations/src/transformation_context.cpp b/inference-engine/src/low_precision_transformations/src/transformation_context.cpp index 515366380e083e..22d8d3444682de 100644 --- a/inference-engine/src/low_precision_transformations/src/transformation_context.cpp +++ b/inference-engine/src/low_precision_transformations/src/transformation_context.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/transformer.cpp b/inference-engine/src/low_precision_transformations/src/transformer.cpp index f9bd681bd99ce1..205cd77e930376 100644 --- a/inference-engine/src/low_precision_transformations/src/transformer.cpp +++ b/inference-engine/src/low_precision_transformations/src/transformer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,6 +19,7 @@ #include "ngraph_ops/type_relaxed.hpp" #include "ngraph/pass/constant_folding.hpp" +#include "ngraph/opsets/opset6.hpp" // branch specific transformations #include "low_precision/concat.hpp" @@ -217,10 +218,12 @@ LowPrecisionTransformations LowPrecisionTransformer::getAllTransformations(const add(params). add(params). add(params). + add(params). add(params). add(params). add(params). add(params). + add(params). add(params). add(params). add(params). @@ -229,7 +232,6 @@ LowPrecisionTransformations LowPrecisionTransformer::getAllTransformations(const add(params). add(params). add(params). - add(params). addCleanup(params). addCleanup(params). @@ -331,6 +333,7 @@ TypeRelaxedReplacer::TypeRelaxedReplacer() { make_matcher_type_relaxed(this); make_matcher_type_relaxed(this); make_matcher_type_relaxed(this); + make_matcher_type_relaxed(this); make_matcher_type_relaxed(this); make_matcher_type_relaxed(this); } diff --git a/inference-engine/src/low_precision_transformations/src/transparent_base_transformation.cpp b/inference-engine/src/low_precision_transformations/src/transparent_base_transformation.cpp index 0aa32af3833f69..b8c75d43619b49 100644 --- a/inference-engine/src/low_precision_transformations/src/transparent_base_transformation.cpp +++ b/inference-engine/src/low_precision_transformations/src/transparent_base_transformation.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "low_precision/transparent_base_transformation.hpp" #include diff --git a/inference-engine/src/low_precision_transformations/src/transpose.cpp b/inference-engine/src/low_precision_transformations/src/transpose.cpp index b41beefa944dcc..ede155604a59cf 100644 --- a/inference-engine/src/low_precision_transformations/src/transpose.cpp +++ b/inference-engine/src/low_precision_transformations/src/transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/unsqueeze.cpp b/inference-engine/src/low_precision_transformations/src/unsqueeze.cpp index d1bc2df60fdc97..b38ac4eacb8042 100644 --- a/inference-engine/src/low_precision_transformations/src/unsqueeze.cpp +++ b/inference-engine/src/low_precision_transformations/src/unsqueeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/variadic_split.cpp b/inference-engine/src/low_precision_transformations/src/variadic_split.cpp index d26919293468d5..ccc8e72634d0bd 100644 --- a/inference-engine/src/low_precision_transformations/src/variadic_split.cpp +++ b/inference-engine/src/low_precision_transformations/src/variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/weightable_layer_transformation.cpp b/inference-engine/src/low_precision_transformations/src/weightable_layer_transformation.cpp index ab475794f7b84a..15a757fa0dc44f 100644 --- a/inference-engine/src/low_precision_transformations/src/weightable_layer_transformation.cpp +++ b/inference-engine/src/low_precision_transformations/src/weightable_layer_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/CMakeLists.txt b/inference-engine/src/mkldnn_plugin/CMakeLists.txt index a20d12602da230..fb06dc1e5fdcdb 100644 --- a/inference-engine/src/mkldnn_plugin/CMakeLists.txt +++ b/inference-engine/src/mkldnn_plugin/CMakeLists.txt @@ -40,17 +40,18 @@ ie_add_plugin(NAME ${TARGET_NAME} set_ie_threading_interface_for(${TARGET_NAME}) +ie_mark_target_as_cc(${TARGET_NAME}) + if(SELECTIVE_BUILD STREQUAL "ON") # After disabling a block of code, some variables might be unused. - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" - OR CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR + CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$") target_compile_options(${TARGET_NAME} PRIVATE -Wno-unused-variable) endif() endif() target_link_libraries(${TARGET_NAME} PRIVATE mkldnn inference_engine inference_engine_legacy - inference_engine_transformations inference_engine_lp_transformations - openvino::conditional_compilation) + inference_engine_transformations inference_engine_lp_transformations) target_include_directories(${TARGET_NAME} PRIVATE $) @@ -83,9 +84,9 @@ target_include_directories(${TARGET_NAME}_obj PRIVATE $ $ $ - $ $ PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + $ $) set_ie_threading_interface_for(${TARGET_NAME}_obj) diff --git a/inference-engine/src/mkldnn_plugin/bf16transformer.cpp b/inference-engine/src/mkldnn_plugin/bf16transformer.cpp deleted file mode 100644 index b89bb3c46cc13e..00000000000000 --- a/inference-engine/src/mkldnn_plugin/bf16transformer.cpp +++ /dev/null @@ -1,384 +0,0 @@ -// Copyright (C) 2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "bf16transformer.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "ngraph/type/bfloat16.hpp" - -using namespace MKLDNNPlugin; -using namespace InferenceEngine; -using namespace InferenceEngine::details; - -void precisionColoringBF16(const CNNLayerPtr layer, - ordered_properties &printed_properties, - ordered_properties &node_properties) { - if (layer && !layer->insData.empty() && layer->input()) { - printed_properties.insert(printed_properties.begin(), - std::pair("Precision", - layer->input()->getPrecision() == Precision::FP32 ? "FP32" : "BF16")); - - if (layer->input()->getPrecision() == Precision::FP32) { - node_properties.emplace_back("fillcolor", "#5A5DF0"); - } else { - node_properties.emplace_back("fillcolor", "#20F608"); - } - } -} - -void BF16Transformer::convertToFloat(InferenceEngine::CNNNetwork &network) { - // go over all edges and all edges having FP32 mark as BF16 - std::vector sortedLayers = CNNNetSortTopologically(network); - InputsDataMap inputs = network.getInputsInfo(); - OutputsDataMap outputs = network.getOutputsInfo(); - for (auto iter : sortedLayers) { - for (size_t o = 0; o < iter->outData.size(); o++) { - if (inputs.find(iter->outData[o]->getName()) == inputs.end() - && outputs.find(iter->outData[o]->getName()) == outputs.end() - && !CaselessEq()(iter->type, "const") - && iter->outData[o]->getPrecision() == Precision::BF16) { - iter->outData[o]->setPrecision(Precision::FP32); - } - } - } -} - -void BF16Transformer::convertToBFloat16(InferenceEngine::CNNNetwork &network) { - // go over all edges and all edges having FP32 mark as BF16 - std::vector sortedLayers = CNNNetSortTopologically(network); - InputsDataMap inputs = network.getInputsInfo(); - OutputsDataMap outputs = network.getOutputsInfo(); - for (auto iter : sortedLayers) { - // check, if memory output node needs to be transformed - if (iter->type == "Memory" && iter->outData.size() == 0 && - iter->insData[0].lock()->getPrecision() == Precision::FP32) { - iter->insData[0].lock()->setPrecision(Precision::BF16); - } - - for (size_t o = 0; o < iter->outData.size(); o++) { - if (inputs.find(iter->outData[o]->getName()) == inputs.end() - && outputs.find(iter->outData[o]->getName()) == outputs.end() - && !CaselessEq()(iter->type, "const") - && iter->outData[o]->getPrecision() == Precision::FP32) { - iter->outData[o]->setPrecision(Precision::BF16); - } - } - } - - // insert convert after input if necessary - insertConvertAfterInput(network); - - // convert all edges back to FP32 on demand - optimizeToFloat(network); -} - -void BF16Transformer::optimizeToFloat(InferenceEngine::CNNNetwork &network) { - std::set toAnalyzeTensors; - std::set immutable; - bool hasBF16Tensor = false; - std::vector sortedLayers = CNNNetSortTopologically(network); - // 1. Verify if we do not have bf16 tensors - it's better to return early and not to try to return anything since there is no such tensors - for (auto iter : sortedLayers) { - for (size_t i = 0; i < iter->insData.size(); i++) { - if (iter->insData[i].lock()->getTensorDesc().getPrecision() == Precision::BF16) { - hasBF16Tensor = true; - } - } - for (size_t o = 0; o < iter->outData.size(); o++) { - if (iter->outData[o]->getTensorDesc().getPrecision() == Precision::BF16) { - hasBF16Tensor = true; - } - } - } - if (!hasBF16Tensor) { - return; - } - // 2a. go over all inputs and outputs and put them to the toAnalyzeTensors - InputsDataMap inputs = network.getInputsInfo(); - for (auto input : inputs) { - immutable.insert(input.second->getInputData()); - if (input.second->getInputData()->getTensorDesc().getPrecision() != Precision::BF16) { - toAnalyzeTensors.insert(input.second->getInputData()); - } - } - - OutputsDataMap outputs = network.getOutputsInfo(); - for (auto output : outputs) { - immutable.insert(output.second); - if (output.second->getTensorDesc().getPrecision() != Precision::BF16) { - toAnalyzeTensors.insert(output.second); - } - } - // 2b. go over all unknown layers for this algo and mark them as fp32 and add to the toAnalyzeTensors - // 2c. go over all inputs to _initbf16 and if they are fp32 - add them to the toAnalyzeTensors - for (auto iter : sortedLayers) { - if (_initbf16.find(iter->type) == _initbf16.end() - && _complementbf16.find(iter->type) == _complementbf16.end() - && _multiinput.find(iter->type) == _multiinput.end()) { - // try to mark inputs of the unknown layer - for (size_t i = 0; i < iter->insData.size(); i++) { - if (iter->insData[i].lock()->getPrecision() == Precision::BF16) { - bool marked = tryToMarkFP32(iter->insData[i].lock(), immutable); - if (marked) { - toAnalyzeTensors.insert(iter->insData[i].lock()); - } - } - } - // try to mark outputs of the unknown layer - for (size_t o = 0; o < iter->outData.size(); o++) { - if (iter->outData[o]->getPrecision() == Precision::BF16) { - bool marked = tryToMarkFP32(iter->outData[o], immutable); - if (marked) { - toAnalyzeTensors.insert(iter->outData[o]); - } - } - } - } - if (_initbf16.find(iter->type) != _initbf16.end()) { - // verify if input activation tensor is not bf16 - add to toAnalyzeTensors as well - // we are assuming here that _initbf16 contain only layers having one dynamic input - // in other case algorithm should be changed to care about two dynamic input tensors - // and take into account case of different precision if they are - if (iter->insData[0].lock()->getTensorDesc().getPrecision() != Precision::BF16) { - toAnalyzeTensors.insert(iter->insData[0].lock()); - // output tensor for FP32 convolutoin/FC layers should be FP32 as well - for (size_t o = 0; o < iter->outData.size(); o++) { - if (iter->outData[o]->getPrecision() == Precision::BF16) { - bool marked = tryToMarkFP32(iter->outData[o], immutable); - if (marked) { - toAnalyzeTensors.insert(iter->outData[o]); - } - } - } - } - } - } - // 3 - while toAnalyzeTensors is not empty look at the layers dealing with tensors mentioned in toAnalyzeTensors - while (!toAnalyzeTensors.empty()) { - DataPtr tensor = *toAnalyzeTensors.begin(); - toAnalyzeTensors.erase(tensor); - // look into producer of the tensor - auto layer = getCreatorLayer(tensor).lock(); - // if this layer is not from _initbf16 - analyze inputs - if (_initbf16.find(layer->type) == _initbf16.end()) { - // for all inputs investigate and modify tensor precision if required - for (size_t i = 0; i < layer->insData.size(); i++) { - auto creator = getCreatorLayer(layer->insData[i].lock()); - if (_skipmarking.find(creator.lock()->type) != _skipmarking.end()) { - continue; - } - bool marked = tryToMarkFP32(layer->insData[i].lock(), immutable); - if (marked) { - toAnalyzeTensors.insert(layer->insData[i].lock()); - } - } - } - - // mark all produced tensors to FP32 if they are BF16 and if they do not go _only_ to the toAnalyzeTensors - // TODO: when we enable greedy mode and start to produce bf16 tensor even if one consumer accepts it, - // this place should be changed. - // Instead of "if they do not go _only_ to the toAnalyzeTensors" we have to apply "if they do not go at least to one of _initbf16" - // TODO: add test input1->pooling1->conv1 and the same pooling1->relu. for example. now convolution should be returned to fp32 - // after greedy mode, it should be fp32. - for (auto inputTo : getInputTo(tensor)) { - for (size_t o = 0; o < inputTo.second->outData.size(); o++) { - if (inputTo.second->outData[o]->getTensorDesc().getPrecision() == Precision::BF16) { - // if some layer (e.g. memory) consumes tensor, but must be fitted with another layer (e.g. memory output) - // in the net, whe must prevent this tensor to be fp32 - marked - bool notToMarkFP32 = false; - for (auto consumer : getInputTo(inputTo.second->outData[o])) { - if (_skipmarking.find(consumer.second->type) != - _skipmarking.end()) { - notToMarkFP32 = true; - } - } - if (notToMarkFP32) { - continue; - } - bool marked = tryToMarkFP32(inputTo.second->outData[o], immutable); - if (marked) { - toAnalyzeTensors.insert(inputTo.second->outData[o]); - } - } - } - } - } - -#ifndef NDEBUG - { - std::ofstream file("bf16_icnnnetwork.dot"); - saveGraphToDot(network, file, precisionColoringBF16); - } -#endif -} - -bool BF16Transformer::tryToMarkFP32(InferenceEngine::DataPtr data, const std::set& immutable) { - bool marked = false; - if (immutable.find(data) == immutable.end() && data->getPrecision() == Precision::BF16) { - // we treat one consumer and many in different ways - // if there is one consumer, we can mark its input as float if it does not belong to the list of initial layers - // in other cases we need to mark tensor which is passed to several l ayers as FP32 only if there is at least one conusmer - // produces data in FP32. I.e. there should be a way fo getting FP32 from output data to this point - if (getInputTo(data).size() == 1) { - if (_initbf16.find(getInputTo(data).begin()->second->type) == _initbf16.end()) { - marked = true; - } - } else { - // get all consumers - for (auto o : getInputTo(data)) { - // if tensor goes to several layers, we will mark it by FP32 only if one of the layer is unknown - if (_initbf16.find(o.second->type) == _initbf16.end() && - _complementbf16.find(o.second->type) == _complementbf16.end() && - _multiinput.find(o.second->type) == _multiinput.end()) { - marked = true; - } - } - } - if (marked) { - data->setPrecision(Precision::FP32); - } - } - return marked; -} - -InferenceEngine::MemoryBlob::Ptr BF16Transformer::convertBF16ToFloat(InferenceEngine::MemoryBlob::Ptr tweights) { - TensorDesc td(Precision::FP32, tweights->getTensorDesc().getDims(), tweights->getTensorDesc().getLayout()); - MemoryBlob::Ptr weightsFP32 = make_shared_blob(td); - weightsFP32->allocate(); - auto lmbf16 = tweights->rmap(); - short *bf16data = lmbf16.as(); - auto lmfp32 = weightsFP32->wmap(); - float *fp32data = lmfp32.as(); - for (size_t i = 0; i < weightsFP32->size(); i++) { - fp32data[i] = ngraph::bfloat16::from_bits(bf16data[i]); - } - return weightsFP32; -} -void BF16Transformer::addLayerToCNNNetworkAfterData( - DataPtr parentOutData, - CNNLayer::Ptr layer, - const std::string& nextLayerName, - ICNNNetwork& net, - const int childInsDataIndex) { - CNNNetworkImpl* netImpl = dynamic_cast(&net); - if (netImpl == nullptr) { - THROW_IE_EXCEPTION << "unexpected network type"; - } - - CNNLayerPtr nextLayer; - if (!nextLayerName.empty()) { - netImpl->getLayerByName(nextLayerName.c_str(), nextLayer, nullptr); - } - - if (layer && (nextLayerName.empty() || (parentOutData == nullptr) || (childInsDataIndex != -1) || - (getInputTo(parentOutData).find(nextLayerName) != getInputTo(parentOutData).end()))) { - auto getTensorDesc = [](CNNLayerPtr& nextLayer) { - const DataPtr insData = nextLayer->insData[0].lock(); - return insData->getTensorDesc(); - }; - - const TensorDesc& parentTensorDesc = parentOutData != nullptr ? parentOutData->getTensorDesc() : getTensorDesc(nextLayer); - DataPtr newEdgeAfterLayer(new Data(layer->name, parentTensorDesc)); - newEdgeAfterLayer->setName(layer->name); - getCreatorLayer(newEdgeAfterLayer) = layer; - getInputTo(newEdgeAfterLayer).clear(); - - - if (netImpl == nullptr) { - THROW_IE_EXCEPTION << "unexpected network type"; - } - netImpl->addData(layer->name.c_str(), newEdgeAfterLayer); - IE_SUPPRESS_DEPRECATED_START - netImpl->addLayer(layer); - IE_SUPPRESS_DEPRECATED_END - - if (parentOutData != nullptr) { - getInputTo(parentOutData)[layer->name] = layer; - layer->insData.push_back(parentOutData); - } - layer->outData.push_back(newEdgeAfterLayer); - - if (!nextLayerName.empty()) { - // CNNLayerPtr nextLayer = getInputTo(parentOutData)[nextLayerName]; - getInputTo(newEdgeAfterLayer)[nextLayerName] = nextLayer; - - if (parentOutData != nullptr) { - getInputTo(parentOutData).erase(nextLayerName); - - if (childInsDataIndex == -1) { - for (size_t i = 0; i < nextLayer->insData.size(); i++) { - if (nextLayer->insData[i].lock() == parentOutData) { - nextLayer->insData[i] = newEdgeAfterLayer; - } - } - } else { - nextLayer->insData[childInsDataIndex] = newEdgeAfterLayer; - } - } else { - nextLayer->insData.push_back(newEdgeAfterLayer); - } - } else { - CNNLayerPtr parent = getCreatorLayer(parentOutData).lock(); - if (parent == nullptr) { - THROW_IE_EXCEPTION << "parent data is absent"; - } - netImpl->removeOutput(parent->name); - netImpl->addData(layer->name.c_str(), newEdgeAfterLayer); - netImpl->addOutput(layer->name); - } - } else { - THROW_IE_EXCEPTION << "Invalid argument"; - } -} - -void BF16Transformer::insertConvertAfterInput(InferenceEngine::CNNNetwork &network) { - auto inputLayers = InferenceEngine::CNNNetGetAllInputLayers(network); - for (auto inputIter : inputLayers) { - if (inputIter->type == "Const") { - continue; - } - for (size_t o = 0; o < inputIter->outData.size(); o++) { - for (auto bfInitIter : getInputTo(inputIter->outData[o])) { - if (inputIter->outData[o]->getPrecision() == Precision::BF16) { - // we don't need to enforce bf16-mode for the next layer - break; - } - auto bfInitLayer = bfInitIter.second; - if (_initbf16.find(bfInitLayer->type) != _initbf16.end()) { - if (CaselessEq()(bfInitLayer->type, "convolution")) { - // TODO: have to be removed after adding suitable implementation for convolution - break; - } - // insert convert - std::string layerName = inputIter->outData[o]->getName(); - LayerParams cnnLayerParams{layerName, "Convert", Precision::FP32}; - auto lay = std::make_shared(cnnLayerParams); - std::map par = {{"name", layerName}, - {"type", "Convert"}, - {"precision", "FP32"}}; - lay->params = par; - CNNLayerPtr convertLayer(lay); - BF16Transformer::addLayerToCNNNetworkAfterData(inputIter->outData[o], convertLayer, bfInitLayer->name, - network); - // compute input port id for bfInitLayer - for (size_t i = 0; i < bfInitLayer->insData.size(); i++) { - if (bfInitLayer->insData[i].lock()->getName() == inputIter->outData[o]->getName()) { - // set conv input as bf - bfInitLayer->insData[i].lock()->setPrecision(Precision::BF16); - break; - } - } - break; - } - } - } - } -} \ No newline at end of file diff --git a/inference-engine/src/mkldnn_plugin/bf16transformer.h b/inference-engine/src/mkldnn_plugin/bf16transformer.h deleted file mode 100644 index 2c32cffedc465f..00000000000000 --- a/inference-engine/src/mkldnn_plugin/bf16transformer.h +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (C) 2020-2021 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include -#include -#include -#include -#include - -namespace MKLDNNPlugin { - -class BF16Transformer { - const InferenceEngine::details::caseless_set _initbf16 = - { "convolution", "fullyconnected", "innerproduct", "gemm", "RegionYolo", "Interpolate", "PSROIPooling", "Deconvolution" }; - - const InferenceEngine::details::caseless_set _complementbf16 = - { "relu", "tanh", "elu", "square", "abs", "sqrt", "linear", "bounded_relu", "soft_relu", "normalize", - "sigmoid", "ReLU6", "not", "activation", "HSwish", "mish", "logistic", "mod", "resample", - "exp", "gelu", "clamp", "swish", "prelu", "pooling", "norm", "gather", "gather_elements", "memory", "mvn", "crop", "activation", - "broadcast", "convert", "BatchToSpace", "DepthToSpace", "ExtractImagePatches", "concat", "power", "lrn", - "permute", "ScatterUpdate", "ScatterElementsUpdate", "ScatterNDUpdate", "depthwise", - "select", "ShuffleChannels", "SpaceToBatch", "SpaceToDepth", "squeeze", "StridedSlice", "unsqueeze", "eltwise", - "ReduceAnd", "ReduceOr", "ReduceMax", "ReduceMin", "ScaleShift", "SoftMax"}; - - const InferenceEngine::details::caseless_set _multiinput = - { "concat", "eltwise" }; - // prevent fallback to fp32 without considering both input and output nodes - const InferenceEngine::details::caseless_set _skipmarking = - { "memory", "Split" }; - - /** - * Tries to mark tensor as FP32 by analyzing of local consumers of the tensor. Do not mark if - * - * 1. tensor goes to init layer (conv of fc) - * 2. goes to the layers which can work with BF16 - * - * if tensor goes to layer not supporting BF16, this tensor will be marked as FP32 - */ - bool tryToMarkFP32(InferenceEngine::DataPtr data, const std::set &immutable); - - /** - * Because of singularity of input node, layer, following input doesn't support bf16 itself. - * We fix it by insertion of convert layer, which has to be replaced to reorder in graph optimizer. - * - */ - void insertConvertAfterInput(InferenceEngine::CNNNetwork &network); - -public: - /** - * Restores Float point data types on edges which goes to non supported layers - * - * Algo: - * 1. Verify if we do not have bf16 tensors it's better to return early and not to try to return - * anything since there is no such tensors - * 2a. go over all inputs and outputs and if data type is not BF16, put them to the toAnalyzeTensors - * 2b. go over all unknown layers for this algo and mark them as fp32 and add their inputs and - * outputs to the toAnalyzeTensors and try to mark them as FP32 - * 2c. go over all inputs to _initbf16 and if they are fp32 add them to the toAnalyzeTensors - * - * 3 - while toAnalyzeTensors is not empty look at the layers dealing with tensors mentioned in - * toAnalyzeTensors, analyze parent and children and depending on the type of the layers try to - * extend FP32 data type - */ - void optimizeToFloat(InferenceEngine::CNNNetwork &network); - - /** - * Converts all edges from bfloat16 to float data type. Do not touch input and output nodes - */ - void convertToFloat(InferenceEngine::CNNNetwork &network); - - /** - * converts all fp32 edges excepting inputs and outputs to bf16 and call restoreFloatPrecision - */ - void convertToBFloat16(InferenceEngine::CNNNetwork &network); - - /** - * inserts given layer after current tensor - */ - static void addLayerToCNNNetworkAfterData( - InferenceEngine::DataPtr parentOutData, - InferenceEngine::CNNLayerPtr layer, - const std::string& nextLayerName, - InferenceEngine::ICNNNetwork& net, - const int childInsDataIndex = -1); - - InferenceEngine::MemoryBlob::Ptr convertBF16ToFloat(InferenceEngine::MemoryBlob::Ptr); -}; - -} // namespace MKLDNNPlugin diff --git a/inference-engine/src/mkldnn_plugin/config.cpp b/inference-engine/src/mkldnn_plugin/config.cpp index 20136f50b75103..8e2f29b8504b86 100644 --- a/inference-engine/src/mkldnn_plugin/config.cpp +++ b/inference-engine/src/mkldnn_plugin/config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -53,7 +53,7 @@ void Config::readProperties(const std::map &prop) { try { val_i = std::stoi(val); } catch (const std::exception&) { - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigParams::KEY_DYN_BATCH_LIMIT + IE_THROW() << "Wrong value for property key " << PluginConfigParams::KEY_DYN_BATCH_LIMIT << ". Expected only integer numbers"; } // zero and any negative value will be treated @@ -63,13 +63,13 @@ void Config::readProperties(const std::map &prop) { if (val == PluginConfigParams::YES) collectPerfCounters = true; else if (val == PluginConfigParams::NO) collectPerfCounters = false; else - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigParams::KEY_PERF_COUNT + IE_THROW() << "Wrong value for property key " << PluginConfigParams::KEY_PERF_COUNT << ". Expected only YES/NO"; } else if (key == PluginConfigParams::KEY_EXCLUSIVE_ASYNC_REQUESTS) { if (val == PluginConfigParams::YES) exclusiveAsyncRequests = true; else if (val == PluginConfigParams::NO) exclusiveAsyncRequests = false; else - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigParams::KEY_EXCLUSIVE_ASYNC_REQUESTS + IE_THROW() << "Wrong value for property key " << PluginConfigParams::KEY_EXCLUSIVE_ASYNC_REQUESTS << ". Expected only YES/NO"; } else if (key.compare(PluginConfigParams::KEY_DYN_BATCH_ENABLED) == 0) { if (val.compare(PluginConfigParams::YES) == 0) @@ -77,7 +77,7 @@ void Config::readProperties(const std::map &prop) { else if (val.compare(PluginConfigParams::NO) == 0) enableDynamicBatch = false; else - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigParams::KEY_DYN_BATCH_ENABLED + IE_THROW() << "Wrong value for property key " << PluginConfigParams::KEY_DYN_BATCH_ENABLED << ". Expected only YES/NO"; } else if (key.compare(PluginConfigParams::KEY_DUMP_EXEC_GRAPH_AS_DOT) == 0) { // empty string means that dumping is switched off @@ -88,7 +88,7 @@ void Config::readProperties(const std::map &prop) { else if (val == PluginConfigParams::YES) lpTransformsMode = LPTransformsMode::On; else - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigInternalParams::KEY_LP_TRANSFORMS_MODE; + IE_THROW() << "Wrong value for property key " << PluginConfigInternalParams::KEY_LP_TRANSFORMS_MODE; } else if (key.compare(PluginConfigParams::KEY_DUMP_QUANTIZED_GRAPH_AS_DOT) == 0) { dumpQuantizedGraphToDot = val; } else if (key.compare(PluginConfigParams::KEY_DUMP_QUANTIZED_GRAPH_AS_IR) == 0) { @@ -98,15 +98,15 @@ void Config::readProperties(const std::map &prop) { if (with_cpu_x86_avx512_core()) enforceBF16 = true; else - THROW_IE_EXCEPTION << "Platform doesn't support BF16 format"; + IE_THROW() << "Platform doesn't support BF16 format"; } else if (val == PluginConfigParams::NO) { enforceBF16 = false; } else { - THROW_IE_EXCEPTION << "Wrong value for property key " << PluginConfigParams::KEY_ENFORCE_BF16 + IE_THROW() << "Wrong value for property key " << PluginConfigParams::KEY_ENFORCE_BF16 << ". Expected only YES/NO"; } } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Unsupported property " << key << " by CPU plugin"; + IE_THROW(NotFound) << "Unsupported property " << key << " by CPU plugin"; } _config.clear(); } diff --git a/inference-engine/src/mkldnn_plugin/config.h b/inference-engine/src/mkldnn_plugin/config.h index 281d0a630dbd16..94f9a77835f868 100644 --- a/inference-engine/src/mkldnn_plugin/config.h +++ b/inference-engine/src/mkldnn_plugin/config.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_bf16_emitters.hpp b/inference-engine/src/mkldnn_plugin/emitters/jit_bf16_emitters.hpp index 1c6aa581278e2c..75ebf5b41d3034 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_bf16_emitters.hpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_bf16_emitters.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include "jit_emitter.hpp" diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.cpp b/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.cpp index aefca48ca3927b..0bb8b152be0c04 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.cpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -1309,7 +1309,7 @@ jit_power_static_emitter::jit_power_static_emitter(jit_generator *host, cpu_isa_ : jit_emitter(host, host_isa, node, exec_prc) { auto *powerLayer = dynamic_cast(node->getCnnLayer().get()); if (powerLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert power layer."; + IE_THROW() << "Cannot convert power layer."; power = powerLayer->power; scale = powerLayer->scale; @@ -1605,4 +1605,183 @@ void jit_negative_emitter::emit_isa(const std::vector &in_vec_idxs, cons h->uni_vsubps(vmm_dst, vmm_dst, vmm_src); } +/// ERF /// +jit_erf_emitter::jit_erf_emitter(jit_generator *host, cpu_isa_t host_isa, const MKLDNNNode* node, Precision exec_prc) +: jit_emitter(host, host_isa, node, exec_prc) { + prepare_table(); +} + +size_t jit_erf_emitter::get_inputs_num() const { return 1; } + +void jit_erf_emitter::emit_impl( + const std::vector &in_vec_idxs, + const std::vector &out_vec_idxs, + const std::vector &pool_vec_idxs, + const std::vector &pool_gpr_idxs, + const emitter_context *emit_context) const { + if (host_isa_ == cpu::x64::sse41) { + emit_isa(in_vec_idxs, out_vec_idxs); + } else if (host_isa_ == cpu::x64::avx2) { + emit_isa(in_vec_idxs, out_vec_idxs); + } else if (host_isa_ == cpu::x64::avx512_common) { + emit_isa(in_vec_idxs, out_vec_idxs); + } else { + assert(!"unsupported isa"); + } +} + +template +void jit_erf_emitter::emit_isa(const std::vector &in_vec_idxs, const std::vector &out_vec_idxs) const { + using Vmm = typename conditional3::type; + Vmm vmm_src = Vmm(in_vec_idxs[0]); + Vmm vmm_dst = Vmm(out_vec_idxs[0]); + + Vmm vmm_mask = Vmm(aux_vec_idxs[0]); + Vmm vmm_aux0 = Vmm(aux_vec_idxs[0]); + Vmm vmm_aux1 = Vmm(aux_vec_idxs[1]); + Vmm vmm_aux2 = Vmm(aux_vec_idxs[2]); + Vmm vmm_aux3 = Vmm(aux_vec_idxs[3]); + Vmm vmm_aux4 = Vmm(aux_vec_idxs[4]); + + auto compute_cmp_mask = [&](const Vmm &vmm_src, + const Xbyak::Operand &compare_operand, int cmp_predicate) { + if (host_isa_ == cpu::x64::avx512_common) { + h->vcmpps(k_mask, vmm_src, compare_operand, cmp_predicate); + } else { + h->uni_vcmpps(vmm_mask, vmm_src, compare_operand, cmp_predicate); + } + }; + + auto blend_with_mask = [&](const Vmm &vmm_dst, const Xbyak::Operand &src) { + if (host_isa_ == cpu::x64::avx512_common) { + h->vblendmps(vmm_dst | k_mask, vmm_dst, src); + } else { + h->uni_vblendvps(vmm_dst, vmm_dst, src, vmm_mask); + } + }; + + auto exp_compute_vector_fwd = [&](const Vmm &vmm_src) { + // get mask of values lower than log(FLT_MIN) to zero them in the output + compute_cmp_mask(vmm_src, table_val("exp_ln_flt_min_f"), _cmp_lt_os); + + h->uni_vminps(vmm_src, vmm_src, table_val("exp_ln_flt_max_f")); + h->uni_vmaxps(vmm_src, vmm_src, table_val("exp_ln_flt_min_f")); + h->uni_vmovups(vmm_aux1, vmm_src); + + // calculate exp(x) + // fx = x * log2ef + 0.5 + h->uni_vmulps(vmm_src, vmm_src, table_val("exp_log2ef")); + h->uni_vaddps(vmm_src, vmm_src, table_val("half")); + + // tmp = floorf(fx) + const auto _op_floor = 1u; + h->uni_vroundps(vmm_aux2, vmm_src, _op_floor); + + // keep vmm_src = fx for further computations + h->uni_vmovups(vmm_src, vmm_aux2); + + // x = x - fx * ln2 + h->uni_vfnmadd231ps(vmm_aux1, vmm_aux2, table_val("ln2f")); + + // compute 2^n + h->uni_vcvtps2dq(vmm_aux2, vmm_src); + h->uni_vpaddd(vmm_aux2, vmm_aux2, table_val("exponent_bias")); + const int n_mantissa_bits = 23; + h->uni_vpslld(vmm_aux2, vmm_aux2, n_mantissa_bits); //Vmm(6) = 2^-fx + + // use vmm_src as tmp vmm_zero when applying mask + h->uni_vpxor(vmm_src, vmm_src, vmm_src); + // set zeroes at those points which were < log(FLT_MIN) + blend_with_mask(vmm_aux2, vmm_src); + + // compute polynomial + h->uni_vmovups(vmm_src, table_val("ex_pol5")); + h->uni_vfmadd213ps(vmm_src, vmm_aux1, table_val("ex_pol4")); + h->uni_vfmadd213ps(vmm_src, vmm_aux1, table_val("ex_pol3")); + h->uni_vfmadd213ps(vmm_src, vmm_aux1, table_val("ex_pol2")); + h->uni_vfmadd213ps(vmm_src, vmm_aux1, table_val("ex_pol1")); + h->uni_vfmadd213ps(vmm_src, vmm_aux1, table_val("one")); + // y = y * 2^n + h->uni_vmulps(vmm_src, vmm_src, vmm_aux2); + }; + + auto abs_compute_vector_fwd = [&](const Vmm &vmm_src) { + // compute abs(x) = _mm_and_ps(x, 01111..111)); + h->uni_vandps(vmm_src, vmm_src, table_val("positive_mask")); + }; + + // IMPORTANT: we use vmm_aux3 to save `x` as exp_compute does not use it. + h->uni_vmovups(vmm_aux3, vmm_src); + + // -exp(-x*x) + h->uni_vmulps(vmm_src, vmm_src, vmm_src); + h->uni_vxorps(vmm_src, vmm_src, table_val("sign_mask")); + + exp_compute_vector_fwd(vmm_src); + + h->uni_vxorps(vmm_src, vmm_src, table_val("sign_mask")); + + // get sign + h->uni_vmovups(vmm_aux0, vmm_aux3); + h->uni_vandps(vmm_aux0, vmm_aux0, table_val("sign_mask")); + + // abs(x) + h->uni_vmovups(vmm_aux1, vmm_aux3); + // compute abs(x) = _mm_and_ps(x, 01111..111)); + abs_compute_vector_fwd(vmm_aux1); + + // t = 1 / (p*x + 1) + h->uni_vmovups(vmm_aux2, table_val("approx_const")); + h->uni_vfmadd213ps(vmm_aux2, vmm_aux1, table_val("one")); + h->uni_vmovups(vmm_aux4, table_val("one")); + h->uni_vdivps(vmm_aux4, vmm_aux4, vmm_aux2); + + // -exp(-x*x)*t + h->uni_vmulps(vmm_src, vmm_src, vmm_aux4); + + // compute polynomialial r + h->uni_vmovups(vmm_aux1, table_val("erf_pol5")); + h->uni_vfmadd213ps(vmm_aux1, vmm_aux4, table_val("erf_pol4")); + h->uni_vfmadd213ps(vmm_aux1, vmm_aux4, table_val("erf_pol3")); + h->uni_vfmadd213ps(vmm_aux1, vmm_aux4, table_val("erf_pol2")); + h->uni_vfmadd213ps(vmm_aux1, vmm_aux4, table_val("erf_pol1")); + + // erf = sign * (1 - r * t * exp(-x*x)) + h->uni_vfmadd213ps(vmm_src, vmm_aux1, table_val("one")); + h->uni_vxorps(vmm_dst, vmm_src, vmm_aux0); +} + +void jit_erf_emitter::register_table_entries() { + push_arg_entry_of("approx_const", 0x3ea7ba05, true); // 0.3275911 + push_arg_entry_of("one_over_sqrt_two", 0x3f3504f3, true); + push_arg_entry_of("sign_mask", 0x80000000, true); + + push_arg_entry_of("ex_pol1", 0x3f7ffffb, true); // p1 = 0.999999701f + push_arg_entry_of("ex_pol2", 0x3efffee3, true); // p2 = 0.499991506f + push_arg_entry_of("ex_pol3", 0x3e2aad40, true); // p3 = 0.166676521f + push_arg_entry_of("ex_pol4", 0x3d2b9d0d, true); // p4 = 0.0418978221f + push_arg_entry_of("ex_pol5", 0x3c07cfce, true); // p5 = 0.00828929059f + + push_arg_entry_of("erf_pol1", 0x3e827906, true); // p1 = 0.254829592f + push_arg_entry_of("erf_pol2", 0xbe91a98e, true); // p2 = -0.284496736f + push_arg_entry_of("erf_pol3", 0x3fb5f0e3, true); // p3 = 1.421413741f + push_arg_entry_of("erf_pol4", 0xbfba00e3, true); // p4 = -1.453152027f + push_arg_entry_of("erf_pol5", 0x3f87dc22, true); // p5 = 1.061405429f + + push_arg_entry_of("one", 0x3f800000, true); + push_arg_entry_of("half", 0x3f000000, true); + + push_arg_entry_of("exp_log2ef", 0x3fb8aa3b, true); + push_arg_entry_of("exp_ln_flt_max_f", 0x42b17218, true); + push_arg_entry_of("exp_ln_flt_min_f", 0xc2aeac50, true); + + push_arg_entry_of("ln2f", 0x3f317218, true); + push_arg_entry_of("exponent_bias", 0x0000007f, true); + push_arg_entry_of("positive_mask", 0x7fffffff, true); +} + +size_t jit_erf_emitter::aux_vecs_count() const { + return 5ul; +} + } // namespace MKLDNNPlugin diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.hpp b/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.hpp index 0fe92fa50180ad..7bd63c59c02dbf 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.hpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_eltwise_emitters.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -524,4 +524,26 @@ class jit_negative_emitter : public jit_emitter { void emit_isa(const std::vector &in_vec_idxs, const std::vector &out_vec_idxs) const; }; +class jit_erf_emitter : public jit_emitter { +public: + jit_erf_emitter(mkldnn::impl::cpu::x64::jit_generator *host, mkldnn::impl::cpu::x64::cpu_isa_t host_isa, const MKLDNNNode* node, + InferenceEngine::Precision exec_prc = InferenceEngine::Precision::FP32); + + size_t get_inputs_num() const override; + +private: + void emit_impl( + const std::vector &in_vec_idxs, + const std::vector &out_vec_idxs, + const std::vector &pool_vec_idxs, + const std::vector &pool_gpr_idxs, + const emitter_context *emit_context) const override; + + template + void emit_isa(const std::vector &in_vec_idxs, const std::vector &out_vec_idxs) const; + + void register_table_entries() override; + size_t aux_vecs_count() const override; +}; + } // namespace MKLDNNPlugin diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.cpp b/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.cpp index 2b3bedb1fe16a9..49e853a24c9fb3 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.cpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.hpp b/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.hpp index dd7fce5a570c0b..026936caa3291a 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.hpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_emitter.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.cpp b/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.cpp index dc267ac9866b07..3907bf5b9a0c84 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.cpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -38,7 +38,7 @@ void jit_load_emitter::emit_impl(const std::vector &in_idxs, const std:: const emitter_context *emit_context) const { const auto* load_emitter_context = dynamic_cast(emit_context); if (load_emitter_context == nullptr) { - THROW_IE_EXCEPTION << "Load emitter in " << name << " does not get load emmiter context."; + IE_THROW() << "Load emitter in " << name << " does not get load emmiter context."; } if (host_isa_ == cpu::x64::sse41) { @@ -51,7 +51,7 @@ void jit_load_emitter::emit_impl(const std::vector &in_idxs, const std:: emit_isa(Reg64(in_idxs[0]), load_emitter_context->offset_byte_, load_emitter_context->src_prc_, static_cast(out_idxs[0]), load_emitter_context->dst_prc_, load_emitter_context->load_num_, load_emitter_context->is_fill_, load_emitter_context->fill_value_); } else { - THROW_IE_EXCEPTION << "Load emitter in " << name << " is performed on unsupported isa(at least x64::sse41)."; + IE_THROW() << "Load emitter in " << name << " is performed on unsupported isa(at least x64::sse41)."; } } @@ -60,10 +60,10 @@ void jit_load_emitter::emit_isa(const Xbyak::Reg64 ®_src, int offset_byte, In const int out_vec_idx, InferenceEngine::Precision dst_prc, int load_num, bool is_fill, std::string fill_value) const { bool matched_prc = (dst_prc == src_prc) || (dst_prc == Precision::FP32) || (dst_prc == Precision::I32); if (!matched_prc) { - THROW_IE_EXCEPTION << "Load emitter in " << name << " only support output precision of FP32 or I32 or the same precision as input."; + IE_THROW() << "Load emitter in " << name << " only support output precision of FP32 or I32 or the same precision as input."; } if (load_num > (get_vec_length() / dst_prc.size())) { - THROW_IE_EXCEPTION << "Load emitter in " << name << " have unexpected number of elements to load."; + IE_THROW() << "Load emitter in " << name << " have unexpected number of elements to load."; } using Vmm = typename conditional3::type; @@ -94,7 +94,7 @@ void jit_load_emitter::emit_isa(const Xbyak::Reg64 ®_src, int offset_byte, In load_words_to_dword_extension(Vmm(out_vec_idx), reg_src, offset_byte, true, false, load_num * src_prc.size(), is_fill, fill_value); break; default: - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unsupported src precision to load."; + IE_THROW() << "Load emitter in " << name << " has unsupported src precision to load."; } } @@ -140,12 +140,12 @@ void jit_load_emitter::load_bytes(const Vmm &vmm, const Xbyak::Reg64 ®, int o // Ensure data fits completely inside the Xmm/Ymm/Zmm register if (load_size < 0 || load_size > 64) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load in load_byte."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load in load_byte."; // check if proper number bytes fit inside the Xmm/Ymm register if (is_ymm && load_size > 32) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load to ymm in load_byte."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load to ymm in load_byte."; if (is_xmm && load_size > 16) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load to xmm in load_byte."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load to xmm in load_byte."; auto xmm = Xbyak::Xmm(vmm.getIdx()); auto ymm = Xbyak::Ymm(vmm.getIdx()); @@ -239,7 +239,7 @@ void jit_load_emitter::load_bytes(const Vmm &vmm, const Xbyak::Reg64 ®, int o break; case 16: break; default: - THROW_IE_EXCEPTION << "Load emitter in " << name<< " has unexpected number of values to load in load_byte."; + IE_THROW() << "Load emitter in " << name<< " has unexpected number of values to load in load_byte."; } if (has_xmm_block) { @@ -295,11 +295,11 @@ void jit_load_emitter::load_bytes_to_dword_extension(const Vmm &vmm, const Xbyak // For Ymm register, load capacity is halved (32 * load_size <= 256) // For Xmm register, load capacity is halved further (32 * load_size <= 128) if (load_size < 0 || load_size > 16) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load in load_bytes_to_dword_extension."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load in load_bytes_to_dword_extension."; if (is_ymm && load_size > 8) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load to ymm in load_bytes_to_dword_extension."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load to ymm in load_bytes_to_dword_extension."; if (is_xmm && load_size > 4) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load to xmm in load_bytes_to_dword_extension."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load to xmm in load_bytes_to_dword_extension."; // For load_size == 4/8/16, do load/extension in one go if (load_size == 16) { @@ -380,11 +380,11 @@ void jit_load_emitter::load_words_to_dword_extension(const Vmm &vmm, const Xbyak // For Ymm register, load capacity is halved (16/2(num) * 32 <= 128) // For Xmm register, load capacity is halved again (8/2(num) * 32 <= 128) if (load_size < 0 || load_size > 32) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load in load_words_to_dword_extension."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load in load_words_to_dword_extension."; if (is_ymm && load_size > 16) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load to ymm in load_words_to_dword_extension."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load to ymm in load_words_to_dword_extension."; if (is_xmm && load_size > 8) - THROW_IE_EXCEPTION << "Load emitter in " << name << " has unexpected number of values to load to xmm in load_words_to_dword_extension."; + IE_THROW() << "Load emitter in " << name << " has unexpected number of values to load to xmm in load_words_to_dword_extension."; auto xmm = Xbyak::Xmm(vmm.getIdx()); auto ymm = Xbyak::Ymm(vmm.getIdx()); @@ -515,7 +515,7 @@ void jit_store_emitter::emit_impl(const std::vector &in_idxs, const std: const emitter_context *emit_context) const { const auto* store_emitter_context = dynamic_cast(emit_context); if (store_emitter_context == nullptr) { - THROW_IE_EXCEPTION << "Store emitter in " << name << " does not get store emmiter context."; + IE_THROW() << "Store emitter in " << name << " does not get store emmiter context."; } if (host_isa_ == cpu::x64::sse41) { emit_isa(static_cast(in_idxs[0]), store_emitter_context->src_prc_, Reg64(out_idxs[0]), @@ -527,7 +527,7 @@ void jit_store_emitter::emit_impl(const std::vector &in_idxs, const std: emit_isa(static_cast(in_idxs[0]), store_emitter_context->src_prc_, Reg64(out_idxs[0]), store_emitter_context->offset_byte_, store_emitter_context->dst_prc_, store_emitter_context->store_num_); } else { - THROW_IE_EXCEPTION << "Store emitter in " << name << " is performed on unsupported isa(at least x64::sse41)."; + IE_THROW() << "Store emitter in " << name << " is performed on unsupported isa(at least x64::sse41)."; } } @@ -536,12 +536,12 @@ template const Xbyak::Reg64 ®_dst, int offset_byte, InferenceEngine::Precision dst_prc, int store_num) const { bool matched_prc = (src_prc == dst_prc) || (src_prc == Precision::FP32) || (src_prc == Precision::I32); if (!matched_prc) { - THROW_IE_EXCEPTION << "Store emitter in " << name << " only support input precision of FP32 or I32 or the same precision as output."; + IE_THROW() << "Store emitter in " << name << " only support input precision of FP32 or I32 or the same precision as output."; } if ((src_prc == Precision::FP32) || (src_prc == Precision::I32)) { if ((isa == cpu::x64::sse41 && store_num > 4) || (isa == cpu::x64::avx2 && store_num > 8) || (isa == cpu::x64::avx512_common && store_num > 16) || store_num < 0) { - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store."; } } @@ -586,7 +586,7 @@ template store_dword_to_word_extension(Vmm(in_vec_idx), reg_dst, offset_byte, true, false, store_num); break; default: - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unsupported dst precision to store."; + IE_THROW() << "Store emitter in " << name << " has unsupported dst precision to store."; } } } @@ -618,11 +618,11 @@ template // Ensure data fits completely inside the Xmm/Ymm/Zmm register if (store_size < 0 || store_size > 64) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store in store_bytes."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store in store_bytes."; if (is_ymm && store_size > 32) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store to ymm in store_bytes."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store to ymm in store_bytes."; if (is_xmm && store_size > 16) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store to xmm in store_bytes."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store to xmm in store_bytes."; auto xmm = Xbyak::Xmm(vmm.getIdx()); auto ymm = Xbyak::Ymm(vmm.getIdx()); @@ -718,7 +718,7 @@ template break; case 16: break; default: - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store in store_bytes."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store in store_bytes."; } } } @@ -743,11 +743,11 @@ template // At most 8 dwords can fit inside the Ymm register // At most 4 dwords can fit inside the Xmm register if (store_num < 0 || store_num > 16) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store in store_dword_to_byte_extension."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store in store_dword_to_byte_extension."; if (is_ymm && store_num > 8) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store to ymm in store_dword_to_byte_extension."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store to ymm in store_dword_to_byte_extension."; if (is_xmm && store_num > 4) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store to xmm in store_dword_to_byte_extension."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store to xmm in store_dword_to_byte_extension."; auto ymm = Xbyak::Ymm(vmm.getIdx()); @@ -816,11 +816,11 @@ template // At most 4 dwords can fit inside the Xmm register // At most 8 dwords can fit inside the Ymm register if (store_num < 0 || store_num > 16) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store in store_dword_to_word_extension."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store in store_dword_to_word_extension."; if (is_ymm && store_num > 8) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store to ymm in store_dword_to_word_extension."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store to ymm in store_dword_to_word_extension."; if (is_xmm && store_num > 4) - THROW_IE_EXCEPTION << "Store emitter in " << name << " has unexpected number of values to store to xmm in store_dword_to_word_extension."; + IE_THROW() << "Store emitter in " << name << " has unexpected number of values to store to xmm in store_dword_to_word_extension."; auto ymm = Xbyak::Ymm(vmm.getIdx()); auto zmm = Xbyak::Zmm(vmm.getIdx()); diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.hpp b/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.hpp index 0f434c2406e3ad..00c2e49262d9a5 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.hpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_load_store_emitters.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.cpp b/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.cpp index 6264be3bf42872..af1555694b81cb 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.cpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.hpp b/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.hpp index 1dfc9b5f4cf420..e045279307a8f6 100644 --- a/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.hpp +++ b/inference-engine/src/mkldnn_plugin/emitters/jit_mkldnn_emitters.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mean_image.cpp b/inference-engine/src/mkldnn_plugin/mean_image.cpp index 907ae42f99efb9..056037421e464e 100644 --- a/inference-engine/src/mkldnn_plugin/mean_image.cpp +++ b/inference-engine/src/mkldnn_plugin/mean_image.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ void MeanImage::Load(const MKLDNNDims& inputDims, InputInfo::Ptr inputInfo) { } if (inChannels != inputDims[1]) { - THROW_IE_EXCEPTION << "channels mismatch between mean and input"; + IE_THROW() << "channels mismatch between mean and input"; } switch (pp.getMeanVariant()) { @@ -48,9 +48,9 @@ void MeanImage::Load(const MKLDNNDims& inputDims, InputInfo::Ptr inputInfo) { for (unsigned channel = 0; channel < inChannels; channel++) { Blob::Ptr meanBlob = pp[channel]->meanData; if (!meanBlob || meanBlob->getTensorDesc().getPrecision() != Precision::FP32) - THROW_IE_EXCEPTION << "mean image not provided or not in Float 32"; + IE_THROW() << "mean image not provided or not in Float 32"; if (meanBlob->size() != meanHeight*meanWidth) { - THROW_IE_EXCEPTION << "mean image size does not match expected network input, expecting " << meanWidth << " x " << meanHeight; + IE_THROW() << "mean image size does not match expected network input, expecting " << meanWidth << " x " << meanHeight; } // todo: cast to TBlob and make sure it is floats cpu_memcpy_s(meanBuffer->data() + channel*meanBlob->size(), meanBuffer->byteSize() - channel*meanBlob->byteSize(), @@ -66,7 +66,7 @@ void MeanImage::Load(const MKLDNNDims& inputDims, InputInfo::Ptr inputInfo) { break; default: { - THROW_IE_EXCEPTION << "Unsupported mean variant: " << pp.getMeanVariant(); + IE_THROW() << "Unsupported mean variant: " << pp.getMeanVariant(); } } } @@ -75,11 +75,11 @@ void MeanImage::Subtract(const MKLDNNDims &inputDims, float *input, InferenceEng IE_ASSERT(input != nullptr); if (inputDims.ndims() != 4) { - THROW_IE_EXCEPTION << "Expecting input as 4 dimension blob with format NxCxHxW."; + IE_THROW() << "Expecting input as 4 dimension blob with format NxCxHxW."; } if (layout != NCHW && layout != NHWC) { - THROW_IE_EXCEPTION << "Expecting input layout NCHW or NHWC."; + IE_THROW() << "Expecting input layout NCHW or NHWC."; } int MB = inputDims[0]; diff --git a/inference-engine/src/mkldnn_plugin/mean_image.h b/inference-engine/src/mkldnn_plugin/mean_image.h index 18087cac9d77a8..b3264f7250b2de 100644 --- a/inference-engine/src/mkldnn_plugin/mean_image.h +++ b/inference-engine/src/mkldnn_plugin/mean_image.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,11 +26,11 @@ class MeanImage { IE_ASSERT(input != nullptr); if (inputDims.ndims() != 4) { - THROW_IE_EXCEPTION << "Expecting input as 4 dimension blob with format NxCxHxW."; + IE_THROW() << "Expecting input as 4 dimension blob with format NxCxHxW."; } if (layout != InferenceEngine::NCHW && layout != InferenceEngine::NHWC) { - THROW_IE_EXCEPTION << "Expecting input layout NCHW or NHWC."; + IE_THROW() << "Expecting input layout NCHW or NHWC."; } int MB = inputDims[0]; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.cpp b/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.cpp index c2420f491e5351..9c2a249a3bea97 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.h b/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.h index e36d4d93f294e4..98eb330cb26808 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn/ie_mkldnn.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.cpp b/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.cpp index cef7c86b2e6be8..bdc6795b13731f 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.h b/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.h index 48351ead66537c..3671a51ef0ff44 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn/iml_type_mapper.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.cpp index 79c2b045d2bc24..ea25b2dce04ee6 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,14 +8,10 @@ MKLDNNPlugin::MKLDNNAsyncInferRequest::MKLDNNAsyncInferRequest(const InferenceEngine::InferRequestInternal::Ptr& inferRequest, const InferenceEngine::ITaskExecutor::Ptr& taskExecutor, const InferenceEngine::ITaskExecutor::Ptr& callbackExecutor) - : InferenceEngine::AsyncInferRequestThreadSafeDefault(inferRequest, taskExecutor, callbackExecutor) { + : InferenceEngine::AsyncInferRequestThreadSafeDefault(inferRequest, taskExecutor, callbackExecutor) { static_cast(inferRequest.get())->SetAsyncRequest(this); } -void MKLDNNPlugin::MKLDNNAsyncInferRequest::Infer_ThreadUnsafe() { - InferUsingAsync(); -} - MKLDNNPlugin::MKLDNNAsyncInferRequest::~MKLDNNAsyncInferRequest() { StopAndWait(); } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.h b/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.h index 386c53dea0fa9c..299a9b0833be96 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_async_infer_request.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,9 +16,6 @@ class MKLDNNAsyncInferRequest : public InferenceEngine::AsyncInferRequestThreadS MKLDNNAsyncInferRequest(const InferenceEngine::InferRequestInternal::Ptr &inferRequest, const InferenceEngine::ITaskExecutor::Ptr &taskExecutor, const InferenceEngine::ITaskExecutor::Ptr &callbackExecutor); - - void Infer_ThreadUnsafe() override; - ~MKLDNNAsyncInferRequest() override; }; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.cpp index 6a9cb76b4b03fc..10ed3d432ebd83 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.cpp @@ -1,8 +1,9 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include
+#include + #include "mkldnn_descriptor.h" mkldnn::primitive_desc_iterator MKLDNNDescriptor::createPrimitiveDescriptorIterator(const mkldnn::engine &engine, @@ -29,7 +30,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -41,7 +42,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -56,7 +57,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -64,7 +65,7 @@ MKLDNNDescriptor::operator std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPrimPtr(); } @@ -76,7 +77,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -88,7 +89,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr de MKLDNNDescriptor::operator std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -100,7 +101,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -112,7 +113,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -124,7 +125,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -136,7 +137,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr d MKLDNNDescriptor::operator std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -148,7 +149,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr de MKLDNNDescriptor::operator std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -160,7 +161,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } @@ -172,7 +173,7 @@ MKLDNNDescriptor::MKLDNNDescriptor(std::shared_ptr() { auto typeDesc = std::dynamic_pointer_cast>(desc); if (typeDesc == nullptr) { - THROW_IE_EXCEPTION << "Cannot cast descriptor!"; + IE_THROW() << "Cannot cast descriptor!"; } return typeDesc->getPtr(); } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.h b/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.h index 88d883645b17f0..e73b505790a494 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_descriptor.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_dims.h b/inference-engine/src/mkldnn_plugin/mkldnn_dims.h index a00d055951d2b3..4960660935fe1d 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_dims.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_dims.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_edge.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_edge.cpp index 65a9feaa52767a..4094c29ca8e5a0 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_edge.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_edge.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,17 +16,21 @@ MKLDNNEdge::MKLDNNEdge(const MKLDNNNodePtr &parent, const MKLDNNNodePtr &child, const MKLDNNNodePtr MKLDNNEdge::getParent() const { auto parentPtr = parent.lock(); if (!parentPtr) - THROW_IE_EXCEPTION << "Edge contains empty parent node"; + IE_THROW() << "Edge contains empty parent node"; return parentPtr; } const MKLDNNNodePtr MKLDNNEdge::getChild() const { auto childPtr = child.lock(); if (!childPtr) - THROW_IE_EXCEPTION << "Edge contains empty child node"; + IE_THROW() << "Edge contains empty child node"; return childPtr; } +bool MKLDNNEdge::isUseExternalMemory() const { + return externalMemoryPtr; +} + bool MKLDNNEdge::isDropped() { bool not_in_parent = true; bool not_in_child = true; @@ -66,7 +70,7 @@ bool MKLDNNEdge::needReorder() { auto parentSPD = getParent()->getSelectedPrimitiveDescriptor(); auto childSPD = getChild()->getSelectedPrimitiveDescriptor(); if (!parentSPD || !childSPD) - THROW_IE_EXCEPTION << "Cannot make a decision about reorder. Primitive descriptors weren't selected."; + IE_THROW() << "Cannot make a decision about reorder. Primitive descriptors weren't selected."; int outNumber = getOutputNum(); int inNumber = getInputNum(); @@ -128,7 +132,7 @@ InferenceEngine::TensorDesc MKLDNNEdge::getOutputDesc() { InferenceEngine::TensorDesc MKLDNNEdge::getDesc() { if (!MKLDNNExtensionUtils::initTensorsAreEqual(getInputDesc(), getOutputDesc())) - THROW_IE_EXCEPTION << "Cannot get descriptor for edge: " << getParent()->getName() << "->" + IE_THROW() << "Cannot get descriptor for edge: " << getParent()->getName() << "->" << getChild()->getName(); return getInputDesc(); } @@ -146,7 +150,7 @@ void MKLDNNEdge::allocate(const void* mem_ptr) { return; if (memoryPtr) - THROW_IE_EXCEPTION << "Unexpected behaviour: status == NeedAllocation but memory is already allocated."; + IE_THROW() << "Unexpected behaviour: status == NeedAllocation but memory is already allocated."; auto inputDesc = getInputDesc(); auto outputDesc = getOutputDesc(); @@ -154,9 +158,9 @@ void MKLDNNEdge::allocate(const void* mem_ptr) { (inputDesc.getDims().size() > 0 && inputDesc.getDims()[0] != 1 && (inputDesc.getPrecision() != outputDesc.getPrecision() || inputDesc.getBlockingDesc() != outputDesc.getBlockingDesc()))) - THROW_IE_EXCEPTION << "Cannot allocate memory. Nodes have primitive descriptors with different formats."; + IE_THROW() << "Cannot allocate memory. Nodes have primitive descriptors with different formats."; if (inputDesc.getLayout() == InferenceEngine::Layout::ANY) - THROW_IE_EXCEPTION << "Cannot get input descriptor!"; + IE_THROW() << "Cannot get input descriptor!"; auto parentPtr = getParent(); memoryPtr.reset(new MKLDNNMemory(parentPtr->getEngine())); @@ -164,12 +168,56 @@ void MKLDNNEdge::allocate(const void* mem_ptr) { status = Status::Allocated; } +std::string MKLDNNEdge::name() { + auto tensorDescToStr = [](InferenceEngine::TensorDesc const & desc) { + std::string name = desc.getPrecision().name(); + + auto blockingDesc = desc.getBlockingDesc(); + auto dims = blockingDesc.getBlockDims(); + + if (!dims.empty()) { + name += "["; + for (size_t i = 1; i < dims.size(); ++i) { + name += std::to_string(dims[i - 1]) + ","; + } + name += std::to_string(dims.back()) + "]"; + } + + return name; + }; + + auto parentPtr = getParent(); + auto childPtr = getChild(); + + return parentPtr->getName() + std::to_string(parent_port) + tensorDescToStr(getInputDesc()) + + "<->" + childPtr->getName() + std::to_string(child_port); +} + +void MKLDNNEdge::externalAllocate(MKLDNNWeightsSharing::Ptr weightsCache) { + if (status != Status::NeedAllocation) + return; + + if (weightsCache) { + auto alloc = [this] () { + allocate(); + return memoryPtr; + }; + + auto ptr = weightsCache->findOrCreate(name(), alloc, false); + memoryPtr = *ptr; + externalMemoryPtr = true; + status = Status::Allocated; + } else { + allocate(); + } +} + void MKLDNNEdge::changeStatus(MKLDNNEdge::Status state) { if (state == Status::NotAllocated) { - THROW_IE_EXCEPTION << "Incorrect behaviour! Use method sharedMemFrom()"; + IE_THROW() << "Incorrect behaviour! Use method sharedMemFrom()"; } if (state == Status::Validated) { - THROW_IE_EXCEPTION << "Incorrect behaviour! Use method validate()"; + IE_THROW() << "Incorrect behaviour! Use method validate()"; } if (status != Status::Uninitialized && state == Status::NeedAllocation) return; @@ -187,7 +235,7 @@ const MKLDNNDims& MKLDNNEdge::getDims() { int inNum = getOutputNum(); if (inNum < 0) { - THROW_IE_EXCEPTION << "Error cannot find input data for " << child.lock()->getName() + IE_THROW() << "Error cannot find input data for " << child.lock()->getName() << " from " << parent.lock()->getName(); } if (inNum < childPtr->inDims.size()) { @@ -196,7 +244,7 @@ const MKLDNNDims& MKLDNNEdge::getDims() { int outNum = getInputNum(); if (outNum < 0) { - THROW_IE_EXCEPTION << "Error cannot find output data for " << parent.lock()->getName() + IE_THROW() << "Error cannot find output data for " << parent.lock()->getName() << " to " << child.lock()->getName(); } if (outNum >= parentPtr->outDims.size()) @@ -206,7 +254,7 @@ const MKLDNNDims& MKLDNNEdge::getDims() { } if (inDims.ndims() && outDims.ndims() && inDims.ndims() != outDims.ndims() && inDims.size() != outDims.size()) - THROW_IE_EXCEPTION << "Nodes " << getParent()->getName() << " and " << getChild()->getName() + IE_THROW() << "Nodes " << getParent()->getName() << " and " << getChild()->getName() << " have incompatible dimensions!"; if (outDims.ndims() != 0) { @@ -219,7 +267,7 @@ const MKLDNNDims& MKLDNNEdge::getDims() { if (!(outDims.ndims() == 0 && inDims.ndims() == 0) && !dims.ndims()) - THROW_IE_EXCEPTION << "Cannot detect right dims for nodes " << getParent()->getName() + IE_THROW() << "Cannot detect right dims for nodes " << getParent()->getName() << " and " << getChild()->getName(); } return dims; @@ -228,7 +276,7 @@ const MKLDNNDims& MKLDNNEdge::getDims() { bool MKLDNNEdge::nodeCanChangeDesc(const MKLDNNNodePtr &node) const { PrimitiveDescInfo * selectedPd = node->getSelectedPrimitiveDescriptor(); if (selectedPd == nullptr) - THROW_IE_EXCEPTION << "Primitive descriptor for node " << node->getName() << " is not selected."; + IE_THROW() << "Primitive descriptor for node " << node->getName() << " is not selected."; for (auto &inputDesc : selectedPd->getConfig().inConfs) { if (inputDesc.desc.getLayout() != InferenceEngine::Layout::ANY) { @@ -279,11 +327,11 @@ InferenceEngine::TensorDesc MKLDNNEdge::getSpecifiedInputDesc(std::mapgetSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Primitive descriptor for node " << parentPtr->getName() << " is not selected."; + IE_THROW() << "Primitive descriptor for node " << parentPtr->getName() << " is not selected."; int inputIdx = getInputNum(); if (inputIdx < 0) - THROW_IE_EXCEPTION << "Edge cannot be found for node" << parentPtr->getName() << "."; + IE_THROW() << "Edge cannot be found for node" << parentPtr->getName() << "."; if (inputIdx >= parentPtr->getSelectedPrimitiveDescriptor()->getConfig().outConfs.size()) inputIdx = 0; @@ -400,12 +448,12 @@ InferenceEngine::TensorDesc MKLDNNEdge::getSpecifiedOutputDesc(std::mapgetSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Primitive descriptor for node " << childPtr->getName() << " is not selected."; + IE_THROW() << "Primitive descriptor for node " << childPtr->getName() << " is not selected."; int outputIdx = getOutputNum(); int inputIdx = getInputNum(); if (outputIdx < 0) { - THROW_IE_EXCEPTION << "Edge cannot be found for node" << childPtr->getName() << "."; + IE_THROW() << "Edge cannot be found for node" << childPtr->getName() << "."; } if (outputIdx >= childPtr->getSelectedPrimitiveDescriptor()->getConfig().inConfs.size()) outputIdx = 0; @@ -547,7 +595,7 @@ MKLDNNMemoryPtr &MKLDNNEdge::getMemoryPtr() { InferenceEngine::Blob::Ptr MKLDNNEdge::getBlob() { if (!memoryPtr) - THROW_IE_EXCEPTION << "Cannot get blob! Edge isn't initialized."; + IE_THROW() << "Cannot get blob! Edge isn't initialized."; InferenceEngine::TensorDesc desc = getDesc(); if (desc.getLayout() == InferenceEngine::Layout::ANY) @@ -570,8 +618,9 @@ void MKLDNNEdge::validate() { getParent(); getChild(); getDims(); + if (status != Status::Allocated) { - THROW_IE_EXCEPTION << "Error memory is not allocated!"; + IE_THROW() << "Error memory is not allocated!"; } status = Status::Validated; } @@ -579,12 +628,16 @@ void MKLDNNEdge::validate() { MKLDNNEdgePtr MKLDNNEdge::getSharedEdge() const { auto memoryFromEdgePtr = memoryFromEdge.lock(); if (!memoryFromEdgePtr) { - THROW_IE_EXCEPTION << "Cannot get memory ptr for edge(" << getParent()->getName() << "->" + IE_THROW() << "Cannot get memory ptr for edge(" << getParent()->getName() << "->" << getChild()->getName() << "). The pointer on the edge with memory is empty!"; } return memoryFromEdgePtr; } +MKLDNNEdgePtr MKLDNNEdge::getSharedEdge(std::nothrow_t) const { + return memoryFromEdge.lock(); +} + void MKLDNNEdge::init() { if (status != Status::NeedAllocation && status != Status::Uninitialized) return; @@ -602,7 +655,7 @@ void MKLDNNEdge::init() { for (auto edge : edges_at_same_port) { if (edge->getStatus() != Status::NeedAllocation && edge->getStatus() != Status::Uninitialized) { if (edge->getSharedEdge() != edgePtr) - THROW_IE_EXCEPTION << "Unsupported behavior. Cannot mark edge " + IE_THROW() << "Unsupported behavior. Cannot mark edge " << getParent()->getChildEdgeAt(0)->getParent()->getName() << "->" << getParent()->getChildEdgeAt(0)->getChild()->getName() << " as not allocated!"; } else { @@ -673,7 +726,7 @@ bool MKLDNNEdge::inPlace(LOOK look) { auto parentSPD = getParent()->getSelectedPrimitiveDescriptor(); auto childSPD = getChild()->getSelectedPrimitiveDescriptor(); if (!parentSPD || !childSPD) - THROW_IE_EXCEPTION << "Cannot make a decision about reorder. Primitive descriptors weren't selected."; + IE_THROW() << "Cannot make a decision about reorder. Primitive descriptors weren't selected."; int inputNum = getInputNum(); int outputNum = getOutputNum(); if (inputNum >= parentSPD->getConfig().outConfs.size()) diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_edge.h b/inference-engine/src/mkldnn_plugin/mkldnn_edge.h index c7b0c8de7540ca..9a092fe7da6db7 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_edge.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_edge.h @@ -1,13 +1,15 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once #include - +#include +#include
#include "mkldnn_memory.h" #include "mkldnn_dims.h" +#include "mkldnn_weights_cache.hpp" #include "mkldnn/ie_mkldnn.h" #include @@ -42,9 +44,10 @@ class MKLDNNEdge : public InferenceEngine::details::no_copy { void changeStatus(Status state); - virtual void init(); - virtual void allocate(const void* mem_ptr = nullptr); - virtual void validate(); + void init(); + void allocate(const void* mem_ptr = nullptr); + void externalAllocate(MKLDNNWeightsSharing::Ptr weightsCache); + void validate(); void drop(); const std::shared_ptr getParent() const; @@ -59,12 +62,17 @@ class MKLDNNEdge : public InferenceEngine::details::no_copy { bool needReorder(); bool isDropped(); + bool isUseExternalMemory() const; int getInputNum(); int getOutputNum(); void sharedMemFrom(const MKLDNNEdgePtr& edge); MKLDNNEdgePtr getSharedEdge() const; + MKLDNNEdgePtr getSharedEdge(std::nothrow_t) const; + +private: + std::string name(); private: std::weak_ptr parent; @@ -72,6 +80,7 @@ class MKLDNNEdge : public InferenceEngine::details::no_copy { int parent_port; int child_port; + bool externalMemoryPtr = false; MKLDNNEdgeWeakPtr memoryFromEdge; MKLDNNDims dims; MKLDNNMemoryPtr memoryPtr; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.cpp index 3de848ad9e3c68..181d0525f2db25 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,6 @@ #include "mkldnn_memory_state.h" #include "mkldnn_itt.h" #include "nodes/mkldnn_memory_node.hpp" -#include "bf16transformer.h" #include #include #include @@ -43,7 +42,8 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, InferenceEngine::ExecutableNetworkThreadSafeDefault{nullptr, nullptr}, extensionManager(extMgr), _cfg{cfg}, - _name{network.getName()} { + _name{network.getName()}, + _numaNodesWeights(numaNodesWeights) { OV_ITT_TASK_CHAIN(taskChain, MKLDNNPlugin::itt::domains::MKLDNN_LT, "MKLDNNExecNetwork", "cloneNet"); // we are cloning network if we have statistics and we can transform network. @@ -54,25 +54,47 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, // BF16 transformations were disabled since CPU plug-in doesn't support mixed precision execution: // BF16 + INT8 or BF16 + BIN. bool isFloatModel = true; - CNNNetworkIterator i(network); - while (i != CNNNetworkIterator()) { - if (CaselessEq()((*i)->type, "FakeQuantize")) { + CNNNetworkIterator iter(network); + while (iter != CNNNetworkIterator()) { + if (CaselessEq()((*iter)->type, "FakeQuantize")) { isFloatModel = false; break; } - i++; + iter++; } + auto changePrecisionBF16 = [&](Precision current, Precision target) { + InputsDataMap inputs = _clonedNetwork.getInputsInfo(); + OutputsDataMap outputs = _clonedNetwork.getOutputsInfo(); + CNNNetworkIterator iter(_clonedNetwork); + while (iter != CNNNetworkIterator()) { + // check, if memory output node needs to be transformed + if (current == Precision::FP32 && + (*iter)->type == "Memory" && (*iter)->outData.size() == 0 && + (*iter)->insData[0].lock()->getPrecision() == current) { + (*iter)->insData[0].lock()->setPrecision(target); + } + + for (size_t o = 0; o < (*iter)->outData.size(); o++) { + if (inputs.find((*iter)->outData[o]->getName()) == inputs.end() + && outputs.find((*iter)->outData[o]->getName()) == outputs.end() + && !CaselessEq()((*iter)->type, "const") + && (*iter)->outData[o]->getPrecision() == current) { + (*iter)->outData[o]->setPrecision(target); + } + } + iter++; + } + }; + if (with_cpu_x86_avx512_core() && isFloatModel) { - BF16Transformer bf16Transformer; // If enforceBF16 flag was set, BF16 transformation applies for all layers supported by CPU plugin. - // Otherwise, only layers marked as BF16 in 'cnnetwork' will be performed in bfloat16 mode. + // Otherwise, only layers marked as BF16 in '_clonedNetwork' will be performed in bfloat16 mode. // CPU plugin throws an exception, if marked as BF16 layers have not supported by CPU plugin. if (cfg.enforceBF16 == true) - bf16Transformer.convertToBFloat16(_clonedNetwork); + changePrecisionBF16(Precision::FP32, Precision::BF16); } else { - BF16Transformer bf16Transformer; - bf16Transformer.convertToFloat(_clonedNetwork); + changePrecisionBF16(Precision::BF16, Precision::FP32); } } @@ -126,7 +148,7 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, } else if (scalesBlob != nullptr) { Blob::Ptr biases = make_shared_blob(scalesBlob->getTensorDesc()); if (biases == nullptr) - THROW_IE_EXCEPTION << "Cannot make 'biases' shared blob"; + IE_THROW() << "Cannot make 'biases' shared blob"; biases->allocate(); auto biasesPtr = biases->buffer().as(); for (size_t i = 0; i < biases->size(); i++) @@ -148,7 +170,7 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, } else if (layer->type == "DeformableConvolution") { auto * defConvLayer = dynamic_cast(layer.get()); if (defConvLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert deformable convolution layer."; + IE_THROW() << "Cannot convert deformable convolution layer."; Blob::Ptr weightsBlob = defConvLayer->blobs["weights"]; if (weightsBlob != nullptr) { @@ -171,7 +193,7 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, } else if (layer->type == "BinaryConvolution") { auto * binConvLayer = dynamic_cast(layer.get()); if (binConvLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert binary convolution layer."; + IE_THROW() << "Cannot convert binary convolution layer."; Blob::Ptr weightsBlob = binConvLayer->blobs["weights"]; if (weightsBlob != nullptr) { @@ -199,7 +221,7 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, if (_cfg.batchLimit > 1) { // check topology for applicability if (!CanProcessDynBatch(_clonedNetwork)) { - THROW_IE_EXCEPTION << "MKLDNNGraph::CreateGraph: such topology cannot be compiled for dynamic batch!"; + IE_THROW() << "MKLDNNGraph::CreateGraph: such topology cannot be compiled for dynamic batch!"; } } @@ -218,33 +240,25 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, _callbackExecutor = _taskExecutor; } - _graphs = decltype(_graphs) {[&] { - // TODO: Remove `cloneNet` to `localNetwork` when `MKLDNNGraph::CreateGraph` - // is fixed and does not change content of network passed (CVS-26420) - auto localNetwork = cloneNetwork(_clonedNetwork); - - auto graph = std::make_shared(); - { - std::unique_lock lock{_cfgMutex}; - graph->setConfig(_cfg); + int streams = std::max(1, _cfg.streamExecutorConfig._streams); + std::vector tasks; tasks.resize(streams); + _graphs.resize(streams); + if (_cfg.streamExecutorConfig._streams != 0) { + for (auto&& task : tasks) { + task = [this] { + MKLDNNExecNetwork::GetGraph(); + }; } - int numaNode = 0; - auto* streamExecutor = dynamic_cast(_taskExecutor.get()); - if (nullptr != streamExecutor) { - numaNode = streamExecutor->GetNumaNodeId(); - } - - graph->CreateGraph(localNetwork, extensionManager, numaNodesWeights[numaNode]); - return graph; - }}; - - _taskExecutor->runAndWait({std::thread::hardware_concurrency(), [this] {_graphs.local();}}); + _taskExecutor->runAndWait(tasks); + } else { + MKLDNNExecNetwork::GetGraph(); + } // Save all MemoryLayer data tensors. Will use insight about mechanics // of MemoryLayer implementation. It uses output edge of MemoryLayer // producer as storage for tensor to keep it between infer calls. if (_graphs.size() == 1) { - for (auto &node : _graphs.begin()->get()->GetNodes()) { + for (auto &node : GetGraph()._graph.GetNodes()) { if (node->getType() == MemoryInput) { auto memoryNode = dynamic_cast(node.get()); auto state_store = memoryNode->getStore(); @@ -261,13 +275,51 @@ MKLDNNExecNetwork::MKLDNNExecNetwork(const InferenceEngine::CNNNetwork &network, } } +MKLDNNExecNetwork::Graph::Lock MKLDNNExecNetwork::GetGraph() { + int streamId = 0; + int numaNodeId = 0; + auto streamsExecutor = dynamic_cast(_taskExecutor.get()); + if (nullptr != streamsExecutor) { + streamId = streamsExecutor->GetStreamId(); + numaNodeId = streamsExecutor->GetNumaNodeId(); + } + auto graphLock = Graph::Lock(_graphs[streamId % _graphs.size()]); + if (!graphLock._graph.IsReady()) { + std::exception_ptr exception; + auto makeGraph = [&] { + try { + auto localNetwork = cloneNetwork(_clonedNetwork); + { + std::lock_guard lock{_cfgMutex}; + graphLock._graph.setConfig(_cfg); + } + graphLock._graph.CreateGraph(localNetwork, extensionManager, _numaNodesWeights[numaNodeId]); + } catch(...) { + exception = std::current_exception(); + } + }; + if (nullptr != streamsExecutor) { + streamsExecutor->Execute(makeGraph); + } else { + makeGraph(); + } + if (exception) { + std::rethrow_exception(exception); + } + } + return graphLock; +} + void MKLDNNExecNetwork::setProperty(const std::map &properties) { { std::lock_guard lock{_cfgMutex}; _cfg.readProperties(properties); } - for (auto g : _graphs) { - g->setProperty(properties); + for (auto& g : _graphs) { + auto graphLock = Graph::Lock(g); + if (graphLock._graph.IsReady()) { + graphLock._graph.setProperty(properties); + } } } @@ -277,29 +329,30 @@ InferenceEngine::IInferRequest::Ptr MKLDNNExecNetwork::CreateInferRequest() { InferenceEngine::CNNNetwork MKLDNNExecNetwork::GetExecGraphInfo() { if (_graphs.size() == 0) - THROW_IE_EXCEPTION << "No graph was found"; + IE_THROW() << "No graph was found"; - return _graphs.begin()->get()->dump(); + return GetGraph()._graph.dump(); } Parameter MKLDNNExecNetwork::GetConfig(const std::string &name) const { if (_graphs.size() == 0) - THROW_IE_EXCEPTION << "No graph was found"; - Config engConfig = _graphs.begin()->get()->getProperty(); - auto it = engConfig._config.find(name); - if (it != engConfig._config.end()) { - return it->second; + IE_THROW() << "No graph was found"; + Config engConfig = const_cast(this)->GetGraph()._graph.getProperty(); + auto option = engConfig._config.find(name); + if (option != engConfig._config.end()) { + return option->second; } else { - THROW_IE_EXCEPTION << "Unsupported ExecutableNetwork config key: " << name; + IE_THROW() << "Unsupported ExecutableNetwork config key: " << name; } } InferenceEngine::Parameter MKLDNNExecNetwork::GetMetric(const std::string &name) const { if (_graphs.size() == 0) - THROW_IE_EXCEPTION << "No graph was found"; + IE_THROW() << "No graph was found"; if (name == METRIC_KEY(NETWORK_NAME)) { - IE_SET_METRIC_RETURN(NETWORK_NAME, _graphs.begin()->get()->GetName()); + IE_SET_METRIC_RETURN(NETWORK_NAME, + const_cast(this)->GetGraph()._graph.dump().getName()); } else if (name == METRIC_KEY(SUPPORTED_METRICS)) { std::vector metrics; metrics.push_back(METRIC_KEY(NETWORK_NAME)); @@ -309,19 +362,19 @@ InferenceEngine::Parameter MKLDNNExecNetwork::GetMetric(const std::string &name) IE_SET_METRIC_RETURN(SUPPORTED_METRICS, metrics); } else if (name == METRIC_KEY(SUPPORTED_CONFIG_KEYS)) { std::vector configKeys; - for (auto && key : _graphs.begin()->get()->getProperty()._config) { + for (auto && key : const_cast(this)->GetGraph()._graph.getProperty()._config) { configKeys.push_back(key.first); } IE_SET_METRIC_RETURN(SUPPORTED_CONFIG_KEYS, configKeys); } else if (name == METRIC_KEY(OPTIMAL_NUMBER_OF_INFER_REQUESTS)) { - Config engConfig = _graphs.begin()->get()->getProperty(); + Config engConfig = const_cast(this)->GetGraph()._graph.getProperty(); auto option = engConfig._config.find(CONFIG_KEY(CPU_THROUGHPUT_STREAMS)); IE_ASSERT(option != engConfig._config.end()); auto streams = std::stoi(option->second); IE_SET_METRIC_RETURN(OPTIMAL_NUMBER_OF_INFER_REQUESTS, static_cast( streams ? streams : 1)); } else { - THROW_IE_EXCEPTION << "Unsupported ExecutableNetwork metric: " << name; + IE_THROW() << "Unsupported ExecutableNetwork metric: " << name; } } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.h b/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.h index 6066aee45053e6..84e376a2a00306 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_exec_network.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -45,8 +45,6 @@ class MKLDNNExecNetwork: public InferenceEngine::ExecutableNetworkThreadSafeDefa INFERENCE_ENGINE_DEPRECATED("Use InferRequest::QueryState instead") std::vector QueryState() override; - InferenceEngine::ThreadLocal _graphs; - protected: friend class MKLDNNInferRequest; MKLDNNExtensionManager::Ptr extensionManager; @@ -56,7 +54,22 @@ class MKLDNNExecNetwork: public InferenceEngine::ExecutableNetworkThreadSafeDefa Config _cfg; std::atomic_int _numRequests = {0}; std::string _name; - + struct Graph : public MKLDNNGraph { + std::mutex _mutex; + struct Lock : public std::unique_lock { + explicit Lock(Graph& graph) : std::unique_lock(graph._mutex), _graph(graph) {} + Graph& _graph; + }; + }; + // WARNING: Do not use _graphs directly. + std::deque _graphs; + NumaNodesWeights& _numaNodesWeights; + + /* WARNING: Use GetGraph() function to get access to graph in current stream. + * NOTE: Main thread is interpreted as master thread of external stream so use this function to get access to graphs + * even from main thread + */ + Graph::Lock GetGraph(); bool CanProcessDynBatch(const InferenceEngine::CNNNetwork &network) const; }; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.cpp index 39d1b7f4b05535..fac29d5e22e9a2 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,7 +17,7 @@ void MKLDNNExtensionManager::AddExtension(IExtensionPtr extension) { InferenceEngine::ILayerImpl::Ptr MKLDNNExtensionManager::CreateImplementation(const std::shared_ptr& op) { if (!op) - THROW_IE_EXCEPTION << "Cannot get nGraph operation!"; + IE_THROW() << "Cannot get nGraph operation!"; for (const auto& ext : _extensions) { auto implTypes = ext->getImplTypes(op); for (const auto& type : implTypes) { @@ -34,7 +34,7 @@ InferenceEngine::ILayerImpl::Ptr MKLDNNExtensionManager::CreateImplementation(co std::shared_ptr MKLDNNExtensionManager::CreateExtensionFactory( const InferenceEngine::CNNLayerPtr &layer) { if (!layer) - THROW_IE_EXCEPTION << "Cannot get cnn layer!"; + IE_THROW() << "Cannot get cnn layer!"; std::shared_ptr factory; for (auto& ext : _extensions) { ResponseDesc responseDesc; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.h b/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.h index 10d8c7d2270d1c..e205993792ef9e 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_extension_mngr.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_extension_utils.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_extension_utils.cpp index 797e49834ac163..4a8eef03944f85 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_extension_utils.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_extension_utils.cpp @@ -28,7 +28,7 @@ uint8_t MKLDNNExtensionUtils::sizeOfDataType(mkldnn::memory::data_type dataType) case mkldnn::memory::data_type::undef: return 0; default: - THROW_IE_EXCEPTION << "Unsupported data type."; + IE_THROW() << "Unsupported data type."; } } @@ -48,7 +48,7 @@ memory::data_type MKLDNNExtensionUtils::IEPrecisionToDataType(InferenceEngine::P case InferenceEngine::Precision::BIN: return memory::data_type::bin; default: { - THROW_IE_EXCEPTION << "The plugin does not support " << prec.name(); + IE_THROW() << "The plugin does not support " << prec.name(); } } } @@ -68,7 +68,7 @@ InferenceEngine::Precision MKLDNNExtensionUtils::DataTypeToIEPrecision(memory::d case memory::data_type::bin: return InferenceEngine::Precision::BIN; default: { - THROW_IE_EXCEPTION << "Unsupported data type."; + IE_THROW() << "Unsupported data type."; } } } @@ -136,7 +136,7 @@ PartialBlkDesc PartialBlkDesc::makeCBlocked(const InferenceEngine::SizeVector &d PartialBlkDesc PartialBlkDesc::extractFrom(const InferenceEngine::TensorDesc &desc) { if (desc.getLayout() == InferenceEngine::ANY) - THROW_IE_EXCEPTION << "Cannot extract partial blocked descriptor for `ANY` layout"; + IE_THROW() << "Cannot extract partial blocked descriptor for `ANY` layout"; const auto &dims = desc.getDims(); const auto &blk = desc.getBlockingDesc(); diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_graph.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_graph.cpp index 98d17095b98b14..e9db4a3076e188 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_graph.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_graph.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -30,7 +31,6 @@ #include #include #include -#include "nodes/common/cpu_memcpy.h" #include "nodes/common/cpu_convert.h" #include "precision_utils.h" @@ -65,6 +65,11 @@ using namespace MKLDNNPlugin; using namespace InferenceEngine; using namespace InferenceEngine::details; +typedef std::unordered_set edge_cluster_t; +typedef std::vector edge_clusters_t; + +mkldnn::engine MKLDNNGraph::eng(mkldnn::engine::kind::cpu, 0); + template void MKLDNNGraph::ApplyUnrollPasses(NET &net) { OV_ITT_SCOPED_TASK(itt::domains::MKLDNNPlugin, "MKLDNNGraph::ApplyUnrollPasses"); @@ -82,7 +87,7 @@ void MKLDNNGraph::ApplyUnrollPasses(NET &net) { return false; }); if (!ti_proc_ok) - THROW_IE_EXCEPTION << "Plugin doesn't support Tensor Iterator in pure form. " + IE_THROW() << "Plugin doesn't support Tensor Iterator in pure form. " "None TI optimization pattern has been applied successfully"; } @@ -206,9 +211,6 @@ void MKLDNNGraph::Replicate(const TensorIterator::Body &subgraph, const MKLDNNEx void MKLDNNGraph::Replicate(const CNNNetwork &network, const MKLDNNExtensionManager::Ptr& extMgr) { InputsDataMap inputs = network.getInputsInfo(); - if (inputs.empty()) { - THROW_IE_EXCEPTION << "MKLDNNGraph::CreateGraph: No inputs for the topology"; - } this->_name = network.getName(); @@ -449,10 +451,47 @@ void MKLDNNGraph::InitOptimalPrimitiveDescriptors() { void MKLDNNGraph::ExecuteConstantNodesOnly() { OV_ITT_SCOPED_TASK(itt::domains::MKLDNN_LT, "MKLDNNGraph::ExecuteConstantNodesOnly"); mkldnn::stream stream(eng); + + using shared_memory_ptr = MKLDNNWeightsSharing::MKLDNNSharedMemory::Ptr; + + auto acquireSharedOutputs = [this](MKLDNNNodePtr & graphNode) { + std::vector outputs; + bool hasLocalAllocatedEdges = false; + bool hasExternalInvalidEdges = false; + + for (size_t i = 0; i < graphNode->getChildEdges().size(); ++i) { + auto edgePtr = graphNode->getChildEdgeAt(i); + if (edgePtr) { + if (edgePtr->isUseExternalMemory()) { + auto ptr = weightsCache->get(edgePtr->name()); + outputs.emplace_back(ptr); + if (!ptr->isValid()) + hasExternalInvalidEdges = true; + } else { + hasLocalAllocatedEdges = true; + } + } + } + + return std::make_tuple(hasExternalInvalidEdges, hasLocalAllocatedEdges, outputs); + }; + for (auto &graphNode : graphNodes) { if (!graphNode->isConstant()) continue; - graphNode->execute(stream); + + if (weightsCache) { + auto sharedOutputs = acquireSharedOutputs(graphNode); + + if (std::get<0>(sharedOutputs) || std::get<1>(sharedOutputs)) { + graphNode->execute(stream); + + for (auto & output : std::get<2>(sharedOutputs)) + output->valid(true); + } + } else { + graphNode->execute(stream); + } } } @@ -530,81 +569,85 @@ static inline bool isConstOutput(MKLDNNEdgePtr edge) { return edge->getParent()->isConstant() && !edge->getChild()->isConstant(); } -void MKLDNNGraph::AllocateWithReuse() { - std::vector> edge_clasters; +static edge_clusters_t findEdgeClusters(const std::vector & graphEdges) { + typedef std::unordered_map edge_cluster_idx_map_t; + + edge_clusters_t edge_clusters; + edge_cluster_idx_map_t edge_cluster_indices; - // detect edge clusters which are view on one. for (auto &edge : graphEdges) { - MKLDNNEdgePtr par = (edge->getStatus() == MKLDNNEdge::Status::NotAllocated) - ? edge->getSharedEdge() - : nullptr; - if (par) { - bool found = false; - for (auto &claster : edge_clasters) { - for (auto &element : claster) { - if (element == par) { - if (std::find(claster.begin(), claster.end(), edge) == claster.end()) - claster.push_back(edge); - found = true; - break; - } - } + auto edge_it = edge_cluster_indices.find(edge); + + if (edge_it != edge_cluster_indices.end()) + continue; // edge is visited + + size_t cluster_idx = edge_clusters.size(); + MKLDNNEdgePtr last_shared_edge = nullptr; + + // find cluster index + for (auto shared_edge = edge->getSharedEdge(std::nothrow); + shared_edge; + shared_edge = shared_edge->getSharedEdge(std::nothrow)) { + auto shared_edge_it = edge_cluster_indices.find(shared_edge); + if (shared_edge_it != edge_cluster_indices.end()) { + cluster_idx = shared_edge_it->second; + last_shared_edge = shared_edge; + break; } - if (!found) - edge_clasters.push_back({par, edge}); - } else { - bool found = false; - for (auto &claster : edge_clasters) { - for (auto &element : claster) { - if (element == edge) { - found = true; - break; - } - } - } - if (!found) - edge_clasters.push_back({edge}); + } + + // add shared edges to cluster + edge_cluster_indices.emplace(edge, cluster_idx); + + if (cluster_idx == edge_clusters.size()) + edge_clusters.emplace_back(edge_cluster_t { edge }); + else + edge_clusters[cluster_idx].emplace(edge); + + for (auto shared_edge = edge->getSharedEdge(std::nothrow); + shared_edge != last_shared_edge; + shared_edge = shared_edge->getSharedEdge(std::nothrow)) { + edge_cluster_indices.emplace(shared_edge, cluster_idx); + edge_clusters[cluster_idx].emplace(shared_edge); } } - //======= WA. getSharedEdge() returns not identical edges ============ - // Will try to merge clasters with matched edges - for (auto &edge : graphEdges) { - std::vector to_merge; - - for (auto &claster : edge_clasters) - if (std::find(claster.begin(), claster.end(), edge) != claster.end()) - to_merge.push_back(&claster); - - if (to_merge.size() > 1) { - // Merge clasters - auto base_classter = to_merge[0]; - for (int i = 1; i < to_merge.size(); i++) { - base_classter->insert(base_classter->end(), - to_merge[i]->begin(), to_merge[i]->end()); - to_merge[i]->clear(); - } + return edge_clusters; +} - // remove duplicates in merged claster - std::sort(base_classter->begin(), base_classter->end()); - base_classter->erase(std::unique(base_classter->begin(), base_classter->end()), - base_classter->end() ); +void MKLDNNGraph::AllocateWithReuse() { + edge_clusters_t edge_clusters = findEdgeClusters(graphEdges); + + size_t edge_clusters_count = edge_clusters.size(); + + for (size_t i = 0; i < edge_clusters_count;) { + auto &cluster = edge_clusters[i]; + bool erase = false; + for (auto &edge : cluster) { + if (edge->getStatus() == MKLDNNEdge::Status::NeedAllocation + && edge->getParent()->isConstant()) { + edge->externalAllocate(weightsCache); + erase = true; + } + } - // remove empty clasters - edge_clasters.erase(std::remove_if(edge_clasters.begin(), edge_clasters.end(), - [] ( std::vector &cls) { return cls.empty(); }), - edge_clasters.end()); + if (erase) { + std::swap(edge_clusters[i], edge_clusters[edge_clusters_count - 1]); + --edge_clusters_count; + } else { + ++i; } } - //======= End of WA ============ + + edge_clusters.resize(edge_clusters_count); const int64_t alignment = 32; // 32 bytes - std::vector boxes(edge_clasters.size()); - for (int i = 0; i < edge_clasters.size(); i++) { + std::vector boxes(edge_clusters.size()); + for (int i = 0; i < edge_clusters.size(); i++) { MemorySolver::Box &box = boxes[i]; box = { std::numeric_limits::max(), 0, 0, i }; - for (auto &edge : edge_clasters[i]) { + for (auto &edge : edge_clusters[i]) { int e_start = edge->getParent()->execIndex; int e_finish = edge->getChild()->execIndex; @@ -634,7 +677,7 @@ void MKLDNNGraph::AllocateWithReuse() { // So we need it untouchable during all execution time // -1 is a place holder for a max timestamp. bool isConst = false, isOutput = false, isInput = false; - for (auto &edge : edge_clasters[i]) { + for (auto &edge : edge_clusters[i]) { isConst |= isConstOutput(edge); isOutput |= edge->getChild()->getType() == Output; isInput |= edge->getParent()->getType() == Input; @@ -658,11 +701,15 @@ void MKLDNNGraph::AllocateWithReuse() { memWorkspace = std::make_shared(eng); memWorkspace->Create(MKLDNNMemoryDesc(TensorDesc(Precision::I8, {total_size}, Layout::C))); + + if (edge_clusters.empty()) + return; + auto* workspace_ptr = static_cast(memWorkspace->GetData()); - for (int i = 0; i < edge_clasters.size(); i++) { + for (int i = 0; i < edge_clusters.size(); i++) { int count = 0; - for (auto &edge : edge_clasters[i]) { + for (auto &edge : edge_clusters[i]) { if (edge->getStatus() == MKLDNNEdge::Status::NeedAllocation) { int64_t offset = memSolver.getOffset(i); // !! Fallback to individual memory allocation !! @@ -709,7 +756,7 @@ void MKLDNNGraph::CreatePrimitives() { } void MKLDNNGraph::PushInputData(const std::string& name, const InferenceEngine::Blob::Ptr &in) { - if (!IsReady()) THROW_IE_EXCEPTION<< "Wrong state. Topology not ready."; + if (!IsReady()) IE_THROW()<< "Wrong state. Topology not ready."; auto input = inputNodes.find(name); if (input != inputNodes.end()) { @@ -732,17 +779,17 @@ void MKLDNNGraph::PushInputData(const std::string& name, const InferenceEngine:: if (in->getTensorDesc().getPrecision() == InferenceEngine::Precision::FP32) { _meanImages[name].Subtract(outDims, reinterpret_cast(inter_data_ptr), in->getTensorDesc().getLayout()); } else { - THROW_IE_EXCEPTION << "Mean image of type " << in->getTensorDesc().getPrecision().name() << " is unsupported"; + IE_THROW() << "Mean image of type " << in->getTensorDesc().getPrecision().name() << " is unsupported"; } } } else { - THROW_IE_EXCEPTION << "Input blob for infer '" << name << "' doesn't correspond to input in network"; + IE_THROW() << "Input blob for infer '" << name << "' doesn't correspond to input in network"; } } void MKLDNNGraph::PullOutputData(BlobMap &out) { if (!IsReady()) - THROW_IE_EXCEPTION << "Wrong state. Topology not ready."; + IE_THROW() << "Wrong state. Topology not ready."; for (MKLDNNNodePtr &node : outputNodes) { // remove out_ from node name @@ -767,10 +814,10 @@ void MKLDNNGraph::PullOutputData(BlobMap &out) { auto srcPrec = MKLDNNExtensionUtils::DataTypeToIEPrecision(intr_blob.GetDataType()); auto dstPrec = ext_blob->getTensorDesc().getPrecision(); if (srcPrec == dstPrec && ext_blob->byteSize() != intr_blob.GetSize()) - THROW_IE_EXCEPTION << "Output blob byte size is not equal network output byte size (" + IE_THROW() << "Output blob byte size is not equal network output byte size (" << ext_blob->byteSize() << "!=" << intr_blob.GetSize() << ")."; if (ext_blob->size() != intr_blob.GetElementsCount()) - THROW_IE_EXCEPTION << "Output blob number of elements is not equal network output number of elements (" + IE_THROW() << "Output blob number of elements is not equal network output number of elements (" << ext_blob->size() << "!=" << intr_blob.GetElementsCount() << ")."; void *ext_blob_ptr = ext_blob->buffer(); @@ -792,7 +839,7 @@ void MKLDNNGraph::PullOutputData(BlobMap &out) { void MKLDNNGraph::Infer(MKLDNNInferRequest* request, int batch) { if (!IsReady()) { - THROW_IE_EXCEPTION << "Wrong state. Topology is not ready."; + IE_THROW() << "Wrong state. Topology is not ready."; } mkldnn::stream stream(eng); @@ -945,7 +992,7 @@ void MKLDNNGraph::setProperty(const std::map& properti config.readProperties(properties); } -Config MKLDNNGraph::getProperty() { +Config MKLDNNGraph::getProperty() const { return config; } @@ -1123,7 +1170,7 @@ MKLDNNNodePtr MKLDNNGraph::InsertReorder(MKLDNNEdgePtr edge, std::string layerNa MKLDNNNodePtr newReorder(new MKLDNNReorderNode(layer, getEngine(), weightsCache)); auto *reorderPtr = dynamic_cast(newReorder.get()); if (reorderPtr == nullptr) { - THROW_IE_EXCEPTION << "MKLDNNGraph::InsertReorder: Cannot cast to MKLDNNReorderNode"; + IE_THROW() << "MKLDNNGraph::InsertReorder: Cannot cast to MKLDNNReorderNode"; } reorderPtr->setDescs(inDesc, outDesc); reorderPtr->_scales = scales; @@ -1144,7 +1191,7 @@ MKLDNNNodePtr MKLDNNGraph::InsertReorder(MKLDNNEdgePtr edge, std::string layerNa void MKLDNNGraph::dumpToDotFile(std::string file) const { std::ofstream dot; dot.open(file); - if (!dot.is_open()) THROW_IE_EXCEPTION << "CPU Plugin cannot create dot file " << file << "."; + if (!dot.is_open()) IE_THROW() << "CPU Plugin cannot create dot file " << file << "."; dump_graph_as_dot(*this, dot); dot.close(); @@ -1245,7 +1292,7 @@ bool MKLDNNGraph::InsertNode(MKLDNNEdgePtr edge, MKLDNNNodePtr node, bool initNo auto oIndex = edge->getOutputNum(); auto iIndex = edge->getInputNum(); if (iIndex < 0 || oIndex < 0) - THROW_IE_EXCEPTION << "Cannot insert node '" << node->getName() << "' between nodes: " + IE_THROW() << "Cannot insert node '" << node->getName() << "' between nodes: " << edge->getParent()->getName() << " and " << edge->getChild()->getName() << "."; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_graph.h b/inference-engine/src/mkldnn_plugin/mkldnn_graph.h index 0df95cbe86b66d..5e8d9d7d009a0c 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_graph.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_graph.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,7 +30,7 @@ class MKLDNNGraph { Ready = 1, }; - MKLDNNGraph(mkldnn::engine eng = mkldnn::engine(mkldnn::engine::kind::cpu, 0)) : status(NotReady), eng(eng) {} + MKLDNNGraph() = default; Status GetStatus() { return status; @@ -42,7 +42,7 @@ class MKLDNNGraph { void setConfig(const Config &cfg); void setProperty(const std::map &properties); - Config getProperty(); + Config getProperty() const; void getInputBlobs(InferenceEngine::BlobMap &in_map); void getOutputBlobs(InferenceEngine::BlobMap &out_map); @@ -172,7 +172,7 @@ class MKLDNNGraph { graphEdges.clear(); _meanImages.clear(); } - Status status; + Status status { NotReady }; Config config; // For dumping purposes. -1 - no counting, all other positive @@ -191,7 +191,7 @@ class MKLDNNGraph { std::map _meanImages; std::string _name; - mkldnn::engine eng; + static mkldnn::engine eng; void Replicate(const InferenceEngine::CNNNetwork &network, const MKLDNNExtensionManager::Ptr& extMgr); void Replicate(const InferenceEngine::TensorIterator::Body &subgraph, const MKLDNNExtensionManager::Ptr& extMgr); diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_graph_dumper.h b/inference-engine/src/mkldnn_plugin/mkldnn_graph_dumper.h index 91b1908528c421..e68c8a99be6f91 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_graph_dumper.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_graph_dumper.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp index 9de0f49aaf836c..477de31b769261 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -136,14 +136,15 @@ void MKLDNNGraphOptimizer::ApplyImplSpecificGraphOptimizations(MKLDNNGraph &grap RemoveIOScaleShifts(graph); graph.RemoveDroppedNodes(); - ChangeConvertToReorder(graph); - graph.RemoveDroppedNodes(); - DropDoubleReorders(graph); graph.RemoveDroppedNodes(); +#if 0 + /* disable, since there is no use case for it at the moment + * should be enabled after ngraph migration */ DropConvertReorder(graph); graph.RemoveDroppedNodes(); +#endif MergePermuteAndReorder(graph); graph.RemoveDroppedNodes(); @@ -163,7 +164,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndZeroPoints(MKLDNNGraph &graph) { auto* convLayer = dynamic_cast(node->getCnnLayer().get()); if (convLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution layer " << node->getName(); + IE_THROW() << "Cannot get convolution layer " << node->getName(); return true; }; @@ -171,7 +172,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndZeroPoints(MKLDNNGraph &graph) { auto initializeInputZeroPoints = [](MKLDNNNodePtr node, MKLDNNNodePtr parent0, MKLDNNNodePtr parent1) { auto* convNode = dynamic_cast(node.get()); if (convNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution node " << node->getName(); + IE_THROW() << "Cannot get convolution node " << node->getName(); int IC = node->getParentEdgesAtPort(0)[0]->getDims()[1]; int OC = node->getChildEdgesAtPort(0)[0]->getDims()[1]; @@ -211,11 +212,11 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndZeroPoints(MKLDNNGraph &graph) { auto zeroPointsBlob = dynamic_cast*>(arg0->getCnnLayer()->blobs["custom"].get()); if (zeroPointsBlob == nullptr) - THROW_IE_EXCEPTION << "Cannot cast to TBlob internal zero points blob"; + IE_THROW() << "Cannot cast to TBlob internal zero points blob"; auto zeroPointsData = zeroPointsBlob->buffer().as(); if (zeroPointsData == nullptr) - THROW_IE_EXCEPTION << "zeroPointsBlob has not allocated buffer"; + IE_THROW() << "zeroPointsBlob has not allocated buffer"; for (int j = 0; j < parent0->getParentEdgesAtPort(1)[0]->getDims()[1]; j++) { convNode->inputZeroPoints.push_back(zeroPointsData[j]); @@ -237,7 +238,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndZeroPoints(MKLDNNGraph &graph) { // auto initializeWeightsZeroPoints = [](MKLDNNNodePtr node, MKLDNNNodePtr parent0) { // auto* convNode = dynamic_cast(node.get()); // if (convNode == nullptr) -// THROW_IE_EXCEPTION << "Cannot get convolution node " << node->getName(); +// IE_THROW() << "Cannot get convolution node " << node->getName(); // // int OC = node->getChildEdgesAtPort(0)[0]->getDims()[1]; // @@ -264,11 +265,11 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndZeroPoints(MKLDNNGraph &graph) { // // auto zeroPointsBlob = dynamic_cast*>(arg0->getCnnLayer()->blobs["custom"].get()); // if (zeroPointsBlob == nullptr) -// THROW_IE_EXCEPTION << "Cannot cast to TBlob internal zero points blob"; +// IE_THROW() << "Cannot cast to TBlob internal zero points blob"; // // auto zeroPointsData = zeroPointsBlob->buffer().as(); // if (zeroPointsData == nullptr) -// THROW_IE_EXCEPTION << "zeroPointsBlob has not allocated buffer"; +// IE_THROW() << "zeroPointsBlob has not allocated buffer"; // // for (int j = 0; j < parent0->getParentEdgesAtPort(1)[0]->getDims()[0]; j++) { // convNode->weightsZeroPoints.push_back(static_cast(zeroPointsData[j])); @@ -286,15 +287,15 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndZeroPoints(MKLDNNGraph &graph) { auto initializeOutputCompensation = [](MKLDNNNodePtr node) { auto* convNode = dynamic_cast(node.get()); if (convNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution node " << node->getName(); + IE_THROW() << "Cannot get convolution node " << node->getName(); auto * convLayer = dynamic_cast(convNode->getCnnLayer().get()); if (convLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get eltwise layer " << node->getName(); + IE_THROW() << "Cannot get eltwise layer " << node->getName(); for (int i = 0; i < convLayer->insData.size(); i++) if (convLayer->insData[i].lock() == nullptr) - THROW_IE_EXCEPTION << "Node '"<< node->getName() << "' has invalid input data with index " << i; + IE_THROW() << "Node '"<< node->getName() << "' has invalid input data with index " << i; if (convNode->inputZeroPoints.empty()) return; @@ -307,11 +308,11 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndZeroPoints(MKLDNNGraph &graph) { auto weightsBlob = dynamic_cast*>(weightsLayer->blobs["custom"].get()); if (weightsBlob == nullptr) - THROW_IE_EXCEPTION << "Cannot cast to TBlob internal weights blob"; + IE_THROW() << "Cannot cast to TBlob internal weights blob"; auto weightsPtr = weightsBlob->buffer().as(); if (weightsPtr == nullptr) - THROW_IE_EXCEPTION << "weightsBlob has not allocated buffer"; + IE_THROW() << "weightsBlob has not allocated buffer"; ptrdiff_t G = convLayer->_group; ptrdiff_t OC = weightsLayer->outData[0]->getDims()[0] / G; @@ -443,7 +444,7 @@ void MKLDNNGraphOptimizer::MergeTwoEqualScaleShifts(MKLDNNGraph& graph) { auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << node->getName() << " to Eltwise node"; + IE_THROW() << "Cannot cast " << node->getName() << " to Eltwise node"; if (eltwiseNode->getChildEdges().size() != 1) return false; @@ -509,7 +510,7 @@ void MKLDNNGraphOptimizer::MergeTwoEqualScaleShifts(MKLDNNGraph& graph) { } } if (remEdge == nullptr) - THROW_IE_EXCEPTION << "Edge was not found"; + IE_THROW() << "Edge was not found"; remEdge->drop(); graph.GetEdges().erase(std::remove(graph.GetEdges().begin(), graph.GetEdges().end(), remEdge), graph.GetEdges().end()); @@ -623,7 +624,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndActivation(MKLDNNGraph &graph) { auto* pLayer = dynamic_cast(pool->getCnnLayer().get()); if (pLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get pooling layer " << pool->getName(); + IE_THROW() << "Cannot get pooling layer " << pool->getName(); bool is_max_pool = pLayer->_type == PoolingLayer::PoolType::MAX; if (is_max_pool && pool->getChildEdges().size() == 1) { @@ -655,7 +656,7 @@ void MKLDNNGraphOptimizer::FuseFullyConnectedAndSimpleOperation(MKLDNNGraph &gra if (childNode->getType() == Quantize) { auto* quantizeNode = dynamic_cast(childNode.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize layer " << childNode->getName(); + IE_THROW() << "Cannot get quantize layer " << childNode->getName(); if (parentNode->getParentEdgesAtPort(0)[0]->getDims().ndims() != 3) { return !quantizeNode->isBinarization(); @@ -667,7 +668,7 @@ void MKLDNNGraphOptimizer::FuseFullyConnectedAndSimpleOperation(MKLDNNGraph &gra } else if (childNode->getType() == Eltwise) { auto* eltwiseNode = dynamic_cast(childNode.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get Eltwise node " << childNode->getName(); + IE_THROW() << "Cannot get Eltwise node " << childNode->getName(); if (IsOneOf(eltwiseNode->getOpType(), {Relu, Gelu, Elu, Logistic, BoundedRelu, Clamp, Swish, Hswish, Mish, Hsigmoid, Round})) { @@ -681,7 +682,7 @@ void MKLDNNGraphOptimizer::FuseFullyConnectedAndSimpleOperation(MKLDNNGraph &gra } else { const auto &eltwiseLayer = eltwiseNode->getCnnLayer(); if (eltwiseLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get scale shift layer " << eltwiseNode->getName(); + IE_THROW() << "Cannot get scale shift layer " << eltwiseNode->getName(); if (eltwiseNode->getOpType() != MulAdd) return false; @@ -772,7 +773,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndDepthwise(MKLDNNGraph &graph) { auto* eltwiseNode = dynamic_cast(childNode.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get eltwise node " << childNode->getName(); + IE_THROW() << "Cannot get eltwise node " << childNode->getName(); return ((eltwiseNode->getOpType() == MulAdd && childNode->getCnnLayer()->blobs.size() == 2) || (eltwiseNode->getOpType() == Prelu)); }; @@ -832,11 +833,11 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndDWConvolution(MKLDNNGraph &graph) { auto isSutableParentConvolution = [&](MKLDNNNodePtr node) { auto *layer = dynamic_cast(node->getCnnLayer().get()); if (layer == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution layer " << node->getName(); + IE_THROW() << "Cannot get convolution layer " << node->getName(); auto* parentConvolutionNode = dynamic_cast(node.get()); if (parentConvolutionNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution node " << node->getName(); + IE_THROW() << "Cannot get convolution node " << node->getName(); if (!parentConvolutionNode->weightsZeroPoints.empty()) return false; @@ -845,7 +846,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndDWConvolution(MKLDNNGraph &graph) { bool isSupportedParams = layer->_group == 1 && is1x1Convolution(layer) && // TODO [oneDNN] : fusing is permitted only with 1x1 convolutions everyone_is(1, layer->_stride[X_AXIS], layer->_stride[Y_AXIS]) && - one_of(layer->outData[0].get()->getPrecision(), Precision::FP32, Precision::U8) && + one_of(layer->outData[0].get()->getPrecision(), Precision::FP32) && node->getChildEdgeAt(0)->getDims().ndims() == 4; if (!isSupportedParams) return false; @@ -855,11 +856,11 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndDWConvolution(MKLDNNGraph &graph) { auto isSutableChildConvolution = [&](MKLDNNNodePtr parentNode, MKLDNNNodePtr childNode) { auto* childLayer = dynamic_cast(childNode->getCnnLayer().get()); if (childLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution layer " << childNode->getName(); + IE_THROW() << "Cannot get convolution layer " << childNode->getName(); auto* parentLayer = dynamic_cast(parentNode->getCnnLayer().get()); if (parentLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution layer " << parentNode->getName(); + IE_THROW() << "Cannot get convolution layer " << parentNode->getName(); if (parentLayer->outData[0].get()->getPrecision() != childLayer->outData[0].get()->getPrecision()) return false; @@ -880,11 +881,14 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndDWConvolution(MKLDNNGraph &graph) { auto* childConvolutionNode = dynamic_cast(childNode.get()); if (childConvolutionNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution node " << childNode->getName(); + IE_THROW() << "Cannot get convolution node " << childNode->getName(); if (!childConvolutionNode->inputZeroPoints.empty() || !childConvolutionNode->weightsZeroPoints.empty()) return false; + bool withBias = (childLayer->_biases != nullptr && childLayer->_biases->size() != 0) || + childConvolutionNode->getBaseIntputsNumber() == 3; + auto allPads = getPaddings(*childLayer); bool isSupportedParams = childLayer->_out_depth == childLayer->_group && @@ -894,13 +898,36 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndDWConvolution(MKLDNNGraph &graph) { everyone_is(1, allPads.end[X_AXIS], allPads.end[Y_AXIS]) && everyone_is(1, childLayer->_dilation[X_AXIS], childLayer->_dilation[Y_AXIS]) && childLayer->_stride[X_AXIS] == childLayer->_stride[Y_AXIS] && - false && // TODO [oneDNN]: disabled while not ported - one_of(childLayer->_stride[X_AXIS], 1 /*, 2*/) && // TODO [oneDNN]: stride 2 should also be supported + withBias && + one_of(childLayer->_stride[X_AXIS], 1, 2) && childNode->getChildEdgeAt(0)->getDims().ndims() == 4; return isSupportedParams; }; + auto isFusingWorthwhile = [&](MKLDNNNodePtr parentNode, MKLDNNNodePtr childNode) { + auto layer = std::dynamic_pointer_cast(childNode->getCnnLayer()); + if (layer == nullptr) + IE_THROW() << "Cannot get convolution layer " << childNode->getName(); + + auto inDims = childNode->inDims[0]; + auto outDims = childNode->outDims[0]; + int elemSize = layer->precision.size(); + + int L3_cache_size = utils::get_cache_size(3, false); + int dw_conv_input_size = inDims[0] * inDims[1] * inDims[2] * inDims[3] * elemSize; + int dw_conv_output_size = outDims[0] * outDims[1]* outDims[2] * outDims[3] * elemSize; + + auto parentConvolutionNode = std::dynamic_pointer_cast(parentNode); + if (parentConvolutionNode == nullptr) + IE_THROW() << "Cannot get convolution node " << parentNode->getName(); + + if (!impl::cpu::x64::mayiuse(impl::cpu::x64::avx2) || impl::cpu::x64::mayiuse(impl::cpu::x64::avx512_common)) + return false; + + return (dw_conv_input_size + dw_conv_output_size > L3_cache_size / 2); + }; + for (int i = 0; i < graphNodes.size(); i++) { if (!isConvolutionNode(graphNodes[i])) continue; @@ -910,6 +937,8 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndDWConvolution(MKLDNNGraph &graph) { auto childConvNode = parentConvNode->getChildEdgeAt(0)->getChild(); if (!isSutableChildConvolution(parentConvNode, childConvNode)) continue; + if (!isFusingWorthwhile(parentConvNode, childConvNode)) continue; + parentConvNode->fuseWith(childConvNode); for (auto node : childConvNode->getFusedWith()) @@ -929,7 +958,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndQuantize(MKLDNNGraph &graph) { if (isSutableBinConv) { auto *convLayer = dynamic_cast(node->getCnnLayer().get()); if (convLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get convolution layer " << node->getName(); + IE_THROW() << "Cannot get convolution layer " << node->getName(); return isSutableBinConv && node->getChildEdges().size() == 1; } else { @@ -946,7 +975,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndQuantize(MKLDNNGraph &graph) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize layer " << node->getName(); + IE_THROW() << "Cannot get quantize layer " << node->getName(); return !quantizeNode->isBinarization(); }; @@ -989,13 +1018,13 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndSimpleOperation(MKLDNNGraph &graph) if (node->getType() == Quantize) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize layer " << node->getName(); + IE_THROW() << "Cannot get quantize layer " << node->getName(); return !quantizeNode->isBinarization(); } else if (node->getType() == Eltwise) { auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get eltwise node " << node->getName(); + IE_THROW() << "Cannot get eltwise node " << node->getName(); return ((eltwiseNode->getOpType() == MulAdd && node->getCnnLayer()->blobs.size() == 2) || (eltwiseNode->getOpType() == Prelu) || @@ -1088,7 +1117,12 @@ void MKLDNNGraphOptimizer::FusePoolingAndQuantize(MKLDNNGraph &graph) { if (isSutablePooling) { auto *poolingLayer = dynamic_cast(node->getCnnLayer().get()); if (poolingLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get Pooling layer " << node->getName(); + IE_THROW() << "Cannot get Pooling layer " << node->getName(); + + // Optimized FP32 Pooling doesn't support fusing with FQ + auto inputPrecision = poolingLayer->insData[0].lock()->getPrecision(); + if (inputPrecision != Precision::U8 && inputPrecision != Precision::I8) + return false; return node->getChildEdges().size() == 1 && poolingLayer->_type == PoolingLayer::AVG; } else { @@ -1105,7 +1139,7 @@ void MKLDNNGraphOptimizer::FusePoolingAndQuantize(MKLDNNGraph &graph) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize layer " << node->getName(); + IE_THROW() << "Cannot get quantize layer " << node->getName(); return !quantizeNode->isBinarization(); }; @@ -1363,7 +1397,7 @@ void MKLDNNGraphOptimizer::FuseMVNAndSimpleOperation(MKLDNNGraph &graph) { if (isSutableMVN) { auto *mvnLayer = dynamic_cast(node->getCnnLayer().get()); if (mvnLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get MVN layer " << node->getName(); + IE_THROW() << "Cannot get MVN layer " << node->getName(); return node->getChildEdges().size() == 1 && mvnLayer->across_channels == 0 && mvnLayer->normalize == 1; } else { @@ -1378,12 +1412,12 @@ void MKLDNNGraphOptimizer::FuseMVNAndSimpleOperation(MKLDNNGraph &graph) { if (node->getType() == Quantize) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize layer " << node->getName(); + IE_THROW() << "Cannot get quantize layer " << node->getName(); return !quantizeNode->isBinarization(); } else if (node->getType() == Eltwise) { auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get eltwise node " << node->getName(); + IE_THROW() << "Cannot get eltwise node " << node->getName(); return ((eltwiseNode->getOpType() == MulAdd) || (eltwiseNode->getOpType() == Prelu) || @@ -1501,12 +1535,12 @@ void MKLDNNGraphOptimizer::FuseNormalizeAndSimpleOperation(MKLDNNGraph &graph) { if (node->getType() == Quantize) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize layer " << node->getName(); + IE_THROW() << "Cannot get quantize layer " << node->getName(); return !quantizeNode->isBinarization(); } else if (node->getType() == Eltwise) { auto *eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get Eltwise node " << node->getName(); + IE_THROW() << "Cannot get Eltwise node " << node->getName(); return IsOneOf(eltwiseNode->getOpType(), {Relu, Gelu, Elu, Logistic, BoundedRelu, Clamp, Tanh, Swish, Hswish, Mish, Hsigmoid, Round, Linear, Abs, Square, Sqrt}) || ((eltwiseNode->getOpType() == MulAdd && eltwiseNode->getCnnLayer()->blobs.size() == 2) || @@ -1676,7 +1710,7 @@ void MKLDNNGraphOptimizer::RemoveIdentityOperator(MKLDNNGraph &graph) { if (eltwiseNode->getOpType() == PowerStatic) { PowerLayer *l = dynamic_cast(node->getCnnLayer().get()); if (l == nullptr) - THROW_IE_EXCEPTION << "Cannot get power layer " << node->getName(); + IE_THROW() << "Cannot get power layer " << node->getName(); if (l->power == 1.0f && l->scale == 1.0f && l->offset == 0.0f) toDrop = true; } @@ -1685,7 +1719,7 @@ void MKLDNNGraphOptimizer::RemoveIdentityOperator(MKLDNNGraph &graph) { if (node->getType() == Eltwise && node->getCnnLayer()->type == "ScaleShift") { ScaleShiftLayer* l = dynamic_cast(node->getCnnLayer().get()); if (l == nullptr) - THROW_IE_EXCEPTION << "Cannot get scale shift layer " << node->getName(); + IE_THROW() << "Cannot get scale shift layer " << node->getName(); if (l->_weights == nullptr && l->_biases == nullptr) toDrop = true; } @@ -1707,15 +1741,15 @@ void MKLDNNGraphOptimizer::DropDoubleReorders(MKLDNNGraph &graph) { auto nextNode = node->getChildEdgeAt(0)->getChild(); MKLDNNReorderNode* n = dynamic_cast(node.get()); if (n == nullptr) - THROW_IE_EXCEPTION << "Cannot get reorder layer " << node->getName(); + IE_THROW() << "Cannot get reorder layer " << node->getName(); MKLDNNReorderNode* nn = dynamic_cast(nextNode.get()); if (nn == nullptr) - THROW_IE_EXCEPTION << "Cannot get reorder layer " << nextNode->getName(); + IE_THROW() << "Cannot get reorder layer " << nextNode->getName(); auto scales = n->_scales; if (n->_scales != nullptr && nn->_scales != nullptr) { - THROW_IE_EXCEPTION << "Merging scales of two subsequent reorders is unsupported yet"; + IE_THROW() << "Merging scales of two subsequent reorders is unsupported yet"; } else { if (scales == nullptr) { scales = nn->_scales; @@ -1738,7 +1772,7 @@ void MKLDNNGraphOptimizer::DropDoubleReorders(MKLDNNGraph &graph) { if (cur->getChild() == c) edge = cur; } - if (!edge) THROW_IE_EXCEPTION << "Inappropriate graph processing"; + if (!edge) IE_THROW() << "Inappropriate graph processing"; std::string layerName = edge->getParent()->getName() + "_ScaleReorder_" + edge->getChild()->getName(); @@ -1768,6 +1802,11 @@ void MKLDNNGraphOptimizer::DropConvertReorder(MKLDNNGraph& graph) { if (inTD.getPrecision() == rnOutput.getPrecision() && inTD.getLayout() == rnOutput.getLayout() && inTD.getDims() == rnOutput.getDims()) { + /** + * TODO: just drop extra nodes instead of moving edges + * graph.DropNode(convert); + * graph.DropNode(reorder); + */ auto avterReorder = reorder->getChildEdgeAt(0)->getChild(); auto oldEdgeNum = reorder->getChildEdgeAt(0)->getOutputNum(); reorder->getChildEdgeAt(0)->drop(); @@ -1785,69 +1824,16 @@ void MKLDNNGraphOptimizer::DropConvertReorder(MKLDNNGraph& graph) { } } -void MKLDNNGraphOptimizer::ChangeConvertToReorder(MKLDNNGraph& graph) { - std::vector continuousPrecisions{ - Precision::BF16, - Precision::FP32 - }; - for (int ind = 0; ind < graph.GetNodes().size(); ind++) { - auto convertCandidate = graph.GetNodes().at(ind); - std::string nodeType = convertCandidate->getTypeStr(); - if (!InferenceEngine::details::CaselessEq()(nodeType, "convert")) { - continue; - } - if (convertCandidate->getCnnLayer()->insData.empty() || - convertCandidate->getCnnLayer()->outData.empty()) { - continue; - } - auto inputPrecision = convertCandidate->getCnnLayer()->insData[0].lock()->getPrecision(); - auto outputPrecision = convertCandidate->getCnnLayer()->outData[0]->getPrecision(); - if (std::find(continuousPrecisions.begin(), continuousPrecisions.end(), inputPrecision) == continuousPrecisions.end() || - std::find(continuousPrecisions.begin(), continuousPrecisions.end(), outputPrecision) == continuousPrecisions.end()) { - continue; - } - std::unordered_set uniqueLayerNames; - for (auto node : graph.GetNodes()) { - uniqueLayerNames.insert(node->getCnnLayer()->name); - } - auto parentEdge = convertCandidate->getParentEdges()[0].lock(); - auto parentNode = parentEdge->getParent(); - auto &childEdge = convertCandidate->getChildEdgeAt(0); - auto childNode = childEdge->getChild(); - std::string basicLayerName = childEdge->getParent()->getName() + "_" + - MKLDNNExtensionUtils::getReorderArgs(convertCandidate->getCnnLayer()->insData[0].lock()->getTensorDesc(), - convertCandidate->getCnnLayer()->outData[0]->getTensorDesc()) + - "_" + childEdge->getChild()->getName(); - std::string layerName = basicLayerName; - int idx = 0; - while (uniqueLayerNames.find(layerName) != uniqueLayerNames.end()) { - idx++; - layerName = basicLayerName + "_" + std::to_string(idx); - } - // create temporary edge - auto oldParentOutputPort = parentEdge->getInputNum(); - auto oldChildInputPort = childEdge->getOutputNum(); - MKLDNNEdgePtr tempEdge(new MKLDNNEdge(parentNode, childNode, oldParentOutputPort, oldChildInputPort)); - - graph.InsertReorder(tempEdge, layerName, convertCandidate->getCnnLayer()->insData[0].lock()->getTensorDesc(), - convertCandidate->getCnnLayer()->outData[0]->getTensorDesc(), false); - parentNode->removeEdge(parentEdge); - parentEdge->drop(); - childEdge->drop(); - graph.DropNode(convertCandidate); - } -} - void MKLDNNGraphOptimizer::RemoveIOScaleShifts(MKLDNNGraph &graph) { for (MKLDNNNodePtr& node : graph.GetNodes()) { if (node->getType() == Eltwise && node->getCnnLayer()->type == "ScaleShift") { ScaleShiftLayer* l = dynamic_cast(node->getCnnLayer().get()); if (l == nullptr) - THROW_IE_EXCEPTION << "Cannot get scale shift layer " << node->getName(); + IE_THROW() << "Cannot get scale shift layer " << node->getName(); auto cur = l->insData[0].lock(); if (cur == nullptr) { - THROW_IE_EXCEPTION << "[MKLDNN] error - invalid input data"; + IE_THROW() << "[MKLDNN] error - invalid input data"; } if (cur->getTensorDesc().getPrecision() != l->outData[0]->getTensorDesc().getPrecision()) { if (node->name.find("_iScaleShift_") != std::string::npos) { @@ -1859,7 +1845,7 @@ void MKLDNNGraphOptimizer::RemoveIOScaleShifts(MKLDNNGraph &graph) { graph.DropNode(node); } } else { - THROW_IE_EXCEPTION << "Strange case. No Reorder after iScaleShift"; + IE_THROW() << "Strange case. No Reorder after iScaleShift"; } } else if (node->name.find("_oScaleShift_") != std::string::npos) { auto parent = node->parentEdges[0].lock()->getParent(); @@ -1871,7 +1857,7 @@ void MKLDNNGraphOptimizer::RemoveIOScaleShifts(MKLDNNGraph &graph) { graph.DropNode(node); } } else { - THROW_IE_EXCEPTION << "Strange case. No Reorder before oScaleShift"; + IE_THROW() << "Strange case. No Reorder before oScaleShift"; } } } @@ -1946,7 +1932,7 @@ void MKLDNNGraphOptimizer::FuseClampAndQuantize(MKLDNNGraph &graph) { auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << node->getName() << " to Eltwise node"; + IE_THROW() << "Cannot cast " << node->getName() << " to Eltwise node"; if (eltwiseNode->getChildEdges().size() != 1) return false; @@ -1963,7 +1949,7 @@ void MKLDNNGraphOptimizer::FuseClampAndQuantize(MKLDNNGraph &graph) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << node->getName() << " to Quantize node"; + IE_THROW() << "Cannot cast " << node->getName() << " to Quantize node"; return !quantizeNode->isBinarization(); }; @@ -1971,11 +1957,11 @@ void MKLDNNGraphOptimizer::FuseClampAndQuantize(MKLDNNGraph &graph) { auto fuseClampAndQuantizeNodes = [](MKLDNNNodePtr parent, MKLDNNNodePtr child) { auto* eltwiseNode = dynamic_cast(parent.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << parent->getName() << " to Eltwise node"; + IE_THROW() << "Cannot cast " << parent->getName() << " to Eltwise node"; auto* quantizeNode = dynamic_cast(child.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << child->getName() << " to Quantize node"; + IE_THROW() << "Cannot cast " << child->getName() << " to Quantize node"; const std::vector& cropLowData = quantizeNode->getCropLow(); const std::vector& cropHighData = quantizeNode->getCropHigh(); @@ -2015,7 +2001,7 @@ void MKLDNNGraphOptimizer::FuseScaleShiftAndQuantize(MKLDNNGraph &graph) { auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << node->getName() << " to eltwise node"; + IE_THROW() << "Cannot cast " << node->getName() << " to eltwise node"; if (eltwiseNode->getChildEdges().size() != 1) return false; @@ -2032,7 +2018,7 @@ void MKLDNNGraphOptimizer::FuseScaleShiftAndQuantize(MKLDNNGraph &graph) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << node->getName() << " to Quantize node"; + IE_THROW() << "Cannot cast " << node->getName() << " to Quantize node"; return !quantizeNode->isBinarization(); }; @@ -2040,15 +2026,15 @@ void MKLDNNGraphOptimizer::FuseScaleShiftAndQuantize(MKLDNNGraph &graph) { auto fuseScaleShiftAndQuantizeNodes = [](MKLDNNNodePtr parent, MKLDNNNodePtr child) { auto* eltwiseNode = dynamic_cast(parent.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << parent->getName() << " to eltwise node"; + IE_THROW() << "Cannot cast " << parent->getName() << " to eltwise node"; auto eltwiseLayer = eltwiseNode->getCnnLayer(); if (eltwiseLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get scale shift layer " << eltwiseNode->getName(); + IE_THROW() << "Cannot get scale shift layer " << eltwiseNode->getName(); auto* quantizeNode = dynamic_cast(child.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot cast " << child->getName() << " to Quantize node"; + IE_THROW() << "Cannot cast " << child->getName() << " to Quantize node"; Blob::Ptr scalesBlob = eltwiseLayer->blobs["weights"]; if (scalesBlob == nullptr) diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.h b/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.h index dec7383745c40b..60034d6cbec812 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,7 +39,6 @@ class MKLDNNGraphOptimizer { void RemoveIOScaleShifts(MKLDNNGraph& graph); void DropDoubleReorders(MKLDNNGraph& graph); void DropConvertReorder(MKLDNNGraph& graph); - void ChangeConvertToReorder(MKLDNNGraph &graph); void AddConvertToReorder(MKLDNNGraph &graph); void FuseConvolutionAndZeroPoints(MKLDNNGraph &graph); void FuseBroadcastAndEltwise(MKLDNNGraph &graph); diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_infer_request.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_infer_request.cpp index 6e2fb790e8fef0..24e1a3a144b549 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_infer_request.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_infer_request.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "mkldnn_exec_network.h" #include "mkldnn_itt.h" #include "nodes/common/cpu_convert.h" @@ -28,8 +29,8 @@ MKLDNNPlugin::MKLDNNInferRequest::MKLDNNInferRequest(InferenceEngine::InputsData profilingTask = openvino::itt::handle("MKLDNN_INFER_" + execNetwork->_name + "_" + std::to_string(id)); if (execNetwork->_graphs.size() == 0) - THROW_IE_EXCEPTION << "No graph was found"; - graph = execNetwork->_graphs.begin()->get(); + IE_THROW() << "No graph was found"; + graph = &(execNetwork->GetGraph()._graph); for (const auto& it : _networkInputs) { MKLDNNInferRequest::GetBlob(it.first); } @@ -71,7 +72,7 @@ void MKLDNNPlugin::MKLDNNInferRequest::pushInput(const std::string& inputName, I bool needConvert = inPrec != inputBlob->getTensorDesc().getPrecision(); if (inputBlob->cbuffer().as() == nullptr) { - THROW_IE_EXCEPTION << "Input blob has no allocated memory"; + IE_THROW() << "Input blob has no allocated memory"; } InferenceEngine::Blob::Ptr iconv; @@ -80,13 +81,13 @@ void MKLDNNPlugin::MKLDNNInferRequest::pushInput(const std::string& inputName, I inputBlob->getTensorDesc().getLayout())); iconv->allocate(); if (inputBlob->size() != iconv->size()) - THROW_IE_EXCEPTION << "Can't copy tensor: input and converted tensors have different number of elements: " << inputBlob->size() << " and " + IE_THROW() << "Can't copy tensor: input and converted tensors have different number of elements: " << inputBlob->size() << " and " << iconv->size(); void *srcData = inputBlob->cbuffer().as(); void *dstData = iconv->buffer().as(); if (dstData == nullptr) { - THROW_IE_EXCEPTION << "Converted input blob has no allocated memory"; + IE_THROW() << "Converted input blob has no allocated memory"; } cpu_convert(srcData, dstData, inputBlob->getTensorDesc().getPrecision(), iconv->getTensorDesc().getPrecision(), iconv->size()); } @@ -97,7 +98,7 @@ void MKLDNNPlugin::MKLDNNInferRequest::pushInput(const std::string& inputName, I void MKLDNNPlugin::MKLDNNInferRequest::PushInputData() { for (auto input : _inputs) { if (!_networkInputs[input.first]) { - THROW_IE_EXCEPTION << "Input blobs map contains not registered during IInferencePlugin::LoadNetwork blob with name " << input.first; + IE_THROW() << "Input blobs map contains not registered during IInferencePlugin::LoadNetwork blob with name " << input.first; } auto inPrec = input.second->getTensorDesc().getPrecision(); @@ -126,8 +127,15 @@ void MKLDNNPlugin::MKLDNNInferRequest::PushInputData() { break; } default: - THROW_IE_EXCEPTION << "Unsupported input precision " << input.second->getTensorDesc().getPrecision(); + IE_THROW() << "Unsupported input precision " << input.second->getTensorDesc().getPrecision(); } + + // User can initialize input via setBlob API using tensorDesc with default (ANY) layout. + // Currently IE doesn't specify behavior in such scenario, so we assume real layout is equal to the network input. + if (input.second->getTensorDesc().getLayout() == InferenceEngine::ANY) { + input.second->getTensorDesc().setLayout(_networkInputs[input.first]->getLayout()); + } + pushInput(input.first, input.second, inPrec); } } @@ -174,8 +182,8 @@ void MKLDNNPlugin::MKLDNNInferRequest::PullStates() { void MKLDNNPlugin::MKLDNNInferRequest::InferImpl() { using namespace openvino::itt; OV_ITT_SCOPED_TASK(itt::domains::MKLDNNPlugin, profilingTask); - - graph = execNetwork->_graphs.local().get(); + auto graphLock = execNetwork->GetGraph(); + graph = &(graphLock._graph); ThrowIfCanceled(); @@ -204,7 +212,7 @@ void MKLDNNPlugin::MKLDNNInferRequest::InferImpl() { std::map MKLDNNPlugin::MKLDNNInferRequest::GetPerformanceCounts() const { if (!graph || !graph->IsReady()) - THROW_IE_EXCEPTION << "Graph is not ready!"; + IE_THROW() << "Graph is not ready!"; std::map perfMap; graph->GetPerfData(perfMap); return perfMap; @@ -214,7 +222,7 @@ InferenceEngine::Blob::Ptr MKLDNNPlugin::MKLDNNInferRequest::GetBlob(const std:: OV_ITT_SCOPED_TASK(itt::domains::MKLDNNPlugin, "GetBlob"); if (!graph || !graph->IsReady()) - THROW_IE_EXCEPTION << "Graph is not ready!"; + IE_THROW() << "Graph is not ready!"; InferenceEngine::Blob::Ptr data; @@ -282,22 +290,22 @@ InferenceEngine::Blob::Ptr MKLDNNPlugin::MKLDNNInferRequest::GetBlob(const std:: checkBlob(data, name, false); return data; } - THROW_IE_EXCEPTION << "Cannot find blob with name: " << name; + IE_THROW() << "Cannot find blob with name: " << name; } void MKLDNNPlugin::MKLDNNInferRequest::SetBlob(const std::string& name, const InferenceEngine::Blob::Ptr &data) { OV_ITT_SCOPED_TASK(itt::domains::MKLDNNPlugin, "SetBlob"); if (name.empty()) { - THROW_IE_EXCEPTION << NOT_FOUND_str + "Failed to set blob with empty name"; + IE_THROW(NotFound) << "Failed to set blob with empty name"; } if (!data) - THROW_IE_EXCEPTION << NOT_ALLOCATED_str << "Failed to set empty blob with name: \'" << name << "\'"; + IE_THROW(NotAllocated) << "Failed to set empty blob with name: \'" << name << "\'"; const bool compoundBlobPassed = data->is(); if (!compoundBlobPassed && data->buffer() == nullptr) - THROW_IE_EXCEPTION << "Input data was not allocated. Input name: \'" << name << "\'"; + IE_THROW(NotAllocated) << "Input data was not allocated. Input name: \'" << name << "\'"; if (data->size() == 0) { - THROW_IE_EXCEPTION << "Input data is empty. Input name: \'" << name << "\'"; + IE_THROW() << "Input data is empty. Input name: \'" << name << "\'"; } InferenceEngine::InputInfo::Ptr foundInput; @@ -305,13 +313,13 @@ void MKLDNNPlugin::MKLDNNInferRequest::SetBlob(const std::string& name, const In size_t dataSize = data->size(); if (findInputAndOutputBlobByName(name, foundInput, foundOutput)) { if (foundInput->getPrecision() != data->getTensorDesc().getPrecision()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Failed to set input blob with precision: " + IE_THROW(ParameterMismatch) << "Failed to set input blob with precision: " << data->getTensorDesc().getPrecision() << ", if CNNNetwork input blob precision is: " << foundInput->getPrecision(); } const bool preProcRequired = preProcessingRequired(foundInput, data); if (compoundBlobPassed && !preProcRequired) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str + IE_THROW(NotImplemented) << "cannot set compound blob: supported only for input pre-processing"; } @@ -328,17 +336,17 @@ void MKLDNNPlugin::MKLDNNInferRequest::SetBlob(const std::string& name, const In ? InferenceEngine::details::product(foundInput->getTensorDesc().getDims()) : 1; if (dataSize != inputSize) { - THROW_IE_EXCEPTION << "Input blob size is not equal network input size (" + IE_THROW() << "Input blob size is not equal network input size (" << dataSize << "!=" << inputSize << ")."; } if (foundInput->getTensorDesc().getDims() != data->getTensorDesc().getDims()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Failed to set input blob. Dimensions mismatch."; + IE_THROW(ParameterMismatch) << "Failed to set input blob. Dimensions mismatch."; } if (data->getTensorDesc().getLayout() != InferenceEngine::Layout::ANY && foundInput->getTensorDesc().getLayout() != InferenceEngine::Layout::ANY && foundInput->getTensorDesc().getBlockingDesc() != data->getTensorDesc().getBlockingDesc()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Failed to set input blob. Blocking descriptor mismatch."; + IE_THROW(ParameterMismatch) << "Failed to set input blob. Blocking descriptor mismatch."; } if (data->getTensorDesc().getPrecision() == InferenceEngine::Precision::FP32 && @@ -351,26 +359,26 @@ void MKLDNNPlugin::MKLDNNInferRequest::SetBlob(const std::string& name, const In } } else { if (compoundBlobPassed) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str + IE_THROW(NotImplemented) << "cannot set compound blob: supported only for input pre-processing"; } if (foundOutput->getPrecision() != data->getTensorDesc().getPrecision()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Failed to set output blob with precision: " + IE_THROW(ParameterMismatch) << "Failed to set output blob with precision: " << data->getTensorDesc().getPrecision() << ", if CNNNetwork output blob precision is: " << foundOutput->getPrecision(); } size_t outputSize = foundOutput->getTensorDesc().getLayout() != InferenceEngine::Layout::SCALAR ? InferenceEngine::details::product(foundOutput->getDims()) : 1; if (dataSize != outputSize) { - THROW_IE_EXCEPTION << "Output blob size is not equal network output size (" + IE_THROW() << "Output blob size is not equal network output size (" << dataSize << "!=" << outputSize << ")."; } if (foundOutput->getTensorDesc().getDims() != data->getTensorDesc().getDims()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Failed to set output Blob. Dimensions mismatch."; + IE_THROW(ParameterMismatch) << "Failed to set output Blob. Dimensions mismatch."; } if (data->getTensorDesc().getLayout() != InferenceEngine::Layout::ANY && foundOutput->getTensorDesc().getLayout() != InferenceEngine::Layout::ANY && foundOutput->getTensorDesc().getBlockingDesc() != data->getTensorDesc().getBlockingDesc()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str << "Failed to set output blob. Blocking descriptor mismatch."; + IE_THROW(ParameterMismatch) << "Failed to set output blob. Blocking descriptor mismatch."; } if (data->getTensorDesc().getPrecision() == InferenceEngine::Precision::FP32 && !graph->getProperty().batchLimit) { @@ -454,17 +462,17 @@ void MKLDNNPlugin::MKLDNNInferRequest::changeDefaultPtr() { changeEdgePtr(output->getParentEdgeAt(0), it.second); continue; } - THROW_IE_EXCEPTION << "Cannot find input/output blob: " << it.first; + IE_THROW() << "Cannot find input/output blob: " << it.first; } } void MKLDNNPlugin::MKLDNNInferRequest::SetBatch(int new_batch) { if (!graph->getProperty().enableDynamicBatch) - THROW_IE_EXCEPTION << "Dynamic batch is not enabled."; + IE_THROW() << "Dynamic batch is not enabled."; if (new_batch < 1 || new_batch > graph->getProperty().batchLimit) { - THROW_IE_EXCEPTION << "Invalid dynamic batch size " << new_batch << + IE_THROW() << "Invalid dynamic batch size " << new_batch << " for this request."; } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_itt.h b/inference-engine/src/mkldnn_plugin/mkldnn_itt.h index fb4e444a3eda5c..23d1625e63fdf4 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_itt.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_itt.h @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_memory.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_memory.cpp index ee8da9d6eb3e83..ce7afca2e65ddb 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_memory.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_memory.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -130,7 +130,7 @@ void MKLDNNMemory::reorderData(const MKLDNNMemory &input, const MKLDNNMemory &ou mkldnn::stream loc_stream(output.eng, stream::flags::default_order); pReorder->execute(loc_stream, *srcMemoryPtr, *output.prim); } else { - THROW_IE_EXCEPTION << "Could not make mkldnn reorder."; + IE_THROW() << "Could not make mkldnn reorder."; } } } @@ -317,7 +317,7 @@ size_t MKLDNNMemoryDesc::GetElementSize() const { case memory::data_type::bin : return 1; default: - THROW_IE_EXCEPTION << "Unknown data type"; + IE_THROW() << "Unknown data type"; } } @@ -546,7 +546,7 @@ bool MKLDNNMemoryDesc::isSame(mkldnn::memory::format_tag fmt) const { return false; if (desc.data.format_kind != dnnl_blocked || refDesc.data.format_kind != dnnl_blocked) - THROW_IE_EXCEPTION << "MKLDNNMemoryDesc::isSame is not implemented for non blocked memory format"; + IE_THROW() << "MKLDNNMemoryDesc::isSame is not implemented for non blocked memory format"; auto actualBlkDesc = desc.data.format_desc.blocking; auto refBlkDesc = refDesc.data.format_desc.blocking; @@ -674,7 +674,7 @@ MKLDNNMemoryDesc::operator InferenceEngine::TensorDesc() const { Layout::ANY}; if (desc.data.format_kind != dnnl_blocked) - THROW_IE_EXCEPTION << "Conversion is not possible"; + IE_THROW() << "Conversion is not possible"; const auto &blk_desc = desc.data.format_desc.blocking; @@ -779,6 +779,7 @@ MKLDNNMemoryDesc::MKLDNNMemoryDesc(const TensorDesc& tDesc): desc.data.ndims = 1; desc.data.dims[0] = 1; desc.data.padded_dims[0] = 1; + desc.data.format_desc.blocking.strides[0] = 1; desc.data.padded_offsets[0] = 0; desc.data.offset0 = tDesc.getBlockingDesc().getOffsetPadding(); return; @@ -811,7 +812,7 @@ MKLDNNMemoryDesc::MKLDNNMemoryDesc(const TensorDesc& tDesc): // TODO: That's strong constrains and can be mitigated. IE::TensorDesc allow to permute blocked dims // and may be we can achieve correct "descending strides" form which allow conversion. if (!is_descending_strides) - THROW_IE_EXCEPTION << "Unsupported case for conversion"; + IE_THROW() << "Unsupported case for conversion"; std::vector outer_order(outer_ndims, outer_ndims + 1); // outer_order[i] is index of stride for i-th dimension for (size_t i = 0; i < outer_ndims; i++) { @@ -821,7 +822,7 @@ MKLDNNMemoryDesc::MKLDNNMemoryDesc(const TensorDesc& tDesc): std::find(outer_order.begin(), outer_order.end(), outer_ndims + 1) == outer_order.end(); if (!outer_is_correct_permutation_of_n) - THROW_IE_EXCEPTION << "Unsupported case for conversion"; + IE_THROW() << "Unsupported case for conversion"; bool inner_block_are_dense = one_of(ie_strides.back(), 0, 1); // stride 1 - is dense case, 0 - broad casted for (int i = outer_ndims; i < ie_strides.size() - 1; i++) { @@ -829,13 +830,13 @@ MKLDNNMemoryDesc::MKLDNNMemoryDesc(const TensorDesc& tDesc): } if (!inner_block_are_dense) - THROW_IE_EXCEPTION << "Unsupported case for conversion"; + IE_THROW() << "Unsupported case for conversion"; bool inner_pad_offsets_is_zero = std::all_of(ie_offsetsToData.begin() + outer_ndims, ie_offsetsToData.end(), [](size_t pad) { return pad == 0; }); if (!inner_pad_offsets_is_zero) - THROW_IE_EXCEPTION << "Unsupported case for conversion"; + IE_THROW() << "Unsupported case for conversion"; // Fill general memory desc fields desc.data.format_kind = dnnl_blocked; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_memory.h b/inference-engine/src/mkldnn_plugin/mkldnn_memory.h index b9975ba291a421..80c92bc74bcc11 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_memory.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_memory.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -117,7 +117,7 @@ class MKLDNNMemory { void* GetData() const { void* data = prim->get_data_handle(); if (data == nullptr) - THROW_IE_EXCEPTION << "Cannot get memory!"; + IE_THROW() << "Cannot get memory!"; return data; } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.cpp index 3bf656cbf81fb5..42cbfa20e5e7b7 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.cpp @@ -1,10 +1,11 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // +#include + #include "mkldnn_memory_solver.hpp" -#include
#include #include @@ -108,7 +109,7 @@ int64_t MemorySolver::maxTopDepth() { int64_t MemorySolver::getOffset(int id) const { auto res = _offsets.find(id); - if (res == _offsets.end()) THROW_IE_EXCEPTION << "There are no box for provided ID"; + if (res == _offsets.end()) IE_THROW() << "There are no box for provided ID"; return res->second; } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.hpp b/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.hpp index d83ab44795ec70..91219a4c633433 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.hpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_memory_solver.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp index 3cdd2714800d82..a888d38a2ebc45 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp @@ -137,6 +137,7 @@ static const InferenceEngine::details::caseless_unordered_map { "ReduceProd", ReduceProd}, { "ReduceSum", ReduceSum}, { "ReduceSumSquare", ReduceSumSquare}, + { "Erf", Eltwise }, }; Type TypeFromName(const std::string type) { @@ -170,7 +171,7 @@ MKLDNNNode::MKLDNNNode(const InferenceEngine::CNNLayerPtr& layer, const mkldnn:: CaselessEq()(layer->type, "output") || CaselessEq()(layer->type, "reorder") || CaselessEq()(layer->type, "convert"))) { - THROW_IE_EXCEPTION << "Inappropriate layer type: " << layer->type << " name: " << layer->name; + IE_THROW() << "Inappropriate layer type: " << layer->type << " name: " << layer->name; } } @@ -186,7 +187,7 @@ MKLDNNNode::MKLDNNNode(const InferenceEngine::CNNLayerPtr& layer, const mkldnn:: implPriorities.push_back(parse_impl_name(str)); if (implPriorities[implPriorities.size() - 1] == impl_desc_type::unknown && str != "cpu:unknown") - THROW_IE_EXCEPTION << "Unsupported CPU implementation " << str << " for node " << getName(); + IE_THROW() << "Unsupported CPU implementation " << str << " for node " << getName(); } } @@ -316,7 +317,7 @@ void MKLDNNNode::selectPreferPrimitiveDescriptor(const std::vectorgetConfig().inConfs.size(); i++) { auto parentEdge = getParentEdgeAt(i); @@ -440,31 +441,31 @@ std::string MKLDNNNode::getPrimitiveDescriptorType() { const MKLDNNEdgePtr MKLDNNNode::getParentEdgeAt(size_t idx) const { if (idx >= parentEdges.size()) - THROW_IE_EXCEPTION << "Node " << getName() << " contains less parent edges than " << idx; + IE_THROW() << "Node " << getName() << " contains less parent edges than " << idx; auto parentEdgePtr = parentEdges[idx].lock(); if (!parentEdgePtr) - THROW_IE_EXCEPTION << "Node " << getName() << " contains empty parent edge for index " << idx; + IE_THROW() << "Node " << getName() << " contains empty parent edge for index " << idx; return parentEdgePtr; } const MKLDNNEdgePtr MKLDNNNode::getChildEdgeAt(size_t idx) const { if (idx >= childEdges.size()) - THROW_IE_EXCEPTION << "Node " << getName() << " contains less child edges than " << idx; + IE_THROW() << "Node " << getName() << " contains less child edges than " << idx; auto childEdgePtr = childEdges[idx].lock(); if (!childEdgePtr) - THROW_IE_EXCEPTION << "Node " << getName() << " contains empty child edge for index " << idx; + IE_THROW() << "Node " << getName() << " contains empty child edge for index " << idx; return childEdgePtr; } const std::vector MKLDNNNode::getParentEdgesAtPort(size_t idx) const { if (idx >= inDims.size()) - THROW_IE_EXCEPTION << "Node " << getName() << " contains less input ports than " << idx; + IE_THROW() << "Node " << getName() << " contains less input ports than " << idx; std::vector res; for (auto &edge_w : parentEdges) { auto edge = edge_w.lock(); if (!edge) - THROW_IE_EXCEPTION << "Node " << getName() << " contains dead weak ptr"; + IE_THROW() << "Node " << getName() << " contains dead weak ptr"; if (edge->getOutputNum() == idx) res.push_back(edge); } return res; @@ -472,13 +473,13 @@ const std::vector MKLDNNNode::getParentEdgesAtPort(size_t idx) co const std::vector MKLDNNNode::getChildEdgesAtPort(size_t idx) const { if (idx >= outDims.size()) - THROW_IE_EXCEPTION << "Node " << getName() << " contains less output ports than " << idx; + IE_THROW() << "Node " << getName() << " contains less output ports than " << idx; std::vector res; for (auto &edge_w : childEdges) { auto edge = edge_w.lock(); if (!edge) - THROW_IE_EXCEPTION << "Node " << getName() << " contains dead weak ptr"; + IE_THROW() << "Node " << getName() << " contains dead weak ptr"; if (edge->getInputNum() == idx) res.push_back(edge); } return res; @@ -559,7 +560,7 @@ void MKLDNNNode::filterSupportedPrimitiveDescriptors() { while (itpd != supportedPrimitiveDescriptors.end()) { const auto &config = itpd->getConfig(); if (inputMemoryFormatsFilter.size() > config.inConfs.size() || outputMemoryFormatsFilter.size() > config.outConfs.size()) - THROW_IE_EXCEPTION << "Incorrect number of input or output memory formats"; + IE_THROW() << "Incorrect number of input or output memory formats"; bool isSuitableDesc = true; for (int i = 0; i < inputMemoryFormatsFilter.size(); i++) { @@ -625,7 +626,7 @@ void MKLDNNNode::initDescriptor(const InferenceEngine::LayerConfig &config) { impl_desc_type impl_type = parse_impl_name(itpd.impl_info_str()); if (selected_count == selectedPrimitiveDescriptorIndex) { if (impl_type != selectedPD->getImplementationType()) { - THROW_IE_EXCEPTION << "Cannot get the original layer configuration!"; + IE_THROW() << "Cannot get the original layer configuration!"; } rightConfig = cfg; } @@ -648,13 +649,13 @@ void MKLDNNNode::initDescriptor(const InferenceEngine::LayerConfig &config) { for (size_t i = 0; i < selectedConfig.inConfs.size(); i++) { if (selectedConfig.inConfs[i].desc.getLayout() != InferenceEngine::Layout::ANY && !MKLDNNExtensionUtils::initTensorsAreEqual(selectedConfig.inConfs[i].desc, config.inConfs[i].desc)) - THROW_IE_EXCEPTION << "Incorrect descriptor for node: " << getName(); + IE_THROW() << "Incorrect descriptor for node: " << getName(); } for (size_t i = 0; i < selectedConfig.outConfs.size(); i++) { if (selectedConfig.outConfs[i].desc.getLayout() != InferenceEngine::Layout::ANY && !MKLDNNExtensionUtils::initTensorsAreEqual(selectedConfig.outConfs[i].desc, config.outConfs[i].desc)) - THROW_IE_EXCEPTION << "Incorrect descriptor for node: " << getName(); + IE_THROW() << "Incorrect descriptor for node: " << getName(); } rightConfig = config; } @@ -665,17 +666,17 @@ void MKLDNNNode::initDescriptor(const InferenceEngine::LayerConfig &config) { InferenceEngine::Blob::Ptr MKLDNNNode::createInternalBlob(InferenceEngine::SizeVector dims, bool weights, bool isGrouped) { auto checkSize = [](size_t dst_size, size_t src_size) { if (dst_size < src_size) { - THROW_IE_EXCEPTION << "Cannot create internal buffer. Buffer can be overrun."; + IE_THROW() << "Cannot create internal buffer. Buffer can be overrun."; } }; auto * wLayer = dynamic_cast(getCnnLayer().get()); if (wLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot get weightable layer for node " << getName() << "."; + IE_THROW() << "Cannot get weightable layer for node " << getName() << "."; InferenceEngine::Blob::Ptr blb = weights ? wLayer->_weights : wLayer->_biases; if (blb == nullptr) - THROW_IE_EXCEPTION << "Cannot get internal blob layer for node " << getName() << "."; + IE_THROW() << "Cannot get internal blob layer for node " << getName() << "."; auto intLayout = getWeightsLayoutByDims(dims, isGrouped); @@ -689,12 +690,12 @@ InferenceEngine::Blob::Ptr MKLDNNNode::createInternalBlob(InferenceEngine::SizeV for (const auto &merged : getMergeWith()) { wLayer = dynamic_cast(merged->getCnnLayer().get()); if (wLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert merged weightable layer for node " + IE_THROW() << "Cannot convert merged weightable layer for node " << getName() << "."; blb = weights ? wLayer->_weights : wLayer->_biases; if (blb == nullptr) - THROW_IE_EXCEPTION << "Cannot get internal blob layer for node " << getName() << "."; + IE_THROW() << "Cannot get internal blob layer for node " << getName() << "."; offset += blb->byteSize(); checkSize(intBuffSize, offset); cpu_memcpy_s(data, intBuffSize, blb->buffer(), blb->byteSize()); @@ -727,13 +728,13 @@ void MKLDNNNode::prepareMemory(const PrimitiveDescInfo *selected_pd, mkldnn::pri for (size_t i = 0; i < getChildEdges().size(); i++) { auto &dstMemPtr = getChildEdgeAt(i)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate for node " << getName() + IE_THROW() << "Destination memory didn't allocate for node " << getName() << " to node " << getChildEdgeAt(i)->getChild()->getName() << "."; } for (size_t i = 0; i < getParentEdges().size(); i++) { auto &srcMemPtr = getParentEdgeAt(i)->getMemoryPtr(); if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate for node " << getName() + IE_THROW() << "Destination memory didn't allocate for node " << getName() << " from node " << getParentEdgeAt(i)->getParent()->getName() << "."; } std::vector intDescs; @@ -766,7 +767,7 @@ void MKLDNNNode::prepareMemory(const PrimitiveDescInfo *selected_pd, mkldnn::pri + "_" + std::to_string(internalBlob->byteSize()) + "_" + std::to_string(data_hash); - ptr = weightCache->findOrCreate(string_hash, create); + ptr = *weightCache->findOrCreate(string_hash, create); } else { ptr = create(); } @@ -778,7 +779,7 @@ void MKLDNNNode::prepareMemory(const PrimitiveDescInfo *selected_pd, mkldnn::pri bool MKLDNNNode::isInplace() const { auto selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto config = selected_pd->getConfig(); for (auto &in : config.inConfs) if (in.inPlace >= 0) return true; @@ -910,7 +911,7 @@ InferenceEngine::TensorDesc MKLDNNNode::getConfiguredInputDesc(const InferenceEn int num = getParentEdgeAt(idx)->getInputNum(); auto *selectedPD = getParentEdgeAt(idx)->getParent()->getSelectedPrimitiveDescriptor(); if (!selectedPD) - THROW_IE_EXCEPTION << "Cannot get selected primitive descriptor for node: " << getParentEdgeAt(idx)->getParent()->getName(); + IE_THROW() << "Cannot get selected primitive descriptor for node: " << getParentEdgeAt(idx)->getParent()->getName(); if (selectedPD->getConfig().outConfs.size() <= num) num = 0; @@ -960,7 +961,7 @@ InferenceEngine::TensorDesc MKLDNNNode::getConfiguredOutputDesc(const InferenceE int num = getChildEdgeAt(idx)->getOutputNum(); auto *selectedPD = getChildEdgeAt(idx)->getChild()->getSelectedPrimitiveDescriptor(); if (!selectedPD) - THROW_IE_EXCEPTION << "Cannot get selected primitive descriptor for node: " << getChildEdgeAt(idx)->getChild()->getName(); + IE_THROW() << "Cannot get selected primitive descriptor for node: " << getChildEdgeAt(idx)->getChild()->getName(); if (selectedPD->getConfig().inConfs.size() <= num) num = 0; @@ -1005,7 +1006,7 @@ InferenceEngine::TensorDesc MKLDNNNode::getConfiguredOutputDesc(const InferenceE void MKLDNNNode::initOptimalPrimitiveDescriptor() { auto selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto config = selected_pd->getConfig(); if (!isInitConfig(config)) { for (size_t i = 0; i < config.inConfs.size(); i++) { @@ -1136,7 +1137,7 @@ Layout MKLDNNNode::getWeightsLayoutByDims(SizeVector dims, bool isGrouped) { } void MKLDNNNode::appendPostOps(mkldnn::post_ops& ops) { - THROW_IE_EXCEPTION << "Fusing of " << this->getType() << " operation is not implemented"; + IE_THROW() << "Fusing of " << this->getType() << " operation is not implemented"; } std::vector MKLDNNNode::getInputPrecisions() const { @@ -1200,7 +1201,7 @@ MKLDNNNode* MKLDNNNode::NodesFactory::create(const InferenceEngine::CNNLayerPtr& // WA-end if (!newNode) - THROW_IE_EXCEPTION << "Unsupported primitive of type: " << layer->type << " name: " << layer->name; + IE_THROW() << "Unsupported primitive of type: " << layer->type << " name: " << layer->name; return newNode; } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_node.h b/inference-engine/src/mkldnn_plugin/mkldnn_node.h index 20e606d443290b..83c45610cde678 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_node.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_node.h @@ -453,7 +453,7 @@ class MKLDNNNode : public InferenceEngine::details::no_copy { const PrimitiveDescInfo *selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set for node " << getName() << "."; + IE_THROW() << "Preferable primitive descriptor is not set for node " << getName() << "."; for (const auto& desc : descs) { auto itpd = desc.createPrimitiveDescriptorIterator(engine, attr); @@ -481,7 +481,7 @@ class MKLDNNNode : public InferenceEngine::details::no_copy { } } - THROW_IE_EXCEPTION << "Primitive descriptor was not found for node " << getName() << "."; + IE_THROW() << "Primitive descriptor was not found for node " << getName() << "."; } static void invertVectorCopyUtoI(const InferenceEngine::PropertyVector& src, std::vector& dst) { diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp index ab02a25060d712..fcbcdb33423cc2 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp @@ -35,9 +35,11 @@ #include #include "transformations/common_optimizations/convert_quantize_dequantize.hpp" #include +#include #include #include #include +#include #include #include #include @@ -57,6 +59,7 @@ #include #include #include +#include #include #include #include @@ -66,12 +69,15 @@ #include #include #include +#include #include #include #include -#include +#include +#include +#include #include #include #include @@ -99,6 +105,7 @@ Engine::Engine() { } Engine::~Engine() { + ExecutorManager::getInstance()->clear("CPU"); ExecutorManager::getInstance()->clear("CPUStreamsExecutor"); ExecutorManager::getInstance()->clear("CPUCallbackExecutor"); } @@ -114,12 +121,11 @@ static void Transformation(CNNNetwork& clonedNetwork, const Config& conf) { ngraph::pass::low_precision::LowPrecisionTransformer::isFunctionQuantized(nGraphFunc); if (useLpt) { manager.register_pass( - std::vector{ ngraph::element::i8, ngraph::element::u8 }); + std::vector{ ngraph::element::i8, ngraph::element::u8, ngraph::element::i4, ngraph::element::u4 }); } // WA: ConvertPriorBox must be executed before the 1st ConstantFolding pass manager.register_pass(); - manager.register_pass(); manager.register_pass(); manager.register_pass(); manager.register_pass(); @@ -140,8 +146,11 @@ static void Transformation(CNNNetwork& clonedNetwork, const Config& conf) { {ngraph::element::i16, ngraph::element::i32}, {ngraph::element::u16, ngraph::element::i32}, {ngraph::element::u32, ngraph::element::i32}, + {ngraph::element::f64, ngraph::element::f32}, {ngraph::element::f16, ngraph::element::f32}, {ngraph::element::boolean, ngraph::element::u8}, + {ngraph::element::i4, ngraph::element::i8}, + {ngraph::element::u4, ngraph::element::u8}, }; for (auto &precision : convert_precision_list) { @@ -192,6 +201,42 @@ static void Transformation(CNNNetwork& clonedNetwork, const Config& conf) { return false; }; + // Sequences supported by the plugin shouldn't be converted to TensorIterator. + // sequence_length input is not supported in all Sequences, so if is_seq_len_provided() == true, we + // should always convert to TensorIterator. + // RNN/GRU/LSTM Sequences are supported with clip == 0, and with default activations. + auto isSequencePrimitiveSupported = [](const_node_ptr &node) -> bool { + const auto& data = node->input(0); + const auto& data_pshape = data.get_partial_shape(); + if (data_pshape.rank().is_static() && data_pshape.rank().get_length() > 1 && !data_pshape[1].is_static()) + return false; + auto max_seq_len = data.get_shape().at(1); + if (const auto &rnn_seq = std::dynamic_pointer_cast(node)) { + return rnn_seq->get_clip() == 0.0f && + !ngraph::op::util::is_seq_len_provided(rnn_seq->get_input_node_shared_ptr(2), + max_seq_len); + } else if (const auto &gru_seq = std::dynamic_pointer_cast( + node)) { + return gru_seq->get_clip() == 0.0f && + gru_seq->get_activations() == std::vector{"sigmoid", "tanh"} && + !ngraph::op::util::is_seq_len_provided(gru_seq->get_input_node_shared_ptr(2), + max_seq_len); + } else if (const auto &lstm_seq = std::dynamic_pointer_cast( + node)) { + return lstm_seq->get_clip() == 0.0f && + lstm_seq->get_activations() == std::vector{"sigmoid", "tanh", "tanh"} && + !ngraph::op::util::is_seq_len_provided(lstm_seq->get_input_node_shared_ptr(3), + max_seq_len); + } + return false; + }; + + pass_config->set_callback( + [isSequencePrimitiveSupported](const_node_ptr &node) -> bool { + return isSequencePrimitiveSupported(node); + }); + pass_config->set_callback( [isCellPrimitiveSupported](const_node_ptr &node) -> bool { @@ -216,8 +261,14 @@ static void Transformation(CNNNetwork& clonedNetwork, const Config& conf) { return MKLDNNMVNNode::checkAxesSuitability(node); }); + pass_config->set_callback( + [](const_node_ptr &node) -> bool { + return node->input_value(0).get_partial_shape().rank().get_length() > 5; + }); + // List of enabled/disabled transformations pass_config->disable(); + pass_config->disable(); pass_config->disable(); pass_config->disable(); pass_config->disable(); @@ -227,6 +278,7 @@ static void Transformation(CNNNetwork& clonedNetwork, const Config& conf) { pass_config->disable(); pass_config->disable(); pass_config->disable(); + pass_config->disable(); pass_config->enable(); @@ -245,6 +297,15 @@ static void Transformation(CNNNetwork& clonedNetwork, const Config& conf) { using namespace ngraph::pass::low_precision; if (useLpt) { OV_ITT_SCOPED_TASK(MKLDNNPlugin::itt::domains::MKLDNN_LT, "LowPrecisionTransformations"); + + ngraph::pass::Manager manager; + auto lptPrerequisites = manager.register_pass(); + const std::vector supportedTypes = { ngraph::element::i8, ngraph::element::u8 }; + lptPrerequisites->add_matcher(supportedTypes); + lptPrerequisites->add_matcher(supportedTypes); + lptPrerequisites->add_matcher(); + manager.run_passes(nGraphFunc); + auto params = LayerTransformation::Params( true, // updatePrecisions LayerTransformation::QuantizedTensorAlignment::UpdateLevel, // quantizedTensorAlignmentOnActivations @@ -331,7 +392,7 @@ Engine::LoadExeNetworkImpl(const InferenceEngine::CNNNetwork &network, const std input_precision != InferenceEngine::Precision::BOOL && input_precision != InferenceEngine::Precision::I64 && input_precision != InferenceEngine::Precision::U64) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str + IE_THROW(NotImplemented) << "Input image format " << input_precision << " is not supported yet..."; } } @@ -367,6 +428,7 @@ Engine::LoadExeNetworkImpl(const InferenceEngine::CNNNetwork &network, const std NetPass::ConvertPrecision(implNetworkWrapper, Precision::I64, Precision::I32); NetPass::ConvertPrecision(implNetworkWrapper, Precision::U64, Precision::I32); NetPass::ConvertPrecision(implNetworkWrapper, Precision::U32, Precision::I32); + NetPass::ConvertPrecision(implNetworkWrapper, Precision::FP64, Precision::FP32); NetPass::ConvertPrecision(implNetworkWrapper, Precision::FP16, Precision::FP32); NetPass::ConvertPrecision(implNetworkWrapper, Precision::BOOL, Precision::U8); NetPass::ConvertPrecision(implNetworkWrapper, Precision::U16, Precision::I32); @@ -388,7 +450,7 @@ Parameter Engine::GetConfig(const std::string& name, const std::mapsecond; } else { - THROW_IE_EXCEPTION << "Unsupported config key " << name; + IE_THROW() << "Unsupported config key " << name; } return result; } @@ -464,7 +526,7 @@ Parameter Engine::GetMetric(const std::string& name, const std::map range = std::make_tuple(1, parallel_get_max_threads()); IE_SET_METRIC_RETURN(RANGE_FOR_STREAMS, range); } else { - THROW_IE_EXCEPTION << "Unsupported metric key " << name; + IE_THROW() << "Unsupported metric key " << name; } } @@ -499,7 +561,7 @@ QueryNetworkResult Engine::QueryNetwork(const CNNNetwork& network, const std::ma std::unique_ptr ptr; try { ptr.reset(MKLDNNNode::factory().create(*itLayer, {mkldnn::engine::kind::cpu, 0}, extensionManager, fake_w_cache)); - } catch (InferenceEngine::details::InferenceEngineException&) { + } catch (InferenceEngine::Exception&) { return false; } return true; @@ -555,7 +617,7 @@ QueryNetworkResult Engine::QueryNetwork(const CNNNetwork& network, const std::ma // if we can create and have not thrown exception, then layer is supported std::unique_ptr (MKLDNNNode::factory().create(*i, eng, extensionManager, fake_w_cache)); res.supportedLayersMap.insert({ (*i)->name, GetName() }); - } catch (InferenceEngine::details::InferenceEngineException&) { + } catch (InferenceEngine::Exception&) { } i++; } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_plugin.h b/inference-engine/src/mkldnn_plugin/mkldnn_plugin.h index 028d5238be2385..228a495a0bbcc4 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_plugin.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_plugin.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,7 +19,7 @@ namespace MKLDNNPlugin { class Engine : public InferenceEngine::InferencePluginInternal { public: Engine(); - ~Engine() override; + ~Engine(); InferenceEngine::ExecutableNetworkInternal::Ptr LoadExeNetworkImpl(const InferenceEngine::CNNNetwork &network, diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_primitive.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_primitive.cpp index 37781e960e8283..abc1ef36434274 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_primitive.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_primitive.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_primitive.h b/inference-engine/src/mkldnn_plugin/mkldnn_primitive.h index e2c84835bb2f13..d2b9fd6ec273d6 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_primitive.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_primitive.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,6 @@ #include #include #include -#include
namespace MKLDNNPlugin { diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_selective_build.h b/inference-engine/src/mkldnn_plugin/mkldnn_selective_build.h index 69d2462a32a48c..0b981c2889444c 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_selective_build.h +++ b/inference-engine/src/mkldnn_plugin/mkldnn_selective_build.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.cpp index bf4e94f8000d22..967d0e49a03d9f 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,6 +11,66 @@ namespace MKLDNNPlugin { const SimpleDataHash MKLDNNWeightsSharing::simpleCRC; +MKLDNNWeightsSharing::MKLDNNSharedMemory::MKLDNNSharedMemory( + std::unique_lock && lock, + const MKLDNNMemoryInfo::Ptr & memory, + MKLDNNMemoryPtr newPtr) + : lock(std::move(lock)) + , memory(memory) + , newPtr(newPtr) +{} + +MKLDNNWeightsSharing::MKLDNNSharedMemory::operator MKLDNNMemoryPtr() const { + return memory->sharedMemory.lock(); +} + +bool MKLDNNWeightsSharing::MKLDNNSharedMemory::isValid() const { + return memory->valid; +} + +void MKLDNNWeightsSharing::MKLDNNSharedMemory::valid(bool b) { + memory->valid = b; +} + +MKLDNNWeightsSharing::MKLDNNSharedMemory::Ptr MKLDNNWeightsSharing::findOrCreate( + const std::string& key, + std::function create, + bool valid) { + std::unique_lock lock(guard); + auto found = sharedWeights.find(key); + + MKLDNNMemoryInfo::Ptr ptr; + MKLDNNMemoryPtr newPtr; + + if (found == sharedWeights.end() + || !(ptr = found->second) + || ptr->sharedMemory.expired()) { + newPtr = create(); + ptr = std::make_shared(newPtr, valid); + sharedWeights[key] = ptr; + } + + return std::make_shared(ptr->valid + ? std::unique_lock(ptr->guard, std::defer_lock) + : std::unique_lock(ptr->guard), ptr, newPtr); +} + +MKLDNNWeightsSharing::MKLDNNSharedMemory::Ptr MKLDNNWeightsSharing::get(const std::string& key) const { + std::unique_lock lock(guard); + auto found = sharedWeights.find(key); + + MKLDNNMemoryInfo::Ptr ptr; + + if (found == sharedWeights.end() + || !(ptr = found->second) + || ptr->sharedMemory.expired()) + IE_THROW() << "Unknown shared memory with key " << key; + + return std::make_shared(ptr->valid + ? std::unique_lock(ptr->guard, std::defer_lock) + : std::unique_lock(ptr->guard), ptr); +} + NumaNodesWeights::NumaNodesWeights() { for (auto numa_id : InferenceEngine::getAvailableNUMANodes()) _cache_map[numa_id] = std::make_shared(); @@ -19,14 +79,14 @@ NumaNodesWeights::NumaNodesWeights() { MKLDNNWeightsSharing::Ptr& NumaNodesWeights::operator[](int numa_id) { auto found = _cache_map.find(numa_id); if (found == _cache_map.end()) - THROW_IE_EXCEPTION << "Unknown numa node id " << numa_id; + IE_THROW() << "Unknown numa node id " << numa_id; return found->second; } const MKLDNNWeightsSharing::Ptr& NumaNodesWeights::operator[](int numa_id) const { auto found = _cache_map.find(numa_id); if (found == _cache_map.end()) - THROW_IE_EXCEPTION << "Unknown numa node id " << numa_id; + IE_THROW() << "Unknown numa node id " << numa_id; return found->second; } diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.hpp b/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.hpp index 5a406b401ff366..92c20c36651349 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.hpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_weights_cache.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -52,25 +52,51 @@ class SimpleDataHash { * Is a thread safe */ class MKLDNNWeightsSharing { + struct MKLDNNMemoryInfo { + typedef std::shared_ptr Ptr; + + MKLDNNMemoryInfo(MKLDNNMemoryPtr memoryPtr, bool valid) + : sharedMemory(memoryPtr) + , valid(valid) + {} + + std::mutex guard; + std::weak_ptr sharedMemory; + bool valid; + }; + public: typedef std::shared_ptr Ptr; - MKLDNNMemoryPtr findOrCreate(const std::string& name_hash, - std::function create) { - std::unique_lock lock(guard); - auto found = sharedWeights.find(name_hash); - - MKLDNNMemoryPtr ptr; - if (found == sharedWeights.end() || !(ptr = found->second.lock())) { - ptr = create(); - sharedWeights[name_hash] = ptr; - } - return ptr; - } + + class MKLDNNSharedMemory { + public: + typedef std::shared_ptr Ptr; + + MKLDNNSharedMemory(std::unique_lock && lock, + const MKLDNNMemoryInfo::Ptr & memory, + MKLDNNMemoryPtr newPtr = nullptr); + + operator MKLDNNMemoryPtr() const; + bool isValid() const; + void valid(bool b); + + private: + std::unique_lock lock; + MKLDNNMemoryInfo::Ptr memory; + MKLDNNMemoryPtr newPtr; + }; + + MKLDNNSharedMemory::Ptr findOrCreate(const std::string& key, + std::function create, + bool valid = true); + + MKLDNNSharedMemory::Ptr get(const std::string& key) const; + static const SimpleDataHash& GetHashFunc () { return simpleCRC; } protected: - std::unordered_map> sharedWeights; - std::mutex guard; + mutable std::mutex guard; + std::unordered_map sharedWeights; static const SimpleDataHash simpleCRC; }; diff --git a/inference-engine/src/mkldnn_plugin/nodes/argmax.cpp b/inference-engine/src/mkldnn_plugin/nodes/argmax.cpp index 63fa62a58074e8..515bd288a13fe1 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/argmax.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/argmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ class ArgMaxImpl: public ExtLayerBase { explicit ArgMaxImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 1 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; conf.out_max_val_ = layer->GetParamAsBool("out_max_val", false); conf.top_k_ = layer->GetParamAsInt("top_k"); @@ -28,7 +28,7 @@ class ArgMaxImpl: public ExtLayerBase { std::stoi(layer->params.at("axis")) :0; addConfig(layer, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.cpp b/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.cpp index 032c93cf8ac4b5..2c07f2d42de46c 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.hpp b/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.hpp index cfef2ba2116461..d447e1a4e06ced 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.hpp +++ b/inference-engine/src/mkldnn_plugin/nodes/argmax_imp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/base.hpp b/inference-engine/src/mkldnn_plugin/nodes/base.hpp index 8205c52acc860f..7720ad36762ca9 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/base.hpp +++ b/inference-engine/src/mkldnn_plugin/nodes/base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -77,10 +77,10 @@ class ExtLayerBase: public ILayerExecImpl { LayerConfig config; if (in_l.size() != layer->insData.size()) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << layer->name << ". Expected " << layer->insData.size() + IE_THROW() << "Incorrect number of input edges for layer " << layer->name << ". Expected " << layer->insData.size() << " but layout specification provided for " << in_l.size(); if (out_l.size() != layer->outData.size()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << layer->name << ". Expected " << layer->outData.size() + IE_THROW() << "Incorrect number of output edges for layer " << layer->name << ". Expected " << layer->outData.size() << " but layout specification provided for " << out_l.size(); // Fill tensor parameters into config @@ -90,7 +90,7 @@ class ExtLayerBase: public ILayerExecImpl { return 0; return (a + b - 1) / b; }; - if (!data) THROW_IE_EXCEPTION << "Cannot get input data!"; + if (!data) IE_THROW() << "Cannot get input data!"; DataConfig dataConfig; dataConfig.inPlace = conf.inplace; @@ -107,7 +107,7 @@ class ExtLayerBase: public ILayerExecImpl { if (conf.layout == ConfLayout::BLK8 || conf.layout == ConfLayout::BLK16) { if (data_dims.size() < 4 || data_dims.size() > 5) - THROW_IE_EXCEPTION << "Inapplicable blocking layout." + IE_THROW() << "Inapplicable blocking layout." << "Tensor should be 4D or 5D."; int blk_size = conf.layout == ConfLayout::BLK8 ? 8 : 16; @@ -172,7 +172,7 @@ class ImplFactory : public ILayerImplFactory { #define REG_FACTORY_FOR(__prim, __type) \ void __prim ## __type(MKLDNNExtensions * extInstance) { \ using namespace MKLDNNPlugin; \ - extInstance->layersFactory.registerNodeIfRequired(MKLDNNPlugin, __type, OV_CC_TOSTRING(__type), ImplFactory<__prim>); \ + extInstance->layersFactory.registerNodeIfRequired(MKLDNNPlugin, __type, OV_PP_TOSTRING(__type), ImplFactory<__prim>); \ } } // namespace Cpu diff --git a/inference-engine/src/mkldnn_plugin/nodes/batch_to_space.cpp b/inference-engine/src/mkldnn_plugin/nodes/batch_to_space.cpp index 60e15726fc9a04..40df2a1e35d85a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/batch_to_space.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/batch_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,27 +21,27 @@ class BatchToSpaceImpl: public ExtLayerBase { try { const auto batchToSpaceLayer = dynamic_cast(layer); if (!batchToSpaceLayer) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; if (batchToSpaceLayer->insData.size() != 4 || batchToSpaceLayer->outData.size() != 1) - THROW_IE_EXCEPTION << "'" << batchToSpaceLayer->name << "' layer has incorrect number of input or output edges!"; + IE_THROW() << "'" << batchToSpaceLayer->name << "' layer has incorrect number of input or output edges!"; auto inData = batchToSpaceLayer->insData[0].lock(); if (inData == nullptr) - THROW_IE_EXCEPTION << "'" << batchToSpaceLayer->name << "' layer has nullable input data"; + IE_THROW() << "'" << batchToSpaceLayer->name << "' layer has nullable input data"; if (inData->getLayout() != NCHW && inData->getLayout() != NCDHW) - THROW_IE_EXCEPTION << "'" << batchToSpaceLayer->name << "' layer has unsupported layout: " << inData->getLayout(); + IE_THROW() << "'" << batchToSpaceLayer->name << "' layer has unsupported layout: " << inData->getLayout(); const auto precision = inData->getTensorDesc().getPrecision(); const std::set supported_precision_sizes = {1, 2, 4, 8}; if (supported_precision_sizes.find(precision.size()) == supported_precision_sizes.end()) - THROW_IE_EXCEPTION << "'" << batchToSpaceLayer->name << "' layer has unsupported precision: " << precision.name(); + IE_THROW() << "'" << batchToSpaceLayer->name << "' layer has unsupported precision: " << precision.name(); const SizeVector& in_dims = inData->getTensorDesc().getDims(); const SizeVector& out_dims = layer->outData[0]->getTensorDesc().getDims(); if (in_dims[1] != out_dims[1]) - THROW_IE_EXCEPTION << "'" << batchToSpaceLayer->name << "' layer has different IN and OUT channels number"; + IE_THROW() << "'" << batchToSpaceLayer->name << "' layer has different IN and OUT channels number"; _block_shape = batchToSpaceLayer->_block_shape; _crops_begin = batchToSpaceLayer->_crops_begin; @@ -53,7 +53,7 @@ class BatchToSpaceImpl: public ExtLayerBase { for (int i = 0; i < batchToSpaceLayer->insData.size(); i++) { auto inData = batchToSpaceLayer->insData[i].lock(); if (inData == nullptr) - THROW_IE_EXCEPTION << "'" << batchToSpaceLayer->name << "' layer has nullable input data"; + IE_THROW() << "'" << batchToSpaceLayer->name << "' layer has nullable input data"; config.inConfs[i].desc = TensorDesc(precision, inData->getTensorDesc().getDims(), inData->getTensorDesc().getLayout()); @@ -66,7 +66,7 @@ class BatchToSpaceImpl: public ExtLayerBase { config.outConfs.push_back(outConfig); config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/broadcast.cpp b/inference-engine/src/mkldnn_plugin/nodes/broadcast.cpp index f975202b078c93..c4310e8ad02507 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/broadcast.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,14 +20,14 @@ class BroadcastImpl: public ExtLayerBase { explicit BroadcastImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; if (layer->insData.size() != 2) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; SizeVector shape_dims = layer->insData[BROADCAST_SHAPE].lock()->getTensorDesc().getDims(); if (shape_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Shape vector should be 1 dimension"; + IE_THROW() << layer->name << " Shape vector should be 1 dimension"; LayerConfig config; DataConfig dataConfig, shapeConfig; @@ -46,7 +46,7 @@ class BroadcastImpl: public ExtLayerBase { config.outConfs.push_back(outConfig); config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/bucketize.cpp b/inference-engine/src/mkldnn_plugin/nodes/bucketize.cpp index e27a1b83c279de..f9baeb4f4799cf 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/bucketize.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/bucketize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,7 +22,7 @@ class BucketizeImpl : public ExtLayerBase { explicit BucketizeImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 2 || layer->outData.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; } // check one attribute @@ -30,11 +30,11 @@ class BucketizeImpl : public ExtLayerBase { auto input = layer->insData[INPUT_TENSOR_PORT].lock(); if (!input) { - THROW_IE_EXCEPTION << "Missing input for " << layer->name << " layer"; + IE_THROW() << "Missing input for " << layer->name << " layer"; } auto boundaries = layer->insData[INPUT_BINS_PORT].lock(); if (!boundaries) { - THROW_IE_EXCEPTION << "Missing boundaries input for " << layer->name << " layer"; + IE_THROW() << "Missing boundaries input for " << layer->name << " layer"; } // check precisions for input and output tensors @@ -56,11 +56,11 @@ class BucketizeImpl : public ExtLayerBase { // check dimensions of input tensors SizeVector input_tensor_dims = input->getTensorDesc().getDims(); if (input_tensor_dims.size() < 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions of the input."; + IE_THROW() << layer->name << " Incorrect dimensions of the input."; } SizeVector input_bin_dims = boundaries->getTensorDesc().getDims(); if (input_bin_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions of the boundaries tensor."; + IE_THROW() << layer->name << " Incorrect dimensions of the boundaries tensor."; } if (input_bin_dims[0] != 0) { with_bins = true; @@ -73,7 +73,7 @@ class BucketizeImpl : public ExtLayerBase { { DataConfigurator(ConfLayout::PLN, input_precision), DataConfigurator(ConfLayout::PLN, boundaries_precision) }, { DataConfigurator(ConfLayout::PLN, output_precision) }); } - catch (InferenceEngine::details::InferenceEngineException &ex) { + catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.cpp b/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.cpp index 3ad00c96e7ef16..5b47b476b0a565 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -64,7 +64,7 @@ void cpu_convert(const void *srcPtr, void *dstPtr, Precision srcPrc, Precision d using namespace MKLDNNPlugin; if (srcPtr == nullptr || dstPtr == nullptr) - THROW_IE_EXCEPTION << "cpu_convert has null data pointer"; + IE_THROW() << "cpu_convert has null data pointer"; if (srcPrc == dstPrc) { cpu_memcpy(dstPtr, srcPtr, size*dstPrc.size()); @@ -106,7 +106,7 @@ void cpu_convert(const void *srcPtr, void *dstPtr, Precision srcPrc, Precision d MKLDNN_CVT(BOOL, I64), MKLDNN_CVT(BOOL, FP32), MKLDNN_CVT(BOOL, BF16)); if (!ctx.converted) - THROW_IE_EXCEPTION << "cpu_convert can't convert from: " << srcPrc << " precision to: " << dstPrc; + IE_THROW() << "cpu_convert can't convert from: " << srcPrc << " precision to: " << dstPrc; } #undef MKLDNN_CVT diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.h b/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.h index 5ace2e7cd6a2ef..dd4ef59a38b1f2 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.h +++ b/inference-engine/src/mkldnn_plugin/nodes/common/cpu_convert.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/cpu_memcpy.h b/inference-engine/src/mkldnn_plugin/nodes/common/cpu_memcpy.h index eae2ac68508835..8241cc81e0b6d6 100755 --- a/inference-engine/src/mkldnn_plugin/nodes/common/cpu_memcpy.h +++ b/inference-engine/src/mkldnn_plugin/nodes/common/cpu_memcpy.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/defs.h b/inference-engine/src/mkldnn_plugin/nodes/common/defs.h index c93d1b34b470c8..f1b1688752d222 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/defs.h +++ b/inference-engine/src/mkldnn_plugin/nodes/common/defs.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/fp16_utils.h b/inference-engine/src/mkldnn_plugin/nodes/common/fp16_utils.h index f522df8128c3e1..c25992f4ac3974 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/fp16_utils.h +++ b/inference-engine/src/mkldnn_plugin/nodes/common/fp16_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/softmax.cpp b/inference-engine/src/mkldnn_plugin/nodes/common/softmax.cpp index 3bb1e83e4b23b7..0eeb2efb8b04fa 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/softmax.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/common/softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -232,7 +232,7 @@ SoftmaxGeneric::SoftmaxGeneric(Precision inpPrc, Precision outPrc) : input_prec(inpPrc), output_prec(outPrc) { if (Precision::BF16 == output_prec) { if (!mayiuse(avx512_core)) { - THROW_IE_EXCEPTION << "SoftmaxGeneric doesn't support BF16 precision on this target."; + IE_THROW() << "SoftmaxGeneric doesn't support BF16 precision on this target."; } } @@ -308,7 +308,7 @@ void SoftmaxGeneric::execute(const uint8_t *src_data, uint8_t *dst_data, int B, auto bf16_dst_data = reinterpret_cast(dst_data); calculate(float_src_data, bf16_dst_data, B, C, H, W); } else { - THROW_IE_EXCEPTION << "Unsupported output precision: " << output_prec.name(); + IE_THROW() << "Unsupported output precision: " << output_prec.name(); } } else if (Precision::BF16 == input_prec) { auto bf16_src_data = reinterpret_cast(src_data); @@ -319,9 +319,9 @@ void SoftmaxGeneric::execute(const uint8_t *src_data, uint8_t *dst_data, int B, auto bf16_dst_data = reinterpret_cast(dst_data); calculate(bf16_dst_data, bf16_dst_data, B, C, H, W); } else { - THROW_IE_EXCEPTION << "Unsupported output precision: " << output_prec.name(); + IE_THROW() << "Unsupported output precision: " << output_prec.name(); } } else { - THROW_IE_EXCEPTION << "Unsupported input precision: " << input_prec.name(); + IE_THROW() << "Unsupported input precision: " << input_prec.name(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/softmax.h b/inference-engine/src/mkldnn_plugin/nodes/common/softmax.h index 53046ed406ecfc..ef25a436645e8f 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/softmax.h +++ b/inference-engine/src/mkldnn_plugin/nodes/common/softmax.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.cpp b/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.cpp index d19a71898c2b9b..0467d205fb71b1 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -47,7 +47,7 @@ class ChannelBlockedCreator : public TensorDescCreator { ChannelBlockedCreator(size_t blockSize) : _blockSize(blockSize) {} virtual InferenceEngine::TensorDesc createDesc(const InferenceEngine::Precision& precision, const InferenceEngine::SizeVector& srcDims) const { if (srcDims.size() < 2) { - THROW_IE_EXCEPTION << "Can't create blocked tensor descriptor!"; + IE_THROW() << "Can't create blocked tensor descriptor!"; } SizeVector order(srcDims.size()); @@ -91,7 +91,7 @@ TensorDescCreator::makeFilteredRange(const CreatorsMap &map, unsigned int rank) std::pair TensorDescCreator::makeFilteredRange(const CreatorsMap& map, unsigned rank, const std::vector& supportedTypes) { - size_t bitMask = 0ul; + unsigned bitMask = 0ul; for (auto& item : supportedTypes) { bitMask |= 1 << static_cast(item); } diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.h b/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.h index a3938a06583214..4fda57fcb2fe85 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.h +++ b/inference-engine/src/mkldnn_plugin/nodes/common/tensor_desc_creator.h @@ -1,10 +1,11 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once #include +#include namespace MKLDNNPlugin { diff --git a/inference-engine/src/mkldnn_plugin/nodes/common/uni_simd.h b/inference-engine/src/mkldnn_plugin/nodes/common/uni_simd.h index bd55bb862945ff..7b98bc70dd4073 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/common/uni_simd.h +++ b/inference-engine/src/mkldnn_plugin/nodes/common/uni_simd.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder.cpp b/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder.cpp index ae8d5466e53a2c..294d4185672c00 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder.cpp @@ -17,23 +17,23 @@ class CTCGreedyDecoderImpl: public ExtLayerBase { explicit CTCGreedyDecoderImpl(const CNNLayer* layer) : mergeRepeated_(true) { std::string errPrefix = "CTCGreedyDecoder layer with name '" + layer->name + "' "; if (layer->insData.size() != 2) - THROW_IE_EXCEPTION << errPrefix << "has invalid number of input edges: " << layer->insData.size(); + IE_THROW() << errPrefix << "has invalid number of input edges: " << layer->insData.size(); if (layer->outData.size() != 1) - THROW_IE_EXCEPTION << errPrefix << "has invalid number of outputs edges: " << layer->outData.size(); + IE_THROW() << errPrefix << "has invalid number of outputs edges: " << layer->outData.size(); auto inData = layer->insData[DATA_INDEX].lock(); auto sequenceLenData = layer->insData[SEQUENCE_LENGTH_INDEX].lock(); if (!inData || !sequenceLenData) - THROW_IE_EXCEPTION << errPrefix << "has nullable inputs."; + IE_THROW() << errPrefix << "has nullable inputs."; if (inData->getTensorDesc().getDims()[0] != sequenceLenData->getTensorDesc().getDims()[0] && inData->getTensorDesc().getDims()[1] != sequenceLenData->getTensorDesc().getDims()[1]) - THROW_IE_EXCEPTION << errPrefix << "has invalid input shapes."; + IE_THROW() << errPrefix << "has invalid input shapes."; if (inData->getTensorDesc().getPrecision() != Precision::FP32 && inData->getTensorDesc().getPrecision() != Precision::BF16) - THROW_IE_EXCEPTION << errPrefix << "has unsupported 'data' input precision: " << inData->getTensorDesc().getPrecision(); + IE_THROW() << errPrefix << "has unsupported 'data' input precision: " << inData->getTensorDesc().getPrecision(); if (sequenceLenData->getTensorDesc().getPrecision() != Precision::FP32 && inData->getTensorDesc().getPrecision() != Precision::BF16) - THROW_IE_EXCEPTION << errPrefix << "has unsupported 'sequence_length' input precision: " << sequenceLenData->getTensorDesc().getPrecision(); + IE_THROW() << errPrefix << "has unsupported 'sequence_length' input precision: " << sequenceLenData->getTensorDesc().getPrecision(); std::vector inputConfigs{{ConfLayout::PLN, Precision::FP32}, {ConfLayout::PLN, Precision::FP32}}; std::vector outputConfigs{{ConfLayout::PLN, Precision::FP32}}; diff --git a/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder_seq_len.cpp b/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder_seq_len.cpp index 95d35f4d9b73ca..80b044a1ec7bed 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder_seq_len.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/ctc_greedy_decoder_seq_len.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,32 +17,32 @@ class CTCGreedyDecoderSeqLenImpl: public ExtLayerBase { explicit CTCGreedyDecoderSeqLenImpl(const CNNLayer* layer) : mergeRepeated_(true) { std::string errPrefix = "CTCGreedyDecoderSeqLen layer with name '" + layer->name + "' "; if (layer->insData.size() < 2 || layer->insData.size() > 3) - THROW_IE_EXCEPTION << errPrefix << "has invalid number of input edges: " << layer->insData.size(); + IE_THROW() << errPrefix << "has invalid number of input edges: " << layer->insData.size(); if (layer->outData.size() != 2) - THROW_IE_EXCEPTION << errPrefix << "has invalid number of outputs edges: " << layer->outData.size(); + IE_THROW() << errPrefix << "has invalid number of outputs edges: " << layer->outData.size(); auto inData = layer->insData[DATA_INDEX].lock(); auto sequenceLenData = layer->insData[SEQUENCE_LENGTH_INDEX].lock(); if (!inData || !sequenceLenData) - THROW_IE_EXCEPTION << errPrefix << "has nullable inputs."; + IE_THROW() << errPrefix << "has nullable inputs."; if (inData->getTensorDesc().getDims()[0] != sequenceLenData->getTensorDesc().getDims()[0]) - THROW_IE_EXCEPTION << errPrefix << "has invalid input shapes."; + IE_THROW() << errPrefix << "has invalid input shapes."; if (inData->getTensorDesc().getPrecision() != Precision::FP32 && inData->getTensorDesc().getPrecision() != Precision::BF16) - THROW_IE_EXCEPTION << errPrefix << "has unsupported 'data' input precision: " << inData->getTensorDesc().getPrecision(); + IE_THROW() << errPrefix << "has unsupported 'data' input precision: " << inData->getTensorDesc().getPrecision(); if (sequenceLenData->getTensorDesc().getPrecision() != Precision::I32 && sequenceLenData->getTensorDesc().getPrecision() != Precision::I64) - THROW_IE_EXCEPTION << errPrefix << "has unsupported 'sequence_length' input precision: " << sequenceLenData->getTensorDesc().getPrecision(); + IE_THROW() << errPrefix << "has unsupported 'sequence_length' input precision: " << sequenceLenData->getTensorDesc().getPrecision(); std::vector inputConfigs{{ConfLayout::PLN, Precision::FP32}, {ConfLayout::PLN, Precision::I32}}; if (layer->insData.size() > BLANK_INDEX) { auto blankIndexData = layer->insData[BLANK_INDEX].lock(); if (!blankIndexData) - THROW_IE_EXCEPTION << errPrefix << "has nullable inputs."; + IE_THROW() << errPrefix << "has nullable inputs."; if (blankIndexData->getTensorDesc().getPrecision() != Precision::I32 && blankIndexData->getTensorDesc().getPrecision() != Precision::I64) - THROW_IE_EXCEPTION << errPrefix << "has unsupported 'blank_index' input precision: " << blankIndexData->getTensorDesc().getPrecision(); + IE_THROW() << errPrefix << "has unsupported 'blank_index' input precision: " << blankIndexData->getTensorDesc().getPrecision(); inputConfigs.push_back({ConfLayout::PLN, Precision::I32}); } std::vector outputConfigs{{ConfLayout::PLN, Precision::I32}, {ConfLayout::PLN, Precision::I32}}; diff --git a/inference-engine/src/mkldnn_plugin/nodes/ctc_loss.cpp b/inference-engine/src/mkldnn_plugin/nodes/ctc_loss.cpp index 6ac058e22c977f..52fd41816c6305 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/ctc_loss.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/ctc_loss.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ class CTCLossImpl : public ExtLayerBase { _logPrefix = std::string("CTCLoss layer with name '") + layer->name + "'"; if (layer->insData.size() != 4 && layer->insData.size() != 5) - THROW_IE_EXCEPTION << _logPrefix << " has invalid inputs number."; + IE_THROW() << _logPrefix << " has invalid inputs number."; _ctcMergeRepeated = layer->GetParamAsBool("ctc_merge_repeated", true); _preprocessCollapseRepeated = layer->GetParamAsBool("preprocess_collapse_repeated", false); @@ -26,7 +26,7 @@ class CTCLossImpl : public ExtLayerBase { auto logitsData = layer->insData[0].lock(); if (logitsData == nullptr) - THROW_IE_EXCEPTION << _logPrefix << " has nullable logits data"; + IE_THROW() << _logPrefix << " has nullable logits data"; LayerConfig config; config.inConfs.resize(layer->insData.size()); @@ -37,7 +37,7 @@ class CTCLossImpl : public ExtLayerBase { for (int i = 1; i < layer->insData.size(); i++) { auto data = layer->insData[i].lock(); if (data == nullptr) - THROW_IE_EXCEPTION << _logPrefix << " has nullable input data at " << i; + IE_THROW() << _logPrefix << " has nullable input data at " << i; config.inConfs[i].desc = TensorDesc(intPrecision, data->getTensorDesc().getDims(), TensorDesc::getLayoutByDims(data->getTensorDesc().getDims())); diff --git a/inference-engine/src/mkldnn_plugin/nodes/cum_sum.cpp b/inference-engine/src/mkldnn_plugin/nodes/cum_sum.cpp index fccbefe1e34c46..e2348212f83a76 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/cum_sum.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/cum_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,12 +27,12 @@ class CumSumImpl: public ExtLayerBase { try { layerName = layer->name; if ((layer->insData.size() != numOfInputs && layer->insData.size() != (numOfInputs - 1)) || layer->outData.size() != 1) - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' has incorrect number of input/output edges!"; + IE_THROW() << "CumSum layer with name '" << layerName << "' has incorrect number of input/output edges!"; const auto &dataTensor = layer->insData[CUM_SUM_DATA].lock()->getTensorDesc(); const auto &dataShape = dataTensor.getDims(); if (dataShape.size() < 1) { - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' doesn't support 'data' input tensor with rank: " << dataShape.size(); + IE_THROW() << "CumSum layer with name '" << layerName << "' doesn't support 'data' input tensor with rank: " << dataShape.size(); } numOfDims = dataShape.size(); @@ -42,21 +42,21 @@ class CumSumImpl: public ExtLayerBase { const auto& dataPrecision = dataTensor.getPrecision(); if (dataPrecision != Precision::I8 && dataPrecision != Precision::U8 && dataPrecision != Precision::I16 && dataPrecision != Precision::I32 && dataPrecision != Precision::FP32 && dataPrecision != Precision::I64 && dataPrecision != Precision::U64 && dataPrecision != Precision::BF16) - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' has unsupported 'data' input precision: " << dataPrecision.name(); + IE_THROW() << "CumSum layer with name '" << layerName << "' has unsupported 'data' input precision: " << dataPrecision.name(); if (layer->insData.size() == numOfInputs) { const auto& axisTensor = layer->insData[AXIS].lock()->getTensorDesc(); const auto& axisTensorPrec = layer->insData[AXIS].lock()->getTensorDesc().getPrecision(); if (axisTensorPrec != Precision::I32 && axisTensorPrec != Precision::I64) - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' has unsupported 'axis' input precision: " << axisTensorPrec.name(); + IE_THROW() << "CumSum layer with name '" << layerName << "' has unsupported 'axis' input precision: " << axisTensorPrec.name(); const auto axisTensorRank = axisTensor.getDims().size(); if (axisTensorRank != 0) - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' doesn't support 'axis' input tensor with rank: " << axisTensorRank; + IE_THROW() << "CumSum layer with name '" << layerName << "' doesn't support 'axis' input tensor with rank: " << axisTensorRank; } if (dataShape != layer->outData[0]->getTensorDesc().getDims()) - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' has different 'data' input and output dimensions"; + IE_THROW() << "CumSum layer with name '" << layerName << "' has different 'data' input and output dimensions"; shape = dataShape; @@ -87,7 +87,7 @@ class CumSumImpl: public ExtLayerBase { config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -205,7 +205,7 @@ class CumSumImpl: public ExtLayerBase { void parallelItInit(size_t start, std::vector& counters, const std::vector& iterationRange) { auto itCounter = counters.rbegin(); auto itWork = iterationRange.rbegin(); - while (itCounter != counters.rend()) { + while (itCounter != counters.rend() && itWork != iterationRange.rend()) { *itCounter = start % *itWork; start /= *itWork; ++itCounter; @@ -217,7 +217,7 @@ class CumSumImpl: public ExtLayerBase { auto itCounter = counters.rbegin(); auto itWork = iterationRange.rbegin(); - while (itCounter != counters.rend()) { + while (itCounter != counters.rend() && itWork != iterationRange.rend()) { *itCounter = (*itCounter + 1) % *itWork; if (*itCounter != 0) { break; @@ -251,11 +251,11 @@ class CumSumImpl: public ExtLayerBase { break; } default : { - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' doesn't support 'axis' input with precision: " << axisPrecision.name(); + IE_THROW() << "CumSum layer with name '" << layerName << "' doesn't support 'axis' input with precision: " << axisPrecision.name(); } } if (axisValueFromBlob < -dataShapeSize || axisValueFromBlob > dataShapeSize - 1) - THROW_IE_EXCEPTION << "CumSum layer with name '" << layerName << "' has axis with a value out of range: " << axisValueFromBlob; + IE_THROW() << "CumSum layer with name '" << layerName << "' has axis with a value out of range: " << axisValueFromBlob; return axisValueFromBlob >= 0 ? axisValueFromBlob : (axisValueFromBlob + dataShapeSize); } diff --git a/inference-engine/src/mkldnn_plugin/nodes/depth_to_space.cpp b/inference-engine/src/mkldnn_plugin/nodes/depth_to_space.cpp index 42809f21026221..6c91ca30b7fe3a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/depth_to_space.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,18 +25,18 @@ class DepthToSpaceImpl: public ExtLayerBase { explicit DepthToSpaceImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << "' has incorrect number of input/output edges"; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << "' has incorrect number of input/output edges"; inDims = layer->insData[0].lock()->getTensorDesc().getDims(); if (inDims.size() < 3) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << "' has incorrect number of input dimensions"; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << "' has incorrect number of input dimensions"; if (inDims.size() > 5) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << "' doesn't support dimensions with rank greater than 5"; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << "' doesn't support dimensions with rank greater than 5"; SizeVector outDims = layer->outData[0]->getTensorDesc().getDims(); if (inDims.size() != outDims.size()) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << "' has incorrect number of input/output dimensions"; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << "' has incorrect number of input/output dimensions"; std::string modeString = layer->GetParamAsString("mode"); if (modeString == "blocks_first") { @@ -44,31 +44,31 @@ class DepthToSpaceImpl: public ExtLayerBase { } else if (modeString == "depth_first") { mode = DepthToSpaceMode::DEPTH_FIRST; } else { - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << "' doesn't support mode: " << modeString; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << "' doesn't support mode: " << modeString; } blockSize = layer->GetParamAsUInt("block_size", 1); if (blockSize == 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect blockSize parameter is zero!"; + IE_THROW() << layer->name << " Incorrect blockSize parameter is zero!"; size_t numSpatialDims = inDims.size() - 2; blockStep = static_cast(std::pow(blockSize, numSpatialDims)); if (inDims[1] % blockStep) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << + IE_THROW() << "DepthToSpace layer with name '" << layer->name << "' has block_size parameter which is incompatible with input tensor channels dimension size"; if (inDims[1] / blockStep != outDims[1]) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << " has incompatible input/output channels"; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << " has incompatible input/output channels"; for (int i = 0; i < numSpatialDims; i++) { if (inDims[i + 2] * blockSize != outDims[i + 2]) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << " has incompatible spatial dims"; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << " has incompatible spatial dims"; } auto computePrc = layer->insData[0].lock()->getTensorDesc().getPrecision(); const std::set supported_precision_sizes = {1, 2, 4, 8}; if (supported_precision_sizes.find(computePrc.size()) == supported_precision_sizes.end()) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << " doesn't support precision: " << computePrc.name(); + IE_THROW() << "DepthToSpace layer with name '" << layer->name << " doesn't support precision: " << computePrc.name(); if (inDims.size() == 4 || inDims.size() == 5) { @@ -96,7 +96,7 @@ class DepthToSpaceImpl: public ExtLayerBase { config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/detectionoutput.cpp b/inference-engine/src/mkldnn_plugin/nodes/detectionoutput.cpp index c53d55ffc4a9a8..780bceb8770984 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/detectionoutput.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/detectionoutput.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,9 +27,9 @@ class DetectionOutputImpl: public ExtLayerBase { explicit DetectionOutputImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 3 && layer->insData.size() != 5) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << layer->name; + IE_THROW() << "Incorrect number of input edges for layer " << layer->name; if (layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << layer->name; + IE_THROW() << "Incorrect number of output edges for layer " << layer->name; _num_classes = layer->GetParamAsInt("num_classes"); _background_label_id = layer->GetParamAsInt("background_label_id", 0); @@ -61,15 +61,15 @@ class DetectionOutputImpl: public ExtLayerBase { _priors_batches = layer->insData[idx_priors].lock()->getDims().front() != 1; if (_num_priors * _num_loc_classes * 4 != static_cast(layer->insData[idx_location].lock()->getDims()[1])) - THROW_IE_EXCEPTION << "Number of priors must match number of location predictions (" + IE_THROW() << "Number of priors must match number of location predictions (" << _num_priors * _num_loc_classes * 4 << " vs " << layer->insData[idx_location].lock()->getDims()[1] << ")"; if (_num_priors * _num_classes != static_cast(layer->insData[idx_confidence].lock()->getTensorDesc().getDims().back())) - THROW_IE_EXCEPTION << "Number of priors must match number of confidence predictions."; + IE_THROW() << "Number of priors must match number of confidence predictions."; if (_decrease_label_id && _background_label_id != 0) - THROW_IE_EXCEPTION << "Cannot use decrease_label_id and background_label_id parameter simultaneously."; + IE_THROW() << "Cannot use decrease_label_id and background_label_id parameter simultaneously."; _num = static_cast(layer->insData[idx_confidence].lock()->getTensorDesc().getDims()[0]); @@ -114,7 +114,7 @@ class DetectionOutputImpl: public ExtLayerBase { std::vector in_data_conf(layer->insData.size(), DataConfigurator(ConfLayout::PLN, Precision::FP32)); addConfig(layer, in_data_conf, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/detectionoutput_onnx.cpp b/inference-engine/src/mkldnn_plugin/nodes/detectionoutput_onnx.cpp index c1f75770669e68..1b96434b2b94ec 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/detectionoutput_onnx.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/detectionoutput_onnx.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -273,7 +273,7 @@ class ExperimentalDetectronDetectionOutputImpl: public ExtLayerBase { config.outConfs.push_back(dataS); config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_offset_sum.cpp b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_offset_sum.cpp index fa11061f598ef0..90b4dcd4d27b1e 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_offset_sum.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_offset_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,15 +18,15 @@ class EmbeddingBagOffsetsSumImpl: public MKLDNNEmbeddingBagSum { MKLDNNEmbeddingBagSum(layer, 3lu, 1lu, 4lu, 3lu) { auto indicesData = layer->insData[INDICES_IDX].lock(); if (indicesData == nullptr) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has nullable indices data."; + IE_THROW() << "'" << layer->name << "' layer has nullable indices data."; if (indicesData->getTensorDesc().getDims().size() != 1) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has indices data with invalid shape."; + IE_THROW() << "'" << layer->name << "' layer has indices data with invalid shape."; auto offsetsData = layer->insData[OFFSETS_IDX].lock(); if (offsetsData == nullptr) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has invalid offsets data."; + IE_THROW() << "'" << layer->name << "' layer has invalid offsets data."; if (offsetsData->getTensorDesc().getDims().size() != 1) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer's offsets data has invalid shape."; + IE_THROW() << "'" << layer->name << "' layer's offsets data has invalid shape."; _indicesLen = indicesData->getTensorDesc().getDims()[0]; _offsetsLen = offsetsData->getTensorDesc().getDims()[0]; diff --git a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_packed_sum.cpp b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_packed_sum.cpp index 9e36ee970b3cb5..bcf6b29a23770a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_packed_sum.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_packed_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,9 +15,9 @@ class EmbeddingBagPackedSumImpl: public MKLDNNEmbeddingBagSum { MKLDNNEmbeddingBagSum(layer, 2lu, 1lu, 2lu, 3lu) { auto indicesData = layer->insData[INDICES_IDX].lock(); if (indicesData == nullptr) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has nullable indices data."; + IE_THROW() << "'" << layer->name << "' layer has nullable indices data."; if (indicesData->getTensorDesc().getDims().size() != 2) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has indices data with invalid shape."; + IE_THROW() << "'" << layer->name << "' layer has indices data with invalid shape."; _indices = std::vector>( indicesData->getTensorDesc().getDims()[0], @@ -46,7 +46,7 @@ class EmbeddingBagPackedSumImpl: public MKLDNNEmbeddingBagSum { void getIndices(size_t embIndex, const size_t*& indices, size_t& size, size_t& weightsIdx, bool& withWeights) override { if (embIndex >= _indices.size()) - THROW_IE_EXCEPTION << "Invalid embedding bag index."; + IE_THROW() << "Invalid embedding bag index."; withWeights = true; diff --git a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.cpp b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.cpp index dace4c5195c72f..e3fa7f2047fb9a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -29,25 +29,25 @@ MKLDNNEmbeddingBagSum::MKLDNNEmbeddingBagSum( try { std::string logPrefix = std::string("Layer EmbeddingBagSum with name '") + layer->name + "' "; if (layer->insData.size() < requiredInputNum || layer->outData.size() != 1) - THROW_IE_EXCEPTION << logPrefix << "has incorrect number of input or output edges!"; + IE_THROW() << logPrefix << "has incorrect number of input or output edges!"; _layerName = layer->name; auto inData = layer->insData[0].lock(); auto indicesData = layer->insData[INDICES_IDX].lock(); if (inData == nullptr || indicesData == nullptr) - THROW_IE_EXCEPTION << logPrefix << "has nullable input data."; + IE_THROW() << logPrefix << "has nullable input data."; auto dataPrecision = inData->getTensorDesc().getPrecision(); if (dataPrecision == Precision::BF16) dataPrecision = Precision::FP32; if (!supportedPrecisions.empty()) { if (supportedPrecisions.find(dataPrecision) == supportedPrecisions.end()) - THROW_IE_EXCEPTION << logPrefix << "has unsupported precision: " << dataPrecision.name(); + IE_THROW() << logPrefix << "has unsupported precision: " << dataPrecision.name(); } else { static const std::set defaultSupportedPrecisions = {Precision::FP32, Precision::I8, Precision::U8, Precision::I32}; if (defaultSupportedPrecisions.find(dataPrecision) == defaultSupportedPrecisions.end()) - THROW_IE_EXCEPTION << logPrefix << "has unsupported precision: " << dataPrecision.name(); + IE_THROW() << logPrefix << "has unsupported precision: " << dataPrecision.name(); } if (layer->insData.size() > PER_SAMPLE_WEIGHTS_IDX) @@ -55,9 +55,9 @@ MKLDNNEmbeddingBagSum::MKLDNNEmbeddingBagSum( if (_withWeights) { auto weightsData = layer->insData[PER_SAMPLE_WEIGHTS_IDX].lock(); if (weightsData == nullptr) - THROW_IE_EXCEPTION << logPrefix << "has nullable weights data"; + IE_THROW() << logPrefix << "has nullable weights data"; if (weightsData->getTensorDesc().getDims() != indicesData->getTensorDesc().getDims()) - THROW_IE_EXCEPTION << logPrefix << "must have equal shapes for indices and per_sample_weights inputs."; + IE_THROW() << logPrefix << "must have equal shapes for indices and per_sample_weights inputs."; } LayerConfig config; @@ -65,7 +65,7 @@ MKLDNNEmbeddingBagSum::MKLDNNEmbeddingBagSum( for (int i = 0; i < layer->insData.size(); i++) { auto data = layer->insData[i].lock(); if (data == nullptr) - THROW_IE_EXCEPTION << logPrefix << "has nullable input data"; + IE_THROW() << logPrefix << "has nullable input data"; auto prc = data->getTensorDesc().getPrecision(); if (prc == Precision::BF16) prc = Precision::FP32; @@ -89,7 +89,7 @@ MKLDNNEmbeddingBagSum::MKLDNNEmbeddingBagSum( for (size_t i = 1lu; i < inDataDims.size(); i++) { _embDepth *= inDataDims[i]; } - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -165,7 +165,7 @@ void MKLDNNEmbeddingBagSum::processData( size_t inIdx = 0lu; if (indices[inIdx] >= inDataDims[0]) - THROW_IE_EXCEPTION << "EmbeddingBagSum layer '" << _layerName + IE_THROW() << "EmbeddingBagSum layer '" << _layerName << "' has invalid embedding bag index: " << indices[inIdx]; size_t srcIndex = indices[inIdx] * _embDepth; @@ -182,7 +182,7 @@ void MKLDNNEmbeddingBagSum::processData( for (inIdx = 1lu; inIdx < indicesSize; inIdx++) { if (indices[inIdx] >= inDataDims[0]) - THROW_IE_EXCEPTION << "EmbeddingBagSum layer '" << _layerName + IE_THROW() << "EmbeddingBagSum layer '" << _layerName << "' has invalid embedding bag index: " << indices[inIdx]; size_t srcIndex = indices[inIdx] * _embDepth; diff --git a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.hpp b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.hpp index ca23d37c8e10d9..85b625810af0a1 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.hpp +++ b/inference-engine/src/mkldnn_plugin/nodes/embedding_bag_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/embedding_segments_sum.cpp b/inference-engine/src/mkldnn_plugin/nodes/embedding_segments_sum.cpp index 66953d2466e9dc..26c70824a88202 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/embedding_segments_sum.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/embedding_segments_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,21 +16,21 @@ class EmbeddingSegmentsSumImpl: public MKLDNNEmbeddingBagSum { std::string errPrefix = std::string("EmbeddingSegmentsSum layer with name '") + _layerName + "' "; auto indicesData = layer->insData[INDICES_IDX].lock(); if (indicesData == nullptr) - THROW_IE_EXCEPTION << errPrefix << "has nullable indices data."; + IE_THROW() << errPrefix << "has nullable indices data."; if (indicesData->getTensorDesc().getDims().size() != 1) - THROW_IE_EXCEPTION << errPrefix << "has indices data with invalid shape: " + IE_THROW() << errPrefix << "has indices data with invalid shape: " << indicesData->getTensorDesc().getDims().size(); auto segmentIdData = layer->insData[SEGMENT_ID_IDX].lock(); if (segmentIdData == nullptr) - THROW_IE_EXCEPTION << errPrefix << "has invalid segmentID data."; + IE_THROW() << errPrefix << "has invalid segmentID data."; if (segmentIdData->getTensorDesc().getDims().size() != 1) - THROW_IE_EXCEPTION << errPrefix << "has invalid segmentID data shape: " + IE_THROW() << errPrefix << "has invalid segmentID data shape: " << segmentIdData->getTensorDesc().getDims().size(); auto numSegmentData = layer->insData[NUM_SEGMENTS_IDX].lock(); if (numSegmentData == nullptr) - THROW_IE_EXCEPTION << errPrefix << "has nullable numSegmentID data."; + IE_THROW() << errPrefix << "has nullable numSegmentID data."; if (_supportedIndicesTypeSize.find(indicesData->getTensorDesc().getPrecision().size()) == _supportedIndicesTypeSize.end() @@ -38,7 +38,7 @@ class EmbeddingSegmentsSumImpl: public MKLDNNEmbeddingBagSum { == _supportedIndicesTypeSize.end() || _supportedIndicesTypeSize.find(numSegmentData->getTensorDesc().getPrecision().size()) == _supportedIndicesTypeSize.end()) - THROW_IE_EXCEPTION << errPrefix << "has unsupported input data type."; + IE_THROW() << errPrefix << "has unsupported input data type."; _indices = std::vector(indicesData->getTensorDesc().getDims()[0], 0lu); _segmentIds = std::vector(segmentIdData->getTensorDesc().getDims()[0], 0lu); @@ -90,7 +90,7 @@ class EmbeddingSegmentsSumImpl: public MKLDNNEmbeddingBagSum { void getIndices(size_t embIndex, const size_t*& indices, size_t& size, size_t& weightsIdx, bool& withWeight) override { if (embIndex >= _numSegments) - THROW_IE_EXCEPTION << "Invalid embedding bag index."; + IE_THROW() << "Invalid embedding bag index."; indices = nullptr; size = 0lu; diff --git a/inference-engine/src/mkldnn_plugin/nodes/extract_image_patches.cpp b/inference-engine/src/mkldnn_plugin/nodes/extract_image_patches.cpp index 92f83a2e7701dc..63370ab2b27b49 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/extract_image_patches.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/extract_image_patches.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,28 +25,28 @@ class ExtractImagePatchesImpl : public ExtLayerBase { try { std::string errorPrefix = std::string("Layer ") + layer->type + " with name '" + layer->name + "' "; if (details::CaselessEq()("ExtractImagePatchesLayer", layer->type)) - THROW_IE_EXCEPTION << errorPrefix << "is not an instance of ExtractImagePatchesLayer class"; + IE_THROW() << errorPrefix << "is not an instance of ExtractImagePatchesLayer class"; if (layer->insData.size() != 1 || layer->outData.size() != 1) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of input or output edges!" + IE_THROW() << errorPrefix << "has incorrect number of input or output edges!" << " Input: " << layer->insData.size() << "; Output: " << layer->outData.size(); auto inData = layer->insData[0].lock(); if (inData == nullptr) - THROW_IE_EXCEPTION << errorPrefix << "has nullable input data"; + IE_THROW() << errorPrefix << "has nullable input data"; if (inData->getTensorDesc().getDims().size() != 4) - THROW_IE_EXCEPTION << errorPrefix << "must have 4D input tensor. Actual: " << inData->getTensorDesc().getDims().size(); + IE_THROW() << errorPrefix << "must have 4D input tensor. Actual: " << inData->getTensorDesc().getDims().size(); if (layer->outData[0]->getTensorDesc().getDims().size() != 4) - THROW_IE_EXCEPTION << errorPrefix << "must have 4D output tensor. Actual: " << layer->outData[0]->getTensorDesc().getDims().size(); + IE_THROW() << errorPrefix << "must have 4D output tensor. Actual: " << layer->outData[0]->getTensorDesc().getDims().size(); if (inData->getLayout() != NCHW) - THROW_IE_EXCEPTION << errorPrefix << "has unsupported layout: " << inData->getLayout(); + IE_THROW() << errorPrefix << "has unsupported layout: " << inData->getLayout(); const auto precision = inData->getTensorDesc().getPrecision(); if (_supported_precisions_sizes.find(precision.size()) == _supported_precisions_sizes.end()) - THROW_IE_EXCEPTION << errorPrefix << "has unsupported precision: " << precision.name(); + IE_THROW() << errorPrefix << "has unsupported precision: " << precision.name(); auto ksizes = layer->GetParamAsUInts("sizes"); auto strides = layer->GetParamAsUInts("strides"); @@ -55,9 +55,9 @@ class ExtractImagePatchesImpl : public ExtLayerBase { if (!CaselessEq()(_auto_pad, "valid") && !CaselessEq()(_auto_pad, "same_upper") && !CaselessEq()(_auto_pad, "same_lower")) - THROW_IE_EXCEPTION << errorPrefix << "has unsupported auto_pad value: " << _auto_pad; + IE_THROW() << errorPrefix << "has unsupported auto_pad value: " << _auto_pad; if (ksizes.size() != 2 || strides.size() != 2 || rates.size() != 2) - THROW_IE_EXCEPTION << errorPrefix << "must have the following attributes with shape {2}: sizes, strides, rates."; + IE_THROW() << errorPrefix << "must have the following attributes with shape {2}: sizes, strides, rates."; _ksizes.clear(); _strides.clear(); @@ -83,7 +83,7 @@ class ExtractImagePatchesImpl : public ExtLayerBase { config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/fill.cpp b/inference-engine/src/mkldnn_plugin/nodes/fill.cpp index e3831b83ef1e36..08100f1b2c3592 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/fill.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/fill.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,18 +19,18 @@ class FillImpl: public ExtLayerBase { explicit FillImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; if (layer->insData.size() != 2) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; SizeVector fill_dims = layer->insData[FILL_DIMS].lock()->getTensorDesc().getDims(); if (fill_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Fill dimensions vector should be 1 dimension"; + IE_THROW() << layer->name << " Fill dimensions vector should be 1 dimension"; SizeVector value_dims = layer->insData[FILL_VALUE].lock()->getTensorDesc().getDims(); if (value_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Value scalar should have 1 dimension"; + IE_THROW() << layer->name << " Value scalar should have 1 dimension"; if (!(layer->insData[FILL_VALUE].lock()->getTensorDesc().getPrecision() == Precision::I32 && layer->outData[0]->getTensorDesc().getPrecision() == Precision::I32) && @@ -42,7 +42,7 @@ class FillImpl: public ExtLayerBase { addConfig(layer, { DataConfigurator(ConfLayout::PLN, Precision::I32), DataConfigurator(ConfLayout::PLN) }, { DataConfigurator(ConfLayout::PLN) }); } - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/gather.cpp b/inference-engine/src/mkldnn_plugin/nodes/gather.cpp index 24af01f77546c3..9479e1d2e5894b 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/gather.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,7 +23,7 @@ class GatherImpl: public ExtLayerBase { explicit GatherImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 2 || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; Precision inIdxPrecision = layer->insData[GATHER_INDEXES].lock()->getTensorDesc().getPrecision(); if (inIdxPrecision != Precision::FP32 && inIdxPrecision != Precision::I32 && inIdxPrecision != Precision::FP16) @@ -33,7 +33,7 @@ class GatherImpl: public ExtLayerBase { const SizeVector& dictionary_dims = layer->insData[GATHER_DICTIONARY].lock()->getTensorDesc().getDims(); if (dictionary_dims.size() == 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters dimension!"; + IE_THROW() << layer->name << " Incorrect input parameters dimension!"; // Dictionary must be at least rank axis + 1 IE_ASSERT(-static_cast(dictionary_dims.size()) <= axis && axis < static_cast(dictionary_dims.size())) << layer->name << " Incorrect input parameters dimensions and axis number!"; @@ -48,7 +48,7 @@ class GatherImpl: public ExtLayerBase { dataLength *= dictionary_dims[i]; if (dataLength == 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters dimension!"; + IE_THROW() << layer->name << " Incorrect input parameters dimension!"; LayerConfig config; DataConfig dataConfigIdx, dataConfigDct; @@ -68,7 +68,7 @@ class GatherImpl: public ExtLayerBase { config.outConfs.push_back(dataConfigOut); config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/gather_elements.cpp b/inference-engine/src/mkldnn_plugin/nodes/gather_elements.cpp index 5ef3f271f061dd..af01f51e4d2c71 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/gather_elements.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,28 +18,28 @@ class GatherElementsImpl: public ExtLayerBase { errorPrefix_ = std::string("Layer GatherElements with name '") + layer->name + "'"; if (layer->insData.size() != 2 || layer->outData.size() != 1) - THROW_IE_EXCEPTION << errorPrefix_ << " has invalid number of input/output edges."; + IE_THROW() << errorPrefix_ << " has invalid number of input/output edges."; auto inputData = layer->insData[dataIndex_].lock(); auto indices = layer->insData[indicesIndex_].lock(); if (!inputData || !indices) - THROW_IE_EXCEPTION << errorPrefix_ << " has nullable inputs."; + IE_THROW() << errorPrefix_ << " has nullable inputs."; const auto& dataDims = inputData->getTensorDesc().getDims(); const auto& indicesDims = indices->getTensorDesc().getDims(); if (dataDims.size() != indicesDims.size()) - THROW_IE_EXCEPTION << errorPrefix_ << " has invalid input shapes. Inputs 'Data' and 'Indices' must have equal ranks."; + IE_THROW() << errorPrefix_ << " has invalid input shapes. Inputs 'Data' and 'Indices' must have equal ranks."; Precision dataPrecision = inputData->getTensorDesc().getPrecision(); if (dataPrecision.size() != sizeof(PrecisionTrait::value_type) && dataPrecision.size() != sizeof(PrecisionTrait::value_type) && dataPrecision.size() != sizeof(PrecisionTrait::value_type)) { - THROW_IE_EXCEPTION << errorPrefix_ << " has unsupported 'inputData' input precision: " << dataPrecision; + IE_THROW() << errorPrefix_ << " has unsupported 'inputData' input precision: " << dataPrecision; } Precision indicesPrecision = indices->getTensorDesc().getPrecision(); if (indicesPrecision != Precision::I32) { - THROW_IE_EXCEPTION << errorPrefix_ << " has unsupported 'indices' input precision: " << indicesPrecision; + IE_THROW() << errorPrefix_ << " has unsupported 'indices' input precision: " << indicesPrecision; } dataTypeSize_ = dataPrecision.size(); @@ -48,7 +48,7 @@ class GatherElementsImpl: public ExtLayerBase { if (axis < 0) axis += dataDims.size(); if (axis < 0 || axis >= static_cast(dataDims.size())) - THROW_IE_EXCEPTION << errorPrefix_ << " has invalid axis attribute: " << axis; + IE_THROW() << errorPrefix_ << " has invalid axis attribute: " << axis; axis_ = axis; auto& outputData = layer->outData[0]; diff --git a/inference-engine/src/mkldnn_plugin/nodes/gather_nd.cpp b/inference-engine/src/mkldnn_plugin/nodes/gather_nd.cpp index d882f0b091f99d..61d80aecf23126 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/gather_nd.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,24 +19,24 @@ class GatherNDImpl: public ExtLayerBase { _errorPrefix = std::string("Layer GatherND with name '") + layer->name + "'"; if (layer->insData.size() != 2 || layer->outData.size() != 1) - THROW_IE_EXCEPTION << _errorPrefix << " has invalid number of input/output edges."; + IE_THROW() << _errorPrefix << " has invalid number of input/output edges."; auto data = layer->insData[_dataIndex].lock(); auto indices = layer->insData[_indicesIndex].lock(); if (!data || !indices) - THROW_IE_EXCEPTION << _errorPrefix << " has nullable inputs."; + IE_THROW() << _errorPrefix << " has nullable inputs."; Precision dataPrecision = data->getTensorDesc().getPrecision(); if (dataPrecision.size() != sizeof(PrecisionTrait::value_type) && dataPrecision.size() != sizeof(PrecisionTrait::value_type) && dataPrecision.size() != sizeof(PrecisionTrait::value_type)) { - THROW_IE_EXCEPTION << _errorPrefix << " has unsupported 'data' input precision: " << dataPrecision; + IE_THROW() << _errorPrefix << " has unsupported 'data' input precision: " << dataPrecision; } Precision indicesPrecision = indices->getTensorDesc().getPrecision(); if (indicesPrecision != Precision::I32 && indicesPrecision != Precision::I16 && indicesPrecision != Precision::U16 && indicesPrecision != Precision::I8 && indicesPrecision != Precision::U8) { - THROW_IE_EXCEPTION << _errorPrefix << " has unsupported 'indices' input precision: " << indicesPrecision; + IE_THROW() << _errorPrefix << " has unsupported 'indices' input precision: " << indicesPrecision; } _dataTypeSize = dataPrecision.size(); @@ -45,7 +45,7 @@ class GatherNDImpl: public ExtLayerBase { _batchDims = layer->GetParamAsInt("batch_dims", 0); if (_batchDims >= std::min(dataDims.size(), indicesDims.size())) - THROW_IE_EXCEPTION << _errorPrefix << " has invalid batch_dims attribute: " << _batchDims; + IE_THROW() << _errorPrefix << " has invalid batch_dims attribute: " << _batchDims; _batchNum = 1lu; for (size_t i = 0; i < _batchDims; i++) { @@ -55,7 +55,7 @@ class GatherNDImpl: public ExtLayerBase { _sliceRank = indicesDims[indicesDims.size() - 1]; _dataRank = dataDims.size() - _batchDims; if (_sliceRank > _dataRank) - THROW_IE_EXCEPTION << _errorPrefix << " has invalid inputs shapes."; + IE_THROW() << _errorPrefix << " has invalid inputs shapes."; _blockSize = 1; for (size_t i = _sliceRank + _batchDims; i < dataDims.size(); i++) { diff --git a/inference-engine/src/mkldnn_plugin/nodes/gather_tree.cpp b/inference-engine/src/mkldnn_plugin/nodes/gather_tree.cpp index 7a0b527c18af16..e7689b1209bfb0 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/gather_tree.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/gather_tree.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,12 +22,12 @@ class GatherTreeImpl: public ExtLayerBase { explicit GatherTreeImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges."; + IE_THROW() << layer->name << " Incorrect number of input/output edges."; if (layer->insData.size() != 4) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges."; + IE_THROW() << layer->name << " Incorrect number of input edges."; if (layer->outData.size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of output edges."; + IE_THROW() << layer->name << " Incorrect number of output edges."; precision = layer->insData[GATHER_TREE_STEP_IDX].lock()->getTensorDesc().getPrecision(); if (precision != Precision::FP32 && precision != Precision::I32) @@ -37,21 +37,21 @@ class GatherTreeImpl: public ExtLayerBase { layer->insData[GATHER_TREE_MAX_SEQ_LEN].lock()->getTensorDesc().getPrecision() != precision || layer->insData[GATHER_TREE_END_TOKEN].lock()->getTensorDesc().getPrecision() != precision || layer->outData[0]->getTensorDesc().getPrecision() != precision) - THROW_IE_EXCEPTION << layer->name << " Incorrect input/output data tensor precision. Should be the same."; + IE_THROW() << layer->name << " Incorrect input/output data tensor precision. Should be the same."; if (layer->insData[GATHER_TREE_STEP_IDX].lock()->getTensorDesc().getDims().size() != 3) - THROW_IE_EXCEPTION << layer->name << " step_idx vector should be 3 dimension"; + IE_THROW() << layer->name << " step_idx vector should be 3 dimension"; if (layer->insData[GATHER_TREE_PARENT_IDX].lock()->getTensorDesc().getDims().size() != 3) - THROW_IE_EXCEPTION << layer->name << " parent_idx vector should be 3 dimension"; + IE_THROW() << layer->name << " parent_idx vector should be 3 dimension"; if (layer->insData[GATHER_TREE_MAX_SEQ_LEN].lock()->getTensorDesc().getDims().size() != 1) - THROW_IE_EXCEPTION << layer->name << " max_seq_len vector should be 1 dimension"; + IE_THROW() << layer->name << " max_seq_len vector should be 1 dimension"; if (layer->insData[GATHER_TREE_END_TOKEN].lock()->getTensorDesc().getDims().size() != 1) - THROW_IE_EXCEPTION << layer->name << " end_token should be 1 dimension"; + IE_THROW() << layer->name << " end_token should be 1 dimension"; addConfig(layer, { DataConfigurator(ConfLayout::PLN, precision), DataConfigurator(ConfLayout::PLN, precision), DataConfigurator(ConfLayout::PLN, precision), DataConfigurator(ConfLayout::PLN, precision) }, { DataConfigurator(ConfLayout::PLN, precision) }); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/grn.cpp b/inference-engine/src/mkldnn_plugin/nodes/grn.cpp index d412ab38554653..d773ecddc81287 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/grn.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/grn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,12 +18,12 @@ class GRNImpl: public ExtLayerBase { explicit GRNImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 1 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; bias = layer->GetParamAsFloat("bias"); addConfig(layer, {{ConfLayout::PLN, false, 0, Precision::FP32}}, {{ConfLayout::PLN, false, 0, Precision::FP32}}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/list.cpp b/inference-engine/src/mkldnn_plugin/nodes/list.cpp index 22155f51f3e505..c4d7ce8970e01a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/list.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/list.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/list.hpp b/inference-engine/src/mkldnn_plugin/nodes/list.hpp index 7ab386313473c4..65275b91cf6664 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/list.hpp +++ b/inference-engine/src/mkldnn_plugin/nodes/list.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -83,10 +83,6 @@ class MKLDNNExtensions : public IExtension { void Unload() noexcept override {} - void Release() noexcept override { - delete this; - } - using LayersFactory = openvino::cc::Factory< std::string, InferenceEngine::ILayerImplFactory*(const InferenceEngine::CNNLayer*)>; diff --git a/inference-engine/src/mkldnn_plugin/nodes/list_tbl.hpp b/inference-engine/src/mkldnn_plugin/nodes/list_tbl.hpp index e42dba457bc3ef..a40e5b57ab8710 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/list_tbl.hpp +++ b/inference-engine/src/mkldnn_plugin/nodes/list_tbl.hpp @@ -23,7 +23,6 @@ MKLDNN_EXTENSION_NODE(MathImpl, Ceil); MKLDNN_EXTENSION_NODE(MathImpl, Ceiling); MKLDNN_EXTENSION_NODE(MathImpl, Cos); MKLDNN_EXTENSION_NODE(MathImpl, Cosh); -MKLDNN_EXTENSION_NODE(MathImpl, Erf); MKLDNN_EXTENSION_NODE(MathImpl, Floor); MKLDNN_EXTENSION_NODE(MathImpl, HardSigmoid); MKLDNN_EXTENSION_NODE(MathImpl, Log); diff --git a/inference-engine/src/mkldnn_plugin/nodes/log_softmax.cpp b/inference-engine/src/mkldnn_plugin/nodes/log_softmax.cpp index 01872db73d7510..0d22d29a0123a4 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/log_softmax.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/log_softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,10 +21,10 @@ class LogSoftmaxImpl: public ExtLayerBase { explicit LogSoftmaxImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; if (layer->insData.size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; SizeVector dims = layer->insData[0].lock()->getTensorDesc().getDims(); if (!dims.size()) @@ -34,7 +34,7 @@ class LogSoftmaxImpl: public ExtLayerBase { axis += dims.size(); if (dims.size() < static_cast((size_t)(1) + axis)) - THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters dimensions and axis number!"; + IE_THROW() << layer->name << " Incorrect input parameters dimensions and axis number!"; int j; for (j = dims.size() - 1; j >= 0; j--) { @@ -49,7 +49,7 @@ class LogSoftmaxImpl: public ExtLayerBase { reduced_axis_stride *= dims[i]; addConfig(layer, { { ConfLayout::PLN, false, 0, Precision::FP32 } }, { { ConfLayout::PLN, false, 0, Precision::FP32 } }); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/math.cpp b/inference-engine/src/mkldnn_plugin/nodes/math.cpp index 26d5939b98631f..77b512cccedbdb 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/math.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/math.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -46,13 +46,13 @@ class MathImpl: public ExtLayerBase { explicit MathImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; if (layer->insData.size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; if (layer->insData[0].lock()->getTensorDesc().getDims() != layer->outData[0]->getTensorDesc().getDims()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output dimensions!"; + IE_THROW() << layer->name << " Incorrect number of input/output dimensions!"; alpha = layer->GetParamAsFloat("alpha", 0.0f); beta = layer->GetParamAsFloat("beta", 0.0f); @@ -84,10 +84,10 @@ class MathImpl: public ExtLayerBase { else if (math_func == "Softsign") mathFunction = Math::Softsign; else if (math_func == "Tan") mathFunction = Math::Tan; else - THROW_IE_EXCEPTION << layer->name << " Incorrect Math layer type!"; + IE_THROW() << layer->name << " Incorrect Math layer type!"; addConfig(layer, {DataConfigurator(ConfLayout::PLN, false, 0, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, false, 0, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.cpp index fba50c10894518..b885f8c0c159ca 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,18 +32,18 @@ void MKLDNNBatchNormalizationNode::getSupportedDescriptors() { return; auto * bnLayer = dynamic_cast(getCnnLayer().get()); if (bnLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert batch normalization layer."; + IE_THROW() << "Cannot convert batch normalization layer."; if (bnLayer->_weights == nullptr || bnLayer->_biases == nullptr) { - THROW_IE_EXCEPTION << "Weights/biases are empty for layer: " << bnLayer->name + IE_THROW() << "Weights/biases are empty for layer: " << bnLayer->name << " used in MKLDNN node: " << getName() << "\n" << "Use the second argumemt of InferenceEngine::Core::ReadNetwork" << " to load them from .bin part of the IR"; } if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (!getChildEdges().size()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); eps = bnLayer->epsilon; @@ -51,7 +51,7 @@ void MKLDNNBatchNormalizationNode::getSupportedDescriptors() { size_t meansSize = MKLDNNDims(bnLayer->_biases->getTensorDesc().getDims()).size(); if (variancesSize != meansSize && variancesSize != 1) - THROW_IE_EXCEPTION << "Incorrect weights and biases sizes!"; + IE_THROW() << "Incorrect weights and biases sizes!"; internalBlobs.push_back(createInternalBlob(bnLayer->_weights->getTensorDesc().getDims(), true)); internalBlobs.push_back(createInternalBlob(bnLayer->_biases->getTensorDesc().getDims(), false)); @@ -59,12 +59,12 @@ void MKLDNNBatchNormalizationNode::getSupportedDescriptors() { auto parentOutDims = getParentEdgeAt(0)->getDims(); if (fusedWith.size() > 1) - THROW_IE_EXCEPTION << "BatchNorm fusion is possible with only one layer!"; + IE_THROW() << "BatchNorm fusion is possible with only one layer!"; for (const auto &node : fusedWith) { auto * scshLayer = dynamic_cast(node->getCnnLayer().get()); if (scshLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot cast to the ScaleShift layer to fuse with BatchNorm."; + IE_THROW() << "Cannot cast to the ScaleShift layer to fuse with BatchNorm."; size_t C = static_cast(getChildEdgeAt(0)->getDims()[1]); SizeVector mkldnn_weights = {2, C}; @@ -73,11 +73,11 @@ void MKLDNNBatchNormalizationNode::getSupportedDescriptors() { internalBlob->allocate(); float * data = internalBlob->buffer(); if (data == nullptr) - THROW_IE_EXCEPTION << "Cannot get memory!"; + IE_THROW() << "Cannot get memory!"; InferenceEngine::Blob::Ptr blb = scshLayer->_weights; if (blb == nullptr) - THROW_IE_EXCEPTION << "Cannot get weights blob for node " << getName() << "."; + IE_THROW() << "Cannot get weights blob for node " << getName() << "."; size_t weightsByteSize = blb->byteSize(); cpu_memcpy_s(data, internalBlob->byteSize(), blb->buffer(), weightsByteSize); @@ -88,7 +88,7 @@ void MKLDNNBatchNormalizationNode::getSupportedDescriptors() { memset(data, 0, weightsByteSize); } else { if (weightsByteSize != blb->byteSize()) - THROW_IE_EXCEPTION << "ScaleShift has incorrect weights!"; + IE_THROW() << "ScaleShift has incorrect weights!"; cpu_memcpy_s(data, internalBlob->byteSize(), blb->buffer(), weightsByteSize); } internalBlobs.push_back(internalBlob); @@ -188,14 +188,14 @@ void MKLDNNBatchNormalizationNode::createDescriptor(const std::vectorgetConfig(); if (isInitConfig(config)) return; if (config.inConfs.size() != 1 || config.outConfs.size() != 1 || (!isUninitTensorDesc(config.inConfs[0].desc) && !isUninitTensorDesc(config.outConfs[0].desc) && config.inConfs[0].desc != config.outConfs[0].desc)) - THROW_IE_EXCEPTION << "Layer " << getName() << " has incorrect selected config!"; + IE_THROW() << "Layer " << getName() << " has incorrect selected config!"; if (!isUninitTensorDesc(config.inConfs[0].desc)) { config.outConfs[0].desc = config.inConfs[0].desc; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.h index 5a662307a108f9..46d79425fb2154 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_batchnorm_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.cpp index eff423171a161f..68c554ceef0345 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -893,7 +893,7 @@ void MKLDNNBinaryConvolutionNode::getSupportedDescriptors() { auto* binConvLayer = dynamic_cast(getCnnLayer().get()); if (binConvLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert convolution layer."; + IE_THROW() << "Cannot convert convolution layer."; std::string errorPrefix = "BinaryConvolution layer with name '" + getName() + "' "; @@ -910,29 +910,29 @@ void MKLDNNBinaryConvolutionNode::getSupportedDescriptors() { group = binConvLayer->_group; if (group != 1) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support parameter group != 1"; + IE_THROW() << errorPrefix << "doesn't support parameter group != 1"; } if (getParentEdges().size() != expectedInputEdgesNum) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of input edges"; + IE_THROW() << errorPrefix << "has incorrect number of input edges"; if (getChildEdges().empty()) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of output edges"; + IE_THROW() << errorPrefix << "has incorrect number of output edges"; if (getParentEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); } if (getParentEdgeAt(1)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); } if (getChildEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); } if ((getParentEdgeAt(0)->getDims().ndims() < 4) || (getParentEdgeAt(0)->getDims().ndims() > 5)) { - THROW_IE_EXCEPTION << "Convolution layer. Unsupported mode. Only 4D and 5D blobs are supported as input."; + IE_THROW() << "Convolution layer. Unsupported mode. Only 4D and 5D blobs are supported as input."; } pad_value = binConvLayer->_pad_value; @@ -991,13 +991,17 @@ void MKLDNNBinaryConvolutionNode::initSupportedPrimitiveDescriptors() { } void MKLDNNBinaryConvolutionNode::createPrimitive() { - auto config = getSelectedPrimitiveDescriptor()->getConfig(); + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU binary convolution with name '" << getName() << "' doesn't have primitive descriptors."; + + auto config = selectedPrimitiveDescriptor->getConfig(); auto srcDims = config.inConfs[0].desc.getDims(); auto weiDims = config.inConfs[1].desc.getDims(); auto dstDims = config.outConfs[0].desc.getDims(); - auto implType = getSelectedPrimitiveDescriptor()->getImplementationType(); + auto implType = selectedPrimitiveDescriptor->getImplementationType(); jcp.ngroups = group; jcp.mb = srcDims[0]; @@ -1059,7 +1063,7 @@ void MKLDNNBinaryConvolutionNode::createPrimitive() { bool args_ok = jcp.l_pad <= jcp.ur_w && (r_pad_no_tail <= jcp.ur_w) && (jcp.l_pad <= jcp.ur_w) && IMPLICATION(jcp.kw > 7, (jcp.t_pad == 0 && jcp.l_pad == 0) || (jcp.stride_w == 1 && jcp.stride_h == 1)); if (!args_ok) - THROW_IE_EXCEPTION << "BinaryConvolution with name '" << getName() << "' has unsupported parameters"; + IE_THROW() << "BinaryConvolution with name '" << getName() << "' has unsupported parameters"; if (implType == impl_desc_type::jit_avx512) { bin_conv_kernel.reset(new jit_uni_bin_conv_kernel_f32(jcp, jcp_dw_conv, *attr.get())); @@ -1092,12 +1096,12 @@ bool MKLDNNBinaryConvolutionNode::canFuse(const MKLDNNNodePtr& node) const { if (node->getType() == Quantize) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize node " << node->getName(); + IE_THROW() << "Cannot get quantize node " << node->getName(); return quantizeNode->isBinarization(); } else if (node->getType() == Eltwise) { auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get eltwise node " << node->getName(); + IE_THROW() << "Cannot get eltwise node " << node->getName(); // Only one Add operation can be fused since it is implemented via output blob reuse if (eltwiseNode->isSum()) { @@ -1136,7 +1140,7 @@ void MKLDNNBinaryConvolutionNode::setPostOps(mkldnn::primitive_attr &attr) { continue; } - THROW_IE_EXCEPTION << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; + IE_THROW() << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; } attr.set_post_ops(ops); @@ -1295,7 +1299,11 @@ void MKLDNNBinaryConvolutionNode::execute(mkldnn::stream strm) { auto weights = reinterpret_cast(weightsMemory->GetPtr()); auto dst = reinterpret_cast(dstMemory->GetPtr()); - auto config = getSelectedPrimitiveDescriptor()->getConfig(); + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU binary convolution with name '" << getName() << "' doesn't have primitive descriptors."; + + auto config = selectedPrimitiveDescriptor->getConfig(); auto srcBlockDesc = config.inConfs[0].desc.getBlockingDesc(); std::vector srcStride(srcBlockDesc.getStrides().size()); @@ -1315,7 +1323,7 @@ void MKLDNNBinaryConvolutionNode::execute(mkldnn::stream strm) { dstStride[dstBlockDesc.getOrder()[i]] = dstBlockDesc.getStrides()[i]; } - auto implType = getSelectedPrimitiveDescriptor()->getImplementationType(); + auto implType = selectedPrimitiveDescriptor->getImplementationType(); if (implType != impl_desc_type::ref) { executeOptimized(src, weights, dst, srcStride, weightsStride, dstStride); } else { diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.h index 7848807f7f272e..60892aae208733 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_bin_conv_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_concat_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_concat_node.cpp index f5b295ed0ce709..63d51589ad4459 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_concat_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_concat_node.cpp @@ -9,7 +9,6 @@ #include #include -#include "details/ie_exception.hpp" #include #include "mkldnn.hpp" #include "mkldnn/iml_type_mapper.h" @@ -35,14 +34,14 @@ void MKLDNNConcatNode::getSupportedDescriptors() { auto * conLayer = dynamic_cast(getCnnLayer().get()); if (conLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert concat layer."; + IE_THROW() << "Cannot convert concat layer."; axis = conLayer->_axis; if (getParentEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); auto& firstParentDims = getParentEdgeAt(0)->getDims(); for (size_t i = 1; i < getParentEdges().size(); i++) { auto& dims = getParentEdgeAt(i)->getDims(); @@ -56,7 +55,7 @@ void MKLDNNConcatNode::getSupportedDescriptors() { } } if (incorrectDims || firstParentDims.ndims() == 0) { - THROW_IE_EXCEPTION << "Incorrect input dimensions for concat node " << getName(); + IE_THROW() << "Incorrect input dimensions for concat node " << getName(); } } } @@ -391,7 +390,7 @@ void MKLDNNConcatNode::selectOptimalPrimitiveDescriptor() { const auto &parent_config = parent_pdesc->getConfig(); int outputIndex = parentEdge->getInputNum(); if (outputIndex < 0 || outputIndex >= parent_config.outConfs.size()) - THROW_IE_EXCEPTION << "Cannot find index of output node"; + IE_THROW() << "Cannot find index of output node"; const auto &port_desc = parent_config.outConfs[outputIndex].desc; if (port_desc.getLayout() == Layout::ANY) continue; @@ -408,7 +407,7 @@ void MKLDNNConcatNode::selectOptimalPrimitiveDescriptor() { const auto &config = prim_desc->getConfig(); int inputIndex = childEdge->getOutputNum(); if (inputIndex < 0 || inputIndex >= config.inConfs.size()) - THROW_IE_EXCEPTION << "Cannot find index of output node"; + IE_THROW() << "Cannot find index of output node"; const auto &port_desc = config.inConfs[inputIndex].desc; if (port_desc.getLayout() == Layout::ANY) continue; @@ -472,9 +471,9 @@ void MKLDNNConcatNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; std::vector srcs_d; @@ -482,7 +481,7 @@ void MKLDNNConcatNode::createPrimitive() { auto& srcMemPtr = getParentEdgeAt(i)->getMemoryPtr(); if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) { auto parent = getParentEdgeAt(i)->getParent(); - THROW_IE_EXCEPTION << "Source memory from " << parent->getName() << " didn't allocate for node " + IE_THROW() << "Source memory from " << parent->getName() << " didn't allocate for node " << getName() << "."; } @@ -518,7 +517,7 @@ size_t MKLDNNConcatNode::inverseOrder(const SizeVector& order, size_t axis) { void MKLDNNConcatNode::initOptimalPrimitiveDescriptor() { auto selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; if (!isOptimized()) { auto config = selected_pd->getConfig(); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_conv_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_conv_node.cpp index 06d628bc2f877d..d6106b6816587c 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_conv_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_conv_node.cpp @@ -44,7 +44,7 @@ MKLDNNConvolutionNode::MKLDNNConvolutionNode(const InferenceEngine::CNNLayerPtr& auto ois = layer->blobs.find("oi-scale"); if ((getCnnLayer()->outData[0]->getPrecision() == Precision::I8 || getCnnLayer()->outData[0]->getPrecision() == Precision::U8) && ois == layer->blobs.end()) { - THROW_IE_EXCEPTION << "Internal error of graph quantization - mismatch of intermediate scales and next layer type for convolution " + IE_THROW() << "Internal error of graph quantization - mismatch of intermediate scales and next layer type for convolution " << getCnnLayer()->name; } if (ois != layer->blobs.end()) { @@ -69,7 +69,7 @@ mkldnn::memory::data_type MKLDNNConvolutionNode::precisionToDataType(InferenceEn bool MKLDNNConvolutionNode::canBeExecutedInInt8() { auto * convLayer = dynamic_cast(getCnnLayer().get()); if (convLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert convolution layer."; + IE_THROW() << "Cannot convert convolution layer."; if (baseInputsNumber > 1) { auto inputDataType = precisionToDataType(getCnnLayer()->insData[0].lock()->getPrecision()); @@ -106,7 +106,7 @@ void MKLDNNConvolutionNode::getSupportedDescriptors() { auto * convLayer = dynamic_cast(getCnnLayer().get()); if (convLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert convolution layer."; + IE_THROW() << "Cannot convert convolution layer."; withSum = false; int expectedInputEdgesNum = baseInputsNumber; @@ -156,18 +156,18 @@ void MKLDNNConvolutionNode::getSupportedDescriptors() { } if (getParentEdges().size() != expectedInputEdgesNum) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); if ((getParentEdgeAt(0)->getDims().ndims() < 4) || (getParentEdgeAt(0)->getDims().ndims() > 5)) { - THROW_IE_EXCEPTION << "Convolution layer. Unsupported mode. Only 4D and 5D blobs are supported as input."; + IE_THROW() << "Convolution layer. Unsupported mode. Only 4D and 5D blobs are supported as input."; } isMerged = (!getMergeWith().empty()); // grouped convolution was constructed from split->concat subgraph isGrouped = convLayer->_group != 1; // group info available from IR if (isMerged && isGrouped) - THROW_IE_EXCEPTION << "Convolution initialization. Group splitted mode are used together with direct group specification."; + IE_THROW() << "Convolution initialization. Group splitted mode are used together with direct group specification."; // default values. Can be replaced in next steps groupNum = convLayer->_group; @@ -301,6 +301,7 @@ void MKLDNNConvolutionNode::getSupportedDescriptors() { // bofore the fused convolution. This behaviour might be more correct regarding expected markup // of the graph but performance of first and second approaches might be different. Need to verify outputDataType = eltwisePrecision == Precision::BF16 ? memory::data_type::bf16 : memory::data_type::f32; + eltwisePrecision = MKLDNNExtensionUtils::DataTypeToIEPrecision(outputDataType); } } // correction for cases of FP32 input - we do not have FP32 convolution supported BF16 output @@ -419,31 +420,31 @@ void MKLDNNConvolutionNode::setPostOps(mkldnn::primitive_attr &attr, bool initWe PostOpsIntBlobMemory[blob_idx + 1]->FillZero(); PostOpsIntBlobMemory[blob_idx + 1]->SetData(biasPrc, memory::format_tag::x, biases->buffer(), dwBiasesDims.size() * MKLDNNExtensionUtils::sizeOfDataType(biasPrc)); - // rewrite onto append_dw_k3s2p1 -// ops.append_dw_conv(dw_conv_ih, dw_conv_iw, dw_conv_kernel[Y_AXIS], dw_conv_kernel[X_AXIS], -// dw_conv_strides[Y_AXIS], dw_conv_strides[X_AXIS], -// mkldnn::memory::convert_to_c(dw_conv_in_dt), -// (const float *) PostOpsIntBlobMemory[blob_idx]->GetData(), -// (const float *) PostOpsIntBlobMemory[blob_idx + 1]->GetData()); + // todo: rewrite onto append_dw_k3s2p1 + ops.append_dw_conv(dw_conv_ih, dw_conv_iw, dw_conv_kernel[Y_AXIS], dw_conv_kernel[X_AXIS], + dw_conv_strides[Y_AXIS], dw_conv_strides[X_AXIS], + mkldnn::memory::convert_to_c(dw_conv_in_dt), + static_cast(PostOpsIntBlobMemory[blob_idx]->GetData()), + static_cast(PostOpsIntBlobMemory[blob_idx + 1]->GetData())); blob_idx += 2; } else { - // rewrite onto append_dw_k3s2p1 -// ops.append_dw_conv(dw_conv_ih, dw_conv_iw, dw_conv_kernel[Y_AXIS], dw_conv_kernel[X_AXIS], -// dw_conv_strides[Y_AXIS], dw_conv_strides[X_AXIS], -// mkldnn::memory::convert_to_c(dw_conv_in_dt), -// static_cast(getParentEdgeAt( -// baseInputsNumber + 0)->getMemory().GetData()), -// static_cast(getParentEdgeAt( -// baseInputsNumber + 1)->getMemory().GetData())); + // todo: rewrite onto append_dw_k3s2p1 + ops.append_dw_conv(dw_conv_ih, dw_conv_iw, dw_conv_kernel[Y_AXIS], dw_conv_kernel[X_AXIS], + dw_conv_strides[Y_AXIS], dw_conv_strides[X_AXIS], + mkldnn::memory::convert_to_c(dw_conv_in_dt), + static_cast(getParentEdgeAt( + baseInputsNumber + 0)->getMemory().GetData()), + static_cast(getParentEdgeAt( + baseInputsNumber + 1)->getMemory().GetData())); } } else { - // rewrite onto append_dw_k3s2p1 -// ops.append_dw_conv(dw_conv_ih, dw_conv_iw, dw_conv_kernel[Y_AXIS], dw_conv_kernel[X_AXIS], -// dw_conv_strides[Y_AXIS], dw_conv_strides[X_AXIS], -// mkldnn::memory::convert_to_c(dw_conv_in_dt), -// nullptr, -// nullptr); + // todo: rewrite onto append_dw_k3s2p1 + ops.append_dw_conv(dw_conv_ih, dw_conv_iw, dw_conv_kernel[Y_AXIS], dw_conv_kernel[X_AXIS], + dw_conv_strides[Y_AXIS], dw_conv_strides[X_AXIS], + mkldnn::memory::convert_to_c(dw_conv_in_dt), + nullptr, + nullptr); } if (convolutionNode->wScale != nullptr) { @@ -481,18 +482,15 @@ void MKLDNNConvolutionNode::setPostOps(mkldnn::primitive_attr &attr, bool initWe oShiftDataVector.size() * MKLDNNExtensionUtils::sizeOfDataType(memory::data_type::f32)); ops.append_depthwise(mkldnn::algorithm::depthwise_scale_shift, - (const float *)PostOpsIntBlobMemory[blob_idx]->GetData(), - (const float *)PostOpsIntBlobMemory[blob_idx + 1]->GetData()); + static_cast(PostOpsIntBlobMemory[blob_idx]->GetData()), + static_cast(PostOpsIntBlobMemory[blob_idx + 1]->GetData())); blob_idx += 2; } - - THROW_IE_EXCEPTION << "append_dw_conv is not ported"; - continue; } - THROW_IE_EXCEPTION << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; + IE_THROW() << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; } attr.set_post_ops(ops); @@ -675,7 +673,7 @@ void MKLDNNConvolutionNode::createDescriptor(const std::vectorgetImplementationType()) { - THROW_IE_EXCEPTION << "Cannot get the original layer configuration!"; + IE_THROW() << "Cannot get the original layer configuration!"; } rightConfig = cfg; } @@ -828,7 +826,7 @@ void MKLDNNConvolutionNode::filterSupportedPrimitiveDescriptors() { void MKLDNNConvolutionNode::filterSupportedDescriptors() { if (!inputMemoryFormatsFilter.empty() || !outputMemoryFormatsFilter.empty()) { if (inputMemoryFormatsFilter.size() > 1 || outputMemoryFormatsFilter.size() > 1) { - THROW_IE_EXCEPTION << "Incorrect number of input or output memory formats for Convolution node"; + IE_THROW() << "Incorrect number of input or output memory formats for Convolution node"; } auto itd = descs.begin(); while (itd != descs.end()) { diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.cpp index cb6c9f26ba0703..6f67d116ac1159 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -7,7 +7,7 @@ #include "common/cpu_convert.h" #include "common/tensor_desc_creator.h" -#define THROW_ERROR THROW_IE_EXCEPTION << getTypeStr() << " layer with name '" << getName() <<"' ERROR: " +#define THROW_ERROR IE_THROW() << getTypeStr() << " layer with name '" << getName() <<"' ERROR: " using namespace mkldnn; using namespace MKLDNNPlugin; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.h index bf1c78f0fcc9b3..51313546b3f7e2 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_convert_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.cpp index 0e22cadd745269..166461b4b0115d 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,11 +23,11 @@ void MKLDNNCropNode::getSupportedDescriptors() { CropLayer* cropLayer = dynamic_cast(getCnnLayer().get()); if (cropLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert crop layer."; + IE_THROW() << "Cannot convert crop layer."; channelAxis = 1; if (getParentEdges().size() != 1 && getParentEdges().size() != 2) { - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); } MKLDNNDims childDims = getChildEdgeAt(0)->getDims(); @@ -51,7 +51,7 @@ void MKLDNNCropNode::getSupportedDescriptors() { } if (!getChildEdges().size()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); } void MKLDNNCropNode::initSupportedPrimitiveDescriptors() { @@ -68,7 +68,7 @@ void MKLDNNCropNode::initSupportedPrimitiveDescriptors() { auto& inDims = getParentEdgeAt(0)->getDims(); if (inDims.ndims() != 2 && inDims.ndims() != 4 && inDims.ndims() != 5) { - THROW_IE_EXCEPTION << "Crop supports only 2d, 4d and 5d blobs."; + IE_THROW() << "Crop supports only 2d, 4d and 5d blobs."; } memory::format_tag fmt = memory::format_tag::undef; @@ -111,11 +111,11 @@ void MKLDNNCropNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto& srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory didn't allocate."; + IE_THROW() << "Input memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; } void MKLDNNCropNode::execute(mkldnn::stream strm) { diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.h index 90a09bb16dc43a..3c02b98180d40a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_crop_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_deconv_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_deconv_node.cpp index caf74aa85952c3..2fbfedf75b81ef 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_deconv_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_deconv_node.cpp @@ -40,15 +40,15 @@ void MKLDNNDeconvolutionNode::getSupportedDescriptors() { inputDataType = outputDataType = memory::data_type::bf16; if (getParentEdges().empty() || getParentEdges().size() > 3) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); auto * deconvLayer = dynamic_cast(getCnnLayer().get()); if (deconvLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert deconvolution layer."; + IE_THROW() << "Cannot convert deconvolution layer."; if (getParentEdges().size() == 1 && deconvLayer->_weights == nullptr) { - THROW_IE_EXCEPTION << "Weights are empty for layer: " << deconvLayer->name + IE_THROW() << "Weights are empty for layer: " << deconvLayer->name << " used in MKLDNN node: " << getName() << "\n" << "Use the second argumemt of InferenceEngine::Core::ReadNetwork" << " to load them from .bin part of the IR"; @@ -64,7 +64,7 @@ void MKLDNNDeconvolutionNode::getSupportedDescriptors() { if (getParentEdges().size() == 3) { auto biasLayer = getParentEdgesAtPort(2)[0]->getParent()->getCnnLayer(); if (biasLayer->type != "Const") - THROW_IE_EXCEPTION << "Deconvolution layer with name '" << getName() << "' doesn't support non-constant biases"; + IE_THROW() << "Deconvolution layer with name '" << getName() << "' doesn't support non-constant biases"; biases = biasLayer->blobs["custom"]; } else { biases = deconvLayer->_biases; @@ -163,7 +163,7 @@ void MKLDNNDeconvolutionNode::filterSupportedPrimitiveDescriptors() { void MKLDNNDeconvolutionNode::filterSupportedDescriptors() { if (!inputMemoryFormatsFilter.empty() || !outputMemoryFormatsFilter.empty()) { if (inputMemoryFormatsFilter.size() > 1 || outputMemoryFormatsFilter.size() > 1) { - THROW_IE_EXCEPTION << "Incorrect number of input or output memory formats for Deconvolution node"; + IE_THROW() << "Incorrect number of input or output memory formats for Deconvolution node"; } auto itd = descs.begin(); while (itd != descs.end()) { diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_def_conv_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_def_conv_node.cpp index 797daab26a8a90..8b2ea38864e14e 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_def_conv_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_def_conv_node.cpp @@ -751,39 +751,39 @@ void MKLDNNDeformableConvolutionNode::getSupportedDescriptors() { auto * defConvLayer = dynamic_cast(getCnnLayer().get()); if (defConvLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert deformable convolution layer."; + IE_THROW() << "Cannot convert deformable convolution layer."; std::string errorPrefix = "DeformableConvolution layer with name '" + getName() + "' "; if (getParentEdges().size() != 3) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of input edges"; + IE_THROW() << errorPrefix << "has incorrect number of input edges"; if (getChildEdges().empty()) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of output edges"; + IE_THROW() << errorPrefix << "has incorrect number of output edges"; if (getParentEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << "Deformable convolution layer. Unsupported mode. Only 4D blobs are supported as input."; + IE_THROW() << "Deformable convolution layer. Unsupported mode. Only 4D blobs are supported as input."; } if (getParentEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); } if (getParentEdgeAt(1)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); } if (getParentEdgeAt(2)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 2nd input with rank: " << getParentEdgeAt(2)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 2nd input with rank: " << getParentEdgeAt(2)->getDims().ndims(); } if (getChildEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); } bool isMerged = (!getMergeWith().empty()); bool isGrouped = defConvLayer->_group != 1; if (isMerged && isGrouped) - THROW_IE_EXCEPTION << errorPrefix << "cannot be initialized: group splitted mode are used together with direct group specification."; + IE_THROW() << errorPrefix << "cannot be initialized: group splitted mode are used together with direct group specification."; group = defConvLayer->_group; if (isMerged) { @@ -854,7 +854,10 @@ void MKLDNNDeformableConvolutionNode::initSupportedPrimitiveDescriptors() { } void MKLDNNDeformableConvolutionNode::createPrimitive() { - auto config = getSelectedPrimitiveDescriptor()->getConfig(); + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU deformable convolution with name '" << getName() << "' doesn't have primitive descriptors."; + auto config = selectedPrimitiveDescriptor->getConfig(); auto srcDims = config.inConfs[0].desc.getDims(); auto weiDims = config.inConfs[2].desc.getDims(); @@ -1057,7 +1060,10 @@ void MKLDNNDeformableConvolutionNode::execute(mkldnn::stream strm) { const auto *weights = reinterpret_cast(srcMemory2.GetPtr()); float *dst = reinterpret_cast(dstMemory.GetPtr()); - auto config = getSelectedPrimitiveDescriptor()->getConfig(); + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU deformable convolution with name '" << getName() << "' doesn't have primitive descriptors."; + auto config = selectedPrimitiveDescriptor->getConfig(); auto src_block_desc = config.inConfs[0].desc.getBlockingDesc(); std::vector src_strides(src_block_desc.getStrides().size()); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.cpp index 320309738b7ae9..b5f1e51bd2c4ad 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.cpp @@ -106,7 +106,7 @@ struct jit_uni_eltwise_generic : public MKLDNNPlugin::jit_uni_eltwise_kernel, pu } if (exec_prc == Precision::UNSPECIFIED) { - THROW_IE_EXCEPTION << "Eltwise jitter failed to specify execution precision for Eltwise node with name `" << eltwiseNode.getName() << "`"; + IE_THROW() << "Eltwise jitter failed to specify execution precision for Eltwise node with name `" << eltwiseNode.getName() << "`"; } eltwise_emitter = create_eltwise_emitter(eltwiseNode, exec_prc); @@ -174,7 +174,7 @@ struct jit_uni_eltwise_generic : public MKLDNNPlugin::jit_uni_eltwise_kernel, pu is_valid_configuration = false; if (!is_valid_configuration) - THROW_IE_EXCEPTION << "Eltwise jitter has invalid configuration for Eltwise node with name `" << eltwiseNode.getName() << "`"; + IE_THROW() << "Eltwise jitter has invalid configuration for Eltwise node with name `" << eltwiseNode.getName() << "`"; L(unroll_loop_label); { @@ -406,10 +406,11 @@ struct jit_uni_eltwise_generic : public MKLDNNPlugin::jit_uni_eltwise_kernel, pu OV_CASE(LogicalXor, jit_logical_xor_emitter), OV_CASE(LogicalNot, jit_logical_not_emitter), OV_CASE(PowerStatic, jit_power_static_emitter), - OV_CASE(Prelu, jit_prelu_emitter)); + OV_CASE(Prelu, jit_prelu_emitter), + OV_CASE(Erf, jit_erf_emitter)); if (precisions.empty()) - THROW_IE_EXCEPTION << "Unsupported operation type for Eltwise emitter"; + IE_THROW() << "Unsupported operation type for Eltwise emitter"; return precisions; } @@ -467,10 +468,11 @@ struct jit_uni_eltwise_generic : public MKLDNNPlugin::jit_uni_eltwise_kernel, pu OV_CASE(LogicalXor, jit_logical_xor_emitter), OV_CASE(LogicalNot, jit_logical_not_emitter), OV_CASE(PowerStatic, jit_power_static_emitter), - OV_CASE(Prelu, jit_prelu_emitter)); + OV_CASE(Prelu, jit_prelu_emitter), + OV_CASE(Erf, jit_erf_emitter)); if (!ctx.emitter) - THROW_IE_EXCEPTION << "Unsupported operation type for Eltwise emitter"; + IE_THROW() << "Unsupported operation type for Eltwise emitter"; return ctx.emitter; } @@ -898,7 +900,12 @@ MKLDNNEltwiseNode::initializers = { else if (mode == "half_away_from_zero") algorithm = mkldnn::algorithm::eltwise_round_half_away_from_zero; else - THROW_IE_EXCEPTION << "Round layer with name " << activationLayer->name << " doesn't support mode " << mode; + IE_THROW() << "Round layer with name " << activationLayer->name << " doesn't support mode " << mode; + }}, + {"erf", [](GenericLayer* activationLayer, EltwiseOpType& opType, mkldnn::algorithm& algorithm, float& alpha, float& beta) { + alpha = 0.0f; + beta = 0.0f; + opType = Erf; }}, }; @@ -909,7 +916,7 @@ void MKLDNNEltwiseNode::init() { auto * eltwiseLayer = dynamic_cast(getCnnLayer().get()); if (eltwiseLayer) { if (!eltwiseLayer->coeff.empty()) - THROW_IE_EXCEPTION << "Eltwise node with name `" << getName() << "` doesn't support input coefficients."; + IE_THROW() << "Eltwise node with name `" << getName() << "` doesn't support input coefficients."; switch (eltwiseLayer->_operation) { case EltwiseLayer::Sum: eltwiseOp = Add; break; @@ -930,7 +937,7 @@ void MKLDNNEltwiseNode::init() { case EltwiseLayer::Logical_AND: eltwiseOp = LogicalAnd; break; case EltwiseLayer::Logical_OR: eltwiseOp = LogicalOr; break; case EltwiseLayer::Logical_XOR: eltwiseOp = LogicalXor; break; - default: THROW_IE_EXCEPTION << "Unsupported algorithm for Eltwise node with name `" << getName() << "`."; + default: IE_THROW() << "Unsupported algorithm for Eltwise node with name `" << getName() << "`."; } } else if (comparator(layerType, "mod")) { eltwiseOp = Mod; @@ -939,7 +946,7 @@ void MKLDNNEltwiseNode::init() { auto *powerLayer = dynamic_cast(getCnnLayer().get()); if (powerLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert power layer."; + IE_THROW() << "Cannot convert power layer."; alpha = powerLayer->power; beta = powerLayer->scale; @@ -972,8 +979,10 @@ void MKLDNNEltwiseNode::init() { comparator(layerType, "hsigmoid") || comparator(layerType, "round")) { initializers[layerType](getCnnLayer().get(), eltwiseOp, eltwiseAlgorithm, alpha, beta); + } else if (comparator(layerType, "erf")) { + eltwiseOp = Erf; } else { - THROW_IE_EXCEPTION << "Unsupported algorithm for Eltwise node with name `" << getName() << "`."; + IE_THROW() << "Unsupported algorithm for Eltwise node with name `" << getName() << "`."; } } @@ -983,6 +992,7 @@ size_t MKLDNNEltwiseNode::getOpInputsNum() const { case Linear: case BoundedRelu: case SoftRelu: case Relu6: case Exp: case Clamp: case Swish: case Hswish: case Mish: case Hsigmoid: case Round: case LogicalNot: + case Erf: return 1; case Add: case Subtract: case Multiply: case Divide: case FloorMod: case Mod: case Maximum: case Minimum: case SquaredDifference: case PowerDynamic: case Equal: case NotEqual: case Greater: case GreaterEqual: case Less: case LessEqual: case LogicalAnd: @@ -990,7 +1000,7 @@ size_t MKLDNNEltwiseNode::getOpInputsNum() const { return 2; case MulAdd: return 3; - default: THROW_IE_EXCEPTION << "Unsupported operation for Eltwise node with name `" << getName() << "`."; + default: IE_THROW() << "Unsupported operation for Eltwise node with name `" << getName() << "`."; } } @@ -1011,9 +1021,9 @@ bool MKLDNNEltwiseNode::isWithBroadcast() { void MKLDNNEltwiseNode::getSupportedDescriptors() { if (getParentEdges().size() < 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); } void MKLDNNEltwiseNode::initSupportedPrimitiveDescriptors() { @@ -1040,11 +1050,11 @@ void MKLDNNEltwiseNode::initSupportedPrimitiveDescriptors() { } } if (getParentEdges().size() > MAX_ELTWISE_INPUTS) - THROW_IE_EXCEPTION << "Eltwise node with name `" << getName() << "` doesn't support more than " << MAX_ELTWISE_INPUTS + IE_THROW() << "Eltwise node with name `" << getName() << "` doesn't support more than " << MAX_ELTWISE_INPUTS << " inputs (actual = " << getParentEdges().size() << ")"; if (expectedInputsNum != getParentEdges().size()) - THROW_IE_EXCEPTION << "Eltwise node with name `" << getName() << "` has invalid input number of inputs: expected = " << expectedInputsNum + IE_THROW() << "Eltwise node with name `" << getName() << "` has invalid input number of inputs: expected = " << expectedInputsNum << " (actual = " << getParentEdges().size() << ")"; std::vector inputPrecisions; @@ -1061,7 +1071,7 @@ void MKLDNNEltwiseNode::initSupportedPrimitiveDescriptors() { } if (inputPrecisions.size() != getParentEdges().size()) - THROW_IE_EXCEPTION << "Eltwise node with name `" << getName() << "` has invalid input precisions configuration."; + IE_THROW() << "Eltwise node with name `" << getName() << "` has invalid input precisions configuration."; InferenceEngine::Precision outputPrecision = getCnnLayer()->outData[0]->getPrecision(); if (!fusedWith.empty()) { @@ -1078,7 +1088,7 @@ void MKLDNNEltwiseNode::initSupportedPrimitiveDescriptors() { hasBF16 = true; if (outputPrecision == Precision::BF16 || hasBF16) - THROW_IE_EXCEPTION << "Eltwise node with name `" << getName() << "` doesn't support BF16 precision on this target."; + IE_THROW() << "Eltwise node with name `" << getName() << "` doesn't support BF16 precision on this target."; } auto filterPrecision = [&](Precision& prc) { @@ -1088,7 +1098,7 @@ void MKLDNNEltwiseNode::initSupportedPrimitiveDescriptors() { if (prc == Precision::U32 || prc == Precision::I64 || prc == Precision::U64) { return Precision(Precision::I32); } else { - THROW_IE_EXCEPTION << "Eltwise node with name `" << getName() << "` doesn't support " << prc << " precision."; + IE_THROW() << "Eltwise node with name `" << getName() << "` doesn't support " << prc << " precision."; } } else { return prc; @@ -1253,7 +1263,7 @@ void MKLDNNEltwiseNode::createPrimitive() { for (int i = 0; i < dims_in.size(); i++) { for (int j = 0; j < dims_in[i].size(); j++) { if (dims_in[i][j] != dims_out[j] && dims_in[i][j] != 1) - THROW_IE_EXCEPTION << "Eltwise node with name `" << getName() << "` has invalid input/output dims configuration."; + IE_THROW() << "Eltwise node with name `" << getName() << "` has invalid input/output dims configuration."; } } }; @@ -1481,7 +1491,7 @@ void MKLDNNEltwiseNode::selectOptimalPrimitiveDescriptor() { } if (getSupportedPrimitiveDescriptors().empty()) - THROW_IE_EXCEPTION << "Supported primitive descriptors list is empty for node: " << getName(); + IE_THROW() << "Supported primitive descriptors list is empty for node: " << getName(); // fallback. If there are no primitives from priority list just select a first selectPrimitiveDescriptorByIndex(0); } @@ -1489,7 +1499,7 @@ void MKLDNNEltwiseNode::selectOptimalPrimitiveDescriptor() { void MKLDNNEltwiseNode::initOptimalPrimitiveDescriptor() { auto selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto config = selected_pd->getConfig(); if (!isInitConfig(config)) { for (size_t i = 0; i < config.inConfs.size(); i++) { @@ -1663,7 +1673,7 @@ void MKLDNNEltwiseNode::executeReference(const std::vector& src case LogicalNot: *dst_ptr_f = !src_f[0]; break; case PowerStatic: *dst_ptr_f = powf(beta * src_f[0] + gamma, alpha); break; case Prelu: *dst_ptr_f = src_f[0] > 0 ? src_f[0] : src_f[0] * src_f[1]; break; - default: THROW_IE_EXCEPTION << "Unsupported operation type for Eltwise node with name `" << getName() << "`"; + default: IE_THROW() << "Unsupported operation type for Eltwise node with name `" << getName() << "`"; } } }); @@ -1751,7 +1761,7 @@ void MKLDNNEltwiseNode::appendPostOps(mkldnn::post_ops& ops) { Blob::Ptr scalesBlob = getCnnLayer()->blobs["weights"]; if (scalesBlob == nullptr) - THROW_IE_EXCEPTION << "Cannot get weights blob in Eltwise node with name `" << getName() << "`"; + IE_THROW() << "Cannot get weights blob in Eltwise node with name `" << getName() << "`"; scales.resize(bufferSizeAligned, 0); const float *scalesBufferPtr = scalesBlob->buffer().as(); for (int i = 0; i < bufferSize; i++) { @@ -1770,7 +1780,7 @@ void MKLDNNEltwiseNode::appendPostOps(mkldnn::post_ops& ops) { ops.append_depthwise(getAlgorithm(), &scales[0], shifts.empty() ? nullptr : &shifts[0]); break; - default: THROW_IE_EXCEPTION << "Appending Eltwise node with name `" << getName() << "` as post operation is not supported"; + default: IE_THROW() << "Appending Eltwise node with name `" << getName() << "` as post operation is not supported"; } } @@ -1839,7 +1849,7 @@ bool MKLDNNEltwiseNode::canFuse(const MKLDNNNodePtr& node) const { if (node->getType() == Quantize) { auto *quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize layer " << node->getName(); + IE_THROW() << "Cannot get quantize layer " << node->getName(); return !quantizeNode->isBinarization(); } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.h index 7b2677fb44dc6f..d5ab2430fc2116 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_eltwise_node.h @@ -60,7 +60,8 @@ enum EltwiseOpType { Mish, Hswish, Hsigmoid, - Round + Round, + Erf }; struct jit_eltwise_params { diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_fullyconnected_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_fullyconnected_node.cpp index 73a91f4845338a..1d16892181c0ae 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_fullyconnected_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_fullyconnected_node.cpp @@ -80,24 +80,24 @@ void MKLDNNFullyConnectedNode::getSupportedDescriptors() { auto * fcLayer = dynamic_cast(getCnnLayer().get()); if (fcLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert fully connected layer."; + IE_THROW() << "Cannot convert fully connected layer."; if (fcLayer->_weights == nullptr && baseInputsNumber == 1) { - THROW_IE_EXCEPTION << "Weights are empty for layer: " << fcLayer->name + IE_THROW() << "Weights are empty for layer: " << fcLayer->name << " used in MKLDNN node: " << getName() << "\n" << "Use the second argumemt of InferenceEngine::Core::ReadNetwork" << " to load them from .bin part of the IR"; } if (getParentEdges().size() != baseInputsNumber) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); MKLDNNDims inDims = getParentEdgeAt(0)->getDims(); MKLDNNDims outDims = getChildEdgeAt(0)->getDims(); if (!one_of(inDims.ndims(), 2, 3, 4, 5)) { - THROW_IE_EXCEPTION << "Unsupported source format for FC layer. Expected 5, 4, 3 or 2, got: " + IE_THROW() << "Unsupported source format for FC layer. Expected 5, 4, 3 or 2, got: " << inDims.ndims() << " dims."; } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_gemm_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_gemm_node.cpp index cf962da9a8f9bf..9bf971f3190301 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_gemm_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_gemm_node.cpp @@ -25,12 +25,12 @@ void MKLDNNGemmNode::getSupportedDescriptors() { auto* gemmLayer = dynamic_cast(getCnnLayer().get()); if (gemmLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert gemm layer."; + IE_THROW() << "Cannot convert gemm layer."; if (getParentEdges().size() != 2 && getParentEdges().size() != 3) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); auto inDims0 = getParentEdgeAt(0)->getDims(); auto inDims1 = getParentEdgeAt(1)->getDims(); @@ -43,13 +43,13 @@ void MKLDNNGemmNode::getSupportedDescriptors() { if ((inDims0.ndims() < 2 || inDims0.ndims() > 4) || (inDims1.ndims() < 2 || inDims1.ndims() > 4)) - THROW_IE_EXCEPTION << "Unsupported input dims count for layer " << getName(); + IE_THROW() << "Unsupported input dims count for layer " << getName(); if (outDims.ndims() < 2 || outDims.ndims() > 4) - THROW_IE_EXCEPTION << "Unsupported output dims count for layer " << getName(); + IE_THROW() << "Unsupported output dims count for layer " << getName(); if (inDims0.ndims() != inDims1.ndims() || inDims0.ndims() != outDims.ndims()) - THROW_IE_EXCEPTION << "Invalid dims count for layer " << getName(); + IE_THROW() << "Invalid dims count for layer " << getName(); int nDims = inDims0.ndims(); xAxis = nDims - 1; @@ -62,7 +62,7 @@ void MKLDNNGemmNode::getSupportedDescriptors() { // The check inDims0[xAxis] != inDims1[yAxis] is correct due to layer semantic // coverity[copy_paste_error] if (inDims0[xAxis0] != inDims1[yAxis1] || inDims0[yAxis0] != outDims[yAxis] || inDims1[xAxis1] != outDims[xAxis]) - THROW_IE_EXCEPTION << "Spatial input and output dimensions are incorrect for layer " << getName(); + IE_THROW() << "Spatial input and output dimensions are incorrect for layer " << getName(); isThreeInputs = getParentEdges().size() == 3; @@ -70,13 +70,13 @@ void MKLDNNGemmNode::getSupportedDescriptors() { auto inDims2 = getParentEdgeAt(2)->getDims(); if (inDims2.ndims() < 2 || inDims2.ndims() > 4) - THROW_IE_EXCEPTION << "Unsupported output dims count for layer " << getName(); + IE_THROW() << "Unsupported output dims count for layer " << getName(); if (inDims2.ndims() != outDims.ndims()) - THROW_IE_EXCEPTION << "Invalid dims count for layer " << getName(); + IE_THROW() << "Invalid dims count for layer " << getName(); if (inDims2[yAxis] != outDims[yAxis] || inDims2[xAxis] != outDims[xAxis]) - THROW_IE_EXCEPTION << "Spatial input and output dimensions are incorrect for layer " << getName(); + IE_THROW() << "Spatial input and output dimensions are incorrect for layer " << getName(); } for (int dim_idx = nDims - 3; dim_idx >= 0; dim_idx--) { @@ -84,7 +84,7 @@ void MKLDNNGemmNode::getSupportedDescriptors() { auto inDims2 = getParentEdgeAt(2)->getDims(); if (inDims2[dim_idx] != outDims[dim_idx] && inDims2[dim_idx] != 1) - THROW_IE_EXCEPTION << "Input batch dimensions are incorrect for layer " << getName(); + IE_THROW() << "Input batch dimensions are incorrect for layer " << getName(); int cOffset = 1; for (int i = dim_idx + 1; i < nDims; i++) @@ -94,7 +94,7 @@ void MKLDNNGemmNode::getSupportedDescriptors() { if ((inDims0[dim_idx] != outDims[dim_idx] && inDims0[dim_idx] != 1) || (inDims1[dim_idx] != outDims[dim_idx] && inDims1[dim_idx] != 1)) { - THROW_IE_EXCEPTION << "Input batch dimensions are incorrect for layer " << getName(); + IE_THROW() << "Input batch dimensions are incorrect for layer " << getName(); } int aOffset = 1; @@ -162,7 +162,7 @@ void MKLDNNGemmNode::initSupportedPrimitiveDescriptors() { void MKLDNNGemmNode::initOptimalPrimitiveDescriptor() { auto selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto config = selected_pd->getConfig(); if (isInitConfig(config)) return; @@ -180,16 +180,16 @@ void MKLDNNGemmNode::createPrimitive() { auto& src0MemPtr = getParentEdgeAt(0)->getMemoryPtr(); auto& src1MemPtr = getParentEdgeAt(1)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory isn't allocated."; + IE_THROW() << "Destination memory isn't allocated."; if (!src0MemPtr || !src0MemPtr->GetPrimitivePtr() || !src1MemPtr || !src1MemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory isn't allocated."; + IE_THROW() << "Input memory isn't allocated."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor isn't set."; + IE_THROW() << "Preferable primitive descriptor isn't set."; if (isThreeInputs) { auto& src2MemPtr = getParentEdgeAt(2)->getMemoryPtr(); if (!src2MemPtr || !src2MemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory isn't allocated."; + IE_THROW() << "Input memory isn't allocated."; } } @@ -306,7 +306,7 @@ void MKLDNNGemmNode::execute(mkldnn::stream strm) { process_data(); break; default: - THROW_IE_EXCEPTION << "Gemm node: first input has unsupported precision"; + IE_THROW() << "Gemm node: first input has unsupported precision"; } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.cpp index f503186b41f4e5..df7d9f4c37e7b2 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ MKLDNNGenericNode::MKLDNNGenericNode(const InferenceEngine::CNNLayerPtr& layer, void MKLDNNGenericNode::getSupportedDescriptors() { if (!extFactory && impls.empty()) { std::string type = getCnnLayer() ? getCnnLayer()->type : "Generic"; - THROW_IE_EXCEPTION << "Cannot get generic primitive for layer: " << getName() << " with type: " << type; + IE_THROW() << "Cannot get generic primitive for layer: " << getName() << " with type: " << type; } } @@ -32,7 +32,7 @@ void MKLDNNGenericNode::initSupportedPrimitiveDescriptors() { InferenceEngine::ResponseDesc resp; if (impls.empty()) { if (!extFactory) - THROW_IE_EXCEPTION << "Descriptor for generic primitive doesn't exist"; + IE_THROW() << "Descriptor for generic primitive doesn't exist"; std::vector impls_no_exec; @@ -43,7 +43,7 @@ void MKLDNNGenericNode::initSupportedPrimitiveDescriptors() { } } if (rc != InferenceEngine::OK) { - THROW_IE_EXCEPTION << resp.msg; + IE_THROW() << resp.msg; } } @@ -51,7 +51,7 @@ void MKLDNNGenericNode::initSupportedPrimitiveDescriptors() { std::vector configs; auto rc = impl->getSupportedConfigurations(configs, &resp); if (rc != InferenceEngine::OK) { - THROW_IE_EXCEPTION << resp.msg; + IE_THROW() << resp.msg; } for (auto& config : configs) { @@ -59,7 +59,7 @@ void MKLDNNGenericNode::initSupportedPrimitiveDescriptors() { } } if (impls.empty()) { - THROW_IE_EXCEPTION << "Layer " << getName() << " hasn't available configurations!"; + IE_THROW() << "Layer " << getName() << " hasn't available configurations!"; } } @@ -68,14 +68,14 @@ void MKLDNNGenericNode::createPrimitive() { return; } if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; } void MKLDNNGenericNode::execute(mkldnn::stream strm) { if (!impls.empty()) { execLayer(); } else { - THROW_IE_EXCEPTION << "Descriptor for generic primitive doesn't exist"; + IE_THROW() << "Descriptor for generic primitive doesn't exist"; } } @@ -153,7 +153,7 @@ void MKLDNNGenericNode::execLayer() { InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode rc = impls[0]->execute(inputs, outputs, &resp); if (rc != InferenceEngine::OK) { - THROW_IE_EXCEPTION << this->getTypeStr() << ":" << this->getName() << ": " << resp.msg; + IE_THROW() << this->getTypeStr() << ":" << this->getName() << ": " << resp.msg; } } @@ -167,7 +167,7 @@ void MKLDNNGenericNode::initDescriptor(const InferenceEngine::LayerConfig &confi std::vector configs; rc = impls[k]->getSupportedConfigurations(configs, &resp); if (rc != InferenceEngine::OK) { - THROW_IE_EXCEPTION << resp.msg; + IE_THROW() << resp.msg; } for (size_t j = 0; j < configs.size(); j++, t++) { if (t == selectedPrimitiveDescriptorIndex) { @@ -195,7 +195,7 @@ void MKLDNNGenericNode::initDescriptor(const InferenceEngine::LayerConfig &confi impls.emplace_back(selectedImpl); rc = impls[0]->init(rightConfig, &resp); if (rc != InferenceEngine::OK) { - THROW_IE_EXCEPTION << resp.msg; + IE_THROW() << resp.msg; } auto descriptor = getSelectedPrimitiveDescriptor(); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.h index cf585ba1251f15..98160351cca6e7 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_generic_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.cpp index 7213a54ea7d545..ea478185720575 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,6 +9,7 @@ #include #include "caseless.hpp" #include "common/cpu_memcpy.h" +#include "common/cpu_convert.h" using namespace mkldnn; using namespace MKLDNNPlugin; @@ -20,7 +21,7 @@ MKLDNNInputNode::MKLDNNInputNode(const InferenceEngine::CNNLayerPtr& layer, cons if (layer && CaselessEq()(layer->type, "const")) { constant = ConstantType::Const; if (layer->blobs.size() != 1 || getType() != Input || !layer->blobs.begin()->second) - THROW_IE_EXCEPTION << "Incorrect const input " << getName(); + IE_THROW() << "Incorrect const input " << getName(); constBlob = layer->blobs.begin()->second; } else { constBlob = nullptr; @@ -30,14 +31,14 @@ MKLDNNInputNode::MKLDNNInputNode(const InferenceEngine::CNNLayerPtr& layer, cons void MKLDNNInputNode::getSupportedDescriptors() { if (getType() == Input) { if (!getParentEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); } else if (getType() == Output) { if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (!getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); } } @@ -77,19 +78,19 @@ void MKLDNNInputNode::createPrimitive() { for (size_t i = 0; i < getChildEdges().size(); i++) { auto &dstMemPtr = getChildEdgeAt(i)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate for node " << getName() + IE_THROW() << "Destination memory didn't allocate for node " << getName() << " to node " << getChildEdgeAt(i)->getChild()->getName() << "."; } for (size_t i = 0; i < getParentEdges().size(); i++) { auto &srcMemPtr = getParentEdgeAt(i)->getMemoryPtr(); if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate for node " << getName() + IE_THROW() << "Destination memory didn't allocate for node " << getName() << " from node " << getParentEdgeAt(i)->getParent()->getName() << "."; } const PrimitiveDescInfo *selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set for node " << getName() << "."; + IE_THROW() << "Preferable primitive descriptor is not set for node " << getName() << "."; } bool MKLDNNInputNode::created() const { @@ -118,7 +119,8 @@ namespace { return std::make_tuple(true, dim); } - bool isCompatibleTensors(const InferenceEngine::TensorDesc &lhs, const InferenceEngine::TensorDesc &rhs) { + bool isCompatibleTensors(const InferenceEngine::TensorDesc &lhs, const InferenceEngine::TensorDesc &rhs, + bool isNeedPrecValid = true) { auto const &lhsBlockingDesc = lhs.getBlockingDesc(); auto const &rhsBlockingDesc = rhs.getBlockingDesc(); @@ -127,13 +129,13 @@ namespace { std::tie(lhsDefaultStrides, lhsSize) = isDefaultStrides(lhsBlockingDesc.getStrides(), lhs.getDims()); std::tie(rhsDefaultStrides, rhsSize) = isDefaultStrides(rhsBlockingDesc.getStrides(), rhs.getDims()); + bool isCompatTensors = lhsSize == rhsSize + && lhsDefaultStrides + && rhsDefaultStrides + && isDefaultOrder(lhsBlockingDesc.getOrder()) + && isDefaultOrder(rhsBlockingDesc.getOrder()); - return lhs.getPrecision() == rhs.getPrecision() - && lhsSize == rhsSize - && lhsDefaultStrides - && rhsDefaultStrides - && isDefaultOrder(lhsBlockingDesc.getOrder()) - && isDefaultOrder(rhsBlockingDesc.getOrder()); + return (isNeedPrecValid ? lhs.getPrecision() == rhs.getPrecision() : true) && isCompatTensors; } } // namespace @@ -152,58 +154,19 @@ void MKLDNNInputNode::execute(mkldnn::stream strm) { dstBlob->getTensorDesc().getPrecision() == InferenceEngine::Precision::BIN) { size_t dstSize = dstBlob->size() / 8; if (constBlob->size() != dstSize) { - THROW_IE_EXCEPTION << "Incorrect blob sizes for node " << getName(); + IE_THROW() << "Incorrect blob sizes for node " << getName(); } const int8_t *srcData = constBlob->cbuffer().as(); int8_t *dstData = dstBlob->buffer(); cpu_memcpy_s(dstData, dstSize, srcData, constBlob->byteSize()); + } else if (constBlob->getTensorDesc().getPrecision() != dstBlob->getTensorDesc().getPrecision() && + isCompatibleTensors(constBlob->getTensorDesc(), dstBlob->getTensorDesc(), false)) { + cpu_convert(constBlob->cbuffer().as(), dstBlob->buffer().as(), + constBlob->getTensorDesc().getPrecision(), dstBlob->getTensorDesc().getPrecision(), dstBlob->size()); } else { - if (constBlob->size() != dstBlob->size()) { - THROW_IE_EXCEPTION << "Incorrect blob sizes for node " << getName(); - } - - switch (precision.size()) { - case 1: { - const int8_t *srcData = constBlob->cbuffer().as(); - int8_t *dstData = dstBlob->buffer(); - - for (size_t i = 0; i < constBlob->size(); i++) - dstData[dstBlob->getTensorDesc().offset(i)] = srcData[i]; - - break; - } - case 2: { - const int16_t *srcData = constBlob->cbuffer().as(); - int16_t *dstData = dstBlob->buffer(); - - for (size_t i = 0; i < constBlob->size(); i++) - dstData[dstBlob->getTensorDesc().offset(i)] = srcData[i]; - - break; - } - case 4: { - const int32_t *srcData = constBlob->cbuffer().as(); - int32_t *dstData = dstBlob->buffer(); - - for (size_t i = 0; i < constBlob->size(); i++) - dstData[dstBlob->getTensorDesc().offset(i)] = srcData[i]; - - break; - } - case 8: { - const int64_t *srcData = constBlob->cbuffer().as(); - int64_t *dstData = dstBlob->buffer(); - - for (size_t i = 0; i < constBlob->size(); i++) - dstData[dstBlob->getTensorDesc().offset(i)] = srcData[i]; - - break; - } - default: - THROW_IE_EXCEPTION << "Unsupported precision for node " << getName(); - } + IE_THROW() << "Input node with name: '" << getName() << "' has incompatible tensors"; } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.h index e02cec2d8ad0bf..7f7024371c29f4 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_input_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -33,4 +33,3 @@ class MKLDNNInputNode : public MKLDNNNode { }; } // namespace MKLDNNPlugin - diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.cpp index a211c288d1f699..7f12bb493d1d0a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -148,7 +148,7 @@ struct jit_uni_interpolate_kernel_f32 : public jit_uni_interpolate_kernel, publi this->postamble(); - if (!mayiuse(avx512_core_bf16) && mayiuse(avx512_core)) + if (!mayiuse(avx512_core_bf16) && mayiuse(avx512_core) && emu_vcvtneps2bf16 != nullptr) emu_vcvtneps2bf16->emit_data(); for (auto& inj : eltwise_injectors) @@ -243,7 +243,7 @@ struct jit_uni_interpolate_kernel_f32 : public jit_uni_interpolate_kernel, publi Xbyak::Label l_table_constant; Opmask k_mask = Xbyak::Opmask(1); - std::unique_ptr emu_vcvtneps2bf16; + std::unique_ptr emu_vcvtneps2bf16 = nullptr; std::vector>> eltwise_injectors; std::vector>> depthwise_injectors; @@ -1594,7 +1594,25 @@ struct jit_uni_interpolate_kernel_f32 : public jit_uni_interpolate_kernel, publi }; MKLDNNInterpolateNode::MKLDNNInterpolateNode(const InferenceEngine::CNNLayerPtr& layer, const mkldnn::engine& eng, MKLDNNWeightsSharing::Ptr &cache) - : MKLDNNNode(layer, eng, cache) {} + : MKLDNNNode(layer, eng, cache) { + std::string modeString = layer->GetParamAsString("mode"); + if (modeString == "nearest") { + mode = InterpolateMode::nearest; + } else if (modeString == "linear") { + size_t rank = layer->insData[0].lock()->getDims().size(); + if (rank < 5) { + mode = InterpolateMode::linear_onnx; + } else { + mode = InterpolateMode::linear; + } + } else if (modeString == "linear_onnx") { + mode = InterpolateMode::linear_onnx; + } else if (modeString == "cubic") { + mode = InterpolateMode::cubic; + } else { + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support interpolate mode:" << modeString; + } +} // shapeND: n c d h w // blockND: ncdhw cdhw dhw hw w 1 @@ -1637,24 +1655,11 @@ void MKLDNNInterpolateNode::getSupportedDescriptors() { if (getParentEdges().size() != 3 && getParentEdges().size() != 4) // data, target_shape, scale, axis(optional). - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' has incorrect number of input edges"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' has incorrect number of input edges"; isAxesSpecified = (getParentEdges().size() == 3) ? false : true; if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' has incorrect number of output edges"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' has incorrect number of output edges"; - auto *layer = getCnnLayer().get(); - std::string modeString = layer->GetParamAsString("mode"); - if (modeString == "nearest") { - mode = InterpolateMode::nearest; - } else if (modeString == "linear") { - mode = InterpolateMode::linear; - } else if (modeString == "linear_onnx") { - mode = InterpolateMode::linear_onnx; - } else if (modeString == "cubic") { - mode = InterpolateMode::cubic; - } else { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' does not support interpolate mode:" << modeString; - } srcDim = getParentEdgeAt(DATA_ID)->getDims().ToSizeVector(); int dataRank = srcDim.size(); switch (dataRank) { @@ -1670,17 +1675,18 @@ void MKLDNNInterpolateNode::getSupportedDescriptors() { if (mode != InterpolateMode::cubic) { spatialDimSize = 3; } else { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << + IE_THROW() << "Interpolate layer with name '" << getName() << "' of 'cubic' mode only support input tensor of 2 or 4 rank"; } break; default: - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support input tensor of rank :" << dataRank; break; } - modeString = layer->GetParamAsString("coordinate_transformation_mode", "half_pixel"); + auto *layer = getCnnLayer().get(); + std::string modeString = layer->GetParamAsString("coordinate_transformation_mode", "half_pixel"); if (modeString == "half_pixel") { coordTransMode = InterpolateCoordTransMode::half_pixel; } else if (modeString == "pytorch_half_pixel") { @@ -1692,7 +1698,7 @@ void MKLDNNInterpolateNode::getSupportedDescriptors() { } else if (modeString == "align_corners") { coordTransMode = InterpolateCoordTransMode::align_corners; } else { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' does not support coordinate transformation mode: " << modeString; + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support coordinate transformation mode: " << modeString; } if (mode == InterpolateMode::nearest) { @@ -1708,7 +1714,7 @@ void MKLDNNInterpolateNode::getSupportedDescriptors() { } else if (modeString == "simple") { nearestMode = InterpolateNearestMode::simple; } else { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' does not support nearest round mode: " << modeString; + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support nearest round mode: " << modeString; } } else if (mode == InterpolateMode::cubic) { cubeCoeff = layer->GetParamAsFloat("cube_coeff", -0.75); @@ -1768,7 +1774,7 @@ void MKLDNNInterpolateNode::getSupportedDescriptors() { scales[i] = scalesData[i]; } } else { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' only supports const 'scales' input."; + IE_THROW() << "Interpolate layer with name '" << getName() << "' only supports const 'scales' input."; } if (isAxesSpecified) { @@ -1782,7 +1788,7 @@ void MKLDNNInterpolateNode::getSupportedDescriptors() { axes[i] = axesData[i]; } } else { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' only supports const 'axes' input."; + IE_THROW() << "Interpolate layer with name '" << getName() << "' only supports const 'axes' input."; } } else { int dataRank = srcDim.size(); @@ -1793,7 +1799,7 @@ void MKLDNNInterpolateNode::getSupportedDescriptors() { } if (scales.size() != axes.size()) { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not have the same number elements in scales as in axis."; } } @@ -1918,18 +1924,18 @@ void MKLDNNInterpolateNode::createPrimitive() { if (getParentEdges().size() > 3) { auto &axesMemPtr = getParentEdgeAt(AXES_ID)->getMemoryPtr(); if (!axesMemPtr || !axesMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' did not allocate axes memory"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' did not allocate axes memory"; } if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' did not allocate destination memory"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' did not allocate destination memory"; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' did not allocate input memory"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' did not allocate input memory"; if (!tsMemPtr || !tsMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' did not allocate target shape memory"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' did not allocate target shape memory"; if (!scaleMemPtr || !scaleMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' did not allocate scales memory"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' did not allocate scales memory"; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' did not set preferable primitive descriptor"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' did not set preferable primitive descriptor"; auto selectedPD = getSelectedPrimitiveDescriptor(); auto jcp = jit_interpolate_config_params(); @@ -1982,7 +1988,7 @@ void MKLDNNInterpolateNode::createPrimitive() { // build indices table std::vector dataScales = getScales(); if (dimSize > 2 && (dataScales[0] != 1.f || dataScales[1] != 1.f)) { - THROW_IE_EXCEPTION << "Interpolate layer only supports resize on spatial dimensions(depth, height and width)"; + IE_THROW() << "Interpolate layer only supports resize on spatial dimensions(depth, height and width)"; } switch (mode) { @@ -2003,7 +2009,7 @@ void MKLDNNInterpolateNode::createPrimitive() { break; } default: { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' does not support interpolate mode:" << mode; + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support interpolate mode:" << mode; break; } } @@ -2348,7 +2354,7 @@ void MKLDNNInterpolateNode::setPostOps(mkldnn::primitive_attr &attr, bool initWe continue; } - THROW_IE_EXCEPTION << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; + IE_THROW() << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; } attr.set_post_ops(ops); @@ -2432,7 +2438,7 @@ void MKLDNNInterpolateNode::execute(mkldnn::stream strm) { srcPadded.resize(eltsTotal * srcDataSize, 0x0); uint8_t *src_data_pad = static_cast(&srcPadded[0]); if ((srcDim5d[0] != srcDimPad5d[0]) || (srcDim5d[1] != srcDimPad5d[1])) { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support padding on batch and channel dimensions"; } parallel_for5d(srcDim5d[0], CB, srcDim5d[2], srcDim5d[3], srcDim5d[4], [&](int n, int cb, int d, int h, int w) { @@ -2458,7 +2464,7 @@ void MKLDNNInterpolateNode::execute(mkldnn::stream strm) { size_t OD = dstDim5d[2], OH = dstDim5d[3], OW = dstDim5d[4]; std::vector dataScales = getScales(); if (dimSize > 2 && (dataScales[0] != 1.f || dataScales[1] != 1.f)) { - THROW_IE_EXCEPTION << "Interpolate layer only supports resize on spatial dimensions(depth, height and width)"; + IE_THROW() << "Interpolate layer only supports resize on spatial dimensions(depth, height and width)"; } switch (mode) { @@ -2509,7 +2515,7 @@ void MKLDNNInterpolateNode::execute(mkldnn::stream strm) { break; } default: { - THROW_IE_EXCEPTION << "Interpolate layer has unsupported interpolate mode: " << mode; + IE_THROW() << "Interpolate layer has unsupported interpolate mode: " << mode; } } } @@ -3058,7 +3064,7 @@ float MKLDNNInterpolateNode::getValue(const uint8_t *base, size_t offset, Infere break; } default: { - THROW_IE_EXCEPTION << "Interpolate layer does not support precision: " << prec; + IE_THROW() << "Interpolate layer does not support precision: " << prec; break; } } @@ -3069,25 +3075,25 @@ void MKLDNNInterpolateNode::setValue(uint8_t *base, size_t offset, float value, switch (prec) { case Precision::U8: { uint8_t data = static_cast(value < 0 ? 0 : value); - std::memcpy(baseOffset, &data, 1); + cpu_memcpy(baseOffset, &data, 1); break; } case Precision::I8: { int8_t data = static_cast(value); - std::memcpy(baseOffset, &data, 1); + cpu_memcpy(baseOffset, &data, 1); break; } case Precision::BF16: { uint16_t data = bfloat16_t(value).to_bits(); - std::memcpy(baseOffset, &data, 2); + cpu_memcpy(baseOffset, &data, 2); break; } case Precision::FP32: { - std::memcpy(baseOffset, &value, sizeof(float)); + cpu_memcpy(baseOffset, &value, sizeof(float)); break; } default: { - THROW_IE_EXCEPTION << "Interpolate layer does not support precision: " << prec; + IE_THROW() << "Interpolate layer does not support precision: " << prec; break; } } @@ -3128,7 +3134,7 @@ inline float MKLDNNInterpolateNode::coordTransToInput(int outCoord, float scale, break; } default: { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' does not support specified coordinate transformation mode"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support specified coordinate transformation mode"; break; } } @@ -3162,7 +3168,7 @@ inline int MKLDNNInterpolateNode::nearestRound(float originCoord, bool isDownsam return static_cast(originCoord); } default: { - THROW_IE_EXCEPTION << "Interpolate layer with name '" << getName() << "' does not support specified nearest round mode"; + IE_THROW() << "Interpolate layer with name '" << getName() << "' does not support specified nearest round mode"; break; } } @@ -3185,12 +3191,12 @@ bool MKLDNNInterpolateNode::canFuse(const MKLDNNNodePtr& node) const { if (node->getType() == Quantize) { auto* quantizeNode = dynamic_cast(node.get()); if (quantizeNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get quantize node " << node->getName(); + IE_THROW() << "Cannot get quantize node " << node->getName(); return !quantizeNode->isBinarization(); } else if (node->getType() == Eltwise) { auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode == nullptr) - THROW_IE_EXCEPTION << "Cannot get eltwise node " << node->getName(); + IE_THROW() << "Cannot get eltwise node " << node->getName(); return isOneOf(eltwiseNode->getOpType(), {Prelu, Relu, Gelu, Elu, Logistic, BoundedRelu, Clamp, Tanh, Swish, Hswish, Mish, Hsigmoid, Round, Linear, Abs, Square, Sqrt}) || (eltwiseNode->getOpType() == MulAdd && eltwiseNode->getCnnLayer()->blobs.size() == 2); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.h index 24b00e2cc6695b..369765538dc236 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_interpolate_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.cpp index 5e9eeeebc5a7ab..b51e437923eaed 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,12 +25,12 @@ void MKLDNNLrnNode::getSupportedDescriptors() { auto * lrnLayer = dynamic_cast(getCnnLayer().get()); if (lrnLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert lrn layer."; + IE_THROW() << "Cannot convert lrn layer."; if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); isAcrossMaps = lrnLayer->_isAcrossMaps; alpha = lrnLayer->_alpha; @@ -66,7 +66,7 @@ bool MKLDNNLrnNode::created() const { void MKLDNNLrnNode::initOptimalPrimitiveDescriptor() { auto selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto config = selected_pd->getConfig(); if (isInitConfig(config)) return; @@ -74,7 +74,7 @@ void MKLDNNLrnNode::initOptimalPrimitiveDescriptor() { if (config.inConfs.size() != 1 || config.outConfs.size() != 1 || (!isUninitTensorDesc(config.inConfs[0].desc) && !isUninitTensorDesc(config.outConfs[0].desc) && config.inConfs[0].desc != config.outConfs[0].desc)) - THROW_IE_EXCEPTION << "Layer " << getName() << " has incorrect selected config!"; + IE_THROW() << "Layer " << getName() << " has incorrect selected config!"; if (!isUninitTensorDesc(config.inConfs[0].desc)) { config.outConfs[0].desc = config.inConfs[0].desc; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.h index 622b2d91a168be..68dc087ab59413 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_lrn_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.cpp index 9f8fb7da1ea39a..895e2ccfc53a80 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.hpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.hpp index 832aa2cfa11fb9..fbc560f23d3000 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.hpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_memory_node.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.cpp index 5200b1386e5839..55bdb61a2106ae 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.cpp @@ -616,17 +616,17 @@ void MKLDNNMVNNode::getSupportedDescriptors() { auto cnnLayer = getCnnLayer(); if (cnnLayer == nullptr) - THROW_IE_EXCEPTION << errPrefix << "does not have CNN layer."; + IE_THROW() << errPrefix << "does not have CNN layer."; if (getParentEdges().size() > 2) - THROW_IE_EXCEPTION << errPrefix << "has incorrect number of input edges."; + IE_THROW() << errPrefix << "has incorrect number of input edges."; if (getChildEdges().empty()) - THROW_IE_EXCEPTION << errPrefix << "has incorrect number of output edges."; + IE_THROW() << errPrefix << "has incorrect number of output edges."; const auto& numOfDims = getParentEdgeAt(0)->getDims().ndims(); if (numOfDims < 1 || numOfDims > 5) - THROW_IE_EXCEPTION << errPrefix << "doesn't support input with size of dimensions: " << numOfDims; + IE_THROW() << errPrefix << "doesn't support input with size of dimensions: " << numOfDims; across_channels = false; if (getParentEdges().size() == 1) { @@ -759,7 +759,7 @@ std::tuple MKLDNNMVNNode::get5dShapes(co case 3 : { shapes = std::make_tuple(dims[0], dims[1], 1, dims[2], 1); break; } case 4 : { shapes = std::make_tuple(dims[0], dims[1], 1, dims[2], dims[3]); break; } case 5 : { shapes = std::make_tuple(dims[0], dims[1], dims[2], dims[3], dims[4]); break; } - default : { THROW_IE_EXCEPTION << "MVN layer with name '" << getCnnLayer()->name << "' doesn't support planar layout with rank: " << dims.size(); } + default : { IE_THROW() << "MVN layer with name '" << getCnnLayer()->name << "' doesn't support planar layout with rank: " << dims.size(); } } return shapes; } @@ -768,11 +768,11 @@ void MKLDNNMVNNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto& srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory didn't allocate."; + IE_THROW() << "Input memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto selectedPD = getSelectedPrimitiveDescriptor(); auto jcp = jit_mvn_config_params(); @@ -840,7 +840,7 @@ void MKLDNNMVNNode::setPostOps(mkldnn::primitive_attr &attr, bool initWeights) { eltwiseNode->appendPostOps(ops); continue; } - THROW_IE_EXCEPTION << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; + IE_THROW() << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; } attr.set_post_ops(ops); } @@ -855,7 +855,7 @@ void MKLDNNMVNNode::execute(mkldnn::stream strm) { auto dim = getParentEdgeAt(0)->getDesc().getDims(); if (mayiuse(cpu::x64::sse41)) { if (!mvn_mean_kernel || (normalize_variance && !mvn_variance_kernel) || !mvn_kernel) { - THROW_IE_EXCEPTION << "MVN layer with name '" << getCnnLayer()->name << "' doesn't create kernel to execute on sse41 above platform."; + IE_THROW() << "MVN layer with name '" << getCnnLayer()->name << "' doesn't create kernel to execute on sse41 above platform."; } Layout layout = getParentEdgeAt(0)->getDesc().getLayout(); if (layout == C || layout == NC || layout == CHW || layout == NCHW || layout == NCDHW) { @@ -942,7 +942,7 @@ void MKLDNNMVNNode::mvn_pln(const uint8_t* src_data, uint8_t* dst_data, const Si arg.src_stride = src_stride_size; arg.dst_stride = dst_stride_size; arg.work_amount = static_cast(C2 / blk_size); // work amount for vector part - arg.oc_off = static_cast(c * sizeof(float)); + arg.oc_off = sizeof(float) * c; (*mvn_kernel)(&arg); }); } else { @@ -956,7 +956,7 @@ void MKLDNNMVNNode::mvn_pln(const uint8_t* src_data, uint8_t* dst_data, const Si arg.src_stride = src_stride_size; arg.dst_stride = dst_stride_size; arg.work_amount = static_cast(C2 / blk_size); - arg.oc_off = static_cast(c * sizeof(float)); + arg.oc_off = sizeof(float) * c; (*mvn_kernel)(&arg); }); } @@ -1351,8 +1351,11 @@ bool MKLDNNMVNNode::checkAxesSuitability(const std::shared_ptr(node); if (mvn != nullptr && node->get_input_size() == 2) { if (auto axesNode = dynamic_cast(mvn->get_input_node_ptr(1))) { - auto axesVal = axesNode->cast_vector(); auto& mvnShape = mvn->get_output_shape(0); + auto axesVal = axesNode->cast_vector(); + for (int& axe : axesVal) + axe = axe < 0 ? axe + mvnShape.size() : axe; + std::sort(axesVal.begin(), axesVal.end()); if (mvnShape.size() == 1) { if (axesVal.size() == 1 && axesVal[0] == 0) return true; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.h index c114ba458c20fd..b28daa3f7e3eaf 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_mvn_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.cpp index b193716bf4d10b..fc18003ebc3f25 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.cpp @@ -15,8 +15,8 @@ #include #include #include -#include "bf16transformer.h" #include "common/cpu_memcpy.h" +#include "nodes/common/cpu_convert.h" #include using namespace mkldnn; @@ -207,7 +207,7 @@ struct jit_uni_normalize_kernel_f32 : public jit_uni_normalize_kernel, public ji this->postamble(); - if (!mayiuse(avx512_core_bf16) && mayiuse(avx512_core)) + if (!mayiuse(avx512_core_bf16) && mayiuse(avx512_core) && emu_vcvtneps2bf16 != nullptr) emu_vcvtneps2bf16->emit_data(); for (auto& inj : eltwise_injectors) inj->prepare_table(); @@ -249,7 +249,7 @@ struct jit_uni_normalize_kernel_f32 : public jit_uni_normalize_kernel, public ji Vmm vmm_d_bias = Vmm(6); Vmm vmm_zero = Vmm(7); - std::unique_ptr emu_vcvtneps2bf16; + std::unique_ptr emu_vcvtneps2bf16 = nullptr; std::vector>> eltwise_injectors; std::vector>> depthwise_injectors; @@ -731,59 +731,60 @@ void MKLDNNNormalizeNode::getSupportedDescriptors() { std::string errPrefix = "Normalize node with name '" + getName() + "' "; if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << errPrefix << " has incorrect number of input edges: " << getParentEdges().size(); + IE_THROW() << errPrefix << " has incorrect number of input edges: " << getParentEdges().size(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << errPrefix << " has incorrect number of output edges: " << getChildEdges().size(); + IE_THROW() << errPrefix << " has incorrect number of output edges: " << getChildEdges().size(); if (getParentEdgeAt(0)->getDims().ndims() > 4 || getParentEdgeAt(0)->getDims().ndims() < 2) { - THROW_IE_EXCEPTION << errPrefix << "has invalid input shape. Normalize supports from 2D to 4D blobs."; + IE_THROW() << errPrefix << "has invalid input shape. Normalize supports from 2D to 4D blobs."; } auto *layer = getCnnLayer().get(); if (layer == nullptr) - THROW_IE_EXCEPTION << errPrefix << " has nullable CnnLayer."; + IE_THROW() << errPrefix << " has nullable CnnLayer."; across_spatial = layer->GetParamAsBool("across_spatial", false); channel_shared = layer->GetParamAsBool("channel_shared", false); eps = layer->GetParamAsFloat("eps"); MemoryBlob::Ptr tweights = as(layer->blobs.at("weights")); if (!tweights) { - THROW_IE_EXCEPTION << errPrefix << "has not initialized weights or they cannot be casted to MemoryBlob."; + IE_THROW() << errPrefix << "has not initialized weights or they cannot be casted to MemoryBlob."; } auto inData = getCnnLayer()->insData[0].lock(); if (inData == nullptr) { - THROW_IE_EXCEPTION << errPrefix << "has nullable input data."; + IE_THROW() << errPrefix << "has nullable input data."; } const auto& inDims = inData->getDims(); if (inDims.size() < 2) - THROW_IE_EXCEPTION << errPrefix << "has unsupported layout: '" << inData->getLayout() << "'."; + IE_THROW() << errPrefix << "has unsupported layout: '" << inData->getLayout() << "'."; const size_t channels = inDims[1]; const auto weightsSize = tweights->size(); if (weightsSize != channels) { if (weightsSize == 1) { channel_shared = true; } else { - THROW_IE_EXCEPTION << errPrefix << "has unsupported broadcast type. Channels size: " << channels << "; Weights size: " << weightsSize; + IE_THROW() << errPrefix << "has unsupported broadcast type. Channels size: " << channels << "; Weights size: " << weightsSize; } } weights_prec = tweights->getTensorDesc().getPrecision(); + if (weights_prec != Precision::FP32 && weights_prec != Precision::BF16) { + // Unknown non supported data type, return an error + IE_THROW() << layer->name << "Weights for layer Normalize with name '" << layer->name << + "' has unsupported data type " << tweights->getTensorDesc().getPrecision(); + } + TensorDesc td(Precision::FP32, tweights->getTensorDesc().getDims(), tweights->getTensorDesc().getLayout()); + weights_blob = make_shared_blob(td); + weights_blob->allocate(); + float* dst = weights_blob->wmap(); if (weights_prec == Precision::FP32) { - TensorDesc td(Precision::FP32, tweights->getTensorDesc().getDims(), tweights->getTensorDesc().getLayout()); - weights_blob = make_shared_blob(td); - weights_blob->allocate(); float* src = layer->blobs.at("weights")->buffer(); - float* dst = weights_blob->wmap(); cpu_memcpy(dst, src, layer->blobs.at("weights")->byteSize()); } else if (weights_prec == Precision::BF16) { - MKLDNNPlugin::BF16Transformer transformer; - weights_blob = transformer.convertBF16ToFloat(tweights); - } else { - // Unknown non supported data type, return an error - THROW_IE_EXCEPTION << layer->name << "Weights for layer Normalize with name '" << layer->name << - "' has unsupported data type " << tweights->getTensorDesc().getPrecision(); + short* bf16src = tweights->rmap().as(); + cpu_convert(bf16src, dst, Precision::BF16, Precision::FP32, weights_blob->size()); } } @@ -819,13 +820,13 @@ void MKLDNNNormalizeNode::initSupportedPrimitiveDescriptors() { return false; }; if (!isOneOf(inputPrecision, {Precision::FP32, Precision::BF16, Precision::I8, Precision::U8})) { - THROW_IE_EXCEPTION << "Unsupported input precision. " << getName(); + IE_THROW() << "Unsupported input precision. " << getName(); } if (!isOneOf(outputPrecision, {Precision::FP32, Precision::BF16, Precision::I8, Precision::U8})) { - THROW_IE_EXCEPTION << "Unsupported output precision. " << getName(); + IE_THROW() << "Unsupported output precision. " << getName(); } if (!isOneOf(weights_prec, {Precision::FP32, Precision::BF16})) { - THROW_IE_EXCEPTION << "Unsupported wights precision. " << getName(); + IE_THROW() << "Unsupported wights precision. " << getName(); } auto inputDataType = MKLDNNExtensionUtils::IEPrecisionToDataType(inputPrecision); @@ -887,7 +888,7 @@ void MKLDNNNormalizeNode::setPostOps(mkldnn::primitive_attr &attr, bool initWeig continue; } - THROW_IE_EXCEPTION << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; + IE_THROW() << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; } attr.set_post_ops(ops); @@ -897,11 +898,11 @@ void MKLDNNNormalizeNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto& srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory didn't allocate."; + IE_THROW() << "Input memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto selectedPD = getSelectedPrimitiveDescriptor(); jcp.src_dt = MKLDNNExtensionUtils::IEPrecisionToDataType(selectedPD->getConfig().inConfs[0].desc.getPrecision()); @@ -1468,13 +1469,13 @@ void MKLDNNNormalizeNode::normalize_function(const in_data_t* src_data, out_data } else if (jcp.is_blk) { normalize_blk(src_data, dst_data, dims); } else { - THROW_IE_EXCEPTION << "The selected layout is not supported."; + IE_THROW() << "The selected layout is not supported."; } } else { if (jcp.is_nchw) { normalize_nchw_ref(src_data, dst_data, dims); } else { - THROW_IE_EXCEPTION << "Only support plain layout on machine w/o sse42."; + IE_THROW() << "Only support plain layout on machine w/o sse42."; } } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.h index c9d20a047118d1..fae0bd915dafd9 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_normalize_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.cpp index afbbfb1b7ff69b..3c9d9e141e55ae 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -24,7 +24,7 @@ MKLDNNPadNode::MKLDNNPadNode(const InferenceEngine::CNNLayerPtr& layer, const mk void MKLDNNPadNode::getSupportedDescriptors() { auto* padLayer = dynamic_cast(getCnnLayer().get()); if (padLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert Pad layer."; + IE_THROW() << "Cannot convert Pad layer."; padsBegin = padLayer->GetParamAsUInts("pads_begin"); padsEnd = padLayer->GetParamAsUInts("pads_end"); @@ -32,7 +32,7 @@ void MKLDNNPadNode::getSupportedDescriptors() { SizeVector srcDims = padLayer->insData[0].lock()->getTensorDesc().getDims(); SizeVector dstDims = padLayer->outData[0]->getTensorDesc().getDims(); if (srcDims.size() != dstDims.size() || padsBegin.size() != srcDims.size() || padsEnd.size() != srcDims.size()) - THROW_IE_EXCEPTION << padLayer->name << " Incorrect number of input/output dimensions!"; + IE_THROW() << padLayer->name << " Incorrect number of input/output dimensions!"; std::string pad_mode = padLayer->GetParamAsString("pad_mode"); if (pad_mode == "constant") { @@ -44,23 +44,23 @@ void MKLDNNPadNode::getSupportedDescriptors() { padMode = REFLECT; for (size_t i = 0; i < srcDims.size(); i++) { if ((srcDims[i] - 1) < padsBegin[i] || (srcDims[i] - 1) < padsEnd[i]) - THROW_IE_EXCEPTION << padLayer->name << " Incorrect padsBegin or padsEnd for 'reflect' pad mode"; + IE_THROW() << padLayer->name << " Incorrect padsBegin or padsEnd for 'reflect' pad mode"; } } else if (pad_mode == "symmetric") { padMode = SYMMETRIC; for (size_t i = 0; i < srcDims.size(); i++) { if (srcDims[i] < padsBegin[i] || srcDims[i] < padsEnd[i]) - THROW_IE_EXCEPTION << padLayer->name << " Incorrect padsBegin or padsEnd for 'symmetric' pad mode"; + IE_THROW() << padLayer->name << " Incorrect padsBegin or padsEnd for 'symmetric' pad mode"; } } else { - THROW_IE_EXCEPTION << padLayer->name + IE_THROW() << padLayer->name << " Incorrect pad_mode. Only constants|edge|reflect|symmetric modes are supported!"; } if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); } void MKLDNNPadNode::initSupportedPrimitiveDescriptors() { @@ -122,19 +122,24 @@ void MKLDNNPadNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto& srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory for Pad " << getName() << " didn't allocate."; + IE_THROW() << "Destination memory for Pad " << getName() << " didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory for Pad " << getName() << " didn't allocate."; + IE_THROW() << "Input memory for Pad " << getName() << " didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor for Pad " << getName() << " is not set."; + IE_THROW() << "Preferable primitive descriptor for Pad " << getName() << " is not set."; params.sizeData = this->getSelectedPrimitiveDescriptor()->getConfig().inConfs[0].desc.getPrecision().size(); params.srcDims = getParentEdgeAt(0)->getBlob()->getTensorDesc().getBlockingDesc().getBlockDims(); params.dstDims = getChildEdgeAt(0)->getBlob()->getTensorDesc().getBlockingDesc().getBlockDims(); - params.srcStrides = getParentEdgeAt(0)->getBlob()->getTensorDesc().getBlockingDesc().getStrides(); - params.dstStrides = getChildEdgeAt(0)->getBlob()->getTensorDesc().getBlockingDesc().getStrides(); + size_t nDims = params.srcDims.size(); + params.srcStrides.resize(nDims, 1); + params.dstStrides.resize(nDims, 1); + for (int i = nDims - 2; i >= 0; i--) { + params.srcStrides[i] = params.srcStrides[i + 1] * params.srcDims[i + 1]; + params.dstStrides[i] = params.dstStrides[i + 1] * params.dstDims[i + 1]; + } if (getParentEdgeAt(0)->getMemory().GetDesc().isBlockedCFormat()) { padsBegin[1] /= params.srcDims[params.srcDims.size() - 1]; @@ -169,9 +174,10 @@ void MKLDNNPadNode::createPrimitive() { } } - size_t nGluingLastDims = params.dstStrides[std::max(endIdx - 1, 0)]; - params.nDimsForWork = std::max(endIdx - std::max(beginIdx, 0), 1); - params.workAmount = params.dstDims[0]; + params.lastDstDim = params.dstStrides[std::max(endIdx - 1, 0)]; + params.nDimsForWork = endIdx - std::max(beginIdx, 0); + params.nThreads = params.nDimsForWork > 0 ? 0 : 1; + params.workAmount = params.nDimsForWork > 0 ? params.dstDims[0] : 1lu; for (int i = 1; i <= beginIdx; ++i) { params.workAmount *= params.dstDims[i]; params.dstDims[0] *= params.dstDims[i]; @@ -189,9 +195,8 @@ void MKLDNNPadNode::createPrimitive() { padsBegin.erase(padsBegin.begin() + 1, padsBegin.begin() + beginIdx); padsEnd.erase(padsEnd.begin() + 1, padsEnd.begin() + beginIdx); } - params.workAmount = params.workAmount * params.dstStrides[0] / nGluingLastDims; - params.lastDstDim = nGluingLastDims; + params.workAmount = params.workAmount * params.dstStrides[0] / params.lastDstDim; params.shift = params.dstStrides[params.nDimsForWork]; if (padMode != CONSTANT || (padMode == CONSTANT && padValue == 0)) { params.lastDstDim *= params.sizeData; @@ -247,7 +252,10 @@ void MKLDNNPadNode::padConstant() { return; } - InferenceEngine::Precision precision = this->getSelectedPrimitiveDescriptor()->getConfig().inConfs[0].desc.getPrecision(); + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU Pad node with name '" << getName() << "' doesn't have primitive descriptors."; + InferenceEngine::Precision precision = selectedPrimitiveDescriptor->getConfig().inConfs[0].desc.getPrecision(); OV_SWITCH(MKLDNNPlugin, PadConstantEmitter, this, precision, OV_CASE(InferenceEngine::Precision::FP32, float), OV_CASE(InferenceEngine::Precision::I32, int32_t), @@ -258,11 +266,15 @@ void MKLDNNPadNode::padConstant() { template void MKLDNNPadNode::padConstantCommon() { - T* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); + const T* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); T* dstData = reinterpret_cast(this->getChildEdgeAt(0)->getMemoryPtr()->GetPtr()); - T value = static_cast(padValue); + const T value = static_cast(padValue); + + const size_t beginShift = padsBegin[params.nDimsForWork] * params.shift; + const size_t copySize = params.srcDims[params.nDimsForWork] * params.shift; + const size_t endShift = padsEnd[params.nDimsForWork] * params.shift; - parallel_nt(0, [&](const int ithr, const int nthr) { + parallel_nt(params.nThreads, [&](const int ithr, const int nthr) { size_t start = 0, end = 0; SizeVector indexes(params.nDimsForWork, 0); splitter(params.workAmount, nthr, ithr, start, end); @@ -288,11 +300,9 @@ void MKLDNNPadNode::padConstantCommon() { for (size_t idx = 0; idx < params.nDimsForWork; ++idx) srcIdx += (indexes[idx] - padsBegin[idx]) * params.srcStrides[idx]; - std::fill_n(&dstData[dstIdx], padsBegin[params.nDimsForWork] * params.shift, value); - cpu_memcpy(&dstData[dstIdx + padsBegin[params.nDimsForWork] * params.shift], &srcData[srcIdx], - params.srcDims[params.nDimsForWork] * params.shift * params.sizeData); - std::fill_n(&dstData[dstIdx + params.srcODims[params.nDimsForWork] * params.shift], - padsEnd[params.nDimsForWork] * params.shift, value); + std::fill_n(&dstData[dstIdx], beginShift, value); + cpu_memcpy(&dstData[dstIdx + beginShift], &srcData[srcIdx], copySize * params.sizeData); + std::fill_n(&dstData[dstIdx + beginShift + copySize], endShift, value); parallel_step(params.nDimsForWork, params.dstDims, indexes); } @@ -300,10 +310,14 @@ void MKLDNNPadNode::padConstantCommon() { } void MKLDNNPadNode::padConstantZero() { - uint8_t* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); + const uint8_t* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); uint8_t* dstData = reinterpret_cast(this->getChildEdgeAt(0)->getMemoryPtr()->GetPtr()); - parallel_nt(0, [&](const int ithr, const int nthr) { + const size_t beginShift = padsBegin[params.nDimsForWork] * params.shift; + const size_t copySize = params.srcDims[params.nDimsForWork] * params.shift; + const size_t endShift = padsEnd[params.nDimsForWork] * params.shift; + + parallel_nt(params.nThreads, [&](const int ithr, const int nthr) { size_t start = 0, end = 0; SizeVector indexes(params.nDimsForWork, 0); splitter(params.workAmount, nthr, ithr, start, end); @@ -330,10 +344,9 @@ void MKLDNNPadNode::padConstantZero() { srcIdx += (indexes[idx] - padsBegin[idx]) * params.srcStrides[idx]; srcIdx *= params.sizeData; - memset(&dstData[dstIdx], 0, padsBegin[params.nDimsForWork] * params.shift); - cpu_memcpy(&dstData[dstIdx + padsBegin[params.nDimsForWork] * params.shift], &srcData[srcIdx], - params.srcDims[params.nDimsForWork] * params.shift); - memset(&dstData[dstIdx + params.srcODims[params.nDimsForWork] * params.shift], 0, padsEnd[params.nDimsForWork] * params.shift); + memset(&dstData[dstIdx], 0, beginShift); + cpu_memcpy(&dstData[dstIdx + beginShift], &srcData[srcIdx], copySize); + memset(&dstData[dstIdx + beginShift + copySize], 0, endShift); parallel_step(params.nDimsForWork, params.dstDims, indexes); } @@ -341,10 +354,13 @@ void MKLDNNPadNode::padConstantZero() { } void MKLDNNPadNode::padEdge() { - uint8_t* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); + const uint8_t* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); uint8_t* dstData = reinterpret_cast(this->getChildEdgeAt(0)->getMemoryPtr()->GetPtr()); - parallel_nt(0, [&](const int ithr, const int nthr) { + const size_t beginShift = padsBegin[params.nDimsForWork] * params.shift; + const size_t copySize = params.srcDims[params.nDimsForWork] * params.shift; + + parallel_nt(params.nThreads, [&](const int ithr, const int nthr) { size_t start = 0, end = 0; SizeVector indexes(params.nDimsForWork, 0); splitter(params.workAmount, nthr, ithr, start, end); @@ -365,11 +381,10 @@ void MKLDNNPadNode::padEdge() { for (size_t i = 0; i < padsBegin[params.nDimsForWork]; ++i) cpu_memcpy(&dstData[dstIdx + i * params.shift], &srcData[srcIdx], params.shift); - cpu_memcpy(&dstData[dstIdx + padsBegin[params.nDimsForWork] * params.shift], &srcData[srcIdx], - params.srcDims[params.nDimsForWork] * params.shift); + cpu_memcpy(&dstData[dstIdx + beginShift], &srcData[srcIdx], copySize); for (size_t i = 0; i < padsEnd[params.nDimsForWork]; ++i) - cpu_memcpy(&dstData[dstIdx + params.srcODims[params.nDimsForWork] * params.shift + i * params.shift], + cpu_memcpy(&dstData[dstIdx + beginShift + copySize + i * params.shift], &srcData[srcIdx + (params.srcDims[params.nDimsForWork] - 1) * params.shift], params.shift); parallel_step(params.nDimsForWork, params.dstDims, indexes); @@ -378,12 +393,11 @@ void MKLDNNPadNode::padEdge() { } void MKLDNNPadNode::padReflectOrSymmetric(const bool isSymmetric) { - uint8_t* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); + const uint8_t* srcData = reinterpret_cast(this->getParentEdgeAt(0)->getMemoryPtr()->GetPtr()); uint8_t* dstData = reinterpret_cast(this->getChildEdgeAt(0)->getMemoryPtr()->GetPtr()); - size_t shift = isSymmetric ? 1 : 0; - parallel_nt(0, [&](const int ithr, const int nthr) { + parallel_nt(params.nThreads, [&](const int ithr, const int nthr) { size_t start = 0, end = 0; SizeVector indexes(params.nDimsForWork, 0); splitter(params.workAmount, nthr, ithr, start, end); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.h index afe86b6abbb425..1c598e497d048f 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pad_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -49,11 +49,12 @@ class MKLDNNPadNode : public MKLDNNNode { InferenceEngine::SizeVector srcStrides; InferenceEngine::SizeVector dstStrides; InferenceEngine::SizeVector srcDimsForReflectOrSymmetric; - size_t nDimsForWork; - size_t workAmount; - size_t lastDstDim; - size_t shift; - uint8_t sizeData; + int nThreads = 0; + size_t nDimsForWork = 0lu; + size_t workAmount = 0lu; + size_t lastDstDim = 1lu; + size_t shift = 0lu; + uint8_t sizeData = 1; } params; template diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.cpp index b38730bccdd363..507cfa1d2385a9 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -141,13 +141,13 @@ MKLDNNPermuteNode::MKLDNNPermuteNode(const InferenceEngine::CNNLayerPtr& layer, void MKLDNNPermuteNode::getSupportedDescriptors() { if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (!getChildEdges().size()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); auto& layer = getCnnLayer(); if (!layer) { - THROW_IE_EXCEPTION << "Cannot get CNNLayer."; + IE_THROW() << "Cannot get CNNLayer."; } order.clear(); @@ -233,11 +233,11 @@ void MKLDNNPermuteNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto& srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory didn't allocate."; + IE_THROW() << "Input memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; Precision precision = getSelectedPrimitiveDescriptor()->getConfig().inConfs[0].desc.getPrecision(); auto data_type = MKLDNNExtensionUtils::IEPrecisionToDataType(precision); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.h index 94d0ecd1aa484e..2a591980b23e94 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_permute_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.cpp index f32ee3da56c7ef..0693453ed73356 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -46,12 +46,12 @@ void MKLDNNPoolingNode::getSupportedDescriptors() { auto * poolingLayer = dynamic_cast(getCnnLayer().get()); if (poolingLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert pooling layer."; + IE_THROW() << "Cannot convert pooling layer."; if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); type = poolingLayer->_type; exclude_pad = poolingLayer->_exclude_pad; @@ -93,7 +93,7 @@ void MKLDNNPoolingNode::getSupportedDescriptors() { auto parentDims = getParentEdgeAt(0)->getDims(); auto childDims = getChildEdgeAt(0)->getDims(); if ((parentDims.ndims() < 4) || (parentDims.ndims() > 5)) - THROW_IE_EXCEPTION << "Pooling layer. Unsupported mode. Only 4D and 5D blobs are supported as input."; + IE_THROW() << "Pooling layer. Unsupported mode. Only 4D and 5D blobs are supported as input."; for (int i = 0; i < effective_pad_end.size(); i++) { int krn = kernel[i]; @@ -176,7 +176,7 @@ void MKLDNNPoolingNode::createDescriptor(const std::vector orig_dims) { @@ -287,7 +287,7 @@ void MKLDNNPoolingNode::initDescriptor(const InferenceEngine::LayerConfig &confi impl_desc_type impl_type = parse_impl_name(itpd.impl_info_str()); if (selected_count == selectedPrimitiveDescriptorIndex) { if (impl_type != selectedPD->getImplementationType()) { - THROW_IE_EXCEPTION << "Cannot get the original layer configuration!"; + IE_THROW() << "Cannot get the original layer configuration!"; } rightConfig = cfg; } @@ -310,13 +310,13 @@ void MKLDNNPoolingNode::initDescriptor(const InferenceEngine::LayerConfig &confi for (size_t i = 0; i < selectedConfig.inConfs.size(); i++) { if (selectedConfig.inConfs[i].desc.getLayout() != InferenceEngine::Layout::ANY && !MKLDNNExtensionUtils::initTensorsAreEqual(selectedConfig.inConfs[i].desc, config.inConfs[i].desc)) - THROW_IE_EXCEPTION << "Incorrect descriptor for node: " << getName(); + IE_THROW() << "Incorrect descriptor for node: " << getName(); } for (size_t i = 0; i < selectedConfig.outConfs.size(); i++) { if (selectedConfig.outConfs[i].desc.getLayout() != InferenceEngine::Layout::ANY && !MKLDNNExtensionUtils::initTensorsAreEqual(selectedConfig.outConfs[i].desc, config.outConfs[i].desc)) - THROW_IE_EXCEPTION << "Incorrect descriptor for node: " << getName(); + IE_THROW() << "Incorrect descriptor for node: " << getName(); } rightConfig = config; } @@ -334,7 +334,7 @@ void MKLDNNPoolingNode::setPostOps(mkldnn::primitive_attr &attr, bool initWeight continue; } - THROW_IE_EXCEPTION << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; + IE_THROW() << "Fusing of " << NameFromType(node->getType()) << " operation to " << NameFromType(this->getType()) << " node is not implemented"; } attr.set_post_ops(ops); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.h index 747084fb636d59..7725f4703118a3 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_pooling_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_quantize_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_quantize_node.cpp index 3215bfc8749e13..6af113381ed362 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_quantize_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_quantize_node.cpp @@ -279,8 +279,8 @@ struct jit_uni_quantization_kernel : public jit_uni_quantize_kernel, public jit_ Reg64 reg_output_scale = rbx; Reg64 reg_output_shift = rdx; - bool do_rounding; - bool do_dequantization; + bool do_rounding = true; + bool do_dequantization = true; inline void compute_planar() { int src_type_size = jqp_.src_prc.size(); @@ -823,20 +823,20 @@ MKLDNNQuantizeNode::MKLDNNQuantizeNode(CNNLayerPtr layer, const mkldnn::engine& void MKLDNNQuantizeNode::init() { auto* quantizeLayer = dynamic_cast(getCnnLayer().get()); if (quantizeLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert Quantize layer " << getName(); + IE_THROW() << "Cannot convert Quantize layer " << getName(); levels = quantizeLayer->levels; if (levels <= 1) - THROW_IE_EXCEPTION << "Quantize layer " << getName() << " supports only parameter levels > 1"; + IE_THROW() << "Quantize layer " << getName() << " supports only parameter levels > 1"; if (getParentEdges().size() != 5) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); for (size_t i = 0; i < getParentEdges().size(); i++) { if (getParentEdgesAtPort(i).size() != 1) - THROW_IE_EXCEPTION << "Quantize layer " << getName() << " has unsupported number of parent edges at port " << i; + IE_THROW() << "Quantize layer " << getName() << " has unsupported number of parent edges at port " << i; } auto initAxisIdx = [&](size_t edgeIdx) { @@ -857,7 +857,7 @@ void MKLDNNQuantizeNode::init() { } } if (numberOfNonUnit > 1) { - THROW_IE_EXCEPTION << "Quantize layer " << getName() << " supports only per-tensor and per-channel quantizations"; + IE_THROW() << "Quantize layer " << getName() << " supports only per-tensor and per-channel quantizations"; } return axisIdx; @@ -897,7 +897,7 @@ void MKLDNNQuantizeNode::init() { } if (quantizationParamsAxisesIdxs.size() > 1 || quantizationParamsAxisesSizes.size() > 1) - THROW_IE_EXCEPTION << "Unsupported input sizes for Quantize layer with name " << getName(); + IE_THROW() << "Unsupported input sizes for Quantize layer with name " << getName(); if (quantizationParamsAxisesIdxs.size() == 1) { axis = *quantizationParamsAxisesIdxs.begin(); @@ -913,15 +913,15 @@ void MKLDNNQuantizeNode::init() { if (quantizationParamsAxisesSizes.size() == 1) { if (*quantizationParamsAxisesSizes.begin() != axisRealSize) - THROW_IE_EXCEPTION << "Unsupported input sizes for Quantize layer with name " << getName(); + IE_THROW() << "Unsupported input sizes for Quantize layer with name " << getName(); } for (size_t i = 1; i < getParentEdges().size(); i++) { if (!getParentEdgesAtPort(i)[0]->getParent()->isConstant()) - THROW_IE_EXCEPTION << "Quantize layer with name " << getName() << " has non const input on " << i << " port"; + IE_THROW() << "Quantize layer with name " << getName() << " has non const input on " << i << " port"; auto prec = getCnnLayer()->insData[i].lock()->getPrecision(); if (prec != Precision::FP32) - THROW_IE_EXCEPTION << "Quantize layer with name " << getName() << " has unsupported precision " << prec << " on " << i << " port"; + IE_THROW() << "Quantize layer with name " << getName() << " has unsupported precision " << prec << " on " << i << " port"; } auto inputLowBlob = dynamic_cast*>(getParentEdgesAtPort(1)[0]->getParent()->getCnnLayer()->blobs["custom"].get()); @@ -1032,7 +1032,7 @@ void MKLDNNQuantizeNode::init() { #if defined(VALIDATE_QUANTIZATION_RANGES) if ((il == ih && levels != 2) || il > ih || std::isnan(il) || std::isnan(ih) || std::isinf(il) || std::isinf(ih)) { - THROW_IE_EXCEPTION << "Quantize layer with name '" << getName() << "' has invalid input quantize ranges: " + IE_THROW() << "Quantize layer with name '" << getName() << "' has invalid input quantize ranges: " << "inputLow = " << il << ", inputHigh = " << ih; } #endif @@ -1047,7 +1047,7 @@ void MKLDNNQuantizeNode::init() { #if defined(VALIDATE_QUANTIZATION_RANGES) if (std::isnan(ol) || std::isnan(oh) || std::isinf(ol) || std::isinf(oh)) { - THROW_IE_EXCEPTION << "Quantize layer with name '" << getName() << "' has wrong output quantize ranges: " + IE_THROW() << "Quantize layer with name '" << getName() << "' has wrong output quantize ranges: " << "outputLow = " << ol << ", outputHigh = " << oh; } #endif @@ -1120,24 +1120,24 @@ void MKLDNNQuantizeNode::getSupportedDescriptors() { std::string errorPrefix = "Quantize layer with name '" + getName() + "' "; if (getParentEdgesAtPort(0)[0]->getDims().ndims() != getChildEdgesAtPort(0)[0]->getDims().ndims()) { - THROW_IE_EXCEPTION << errorPrefix << "has different ranks for input and output tensors"; + IE_THROW() << errorPrefix << "has different ranks for input and output tensors"; } if (getParentEdgesAtPort(0)[0]->getDims().ndims() < 1ul || getParentEdgesAtPort(0)[0]->getDims().ndims() > 5ul) { - THROW_IE_EXCEPTION << errorPrefix << "has unsupported number of dimensions for input at edge 0"; + IE_THROW() << errorPrefix << "has unsupported number of dimensions for input at edge 0"; } if (isBinarization()) { if (getParentEdgesAtPort(0)[0]->getDims().ndims() != 4ul) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support input/output rank != 4"; + IE_THROW() << errorPrefix << "doesn't support input/output rank != 4"; } } if (getAxis() != 1) { if (isBinarization()) - THROW_IE_EXCEPTION << errorPrefix << "doesn't support non per-tensor binarization for axis: " << getAxis(); + IE_THROW() << errorPrefix << "doesn't support non per-tensor binarization for axis: " << getAxis(); if (getAxis() != 0) - THROW_IE_EXCEPTION << errorPrefix << "doesn't support non per-tensor quantization for axis: " << getAxis(); + IE_THROW() << errorPrefix << "doesn't support non per-tensor quantization for axis: " << getAxis(); } } @@ -1209,7 +1209,11 @@ void MKLDNNQuantizeNode::createPrimitive() { jqp.op_type = quantizeOpType; - if (getSelectedPrimitiveDescriptor()->getImplementationType() != impl_desc_type::ref) { + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU quantize node with name '" << getName() << "' doesn't have primitive descriptors."; + + if (selectedPrimitiveDescriptor->getImplementationType() != impl_desc_type::ref) { if (mayiuse(cpu::x64::avx512_common)) { if (isBinarization()) quantize_kernel.reset(new jit_uni_binarization_kernel(jqp)); @@ -1523,7 +1527,11 @@ void MKLDNNQuantizeNode::executeQuantization() { } void MKLDNNQuantizeNode::execute(mkldnn::stream strm) { - if (getSelectedPrimitiveDescriptor()->getImplementationType() != impl_desc_type::ref) { + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU quantize node with name '" << getName() << "' doesn't have primitive descriptors."; + + if (selectedPrimitiveDescriptor->getImplementationType() != impl_desc_type::ref) { if (jqp.op_type == QuantizeOpType::Binarization) executeBinarization(); else diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.cpp index 9b5b73d62792f0..9a6bd0216dcd72 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -1327,12 +1327,12 @@ void MKLDNNReduceNode::getSupportedDescriptors() { return; if (getParentEdges().size() != 2) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << " gets incorrect number of input edges!"; + IE_THROW() << "Reduce layer with name " << getName() << " gets incorrect number of input edges!"; if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << " gets incorrect number of output edges!"; + IE_THROW() << "Reduce layer with name " << getName() << " gets incorrect number of output edges!"; if (getParentEdgeAt(REDUCE_INDEXES)->getDims().ndims() != 1) { - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << " gets incorrect index vector dimension! Index vector should be 1 dimension."; + IE_THROW() << "Reduce layer with name " << getName() << " gets incorrect index vector dimension! Index vector should be 1 dimension."; } auto *layer = getCnnLayer().get(); @@ -1340,13 +1340,13 @@ void MKLDNNReduceNode::getSupportedDescriptors() { if (keep_dims) { if (getParentEdgeAt(REDUCE_DATA)->getDims().ndims() != getChildEdgeAt(0)->getDims().ndims()) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "gets incorrect number of input/output dimensions!"; + IE_THROW() << "Reduce layer with name " << getName() << "gets incorrect number of input/output dimensions!"; } else { // In fact, after the Reduce operation, the shape must be a scalar if the previous one was 1d. // But for now, 0d tensor (scalar) is emulated as 1d tensor. Skip checking in such cases. bool is_emulated_0d_as_1d = getParentEdgeAt(REDUCE_DATA)->getDims().ndims() == 1 && getChildEdgeAt(0)->getDims().ndims() == 1; if (getParentEdgeAt(REDUCE_DATA)->getDims().ndims() <= getChildEdgeAt(0)->getDims().ndims() && !is_emulated_0d_as_1d) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "gets incorrect number of input/output dimensions!"; + IE_THROW() << "Reduce layer with name " << getName() << "gets incorrect number of input/output dimensions!"; } Type reduce_mode = getType(); @@ -1363,7 +1363,7 @@ void MKLDNNReduceNode::getSupportedDescriptors() { else if (reduce_mode == ReduceSum) reduceMode = Reduce::Sum; else if (reduce_mode == ReduceSumSquare) reduceMode = Reduce::SumSquare; else - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << " gets unsupported Reduce layer type!"; + IE_THROW() << "Reduce layer with name " << getName() << " gets unsupported Reduce layer type!"; } void MKLDNNReduceNode::initSupportedPrimitiveDescriptors() { @@ -1462,11 +1462,11 @@ void MKLDNNReduceNode::createPrimitive() { auto &srcDataMemPtr = getParentEdgeAt(REDUCE_DATA)->getMemoryPtr(); auto &srcIndexesMemPtr = getParentEdgeAt(REDUCE_INDEXES)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "didn't allocate destination memory."; + IE_THROW() << "Reduce layer with name " << getName() << "didn't allocate destination memory."; if (!srcDataMemPtr || !srcDataMemPtr->GetPrimitivePtr() || !srcIndexesMemPtr || !srcIndexesMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "didn't allocate input memory."; + IE_THROW() << "Reduce layer with name " << getName() << "didn't allocate input memory."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "didn't set preferable primitive descriptor."; + IE_THROW() << "Reduce layer with name " << getName() << "didn't set preferable primitive descriptor."; auto selectedPD = getSelectedPrimitiveDescriptor(); planar_layout = getParentEdgeAt(REDUCE_DATA)->getMemory().GetDesc().isPlainFormat(); @@ -1549,7 +1549,7 @@ void MKLDNNReduceNode::execute(mkldnn::stream strm) { auto out_ptr = reinterpret_cast(dst_data); reduce_ref(in_ptr, out_ptr); } else { - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "only supports plain layout on machine w/o sse42."; + IE_THROW() << "Reduce layer with name " << getName() << "only supports plain layout on machine w/o sse42."; } } } @@ -1869,7 +1869,7 @@ inline void MKLDNNReduceNode::init_dst_data(uint8_t *out_ptr, size_t dst_size) { } break; default: - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "gets unsupported reduce mode."; + IE_THROW() << "Reduce layer with name " << getName() << "gets unsupported reduce mode."; } } @@ -1882,7 +1882,7 @@ inline void MKLDNNReduceNode::calc_process_dst_dims(const int32_t *idx_data) { if (axis < 0) axis += src_dims.size(); if (static_cast(axis) > src_dims.size()) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "exceeds data tensor dimension on index to reduce"; + IE_THROW() << "Reduce layer with name " << getName() << "exceeds data tensor dimension on index to reduce"; axes.insert(static_cast(axis)); } for (size_t i = 0; i < src_dims.size(); i++) { @@ -1904,7 +1904,7 @@ inline void MKLDNNReduceNode::calc_process_dst_dims(const int32_t *idx_data) { } for (size_t i = 0; i < std::min(out_dims.size(), dst_dims.size()); i++) { if (out_dims[i] != dst_dims[i]) - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "gets incorrect number of output dimensions!"; + IE_THROW() << "Reduce layer with name " << getName() << "gets incorrect number of output dimensions!"; } } @@ -1949,7 +1949,7 @@ inline void MKLDNNReduceNode::reduce_ref(const float *in_ptr, float *out_ptr) { reduce_ref_process(in_ptr, out_ptr, 0, [](float old, float y)->float { return old + y * y; }); break; default: - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "gets unsupported reduce mode."; + IE_THROW() << "Reduce layer with name " << getName() << "gets unsupported reduce mode."; } } @@ -2035,7 +2035,7 @@ inline void MKLDNNReduceNode::reduce_ref_map(float *out_ptr, size_t work_amount_ }); break; default: - THROW_IE_EXCEPTION << "Reduce layer with name " << getName() << "gets unsupported reduce mode."; + IE_THROW() << "Reduce layer with name " << getName() << "gets unsupported reduce mode."; } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.h index 1201a66fd43495..1005cf58a043d3 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reduce_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.cpp index 3a8ca985ed50df..3cbe7ef2aee8f8 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,9 +9,12 @@ #include #include #include "ie_parallel.hpp" +#include "utils/general_utils.h" +#include using namespace mkldnn; using namespace MKLDNNPlugin; +using namespace InferenceEngine; MKLDNNReorderNode::MKLDNNReorderNode(const InferenceEngine::CNNLayerPtr& layer, const mkldnn::engine& eng, MKLDNNWeightsSharing::Ptr &w_cache) : MKLDNNNode(layer, eng, w_cache) { @@ -23,9 +26,9 @@ void MKLDNNReorderNode::getSupportedDescriptors() { if (inDims.empty() && input.getLayout() != InferenceEngine::Layout::ANY) inDims.push_back(MKLDNNDims(input.getDims())); if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); } void MKLDNNReorderNode::initSupportedPrimitiveDescriptors() { @@ -69,15 +72,36 @@ void MKLDNNReorderNode::createPrimitive() { auto &dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto &srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory didn't allocate."; + IE_THROW() << "Input memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; - - if (!isOptimized) - createReorderPrimitive(srcMemPtr->GetDescriptor(), srcMemPtr->GetPrimitive().get_data_handle(), - dstMemPtr->GetDescriptor(), dstMemPtr->GetPrimitive().get_data_handle()); + IE_THROW() << "Preferable primitive descriptor is not set."; + + if (!isOptimized) { + if (MKLDNNPlugin::one_of(getParentEdgeAt(0)->getDims().ndims(), 4, 5) && + getParentEdgeAt(0)->getDims()[1] <= 64 && + getParentEdgeAt(0)->getDims()[1] >= 16 && + (getParentEdgeAt(0)->getMemory().GetElementsCount() / getParentEdgeAt(0)->getDims()[1]) >= 128 && + getParentEdgeAt(0)->getMemory().GetDesc().isTailCFormat() && + getChildEdgeAt(0)->getMemory().GetDesc().isPlainFormat() && + getParentEdgeAt(0)->getMemory().GetDesc().getDataType() == memory::data_type::f32 && + getChildEdgeAt(0)->getMemory().GetDesc().getDataType() == memory::data_type::f32) { + // oneDNN JIT reorder shows bad perf for nspc to ncsp reorder case so we fallback on simple c++ implementation + canUseOptimizedNspc2Ncsp = true; + } else if (!impl::cpu::x64::mayiuse(impl::cpu::x64::avx2) && + MKLDNNPlugin::one_of(getParentEdgeAt(0)->getDims().ndims(), 4, 5) && + getParentEdgeAt(0)->getMemory().GetDesc().isPlainFormat() && + getChildEdgeAt(0)->getMemory().GetDesc().isTailCFormat() && + getParentEdgeAt(0)->getMemory().GetDataType() == getChildEdgeAt(0)->getMemory().GetDataType() && + MKLDNNExtensionUtils::sizeOfDataType(getParentEdgeAt(0)->getMemory().GetDataType()) == 1) { + // oneDNN doesn't provide JIT reorder impl for non-avx2 targets so we fallback on simple c++ implementation which shows better perf + canUseOptimizedNcsp2Nspc = true; + } else { + createReorderPrimitive(srcMemPtr->GetDescriptor(), srcMemPtr->GetPrimitive().get_data_handle(), + dstMemPtr->GetDescriptor(), dstMemPtr->GetPrimitive().get_data_handle()); + } + } } void MKLDNNReorderNode::createReorderPrimitive(const mkldnn::memory::desc &srcDesc, void* srcPtr, const mkldnn::memory::desc &dstDesc, void* dstPtr) { @@ -144,7 +168,7 @@ void MKLDNNReorderNode::createReorderPrimitive(const mkldnn::memory::desc &srcDe } if (!success) { - THROW_IE_EXCEPTION << "Cannot create reorder primitive: unsupported reorder case"; + IE_THROW() << "Cannot create reorder primitive: unsupported reorder case"; } auto src = getParentEdgesAtPort(0)[0]->getMemoryPtr()->GetPrimitive(); @@ -161,14 +185,75 @@ bool MKLDNNReorderNode::created() const { return getType() == Reorder; } +void MKLDNNReorderNode::optimizedNcsp2Nspc() { + auto parentEdge = getParentEdgeAt(0); + auto childEdge = getChildEdgeAt(0); + const int ndims = parentEdge->getDims().ndims(); + const size_t DIM0 = parentEdge->getDims()[0]; + const size_t DIM1 = parentEdge->getDims()[1]; + const size_t DIM2 = ndims == 5 ? parentEdge->getDims()[ndims - 3] : 1; + const size_t DIM3 = parentEdge->getDims()[ndims - 2]; + const size_t DIM4 = parentEdge->getDims()[ndims - 1]; + + auto src_data = reinterpret_cast(parentEdge->getMemoryPtr()->GetPtr()); + auto dst_data = reinterpret_cast(childEdge->getMemoryPtr()->GetPtr()); + + const size_t stride0 = DIM1 * DIM2 * DIM3 * DIM4; + const size_t stride1 = DIM2 * DIM3 * DIM4; + const size_t stride2 = DIM2 * DIM3; + + parallel_for3d(DIM0, DIM1, stride2, [&](size_t dim0, size_t dim1, size_t j) { + size_t src_off = dim0 * stride0 + j * DIM4 + dim1 * stride1; + size_t dst_off = dim0 * stride0 + j * DIM4 * DIM1 + dim1; + + for (size_t dim4 = 0; dim4 < DIM4; ++dim4) { + dst_data[dst_off] = src_data[src_off]; + src_off++; + dst_off += DIM1; + } + }); +} + +void MKLDNNReorderNode::optimizedNspc2Ncsp() { + auto parentEdge = getParentEdgeAt(0); + auto childEdge = getChildEdgeAt(0); + const int ndims = parentEdge->getDims().ndims(); + const size_t DIM0 = parentEdge->getDims()[0]; + const size_t DIM1 = parentEdge->getDims()[1]; + const size_t DIM2 = ndims == 5 ? parentEdge->getDims()[ndims - 3] : 1; + const size_t DIM3 = parentEdge->getDims()[ndims - 2]; + const size_t DIM4 = parentEdge->getDims()[ndims - 1]; + + auto src_data = reinterpret_cast(parentEdge->getMemoryPtr()->GetPtr()); + auto dst_data = reinterpret_cast(childEdge->getMemoryPtr()->GetPtr()); + + const size_t stride1 = DIM2 * DIM3 * DIM4; + const size_t stride0 = stride1 * DIM1; + parallel_for2d(DIM0, stride1, [&](size_t b, size_t j) { + auto src_off = b*stride0 + j*DIM1; + auto dst_off = b*stride0 + j; + for (size_t dim1 = 0; dim1 < DIM1; ++dim1) { + dst_data[dst_off] = src_data[src_off]; + src_off++; + dst_off += stride1; + } + }); +} + void MKLDNNReorderNode::execute(mkldnn::stream strm) { if (isOptimized) return; - src_blocked->GetPrimitivePtr()->set_data_handle(getParentEdgeAt(0)->getMemory().GetPrimitive().get_data_handle()); - dst_blocked->GetPrimitivePtr()->set_data_handle(getChildEdgeAt(0)->getMemory().GetPrimitive().get_data_handle()); + if (canUseOptimizedNspc2Ncsp) { + optimizedNspc2Ncsp(); + } else if (canUseOptimizedNcsp2Nspc) { + optimizedNcsp2Nspc(); + } else { + src_blocked->GetPrimitivePtr()->set_data_handle(getParentEdgeAt(0)->getMemory().GetPrimitive().get_data_handle()); + dst_blocked->GetPrimitivePtr()->set_data_handle(getChildEdgeAt(0)->getMemory().GetPrimitive().get_data_handle()); - MKLDNNNode::execute(strm); + MKLDNNNode::execute(strm); + } } void MKLDNNReorderNode::setDynamicBatchLim(int lim) { diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.h index 0d468bc349d372..41fc72797819d3 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reorder_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -55,9 +55,12 @@ class MKLDNNReorderNode : public MKLDNNNode { MKLDNNMemoryPtr src_blocked; bool isOptimized = false; + bool canUseOptimizedNspc2Ncsp = false; + bool canUseOptimizedNcsp2Nspc = false; + void optimizedNspc2Ncsp(); + void optimizedNcsp2Nspc(); void createReorderPrimitive(const mkldnn::memory::desc &srcDesc, void* srcPtr, const mkldnn::memory::desc &dstDesc, void* dstPtr); }; } // namespace MKLDNNPlugin - diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.cpp index dbd56f30470e28..4893546499aa21 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,9 +17,9 @@ MKLDNNReshapeNode::MKLDNNReshapeNode(const InferenceEngine::CNNLayerPtr& layer, void MKLDNNReshapeNode::getSupportedDescriptors() { if (getParentEdges().size() != 1 && getParentEdges().size() != 2) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); } void MKLDNNReshapeNode::initSupportedPrimitiveDescriptors() { @@ -55,11 +55,11 @@ void MKLDNNReshapeNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto& srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory didn't allocate."; + IE_THROW() << "Input memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; } bool MKLDNNReshapeNode::created() const { diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.h index 9622f6299a97fd..b4776fd7332457 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_reshape_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.cpp index 3c4e729629e30d..62e4a64eda01f9 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,6 +6,7 @@ #include "mkldnn_extension_utils.h" #include "utils/general_utils.h" +#include "nodes/common/cpu_memcpy.h" #include #include @@ -38,7 +39,7 @@ static algorithm ie2mkl(RNNCellBase::CellType cell_type) { case RNNCellBase::GRU: return algorithm::vanilla_gru; case RNNCellBase::GRU_LBR: return algorithm::lbr_gru; default: - THROW_IE_EXCEPTION << "Unsupported cell type"; + IE_THROW() << "Unsupported cell type"; return algorithm::undef; } } @@ -50,7 +51,7 @@ size_t gatesCount(algorithm alg) { case algorithm::lbr_gru: return 3; case algorithm::vanilla_lstm: return 4; default: - THROW_IE_EXCEPTION << "Unsupported cell type"; + IE_THROW() << "Unsupported cell type"; return 0; } } @@ -62,7 +63,7 @@ size_t statesCount(algorithm alg) { case algorithm::lbr_gru: return 1; case algorithm::vanilla_lstm: return 2; default: - THROW_IE_EXCEPTION << "Unsupported cell type"; + IE_THROW() << "Unsupported cell type"; return 0; } } @@ -88,14 +89,14 @@ void MKLDNNRNN::fillCellDesc() { auto cellLayer = std::dynamic_pointer_cast(getCnnLayer()); if (!cellLayer) - THROW_IE_EXCEPTION << "No original layer for RNNCell."; + IE_THROW() << "No original layer for RNNCell."; cell_type = ie2mkl(cellLayer->cellType); cell_act = ie2mkl(cellLayer->activations[0]); // Works only for RNN with one gate if (cellLayer->clip != 0.0f) { // TODO [oneDNN]: No more supported - THROW_IE_EXCEPTION << "Clipping is not supported for RNN primitive"; + IE_THROW() << "Clipping is not supported for RNN primitive"; // cell_desc.set_clipping(cellLayer->clip); } @@ -103,16 +104,16 @@ void MKLDNNRNN::fillCellDesc() { auto &outs = cellLayer->outData; if (!one_of(ins.size(), 3, 2)) - THROW_IE_EXCEPTION << "Incorrect number of input ports for layer " << getName(); + IE_THROW() << "Incorrect number of input ports for layer " << getName(); if (!one_of(outs.size(), 2, 1)) - THROW_IE_EXCEPTION << "Incorrect number of output ports for layer " << getName(); + IE_THROW() << "Incorrect number of output ports for layer " << getName(); auto in_data_dims = getParentEdgeAt(0)->getDims(); auto in_h_state_dims = getParentEdgeAt(1)->getDims(); auto out_h_state_dims = getChildEdgeAt(0)->getDims(); if (in_data_dims.ndims() != 2 || in_h_state_dims.ndims() != 2) - THROW_IE_EXCEPTION << "Incorrect shape of input/output ports for layer " << getName(); + IE_THROW() << "Incorrect shape of input/output ports for layer " << getName(); G = gatesCount(cell_type); S = statesCount(cell_type); @@ -129,7 +130,7 @@ void MKLDNNRNN::fillCellDesc() { if (in_data_dims != D_shape || in_h_state_dims != S_shape || out_h_state_dims != S_shape) - THROW_IE_EXCEPTION << "Incorrect shape of input/output ports for layer " << getName(); + IE_THROW() << "Incorrect shape of input/output ports for layer " << getName(); if (S == 2) { auto in_c_state_dims = getParentEdgeAt(2)->getDims(); @@ -137,7 +138,7 @@ void MKLDNNRNN::fillCellDesc() { if (in_c_state_dims != S_shape || out_c_state_dims != S_shape) - THROW_IE_EXCEPTION << "Incorrect shape of input/output ports for layer " << getName(); + IE_THROW() << "Incorrect shape of input/output ports for layer " << getName(); } auto blobs = cellLayer->blobs; @@ -146,13 +147,13 @@ void MKLDNNRNN::fillCellDesc() { if (blobs.find("biases") != blobs.end()) bias = blobs["biases"]; if (!weights) - THROW_IE_EXCEPTION << "RNN Layer. Weights do not present."; + IE_THROW() << "RNN Layer. Weights do not present."; if (weights->size() != G*SC*(SC+DC)) - THROW_IE_EXCEPTION << "RNN Layer. Weights size is not correct. Expected size:" << G*SC*(SC+DC); + IE_THROW() << "RNN Layer. Weights size is not correct. Expected size:" << G*SC*(SC+DC); if (bias && bias->size() != Gb*SC) - THROW_IE_EXCEPTION << "RNN Layer. Biases size is not correct. Expected size:" << G*SC; + IE_THROW() << "RNN Layer. Biases size is not correct. Expected size:" << G*SC; // Shapes and Attributes are correct. Can start internal stuff initialization. for (size_t i = 0; i < S; i++) { @@ -190,10 +191,10 @@ void MKLDNNRNN::fillSeqDesc() { auto rnnLayer = std::dynamic_pointer_cast(getCnnLayer()); if (!rnnLayer) - THROW_IE_EXCEPTION << "Wrong RNN layer representation. Cannot cast to RNNSequenceLayer."; + IE_THROW() << "Wrong RNN layer representation. Cannot cast to RNNSequenceLayer."; if (!one_of(rnnLayer->cellType, _RNN::LSTM, _RNN::GRU, _RNN::GRU_LBR, _RNN::RNN)) - THROW_IE_EXCEPTION << "RNN layer supports only LSTM/GRU/RNN cell"; + IE_THROW() << "RNN layer supports only LSTM/GRU/RNN cell"; cell_type = ie2mkl(rnnLayer->cellType); cell_act = algorithm::undef; @@ -202,31 +203,31 @@ void MKLDNNRNN::fillSeqDesc() { // TODO [oneDNN]: No more supported if (rnnLayer->clip != 0.0f) { - THROW_IE_EXCEPTION << "Clipping is not supported for RNN primitive"; + IE_THROW() << "Clipping is not supported for RNN primitive"; // cell_desc.set_clipping(rnnLayer->clip); } if (!one_of(rnnLayer->axis, 0, 1)) - THROW_IE_EXCEPTION << "RNN layer supports only sequence axis 0 or 1"; + IE_THROW() << "RNN layer supports only sequence axis 0 or 1"; nativeOrder = rnnLayer->axis == 0; if (!one_of(rnnLayer->direction, _RNN::FWD, _RNN::BWD)) - THROW_IE_EXCEPTION << "RNN layer supports only unidirectional RNN layer"; + IE_THROW() << "RNN layer supports only unidirectional RNN layer"; direction = ie2mkl(rnnLayer->direction); auto &ins = rnnLayer->insData; auto &outs = rnnLayer->outData; if (!one_of(ins.size(), 3, 2, 1)) - THROW_IE_EXCEPTION << "Incorrect number of input ports for layer " << getName(); + IE_THROW() << "Incorrect number of input ports for layer " << getName(); if (!one_of(outs.size(), 3, 2, 1)) - THROW_IE_EXCEPTION << "Incorrect number of output ports for layer " << getName(); + IE_THROW() << "Incorrect number of output ports for layer " << getName(); auto in_data_dims = getParentEdgeAt(0)->getDims(); auto out_data_dims = getChildEdgeAt(0)->getDims(); if (in_data_dims.ndims() != 3 || out_data_dims.ndims() != 3) - THROW_IE_EXCEPTION << "Incorrect shape of input/output ports for layer " << getName(); + IE_THROW() << "Incorrect shape of input/output ports for layer " << getName(); if (!nativeOrder) { std::swap(in_data_dims[0], in_data_dims[1]); @@ -245,20 +246,20 @@ void MKLDNNRNN::fillSeqDesc() { MKLDNNDims ID_shape {T, N, DC}, OD_shape {T, N, SC}, S_shape {N, SC}, S_4D_shape {L, D, N, SC}; if (out_data_dims != OD_shape) - THROW_IE_EXCEPTION << "Incorrect shape of input/output ports for layer " << getName(); + IE_THROW() << "Incorrect shape of input/output ports for layer " << getName(); in_states_d.resize(S); out_states_d.resize(S); for (int i = 1; i < ins.size(); i++) { if (getParentEdgeAt(i)->getDims() != S_shape) - THROW_IE_EXCEPTION << "Incorrect shape of state ports for layer " << getName(); + IE_THROW() << "Incorrect shape of state ports for layer " << getName(); in_states_d[i - 1] = {S_4D_shape, memory::data_type::f32, memory::format_tag::ldnc}; } for (int i = 1; i < outs.size(); i++) { if (getChildEdgeAt(i)->getDims() != S_shape) - THROW_IE_EXCEPTION << "Incorrect shape of state ports for layer " << getName(); + IE_THROW() << "Incorrect shape of state ports for layer " << getName(); out_states_d[i - 1] = {S_4D_shape, memory::data_type::f32, memory::format_tag::ldnc}; } @@ -268,16 +269,16 @@ void MKLDNNRNN::fillSeqDesc() { if (blobs.find("biases") != blobs.end()) bias = blobs["biases"]; if (!weights) - THROW_IE_EXCEPTION << "RNN Layer. Weights do not present."; + IE_THROW() << "RNN Layer. Weights do not present."; if (weights->size() != G*SC*(SC+DC)) - THROW_IE_EXCEPTION << "RNN Layer. Weights size is not correct. Expected size:" << G*SC*(SC+DC); + IE_THROW() << "RNN Layer. Weights size is not correct. Expected size:" << G*SC*(SC+DC); w_data_d = {{L, D, DC, G, SC}, memory::data_type::f32, memory::format_tag::ldigo}; w_state_d = {{L, D, SC, G, SC}, memory::data_type::f32, memory::format_tag::ldigo}; if (bias && bias->size() != Gb*SC) - THROW_IE_EXCEPTION << "RNN Layer. Biases size is not correct. Expected size:" << G*SC; + IE_THROW() << "RNN Layer. Biases size is not correct. Expected size:" << G*SC; if (bias) w_bias_d = {{L, D, Gb, SC}, memory::data_type::f32, memory::format_tag::ldgo}; @@ -363,7 +364,7 @@ void MKLDNNRNN::createDescriptor(const std::vector &inputDesc, descs.push_back(desc); } break; default: - THROW_IE_EXCEPTION << "Unknown cell type"; + IE_THROW() << "Unknown cell type"; } // Fill supported config @@ -394,12 +395,12 @@ void MKLDNNRNN::createPrimitive() { std::string errorPrefix = "RNN layer '" + getCnnLayer()->name + "'"; auto weightsIt = getCnnLayer()->blobs.find("weights"); if (weightsIt == getCnnLayer()->blobs.end()) - THROW_IE_EXCEPTION << errorPrefix << " does not have weights blob."; + IE_THROW() << errorPrefix << " does not have weights blob."; if (weightsIt->second->getTensorDesc().getPrecision() != Precision::FP32) - THROW_IE_EXCEPTION << errorPrefix << " has invalid weights precision: " << weightsIt->second->getTensorDesc().getPrecision(); + IE_THROW() << errorPrefix << " has invalid weights precision: " << weightsIt->second->getTensorDesc().getPrecision(); if (getCnnLayer()->blobs.find("biases") != getCnnLayer()->blobs.end() && getCnnLayer()->blobs["biases"]->getTensorDesc().getPrecision() != Precision::FP32) - THROW_IE_EXCEPTION << errorPrefix << " has invalid biases precision: " << getCnnLayer()->blobs["biases"]->getTensorDesc().getPrecision(); + IE_THROW() << errorPrefix << " has invalid biases precision: " << getCnnLayer()->blobs["biases"]->getTensorDesc().getPrecision(); auto pd = descs[0].createPrimitiveDescriptorIterator(getEngine()); @@ -448,27 +449,27 @@ void MKLDNNRNN::createPrimitive() { if (cell_type == algorithm::vanilla_lstm) { gate_map = gate_map_lstm; if (G > gate_map_lstm_size) { - THROW_IE_EXCEPTION << "G isn't equal to the size of gate_map"; + IE_THROW() << "G isn't equal to the size of gate_map"; } } else if (cell_type == algorithm::vanilla_gru) { gate_map = gate_map_gru; if (G > gate_map_gru_size) { - THROW_IE_EXCEPTION << "G isn't equal to the size of gate_map"; + IE_THROW() << "G isn't equal to the size of gate_map"; } } else if (cell_type == algorithm::lbr_gru) { gate_map = gate_map_gru; if (G > gate_map_gru_size) { - THROW_IE_EXCEPTION << "G isn't equal to the size of gate_map"; + IE_THROW() << "G isn't equal to the size of gate_map"; } } else if (cell_type == algorithm::vanilla_rnn) { gate_map = gate_map_rnn; if (G > gate_map_rnn_size) { - THROW_IE_EXCEPTION << "G isn't equal to the size of gate_map"; + IE_THROW() << "G isn't equal to the size of gate_map"; } } else { gate_map = gate_map_gru; if (G > gate_map_gru_size) { - THROW_IE_EXCEPTION << "G isn't equal to the size of gate_map"; + IE_THROW() << "G isn't equal to the size of gate_map"; } } @@ -501,7 +502,7 @@ void MKLDNNRNN::createPrimitive() { for (int g = 0; g < Gb; g++) { float *l_b_ptr = b_ptr + gate_map[g]*SC; const float *l_ie_b_ptr = ie_b_ptr + g * SC; - memcpy(l_b_ptr, l_ie_b_ptr, SC * sizeof(float)); + cpu_memcpy(l_b_ptr, l_ie_b_ptr, SC * sizeof(float)); } } } @@ -511,7 +512,7 @@ void MKLDNNRNN::createPrimitive() { void MKLDNNRNN::execute(mkldnn::stream strm) { if (!prim) - THROW_IE_EXCEPTION << "No initialized primitive to execute"; + IE_THROW() << "No initialized primitive to execute"; const auto src_data_mem = getParentEdgeAt(0)->getMemoryPtr(); const auto dst_data_mem = getChildEdgeAt(0)->getMemoryPtr(); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.h index 289cdbe4278b76..cb16a3d242d8ee 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_rnn.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.cpp index c3ca0a07a8851d..9ad06a5427a980 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,38 +31,38 @@ void MKLDNNROIAlignNode::getSupportedDescriptors() { class CNNLayer *genericLayer = getCnnLayer().get(); if (genericLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert ROIPooling layer."; + IE_THROW() << "Cannot convert ROIPooling layer."; std::string errorPrefix = "ROIPooling layer with name '" + getName() + "' "; if (getParentEdges().size() != 3) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of input edges: " << getParentEdges().size(); + IE_THROW() << errorPrefix << "has incorrect number of input edges: " << getParentEdges().size(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of output edges: " << getChildEdges().size(); + IE_THROW() << errorPrefix << "has incorrect number of output edges: " << getChildEdges().size(); if (getParentEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); } if (getParentEdgeAt(1)->getDims().ndims() != 2) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); } if (getParentEdgeAt(2)->getDims().ndims() != 1) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 2nd input with rank: " << getParentEdgeAt(2)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 2nd input with rank: " << getParentEdgeAt(2)->getDims().ndims(); } if (getChildEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); } if (getParentEdgeAt(1)->getDims()[1] != 4) { - THROW_IE_EXCEPTION << errorPrefix << "has invalid shape on 1st input: [" + IE_THROW() << errorPrefix << "has invalid shape on 1st input: [" << getParentEdgeAt(1)->getDims()[0] << "," << getParentEdgeAt(1)->getDims()[1] << "]"; } if (getParentEdgeAt(1)->getDims()[0] != getParentEdgeAt(2)->getDims()[0]) { - THROW_IE_EXCEPTION << errorPrefix << "has different sizes of inputs for proposals (" + IE_THROW() << errorPrefix << "has different sizes of inputs for proposals (" << getParentEdgeAt(1)->getDims()[0] << ") and indexes (" << getParentEdgeAt(2)->getDims()[0] << ")"; } @@ -77,7 +77,7 @@ void MKLDNNROIAlignNode::getSupportedDescriptors() { } else if (m == "avg") { opType = ROIAlignOpType::Avg; } else { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support roi pooling method: " << m; + IE_THROW() << errorPrefix << "doesn't support roi pooling method: " << m; } } @@ -137,7 +137,7 @@ void MKLDNNROIAlignNode::execute(mkldnn::stream strm) { auto outputPrec = getChildEdgeAt(0)->getMemory().GetDescriptor().data.data_type; if (!((inputPrec == mkldnn_bf16 && outputPrec == mkldnn_bf16) || (inputPrec == mkldnn_f32 && outputPrec == mkldnn_f32))) - THROW_IE_EXCEPTION <<"ROIAlign doesn't support demanded precisions"; + IE_THROW() <<"ROIAlign doesn't support demanded precisions"; ROIAlignContext ctx = { *this @@ -194,9 +194,9 @@ void MKLDNNROIAlignNode::executeSpecified() { const float* srcRoiPtr = &srcRoi[roiOff]; int roiBatchInd = srcRoiIdx[n]; if (roiBatchInd < -1) { // -1 means switched off region - THROW_IE_EXCEPTION << "Batch index cannot be less, than -1"; + IE_THROW() << "Batch index cannot be less, than -1"; } else if (roiBatchInd >= inputDimVector[0]) { - THROW_IE_EXCEPTION << "Demanded batch (id = " << roiBatchInd << ") doesn't exist"; + IE_THROW() << "Demanded batch (id = " << roiBatchInd << ") doesn't exist"; } float x1 = srcRoiPtr[0] * spatialScale; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.h index 903c3ee731a7e5..5e1901644bc831 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_align_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.cpp index 91e99f6d3fd97d..c0033280eeb7eb 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -257,29 +257,29 @@ void MKLDNNROIPoolingNode::getSupportedDescriptors() { GenericLayer* genericLayer = getCnnLayer().get(); if (genericLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert ROIPooling layer."; + IE_THROW() << "Cannot convert ROIPooling layer."; std::string errorPrefix = "ROIPooling layer with name '" + getName() + "' "; if (getParentEdges().size() != 2) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of input edges: " << getParentEdges().size(); + IE_THROW() << errorPrefix << "has incorrect number of input edges: " << getParentEdges().size(); if (getChildEdges().empty()) - THROW_IE_EXCEPTION << errorPrefix << "has incorrect number of output edges: " << getChildEdges().size(); + IE_THROW() << errorPrefix << "has incorrect number of output edges: " << getChildEdges().size(); if (getParentEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 0th input with rank: " << getParentEdgeAt(0)->getDims().ndims(); } if (getParentEdgeAt(1)->getDims().ndims() != 2) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support 1st input with rank: " << getParentEdgeAt(1)->getDims().ndims(); } if (getChildEdgeAt(0)->getDims().ndims() != 4) { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); + IE_THROW() << errorPrefix << "doesn't support output with rank: " << getChildEdgeAt(0)->getDims().ndims(); } if (getParentEdgeAt(1)->getDims()[1] != 5) { - THROW_IE_EXCEPTION << errorPrefix << "has invalid shape on 1st input: [" + IE_THROW() << errorPrefix << "has invalid shape on 1st input: [" << getParentEdgeAt(1)->getDims()[0] << "," << getParentEdgeAt(1)->getDims()[1] << "]"; } @@ -292,7 +292,7 @@ void MKLDNNROIPoolingNode::getSupportedDescriptors() { } else if (m == "bilinear") { opType = ROIPoolingOpType::Bilinear; } else { - THROW_IE_EXCEPTION << errorPrefix << "doesn't support roi pooling method: " << m; + IE_THROW() << errorPrefix << "doesn't support roi pooling method: " << m; } } @@ -332,7 +332,10 @@ void MKLDNNROIPoolingNode::initSupportedPrimitiveDescriptors() { } void MKLDNNROIPoolingNode::createPrimitive() { - auto config = getSelectedPrimitiveDescriptor()->getConfig(); + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU ROI Pooling node with name '" << getName() << "' doesn't have primitive descriptors."; + auto config = selectedPrimitiveDescriptor->getConfig(); const int simd_w = mayiuse(cpu::x64::avx512_common) ? 16 : 8; jpp.c_block = simd_w; @@ -378,7 +381,10 @@ void MKLDNNROIPoolingNode::execute(mkldnn::stream strm) { const auto *src_roi = reinterpret_cast(srcMemory1.GetPtr()); float *dst = reinterpret_cast(dstMemory.GetPtr()); - auto config = getSelectedPrimitiveDescriptor()->getConfig(); + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU ROI Pooling node with name '" << getName() << "' doesn't have primitive descriptors."; + auto config = selectedPrimitiveDescriptor->getConfig(); auto src_strides = config.inConfs[0].desc.getBlockingDesc().getStrides(); auto dst_strides = config.outConfs[0].desc.getBlockingDesc().getStrides(); @@ -526,8 +532,8 @@ void MKLDNNROIPoolingNode::execute(mkldnn::stream strm) { arg.xf = in_x - left_x_index; arg.yf = in_y - top_y_index; - arg.xoff = (size_t) ((right_x_index - left_x_index) * jpp.c_block * sizeof(float)); - arg.yoff = (size_t) ((bottom_y_index - top_y_index) * jpp.iw * jpp.c_block * sizeof(float)); + arg.xoff = sizeof(float) * (right_x_index - left_x_index) * jpp.c_block; + arg.yoff = sizeof(float) * (bottom_y_index - top_y_index) * jpp.iw * jpp.c_block; arg.src = &src_data[roi_batch_ind * src_strides[0] + cb * src_strides[1] + top_y_index * src_strides[2] + left_x_index * src_strides[3]]; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.h index 4122a9a47f9d02..f3b19aa2328aa2 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_roi_pooling_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.cpp index df711ca58e8861..6c20d582ffa0ca 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,16 +27,16 @@ void MKLDNNScatterUpdateNode::getSupportedDescriptors() { return; if ((getParentEdges().size() != 3) && (getParentEdges().size() != 4)) - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' has incorrect number of input edges"; if (getChildEdges().empty()) - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' has incorrect number of output edges"; if (getParentEdgeAt(DATA_ID)->getDims().ndims() < 1 || getParentEdgeAt(INDICES_ID)->getDims().ndims() < 1 || getParentEdgeAt(UPDATE_ID)->getDims().ndims() < 1) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' do not support scalar input"; } @@ -51,7 +51,7 @@ void MKLDNNScatterUpdateNode::getSupportedDescriptors() { scatterUpdateMode = ScatterUpdateMode::ScatterNDUpdate; axisRelaxed = false; } else { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' is not supported"; } } @@ -72,12 +72,12 @@ void MKLDNNScatterUpdateNode::initSupportedPrimitiveDescriptors() { // common check if (srcRank != dstRank) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' should have same rank for input and outpt tensor"; } else { for (size_t r = 0; r < srcRank; r++) { if (srcDataDim[r] != dstDataDim[r]) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' should have same shape for input and outpt tensor." << " The input shape is " << srcDataDim[r] << ", while output shape is " << dstDataDim[r] << "for" << r << "th dimension"; } @@ -87,7 +87,7 @@ void MKLDNNScatterUpdateNode::initSupportedPrimitiveDescriptors() { switch (scatterUpdateMode) { case ScatterUpdateMode::ScatterUpdate: { if (updateRank != (srcRank + indicesRank - 1)) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' do not have matched tensor rank relationship for input, indices and update"; } break; @@ -95,7 +95,7 @@ void MKLDNNScatterUpdateNode::initSupportedPrimitiveDescriptors() { case ScatterUpdateMode::ScatterNDUpdate: { size_t k = indicesDim[indicesRank - 1]; if (k > srcRank) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' do not have an correct indices' last dimension value, which should be smaller than or equal to input tensor rank"; } @@ -108,12 +108,12 @@ void MKLDNNScatterUpdateNode::initSupportedPrimitiveDescriptors() { expectUpdateShape.push_back(srcDataDim[rd]); } if (expectUpdateShape.size() != updateRank) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' do not have matched tensor rank relationship for input, indices and update"; } for (size_t ru = 0; ru < updateRank; ru++) { if (updateDim[ru] != expectUpdateShape[ru]) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' do not have matched tensor shape relationship for input, indices and update"; } } @@ -121,19 +121,19 @@ void MKLDNNScatterUpdateNode::initSupportedPrimitiveDescriptors() { } case ScatterUpdateMode::ScatterElementsUpdate: { if (srcRank != indicesRank || srcRank != updateRank) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' do not have the same tensor rank for input, indices and update"; } for (size_t ri = 0; ri < indicesRank; ri++) { if (indicesDim[ri] != updateDim[ri]) { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' do not have the same tensor shape for indices and update"; } } break; } default: { - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' is not supported"; } } @@ -215,19 +215,19 @@ void MKLDNNScatterUpdateNode::createPrimitive() { auto &updateMemPtr = getParentEdgeAt(UPDATE_ID)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' did not allocate destination memory"; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' did not allocate input memory"; if (!indicesMemPtr || !indicesMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' did not allocate indices memory"; if (!updateMemPtr || !updateMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' did not allocate update memory"; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "'" << getType() << "'" << " layer with name '" << getName() + IE_THROW() << "'" << getType() << "'" << " layer with name '" << getName() << "' did not set preferable primitive descriptor"; } @@ -286,7 +286,7 @@ void MKLDNNScatterUpdateNode::execute(mkldnn::stream strm) { } if (axis >= static_cast(srcRank) || axis < (static_cast(srcRank) * - 1)) { - THROW_IE_EXCEPTION << errorPrefix + IE_THROW() << errorPrefix << " should have axis value in range [-r, r - 1], where r is the rank of input data"; } axis = axis < 0 ? (axis + srcRank) : axis; @@ -299,7 +299,7 @@ void MKLDNNScatterUpdateNode::execute(mkldnn::stream strm) { for (int i = start; i < end; i++) { int64_t idxValue = getIndicesValue(indicesPtr, i); if (idxValue >= static_cast(srcDimAxis) || idxValue < 0) { - THROW_IE_EXCEPTION << errorPrefix + IE_THROW() << errorPrefix << " have indices value that points to non-existing output tensor element"; } } @@ -321,11 +321,11 @@ void MKLDNNScatterUpdateNode::execute(mkldnn::stream strm) { } } if (updateRank > expectUpdateShape.size()) - THROW_IE_EXCEPTION << errorPrefix << " cannot update shape. New rank: " + IE_THROW() << errorPrefix << " cannot update shape. New rank: " << updateRank << ", expected: " << expectUpdateShape.size(); for (size_t ru = 0; ru < updateRank; ru++) { if (updateDim[ru] != expectUpdateShape[ru]) { - THROW_IE_EXCEPTION << errorPrefix + IE_THROW() << errorPrefix << " do not have matched tensor shape relationship for input, indices and update"; } } @@ -357,7 +357,7 @@ void MKLDNNScatterUpdateNode::execute(mkldnn::stream strm) { break; } default: { - THROW_IE_EXCEPTION << errorPrefix + IE_THROW() << errorPrefix << " is not supported"; } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.h index 92ad323b448f9a..720e3234fad024 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_scatter_update_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.cpp index 5e531a7259013b..a247b09f936eae 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,17 +27,17 @@ void MKLDNNSoftMaxNode::getSupportedDescriptors() { SoftMaxLayer* smLayer = dynamic_cast(getCnnLayer().get()); if (smLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert softmax layer."; + IE_THROW() << "Cannot convert softmax layer."; if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (!getChildEdges().size()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); axis = smLayer->axis; if (axis >= getParentEdgeAt(0)->getDims().ndims()) { - THROW_IE_EXCEPTION << "Incorrect axis!"; + IE_THROW() << "Incorrect axis!"; } if (getParentEdgeAt(0)->getDims().ndims() == 3) { @@ -68,7 +68,7 @@ void MKLDNNSoftMaxNode::createPrimitive() { const PrimitiveDescInfo *selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set for node " << getName() << "."; + IE_THROW() << "Preferable primitive descriptor is not set for node " << getName() << "."; auto prim_desc = softmax_forward::primitive_desc(*selected_desc_ptr, getEngine()); primitive_desc_iterator itpd = descs[0].createPrimitiveDescriptorIterator(getEngine()); @@ -98,7 +98,7 @@ bool MKLDNNSoftMaxNode::created() const { void MKLDNNSoftMaxNode::initOptimalPrimitiveDescriptor() { auto selected_pd = getSelectedPrimitiveDescriptor(); if (selected_pd == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; auto config = selected_pd->getConfig(); if (isInitConfig(config)) return; @@ -106,7 +106,7 @@ void MKLDNNSoftMaxNode::initOptimalPrimitiveDescriptor() { if (config.inConfs.size() != 1 || config.outConfs.size() != 1 || (!isUninitTensorDesc(config.inConfs[0].desc) && !isUninitTensorDesc(config.outConfs[0].desc) && config.inConfs[0].desc != config.outConfs[0].desc)) - THROW_IE_EXCEPTION << "Layer " << getName() << " has incorrect selected config!"; + IE_THROW() << "Layer " << getName() << " has incorrect selected config!"; if (!isUninitTensorDesc(config.inConfs[0].desc)) { config.outConfs[0].desc = config.inConfs[0].desc; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.h index b573c3abeb7bbe..886cd5f89f0cf4 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_softmax_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_split_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_split_node.cpp index ad7426d1dae45e..1336ffd16f22db 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_split_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_split_node.cpp @@ -6,13 +6,11 @@ #include "common/cpu_memcpy.h" #include #include -#include #include #include -#include #include -#define THROW_ERROR THROW_IE_EXCEPTION << "Split layer with name '" << getName() <<"' " +#define THROW_ERROR IE_THROW() << "Split layer with name '" << getName() <<"' " using namespace mkldnn; using namespace MKLDNNPlugin; @@ -44,7 +42,7 @@ static TensorDesc makePerChannelTensorDesc(const Precision& precision, const Siz static TensorDesc makeChannelBlockedTensorDesc(const Precision& precision, const SizeVector& srcDims, size_t blockSize) { if (srcDims.size() < 2) { - THROW_IE_EXCEPTION << "Can't create blocked tensor descriptor!"; + IE_THROW() << "Can't create blocked tensor descriptor!"; } constexpr size_t channelsPos = 1lu; @@ -460,7 +458,10 @@ void MKLDNNSplitNode::setDynamicBatchLim(int lim) { } void MKLDNNSplitNode::prepareOptimizedParams() { - const auto& inpTensorDesc = this->getSelectedPrimitiveDescriptor()->getConfig().inConfs[0].desc; + auto selectedPrimitiveDescriptor = getSelectedPrimitiveDescriptor(); + if (!selectedPrimitiveDescriptor) + IE_THROW() << "CPU Split node with name '" << getName() << "' doesn't have primitive descriptors."; + const auto& inpTensorDesc = selectedPrimitiveDescriptor->getConfig().inConfs[0].desc; const auto outputPortsCount = outDims.size(); //find axis order position @@ -551,28 +552,14 @@ void MKLDNNSplitNode::optimizedNspc2Ncsp(size_t MB) { void MKLDNNSplitNode::initializeDstMemPtrs() { dstMemPtrs.clear(); - //Here we have to place the output data pointers in the order that reflects the output edges order. - //It's important in case when several edges are connected to one port. - //This is a naive implementation, an indexed priority queue or modified treap would be a more elegant solution. - std::unordered_map mapDstPtrs; - for (size_t i = 0; i < getChildEdges().size(); ++i) { - auto outputEdge = this->getChildEdgeAt(i); - if (uint8_t* dstData = reinterpret_cast(outputEdge->getMemoryPtr()->GetPtr())) { - mapDstPtrs[dstData] = i; + for (size_t i = 0; i < outDims.size(); ++i) { + auto outputEdges = this->getChildEdgesAtPort(i); + if (uint8_t* dstData = reinterpret_cast(outputEdges.front()->getMemoryPtr()->GetPtr())) { + dstMemPtrs.push_back(dstData); } else { THROW_ERROR << "can't get child edge indx " << i << "data."; } } - - std::vector vecCountingSort(getChildEdges().size(), nullptr); - for (auto& item : mapDstPtrs) { - vecCountingSort[item.second] = item.first; - } - - dstMemPtrs.reserve(vecCountingSort.size()); - auto backInserter = std::back_inserter(dstMemPtrs); - std::copy_if(vecCountingSort.begin(), vecCountingSort.end(), backInserter, [](const uint8_t* x) {return x;}); - dstMemPtrs.shrink_to_fit(); } REG_MKLDNN_PRIM_FOR(MKLDNNSplitNode, Split); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.cpp index 173718e122ef8f..67e8c09dfeca3a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -187,13 +187,12 @@ class staticValueCheck : public PortChecker { } // namespace MKLDNNPlugin MKLDNNTensorIteratorNode::MKLDNNTensorIteratorNode(InferenceEngine::CNNLayerPtr layer, const mkldnn::engine& eng, MKLDNNWeightsSharing::Ptr &cache) : - MKLDNNNode(layer, eng, cache), - sub_graph(eng) {} + MKLDNNNode(layer, eng, cache) {} void MKLDNNTensorIteratorNode::getSupportedDescriptors() { auto *ti = dynamic_cast(getCnnLayer().get()); if (ti == nullptr) - THROW_IE_EXCEPTION << "Cannot convert to TensorIterator layer."; + IE_THROW() << "Cannot convert to TensorIterator layer."; n_iter = getNumIteration(*ti); sub_graph.CreateGraph(ti->body, ext_mng, weightCache); @@ -228,7 +227,7 @@ void MKLDNNTensorIteratorNode::initSupportedPrimitiveDescriptors() { void MKLDNNTensorIteratorNode::createPrimitive() { auto ti = dynamic_cast(getCnnLayer().get()); if (ti == nullptr) - THROW_IE_EXCEPTION << "Cannot convert to TensorIterator layer."; + IE_THROW() << "Cannot convert to TensorIterator layer."; const auto &eng = getEngine(); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.h index a510921cfedf45..a1ba870044d8b8 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tensoriterator_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.cpp index ee227f6d312506..e0d1b616e2d43c 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,12 +20,12 @@ void MKLDNNTileNode::getSupportedDescriptors() { auto * tileLayer = dynamic_cast(getCnnLayer().get()); if (tileLayer == nullptr) - THROW_IE_EXCEPTION << "Cannot convert tile layer."; + IE_THROW() << "Cannot convert tile layer."; if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); if (!getChildEdges().size()) - THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName(); + IE_THROW() << "Incorrect number of output edges for layer " << getName(); axis = tileLayer->axis; tiles = tileLayer->tiles; @@ -36,13 +36,12 @@ void MKLDNNTileNode::initSupportedPrimitiveDescriptors() { return; InferenceEngine::Precision precision = getCnnLayer()->insData[0].lock()->getPrecision(); - if (precision != InferenceEngine::Precision::FP32) - precision = InferenceEngine::Precision::FP32; + if (precision.size() != sizeof(PrecisionTrait::value_type) && + precision.size() != sizeof(PrecisionTrait::value_type) && + precision.size() != sizeof(PrecisionTrait::value_type)) { + IE_THROW() << "Layer Tile has unsupported input precision: " << precision; + } auto inputDataType = MKLDNNExtensionUtils::IEPrecisionToDataType(precision); - precision = getCnnLayer()->outData[0]->getPrecision(); - if (precision != InferenceEngine::Precision::FP32) - precision = InferenceEngine::Precision::FP32; - auto outputDataType = MKLDNNExtensionUtils::IEPrecisionToDataType(precision); auto& inDims = getParentEdgeAt(0)->getDims(); memory::format_tag fmt = MKLDNNMemory::GetPlainFormat(inDims); @@ -56,7 +55,7 @@ void MKLDNNTileNode::initSupportedPrimitiveDescriptors() { config.inConfs[0].desc = MKLDNNMemoryDesc(getParentEdgeAt(0)->getDims(), inputDataType, fmt); config.outConfs[0].inPlace = -1; config.outConfs[0].constant = false; - config.outConfs[0].desc = MKLDNNMemoryDesc(getChildEdgeAt(0)->getDims(), outputDataType, fmt); + config.outConfs[0].desc = MKLDNNMemoryDesc(getChildEdgeAt(0)->getDims(), inputDataType, fmt); supportedPrimitiveDescriptors.push_back({config, impl_desc_type::unknown, fmt}); } @@ -64,20 +63,20 @@ void MKLDNNTileNode::createPrimitive() { auto& dstMemPtr = getChildEdgeAt(0)->getMemoryPtr(); auto& srcMemPtr = getParentEdgeAt(0)->getMemoryPtr(); if (!dstMemPtr || !dstMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Destination memory didn't allocate."; + IE_THROW() << "Destination memory didn't allocate."; if (!srcMemPtr || !srcMemPtr->GetPrimitivePtr()) - THROW_IE_EXCEPTION << "Input memory didn't allocate."; + IE_THROW() << "Input memory didn't allocate."; if (getSelectedPrimitiveDescriptor() == nullptr) - THROW_IE_EXCEPTION << "Preferable primitive descriptor is not set."; + IE_THROW() << "Preferable primitive descriptor is not set."; if (getParentEdges().size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input edges for layer " << getName(); + IE_THROW() << "Incorrect number of input edges for layer " << getName(); } void MKLDNNTileNode::execute(mkldnn::stream strm) { auto& srcMemory = getParentEdgeAt(0)->getMemory(); - const float *src_ptr = reinterpret_cast(srcMemory.GetPtr()); - float *dst_ptr = reinterpret_cast(getChildEdgeAt(0)->getMemory().GetPtr()); + const uint8_t* src_ptr = reinterpret_cast(srcMemory.GetPtr()); + uint8_t* dst_ptr = reinterpret_cast(getChildEdgeAt(0)->getMemory().GetPtr()); int m_inner_dim = 1; int m_outer_dim = 1; @@ -106,9 +105,10 @@ void MKLDNNTileNode::execute(mkldnn::stream strm) { m_outer_dim /= 16; } + m_inner_dim *= srcMemory.GetDesc().GetElementSize(); for (int i = 0; i < m_outer_dim; ++i) { for (int t = 0; t < tiles; ++t) { - cpu_memcpy(dst_ptr, src_ptr, m_inner_dim* sizeof(float)); + cpu_memcpy(dst_ptr, src_ptr, m_inner_dim); dst_ptr += m_inner_dim; } src_ptr += m_inner_dim; diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.h b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.h index a7841689f2402f..e3247c2bfbeabe 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.h +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_tile_node.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp b/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp index 62bff6bccd9e5c..afa8b8f3d4a643 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,6 @@ #include #include #include "ie_parallel.hpp" -#include "common/cpu_memcpy.h" namespace InferenceEngine { namespace Extensions { @@ -24,10 +23,10 @@ class NonMaxSuppressionImpl: public ExtLayerBase { try { logPrefix = "NMS layer with name '" + layer->name + "' "; if (layer->insData.size() < 2 || layer->insData.size() > 6) - THROW_IE_EXCEPTION << logPrefix << "has incorrect number of input edges: " << layer->insData.size(); + IE_THROW() << logPrefix << "has incorrect number of input edges: " << layer->insData.size(); if (layer->outData.size() < 1 || layer->outData.size() > 3) - THROW_IE_EXCEPTION << logPrefix << "has incorrect number of output edges: " << layer->outData.size(); + IE_THROW() << logPrefix << "has incorrect number of output edges: " << layer->outData.size(); // TODO: remove legacy attribute presentation after migration on opset1 if (layer->CheckParamPresence("center_point_box")) { @@ -40,7 +39,7 @@ class NonMaxSuppressionImpl: public ExtLayerBase { } else if (boxEncAttr == "center") { boxEncodingType = boxEncoding::CENTER; } else { - THROW_IE_EXCEPTION << logPrefix << "has unsupported 'box_encoding' attribute: " << boxEncAttr; + IE_THROW() << logPrefix << "has unsupported 'box_encoding' attribute: " << boxEncAttr; } } @@ -51,32 +50,32 @@ class NonMaxSuppressionImpl: public ExtLayerBase { auto boxesDataPtr = layer->insData[NMS_BOXES].lock(); if (boxesDataPtr == nullptr) { - THROW_IE_EXCEPTION << logPrefix << "has nullable 'boxes' input"; + IE_THROW() << logPrefix << "has nullable 'boxes' input"; } checkPrecision(boxesDataPtr, supportedFloatPrecision, "boxes", inType); const SizeVector &boxes_dims = boxesDataPtr->getTensorDesc().getDims(); num_batches = boxes_dims[0]; num_boxes = boxes_dims[1]; if (boxes_dims.size() != 3) - THROW_IE_EXCEPTION << logPrefix << "has unsupported 'boxes' input rank: " << boxes_dims.size(); + IE_THROW() << logPrefix << "has unsupported 'boxes' input rank: " << boxes_dims.size(); if (boxes_dims[2] != 4) - THROW_IE_EXCEPTION << logPrefix << "has unsupported 'boxes' input 3rd dimension size: " << boxes_dims[2]; + IE_THROW() << logPrefix << "has unsupported 'boxes' input 3rd dimension size: " << boxes_dims[2]; auto scoresDataPtr = layer->insData[NMS_SCORES].lock(); if (scoresDataPtr == nullptr) { - THROW_IE_EXCEPTION << logPrefix << "has nullable 'scores' input"; + IE_THROW() << logPrefix << "has nullable 'scores' input"; } checkPrecision(scoresDataPtr, supportedFloatPrecision, "scores", inType); const SizeVector &scores_dims = scoresDataPtr->getTensorDesc().getDims(); num_classes = scores_dims[1]; if (scores_dims.size() != 3) - THROW_IE_EXCEPTION << logPrefix << "has unsupported 'scores' input rank: " << scores_dims.size(); + IE_THROW() << logPrefix << "has unsupported 'scores' input rank: " << scores_dims.size(); if (num_batches != scores_dims[0]) - THROW_IE_EXCEPTION << logPrefix << " num_batches is different in 'boxes' and 'scores' inputs"; + IE_THROW() << logPrefix << " num_batches is different in 'boxes' and 'scores' inputs"; if (num_boxes != scores_dims[2]) - THROW_IE_EXCEPTION << logPrefix << " num_boxes is different in 'boxes' and 'scores' inputs"; + IE_THROW() << logPrefix << " num_boxes is different in 'boxes' and 'scores' inputs"; numFiltBox.resize(num_batches); for (size_t i = 0; i < numFiltBox.size(); i++) @@ -110,9 +109,9 @@ class NonMaxSuppressionImpl: public ExtLayerBase { checkPrecision(layer->outData[NMS_VALIDOUTPUTS], supportedIntOutputPrecision, "valid_outputs", outType); const SizeVector &valid_outputs_dims = layer->outData[NMS_VALIDOUTPUTS]->getTensorDesc().getDims(); if (valid_outputs_dims.size() != 1) - THROW_IE_EXCEPTION << logPrefix << "has unsupported 'valid_outputs' output rank: " << valid_outputs_dims.size(); + IE_THROW() << logPrefix << "has unsupported 'valid_outputs' output rank: " << valid_outputs_dims.size(); if (valid_outputs_dims[0] != 1) - THROW_IE_EXCEPTION << logPrefix << "has unsupported 'valid_outputs' output 1st dimension size: " << valid_outputs_dims[1]; + IE_THROW() << logPrefix << "has unsupported 'valid_outputs' output 1st dimension size: " << valid_outputs_dims[1]; } LayerConfig config; @@ -122,7 +121,7 @@ class NonMaxSuppressionImpl: public ExtLayerBase { Precision inPrecision = i == NMS_MAXOUTPUTBOXESPERCLASS ? Precision::I32 : Precision::FP32; auto validDataPtr = layer->insData[i].lock(); if (validDataPtr == nullptr) { - THROW_IE_EXCEPTION << logPrefix << "has nullable " << i << "th input"; + IE_THROW() << logPrefix << "has nullable " << i << "th input"; } const SizeVector& inDims = validDataPtr->getTensorDesc().getDims(); inConfig.desc = TensorDesc(inPrecision, inDims, InferenceEngine::TensorDesc::getLayoutByDims(inDims)); @@ -139,7 +138,7 @@ class NonMaxSuppressionImpl: public ExtLayerBase { config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -434,11 +433,11 @@ class NonMaxSuppressionImpl: public ExtLayerBase { size_t num_boxes; size_t num_classes; - size_t max_output_boxes_per_class; - float iou_threshold; - float score_threshold; - float soft_nms_sigma; - float scale; + size_t max_output_boxes_per_class = 0lu; + float iou_threshold = 0.0f; + float score_threshold = 0.0f; + float soft_nms_sigma = 0.0f; + float scale = 1.f; std::vector> numFiltBox; const std::string inType = "input", outType = "output"; @@ -447,23 +446,23 @@ class NonMaxSuppressionImpl: public ExtLayerBase { void checkPrecision(const DataPtr &dataPtr, const std::vector precList, const std::string name, const std::string type) { const TensorDesc &tensorDesc = dataPtr->getTensorDesc(); if (std::find(precList.begin(), precList.end(), tensorDesc.getPrecision()) == precList.end()) - THROW_IE_EXCEPTION << logPrefix << " has unsupported '" << name << "' " << type << " precision: " << tensorDesc.getPrecision(); + IE_THROW() << logPrefix << " has unsupported '" << name << "' " << type << " precision: " << tensorDesc.getPrecision(); } void check1DInput(const DataWeakPtr &dataPtr, const std::vector precList, const std::string name) { auto lockDataPtr = dataPtr.lock(); if (lockDataPtr == nullptr) { - THROW_IE_EXCEPTION << logPrefix << "has nullable '" << name << "' input"; + IE_THROW() << logPrefix << "has nullable '" << name << "' input"; } checkPrecision(lockDataPtr, precList, name, inType); const SizeVector &dims = lockDataPtr->getTensorDesc().getDims(); if (dims.size() != 0 && dims.size() != 1) - THROW_IE_EXCEPTION << logPrefix << "has unsupported '" << name << "' input rank: " << dims.size(); + IE_THROW() << logPrefix << "has unsupported '" << name << "' input rank: " << dims.size(); if (dims.size() == 1) if (dims[0] != 1) - THROW_IE_EXCEPTION << logPrefix << "has unsupported '" << name << "' input 1st dimension size: " << dims[0]; + IE_THROW() << logPrefix << "has unsupported '" << name << "' input 1st dimension size: " << dims[0]; } void checkOutput(const DataPtr &dataPtr, const std::vector precList, const std::string name) { @@ -471,9 +470,9 @@ class NonMaxSuppressionImpl: public ExtLayerBase { const SizeVector &dims = dataPtr->getTensorDesc().getDims(); if (dims.size() != 2) - THROW_IE_EXCEPTION << logPrefix << "has unsupported '" << name << "' output rank: " << dims.size(); + IE_THROW() << logPrefix << "has unsupported '" << name << "' output rank: " << dims.size(); if (dims[1] != 3) - THROW_IE_EXCEPTION << logPrefix << "has unsupported '" << name << "' output 2nd dimension size: " << dims[1]; + IE_THROW() << logPrefix << "has unsupported '" << name << "' output 2nd dimension size: " << dims[1]; } }; diff --git a/inference-engine/src/mkldnn_plugin/nodes/one_hot.cpp b/inference-engine/src/mkldnn_plugin/nodes/one_hot.cpp index e470a48ce7f41e..46a6713211f845 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/one_hot.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/one_hot.cpp @@ -1,107 +1,164 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "base.hpp" #include "ie_parallel.hpp" +#include "common/tensor_desc_creator.h" +#include "common/cpu_memcpy.h" +#include "utils/bfloat16.hpp" +#include #include +using namespace MKLDNNPlugin; + namespace InferenceEngine { namespace Extensions { namespace Cpu { class OneHotImpl: public ExtLayerBase { + typedef PrecisionTrait::value_type in_type; + public: explicit OneHotImpl(const CNNLayer* layer) { try { depth = layer->GetParamAsUInt("depth"); - on_value = layer->GetParamAsFloat("on_value", 1.0f); - off_value = layer->GetParamAsFloat("off_value", 0.0f); axis = layer->GetParamAsInt("axis", -1); - src_dims = layer->insData[0].lock()->getTensorDesc().getDims(); dst_dims = layer->outData[0]->getTensorDesc().getDims(); int output_dims_size = dst_dims.size(); if (layer->CheckParamPresence("axis") && (-1 > axis || axis >= output_dims_size)) { - THROW_IE_EXCEPTION << "The value of " << layer->name << " layer axis parameter must be between -1 <= axis < "\ + IE_THROW() << "The value of " << layer->name << " layer axis parameter must be between -1 <= axis < "\ << output_dims_size << ", but actually it is " << axis; } if (!( ((1 + src_dims.size()) == dst_dims.size()) || (src_dims.size() == 1 && dst_dims.size() == 1 && dst_dims[0] == depth && src_dims[0] == 1))) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output dimensions!"; + IE_THROW() << layer->name << " Incorrect number of input/output dimensions!"; // check a precision of the input tensor - input_precision = layer->insData[0].lock()->getTensorDesc().getPrecision(); - if (input_precision == Precision::BF16) - input_precision = Precision::FP32; - if (input_precision != Precision::I32 && input_precision != Precision::FP32) { - THROW_IE_EXCEPTION << layer->name << " Incorrect input precision for the input. Only I32 and FP32 are supported!"; + auto input_precision = layer->insData[0].lock()->getTensorDesc().getPrecision(); + if (input_precision != Precision::I32) { + IE_THROW() << layer->name << " Incorrect input precision for the input. Only I32 is supported!"; } + output_precision = layer->outData[0]->getTensorDesc().getPrecision(); + if (Precision::BF16 == output_precision) { + MKLDNNPlugin::bfloat16_t bf16_on_value = layer->GetParamAsFloat("on_value", 1.0f); + MKLDNNPlugin::bfloat16_t bf16_off_value = layer->GetParamAsFloat("off_value", 0.0f); + cpu_memcpy(&on_value, &bf16_on_value, sizeof(MKLDNNPlugin::bfloat16_t)); + cpu_memcpy(&off_value, &bf16_off_value, sizeof(MKLDNNPlugin::bfloat16_t)); + } else if (output_precision.is_float()) { + float float_on_value = layer->GetParamAsFloat("on_value", 1.0f); + float float_off_value = layer->GetParamAsFloat("off_value", 0.0f); + cpu_memcpy(&on_value, &float_on_value, sizeof(float)); + cpu_memcpy(&off_value, &float_off_value, sizeof(float)); + } else { + on_value = layer->GetParamAsInt("on_value", 1); + off_value = layer->GetParamAsInt("off_value", 0); + } + + LayerConfig config; + DataConfig dataConfig; + config.dynBatchSupport = false; + + auto& creators = MKLDNNPlugin::TensorDescCreator::getCommonCreators(); - addConfig(layer, { DataConfigurator(ConfLayout::PLN) }, { DataConfigurator(ConfLayout::PLN) }); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + dataConfig.desc = creators.at(MKLDNNPlugin::TensorDescCreatorTypes::ncsp)->createDesc(input_precision, src_dims); + config.inConfs.push_back(dataConfig); + + dataConfig.desc = creators.at(MKLDNNPlugin::TensorDescCreatorTypes::ncsp)->createDesc(output_precision, dst_dims); + config.outConfs.push_back(dataConfig); + + confs.push_back(config); + } catch (InferenceEngine::Exception& ex) { errorMsg = ex.what(); } } StatusCode execute(std::vector& inputs, std::vector& outputs, ResponseDesc *resp) noexcept override { - switch (input_precision) { - case Precision::FP32: - one_hot(inputs[0], outputs[0]); - break; - case Precision::I32: - one_hot(inputs[0], outputs[0]); - break; - default: + try { + std::size_t prefix_size = 1; + auto input_dims = inputs.front()->getTensorDesc().getDims(); + + std::size_t actual_axis = (axis == -1) ? src_dims.size() : axis; + for (size_t i = 0; i < actual_axis; ++i) + prefix_size *= input_dims[i]; + + std::size_t suffix_size = inputs.front()->size() / prefix_size; + + OneHotContext ctx = {this, inputs[0], outputs[0], prefix_size, suffix_size, false}; + OV_SWITCH(MKLDNNPlugin, OneHotExecute, ctx, output_precision.size(), + OV_CASE(sizeof(uint32_t), uint32_t), + OV_CASE(sizeof(uint16_t), uint16_t), + OV_CASE(sizeof(uint8_t), uint8_t)) + + if (!ctx.executed) { + snprintf(resp->msg, sizeof(resp->msg), "Unsupported output data type %s.", output_precision.name()); return GENERAL_ERROR; + } + } + catch (const std::exception& excp) { + snprintf(resp->msg, sizeof(resp->msg), "%s", excp.what()); + return GENERAL_ERROR; + } + catch(...) { + return GENERAL_ERROR; } - return OK; } private: - template - void one_hot(Blob::Ptr input, Blob::Ptr output) { + template + void one_hot(const Blob::Ptr& input, const Blob::Ptr& output, size_t prefix_size, size_t suffix_size) { const auto *src_data = input->cbuffer().as(); - auto *dst_data = output->buffer().as(); - std::size_t prefix_size = 1; - auto input_dims = input->getTensorDesc().getDims(); - - std::size_t actual_axis = (axis == -1) ? src_dims.size() : axis; - for (size_t i = 0; i < actual_axis; ++i) - prefix_size *= input_dims[i]; - - std::size_t suffix_size = input->size() / prefix_size; + auto *dst_data = output->buffer().as(); // fill the output with off_value std::size_t dst_size = prefix_size * depth * suffix_size; - std::fill(dst_data, dst_data + dst_size, off_value); + std::fill(dst_data, dst_data + dst_size, static_cast(off_value)); // set on_value at needed locations + auto on_val = static_cast(on_value); parallel_for(prefix_size, [&](std::size_t prefix_idx) { - for (std::size_t suffix_idx = 0; suffix_idx < suffix_size; ++suffix_idx) { - auto src_index = prefix_idx * suffix_size + suffix_idx; - std::size_t v = static_cast(src_data[src_index]); + const in_type* src_dataPtr = &src_data[prefix_idx * suffix_size]; + out_type* dst_dataPtr = &dst_data[prefix_idx * depth * suffix_size]; + for (std::size_t suffix_idx = 0; suffix_idx < suffix_size; ++suffix_idx, ++src_dataPtr, ++dst_dataPtr) { + auto v = static_cast(*src_dataPtr); if (v < depth) { - std::size_t dst_offset = prefix_idx * depth * suffix_size + v * suffix_size + suffix_idx; - dst_data[dst_offset] = on_value; + dst_dataPtr[v * suffix_size] = on_val; } } }); } + struct OneHotContext { + OneHotImpl* nodePtr; + Blob::Ptr input; + Blob::Ptr output; + size_t prefix_size; + size_t suffix_size; + bool executed; + }; + + template + struct OneHotExecute { + void operator()(OneHotContext & ctx) { + ctx.nodePtr->one_hot(ctx.input, ctx.output, ctx.prefix_size, ctx.suffix_size); + ctx.executed = true; + } + }; + uint32_t depth; - float on_value = 1.f; - float off_value = 0.f; + uint32_t on_value; + uint32_t off_value; int32_t axis = -1; SizeVector src_dims; SizeVector dst_dims; - Precision input_precision; + Precision output_precision; }; REG_FACTORY_FOR(OneHotImpl, OneHot); diff --git a/inference-engine/src/mkldnn_plugin/nodes/powerfile.cpp b/inference-engine/src/mkldnn_plugin/nodes/powerfile.cpp index 6aa503ae018317..04d19c21a8a927 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/powerfile.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/powerfile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,7 +17,7 @@ class PowerFileImpl: public ExtLayerBase { explicit PowerFileImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 1 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; // TODO: load this from some file or as blob? shift_.push_back(1); @@ -28,7 +28,7 @@ class PowerFileImpl: public ExtLayerBase { shift_.push_back(0); addConfig(layer, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/priorbox.cpp b/inference-engine/src/mkldnn_plugin/nodes/priorbox.cpp index 74c5d2b5461c10..f98cd07660fbe2 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/priorbox.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/priorbox.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,11 +27,11 @@ class PriorBoxImpl: public ExtLayerBase { explicit PriorBoxImpl(const CNNLayer *layer) { try { if (layer->insData.size() != 2 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; if (layer->insData[0].lock()->getTensorDesc().getDims().size() != 4 || layer->insData[1].lock()->getTensorDesc().getDims().size() != 4) - THROW_IE_EXCEPTION << "PriorBox supports only 4D blobs!"; + IE_THROW() << "PriorBox supports only 4D blobs!"; _offset = layer->GetParamAsFloat("offset"); _step = layer->GetParamAsFloat("step", 0); @@ -55,7 +55,7 @@ class PriorBoxImpl: public ExtLayerBase { exist = false; if (std::fabs(aspect_ratio) < std::numeric_limits::epsilon()) { - THROW_IE_EXCEPTION << "aspect_ratio param can't be equal to zero"; + IE_THROW() << "aspect_ratio param can't be equal to zero"; } for (float _aspect_ratio : _aspect_ratios) { @@ -105,7 +105,7 @@ class PriorBoxImpl: public ExtLayerBase { if (variance.size() == 1 || variance.size() == 4) { for (float i : variance) { if (i < 0) { - THROW_IE_EXCEPTION << "Variance must be > 0."; + IE_THROW() << "Variance must be > 0."; } _variance.push_back(i); @@ -113,11 +113,11 @@ class PriorBoxImpl: public ExtLayerBase { } else if (variance.empty()) { _variance.push_back(0.1f); } else { - THROW_IE_EXCEPTION << "Wrong number of variance values. Not less than 1 and more than 4 variance values."; + IE_THROW() << "Wrong number of variance values. Not less than 1 and more than 4 variance values."; } addConfig(layer, {{ConfLayout::ANY, true}, {ConfLayout::ANY, true}}, {{ConfLayout::PLN, true, -1, Precision::FP32}}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/priorbox_clustered.cpp b/inference-engine/src/mkldnn_plugin/nodes/priorbox_clustered.cpp index 1fcd1df6c395a0..0d38b4faebe8da 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/priorbox_clustered.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/priorbox_clustered.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,11 +15,11 @@ class PriorBoxClusteredImpl: public ExtLayerBase { explicit PriorBoxClusteredImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 2 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; if (layer->insData[0].lock()->getTensorDesc().getDims().size() != 4 || layer->insData[1].lock()->getTensorDesc().getDims().size() != 4) - THROW_IE_EXCEPTION << "PriorBoxClustered supports only 4D blobs!"; + IE_THROW() << "PriorBoxClustered supports only 4D blobs!"; widths_ = layer->GetParamAsFloats("width", {}); heights_ = layer->GetParamAsFloats("height", {}); @@ -33,7 +33,7 @@ class PriorBoxClusteredImpl: public ExtLayerBase { offset_ = layer->GetParamAsFloat("offset"); addConfig(layer, {{ConfLayout::PLN, true}, {ConfLayout::PLN, true}}, {{ConfLayout::PLN, true, -1, Precision::FP32}}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/priorgridgenerator_onnx.cpp b/inference-engine/src/mkldnn_plugin/nodes/priorgridgenerator_onnx.cpp index c98e7475f2364e..e49e4b572dd8b5 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/priorgridgenerator_onnx.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/priorgridgenerator_onnx.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,14 +30,14 @@ class ExperimentalDetectronPriorGridGeneratorImpl: public ExtLayerBase { explicit ExperimentalDetectronPriorGridGeneratorImpl(const CNNLayer* layer) { try { if (layer->insData.size() > 3 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; if (layer->insData[INPUT_PRIORS].lock()->getTensorDesc().getDims().size() != 2 || (layer->insData.size() > INPUT_FEATUREMAP && layer->insData[INPUT_FEATUREMAP].lock()->getTensorDesc().getDims().size() != 4) || (layer->insData.size() > INPUT_IMAGE && layer->insData[INPUT_IMAGE].lock()->getTensorDesc().getDims().size() != 4)) - THROW_IE_EXCEPTION << "Unsupported shape of input blobs!"; + IE_THROW() << "Unsupported shape of input blobs!"; grid_w_ = layer->GetParamAsInt("w", 0); grid_h_ = layer->GetParamAsInt("h", 0); @@ -47,7 +47,7 @@ class ExperimentalDetectronPriorGridGeneratorImpl: public ExtLayerBase { addConfig(layer, {DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::ANY), DataConfigurator(ConfLayout::ANY)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/proposal.cpp b/inference-engine/src/mkldnn_plugin/nodes/proposal.cpp index ac9f12ba77b3a5..037587228c8a0e 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/proposal.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -78,10 +78,10 @@ class ProposalImpl : public ExtLayerBase { explicit ProposalImpl(const CNNLayer *layer) { try { if (layer->insData.size() != 3 || (layer->outData.size() != 1 && layer->outData.size() != 2)) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; if (layer->insData[0].lock()->getTensorDesc().getDims().size() != 4) - THROW_IE_EXCEPTION << "Proposal supports only 4D blobs!"; + IE_THROW() << "Proposal supports only 4D blobs!"; conf.feat_stride_ = static_cast(layer->GetParamAsInt("feat_stride")); conf.base_size_ = static_cast(layer->GetParamAsInt("base_size")); @@ -126,7 +126,7 @@ class ProposalImpl : public ExtLayerBase { addConfig(layer, {DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); } - } catch (const InferenceEngine::details::InferenceEngineException &ex) { + } catch (const InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -135,7 +135,7 @@ class ProposalImpl : public ExtLayerBase { ResponseDesc *resp) noexcept override { try { if (inputs.size() != 3 || outputs.empty()) { - THROW_IE_EXCEPTION << "Incorrect number of input or output edges!"; + IE_THROW() << "Incorrect number of input or output edges!"; } // Prepare memory @@ -150,11 +150,11 @@ class ProposalImpl : public ExtLayerBase { auto dims0 = inputs[0]->getTensorDesc().getDims(); auto img_info_dims = inputs[2]->getTensorDesc().getDims(); if (img_info_dims.size() != 2) - THROW_IE_EXCEPTION << "Size of im_info tensor for Proposal is incorrect! Size of im_info must be 2. " + IE_THROW() << "Size of im_info tensor for Proposal is incorrect! Size of im_info must be 2. " << "Now im_info size is " << img_info_dims.size() << "."; if (img_info_dims[1] != 3 && img_info_dims[1] != 4) - THROW_IE_EXCEPTION << "Shape of im_info tensor for Proposal is incorrect! " + IE_THROW() << "Shape of im_info tensor for Proposal is incorrect! " << "Shape of im_info must be of [1, 3] or [1, 4]! " << "Now shape of im_info is" << img_info_dims[0] << ", " << img_info_dims[1] << "]."; @@ -165,21 +165,21 @@ class ProposalImpl : public ExtLayerBase { const float img_H = p_img_info_cpu[0]; const float img_W = p_img_info_cpu[1]; if (!std::isnormal(img_H) || !std::isnormal(img_W) || (img_H < 0.f) || (img_W < 0.f)) { - THROW_IE_EXCEPTION << "Proposal operation image info input must have positive image height and width."; + IE_THROW() << "Proposal operation image info input must have positive image height and width."; } // scale factor for height & width const float scale_H = p_img_info_cpu[2]; const float scale_W = img_info_size == 4 ? p_img_info_cpu[3] : scale_H; if (!std::isfinite(scale_H) || !std::isfinite(scale_W) || (scale_H < 0.f) || (scale_W < 0.f)) { - THROW_IE_EXCEPTION << "Proposal operation image info input must have non negative scales."; + IE_THROW() << "Proposal operation image info input must have non negative scales."; } XARCH::proposal_exec(p_bottom_item, p_d_anchor_item, dims0, {img_H, img_W, scale_H, scale_W}, anchors.data(), roi_indices.data(), p_roi_item, p_prob_item, conf); return OK; - } catch (const InferenceEngine::details::InferenceEngineException& e) { + } catch (const InferenceEngine::Exception& e) { if (resp) { std::string errorMsg = e.what(); errorMsg.copy(resp->msg, sizeof(resp->msg) - 1); diff --git a/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.cpp b/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.cpp index 61d7db2c353be0..49f38eb2719eac 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.hpp b/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.hpp index b775358a951c73..908d48db73ae31 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.hpp +++ b/inference-engine/src/mkldnn_plugin/nodes/proposal_imp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/nodes/proposal_onnx.cpp b/inference-engine/src/mkldnn_plugin/nodes/proposal_onnx.cpp index 12e2dd61499ee3..d10f495b723ca9 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/proposal_onnx.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/proposal_onnx.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -285,7 +285,7 @@ class ONNXCustomProposalImpl : public ExtLayerBase { explicit ONNXCustomProposalImpl(const CNNLayer *layer) { try { if (layer->insData.size() != 4 || layer->outData.size() != 2) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; min_size_ = layer->GetParamAsFloat("min_size"); nms_thresh_ = layer->GetParamAsFloat("nms_threshold"); @@ -299,7 +299,7 @@ class ONNXCustomProposalImpl : public ExtLayerBase { {DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -313,91 +313,108 @@ class ONNXCustomProposalImpl : public ExtLayerBase { StatusCode execute(std::vector &inputs, std::vector &outputs, ResponseDesc *resp) noexcept override { - if (inputs.size() != 4 || outputs.size() != 2) { - if (resp) { - std::string errorMsg = "Incorrect number of input or output edges!"; - errorMsg.copy(resp->msg, sizeof(resp->msg) - 1); + try { + if (inputs.size() != 4 || outputs.size() != 2) { + IE_THROW() << "Incorrect number of input or output edges!"; } - return GENERAL_ERROR; - } - - // Prepare memory - const float* p_deltas_item = inputs[INPUT_DELTAS]->buffer(); - const float* p_scores_item = inputs[INPUT_SCORES]->buffer(); - const float* p_anchors_item = inputs[INPUT_ANCHORS]->buffer(); - const float* p_img_info_cpu = inputs[INPUT_IM_INFO]->buffer(); - float* p_roi_item = outputs[OUTPUT_ROIS]->buffer(); - float* p_roi_score_item = outputs[OUTPUT_SCORES]->buffer(); + size_t anchor_dims_size = 1; + for (size_t i = 0; i < inputs[INPUT_ANCHORS]->getTensorDesc().getDims().size(); i++) { + anchor_dims_size *= inputs[INPUT_ANCHORS]->getTensorDesc().getDims()[i]; + } + size_t deltas_dims_size = 1; + for (size_t i = 0; i < inputs[INPUT_DELTAS]->getTensorDesc().getDims().size(); i++) { + deltas_dims_size *= inputs[INPUT_DELTAS]->getTensorDesc().getDims()[i]; + } + if (anchor_dims_size != deltas_dims_size) + IE_THROW() << "'Anchors' blob size for ONNXProposal is incompatible with 'deltas' blob size!"; - size_t img_info_size = 1; - for (size_t i = 0; i < inputs[INPUT_IM_INFO]->getTensorDesc().getDims().size(); i++) { - img_info_size *= inputs[INPUT_IM_INFO]->getTensorDesc().getDims()[i]; - } + size_t score_dims_size = 1; + for (size_t i = 0; i < inputs[INPUT_SCORES]->getTensorDesc().getDims().size(); i++) { + score_dims_size *= inputs[INPUT_SCORES]->getTensorDesc().getDims()[i]; + } + if (deltas_dims_size != (4 * score_dims_size)) + IE_THROW() << "'Deltas' blob size for ONNXProposal is incompatible with 'scores' blob size!"; + + // Prepare memory + const float* p_deltas_item = inputs[INPUT_DELTAS]->buffer(); + const float* p_scores_item = inputs[INPUT_SCORES]->buffer(); + const float* p_anchors_item = inputs[INPUT_ANCHORS]->buffer(); + const float* p_img_info_cpu = inputs[INPUT_IM_INFO]->buffer(); + + float* p_roi_item = outputs[OUTPUT_ROIS]->buffer(); + float* p_roi_score_item = outputs[OUTPUT_SCORES]->buffer(); + + const int anchors_num = inputs[INPUT_SCORES]->getTensorDesc().getDims()[0]; + + // bottom shape: (num_anchors) x H x W + const int bottom_H = inputs[INPUT_DELTAS]->getTensorDesc().getDims()[1]; + const int bottom_W = inputs[INPUT_DELTAS]->getTensorDesc().getDims()[2]; + + // input image height & width + const float img_H = p_img_info_cpu[0]; + const float img_W = p_img_info_cpu[1]; + + // scale factor for height & width + + // minimum box width & height + const float min_box_H = min_size_; + const float min_box_W = min_size_; + + // number of all proposals = num_anchors * H * W + const int num_proposals = anchors_num * bottom_H * bottom_W; + + // number of top-n proposals before NMS + const int pre_nms_topn = std::min(num_proposals, pre_nms_topn_); + + // number of final RoIs + int num_rois = 0; + + // enumerate all proposals + // num_proposals = num_anchors * H * W + // (x1, y1, x2, y2, score) for each proposal + // NOTE: for bottom, only foreground scores are passed + struct ProposalBox { + float x0; + float y0; + float x1; + float y1; + float score; + }; + std::vector proposals_(num_proposals); + std::vector unpacked_boxes(5 * pre_nms_topn); + std::vector is_dead(pre_nms_topn); + + // Execute + int batch_size = 1; // inputs[INPUT_DELTAS]->getTensorDesc().getDims()[0]; + for (int n = 0; n < batch_size; ++n) { + refine_anchors(p_deltas_item, p_scores_item, p_anchors_item, + reinterpret_cast(&proposals_[0]), anchors_num, bottom_H, + bottom_W, img_H, img_W, + min_box_H, min_box_W, + static_cast(log(1000. / 16.)), + 1.0f); + std::partial_sort(proposals_.begin(), proposals_.begin() + pre_nms_topn, proposals_.end(), + [](const ProposalBox& struct1, const ProposalBox& struct2) { + return (struct1.score > struct2.score); + }); + + unpack_boxes(reinterpret_cast(&proposals_[0]), &unpacked_boxes[0], pre_nms_topn); + nms_cpu(pre_nms_topn, &is_dead[0], &unpacked_boxes[0], &roi_indices_[0], &num_rois, 0, + nms_thresh_, post_nms_topn_, coordinates_offset); + fill_output_blobs(&unpacked_boxes[0], &roi_indices_[0], p_roi_item, p_roi_score_item, + pre_nms_topn, num_rois, post_nms_topn_); + } - const int anchors_num = inputs[INPUT_SCORES]->getTensorDesc().getDims()[0]; - - // bottom shape: (num_anchors) x H x W - const int bottom_H = inputs[INPUT_DELTAS]->getTensorDesc().getDims()[1]; - const int bottom_W = inputs[INPUT_DELTAS]->getTensorDesc().getDims()[2]; - - // input image height & width - const float img_H = p_img_info_cpu[0]; - const float img_W = p_img_info_cpu[1]; - - // scale factor for height & width - - // minimum box width & height - const float min_box_H = min_size_; - const float min_box_W = min_size_; - - // number of all proposals = num_anchors * H * W - const int num_proposals = anchors_num * bottom_H * bottom_W; - - // number of top-n proposals before NMS - const int pre_nms_topn = std::min(num_proposals, pre_nms_topn_); - - // number of final RoIs - int num_rois = 0; - - // enumerate all proposals - // num_proposals = num_anchors * H * W - // (x1, y1, x2, y2, score) for each proposal - // NOTE: for bottom, only foreground scores are passed - struct ProposalBox { - float x0; - float y0; - float x1; - float y1; - float score; - }; - std::vector proposals_(num_proposals); - std::vector unpacked_boxes(5 * pre_nms_topn); - std::vector is_dead(pre_nms_topn); - - // Execute - int batch_size = 1; // inputs[INPUT_DELTAS]->getTensorDesc().getDims()[0]; - for (int n = 0; n < batch_size; ++n) { - refine_anchors(p_deltas_item, p_scores_item, p_anchors_item, - reinterpret_cast(&proposals_[0]), anchors_num, bottom_H, - bottom_W, img_H, img_W, - min_box_H, min_box_W, - static_cast(log(1000. / 16.)), - 1.0f); - std::partial_sort(proposals_.begin(), proposals_.begin() + pre_nms_topn, proposals_.end(), - [](const ProposalBox& struct1, const ProposalBox& struct2) { - return (struct1.score > struct2.score); - }); - - unpack_boxes(reinterpret_cast(&proposals_[0]), &unpacked_boxes[0], pre_nms_topn); - nms_cpu(pre_nms_topn, &is_dead[0], &unpacked_boxes[0], &roi_indices_[0], &num_rois, 0, - nms_thresh_, post_nms_topn_, coordinates_offset); - fill_output_blobs(&unpacked_boxes[0], &roi_indices_[0], p_roi_item, p_roi_score_item, - pre_nms_topn, num_rois, post_nms_topn_); + return OK; + } catch (const std::exception& e) { + if (resp) { + std::string errorMsg = e.what(); + errorMsg.copy(resp->msg, sizeof(resp->msg) - 1); + } + return GENERAL_ERROR; } - - return OK; } private: diff --git a/inference-engine/src/mkldnn_plugin/nodes/psroi.cpp b/inference-engine/src/mkldnn_plugin/nodes/psroi.cpp index 7d3173e009e790..b3e87a3979f7a3 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/psroi.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/psroi.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -24,7 +24,7 @@ class PSROIPoolingImpl: public ExtLayerBase { mode = layer->GetParamAsString("mode", "average"); if (mode != "bilinear_deformable") if (layer->insData.size() != 2 || layer->outData.size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; // LayerSetUp outputDim = static_cast(layer->GetParamAsInt("output_dim")); groupSize = static_cast(layer->GetParamAsInt("group_size")); @@ -89,7 +89,7 @@ class PSROIPoolingImpl: public ExtLayerBase { DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN)}, {DataConfigurator(ConfLayout::PLN, supportedPrecision)}); } - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -124,9 +124,9 @@ class PSROIPoolingImpl: public ExtLayerBase { auto inBlkDims = srcDesc.getBlockingDesc().getBlockDims(); auto outBlkDims = dstDesc.getBlockingDesc().getBlockDims(); if (inBlkDims.size() != expectedInBlockDimsSize) - THROW_IE_EXCEPTION << "Unexpected size of blocking dims in input (given " << inBlkDims.size() << ", expected " << expectedInBlockDimsSize << ")"; + IE_THROW() << "Unexpected size of blocking dims in input (given " << inBlkDims.size() << ", expected " << expectedInBlockDimsSize << ")"; if (outBlkDims.size() != expectedOutBlockDimsSize) - THROW_IE_EXCEPTION << "Unexpected size of blocking dims in output (given " << outBlkDims.size() << ", expected " << expectedOutBlockDimsSize << ")"; + IE_THROW() << "Unexpected size of blocking dims in output (given " << outBlkDims.size() << ", expected " << expectedOutBlockDimsSize << ")"; inBlockSize = (inFmt == Layout::BLOCKED ? srcDesc.getBlockingDesc().getBlockDims()[4] : 1); outBlockSize = (outFmt == Layout::BLOCKED ? dstDesc.getBlockingDesc().getBlockDims()[4] : 1); diff --git a/inference-engine/src/mkldnn_plugin/nodes/range.cpp b/inference-engine/src/mkldnn_plugin/nodes/range.cpp index 693f768c83d643..fc0295f23257ab 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/range.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/range.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,26 +19,26 @@ class RangeImpl: public ExtLayerBase { explicit RangeImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; if (layer->insData.size() != 3) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; SizeVector start_dims = layer->insData[RANGE_START].lock()->getTensorDesc().getDims(); if (start_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Start scalar should have 1 dimension"; + IE_THROW() << layer->name << " Start scalar should have 1 dimension"; SizeVector limit_dims = layer->insData[RANGE_LIMIT].lock()->getTensorDesc().getDims(); if (limit_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Limit scalar should have 1 dimension"; + IE_THROW() << layer->name << " Limit scalar should have 1 dimension"; SizeVector delta_dims = layer->insData[RANGE_DELTA].lock()->getTensorDesc().getDims(); if (delta_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Delta scalar should have 1 dimension"; + IE_THROW() << layer->name << " Delta scalar should have 1 dimension"; SizeVector dst_dims = layer->outData[0]->getTensorDesc().getDims(); if (dst_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Output vector should have 1 dimension"; + IE_THROW() << layer->name << " Output vector should have 1 dimension"; if (!(layer->insData[RANGE_START].lock()->getTensorDesc().getPrecision() == Precision::I32 && layer->insData[RANGE_LIMIT].lock()->getTensorDesc().getPrecision() == Precision::I32 && @@ -54,7 +54,7 @@ class RangeImpl: public ExtLayerBase { addConfig(layer, { DataConfigurator(ConfLayout::PLN), DataConfigurator(ConfLayout::PLN), DataConfigurator(ConfLayout::PLN) }, { DataConfigurator(ConfLayout::PLN) }); } - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/region_yolo.cpp b/inference-engine/src/mkldnn_plugin/nodes/region_yolo.cpp index 03abe5a0bcd3df..3a6514cabc3feb 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/region_yolo.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,7 +14,6 @@ #include #include "utils/bfloat16.hpp" #include "emitters/jit_bf16_emitters.hpp" -#include "common/cpu_memcpy.h" #include "mkldnn.hpp" #include #include @@ -41,8 +40,8 @@ struct jit_args_logistic { struct jit_logistic_config_params { InferenceEngine::Precision src_dt; InferenceEngine::Precision dst_dt; - unsigned src_data_size; - unsigned dst_data_size; + unsigned src_data_size = 0; + unsigned dst_data_size = 0; }; struct jit_uni_logistic_kernel { @@ -264,7 +263,7 @@ class RegionYoloImpl: public ExtLayerBase { explicit RegionYoloImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 1 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; input_prec = layer->insData.front().lock()->getPrecision(); output_prec = layer->outData.front()->getPrecision(); @@ -311,7 +310,7 @@ class RegionYoloImpl: public ExtLayerBase { logistic_kernel->create_ker(); addConfig(layer, {DataConfigurator(ConfLayout::PLN, input_prec)}, {DataConfigurator(ConfLayout::PLN, output_prec)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -434,7 +433,7 @@ class RegionYoloImpl: public ExtLayerBase { bf16_dst_data[i + start_index] = logistic_scalar(bf16_dst_data[i + start_index]); } } else { - THROW_IE_EXCEPTION << "Unsupported precision configuration outPrc=" << output_prec.name(); + IE_THROW() << "Unsupported precision configuration outPrc=" << output_prec.name(); } } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/reorg_yolo.cpp b/inference-engine/src/mkldnn_plugin/nodes/reorg_yolo.cpp index 750b3634015315..7b2a0841ad063c 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/reorg_yolo.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/reorg_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,12 +14,12 @@ class ReorgYoloImpl: public ExtLayerBase { explicit ReorgYoloImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 1 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; stride = layer->GetParamAsInt("stride"); addConfig(layer, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/reverse_sequence.cpp b/inference-engine/src/mkldnn_plugin/nodes/reverse_sequence.cpp index bcb8d90c28c36e..663f4cdff7d1fb 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/reverse_sequence.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/reverse_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,7 +20,7 @@ class ReverseSequenceImpl: public ExtLayerBase { explicit ReverseSequenceImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 2 || layer->outData.size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; src_dims = layer->insData[REVERSESEQUENCE_DATA].lock()->getTensorDesc().getDims(); @@ -30,15 +30,15 @@ class ReverseSequenceImpl: public ExtLayerBase { SizeVector seq_lengths_dims = layer->insData[REVERSESEQUENCE_LENGTHS].lock()->getTensorDesc().getDims(); if (seq_lengths_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Seq_lengths vector should be 1 dimension"; + IE_THROW() << layer->name << " Seq_lengths vector should be 1 dimension"; SizeVector dst_dims = layer->outData[0]->getTensorDesc().getDims(); if (src_dims.size() != dst_dims.size()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output sizes!"; + IE_THROW() << layer->name << " Incorrect number of input/output sizes!"; for (size_t i = 0; i < dst_dims.size(); i++) { if (src_dims[i] != dst_dims[i]) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output dimension!"; + IE_THROW() << layer->name << " Incorrect number of input/output dimension!"; } seq_axis = layer->GetParamAsInt("seq_axis", 1); @@ -46,17 +46,17 @@ class ReverseSequenceImpl: public ExtLayerBase { seq_axis += src_dims.size(); if (seq_axis < 0 || seq_axis >= static_cast(src_dims.size())) - THROW_IE_EXCEPTION << layer->name << " Incorrect 'seq_axis' parameters dimensions and axis number!"; + IE_THROW() << layer->name << " Incorrect 'seq_axis' parameters dimensions and axis number!"; batch_axis = layer->GetParamAsInt("batch_axis", 0); if (batch_axis < 0) batch_axis += src_dims.size(); if (batch_axis < 0 || batch_axis >= static_cast(src_dims.size())) - THROW_IE_EXCEPTION << layer->name << " Incorrect 'batch_axis' parameters dimensions and axis number!"; + IE_THROW() << layer->name << " Incorrect 'batch_axis' parameters dimensions and axis number!"; if (seq_lengths_dims[0] != dst_dims[batch_axis]) - THROW_IE_EXCEPTION << layer->name << " Incorrect 'seq_lengths_dims' parameters dimension!"; + IE_THROW() << layer->name << " Incorrect 'seq_lengths_dims' parameters dimension!"; srcStrides = layer->insData[REVERSESEQUENCE_DATA].lock()->getTensorDesc().getBlockingDesc().getStrides(); work_amount_dst = srcStrides[0] * src_dims[0]; @@ -64,7 +64,7 @@ class ReverseSequenceImpl: public ExtLayerBase { addConfig(layer, { DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, lengthsPrecision) }, { DataConfigurator(ConfLayout::PLN, Precision::FP32) }); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/roifeatureextractor_onnx.cpp b/inference-engine/src/mkldnn_plugin/nodes/roifeatureextractor_onnx.cpp index f95de39c184ec0..d372c85989a38d 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/roifeatureextractor_onnx.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/roifeatureextractor_onnx.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -331,7 +331,7 @@ class ExperimentalDetectronROIFeatureExtractorImpl: public ExtLayerBase { std::vector inputs_layouts(layer->insData.size(), DataConfigurator(ConfLayout::PLN, Precision::FP32)); std::vector outputs_layouts(layer->outData.size(), DataConfigurator(ConfLayout::PLN, Precision::FP32)); addConfig(layer, inputs_layouts, outputs_layouts); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/select.cpp b/inference-engine/src/mkldnn_plugin/nodes/select.cpp index 5e84e9fa8f7fb7..e23b32ab3810ab 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/select.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/select.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,7 @@ class SelectImpl: public ExtLayerBase { explicit SelectImpl(const CNNLayer* layer) { try { if (layer->insData.size() != numOfInputs || layer->outData.size() != 1) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' has incorrect number of input/output edges!"; + IE_THROW() << "Select layer with name '" << layer->name << "' has incorrect number of input/output edges!"; broadcast = layer->GetParamAsString("auto_broadcast", "numpy"); @@ -35,17 +35,17 @@ class SelectImpl: public ExtLayerBase { if (inputPrecision == Precision::BF16 || layer->insData[ELSE].lock()->getTensorDesc().getPrecision() == Precision::BF16) { inputPrecision = Precision::BF16; } else if (layer->insData[THEN].lock()->getTensorDesc().getPrecision() != layer->insData[ELSE].lock()->getTensorDesc().getPrecision()) { - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' has different precisions on 'Then' and 'Else' inputs "; + IE_THROW() << "Select layer with name '" << layer->name << "' has different precisions on 'Then' and 'Else' inputs "; } const auto& conditionPrecision = layer->insData[CONDITION].lock()->getTensorDesc().getPrecision(); if (conditionPrecision != Precision::BOOL && conditionPrecision != Precision::I32 && conditionPrecision != Precision::U8) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' has unsupported precision: " << conditionPrecision + IE_THROW() << "Select layer with name '" << layer->name << "' has unsupported precision: " << conditionPrecision << " on 'Condition' input"; const auto& inputPrecisionSize = layer->insData[THEN].lock()->getTensorDesc().getPrecision().size(); if (inputPrecisionSize != 1 && inputPrecisionSize != 2 && inputPrecisionSize != 4 && inputPrecisionSize != 8) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' has unsupported precision: " << + IE_THROW() << "Select layer with name '" << layer->name << "' has unsupported precision: " << layer->insData[THEN].lock()->getTensorDesc().getPrecision() << " on 'Then' and 'Else' inputs"; const auto &conditionShapes = layer->insData[CONDITION].lock()->getTensorDesc().getDims(); @@ -54,29 +54,29 @@ class SelectImpl: public ExtLayerBase { const auto &outputShapes = layer->outData[0]->getTensorDesc().getDims(); if (broadcast != "none" && broadcast != "numpy") - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' has unsupported broadcast type: " << broadcast; + IE_THROW() << "Select layer with name '" << layer->name << "' has unsupported broadcast type: " << broadcast; if (broadcast == "none" && ((conditionShapes != outputShapes) || (thenShapes != outputShapes) || (elseShapes != outputShapes))) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' and auto_broadcast='none' has input shapes mismatch"; + IE_THROW() << "Select layer with name '" << layer->name << "' and auto_broadcast='none' has input shapes mismatch"; if (broadcast == "numpy") { if (outputShapes.size() < conditionShapes.size() || outputShapes.size() < thenShapes.size() || outputShapes.size() < elseShapes.size()) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' and auto_broadcast='numpy' has incompatible input and output shapes"; + IE_THROW() << "Select layer with name '" << layer->name << "' and auto_broadcast='numpy' has incompatible input and output shapes"; for (int condIt = conditionShapes.size() - 1, outIt = outputShapes.size() - 1; condIt >= 0; condIt--, outIt--) if (conditionShapes[condIt] != outputShapes[outIt] && conditionShapes[condIt] != 1) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name + IE_THROW() << "Select layer with name '" << layer->name << "' and auto_broadcast='numpy' has incompatible 'Condition' input and output shapes"; for (int thenIt = thenShapes.size() - 1, outIt = outputShapes.size() - 1; thenIt >= 0; thenIt--, outIt--) if (thenShapes[thenIt] != outputShapes[outIt] && thenShapes[thenIt] != 1) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name + IE_THROW() << "Select layer with name '" << layer->name << "' and auto_broadcast='numpy' has incompatible 'Then' input and output shapes"; for (int elseIt = elseShapes.size() - 1, outIt = outputShapes.size() - 1; elseIt >= 0; elseIt--, outIt--) if (elseShapes[elseIt] != outputShapes[outIt] && elseShapes[elseIt] != 1) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name + IE_THROW() << "Select layer with name '" << layer->name << "' and auto_broadcast='numpy' has incompatible 'Else' input and output shapes"; } @@ -120,7 +120,7 @@ class SelectImpl: public ExtLayerBase { config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/shuffle_channels.cpp b/inference-engine/src/mkldnn_plugin/nodes/shuffle_channels.cpp index 0943a97bd4e656..e606655a00ab41 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/shuffle_channels.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/shuffle_channels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -53,27 +53,27 @@ __inline size_t updater(size_t idx, size_t size, size_t* counters, size_t* own_d explicit ShuffleChannelsImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; SizeVector src_dims = layer->insData[0].lock()->getTensorDesc().getDims(); SizeVector dst_dims = layer->outData[0]->getTensorDesc().getDims(); if (src_dims.size() != dst_dims.size()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output dimensions!"; + IE_THROW() << layer->name << " Incorrect number of input/output dimensions!"; const auto precision = layer->insData[0].lock()->getTensorDesc().getPrecision(); if (_supported_precisions_sizes.find(precision.size()) == _supported_precisions_sizes.end()) - THROW_IE_EXCEPTION << layer->name << "has unsupported precision: " << precision.name(); + IE_THROW() << layer->name << "has unsupported precision: " << precision.name(); int axis = layer->GetParamAsInt("axis", 1); if (axis < 0) axis += dst_dims.size(); if (axis < 0 || axis >= static_cast(dst_dims.size())) - THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters dimensions and axis number!"; + IE_THROW() << layer->name << " Incorrect input parameters dimensions and axis number!"; size_t group = layer->GetParamAsUInt("group", 1); if (group == 0 || dst_dims[axis] % group) - THROW_IE_EXCEPTION << layer->name << " Group parameter must evenly divide the channel dimension!"; + IE_THROW() << layer->name << " Group parameter must evenly divide the channel dimension!"; // Find number of dictionaries, index range and data length own_dims[0] = 1; @@ -84,7 +84,7 @@ __inline size_t updater(size_t idx, size_t size, size_t* counters, size_t* own_d dataLength *= dst_dims[i]; if (dataLength == 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters dimension!"; + IE_THROW() << layer->name << " Incorrect input parameters dimension!"; own_dims[1] = dst_dims[axis] / group; own_dims[2] = group; @@ -107,7 +107,7 @@ __inline size_t updater(size_t idx, size_t size, size_t* counters, size_t* own_d config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/simplernms.cpp b/inference-engine/src/mkldnn_plugin/nodes/simplernms.cpp index 80997266cdb443..de05e2403e962a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/simplernms.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/simplernms.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -199,10 +199,10 @@ class SimplerNMSImpl : public ExtLayerBase { explicit SimplerNMSImpl(const CNNLayer *layer) { try { if (layer->insData.size() != 3 || layer->outData.size() != 1) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; if (layer->insData[0].lock()->getTensorDesc().getDims().size() != 4) - THROW_IE_EXCEPTION << "SimplerNMS supports only 4D blobs!"; + IE_THROW() << "SimplerNMS supports only 4D blobs!"; min_box_size_ = layer->GetParamAsInt("min_bbox_size"); feat_stride_ = layer->GetParamAsInt("feat_stride"); @@ -223,11 +223,11 @@ class SimplerNMSImpl : public ExtLayerBase { // Fill config information if (layer->outData[0]->getTensorDesc().getDims().size() != 2 || layer->insData[0].lock()->getTensorDesc().getDims().size() != 4) - THROW_IE_EXCEPTION << "Unsupported dimensions!"; + IE_THROW() << "Unsupported dimensions!"; addConfig(layer, {DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/space_to_batch.cpp b/inference-engine/src/mkldnn_plugin/nodes/space_to_batch.cpp index fc9b08aa05de4b..d3721b02595841 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/space_to_batch.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/space_to_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,27 +21,27 @@ class SpaceToBatchImpl: public ExtLayerBase { try { auto spaceToBatchLayer = dynamic_cast(layer); if (!spaceToBatchLayer) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; if (spaceToBatchLayer->insData.size() != 4 || spaceToBatchLayer->outData.size() != 1) - THROW_IE_EXCEPTION << "'" << spaceToBatchLayer->name << "' layer has incorrect number of input or output edges!"; + IE_THROW() << "'" << spaceToBatchLayer->name << "' layer has incorrect number of input or output edges!"; auto inData = spaceToBatchLayer->insData[0].lock(); if (inData == nullptr) - THROW_IE_EXCEPTION << "'" << spaceToBatchLayer->name << "' layer has nullable input data"; + IE_THROW() << "'" << spaceToBatchLayer->name << "' layer has nullable input data"; if (inData->getLayout() != NCHW && inData->getLayout() != NCDHW) - THROW_IE_EXCEPTION << "'" << spaceToBatchLayer->name << "' layer has unsupported layout: " << inData->getLayout(); + IE_THROW() << "'" << spaceToBatchLayer->name << "' layer has unsupported layout: " << inData->getLayout(); const auto precision = inData->getTensorDesc().getPrecision(); const std::set supported_precision_sizes = {1, 2, 4, 8}; if (supported_precision_sizes.find(precision.size()) == supported_precision_sizes.end()) - THROW_IE_EXCEPTION << "'" << spaceToBatchLayer->name << "' layer has unsupported precision: " << precision.name(); + IE_THROW() << "'" << spaceToBatchLayer->name << "' layer has unsupported precision: " << precision.name(); const SizeVector& in_dims = inData->getTensorDesc().getDims(); const SizeVector& out_dims = layer->outData[0]->getTensorDesc().getDims(); if (in_dims[1] != out_dims[1]) - THROW_IE_EXCEPTION << "'" << spaceToBatchLayer->name << "' layer has different IN and OUT channels number"; + IE_THROW() << "'" << spaceToBatchLayer->name << "' layer has different IN and OUT channels number"; _block_shape = spaceToBatchLayer->_block_shape; _pads_begin = spaceToBatchLayer->_pads_begin; @@ -53,7 +53,7 @@ class SpaceToBatchImpl: public ExtLayerBase { for (int i = 0; i < spaceToBatchLayer->insData.size(); i++) { auto inData = spaceToBatchLayer->insData[i].lock(); if (inData == nullptr) - THROW_IE_EXCEPTION << "'" << spaceToBatchLayer->name << "' layer has nullable input data"; + IE_THROW() << "'" << spaceToBatchLayer->name << "' layer has nullable input data"; config.inConfs[i].desc = TensorDesc(precision, inData->getTensorDesc().getDims(), inData->getTensorDesc().getLayout()); } @@ -62,7 +62,7 @@ class SpaceToBatchImpl: public ExtLayerBase { config.outConfs.push_back(outConfig); config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/space_to_depth.cpp b/inference-engine/src/mkldnn_plugin/nodes/space_to_depth.cpp index c76682c4716536..59c18b4495b792 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/space_to_depth.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/space_to_depth.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,18 +25,18 @@ class SpaceToDepthImpl: public ExtLayerBase { explicit SpaceToDepthImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << "' has incorrect number of input/output edges"; + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << "' has incorrect number of input/output edges"; SizeVector inDims = layer->insData[0].lock()->getTensorDesc().getDims(); if (inDims.size() < 3) - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << "' has incorrect number of input dimensions"; + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << "' has incorrect number of input dimensions"; if (inDims.size() > 5) - THROW_IE_EXCEPTION << "DepthToSpace layer with name '" << layer->name << "' doesn't support dimensions with rank greater than 5"; + IE_THROW() << "DepthToSpace layer with name '" << layer->name << "' doesn't support dimensions with rank greater than 5"; outDims = layer->outData[0]->getTensorDesc().getDims(); if (inDims.size() != outDims.size()) - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << "' has incorrect number of input/output dimensions"; + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << "' has incorrect number of input/output dimensions"; std::string modeString = layer->GetParamAsString("mode"); if (modeString == "blocks_first") { @@ -44,31 +44,31 @@ class SpaceToDepthImpl: public ExtLayerBase { } else if (modeString == "depth_first") { mode = SpaceToDepthMode::DEPTH_FIRST; } else { - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << "' doesn't support mode: " << modeString; + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << "' doesn't support mode: " << modeString; } blockSize = layer->GetParamAsUInt("block_size", 1); if (blockSize == 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect blockSize parameter is zero!"; + IE_THROW() << layer->name << " Incorrect blockSize parameter is zero!"; size_t numSpatialDims = inDims.size() - 2; blockStep = static_cast(std::pow(blockSize, numSpatialDims)); if (outDims[1] % blockStep) - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << "' has block_size parameter which is incompatible with input tensor channels dimension size"; if (inDims[1] != outDims[1] / blockStep) - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << " has incompatible input/output channels"; + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << " has incompatible input/output channels"; for (int i = 0; i < numSpatialDims; i++) { if (inDims[i + 2] != outDims[i + 2] * blockSize) - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << " has incompatible spatial dims"; + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << " has incompatible spatial dims"; } auto computePrc = layer->insData[0].lock()->getTensorDesc().getPrecision(); const std::set supported_precision_sizes = {1, 2, 4, 8}; if (supported_precision_sizes.find(computePrc.size()) == supported_precision_sizes.end()) - THROW_IE_EXCEPTION << "SpaceToDepth layer with name '" << layer->name << " doesn't support precision: " << computePrc.name(); + IE_THROW() << "SpaceToDepth layer with name '" << layer->name << " doesn't support precision: " << computePrc.name(); if (inDims.size() == 4 || inDims.size() == 5) { @@ -96,7 +96,7 @@ class SpaceToDepthImpl: public ExtLayerBase { config.dynBatchSupport = false; confs.push_back(config); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/sparse_fill_empty_rows.cpp b/inference-engine/src/mkldnn_plugin/nodes/sparse_fill_empty_rows.cpp index a73e58a353fc6c..907f1bdd7e7ba0 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/sparse_fill_empty_rows.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/sparse_fill_empty_rows.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,50 +22,50 @@ class SparseFillEmptyRowsImpl : public ExtLayerBase { explicit SparseFillEmptyRowsImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 4 || layer->outData.size() != 3) { - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; } // check dimensions of input tensors SizeVector input_indices_dims = layer->insData[INPUT_INDICES_PORT].lock()->getTensorDesc().getDims(); if (input_indices_dims.size() != 2 || input_indices_dims[1] != 2) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input indices. It must be Nx2 dimension tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for input indices. It must be Nx2 dimension tensor."; } SizeVector input_values_dims = layer->insData[INPUT_VALUES_PORT].lock()->getTensorDesc().getDims(); if (input_values_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input values. It must be N dimension tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for input values. It must be N dimension tensor."; } if (input_indices_dims[0] != input_values_dims[0]) { - THROW_IE_EXCEPTION << layer->name << " Mismatch of the first dimensions of input indices and values."; + IE_THROW() << layer->name << " Mismatch of the first dimensions of input indices and values."; } SizeVector input_dense_shape_dims = layer->insData[INPUT_DENSE_SHAPE_PORT].lock()->getTensorDesc().getDims(); if (input_dense_shape_dims.size() != 1 || input_dense_shape_dims[0] != 2) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input dense shape."; + IE_THROW() << layer->name << " Incorrect dimensions for input dense shape."; } SizeVector input_default_value_dims = layer->insData[INPUT_DEFAULT_VALUE_PORT].lock()->getTensorDesc().getDims(); if (input_default_value_dims[0] != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input dense shape."; + IE_THROW() << layer->name << " Incorrect dimensions for input dense shape."; } inMaxNumValues = input_indices_dims[0]; // check dimensions of output tensors SizeVector output_indices_dims = layer->outData[OUTPUT_INDICES_PORT]->getTensorDesc().getDims(); if (output_indices_dims.size() != 2 || output_indices_dims[1] != 2) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output indices. It must be Nx2 dimension tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for output indices. It must be Nx2 dimension tensor."; } SizeVector output_values_dims = layer->outData[OUTPUT_VALUES_PORT]->getTensorDesc().getDims(); if (output_values_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output values. It must be N dimension tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for output values. It must be N dimension tensor."; } if (output_indices_dims[0] != output_values_dims[0]) { - THROW_IE_EXCEPTION << layer->name << " Mismatch of the first dimensions of output indices and values."; + IE_THROW() << layer->name << " Mismatch of the first dimensions of output indices and values."; } SizeVector output_empty_rows_indicator_dims = layer->outData[OUTPUT_EMPTY_ROWS_INDICATOR_PORT]->getTensorDesc().getDims(); if (output_empty_rows_indicator_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output empty rows indicator. It must be 1-D tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for output empty rows indicator. It must be 1-D tensor."; } outMaxNumValues = output_indices_dims[0]; if (outMaxNumValues < inMaxNumValues) { - THROW_IE_EXCEPTION << layer->name << " The first dimension size of input indices can not be greater the first dimension of output indices."; + IE_THROW() << layer->name << " The first dimension size of input indices can not be greater the first dimension of output indices."; } // TODO: check that dense shape value is set @@ -75,7 +75,7 @@ class SparseFillEmptyRowsImpl : public ExtLayerBase { {DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32)}); } - catch (InferenceEngine::details::InferenceEngineException &ex) { + catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/sparse_segment_reduce.cpp b/inference-engine/src/mkldnn_plugin/nodes/sparse_segment_reduce.cpp index 2bea7fde1fb442..9ae02fb7f0cf50 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/sparse_segment_reduce.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/sparse_segment_reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,7 @@ class SparseSegmentReduceImpl : public ExtLayerBase { try { // check a number of input/output edges if (layer->insData.size() != 3 || layer->outData.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; } // check operation by which it reduces @@ -36,33 +36,33 @@ class SparseSegmentReduceImpl : public ExtLayerBase { else if (reduce_mode == "SparseSegmentMean") reduction_op = ReducedOp::mean; else if (reduce_mode == "SparseSegmentSqrtN") reduction_op = ReducedOp::sqrtn; else - THROW_IE_EXCEPTION << layer->name << " Incorrect SparseSegmentReduce layer type!"; + IE_THROW() << layer->name << " Incorrect SparseSegmentReduce layer type!"; // check shapes of the second and third input tensors input_indices_dims = layer->insData[INPUT_INDICES_PORT].lock()->getTensorDesc().getDims(); if (input_indices_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input indices. It must be a one-dimensional tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for input indices. It must be a one-dimensional tensor."; } input_segment_ids_dims = layer->insData[INPUT_SEGMENT_IDS_PORT].lock()->getTensorDesc().getDims(); if (input_segment_ids_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input segment IDs. It must be a one-dimensional tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for input segment IDs. It must be a one-dimensional tensor."; } if (input_indices_dims[0] != input_segment_ids_dims[0]) { - THROW_IE_EXCEPTION << layer->name << " Shapes for input indices and segment IDs must match."; + IE_THROW() << layer->name << " Shapes for input indices and segment IDs must match."; } // check shapes of output tensor input_data_dims = layer->insData[INPUT_DATA_PORT].lock()->getTensorDesc().getDims(); output_dims = layer->outData[OUTPUT_PORT]->getTensorDesc().getDims(); if (output_dims.size() != input_data_dims.size()) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output."; + IE_THROW() << layer->name << " Incorrect dimensions for output."; } if (output_dims[0] != input_segment_ids_dims[0]) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output."; + IE_THROW() << layer->name << " Incorrect dimensions for output."; } for (size_t i = 1; i < output_dims.size(); i++) { if (output_dims[i] != input_data_dims[i]) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output."; + IE_THROW() << layer->name << " Incorrect dimensions for output."; } } @@ -71,7 +71,7 @@ class SparseSegmentReduceImpl : public ExtLayerBase { { DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32) }, { DataConfigurator(ConfLayout::PLN, Precision::FP32) }); } - catch (InferenceEngine::details::InferenceEngineException &ex) { + catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/sparse_to_dense.cpp b/inference-engine/src/mkldnn_plugin/nodes/sparse_to_dense.cpp index 526248c580e2c4..2e23cdc56df525 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/sparse_to_dense.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/sparse_to_dense.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,7 +22,7 @@ class SparseToDenseImpl : public ExtLayerBase { explicit SparseToDenseImpl(const CNNLayer* layer) { try { if ((layer->insData.size() != 3 && layer->insData.size() != 4) || layer->outData.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; } if (layer->insData.size() == 4) { with_default_value = true; @@ -31,21 +31,21 @@ class SparseToDenseImpl : public ExtLayerBase { // check dimensions of input tensors SizeVector input_dense_shape_dims = layer->insData[INPUT_DENSE_SHAPE_PORT].lock()->getTensorDesc().getDims(); if (input_dense_shape_dims.size() != 1 || input_dense_shape_dims[0] < 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input dense shape. It must be 1D dimension tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for input dense shape. It must be 1D dimension tensor."; } dense_tensor_rank = input_dense_shape_dims[0]; SizeVector input_indices_dims = layer->insData[INPUT_INDICES_PORT].lock()->getTensorDesc().getDims(); if (input_indices_dims.size() != 2 || input_indices_dims[1] != dense_tensor_rank) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input indices."; + IE_THROW() << layer->name << " Incorrect dimensions for input indices."; } SizeVector input_values_dims = layer->insData[INPUT_VALUES_PORT].lock()->getTensorDesc().getDims(); if (input_values_dims.size() != 1 || input_values_dims[0] != input_indices_dims[0]) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input values."; + IE_THROW() << layer->name << " Incorrect dimensions for input values."; } if (with_default_value) { SizeVector input_default_value_dims = layer->insData[INPUT_DEFAULT_VALUE_PORT].lock()->getTensorDesc().getDims(); if (input_default_value_dims.size() != 0) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for input default value."; + IE_THROW() << layer->name << " Incorrect dimensions for input default value."; } } input_num_values = input_values_dims[0]; @@ -63,7 +63,7 @@ class SparseToDenseImpl : public ExtLayerBase { { DataConfigurator(ConfLayout::PLN, Precision::I32) }); } } - catch (InferenceEngine::details::InferenceEngineException &ex) { + catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/sparse_weighted_reduce.cpp b/inference-engine/src/mkldnn_plugin/nodes/sparse_weighted_reduce.cpp index 6023476ebf0046..b1e2a56afe5fc5 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/sparse_weighted_reduce.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/sparse_weighted_reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,7 @@ class ExperimentalSparseWeightedReduceImpl : public ExtLayerBase { explicit ExperimentalSparseWeightedReduceImpl(const CNNLayer* layer) { try { if ((layer->insData.size() != 5 && layer->insData.size() != 6) || layer->outData.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; } if (layer->insData.size() == 6) { with_weights = true; @@ -36,7 +36,7 @@ class ExperimentalSparseWeightedReduceImpl : public ExtLayerBase { std::string reduce_mode = layer->type; if (reduce_mode == "ExperimentalSparseWeightedSum") reduction_op = ReducedOp::sum; else - THROW_IE_EXCEPTION << layer->name << " Incorrect ExperimentalSparseWeightedReduce layer type!"; + IE_THROW() << layer->name << " Incorrect ExperimentalSparseWeightedReduce layer type!"; // check a precision of input tensors input_indices_precision = layer->insData[INPUT_INDICES_PORT].lock()->getTensorDesc().getPrecision(); @@ -49,23 +49,23 @@ class ExperimentalSparseWeightedReduceImpl : public ExtLayerBase { input_values_precision == Precision::I32 && input_dense_shape_precision == Precision::I32); if (are_other_precisions_valid == false) { - THROW_IE_EXCEPTION << layer->name << " Incorrect precision of the input tensors."; + IE_THROW() << layer->name << " Incorrect precision of the input tensors."; } if (input_parameters_table_precision != Precision::FP32) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect precision of the input parameters table values. Only FP32 is supported!"; } if (input_default_value_precision != Precision::I32) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect precision of the input default value. Only I32 is supported!"; } if (with_weights) { Precision input_weights_precision = layer->insData[INPUT_WEIGHTS_PORT].lock()->getTensorDesc().getPrecision(); if (input_weights_precision != Precision::FP32) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect precision of the input weights values. Only FP32 is supported!"; } } @@ -73,41 +73,41 @@ class ExperimentalSparseWeightedReduceImpl : public ExtLayerBase { // check dimensions of input tensors SizeVector input_indices_dims = layer->insData[INPUT_INDICES_PORT].lock()->getTensorDesc().getDims(); if (input_indices_dims.size() != 2 || input_indices_dims[1] != 2) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect dimensions for input indices. It must be Nx2 dimension tensor."; } SizeVector input_values_dims = layer->insData[INPUT_VALUES_PORT].lock()->getTensorDesc().getDims(); if (input_values_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect dimensions for input values. It must be N dimension tensor."; } if (input_indices_dims[0] != input_values_dims[0]) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Mismatch of the first dimensions of input indices and values."; } SizeVector input_dense_shape_dims = layer->insData[INPUT_DENSE_SHAPE_PORT].lock()->getTensorDesc().getDims(); if (input_dense_shape_dims.size() != 1 || input_dense_shape_dims[0] != 2) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect dimensions for input dense shape."; } SizeVector input_parameters_table_dims = layer->insData[INPUT_PARAMETERS_TABLE_PORT].lock()->getTensorDesc().getDims(); if (input_parameters_table_dims.size() < 2) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect dimensions for input parameters table."; } SizeVector input_default_value_dims = layer->insData[INPUT_DEFAULT_VALUE_PORT].lock()->getTensorDesc().getDims(); if (input_default_value_dims.size() != 0) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect dimensions for input default value."; } if (with_weights) { SizeVector input_weights_dims = layer->insData[INPUT_WEIGHTS_PORT].lock()->getTensorDesc().getDims(); if (input_weights_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Incorrect dimensions for input weights. It must be N dimension tensor."; } if (input_weights_dims[0] != input_values_dims[0]) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Mismatch of the first dimensions of input weights and values."; } } @@ -116,7 +116,7 @@ class ExperimentalSparseWeightedReduceImpl : public ExtLayerBase { // check dimensions of output tensors SizeVector output_dims = layer->outData[OUTPUT_PORT]->getTensorDesc().getDims(); if (output_dims.size() != input_parameters_table_dims.size()) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for the output tensor."; + IE_THROW() << layer->name << " Incorrect dimensions for the output tensor."; } output_batch_size = output_dims[0]; output_elem_size = 1; @@ -138,7 +138,7 @@ class ExperimentalSparseWeightedReduceImpl : public ExtLayerBase { DataConfigurator(ConfLayout::PLN, Precision::I32) }, { DataConfigurator(ConfLayout::PLN, Precision::FP32) }); } } - catch (InferenceEngine::details::InferenceEngineException &ex) { + catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/squeeze.cpp b/inference-engine/src/mkldnn_plugin/nodes/squeeze.cpp index 57263c1caaebf3..f334e371b2163a 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/squeeze.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/squeeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,15 +20,15 @@ class SqueezeImpl: public ExtLayerBase { explicit SqueezeImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; if (layer->insData.size() != 1 && layer->insData.size() != 2) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; SizeVector data_dims = layer->insData[0].lock()->getTensorDesc().getDims(); SizeVector dst_dims = layer->outData[0]->getTensorDesc().getDims(); if (data_dims.size() < dst_dims.size()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output dimensions!"; + IE_THROW() << layer->name << " Incorrect number of input/output dimensions!"; if (layer->insData.size() == 1) addConfig(layer, { { ConfLayout::PLN, false, 0 } }, { { ConfLayout::PLN, false, 0 } }); @@ -37,7 +37,7 @@ class SqueezeImpl: public ExtLayerBase { // WA to enable the implementation only for equal input and output precisions confs[0].inConfs[0].desc.setPrecision(confs[0].outConfs[0].desc.getPrecision()); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/strided_slice.cpp b/inference-engine/src/mkldnn_plugin/nodes/strided_slice.cpp index f8d4af798d57ef..a99a8454430dd5 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/strided_slice.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,7 @@ class StridedSliceImpl: public ExtLayerBase { explicit StridedSliceImpl(const CNNLayer* layer) { try { if (layer->insData.size() > 4 || layer->outData.size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; src_dims = layer->insData[STRIDEDSLICE_DATA].lock()->getTensorDesc().getDims(); @@ -36,24 +36,24 @@ class StridedSliceImpl: public ExtLayerBase { if (layer->insData.size() > 1) { begin_dims = layer->insData[STRIDEDSLICE_BEGIN].lock()->getTensorDesc().getDims(); if (begin_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " Begin vector should be 1 dimension"; + IE_THROW() << layer->name << " Begin vector should be 1 dimension"; bounds_size = begin_dims[0]; } if (layer->insData.size() > 2) { end_dims = layer->insData[STRIDEDSLICE_END].lock()->getTensorDesc().getDims(); if (end_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " End vector should be 1 dimension"; + IE_THROW() << layer->name << " End vector should be 1 dimension"; if (begin_dims[0] != end_dims[0]) - THROW_IE_EXCEPTION << layer->name << " Begin vector size should be equal end vectror size"; + IE_THROW() << layer->name << " Begin vector size should be equal end vectror size"; } if (layer->insData.size() > 3) { stride_dims = layer->insData[STRIDEDSLICE_STRIDE].lock()->getTensorDesc().getDims(); if (stride_dims.size() > 1) - THROW_IE_EXCEPTION << layer->name << " End vector should be 1 dimension"; + IE_THROW() << layer->name << " End vector should be 1 dimension"; if (begin_dims[0] != stride_dims[0]) - THROW_IE_EXCEPTION << layer->name << " Stride vector size should be equal begin vectror size"; + IE_THROW() << layer->name << " Stride vector size should be equal begin vectror size"; } dst_dims = layer->outData[0]->getTensorDesc().getDims(); @@ -83,7 +83,7 @@ class StridedSliceImpl: public ExtLayerBase { } } if (ellipsis_mask_counter > 1) - THROW_IE_EXCEPTION << layer->name << " 'Ellipsis_mask' must be a power of two (only one ellipsis)!"; + IE_THROW() << layer->name << " 'Ellipsis_mask' must be a power of two (only one ellipsis)!"; for (; i < src_dims.size(); ++i) ellipsis_mask.push_back(0); std::string new_axis_mask_str = layer->GetParamAsString("new_axis_mask", ""); @@ -142,7 +142,7 @@ class StridedSliceImpl: public ExtLayerBase { DataConfigurator(ConfLayout::PLN, Precision::I32), DataConfigurator(ConfLayout::PLN, Precision::I32) }, { DataConfigurator(ConfLayout::PLN, dataPrecision) }); } - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/topk.cpp b/inference-engine/src/mkldnn_plugin/nodes/topk.cpp index 09ab13796b9e87..7da9f3521b877d 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/topk.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,27 +25,27 @@ class TopKImpl: public ExtLayerBase { explicit TopKImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 2) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; if (layer->outData.size() != 1 && layer->outData.size() != 2) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of output edges!"; + IE_THROW() << layer->name << " Incorrect number of output edges!"; if (layer->insData[TOPK_K].lock()->getTensorDesc().getDims().size() > 1) - THROW_IE_EXCEPTION << layer->name << " TopKImpl - Index vector should be 1 dimension"; + IE_THROW() << layer->name << " TopKImpl - Index vector should be 1 dimension"; SizeVector dst_dims = layer->outData[0]->getTensorDesc().getDims(); SizeVector src_data_dims = layer->insData[TOPK_DATA].lock()->getTensorDesc().getDims(); if (src_data_dims.size() != dst_dims.size()) - THROW_IE_EXCEPTION << layer->name << " TopKImpl - Incorrect input/output tensor dimension sizes"; + IE_THROW() << layer->name << " TopKImpl - Incorrect input/output tensor dimension sizes"; if (layer->outData.size() == 2) { SizeVector dst_idx_dims = layer->outData[TOPK_INDEX]->getTensorDesc().getDims(); if (dst_dims.size() != dst_idx_dims.size()) - THROW_IE_EXCEPTION << layer->name << " Incorrect output tensor dimension sizes"; + IE_THROW() << layer->name << " Incorrect output tensor dimension sizes"; for (size_t i = 0; i < dst_dims.size(); i++) { if (dst_dims[i] != dst_idx_dims[i]) - THROW_IE_EXCEPTION << layer->name << " Input/output tensor dimension mismatch"; + IE_THROW() << layer->name << " Input/output tensor dimension mismatch"; } } @@ -57,7 +57,7 @@ class TopKImpl: public ExtLayerBase { axis = static_cast(axis_); if (src_dims.size() < (1 + axis)) - THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters dimensions and axis number!"; + IE_THROW() << layer->name << " Incorrect input parameters dimensions and axis number!"; if (layer->GetParamAsString("mode", "max") == "max") mode_max = true; @@ -78,13 +78,13 @@ class TopKImpl: public ExtLayerBase { for (size_t i = 0; i < axis; i++) { axis_step *= src_dims[i]; if (src_data_dims[i] != dst_dims[i]) - THROW_IE_EXCEPTION << layer->name << " Input/output tensor dimension mismatch"; + IE_THROW() << layer->name << " Input/output tensor dimension mismatch"; } axis_dim = src_dims[axis]; for (size_t i = (axis + 1); i < src_dims.size(); i++) { axis_stride *= src_dims[i]; if (src_data_dims[i] != dst_dims[i]) - THROW_IE_EXCEPTION << layer->name << " Input/output tensor dimension mismatch"; + IE_THROW() << layer->name << " Input/output tensor dimension mismatch"; } dim = static_cast(src_dims[axis]); before_num = count(src_dims, 0, axis); @@ -102,7 +102,7 @@ class TopKImpl: public ExtLayerBase { // integer tensor. Will change it for corresponding output desc. confs.back().outConfs[1].desc.setPrecision(Precision::I32); } - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/topkrois_onnx.cpp b/inference-engine/src/mkldnn_plugin/nodes/topkrois_onnx.cpp index 195e3ecfff4d82..f8f51ea33ada3f 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/topkrois_onnx.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/topkrois_onnx.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,18 +30,18 @@ class ExperimentalDetectronTopKROIsImpl: public ExtLayerBase { explicit ExperimentalDetectronTopKROIsImpl(const CNNLayer* layer) { try { if (layer->insData.size() != 2 || layer->outData.empty()) - THROW_IE_EXCEPTION << "Incorrect number of input/output edges!"; + IE_THROW() << "Incorrect number of input/output edges!"; if (layer->insData[INPUT_ROIS].lock()->getTensorDesc().getDims().size() != 2 || layer->insData[INPUT_PROBS].lock()->getTensorDesc().getDims().size() != 1) - THROW_IE_EXCEPTION << "Unsupported shape of input blobs!"; + IE_THROW() << "Unsupported shape of input blobs!"; max_rois_num_ = layer->GetParamAsInt("max_rois", 0); addConfig(layer, {DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32)}, {DataConfigurator(ConfLayout::PLN, Precision::FP32)}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/unique.cpp b/inference-engine/src/mkldnn_plugin/nodes/unique.cpp index f544789041f615..f67a22f49ec4d7 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/unique.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/unique.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,13 +25,13 @@ class UniqueImpl : public ExtLayerBase { try { // check number of inputs and outputs if (layer->insData.size() != 1 || layer->outData.size() < 1 || layer->outData.size() > 3) { - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; } // check precision of tensors Precision input_indices_precision = layer->insData[0].lock()->getTensorDesc().getPrecision(); if (input_indices_precision != Precision::FP32) { - THROW_IE_EXCEPTION << layer->name << " Incorrect input precision. Only FP32 is supported!"; + IE_THROW() << layer->name << " Incorrect input precision. Only FP32 is supported!"; } // check attributes @@ -48,13 +48,13 @@ class UniqueImpl : public ExtLayerBase { claimed_num_outputs++; } if (layer->outData.size() != claimed_num_outputs) { - THROW_IE_EXCEPTION << layer->name << " A number of outputs claimed by attributes does not match a real number of outputs!"; + IE_THROW() << layer->name << " A number of outputs claimed by attributes does not match a real number of outputs!"; } // check dimensions of input tensors SizeVector input_dims = layer->insData[0].lock()->getTensorDesc().getDims(); if (input_dims.size() != 1) { - THROW_IE_EXCEPTION << layer->name << " Input must be 1-D tensor."; + IE_THROW() << layer->name << " Input must be 1-D tensor."; } num_elements = input_dims[0]; @@ -62,20 +62,20 @@ class UniqueImpl : public ExtLayerBase { size_t cur_output_port = 0; SizeVector output_uniques_dims = layer->outData[cur_output_port]->getTensorDesc().getDims(); if (output_uniques_dims.size() != 1 || output_uniques_dims[0] != num_elements) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output tensor of unique elements."; + IE_THROW() << layer->name << " Incorrect dimensions for output tensor of unique elements."; } if (return_inverse) { cur_output_port++; SizeVector output_indices_dims = layer->outData[cur_output_port]->getTensorDesc().getDims(); if (output_indices_dims.size() != 1 || output_indices_dims[0] != num_elements) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output tensor of indices."; + IE_THROW() << layer->name << " Incorrect dimensions for output tensor of indices."; } } if (return_counts) { cur_output_port++; SizeVector output_counts_dims = layer->outData[cur_output_port]->getTensorDesc().getDims(); if (output_counts_dims.size() != 1 || output_counts_dims[0] != num_elements) { - THROW_IE_EXCEPTION << layer->name << " Incorrect dimensions for output tensor of counts."; + IE_THROW() << layer->name << " Incorrect dimensions for output tensor of counts."; } } @@ -94,7 +94,7 @@ class UniqueImpl : public ExtLayerBase { DataConfigurator(ConfLayout::PLN, Precision::FP32), DataConfigurator(ConfLayout::PLN, Precision::FP32) }); } } - catch (InferenceEngine::details::InferenceEngineException &ex) { + catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/nodes/unsqueeze.cpp b/inference-engine/src/mkldnn_plugin/nodes/unsqueeze.cpp index 804e41140bd3ec..308542a702a84d 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/unsqueeze.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/unsqueeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,10 +20,10 @@ class UnsqueezeImpl: public ExtLayerBase { explicit UnsqueezeImpl(const CNNLayer* layer) { try { if (layer->insData.empty() || layer->outData.empty()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input/output edges!"; + IE_THROW() << layer->name << " Incorrect number of input/output edges!"; if (layer->insData.size() != 1 && layer->insData.size() != 2) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of input edges!"; + IE_THROW() << layer->name << " Incorrect number of input edges!"; if (layer->insData.size() == 1) addConfig(layer, { { ConfLayout::PLN, false, 0 } }, { { ConfLayout::PLN, false, 0 } }); @@ -32,7 +32,7 @@ class UnsqueezeImpl: public ExtLayerBase { // WA to enable the implementation only for equal input and output precisions confs[0].inConfs[0].desc.setPrecision(confs[0].outConfs[0].desc.getPrecision()); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/src/mkldnn_plugin/perf_count.h b/inference-engine/src/mkldnn_plugin/perf_count.h index e1ff1332913a63..3fce79b5e689d0 100644 --- a/inference-engine/src/mkldnn_plugin/perf_count.h +++ b/inference-engine/src/mkldnn_plugin/perf_count.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/utils/bfloat16.hpp b/inference-engine/src/mkldnn_plugin/utils/bfloat16.hpp index dd98a63c1b3c30..dd3142a96e25ca 100644 --- a/inference-engine/src/mkldnn_plugin/utils/bfloat16.hpp +++ b/inference-engine/src/mkldnn_plugin/utils/bfloat16.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/utils/blob_dump.cpp b/inference-engine/src/mkldnn_plugin/utils/blob_dump.cpp index bea4393de17beb..7c78c8be153af6 100644 --- a/inference-engine/src/mkldnn_plugin/utils/blob_dump.cpp +++ b/inference-engine/src/mkldnn_plugin/utils/blob_dump.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -50,7 +50,7 @@ static IEB_HEADER prepare_header(const TensorDesc& desc) { header.precision = desc.getPrecision(); if (desc.getDims().size() > 7) - THROW_IE_EXCEPTION << "Dumper support max 7D blobs"; + IE_THROW() << "Dumper support max 7D blobs"; header.ndims = desc.getDims().size(); for (int i = 0; i < header.ndims; i++) @@ -66,11 +66,11 @@ static TensorDesc parse_header(IEB_HEADER &header) { header.magic[1] != IEB_MAGIC[1] || header.magic[2] != IEB_MAGIC[2] || header.magic[3] != IEB_MAGIC[3]) - THROW_IE_EXCEPTION << "Dumper cannot parse file. Wrong format."; + IE_THROW() << "Dumper cannot parse file. Wrong format."; if (header.ver[0] != 0 || header.ver[1] != 1) - THROW_IE_EXCEPTION << "Dumper cannot parse file. Unsupported IEB format version."; + IE_THROW() << "Dumper cannot parse file. Unsupported IEB format version."; Precision prc = Precision(static_cast(header.precision)); SizeVector dims(header.ndims); @@ -137,7 +137,7 @@ static Blob::Ptr prepare_plain_data(Blob::Ptr blob) { break; } default: - THROW_IE_EXCEPTION << "Dumper. Unsupported precision"; + IE_THROW() << "Dumper. Unsupported precision"; } return pln_blob; @@ -145,10 +145,10 @@ static Blob::Ptr prepare_plain_data(Blob::Ptr blob) { void BlobDumper::dump(std::ostream &stream) { if (!_blob) - THROW_IE_EXCEPTION << "Dumper cannot dump empty Blob"; + IE_THROW() << "Dumper cannot dump empty Blob"; if (_blob->buffer().as() == nullptr) - THROW_IE_EXCEPTION << "Dumper cannot dump. Blob is not allocated."; + IE_THROW() << "Dumper cannot dump. Blob is not allocated."; IEB_HEADER header = prepare_header(_blob->getTensorDesc()); Blob::Ptr pln_blob = prepare_plain_data(_blob); @@ -174,10 +174,10 @@ void BlobDumper::dump(std::ostream &stream) { void BlobDumper::dumpAsTxt(std::ostream &stream) { if (!_blob) - THROW_IE_EXCEPTION << "Dumper cannot dump empty Blob"; + IE_THROW() << "Dumper cannot dump empty Blob"; if (_blob->buffer().as() == nullptr) - THROW_IE_EXCEPTION << "Dumper cannot dump. Blob is not allocated."; + IE_THROW() << "Dumper cannot dump. Blob is not allocated."; SizeVector dims = _blob->getTensorDesc().getDims(); @@ -244,7 +244,7 @@ void BlobDumper::dumpAsTxt(std::ostream &stream) { break; } default: - THROW_IE_EXCEPTION << "Dumper. Unsupported precision"; + IE_THROW() << "Dumper. Unsupported precision"; } } @@ -264,7 +264,7 @@ BlobDumper BlobDumper::read(std::istream &stream) { // Parse scales fields. if (header.scaling_axis != NO_SCALES) { if (header.scaling_axis != 1) - THROW_IE_EXCEPTION << "Dumper support scaling only for channel dims."; + IE_THROW() << "Dumper support scaling only for channel dims."; size_t scl_size = header.scaling_data_size / sizeof(float); auto scl = make_blob_with_precision({Precision::FP32, {scl_size}, C}); @@ -282,7 +282,7 @@ BlobDumper BlobDumper::read(const std::string &file_path) { std::ifstream file; file.open(file_path); if (!file.is_open()) - THROW_IE_EXCEPTION << "Dumper cannot open file " << file_path; + IE_THROW() << "Dumper cannot open file " << file_path; auto res = read(file); file.close(); @@ -293,7 +293,7 @@ void BlobDumper::dump(const std::string &dump_path) { std::ofstream dump_file; dump_file.open(dump_path); if (!dump_file.is_open()) - THROW_IE_EXCEPTION << "Dumper cannot create dump file"; + IE_THROW() << "Dumper cannot create dump file"; dump(dump_file); dump_file.close(); @@ -303,7 +303,7 @@ void BlobDumper::dumpAsTxt(const std::string dump_path) { std::ofstream dump_file; dump_file.open(dump_path); if (!dump_file.is_open()) - THROW_IE_EXCEPTION << "Dumper cannot create dump file"; + IE_THROW() << "Dumper cannot create dump file"; dumpAsTxt(dump_file); dump_file.close(); @@ -350,7 +350,7 @@ Blob::Ptr BlobDumper::getRealValue() { case Precision::U8: plain_copy(_blob, _scales, res); break; case Precision::FP32: plain_copy(_blob, _scales, res); break; case Precision::I8: plain_copy(_blob, _scales, res); break; - default: THROW_IE_EXCEPTION << "Unsupported precesion for getRealValue method."; + default: IE_THROW() << "Unsupported precesion for getRealValue method."; } return res; @@ -362,7 +362,7 @@ BlobDumper& BlobDumper::withScales(InferenceEngine::Blob::Ptr scales) { scales->getTensorDesc().getDims().size() != 1 || scales->getTensorDesc().getDims()[0] != _blob->getTensorDesc().getDims()[1] || scales->getTensorDesc().getPrecision() != Precision::FP32) - THROW_IE_EXCEPTION << "Dumper cannot use passed scales. Blob has incompatible shape."; + IE_THROW() << "Dumper cannot use passed scales. Blob has incompatible shape."; _scales = scales; return *this; diff --git a/inference-engine/src/mkldnn_plugin/utils/blob_dump.h b/inference-engine/src/mkldnn_plugin/utils/blob_dump.h index 4a87c118d7a737..18c755f7bbc261 100644 --- a/inference-engine/src/mkldnn_plugin/utils/blob_dump.h +++ b/inference-engine/src/mkldnn_plugin/utils/blob_dump.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/utils/general_utils.h b/inference-engine/src/mkldnn_plugin/utils/general_utils.h index d5cd783198dd44..d73a6737f302d1 100644 --- a/inference-engine/src/mkldnn_plugin/utils/general_utils.h +++ b/inference-engine/src/mkldnn_plugin/utils/general_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.cpp b/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.cpp index 6c0978475da3c3..859515fd75e6aa 100644 --- a/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.cpp +++ b/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.hpp b/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.hpp index 3e59c15dcc2e3b..becb626fd90415 100644 --- a/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.hpp +++ b/inference-engine/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/multi_device/CMakeLists.txt b/inference-engine/src/multi_device/CMakeLists.txt index 615d2d250c253b..d028c5c7562b10 100644 --- a/inference-engine/src/multi_device/CMakeLists.txt +++ b/inference-engine/src/multi_device/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/multi_device/multi_device_async_infer_request.cpp b/inference-engine/src/multi_device/multi_device_async_infer_request.cpp index 845f6aac2d9485..ca1c98976a2aea 100644 --- a/inference-engine/src/multi_device/multi_device_async_infer_request.cpp +++ b/inference-engine/src/multi_device/multi_device_async_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -48,7 +48,7 @@ MultiDeviceAsyncInferRequest::MultiDeviceAsyncInferRequest( _multiDeviceExecutableNetwork->_devicePrioritiesInitial.cend(), [&name](const MultiDevicePlugin::DeviceInformation& d){ return d.deviceName == name; }); if (_multiDeviceExecutableNetwork->_devicePrioritiesInitial.cend() == res) { - THROW_IE_EXCEPTION << "None of the devices (for which current MULTI-device configuration was " + IE_THROW() << "None of the devices (for which current MULTI-device configuration was " "initialized) supports a remote blob created on the device named " << name; } else { @@ -74,7 +74,10 @@ MultiDeviceAsyncInferRequest::MultiDeviceAsyncInferRequest( if (nullptr != InferenceEngine::CurrentException()) std::rethrow_exception(InferenceEngine::CurrentException()); else - THROW_IE_EXCEPTION << InferenceEngine::details::as_status << status; + IE_EXCEPTION_SWITCH(status, ExceptionType, + InferenceEngine::details::ThrowNow{} + <<= std::stringstream{} << IE_LOCATION + << InferenceEngine::details::ExceptionTraits::string()); } if (_needPerfCounters) _perfMap = _workerInferRequest->_inferRequest.GetPerformanceCounts(); diff --git a/inference-engine/src/multi_device/multi_device_async_infer_request.hpp b/inference-engine/src/multi_device/multi_device_async_infer_request.hpp index 715f2d8ded2ecc..60abf50ab8205b 100644 --- a/inference-engine/src/multi_device/multi_device_async_infer_request.hpp +++ b/inference-engine/src/multi_device/multi_device_async_infer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/multi_device/multi_device_exec_network.cpp b/inference-engine/src/multi_device/multi_device_exec_network.cpp index 13114e5faa1a0e..d1a8dde5ae5fa0 100644 --- a/inference-engine/src/multi_device/multi_device_exec_network.cpp +++ b/inference-engine/src/multi_device/multi_device_exec_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -68,8 +68,8 @@ MultiDeviceExecutableNetwork::MultiDeviceExecutableNetwork(const DeviceMap(); - } catch (const InferenceEngine::details::InferenceEngineException &iie) { - THROW_IE_EXCEPTION + } catch (const InferenceEngine::Exception &iie) { + IE_THROW() << "Every device used with the Multi-Device should " << "support OPTIMAL_NUMBER_OF_INFER_REQUESTS ExecutableNetwork metric. " << "Failed to query the metric for the " << device << " with error:" << iie.what(); @@ -168,10 +168,9 @@ RemoteContext::Ptr MultiDeviceExecutableNetwork::GetContext() const { const auto& n = _networksPerDevice.at(device.deviceName); try { return n.GetContext(); - } catch (const NotImplemented& ex) { - } + } catch (const NotImplemented&) {} } - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED) << "None of the devices in the MULTI has an associated remote context." + IE_THROW(NotImplemented) << "None of the devices in the MULTI has an associated remote context." << " Current list of devices allowed via the DEVICE_PRIORITIES config: " << devices_names; } @@ -201,7 +200,7 @@ IInferRequest::Ptr MultiDeviceExecutableNetwork::CreateInferRequest() { _needPerfCounters, std::static_pointer_cast(shared_from_this()), _callbackExecutor); - asyncRequest.reset(new InferRequestBase(asyncTreadSafeImpl), [](IInferRequest *p) { p->Release(); }); + asyncRequest.reset(new InferRequestBase(asyncTreadSafeImpl)); asyncTreadSafeImpl->SetPointerToPublicInterface(asyncRequest); return asyncRequest; } @@ -209,7 +208,7 @@ IInferRequest::Ptr MultiDeviceExecutableNetwork::CreateInferRequest() { void MultiDeviceExecutableNetwork::SetConfig(const std::map &config) { auto priorities = config.find(MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES); if (priorities == config.end() || config.size() > 1) { - THROW_IE_EXCEPTION << "The only config supported for the Network's SetConfig is MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES"; + IE_THROW() << "The only config supported for the Network's SetConfig is MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES"; } else { auto multiPlugin = std::dynamic_pointer_cast(this->_plugin); assert(multiPlugin != nullptr); @@ -218,7 +217,7 @@ void MultiDeviceExecutableNetwork::SetConfig(const std::map lock{_mutex}; for (auto && device : metaDevices) { if (_networksPerDevice.find(device.deviceName) == _networksPerDevice.end()) { - THROW_IE_EXCEPTION << NOT_FOUND_str << "You can only change device priorities but not add new devices with" + IE_THROW(NotFound) << "You can only change device priorities but not add new devices with" << " the Network's SetConfig(MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES. " << device.deviceName << " device was not in the original device list!"; @@ -245,7 +244,7 @@ InferenceEngine::Parameter MultiDeviceExecutableNetwork::GetConfig(const std::st if (it != _config.end()) { return it->second; } else { - THROW_IE_EXCEPTION << NOT_FOUND_str << name <<" not found in the ExecutableNetwork config"; + IE_THROW(NotFound) << name <<" not found in the ExecutableNetwork config"; } } @@ -255,8 +254,8 @@ InferenceEngine::Parameter MultiDeviceExecutableNetwork::GetMetric(const std::st for (auto n : _networksPerDevice) { try { res += n.second.GetMetric(METRIC_KEY(OPTIMAL_NUMBER_OF_INFER_REQUESTS)).as(); - } catch (const InferenceEngine::details::InferenceEngineException &iie) { - THROW_IE_EXCEPTION + } catch (const InferenceEngine::Exception &iie) { + IE_THROW() << "Every device used with the Multi-Device should " << "support OPTIMAL_NUMBER_OF_INFER_REQUESTS ExecutableNetwork metric. " << "Failed to query the metric for the " << n.first << " with error:" << iie.what(); @@ -279,7 +278,7 @@ InferenceEngine::Parameter MultiDeviceExecutableNetwork::GetMetric(const std::st std::vector configKeys = { MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES }; IE_SET_METRIC_RETURN(SUPPORTED_CONFIG_KEYS, configKeys); } else { - THROW_IE_EXCEPTION << "Unsupported Network metric: " << name; + IE_THROW() << "Unsupported Network metric: " << name; } } diff --git a/inference-engine/src/multi_device/multi_device_exec_network.hpp b/inference-engine/src/multi_device/multi_device_exec_network.hpp index 9251f892d1c69c..0991f8666cc3cb 100644 --- a/inference-engine/src/multi_device/multi_device_exec_network.hpp +++ b/inference-engine/src/multi_device/multi_device_exec_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/multi_device/multi_device_infer_request.cpp b/inference-engine/src/multi_device/multi_device_infer_request.cpp index a4f0128748bcf7..97fc1c3296b35a 100644 --- a/inference-engine/src/multi_device/multi_device_infer_request.cpp +++ b/inference-engine/src/multi_device/multi_device_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -60,4 +60,12 @@ void MultiDeviceInferRequest::SetBlobsToAnotherRequest(InferRequest& req) { } } +std::map MultiDeviceInferRequest::GetPerformanceCounts() const { + IE_THROW(NotImplemented); +} + +void MultiDeviceInferRequest::InferImpl() { + IE_THROW(NotImplemented); +} + } // namespace MultiDevicePlugin diff --git a/inference-engine/src/multi_device/multi_device_infer_request.hpp b/inference-engine/src/multi_device/multi_device_infer_request.hpp index b7c674e272c6c2..33e339a938a847 100644 --- a/inference-engine/src/multi_device/multi_device_infer_request.hpp +++ b/inference-engine/src/multi_device/multi_device_infer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,12 +25,8 @@ class MultiDeviceInferRequest : public InferenceEngine::InferRequestInternal { explicit MultiDeviceInferRequest(const InferenceEngine::InputsDataMap& networkInputs, const InferenceEngine::OutputsDataMap& networkOutputs, InferenceEngine::InferRequest request_to_share_blobs_with); - std::map GetPerformanceCounts() const override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); - } - void InferImpl() override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); - } + std::map GetPerformanceCounts() const override; + void InferImpl() override; // Multi-Device impl specific: sets the data (blobs from the device-less requests to the specific device request) void SetBlobsToAnotherRequest(InferenceEngine::InferRequest& req); }; diff --git a/inference-engine/src/multi_device/multi_device_plugin.cpp b/inference-engine/src/multi_device/multi_device_plugin.cpp index 3891e78d7ade0f..d01fa7dabb422b 100644 --- a/inference-engine/src/multi_device/multi_device_plugin.cpp +++ b/inference-engine/src/multi_device/multi_device_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -82,19 +82,13 @@ std::vector MultiDeviceInferencePlugin::ParseMetaDevices(cons numRequests = std::stol(d.substr(openingBracket + 1, closingBracket - 1)); if (numRequests <= 0) { - THROW_IE_EXCEPTION << "Priority value for '" << deviceName << "' must be > 0, while " << numRequests + IE_THROW() << "Priority value for '" << deviceName << "' must be > 0, while " << numRequests << "is passed"; } } // create meta device - auto cfg = getDeviceConfig(deviceName); - std::vector supportedConfigKeys = GetCore()->GetMetric(deviceName, METRIC_KEY(SUPPORTED_CONFIG_KEYS)); - if (std::find(std::begin(supportedConfigKeys), std::end(supportedConfigKeys), CONFIG_KEY_INTERNAL(AGGREGATED_PLUGIN)) - != std::end(supportedConfigKeys)) { - cfg.emplace(CONFIG_KEY_INTERNAL(AGGREGATED_PLUGIN), ""); - } - metaDevices.push_back({ deviceName, cfg, numRequests }); + metaDevices.push_back({ deviceName, getDeviceConfig(deviceName), numRequests }); } return metaDevices; @@ -105,12 +99,12 @@ InferenceEngine::Parameter MultiDeviceInferencePlugin::GetConfig(const std::stri if (name == MULTI_CONFIG_KEY(DEVICE_PRIORITIES)) { auto it = _config.find(MULTI_CONFIG_KEY(DEVICE_PRIORITIES)); if (it == _config.end()) { - THROW_IE_EXCEPTION << "Value for KEY_MULTI_DEVICE_PRIORITIES is not set"; + IE_THROW() << "Value for KEY_MULTI_DEVICE_PRIORITIES is not set"; } else { return { it->second }; } } else { - THROW_IE_EXCEPTION << "Unsupported config key: " << name; + IE_THROW() << "Unsupported config key: " << name; } } @@ -140,28 +134,27 @@ InferenceEngine::Parameter MultiDeviceInferencePlugin::GetMetric(const std::stri IE_SET_METRIC_RETURN(FULL_DEVICE_NAME, device_name); } else if (name == METRIC_KEY(SUPPORTED_CONFIG_KEYS)) { std::vector configKeys = { - MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES, - CONFIG_KEY_INTERNAL(AGGREGATED_PLUGIN)}; + MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES}; IE_SET_METRIC_RETURN(SUPPORTED_CONFIG_KEYS, configKeys); } else { - THROW_IE_EXCEPTION << "Unsupported metric key " << name; + IE_THROW() << "Unsupported metric key " << name; } } ExecutableNetworkInternal::Ptr MultiDeviceInferencePlugin::LoadExeNetworkImpl(const CNNNetwork &network, const std::map& config) { if (GetCore() == nullptr) { - THROW_IE_EXCEPTION << "Please, work with MULTI device via InferencEngine::Core object"; + IE_THROW() << "Please, work with MULTI device via InferencEngine::Core object"; } if (network.getFunction() == nullptr) { - THROW_IE_EXCEPTION << "MULTI device supports just ngraph network representation"; + IE_THROW() << "MULTI device supports just ngraph network representation"; } auto fullConfig = mergeConfigs(_config, config); auto priorities = fullConfig.find(MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES); if (priorities == fullConfig.end()) { - THROW_IE_EXCEPTION << "KEY_MULTI_DEVICE_PRIORITIES key is not set for MULTI device"; + IE_THROW() << "KEY_MULTI_DEVICE_PRIORITIES key is not set for MULTI device"; } auto metaDevices = ParseMetaDevices(priorities->second, fullConfig); @@ -190,7 +183,7 @@ ExecutableNetworkInternal::Ptr MultiDeviceInferencePlugin::LoadExeNetworkImpl(co IStreamsExecutor::ThreadBindingType::NONE}); executor->runAndWait(loads); if (executableNetworkPerDevice.empty()) - THROW_IE_EXCEPTION << NOT_FOUND_str << "Failed to load network to any device " + IE_THROW(NotFound) << "Failed to load network to any device " << "that the MULTI device is initialized to work with"; // checking the perf counters config from the loaded network to respect both device's plugin and load-specific setting @@ -216,11 +209,11 @@ QueryNetworkResult MultiDeviceInferencePlugin::QueryNetwork(const CNNNetwork& QueryNetworkResult queryResult; if (GetCore() == nullptr) { - THROW_IE_EXCEPTION << "Please, work with MULTI device via InferencEngine::Core object"; + IE_THROW() << "Please, work with MULTI device via InferencEngine::Core object"; } if (network.getFunction() == nullptr) { - THROW_IE_EXCEPTION << "MULTI device supports just ngraph network representation"; + IE_THROW() << "MULTI device supports just ngraph network representation"; } queryResult.rc = StatusCode::OK; @@ -229,7 +222,7 @@ QueryNetworkResult MultiDeviceInferencePlugin::QueryNetwork(const CNNNetwork& auto fullConfig = mergeConfigs(_config, config); auto priorities = fullConfig.find(MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES); if (priorities == fullConfig.end()) { - THROW_IE_EXCEPTION << "KEY_MULTI_DEVICE_PRIORITIES key is not set for MULTI device"; + IE_THROW() << "KEY_MULTI_DEVICE_PRIORITIES key is not set for MULTI device"; } auto metaDevices = ParseMetaDevices(priorities->second, fullConfig); std::unordered_set supportedLayers; diff --git a/inference-engine/src/multi_device/multi_device_plugin.hpp b/inference-engine/src/multi_device/multi_device_plugin.hpp index 0e2d9a43711724..c6bd7b3a8a2321 100644 --- a/inference-engine/src/multi_device/multi_device_plugin.hpp +++ b/inference-engine/src/multi_device/multi_device_plugin.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ namespace MultiDevicePlugin { class MultiDeviceInferencePlugin : public InferenceEngine::InferencePluginInternal { public: MultiDeviceInferencePlugin(); - ~MultiDeviceInferencePlugin() override = default; + ~MultiDeviceInferencePlugin() = default; InferenceEngine::ExecutableNetworkInternal::Ptr LoadExeNetworkImpl(const InferenceEngine::CNNNetwork& network, const std::map& config) override; diff --git a/inference-engine/src/offline_transformations/CMakeLists.txt b/inference-engine/src/offline_transformations/CMakeLists.txt index b230c115f1d183..3083304e887e1e 100644 --- a/inference-engine/src/offline_transformations/CMakeLists.txt +++ b/inference-engine/src/offline_transformations/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -19,7 +19,7 @@ source_group("include" FILES ${PUBLIC_HEADERS}) add_library(${TARGET_NAME} STATIC ${LIBRARY_SRC} ${PUBLIC_HEADERS}) -target_link_libraries(${TARGET_NAME} PUBLIC ${NGRAPH_LIBRARIES} inference_engine_transformations +target_link_libraries(${TARGET_NAME} PUBLIC ${NGRAPH_LIBRARIES} inference_engine_transformations ngraph::reference PRIVATE openvino::itt) target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR} @@ -27,10 +27,6 @@ target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR} add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) -# LTO - -set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) - # developer package ie_developer_export_targets(${TARGET_NAME}) diff --git a/inference-engine/src/offline_transformations/include/mask_attribute.hpp b/inference-engine/src/offline_transformations/include/mask_attribute.hpp new file mode 100644 index 00000000000000..70cce141567192 --- /dev/null +++ b/inference-engine/src/offline_transformations/include/mask_attribute.hpp @@ -0,0 +1,137 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief Defines primitives priority attribute + * @file primitives_priority_attribute.hpp + */ + +#pragma once + +#include +#include +#include +#include +#include + +#include +#include + +namespace ngraph { + +/** + * @ingroup ie_runtime_attr_api + * @brief each element in vector represents dimension and each element + * in set is an id of dimensions which contains zeros. + */ +class Mask : public std::vector>, + public std::enable_shared_from_this { +public: + using Ptr = std::shared_ptr; + + Mask() = default; + + explicit Mask(const ngraph::PartialShape & shape) + : std::vector(shape.rank().get_length()) { + } + + explicit Mask(const size_t & size) + : std::vector(size) { + } + + Mask(std::initializer_list> list) + : std::vector() { + for (const auto & dim_values : list) { + push_back(dim_values); + } + } + + bool all_dims_are_empty() const { + return std::all_of(begin(), end(), + [](const value_type & value) { + return value.empty(); + }); + } + + bool is_shape_like() const { return m_is_shape_like; } + + void set_shape_like(bool flag) { m_is_shape_like = flag; } + + void add_callback(const std::function & receive_callback, Mask::Ptr mask) { + m_callbacks[mask.get()] = receive_callback; + m_dependencies.push_back(mask.get()); + } + + bool apply_callback(Mask::Ptr mask) { + // TODO: in case if callback returns false we need to propagate original value + const auto & ref_state = Mask(*this); + if (!m_callbacks.at(mask.get())(shared_from_this())) { + return false; + } + + if (!m_need_initialization && *this == ref_state) { + return true; + } + + m_need_initialization = false; + + for (const auto & m_dependency : m_dependencies) { + if (!m_dependency->apply_callback(shared_from_this())) { + return false; + } + } + return true; + } + + void invalidate() { + clean_dim_values(); + for (const auto & d : m_dependencies) { + if (d->apply_callback(shared_from_this())) { + // TODO: throw an exception if zero dims can't be propagated + } + } + } + + void clean_dim_values() { + for (auto & item : *this) { + item.clear(); + } + } +private: + bool m_is_shape_like{false}; + + std::map> m_callbacks; + + std::vector m_dependencies; + + bool m_need_initialization{true}; +}; + +std::ostream & operator<< (std::ostream & out, const Mask & mask); + +extern template class VariantImpl; + +template<> +class VariantWrapper : public VariantImpl { +public: + static constexpr VariantTypeInfo type_info{"Variant::RuntimeAttribute::Mask", 0}; + + const VariantTypeInfo &get_type_info() const override { + return type_info; + } + + static std::shared_ptr> create(const value_type & value) { + return std::make_shared>(value); + } + + explicit VariantWrapper(const value_type &value) : VariantImpl(value) {} +}; + +Mask::Ptr getMask(const Output & output); + +Mask::Ptr getMask(const Output & output); + +void setMask(Output output, const Mask::Ptr & mask); + +} // namespace ngraph diff --git a/inference-engine/src/offline_transformations/include/moc_transformations.hpp b/inference-engine/src/offline_transformations/include/moc_transformations.hpp index 197197255023f1..1fc54569fdc324 100644 --- a/inference-engine/src/offline_transformations/include/moc_transformations.hpp +++ b/inference-engine/src/offline_transformations/include/moc_transformations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/offline_transformations/include/pruning.hpp b/inference-engine/src/offline_transformations/include/pruning.hpp new file mode 100644 index 00000000000000..c16433685a851c --- /dev/null +++ b/inference-engine/src/offline_transformations/include/pruning.hpp @@ -0,0 +1,68 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include +#include + +namespace ngraph { +namespace pass { + +class InitConstMask; +class PropagateMasks; +class ShrinkWeights; + +class Pruning; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief Check Constant operation values by given dimensions and set + * masks according to results that are bases on `condition` lambda function. + * Works for Constant with floating point type (f16, f32, f64). + */ +class ngraph::pass::InitConstMask : public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + explicit InitConstMask(const ngraph::AxisSet & dims, + const std::function & condition = [](const double & value) { return value < 1e-5; }); +}; + +/** + * @ingroup ie_transformation_common_api + * @brief Contains several MatcherPasses that initialize and propagate + * masks from Constant operation to the network output. + */ +class ngraph::pass::PropagateMasks : public ngraph::pass::GraphRewrite { +public: + NGRAPH_RTTI_DECLARATION; + PropagateMasks(); +}; + +/** + * @ingroup ie_transformation_common_api + * @brief Based on masks in Constant operation it inserts Gather operations + * to shrink them. After this pass execution ConstantFolding is required. + */ +class ngraph::pass::ShrinkWeights : public ngraph::pass::FunctionPass { +public: + NGRAPH_RTTI_DECLARATION; + bool run_on_function(std::shared_ptr) override; +}; + +/** + * @ingroup ie_transformation_common_api + * @brief This is just a sequence of passes that performs pruning transformations pipeline + */ +class ngraph::pass::Pruning : public ngraph::pass::FunctionPass { +public: + NGRAPH_RTTI_DECLARATION; + bool run_on_function(std::shared_ptr) override; +}; diff --git a/inference-engine/src/offline_transformations/src/moc_transformations.cpp b/inference-engine/src/offline_transformations/src/moc_transformations.cpp index 1dc75a95761b62..eec2491a28edbf 100644 --- a/inference-engine/src/offline_transformations/src/moc_transformations.cpp +++ b/inference-engine/src/offline_transformations/src/moc_transformations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/offline_transformations/src/pruning/init_const_mask.cpp b/inference-engine/src/offline_transformations/src/pruning/init_const_mask.cpp new file mode 100644 index 00000000000000..73929487b80d18 --- /dev/null +++ b/inference-engine/src/offline_transformations/src/pruning/init_const_mask.cpp @@ -0,0 +1,66 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "pruning.hpp" +#include "mask_attribute.hpp" + +#include +#include +#include +#include + +NGRAPH_RTTI_DEFINITION(ngraph::pass::InitConstMask, "InitConstMask", 0); + +ngraph::pass::InitConstMask::InitConstMask(const ngraph::AxisSet & dims, + const std::function & condition) { + auto constant = pattern::wrap_type( + pattern::type_matches_any({element::f16, element::f32, element::f64})); + + matcher_pass_callback callback = [=](pattern::Matcher& m) { + auto const_node = std::dynamic_pointer_cast(m.get_match_root()); + if (!const_node) return false; + + const auto & shape = const_node->get_shape(); + const auto & values = const_node->cast_vector(); + + auto mask = std::make_shared(shape); + + for (const auto & dim : dims) { + if (dim >= shape.size()) { + throw ngraph_error("Dim value " + std::to_string(dim) + " is out of range [0;" +std::to_string(shape.size() - 1) + "]"); + } + for (size_t value = 0; value < shape[dim]; ++value) { + Coordinate begin(shape.size(), 0); + Coordinate end(shape); + + begin[dim] = value; + end[dim] = value + 1; + + bool skip_dim_value = false; + CoordinateTransform iter(shape, begin, end); + for (const Coordinate & coord : iter) { + if (!condition(values.at(iter.index(coord)))) { + skip_dim_value = true; + break; + } + } + if (!skip_dim_value) { + mask->at(dim).insert(value); + } + } + } + + setMask(const_node, mask); + if (!mask->all_dims_are_empty()) { + NGRAPH_DEBUG << "MASK (" << const_node->get_friendly_name() << ") " << *mask << std::endl; + } + + return false; + }; + + auto m = std::make_shared(constant, "InitConstMask"); + register_matcher(m, callback); +} diff --git a/inference-engine/src/offline_transformations/src/pruning/mask_attribute.cpp b/inference-engine/src/offline_transformations/src/pruning/mask_attribute.cpp new file mode 100644 index 00000000000000..6167eae0cd493f --- /dev/null +++ b/inference-engine/src/offline_transformations/src/pruning/mask_attribute.cpp @@ -0,0 +1,62 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include +#include + +#include "mask_attribute.hpp" + +namespace ngraph { + +template class ngraph::VariantImpl; + +constexpr VariantTypeInfo VariantWrapper::type_info; + +Mask::Ptr getMask(const Output & output) { + auto &rtInfo = output.get_rt_info(); + using MaskWraper = VariantWrapper; + + if (!rtInfo.count(MaskWraper::type_info.name)) return nullptr; + + const auto &attr = rtInfo.at(MaskWraper::type_info.name); + return as_type_ptr(attr)->get(); +} + +Mask::Ptr getMask(const Output & output) { + auto &rtInfo = output.get_rt_info(); + using MaskWraper = VariantWrapper; + + if (!rtInfo.count(MaskWraper::type_info.name)) return nullptr; + + const auto &attr = rtInfo.at(MaskWraper::type_info.name); + return as_type_ptr(attr)->get(); +} + +void setMask(Output output, const Mask::Ptr & mask) { + auto &rtInfo = output.get_rt_info(); + using MaskWraper = VariantWrapper; + rtInfo[MaskWraper::type_info.name] = MaskWraper::create(mask); +} + +std::ostream & operator<< (std::ostream & out, const Mask & mask) { + out << "[ "; + for (auto & dim : mask) { + out << "{"; + out << dim.size(); + // Uncomment this to print values + // for (auto & value : dim) { + // out << value << " "; + // } + out << "} "; + } + out << " ]"; + return out; +} + + + +} // namespace ngraph diff --git a/inference-engine/src/offline_transformations/src/pruning/propagate_masks.cpp b/inference-engine/src/offline_transformations/src/pruning/propagate_masks.cpp new file mode 100644 index 00000000000000..7ce6a032abd3bb --- /dev/null +++ b/inference-engine/src/offline_transformations/src/pruning/propagate_masks.cpp @@ -0,0 +1,307 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "pruning.hpp" +#include "mask_attribute.hpp" + +#include +#include +#include + +NGRAPH_RTTI_DEFINITION(ngraph::pass::PropagateMasks, "PropagateMasks", 0); + +namespace ngraph { +namespace pass { +namespace mask_propagation { + +class Convolution; +class GroupConvolution; +class Elementwise; +class PassThrough; +class StopPropagation; + +} // namespace mask_propagation +} // namespace pass +} // namespace ngraph + +class ngraph::pass::mask_propagation::Convolution : public MatcherPass { +public: + Convolution() { + auto input = pattern::any_input(); + auto weights = pattern::any_input(); + auto conv = pattern::wrap_type({input, weights}); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher& m) { + const auto & pattern_map = m.get_pattern_value_map(); + const auto & m_weights = pattern_map.at(weights); + const auto & m_output = pattern_map.at(conv); + const auto & m_input = pattern_map.at(input); + + // In case if weights are Constant we initialize Mask + InitConstMask({0}/* check only output channel */).apply(m_weights.get_node_shared_ptr()); + + auto weights_mask = getMask(m_weights); + // If weights are not a Constant and we didn't set Mask value before we will get nullptr + if (!weights_mask) return false; + + if (auto input_mask = getMask(m_input)) { + // Weights input channel is connected to the convolution input channel dimension + // so we update weights mask to be aligned with input shape. + weights_mask->add_callback([input_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(1/* weights input channel */) = input_mask->at(1 /* input data channel */); + return true; + }, input_mask); + + input_mask->add_callback([weights_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(1) = weights_mask->at(1); + return true; + }, weights_mask); + + if (!weights_mask->apply_callback(input_mask)) { + return false; + } + } + + // Create output mask that describes which channel dimensions will be removed + auto conv_mask = std::make_shared(m_weights.get_shape().size()); + + conv_mask->add_callback([weights_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(1) = weights_mask->at(0/*weights output channel dim */); + return true; + }, weights_mask); + + weights_mask->add_callback([conv_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(0) = conv_mask->at(1); + return true; + }, conv_mask); + + if (!conv_mask->apply_callback(weights_mask)) { + return false; + } + + setMask(m_output, conv_mask); + return true; + }; + + auto m = std::make_shared(conv, "ConvolutionMaskPropagation"); + register_matcher(m, callback); + } +}; + +class ngraph::pass::mask_propagation::GroupConvolution : public MatcherPass { +public: + GroupConvolution() { + auto input = pattern::any_input(); + auto weights = pattern::any_input(); + auto group_conv = pattern::wrap_type({input, weights}); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher& m) { + const auto & pattern_map = m.get_pattern_value_map(); + const auto & m_weights = pattern_map.at(weights); + const auto & m_output = pattern_map.at(group_conv); + const auto & m_input = pattern_map.at(input); + + // TODO: check static rank in pattern, use only particular dims + auto weights_shape = m_weights.get_shape(); + auto input_shape = m_input.get_shape(); + // support only depthwise convolutions + if (weights_shape[0] != input_shape[1]) { + return false; + } + + auto input_mask = getMask(m_input); + if (!input_mask) return false; + + auto weights_mask = getMask(m_weights); + if (!weights_mask) { + // TODO: only if weights are constant + weights_mask = std::make_shared(weights_shape.size()); + setMask(m_weights, weights_mask); + } + + // Weights input channel is connected to the convolution input channel dimension + // so we update weights mask to be aligned with input shape. + weights_mask->add_callback([input_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(0) = input_mask->at(1); + return true; + }, input_mask); + + input_mask->add_callback([weights_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(1) = weights_mask->at(0); + return true; + }, weights_mask); + + if (!weights_mask->apply_callback(input_mask)) { + return false; + } + + // Update output channels mask dims + auto conv_mask = std::make_shared(input_shape.size()); + + conv_mask->add_callback([weights_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(1) = weights_mask->at(0); + return true; + }, weights_mask); + + weights_mask->add_callback([conv_mask](Mask::Ptr cur_mask) -> bool { + cur_mask->at(0) = conv_mask->at(1); + return true; + }, conv_mask); + + if (!conv_mask->apply_callback(weights_mask)) { + return false; + } + + setMask(m_output, conv_mask); + + return true; + }; + + auto m = std::make_shared(group_conv, "GroupConvolutionMaskPropagation"); + register_matcher(m, callback); + } +}; + +class ngraph::pass::mask_propagation::Elementwise : public MatcherPass { +public: + Elementwise() { + auto input = pattern::any_input(); + auto weights = pattern::any_input(); + auto eltwise = pattern::wrap_type({input, weights}, + pattern::has_static_rank()); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher& m) { + const auto & pattern_map = m.get_pattern_value_map(); + const auto & m_weights = pattern_map.at(weights); + const auto & m_output = pattern_map.at(eltwise); + const auto & m_input = pattern_map.at(input); + + // TODO: implement check that compares input shape ranks + const auto & input_rank = m_input.get_partial_shape().rank().get_length(); + const auto & weights_rank = m_weights.get_partial_shape().rank().get_length(); + if (weights_rank < 3 || input_rank < 3) return false; + + // In case if one of the inputs is constant + // TODO: need to find channel dimension instead of hardcoded zero + const size_t & channel_dim = (input_rank == weights_rank ? 1 : 0); + InitConstMask({channel_dim}).apply(m_input.get_node_shared_ptr()); + InitConstMask({channel_dim}).apply(m_weights.get_node_shared_ptr()); + + auto weights_mask = getMask(m_weights); + auto input_mask = getMask(m_input); + + if (!weights_mask || !input_mask) { + NGRAPH_DEBUG << "No mask for: " << m_output.get_node()->get_friendly_name() << std::endl; + return false; + } + + // Merge masks from two inputs + auto output_mask = std::make_shared(m_output.get_partial_shape().rank().get_length()); + + auto out_mask_callback = [input_mask, weights_mask](Mask::Ptr cur_mask) -> bool { + auto omask_iter = cur_mask->rbegin(); + auto imask_iter = input_mask->rbegin(); + auto wmask_iter = weights_mask->rbegin(); + + for (auto & item : *cur_mask) { + item.clear(); + } + + while (imask_iter != input_mask->rend() && + wmask_iter != weights_mask->rend()) { + // Merge mask dimension values for both masks + // Example: (MaskValue[1,2,3,4], MaskValue[2,3]) -> MaskValue[2,3] + for (const auto & value : *imask_iter) { + if (wmask_iter->count(value)) { + omask_iter->insert(value); + } + } + + omask_iter++; + imask_iter++; + wmask_iter++; + } + return true; + }; + output_mask->add_callback(out_mask_callback, input_mask); + output_mask->add_callback(out_mask_callback, weights_mask); + + auto callback = [output_mask](Mask::Ptr cur_mask) -> bool { + auto omask_iter = output_mask->rbegin(); + auto cmask_iter = cur_mask->rbegin(); + while (omask_iter != output_mask->rend() && + cmask_iter != cur_mask->rend()) { + // TODO: check + *cmask_iter = *omask_iter; + + omask_iter++; + cmask_iter++; + } + return true; + }; + input_mask->add_callback(callback, output_mask); + weights_mask->add_callback(callback, output_mask); + + // Init output mask + output_mask->apply_callback(input_mask); + setMask(m_output, output_mask); + return true; + }; + + auto m = std::make_shared(eltwise, "EltwiseMaskPropagation"); + register_matcher(m, callback); + } +}; + +class ngraph::pass::mask_propagation::PassThrough : public MatcherPass { +public: + PassThrough() { + auto unary_op = pattern::wrap_type(); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher& m) { + const auto & pattern_map = m.get_pattern_value_map(); + const auto & m_output = pattern_map.at(unary_op); + const auto & m_input = m_output.get_node_shared_ptr()->input_value(0); + + if (auto input_mask = getMask(m_input)) { + setMask(m_output, input_mask); + } + + return true; + }; + + auto m = std::make_shared(unary_op, "PassThroughMaskPropagation"); + register_matcher(m, callback); + } +}; + +class ngraph::pass::mask_propagation::StopPropagation : public MatcherPass { +public: + StopPropagation() { + auto any_node = pattern::any_input(); + + ngraph::matcher_pass_callback callback = [](ngraph::pattern::Matcher& m) { + const auto & node = m.get_match_root(); + for (const auto & input : node->input_values()) { + if (auto mask = getMask(input)) { + // Invalidate current mask and its parent masks + mask->invalidate(); + NGRAPH_DEBUG << "Invalidate masks for " << *input.get_node() << " because " << node << " is unknown\n"; + } + } + return true; + }; + + auto m = std::make_shared(any_node, "StopMaskPropagation"); + register_matcher(m, callback); + } +}; + +ngraph::pass::PropagateMasks::PropagateMasks() { + add_matcher(); + add_matcher(); + add_matcher(); + add_matcher(); + add_matcher(); +} diff --git a/inference-engine/src/offline_transformations/src/pruning/pruning.cpp b/inference-engine/src/offline_transformations/src/pruning/pruning.cpp new file mode 100644 index 00000000000000..4bcef7e5674f3c --- /dev/null +++ b/inference-engine/src/offline_transformations/src/pruning/pruning.cpp @@ -0,0 +1,63 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "pruning.hpp" +#include "mask_attribute.hpp" + +#include +#include +#include + +NGRAPH_RTTI_DEFINITION(ngraph::pass::Pruning, "Pruning", 0); + +bool ngraph::pass::Pruning::run_on_function(std::shared_ptr f) { + Manager manager(get_pass_config()); + manager.register_pass(); + +#ifdef NGRAPH_DEBUG_ENABLE + // VisualizeTree modifier helps to print Masks and mark nodes with masks + /* + auto modifier = [](const Node& node, std::vector& attributes) { + std::stringstream ss; + size_t index{0}; + for (const auto & output : node.outputs()) { + if (const auto & mask = getMask(output)) { + if (!mask->all_dims_are_empty()) { + attributes.emplace_back("color=green"); + attributes.emplace_back("penwidth=2"); + } + ss << "Mask(" << index << ") : " << *mask << "\\n"; + } + index++; + } + if (!ss.str().empty()) { + auto label = std::find_if(attributes.begin(), attributes.end(), + [](const std::string & value) { return value.find("label=") != std::string::npos; }); + if (label != attributes.end()) { + label->pop_back(); + *label += "\n" + ss.str() + "\""; + } else { + attributes.push_back("label=\"" + ss.str() + "\""); + } + } + }; + */ + + // Uncomment modifier above and following line and change path to resulting svg file + // manager.register_pass("/tmp/before.svg", modifier); +#endif + + manager.register_pass(); + manager.register_pass(); + +#ifdef NGRAPH_DEBUG_ENABLE + // Uncomment following line and change path to resulting svg file + // manager.register_pass("/tmp/after.svg"); +#endif + + manager.run_passes(f); + return true; +} \ No newline at end of file diff --git a/inference-engine/src/offline_transformations/src/pruning/shrink_weights.cpp b/inference-engine/src/offline_transformations/src/pruning/shrink_weights.cpp new file mode 100644 index 00000000000000..cc9b638e8749cd --- /dev/null +++ b/inference-engine/src/offline_transformations/src/pruning/shrink_weights.cpp @@ -0,0 +1,84 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "pruning.hpp" +#include "mask_attribute.hpp" + +#include +#include +#include +#include + +NGRAPH_RTTI_DEFINITION(ngraph::pass::ShrinkWeights, "ShrinkWeights", 0); + +bool ngraph::pass::ShrinkWeights::run_on_function(std::shared_ptr f) { + int64_t reduced_weights_count{0}; + int64_t total_weights_count{0}; + for (const auto & node : f->get_ordered_ops()) { + // calculate shape for every node in graph as the input shape may change + // during Constant shrinking + node->validate_and_infer_types(); + + // TODO: constant can be shared across functions so we need to avoid consumers from other function + auto const_node = std::dynamic_pointer_cast(node); + if (!const_node) continue; + + const auto & const_shape = const_node->get_shape(); + total_weights_count += shape_size(const_shape); + + auto mask = getMask(const_node->output(0)); + if (!mask) continue; + + auto last_output = const_node->output(0); + auto consumers = last_output.get_target_inputs(); + + if (mask->is_shape_like()) { + // TODO: think about it + auto res = const_node->get_shape_val(); + if (res.size() != mask->size()) { + throw ngraph_error("Mask size (" + std::to_string(mask->size()) + ") is not equal to (" + std::to_string(res.size()) + ")"); + } + for (size_t dim = 0; dim < mask->size(); ++dim) { + res[dim] -= mask->at(dim).size(); + } + auto new_const = opset6::Constant::create(const_node->get_element_type(), Shape{res.size()}, res); + replace_node(const_node, new_const); + NGRAPH_DEBUG << "Transform shape like (" << last_output.get_node()->get_friendly_name() << "): " + << const_node->get_shape_val() << " to " << new_const->get_shape_val() << std::endl; + new_const->set_friendly_name(const_node->get_friendly_name()); + } else { + for (size_t dim = 0; dim < mask->size(); ++dim) { + const auto &dim_size = mask->at(dim).size(); + if (dim_size == 0) continue; + + // Convert dims that we want remove to dims that we need to keep + std::vector dims_to_keep; + for (size_t dim_value = 0; dim_value < const_shape[dim]; ++dim_value) { + if (!mask->at(dim).count(dim_value)) { + dims_to_keep.emplace_back(dim_value); + } + } + + const auto & prev_shape = last_output.get_shape(); + const auto & prev_name = last_output.get_node()->get_friendly_name(); + last_output = std::make_shared(last_output, + opset6::Constant::create(element::i64, Shape{dims_to_keep.size()}, dims_to_keep), + opset6::Constant::create(element::i64, Shape{}, {dim})); + NGRAPH_DEBUG << "Transform(" << prev_name << "): " << prev_shape << " to " << last_output.get_shape(); + + reduced_weights_count += shape_size(prev_shape) - shape_size(last_output.get_shape()); + } + // as we insert Gather operations after Constant we need to reconnect all + // Constant consumers to the latest Gather. + for (auto consumer : consumers) { + consumer.replace_source_output(last_output); + } + } + } + NGRAPH_DEBUG << "[ INFO ] TOTAL WEIGHTS: " << total_weights_count << std::endl; + NGRAPH_DEBUG << "[ INFO ] REDUCED WEIGHTS: " << reduced_weights_count << std::endl; + return true; +} \ No newline at end of file diff --git a/inference-engine/src/plugin_api/blob_factory.hpp b/inference-engine/src/plugin_api/blob_factory.hpp index 8ad0a94f85a75e..1f613fd7acb819 100644 --- a/inference-engine/src/plugin_api/blob_factory.hpp +++ b/inference-engine/src/plugin_api/blob_factory.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -110,10 +110,12 @@ InferenceEngine::Blob::Ptr make_blob_with_precision(InferenceEngine::Precision p USE_FACTORY(FP64); USE_FACTORY(FP16); USE_FACTORY(Q78); + USE_FACTORY(I4); USE_FACTORY(I8); USE_FACTORY(I16); USE_FACTORY(I32); USE_FACTORY(I64); + USE_FACTORY(U4); USE_FACTORY(U8); USE_FACTORY(U16); USE_FACTORY(U32); @@ -122,7 +124,7 @@ InferenceEngine::Blob::Ptr make_blob_with_precision(InferenceEngine::Precision p USE_FACTORY(BF16); USE_FACTORY(BOOL); default: - THROW_IE_EXCEPTION << "cannot locate blob for precision: " << precision; + IE_THROW() << "cannot locate blob for precision: " << precision; } #undef USE_FACTORY } @@ -136,7 +138,7 @@ InferenceEngine::Blob::Ptr make_blob_with_precision(InferenceEngine::Precision p */ template void CopyVectorToBlob(const InferenceEngine::Blob::Ptr outputBlob, const std::vector& inputVector) { - if (outputBlob->size() != inputVector.size()) THROW_IE_EXCEPTION << "Size mismatch between dims and vector"; - if (outputBlob->element_size() != sizeof(T)) THROW_IE_EXCEPTION << "Element size mismatch between blob and vector"; + if (outputBlob->size() != inputVector.size()) IE_THROW() << "Size mismatch between dims and vector"; + if (outputBlob->element_size() != sizeof(T)) IE_THROW() << "Element size mismatch between blob and vector"; ie_memcpy(outputBlob->buffer().as(), outputBlob->byteSize(), &inputVector[0], inputVector.size() * sizeof(T)); } diff --git a/inference-engine/src/plugin_api/blob_transform.hpp b/inference-engine/src/plugin_api/blob_transform.hpp index 00d6fe2a7ff367..b8369430eab0ec 100644 --- a/inference-engine/src/plugin_api/blob_transform.hpp +++ b/inference-engine/src/plugin_api/blob_transform.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/caseless.hpp b/inference-engine/src/plugin_api/caseless.hpp index 0c030053bb6598..d8ce739eaa9d82 100644 --- a/inference-engine/src/plugin_api/caseless.hpp +++ b/inference-engine/src/plugin_api/caseless.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/cpp_interfaces/base/ie_executable_network_base.hpp b/inference-engine/src/plugin_api/cpp_interfaces/base/ie_executable_network_base.hpp index d659c912b6c753..458f673a42ba33 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/base/ie_executable_network_base.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/base/ie_executable_network_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,6 +22,7 @@ namespace InferenceEngine { +IE_SUPPRESS_DEPRECATED_START_WIN /** * @brief Executable network `noexcept` wrapper which accepts IExecutableNetworkInternal derived instance which can throw exceptions * @ingroup ie_dev_api_exec_network_api @@ -37,7 +38,7 @@ class ExecutableNetworkBase : public IExecutableNetwork { */ explicit ExecutableNetworkBase(std::shared_ptr impl) { if (impl.get() == nullptr) { - THROW_IE_EXCEPTION << "implementation not defined"; + IE_THROW() << "implementation not defined"; } _impl = impl; } @@ -87,10 +88,6 @@ class ExecutableNetworkBase : public IExecutableNetwork { } IE_SUPPRESS_DEPRECATED_END - void Release() noexcept override { - delete this; - } - StatusCode SetConfig(const std::map& config, ResponseDesc* resp) noexcept override { TO_STATUS(_impl->SetConfig(config)); } @@ -106,10 +103,8 @@ class ExecutableNetworkBase : public IExecutableNetwork { StatusCode GetContext(RemoteContext::Ptr& pContext, ResponseDesc* resp) const noexcept override { TO_STATUS(pContext = _impl->GetContext()); } - -protected: - ~ExecutableNetworkBase() override = default; }; +IE_SUPPRESS_DEPRECATED_END_WIN /** * @brief Create an execuable network public C++ object wrapper based on internal inplementation @@ -122,9 +117,7 @@ template inline typename InferenceEngine::ExecutableNetwork make_executable_network(std::shared_ptr impl) { // to suppress warning about deprecated QueryState IE_SUPPRESS_DEPRECATED_START - typename ExecutableNetworkBase::Ptr net(new ExecutableNetworkBase(impl), [](IExecutableNetwork* p) { - p->Release(); - }); + typename ExecutableNetworkBase::Ptr net(new ExecutableNetworkBase(impl)); IE_SUPPRESS_DEPRECATED_END return InferenceEngine::ExecutableNetwork(net); } diff --git a/inference-engine/src/plugin_api/cpp_interfaces/base/ie_infer_async_request_base.hpp b/inference-engine/src/plugin_api/cpp_interfaces/base/ie_infer_async_request_base.hpp index 8078431fff718b..52e15a27eb9050 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/base/ie_infer_async_request_base.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/base/ie_infer_async_request_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -84,10 +84,6 @@ class InferRequestBase : public IInferRequest { TO_STATUS(_impl->SetUserData(data)); } - void Release() noexcept override { - delete this; - } - StatusCode SetBatch(int batch_size, ResponseDesc* resp) noexcept override { TO_STATUS(_impl->SetBatch(batch_size)); } @@ -108,9 +104,6 @@ class InferRequestBase : public IInferRequest { } } IE_SUPPRESS_DEPRECATED_END - -private: - ~InferRequestBase() = default; }; } // namespace InferenceEngine diff --git a/inference-engine/src/plugin_api/cpp_interfaces/base/ie_variable_state_base.hpp b/inference-engine/src/plugin_api/cpp_interfaces/base/ie_variable_state_base.hpp index 4222f560ccaef8..a992bb66a45ff6 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/base/ie_variable_state_base.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/base/ie_variable_state_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -28,7 +28,7 @@ class VariableStateBase : public IVariableState { */ explicit VariableStateBase(std::shared_ptr impl): impl(impl) { if (impl == nullptr) { - THROW_IE_EXCEPTION << "VariableStateBase implementation is not defined"; + IE_THROW() << "VariableStateBase implementation is not defined"; } } diff --git a/inference-engine/src/plugin_api/cpp_interfaces/exception2status.hpp b/inference-engine/src/plugin_api/cpp_interfaces/exception2status.hpp index 4ec96091e9a226..b43d9c1f54b97f 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/exception2status.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/exception2status.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,31 +12,25 @@ #include "description_buffer.hpp" -/** - * @def THROW_IE_EXCEPTION_WITH_STATUS - * @brief Throws an exception along with the status (which is eventually converted to the typed exception) - */ -#define THROW_IE_EXCEPTION_WITH_STATUS(__status) THROW_IE_EXCEPTION << \ - InferenceEngine::details::as_status << InferenceEngine::StatusCode::__status << __status##_str - namespace InferenceEngine { +INFERENCE_ENGINE_API_CPP(StatusCode) ExceptionToStatus(const Exception& exception); + /** * @def TO_STATUS(x) * @brief Converts C++ exceptioned function call into a c-style one * @ingroup ie_dev_api_error_debug */ -#define TO_STATUS(x) \ - try { \ - x; \ - return OK; \ - } catch (const InferenceEngine::details::InferenceEngineException& iex) { \ - return InferenceEngine::DescriptionBuffer((iex.hasStatus() ? iex.getStatus() : GENERAL_ERROR), resp) \ - << iex.what(); \ - } catch (const std::exception& ex) { \ - return InferenceEngine::DescriptionBuffer(GENERAL_ERROR, resp) << ex.what(); \ - } catch (...) { \ - return InferenceEngine::DescriptionBuffer(UNEXPECTED); \ +#define TO_STATUS(x) \ + try { \ + x; \ + return OK; \ + } catch (const ::InferenceEngine::Exception& iex) { \ + return InferenceEngine::DescriptionBuffer(InferenceEngine::ExceptionToStatus(iex), resp) << iex.what(); \ + } catch (const std::exception& ex) { \ + return InferenceEngine::DescriptionBuffer(GENERAL_ERROR, resp) << ex.what(); \ + } catch (...) { \ + return InferenceEngine::DescriptionBuffer(UNEXPECTED); \ } /** @@ -48,8 +42,8 @@ namespace InferenceEngine { try { \ x; \ return OK; \ - } catch (const InferenceEngine::details::InferenceEngineException& iex) { \ - return InferenceEngine::DescriptionBuffer(iex.hasStatus() ? iex.getStatus() : GENERAL_ERROR) << iex.what(); \ + } catch (const ::InferenceEngine::Exception& iex) { \ + return InferenceEngine::DescriptionBuffer(InferenceEngine::ExceptionToStatus(iex)) << iex.what(); \ } catch (const std::exception& ex) { \ return InferenceEngine::DescriptionBuffer(GENERAL_ERROR) << ex.what(); \ } catch (...) { \ @@ -61,94 +55,15 @@ namespace InferenceEngine { * @brief Returns a status code of a called function, handles exeptions and converts to a status code. * @ingroup ie_dev_api_error_debug */ -#define NO_EXCEPT_CALL_RETURN_STATUS(x) \ - try { \ - return x; \ - } catch (const InferenceEngine::details::InferenceEngineException& iex) { \ - return InferenceEngine::DescriptionBuffer(iex.hasStatus() ? iex.getStatus() : GENERAL_ERROR, resp) \ - << iex.what(); \ - } catch (const std::exception& ex) { \ - return InferenceEngine::DescriptionBuffer(GENERAL_ERROR, resp) << ex.what(); \ - } catch (...) { \ - return InferenceEngine::DescriptionBuffer(UNEXPECTED); \ +#define NO_EXCEPT_CALL_RETURN_STATUS(x) \ + try { \ + return x; \ + } catch (const ::InferenceEngine::Exception& iex) { \ + return InferenceEngine::DescriptionBuffer(InferenceEngine::ExceptionToStatus(iex), resp) << iex.what(); \ + } catch (const std::exception& ex) { \ + return InferenceEngine::DescriptionBuffer(GENERAL_ERROR, resp) << ex.what(); \ + } catch (...) { \ + return InferenceEngine::DescriptionBuffer(UNEXPECTED); \ } -/** - * @addtogroup ie_dev_api_error_debug - * @{ - * @def PARAMETER_MISMATCH_str - * @brief Defines the `parameter mismatch` message - */ -#define PARAMETER_MISMATCH_str std::string("[PARAMETER_MISMATCH] ") - -/** - * @def NETWORK_NOT_LOADED_str - * @brief Defines the `network not loaded` message - */ -#define NETWORK_NOT_LOADED_str std::string("[NETWORK_NOT_LOADED] ") - -/** - * @def NETWORK_NOT_READ_str - * @brief Defines the `network not read` message - */ -#define NETWORK_NOT_READ_str std::string("[NETWORK_NOT_READ] ") - -/** - * @def NOT_FOUND_str - * @brief Defines the `not found` message - */ -#define NOT_FOUND_str std::string("[NOT_FOUND] ") - -/** - * @def UNEXPECTED_str - * @brief Defines the `unexpected` message - */ -#define UNEXPECTED_str std::string("[UNEXPECTED] ") - -/** - * @def GENERAL_ERROR_str - * @brief Defines the `general error` message - */ -#define GENERAL_ERROR_str std::string("[GENERAL ERROR] ") - -/** - * @def RESULT_NOT_READY_str - * @brief Defines the `result not ready` message - */ -#define RESULT_NOT_READY_str std::string("[RESULT_NOT_READY] ") - -/** - * @def INFER_NOT_STARTED_str - * @brief Defines the `infer not started` message - */ -#define INFER_NOT_STARTED_str std::string("[INFER_NOT_STARTED] ") - -/** - * @def REQUEST_BUSY_str - * @brief Defines the `request busy` message - */ -#define REQUEST_BUSY_str std::string("[REQUEST_BUSY] ") - -/** - * @def NOT_IMPLEMENTED_str - * @brief Defines the `not implemented` message - */ -#define NOT_IMPLEMENTED_str std::string("[NOT_IMPLEMENTED] ") - -/** - * @def NOT_ALLOCATED_str - * @brief Defines the `not allocated` message - */ -#define NOT_ALLOCATED_str std::string("[NOT_ALLOCATED] ") - -/** - * @def INFER_CANCELLED_str - * @brief Defines the `infer cancelled` message - */ -#define INFER_CANCELLED_str std::string("[INFER_CANCELLED] ") - -/** - * @} - */ - } // namespace InferenceEngine diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_internal.hpp index 3bc031bc64e483..107f088e86f1ed 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -80,7 +80,7 @@ class ExecutableNetworkInternal : public IExecutableNetworkInternal { } CNNNetwork GetExecGraphInfo() override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } /** @@ -93,29 +93,29 @@ class ExecutableNetworkInternal : public IExecutableNetworkInternal { } std::vector QueryState() override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } void SetConfig(const std::map& config) override { if (config.empty()) { - THROW_IE_EXCEPTION << "The list of configuration values is empty"; + IE_THROW() << "The list of configuration values is empty"; } - THROW_IE_EXCEPTION << "The following config value cannot be changed dynamically for ExecutableNetwork: " + IE_THROW() << "The following config value cannot be changed dynamically for ExecutableNetwork: " << config.begin()->first; } Parameter GetConfig(const std::string& name) const override { (void)name; - THROW_IE_EXCEPTION << "GetConfig for executable network is not supported by this device"; + IE_THROW() << "GetConfig for executable network is not supported by this device"; } Parameter GetMetric(const std::string& name) const override { (void)name; - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } RemoteContext::Ptr GetContext() const override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } protected: @@ -127,7 +127,7 @@ class ExecutableNetworkInternal : public IExecutableNetworkInternal { */ virtual void ExportImpl(std::ostream& networkModel) { (void)networkModel; - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } InferenceEngine::InputsDataMap _networkInputs; //!< Holds infromation about network inputs info diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_async_only.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_async_only.hpp index 3cfd1ddad5a7cc..bf7d8163aa5d67 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_async_only.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_async_only.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,9 +39,7 @@ class ExecutableNetworkThreadSafeAsyncOnly : public ExecutableNetworkInternal, auto asyncRequestImpl = this->CreateAsyncInferRequestImpl(_networkInputs, _networkOutputs); asyncRequestImpl->setPointerToExecutableNetworkInternal(shared_from_this()); - asyncRequest.reset(new InferRequestBase(asyncRequestImpl), [](IInferRequest* p) { - p->Release(); - }); + asyncRequest.reset(new InferRequestBase(asyncRequestImpl)); asyncRequestImpl->SetPointerToPublicInterface(asyncRequest); return asyncRequest; } diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_default.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_default.hpp index 6b41edf84db01e..8a668c9f1a8b07 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_default.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_executable_network_thread_safe_default.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -62,15 +62,12 @@ class ExecutableNetworkThreadSafeDefault : public ExecutableNetworkInternal, */ template IInferRequest::Ptr CreateAsyncInferRequestFromSync() { - IInferRequest::Ptr asyncRequest; - auto syncRequestImpl = this->CreateInferRequestImpl(_networkInputs, _networkOutputs); syncRequestImpl->setPointerToExecutableNetworkInternal(shared_from_this()); auto asyncThreadSafeImpl = std::make_shared( syncRequestImpl, _taskExecutor, _callbackExecutor); - asyncRequest.reset(new InferRequestBase(asyncThreadSafeImpl), - [](IInferRequest *p) { p->Release(); }); + IInferRequest::Ptr asyncRequest = std::make_shared(asyncThreadSafeImpl); asyncThreadSafeImpl->SetPointerToPublicInterface(asyncRequest); return asyncRequest; diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_internal.hpp index ab5e264fb2ae04..1fb8009db66803 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -41,7 +41,7 @@ class AsyncInferRequestInternal : public IAsyncInferRequestInternal, public Infe } void GetUserData(void** data) override { - if (data == nullptr) THROW_IE_EXCEPTION << NOT_ALLOCATED_str; + if (data == nullptr) IE_THROW(NotAllocated); *data = _userData; } diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_thread_safe_default.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_thread_safe_default.hpp index 54ebbaef124cd2..ea931a518d587d 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_thread_safe_default.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_async_request_thread_safe_default.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -77,9 +77,9 @@ class AsyncInferRequestThreadSafeDefault : public IAsyncInferRequestInternal { state = _state; switch (_state) { case InferState::Busy : - THROW_IE_EXCEPTION_WITH_STATUS(REQUEST_BUSY); + IE_THROW(RequestBusy); case InferState::Canceled : - THROW_IE_EXCEPTION_WITH_STATUS(INFER_CANCELLED); + IE_THROW(InferCancelled); case InferState::Idle : { _futures.erase(std::remove_if(std::begin(_futures), std::end(_futures), [](const std::shared_future& future) { @@ -118,9 +118,9 @@ class AsyncInferRequestThreadSafeDefault : public IAsyncInferRequestInternal { std::lock_guard lock {_mutex}; switch (_state) { case InferState::Busy : - THROW_IE_EXCEPTION_WITH_STATUS(REQUEST_BUSY); + IE_THROW(RequestBusy); case InferState::Canceled : - THROW_IE_EXCEPTION_WITH_STATUS(INFER_CANCELLED); + IE_THROW(InferCancelled); default: break; } } @@ -169,7 +169,7 @@ class AsyncInferRequestThreadSafeDefault : public IAsyncInferRequestInternal { */ StatusCode Wait(int64_t millis_timeout) override { if (millis_timeout < IInferRequest::WaitMode::RESULT_READY) { - THROW_IE_EXCEPTION_WITH_STATUS(PARAMETER_MISMATCH) + IE_THROW(ParameterMismatch) << " Timeout can't be less " << IInferRequest::WaitMode::RESULT_READY << " for InferRequest::Wait\n"; } @@ -247,7 +247,7 @@ class AsyncInferRequestThreadSafeDefault : public IAsyncInferRequestInternal { void GetUserData(void** data) override { CheckState(); - if (data == nullptr) THROW_IE_EXCEPTION << NOT_ALLOCATED_str; + if (data == nullptr) IE_THROW(NotAllocated); *data = _userData; } @@ -277,7 +277,7 @@ class AsyncInferRequestThreadSafeDefault : public IAsyncInferRequestInternal { void ThrowIfCanceled() const { std::lock_guard lock{_mutex}; if (_state == InferState::Canceled) { - THROW_IE_EXCEPTION_WITH_STATUS(INFER_CANCELLED); + IE_THROW(InferCancelled); } } @@ -400,9 +400,9 @@ class AsyncInferRequestThreadSafeDefault : public IAsyncInferRequestInternal { IE_ASSERT(nullptr != nextStageExecutor); nextStageExecutor->run(MakeNextStageTask(itNextStage, itEndStage, std::move(callbackExecutor))); } - } catch (InferenceEngine::details::InferenceEngineException& ie_ex) { - requestStatus = ie_ex.hasStatus() ? ie_ex.getStatus() : StatusCode::GENERAL_ERROR; - localCurrentException = std::make_exception_ptr(ie_ex); + } catch (InferenceEngine::Exception& ie_ex) { + requestStatus = ExceptionToStatus(ie_ex); + localCurrentException = std::current_exception(); } catch (...) { requestStatus = StatusCode::GENERAL_ERROR; localCurrentException = std::current_exception(); diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_request_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_request_internal.hpp index 30de7e98e228c8..5ca846b10e34ec 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_request_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_infer_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,7 +67,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { * @brief Default common implementation for all plugins */ void Cancel() override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } /** @@ -79,15 +79,15 @@ class InferRequestInternal : virtual public IInferRequestInternal { void SetBlob(const std::string& name, const Blob::Ptr& userBlob) override { OV_ITT_SCOPED_TASK(itt::domains::Plugin, "SetBlob"); if (name.empty()) { - THROW_IE_EXCEPTION << NOT_FOUND_str + "Failed to set blob with empty name"; + IE_THROW(NotFound) << "Failed to set blob with empty name"; } - if (!userBlob) THROW_IE_EXCEPTION << NOT_ALLOCATED_str << "Failed to set empty blob with name: \'" << name << "\'"; + if (!userBlob) IE_THROW(NotAllocated) << "Failed to set empty blob with name: \'" << name << "\'"; const bool compoundBlobPassed = userBlob->is(); const bool remoteBlobPassed = userBlob->is(); if (!compoundBlobPassed && !remoteBlobPassed && userBlob->buffer() == nullptr) - THROW_IE_EXCEPTION << "Input data was not allocated. Input name: \'" << name << "\'"; + IE_THROW(NotAllocated) << "Input data was not allocated. Input name: \'" << name << "\'"; if (userBlob->size() == 0) { - THROW_IE_EXCEPTION << "Input data is empty. Input name: \'" << name << "\'"; + IE_THROW() << "Input data is empty. Input name: \'" << name << "\'"; } InputInfo::Ptr foundInput; @@ -95,14 +95,14 @@ class InferRequestInternal : virtual public IInferRequestInternal { size_t dataSize = userBlob->size(); if (findInputAndOutputBlobByName(name, foundInput, foundOutput)) { if (foundInput->getPrecision() != userBlob->getTensorDesc().getPrecision()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str + IE_THROW(ParameterMismatch) << "Failed to set Blob with precision not corresponding to user input precision"; } auto& devBlob = _deviceInputs[name]; const bool preProcRequired = preProcessingRequired(foundInput, userBlob, devBlob); if (compoundBlobPassed && !preProcRequired) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str + IE_THROW(NotImplemented) << "cannot set compound blob: supported only for input pre-processing"; } @@ -113,7 +113,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { ? InferenceEngine::details::product(foundInput->getTensorDesc().getDims()) : 1; if (dataSize != inputSize) { - THROW_IE_EXCEPTION << "Input blob size is not equal network input size (" << dataSize + IE_THROW() << "Input blob size is not equal network input size (" << dataSize << "!=" << inputSize << ")."; } _inputs[name] = userBlob; @@ -121,18 +121,18 @@ class InferRequestInternal : virtual public IInferRequestInternal { } } else { if (compoundBlobPassed) { - THROW_IE_EXCEPTION << NOT_IMPLEMENTED_str + IE_THROW(NotImplemented) << "cannot set compound blob: supported only for input pre-processing"; } size_t outputSize = foundOutput->getTensorDesc().getLayout() != InferenceEngine::Layout::SCALAR ? details::product(foundOutput->getTensorDesc().getDims()) : 1; if (dataSize != outputSize) { - THROW_IE_EXCEPTION << "Output blob size is not equal network output size (" << dataSize + IE_THROW() << "Output blob size is not equal network output size (" << dataSize << "!=" << outputSize << ")."; } if (foundOutput->getPrecision() != userBlob->getTensorDesc().getPrecision()) { - THROW_IE_EXCEPTION << PARAMETER_MISMATCH_str + IE_THROW(ParameterMismatch) << "Failed to set Blob with precision not corresponding to user output precision"; } _outputs[name] = userBlob; @@ -192,7 +192,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { if (findInputAndOutputBlobByName(name, foundInput, foundOutput)) { copyPreProcess(info, foundInput->getPreProcess()); } else { - THROW_IE_EXCEPTION << "Pre-process can't be set to output blob"; + IE_THROW() << "Pre-process can't be set to output blob"; } SetBlob(name, data); @@ -209,13 +209,13 @@ class InferRequestInternal : virtual public IInferRequestInternal { if (findInputAndOutputBlobByName(name, foundInput, foundOutput)) { return foundInput->getPreProcess(); } else { - THROW_IE_EXCEPTION << "Output blob can't have pre-processing"; + IE_THROW() << "Output blob can't have pre-processing"; } } void SetBatch(int batch) override { (void)batch; - THROW_IE_EXCEPTION << "Dynamic batch is not supported"; + IE_THROW() << "Dynamic batch is not supported"; }; /** @@ -241,7 +241,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { std::vector QueryState() override { // meaning base plugin reports as no state available - plugin owners need to create proper override of this - THROW_IE_EXCEPTION << "Plugin doesn't override QueryState"; + IE_THROW() << "Plugin doesn't override QueryState"; return {}; } @@ -289,7 +289,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { foundInput = nullptr; foundOutput = nullptr; if (_networkOutputs.empty()) { - THROW_IE_EXCEPTION << "Internal error: network outputs is not set"; + IE_THROW() << "Internal error: network outputs is not set"; } auto foundInputPair = std::find_if(std::begin(_networkInputs), std::end(_networkInputs), [&](const std::pair& pair) { @@ -300,7 +300,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { return pair.first == name; }); if (foundOutputPair == std::end(_networkOutputs) && (foundInputPair == std::end(_networkInputs))) { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Failed to find input or output with name: \'" << name << "\'"; + IE_THROW(NotFound) << "Failed to find input or output with name: \'" << name << "\'"; } if (foundInputPair != std::end(_networkInputs)) { foundInput = foundInputPair->second; @@ -326,7 +326,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { std::string strNotMatched("The " + sType + " blob size is not equal to the network " + sType + " size"); if (!blob) { - THROW_IE_EXCEPTION << strNotAllocated; + IE_THROW() << strNotAllocated; } size_t refSize; if (refDims.empty()) { @@ -337,7 +337,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { return pair.first == name; }); if (foundInputPair == std::end(_networkInputs)) { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Failed to find input with name: \'" << name << "\'"; + IE_THROW(NotFound) << "Failed to find input with name: \'" << name << "\'"; } dims = foundInputPair->second->getTensorDesc().getDims(); refSize = foundInputPair->second->getTensorDesc().getLayout() != SCALAR @@ -349,7 +349,7 @@ class InferRequestInternal : virtual public IInferRequestInternal { return pair.first == name; }); if (foundOutputPair == std::end(_networkOutputs)) { - THROW_IE_EXCEPTION << NOT_FOUND_str << "Failed to find output with name: \'" << name << "\'"; + IE_THROW(NotFound) << "Failed to find output with name: \'" << name << "\'"; } dims = foundOutputPair->second->getTensorDesc().getDims(); refSize = foundOutputPair->second->getTensorDesc().getLayout() != SCALAR @@ -361,10 +361,10 @@ class InferRequestInternal : virtual public IInferRequestInternal { } if (refSize != blob->size()) { - THROW_IE_EXCEPTION << strNotMatched + ": got " << blob->size() << " expecting " << refSize; + IE_THROW() << strNotMatched + ": got " << blob->size() << " expecting " << refSize; } const bool remoteBlobPassed = blob->is(); - if (!remoteBlobPassed && blob->buffer() == nullptr) THROW_IE_EXCEPTION << strNotAllocated; + if (!remoteBlobPassed && blob->buffer() == nullptr) IE_THROW() << strNotAllocated; } /** diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_plugin_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_plugin_internal.hpp index 6862bf78622011..e573fcd5dc6f50 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_plugin_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_plugin_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -47,12 +47,6 @@ static inline void parsePluginName(std::istream& networkModel) { * @ingroup ie_dev_api_plugin_api */ class InferencePluginInternal : public IInferencePlugin { -protected: - /** - * @brief Destroys the object. - */ - ~InferencePluginInternal() override = default; - public: ExecutableNetwork LoadNetwork(const CNNNetwork& network, const std::map& config) override { @@ -84,7 +78,7 @@ class InferencePluginInternal : public IInferencePlugin { const std::map& config) override { (void)modelFileName; (void)config; - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } ExecutableNetwork ImportNetwork(std::istream& networkModel, @@ -102,7 +96,7 @@ class InferencePluginInternal : public IInferencePlugin { void SetConfig(const std::map& config) override { (void)config; - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } void SetCore(ICore* core) noexcept override { @@ -115,11 +109,11 @@ class InferencePluginInternal : public IInferencePlugin { } void AddExtension(InferenceEngine::IExtensionPtr /*extension*/) override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } QueryNetworkResult QueryNetwork(const CNNNetwork& /*network*/, const std::map& /*config*/) const override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } void SetName(const std::string& pluginName) noexcept override { @@ -132,20 +126,20 @@ class InferencePluginInternal : public IInferencePlugin { Parameter GetConfig(const std::string& /*name*/, const std::map& /*options*/) const override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } Parameter GetMetric(const std::string& /*name*/, const std::map& /*options*/) const override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } RemoteContext::Ptr CreateContext(const ParamMap& /*params*/) override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } RemoteContext::Ptr GetDefaultContext(const ParamMap& /*params*/) override { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } protected: @@ -178,7 +172,7 @@ class InferencePluginInternal : public IInferencePlugin { (void)network; (void)context; (void)config; - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } /** @@ -194,7 +188,7 @@ class InferencePluginInternal : public IInferencePlugin { const std::map& config) { (void)networkModel; (void)config; - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } /** @@ -211,7 +205,7 @@ class InferencePluginInternal : public IInferencePlugin { (void)networkModel; (void)context; (void)config; - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } std::string _pluginName; //!< A device name that plugins enables diff --git a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_variable_state_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_variable_state_internal.hpp index 11370bf8a7c93c..b993e5db61cab8 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_variable_state_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/impl/ie_variable_state_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iexecutable_network_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iexecutable_network_internal.hpp index 8583302375502e..5992fda1e97f10 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iexecutable_network_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iexecutable_network_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_async_request_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_async_request_internal.hpp index 75cb9a1e484d10..06d15191648626 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_async_request_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_async_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,11 +26,6 @@ class IAsyncInferRequestInternal : virtual public IInferRequestInternal { */ typedef std::shared_ptr Ptr; - /** - * @brief A virtual destructor - */ - virtual ~IAsyncInferRequestInternal() = default; - /** * @brief Start inference of specified input(s) in asynchronous mode * @note The method returns immediately. Inference starts also immediately. diff --git a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_request_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_request_internal.hpp index 3d01500b9dc450..8409e82a218025 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_request_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iinfer_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_internal_plugin_config.hpp b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_internal_plugin_config.hpp index 31251aae5ecd5c..10c968b55f22cc 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_internal_plugin_config.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_internal_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,11 +39,11 @@ DECLARE_CONFIG_KEY(LP_TRANSFORMS_MODE); DECLARE_CONFIG_KEY(CPU_THREADS_PER_STREAM); /** - * @brief This key should be used to notify aggregating plugin - * that it is used inside other aggregating plugin + * @brief This key should be used to force disable export while loading network even if global cache dir is defined + * Used by HETERO plugin to disable automatic caching of subnetworks (set value to YES) * @ingroup ie_dev_api_plugin_api */ -DECLARE_CONFIG_KEY(AGGREGATED_PLUGIN); +DECLARE_CONFIG_KEY(FORCE_DISABLE_CACHE); } // namespace PluginConfigInternalParams diff --git a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iplugin_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iplugin_internal.hpp index dbce52204f0e45..8d251b50f44193 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iplugin_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_iplugin_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -83,8 +83,7 @@ inline void copyInputOutputInfo(const InputsDataMap & networkInputs, const Outpu * @brief An API of plugin to be implemented by a plugin * @ingroup ie_dev_api_plugin_api */ -class IInferencePlugin : public details::IRelease, - public std::enable_shared_from_this { +class IInferencePlugin : public std::enable_shared_from_this { class VersionStore : public Version { std::string _dsc; std::string _buildNumber; @@ -112,12 +111,6 @@ class IInferencePlugin : public details::IRelease, } } _version; -protected: - /** - * @brief Destroys the object. - */ - ~IInferencePlugin() override = default; - public: /** * @brief A shared pointer to IInferencePlugin interface @@ -140,10 +133,6 @@ class IInferencePlugin : public details::IRelease, return _version; } - void Release() noexcept override { - delete this; - } - /** * @brief Provides a name of a plugin * @return The name. @@ -271,6 +260,9 @@ class IInferencePlugin : public details::IRelease, * @return The result of query operator containing supported layers map */ virtual QueryNetworkResult QueryNetwork(const CNNNetwork& network, const std::map& config) const = 0; + +protected: + ~IInferencePlugin() = default; }; } // namespace InferenceEngine @@ -280,16 +272,16 @@ class IInferencePlugin : public details::IRelease, * @brief Defines the exported `CreatePluginEngine` function which is used to create a plugin instance * @ingroup ie_dev_api_plugin_api */ -#define IE_DEFINE_PLUGIN_CREATE_FUNCTION(PluginType, version, ...) \ - INFERENCE_PLUGIN_API(InferenceEngine::StatusCode) CreatePluginEngine( \ - InferenceEngine::IInferencePlugin *&plugin, \ - InferenceEngine::ResponseDesc *resp) noexcept { \ - try { \ - plugin = new PluginType(__VA_ARGS__); \ - plugin->SetVersion(version); \ - return InferenceEngine::OK; \ - } \ - catch (std::exception &ex) { \ - return InferenceEngine::DescriptionBuffer(InferenceEngine::GENERAL_ERROR, resp) << ex.what(); \ - } \ +#define IE_DEFINE_PLUGIN_CREATE_FUNCTION(PluginType, version, ...) \ + INFERENCE_PLUGIN_API(void) CreatePluginEngine(::std::shared_ptr<::InferenceEngine::IInferencePlugin>& plugin) { \ + try { \ + plugin = ::std::make_shared(__VA_ARGS__); \ + } catch (const InferenceEngine::Exception&) { \ + throw; \ + } catch (const std::exception& ex) { \ + IE_THROW() << ex.what(); \ + } catch (...) { \ + IE_THROW(Unexpected); \ + } \ + plugin->SetVersion(version); \ } diff --git a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_ivariable_state_internal.hpp b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_ivariable_state_internal.hpp index a5662b99243de2..4f31b57958275f 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_ivariable_state_internal.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/interface/ie_ivariable_state_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/cpp_interfaces/plugin_itt.hpp b/inference-engine/src/plugin_api/cpp_interfaces/plugin_itt.hpp index 709a8e947e462f..db54f244a7e894 100644 --- a/inference-engine/src/plugin_api/cpp_interfaces/plugin_itt.hpp +++ b/inference-engine/src/plugin_api/cpp_interfaces/plugin_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/plugin_api/debug.h b/inference-engine/src/plugin_api/debug.h index ab7510ce19cc70..1848e5f390590f 100644 --- a/inference-engine/src/plugin_api/debug.h +++ b/inference-engine/src/plugin_api/debug.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,9 +25,6 @@ #include "ie_algorithm.hpp" -namespace InferenceEngine { -namespace details { - /** * @brief Serializes a `std::vector` to a `std::ostream` * @ingroup ie_dev_api_error_debug @@ -35,6 +32,7 @@ namespace details { * @param vec A vector to serialize * @return A reference to a `std::stream` */ +namespace std { template inline std::ostream& operator<<(std::ostream& out, const std::vector& vec) { if (vec.empty()) return std::operator<<(out, "[]"); @@ -44,7 +42,10 @@ inline std::ostream& operator<<(std::ostream& out, const std::vector& vec) { } return out << "]"; } +} // namespace std +namespace InferenceEngine { +namespace details { /** * @brief trim from start (in place) * @ingroup ie_dev_api_error_debug diff --git a/inference-engine/src/plugin_api/description_buffer.hpp b/inference-engine/src/plugin_api/description_buffer.hpp index d8615c59f47458..ff430842d59ec5 100644 --- a/inference-engine/src/plugin_api/description_buffer.hpp +++ b/inference-engine/src/plugin_api/description_buffer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/exec_graph_info.hpp b/inference-engine/src/plugin_api/exec_graph_info.hpp index d05254dbdd3e67..8f19b2499186ca 100644 --- a/inference-engine/src/plugin_api/exec_graph_info.hpp +++ b/inference-engine/src/plugin_api/exec_graph_info.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/file_utils.h b/inference-engine/src/plugin_api/file_utils.h index cb3dd6a1756434..74883f116351a6 100644 --- a/inference-engine/src/plugin_api/file_utils.h +++ b/inference-engine/src/plugin_api/file_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -81,6 +81,31 @@ template<> struct FileTraits { }; #endif +/** + * @brief Interface function to get absolute path of file + * @ingroup ie_dev_api_file_utils + * @param filePath - path to file, can be relative to current working directory + * @return Absolute path of file + * @throw InferenceEngine::Exception if any error occurred + */ +INFERENCE_ENGINE_API_CPP(std::string) absoluteFilePath(const std::string& filePath); + +/** + * @brief Interface function to create directorty recursively by given path + * @ingroup ie_dev_api_file_utils + * @param dirPath - path to file, can be relative to current working directory + * @throw InferenceEngine::Exception if any error occurred + */ +INFERENCE_ENGINE_API_CPP(void) createDirectoryRecursive(const std::string& dirPath); + +/** + * @brief Interface function to check if directory exists for given path + * @ingroup ie_dev_api_file_utils + * @param path - path to directory + * @return true if directory exists, false otherwise + */ +INFERENCE_ENGINE_API_CPP(bool) directoryExists(const std::string& path); + /** * @brief Interface function to get the size of a file. The function supports UNICODE path * @ingroup ie_dev_api_file_utils diff --git a/inference-engine/src/plugin_api/ie_algorithm.hpp b/inference-engine/src/plugin_api/ie_algorithm.hpp index 16a577b2d7a329..70b3ba796f773b 100644 --- a/inference-engine/src/plugin_api/ie_algorithm.hpp +++ b/inference-engine/src/plugin_api/ie_algorithm.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/ie_icore.hpp b/inference-engine/src/plugin_api/ie_icore.hpp index 42210ef59fe5cd..7534c8c765ebfb 100644 --- a/inference-engine/src/plugin_api/ie_icore.hpp +++ b/inference-engine/src/plugin_api/ie_icore.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -68,8 +68,8 @@ class ICore { /** * @brief Creates an executable network from a previously exported network - * @param deviceName Name of device load executable network on * @param networkModel network model stream + * @param deviceName Name of device load executable network on * @param config Optional map of pairs: (config parameter name, config parameter value) relevant only for this load * operation* * @return An executable network reference diff --git a/inference-engine/src/plugin_api/ie_memcpy.h b/inference-engine/src/plugin_api/ie_memcpy.h index 4b0885180968f9..26d0799439991e 100644 --- a/inference-engine/src/plugin_api/ie_memcpy.h +++ b/inference-engine/src/plugin_api/ie_memcpy.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/ie_metric_helpers.hpp b/inference-engine/src/plugin_api/ie_metric_helpers.hpp index 57030a856f8db0..dc23b832a9fe9e 100644 --- a/inference-engine/src/plugin_api/ie_metric_helpers.hpp +++ b/inference-engine/src/plugin_api/ie_metric_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/ie_ngraph_utils.hpp b/inference-engine/src/plugin_api/ie_ngraph_utils.hpp index aa3e40b08db779..40904bb07215ca 100644 --- a/inference-engine/src/plugin_api/ie_ngraph_utils.hpp +++ b/inference-engine/src/plugin_api/ie_ngraph_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,8 +26,12 @@ inline ::ngraph::element::Type convertPrecision(const Precision& precision) { return ::ngraph::element::Type(::ngraph::element::Type_t::f16); case Precision::BF16: return ::ngraph::element::Type(::ngraph::element::Type_t::bf16); + case Precision::U4: + return ::ngraph::element::Type(::ngraph::element::Type_t::u4); case Precision::U8: return ::ngraph::element::Type(::ngraph::element::Type_t::u8); + case Precision::I4: + return ::ngraph::element::Type(::ngraph::element::Type_t::i4); case Precision::I8: return ::ngraph::element::Type(::ngraph::element::Type_t::i8); case Precision::U16: @@ -50,7 +54,7 @@ inline ::ngraph::element::Type convertPrecision(const Precision& precision) { case Precision::MIXED: case Precision::CUSTOM: default: - THROW_IE_EXCEPTION << "Incorrect precision!"; + IE_THROW() << "Incorrect precision!"; } } @@ -63,6 +67,8 @@ inline ::ngraph::element::Type convertPrecision(const std::string& precision) { return ::ngraph::element::Type(::ngraph::element::Type_t::bf16); } else if (precision == "f64" || precision == "FP64") { return ::ngraph::element::Type(::ngraph::element::Type_t::f64); + } else if (precision == "i4" || precision == "I4") { + return ::ngraph::element::Type(::ngraph::element::Type_t::i4); } else if (precision == "i8" || precision == "I8") { return ::ngraph::element::Type(::ngraph::element::Type_t::i8); } else if (precision == "i16" || precision == "I16") { @@ -73,6 +79,8 @@ inline ::ngraph::element::Type convertPrecision(const std::string& precision) { return ::ngraph::element::Type(::ngraph::element::Type_t::i64); } else if (precision == "u1" || precision == "U1" || precision == "BIN" || precision == "bin") { return ::ngraph::element::Type(::ngraph::element::Type_t::u1); + } else if (precision == "u4" || precision == "U4") { + return ::ngraph::element::Type(::ngraph::element::Type_t::u4); } else if (precision == "u8" || precision == "U8") { return ::ngraph::element::Type(::ngraph::element::Type_t::u8); } else if (precision == "u16" || precision == "U16") { @@ -86,7 +94,7 @@ inline ::ngraph::element::Type convertPrecision(const std::string& precision) { } else if (precision == "undefined") { return ::ngraph::element::Type(::ngraph::element::Type_t::undefined); } else { - THROW_IE_EXCEPTION << "Incorrect precision: " << precision; + IE_THROW() << "Incorrect precision: " << precision; } } @@ -102,6 +110,8 @@ inline Precision convertPrecision(const ::ngraph::element::Type& precision) { return Precision(Precision::FP64); case ::ngraph::element::Type_t::bf16: return Precision(Precision::BF16); + case ::ngraph::element::Type_t::i4: + return Precision(Precision::I4); case ::ngraph::element::Type_t::i8: return Precision(Precision::I8); case ::ngraph::element::Type_t::i16: @@ -110,6 +120,8 @@ inline Precision convertPrecision(const ::ngraph::element::Type& precision) { return Precision(Precision::I32); case ::ngraph::element::Type_t::i64: return Precision(Precision::I64); + case ::ngraph::element::Type_t::u4: + return Precision(Precision::U4); case ::ngraph::element::Type_t::u8: return Precision(Precision::U8); case ::ngraph::element::Type_t::u16: @@ -123,7 +135,7 @@ inline Precision convertPrecision(const ::ngraph::element::Type& precision) { case ::ngraph::element::Type_t::boolean: return Precision(Precision::BOOL); default: - THROW_IE_EXCEPTION << "Incorrect precision " << precision.get_type_name() << "!"; + IE_THROW() << "Incorrect precision " << precision.get_type_name() << "!"; return{}; } } diff --git a/inference-engine/src/plugin_api/ie_system_conf.h b/inference-engine/src/plugin_api/ie_system_conf.h index c0e4cbb8b0c9ef..981b4dda96187c 100644 --- a/inference-engine/src/plugin_api/ie_system_conf.h +++ b/inference-engine/src/plugin_api/ie_system_conf.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/precision_utils.h b/inference-engine/src/plugin_api/precision_utils.h index 68ffed3cd6c505..96b7ca252dc558 100644 --- a/inference-engine/src/plugin_api/precision_utils.h +++ b/inference-engine/src/plugin_api/precision_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/threading/ie_cpu_streams_executor.hpp b/inference-engine/src/plugin_api/threading/ie_cpu_streams_executor.hpp index b9b57fffcc92de..573dcb5fba1f1a 100644 --- a/inference-engine/src/plugin_api/threading/ie_cpu_streams_executor.hpp +++ b/inference-engine/src/plugin_api/threading/ie_cpu_streams_executor.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/threading/ie_executor_manager.hpp b/inference-engine/src/plugin_api/threading/ie_executor_manager.hpp index 2ae0bfa1db58d1..e1cd819baaa895 100644 --- a/inference-engine/src/plugin_api/threading/ie_executor_manager.hpp +++ b/inference-engine/src/plugin_api/threading/ie_executor_manager.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/threading/ie_immediate_executor.hpp b/inference-engine/src/plugin_api/threading/ie_immediate_executor.hpp index d1b796569635c7..d13a11889fbe76 100644 --- a/inference-engine/src/plugin_api/threading/ie_immediate_executor.hpp +++ b/inference-engine/src/plugin_api/threading/ie_immediate_executor.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/threading/ie_istreams_executor.hpp b/inference-engine/src/plugin_api/threading/ie_istreams_executor.hpp index b368c7726cfd60..34bdeeef65b1dc 100644 --- a/inference-engine/src/plugin_api/threading/ie_istreams_executor.hpp +++ b/inference-engine/src/plugin_api/threading/ie_istreams_executor.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/threading/ie_itask_executor.hpp b/inference-engine/src/plugin_api/threading/ie_itask_executor.hpp index b0c096e0458b5a..a729f7218783a5 100644 --- a/inference-engine/src/plugin_api/threading/ie_itask_executor.hpp +++ b/inference-engine/src/plugin_api/threading/ie_itask_executor.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/threading/ie_thread_affinity.hpp b/inference-engine/src/plugin_api/threading/ie_thread_affinity.hpp index 0507dd24526d3b..3375de6a5994a7 100644 --- a/inference-engine/src/plugin_api/threading/ie_thread_affinity.hpp +++ b/inference-engine/src/plugin_api/threading/ie_thread_affinity.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/threading/ie_thread_local.hpp b/inference-engine/src/plugin_api/threading/ie_thread_local.hpp index 3c634d0cf575a4..952fdb27871906 100644 --- a/inference-engine/src/plugin_api/threading/ie_thread_local.hpp +++ b/inference-engine/src/plugin_api/threading/ie_thread_local.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/plugin_api/xml_parse_utils.h b/inference-engine/src/plugin_api/xml_parse_utils.h index e582bd74b6fffc..a4b9338db0f5c3 100644 --- a/inference-engine/src/plugin_api/xml_parse_utils.h +++ b/inference-engine/src/plugin_api/xml_parse_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/CMakeLists.txt b/inference-engine/src/preprocessing/CMakeLists.txt index 973fafcbf54965..bbda780ab9bc46 100644 --- a/inference-engine/src/preprocessing/CMakeLists.txt +++ b/inference-engine/src/preprocessing/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.cpp b/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.cpp index 86dc6b22feaa88..8992c24fd10d66 100644 --- a/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.cpp +++ b/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.cpp @@ -1,9 +1,10 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "ie_preprocess_gapi_kernels.hpp" #include "ie_preprocess_gapi_kernels_impl.hpp" +#include "ie_preprocess_gapi_kernels_neon.hpp" #include @@ -126,6 +127,601 @@ void copyRow_32F(const float in[], float out[], int length) { copyRow_32F_impl(in, out, length); } +template +CV_ALWAYS_INLINE void channels2planes_store(std::array, chanNum>& dst, + const uchar* src, const int width, + const int line) { + constexpr int nlanes = static_cast(v_uint8::nlanes); + GAPI_Assert(width >= nlanes); + + v_uint8 chan; + int x = 0; + for (;;) { + for (; x <= width - nlanes && x >= 0; x += nlanes) { + for (int c = 0; c < chanNum; ++c) { + v_gather_channel(chan, &src[chanNum * x], c); + vx_store(&dst[c][line][x], chan); + } + } + + if (x < width) { + x = width - nlanes; + continue; + } + break; + } +} + +CV_ALWAYS_INLINE void vertical_anyLPI(const uchar* src0, const uchar* src1, + uchar* tmp, const int inLength, + const short beta) { + constexpr int nlanes = static_cast(v_uint8::nlanes); + GAPI_Assert(inLength >= nlanes); + + const int half_nlanes = nlanes/2; + int w = 0; + for (;;) { + for (; w <= inLength - nlanes; w += nlanes) { + v_int16 s0 = v_reinterpret_as_s16(vx_load_expand(&src0[w])); + v_int16 s1 = v_reinterpret_as_s16(vx_load_expand(&src1[w])); + v_int16 s2 = v_reinterpret_as_s16(vx_load_expand(&src0[w + half_nlanes])); + v_int16 s3 = v_reinterpret_as_s16(vx_load_expand(&src1[w + half_nlanes])); + v_int16 res1 = v_mulhrs(s0 - s1, beta) + s1; + v_int16 res2 = v_mulhrs(s2 - s3, beta) + s3; + + vx_store(tmp + w, v_pack_u(res1, res2)); + } + + if (w < inLength) { + w = inLength - nlanes; + continue; + } + break; + } +} + +template +CV_ALWAYS_INLINE void horizontal_anyLPI(std::array, chanNum>& dst, + const uchar* src, const short mapsx[], + const short alpha[], const int width, + const int line) { + constexpr int nlanes = static_cast(v_uint8::nlanes); + const int half_nlanes = nlanes/2; + GAPI_Assert(width >= half_nlanes); + + v_int16 t0, t1;//, t2, t3; + int x = 0; + for (;;) { + for (; x <= width - half_nlanes && x >= 0; x += half_nlanes) { + v_int16 a0 = vx_load(&alpha[x]); + for (int c = 0; c < chanNum; ++c) { + v_gather_channel(t0, src, &mapsx[x], c, 0); + v_gather_channel(t1, src, &mapsx[x], c, 1); + //v_gather_channel(t2, src, &mapsx[x + half_nlanes], c, 0); + //v_gather_channel(t3, src, &mapsx[x + half_nlanes], c, 1); + v_int16 res1 = v_mulhrs(t0 - t1, a0) + t1; + //v_int16 res2 = v_mulhrs(t2 - t3, a0) + t3; + //vx_store(&dst[c][line][x], v_pack_u(res1, res2)); + v_pack_u_store(&dst[c][line][x], res1); + } + } + + if (x < width) { + //x = width - nlanes; + x = width - half_nlanes; + continue; + } + break; + } +} + +template +CV_ALWAYS_INLINE void horizontal_4LPI(std::array, chanNum>& dst, + const uchar* tmp, const short mapsx[], + const short clone[], const int length) { + constexpr int nlanes = static_cast(v_uint8::nlanes); + const int half_nlanes = nlanes / 2; + GAPI_Assert(length >= half_nlanes); + + const int shift = static_cast(half_nlanes / 4); + + uchar _mask_horizontal[nlanes] = { 0, 4, 8, 12, 2, 6, 10, 14, 1, 5, 9, 13, 3, 7, 11, 15 }; + v_uint8 hmask = vx_load(_mask_horizontal); + + v_uint8 val_0, val_1, val_2, val_3; + int x = 0; + for (;;) { + for (; x <= length - half_nlanes && x >= 0; x += half_nlanes) { + v_int16 a10 = vx_load(&clone[4 * x]); + v_int16 a32 = vx_load(&clone[4 * (x + 2)]); + v_int16 a54 = vx_load(&clone[4 * (x + 4)]); + v_int16 a76 = vx_load(&clone[4 * (x + 6)]); + + for (int c = 0; c < chanNum; ++c) { + v_gather_channel(val_0, tmp, &mapsx[x], chanNum, c, 0); + v_gather_channel(val_1, tmp, &mapsx[x], chanNum, c, shift); + v_gather_channel(val_2, tmp, &mapsx[x], chanNum, c, shift * 2); + v_gather_channel(val_3, tmp, &mapsx[x], chanNum, c, shift * 3); + + v_int16 val0_0 = v_reinterpret_as_s16(v_expand_low(val_0)); + v_int16 val0_1 = v_reinterpret_as_s16(v_expand_low(val_1)); + v_int16 val0_2 = v_reinterpret_as_s16(v_expand_low(val_2)); + v_int16 val0_3 = v_reinterpret_as_s16(v_expand_low(val_3)); + + v_int16 val1_0 = v_reinterpret_as_s16(v_expand_high(val_0)); + v_int16 val1_1 = v_reinterpret_as_s16(v_expand_high(val_1)); + v_int16 val1_2 = v_reinterpret_as_s16(v_expand_high(val_2)); + v_int16 val1_3 = v_reinterpret_as_s16(v_expand_high(val_3)); + + v_int16 t0 = v_mulhrs(v_sub_wrap(val0_0, val1_0), a10); + v_int16 t1 = v_mulhrs(v_sub_wrap(val0_1, val1_1), a32); + v_int16 t2 = v_mulhrs(v_sub_wrap(val0_2, val1_2), a54); + v_int16 t3 = v_mulhrs(v_sub_wrap(val0_3, val1_3), a76); + + v_int16 r0 = v_add_wrap(val1_0, t0); + v_int16 r1 = v_add_wrap(val1_1, t1); + v_int16 r2 = v_add_wrap(val1_2, t2); + v_int16 r3 = v_add_wrap(val1_3, t3); + + v_uint8 q0 = v_pack_u(r0, r1); + v_uint8 q1 = v_pack_u(r2, r3); + + v_uint8 q2 = v_shuffle(q0, hmask); + v_uint8 q3 = v_shuffle(q1, hmask); + + v_uint8 q4 = v_blend<0xCC /*0b11001100*/>(q2, v_shift_left<4>(q3)); + v_uint8 q5 = v_blend<0xCC /*0b11001100*/>(v_shift_right<4>(q2), q3); + + v_store_low(&dst[c][0][x], q4); + v_store_high(&dst[c][1][x], q4); + v_store_low(&dst[c][2][x], q5); + v_store_high(&dst[c][3][x], q5); + } + } + + if (x < length) { + x = length - half_nlanes; + continue; + } + break; + } +} + +template +CV_ALWAYS_INLINE void calcRowLinear_8UC_Impl_(std::array, chanNum>& dst, + const uint8_t* src0[], + const uint8_t* src1[], + const short alpha[], + const short clone[], // 4 clones of alpha + const short mapsx[], + const short beta[], + uint8_t tmp[], + const Size& inSz, + const Size& outSz, + const int lpi) { + static_assert(v_uint8::nlanes == 16, + "The wide of NEON vector is 128 bits, so one vector contains 16 uchars"); + constexpr int nlanes = static_cast(v_uint8::nlanes); + constexpr int half_nlanes = nlanes / 2; + + bool xRatioEq = inSz.width == outSz.width; + bool yRatioEq = inSz.height == outSz.height; + + if (!xRatioEq && !yRatioEq) { + if (4 == lpi) { + // vertical pass + int inLength = inSz.width * chanNum; + GAPI_Assert(inLength >= half_nlanes); + + v_int16 b0 = vx_setall_s16(beta[0]); + v_int16 b1 = vx_setall_s16(beta[1]); + v_int16 b2 = vx_setall_s16(beta[2]); + v_int16 b3 = vx_setall_s16(beta[3]); + + uchar _mask_vertical[nlanes] = { 0, 8, 4, 12, 1, 9, 5, 13, + 2, 10, 6, 14, 3, 11, 7, 15 }; + v_uint8 vmask = vx_load(_mask_vertical); + + int w = 0; + for (;;) { + for (; w <= inLength - half_nlanes && w >= 0; w += half_nlanes) { + v_int16 val0_0 = v_reinterpret_as_s16(vx_load_expand(&src0[0][w])); + v_int16 val0_1 = v_reinterpret_as_s16(vx_load_expand(&src0[1][w])); + v_int16 val0_2 = v_reinterpret_as_s16(vx_load_expand(&src0[2][w])); + v_int16 val0_3 = v_reinterpret_as_s16(vx_load_expand(&src0[3][w])); + + v_int16 val1_0 = v_reinterpret_as_s16(vx_load_expand(&src1[0][w])); + v_int16 val1_1 = v_reinterpret_as_s16(vx_load_expand(&src1[1][w])); + v_int16 val1_2 = v_reinterpret_as_s16(vx_load_expand(&src1[2][w])); + v_int16 val1_3 = v_reinterpret_as_s16(vx_load_expand(&src1[3][w])); + + v_int16 t0 = v_mulhrs(v_sub_wrap(val0_0, val1_0), b0); + v_int16 t1 = v_mulhrs(v_sub_wrap(val0_1, val1_1), b1); + v_int16 t2 = v_mulhrs(v_sub_wrap(val0_2, val1_2), b2); + v_int16 t3 = v_mulhrs(v_sub_wrap(val0_3, val1_3), b3); + + v_int16 r0 = v_add_wrap(val1_0, t0); + v_int16 r1 = v_add_wrap(val1_1, t1); + v_int16 r2 = v_add_wrap(val1_2, t2); + v_int16 r3 = v_add_wrap(val1_3, t3); + + v_uint8 q0 = v_pack_u(r0, r1); + v_uint8 q1 = v_pack_u(r2, r3); + + v_uint8 q2 = v_blend<0xCC /*0b11001100*/>(q0, v_shift_left<4>(q1)); + v_uint8 q3 = v_blend<0xCC /*0b11001100*/>(v_shift_right<4>(q0), q1); + + v_uint8 q4 = v_shuffle(q2, vmask); + v_uint8 q5 = v_shuffle(q3, vmask); + + vx_store(&tmp[4 * w + 0], q4); + vx_store(&tmp[4 * w + 2 * half_nlanes], q5); + } + + if (w < inLength) { + w = inLength - half_nlanes; + continue; + } + break; + } + + // horizontal pass + horizontal_4LPI(dst, tmp, mapsx, clone, outSz.width); + } else { // if any lpi + int inLength = inSz.width * chanNum; + + for (int l = 0; l < lpi; ++l) { + short beta0 = beta[l]; + const uchar* s0 = src0[l]; + const uchar* s1 = src1[l]; + + // vertical pass + vertical_anyLPI(s0, s1, tmp, inLength, beta0); + + // horizontal pass + horizontal_anyLPI(dst, tmp, mapsx, alpha, outSz.width, l); + } + } + } else if (!xRatioEq) { + GAPI_DbgAssert(yRatioEq); + + if (4 == lpi) { + int inLength = inSz.width * chanNum; + + // vertical pass + GAPI_Assert(inLength >= nlanes); + v_uint8 s0, s1, s2, s3; + int w = 0; + for (;;) { + for (; w <= inLength - nlanes; w += nlanes) { + s0 = vx_load(&src0[0][w]); + s1 = vx_load(&src0[1][w]); + s2 = vx_load(&src0[2][w]); + s3 = vx_load(&src0[3][w]); + v_store_interleave(&tmp[lpi * w], s0, s1, s2, s3); + } + + if (w < inLength) { + w = inLength - nlanes; + continue; + } + break; + } + + // horizontal pass + horizontal_4LPI(dst, tmp, mapsx, clone, outSz.width); + } else { // any LPI + for (int l = 0; l < lpi; ++l) { + const uchar* src = src0[l]; + + // horizontal pass + horizontal_anyLPI(dst, src, mapsx, alpha, outSz.width, l); + } + } + } else if (!yRatioEq) { + GAPI_DbgAssert(xRatioEq); + int inLength = inSz.width*chanNum; // == outSz.width + + for (int l = 0; l < lpi; ++l) { + short beta0 = beta[l]; + const uchar* s0 = src0[l]; + const uchar* s1 = src1[l]; + + // vertical pass + vertical_anyLPI(s0, s1, tmp, inLength, beta0); + + //split channels to planes and store + channels2planes_store(dst, tmp, outSz.width, l); + } + } else { + GAPI_DbgAssert(xRatioEq && yRatioEq); + + //split channels to planes and store + for (int l = 0; l < lpi; ++l) { + const uchar* src = src0[l]; + channels2planes_store(dst, src, outSz.width, l); + } + } +} + +// Resize (bi-linear, 8UC3) +void calcRowLinear_8U(C3, std::array, 3>& dst, + const uint8_t* src0[], + const uint8_t* src1[], + const short alpha[], + const short clone[], // 4 clones of alpha + const short mapsx[], + const short beta[], + uint8_t tmp[], + const Size& inSz, + const Size& outSz, + const int lpi) { + constexpr int chanNum = 3; + calcRowLinear_8UC_Impl_(dst, src0, src1, alpha, clone, mapsx, + beta, tmp, inSz, outSz, lpi); +} + +// Resize (bi-linear, 8UC4) +void calcRowLinear_8U(C4, std::array, 4>& dst, + const uint8_t* src0[], + const uint8_t* src1[], + const short alpha[], + const short clone[], // 4 clones of alpha + const short mapsx[], + const short beta[], + uint8_t tmp[], + const Size& inSz, + const Size& outSz, + const int lpi) { + constexpr int chanNum = 4; + calcRowLinear_8UC_Impl_(dst, src0, src1, alpha, clone, mapsx, + beta, tmp, inSz, outSz, lpi); +} + +CV_ALWAYS_INLINE void horizontal_4LPI(uint8_t* dst[], + const uchar* tmp, const short mapsx[], + const short clone[], const int length) { + constexpr int nlanes = static_cast(v_uint8::nlanes); + const int half_nlanes = nlanes / 2; + GAPI_Assert(length >= half_nlanes); + + uchar _mask_horizontal[nlanes] = { 0, 4, 8, 12, 2, 6, 10, 14, + 1, 5, 9, 13, 3, 7, 11, 15 }; + v_uint8 hmask = vx_load(_mask_horizontal); + int x = 0; + for (;;) { + for (; x <= length - half_nlanes; x += half_nlanes) { + v_int16 a10 = vx_load(&clone[4 * x]); + v_int16 a32 = vx_load(&clone[4 * (x + 2)]); + v_int16 a54 = vx_load(&clone[4 * (x + 4)]); + v_int16 a76 = vx_load(&clone[4 * (x + 6)]); + + v_uint8 val_0 = v_gather_lines(tmp, &mapsx[x]); + v_uint8 val_1 = v_gather_lines(tmp, &mapsx[x + 2]); + v_uint8 val_2 = v_gather_lines(tmp, &mapsx[x + 4]); + v_uint8 val_3 = v_gather_lines(tmp, &mapsx[x + 6]); + + v_int16 val0_0 = v_reinterpret_as_s16(v_expand_low(val_0)); + v_int16 val0_1 = v_reinterpret_as_s16(v_expand_low(val_1)); + v_int16 val0_2 = v_reinterpret_as_s16(v_expand_low(val_2)); + v_int16 val0_3 = v_reinterpret_as_s16(v_expand_low(val_3)); + + v_int16 val1_0 = v_reinterpret_as_s16(v_expand_high(val_0)); + v_int16 val1_1 = v_reinterpret_as_s16(v_expand_high(val_1)); + v_int16 val1_2 = v_reinterpret_as_s16(v_expand_high(val_2)); + v_int16 val1_3 = v_reinterpret_as_s16(v_expand_high(val_3)); + + v_int16 t0 = v_mulhrs(v_sub_wrap(val0_0, val1_0), a10); + v_int16 t1 = v_mulhrs(v_sub_wrap(val0_1, val1_1), a32); + v_int16 t2 = v_mulhrs(v_sub_wrap(val0_2, val1_2), a54); + v_int16 t3 = v_mulhrs(v_sub_wrap(val0_3, val1_3), a76); + + v_int16 r0 = v_add_wrap(val1_0, t0); + v_int16 r1 = v_add_wrap(val1_1, t1); + v_int16 r2 = v_add_wrap(val1_2, t2); + v_int16 r3 = v_add_wrap(val1_3, t3); + + v_uint8 q0 = v_pack_u(r0, r1); + v_uint8 q1 = v_pack_u(r2, r3); + + v_uint8 q2 = v_shuffle(q0, hmask); + v_uint8 q3 = v_shuffle(q1, hmask); + + v_uint8 q4 = v_blend<0xCC /*0b11001100*/>(q2, v_shift_left<4>(q3)); + v_uint8 q5 = v_blend<0xCC /*0b11001100*/>(v_shift_right<4>(q2), q3); + + v_store_low(&dst[0][x], q4); + v_store_high(&dst[1][x], q4); + v_store_low(&dst[2][x], q5); + v_store_high(&dst[3][x], q5); + } + + if (x < length) { + x = length - half_nlanes; + continue; + } + break; + } +} + +CV_ALWAYS_INLINE void horizontal_anyLPI(uint8_t* dst[], + const uchar* src, const short mapsx[], + const short alpha[], const int length, + const int line) { + constexpr int nlanes = static_cast(v_uint8::nlanes); + const int half_nlanes = nlanes / 2; + GAPI_Assert(length >= half_nlanes); + v_int16 t0, t1; + int x = 0; + for (;;) { + for (; x <= length - half_nlanes; x += half_nlanes) { + v_int16 a0 = vx_load(&alpha[x]); + v_uint8 t = v_gather_pairs(src, &mapsx[x]); + + v_deinterleave_expand(t, t0, t1); + v_int16 d = v_mulhrs(t0 - t1, a0) + t1; + v_pack_u_store(&dst[line][x], d); + } + + if (x < length) { + x = length - half_nlanes; + continue; + } + break; + } +} + +// 8UC1 Resize (bi-linear) +void calcRowLinear_8UC1(uint8_t* dst[], + const uint8_t* src0[], + const uint8_t* src1[], + const short alpha[], + const short clone[], // 4 clones of alpha + const short mapsx[], + const short beta[], + uint8_t tmp[], + const Size& inSz, + const Size& outSz, + const int lpi) { + static_assert(v_uint8::nlanes == 16, + "The wide of NEON vector is 128 bits, so one vector contains 16 uchars"); + + constexpr int nlanes = static_cast(v_uint8::nlanes); + constexpr int half_nlanes = nlanes / 2; + + bool xRatioEq = inSz.width == outSz.width; + bool yRatioEq = inSz.height == outSz.height; + + if (!xRatioEq && !yRatioEq) { + GAPI_Assert(inSz.width >= half_nlanes); + + if (4 == lpi) { + // vertical pass + v_int16 b0 = vx_setall_s16(beta[0]); + v_int16 b1 = vx_setall_s16(beta[1]); + v_int16 b2 = vx_setall_s16(beta[2]); + v_int16 b3 = vx_setall_s16(beta[3]); + + uchar _mask_vertical[nlanes] = { 0, 8, 4, 12, 1, 9, 5, 13, + 2, 10, 6, 14, 3, 11, 7, 15 }; + v_uint8 vmask = vx_load(_mask_vertical); + + int w = 0; + for (;;) { + for (; w <= inSz.width - half_nlanes; w += half_nlanes) { + v_int16 val0_0 = v_reinterpret_as_s16(vx_load_expand(&src0[0][w])); + v_int16 val0_1 = v_reinterpret_as_s16(vx_load_expand(&src0[1][w])); + v_int16 val0_2 = v_reinterpret_as_s16(vx_load_expand(&src0[2][w])); + v_int16 val0_3 = v_reinterpret_as_s16(vx_load_expand(&src0[3][w])); + + v_int16 val1_0 = v_reinterpret_as_s16(vx_load_expand(&src1[0][w])); + v_int16 val1_1 = v_reinterpret_as_s16(vx_load_expand(&src1[1][w])); + v_int16 val1_2 = v_reinterpret_as_s16(vx_load_expand(&src1[2][w])); + v_int16 val1_3 = v_reinterpret_as_s16(vx_load_expand(&src1[3][w])); + + v_int16 t0 = v_mulhrs(v_sub_wrap(val0_0, val1_0), b0); + v_int16 t1 = v_mulhrs(v_sub_wrap(val0_1, val1_1), b1); + v_int16 t2 = v_mulhrs(v_sub_wrap(val0_2, val1_2), b2); + v_int16 t3 = v_mulhrs(v_sub_wrap(val0_3, val1_3), b3); + + v_int16 r0 = v_add_wrap(val1_0, t0); + v_int16 r1 = v_add_wrap(val1_1, t1); + v_int16 r2 = v_add_wrap(val1_2, t2); + v_int16 r3 = v_add_wrap(val1_3, t3); + + v_uint8 q0 = v_pack_u(r0, r1); + v_uint8 q1 = v_pack_u(r2, r3); + + v_uint8 q2 = v_blend<0xCC /*0b11001100*/>(q0, v_shift_left<4>(q1)); + v_uint8 q3 = v_blend<0xCC /*0b11001100*/>(v_shift_right<4>(q0), q1); + + v_uint8 q4 = v_shuffle(q2, vmask); + v_uint8 q5 = v_shuffle(q3, vmask); + + vx_store(&tmp[4 * w + 0], q4); + vx_store(&tmp[4 * w + 2 * half_nlanes], q5); + } + + if (w < inSz.width) { + w = inSz.width - half_nlanes; + continue; + } + break; + } + + // horizontal pass + horizontal_4LPI(dst, tmp, mapsx, clone, outSz.width); + } else { // if any lpi + for (int l = 0; l < lpi; ++l) { + short beta0 = beta[l]; + const uchar* s0 = src0[l]; + const uchar* s1 = src1[l]; + + // vertical pass + vertical_anyLPI(s0, s1, tmp, inSz.width, beta0); + + // horizontal pass + horizontal_anyLPI(dst, tmp, mapsx, alpha, outSz.width, l); + } + } // if lpi == 4 + + } else if (!xRatioEq) { + GAPI_DbgAssert(yRatioEq); + GAPI_Assert(inSz.width >= nlanes); + + if (4 == lpi) { + // vertical pass + int w = 0; + for (;;) { + for (; w <= inSz.width - nlanes; w += nlanes) { + v_uint8 s0 = vx_load(&src0[0][w]); + v_uint8 s1 = vx_load(&src0[1][w]); + v_uint8 s2 = vx_load(&src0[2][w]); + v_uint8 s3 = vx_load(&src0[3][w]); + v_store_interleave(&tmp[4 * w], s0, s1, s2, s3); + } + + if (w < inSz.width) { + w = inSz.width - nlanes; + continue; + } + break; + } + + // horizontal pass + horizontal_4LPI(dst, tmp, mapsx, clone, outSz.width); + } else { // any LPI + GAPI_Assert(outSz.width >= half_nlanes); + for (int l = 0; l < lpi; ++l) { + const uchar* src = src0[l]; + + // horizontal pass + horizontal_anyLPI(dst, src, mapsx, alpha, outSz.width, l); + } + } + + } else if (!yRatioEq) { + GAPI_DbgAssert(xRatioEq); + int length = inSz.width; // == outSz.width + + for (int l = 0; l < lpi; ++l) { + short beta0 = beta[l]; + const uchar* s0 = src0[l]; + const uchar* s1 = src1[l]; + + // vertical pass + vertical_anyLPI(s0, s1, dst[l], length, beta0); + } + + } else { + GAPI_DbgAssert(xRatioEq && yRatioEq); + int length = inSz.width; // == outSz.width + + for (int l = 0; l < lpi; ++l) { + memcpy(dst[l], src0[l], length); + } + } +} } // namespace neon } // namespace kernels } // namespace gapi diff --git a/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.hpp b/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.hpp index 07f3a2cd4c5a04..f3b21f73a95b44 100644 --- a/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.hpp +++ b/inference-engine/src/preprocessing/arm_neon/ie_preprocess_gapi_kernels_neon.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -29,17 +29,17 @@ void calcRowArea_32F(float dst[], const float *src[], const Size &inSz, const Si const float xalpha[], float vbuf[]); // Resize (bi-linear, 8U) -void calcRowLinear_8U(uint8_t *dst[], - const uint8_t *src0[], - const uint8_t *src1[], - const short alpha[], - const short clone[], - const short mapsx[], - const short beta[], - uint8_t tmp[], - const Size& inSz, - const Size& outSz, - int lpi); +void calcRowLinear_8UC1(uint8_t *dst[], + const uint8_t *src0[], + const uint8_t *src1[], + const short alpha[], + const short clone[], + const short mapsx[], + const short beta[], + uint8_t tmp[], + const Size& inSz, + const Size& outSz, + int lpi); // Resize (bi-linear, 8UC3) void calcRowLinear_8U(C3, std::array, 3> &dst, diff --git a/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.cpp b/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.cpp index b23d560b2277e4..22d86e10538df4 100644 --- a/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.cpp +++ b/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.hpp b/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.hpp index e2ddd7645396f1..7226a51ddca1e1 100644 --- a/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.hpp +++ b/inference-engine/src/preprocessing/cpu_x86_avx2/ie_preprocess_gapi_kernels_avx2.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.cpp b/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.cpp index f36a3dabef3003..05925d45c195c3 100644 --- a/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.cpp +++ b/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.hpp b/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.hpp index de34fd8028d89a..2323d9345d4321 100644 --- a/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.hpp +++ b/inference-engine/src/preprocessing/cpu_x86_avx512/ie_preprocess_gapi_kernels_avx512.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.cpp b/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.cpp index 3cca3ac3d53909..86fb156931ede4 100644 --- a/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.cpp +++ b/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -88,16 +88,29 @@ void calcRowLinear_8UC1(uint8_t *dst[], // function: resize_bilinear_u8 // label: vertical_pass //-------------------------------------------- - +#ifdef __i386__ + __m128i val0lo = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src0[0][w])), + reinterpret_cast(&src0[1][w]))); + __m128i val0hi = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src0[2][w])), + reinterpret_cast(&src0[3][w]))); + __m128i val1lo = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src1[0][w])), + reinterpret_cast(&src1[1][w]))); + __m128i val1hi = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src1[2][w])), + reinterpret_cast(&src1[3][w]))); +#else __m128i val0lo = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast(&src0[0][w])), - *reinterpret_cast(&src0[1][w]), 1); + *reinterpret_cast(&src0[1][w]), 1); __m128i val0hi = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast(&src0[2][w])), - *reinterpret_cast(&src0[3][w]), 1); + *reinterpret_cast(&src0[3][w]), 1); __m128i val1lo = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast(&src1[0][w])), - *reinterpret_cast(&src1[1][w]), 1); + *reinterpret_cast(&src1[1][w]), 1); __m128i val1hi = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast(&src1[2][w])), - *reinterpret_cast(&src1[3][w]), 1); - + *reinterpret_cast(&src1[3][w]), 1); +#endif __m128i val0_0 = _mm_cvtepu8_epi16(val0lo); __m128i val0_2 = _mm_cvtepu8_epi16(val0hi); __m128i val1_0 = _mm_cvtepu8_epi16(val1lo); @@ -382,15 +395,29 @@ void calcRowLinear_8UC1(uint8_t *dst[], for (int x = 0; x < outSz.width; ) { for (; x <= outSz.width - 8; x += 8) { v_uint8x16 t0, t1, t2, t3; +#ifdef __i386__ + t0.val = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&tmp[4 * mapsx[x + 0]])), + reinterpret_cast(&tmp[4 * mapsx[x + 1]]))); + t1.val = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&tmp[4 * mapsx[x + 2]])), + reinterpret_cast(&tmp[4 * mapsx[x + 3]]))); + t2.val = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&tmp[4 * mapsx[x + 4]])), + reinterpret_cast(&tmp[4 * mapsx[x + 5]]))); + t3.val = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&tmp[4 * mapsx[x + 6]])), + reinterpret_cast(&tmp[4 * mapsx[x + 7]]))); +#else t0.val = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast<__m128i*>(&tmp[4 * mapsx[x + 0]])), - *reinterpret_cast(&tmp[4 * mapsx[x + 1]]), 1); + *reinterpret_cast(&tmp[4 * mapsx[x + 1]]), 1); t1.val = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast<__m128i*>(&tmp[4 * mapsx[x + 2]])), - *reinterpret_cast(&tmp[4 * mapsx[x + 3]]), 1); + *reinterpret_cast(&tmp[4 * mapsx[x + 3]]), 1); t2.val = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast<__m128i*>(&tmp[4 * mapsx[x + 4]])), - *reinterpret_cast(&tmp[4 * mapsx[x + 5]]), 1); + *reinterpret_cast(&tmp[4 * mapsx[x + 5]]), 1); t3.val = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast<__m128i*>(&tmp[4 * mapsx[x + 6]])), - *reinterpret_cast(&tmp[4 * mapsx[x + 7]]), 1); - + *reinterpret_cast(&tmp[4 * mapsx[x + 7]]), 1); +#endif v_uint8x16 r0, r1, r2, r3; v_deinterleave(t0, t1, t2, t3, r0, r1, r2, r3); @@ -512,7 +539,20 @@ void calcRowLinear_8UC_Impl_(std::array, chanNum> &dst, // function: resize_bilinear_u8 // label: vertical_pass //-------------------------------------------- - +#ifdef __i386__ + __m128i val0lo = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src0[0][w])), + reinterpret_cast(&src0[1][w]))); + __m128i val0hi = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src0[2][w])), + reinterpret_cast(&src0[3][w]))); + __m128i val1lo = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src1[0][w])), + reinterpret_cast(&src1[1][w]))); + __m128i val1hi = _mm_castpd_si128(_mm_loadh_pd( + _mm_load_sd(reinterpret_cast(&src1[2][w])), + reinterpret_cast(&src1[3][w]))); +#else __m128i val0lo = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast(&src0[0][w])), *reinterpret_cast(&src0[1][w]), 1); __m128i val0hi = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast(&src0[2][w])), @@ -521,7 +561,7 @@ void calcRowLinear_8UC_Impl_(std::array, chanNum> &dst, *reinterpret_cast(&src1[1][w]), 1); __m128i val1hi = _mm_insert_epi64(_mm_loadl_epi64(reinterpret_cast(&src1[2][w])), *reinterpret_cast(&src1[3][w]), 1); - +#endif __m128i val0_0 = _mm_cvtepu8_epi16(val0lo); __m128i val0_2 = _mm_cvtepu8_epi16(val0hi); __m128i val1_0 = _mm_cvtepu8_epi16(val1lo); @@ -864,34 +904,33 @@ void calcRowLinear_8UC_Impl_(std::array, chanNum> &dst, // Resize (bi-linear, 8UC3) void calcRowLinear_8U(C3, std::array, 3> &dst, - const uint8_t *src0[], - const uint8_t *src1[], - const short alpha[], - const short clone[], // 4 clones of alpha - const short mapsx[], - const short beta[], - uint8_t tmp[], - const Size &inSz, - const Size &outSz, - int lpi) { - constexpr const int chanNum = 3; - + const uint8_t* src0[], + const uint8_t* src1[], + const short alpha[], + const short clone[], // 4 clones of alpha + const short mapsx[], + const short beta[], + uint8_t tmp[], + const Size& inSz, + const Size& outSz, + const int lpi) { + constexpr int chanNum = 3; calcRowLinear_8UC_Impl_(dst, src0, src1, alpha, clone, mapsx, beta, tmp, inSz, outSz, lpi); } // Resize (bi-linear, 8UC4) void calcRowLinear_8U(C4, std::array, 4> &dst, - const uint8_t *src0[], - const uint8_t *src1[], - const short alpha[], - const short clone[], // 4 clones of alpha - const short mapsx[], - const short beta[], - uint8_t tmp[], - const Size &inSz, - const Size &outSz, - int lpi) { - constexpr const int chanNum = 4; + const uint8_t* src0[], + const uint8_t* src1[], + const short alpha[], + const short clone[], // 4 clones of alpha + const short mapsx[], + const short beta[], + uint8_t tmp[], + const Size& inSz, + const Size& outSz, + const int lpi) { + constexpr int chanNum = 4; calcRowLinear_8UC_Impl_(dst, src0, src1, alpha, clone, mapsx, beta, tmp, inSz, outSz, lpi); } diff --git a/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.hpp b/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.hpp index bfc57555b5b04a..4e1eb471cd5aa9 100644 --- a/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.hpp +++ b/inference-engine/src/preprocessing/cpu_x86_sse42/ie_preprocess_gapi_kernels_sse42.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/ie_preprocess_data.cpp b/inference-engine/src/preprocessing/ie_preprocess_data.cpp index e513da80f72d1e..3aea672a171e81 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_data.cpp +++ b/inference-engine/src/preprocessing/ie_preprocess_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,18 +36,13 @@ class PreProcessData : public IPreProcessData { void execute(Blob::Ptr &preprocessedBlob, const PreProcessInfo &info, bool serial, int batchSize = -1) override; - void Release() noexcept override; - void isApplicable(const Blob::Ptr &src, const Blob::Ptr &dst) override; }; -StatusCode CreatePreProcessData(IPreProcessData *& data, ResponseDesc * /*resp*/) noexcept { - data = new PreProcessData(); - return StatusCode::OK; -} +INFERENCE_PRERPOC_PLUGIN_API(void) CreatePreProcessData(std::shared_ptr& data); -void PreProcessData::Release() noexcept { - delete this; +INFERENCE_PRERPOC_PLUGIN_API(void) CreatePreProcessData(std::shared_ptr& data) { + data = std::make_shared(); } void PreProcessData::setRoiBlob(const Blob::Ptr &blob) { @@ -66,7 +61,7 @@ void PreProcessData::execute(Blob::Ptr &preprocessedBlob, const PreProcessInfo & auto fmt = info.getColorFormat(); if (_userBlob == nullptr || preprocessedBlob == nullptr) { - THROW_IE_EXCEPTION << "Input pre-processing is called with null " << (_userBlob == nullptr ? "_userBlob" : "preprocessedBlob"); + IE_THROW() << "Input pre-processing is called with null " << (_userBlob == nullptr ? "_userBlob" : "preprocessedBlob"); } batchSize = PreprocEngine::getCorrectBatchSize(batchSize, _userBlob); diff --git a/inference-engine/src/preprocessing/ie_preprocess_data.hpp b/inference-engine/src/preprocessing/ie_preprocess_data.hpp index f0e351f09bff59..fa097fca02554d 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_data.hpp +++ b/inference-engine/src/preprocessing/ie_preprocess_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,7 +31,7 @@ namespace InferenceEngine { /** * @brief This class stores pre-process information for exact input */ -class IPreProcessData : public details::IRelease { +class IPreProcessData : public std::enable_shared_from_this { public: /** * @brief Sets ROI blob to be resized and placed to the default input blob during pre-processing. @@ -58,9 +58,12 @@ class IPreProcessData : public details::IRelease { //FIXME: rename to verifyAplicable virtual void isApplicable(const Blob::Ptr &src, const Blob::Ptr &dst) = 0; + +protected: + ~IPreProcessData() = default; }; -INFERENCE_PRERPOC_PLUGIN_API(StatusCode) CreatePreProcessData(IPreProcessData *& data, ResponseDesc *resp) noexcept; +INFERENCE_PRERPOC_PLUGIN_API(void) CreatePreProcessData(std::shared_ptr& data); namespace details { @@ -89,7 +92,7 @@ inline PreProcessDataPtr CreatePreprocDataHelper() { FileUtils::FilePath preprocLibraryPath = FileUtils::makePluginLibraryName(getInferenceEngineLibraryPath(), libraryName); if (!FileUtils::fileExist(preprocLibraryPath)) { - THROW_IE_EXCEPTION << "Please, make sure that pre-processing library " + IE_THROW() << "Please, make sure that pre-processing library " << FileUtils::fromFilePath(::FileUtils::makePluginLibraryName({}, libraryName)) << " is in " << getIELibraryPath(); } diff --git a/inference-engine/src/preprocessing/ie_preprocess_gapi.cpp b/inference-engine/src/preprocessing/ie_preprocess_gapi.cpp index 57d4f2699ca63b..cbaa42b6fbc5ba 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_gapi.cpp +++ b/inference-engine/src/preprocessing/ie_preprocess_gapi.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -83,7 +83,7 @@ inline int get_cv_depth(const TensorDesc &ie_desc) { case Precision::U16: return CV_16U; case Precision::FP16: return CV_16U; - default: THROW_IE_EXCEPTION << "Unsupported data type"; + default: IE_THROW() << "Unsupported data type"; } } @@ -103,7 +103,7 @@ std::vector> bind_to_blob(const Blob::Ptr& blob, uint8_t* blob_ptr = static_cast(blob->buffer()); if (blob_ptr == nullptr) { - THROW_IE_EXCEPTION << "Blob buffer is nullptr"; + IE_THROW() << "Blob buffer is nullptr"; } blob_ptr += blob->element_size()*ie_desc_blk.getOffsetPadding(); @@ -116,7 +116,7 @@ std::vector> bind_to_blob(const Blob::Ptr& blob, curr_data_ptr, stride); } else { // NCHW if (desc.d.C <= 0) { - THROW_IE_EXCEPTION << "Invalid number of channels in blob tensor descriptor, " + IE_THROW() << "Invalid number of channels in blob tensor descriptor, " "expected >0, actual: " << desc.d.C; } const auto planeType = CV_MAKETYPE(cv_depth, 1); @@ -223,7 +223,7 @@ std::vector merge(const std::vector& inputs, case 2: interleaved.emplace_back(gapi::Merge2::on(inputs[0], inputs[1])); break; case 3: interleaved.emplace_back(gapi::Merge3::on(inputs[0], inputs[1], inputs[2])); break; case 4: interleaved.emplace_back(gapi::Merge4::on(inputs[0], inputs[1], inputs[2], inputs[3])); break; - default: THROW_IE_EXCEPTION << "output channels value " << channels + default: IE_THROW() << "output channels value " << channels << " is not supported for HWC [by G-API]." << " Expected range (inclusive): [1;4]."; } @@ -240,7 +240,7 @@ void validateColorFormats(const G::Desc &in_desc, ColorFormat output_color_format) { const auto verify_desc = [] (const G::Desc& desc, ColorFormat fmt, const std::string& desc_prefix) { const auto throw_invalid_number_of_channels = [&](){ - THROW_IE_EXCEPTION << desc_prefix << " tensor descriptor " + IE_THROW() << desc_prefix << " tensor descriptor " << "has invalid number of channels " << desc.d.C << " for " << fmt << "color format"; @@ -271,7 +271,7 @@ void validateColorFormats(const G::Desc &in_desc, const auto verify_layout = [] (Layout layout, const std::string& layout_prefix) { if (layout != NHWC && layout != NCHW) { - THROW_IE_EXCEPTION << layout_prefix << " layout " << layout + IE_THROW() << layout_prefix << " layout " << layout << " is not supported by pre-processing [by G-API]"; } }; @@ -279,11 +279,11 @@ void validateColorFormats(const G::Desc &in_desc, // verify inputs/outputs and throw on error const bool color_conv_required = !((output_color_format == input_color_format) || (input_color_format == ColorFormat::RAW)); if (color_conv_required && (output_color_format == ColorFormat::RAW)) { - THROW_IE_EXCEPTION << "Network's expected color format is unspecified"; + IE_THROW() << "Network's expected color format is unspecified"; } if (output_color_format == ColorFormat::NV12 || output_color_format == ColorFormat::I420) { - THROW_IE_EXCEPTION << "NV12/I420 network's color format is not supported [by G-API]"; + IE_THROW() << "NV12/I420 network's color format is not supported [by G-API]"; } verify_layout(in_layout, "Input blob"); @@ -292,7 +292,7 @@ void validateColorFormats(const G::Desc &in_desc, if (!color_conv_required) { // verify input and output have the same number of channels if (in_desc.d.C != out_desc.d.C) { - THROW_IE_EXCEPTION << "Input and network expected blobs have different number of " + IE_THROW() << "Input and network expected blobs have different number of " << "channels: expected " << out_desc.d.C << " channels but provided " << in_desc.d.C << " channels"; } @@ -302,7 +302,7 @@ void validateColorFormats(const G::Desc &in_desc, // planar 4-channel input is not supported, user can easily pass 3 channels instead of 4 if (in_layout == NCHW && (input_color_format == ColorFormat::RGBX || input_color_format == ColorFormat::BGRX)) { - THROW_IE_EXCEPTION << "Input blob with NCHW layout and BGRX/RGBX color format is " + IE_THROW() << "Input blob with NCHW layout and BGRX/RGBX color format is " << "explicitly not supported, use NCHW + BGR/RGB color format " << "instead (3 image planes instead of 4)"; } @@ -323,10 +323,10 @@ void validateTensorDesc(const TensorDesc& desc) { if (!supports_layout(layout) || dims.size() != 4 || desc.getBlockingDesc().getStrides().size() != 4) { - THROW_IE_EXCEPTION << "Preprocess support NCHW/NHWC only"; + IE_THROW() << "Preprocess support NCHW/NHWC only"; } if (has_zeros(dims)) { - THROW_IE_EXCEPTION << "Invalid input data dimensions: " + IE_THROW() << "Invalid input data dimensions: " << details::dumpVec(dims); } } @@ -337,7 +337,7 @@ void validateBlob(const NV12Blob::Ptr &inBlob) { const auto& y_blob = inBlob->y(); const auto& uv_blob = inBlob->uv(); if (!y_blob || !uv_blob) { - THROW_IE_EXCEPTION << "Invalid underlying blobs in NV12Blob"; + IE_THROW() << "Invalid underlying blobs in NV12Blob"; } validateTensorDesc(uv_blob->getTensorDesc()); @@ -349,7 +349,7 @@ void validateBlob(const I420Blob::Ptr &inBlob) { const auto& v_blob = inBlob->v(); if (!y_blob || !u_blob || !v_blob) { - THROW_IE_EXCEPTION << "Invalid underlying blobs in I420Blob"; + IE_THROW() << "Invalid underlying blobs in I420Blob"; } validateTensorDesc(u_blob->getTensorDesc()); @@ -505,7 +505,7 @@ class PlanarColorConversions { const CvtFunction& at(ColorFormat in_fmt, ColorFormat out_fmt) const { auto cvtFunc = m_conversions.find(std::make_pair(in_fmt, out_fmt)); if (cvtFunc == m_conversions.cend()) { - THROW_IE_EXCEPTION << "Color conversion " << in_fmt << " -> " << out_fmt + IE_THROW() << "Color conversion " << in_fmt << " -> " << out_fmt << " is not supported"; } return cvtFunc->second; @@ -537,7 +537,7 @@ convertColorPlanar(const std::vector& inputs, const auto& convert = conversions.at(input_color_format, output_color_format); auto planes = convert(inputs, in_layout, out_layout, algorithm); if (planes.empty()) { - THROW_IE_EXCEPTION << "[G-API] internal error: failed to convert input data into planar " + IE_THROW() << "[G-API] internal error: failed to convert input data into planar " << "format"; } @@ -624,7 +624,7 @@ cv::GComputation buildGraph(const G::Desc &in_desc, const int number_of_planes = static_cast(planes.size()); if (number_of_planes != out_desc.d.C) { - THROW_IE_EXCEPTION << "[G-API] internal error: number of channels after color conversion " + IE_THROW() << "[G-API] internal error: number of channels after color conversion " << "!= network's expected number of channels: " << number_of_planes << " != " << out_desc.d.C; } @@ -643,7 +643,7 @@ cv::GComputation buildGraph(const G::Desc &in_desc, switch (ar) { case RESIZE_AREA: return cv::INTER_AREA; case RESIZE_BILINEAR: return cv::INTER_LINEAR; - default: THROW_IE_EXCEPTION << "Unsupported resize operation"; + default: IE_THROW() << "Unsupported resize operation"; } } (algorithm); @@ -764,12 +764,12 @@ void PreprocEngine::checkApplicabilityGAPI(const Blob::Ptr &src, const Blob::Ptr // src is either a memory blob, an NV12, or an I420 blob const bool yuv420_blob = src->is() || src->is(); if (!src->is() && !yuv420_blob) { - THROW_IE_EXCEPTION << "Unsupported input blob type: expected MemoryBlob, NV12Blob or I420Blob"; + IE_THROW() << "Unsupported input blob type: expected MemoryBlob, NV12Blob or I420Blob"; } // dst is always a memory blob if (!dst->is()) { - THROW_IE_EXCEPTION << "Unsupported network's input blob type: expected MemoryBlob"; + IE_THROW() << "Unsupported network's input blob type: expected MemoryBlob"; } const auto &src_dims = src->getTensorDesc().getDims(); @@ -777,32 +777,32 @@ void PreprocEngine::checkApplicabilityGAPI(const Blob::Ptr &src, const Blob::Ptr // dimensions sizes must be equal if both blobs are memory blobs if (!yuv420_blob && src_dims.size() != dst_dims.size()) { - THROW_IE_EXCEPTION << "Preprocessing is not applicable. Source and destination blobs " + IE_THROW() << "Preprocessing is not applicable. Source and destination blobs " "have different number of dimensions."; } if (dst_dims.size() != 4) { - THROW_IE_EXCEPTION << "Preprocessing is not applicable. Only 4D tensors are supported."; + IE_THROW() << "Preprocessing is not applicable. Only 4D tensors are supported."; } // dimensions must not have values that are equal to 0 if (has_zeros(src_dims)) { - THROW_IE_EXCEPTION << "Invalid input data dimensions: " << details::dumpVec(src_dims); + IE_THROW() << "Invalid input data dimensions: " << details::dumpVec(src_dims); } if (has_zeros(dst_dims)) { - THROW_IE_EXCEPTION << "Invalid network's input dimensions: " << details::dumpVec(dst_dims); + IE_THROW() << "Invalid network's input dimensions: " << details::dumpVec(dst_dims); } } int PreprocEngine::getCorrectBatchSize(int batch, const Blob::Ptr& blob) { if (batch == 0) { - THROW_IE_EXCEPTION << "Input pre-processing is called with invalid batch size " << batch; + IE_THROW() << "Input pre-processing is called with invalid batch size " << batch; } if (blob->is()) { // batch size must always be 1 in compound blob case if (batch > 1) { - THROW_IE_EXCEPTION << "Provided input blob batch size " << batch + IE_THROW() << "Provided input blob batch size " << batch << " is not supported in compound blob pre-processing"; } batch = 1; @@ -922,13 +922,13 @@ void PreprocEngine::preprocessBlob(const BlobTypePtr &inBlob, MemoryBlob::Ptr &o // according to the IE's current design, input blob batch size _must_ match networks's expected // batch size, even if the actual processing batch size (set on infer request) is different. if (in_desc.d.N != out_desc.d.N) { - THROW_IE_EXCEPTION << "Input blob batch size is invalid: (input blob) " + IE_THROW() << "Input blob batch size is invalid: (input blob) " << in_desc.d.N << " != " << out_desc.d.N << " (expected by network)"; } // sanity check batch size if (batch_size > out_desc.d.N) { - THROW_IE_EXCEPTION << "Provided batch size is invalid: (provided)" + IE_THROW() << "Provided batch size is invalid: (provided)" << batch_size << " > " << out_desc.d.N << " (expected by network)"; } @@ -944,7 +944,7 @@ void PreprocEngine::preprocessBlob(const BlobTypePtr &inBlob, MemoryBlob::Ptr &o if (algorithm == NO_RESIZE && std::get<0>(thisCall) == std::get<1>(thisCall)) { //if requested output parameters match input blob no need to do anything - THROW_IE_EXCEPTION << "No job to do in the PreProcessing ?"; + IE_THROW() << "No job to do in the PreProcessing ?"; } const Update update = needUpdate(thisCall); @@ -983,7 +983,7 @@ void PreprocEngine::preprocessWithGAPI(const Blob::Ptr &inBlob, Blob::Ptr &outBl // output is always a memory blob auto outMemoryBlob = as(outBlob); if (!outMemoryBlob) { - THROW_IE_EXCEPTION << "Unsupported network's input blob type: expected MemoryBlob"; + IE_THROW() << "Unsupported network's input blob type: expected MemoryBlob"; } // FIXME: refactor the code below. there must be a better way to handle the difference @@ -993,7 +993,7 @@ void PreprocEngine::preprocessWithGAPI(const Blob::Ptr &inBlob, Blob::Ptr &outBl case ColorFormat::NV12: { auto inNV12Blob = as(inBlob); if (!inNV12Blob) { - THROW_IE_EXCEPTION << "Unsupported input blob for color format " << in_fmt + IE_THROW() << "Unsupported input blob for color format " << in_fmt << ": expected NV12Blob"; } return preprocessBlob(inNV12Blob, outMemoryBlob, algorithm, in_fmt, out_fmt, omp_serial, @@ -1002,7 +1002,7 @@ void PreprocEngine::preprocessWithGAPI(const Blob::Ptr &inBlob, Blob::Ptr &outBl case ColorFormat::I420: { auto inI420Blob = as(inBlob); if (!inI420Blob) { - THROW_IE_EXCEPTION << "Unsupported input blob for color format " << in_fmt + IE_THROW() << "Unsupported input blob for color format " << in_fmt << ": expected I420Blob"; } return preprocessBlob(inI420Blob, outMemoryBlob, algorithm, in_fmt, out_fmt, omp_serial, @@ -1012,7 +1012,7 @@ void PreprocEngine::preprocessWithGAPI(const Blob::Ptr &inBlob, Blob::Ptr &outBl default: auto inMemoryBlob = as(inBlob); if (!inMemoryBlob) { - THROW_IE_EXCEPTION << "Unsupported input blob for color format " << in_fmt + IE_THROW() << "Unsupported input blob for color format " << in_fmt << ": expected MemoryBlob"; } return preprocessBlob(inMemoryBlob, outMemoryBlob, algorithm, in_fmt, out_fmt, omp_serial, diff --git a/inference-engine/src/preprocessing/ie_preprocess_gapi.hpp b/inference-engine/src/preprocessing/ie_preprocess_gapi.hpp index d2aaf707bfaf7a..6aaba105a6c712 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_gapi.hpp +++ b/inference-engine/src/preprocessing/ie_preprocess_gapi.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.cpp b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.cpp index 0d52c378e2efa4..72eacfdd306e02 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.cpp +++ b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -1105,6 +1105,23 @@ static void calcRowLinear(const cv::gapi::fluid::View & in, } #endif // HAVE_SSE +#ifdef HAVE_NEON + if (std::is_same::value) { + if (inSz.width >= 16 && outSz.width >= 8) { + neon::calcRowLinear_8UC1(reinterpret_cast(dst), + reinterpret_cast(src0), + reinterpret_cast(src1), + reinterpret_cast(alpha), + reinterpret_cast(clone), + reinterpret_cast(mapsx), + reinterpret_cast(beta), + reinterpret_cast(tmp), + inSz, outSz, lpi); + return; + } + } +#endif + for (int l = 0; l < lpi; l++) { constexpr static const auto unity = Mapper::unity; @@ -1223,6 +1240,23 @@ static void calcRowLinearC(const cv::gapi::fluid::View & in, } #endif // HAVE_SSE +#ifdef HAVE_NEON + if (std::is_same::value) { + if (inSz.width >= 16 && outSz.width >= 8) { + neon::calcRowLinear_8UC(dst, + reinterpret_cast(src0), + reinterpret_cast(src1), + reinterpret_cast(alpha), + reinterpret_cast(clone), + reinterpret_cast(mapsx), + reinterpret_cast(beta), + reinterpret_cast(tmp), + inSz, outSz, lpi); + return; + } + } +#endif // HAVE_NEON + auto length = out[0].get().length(); for (int l = 0; l < lpi; l++) { diff --git a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.hpp b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.hpp index 685eae4db966b8..b9f78156b868a7 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.hpp +++ b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_impl.hpp b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_impl.hpp index 5e27436ab2e0d7..26ef353d4a7943 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_impl.hpp +++ b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_impl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_simd_impl.hpp b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_simd_impl.hpp index 0af9675c95b4e0..5f21a1ed0bbb27 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_simd_impl.hpp +++ b/inference-engine/src/preprocessing/ie_preprocess_gapi_kernels_simd_impl.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/preprocessing/ie_preprocess_itt.hpp b/inference-engine/src/preprocessing/ie_preprocess_itt.hpp index 399b77c33c9869..1c042dce4b83fe 100644 --- a/inference-engine/src/preprocessing/ie_preprocess_itt.hpp +++ b/inference-engine/src/preprocessing/ie_preprocess_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/readers/CMakeLists.txt b/inference-engine/src/readers/CMakeLists.txt index d0e8b070c4b478..b8f1ff7301d201 100644 --- a/inference-engine/src/readers/CMakeLists.txt +++ b/inference-engine/src/readers/CMakeLists.txt @@ -1,6 +1,7 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # + set(TARGET_NAME inference_engine_reader_api) # Reader API interface library @@ -11,11 +12,8 @@ target_include_directories(${TARGET_NAME} INTERFACE $) file(GLOB_RECURSE reader_api_hpp "${CMAKE_CURRENT_SOURCE_DIR}/reader_api/*.hpp") -file(GLOB_RECURSE reader_api_src "${CMAKE_CURRENT_SOURCE_DIR}/reader_api/*.cpp") - -set_target_properties(${TARGET_NAME} PROPERTIES INTERFACE_SOURCES ${reader_api_src}) -add_cpplint_target(${TARGET_NAME}_cpplint FOR_SOURCES ${reader_api_hpp} ${reader_api_src}) +add_cpplint_target(${TARGET_NAME}_cpplint FOR_SOURCES ${reader_api_hpp}) add_subdirectory(ir_reader) add_subdirectory(ir_reader_v7) diff --git a/inference-engine/src/readers/ir_reader/CMakeLists.txt b/inference-engine/src/readers/ir_reader/CMakeLists.txt index 7721b7df6d9148..ce6f5ff0e93009 100644 --- a/inference-engine/src/readers/ir_reader/CMakeLists.txt +++ b/inference-engine/src/readers/ir_reader/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/readers/ir_reader/ie_ir_itt.hpp b/inference-engine/src/readers/ir_reader/ie_ir_itt.hpp index 1624aaa9ea645f..5fea99215640b0 100644 --- a/inference-engine/src/readers/ir_reader/ie_ir_itt.hpp +++ b/inference-engine/src/readers/ir_reader/ie_ir_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/readers/ir_reader/ie_ir_parser.cpp b/inference-engine/src/readers/ir_reader/ie_ir_parser.cpp index 06fa12bf8ec635..a3daa63c9da869 100644 --- a/inference-engine/src/readers/ir_reader/ie_ir_parser.cpp +++ b/inference-engine/src/readers/ir_reader/ie_ir_parser.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -29,7 +30,6 @@ #include #include "blob_factory.hpp" #include "caseless.hpp" -#include "ie_blob_stream.hpp" #include "precision_utils.h" using namespace XMLParseUtils; @@ -43,7 +43,7 @@ IRParser::IRParser(size_t version, const std::vector(exts); break; default: - THROW_IE_EXCEPTION << "Unsupported IR version: " << version; + IE_THROW() << "Unsupported IR version: " << version; } } @@ -71,7 +71,7 @@ bool getParameters(const pugi::xml_node& node, const std::string& name, std::vec std::string field; while (getline(ss, field, ',')) { if (field.empty()) - THROW_IE_EXCEPTION << "Cannot get vector of parameters! \"" << param + IE_THROW() << "Cannot get vector of parameters! \"" << param << "\" is incorrect"; std::stringstream fs(field); T val; @@ -82,11 +82,13 @@ bool getParameters(const pugi::xml_node& node, const std::string& name, std::vec } template -bool stringToType(const std::string& valStr, T& value) { +T stringToType(const std::string& valStr) { + T ret{0}; std::istringstream ss(valStr); - if (ss.eof()) return false; - ss >> value; - return !ss.fail(); + if (!ss.eof()) { + ss >> ret; + } + return ret; } class XmlDeserializer : public ngraph::AttributeVisitor { @@ -124,16 +126,12 @@ class XmlDeserializer : public ngraph::AttributeVisitor { void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { std::string val; if (!getStrAttribute(node.child("data"), name, val)) return; - double value; - stringToType(val, value); - adapter.set(value); + adapter.set(stringToType(val)); } void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { std::string val; if (!getStrAttribute(node.child("data"), name, val)) return; - int64_t value; - stringToType(val, value); - adapter.set(value); + adapter.set(stringToType(val)); } void on_adapter( @@ -227,7 +225,7 @@ XmlDeserializer::IoMap XmlDeserializer::updated_io_map(const pugi::xml_node& nod auto body_node = node.child("body"); if (body_node.empty()) { - THROW_IE_EXCEPTION << "Missing body part."; + IE_THROW() << "Missing body part."; } // Fill map: parameter/result id to parameter/result number in Function @@ -490,7 +488,7 @@ void XmlDeserializer::on_adapter(const std::string& name, ngraph::ValueAccessor< pugi::xml_node dn = node.child("data"); auto type = XMLParseUtils::GetStrAttr(node, "type"); - if (dn.empty()) THROW_IE_EXCEPTION << "No attrtibutes defined for " << type << " op!"; + if (dn.empty()) IE_THROW() << "No attrtibutes defined for " << type << " op!"; if (getStrAttribute(dn, name, value)) { auto buffer = std::make_shared(value.size()); @@ -510,10 +508,10 @@ void XmlDeserializer::on_adapter(const std::string& name, ngraph::ValueAccessor< size_t length = weights->byteSize(); if (!length) - THROW_IE_EXCEPTION << "Empty weights data in bin file or bin file cannot be found!"; - if (length < offset + size) THROW_IE_EXCEPTION << "Incorrect weights in bin file!"; + IE_THROW() << "Empty weights data in bin file or bin file cannot be found!"; + if (length < offset + size) IE_THROW() << "Incorrect weights in bin file!"; if (size < std::ceil(ngraph::shape_size(shape) * el_type.bitwidth() / 8.f)) - THROW_IE_EXCEPTION << "Attribute and shape size are inconsistent for " << type + IE_THROW() << "Attribute and shape size are inconsistent for " << type << " op!"; char* data = weights->cbuffer().as() + offset; @@ -523,7 +521,7 @@ void XmlDeserializer::on_adapter(const std::string& name, ngraph::ValueAccessor< a->set(buffer); } } else { - THROW_IE_EXCEPTION << "Error IR reading. Attribute adapter can not be found for " << name + IE_THROW() << "Error IR reading. Attribute adapter can not be found for " << name << " parameter"; } } @@ -534,13 +532,13 @@ void XmlDeserializer::on_adapter( if (!name.compare("body")) { auto body_node = node.child(name.c_str()); if (body_node.empty()) { - THROW_IE_EXCEPTION << "TensorIterator has no body."; + IE_THROW() << "TensorIterator has no body."; } ngraph_function = parse_function(node.child(name.c_str()), weights); } else if (!name.compare("net")) { ngraph_function = parse_function(node, weights); } else { - THROW_IE_EXCEPTION << "Error: not recognized adapter name: " << name << "."; + IE_THROW() << "Error: not recognized adapter name: " << name << "."; } adapter.set(ngraph_function); } @@ -573,7 +571,7 @@ std::shared_ptr XmlDeserializer::parse_function( FOREACH_CHILD(node, root.child("layers"), "layer") { auto node_param = parseGenericParams(node); if (opName.find(node_param.name) != opName.end() && node_param.type != "Result") - THROW_IE_EXCEPTION << "Invalid IR! " << node_param.name << " name is not unique!"; + IE_THROW() << "Invalid IR! " << node_param.name << " name is not unique!"; opName.insert(node_param.name); params[node_param.layerId] = {node, node_param}; if (node_param.type == "Result" || node_param.type == "Assign") { @@ -619,13 +617,13 @@ std::shared_ptr XmlDeserializer::parse_function( for (auto& e : edges[layer_id]) { auto input_node = id_to_node[e.fromLayerId]; if (!input_node) { - THROW_IE_EXCEPTION << "Attempt to access node " << e.fromLayerId + IE_THROW() << "Attempt to access node " << e.fromLayerId << " that not in graph."; } auto& p_output = params[e.fromLayerId].params; size_t const realInputPortId = p.params.getRealInputPortId(e.toPortId); if (realInputPortId >= inputs.size()) - THROW_IE_EXCEPTION << p.params.type << " layer " << p.params.name + IE_THROW() << p.params.type << " layer " << p.params.name << " with id: " << p.params.layerId << " is inconsistent!"; inputs[realInputPortId] = input_node->output(p_output.getRealOutputPortId(e.fromPortId)); @@ -639,7 +637,7 @@ std::shared_ptr XmlDeserializer::parse_function( // Temporary disabled! // for (size_t i = 0; i < p.params.outputPorts.size(); ++i) { // if (p.params.outputPorts[i].dims != node->output(i).get_shape()) { - // THROW_IE_EXCEPTION << "Shape after nGraph infer " << + // IE_THROW() << "Shape after nGraph infer " << // details::dumpVec(node->output(i).get_shape()) // << " differ from IR shapes: " << // details::dumpVec(p.params.outputPorts[i].dims); @@ -691,12 +689,12 @@ V10Parser::V10Parser::GenericLayerParams XmlDeserializer::parseGenericParams( port.portId = GetIntAttr(parentNode, "id"); FOREACH_CHILD(node, parentNode, "dim") { - size_t dim = 0; + int64_t dim = 0; const pugi::char_t* dimVal = node.child_value(); std::stringstream ss(dimVal); - if (!(ss >> dim) || dim == 0) { - THROW_IE_EXCEPTION << "dimension (" << dimVal << ") in node " << node.name() - << " must be a positive integer: at offset " + if (!(ss >> dim) || dim < 0) { + IE_THROW() << "dimension (" << dimVal << ") in node " << node.name() + << " must be a non-negative integer: at offset " << node.offset_debug(); } port.dims.push_back(dim); @@ -759,11 +757,11 @@ std::shared_ptr XmlDeserializer::createNode( // Check that inputs are correctly defined for (size_t i = 0; i < inputs.size(); i++) { if (!inputs[i].get_node()) - THROW_IE_EXCEPTION << params.type << " layer " << params.name + IE_THROW() << params.type << " layer " << params.name << " with id: " << params.layerId << " has incorrect input with index " << i << "!"; if (ngraph::element::Type_t::undefined == inputs[i].get_element_type()) - THROW_IE_EXCEPTION << params.type << " layer " << params.name + IE_THROW() << params.type << " layer " << params.name << " with id: " << params.layerId << " has undefined element type for input with index " << i << "!"; } @@ -797,7 +795,7 @@ std::shared_ptr XmlDeserializer::createNode( if (type == "MVN" || type == "ROIPooling" || type == "ReorgYolo") { opsetIt = opsets.find("opset2"); if (opsetIt == opsets.end()) { - THROW_IE_EXCEPTION << "Cannot create " << params.type << " layer " + IE_THROW() << "Cannot create " << params.type << " layer " << params.name << " id:" << params.layerId << " from unsupported opset: " << params.version; } @@ -808,7 +806,7 @@ std::shared_ptr XmlDeserializer::createNode( ngraphNode = std::shared_ptr(opset.create_insensitive(type)); if (!ngraphNode) { - THROW_IE_EXCEPTION << "Opset " << params.version + IE_THROW() << "Opset " << params.version << " doesn't contain the operation with type: " << type; } // Share Weights form constant blob @@ -826,7 +824,7 @@ std::shared_ptr XmlDeserializer::createNode( } if (!ngraphNode) { - THROW_IE_EXCEPTION << "Cannot create " << params.type << " layer " << params.name + IE_THROW() << "Cannot create " << params.type << " layer " << params.name << " id:" << params.layerId << " from unsupported opset: " << params.version; } @@ -866,12 +864,13 @@ V10Parser::V10Parser(const std::vector& exts) : _exts(exts) { opsets["opset4"] = ngraph::get_opset4(); opsets["opset5"] = ngraph::get_opset5(); opsets["opset6"] = ngraph::get_opset6(); + opsets["opset7"] = ngraph::get_opset7(); // Load custom opsets for (const auto& ext : exts) { for (const auto& it : ext->getOpSets()) { if (opsets.find(it.first) != opsets.end()) - THROW_IE_EXCEPTION << "Cannot add opset with name: " << it.first + IE_THROW() << "Cannot add opset with name: " << it.first << ". Opset with the same name already exists."; opsets[it.first] = it.second; } @@ -916,7 +915,7 @@ void V10Parser::parsePreProcess( // fallback (old format), look for the picture in the inputs InputsDataMap inputs = network.getInputsInfo(); - if (inputs.empty()) THROW_IE_EXCEPTION << "network has no input"; + if (inputs.empty()) IE_THROW() << "network has no input"; for (auto i : inputs) { if (i.second->getTensorDesc().getDims().size() == 4) { @@ -932,7 +931,7 @@ void V10Parser::parsePreProcess( } else { preProcessInput = network.getInputsInfo()[inputName]; if (!preProcessInput) - THROW_IE_EXCEPTION << "pre-process name ref '" << inputName + IE_THROW() << "pre-process name ref '" << inputName << "' refers to un-existing input"; } @@ -941,7 +940,7 @@ void V10Parser::parsePreProcess( size_t noOfChannels = 0, width = 0, height = 0; if (inputDims.size() < 2) { - THROW_IE_EXCEPTION << "network did not define input dimensions properly"; + IE_THROW() << "network did not define input dimensions properly"; } else if (inputDims.size() == 2) { // NC noOfChannels = inputDims[1]; width = inputDims[1]; @@ -965,7 +964,7 @@ void V10Parser::parsePreProcess( auto meanSegmentPrecision = GetPrecisionAttr(ppNode, "mean-precision", Precision::UNSPECIFIED); if (!meanSegmentPrecision || meanSegmentPrecision == Precision::MIXED) - THROW_IE_EXCEPTION << "mean blob defined without specifying precision."; + IE_THROW() << "mean blob defined without specifying precision."; InferenceEngine::PreProcessChannel::Ptr preProcessChannel; @@ -975,7 +974,7 @@ void V10Parser::parsePreProcess( FOREACH_CHILD(chan, ppNode, "channel") { int chanNo = GetIntAttr(chan, "id", lastChanNo + 1); if (chanNo >= static_cast(noOfChannels) || chanNo < 0) { - THROW_IE_EXCEPTION << "Pre-process channel id invalid: " << chanNo; + IE_THROW() << "Pre-process channel id invalid: " << chanNo; } lastChanNo = chanNo; preProcessChannel = pp[chanNo]; @@ -983,14 +982,14 @@ void V10Parser::parsePreProcess( auto meanNode = chan.child("mean"); if (!meanNode.empty()) { if (!meanNode.attribute("size")) { - THROW_IE_EXCEPTION << "mean should have the attribute: size"; + IE_THROW() << "mean should have the attribute: size"; } if (meanNode.attribute("size")) { idsForMeanImage.insert(chanNo); size_t size = static_cast(GetIntAttr(meanNode, "size")); size_t offset = static_cast(GetIntAttr(meanNode, "offset")); if (width * height * meanSegmentPrecision.size() != size) { - THROW_IE_EXCEPTION << "mean blob size mismatch expected input, got: " << size + IE_THROW() << "mean blob size mismatch expected input, got: " << size << " extpecting " << width << " x " << height << " x " << meanSegmentPrecision.size(); } @@ -1014,7 +1013,7 @@ void V10Parser::parsePreProcess( for (auto id : idsForMeanImage) { validMeanImageIds += std::to_string(id) + " "; } - THROW_IE_EXCEPTION << "mean is not provided for all channels\n" + IE_THROW() << "mean is not provided for all channels\n" "Provided mean image for: " << validMeanImageIds; } @@ -1028,7 +1027,7 @@ size_t V10Parser::GenericLayerParams::getRealInputPortId(size_t id) const { } ++real_id; } - THROW_IE_EXCEPTION << "Can not find input port with id " << id << " in layer " << name; + IE_THROW() << "Can not find input port with id " << id << " in layer " << name; } size_t V10Parser::GenericLayerParams::getRealOutputPortId(size_t id) const { @@ -1039,6 +1038,6 @@ size_t V10Parser::GenericLayerParams::getRealOutputPortId(size_t id) const { } ++real_id; } - THROW_IE_EXCEPTION << "Can not find output port with id " << id << " in layer " << name; + IE_THROW() << "Can not find output port with id " << id << " in layer " << name; } } // namespace InferenceEngine diff --git a/inference-engine/src/readers/ir_reader/ie_ir_reader.cpp b/inference-engine/src/readers/ir_reader/ie_ir_reader.cpp index 4a6a2eeee28e0f..9d659e1c5dba3a 100644 --- a/inference-engine/src/readers/ir_reader/ie_ir_reader.cpp +++ b/inference-engine/src/readers/ir_reader/ie_ir_reader.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,7 +39,7 @@ CNNNetwork IRReader::read(std::istream& model, const Blob::CPtr& weights, const pugi::xml_document xmlDoc; pugi::xml_parse_result res = xmlDoc.load(model); if (res.status != pugi::status_ok) { - THROW_IE_EXCEPTION << res.description() << "at offset " << res.offset; + IE_THROW() << res.description() << "at offset " << res.offset; } pugi::xml_node root = xmlDoc.document_element(); @@ -48,12 +48,6 @@ CNNNetwork IRReader::read(std::istream& model, const Blob::CPtr& weights, const return CNNNetwork(parser.parse(root, weights)); } -INFERENCE_PLUGIN_API(StatusCode) InferenceEngine::CreateReader(IReader*& reader, ResponseDesc *resp) noexcept { - try { - reader = new IRReader(); - return OK; - } - catch (std::exception &) { - return GENERAL_ERROR; - } +INFERENCE_PLUGIN_API(void) InferenceEngine::CreateReader(std::shared_ptr& reader) { + reader = std::make_shared(); } diff --git a/inference-engine/src/readers/ir_reader/ie_ir_reader.hpp b/inference-engine/src/readers/ir_reader/ie_ir_reader.hpp index 88f6eb2fd96e1b..1a2bd2ad2ca0c2 100644 --- a/inference-engine/src/readers/ir_reader/ie_ir_reader.hpp +++ b/inference-engine/src/readers/ir_reader/ie_ir_reader.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,9 +32,6 @@ namespace InferenceEngine { */ class IRReader: public IReader { public: - void Release() noexcept override { - delete this; - } /** * @brief Checks that reader supports format of the model * @param model stream with model diff --git a/inference-engine/src/readers/ir_reader/ie_ir_version.hpp b/inference-engine/src/readers/ir_reader/ie_ir_version.hpp index 610be4942e65c4..bb319155b199c2 100644 --- a/inference-engine/src/readers/ir_reader/ie_ir_version.hpp +++ b/inference-engine/src/readers/ir_reader/ie_ir_version.hpp @@ -1,5 +1,4 @@ - -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -45,4 +44,4 @@ size_t GetIRVersion(std::istream& model) { } } // namespace details -} // namespace InferenceEngine \ No newline at end of file +} // namespace InferenceEngine diff --git a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt index 20788d11b6d543..a9323fefaa12d7 100644 --- a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt +++ b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/readers/ir_reader_v7/ie_blob_proxy.hpp b/inference-engine/src/readers/ir_reader_v7/ie_blob_proxy.hpp index 4c2d42476d0928..d69a403395902d 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_blob_proxy.hpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_blob_proxy.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -128,7 +128,7 @@ class TBlobProxy : public TBlob { */ void checkWindow() { if (realObject->size() * realObject->element_size() < base::size() * base::element_size() + offset) { - THROW_IE_EXCEPTION << "cannot create proxy, offsetInBytes=" << offset + IE_THROW() << "cannot create proxy, offsetInBytes=" << offset << ", sizeInBytes=" << base::size() * base::element_size() << ", out of original object size=" << realObject->size() * realObject->element_size(); } diff --git a/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.cpp b/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.cpp index 6ca81888bf3dac..a839d2035b32e7 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.cpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.cpp @@ -1,11 +1,10 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include #include -#include #include #include @@ -36,7 +35,7 @@ StatusCode CNNNetReaderImpl::SetWeights(const TBlob::Ptr& weights, Resp if (_version < 10) { _parser->SetWeights(weights); } - } catch (const InferenceEngineException& iee) { + } catch (const Exception& iee) { xmlDoc.reset(); return DescriptionBuffer(desc) << iee.what(); } @@ -79,10 +78,10 @@ void readAllFile(const std::string& string_file_name, void* buffer, size_t maxSi #endif inputFile.open(file_name, std::ios::binary | std::ios::in); - if (!inputFile.is_open()) THROW_IE_EXCEPTION << "cannot open file " << string_file_name; + if (!inputFile.is_open()) IE_THROW() << "cannot open file " << string_file_name; if (!inputFile.read(reinterpret_cast(buffer), maxSize)) { inputFile.close(); - THROW_IE_EXCEPTION << "cannot read " << maxSize << " bytes from file " << string_file_name; + IE_THROW() << "cannot read " << maxSize << " bytes from file " << string_file_name; } inputFile.close(); @@ -110,7 +109,7 @@ StatusCode CNNNetReaderImpl::ReadWeights(const char* filepath, ResponseDesc* res weightsPtr->allocate(); readAllFile(filepath, weightsPtr->buffer(), ulFileSize); return SetWeights(weightsPtr, resp); - } catch (const InferenceEngineException& ex) { + } catch (const Exception& ex) { return DescriptionBuffer(resp) << ex.what(); } } @@ -144,7 +143,7 @@ StatusCode CNNNetReaderImpl::ReadNetwork(const pugi::xml_node& const_root, Respo try { pugi::xml_node root = *const_cast(&const_root); _version = GetFileVersion(root); - if (_version < 2) THROW_IE_EXCEPTION << "deprecated IR version: " << _version; + if (_version < 2) IE_THROW() << "deprecated IR version: " << _version; if (_version < 10) { _parser = parserCreator->create(_version); @@ -154,12 +153,12 @@ StatusCode CNNNetReaderImpl::ReadNetwork(const pugi::xml_node& const_root, Respo network = local_network; parseSuccess = true; } else { - THROW_IE_EXCEPTION << "cannot parse future versions: " << _version; + IE_THROW() << "cannot parse future versions: " << _version; } } catch (const std::string& err) { parseSuccess = false; return DescriptionBuffer(desc) << err; - } catch (const InferenceEngineException& e) { + } catch (const Exception& e) { description = e.what(); parseSuccess = false; return DescriptionBuffer(desc) << e.what(); diff --git a/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.h b/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.h index c26cc328fed878..d96a8da038b2f4 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.h +++ b/inference-engine/src/readers/ir_reader_v7/ie_cnn_net_reader_impl.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/readers/ir_reader_v7/ie_format_parser.cpp b/inference-engine/src/readers/ir_reader_v7/ie_format_parser.cpp index 90016b9790c205..778c1e058a2ce9 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_format_parser.cpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_format_parser.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -74,7 +74,7 @@ void FormatParser::ParseGenericParams(pugi::xml_node& node, LayerParseParameters if (!preStr.empty()) prms.precision = Precision::FromStr(preStr); if (prms.precision == Precision::MIXED) { - THROW_IE_EXCEPTION << "Layer precision must not be MIXED, at layer name: " << prms.name + IE_THROW() << "Layer precision must not be MIXED, at layer name: " << prms.name << ", offset: " << node.offset_debug(); } @@ -133,7 +133,7 @@ void FormatParser::SetLayerInput(CNNNetworkImpl& network, const std::string& dat int inputPort) { DataPtr& dataPtr = _portsToData[dataId]; if (!dataPtr) - THROW_IE_EXCEPTION << "in Layer " << targetLayer->name + IE_THROW() << "in Layer " << targetLayer->name << ": trying to connect an edge to non existing output port: " << dataId; getInputTo(dataPtr)[targetLayer->name] = targetLayer; @@ -149,13 +149,13 @@ void FormatParser::SetLayerInput(CNNNetworkImpl& network, const std::string& dat } else { // TODO: Make a correct exception - /*THROW_IE_EXCEPTION << "in Layer " << targetLayer->name + /*IE_THROW() << "in Layer " << targetLayer->name << ": trying to connect an edge to mismatch precision of output port: " << dataPtr->getName();*/ } } if (!equal(parseInfo.inputPorts[i].dims, dataPtr->getDims())) - THROW_IE_EXCEPTION << "in Layer " << targetLayer->name + IE_THROW() << "in Layer " << targetLayer->name << ": trying to connect an edge to mismatch dimensions of output port: " << dataPtr->getName() << " dims input: " << dumpVec(parseInfo.inputPorts[i].dims) << " dims output: " << dumpVec(dataPtr->getDims()); @@ -164,7 +164,7 @@ void FormatParser::SetLayerInput(CNNNetworkImpl& network, const std::string& dat _portsToData[insId] = dataPtr; return; } - THROW_IE_EXCEPTION << "input port " << inputPort << " does not exist in layer " << targetLayer->name; + IE_THROW() << "input port " << inputPort << " does not exist in layer " << targetLayer->name; } FormatParser::FormatParser(size_t version): _version(version) { @@ -291,7 +291,7 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { ParseGenericParams(node, lprms); CNNLayer::Ptr layer = CreateLayer(node, lprms); - if (!layer) THROW_IE_EXCEPTION << "Don't know how to create Layer type: " << lprms.prms.type; + if (!layer) IE_THROW() << "Don't know how to create Layer type: " << lprms.prms.type; layersParseInfo[layer->name] = lprms; _network->addLayer(layer); @@ -314,7 +314,7 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { _portsToData[outId] = ptr; if (getCreatorLayer(ptr).lock()) - THROW_IE_EXCEPTION << "two layers set to the same output [" << outName << "], conflict at offset " + IE_THROW() << "two layers set to the same output [" << outName << "], conflict at offset " << node.offset_debug(); getCreatorLayer(ptr) = layer; @@ -335,7 +335,7 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { const auto dataId = gen_id(fromLayer, fromPort); auto targetLayer = layerById[toLayer]; if (!targetLayer) - THROW_IE_EXCEPTION << "Layer ID " << toLayer << " was not found while connecting edge at offset " + IE_THROW() << "Layer ID " << toLayer << " was not found while connecting edge at offset " << _ec.offset_debug(); SetLayerInput(*_network, dataId, targetLayer, toPort); @@ -358,7 +358,7 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { // Keep all data from InputLayers for (auto inLayer : inputLayers) { if (inLayer->outData.size() != 1) - THROW_IE_EXCEPTION << "Input layer must have 1 output. " + IE_THROW() << "Input layer must have 1 output. " "See documentation for details."; keep_input_info(inLayer->outData[0]); } @@ -406,7 +406,7 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { } } - if (!_network->allLayers().size()) THROW_IE_EXCEPTION << "Incorrect model! Network doesn't contain layers."; + if (!_network->allLayers().size()) IE_THROW() << "Incorrect model! Network doesn't contain layers."; size_t inputLayersNum(0); CaselessEq cmp; @@ -416,7 +416,7 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { } if (!inputLayersNum && !cmp(root.name(), "body")) - THROW_IE_EXCEPTION << "Incorrect model! Network doesn't contain input layers."; + IE_THROW() << "Incorrect model! Network doesn't contain input layers."; // check all input ports are occupied for (const auto& kvp : _network->allLayers()) { @@ -424,11 +424,11 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { const LayerParseParameters& parseInfo = layersParseInfo[layer->name]; size_t inSize = layer->insData.size(); if (inSize != parseInfo.inputPorts.size()) - THROW_IE_EXCEPTION << "Layer " << layer->name << " does not have any edge connected to it"; + IE_THROW() << "Layer " << layer->name << " does not have any edge connected to it"; for (unsigned i = 0; i < inSize; i++) { if (!layer->insData[i].lock()) { - THROW_IE_EXCEPTION << "Layer " << layer->name.c_str() << " input port " + IE_THROW() << "Layer " << layer->name.c_str() << " input port " << parseInfo.inputPorts[i].portId << " is not connected to any data"; } } @@ -457,7 +457,7 @@ CNNNetworkImplPtr FormatParser::Parse(pugi::xml_node& root) { template inline Blob::Ptr GetTypedBlobFromSegment(const TBlob::Ptr& weights, const WeightSegment& segment) { if (segment.getEnd() > weights->size()) - THROW_IE_EXCEPTION << "segment size(" << segment.getEnd() << ") exceeds given buffer limits(" << weights->size() <<"). Please, validate weights file"; + IE_THROW() << "segment size(" << segment.getEnd() << ") exceeds given buffer limits(" << weights->size() <<"). Please, validate weights file"; size_t noOfElement = segment.size / sizeof(BlobType); // RanC: TODO: IR does not provide me with weight slayout. @@ -471,7 +471,7 @@ inline Blob::Ptr GetTypedBlobFromSegment(const TBlob::Ptr& weights, con /* this validation is not reduntant I have no prior knowledge of the weights anymore... if (pbpWeights->byteSize() != lprms.weights.size) - THROW_IE_EXCEPTION << "bytes size weights for " << pWL->name << " mismatch, expecting " + IE_THROW() << "bytes size weights for " << pWL->name << " mismatch, expecting " << pbpWeights->byteSize() << " bytes which are " << pbpWeights->size() << " elements"; */ return binBlob; @@ -492,7 +492,7 @@ Blob::Ptr FormatParser::GetBlobFromSegment(const TBlob::Ptr& weights, c } else if (segment.precision == Precision::I8 || segment.precision == Precision::BIN) { return GetTypedBlobFromSegment(weights, segment); } else { - THROW_IE_EXCEPTION << "precision " << segment.precision << " is not supported..."; + IE_THROW() << "precision " << segment.precision << " is not supported..."; } } @@ -504,7 +504,7 @@ void FormatParser::SetWeights(const TBlob::Ptr& weights) { auto fit = layersParseInfo.find(kvp.second->name); // todo: may check that earlier - while parsing... if (fit == layersParseInfo.end()) - THROW_IE_EXCEPTION << "Internal Error: ParseInfo for " << kvp.second->name << " are missing..."; + IE_THROW() << "Internal Error: ParseInfo for " << kvp.second->name << " are missing..."; auto& lprms = fit->second; WeightableLayer* pWL = dynamic_cast(kvp.second.get()); @@ -513,7 +513,7 @@ void FormatParser::SetWeights(const TBlob::Ptr& weights) { if (lprms.prms.type == "BinaryConvolution") { auto segment = lprms.blobs["weights"]; if (segment.getEnd() > weights->size()) - THROW_IE_EXCEPTION << "segment exceeds given buffer limits. Please, validate weights file"; + IE_THROW() << "segment exceeds given buffer limits. Please, validate weights file"; size_t noOfElement = segment.size; SizeVector w_dims({noOfElement}); typename TBlobProxy::Ptr binBlob( @@ -547,7 +547,7 @@ void FormatParser::SetWeights(const TBlob::Ptr& weights) { const std::string& inputName = kvp.first; auto& segments = kvp.second; auto inputInfo = _network->getInput(inputName); - if (!inputInfo) THROW_IE_EXCEPTION << "Internal error: missing input name " << inputName; + if (!inputInfo) IE_THROW() << "Internal error: missing input name " << inputName; auto dims = inputInfo->getTensorDesc().getDims(); size_t width = 0ul, height = 0ul; @@ -562,7 +562,7 @@ void FormatParser::SetWeights(const TBlob::Ptr& weights) { height = dims.at(3); width = dims.at(4); } else { - THROW_IE_EXCEPTION << inputName << " has unsupported layout " << inputInfo->getTensorDesc().getLayout(); + IE_THROW() << inputName << " has unsupported layout " << inputInfo->getTensorDesc().getLayout(); } PreProcessInfo& pp = inputInfo->getPreProcess(); @@ -583,7 +583,7 @@ void FormatParser::ParseDims(SizeVector& dims, const pugi::xml_node& parentNode) const pugi::char_t* dimVal = node.child_value(); stringstream ss(dimVal); if (!(ss >> dim) || dim == 0) { - THROW_IE_EXCEPTION << "dimension (" << dimVal << ") in node " << node.name() + IE_THROW() << "dimension (" << dimVal << ") in node " << node.name() << " must be a positive integer: at offset " << node.offset_debug(); } dims.push_back(dim); @@ -594,7 +594,7 @@ const DataPtr& FormatParser::GetDataBy(int layer_id, int port_id) const { const auto id = gen_id(layer_id, port_id); const auto& found = _portsToData.find(id); if (found == _portsToData.end()) - THROW_IE_EXCEPTION << "No data found for layer_id=" << layer_id << " port_id=" << port_id; + IE_THROW() << "No data found for layer_id=" << layer_id << " port_id=" << port_id; return found->second; } @@ -625,7 +625,7 @@ void FormatParser::ParsePreProcess(pugi::xml_node& root) { InputsDataMap inputs; _network->getInputsInfo(inputs); - if (inputs.empty()) THROW_IE_EXCEPTION << "network has no input"; + if (inputs.empty()) IE_THROW() << "network has no input"; for (auto i : inputs) { if (i.second->getTensorDesc().getDims().size() == 4) { @@ -641,7 +641,7 @@ void FormatParser::ParsePreProcess(pugi::xml_node& root) { } else { preProcessInput = _network->getInput(inputName); if (!preProcessInput) - THROW_IE_EXCEPTION << "pre-process name ref '" << inputName << "' refers to un-existing input"; + IE_THROW() << "pre-process name ref '" << inputName << "' refers to un-existing input"; } // dims vector without batch size @@ -649,7 +649,7 @@ void FormatParser::ParsePreProcess(pugi::xml_node& root) { size_t noOfChannels = 0, width = 0, height = 0; if (inputDims.size() < 2) { - THROW_IE_EXCEPTION << "network did not define input dimensions properly"; + IE_THROW() << "network did not define input dimensions properly"; } else if (inputDims.size() == 2) { // NC noOfChannels = inputDims[1]; width = inputDims[1]; @@ -686,7 +686,7 @@ void FormatParser::ParsePreProcess(pugi::xml_node& root) { FOREACH_CHILD(chan, ppNode, "channel") { int chanNo = GetIntAttr(chan, "id", lastChanNo + 1); if (chanNo >= static_cast(noOfChannels) || chanNo < 0) { - THROW_IE_EXCEPTION << "Pre-process channel id invalid: " << chanNo; + IE_THROW() << "Pre-process channel id invalid: " << chanNo; } lastChanNo = chanNo; preProcessChannel = pp[chanNo]; @@ -695,7 +695,7 @@ void FormatParser::ParsePreProcess(pugi::xml_node& root) { auto meanNode = chan.child("mean"); if (!meanNode.empty()) { if (!meanNode.attribute("value") && (!meanNode.attribute("size"))) { - THROW_IE_EXCEPTION << "mean should have at least one of the following attribute: value, size"; + IE_THROW() << "mean should have at least one of the following attribute: value, size"; } if (meanNode.attribute("value")) { preProcessChannel->meanValue = GetFloatAttr(meanNode, "value"); @@ -707,12 +707,12 @@ void FormatParser::ParsePreProcess(pugi::xml_node& root) { preProcessSegment.start = static_cast(GetIntAttr(meanNode, "offset")); preProcessSegment.precision = meanSegmentPrecision; if (width * height * meanSegmentPrecision.size() != preProcessSegment.size) { - THROW_IE_EXCEPTION << "mean blob size mismatch expected input, got: " << preProcessSegment.size + IE_THROW() << "mean blob size mismatch expected input, got: " << preProcessSegment.size << " extpecting " << width << " x " << height << " x " << meanSegmentPrecision.size(); } if (!meanSegmentPrecision || meanSegmentPrecision == Precision::MIXED) - THROW_IE_EXCEPTION << "mean blob defined without specifying precision."; + IE_THROW() << "mean blob defined without specifying precision."; } } auto scaleNode = chan.child("scale"); @@ -736,7 +736,7 @@ void FormatParser::ParsePreProcess(pugi::xml_node& root) { for (auto id : idsForMeanImage) { validMeanImageIds += std::to_string(id) + " "; } - THROW_IE_EXCEPTION << "mean is not provided for all channels\n" + IE_THROW() << "mean is not provided for all channels\n" "Provided mean values for : " << validMeanValuesIds << "\n" diff --git a/inference-engine/src/readers/ir_reader_v7/ie_format_parser.h b/inference-engine/src/readers/ir_reader_v7/ie_format_parser.h index dbe0344d25c65d..f2a524d5805842 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_format_parser.h +++ b/inference-engine/src/readers/ir_reader_v7/ie_format_parser.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/readers/ir_reader_v7/ie_ir_itt.hpp b/inference-engine/src/readers/ir_reader_v7/ie_ir_itt.hpp index dccb2ab604759e..4fab3765c6236b 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_ir_itt.hpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_ir_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/readers/ir_reader_v7/ie_ir_parser.cpp b/inference-engine/src/readers/ir_reader_v7/ie_ir_parser.cpp index 5bd95e6e32d3b4..d4faa5ba1f94fd 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_ir_parser.cpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_ir_parser.cpp @@ -1,10 +1,9 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "ie_reader.hpp" #include "ie_ir_parser.hpp" -#include "ie_blob_stream.hpp" #include "ie_cnn_net_reader_impl.h" using namespace InferenceEngine; @@ -15,7 +14,7 @@ IRParser::IRParser(size_t version, const std::vector(); return; } else { - THROW_IE_EXCEPTION << "Unsupported IR version: " << version; + IE_THROW() << "Unsupported IR version: " << version; } } @@ -41,7 +40,7 @@ std::shared_ptr CNNParser::parse(const pugi::xml_node& root, const ResponseDesc resp; StatusCode ret = reader.ReadNetwork(root, &resp); if (ret != OK) - THROW_IE_EXCEPTION << resp.msg; + IE_THROW() << resp.msg; TBlob::Ptr weightsPtr; @@ -53,6 +52,6 @@ std::shared_ptr CNNParser::parse(const pugi::xml_node& root, const } ret = reader.SetWeights(weightsPtr, &resp); if (ret != OK) - THROW_IE_EXCEPTION << resp.msg; + IE_THROW() << resp.msg; return reader.getNetwork(); } diff --git a/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.cpp b/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.cpp index 961407d1b257f3..95d4046288b7bc 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.cpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,7 +20,7 @@ IE_SUPPRESS_DEPRECATED_START CNNLayer::Ptr ActivationLayerCreator::CreateLayer(pugi::xml_node& node, LayerParseParameters& layerParsePrms) { pugi::xml_node dn = GetChild(node, {"data", "activation_data"}, false); if (dn.empty()) { - THROW_IE_EXCEPTION << "Activation layer has no data node"; + IE_THROW() << "Activation layer has no data node"; } std::string type; @@ -28,7 +28,7 @@ CNNLayer::Ptr ActivationLayerCreator::CreateLayer(pugi::xml_node& node, LayerPar pugi::xml_attribute attr = *ait; if (CaselessEq()("type", attr.name())) { if (!type.empty()) { - THROW_IE_EXCEPTION << "Activation layer has multiple types"; + IE_THROW() << "Activation layer has multiple types"; } type = attr.value(); } @@ -50,7 +50,7 @@ CNNLayer::Ptr ActivationLayerCreator::CreateLayer(pugi::xml_node& node, LayerPar auto activationBuilder = activationCreators.find(type); if (activationBuilder == activationCreators.end()) { auto activationCreator = std::make_shared>(type); - if (!activationCreator) THROW_IE_EXCEPTION << "Cannot create activation layer with type " << type; + if (!activationCreator) IE_THROW() << "Cannot create activation layer with type " << type; activation = activationCreator->CreateLayer(node, layerParsePrms); activation->type = type; @@ -178,7 +178,7 @@ CNNLayer::Ptr TILayerCreator::CreateLayer(pugi::xml_node& node, LayerParseParame std::string ti_name = node.attribute("name").as_string(); auto body = node.child("body"); - if (body.empty()) THROW_IE_EXCEPTION << "TensorIterator " << ti_name << " has no body"; + if (body.empty()) IE_THROW() << "TensorIterator " << ti_name << " has no body"; auto all_inputs = allRequiredInputs(node); auto all_outputs = allRequiredOutputs(node); diff --git a/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.h b/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.h index 665d656ddbc3c1..b738c54b401d4a 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.h +++ b/inference-engine/src/readers/ir_reader_v7/ie_layer_parsers.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,7 +20,7 @@ inline pugi::xml_node GetChild(const pugi::xml_node& node, std::vector Tags at offset :" << node.offset_debug(); return pugi::xml_node(); } @@ -65,7 +65,7 @@ class LayerCreator : public BaseCreator { if (std::is_same::value) { auto crop_res = std::dynamic_pointer_cast(res); if (!crop_res) { - THROW_IE_EXCEPTION << "Crop layer is nullptr"; + IE_THROW() << "Crop layer is nullptr"; } std::string axisStr, offsetStr, dimStr; FOREACH_CHILD(_cn, dn, "crop") { diff --git a/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.cpp b/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.cpp index acd7b825d29e38..5703b5f95ad8e5 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.cpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -7,7 +7,6 @@ #include #include -#include
#include #include #include @@ -42,8 +41,8 @@ void details::validateLayer(const CNNLayer * layer) { InOutDims shapes; getInOutShapes(layer, shapes); validator->checkShapes(layer, shapes.inDims); - } catch (const InferenceEngineException& ie_e) { - THROW_IE_EXCEPTION << "Error of validate layer: " << layer->name << " with type: " << layer->type << ". " + } catch (const Exception& ie_e) { + IE_THROW() << "Error of validate layer: " << layer->name << " with type: " << layer->type << ". " << ie_e.what(); } } @@ -69,7 +68,7 @@ void checkWeightable(const std::map& blobs, const vector } } if (!shape_was_found) - THROW_IE_EXCEPTION << "Number of inputs (" << inShapes.size() << ") is not equal to expected ones (1)"; + IE_THROW() << "Number of inputs (" << inShapes.size() << ") is not equal to expected ones (1)"; SizeVector firstInputShape = inShapes[0]; size_t inputSize = firstInputShape.size(); @@ -81,11 +80,11 @@ void checkWeightable(const std::map& blobs, const vector } } if (!isOK) { - THROW_IE_EXCEPTION << "Input shape " << details::dumpVec(firstInputShape) + IE_THROW() << "Input shape " << details::dumpVec(firstInputShape) << " has unexpected size, supported sizes: " << details::dumpVec(numDims); } - if (firstInputShape.empty()) THROW_IE_EXCEPTION << "Input shape can't be empty"; + if (firstInputShape.empty()) IE_THROW() << "Input shape can't be empty"; size_t IC, OC; std::vector kernel; @@ -103,10 +102,10 @@ void checkWeightable(const std::map& blobs, const vector auto it = blobs.find("weights"); if (it != blobs - .end()) { // TODO: return with fixing shape infer tests: THROW_IE_EXCEPTION << "Invalid blobs: no weights"; + .end()) { // TODO: return with fixing shape infer tests: IE_THROW() << "Invalid blobs: no weights"; auto weights = it->second; if (weights == nullptr || weights->getTensorDesc().getDims().empty()) - THROW_IE_EXCEPTION << "Weights can't be empty"; + IE_THROW() << "Weights can't be empty"; auto weightsSize = details::product(weights->getTensorDesc().getDims()); size_t expectedWeightsSize = OC * IC; @@ -120,7 +119,7 @@ void checkWeightable(const std::map& blobs, const vector if (!ker_str.empty()) ker_str += "x"; ker_str += std::to_string(kernel[i]); } - THROW_IE_EXCEPTION << "New shapes " << details::dumpVec(firstInputShape) << " make Kernels(" << ker_str + IE_THROW() << "New shapes " << details::dumpVec(firstInputShape) << " make Kernels(" << ker_str << "), Channels(" << IC << "), Output depth(" << OC << "), Groups(" << params._groups << ") not matching weights size: " << expectedWeightsSize << " vs " << weightsSize; } @@ -130,10 +129,10 @@ void checkWeightable(const std::map& blobs, const vector if (it != blobs.end()) { auto biases = it->second; if (biases == nullptr || biases->getTensorDesc().getDims().empty()) - THROW_IE_EXCEPTION << "Biases can't be empty"; + IE_THROW() << "Biases can't be empty"; auto biasesSize = details::product(biases->getTensorDesc().getDims()); if (OC != biasesSize) { - THROW_IE_EXCEPTION << "Number of outputs (" << OC << ") don't match biases size: " << biasesSize; + IE_THROW() << "Number of outputs (" << OC << ") don't match biases size: " << biasesSize; } } } @@ -148,11 +147,11 @@ void checkDeformableConv(const DeformableConvolutionLayer* deformableConvLayer, SizeVector transInputShape = inShapes[1]; - if (transInputShape.empty()) THROW_IE_EXCEPTION << "Trans input shape can't be empty"; + if (transInputShape.empty()) IE_THROW() << "Trans input shape can't be empty"; size_t TC = transInputShape[1]; if (TC != deformableConvLayer->_deformable_group * 2 * krn[0] * krn[1]) - THROW_IE_EXCEPTION << "Failed with invalid shapes: trans input channel dimension is invalid. Actual value is: " + IE_THROW() << "Failed with invalid shapes: trans input channel dimension is invalid. Actual value is: " << TC << ". Expected value: " << deformableConvLayer->_deformable_group * 2 * krn[0] * krn[1]; } @@ -160,11 +159,11 @@ void checkDeformableConv(const DeformableConvolutionLayer* deformableConvLayer, void checkDims(const std::vector& shapes, const vector& expected_shape_size) { for (auto i : shapes) { if (i.empty()) { - THROW_IE_EXCEPTION << " Failed with invalid shapes: dimension is empty"; + IE_THROW() << " Failed with invalid shapes: dimension is empty"; } auto iter = std::find(expected_shape_size.begin(), expected_shape_size.end(), i.size()); if (iter == expected_shape_size.end()) { - THROW_IE_EXCEPTION << " Failed with invalid shapes: dimension is invalid"; + IE_THROW() << " Failed with invalid shapes: dimension is invalid"; } } } @@ -178,7 +177,7 @@ void checkNumOfInput(const std::vector& inShapes, const vector(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of FullyConnectedLayer class"; + IE_THROW() << "Layer is not instance of FullyConnectedLayer class"; } unsigned int _out_num = casted->GetParamAsUInt("out-size"); (void)_out_num; @@ -209,7 +208,7 @@ void FullyConnectedValidator::checkParams(const CNNLayer* layer) { void FullyConnectedValidator::checkCorrespondence(const CNNLayer* layer, const std::map& blobs, const vector& inShapes) const { const auto casted = dynamic_cast(layer); - if (!casted) THROW_IE_EXCEPTION << "Layer is not instance of FullyConnected layer class"; + if (!casted) IE_THROW() << "Layer is not instance of FullyConnected layer class"; checkWeightable(blobs, inShapes, {casted->_out_num, true, 1}, {2, 4, 5}); } @@ -222,10 +221,10 @@ void FullyConnectedValidator::checkShapes(const CNNLayer* layer, const std::vect void CropValidator::checkParams(const CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of CropLayer class"; + IE_THROW() << "Layer is not instance of CropLayer class"; } if (casted->axis.size() != casted->offset.size()) { - THROW_IE_EXCEPTION << "Incorrect format of the Crop layer: number of axis doesn't match number of offset - (" + IE_THROW() << "Incorrect format of the Crop layer: number of axis doesn't match number of offset - (" << casted->axis.size() << " vs. " << casted->offset.size() << ")"; } } @@ -235,7 +234,7 @@ CropValidator::CropValidator(const std::string& _type): LayerValidator(_type) {} void CropValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of CropLayer class"; + IE_THROW() << "Layer is not instance of CropLayer class"; } size_t numInputs = inShapes.size(); checkNumOfInput(inShapes, {1, 2}); @@ -246,29 +245,29 @@ void CropValidator::checkShapes(const CNNLayer* layer, const vector& int axis = casted->axis[i]; int offset = casted->offset[i]; if (static_cast(shapeSize) <= axis) - THROW_IE_EXCEPTION << "Crop axis(" << casted->axis[i] + IE_THROW() << "Crop axis(" << casted->axis[i] << ") should be less the number of dimensions of first input (" << firstShape.size() << ")"; if (numInputs == 2) { if (casted->params.find("crop_begin") != casted->params.end()) { - THROW_IE_EXCEPTION << "Incorrect format of the Crop layer: `crop_begin` and `crop_end` attributes are " + IE_THROW() << "Incorrect format of the Crop layer: `crop_begin` and `crop_end` attributes are " "valid for single input only"; } auto secondShape = inShapes[1]; if (static_cast(secondShape.size()) <= axis) - THROW_IE_EXCEPTION << "Crop axis(" << axis + IE_THROW() << "Crop axis(" << axis << ") should be less the number of dimensions of second input (" << secondShape.size() << ")"; size_t newSize = secondShape[axis]; if (firstShape[axis] < static_cast(offset + newSize)) { - THROW_IE_EXCEPTION << "Incorrect crop data! Offset(" << offset << ") + result size of output(" + IE_THROW() << "Incorrect crop data! Offset(" << offset << ") + result size of output(" << newSize << ") should be less then input size(" << firstShape[axis] << ") for axis(" << axis << ")"; } } else if (!casted->dim.empty()) { int dim = casted->dim[i]; if (firstShape[axis] < (static_cast(offset) + dim)) { - THROW_IE_EXCEPTION << "Incorrect crop data! Offset(" << offset << ") + result size of output(" << dim + IE_THROW() << "Incorrect crop data! Offset(" << offset << ") + result size of output(" << dim << ") should be less then input size(" << firstShape[axis] << ") for axis(" << axis << ")"; } @@ -281,7 +280,7 @@ ConvolutionValidator::ConvolutionValidator(const std::string& _type): LayerValid void ConvolutionValidator::checkParams(const CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ConvolutionLayer class"; + IE_THROW() << "Layer is not instance of ConvolutionLayer class"; } casted->GetParamAsUInt("output"); @@ -314,7 +313,7 @@ void ConvolutionValidator::checkParams(const CNNLayer* layer) { void ConvolutionValidator::checkCorrespondence(const CNNLayer* layer, const std::map& blobs, const vector& inShapes) const { auto convLayer = dynamic_cast(layer); - if (!convLayer) THROW_IE_EXCEPTION << "Layer is not instance of Convolution layer class"; + if (!convLayer) IE_THROW() << "Layer is not instance of Convolution layer class"; std::vector krn; for (size_t i = 0; i < convLayer->_kernel.size(); i++) @@ -329,7 +328,7 @@ void ConvolutionValidator::checkShapes(const CNNLayer* layer, const std::vector< void DeconvolutionValidator::checkParams(const CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ConvolutionLayer class"; + IE_THROW() << "Layer is not instance of ConvolutionLayer class"; } casted->GetParamAsUInt("output"); @@ -364,7 +363,7 @@ DeconvolutionValidator::DeconvolutionValidator(const std::string& _type): Convol void DeconvolutionValidator::checkCorrespondence(const CNNLayer* layer, const std::map& blobs, const vector& inShapes) const { auto deconv_layer = dynamic_cast(layer); - if (!deconv_layer) THROW_IE_EXCEPTION << "Layer is not instance of Deconvolution layer class"; + if (!deconv_layer) IE_THROW() << "Layer is not instance of Deconvolution layer class"; std::vector krn; for (size_t i = 0; i < deconv_layer->_kernel.size(); i++) @@ -379,7 +378,7 @@ void DeconvolutionValidator::checkShapes(const CNNLayer* layer, const std::vecto void DeformableConvolutionValidator::checkParams(const CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of DeformableConvolutionLayer class"; + IE_THROW() << "Layer is not instance of DeformableConvolutionLayer class"; } casted->GetParamAsUInt("output"); @@ -402,7 +401,7 @@ void DeformableConvolutionValidator::checkCorrespondence(const CNNLayer* layer, const std::map& blobs, const vector& inShapes) const { auto deformable_conv_layer = dynamic_cast(layer); - if (!deformable_conv_layer) THROW_IE_EXCEPTION << "Layer is not instance of DeformableConvolutionLayer class"; + if (!deformable_conv_layer) IE_THROW() << "Layer is not instance of DeformableConvolutionLayer class"; checkDeformableConv(deformable_conv_layer, blobs, inShapes); } @@ -424,11 +423,11 @@ void PoolingValidator::checkShapes(const CNNLayer* layer, const std::vector(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of BatchNormalizationLayer class"; + IE_THROW() << "Layer is not instance of BatchNormalizationLayer class"; } float epsilon = casted->GetParamAsFloat("epsilon"); if (epsilon < 0) { - THROW_IE_EXCEPTION << "The value of BatchNormalization layer epsilon parameter is invalid"; + IE_THROW() << "The value of BatchNormalization layer epsilon parameter is invalid"; } } @@ -471,12 +470,12 @@ void ScaleShiftValidator::checkShapes(const CNNLayer* layer, const std::vector(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of TileLayer class"; + IE_THROW() << "Layer is not instance of TileLayer class"; } int axis = casted->GetParamAsInt("axis", -1); int tiles = casted->GetParamAsInt("tiles", -1); if (axis < 0 && tiles < 0) { - THROW_IE_EXCEPTION << "The value of Tile layer parameters is invalid"; + IE_THROW() << "The value of Tile layer parameters is invalid"; } } @@ -490,27 +489,27 @@ ReshapeValidator::ReshapeValidator(const std::string& _type): LayerValidator(_ty void ReshapeValidator::checkParams(const CNNLayer* layer) { auto casted = dynamic_cast(layer); - if (!casted) THROW_IE_EXCEPTION << "Layer is not instance of ReshapeLayer class"; + if (!casted) IE_THROW() << "Layer is not instance of ReshapeLayer class"; size_t num = 0; for (int dim : casted->shape) { if (dim < -1) - THROW_IE_EXCEPTION << "Invalid value of Reshape mask (dim attribute):" << dim + IE_THROW() << "Invalid value of Reshape mask (dim attribute):" << dim << ". Supported values: 0, -1, >0"; if (dim == -1) num++; } - if (num > 1) THROW_IE_EXCEPTION << "Invalid Reshape mask (dim attribute): at most one dimension can be `-1`"; + if (num > 1) IE_THROW() << "Invalid Reshape mask (dim attribute): at most one dimension can be `-1`"; } void EltwiseValidator::checkParams(const CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of EltwiseLayer class"; + IE_THROW() << "Layer is not instance of EltwiseLayer class"; } } void EltwiseValidator::checkShapes(const CNNLayer* layer, const std::vector& inShapes) const { if (inShapes.empty()) { - THROW_IE_EXCEPTION << "Number of inputs (" << inShapes.size() << ") of Eltwise layer is zero"; + IE_THROW() << "Number of inputs (" << inShapes.size() << ") of Eltwise layer is zero"; } } @@ -525,7 +524,7 @@ void ClampValidator::checkShapes(const CNNLayer* layer, const std::vector(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of ReLULayer class"; + IE_THROW() << "Layer is not instance of ReLULayer class"; } if (casted->params.count("negative_slope")) { float negative_slope = casted->GetParamAsFloat("negative_slope"); @@ -560,11 +559,11 @@ void GRNValidator::checkShapes(const CNNLayer* layer, const std::vector(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of SoftMaxLayer class"; + IE_THROW() << "Layer is not instance of SoftMaxLayer class"; } int axis = casted->GetParamAsInt("axis", 1); if (axis < 0) { - THROW_IE_EXCEPTION << "The value of SoftMax layer axis parameter is invalid"; + IE_THROW() << "The value of SoftMax layer axis parameter is invalid"; } } @@ -577,12 +576,12 @@ void SoftMaxValidator::checkShapes(const CNNLayer* layer, const std::vector(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of NormLayer class"; + IE_THROW() << "Layer is not instance of NormLayer class"; } float _alpha = casted->GetParamAsFloat("alpha"); float _beta = casted->GetParamAsFloat("beta"); if (_alpha < 0 && _beta < 0) { - THROW_IE_EXCEPTION << "The value of Norm layer alpha or beta parameters is invalid"; + IE_THROW() << "The value of Norm layer alpha or beta parameters is invalid"; } } @@ -598,23 +597,23 @@ void SplitValidator::checkParams(const CNNLayer* layer) { LayerValidator::checkParams(layer); std::vector out_sizes = layer->GetParamAsInts("out_sizes", {}); if (out_sizes.empty()) { - THROW_IE_EXCEPTION << "Value of out_sizes attribute is empty"; + IE_THROW() << "Value of out_sizes attribute is empty"; } } void SplitValidator::checkShapes(const CNNLayer* layer, const std::vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of SplitLayer class"; + IE_THROW() << "Layer is not instance of SplitLayer class"; } checkNumOfInput(inShapes, {1}); std::vector out_sizes = layer->GetParamAsInts("out_sizes", {}); size_t sum(0); for (const auto& size : out_sizes) sum += size; if (inShapes.empty() || inShapes[0].size() <= casted->_axis) - THROW_IE_EXCEPTION << "Layer has incorrect input shapes!"; + IE_THROW() << "Layer has incorrect input shapes!"; if (sum != inShapes[0][casted->_axis]) { - THROW_IE_EXCEPTION << "The sum of the dimensions on the axis(" << casted->_axis + IE_THROW() << "The sum of the dimensions on the axis(" << casted->_axis << ") is not equal out_sizes: " << details::dumpVec(out_sizes); } } @@ -624,29 +623,29 @@ ConcatValidator::ConcatValidator(const std::string& _type): LayerValidator(_type void ConcatValidator::checkParams(const CNNLayer* layer) {} void ConcatValidator::checkShapes(const CNNLayer* layer, const std::vector& inShapes) const { - if (inShapes.empty()) THROW_IE_EXCEPTION << "Inputs are empty"; + if (inShapes.empty()) IE_THROW() << "Inputs are empty"; auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Invalid Concat layer."; + IE_THROW() << "Invalid Concat layer."; } auto firstShape = inShapes[0]; size_t firstShapeSize = firstShape.size(); size_t axis = casted->_axis; if (axis >= firstShapeSize) - THROW_IE_EXCEPTION << "Concat axis(" << axis << ") should be less the number of current input dimensions (" + IE_THROW() << "Concat axis(" << axis << ") should be less the number of current input dimensions (" << firstShapeSize << ")"; for (size_t i = 1; i < inShapes.size(); i++) { auto shape = inShapes[i]; if (shape.size() != firstShapeSize) - THROW_IE_EXCEPTION << "Invalid inputs for Concat layer: number of dimensions must match: " << firstShapeSize + IE_THROW() << "Invalid inputs for Concat layer: number of dimensions must match: " << firstShapeSize << " vs " << shape.size(); bool eq_part1 = std::equal(firstShape.begin(), firstShape.begin() + axis, shape.begin()); bool eq_part2 = std::equal(firstShape.begin() + axis + 1, firstShape.end(), shape.begin() + axis + 1); if (!(eq_part1 && eq_part2)) - THROW_IE_EXCEPTION << "Invalid inputs for Concat layer: dimensions should match in all " + IE_THROW() << "Invalid inputs for Concat layer: dimensions should match in all " << "positions except axis (" << axis << ") : [" << dumpVec(firstShape) << "] vs [" << dumpVec(shape) << "]"; } @@ -661,7 +660,7 @@ void GemmValidator::checkParams(const CNNLayer* layer) { void GemmValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of GemmLayer class"; + IE_THROW() << "Layer is not instance of GemmLayer class"; } checkNumOfInput(inShapes, {2, 3}); @@ -669,7 +668,7 @@ void GemmValidator::checkShapes(const CNNLayer* layer, const vector& auto dims0 = inShapes[0]; auto dims1 = inShapes[1]; if (dims0.size() < 2 || dims1.size() < 2) { - THROW_IE_EXCEPTION << "Gemm input shapes must have at least 2 dimensions"; + IE_THROW() << "Gemm input shapes must have at least 2 dimensions"; } unsigned long xAxis0 = static_cast(dims0.size() - 1); @@ -683,24 +682,24 @@ void GemmValidator::checkShapes(const CNNLayer* layer, const vector& if (casted->transpose_b) std::swap(xAxis1, yAxis1); if (dims0[xAxis0] != dims1[yAxis1]) - THROW_IE_EXCEPTION << "Gemm input0 x dimension must be equal to input1 y dimension (" << dims0[xAxis0] << " vs " + IE_THROW() << "Gemm input0 x dimension must be equal to input1 y dimension (" << dims0[xAxis0] << " vs " << dims1[yAxis1] << ")"; if (inShapes.size() == 3) { auto dims2 = inShapes[2]; if (dims2.size() < 2) { - THROW_IE_EXCEPTION << "Gemm input shapes must have at least 2 dimensions"; + IE_THROW() << "Gemm input shapes must have at least 2 dimensions"; } unsigned long xAxis2 = static_cast(dims2.size() - 1); unsigned long yAxis2 = static_cast(dims2.size() - 2); if (dims2[xAxis2] != dims1[xAxis1]) - THROW_IE_EXCEPTION << "Gemm input2 x dimension must be equal to input1 x dimension (" << dims2[xAxis2] + IE_THROW() << "Gemm input2 x dimension must be equal to input1 x dimension (" << dims2[xAxis2] << " vs " << dims1[xAxis1] << ")"; if (dims2[yAxis2] != dims0[yAxis0]) - THROW_IE_EXCEPTION << "Gemm input2 y dimension must be equal to input0 y dimension (" << dims2[yAxis2] + IE_THROW() << "Gemm input2 y dimension must be equal to input0 y dimension (" << dims2[yAxis2] << " vs " << dims0[yAxis0] << ")"; } } @@ -714,29 +713,29 @@ void PadValidator::checkParams(const CNNLayer* layer) { void PadValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of PadLayer class"; + IE_THROW() << layer->name << " Layer is not instance of PadLayer class"; } checkNumOfInput(inShapes, {1}); if (inShapes[0].size() != casted->pads_begin.size()) - THROW_IE_EXCEPTION << layer->name << " Dimensions count mismatch in layer " << layer->name + IE_THROW() << layer->name << " Dimensions count mismatch in layer " << layer->name << ". Expected: " << casted->pads_begin.size() << " Got: " << inShapes[0].size(); if (inShapes[0].size() != casted->pads_end.size()) - THROW_IE_EXCEPTION << layer->name << " Dimensions count mismatch in layer " << layer->name + IE_THROW() << layer->name << " Dimensions count mismatch in layer " << layer->name << ". Expected: " << casted->pads_end.size() << " Got: " << inShapes[0].size(); if (casted->pad_mode == PadLayer::Symmetric || casted->pad_mode == PadLayer::Reflect) { for (size_t i = 0; i < inShapes[0].size(); i++) { if (inShapes[0][i] < casted->pads_begin[i]) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Pad can't be grater than input shape in symmetric and reflect modes." << " For dimension " << i << " pad_begin=" << casted->pads_begin[i] << " in_shape=" << inShapes[0][i]; } if (inShapes[0][i] < casted->pads_end[i]) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Pad can't be grater than input shape in symmetric and reflect modes." << " For dimension " << i << " pad_end=" << casted->pads_end[i] << " in_shape=" << inShapes[0][i]; @@ -754,18 +753,18 @@ void GatherValidator::checkParams(const CNNLayer* layer) { void GatherValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of GatherLayer class"; + IE_THROW() << layer->name << " Layer is not instance of GatherLayer class"; } size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name << " Gather can take only 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Gather can take only 2 inputs, but actually it has: " << numInputs; if (casted->axis > 0 && static_cast(inShapes[0].size()) < (1 + casted->axis)) - THROW_IE_EXCEPTION << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() + IE_THROW() << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() << " and axis number " << casted->axis; else if (casted->axis < 0 && (static_cast(inShapes[0].size()) + casted->axis) < 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() + IE_THROW() << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() << " and axis number " << casted->axis; } @@ -778,12 +777,12 @@ void StridedSliceValidator::checkParams(const CNNLayer* layer) { void StridedSliceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of StridedSliceLayer class"; + IE_THROW() << layer->name << " Layer is not instance of StridedSliceLayer class"; } size_t numInputs = inShapes.size(); if (numInputs > 4) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " StridedSlice can take up to 4 inputs, but actually it has: " << numInputs; size_t ellipsis_mask_counter = 0; @@ -791,7 +790,7 @@ void StridedSliceValidator::checkShapes(const CNNLayer* layer, const vectorellipsis_mask[i] == '1') ellipsis_mask_counter++; } if (ellipsis_mask_counter > 1) - THROW_IE_EXCEPTION << layer->name << " 'Ellipsis_mask' must be a power of two (only one ellipsis)!"; + IE_THROW() << layer->name << " 'Ellipsis_mask' must be a power of two (only one ellipsis)!"; } ShuffleChannelsValidator::ShuffleChannelsValidator(const std::string& _type): LayerValidator(_type) {} @@ -803,31 +802,31 @@ void ShuffleChannelsValidator::checkParams(const CNNLayer* layer) { void ShuffleChannelsValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of ShuffleChannels class"; + IE_THROW() << layer->name << " Layer is not instance of ShuffleChannels class"; } size_t numInputs = inShapes.size(); if (numInputs != 1) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " ShuffleChannels can take only 1 input, but actually it has: " << numInputs; if (casted->axis > 0 && static_cast(inShapes[0].size()) < (1 + casted->axis)) - THROW_IE_EXCEPTION << layer->name << "I ncorrect input tensor dimensions " << inShapes[0].size() + IE_THROW() << layer->name << "I ncorrect input tensor dimensions " << inShapes[0].size() << " and axis number " << casted->axis; else if (casted->axis < 0 && (static_cast(inShapes[0].size()) + casted->axis) < 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() + IE_THROW() << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() << " and axis number " << casted->axis; int axis = casted->axis; if (axis < 0) axis += static_cast(inShapes[0].size()); if (inShapes[0][axis] % casted->group) - THROW_IE_EXCEPTION << layer->name << " Group parameter must evenly divide the channel dimension!"; + IE_THROW() << layer->name << " Group parameter must evenly divide the channel dimension!"; size_t dataLength = 1; for (size_t i = axis + 1; i < inShapes[0].size(); i++) dataLength *= inShapes[0][i]; - if (dataLength == 0) THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters dimension!"; + if (dataLength == 0) IE_THROW() << layer->name << " Incorrect input parameters dimension!"; } DepthToSpaceValidator::DepthToSpaceValidator(const std::string& _type): LayerValidator(_type) {} @@ -839,20 +838,20 @@ void DepthToSpaceValidator::checkParams(const CNNLayer* layer) { void DepthToSpaceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of DepthToSpace class"; + IE_THROW() << layer->name << " Layer is not instance of DepthToSpace class"; } size_t numInputs = inShapes.size(); if (numInputs != 1) - THROW_IE_EXCEPTION << layer->name << " DepthToSpace can take only 1 input, but actually it has: " << numInputs; + IE_THROW() << layer->name << " DepthToSpace can take only 1 input, but actually it has: " << numInputs; - if (inShapes[0].size() < 3) THROW_IE_EXCEPTION << layer->name << " Incorrect number of input dimensions!"; + if (inShapes[0].size() < 3) IE_THROW() << layer->name << " Incorrect number of input dimensions!"; - if (casted->block_size == 0) THROW_IE_EXCEPTION << layer->name << " Incorrect block_size parameter is zero!"; + if (casted->block_size == 0) IE_THROW() << layer->name << " Incorrect block_size parameter is zero!"; size_t numSpatialDims = inShapes[0].size() - 2; if (inShapes[0][1] % static_cast(std::pow(casted->block_size, numSpatialDims))) - THROW_IE_EXCEPTION << layer->name << " block_size parameter is incompatible with input tensor Color dimension size!"; + IE_THROW() << layer->name << " block_size parameter is incompatible with input tensor Color dimension size!"; } SpaceToDepthValidator::SpaceToDepthValidator(const std::string& _type): LayerValidator(_type) {} @@ -864,23 +863,23 @@ void SpaceToDepthValidator::checkParams(const CNNLayer* layer) { void SpaceToDepthValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of SpaceToDepth class"; + IE_THROW() << layer->name << " Layer is not instance of SpaceToDepth class"; } size_t numInputs = inShapes.size(); if (numInputs != 1) - THROW_IE_EXCEPTION << layer->name << " SpaceToDepth can take only 1 input, but actually it has: " << numInputs; + IE_THROW() << layer->name << " SpaceToDepth can take only 1 input, but actually it has: " << numInputs; - if (inShapes[0].size() < 2) THROW_IE_EXCEPTION << layer->name << " Incorrect number of input dimensions!"; + if (inShapes[0].size() < 2) IE_THROW() << layer->name << " Incorrect number of input dimensions!"; - if (casted->block_size == 0) THROW_IE_EXCEPTION << layer->name << " Incorrect block_size parameter is zero!"; + if (casted->block_size == 0) IE_THROW() << layer->name << " Incorrect block_size parameter is zero!"; if (inShapes[0][inShapes[0].size() - 1] % casted->block_size) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " block_size parameter is incompatible with input tensor With dimension size!"; if (inShapes[0][inShapes[0].size() - 2] % casted->block_size) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " block_size parameter is incompatible with input tensor Height dimension size!"; } @@ -890,19 +889,19 @@ SpaceToBatchValidator::SpaceToBatchValidator(const std::string& _type): LayerVal void SpaceToBatchValidator::checkParams(const CNNLayer* layer) { const auto spaceToBatchLayer = dynamic_cast(layer); if (!spaceToBatchLayer) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; LayerValidator::checkParams(layer); for (auto& bs : spaceToBatchLayer->_block_shape) { if (bs == 0lu) - THROW_IE_EXCEPTION << "'" << layer->name << "' layer has nullable block shape."; + IE_THROW() << "'" << layer->name << "' layer has nullable block shape."; } } void SpaceToBatchValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto spaceToBatchLayer = dynamic_cast(layer); if (!spaceToBatchLayer) { - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of SpaceToBatchLayer class"; } // TODO: finish } @@ -913,7 +912,7 @@ BatchToSpaceValidator::BatchToSpaceValidator(const std::string& _type): LayerVal void BatchToSpaceValidator::checkParams(const CNNLayer* layer) { auto batchToSpaceLayer = dynamic_cast(layer); if (!batchToSpaceLayer) { - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; } LayerValidator::checkParams(layer); } @@ -921,7 +920,7 @@ void BatchToSpaceValidator::checkParams(const CNNLayer* layer) { void BatchToSpaceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto batchToSpaceLayer = dynamic_cast(layer); if (!batchToSpaceLayer) { - THROW_IE_EXCEPTION << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; + IE_THROW() << "'" << layer->name << "' layer is not instance of BatchToSpaceLayer class"; } // TODO: finish } @@ -936,33 +935,33 @@ void SparseFillEmptyRowsValidator::checkParams(const CNNLayer* layer) { void SparseFillEmptyRowsValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of SparseFillEmptyRows class"; + IE_THROW() << layer->name << " Layer is not instance of SparseFillEmptyRows class"; } size_t numInputs = inShapes.size(); if (numInputs != 4) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " SparseFillEmptyRows must have 4 inputs, but actually it has: " << numInputs; // Check dimensions of a tensor with input indices if (inShapes[0].size() != 2) - THROW_IE_EXCEPTION << layer->name << " Input indices of SparseFillEmptyRows must be 2-D tensor"; - if (inShapes[0][1] != 2) THROW_IE_EXCEPTION << layer->name << " Input indices must be two-dimensional"; + IE_THROW() << layer->name << " Input indices of SparseFillEmptyRows must be 2-D tensor"; + if (inShapes[0][1] != 2) IE_THROW() << layer->name << " Input indices must be two-dimensional"; // Check dimensions of a tensor with input values if (inShapes[1].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Input values of SparseFillEmptyRows must be 1-D tensor"; + IE_THROW() << layer->name << " Input values of SparseFillEmptyRows must be 1-D tensor"; if (inShapes[1][0] != inShapes[0][0]) - THROW_IE_EXCEPTION << layer->name << " Number of input indices and values must match"; + IE_THROW() << layer->name << " Number of input indices and values must match"; // Check dimensions of a tensor with a dense shape if (inShapes[2].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Dense shape of SparseFillEmptyRows must be 1-D tensor"; + IE_THROW() << layer->name << " Dense shape of SparseFillEmptyRows must be 1-D tensor"; // TODO: check that dense shape value is set // Check dimensions of a tensor with default value if (inShapes[3].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Default value of SparseFillEmptyRows must be 1-D tensor"; + IE_THROW() << layer->name << " Default value of SparseFillEmptyRows must be 1-D tensor"; } SparseSegmentReduceValidator::SparseSegmentReduceValidator(const std::string& _type): LayerValidator(_type) {} @@ -974,20 +973,20 @@ void SparseSegmentReduceValidator::checkParams(const CNNLayer* layer) { void SparseSegmentReduceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of SparseSegmentReduce class"; + IE_THROW() << layer->name << " Layer is not instance of SparseSegmentReduce class"; } size_t numInputs = inShapes.size(); if (numInputs != 3) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " SparseSegmentReduce must take three inputs, but actually it has: " << numInputs; // check that the second and the third inputs are one-dimensional if (inShapes[1].size() != 1) { - THROW_IE_EXCEPTION << layer->name << " The second input of SparseSegmentReduce must be one-dimensional"; + IE_THROW() << layer->name << " The second input of SparseSegmentReduce must be one-dimensional"; } if (inShapes[2].size() != 1) { - THROW_IE_EXCEPTION << layer->name << " The third input of SparseSegmentReduce must be one-dimensional"; + IE_THROW() << layer->name << " The third input of SparseSegmentReduce must be one-dimensional"; } } @@ -1000,42 +999,42 @@ void ExperimentalSparseWeightedReduceValidator::checkParams(const CNNLayer* laye void ExperimentalSparseWeightedReduceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of ExperimentalSparseWeightedReduce class"; + IE_THROW() << layer->name << " Layer is not instance of ExperimentalSparseWeightedReduce class"; } size_t numInputs = inShapes.size(); if (numInputs != 5 && numInputs != 6) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " ExperimentalSparseWeightedReduce must take five or six inputs, but actually it has: " << numInputs; // check shapes of inputs if (inShapes[0].size() != 2 || inShapes[0][1] != 2) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The first input with indices of ExperimentalSparseSegmentReduce must be two-dimensional"; } if (inShapes[1].size() != 1) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The second input with values of ExperimentalSparseSegmentReduce must be one-dimensional"; } if (inShapes[1][0] != inShapes[0][0]) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The first dimension value of the first and second inputs of ExperimentalSparseSegmentReduce must be the same"; } if (inShapes[2].size() != 1 || inShapes[2][0] != 2) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The third input with a dense shape of ExperimentalSparseSegmentReduce must be one-dimensional"; } if (inShapes[3].size() < 2) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The fourth input with parameters table of ExperimentalSparseSegmentReduce must have two dimensions at least"; } if (inShapes[4].size() != 0) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The fifth input with a default value of ExperimentalSparseSegmentReduce must be a scalar"; } if (numInputs == 6 && (inShapes[5].size() != 1 || inShapes[5][0] != inShapes[1][0])) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The second and sixth inputs of ExperimentalSparseSegmentReduce must have the same shapes"; } @@ -1049,23 +1048,23 @@ void ExperimentalSparseWeightedReduceValidator::checkShapes(const CNNLayer* laye Precision input_indices_precision = layer->insData[INPUT_INDICES_PORT].lock()->getTensorDesc().getPrecision(); if (input_indices_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input indices precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input indices precision. Only I32 are supported!"; Precision input_values_precision = layer->insData[INPUT_VALUES_PORT].lock()->getTensorDesc().getPrecision(); if (input_values_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input values precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input values precision. Only I32 are supported!"; Precision input_dense_shape_precision = layer->insData[INPUT_DENSE_SHAPE].lock()->getTensorDesc().getPrecision(); if (input_dense_shape_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input dense shape precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input dense shape precision. Only I32 are supported!"; Precision input_params_table_precision = layer->insData[INPUT_PARAMS_TABLE].lock()->getTensorDesc().getPrecision(); if (input_params_table_precision != Precision::FP32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input parameters table precision. Only FP32 are supported!"; + IE_THROW() << layer->name << " Incorrect input parameters table precision. Only FP32 are supported!"; Precision input_default_value_precision = layer->insData[INPUT_DEFAULT_VALUE].lock()->getTensorDesc().getPrecision(); if (input_default_value_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input default value precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input default value precision. Only I32 are supported!"; if (numInputs == 6) { Precision input_weights_precision = layer->insData[INPUT_WEIGHTS].lock()->getTensorDesc().getPrecision(); if (input_weights_precision != Precision::FP32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input weights precision. Only FP32 are supported!"; + IE_THROW() << layer->name << " Incorrect input weights precision. Only FP32 are supported!"; } } @@ -1079,30 +1078,30 @@ void SparseToDenseValidator::checkParams(const CNNLayer* layer) { void SparseToDenseValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of SparseToDense class"; + IE_THROW() << layer->name << " Layer is not instance of SparseToDense class"; } size_t numInputs = inShapes.size(); if (numInputs != 3 && numInputs != 4) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " SparseToDense must take three or four inputs, but actually it has: " << numInputs; // check shapes of inputs if (inShapes[0].size() != 2) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The first input with indices of SparseToDense must be two-dimensional"; } if (inShapes[1].size() != 1 || inShapes[1][0] != inShapes[0][1]) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The second input with a dense shape of SparseToDense must be one-dimensional"; } if (inShapes[2].size() != 1 || inShapes[2][0] != inShapes[0][0]) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The third input with values of SparseToDense must be one-dimensional"; } if (numInputs == 4 && inShapes[3].size() != 0) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The fourth input with default value of SparseToDense must be a scalar"; } @@ -1114,17 +1113,17 @@ void SparseToDenseValidator::checkShapes(const CNNLayer* layer, const vectorinsData[INPUT_INDICES_PORT].lock()->getTensorDesc().getPrecision(); if (input_indices_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input indices precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input indices precision. Only I32 are supported!"; Precision input_dense_shape_precision = layer->insData[INPUT_DENSE_SHAPE].lock()->getTensorDesc().getPrecision(); if (input_dense_shape_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input dense shape precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input dense shape precision. Only I32 are supported!"; Precision input_values_precision = layer->insData[INPUT_VALUES_PORT].lock()->getTensorDesc().getPrecision(); if (input_values_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input values precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input values precision. Only I32 are supported!"; if (numInputs == 4) { Precision input_default_value_precision = layer->insData[INPUT_DEFAULT_VALUE].lock()->getTensorDesc().getPrecision(); if (input_default_value_precision != Precision::I32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input default value precision. Only I32 are supported!"; + IE_THROW() << layer->name << " Incorrect input default value precision. Only I32 are supported!"; } } @@ -1138,18 +1137,18 @@ void BucketizeValidator::checkParams(const CNNLayer* layer) { void BucketizeValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Bucketize class"; + IE_THROW() << layer->name << " Layer is not instance of Bucketize class"; } size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " Bucketize must take two inputs, but actually it has: " << numInputs; // check shapes of inputs if (inShapes[1].size() != 1) { - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " The second input of Bucketize must be one-dimensional"; } @@ -1159,10 +1158,10 @@ void BucketizeValidator::checkShapes(const CNNLayer* layer, const vectorinsData[INPUT_TENSOR_PORT].lock()->getTensorDesc().getPrecision(); if (input_tensor_precision != Precision::I32 || input_tensor_precision != Precision::FP32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input tensor precision. Only I32 and FP32 are supported!"; + IE_THROW() << layer->name << " Incorrect input tensor precision. Only I32 and FP32 are supported!"; Precision input_boundaries_precision = layer->insData[INPUT_BOUNDARIES_PORT].lock()->getTensorDesc().getPrecision(); if (input_boundaries_precision != Precision::FP32) - THROW_IE_EXCEPTION << layer->name << " Incorrect input boundaries precision. Only FP32 are supported!"; + IE_THROW() << layer->name << " Incorrect input boundaries precision. Only FP32 are supported!"; } ReverseSequenceValidator::ReverseSequenceValidator(const std::string& _type): LayerValidator(_type) {} @@ -1174,34 +1173,34 @@ void ReverseSequenceValidator::checkParams(const CNNLayer* layer) { void ReverseSequenceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of ReverseSequence class"; + IE_THROW() << layer->name << " Layer is not instance of ReverseSequence class"; } size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name << " ReverseSequence can take 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " ReverseSequence can take 2 inputs, but actually it has: " << numInputs; if (inShapes[1].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'seq_lengths' input dimensions!"; + IE_THROW() << layer->name << " Incorrect number of 'seq_lengths' input dimensions!"; if (casted->seq_axis > 0 && static_cast(inShapes[0].size()) < (1 + casted->seq_axis)) - THROW_IE_EXCEPTION << layer->name << "Incorrect input tensor dimensions " << inShapes[0].size() + IE_THROW() << layer->name << "Incorrect input tensor dimensions " << inShapes[0].size() << " and seq_axis number " << casted->seq_axis; else if (casted->seq_axis < 0 && (static_cast(inShapes[0].size()) + casted->seq_axis) < 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() + IE_THROW() << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() << " and seq_axis number " << casted->seq_axis; if (casted->batch_axis > 0 && static_cast(inShapes[0].size()) < (1 + casted->batch_axis)) - THROW_IE_EXCEPTION << layer->name << "Incorrect input tensor dimensions " << inShapes[0].size() + IE_THROW() << layer->name << "Incorrect input tensor dimensions " << inShapes[0].size() << " and batch_axis number " << casted->batch_axis; else if (casted->batch_axis < 0 && (static_cast(inShapes[0].size()) + casted->batch_axis) < 0) - THROW_IE_EXCEPTION << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() + IE_THROW() << layer->name << " Incorrect input dictionary dimensions " << inShapes[0].size() << " and batch_axis number " << casted->batch_axis; int batch_axis = casted->batch_axis; if (batch_axis < 0) batch_axis += static_cast(inShapes[0].size()); if (inShapes[1][0] != inShapes[0][batch_axis]) - THROW_IE_EXCEPTION << layer->name << " Incorrect 'seq_lengths_dims' parameter dimensions!"; + IE_THROW() << layer->name << " Incorrect 'seq_lengths_dims' parameter dimensions!"; } SqueezeValidator::SqueezeValidator(const std::string& _type): LayerValidator(_type) {} @@ -1213,15 +1212,15 @@ void SqueezeValidator::checkParams(const CNNLayer* layer) { void SqueezeValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Squeeze class"; + IE_THROW() << layer->name << " Layer is not instance of Squeeze class"; } size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name << " Squeeze can take 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Squeeze can take 2 inputs, but actually it has: " << numInputs; if (inShapes[1].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'indices_to_squeeze' input dimensions!"; + IE_THROW() << layer->name << " Incorrect number of 'indices_to_squeeze' input dimensions!"; } UnsqueezeValidator::UnsqueezeValidator(const std::string& _type): LayerValidator(_type) {} @@ -1233,15 +1232,15 @@ void UnsqueezeValidator::checkParams(const CNNLayer* layer) { void UnsqueezeValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Unsqueeze class"; + IE_THROW() << layer->name << " Layer is not instance of Unsqueeze class"; } size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name << " Unsqueeze can take 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Unsqueeze can take 2 inputs, but actually it has: " << numInputs; if (inShapes[1].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'indices_to_set' input dimensions!"; + IE_THROW() << layer->name << " Incorrect number of 'indices_to_set' input dimensions!"; } RangeValidator::RangeValidator(const std::string& _type): LayerValidator(_type) {} @@ -1251,18 +1250,18 @@ void RangeValidator::checkParams(const CNNLayer* layer) {} void RangeValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Range class"; + IE_THROW() << layer->name << " Layer is not instance of Range class"; } size_t numInputs = inShapes.size(); if (numInputs != 3) - THROW_IE_EXCEPTION << layer->name << " Range can take 3 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Range can take 3 inputs, but actually it has: " << numInputs; - if (inShapes[0].size() != 1) THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'start' input dimensions!"; + if (inShapes[0].size() != 1) IE_THROW() << layer->name << " Incorrect number of 'start' input dimensions!"; - if (inShapes[1].size() != 1) THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'limit' input dimensions!"; + if (inShapes[1].size() != 1) IE_THROW() << layer->name << " Incorrect number of 'limit' input dimensions!"; - if (inShapes[2].size() != 1) THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'delta' input dimensions!"; + if (inShapes[2].size() != 1) IE_THROW() << layer->name << " Incorrect number of 'delta' input dimensions!"; } FillValidator::FillValidator(const std::string& _type): LayerValidator(_type) {} @@ -1272,13 +1271,13 @@ void FillValidator::checkParams(const CNNLayer* layer) {} void FillValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name << " Fill can take 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Fill can take 2 inputs, but actually it has: " << numInputs; if (inShapes[0].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'fill_dims' input dimensions!"; + IE_THROW() << layer->name << " Incorrect number of 'fill_dims' input dimensions!"; if (inShapes[1].size() != 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'fill_value' input dimensions!"; + IE_THROW() << layer->name << " Incorrect number of 'fill_value' input dimensions!"; } BroadcastValidator::BroadcastValidator(const std::string& _type): LayerValidator(_type) {} @@ -1290,14 +1289,14 @@ void BroadcastValidator::checkParams(const CNNLayer* layer) { void BroadcastValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of Broadcast class"; + IE_THROW() << layer->name << " Layer is not instance of Broadcast class"; } size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name << " Broadcast can take 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Broadcast can take 2 inputs, but actually it has: " << numInputs; - if (inShapes[1].size() != 1) THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'shape' input dimensions!"; + if (inShapes[1].size() != 1) IE_THROW() << layer->name << " Incorrect number of 'shape' input dimensions!"; } /****************************************/ @@ -1330,36 +1329,36 @@ RNNBaseValidator::RNNBaseValidator(const std::string& _type, RNNSequenceLayer::C void RNNBaseValidator::checkParams(const InferenceEngine::CNNLayer* layer) { auto rnn = dynamic_cast(layer); - if (!rnn) THROW_IE_EXCEPTION << "Layer is not instance of RNNLayer class"; + if (!rnn) IE_THROW() << "Layer is not instance of RNNLayer class"; - if (rnn->clip < 0.0f) THROW_IE_EXCEPTION << "Clip parameter should be positive"; + if (rnn->clip < 0.0f) IE_THROW() << "Clip parameter should be positive"; for (auto& act : rnn->activations) if (!one_of(act, "sigmoid", "tanh", "relu")) - THROW_IE_EXCEPTION << "Unsupported activation function (" << act << ") for RNN layer."; + IE_THROW() << "Unsupported activation function (" << act << ") for RNN layer."; size_t act_num_required = def_acts.size(); if (rnn->activations.size() != act_num_required) - THROW_IE_EXCEPTION << "Expected " << act_num_required << " activations, but provided " + IE_THROW() << "Expected " << act_num_required << " activations, but provided " << rnn->activations.size(); if (rnn->activation_alpha.size() != act_num_required) - THROW_IE_EXCEPTION << "Expected " << act_num_required << " activation alpha parameters, " + IE_THROW() << "Expected " << act_num_required << " activation alpha parameters, " << "but provided " << rnn->activation_alpha.size(); if (rnn->activation_beta.size() != act_num_required) - THROW_IE_EXCEPTION << "Expected " << act_num_required << " activation beta parameters, " + IE_THROW() << "Expected " << act_num_required << " activation beta parameters, " << "but provided " << rnn->activation_beta.size(); } void RNNBaseValidator::checkCorrespondence(const CNNLayer* layer, const map& blobs, const vector& inShapes) const { auto rnn = dynamic_cast(layer); - if (!rnn) THROW_IE_EXCEPTION << "Layer is not instance of RNNLayer class"; + if (!rnn) IE_THROW() << "Layer is not instance of RNNLayer class"; if (blobs.size() != 2) - THROW_IE_EXCEPTION << "Expected only 2 blobs with trained parameters (weights and biases), " + IE_THROW() << "Expected only 2 blobs with trained parameters (weights and biases), " << "but provided only " << blobs.size(); - if (inShapes.empty()) THROW_IE_EXCEPTION << "No input tensors."; + if (inShapes.empty()) IE_THROW() << "No input tensors."; size_t D = inShapes[0].back(); size_t S = rnn->hidden_size; @@ -1369,16 +1368,16 @@ void RNNBaseValidator::checkCorrespondence(const CNNLayer* layer, const mapcellType == RNNCellBase::GRU_LBR) expectetd_b_size = (G + 1) * S; auto w = blobs.find("weights"); - if (w == blobs.end()) THROW_IE_EXCEPTION << "Weights blob is not provided"; + if (w == blobs.end()) IE_THROW() << "Weights blob is not provided"; if (w->second->size() != expectetd_w_size) - THROW_IE_EXCEPTION << "Weights blob has wrang size. Expected " << expectetd_w_size; + IE_THROW() << "Weights blob has wrang size. Expected " << expectetd_w_size; auto b = blobs.find("biases"); - if (b == blobs.end()) THROW_IE_EXCEPTION << "Biases blob is not provided"; + if (b == blobs.end()) IE_THROW() << "Biases blob is not provided"; if (b->second->size() != expectetd_b_size) - THROW_IE_EXCEPTION << "Biases blob has wrang size. Expected " << expectetd_b_size; + IE_THROW() << "Biases blob has wrang size. Expected " << expectetd_b_size; } template @@ -1389,20 +1388,20 @@ void RNNSequenceValidator::checkParams(const InferenceEngine::CNNLayer* la RNNBaseValidator::checkParams(layer); auto casted = dynamic_cast(layer); - if (!casted) THROW_IE_EXCEPTION << "Layer is not instance of RNNLayer class"; + if (!casted) IE_THROW() << "Layer is not instance of RNNLayer class"; if (!one_of(casted->axis, 1u, 0u)) - THROW_IE_EXCEPTION << "Unsupported iteration axis for RNNSequense layer. Only 0 or 1 axis are supported."; + IE_THROW() << "Unsupported iteration axis for RNNSequense layer. Only 0 or 1 axis are supported."; } template void RNNSequenceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto rnn = dynamic_cast(layer); - if (!rnn) THROW_IE_EXCEPTION << "Layer is not instance of RNNSequenceLayer class"; + if (!rnn) IE_THROW() << "Layer is not instance of RNNSequenceLayer class"; - if (inShapes.empty()) THROW_IE_EXCEPTION << "No input tensors."; + if (inShapes.empty()) IE_THROW() << "No input tensors."; - if (inShapes[0].size() != 3) THROW_IE_EXCEPTION << "First input data tensor should be 3D"; + if (inShapes[0].size() != 3) IE_THROW() << "First input data tensor should be 3D"; size_t T_axis = rnn->axis; size_t N_axis = (T_axis + 1) % 2; @@ -1415,16 +1414,16 @@ void RNNSequenceValidator::checkShapes(const CNNLayer* layer, const vector if (inShapes.size() > 1) { // has an initial state blobs if (inShapes.size() != 1 + NS && inShapes.size() != 2 + NS) - THROW_IE_EXCEPTION << "Wrong number of input tensors. Expected 1 (data) or " << 1 + NS + IE_THROW() << "Wrong number of input tensors. Expected 1 (data) or " << 1 + NS << " (data and states) or " << 2 + NS << " (data, states and seq_length)."; - if (inShapes[1] != expected_state_shape) THROW_IE_EXCEPTION << "Wrong shape of first initial state tensors."; + if (inShapes[1] != expected_state_shape) IE_THROW() << "Wrong shape of first initial state tensors."; // << " Expected " << expected_state_shape << " but provided " << inShapes[1]; if (NS == 2 && inShapes[2] != expected_state_shape) - THROW_IE_EXCEPTION << "Wrong shape of second initial state tensors."; + IE_THROW() << "Wrong shape of second initial state tensors."; // << " Expected " << expected_state_shape << " but provided " << inShapes[2]; if (inShapes.size() == 2 + NS && inShapes[NS + 1] != expected_seq_l_shape) - THROW_IE_EXCEPTION << "Wrong shape of last input tensor with sequance length data."; + IE_THROW() << "Wrong shape of last input tensor with sequance length data."; // << " Expected " << expected_seq_l_shape << " but provided " << inShapes[NS + 1]; } } @@ -1439,24 +1438,24 @@ RNNCellValidator::RNNCellValidator(const std::string& _type): RNNBaseValid template void RNNCellValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto rnn = dynamic_cast(layer); - if (!rnn) THROW_IE_EXCEPTION << "Layer is not instance of RNNSequenceLayer class"; + if (!rnn) IE_THROW() << "Layer is not instance of RNNSequenceLayer class"; const size_t& NS = RNNCellValidator::NS; - if (inShapes.size() != NS + 1) THROW_IE_EXCEPTION << "Wrong number of input tensors. Expected " << NS + 1; + if (inShapes.size() != NS + 1) IE_THROW() << "Wrong number of input tensors. Expected " << NS + 1; - if (inShapes[0].size() != 2) THROW_IE_EXCEPTION << "First input data tensor should be 2D"; + if (inShapes[0].size() != 2) IE_THROW() << "First input data tensor should be 2D"; size_t N = inShapes[0][0]; size_t S = rnn->hidden_size; SizeVector expected_state_shape {N, S}; - if (inShapes[1] != expected_state_shape) THROW_IE_EXCEPTION << "Wrong shape of first initial state tensors."; + if (inShapes[1] != expected_state_shape) IE_THROW() << "Wrong shape of first initial state tensors."; // << " Expected " << expected_state_shape << " but provided " << inShapes[1]; if (NS == 2 && inShapes[2] != expected_state_shape) - THROW_IE_EXCEPTION << "Wrong shape of second initial state tensors."; + IE_THROW() << "Wrong shape of second initial state tensors."; // << " Expected " << expected_state_shape << " but provided " << inShapes[2]; } @@ -1478,7 +1477,7 @@ ArgMaxValidator::ArgMaxValidator(const std::string& _type): LayerValidator(_type void CTCGreedyDecoderValidator::checkParams(const CNNLayer* layer) { int flag = layer->GetParamAsInt("ctc_merge_repeated", 0); if (flag != 0 && flag != 1) { - THROW_IE_EXCEPTION << "CTCGreedyDecoder layer parameter ctc_merge_repeated is invalid"; + IE_THROW() << "CTCGreedyDecoder layer parameter ctc_merge_repeated is invalid"; } } @@ -1491,11 +1490,11 @@ CTCGreedyDecoderValidator::CTCGreedyDecoderValidator(const std::string& _type): void DetectionOutputValidator::checkParams(const CNNLayer* layer) { unsigned int num_classes = layer->GetParamAsUInt("num_classes"); if (num_classes == 0) { - THROW_IE_EXCEPTION << "num_classes parameter of DetectionOutput layer can't be equal to zero"; + IE_THROW() << "num_classes parameter of DetectionOutput layer can't be equal to zero"; } float _nms_threshold = layer->GetParamAsFloat("nms_threshold"); if (_nms_threshold < 0) { - THROW_IE_EXCEPTION << "nms_threshold parameter of DetectionOutput layer can't be less then zero"; + IE_THROW() << "nms_threshold parameter of DetectionOutput layer can't be less then zero"; } int _keep_top_k = layer->GetParamAsUInt("keep_top_k", -1); (void)_keep_top_k; @@ -1527,7 +1526,7 @@ void DetectionOutputValidator::checkParams(const CNNLayer* layer) { if (layer->CheckParamPresence("confidence_threshold")) { float _confidence_threshold = layer->GetParamAsFloat("confidence_threshold"); if (_confidence_threshold < 0) { - THROW_IE_EXCEPTION << "_nms_threshold parameter of DetectionOutput layer can't be less then zero"; + IE_THROW() << "_nms_threshold parameter of DetectionOutput layer can't be less then zero"; } } if (layer->CheckParamPresence("code_type")) { @@ -1535,7 +1534,7 @@ void DetectionOutputValidator::checkParams(const CNNLayer* layer) { std::vector code_types = {"caffe.PriorBoxParameter.CENTER_SIZE", "caffe.PriorBoxParameter.CORNER"}; auto it = std::find(code_types.begin(), code_types.end(), _code_type); if (it == code_types.end()) { - THROW_IE_EXCEPTION << "Parameter code_type of DetectionOutput layer "; + IE_THROW() << "Parameter code_type of DetectionOutput layer "; } } } @@ -1555,18 +1554,18 @@ void InterpValidator::checkShapes(const CNNLayer* layer, const std::vectorGetParamAsFloat("factor", 0); - if (factor < 0) THROW_IE_EXCEPTION << "factor parameter of Interp layer can't be less then zero"; + if (factor < 0) IE_THROW() << "factor parameter of Interp layer can't be less then zero"; float shrink_factor = layer->GetParamAsFloat("shrink_factor", 0); - if (shrink_factor < 0) THROW_IE_EXCEPTION << "shrink_factor parameter of Interp layer can't be less then zero"; + if (shrink_factor < 0) IE_THROW() << "shrink_factor parameter of Interp layer can't be less then zero"; float zoom_factor = (layer->GetParamAsFloat("zoom_factor", 0)); - if (zoom_factor < 0) THROW_IE_EXCEPTION << "zoom_factor parameter of Interp layer can't be less then zero"; + if (zoom_factor < 0) IE_THROW() << "zoom_factor parameter of Interp layer can't be less then zero"; bool noFactor = IS_ZERO(factor) && IS_ZERO(shrink_factor) && IS_ZERO(zoom_factor); auto height = layer->GetParamAsUInt("height", 0); auto width = layer->GetParamAsUInt("width", 0); if (noFactor && (height == 0 || width == 0)) { - THROW_IE_EXCEPTION << "Can't reshape without factor, or target resolution. " + IE_THROW() << "Can't reshape without factor, or target resolution. " << "Supported attributes: factor, shrink_factor, zoom_factor, height, width"; } } @@ -1596,17 +1595,17 @@ void PriorBoxValidator::checkParams(const CNNLayer* layer) { std::vector variance_ = layer->GetParamAsFloats("variance", {}); for (float i : variance_) { if (i < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer variance parameter is invalid. " + IE_THROW() << "The value of PriorBox layer variance parameter is invalid. " "Positive value is expected"; } } float step_ = layer->GetParamAsFloat("step", 0); if (step_ < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer step_ parameter is invalid"; + IE_THROW() << "The value of PriorBox layer step_ parameter is invalid"; } float offset_ = layer->GetParamAsFloat("offset"); if (offset_ < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer offset_ parameter is invalid"; + IE_THROW() << "The value of PriorBox layer offset_ parameter is invalid"; } } @@ -1620,13 +1619,13 @@ void PriorBoxClusteredValidator::checkParams(const CNNLayer* layer) { std::vector widths = layer->GetParamAsFloats("width", {}); for (auto i : widths) { if (i < 0) { - THROW_IE_EXCEPTION << "The value of PriorBoxClustered layer width parameter is invalid"; + IE_THROW() << "The value of PriorBoxClustered layer width parameter is invalid"; } } std::vector heights = layer->GetParamAsFloats("height", {}); for (auto i : heights) { if (i < 0) { - THROW_IE_EXCEPTION << "The value of PriorBoxClustered layer heights parameter is invalid"; + IE_THROW() << "The value of PriorBoxClustered layer heights parameter is invalid"; } } bool flip = static_cast(layer->GetParamAsInt("flip")); @@ -1635,31 +1634,31 @@ void PriorBoxClusteredValidator::checkParams(const CNNLayer* layer) { (void)clip_; float offset_ = layer->GetParamAsFloat("offset"); if (offset_ < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer offset_ parameter is invalid"; + IE_THROW() << "The value of PriorBox layer offset_ parameter is invalid"; } std::vector variance_ = layer->GetParamAsFloats("variance", {}); for (float i : variance_) { if (i < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer variance parameter is invalid. " + IE_THROW() << "The value of PriorBox layer variance parameter is invalid. " "Positive value is expected"; } } float step_h_ = layer->GetParamAsFloat("step_h", 0); if (step_h_ < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer step_h_ parameter is invalid"; + IE_THROW() << "The value of PriorBox layer step_h_ parameter is invalid"; } float step_w_ = layer->GetParamAsFloat("step_w", 0); if (step_w_ < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer step_w_ parameter is invalid"; + IE_THROW() << "The value of PriorBox layer step_w_ parameter is invalid"; } float img_h_ = layer->GetParamAsFloat("img_h", 0); if (img_h_ < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer img_h_ parameter is invalid"; + IE_THROW() << "The value of PriorBox layer img_h_ parameter is invalid"; } float img_w_ = layer->GetParamAsFloat("img_w", 0); if (img_w_ < 0) { - THROW_IE_EXCEPTION << "The value of PriorBox layer img_w_ parameter is invalid"; + IE_THROW() << "The value of PriorBox layer img_w_ parameter is invalid"; } } @@ -1692,7 +1691,7 @@ void ProposalValidator::checkParams(const CNNLayer* layer) { if (layer->CheckParamPresence("nms_thresh")) { float nms_thresh_ = layer->GetParamAsFloat("nms_thresh"); if (nms_thresh_ < 0) { - THROW_IE_EXCEPTION << "The value of Proposal layer nms_thresh_ parameter is invalid"; + IE_THROW() << "The value of Proposal layer nms_thresh_ parameter is invalid"; } } } @@ -1711,7 +1710,7 @@ void PSROIPoolingValidator::checkParams(const CNNLayer* layer) { if (layer->CheckParamPresence("spatial_scale")) { float spatial_scale_ = layer->GetParamAsFloat("spatial_scale"); if (spatial_scale_ < 0) { - THROW_IE_EXCEPTION << "The value of PSROIPooling layer spatial_scale_ parameter is invalid"; + IE_THROW() << "The value of PSROIPooling layer spatial_scale_ parameter is invalid"; } } } @@ -1747,14 +1746,14 @@ void ResampleValidator::checkParams(const CNNLayer* layer) { auto antialias = static_cast(layer->GetParamAsInt("antialias")); if (antialias != 0 && antialias != 1) { - THROW_IE_EXCEPTION << "The value of resample layer antialias parameter is invalid"; + IE_THROW() << "The value of resample layer antialias parameter is invalid"; } } if (layer->CheckParamPresence("type")) { std::string type = layer->GetParamAsString("type"); if (type != "caffe.ResampleParameter.NEAREST" && type != "caffe.ResampleParameter.CUBIC" && type != "caffe.ResampleParameter.LINEAR") { - THROW_IE_EXCEPTION << "The value of resample layer type parameter is invalid"; + IE_THROW() << "The value of resample layer type parameter is invalid"; } } } @@ -1772,7 +1771,7 @@ void ROIPoolingValidator::checkParams(const CNNLayer* layer) { (void)pooled_w; float spatial_scale = layer->GetParamAsFloat("spatial_scale"); if (spatial_scale < 0) { - THROW_IE_EXCEPTION << "The value of ROIPooling layer spatial_scale parameter is invalid"; + IE_THROW() << "The value of ROIPooling layer spatial_scale parameter is invalid"; } } @@ -1801,7 +1800,7 @@ void SimplerNMSValidator::checkParams(const CNNLayer* layer) { if (layer->CheckParamPresence("iou_threshold")) { float iou_threshold_ = layer->GetParamAsFloat("iou_threshold"); if (iou_threshold_ < 0) { - THROW_IE_EXCEPTION << "The value of SimplerNMS layer iou_threshold_ parameter is invalid"; + IE_THROW() << "The value of SimplerNMS layer iou_threshold_ parameter is invalid"; } } if (layer->CheckParamPresence("scale")) { @@ -1811,7 +1810,7 @@ void SimplerNMSValidator::checkParams(const CNNLayer* layer) { if (layer->CheckParamPresence("cls_threshold")) { float cls_threshold = layer->GetParamAsFloat("cls_threshold"); if (cls_threshold < 0) { - THROW_IE_EXCEPTION << "The value of SimplerNMS layer cls_threshold parameter is invalid"; + IE_THROW() << "The value of SimplerNMS layer cls_threshold parameter is invalid"; } } } @@ -1907,7 +1906,7 @@ MemoryValidator::MemoryValidator(const std::string& _type): LayerValidator(_type void MemoryValidator::checkParams(const CNNLayer* layer) { int size = layer->GetParamAsInt("size"); if (size != 2) { - THROW_IE_EXCEPTION << "The value of Memory layer size parameter is invalid"; + IE_THROW() << "The value of Memory layer size parameter is invalid"; } } @@ -1921,7 +1920,7 @@ void NormalizeValidator::checkParams(const CNNLayer* layer) { if (layer->CheckParamPresence("eps")) { float eps = layer->GetParamAsFloat("eps"); if (eps < 0) { - THROW_IE_EXCEPTION << "The value of Normalize layer eps parameter is invalid"; + IE_THROW() << "The value of Normalize layer eps parameter is invalid"; } } } @@ -1932,13 +1931,13 @@ void SelectValidator::checkShapes(const CNNLayer* layer, const std::vectorname << "' take 3 inputs, but actually it has: " << numInputs; + if (numOfInputs != numInputs) IE_THROW() << "Select layer with name '" << layer->name << "' take 3 inputs, but actually it has: " << numInputs; size_t new_rank = inShapes[ELSE].size(); new_rank = std::max(new_rank, inShapes[THEN].size()); if (inShapes[CONDITION].size() > new_rank) - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name << "' has 'Mask' input's rank more than broadcasted 'Then' and 'Else' inputs' ranks"; + IE_THROW() << "Select layer with name '" << layer->name << "' has 'Mask' input's rank more than broadcasted 'Then' and 'Else' inputs' ranks"; for (size_t i = 0; i < new_rank; i++) { auto in1 = i < (new_rank - inShapes[THEN].size()) ? 1 : inShapes[THEN][i - (new_rank - inShapes[THEN].size())]; @@ -1948,14 +1947,14 @@ void SelectValidator::checkShapes(const CNNLayer* layer, const std::vectorname << "' has incompatible 'Then' and 'Else' inputs' shapes"; + IE_THROW() << "Select layer with name '" << layer->name << "' has incompatible 'Then' and 'Else' inputs' shapes"; auto in0 = i < (new_rank - inShapes[CONDITION].size()) ? 1 : inShapes[CONDITION][i - (new_rank - inShapes[CONDITION].size())]; if (tmp == in0 || in0 == 1) tmp = std::max(tmp, in0); else - THROW_IE_EXCEPTION << "Select layer with name '" << layer->name + IE_THROW() << "Select layer with name '" << layer->name << "' has incompatible 'Mask' input's shapes and broadcasted 'Then' and 'Else' inputs' shapes"; } } @@ -2019,15 +2018,15 @@ void QuantizeValidator::checkParams(const CNNLayer* layer) { void QuantizeValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of QuantizeLayer class"; + IE_THROW() << "Layer is not instance of QuantizeLayer class"; } size_t numInputs = inShapes.size(); - if (numInputs != 5) THROW_IE_EXCEPTION << "Quantize can take only 5 inputs, but actually it has: " << numInputs; + if (numInputs != 5) IE_THROW() << "Quantize can take only 5 inputs, but actually it has: " << numInputs; auto dims0 = inShapes[0]; if (dims0.size() < 1) { - THROW_IE_EXCEPTION << "Quantize input0 shape must have at least 1 dimension"; + IE_THROW() << "Quantize input0 shape must have at least 1 dimension"; } } @@ -2036,7 +2035,7 @@ BinaryConvolutionValidator::BinaryConvolutionValidator(const std::string& _type) void BinaryConvolutionValidator::checkParams(const CNNLayer* layer) { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << "Layer is not instance of BinaryConvolutionLayer class"; + IE_THROW() << "Layer is not instance of BinaryConvolutionLayer class"; } } @@ -2044,7 +2043,7 @@ void BinaryConvolutionValidator::checkCorrespondence(const CNNLayer* layer, const std::map& blobs, const vector& inShapes) const { auto binConvLayer = dynamic_cast(layer); - if (!binConvLayer) THROW_IE_EXCEPTION << "Layer is not instance of BinaryConvolutionLayer class"; + if (!binConvLayer) IE_THROW() << "Layer is not instance of BinaryConvolutionLayer class"; } void BinaryConvolutionValidator::checkShapes(const CNNLayer* layer, const std::vector& inShapes) const { @@ -2066,7 +2065,7 @@ void ReduceValidator::checkParams(const CNNLayer* layer) { void ReduceValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { size_t numInputs = inShapes.size(); if (numInputs > 2) - THROW_IE_EXCEPTION << layer->name << " Reduce can take up to 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Reduce can take up to 2 inputs, but actually it has: " << numInputs; } GatherTreeValidator::GatherTreeValidator(const std::string& _type): LayerValidator(_type) {} @@ -2078,15 +2077,15 @@ void GatherTreeValidator::checkParams(const CNNLayer* layer) { void GatherTreeValidator::checkShapes(const CNNLayer* layer, const std::vector& inShapes) const { checkNumOfInput(inShapes, {4}); if (inShapes[0].size() != 3) - THROW_IE_EXCEPTION << layer->name << " step_idx tensor should be 3 dimension " << inShapes[0].size(); + IE_THROW() << layer->name << " step_idx tensor should be 3 dimension " << inShapes[0].size(); if (inShapes[1].size() != 3) - THROW_IE_EXCEPTION << layer->name << " parent_idx tensor should be 3 dimension " << inShapes[1].size(); + IE_THROW() << layer->name << " parent_idx tensor should be 3 dimension " << inShapes[1].size(); if (inShapes[2].size() != 1) - THROW_IE_EXCEPTION << layer->name << " max_seq_len vector should be 1 dimension " << inShapes[2].size(); + IE_THROW() << layer->name << " max_seq_len vector should be 1 dimension " << inShapes[2].size(); if (inShapes[3].size() != 1) - THROW_IE_EXCEPTION << layer->name << " end_token vector should be 1 dimension " << inShapes[3].size(); + IE_THROW() << layer->name << " end_token vector should be 1 dimension " << inShapes[3].size(); if (inShapes[0] != inShapes[1] || inShapes[0][1] != inShapes[2][0]) { - THROW_IE_EXCEPTION << layer->name << " Input tensors dimensions mismatch"; + IE_THROW() << layer->name << " Input tensors dimensions mismatch"; } } @@ -2095,7 +2094,7 @@ TopKValidator::TopKValidator(const std::string& _type): LayerValidator(_type) {} void TopKValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { size_t numInputs = inShapes.size(); if (numInputs != 2) - THROW_IE_EXCEPTION << layer->name << " TopK can take only 2 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " TopK can take only 2 inputs, but actually it has: " << numInputs; } UniqueValidator::UniqueValidator(const std::string& _type): LayerValidator(_type) {} @@ -2103,7 +2102,7 @@ UniqueValidator::UniqueValidator(const std::string& _type): LayerValidator(_type void UniqueValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { size_t numInputs = inShapes.size(); if (numInputs != 1) - THROW_IE_EXCEPTION << layer->name << " Unique can take only 1 input, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Unique can take only 1 input, but actually it has: " << numInputs; } NMSValidator::NMSValidator(const std::string& _type): LayerValidator(_type) {} @@ -2115,30 +2114,30 @@ void NMSValidator::checkParams(const CNNLayer* layer) { void NMSValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { size_t numInputs = inShapes.size(); if (numInputs < 2 || numInputs > 6) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " NonMaxSuppression can take 2 - 6 inputs, but actually it has: " << numInputs; if (inShapes[0].size() != 3 || inShapes[0][2] != 4) - THROW_IE_EXCEPTION << layer->name << " 'boxes' should be with shape [num_batches, spatial_dimension, 4]"; + IE_THROW() << layer->name << " 'boxes' should be with shape [num_batches, spatial_dimension, 4]"; if (inShapes[1].size() != 3) - THROW_IE_EXCEPTION << layer->name + IE_THROW() << layer->name << " 'scores' should be with shape [num_batches, num_classes, spatial_dimension]"; if (inShapes[0][0] != inShapes[1][0]) - THROW_IE_EXCEPTION << layer->name << " num_batches is different in 'boxes' and 'scores' tensors"; + IE_THROW() << layer->name << " num_batches is different in 'boxes' and 'scores' tensors"; if (inShapes[0][1] != inShapes[1][2]) - THROW_IE_EXCEPTION << layer->name << " spatial_dimension is different in 'boxes' and 'scores' tensors"; + IE_THROW() << layer->name << " spatial_dimension is different in 'boxes' and 'scores' tensors"; if (numInputs > 2 && inShapes[2].size() && inShapes[2][0] != 1) - THROW_IE_EXCEPTION << layer->name << " 'max_output_boxes_per_class' should be scalar"; + IE_THROW() << layer->name << " 'max_output_boxes_per_class' should be scalar"; if (numInputs > 3 && inShapes[3].size() && inShapes[3][0] != 1) - THROW_IE_EXCEPTION << layer->name << " 'iou_threshold' should be scalar"; + IE_THROW() << layer->name << " 'iou_threshold' should be scalar"; if (numInputs > 4 && inShapes[4].size() && inShapes[4][0] != 1) - THROW_IE_EXCEPTION << layer->name << " 'score_threshold' should be scalar"; + IE_THROW() << layer->name << " 'score_threshold' should be scalar"; } ScatterUpdateValidator::ScatterUpdateValidator(const std::string& _type): LayerValidator(_type) {} @@ -2146,12 +2145,12 @@ ScatterUpdateValidator::ScatterUpdateValidator(const std::string& _type): LayerV void ScatterUpdateValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of ScatterUpdateLayer class"; + IE_THROW() << layer->name << " Layer is not instance of ScatterUpdateLayer class"; } size_t numInputs = inShapes.size(); if (numInputs != 4) - THROW_IE_EXCEPTION << layer->name << " Scatter can take only 4 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Scatter can take only 4 inputs, but actually it has: " << numInputs; static constexpr int DATA = 0; static constexpr int INDICES = 1; @@ -2159,32 +2158,32 @@ void ScatterUpdateValidator::checkShapes(const CNNLayer* layer, const vectorname << " 'Data' tensor rank must be >= 1"; + IE_THROW() << layer->name << " 'Data' tensor rank must be >= 1"; if (inShapes[INDICES].size() < 1) - THROW_IE_EXCEPTION << layer->name << " 'Indices' tensor rank must be >= 1"; + IE_THROW() << layer->name << " 'Indices' tensor rank must be >= 1"; if (inShapes[UPDATES].size() < 1) - THROW_IE_EXCEPTION << layer->name << " 'Updates' tensor rank must be >= 1"; + IE_THROW() << layer->name << " 'Updates' tensor rank must be >= 1"; if (!(inShapes[AXIS].size() == 0 || (inShapes[AXIS].size() == 1 && inShapes[AXIS][0] == 1))) - THROW_IE_EXCEPTION << layer->name << " 'Axis' tensor must be scalar, or 1D array of 1 element"; + IE_THROW() << layer->name << " 'Axis' tensor must be scalar, or 1D array of 1 element"; if (inShapes[UPDATES].size() != inShapes[INDICES].size() + inShapes[DATA].size() - 1) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'indexes' and 'updates' tensors dimension"; + IE_THROW() << layer->name << " Incorrect number of 'indexes' and 'updates' tensors dimension"; Precision inIdxPrecision = layer->insData[INDICES].lock()->getTensorDesc().getPrecision(); if (inIdxPrecision != Precision::I32 && inIdxPrecision != Precision::I64) - THROW_IE_EXCEPTION << layer->name << " Incorrect input 'Indices' precision. Only I32 or I64 are supported!"; + IE_THROW() << layer->name << " Incorrect input 'Indices' precision. Only I32 or I64 are supported!"; Precision inAxisPrecision = layer->insData[AXIS].lock()->getTensorDesc().getPrecision(); if (inAxisPrecision != Precision::I32 && inAxisPrecision != Precision::I64) - THROW_IE_EXCEPTION << layer->name << " Incorrect input 'Axis' precision. Only I32 or I64 are supported!"; + IE_THROW() << layer->name << " Incorrect input 'Axis' precision. Only I32 or I64 are supported!"; if (layer->insData[DATA].lock()->getTensorDesc().getPrecision() != layer->insData[UPDATES].lock()->getTensorDesc().getPrecision()) - THROW_IE_EXCEPTION << layer->name << " Precision should be equal for input tensors 'Data' and 'Updates'"; + IE_THROW() << layer->name << " Precision should be equal for input tensors 'Data' and 'Updates'"; } ScatterElementsUpdateValidator::ScatterElementsUpdateValidator(const std::string& _type): LayerValidator(_type) {} @@ -2192,12 +2191,12 @@ ScatterElementsUpdateValidator::ScatterElementsUpdateValidator(const std::string void ScatterElementsUpdateValidator::checkShapes(const CNNLayer* layer, const vector& inShapes) const { auto casted = dynamic_cast(layer); if (!casted) { - THROW_IE_EXCEPTION << layer->name << " Layer is not instance of ScatterElementsUpdateLayer class"; + IE_THROW() << layer->name << " Layer is not instance of ScatterElementsUpdateLayer class"; } size_t numInputs = inShapes.size(); if (numInputs != 4) - THROW_IE_EXCEPTION << layer->name << " Scatter can take only 4 inputs, but actually it has: " << numInputs; + IE_THROW() << layer->name << " Scatter can take only 4 inputs, but actually it has: " << numInputs; static constexpr int DATA = 0; static constexpr int INDICES = 1; @@ -2205,35 +2204,35 @@ void ScatterElementsUpdateValidator::checkShapes(const CNNLayer* layer, const ve static constexpr int AXIS = 3; if (inShapes[DATA].size() < 1) - THROW_IE_EXCEPTION << layer->name << " 'Data' tensor rank must be >= 1"; + IE_THROW() << layer->name << " 'Data' tensor rank must be >= 1"; if (inShapes[INDICES].size() < 1) - THROW_IE_EXCEPTION << layer->name << " 'Indices' tensor rank must be >= 1"; + IE_THROW() << layer->name << " 'Indices' tensor rank must be >= 1"; if (inShapes[UPDATES].size() < 1) - THROW_IE_EXCEPTION << layer->name << " 'Updates' tensor rank must be >= 1"; + IE_THROW() << layer->name << " 'Updates' tensor rank must be >= 1"; if (!(inShapes[AXIS].size() == 0 || (inShapes[AXIS].size() == 1 && inShapes[AXIS][0] == 1))) - THROW_IE_EXCEPTION << layer->name << " 'Axis' tensor must be scalar, or 1D array of 1 element"; + IE_THROW() << layer->name << " 'Axis' tensor must be scalar, or 1D array of 1 element"; if (inShapes[INDICES].size() != inShapes[DATA].size()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'indexes' tensors dimension"; + IE_THROW() << layer->name << " Incorrect number of 'indexes' tensors dimension"; if (inShapes[UPDATES].size() != inShapes[DATA].size()) - THROW_IE_EXCEPTION << layer->name << " Incorrect number of 'updates' tensors dimension"; + IE_THROW() << layer->name << " Incorrect number of 'updates' tensors dimension"; Precision inIdxPrecision = layer->insData[INDICES].lock()->getTensorDesc().getPrecision(); if (inIdxPrecision != Precision::I32 && inIdxPrecision != Precision::I64) - THROW_IE_EXCEPTION << layer->name << " Incorrect input 'Indices' precision. Only I32 or I64 are supported!"; + IE_THROW() << layer->name << " Incorrect input 'Indices' precision. Only I32 or I64 are supported!"; Precision inAxisPrecision = layer->insData[AXIS].lock()->getTensorDesc().getPrecision(); if (inAxisPrecision != Precision::I32 && inIdxPrecision != Precision::I64) - THROW_IE_EXCEPTION << layer->name << " Incorrect input 'Axis' precision. Only I32 or I64 are supported!"; + IE_THROW() << layer->name << " Incorrect input 'Axis' precision. Only I32 or I64 are supported!"; if (layer->insData[DATA].lock()->getTensorDesc().getPrecision() != layer->insData[UPDATES].lock()->getTensorDesc().getPrecision()) - THROW_IE_EXCEPTION << layer->name << " Precision should be equal for input tensors 'Data' and 'Updates'"; + IE_THROW() << layer->name << " Precision should be equal for input tensors 'Data' and 'Updates'"; } #define REG_LAYER_VALIDATOR_FOR_TYPE(__validator, __type) _validators[#__type] = std::make_shared<__validator>(#__type) diff --git a/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.hpp b/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.hpp index 2c16e02dff176a..1c53c70f9cdd28 100644 --- a/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.hpp +++ b/inference-engine/src/readers/ir_reader_v7/ie_layer_validators.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/readers/ir_reader_v7/parsers.h b/inference-engine/src/readers/ir_reader_v7/parsers.h index ce6bc3a33adce0..0493c39a295ea3 100644 --- a/inference-engine/src/readers/ir_reader_v7/parsers.h +++ b/inference-engine/src/readers/ir_reader_v7/parsers.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/readers/onnx_reader/CMakeLists.txt b/inference-engine/src/readers/onnx_reader/CMakeLists.txt index 0a14e8cf84b003..480eea2c699109 100644 --- a/inference-engine/src/readers/onnx_reader/CMakeLists.txt +++ b/inference-engine/src/readers/onnx_reader/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/readers/onnx_reader/ie_onnx_reader.cpp b/inference-engine/src/readers/onnx_reader/ie_onnx_reader.cpp index 6c3f5bb09336db..0af45c259aea2d 100644 --- a/inference-engine/src/readers/onnx_reader/ie_onnx_reader.cpp +++ b/inference-engine/src/readers/onnx_reader/ie_onnx_reader.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -65,12 +65,6 @@ CNNNetwork ONNXReader::read(std::istream& model, const std::vector& reader) { + reader = std::make_shared(); } diff --git a/inference-engine/src/readers/onnx_reader/ie_onnx_reader.hpp b/inference-engine/src/readers/onnx_reader/ie_onnx_reader.hpp index 740eeefbd80d86..7d797a4230a96e 100644 --- a/inference-engine/src/readers/onnx_reader/ie_onnx_reader.hpp +++ b/inference-engine/src/readers/onnx_reader/ie_onnx_reader.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,9 +10,6 @@ namespace InferenceEngine { class ONNXReader: public IReader { public: - void Release() noexcept override { - delete this; - } /** * @brief Checks that reader supports format of the model * @param model stream with model @@ -36,7 +33,7 @@ class ONNXReader: public IReader { * @return CNNNetwork */ CNNNetwork read(std::istream& model, const Blob::CPtr& weights, const std::vector& exts) const override { - THROW_IE_EXCEPTION << "ONNX reader cannot read model with weights!"; + IE_THROW() << "ONNX reader cannot read model with weights!"; } std::vector getDataFileExtensions() const override { diff --git a/inference-engine/src/readers/onnx_reader/onnx_model_validator.cpp b/inference-engine/src/readers/onnx_reader/onnx_model_validator.cpp index fa7660dae2fd19..26e1b020e9468e 100644 --- a/inference-engine/src/readers/onnx_reader/onnx_model_validator.cpp +++ b/inference-engine/src/readers/onnx_reader/onnx_model_validator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/readers/onnx_reader/onnx_model_validator.hpp b/inference-engine/src/readers/onnx_reader/onnx_model_validator.hpp index 337a693f78ff18..ad7af077cd72c5 100644 --- a/inference-engine/src/readers/onnx_reader/onnx_model_validator.hpp +++ b/inference-engine/src/readers/onnx_reader/onnx_model_validator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/readers/reader_api/ie_blob_stream.cpp b/inference-engine/src/readers/reader_api/ie_blob_stream.cpp deleted file mode 100644 index fb565cb56c38a3..00000000000000 --- a/inference-engine/src/readers/reader_api/ie_blob_stream.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "ie_blob_stream.hpp" - -#include -#include - -InferenceEngine::details::BlobStream::BlobBuffer::BlobBuffer(const InferenceEngine::Blob::CPtr& blob) { - char* data = nullptr; - std::streampos size; - if (!blob) { - size = 0; - } else { - data = blob->cbuffer().as(); - size = blob->byteSize(); - } - setg(data, data, data + size); -} -InferenceEngine::details::BlobStream::BlobBuffer::~BlobBuffer() {} - -std::streampos InferenceEngine::details::BlobStream::BlobBuffer::seekpos(std::streampos sp, std::ios_base::openmode which) { - if (!(which & ios_base::in)) - return streampos(-1); - if (sp < 0 || sp > egptr() - eback()) - return streampos(-1); - setg(eback(), eback() + sp, egptr()); - return sp; -} -std::streampos InferenceEngine::details::BlobStream::BlobBuffer::seekoff(std::streamoff off, std::ios_base::seekdir way, std::ios_base::openmode which) { - if (!(which & std::ios_base::in)) - return streampos(-1); - switch (way) { - default: - case std::ios_base::beg: - setg(eback(), eback() + off, egptr()); - break; - case std::ios_base::cur: - gbump(static_cast(off)); - break; - case std::ios_base::end: - setg(eback(), egptr() + off, egptr()); - break; - } - return gptr() - eback(); -} - -InferenceEngine::Blob::CPtr InferenceEngine::details::BlobStream::getBlob() { - return blob; -} - - -#if defined __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wreorder" -#endif - -InferenceEngine::details::BlobStream::BlobStream(const InferenceEngine::Blob::CPtr& blob) : - buffer(blob), std::ios(0), std::istream(&buffer), blob(blob) {} - -#if defined __GNUC__ -# pragma GCC diagnostic pop -#endif - -InferenceEngine::details::BlobStream::~BlobStream() {} diff --git a/inference-engine/src/readers/reader_api/ie_blob_stream.hpp b/inference-engine/src/readers/reader_api/ie_blob_stream.hpp deleted file mode 100644 index 53dbabe21761ac..00000000000000 --- a/inference-engine/src/readers/reader_api/ie_blob_stream.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (C) 2018-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include -#include - -namespace InferenceEngine { -namespace details { - -class BlobStream: public std::istream { -private: - class BlobBuffer: public std::streambuf { - public: - BlobBuffer(const Blob::CPtr& blob); - ~BlobBuffer() override; - std::streampos seekpos(std::streampos sp, std::ios_base::openmode which) override; - std::streampos seekoff(std::streamoff off, std::ios_base::seekdir way, std::ios_base::openmode which) override; - }; - -#if defined __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wreorder" -#endif - - BlobBuffer buffer; - Blob::CPtr blob; - -#if defined __GNUC__ -# pragma GCC diagnostic pop -#endif - -public: - BlobStream(const Blob::CPtr& blob); - ~BlobStream() override; - - Blob::CPtr getBlob(); -}; - - -} // namespace details -} // namespace InferenceEngine diff --git a/inference-engine/src/readers/reader_api/ie_reader.hpp b/inference-engine/src/readers/reader_api/ie_reader.hpp index 1d52e0cdbad74a..9b023e8482406b 100644 --- a/inference-engine/src/readers/reader_api/ie_reader.hpp +++ b/inference-engine/src/readers/reader_api/ie_reader.hpp @@ -1,10 +1,9 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once -#include
#include #include #include @@ -17,7 +16,7 @@ namespace InferenceEngine { /** * @brief IReader an abstract interface for Inference Engine readers */ -class IReader: public details::IRelease { +class IReader: public std::enable_shared_from_this { public: /** * @brief Checks that reader supports format of the model @@ -49,15 +48,15 @@ class IReader: public details::IRelease { * @return vector of file extensions, for example the reader for OpenVINO IR returns {"bin"} */ virtual std::vector getDataFileExtensions() const = 0; + +protected: + ~IReader() = default; }; /** * @brief Creates the default instance of the reader - * - * @param reader Reader interface - * @param resp Response description - * @return Status code + * @return Reader interface */ -INFERENCE_PLUGIN_API(StatusCode) CreateReader(IReader*& reader, ResponseDesc* resp) noexcept; +INFERENCE_PLUGIN_API(void) CreateReader(std::shared_ptr& reader); } // namespace InferenceEngine diff --git a/inference-engine/src/snippets/CMakeLists.txt b/inference-engine/src/snippets/CMakeLists.txt new file mode 100644 index 00000000000000..482f7e52bec362 --- /dev/null +++ b/inference-engine/src/snippets/CMakeLists.txt @@ -0,0 +1,58 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set (TARGET_NAME "inference_engine_snippets") + +set(PUBLIC_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") + +file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) +file(GLOB_RECURSE PUBLIC_HEADERS ${PUBLIC_HEADERS_DIR}/snippets/*.hpp) + +# Create named folders for the sources within the .vcproj +# Empty name lists them directly under the .vcproj + +source_group("src" FILES ${LIBRARY_SRC}) +source_group("include" FILES ${PUBLIC_HEADERS}) + +# Create shared library + +add_library(${TARGET_NAME} SHARED + ${LIBRARY_SRC} + ${PUBLIC_HEADERS}) + +ie_faster_build(${TARGET_NAME} + UNITY +) + +ie_add_vs_version_file(NAME ${TARGET_NAME} + FILEDESCRIPTION "Inference Engine Snippets transformations library") + +target_compile_definitions(${TARGET_NAME} PRIVATE inference_engine_transformations_EXPORTS) + +target_link_libraries(${TARGET_NAME} PUBLIC inference_engine_transformations ${NGRAPH_LIBRARIES} + PRIVATE ${NGRAPH_REF_LIBRARIES}) + +target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR} + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) + +add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) + +ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME}) + +ie_mark_target_as_cc(${TARGET_NAME}) + +# LTO + +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) + +# developer package + +ie_developer_export_targets(${TARGET_NAME}) + +# install + +install(TARGETS ${TARGET_NAME} + RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT core + ARCHIVE DESTINATION ${IE_CPACK_ARCHIVE_PATH} COMPONENT core + LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT core) diff --git a/inference-engine/src/snippets/include/snippets/generator.hpp b/inference-engine/src/snippets/include/snippets/generator.hpp new file mode 100644 index 00000000000000..a7408134c5e657 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/generator.hpp @@ -0,0 +1,123 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief A file contains public interface for target indepenent code generator. + * @file generator.hpp + */ +#pragma once + +#include +#include "snippets_isa.hpp" + +namespace ngraph { +namespace snippets { + +using code = const uint8_t *; +using RegInfo = std::pair, std::vector>; + +TRANSFORMATIONS_API auto getRegisters(std::shared_ptr& n) -> ngraph::snippets::RegInfo; + +/** + * @interface Emitter + * @brief Base class for all target specific code emitters used by generator. + * @ingroup snippets + */ +class TRANSFORMATIONS_API Emitter { +public: + /** + * @brief Default constructor + */ + Emitter(const std::shared_ptr& n) { + } + + /** + * @brief called by generator to generate code to produce target code for a specific operation + * @param in vector of vector argument registers + * @param out vector of vector resulting registers + * @param pool optional vector of free vector registers which might be used inside method + * @param gpr vector of free generam puproce registers which might be used inside method + * @return void + */ + virtual void emit_code(const std::vector& in, + const std::vector& out, + const std::vector& pool = {}, + const std::vector& gpr = {}) const = 0; + + /** + * @brief called by generator to generate data section, if needed for a specific operation + * @return void + */ + virtual void emit_data() const { + } +}; + +/** + * @interface TargetMachine + * @brief Base class Target machine representation. Target derives from this class to provide generator information about supported emittors + * @ingroup snippets + */ +class TRANSFORMATIONS_API TargetMachine { +public: + /** + * @brief called by generator to all the emittors available for a target machine + * @return a map by node's type info with callbacks to create an instance of emmitter for corresponding operation type + */ + virtual auto getJitters() -> std::map(std::shared_ptr)>>{ + return {}; + } +}; + +/** + * @interface Schedule + * @brief Return scheduling information and pointer to generated kernel code + * @ingroup snippets + */ +class TRANSFORMATIONS_API Schedule { +public: + /** + * @brief Default constructor + */ + Schedule() : work_size({}), is_flat(false), ptr(nullptr) {} + /** + * @brief Default to create schedule out of specific parameters + * @param ws work size for kernel execution + * @param f can this kernel be linearided to 1D range + * @param p pointer to generated code + */ + Schedule(const Shape& ws, bool f, code p) : work_size(ws), is_flat(f), ptr(p) {} + + Shape work_size {}; + bool is_flat {false}; + code ptr {nullptr}; +}; + +/** + * @interface Generator + * @brief Target independent code generator interface + * @ingroup snippets + */ +class TRANSFORMATIONS_API Generator { +public: + /** + * @brief Default constructor + */ + Generator() = default; + /** + * @brief Default destructor + */ + virtual ~Generator() = default; + /** + * @brief virtual method any specific implementation should implement + * @param f runction in canonical for for table-based code generation + * @return pointer to generated code + */ + virtual code generate(std::shared_ptr& f) const = 0; + +protected: + mutable std::map(std::shared_ptr)>> jitters; +}; + +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/blockedload.hpp b/inference-engine/src/snippets/include/snippets/op/blockedload.hpp new file mode 100644 index 00000000000000..39f56855184ad9 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/blockedload.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include "load.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface BlockedLoad + * @brief Generated by Canonicalization step for blocked data (NCHWc) to be loaded + * @ingroup snippets + */ +class TRANSFORMATIONS_API BlockedLoad : public Load { +public: + NGRAPH_RTTI_DECLARATION; + + BlockedLoad(const Output& x); + BlockedLoad() = default; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0)); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/blockedparameter.hpp b/inference-engine/src/snippets/include/snippets/op/blockedparameter.hpp new file mode 100644 index 00000000000000..75055aeef8b8c3 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/blockedparameter.hpp @@ -0,0 +1,38 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface BlockedParameter + * @brief Represents blocked input (NCHWc) for a subgraph + * @ingroup snippets + */ +class TRANSFORMATIONS_API BlockedParameter : public ngraph::op::Parameter { +public: + NGRAPH_RTTI_DECLARATION; + + BlockedParameter() = default; + BlockedParameter(const ngraph::element::Type& element_type, const PartialShape& pshape) + : Parameter(element_type, pshape) { + } + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(m_element_type, m_partial_shape); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/broadcastload.hpp b/inference-engine/src/snippets/include/snippets/op/broadcastload.hpp new file mode 100644 index 00000000000000..65aea8f3174f20 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/broadcastload.hpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include "ngraph/op/op.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface BroadcastLoad + * @brief Is generated for broadcasting by least varying dimension for non-blocked cases and the second varying dimension for blocked + * @ingroup snippets + */ +class TRANSFORMATIONS_API BroadcastLoad : public BroadcastMove { +public: + NGRAPH_RTTI_DECLARATION; + + BroadcastLoad(const Output& x, Shape output_shape); + BroadcastLoad() = default; + + bool visit_attributes(AttributeVisitor& visitor) override; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + + void validate_and_infer_types() override; + + void set_broadcast_info(const Shape& bct) { + broadcast_info = bct; + } + + bool is_broadcast(size_t idx) { + return broadcast_info[idx] == 1; + } + +private: + Shape broadcast_info; +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/broadcastmove.hpp b/inference-engine/src/snippets/include/snippets/op/broadcastmove.hpp new file mode 100644 index 00000000000000..df75d24d8e4989 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/broadcastmove.hpp @@ -0,0 +1,41 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include "ngraph/op/op.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface BroadcastMove + * @brief Added to a subgraph if explicit broadcast instruction should be generated + * @ingroup snippets + */ +class TRANSFORMATIONS_API BroadcastMove : public ngraph::op::Op { +public: + NGRAPH_RTTI_DECLARATION; + + BroadcastMove(const Output& x, Shape output_shape); + BroadcastMove() = default; + + bool visit_attributes(AttributeVisitor& visitor) override; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + + void validate_and_infer_types() override; + + bool evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const override; + +protected: + Shape output_shape; +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/load.hpp b/inference-engine/src/snippets/include/snippets/op/load.hpp new file mode 100644 index 00000000000000..aac69f1f399692 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/load.hpp @@ -0,0 +1,42 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface Load + * @brief Generated by Canonicalization step where explicit load instruction should be emmiteed + * ScalarLoad == scalar instruction + post increment + * Load (VectorLoad) == vector instruction + post increment + * BroadcastLoad == scalar instruction - post increment + * BlockedLoad == vector instruction - post increment + * @ingroup snippets + */ +class TRANSFORMATIONS_API Load : public ngraph::op::Op { +public: + NGRAPH_RTTI_DECLARATION; + + Load(const Output& x); + Load() = default; + + bool visit_attributes(AttributeVisitor& visitor) override; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + + void validate_and_infer_types() override; + + bool evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const override; +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/nop.hpp b/inference-engine/src/snippets/include/snippets/op/nop.hpp new file mode 100644 index 00000000000000..8bf6b21a2b6b8e --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/nop.hpp @@ -0,0 +1,30 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include "ngraph/op/op.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface Nop + * @brief Generated by Canonicalization and represents not-an-operation + * @ingroup snippets + */ +class TRANSFORMATIONS_API Nop : public ngraph::op::Op { +public: + NGRAPH_RTTI_DECLARATION; + + Nop(const OutputVector& arguments, const OutputVector& results); + Nop() = default; +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/scalar.hpp b/inference-engine/src/snippets/include/snippets/op/scalar.hpp new file mode 100644 index 00000000000000..c53fa296aa8d28 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/scalar.hpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include "ngraph/op/op.hpp" +#include "ngraph/op/constant.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface Scalar + * @brief Generated by Canonicalization for a scalar constant Shape() == {1} + * @ingroup snippets + */ +class TRANSFORMATIONS_API Scalar : public ngraph::op::Constant { +public: + NGRAPH_RTTI_DECLARATION; + + Scalar() = default; + Scalar(const std::shared_ptr& tensor) : Constant(tensor) {} + template + Scalar(const element::Type& type, Shape shape, const std::vector& values) : Constant(type, shape, values) {} + Scalar(const element::Type& type, const Shape& shape) : Constant(type, shape) {} + template ::value>::type> + Scalar(const element::Type& type, Shape shape, T value) : Constant(type, shape, value) {} + Scalar(const element::Type& type, Shape shape, const std::vector& values) : Constant(type, shape, values) {} + Scalar(const element::Type& type, const Shape& shape, const void* data) : Constant(type, shape, data) {} + + Scalar(const Constant& other) : Constant(other) {} + Scalar(const Scalar& other) : Constant(other) {} + Scalar& operator=(const Scalar&) = delete; + ~Scalar() override {} + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(*this); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/scalarload.hpp b/inference-engine/src/snippets/include/snippets/op/scalarload.hpp new file mode 100644 index 00000000000000..074f094a394994 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/scalarload.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include "load.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface ScalarLoad + * @brief Generated by Canonicalization for a scalar value load to vector register + * @ingroup snippets + */ +class TRANSFORMATIONS_API ScalarLoad : public Load { +public: + NGRAPH_RTTI_DECLARATION; + + ScalarLoad(const Output& x); + ScalarLoad() = default; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0)); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/scalarstore.hpp b/inference-engine/src/snippets/include/snippets/op/scalarstore.hpp new file mode 100644 index 00000000000000..bf11fd78399254 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/scalarstore.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include "store.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface ScalarStore + * @brief Generated by Canonicalization for a scalar value store from vector register + * @ingroup snippets + */ +class TRANSFORMATIONS_API ScalarStore : public Store { +public: + NGRAPH_RTTI_DECLARATION; + + ScalarStore(const Output& x); + ScalarStore() = default; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0)); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/staticpower.hpp b/inference-engine/src/snippets/include/snippets/op/staticpower.hpp new file mode 100644 index 00000000000000..9b0ad04a4e0f5a --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/staticpower.hpp @@ -0,0 +1,44 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include +#include + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface PowerStatic + * @brief Generated by Canonicalization for a spasical case of power innstruction which has constant power value + * @ingroup snippets + */ +class TRANSFORMATIONS_API PowerStatic : public ngraph::op::v1::Power { +public: + NGRAPH_RTTI_DECLARATION; + + PowerStatic() : Power() { + } + + PowerStatic(const Output& arg0, + const Output& arg1, + const ngraph::op::AutoBroadcastSpec& auto_broadcast = + ngraph::op::AutoBroadcastSpec(ngraph::op::AutoBroadcastType::NUMPY)) : Power(arg0, arg1, auto_broadcast) { + NGRAPH_CHECK(!!std::dynamic_pointer_cast(arg1.get_node_shared_ptr()), "second argument must be scalar constant."); + } + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0), new_args.at(1), this->get_autob()); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/store.hpp b/inference-engine/src/snippets/include/snippets/op/store.hpp new file mode 100644 index 00000000000000..5a6226d922d244 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/store.hpp @@ -0,0 +1,38 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface Load + * @brief Generated by Canonicalization step where explicit store instruction should be emmiteed + * @ingroup snippets + */ +class TRANSFORMATIONS_API Store : public ngraph::op::Op { +public: + NGRAPH_RTTI_DECLARATION; + + Store(const Output& x); + Store() = default; + + bool visit_attributes(AttributeVisitor& visitor) override; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + + void validate_and_infer_types() override; + + bool evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const override; +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/subgraph.hpp b/inference-engine/src/snippets/include/snippets/op/subgraph.hpp new file mode 100644 index 00000000000000..b204fdd22fc795 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/subgraph.hpp @@ -0,0 +1,101 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include +#include +#include + +#include "snippets/generator.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface Subgraph + * @brief An operation that is implemented by a function + * @ingroup snippets + */ +class TRANSFORMATIONS_API Subgraph : public ngraph::op::Op { +public: + using BlockedShape = std::tuple; + using BlockedShapeVector = std::vector; + + NGRAPH_RTTI_DECLARATION; + + Subgraph(const OutputVector& args, std::shared_ptr body); + + Subgraph(const NodeVector& args, std::shared_ptr body); + + bool visit_attributes(AttributeVisitor& visitor) override; + + void validate_and_infer_types() override; + + std::shared_ptr clone_with_new_inputs(const OutputVector& inputs) const override; + + std::shared_ptr get_body() const { + return m_body; + } + + std::shared_ptr get_generator() const { + return m_generator; + } + + std::shared_ptr make_canonical_from_this(); + + snippets::Schedule generate(const BlockedShapeVector& output_shapes, const BlockedShapeVector& input_shapes); + bool evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const override; + + /// Set a new body for the op; body needs to satisfy requirements on inputs/outputs + void set_body(std::shared_ptr body); + + // plugin sets generator for a snippet to some specific generator. + // it's going to be replaced with Jitters table later + void set_generator(std::shared_ptr generator); + + void print() const; + void print_statistics(bool verbose); + + static auto wrap_node_as_subgraph(const std::shared_ptr& node) -> std::shared_ptr; + +private: + void canonicalize(const BlockedShapeVector& output_shapes, const BlockedShapeVector& input_shapes); + void convert_to_snippet_dialect(); + + std::shared_ptr m_body; + std::shared_ptr m_generator; +}; + +static inline std::ostream& operator<<(std::ostream& os, const op::Subgraph::BlockedShape& blocked_shape) { + os << std::get<0>(blocked_shape) << " " << std::get<1>(blocked_shape) << " " << std::get<2>(blocked_shape); + return os; +} + +static inline auto is_scalar_constant(const std::shared_ptr& source_output_node) -> bool { + return !!ngraph::as_type_ptr(source_output_node) && + (source_output_node->get_shape() == ngraph::Shape() || ngraph::shape_size(source_output_node->get_shape()) == 1); +}; + +static inline auto create_body(std::string name, const ngraph::ResultVector& results, const ngraph::ParameterVector& parameters) -> + std::shared_ptr { + auto body = std::make_shared(results, parameters, name); + return body; +}; + +static inline auto build_subgraph(const std::shared_ptr& node, const ngraph::OutputVector& inputs, const std::shared_ptr& body) + -> std::shared_ptr{ + auto subgraph = std::make_shared(inputs, body); + copy_runtime_info(node, subgraph); + subgraph->set_friendly_name(node->get_friendly_name()); + return subgraph; +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph diff --git a/inference-engine/src/snippets/include/snippets/op/vectorload.hpp b/inference-engine/src/snippets/include/snippets/op/vectorload.hpp new file mode 100644 index 00000000000000..f68a5a767ec404 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/vectorload.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include "load.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface VectorLoad + * @brief Generated by Canonicalization for a vector value load to vector register + * @ingroup snippets + */ +class TRANSFORMATIONS_API VectorLoad : public Load { +public: + NGRAPH_RTTI_DECLARATION; + + VectorLoad(const Output& x); + VectorLoad() = default; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0)); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/op/vectorstore.hpp b/inference-engine/src/snippets/include/snippets/op/vectorstore.hpp new file mode 100644 index 00000000000000..243eeaeabadbcc --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/op/vectorstore.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include "store.hpp" + +namespace ngraph { +namespace snippets { +namespace op { + +/** + * @interface VectorStore + * @brief Generated by Canonicalization for a vector value store from vector register + * @ingroup snippets + */ +class TRANSFORMATIONS_API VectorStore : public Store { +public: + NGRAPH_RTTI_DECLARATION; + + VectorStore(const Output& x); + VectorStore() = default; + + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override { + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0)); + } +}; + +} // namespace op +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/pass/assign_registers.hpp b/inference-engine/src/snippets/include/snippets/pass/assign_registers.hpp new file mode 100644 index 00000000000000..d48b9816f45967 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/pass/assign_registers.hpp @@ -0,0 +1,30 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph { +namespace snippets { +namespace pass { + +/** + * @interface AssignRegisters + * @brief Assigns internal `vector` register indexes to operations. + * Changing order of variables or datafrow lead to invalidation of register assignment. + * @ingroup snippets + */ +class TRANSFORMATIONS_API AssignRegisters : public ngraph::pass::FunctionPass { +public: + AssignRegisters() : FunctionPass() { + set_property(ngraph::pass::PassProperty::REQUIRE_STATIC_SHAPE, true); + } + bool run_on_function(std::shared_ptr function) override; +}; + +} // namespace pass +} // namespace snippets +} // namespace ngraph diff --git a/inference-engine/src/snippets/include/snippets/pass/collapse_subgraph.hpp b/inference-engine/src/snippets/include/snippets/pass/collapse_subgraph.hpp new file mode 100644 index 00000000000000..3a753ce40ca049 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/pass/collapse_subgraph.hpp @@ -0,0 +1,74 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include +#include + + +namespace ngraph { +namespace snippets { +namespace pass { + +/** + * @interface StartSubgraph + * @brief Matches multiple output loyout-oblivious operations to start a new subgraph + * @ingroup snippets + */ +class TRANSFORMATIONS_API StartSubgraph: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + explicit StartSubgraph(bool tokenize_by_node = false); +}; + +/** + * @interface AttachToSubgraph + * @brief Matches loyout-oblivious operations with subgraph operation as an input to attech this node into it + * @ingroup snippets + */ +class TRANSFORMATIONS_API AttachToSubgraph: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + explicit AttachToSubgraph(bool tokenize_by_node = false); +}; + +/** + * @interface TokenizeSnippets + * @brief Splits function to subgraphs if possible using rules above + * This pass tokenizes topology graph into subgraphs. + * Those subgraphs consists of unary or binary layout-oblivious (LO) opetations found in subset 1. + * Non-layout-oblivious (NLO) operations operations (called also support in this context) are ignored and become a fullstop in tokenization routine + * 1. if a considered LO operation doesn't have any unput subgraphs + * -> a new single-op subgraph is introduced + * 1. if a considered LO operation is a binary or an unary operation with at least one subgraph as an input + * -> 1. all inputs from the conput subgraphs are collected together + * 1. non-subgraph inputs are wrapped into parameters + * 1. all input bodies are merged and + * 1. this new operation is added to a body of input subgraph + * 1. outputs are collected subgraph (outputs consumed by some other node & subgraph outputs consumed by the node to be merged) + * 1. finally current node is replaced with the new subgraph. We cannot use replace_node because multiple nodes are replaced so + * make the replacement manually by redirecting ports + * Input subgraph is prefented from visiting twice if more than one output of it consumed by currently considered node + * New subgraph is introduced, if there is a loop introduced + * New subgraph is introduced, if number of inputs and outputs exceeds 7 due to scheduling limitation + * New subgraph is introduced, if multiple outputs of merged nodes are not broadcastable to each other (equality of all outputs is too much on the other hand) + * Scalar constants are placed as is into subgraph due to optimization purpose + * @ingroup snippets + */ +class TRANSFORMATIONS_API TokenizeSnippets: public ngraph::pass::GraphRewrite { +public: + NGRAPH_RTTI_DECLARATION; + TokenizeSnippets(bool tokenize_by_node = false) { + add_matcher(tokenize_by_node); + add_matcher(tokenize_by_node); + } +}; + +} // namespace pass +} // namespace snippets +} // namespace ngraph diff --git a/inference-engine/src/snippets/include/snippets/pass/insert_load_store.hpp b/inference-engine/src/snippets/include/snippets/pass/insert_load_store.hpp new file mode 100644 index 00000000000000..27d6aaddeb27ed --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/pass/insert_load_store.hpp @@ -0,0 +1,41 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include + +namespace ngraph { +namespace snippets { +namespace pass { + +/** + * @interface InsertLoad + * @brief Inserts explicit load instruction after each parameter. + * The pass is used to convert function to a canonical form for code generation + * @ingroup snippets + */ +class TRANSFORMATIONS_API InsertLoad: public ngraph::pass::MatcherPass { +public: + InsertLoad(); +}; + +/** + * @interface InsertStore + * @brief Inserts explicit store instruction before each result. + * The pass is used to convert function to a canonical form for code generation + * @ingroup snippets + */ +class TRANSFORMATIONS_API InsertStore: public ngraph::pass::MatcherPass { +public: + InsertStore(); +}; + + +} // namespace pass +} // namespace snippets +} // namespace ngraph diff --git a/inference-engine/src/snippets/include/snippets/pass/insert_movebroadcast.hpp b/inference-engine/src/snippets/include/snippets/pass/insert_movebroadcast.hpp new file mode 100644 index 00000000000000..8ad85e499b81a1 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/pass/insert_movebroadcast.hpp @@ -0,0 +1,29 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include + +namespace ngraph { +namespace snippets { +namespace pass { + +/** + * @interface InsertMoveBroadcast + * @brief Inserts explicit MoveBroadcast instruction if broadcasting by most warying dimension is needed. + * The pass is used to convert function to a canonical form for code generation + * @ingroup snippets + */ +class TRANSFORMATIONS_API InsertMoveBroadcast: public ngraph::pass::MatcherPass { +public: + InsertMoveBroadcast(); +}; + +} // namespace pass +} // namespace snippets +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/pass/load_movebroadcast_to_broadcastload.hpp b/inference-engine/src/snippets/include/snippets/pass/load_movebroadcast_to_broadcastload.hpp new file mode 100644 index 00000000000000..0a15a4c0857cdf --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/pass/load_movebroadcast_to_broadcastload.hpp @@ -0,0 +1,29 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include + +namespace ngraph { +namespace snippets { +namespace pass { + +/** + * @interface LoadMoveBroadcastToBroadcastLoad + * @brief Fuses consecutive Load and MoveBroadcast into a single load insctruction. + * The pass is used to convert function to a canonical form for code generation + * @ingroup snippets + */ +class TRANSFORMATIONS_API LoadMoveBroadcastToBroadcastLoad: public ngraph::pass::MatcherPass { +public: + LoadMoveBroadcastToBroadcastLoad(); +}; + +} // namespace pass +} // namespace snippets +} // namespace ngraph diff --git a/inference-engine/src/snippets/include/snippets/pass/vector_to_scalar.hpp b/inference-engine/src/snippets/include/snippets/pass/vector_to_scalar.hpp new file mode 100644 index 00000000000000..cd52169189ce51 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/pass/vector_to_scalar.hpp @@ -0,0 +1,42 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include + +namespace ngraph { +namespace snippets { +namespace pass { + +/** + * @interface ReplaceLoadsWithScalarLoads + * @brief Replases vector loads with scalar versions. + * The pass is used to cange alement type of function in a canonical form vector to scalar. + * Used for tail generation + * @ingroup snippets + */ +class TRANSFORMATIONS_API ReplaceLoadsWithScalarLoads: public ngraph::pass::MatcherPass { +public: + ReplaceLoadsWithScalarLoads(); +}; + +/** + * @interface ReplaceStoresWithScalarStores + * @brief Replases vector stores with scalar versions. + * The pass is used to cange alement type of function in a canonical form vector to scalar. + * Used for tail generation + * @ingroup snippets + */ +class TRANSFORMATIONS_API ReplaceStoresWithScalarStores: public ngraph::pass::MatcherPass { +public: + ReplaceStoresWithScalarStores(); +}; + +} // namespace pass +} // namespace snippets +} // namespace ngraph diff --git a/inference-engine/src/snippets/include/snippets/register_info.hpp b/inference-engine/src/snippets/include/snippets/register_info.hpp new file mode 100644 index 00000000000000..23f5a14036c946 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/register_info.hpp @@ -0,0 +1,24 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace ngraph { + +template <> +class TRANSFORMATIONS_API VariantWrapper> : public VariantImpl> { +public: + static constexpr VariantTypeInfo type_info{"Variant::RegInfo|Variant::RuntimeAttribute::AxisVector", 0}; + + const VariantTypeInfo& get_type_info() const override { return type_info; } + VariantWrapper(const value_type& value) + : VariantImpl(value) { + } +}; + +} // namespace ngraph \ No newline at end of file diff --git a/inference-engine/src/snippets/include/snippets/snippets_isa.hpp b/inference-engine/src/snippets/include/snippets/snippets_isa.hpp new file mode 100644 index 00000000000000..9f4f1cd663d242 --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/snippets_isa.hpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "ngraph/ops.hpp" +#include + +#include "op/blockedload.hpp" +#include "op/blockedparameter.hpp" +#include "op/broadcastload.hpp" +#include "op/broadcastmove.hpp" +#include "op/load.hpp" +#include "op/nop.hpp" +#include "op/scalar.hpp" +#include "op/scalarload.hpp" +#include "op/scalarstore.hpp" +#include "op/staticpower.hpp" +#include "op/store.hpp" +#include "op/vectorload.hpp" +#include "op/vectorstore.hpp" + +namespace ngraph { +namespace snippets { +namespace isa { +#define NGRAPH_OP(a, b) using b::a; +#include "snippets_isa_tbl.hpp" +#undef NGRAPH_OP +} // namespace isa +} // namespace snippets +} // namespace ngraph diff --git a/inference-engine/src/snippets/include/snippets/snippets_isa_tbl.hpp b/inference-engine/src/snippets/include/snippets/snippets_isa_tbl.hpp new file mode 100644 index 00000000000000..ed188efa28e55a --- /dev/null +++ b/inference-engine/src/snippets/include/snippets/snippets_isa_tbl.hpp @@ -0,0 +1,84 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#ifndef NGRAPH_OP +#warning "NGRAPH_OP not defined" +#define NGRAPH_OP(x, y) +#endif + +// SnippetS dialect +NGRAPH_OP(Load, ngraph::snippets::op) +NGRAPH_OP(ScalarLoad, ngraph::snippets::op) +NGRAPH_OP(VectorLoad, ngraph::snippets::op) +NGRAPH_OP(BlockedLoad, ngraph::snippets::op) +NGRAPH_OP(BroadcastLoad, ngraph::snippets::op) + +NGRAPH_OP(Store, ngraph::snippets::op) +NGRAPH_OP(ScalarStore, ngraph::snippets::op) +NGRAPH_OP(VectorStore, ngraph::snippets::op) + +NGRAPH_OP(BroadcastMove, ngraph::snippets::op) +NGRAPH_OP(Scalar, ngraph::snippets::op) +NGRAPH_OP(Nop, ngraph::snippets::op) + +// Layout-oblivious from opset1 + +// opset completeness +NGRAPH_OP(Constant, ngraph::op) +NGRAPH_OP(Parameter, ngraph::op::v0) +NGRAPH_OP(BlockedParameter, ngraph::snippets::op) +NGRAPH_OP(Result, ngraph::op::v0) +NGRAPH_OP(Broadcast, ngraph::op::v1) + +// unary +NGRAPH_OP(Abs, ngraph::op::v0) +NGRAPH_OP(Acos, ngraph::op::v0) +NGRAPH_OP(Asin, ngraph::op::v0) +NGRAPH_OP(Atan, ngraph::op::v0) +NGRAPH_OP(Ceiling, ngraph::op::v0) +NGRAPH_OP(Clamp, ngraph::op::v0) +NGRAPH_OP(Cos, ngraph::op::v0) +NGRAPH_OP(Cosh, ngraph::op::v0) +NGRAPH_OP(Elu, ngraph::op::v0) +NGRAPH_OP(Erf, ngraph::op::v0) +NGRAPH_OP(Exp, ngraph::op::v0) +NGRAPH_OP(Floor, ngraph::op::v0) +NGRAPH_OP(HardSigmoid, ngraph::op::v0) +NGRAPH_OP(Log, ngraph::op::v0) +NGRAPH_OP(LogicalNot, ngraph::op::v1) +NGRAPH_OP(Negative, ngraph::op::v0) +NGRAPH_OP(Relu, ngraph::op::v0) +NGRAPH_OP(Selu, ngraph::op::v0) +NGRAPH_OP(Sign, ngraph::op::v0) +NGRAPH_OP(Sigmoid, ngraph::op::v0) +NGRAPH_OP(Sin, ngraph::op::v0) +NGRAPH_OP(Sinh, ngraph::op::v0) +NGRAPH_OP(Sqrt, ngraph::op::v0) +NGRAPH_OP(Tan, ngraph::op::v0) +NGRAPH_OP(Tanh, ngraph::op::v0) + +// binary +NGRAPH_OP(Add, ngraph::op::v1) +NGRAPH_OP(Divide, ngraph::op::v1) +NGRAPH_OP(Equal, ngraph::op::v1) +NGRAPH_OP(FloorMod, ngraph::op::v1) +NGRAPH_OP(Greater, ngraph::op::v1) +NGRAPH_OP(GreaterEqual, ngraph::op::v1) +NGRAPH_OP(Less, ngraph::op::v1) +NGRAPH_OP(LessEqual, ngraph::op::v1) +NGRAPH_OP(LogicalAnd, ngraph::op::v1) +NGRAPH_OP(LogicalOr, ngraph::op::v1) +NGRAPH_OP(LogicalXor, ngraph::op::v1) +NGRAPH_OP(Maximum, ngraph::op::v1) +NGRAPH_OP(Minimum, ngraph::op::v1) +NGRAPH_OP(Mod, ngraph::op::v1) +NGRAPH_OP(Multiply, ngraph::op::v1) +NGRAPH_OP(NotEqual, ngraph::op::v1) +NGRAPH_OP(Power, ngraph::op::v1) +NGRAPH_OP(PRelu, ngraph::op::v0) +NGRAPH_OP(SquaredDifference, ngraph::op::v0) +NGRAPH_OP(Subtract, ngraph::op::v1) +NGRAPH_OP(Xor, ngraph::op::v0) diff --git a/inference-engine/src/snippets/src/generator.cpp b/inference-engine/src/snippets/src/generator.cpp new file mode 100644 index 00000000000000..650c91992343d0 --- /dev/null +++ b/inference-engine/src/snippets/src/generator.cpp @@ -0,0 +1,30 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/generator.hpp" +#include "snippets/register_info.hpp" + +auto ngraph::snippets::getRegisters(std::shared_ptr& n) -> ngraph::snippets::RegInfo { + auto rt = n->get_rt_info(); + + std::vector rout; + if (auto rinfo = rt["reginfo"]) { + auto reginfo = ngraph::as_type_ptr>>(rinfo)->get(); + for (auto reg : reginfo) { + rout.push_back(reg); + } + } + + std::vector rin; + for (auto input : n->inputs()) { + auto rt = input.get_source_output().get_node_shared_ptr()->get_rt_info(); + if (auto rinfo = rt["reginfo"]) { + auto reginfo = ngraph::as_type_ptr>>(rinfo)->get(); + for (auto reg : reginfo) { + rin.push_back(reg); + } + } + } + return std::make_pair(rin, rout); +} \ No newline at end of file diff --git a/inference-engine/src/snippets/src/itt.hpp b/inference-engine/src/snippets/src/itt.hpp new file mode 100644 index 00000000000000..f7d06b2b6f081d --- /dev/null +++ b/inference-engine/src/snippets/src/itt.hpp @@ -0,0 +1,59 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief Defines openvino domains for tracing + * @file itt.hpp + */ + +#pragma once + +#include +#include + +namespace ngraph { +namespace pass { +namespace itt { +namespace domains { + OV_ITT_DOMAIN(IETransform); +} // namespace domains +} // namespace itt +} // namespace pass +} // namespace ngraph + +OV_CC_DOMAINS(ngraph_pass); +OV_CC_DOMAINS(internal_op); + +/* + * RUN_ON_FUNCTION_SCOPE macro allows to disable the run_on_function pass + * MATCHER_SCOPE macro allows to disable the MatcherPass if matcher isn't applied + * INTERNAL_OP_SCOPE macro allows to disable parts of internal nGraph operations if they are not used + */ +#if defined(SELECTIVE_BUILD_ANALYZER) +#define RUN_ON_FUNCTION_SCOPE(region) OV_SCOPE(ngraph_pass, OV_PP_CAT(region, _run_on_function)) +#define MATCHER_SCOPE(region) \ + const std::string matcher_name(OV_PP_TOSTRING(region)) + +#define INTERNAL_OP_SCOPE(region) OV_SCOPE(internal_op, region) + +#elif defined(SELECTIVE_BUILD) + +#define MATCHER_SCOPE_(scope, region) \ + if (OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(scope, _, region)) == 0) \ + throw ngraph::ngraph_error(std::string(OV_PP_TOSTRING(OV_PP_CAT3(scope, _, region))) + \ + " is disabled!") + +#define MATCHER_SCOPE(region) \ + const std::string matcher_name(OV_PP_TOSTRING(region)); \ + if (OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(ngraph_pass, _, region)) == 0) \ + return +#define INTERNAL_OP_SCOPE(region) MATCHER_SCOPE_(internal_op, region) +#define RUN_ON_FUNCTION_SCOPE(region) MATCHER_SCOPE_(ngraph_pass, OV_PP_CAT(region, _run_on_function)) + +#else +#define MATCHER_SCOPE(region) \ + const std::string matcher_name(OV_PP_TOSTRING(region)) +#define INTERNAL_OP_SCOPE(region) +#define RUN_ON_FUNCTION_SCOPE(region) +#endif diff --git a/inference-engine/src/snippets/src/op/blockedload.cpp b/inference-engine/src/snippets/src/op/blockedload.cpp new file mode 100644 index 00000000000000..31f6a72f193768 --- /dev/null +++ b/inference-engine/src/snippets/src/op/blockedload.cpp @@ -0,0 +1,12 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/blockedload.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::BlockedLoad, "BlockedLoad", 0); + +snippets::op::BlockedLoad::BlockedLoad(const Output& x) : Load(x) { +} diff --git a/inference-engine/src/snippets/src/op/blockedparameter.cpp b/inference-engine/src/snippets/src/op/blockedparameter.cpp new file mode 100644 index 00000000000000..197250e347cbb9 --- /dev/null +++ b/inference-engine/src/snippets/src/op/blockedparameter.cpp @@ -0,0 +1,9 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/blockedparameter.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::BlockedParameter, "BlockedParameter", 0); diff --git a/inference-engine/src/snippets/src/op/broadcastload.cpp b/inference-engine/src/snippets/src/op/broadcastload.cpp new file mode 100644 index 00000000000000..89c7358a4b6612 --- /dev/null +++ b/inference-engine/src/snippets/src/op/broadcastload.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" + +#include "snippets/op/broadcastload.hpp" + +#include + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::BroadcastLoad, "BroadcastLoad", 0); + +snippets::op::BroadcastLoad::BroadcastLoad(const Output& x, Shape shape) +: BroadcastMove(x, shape), broadcast_info(x.get_shape().size(), 0) { + constructor_validate_and_infer_types(); +} + +bool snippets::op::BroadcastLoad::visit_attributes(AttributeVisitor& visitor) { + return true; +} + +std::shared_ptr snippets::op::BroadcastLoad::clone_with_new_inputs(const OutputVector& new_args) const { + INTERNAL_OP_SCOPE(BroadcastLoad); + check_new_args_count(this, new_args); + auto other = std::make_shared(new_args.at(0), output_shape); + other->set_broadcast_info(this->broadcast_info); + return other; +} + +void snippets::op::BroadcastLoad::validate_and_infer_types() { + set_output_type(0, get_input_element_type(0), output_shape); +} diff --git a/inference-engine/src/snippets/src/op/broadcastmove.cpp b/inference-engine/src/snippets/src/op/broadcastmove.cpp new file mode 100644 index 00000000000000..882119562d9d9a --- /dev/null +++ b/inference-engine/src/snippets/src/op/broadcastmove.cpp @@ -0,0 +1,68 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" + +#include "snippets/op/broadcastmove.hpp" + +#include +#include + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::BroadcastMove, "BroadcastMove", 0); + +snippets::op::BroadcastMove::BroadcastMove(const Output& x, Shape shape) : Op({x}), output_shape(shape) { + constructor_validate_and_infer_types(); +} + +bool snippets::op::BroadcastMove::visit_attributes(AttributeVisitor& visitor) { + return true; +} + +std::shared_ptr snippets::op::BroadcastMove::clone_with_new_inputs(const OutputVector& new_args) const { + INTERNAL_OP_SCOPE(BroadcastMove); + check_new_args_count(this, new_args); + auto other = std::make_shared(new_args.at(0), this->output_shape); + return other; +} + +void snippets::op::BroadcastMove::validate_and_infer_types() { + set_output_type(0, get_input_element_type(0), this->output_shape); +} + +bool snippets::op::BroadcastMove::evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const { + INTERNAL_OP_SCOPE(BroadcastMove); + NGRAPH_CHECK(input_values.size() == this->inputs().size(), "wrong input config"); + NGRAPH_CHECK(output_values.size() == this->outputs().size(), "wrong output config"); + NGRAPH_CHECK(input_values.size() == output_values.size() && input_values.size() == 1, "must be 1->1 operation"); + NGRAPH_CHECK(this->output(0).get_shape() == output_values[0]->get_shape(), "output vector must have the same shape as output port"); + NGRAPH_CHECK(this->input(0).get_shape() == input_values[0]->get_shape(), "input and output must have same shape"); + + auto ishape = input_values[0]->get_shape(); + auto oshape = output_values[0]->get_shape(); + + NGRAPH_CHECK(ishape.size() == oshape.size(), "input and output should have the same rank"); + + AxisSet broadcast_axes; + for (size_t k = 0; k < ishape.size(); k++) { + if (!((ishape[k] == oshape[k]) + || (ishape[k] != oshape[k] && ((ishape[k] == 1) != (oshape[k] == 1) ) ))) { + throw ngraph_error("FakeBroadcast::evaluate incompatible shapes"); + } + + if (ishape[k] != oshape[k]) { + broadcast_axes.insert(k); + } + } + + runtime::reference::broadcast(input_values[0]->get_data_ptr(), + output_values[0]->get_data_ptr(), + input_values[0]->get_shape(), + output_values[0]->get_shape(), + broadcast_axes, + sizeof(float)); + return true; +} \ No newline at end of file diff --git a/inference-engine/src/snippets/src/op/load.cpp b/inference-engine/src/snippets/src/op/load.cpp new file mode 100644 index 00000000000000..dbd12349757ad6 --- /dev/null +++ b/inference-engine/src/snippets/src/op/load.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" + +#include "snippets/op/load.hpp" + +#include + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::Load, "Load", 0); + +snippets::op::Load::Load(const Output& x) : Op({x}) { + constructor_validate_and_infer_types(); +} + +bool snippets::op::Load::visit_attributes(AttributeVisitor& visitor) { + return true; +} + +std::shared_ptr snippets::op::Load::clone_with_new_inputs(const OutputVector& new_args) const { + INTERNAL_OP_SCOPE(Load); + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0)); +} + +void snippets::op::Load::validate_and_infer_types() { + set_output_type(0, get_input_element_type(0), get_input_partial_shape(0)); +} + +bool snippets::op::Load::evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const { + INTERNAL_OP_SCOPE(Load); + NGRAPH_CHECK(input_values.size() == this->inputs().size(), "wrong input config"); + NGRAPH_CHECK(output_values.size() == this->outputs().size(), "wrong output config"); + NGRAPH_CHECK(input_values.size() == output_values.size() && input_values.size() == 1, "must be 1->1 operation"); + NGRAPH_CHECK(this->output(0).get_shape() == output_values[0]->get_shape(), "output vector must have the same shape as output port"); + NGRAPH_CHECK(this->input(0).get_shape() == input_values[0]->get_shape(), "input and output must have same shape"); + NGRAPH_CHECK(this->input(0).get_shape() == input_values[0]->get_shape(), "input and output must have same shape"); + + std::copy(input_values[0]->get_data_ptr(), + input_values[0]->get_data_ptr() + shape_size(get_output_shape(0))*output_values[0]->get_element_type().size(), + output_values[0]->get_data_ptr()); + + return true; +} diff --git a/inference-engine/src/snippets/src/op/nop.cpp b/inference-engine/src/snippets/src/op/nop.cpp new file mode 100644 index 00000000000000..d8d70252cba420 --- /dev/null +++ b/inference-engine/src/snippets/src/op/nop.cpp @@ -0,0 +1,18 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/nop.hpp" + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::Nop, "Nop", 0); + +snippets::op::Nop::Nop(const OutputVector& arguments, const OutputVector& results) : Op([arguments, results]() -> OutputVector { + OutputVector x; + x.insert(x.end(), arguments.begin(), arguments.end()); + x.insert(x.end(), results.begin(), results.end()); + return x; + }()) { +} diff --git a/inference-engine/src/snippets/src/op/scalar.cpp b/inference-engine/src/snippets/src/op/scalar.cpp new file mode 100644 index 00000000000000..854d130b7160a7 --- /dev/null +++ b/inference-engine/src/snippets/src/op/scalar.cpp @@ -0,0 +1,9 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/scalar.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::Scalar, "Scalar", 0); \ No newline at end of file diff --git a/inference-engine/src/snippets/src/op/scalarload.cpp b/inference-engine/src/snippets/src/op/scalarload.cpp new file mode 100644 index 00000000000000..4fcba31c0864fb --- /dev/null +++ b/inference-engine/src/snippets/src/op/scalarload.cpp @@ -0,0 +1,12 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/scalarload.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::ScalarLoad, "ScalarLoad", 0); + +snippets::op::ScalarLoad::ScalarLoad(const Output& x) : Load(x) { +} diff --git a/inference-engine/src/snippets/src/op/scalarstore.cpp b/inference-engine/src/snippets/src/op/scalarstore.cpp new file mode 100644 index 00000000000000..bb80724ef52521 --- /dev/null +++ b/inference-engine/src/snippets/src/op/scalarstore.cpp @@ -0,0 +1,12 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/scalarstore.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::ScalarStore, "ScalarStore", 0); + +snippets::op::ScalarStore::ScalarStore(const Output& x) : Store(x) { +} diff --git a/inference-engine/src/snippets/src/op/staticpower.cpp b/inference-engine/src/snippets/src/op/staticpower.cpp new file mode 100644 index 00000000000000..76a40b7a68c03a --- /dev/null +++ b/inference-engine/src/snippets/src/op/staticpower.cpp @@ -0,0 +1,9 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/staticpower.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::PowerStatic, "PowerStatic", 0); diff --git a/inference-engine/src/snippets/src/op/store.cpp b/inference-engine/src/snippets/src/op/store.cpp new file mode 100644 index 00000000000000..c8505c85fbe734 --- /dev/null +++ b/inference-engine/src/snippets/src/op/store.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" + +#include "snippets/op/scalarstore.hpp" + +#include + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::Store, "Store", 0); + +snippets::op::Store::Store(const Output& x) : Op({x}) { + constructor_validate_and_infer_types(); +} + +bool snippets::op::Store::visit_attributes(AttributeVisitor& visitor) { + return true; +} + +std::shared_ptr snippets::op::Store::clone_with_new_inputs(const OutputVector& new_args) const { + INTERNAL_OP_SCOPE(Store); + check_new_args_count(this, new_args); + return std::make_shared(new_args.at(0)); +} + +void snippets::op::Store::validate_and_infer_types() { + set_output_type(0, get_input_element_type(0), get_input_partial_shape(0)); +} + +bool snippets::op::Store::evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const { + INTERNAL_OP_SCOPE(Store); + NGRAPH_CHECK(input_values.size() == this->inputs().size(), "wrong input config"); + NGRAPH_CHECK(output_values.size() == this->outputs().size(), "wrong output config"); + NGRAPH_CHECK(input_values.size() == output_values.size() && input_values.size() == 1, "must be 1->1 operation"); + NGRAPH_CHECK(this->output(0).get_shape() == output_values[0]->get_shape(), "output vector must have the same shape as output port"); + NGRAPH_CHECK(this->input(0).get_shape() == input_values[0]->get_shape(), "input and output must have same shape"); + NGRAPH_CHECK(this->input(0).get_shape() == input_values[0]->get_shape(), "input and output must have same shape"); + + std::copy(input_values[0]->get_data_ptr(), + input_values[0]->get_data_ptr() + shape_size(get_output_shape(0))*output_values[0]->get_element_type().size(), + output_values[0]->get_data_ptr()); + + return true; +} diff --git a/inference-engine/src/snippets/src/op/subgraph.cpp b/inference-engine/src/snippets/src/op/subgraph.cpp new file mode 100644 index 00000000000000..544f398c21ffc0 --- /dev/null +++ b/inference-engine/src/snippets/src/op/subgraph.cpp @@ -0,0 +1,344 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" +#include "remarks.hpp" + +#include "snippets/op/subgraph.hpp" +#include "snippets/pass/insert_load_store.hpp" +#include "snippets/pass/insert_movebroadcast.hpp" +#include "snippets/pass/load_movebroadcast_to_broadcastload.hpp" +#include "snippets/pass/assign_registers.hpp" + +#include + +#include +#include +#include + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::Subgraph, "Subgraph", 0); + +void snippets::op::Subgraph::set_generator(std::shared_ptr generator) { + m_generator = generator; +} + +snippets::op::Subgraph::Subgraph(const OutputVector& args, std::shared_ptr body) + : Op(args), m_body(body), m_generator(nullptr) { + constructor_validate_and_infer_types(); +} + +snippets::op::Subgraph::Subgraph(const NodeVector& args, std::shared_ptr body) + : Subgraph(as_output_vector(args), body) {} + +std::shared_ptr snippets::op::Subgraph::clone_with_new_inputs(const OutputVector& inputs) const { + INTERNAL_OP_SCOPE(Subgraph); + return make_shared(inputs, ngraph::clone_function(*m_body.get())); +} + +void snippets::op::Subgraph::validate_and_infer_types() { + INTERNAL_OP_SCOPE(Subgraph); + ngraph::ParameterVector old_parameters; + for (auto op : m_body->get_parameters()) { + old_parameters.push_back(op); + } + + for (size_t i = 0; i < get_input_size(); ++i) { + m_body->replace_parameter(i, std::make_shared(get_input_element_type(i), get_input_partial_shape(i))); + } + + m_body->validate_nodes_and_infer_types(); + + for (size_t i = 0; i < m_body->get_parameters().size(); i++) { + m_body->get_parameters()[i]->set_friendly_name(old_parameters[i]->get_friendly_name()); + } + + set_output_size(m_body->get_output_size()); + for (size_t i = 0; i < get_output_size(); ++i) { + set_output_type(i, m_body->get_output_element_type(i), m_body->get_output_partial_shape(i)); + } +} + +bool snippets::op::Subgraph::visit_attributes(AttributeVisitor& visitor) { + return true; +} + +auto snippets::op::Subgraph::wrap_node_as_subgraph(const std::shared_ptr& node) -> std::shared_ptr { + INTERNAL_OP_SCOPE(Subgraph); + ngraph::ParameterVector body_parameters; + ngraph::OutputVector body_inputs; + + ngraph::OutputVector subgraph_inputs; + + for (auto input : node->inputs()) { + auto source_output = input.get_source_output(); + if (is_scalar_constant(source_output.get_node_shared_ptr())) { + body_inputs.push_back(source_output); + } else { + auto parameter = std::make_shared(input.get_element_type(), input.get_partial_shape()); + body_parameters.push_back(parameter); + body_parameters.back()->set_friendly_name(source_output.get_node()->get_friendly_name()); + body_inputs.push_back(parameter->output(0)); + + subgraph_inputs.push_back(source_output); + } + } + + auto body_node = node->copy_with_new_inputs(body_inputs); + body_node->set_friendly_name(node->get_friendly_name()); + + if (node->get_output_size() != body_node->get_output_size()) { + throw ngraph::ngraph_error("original node outputs size and extracted subgraph node outputs size doesn't much"); + } + + ngraph::ResultVector body_results; + for (auto output : node->outputs()) { + body_results.push_back(std::make_shared(body_node->output(output.get_index()))); + } + + auto body = create_body(node->get_friendly_name(), body_results, body_parameters); + auto subgraph = build_subgraph(node, subgraph_inputs, body); + + for (size_t i = 0; i < body->get_parameters().size(); i++) { + body->get_parameters()[i]->set_friendly_name(body_parameters[i]->get_friendly_name()); + } + + if (subgraph->get_output_size() != body->get_results().size()) { + throw ngraph::ngraph_error("newly create subgraph doesn't much number of original node results"); + } + + return subgraph; +} + +std::shared_ptr snippets::op::Subgraph::make_canonical_from_this() { + INTERNAL_OP_SCOPE(Subgraph); + ngraph::OutputVector subgraph_node_inputs; + for (auto input : this->input_values()) { + subgraph_node_inputs.push_back(input); + } + auto new_body = ngraph::clone_function(*this->get_body().get()); + auto snippet = std::make_shared(subgraph_node_inputs, new_body); + ngraph::copy_runtime_info(this->shared_from_this(), snippet); + snippet->set_friendly_name(this->get_friendly_name()); + snippet->set_generator(this->m_generator); + + return snippet; +} + +// We also can think of canonization as of pass to copy original subgraph and transforming it to canonical form suitable for code generation +// pass actual parameters and results shapes to generate for as well as channel mapping, +// we need to distinguish between 5d tensors that represents and somehow like locked dimensions +// ngraph::AxisVector to code +void snippets::op::Subgraph::canonicalize(const BlockedShapeVector& output_shapes, const BlockedShapeVector& input_shapes) { + INTERNAL_OP_SCOPE(Subgraph); + NODE_VALIDATION_CHECK(this, input_shapes.size() == m_body->get_parameters().size(), + "Number of parameters for snippet doesn't much passed to generate method: ", input_shapes.size(), " vs ", m_body->get_parameters().size(), "."); + + NODE_VALIDATION_CHECK(this, output_shapes.size() == m_body->get_results().size(), + "number of results for snippet doesn't much passed to generate method: ", output_shapes.size(), " vs ", m_body->get_results().size(), "."); + + // replace only constants which are actually should be represented as scalars during code generation and probably move this step a bit later + for (auto op : m_body->get_ordered_ops()) { + if (auto constant = ngraph::as_type_ptr(op)) { + auto scalar = std::make_shared(*constant); + scalar->set_friendly_name(constant->get_friendly_name()); + ngraph::copy_runtime_info(constant, scalar); + ngraph::replace_node(constant, scalar); + } + } + + // repalace power with power static + for (auto op : m_body->get_ordered_ops()) { + if (auto power = ngraph::as_type_ptr(op)) { + if (ngraph::as_type_ptr(power->input(1).get_node()->shared_from_this())) { + auto power_static = std::make_shared( + power->input(0).get_source_output(), power->input(1).get_source_output(), power->get_autob()); + power_static->set_friendly_name(power->get_friendly_name()); + ngraph::copy_runtime_info(power, power_static); + ngraph::replace_node(power, power_static); + } + } + } + + + // it should be in subgraph node to be aligned with internal and external parameter list, but adding this for testing + // TODO: store blocking into to Parameter's rt_info for future propagation + for (size_t i = 0; i < m_body->get_parameters().size(); i++) { + auto param = m_body->get_parameters()[i]; + if (param->get_shape().size() < 4) { + std::vector shape(4, 1); + std::copy(param->get_shape().begin(), param->get_shape().end(), &shape.at(4 - (param->get_shape().size() == 0 ? 1 : param->get_shape().size())) ); + m_body->replace_parameter(i, std::make_shared(param->get_element_type(), ngraph::Shape(shape))); + } else if (param->get_shape().size() >= 4) { + if (param->get_element_type() != std::get<2>(input_shapes[i])) { + throw ngraph::ngraph_error("changes in presision. Is it legal??"); + } + if (param->get_shape().size() != std::get<0>(input_shapes[i]).size()) { + m_body->replace_parameter(i, std::make_shared(std::get<2>(input_shapes[i]), std::get<0>(input_shapes[i]))); + } + } + } + + m_body->validate_nodes_and_infer_types(); + + for (size_t i = 0; i < m_body->get_results().size(); i++) { + auto result = m_body->get_results()[i]; + PartialShape partial(result->get_shape()); + bool isCompatible = ngraph::PartialShape::broadcast_merge_into(partial, std::get<0>(output_shapes[i]), ::ngraph::op::AutoBroadcastSpec::NUMPY); + // equality check won't pass since we reshape without changes on external snippet edges + NODE_VALIDATION_CHECK(this, isCompatible, "Inferend and passed results shapes are difference for snippet : ", + result->get_shape(), " vs ", std::get<0>(output_shapes[i]), "."); + } +} + +void snippets::op::Subgraph::convert_to_snippet_dialect() { + INTERNAL_OP_SCOPE(Subgraph); + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.run_passes(m_body); +} + +snippets::Schedule snippets::op::Subgraph::generate(const BlockedShapeVector& output_shapes, const BlockedShapeVector& input_shapes) { + INTERNAL_OP_SCOPE(Subgraph); + NGRAPH_CHECK(m_generator != nullptr, "generate is called while generator is not set"); + + canonicalize(output_shapes, input_shapes); + convert_to_snippet_dialect(); + + // generation flow + snippets::pass::AssignRegisters().run_on_function(m_body); + + // actual code emission + ngraph::snippets::code ptr = m_generator->generate(m_body); + + // chack that body doesnt have constants for scheduling + std::vector> constants; + for (auto op : m_body->get_ordered_ops()) { + if (auto constant = as_type_ptr(op)) { + if (ngraph::shape_size(constant->get_shape()) != 1 && constant->get_shape() != Shape()) { + constants.push_back(constant); + } + } + } + NGRAPH_CHECK(!constants.size(), "External constants detected. Snippet is illigal for sheduling"); + + // check resulting shapes are broadcastable to each other so can be scheduled + Shape work_size = m_body->output(0).get_shape(); + for (size_t k = 0; k < m_body->get_output_size(); k++) { + auto shape = m_body->output(k).get_shape(); + + if (work_size.size() != shape.size()) { + throw ngraph_error("rank for all outputs of a snippet should match"); + } + + for (size_t i = 0; i < work_size.size(); i++) { + if (work_size[i] != shape[i]) { + if (work_size[i] == 1) { + work_size[i] = shape[i]; + } else { + throw ngraph_error("incompatible shapes for output graphs"); + } + } + } + } + + return {work_size, false /*canBeLinearized*/, ptr}; +} + +bool snippets::op::Subgraph::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { + INTERNAL_OP_SCOPE(Subgraph); + return m_body->evaluate(outputs, inputs); +} + +void snippets::op::Subgraph::print() const { + INTERNAL_OP_SCOPE(Subgraph); + remark(13) << "subgraph " << this->get_friendly_name() << " " + << this->get_type_name() + << " which contains " << this->get_body()->get_ops().size() << " nodes" << std::endl; + + int qqq = 0; + for (auto op : this->get_body()->get_ordered_ops()) { + remark(13) << "op " << qqq++ << " " << op->get_friendly_name() << " (" << op->get_type_name() << ") " << op << std::endl; + } + + for (auto& in : this->inputs()) { + remark(13) << " -> " << in.get_source_output().get_node_shared_ptr()->get_friendly_name() << " " + << in.get_source_output().get_node_shared_ptr() << std::endl; + } + + for (auto& out : this->outputs()) { + for (auto& user : out.get_target_inputs()) { + remark(13) << " <- " << user.get_node()->get_friendly_name() << " " << user.get_node() << std::endl; + } + remark(13) << std::endl; + } +} + +void snippets::op::Subgraph::print_statistics(bool verbose) { + INTERNAL_OP_SCOPE(Subgraph); + auto getNodeInventory = [](std::shared_ptr n) -> size_t { + size_t total = 0; + + for (auto input : n->inputs()) { + total += input.get_tensor().size(); + } + + for (auto output : n->outputs()) { + total += output.get_tensor().size(); + } + + if (auto subgraph = ngraph::as_type_ptr(n)) { + for (auto op : subgraph->get_body()->get_ordered_ops()) { + if (ngraph::as_type_ptr(op)) { + total += op->output(0).get_tensor().size(); + } + } + } + + return total; + }; + + auto getFunctionInventory = [getNodeInventory](std::shared_ptr f) -> size_t { + size_t total = 0; + for (auto op : f->get_ordered_ops()) { + // Results and parameters are artificially introduced, + // while Constants are already considered if they are inputs of other operation + // this should lead to 1:1 inventory for single node operations + if (!ngraph::as_type_ptr(op) + && !ngraph::as_type_ptr(op) + && !ngraph::as_type_ptr(op)) { + total += getNodeInventory(op); + } + } + return total; + }; + + auto countConstants = [](std::shared_ptr f) -> size_t { + size_t count = 0; + for (auto op : f->get_ordered_ops()) { + count += !!ngraph::as_type_ptr(op) ? 1 : 0; + } + return count; + }; + + auto body = this->get_body(); + + std::cout << this->get_friendly_name() + << ";" << this + << ";" << body->get_ops().size() + << ";" << body->get_parameters().size() + << ";" << body->get_results().size() + << ";" << countConstants(body) + << ";" << getFunctionInventory(body) + << ";" << getNodeInventory(this->shared_from_this()) << std::endl; + + if (verbose) { + this->print(); + } +} diff --git a/inference-engine/src/snippets/src/op/vectorload.cpp b/inference-engine/src/snippets/src/op/vectorload.cpp new file mode 100644 index 00000000000000..ec5fe5458f04c3 --- /dev/null +++ b/inference-engine/src/snippets/src/op/vectorload.cpp @@ -0,0 +1,12 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/vectorload.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::VectorLoad, "VectorLoad", 0); + +snippets::op::VectorLoad::VectorLoad(const Output& x) : Load(x) { +} diff --git a/inference-engine/src/snippets/src/op/vectorstore.cpp b/inference-engine/src/snippets/src/op/vectorstore.cpp new file mode 100644 index 00000000000000..07b71e77140e9d --- /dev/null +++ b/inference-engine/src/snippets/src/op/vectorstore.cpp @@ -0,0 +1,12 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/op/vectorstore.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(snippets::op::VectorStore, "VectorStore", 0); + +snippets::op::VectorStore::VectorStore(const Output& x) : Store(x) { +} diff --git a/inference-engine/src/snippets/src/pass/assign_registers.cpp b/inference-engine/src/snippets/src/pass/assign_registers.cpp new file mode 100644 index 00000000000000..de7df3792b8caa --- /dev/null +++ b/inference-engine/src/snippets/src/pass/assign_registers.cpp @@ -0,0 +1,183 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +// #include +#include "itt.hpp" +#include "remarks.hpp" + +#include "snippets/pass/assign_registers.hpp" +#include "snippets/register_info.hpp" +#include "snippets/snippets_isa.hpp" + +#include + +#include + +bool ngraph::snippets::pass::AssignRegisters::run_on_function(std::shared_ptr f) { + RUN_ON_FUNCTION_SCOPE(AssignRegisters); + int reg64_tmp_start { 8 }; // R8, R9, R10, R11, R12, R13, R14, R15 inputs+outputs+1 + using Reg = size_t; + auto ops = f->get_ordered_ops(); + decltype(ops) stmts; + std::copy_if(ops.begin(), ops.end(), std::back_inserter(stmts), [](decltype(ops[0]) op) { + return !(std::dynamic_pointer_cast(op) || std::dynamic_pointer_cast(op)); + }); + + size_t rdx = 0; + std::map, Reg> regs; + for (auto op : stmts) { + for (auto output : op->outputs()) { + regs[output.get_tensor_ptr()] = rdx++; + } + } + + std::vector> used; + std::vector> def; + + for (auto op : stmts) { + std::set u; + for (auto input : op->inputs()) { + if (regs.count(input.get_tensor_ptr())) { + u.insert(regs[input.get_tensor_ptr()]); + } + } + used.push_back(u); + + std::set d; + if (!std::dynamic_pointer_cast(op)) { + for (auto output : op->outputs()) { + d.insert(regs[output.get_tensor_ptr()]); + } + } + def.push_back(d); + } + + // define life intervals + std::vector> lifeIn(stmts.size(), std::set()); + std::vector> lifeOut(stmts.size(), std::set()); + + for (size_t i = 0; i < stmts.size(); i++) { + for (size_t n = 0; n < stmts.size(); n++) { + std::set_difference(lifeOut[n].begin(), lifeOut[n].end(), def[n].begin(), def[n].end(), std::inserter(lifeIn[n], lifeIn[n].begin())); + lifeIn[n].insert(used[n].begin(), used[n].end()); + } + for (size_t n = 0; n < stmts.size(); n++) { + auto node = stmts[n]; + if (!std::dynamic_pointer_cast(node)) { + for (auto out : node->outputs()) { + for (auto port : out.get_target_inputs()) { + auto pos = std::find(stmts.begin(), stmts.end(), port.get_node()->shared_from_this()); + if (pos != stmts.end()) { + auto k = pos-stmts.begin(); + lifeOut[n].insert(lifeIn[k].begin(), lifeIn[k].end()); + } + } + } + } + } + } + + struct by_starting { + auto operator()(const std::pair& lhs, const std::pair& rhs) const -> bool { + return lhs.first < rhs.first|| (lhs.first == rhs.first && lhs.second < rhs.second); + } + }; + + struct by_ending { + auto operator()(const std::pair& lhs, const std::pair& rhs) const -> bool { + return lhs.second < rhs.second || (lhs.second == rhs.second && lhs.first < rhs.first); + } + }; + + std::set, by_starting> live_intervals; + + std::reverse(lifeIn.begin(), lifeIn.end()); + auto find_last_use = [lifeIn](int i) -> int { + int ln = lifeIn.size()-1; + for (auto& x : lifeIn) { + if (x.find(i) != x.end()) { + return ln; + } + ln--; + } + return i; + }; + + for (size_t i = 0; i < stmts.size(); i++) { + live_intervals.insert(std::make_pair(i, find_last_use(i))); + } + + // http://web.cs.ucla.edu/~palsberg/course/cs132/linearscan.pdf + std::multiset, by_ending> active; + std::map register_map; + std::stack bank; + for (int i = 0; i < 16; i++) bank.push(16-1-i); + + for (auto interval : live_intervals) { + // check expired + while (!active.empty()) { + auto x = *active.begin(); + if (x.second >= interval.first) { + break; + } + active.erase(x); + bank.push(register_map[x.first]); + } + // allocate + if (active.size() == 16) { + throw ngraph_error("caanot allocate registers for a snippet "); + } else { + register_map[interval.first] = bank.top(); + bank.pop(); + active.insert(interval); + } + } + + std::map, Reg> physical_regs; + + for (auto reg : regs) { + physical_regs[reg.first] = register_map[reg.second]; + } + + size_t constantID = 0; + + for (auto n : f->get_ordered_ops()) { + auto& rt = n->get_rt_info(); + // nothing to do for function signature + if (std::dynamic_pointer_cast(n) || std::dynamic_pointer_cast(n)) { + continue; + } + + // store only effective address + if (auto result = std::dynamic_pointer_cast(n)) { + auto ea = reg64_tmp_start+static_cast(f->get_result_index(result) + f->get_parameters().size()); + rt["effectiveAddress"] = std::make_shared>(VariantWrapper(ea)); + continue; + } + // store effective address and procced with vector registers + if (as_type_ptr(n) || as_type_ptr(n)) { + auto source = n->get_input_source_output(0).get_node_shared_ptr(); + + if (auto param = as_type_ptr(source)) { + auto ea = reg64_tmp_start+static_cast(f->get_parameter_index(param)); + rt["effectiveAddress"] = std::make_shared>(VariantWrapper(ea)); + } else if (auto constant = as_type_ptr(source)) { + auto ea = reg64_tmp_start+static_cast(f->get_parameters().size() + f->get_results().size() + 1 + constantID); + rt["effectiveAddress"] = std::make_shared>(VariantWrapper(ea)); + constantID++; + } else { + throw ngraph_error("load/broadcast should follow only Parameter or non-Scalar constant"); + } + } + + std::vector regs; regs.reserve(n->outputs().size()); + for (auto output : n->outputs()) { + auto allocated = physical_regs[output.get_tensor_ptr()]; + regs.push_back(allocated); + } + rt["reginfo"] = std::make_shared>>(VariantWrapper>(regs)); + } + + return false; +} diff --git a/inference-engine/src/snippets/src/pass/collapse_subgraph.cpp b/inference-engine/src/snippets/src/pass/collapse_subgraph.cpp new file mode 100644 index 00000000000000..6c864ec5c4f03f --- /dev/null +++ b/inference-engine/src/snippets/src/pass/collapse_subgraph.cpp @@ -0,0 +1,515 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "remarks.hpp" +#include "itt.hpp" + +#include "snippets/pass/collapse_subgraph.hpp" +#include "snippets/op/subgraph.hpp" + +#include +#include +#include + + +#include +#include +#include +#include +#include +#include + +NGRAPH_RTTI_DEFINITION(ngraph::snippets::pass::StartSubgraph, "CollapseSubgraph", 0); +NGRAPH_RTTI_DEFINITION(ngraph::snippets::pass::AttachToSubgraph, "CollapseSubgraph", 0); +NGRAPH_RTTI_DEFINITION(ngraph::snippets::pass::TokenizeSnippets, "CollapseSubgraph", 0); + +using namespace ngraph; +using namespace snippets; + +namespace { + +auto outputs_are_not_broadcastable(const std::shared_ptr& node) -> bool { + auto outputs = node->outputs(); + auto find_smallest_output_shape = [](const std::vector>& outputs) -> ngraph::Shape { + return std::accumulate(std::begin(outputs), std::end(outputs), ngraph::Shape(outputs.begin()->get_shape()), + [](ngraph::Shape other_shape, ngraph::Output output){ + return ngraph::shape_size(output.get_shape()) < ngraph::shape_size(other_shape) ? output.get_shape() : other_shape; + }); + }; + auto ref_shape = find_smallest_output_shape(outputs); + + auto check_shapes_broadcastable = [ref_shape](const ngraph::Output& output) -> bool { + auto other_shape = output.get_shape(); + + if (other_shape.size() != ref_shape.size()) { + return false; + } + + return std::inner_product(std::begin(other_shape), std::end(other_shape), std::begin(ref_shape), true, + std::logical_and(), [](ngraph::Shape::value_type lsh, ngraph::Shape::value_type rsh){ + return rsh == 1 || lsh == rsh; + }); + }; + + return std::find_if_not(std::begin(outputs), std::end(outputs), check_shapes_broadcastable) != std::end(outputs); +}; + +auto has_cycles_of_dependencies(const std::vector>>& results, + const std::vector>& inputs) -> bool { + auto BFS_from_to = [](ngraph::Node* from, ngraph::Node* to) -> bool { + std::unordered_set visited; + std::queue stack; + stack.push(from); + + while (stack.size() > 0) { + ngraph::Node* curr = stack.front(); + visited.insert(curr); + + if (ngraph::op::is_output(curr)) { + return false; + } + + stack.pop(); + + if (curr != to) { + for (const auto& next : curr->get_users()) { + if (visited.count(next.get()) == 0) { + stack.push(next.get()); + } + } + } else { + return true; + } + } + return false; + }; + + for (auto& result : results) { + for (auto& user : result) { + for (auto& input : inputs) { + auto source = input.get_source_output().get_node(); + auto containsLoop = BFS_from_to(user.get_node(), source); + + remark(1) << "checking path from " + << user.get_node()->get_friendly_name() + << " to " << source->get_friendly_name() + << " resulted in " << containsLoop << std::endl; + + if (containsLoop) { + return true; + } + } + } + } + return false; +} + +auto has_subgraph_as_input(std::shared_ptr node) -> bool { + auto inputs = node->inputs(); + for (auto input : inputs) { + auto parent = input.get_source_output().get_node_shared_ptr(); + if (!!as_type_ptr(parent)) { + return true; + } + } + return false; +}; + +auto is_lo(std::shared_ptr n) -> bool { + auto is_lob = [](std::shared_ptr n) -> bool { + using ngraph::as_type_ptr; + return !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n); + }; + + auto is_lou = [](std::shared_ptr n) -> bool { + using ngraph::as_type_ptr; + return !!as_type_ptr(n) + // || !!as_type_ptr(n) + // || !!as_type_ptr(n) + // || !!as_type_ptr(n) + // || !!as_type_ptr(n) ? + || !!as_type_ptr(n) + // || !!as_type_ptr(n) + // || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + // || !!as_type_ptr(n) ? + // || !!as_type_ptr(n) ? + || !!as_type_ptr(n) + || !!as_type_ptr(n) + || !!as_type_ptr(n) + // || !!as_type_ptr(n) ? + || !!as_type_ptr(n) + // || !!as_type_ptr(n) + // || !!as_type_ptr(n) + || !!as_type_ptr(n) + // || !!as_type_ptr(n) + || !!as_type_ptr(n); + }; + + auto is_lot = [](std::shared_ptr n) -> bool { + using ngraph::as_type_ptr; + return false; + // return !!as_type_ptr(n) // ternary with 2 constants + // || !!as_type_ptr(n); // ternary with 2 constants / or DW + }; + + auto is_fq = [](std::shared_ptr n) -> bool { + using ngraph::as_type_ptr; + return false;//!!as_type_ptr(n); // 4->1 + }; + + return is_lou(n) || is_lob(n) ||is_lot(n) || is_fq(n); +} + +auto has_supported_in_out(std::shared_ptr n) -> bool { + for (auto in : n->inputs()) { + if (in.get_tensor().get_element_type() != ngraph::element::f32) { + return false; + } + } + + for (auto out : n->outputs()) { + if (out.get_tensor().get_element_type() != ngraph::element::f32) { + return false; + } + + for (auto in_out : out.get_target_inputs()) { + if (!!as_type_ptr(in_out.get_node()->shared_from_this())) { + return false; + } + } + } + + return true; +}; + +} // namespace + +ngraph::snippets::pass::StartSubgraph::StartSubgraph(bool tokenize_by_node) : MatcherPass() { + MATCHER_SCOPE(StartSubgraph); + + auto has_multiple_output_edges = [](std::shared_ptr n) -> bool { + for (auto out : n->outputs()) { + if (out.get_target_inputs().size() != 1) return true; + } + + return false; + }; + + register_matcher(std::make_shared( + std::make_shared(pattern::any_input(), + [tokenize_by_node, has_multiple_output_edges](std::shared_ptr n) { + return is_lo(n) && + has_supported_in_out(n) && + (tokenize_by_node || !has_subgraph_as_input(n)) && + has_multiple_output_edges(n); + })), + [](ngraph::pattern::Matcher &m) -> bool { + auto node = m.get_match_root(); + + remark(1) << "Match root" + << node->get_friendly_name() + << " " << node + << " Creating new snippet - no input subgraphs found" << std::endl; + + auto subgraph = op::Subgraph::wrap_node_as_subgraph(node); + ngraph::replace_node(node, subgraph); + + remark(1) << "Replacement (new) done for: " + << subgraph->get_friendly_name() + << " with " << subgraph->inputs().size() + << " inputs and " << subgraph->outputs().size() + << " outputs and " << subgraph->get_body()->get_ops().size() << " ops total\n"; + return true; + }); +} + +ngraph::snippets::pass::AttachToSubgraph::AttachToSubgraph(bool tokenize_by_node) : MatcherPass() { + MATCHER_SCOPE(AttachToSubgraph); + enum continuation_strategy { + reset, + abort + }; + + continuation_strategy strategy = continuation_strategy::abort; + + ngraph::graph_rewrite_callback continuation_callback = [strategy](ngraph::pattern::Matcher &m) -> bool { + auto node = m.get_match_root(); + + remark(1) << "Match root " << node->get_friendly_name() << " " << node << std::endl; + + // inputs that are already subgraphs + std::unordered_set> input_subgraphs; + // clone bodies because we need a rollback if loop is found + std::map, std::shared_ptr> clones; + + ParameterVector body_parameters; + OutputVector external_inputs; + OutputVector internal_inputs; + + auto inputs = node->inputs(); + + auto is_recurrent = [inputs](const ngraph::Output& to_find) -> bool { + for (auto in : inputs) { + if (in.get_source_output().get_node_shared_ptr() == to_find.get_node_shared_ptr()) { + return true; + } + } + return false; + }; + + auto get_input_index = [](const Output& found) -> size_t { + for (auto& input : found.get_target_inputs()) { + remark(13) << input.get_node() << " " << input.get_source_output() << " vs " + << found << found.get_node() << " : " << input.get_index() << " " << found.get_index() << std::endl; + } + + for (auto& input : found.get_target_inputs()) { + remark(13) << input.get_node() << " " << input.get_source_output() << " vs " + << found << " : " << input.get_index() << " " << found.get_index() << std::endl; + if (as_type_ptr(input.get_node()->shared_from_this()) != nullptr && input.get_source_output() == found) { + return input.get_index(); + } + } + return 0; + }; + + for (auto input : inputs) { + auto input_node = input.get_source_output().get_node_shared_ptr(); + + if (auto subgraph = as_type_ptr(input_node)) { + if (!clones.count(input_node)) { + auto f = ngraph::clone_function(*subgraph->get_body().get()); + f->set_friendly_name(subgraph->get_body()->get_friendly_name()); + clones[input_node] = f; + } + } + } + + for (auto input : inputs) { + auto input_node = input.get_source_output().get_node_shared_ptr(); + + if (auto subgraph = as_type_ptr(input_node)) { + if (!input_subgraphs.count(input_node)) { + input_subgraphs.insert(input_node); + + auto f = clones[input_node]; + const auto& input_body_parameters = f->get_parameters(); + + for (size_t i = 0; i < input_body_parameters.size(); ++i) { + auto found = std::find(external_inputs.begin(), external_inputs.end(), subgraph->input_value(i)); + if (found != external_inputs.end()) { + auto current_input_index = get_input_index(*found); + // Handling the case if multiple inputs referencing the same parameter comes from one subgraph => it's not introduced by SS. + // It might be better to keep track if body parameter relationship rather than that + if (current_input_index < body_parameters.size()) { + remark(13) << "replacing " << *found << " " << current_input_index << " with " + << body_parameters[current_input_index] << std::endl; + f->replace_parameter(i, body_parameters[current_input_index]); + } else { + external_inputs.push_back(subgraph->input_value(i)); + body_parameters.push_back(input_body_parameters[i]); + } + } else if (is_recurrent(subgraph->input_value(i))) { + remark(13) << "ternary merge is conducted " << subgraph->input_value(i).get_node_shared_ptr() << std::endl; + + auto internal = input_body_parameters[i]; + auto internal_consumers = internal->outputs(); + + for (auto output : internal->outputs()) { + for (auto consumer : output.get_target_inputs()) { + if (auto to_replace_with = as_type_ptr(subgraph->input_value(i).get_node_shared_ptr())) { + auto other_body = clones[subgraph->input_value(i).get_node_shared_ptr()]; + auto other_body_result = other_body->get_results()[consumer.get_source_output().get_index()]; + auto result_producer = other_body_result->input(0).get_source_output(); + + consumer.replace_source_output(result_producer.get_node_shared_ptr()); + } + } + } + } else { + external_inputs.push_back(subgraph->input_value(i)); + body_parameters.push_back(input_body_parameters[i]); + } + } + } + + // this is there stitching happens, get result of a copy of a body of currently processed input and put it to the new inputs + // internal output index == external output index + auto& input_body = clones[input_node]; + size_t source_output_index = input.get_source_output().get_index(); + auto source_result = input_body->get_results()[source_output_index]; + // Result op has a single input + internal_inputs.push_back(source_result->input_value(0)); + } else { + if (op::is_scalar_constant(input_node)) { + internal_inputs.push_back(input_node->output(0)); + } else { + external_inputs.push_back(input.get_source_output()); + auto new_parameter = std::make_shared(input.get_element_type(), input.get_partial_shape()); + new_parameter->set_friendly_name(input.get_source_output().get_node()->get_friendly_name()); + body_parameters.push_back(new_parameter); + body_parameters.back()->set_friendly_name(input.get_source_output().get_node()->get_friendly_name()); + internal_inputs.push_back(new_parameter->output(0)); + } + } + } + + auto body_node = node->copy_with_new_inputs(internal_inputs); + body_node->set_friendly_name(node->get_friendly_name()); + + remark(1) << "Original node outputs = " << node->get_output_size() + << " body node outputs = " << body_node->get_output_size() << std::endl; + + if (node->get_output_size() != body_node->get_output_size()) { + throw ngraph_error("original node outputs size and extracted node outputs size doesn't much"); + } + + ResultVector body_results; + std::vector>> subgraph_result_inputs; + + for (auto subgraph : input_subgraphs) { + for (auto output : subgraph->outputs()) { + bool first_side_consumer = true; + + for (auto target_input : output.get_target_inputs()) { + auto target_node = target_input.get_node()->shared_from_this(); + + if (input_subgraphs.count(target_node)) { + remark(13) << "ternary merge is conducted " << subgraph << " -> " << target_node << std::endl; + } + + if (!input_subgraphs.count(target_node) && target_node != node) { + if (first_side_consumer) { + auto& input_subgraph_body = clones[subgraph]; + body_results.push_back(std::make_shared(input_subgraph_body->get_results()[output.get_index()]->input_value(0))); + subgraph_result_inputs.push_back({}); + + first_side_consumer = false; + } + + if (!!subgraph_result_inputs.back().count(target_input)) { + throw ngraph_error("target input added twice!!!"); + } + // save target input port outside the body + subgraph_result_inputs.back().insert(target_input); + } + } + } + } + + for (auto output : node->outputs()) { + body_results.push_back(std::make_shared(body_node->output(output.get_index()))); + subgraph_result_inputs.push_back(output.get_target_inputs()); + } + + if (body_results.size() != subgraph_result_inputs.size()) { + throw ngraph_error("body results and node results size mismatch during subgraph collaps"); + } + + if (body_parameters.size() + body_results.size() > 7) { + if (strategy == continuation_strategy::reset) { + remark(13) << "new subgraph is created. Impossible to schedule subgraph with " + << body_parameters.size() << " inputs and " << body_results.size() << " outputs." << std::endl; + + auto single_node_subgraph = op::Subgraph::wrap_node_as_subgraph(node); + ngraph::replace_node(node, single_node_subgraph); + return true; + } else { + return false; + } + } + + auto body = op::create_body(node->get_friendly_name(), body_results, body_parameters); + for (size_t i = 0; i < body->get_parameters().size(); i++) { + body->get_parameters()[i]->set_friendly_name(body_parameters[i]->get_friendly_name()); + } + + auto subgraph = op::build_subgraph(node, external_inputs, body); + auto act_body = subgraph->get_body(); + for (size_t i = 0; i < act_body->get_parameters().size(); i++) { + act_body->get_parameters()[i]->set_friendly_name(body_parameters[i]->get_friendly_name()); + } + + if (subgraph->get_output_size() != subgraph_result_inputs.size()) { + throw ngraph_error("newly create subgraph doesn't much number of results"); + } + + if (outputs_are_not_broadcastable(subgraph)) { + if (strategy == continuation_strategy::reset) { + remark(13) << "New subgraph is created due to outputs of a subgraph not broadcastable." << std::endl; + + auto single_node_subgraph = op::Subgraph::wrap_node_as_subgraph(node); + single_node_subgraph->validate_and_infer_types(); + ngraph::replace_node(node, single_node_subgraph); + return true; + } else { + return false; + } + } + + if (has_cycles_of_dependencies(subgraph_result_inputs, subgraph->inputs())) { + if (strategy == continuation_strategy::reset) { + remark(13) << "New subgraph is created due to loop dependency introduced by one of input subgraphs." << std::endl; + + auto single_node_subgraph = op::Subgraph::wrap_node_as_subgraph(node); + single_node_subgraph->validate_and_infer_types(); + ngraph::replace_node(node, single_node_subgraph); + return true; + } else { + return false; + } + } + + for (size_t i = 0; i < subgraph->get_output_size(); ++i) { + for (auto target_input : subgraph_result_inputs[i]) { + target_input.replace_source_output(subgraph->output(i)); + } + } + + subgraph->validate_and_infer_types(); + + auto act_body1 = subgraph->get_body(); + for (size_t i = 0; i < act_body1->get_parameters().size(); i++) { + act_body1->get_parameters()[i]->set_friendly_name(body_parameters[i]->get_friendly_name()); + } + + remark(1) << "Replacement (merge) done for: " + << subgraph->get_friendly_name() + << " with " << subgraph->inputs().size() + << " inputs and " << subgraph->outputs().size() + << " outputs and " << subgraph->get_body()->get_ops().size() << " ops total\n"; + + return true; + }; + + register_matcher(std::make_shared( + std::make_shared(pattern::any_input(), + [](std::shared_ptr n) { + return is_lo(n) && has_supported_in_out(n) && has_subgraph_as_input(n); + })), + continuation_callback); +} diff --git a/inference-engine/src/snippets/src/pass/insert_load_store.cpp b/inference-engine/src/snippets/src/pass/insert_load_store.cpp new file mode 100644 index 00000000000000..c8130a92ae2ec6 --- /dev/null +++ b/inference-engine/src/snippets/src/pass/insert_load_store.cpp @@ -0,0 +1,67 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" +#include "remarks.hpp" + +#include "snippets/pass/insert_load_store.hpp" +#include "snippets/snippets_isa.hpp" + +#include +#include +#include + +ngraph::snippets::pass::InsertLoad::InsertLoad() { + MATCHER_SCOPE(InsertLoad); + register_matcher(std::make_shared( + ngraph::pattern::wrap_type()), + [this](ngraph::pattern::Matcher &m) { + auto root = m.get_match_root(); + + // check if already has Load as an output + for (auto output : root->outputs()) { + for (auto consumer : output.get_target_inputs()) { + if (dynamic_cast(consumer.get_node())) { + return false; + } + } + } + + auto load = std::make_shared (root); + ngraph::copy_runtime_info(root, load); + + bool rewritten = false; + for (auto output : root->outputs()) { + for (auto consumer : output.get_target_inputs()) { + if (consumer.get_node()->shared_from_this() != load) { + consumer.replace_source_output(load); + rewritten |= true; + } + } + } + + return rewritten; + }); +} + +ngraph::snippets::pass::InsertStore::InsertStore() { + MATCHER_SCOPE(InsertStore); + register_matcher(std::make_shared( + ngraph::pattern::wrap_type()), + [this](ngraph::pattern::Matcher &m) { + auto root = m.get_match_root(); + + // check if already has Store as an input + for (auto input : root->inputs()) { + if (dynamic_cast(input.get_source_output().get_node())) { + return false; + } + } + + auto store = std::make_shared (root->input_value(0)); + ngraph::copy_runtime_info(root, store); + root->set_argument(0, store); + return true; + }); +} diff --git a/inference-engine/src/snippets/src/pass/insert_movebroadcast.cpp b/inference-engine/src/snippets/src/pass/insert_movebroadcast.cpp new file mode 100644 index 00000000000000..2186335dc4da97 --- /dev/null +++ b/inference-engine/src/snippets/src/pass/insert_movebroadcast.cpp @@ -0,0 +1,177 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "remarks.hpp" +#include "itt.hpp" + +#include "snippets/pass/insert_movebroadcast.hpp" +#include "snippets/snippets_isa.hpp" + +#include +#include + +#include +#include + +using namespace ngraph; + +static std::shared_ptr numpy_broadcast_node(const ngraph::Output& value, + const ngraph::Shape& output_shape, const ngraph::Shape& source_shape) { + std::shared_ptr broadcasted_node = value.get_node_shared_ptr(); + + if (output_shape == value.get_shape()) { + return broadcasted_node; + } + + NGRAPH_CHECK(source_shape.size() == output_shape.size(), + "Ranks of source_shape and output_shape dont match: ", + source_shape.size(), + " vs ", + output_shape.size()); + + ngraph::AxisVector broadcast_axes; + ngraph::Shape squeezed_shape; + for (size_t index = 0; index < output_shape.size(); ++index) { + if (source_shape.at(index) == 1 && output_shape.at(index) != 1) { + broadcast_axes.push_back(index); + } else { + squeezed_shape.push_back(source_shape.at(index)); + } + } + + remark(2) << "Insert explicit broadcast " << value.get_node()->get_type_name() + << " " << broadcast_axes << " " << broadcasted_node->get_shape() << " -> " << output_shape << std::endl; + + // it shouldn't be a probrem for now since we don't consider StridedSlice and Broadcast here + if (auto constant = ngraph::as_type_ptr(broadcasted_node)) { + if (constant->get_shape() == ngraph::Shape() || ngraph::shape_size(constant->get_shape()) == 1) { + remark(2) << "Insert explicit broadcast " << value.get_node()->get_type_name() + << " to scalar constant " << constant->get_shape() << " -- aborting!" << std::endl; + + return broadcasted_node; + } + } + + if (auto constant = ngraph::as_type_ptr(broadcasted_node)) { + if (constant->get_shape() == ngraph::Shape() || ngraph::shape_size(constant->get_shape()) == 1) { + remark(2) << "Insert explicit broadcast " << value.get_node()->get_type_name() + << " to scalar constant " << constant->get_shape() << " -- aborting!" << std::endl; + + return broadcasted_node; + } + } + + if (!broadcast_axes.empty()) { + // ShapeOf + broadcasted_node = std::make_shared(broadcasted_node, output_shape); + } + + return broadcasted_node; +} + +static ngraph::Shape calculate_broadcast_shape(ngraph::Shape lhs_shape, ngraph::Shape rhs_shape) { + ngraph::Shape result; + auto lhs_rank = lhs_shape.size(); + auto rhs_rank = rhs_shape.size(); + auto max_rank = std::max(lhs_rank, rhs_rank); + + // left-pad the lhs_shape with ones + lhs_shape.insert(begin(lhs_shape), max_rank - lhs_rank, 1); + // left-pad the rhs_shape with ones + rhs_shape.insert(begin(rhs_shape), max_rank - rhs_rank, 1); + + for (size_t index = 0; index < max_rank; ++index) { + size_t lhs_dim = lhs_shape.at(index); + size_t rhs_dim = rhs_shape.at(index); + + if (lhs_dim != rhs_dim && lhs_dim != 1 && rhs_dim != 1) { + throw ngraph::ngraph_error("incompatible shapes"); + } + + result.push_back(std::max(lhs_dim, rhs_dim)); + } + return result; +} + +std::pair> get_numpy_broadcast_shapes(const std::vector& input_shapes) { + ngraph::Shape target_shape = std::accumulate(begin(input_shapes), end(input_shapes), ngraph::Shape{}, calculate_broadcast_shape); + + std::vector full_shapes; + for (const ngraph::Shape& input : input_shapes) { + ngraph::Shape padded_shape{input}; + padded_shape.insert(begin(padded_shape), target_shape.size() - padded_shape.size(), 1); + full_shapes.push_back(move(padded_shape)); + } + + return {target_shape, full_shapes}; +} + +auto reset_broacast_config(const std::shared_ptr& op) -> void { + using namespace ngraph; + + bool is_scalar = false; + for (auto input : op->inputs()) { + if (input.get_shape() == Shape() || ngraph::shape_size(input.get_shape()) == 1) { + is_scalar = true; + } + } + + if (!is_scalar) { + if (auto binary = std::dynamic_pointer_cast(op)) { + binary->set_autob(ngraph::op::AutoBroadcastSpec::NONE); + } else if (auto binary = std::dynamic_pointer_cast(op)) { + binary->set_autob(ngraph::op::AutoBroadcastSpec::NONE); + } else if (auto binary = std::dynamic_pointer_cast(op)) { + binary->set_autob(ngraph::op::AutoBroadcastSpec::NONE); + } + } +} + +// adds explicit broadcasts if needed +// ToDO: this indeed make model not reshapable, need to come up with more clever way to insert fake broadcast, +// well on the other hand, if we replace scalar constant with Scalar op / or ShapeOf, we could have broadcasts that are reshapable +// TODO: generate FakeBroadcast if and only if broadcast is done by w dimension +ngraph::snippets::pass::InsertMoveBroadcast::InsertMoveBroadcast() { + MATCHER_SCOPE(InsertMoveBroadcast); + ngraph::graph_rewrite_callback callback = [this](ngraph::pattern::Matcher &m) { + auto root = m.get_match_root(); + const auto& values = root->input_values(); + if (values.empty()) { + return false; + } + + std::vector input_shapes; + for (const auto& input : values) { + input_shapes.push_back(input.get_shape()); + } + + // find the output tensor's shape, then broadcast all inputs so that they are compatible + auto bcast_shapes = get_numpy_broadcast_shapes(input_shapes); + + ngraph::OutputVector broadcasted_inputs; + for (size_t i = 0; i < values.size(); ++i) { + auto node = numpy_broadcast_node(values[i], bcast_shapes.first, bcast_shapes.second[i]); + ngraph::copy_runtime_info(root, node); + broadcasted_inputs.push_back(node); + } + + auto new_args = ngraph::as_node_vector(broadcasted_inputs); + for (size_t i = 0; i < new_args.size(); i++) { + root->input(i).replace_source_output(new_args[i]->output(0)); + } + + reset_broacast_config(root); + + return true; + }; + + // only numpy broadcast type is supported currently + auto any = std::make_shared(pattern::any_input(), + [](std::shared_ptr n) { + // should add supports_auto_broadcast to SquaredDifference + return (ngraph::op::supports_auto_broadcast(n) || !!as_type_ptr(n) || !!as_type_ptr(n)) + && n->get_autob().m_type == ngraph::op::AutoBroadcastType::NUMPY; }); + + register_matcher(std::make_shared(any), callback); +} \ No newline at end of file diff --git a/inference-engine/src/snippets/src/pass/load_movebroadcast_to_broadcastload.cpp b/inference-engine/src/snippets/src/pass/load_movebroadcast_to_broadcastload.cpp new file mode 100644 index 00000000000000..36fccd8bb7dc39 --- /dev/null +++ b/inference-engine/src/snippets/src/pass/load_movebroadcast_to_broadcastload.cpp @@ -0,0 +1,59 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "remarks.hpp" +#include "itt.hpp" + +#include "snippets/pass/load_movebroadcast_to_broadcastload.hpp" +#include "snippets/snippets_isa.hpp" + +#include +#include +#include + +#include + +ngraph::snippets::pass::LoadMoveBroadcastToBroadcastLoad::LoadMoveBroadcastToBroadcastLoad() { + MATCHER_SCOPE(LoadMoveBroadcastToBroadcastLoad); + auto param_pattern = ngraph::pattern::wrap_type(); + auto load_pattern = std::make_shared(param_pattern); + auto fbn = std::make_shared(load_pattern, Shape{1}); + + register_matcher(std::make_shared(fbn), + [load_pattern, param_pattern](ngraph::pattern::Matcher &m) { + auto root = m.get_match_root(); + + const auto &pm = m.get_pattern_value_map(); + const auto input = pm.at(load_pattern).get_node_shared_ptr(); + const auto param = pm.at(param_pattern).get_node_shared_ptr(); + + // check if load has more than 1 user to avoid load+broadcast load on the same parameter + if (input->output(0).get_target_inputs().size() != 1) { + return false; + } + + if (root->inputs().size() != 1 || input->inputs().size() != 1) { + throw ngraph_error("cannot rewrite Broadcast load with more than one input"); + } + + auto inshape = root->input(0).get_shape(); + auto outshape = root->output(0).get_shape(); + auto broadcastload = std::make_shared(param, outshape); + Shape bct(inshape.size(), 0); + for (size_t k = 0; k < inshape.size(); k++) { + if (inshape[k] != outshape[k] && inshape[k] == 1) { + bct[k] = 1; + } + } + + broadcastload->set_broadcast_info(bct); + if (broadcastload->is_broadcast(outshape.size()-1)) { + ngraph::copy_runtime_info(root, broadcastload); + ngraph::replace_node(root, broadcastload); + return true; + } else { + return false; + } + }); +} \ No newline at end of file diff --git a/inference-engine/src/snippets/src/pass/vector_to_scalar.cpp b/inference-engine/src/snippets/src/pass/vector_to_scalar.cpp new file mode 100644 index 00000000000000..6bf17fe2f1f7a4 --- /dev/null +++ b/inference-engine/src/snippets/src/pass/vector_to_scalar.cpp @@ -0,0 +1,40 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" + +#include "snippets/pass/vector_to_scalar.hpp" +#include "snippets/snippets_isa.hpp" + +#include +#include +#include + +ngraph::snippets::pass::ReplaceLoadsWithScalarLoads::ReplaceLoadsWithScalarLoads() { + MATCHER_SCOPE(ReplaceLoadsWithScalarLoads); + register_matcher(std::make_shared( + ngraph::pattern::wrap_type()), + [this](ngraph::pattern::Matcher &m) { + auto root = m.get_match_root(); + auto load = std::make_shared (root->input_value(0)); + load->set_friendly_name(root->get_friendly_name()); + ngraph::copy_runtime_info(root, load); + ngraph::replace_node(root, load); + return true; + }); +} + +ngraph::snippets::pass::ReplaceStoresWithScalarStores::ReplaceStoresWithScalarStores() { + MATCHER_SCOPE(ReplaceStoresWithScalarStores); + register_matcher(std::make_shared( + ngraph::pattern::wrap_type()), + [this](ngraph::pattern::Matcher &m) { + auto root = m.get_match_root(); + auto store = std::make_shared (root->input_value(0)); + store->set_friendly_name(root->get_friendly_name()); + ngraph::copy_runtime_info(root, store); + ngraph::replace_node(root, store); + return true; + }); +} diff --git a/inference-engine/src/snippets/src/register_info.cpp b/inference-engine/src/snippets/src/register_info.cpp new file mode 100644 index 00000000000000..fdcea5d4ef6830 --- /dev/null +++ b/inference-engine/src/snippets/src/register_info.cpp @@ -0,0 +1,9 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "snippets/register_info.hpp" + +template class ngraph::VariantImpl>; + +constexpr ngraph::VariantTypeInfo ngraph::VariantWrapper>::type_info; diff --git a/inference-engine/src/snippets/src/remarks.hpp b/inference-engine/src/snippets/src/remarks.hpp new file mode 100644 index 00000000000000..bd40ae83650d5d --- /dev/null +++ b/inference-engine/src/snippets/src/remarks.hpp @@ -0,0 +1,20 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +class logstreambuf: public std::streambuf { +public: + static const int threshold {5}; +}; + +template +static inline auto remark(T x) -> std::ostream& { + static logstreambuf nostreambuf; + static std::ostream nocout(&nostreambuf); + + return ((x >= logstreambuf::threshold)? std::cout << "Remark: " : nocout); +} diff --git a/inference-engine/src/transformations/CMakeLists.txt b/inference-engine/src/transformations/CMakeLists.txt index 2403c64f55fa85..d875635e667aa6 100644 --- a/inference-engine/src/transformations/CMakeLists.txt +++ b/inference-engine/src/transformations/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -28,7 +28,7 @@ ie_add_vs_version_file(NAME ${TARGET_NAME} FILEDESCRIPTION "Inference Engine Transformations library") target_link_libraries(${TARGET_NAME} PUBLIC ${NGRAPH_LIBRARIES} - PRIVATE ${NGRAPH_REF_LIBRARIES} openvino::conditional_compilation openvino::itt ngraph::builder pugixml) + PRIVATE ${NGRAPH_REF_LIBRARIES} openvino::itt ngraph::builder pugixml) target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src") @@ -37,6 +37,8 @@ add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME}) +ie_mark_target_as_cc(${TARGET_NAME}) + # LTO set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) diff --git a/inference-engine/src/transformations/include/ngraph_ops/convolution_ie.hpp b/inference-engine/src/transformations/include/ngraph_ops/convolution_ie.hpp index 81891716b45c69..db27b184766604 100644 --- a/inference-engine/src/transformations/include/ngraph_ops/convolution_ie.hpp +++ b/inference-engine/src/transformations/include/ngraph_ops/convolution_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/ngraph_ops/deconvolution_ie.hpp b/inference-engine/src/transformations/include/ngraph_ops/deconvolution_ie.hpp index c91200f1980e54..96422f61e3b6c8 100644 --- a/inference-engine/src/transformations/include/ngraph_ops/deconvolution_ie.hpp +++ b/inference-engine/src/transformations/include/ngraph_ops/deconvolution_ie.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/ngraph_ops/nms_ie_internal.hpp b/inference-engine/src/transformations/include/ngraph_ops/nms_ie_internal.hpp index 4d5bd8167f00a1..a692d1bae1a862 100644 --- a/inference-engine/src/transformations/include/ngraph_ops/nms_ie_internal.hpp +++ b/inference-engine/src/transformations/include/ngraph_ops/nms_ie_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/ngraph_ops/type_relaxed.hpp b/inference-engine/src/transformations/include/ngraph_ops/type_relaxed.hpp index 59e99937b8ff22..35e5c362b5933b 100644 --- a/inference-engine/src/transformations/include/ngraph_ops/type_relaxed.hpp +++ b/inference-engine/src/transformations/include/ngraph_ops/type_relaxed.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/add_fake_quantize_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/add_fake_quantize_fusion.hpp new file mode 100644 index 00000000000000..78684c72d3a92d --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/add_fake_quantize_fusion.hpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include + +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API AddFakeQuantizeFusion; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief AddFakeQuantizeFusion transformation replaces following graph: + * Add->FakeQuantize to a single FakeQuantize + * Restrictions: + * - second input to Add is a Constant + */ +class ngraph::pass::AddFakeQuantizeFusion: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + AddFakeQuantizeFusion(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/algebraic_simplification.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/algebraic_simplification.hpp index f6d9dd5ad4d2db..c363f513d9ea92 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/algebraic_simplification.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/algebraic_simplification.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/batch_to_space_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/batch_to_space_fusion.hpp new file mode 100644 index 00000000000000..0db4233827e6d8 --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/batch_to_space_fusion.hpp @@ -0,0 +1,37 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include + +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API BatchToSpaceFusion; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief BatchToSpaceFusion transformation replaces following graph: + * Transpose (or Reshape) -> DepthToSpace -> StridedSlice -> Transpose (or Reshape) + * to BatchToSpace + * Restrictions: + * - input rank must be 4 + * - Transpose permutation must be [1, 0, 2, 3] + * - DepthToSpaceMode must be BLOCKS_FIRST + */ + +class ngraph::pass::BatchToSpaceFusion: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + BatchToSpaceFusion(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/binarize_weights.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/binarize_weights.hpp new file mode 100644 index 00000000000000..4b0d3fc4cd0282 --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/binarize_weights.hpp @@ -0,0 +1,79 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API BinarizeWeights; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief This transformation converts weights to -1/+1 form + * and applies normalization factors to output low/high and after Convolution. + * For example, following graph + * + * .... .... out_low out_high weights .. .. out_low out_high + * | | | | | | | | | + * +--------------------------+ +--------------------------+ + * | FakeQuantize (levels==2) | | FakeQuantize (levels==2) | + * | (on activations) | | (on weights) | + * +--------------------------+ +--------------------------+ + * | | + * | | + * ----------------- ------------------- + * | | + * v v + * +-------------+ + * | Convolution | + * +-------------+ + * | + * v + * + * is transformed to: + * + * normalized normalized + * .... .... out_low out_high + * | | | | + * +--------------------------+ +--------------------------+ + * | FakeQuantize (levels==2) | | Constant | + * | (on activations) | | (with converted weights) | + * +--------------------------+ +--------------------------+ + * | | + * | | + * ----------------- ------------------- + * | | + * v v + * +-------------+ + * | Convolution | + * +-------------+ + * | + * v + * +------------+ +---------------------------------------------------------------+ + * | Multiply | <---| Constant (normalization factor coming from FQ on activations) | + * +------------+ +---------------------------------------------------------------+ + * | + * v + * +------------+ +-----------------------------------------------------------+ + * | Multiply | <---| Constant (normalization factor coming from FQ on weights) | + * +------------+ +------------------------------------------------------------ + * | + * v + * + * Normalization factors are chosen based output_high value. + * If it's zero - norm factor is equal to output_low and output_high otherwise + */ + +class ngraph::pass::BinarizeWeights : public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + BinarizeWeights(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/broadcast_elementwise_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/broadcast_elementwise_fusion.hpp index 5c0c3f5b1cdc9a..0430520301da16 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/broadcast_elementwise_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/broadcast_elementwise_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/clamp_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/clamp_fusion.hpp index 019ab6d4952af2..edd05c9907c913 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/clamp_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/clamp_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/common_optimizations.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/common_optimizations.hpp index 465036fb764d37..e3476165158fd0 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/common_optimizations.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/common_optimizations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/conv_bias_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/conv_bias_fusion.hpp index 314de39ae8be3a..d18f1bc2a6ca8f 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/conv_bias_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/conv_bias_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/conv_mul_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/conv_mul_fusion.hpp index 187f3bd784b01f..392fe758c43934 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/conv_mul_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/conv_mul_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/conv_to_binary_conv.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/conv_to_binary_conv.hpp new file mode 100644 index 00000000000000..30fb7a4323249a --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/conv_to_binary_conv.hpp @@ -0,0 +1,77 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API ConvToBinaryConv; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief This transformation converts Convolution to BinaryConvolution under following conditions: + * - first input to Convolution is a FakeQuantize with levels==2 with output low,high being either (0, 1) or (-1, 1) + * - second input (weights) is a constant with values -1 or 1 + * The transformation also converts weights to binary Constant (with 'u1' type) + * For example, when output_low is equal to 0 and output_high is equal to 1, following graph + * + * .... .... out_low out_high + * | | | | + * +--------------------------+ +-------------------------------------+ + * | FakeQuantize (levels==2) | | Constant | + * | (on activations) | | (weights containing -1 or 1 values) | + * +--------------------------+ +-------------------------------------+ + * | | + * | | + * ----------------- ------------------- + * | | + * v v + * +-------------+ + * | Convolution | + * +-------------+ + * | + * v + * is transformed to: + * + * .... .... out_low out_high + * | | | | + * +--------------------------+ +---------------------------------+ + * | FakeQuantize (levels==2) | | Constant (with u1 type) | + * | (on activations) | | (with u1 type - binary weights) | + * +--------------------------+ +---------------------------------+ + * | | + * | | + * ----------------- ------------------- + * | | + * v v + * +-------------------+ + * | BinaryConvolution | + * +-------------------+ + * | + * v + * +------------+ +----------------------------------------------------+ + * | | | Constant | + * | Add | <---| (weights from original graph, | + * | | | sum-reduced over [1,..., len(weights.shape)] axes | + * +------------+ +----------------------------------------------------+ + * | + * v + * +------------+ +-----+ + * | Multiply | <---| 0.5 | + * +------------+ +-----+ + * | + * v + */ +class ngraph::pass::ConvToBinaryConv : public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + ConvToBinaryConv(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/convert_quantize_dequantize.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/convert_quantize_dequantize.hpp index 52505a6f84843f..10001bb09723c4 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/convert_quantize_dequantize.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/convert_quantize_dequantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/depth_to_space_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/depth_to_space_fusion.hpp index dfaa9107fa4c74..5cef1d4d76f29b 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/depth_to_space_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/depth_to_space_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/dilated_convolution_converter.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/dilated_convolution_converter.hpp new file mode 100644 index 00000000000000..44b070b08d8953 --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/dilated_convolution_converter.hpp @@ -0,0 +1,35 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include + +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API DilatedConvolutionConverter; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief DilatedConvolutionConverter transformation replaces following graph: + * SpaceToBatch -> Convolution -> BatchToSpace + * to a single Convolution node with updated pads and dilations + * Restrictions: + * - pads in SpaceToBatch must have 0 on first and second position + */ + +class ngraph::pass::DilatedConvolutionConverter: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + DilatedConvolutionConverter(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/eliminate_unsqueeze_gather.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/eliminate_unsqueeze_gather.hpp index 81c7266ab9ad62..141ef7d774d9a9 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/eliminate_unsqueeze_gather.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/eliminate_unsqueeze_gather.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/fq_mul_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/fq_mul_fusion.hpp index 9fce8c3d4fb786..fe774c2699e311 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/fq_mul_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/fq_mul_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/fq_reshape_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/fq_reshape_fusion.hpp index b4b04627171751..aec90340b7fecd 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/fq_reshape_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/fq_reshape_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/hsigmoid_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/hsigmoid_fusion.hpp index 640b0e1eeee523..e19da646a7d592 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/hsigmoid_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/hsigmoid_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/hswish_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/hswish_fusion.hpp index cf6ecb25d15053..296373c7484de9 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/hswish_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/hswish_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/lin_op_sequence_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/lin_op_sequence_fusion.hpp index 0b203098bb2758..9f7f1587d1125f 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/lin_op_sequence_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/lin_op_sequence_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/low_latency.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/low_latency.hpp index eb05df852bcb74..0d2cdf88e9b913 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/low_latency.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/low_latency.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/mish_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/mish_fusion.hpp index 4b7315b8f56b38..c3e8deebd4a861 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/mish_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/mish_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/mul_fake_quantize_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/mul_fake_quantize_fusion.hpp new file mode 100644 index 00000000000000..9db29d51b64228 --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/mul_fake_quantize_fusion.hpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include + +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API MulFakeQuantizeFusion; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief MulFakeQuantizeFusion transformation replaces following graph: + * Mul->FakeQuantize to a single FakeQuantize + * Restrictions: + * - second input to Mul is a Constant + */ +class ngraph::pass::MulFakeQuantizeFusion: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + MulFakeQuantizeFusion(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/mvn_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/mvn_fusion.hpp new file mode 100644 index 00000000000000..3de28fe67f9c52 --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/mvn_fusion.hpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include + +#include +#include +#include "ngraph/pattern/matcher.hpp" + +namespace ngraph { +namespace pass { + + class TRANSFORMATIONS_API MVNFusion; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief MVNFusion transformation replaces group of + * operations: (x - ReduceMean(x, axes)) / (Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + eps) to MVN op. + */ +class ngraph::pass::MVNFusion : public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + MVNFusion(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/nop_elimination.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/nop_elimination.hpp index c6913432d42448..a5d9f7cd19f11e 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/nop_elimination.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/nop_elimination.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/normalize_l2_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/normalize_l2_fusion.hpp index 8723779ed046ba..1f5106ebe0b760 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/normalize_l2_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/normalize_l2_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/optimize_strided_slice.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/optimize_strided_slice.hpp index 2bae8515ae691c..3cbefcf88a0791 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/optimize_strided_slice.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/optimize_strided_slice.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/pad_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/pad_fusion.hpp index 5305fbe504bc0d..7c11f1ee02a9a1 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/pad_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/pad_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/pull_transpose_through_fq.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/pull_transpose_through_fq.hpp index adf23cbe3e6964..abf643b0de9841 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/pull_transpose_through_fq.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/pull_transpose_through_fq.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/relu_fake_quantize_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/relu_fake_quantize_fusion.hpp index d10d1cabd90aef..733fbdd455b72d 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/relu_fake_quantize_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/relu_fake_quantize_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/remove_filtering_boxes_by_size.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/remove_filtering_boxes_by_size.hpp index 02a7adf797b367..1aa4ee16bddcf3 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/remove_filtering_boxes_by_size.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/remove_filtering_boxes_by_size.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/softmax_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/softmax_fusion.hpp new file mode 100644 index 00000000000000..01d016286b7b4e --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/softmax_fusion.hpp @@ -0,0 +1,77 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API SoftmaxFusion; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief SoftmaxFusion transformation replaces following graph: + * + * +---------------+ + * │ │ + * │ input │ + * │ │ + * +---------------+ + * │ │ + * │ v + * │ +-----------+ + * │ │ │ + * │ │ ReduceMax │ + * │ │ │ + * │ +-----------+ + * │ │ + * │ │ + * v v + * +---------------+ + * │ │ + * │ Sub │ + * │ │ + * +---------------+ + * | + * | + * v + * +---------------+ + * │ │ + * │ Exp │ + * │ │ + * +---------------+ + * │ │ + * │ v + * │ +-----------+ + * │ │ │ + * │ │ ReduceSum │ + * │ │ │ + * │ +-----------+ + * │ │ + * │ │ + * v v + * +-------------+ + * | │ + * | Div │ + * │ │ + * +-------------+ + * + * to a single Softmax node + * + * * Restrictions: + * - ReduceMax and ReduceSum axes must be scalar constants and they have to point to the same axis + */ + +class ngraph::pass::SoftmaxFusion: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + SoftmaxFusion(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_fusion.hpp index 06f356ed26e7e4..a6f0c991e5bead 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_to_mish_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_to_mish_fusion.hpp index ed57d280914702..6e3336fd67bb05 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_to_mish_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/softplus_to_mish_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/space_to_batch_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/space_to_batch_fusion.hpp new file mode 100644 index 00000000000000..4ae1f45daa030b --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/space_to_batch_fusion.hpp @@ -0,0 +1,38 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include + +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API SpaceToBatchFusion; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief SpaceToBatchFusion transformation replaces following graph: + * Transpose (or Reshape) -> Pad -> SpaceToDepth -> Transpose (or Reshape) + * to SpaceToBatch + * Restrictions: + * - input rank must be 4 + * - Transpose permutation must be [1, 0, 2, 3] + * - pad value is 0, PadMode is CONSTANT + * - SpaceToDepthMode must be BLOCKS_FIRST + */ + +class ngraph::pass::SpaceToBatchFusion: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + SpaceToBatchFusion(); +}; diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/swish_fusion.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/swish_fusion.hpp index 330b148a8ac4ab..64610533a48a57 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/swish_fusion.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/swish_fusion.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/common_optimizations/weights_dequantize_to_fake_quantize.hpp b/inference-engine/src/transformations/include/transformations/common_optimizations/weights_dequantize_to_fake_quantize.hpp index a01c449be0618c..35087cf94c151f 100644 --- a/inference-engine/src/transformations/include/transformations/common_optimizations/weights_dequantize_to_fake_quantize.hpp +++ b/inference-engine/src/transformations/include/transformations/common_optimizations/weights_dequantize_to_fake_quantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,8 +20,11 @@ class TRANSFORMATIONS_API WeightsDequantizeToFakeQuantize; /** * @ingroup ie_transformation_common_api - * @brief SoftPlusFusion transformation replaces group of - * operations: log(exp(x) + 1) to SoftPlus op. + * @brief WeightsDequantizeToFakeQuantize transformation replaces + * Constant (i8) -> Convert (to fp) -> Subtract (zp) -> Multiply (scale) -> + * with + * Constant (i8) -> Convert (to fp) -> FakeQuantize -> + * deducing levels and FakeQuantize limits according to actual values in the weights Constant */ class ngraph::pass::WeightsDequantizeToFakeQuantize: public ngraph::pass::MatcherPass { public: diff --git a/inference-engine/src/transformations/include/transformations/control_flow/unroll_tensor_iterator.hpp b/inference-engine/src/transformations/include/transformations/control_flow/unroll_tensor_iterator.hpp index b14243254985aa..ad12310c229fe7 100644 --- a/inference-engine/src/transformations/include/transformations/control_flow/unroll_tensor_iterator.hpp +++ b/inference-engine/src/transformations/include/transformations/control_flow/unroll_tensor_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/convert_precision.hpp b/inference-engine/src/transformations/include/transformations/convert_precision.hpp index c3faf3c5edb1b3..ce2bc73b34d1ac 100644 --- a/inference-engine/src/transformations/include/transformations/convert_precision.hpp +++ b/inference-engine/src/transformations/include/transformations/convert_precision.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -69,15 +69,18 @@ class TRANSFORMATIONS_API ConvertPrecision; * LessEqual */ +using type_to_fuse_map = std::map&, ngraph::element::Type, size_t idx)>>; class ngraph::pass::ConvertPrecision : public ngraph::pass::FunctionPass { public: NGRAPH_RTTI_DECLARATION; - ConvertPrecision(ngraph::element::Type_t from, ngraph::element::Type_t to) + ConvertPrecision(ngraph::element::Type_t from, ngraph::element::Type_t to, type_to_fuse_map additional_type_to_fuse_map = {}) : FunctionPass(), m_from(from), - m_to(to) {} + m_to(to), + m_additional_type_to_fuse_map(additional_type_to_fuse_map) {} bool run_on_function(std::shared_ptr f) override; private: element::Type m_from, m_to; + type_to_fuse_map m_additional_type_to_fuse_map; }; diff --git a/inference-engine/src/transformations/include/transformations/init_node_info.hpp b/inference-engine/src/transformations/include/transformations/init_node_info.hpp index 0bf6e917a61686..cd56a29aae26ef 100644 --- a/inference-engine/src/transformations/include/transformations/init_node_info.hpp +++ b/inference-engine/src/transformations/include/transformations/init_node_info.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/include/low_precision/disable_convert_constant_folding_on_const_path.hpp b/inference-engine/src/transformations/include/transformations/low_precision/disable_convert_constant_folding_on_const_path.hpp similarity index 92% rename from inference-engine/src/low_precision_transformations/include/low_precision/disable_convert_constant_folding_on_const_path.hpp rename to inference-engine/src/transformations/include/transformations/low_precision/disable_convert_constant_folding_on_const_path.hpp index 9427894071edad..79ad6e3e882245 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision/disable_convert_constant_folding_on_const_path.hpp +++ b/inference-engine/src/transformations/include/transformations/low_precision/disable_convert_constant_folding_on_const_path.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/batch_norm_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/batch_norm_decomposition.hpp index 531bacc8ded626..f09d7c2bcce003 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/batch_norm_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/batch_norm_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/bidirectional_sequences_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/bidirectional_sequences_decomposition.hpp index c35006bffde116..06e3ec758cafb0 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/bidirectional_sequences_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/bidirectional_sequences_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_batch_to_space.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_batch_to_space.hpp index 4a828ccf916dc8..0b525419d7af57 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_batch_to_space.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_batch_to_space.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast3.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast3.hpp index 03c2b35cd5137b..b0549cdbf9cf3d 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast3.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast3.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast_to_tiles.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast_to_tiles.hpp index bc1defc289fd89..acf6dcdacb7cd1 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast_to_tiles.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_broadcast_to_tiles.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_convolutions.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_convolutions.hpp index f887e1d77ba357..5d4d888ad8739e 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_convolutions.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_convolutions.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_depth_to_space.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_depth_to_space.hpp index 770ef08d94724f..347ce53ebc28fa 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_depth_to_space.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_depth_to_space.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_divide.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_divide.hpp index 7b839eec6b9bb2..13158b47ad13f4 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_divide.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_divide.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_gather_0d.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_gather_0d.hpp index bccd135536ff3a..48558692c7d60b 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_gather_0d.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_gather_0d.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_gelu.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_gelu.hpp index 0057699c99ce6d..5d1e5fbccdc3f9 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_gelu.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_gelu.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_interpolate1_to_interpolate4.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_interpolate1_to_interpolate4.hpp index 35d802ee79f29d..47a7c23c2c3047 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_interpolate1_to_interpolate4.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_interpolate1_to_interpolate4.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_minimum_to_power_and_max.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_minimum_to_power_and_max.hpp index b0f58cce43e5e6..0365568276b58c 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_minimum_to_power_and_max.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_minimum_to_power_and_max.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_mod.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_mod.hpp index c8e8e2dab9d53d..0d060d912ca1c0 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_mod.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_mod.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_mvn1_to_mvn6.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_mvn1_to_mvn6.hpp index 61b91dff18b8db..5a8805d0b7a8a2 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_mvn1_to_mvn6.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_mvn1_to_mvn6.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_negative.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_negative.hpp index 09f5797cc289b8..bca22b978f4a91 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_negative.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_negative.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_nms_to_nms_ie_internal.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_nms_to_nms_ie_internal.hpp index b0e6133b20152b..1c404cd69b1222 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_nms_to_nms_ie_internal.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_nms_to_nms_ie_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_pad_to_group_conv.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_pad_to_group_conv.hpp index 255aeb70c6a39b..4b92f39bdb2cb6 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_pad_to_group_conv.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_pad_to_group_conv.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_previous_nms_to_nms_5.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_previous_nms_to_nms_5.hpp index 55d98031a3b3d2..668143a920a1c7 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_previous_nms_to_nms_5.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_previous_nms_to_nms_5.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_reduce_to_pooling.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_reduce_to_pooling.hpp index a131f5682c4286..78bca5eee410ee 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_reduce_to_pooling.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_reduce_to_pooling.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_scatter_elements_to_scatter.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_scatter_elements_to_scatter.hpp index f13d41e9aaab10..0e2386d5d8dd8a 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_scatter_elements_to_scatter.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_scatter_elements_to_scatter.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_sequences_to_tensor_iterator.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_sequences_to_tensor_iterator.hpp index 550ee25a13dbf2..be6df96815fe3a 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_sequences_to_tensor_iterator.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_sequences_to_tensor_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_shapeof3.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_shapeof3.hpp index 444a060fb7641e..103545c80c31c3 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_shapeof3.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_shapeof3.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_shuffle_channels3.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_shuffle_channels3.hpp index 03434d9686337d..ab3dde3a0f25d5 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_shuffle_channels3.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_shuffle_channels3.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_batch.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_batch.hpp index 04d9eea6acf595..a110fce5ab2b6b 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_batch.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_batch.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_depth.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_depth.hpp index 8b7ee1546e95f1..abd409485aaebb 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_depth.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_space_to_depth.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_subtract.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_subtract.hpp index aa15250cf8d0f3..64ea22e0144af9 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_subtract.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_subtract.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_ti_to_sequences.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_ti_to_sequences.hpp index a0bbbb1b938ac4..67e41fd85ef42b 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_ti_to_sequences.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_ti_to_sequences.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/convert_topk3.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/convert_topk3.hpp index 0f19e0e2222632..795b766f12f020 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/convert_topk3.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/convert_topk3.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/fq_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/fq_decomposition.hpp index cb545cba8ef27e..fa64ec24eeb252 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/fq_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/fq_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/gelu7_downgrade.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/gelu7_downgrade.hpp new file mode 100644 index 00000000000000..12bcfc9ee6043c --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/op_conversions/gelu7_downgrade.hpp @@ -0,0 +1,28 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph { +namespace pass { + + class TRANSFORMATIONS_API Gelu7Downgrade; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief Gelu7Downgrade converts v7::Gelu operation to v2::Gelu unconditionally. This is done because only limited + * set of plugins support v7::Gelu which has an attribute specifying approximation mode. For other plugins the + * behaviour is to use v2 version of the operation which does not support the approximation mode. + */ +class ngraph::pass::Gelu7Downgrade : public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + Gelu7Downgrade(); +}; diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/gru_cell_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/gru_cell_decomposition.hpp index 6161f433c92bc4..b908f8f61cdf19 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/gru_cell_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/gru_cell_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/hsigmoid_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/hsigmoid_decomposition.hpp index c03eadd418d8a5..b23ae4b3b4a696 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/hsigmoid_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/hsigmoid_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/hswish_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/hswish_decomposition.hpp index 7adb2eb0397eae..eec9c1e5887833 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/hswish_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/hswish_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/log_softmax_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/log_softmax_decomposition.hpp index acbcf40f2d0110..be13468eec4e81 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/log_softmax_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/log_softmax_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/lstm_cell_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/lstm_cell_decomposition.hpp index 937f475cb6fe02..8e714da3073f9b 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/lstm_cell_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/lstm_cell_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/mvn6_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/mvn6_decomposition.hpp index f1b5eb7abe6f9b..9df5baaa23214b 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/mvn6_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/mvn6_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l1_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l1_decomposition.hpp index f74daf49de5b92..e315270f3253c7 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l1_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l1_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l2_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l2_decomposition.hpp index 31f3eaffaf367a..3108feba4d128e 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l2_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/reduce_l2_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/rnn_cell_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/rnn_cell_decomposition.hpp index 12621e6d66d854..ad927bcec04bbb 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/rnn_cell_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/rnn_cell_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.hpp new file mode 100644 index 00000000000000..2b8378b9e23672 --- /dev/null +++ b/inference-engine/src/transformations/include/transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.hpp @@ -0,0 +1,43 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include + +#include + +namespace ngraph { +namespace pass { + +class TRANSFORMATIONS_API SimplifyCTCGreedyDecoderSeqLen; + +} // namespace pass +} // namespace ngraph + +/** + * @ingroup ie_transformation_common_api + * @brief SimplifyCTCGreedyDecoder converts v6:CTCGreedyDecoderSeqLen into v0::CTCGreedyDecoder. + * + * data[N, T, C] seq_len[N] + * \ / + * CTCGreedyDecoderSeqLen + * + * will be converted to + * + * data[T, N, C] seq_mask[T, N] + * \ / + * CTCGreedyDecoder + * / \ + * class_index[N, T] seq_len[N] + * + * The transformation works only for case when the blank_index input == C-1, where C is the number of classes. + */ +class ngraph::pass::SimplifyCTCGreedyDecoderSeqLen: public ngraph::pass::MatcherPass { +public: + NGRAPH_RTTI_DECLARATION; + SimplifyCTCGreedyDecoderSeqLen(); +}; diff --git a/inference-engine/src/transformations/include/transformations/op_conversions/softplus_decomposition.hpp b/inference-engine/src/transformations/include/transformations/op_conversions/softplus_decomposition.hpp index 1fb754b53d614d..29d52afa696575 100644 --- a/inference-engine/src/transformations/include/transformations/op_conversions/softplus_decomposition.hpp +++ b/inference-engine/src/transformations/include/transformations/op_conversions/softplus_decomposition.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset2_to_opset1.hpp b/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset2_to_opset1.hpp index 094ffccbbc6c75..4ac4b121d07755 100644 --- a/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset2_to_opset1.hpp +++ b/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset2_to_opset1.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset3_to_opset2.hpp b/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset3_to_opset2.hpp index 9013462cfb7dde..7fc79ec20fdf1f 100644 --- a/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset3_to_opset2.hpp +++ b/inference-engine/src/transformations/include/transformations/opset_conversions/convert_opset3_to_opset2.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/rt_info/dequantization_attribute.hpp b/inference-engine/src/transformations/include/transformations/rt_info/dequantization_attribute.hpp index 90c022312fac80..8b75663f7e3819 100644 --- a/inference-engine/src/transformations/include/transformations/rt_info/dequantization_attribute.hpp +++ b/inference-engine/src/transformations/include/transformations/rt_info/dequantization_attribute.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/rt_info/fused_names_attribute.hpp b/inference-engine/src/transformations/include/transformations/rt_info/fused_names_attribute.hpp index 69d63abbe3cc18..20a4946127fbb0 100644 --- a/inference-engine/src/transformations/include/transformations/rt_info/fused_names_attribute.hpp +++ b/inference-engine/src/transformations/include/transformations/rt_info/fused_names_attribute.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/rt_info/primitives_priority_attribute.hpp b/inference-engine/src/transformations/include/transformations/rt_info/primitives_priority_attribute.hpp index 9045679a8ecad4..eeff9dab29c911 100644 --- a/inference-engine/src/transformations/include/transformations/rt_info/primitives_priority_attribute.hpp +++ b/inference-engine/src/transformations/include/transformations/rt_info/primitives_priority_attribute.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/serialize.hpp b/inference-engine/src/transformations/include/transformations/serialize.hpp index 12395d7da4efd1..f9733fa06cf6c5 100644 --- a/inference-engine/src/transformations/include/transformations/serialize.hpp +++ b/inference-engine/src/transformations/include/transformations/serialize.hpp @@ -1,5 +1,6 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/matmul_sr.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/matmul_sr.hpp index 5149a57d95eae2..14ca0839c7f246 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/matmul_sr.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/matmul_sr.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/mimic_set_batch_size.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/mimic_set_batch_size.hpp index 8a0edab887b3fe..1b56a2841991cd 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/mimic_set_batch_size.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/mimic_set_batch_size.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/proposal_scales_stridedslice.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/proposal_scales_stridedslice.hpp index 31e5a4e4ac757f..8a99395b773ffa 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/proposal_scales_stridedslice.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/proposal_scales_stridedslice.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/reshape_to_1D.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/reshape_to_1D.hpp index a246ff816d4b5e..5832343ececf35 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/reshape_to_1D.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/reshape_to_1D.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/set_batch_size.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/set_batch_size.hpp index 0aee2b417bba3a..4131fd0253f72e 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/set_batch_size.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/set_batch_size.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/smart_reshape.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/smart_reshape.hpp index 20d7db0a36094f..75a7bd9f7a6586 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/smart_reshape.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/smart_reshape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/strided_slice_squeeze.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/strided_slice_squeeze.hpp index 14e2ae27af9a3a..2c002e316ea7ae 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/strided_slice_squeeze.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/strided_slice_squeeze.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/smart_reshape/utils.hpp b/inference-engine/src/transformations/include/transformations/smart_reshape/utils.hpp index 84765b0ff6046f..c04d2e8364baa3 100644 --- a/inference-engine/src/transformations/include/transformations/smart_reshape/utils.hpp +++ b/inference-engine/src/transformations/include/transformations/smart_reshape/utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/include/transformations/utils/utils.hpp b/inference-engine/src/transformations/include/transformations/utils/utils.hpp index 3d304983623572..9a4016dfbb75c0 100644 --- a/inference-engine/src/transformations/include/transformations/utils/utils.hpp +++ b/inference-engine/src/transformations/include/transformations/utils/utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -104,6 +104,21 @@ TRANSFORMATIONS_API bool check_for_broadcast(const ngraph::Shape &ref_shape, con TRANSFORMATIONS_API std::shared_ptr activation(const std::string& activation_name, const ngraph::Output& apply_to); +TRANSFORMATIONS_API bool is_seq_len_provided(const std::shared_ptr &seq_len_input, int64_t max_seq_len); + + +template +Output eltwise_fold(const Output & input0, const Output & input1) { + auto eltwise = std::make_shared(input0, input1); + OutputVector output(eltwise->get_output_size()); + if (!eltwise->constant_fold(output, {input0, input1})) { + throw ngraph_error("Can not constant fold eltwise node"); + } + if (output.size() != 1) { + throw ngraph_error("Eltwise constant fold has unexpected number of outputs: " + std::to_string(output.size())); + } + return output[0]; +} } // namespace util } // namespace op } // namespace ngraph diff --git a/inference-engine/src/transformations/include/transformations_visibility.hpp b/inference-engine/src/transformations/include/transformations_visibility.hpp index 4d19fcf3cae421..60dd0967346a2e 100644 --- a/inference-engine/src/transformations/include/transformations_visibility.hpp +++ b/inference-engine/src/transformations/include/transformations_visibility.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/itt.hpp b/inference-engine/src/transformations/src/itt.hpp index cabba94bfc123a..f7d06b2b6f081d 100644 --- a/inference-engine/src/transformations/src/itt.hpp +++ b/inference-engine/src/transformations/src/itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing @@ -43,29 +31,29 @@ OV_CC_DOMAINS(internal_op); * INTERNAL_OP_SCOPE macro allows to disable parts of internal nGraph operations if they are not used */ #if defined(SELECTIVE_BUILD_ANALYZER) -#define RUN_ON_FUNCTION_SCOPE(region) OV_SCOPE(ngraph_pass, OV_CC_CAT(region, _run_on_function)) +#define RUN_ON_FUNCTION_SCOPE(region) OV_SCOPE(ngraph_pass, OV_PP_CAT(region, _run_on_function)) #define MATCHER_SCOPE(region) \ - const std::string matcher_name(OV_CC_TOSTRING(region)) + const std::string matcher_name(OV_PP_TOSTRING(region)) #define INTERNAL_OP_SCOPE(region) OV_SCOPE(internal_op, region) #elif defined(SELECTIVE_BUILD) #define MATCHER_SCOPE_(scope, region) \ - if (OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(scope, _, region)) == 0) \ - throw ngraph::ngraph_error(std::string(OV_CC_TOSTRING(OV_CC_CAT3(scope, _, region))) + \ + if (OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(scope, _, region)) == 0) \ + throw ngraph::ngraph_error(std::string(OV_PP_TOSTRING(OV_PP_CAT3(scope, _, region))) + \ " is disabled!") #define MATCHER_SCOPE(region) \ - const std::string matcher_name(OV_CC_TOSTRING(region)); \ - if (OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(ngraph_pass, _, region)) == 0) \ + const std::string matcher_name(OV_PP_TOSTRING(region)); \ + if (OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(ngraph_pass, _, region)) == 0) \ return #define INTERNAL_OP_SCOPE(region) MATCHER_SCOPE_(internal_op, region) -#define RUN_ON_FUNCTION_SCOPE(region) MATCHER_SCOPE_(ngraph_pass, OV_CC_CAT(region, _run_on_function)) +#define RUN_ON_FUNCTION_SCOPE(region) MATCHER_SCOPE_(ngraph_pass, OV_PP_CAT(region, _run_on_function)) #else #define MATCHER_SCOPE(region) \ - const std::string matcher_name(OV_CC_TOSTRING(region)) + const std::string matcher_name(OV_PP_TOSTRING(region)) #define INTERNAL_OP_SCOPE(region) #define RUN_ON_FUNCTION_SCOPE(region) #endif diff --git a/inference-engine/src/transformations/src/ngraph_ops/convolution_ie.cpp b/inference-engine/src/transformations/src/ngraph_ops/convolution_ie.cpp index a3c9417f2c8ff1..51297d7d751821 100644 --- a/inference-engine/src/transformations/src/ngraph_ops/convolution_ie.cpp +++ b/inference-engine/src/transformations/src/ngraph_ops/convolution_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/ngraph_ops/deconvolution_ie.cpp b/inference-engine/src/transformations/src/ngraph_ops/deconvolution_ie.cpp index 56a281ffbaae09..ef9bc90bd1ea8c 100644 --- a/inference-engine/src/transformations/src/ngraph_ops/deconvolution_ie.cpp +++ b/inference-engine/src/transformations/src/ngraph_ops/deconvolution_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/ngraph_ops/nms_ie_internal.cpp b/inference-engine/src/transformations/src/ngraph_ops/nms_ie_internal.cpp index 4a406396988c28..85b96ada8502c6 100644 --- a/inference-engine/src/transformations/src/ngraph_ops/nms_ie_internal.cpp +++ b/inference-engine/src/transformations/src/ngraph_ops/nms_ie_internal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/ngraph_ops/type_relaxed.cpp b/inference-engine/src/transformations/src/ngraph_ops/type_relaxed.cpp index 03dcfc60128164..04cf3742470d8d 100644 --- a/inference-engine/src/transformations/src/ngraph_ops/type_relaxed.cpp +++ b/inference-engine/src/transformations/src/ngraph_ops/type_relaxed.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/precomp.hpp b/inference-engine/src/transformations/src/precomp.hpp index eebe470d7f0b62..b604a638d7d07b 100644 --- a/inference-engine/src/transformations/src/precomp.hpp +++ b/inference-engine/src/transformations/src/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/add_fake_quantize_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/add_fake_quantize_fusion.cpp new file mode 100644 index 00000000000000..6a421a15c41a69 --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/add_fake_quantize_fusion.cpp @@ -0,0 +1,70 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/add_fake_quantize_fusion.hpp" +#include "transformations/utils/utils.hpp" + +#include +#include + +#include +#include +#include +#include "itt.hpp" + + +NGRAPH_RTTI_DEFINITION(ngraph::pass::AddFakeQuantizeFusion, "AddFakeQuantizeFusion", 0); + +ngraph::pass::AddFakeQuantizeFusion::AddFakeQuantizeFusion() { + MATCHER_SCOPE(AddFakeQuantizeFusion); + auto input_pattern = ngraph::pattern::any_input(); + auto const_pattern = ngraph::pattern::wrap_type(); + auto add_pattern = ngraph::pattern::wrap_type({input_pattern, const_pattern}, + pattern::consumers_count(1)); + auto fq_pattern = ngraph::pattern::wrap_type({add_pattern, + ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + ngraph::pattern::any_input()}); + ngraph::matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto& pattern_value_map = m.get_pattern_value_map(); + auto fq = std::dynamic_pointer_cast(pattern_value_map.at(fq_pattern).get_node_shared_ptr()); + if (!fq) + return false; + std::shared_ptr add_const = std::dynamic_pointer_cast(pattern_value_map.at(const_pattern).get_node_shared_ptr()); + if (!add_const) + return false; + auto const_shape = add_const->get_shape(); + size_t const_shape_size = shape_size(const_shape); + if (const_shape_size > 1) { + // disallow constant shapes other than (N, 1, 1, ..., 1) or (1, C, 1, ..., 1) + if (!(const_shape[0] > 1 && const_shape[0] == const_shape_size) && + !(const_shape.size() > 1 && const_shape[1] == const_shape_size)) { + return false; + } + } + + if (const_shape_size > 1 && + static_cast(const_shape.size()) < fq->get_input_partial_shape(0).rank().get_length()) { + // Reshape constants like (C, 1, 1) to (1, C, 1, 1) + const_shape.insert(const_shape.begin(), fq->get_input_partial_shape(0).rank().get_length() - const_shape.size(), 1); + add_const = std::make_shared(add_const, op::Constant::create(element::u64, Shape{const_shape.size()}, const_shape), false); + } + auto new_input_low = std::make_shared(fq->input_value(1), add_const); + auto new_input_high = std::make_shared(fq->input_value(2), add_const); + auto new_fq = register_new_node(pattern_value_map.at(input_pattern), + new_input_low, + new_input_high, + fq->input_value(3), + fq->input_value(4), + fq->get_levels()); + new_fq->set_friendly_name(fq->get_friendly_name()); + copy_runtime_info({pattern_value_map.at(add_pattern).get_node_shared_ptr(), fq}, {new_input_low, new_input_high, new_fq}); + replace_node(fq, new_fq); + return true; + }; + + auto m = std::make_shared(fq_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/algebraic_simplification.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/algebraic_simplification.cpp index c403f4461b3d87..ce73883ac15a69 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/algebraic_simplification.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/algebraic_simplification.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/batch_to_space_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/batch_to_space_fusion.cpp new file mode 100644 index 00000000000000..3c794e44a0ec4b --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/batch_to_space_fusion.cpp @@ -0,0 +1,119 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/batch_to_space_fusion.hpp" +#include "transformations/utils/utils.hpp" + +#include +#include + +#include +#include +#include +#include +#include "itt.hpp" + + +NGRAPH_RTTI_DEFINITION(ngraph::pass::BatchToSpaceFusion, "BatchToSpaceFusion", 0); + +ngraph::pass::BatchToSpaceFusion::BatchToSpaceFusion() { + MATCHER_SCOPE(BatchToSpaceFusion); + auto data_pattern = pattern::any_input(pattern::has_static_shape()); + auto reshape_before_pattern = pattern::wrap_type({data_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto trans_before_pattern = pattern::wrap_type({data_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto reshape_or_transpose_before_pattern = std::make_shared(OutputVector{reshape_before_pattern, trans_before_pattern}); + auto depth_to_space_pattern = pattern::wrap_type({reshape_or_transpose_before_pattern}); + auto starts_pattern = pattern::wrap_type(); + auto ends_pattern = pattern::wrap_type(); + auto slice_pattern = pattern::wrap_type({depth_to_space_pattern, starts_pattern, ends_pattern, + pattern::wrap_type()}); + auto reshape_after_pattern = pattern::wrap_type({slice_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto trans_after_pattern = pattern::wrap_type({slice_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto reshape_or_transpose_after_pattern = std::make_shared(OutputVector{reshape_after_pattern, trans_after_pattern}); + + ngraph::matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto& pattern_map = m.get_pattern_value_map(); + + auto get_reshape_or_transpose = [&pattern_map] (const std::shared_ptr& reshape_pattern, + const std::shared_ptr& trans_pattern) -> std::shared_ptr { + if (pattern_map.count(reshape_pattern)) + return pattern_map.at(reshape_pattern).get_node_shared_ptr(); + if (pattern_map.count(trans_pattern)) + return pattern_map.at(trans_pattern).get_node_shared_ptr(); + return nullptr; + }; + auto check_input_output_shape = [] (const std::shared_ptr& node) -> bool { + const auto& input_shape = node->get_input_shape(0); + const auto& output_shape = node->get_output_shape(0); + // Transpose permutation has to be [1, 0, 2, 3] + return input_shape[0] == output_shape[1] && + input_shape[1] == output_shape[0] && + input_shape[2] == output_shape[2] && + input_shape[3] == output_shape[3]; + }; + + std::shared_ptr reshape_or_trans_before = get_reshape_or_transpose(reshape_before_pattern, trans_before_pattern); + if (!reshape_or_trans_before) + return false; + if (!check_input_output_shape(reshape_or_trans_before)) + return false; + std::shared_ptr reshape_or_trans_after = get_reshape_or_transpose(reshape_after_pattern, trans_after_pattern); + if (!reshape_or_trans_after) + return false; + if (!check_input_output_shape(reshape_or_trans_after)) + return false; + + auto depth_to_space = std::dynamic_pointer_cast(pattern_map.at(depth_to_space_pattern).get_node_shared_ptr()); + if (!depth_to_space) + return false; + if (depth_to_space->get_mode() != opset6::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST) + return false; + const auto& dts_shape = depth_to_space->get_shape(); + if (dts_shape.size() != 4) + return false; + auto block_size = static_cast(depth_to_space->get_block_size()); + auto block_shape = op::Constant::create(element::i64, Shape{4}, + std::vector{1, 1, block_size, block_size}); + auto starts = std::dynamic_pointer_cast(pattern_map.at(starts_pattern).get_node_shared_ptr()); + if (!starts) + return false; + auto ends = std::dynamic_pointer_cast(pattern_map.at(ends_pattern).get_node_shared_ptr()); + if (!ends) + return false; + auto starts_value = starts->cast_vector(); + auto ends_value = ends->cast_vector(); + // Convert StridedSlice's 'ends' input to BatchToSpace's 'crops_ends' + for (size_t i = 0; i < ends_value.size(); i++) { + if (ends_value[i] < 0) { + // negative ends become positive crops + // e.g. ends[i] == -2 means cropping i-th dimension by 2 from the back + ends_value[i] = -ends_value[i]; + } else if (ends_value[i] > static_cast(dts_shape[i])) { + // no cropping from the back if ends[i] > shape[i] + ends_value[i] = 0; + } else { + // else if ends[i] is positive and within [0, shape[i]] - crop the difference: shape[i] - ends[i] + ends_value[i] = dts_shape[i] - ends_value[i]; + } + } + auto crops_begin = op::Constant::create(element::i64, Shape{4}, starts_value); + auto crops_end = op::Constant::create(element::i64, Shape{4}, ends_value); + auto batch_to_space = register_new_node(pattern_map.at(data_pattern), block_shape, crops_begin, crops_end); + batch_to_space->set_friendly_name(reshape_or_trans_after->get_friendly_name()); + + copy_runtime_info({ + reshape_or_trans_before, + depth_to_space, + pattern_map.at(slice_pattern).get_node_shared_ptr(), + reshape_or_trans_after + }, + batch_to_space); + replace_node(reshape_or_trans_after, batch_to_space); + + return true; + }; + + auto m = std::make_shared(reshape_or_transpose_after_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/binarize_weights.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/binarize_weights.cpp new file mode 100644 index 00000000000000..5f6d9b95a035cf --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/binarize_weights.cpp @@ -0,0 +1,188 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/binarize_weights.hpp" +#include "itt.hpp" + +#include +#include + +#include +#include +#include + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(pass::BinarizeWeights, "BinarizeWeights", 0); + + +static float quantize(float f, float input_low, float input_high, float output_low, float output_high) { + if (f <= input_low) + return output_low; + if (f > input_high) + return output_high; + return std::round((f - input_low) / (input_high - input_low)) * (output_high - output_low) + output_low; +} + + +static std::vector quantize_weights(const Shape& weights_shape, std::vector& weights, + Shape input_low_high_shape, const std::vector& input_low, const std::vector& input_high, + Shape output_low_high_shape, const std::vector& output_low, const std::vector& output_high) { + NGRAPH_CHECK(shape_size(input_low_high_shape) == 1 || shape_size(input_low_high_shape) == weights_shape[0]); + NGRAPH_CHECK(shape_size(output_low_high_shape) == 1 || shape_size(output_low_high_shape) == weights_shape[0]); + size_t out_feat_off = 1; + for (size_t i = 1; i < weights_shape.size(); i++) + out_feat_off *= weights_shape[i]; + + std::vector out; + out.reserve(shape_size(weights_shape)); + + auto get_idx = [out_feat_off] (size_t i, const Shape& shape) -> size_t { + return (i / out_feat_off) % shape[0]; + }; + + for (size_t i = 0; i < shape_size(weights_shape); i++) { + size_t in_idx = get_idx(i, input_low_high_shape); + size_t out_idx = get_idx(i, output_low_high_shape); + out.push_back(quantize(weights[i], input_low[in_idx], input_high[in_idx], output_low[out_idx], output_high[out_idx])); + } + return out; +} + + +pass::BinarizeWeights::BinarizeWeights() { + MATCHER_SCOPE(BinarizeWeights); + auto activations_fq_pattern = pattern::wrap_type( + {pattern::any_input(), + pattern::wrap_type(), + pattern::wrap_type(), + pattern::wrap_type(), + pattern::wrap_type()}, + pattern::consumers_count(1)); + auto weights_fq_pattern = pattern::wrap_type( + {pattern::wrap_type(), + pattern::wrap_type(), + pattern::wrap_type(), + pattern::wrap_type(), + pattern::wrap_type()}, + pattern::consumers_count(1)); + auto conv_pattern = pattern::wrap_type({activations_fq_pattern, weights_fq_pattern}); + + matcher_pass_callback callback = [=](pattern::Matcher &m) { + auto conv = std::dynamic_pointer_cast(m.get_match_root()); + if (!conv) + return false; + auto activations_fq = std::dynamic_pointer_cast(conv->input_value(0).get_node_shared_ptr()); + if (!activations_fq || activations_fq->get_levels() != 2) + return false; + auto weights_fq = std::dynamic_pointer_cast(conv->input_value(1).get_node_shared_ptr()); + if (!weights_fq || weights_fq->get_levels() != 2) + return false; + + auto weights_const = std::dynamic_pointer_cast(weights_fq->input_value(0).get_node_shared_ptr()); + if (!weights_const) + return false; + + auto check_output_low_high = [] (const std::vector& output_low, + const std::vector& output_high) -> std::tuple { + bool output_low_is_zero = true; + bool output_low_high_are_opposite = true; + for (size_t i = 0; i < output_low.size(); i++) { + output_low_is_zero = output_low_is_zero && output_low[i] == 0.0f; + output_low_high_are_opposite = output_low_high_are_opposite && output_low[i] == -output_high[i]; + } + return std::tuple{output_low_is_zero, output_low_high_are_opposite}; + }; + + auto activations_output_low_const = std::dynamic_pointer_cast(activations_fq->input_value(3).get_node_shared_ptr()); + auto activations_output_high_const = std::dynamic_pointer_cast(activations_fq->input_value(4).get_node_shared_ptr()); + if (!activations_output_low_const || !activations_output_high_const) + return false; + + // Check output low and high on activations FQ first + bool act_out_low_is_zero = false; + bool act_out_low_high_are_opposite = false; + auto activations_output_low = activations_output_low_const->cast_vector(); + auto activations_output_high = activations_output_high_const->cast_vector(); + std::tie(act_out_low_is_zero, act_out_low_high_are_opposite) = check_output_low_high(activations_output_low, + activations_output_high); + if (!(act_out_low_high_are_opposite || act_out_low_is_zero)) + return false; + + auto weights_input_low_const = std::dynamic_pointer_cast(weights_fq->input_value(1).get_node_shared_ptr()); + auto weights_input_high_const = std::dynamic_pointer_cast(weights_fq->input_value(2).get_node_shared_ptr()); + if (!weights_input_low_const || !weights_input_high_const) + return false; + auto weights_output_low_const = std::dynamic_pointer_cast(weights_fq->input_value(3).get_node_shared_ptr()); + auto weights_output_high_const = std::dynamic_pointer_cast(weights_fq->input_value(4).get_node_shared_ptr()); + if (!weights_output_low_const || !weights_output_high_const) + return false; + + // Check output low and high on weights FQ + bool weights_out_low_high_are_opposite = false; + auto weights_output_low = weights_output_low_const->cast_vector(); + auto weights_output_high = weights_output_high_const->cast_vector(); + std::tie(std::ignore, weights_out_low_high_are_opposite) = check_output_low_high(weights_output_low, + weights_output_high); + if (!weights_out_low_high_are_opposite) + return false; + + // Normalize output low and high to either (0, 1) or (-1, 1) + auto normalize_output_low_high = [] (std::vector& output_low, std::vector& output_high) { + for (size_t i = 0; i < output_low.size(); i++) { + output_low[i] /= output_high[i]; + output_high[i] = 1.0f; + } + }; + + normalize_output_low_high(activations_output_low, activations_output_high); + normalize_output_low_high(weights_output_low, weights_output_high); + + // Choose additional normalization factor that has to be put after Convolution + const std::shared_ptr& activations_norm_factor = activations_output_high_const; + const std::shared_ptr& weights_norm_factor = weights_output_high_const; + + // Create new FQ on activations with new output low/high + auto output_low_normalized = op::Constant::create(element::f32, activations_output_low_const->get_shape(), activations_output_low); + output_low_normalized->set_friendly_name(activations_output_low_const->get_friendly_name()); + auto output_high_normalized = op::Constant::create(element::f32, activations_output_high_const->get_shape(), activations_output_high); + output_high_normalized->set_friendly_name(activations_output_high_const->get_friendly_name()); + auto new_activations_fq = activations_fq->clone_with_new_inputs({activations_fq->input_value(0), + activations_fq->input_value(1), + activations_fq->input_value(2), + output_low_normalized, + output_high_normalized}); + new_activations_fq->set_friendly_name(activations_fq->get_friendly_name()); + + // Quantize weights - here we get rid of FQ on weights and create a constant with quantized weights + auto weights = weights_const->cast_vector(); + auto weights_input_low = weights_input_low_const->cast_vector(); + auto weights_input_high = weights_input_high_const->cast_vector(); + auto quantized_weights = quantize_weights(weights_const->get_shape(), weights, + weights_input_low_const->get_shape(), weights_input_low, weights_input_high, + weights_output_low_const->get_shape(), weights_output_low, weights_output_high); + auto quantized_weights_const = op::Constant::create(element::f32, weights_const->get_shape(), quantized_weights); + quantized_weights_const->set_friendly_name(weights_const->get_friendly_name()); + auto new_conv = conv->clone_with_new_inputs({new_activations_fq, quantized_weights_const}); + new_conv->set_friendly_name(conv->get_friendly_name()); + + std::vector norm_factor_shape = {-1}; + for (size_t i = 2; i < weights_const->get_shape().size(); i++) + norm_factor_shape.push_back(1); + auto norm_factor_shape_const = opset5::Constant::create(element::i64, Shape{norm_factor_shape.size()}, norm_factor_shape); + + auto activations_norm_factor_reshaped = std::make_shared(activations_norm_factor, norm_factor_shape_const, false); + auto mul = std::make_shared(new_conv, activations_norm_factor_reshaped); + auto weights_norm_factor_reshaped = std::make_shared(weights_norm_factor, norm_factor_shape_const, false); + auto mul2 = std::make_shared(mul, weights_norm_factor_reshaped); + + copy_runtime_info({activations_fq, weights_fq, conv}, + {new_activations_fq, new_conv, activations_norm_factor_reshaped, mul, weights_norm_factor_reshaped, mul2}); + replace_node(conv, mul2); + return true; + }; + + auto m = std::make_shared(conv_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/broadcast_elementwise_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/broadcast_elementwise_fusion.cpp index d5824caf6700bb..b0683068b2872d 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/broadcast_elementwise_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/broadcast_elementwise_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/clamp_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/clamp_fusion.cpp index 3c12d1119bd538..2bd8bb6cd5e39e 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/clamp_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/clamp_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/common_optimizations.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/common_optimizations.cpp index 6a63d11c077286..9b08b9b93f6198 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/common_optimizations.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/common_optimizations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,7 +15,6 @@ #include "transformations/common_optimizations/fq_reshape_fusion.hpp" #include "transformations/common_optimizations/depth_to_space_fusion.hpp" #include "transformations/common_optimizations/optimize_strided_slice.hpp" -#include "transformations/common_optimizations/mish_fusion.hpp" #include "transformations/common_optimizations/softplus_fusion.hpp" #include "transformations/common_optimizations/softplus_to_mish_fusion.hpp" #include "transformations/common_optimizations/swish_fusion.hpp" @@ -27,9 +26,18 @@ #include "transformations/common_optimizations/hswish_fusion.hpp" #include "transformations/common_optimizations/convert_quantize_dequantize.hpp" #include "transformations/common_optimizations/relu_fake_quantize_fusion.hpp" +#include "transformations/common_optimizations/add_fake_quantize_fusion.hpp" +#include "transformations/common_optimizations/mul_fake_quantize_fusion.hpp" #include "transformations/common_optimizations/clamp_fusion.hpp" #include "transformations/common_optimizations/pad_fusion.hpp" #include "transformations/common_optimizations/eliminate_unsqueeze_gather.hpp" +#include "transformations/common_optimizations/softmax_fusion.hpp" +#include "transformations/common_optimizations/mvn_fusion.hpp" +#include "transformations/common_optimizations/binarize_weights.hpp" +#include "transformations/common_optimizations/conv_to_binary_conv.hpp" +#include "transformations/common_optimizations/space_to_batch_fusion.hpp" +#include "transformations/common_optimizations/batch_to_space_fusion.hpp" +#include "transformations/common_optimizations/dilated_convolution_converter.hpp" #include "transformations/op_conversions/bidirectional_sequences_decomposition.hpp" #include "transformations/op_conversions/convert_pad_to_group_conv.hpp" #include "transformations/op_conversions/convert_divide.hpp" @@ -45,6 +53,7 @@ #include "transformations/op_conversions/convert_gelu.hpp" #include "transformations/op_conversions/convert_interpolate1_to_interpolate4.hpp" #include "transformations/op_conversions/batch_norm_decomposition.hpp" +#include "transformations/op_conversions/gelu7_downgrade.hpp" #include "transformations/op_conversions/reduce_l1_decomposition.hpp" #include "transformations/op_conversions/reduce_l2_decomposition.hpp" #include "transformations/op_conversions/hswish_decomposition.hpp" @@ -52,6 +61,7 @@ #include "transformations/op_conversions/hsigmoid_decomposition.hpp" #include "transformations/op_conversions/log_softmax_decomposition.hpp" #include "transformations/op_conversions/mvn6_decomposition.hpp" +#include "transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.hpp" #include #include @@ -95,12 +105,20 @@ bool ngraph::pass::CommonOptimizations::run_on_function(std::shared_ptradd_matcher(); common_fusions->add_matcher(); common_fusions->add_matcher(); + common_fusions->add_matcher(); + common_fusions->add_matcher(); + common_fusions->add_matcher(); + common_fusions->add_matcher(); + common_fusions->add_matcher(); common_fusions->set_name("ngraph::pass::CommonFusions"); manager.register_pass(); manager.register_pass(); + manager.register_pass(); + manager.register_pass(); auto decomp = manager.register_pass(); + decomp->add_matcher(); decomp->add_matcher(); decomp->add_matcher(); decomp->add_matcher(); @@ -119,6 +137,7 @@ bool ngraph::pass::CommonOptimizations::run_on_function(std::shared_ptradd_matcher(); decomp->add_matcher(); decomp->add_matcher(); + decomp->add_matcher(); decomp->set_name("ngraph::pass::CommonDecompositions"); // CF is required after all decompositions @@ -141,6 +160,8 @@ bool ngraph::pass::CommonOptimizations::run_on_function(std::shared_ptradd_matcher(); fq_fusions->add_matcher(); fq_fusions->add_matcher(); + fq_fusions->add_matcher(); + fq_fusions->add_matcher(); fq_fusions->set_name("ngraph::pass::FakeQuantizeFusions"); manager.run_passes(f); diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/conv_bias_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/conv_bias_fusion.cpp index f6f05dc08b1bca..4dddec4adab9fb 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/conv_bias_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/conv_bias_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/conv_mul_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/conv_mul_fusion.cpp index 06dea7823335d0..99ed26c64fed4d 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/conv_mul_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/conv_mul_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -85,7 +85,7 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::GroupConvolutionMultiplyFusion, "GroupConvo ngraph::pass::GroupConvolutionMultiplyFusion::GroupConvolutionMultiplyFusion() { MATCHER_SCOPE(GroupConvolutionMultiplyFusion); auto input = pattern::any_input(); - auto weights = ngraph::pattern::any_input();//pattern::has_static_dims({0, 1}) /* has GOIYX layout */); + auto weights = ngraph::pattern::any_input(pattern::has_static_dims({0, 1}) /* has GOIYX layout */); auto conv = ngraph::pattern::wrap_type({input, weights}, pattern::consumers_count(1)); auto mul_const = ngraph::pattern::wrap_type();//pattern::has_static_shape()); auto mul = ngraph::pattern::wrap_type({conv, mul_const}); @@ -93,15 +93,15 @@ ngraph::pass::GroupConvolutionMultiplyFusion::GroupConvolutionMultiplyFusion() { matcher_pass_callback callback = [conv, input, weights, mul, mul_const](pattern::Matcher & m) -> bool { const auto & pattern_to_output = m.get_pattern_value_map(); - const auto & m_weights = pattern_to_output.at(weights); + auto m_weights = pattern_to_output.at(weights); const auto & m_const = pattern_to_output.at(mul_const); - const auto & m_input = pattern_to_output.at(input); const auto & m_conv = pattern_to_output.at(conv).get_node_shared_ptr(); const auto & m_mul = pattern_to_output.at(mul).get_node_shared_ptr(); - const auto & G = m_weights.get_partial_shape()[0].get_length(); - const auto & O = m_weights.get_partial_shape()[1].get_length(); - const auto & weights_rank = m_weights.get_partial_shape().rank().get_length(); + const auto & weights_shape = m_weights.get_partial_shape(); + const auto & G = weights_shape[0].get_length(); + const auto & O = weights_shape[1].get_length(); + const auto & weights_rank = weights_shape.rank().get_length(); const auto & const_shape = m_const.get_shape(); bool is_scalar_multiplier(shape_size(const_shape) == 1); @@ -118,27 +118,48 @@ ngraph::pass::GroupConvolutionMultiplyFusion::GroupConvolutionMultiplyFusion() { return false; } - // Reshape constant to [G, O, 1, 1, 1] where the number of 1 is equal to - // the number of weights dimensions. In case of scalar we skip Reshape. + auto reshape = std::dynamic_pointer_cast(m_weights.get_node_shared_ptr()); + bool are_weights_reshaped = reshape != nullptr; + if (are_weights_reshaped) { + m_weights = reshape->input_value(0); + if (!is_scalar_multiplier) { + const auto& pshape = m_weights.get_partial_shape(); + if (pshape[0].get_length() != G * O) + return false; + } + } + + // Reshape constant to [G, O, 1, 1, 1, ..] or [G * O, 1, 1, ...] + // The number of 1 is equal to the number of weights dimensions. + // In case of scalar we skip Reshape. // This Reshape aligns Constant shape for multiplication with weights. Output final_const = m_const; if (!is_scalar_multiplier) { - auto final_const_shape = Shape(weights_rank, 1); - final_const_shape[0] = G; - final_const_shape[1] = O; + Shape final_const_shape; + if (are_weights_reshaped) { + final_const_shape = Shape(weights_rank - 1, 1); + final_const_shape[0] = G * O; + } else { + final_const_shape = Shape(weights_rank, 1); + final_const_shape[0] = G; + final_const_shape[1] = O; + } final_const = std::make_shared(m_const, opset4::Constant::create(ngraph::element::i64, ngraph::Shape{final_const_shape.size()}, final_const_shape), true); } // Multiply convolution weights with aligned Constant values - auto weights_multiply = std::make_shared(m_weights, final_const); + auto new_weights = std::make_shared(m_weights, final_const); + if (are_weights_reshaped) { + reshape->input(0).replace_source_output(new_weights); + } else { + m_conv->input(1).replace_source_output(new_weights); + } + m_conv->set_friendly_name(m_mul->get_friendly_name()); + m_mul->output(0).replace(m_conv->output(0)); + copy_runtime_info(m_mul, {m_conv, new_weights}); - // Replace Convolution->Multiply with Convolution with new inputs - auto new_conv = m_conv->copy_with_new_inputs({m_input, weights_multiply}); - new_conv->set_friendly_name(m_mul->get_friendly_name()); - copy_runtime_info({m_conv, m_mul}, {new_conv, final_const.get_node_shared_ptr(), weights_multiply}); - replace_node(m_mul, new_conv); return true; }; diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/conv_to_binary_conv.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/conv_to_binary_conv.cpp new file mode 100644 index 00000000000000..bee30b59651a76 --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/conv_to_binary_conv.cpp @@ -0,0 +1,130 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/conv_to_binary_conv.hpp" +#include "itt.hpp" + +#include +#include + +#include +#include +#include +#include + +NGRAPH_RTTI_DEFINITION(ngraph::pass::ConvToBinaryConv, "ConvToBinaryConv", 0); + +static std::vector binarize_weights(const std::vector& weights) { + std::vector out; + size_t bits_per_byte = 8; + + for (size_t i = 0; i < weights.size(); i += 8) { + uint8_t val = 0; + for (size_t j = 0; j < std::min(bits_per_byte, weights.size() - i); j++) { + if (weights[i + j] == 1.0f) + val |= 1 << j; + } + out.push_back(val); + } + return out; +} + +ngraph::pass::ConvToBinaryConv::ConvToBinaryConv() { + MATCHER_SCOPE(ConvToBinaryConv); + auto fq_pattern = ngraph::pattern::wrap_type( + {ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + ngraph::pattern::wrap_type(), + ngraph::pattern::wrap_type()}, + pattern::consumers_count(1)); + auto conv_pattern = ngraph::pattern::wrap_type({fq_pattern, ngraph::pattern::wrap_type()}); + + ngraph::matcher_pass_callback callback = [=](pattern::Matcher &m) { + auto conv = std::dynamic_pointer_cast(m.get_match_root()); + if (!conv) + return false; + auto fq = std::dynamic_pointer_cast(conv->input_value(0).get_node_shared_ptr()); + if (!fq || fq->get_levels() != 2) + return false; + + auto output_low_constant = std::dynamic_pointer_cast(fq->input_value(3).get_node_shared_ptr()); + if (!output_low_constant) + return false; + auto output_low = output_low_constant->cast_vector(); + bool output_low_is_zero = std::all_of(output_low.begin(), output_low.end(), [] (float f) -> bool { return f == 0.0f; }); + bool output_low_is_minus_one = std::all_of(output_low.begin(), output_low.end(), [] (float f) -> bool { return f == -1.0f; }); + auto output_high_constant = std::dynamic_pointer_cast(fq->input_value(4).get_node_shared_ptr()); + if (!output_high_constant) + return false; + auto output_high = output_high_constant->cast_vector(); + bool output_high_is_one = std::all_of(output_high.begin(), output_high.end(), [] (float f) -> bool { return f == 1.0f; }); + + if (!(output_high_is_one && (output_low_is_zero || output_low_is_minus_one))) + return false; + + auto weights_constant = std::dynamic_pointer_cast(conv->input_value(1).get_node_shared_ptr()); + if (!weights_constant) + return false; + + auto weights = weights_constant->cast_vector(); + if (!std::all_of(weights.begin(), weights.end(), [] (float f) -> bool { return f == -1.0f || f == 1.0f; })) + return false; + + auto bin_weights = binarize_weights(weights); + auto bin_weights_constant = std::make_shared(element::u1, weights_constant->get_shape(), bin_weights.data()); + + if (output_low_is_zero && output_high_is_one) { + auto new_conv = std::make_shared(conv->input_value(0), bin_weights_constant, + conv->get_strides(), + conv->get_pads_begin(), + conv->get_pads_end(), + conv->get_dilations(), + opset5::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT, + -1, + conv->get_auto_pad()); + new_conv->set_friendly_name(conv->get_friendly_name()); + std::vector axes; + std::vector weights_reduced_shape = {-1}; + for (size_t i = 1; i < weights_constant->get_shape().size(); i++) { + axes.push_back(i); + } + for (size_t i = 2; i < weights_constant->get_shape().size(); i++) { + weights_reduced_shape.push_back(1); + } + auto weights_reduced = std::make_shared( + op::Constant::create(element::f32, weights_constant->get_shape(), weights), + op::Constant::create(element::i64, Shape{axes.size()}, axes), false); + std::shared_ptr weights_reduced_reshaped = std::make_shared(weights_reduced, + op::Constant::create(element::i64, + Shape{weights_reduced_shape.size()}, + weights_reduced_shape), + false); + weights_reduced_reshaped = ngraph::get_constant_from_source(weights_reduced_reshaped); + auto add = std::make_shared(new_conv, weights_reduced_reshaped); + auto mul = std::make_shared(add, op::Constant::create(element::f32, Shape{}, {0.5})); + copy_runtime_info(conv, {new_conv, add, mul}); + replace_node(conv, mul); + + return true; + } + + auto new_conv = std::make_shared(conv->input_value(0), bin_weights_constant, + conv->get_strides(), + conv->get_pads_begin(), + conv->get_pads_end(), + conv->get_dilations(), + opset5::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT, + 0, + conv->get_auto_pad()); + new_conv->set_friendly_name(conv->get_friendly_name()); + copy_runtime_info(conv, new_conv); + replace_node(conv, new_conv); + + return true; + }; + + auto m = std::make_shared(conv_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/convert_quantize_dequantize.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/convert_quantize_dequantize.cpp index bdf73138793033..2f3e3882b6ee34 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/convert_quantize_dequantize.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/convert_quantize_dequantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/depth_to_space_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/depth_to_space_fusion.cpp index a210b485834a20..8ca7a9b42ca20d 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/depth_to_space_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/depth_to_space_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/dilated_convolution_converter.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/dilated_convolution_converter.cpp new file mode 100644 index 00000000000000..ed4a936755d324 --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/dilated_convolution_converter.cpp @@ -0,0 +1,92 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/dilated_convolution_converter.hpp" +#include "transformations/utils/utils.hpp" + +#include +#include + +#include +#include +#include +#include "itt.hpp" + + +NGRAPH_RTTI_DEFINITION(ngraph::pass::DilatedConvolutionConverter, "DilatedConvolutionConverter", 0); + +ngraph::pass::DilatedConvolutionConverter::DilatedConvolutionConverter() { + MATCHER_SCOPE(DilatedConvolutionConverter); + auto data_pattern = pattern::any_input(); + auto block_shape_pattern = pattern::wrap_type(); + auto pads_begin_pattern = pattern::wrap_type(); + auto pads_end_pattern = pattern::wrap_type(); + auto space_to_batch_pattern = pattern::wrap_type({data_pattern, block_shape_pattern, pads_begin_pattern, pads_end_pattern}); + auto conv_pattern = pattern::wrap_type({space_to_batch_pattern, pattern::any_input()}); + auto crops_begin_pattern = pattern::wrap_type(); + auto crops_end_pattern = pattern::wrap_type(); + auto batch_to_space_pattern = pattern::wrap_type({conv_pattern, pattern::any_input(), + crops_begin_pattern, crops_end_pattern}); + + matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto& pattern_map = m.get_pattern_value_map(); + auto block_shape = std::dynamic_pointer_cast(pattern_map.at(block_shape_pattern).get_node_shared_ptr()); + if (!block_shape) + return false; + auto pads_begin = std::dynamic_pointer_cast(pattern_map.at(pads_begin_pattern).get_node_shared_ptr()); + if (!pads_begin) + return false; + auto pads_end = std::dynamic_pointer_cast(pattern_map.at(pads_end_pattern).get_node_shared_ptr()); + if (!pads_end) + return false; + auto crops_begin = std::dynamic_pointer_cast(pattern_map.at(crops_begin_pattern).get_node_shared_ptr()); + if (!crops_begin) + return false; + auto crops_end = std::dynamic_pointer_cast(pattern_map.at(crops_end_pattern).get_node_shared_ptr()); + if (!crops_end) + return false; + auto conv = std::dynamic_pointer_cast(pattern_map.at(conv_pattern).get_node_shared_ptr()); + if (!conv) + return false; + + auto block_shape_val = block_shape->cast_vector(); + + auto dilations = conv->get_dilations(); + for (size_t i = 0; i < dilations.size(); i++) + dilations[i] = block_shape_val[i + 2]; + auto pads_begin_val = pads_begin->cast_vector(); + auto pads_end_val = pads_end->cast_vector(); + if (!(pads_begin_val[0] == 0 && + pads_begin_val[1] == 0 && + pads_end_val[0] == 0 && + pads_end_val[1] == 0)) + return false; + auto crops_begin_val = crops_begin->cast_vector(); + auto crops_end_val = crops_end->cast_vector(); + std::vector new_pads_begin; + for (size_t i = 2; i < pads_begin_val.size(); i++) + new_pads_begin.push_back(pads_begin_val[i] - crops_begin_val[i]); + std::vector new_pads_end; + for (size_t i = 2; i < pads_end_val.size(); i++) + new_pads_end.push_back(pads_end_val[i] - crops_end_val[i]); + auto new_conv = register_new_node(pattern_map.at(data_pattern), conv->input_value(1), + conv->get_strides(), new_pads_begin, new_pads_end, dilations, op::PadType::EXPLICIT); + + auto batch_to_space = pattern_map.at(batch_to_space_pattern).get_node_shared_ptr(); + new_conv->set_friendly_name(batch_to_space->get_friendly_name()); + + copy_runtime_info({ + pattern_map.at(space_to_batch_pattern).get_node_shared_ptr(), + pattern_map.at(conv_pattern).get_node_shared_ptr(), + batch_to_space, + }, + new_conv); + replace_node(batch_to_space, new_conv); + + return true; + }; + + auto m = std::make_shared(batch_to_space_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/eliminate_unsqueeze_gather.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/eliminate_unsqueeze_gather.cpp index 3f4e4a5bef60a4..f5b1062e2b2191 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/eliminate_unsqueeze_gather.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/eliminate_unsqueeze_gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/fq_mul_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/fq_mul_fusion.cpp index 36c69e97335864..ff023b56b50bdf 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/fq_mul_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/fq_mul_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,13 +67,12 @@ ngraph::pass::FakeQuantizeMulFusion::FakeQuantizeMulFusion() { const auto fq_output_low_p = ngraph::pattern::any_input(); const auto fq_output_high_p = ngraph::pattern::any_input(); - const auto fq_node_p = ngraph::pattern::wrap_type( - {ngraph::pattern::any_input(), - ngraph::pattern::any_input(), - ngraph::pattern::any_input(), - fq_output_low_p, - fq_output_high_p}, - pattern::consumers_count(1)); + const auto fq_node_p = ngraph::pattern::wrap_type({ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + fq_output_low_p, + fq_output_high_p}, + pattern::consumers_count(1)); const auto mul_constant_p = ngraph::pattern::wrap_type(); const auto mul_node_p = ngraph::pattern::wrap_type( @@ -84,9 +83,9 @@ ngraph::pass::FakeQuantizeMulFusion::FakeQuantizeMulFusion() { const auto fq_node = pattern_map.at(fq_node_p).get_node_shared_ptr(); - const auto original_output_low = pattern_map.at(fq_output_low_p); - const auto original_output_high = pattern_map.at(fq_output_high_p); - const auto mul_constant = pattern_map.at(mul_constant_p); + const auto & original_output_low = pattern_map.at(fq_output_low_p); + const auto & original_output_high = pattern_map.at(fq_output_high_p); + const auto & mul_constant = pattern_map.at(mul_constant_p); const auto new_output_limits = get_adjusted_output_range( original_output_low, original_output_high, mul_constant); @@ -98,6 +97,26 @@ ngraph::pass::FakeQuantizeMulFusion::FakeQuantizeMulFusion() { new_output_limits.second}); const auto mul_node = pattern_map.at(mul_node_p).get_node_shared_ptr(); + + // WA: this check is intended to prevent replacement when new FQ has shape + // which is different to Multiply output shape. Otherwise such replacement + // will lead to shape inconsistency in remaining graph. This check must be + // removed in future when FQ will have correct validate_and_infer function + // for cases with NUMPY broadcast. + auto fq_casted = std::dynamic_pointer_cast(new_fq_node); + if (!fq_casted) { + return false; + } + if (fq_casted->get_auto_broadcast() == op::AutoBroadcastType::NUMPY) { + if (fq_casted->get_output_partial_shape(0).is_dynamic() || + mul_node->get_output_partial_shape(0).is_dynamic()) { + return false; + } + if (fq_casted->get_shape() != mul_node->get_shape()) { + return false; + } + } + replace_node(mul_node, new_fq_node); new_fq_node->set_friendly_name(fq_node->get_friendly_name()); diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/fq_reshape_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/fq_reshape_fusion.cpp index 224b3c0d1add2a..19a2e765b41aa2 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/fq_reshape_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/fq_reshape_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/hsigmoid_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/hsigmoid_fusion.cpp index 28c11ef5cc78e3..d90ed977e3fb82 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/hsigmoid_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/hsigmoid_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/hswish_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/hswish_fusion.cpp index 4d17ca440ff387..0a95d0e76ce1dd 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/hswish_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/hswish_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/lin_op_sequence_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/lin_op_sequence_fusion.cpp index 8b2538bd906107..75cb0e396ebc67 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/lin_op_sequence_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/lin_op_sequence_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,22 +11,10 @@ #include #include #include +#include using namespace ngraph; -template -Output eltwise_fold(const Output & input0, const Output & input1) { - auto eltwise = std::make_shared(input0, input1); - OutputVector output(eltwise->get_output_size()); - if (!eltwise->constant_fold(output, {input0, input1})) { - throw ngraph_error("Can not constant fold eltwise node"); - } - if (output.size() != 1) { - throw ngraph_error("Eltwise constant fold has unexpected number of outputs: " + std::to_string(output.size())); - } - return output[0]; -} - NGRAPH_RTTI_DEFINITION(ngraph::pass::LinOpSequenceFusion, "LinOpSequenceFusion", 0); NGRAPH_RTTI_DEFINITION(ngraph::pass::AddMultiplyFusion, "AddMultiplyFusion", 0); @@ -64,7 +52,7 @@ ngraph::pass::AddMultiplyFusion::AddMultiplyFusion() { auto new_mul = register_new_node(input, mul_const); // Add two constants using opset3::Add constant folding and create new Add operation - auto new_add = std::make_shared(new_mul, eltwise_fold(add_const, mul_const)); + auto new_add = std::make_shared(new_mul, op::util::eltwise_fold(add_const, mul_const)); copy_runtime_info({add, mul}, {new_mul, new_add}); new_add->set_friendly_name(mul->get_friendly_name()); @@ -99,7 +87,7 @@ ngraph::pass::AddAddFusion::AddAddFusion() { // Replace Add->Add with single Add // Add operation will be added to the list of ops requested for pattern matching - auto new_add = register_new_node(input, eltwise_fold(add1_const, add2_const)); + auto new_add = register_new_node(input, op::util::eltwise_fold(add1_const, add2_const)); copy_runtime_info({add1, add2}, new_add); new_add->set_friendly_name(add2->get_friendly_name()); @@ -134,7 +122,7 @@ ngraph::pass::MultiplyMultiplyFusion::MultiplyMultiplyFusion() { // Replace Multiply->Multiply with single Multiply // Multiply operation will be added to the list of ops requested for pattern matching - auto new_mul = register_new_node(input, eltwise_fold(mul1_const, mul2_const)); + auto new_mul = register_new_node(input, op::util::eltwise_fold(mul1_const, mul2_const)); copy_runtime_info({mul1, mul2}, new_mul); new_mul->set_friendly_name(mul2->get_friendly_name()); diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/mish_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/mish_fusion.cpp index da1b8ab9243cc5..d69dfb803d6ea7 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/mish_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/mish_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/mul_fake_quantize_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/mul_fake_quantize_fusion.cpp new file mode 100644 index 00000000000000..1fcff0ac15cc4f --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/mul_fake_quantize_fusion.cpp @@ -0,0 +1,115 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/mul_fake_quantize_fusion.hpp" +#include "transformations/utils/utils.hpp" + +#include +#include + +#include +#include +#include +#include "itt.hpp" + + +NGRAPH_RTTI_DEFINITION(ngraph::pass::MulFakeQuantizeFusion, "MulFakeQuantizeFusion", 0); + +ngraph::pass::MulFakeQuantizeFusion::MulFakeQuantizeFusion() { + MATCHER_SCOPE(MulFakeQuantizeFusion); + auto input_pattern = ngraph::pattern::any_input(); + auto const_pattern = ngraph::pattern::wrap_type(); + auto mul_pattern = ngraph::pattern::wrap_type({input_pattern, const_pattern}, + pattern::consumers_count(1)); + auto fq_pattern = ngraph::pattern::wrap_type({mul_pattern, + ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + ngraph::pattern::any_input(), + ngraph::pattern::any_input()}); + ngraph::matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto& pattern_value_map = m.get_pattern_value_map(); + auto fq = std::dynamic_pointer_cast(pattern_value_map.at(fq_pattern).get_node_shared_ptr()); + if (!fq) + return false; + auto mul_const = std::dynamic_pointer_cast(pattern_value_map.at(const_pattern).get_node_shared_ptr()); + if (!mul_const) + return false; + + auto mul_const_value = mul_const->cast_vector(); + if (std::any_of(mul_const_value.begin(), mul_const_value.end(), [] (float f) -> bool { return f == 0.0f; })) + return false; + + auto const_shape = mul_const->get_shape(); + size_t const_shape_size = shape_size(const_shape); + if (const_shape_size > 1) { + // disallow constant shapes other than (N, 1, 1, ..., 1) or (1, C, 1, ..., 1) + if (!(const_shape[0] > 1 && const_shape[0] == const_shape_size) && + !(const_shape.size() > 1 && const_shape[1] == const_shape_size)) { + return false; + } + } + + std::shared_ptr mul_const_node = mul_const; + if (const_shape_size > 1 && + static_cast(const_shape.size()) < fq->get_input_partial_shape(0).rank().get_length()) { + // Reshape constants like (C, 1, 1) to (1, C, 1, 1) + const_shape.insert(const_shape.begin(), fq->get_input_partial_shape(0).rank().get_length() - const_shape.size(), 1); + mul_const_node = std::make_shared(mul_const_node, + op::Constant::create(element::u64, Shape{const_shape.size()}, const_shape), false); + } + + auto new_input_low = std::make_shared(fq->input_value(1), mul_const_node); + auto new_input_high = std::make_shared(fq->input_value(2), mul_const_node); + + auto mul = pattern_value_map.at(mul_pattern).get_node_shared_ptr(); + const auto& mul_data = pattern_value_map.at(input_pattern); + + std::shared_ptr new_fq; + if (std::all_of(mul_const_value.begin(), mul_const_value.end(), [] (float f) -> bool { return f < 0.0f; })) { + new_fq = register_new_node(mul_data, new_input_low, new_input_high, + fq->input_value(4), fq->input_value(3), fq->get_levels()); + copy_runtime_info({mul, fq}, {mul_const_node, new_input_low, new_input_high, new_fq}); + } else if (std::any_of(mul_const_value.begin(), mul_const_value.end(), [] (float f) -> bool { return f < 0.0f; })) { + const auto& output_low = fq->input_value(3); + const auto& output_high = fq->input_value(4); + // get the mask of the values from mul_const that are less than zero + std::vector less_than_zero; + less_than_zero.reserve(mul_const_value.size()); + // and greater or equal to zero + std::vector greater_eq_zero; + greater_eq_zero.reserve(mul_const_value.size()); + for (size_t i = 0; i < mul_const_value.size(); i++) { + less_than_zero.push_back(mul_const_value[i] < 0); + greater_eq_zero.push_back(mul_const_value[i] >= 0); + } + auto less_const = op::Constant::create(output_low.get_element_type(), const_shape, less_than_zero); + auto greater_eq_const = op::Constant::create(output_low.get_element_type(), const_shape, greater_eq_zero); + // new_output_low is defined as follows: + // output_low[i], when mul_const[i] >= 0 + // output_high[i], when mul_const[i] < 0 + auto new_output_low = std::make_shared( + std::make_shared(greater_eq_const, output_low), + std::make_shared(less_const, output_high)); + // new_output_high is defined as follows: + // output_high[i], when mul_const[i] >= 0 + // output_low[i], when mul_const[i] < 0 + auto new_output_high = std::make_shared( + std::make_shared(greater_eq_const, output_high), + std::make_shared(less_const, output_low)); + new_fq = register_new_node(mul_data, new_input_low, + new_input_high, new_output_low, new_output_high, fq->get_levels()); + } else { + new_fq = register_new_node(mul_data, new_input_low, new_input_high, + fq->input_value(3), fq->input_value(4), fq->get_levels()); + } + + copy_runtime_info({mul, fq}, {mul_const_node, new_input_low, new_input_high, new_fq}); + new_fq->set_friendly_name(fq->get_friendly_name()); + replace_node(fq, new_fq); + return true; + }; + + auto m = std::make_shared(fq_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/mvn_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/mvn_fusion.cpp new file mode 100644 index 00000000000000..9ef143a614e664 --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/mvn_fusion.cpp @@ -0,0 +1,190 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" +#include "transformations/common_optimizations/mvn_fusion.hpp" +#include "transformations/utils/utils.hpp" + +#include +#include + +#include +#include +#include +#include + +NGRAPH_RTTI_DEFINITION(ngraph::pass::MVNFusion, "MVNFusion", 0); + +template +std::function)> value_is_equal_to(const std::vector& ref_values) { + return [ref_values](ngraph::Output output) -> bool { + auto node = output.get_node_shared_ptr(); + if (auto const_node = std::dynamic_pointer_cast(node)) { + return const_node->template cast_vector() == ref_values; + } + return false; + }; +} + +ngraph::pass::MVNFusion::MVNFusion() { + MATCHER_SCOPE(MVNFusion); + // Detect MVN decomposition pattern: + // (x - ReduceMean(x, axes)) / (Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + eps) + auto x = pattern::any_input(); + + // (x - ReduceMean(x, axes)) + // `------mean1-------' + auto mean1_axes = pattern::wrap_type(); + auto mean1 = pattern::wrap_type({ x, mean1_axes }); + + // (x - ReduceMean(x, axes)) + // `-sub1------------------' + auto sub1 = pattern::wrap_type({ x, mean1 }); + + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + // `---mean2----------' + auto mean2_axes = pattern::wrap_type(); + auto mean2 = pattern::wrap_type({ x, mean2_axes }); + + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + // `-sub2------------------' + auto sub2 = pattern::wrap_type({ x, mean2 }); + + const auto reuseSub1OrNot = std::make_shared(OutputVector{ sub1, sub2 }); + + auto cast = pattern::wrap_type({ reuseSub1OrNot }); + const auto hasConvertOrNot = std::make_shared(OutputVector{ cast, reuseSub1OrNot }); + + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + // `---------------------power--' + auto const_2 = pattern::wrap_type(value_is_equal_to({ 2.0 })); + auto power = pattern::wrap_type({ hasConvertOrNot, const_2 }); + + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + // `---mean3--------------------------------' + auto mean3_axes = pattern::wrap_type(); + auto mean3 = pattern::wrap_type({ power, mean3_axes }); + + auto const_0_5 = pattern::wrap_type(value_is_equal_to({0.5})); + auto eps = pattern::wrap_type(); + // ------------------- OUTSIDE_SQRT ---------------------- + + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + // `--Power--------------------------------------' + auto power_sqrt_os = pattern::wrap_type({ mean3, const_0_5 }); + auto sqrt_os = pattern::wrap_type({ mean3 }); + const auto powerOrSqrt_os = std::make_shared(OutputVector{ power_sqrt_os, sqrt_os }); + + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + eps + // `----------------------------------------------Add---' + auto add_eps_os = pattern::wrap_type({ powerOrSqrt_os, eps }); + + // ------------------- INSIDE_SQRT ---------------------- + + // (Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2) + eps)) + // `-----------------------------------------------Add---' + auto add_eps_is = pattern::wrap_type({ mean3, eps }); + + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + // `--Power--------------------------------------' + auto power_sqrt_is = pattern::wrap_type({ add_eps_is, const_0_5 }); + auto sqrt_is = pattern::wrap_type({ add_eps_is }); + const auto powerOrSqrt_is = std::make_shared(OutputVector{ power_sqrt_is, sqrt_is }); + + auto outsideOrInside = std::make_shared(OutputVector{ add_eps_os, powerOrSqrt_is }); + + // Final Divide + auto const_neg_1 = pattern::wrap_type(value_is_equal_to({ -1 })); + auto power_div = pattern::wrap_type({ outsideOrInside, const_neg_1 }); + auto div = pattern::wrap_type({ sub1, power_div }); + + auto div_alt = pattern::wrap_type({ sub1, outsideOrInside }); + const auto powerMulOrDiv = std::make_shared(OutputVector{ div, div_alt }); + + ngraph::matcher_pass_callback matcher_pass_callback = [=](ngraph::pattern::Matcher& m) { + auto& pattern_to_output = m.get_pattern_value_map(); + auto exp_input = pattern_to_output.at(x); + + auto const_eps_node = std::dynamic_pointer_cast(pattern_to_output.at(eps).get_node_shared_ptr()); + float eps_value; + if (!op::util::get_single_value(const_eps_node, eps_value)) { + return false; + } + + auto axes_1_node = std::dynamic_pointer_cast(pattern_to_output.at(mean1_axes).get_node_shared_ptr()); + auto axes_3_node = std::dynamic_pointer_cast(pattern_to_output.at(mean3_axes).get_node_shared_ptr()); + + if (!axes_1_node || !axes_3_node) { + return false; + } + + auto axes_1_value = axes_1_node->cast_vector(); + auto axes_3_value = axes_3_node->cast_vector(); + + if (axes_1_value != axes_3_value) { + return false; + } + if (pattern_to_output.count(mean2_axes)) { + auto axes_2_node = std::dynamic_pointer_cast(pattern_to_output.at(mean2_axes).get_node_shared_ptr()); + if (!axes_2_node) { + return false; + } + auto axes_2_value = axes_2_node->cast_vector(); + if (axes_1_value != axes_2_value) { + return false; + } + } + + ngraph::NodeVector nodes_to_copy_info({ pattern_to_output.at(mean1).get_node_shared_ptr(), + pattern_to_output.at(sub1).get_node_shared_ptr(), + pattern_to_output.at(power).get_node_shared_ptr(), + pattern_to_output.at(mean3).get_node_shared_ptr() }); + + op::MVNEpsMode mode; + if (pattern_to_output.count(add_eps_os)) { + mode = op::MVNEpsMode::OUTSIDE_SQRT; + nodes_to_copy_info.push_back(pattern_to_output.at(add_eps_os).get_node_shared_ptr()); + if (pattern_to_output.count(power_sqrt_os)) { + nodes_to_copy_info.push_back(pattern_to_output.at(power_sqrt_os).get_node_shared_ptr()); + } else if (pattern_to_output.count(sqrt_os)) { + nodes_to_copy_info.push_back(pattern_to_output.at(sqrt_os).get_node_shared_ptr()); + } + } else if (pattern_to_output.count(powerOrSqrt_is)) { + mode = op::MVNEpsMode::INSIDE_SQRT; + nodes_to_copy_info.push_back(pattern_to_output.at(add_eps_is).get_node_shared_ptr()); + if (pattern_to_output.count(power_sqrt_is)) { + nodes_to_copy_info.push_back(pattern_to_output.at(power_sqrt_is).get_node_shared_ptr()); + } else if (pattern_to_output.count(sqrt_is)) { + nodes_to_copy_info.push_back(pattern_to_output.at(sqrt_is).get_node_shared_ptr()); + } + } else { + return false; + } + auto mvn = std::make_shared(exp_input, axes_1_node, true, eps_value, mode); + + if (pattern_to_output.count(mean2) && pattern_to_output.count(sub2)) { + nodes_to_copy_info.push_back(pattern_to_output.at(mean2).get_node_shared_ptr()); + nodes_to_copy_info.push_back(pattern_to_output.at(sub2).get_node_shared_ptr()); + } + + if (pattern_to_output.count(cast)) { + nodes_to_copy_info.push_back(pattern_to_output.at(cast).get_node_shared_ptr()); + } + + if (pattern_to_output.count(div_alt)) { + nodes_to_copy_info.push_back(pattern_to_output.at(div_alt).get_node_shared_ptr()); + } else if (pattern_to_output.count(power_div) && pattern_to_output.count(div)) { + nodes_to_copy_info.push_back(pattern_to_output.at(power_div).get_node_shared_ptr()); + nodes_to_copy_info.push_back(pattern_to_output.at(div).get_node_shared_ptr()); + } + + mvn->set_friendly_name(m.get_match_root()->get_friendly_name()); + ngraph::copy_runtime_info(nodes_to_copy_info, mvn); + ngraph::replace_node(m.get_match_root(), mvn); + return true; + }; + + auto m = std::make_shared(powerMulOrDiv, matcher_name); + register_matcher(m, matcher_pass_callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/nop_elimination.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/nop_elimination.cpp index 4fe494bfde5008..db1ea01fd3dcc4 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/nop_elimination.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/nop_elimination.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" #include diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/normalize_l2_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/normalize_l2_fusion.cpp index 2b2523cf6bc71f..905356b4d5fd7a 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/normalize_l2_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/normalize_l2_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/optimize_strided_slice.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/optimize_strided_slice.cpp index 55521f4f5861e5..f2ec035b60479a 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/optimize_strided_slice.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/optimize_strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -178,6 +178,13 @@ bool ngraph::pass::GroupedStridedSliceOptimizer::run_on_function(std::shared_ptr valid_for_replacement = false; if (ss_plan.second.strides[i] != 1) valid_for_replacement = false; + + for (auto& target_input : ss_plan.first->output(0).get_target_inputs()) { + if (is_type(target_input.get_node())) { + valid_for_replacement = false; + break; + } + } output_to_partition.push_back({ss_plan.first->output(0), ss_plan.second.begins[i], ss_plan.second.ends[i]}); } if (!valid_for_replacement) break; diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/pad_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/pad_fusion.cpp index 056ab21ffe6057..c8e53e74c1fdb8 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/pad_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/pad_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/pull_transpose_through_fq.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/pull_transpose_through_fq.cpp index d879518d5476d2..618b633260e04d 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/pull_transpose_through_fq.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/pull_transpose_through_fq.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/relu_fake_quantize_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/relu_fake_quantize_fusion.cpp index 7d07306618f8fb..1afda8abb6e0e3 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/relu_fake_quantize_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/relu_fake_quantize_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -41,12 +41,12 @@ ngraph::pass::ReluFakeQuantizeFusion::ReluFakeQuantizeFusion() { if (!fq) return false; - auto new_fq = std::make_shared(data, - fq->input_value(1), - fq->input_value(2), - fq->input_value(3), - fq->input_value(4), - fq->get_levels()); + auto new_fq = register_new_node(data, + fq->input_value(1), + fq->input_value(2), + fq->input_value(3), + fq->input_value(4), + fq->get_levels()); new_fq->set_friendly_name(fq->get_friendly_name()); copy_runtime_info({relu.get_node_shared_ptr(), fq}, new_fq); diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/remove_filtering_boxes_by_size.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/remove_filtering_boxes_by_size.cpp index 5c59ddd9d1c4bb..8772858d2653cd 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/remove_filtering_boxes_by_size.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/remove_filtering_boxes_by_size.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/softmax_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/softmax_fusion.cpp new file mode 100644 index 00000000000000..25a1a2272d1478 --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/softmax_fusion.cpp @@ -0,0 +1,75 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/softmax_fusion.hpp" +#include "transformations/utils/utils.hpp" + +#include +#include + +#include +#include +#include +#include "itt.hpp" + + +NGRAPH_RTTI_DEFINITION(ngraph::pass::SoftmaxFusion, "SoftmaxFusion", 0); + +ngraph::pass::SoftmaxFusion::SoftmaxFusion() { + MATCHER_SCOPE(SoftmaxFusion); + auto data_pattern = ngraph::pattern::any_input(pattern::has_static_rank()); + auto reduce_max_axes_pattern = ngraph::pattern::wrap_type(); + auto reduce_max_pattern = ngraph::pattern::wrap_type({data_pattern, reduce_max_axes_pattern}); + auto sub_pattern = ngraph::pattern::wrap_type({data_pattern, reduce_max_pattern}); + auto exp_pattern = ngraph::pattern::wrap_type({sub_pattern}); + auto reduce_sum_axes_pattern = ngraph::pattern::wrap_type(); + auto reduce_sum_pattern = ngraph::pattern::wrap_type({exp_pattern, reduce_sum_axes_pattern}); + auto div_pattern = ngraph::pattern::wrap_type({exp_pattern, reduce_sum_pattern}); + + ngraph::matcher_pass_callback callback = [=](pattern::Matcher& m) { + if (transformation_callback(m.get_match_root())) + return false; + + const auto& pattern_map = m.get_pattern_value_map(); + + auto reduce_max_axes = std::dynamic_pointer_cast(pattern_map.at(reduce_max_axes_pattern).get_node_shared_ptr()); + if (!reduce_max_axes || shape_size(reduce_max_axes->get_shape()) != 1) + return false; + auto reduce_sum_axes = std::dynamic_pointer_cast(pattern_map.at(reduce_sum_axes_pattern).get_node_shared_ptr()); + if (!reduce_sum_axes || shape_size(reduce_sum_axes->get_shape()) != 1) + return false; + + int64_t reduce_max_axis = reduce_max_axes->cast_vector()[0]; + int64_t reduce_sum_axis = reduce_sum_axes->cast_vector()[0]; + if (reduce_max_axis < 0 || reduce_sum_axis < 0) { + const auto& pshape = pattern_map.at(data_pattern).get_partial_shape(); + auto rank = pshape.rank().get_length(); + if (reduce_max_axis < 0) + reduce_max_axis += rank; + if (reduce_sum_axis < 0) + reduce_sum_axis += rank; + } + if (reduce_max_axis != reduce_sum_axis) + return false; + + auto softmax = register_new_node(pattern_map.at(data_pattern), reduce_sum_axis); + auto div = pattern_map.at(div_pattern).get_node_shared_ptr(); + softmax->set_friendly_name(div->get_friendly_name()); + + copy_runtime_info({ + pattern_map.at(reduce_max_pattern).get_node_shared_ptr(), + pattern_map.at(sub_pattern).get_node_shared_ptr(), + pattern_map.at(exp_pattern).get_node_shared_ptr(), + pattern_map.at(reduce_sum_pattern).get_node_shared_ptr(), + div, + }, + softmax); + replace_node(div, softmax); + + return true; + }; + + auto m = std::make_shared(div_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_fusion.cpp index 6c3d3d0bde64a1..0c768800eea4d1 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_to_mish_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_to_mish_fusion.cpp index 438f047de7be09..7006dcfeecec10 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_to_mish_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/softplus_to_mish_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/space_to_batch_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/space_to_batch_fusion.cpp new file mode 100644 index 00000000000000..a9943f76e91535 --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/space_to_batch_fusion.cpp @@ -0,0 +1,103 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/common_optimizations/space_to_batch_fusion.hpp" +#include "transformations/utils/utils.hpp" + +#include +#include + +#include +#include +#include +#include +#include "itt.hpp" + + +NGRAPH_RTTI_DEFINITION(ngraph::pass::SpaceToBatchFusion, "SpaceToBatchFusion", 0); + +ngraph::pass::SpaceToBatchFusion::SpaceToBatchFusion() { + MATCHER_SCOPE(SpaceToBatchFusion); + auto data_pattern = pattern::any_input(); + auto reshape_before_pattern = pattern::wrap_type({data_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto trans_before_pattern = pattern::wrap_type({data_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto reshape_or_transpose_before_pattern = std::make_shared(OutputVector{reshape_before_pattern, trans_before_pattern}); + auto pads_begin_pattern = pattern::wrap_type(); + auto pads_end_pattern = pattern::wrap_type(); + auto pad_value = pattern::wrap_type(); + auto pad_pattern = pattern::wrap_type({reshape_or_transpose_before_pattern, pads_begin_pattern, pads_end_pattern, pad_value}); + auto space_to_depth_pattern = pattern::wrap_type({pad_pattern}, pattern::has_static_shape()); + auto reshape_after_pattern = pattern::wrap_type({space_to_depth_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto trans_after_pattern = pattern::wrap_type({space_to_depth_pattern, pattern::wrap_type()}, pattern::rank_equals(4)); + auto reshape_or_transpose_after_pattern = std::make_shared(OutputVector{reshape_after_pattern, trans_after_pattern}); + + matcher_pass_callback callback = [=](pattern::Matcher& m) { + const auto& pattern_map = m.get_pattern_value_map(); + + auto get_reshape_or_transpose = [&pattern_map] (const std::shared_ptr& reshape_pattern, + const std::shared_ptr& trans_pattern) -> std::shared_ptr { + if (pattern_map.count(reshape_pattern)) + return pattern_map.at(reshape_pattern).get_node_shared_ptr(); + if (pattern_map.count(trans_pattern)) + return pattern_map.at(trans_pattern).get_node_shared_ptr(); + return nullptr; + }; + auto check_input_output_shape = [] (const std::shared_ptr& node) -> bool { + const auto& input_shape = node->get_input_shape(0); + const auto& output_shape = node->get_output_shape(0); + // Transpose permutation has to be [1, 0, 2, 3] + return input_shape[0] == output_shape[1] && + input_shape[1] == output_shape[0] && + input_shape[2] == output_shape[2] && + input_shape[3] == output_shape[3]; + }; + + std::shared_ptr reshape_or_trans_before = get_reshape_or_transpose(reshape_before_pattern, trans_before_pattern); + if (!reshape_or_trans_before) + return false; + std::shared_ptr reshape_or_trans_after = get_reshape_or_transpose(reshape_after_pattern, trans_after_pattern); + if (!reshape_or_trans_after) + return false; + if (!check_input_output_shape(reshape_or_trans_before)) + return false; + if (!check_input_output_shape(reshape_or_trans_after)) + return false; + + auto pad = std::dynamic_pointer_cast(pattern_map.at(pad_pattern).get_node_shared_ptr()); + if (!pad || pad->get_pad_mode() != op::PadMode::CONSTANT) + return false; + auto pad_value_const = std::dynamic_pointer_cast(pattern_map.at(pad_value).get_node_shared_ptr()); + if (!pad_value_const) + return false; + auto pad_value = pad_value_const->cast_vector(); + if (pad_value.size() != 1 || pad_value[0] != 0.0f) + return false; + + auto space_to_depth = std::dynamic_pointer_cast(pattern_map.at(space_to_depth_pattern).get_node_shared_ptr()); + if (!space_to_depth) + return false; + if (space_to_depth->get_mode() != opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST) + return false; + auto block_size = static_cast(space_to_depth->get_block_size()); + auto block_shape = op::Constant::create(element::i64, Shape{4}, + std::vector{1, 1, block_size, block_size}); + auto space_to_batch = register_new_node(pattern_map.at(data_pattern), block_shape, + pattern_map.at(pads_begin_pattern), pattern_map.at(pads_end_pattern)); + space_to_batch->set_friendly_name(reshape_or_trans_after->get_friendly_name()); + + copy_runtime_info({ + reshape_or_trans_before, + pad, + space_to_depth, + reshape_or_trans_after, + }, + space_to_batch); + replace_node(reshape_or_trans_after, space_to_batch); + + return true; + }; + + auto m = std::make_shared(reshape_or_transpose_after_pattern, matcher_name); + this->register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/swish_fusion.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/swish_fusion.cpp index eaed5b6e81e0ec..bf6c12584aaa71 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/swish_fusion.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/swish_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/common_optimizations/weights_dequantize_to_fake_quantize.cpp b/inference-engine/src/transformations/src/transformations/common_optimizations/weights_dequantize_to_fake_quantize.cpp index ae4f6aa5f086a5..6b1872a05660ba 100644 --- a/inference-engine/src/transformations/src/transformations/common_optimizations/weights_dequantize_to_fake_quantize.cpp +++ b/inference-engine/src/transformations/src/transformations/common_optimizations/weights_dequantize_to_fake_quantize.cpp @@ -1,13 +1,13 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include "transformations/common_optimizations/weights_dequantize_to_fake_quantize.hpp" - #include #include #include #include +#include +#include #include "itt.hpp" NGRAPH_RTTI_DEFINITION(ngraph::pass::WeightsDequantizeToFakeQuantize, "WeightsDequantizeToFakeQuantize", 0); @@ -15,7 +15,7 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::WeightsDequantizeToFakeQuantize, "WeightsDe ngraph::pass::WeightsDequantizeToFakeQuantize::WeightsDequantizeToFakeQuantize() { MATCHER_SCOPE(WeightsDequantizeToFakeQuantize); - const auto weights = ngraph::pattern::wrap_type(); + const auto weights = ngraph::pattern::wrap_type(pattern::type_matches(element::i8)); const auto convert = ngraph::pattern::wrap_type({weights}); const auto sub_c = ngraph::pattern::wrap_type(); const auto sub = ngraph::pattern::wrap_type({convert, sub_c}); @@ -27,7 +27,7 @@ ngraph::pass::WeightsDequantizeToFakeQuantize::WeightsDequantizeToFakeQuantize() ngraph::matcher_pass_callback callback; callback = [=](ngraph::pattern::Matcher &m) { - auto pattern_map = m.get_pattern_map(); + const auto &pattern_map = m.get_pattern_map(); const auto &weights_node = as_type_ptr(pattern_map.at(weights)); const auto &convert_node = pattern_map.at(convert); @@ -45,23 +45,21 @@ ngraph::pass::WeightsDequantizeToFakeQuantize::WeightsDequantizeToFakeQuantize() const auto &input_low = opset6::Constant::create(convert_node->get_element_type(), {}, {in_low}); const auto &input_high = opset6::Constant::create(convert_node->get_element_type(), {}, {in_high}); - auto &zero_point = pattern_map.at(sub_c); - if (!zero_point) - zero_point = opset6::Constant::create(convert_node->get_element_type(), {}, {0}); + auto &zero_point = pattern_map.count(sub_c) ? pattern_map.at(sub_c) : opset6::Constant::create(convert_node->get_element_type(), {}, {0}); - const auto &output_low = std::make_shared( - std::make_shared(input_low, zero_point), scale_node); - const auto &output_high = std::make_shared( - std::make_shared(input_high, zero_point), scale_node); + const auto &output_low = op::util::eltwise_fold( + op::util::eltwise_fold(input_low, zero_point), scale_node); + const auto &output_high = op::util::eltwise_fold( + op::util::eltwise_fold(input_high, zero_point), scale_node); auto fq = std::make_shared( convert_node, input_low, input_high, output_low, output_high, levels); NodeVector nodes_to_copy_RT_info_from{multiply_node, scale_node, zero_point}; - if (pattern_map.at(sub)) + if (pattern_map.count(sub)) nodes_to_copy_RT_info_from.push_back(sub); - ngraph::copy_runtime_info(fq, nodes_to_copy_RT_info_from); + ngraph::copy_runtime_info(nodes_to_copy_RT_info_from, fq); multiply_node->output(0).replace(fq->output(0)); if (convert_node->get_rt_info().count("DISABLED_CONSTANT_FOLDING")) @@ -69,6 +67,6 @@ ngraph::pass::WeightsDequantizeToFakeQuantize::WeightsDequantizeToFakeQuantize() return true; }; - auto m = std::make_shared(mul, "WeightsDequantizeToFakeQuantize"); + auto m = std::make_shared(mul, matcher_name); register_matcher(m, callback); } diff --git a/inference-engine/src/transformations/src/transformations/control_flow/unroll_tensor_iterator.cpp b/inference-engine/src/transformations/src/transformations/control_flow/unroll_tensor_iterator.cpp index c2db73ea2ceef6..88714278b63707 100644 --- a/inference-engine/src/transformations/src/transformations/control_flow/unroll_tensor_iterator.cpp +++ b/inference-engine/src/transformations/src/transformations/control_flow/unroll_tensor_iterator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include @@ -19,13 +19,13 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::UnrollTensorIterator, "UnrollTensorIterator bool ngraph::pass::UnrollTensorIterator::run_on_function(std::shared_ptr f) { RUN_ON_FUNCTION_SCOPE(UnrollTensorIterator); for (const auto& op : f->get_ops()) { - auto ti = std::dynamic_pointer_cast(op); - if (!ti || transformation_callback(ti)) { + auto sub_graph_op = std::dynamic_pointer_cast(op); + if (!sub_graph_op || transformation_callback(sub_graph_op)) { continue; } - const auto& function = ti->get_body(); - const auto num_iter = ti->get_num_iterations(); + const auto &function = sub_graph_op->get_function(); + int64_t num_iter = sub_graph_op->get_num_iterations(); // negative value means inconsistent TI if (num_iter <= -1) { @@ -38,24 +38,26 @@ bool ngraph::pass::UnrollTensorIterator::run_on_function(std::shared_ptrget_ops()) { - node->set_friendly_name(ti->get_friendly_name() + "/" + std::to_string(idx + 1) + "/" + node->get_friendly_name()); - copy_runtime_info(ti, node); + node->set_friendly_name(sub_graph_op->get_friendly_name() + "/" + std::to_string(idx + 1) + "/" + + node->get_friendly_name()); + copy_runtime_info(sub_graph_op, node); } } // Port map : inputs and back edges - for (const auto& desc : ti->get_input_descriptions()) { - if (const auto& input_desc = std::dynamic_pointer_cast(desc)) { + for (const auto &desc : sub_graph_op->get_input_descriptions()) { + if (const auto &input_desc = std::dynamic_pointer_cast( + desc)) { // Connect the sliced input (layer before the input) to the Split layer and connect // the corresponding Split output to the corresponding copy of the body. // If the number of iterations is 1, then the Split is not needed. - auto in_data = ti->input_values()[input_desc->m_input_index]; - const auto const_axis = opset4::Constant::create(element::i64, Shape{}, {input_desc->m_axis}); + auto in_data = sub_graph_op->input_values()[input_desc->m_input_index]; + const auto const_axis = opset6::Constant::create(element::i64, Shape{}, {input_desc->m_axis}); if (num_iter > 1) { - auto split = std::make_shared(in_data, const_axis, num_iter); - copy_runtime_info(ti, split); + auto split = std::make_shared(in_data, const_axis, num_iter); + copy_runtime_info(sub_graph_op, split); auto stride = input_desc->m_stride; // connect to the body for (int64_t j = 0; j < num_iter; j++) { @@ -72,9 +74,10 @@ bool ngraph::pass::UnrollTensorIterator::run_on_function(std::shared_ptr(desc)) { + } else if (const auto &merged_desc = std::dynamic_pointer_cast( + desc)) { // Connect the input to the corresponding copy of the body. - auto in_data = ti->input_values()[merged_desc->m_input_index]; + auto in_data = sub_graph_op->input_values()[merged_desc->m_input_index]; const auto& param = body_functions[0]->get_parameters()[merged_desc->m_body_parameter_index]; for (auto &output : param->outputs()) { output.replace(in_data); @@ -88,9 +91,10 @@ bool ngraph::pass::UnrollTensorIterator::run_on_function(std::shared_ptrget_input_source_output(0)); } } - } else if (const auto& invariant_desc = std::dynamic_pointer_cast(desc)) { + } else if (const auto &invariant_desc = std::dynamic_pointer_cast( + desc)) { // Connect the input to the corresponding copy of the body. - auto in_data = ti->input_values()[invariant_desc->m_input_index]; + auto in_data = sub_graph_op->input_values()[invariant_desc->m_input_index]; for (int64_t j = 0; j < num_iter; j++) { auto param = body_functions[j]->get_parameters()[invariant_desc->m_body_parameter_index]; for (auto &output : param->outputs()) { @@ -104,8 +108,9 @@ bool ngraph::pass::UnrollTensorIterator::run_on_function(std::shared_ptrget_output_descriptions()) { - if (const auto& concat_desc = std::dynamic_pointer_cast(desc)) { + for (const auto &desc : sub_graph_op->get_output_descriptions()) { + if (const auto &concat_desc = std::dynamic_pointer_cast( + desc)) { if (!concat_desc) { return false; } @@ -121,46 +126,50 @@ bool ngraph::pass::UnrollTensorIterator::run_on_function(std::shared_ptr 0 ? j : num_iter - j - 1; - std::shared_ptr result = body_functions[idx]->get_results()[concat_desc->m_body_value_index]; + std::shared_ptr result = body_functions[idx]->get_results()[concat_desc->m_body_value_index]; auto input_to_res = result->get_input_source_output(0); to_concat[j] = input_to_res; } - auto concat = std::make_shared(to_concat, concat_desc->m_axis); - copy_runtime_info(ti, concat); + auto concat = std::make_shared(to_concat, concat_desc->m_axis); + copy_runtime_info(sub_graph_op, concat); // set output name to Tensor to store it for ngraph to cnn conversion NGRAPH_SUPPRESS_DEPRECATED_START concat->output(0).get_tensor().set_name( - op::util::create_ie_output_name(ti->output(concat_desc->m_output_index))); + op::util::create_ie_output_name(sub_graph_op->output(concat_desc->m_output_index))); NGRAPH_SUPPRESS_DEPRECATED_END // connect the Concat layer to the corresponding TI outputs - for (auto &input : ti->output(concat_desc->m_output_index).get_target_inputs()) { + for (auto &input : sub_graph_op->output(concat_desc->m_output_index).get_target_inputs()) { input.replace_source_output(concat); } } else { // Connect outputs of the bodies to the corresponding TI outputs - std::shared_ptr result = body_functions[0]->get_results().at(concat_desc->m_body_value_index); + std::shared_ptr result = body_functions[0]->get_results().at( + concat_desc->m_body_value_index); const auto& input_to_res = result->get_input_source_output(0); // set output name to Tensor to store it for ngraph to cnn conversion NGRAPH_SUPPRESS_DEPRECATED_START - input_to_res.get_tensor().set_name(op::util::create_ie_output_name(ti->output(concat_desc->m_output_index))); + input_to_res.get_tensor().set_name( + op::util::create_ie_output_name(sub_graph_op->output(concat_desc->m_output_index))); NGRAPH_SUPPRESS_DEPRECATED_END - for (auto &input : ti->output(concat_desc->m_output_index).get_target_inputs()) { + for (auto &input : sub_graph_op->output(concat_desc->m_output_index).get_target_inputs()) { input.replace_source_output(input_to_res); } } - } else if (const auto& output_desc = std::dynamic_pointer_cast(desc)) { + } else if (const auto &output_desc = std::dynamic_pointer_cast( + desc)) { // Connect outputs of the bodies to the corresponding TI outputs auto iter = output_desc->m_iteration; iter = iter >= 0? iter: num_iter - 1; - std::shared_ptr result = body_functions[iter]->get_results()[output_desc->m_body_value_index]; + std::shared_ptr result = body_functions[iter]->get_results()[output_desc->m_body_value_index]; const auto& in_value = result->input_value(0); // set output name to Tensor to store it for ngraph to cnn conversion NGRAPH_SUPPRESS_DEPRECATED_START - in_value.get_tensor().set_name(op::util::create_ie_output_name(ti->output(output_desc->m_output_index))); + in_value.get_tensor().set_name( + op::util::create_ie_output_name(sub_graph_op->output(output_desc->m_output_index))); NGRAPH_SUPPRESS_DEPRECATED_END - for (const auto &input : ti->output(output_desc->m_output_index).get_target_inputs()) { + for (const auto &input : sub_graph_op->output(output_desc->m_output_index).get_target_inputs()) { input.replace_source_output(result->get_input_source_output(0)); } } else { @@ -172,6 +181,33 @@ bool ngraph::pass::UnrollTensorIterator::run_on_function(std::shared_ptradd_sinks(body_func->get_sinks()); } + + // the current iteration Parameter in Loop body can be disconnected + // we are replacing it with a Constant (value = current iteration idx) + const auto &loop = std::dynamic_pointer_cast(sub_graph_op); + if (loop) { + // 1. Check CurrentIteration Parameter is not connected to outer network + bool need_to_remove_iteration_param = false; + const auto cur_iter_idx = loop->get_special_body_ports().current_iteration_input_idx; + if (cur_iter_idx >= 0) { + const auto &in_descs = loop->get_input_descriptions(); + need_to_remove_iteration_param = std::all_of(in_descs.begin(), in_descs.end(), + [cur_iter_idx](const std::shared_ptr &in_desc) { + return in_desc->m_body_parameter_index != static_cast(cur_iter_idx); + }); + } + + // 2. Replace CurrentIteration Parameter with a Constant for each copy of the body + if (need_to_remove_iteration_param) { + for (int64_t idx = 0; idx < num_iter; ++idx) { + const auto iter_idx = loop->get_special_body_ports().current_iteration_input_idx; + const auto ¶m_to_delete = body_functions[idx]->get_parameters()[iter_idx]; + auto cur_iter_const = std::make_shared(ngraph::element::i64, Shape{}, idx); + replace_node(param_to_delete, cur_iter_const); + body_functions[idx]->remove_parameter(param_to_delete); + } + } + } } return true; } diff --git a/inference-engine/src/transformations/src/transformations/convert_precision.cpp b/inference-engine/src/transformations/src/transformations/convert_precision.cpp index 460ffcd028779d..339adccbdd991b 100644 --- a/inference-engine/src/transformations/src/transformations/convert_precision.cpp +++ b/inference-engine/src/transformations/src/transformations/convert_precision.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -18,22 +19,23 @@ using namespace ngraph; -bool fuse_type_to_constant(std::shared_ptr & node, ngraph::element::Type to, const std::vector> & consumers); -bool fuse_type_to_shapeof(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_shapeof_v0(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_parameter(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_convert(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_nms3(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_nms4(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_nms5(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_topk(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_nonzero(std::shared_ptr & node, ngraph::element::Type to, size_t idx); -bool fuse_type_to_bucketize(std::shared_ptr & node, ngraph::element::Type to, size_t idx); - -bool extend_select_type(std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_constant(const std::shared_ptr & node, ngraph::element::Type to, const std::vector> & consumers); +bool fuse_type_to_shapeof(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_shapeof_v0(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_parameter(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_convert(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_nms3(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_nms4(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_nms5(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_topk(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_nonzero(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_bucketize(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); +bool fuse_type_to_ctc_greedy_decoder_seq_len(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); + +bool extend_select_type(const std::shared_ptr & node, ngraph::element::Type to, size_t idx); template -bool fuse_type_to_binary_comparision(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_binary_comparision(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto type_relaxed = std::dynamic_pointer_cast(node)) { type_relaxed->set_overridden_output_type(to); return true; @@ -46,7 +48,7 @@ bool fuse_type_to_binary_comparision(std::shared_ptr & node, ngrap } template -bool fuse_type_to_logical(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_logical(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto type_relaxed = std::dynamic_pointer_cast(node)) { type_relaxed->set_overridden_output_type(to); type_relaxed->set_origin_input_type(element::boolean, 0); @@ -62,7 +64,7 @@ bool fuse_type_to_logical(std::shared_ptr & node, ngraph::element: } template -bool fuse_type_to_reduce_logical(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_reduce_logical(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto type_relaxed = std::dynamic_pointer_cast(node)) { type_relaxed->set_overridden_output_type(to); type_relaxed->set_origin_input_type(element::boolean, 0); @@ -80,13 +82,14 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::ConvertPrecision, "ConvertPrecision", 0); bool ngraph::pass::ConvertPrecision::run_on_function(std::shared_ptr f) { RUN_ON_FUNCTION_SCOPE(ConvertPrecision); - static std::map&, element::Type, size_t idx)>> type_to_fuse { + type_to_fuse_map type_to_fuse { {opset4::Parameter::type_info, fuse_type_to_parameter}, {opset4::Convert::type_info, fuse_type_to_convert}, {opset4::ShapeOf::type_info, fuse_type_to_shapeof}, {opset3::NonMaxSuppression::type_info, fuse_type_to_nms3}, {opset4::NonMaxSuppression::type_info, fuse_type_to_nms4}, {opset5::NonMaxSuppression::type_info, fuse_type_to_nms5}, + {opset6::CTCGreedyDecoderSeqLen::type_info, fuse_type_to_ctc_greedy_decoder_seq_len}, {opset4::TopK::type_info, fuse_type_to_topk}, {opset4::NonZero::type_info, fuse_type_to_nonzero}, {opset4::Bucketize::type_info, fuse_type_to_bucketize}, @@ -105,14 +108,16 @@ bool ngraph::pass::ConvertPrecision::run_on_function(std::shared_ptr&, element::Type, size_t idx)>> type_to_extend { + type_to_fuse.insert(m_additional_type_to_fuse_map.begin(), m_additional_type_to_fuse_map.end()); + + static type_to_fuse_map type_to_extend { {opset4::Select::type_info, extend_select_type}, }; // As Constant operations can be shared between multiple nGraph Functions so before // changing precision we need to understand which Constant consumers belongs // to the current nGraph Function - std::map, std::vector>> const_to_internal_output; + std::map, std::vector>> const_to_internal_output; std::function &)> register_constants = [&const_to_internal_output, ®ister_constants](const std::shared_ptr & f) { @@ -125,7 +130,7 @@ bool ngraph::pass::ConvertPrecision::run_on_function(std::shared_ptr & node) { + auto convert_node_output_precision = [this, &const_to_internal_output, &type_to_fuse](const std::shared_ptr & node) { for (auto output : node->outputs()) { if (output.get_element_type() == m_from) { // Handle case with Constants as they can have consumers from other nGraph Function object @@ -144,7 +149,7 @@ bool ngraph::pass::ConvertPrecision::run_on_function(std::shared_ptr & node) { + auto convert_node_input_precision = [this](const std::shared_ptr & node) { for (auto input : node->inputs()) { if (input.get_element_type() == m_from) { // For some operations we need to extend their input types to support new type @@ -199,7 +204,7 @@ bool ngraph::pass::ConvertPrecision::run_on_function(std::shared_ptr & node, element::Type to, size_t idx) { +bool fuse_type_to_shapeof(const std::shared_ptr & node, element::Type to, size_t idx) { if (auto shapeof = as_type_ptr(node)) { if (to == element::i32 || to == element::i64) { shapeof->set_output_type(to); @@ -209,7 +214,7 @@ bool fuse_type_to_shapeof(std::shared_ptr & node, element::Type to, size_t return false; } -bool fuse_type_to_parameter(std::shared_ptr & node, element::Type to, size_t idx) { +bool fuse_type_to_parameter(const std::shared_ptr & node, element::Type to, size_t idx) { if (auto param = as_type_ptr(node)) { param->set_element_type(to); param->validate_and_infer_types(); @@ -218,7 +223,7 @@ bool fuse_type_to_parameter(std::shared_ptr & node, element::Type to, size return false; } -bool fuse_type_to_convert(std::shared_ptr & node, element::Type to, size_t idx) { +bool fuse_type_to_convert(const std::shared_ptr & node, element::Type to, size_t idx) { if (auto convert = as_type_ptr(node)) { convert->set_convert_element_type(to); return true; @@ -226,7 +231,7 @@ bool fuse_type_to_convert(std::shared_ptr & node, element::Type to, size_t return false; } -bool fuse_type_to_nms3(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_nms3(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto nms = as_type_ptr(node)) { nms->set_output_type(to); return true; @@ -234,7 +239,7 @@ bool fuse_type_to_nms3(std::shared_ptr & node, ngraph::element::Ty return false; } -bool fuse_type_to_nms4(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_nms4(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto nms = as_type_ptr(node)) { nms->set_output_type(to); return true; @@ -242,7 +247,7 @@ bool fuse_type_to_nms4(std::shared_ptr & node, ngraph::element::Ty return false; } -bool fuse_type_to_nms5(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_nms5(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto nms = as_type_ptr(node)) { nms->set_output_type(to); return true; @@ -250,7 +255,7 @@ bool fuse_type_to_nms5(std::shared_ptr & node, ngraph::element::Ty return false; } -bool fuse_type_to_topk(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_topk(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto topk = as_type_ptr(node)) { if (idx == 1 && (to == element::i32 || to == element::i64)) { topk->set_index_element_type(to); @@ -260,7 +265,21 @@ bool fuse_type_to_topk(std::shared_ptr & node, ngraph::element::Ty return false; } -bool fuse_type_to_nonzero(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_ctc_greedy_decoder_seq_len(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { + if (auto ctc_decoder = as_type_ptr(node)) { + if (idx == 0 && (to == element::i32 || to == element::i64)) { + ctc_decoder->set_classes_index_type(to); + return true; + } + if (idx == 1 && (to == element::i32 || to == element::i64)) { + ctc_decoder->set_sequence_length_type(to); + return true; + } + } + return false; +} + +bool fuse_type_to_nonzero(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto nonzero = as_type_ptr(node)) { if (to == element::i32 || to == element::i64) { nonzero->set_output_type(to); @@ -270,7 +289,7 @@ bool fuse_type_to_nonzero(std::shared_ptr & node, ngraph::element: return false; } -bool fuse_type_to_bucketize(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_bucketize(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto b = as_type_ptr(node)) { if (to == element::i32 || to == element::i64) { b->set_output_type(to); @@ -280,7 +299,7 @@ bool fuse_type_to_bucketize(std::shared_ptr & node, ngraph::elemen return false; } -bool fuse_type_to_shapeof_v0(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool fuse_type_to_shapeof_v0(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto type_relaxed = std::dynamic_pointer_cast(node)) { type_relaxed->set_overridden_output_type(to); return true; @@ -293,7 +312,7 @@ bool fuse_type_to_shapeof_v0(std::shared_ptr & node, ngraph::eleme return false; } -bool extend_select_type(std::shared_ptr & node, ngraph::element::Type to, size_t idx) { +bool extend_select_type(const std::shared_ptr & node, ngraph::element::Type to, size_t idx) { if (auto type_relaxed = std::dynamic_pointer_cast(node)) { type_relaxed->set_origin_input_type(element::boolean, 0); return true; @@ -336,48 +355,193 @@ inline int32_t convert_value(uint32_t val) { } namespace { - template - std::shared_ptr change_constant_precision(std::shared_ptr& constant) { - using src_type = typename element_type_traits::value_type; - using dst_type = typename element_type_traits::value_type; +template +std::shared_ptr change_constant_precision(std::shared_ptr& constant) { + using src_type = typename element_type_traits::value_type; + using dst_type = typename element_type_traits::value_type; - const auto * src_data = constant->get_data_ptr(); - const auto size = shape_size(constant->get_shape()); + const auto * src_data = constant->get_data_ptr(); + const auto size = shape_size(constant->get_shape()); - auto new_constant = std::make_shared(PREC_TO, constant->get_shape()); - auto * dst_data = const_cast(reinterpret_cast(new_constant->get_data_ptr())); - if (dst_data == nullptr) - throw ngraph_error("Can't get destination data pointer"); + auto new_constant = std::make_shared(PREC_TO, constant->get_shape()); + auto * dst_data = const_cast(reinterpret_cast(new_constant->get_data_ptr())); + if (dst_data == nullptr) + throw ngraph_error("Can't get destination data pointer"); - for (size_t i = 0; i < size; ++i) { - dst_data[i] = convert_value(src_data[i]); - } - return new_constant; + for (size_t i = 0; i < size; ++i) { + dst_data[i] = convert_value(src_data[i]); } + return new_constant; +} - template <> - std::shared_ptr change_constant_precision(std::shared_ptr& constant) { - using src_type = typename element_type_traits::value_type; - using dst_type = typename element_type_traits::value_type; +template <> +std::shared_ptr change_constant_precision(std::shared_ptr& constant) { + using src_type = typename element_type_traits::value_type; + using dst_type = typename element_type_traits::value_type; + + const auto * src_data = constant->get_data_ptr(); + const auto size = shape_size(constant->get_shape()); - const auto * src_data = constant->get_data_ptr(); - const auto size = shape_size(constant->get_shape()); + auto new_constant = std::make_shared(element::Type_t::f32, constant->get_shape()); + auto * dst_data = const_cast(reinterpret_cast(new_constant->get_data_ptr())); + if (dst_data == nullptr) + throw ngraph_error("Can't get destination data pointer"); - auto new_constant = std::make_shared(element::Type_t::f32, constant->get_shape()); - auto * dst_data = const_cast(reinterpret_cast(new_constant->get_data_ptr())); - if (dst_data == nullptr) - throw ngraph_error("Can't get destination data pointer"); + ngraph::runtime::reference::convert(src_data, dst_data, size); - ngraph::runtime::reference::convert(src_data, dst_data, size); + return new_constant; +} - return new_constant; +struct EnumClassHash { + template + std::size_t operator()(T t) const { + return static_cast(t); + } +}; + +/** + * @brief Method converts low precision integer types + * The method uses the next logic for conversion: + * * For unsigned types we just copy all bits to destination type (which is bigger): + * int4 [1011] -> int8 [00001011] + * * For signed types we copy all bits (except sign bit) to destination type and after + * that for negative values we set to 1 all higher bits: + * int4 [1011] -> int8 [11111011] + * + * @param src source value !!! the type must be unsigned !!! + * @param dst destination value !!! the type must be unsigned !!! + * @param src_offset source offset (for custom data types) + * @param src_size source size (for custom data types) + * @param dst_offset destination offset + * @param dst_size destination size + * @param is_signed the type of source data + */ +template +void convert_lp_value(const SRC& src, DST& dst, size_t src_offset, size_t src_size, size_t dst_offset, size_t dst_size, bool is_signed) { + constexpr SRC src_max = std::numeric_limits::max(); + constexpr DST dst_max = std::numeric_limits::max(); + // Make a shift for the source value + // src [11101000] offset 2, size 4 + // val [00011101] + SRC val = src >> src_offset; + // dst [10001111 00000100] offset 5 size 9 + // new_val [00000000 00000000] + DST new_val = 0; + + // Calculate diff in order to clean bits which don't exist in the source value + // diff 4 + size_t diff = sizeof(SRC)*8 - src_size; + // Clean unnecessary bits + // val [11010000] + val = val << diff; + // val [00001101] + val = val >> diff; + + // Get the sign of value + // sign [00000001] + SRC sign = (val >> (src_size - 1)) & 0b1; + + // If source type is signed and negative + if (is_signed && sign) { + // val [11111101] + val |= src_max << diff; + // new_val [00000001 11111111] + new_val = dst_max >> (sizeof(DST) * 8 - dst_size); + // new_val [00000001 11111101] + new_val &= (dst_max << sizeof(SRC)*8) | val; + } else { + // new_val [00000000 00001101] + new_val = val; } + + // Make a mask in order to save other values if DST contains several values + // mask [11000000 00011111] + DST mask = 0; + if (dst_offset + dst_size < sizeof(DST) * 8) + mask = (dst_max << (dst_offset + dst_size)); + if (dst_offset != 0) + mask |= (dst_max >> (sizeof(DST) * 8 - dst_offset)); + + // Add mask to our converted value + // signed: new_val [11100000 10111111] + // unsigned: new_val [11000001 10111111] + new_val = mask | (new_val << dst_offset); + + // Add our value to destination + // dst: [10111111 11100100] + dst |= ~mask; + // signed: dst [10100000 10100100] + // unsigned: dst [10000001 10100100] + dst &= new_val; +} + +std::shared_ptr convert_low_precisions_int(std::shared_ptr& constant, element::Type to) { + // Supported integer precisions + static const std::unordered_set supported_integer_precisions = { + element::i4, + element::u4, + element::u1 + }; + // Get source element type and source data + auto src_type = constant->get_element_type(); + const auto* src_data = reinterpret_cast(constant->get_data_ptr()); + + // We support conversion only if several elements can be represented in one instance of some C++ common data type without any exception, + // destination data type should be bigger than source and destination data type should be real + if (!supported_integer_precisions.count(src_type) || (src_type.size() * 8) % src_type.bitwidth() || + (to.size() * 8) % to.bitwidth() || to.is_real() || to.bitwidth() < src_type.bitwidth()) + throw ngraph_error("Convert low precision for " + constant->get_element_type().get_type_name() + " to " + + to.get_type_name() + " is not implemented!"); + + // Create a new constant operation and get destination data + auto new_constant = std::make_shared(to, constant->get_shape()); + auto* dst_data = const_cast(reinterpret_cast(new_constant->get_data_ptr())); + // Check pointers + if (src_data == nullptr || dst_data == nullptr) + throw ngraph_error("Can't get data pointer"); + + // Convert values + const auto size = shape_size(constant->get_shape()); + for (size_t i = 0; i < size; i++) { + // Calculate indexes + size_t dst_idx = i / ((to.size() * 8) / to.bitwidth()); + size_t src_idx = i / ((src_type.size() * 8) / src_type.bitwidth()); + // Calculate offsets inside the indexes + size_t dst_off = (to.size() * 8 - to.bitwidth()) - to.bitwidth() * (i % ((to.size() * 8) / to.bitwidth())); + size_t src_off = (src_type.size() * 8 - src_type.bitwidth()) - src_type.bitwidth() * (i % ((src_type.size() * 8) / src_type.bitwidth())); + // Source type at the current moment always less than 1 byte + // Select the right destination type + switch (to.size()) { + case 1: + convert_lp_value(src_data[src_idx], dst_data[dst_idx], src_off, src_type.bitwidth(), + dst_off, to.bitwidth(), src_type.is_signed()); + break; + case 2: + convert_lp_value(src_data[src_idx], reinterpret_cast(dst_data)[dst_idx], src_off, src_type.bitwidth(), + dst_off, to.bitwidth(), src_type.is_signed()); + break; + case 4: + convert_lp_value(src_data[src_idx], reinterpret_cast(dst_data)[dst_idx], src_off, src_type.bitwidth(), + dst_off, to.bitwidth(), src_type.is_signed()); + break; + case 8: + convert_lp_value(src_data[src_idx], reinterpret_cast(dst_data)[dst_idx], src_off, src_type.bitwidth(), + dst_off, to.bitwidth(), src_type.is_signed()); + break; + default: + throw ngraph_error("Unsupported element size!"); + } + } + + return new_constant; +} + } // namespace -bool fuse_type_to_constant(std::shared_ptr & node, element::Type to, const std::vector> & consumers) { +bool fuse_type_to_constant(const std::shared_ptr & node, element::Type to, const std::vector> & consumers) { if (auto constant = as_type_ptr(node)) { auto from = constant->get_element_type(); - std::shared_ptr new_const; + std::shared_ptr new_const; if (from == element::u64 && to == element::i32) { new_const = change_constant_precision(constant); } else if (from == element::i64 && to == element::i32) { @@ -390,14 +554,18 @@ bool fuse_type_to_constant(std::shared_ptr & node, element::Type to, const new_const = change_constant_precision(constant); } else if (from == element::u32 && to == element::i32) { new_const = change_constant_precision(constant); + } else if (from == element::f64 && to == element::f32) { + new_const = change_constant_precision(constant); } else if (from == element::f16 && to == element::f32) { new_const = change_constant_precision(constant); } else if (from == element::boolean && to == element::u8) { new_const = change_constant_precision(constant); } else if (from == element::boolean && to == element::i32) { new_const = change_constant_precision(constant); + } else if (from == element::i4 || from == element::u4 || from == element::u1) { + new_const = convert_low_precisions_int(constant, to); } else { - throw ngraph_error("not supported"); + throw ngraph_error("Precision conversion from " + from.get_type_name() + " to " + to.get_type_name() + " is not supported"); } for (auto & output : consumers) { output.replace_source_output(new_const); diff --git a/inference-engine/src/transformations/src/transformations/init_node_info.cpp b/inference-engine/src/transformations/src/transformations/init_node_info.cpp index 826cf52d0c51d9..347dba35b04da3 100644 --- a/inference-engine/src/transformations/src/transformations/init_node_info.cpp +++ b/inference-engine/src/transformations/src/transformations/init_node_info.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/low_precision_transformations/src/disable_convert_constant_folding_on_const_path.cpp b/inference-engine/src/transformations/src/transformations/low_precision/disable_convert_constant_folding_on_const_path.cpp similarity index 85% rename from inference-engine/src/low_precision_transformations/src/disable_convert_constant_folding_on_const_path.cpp rename to inference-engine/src/transformations/src/transformations/low_precision/disable_convert_constant_folding_on_const_path.cpp index aecd2dfdd939e2..d5c30e73e4f8e9 100644 --- a/inference-engine/src/low_precision_transformations/src/disable_convert_constant_folding_on_const_path.cpp +++ b/inference-engine/src/transformations/src/transformations/low_precision/disable_convert_constant_folding_on_const_path.cpp @@ -1,8 +1,8 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include "low_precision/disable_convert_constant_folding_on_const_path.hpp" +#include "transformations/low_precision/disable_convert_constant_folding_on_const_path.hpp" #include #include @@ -26,7 +26,7 @@ ngraph::pass::DisableConvertConstantFoldingOnConstPath::DisableConvertConstantFo ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher & m) -> bool { const auto& opsMap = m.get_pattern_value_map(); - const auto convert = opsMap.find(matcherConvert)->second.get_node()->shared_from_this(); + const auto convert = opsMap.at(matcherConvert).get_node_shared_ptr(); // validation by Convert operation input precisions if (!inputPrecisions.empty()) { @@ -47,7 +47,11 @@ ngraph::pass::DisableConvertConstantFoldingOnConstPath::DisableConvertConstantFo // Multiply // auto parent = convert->get_input_node_ptr(0); - auto child = convert->output(0).get_target_inputs().begin()->get_node(); + auto target_inputs = convert->output(0).get_target_inputs(); + if (target_inputs.empty()) { + return false; + } + auto child = target_inputs.begin()->get_node(); if (is_type(parent) && (is_type(child) || is_type(child))) { auto& rtInfo = convert->get_rt_info(); diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/batch_norm_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/batch_norm_decomposition.cpp index a7efe7960b948b..233397fe2d5204 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/batch_norm_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/batch_norm_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/bidirectional_sequences_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/bidirectional_sequences_decomposition.cpp index 5f5e5e2b33e9b1..527236de109f7e 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/bidirectional_sequences_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/bidirectional_sequences_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,9 +21,9 @@ ngraph::pass::BidirectionalLSTMSequenceDecomposition::BidirectionalLSTMSequenceD MATCHER_SCOPE(BidirectionalLSTMSequenceDecomposition); auto lstm_sequence_ngraph = ngraph::pattern::wrap_type(); - ngraph::matcher_pass_callback callback = [](pattern::Matcher &m) { + ngraph::matcher_pass_callback callback = [this](pattern::Matcher &m) { auto lstm_sequence = std::dynamic_pointer_cast(m.get_match_root()); - if (!lstm_sequence) { + if (!lstm_sequence || transformation_callback(lstm_sequence)) { return false; } @@ -90,9 +90,9 @@ ngraph::pass::BidirectionalGRUSequenceDecomposition::BidirectionalGRUSequenceDec MATCHER_SCOPE(BidirectionalGRUSequenceDecomposition); auto gru_sequence_ngraph = ngraph::pattern::wrap_type(); - ngraph::matcher_pass_callback callback = [](pattern::Matcher &m) { + ngraph::matcher_pass_callback callback = [this](pattern::Matcher &m) { auto gru_sequence = std::dynamic_pointer_cast(m.get_match_root()); - if (!gru_sequence) { + if (!gru_sequence || transformation_callback(gru_sequence)) { return false; } @@ -155,9 +155,9 @@ ngraph::pass::BidirectionalRNNSequenceDecomposition::BidirectionalRNNSequenceDec MATCHER_SCOPE(BidirectionalRNNSequenceDecomposition); auto rnn_sequence_ngraph = ngraph::pattern::wrap_type(); - ngraph::matcher_pass_callback callback = [](pattern::Matcher &m) { + ngraph::matcher_pass_callback callback = [this](pattern::Matcher &m) { auto rnn_sequence = std::dynamic_pointer_cast(m.get_match_root()); - if (!rnn_sequence) { + if (!rnn_sequence || transformation_callback(rnn_sequence)) { return false; } diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_batch_to_space.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_batch_to_space.cpp index 4e349e19a993fc..214e1359188e2b 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_batch_to_space.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_batch_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast3.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast3.cpp index 81007ac2a545db..51073ed6237d5d 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast3.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast3.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast_to_tiles.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast_to_tiles.cpp index e9a382bbd275d2..608be41eed0335 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast_to_tiles.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_broadcast_to_tiles.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_convolutions.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_convolutions.cpp index be4763cc11cc28..5b7965762a59c5 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_convolutions.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_convolutions.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_depth_to_space.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_depth_to_space.cpp index b0c7e424aa8d3b..f041f5e79921c3 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_depth_to_space.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_divide.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_divide.cpp index d40a992d4a913c..04b15352148795 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_divide.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_divide.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_gather_0d.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_gather_0d.cpp index d240f506d24e35..78b8f7d4366c4c 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_gather_0d.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_gather_0d.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_gelu.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_gelu.cpp index a3c683d1537a9d..8edffca01378c3 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_gelu.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_gelu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,7 +6,6 @@ #include #include #include -#include #include #include diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_interpolate1_to_interpolate4.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_interpolate1_to_interpolate4.cpp index 044014f8c20bff..80d4e804b92e32 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_interpolate1_to_interpolate4.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_interpolate1_to_interpolate4.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,6 +36,7 @@ ngraph::pass::ConvertInterpolate1ToInterpolate4::ConvertInterpolate1ToInterpolat i++; } + auto input_shape_rank = inp_partial_shape.rank().get_length(); auto scalesConstant = ngraph::op::Constant::create(ngraph::element::f32, {scales.size()}, scales); auto axisConstant = ngraph::op::Constant::create(ngraph::element::i64, {attrsV0.axes.size()}, std::vector{attrsV0.axes.begin(), attrsV0.axes.end()}); @@ -45,7 +46,20 @@ ngraph::pass::ConvertInterpolate1ToInterpolate4::ConvertInterpolate1ToInterpolat if (attrsV0.mode == "nearest") { attrsV4.mode = ngraph::opset4::Interpolate::InterpolateMode::nearest; } else if (attrsV0.mode == "linear") { - attrsV4.mode = ngraph::opset4::Interpolate::InterpolateMode::linear; + // If we write only + // attrsV4.mode = ngraph::op::v4::Interpolate::InterpolateMode::linear; + // instead of a conditional statements below when attrsV0.mode == "linear", + // then we have a performance drop, because CPU and GPU have no optimized + // version of the 'linear' mode. + // TODO: delete this conditional statement, when CPU and GPU will have + // optimized version of the 'linear' mode. + if (input_shape_rank < 5) { + attrsV4.mode = ngraph::op::v4::Interpolate::InterpolateMode::linear_onnx; + } else if (input_shape_rank == 5) { + attrsV4.mode = ngraph::op::v4::Interpolate::InterpolateMode::linear; + } else { + return false; + } } else if (attrsV0.mode == "cubic") { attrsV4.mode = ngraph::opset4::Interpolate::InterpolateMode::cubic; } else if (attrsV0.mode == "linear_onnx") { diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_minimum_to_power_and_max.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_minimum_to_power_and_max.cpp index 8ebc442968aeb6..5ce3564e756c92 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_minimum_to_power_and_max.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_minimum_to_power_and_max.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_mod.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_mod.cpp index ef6327c9cd9aa5..1a1103e3cbcb5c 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_mod.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_mod.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_mvn1_to_mvn6.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_mvn1_to_mvn6.cpp index 3093f807533f5f..3ad2a161add785 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_mvn1_to_mvn6.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_mvn1_to_mvn6.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_negative.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_negative.cpp index c3c4c3861c059c..28b42f3bafcadc 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_negative.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_negative.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_nms_to_nms_ie_internal.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_nms_to_nms_ie_internal.cpp index 426d2f9fb7c410..3460985788e796 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_nms_to_nms_ie_internal.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_nms_to_nms_ie_internal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_pad_to_group_conv.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_pad_to_group_conv.cpp index 89a67845964095..6a90ddef586819 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_pad_to_group_conv.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_pad_to_group_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_previous_nms_to_nms_5.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_previous_nms_to_nms_5.cpp index ee92fa6fe51a01..205d24f4cce982 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_previous_nms_to_nms_5.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_previous_nms_to_nms_5.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_reduce_to_pooling.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_reduce_to_pooling.cpp index d25f156edeaecf..1c3f59923e8c39 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_reduce_to_pooling.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_reduce_to_pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_scatter_elements_to_scatter.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_scatter_elements_to_scatter.cpp index 43426f7437cba4..58b89e2eca2ebc 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_scatter_elements_to_scatter.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_scatter_elements_to_scatter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_sequences_to_tensor_iterator.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_sequences_to_tensor_iterator.cpp index 4319bfa2fa6875..f4d2cca0c53d41 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_sequences_to_tensor_iterator.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_sequences_to_tensor_iterator.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "itt.hpp" #include "ngraph/builder/autobroadcast.hpp" #include "transformations/op_conversions/convert_sequences_to_tensor_iterator.hpp" @@ -70,18 +71,6 @@ namespace { } return squeezed_nodes; } - - bool should_enable_mask(const ngraph::Output &seq_lengths, int64_t max_seq_len) { - // disable the mask if all values of seq_lengths input are equal to max_seq_len (X_shape[1]) - if (const auto &seq_len_const = std::dynamic_pointer_cast( - seq_lengths.get_node_shared_ptr())) { - const auto &seq_len_values = seq_len_const->cast_vector(); - return std::any_of(seq_len_values.begin(), seq_len_values.end(), [max_seq_len](const int64_t val) { - return val != max_seq_len; - }); - } - return true; - } } // namespace ngraph::pass::ConvertRNNSequenceToTensorIterator::ConvertRNNSequenceToTensorIterator() { @@ -93,12 +82,12 @@ ngraph::pass::ConvertRNNSequenceToTensorIterator::ConvertRNNSequenceToTensorIter pattern::any_input(), pattern::any_input(), pattern::any_input()}); - ngraph::matcher_pass_callback callback = [](ngraph::pattern::Matcher &m) { + ngraph::matcher_pass_callback callback = [this](ngraph::pattern::Matcher &m) { auto sequence = std::dynamic_pointer_cast(m.get_match_root()); // Bidirectional Sequence op should be decomposed to Reverse + Forward // (e.g. apply BidirectionalRNNSequenceDecomposition transformation before this one) - if (!sequence || sequence->get_direction() == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL) { + if (!sequence || sequence->get_direction() == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL || transformation_callback(sequence)) { return false; } @@ -113,7 +102,7 @@ ngraph::pass::ConvertRNNSequenceToTensorIterator::ConvertRNNSequenceToTensorIter auto tensor_iterator = std::make_shared(); auto max_seq_len = X.get_shape().at(1); - bool enable_mask = should_enable_mask(seq_lengths, max_seq_len); + bool enable_mask = ngraph::op::util::is_seq_len_provided(seq_lengths.get_node_shared_ptr(), max_seq_len); std::shared_ptr reverse_seq_before; if (is_reverse && enable_mask) { @@ -252,12 +241,12 @@ ngraph::pass::ConvertGRUSequenceToTensorIterator::ConvertGRUSequenceToTensorIter pattern::any_input(), pattern::any_input(), pattern::any_input()}); - ngraph::matcher_pass_callback callback = [](ngraph::pattern::Matcher &m) { + ngraph::matcher_pass_callback callback = [this](ngraph::pattern::Matcher &m) { auto sequence = std::dynamic_pointer_cast(m.get_match_root()); // Bidirectional Sequence op should be decomposed to Reverse + Forward // (e.g. apply BidirectionalRNNSequenceDecomposition transformation before this one) - if (!sequence || sequence->get_direction() == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL) { + if (!sequence || sequence->get_direction() == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL || transformation_callback(sequence)) { return false; } @@ -272,7 +261,7 @@ ngraph::pass::ConvertGRUSequenceToTensorIterator::ConvertGRUSequenceToTensorIter auto tensor_iterator = std::make_shared(); auto max_seq_len = X.get_shape().at(1); - bool enable_mask = should_enable_mask(seq_lengths, max_seq_len); + bool enable_mask = ngraph::op::util::is_seq_len_provided(seq_lengths.get_node_shared_ptr(), max_seq_len); std::shared_ptr reverse_seq_before; if (is_reverse && enable_mask) { @@ -412,12 +401,12 @@ ngraph::pass::ConvertLSTMSequenceToTensorIterator::ConvertLSTMSequenceToTensorIt pattern::any_input(), pattern::any_input(), pattern::any_input()}); - ngraph::matcher_pass_callback callback = [](ngraph::pattern::Matcher &m) { + ngraph::matcher_pass_callback callback = [this](ngraph::pattern::Matcher &m) { auto sequence = std::dynamic_pointer_cast(m.get_match_root()); // Bidirectional Sequence op should be decomposed to Reverse + Forward // (e.g. apply BidirectionalRNNSequenceDecomposition transformation before this one) - if (!sequence || sequence->get_direction() == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL) { + if (!sequence || sequence->get_direction() == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL || transformation_callback(sequence)) { return false; } @@ -433,7 +422,7 @@ ngraph::pass::ConvertLSTMSequenceToTensorIterator::ConvertLSTMSequenceToTensorIt auto tensor_iterator = std::make_shared(); auto max_seq_len = X.get_shape().at(1); - bool enable_mask = should_enable_mask(seq_lengths, max_seq_len); + bool enable_mask = ngraph::op::util::is_seq_len_provided(seq_lengths.get_node_shared_ptr(), max_seq_len); std::shared_ptr reverse_seq_before; if (is_reverse && enable_mask) { diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_shapeof3.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_shapeof3.cpp index 3857f367cb19ee..2a6a83a6861690 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_shapeof3.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_shapeof3.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_shuffle_channels3.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_shuffle_channels3.cpp index ec80a640a5dae1..f7ad89cc80af98 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_shuffle_channels3.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_shuffle_channels3.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_batch.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_batch.cpp index 5efd958c62bd84..250d4e1674b379 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_batch.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_depth.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_depth.cpp index ec8f098e0fce10..c2647b492a1395 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_depth.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_space_to_depth.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_ti_to_sequences.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_ti_to_sequences.cpp index 2a9c72b59cb990..40ae55c0f90133 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_ti_to_sequences.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_ti_to_sequences.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/convert_topk3.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/convert_topk3.cpp index 29978378c94da6..97d9031bd99f67 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/convert_topk3.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/convert_topk3.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/fq_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/fq_decomposition.cpp index ab4e91e1b324f7..3203c82ead6084 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/fq_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/fq_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/gelu7_downgrade.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/gelu7_downgrade.cpp new file mode 100644 index 00000000000000..0b7ca7998cf37c --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/op_conversions/gelu7_downgrade.cpp @@ -0,0 +1,38 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/op_conversions/gelu7_downgrade.hpp" + +#include + +#include +#include +#include +#include +#include "itt.hpp" + +NGRAPH_RTTI_DEFINITION(ngraph::pass::Gelu7Downgrade, "Gelu7Downgrade", 0); + +ngraph::pass::Gelu7Downgrade::Gelu7Downgrade() { + MATCHER_SCOPE(Gelu7Downgrade); + auto gelu = ngraph::pattern::wrap_type(); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher& m) { + auto& pattern_to_output = m.get_pattern_value_map(); + auto gelu_node = std::dynamic_pointer_cast(pattern_to_output.at(gelu).get_node_shared_ptr()); + + if (gelu_node == nullptr || transformation_callback(gelu_node)) { + return false; + } + + auto new_gelu_node = std::make_shared(gelu_node->input_value(0)); + new_gelu_node->set_friendly_name(gelu_node->get_friendly_name()); + ngraph::copy_runtime_info(gelu_node, new_gelu_node); + ngraph::replace_node(gelu_node, new_gelu_node); + return true; + }; + + auto m = std::make_shared(gelu, matcher_name); + register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/gru_cell_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/gru_cell_decomposition.cpp index b31a7e63186392..f9b136f05c83d6 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/gru_cell_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/gru_cell_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/hsigmoid_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/hsigmoid_decomposition.cpp index caf764a6d6ebad..f2f10ff77bcca1 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/hsigmoid_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/hsigmoid_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/hswish_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/hswish_decomposition.cpp index 5ff41f85249842..93edc2ca00c5e8 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/hswish_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/hswish_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/log_softmax_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/log_softmax_decomposition.cpp index 83f97393be41c4..1a62fec3207881 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/log_softmax_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/log_softmax_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/lstm_cell_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/lstm_cell_decomposition.cpp index 28e7d2c429d333..ed01763b9ac9f2 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/lstm_cell_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/lstm_cell_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/mvn6_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/mvn6_decomposition.cpp index 2876dca7d4ae1f..fd8ee2004f9fd6 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/mvn6_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/mvn6_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,6 +31,7 @@ ngraph::pass::MVN6Decomposition::MVN6Decomposition() { const auto data = mvn_node->input_value(0); const auto axes = mvn_node->input_value(1); + // (x - ReduceMean(x, axes)) auto mean = std::make_shared(data, axes, true); auto mean_normalization = std::make_shared(data, mean); @@ -39,8 +40,11 @@ ngraph::pass::MVN6Decomposition::MVN6Decomposition() { ngraph::copy_runtime_info(mvn_node, { mean, mean_normalization }); ngraph::replace_node(mvn_node, mean_normalization); } else { - auto mul = std::make_shared(mean_normalization, mean_normalization); - auto mean2 = std::make_shared(mul, axes, true); + // (x - ReduceMean(x, axes)) ^ 2 + auto sqr_const = ngraph::opset6::Constant::create(data.get_element_type(), ngraph::Shape{ 1 }, { 2 }); + auto sqr = std::make_shared(mean_normalization, sqr_const); + // ReduceMean((x - ReduceMean(x, axes)) ^ 2) + auto mean2 = std::make_shared(sqr, axes, true); auto eps = mvn_node->get_eps(); auto eps_node = ngraph::opset6::Constant::create(data.get_element_type(), ngraph::Shape{ 1 }, { eps }); @@ -51,19 +55,23 @@ ngraph::pass::MVN6Decomposition::MVN6Decomposition() { std::shared_ptr div; if (eps_mode == op::MVNEpsMode::INSIDE_SQRT) { + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2) + eps) eps_add = std::make_shared(mean2, eps_node); sqrt = std::make_shared(eps_add); + // (x - ReduceMean(x, axes)) / Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2) + eps) div = std::make_shared(mean_normalization, sqrt); } else if (eps_mode == op::MVNEpsMode::OUTSIDE_SQRT) { + // Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + eps sqrt = std::make_shared(mean2); eps_add = std::make_shared(sqrt, eps_node); + // (x - ReduceMean(x, axes)) / (Sqrt(ReduceMean((x - ReduceMean(x, axes)) ^ 2)) + eps) div = std::make_shared(mean_normalization, eps_add); } else { return false; } div->set_friendly_name(mvn_node->get_friendly_name()); - ngraph::copy_runtime_info(mvn_node, { mean, mean_normalization, mul, mean2, eps_node, eps_add, sqrt, div }); + ngraph::copy_runtime_info(mvn_node, { mean, mean_normalization, sqr, mean2, eps_node, eps_add, sqrt, div }); ngraph::replace_node(mvn_node, div); } return true; diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l1_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l1_decomposition.cpp index 78e3ac1849bb2f..b29eaff62fe539 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l1_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l1_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l2_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l2_decomposition.cpp index 3f8671554a94f6..1cff5593365c1f 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l2_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/reduce_l2_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/rnn_cell_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/rnn_cell_decomposition.cpp index b502abfd8549eb..03c98e90422235 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/rnn_cell_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/rnn_cell_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.cpp new file mode 100644 index 00000000000000..b4391d3a13b603 --- /dev/null +++ b/inference-engine/src/transformations/src/transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.cpp @@ -0,0 +1,128 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "itt.hpp" + +#include "transformations/op_conversions/simplify_ctc_greedy_decoder_seq_len.hpp" + +#include +#include + +#include + +NGRAPH_RTTI_DEFINITION(ngraph::pass::SimplifyCTCGreedyDecoderSeqLen, "SimplifyCTCGreedyDecoder", 0); + +ngraph::pass::SimplifyCTCGreedyDecoderSeqLen::SimplifyCTCGreedyDecoderSeqLen() { + MATCHER_SCOPE(SimplifyCTCGreedyDecoderSeqLen); + auto decoder = pattern::wrap_type(); + + ngraph::matcher_pass_callback callback = [=](ngraph::pattern::Matcher& m) { + auto decoder_seq_len = std::dynamic_pointer_cast (m.get_match_root()); + if (!decoder_seq_len) { + return false; + } + + if (decoder_seq_len->get_input_size() > 2) { + const auto data_pshape = decoder_seq_len->get_input_partial_shape(0); + auto blank_index = std::dynamic_pointer_cast(decoder_seq_len->input_value(2).get_node_shared_ptr()); + if (!blank_index || data_pshape.rank().is_dynamic() || data_pshape[2].is_dynamic()) { + return false; + } + + const std::vector &blank_index_values = blank_index->cast_vector(); + const auto num_classes = decoder_seq_len->get_input_partial_shape(0)[2].get_length(); + if (blank_index_values[0] != (num_classes - 1)) { + return false; + } + } + + element::Type data_type = decoder_seq_len->input_value(0).get_element_type(); + element::Type seq_len_type = decoder_seq_len->input_value(1).get_element_type(); + // Transposing input data channels from [N, T, C] to [T, N, C]. Need for compatible with CTCGreedyDecoder v1 + auto transpose = std::make_shared(decoder_seq_len->input_value(0), + ngraph::opset6::Constant::create(element::i32, + Shape({3}), {1, 0, 2})); + // Receive time and batch dimensions and concatenate to [T, N] tensor shapes + auto data_shape = std::make_shared(decoder_seq_len->input_value(0)); + auto axisT = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {1}); + auto T = std::make_shared(data_shape, indexT, axisT); + + auto axisN = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexN = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto N = std::make_shared(data_shape, indexN, axisN); + + auto start = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto step = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto plus1 = opset6::Constant::create(element::i64, Shape{1}, {1}); + auto plusT = std::make_shared(T, plus1); + auto const_plusT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto plusT_scalar = std::make_shared(plusT, const_plusT); + auto range1T = std::make_shared(start, plusT_scalar, step, seq_len_type); + + auto mask_shape = std::make_shared( + OutputVector{T->output(0), N->output(0)}, 0); + + // Generate 2D tensor [T, N] for seq mask + auto upper_bounds = std::make_shared( + decoder_seq_len->input_value(1), mask_shape->output(0)); + auto transpose_upper_bounds = std::make_shared(upper_bounds->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + // Compute boolean sequence mask + auto bool_seq_mask = std::make_shared(transpose_upper_bounds->output(0), + range1T->output(0)); + + // Generate resulted seq mask + auto mask_val_true = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto mask_val_false = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto seq_mask = std::make_shared(bool_seq_mask, mask_val_true, mask_val_false); + auto transpose_seq_mask = std::make_shared(seq_mask->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto transpose_seq_mask_f = std::make_shared(transpose_seq_mask->output(0), data_type); + // Create CTCGreedyDecoder with original merge_repeated attribute and connect data and resulted seq_mask + auto decoder = std::make_shared(transpose, + transpose_seq_mask_f->output(0), + decoder_seq_len->get_merge_repeated()); + decoder->set_friendly_name(decoder_seq_len->get_friendly_name()); + + // Normalize output from CTCGreedyDecoder = output_f and create second output with output_seq_len + auto squeeze2_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {3}); + auto squeeze2_output_f = std::make_shared(decoder->output(0), squeeze2_axis); + auto squeeze1_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {2}); + auto squeeze1_output_f = std::make_shared(squeeze2_output_f->output(0), squeeze1_axis); + + element::Type ci_type = decoder_seq_len->get_classes_index_type(); + element::Type sl_type = decoder_seq_len->get_sequence_length_type(); + // CTCGreedyDecoder return floating point output. For Normalize output we need to convert output to classes_index_type + // Receive the first output with correct classes_index_type + auto output_i = std::make_shared(squeeze1_output_f->output(0), ci_type); + auto minus1 = opset6::Constant::create(ci_type, Shape{}, {-1}); + // Get to know where equal -1 + auto where_equal_minus1 = std::make_shared(output_i, minus1); + + // Compute output seq mask + auto seq_mask_const0 = opset6::Constant::create(ci_type, Shape{1}, {0}); + auto seq_mask_const1 = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_mask = std::make_shared(where_equal_minus1, seq_mask_const0, seq_mask_const1); + auto seq_mask_axis = opset6::Constant::create(ci_type, Shape{1}, {1}); + // Receive the second output + auto output_seq_len = std::make_shared(output_seq_mask, seq_mask_axis); + // Receive the second output with correct seq_len_type + auto output_seq_len_i = std::make_shared(output_seq_len->output(0), sl_type); + ngraph::copy_runtime_info(decoder_seq_len, {transpose, decoder, data_shape, T, N, plusT, plusT_scalar, range1T, mask_shape, upper_bounds, + squeeze2_output_f, squeeze1_output_f, transpose_upper_bounds, bool_seq_mask, seq_mask, transpose_seq_mask, + transpose_seq_mask_f, output_i, where_equal_minus1, output_seq_mask, output_seq_len, output_seq_len_i}); + + output_i->set_friendly_name(decoder_seq_len->get_friendly_name()+".0"); + output_seq_len_i->set_friendly_name(decoder_seq_len->get_friendly_name()+".1"); + ngraph::replace_node(decoder_seq_len, {output_i->output(0), output_seq_len_i->output(0)}); + + return true; + }; + + auto m = std::make_shared(decoder, matcher_name); + register_matcher(m, callback); +} diff --git a/inference-engine/src/transformations/src/transformations/op_conversions/softplus_decomposition.cpp b/inference-engine/src/transformations/src/transformations/op_conversions/softplus_decomposition.cpp index 7a9ad8fdf3083b..c1b7ab1fa3dafe 100644 --- a/inference-engine/src/transformations/src/transformations/op_conversions/softplus_decomposition.cpp +++ b/inference-engine/src/transformations/src/transformations/op_conversions/softplus_decomposition.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset2_to_opset1.cpp b/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset2_to_opset1.cpp index e1310762963cee..7a7360a818a38b 100644 --- a/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset2_to_opset1.cpp +++ b/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset2_to_opset1.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset3_to_opset2.cpp b/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset3_to_opset2.cpp index 6c998a8fac0c66..16b11265f63962 100644 --- a/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset3_to_opset2.cpp +++ b/inference-engine/src/transformations/src/transformations/opset_conversions/convert_opset3_to_opset2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/rt_info/dequantization_attribute.cpp b/inference-engine/src/transformations/src/transformations/rt_info/dequantization_attribute.cpp index 2ef527860397a9..d734de525e9bae 100644 --- a/inference-engine/src/transformations/src/transformations/rt_info/dequantization_attribute.cpp +++ b/inference-engine/src/transformations/src/transformations/rt_info/dequantization_attribute.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/rt_info/fused_names_attribute.cpp b/inference-engine/src/transformations/src/transformations/rt_info/fused_names_attribute.cpp index a83c9b6b4a1c12..201f5ef4296174 100644 --- a/inference-engine/src/transformations/src/transformations/rt_info/fused_names_attribute.cpp +++ b/inference-engine/src/transformations/src/transformations/rt_info/fused_names_attribute.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/rt_info/primitives_priority_attribute.cpp b/inference-engine/src/transformations/src/transformations/rt_info/primitives_priority_attribute.cpp index e8b66897474878..214aa08b9f34a9 100644 --- a/inference-engine/src/transformations/src/transformations/rt_info/primitives_priority_attribute.cpp +++ b/inference-engine/src/transformations/src/transformations/rt_info/primitives_priority_attribute.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/serialize.cpp b/inference-engine/src/transformations/src/transformations/serialize.cpp index b59f2e50ff57d4..e8e1f323ee8c84 100644 --- a/inference-engine/src/transformations/src/transformations/serialize.cpp +++ b/inference-engine/src/transformations/src/transformations/serialize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -58,10 +58,66 @@ std::string translate_type_name(const std::string& name) { return name; } +size_t hash_combine(const void* v, int64_t size) { + constexpr auto cel_size = sizeof(size_t); + size_t seed = static_cast(size); + const auto data = static_cast(v); + const auto d_end = std::next(data, size / cel_size); + // The constant value used as a magic number has been + // traditionally used e.g. in boost library's hash_combine. + // It happens to be derived from the golden ratio. + for (auto d = data; d != d_end; ++d) { + seed ^= *d + 0x9e3779b9 + (seed << 6) + (seed >> 2); + } + size_t last_bytes{0}; + std::memcpy(&last_bytes, d_end, size % cel_size); + seed ^= last_bytes + 0x9e3779b9 + (seed << 6) + (seed >> 2); + return seed; +} + +class ConstantWriter { +public: + using FilePosition = int64_t; + using HashValue = size_t; + using ConstWritePositions = std::unordered_map; + + ConstantWriter(std::ostream& bin_data, bool enable_compression = true) + : m_binary_output(bin_data) + , m_enable_compression(enable_compression) { + } + + FilePosition write(const char* ptr, size_t size) { + const auto offset = m_binary_output.tellp(); + if (!m_enable_compression) { + m_binary_output.write(ptr, size); + return offset; + } + // The biggest supported models have at maximum 1-2 thousand constant nodes, + // with 64 bit hash that gives a probability around 1 in 10 trillion that a + // hash collision will appear. Because of this, a choice has been made to + // not perform collision detection and keep the hashing quick and seamless. + const HashValue hash = hash_combine(ptr, size); + const auto found = m_hash_to_file_positions.find(hash); + if (found != end(m_hash_to_file_positions)) { + return found->second; + } + + m_binary_output.write(ptr, size); + m_hash_to_file_positions.insert({hash, offset}); + + return offset; + } + +private: + ConstWritePositions m_hash_to_file_positions; + std::ostream& m_binary_output; + bool m_enable_compression; +}; + void ngfunction_2_irv10(pugi::xml_node& node, - std::ostream& bin_file, const ngraph::Function& f, - const std::map& custom_opsets); + const std::map& custom_opsets, + ConstantWriter& constant_write_handler); // Some of the operators were added to wrong opsets. This is a mapping // that allows such operators to be serialized with proper opsets. @@ -116,9 +172,9 @@ class XmlSerializer { class XmlSerializer : public ngraph::AttributeVisitor { pugi::xml_node& m_xml_node; - std::ostream& m_bin_data; std::string& m_node_type_name; const std::map& m_custom_opsets; + ConstantWriter& m_constant_write_handler; template std::string create_atribute_list( @@ -126,17 +182,6 @@ class XmlSerializer : public ngraph::AttributeVisitor { return join(adapter.get()); } -public: - XmlSerializer(pugi::xml_node& data, - std::ostream& bin_data, - std::string& node_type_name, - const std::map& custom_opsets) - : m_xml_node(data) - , m_bin_data(bin_data) - , m_node_type_name(node_type_name) - , m_custom_opsets(custom_opsets) { - } - std::vector map_type_from_body(const pugi::xml_node& xml_node, const std::string& map_type) { std::vector output; @@ -152,112 +197,127 @@ class XmlSerializer : public ngraph::AttributeVisitor { return output; } - void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override { + void input_descriptions_on_adapter(const std::vector>& input_descriptions, + const std::vector& parameter_mapping, + const std::vector& result_mapping, + pugi::xml_node& port_map) { + NGRAPH_CHECK(!parameter_mapping.empty(), "No parameters found in body Function."); + + if (!m_xml_node.parent().child("port_map")) { + port_map = m_xml_node.parent().insert_child_before("port_map", m_xml_node.parent().first_child()); + } + + for (const auto& input_description : input_descriptions) { + pugi::xml_node input = port_map.append_child("input"); + input.append_attribute("external_port_id").set_value(input_description->m_input_index); + input.append_attribute("internal_layer_id").set_value(parameter_mapping[input_description->m_body_parameter_index].c_str()); + + if (auto slice_input = as_type_ptr(input_description)) { + input.prepend_attribute("axis").set_value(slice_input->m_axis); + input.append_attribute("start").set_value(slice_input->m_start); + input.append_attribute("end").set_value(slice_input->m_end); + input.append_attribute("stride").set_value(slice_input->m_stride); + input.append_attribute("part_size").set_value(slice_input->m_part_size); + } else if (auto merged_input = as_type_ptr(input_description)) { + pugi::xml_node back_edges = m_xml_node.parent().child("back_edges"); + if (!back_edges) { + back_edges = m_xml_node.parent().insert_child_after("back_edges", port_map); + } + pugi::xml_node edge = back_edges.append_child("edge"); + edge.append_attribute("from-layer").set_value(result_mapping[merged_input->m_body_value_index].c_str()); + edge.append_attribute("to-layer").set_value(parameter_mapping[merged_input->m_body_parameter_index].c_str()); + } + } + } + + void output_descriptions_on_adapter(const std::vector>& output_descriptions, + const std::vector& parameter_mapping, + const std::vector& result_mapping, + pugi::xml_node& port_map) { + NGRAPH_CHECK(!result_mapping.empty(), "No results found in body Function."); + + if (!port_map) { + port_map = m_xml_node.parent().insert_child_before("port_map", m_xml_node.parent().first_child()); + } + + for (const auto& output_description : output_descriptions) { + pugi::xml_node output = port_map.append_child("output"); + output.append_attribute("external_port_id").set_value(parameter_mapping.size() + output_description->m_output_index); + output.append_attribute("internal_layer_id").set_value(result_mapping[output_description->m_body_value_index].c_str()); + + if (auto concat_output = as_type_ptr(output_description)) { + output.prepend_attribute("axis").set_value(concat_output->m_axis); + output.append_attribute("start").set_value(concat_output->m_start); + output.append_attribute("end").set_value(concat_output->m_end); + output.append_attribute("stride").set_value(concat_output->m_stride); + output.append_attribute("part_size").set_value(concat_output->m_part_size); + } + } + } + + void special_body_ports_on_adapter(const ngraph::op::v5::Loop::SpecialBodyPorts& special_body_ports, + const std::vector& parameter_mapping, + const std::vector& result_mapping, + pugi::xml_node& port_map) { + NGRAPH_CHECK(port_map, "port_map section not found, purpose attribute cannot be added."); + + if (special_body_ports.current_iteration_input_idx != -1) { + pugi::xml_node iter_input = port_map.append_child("input"); + iter_input.append_attribute("external_port_id").set_value("-1"); + iter_input.append_attribute("internal_layer_id").set_value(parameter_mapping[special_body_ports.current_iteration_input_idx].c_str()); + iter_input.append_attribute("purpose").set_value("current_iteration"); + } + + if (special_body_ports.body_condition_output_idx != -1) { + pugi::xml_node exec_output = port_map.append_child("output"); + exec_output.append_attribute("external_port_id").set_value("-1"); + exec_output.append_attribute("internal_layer_id").set_value(result_mapping[special_body_ports.body_condition_output_idx].c_str()); + exec_output.append_attribute("purpose").set_value("execution_condition"); + } + } + +public: + XmlSerializer(pugi::xml_node& data, + std::string& node_type_name, + const std::map& custom_opsets, + ConstantWriter& constant_write_handler) + : m_xml_node(data) + , m_node_type_name(node_type_name) + , m_custom_opsets(custom_opsets) + , m_constant_write_handler(constant_write_handler) { + } + + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { if (m_xml_node.parent().child("body")) { - // parameters and results from body are required for port_map attributes serialization - std::vector parameter_mapping = map_type_from_body(m_xml_node.parent(), "Parameter"); std::vector result_mapping = map_type_from_body(m_xml_node.parent(), "Result"); + std::vector parameter_mapping = map_type_from_body(m_xml_node.parent(), "Parameter"); + pugi::xml_node port_map = m_xml_node.parent().child("port_map"); NGRAPH_CHECK(!parameter_mapping.empty() || !result_mapping.empty(), "No parameters or results found in body Function."); - // TI, Loop do not have attributtes as regular ops, it is necessary to append "port_map" and // "back_edges" to layer above (m_xml_node.parent()) as in ngfunction_2_irv10() layer (here "m_xml_node") // with empty attributes is removed. if (const auto& a = ngraph::as_type>>>(&adapter)) { - pugi::xml_node port_map = m_xml_node.parent().child("port_map"); - if (!m_xml_node.parent().child("port_map")) { - port_map = m_xml_node.parent().insert_child_before("port_map", m_xml_node.parent().first_child()); - } - - for (const auto& input_description : a->get()) { - pugi::xml_node input = port_map.append_child("input"); - input.append_attribute("external_port_id").set_value(input_description->m_input_index); - input.append_attribute("internal_layer_id").set_value(parameter_mapping[input_description->m_body_parameter_index].c_str()); - - if (auto slice_input = as_type_ptr(input_description)) { - input.prepend_attribute("axis").set_value(slice_input->m_axis); - if (slice_input->m_start) { - input.append_attribute("start").set_value(slice_input->m_start); - } - if (slice_input->m_end != -1) { - input.append_attribute("end").set_value(slice_input->m_end); - } - if (slice_input->m_stride != 1) { - input.append_attribute("stride").set_value(slice_input->m_stride); - } - if (slice_input->m_part_size != 1) { - input.append_attribute("part_size").set_value(slice_input->m_part_size); - } - } else if (auto merged_input = as_type_ptr(input_description)) { - pugi::xml_node back_edges = m_xml_node.parent().child("back_edges"); - if (!back_edges) { - back_edges = m_xml_node.parent().insert_child_after("back_edges", port_map); - } - pugi::xml_node edge = back_edges.append_child("edge"); - edge.append_attribute("from-layer").set_value(result_mapping[merged_input->m_body_value_index].c_str()); - edge.append_attribute("to-layer").set_value(parameter_mapping[merged_input->m_body_parameter_index].c_str()); - } - } + >>>(&adapter)) { + input_descriptions_on_adapter(a->get(), parameter_mapping, result_mapping, port_map); } else if (const auto& a = ngraph::as_type>>>(&adapter)) { - pugi::xml_node port_map = m_xml_node.parent().child("port_map"); - if (!port_map) { - port_map = m_xml_node.parent().insert_child_before("port_map", m_xml_node.parent().first_child()); - } - - for (const auto& output_description : a->get()) { - pugi::xml_node output = port_map.append_child("output"); - output.append_attribute("external_port_id").set_value(parameter_mapping.size() + output_description->m_output_index); - output.append_attribute("internal_layer_id").set_value(result_mapping[output_description->m_body_value_index].c_str()); - - if (auto concat_output = as_type_ptr(output_description)) { - output.prepend_attribute("axis").set_value(concat_output->m_axis); - if (concat_output->m_start) { - output.append_attribute("start").set_value(concat_output->m_start); - } - if (concat_output->m_end != -1) { - output.append_attribute("end").set_value(concat_output->m_end); - } - if (concat_output->m_stride != 1) { - output.append_attribute("stride").set_value(concat_output->m_stride); - } - if (concat_output->m_part_size != 1) { - output.append_attribute("part_size").set_value(concat_output->m_part_size); - } - } - } + >>>(&adapter)) { + output_descriptions_on_adapter(a->get(), parameter_mapping, result_mapping, port_map); } else if (const auto& a = ngraph::as_type>(&adapter)) { - pugi::xml_node port_map = m_xml_node.parent().child("port_map"); - NGRAPH_CHECK(port_map, "port_map section not found, purpose attribute cannot be added."); - - if (a->get().current_iteration_input_idx != -1) { - pugi::xml_node iter_input = port_map.append_child("input"); - iter_input.append_attribute("external_port_id").set_value("-1"); - iter_input.append_attribute("internal_layer_id").set_value(parameter_mapping[a->get().current_iteration_input_idx].c_str()); - iter_input.append_attribute("purpose").set_value("current_iteration"); - } - - if (a->get().body_condition_output_idx != -1) { - pugi::xml_node exec_output = port_map.append_child("output"); - exec_output.append_attribute("external_port_id").set_value("-1"); - exec_output.append_attribute("internal_layer_id").set_value(result_mapping[a->get().body_condition_output_idx].c_str()); - exec_output.append_attribute("purpose").set_value("execution_condition"); - } + special_body_ports_on_adapter(a->get(), parameter_mapping, result_mapping, port_map); } } else if (const auto& a = ngraph::as_type>>(&adapter)) { m_xml_node.append_attribute(name.c_str()).set_value(a->get()->get_info().variable_id.c_str()); } else if (const auto& a = ngraph::as_type>>(&adapter)) { if (name == "value" && translate_type_name(m_node_type_name) == "Const") { const int64_t size = a->get()->size(); - const int64_t offset = m_bin_data.tellp(); + int64_t offset = m_constant_write_handler.write( + static_cast(a->get()->get_ptr()), size); m_xml_node.append_attribute("offset").set_value(offset); m_xml_node.append_attribute("size").set_value(size); - - auto data = static_cast(a->get()->get_ptr()); - m_bin_data.write(data, size); } } } @@ -317,11 +377,11 @@ class XmlSerializer : public ngraph::AttributeVisitor { // to layer above (m_xml_node.parent()) as in ngfunction_2_irv10() layer (m_xml_node) with empty attributes // is removed. pugi::xml_node xml_body = m_xml_node.parent().append_child(name.c_str()); - ngfunction_2_irv10(xml_body, m_bin_data, *adapter.get(), m_custom_opsets); + ngfunction_2_irv10(xml_body, *adapter.get(), m_custom_opsets, m_constant_write_handler); xml_body.remove_attribute("name"); xml_body.remove_attribute("version"); } else if (name == "net") { - ngfunction_2_irv10(m_xml_node, m_bin_data, *adapter.get(), m_custom_opsets); + ngfunction_2_irv10(m_xml_node, *adapter.get(), m_custom_opsets, m_constant_write_handler); } else { NGRAPH_CHECK(false, "Unsupported Function name."); } @@ -393,9 +453,10 @@ const std::vector create_edge_mapping( std::string get_opset_name( const ngraph::Node* n, const std::map& custom_opsets) { - auto opsets = std::array, 6>{ + auto opsets = std::array, 7>{ ngraph::get_opset1(), ngraph::get_opset2(), ngraph::get_opset3(), - ngraph::get_opset4(), ngraph::get_opset5(), ngraph::get_opset6()}; + ngraph::get_opset4(), ngraph::get_opset5(), ngraph::get_opset6(), + ngraph::get_opset7()}; auto special_opset = get_special_opset_for_op(n->get_type_info()); if (!special_opset.empty()) { @@ -526,15 +587,18 @@ bool resolve_dynamic_shapes(const ngraph::Function& f) { // dynamic_to_static function converts dynamic dimensions to static using // upperbound (get_max_length) dimension value. - auto dynamic_to_static = [](const PartialShape & shape) -> PartialShape { + auto dynamic_to_static = [&op](const PartialShape & shape) -> PartialShape { if (shape.is_static() || shape.rank().is_dynamic()) { return shape; } - auto out_shape = PartialShape::dynamic(shape.rank()); - for (int64_t i = 0; i < shape.rank().get_length(); ++i) { - const auto & in_dim = shape[i]; - out_shape[i] = (in_dim.is_dynamic() ? Dimension(in_dim.get_max_length()) : in_dim); - } + std::vector out_shape; + std::transform(std::begin(shape), std::end(shape), + std::back_inserter(out_shape), + [](const Dimension& d) -> Dimension { + return d.get_max_length(); + }); + NGRAPH_CHECK(PartialShape(out_shape).is_static(), + "Dynamic dimension cannot be resolved in ", op); return out_shape; }; @@ -565,9 +629,9 @@ bool resolve_dynamic_shapes(const ngraph::Function& f) { } void ngfunction_2_irv10(pugi::xml_node& netXml, - std::ostream& bin_file, const ngraph::Function& f, - const std::map& custom_opsets) { + const std::map& custom_opsets, + ConstantWriter& constant_node_write_handler) { const bool exec_graph = is_exec_graph(f); netXml.append_attribute("name").set_value(f.get_friendly_name().c_str()); @@ -603,7 +667,7 @@ void ngfunction_2_irv10(pugi::xml_node& netXml, if (exec_graph) { visit_exec_graph_node(data, node_type_name, node); } else { - XmlSerializer visitor(data, bin_file, node_type_name, custom_opsets); + XmlSerializer visitor(data, node_type_name, custom_opsets, constant_node_write_handler); NGRAPH_CHECK(node->visit_attributes(visitor), "Visitor API is not supported in ", node); rt_info::XmlSerializer{data}.serialize(node->get_rt_info()); @@ -690,7 +754,8 @@ bool pass::Serialize::run_on_function(std::shared_ptr f) { std::string name = "net"; pugi::xml_document xml_doc; pugi::xml_node net_node = xml_doc.append_child(name.c_str()); - XmlSerializer visitor(net_node, bin_file, name, m_custom_opsets); + ConstantWriter constant_write_handler(bin_file); + XmlSerializer visitor(net_node, name, m_custom_opsets, constant_write_handler); visitor.on_attribute(name, f); xml_doc.save(xml_file); diff --git a/inference-engine/src/transformations/src/transformations/smart_reshape/matmul_sr.cpp b/inference-engine/src/transformations/src/transformations/smart_reshape/matmul_sr.cpp index 453807f99cb0cf..e987d4bc444582 100644 --- a/inference-engine/src/transformations/src/transformations/smart_reshape/matmul_sr.cpp +++ b/inference-engine/src/transformations/src/transformations/smart_reshape/matmul_sr.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/smart_reshape/mimic_set_batch_size.cpp b/inference-engine/src/transformations/src/transformations/smart_reshape/mimic_set_batch_size.cpp index 403ebced1a5773..c2a6237985b5ba 100644 --- a/inference-engine/src/transformations/src/transformations/smart_reshape/mimic_set_batch_size.cpp +++ b/inference-engine/src/transformations/src/transformations/smart_reshape/mimic_set_batch_size.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/smart_reshape/proposal_scales_stridedslice.cpp b/inference-engine/src/transformations/src/transformations/smart_reshape/proposal_scales_stridedslice.cpp index 42a546e172f275..4e5c2e1b932c33 100644 --- a/inference-engine/src/transformations/src/transformations/smart_reshape/proposal_scales_stridedslice.cpp +++ b/inference-engine/src/transformations/src/transformations/smart_reshape/proposal_scales_stridedslice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/smart_reshape/reshape_to_1D.cpp b/inference-engine/src/transformations/src/transformations/smart_reshape/reshape_to_1D.cpp index a420d47af92f0a..03916cd3fd9569 100644 --- a/inference-engine/src/transformations/src/transformations/smart_reshape/reshape_to_1D.cpp +++ b/inference-engine/src/transformations/src/transformations/smart_reshape/reshape_to_1D.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/smart_reshape/set_batch_size.cpp b/inference-engine/src/transformations/src/transformations/smart_reshape/set_batch_size.cpp index 02c44701fbd693..4256cc895eba8d 100644 --- a/inference-engine/src/transformations/src/transformations/smart_reshape/set_batch_size.cpp +++ b/inference-engine/src/transformations/src/transformations/smart_reshape/set_batch_size.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/smart_reshape/smart_reshape.cpp b/inference-engine/src/transformations/src/transformations/smart_reshape/smart_reshape.cpp index 04b104fb48eb38..042d2e77f6770c 100644 --- a/inference-engine/src/transformations/src/transformations/smart_reshape/smart_reshape.cpp +++ b/inference-engine/src/transformations/src/transformations/smart_reshape/smart_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/smart_reshape/strided_slice_squeeze.cpp b/inference-engine/src/transformations/src/transformations/smart_reshape/strided_slice_squeeze.cpp index 153d8783a7832e..24e0cf207d32af 100644 --- a/inference-engine/src/transformations/src/transformations/smart_reshape/strided_slice_squeeze.cpp +++ b/inference-engine/src/transformations/src/transformations/smart_reshape/strided_slice_squeeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/transformations/src/transformations/utils/utils.cpp b/inference-engine/src/transformations/src/transformations/utils/utils.cpp index 75655f0122c370..c5df435a7e36c7 100644 --- a/inference-engine/src/transformations/src/transformations/utils/utils.cpp +++ b/inference-engine/src/transformations/src/transformations/utils/utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -120,6 +120,16 @@ std::shared_ptr activation(const std::string& activation_name, con } } +bool is_seq_len_provided(const std::shared_ptr &seq_len_input, int64_t max_seq_len) { + if (const auto &seq_len_const = std::dynamic_pointer_cast(seq_len_input)) { + const auto &seq_len_values = seq_len_const->cast_vector(); + return std::any_of(seq_len_values.begin(), seq_len_values.end(), [max_seq_len](const int64_t val) { + return val != max_seq_len; + }); + } + return true; +} + } // namespace util } // namespace op } // namespace ngraph diff --git a/inference-engine/src/vpu/CMakeLists.txt b/inference-engine/src/vpu/CMakeLists.txt index 46bea227b96c8e..00069d2a262c43 100644 --- a/inference-engine/src/vpu/CMakeLists.txt +++ b/inference-engine/src/vpu/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/vpu/common/CMakeLists.txt b/inference-engine/src/vpu/common/CMakeLists.txt index 5c31c9a7a35726..6dcafaaed23783 100644 --- a/inference-engine/src/vpu/common/CMakeLists.txt +++ b/inference-engine/src/vpu/common/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/dynamic_shape_resolver.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/dynamic_shape_resolver.hpp index d6cacd876acf88..8860ad8916f008 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/dynamic_shape_resolver.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/dynamic_shape_resolver.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/exp_gather_elements.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/exp_gather_elements.hpp index 0af63ce9e110f7..07780ab165266a 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/exp_gather_elements.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/exp_gather_elements.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,7 +19,8 @@ namespace ngraph { namespace vpu { namespace op { class ExpGatherElements : public ngraph::op::Op { public: - NGRAPH_RTTI_DECLARATION; + static constexpr NodeTypeInfo type_info{"ExpGatherElements", 0}; + const NodeTypeInfo& get_type_info() const override { return type_info; } explicit ExpGatherElements(const Output& data, const Output& indices, diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/out_shape_of_reshape.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/out_shape_of_reshape.hpp index 77be51b80ff217..22d142eacc540b 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/out_shape_of_reshape.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/out_shape_of_reshape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,9 +30,12 @@ class OutShapeOfReshape : public ngraph::op::Op { void setSpecialZero(bool special_zero) { m_specialZero = special_zero; } bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override; + void set_output_type(const ngraph::element::Type& output_type); + using Node::set_output_type; private: bool m_specialZero; + element::Type m_output_type = element::i64; }; } // namespace op diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_broadcast.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_broadcast.hpp index 5af82c21f4d3d3..2d472ab4a12e86 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_broadcast.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_broadcast.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,13 +36,10 @@ class StaticShapeBroadcast : public ::ngraph::op::v3::Broadcast { bool visit_attributes(ngraph::AttributeVisitor& visitor) override; - PartialShape getEvaluatedShape() const { return m_evaluatedOutputShape; } - void setEvaluatedShape(const PartialShape& shape) { m_evaluatedOutputShape = shape; } - bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override; -private: - PartialShape m_evaluatedOutputShape; +protected: + ngraph::PartialShape m_evaluatedOutputShape; }; } // namespace op diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_loop.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_loop.hpp index d6d0f24e06076d..5c9cdd9ef61d9d 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_loop.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_loop.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,11 +10,15 @@ namespace ngraph { namespace vpu { namespace op { class StaticShapeLoop : public ngraph::opset6::Loop { public: - NGRAPH_RTTI_DECLARATION; + static constexpr NodeTypeInfo type_info{"StaticShapeLoop", 0}; + const NodeTypeInfo& get_type_info() const override { return type_info; } explicit StaticShapeLoop(const Loop& loop); void validate_and_infer_types() override; bool visit_attributes(AttributeVisitor&) override; + +protected: + ngraph::PartialShape m_evaluatedIterationsCount; }; } // namespace op diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_non_maximum_suppression.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_non_maximum_suppression.hpp index a31115d18e3021..0c08c74e9e69c0 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_non_maximum_suppression.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_non_maximum_suppression.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,6 +31,8 @@ class StaticShapeNonMaxSuppression : public ngraph::op::NonMaxSuppressionIE3 { const ngraph::element::Type& outputType = ngraph::element::i64); void validate_and_infer_types() override; + void set_output_type(const ngraph::element::Type& output_type); + using Node::set_output_type; std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; }; diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_nonzero.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_nonzero.hpp index 306f43ea7fc23c..4c86156268da07 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_nonzero.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_nonzero.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_reshape.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_reshape.hpp index 00b390f46ae259..3d770f401dbca7 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_reshape.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_reshape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,6 +22,9 @@ class StaticShapeReshape : public ngraph::opset3::Reshape { const NodeTypeInfo& get_type_info() const override { return type_info; } void validate_and_infer_types() override; + +protected: + ngraph::PartialShape m_evaluatedOutputShape; }; } // namespace op diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_topk.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_topk.hpp index 31488099bd4993..d06310834f6288 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_topk.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/operations/static_shape_topk.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,15 +13,11 @@ namespace ngraph { namespace vpu { namespace op { -class StaticShapeTopK : public ngraph::op::Op { +class StaticShapeTopK : public ngraph::op::v3::TopK { public: static constexpr NodeTypeInfo type_info{"StaticShapeTopK", 0}; - const NodeTypeInfo& get_type_info() const override { return type_info; } - using SortType = ngraph::op::TopKSortType; - using Mode = ngraph::op::TopKMode; - StaticShapeTopK(const Output& data, const Output& k, const int64_t axis, @@ -36,33 +32,10 @@ class StaticShapeTopK : public ngraph::op::Op { const SortType sort, const element::Type& index_element_type = element::i32); - bool visit_attributes(AttributeVisitor& visitor) override; void validate_and_infer_types() override; - std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; - - size_t get_version() const override { return 1; } - - uint64_t get_axis() const; - int64_t get_provided_axis() const { return m_axis; } - void set_axis(const int64_t axis); - Mode get_mode() const { return m_mode; } - void set_mode(const Mode mode) { m_mode = mode; } - SortType get_sort_type() const { return m_sort; } - void set_sort_type(const SortType sort) { m_sort = sort; } - element::Type get_index_element_type() const { return m_index_element_type; } - void set_index_element_type(const element::Type& index_element_type) { - m_index_element_type = index_element_type; - } - size_t get_default_output_index() const override { return no_default_index(); } - protected: - int64_t m_axis; - int64_t m_maximumK; - uint64_t m_normalized_axis; - Mode m_mode; - SortType m_sort; - element::Type m_index_element_type{element::i32}; + ngraph::PartialShape m_evaluatedOutputShape; }; } // namespace op diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/query_network.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/query_network.hpp index 5f23cb0ceae42b..bf340466145a2c 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/query_network.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/query_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.hpp index 743ae69957f817..b397cdf1ef5c6f 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape.hpp index 0524f3920dd17f..992080565c407f 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.hpp index b0ac4d612d70e4..0cb942cd6d96f6 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_broadcast.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_broadcast.hpp index 2ef7bbbecde045..c885269f7433dc 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_broadcast.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_broadcast.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_concat.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_concat.hpp index 43dd69ee0ac9c3..c4669956e81c93 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_concat.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather.hpp index 467f3ff175344e..d515557ba3494f 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_elements.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_elements.hpp index dc7e17c13504c1..226a869326b9da 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_elements.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_elements.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_nd.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_nd.hpp index 6474a760f501bf..fcc899519fe91d 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_nd.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_gather_nd.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_loop.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_loop.hpp index d458909ecc088f..daa290cf3fc80b 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_loop.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_loop.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_matmul.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_matmul.hpp index 644b9ee99e7596..50ac5499868d2b 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_matmul.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_matmul.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.hpp index 31cf33367531f9..00e71c9016ce06 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_nonzero.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_nonzero.hpp index 88e65601430d55..7a877441a3dbda 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_nonzero.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_nonzero.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reduce.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reduce.hpp index 880b9be50c18cd..c51e0a3a7d2af8 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reduce.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reduce.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reshape.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reshape.hpp index 6771ade69fec78..696097e68fa9e9 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reshape.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_reshape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_roialign.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_roialign.hpp index f1940305be3a1a..9601aea1f1999a 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_roialign.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_roialign.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_split.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_split.hpp index 33e9905ff5f634..14a854d80143b3 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_split.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_squeeze.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_squeeze.hpp index d856ef73056b40..b7e2ace5824042 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_squeeze.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_squeeze.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_strided_slice.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_strided_slice.hpp index 5d159e81cb169b..ddbb1e7e028de5 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_strided_slice.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_strided_slice.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_topk.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_topk.hpp index 55bc5234c38405..16c6741871ff45 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_topk.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_topk.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_transpose.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_transpose.hpp index c64bb56d8f4e83..d68d1568c1556c 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_transpose.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_transpose.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.hpp index ec0ce72c156f46..2fcec28504086c 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unsqueeze.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unsqueeze.hpp index 37087ceccd678c..d7f441b49740b4 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unsqueeze.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_unsqueeze.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_variadic_split.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_variadic_split.hpp index 6c89afa62819b1..cc51ec6211c911 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_variadic_split.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/dynamic_to_static_shape_variadic_split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/eliminate_shapeof_after_dsr.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/eliminate_shapeof_after_dsr.hpp index 6c4ad234b36d1c..97d24e01ac4276 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/eliminate_shapeof_after_dsr.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/eliminate_shapeof_after_dsr.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.hpp index 710fbcfd9e9e24..0d6db1aaabffa2 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.hpp index 6fbc669714d5fc..45f71ec0aae12f 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.hpp index bf9ae6f2d06c6f..2f32ae404437e4 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_convolution.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_convolution.hpp index c1feef7db1f10d..6e9fea8bbbcecf 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_convolution.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.hpp index 032da2bd3407ec..e4bf88a01c740e 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.hpp index d008aaf7a3f085..d235fa1c9cc206 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_gather_gather_elements.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_gather_gather_elements.hpp index ee44da10bcc10e..23f7a333afbf6c 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_gather_gather_elements.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_gather_gather_elements.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_subsequent_dsr_operations.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_subsequent_dsr_operations.hpp index c2e4d1f3cb2bed..b30f620c22368b 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_subsequent_dsr_operations.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/transformations/merge_subsequent_dsr_operations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/ngraph/utilities.hpp b/inference-engine/src/vpu/common/include/vpu/ngraph/utilities.hpp index 0bac394bbe5749..bf37a6ea981418 100644 --- a/inference-engine/src/vpu/common/include/vpu/ngraph/utilities.hpp +++ b/inference-engine/src/vpu/common/include/vpu/ngraph/utilities.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,15 +6,31 @@ #include "ngraph/node.hpp" #include "ngraph/type/element_type.hpp" +#include "ngraph/type.hpp" #include "vpu/utils/error.hpp" - +#include "vpu/ngraph/operations/static_shape_non_maximum_suppression.hpp" +#include "vpu/ngraph/operations/static_shape_nonzero.hpp" +#include "vpu/ngraph/operations/static_shape_topk.hpp" +#include "vpu/ngraph/operations/out_shape_of_reshape.hpp" #include #include namespace vpu { -std::vector evaluateTargetShape(const ngraph::Output& value); +using typeToFuseMap = std::map&, ngraph::element::Type, size_t idx)>>; + +bool fuseTypeToStaticShapeNonMaxSuppression(const std::shared_ptr& node, ngraph::element::Type to, size_t idx); +bool fuseTypeToStaticShapeNonZero(const std::shared_ptr& node, ngraph::element::Type to, size_t idx); +bool fuseTypeToStaticShapeTopK(const std::shared_ptr& node, ngraph::element::Type to, size_t idx); +bool fuseTypeToOutShapeOfReshape(const std::shared_ptr& node, ngraph::element::Type to, size_t idx); + +static typeToFuseMap myriadTypeToFuseMap { + {ngraph::vpu::op::StaticShapeNonMaxSuppression::type_info, fuseTypeToStaticShapeNonMaxSuppression}, + {ngraph::vpu::op::StaticShapeNonZero::type_info, fuseTypeToStaticShapeNonZero}, + {ngraph::vpu::op::StaticShapeTopK::type_info, fuseTypeToStaticShapeTopK}, + {ngraph::vpu::op::OutShapeOfReshape::type_info, fuseTypeToOutShapeOfReshape}, +}; std::shared_ptr shapeToConstant(const ngraph::element::Type& type, const ngraph::Shape& shape); diff --git a/inference-engine/src/vpu/common/include/vpu/parsed_config_base.hpp b/inference-engine/src/vpu/common/include/vpu/parsed_config_base.hpp index fb0f88b7c9c654..6c7e776461d139 100644 --- a/inference-engine/src/vpu/common/include/vpu/parsed_config_base.hpp +++ b/inference-engine/src/vpu/common/include/vpu/parsed_config_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,7 +67,7 @@ class ParsedConfigBase { if (value != config.end()) { const auto parsedValue = supported.find(value->second); if (parsedValue == supported.end()) { - THROW_IE_EXCEPTION + IE_THROW() << "Unsupported value " << "\"" << value->second << "\"" << " for key " << key; } @@ -87,7 +87,7 @@ class ParsedConfigBase { try { dst = preprocess(value->second); } catch(const std::exception& e) { - THROW_IE_EXCEPTION + IE_THROW() << "Invalid value " << "\"" << value->second << "\"" << " for key " << key << " : " << e.what(); @@ -99,7 +99,7 @@ class ParsedConfigBase { try { return std::chrono::seconds(std::stoi(src)); } catch (const std::exception& e) { - THROW_IE_EXCEPTION + IE_THROW() << "Can not convert string:" << src << " to seconds. " << "Message : " << e.what(); diff --git a/inference-engine/src/vpu/common/include/vpu/utils/any.hpp b/inference-engine/src/vpu/common/include/vpu/utils/any.hpp index 852effca4a7fff..d92eb12054a542 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/any.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/any.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/attributes_map.hpp b/inference-engine/src/vpu/common/include/vpu/utils/attributes_map.hpp index 5f2ffdc7167080..42135a11c6e265 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/attributes_map.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/attributes_map.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/auto_scope.hpp b/inference-engine/src/vpu/common/include/vpu/utils/auto_scope.hpp index b3c444d9afa406..8a525620173ccc 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/auto_scope.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/auto_scope.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,7 +6,6 @@ #include -#include
namespace vpu { diff --git a/inference-engine/src/vpu/common/include/vpu/utils/cache.hpp b/inference-engine/src/vpu/common/include/vpu/utils/cache.hpp index 599c1f373a6d76..e28a88b703173e 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/cache.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/cache.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/checked_cast.hpp b/inference-engine/src/vpu/common/include/vpu/utils/checked_cast.hpp index 513fe9c62289a8..f2910406cb6bbc 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/checked_cast.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/checked_cast.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,7 +11,7 @@ #include #include -#include
+#include namespace vpu { diff --git a/inference-engine/src/vpu/common/include/vpu/utils/dot_io.hpp b/inference-engine/src/vpu/common/include/vpu/utils/dot_io.hpp index 91a4b531d40f15..a0c2f037b4b901 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/dot_io.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/dot_io.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/enums.hpp b/inference-engine/src/vpu/common/include/vpu/utils/enums.hpp index c410be73835a20..6eddf988c7f60d 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/enums.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/enums.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/error.hpp b/inference-engine/src/vpu/common/include/vpu/utils/error.hpp index dfbb242713e62a..2180e6c86c0320 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/error.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/error.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,7 +6,6 @@ #include -#include
#include @@ -14,14 +13,16 @@ #include #include +#include + namespace vpu { // TODO: replace with VPU_THROW_FORMAT/VPU_THROW_UNLESS/VPU_INTERNAL_CHECK and remove -#define VPU_THROW_EXCEPTION THROW_IE_EXCEPTION +#define VPU_THROW_EXCEPTION IE_THROW() namespace details { -using VPUException = InferenceEngine::details::InferenceEngineException; +using VPUException = InferenceEngine::Exception; class UnsupportedLayerException : public VPUException { public: @@ -30,7 +31,8 @@ class UnsupportedLayerException : public VPUException { template void throwFormat(const char* fileName, int lineNumber, const char* messageFormat, Args&&... args) { - throw Exception(fileName, lineNumber, formatString(messageFormat, std::forward(args)...)); + IE_THROW(GeneralError) << '\n' << fileName << ':' << lineNumber << ' ' + << formatString(messageFormat, std::forward(args)...); } } // namespace details diff --git a/inference-engine/src/vpu/common/include/vpu/utils/extra.hpp b/inference-engine/src/vpu/common/include/vpu/utils/extra.hpp index 8712709556b065..759c11d49ff810 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/extra.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/extra.hpp @@ -1,10 +1,9 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once -#include
namespace vpu { diff --git a/inference-engine/src/vpu/common/include/vpu/utils/file_system.hpp b/inference-engine/src/vpu/common/include/vpu/utils/file_system.hpp index 6bbd8288ed9d90..790d0ad9cb30c4 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/file_system.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/file_system.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/func_ref.hpp b/inference-engine/src/vpu/common/include/vpu/utils/func_ref.hpp index 85adf54d0a5da0..35c3037f31d47d 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/func_ref.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/func_ref.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/handle.hpp b/inference-engine/src/vpu/common/include/vpu/utils/handle.hpp index 79ed1f5366cc8e..634be2f654e789 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/handle.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/handle.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,7 @@ #include #include -#include
+#include namespace vpu { diff --git a/inference-engine/src/vpu/common/include/vpu/utils/heap.hpp b/inference-engine/src/vpu/common/include/vpu/utils/heap.hpp index a006fed57d5568..3fa65f8a2b59f1 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/heap.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/heap.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/ie_helpers.hpp b/inference-engine/src/vpu/common/include/vpu/utils/ie_helpers.hpp index 48f658e0a2e5c0..b841d2026aa0dc 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/ie_helpers.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/ie_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/ie_itt.hpp b/inference-engine/src/vpu/common/include/vpu/utils/ie_itt.hpp index 64b7c3ed05cf80..025359eca682dd 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/ie_itt.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/ie_itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/src/vpu/common/include/vpu/utils/intrusive_handle_list.hpp b/inference-engine/src/vpu/common/include/vpu/utils/intrusive_handle_list.hpp index 727ed619fafda9..ff53c262f509cf 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/intrusive_handle_list.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/intrusive_handle_list.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/io.hpp b/inference-engine/src/vpu/common/include/vpu/utils/io.hpp index f795e6f5a7f7b4..6a7b60a090127d 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/io.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/io.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/logger.hpp b/inference-engine/src/vpu/common/include/vpu/utils/logger.hpp index eb2f65f5423533..de06c8511adcfd 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/logger.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/logger.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/numeric.hpp b/inference-engine/src/vpu/common/include/vpu/utils/numeric.hpp index 59ca9a15ec9141..2176b8fb7286f2 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/numeric.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/numeric.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,8 +9,7 @@ #include #include -#include
- +#include namespace vpu { using fp16_t = short; diff --git a/inference-engine/src/vpu/common/include/vpu/utils/optional.hpp b/inference-engine/src/vpu/common/include/vpu/utils/optional.hpp index 4f48d8d126d2fd..4367813b049764 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/optional.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/optional.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/perf_report.hpp b/inference-engine/src/vpu/common/include/vpu/utils/perf_report.hpp index 91bdde9342cd30..4f4f552d619a71 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/perf_report.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/perf_report.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range.hpp index efb80618156948..b078cfbdab87be 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/container_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/container_range.hpp index fb0ced06924540..5cb0cb8b4ba318 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/container_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/container_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/filter_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/filter_range.hpp index cde0fc38408232..0be7c6ff506a08 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/filter_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/filter_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/flatten_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/flatten_range.hpp index eb4f08320a667b..fc1a452fe9f974 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/flatten_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/flatten_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/generic_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/generic_range.hpp index 586e1a29b8da46..f5133035959d22 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/generic_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/generic_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/helpers.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/helpers.hpp index bbf876f2d3b8cb..abffea86385f11 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/helpers.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/iterator_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/iterator_range.hpp index f422b8746815cf..ad6a242c0cbae3 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/iterator_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/iterator_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/map_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/map_range.hpp index 92d9428868af94..cd612c0320e15a 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/map_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/map_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/reverse_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/reverse_range.hpp index beec3365095b99..18c1d1f49b278e 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/reverse_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/reverse_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/single_element_range.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/single_element_range.hpp index b2631d3b9123bf..4f41e9e97ea7f6 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/single_element_range.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/single_element_range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/range/to_container.hpp b/inference-engine/src/vpu/common/include/vpu/utils/range/to_container.hpp index 0e279121368499..cc10cfc5819a23 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/range/to_container.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/range/to_container.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/simple_math.hpp b/inference-engine/src/vpu/common/include/vpu/utils/simple_math.hpp index 1e85361266af52..2b7f3f699e75e7 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/simple_math.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/simple_math.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -89,7 +89,7 @@ class IntOrFloat final { if (isInt && other.isInt) { return IntOrFloat{value.i % other.value.i}; } - THROW_IE_EXCEPTION << "Can't apply modulus operation to floating point value"; + IE_THROW() << "Can't apply modulus operation to floating point value"; } }; diff --git a/inference-engine/src/vpu/common/include/vpu/utils/small_vector.hpp b/inference-engine/src/vpu/common/include/vpu/utils/small_vector.hpp index b276fedb28c922..cbe3b4c6899999 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/small_vector.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/small_vector.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/include/vpu/utils/string.hpp b/inference-engine/src/vpu/common/include/vpu/utils/string.hpp index ab352cdca2f918..b90b7daef8308f 100644 --- a/inference-engine/src/vpu/common/include/vpu/utils/string.hpp +++ b/inference-engine/src/vpu/common/include/vpu/utils/string.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/dynamic_shape_resolver.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/dynamic_shape_resolver.cpp index 42412137ff27d6..919960f7d53c14 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/dynamic_shape_resolver.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/dynamic_shape_resolver.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/exp_gather_elements.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/exp_gather_elements.cpp index 1259801ffecce7..0c46e22234cfa3 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/exp_gather_elements.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/exp_gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,7 +8,7 @@ namespace ngraph { namespace vpu { namespace op { -NGRAPH_RTTI_DEFINITION(ExpGatherElements, "ExpGatherElements", 0); +constexpr NodeTypeInfo ExpGatherElements::type_info; ExpGatherElements::ExpGatherElements(const Output& data, const Output& indices, diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/out_shape_of_reshape.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/out_shape_of_reshape.cpp index 72c038d61f1c19..08dd1693bebb54 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/out_shape_of_reshape.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/out_shape_of_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -54,7 +54,7 @@ void OutShapeOfReshape::validate_and_infer_types() { ") shape descriptor type needs to be an integral type. Got: ", outShapeDescriptorTensorType); - set_output_type(0, element::i64, outShapeDescriptorTensorShape); + set_output_type(0, m_output_type, outShapeDescriptorTensorShape); } std::shared_ptr OutShapeOfReshape::clone_with_new_inputs(const OutputVector& new_args) const { @@ -257,6 +257,9 @@ bool OutShapeOfReshape::evaluate(const HostTensorVector& outputs, return out_shape::evaluateOutShapeOfReshape(inputs[0], inputs[1], m_specialZero, outputs[0]); } +void OutShapeOfReshape::set_output_type(const ngraph::element::Type& output_type) { + m_output_type = output_type; +} } // namespace op } // namespace vpu diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_broadcast.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_broadcast.cpp index cf9693cbd81474..a52bf97e707dd4 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_broadcast.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,6 +9,7 @@ #include "ngraph/opsets/opset3.hpp" #include "ngraph/evaluator.hpp" +#include namespace ngraph { namespace vpu { namespace op { @@ -32,60 +33,22 @@ StaticShapeBroadcast::StaticShapeBroadcast(const Output& arg, } void StaticShapeBroadcast::validate_and_infer_types() { - if (m_mode.m_type == ngraph::op::BroadcastType::EXPLICIT) { - NODE_VALIDATION_CHECK(this, get_input_size() == 3, - "StaticShapeBroadcast (", get_friendly_name(), ") ", - "with explicit mode must have 3 inputs, provided: ", - get_input_size()); - } else if (m_mode.m_type == ngraph::op::BroadcastType::NUMPY || m_mode.m_type == ngraph::op::BroadcastType::BIDIRECTIONAL) { - NODE_VALIDATION_CHECK(this, get_input_size() == 2, - "StaticShapeBroadcast (", get_friendly_name(), ") ", - "with ", m_mode.m_type, " mode must have 2 inputs, provided: ", - get_input_size()); - } else { - NODE_VALIDATION_CHECK(this, false, - "StaticShapeBroadcast (", get_friendly_name(), ") ", - "doesn't support ", m_mode.m_type, " mode"); - } - - if (get_output_partial_shape(0).is_dynamic()) { + auto& outputShape = m_evaluatedOutputShape; + if (outputShape.is_dynamic()) { ::ngraph::op::v3::Broadcast::validate_and_infer_types(); - // Try to evaluate output shape. After some transformations further, we may not be able - // to evaluate the target shape again, then we will leave the evaluated shape unchanged. - // For example, EliminateShapeOfAfterDSR remove ShapeOf and pass the second input of DSR. - const auto evaluatedDimensionValues = ::vpu::evaluateTargetShape(input_value(1)); - NODE_VALIDATION_CHECK(this, !evaluatedDimensionValues.empty(), "StaticShapeBroadcast (", get_friendly_name(), ") can't evaluate output shape"); - - const auto evaluatedTargetShape = ngraph::PartialShape(evaluatedDimensionValues); - if (evaluatedTargetShape.is_static()) { - if (m_mode.m_type == ngraph::op::BroadcastType::BIDIRECTIONAL) { - auto targetShape = evaluatedTargetShape.get_shape(); - auto inputShape = get_input_partial_shape(0).get_shape(); - - auto& lowRankShape = targetShape.size() < inputShape.size() ? targetShape : inputShape; - auto& highRankShape = lowRankShape == targetShape ? inputShape : targetShape; - - while (lowRankShape.size() < highRankShape.size()) { - lowRankShape.insert(lowRankShape.begin(), 1); - } - - for (size_t i = 0; i < targetShape.size(); i++) { - targetShape[i] = std::max(targetShape[i], inputShape[i]); - } - - m_evaluatedOutputShape = targetShape; - } else { - m_evaluatedOutputShape = evaluatedTargetShape; - } + + outputShape = get_output_partial_shape(0); + NODE_VALIDATION_CHECK(this, outputShape.rank().is_static(), "StaticShapeBroadcast (", get_friendly_name(), ") ", + "output is expected to be of static rank"); + for (size_t i = 0; i < outputShape.rank().get_length(); i++) { + outputShape[i] = outputShape[i].get_max_length(); } - NODE_VALIDATION_CHECK(this, m_evaluatedOutputShape.is_static(), - "StaticShapeBroadcast (", get_friendly_name(), ") ", - "can't evaluate output shape, got: ", m_evaluatedOutputShape); - NODE_VALIDATION_CHECK(this, m_evaluatedOutputShape.all_non_negative(), - "StaticShapeBroadcast (", get_friendly_name(), ") ", - "expects non-negative shape, got: ", m_evaluatedOutputShape); - set_output_type(0, get_input_element_type(0), m_evaluatedOutputShape); } + + NODE_VALIDATION_CHECK(this, outputShape.is_static(), + "StaticShapeBroadcast (", get_friendly_name(), ") can't evaluate output shape"); + + set_output_type(0, get_input_element_type(0), outputShape); } std::shared_ptr StaticShapeBroadcast::clone_with_new_inputs(const OutputVector& newInputs) const { diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_loop.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_loop.cpp index 81914594040dc8..6a1d151077068e 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_loop.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_loop.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -7,28 +7,23 @@ namespace ngraph { namespace vpu { namespace op { -NGRAPH_RTTI_DEFINITION(ngraph::vpu::op::StaticShapeLoop, "StaticShapeLoop", 0); +constexpr NodeTypeInfo StaticShapeLoop::type_info; -StaticShapeLoop::StaticShapeLoop(const Loop& loop) : Loop(loop) {} +StaticShapeLoop::StaticShapeLoop(const Loop& loop) : Loop(loop), m_evaluatedIterationsCount{ngraph::PartialShape::dynamic()} {} void StaticShapeLoop::validate_and_infer_types() { - const auto isLoopStatic = [this]() { - const auto& outs = outputs(); - return !outs.empty() && std::all_of(outs.cbegin(), outs.cend(), [](const Output& output) { return output.get_partial_shape().is_static(); }); - }; + auto& iterationsCount = m_evaluatedIterationsCount; + if (iterationsCount.is_dynamic()) { + Loop::validate_and_infer_types(); - if (isLoopStatic()) { - return; + NODE_VALIDATION_CHECK(this, ngraph::evaluate_as_partial_shape(input_value(0), iterationsCount), + "Encountered a loop for which upper-bound estimation for iterations count ", input_value(0), " failed"); } - Loop::validate_and_infer_types(); - - const auto maxIterationsCountEstimation = ngraph::maximum_value(input_value(0).get_node_shared_ptr()); - NODE_VALIDATION_CHECK(this, maxIterationsCountEstimation.first, - "Encountered a loop for which upper-bound estimation for iterations count ", input_value(0), " failed"); - const auto& maxIterationsCount = maxIterationsCountEstimation.second; - NODE_VALIDATION_CHECK(this, maxIterationsCount > 0, "Encountered a loop with non-positive upper-bound estimation for iterations count ", - maxIterationsCountEstimation.second); + const auto& maxIterationsCount = iterationsCount[0].get_max_length(); + NODE_VALIDATION_CHECK(this, maxIterationsCount > 0, + "Encountered a loop with non-positive upper-bound estimation for iterations count ", + maxIterationsCount); const auto& body = get_function(); for (const auto& outputDescription : get_output_descriptions()) { diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_non_maximum_suppression.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_non_maximum_suppression.cpp index 18c8b3bca7bd8d..9ebc47c782dc96 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_non_maximum_suppression.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_non_maximum_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -63,6 +63,10 @@ void StaticShapeNonMaxSuppression::validate_and_infer_types() { set_output_type(2, m_output_type, Shape{2}); } +void StaticShapeNonMaxSuppression::set_output_type(const ngraph::element::Type& output_type) { + m_output_type = output_type; +} + } // namespace op } // namespace vpu } // namespace ngraph diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_nonzero.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_nonzero.cpp index c0120a9ba8173d..966c9cca53c34a 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_nonzero.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_reshape.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_reshape.cpp index 52b206e7777b36..64f322a7354488 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_reshape.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_reshape.cpp @@ -1,17 +1,19 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include "vpu/ngraph/operations/static_shape_reshape.hpp" #include "vpu/ngraph/utilities.hpp" +#include namespace ngraph { namespace vpu { namespace op { constexpr NodeTypeInfo StaticShapeReshape::type_info; StaticShapeReshape::StaticShapeReshape(const Output& arg, const Output& pattern, bool special_zero) - : ::ngraph::opset3::Reshape(arg, pattern, special_zero) { + : ::ngraph::opset3::Reshape(arg, pattern, special_zero), + m_evaluatedOutputShape{PartialShape::dynamic()} { constructor_validate_and_infer_types(); } @@ -20,66 +22,24 @@ StaticShapeReshape::StaticShapeReshape(const std::shared_ptr(targetShape.get_node_shared_ptr())) { - opset3::Reshape::validate_and_infer_types(); - return; - } - - NODE_VALIDATION_CHECK(this, get_input_element_type(1).is_integral_number(), "Pattern must be an integral number."); - NODE_VALIDATION_CHECK(this, get_input_partial_shape(1).rank().compatible(1), "Pattern must have rank 1, got ", get_input_partial_shape(1).rank(), "."); - set_input_is_relevant_to_shape(1); - NODE_VALIDATION_CHECK(this, get_input_partial_shape(0).is_static(), "StaticShapeReshape (", get_friendly_name(), ") ", "input#0 is expected to be of static shape, got: ", get_input_partial_shape(0)); - if (get_output_partial_shape(0).is_static()) { - return; - } - - const auto& inputShape = get_input_shape(0); - - auto outputDimensionsValues = ::vpu::evaluateTargetShape(targetShape); - NODE_VALIDATION_CHECK(this, !outputDimensionsValues.empty(), "StaticShapeReshape (", get_friendly_name(), ") can't evaluate output shape"); + auto& outputShape = m_evaluatedOutputShape; + if (outputShape.is_dynamic()) { + opset3::Reshape::validate_and_infer_types(); - for (std::size_t i = 0; i < outputDimensionsValues.size(); ++i) { - if (outputDimensionsValues[i] == 0 && m_special_zero) { - NODE_VALIDATION_CHECK(this, inputShape[i] <= static_cast(std::numeric_limits::max()), - "StaticShapeReshape (", get_friendly_name(), ") out of range input shape dimension value: ", inputShape[i]); - outputDimensionsValues[i] = static_cast(inputShape[i]); + outputShape = get_output_partial_shape(0); + NODE_VALIDATION_CHECK(this, outputShape.rank().is_static(), "StaticShapeReshape (", get_friendly_name(), ") ", + "output is expected to be of static rank"); + for (size_t i = 0; i < outputShape.rank().get_length(); i++) { + outputShape[i] = outputShape[i].get_max_length(); } } - NODE_VALIDATION_CHECK(this, std::none_of(outputDimensionsValues.cbegin(), outputDimensionsValues.cend(), - [](std::int64_t dimension) { return dimension < -1; }), "Dim size cannot be less than -1, got ", ngraph::PartialShape(outputDimensionsValues)); - const auto negativeDimsCount = std::count_if(outputDimensionsValues.cbegin(), outputDimensionsValues.cend(), - [](std::int64_t dimension) { return dimension == -1; }); - NODE_VALIDATION_CHECK(this, negativeDimsCount <= 1, "More than one dimension has size of -1 (", negativeDimsCount, ")"); - - const auto& inputShapeVolume = shape_size(inputShape); - if (negativeDimsCount == 1) { - const auto& outputShapeVolume = std::abs(std::accumulate( - outputDimensionsValues.cbegin(), - outputDimensionsValues.cend(), - static_cast(1), - std::multiplies())); //shape_size(outputDimensionsValues); - NODE_VALIDATION_CHECK(this, inputShapeVolume % outputShapeVolume == 0, "StaticShapeReshape (", get_friendly_name(), ") ", - "output shape volume does not evenly divide the input shape volume: input shape volume = ", inputShapeVolume, " output shape ", - "volume = ", outputShapeVolume); - NODE_VALIDATION_CHECK(this, outputShapeVolume != 0, "StaticShapeReshape (", get_friendly_name(), ") ", - "output shape volume is equal to 0"); - - const auto actualValue = inputShapeVolume / outputShapeVolume; - NODE_VALIDATION_CHECK(this, actualValue <= static_cast(std::numeric_limits::max()), - "StaticShapeReshape (", get_friendly_name(), ") out of range output shape dimension value: ", actualValue); - std::replace(outputDimensionsValues.begin(), outputDimensionsValues.end(), - static_cast(-1), static_cast(actualValue)); - } - - const auto& outputShape = ngraph::PartialShape(outputDimensionsValues); - NODE_VALIDATION_CHECK(this, inputShapeVolume == shape_size(outputDimensionsValues), "Requested output shape (upper-bound) ", outputShape, - " is incompatible with input shape ", get_input_shape(0), " (upper-bound)"); + NODE_VALIDATION_CHECK(this, outputShape.is_static(), + "StaticShapeReshape (", get_friendly_name(), ") can't evaluate output shape"); set_output_type(0, get_input_element_type(0), outputShape); } diff --git a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_topk.cpp b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_topk.cpp index c2293d34ff1598..a84aa19da6b017 100644 --- a/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_topk.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/operations/static_shape_topk.cpp @@ -1,13 +1,12 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include +namespace ngraph { namespace vpu { namespace op { -constexpr ngraph::NodeTypeInfo ngraph::vpu::op::StaticShapeTopK::type_info; - -static const std::uint64_t UNKNOWN_NORMALIZED_AXIS = std::numeric_limits::max(); +constexpr NodeTypeInfo StaticShapeTopK::type_info; ngraph::vpu::op::StaticShapeTopK::StaticShapeTopK( const Output& data, @@ -16,13 +15,8 @@ ngraph::vpu::op::StaticShapeTopK::StaticShapeTopK( const std::string& mode, const std::string& sort, const element::Type& index_element_type) - : Op{{data, k}} - , m_axis{axis} - , m_maximumK{-1} - , m_normalized_axis{0} - , m_mode{as_enum(mode)} - , m_sort{as_enum(sort)} - , m_index_element_type{index_element_type} { + : ngraph::op::v3::TopK{data, k, axis, mode, sort, index_element_type}, + m_evaluatedOutputShape{PartialShape::dynamic()} { constructor_validate_and_infer_types(); } @@ -33,105 +27,29 @@ ngraph::vpu::op::StaticShapeTopK::StaticShapeTopK( const ngraph::vpu::op::StaticShapeTopK::Mode mode, const ngraph::vpu::op::StaticShapeTopK::SortType sort, const ngraph::element::Type &index_element_type) - : Op{{data, k}} - , m_axis{axis} - , m_maximumK{-1} - , m_normalized_axis{0} - , m_mode{mode} - , m_sort{sort} - , m_index_element_type{index_element_type} { + : ngraph::op::v3::TopK{data, k, axis, mode, sort, index_element_type}, + m_evaluatedOutputShape{PartialShape::dynamic()} { constructor_validate_and_infer_types(); } -std::shared_ptr ngraph::vpu::op::StaticShapeTopK::clone_with_new_inputs(const OutputVector& new_args) const { - check_new_args_count(this, new_args); - auto new_v1_topk = std::make_shared( - new_args.at(0), new_args.at(1), m_axis, m_mode, m_sort); - - new_v1_topk->set_index_element_type(m_index_element_type); - - return std::move(new_v1_topk); -} - void ngraph::vpu::op::StaticShapeTopK::validate_and_infer_types() { - NODE_VALIDATION_CHECK(this, - get_input_element_type(1).is_integral_number(), - "K input has to be an integer type, which does match the provided one:", - get_input_element_type(1)); - const auto& input_partial_shape = get_input_partial_shape(0); - const auto input_rank = input_partial_shape.rank(); - - NODE_VALIDATION_CHECK(this, - input_rank.is_static() && input_rank.get_length() > 0, - "Input rank must be greater than 0."); - - const auto& k_partial_shape = get_input_partial_shape(1); - NODE_VALIDATION_CHECK( - this, k_partial_shape.rank().compatible(0), "The 'K' input must be a scalar."); - - size_t k = 0; - if (auto constant = ngraph::as_type_ptr(input_value(1).get_node_shared_ptr())) { - const auto value = constant->cast_vector(); - NODE_VALIDATION_CHECK(this, - value.size() == 1, - "Only one value (scalar) should be provided as the 'K' input to TopK", - " (got ", - value.size(), - " elements)."); - - NODE_VALIDATION_CHECK(this, - value[0] > 0, - "The value of 'K' must be a positive number.", - " (got ", - value[0], - ")."); - k = static_cast(value[0]); - } - - PartialShape output_shape{input_partial_shape}; - m_normalized_axis = ngraph::normalize_axis(this->description(), m_axis, output_shape.rank()); - if (k != 0) { - output_shape[m_normalized_axis] = k; - } else if (m_maximumK == -1) { - auto max_k = maximum_value(input_value(1)); - const auto is_max_value_calculated = max_k.first; - const auto calculated_max_value = max_k.second; - if (is_max_value_calculated) { - m_maximumK = calculated_max_value; + auto& outputShape = m_evaluatedOutputShape; + if (outputShape.is_dynamic()) { + ngraph::op::v3::TopK::validate_and_infer_types(); + + outputShape = get_output_partial_shape(0); + NODE_VALIDATION_CHECK(this, outputShape.rank().is_static(), "StaticShapeTopK (", get_friendly_name(), ") ", + "output is expected to be of static rank"); + for (size_t i = 0; i < outputShape.rank().get_length(); i++) { + outputShape[i] = outputShape[i].get_max_length(); } } + NODE_VALIDATION_CHECK(this, outputShape.is_static(), + "StaticShapeTopK (", get_friendly_name(), ") can't evaluate output shape"); - output_shape[m_normalized_axis] = m_maximumK; - - NODE_VALIDATION_CHECK(this, output_shape.is_static(), - "StaticShapeTopK output shape is not fully defined: ", output_shape); - - set_output_size(2); - set_output_type(0, get_input_element_type(0), output_shape); - set_output_type(1, m_index_element_type, output_shape); -} - -void ngraph::vpu::op::StaticShapeTopK::set_axis(const int64_t axis) { - const auto input_rank = get_input_partial_shape(0).rank(); - if (input_rank.is_static()) { - m_normalized_axis = ngraph::normalize_axis(this->description(), axis, input_rank); - } else { - m_normalized_axis = UNKNOWN_NORMALIZED_AXIS; - } - m_axis = axis; -} - -uint64_t ngraph::vpu::op::StaticShapeTopK::get_axis() const { - NODE_VALIDATION_CHECK( - this, m_normalized_axis != UNKNOWN_NORMALIZED_AXIS, "Normalized axis of TopK is unknown"); - - return m_normalized_axis; + set_output_type(0, get_input_element_type(0), outputShape); + set_output_type(1, m_index_element_type, outputShape); } - -bool ngraph::vpu::op::StaticShapeTopK::visit_attributes(AttributeVisitor& visitor) { - visitor.on_attribute("axis", m_axis); - visitor.on_attribute("mode", m_mode); - visitor.on_attribute("sort", m_sort); - visitor.on_attribute("index_element_type", m_index_element_type); - return true; -} \ No newline at end of file +} // namespace op +} // namespace vpu +} // namespace ngraph diff --git a/inference-engine/src/vpu/common/src/ngraph/query_network.cpp b/inference-engine/src/vpu/common/src/ngraph/query_network.cpp index 996c0fd2ec5df1..b2185db28469c2 100644 --- a/inference-engine/src/vpu/common/src/ngraph/query_network.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/query_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.cpp index d328133c16360d..9683fa43a77f41 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp index 5090a8f83e581e..4c5601a32e55ad 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -182,6 +182,11 @@ bool DynamicToStaticShape::run_on_function(std::shared_ptr fun // Operation-specific testing that needs to be performed in dynamic context before DSRs are introduced validateDynamicFunction(*function); + // Make sure all values are invalidated, we need it to correctly evaluate upper-bound + for (auto& node : function->get_ops()) { + node->invalidate_values(); + } + for (const auto& operation : function->get_ordered_ops()) { if (!isDynamic(*operation)) { continue; diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp index 2f4d3c6c3f8ffb..ea7ed82840bad6 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp index 886c8938745860..badfa940d614d2 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_concat.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_concat.cpp index ecab8ec2a77256..9b0d9fdd688a3d 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_concat.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather.cpp index 8a84089696d960..51054788a1dedb 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp index e2657a6025aa58..f7ba38537598b2 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp index 81c6d61c3035f7..fe605898fa68a4 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_loop.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_loop.cpp index 94f6a15082c286..2e5990bb0fa94a 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_loop.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_loop.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_matmul.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_matmul.cpp index c4160629d64a96..7639f60123e970 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_matmul.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_matmul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp index 4825eb8f2f7d19..7bc9e34587cdd9 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp index 2cb3449d35aeb5..981863664b69ac 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reduce.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reduce.cpp index 71db9425846b55..4ddd9b1a65b0d9 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reduce.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reshape.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reshape.cpp index 98c2bc076726d7..03e46b57eb8ff0 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reshape.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_roialign.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_roialign.cpp index 30624e4041df21..61f54bb3a26301 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_roialign.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_roialign.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_split.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_split.cpp index 0b06b9033cdd6e..85191f253962ed 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_split.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp index 972ced23462495..e76e7f2419aca2 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_strided_slice.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_strided_slice.cpp index a7823dcfb61ad7..c4ba9ef925e287 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_strided_slice.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_topk.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_topk.cpp index 0f0be4a167a737..03a75be6c754b4 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_topk.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_transpose.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_transpose.cpp index 22a433b4e2a7d1..d7b1bb748380af 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_transpose.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp index 5d92259dc6872c..e71cf06008c3ed 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp index 244f88353dc8e0..f6584656988e60 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp index 1ca17a6a86493d..c718b24729c0b4 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/eliminate_shapeof_after_dsr.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/eliminate_shapeof_after_dsr.cpp index 81f864f1097925..9e4cf0208c9138 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/eliminate_shapeof_after_dsr.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/eliminate_shapeof_after_dsr.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.cpp index 0a21d0ba95f802..e277a4d4e39d21 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/batch_extraction_configuration.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.cpp index 5e876c3f80be3f..17be9cc751168f 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/extract_dynamic_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -50,6 +50,7 @@ class Slicers { {ngraph::opset5::Maximum::type_info, sliceBinaryEltwise}, {ngraph::opset5::Relu::type_info, sliceUnaryEltwise}, + {ngraph::opset5::Clamp::type_info, sliceUnaryEltwise}, }; return slicers; } diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.cpp index a5e87ded47ba4c..b0300ae546f826 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_binary_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_convolution.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_convolution.cpp index a2ab099f2cfb75..f8f94de0026bdc 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_convolution.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.cpp index 0ef91da946075f..44c1e1b11e1951 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.cpp index 9b1e881a53f7e7..6ef83ce2b38eac 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include "vpu/utils/error.hpp" #include "vpu/ngraph/transformations/extract_dynamic_batch/slice_unary_eltwise.hpp" diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/merge_gather_gather_elements.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/merge_gather_gather_elements.cpp index 87a5f29f540678..063ea9f406e083 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/merge_gather_gather_elements.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/merge_gather_gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/merge_subsequent_dsr_operations.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/merge_subsequent_dsr_operations.cpp index 6fe20ab22e6c81..c562cc196c484f 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/merge_subsequent_dsr_operations.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/merge_subsequent_dsr_operations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,9 +20,16 @@ MergeSubsequentDSROperations::MergeSubsequentDSROperations() { if (!predecessor) { return false; } - - dsr->input(0).replace_source_output(predecessor->input_value(0)); - return false; + // this will create a new DSR with correct inputs + auto newDsr = dsr->copy_with_new_inputs({predecessor->input_value(0), dsr->input_value(1)}); + newDsr->set_friendly_name(dsr->get_friendly_name()); + // replace DSR2 with new so DSR2 will lose all consumers so it will die after pass execution + replace_node(dsr, newDsr); + // reconnect all DSR1 consumers even with DSR2 which will be destructed so this is no more an issue + for (auto &consumer : predecessor->get_output_target_inputs(0)) { + consumer.replace_source_output(newDsr); + } + return true; }; const auto& label = std::make_shared( diff --git a/inference-engine/src/vpu/common/src/ngraph/utilities.cpp b/inference-engine/src/vpu/common/src/ngraph/utilities.cpp index dc9e99f3e539f9..47afb6a83a6a58 100644 --- a/inference-engine/src/vpu/common/src/ngraph/utilities.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/utilities.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,66 +11,6 @@ #include namespace vpu { -namespace { - -ngraph::HostTensorVector evaluateShapeOf(ngraph::Node* node, const ngraph::HostTensorVector&) { - auto shapeOf = ngraph::as_type(node); - const auto inputValue = shapeOf->input_value(0); - const auto outputValue = shapeOf->output(0); - const auto inputTensors = - ngraph::HostTensorVector{std::make_shared(inputValue)}; - const auto outputTensors = - ngraph::HostTensorVector{std::make_shared(outputValue)}; - - shapeOf->evaluate(outputTensors, inputTensors); - return outputTensors; -} - -ngraph::HostTensorVector evaluateConstant(ngraph::Node* node, const ngraph::HostTensorVector&) { - const auto constantNode = ngraph::as_type(node); - const auto constant = std::make_shared(*constantNode); - - const auto outputTensor = std::make_shared(constant); - - return {outputTensor}; -} - -ngraph::HostTensorVector evaluateOp(ngraph::Node* node, const ngraph::HostTensorVector& inputTensors) { - ngraph::HostTensorVector outputTensors; - for (const auto& output : node->outputs()) { - outputTensors.push_back(std::make_shared(output)); - } - - node->evaluate(outputTensors, inputTensors); - return outputTensors; -} - -} // namespace - -std::vector evaluateTargetShape(const ngraph::Output& value) { - static ngraph::Evaluator::op_handler_map handlers = { - {ngraph::opset3::ShapeOf::type_info, evaluateShapeOf}, - {ngraph::opset3::Constant::type_info, evaluateConstant}, - {ngraph::opset3::Gather::type_info, evaluateOp}, - {ngraph::opset3::Concat::type_info, evaluateOp}, - {ngraph::opset3::Reshape::type_info, evaluateOp}, - {ngraph::opset3::Multiply::type_info, evaluateOp}, - {ngraph::opset3::Squeeze::type_info, evaluateOp}, - {ngraph::opset5::Unsqueeze::type_info, evaluateOp}, - {ngraph::opset5::Equal::type_info, evaluateOp}, - {ngraph::opset5::Select::type_info, evaluateOp}, - }; - ngraph::Evaluator::value_map value_map; - ngraph::Evaluator evaluator(handlers, value_map); - - const auto shapeTensor = evaluator.evaluate(value); - if (!shapeTensor || !shapeTensor->get_is_allocated()) { - return {}; - } - - const auto shapeConstNode = std::make_shared(shapeTensor); - return {shapeConstNode->cast_vector()}; -} std::shared_ptr shapeToConstant(const ngraph::element::Type& type, const ngraph::Shape& shape) { return ngraph::opset5::Constant::create(type, {shape.size()}, shape); @@ -93,4 +33,37 @@ std::shared_ptr gatherShapeElements(const ngraph::Output& node, ngraph::element::Type to, size_t idx) { + if (auto nms = ngraph::as_type_ptr(node)) { + nms->set_output_type(to); + return true; + } + return false; +} + +bool fuseTypeToStaticShapeNonZero(const std::shared_ptr& node, ngraph::element::Type to, size_t idx) { + if (auto nz = ngraph::as_type_ptr(node)) { + nz->set_output_type(to); + return true; + } + return false; +} + +bool fuseTypeToStaticShapeTopK(const std::shared_ptr& node, ngraph::element::Type to, size_t idx) { + if (auto topk = ngraph::as_type_ptr(node)) { + if (idx == 1 && (to == ngraph::element::i32 || to == ngraph::element::i64)) { + topk->set_index_element_type(to); + return true; + } + } + return false; +} + +bool fuseTypeToOutShapeOfReshape(const std::shared_ptr& node, ngraph::element::Type to, size_t idx) { + if (auto osr = ngraph::as_type_ptr(node)) { + osr->set_output_type(to); + return true; + } + return false; +} +} // namespace vpu diff --git a/inference-engine/src/vpu/common/src/parsed_config_base.cpp b/inference-engine/src/vpu/common/src/parsed_config_base.cpp index 41c3170bebd1b1..93990e9aab8178 100644 --- a/inference-engine/src/vpu/common/src/parsed_config_base.cpp +++ b/inference-engine/src/vpu/common/src/parsed_config_base.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -41,8 +41,7 @@ void ParsedConfigBase::update( const bool isDeprecatedOption = deprecatedOptions.count(entry.first) != 0; if (!isCompileOption && !isRunTimeOption) { - THROW_IE_EXCEPTION - << NOT_FOUND_str << entry.first + IE_THROW(NotFound) << entry.first << " key is not supported for VPU"; } diff --git a/inference-engine/src/vpu/common/src/utils/dot_io.cpp b/inference-engine/src/vpu/common/src/utils/dot_io.cpp index 21b02c89ee4fc4..ed54124b8bb3f6 100644 --- a/inference-engine/src/vpu/common/src/utils/dot_io.cpp +++ b/inference-engine/src/vpu/common/src/utils/dot_io.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/utils/enums.cpp b/inference-engine/src/vpu/common/src/utils/enums.cpp index 9042a9c2eb2d30..5b96a6b9cb2ea7 100644 --- a/inference-engine/src/vpu/common/src/utils/enums.cpp +++ b/inference-engine/src/vpu/common/src/utils/enums.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,6 +12,8 @@ #include #include +#include + namespace vpu { namespace { diff --git a/inference-engine/src/vpu/common/src/utils/file_system.cpp b/inference-engine/src/vpu/common/src/utils/file_system.cpp index 53ce16fd5075ad..57cc7467c7e7b0 100644 --- a/inference-engine/src/vpu/common/src/utils/file_system.cpp +++ b/inference-engine/src/vpu/common/src/utils/file_system.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/utils/ie_helpers.cpp b/inference-engine/src/vpu/common/src/utils/ie_helpers.cpp index da471bd207e298..70c9438839ff1e 100644 --- a/inference-engine/src/vpu/common/src/utils/ie_helpers.cpp +++ b/inference-engine/src/vpu/common/src/utils/ie_helpers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,6 @@ #include #include -#include
#include #include diff --git a/inference-engine/src/vpu/common/src/utils/io.cpp b/inference-engine/src/vpu/common/src/utils/io.cpp index ecfb026350d2ab..dcaa8043d1ac87 100644 --- a/inference-engine/src/vpu/common/src/utils/io.cpp +++ b/inference-engine/src/vpu/common/src/utils/io.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/utils/logger.cpp b/inference-engine/src/vpu/common/src/utils/logger.cpp index be032a75aa100c..064e300d8139db 100644 --- a/inference-engine/src/vpu/common/src/utils/logger.cpp +++ b/inference-engine/src/vpu/common/src/utils/logger.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/utils/perf_report.cpp b/inference-engine/src/vpu/common/src/utils/perf_report.cpp index b1a5c618730720..32ab48c39f9799 100644 --- a/inference-engine/src/vpu/common/src/utils/perf_report.cpp +++ b/inference-engine/src/vpu/common/src/utils/perf_report.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/common/src/utils/simple_math.cpp b/inference-engine/src/vpu/common/src/utils/simple_math.cpp index 8e2a62bc759220..28de20e91b7c4d 100644 --- a/inference-engine/src/vpu/common/src/utils/simple_math.cpp +++ b/inference-engine/src/vpu/common/src/utils/simple_math.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/CMakeLists.txt b/inference-engine/src/vpu/graph_transformer/CMakeLists.txt index 97bd4caa976d91..4eb0cfcaeee738 100644 --- a/inference-engine/src/vpu/graph_transformer/CMakeLists.txt +++ b/inference-engine/src/vpu/graph_transformer/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/backend/backend.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/backend/backend.hpp index df0d086f94b1f0..5fa54bd478c324 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/backend/backend.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/backend/backend.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_format.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_format.hpp index 84a7ad02fe4df0..2a7f72adb3231c 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_format.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_format.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_serializer.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_serializer.hpp index 49667810f673c4..e55d8d6fde0f92 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_serializer.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/backend/blob_serializer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/blob_reader.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/blob_reader.hpp index 53dc4dca60701f..fc4a4bca4b64ed 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/blob_reader.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/blob_reader.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/compile_env.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/compile_env.hpp index d9ae6f24e3111b..157b13a0b59b03 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/compile_env.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/compile_env.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadata.h b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadata.h index f6d0645a43d5cc..91c24470a5036d 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadata.h +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadata.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadataParser.h b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadataParser.h index 51b7800a4bc4dc..807078c0d28ffb 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadataParser.h +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ShaveElfMetadataParser.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_kernel.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_kernel.hpp index fd5e33984bed75..53a2315859a579 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_kernel.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_kernel.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_layer.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_layer.hpp index d337a1556bd0f4..63890855268bc3 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_layer.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/custom_layer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp index b43d6ce12ea08f..4accc6ce6aaa79 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ie_parsed_network.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ie_parsed_network.hpp index f888576f6207ac..ab0b0034bc426f 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ie_parsed_network.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/ie_parsed_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer.hpp index 5e84460eaee2d7..892e6f3c3c5387 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -112,6 +112,7 @@ struct CompilationConfig final { bool forcePureTensorIterator = false; bool enableMemoryTypesAnnotation = false; bool enableWeightsAnalysis = true; + bool checkPreprocessingInsideModel = true; bool enableCustomReshapeParam = false; // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer_internal.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer_internal.hpp index d42f6184094f5f..141512bd40cecc 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer_internal.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/allocator.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/allocator.hpp index 0b4afd90ee6502..f6ef6376dde635 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/allocator.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/shaves.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/shaves.hpp index 5fff1f7607d93b..c951c5ff5eddda 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/shaves.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/shaves.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/structs.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/structs.hpp index cb82372d9240b9..0883e0ae5da54a 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/structs.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/allocator/structs.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_convolution_tiler.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_convolution_tiler.hpp index 0ebce649261c0f..ec05b0f34423a9 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_convolution_tiler.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_convolution_tiler.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_stage_tiler.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_stage_tiler.hpp index 4d74efe3f47b3b..a738fda6ff8e60 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_stage_tiler.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/conv_tiling/hw_stage_tiler.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_pooling_tiler.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_pooling_tiler.hpp index 8a4d59b001d55f..79558ee2feafda 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_pooling_tiler.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_pooling_tiler.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_stage_tiler.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_stage_tiler.hpp index f55ca219faf2d6..08c765b9258b0e 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_stage_tiler.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/pooling_tiling/hw_stage_tiler.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/tiling.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/tiling.hpp index 63e3e6ad2a934b..7e4315da8a1ed8 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/tiling.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/tiling.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/utility.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/utility.hpp index 947128354bdea6..ec7cd057f814da 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/utility.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/hw/utility.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/pass_manager.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/pass_manager.hpp index 788acee5b36d65..cb82fd81a39caf 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/pass_manager.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/pass_manager.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/special_stage_processor.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/special_stage_processor.hpp index 96dfeb84b51aa0..ddd6153df2277b 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/special_stage_processor.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/special_stage_processor.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/sw/utility.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/sw/utility.hpp index 3965a8b7255d59..472c67435fa8af 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/sw/utility.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/middleend/sw/utility.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/base.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/base.hpp index 87d4284e9c6262..4b2c75f49a381f 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/base.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data.hpp index 64b44d4832f98a..1a3e6701b5fce6 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -126,8 +126,6 @@ class DataNode final : VPU_MODEL_ATTRIBUTE(StageOutput, producerEdge, nullptr) VPU_MODEL_ATTRIBUTE_PTR_RANGE(StageInputList, consumerEdges) - VPU_MODEL_ATTRIBUTE_PTR_RANGE(StageDependencyList, dependentStagesEdges) - VPU_MODEL_ATTRIBUTE(StageTempBuffer, tempBufferEdge, nullptr) /** @@ -282,7 +280,6 @@ class DataNode final : private: inline DataNode() : _consumerEdges(&StageInputEdge::_posInData), - _dependentStagesEdges(&StageDependencyEdge::_posInData), _childDataToDataEdges(&DataToDataAllocationEdge::_posInData), _childDataToShapeEdges(&DataToShapeAllocationEdge::_posInData), _posInModel(this) { diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/batch_norm_contents.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/batch_norm_contents.hpp index f5a474efc66000..759f69f882f42e 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/batch_norm_contents.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/batch_norm_contents.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/calculated_data_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/calculated_data_content.hpp index 4e6d89dd751900..2e15b214355a96 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/calculated_data_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/calculated_data_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/conv_weights_contents.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/conv_weights_contents.hpp index 162f5ae236e09e..b6360c455419d4 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/conv_weights_contents.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/conv_weights_contents.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/data_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/data_content.hpp index ae2a74ffc08ab2..4ae20bea07c3a8 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/data_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/data_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,7 +6,6 @@ #include -#include
#include #include diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/deconvolution_contents.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/deconvolution_contents.hpp index 321cb2a6630972..e0f6e81f912ed9 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/deconvolution_contents.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/deconvolution_contents.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/default_sw_weights_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/default_sw_weights_content.hpp index 5aee9b9b7134d5..af1e755a1064ba 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/default_sw_weights_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/default_sw_weights_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_const_data_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_const_data_content.hpp index 3452c61e631bb2..af77502700f97e 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_const_data_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_const_data_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_weights_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_weights_content.hpp index 1f16c19acc5b70..b8e5f2d6333251 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_weights_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/hw_weights_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/ie_blob_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/ie_blob_content.hpp index ea49e17adcf31d..2267437085819f 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/ie_blob_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/ie_blob_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/kernel_binary_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/kernel_binary_content.hpp index b696f931f264f6..46c30051d38bf4 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/kernel_binary_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/kernel_binary_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mean_contents.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mean_contents.hpp index ded2dd18e29c48..40b2c7362b4a94 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mean_contents.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mean_contents.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/merge_fc_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/merge_fc_content.hpp index 7018a47699a870..740fd6dadd1dd4 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/merge_fc_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/merge_fc_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mtcnn_blob_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mtcnn_blob_content.hpp index 625aa5875d1f1f..b7be22286a8c44 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mtcnn_blob_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/mtcnn_blob_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/prelu_blob_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/prelu_blob_content.hpp index 4cc985e30fe3cd..1a1c7419c98c29 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/prelu_blob_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/prelu_blob_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/priorbox_contents.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/priorbox_contents.hpp index f28179ab583ccd..80914e3dc494b9 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/priorbox_contents.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/priorbox_contents.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/replicated_data_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/replicated_data_content.hpp index a6ed7de43aca85..19977e3f525912 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/replicated_data_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/replicated_data_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/scaled_content.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/scaled_content.hpp index 56cd31486caeb6..60e6486e47e845 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/scaled_content.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_contents/scaled_content.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_desc.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_desc.hpp index f713faecb0c73f..561fa5ce4daea0 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_desc.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/data_desc.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/edges.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/edges.hpp index 17b8be62c0411f..7e832971c3a512 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/edges.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/edges.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -37,28 +37,6 @@ class StageInputEdge final : friend DataNode; }; -// -// StageDependencyEdge defines that some data should be calculated before the stage starts -// but this data is not an input for the stage, e.g. this data is used as a shape for stage output. -// - -class StageDependencyEdge final : - public EnableHandle, - public EnableCustomAttributes { -VPU_MODEL_ATTRIBUTE(Data, dependency, nullptr) -VPU_MODEL_ATTRIBUTE(Stage, dependentStage, nullptr) - -private: - StageDependencyEdge() : _posInData(this) {} - -private: - StageDependencyPtrList::iterator _ptrPosInModel; - StageDependencyListNode _posInData; - - friend ModelObj; - friend DataNode; -}; - // // StageOutputEdge // @@ -209,6 +187,7 @@ class InjectionEdge final : VPU_MODEL_ATTRIBUTE(Stage, parent, nullptr) VPU_MODEL_ATTRIBUTE(StagePtr, child, nullptr) VPU_MODEL_ATTRIBUTE(int, portInd, -1) + VPU_MODEL_ATTRIBUTE(StageDependencyVector, injectedStageDependencies, {}) private: InjectionEdge() : _posInStage(this) {} @@ -222,4 +201,25 @@ class InjectionEdge final : friend StageNode; }; +// +// StageDependencyEdge defines that some stage should be executed before other +// + +class StageDependencyEdge final : + public EnableHandle, + public EnableCustomAttributes { + VPU_MODEL_ATTRIBUTE(Stage, parent, nullptr) + VPU_MODEL_ATTRIBUTE(Stage, child, nullptr) + +private: + StageDependencyEdge() : _posInStage(this) {} + +private: + StageDependencyPtrList::iterator _ptrPosInModel; + StageDependencyListNode _posInStage; + + friend ModelObj; + friend StageNode; +}; + } // namespace vpu diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/model.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/model.hpp index 4fcf8caad84cd4..4b6b85c49d56c2 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/model.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/model.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -139,8 +139,8 @@ class ModelObj final : const Data& data); StageDependency addStageDependency( - const Stage& stage, - const Data& data); + const Stage& parent, + const Stage& child); StageTempBuffer addTempBuffer( const Stage& stage, @@ -158,16 +158,16 @@ class ModelObj final : const StageOutput& edge, const Data& newOutput); - void replaceStageDependency( + void replaceStageDependencyParent( const StageDependency& edge, - const Data& newDependency); + const Stage& newParent); - void replaceDependentStage( + void replaceStageDependencyChild( const StageDependency& edge, - const Stage& newDependentStage); + const Stage& newChild); void removeStageDependency(const StageDependency& edge); - void removeStageDependency(const Stage& stage, const Data& dependency); + void removeStageDependency(const Stage& parent, const Stage& child); // // Stage <-> Stage edges diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp index c7bb3e2e5eff01..7d0f7dd4659840 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -411,6 +411,9 @@ class StageNode : VPU_MODEL_ATTRIBUTE_PTR_RANGE(StageTempBufferVector, tempBufferEdges) + VPU_MODEL_ATTRIBUTE_PTR_RANGE(StageDependencyVector, parentDependencyEdges) + VPU_MODEL_ATTRIBUTE_PTR_RANGE(StageDependencyVector, childDependencyEdges) + VPU_MODEL_ATTRIBUTE(Injection, parentStageEdge, nullptr) VPU_MODEL_ATTRIBUTE(Injection, injectedStageEdge, nullptr) diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/parsed_config.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/parsed_config.hpp index 3e6f5943c07bac..d220cda3c3ba56 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/parsed_config.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/parsed_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/private_plugin_config.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/private_plugin_config.hpp index 8fca076c6b3950..7a209f036d371f 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/private_plugin_config.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/private_plugin_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,6 +44,15 @@ DECLARE_VPU_CONFIG(MYRIAD_ENABLE_EARLY_ELTWISE_RELU_FUSION); */ DECLARE_VPU_CONFIG(MYRIAD_ENABLE_WEIGHTS_ANALYSIS); +/** + * @brief MyriadPlugin uses heuristic algorithm to avoid accuracy degradations. + * This algorithm tries to find the preprocessing at the beginning of the model to adjust its parameters. + * This option should be set to "NO" if preprocessing is not a part of the model and performed separately + * in order to avoid accuracy degradation. + * Default is "YES" + */ +DECLARE_VPU_CONFIG(MYRIAD_CHECK_PREPROCESSING_INSIDE_MODEL); + /** * @brief Used to enable reshapeBeforeConvTiling pass in cases where * user have reshape parameter "alt_width" in IR. @@ -118,6 +127,8 @@ DECLARE_VPU_CONFIG(MYRIAD_PLUGIN_LOG_FILE_PATH); DECLARE_VPU_CONFIG(MYRIAD_DEVICE_CONNECT_TIMEOUT); +DECLARE_VPU_CONFIG(MYRIAD_ENABLE_ASYNC_DMA); + namespace VPUConfigParams { IE_SUPPRESS_DEPRECATED_START diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/stage_builder.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/stage_builder.hpp index 1537d9e9db185f..a77a20a8accbf9 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/stage_builder.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/stage_builder.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/interpolate_stages.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/interpolate_stages.hpp index f349bd3ba29e68..10361be458fc10 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/interpolate_stages.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/interpolate_stages.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/mx_stage.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/mx_stage.hpp index 86fdb4e260b641..07639e93b7489f 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/mx_stage.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/mx_stage.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/post_op_stage.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/post_op_stage.hpp index ca10f2a7f43bc9..dfc76052986289 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/post_op_stage.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/post_op_stage.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/stub_stage.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/stub_stage.hpp index 28e5d556c1dd59..f9501378ebd5b6 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/stages/stub_stage.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/stages/stub_stage.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/utils/profiling.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/utils/profiling.hpp index 04217b1e35857c..752a11edd43599 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/utils/profiling.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/utils/profiling.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/utils/runtime_graph.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/utils/runtime_graph.hpp index 0f7fb47408acea..0c80a6ca51c794 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/utils/runtime_graph.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/utils/runtime_graph.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/utils/shape_io.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/utils/shape_io.hpp index e0315feba28a77..6551a01559f6ec 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/utils/shape_io.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/utils/shape_io.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/backend/backend.cpp b/inference-engine/src/vpu/graph_transformer/src/backend/backend.cpp index a76a736d55d3c3..fdb632993b6f6b 100644 --- a/inference-engine/src/vpu/graph_transformer/src/backend/backend.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/backend/backend.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/backend/dump_to_dot.cpp b/inference-engine/src/vpu/graph_transformer/src/backend/dump_to_dot.cpp index 58210853ec47c1..3d5103338f93f0 100644 --- a/inference-engine/src/vpu/graph_transformer/src/backend/dump_to_dot.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/backend/dump_to_dot.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -310,22 +310,6 @@ void BackEnd::dumpModelToDot( } } - // - // Dump Data->Stage edges - // - - for (const auto& data : model->datas()) { - for (const auto& dependentStageEdge : data->dependentStagesEdges()) { - out.append("%s -> %s [", dataDotName(data), stageDotName(dependentStageEdge->dependentStage())); - { - VPU_DOT_IDENT(out); - - DotLabel lbl("Extra dependency", out); - } - out.append("];"); - } - } - // // Dump Data<->Data edges // @@ -395,6 +379,16 @@ void BackEnd::dumpModelToDot( } out.append("}"); } + + for (const auto& stageDependencyEdge : stage->childDependencyEdges()) { + out.append("%s -> %s [", stageDotName(stage), stageDotName(stageDependencyEdge->child())); + { + VPU_DOT_IDENT(out); + + DotLabel lbl("Extra dependency", out); + } + out.append("];"); + } } } out.append("}"); diff --git a/inference-engine/src/vpu/graph_transformer/src/backend/get_meta_data.cpp b/inference-engine/src/vpu/graph_transformer/src/backend/get_meta_data.cpp index 118b6b7452961c..bc4704c65bbc52 100644 --- a/inference-engine/src/vpu/graph_transformer/src/backend/get_meta_data.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/backend/get_meta_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/backend/serialize.cpp b/inference-engine/src/vpu/graph_transformer/src/backend/serialize.cpp index 5a96d348a24176..794937214c71fe 100644 --- a/inference-engine/src/vpu/graph_transformer/src/backend/serialize.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/backend/serialize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/blob_reader.cpp b/inference-engine/src/vpu/graph_transformer/src/blob_reader.cpp index 03dc2f9489417e..fe57214b3ba825 100644 --- a/inference-engine/src/vpu/graph_transformer/src/blob_reader.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/blob_reader.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/ShaveElfMetadataParser.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/ShaveElfMetadataParser.cpp index ba09f37fa3f601..4cb10932e10849 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/ShaveElfMetadataParser.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/ShaveElfMetadataParser.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/custom_kernel.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/custom_kernel.cpp index 3bc0082f76b673..cc7cadedc3c1b2 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/custom_kernel.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/custom_kernel.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -189,7 +189,7 @@ uint32_t getKernelEntry(const char* ELFData, const std::string& kernelName) { } } - THROW_IE_EXCEPTION << "Cannot find kernel entry point for custom kernel " << kernelName; + IE_THROW() << "Cannot find kernel entry point for custom kernel " << kernelName; } CustomKernel::CustomKernel(const pugi::xml_node& kernel, std::string configDir): _configDir {std::move(configDir)} { @@ -201,7 +201,7 @@ CustomKernel::CustomKernel(const pugi::xml_node& kernel, std::string configDir): std::ifstream inputFile(fileName, std::ios::binary); if (!inputFile.is_open()) { - THROW_IE_EXCEPTION << "Couldn't open kernel file " << fileName; + IE_THROW() << "Couldn't open kernel file " << fileName; } std::ostringstream contentStream; @@ -256,7 +256,7 @@ std::pair parseDimSource(const std::string& dims) { } else if (cmp(source, "output")) { return CustomDimSource::Output; } else { - THROW_IE_EXCEPTION << "Invalid dim source argument" << source; + IE_THROW() << "Invalid dim source argument" << source; } }(); @@ -287,7 +287,7 @@ CustomDataFormat formatFromString(const std::string& str) { return it->second; } - THROW_IE_EXCEPTION << "Tensor node has an invalid format '" << str << "'"; + IE_THROW() << "Tensor node has an invalid format '" << str << "'"; } SmallVector parseSizeRule(const std::string& size) { @@ -322,7 +322,7 @@ void CustomKernel::processParametersNode(const pugi::xml_node& node) { } else if (cmp(typeStr, "data")) { kp.type = CustomParamType::Data; } else { - THROW_IE_EXCEPTION << "Tensor node has an invalid type '" << typeStr << "'"; + IE_THROW() << "Tensor node has an invalid type '" << typeStr << "'"; } if (kp.type == CustomParamType::InputBuffer || kp.type == CustomParamType::OutputBuffer) { @@ -349,7 +349,7 @@ void CustomKernel::processParametersNode(const pugi::xml_node& node) { } else if (cmp(typeStr, "local_data")) { kp.type = CustomParamType::LocalData; } else { - THROW_IE_EXCEPTION << "Data node has an invalid type '" << typeStr << "'"; + IE_THROW() << "Data node has an invalid type '" << typeStr << "'"; } kp.argName = XMLParseUtils::GetStrAttr(data, "arg-name"); @@ -358,11 +358,11 @@ void CustomKernel::processParametersNode(const pugi::xml_node& node) { const auto dimString = XMLParseUtils::GetStrAttr(data, "dim", ""); if (kp.irSource.empty() && dimString.empty()) { - THROW_IE_EXCEPTION << "Data node has no source or dim"; + IE_THROW() << "Data node has no source or dim"; } if (!kp.irSource.empty() && !dimString.empty()) { - THROW_IE_EXCEPTION << "Data node can only have source or dim"; + IE_THROW() << "Data node can only have source or dim"; } if (kp.type == CustomParamType::LocalData) { @@ -386,7 +386,7 @@ void CustomKernel::processParametersNode(const pugi::xml_node& node) { } else if (cmp(type, "float")) { kp.type = CustomParamType::Float; } else { - THROW_IE_EXCEPTION << "Scalar node has an invalid type " << type; + IE_THROW() << "Scalar node has an invalid type " << type; } kp.argName = XMLParseUtils::GetStrAttr(scalar, "arg-name"); diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/custom_layer.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/custom_layer.cpp index 82d237b1cdb365..996c0e732be40a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/custom_layer.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/custom_layer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/detect_network_batch.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/detect_network_batch.cpp index c95f54e869f696..cd0037a4640497 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/detect_network_batch.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/detect_network_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp index 5df45e7c23a643..91e9be21adb617 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -31,6 +32,8 @@ #include #include #include +#include +#include #include #include #include @@ -40,6 +43,7 @@ #include "vpu/ngraph/transformations/dynamic_to_static_shape.hpp" #include "vpu/ngraph/transformations/eliminate_shapeof_after_dsr.hpp" #include +#include #include #include #include @@ -47,9 +51,7 @@ #include #include #include - namespace vpu { - FrontEnd::FrontEnd(StageBuilder::Ptr stageBuilder, const ie::ICore* core) : _stageBuilder(std::move(stageBuilder)), _core(core), @@ -175,18 +177,29 @@ ie::CNNNetwork FrontEnd::convertNetwork(ie::CNNNetwork& network) { manager.register_pass(); manager.register_pass(); - manager.register_pass(std::unordered_set{ + manager.register_pass(std::unordered_set { ngraph::opset5::MatMul::type_info, ngraph::opset5::Convolution::type_info, ngraph::opset5::GroupConvolution::type_info }); - manager.register_pass(); manager.register_pass(); manager.register_pass(); + // ConstantFolding placed here to avoid precision type missmatch when we try to evaluate nodes with BOOL output. + // For example evaluate_greater_equal calls set_broadcast function with hardcoded BOOL precision. + // In set_broadcast function we compare original node's precision with hardcoded so we get an error if we change precision before. + manager.register_pass(); manager.register_pass(); manager.register_pass(); + // ConvertPrecision must be executed before ConvertOpSet1ToLegacy due to this pass works with operations from opsets only + manager.register_pass(ngraph::element::i64, ngraph::element::i32, myriadTypeToFuseMap); + manager.register_pass(ngraph::element::u64, ngraph::element::i32, myriadTypeToFuseMap); + manager.register_pass(ngraph::element::u32, ngraph::element::i32, myriadTypeToFuseMap); + manager.register_pass(ngraph::element::boolean, ngraph::element::i32, myriadTypeToFuseMap); + manager.register_pass(); + // ConvertOpSet1ToLegacy can produce constants with I64 precision + manager.register_pass(ngraph::element::i64, ngraph::element::i32, myriadTypeToFuseMap); manager.register_pass(); auto pass_config = manager.get_pass_config(); @@ -196,6 +209,7 @@ ie::CNNNetwork FrontEnd::convertNetwork(ie::CNNNetwork& network) { pass_config->disable(); pass_config->disable(); pass_config->disable(); + pass_config->disable(); auto transformationPredicate = [](const std::shared_ptr& node) -> bool { return !!std::dynamic_pointer_cast(node->input_value(0).get_node_shared_ptr()); @@ -204,7 +218,6 @@ ie::CNNNetwork FrontEnd::convertNetwork(ie::CNNNetwork& network) { ngraph::pass::ConvertStridedSliceToCropMatcher>(transformationPredicate); manager.run_passes(nGraphFunc); - return ie::CNNNetwork(ie::details::convertFunctionToICNNNetwork(nGraphFunc, network)); } @@ -486,11 +499,20 @@ ModelPtr FrontEnd::runCommonPasses(ie::CNNNetwork network, network = convertNetwork(network); } - ie::NetPass::ConvertPrecision(network, ie::Precision::I64, ie::Precision::I32); - ie::NetPass::ConvertPrecision(network, ie::Precision::U32, ie::Precision::I32); - ie::NetPass::ConvertPrecision(network, ie::Precision::U64, ie::Precision::I32); - ie::NetPass::ConvertPrecision(network, ie::Precision::BOOL, ie::Precision::I32); - + const std::vector> convert_precision_list { + {ngraph::element::i64, ngraph::element::i32}, + {ngraph::element::u64, ngraph::element::i32}, + {ngraph::element::u32, ngraph::element::i32}, + {ngraph::element::boolean, ngraph::element::i32}, + }; + // WA: after conversion to CNNNetwork user precision can redefine input/output precisions + // so we need to apply additional precision conversion but only for inputs and outputs + // This method should be removed #-48878 + for (const auto& precision : convert_precision_list) { + ie::NetPass::ConvertIOPrecision(network, + InferenceEngine::details::convertPrecision(precision.first), + InferenceEngine::details::convertPrecision(precision.second)); + } removeConstLayers(network); unrollLoops(network); diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/ie_parsed_network.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/ie_parsed_network.cpp index 6e61ac431c692c..49ee5f1caaebbb 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/ie_parsed_network.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/ie_parsed_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/in_out_convert.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/in_out_convert.cpp index 679b50255ade09..2684e0947ab69a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/in_out_convert.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/in_out_convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/parse_data.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/parse_data.cpp index e40bca11e25653..00ab79700603cd 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/parse_data.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/parse_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/pre_process.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/pre_process.cpp index eae8759275ecac..1c618f55810870 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/pre_process.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/pre_process.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/remove_const_layers.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/remove_const_layers.cpp index 785be6c301d47d..ae3ab8d1d648f2 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/remove_const_layers.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/remove_const_layers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/unroll_loops.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/unroll_loops.cpp index 9730ee41b73b87..28386c243a289e 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/unroll_loops.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/unroll_loops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/graph_transformer.cpp b/inference-engine/src/vpu/graph_transformer/src/graph_transformer.cpp index ae6e32f96bd54d..644529866ba949 100644 --- a/inference-engine/src/vpu/graph_transformer/src/graph_transformer.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/graph_transformer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/allocator.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/allocator.cpp index 467cfc2f7968d4..e7d81f613ce9e8 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/allocator.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/allocator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -217,8 +217,7 @@ bool Allocator::allocateData(const Data& data) { VPU_INTERNAL_CHECK(data->producerEdge() != nullptr, "Allocation check failed: data {} with usage {} must have producer, but actually it doesn't", data->name(), data->usage()); - VPU_INTERNAL_CHECK(!data->consumers().empty() || !data->childDataToShapeEdges().empty() || - !data->dependentStagesEdges().empty(), + VPU_INTERNAL_CHECK(!data->consumers().empty() || !data->childDataToShapeEdges().empty(), "Allocation check failed: data {} with usage {} must have at least one data/stage " "depending on it, but it doesn't have either", data->name(), data->usage()); diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/shaves.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/shaves.cpp index 135b01dfbe123b..00c0439e9a2f57 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/shaves.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/allocator/shaves.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_convolution_tiler.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_convolution_tiler.cpp index ed8221e655827e..d8c570b68c41c0 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_convolution_tiler.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_convolution_tiler.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_stage_tiler.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_stage_tiler.cpp index 40831e6f725de4..06a191f97248d4 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_stage_tiler.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/conv_tiling/hw_stage_tiler.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_pooling_tiler.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_pooling_tiler.cpp index 01d824db64976d..cb5129f9e3c220 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_pooling_tiler.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_pooling_tiler.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_stage_tiler.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_stage_tiler.cpp index 78449103091e32..fad0af4877cbaa 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_stage_tiler.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/pooling_tiling/hw_stage_tiler.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/tiling.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/tiling.cpp index 66fb431f053df9..03bf35c291726d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/tiling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/tiling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -434,8 +434,8 @@ bool checkHWRestrictions( // widht and small height // More details available with the ticket #-33366 - if (inTileWidth > 507 && inTileHeight > 1 && inTileHeight < 64 && type != HwOpType::POOL) { - return false; + if (inTileWidth > 507 && inTileHeight > 1 && inTileHeight < 64 && type != HwOpType::POOL && inTileChannels != 3) { + return false; } const int chansPerBlock = 1 << static_cast(mode); diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/utility.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/utility.cpp index 8cfbccba8167cc..2764b32d180df5 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/hw/utility.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/hw/utility.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/pass_manager.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/pass_manager.cpp index dafd1c4ebfee18..c40588acb93a81 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/pass_manager.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/pass_manager.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_copy_for_outputs_inside_network.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_copy_for_outputs_inside_network.cpp index a81a93fc8e72b2..7103a5039053a6 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_copy_for_outputs_inside_network.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_copy_for_outputs_inside_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_reorder_inputs_to_channel_minor.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_reorder_inputs_to_channel_minor.cpp index 413f2cf6c37aaf..051d6b1d915c1c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_reorder_inputs_to_channel_minor.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/add_reorder_inputs_to_channel_minor.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_batch.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_batch.cpp index 7ae1ac3f62c291..b934865ff25c3a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_batch.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_layout.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_layout.cpp index 8ac83b39da9a5f..67b3718fb41967 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_layout.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_layout.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_location.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_location.cpp index 32ab852ad01ba3..a0e195bd180f96 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_location.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/adjust_data_location.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/allocate_resources.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/allocate_resources.cpp index 7691f7571cbef9..5edec2b84ab798 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/allocate_resources.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/allocate_resources.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/annotate_memory_types.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/annotate_memory_types.cpp index 8110c43d35f280..9c015eff865202 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/annotate_memory_types.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/annotate_memory_types.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/convert_shape_notation.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/convert_shape_notation.cpp index 212ffca5e9d33d..ef071eb8f1305d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/convert_shape_notation.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/convert_shape_notation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -53,13 +53,14 @@ void PassImpl::run(const Model& model) { DataDesc(DataType::S32, DimsOrder::C, {convertedShape->desc().totalDimSize()}), generator); - _stageBuilder->addGatherStage(model, - shape->name() + "@convert-notation", - nullptr, - shape, - gatherIndices, - convertedShape, - Dim::C); + const auto& gather = _stageBuilder->addGatherStage( + model, + shape->name() + "@convert-notation", + nullptr, + shape, + gatherIndices, + convertedShape, + Dim::C); for (const auto& dataToShapeEdge : shape->childDataToShapeEdges()) { model->replaceDataToShapeParent(dataToShapeEdge, convertedShape); @@ -81,18 +82,18 @@ void PassImpl::run(const Model& model) { continue; } - const auto& dependentStagesEdges = convertedShape->dependentStagesEdges(); + const auto& stageDependencyEdges = gather->childDependencyEdges(); for (const auto& consumer : child->consumers()) { - const auto it = std::find_if(dependentStagesEdges.begin(), dependentStagesEdges.end(), [&consumer](const StageDependency& edge) { - return edge->dependentStage() == consumer; + const auto it = std::find_if(stageDependencyEdges.begin(), stageDependencyEdges.end(), [&consumer](const StageDependency& edge) { + return edge->child() == consumer; }); - if (it != dependentStagesEdges.end()) { + if (it != stageDependencyEdges.end()) { continue; } - model->addStageDependency(consumer, convertedShape); + model->addStageDependency(gather, consumer); } } } diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/count_stages_in_loops.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/count_stages_in_loops.cpp index 65ace379745770..d80c91d1591f24 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/count_stages_in_loops.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/count_stages_in_loops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_const_concat.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_const_concat.cpp index f21c4b4cc6446b..5a2d7f3b3682fd 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_const_concat.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_const_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_copy.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_copy.cpp index 0520154a934fa5..74a42d8a13e6cc 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_copy.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_copy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_redundant_conversions.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_redundant_conversions.cpp index b9b73235106366..abefb1600c95b9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_redundant_conversions.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/eliminate_redundant_conversions.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/final_check.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/final_check.cpp index 097e5f7708aaff..0a9f18785fa10a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/final_check.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/final_check.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/finalize_hw_ops.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/finalize_hw_ops.cpp index 5877acbd62b6b5..f9ab219cb836ec 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/finalize_hw_ops.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/finalize_hw_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/gemm_transpose.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/gemm_transpose.cpp index 643c553756715e..7851c0509d9763 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/gemm_transpose.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/gemm_transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_conv_tiling.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_conv_tiling.cpp index 90a6e6f39fabef..76cf99afec1e88 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_conv_tiling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_conv_tiling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_extra_split.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_extra_split.cpp index 44e7feec9595d0..3dd8b2f896aaad 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_extra_split.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_extra_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_fc_tiling.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_fc_tiling.cpp index 51bb6ae5f42565..1da51ca936fb80 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_fc_tiling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_fc_tiling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_padding.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_padding.cpp index 541586e9c371d5..b1b3619adce4e9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_padding.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_padding.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_pooling_tiling.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_pooling_tiling.cpp index b6837e200fc7be..cea1ab6a6069b0 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_pooling_tiling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/hw_pooling_tiling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/initial_check.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/initial_check.cpp index 576c13d6092e91..3d134582a036ae 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/initial_check.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/initial_check.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/inject_sw.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/inject_sw.cpp index bd440f49a5cfe6..d8827d522d276d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/inject_sw.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/inject_sw.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/mark_fast_stages.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/mark_fast_stages.cpp index 2be1ca76181f65..d5d7965a479b49 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/mark_fast_stages.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/mark_fast_stages.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_eltwise_and_relu.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_eltwise_and_relu.cpp index 21126f388f7b2d..4684cc50ee6691 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_eltwise_and_relu.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_eltwise_and_relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_hw_stages.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_hw_stages.cpp index 88494db60c3b36..5bade8b8bbce8d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_hw_stages.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_hw_stages.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_parallel_fc.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_parallel_fc.cpp index 571c69045a4cd0..dae7d3345de1bb 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_parallel_fc.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_parallel_fc.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_permute_stages.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_permute_stages.cpp index c762cbc641764f..96047b57b4efa7 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_permute_stages.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_permute_stages.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_relu_and_bias.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_relu_and_bias.cpp index ccda7788c6ebb2..5fa812fe335e1c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_relu_and_bias.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/merge_relu_and_bias.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/process_special_stages.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/process_special_stages.cpp index 542586632a8343..5c4f4b4233b0ed 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/process_special_stages.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/process_special_stages.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/propagate_dynamism.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/propagate_dynamism.cpp index 406c1d052bd9e2..df42e9fc0c5e97 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/propagate_dynamism.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/propagate_dynamism.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_deconv_by_conv.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_deconv_by_conv.cpp index 47b2ecf5a150e9..beb1e55cbb84bd 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_deconv_by_conv.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_deconv_by_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_fc_by_conv.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_fc_by_conv.cpp index 8ccf574513901f..ea6f185bd657f6 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_fc_by_conv.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_fc_by_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_gemm_by_conv.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_gemm_by_conv.cpp index a8ffd5137f213f..19bcd5a75fb7be 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_gemm_by_conv.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_gemm_by_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_priorbox_with_const.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_priorbox_with_const.cpp index 1f9875f10d8ec2..0e7871812d788d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_priorbox_with_const.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_priorbox_with_const.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_reduce_mean.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_reduce_mean.cpp index 9e796256d63410..b5689ec2a116f6 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_reduce_mean.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_reduce_mean.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_screlu.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_screlu.cpp index 30200b9cbc0022..008b34be873309 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_screlu.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/replace_with_screlu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_conv.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_conv.cpp index 4da3f487d20046..af9f49aa812fea 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_conv.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_dilation_conv.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_dilation_conv.cpp index cf3c5b2c42977d..5bd1a354716cf9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_dilation_conv.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/reshape_dilation_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_conv3d_into_2d.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_conv3d_into_2d.cpp index b9f3d7cb3c14f2..12031440ddc567 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_conv3d_into_2d.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_conv3d_into_2d.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_grouped_conv.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_grouped_conv.cpp index e748df9313db07..b2d534aa6c493e 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_grouped_conv.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_grouped_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_conv_and_pool.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_conv_and_pool.cpp index c0e808601a6303..78a340f7194b13 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_conv_and_pool.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_conv_and_pool.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_depth_convolution.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_depth_convolution.cpp index 7d93920df3ce76..5ebc3c505d8240 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_depth_convolution.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_hw_depth_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_large_kernel_conv.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_large_kernel_conv.cpp index 0ffdfe9347a58f..da29a53a59957e 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_large_kernel_conv.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_large_kernel_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_pool3d_into_2d.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_pool3d_into_2d.cpp index 8a08230c4336cb..2373fecf5d0fd2 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_pool3d_into_2d.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/split_pool3d_into_2d.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_conv_adaptation.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_conv_adaptation.cpp index 5d3571059f39ee..4d8c91ccd51deb 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_conv_adaptation.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_conv_adaptation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_deconv_adaptation.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_deconv_adaptation.cpp index a8d95531286cef..3ccbed04e45abc 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_deconv_adaptation.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_deconv_adaptation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_fc_adaptation.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_fc_adaptation.cpp index fcbb10db3b5a50..dcfe9b6bf78b7d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_fc_adaptation.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_fc_adaptation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_pooling_adaptation.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_pooling_adaptation.cpp index c75bd71e8bc412..0f945765b24964 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_pooling_adaptation.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/sw_pooling_adaptation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/swap_concat_and_hw_ops.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/swap_concat_and_hw_ops.cpp index c5c19d8df3f2e4..e7d1f208799b57 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/swap_concat_and_hw_ops.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/swap_concat_and_hw_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/uplift_activation_stages.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/uplift_activation_stages.cpp index 72a3d2f3499218..e815220562b7a9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/uplift_activation_stages.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/uplift_activation_stages.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/weights_analysis.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/weights_analysis.cpp index f5fa3d7117eb62..213e06ee1f57c7 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/passes/weights_analysis.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/passes/weights_analysis.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -87,6 +87,11 @@ bool isScalable(const Stage& stage) { } bool checkGrowingOutput(const Model& model) { + const auto& env = CompileEnv::get(); + if (!env.config.checkPreprocessingInsideModel) { + return false; + } + static const float SCALE_THRESHOLD = 0.125f; for (const auto& stage : model->getStages()) { diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/special_stage_processor.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/special_stage_processor.cpp index e1ed4d18608d0c..1f698d817161b0 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/special_stage_processor.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/special_stage_processor.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/middleend/sw/utility.cpp b/inference-engine/src/vpu/graph_transformer/src/middleend/sw/utility.cpp index 645c69d4aaa444..7a9beb75ef260c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/middleend/sw/utility.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/middleend/sw/utility.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data.cpp index 600beaf5379d17..644502ee1ec7a5 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/batch_norm_contents.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/batch_norm_contents.cpp index a927bdf05385de..9a3b5fe4eaf40f 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/batch_norm_contents.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/batch_norm_contents.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/calculated_data_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/calculated_data_content.cpp index 647b22f28e98cd..ea266503528ae3 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/calculated_data_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/calculated_data_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/conv_weights_contents.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/conv_weights_contents.cpp index 6c0eebcbd19c2b..0f0bd88f57b9f4 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/conv_weights_contents.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/conv_weights_contents.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/data_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/data_content.cpp index 4fbe41a4879cff..bf59ce19a98ade 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/data_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/data_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/deconvolution_contents.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/deconvolution_contents.cpp index 0eb443a7e8dc9a..da223652d34ed9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/deconvolution_contents.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/deconvolution_contents.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/default_sw_weights_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/default_sw_weights_content.cpp index 4e43c324ac2270..5875ce00bd4b4b 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/default_sw_weights_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/default_sw_weights_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_const_data_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_const_data_content.cpp index 7cb5f4ed7d96fa..2e9ff03ce07526 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_const_data_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_const_data_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -94,7 +94,7 @@ void HwConstData::fillTempBuf(void* outBuf) const { std::copy(srcData + slice.start, srcData + slice.start + slice.size, dstData); } else { - THROW_IE_EXCEPTION << "Invalid number of dimensions " << _origDesc.numDims(); + IE_THROW() << "Invalid number of dimensions " << _origDesc.numDims(); } } diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_weights_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_weights_content.cpp index 1d5e33c62cd39f..ae31dcf825eaf3 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_weights_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/hw_weights_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/ie_blob_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/ie_blob_content.cpp index 4f61b98afda246..85d24730eda880 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/ie_blob_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/ie_blob_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/kernel_binary_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/kernel_binary_content.cpp index be35e4f5069a71..0434e599189ec7 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/kernel_binary_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/kernel_binary_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mean_contents.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mean_contents.cpp index 0d09472d010563..dda628a5639405 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mean_contents.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mean_contents.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/merge_fc_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/merge_fc_content.cpp index 808aee67fdfdfc..13c4e5828b3f0f 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/merge_fc_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/merge_fc_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mtcnn_blob_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mtcnn_blob_content.cpp index 66558b3ff750c3..66e4f2d9901296 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mtcnn_blob_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/mtcnn_blob_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/prelu_blob_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/prelu_blob_content.cpp index fda51c7b00aab9..4b7817e1dbf3ee 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/prelu_blob_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/prelu_blob_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/priorbox_contents.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/priorbox_contents.cpp index 25397b87b76c5b..9a9f8c6649ca7f 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/priorbox_contents.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/priorbox_contents.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -69,7 +69,7 @@ void PriorBoxContent::fillTempBuf(void* tempBuf) const { _aspect_ratios.push_back(aspect_ratio); if (_flip) { if (isFloatEqual(aspect_ratio, 0.f)) { - THROW_IE_EXCEPTION << "[VPU] PriorBox has 0.0 aspect ratio param in flip mode, " + IE_THROW() << "[VPU] PriorBox has 0.0 aspect ratio param in flip mode, " << " possible division by zero"; } _aspect_ratios.push_back(1.0f / aspect_ratio); @@ -131,7 +131,7 @@ void PriorBoxContent::fillTempBuf(void* tempBuf) const { float box_height = 0.0f; if (_outDesc.dim(Dim::W) != dim || _outDesc.dim(Dim::H) != 2) { - THROW_IE_EXCEPTION << "[VPU] PriorBox output have invalid dimension, exptected " << dim << "x2" + IE_THROW() << "[VPU] PriorBox output have invalid dimension, exptected " << dim << "x2" << ", got " << _outDesc.dim(Dim::W) << "x" << _outDesc.dim(Dim::H) << ", layer name is: " << _layer->name; } @@ -335,7 +335,7 @@ void PriorBoxClusteredContent::fillTempBuf(void* tempBuf) const { auto expetected_output_dimx = layer_height * layer_width * num_priors_ * 4; if (_outDesc.dim(Dim::W) != expetected_output_dimx || _outDesc.dim(Dim::H) != 2) { - THROW_IE_EXCEPTION << "PriorBoxClustered output has invalid dimension, exptected " << expetected_output_dimx << "x2" + IE_THROW() << "PriorBoxClustered output has invalid dimension, exptected " << expetected_output_dimx << "x2" << ", got " << _outDesc.dim(Dim::W) << "x" << _outDesc.dim(Dim::H) << ", layer name is: " << _layer->name; } diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/replicated_data_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/replicated_data_content.cpp index da01e725620999..6de3ba5867edfa 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/replicated_data_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/replicated_data_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/scaled_content.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/scaled_content.cpp index 9351ccb887cb07..b5c05643ec6ce9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_contents/scaled_content.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_contents/scaled_content.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/data_desc.cpp b/inference-engine/src/vpu/graph_transformer/src/model/data_desc.cpp index 0d297b6fb89e7e..d5ab7650a172e3 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/data_desc.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/data_desc.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/model/model.cpp b/inference-engine/src/vpu/graph_transformer/src/model/model.cpp index 21f70c17c0a386..ee32167e0bbde4 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/model.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/model.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -391,34 +391,25 @@ StageOutput ModelObj::addStageOutput( return edge; } -StageDependency ModelObj::addStageDependency(const Stage& stage, const Data& data) { - for (const auto& dependentStageEdge : data->dependentStagesEdges()) { - VPU_THROW_UNLESS(dependentStageEdge->dependentStage() != stage, - "Adding stage dependency for {} with type {} failed: data {} with usage {} is already its dependency", - stage->name(), stage->type(), data->name(), data->usage()); +StageDependency ModelObj::addStageDependency(const Stage& parent, const Stage& child) { + for (const auto& dependentStageEdge : parent->childDependencyEdges()) { + VPU_THROW_UNLESS(dependentStageEdge->child() != child, + "Adding dependent stage for {} with type {} failed: stage {} with type {} is already its dependent stage", + parent->name(), parent->type(), child->name(), child->type()); } - for (const auto& input : stage->inputs()) { - VPU_THROW_UNLESS(data != input, - "Adding stage dependency for {} with type {} failed: data {} with usage {} is already its input", - stage->name(), stage->type(), data->name(), data->usage()); - } - - VPU_THROW_UNLESS(data->producer() != nullptr, - "Adding stage dependency for {} with type {} failed: data {} with usage {} should have producer, " - "but actually it doesn't", stage->name(), stage->type(), data->name(), data->usage()); - _resetStageOrder = true; std::shared_ptr edge(new StageDependencyEdge); edge->_ptrPosInModel = _stageDependencyEdgePtrList.emplace(_stageDependencyEdgePtrList.end(), edge); - edge->_dependency = data; - edge->_dependentStage = stage; + edge->_parent = parent; + edge->_child = child; - data->_dependentStagesEdges.push_back(edge); + parent->_childDependencyEdges.push_back(edge); + child->_parentDependencyEdges.push_back(edge); - setStagesOrder(data->producerEdge()->producer(), stage); + setStagesOrder(parent, child); return edge; } @@ -681,111 +672,84 @@ void ModelObj::replaceStageOutput( } } -void ModelObj::replaceStageDependency( +void ModelObj::replaceStageDependencyParent( const StageDependency& edge, - const Data& newDependency) { - const auto previousDependency = edge->dependency(); - const auto dependentStage = edge->dependentStage(); - - for (const auto& dependentStageEdge : newDependency->dependentStagesEdges()) { - VPU_THROW_UNLESS(dependentStageEdge->dependentStage() != dependentStage, - "replaceStageDependency failed for dependency {} with usage {} and dependentStage {} with type {}: " - "new dependency {} with usage {} is already dependency for dependent stage", previousDependency->name(), previousDependency->usage(), - dependentStage->name(), dependentStage->type(), newDependency->name(), newDependency->usage()); - } + const Stage& newParent) { + const auto previousParent = edge->parent(); + const auto child = edge->child(); - for (const auto& input : dependentStage->inputs()) { - VPU_THROW_UNLESS(newDependency != input, - "replaceStageDependency failed for dependency {} with usage {} and dependentStage {} with type {}: " - "new dependency {} with usage {} is already input for dependent stage", previousDependency->name(), previousDependency->usage(), - dependentStage->name(), dependentStage->type(), newDependency->name(), newDependency->usage()); + for (const auto& dependentStageEdge : newParent->childDependencyEdges()) { + VPU_THROW_UNLESS(dependentStageEdge->child() != child, + "replaceStageDependencyParent failed for {} with type {}: stage {} with type {} is already its parent", + child->name(), child->type(), newParent->name(), newParent->type()); } - VPU_THROW_UNLESS(newDependency->producer() != nullptr, - "replaceStageDependency failed for dependency {} with usage {} and dependentStage {} with type {}: " - "newDependency {} with usage {} has no producer", previousDependency->name(), previousDependency->usage(), - dependentStage->name(), dependentStage->type(), newDependency->name(), newDependency->usage()); - - VPU_THROW_UNLESS(previousDependency->producer() != nullptr, - "replaceStageDependency failed for dependency {} with usage {} and dependentStage {} with type {}: " - "previous dependency has no producer", - previousDependency->name(), previousDependency->usage(), dependentStage->name(), dependentStage->type()); - _resetStageOrder = true; - previousDependency->_dependentStagesEdges.erase(edge); + auto& childDependencyEdges = previousParent->_childDependencyEdges; + childDependencyEdges.erase(std::remove(childDependencyEdges.begin(), childDependencyEdges.end(), edge)); - removeStagesOrder(previousDependency->producer(), dependentStage); + removeStagesOrder(previousParent, child); - edge->_dependency = newDependency; - newDependency->_dependentStagesEdges.push_back(edge); + edge->_parent = newParent; + newParent->_childDependencyEdges.push_back(edge); - setStagesOrder(newDependency->producerEdge()->producer(), dependentStage); + setStagesOrder(newParent, child); } -void ModelObj::replaceDependentStage( +void ModelObj::replaceStageDependencyChild( const StageDependency& edge, - const Stage& newDependentStage) { - const auto dependency = edge->dependency(); - const auto previousDependentStage = edge->dependentStage(); - - for (const auto& dependentStageEdge : dependency->dependentStagesEdges()) { - VPU_THROW_UNLESS(dependentStageEdge->dependentStage() != newDependentStage, - "replaceDependentStage failed for dependency {} with usage {} and dependentStage {} with type {}: " - "new dependent stage {} with type {} is already dependent stage for dependency", dependency->name(), dependency->usage(), - previousDependentStage->name(), previousDependentStage->type(), newDependentStage->name(), newDependentStage->type()); - } + const Stage& newChild) { + const auto parent = edge->parent(); + const auto previousChild = edge->child(); - for (const auto& input : newDependentStage->inputs()) { - VPU_THROW_UNLESS(dependency != input, - "replaceDependentStage failed for dependency {} with usage {} and dependentStage {} with type {}: " - "new dependent stage {} with type {} already has dependency as its input", dependency->name(), dependency->usage(), - previousDependentStage->name(), previousDependentStage->type(), newDependentStage->name(), newDependentStage->type()); + for (const auto& dependentStageEdge : parent->childDependencyEdges()) { + VPU_THROW_UNLESS(dependentStageEdge->child() != newChild, + "replaceStageDependencyChild failed for {} with type {}: stage {} with type {} is already its child", + parent->name(), parent->type(), newChild->name(), newChild->type()); } - VPU_THROW_UNLESS(dependency->producer() != nullptr, - "replaceDependentStage failed for dependency {} with usage {} and dependentStage {} with type {}: " - "dependency has no producer", - dependency->name(), dependency->usage(), previousDependentStage->name(), previousDependentStage->type()); - _resetStageOrder = true; - removeStagesOrder(dependency->producer(), previousDependentStage); + auto& parentDependencyEdges = previousChild->_parentDependencyEdges; + parentDependencyEdges.erase(std::remove(parentDependencyEdges.begin(), parentDependencyEdges.end(), edge)); - edge->_dependentStage = newDependentStage; + removeStagesOrder(parent, previousChild); - setStagesOrder(dependency->producer(), newDependentStage); + edge->_child = newChild; + newChild->_parentDependencyEdges.push_back(edge); + + setStagesOrder(parent, newChild); } void ModelObj::removeStageDependency(const StageDependency& edge) { - const auto dependency = edge->dependency(); - const auto dependentStage = edge->dependentStage(); - - VPU_THROW_UNLESS(dependency->producer(), - "removeStageDependency failed for dependency {} with usage {} and dependentStage {} with type {}: dependency has no producer", - dependency->name(), dependency->usage(), dependentStage->name(), dependentStage->type()); + const auto parent = edge->parent(); + const auto child = edge->child(); _resetStageOrder = true; - dependency->_dependentStagesEdges.erase(edge); + auto& childDependencyEdges = parent->_childDependencyEdges; + childDependencyEdges.erase(std::remove(childDependencyEdges.begin(), childDependencyEdges.end(), edge)); + auto& parentDependencyEdges = child->_parentDependencyEdges; + parentDependencyEdges.erase(std::remove(parentDependencyEdges.begin(), parentDependencyEdges.end(), edge)); - removeStagesOrder(dependency->producer(), dependentStage); + removeStagesOrder(parent, child); VPU_THROW_UNLESS(edge->_ptrPosInModel != _stageDependencyEdgePtrList.end(), - "removeStageDependency failed for dependency {} with usage {} and dependentStage {} with type {}: no such edge in Model's DataToShapeEdges list", - dependency->name(), dependency->usage(), dependentStage->name(), dependentStage->type()); + "removeStageDependency failed for parent {} with type {} and child {} with type {}: no such edge in Model's DataToShapeEdges list", + parent->name(), parent->type(), child->name(), child->type()); _stageDependencyEdgePtrList.erase(edge->_ptrPosInModel); } -void ModelObj::removeStageDependency(const Stage& stage, const Data& dependency) { - const auto& dependentStagesEdges = dependency->dependentStagesEdges(); +void ModelObj::removeStageDependency(const Stage& parent, const Stage& child) { + const auto& childDependencyEdges = parent->childDependencyEdges(); - const auto it = std::find_if(dependentStagesEdges.begin(), dependentStagesEdges.end(), [&stage](const StageDependency& edge) { - return edge->dependentStage() == stage; + const auto it = std::find_if(childDependencyEdges.begin(), childDependencyEdges.end(), [&child](const StageDependency& edge) { + return edge->child() == child; }); - if (it != dependentStagesEdges.end()) { + if (it != childDependencyEdges.end()) { const auto stageDependencyEdge = *it; removeStageDependency(stageDependencyEdge); } @@ -923,6 +887,22 @@ Injection ModelObj::injectStageImpl( parent->_injectedStageEdge = edge; child->_parentStageEdge = edge; + // + // Redirect child stage dependencies to parent. + // + + const auto parentDependencyEdges = child->_parentDependencyEdges; + for (const auto& parentDependencyEdge : parentDependencyEdges) { + edge->_injectedStageDependencies.push_back(parentDependencyEdge); + replaceStageDependencyChild(parentDependencyEdge, parent); + } + + const auto childDependencyEdges = child->_childDependencyEdges; + for (const auto& childDependencyEdge : childDependencyEdges) { + edge->_injectedStageDependencies.push_back(childDependencyEdge); + replaceStageDependencyParent(childDependencyEdge, parent); + } + // // Redirect child inputs to parent. // @@ -1049,6 +1029,19 @@ void ModelObj::revertInjection(const Injection& edge) { childStage->_ptrPosInModel = _stagePtrList.emplace(_stagePtrList.end(), childStage); + // + // Redirect stage dependencies back to child. + // + + for (const auto& injectedStageDependency : edge->injectedStageDependencies()) { + if (parentStage == injectedStageDependency->parent()) { + replaceStageDependencyParent(injectedStageDependency, childStage); + } else { + replaceStageDependencyChild(injectedStageDependency, childStage); + } + } + edge->_injectedStageDependencies.clear(); + // // Remove Injection Edge from parent and child Stage. // @@ -1706,7 +1699,7 @@ DataToShapeAllocation ModelObj::connectDataWithShape( if (childProducer && isStageDependencyNeeded(childProducer, parent)) { // Shape and data are produced from different stages, make sure that shape is calculated before data - addStageDependency(childProducer, parent); + addStageDependency(parent->producer(), childProducer); } return edge; @@ -1724,11 +1717,14 @@ void ModelObj::replaceDataToShapeParent( const auto& childProducer = child->producer(); if (childProducer != nullptr) { - removeStageDependency(childProducer, oldParent); + const auto& oldParentProducer = oldParent->producer(); + if (oldParentProducer != nullptr) { + removeStageDependency(oldParent->producer(), childProducer); + } if (isStageDependencyNeeded(childProducer, newParent)) { // Shape and data are produced from different stages, make sure that shape is calculated before data - addStageDependency(childProducer, newParent); + addStageDependency(newParent->producer(), childProducer); } } } @@ -1749,15 +1745,16 @@ void ModelObj::replaceDataToShapeChild( newChild->_parentDataToShapeEdge = edge; const auto& oldChildProducer = oldChild->producer(); - if (oldChildProducer != nullptr) { - removeStageDependency(oldChildProducer, parent); + const auto& parentProducer = parent->producer(); + if (parentProducer != nullptr && oldChildProducer != nullptr) { + removeStageDependency(parentProducer, oldChildProducer); } const auto& newChildProducer = newChild->producer(); if (newChildProducer && isStageDependencyNeeded(newChildProducer, parent)) { // Shape and data are produced from different stages, make sure that shape is calculated before data - addStageDependency(newChildProducer, parent); + addStageDependency(parent->producer(), newChildProducer); } } @@ -1839,8 +1836,9 @@ void ModelObj::disconnectDatas(const DataToShapeAllocation& edge) { _shapeEdgePtrList.erase(edge->_ptrPosInModel); const auto& childProducer = child->producer(); - if (childProducer != nullptr) { - removeStageDependency(childProducer, parent); + const auto& parentProducer = parent->producer(); + if (parentProducer != nullptr && childProducer != nullptr) { + removeStageDependency(parentProducer, childProducer); } } @@ -1893,7 +1891,10 @@ void ModelObj::disconnectStage(const Stage& stage) { for (const auto& outEdge : stage->_outputEdges) { // Disconnect from dependency if (const auto& dataToShapeEdge = outEdge->output()->parentDataToShapeEdge()) { - removeStageDependency(stage, dataToShapeEdge->parent()); + const auto& parentProducer = dataToShapeEdge->parent()->producer(); + if (parentProducer != nullptr) { + removeStageDependency(parentProducer, stage); + } } // Disconnect from consumers for (const auto& consumerEdge : outEdge->_output->_consumerEdges) { diff --git a/inference-engine/src/vpu/graph_transformer/src/model/stage.cpp b/inference-engine/src/vpu/graph_transformer/src/model/stage.cpp index f8df36a0a12cc9..7323587ce9f38b 100644 --- a/inference-engine/src/vpu/graph_transformer/src/model/stage.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/model/stage.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -224,14 +224,14 @@ StageSHAVEsRequirements StageNode::getSHAVEsRequirements() const { void StageNode::initialCheck() const { try { initialCheckImpl(); - } catch (const InferenceEngine::details::InferenceEngineException& exception) { + } catch (const InferenceEngine::Exception& exception) { VPU_THROW_EXCEPTION << name() << " of type " << type() << ": " << exception.what(); } if (const auto injectedStage = this->injectedStage()) { try { injectedStage->initialCheck(); - } catch (const InferenceEngine::details::InferenceEngineException& exception) { + } catch (const InferenceEngine::Exception& exception) { VPU_THROW_EXCEPTION << name() << " of type " << type() << ": " << exception.what(); } } @@ -240,14 +240,14 @@ void StageNode::initialCheck() const { void StageNode::finalCheck() const { try { finalCheckImpl(); - } catch (const InferenceEngine::details::InferenceEngineException& exception) { + } catch (const InferenceEngine::Exception& exception) { VPU_THROW_EXCEPTION << name() << " of type " << type() << ": " << exception.what(); } if (const auto injectedStage = this->injectedStage()) { try { injectedStage->finalCheck(); - } catch (const ie::details::InferenceEngineException& exception) { + } catch (const ie::Exception& exception) { VPU_THROW_EXCEPTION << name() << " of type " << type() << ": " << exception.what(); } } diff --git a/inference-engine/src/vpu/graph_transformer/src/parsed_config.cpp b/inference-engine/src/vpu/graph_transformer/src/parsed_config.cpp index d68a21f1aeb89c..2b5d0ab31a188b 100644 --- a/inference-engine/src/vpu/graph_transformer/src/parsed_config.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/parsed_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -68,6 +68,7 @@ IE_SUPPRESS_DEPRECATED_START ie::MYRIAD_FORCE_PURE_TENSOR_ITERATOR, ie::MYRIAD_DISABLE_CONVERT_STAGES, ie::MYRIAD_ENABLE_WEIGHTS_ANALYSIS, + ie::MYRIAD_CHECK_PREPROCESSING_INSIDE_MODEL, ie::MYRIAD_ENABLE_EARLY_ELTWISE_RELU_FUSION, ie::MYRIAD_ENABLE_CUSTOM_RESHAPE_PARAM, @@ -186,6 +187,7 @@ void ParsedConfig::parse(const std::map& config) { setOption(_compileConfig.forcePureTensorIterator, switches, config, ie::MYRIAD_FORCE_PURE_TENSOR_ITERATOR); setOption(_compileConfig.disableConvertStages, switches, config, ie::MYRIAD_DISABLE_CONVERT_STAGES); setOption(_compileConfig.enableWeightsAnalysis, switches, config, ie::MYRIAD_ENABLE_WEIGHTS_ANALYSIS); + setOption(_compileConfig.checkPreprocessingInsideModel, switches, config, ie::MYRIAD_CHECK_PREPROCESSING_INSIDE_MODEL); setOption(_compileConfig.enableEarlyEltwiseReLUFusion, switches, config, ie::MYRIAD_ENABLE_EARLY_ELTWISE_RELU_FUSION); setOption(_compileConfig.enableCustomReshapeParam, switches, config, ie::MYRIAD_ENABLE_CUSTOM_RESHAPE_PARAM); @@ -225,7 +227,7 @@ void ParsedConfig::parse(const std::map& config) { if ((_compileConfig.numSHAVEs < 0 && _compileConfig.numCMXSlices >= 0) || (_compileConfig.numSHAVEs >= 0 && _compileConfig.numCMXSlices < 0)) { - THROW_IE_EXCEPTION << "You should set both option for resource management: VPU_NUMBER_OF_CMX_SLICES and VPU_NUMBER_OF_SHAVES"; + IE_THROW() << "You should set both option for resource management: VPU_NUMBER_OF_CMX_SLICES and VPU_NUMBER_OF_SHAVES"; } setOption(_compileConfig.ioStrides, config, ie::MYRIAD_TENSOR_STRIDES, parseStrides); diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp index 537627ed048e62..04c4923fcae189 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/batch_norm.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/batch_norm.cpp index 1efb4586f99b1a..cf49d65ae03acf 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/batch_norm.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/batch_norm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/bias.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/bias.cpp index 4a23e97eb554a9..7a6a1556c62acf 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/bias.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/bias.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/broadcast.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/broadcast.cpp index b44c6b995c9669..610117fa0e1301 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/broadcast.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/ceiling.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/ceiling.cpp index 56ff0858f5445e..47bd93408ad321 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/ceiling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/ceiling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/clamp.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/clamp.cpp index 6fb3ad1be4712b..968c59233d183c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/clamp.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/clamp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/concat.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/concat.cpp index acd625177bd3fb..84907322b9c1a4 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/concat.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/convert.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/convert.cpp index 6d994e4408a59f..b573b8b1568151 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/convert.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/convolution.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/convolution.cpp index 95a93cbe7da836..529456f919ebcd 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/convolution.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/copy.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/copy.cpp index 5907ba62822ee5..da9da19f04860a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/copy.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/copy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/crop.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/crop.cpp index 01e1e731a416fe..5bfe8552d51889 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/crop.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/crop.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/ctc_decoder.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/ctc_decoder.cpp index 783436a7229890..206f72a651522c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/ctc_decoder.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/ctc_decoder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/ctc_greedy_decoder_seq_len.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/ctc_greedy_decoder_seq_len.cpp index 0dec7d143293e4..4b20147019a027 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/ctc_greedy_decoder_seq_len.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/ctc_greedy_decoder_seq_len.cpp @@ -131,6 +131,9 @@ void FrontEnd::parseCTCGreedyDecoderSeqLen(const Model& model, const ie::CNNLaye "provided {} outputs", layer->type, layer->name, outputs.size()); + DataVector conditionalOutputs(2); + conditionalOutputs[0] = outputs[0]; + conditionalOutputs[1] = outputs[1] != nullptr ? outputs[1] : model->addFakeData(); const auto mergeRepeated = layer->GetParamAsBool("merge_repeated"); const auto blankIndex = [&] { @@ -167,7 +170,7 @@ void FrontEnd::parseCTCGreedyDecoderSeqLen(const Model& model, const ie::CNNLaye sequenceLengthType); _stageBuilder->addCTCGreedyDecoderSeqLenStage(model, layer->name, layer, - inputs, outputs, mergeRepeated, blankIndex); + inputs, conditionalOutputs, mergeRepeated, blankIndex); } } // namespace vpu diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/custom.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/custom.cpp index 7aa3935058b2cf..500be30ff6a347 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/custom.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/custom.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/deconvolution.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/deconvolution.cpp index 160a0fc85daa1e..ed1c430623fc58 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/deconvolution.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/deconvolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/detection_output.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/detection_output.cpp index 180a0ac8486c5b..990dd0ba7f9a49 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/detection_output.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/detection_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/dynamic_shape_resolver.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/dynamic_shape_resolver.cpp index 03bdeccf94993e..a1a8b6c0ee6f28 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/dynamic_shape_resolver.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/dynamic_shape_resolver.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp index b4fd2614156614..741b8439281c30 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -188,7 +188,7 @@ class EltwiseStage final : public StageNode { serializer.append(attrs().getOrDefault("coeff1", 1)); serializer.append(attrs().getOrDefault("coeff2", 1)); } else { - THROW_IE_EXCEPTION << type << " isn't supported"; + IE_THROW() << type << " isn't supported"; } auto postOperation = attrs().getOrDefault("postOperation", StageType::Empty); diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/elu.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/elu.cpp index 3b6f08fd1bfde0..0913b2c97cae44 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/elu.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/elu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/erf.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/erf.cpp index dcbca8f650618c..c68b903497ad61 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/erf.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/erf.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/exp.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/exp.cpp index 282b61932ddb6e..e3145b9ab1e4bf 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/exp.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/exp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/exp_generateproposals.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/exp_generateproposals.cpp index ea6e8c2d0244c4..ab157972c1171a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/exp_generateproposals.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/exp_generateproposals.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/exp_priorgridgenerator.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/exp_priorgridgenerator.cpp index 1124e76bf602c1..0afe15d3145794 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/exp_priorgridgenerator.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/exp_priorgridgenerator.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/exp_topkrois.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/exp_topkrois.cpp index e1ff644a5e2301..650a29b301b1d5 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/exp_topkrois.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/exp_topkrois.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/expand.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/expand.cpp index a2c0ccf89940cc..f4a6e449386db8 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/expand.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/expand.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/fc.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/fc.cpp index 5c560175a018a3..c2994273ca7401 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/fc.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/fc.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/floor.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/floor.cpp index c19d95135ddf00..93a68dd08988b3 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/floor.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/floor.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/gather.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/gather.cpp index 41e627580d2057..b5ae1a64880630 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/gather.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/gather_elements.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/gather_elements.cpp index bb86d4342aea66..ec71d2e330f928 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/gather_elements.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/gather_nd.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/gather_nd.cpp index 59e1047d49bf9d..21f74ef3572c86 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/gather_nd.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/gelu.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/gelu.cpp index aacc8bd1132b60..2daac8d2aad2dd 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/gelu.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/gelu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/gemm.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/gemm.cpp index 13b26691068644..858f7d6babaa94 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/gemm.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/gemm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/grn.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/grn.cpp index 9d6ba30fd3bf51..32c48a68e68519 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/grn.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/grn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/hswish.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/hswish.cpp index 88e30ba6756f65..03d81fe48e58f8 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/hswish.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/hswish.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/interp.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/interp.cpp index ecd99e0da1afbc..8a8ad8d2eb5386 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/interp.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/interp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/interpolate.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/interpolate.cpp index db2c2b2d3be944..8be7070ebea52f 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/interpolate.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/interpolate.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/log.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/log.cpp index 16d8519b4f761b..6e18eb93e15169 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/log.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/log.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/mish.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/mish.cpp index f18bbb4cd0e550..492360461feec9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/mish.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/mish.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/mtcnn.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/mtcnn.cpp index 6b4306c5dabb9f..795b45c8a04486 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/mtcnn.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/mtcnn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp index 527f6fc2ae1eeb..ecd1ad965f68fc 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/mx_stage.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/mx_stage.cpp index 8c79f1a1eb164f..66ba2d8b5d7780 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/mx_stage.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/mx_stage.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/none.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/none.cpp index 3786b39abc9d14..50c83cafcf44c4 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/none.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/none.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/nonzero.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/nonzero.cpp index 010337b1b8a5fa..8d4116b91f6c6a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/nonzero.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/norm.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/norm.cpp index 7f9cfb7f1af3e7..36a782f8f7b33d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/norm.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/norm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/normalize.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/normalize.cpp index c4f1653c338e47..f9533d53c9d3df 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/normalize.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/normalize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/oneHot.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/oneHot.cpp index e98235943d82b9..0d2a5fa5a6b642 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/oneHot.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/oneHot.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/out_shape_of_reshape.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/out_shape_of_reshape.cpp index 25a2cb61584791..0312af6494b1a3 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/out_shape_of_reshape.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/out_shape_of_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/pad.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/pad.cpp index d5d9cd66255346..66d6e7a7a75188 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/pad.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -93,20 +93,26 @@ void FrontEnd::parsePad(const Model& model, const ie::CNNLayerPtr& _layer, const auto layer = std::dynamic_pointer_cast(_layer); IE_ASSERT(layer != nullptr); - IE_ASSERT(layer->pads_begin.size() == 4); - IE_ASSERT(layer->pads_end.size() == 4); + const auto ndims = inputs[0]->desc().dimsOrder().numDims(); + VPU_THROW_UNLESS(ndims == 3 || ndims == 4, "Layer %s support only 3D and 4D input, but %dD provided", layer->name, ndims); + VPU_THROW_UNLESS(layer->pads_begin.size() <= 4, "Layer %s support pads_begin size less than or equal 4, but %d provided", + layer->name, layer->pads_begin.size()); + VPU_THROW_UNLESS(layer->pads_end.size() <= 4, "Layer %s support pads_end size less than or equal 4, but %d provided", + layer->name, layer->pads_end.size()); + + DimsOrder dimsOrder = inputs[0]->desc().dimsOrder(); DimValues pads_begin; - pads_begin.set(Dim::W, layer->pads_begin[3]); - pads_begin.set(Dim::H, layer->pads_begin[2]); - pads_begin.set(Dim::C, layer->pads_begin[1]); - pads_begin.set(Dim::N, layer->pads_begin[0]); + pads_begin.set(Dim::W, dimsOrder.hasDim(Dim::W) ? layer->pads_begin[dimToIeInd(Dim::W, ndims)] : 0); + pads_begin.set(Dim::H, dimsOrder.hasDim(Dim::H) ? layer->pads_begin[dimToIeInd(Dim::H, ndims)] : 0); + pads_begin.set(Dim::C, dimsOrder.hasDim(Dim::C) ? layer->pads_begin[dimToIeInd(Dim::C, ndims)] : 0); + pads_begin.set(Dim::N, dimsOrder.hasDim(Dim::N) ? layer->pads_begin[dimToIeInd(Dim::N, ndims)] : 0); DimValues pads_end; - pads_end.set(Dim::W, layer->pads_end[3]); - pads_end.set(Dim::H, layer->pads_end[2]); - pads_end.set(Dim::C, layer->pads_end[1]); - pads_end.set(Dim::N, layer->pads_end[0]); + pads_end.set(Dim::W, dimsOrder.hasDim(Dim::W) ? layer->pads_end[dimToIeInd(Dim::W, ndims)] : 0); + pads_end.set(Dim::H, dimsOrder.hasDim(Dim::H) ? layer->pads_end[dimToIeInd(Dim::H, ndims)] : 0); + pads_end.set(Dim::C, dimsOrder.hasDim(Dim::C) ? layer->pads_end[dimToIeInd(Dim::C, ndims)] : 0); + pads_end.set(Dim::N, dimsOrder.hasDim(Dim::N) ? layer->pads_end[dimToIeInd(Dim::N, ndims)] : 0); _stageBuilder->addPadStage( model, diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/permute.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/permute.cpp index 3d12487da1d48d..411cc2de0d7438 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/permute.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/permute.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/pooling.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/pooling.cpp index a631e948075b61..5551e72231bd44 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/pooling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/post_op_stage.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/post_op_stage.cpp index 726b6ce4c4af7c..c0c69e5901966f 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/post_op_stage.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/post_op_stage.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/power.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/power.cpp index 1eb7b24ed09b9f..eb864dc0acfa10 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/power.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/power.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/prelu.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/prelu.cpp index 8a5d448e54416b..6bfb63b1999755 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/prelu.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/prelu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,7 +39,7 @@ void FrontEnd::parsePReLU(const Model& model, const ie::CNNLayerPtr& layer, cons auto weightsIt = layer->blobs.find("weights"); if (weightsIt == layer->blobs.end()) { - THROW_IE_EXCEPTION << "[VPU] PReLU doesn't have weights"; + IE_THROW() << "[VPU] PReLU doesn't have weights"; } auto weightsBlob = weightsIt->second; diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/priorbox.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/priorbox.cpp index 7a08e65dba91e2..4fef61499239e1 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/priorbox.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/priorbox.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/proposal.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/proposal.cpp index b1f08c1d8d32a7..b0510105ce1094 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/proposal.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/psroipooling.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/psroipooling.cpp index f86ee5046bb075..5cfc36d70562ed 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/psroipooling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/psroipooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/reduce.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/reduce.cpp index cd58b33524a955..4f793b65d2da0a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/reduce.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/region_yolo.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/region_yolo.cpp index 15eb6278eb4242..da9d2a56ca1705 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/region_yolo.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/relu.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/relu.cpp index 98156d74605a77..b3c227a2dc43f3 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/relu.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/reorg_yolo.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/reorg_yolo.cpp index 084e2f8f02eb67..01f6e119dd9b0d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/reorg_yolo.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/reorg_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/resample.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/resample.cpp index dba28228d4849f..6d2c114ac93c7c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/resample.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/resample.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/reshape.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/reshape.cpp index 8af263727f55a3..62dfc7dc3ff3d9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/reshape.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/reverse_sequence.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/reverse_sequence.cpp index 27cad5ff5c2a43..ce7543f31ede5d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/reverse_sequence.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/reverse_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/rnn.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/rnn.cpp index 9f458406804e6c..8cae451119ca1c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/rnn.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/rnn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/roi_align.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/roi_align.cpp index 586e9f3ab841bc..242a4ec64c7d0b 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/roi_align.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/roi_align.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/roi_feature_extractor.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/roi_feature_extractor.cpp index 02df408f0627fb..8669fbf256f3a9 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/roi_feature_extractor.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/roi_feature_extractor.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/roipooling.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/roipooling.cpp index 68acc4b9e3f453..bcfe3c10793852 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/roipooling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/roipooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/round.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/round.cpp index 75295c98aba4b2..d9c0c6c08e41a3 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/round.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/round.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/scale.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/scale.cpp index 8e0681782b98a4..f06789c030d5de 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/scale.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/scale.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/scatter_elements_update.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/scatter_elements_update.cpp index a4f2cdf0bb75d1..4e7cb5285252e8 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/scatter_elements_update.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/scatter_elements_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/scatter_update.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/scatter_update.cpp index 6e5ec138ac147e..4745d53cdac49a 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/scatter_update.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/scatter_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/screlu.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/screlu.cpp index 2c3ad813c4e3cb..9de77a30a577b8 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/screlu.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/screlu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/sigmoid.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/sigmoid.cpp index c044230c1baed8..03e4252c69f415 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/sigmoid.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/sigmoid.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/softmax.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/softmax.cpp index d7dcfd335f51ee..d8c7bc99693cee 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/softmax.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/softplus.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/softplus.cpp index 33f077999c792d..ce5fc54b4b0bce 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/softplus.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/softplus.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/split.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/split.cpp index 60f8e5d0a29eeb..1ea063de4f96e8 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/split.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/strided_slice.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/strided_slice.cpp index 80729d73fcd2e8..f032bc112d2b6c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/strided_slice.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/stub_stage.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/stub_stage.cpp index 882e5714c85852..119ce1172ab730 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/stub_stage.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/stub_stage.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/swish.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/swish.cpp index e64e0b68dc4579..106e07a3c360e5 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/swish.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/swish.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/tanh.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/tanh.cpp index d8a926eb280fa7..dd2094bac1162e 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/tanh.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/tanh.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/tile.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/tile.cpp index 7023cc36bc8b2f..d0edc8c9f70580 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/tile.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/tile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/topk.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/topk.cpp index f8777d505ab3d9..a4a20d46367d69 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/topk.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -139,10 +139,13 @@ void FrontEnd::parseTopK(const Model& model, const ie::CNNLayerPtr& _layer, cons IE_ASSERT(!outputValues || outputValues->desc().numDims() == numDims); IE_ASSERT(!outputIndices || outputIndices->desc().numDims() == numDims); - IE_ASSERT(layer->axis < numDims); + VPU_THROW_UNLESS(layer->axis < numDims && layer->axis >= -numDims, + "Failed to parse layer {} with type {}: axis is expected to be in range [{}, {}], but got {}", + layer->name, layer->type, -numDims, numDims - 1, layer->axis); - auto perm = DimsOrder::fromNumDims(numDims).toPermutation(); - auto axis = perm[numDims - 1 - layer->axis]; + const auto perm = DimsOrder::fromNumDims(numDims).toPermutation(); + const auto normalizedAxis = layer->axis + (layer->axis < 0 ? numDims : 0); + const auto axis = perm[numDims - 1 - normalizedAxis]; const TopKMode mode = getMode(layer); const TopKSort sort = getSort(layer); diff --git a/inference-engine/src/vpu/graph_transformer/src/utils/profiling.cpp b/inference-engine/src/vpu/graph_transformer/src/utils/profiling.cpp index adb4bb382ded9f..8b1c40cce6c16f 100644 --- a/inference-engine/src/vpu/graph_transformer/src/utils/profiling.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/utils/profiling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/utils/runtime_graph.cpp b/inference-engine/src/vpu/graph_transformer/src/utils/runtime_graph.cpp index 1007cde8e62b18..120cd88ae78b5c 100644 --- a/inference-engine/src/vpu/graph_transformer/src/utils/runtime_graph.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/utils/runtime_graph.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/graph_transformer/src/utils/shape_io.cpp b/inference-engine/src/vpu/graph_transformer/src/utils/shape_io.cpp index 19725e5d7b634b..530284e6d1767d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/utils/shape_io.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/utils/shape_io.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt b/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt index c591ff89b13486..a3e0182ed9a65a 100644 --- a/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt +++ b/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -41,6 +41,11 @@ target_link_libraries(${TARGET_NAME} PRIVATE mvnc inference_engine inference_engine_legacy vpu_graph_transformer) +# MyriadPlugin is not safe to unload it at runtime +if(LINUX AND LINUX_OS_NAME MATCHES "Ubuntu") + set_target_properties(${TARGET_NAME} PROPERTIES LINK_OPTIONS "-Wl,-z,nodelete") +endif() + ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME}) # LTO diff --git a/inference-engine/src/vpu/myriad_plugin/api/myriad_api.cpp b/inference-engine/src/vpu/myriad_plugin/api/myriad_api.cpp index 9a677185cb41f5..7abdb97ec54530 100644 --- a/inference-engine/src/vpu/myriad_plugin/api/myriad_api.cpp +++ b/inference-engine/src/vpu/myriad_plugin/api/myriad_api.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.cpp index 79adaf9036ef77..0c357a831a6999 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.h b/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.h index cbf1274f32a570..4ef9fe4f81235a 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_async_infer_request.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_config.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_config.cpp index cee34d06e9d5fe..6258a0c8818b37 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_config.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -128,6 +128,7 @@ IE_SUPPRESS_DEPRECATED_END setOption(_deviceConnectTimeout, config, ie::MYRIAD_DEVICE_CONNECT_TIMEOUT, parseSeconds); setOption(_powerConfig, powerConfigs, config, ie::MYRIAD_POWER_MANAGEMENT); setOption(_memoryType, memoryTypes, config, ie::MYRIAD_DDR_TYPE); + setOption(_enableAsyncDma, switches, config, ie::MYRIAD_ENABLE_ASYNC_DMA); IE_SUPPRESS_DEPRECATED_START setOption(_forceReset, switches, config, VPU_MYRIAD_CONFIG_KEY(FORCE_RESET)); diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_config.h b/inference-engine/src/vpu/myriad_plugin/myriad_config.h index 3dc70502c13468..176e677a9b6f1a 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_config.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_config.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,6 +44,10 @@ class MyriadConfig final : public ParsedConfig { return _forceReset; } + bool asyncDma() const { + return _enableAsyncDma; + } + PowerConfig powerConfig() const { return _powerConfig; } @@ -81,6 +85,7 @@ class MyriadConfig final : public ParsedConfig { private: std::string _pluginLogFilePath; bool _forceReset = false; + bool _enableAsyncDma = true; PowerConfig _powerConfig = PowerConfig::FULL; ncDevicePlatform_t _platform = NC_ANY_PLATFORM; ncDeviceProtocol_t _protocol = NC_ANY_PROTOCOL; diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.cpp index 300a9a0ccdf79a..7a0a22499c1942 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,7 +67,7 @@ ExecutableNetwork::ExecutableNetwork( defaultOutput(_config.compilerLogFilePath())); if (_device == nullptr) - THROW_IE_EXCEPTION << "No device was detected"; + IE_THROW() << "No device was detected"; auto compiledGraph = compileNetwork( network, static_cast(_device->_platform), @@ -181,14 +181,14 @@ InferenceEngine::Parameter ExecutableNetwork::GetMetric(const std::string &name) } else if (name == METRIC_KEY(DEVICE_THERMAL)) { IE_SET_METRIC_RETURN(DEVICE_THERMAL, _executor->GetThermal(_device)); } else { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } } InferenceEngine::CNNNetwork ExecutableNetwork::GetExecGraphInfo() { auto perfInfo = _executor->getPerfTimeInfo(_graphDesc._graphHandle); if (_graphDesc._name == importedNetworkName) - THROW_IE_EXCEPTION << + IE_THROW() << "GetExecGraphInfo() can't be called for ExecutableNetwork that was imported from a compiled blob as far getting" " original stage names, types, and topological order from the compiled blob is not implemented for now."; return buildRuntimeGraph(_graphMetaData, perfInfo); diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.h b/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.h index 5319e70a9de02d..312d7ff3b21027 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_executable_network.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -64,7 +64,7 @@ class ExecutableNetwork : public ie::ExecutableNetworkThreadSafeDefault { ie::InferRequestInternal::Ptr CreateInferRequestImpl(ie::InputsDataMap networkInputs, ie::OutputsDataMap networkOutputs) override { if (_device == nullptr || !_device->isBooted()) { - THROW_IE_EXCEPTION << "Can not create infer request: there is no available devices with platform " + IE_THROW() << "Can not create infer request: there is no available devices with platform " << _device->_platform; } @@ -76,7 +76,7 @@ class ExecutableNetwork : public ie::ExecutableNetworkThreadSafeDefault { ie::IInferRequest::Ptr CreateInferRequest() override { ie::IInferRequest::Ptr asyncRequest; if (_device == nullptr || !_device->isBooted()) { - THROW_IE_EXCEPTION << "Can not create infer request: there is no available devices with platform " + IE_THROW() << "Can not create infer request: there is no available devices with platform " << _device->_platform; } @@ -88,8 +88,7 @@ class ExecutableNetwork : public ie::ExecutableNetworkThreadSafeDefault { auto taskExecutorGetResult = getNextTaskExecutor(); auto asyncThreadSafeImpl = std::make_shared( syncRequestImpl, _taskExecutor, _callbackExecutor, taskExecutorGetResult); - asyncRequest.reset(new ie::InferRequestBase(asyncThreadSafeImpl), - [](ie::IInferRequest *p) { p->Release(); }); + asyncRequest.reset(new ie::InferRequestBase(asyncThreadSafeImpl)); asyncThreadSafeImpl->SetPointerToPublicInterface(asyncRequest); return asyncRequest; } @@ -104,7 +103,7 @@ class ExecutableNetwork : public ie::ExecutableNetworkThreadSafeDefault { if (modelFile.is_open()) { Export(modelFile); } else { - THROW_IE_EXCEPTION << "The " << modelFileName << " file can not be opened for export"; + IE_THROW() << "The " << modelFileName << " file can not be opened for export"; } } diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_executor.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_executor.cpp index de52653ca62c46..ab56c310dc0082 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_executor.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_executor.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -89,6 +89,7 @@ ncStatus_t MyriadExecutor::bootNextDevice(std::vector &devicePool, const ncDeviceProtocol_t& configProtocol = config.protocol(); const std::string& configDevName = config.deviceName(); PowerConfig powerConfig = config.powerConfig(); + int enableAsyncDma = config.asyncDma(); int lastDeviceIdx = devicePool.empty() ? -1 : devicePool.back()->_deviceIdx; ncStatus_t statusOpen = NC_ERROR; @@ -119,12 +120,12 @@ ncStatus_t MyriadExecutor::bootNextDevice(std::vector &devicePool, }); if (it == availableDevicesDesc.end()) { - THROW_IE_EXCEPTION << "Myriad device: " << configDevName << " not found."; + IE_THROW() << "Myriad device: " << configDevName << " not found."; } else { ncDeviceDescr_t deviceDesc = *it; if (configPlatform != NC_ANY_PLATFORM && configPlatform != deviceDesc.platform) { - THROW_IE_EXCEPTION << "Input value of device name and platform are contradict each other. Device name: " << configDevName + IE_THROW() << "Input value of device name and platform are contradict each other. Device name: " << configDevName << "Platform: " << configPlatform; } } @@ -205,6 +206,14 @@ ncStatus_t MyriadExecutor::bootNextDevice(std::vector &devicePool, return status; } + status = ncDeviceSetOption(device._deviceHandle, NC_RW_ENABLE_ASYNC_DMA, reinterpret_cast(&enableAsyncDma), sizeof(dataLength)); + + if (status != NC_OK) { + _log->warning("Failed to set option for async DMA"); + ncDeviceClose(&device._deviceHandle, _mvnc->watchdogHndl()); + return status; + } + /* TODO: what should we do if we do not know maximum available graphs? What if we got number <= 0? */ device._graphNum = 1; device._deviceIdx = lastDeviceIdx + 1; @@ -241,7 +250,7 @@ DevicePtr MyriadExecutor::openDevice(std::vector& devicePool, device->_graphNum++; return device; } else { - THROW_IE_EXCEPTION << "Maximum number of networks reached for device: " << config.deviceName(); + IE_THROW() << "Maximum number of networks reached for device: " << config.deviceName(); } } } @@ -267,7 +276,7 @@ DevicePtr MyriadExecutor::openDevice(std::vector& devicePool, device._protocol = config.protocol(); return std::make_shared(device); } else if (availableDevices.empty()) { - THROW_IE_EXCEPTION << "Can not init Myriad device: " << ncStatusToStr(nullptr, booted); + IE_THROW() << "Can not init Myriad device: " << ncStatusToStr(nullptr, booted); } auto deviceWithMinExecutors = std::min_element(availableDevices.begin(), availableDevices.end(), @@ -311,19 +320,19 @@ void MyriadExecutor::allocateGraph(DevicePtr &device, GraphDesc &graphDesc, _numStages = static_cast(numStages); graphDesc._name = networkName; if (device->_deviceHandle == nullptr) { - THROW_IE_EXCEPTION << "Failed to allocate graph: MYRIAD device is not opened."; + IE_THROW() << "Failed to allocate graph: MYRIAD device is not opened."; } ncStatus_t status; status = ncGraphCreate(networkName.c_str(), &graphDesc._graphHandle); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to init graph: " << ncStatusToStr(nullptr, status); + IE_THROW() << "Failed to init graph: " << ncStatusToStr(nullptr, status); } status = ncGraphSetOption(graphDesc._graphHandle, NC_RW_GRAPH_EXECUTORS_NUM, &executors, sizeof(executors)); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to set graph executors: " << ncStatusToStr(nullptr, status); + IE_THROW() << "Failed to set graph executors: " << ncStatusToStr(nullptr, status); } status = ncGraphAllocate(device->_deviceHandle, @@ -333,7 +342,7 @@ void MyriadExecutor::allocateGraph(DevicePtr &device, GraphDesc &graphDesc, graphHeaderDesc.first, static_cast(graphHeaderDesc.second)); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to allocate graph: " << ncStatusToStr(nullptr, status); + IE_THROW() << "Failed to allocate graph: " << ncStatusToStr(nullptr, status); } unsigned int dataLength = sizeof(int); @@ -341,54 +350,54 @@ void MyriadExecutor::allocateGraph(DevicePtr &device, GraphDesc &graphDesc, int numInputs = 0; status = ncGraphGetOption(graphDesc._graphHandle, NC_RO_GRAPH_INPUT_COUNT, &numInputs, &dataLength); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to get number of inputs: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to get number of inputs: " << ncStatusToStr(graphDesc._graphHandle, status); } if (numInputs != 1) { - THROW_IE_EXCEPTION << "Unsupported number of inputs: " << numInputs; + IE_THROW() << "Unsupported number of inputs: " << numInputs; } int numOutputs = 0; status = ncGraphGetOption(graphDesc._graphHandle, NC_RO_GRAPH_OUTPUT_COUNT, &numOutputs, &dataLength); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to get number of outputs: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to get number of outputs: " << ncStatusToStr(graphDesc._graphHandle, status); } if (numOutputs != 1) { - THROW_IE_EXCEPTION << "Unsupported number of outputs: " << numOutputs; + IE_THROW() << "Unsupported number of outputs: " << numOutputs; } dataLength = sizeof(ncTensorDescriptor_t); status = ncGraphGetOption(graphDesc._graphHandle, NC_RO_GRAPH_INPUT_TENSOR_DESCRIPTORS, &graphDesc._inputDesc, &dataLength); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to get input description: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to get input description: " << ncStatusToStr(graphDesc._graphHandle, status); } status = ncGraphGetOption(graphDesc._graphHandle, NC_RO_GRAPH_OUTPUT_TENSOR_DESCRIPTORS, &graphDesc._outputDesc, &dataLength); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to get output description: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to get output description: " << ncStatusToStr(graphDesc._graphHandle, status); } unsigned int fifo_elements = (device->_platform == NC_MYRIAD_2 && executors == 1) ? 4 : 2 * executors; status = ncFifoCreate("input", NC_FIFO_HOST_WO, &graphDesc._inputFifoHandle); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to init input FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to init input FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); } status = ncFifoAllocate(graphDesc._inputFifoHandle, device->_deviceHandle, &graphDesc._inputDesc, fifo_elements); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to create input FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to create input FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); } status = ncFifoCreate("output", NC_FIFO_HOST_RO, &graphDesc._outputFifoHandle); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to init output FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to init output FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); } status = ncFifoAllocate(graphDesc._outputFifoHandle, device->_deviceHandle, &graphDesc._outputDesc, fifo_elements); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to create output FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to create output FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); } } @@ -399,14 +408,14 @@ void MyriadExecutor::queueInference(GraphDesc &graphDesc, void *input_data, size if (auto dumpFileName = std::getenv("IE_VPU_DUMP_INPUT_FILE_NAME")) { std::ofstream file(dumpFileName, std::ios_base::binary | std::ios_base::out); if (!file.is_open()) { - THROW_IE_EXCEPTION << "[VPU] Cannot open file " << dumpFileName << " for writing"; + IE_THROW() << "[VPU] Cannot open file " << dumpFileName << " for writing"; } file.write(static_cast(input_data), input_bytes); } #endif if (graphDesc._inputDesc.totalSize != input_bytes) { - THROW_IE_EXCEPTION << "Input has unexpected size " << input_bytes << ", expected " + IE_THROW() << "Input has unexpected size " << input_bytes << ", expected " << graphDesc._inputDesc.totalSize; } @@ -414,7 +423,7 @@ void MyriadExecutor::queueInference(GraphDesc &graphDesc, void *input_data, size graphDesc._inputFifoHandle, graphDesc._outputFifoHandle, input_data, &graphDesc._inputDesc.totalSize, nullptr); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to queue inference: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to queue inference: " << ncStatusToStr(graphDesc._graphHandle, status); } if (result_data != nullptr && result_bytes != 0) { @@ -427,7 +436,7 @@ void MyriadExecutor::getResult(GraphDesc &graphDesc, void *result_data, unsigned void *userParam = nullptr; status = ncFifoReadElem(graphDesc._outputFifoHandle, result_data, &result_bytes, &userParam); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to read output from FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); + IE_THROW() << "Failed to read output from FIFO: " << ncStatusToStr(graphDesc._graphHandle, status); } } @@ -507,7 +516,7 @@ float MyriadExecutor::GetThermal(const DevicePtr& device) { &thermal_stats_len); if (status != NC_OK) { - THROW_IE_EXCEPTION << "Failed to get thermal stats: " << ncStatusToStr(nullptr, status); + IE_THROW() << "Failed to get thermal stats: " << ncStatusToStr(nullptr, status); } else { return thermal_stats[0]; } diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_executor.h b/inference-engine/src/vpu/myriad_plugin/myriad_executor.h index 52d41a88d6949e..7adaad60f97521 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_executor.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_executor.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.cpp index 4dc4edd054517f..27145c282cd0cd 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.h b/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.h index dbbb4fe3f17c4f..ec41206109bd55 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_infer_request.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_metrics.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_metrics.cpp index f65b7c949823aa..3d314cc873cf10 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_metrics.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_metrics.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,6 +26,8 @@ MyriadMetrics::MyriadMetrics() { METRIC_KEY(OPTIMIZATION_CAPABILITIES), METRIC_KEY(RANGE_FOR_ASYNC_INFER_REQUESTS), METRIC_KEY(DEVICE_THERMAL), + METRIC_KEY(DEVICE_ARCHITECTURE), + METRIC_KEY(IMPORT_EXPORT_SUPPORT), }; IE_SUPPRESS_DEPRECATED_START @@ -114,6 +116,14 @@ const std::unordered_set& MyriadMetrics::OptimizationCapabilities() return _optimizationCapabilities; } +std::string MyriadMetrics::DeviceArchitecture(const std::map & options) const { + // TODO: Task 49309. Return same architecture for devices which can share same cache + // E.g. when device "MYRIAD.ma2480-1" is loaded, options.at("DEVICE_ID") will be "ma2480-1" + // For DEVICE_ID="ma2480-0" and DEVICE_ID="ma2480-1" this method shall return same string, like "ma2480" + // In this case inference engine will be able to reuse cached model and total reduce load network time + return "MYRIAD"; +} + RangeType MyriadMetrics::RangeForAsyncInferRequests( const std::map& config) const { @@ -126,7 +136,7 @@ RangeType MyriadMetrics::RangeForAsyncInferRequests( } } catch(...) { - THROW_IE_EXCEPTION << "Invalid config value for MYRIAD_THROUGHPUT_STREAMS, can't cast to int"; + IE_THROW() << "Invalid config value for MYRIAD_THROUGHPUT_STREAMS, can't cast to int"; } } diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_metrics.h b/inference-engine/src/vpu/myriad_plugin/myriad_metrics.h index 8b452469a67255..544548ead00e36 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_metrics.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_metrics.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,6 +36,7 @@ class MyriadMetrics { const std::vector &devicePool) const; std::string FullName(std::string deviceName) const; + std::string DeviceArchitecture(const std::map & options) const; float DevicesThermal(const DevicePtr& device) const; const std::unordered_set& SupportedMetrics() const; const std::unordered_set& SupportedConfigKeys() const; diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.cpp index 5ba91ef4f86d65..b34c4af075018f 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.cpp @@ -1,9 +1,10 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "myriad_mvnc_wraper.h" -#include "details/ie_exception.hpp" + +#include using namespace vpu::MyriadPlugin; @@ -14,7 +15,7 @@ using namespace vpu::MyriadPlugin; Mvnc::Mvnc() { WatchdogHndl_t* watchdogHndl = nullptr; if (watchdog_create(&watchdogHndl) != WD_ERRNO) { - THROW_IE_EXCEPTION << "Cannot create watchdog."; + IE_THROW() << "Cannot create watchdog."; } m_watcdogPtr = WatchdogUniquePtr(watchdogHndl, [](WatchdogHndl_t* watchdogHndl) { @@ -26,7 +27,7 @@ std::vector Mvnc::AvailableDevicesDesc() const { int deviceCount = 0; std::vector availableDevices(NC_MAX_DEVICES); if (ncAvailableDevices(&availableDevices[0], NC_MAX_DEVICES, &deviceCount) != NC_OK) { - THROW_IE_EXCEPTION << "Cannot receive available devices."; + IE_THROW() << "Cannot receive available devices."; } availableDevices.resize(deviceCount); diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.h b/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.h index 43fcaed69d6e89..398da82ecd006e 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_mvnc_wraper.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp index 7f6d6f5e1bb84a..e83a0704dfff1f 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -52,7 +52,7 @@ Parameter Engine::GetConfig(const std::string& name, const std::mapSupportedConfigKeys(); if (std::find(supported_keys.begin(), supported_keys.end(), name) == supported_keys.end()) { - THROW_IE_EXCEPTION << "Unsupported config key : " << name; + IE_THROW() << "Unsupported config key : " << name; } Parameter result; @@ -159,7 +159,7 @@ InferenceEngine::ExecutableNetwork Engine::ImportNetwork( std::ifstream blobFile(modelFileName, std::ios::binary); if (!blobFile.is_open()) { - THROW_IE_EXCEPTION << ie::details::as_status << NETWORK_NOT_READ; + IE_THROW(NetworkNotRead); } return ImportNetwork(blobFile, config); @@ -207,6 +207,10 @@ InferenceEngine::Parameter Engine::GetMetric(const std::string& name, IE_SET_METRIC_RETURN(SUPPORTED_CONFIG_KEYS, std::vector{optimizationCapabilities.cbegin(), optimizationCapabilities.cend()}); } else if (name == METRIC_KEY(RANGE_FOR_ASYNC_INFER_REQUESTS)) { IE_SET_METRIC_RETURN(RANGE_FOR_ASYNC_INFER_REQUESTS, _metrics->RangeForAsyncInferRequests(_config)); + } else if (name == METRIC_KEY(DEVICE_ARCHITECTURE)) { + IE_SET_METRIC_RETURN(DEVICE_ARCHITECTURE, _metrics->DeviceArchitecture(options)); + } else if (name == METRIC_KEY(IMPORT_EXPORT_SUPPORT)) { + IE_SET_METRIC_RETURN(IMPORT_EXPORT_SUPPORT, true); } else if (name == METRIC_KEY(DEVICE_THERMAL)) { const auto& device = getDeviceByName(getSpecifiedDeviceName()); if (device != nullptr) { @@ -215,5 +219,5 @@ InferenceEngine::Parameter Engine::GetMetric(const std::string& name, return Parameter(); } } - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); } diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_plugin.h b/inference-engine/src/vpu/myriad_plugin/myriad_plugin.h index 7e7cb7f96b6e77..ac965a78810d2c 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_plugin.h +++ b/inference-engine/src/vpu/myriad_plugin/myriad_plugin.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ class Engine : public ie::InferencePluginInternal { public: explicit Engine(std::shared_ptr mvnc); - ~Engine() override { + ~Engine() { MyriadExecutor::closeDevices(_devicePool, _mvnc); } diff --git a/inference-engine/tests/CMakeLists.txt b/inference-engine/tests/CMakeLists.txt index 132f4083351507..67dbe6a0b0fcd8 100644 --- a/inference-engine/tests/CMakeLists.txt +++ b/inference-engine/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -8,8 +8,8 @@ enable_testing() add_subdirectory(ngraph_helpers) add_subdirectory(unit) +add_subdirectory(ie_test_utils) if(ENABLE_FUNCTIONAL_TESTS) - add_subdirectory(ie_test_utils) add_subdirectory(functional) endif() \ No newline at end of file diff --git a/inference-engine/tests/functional/CMakeLists.txt b/inference-engine/tests/functional/CMakeLists.txt index dc9106b772f744..7acdc314ad23a9 100644 --- a/inference-engine/tests/functional/CMakeLists.txt +++ b/inference-engine/tests/functional/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/functional/inference_engine/CMakeLists.txt b/inference-engine/tests/functional/inference_engine/CMakeLists.txt index fcfd945c5ca8ba..085ea6b427ca86 100644 --- a/inference-engine/tests/functional/inference_engine/CMakeLists.txt +++ b/inference-engine/tests/functional/inference_engine/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2019-2021 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -16,6 +15,8 @@ set(LINK_LIBRARIES openvino::itt openvino::conditional_compilation sharedTestClasses + inference_engine_snippets + offline_transformations ) set(DEPENDENCIES @@ -86,7 +87,7 @@ function(ie_headers_compilation_with_custom_flags) endif() if(NOT IE_TEST_PLUGIN_API) - if(NOT CLDNN__IOCL_ICD_INCDIRS) + if(NOT CLDNN__OCL_ICD_INCDIRS) list(APPEND IE_TEST_HEADERS_TO_SKIP "gpu/gpu_ocl_wrapper.hpp" "gpu/gpu_context_api_ocl.hpp" "gpu/gpu_context_api_va.hpp" @@ -139,8 +140,8 @@ function(ie_headers_compilation_with_custom_flags) $) else() # OpenCL headers if any - if(CLDNN__IOCL_ICD_INCDIRS) - target_include_directories(${target_name} SYSTEM PRIVATE ${CLDNN__IOCL_ICD_INCDIRS}) + if(CLDNN__OCL_ICD_INCDIRS) + target_include_directories(${target_name} SYSTEM PRIVATE ${CLDNN__OCL_ICD_INCDIRS}) endif() endif() diff --git a/inference-engine/tests/functional/inference_engine/async_infer_request_test.cpp b/inference-engine/tests/functional/inference_engine/async_infer_request_test.cpp index 5a84d5f0b95abe..5f3983a0a63300 100644 --- a/inference-engine/tests/functional/inference_engine/async_infer_request_test.cpp +++ b/inference-engine/tests/functional/inference_engine/async_infer_request_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,76 +15,76 @@ using namespace InferenceEngine::details; TEST(InferRequestCPPTests, throwsOnInitWithNull) { IInferRequest::Ptr nlptr = nullptr; - ASSERT_THROW(InferRequest req(nlptr), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(InferRequest req(nlptr), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedSetBlob) { InferRequest req; - ASSERT_THROW(req.SetBlob({}, {}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.SetBlob({}, {}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedGetBlob) { InferRequest req; - ASSERT_THROW(req.GetBlob({}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.GetBlob({}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedSetBlobPreproc) { InferRequest req; - ASSERT_THROW(req.SetBlob({}, {}, {}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.SetBlob({}, {}, {}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedGetPreProcess) { InferRequest req; - ASSERT_THROW(req.GetPreProcess({}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.GetPreProcess({}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedInfer) { InferRequest req; - ASSERT_THROW(req.Infer(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Infer(), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedGetPerformanceCounts) { InferRequest req; - ASSERT_THROW(req.GetPerformanceCounts(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.GetPerformanceCounts(), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedSetInput) { InferRequest req; - ASSERT_THROW(req.SetInput({{}}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.SetInput({{}}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedSetOutput) { InferRequest req; - ASSERT_THROW(req.SetOutput({{}}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.SetOutput({{}}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedSetBatch) { InferRequest req; - ASSERT_THROW(req.SetBatch({}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.SetBatch({}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedStartAsync) { InferRequest req; - ASSERT_THROW(req.StartAsync(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.StartAsync(), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedWait) { InferRequest req; - ASSERT_THROW(req.Wait({}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Wait({}), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedSetCompletionCallback) { InferRequest req; std::function f; - ASSERT_THROW(req.SetCompletionCallback(f), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.SetCompletionCallback(f), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedCast) { InferRequest req; - ASSERT_THROW((void)static_cast(req), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW((void)static_cast(req), InferenceEngine::Exception); } TEST(InferRequestCPPTests, throwsOnUninitializedQueryState) { InferRequest req; - ASSERT_THROW(req.QueryState(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.QueryState(), InferenceEngine::Exception); } diff --git a/inference-engine/tests/functional/inference_engine/blob_copy_test.cpp b/inference-engine/tests/functional/inference_engine/blob_copy_test.cpp index baa9b3b3478a49..1968c4cb91da9e 100644 --- a/inference-engine/tests/functional/inference_engine/blob_copy_test.cpp +++ b/inference-engine/tests/functional/inference_engine/blob_copy_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,7 @@ InferenceEngine::Layout setLayout(IsInterleaved isInterleaved, int dimsSize) { } else if (dimsSize == 2) { return (isInterleaved) ? InferenceEngine::Layout::NHWC : InferenceEngine::Layout::NCHW; } - THROW_IE_EXCEPTION << "Can't set layout"; + IE_THROW() << "Can't set layout"; } // Support only for 4d and 5d blobs @@ -37,7 +37,7 @@ SizeVector SetDimVector(BatchNum batchNum, ChannelNum channelNum, Dims dims) { } else if (dims.size() == 3) { return SizeVector{ batchNum, channelNum, dims[0], dims[1], dims[2] }; } - THROW_IE_EXCEPTION << "Can't set dimVector"; + IE_THROW() << "Can't set dimVector"; } // For FP16 and Q78 precision we use int16_t type @@ -62,13 +62,15 @@ InferenceEngine::Blob::Ptr createBlob(InferenceEngine::Precision precision, Size return make_shared_blob(tensorDesc); case InferenceEngine::Precision::U16: return make_shared_blob(tensorDesc); + case InferenceEngine::Precision::I4: case InferenceEngine::Precision::I8: case InferenceEngine::Precision::BIN: return make_shared_blob(tensorDesc); + case InferenceEngine::Precision::U4: case InferenceEngine::Precision::U8: return make_shared_blob(tensorDesc); default: - THROW_IE_EXCEPTION << "Unsupported precision"; + IE_THROW() << "Unsupported precision"; } } @@ -134,13 +136,15 @@ void FillBlob(Blob::Ptr& inputBlob) { return FillBlobRandom(inputBlob); case InferenceEngine::Precision::U16: return FillBlobRandom(inputBlob); + case InferenceEngine::Precision::I4: case InferenceEngine::Precision::I8: case InferenceEngine::Precision::BIN: return FillBlobRandom(inputBlob); + case InferenceEngine::Precision::U4: case InferenceEngine::Precision::U8: return FillBlobRandom(inputBlob); default: - THROW_IE_EXCEPTION << "Cant fill blob with \"" << precision << "\" precision\n"; + IE_THROW() << "Cant fill blob with \"" << precision << "\" precision\n"; } } @@ -224,9 +228,11 @@ bool IsCorrectBlobCopy(Blob::Ptr& srcBlob, Blob::Ptr& dstBlob) { return IsCorrectBlobCopy_Impl(srcBlob, dstBlob); case InferenceEngine::Precision::U16: return IsCorrectBlobCopy_Impl(srcBlob, dstBlob); + case InferenceEngine::Precision::I4: case InferenceEngine::Precision::I8: case InferenceEngine::Precision::BIN: return IsCorrectBlobCopy_Impl(srcBlob, dstBlob); + case InferenceEngine::Precision::U4: case InferenceEngine::Precision::U8: return IsCorrectBlobCopy_Impl(srcBlob, dstBlob); default: @@ -351,9 +357,11 @@ bool IsEqualBlobCopy(Blob::Ptr& srcBlob, Blob::Ptr& dstBlob) { return IsEqualBlobCopy_Impl(srcBlob, dstBlob); case InferenceEngine::Precision::I64: return IsEqualBlobCopy_Impl(srcBlob, dstBlob); + case InferenceEngine::Precision::I4: case InferenceEngine::Precision::I8: case InferenceEngine::Precision::BIN: return IsEqualBlobCopy_Impl(srcBlob, dstBlob); + case InferenceEngine::Precision::U4: case InferenceEngine::Precision::U8: return IsEqualBlobCopy_Impl(srcBlob, dstBlob); case InferenceEngine::Precision::U16: @@ -404,13 +412,15 @@ void copy3DBlobsAllBytesWithReLayoutWrapper(const Blob::Ptr& srcLayoutBlob, Blob return copy3DBlobsAllBytesWithReLayout(srcLayoutBlob, trgLayoutBlob); case InferenceEngine::Precision::U16: return copy3DBlobsAllBytesWithReLayout(srcLayoutBlob, trgLayoutBlob); + case InferenceEngine::Precision::I4: case InferenceEngine::Precision::I8: case InferenceEngine::Precision::BIN: return copy3DBlobsAllBytesWithReLayout(srcLayoutBlob, trgLayoutBlob); + case InferenceEngine::Precision::U4: case InferenceEngine::Precision::U8: return copy3DBlobsAllBytesWithReLayout(srcLayoutBlob, trgLayoutBlob); default: - THROW_IE_EXCEPTION << "Cant copy blob with \"" << precision << "\" precision\n"; + IE_THROW() << "Cant copy blob with \"" << precision << "\" precision\n"; } } diff --git a/inference-engine/tests/functional/inference_engine/caching_test.cpp b/inference-engine/tests/functional/inference_engine/caching_test.cpp new file mode 100644 index 00000000000000..20b3ac5bc7c14a --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/caching_test.cpp @@ -0,0 +1,1179 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include +#include +#include +#include +#include + +#include "ie_plugin_ptr.hpp" +#include "ngraph/function.hpp" +#include "details/ie_so_loader.h" +#include "ie_metric_helpers.hpp" +#include "ie_iexecutable_network.hpp" + +#include "cpp_interfaces/impl/ie_executable_network_internal.hpp" +#include "cpp_interfaces/impl/ie_plugin_internal.hpp" + +#include "common_test_utils/unicode_utils.hpp" +#include "common_test_utils/file_utils.hpp" +#include "common_test_utils/test_constants.hpp" + +#include "functional_test_utils/test_model/test_model.hpp" +#include "functional_test_utils/network_utils.hpp" + +#include "unit_test_utils/mocks/mock_iexecutable_network.hpp" + +using namespace InferenceEngine; +using namespace ::testing; +using namespace InferenceEngine::details; +using namespace std::placeholders; +using namespace std::chrono; + +enum class TestLoadType { + ECNN, + EContext, + EModelName +}; +using TestParam = std::tuple; + +// GCC4.8 limitation: have to specify type of each element in list +static const std::vector loadVariants = { + TestParam { TestLoadType::ECNN, std::string("ByCNNNetwork"), false }, + TestParam { TestLoadType::EContext, std::string("ByRemoteContext"), true }, + TestParam { TestLoadType::EModelName, std::string("ByModelName"), false }, +}; + +static const std::vector cacheFolders { + std::string("testCache"), +}; + +std::string getTestCaseName(const testing::TestParamInfo> &obj) { + return std::get<1>(std::get<0>(obj.param)) + "_" + std::get<1>(obj.param); +} + +class MockRemoteContext : public RemoteContext { + std::string m_name; +public: + MockRemoteContext(std::string name): m_name(std::move(name)) {} + std::string getDeviceName() const noexcept { return m_name; } + MOCK_METHOD2(CreateBlob, RemoteBlob::Ptr(const TensorDesc&, const ParamMap&)); + MOCK_QUALIFIED_METHOD0(getParams, const, ParamMap()); +}; + +class MockCachingInferencePlugin : public InferenceEngine::InferencePluginInternal { +public: + MockCachingInferencePlugin() = default; + ~MockCachingInferencePlugin() = default; + + MOCK_METHOD2(LoadExeNetworkImpl, ExecutableNetworkInternal::Ptr(const CNNNetwork& network, + const std::map& config)); + + MOCK_METHOD3(LoadExeNetworkImpl, ExecutableNetworkInternal::Ptr(const CNNNetwork& network, RemoteContext::Ptr context, + const std::map& config)); + + MOCK_METHOD2(ImportNetworkImpl, ExecutableNetwork(std::istream& networkModel, + const std::map& config)); + + MOCK_METHOD3(ImportNetworkImpl, ExecutableNetwork(std::istream& networkModel, + const RemoteContext::Ptr& context, + const std::map& config)); + + MOCK_CONST_METHOD2(QueryNetwork, QueryNetworkResult(const CNNNetwork& network, + const std::map& config)); + + MOCK_CONST_METHOD2(GetMetric, Parameter(const std::string& name, const std::map& options)); + MOCK_METHOD1(GetDefaultContext, RemoteContext::Ptr(const ParamMap& params)); +}; + +class MockExecutableNetwork : public ExecutableNetworkInternal { +public: + MockExecutableNetwork() {} + MOCK_METHOD1(ExportImpl, void(std::ostream& networkModel)); + MOCK_METHOD0(CreateInferRequest, IInferRequest::Ptr()); + MOCK_CONST_METHOD0(GetInputsInfo, ConstInputsDataMap()); + MOCK_CONST_METHOD0(GetOutputsInfo, ConstOutputsDataMap()); +}; + +//------------------------------------------------------ +class MkDirGuard { + std::string m_dir; +public: + MkDirGuard(const std::string &dir = std::string()): m_dir(dir) { + if (!m_dir.empty()) { + CommonTestUtils::createDirectory(m_dir); + } + } + + MkDirGuard(const MkDirGuard&) = delete; + MkDirGuard& operator=(const MkDirGuard&) = delete; + + ~MkDirGuard() { + if (!m_dir.empty()) { + CommonTestUtils::removeFilesWithExt(m_dir, "blob"); + CommonTestUtils::removeDir(m_dir); + } + } +}; + +class CachingTest : public ::testing::TestWithParam> { +public: + std::unique_ptr sharedObjectLoader; + std::function injectProxyEngine; + std::string modelName = "Caching_test.xml"; + std::string weightsName = "Caching_test.bin"; + std::string deviceName = "mock"; + std::string deviceToLoad = "mock"; + std::shared_ptr mockPlugin; + std::shared_ptr net; + std::unique_ptr m_dirCreator; + TestLoadType m_type; + std::string m_cacheDir; + using LoadFunction = std::function; + using LoadFunctionWithCfg = std::function &)>; + LoadFunction m_testFunction; + LoadFunctionWithCfg m_testFunctionWithCfg; + bool m_remoteContext = false; + using CNNCallback = std::function; + CNNCallback m_cnnCallback = nullptr; + + + std::string get_mock_engine_name() { + std::string mockEngineName("mock_engine"); + return CommonTestUtils::pre + mockEngineName + IE_BUILD_POSTFIX + CommonTestUtils::ext; + } + + static std::string generateTestFilePrefix() { + // Generate unique file names based on test name, thread id and timestamp + // This allows execution of tests in parallel (stress mode) + auto testInfo = UnitTest::GetInstance()->current_test_info(); + std::string testName = testInfo->test_case_name(); + testName += testInfo->name(); + testName = std::to_string(std::hash()(testName)); + std::stringstream ss; + auto ts = duration_cast(high_resolution_clock::now().time_since_epoch()); + ss << testName << "_" << std::this_thread::get_id() << "_" << ts.count(); + testName = ss.str(); + return testName; + } + + void initParamTest() { + m_type = std::get<0>(std::get<0>(GetParam())); + m_cacheDir = std::get<1>(GetParam()); + m_testFunction = getLoadFunction(m_type); + m_testFunctionWithCfg = getLoadFunctionWithCfg(m_type); + m_remoteContext = std::get<2>(std::get<0>(GetParam())); + auto testName = generateTestFilePrefix(); + modelName = testName + ".xml"; + weightsName = testName + ".bin"; + m_cacheDir = testName + m_cacheDir; + m_dirCreator = std::unique_ptr(new MkDirGuard(m_cacheDir)); + } + + void SetUp() override { + initParamTest(); + mockPlugin = std::make_shared(); + net = std::make_shared(); + setupMock(*mockPlugin); + std::string libraryName = get_mock_engine_name(); + sharedObjectLoader.reset(new SharedObjectLoader(libraryName.c_str())); + injectProxyEngine = make_std_function("InjectProxyEngine"); + + FuncTestUtils::TestModel::generateTestModel(modelName, weightsName); + } + + void TearDown() override { + CommonTestUtils::removeIRFiles(modelName, weightsName); + } + + void testLoad(std::function func) { + Core ie; + injectProxyEngine(mockPlugin.get()); + ie.RegisterPlugin(std::string("mock_engine") + IE_BUILD_POSTFIX, deviceName); + func(ie); + ie.UnregisterPlugin(deviceName); + } + + LoadFunction getLoadFunction(TestLoadType type) const { + switch (type) { + case TestLoadType::ECNN: + return [&](Core& ie) { performReadAndLoad(ie); }; + case TestLoadType::EContext: + return [&](Core& ie) { performReadAndLoadWithContext(ie); }; + case TestLoadType::EModelName: + return [&](Core& ie) { performLoadByName(ie); }; + } + return nullptr; + } + + LoadFunctionWithCfg getLoadFunctionWithCfg(TestLoadType type) const { + switch (type) { + case TestLoadType::ECNN: + return std::bind(&CachingTest::performReadAndLoad, this, _1, _2); + case TestLoadType::EContext: + return std::bind(&CachingTest::performReadAndLoadWithContext, this, _1, _2); + case TestLoadType::EModelName: + return std::bind(&CachingTest::performLoadByName, this, _1, _2); + } + return nullptr; + } + + void performLoadByName(Core& ie, const std::map& config = {}) const { + ie.LoadNetwork(modelName, deviceToLoad, config); + } + + void performReadAndLoad(Core& ie, const std::map& config = {}) const { + auto cnnNetwork = ie.ReadNetwork(modelName); + if (m_cnnCallback) m_cnnCallback(cnnNetwork); + ie.LoadNetwork(cnnNetwork, deviceToLoad, config); + } + + void performReadAndLoadWithContext(Core& ie, const std::map& config = {}) const { + auto cnnNetwork = ie.ReadNetwork(modelName); + EXPECT_CALL(*mockPlugin, GetDefaultContext(_)).Times(AnyNumber()); + auto context = ie.GetDefaultContext(deviceToLoad); + if (m_cnnCallback) m_cnnCallback(cnnNetwork); + ie.LoadNetwork(cnnNetwork, context, config); + } + +private: + template + std::function make_std_function(const std::string& functionName) { + std::function ptr(reinterpret_cast(sharedObjectLoader->get_symbol(functionName.c_str()))); + return ptr; + } + + void setupMock(MockCachingInferencePlugin& plugin) { + ON_CALL(plugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)). + WillByDefault(Invoke([&](const std::string &, const std::map &) { + std::vector res; + res.push_back(METRIC_KEY(IMPORT_EXPORT_SUPPORT)); + res.push_back(METRIC_KEY(DEVICE_ARCHITECTURE)); + return res; + })); + ON_CALL(plugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)). + WillByDefault(Return(true)); + + ON_CALL(plugin, GetMetric(METRIC_KEY(SUPPORTED_CONFIG_KEYS), _)). + WillByDefault(Invoke([&](const std::string &, const std::map &) { + std::vector res; + res.push_back("SomeConfig"); + return res; + })); + + ON_CALL(plugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)). + WillByDefault(Return("mock")); + + ON_CALL(plugin, ImportNetworkImpl(_, _, _)). + WillByDefault(Invoke([&](std::istream &istr, RemoteContext::Ptr, + const std::map &) { + auto mock = std::make_shared(); + EXPECT_CALL(*mock, GetInputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + EXPECT_CALL(*mock, GetOutputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + return ExecutableNetwork(mock); + })); + + ON_CALL(plugin, ImportNetworkImpl(_, _)). + WillByDefault(Invoke([&](std::istream &istr, const std::map &) { + auto mock = std::make_shared(); + EXPECT_CALL(*mock, GetInputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + EXPECT_CALL(*mock, GetOutputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + return ExecutableNetwork(mock); + })); + + ON_CALL(plugin, LoadExeNetworkImpl(_, _, _)). + WillByDefault(Invoke([&](const CNNNetwork &, RemoteContext::Ptr, + const std::map &) { + return net; + })); + + ON_CALL(plugin, LoadExeNetworkImpl(_, _)). + WillByDefault(Invoke([&](const CNNNetwork &, + const std::map &) { + return net; + })); + + ON_CALL(plugin, GetDefaultContext(_)). + WillByDefault(Invoke([&](const ParamMap &) { + return std::make_shared(deviceToLoad); + })); + + ON_CALL(plugin, QueryNetwork(_, _)). + WillByDefault(Invoke([&](const CNNNetwork &network, const std::map&) { + QueryNetworkResult res; + auto function = network.getFunction(); + EXPECT_TRUE(function); + + for (auto &&node : function->get_ops()) { + res.supportedLayersMap.emplace(node->get_friendly_name(), deviceName); + } + return res; + })); + + EXPECT_CALL(*net, GetInputsInfo()).Times(AnyNumber()) + .WillRepeatedly(Return(ConstInputsDataMap{})); + EXPECT_CALL(*net, GetOutputsInfo()).Times(AnyNumber()) + .WillRepeatedly(Return(ConstOutputsDataMap{})); + } +}; + +TEST_P(CachingTest, TestLoad) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestLoadCustomImportExport) { + const int customNumber = 1234; + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + ON_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)). + WillByDefault(Invoke([&](std::istream& s, RemoteContext::Ptr, + const std::map &) { + int a; + s >> a; + EXPECT_EQ(customNumber, a); + auto mock = std::make_shared(); + EXPECT_CALL(*mock, GetInputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + EXPECT_CALL(*mock, GetOutputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + return ExecutableNetwork(mock); + })); + + ON_CALL(*mockPlugin, ImportNetworkImpl(_, _)). + WillByDefault(Invoke([&](std::istream &s, const std::map &) { + int a; + s >> a; + EXPECT_EQ(customNumber, a); + auto mock = std::make_shared(); + EXPECT_CALL(*mock, GetInputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + EXPECT_CALL(*mock, GetOutputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + return ExecutableNetwork(mock); + })); + + ON_CALL(*net, ExportImpl(_)).WillByDefault(Invoke([&] (std::ostream& s) { + s << customNumber; + })); + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +// Brief: when LoadNetwork is called from different config - old cache shall not be used +TEST_P(CachingTest, TestChangeLoadConfig) { + const std::string CUSTOM_KEY = "CUSTOM_KEY"; + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + ON_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_CONFIG_KEYS), _)). + WillByDefault(Invoke([&](const std::string &, const std::map &) { + std::vector res; + res.push_back(CUSTOM_KEY); + return res; + })); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunctionWithCfg(ie, {{CUSTOM_KEY, "0"}}); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunctionWithCfg(ie, {{CUSTOM_KEY, "1"}}); + }); + } +} + +TEST_P(CachingTest, TestNoCacheEnabled) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(0); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestNoCacheSupported) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)) + .Times(AnyNumber()).WillRepeatedly(Return(false)); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestNoCacheMetricSupported) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)) + .Times(AnyNumber()).WillRepeatedly(Return(std::vector{})); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(0); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(0); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestLoadChangeCacheDir) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + + { + std::string newCacheDir = m_cacheDir + "2"; + MkDirGuard dir(newCacheDir); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), newCacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestClearCacheDir) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(0); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), ""}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestChangeOtherConfig) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + ie.SetConfig({{"someKey", "someValue"}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestChangeCacheDirFailure) { + std::string longName(1000000, ' '); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + EXPECT_ANY_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir + "/" + longName}})); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestCacheDirCreateRecursive) { + std::string newCacheDir1 = m_cacheDir + CommonTestUtils::FileSeparator + "a"; + std::string newCacheDir2 = newCacheDir1 + CommonTestUtils::FileSeparator + "b"; + std::string newCacheDir3 = newCacheDir2 + CommonTestUtils::FileSeparator + CommonTestUtils::FileSeparator; + + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), newCacheDir3}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } + CommonTestUtils::removeFilesWithExt(newCacheDir2, "blob"); + std::remove(newCacheDir2.c_str()); + std::remove(newCacheDir1.c_str()); +} + +TEST_P(CachingTest, TestDeviceArchitecture) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()) + .WillRepeatedly(Invoke([&](const std::string&, const std::map& options) { + auto id = options.at("DEVICE_ID").as(); + if (std::stoi(id) < 10) { + return "mock_first_architecture"; + } else { + return "mock_another_architecture"; + } + })); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + deviceToLoad = "mock.0"; + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + deviceToLoad = "mock.1"; + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + deviceToLoad = "mock.50"; + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + deviceToLoad = "mock.51"; + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestNoDeviceArchitecture) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()) + .WillRepeatedly(Invoke([&] (const std::string&, const std::map&) { + return std::vector{METRIC_KEY(IMPORT_EXPORT_SUPPORT)}; + })); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(0); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + deviceToLoad = "mock.0"; + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + deviceToLoad = "mock.50"; + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, TestThrowOnExport) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1).WillOnce(Throw(1)); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + EXPECT_ANY_THROW(m_testFunction(ie)); + }); + } +} + +TEST_P(CachingTest, TestThrowOnImport) { + ON_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).WillByDefault(Throw(1)); + ON_CALL(*mockPlugin, ImportNetworkImpl(_, _)).WillByDefault(Throw(1)); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + EXPECT_ANY_THROW(m_testFunction(ie)); + }); + } + { // Step 3: same load, cache should be deleted due to unsuccessful import on step 2 + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } +} + +TEST_P(CachingTest, TestNetworkModified) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } + if (m_type == TestLoadType::EModelName) { + // Modify model file + std::fstream stream(modelName, std::fstream::out | std::fstream::app); + stream << " "; + } else { + // Modify loaded CNN network + m_cnnCallback = [&](CNNNetwork& network) { + auto f = network.getFunction(); + auto res = f->get_results(); + f->remove_result(res.front()); + }; + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } + { // Step 3: same load, should be ok now + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } +} + +TEST_P(CachingTest, TestCacheFileCorrupted) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } + { + auto blobs = CommonTestUtils::listFilesWithExt(m_cacheDir, "blob"); + for (const auto& fileName : blobs) { + std::ofstream stream(fileName, std::ios_base::binary); + stream << "SomeCorruptedText"; + } + } + { // Step 2. Cache is corrupted, will be silently removed + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } + { // Step 3: same load, should be ok now due to re-creation of cache + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } +} + +TEST_P(CachingTest, TestCacheFileOldVersion) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(IMPORT_EXPORT_SUPPORT), _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()); + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } + { + auto blobs = CommonTestUtils::listFilesWithExt(m_cacheDir, "blob"); + for (const auto& fileName : blobs) { + std::string content; + { + std::ifstream inp(fileName, std::ios_base::binary); + std::ostringstream ostr; + ostr << inp.rdbuf(); + content = ostr.str(); + } + std::string buildNum = GetInferenceEngineVersion()->buildNumber; + std::string zeroBuild(buildNum.size(), '0'); + auto index = content.find(buildNum); + if (index != std::string::npos) { + content.replace(index, buildNum.size(), zeroBuild); + } else { + SKIP(); + } + std::ofstream out(fileName, std::ios_base::binary); + out.write(content.c_str(), content.size()); + } + } + { // Step 2. Build number mismatch, cache will be silently removed + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } + { // Step 3: same load, should be ok now due to re-creation of cache + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(m_remoteContext ? 1 : 0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(!m_remoteContext ? 1 : 0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + EXPECT_NO_THROW(ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}})); + EXPECT_NO_THROW(m_testFunction(ie)); + }); + } +} + +TEST_P(CachingTest, LoadHetero_NoCacheMetric) { + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_CONFIG_KEYS), _)) + .Times(AnyNumber()).WillRepeatedly(Return(std::vector{})); + EXPECT_CALL(*mockPlugin, QueryNetwork(_, _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(SUPPORTED_METRICS), _)) + .Times(AnyNumber()).WillRepeatedly(Return(std::vector{})); + // Hetero supports Import/Export, but mock plugin does not + deviceToLoad = CommonTestUtils::DEVICE_HETERO + std::string(":mock.1,mock.2"); + if (m_remoteContext) { + return; // skip the remote Context test for Hetero plugin + } + for (int i = 0; i < 2; i++) { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, LoadHetero_OneDevice) { + EXPECT_CALL(*mockPlugin, QueryNetwork(_, _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(_, _)).Times(AnyNumber()); + deviceToLoad = CommonTestUtils::DEVICE_HETERO + std::string(":mock"); + if (m_remoteContext) { + return; // skip the remote Context test for Hetero plugin + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + // Ensure that only 1 blob (for Hetero) is created + EXPECT_EQ(CommonTestUtils::listFilesWithExt(m_cacheDir, "blob").size(), 1); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, LoadHetero_TargetFallbackFromCore) { + EXPECT_CALL(*mockPlugin, QueryNetwork(_, _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(_, _)).Times(AnyNumber()); + deviceToLoad = CommonTestUtils::DEVICE_HETERO; + if (m_remoteContext) { + return; // skip the remote Context test for Hetero plugin + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + ie.SetConfig({{"TARGET_FALLBACK", "mock"}}, CommonTestUtils::DEVICE_HETERO); + m_testFunction(ie); + }); + // Ensure that only 1 blob (for Hetero) is created + EXPECT_EQ(CommonTestUtils::listFilesWithExt(m_cacheDir, "blob").size(), 1); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + ie.SetConfig({{"TARGET_FALLBACK", "mock"}}, CommonTestUtils::DEVICE_HETERO); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, LoadHetero_MultiArchs) { + EXPECT_CALL(*mockPlugin, GetMetric(_, _)).Times(AnyNumber()); + int customNumber = 1234; + ON_CALL(*mockPlugin, ImportNetworkImpl(_, _)). + WillByDefault(Invoke([&](std::istream &s, const std::map &) { + int a; + s >> a; + EXPECT_EQ(customNumber, a); + auto mock = std::make_shared(); + EXPECT_CALL(*mock, GetInputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + EXPECT_CALL(*mock, GetOutputsInfo(_, _)).Times(AnyNumber()).WillRepeatedly(Return(OK)); + return ExecutableNetwork(mock); + })); + + ON_CALL(*net, ExportImpl(_)).WillByDefault(Invoke([&] (std::ostream& s) { + s << customNumber; + })); + EXPECT_CALL(*mockPlugin, QueryNetwork(_, _)).Times(AnyNumber()).WillRepeatedly( + Invoke([&](const CNNNetwork &network, const std::map &config) { + QueryNetworkResult res; + auto function = network.getFunction(); + EXPECT_TRUE(function); + + auto id = config.at("DEVICE_ID"); + bool supportsRelu = std::stoi(id) < 10; + + for (auto &&node : function->get_ops()) { + std::string nodeType = node->get_type_name(); + if ((nodeType == "Relu" && supportsRelu) || + (nodeType != "Relu" && !supportsRelu)) { + res.supportedLayersMap.emplace(node->get_friendly_name(), deviceName + "." + id); + } + } + return res; + })); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()) + .WillRepeatedly(Invoke([&](const std::string &, const std::map &options) { + auto id = options.at("DEVICE_ID").as(); + if (std::stoi(id) < 10) { + return "mock_first_architecture"; + } else { + return "mock_another_architecture"; + } + })); + deviceToLoad = CommonTestUtils::DEVICE_HETERO + std::string(":mock.1,mock.51"); + if (m_remoteContext) { + return; // skip the remote Context test for Hetero plugin + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(AtLeast(2)); // for .1 and for .51 + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(AtLeast(2)); // for .1 and for .51 + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + // Ensure that only 1 blob (for Hetero) is created + EXPECT_EQ(CommonTestUtils::listFilesWithExt(m_cacheDir, "blob").size(), 1); + } + + deviceToLoad = CommonTestUtils::DEVICE_HETERO + std::string(":mock.2,mock.52"); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(AtLeast(2)); // for .2 and for .52 + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + deviceToLoad = CommonTestUtils::DEVICE_HETERO + std::string(":mock.53,mock.3"); + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(AtLeast(1)); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(AtLeast(1)); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +TEST_P(CachingTest, LoadHetero_MultiArchs_TargetFallback_FromCore) { + EXPECT_CALL(*mockPlugin, GetMetric(_, _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, QueryNetwork(_, _)).Times(AnyNumber()); + EXPECT_CALL(*mockPlugin, GetMetric(METRIC_KEY(DEVICE_ARCHITECTURE), _)).Times(AnyNumber()) + .WillRepeatedly(Invoke([&](const std::string &, const std::map &options) { + auto id = options.at("DEVICE_ID").as(); + if (std::stoi(id) < 10) { + return "mock_first_architecture"; + } else { + return "mock_another_architecture"; + } + })); + deviceToLoad = CommonTestUtils::DEVICE_HETERO; + if (m_remoteContext) { + return; // skip the remote Context test for Hetero plugin + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + ie.SetConfig({{"TARGET_FALLBACK", "mock.1"}}, CommonTestUtils::DEVICE_HETERO); + m_testFunction(ie); + }); + } + + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*net, ExportImpl(_)).Times(0); + testLoad([&](Core &ie) { + ie.SetConfig({{"TARGET_FALLBACK", "mock.1"}}, CommonTestUtils::DEVICE_HETERO); + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } + { + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, LoadExeNetworkImpl(_, _)).Times(1); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _, _)).Times(0); + EXPECT_CALL(*mockPlugin, ImportNetworkImpl(_, _)).Times(0); + EXPECT_CALL(*net, ExportImpl(_)).Times(1); + testLoad([&](Core &ie) { + ie.SetConfig({{"TARGET_FALLBACK", "mock.51"}}, CommonTestUtils::DEVICE_HETERO); + ie.SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheDir}}); + m_testFunction(ie); + }); + } +} + +INSTANTIATE_TEST_CASE_P(CachingTest, CachingTest, + ::testing::Combine( + ::testing::ValuesIn(loadVariants), + ::testing::ValuesIn(cacheFolders)), + getTestCaseName); diff --git a/inference-engine/tests/functional/inference_engine/caseless_tests.cpp b/inference-engine/tests/functional/inference_engine/caseless_tests.cpp index 7656e72ec1febe..c05ca763c4ce46 100644 --- a/inference-engine/tests/functional/inference_engine/caseless_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/caseless_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/cnn_network/cnn_ngraph_impl_tests.cpp b/inference-engine/tests/functional/inference_engine/cnn_network/cnn_ngraph_impl_tests.cpp index 7f85e8abcb8a1b..aa1b92d96e941e 100644 --- a/inference-engine/tests/functional/inference_engine/cnn_network/cnn_ngraph_impl_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/cnn_network/cnn_ngraph_impl_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/cnn_network/convert_ngraph_to_cnn_network_tests.cpp b/inference-engine/tests/functional/inference_engine/cnn_network/convert_ngraph_to_cnn_network_tests.cpp index d0a45615af3c48..5e5944583fced4 100644 --- a/inference-engine/tests/functional/inference_engine/cnn_network/convert_ngraph_to_cnn_network_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/cnn_network/convert_ngraph_to_cnn_network_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,7 +44,7 @@ TEST(ConvertFunctionToCNNNetworkTests, ConvertPReLUNetwork) { InferenceEngine::CNNNetwork nGraphImpl(f); try { auto net = std::make_shared(nGraphImpl); - } catch (InferenceEngine::details::InferenceEngineException &err) { + } catch (InferenceEngine::Exception &err) { const std::string ref_msg = "Error of validate layer: prelu with type: PReLU. Number of inputs (2) is not equal to expected ones: 1"; const std::string resp_msg = err.what(); ASSERT_TRUE(resp_msg.find(ref_msg) != std::string::npos) << resp_msg; @@ -73,8 +73,8 @@ TEST(ConvertFunctionToCNNNetworkTests, ConvertConvolutionNetwork) { InferenceEngine::CNNNetwork nGraphImpl(f); try { auto net = std::make_shared(nGraphImpl); - } catch (InferenceEngine::details::InferenceEngineException &err) { - FAIL(); + } catch (InferenceEngine::Exception &err) { + FAIL() << err.what(); } } @@ -118,11 +118,11 @@ TEST(ConvertFunctionToCNNNetworkTests, OpsShouldBeConvertedToIERepresentation) { res->input(0).replace_source_output(ngraph_node->output(0)); EXPECT_THROW(InferenceEngine::details::convertFunctionToICNNNetwork(f, nGraphImpl, true), - InferenceEngine::details::InferenceEngineException) + InferenceEngine::Exception) << "failed node: " << ngraph_node->get_type_name() << std::endl; try { InferenceEngine::details::convertFunctionToICNNNetwork(f, nGraphImpl, true); - } catch (InferenceEngine::details::InferenceEngineException &err) { + } catch (InferenceEngine::Exception &err) { std::string type_name = ngraph_node->get_type_name(); std::map exceptions = { {"Broadcast", "Tile"}, {"Interpolate", "Interp"}, @@ -199,7 +199,7 @@ TEST(ConvertFunctionToCNNNetworkTests, ConvertTopKWithOneInput) { OutputsDataMap outputs = nGraphImpl.getOutputsInfo(); ASSERT_EQ(outputs.size(), 1); ASSERT_EQ(outputs.begin()->first, "topK.1"); - } catch (InferenceEngine::details::InferenceEngineException &err) { + } catch (InferenceEngine::Exception &err) { const std::string ref_msg = "Error of validate layer: prelu with type: PReLU. Number of inputs (2) is not equal to expected ones: 1"; const std::string resp_msg = err.what(); ASSERT_TRUE(resp_msg.find(ref_msg) != std::string::npos) << resp_msg; @@ -225,8 +225,8 @@ TEST(ConvertFunctionToCNNNetworkTests, UnsupportedDynamicOps) { InferenceEngine::CNNNetwork nGraphImpl(f); try { InferenceEngine::details::convertFunctionToICNNNetwork(f, nGraphImpl); - FAIL() << "InferenceEngineException must be thrown"; - } catch(InferenceEngine::details::InferenceEngineException & e) { + FAIL() << "InferenceEngine::Exception must be thrown"; + } catch(InferenceEngine::Exception & e) { EXPECT_THAT(e.what(), testing::HasSubstr(std::string("Unsupported dynamic ops: \n" "v0::Parameter param () -> (f32?)\n" "v0::Relu relu (param[0]:f32?) -> (f32?)\n" @@ -358,8 +358,8 @@ TEST(ConvertFunctionToCNNNetworkTests, NonUniqueNamesNegative) { InferenceEngine::CNNNetwork nGraphImpl(f); try { InferenceEngine::details::convertFunctionToICNNNetwork(f, nGraphImpl); - FAIL() << "InferenceEngineException must be thrown"; - } catch(InferenceEngine::details::InferenceEngineException & e) { + FAIL() << "InferenceEngine::Exception must be thrown"; + } catch(InferenceEngine::Exception & e) { EXPECT_THAT(e.what(), testing::HasSubstr(std::string("Detected two output operations with the same name:"))); } } @@ -386,8 +386,8 @@ TEST(ConvertFunctionToCNNNetworkTests, NonUniqueNamesParametersNegative) { try { input2->set_friendly_name("param"); InferenceEngine::details::convertFunctionToICNNNetwork(f, nGraphImpl); - FAIL() << "InferenceEngineException must be thrown"; - } catch(InferenceEngine::details::InferenceEngineException & e) { + FAIL() << "InferenceEngine::Exception must be thrown"; + } catch(InferenceEngine::Exception & e) { EXPECT_THAT(e.what(), testing::HasSubstr(std::string("Detected two output operations with the same name:"))); } } diff --git a/inference-engine/tests/functional/inference_engine/cnn_network/matmul_sr_tests.cpp b/inference-engine/tests/functional/inference_engine/cnn_network/matmul_sr_tests.cpp index ca572e70c35cc3..a013ac8c902ba4 100644 --- a/inference-engine/tests/functional/inference_engine/cnn_network/matmul_sr_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/cnn_network/matmul_sr_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/cnn_network_test.cpp b/inference-engine/tests/functional/inference_engine/cnn_network_test.cpp index 205c3b049f1526..94a56f4507196c 100644 --- a/inference-engine/tests/functional/inference_engine/cnn_network_test.cpp +++ b/inference-engine/tests/functional/inference_engine/cnn_network_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,62 +13,62 @@ IE_SUPPRESS_DEPRECATED_START TEST_F(CNNNetworkTests, throwsOnInitWithNull) { std::shared_ptr nlptr = nullptr; - ASSERT_THROW(CNNNetwork network(nlptr), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(CNNNetwork network(nlptr), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnUninitializedCastToICNNNetwork) { CNNNetwork network; - ASSERT_THROW((void)static_cast(network), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW((void)static_cast(network), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnConstUninitializedCastToICNNNetwork) { const CNNNetwork network; - ASSERT_THROW((void)static_cast(network), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW((void)static_cast(network), InferenceEngine::Exception); } IE_SUPPRESS_DEPRECATED_END TEST_F(CNNNetworkTests, throwsOnInitWithNullNgraph) { std::shared_ptr nlptr = nullptr; - ASSERT_THROW(CNNNetwork network(nlptr), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(CNNNetwork network(nlptr), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnUninitializedGetOutputsInfo) { CNNNetwork network; - ASSERT_THROW(network.getOutputsInfo(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.getOutputsInfo(), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnUninitializedGetInputsInfo) { CNNNetwork network; - ASSERT_THROW(network.getInputsInfo(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.getInputsInfo(), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnUninitializedLayerCount) { CNNNetwork network; - ASSERT_THROW(network.layerCount(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.layerCount(), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnUninitializedGetName) { CNNNetwork network; - ASSERT_THROW(network.getName(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.getName(), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnUninitializedGetFunction) { CNNNetwork network; - ASSERT_THROW(network.getFunction(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.getFunction(), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnConstUninitializedGetFunction) { const CNNNetwork network; - ASSERT_THROW(network.getFunction(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.getFunction(), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnConstUninitializedBegin) { CNNNetwork network; - ASSERT_THROW(network.getFunction(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.getFunction(), InferenceEngine::Exception); } TEST_F(CNNNetworkTests, throwsOnConstUninitializedGetInputShapes) { CNNNetwork network; - ASSERT_THROW(network.getInputShapes(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(network.getInputShapes(), InferenceEngine::Exception); } diff --git a/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build.cpp b/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build.cpp index 2c4321f44ad6fd..fc87e2d58f47d6 100644 --- a/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build.cpp +++ b/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build_analyzer.cpp b/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build_analyzer.cpp index a274b6b6bad0af..9205f0796a269c 100644 --- a/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build_analyzer.cpp +++ b/inference-engine/tests/functional/inference_engine/conditional_compilation/selective_build_analyzer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/core_threading_tests.cpp b/inference-engine/tests/functional/inference_engine/core_threading_tests.cpp index 8299dd39d60aff..f0182f9d49fca5 100644 --- a/inference-engine/tests/functional/inference_engine/core_threading_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/core_threading_tests.cpp @@ -1,9 +1,8 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include -#include
#include #include @@ -46,11 +45,11 @@ class CoreThreadingTests : public ::testing::Test { void safeAddExtension(InferenceEngine::Core & ie) { try { - auto extension = InferenceEngine::make_so_pointer( + auto extension = std::make_shared( FileUtils::makePluginLibraryName({}, std::string("template_extension") + IE_BUILD_POSTFIX)); ie.AddExtension(extension); - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { ASSERT_STR_CONTAINS(ex.what(), "name: custom_opset. Opset"); } } @@ -109,7 +108,7 @@ TEST_F(CoreThreadingTests, RegisterPlugins) { runParallel([&] () { std::string fileName, deviceName; - std:tie(fileName, deviceName) = getPluginXml(); + std::tie(fileName, deviceName) = getPluginXml(); ie.RegisterPlugins(fileName); ie.GetVersions(deviceName); ASSERT_EQ(0, std::remove(fileName.c_str())); @@ -127,7 +126,7 @@ TEST_F(CoreThreadingTests, DISABLED_GetAvailableDevices) { for (auto && deviceName : devices) { try { ie.UnregisterPlugin(deviceName); - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { // if several threads unload plugin at once, the first thread does this // while all others will throw an exception that plugin is not registered ASSERT_STR_CONTAINS(ex.what(), "name is not registered in the"); diff --git a/inference-engine/tests/functional/inference_engine/data_test.cpp b/inference-engine/tests/functional/inference_engine/data_test.cpp index 7dcc8ca111a8db..e04f33a9609950 100644 --- a/inference-engine/tests/functional/inference_engine/data_test.cpp +++ b/inference-engine/tests/functional/inference_engine/data_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,6 @@ using namespace ::testing; using namespace std; using namespace InferenceEngine; -using namespace InferenceEngine::details; class DataTests : public ::testing::Test { protected: @@ -74,7 +73,7 @@ TEST_F(DataTests, canSetEmptyDimsForBlockingDescOrder) { TEST_F(DataTests, throwOnFillDescByEmptyDimsForBlockingDesc) { BlockingDescTest desc(emptyDims, emptyDims); - ASSERT_THROW(desc.fillDescTest(emptyDims, emptyDims), InferenceEngineException); + ASSERT_THROW(desc.fillDescTest(emptyDims, emptyDims), Exception); } TEST_F(DataTests, throwOnSetEmptyDimsForBlockingDescBlocked) { diff --git a/inference-engine/tests/functional/inference_engine/debug_tests.cpp b/inference-engine/tests/functional/inference_engine/debug_tests.cpp index 0a36c6803b4f21..feb6aa8ff435ca 100644 --- a/inference-engine/tests/functional/inference_engine/debug_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/debug_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/exception_test.cpp b/inference-engine/tests/functional/inference_engine/exception_test.cpp index 400758d1dbcb48..36a869be600a1a 100644 --- a/inference-engine/tests/functional/inference_engine/exception_test.cpp +++ b/inference-engine/tests/functional/inference_engine/exception_test.cpp @@ -1,25 +1,28 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include -#include
using namespace InferenceEngine; using ExceptionTests = ::testing::Test; -template +template class WrapperClass { public: static InferenceEngine::StatusCode toStatusWrapper(InferenceEngine::ResponseDesc *resp) { - TO_STATUS(THROW_IE_EXCEPTION << details::as_status << T) + TO_STATUS(IE_EXCEPTION_SWITCH(statusCode, ExceptionType, + InferenceEngine::details::ThrowNow{} + <<= std::stringstream{} << IE_LOCATION)) } static InferenceEngine::StatusCode toStatusWrapperMsg(std::string &msg, InferenceEngine::ResponseDesc *resp) { - TO_STATUS(THROW_IE_EXCEPTION << details::as_status << T << msg) + TO_STATUS(IE_EXCEPTION_SWITCH(statusCode, ExceptionType, + InferenceEngine::details::ThrowNow{} + <<= std::stringstream{} << IE_LOCATION << msg)) } }; @@ -54,8 +57,8 @@ TEST_F(ExceptionTests, canHandleNullPtr) { // shared_ptr holding the nullptr std::shared_ptr actual; // check that accessing the nullptr thru macros throws - ASSERT_THROW(CALL_STATUS_FNC_NO_ARGS(func0), InferenceEngine::details::InferenceEngineException); - ASSERT_THROW(CALL_STATUS_FNC(func1, 0), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(CALL_STATUS_FNC_NO_ARGS(func0), InferenceEngine::Exception); + ASSERT_THROW(CALL_STATUS_FNC(func1, 0), InferenceEngine::Exception); } TEST_F(ExceptionTests, throwAfterConvertStatusToClassContainMessage) { @@ -63,8 +66,8 @@ TEST_F(ExceptionTests, throwAfterConvertStatusToClassContainMessage) { auto actual = std::make_shared>(); try { CALL_STATUS_FNC(toStatusWrapperMsg, refMessage) - } catch (const NotAllocated &iex) { + } catch (const NotAllocated& iex) { std::string actualMessage = iex.what(); - ASSERT_EQ(actualMessage.find(refMessage), 0); + ASSERT_TRUE(actualMessage.find(refMessage) != std::string::npos); } } diff --git a/inference-engine/tests/functional/inference_engine/executable_network.cpp b/inference-engine/tests/functional/inference_engine/executable_network.cpp index 937328b4ffd92b..bf90be8b33ca20 100644 --- a/inference-engine/tests/functional/inference_engine/executable_network.cpp +++ b/inference-engine/tests/functional/inference_engine/executable_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,27 +12,27 @@ using namespace InferenceEngine::details; TEST(ExecutableNetworkTests, throwsOnInitWithNull) { std::shared_ptr nlptr = nullptr; - ASSERT_THROW(ExecutableNetwork exec(nlptr), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(ExecutableNetwork exec(nlptr), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedGetOutputsInfo) { ExecutableNetwork exec; - ASSERT_THROW(exec.GetOutputsInfo(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.GetOutputsInfo(), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedGetInputsInfo) { ExecutableNetwork exec; - ASSERT_THROW(exec.GetInputsInfo(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.GetInputsInfo(), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedExport) { ExecutableNetwork exec; - ASSERT_THROW(exec.Export(std::string()), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.Export(std::string()), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedExportStream) { ExecutableNetwork exec; - ASSERT_THROW(exec.Export(std::cout), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.Export(std::cout), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, nothrowsOnUninitializedCast) { @@ -42,32 +42,32 @@ TEST(ExecutableNetworkTests, nothrowsOnUninitializedCast) { TEST(ExecutableNetworkTests, throwsOnUninitializedGetExecGraphInfo) { ExecutableNetwork exec; - ASSERT_THROW(exec.GetExecGraphInfo(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.GetExecGraphInfo(), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedQueryState) { IE_SUPPRESS_DEPRECATED_START ExecutableNetwork exec; - ASSERT_THROW(exec.QueryState(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.QueryState(), InferenceEngine::Exception); IE_SUPPRESS_DEPRECATED_END } TEST(ExecutableNetworkTests, throwsOnUninitializedSetConfig) { ExecutableNetwork exec; - ASSERT_THROW(exec.SetConfig({{}}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.SetConfig({{}}), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedGetConfig) { ExecutableNetwork exec; - ASSERT_THROW(exec.GetConfig({}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.GetConfig({}), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedGetMetric) { ExecutableNetwork exec; - ASSERT_THROW(exec.GetMetric({}), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.GetMetric({}), InferenceEngine::Exception); } TEST(ExecutableNetworkTests, throwsOnUninitializedGetContext) { ExecutableNetwork exec; - ASSERT_THROW(exec.GetContext(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exec.GetContext(), InferenceEngine::Exception); } \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/ie_irelease_test.cpp b/inference-engine/tests/functional/inference_engine/ie_irelease_test.cpp deleted file mode 100644 index ad69466c769f30..00000000000000 --- a/inference-engine/tests/functional/inference_engine/ie_irelease_test.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (C) 2019 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include - -#include -#include
- -#include "common_test_utils/test_common.hpp" - -using IReleaseTests = CommonTestUtils::TestsCommon; - -/** - * @brief Testing that callback with Release() from shared_from_irelease(...) - * won't be applied for nullptr. - */ -TEST_F(IReleaseTests, sharedFromIReleaseWithNull) { - InferenceEngine::details::IRelease *irelease = nullptr; - std::shared_ptr ptr = InferenceEngine::details::shared_from_irelease(irelease); - ptr.reset(); -} \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/ie_precision_test.cpp b/inference-engine/tests/functional/inference_engine/ie_precision_test.cpp index 64f10135d6a530..f350eafb7a76d1 100644 --- a/inference-engine/tests/functional/inference_engine/ie_precision_test.cpp +++ b/inference-engine/tests/functional/inference_engine/ie_precision_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,8 +22,10 @@ TEST_F(PrecisionTests, ShowsCorrectPrecisionNames) { ASSERT_STREQ(Precision(Precision::I32).name(), "I32"); ASSERT_STREQ(Precision(Precision::U32).name(), "U32"); ASSERT_STREQ(Precision(Precision::U16).name(), "U16"); + ASSERT_STREQ(Precision(Precision::I4).name(), "I4"); ASSERT_STREQ(Precision(Precision::I8).name(), "I8"); ASSERT_STREQ(Precision(Precision::Q78).name(), "Q78"); + ASSERT_STREQ(Precision(Precision::U4).name(), "U4"); ASSERT_STREQ(Precision(Precision::U8).name(), "U8"); ASSERT_STREQ(Precision(Precision::MIXED).name(), "MIXED"); ASSERT_STREQ(Precision(Precision::UNSPECIFIED).name(), "UNSPECIFIED"); @@ -41,9 +43,11 @@ TEST_F(PrecisionTests, sizeIsCorrect) { ASSERT_EQ(Precision(Precision::U32).size(), 4); ASSERT_EQ(Precision(Precision::I16).size(), 2); ASSERT_EQ(Precision(Precision::U16).size(), 2); + ASSERT_EQ(Precision(Precision::I4).size(), 1); ASSERT_EQ(Precision(Precision::I8).size(), 1); ASSERT_EQ(Precision(Precision::Q78).size(), 2); ASSERT_EQ(Precision(Precision::U8).size(), 1); + ASSERT_EQ(Precision(Precision::U4).size(), 1); ASSERT_EQ(Precision(10 * 8).size(), 10); ASSERT_ANY_THROW(Precision(Precision::MIXED).size()); ASSERT_ANY_THROW(Precision(Precision::UNSPECIFIED).size()); @@ -60,7 +64,9 @@ TEST_F(PrecisionTests, is_float) { ASSERT_FALSE(Precision(Precision::I16).is_float()); ASSERT_FALSE(Precision(Precision::U16).is_float()); ASSERT_FALSE(Precision(Precision::I8).is_float()); + ASSERT_FALSE(Precision(Precision::I4).is_float()); ASSERT_FALSE(Precision(Precision::Q78).is_float()); + ASSERT_FALSE(Precision(Precision::U4).is_float()); ASSERT_FALSE(Precision(Precision::U8).is_float()); ASSERT_FALSE(Precision(Precision::MIXED).is_float()); ASSERT_FALSE(Precision(10).is_float()); @@ -78,8 +84,10 @@ TEST_F(PrecisionTests, constructFromSTR) { ASSERT_EQ(Precision(Precision::U32), Precision::FromStr("U32")); ASSERT_EQ(Precision(Precision::I16), Precision::FromStr("I16")); ASSERT_EQ(Precision(Precision::U16), Precision::FromStr("U16")); + ASSERT_EQ(Precision(Precision::I4), Precision::FromStr("I4")); ASSERT_EQ(Precision(Precision::I8), Precision::FromStr("I8")); ASSERT_EQ(Precision(Precision::Q78), Precision::FromStr("Q78")); + ASSERT_EQ(Precision(Precision::U4), Precision::FromStr("U4")); ASSERT_EQ(Precision(Precision::U8), Precision::FromStr("U8")); ASSERT_EQ(Precision(Precision::MIXED), Precision::FromStr("MIXED")); ASSERT_EQ(Precision(static_cast(-3)), Precision::FromStr("UNSPECIFIED")); diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/const_compression.cpp b/inference-engine/tests/functional/inference_engine/ir_serialization/const_compression.cpp new file mode 100644 index 00000000000000..ce3ea231b55725 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/const_compression.cpp @@ -0,0 +1,231 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "common_test_utils/ngraph_test_utils.hpp" +#include "ie_core.hpp" +#include "gtest/gtest.h" + +#include +#include + +#ifndef IR_SERIALIZATION_MODELS_PATH // should be already defined by cmake +#define IR_SERIALIZATION_MODELS_PATH "" +#endif + +class SerializatioConstantCompressionTest : public ::testing::Test { +protected: + std::string test_name = + ::testing::UnitTest::GetInstance()->current_test_info()->name(); + std::string m_out_xml_path_1 = test_name + "1" + ".xml"; + std::string m_out_bin_path_1 = test_name + "1" + ".bin"; + + void TearDown() override { + std::remove(m_out_xml_path_1.c_str()); + std::remove(m_out_bin_path_1.c_str()); + } + + std::uintmax_t file_size(std::ifstream &f) { + // get length of file: + const auto pos_to_restore = f.tellg(); + f.seekg(0, f.end); + std::uintmax_t length = f.tellg(); + f.seekg(pos_to_restore, f.beg); + return length; + } +}; + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsI32) { + constexpr int unique_const_count = 1; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto B = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(int32_t)); +} + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsI64) { + constexpr int unique_const_count = 1; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::i64, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto B = ngraph::op::Constant::create(ngraph::element::i64, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(int64_t)); +} + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsFP16) { + constexpr int unique_const_count = 1; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::f16, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto B = ngraph::op::Constant::create(ngraph::element::f16, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(ngraph::float16)); +} + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsFP32) { + constexpr int unique_const_count = 1; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::f32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto B = ngraph::op::Constant::create(ngraph::element::f32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(float)); +} + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsTimesTwo) { + constexpr int unique_const_count = 2; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto B = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto C = ngraph::op::Constant::create(ngraph::element::i32, shape, + {0, 3, 1, 2, 5, 6, 25, 3}); + auto D = ngraph::op::Constant::create(ngraph::element::i32, shape, + {0, 3, 1, 2, 5, 6, 25, 3}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B, C, D}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(int32_t)); +} + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsTimesTwoMultipleOccurences) { + constexpr int unique_const_count = 2; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto B = ngraph::op::Constant::create(ngraph::element::i32, shape, + {0, 3, 1, 2, 5, 6, 25, 3}); + auto C = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto D = ngraph::op::Constant::create(ngraph::element::i32, shape, + {0, 3, 1, 2, 5, 6, 25, 3}); + auto E = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto F = ngraph::op::Constant::create(ngraph::element::i32, shape, + {0, 3, 1, 2, 5, 6, 25, 3}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B, C, D, E, F}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(int32_t)); +} + +TEST_F(SerializatioConstantCompressionTest, NonIdenticalConstants) { + constexpr int unique_const_count = 2; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2, 3, 4, 5, 6, 7, 8}); + auto B = ngraph::op::Constant::create(ngraph::element::i32, shape, + {2, 2, 3, 4, 5, 6, 7, 8}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(int32_t)); +} + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsDifferentTypesI32I64) { + constexpr int unique_const_count = 1; + const ngraph::Shape shape{2, 2, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 0, 2, 0, 3, 0, 4, 0}); + auto B = ngraph::op::Constant::create(ngraph::element::i64, ngraph::Shape({1, 2, 2}), + {1, 2, 3, 4}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(int32_t)); +} + +TEST_F(SerializatioConstantCompressionTest, IdenticalConstantsDifferentTypesI32I8) { + constexpr int unique_const_count = 1; + const ngraph::Shape shape{1, 1, 2}; + + auto A = ngraph::op::Constant::create(ngraph::element::i32, shape, + {1, 2}); + auto B = ngraph::op::Constant::create(ngraph::element::i8, ngraph::Shape({1, 2, 4}), + {1, 0, 0, 0, + 2, 0, 0, 0}); + + auto ngraph_a = std::make_shared(ngraph::NodeVector{A, B}, + ngraph::ParameterVector{}); + + ngraph::pass::Serialize(m_out_xml_path_1, m_out_bin_path_1).run_on_function(ngraph_a); + + std::ifstream xml_1(m_out_xml_path_1, std::ios::binary); + std::ifstream bin_1(m_out_bin_path_1, std::ios::binary); + + ASSERT_TRUE(file_size(bin_1) == unique_const_count * ngraph::shape_size(shape) * sizeof(int32_t)); +} diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/custom_ops.cpp b/inference-engine/tests/functional/inference_engine/ir_serialization/custom_ops.cpp index e2e633e857c66b..01594287b82e74 100644 --- a/inference-engine/tests/functional/inference_engine/ir_serialization/custom_ops.cpp +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/custom_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,7 +43,7 @@ TEST_F(CustomOpsSerializationTest, CustomOpUser_MO) { InferenceEngine::Core ie; ie.AddExtension( - InferenceEngine::make_so_pointer( + std::make_shared( get_extension_path())); auto expected = ie.ReadNetwork(model); @@ -65,7 +65,7 @@ TEST_F(CustomOpsSerializationTest, CustomOpUser_ONNXImporter) { InferenceEngine::Core ie; ie.AddExtension( - InferenceEngine::make_so_pointer( + std::make_shared( get_extension_path())); auto expected = ie.ReadNetwork(model); @@ -87,7 +87,7 @@ TEST_F(CustomOpsSerializationTest, CustomOpTransformation) { InferenceEngine::Core ie; auto extension = - InferenceEngine::make_so_pointer( + std::make_shared( get_extension_path()); ie.AddExtension(extension); auto expected = ie.ReadNetwork(model); diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/deterministicity.cpp b/inference-engine/tests/functional/inference_engine/ir_serialization/deterministicity.cpp index dd99fea97bf5c9..8fb248ed7dc0ca 100644 --- a/inference-engine/tests/functional/inference_engine/ir_serialization/deterministicity.cpp +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/deterministicity.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_f32_nan_const.bin b/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_f32_nan_const.bin new file mode 100644 index 00000000000000..d8fe486aa21d09 Binary files /dev/null and b/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_f32_nan_const.bin differ diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_u1_const.bin b/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_u1_const.bin new file mode 100644 index 00000000000000..eea1bf0c31f3d4 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_u1_const.bin @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_u1_const.xml b/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_u1_const.xml new file mode 100644 index 00000000000000..4facb6471a4ef8 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers_u1_const.xml @@ -0,0 +1,54 @@ + + + + + + + + 2 + 2 + + + + + + + + 2 + 2 + + + + + + + 2 + 2 + + + 2 + 2 + + + + + 2 + 2 + + + + + + + 2 + 2 + + + + + + + + + + diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/serialize.cpp b/inference-engine/tests/functional/inference_engine/ir_serialization/serialize.cpp index 254622157ad7f0..990fa74c183460 100644 --- a/inference-engine/tests/functional/inference_engine/ir_serialization/serialize.cpp +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/serialize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,11 +43,7 @@ TEST_P(SerializationTest, CompareFunctions) { InferenceEngine::Core ie; InferenceEngine::CNNNetwork expected; - if (!m_binary_path.empty()) { - expected = ie.ReadNetwork(m_model_path, m_binary_path); - } else { - expected = ie.ReadNetwork(m_model_path); - } + expected = ie.ReadNetwork(m_model_path, m_binary_path); expected.serialize(m_out_xml_path, m_out_bin_path); auto result = ie.ReadNetwork(m_out_xml_path, m_out_bin_path); @@ -64,7 +60,9 @@ INSTANTIATE_TEST_CASE_P(IRSerialization, SerializationTest, std::make_tuple("split_equal_parts_2d.xml", "split_equal_parts_2d.bin"), std::make_tuple("addmul_abc.xml", "addmul_abc.bin"), std::make_tuple("add_abc_initializers.xml", "add_abc_initializers.bin"), + std::make_tuple("add_abc_initializers.xml", "add_abc_initializers_f32_nan_const.bin"), std::make_tuple("add_abc_initializers_nan_const.xml", "add_abc_initializers_nan_const.bin"), + std::make_tuple("add_abc_initializers_u1_const.xml", "add_abc_initializers_u1_const.bin"), std::make_tuple("experimental_detectron_roi_feature_extractor.xml", ""), std::make_tuple("experimental_detectron_roi_feature_extractor_opset6.xml", ""), std::make_tuple("experimental_detectron_detection_output.xml", ""), diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_iterator.cpp b/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_iterator.cpp index cd6ac9fd8a466f..c63371baf89925 100644 --- a/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_iterator.cpp +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_iterator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_names.cpp b/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_names.cpp index 0a57affd010457..0cc7728e1b4198 100644 --- a/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_names.cpp +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/tensor_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ir_serialization/transformation.cpp b/inference-engine/tests/functional/inference_engine/ir_serialization/transformation.cpp index eaf42784989e7d..2567e506d20670 100644 --- a/inference-engine/tests/functional/inference_engine/ir_serialization/transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/ir_serialization/transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/keep_constant_inputs_tests.cpp b/inference-engine/tests/functional/inference_engine/keep_constant_inputs_tests.cpp index 54c8391fe79aa8..81bb6dd5ffe941 100644 --- a/inference-engine/tests/functional/inference_engine/keep_constant_inputs_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/keep_constant_inputs_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/local_test.cpp b/inference-engine/tests/functional/inference_engine/local_test.cpp index 26bf78517ab303..b79e591dfb7f77 100644 --- a/inference-engine/tests/functional/inference_engine/local_test.cpp +++ b/inference-engine/tests/functional/inference_engine/local_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/add_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/add_transformation.cpp index c60e041fcb358d..ca5175caf8c7fd 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/add_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,6 +22,7 @@ #include "lpt_ngraph_functions/common/dequantization_operations.hpp" using namespace testing; +using namespace ngraph; using namespace ngraph::pass; using namespace ngraph::builder::subgraph; @@ -46,6 +47,8 @@ class AddTransformationTestValues { std::vector constValues; std::string operationType; + Expected() = default; + Expected(const ngraph::element::Type& precision1, ngraph::builder::subgraph::DequantizationOperations dequantization1, const ngraph::element::Type& precision2, @@ -68,6 +71,11 @@ class AddTransformationTestValues { std::string additionalLayer; }; +typedef std::tuple < + ngraph::element::Type, + AddTransformationTestValues +> AddTransformationParams; + template inline std::ostream& operator<<(std::ostream& os, const std::vector& values) { os << "{ "; @@ -81,13 +89,14 @@ inline std::ostream& operator<<(std::ostream& os, const std::vector& values) return os; } -class AddTransformation : public LayerTransformation, public testing::WithParamInterface { +class AddTransformation : public LayerTransformation, public testing::WithParamInterface { public: void SetUp() override { - const AddTransformationTestValues testValues = GetParam(); + const ngraph::element::Type precision = std::get<0>(GetParam()); + const AddTransformationTestValues& testValues = std::get<1>(GetParam()); actualFunction = AddFunction::getOriginal( - testValues.precision, + precision, testValues.inputShape, testValues.broadcast, testValues.params, @@ -101,11 +110,11 @@ class AddTransformation : public LayerTransformation, public testing::WithParamI SimpleLowPrecisionTransformer transform; transform.add( - low_precision::LayerTransformation::Params(testValues.params)); + low_precision::LayerTransformation::Params(testValues.params)); transform.transform(actualFunction); referenceFunction = AddFunction::getReference( - testValues.precision, + precision, testValues.inputShape, testValues.broadcast, testValues.params, @@ -121,12 +130,13 @@ class AddTransformation : public LayerTransformation, public testing::WithParamI testValues.expected.operationType); } - static std::string getTestCaseName(testing::TestParamInfo obj) { - const AddTransformationTestValues testValues = obj.param; + static std::string getTestCaseName(testing::TestParamInfo obj) { + const element::Type precision = std::get<0>(obj.param); + const AddTransformationTestValues testValues = std::get<1>(obj.param); std::ostringstream result; result << - testValues.precision << "_" << + precision << "_" << testValues.inputShape << "_" << testValues.broadcast << "_" << testValues.actual.precision1 << "_" << @@ -146,6 +156,11 @@ TEST_P(AddTransformation, CompareFunctions) { ASSERT_TRUE(res.first) << res.second; } +const std::vector netPrecision = { + element::f32, + element::f16 +}; + const std::vector addTransformationTestValues = { // Multiply with zero on the first branch { @@ -765,11 +780,13 @@ const std::vector addTransformationTestValues = { "Subtract" }, "" - }, + } }; INSTANTIATE_TEST_CASE_P( smoke_LPT, AddTransformation, - ::testing::ValuesIn(addTransformationTestValues), + ::testing::Combine( + ::testing::ValuesIn(netPrecision), + ::testing::ValuesIn(addTransformationTestValues)), AddTransformation::getTestCaseName); diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/avg_pool_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/avg_pool_transformation.cpp index ea09b288707682..94d0abed429aeb 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/avg_pool_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/avg_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -46,6 +46,7 @@ class AvgPoolTransformationTestValues { }; typedef std::tuple< + ngraph::element::Type, ngraph::Shape, bool, // additional FakeQuantize After std::string, // additional layer before FQ @@ -54,12 +55,14 @@ typedef std::tuple< class AvgPoolTransformation : public LayerTransformation, public testing::WithParamInterface { public: void SetUp() override { - const ngraph::Shape shape = std::get<0>(GetParam()); - const bool addFakeQuantize = std::get<1>(GetParam()); - const std::string additionalLayer = std::get<2>(GetParam()); - const AvgPoolTransformationTestValues testValues = std::get<3>(GetParam()); - + ngraph::element::Type precision; + ngraph::Shape shape; + bool addFakeQuantize; + std::string additionalLayer; + AvgPoolTransformationTestValues testValues; + std::tie(precision, shape, addFakeQuantize, additionalLayer, testValues) = GetParam(); actualFunction = ngraph::builder::subgraph::AvgPoolFunction::getOriginal( + precision, testValues.actual.inputPrecision, shape, addFakeQuantize, @@ -72,6 +75,7 @@ class AvgPoolTransformation : public LayerTransformation, public testing::WithPa transform.transform(actualFunction); referenceFunction = ngraph::builder::subgraph::AvgPoolFunction::getReference( + precision, testValues.expected.inputPrecision, shape, addFakeQuantize, @@ -82,14 +86,16 @@ class AvgPoolTransformation : public LayerTransformation, public testing::WithPa } static std::string getTestCaseName(testing::TestParamInfo obj) { - const ngraph::Shape shape = std::get<0>(obj.param); - const bool addFakeQuantize = std::get<1>(obj.param); - const std::string additionalLayer = std::get<2>(obj.param); - const AvgPoolTransformationTestValues testValues = std::get<3>(obj.param); - + ngraph::element::Type precision; + ngraph::Shape shape; + bool addFakeQuantize; + std::string additionalLayer; + AvgPoolTransformationTestValues testValues; + std::tie(precision, shape, addFakeQuantize, additionalLayer, testValues) = obj.param; std::ostringstream result; result << + precision << "_" << LayerTransformation::getTestCaseNameByParams(testValues.actual.inputPrecision, shape, testValues.params) << "_" << testValues.actual.dequantization << "_" << testValues.expected.dequantizationBefore << "_" << @@ -108,16 +114,19 @@ TEST_P(AvgPoolTransformation, CompareFunctions) { ASSERT_TRUE(res.first) << res.second; } +const std::vector precisions = { + ngraph::element::f32, + ngraph::element::f16 +}; + const std::vector additionalLayer = { "", - // issue #40768 - // "maxpool" // any transparent layer + "maxpool" // any transparent layer }; const std::vector addFQ = { true, - // issue #40768 - // false + false }; const std::vector shapes = { @@ -331,6 +340,7 @@ INSTANTIATE_TEST_CASE_P( smoke_LPT, AvgPoolTransformation, ::testing::Combine( + ::testing::ValuesIn(precisions), ::testing::ValuesIn(shapes), ::testing::ValuesIn(addFQ), ::testing::ValuesIn(additionalLayer), diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/clamp_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/clamp_transformation.cpp index 1c96e55bcf712d..d2785e355a4d7b 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/clamp_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/clamp_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -41,6 +41,7 @@ class ClampTransformationTestValues { ngraph::pass::low_precision::LayerTransformation::Params params; Actual actual; Expected expected; + bool nonDequantizationMultiply; }; class ClampTransformation : public LayerTransformation, public testing::WithParamInterface { @@ -48,21 +49,29 @@ class ClampTransformation : public LayerTransformation, public testing::WithPara void SetUp() override { const ClampTransformationTestValues testValues = GetParam(); - actualFunction = ngraph::builder::subgraph::ClampFunction::getOriginal( - testValues.inputShape, - testValues.actual.precisionBeforeDequantization, - testValues.actual.dequantization); + actualFunction = testValues.nonDequantizationMultiply ? + ngraph::builder::subgraph::ClampFunction::getWithNonDequantizationMultiply( + testValues.inputShape, + testValues.actual.precisionBeforeDequantization) : + ngraph::builder::subgraph::ClampFunction::getOriginal( + testValues.inputShape, + testValues.actual.precisionBeforeDequantization, + testValues.actual.dequantization); SimpleLowPrecisionTransformer transformer; transformer.add(testValues.params); transformer.transform(actualFunction); - referenceFunction = ngraph::builder::subgraph::ClampFunction::getReference( - testValues.inputShape, - testValues.expected.precisionBeforeDequantization, - testValues.expected.dequantizationBefore, - testValues.expected.precisionAfterOperation, - testValues.expected.dequantizationAfter); + referenceFunction = testValues.nonDequantizationMultiply ? + ngraph::builder::subgraph::ClampFunction::getWithNonDequantizationMultiply( + testValues.inputShape, + testValues.actual.precisionBeforeDequantization) : + ngraph::builder::subgraph::ClampFunction::getReference( + testValues.inputShape, + testValues.expected.precisionBeforeDequantization, + testValues.expected.dequantizationBefore, + testValues.expected.precisionAfterOperation, + testValues.expected.dequantizationAfter); } static std::string getTestCaseName(testing::TestParamInfo obj) { @@ -73,7 +82,8 @@ class ClampTransformation : public LayerTransformation, public testing::WithPara testValues.inputShape << "_" << testValues.actual.precisionBeforeDequantization << "_" << testValues.actual.dequantization << "_" << - testValues.expected.dequantizationBefore; + testValues.expected.dequantizationBefore << + (testValues.nonDequantizationMultiply ? "non_deq_mul" : ""); return result.str(); } }; @@ -409,6 +419,37 @@ const std::vector testValues = { {{}, {}, {}} } }, + // without dequantization + { + ngraph::Shape({ 1, 3, 224, 224 }), + LayerTransformation::createParamsU8I8(), + { + ngraph::element::f32, + {{}, {}, {}} + }, + { + ngraph::element::f32, + {{}, {}, {}}, + ngraph::element::f32, + {{}, {}, {}} + }, + }, + // with non dequantization multiply (issue #49965) + { + ngraph::Shape({ 1, 3, 224, 224 }), + LayerTransformation::createParamsU8I8(), + { + ngraph::element::f32, + {{}, {}, {}} + }, + { + ngraph::element::f32, + {{}, {}, {}}, + ngraph::element::f32, + {{}, {}, {}} + }, + true // non dequantization multiply + }, }; INSTANTIATE_TEST_CASE_P( smoke_LPT, diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/compose_fake_quantize_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/compose_fake_quantize_transformation.cpp index 039e96a7fedff5..ce66f1848e0010 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/compose_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/compose_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_selection_with_intermediate_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_selection_with_intermediate_transformation.cpp index f8528f9c45b809..8f553ac5fd64ea 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_selection_with_intermediate_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_selection_with_intermediate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_transformation.cpp index 6c90dd29253095..22c678dcaba094 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -95,6 +95,15 @@ class ConcatTransformation : public LayerTransformation, public testing::WithPar const ngraph::Shape shape = std::get<1>(GetParam()); ConcatTransformationTestValues testValues = std::get<2>(GetParam()); + // dequantization output precision depends on input precision + // to avoid huge amount of tests cases let's define dequantization output precision as input precision + if (!testValues.actual.dequantization1.multiply.empty()) { + testValues.actual.dequantization1.multiply.outPrecision = precision; + } + if (!testValues.actual.dequantization2.multiply.empty()) { + testValues.actual.dequantization2.multiply.outPrecision = precision; + } + actualFunction = ngraph::builder::subgraph::ConcatFunction::get( precision, shape, @@ -115,6 +124,18 @@ class ConcatTransformation : public LayerTransformation, public testing::WithPar } transform.transform(actualFunction); + // dequantization output precision depends on input precision + // to avoid huge amount of tests cases let's define dequantization output precision as input precision + if (!testValues.result.dequantizationAfter.multiply.empty()) { + testValues.result.dequantizationAfter.multiply.outPrecision = precision; + } + + if (!testValues.params.updatePrecisions && + (precision == ngraph::element::f32) && + !testValues.result.dequantizationAfter.convert.empty()) { + testValues.result.dequantizationAfter.convert = {}; + } + referenceFunction = ngraph::builder::subgraph::ConcatFunction::get( precision, shape, @@ -151,7 +172,7 @@ TEST_P(ConcatTransformation, CompareFunctions) { const std::vector precisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector testValues = { @@ -392,16 +413,14 @@ const std::vector testValues = { { 256ul, {{1, 3, 1, 1}, {1, 3, 1, 1}, {1, 3, 1, 1}, {1, 3, 1, 1}}, - {0.f, 0.f, 0.f}, {2.55f, 2.55f, 2.55f}, {0.f, 0.f, 0.f}, {2.55f / 1.f, 2.55f / 2.f, 2.55f / 3.f}, - ngraph::element::f32 + {0.f, 0.f, 0.f}, {2.55f, 2.55f, 2.55f}, {0.f, 0.f, 0.f}, {2.55f / 1.f, 2.55f / 2.f, 2.55f / 3.f} }, {}, {}, { 256ul, {{1, 3, 1, 1}, {1, 3, 1, 1}, {1, 3, 1, 1}, {1, 3, 1, 1}}, - {0.f, 0.f, 0.f}, {1.275f, 1.275f, 1.275f}, {0.f, 0.f, 0.f}, {1.275f / 1.f, 1.275f / 2.f, 1.275f / 3.f}, - ngraph::element::f32 + {0.f, 0.f, 0.f}, {1.275f, 1.275f, 1.275f}, {0.f, 0.f, 0.f}, {1.275f / 1.f, 1.275f / 2.f, 1.275f / 3.f} }, {}, {} @@ -582,14 +601,14 @@ const std::vector testValues = { {} }, { - { 256ul, {}, {0.f}, {2.55f}, {0.f}, {255.f}, ngraph::element::f32 }, + { 256ul, {}, {0.f}, {2.55f}, {0.f}, {255.f} }, {}, {}, - { 256ul, {}, {0.f}, {2.55f}, {0.f}, {255.f}, ngraph::element::f32 }, + { 256ul, {}, {0.f}, {2.55f}, {0.f}, {255.f} }, {}, {}, ngraph::element::f32, - { {}, {}, { 0.01f } }, + { {element::f32}, {}, { 0.01f } }, } } }; diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_different_precision_on_childs.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_different_precision_on_childs.cpp index bdff5a4abad606..9998f99b156bf4 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_different_precision_on_childs.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_different_precision_on_childs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_reshape_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_reshape_transformation.cpp new file mode 100644 index 00000000000000..ea537db49cfc98 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_reshape_transformation.cpp @@ -0,0 +1,143 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "layer_transformation.hpp" + +#include +#include +#include + +#include + +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" +#include "lpt_ngraph_functions/concat_function.hpp" +#include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" +#include "simple_low_precision_transformer.hpp" + +using namespace testing; +using namespace ngraph; +using namespace ngraph::pass; + +namespace { +class ActualValues { +public: + ngraph::builder::subgraph::FakeQuantizeOnData fakeQuantize1; + ngraph::builder::subgraph::FakeQuantizeOnData fakeQuantize2; +}; + +inline std::ostream& operator<<(std::ostream& out, const ActualValues& values) { + return out << "_" << values.fakeQuantize1 << "_" << values.fakeQuantize2; +} + +class ResultValues { +public: + ngraph::builder::subgraph::FakeQuantizeOnData fakeQuantize1; + ngraph::builder::subgraph::FakeQuantizeOnData fakeQuantize2; + ngraph::builder::subgraph::DequantizationOperations dequantizationAfter; +}; + +inline std::ostream& operator<<(std::ostream& out, const ResultValues& values) { + return out << "_" << values.fakeQuantize1 << "_" << values.fakeQuantize2 << "_"; +} + +class TestValues { +public: + ngraph::Shape inputShape; + ngraph::Shape reshapeOutputShape; + ngraph::pass::low_precision::LayerTransformation::Params params; + ActualValues actual; + ResultValues result; +}; + +inline std::ostream& operator<<(std::ostream& out, const TestValues& values) { + return out << "_" << values.reshapeOutputShape << "_" << values.actual << "_" << values.result; +} + +typedef std::tuple < + ngraph::element::Type, + TestValues +> ConcatTransformationParams; + +class ConcatWithIntermediateReshapeTransformation : public LayerTransformation, public testing::WithParamInterface { +public: + void SetUp() override { + const ngraph::element::Type precision = std::get<0>(GetParam()); + TestValues testValues = std::get<1>(GetParam()); + + actualFunction = ngraph::builder::subgraph::ConcatFunction::getOriginalWithIntermediateReshape( + precision, + testValues.inputShape, + testValues.reshapeOutputShape, + testValues.actual.fakeQuantize1, + testValues.actual.fakeQuantize2); + + SimpleLowPrecisionTransformer transform; + transform.add(testValues.params); + transform.add(testValues.params); + transform.transform(actualFunction); + + referenceFunction = ngraph::builder::subgraph::ConcatFunction::getReferenceWithIntermediateReshape( + precision, + testValues.inputShape, + testValues.reshapeOutputShape, + testValues.result.fakeQuantize1, + testValues.result.fakeQuantize2, + testValues.result.dequantizationAfter); + } + + static std::string getTestCaseName(testing::TestParamInfo obj) { + const ngraph::element::Type precision = std::get<0>(obj.param); + const TestValues testValues = std::get<1>(obj.param); + + std::ostringstream result; + result << + LayerTransformation::getTestCaseNameByParams(precision, testValues.inputShape, testValues.params) << "_" << + testValues.reshapeOutputShape << "_" << + testValues.actual << "_" << + testValues.result << "_"; + return result.str(); + } +}; + +TEST_P(ConcatWithIntermediateReshapeTransformation, CompareFunctions) { + actualFunction->validate_nodes_and_infer_types(); + auto res = compare_functions(referenceFunction, actualFunction, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +const std::vector precisions = { + ngraph::element::f32, + // ngraph::element::f16 +}; + +const std::vector testValues = { + // U8: Concat + MaxPool + { + Shape{ 2, 1, 9 }, + Shape{ 2, 1, 1, 9 }, + LayerTransformation::createParamsU8I8(), + { + { 256ul, ngraph::Shape({}), {0.f}, {2.55f}, {0.f}, {2.55f} }, + { 256ul, ngraph::Shape({}), {0.f}, {25.5f}, {0.f}, {25.5f} } + }, + { + { 256ul, ngraph::Shape({}), {0.f}, {2.55f}, {0.f}, {255.f} }, + { 256ul, ngraph::Shape({}), {0.f}, {25.5f}, {0.f}, {255.f} }, + { {ngraph::element::f32}, {}, { {0.01f, 0.1f} } } + } + }, +}; + +INSTANTIATE_TEST_CASE_P( + smoke_LPT, + ConcatWithIntermediateReshapeTransformation, + ::testing::Combine( + ::testing::ValuesIn(precisions), + ::testing::ValuesIn(testValues)), + ConcatWithIntermediateReshapeTransformation::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_transformation.cpp index 3a7f27bbb67bf5..974111bdae8015 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_with_constant_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_with_constant_transformation.cpp index ba21ec876f6d0d..7ddf74cd52a0ea 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_with_constant_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_intermediate_with_constant_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_neighbors_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_neighbors_transformation.cpp index 38a925a5235c4d..3008272bbfaea0 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_neighbors_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_neighbors_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_reshape_at_the_end_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_reshape_at_the_end_transformation.cpp index 2c51ee7d67a2a4..8f2f17a00f8b77 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_reshape_at_the_end_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_reshape_at_the_end_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_split_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_split_transformation.cpp index 05962a7a09ff9f..dbbe4b35f11549 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_split_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_strided_slice_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_strided_slice_transformation.cpp index fbe05b43133357..f11f20da124404 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_strided_slice_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/concat_with_strided_slice_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/convert_mul_or_add_finally_transformation_with_dequantization.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/convert_mul_or_add_finally_transformation_with_dequantization.cpp index da40cf60e9aadd..585f57c707e58b 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/convert_mul_or_add_finally_transformation_with_dequantization.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/convert_mul_or_add_finally_transformation_with_dequantization.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_qdq_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_qdq_transformation.cpp index 7937d884ae2fa2..173791ad88396d 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_qdq_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_qdq_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -79,6 +79,7 @@ class ConvolutionQDqTransformation : public LayerTransformation, public testing: testValues.expected.dequantizationAfter); } + static std::string getTestCaseName(testing::TestParamInfo obj) { auto inputShape = std::get<0>(obj.param); ConvolutionQDqTransformationTestValues testValues = std::get<1>(obj.param); @@ -174,7 +175,7 @@ const std::vector testValues = { { std::vector{ 100.f }, ngraph::element::i8}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0006f }, ngraph::element::f32, {1}}} + {{}, {}, {{ 0.0006f }, ngraph::element::f32, {1, 1, 1, 1}}} } }, @@ -226,7 +227,7 @@ const std::vector testValues = { { std::vector{ -125.f }, ngraph::element::i8}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, @@ -333,7 +334,7 @@ const std::vector testValues = { { std::vector{ 2.f }, ngraph::element::i8}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0006f }, ngraph::element::f32, { 1 }}} + {{}, {}, {{ 0.0006f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, @@ -401,7 +402,7 @@ const std::vector testValues = { { std::vector{ 2.f }, ngraph::element::i8}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0006f }, ngraph::element::f32, { 1 }}} + {{}, {}, {{ 0.0006f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } } }; diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_transformation.cpp index f524d7a0402ad1..dcfec174dc668c 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -49,27 +49,38 @@ class ConvolutionTransformationTestValues { }; typedef std::tuple< + element::Type, ngraph::Shape, ConvolutionTransformationTestValues> ConvolutionTransformationParams; class ConvolutionTransformation : public LayerTransformation, public testing::WithParamInterface { public: void SetUp() override { - const auto inputShape = std::get<0>(GetParam()); - const auto testValues = std::get<1>(GetParam()); + const auto netPrecision = std::get<0>(GetParam()); + const auto inputShape = std::get<1>(GetParam()); + auto testValues = std::get<2>(GetParam()); actualFunction = ngraph::builder::subgraph::ConvolutionFunction::getOriginal( + netPrecision, testValues.actual.precisionBeforeDequantization, inputShape, testValues.actual.dequantizationOnActivations, testValues.actual.weights, testValues.actual.fakeQuantizeOnWeights); - SimpleLowPrecisionTransformer transform; transform.add(testValues.params); transform.transform(actualFunction); + if (!testValues.params.updatePrecisions) { + const auto convertOnWeights = std::make_shared(testValues.expected.weights, netPrecision); + OutputVector convertedOutput(1); + convertOnWeights->constant_fold(convertedOutput, convertOnWeights->input_values()); + const auto convertedWeights = convertedOutput[0].get_node_shared_ptr(); + testValues.expected.weights = as_type_ptr(convertedWeights); + } + referenceFunction = ngraph::builder::subgraph::ConvolutionFunction::getReference( + netPrecision, testValues.expected.precisionBeforeDequantization, inputShape, testValues.expected.dequantizationBefore, @@ -81,11 +92,13 @@ class ConvolutionTransformation : public LayerTransformation, public testing::Wi } static std::string getTestCaseName(testing::TestParamInfo obj) { - auto inputShape = std::get<0>(obj.param); - ConvolutionTransformationTestValues testValues = std::get<1>(obj.param); + const auto netPrecision = std::get<0>(obj.param); + auto inputShape = std::get<1>(obj.param); + ConvolutionTransformationTestValues testValues = std::get<2>(obj.param); std::ostringstream result; result << toString(testValues.params) << "_" << + netPrecision << "_" << inputShape << "_" << testValues.actual.precisionBeforeDequantization << "_" << testValues.actual.dequantizationOnActivations << "_" << "_weights_" << @@ -102,6 +115,11 @@ TEST_P(ConvolutionTransformation, CompareFunctions) { ASSERT_TRUE(res.first) << res.second; } +const std::vector netPrecisions = { + element::f32, + element::f16 +}; + const std::vector shapes = { ngraph::Shape({ 1, 3, 72, 48 }), ngraph::Shape({ 4, 3, 72, 48 }) @@ -125,7 +143,7 @@ const std::vector testValues = { op::Constant::create(ngraph::element::i8, ngraph::Shape{}, std::vector{ -125.f }), {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, // with zero point @@ -165,7 +183,7 @@ const std::vector testValues = { op::Constant::create(ngraph::element::f32, ngraph::Shape{}, std::vector{ -125.f }), {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, // without zero point @@ -185,7 +203,7 @@ const std::vector testValues = { op::Constant::create(ngraph::element::i8, ngraph::Shape{}, std::vector{ -125.f }), {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, // without zero point @@ -205,7 +223,7 @@ const std::vector testValues = { op::Constant::create(ngraph::element::i8, ngraph::Shape{}, std::vector{ -125.f }), {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, // without zero point, not update precisions @@ -225,7 +243,7 @@ const std::vector testValues = { op::Constant::create(ngraph::element::f32, ngraph::Shape{}, std::vector{ -125.f }), {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, // with zero point, per-channel quantization with the same values @@ -245,7 +263,7 @@ const std::vector testValues = { op::Constant::create(ngraph::element::i8, ngraph::Shape{}, std::vector{ -125.f }), {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, // with zero point, per-channel quantization with different values @@ -361,7 +379,7 @@ const std::vector testValues = { op::Constant::create(ngraph::element::i8, ngraph::Shape{}, std::vector{ -125.f }), {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 1, 1, 1 }}} } }, }; @@ -370,6 +388,7 @@ INSTANTIATE_TEST_CASE_P( smoke_LPT, ConvolutionTransformation, ::testing::Combine( + ::testing::ValuesIn(netPrecisions), ::testing::ValuesIn(shapes), ::testing::ValuesIn(testValues)), ConvolutionTransformation::getTestCaseName); diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_with_incorrect_weights.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_with_incorrect_weights.cpp index e30ca586b4a7c9..b85c333928f1d8 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_with_incorrect_weights.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/convolution_with_incorrect_weights.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -125,7 +125,7 @@ const std::vector testValues = { {}, ngraph::element::i8, {-126.f}, - {{}, {}, {{ 0.1f }, ngraph::element::f32, { 1, 1, 1 }}}, + {{}, {}, {{ 0.1f }, ngraph::element::f32, { 1, 1, 1, 1 }}}, }, }, }; diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/depth_to_space_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/depth_to_space_transformation.cpp index 9fd98075bbb644..afbc2346c0f811 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/depth_to_space_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/depth_to_space_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/disable_convert_on_const_path_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/disable_convert_on_const_path_transformation.cpp index ceed0209b71d64..23396b71cda2bb 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/disable_convert_on_const_path_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/disable_convert_on_const_path_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,8 +10,7 @@ #include -#include - +#include #include #include #include diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/elementwise_with_multi_parent_dequantization_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/elementwise_with_multi_parent_dequantization_transformation.cpp index 5d893fab6d2d7b..6945e3ed1c0243 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/elementwise_with_multi_parent_dequantization_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/elementwise_with_multi_parent_dequantization_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/eltwise_transformation_is_broadcasted_test.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/eltwise_transformation_is_broadcasted_test.cpp index 75a5eaffe7e529..f42325ec5d6e42 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/eltwise_transformation_is_broadcasted_test.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/eltwise_transformation_is_broadcasted_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp index d02d51f265efa0..2799cde32cca64 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -130,9 +130,9 @@ const std::vector fak {{}, {}, {}}, ngraph::element::f32, { 255ul, {1, 1, 1, 1}, { 0.f }, { 254.f }, { -127.f }, { 127.f } }, - {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1 }}}, + {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1, 1 }}}, { 255ul, {1, 1, 1, 1}, { 0.f }, { 254.f }, { -127.f }, { 127.f } }, - {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1 }}}, + {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1, 1 }}}, } }, // not update precisions @@ -149,9 +149,9 @@ const std::vector fak {{}, {}, {}}, ngraph::element::f32, { 255ul, {1, 1, 1, 1}, { 0.f }, { 254.f }, { -127.f }, { 127.f } }, - {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1 }}}, + {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1, 1 }}}, { 255ul, {1, 1, 1, 1}, { 0.f }, { 254.f }, { -127.f }, { 127.f } }, - {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1 }}}, + {{}, {}, {{ 1.f }, ngraph::element::f32, { 1, 1, 1, 1 }}}, } } }; diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_on_weights_with_unsupported_child.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_on_weights_with_unsupported_child.cpp index 34e5bf397b5607..f430adb5974318 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_on_weights_with_unsupported_child.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_on_weights_with_unsupported_child.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_precision_selection_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_precision_selection_transformation.cpp index 2bf23ce03d5f57..5bbf9363792d69 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_precision_selection_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_precision_selection_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_transformation.cpp index dc5ffb1babe37d..9ec593b6371502 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -109,7 +109,7 @@ TEST_P(FakeQuantizeTransformation, CompareFunctions) { const std::vector precisions = { ngraph::element::f32, - ngraph::element::i32, + //ngraph::element::i32, ngraph::element::f16 }; diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp index b6fc476a60b6a4..b057615dcad5d4 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -194,7 +194,7 @@ const std::vector fakeQuanti { { }, { }, - { {0.0003f}, ngraph::element::f32, {1}} + { {0.0003f}, ngraph::element::f32, {1, 1, 1, 1}} } }, } diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dynamic_intervals_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dynamic_intervals_transformation.cpp index 1de0abcf37baac..e7955f9987153f 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dynamic_intervals_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fake_quantize_with_dynamic_intervals_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fold_convert_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fold_convert_transformation.cpp index 24c34da3bcdb8e..f98c78eeedabcb 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fold_convert_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fold_convert_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fold_fake_quantize_in_transformations.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fold_fake_quantize_in_transformations.cpp index 750e1bad4a8295..fe2b958d2164b7 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fold_fake_quantize_in_transformations.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fold_fake_quantize_in_transformations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_convert_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_convert_transformation.cpp index b09b623ed776e9..626b251ebfc66f 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_convert_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_convert_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -158,6 +158,20 @@ const std::vector testValues = { } } }, + // Convert with unexpected precision + { + ngraph::Shape{ 1, 4, 16, 16 }, + false, + LayerTransformation::createParamsU8I8(), + { + ngraph::element::f32, + {{ ngraph::element::i32 }, {}, {3.f}} + }, + { + ngraph::element::f32, + {{ ngraph::element::i32 }, {}, {3.f}} + } + }, }; TEST_P(FuseConvertTransformation, CompareFunctions) { diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_transformation.cpp index a4a4a7b300f4ba..100b166e92e403 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -142,6 +142,28 @@ const std::vector testValues = { { 256ul, {}, { 0.f }, { 255.f }, { 0.f }, { 2.55f } } } }, + // 1) Multiply with different input and output shape + { + Shape{128, 1}, + LayerTransformation::createParamsU8I8(), + { + element::f32, + {}, + element::f32, + { {}, {}, { {0.01f, 0.1f, 1.f}, ngraph::element::f32, {1, 3} } }, + element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + }, + { + element::f32, + {}, + element::f32, + { {}, {}, { {0.01f, 0.1f, 1.f}, ngraph::element::f32, {1, 3} } }, + element::f32, + element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, // 1) Multiply + 2) Add { Shape{1, 3, 16, 16}, @@ -252,6 +274,72 @@ const std::vector testValues = { { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } } }, + // issue #40611 for FP32 + { + ngraph::Shape{1, 3, 16, 16}, + LayerTransformation::createParamsU8I8(), + { + { }, + { }, + ngraph::element::i32, + { {ngraph::element::f32}, {}, {} }, + ngraph::element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + }, + { + { }, + { }, + ngraph::element::i32, + { {ngraph::element::f32}, {}, {} }, + element::f32, + element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, + // issue #40611 for FP16 + { + ngraph::Shape{1, 3, 16, 16}, + LayerTransformation::createParamsU8I8(), + { + { }, + { }, + ngraph::element::i32, + { {ngraph::element::f16}, {}, {} }, + ngraph::element::f16, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + }, + { + { }, + { }, + ngraph::element::i32, + { {ngraph::element::f16}, {}, {} }, + element::f16, + element::f16, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, + // multiply by zero + { + Shape{1, 3, 16, 16}, + LayerTransformation::createParamsU8I8(), + { + element::f32, + {}, + element::u8, + { {element::f32}, { {-128, -128, -128} }, { {0.01f, 0.f, 0.01f} } }, + element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + }, + { + element::f32, + {}, + element::u8, + { {element::f32}, { {-128, -128, -128} }, { {0.01f, 0.f, 0.01f} } }, + element::f32, + element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, }; INSTANTIATE_TEST_CASE_P( diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_with_multi_inputs_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_with_multi_inputs_transformation.cpp index c6e086f710d208..fcbb532a6f1cc8 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_with_multi_inputs_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_fake_quantize_with_multi_inputs_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_multiply_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_multiply_to_fake_quantize_transformation.cpp index 6809d5bfbb4dd3..6d2873007ff465 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_multiply_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_multiply_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -120,18 +120,6 @@ const std::vector testValues { {}, {}, {} }, } }, - { - Shape{1, 3, 16, 16}, - LayerTransformation::createParamsU8I8(), - { - { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 255.f }, element::u8 }, - { {}, {}, { { 0.5f }, element::u8 } }, - }, - { - { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 127.5f } }, - { {}, {}, {} }, - } - }, }; INSTANTIATE_TEST_CASE_P( diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_subtract_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_subtract_to_fake_quantize_transformation.cpp index 19daeeea858ec9..df725ae5c2379e 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_subtract_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/fuse_subtract_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_below_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_below_transformation.cpp index f96b0f1dbe3c9f..c92126b3252d12 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_below_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_below_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_test.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_test.cpp index 1086b5c4f2464d..0260a46467a419 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_test.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_transformation.cpp index 72e9a2b453dd8e..7f527e210929a5 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/get_dequantization_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/group_convolution_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/group_convolution_transformation.cpp index 29cd58c9733806..6fb52b537ba2a5 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/group_convolution_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/group_convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -139,7 +139,7 @@ const std::vector testValues = { {}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 24, 1, 1 }}} // 0.0002 = 0.02 (on data) * 0.01 (on weights) + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 24, 1, 1 }}} // 0.0002 = 0.02 (on data) * 0.01 (on weights) } }, // group convolution, tensor quantization, with zero point @@ -189,7 +189,7 @@ const std::vector testValues = { {}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 24, 1, 1 }}} // 0.0002 = 0.02 (on data) * 0.01 (on weights) + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 24, 1, 1 }}} // 0.0002 = 0.02 (on data) * 0.01 (on weights) } }, // group convolution, per-channel quantization with different values, without zero point @@ -230,7 +230,7 @@ const std::vector testValues = { // 0.0008 = 0.08 (on data) * 0.01 (on weights) 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f }, - ngraph::element::f32, {24, 1, 1} + ngraph::element::f32, {1, 24, 1, 1} } }, } @@ -264,7 +264,7 @@ const std::vector testValues = { { {}, {}, - {{ 0.0002f }, ngraph::element::f32, {24, 1, 1}} + {{ 0.0002f }, ngraph::element::f32, {1, 24, 1, 1}} }, } }, @@ -315,7 +315,7 @@ const std::vector testValues = { {}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 24, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 24, 1, 1 }}} } }, // depth-wise convolution, per-tensor quantization, with zero point @@ -340,7 +340,7 @@ const std::vector testValues = { {}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 6, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 6, 1, 1 }}} } }, // depth-wise convolution, tensor quantization, with zero point @@ -365,7 +365,7 @@ const std::vector testValues = { {}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 6, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 6, 1, 1 }}} } }, // depth-wise convolution, per-channel quantization with different values, without zero point @@ -403,7 +403,7 @@ const std::vector testValues = { 0.0004f, 0.0004f, // 0.0004 = 0.04 (on data) * 0.01 (on weights) 0.0008f, 0.0008f // 0.0008 = 0.08 (on data) * 0.01 (on weights) }, - ngraph::element::f32, {6, 1, 1} + ngraph::element::f32, {1, 6, 1, 1} } }, } @@ -437,7 +437,7 @@ const std::vector testValues = { { {}, {}, - {{ 0.0002f }, ngraph::element::f32, {6, 1, 1}} + {{ 0.0002f }, ngraph::element::f32, {1, 6, 1, 1}} }, } }, @@ -488,7 +488,7 @@ const std::vector testValues = { {}, {}, ngraph::element::f32, - {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 6, 1, 1 }}} + {{}, {}, {{ 0.0002f }, ngraph::element::f32, { 1, 6, 1, 1 }}} } }, // without dequantization operations @@ -555,7 +555,7 @@ const std::vector testValues = { // 0.0008 = 0.08 (on data) * 0.01 (on weights) 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f }, - ngraph::element::f32, {24, 1, 1} + ngraph::element::f32, {1, 24, 1, 1} } }, } @@ -611,7 +611,7 @@ const std::vector testValues = { // 0.0008 = 0.08 (on data) * 0.01 (on weights) 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f, 0.0008f }, - ngraph::element::f32, {24, 1, 1} + ngraph::element::f32, {1, 24, 1, 1} } }, } diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/interpolate_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/interpolate_transformation.cpp index 9461ad58fc265c..0e90edef6d7e5f 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/interpolate_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/interpolate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/is_constant_path_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/is_constant_path_transformation.cpp index 791838ee17330d..67b443b76eaac6 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/is_constant_path_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/is_constant_path_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/is_function_quantized_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/is_function_quantized_transformation.cpp index 76582309ea8afd..860f7931cf64ca 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/is_function_quantized_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/is_function_quantized_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.cpp index edd4649e265e49..5a862c059d2d33 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.hpp b/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.hpp index 743ec4091a71df..85550489a70d72 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.hpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/layer_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/low_precision_transformations_test.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/low_precision_transformations_test.cpp index 89e994e426c6e5..ec5f5a703a6e97 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/low_precision_transformations_test.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/low_precision_transformations_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/lpt_public_methods_test.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/lpt_public_methods_test.cpp index 94be9f4f36c3f4..8b903504fa7736 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/lpt_public_methods_test.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/lpt_public_methods_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_transformation.cpp index 0592ad6731cc00..934326f9573f63 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -88,13 +88,13 @@ class MatMulTransformation : public LayerTransformation, public testing::WithPar const MatMullTransformationTestValues testValues = std::get<2>(GetParam()); actualFunction = ngraph::builder::subgraph::MatMulFunction::getOriginal( + precision, shapes.first, testValues.actual.precisionBeforeDequantization1, testValues.actual.dequantization1, shapes.second, testValues.actual.precisionBeforeDequantization2, testValues.actual.dequantization2); - SimpleLowPrecisionTransformer transformer; transformer.add(testValues.params); transformer.transform(actualFunction); @@ -102,6 +102,7 @@ class MatMulTransformation : public LayerTransformation, public testing::WithPar referenceFunction = (testValues.expected.precisionBeforeOperation1 == ngraph::element::f32) && testValues.expected.result.empty() ? ngraph::builder::subgraph::MatMulFunction::getOriginal( + precision, shapes.first, testValues.actual.precisionBeforeDequantization1, testValues.actual.dequantization1, @@ -139,7 +140,7 @@ TEST_P(MatMulTransformation, CompareFunctions) { const std::vector precisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector> shapes = { diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_with_constant_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_with_constant_transformation.cpp index a8c709ade90812..5c4e171d504847 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_with_constant_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/mat_mul_with_constant_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,6 +19,7 @@ #include "ngraph_functions/subgraph_builders.hpp" #include "simple_low_precision_transformer.hpp" #include "lpt_ngraph_functions/common/dequantization_operations.hpp" +#include "lpt_ngraph_functions/common/constant.hpp" namespace { @@ -31,25 +32,25 @@ class MatMullTransformationTestValues { public: ngraph::Shape inputShape; ngraph::element::Type precisionBeforeDequantization; - ngraph::builder::subgraph::DequantizationOperations dequantization; - ngraph::Shape weightsConstShape; - std::vector weightsConstValues; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnData; + + ngraph::builder::subgraph::Constant weights; ngraph::builder::subgraph::FakeQuantizeOnWeights fqOnWeights; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnWeights; }; class Expected { public: ngraph::Shape inputShape; ngraph::element::Type precisionBeforeDequantization; - ngraph::builder::subgraph::DequantizationOperations dequantization; - ngraph::element::Type weightsConstPrecision; - ngraph::Shape weightsConstShape; - std::vector weightsConstValues; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnData; + ngraph::builder::subgraph::Constant weights; ngraph::element::Type precisionBeforeOperation; ngraph::builder::subgraph::DequantizationOperations resultDequantization; ngraph::builder::subgraph::FakeQuantizeOnWeights fqOnWeights; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnWeights; }; ngraph::pass::low_precision::LayerTransformation::Params params; @@ -61,22 +62,27 @@ inline std::ostream& operator << (std::ostream& out, const MatMullTransformation return out << "_" << actual.inputShape << "_" << actual.precisionBeforeDequantization << "_" << - actual.dequantization << "_" << - actual.weightsConstShape << "_" << - actual.fqOnWeights; + actual.dequantizationOnData << "_" << + actual.weights.shape << "_" << + actual.fqOnWeights << "_" << + actual.dequantizationOnWeights; } inline std::ostream& operator << (std::ostream& out, const MatMullTransformationTestValues::Expected& expected) { return out << "_" << - expected.weightsConstShape <<"_" << - expected.dequantization << "_" << + expected.weights.shape <<"_" << + expected.dequantizationOnData << "_" << expected.precisionBeforeOperation << "_" << expected.resultDequantization << "_" << - expected.fqOnWeights; + expected.fqOnWeights << "_" << + expected.dequantizationOnWeights; } inline std::ostream& operator << (std::ostream& out, const MatMullTransformationTestValues& values) { - return out << "_" << values.actual << "_" << values.expected; + return out << "_" << + values.params.support3DTensorOnActivations << "_" << + values.actual << "_" << + values.expected; } typedef std::tuple< @@ -94,37 +100,36 @@ class MatMulWithConstantTransformation : public LayerTransformation, public test testValues.actual.inputShape[0] = batch; testValues.expected.inputShape[0] = batch; + actualFunction = ngraph::builder::subgraph::MatMulFunction::getOriginal( precision, testValues.actual.inputShape, testValues.actual.precisionBeforeDequantization, - testValues.actual.dequantization, - testValues.actual.weightsConstShape, - testValues.actual.weightsConstValues, - testValues.actual.fqOnWeights); + testValues.actual.dequantizationOnData, + testValues.actual.weights, + testValues.actual.fqOnWeights, + testValues.actual.dequantizationOnWeights); SimpleLowPrecisionTransformer transformer; transformer.add(testValues.params); transformer.transform(actualFunction); - referenceFunction = testValues.expected.fqOnWeights.empty() ? + referenceFunction = (testValues.expected.fqOnWeights.empty() && testValues.expected.dequantizationOnWeights.empty()) ? ngraph::builder::subgraph::MatMulFunction::getReference( precision, testValues.expected.inputShape, testValues.expected.precisionBeforeDequantization, - testValues.expected.dequantization, - testValues.expected.weightsConstPrecision, - testValues.expected.weightsConstShape, - testValues.expected.weightsConstValues, + testValues.expected.dequantizationOnData, + testValues.expected.weights, testValues.expected.resultDequantization) : ngraph::builder::subgraph::MatMulFunction::getOriginal( precision, testValues.expected.inputShape, testValues.expected.precisionBeforeDequantization, - testValues.expected.dequantization, - testValues.expected.weightsConstShape, - testValues.expected.weightsConstValues, - testValues.expected.fqOnWeights); + testValues.expected.dequantizationOnData, + testValues.expected.weights, + testValues.expected.fqOnWeights, + testValues.expected.dequantizationOnWeights); } static std::string getTestCaseName(testing::TestParamInfo obj) { @@ -160,19 +165,63 @@ std::vector testValues = { { 1, 384, 1024 }, ngraph::element::u8, { ngraph::element::f32, {}, { 0.02f } }, - { 1024, 1024 }, - std::vector(1024 * 1024, 1.f), + { std::vector(1024 * 1024, 1.f), ngraph::element::f32, ngraph::Shape{ 1024, 1024 } }, { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} }, { { 1, 384, 1024 }, ngraph::element::u8, - { {}, {}, {} }, - ngraph::element::i8, - { 1024, 1024 }, - std::vector(1024 * 1024, -126), - ngraph::element::i8, + {}, + { std::vector(1024 * 1024, -126.f), ngraph::element::i8, ngraph::Shape{ 1024, 1024 } }, + ngraph::element::u8, + { {}, {}, { 0.02f * 0.1f } }, + {}, + {} + } + }, + + // supported 3D: U8 & I8 with Dq on weights + { + LayerTransformation::createParamsU8I8(), + { + { 1, 384, 1024 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(1024 * 1024, 1.f), ngraph::element::i8, ngraph::Shape{ 1024, 1024 } }, + {}, + { ngraph::element::f32, {}, { 0.1f } }, + }, + { + { 1, 384, 1024 }, + ngraph::element::u8, + {}, + { std::vector(1024 * 1024, 1.f), ngraph::element::i8, ngraph::Shape{ 1024, 1024 } }, + ngraph::element::u8, { {}, {}, { 0.02f * 0.1f } }, + {}, + {} + } + }, + + // support3DTensorOnActivations = false for 3D tensor + { + LayerTransformation::createParamsU8I8().setSupport3DTensorOnActivations(false), + { + { 1, 384, 1024 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(1024 * 1024, 1.f), ngraph::element::f32, { 1024, 1024 } }, + { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} } + }, + { + { 1, 384, 1024 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(1024 * 1024, 1.f), ngraph::element::f32, { 1024, 1024 } }, + ngraph::element::i8, + {}, + { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, {} } }, @@ -184,20 +233,42 @@ std::vector testValues = { { 1, 3, 4 }, ngraph::element::u8, { ngraph::element::f32, {}, { {0.01f, 0.02f, 0.03f} } }, - { 4, 4 }, - std::vector(4 * 4, 1.f), + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} + }, + { + { 1, 3, 4 }, + ngraph::element::u8, + {}, + { std::vector(4 * 4, -126.f), ngraph::element::i8, ngraph::Shape{ 4, 4 } }, + ngraph::element::u8, + { {}, {}, { {0.001f, 0.002f, 0.003f} } }, + {}, + {} + } + }, + + // 3D: U8 & I8 with Dq on weights + { + LayerTransformation::createParamsU8I8(), + { + { 1, 3, 4 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { {0.01f, 0.02f, 0.03f} } }, + { std::vector(4 * 4, 1.f), ngraph::element::i8, ngraph::Shape{ 4, 4 } }, + {}, + { ngraph::element::f32, {}, { 0.1f } } }, { { 1, 3, 4 }, ngraph::element::u8, { {}, {}, {} }, - ngraph::element::i8, - {4, 4}, - std::vector(4 * 4, -126.f), - ngraph::element::f32, + { std::vector(4 * 4, 1.f), ngraph::element::i8, ngraph::Shape{ 4, 4 } }, + ngraph::element::u8, { {}, {}, { {0.001f, 0.002f, 0.003f} } }, {}, + {} } }, @@ -208,8 +279,7 @@ std::vector testValues = { { 1, 3, 4 }, ngraph::element::u8, { ngraph::element::f32, {}, { 0.02f } }, - { 4, 4 }, - std::vector(4 * 4, 1.f), + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, { 255, { 1, 4 }, @@ -218,17 +288,40 @@ std::vector testValues = { {-127.f, -12.7f, -1.27f , -0.127f}, {127.f, 12.7f, 1.27f , 0.127f}, }, + {} }, { { 1, 3, 4 }, ngraph::element::u8, { {}, {}, {} }, - ngraph::element::i8, - { 4, 4 }, - std::vector(4 * 4, -126.f), - ngraph::element::f32, + { std::vector(4 * 4, -126.f), ngraph::element::i8, ngraph::Shape{ 4, 4 } }, + ngraph::element::u8, { {}, {}, {{ 0.02f, 0.002f, 0.0002f, 0.00002f }, ngraph::element::f32, ngraph::Shape{ 1, 1, 4 }}}, {}, + {} + } + }, + + // 3D: U8 & I8 with Dq on weights with different values + { + LayerTransformation::createParamsU8I8(), + { + { 1, 3, 4 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(4 * 4, 1.f), ngraph::element::i8, ngraph::Shape{ 4, 4 } }, + {}, + { ngraph::element::f32, {}, { {1.f, 0.1f, 0.01f, 0.001f} } } + }, + { + { 1, 3, 4 }, + ngraph::element::u8, + { {}, {}, {} }, + { std::vector(4 * 4, 1.f), ngraph::element::i8, ngraph::Shape{ 4, 4 } }, + ngraph::element::u8, + { {}, {}, {{ 0.02f, 0.002f, 0.0002f, 0.00002f }, ngraph::element::f32, ngraph::Shape{ 1, 1, 4 }}}, + {}, + {} } }, @@ -239,20 +332,19 @@ std::vector testValues = { { 1, 3, 4 }, ngraph::element::u8, { ngraph::element::f32, {}, { {0.01f, 0.02f, 0.03f, 0.01f}, ngraph::element::f32, ngraph::Shape{1, 1, 4} } }, - { 4, 4 }, - std::vector(4 * 4, 1.f), + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} }, { { 1, 3, 4 }, ngraph::element::u8, { ngraph::element::f32, {}, { {0.01f, 0.02f, 0.03f, 0.01f}, ngraph::element::f32, ngraph::Shape{1, 1, 4} } }, + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, ngraph::element::f32, - { 4, 4 }, - std::vector(4 * 4, 1.f), - ngraph::element::f32, - {{}, {}, {}}, + {}, { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} } }, @@ -263,8 +355,7 @@ std::vector testValues = { { 1, 3, 4 }, ngraph::element::u8, { ngraph::element::f32, {}, { 0.02f } }, - { 4, 4 }, - std::vector(4 * 4, 1.f), + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, { 255, { 4, 1 }, @@ -273,16 +364,15 @@ std::vector testValues = { {-127.f, -12.7f, -1.27f , -0.127f}, {127.f, 12.7f, 1.27f , 0.127f}, }, + {} }, { { 1, 3, 4 }, ngraph::element::u8, { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, ngraph::element::f32, - { 4, 4 }, - std::vector(4 * 4, 1.f), - ngraph::element::f32, - { {}, {}, { 0.02f * 0.1f } }, + {}, { 255, { 4, 1 }, @@ -291,6 +381,30 @@ std::vector testValues = { {-127.f, -12.7f, -1.27f , -0.127f}, {127.f, 12.7f, 1.27f , 0.127f}, }, + {} + }, + }, + + // U8 & I8: dequantization by rows in second input: can't be transformed (Dq on weights) + { + LayerTransformation::createParamsU8I8(), + { + { 1, 3, 4 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, + {}, + { ngraph::element::f32, {}, { {0.01f, 0.02f, 0.03f, 0.01f}, ngraph::element::f32, ngraph::Shape{4, 1} } }, + }, + { + { 1, 3, 4 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(4 * 4, 1.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, + ngraph::element::u8, + {}, + {}, + { ngraph::element::f32, {}, { {0.01f, 0.02f, 0.03f, 0.01f}, ngraph::element::f32, ngraph::Shape{4, 1} } }, }, }, @@ -301,22 +415,67 @@ std::vector testValues = { { 1, 2048 }, ngraph::element::u8, { ngraph::element::f32, {}, { 0.02f } }, - { 2048, 1000 }, - std::vector(2048 * 1000, 1.f), + { std::vector(2048 * 1000, 1.f), ngraph::element::f32, ngraph::Shape{ 2048, 1000 } }, { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} }, { { 1, 2048 }, ngraph::element::u8, { {}, {}, {} }, - ngraph::element::i8, - {2048, 1000}, - std::vector(2048 * 1000, -126), + { std::vector(2048 * 1000, -126.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, + ngraph::element::u8, + { {}, {}, { 0.02f * 0.1f } }, + {}, + {} + } + }, + + // 2D: U8 & I8 with Dq on weights + { + LayerTransformation::createParamsU8I8(), + { + { 1, 2048 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.2f } }, + { std::vector(2048 * 1000, 1.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, + {}, + { ngraph::element::f32, {}, { 0.2f } } + }, + { + { 1, 2048 }, + ngraph::element::u8, + { {}, {}, {} }, + { std::vector(2048 * 1000, 1.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, + ngraph::element::u8, + { {}, {}, { 0.2f * 0.2f } }, + {}, + {} + } + }, + + // support3DTensorOnActivations = false, but 2D tensor is used + { + LayerTransformation::createParamsU8I8().setSupport3DTensorOnActivations(false), + { + { 1, 2048 }, + ngraph::element::u8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(2048 * 1000, 1.f), ngraph::element::f32, { 2048, 1000 }}, + { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} + }, + { + { 1, 2048 }, + ngraph::element::u8, + {}, + { std::vector(2048 * 1000, -126), ngraph::element::i8, { 2048, 1000 }}, ngraph::element::i8, { {}, {}, { 0.02f * 0.1f } }, {} } }, + // 2D: I8 & I8 { LayerTransformation::createParamsI8I8(), @@ -324,45 +483,113 @@ std::vector testValues = { { 1, 2048 }, ngraph::element::i8, { ngraph::element::f32, {}, { 0.02f } }, - { 2048, 1000 }, - std::vector(2048 * 1000, 1.f), + { std::vector(2048 * 1000, 1.f), ngraph::element::f32, ngraph::Shape{ 2048, 1000 } }, { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} }, { { 1, 2048 }, ngraph::element::i8, { {}, {}, {} }, - ngraph::element::i8, - {2048, 1000}, - std::vector(2048 * 1000, -126), + { std::vector(2048 * 1000, -126.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, ngraph::element::i8, { {}, {}, { 0.02f * 0.1f } }, + {}, + {} + } + }, + + // 2D: I8 & I8 with Dq on weights with small subtract values + { + LayerTransformation::createParamsI8I8(), + { + { 1, 2048 }, + ngraph::element::i8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(2048 * 1000, 1.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, + {}, + { ngraph::element::f32, { 1e-7f }, { 0.02f } } + }, + { + { 1, 2048 }, + ngraph::element::i8, + { {}, {}, {} }, + { std::vector(2048 * 1000, 1.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, + ngraph::element::i8, + { {}, {}, { 0.02f * 0.02f } }, + {}, {} } }, - // 2D: FP32 & FP328 + + // 2D: I8 & I8 with Dq on weights with zero subtract values + { + LayerTransformation::createParamsI8I8(), + { + { 1, 2048 }, + ngraph::element::i8, + { ngraph::element::f32, {}, { 0.02f } }, + { std::vector(2048 * 1000, 1.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, + {}, + { ngraph::element::f32, { 0.f }, { 0.02f } } + }, + { + { 1, 2048 }, + ngraph::element::i8, + { {}, {}, {} }, + { std::vector(2048 * 1000, 1.f), ngraph::element::i8, ngraph::Shape{ 2048, 1000 } }, + ngraph::element::i8, + { {}, {}, { 0.02f * 0.02f } }, + {}, + {} + } + }, + + // 2D: FP32 & FP32 { LayerTransformation::createParamsU8I8().setUpdatePrecisions(false), { { 1, 2048 }, ngraph::element::f32, { {}, {}, { 0.02f } }, - { 2048, 1000 }, - std::vector(2048 * 1000, 1.f), + { std::vector(2048 * 1000, 1.f), ngraph::element::f32, ngraph::Shape{ 2048, 1000 } }, { 255, { 1, 1 }, {0.f}, {254.f}, {-12.7f}, {12.7} }, + {} }, { { 1, 2048 }, ngraph::element::f32, { {}, {}, {} }, - ngraph::element::f32, - {2048, 1000}, - std::vector(2048 * 1000, -126), + { std::vector(2048 * 1000, -126.f), ngraph::element::f32, ngraph::Shape{ 2048, 1000 } }, ngraph::element::f32, { {}, {}, { 0.02f * 0.1f } }, + {}, {} } }, + + // 2D: FP32 & FP32 with Dq on weights + { + LayerTransformation::createParamsU8I8().setUpdatePrecisions(false), + { + { 1, 2048 }, + ngraph::element::f32, + { {}, {}, { 0.02f } }, + { std::vector(2048 * 1000, 1.f), ngraph::element::f32, ngraph::Shape{ 2048, 1000 } }, + {}, + { ngraph::element::f32, {}, { 0.02f } } + }, + { + { 1, 2048 }, + ngraph::element::f32, + { {}, {}, {} }, + { std::vector(2048 * 1000, 1.f), ngraph::element::f32, ngraph::Shape{ 2048, 1000 } }, + ngraph::element::f32, + { {}, {}, { 0.02f * 0.02f } }, + {}, + {} + } + } }; INSTANTIATE_TEST_CASE_P( diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/max_pool_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/max_pool_transformation.cpp index 8f0efa0a00a7ee..c7c3bae73fcf9e 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/max_pool_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/max_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/move_dequantization_after_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/move_dequantization_after_transformation.cpp index aa5c2956a6ce0c..c50375d14df92b 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/move_dequantization_after_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/move_dequantization_after_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/move_dequantization_after_with_int_constant_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/move_dequantization_after_with_int_constant_transformation.cpp deleted file mode 100644 index d7cdca9904e009..00000000000000 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/move_dequantization_after_with_int_constant_transformation.cpp +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright (C) 2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "layer_transformation.hpp" - -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include "common_test_utils/ngraph_test_utils.hpp" -#include "lpt_ngraph_functions/move_dequantization_after_with_int_constant_function.hpp" -#include "lpt_ngraph_functions/common/dequantization_operations.hpp" - -using namespace testing; -using namespace ngraph::pass; -using namespace ngraph::builder::subgraph; - -class MoveDequantizationAfterTransformationParams { -public: - class Actual { - public: - ngraph::builder::subgraph::DequantizationOperations dequantization; - }; - - class Expected { - public: - ngraph::builder::subgraph::DequantizationOperations dequantizationBefore; - ngraph::element::Type precisionAfterOperation; - ngraph::builder::subgraph::DequantizationOperations dequantizationAfter; - }; - - ngraph::element::Type originalPrecision; - ngraph::pass::low_precision::LayerTransformation::Params params; - bool updatePrecision; - bool moveSubtract; - Actual actual; - Expected expected; -}; - -typedef std::tuple< - ngraph::Shape, - MoveDequantizationAfterTransformationParams> MoveDequantizationAfterTransformationTestValues; - -class MoveDequantizationAfterWithIntConstantTransformation : - public LayerTransformation, - public testing::WithParamInterface { -public: - void SetUp() override { - const auto inputShape = std::get<0>(GetParam()); - const auto testValues = std::get<1>(GetParam()); - actualFunction = ngraph::builder::subgraph::MoveDequantizationAfterWithIntConstantFunction::getOriginal( - testValues.originalPrecision, - inputShape, - testValues.actual.dequantization); - - const auto targetNode = actualFunction->get_output_op(0)->get_input_node_shared_ptr(0); - const auto dequantization = ngraph::pass::low_precision::NetworkHelper::getDequantization(targetNode); - ngraph::pass::low_precision::NetworkHelper::moveDequantizationAfter( - targetNode, - dequantization, - testValues.updatePrecision, - testValues.moveSubtract); - - referenceFunction = ngraph::builder::subgraph::MoveDequantizationAfterWithIntConstantFunction::getReference( - testValues.originalPrecision, - inputShape, - testValues.expected.dequantizationBefore, - testValues.expected.precisionAfterOperation, - testValues.expected.dequantizationAfter); - } - - static std::string getTestCaseName(testing::TestParamInfo obj) { - const auto inputShape = std::get<0>(obj.param); - const auto testValues = std::get<1>(obj.param); - - std::ostringstream result; - result << - testValues.originalPrecision << "_" << - inputShape << "_" << - testValues.actual.dequantization << "_" << - (testValues.moveSubtract ? "move_subtract_" : "don't_move_subtract_") << - (testValues.updatePrecision ? "updatePrecision" : "don't_update_precision"); - return result.str(); - } -}; - -TEST_P(MoveDequantizationAfterWithIntConstantTransformation, CompareFunctions) { - actualFunction->validate_nodes_and_infer_types(); - auto res = compare_functions(referenceFunction, actualFunction, true, false, true); - ASSERT_TRUE(res.first) << res.second; -} - -const std::vector inputShapes = { - { 1, 3, 16, 16 }, - { 4, 3, 16, 16 } -}; - -const std::vector testValues = { - // I8 & I8: Multiply - { - ngraph::element::i8, - LayerTransformation::createParamsU8I8(), - false, - true, - { - { {}, {}, { {10.f}, ngraph::element::f32, {}, true, 1ul, ngraph::element::u8 } }, - }, - { - { {}, {}, {} }, - ngraph::element::f32, - { {}, {}, { 10.f } }, - }, - }, - // I8 & I8: Subtract + Multiply - { - ngraph::element::i8, - LayerTransformation::createParamsU8I8(), - false, - true, - { - { - {}, - { {5.f}, ngraph::element::f32, {}, true, 1ul, ngraph::element::u8 }, - { {10.f}, ngraph::element::f32, {}, true, 1ul, ngraph::element::u8 } - }, - }, - { - { {}, {}, {} }, - ngraph::element::f32, - { {}, {5.f}, { 10.f } }, - }, - }, - // FP32 & I8: Multiply - { - ngraph::element::u8, - LayerTransformation::createParamsU8I8(), - false, - true, - { - { {ngraph::element::f32}, {}, { {10.f}, ngraph::element::f32, {}, true, 1ul, ngraph::element::i8 } }, - }, - { - { {}, {}, {} }, - ngraph::element::f32, - { {}, {}, { 10.f } }, - }, - }, - // FP32 & I8: Subtract + Multiply - { - ngraph::element::u8, - LayerTransformation::createParamsU8I8(), - false, - true, - { - { - {ngraph::element::f32}, - { {5.f}, ngraph::element::f32, {}, true, 1ul, ngraph::element::i8 }, - { {10.f}, ngraph::element::f32, {}, true, 1ul, ngraph::element::i8 } - }, - }, - { - { {}, {}, {} }, - ngraph::element::f32, - { {}, {5.f}, { 10.f } }, - }, - } -}; - -INSTANTIATE_TEST_CASE_P( - smoke_LPT, - MoveDequantizationAfterWithIntConstantTransformation, - ::testing::Combine( - ::testing::ValuesIn(inputShapes), - ::testing::ValuesIn(testValues)), - MoveDequantizationAfterWithIntConstantTransformation::getTestCaseName); diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/mul_add_to_scaleshift_or_power_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/mul_add_to_scaleshift_or_power_transformation.cpp index f12f5d52a085a8..14da96bd21bf94 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/mul_add_to_scaleshift_or_power_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/mul_add_to_scaleshift_or_power_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_to_group_convolution_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_to_group_convolution_transformation.cpp index f2a2d025e9562a..a7f4013c315d88 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_to_group_convolution_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_to_group_convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_transformation.cpp index da4079c78c8f61..a17839f8d3c4cd 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/multiply_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -50,17 +50,18 @@ typedef std::tuple< class MultiplyTransformation : public LayerTransformation, public testing::WithParamInterface { public: void SetUp() override { + const ngraph::element::Type precision = std::get<0>(GetParam()); const ngraph::Shape shape = std::get<1>(GetParam()); + //const bool broadcast = std::get<2>(GetParam()); const MultiplyTransformationTestValues testParams = std::get<3>(GetParam()); - actualFunction = MultiplyFunction::get(shape, testParams.actual); - + actualFunction = MultiplyFunction::get(precision, shape, testParams.actual); SimpleLowPrecisionTransformer transform; transform.add( low_precision::LayerTransformation::Params(testParams.transformationParams)); transform.transform(actualFunction); - referenceFunction = MultiplyFunction::get(shape, testParams.expected); + referenceFunction = MultiplyFunction::get(precision, shape, testParams.expected); } static std::string getTestCaseName(testing::TestParamInfo obj) { @@ -88,7 +89,7 @@ TEST_P(MultiplyTransformation, CompareFunctions) { const std::vector precisions = { ngraph::element::f32, - //ngraph::element::f16 + ngraph::element::f16 }; const std::vector shapes = { @@ -101,40 +102,40 @@ const std::vector broadcastValues = { }; const std::vector multiplyTransformationTestValues = { - // U8 - { - LayerTransformation::createParamsU8I8(), - { - { - { 1, 3, 8, 16 }, - {}, - ngraph::element::u8, - {ngraph::element::f32, { 2.f }, { 10.f }} - }, - { - { 1, 3, 8, 16 }, - {}, - ngraph::element::u8, - {ngraph::element::f32, { 3.f }, { 7.f }} - }, - false - }, - { - { - { 1, 3, 8, 16 }, - {}, - ngraph::element::u8, - {ngraph::element::f32, { 2.f }, { 10.f }} - }, - { - { 1, 3, 8, 16 }, - {}, - ngraph::element::u8, - {ngraph::element::f32, { 3.f }, { 7.f }} - }, - false - } - }, +// // U8 +// { +// LayerTransformation::createParamsU8I8(), +// { +// { +// { 1, 3, 8, 16 }, +// {}, +// ngraph::element::u8, +// {ngraph::element::f32, { 2.f }, { 10.f }} +// }, +// { +// { 1, 3, 8, 16 }, +// {}, +// ngraph::element::u8, +// {ngraph::element::f32, { 3.f }, { 7.f }} +// }, +// false +// }, +// { +// { +// { 1, 3, 8, 16 }, +// {}, +// ngraph::element::u8, +// {ngraph::element::f32, { 2.f }, { 10.f }} +// }, +// { +// { 1, 3, 8, 16 }, +// {}, +// ngraph::element::u8, +// {ngraph::element::f32, { 3.f }, { 7.f }} +// }, +// false +// } +// }, { LayerTransformation::createParamsU8I8(), diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/mvn_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/mvn_transformation.cpp index 65c74418a190b5..ba90f89d3f4a42 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/mvn_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/mvn_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -47,6 +47,12 @@ class MVNTransformationTestValues { Expected expected; }; +typedef std::tuple< + ngraph::element::Type, + MVNTransformationTestValues, + int +> MVNTransformationParams; + template inline std::ostream& operator<<(std::ostream& os, const std::vector& values) { os << "{ "; @@ -60,48 +66,67 @@ inline std::ostream& operator<<(std::ostream& os, const std::vector& values) return os; } -class MVNTransformation : public LayerTransformation, public testing::WithParamInterface { +class MVNTransformation : public LayerTransformation, public testing::WithParamInterface { public: void SetUp() override { - const MVNTransformationTestValues testValues = GetParam(); + const ngraph::element::Type precision = std::get<0>(GetParam()); + const MVNTransformationTestValues testValues = std::get<1>(GetParam()); + const int opset_version = std::get<2>(GetParam()); actualFunction = ngraph::builder::subgraph::MVNFunction::getOriginal( + precision, testValues.inputShape, testValues.reductionAxes, testValues.normalizeVariance, testValues.actual.precisionBeforeDequantization, - testValues.actual.dequantization); + testValues.actual.dequantization, + opset_version); SimpleLowPrecisionTransformer transformer; transformer.add(testValues.params); transformer.transform(actualFunction); referenceFunction = ngraph::builder::subgraph::MVNFunction::getReference( + precision, testValues.inputShape, testValues.reductionAxes, testValues.normalizeVariance, testValues.expected.precisionBeforeDequantization, testValues.expected.dequantizationBefore, testValues.expected.precisionAfterOperation, - testValues.expected.dequantizationAfter); + testValues.expected.dequantizationAfter, + opset_version); } - static std::string getTestCaseName(testing::TestParamInfo obj) { - const MVNTransformationTestValues testValues = obj.param; + static std::string getTestCaseName(testing::TestParamInfo obj) { + const ngraph::element::Type precision = std::get<0>(obj.param); + const MVNTransformationTestValues testValues = std::get<1>(obj.param); + const int opset_version = std::get<2>(obj.param); std::ostringstream result; result << + precision << "_" << toString(testValues.params) << "_" << testValues.inputShape << "_" << testValues.reductionAxes << "_" << testValues.normalizeVariance << "_" << testValues.actual.precisionBeforeDequantization << "_" << testValues.actual.dequantization << "_" << - testValues.expected.dequantizationBefore; + testValues.expected.dequantizationBefore << "_" << + opset_version; return result.str(); } }; +const std::vector precisions = { + ngraph::element::f32, + ngraph::element::f16 +}; + +const std::vector opset_version = { + 2, 6 +}; + const std::vector testValues = { { ngraph::Shape{ 1, 4, 16, 16 }, @@ -276,5 +301,8 @@ TEST_P(MVNTransformation, CompareFunctions) { INSTANTIATE_TEST_CASE_P( smoke_LPT, MVNTransformation, - ::testing::ValuesIn(testValues), + ::testing::Combine( + ::testing::ValuesIn(precisions), + ::testing::ValuesIn(testValues), + ::testing::ValuesIn(opset_version)), MVNTransformation::getTestCaseName); diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_dequantization_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_dequantization_transformation.cpp index 3dd7e7f1a4a96a..63592e5b35ce99 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_dequantization_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_dequantization_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_l2_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_l2_transformation.cpp index a8418ec771ded6..72e1c715ac6de5 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_l2_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/normalize_l2_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,6 +43,7 @@ class NormalizeL2TransformationTestValues { }; typedef std::tuple< + ngraph::element::Type, ngraph::Shape, ngraph::op::EpsMode, std::vector, @@ -51,13 +52,15 @@ typedef std::tuple< class NormalizeL2Transformation : public LayerTransformation, public testing::WithParamInterface { public: void SetUp() override { + ngraph::element::Type precision; ngraph::Shape shape; ngraph::op::EpsMode epsMode; std::vector axes; NormalizeL2TransformationTestValues params; - std::tie(shape, epsMode, axes, params) = GetParam(); + std::tie(precision, shape, epsMode, axes, params) = GetParam(); actualFunction = ngraph::builder::subgraph::NormalizeL2Function::getOriginal( + precision, params.actual.inputPrecision, shape, epsMode, @@ -70,6 +73,7 @@ class NormalizeL2Transformation : public LayerTransformation, public testing::Wi transform.transform(actualFunction); referenceFunction = ngraph::builder::subgraph::NormalizeL2Function::getReference( + precision, params.expected.inputPrecision, shape, epsMode, @@ -80,14 +84,16 @@ class NormalizeL2Transformation : public LayerTransformation, public testing::Wi } static std::string getTestCaseName(testing::TestParamInfo obj) { + ngraph::element::Type precision; ngraph::Shape shape; ngraph::Shape axes; ngraph::op::EpsMode epsMode; NormalizeL2TransformationTestValues params; - std::tie(shape, epsMode, axes, params) = obj.param; + std::tie(precision, shape, epsMode, axes, params) = obj.param; std::ostringstream result; result << + precision << "_" << toString(params.transformationParams) << shape << "_" << axes << "_" << epsMode << "_" << params.actual.inputPrecision << "_" << params.actual.dequantization; @@ -101,6 +107,11 @@ TEST_P(NormalizeL2Transformation, CompareFunctions) { ASSERT_TRUE(res.first) << res.second; } +const std::vector precisions = { + ngraph::element::f32, + ngraph::element::f16 +}; + const std::vector shapes = { { 1, 3, 16, 16 } }; @@ -116,76 +127,76 @@ std::vector> axes = { }; const std::vector normalizeL2TransformationTestValues = { - // U8 per tensor quantization - { - LayerTransformation::createParamsU8I8(), - { - ngraph::element::u8, - {{ngraph::element::f32}, {2.f}, {-12.3f}} - }, - { - ngraph::element::u8, - {{ngraph::element::f32}, {2.f}, {-12.3f}}, - ngraph::element::f32, - {} - } - }, - // U8 per tensor quantization without subtract - { - LayerTransformation::createParamsU8I8(), - { - ngraph::element::u8, - {{ngraph::element::f32}, {}, {-12.3f}} - }, - { - ngraph::element::u8, - {}, - ngraph::element::f32, - {{}, {}, {-1.f}} - } - }, - // U8 per channel quantization with the same values - { - LayerTransformation::createParamsU8I8(), - { - ngraph::element::u8, - {{ngraph::element::f32}, {}, {{12.3f, 12.3f, 12.3f}}} - }, - { - ngraph::element::u8, - {}, - ngraph::element::f32, - {{}, {}, {{1.f, 1.f, 1.f}}} - } - }, - // U8 per channel quantization with different values - { - LayerTransformation::createParamsU8I8(), - { - ngraph::element::u8, - {{ngraph::element::f32}, {}, {{12.3f, -12.3f, 12.3f}}} - }, - { - ngraph::element::u8, - {{ngraph::element::f32}, {}, {{12.3f, -12.3f, 12.3f}}}, - ngraph::element::f32, - {} - } - }, - // U8 not update precisions - { - LayerTransformation::createParamsU8I8().setUpdatePrecisions(false), - { - ngraph::element::f32, - {{}, {}, {12.3f}} - }, - { - ngraph::element::f32, - {}, - ngraph::element::f32, - {{}, {}, {1.f}} - } - }, +// // U8 per tensor quantization +// { +// LayerTransformation::createParamsU8I8(), +// { +// ngraph::element::u8, +// {{ngraph::element::f32}, {2.f}, {-12.3f}} +// }, +// { +// ngraph::element::u8, +// {{ngraph::element::f32}, {2.f}, {-12.3f}}, +// ngraph::element::f32, +// {} +// } +// }, +// // U8 per tensor quantization without subtract +// { +// LayerTransformation::createParamsU8I8(), +// { +// ngraph::element::u8, +// {{ngraph::element::f32}, {}, {-12.3f}} +// }, +// { +// ngraph::element::u8, +// {}, +// ngraph::element::f32, +// {{}, {}, {-1.f}} +// } +// }, +// // U8 per channel quantization with the same values +// { +// LayerTransformation::createParamsU8I8(), +// { +// ngraph::element::u8, +// {{ngraph::element::f32}, {}, {{12.3f, 12.3f, 12.3f}}} +// }, +// { +// ngraph::element::u8, +// {}, +// ngraph::element::f32, +// {{}, {}, {{1.f, 1.f, 1.f}}} +// } +// }, +// // U8 per channel quantization with different values +// { +// LayerTransformation::createParamsU8I8(), +// { +// ngraph::element::u8, +// {{ngraph::element::f32}, {}, {{12.3f, -12.3f, 12.3f}}} +// }, +// { +// ngraph::element::u8, +// {{ngraph::element::f32}, {}, {{12.3f, -12.3f, 12.3f}}}, +// ngraph::element::f32, +// {} +// } +// }, +// // U8 not update precisions +// { +// LayerTransformation::createParamsU8I8().setUpdatePrecisions(false), +// { +// ngraph::element::f32, +// {{}, {}, {12.3f}} +// }, +// { +// ngraph::element::f32, +// {}, +// ngraph::element::f32, +// {{}, {}, {1.f}} +// } +// }, // U8 without dequantization { LayerTransformation::createParamsU8I8(), @@ -262,6 +273,7 @@ INSTANTIATE_TEST_CASE_P( smoke_LPT, NormalizeL2Transformation, ::testing::Combine( + ::testing::ValuesIn(precisions), ::testing::ValuesIn(shapes), ::testing::ValuesIn(epsMode), ::testing::ValuesIn(axes), diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/precision_details_test.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/precision_details_test.cpp index 0dcc49e2deb2e9..1d3f026e042021 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/precision_details_test.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/precision_details_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/prelu_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/prelu_transformation.cpp index 2eb028233ae771..bbe0e3bd9a2668 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/prelu_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/prelu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/pull_reshape_through_dequantization_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/pull_reshape_through_dequantization_transformation.cpp new file mode 100644 index 00000000000000..cec2abdb330d4b --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/pull_reshape_through_dequantization_transformation.cpp @@ -0,0 +1,262 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "layer_transformation.hpp" + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" +#include "simple_low_precision_transformer.hpp" +#include "lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp" + +using namespace testing; +using namespace ngraph; +using namespace ngraph::pass; + +class PullReshapeThroughDequantizationTestValues { +public: + class Values { + public: + ngraph::element::Type precisionBeforeDequantization; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnActivations; + ngraph::builder::subgraph::Constant weights; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnWeights; + ngraph::builder::subgraph::Reshape reshape1; + ngraph::builder::subgraph::DequantizationOperations::Multiply multiply; + ngraph::builder::subgraph::Transpose transpose; + ngraph::builder::subgraph::Reshape reshape2; + ngraph::element::Type precisionAfterOperation; + ngraph::builder::subgraph::DequantizationOperations dequantizationAfter; + }; + + ngraph::pass::low_precision::LayerTransformation::Params params; + Values actual; + Values expected; +}; + +typedef std::tuple< + ngraph::Shape, + std::pair, + ngraph::Shape, // multiplyShapes + PullReshapeThroughDequantizationTestValues> PullReshapeThroughDequantizationParams; + +class PullReshapeThroughDequantizationTransformation : + public LayerTransformation, + public testing::WithParamInterface { +public: + void SetUp() override { + const auto inputShape = std::get<0>(GetParam()); + const auto dequantizationElementwiseShape = std::get<1>(GetParam()); + const auto multiplyShape = std::get<2>(GetParam()); + auto testValues = std::get<3>(GetParam()); + + // to prevent test cases increasing let's parameterize test by dequantization shape and + // initialize values here + testValues.actual.dequantizationOnWeights.subtract.constantShape = dequantizationElementwiseShape.first; + testValues.actual.dequantizationOnWeights.multiply.constantShape = dequantizationElementwiseShape.first; + testValues.actual.multiply.constantShape = multiplyShape; + testValues.expected.dequantizationOnWeights.subtract.constantShape = dequantizationElementwiseShape.second; + testValues.expected.dequantizationOnWeights.multiply.constantShape = dequantizationElementwiseShape.second; + + actualFunction = ngraph::builder::subgraph::FakeQuantizeAndConvolutionFunction::get( + testValues.actual.precisionBeforeDequantization, + inputShape, + {}, + {}, + testValues.actual.dequantizationOnActivations, + testValues.actual.weights, + {}, + {}, + testValues.actual.dequantizationOnWeights, + testValues.actual.reshape1, + testValues.actual.multiply, + testValues.actual.transpose, + testValues.actual.reshape2, + testValues.actual.dequantizationAfter, + "GroupConvolution"); + + ngraph::pass::Manager manager; + auto decomp = manager.register_pass(); + const std::vector supportedTypes = { ngraph::element::i8, ngraph::element::u8 }; + decomp->add_matcher(supportedTypes); + decomp->add_matcher(supportedTypes); + decomp->add_matcher(); + manager.run_passes(actualFunction); + + referenceFunction = ngraph::builder::subgraph::FakeQuantizeAndConvolutionFunction::get( + testValues.actual.precisionBeforeDequantization, + inputShape, + {}, + {}, + testValues.expected.dequantizationOnActivations, + testValues.expected.weights, + {}, + {}, + testValues.expected.dequantizationOnWeights, + testValues.expected.reshape1, + testValues.expected.multiply, + testValues.expected.transpose, + testValues.expected.reshape2, + testValues.expected.dequantizationAfter, + "GroupConvolution"); + } + + static std::string getTestCaseName(testing::TestParamInfo obj) { + const auto inputShape = std::get<0>(obj.param); + const auto dequantizationElementwiseShape = std::get<1>(obj.param); + const auto multiplyShape = std::get<2>(obj.param); + const PullReshapeThroughDequantizationTestValues testValues = std::get<3>(obj.param); + + std::ostringstream result; + result << toString(testValues.params) << "_" << + inputShape << "_" << + dequantizationElementwiseShape.first << "_" << + dequantizationElementwiseShape.second << "_" << + multiplyShape << "_" << + testValues.actual.precisionBeforeDequantization << "_" << + testValues.actual.dequantizationOnActivations << "_" << "_weights_" << + testValues.actual.weights.outPrecision << "_" << "{ " << + testValues.actual.weights.values[0] << " }_" << + testValues.actual.dequantizationOnWeights; + return result.str(); + } +}; + +TEST_P(PullReshapeThroughDequantizationTransformation, CompareFunctions) { + actualFunction->validate_nodes_and_infer_types(); + auto res = compare_functions(referenceFunction, actualFunction, true, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +const std::vector inputShapes = { + ngraph::Shape({ 1, 960, 7, 7 }), + ngraph::Shape({ 4, 960, 7, 7 }) +}; + +const std::vector> dequantizationOnWeightElementwiseConstantShapes = { + { ngraph::Shape({1, 960}), ngraph::Shape({960, 1, 1, 1}) }, + { ngraph::Shape({9, 960}), ngraph::Shape({960, 1, 3, 3}) } +}; + +const std::vector multiplyShapes = { + ngraph::Shape({1, 1, 960, 1}) +}; + +const std::vector testValues = { + // Actual: + // Constant + // |I8 + // | + // Convert Constant + // |FP32 /FP32 + // | / + // Subtract Constant + // |FP32 /FP32 + // | / + // Multiply Constant + // |FP32 /FP32 + // | / + // Parameter Constant Reshape Constant + // |U8 |U8 |FP32 /FP32 + // | | | / + // Convert Convert Multiply Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Subtract Constant Transpose Constant + // \FP32 /FP32 |FP32 /I64 + // \ / | / + // Multiply Reshape + // \FP32 /FP32 + // \ / + // GroupConvolution + // + // + // Transformed: + // + // Constant + // |I8 + // | + // Parameter Constant Convert Constant + // |U8 |U8 |FP32 /FP32 + // | | | / + // Convert Convert Subtract Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Subtract Constant Multiply Constant + // \FP32 /FP32 |FP32 /I64 + // \ / | / + // Multiply Reshape + // \FP32 /FP32 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + { + LayerTransformation::createParamsU8I8().setSupportAsymmetricQuantization(true), + // ActualValues + { + ngraph::element::u8, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {}, false, 1ul, element::u8, true }, + { {0.02f}, element::f32, {}, false } + }, + { std::vector{ 2.f }, ngraph::element::i8, {9, 960}}, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {/* from parameter */}, false }, + { {0.03f}, element::f32, {/* from parameter */}, false } + }, + { {3, 3, 960, 1} }, + { {2}, element::f32, {/* from parameter: multiplyShapes */}, false }, + { {2, 3, 0, 1} }, + { {960, 1, 1, 3, 3} }, + ngraph::element::f32, + {} + }, + // ExpectedValues + { + ngraph::element::u8, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {}, false, 1ul, element::u8, true }, + { {0.02f}, element::f32, {}, false } + }, + { std::vector{ 2.f }, ngraph::element::i8, {960, 1, 3, 3}}, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {/* from parameter */}, false }, + { {0.06f}, element::f32, {/* from parameter */}, false } + }, + {}, + {}, + {}, + {{960, 1, 1, 3, 3}}, + ngraph::element::f32, + {} + } + } +}; + +INSTANTIATE_TEST_CASE_P( + smoke_LPT, + PullReshapeThroughDequantizationTransformation, + ::testing::Combine( + ::testing::ValuesIn(inputShapes), + ::testing::ValuesIn(dequantizationOnWeightElementwiseConstantShapes), + ::testing::ValuesIn(multiplyShapes), + ::testing::ValuesIn(testValues)), + PullReshapeThroughDequantizationTransformation::getTestCaseName); diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/pull_transpose_through_dequantization_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/pull_transpose_through_dequantization_transformation.cpp new file mode 100644 index 00000000000000..5794ffc55e5d7c --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/pull_transpose_through_dequantization_transformation.cpp @@ -0,0 +1,247 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "layer_transformation.hpp" + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" +#include "simple_low_precision_transformer.hpp" +#include "lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp" + +using namespace testing; +using namespace ngraph; +using namespace ngraph::pass; + +class PullTransposeThroughDequantizationTestValues { +public: + class Values { + public: + ngraph::element::Type precisionBeforeDequantization; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnActivations; + ngraph::builder::subgraph::Constant weights; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnWeights; + ngraph::builder::subgraph::Reshape reshape1; + ngraph::builder::subgraph::DequantizationOperations::Multiply multiply; + ngraph::builder::subgraph::Transpose transpose; + ngraph::builder::subgraph::Reshape reshape2; + ngraph::element::Type precisionAfterOperation; + ngraph::builder::subgraph::DequantizationOperations dequantizationAfter; + }; + + ngraph::pass::low_precision::LayerTransformation::Params params; + Values actual; + Values expected; +}; + +typedef std::tuple< + ngraph::Shape, + std::pair, + PullTransposeThroughDequantizationTestValues> PullTransposeThroughDequantizationParams; + +class PullTransposeThroughDequantizationTransformation : + public LayerTransformation, + public testing::WithParamInterface { +public: + void SetUp() override { + const auto inputShape = std::get<0>(GetParam()); + const auto dequantizationElementwiseShape = std::get<1>(GetParam()); + auto testValues = std::get<2>(GetParam()); + + // to prevent test cases increasing let's parameterize test by dequantization shape and + // initialize values here + testValues.actual.dequantizationOnWeights.subtract.constantShape = dequantizationElementwiseShape.first; + testValues.actual.dequantizationOnWeights.multiply.constantShape = dequantizationElementwiseShape.first; + testValues.expected.dequantizationOnWeights.subtract.constantShape = dequantizationElementwiseShape.second; + testValues.expected.dequantizationOnWeights.multiply.constantShape = dequantizationElementwiseShape.second; + + actualFunction = ngraph::builder::subgraph::FakeQuantizeAndConvolutionFunction::get( + testValues.actual.precisionBeforeDequantization, + inputShape, + {}, + {}, + testValues.actual.dequantizationOnActivations, + testValues.actual.weights, + {}, + {}, + testValues.actual.dequantizationOnWeights, + testValues.actual.reshape1, + testValues.actual.multiply, + testValues.actual.transpose, + testValues.actual.reshape2, + testValues.actual.dequantizationAfter, + "GroupConvolution"); + + ngraph::pass::Manager manager; + auto decomp = manager.register_pass(); + const std::vector supportedTypes = { ngraph::element::i8, ngraph::element::u8 }; + decomp->add_matcher(supportedTypes); + decomp->add_matcher(supportedTypes); + decomp->add_matcher(); + manager.run_passes(actualFunction); + + referenceFunction = ngraph::builder::subgraph::FakeQuantizeAndConvolutionFunction::get( + testValues.actual.precisionBeforeDequantization, + inputShape, + {}, + {}, + testValues.expected.dequantizationOnActivations, + testValues.expected.weights, + {}, + {}, + testValues.expected.dequantizationOnWeights, + testValues.expected.reshape1, + testValues.expected.multiply, + testValues.expected.transpose, + testValues.expected.reshape2, + testValues.expected.dequantizationAfter, + "GroupConvolution"); + } + + static std::string getTestCaseName(testing::TestParamInfo obj) { + const auto inputShape = std::get<0>(obj.param); + const auto dequantizationElementwiseShape = std::get<1>(obj.param); + const PullTransposeThroughDequantizationTestValues testValues = std::get<2>(obj.param); + + std::ostringstream result; + result << toString(testValues.params) << "_" << + inputShape << "_" << + dequantizationElementwiseShape.first << "_" << + dequantizationElementwiseShape.second << "_" << + testValues.actual.precisionBeforeDequantization << "_" << + testValues.actual.dequantizationOnActivations << "_" << "_weights_" << + testValues.actual.weights.outPrecision << "_" << "{ " << + testValues.actual.weights.values[0] << " }_" << + testValues.actual.dequantizationOnWeights; + return result.str(); + } +}; + +TEST_P(PullTransposeThroughDequantizationTransformation, CompareFunctions) { + actualFunction->validate_nodes_and_infer_types(); + auto res = compare_functions(referenceFunction, actualFunction, true, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +const std::vector inputShapes = { + ngraph::Shape({ 1, 960, 7, 7 }), + ngraph::Shape({ 4, 960, 7, 7 }) +}; + +const std::vector> dequantizationOnWeightElementwiseConstantShapes = { + { ngraph::Shape({}), ngraph::Shape({1, 1, 1, 1}) }, + { ngraph::Shape({1}), ngraph::Shape({1, 1, 1, 1}) } +}; + +const std::vector testValues = { + // Actual: + // + // Constant + // |I8 + // | + // Convert Constant + // |FP32 /FP32 + // | / + // Parameter Constant Subtract Constant + // |U8 |U8 |FP32 /FP32 + // | | | / + // Convert Convert Multiply Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Subtract Constant Transpose Constant + // \FP32 /FP32 |FP32 /I64 + // \ / | / + // Multiply Reshape + // \FP32 /FP32 + // \ / + // GroupConvolution + // + // + // Transformed: + // + // Constant + // |I8 + // | + // Parameter Constant Convert Constant + // |U8 |U8 |FP32 /FP32 + // | | | / + // Convert Convert Subtract Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Subtract Constant Multiply Constant + // \FP32 /FP32 |FP32 /I64 + // \ / | / + // Multiply Reshape + // \FP32 /FP32 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + { + LayerTransformation::createParamsU8I8().setSupportAsymmetricQuantization(true), + // ActualValues + { + ngraph::element::u8, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {}, false, 1ul, element::u8, true }, + { {0.02f}, element::f32, {}, false } + }, + { std::vector{ 2.f }, ngraph::element::i8, {3, 3, 960, 1}}, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {/* from parameter */}, false }, + { {0.03f}, element::f32, {/* from parameter */}, false } + }, + { }, // reshape1 + { }, // multiply + { {2, 3, 0, 1} }, + { {960, 1, 1, 3, 3} }, + ngraph::element::f32, + {} + }, + // ExpectedValues + { + ngraph::element::u8, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {}, false, 1ul, element::u8, true }, + { {0.02f}, element::f32, {}, false } + }, + { std::vector{ 2.f }, ngraph::element::i8, {960, 1, 3, 3}}, + { + { ngraph::element::f32, false }, + { {127.f}, element::f32, {/* from parameter */}, false }, + { {0.03f}, element::f32, {/* from parameter */}, false } + }, + {}, + {}, + {}, + {{960, 1, 1, 3, 3}}, + ngraph::element::f32, + {} + } + } +}; + +INSTANTIATE_TEST_CASE_P( + smoke_LPT, + PullTransposeThroughDequantizationTransformation, + ::testing::Combine( + ::testing::ValuesIn(inputShapes), + ::testing::ValuesIn(dequantizationOnWeightElementwiseConstantShapes), + ::testing::ValuesIn(testValues)), + PullTransposeThroughDequantizationTransformation::getTestCaseName); diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/relu_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/relu_transformation.cpp index a93f94d5f24151..090bf1b6aeab16 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/relu_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/relu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_fully_connected_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_fully_connected_transformation.cpp index 74b955f1c0d7e9..a0ad21362ed6d9 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_fully_connected_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_fully_connected_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_transformation.cpp index 517f0ba3c97ece..c2ff5b59048e44 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/reshape_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -565,6 +565,78 @@ const std::vector testValues = { ngraph::element::u8, {{ngraph::element::f32}, {{128.f}, ngraph::element::f32, {}}, {{0.1f}, ngraph::element::f32, {}}} } + }, + // U8: with subtract 4D -> 3D, Dq after convolution: face-detection-0205 case + { + ngraph::Shape({ 1, 3, 12, 12 }), + { 0, 3, -1 }, + LayerTransformation::createParamsU8I8(), + { + ngraph::element::u8, + { + {ngraph::element::f32}, + {{128.f, 12.8f, 128.f}, ngraph::element::f32, {3, 1, 1}}, + {{0.1f, 0.01f, 0.1f}, ngraph::element::f32, {3, 1, 1}} + } + }, + { + ngraph::element::u8, + {{}, {}, {}}, + ngraph::element::u8, + { + {ngraph::element::f32}, + {{128.f, 12.8f, 128.f}, ngraph::element::f32, {1, 3, 1}}, + {{0.1f, 0.01f, 0.1f}, ngraph::element::f32, {1, 3, 1}} + } + } + }, + // U8: without subtract 4D -> 3D, Dq after convolution: face-detection-0205 case + { + ngraph::Shape({ 1, 3, 12, 12 }), + { 0, 3, -1 }, + LayerTransformation::createParamsU8I8(), + { + ngraph::element::u8, + { + {ngraph::element::f32}, + {}, + {{0.1f, 0.01f, 0.1f}, ngraph::element::f32, {3, 1, 1}} + } + }, + { + ngraph::element::u8, + {{}, {}, {}}, + ngraph::element::u8, + { + {ngraph::element::f32}, + {}, + {{0.1f, 0.01f, 0.1f}, ngraph::element::f32, {1, 3, 1}} + } + } + }, + // U8: without subtract 4D -> 3D, Dq after convolution + { + ngraph::Shape({ 1, 3, 12, 12 }), + { 0, -1, 144 }, + LayerTransformation::createParamsU8I8(), + { + ngraph::element::u8, + { + {ngraph::element::f32}, + {}, + {{0.1f, 0.01f, 0.1f}, ngraph::element::f32, {3, 1, 1}} + } + }, + { + ngraph::element::u8, + {{}, {}, {}}, + ngraph::element::u8, + { + {ngraph::element::f32}, + {}, + {{0.1f, 0.01f, 0.1f}, ngraph::element::f32, {1, 3, 1}} + } + } } }; diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/round_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/round_transformation.cpp index b451c9e98e0c56..04ff6e9f0d3700 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/round_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/round_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/separate_in_standalone_branch_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/separate_in_standalone_branch_transformation.cpp index 4d48966c46f318..ec6176375b0493 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/separate_in_standalone_branch_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/separate_in_standalone_branch_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.cpp index 6eb501251c1d6e..8ee17c8e39b966 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.hpp b/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.hpp index 4ac0096248bc5e..b4bf3a9c9787a7 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.hpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/simple_low_precision_transformer.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/split_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/split_transformation.cpp index 4282d18f563e49..bc4e5580b4bd3e 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/split_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/squeeze_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/squeeze_transformation.cpp index 9b9aacf1081d25..a753c972ba3fd8 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/squeeze_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/squeeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/strided_slice_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/strided_slice_transformation.cpp index c2057ec4765254..8f570484c81a1f 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/strided_slice_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/strided_slice_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -367,6 +367,38 @@ const std::vector stridedSliceTransformati {} } }, + // quantization after convolution + { + ngraph::Shape{1, 3, 24, 24}, + LayerTransformation::createParamsU8I8(), + specialDimensionSlice, + { + ngraph::element::u8, + {{ngraph::element::f32}, {}, { {0.1f, 0.01f, 1.f}, ngraph::element::f32, {3, 1, 1} }} + }, + { + ngraph::element::u8, + {}, + ngraph::element::u8, + {{ngraph::element::f32}, {}, { {0.1f, 0.01f, 1.f}, ngraph::element::f32, {1, 3, 1, 1} }} + } + }, + // quantization after convolution + { + ngraph::Shape{1, 3, 24, 24}, + LayerTransformation::createParamsU8I8(), + channelSlice, + { + ngraph::element::u8, + {{ngraph::element::f32}, {}, { {0.1f, 0.01f, 1.f}, ngraph::element::f32, {3, 1, 1} }} + }, + { + ngraph::element::u8, + {}, + ngraph::element::u8, + {{ngraph::element::f32}, {}, { {0.1f, 0.01f}, ngraph::element::f32, {1, 2, 1, 1} }} + } + }, }; INSTANTIATE_TEST_CASE_P( diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/subtract_multiply_to_multiply_add_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/subtract_multiply_to_multiply_add_transformation.cpp index 8dbe6fc4975176..e7a7ca81fbc679 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/subtract_multiply_to_multiply_add_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/subtract_multiply_to_multiply_add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/transformations_after_split_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/transformations_after_split_transformation.cpp new file mode 100644 index 00000000000000..c63a38f1b45780 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/transformations_after_split_transformation.cpp @@ -0,0 +1,220 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "layer_transformation.hpp" + +#include +#include +#include + +#include +#include + +// general transformations +#include "low_precision/add.hpp" +#include "low_precision/avg_pool.hpp" +#include "low_precision/clamp.hpp" +#include "low_precision/convolution.hpp" +#include "low_precision/depth_to_space.hpp" +#include "low_precision/fake_quantize.hpp" +#include "low_precision/interpolate.hpp" +#include "low_precision/mat_mul.hpp" +#include "low_precision/max_pool.hpp" +#include "low_precision/multiply.hpp" +#include "low_precision/mvn.hpp" +#include "low_precision/normalize_l2.hpp" +#include "low_precision/prelu.hpp" +#include "low_precision/reshape.hpp" +#include "low_precision/relu.hpp" +#include "low_precision/squeeze.hpp" +#include "low_precision/subtract.hpp" +#include "low_precision/strided_slice.hpp" +#include "low_precision/transpose.hpp" +#include "low_precision/unsqueeze.hpp" + +// cleanup transformations +#include "low_precision/fuse_convert.hpp" +#include "low_precision/fuse_fake_quantize.hpp" +#include "low_precision/fuse_subtract_to_fake_quantize.hpp" +#include "low_precision/fuse_multiply_to_fake_quantize.hpp" +#include "low_precision/multiply_to_group_convolution.hpp" +#include "low_precision/subtract_multiply_to_multiply_add.hpp" + +#include "lpt_ngraph_functions/transformations_after_split_function.hpp" +#include "common_test_utils/ngraph_test_utils.hpp" +#include "simple_low_precision_transformer.hpp" + + +namespace { +using namespace testing; +using namespace ngraph; +using namespace ngraph::pass; + +SimpleLowPrecisionTransformer getTransformerWithTransformationByName( + const ngraph::pass::low_precision::LayerTransformation::Params& params, + std::string name) { + using namespace pass::low_precision; + SimpleLowPrecisionTransformer transformer; + + if (name == "AddTransformation") { + transformer.add(params); + return transformer; + } + if (name == "AvgPoolTransformation") { + transformer.add(params); + return transformer; + } + if (name == "ClampTransformation") { + transformer.add(params); + return transformer; + } + if (name == "ConvolutionTransformation") { + transformer.add(params); + return transformer; + } + if (name == "DepthToSpaceTransformation") { + transformer.add(params); + return transformer; + } + if (name == "FakeQuantizeTransformation") { + transformer.add(params); + return transformer; + } + if (name == "InterpolateTransformation") { + transformer.add(params); + return transformer; + } + if (name == "MatMulTransformation") { + transformer.add(params); + return transformer; + } + if (name == "MaxPoolTransformation") { + transformer.add(params); + return transformer; + } + if (name == "MultiplyTransformation") { + transformer.add(params); + return transformer; + } + if (name == "MVNTransformation") { + transformer.add(params); + return transformer; + } + if (name == "NormalizeL2Transformation") { + transformer.add(params); + return transformer; + } + if (name == "PReluTransformation") { + transformer.add(params); + return transformer; + } + if (name == "ReluTransformation") { + transformer.add(params); + return transformer; + } + if (name == "ReshapeTransformation") { + transformer.add(params); + return transformer; + } + if (name == "SqueezeTransformation") { + transformer.add(params); + return transformer; + } + if (name == "StridedSliceTransformation") { + transformer.add(params); + return transformer; + } + if (name == "TransposeTransformation") { + transformer.add(params); + return transformer; + } + if (name == "UnsqueezeTransformation") { + transformer.add(params); + return transformer; + } + if (name == "FuseConvertTransformation") { + transformer.add(params); + return transformer; + } + if (name == "FuseSubtractToFakeQuantizeTransformation") { + transformer.add(params); + return transformer; + } + if (name == "FuseMultiplyToFakeQuantizeTransformation") { + transformer.add(params); + return transformer; + } + if (name == "MultiplyToGroupConvolutionTransformation") { + transformer.add(params); + return transformer; + } + if (name == "SubtractMultiplyToMultiplyAddTransformation") { + transformer.add(params); + return transformer; + } + throw std::runtime_error("unexpected transformation name"); +} + +class TransformationsAfterSplitTransformation : public LayerTransformation, public testing::WithParamInterface { +public: + void SetUp() override { + const auto layerName = GetParam(); + function = ngraph::builder::subgraph::TransformationsAfterSplitFunction::get(layerName); + function->validate_nodes_and_infer_types(); + } + + static std::string getTestCaseName(testing::TestParamInfo obj) { + const auto layerName = obj.param; + std::ostringstream result; + + result << "additional_layer_name_" << layerName; + return result.str(); + } + +protected: + std::shared_ptr function; +}; + +TEST_P(TransformationsAfterSplitTransformation, Run) { + const std::string layerName = GetParam(); + const auto params = LayerTransformation::createParamsU8I8(); + SimpleLowPrecisionTransformer transformer = getTransformerWithTransformationByName(params, layerName); + + ASSERT_NO_THROW(transformer.transform(function)); +} + +const std::vector transformationNames = { + "AddTransformation", + "AvgPoolTransformation", + "ClampTransformation", + "ConvolutionTransformation", + "DepthToSpaceTransformation", + "FakeQuantizeTransformation", + "InterpolateTransformation", + "MatMulTransformation", + "MaxPoolTransformation", + "MultiplyTransformation", + "MVNTransformation", + "NormalizeL2Transformation", + "PReluTransformation", + "ReluTransformation", + "ReshapeTransformation", + "SqueezeTransformation", + "StridedSliceTransformation", + "TransposeTransformation", + "UnsqueezeTransformation", + "FuseConvertTransformation", + "FuseSubtractToFakeQuantizeTransformation", + "FuseMultiplyToFakeQuantizeTransformation", + "MultiplyToGroupConvolutionTransformation", + "SubtractMultiplyToMultiplyAddTransformation", +}; + +INSTANTIATE_TEST_CASE_P( + smoke_LPT, + TransformationsAfterSplitTransformation, + ::testing::ValuesIn(transformationNames), + TransformationsAfterSplitTransformation::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/transformer_is_function_quantized.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/transformer_is_function_quantized.cpp index f9bd7b69aa3340..1ad9e702d182b2 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/transformer_is_function_quantized.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/transformer_is_function_quantized.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/transpose_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/transpose_transformation.cpp index 3d4bf602567328..de8d2f780b828a 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/transpose_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/transpose_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/unsqueeze_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/unsqueeze_transformation.cpp index 70126f8e0f1ff6..00359326fb0a93 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/unsqueeze_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/unsqueeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/lp_transformations/variadic_split_transformation.cpp b/inference-engine/tests/functional/inference_engine/lp_transformations/variadic_split_transformation.cpp index c114ac0e09055a..d77e80b21d797b 100644 --- a/inference-engine/tests/functional/inference_engine/lp_transformations/variadic_split_transformation.cpp +++ b/inference-engine/tests/functional/inference_engine/lp_transformations/variadic_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/net_reader_test.cpp b/inference-engine/tests/functional/inference_engine/net_reader_test.cpp index 6c4cb650ed8cf2..e01379ad348903 100644 --- a/inference-engine/tests/functional/inference_engine/net_reader_test.cpp +++ b/inference-engine/tests/functional/inference_engine/net_reader_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,7 +31,7 @@ using NetReaderNoParamTest = CommonTestUtils::TestsCommon; TEST_F(NetReaderNoParamTest, IncorrectModel) { InferenceEngine::Core ie; - ASSERT_THROW(ie.ReadNetwork("incorrectFilePath"), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(ie.ReadNetwork("incorrectFilePath"), InferenceEngine::Exception); } using NetReaderTestParams = std::tuple; @@ -141,7 +141,7 @@ TEST_P(NetReaderTest, ReadCorrectModelWithWeightsUnicodePath) { CommonTestUtils::removeFile(weightsPath); GTEST_COUT << "OK" << std::endl; } - catch (const InferenceEngine::details::InferenceEngineException &e_next) { + catch (const InferenceEngine::Exception &e_next) { CommonTestUtils::removeFile(modelPath); CommonTestUtils::removeFile(weightsPath); FAIL() << e_next.what(); diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/abs_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/abs_tests.cpp index 6460907f9c51a0..eb49336ca03612 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/abs_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/abs_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,7 +32,6 @@ constexpr ngraph::NodeTypeInfo FakeAbs::type_info; class AbsFakeExtension: public InferenceEngine::IExtension { public: void GetVersion(const InferenceEngine::Version*& versionInfo) const noexcept override {} - void Release() noexcept override { delete this; } void Unload() noexcept override {} std::map getOpSets() override{ diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/acos_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/acos_tests.cpp index ff95c1a7da88d2..5659ca24be9ba9 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/acos_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/acos_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/add_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/add_tests.cpp index b6961f6c1d808a..d18fdd46fa9771 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/add_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/add_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/asin_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/asin_tests.cpp index 2379a1e927ef63..c82d33c25c6ea5 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/asin_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/asin_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/atan_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/atan_tests.cpp index 688ad06c2854a8..38f1efb51c3e2c 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/atan_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/atan_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/batch_norm_inference_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/batch_norm_inference_tests.cpp index e94ec987c1f859..537c298df5dbb0 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/batch_norm_inference_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/batch_norm_inference_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/binary_convolution_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/binary_convolution_tests.cpp index abd74e3dbf7b3e..032209d3df0144 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/binary_convolution_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/binary_convolution_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/broadcast_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/broadcast_tests.cpp index 52ee678c781d39..4a2f9856fb9d28 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/broadcast_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/broadcast_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/ceiling_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/ceiling_tests.cpp index cb14af31f57d52..afbc8df9f28ac9 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/ceiling_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/ceiling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/clamp_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/clamp_tests.cpp index 139864b4782fd9..75553cb9bf9e1d 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/clamp_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/clamp_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/concat_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/concat_tests.cpp index 70932fc477a435..6b7e67474ea440 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/concat_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/concat_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/constant_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/constant_tests.cpp index dff67ecf225c73..fb76a331e239ea 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/constant_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/constant_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -53,3 +53,45 @@ TEST_F(NGraphReaderTests, ReadConstantNetwork) { IE_SUPPRESS_DEPRECATED_END } + +TEST_F(NGraphReaderTests, ReadConstantNetworkWithNegativeDimension) { + // test for IR Parser that dimensions with negative values are not allowed + std::string model = R"V0G0N( + + + + + + + 1 + -3 + 22 + 22 + + + + + + + 1 + 3 + 22 + 22 + + + + + + + + +)V0G0N"; + + Core ie; + Blob::Ptr weights; + + weights = make_shared_blob(TensorDesc(Precision::U8, {5808}, Layout::C)); + weights->allocate(); + + EXPECT_THROW(ie.ReadNetwork(model, weights), std::exception); +} diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_like_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_like_tests.cpp index f9fbee13e13f6e..cb06737bc35a16 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_like_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_like_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_tests.cpp index d614c62c5ab18f..eab7b934615957 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/convert_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadConvertNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_backprop_data_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_backprop_data_tests.cpp index dfa44377519e3e..d9fe3d35da6949 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_backprop_data_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_backprop_data_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_tests.cpp index 3ef99740539d53..8049f727cff4b3 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/convolution_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/cos_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/cos_tests.cpp index c434878bb8f329..6dad71ce3305f5 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/cos_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/cos_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/cosh_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/cosh_tests.cpp index d18729bb913ef7..e68f748e3b04e4 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/cosh_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/cosh_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/ctc_greedy_decoder_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/ctc_greedy_decoder_tests.cpp index d8188da093f836..32a01cf1004292 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/ctc_greedy_decoder_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/ctc_greedy_decoder_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/custom_op_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/custom_op_tests.cpp index 35f0875fcc1f7b..70f77e7bf554ce 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/custom_op_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/custom_op_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -55,8 +55,6 @@ class CustomAddConstExtension : public InferenceEngine::IExtension { void GetVersion(const InferenceEngine::Version*& versionInfo) const noexcept override {} - void Release() noexcept override { delete this; } - void Unload() noexcept override {} std::map getOpSets() override { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/deconvolution_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/deconvolution_tests.cpp index 518659d93e62c4..d62e9e675c3a8e 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/deconvolution_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/deconvolution_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_convolution_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_convolution_tests.cpp index 135255b25c6117..de59f0effe74d2 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_convolution_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_convolution_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_psroi_pooling_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_psroi_pooling_tests.cpp index de5198c65f703b..33690d29f25b2b 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_psroi_pooling_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/deformable_psroi_pooling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/depth_to_space_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/depth_to_space_tests.cpp index 858d3e626cbfbd..2c34cba2cd3828 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/depth_to_space_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/depth_to_space_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadDepthToSpaceNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/detection_output_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/detection_output_tests.cpp index 182838f2c8ba37..54ebda54114c3c 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/detection_output_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/detection_output_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/dft.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/dft.cpp new file mode 100644 index 00000000000000..bbd0675c0286d4 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/dft.cpp @@ -0,0 +1,451 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include "ngraph_reader_tests.hpp" +#include "common_test_utils/data_utils.hpp" + +TEST_F(NGraphReaderTests, ReadDFTNetwork) { + std::string model = R"V0G0N( + + + + + + + 1 + 180 + 180 + 2 + + + + + + + + 2 + + + + + + + 1 + 180 + 180 + 2 + + + 2 + + + + + 1 + 180 + 180 + 2 + + + + + + + 1 + 180 + 180 + 2 + + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 1 + 180 + 180 + 2 + + + + + + + 2 + + + + + + + + + + 1 + 180 + 180 + 2 + + + 2 + + + + + 1 + 180 + 180 + 2 + + + + + + + + + +)V0G0N"; + + compareIRs(model, modelV7, 16, [](Blob::Ptr& weights) { + auto * i64w = weights->buffer().as(); + i64w[0] = 2; + i64w[1] = 0; + }); +} + +TEST_F(NGraphReaderTests, ReadDFTNetwork2) { + std::string model = R"V0G0N( + + + + + + + 7 + 50 + 130 + 400 + 2 + + + + + + + + 3 + + + + + + + + 3 + + + + + + + 7 + 50 + 130 + 400 + 2 + + + 3 + + + 3 + + + + + 7 + 40 + 130 + 600 + 2 + + + + + + + 7 + 40 + 130 + 600 + 2 + + + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 7 + 50 + 130 + 400 + 2 + + + + + + + 3 + + + + + + + + + + 3 + + + + + + + + + + 7 + 50 + 130 + 400 + 2 + + + 3 + + + 3 + + + + + 7 + 40 + 130 + 600 + 2 + + + + + + + + + + +)V0G0N"; + + compareIRs(model, modelV7, 48, [](Blob::Ptr& weights) { + auto * i64w = weights->buffer().as(); + i64w[0] = 3; + i64w[1] = 0; + i64w[2] = 1; + i64w[3] = 600; + i64w[4] = -1; + i64w[5] = 40; + }); +} + +TEST_F(NGraphReaderTests, ReadDFTNetwork3) { + std::string model = R"V0G0N( + + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + + + + + + 3 + + + + + + + + 3 + + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + 3 + + + 3 + + + + + 7 + 15 + 100 + 124 + 280 + 2 + + + + + + + 7 + 15 + 100 + 124 + 280 + 2 + + + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + + + + + 3 + + + + + + + + + + 3 + + + + + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + 3 + + + 3 + + + + + 7 + 15 + 100 + 124 + 280 + 2 + + + + + + + + + + +)V0G0N"; + + compareIRs(model, modelV7, 48, [](Blob::Ptr& weights) { + auto * i64w = weights->buffer().as(); + i64w[0] = -3; + i64w[1] = 4; + i64w[2] = 0; + i64w[3] = 100; + i64w[4] = 280; + i64w[5] = -1; + }); +} diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/divide_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/divide_tests.cpp index d56d31d38edef1..563783ed82997b 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/divide_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/divide_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/elu_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/elu_tests.cpp index 5187d7d4f590d8..1a2f45b84076c1 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/elu_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/elu_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/equal_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/equal_tests.cpp index 6bfc69a3ab7259..73d73eefb36ede 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/equal_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/equal_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/erf_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/erf_tests.cpp index 6c10de9548c203..728986c7bdc63d 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/erf_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/erf_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/exp_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/exp_tests.cpp index a3045a0f339713..c6948271ce7c38 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/exp_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/exp_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/fake_quantize_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/fake_quantize_tests.cpp index 2bdd56587083fc..1be3cc7f70de66 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/fake_quantize_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/fake_quantize_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_mod_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_mod_tests.cpp index 60fb41b9ae67fa..793b36dbd34927 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_mod_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_mod_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadFloorModNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_tests.cpp index f6ce50f74a3ccf..71fda30e852ab1 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/floor_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/fusion_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/fusion_tests.cpp index 76a54809d00952..e37615f2f45d24 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/fusion_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/fusion_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_elements_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_elements_tests.cpp index a5dfd585e52428..34731432d5fdeb 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_elements_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_elements_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_nd_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_nd_tests.cpp index 2691276fdeb842..5fe191bd21eca0 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_nd_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_nd_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tests.cpp index 86c1a7b601021d..f44528a9d14586 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadGatherNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tree_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tree_tests.cpp index 184869fb016eb7..b7592723fd6369 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tree_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/gather_tree_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/gelu_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/gelu_tests.cpp index 4e3b508014ac32..bf603a0e931ff5 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/gelu_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/gelu_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,103 +32,103 @@ TEST_F(NGraphReaderTests, ReadGeluNetwork) { std::string model_v7 = R"V0G0N( - - - - - 1 - 128 - - - - - - - - 1 - 128 - - - - - 1 - 128 - - - - - - - - 1 - 128 - - - - - 1 - 128 - - - - - - - 1 - 128 - - - - - 1 - 128 - - - - - - - - 1 - 128 - - - - - 1 - 128 - - - - - - - - 1 - 128 - - - 1 - 128 - - - - - 1 - 128 - - - - - - - - - - - - - + + + + + 1 + 128 + + + + + + + + 1 + 128 + + + + + 1 + 128 + + + + + + + + 1 + 128 + + + + + 1 + 128 + + + + + + + 1 + 128 + + + + + 1 + 128 + + + + + + + + 1 + 128 + + + + + 1 + 128 + + + + + + + + 1 + 128 + + + 1 + 128 + + + + + 1 + 128 + + + + + + + + + + + + + )V0G0N"; @@ -136,3 +136,174 @@ TEST_F(NGraphReaderTests, ReadGeluNetwork) { compareIRs(model_v10, model_v7, 0); } + + +TEST_F(NGraphReaderTests, ReadGelu6TanhNetwork) { + std::string model = R"V0G0N( + + + + + + + 1 + 3 + 4 + + + + + + + + 1 + 3 + 4 + + + + + 1 + 3 + 4 + + + + + + + 1 + 3 + 4 + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 1 + 3 + 4 + + + + + + + + 1 + 3 + 4 + + + + + 1 + 3 + 4 + + + + + + + + +)V0G0N"; + compareIRs(model, modelV7); +} + +TEST_F(NGraphReaderTests, ReadGelu6ErfNetwork) { + std::string model = R"V0G0N( + + + + + + + 1 + 3 + 4 + + + + + + + + 1 + 3 + 4 + + + + + 1 + 3 + 4 + + + + + + + 1 + 3 + 4 + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 1 + 3 + 4 + + + + + + + + 1 + 3 + 4 + + + + + 1 + 3 + 4 + + + + + + + + +)V0G0N"; + compareIRs(model, modelV7); +} \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/greater_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/greater_tests.cpp index 429354c0573a87..686299dbf337b5 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/greater_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/greater_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/grn_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/grn_tests.cpp index c51ed0427443ac..d0df321733a2cf 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/grn_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/grn_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_backprop_data_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_backprop_data_tests.cpp index 35bf844801f24f..aaf4d86b4cd287 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_backprop_data_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_backprop_data_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_tests.cpp index 4d89abc93994e1..20eef75048515f 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/group_convolution_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/hard_sigmoid_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/hard_sigmoid_tests.cpp index bfb2173b2fd8e1..3384b75d61e798 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/hard_sigmoid_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/hard_sigmoid_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/hsigmoid_test.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/hsigmoid_test.cpp index a61c1b96d1bc34..e63d5ba7c28ea2 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/hsigmoid_test.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/hsigmoid_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/idft_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/idft_tests.cpp new file mode 100644 index 00000000000000..47d3e83de66de7 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/idft_tests.cpp @@ -0,0 +1,451 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include "ngraph_reader_tests.hpp" +#include "common_test_utils/data_utils.hpp" + +TEST_F(NGraphReaderTests, ReadIDFTNetwork) { + std::string model = R"V0G0N( + + + + + + + 1 + 180 + 180 + 2 + + + + + + + + 2 + + + + + + + 1 + 180 + 180 + 2 + + + 2 + + + + + 1 + 180 + 180 + 2 + + + + + + + 1 + 180 + 180 + 2 + + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 1 + 180 + 180 + 2 + + + + + + + 2 + + + + + + + + + + 1 + 180 + 180 + 2 + + + 2 + + + + + 1 + 180 + 180 + 2 + + + + + + + + + +)V0G0N"; + + compareIRs(model, modelV7, 16, [](Blob::Ptr& weights) { + auto * i64w = weights->buffer().as(); + i64w[0] = 2; + i64w[1] = 0; + }); +} + +TEST_F(NGraphReaderTests, ReadIDFTNetwork2) { + std::string model = R"V0G0N( + + + + + + + 7 + 50 + 130 + 400 + 2 + + + + + + + + 3 + + + + + + + + 3 + + + + + + + 7 + 50 + 130 + 400 + 2 + + + 3 + + + 3 + + + + + 7 + 40 + 130 + 600 + 2 + + + + + + + 7 + 40 + 130 + 600 + 2 + + + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 7 + 50 + 130 + 400 + 2 + + + + + + + 3 + + + + + + + + + + 3 + + + + + + + + + + 7 + 50 + 130 + 400 + 2 + + + 3 + + + 3 + + + + + 7 + 40 + 130 + 600 + 2 + + + + + + + + + + +)V0G0N"; + + compareIRs(model, modelV7, 48, [](Blob::Ptr& weights) { + auto * i64w = weights->buffer().as(); + i64w[0] = 3; + i64w[1] = 0; + i64w[2] = 1; + i64w[3] = 600; + i64w[4] = -1; + i64w[5] = 40; + }); +} + +TEST_F(NGraphReaderTests, ReadIDFTNetwork3) { + std::string model = R"V0G0N( + + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + + + + + + 3 + + + + + + + + 3 + + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + 3 + + + 3 + + + + + 7 + 15 + 100 + 124 + 280 + 2 + + + + + + + 7 + 15 + 100 + 124 + 280 + 2 + + + + + + + + + + + +)V0G0N"; + std::string modelV7 = R"V0G0N( + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + + + + + 3 + + + + + + + + + + 3 + + + + + + + + + + 7 + 15 + 200 + 124 + 70 + 2 + + + 3 + + + 3 + + + + + 7 + 15 + 100 + 124 + 280 + 2 + + + + + + + + + + +)V0G0N"; + + compareIRs(model, modelV7, 48, [](Blob::Ptr& weights) { + auto * i64w = weights->buffer().as(); + i64w[0] = -3; + i64w[1] = 4; + i64w[2] = 0; + i64w[3] = 100; + i64w[4] = 280; + i64w[5] = -1; + }); +} diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/interpolate_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/interpolate_tests.cpp index 933566220ba775..6e5e78cd2777ae 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/interpolate_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/interpolate_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/less_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/less_tests.cpp index 3f12201d03a3a0..7306de53a21f69 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/less_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/less_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/linear_ops_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/linear_ops_tests.cpp index 4a4f9e4a0aecff..f7ae09cf24ec61 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/linear_ops_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/linear_ops_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/log_softmax_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/log_softmax_tests.cpp index 7b452f4f1bd28b..eeb8822a94ed39 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/log_softmax_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/log_softmax_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/log_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/log_tests.cpp index 010c70679acf13..6cf5b8b2feed02 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/log_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/log_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_and_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_and_tests.cpp index fafa643fc55df9..e232f800ade93c 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_and_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_and_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_not_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_not_tests.cpp index 41e3a78f941a21..9b207c4c6a1944 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_not_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_not_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_or_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_or_tests.cpp index f9e5a02ed92e40..184380867c7080 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_or_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_or_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_xor_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_xor_tests.cpp index fcd56e71f6e40b..dbc82750a4f508 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_xor_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/logical_xor_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/loop.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/loop.cpp index 07395cf60ea7f4..40e3cd46595d18 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/loop.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/loop.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -381,3 +381,207 @@ TEST_F(NGraphReaderTests, ReadLoopNetwork_2) { weights->buffer().as()[1] = 0; EXPECT_NO_THROW(reader.ReadNetwork(model, weights)); } + +TEST_F(NGraphReaderTests, ReadLoopNetwork_ExternalPort1IsNotConnected) { + std::string model = R"V0G0N( + + + + + + + + 1 + + + + + + + + + + + + + + 1 + 2 + + + + + + + 1 + + + + 1 + 2 + + + + + 1 + 2 + + + 3 + 1 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + + + + + + + + 1 + 2 + + + + + + + 1 + 2 + + + 1 + 2 + + + + + 1 + 2 + + + + + + + 1 + 2 + + + + + + + + 1 + + + + + + + 1 + 2 + + + 1 + + + + + 3 + 1 + 2 + + + + + + + 3 + 1 + 2 + + + + + + + + + + + + + + + + + + + 1 + 2 + + + + + + + 3 + 1 + 2 + + + + + + + + + + + + + +)V0G0N"; + + Core reader; + Blob::Ptr weights; + weights = make_shared_blob(TensorDesc(Precision::U8, {8}, Layout::C)); + weights->allocate(); + weights->buffer().as()[0] = 0; + weights->buffer().as()[1] = 0; + EXPECT_NO_THROW(reader.ReadNetwork(model, weights)); +} + diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/lrn_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/lrn_tests.cpp index 5495c79077418d..50cd481ff1a560 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/lrn_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/lrn_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/lstm_cell_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/lstm_cell_tests.cpp index b2e2895557c444..fdf60207b6785b 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/lstm_cell_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/lstm_cell_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/matmul_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/matmul_tests.cpp index 8b396a4b5c421c..6a5ea7dcde4976 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/matmul_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/matmul_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/maximum_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/maximum_tests.cpp index 12d83c048ace68..67584a0a31309e 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/maximum_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/maximum_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/minimum_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/minimum_tests.cpp index fe6efe7afcd010..5ace3552c2498a 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/minimum_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/minimum_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadMinimumNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/mod_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/mod_tests.cpp index 52d090a7b5da9c..3b04a11cb274e4 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/mod_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/mod_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/multiply_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/multiply_tests.cpp index 470e58c136b78f..4afdf86039eb60 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/multiply_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/multiply_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadMultiplyNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/mvn_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/mvn_tests.cpp index 7a11642b564e51..852aebb0c22291 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/mvn_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/mvn_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/neg_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/neg_tests.cpp index d961eb0caab9e7..63e5531450cb5b 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/neg_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/neg_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/negative_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/negative_tests.cpp index ee7e4494224a3f..4bd9eb6031d4c6 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/negative_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/negative_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -75,5 +75,5 @@ TEST_F(NGraphReaderTests, DISABLED_ReadIncorrectNetwork) { Blob::CPtr blob; Core reader; - ASSERT_THROW(reader.ReadNetwork(model, blob), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(reader.ReadNetwork(model, blob), InferenceEngine::Exception); } diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/ngraph_reader_tests.hpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/ngraph_reader_tests.hpp index 801f35eaff92b3..ab6f7e5b42ffd4 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/ngraph_reader_tests.hpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/ngraph_reader_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/non_max_suppression_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/non_max_suppression_tests.cpp index 2068296fc61a21..039a3afc1bac42 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/non_max_suppression_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/non_max_suppression_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/normalize_l2_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/normalize_l2_tests.cpp index ba5397d33af0f4..36564f99c1378e 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/normalize_l2_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/normalize_l2_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadNormalizeL2Network) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/not_equal_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/not_equal_tests.cpp index 7a2e114a7bbf44..17df2778dbb1a6 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/not_equal_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/not_equal_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//) +// + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadNotEqualNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/one_hot_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/one_hot_tests.cpp index b184ff24211a3b..66e657368d860d 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/one_hot_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/one_hot_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/pad_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/pad_tests.cpp index 731b1e09931712..c4b221885c90cb 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/pad_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/pad_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/pooling_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/pooling_tests.cpp index d319e25a249764..f2c558d7393f80 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/pooling_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/pooling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/pow_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/pow_tests.cpp index aa7a9b3e41fb9f..682cf82f328de3 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/pow_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/pow_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/prelu_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/prelu_tests.cpp index 98a7ec9e41f547..e34474dd91ca97 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/prelu_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/prelu_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/prior_box_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/prior_box_tests.cpp index c05663cf7de089..b984ea337911da 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/prior_box_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/prior_box_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/proposal_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/proposal_tests.cpp index ef47afe343ade9..cea1f8f6e8626f 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/proposal_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/proposal_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/psroi_pooling_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/psroi_pooling_tests.cpp index 3739a074f8ae74..cb19f4ade53384 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/psroi_pooling_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/psroi_pooling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/range_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/range_tests.cpp index f47c492f262352..64d6c7aa45bc5a 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/range_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/range_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_and_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_and_tests.cpp index 51b36d28a56d81..8fe2f5026e36d7 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_and_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_and_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_or_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_or_tests.cpp index c1cb6d4b916d82..b4d9a2bb5fd552 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_or_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_logical_or_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_min_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_min_tests.cpp index e73a529c6f0eba..0630991663fd3f 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_min_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_min_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadReduceMinNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_prod_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_prod_tests.cpp index 7065eeb4855c3c..fedc888d960617 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_prod_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_prod_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadReduceProdNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_to_pooling_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_to_pooling_tests.cpp index 870e2859a71bd2..7d3924e9ec60dc 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_to_pooling_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reduce_to_pooling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/region_yolo_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/region_yolo_tests.cpp index bcdce5d1b0c542..459452ab62e2d7 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/region_yolo_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/region_yolo_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/relu_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/relu_tests.cpp index 29bed32a830e55..e6bb675637cdc4 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/relu_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/relu_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reorg_yolo_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reorg_yolo_tests.cpp index f21705c70082cd..4372d7d8ae6515 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reorg_yolo_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reorg_yolo_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reshape_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reshape_tests.cpp index 305071f0b84e30..377d86a117a7f6 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reshape_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reshape_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/reverse_sequence_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/reverse_sequence_tests.cpp index e7360b59b8a5d7..8cb96909668119 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/reverse_sequence_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/reverse_sequence_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/roi_pooling_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/roi_pooling_tests.cpp index eeebfeee50a415..160906ac894452 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/roi_pooling_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/roi_pooling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/round_test.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/round_test.cpp index 418501ebd9d0ec..02f49bb323e755 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/round_test.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/round_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/select_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/select_tests.cpp index 058f5e377e4ef8..e9975b6a17355e 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/select_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/select_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/selu_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/selu_tests.cpp index dd1923b0a5aed0..ddd300c0be25a1 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/selu_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/selu_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/sequences.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/sequences.cpp index a724d34a0c197f..93518d80aea0d3 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/sequences.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/sequences.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/shape_of_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/shape_of_tests.cpp index 875a656760a2ad..e52260b9375516 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/shape_of_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/shape_of_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -122,3 +122,115 @@ TEST_F(NGraphReaderTests, DISABLED_ReadShapeOfNetwork) { compareIRs(model, modelV5, 0); } + +TEST_F(NGraphReaderTests, ReadShapeOfFromScalar) { + // The test checks case when ShapeOf gets a scalar as input and the result tensor has shape [0]. This means an empty + // tensor which does not have data. There is nothing to do with this tensor so the test model has another ShapeOf + // producing tensor with shape [1] which is the output of the model. + std::string model = R"V0G0N( + + + + + + + 1 + 3 + 7 + + + + + + + + 1 + + + + + + + + 1 + + + + + 1 + + + + + + + + 1 + + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + 0 + + + + + + + + 0 + + + + + 1 + + + + + + + 1 + + + + + + + + + + + + + +)V0G0N"; + + Blob::Ptr blob; + blob = make_shared_blob(TensorDesc(Precision::I64, {1}, Layout::C)); + blob->allocate(); + auto *data = blob->buffer().as(); + data[0] = 0; + Core reader; + reader.ReadNetwork(model, blob); +} diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/sigmoid_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/sigmoid_tests.cpp index e2502ebc672b7e..1b9cacf432f233 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/sigmoid_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/sigmoid_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/sign_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/sign_tests.cpp index a13000495a9753..af16d24760a86a 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/sign_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/sign_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/sin_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/sin_tests.cpp index 64e28f95645240..e009e43942187f 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/sin_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/sin_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/sinh_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/sinh_tests.cpp index 5c7a388e5d7150..9575e8026a6cfb 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/sinh_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/sinh_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/softmax_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/softmax_tests.cpp index e7be91b994603f..40af3e2c6b051f 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/softmax_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/softmax_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/space_to_depth_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/space_to_depth_tests.cpp index 013edcaf097d9f..2aec3a24a9e696 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/space_to_depth_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/space_to_depth_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadSpaceToDepthNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/split_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/split_tests.cpp index 14cb04c118c545..5dd9ed5941b477 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/split_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/split_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/sqrt_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/sqrt_tests.cpp index 03c6c5af4db2cd..43e5fd0fe55437 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/sqrt_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/sqrt_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/squared_difference_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/squared_difference_tests.cpp index f5158596570e1f..6b5434b005bda2 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/squared_difference_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/squared_difference_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/squeeze_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/squeeze_tests.cpp index 109a7fa88f4705..b9a23c88a3a8d7 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/squeeze_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/squeeze_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/strided_slice_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/strided_slice_tests.cpp index c94d8de05ed67b..386a8219d43ff6 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/strided_slice_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/strided_slice_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/subtract_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/subtract_tests.cpp index 6230c0252b77b2..4cf9799b641191 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/subtract_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/subtract_tests.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include "ngraph_reader_tests.hpp" TEST_F(NGraphReaderTests, ReadSubtractNetwork) { diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/tan_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/tan_tests.cpp index 5bbbc88f58b3cb..47648d54a2fdd4 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/tan_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/tan_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/tanh_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/tanh_tests.cpp index 82cfa2be48e2dc..cf58fb7e0aebcb 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/tanh_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/tanh_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/tensor_names.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/tensor_names.cpp index b3e9dfae4fb131..1710c49116d812 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/tensor_names.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/tensor_names.cpp @@ -74,14 +74,12 @@ TEST_F(NGraphReaderTests, ReadNetworkWithTensorNames) { ASSERT_EQ(1, function->get_results().size()); for (const auto& param : function->get_parameters()) { - ASSERT_TRUE(inNames.count(network.getOVNameForOperation(param->get_friendly_name()))); ASSERT_TRUE(!param->get_output_tensor(0).get_names().empty()); for (const auto& name : param->get_output_tensor(0).get_names()) ASSERT_TRUE(inNames.count(network.getOVNameForTensor(name))); } for (const auto& result : function->get_results()) { - ASSERT_TRUE(outNames.count(network.getOVNameForOperation(result->get_friendly_name()))); ASSERT_TRUE(!result->get_input_tensor(0).get_names().empty()); for (const auto& name : result->get_input_tensor(0).get_names()) ASSERT_TRUE(outNames.count(network.getOVNameForTensor(name))); diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/ti.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/ti.cpp index 59d04d6a5dc4a1..5f11b9f2492454 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/ti.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/ti.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/tile_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/tile_tests.cpp index 4a197c7e862aa6..894e68e656bcf7 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/tile_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/tile_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/topK_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/topK_tests.cpp index 529293486d084d..388a59d9c117b5 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/topK_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/topK_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/transpose_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/transpose_tests.cpp index fcc0388cd99df5..85a6df94babc55 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/transpose_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/transpose_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reader/unsqueeze_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reader/unsqueeze_tests.cpp index 85b6363870b100..7c3cfbcdc722b6 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reader/unsqueeze_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reader/unsqueeze_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/ngraph_reshape_tests.cpp b/inference-engine/tests/functional/inference_engine/ngraph_reshape_tests.cpp index 2c4a0b5c006bcb..b3b23babf32a3c 100644 --- a/inference-engine/tests/functional/inference_engine/ngraph_reshape_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/ngraph_reshape_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -259,8 +259,6 @@ class TestInPlaceExtension : public InferenceEngine::IExtension { void Unload() noexcept override {} - void Release() noexcept override {} - std::map getOpSets() override { static std::map opsets; if (opsets.empty()) { @@ -426,8 +424,6 @@ class BadExtension : public InferenceEngine::IExtension { void Unload() noexcept override {}; - void Release() noexcept override {} - std::map getOpSets() override { static std::map opsets; if (opsets.empty()) { @@ -441,7 +437,7 @@ class BadExtension : public InferenceEngine::IExtension { TEST_F(NGraphReshapeTests, LoadBadNewExtension) { InferenceEngine::Core ie; - ASSERT_THROW(ie.AddExtension(std::make_shared()), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(ie.AddExtension(std::make_shared()), InferenceEngine::Exception); } TEST_F(NGraphReshapeTests, TestInterpParameters) { diff --git a/inference-engine/tests/functional/inference_engine/onnx_reader/model_support_tests.cpp b/inference-engine/tests/functional/inference_engine/onnx_reader/model_support_tests.cpp index a460eb5a8eaf8c..579229ad6340ef 100644 --- a/inference-engine/tests/functional/inference_engine/onnx_reader/model_support_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/onnx_reader/model_support_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -49,7 +49,7 @@ TEST(ONNXReader_ModelSupported, scrambled_keys) { TEST(ONNXReader_ModelUnsupported, no_graph_field) { // this model contains only 2 fields (it doesn't contain a graph in particular) EXPECT_THROW(InferenceEngine::Core{}.ReadNetwork(model_path("unsupported/no_graph_field.onnx")), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST(ONNXReader_ModelUnsupported, incorrect_onnx_field) { @@ -57,16 +57,16 @@ TEST(ONNXReader_ModelUnsupported, incorrect_onnx_field) { // this test will have to be changed if the number of fields in onnx.proto // (ModelProto message definition) ever reaches 31 or more EXPECT_THROW(InferenceEngine::Core{}.ReadNetwork(model_path("unsupported/incorrect_onnx_field.onnx")), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST(ONNXReader_ModelUnsupported, unknown_wire_type) { // in this model the graph key contains wire type 7 encoded in it - this value is incorrect EXPECT_THROW(InferenceEngine::Core{}.ReadNetwork(model_path("unsupported/unknown_wire_type.onnx")), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST(ONNXReader_ModelUnsupported, no_valid_keys) { EXPECT_THROW(InferenceEngine::Core{}.ReadNetwork(model_path("unsupported/no_valid_keys.prototxt")), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } diff --git a/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader.cpp b/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader.cpp index a74ed287783529..4eb19cca1b3034 100644 --- a/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader.cpp +++ b/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader_external_data.cpp b/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader_external_data.cpp index 1a3cf5b33b10f7..3a72dbf6e80525 100644 --- a/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader_external_data.cpp +++ b/inference-engine/tests/functional/inference_engine/onnx_reader/onnx_reader_external_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/parameter_tests.cpp b/inference-engine/tests/functional/inference_engine/parameter_tests.cpp index 7146df5a9f8d92..85496e9170715d 100644 --- a/inference-engine/tests/functional/inference_engine/parameter_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/parameter_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -263,10 +263,10 @@ TEST_F(ParameterTests, CompareParametersWithoutEqualOperator) { Parameter parB = b; Parameter parC = c; - ASSERT_THROW((void)(parA == parB), details::InferenceEngineException); - ASSERT_THROW((void)(parA != parB), details::InferenceEngineException); - ASSERT_THROW((void)(parA == parC), details::InferenceEngineException); - ASSERT_THROW((void)(parA != parC), details::InferenceEngineException); + ASSERT_THROW((void)(parA == parB), Exception); + ASSERT_THROW((void)(parA != parB), Exception); + ASSERT_THROW((void)(parA == parC), Exception); + ASSERT_THROW((void)(parA != parC), Exception); } TEST_F(ParameterTests, ParameterRemovedRealObject) { diff --git a/inference-engine/tests/functional/inference_engine/pre_allocator_test.cpp b/inference-engine/tests/functional/inference_engine/pre_allocator_test.cpp index 464f9faf094ca7..5b3c6f96f5df2d 100644 --- a/inference-engine/tests/functional/inference_engine/pre_allocator_test.cpp +++ b/inference-engine/tests/functional/inference_engine/pre_allocator_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/precomp.hpp b/inference-engine/tests/functional/inference_engine/precomp.hpp index 05c7146c13a480..d6e9a611080da9 100644 --- a/inference-engine/tests/functional/inference_engine/precomp.hpp +++ b/inference-engine/tests/functional/inference_engine/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/preprocess_test.cpp b/inference-engine/tests/functional/inference_engine/preprocess_test.cpp index 06c65c14883b06..f08cd08794c89f 100644 --- a/inference-engine/tests/functional/inference_engine/preprocess_test.cpp +++ b/inference-engine/tests/functional/inference_engine/preprocess_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,7 @@ TEST_F(PreProcessTests, throwsOnSettingNullMeanImage) { InferenceEngine::PreProcessInfo info; info.init(1); ASSERT_THROW(info.setMeanImage(InferenceEngine::Blob::Ptr(nullptr)), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_F(PreProcessTests, throwsOnSetting2DMeanImage) { @@ -21,7 +21,7 @@ TEST_F(PreProcessTests, throwsOnSetting2DMeanImage) { info.init(1); InferenceEngine::Blob::Ptr blob(new InferenceEngine::TBlob({ InferenceEngine::Precision::FP32, {1, 1}, InferenceEngine::Layout::HW})); - ASSERT_THROW(info.setMeanImage(blob), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(info.setMeanImage(blob), InferenceEngine::Exception); } TEST_F(PreProcessTests, throwsOnSettingWrongSizeMeanImage) { @@ -30,7 +30,7 @@ TEST_F(PreProcessTests, throwsOnSettingWrongSizeMeanImage) { InferenceEngine::TBlob::Ptr blob(new InferenceEngine::TBlob({ InferenceEngine::Precision::FP32, { 2, 1, 1 }, InferenceEngine::Layout::CHW })); blob->allocate(); - ASSERT_THROW(info.setMeanImage(blob), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(info.setMeanImage(blob), InferenceEngine::Exception); } TEST_F(PreProcessTests, noThrowWithCorrectSizeMeanImage) { diff --git a/inference-engine/tests/functional/inference_engine/response_buffer_test.cpp b/inference-engine/tests/functional/inference_engine/response_buffer_test.cpp index 6a3299c776e56e..e5f27f332b7fe4 100644 --- a/inference-engine/tests/functional/inference_engine/response_buffer_test.cpp +++ b/inference-engine/tests/functional/inference_engine/response_buffer_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/core_config.cpp b/inference-engine/tests/functional/inference_engine/serialization/core_config.cpp index 25bc749cc4fc8d..e75091f571fa70 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/core_config.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/core_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/binary_convolution.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/binary_convolution.cpp new file mode 100644 index 00000000000000..4ffae87a5706df --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/binary_convolution.cpp @@ -0,0 +1,63 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "shared_test_classes/single_layer/binary_convolution.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +TEST_P(BinaryConvolutionLayerTest, Serialize) { + Serialize(); +} + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, InferenceEngine::Precision::FP16}; +const std::vector> kernels = {{3, 5}}; +const std::vector> strides = {{1, 3}}; +const std::vector> padBegins = {{0, 3}}; +const std::vector> padEnds = {{0, 3}}; +const std::vector> dilations = {{3, 1}}; +const std::vector numOutChannels = {5}; +const std::vector pad_values = {0, 1}; + +const auto binConv2DParams_ExplicitPadding = ::testing::Combine( + ::testing::ValuesIn(kernels), ::testing::ValuesIn(strides), + ::testing::ValuesIn(padBegins), ::testing::ValuesIn(padEnds), + ::testing::ValuesIn(dilations), ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::EXPLICIT), + ::testing::ValuesIn(pad_values)); +const auto binConv2DParams_AutoPadValid = ::testing::Combine( + ::testing::ValuesIn(kernels), ::testing::ValuesIn(strides), + ::testing::Values(std::vector({0, 0})), + ::testing::Values(std::vector({0, 0})), + ::testing::ValuesIn(dilations), ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::VALID), + ::testing::ValuesIn(pad_values)); + +INSTANTIATE_TEST_CASE_P( + smoke_BinaryConvolution2D_Serialization_ExplicitPadding, BinaryConvolutionLayerTest, + ::testing::Combine( + binConv2DParams_ExplicitPadding, ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + BinaryConvolutionLayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P( + smoke_BinaryConvolution2D__Serialization_AutoPadValid, BinaryConvolutionLayerTest, + ::testing::Combine( + binConv2DParams_AutoPadValid, ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + BinaryConvolutionLayerTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/broadcast.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/broadcast.cpp index b4cbe86bbe3a49..1e101775319f01 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/broadcast.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/clamp.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/clamp.cpp new file mode 100644 index 00000000000000..607989781e6f72 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/clamp.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "shared_test_classes/single_layer/clamp.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +TEST_P(ClampLayerTest, Serialize) { + Serialize(); +} + +const std::vector> inShapes = { + {50}, {10, 10}, {1, 20, 20}, {2, 3, 50, 50}}; + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, InferenceEngine::Precision::I32}; + +const std::vector> intervals = { + {-20.1, -10.5}, {-10.0, 10.0}, {10.3, 20.4}}; + +INSTANTIATE_TEST_CASE_P( + smoke_Clamp_Serialization, ClampLayerTest, + ::testing::Combine( + ::testing::ValuesIn(inShapes), + ::testing::ValuesIn(intervals), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + ClampLayerTest::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/convolution.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/convolution.cpp index 992518e9a8ae48..7e22ba3e388df6 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/convolution.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/detection_output.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/detection_output.cpp index f333e181229922..e1f66b84c22276 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/detection_output.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/detection_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/elementwise.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/elementwise.cpp new file mode 100644 index 00000000000000..7d2ac7f47a1957 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/elementwise.cpp @@ -0,0 +1,63 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "shared_test_classes/single_layer/eltwise.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +TEST_P(EltwiseLayerTest, Serialize) { Serialize(); } +const std::vector inputPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, + InferenceEngine::Precision::I32, + }; + +std::vector>> inputShapes = { + {{2}}, + {{1, 5, 50}}, + {{2, 10, 1, 4}, {2, 10, 1, 1}} +}; + +std::vector secondaryInputTypes = { + ngraph::helpers::InputLayerType::CONSTANT, + ngraph::helpers::InputLayerType::PARAMETER, +}; + +std::vector opTypes = { + CommonTestUtils::OpType::SCALAR, + CommonTestUtils::OpType::VECTOR, +}; + +std::vector eltwiseOpTypes = { + ngraph::helpers::EltwiseTypes::ADD, + ngraph::helpers::EltwiseTypes::MULTIPLY, + ngraph::helpers::EltwiseTypes::SUBTRACT, + ngraph::helpers::EltwiseTypes::DIVIDE, + ngraph::helpers::EltwiseTypes::FLOOR_MOD, + ngraph::helpers::EltwiseTypes::SQUARED_DIFF, + ngraph::helpers::EltwiseTypes::POWER, + ngraph::helpers::EltwiseTypes::MOD +}; + +std::map additionalConfig = {}; + +const auto elementiwiseParams = ::testing::Combine( + ::testing::ValuesIn(inputShapes), + ::testing::ValuesIn(eltwiseOpTypes), + ::testing::ValuesIn(secondaryInputTypes), + ::testing::ValuesIn(opTypes), + ::testing::ValuesIn(inputPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::Values(additionalConfig)); + +INSTANTIATE_TEST_CASE_P(smoke_ElementwiseSerialization, EltwiseLayerTest, + elementiwiseParams, + EltwiseLayerTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution.cpp index 62438e7da90ea4..ca080890ee37b0 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution_backprop_data.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution_backprop_data.cpp index c4a3612aabb25d..d98ff4016e4bd0 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/minimum_maximum.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/minimum_maximum.cpp new file mode 100644 index 00000000000000..19417dc8e0f64c --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/minimum_maximum.cpp @@ -0,0 +1,52 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include "shared_test_classes/single_layer/minimum_maximum.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +TEST_P(MaxMinLayerTest, Serialize) { Serialize(); } + +const std::vector>> inShapes = { + {{2}, {1}}, + {{1, 1, 1, 3}, {1}}, + {{1, 2, 4}, {1}}, + {{1, 4, 4}, {1}}, + {{1, 4, 4, 1}, {1}}, + {{256, 56}, {256, 56}}, + {{8, 1, 6, 1}, {7, 1, 5}}, +}; + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, +}; + +const std::vector opType = { + ngraph::helpers::MinMaxOpType::MINIMUM, + ngraph::helpers::MinMaxOpType::MAXIMUM, +}; + +const std::vector inputType = { + ngraph::helpers::InputLayerType::CONSTANT, + ngraph::helpers::InputLayerType::PARAMETER, +}; + +INSTANTIATE_TEST_CASE_P(smoke_maximum, MaxMinLayerTest, + ::testing::Combine( + ::testing::ValuesIn(inShapes), + ::testing::ValuesIn(opType), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(inputType), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + MaxMinLayerTest::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/mvn.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/mvn.cpp index 877c7c4d78f01e..cc8f5728d31322 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/mvn.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/non_max_suppression.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/non_max_suppression.cpp index 21c0ffa6f3c0fc..633b69b02bdd54 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/non_max_suppression.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/non_max_suppression.cpp @@ -1,5 +1,4 @@ - -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/nonzero.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/nonzero.cpp new file mode 100644 index 00000000000000..2d0c7453ec9fd2 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/nonzero.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "shared_test_classes/single_layer/nonzero.hpp" + +using namespace ngraph; +using namespace LayerTestsDefinitions; + +namespace { +TEST_P(NonZeroLayerTest, Serialize) { + Serialize(); +} + +std::vector inputDims = { + {7}, {1000}, {3, 5}, {65, 33}, {33, 65}, + {1, 1000}, {223, 217, 21}, {3, 4, 5, 1}, {3, 4, 1, 5, 1}}; + +std::vector inputPrecisions = { + InferenceEngine::Precision::U8, InferenceEngine::Precision::FP32, + InferenceEngine::Precision::I32, +}; + +ConfigMap config; + +INSTANTIATE_TEST_CASE_P( + smoke_NonZeroLayerTest, NonZeroLayerTest, + ::testing::Combine(::testing::ValuesIn(inputDims), + ::testing::ValuesIn(inputPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::Values(config))); +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/normalize_l2.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/normalize_l2.cpp index 64f64f8cdcea3f..68b5ce21bab004 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/normalize_l2.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/normalize_l2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/one_hot.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/one_hot.cpp new file mode 100644 index 00000000000000..7a013aa7b55d13 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/one_hot.cpp @@ -0,0 +1,39 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "shared_test_classes/single_layer/one_hot.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +TEST_P(OneHotLayerTest, Serialize) { Serialize(); } + +const std::vector netPrecisions = { + InferenceEngine::Precision::I32 }; + +const std::vector argDepthType_IC = { ngraph::element::i32 }; +const std::vector argDepth_IC = { 5, 1017 }; +const std::vector argSetType_IC = { ngraph::element::i32, ngraph::element::i64 }; +const std::vector argOnValue_IC = { 1, -29 }; +const std::vector argOffValue_IC = { -1, 127 }; +const std::vector argAxis_IC = {0, 1, -1}; +const std::vector> inputShapes_IC = {{4, 5}, {3, 7}}; + +const auto oneHotParams = testing::Combine( + testing::ValuesIn(argDepthType_IC), + testing::ValuesIn(argDepth_IC), + testing::ValuesIn(argSetType_IC), + testing::ValuesIn(argOnValue_IC), + testing::ValuesIn(argOffValue_IC), + testing::ValuesIn(argAxis_IC), + testing::ValuesIn(netPrecisions), + testing::ValuesIn(inputShapes_IC), + testing::Values(CommonTestUtils::DEVICE_CPU) +); + +INSTANTIATE_TEST_CASE_P(smoke_OneHotConstSerialization, OneHotLayerTest, oneHotParams, + OneHotLayerTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/pad.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/pad.cpp index dd0d9129264f4f..6a3a9a484ac815 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/pad.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/pooling.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/pooling.cpp index e333d290d5ce36..c1a05395e17759 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/pooling.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/prelu.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/prelu.cpp index bb46c446c8a312..d00123b4eb13ef 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/prelu.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/prelu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/prior_box_clustered.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/prior_box_clustered.cpp index 28a4aac55188b1..dd0f2d5144d5a9 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/prior_box_clustered.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/prior_box_clustered.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/region_yolo.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/region_yolo.cpp index bcdf4603cf5397..228fbb33192ca1 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/region_yolo.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/reshape.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/reshape.cpp index 56a73ea99a9351..c7b60da690fcd5 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/reshape.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/scatter_nd_update.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/scatter_nd_update.cpp new file mode 100644 index 00000000000000..668eeadcd8a43e --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/scatter_nd_update.cpp @@ -0,0 +1,50 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "shared_test_classes/single_layer/scatter_ND_update.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +TEST_P(ScatterNDUpdateLayerTest, Serialize) { + Serialize(); +} + +const std::vector inputPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, + InferenceEngine::Precision::I32, +}; + +const std::vector idxPrecisions = { + InferenceEngine::Precision::I32, + InferenceEngine::Precision::I64, +}; +// map> +// updateShape is gotten from inputShape and indicesShape +std::map, std::map, std::vector>> + sliceSelectInShape{ + {{10, 9, 9, 11}, + {{{4, 1}, {1, 3, 5, 7}}, + {{1, 2}, {4, 6}}, + {{2, 3}, {0, 1, 1, 2, 2, 2}}, + {{1, 4}, {5, 5, 4, 9}}}}, + {{10, 9, 10, 9, 10}, {{{2, 2, 1}, {5, 6, 2, 8}}, {{2, 3}, {0, 4, 6, 5, 7, 1}}}}, + }; + +const auto ScatterNDUpdateCases = ::testing::Combine( + ::testing::ValuesIn(ScatterNDUpdateLayerTest::combineShapes(sliceSelectInShape)), + ::testing::ValuesIn(inputPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_CPU)); + +INSTANTIATE_TEST_CASE_P( + smoke_ScatterNDUpdateLayerTestSerialization, + ScatterNDUpdateLayerTest, + ScatterNDUpdateCases, + ScatterNDUpdateLayerTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/shuffle_channels.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/shuffle_channels.cpp index 60d0194aa041bc..e66352547e4d70 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/shuffle_channels.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/shuffle_channels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/tensor_iterator.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/tensor_iterator.cpp index 6326cfeacc7555..5c2ba098b0567f 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/tensor_iterator.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/tensor_iterator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/serialization/single_layer/variadic_split.cpp b/inference-engine/tests/functional/inference_engine/serialization/single_layer/variadic_split.cpp index e46f8b9761b95e..117d7ccbb52f4e 100644 --- a/inference-engine/tests/functional/inference_engine/serialization/single_layer/variadic_split.cpp +++ b/inference-engine/tests/functional/inference_engine/serialization/single_layer/variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/shared_object_loader_test.cpp b/inference-engine/tests/functional/inference_engine/shared_object_loader_test.cpp index 8da411cc405507..4821910d139110 100644 --- a/inference-engine/tests/functional/inference_engine/shared_object_loader_test.cpp +++ b/inference-engine/tests/functional/inference_engine/shared_object_loader_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,9 +26,10 @@ class SharedObjectLoaderTests: public ::testing::Test { } unique_ptr sharedObjectLoader; - template - std::function make_std_function(const std::string& functionName) { - std::function ptr(reinterpret_cast(sharedObjectLoader->get_symbol(functionName.c_str()))); + using CreateF = void(std::shared_ptr&); + + std::function make_std_function(const std::string& functionName) { + std::function ptr(reinterpret_cast(sharedObjectLoader->get_symbol(functionName.c_str()))); return ptr; } }; @@ -42,28 +43,25 @@ TEST_F(SharedObjectLoaderTests, canLoadExistedPlugin) { } TEST_F(SharedObjectLoaderTests, loaderThrowsIfNoPlugin) { - EXPECT_THROW(loadDll("wrong_name"), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(loadDll("wrong_name"), InferenceEngine::Exception); } TEST_F(SharedObjectLoaderTests, canFindExistedMethod) { loadDll(get_mock_engine_name()); - auto factory = make_std_function("CreatePluginEngine"); + auto factory = make_std_function("CreatePluginEngine"); EXPECT_NE(nullptr, factory); } TEST_F(SharedObjectLoaderTests, throwIfMethodNofFoundInLibrary) { loadDll(get_mock_engine_name()); - - EXPECT_THROW(make_std_function("wrong_function"), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_std_function("wrong_function"), InferenceEngine::Exception); } TEST_F(SharedObjectLoaderTests, canCallExistedMethod) { loadDll(get_mock_engine_name()); - auto factory = make_std_function("CreatePluginEngine"); - IInferencePlugin* ptr = nullptr; - ResponseDesc resp; - EXPECT_NO_THROW(factory(ptr, &resp)); - ptr->Release(); + auto factory = make_std_function("CreatePluginEngine"); + std::shared_ptr ptr; + EXPECT_NO_THROW(factory(ptr)); } diff --git a/inference-engine/tests/functional/inference_engine/skip_tests_config.cpp b/inference-engine/tests/functional/inference_engine/skip_tests_config.cpp index f7dd6f8b0ad912..8b850f20c21f70 100644 --- a/inference-engine/tests/functional/inference_engine/skip_tests_config.cpp +++ b/inference-engine/tests/functional/inference_engine/skip_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/snippets/broadcast_fusion.cpp b/inference-engine/tests/functional/inference_engine/snippets/broadcast_fusion.cpp new file mode 100644 index 00000000000000..44f8c9672fc832 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/snippets/broadcast_fusion.cpp @@ -0,0 +1,135 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + +#include +#include + +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, FuseLoadWithBroadcastMoveByX) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{2, 1}); + auto data1 = std::make_shared(element::f32, Shape{2, 2}); + auto load0 = std::make_shared(data0); + auto load1 = std::make_shared(data1); + auto bct = std::make_shared(load0, load1->get_shape()); + auto add = std::make_shared(bct, load1); + auto store = std::make_shared(add); + f = std::make_shared(NodeVector{store}, ParameterVector{data0, data1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data0 = std::make_shared(element::f32, Shape{2, 1}); + auto data1 = std::make_shared(element::f32, Shape{2, 2}); + auto load0 = std::make_shared(data0, data1->get_shape()); + auto load1 = std::make_shared(data1); + auto add = std::make_shared(load0, load1); + auto store = std::make_shared(add); + f_ref = std::make_shared(NodeVector{store}, ParameterVector{data0, data1}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NotFuseLoadWithBroadcastMoveByY) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{1, 2}); + auto data1 = std::make_shared(element::f32, Shape{2, 2}); + auto load0 = std::make_shared(data0); + auto load1 = std::make_shared(data1); + auto bct = std::make_shared(load0, load1->get_shape()); + auto add = std::make_shared(bct, load1); + auto store = std::make_shared(add); + f = std::make_shared(NodeVector{store}, ParameterVector{data0, data1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data0 = std::make_shared(element::f32, Shape{1, 2}); + auto data1 = std::make_shared(element::f32, Shape{2, 2}); + auto load0 = std::make_shared(data0); + auto load1 = std::make_shared(data1); + auto bct = std::make_shared(load0, load1->get_shape()); + auto add = std::make_shared(bct, load1); + auto store = std::make_shared(add); + f_ref = std::make_shared(NodeVector{store}, ParameterVector{data0, data1}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NoFuseLoadWithBroadcastMoveMultipleUsers) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{2, 2}); + auto data1 = std::make_shared(element::f32, Shape{2, 1}); + auto data2 = std::make_shared(element::f32, Shape{2, 1}); + + auto load0 = std::make_shared(data0); + auto load1 = std::make_shared(data1); + auto load2 = std::make_shared(data2); + + auto bct1 = std::make_shared(load1, load0->get_shape()); + + auto add = std::make_shared(load0, bct1); + auto mul = std::make_shared(load1, load2); + + auto store0 = std::make_shared(add); + auto store1 = std::make_shared(mul); + f = std::make_shared(NodeVector{store0, store1}, ParameterVector{data0, data1, data2}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data0 = std::make_shared(element::f32, Shape{2, 2}); + auto data1 = std::make_shared(element::f32, Shape{2, 1}); + auto data2 = std::make_shared(element::f32, Shape{2, 1}); + + auto load0 = std::make_shared(data0); + auto load1 = std::make_shared(data1); + auto load2 = std::make_shared(data2); + + auto bct1 = std::make_shared(load1, load0->get_shape()); + + auto add = std::make_shared(load0, bct1); + auto mul = std::make_shared(load1, load2); + + auto store0 = std::make_shared(add); + auto store1 = std::make_shared(mul); + f_ref = std::make_shared(NodeVector{store0, store1}, ParameterVector{data0, data1, data2}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/snippets/memory_ops.cpp b/inference-engine/tests/functional/inference_engine/snippets/memory_ops.cpp new file mode 100644 index 00000000000000..32bca4c24da715 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/snippets/memory_ops.cpp @@ -0,0 +1,94 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + +#include +#include + +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, InsertLoadStore) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto neg = std::make_shared(data); + f = std::make_shared(NodeVector{neg}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto load = std::make_shared(data); + auto neg = std::make_shared(load); + auto store = std::make_shared(neg); + f_ref = std::make_shared(NodeVector{store}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, InsertLoadTwise) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto neg = std::make_shared(data); + f = std::make_shared(NodeVector{neg}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto load = std::make_shared(data); + auto neg = std::make_shared(load); + f_ref = std::make_shared(NodeVector{neg}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, InsertStoreTwise) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto neg = std::make_shared(data); + f = std::make_shared(NodeVector{neg}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto neg = std::make_shared(data); + auto store = std::make_shared(neg); + f_ref = std::make_shared(NodeVector{store}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/snippets/movebroadcast.cpp b/inference-engine/tests/functional/inference_engine/snippets/movebroadcast.cpp new file mode 100644 index 00000000000000..aaac24fc8ebfe3 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/snippets/movebroadcast.cpp @@ -0,0 +1,44 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + +#include +#include + +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, InsertBroadcastMove) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(data0, data1); + f = std::make_shared(NodeVector{add}, ParameterVector{data0, data1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto move = std::make_shared(data1, data0->output(0).get_shape()); + auto add = std::make_shared(data0, move); + f_ref = std::make_shared(NodeVector{add}, ParameterVector{data0, data1}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/snippets/registers.cpp b/inference-engine/tests/functional/inference_engine/snippets/registers.cpp new file mode 100644 index 00000000000000..1058b5d78b3698 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/snippets/registers.cpp @@ -0,0 +1,137 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, AssignRegisters) { + std::shared_ptr f(nullptr); + { + auto p0 = std::make_shared(element::f32, Shape(1)); + auto p1 = std::make_shared(element::f32, Shape(1)); + auto y00 = std::make_shared(p0); y00->set_friendly_name("y00"); + auto y01 = std::make_shared(p1); y01->set_friendly_name("y01"); + auto y02 = std::make_shared(y00, y01); y02->set_friendly_name("y02"); + auto y03 = std::make_shared(y02); y03->set_friendly_name("y03"); + + f = std::make_shared(NodeVector{y03}, ParameterVector{p0, p1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + // instead of comparing to a reference function check that registers are correctly assigned + // and stored to runtime info + { + std::map ref_registers { + {"y00", 0}, + {"y01", 1}, + {"y02", 2} + }; + + auto total_ops = 0; + for (auto& op : f->get_ordered_ops()) { + auto& rt = op->get_rt_info(); + + if (auto rinfo = rt["reginfo"]) { + auto reginfo = as_type_ptr>>(rinfo)->get(); + auto reg = reginfo[0]; + ASSERT_TRUE(ref_registers[op->get_friendly_name()] == reg); + total_ops++; + } + } + ASSERT_EQ(total_ops, ref_registers.size()); + } +} + +TEST(TransformationTests, AssignRegisters2) { + std::shared_ptr f(nullptr); + { + auto p0 = std::make_shared(ngraph::element::f32, Shape()); + auto p1 = std::make_shared(ngraph::element::f32, Shape()); + auto p2 = std::make_shared(ngraph::element::f32, Shape()); + auto p3 = std::make_shared(ngraph::element::f32, Shape()); + auto p4 = std::make_shared(ngraph::element::f32, Shape()); + auto p5 = std::make_shared(ngraph::element::f32, Shape()); + auto p6 = std::make_shared(ngraph::element::f32, Shape()); + auto p7 = std::make_shared(ngraph::element::f32, Shape()); + + auto c0 = std::make_shared(ngraph::element::f32, Shape(), 3.14f); c0->set_friendly_name("r00"); + auto c1 = std::make_shared(ngraph::element::f32, Shape(), 6.6260701e-34f); c1->set_friendly_name("r01"); + + auto y00 = std::make_shared(p0); y00->set_friendly_name("r02"); + auto y01 = std::make_shared(p1); y01->set_friendly_name("r03"); + auto y02 = std::make_shared(y00, c0); y02->set_friendly_name("r04"); + auto y03 = std::make_shared(y01, c1); y03->set_friendly_name("r05"); + auto y04 = std::make_shared(p2); y04->set_friendly_name("r06"); + auto y05 = std::make_shared(p3); y05->set_friendly_name("r07"); + auto y06 = std::make_shared(y02, y03); y06->set_friendly_name("r08"); + auto y07 = std::make_shared(y04, c0); y07->set_friendly_name("r09"); + auto y08 = std::make_shared(y05, c1); y08->set_friendly_name("r10"); + auto y09 = std::make_shared(p4); y09->set_friendly_name("r11"); + auto y10 = std::make_shared(p5); y10->set_friendly_name("r12"); + auto y11 = std::make_shared(y07, y08); y11->set_friendly_name("r13"); + auto y12 = std::make_shared(y09, c0); y12->set_friendly_name("r14"); + auto y13 = std::make_shared(y10, c1); y13->set_friendly_name("r15"); + auto y14 = std::make_shared(p6); y14->set_friendly_name("r16"); + auto y15 = std::make_shared(y12, y13); y15->set_friendly_name("r17"); + auto y16 = std::make_shared(p7); y16->set_friendly_name("r18"); + auto y17 = std::make_shared(y14, c0); y17->set_friendly_name("r19"); + auto y18 = std::make_shared(y16, c1); y18->set_friendly_name("r20"); + auto y19 = std::make_shared(y06, y11); y19->set_friendly_name("r21"); + auto y20 = std::make_shared(y17, y18); y20->set_friendly_name("r22"); + auto y21 = std::make_shared(y15, y19); y21->set_friendly_name("r23"); + auto y22 = std::make_shared(y20, y21); y22->set_friendly_name("r24"); + auto y23 = std::make_shared(y22); + + f = std::make_shared(NodeVector{y23}, ParameterVector{p0, p1, p2, p3, p4, p5, p6, p7}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + // instead of comparing to a reference function check that registers are correctly assigned + // and stored to runtime info + { + std::map ref_registers { + {"r00", 1}, {"r01", 3}, {"r02", 5}, {"r03", 5}, {"r04", 2}, {"r05", 6}, {"r06", 6}, {"r07", 6}, + {"r08", 5}, {"r09", 2}, {"r10", 1}, {"r11", 4}, {"r12", 4}, {"r13", 6}, {"r14", 2}, {"r15", 5}, + {"r16", 0}, {"r17", 4}, {"r18", 0}, {"r19", 2}, {"r20", 4}, {"r21", 1}, {"r22", 0}, {"r23", 6}, + {"r24", 1} + }; + + auto total_ops = 0; + for (auto& op : f->get_ordered_ops()) { + auto& rt = op->get_rt_info(); + + if (auto rinfo = rt["reginfo"]) { + auto reginfo = as_type_ptr>>(rinfo)->get(); + auto reg = reginfo[0]; + ASSERT_TRUE(ref_registers[op->get_friendly_name()] == reg); + total_ops++; + } + } + ASSERT_EQ(total_ops, ref_registers.size()); + } +} diff --git a/inference-engine/tests/functional/inference_engine/snippets/tokenization.cpp b/inference-engine/tests/functional/inference_engine/snippets/tokenization.cpp new file mode 100644 index 00000000000000..b6be642784a07c --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/snippets/tokenization.cpp @@ -0,0 +1,154 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + +#include +#include +#include + +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, StartSubgraphMultipleOutputs) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(data0, data1); + auto sub = std::make_shared(add, data1); + auto mul = std::make_shared(add, sub); + f = std::make_shared(NodeVector{mul}, ParameterVector{data0, data1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto indata0 = std::make_shared(element::f32, Shape{2, 3}); + auto indata1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(NodeVector{data0, data1}, + std::make_shared(NodeVector{std::make_shared(indata0, indata1)}, ParameterVector{indata0, indata1})); + auto sub = std::make_shared(add, data1); + auto mul = std::make_shared(add, sub); + f_ref = std::make_shared(NodeVector{mul}, ParameterVector{data0, data1}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, DontStartSubgraphSingleOuptut) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(data0, data1); + auto sub = std::make_shared(add, data1); + auto mul = std::make_shared(data0, sub); + f = std::make_shared(NodeVector{mul}, ParameterVector{data0, data1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(data0, data1); + auto sub = std::make_shared(add, data1); + auto mul = std::make_shared(data0, sub); + f_ref = std::make_shared(NodeVector{mul}, ParameterVector{data0, data1}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, AttachToSubgraph) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto indata0 = std::make_shared(element::f32, Shape{2, 3}); + auto indata1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(NodeVector{data0, data1}, + std::make_shared(NodeVector{std::make_shared(indata0, indata1)}, ParameterVector{indata0, indata1})); + auto neg = std::make_shared(add); + auto concat = std::make_shared(NodeVector{add, neg}, 0); + f = std::make_shared(NodeVector{concat}, ParameterVector{data0, data1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto indata0 = std::make_shared(element::f32, Shape{2, 3}); + auto indata1 = std::make_shared(element::f32, Shape{1, 3}); + auto inner = std::make_shared(indata0, indata1); + auto add = std::make_shared(NodeVector{data0, data1}, + std::make_shared(NodeVector{std::make_shared(inner), inner}, ParameterVector{indata0, indata1})); + auto concat = std::make_shared(OutputVector{add->output(0), add->output(1)}, 0); + f_ref = std::make_shared(NodeVector{concat}, ParameterVector{data0, data1}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, DontAttachToSubgraphIfLoop) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto indata0 = std::make_shared(element::f32, Shape{2, 3}); + auto indata1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(NodeVector{data0, data1}, + std::make_shared(NodeVector{std::make_shared(indata0, indata1)}, ParameterVector{indata0, indata1})); + auto log = std::make_shared(add); + auto mul = std::make_shared(add, log); + f = std::make_shared(NodeVector{mul}, ParameterVector{data0, data1}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data0 = std::make_shared(element::f32, Shape{2, 3}); + auto data1 = std::make_shared(element::f32, Shape{1, 3}); + auto indata0 = std::make_shared(element::f32, Shape{2, 3}); + auto indata1 = std::make_shared(element::f32, Shape{1, 3}); + auto add = std::make_shared(NodeVector{data0, data1}, + std::make_shared(NodeVector{std::make_shared(indata0, indata1)}, ParameterVector{indata0, indata1})); + auto log = std::make_shared(add); + auto mul = std::make_shared(add, log); + f_ref = std::make_shared(NodeVector{mul}, ParameterVector{data0, data1}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/snippets/vector_scalar.cpp b/inference-engine/tests/functional/inference_engine/snippets/vector_scalar.cpp new file mode 100644 index 00000000000000..e5ddbb351681bc --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/snippets/vector_scalar.cpp @@ -0,0 +1,72 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + +#include +#include + +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, ReplaceLoadsWithScalarLoads) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto load = std::make_shared(data); + auto neg = std::make_shared(load); + auto store = std::make_shared(neg); + f = std::make_shared(NodeVector{store}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto load = std::make_shared(data); + auto neg = std::make_shared(load); + auto store = std::make_shared(neg); + f_ref = std::make_shared(NodeVector{store}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, ReplaceStoresWithScalarStores) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto load = std::make_shared(data); + auto neg = std::make_shared(load); + auto store = std::make_shared(neg); + f = std::make_shared(NodeVector{store}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, Shape{2, 2}); + auto load = std::make_shared(data); + auto neg = std::make_shared(load); + auto store = std::make_shared(neg); + f_ref = std::make_shared(NodeVector{store}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/so_pointer_tests.cpp b/inference-engine/tests/functional/inference_engine/so_pointer_tests.cpp index 7ca63f51206221..b18957ed5790e5 100644 --- a/inference-engine/tests/functional/inference_engine/so_pointer_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/so_pointer_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,7 +11,6 @@ #include #include #include
-#include
#include #include @@ -81,10 +80,12 @@ namespace InferenceEngine { namespace details { +struct UnknownPlugin : std::enable_shared_from_this {}; + template<> -class SOCreatorTrait { +class SOCreatorTrait { public: - static constexpr auto name = "CreateIRelease"; + static constexpr auto name = "CreateUnknownPlugin"; }; } // namespace details @@ -92,33 +93,16 @@ class SOCreatorTrait { } // namespace InferenceEngine TEST_F(SoPointerTests, UnknownPlugin) { - ASSERT_THROW(SOPointer("UnknownPlugin"), InferenceEngineException); + ASSERT_THROW(SOPointer("UnknownPlugin"), Exception); } TEST_F(SoPointerTests, UnknownPluginExceptionStr) { try { - SOPointer("UnknownPlugin"); + SOPointer("UnknownPlugin"); } - catch (InferenceEngineException &e) { + catch (Exception &e) { ASSERT_STR_CONTAINS(e.what(), "Cannot load library 'UnknownPlugin':"); ASSERT_STR_DOES_NOT_CONTAIN(e.what(), "path:"); ASSERT_STR_DOES_NOT_CONTAIN(e.what(), "from CWD:"); } } - -using SymbolLoaderTests = ::testing::Test; - -TEST_F(SymbolLoaderTests, throwCreateNullPtr) { - ASSERT_THROW(SymbolLoader(nullptr), InferenceEngineException); -} - -TEST_F(SymbolLoaderTests, instantiateSymbol) { - std::string name = FileUtils::makePluginLibraryName(getIELibraryPath(), - std::string("mock_engine") + IE_BUILD_POSTFIX); - std::shared_ptr sharedLoader(new SharedObjectLoader(name.c_str())); - SymbolLoader loader(sharedLoader); - IInferencePlugin * value = nullptr; - ASSERT_NE(nullptr, value = loader.instantiateSymbol( - SOCreatorTrait::name)); - value->Release(); -} diff --git a/inference-engine/tests/functional/inference_engine/task_executor_tests.cpp b/inference-engine/tests/functional/inference_engine/task_executor_tests.cpp index a263f95ad5907c..d3ffda26614b47 100644 --- a/inference-engine/tests/functional/inference_engine/task_executor_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/task_executor_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/tensor_desc_test.cpp b/inference-engine/tests/functional/inference_engine/tensor_desc_test.cpp index 10dcbc696ae999..ed42a43bff1223 100644 --- a/inference-engine/tests/functional/inference_engine/tensor_desc_test.cpp +++ b/inference-engine/tests/functional/inference_engine/tensor_desc_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,7 +17,7 @@ using namespace InferenceEngine; using TensorDescTests = ::testing::Test; TEST_F(TensorDescTests, CreateBlobWithIncorrectLayout) { - ASSERT_THROW(make_shared_blob({ Precision::FP32, {1, 3, 32}, Layout::NC }), details::InferenceEngineException); + ASSERT_THROW(make_shared_blob({ Precision::FP32, {1, 3, 32}, Layout::NC }), Exception); } TEST_F(TensorDescTests, CreateBlockedBlobNCHW) { @@ -44,6 +44,19 @@ TEST_F(TensorDescTests, CreateBlockedBlobNCDHW) { ASSERT_EQ(Layout::BLOCKED, blockedBlob->getTensorDesc().getLayout()); } +TEST_F(TensorDescTests, CompareHWCandCHWLayouts) { + TensorDesc descCHW(Precision::FP32, {1, 3, 4}, Layout::CHW); + TensorDesc descHWC(Precision::FP32, {1, 3, 4}, Layout::HWC); + SizeVector chw = {0, 1, 2}; + SizeVector hwc = {1, 2, 0}; + + ASSERT_NE(descCHW, descHWC); + ASSERT_NE(descCHW.getBlockingDesc(), descHWC.getBlockingDesc()); + ASSERT_NE(descCHW.getBlockingDesc().getOrder(), descHWC.getBlockingDesc().getOrder()); + ASSERT_EQ(descCHW.getBlockingDesc().getOrder(), chw); + ASSERT_EQ(descHWC.getBlockingDesc().getOrder(), hwc); +} + TEST_F(TensorDescTests, CompareNHWCandNCHWLayouts) { TensorDesc descNCHW(Precision::FP32, {1, 3, 4, 2}, Layout::NCHW); TensorDesc descNHWC(Precision::FP32, {1, 3, 4, 2}, Layout::NHWC); diff --git a/inference-engine/tests/functional/inference_engine/transformations/add_fake_quantize_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/add_fake_quantize_fusion.cpp new file mode 100644 index 00000000000000..6896c77f091f5c --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/add_fake_quantize_fusion.cpp @@ -0,0 +1,182 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + + +TEST(TransformationTests, AddFakeQuantizeFusion) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto add_const = opset5::Constant::create(element::f32, Shape{1}, {2}); + auto add = std::make_shared(data, add_const); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(add, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {-2}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {18}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, AddFakeQuantizeFusionConstantOnFirstInput) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto add_const = opset5::Constant::create(element::f32, Shape{1}, {2}); + auto add = std::make_shared(add_const, data); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(add, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {-2}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {18}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, AddFakeQuantizeFusionReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto add_const = opset5::Constant::create(element::f32, Shape{3, 1, 1}, {2, 3, 4}); + auto add = std::make_shared(data, add_const); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(add, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-2, -3, -4}); + auto input_high = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {18, 17, 16}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeAddFakeQuantizeFusionNotAConstant) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto add_2nd_input = std::make_shared(element::f32, Shape{1}); + auto add = std::make_shared(data, add_2nd_input); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(add, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data, add_2nd_input}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto add_2nd_input = std::make_shared(element::f32, Shape{1}); + auto add = std::make_shared(data, add_2nd_input); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(add, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data, add_2nd_input}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/algebraic_simplification.cpp b/inference-engine/tests/functional/inference_engine/transformations/algebraic_simplification.cpp index 824e8d8daf73c1..ea0b588881b420 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/algebraic_simplification.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/algebraic_simplification.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/batch_norm_decompositoin.cpp b/inference-engine/tests/functional/inference_engine/transformations/batch_norm_decompositoin.cpp index 4dc8c3ac9d207a..28b60a94ede256 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/batch_norm_decompositoin.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/batch_norm_decompositoin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/batch_to_space_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/batch_to_space_decomposition_test.cpp index 3017e2ecf475b0..269ad545bf0f63 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/batch_to_space_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/batch_to_space_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/batch_to_space_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/batch_to_space_fusion.cpp new file mode 100644 index 00000000000000..5525d7d3dabebe --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/batch_to_space_fusion.cpp @@ -0,0 +1,207 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + + +TEST(TransformationTests, BatchToSpaceFusionTranspose) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 1, -1, 2}), + std::vector{0, 0, 0, 0}, std::vector{0, 0, 0, 0}); + auto trans_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto batch_to_space = std::make_shared(data, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 1}), + op::Constant::create(element::i64, Shape{4}, {1, 2, 1, 14})); + + f_ref = std::make_shared(NodeVector{batch_to_space}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, BatchToSpaceFusionReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{4, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{4}, {0, 0, 3, 0}), + op::Constant::create(element::i64, Shape{4}, {2, 1, 7, -2}), + std::vector{0, 0, 0, 0}, std::vector{0, 0, 0, 0}); + auto reshape_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{4}, {1, 2, 4, 14}), false); + f = std::make_shared(NodeVector{reshape_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{4, 3, 4, 8}); + auto batch_to_space = std::make_shared(data, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 3, 0}), + op::Constant::create(element::i64, Shape{4}, {1, 0, 1, 2})); + + f_ref = std::make_shared(NodeVector{batch_to_space}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeBatchToSpaceFusionInvalidTransposePerm) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {2, 0, 1, 3})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 1, -1, 2}), + std::vector{0, 0, 0, 0}, std::vector{0, 0, 0, 0}); + auto trans_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {2, 0, 1, 3})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 1, -1, 2}), + std::vector{0, 0, 0, 0}, std::vector{0, 0, 0, 0}); + auto trans_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f_ref = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeBatchToSpaceFusionInvalidMode) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 1, -1, 2}), + std::vector{0, 0, 0, 0}, std::vector{0, 0, 0, 0}); + auto trans_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 1, -1, 2}), + std::vector{0, 0, 0, 0}, std::vector{0, 0, 0, 0}); + auto trans_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f_ref = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeBatchToSpaceFusionInvalidRank) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{5}, {0, 0, 2, 1, 1}), + op::Constant::create(element::i64, Shape{5}, {2, 1, -1, 2, 2}), + std::vector{0, 0, 0, 0, 0}, std::vector{0, 0, 0, 0, 0}); + auto trans_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + auto depth_to_space = std::make_shared(trans_before, opset6::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST, 2); + auto slice = std::make_shared(depth_to_space, + op::Constant::create(element::i64, Shape{5}, {0, 0, 2, 1, 1}), + op::Constant::create(element::i64, Shape{5}, {2, 1, -1, 2, 2}), + std::vector{0, 0, 0, 0, 0}, std::vector{0, 0, 0, 0, 0}); + auto trans_after = std::make_shared(slice, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + f_ref = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + diff --git a/inference-engine/tests/functional/inference_engine/transformations/bidirectional_sequences_decomposition.cpp b/inference-engine/tests/functional/inference_engine/transformations/bidirectional_sequences_decomposition.cpp new file mode 100644 index 00000000000000..1ca84ceb6f8c34 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/bidirectional_sequences_decomposition.cpp @@ -0,0 +1,317 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "common_test_utils/test_common.hpp" +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +struct Inputs { + unsigned long hidden_size; + std::shared_ptr X; + std::shared_ptr H; + std::shared_ptr C; + std::shared_ptr S; + std::shared_ptr W; + std::shared_ptr R; + std::shared_ptr B; +}; + +Inputs getInputs(const unsigned long num_gates) { + Inputs retn; + + retn.hidden_size = 1; + const unsigned long batch_size = 8; + const unsigned long input_size = 10; + const unsigned long seq_len = 2; + const unsigned long num_directions = 2; + + const auto seq_len_val = std::vector(batch_size, seq_len); + const auto w_val = std::vector(num_directions * num_gates * retn.hidden_size * input_size, 0); + const auto r_val = std::vector(num_directions * num_gates * retn.hidden_size * retn.hidden_size, 0); + const auto b_val = std::vector(num_directions * num_gates * retn.hidden_size, 0); + + retn.X = std::make_shared(element::f32, Shape{batch_size, seq_len, input_size}); + retn.H = std::make_shared(element::f32, Shape{batch_size, num_directions, retn.hidden_size}); + retn.C = std::make_shared(element::f32, Shape{batch_size, num_directions, retn.hidden_size}); + retn.S = std::make_shared(element::i32, Shape{batch_size}, seq_len_val); + retn.W = std::make_shared(element::f32, Shape{num_directions, num_gates * retn.hidden_size, input_size}, w_val); + retn.R = std::make_shared(element::f32, Shape{num_directions, num_gates * retn.hidden_size, retn.hidden_size}, r_val); + retn.B = std::make_shared(element::f32, Shape{num_directions, num_gates * retn.hidden_size}, b_val); + + return retn; +} + +TEST(TransformationTests, BidirectionalSequenceDecompositionLSTM) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + const unsigned long num_gates = 4; + auto ins = getInputs(num_gates); + + { + auto lstm_seq = std::make_shared(ins.X, ins.H, ins.C, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f = std::make_shared(ngraph::OutputVector{lstm_seq->output(0), lstm_seq->output(1), lstm_seq->output(2)}, + ngraph::ParameterVector{ins.X, ins.H, ins.C}); + + ngraph::pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto axis_0 = ngraph::opset5::Constant::create(element::i64, Shape{}, {0}); + auto axis_1 = ngraph::opset5::Constant::create(element::i64, Shape{}, {1}); + auto H_split = std::make_shared(ins.H, axis_1, 2); + auto C_split = std::make_shared(ins.C, axis_1, 2); + auto W_split = std::make_shared(ins.W, axis_0, 2); + auto R_split = std::make_shared(ins.R, axis_0, 2); + auto B_split = std::make_shared(ins.B, axis_0, 2); + + auto lstm_seq_forward = + std::make_shared(ins.X, H_split->output(0), C_split->output(0), ins.S, W_split->output(0), R_split->output(0), + B_split->output(0), ins.hidden_size, op::RecurrentSequenceDirection::FORWARD); + auto lstm_seq_reverse = + std::make_shared(ins.X, H_split->output(1), C_split->output(1), ins.S, W_split->output(1), R_split->output(1), + B_split->output(1), ins.hidden_size, op::RecurrentSequenceDirection::REVERSE); + + auto concat_0 = std::make_shared(OutputVector{lstm_seq_forward->output(0), lstm_seq_reverse->output(0)}, 1); + auto concat_1 = std::make_shared(OutputVector{lstm_seq_forward->output(1), lstm_seq_reverse->output(1)}, 1); + auto concat_2 = std::make_shared(OutputVector{lstm_seq_forward->output(2), lstm_seq_reverse->output(2)}, 1); + + f_ref = std::make_shared(ngraph::OutputVector{concat_0, concat_1, concat_2}, + ngraph::ParameterVector{ins.X, ins.H, ins.C}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, BidirectionalSequenceDecompositionGRU) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + const unsigned long num_gates = 3; + auto ins = getInputs(num_gates); + + { + auto gru_seq = std::make_shared(ins.X, ins.H, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f = std::make_shared(ngraph::OutputVector{gru_seq->output(0), gru_seq->output(1)}, + ngraph::ParameterVector{ins.X, ins.H}); + + ngraph::pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto axis_0 = ngraph::opset5::Constant::create(element::i64, Shape{}, {0}); + auto axis_1 = ngraph::opset5::Constant::create(element::i64, Shape{}, {1}); + auto H_split = std::make_shared(ins.H, axis_1, 2); + auto W_split = std::make_shared(ins.W, axis_0, 2); + auto R_split = std::make_shared(ins.R, axis_0, 2); + auto B_split = std::make_shared(ins.B, axis_0, 2); + + auto gru_seq_forward = + std::make_shared(ins.X, H_split->output(0), ins.S, W_split->output(0), R_split->output(0), + B_split->output(0), ins.hidden_size, op::RecurrentSequenceDirection::FORWARD); + auto gru_seq_reverse = + std::make_shared(ins.X, H_split->output(1), ins.S, W_split->output(1), R_split->output(1), + B_split->output(1), ins.hidden_size, op::RecurrentSequenceDirection::REVERSE); + + auto concat_0 = std::make_shared(OutputVector{gru_seq_forward->output(0), gru_seq_reverse->output(0)}, 1); + auto concat_1 = std::make_shared(OutputVector{gru_seq_forward->output(1), gru_seq_reverse->output(1)}, 1); + + f_ref = std::make_shared(ngraph::OutputVector{concat_0, concat_1}, + ngraph::ParameterVector{ins.X, ins.H}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, BidirectionalSequenceDecompositionRNN) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + const unsigned long num_gates = 1; + auto ins = getInputs(num_gates); + + { + auto rnn_seq = std::make_shared(ins.X, ins.H, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f = std::make_shared(ngraph::OutputVector{rnn_seq->output(0), rnn_seq->output(1)}, + ngraph::ParameterVector{ins.X, ins.H}); + + ngraph::pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto axis_0 = ngraph::opset5::Constant::create(element::i64, Shape{}, {0}); + auto axis_1 = ngraph::opset5::Constant::create(element::i64, Shape{}, {1}); + auto H_split = std::make_shared(ins.H, axis_1, 2); + auto W_split = std::make_shared(ins.W, axis_0, 2); + auto R_split = std::make_shared(ins.R, axis_0, 2); + auto B_split = std::make_shared(ins.B, axis_0, 2); + + auto rnn_seq_forward = + std::make_shared(ins.X, H_split->output(0), ins.S, W_split->output(0), R_split->output(0), + B_split->output(0), ins.hidden_size, op::RecurrentSequenceDirection::FORWARD); + auto rnn_seq_reverse = + std::make_shared(ins.X, H_split->output(1), ins.S, W_split->output(1), R_split->output(1), + B_split->output(1), ins.hidden_size, op::RecurrentSequenceDirection::REVERSE); + + auto concat_0 = std::make_shared(OutputVector{rnn_seq_forward->output(0), rnn_seq_reverse->output(0)}, 1); + auto concat_1 = std::make_shared(OutputVector{rnn_seq_forward->output(1), rnn_seq_reverse->output(1)}, 1); + + f_ref = std::make_shared(ngraph::OutputVector{concat_0, concat_1}, + ngraph::ParameterVector{ins.X, ins.H}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, BidirectionalSequenceDecompositionLSTMDisabled) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + const unsigned long num_gates = 4; + auto ins = getInputs(num_gates); + + { + auto lstm_seq = std::make_shared(ins.X, ins.H, ins.C, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f = std::make_shared(ngraph::OutputVector{lstm_seq->output(0), lstm_seq->output(1), lstm_seq->output(2)}, + ngraph::ParameterVector{ins.X, ins.H, ins.C}); + + const auto transformations_callback = [](const std::shared_ptr& node) -> bool { + if (ngraph::as_type(node.get())) { + return true; + } + return false; + }; + + ngraph::pass::Manager m; + m.register_pass(); + m.register_pass(); + m.get_pass_config()->set_callback(transformations_callback); + m.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto lstm_seq = std::make_shared(ins.X, ins.H, ins.C, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f_ref = std::make_shared(ngraph::OutputVector{lstm_seq->output(0), lstm_seq->output(1), lstm_seq->output(2)}, + ngraph::ParameterVector{ins.X, ins.H, ins.C}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, BidirectionalSequenceDecompositionGRUDisabled) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + const unsigned long num_gates = 3; + auto ins = getInputs(num_gates); + + { + auto gru_seq = std::make_shared(ins.X, ins.H, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f = std::make_shared(ngraph::OutputVector{gru_seq->output(0), gru_seq->output(1)}, + ngraph::ParameterVector{ins.X, ins.H}); + + const auto transformations_callback = [](const std::shared_ptr& node) -> bool { + if (ngraph::as_type(node.get())) { + return true; + } + return false; + }; + + ngraph::pass::Manager m; + m.register_pass(); + m.register_pass(); + m.get_pass_config()->set_callback(transformations_callback); + m.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto gru_seq = std::make_shared(ins.X, ins.H, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f_ref = std::make_shared(ngraph::OutputVector{gru_seq->output(0), gru_seq->output(1)}, + ngraph::ParameterVector{ins.X, ins.H}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, BidirectionalSequenceDecompositionRNNDisabled) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + const unsigned long num_gates = 1; + auto ins = getInputs(num_gates); + + { + auto rnn_seq = std::make_shared(ins.X, ins.H, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f = std::make_shared(ngraph::OutputVector{rnn_seq->output(0), rnn_seq->output(1)}, + ngraph::ParameterVector{ins.X, ins.H}); + + const auto transformations_callback = [](const std::shared_ptr& node) -> bool { + if (ngraph::as_type(node.get())) { + return true; + } + return false; + }; + + ngraph::pass::Manager m; + m.register_pass(); + m.register_pass(); + m.get_pass_config()->set_callback(transformations_callback); + m.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto rnn_seq = std::make_shared(ins.X, ins.H, ins.S, ins.W, ins.R, ins.B, + ins.hidden_size, op::RecurrentSequenceDirection::BIDIRECTIONAL); + f_ref = std::make_shared(ngraph::OutputVector{rnn_seq->output(0), rnn_seq->output(1)}, + ngraph::ParameterVector{ins.X, ins.H}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + diff --git a/inference-engine/tests/functional/inference_engine/transformations/binarize_weights.cpp b/inference-engine/tests/functional/inference_engine/transformations/binarize_weights.cpp new file mode 100644 index 00000000000000..5795f4413217fc --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/binarize_weights.cpp @@ -0,0 +1,263 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + + +TEST(TransformationTests, BinarizeWeightsActivationsOutputLowZero) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.2f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{1, 1, 1}, {0.7f})); + auto mul2 = std::make_shared(mul, opset5::Constant::create(element::f32, Shape{1, 1, 1}, {0.2f})); + + f_ref = std::make_shared(NodeVector{mul2}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, BinarizeWeightsActivationsOutputLowNegative) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.7f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.2f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{1, 1, 1}, {0.7f})); + auto mul2 = std::make_shared(mul, opset5::Constant::create(element::f32, Shape{1, 1, 1}, {0.2f})); + + f_ref = std::make_shared(NodeVector{mul2}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeBinarizeWeightsInvalidLevels) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.7f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 3); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.2f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.7f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 3); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.2f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeBinarizeWeightsInvalidActivationsOutputLowHigh) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.2f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {-0.2f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeBinarizeWeightsInvalidOutputLowHigh) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.7f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 0, 2}); + auto weights_in_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto weights_in_high = opset5::Constant::create(element::f32, Shape{1}, {2.0f}); + auto weights_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto weights_out_high = opset5::Constant::create(element::f32, Shape{1}, {0.2f}); + auto weights_fq = std::make_shared(weights, weights_in_low, weights_in_high, weights_out_low, weights_out_high, 2); + auto conv = std::make_shared(act_fq, weights_fq, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/broadcast_elementwise_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/broadcast_elementwise_fusion_test.cpp index 29ed7a740c54c0..324bfae029b890 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/broadcast_elementwise_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/broadcast_elementwise_fusion_test.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include diff --git a/inference-engine/tests/functional/inference_engine/transformations/clamp_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/clamp_fusion.cpp index 34e11e890e31fe..f6dc785ebd9fc4 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/clamp_fusion.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/clamp_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/compare_functions_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/compare_functions_test.cpp index bff976a91e2a4e..8a0660f199b9b3 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/compare_functions_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/compare_functions_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,16 +6,17 @@ #include -#include "common_test_utils/test_common.hpp" -#include #include #include +#include +#include "common_test_utils/test_common.hpp" -#include #include #include -#include +#include +#include #include +#include #include "common_test_utils/ngraph_test_utils.hpp" @@ -207,9 +208,141 @@ TEST(TransformationTests, CompareFunctoinsTINegative) { ngraph::ParameterVector{X, Y, Z}); } - auto res = compare_functions(f, f_ref); - EXPECT_FALSE(res.first); - EXPECT_EQ(res.second, "LSTMCell/4 != Relu/0"); + const auto fc = FunctionsComparator::with_default().enable(FunctionsComparator::ATTRIBUTES); + auto res = fc(f, f_ref); + EXPECT_FALSE(res.valid); + EXPECT_THAT(res.message, HasSubstr("LSTMCell/4 != Relu/0")); +} + +TEST(TransformationTests, CompareFunctoinsTINegativeDifferentElementTypeBetweenSubGraphsInputs) { + const auto createFunc = [](element::Type e_type) { + using namespace opset6; + + auto X = std::make_shared(e_type, Shape{1, 2}); + auto Y = std::make_shared(e_type, Shape{1, 2}); + + auto Xi = std::make_shared(e_type, Shape{1, 2}); + auto Yi = std::make_shared(e_type, Shape{1, 2}); + + // Body + auto add = std::make_shared(Xi, Yi); + auto result = std::make_shared(add); + + auto ti_body = std::make_shared(OutputVector{result}, ParameterVector{Xi, Yi}); + + auto ti = std::make_shared(); + ti->set_body(ti_body); + ti->set_sliced_input(Xi, X, 0, 1, 1, -1, 1); + ti->set_sliced_input(Yi, Y, 0, 1, 1, -1, 1); + + auto out = ti->get_concatenated_slices(result, 0, 1, 1, -1, 1); + + return std::make_shared( + NodeVector{out.get_node_shared_ptr()}, ParameterVector{X, Y}); + }; + const auto f1 = createFunc(element::f32); + const auto f2 = createFunc(element::f16); + + using FnCmp = FunctionsComparator; + + const auto result = FnCmp::with_default().compare(f1, f2); + + EXPECT_FALSE(result.valid); + EXPECT_THAT(result.message, HasSubstr("different SubGraph InputDescription")); +} + +TEST(TransformationTests, CompareFunctoinsTINegativeDifferentElementTypeBetweenInputAndParameter) { + const auto createFunc = [](element::Type e_type) { + using namespace opset6; + + auto X = std::make_shared(element::f64, Shape{1, 2}); // << + auto Y = std::make_shared(e_type, Shape{1, 2}); + + auto Xi = std::make_shared(e_type, Shape{1, 2}); + auto Yi = std::make_shared(e_type, Shape{1, 2}); + + // Body + auto add = std::make_shared(Xi, Yi); + auto result = std::make_shared(add); + + auto ti_body = std::make_shared(OutputVector{result}, ParameterVector{Xi, Yi}); + + auto ti = std::make_shared(); + ti->set_body(ti_body); + ti->set_sliced_input(Xi, X, 0, 1, 1, -1, 1); + ti->set_sliced_input(Yi, Y, 0, 1, 1, -1, 1); + + auto out = ti->get_concatenated_slices(result, 0, 1, 1, -1, 1); + + return std::make_shared( + NodeVector{out.get_node_shared_ptr()}, ParameterVector{X, Y}); + }; + const auto f1 = createFunc(element::f32); + + using FnCmp = FunctionsComparator; + + const auto result = FnCmp::with_default().compare(f1, f1); + + EXPECT_FALSE(result.valid); + EXPECT_THAT(result.message, HasSubstr("inputs and parameters mismatch")); +} + +TEST(TransformationTests, CompareFunctoinsTINegativeDifferentElementTypeBetweentResultAndOutput) { + const auto createFunc = [](element::Type result_element_type, const Shape& result_shape) { + using namespace opset6; + + auto X = std::make_shared(element::f32, Shape{1, 2}); + auto Y = std::make_shared(element::f32, Shape{1, 2}); + + auto Xi = std::make_shared(element::f32, Shape{1, 2}); + auto Yi = std::make_shared(element::f32, Shape{1, 2}); + + // Body + auto add = std::make_shared(Xi, Yi); + auto result = std::make_shared(add); + + auto ti_body = std::make_shared(OutputVector{result}, ParameterVector{Xi, Yi}); + + auto ti = std::make_shared(); + ti->set_body(ti_body); + ti->set_sliced_input(Xi, X, 0, 1, 1, -1, 1); + ti->set_sliced_input(Yi, Y, 0, 1, 1, -1, 1); + + auto out = ti->get_concatenated_slices(result, 0, 1, 1, -1, 1); + + auto fn = std::make_shared( + NodeVector{out.get_node_shared_ptr()}, ParameterVector{X, Y}); + + /// << + auto&& result_out = result->output(0); + Node* result_out_node = result_out.get_node(); + result_out_node->set_output_type(0, result_element_type, result_shape); + /// << + + return fn; + }; + { // check element type difference + const auto f1 = createFunc(element::u16, Shape{10, 20}); + const auto f2 = createFunc(element::u64, Shape{10, 20}); + + using FnCmp = FunctionsComparator; + + const auto result = FnCmp::with_default().compare(f1, f2); + + EXPECT_FALSE(result.valid); + EXPECT_THAT(result.message, HasSubstr("outputs and results mismatch")); + } + { // check Shape difference + const auto f1 = createFunc(element::u16, Shape{11, 20}); + const auto f2 = createFunc(element::u16, Shape{12, 20}); + + using FnCmp = FunctionsComparator; + + const auto result = FnCmp::with_default().compare(f1, f2); + + EXPECT_FALSE(result.valid); + EXPECT_THAT(result.message, HasSubstr("outputs and results mismatch")); + } } TEST(TransformationTests, ConstantNegativeDifferentElementType) { @@ -561,3 +694,94 @@ TEST(TransformationTests, DifferentPrecisionVersusAttributes) { EXPECT_THAT(res.message, HasSubstr("i16")); } } + +namespace { +const auto createU1ConstantFunc = [](const Shape& s, const uint8_t* data) { + using namespace ngraph::opset5; + auto c = std::make_shared(element::u1, s, data); + + return std::make_shared(ngraph::NodeVector{c}, + ngraph::ParameterVector{}); +}; +} + +TEST(TransformationTests, ConstantComparison_ElementTypeU1_Positive_1stbit) { + const Shape shape{1}; + const uint8_t data[1] = {0x80}; // 1000'0000 + + const auto& f1 = + createU1ConstantFunc(shape, static_cast(data)); + const auto& f2 = + createU1ConstantFunc(shape, static_cast(data)); + + const auto fc = FunctionsComparator::with_default().enable( + FunctionsComparator::CONST_VALUES); + const auto res = fc.compare(f1, f2); + EXPECT_TRUE(res.valid) << res.message; +} + +TEST(TransformationTests, ConstantComparison_ElementTypeU1_Positive_9thbit) { + const Shape shape{9}; + const uint8_t data[2] = {0x00, 0x80}; // 0000'0000 1000'0000 + + const auto& f1 = + createU1ConstantFunc(shape, static_cast(data)); + const auto& f2 = + createU1ConstantFunc(shape, static_cast(data)); + + const auto fc = FunctionsComparator::with_default().enable( + FunctionsComparator::CONST_VALUES); + const auto res = fc.compare(f1, f2); + EXPECT_TRUE(res.valid) << res.message; +} + +TEST(TransformationTests, ConstantComparison_ElementTypeU1_Positive_garbage) { + // unused mem (after 9th bit) in bit stream should not be compared + const Shape shape{9}; + const uint8_t data1[2] = {0xAA, 0x8F}; // 1010'1010 1000'1111 + const uint8_t data2[2] = {0xAA, 0xF0}; // 1010'1010 1111'0000 + + const auto& f1 = + createU1ConstantFunc(shape, static_cast(data1)); + const auto& f2 = + createU1ConstantFunc(shape, static_cast(data2)); + + const auto fc = FunctionsComparator::with_default().enable( + FunctionsComparator::CONST_VALUES); + const auto res = fc.compare(f1, f2); + EXPECT_TRUE(res.valid) << res.message; +} + +TEST(TransformationTests, ConstantComparison_ElementTypeU1_Negative) { + const Shape shape{1}; + const uint8_t data1[1] = {0x80}; // 1000 0000 + const uint8_t data2[1] = {0x01}; // 0000 0001 + + const auto& f1 = + createU1ConstantFunc(shape, static_cast(data1)); + const auto& f2 = + createU1ConstantFunc(shape, static_cast(data2)); + + const auto fc = FunctionsComparator::with_default().enable( + FunctionsComparator::CONST_VALUES); + const auto res = fc.compare(f1, f2); + EXPECT_FALSE(res.valid); + EXPECT_THAT(res.message, HasSubstr("Different Constant values detected")); +} + +TEST(TransformationTests, ConstantComparison_ElementTypeU1_Negative_9thbit) { + const Shape shape{9}; + const uint8_t data1[2] = {0x00, 0x80}; // 0000 0000 1000 0000 + const uint8_t data2[2] = {0x00, 0x00}; // 0000 0000 0000 0000 + + const auto& f1 = + createU1ConstantFunc(shape, static_cast(data1)); + const auto& f2 = + createU1ConstantFunc(shape, static_cast(data2)); + + const auto fc = FunctionsComparator::with_default().enable( + FunctionsComparator::CONST_VALUES); + const auto res = fc.compare(f1, f2); + EXPECT_FALSE(res.valid); + EXPECT_THAT(res.message, HasSubstr("Different Constant values detected")); +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/const_folding_prior_box.cpp b/inference-engine/tests/functional/inference_engine/transformations/const_folding_prior_box.cpp index 2b336855bc72d8..a7cbb0815334fb 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/const_folding_prior_box.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/const_folding_prior_box.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/conv_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/conv_fusion_test.cpp index 1b126115b3fd09..b12a0f6f9de0e6 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/conv_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/conv_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,15 +13,17 @@ #include #include -#include +#include #include #include #include #include +#include #include #include "common_test_utils/ngraph_test_utils.hpp" +using namespace ngraph; using namespace testing; using InputShape = ngraph::PartialShape; @@ -58,17 +60,17 @@ class ConvFusionTests: public CommonTestUtils::TestsCommon, const EltwiseType& eltwise_type, const EltwiseShape& eltwise_shape) { auto spatial_dims = input_shape.rank().get_length() - 2; - auto input = std::make_shared(ngraph::element::f32, input_shape); - auto weights = ngraph::opset1::Constant::create(ngraph::element::f32, weights_shape, {1}); + auto input = std::make_shared(ngraph::element::f32, input_shape); + auto weights = ngraph::opset5::Constant::create(ngraph::element::f32, weights_shape, {1}); auto conv = std::make_shared(input, weights, ngraph::Strides(spatial_dims, 1), ngraph::Strides(spatial_dims, 1), ngraph::CoordinateDiff(spatial_dims, 0), ngraph::CoordinateDiff(spatial_dims, 0), ngraph::element::f32); - auto const_node = ngraph::opset1::Constant::create(ngraph::element::f32, eltwise_shape, {1.1}); + auto const_node = ngraph::opset5::Constant::create(ngraph::element::f32, eltwise_shape, {1.1}); ngraph::Output eltwise; - if (eltwise_type == ngraph::opset1::Add::type_info) { - eltwise = std::make_shared(conv, const_node); - } else if (eltwise_type == ngraph::opset1::Multiply::type_info) { - eltwise = std::make_shared(conv, const_node); + if (eltwise_type == ngraph::opset5::Add::type_info) { + eltwise = std::make_shared(conv, const_node); + } else if (eltwise_type == ngraph::opset5::Multiply::type_info) { + eltwise = std::make_shared(conv, const_node); } else { throw ngraph::ngraph_error("Unsupported element type"); } @@ -81,26 +83,26 @@ class ConvFusionTests: public CommonTestUtils::TestsCommon, const EltwiseType& eltwise_type, const EltwiseShape& eltwise_shape) { auto spatial_dims = input_shape.rank().get_length() - 2; - auto input = std::make_shared(ngraph::element::f32, input_shape); - ngraph::Output weights = ngraph::opset1::Constant::create(ngraph::element::f32, weights_shape, {1}); + auto input = std::make_shared(ngraph::element::f32, input_shape); + ngraph::Output weights = ngraph::opset5::Constant::create(ngraph::element::f32, weights_shape, {1}); ngraph::Output conv = std::make_shared(input, weights, ngraph::Strides(spatial_dims, 1), ngraph::Strides(spatial_dims, 1), ngraph::CoordinateDiff(spatial_dims, 0), ngraph::CoordinateDiff(spatial_dims, 0), ngraph::element::f32); ngraph::Output const_node; - const_node = ngraph::opset1::Constant::create(ngraph::element::f32, eltwise_shape, {1.1}); - if (eltwise_type == ngraph::opset1::Add::type_info) { + const_node = ngraph::opset5::Constant::create(ngraph::element::f32, eltwise_shape, {1.1}); + if (eltwise_type == ngraph::opset5::Add::type_info) { if (eltwise_shape.size() != 1) { const_node = ngraph::op::util::reshapeTo(const_node, ngraph::Shape{ngraph::shape_size(eltwise_shape)}); } conv = conv.get_node_shared_ptr()->copy_with_new_inputs({input, weights, const_node}); - } else if (eltwise_type == ngraph::opset1::Multiply::type_info) { + } else if (eltwise_type == ngraph::opset5::Multiply::type_info) { if (eltwise_shape.size() > 1) { const_node = ngraph::op::util::reshapeTo(const_node, ngraph::Shape{ngraph::shape_size(eltwise_shape)}); } ngraph::Shape const_shape(weights_shape.size(), 1); const_shape[0] = weights_shape[0]; - weights = std::make_shared(weights, ngraph::op::util::reshapeTo(const_node, const_shape)); + weights = std::make_shared(weights, ngraph::op::util::reshapeTo(const_node, const_shape)); conv = conv.get_node_shared_ptr()->copy_with_new_inputs({input, weights}); } else { throw ngraph::ngraph_error("Unsupported element type"); @@ -120,8 +122,8 @@ TEST_P(ConvFusionTests, CompareFunctions) { ASSERT_TRUE(res.first) << res.second; } -using add = ngraph::opset1::Add; -using mul = ngraph::opset1::Multiply; +using add = ngraph::opset5::Add; +using mul = ngraph::opset5::Multiply; INSTANTIATE_TEST_CASE_P(ConvAddFusion, ConvFusionTests, testing::Values(std::make_tuple(InputShape{DYN, DYN, DYN, DYN, DYN}, WeightsShape{8, 3, 1, 2, 3}, add::type_info, EltwiseShape{8, 1, 1, 1}, false), @@ -168,3 +170,165 @@ INSTANTIATE_TEST_CASE_P(DISABLED_ConvMulFusionNegative, ConvFusionTests, testing::Values(std::make_tuple(InputShape{DYN, DYN, DYN, DYN, DYN}, WeightsShape{8, 3, 1, 2, 3}, mul::type_info, EltwiseShape{2, 1}, true), std::make_tuple(InputShape{DYN, 3, 64, 64}, WeightsShape{8, 3, 1, 2, 3}, mul::type_info, EltwiseShape{8, 1, 1}, true), std::make_tuple(InputShape{2, DYN, 64, 64}, WeightsShape{9, 3, 2, 3, 1}, mul::type_info, EltwiseShape{9, 1, 1, 1, 1}, true))); + + +TEST(GroupConvMulFusion, WeightsWithReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{4, 1, 3, 3}, std::vector(36, 1)); + auto reshape = std::make_shared(weights, opset5::Constant::create(element::i64, Shape{5}, Shape{4, 1, 1, 3, 3}), false); + auto conv = std::make_shared(data, reshape, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{4, 1, 1}, std::vector(4, 2))); + f = std::make_shared(NodeVector{mul}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{4, 1, 1, 3, 3}, std::vector(36, 2)); + auto conv = std::make_shared(data, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + + +TEST(GroupConvMulFusion, NegativeWeightsWithReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{36}, std::vector(36, 1)); + auto reshape = std::make_shared(weights, opset5::Constant::create(element::i64, Shape{5}, Shape{4, 1, 1, 3, 3}), false); + auto conv = std::make_shared(data, reshape, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{4, 1, 1}, std::vector(4, 2))); + f = std::make_shared(NodeVector{mul}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{36}, std::vector(36, 1)); + auto reshape = std::make_shared(weights, opset5::Constant::create(element::i64, Shape{5}, Shape{4, 1, 1, 3, 3}), false); + auto conv = std::make_shared(data, reshape, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{4, 1, 1}, std::vector(4, 2))); + f_ref = std::make_shared(NodeVector{mul}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + + +TEST(GroupConvMulFusion, WeightsWithReshapeScalarMultiplier) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{36}, std::vector(36, 1)); + auto reshape = std::make_shared(weights, opset5::Constant::create(element::i64, Shape{5}, Shape{4, 1, 1, 3, 3}), false); + auto conv = std::make_shared(data, reshape, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{1}, {2.0f})); + f = std::make_shared(NodeVector{mul}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{4, 1, 1, 3, 3}, std::vector(36, 2)); + auto conv = std::make_shared(data, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + + +TEST(GroupConvMulFusion, WeightsWithoutReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{4, 1, 1, 3, 3}, std::vector(36, 1)); + auto conv = std::make_shared(data, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{4, 1, 1}, std::vector(4, 2))); + f = std::make_shared(NodeVector{mul}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{4, 1, 1, 3, 3}, std::vector(36, 2)); + auto conv = std::make_shared(data, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + + +TEST(GroupConvMulFusion, WeightsWithFakeQuantizeAndReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{6, 2, 3, 3}, std::vector(108, 1)); + auto fq = std::make_shared(weights, + opset5::Constant::create(element::f32, Shape{1}, {0}), + opset5::Constant::create(element::f32, Shape{1}, {1}), + opset5::Constant::create(element::f32, Shape{1}, {0}), + opset5::Constant::create(element::f32, Shape{1}, {10}), 2); + auto reshape = std::make_shared(fq, opset5::Constant::create(element::i64, Shape{5}, Shape{2, 3, 2, 3, 3}), false); + auto conv = std::make_shared(data, reshape, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto mul = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{6, 1, 1}, std::vector(6, 2))); + f = std::make_shared(NodeVector{mul}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 4, 7, 7}); + auto weights = opset5::Constant::create(element::f32, Shape{6, 2, 3, 3}, std::vector(108, 1)); + auto fq = std::make_shared(weights, + opset5::Constant::create(element::f32, Shape{1}, {0}), + opset5::Constant::create(element::f32, Shape{1}, {1}), + opset5::Constant::create(element::f32, Shape{1}, {0}), + opset5::Constant::create(element::f32, Shape{1}, {10}), 2); + auto mul = std::make_shared(fq, opset5::Constant::create(element::f32, Shape{6, 1, 1, 1}, std::vector(6, 2))); + auto reshape = std::make_shared(mul, opset5::Constant::create(element::i64, Shape{5}, Shape{2, 3, 2, 3, 3}), false); + auto conv = std::make_shared(data, reshape, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/conv_to_binary_conv.cpp b/inference-engine/tests/functional/inference_engine/transformations/conv_to_binary_conv.cpp new file mode 100644 index 00000000000000..6ea0f076c825fb --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/conv_to_binary_conv.cpp @@ -0,0 +1,233 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + + +TEST(TransformationTests, ConvToBinaryConvOutputLowZeroOutputHighOne) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + uint8_t weights_val = 6; + auto weights = std::make_shared(element::u1, Shape{1, 3, 1, 1}, &weights_val); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, + Strides{1, 1}, opset5::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT, -1, op::PadType::EXPLICIT); + auto add = std::make_shared(conv, opset5::Constant::create(element::f32, Shape{1, 1, 1}, {0.7f})); + auto mul = std::make_shared(add, opset5::Constant::create(element::f32, Shape{}, {0.2f})); + + f_ref = std::make_shared(NodeVector{mul}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, ConvToBinaryConvOutputLowMinusOneOutputHighOne) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {0.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + uint8_t weights_val = 6; + auto weights = std::make_shared(element::u1, Shape{1, 3, 1, 1}, &weights_val); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, + Strides{1, 1}, opset5::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT, 0, op::PadType::EXPLICIT); + + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeConvToBinaryConvInvalidWeights) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 2, 3}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 2, 3}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeConvToBinaryConvInvalidLevels) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 3); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-1.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 3); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeConvToBinaryConvOutputLowHigh) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-2.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f = std::make_shared(NodeVector{conv}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{1, 3, 2, 2}); + auto act_in_low = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_in_high = opset5::Constant::create(element::f32, Shape{1}, {3.0f}); + auto act_out_low = opset5::Constant::create(element::f32, Shape{1}, {-2.0f}); + auto act_out_high = opset5::Constant::create(element::f32, Shape{1}, {1.0f}); + auto act_fq = std::make_shared(data, act_in_low, act_in_high, act_out_low, act_out_high, 2); + auto weights = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-1, 1, 1}); + auto conv = std::make_shared(act_fq, weights, Strides{1, 1}, CoordinateDiff{0, 0}, + CoordinateDiff{0, 0}, Strides{1, 1}, op::PadType::EXPLICIT); + + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast3_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast3_test.cpp index 45f1ff52b0ac7f..7058f52eb5ce42 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast3_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast3_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast_to_tiles_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast_to_tiles_test.cpp index b00606ec8068c1..8e755275070d77 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast_to_tiles_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_broadcast_to_tiles_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_cells_to_cells_ie_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_cells_to_cells_ie_test.cpp index d1e824834c4435..8e37ac73eae1ff 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_cells_to_cells_ie_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_cells_to_cells_ie_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_convolution_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_convolution_test.cpp index ccf1098701a9ce..43bd10eccd1aa4 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_convolution_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_convolution_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_deconvolution_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_deconvolution_test.cpp index 0244f5d2462b1e..afe15697f0be77 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_deconvolution_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_deconvolution_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_divide.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_divide.cpp index 21efa5736c6b16..633aeacf90f558 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_divide.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_divide.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_gather_0d_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_gather_0d_test.cpp index b1521c44fdf1a0..6361e30ffa4e9e 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_gather_0d_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_gather_0d_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_gather_to_gather_ie.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_gather_to_gather_ie.cpp index 80a00206ed3f41..4f3c4b3930a2d2 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_gather_to_gather_ie.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_gather_to_gather_ie.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate1_to_interpolate4_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate1_to_interpolate4_test.cpp index 5f20476853231a..9468db9287d855 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate1_to_interpolate4_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate1_to_interpolate4_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate_to_legacy.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate_to_legacy.cpp index e35bb158430dae..0b761bb9bf7ade 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate_to_legacy.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_interpolate_to_legacy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_lrn_to_legacy.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_lrn_to_legacy.cpp index daff43b8fee8f2..648394f21af0cc 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_lrn_to_legacy.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_lrn_to_legacy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_matmul_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_matmul_test.cpp index 2e4c44e88e0719..239bceae97d6c0 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_matmul_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_matmul_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -80,7 +80,9 @@ TEST(TransformationTests, ConvertMatMulTest2) { auto input1 = std::make_shared(ngraph::element::f32, ngraph::Shape{3, 1, 2}); auto input2 = std::make_shared(ngraph::element::f32, ngraph::Shape{2}); - auto reshape = ngraph::op::util::reshapeTo(input2, {1, 2, 1}); + auto usnqueeze_input2 = std::make_shared(input2, + ngraph::opset1::Constant::create(ngraph::element::i64, ngraph::Shape{1}, {1})); + auto reshape = ngraph::op::util::reshapeTo(usnqueeze_input2, {1, 2, 1}); auto matmul = std::make_shared(input1, reshape, false, false); auto reshape_output = ngraph::op::util::reshapeTo(matmul, {3, 1}); @@ -111,7 +113,9 @@ TEST(TransformationTests, ConvertMatMulTest3) { auto input1 = std::make_shared(ngraph::element::f32, ngraph::Shape{2}); auto input2 = std::make_shared(ngraph::element::f32, ngraph::Shape{3, 2, 1}); - auto reshape = ngraph::op::util::reshapeTo(input1, {1, 1, 2}); + auto usnqueeze_input1 = std::make_shared(input1, + ngraph::opset1::Constant::create(ngraph::element::i64, ngraph::Shape{1}, {0})); + auto reshape = ngraph::op::util::reshapeTo(usnqueeze_input1, {1, 1, 2}); auto matmul = std::make_shared(reshape, input2, false, false); auto reshape_output = ngraph::op::util::reshapeTo(matmul, {3, 1}); diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_mvn1_to_mvn6_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_mvn1_to_mvn6_test.cpp index a3abfa90899b8c..c5b46ca30328dc 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_mvn1_to_mvn6_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_mvn1_to_mvn6_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_nms5_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_nms5_test.cpp index ed2ca43e7ea8cd..060d80e1d898a5 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_nms5_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_nms5_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_internal_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_internal_test.cpp index cfbe65302bc7bc..5527fd7eab27c1 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_internal_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_internal_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_test.cpp index 35916319b19f8e..0cd3aab74cf39d 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_group_conv.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_group_conv.cpp index f409c2b346ac96..8672bd9a1ab8f2 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_group_conv.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_group_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_legacy.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_legacy.cpp index 821360c9c82aad..d207bc0338fa31 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_legacy.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_pad_to_legacy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_precision.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_precision.cpp index 35d63367718028..b96cc6f75182be 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_precision.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_precision.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -567,7 +567,7 @@ void constant_convert_test(element::Type_t type_from, element::Type_t type_to, F std::shared_ptr f(nullptr); std::string expected_friendly_name; { - auto c = opset4::Constant::create(type_from, Shape{}, {value}); + auto c = std::make_shared(type_from, Shape{}, &value); expected_friendly_name = c->get_friendly_name(); f = std::make_shared(NodeVector{c}, ParameterVector{}); @@ -608,7 +608,7 @@ TEST(TransformationTests, ConvertPrecision_ConstantConversion_U64MaxToI32) { } TEST(TransformationTests, ConvertPrecision_ConstantConversion_U64ToI32) { - constant_convert_test(element::Type_t::u64, element::Type_t::i32, 42, 42); + constant_convert_test(element::Type_t::u64, element::Type_t::i32, 42, 42); } TEST(TransformationTests, ConvertPrecision_ConstantConversion_U32MinToI32) { @@ -630,3 +630,152 @@ TEST(TransformationTests, ConvertPrecision_ConstantConversion_BoolToU8) { constant_convert_test(element::Type_t::boolean, element::Type_t::u8, true, 1); constant_convert_test(element::Type_t::boolean, element::Type_t::u8, false, 0); } + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToI8) { + constant_convert_test(element::Type_t::u4, element::Type_t::i8, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToU8) { + constant_convert_test(element::Type_t::u4, element::Type_t::u8, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToI8_2) { + constant_convert_test(element::Type_t::u4, element::Type_t::i8, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToU8_96) { + constant_convert_test(element::Type_t::u4, element::Type_t::u8, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU8) { + constant_convert_test(element::Type_t::i4, element::Type_t::u8, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI8) { + constant_convert_test(element::Type_t::i4, element::Type_t::i8, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU8_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::u8, 171, 250); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI8_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::i8, 171, -6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToI32) { + constant_convert_test(element::Type_t::u4, element::Type_t::i32, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToU32) { + constant_convert_test(element::Type_t::u4, element::Type_t::u32, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU32) { + constant_convert_test(element::Type_t::i4, element::Type_t::u32, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI32) { + constant_convert_test(element::Type_t::i4, element::Type_t::i32, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU32_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::u32, 171, -6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI32_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::i32, 171, -6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToI16) { + constant_convert_test(element::Type_t::u4, element::Type_t::i16, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToU16) { + constant_convert_test(element::Type_t::u4, element::Type_t::u16, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU16) { + constant_convert_test(element::Type_t::i4, element::Type_t::u16, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI16) { + constant_convert_test(element::Type_t::i4, element::Type_t::i16, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU16_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::u16, 171, 65530); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI16_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::i16, 171, -6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToI64) { + constant_convert_test(element::Type_t::u4, element::Type_t::i64, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U4ToU64) { + constant_convert_test(element::Type_t::u4, element::Type_t::u64, 171, 10); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU64) { + constant_convert_test(element::Type_t::i4, element::Type_t::u64, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI64) { + constant_convert_test(element::Type_t::i4, element::Type_t::i64, 96, 6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToU64_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::u64, 171, -6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_I4ToI64_neg) { + constant_convert_test(element::Type_t::i4, element::Type_t::i64, 171, -6); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U1ToU8) { + std::shared_ptr f(nullptr); + uint8_t value = 171; + std::string expected_friendly_name; + { + auto c = std::make_shared(element::Type_t::u1, Shape{2}, &value); + expected_friendly_name = c->get_friendly_name(); + f = std::make_shared(NodeVector{c}, ParameterVector{}); + + pass::Manager manager; + manager.register_pass(element::Type_t::u1, element::Type_t::u8); + manager.run_passes(f); + } + auto ops = f->get_ordered_ops(); + auto c = std::dynamic_pointer_cast(ops[0]); + ASSERT_NE(c, nullptr); + ASSERT_EQ(c->get_friendly_name(), expected_friendly_name); + + auto* actual = reinterpret_cast(c->get_data_ptr()); + ASSERT_EQ(1, actual[0]); + ASSERT_EQ(0, actual[1]); +} + +TEST(TransformationTests, ConvertPrecision_ConstantConversion_U1ToU4) { + std::shared_ptr f(nullptr); + uint8_t value = 171; + std::string expected_friendly_name; + { + auto c = std::make_shared(element::Type_t::u1, Shape{2}, &value); + expected_friendly_name = c->get_friendly_name(); + f = std::make_shared(NodeVector{c}, ParameterVector{}); + + pass::Manager manager; + manager.register_pass(element::Type_t::u1, element::Type_t::u4); + manager.run_passes(f); + } + auto ops = f->get_ordered_ops(); + auto c = std::dynamic_pointer_cast(ops[0]); + ASSERT_NE(c, nullptr); + ASSERT_EQ(c->get_friendly_name(), expected_friendly_name); + + auto actual = reinterpret_cast(c->get_data_ptr())[0]; + ASSERT_EQ(16, actual); +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_previous_nms_to_nms_5.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_previous_nms_to_nms_5.cpp index a1120f41c419b4..4d97811202da5c 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_previous_nms_to_nms_5.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_previous_nms_to_nms_5.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_quantize_dequantize.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_quantize_dequantize.cpp index 9d107faa560471..b9497f79f280b9 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_quantize_dequantize.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_quantize_dequantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_reduce_to_pooling_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_reduce_to_pooling_test.cpp index b1a95064c81e4f..813fe6a7dbf182 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_reduce_to_pooling_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_reduce_to_pooling_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_scatter_elements_to_scatter_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_scatter_elements_to_scatter_test.cpp index 24d5c185f48d93..d896158ac3f11f 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_scatter_elements_to_scatter_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_scatter_elements_to_scatter_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_sequences_to_sequences_ie_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_sequences_to_sequences_ie_test.cpp index ca79f3931ddafb..30e69d7f7b72ca 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_sequences_to_sequences_ie_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_sequences_to_sequences_ie_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_shapeof3.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_shapeof3.cpp index 0e2bae5567f28d..549d4a94941def 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_shapeof3.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_shapeof3.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_shuffle_channels3_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_shuffle_channels3_test.cpp index dc8fbf1bfafb98..6dbfd73db8efd6 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_shuffle_channels3_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_shuffle_channels3_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_strided_slice_to_crop_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_strided_slice_to_crop_test.cpp index 8f5d414f07f095..be5560f367ed94 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_strided_slice_to_crop_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_strided_slice_to_crop_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_ti_to_sequences_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_ti_to_sequences_test.cpp index a60a6b975af70c..26fff36c921649 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_ti_to_sequences_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_ti_to_sequences_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_tile_to_legacy.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_tile_to_legacy.cpp index 8cb04edde93295..d18bd20917cb69 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_tile_to_legacy.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_tile_to_legacy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_topk3_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_topk3_test.cpp index 1447472c655ea0..ec33d8f89eba49 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_topk3_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_topk3_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/convert_topk_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/convert_topk_test.cpp index 233a19c28ff565..1413ab991b83e4 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/convert_topk_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/convert_topk_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/depth_to_space_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/depth_to_space_fusion_test.cpp index 244a8568c52ab0..3475f88299341c 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/depth_to_space_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/depth_to_space_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/dilated_convolution_converter.cpp b/inference-engine/tests/functional/inference_engine/transformations/dilated_convolution_converter.cpp new file mode 100644 index 00000000000000..d52123b2639657 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/dilated_convolution_converter.cpp @@ -0,0 +1,101 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, DilatedConvolutionConverter) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 4, 10, 10}); + auto filters = std::make_shared(element::f32, Shape{1, 4, 3, 3}); + auto space_to_batch = std::make_shared(data, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 1, 1})); + auto conv = std::make_shared(space_to_batch, filters, + Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto batch_to_space = std::make_shared(conv, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 0, 0}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 3})); + f = std::make_shared(NodeVector{batch_to_space}, ParameterVector{data, filters}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, Shape{1, 4, 10, 10}); + auto filters = std::make_shared(element::f32, Shape{1, 4, 3, 3}); + auto conv = std::make_shared(data, filters, + Strides{1, 1}, CoordinateDiff{1, 1}, CoordinateDiff{-1, -2}, Strides{2, 2}, op::PadType::EXPLICIT); + f_ref = std::make_shared(NodeVector{conv}, ParameterVector{data, filters}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeDilatedConvolutionConverterNonZeroPadsForNC) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{1, 4, 10, 10}); + auto filters = std::make_shared(element::f32, Shape{1, 5, 3, 3}); + auto space_to_batch = std::make_shared(data, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 1, 1})); + auto conv = std::make_shared(space_to_batch, filters, + Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto batch_to_space = std::make_shared(conv, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 0, 0}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 3})); + f = std::make_shared(NodeVector{batch_to_space}, ParameterVector{data, filters}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, Shape{1, 4, 10, 10}); + auto filters = std::make_shared(element::f32, Shape{1, 5, 3, 3}); + auto space_to_batch = std::make_shared(data, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 1, 1})); + auto conv = std::make_shared(space_to_batch, filters, + Strides{1, 1}, CoordinateDiff{0, 0}, CoordinateDiff{0, 0}, Strides{1, 1}); + auto batch_to_space = std::make_shared(conv, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 0, 0}), + op::Constant::create(element::i64, Shape{4}, {0, 0, 2, 3})); + f_ref = std::make_shared(NodeVector{batch_to_space}, ParameterVector{data, filters}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/eliminate_unsqueeze_gather.cpp b/inference-engine/tests/functional/inference_engine/transformations/eliminate_unsqueeze_gather.cpp index 330557ddc58555..1733d7291dfd7c 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/eliminate_unsqueeze_gather.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/eliminate_unsqueeze_gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/fc_bias_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/fc_bias_fusion_test.cpp index 14f6c8b03bf5fd..ebe78956bf5c33 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/fc_bias_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/fc_bias_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/fq_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/fq_decomposition_test.cpp index 25e2bf481e4666..d5b49446232faf 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/fq_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/fq_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/fq_mul_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/fq_mul_fusion_test.cpp index 0fdbe68b58b6a7..920f2aa8954eb5 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/fq_mul_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/fq_mul_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -169,13 +169,6 @@ INSTANTIATE_TEST_CASE_P(FQOutputs_1D__multiplier_3D, FQMulFusion, ::testing::Values(ngraph::Shape{1, 3, 1}), ::testing::Values(ngraph::Shape{1, 3, 1}))); -INSTANTIATE_TEST_CASE_P(FQ_all_ones__multiplier_4D_with_channel, FQMulFusion, - ::testing::Combine(::testing::Values(ngraph::Shape{1, 1, 1, 1}), - ::testing::Values(ngraph::Shape{1, 1, 1, 1}), - ::testing::Values(ngraph::Shape{1, 1, 1, 1}), - ::testing::Values(ngraph::Shape{1, 64, 1, 1}), - ::testing::Values(ngraph::Shape{1, 64, 1, 1}))); - INSTANTIATE_TEST_CASE_P(FQInOUt_ones__multiplier_4D_with_channel, FQMulFusion, ::testing::Combine(::testing::Values(ngraph::Shape{1, 64, 3, 3}), ::testing::Values(ngraph::Shape{1, 1, 1, 1}), @@ -357,6 +350,40 @@ TEST(FQMulFusion_FQ_Mul_inputs, FQ_out_to_mul_input_2_param) { ASSERT_TRUE(res.first) << res.second; } +TEST(TransformationTests, FakeQuantizeMultiplyFusionNegative) { + const auto data = ngraph::opset4::Constant::create( + ngraph::element::Type_t::f32, ngraph::Shape{1, 300, 1}, {0.0f}); + const auto in_low = ngraph::opset4::Constant::create( + ngraph::element::Type_t::f32, ngraph::Shape{}, {-0.5f}); + const auto in_high = ngraph::opset4::Constant::create( + ngraph::element::Type_t::f32, ngraph::Shape{}, {0.5f}); + const auto out_low = ngraph::opset4::Constant::create( + ngraph::element::Type_t::f32, ngraph::Shape{}, {0.0f}); + // out_high is a parameter, which means it should not be constant folded + const auto out_high = + std::make_shared(ngraph::element::Type_t::f32, ngraph::Shape{}); + const auto fq = std::make_shared( + data, in_low, in_high, out_low, out_high, 42); + + const auto mul_value = ngraph::opset4::Constant::create( + ngraph::element::Type_t::f32, ngraph::Shape{1, 300, 16}, {3.14f}); + // and here the output of FQ is passed as the second input of Mul + const auto mul = std::make_shared(mul_value, fq); + + auto function = std::make_shared( + ngraph::OutputVector{mul}, ngraph::ParameterVector{out_high}); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + + manager.run_passes(function); + ASSERT_NO_THROW(check_rt_info(function)); + + ASSERT_EQ(function->get_output_shape(0), ngraph::Shape({1, 300, 16})); +} + + } // namespace } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/inference_engine/transformations/fq_reshape_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/fq_reshape_fusion.cpp index a6a15bed5eb130..5fe78681594042 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/fq_reshape_fusion.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/fq_reshape_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/gelu7_downgrade.cpp b/inference-engine/tests/functional/inference_engine/transformations/gelu7_downgrade.cpp new file mode 100644 index 00000000000000..c17a4fc39d21ad --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/gelu7_downgrade.cpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; + +TEST(TransformationTests, Gelu7Downgrade) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{1, 2, 3}); + auto gelu = std::make_shared(input, ngraph::op::GeluApproximationMode::ERF); + gelu->set_friendly_name("gelu7"); + + f = std::make_shared(ngraph::NodeVector{gelu}, ngraph::ParameterVector{input}); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{1, 2, 3}); + auto gelu = std::make_shared(input); + gelu->set_friendly_name("gelu7"); + + f_ref = std::make_shared(ngraph::NodeVector{gelu}, ngraph::ParameterVector{input}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; + + auto result_node_of_converted_f = f->get_output_op(0); + auto output_node = result_node_of_converted_f->input(0).get_source_output().get_node_shared_ptr(); + ASSERT_TRUE(output_node->get_friendly_name() == "gelu7") << "Transformation Gelu7Downgrade should keep output names.\n"; +} + diff --git a/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_decomposition_test.cpp index b2dfe6f5d99828..e084fce0a189ff 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_fusion_test.cpp index f2d36b43a5ae7c..8a9bbbd82cb6d3 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/hsigmoid_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/hswish_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/hswish_decomposition_test.cpp index e693ba8a4fa179..1ff40296ec3c18 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/hswish_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/hswish_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/hswish_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/hswish_fusion_test.cpp index ac8542b10a8057..ed73d064f46326 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/hswish_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/hswish_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/lin_op_sequence_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/lin_op_sequence_fusion_test.cpp index dcd9b39a75ca00..e307b41c06ad16 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/lin_op_sequence_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/lin_op_sequence_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/log_softmax_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/log_softmax_decomposition_test.cpp index 8b1b543c2397e9..59abba9d697c63 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/log_softmax_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/log_softmax_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/low_latency_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/low_latency_test.cpp index 17b5916c924a36..69cb89991a3ed7 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/low_latency_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/low_latency_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -357,3 +357,99 @@ TEST(TransformationTests, LowLatencyLSTMReshape) { auto res = compare_functions(f, f_ref); ASSERT_TRUE(res.first) << res.second; } + +TEST(TransformationTests, LowLatencyLSTM_Loop) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto X = std::make_shared(element::f32, Shape{1, 1, 16}); + auto H_init = std::make_shared(element::f32, Shape{1, 128}); + auto C_init = std::make_shared(element::f32, Shape{1, 128}); + + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto H_t = std::make_shared(element::f32, Shape{1, 128}); + auto C_t = std::make_shared(element::f32, Shape{1, 128}); + + // Body + auto axis = ngraph::opset6::Constant::create(ngraph::element::i64, ngraph::Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(512 * 16, 0); + auto r_val = std::vector(512 * 128, 0); + auto b_val = std::vector(512, 0); + auto W = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{512, 16}, w_val); + auto R = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{512, 128}, r_val); + auto B = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{512}, b_val); + + auto lstm_cell = std::make_shared(squeeze, H_t, C_t, W, R, B, 128); + auto res_1 = std::make_shared(lstm_cell->output(0)); + auto unsqueeze = std::make_shared(lstm_cell->output(0), axis); + auto res_2 = std::make_shared(unsqueeze); + auto res_3 = std::make_shared(lstm_cell->output(1)); + auto body_condition = std::make_shared( + ngraph::element::boolean, ngraph::Shape{1}, false); + auto body = std::make_shared(OutputVector{res_1, res_2, res_3, body_condition}, + ParameterVector{Xi, H_t, C_t}); + + auto trip_count = + std::make_shared(ngraph::element::i64, ngraph::Shape{}, 10); + auto exec_condition = + std::make_shared(ngraph::element::boolean, ngraph::Shape{}, true); + auto loop = std::make_shared(trip_count, exec_condition); + loop->set_special_body_ports({-1, 3}); + loop->set_function(body); + loop->set_friendly_name("LSTMLoop"); + + loop->set_merged_input(C_t, C_init, res_3); + loop->set_sliced_input(Xi, X, 0, 1, 1, -1, 0); + loop->set_merged_input(H_t, H_init, res_1); + + auto out0 = loop->get_iter_value(res_1, -1); + auto out1 = loop->get_concatenated_slices(res_2, 0, 1, 1, -1, 0); + + auto res_ti_1 = std::make_shared(loop->output(1)); + auto res_ti_2 = std::make_shared(loop->output(0)); + f = std::make_shared(ngraph::NodeVector{res_ti_1, res_ti_2}, + ngraph::ParameterVector{X, H_init, C_init}); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + } + { + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto H_t = std::make_shared(element::f32, Shape{1, 128}); + auto C_t = std::make_shared(element::f32, Shape{1, 128}); + + const std::string variable_name_H("LSTMTensorIterator/variable0"); + const std::string variable_name_C("LSTMTensorIterator/variable1"); + auto variable_H = std::make_shared(VariableInfo{PartialShape::dynamic(), element::dynamic, variable_name_H}); + auto variable_C = std::make_shared(VariableInfo{PartialShape::dynamic(), element::dynamic, variable_name_C}); + auto read_value_H = std::make_shared(H_t, variable_H); + auto read_value_C = std::make_shared(C_t, variable_C); + // Body + auto axis = ngraph::opset6::Constant::create(ngraph::element::i64, ngraph::Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(512 * 16, 0); + auto r_val = std::vector(512 * 128, 0); + auto b_val = std::vector(512, 0); + auto W = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{512, 16}, w_val); + auto R = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{512, 128}, r_val); + auto B = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{512}, b_val); + + auto lstm_cell = std::make_shared(squeeze, read_value_H, read_value_C, W, R, B, 128); + auto assign_H = std::make_shared(lstm_cell->output(0), variable_H); + auto assign_C = std::make_shared(lstm_cell->output(1), variable_C); + auto unsqueeze = std::make_shared(lstm_cell->output(0), axis); + auto res_2 = std::make_shared(unsqueeze); + auto res_1 = std::make_shared(lstm_cell->output(0)); + f_ref = std::make_shared(OutputVector{res_1, res_2}, ParameterVector{Xi, H_t, C_t}); + f_ref->add_sinks({assign_C, assign_H}); + assign_H->add_control_dependency(read_value_H); + assign_C->add_control_dependency(read_value_C); + } + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/mish_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/mish_fusion_test.cpp index 3266a51a7f9c38..a0ebd1806ddf44 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/mish_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/mish_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/mul_add_conversion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/mul_add_conversion_test.cpp index b6cc69bea12021..3e2cb156b5d84c 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/mul_add_conversion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/mul_add_conversion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/mul_fake_quantize_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/mul_fake_quantize_fusion.cpp new file mode 100644 index 00000000000000..b8133abffc2241 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/mul_fake_quantize_fusion.cpp @@ -0,0 +1,299 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + + +TEST(TransformationTests, MulFakeQuantizeFusionPositiveConstant) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto mul_const = opset5::Constant::create(element::f32, Shape{1}, {2}); + auto mul = std::make_shared(data, mul_const); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {1}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {0, 0, 0}); + auto output_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0.5}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto output_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {0, 0, 0}); + auto output_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MulFakeQuantizeFusionConstantOnFirstInput) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto mul_const = opset5::Constant::create(element::f32, Shape{1}, {2}); + auto mul = std::make_shared(mul_const, data); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {1}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {0, 0, 0}); + auto output_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0.5}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto output_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {0, 0, 0}); + auto output_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MulFakeQuantizeFusionReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto mul_const = opset5::Constant::create(element::f32, Shape{3, 1, 1}, {2, 4, 5}); + auto mul = std::make_shared(data, mul_const); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {1}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {0.5, 0.25, 0.2}); + auto input_high = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {10, 5, 4}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MulFakeQuantizeFusionConstantAllNegative) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto mul_const = opset5::Constant::create(element::f32, Shape{1}, {-2}); + auto mul = std::make_shared(data, mul_const); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {1}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-10, -10, -10}); + auto output_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {-0.5}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {-10}); + auto output_low = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto output_high = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-10, -10, -10}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MulFakeQuantizeFusionConstantSomeNegative) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto mul_const = opset5::Constant::create(element::f32, Shape{3, 1, 1}, {2, 1, -2}); + auto mul = std::make_shared(data, mul_const); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {1}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-10, -10, -10}); + auto output_high = opset5::Constant::create(element::f32, Shape{1}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 20); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto input_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {0.5f, 1.0f, -0.5f}); + auto input_high = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {10.0f, 20.0f, -10.0f}); + auto output_low = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {-10.0f, -10.0f, 10.0f}); + auto output_high = opset5::Constant::create(element::f32, Shape{1, 3, 1, 1}, {10.0f, 10.0f, -10.0f}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 20); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MulFakeQuantizeFusionConstantSomeNegativeF16) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f16, data_shape); + auto mul_const = opset5::Constant::create(element::f16, Shape{3, 1, 1}, {2, 1, -2}); + auto mul = std::make_shared(data, mul_const); + auto input_low = opset5::Constant::create(element::f16, Shape{1}, {1}); + auto input_high = opset5::Constant::create(element::f16, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f16, Shape{1, 3, 1, 1}, {-10, -10, -10}); + auto output_high = opset5::Constant::create(element::f16, Shape{1}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 20); + f = std::make_shared(NodeVector{fq}, ParameterVector{data}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f16, data_shape); + auto input_low = opset5::Constant::create(element::f16, Shape{1, 3, 1, 1}, {0.5f, 1.0f, -0.5f}); + auto input_high = opset5::Constant::create(element::f16, Shape{1, 3, 1, 1}, {10.0f, 20.0f, -10.0f}); + auto output_low = opset5::Constant::create(element::f16, Shape{1, 3, 1, 1}, {-10.0f, -10.0f, 10.0f}); + auto output_high = opset5::Constant::create(element::f16, Shape{1, 3, 1, 1}, {10.0f, 10.0f, -10.0f}); + auto fq = std::make_shared(data, input_low, + input_high, output_low, + output_high, 20); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeMulFakeQuantizeFusionNotAConstant) { + std::shared_ptr f(nullptr), f_ref(nullptr); + + Shape data_shape{1, 3, 14, 14}; + { + auto data = std::make_shared(element::f32, data_shape); + auto mul_2nd_input = std::make_shared(element::f32, Shape{1}); + auto mul = std::make_shared(data, mul_2nd_input); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 11); + f = std::make_shared(NodeVector{fq}, ParameterVector{data, mul_2nd_input}); + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, data_shape); + auto mul_2nd_input = std::make_shared(element::f32, Shape{1}); + auto mul = std::make_shared(data, mul_2nd_input); + auto input_low = opset5::Constant::create(element::f32, Shape{1}, {0}); + auto input_high = opset5::Constant::create(element::f32, Shape{1}, {20}); + auto output_low = opset5::Constant::create(element::f32, Shape{}, {0}); + auto output_high = opset5::Constant::create(element::f32, Shape{}, {10}); + auto fq = std::make_shared(mul, input_low, + input_high, output_low, + output_high, 11); + f_ref = std::make_shared(NodeVector{fq}, ParameterVector{data, mul_2nd_input}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/mvn6_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/mvn6_decomposition_test.cpp index a98f14d5ed2fae..ce8c30ab0caf65 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/mvn6_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/mvn6_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -69,8 +69,9 @@ TEST(TransformationTests, MVN6Decomposition_Inside_Sqrt) { auto mean = std::make_shared(input0, axes_const, true); auto mean_normalization = std::make_shared(input0, mean); - auto mul = std::make_shared(mean_normalization, mean_normalization); - auto mean2 = std::make_shared(mul, axes_const, true); + auto sqr_const = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 1 }, { 2 }); + auto sqr = std::make_shared(mean_normalization, sqr_const); + auto mean2 = std::make_shared(sqr, axes_const, true); auto eps_node = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 1 }, { 1e-5 }); @@ -107,8 +108,9 @@ TEST(TransformationTests, MVN6Decomposition_Outside_Sqrt) { auto mean = std::make_shared(input0, axes_const, true); auto mean_normalization = std::make_shared(input0, mean); - auto mul = std::make_shared(mean_normalization, mean_normalization); - auto mean2 = std::make_shared(mul, axes_const, true); + auto sqr_const = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 1 }, { 2 }); + auto sqr = std::make_shared(mean_normalization, sqr_const); + auto mean2 = std::make_shared(sqr, axes_const, true); auto eps_node = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 1 }, { 1e-5 }); diff --git a/inference-engine/tests/functional/inference_engine/transformations/mvn_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/mvn_fusion_test.cpp new file mode 100644 index 00000000000000..21b2b695454449 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/mvn_fusion_test.cpp @@ -0,0 +1,421 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; + +TEST(TransformationTests, MVNFusionTestOutside) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto mean2_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean2 = std::make_shared(input, mean2_axes); + auto sub2 = std::make_shared(input, mean2); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub2, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(mean3, const_0_5); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(power_sqrt, eps); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(add_eps, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::OUTSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestReuseSub) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub1, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(mean3, const_0_5); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(power_sqrt, eps); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(add_eps, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::OUTSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestWithConvert) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto cast = std::make_shared(sub1, ngraph::element::f32); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(cast, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(mean3, const_0_5); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(power_sqrt, eps); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(add_eps, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::OUTSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestSqrt) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub1, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto power_sqrt = std::make_shared(mean3); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(power_sqrt, eps); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(add_eps, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::OUTSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestAltDiv) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub1, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(mean3, const_0_5); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(power_sqrt, eps); + auto div = std::make_shared(sub1, add_eps); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::OUTSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestInsideSqrt) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto mean2_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean2 = std::make_shared(input, mean2_axes); + auto sub2 = std::make_shared(input, mean2); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub2, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(mean3, eps); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(add_eps, const_0_5); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(power_sqrt, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::INSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestReuseSubInsideSqrt) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub1, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(mean3, eps); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(add_eps, const_0_5); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(power_sqrt, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::INSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestWithConvertInsideSqrt) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto cast = std::make_shared(sub1, ngraph::element::f32); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(cast, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(mean3, eps); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(add_eps, const_0_5); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(power_sqrt, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::INSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestSqrtInsideSqrt) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub1, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(mean3, eps); + auto power_sqrt = std::make_shared(add_eps); + auto const_neg_1 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { -1 }); + auto power_div = std::make_shared(power_sqrt, const_neg_1); + auto div = std::make_shared(sub1, power_div); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::INSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, MVNFusionTestAltDivInsideSqrt) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto mean1_axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean1 = std::make_shared(input, mean1_axes); + auto sub1 = std::make_shared(input, mean1); + auto const_2 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 2 }); + auto power_sqr = std::make_shared(sub1, const_2); + auto mean3_axes = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mean3 = std::make_shared(power_sqr, mean3_axes); + auto eps = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 1e-9 }); + auto add_eps = std::make_shared(mean3, eps); + auto const_0_5 = ngraph::opset6::Constant::create(ngraph::element::f32, ngraph::Shape{}, { 0.5 }); + auto power_sqrt = std::make_shared(add_eps, const_0_5); + auto div = std::make_shared(sub1, power_sqrt); + + f = std::make_shared(ngraph::NodeVector{ div }, ngraph::ParameterVector{ input }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto input = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 224, 224 }); + auto axes = ngraph::opset6::Constant::create(ngraph::element::i32, ngraph::Shape{ 3 }, { 1, 2, 3 }); + auto mvn = std::make_shared(input, axes, true, 1e-9, ngraph::op::MVNEpsMode::INSIDE_SQRT); + + f_ref = std::make_shared(ngraph::NodeVector{ mvn }, ngraph::ParameterVector{ input }); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/ngraph_1d_ops_reshape_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/ngraph_1d_ops_reshape_test.cpp index 3cf7306c1722bc..8e64d2232bc29a 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/ngraph_1d_ops_reshape_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/ngraph_1d_ops_reshape_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/ngraph_depth_to_space_transform_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/ngraph_depth_to_space_transform_test.cpp index d823b1d6f2c07b..2d6cb30c0c5657 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/ngraph_depth_to_space_transform_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/ngraph_depth_to_space_transform_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/ngraph_fq_transpose_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/ngraph_fq_transpose_test.cpp index e6ce532a07d06c..e767a4a26faaad 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/ngraph_fq_transpose_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/ngraph_fq_transpose_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/ngraph_mode_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/ngraph_mode_decomposition_test.cpp index 1db87ec947484c..b94406df6809c4 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/ngraph_mode_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/ngraph_mode_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/nop_elimination.cpp b/inference-engine/tests/functional/inference_engine/transformations/nop_elimination.cpp index 0835fecbdb2b52..e5afcc844546cf 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/nop_elimination.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/nop_elimination.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/normalize_l2_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/normalize_l2_fusion_test.cpp index 638974990e76fe..822ff62cfc173a 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/normalize_l2_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/normalize_l2_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/optimize_strided_slice_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/optimize_strided_slice_test.cpp index 5d01d5dae3e6ef..b8fc20da5323e5 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/optimize_strided_slice_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/optimize_strided_slice_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/pad_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/pad_fusion.cpp index 0bab6ff8140e3e..ea96555ea010a5 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/pad_fusion.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/pad_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/primitives_priority_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/primitives_priority_test.cpp index 9ae1becf0a37b8..070a7ef0127b56 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/primitives_priority_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/primitives_priority_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/pruning_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/pruning_test.cpp new file mode 100644 index 00000000000000..9464fa34f601f0 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/pruning_test.cpp @@ -0,0 +1,223 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +using namespace testing; +using namespace ngraph; + +void compare_masks(const Mask & mask, const Mask & ref_mask) { + ASSERT_EQ(mask.size(), ref_mask.size()); + ASSERT_EQ(mask, ref_mask); +} + +Output create_constant_with_zeros(const Shape & shape, const Mask & mask) { + std::vector values(shape_size(shape), 1); + for (size_t dim = 0; dim < mask.size(); ++dim) { + for (const auto & dim_value : mask.at(dim)) { + Coordinate coord_begin(shape.size(), 0); + coord_begin[dim] = dim_value; + + Coordinate coord_end(shape); + coord_end[dim] = dim_value + 1; + + CoordinateTransform iter(shape, coord_begin, coord_end); + for (const Coordinate & coord : iter) { + values[iter.index(coord)] = 0; + } + } + } + return std::make_shared(element::f32, shape, values); +} + +TEST(TransformationTests, InitMasksOI) { + Shape weights_shape{6, 3, 3, 3}; + auto weights = opset5::Constant::create(element::f32, weights_shape, {0}); + pass::InitConstMask({0, 1}).apply(weights); + + compare_masks(*getMask(weights->output(0)), {{0, 1, 2, 3, 4, 5}, {0, 1, 2}, {}, {}}); +} + +TEST(TransformationTests, InitMasksOutputChannel) { + Shape input_shape{1, 3, 64, 64}; + Shape weights_shape{6, 3, 3, 3}; + + std::vector values(shape_size(weights_shape), 1); + CoordinateTransform iter(weights_shape, {0, 1, 0, 0}, {6, 2, 3, 3}); + for (const Coordinate & coord : iter) { + values[iter.index(coord)] = 0; + } + + auto weights = std::make_shared(element::f32, weights_shape, values); + pass::InitConstMask({1}).apply(weights); + + compare_masks(*getMask(weights->output(0)), {{}, {1}, {}, {}}); +} + +TEST(TransformationTests, InitMasksNegative) { + Shape weights_shape{6, 3, 3, 3}; + auto weights = opset5::Constant::create(element::f32, weights_shape, {0.5}); + pass::InitConstMask({0, 1, 2, 3}).apply(weights); + + compare_masks(*getMask(weights->output(0)), {{}, {}, {}, {}}); +} + +TEST(TransformationTests, PropagateMasksNegative) { + Shape input_shape{1, 3, 64, 64}; + Shape weights_shape{6, 3, 3, 3}; + auto input = std::make_shared(element::f32, input_shape); + auto weights = opset5::Constant::create(element::f32, weights_shape, {0}); + auto conv = std::make_shared(input, weights, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + auto f = std::make_shared(NodeVector{conv}, ParameterVector{input}); + + pass::Manager m; + m.register_pass(); + m.run_passes(f); + + compare_masks(*getMask(weights->output(0)), {{}, {}, {}, {}}); + compare_masks(*getMask(conv->output(0)), {{}, {}, {}, {}}); +} + +TEST(TransformationTests, PropagateMasksBasic) { + Shape input_shape{1, 3, 64, 64}; + Shape weights_shape{6, 3, 3, 3}; + Shape weights_shape2{6, 6, 3, 3}; + auto input = std::make_shared(element::f32, input_shape); + auto weights = opset5::Constant::create(element::f32, weights_shape, {0}); + auto conv = std::make_shared(input, weights, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + auto relu = std::make_shared(conv); + + auto sub_const = create_constant_with_zeros(Shape{6, 1, 1}, {{1, 2, 3}, {}, {}}); + auto sub = std::make_shared(relu, sub_const); + + auto mul_const = create_constant_with_zeros(Shape{6, 1, 1}, {{2}, {}, {}}); + auto mul = std::make_shared(sub, mul_const); + + auto weights2 = opset5::Constant::create(element::f32, weights_shape2, {0}); + auto conv2 = std::make_shared(mul, weights2, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + auto f = std::make_shared(NodeVector{conv2}, ParameterVector{input}); + + pass::Manager m; + m.register_pass(); + m.run_passes(f); + + compare_masks(*getMask(weights->output(0)), Mask({{2}, {}, {}, {}})); + compare_masks(*getMask(conv->output(0)), Mask({{}, {2}, {}, {}})); + compare_masks(*getMask(relu->output(0)), Mask({{}, {2}, {}, {}})); + compare_masks(*getMask(sub_const), Mask({{2}, {}, {}})); + compare_masks(*getMask(mul_const), Mask({{2}, {}, {}})); + compare_masks(*getMask(weights2->output(0)), Mask({{}, {2}, {}, {}})); + compare_masks(*getMask(conv2->output(0)), Mask({{}, {}, {}, {}})); +} + +TEST(TransformationTests, PropagateMasksEmpty) { + Shape input_shape{1, 3, 64, 64}; + Shape weights_shape{6, 3, 3, 3}; + Shape weights_shape2{6, 6, 3, 3}; + auto input = std::make_shared(element::f32, input_shape); + auto weights = opset5::Constant::create(element::f32, weights_shape, {1.}); + auto conv = std::make_shared(input, weights, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + auto relu = std::make_shared(conv); + + auto sub_const = create_constant_with_zeros(Shape{6, 1, 1}, {{1, 2, 3}, {}, {}}); + auto sub = std::make_shared(relu, sub_const); + + auto mul_const = create_constant_with_zeros(Shape{6, 1, 1}, {{1, 2}, {}, {}}); + auto mul = std::make_shared(sub, mul_const); + + auto weights2 = opset5::Constant::create(element::f32, weights_shape2, {0}); + auto conv2 = std::make_shared(mul, weights2, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + auto f = std::make_shared(NodeVector{conv2}, ParameterVector{input}); + + pass::Manager m; + m.register_pass(); + m.run_passes(f); + + compare_masks(*getMask(weights->output(0)), Mask({{}, {}, {}, {}})); + compare_masks(*getMask(conv->output(0)), Mask({{}, {}, {}, {}})); + compare_masks(*getMask(relu->output(0)), Mask({{}, {}, {}, {}})); + compare_masks(*getMask(sub_const), Mask({{}, {}, {}})); + compare_masks(*getMask(mul_const), Mask({{}, {}, {}})); + compare_masks(*getMask(weights2->output(0)), Mask({{}, {}, {}, {}})); + compare_masks(*getMask(conv2->output(0)), Mask({{}, {}, {}, {}})); +} + +TEST(TransformationTests, PropagateMasksHardDependencies) { + Shape input_shape{1, 3, 3, 3}; + + auto input1 = std::make_shared(element::f32, input_shape); + input1->set_friendly_name("input1"); + + Shape weights1_shape{6, 3, 3, 3}; + auto weights1 = create_constant_with_zeros(weights1_shape, {{1, 2, 3}, {}, {}, {}}); + weights1.get_node_shared_ptr()->set_friendly_name("weights1"); + + auto conv1 = std::make_shared(input1, weights1, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + conv1->set_friendly_name("conv1"); + + auto relu = std::make_shared(conv1); + relu->set_friendly_name("relu"); + + auto input2 = std::make_shared(element::f32, input_shape); + input2->set_friendly_name("input2"); + + Shape weights2_shape{6, 3, 3, 3}; + auto weights2 = create_constant_with_zeros(weights2_shape, {{2, 3}, {}, {}, {}}); + weights2.get_node_shared_ptr()->set_friendly_name("weights2"); + + auto conv2 = std::make_shared(input2, weights2, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + conv2->set_friendly_name("conv2"); + + auto add1 = std::make_shared(conv2, conv1); + add1->set_friendly_name("add1"); + + auto reshape = std::make_shared(add1, opset5::Constant::create(element::i64, Shape{2}, {1, 6}), true); + reshape->set_friendly_name("reshape"); + + auto matmul = std::make_shared(reshape, opset5::Constant::create(element::f32, Shape{6, 100}, {1.})); + matmul->set_friendly_name("matmul"); + + auto add2 = std::make_shared(conv2, create_constant_with_zeros({6, 1, 1}, {{2}, {}, {}})); + add2->set_friendly_name("add2"); + + Shape weights_shape3{6, 6, 1, 1}; + auto weights3 = opset5::Constant::create(element::f32, weights_shape3, {0}); + weights3->set_friendly_name("weights3"); + + auto conv3 = std::make_shared(add2, weights3, Strides(2, 1), + CoordinateDiff(2, 0), CoordinateDiff(2, 0), Strides(2, 1)); + conv3->set_friendly_name("conv3"); + + auto f = std::make_shared(NodeVector{matmul, conv3}, ParameterVector{input1, input2}); + + pass::Manager m; + m.register_pass(); + m.run_passes(f); + + // TODO: add checks after MatMul/Reshape/Pooling mask propagation is ready +// compare_masks(*getMask(weights), Mask({{0, 1, 2, 3, 4, 5}, {}, {}, {}})); +// compare_masks(*getMask(conv), Mask({{}, {0, 1, 2, 3, 4, 5}, {}, {}})); +// compare_masks(*getMask(relu), Mask({{}, {0, 1, 2, 3, 4, 5}, {}, {}})); +// compare_masks(*getMask(weights2), Mask({{}, {0, 1, 2, 3, 4, 5}, {}, {}})); +// compare_masks(*getMask(conv2), Mask({{}, {}, {}, {}})); +} \ No newline at end of file diff --git a/inference-engine/tests/functional/inference_engine/transformations/reduce_l1_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/reduce_l1_decomposition_test.cpp index 239a737e787550..c9a77122f20600 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/reduce_l1_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/reduce_l1_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/reduce_l2_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/reduce_l2_decomposition_test.cpp index 38e968eae4f183..2666a5d335c9dc 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/reduce_l2_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/reduce_l2_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/relu_fake_quantize_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/relu_fake_quantize_fusion.cpp index b7e643fa994bbd..aa90d4e4ebfb49 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/relu_fake_quantize_fusion.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/relu_fake_quantize_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/reshape_fc_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/reshape_fc_fusion_test.cpp index e55f8277766bd0..683b89830ea5c4 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/reshape_fc_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/reshape_fc_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/simplify_ctc_greedy_decoder_seq_len_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/simplify_ctc_greedy_decoder_seq_len_test.cpp new file mode 100644 index 00000000000000..4acc8332ddf4e6 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/simplify_ctc_greedy_decoder_seq_len_test.cpp @@ -0,0 +1,560 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + + +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, SimplifyCTCGreedyDecoderSeqLenTest) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 7 }); + auto seq_len = std::make_shared(ngraph::element::i64, ngraph::Shape{ 1 }); + + auto decoder_v6 = std::make_shared(data, seq_len, true); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data, seq_len }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data1 = std::make_shared(ngraph::element::f32, ngraph::Shape{ 1, 3, 7 }); + auto seq_len1 = std::make_shared(ngraph::element::i64, ngraph::Shape{ 1 }); + + element::Type data_type = data1->get_element_type(); + element::Type seq_len_type = seq_len1->get_element_type(); + element::Type ci_type = element::i32; + element::Type sl_type = element::i32; + auto transpose = std::make_shared(data1, + ngraph::opset6::Constant::create(element::i32, + Shape({3}), {1, 0, 2})); + auto data_shape = std::make_shared(data1); + auto axisT = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {1}); + auto T = std::make_shared(data_shape, indexT, axisT); + + auto axisN = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexN = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto N = std::make_shared(data_shape, indexN, axisN); + + auto start = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto step = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto plus1 = opset6::Constant::create(element::i64, Shape{1}, {1}); + auto plusT = std::make_shared(T, plus1); + auto const_plusT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto plusT_scalar = std::make_shared(plusT, const_plusT); + auto range1T = std::make_shared(start, plusT_scalar, step, seq_len_type); + + auto mask_shape = std::make_shared( + OutputVector{T->output(0), N->output(0)}, 0); + + auto upper_bounds = std::make_shared( + seq_len1, mask_shape->output(0)); + auto transpose_upper_bounds = std::make_shared(upper_bounds->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto bool_seq_mask = std::make_shared(transpose_upper_bounds->output(0), + range1T->output(0)); + + auto mask_val_true = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto mask_val_false = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto seq_mask = std::make_shared(bool_seq_mask, mask_val_true, mask_val_false); + auto transpose_seq_mask = std::make_shared(seq_mask->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto transpose_seq_mask_f32 = std::make_shared(transpose_seq_mask->output(0), data_type); + auto simplified_decoder = std::make_shared(transpose, + transpose_seq_mask_f32->output(0), + true); + + auto squeeze2_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {3}); + auto squeeze2_output_f = std::make_shared(simplified_decoder->output(0), squeeze2_axis); + auto squeeze1_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {2}); + auto squeeze1_output_f = std::make_shared(squeeze2_output_f->output(0), squeeze1_axis); + + auto output_i = std::make_shared(squeeze1_output_f->output(0), ci_type); + auto minus1 = opset6::Constant::create(ci_type, Shape{}, {-1}); + auto where_equal_minus1 = std::make_shared(output_i, minus1); + + auto seq_mask_const0 = opset6::Constant::create(ci_type, Shape{1}, {0}); + auto seq_mask_const1 = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_mask = std::make_shared(where_equal_minus1, seq_mask_const0, seq_mask_const1); + auto seq_mask_axis = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_len = std::make_shared(output_seq_mask, seq_mask_axis); + auto output_seq_len_i = std::make_shared(output_seq_len->output(0), sl_type); + + f_ref = std::make_shared(ngraph::NodeVector{ output_i, output_seq_len_i }, ngraph::ParameterVector{ data1, seq_len1 }); + } + + auto res = compare_functions(f, f_ref, true, false, false, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, SimplifyCTCGreedyDecoderSeqLenDynamicInputShapeTest) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(ngraph::element::f16, ngraph::PartialShape::dynamic()); + auto seq_len = std::make_shared(ngraph::element::i32, ngraph::Shape{ 1 }); + + auto decoder_v6 = std::make_shared(data, seq_len, true, element::i64, element::i32); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data, seq_len }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data1 = std::make_shared(ngraph::element::f16, ngraph::PartialShape::dynamic()); + auto seq_len1 = std::make_shared(ngraph::element::i32, ngraph::Shape{ 1 }); + + element::Type data_type = data1->get_element_type(); + element::Type seq_len_type = seq_len1->get_element_type(); + element::Type ci_type = element::i64; + element::Type sl_type = element::i32; + auto transpose = std::make_shared(data1, + ngraph::opset6::Constant::create(element::i32, + Shape({3}), {1, 0, 2})); + auto data_shape = std::make_shared(data1); + auto axisT = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {1}); + auto T = std::make_shared(data_shape, indexT, axisT); + + auto axisN = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexN = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto N = std::make_shared(data_shape, indexN, axisN); + + auto start = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto step = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto plus1 = opset6::Constant::create(element::i64, Shape{1}, {1}); + auto plusT = std::make_shared(T, plus1); + auto const_plusT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto plusT_scalar = std::make_shared(plusT, const_plusT); + auto range1T = std::make_shared(start, plusT_scalar, step, seq_len_type); + + auto mask_shape = std::make_shared( + OutputVector{T->output(0), N->output(0)}, 0); + + auto upper_bounds = std::make_shared( + seq_len1, mask_shape->output(0)); + auto transpose_upper_bounds = std::make_shared(upper_bounds->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto bool_seq_mask = std::make_shared(transpose_upper_bounds->output(0), + range1T->output(0)); + + auto mask_val_true = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto mask_val_false = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto seq_mask = std::make_shared(bool_seq_mask, mask_val_true, mask_val_false); + auto transpose_seq_mask = std::make_shared(seq_mask->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto transpose_seq_mask_f = std::make_shared(transpose_seq_mask->output(0), data_type); + auto simplified_decoder = std::make_shared(transpose, + transpose_seq_mask_f->output(0), + true); + + auto squeeze2_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {3}); + auto squeeze2_output_f = std::make_shared(simplified_decoder->output(0), squeeze2_axis); + auto squeeze1_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {2}); + auto squeeze1_output_f = std::make_shared(squeeze2_output_f->output(0), squeeze1_axis); + + auto output_i = std::make_shared(squeeze1_output_f->output(0), ci_type); + auto minus1 = opset6::Constant::create(ci_type, Shape{}, {-1}); + auto where_equal_minus1 = std::make_shared(output_i, minus1); + + auto seq_mask_const0 = opset6::Constant::create(ci_type, Shape{1}, {0}); + auto seq_mask_const1 = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_mask = std::make_shared(where_equal_minus1, seq_mask_const0, seq_mask_const1); + auto seq_mask_axis = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_len = std::make_shared(output_seq_mask, seq_mask_axis); + auto output_seq_len_i = std::make_shared(output_seq_len->output(0), sl_type); + + f_ref = std::make_shared(ngraph::NodeVector{ output_i, output_seq_len_i }, ngraph::ParameterVector{ data1, seq_len1 }); + } + + auto res = compare_functions(f, f_ref, true, false, false, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, SimplifyCTCGreedyDecoderSeqLenDynamicBatchTest) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(ngraph::element::f32, ngraph::PartialShape{Dimension::dynamic(), 3, 7}); + auto seq_len = std::make_shared(ngraph::element::i32, ngraph::PartialShape{Dimension::dynamic()}); + + auto decoder_v6 = std::make_shared(data, seq_len, true, element::i32, element::i64); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data, seq_len }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data1 = std::make_shared(ngraph::element::f32, ngraph::PartialShape{Dimension::dynamic(), 3, 7}); + auto seq_len1 = std::make_shared(ngraph::element::i32, ngraph::PartialShape{Dimension::dynamic()}); + + element::Type data_type = data1->get_element_type(); + element::Type seq_len_type = seq_len1->get_element_type(); + element::Type ci_type = element::i32; + element::Type sl_type = element::i64; + auto transpose = std::make_shared(data1, + ngraph::opset6::Constant::create(element::i32, + Shape({3}), {1, 0, 2})); + auto data_shape = std::make_shared(data1); + auto axisT = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {1}); + auto T = std::make_shared(data_shape, indexT, axisT); + + auto axisN = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexN = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto N = std::make_shared(data_shape, indexN, axisN); + + auto start = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto step = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto plus1 = opset6::Constant::create(element::i64, Shape{1}, {1}); + auto plusT = std::make_shared(T, plus1); + auto const_plusT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto plusT_scalar = std::make_shared(plusT, const_plusT); + auto range1T = std::make_shared(start, plusT_scalar, step, seq_len_type); + + auto mask_shape = std::make_shared( + OutputVector{T->output(0), N->output(0)}, 0); + + auto upper_bounds = std::make_shared( + seq_len1, mask_shape->output(0)); + auto transpose_upper_bounds = std::make_shared(upper_bounds->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto bool_seq_mask = std::make_shared(transpose_upper_bounds->output(0), + range1T->output(0)); + + auto mask_val_true = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto mask_val_false = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto seq_mask = std::make_shared(bool_seq_mask, mask_val_true, mask_val_false); + auto transpose_seq_mask = std::make_shared(seq_mask->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto transpose_seq_mask_f = std::make_shared(transpose_seq_mask->output(0), data_type); + auto simplified_decoder = std::make_shared(transpose, + transpose_seq_mask_f->output(0), + true); + + auto squeeze2_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {3}); + auto squeeze2_output_f = std::make_shared(simplified_decoder->output(0), squeeze2_axis); + auto squeeze1_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {2}); + auto squeeze1_output_f = std::make_shared(squeeze2_output_f->output(0), squeeze1_axis); + + auto output_i = std::make_shared(squeeze1_output_f->output(0), ci_type); + auto minus1 = opset6::Constant::create(ci_type, Shape{}, {-1}); + auto where_equal_minus1 = std::make_shared(output_i, minus1); + + auto seq_mask_const0 = opset6::Constant::create(ci_type, Shape{1}, {0}); + auto seq_mask_const1 = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_mask = std::make_shared(where_equal_minus1, seq_mask_const0, seq_mask_const1); + auto seq_mask_axis = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_len = std::make_shared(output_seq_mask, seq_mask_axis); + auto output_seq_len_i = std::make_shared(output_seq_len->output(0), sl_type); + + f_ref = std::make_shared(ngraph::NodeVector{ output_i, output_seq_len_i }, ngraph::ParameterVector{ data1, seq_len1 }); + } + + auto res = compare_functions(f, f_ref, true, false, false, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, SimplifyCTCGreedyDecoderSeqLenDynamicSeqLenTest) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + + auto decoder_v6 = std::make_shared(data, seq_len, true, ngraph::element::i64, ngraph::element::i64); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data, seq_len }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data1 = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len1 = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + + element::Type data_type = data1->get_element_type(); + element::Type seq_len_type = seq_len1->get_element_type(); + element::Type ci_type = element::i64; + element::Type sl_type = element::i64; + auto transpose = std::make_shared(data1, + ngraph::opset6::Constant::create(element::i32, + Shape({3}), {1, 0, 2})); + auto data_shape = std::make_shared(data1); + auto axisT = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {1}); + auto T = std::make_shared(data_shape, indexT, axisT); + + auto axisN = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexN = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto N = std::make_shared(data_shape, indexN, axisN); + + auto start = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto step = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto plus1 = opset6::Constant::create(element::i64, Shape{1}, {1}); + auto plusT = std::make_shared(T, plus1); + auto const_plusT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto plusT_scalar = std::make_shared(plusT, const_plusT); + auto range1T = std::make_shared(start, plusT_scalar, step, seq_len_type); + + auto mask_shape = std::make_shared( + OutputVector{T->output(0), N->output(0)}, 0); + + auto upper_bounds = std::make_shared( + seq_len1, mask_shape->output(0)); + auto transpose_upper_bounds = std::make_shared(upper_bounds->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto bool_seq_mask = std::make_shared(transpose_upper_bounds->output(0), + range1T->output(0)); + + auto mask_val_true = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto mask_val_false = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto seq_mask = std::make_shared(bool_seq_mask, mask_val_true, mask_val_false); + auto transpose_seq_mask = std::make_shared(seq_mask->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto transpose_seq_mask_f = std::make_shared(transpose_seq_mask->output(0), data_type); + auto simplified_decoder = std::make_shared(transpose, + transpose_seq_mask_f->output(0), + true); + + auto squeeze2_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {3}); + auto squeeze2_output_f = std::make_shared(simplified_decoder->output(0), squeeze2_axis); + auto squeeze1_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {2}); + auto squeeze1_output_f = std::make_shared(squeeze2_output_f->output(0), squeeze1_axis); + + auto output_i = std::make_shared(squeeze1_output_f->output(0), ci_type); + auto minus1 = opset6::Constant::create(ci_type, Shape{}, {-1}); + auto where_equal_minus1 = std::make_shared(output_i, minus1); + + auto seq_mask_const0 = opset6::Constant::create(ci_type, Shape{1}, {0}); + auto seq_mask_const1 = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_mask = std::make_shared(where_equal_minus1, seq_mask_const0, seq_mask_const1); + auto seq_mask_axis = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_len = std::make_shared(output_seq_mask, seq_mask_axis); + auto output_seq_len_i = std::make_shared(output_seq_len->output(0), sl_type); + + f_ref = std::make_shared(ngraph::NodeVector{ output_i, output_seq_len_i }, + ngraph::ParameterVector{ data1, seq_len1 }); + } + + auto res = compare_functions(f, f_ref, true, false, false, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, SimplifyCTCGreedyDecoderSeqLenWrongBlankIndexTest) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + auto blank_index = op::Constant::create(element::i32, Shape{}, {5}); + + auto decoder_v6 = std::make_shared(data, seq_len, blank_index, + true, ngraph::element::i64, ngraph::element::i64); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data, seq_len }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data1 = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len1 = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + auto blank_index1 = op::Constant::create(element::i32, Shape{}, {5}); + + auto decoder_v6 = std::make_shared(data1, seq_len1, blank_index1, + true, ngraph::element::i64, ngraph::element::i64); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f_ref = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data1, seq_len1 }); + } + + auto res = compare_functions(f, f_ref, true, false, false, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, SimplifyCTCGreedyDecoderSeqLenDynamicSeqLenWithBlankIndexTest) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + auto blank_index = op::Constant::create(element::i32, Shape{}, {6}); + + auto decoder_v6 = std::make_shared(data, seq_len, blank_index, + true, ngraph::element::i64, ngraph::element::i64); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data, seq_len }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data1 = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len1 = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + + element::Type data_type = data1->get_element_type(); + element::Type seq_len_type = seq_len1->get_element_type(); + element::Type ci_type = element::i64; + element::Type sl_type = element::i64; + auto transpose = std::make_shared(data1, + ngraph::opset6::Constant::create(element::i32, + Shape({3}), {1, 0, 2})); + auto data_shape = std::make_shared(data1); + auto axisT = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {1}); + auto T = std::make_shared(data_shape, indexT, axisT); + + auto axisN = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto indexN = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto N = std::make_shared(data_shape, indexN, axisN); + + auto start = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto step = opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto plus1 = opset6::Constant::create(element::i64, Shape{1}, {1}); + auto plusT = std::make_shared(T, plus1); + auto const_plusT = ngraph::opset6::Constant::create(seq_len_type, Shape{1}, {0}); + auto plusT_scalar = std::make_shared(plusT, const_plusT); + auto range1T = std::make_shared(start, plusT_scalar, step, seq_len_type); + + auto mask_shape = std::make_shared( + OutputVector{T->output(0), N->output(0)}, 0); + + auto upper_bounds = std::make_shared( + seq_len1, mask_shape->output(0)); + auto transpose_upper_bounds = std::make_shared(upper_bounds->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto bool_seq_mask = std::make_shared(transpose_upper_bounds->output(0), + range1T->output(0)); + + auto mask_val_true = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {1}); + auto mask_val_false = ngraph::opset6::Constant::create(seq_len_type, Shape{}, {0}); + auto seq_mask = std::make_shared(bool_seq_mask, mask_val_true, mask_val_false); + auto transpose_seq_mask = std::make_shared(seq_mask->output(0), + ngraph::opset6::Constant::create(seq_len_type, + Shape({2}), {1, 0})); + auto transpose_seq_mask_f = std::make_shared(transpose_seq_mask->output(0), data_type); + auto simplified_decoder = std::make_shared(transpose, + transpose_seq_mask_f->output(0), + true); + + auto squeeze2_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {3}); + auto squeeze2_output_f = std::make_shared(simplified_decoder->output(0), squeeze2_axis); + auto squeeze1_axis = ngraph::opset6::Constant::create(seq_len_type, Shape({1}), {2}); + auto squeeze1_output_f = std::make_shared(squeeze2_output_f->output(0), squeeze1_axis); + + auto output_i = std::make_shared(squeeze1_output_f->output(0), ci_type); + auto minus1 = opset6::Constant::create(ci_type, Shape{}, {-1}); + auto where_equal_minus1 = std::make_shared(output_i, minus1); + + auto seq_mask_const0 = opset6::Constant::create(ci_type, Shape{1}, {0}); + auto seq_mask_const1 = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_mask = std::make_shared(where_equal_minus1, seq_mask_const0, seq_mask_const1); + auto seq_mask_axis = opset6::Constant::create(ci_type, Shape{1}, {1}); + auto output_seq_len = std::make_shared(output_seq_mask, seq_mask_axis); + auto output_seq_len_i = std::make_shared(output_seq_len->output(0), sl_type); + + f_ref = std::make_shared(ngraph::NodeVector{ output_i, output_seq_len_i }, + ngraph::ParameterVector{ data1, seq_len1 }); + } + + auto res = compare_functions(f, f_ref, true, false, false, true, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, SimplifyCTCGreedyDecoderSeqLenDynamicSeqLenParamWithBlankIndexTest) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + auto blank_index = std::make_shared(ngraph::element::i32, ngraph::PartialShape{1}); + + auto decoder_v6 = std::make_shared(data, seq_len, blank_index, + true, ngraph::element::i64, ngraph::element::i64); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data, seq_len, blank_index }); + + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data1 = std::make_shared(ngraph::element::f32, ngraph::PartialShape{2, Dimension::dynamic(), 7}); + auto seq_len1 = std::make_shared(ngraph::element::i32, ngraph::PartialShape{2}); + auto blank_index1 = std::make_shared(ngraph::element::i32, ngraph::PartialShape{1}); + + auto decoder_v6 = std::make_shared(data1, seq_len1, blank_index1, + true, ngraph::element::i64, ngraph::element::i64); + auto res_1 = std::make_shared(decoder_v6->output(0)); + auto res_2 = std::make_shared(decoder_v6->output(1)); + + f_ref = std::make_shared(ngraph::NodeVector{ res_1, res_2 }, ngraph::ParameterVector{ data1, seq_len1, blank_index1 }); + } + + auto res = compare_functions(f, f_ref, true, false, false, true, true); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/softmax_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/softmax_fusion.cpp new file mode 100644 index 00000000000000..f8f982cd48192e --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/softmax_fusion.cpp @@ -0,0 +1,119 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + + +class SoftmaxFusionFixture : public ::testing::TestWithParam> { +}; + +TEST_P(SoftmaxFusionFixture, SoftmaxFusion) { + Shape shape{1, 1, 256}; + auto params = GetParam(); + auto reduce_max_axis_val = std::get<0>(params); + auto reduce_sum_axis_val = std::get<1>(params); + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, shape); + auto reduce_max_axis = opset6::Constant::create(element::i64, Shape{}, {reduce_max_axis_val}); + auto reduce_max = std::make_shared(data, reduce_max_axis); + auto sub = std::make_shared(data, reduce_max); + auto exp = std::make_shared(sub); + auto reduce_sum_axis = opset6::Constant::create(element::i64, Shape{}, {reduce_sum_axis_val}); + auto reduce_sum = std::make_shared(exp, reduce_sum_axis); + auto div = std::make_shared(exp, reduce_sum); + f = std::make_shared(NodeVector{div}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, shape); + if (reduce_max_axis_val < 0) + reduce_max_axis_val += shape.size(); + auto softmax = std::make_shared(data, reduce_max_axis_val); + f_ref = std::make_shared(NodeVector{softmax}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +INSTANTIATE_TEST_CASE_P(SoftmaxFusionTests, SoftmaxFusionFixture, + ::testing::Values( + std::make_tuple(1, 1), + std::make_tuple(1, -2), + std::make_tuple(-1, -1), + std::make_tuple(-1, 2), + std::make_tuple(2, -1), + std::make_tuple(2, 2) + ) +); + + +class NegativeSoftmaxFusionFixture : public ::testing::TestWithParam, std::vector>> { +}; + +TEST_P(NegativeSoftmaxFusionFixture, NegativeSoftmaxFusion) { + Shape shape{1, 1, 256}; + auto params = GetParam(); + auto reduce_max_axes_val = std::get<0>(params); + auto reduce_sum_axes_val = std::get<1>(params); + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, shape); + auto reduce_max_axes = opset6::Constant::create(element::i64, Shape{reduce_max_axes_val.size()}, reduce_max_axes_val); + auto reduce_max = std::make_shared(data, reduce_max_axes); + auto sub = std::make_shared(data, reduce_max); + auto exp = std::make_shared(sub); + auto reduce_sum_axes = opset6::Constant::create(element::i64, Shape{reduce_sum_axes_val.size()}, reduce_sum_axes_val); + auto reduce_sum = std::make_shared(exp, reduce_sum_axes); + auto div = std::make_shared(exp, reduce_sum); + f = std::make_shared(NodeVector{div}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + { + auto data = std::make_shared(element::f32, shape); + auto reduce_max_axes = opset6::Constant::create(element::i64, Shape{reduce_max_axes_val.size()}, reduce_max_axes_val); + auto reduce_max = std::make_shared(data, reduce_max_axes); + auto sub = std::make_shared(data, reduce_max); + auto exp = std::make_shared(sub); + auto reduce_sum_axes = opset6::Constant::create(element::i64, Shape{reduce_sum_axes_val.size()}, reduce_sum_axes_val); + auto reduce_sum = std::make_shared(exp, reduce_sum_axes); + auto div = std::make_shared(exp, reduce_sum); + f_ref = std::make_shared(NodeVector{div}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +INSTANTIATE_TEST_CASE_P(NegativeSoftmaxFusionTests, NegativeSoftmaxFusionFixture, + ::testing::ValuesIn(std::vector, std::vector>>{ + std::make_tuple, std::vector>({2}, {1}), + std::make_tuple, std::vector>({1}, {-1}), + std::make_tuple, std::vector>({0, 1}, {0, 1}) + } + ) +); diff --git a/inference-engine/tests/functional/inference_engine/transformations/softplus_decomposition_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/softplus_decomposition_test.cpp index 52ecf6eef0297c..271f2ff55af753 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/softplus_decomposition_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/softplus_decomposition_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/softplus_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/softplus_fusion_test.cpp index dcb6bd0f761e51..a912ca638bd3d4 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/softplus_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/softplus_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/space_to_batch_fusion.cpp b/inference-engine/tests/functional/inference_engine/transformations/space_to_batch_fusion.cpp new file mode 100644 index 00000000000000..d4c02f299a3705 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/space_to_batch_fusion.cpp @@ -0,0 +1,236 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + + +using namespace testing; +using namespace ngraph; + +TEST(TransformationTests, SpaceToBatchFusionTranspose) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 2, 3, 3}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto space_to_batch = std::make_shared(data, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 2, 3, 3})); + + f_ref = std::make_shared(NodeVector{space_to_batch}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, SpaceToBatchFusionReshape) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto reshape_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {3, 12, 4, 8}), false); + auto pad = std::make_shared(reshape_before, + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 2, 3, 3}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto space_to_batch = std::make_shared(data, + op::Constant::create(element::i64, Shape{4}, {1, 1, 2, 2}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {2, 2, 3, 3})); + + f_ref = std::make_shared(NodeVector{space_to_batch}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeSpaceToBatchFusionInvalidTransposePerm) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {3, 0, 2, 1})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 3, 2}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {3, 0, 2, 1})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{4}, {1, 1, 1, 1}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 3, 2}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f_ref = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeSpaceToBatchFusionInvalidPad) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{4}, {0, 1, 1, 0}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 3, 2}), + op::Constant::create(element::f32, Shape{}, {1}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{4}, {0, 1, 1, 0}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 3, 2}), + op::Constant::create(element::f32, Shape{}, {1}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f_ref = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeSpaceToBatchFusionInvalidMode) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{4}, {0, 1, 1, 0}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 3, 2}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{4}, {0, 1, 1, 0}), + op::Constant::create(element::i64, Shape{4}, {1, 1, 3, 2}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{4}, {1, 0, 2, 3})); + f_ref = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, NegativeSpaceToBatchFusionInvalidRank) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{5}, {0, 1, 1, 0, 0}), + op::Constant::create(element::i64, Shape{5}, {1, 1, 3, 2, 2}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + f = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + + pass::Manager m; + m.register_pass(); + m.register_pass(); + m.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto data = std::make_shared(element::f32, Shape{12, 3, 4, 8, 8}); + auto trans_before = std::make_shared(data, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + auto pad = std::make_shared(trans_before, + op::Constant::create(element::i64, Shape{5}, {0, 1, 1, 0, 0}), + op::Constant::create(element::i64, Shape{5}, {1, 1, 3, 2, 2}), + op::Constant::create(element::f32, Shape{}, {0}), op::PadMode::CONSTANT); + auto space_to_depth = std::make_shared(pad, opset6::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST, 2); + auto trans_after = std::make_shared(space_to_depth, op::Constant::create(element::i64, Shape{5}, {1, 0, 2, 3, 4})); + f_ref = std::make_shared(NodeVector{trans_after}, ParameterVector{data}); + } + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + diff --git a/inference-engine/tests/functional/inference_engine/transformations/sr_mimicking_sbs.cpp b/inference-engine/tests/functional/inference_engine/transformations/sr_mimicking_sbs.cpp index 7085d7d45a3ca1..e6e9b679e69be1 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/sr_mimicking_sbs.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/sr_mimicking_sbs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/sr_proposal_scales.cpp b/inference-engine/tests/functional/inference_engine/transformations/sr_proposal_scales.cpp index 65df3690412847..4c028b3fa94306 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/sr_proposal_scales.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/sr_proposal_scales.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/sr_reshape_1d.cpp b/inference-engine/tests/functional/inference_engine/transformations/sr_reshape_1d.cpp index 7c1459618adb36..b9b92ecf1243d7 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/sr_reshape_1d.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/sr_reshape_1d.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/sr_strided_slice_squeeze.cpp b/inference-engine/tests/functional/inference_engine/transformations/sr_strided_slice_squeeze.cpp index d665cc191052da..0479747c0e90cb 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/sr_strided_slice_squeeze.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/sr_strided_slice_squeeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/sr_sub_graph_ops.cpp b/inference-engine/tests/functional/inference_engine/transformations/sr_sub_graph_ops.cpp index c454c4288f7cdc..56f63ac9b87fcc 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/sr_sub_graph_ops.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/sr_sub_graph_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/swish_fusion_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/swish_fusion_test.cpp index 27b57409799366..723e73d449aa37 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/swish_fusion_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/swish_fusion_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/transpose_to_reshape_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/transpose_to_reshape_test.cpp index 3ab8ce3ba62d6f..7b6d2384387c3f 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/transpose_to_reshape_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/transpose_to_reshape_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/type_relaxed_tests.cpp b/inference-engine/tests/functional/inference_engine/transformations/type_relaxed_tests.cpp index e985a9662cd09e..44a2a74f20b3fe 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/type_relaxed_tests.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/type_relaxed_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/unroll_loop_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/unroll_loop_test.cpp new file mode 100644 index 00000000000000..311ea8e1b4ee25 --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/unroll_loop_test.cpp @@ -0,0 +1,546 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "common_test_utils/test_common.hpp" +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; +using namespace ngraph; +using namespace opset6; + +TEST(TransformationTests, UnrollLoopGRUCell) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto X = std::make_shared(element::f32, Shape{2, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Yi = std::make_shared(element::f32, Shape{1, 128}); + + // Body + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(384*16, 0); + auto r_val = std::vector(384*128, 0); + auto b_val = std::vector(384, 0); + auto W = Constant::create(element::f32, Shape{384, 16}, w_val); + auto R = Constant::create(element::f32, Shape{384, 128}, r_val); + auto B = Constant::create(element::f32, Shape{384}, b_val); + + auto gru_cell = std::make_shared(squeeze, Yi, W, R, B, 128); + auto res_1 = std::make_shared(gru_cell); + auto unsqueeze = std::make_shared(gru_cell, axis); + auto res_2 = std::make_shared(unsqueeze); + auto body_condition = std::make_shared( + ngraph::element::boolean, ngraph::Shape{1}, true); + auto body = std::make_shared(OutputVector{res_1, res_2, body_condition}, + ParameterVector{Xi, Yi}); + + auto trip_count = + std::make_shared(ngraph::element::i64, ngraph::Shape{}, 2); + auto exec_condition = + std::make_shared(ngraph::element::boolean, ngraph::Shape{}, true); + auto loop = std::make_shared(trip_count, exec_condition); + loop->set_special_body_ports({-1, 2}); + loop->set_function(body); + + loop->set_sliced_input(Xi, X, 0, 1, 1, -1, 0); + loop->set_merged_input(Yi, Y, res_1); + + auto out0 = loop->get_iter_value(res_1, -1); + auto out1 = loop->get_concatenated_slices(res_2, 0, 1, 1, -1, 0); + + auto res_ti_1 = std::make_shared(loop->output(1)); + //auto res_ti_2 = std::make_shared(loop->output(0)); + f = std::make_shared(NodeVector{res_ti_1}, + ParameterVector{X, Y}); + + pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto X = std::make_shared(element::f32, Shape{2, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto axis_split = Constant::create(element::i64, Shape{}, {0}); + auto split = std::make_shared(X, axis_split, 2); + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze_1 = std::make_shared(split->output(0), axis); + auto squeeze_2 = std::make_shared(split->output(1), axis); + + auto w_val = std::vector(384*16, 0); + auto r_val = std::vector(384*128, 0); + auto b_val = std::vector(384, 0); + auto W = Constant::create(element::f32, Shape{384, 16}, w_val); + auto R = Constant::create(element::f32, Shape{384, 128}, r_val); + auto B = Constant::create(element::f32, Shape{384}, b_val); + + auto gru_cell_1 = std::make_shared(squeeze_1, Y, W, R, B, 128); + auto gru_cell_2 = std::make_shared(squeeze_2, gru_cell_1, W, R, B, 128); + + auto unsqueeze_1 = std::make_shared(gru_cell_1, axis); + auto unsqueeze_2 = std::make_shared(gru_cell_2, axis); + auto concat = std::make_shared(OutputVector{unsqueeze_1, unsqueeze_2}, 0); + + auto res_ti_1 = std::make_shared(concat); + //auto res_ti_2 = std::make_shared(unsqueeze_2); + f_ref = std::make_shared(NodeVector{res_ti_1}, ParameterVector{X, Y}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, UnrollLoopRNNCell) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto X = std::make_shared(element::f32, Shape{2, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Yi = std::make_shared(element::f32, Shape{1, 128}); + + // Body + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(128*16, 0); + auto r_val = std::vector(128*128, 0); + auto b_val = std::vector(128, 0); + auto W = Constant::create(element::f32, Shape{128, 16}, w_val); + auto R = Constant::create(element::f32, Shape{128, 128}, r_val); + auto B = Constant::create(element::f32, Shape{128}, b_val); + + auto rnn_cell = std::make_shared(squeeze, Yi, W, R, B, 128); + auto res_1 = std::make_shared(rnn_cell); + auto unsqueeze = std::make_shared(rnn_cell, axis); + auto res_2 = std::make_shared(unsqueeze); + auto body_condition = std::make_shared( + ngraph::element::boolean, ngraph::Shape{1}, true); + auto body = std::make_shared(OutputVector{res_1, res_2, body_condition}, + ParameterVector{Xi, Yi}); + + auto trip_count = + std::make_shared(ngraph::element::i64, ngraph::Shape{}, 2); + auto exec_condition = + std::make_shared(ngraph::element::boolean, ngraph::Shape{}, true); + auto loop = std::make_shared(trip_count, exec_condition); + loop->set_special_body_ports({-1, 2}); + loop->set_function(body); + + loop->set_sliced_input(Xi, X, 0, 1, 1, -1, 0); + loop->set_merged_input(Yi, Y, res_1); + + auto out0 = loop->get_iter_value(res_1, -1); + auto out1 = loop->get_concatenated_slices(res_2, 0, 1, 1, -1, 0); + + auto res_ti_1 = std::make_shared(loop->output(1)); + //auto res_ti_2 = std::make_shared(loop->output(0)); + f = std::make_shared(NodeVector{res_ti_1}, + ParameterVector{X, Y}); + + pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto X = std::make_shared(element::f32, Shape{2, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto axis_split = Constant::create(element::i64, Shape{}, {0}); + auto split = std::make_shared(X, axis_split, 2); + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze_1 = std::make_shared(split->output(0), axis); + auto squeeze_2 = std::make_shared(split->output(1), axis); + + auto w_val = std::vector(128*16, 0); + auto r_val = std::vector(128*128, 0); + auto b_val = std::vector(128, 0); + auto W = Constant::create(element::f32, Shape{128, 16}, w_val); + auto R = Constant::create(element::f32, Shape{128, 128}, r_val); + auto B = Constant::create(element::f32, Shape{128}, b_val); + + auto rnn_cell_1 = std::make_shared(squeeze_1, Y, W, R, B, 128); + auto rnn_cell_2 = std::make_shared(squeeze_2, rnn_cell_1, W, R, B, 128); + + auto unsqueeze_1 = std::make_shared(rnn_cell_1, axis); + auto unsqueeze_2 = std::make_shared(rnn_cell_2, axis); + auto concat = std::make_shared(OutputVector{unsqueeze_1, unsqueeze_2}, 0); + + auto res_ti_1 = std::make_shared(concat); + //auto res_ti_2 = std::make_shared(unsqueeze_2); + f_ref = std::make_shared(NodeVector{res_ti_1}, ParameterVector{X, Y}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, UnrollLoopLSTMCell) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto X = std::make_shared(element::f32, Shape{2, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + auto Z = std::make_shared(element::f32, Shape{1, 128}); + + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Yi = std::make_shared(element::f32, Shape{1, 128}); + auto Zi = std::make_shared(element::f32, Shape{1, 128}); + + // Body + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(512*16, 0); + auto r_val = std::vector(512*128, 0); + auto b_val = std::vector(512, 0); + auto W = Constant::create(element::f32, Shape{512, 16}, w_val); + auto R = Constant::create(element::f32, Shape{512, 128}, r_val); + auto B = Constant::create(element::f32, Shape{512}, b_val); + + auto lstm_cell = std::make_shared(squeeze, Yi, Zi, W, R, B, 128); + auto res_1 = std::make_shared(lstm_cell); + auto unsqueeze = std::make_shared(lstm_cell, axis); + auto res_2 = std::make_shared(unsqueeze); + auto body_condition = std::make_shared( + ngraph::element::boolean, ngraph::Shape{1}, true); + auto body = std::make_shared(OutputVector{res_1, res_2, body_condition}, + ParameterVector{Xi, Yi, Zi}); + + auto trip_count = + std::make_shared(ngraph::element::i64, ngraph::Shape{}, 2); + auto exec_condition = + std::make_shared(ngraph::element::boolean, ngraph::Shape{}, true); + auto loop = std::make_shared(trip_count, exec_condition); + loop->set_special_body_ports({-1, 2}); + loop->set_function(body); + + loop->set_invariant_input(Zi, Z); + loop->set_sliced_input(Xi, X, 0, 1, 1, -1, 0); + loop->set_merged_input(Yi, Y, res_1); + + auto out0 = loop->get_iter_value(res_1, -1); + auto out1 = loop->get_concatenated_slices(res_2, 0, 1, 1, -1, 0); + + auto res_ti_1 = std::make_shared(loop->output(1)); + //auto res_ti_2 = std::make_shared(loop->output(0)); + f = std::make_shared(NodeVector{res_ti_1}, + ParameterVector{X, Y, Z}); + + pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto X = std::make_shared(element::f32, Shape{2, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + auto Z = std::make_shared(element::f32, Shape{1, 128}); + + auto axis_split = Constant::create(element::i64, Shape{}, {0}); + auto split = std::make_shared(X, axis_split, 2); + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze_1 = std::make_shared(split->output(0), axis); + auto squeeze_2 = std::make_shared(split->output(1), axis); + + auto w_val = std::vector(512*16, 0); + auto r_val = std::vector(512*128, 0); + auto b_val = std::vector(512, 0); + auto W = Constant::create(element::f32, Shape{512, 16}, w_val); + auto R = Constant::create(element::f32, Shape{512, 128}, r_val); + auto B = Constant::create(element::f32, Shape{512}, b_val); + + auto lstm_cell_1 = std::make_shared(squeeze_1, Y, Z, W, R, B, 128); + auto lstm_cell_2 = std::make_shared(squeeze_2, lstm_cell_1, Z, W, R, B, 128); + + auto unsqueeze_1 = std::make_shared(lstm_cell_1, axis); + auto unsqueeze_2 = std::make_shared(lstm_cell_2, axis); + auto concat = std::make_shared(OutputVector{unsqueeze_1, unsqueeze_2}, 0); + + auto res_ti_1 = std::make_shared(concat); + //auto res_ti_2 = std::make_shared(unsqueeze_2); + f_ref = std::make_shared(NodeVector{res_ti_1}, ParameterVector{X, Y, Z}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, UnrollLoopGRUCellSingleIteration) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto X = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Yi = std::make_shared(element::f32, Shape{1, 128}); + + // Body + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(384*16, 0); + auto r_val = std::vector(384*128, 0); + auto b_val = std::vector(384, 0); + auto W = Constant::create(element::f32, Shape{384, 16}, w_val); + auto R = Constant::create(element::f32, Shape{384, 128}, r_val); + auto B = Constant::create(element::f32, Shape{384}, b_val); + + auto gru_cell = std::make_shared(squeeze, Yi, W, R, B, 128); + auto res_1 = std::make_shared(gru_cell); + auto unsqueeze = std::make_shared(gru_cell, axis); + auto res_2 = std::make_shared(unsqueeze); + auto body_condition = std::make_shared( + ngraph::element::boolean, ngraph::Shape{1}, true); + auto body = std::make_shared(OutputVector{res_1, res_2, body_condition}, + ParameterVector{Xi, Yi}); + + auto trip_count = + std::make_shared(ngraph::element::i64, ngraph::Shape{}, 1); + auto exec_condition = + std::make_shared(ngraph::element::boolean, ngraph::Shape{}, true); + auto loop = std::make_shared(trip_count, exec_condition); + loop->set_special_body_ports({-1, 2}); + loop->set_function(body); + + loop->set_sliced_input(Xi, X, 0, 1, 1, -1, 0); + loop->set_merged_input(Yi, Y, res_1); + + auto out0 = loop->get_iter_value(res_1, -1); + auto out1 = loop->get_concatenated_slices(res_2, 0, 1, 1, -1, 0); + + auto res_ti_1 = std::make_shared(loop->output(1)); + //auto res_ti_2 = std::make_shared(loop->output(0)); + f = std::make_shared(NodeVector{res_ti_1}, + ParameterVector{X, Y}); + + pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto X = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze_1 = std::make_shared(X, axis); + + auto w_val = std::vector(384*16, 0); + auto r_val = std::vector(384*128, 0); + auto b_val = std::vector(384, 0); + auto W = Constant::create(element::f32, Shape{384, 16}, w_val); + auto R = Constant::create(element::f32, Shape{384, 128}, r_val); + auto B = Constant::create(element::f32, Shape{384}, b_val); + + auto gru_cell_1 = std::make_shared(squeeze_1, Y, W, R, B, 128); + + auto unsqueeze_1 = std::make_shared(gru_cell_1, axis); + + auto res_ti_1 = std::make_shared(unsqueeze_1); + //auto res_ti_2 = std::make_shared(unsqueeze_2); + f_ref = std::make_shared(NodeVector{res_ti_1}, ParameterVector{X, Y}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, UnrollLoopRNNCellSingleIteration) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto X = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Yi = std::make_shared(element::f32, Shape{1, 128}); + + // Body + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(128*16, 0); + auto r_val = std::vector(128*128, 0); + auto b_val = std::vector(128, 0); + auto W = Constant::create(element::f32, Shape{128, 16}, w_val); + auto R = Constant::create(element::f32, Shape{128, 128}, r_val); + auto B = Constant::create(element::f32, Shape{128}, b_val); + + auto rnn_cell = std::make_shared(squeeze, Yi, W, R, B, 128); + auto res_1 = std::make_shared(rnn_cell); + auto unsqueeze = std::make_shared(rnn_cell, axis); + auto res_2 = std::make_shared(unsqueeze); + auto body_condition = std::make_shared( + ngraph::element::boolean, ngraph::Shape{1}, true); + auto body = std::make_shared(OutputVector{res_1, res_2, body_condition}, + ParameterVector{Xi, Yi}); + + auto trip_count = + std::make_shared(ngraph::element::i64, ngraph::Shape{}, 1); + auto exec_condition = + std::make_shared(ngraph::element::boolean, ngraph::Shape{}, true); + auto loop = std::make_shared(trip_count, exec_condition); + loop->set_special_body_ports({-1, 2}); + loop->set_function(body); + + loop->set_sliced_input(Xi, X, 0, 1, 1, -1, 0); + loop->set_merged_input(Yi, Y, res_1); + + auto out0 = loop->get_iter_value(res_1, -1); + auto out1 = loop->get_concatenated_slices(res_2, 0, 1, 1, -1, 0); + + auto res_ti_1 = std::make_shared(loop->output(1)); + //auto res_ti_2 = std::make_shared(loop->output(0)); + f = std::make_shared(NodeVector{res_ti_1}, + ParameterVector{X, Y}); + + pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto X = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze_1 = std::make_shared(X, axis); + + auto w_val = std::vector(128*16, 0); + auto r_val = std::vector(128*128, 0); + auto b_val = std::vector(128, 0); + auto W = Constant::create(element::f32, Shape{128, 16}, w_val); + auto R = Constant::create(element::f32, Shape{128, 128}, r_val); + auto B = Constant::create(element::f32, Shape{128}, b_val); + + auto rnn_cell_1 = std::make_shared(squeeze_1, Y, W, R, B, 128); + + auto unsqueeze_1 = std::make_shared(rnn_cell_1, axis); + auto res_ti_1 = std::make_shared(unsqueeze_1); + + f_ref = std::make_shared(NodeVector{res_ti_1}, ParameterVector{X, Y}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} + +TEST(TransformationTests, UnrollLoopLSTMCellSingleIteration) { + std::shared_ptr f(nullptr), f_ref(nullptr); + { + auto X = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + auto Z = std::make_shared(element::f32, Shape{1, 128}); + + auto Xi = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Yi = std::make_shared(element::f32, Shape{1, 128}); + auto Zi = std::make_shared(element::f32, Shape{1, 128}); + + // Body + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze = std::make_shared(Xi, axis); + + auto w_val = std::vector(512*16, 0); + auto r_val = std::vector(512*128, 0); + auto b_val = std::vector(512, 0); + auto W = Constant::create(element::f32, Shape{512, 16}, w_val); + auto R = Constant::create(element::f32, Shape{512, 128}, r_val); + auto B = Constant::create(element::f32, Shape{512}, b_val); + + auto lstm_cell = std::make_shared(squeeze, Yi, Zi, W, R, B, 128); + auto res_1 = std::make_shared(lstm_cell); + auto unsqueeze = std::make_shared(lstm_cell, axis); + auto res_2 = std::make_shared(unsqueeze); + auto body_condition = std::make_shared( + ngraph::element::boolean, ngraph::Shape{1}, true); + auto body = std::make_shared(OutputVector{res_1, res_2, body_condition}, + ParameterVector{Xi, Yi, Zi}); + + auto trip_count = + std::make_shared(ngraph::element::i64, ngraph::Shape{}, 1); + auto exec_condition = + std::make_shared(ngraph::element::boolean, ngraph::Shape{}, true); + auto loop = std::make_shared(trip_count, exec_condition); + loop->set_special_body_ports({-1, 2}); + loop->set_function(body); + + loop->set_invariant_input(Zi, Z); + loop->set_sliced_input(Xi, X, 0, 1, 1, -1, 0); + loop->set_merged_input(Yi, Y, res_1); + + auto out0 = loop->get_iter_value(res_1, -1); + auto out1 = loop->get_concatenated_slices(res_2, 0, 1, 1, -1, 0); + + auto res_ti_1 = std::make_shared(loop->output(1)); + //auto res_ti_2 = std::make_shared(loop->output(0)); + f = std::make_shared(NodeVector{res_ti_1}, + ParameterVector{X, Y, Z}); + + pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + + ASSERT_NO_THROW(check_rt_info(f)); + } + + { + auto X = std::make_shared(element::f32, Shape{1, 1, 16}); + auto Y = std::make_shared(element::f32, Shape{1, 128}); + auto Z = std::make_shared(element::f32, Shape{1, 128}); + + auto axis = Constant::create(element::i64, Shape{}, {0}); + auto squeeze_1 = std::make_shared(X, axis); + + auto w_val = std::vector(512*16, 0); + auto r_val = std::vector(512*128, 0); + auto b_val = std::vector(512, 0); + auto W = Constant::create(element::f32, Shape{512, 16}, w_val); + auto R = Constant::create(element::f32, Shape{512, 128}, r_val); + auto B = Constant::create(element::f32, Shape{512}, b_val); + + auto lstm_cell_1 = std::make_shared(squeeze_1, Y, Z, W, R, B, 128); + + auto unsqueeze_1 = std::make_shared(lstm_cell_1, axis); + auto res_ti_1 = std::make_shared(unsqueeze_1); + //auto res_ti_2 = std::make_shared(unsqueeze_2); + f_ref = std::make_shared(NodeVector{res_ti_1}, ParameterVector{X, Y, Z}); + } + + auto res = compare_functions(f, f_ref); + ASSERT_TRUE(res.first) << res.second; +} diff --git a/inference-engine/tests/functional/inference_engine/transformations/unroll_tensor_iterator_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/unroll_tensor_iterator_test.cpp index 6a99ebf4ecc588..c4d83b14d4b7ce 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/unroll_tensor_iterator_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/unroll_tensor_iterator_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/utils_test.cpp b/inference-engine/tests/functional/inference_engine/transformations/utils_test.cpp index 30f769d1e12f28..8c6c8125e95916 100644 --- a/inference-engine/tests/functional/inference_engine/transformations/utils_test.cpp +++ b/inference-engine/tests/functional/inference_engine/transformations/utils_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/inference_engine/transformations/weights_dequantize_to_fake_quantize.cpp b/inference-engine/tests/functional/inference_engine/transformations/weights_dequantize_to_fake_quantize.cpp new file mode 100644 index 00000000000000..a860565d53281c --- /dev/null +++ b/inference-engine/tests/functional/inference_engine/transformations/weights_dequantize_to_fake_quantize.cpp @@ -0,0 +1,95 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ngraph_test_utils.hpp" + +using namespace testing; + +struct FQ_as_Mul_Sub_dequantize { + int8_t min_int, max_int; + float zp, scale; + float o_low, o_high; + size_t levels; +}; + +class TranslateNewWeightFormatToOldOne : public CommonTestUtils::TestsCommon, + public testing::WithParamInterface> { +public: + std::shared_ptr f, f_ref; + + void SetUp() override { + const auto& test_case = std::get<0>(GetParam()); + const auto& float_element_type = std::get<1>(GetParam()); + + std::vector weights{test_case.min_int, test_case.max_int}; + { + auto i_weights = std::make_shared(ngraph::element::i8, ngraph::Shape{weights.size()}, weights); + + auto f_weights = std::make_shared(i_weights, float_element_type); + + auto zp = std::make_shared(float_element_type, ngraph::Shape{}, std::vector{test_case.zp}); + auto subtract_zp = std::make_shared(f_weights, zp); + + auto scale = std::make_shared(float_element_type, ngraph::Shape{}, std::vector{test_case.scale}); + + ngraph::NodeVector output; + if (test_case.zp == 0) + output.push_back(std::make_shared(f_weights, scale)); + else + output.push_back(std::make_shared(subtract_zp, scale)); + + f = std::make_shared(output, ngraph::ParameterVector{}); + } + + { + auto i_weights = std::make_shared(ngraph::element::i8, ngraph::Shape{weights.size()}, weights); + + auto f_weights = std::make_shared(i_weights, float_element_type); + + auto i_low = std::make_shared( + float_element_type, ngraph::Shape{}, std::vector{static_cast(test_case.min_int)}); + auto i_high = std::make_shared( + float_element_type, ngraph::Shape{}, std::vector{static_cast(test_case.max_int)}); + auto o_low = std::make_shared(float_element_type, ngraph::Shape{}, std::vector{test_case.o_low}); + auto o_high = std::make_shared(float_element_type, ngraph::Shape{}, std::vector{test_case.o_high}); + + auto fq = std::make_shared(f_weights, i_low, i_high, o_low, o_high, test_case.levels); + + f_ref = std::make_shared(ngraph::NodeVector{fq}, ngraph::ParameterVector{}); + } + } +}; + +TEST_P(TranslateNewWeightFormatToOldOne, ReshapeMatMul) { + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.run_passes(f); + ASSERT_NO_THROW(check_rt_info(f)); + + auto res = compare_functions(f, f_ref, true); + ASSERT_TRUE(res.first) << res.second; +} + +INSTANTIATE_TEST_CASE_P(NGraph, TranslateNewWeightFormatToOldOne, testing::Combine( + testing::Values( + FQ_as_Mul_Sub_dequantize{-128, 127, 1, 2, (-128 - 1) * 2, (127 - 1) * 2, 256}, + FQ_as_Mul_Sub_dequantize{-127, 127, 1, 2, (-127 - 1) * 2, (127 - 1) * 2, 255}, + FQ_as_Mul_Sub_dequantize{-128, 127, 0, 2, (-128 - 0) * 2, (127 - 0) * 2, 256}, + FQ_as_Mul_Sub_dequantize{-127, 127, 0, 2, (-127 - 0) * 2, (127 - 0) * 2, 255}), + testing::Values( + ngraph::element::f32, + ngraph::element::f16))); diff --git a/inference-engine/tests/functional/plugin/CMakeLists.txt b/inference-engine/tests/functional/plugin/CMakeLists.txt index 9b1aae9cff0271..0c7d7594d2dc6e 100644 --- a/inference-engine/tests/functional/plugin/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -20,3 +20,5 @@ if (ENABLE_MYRIAD) add_subdirectory(myriad) endif() +add_subdirectory(conformance) + diff --git a/inference-engine/tests/functional/plugin/conformance/CMakeLists.txt b/inference-engine/tests/functional/plugin/conformance/CMakeLists.txt new file mode 100644 index 00000000000000..74888b818c30be --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/CMakeLists.txt @@ -0,0 +1,7 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +add_subdirectory(test_runner) +add_subdirectory(subgraphs_dumper) +add_subdirectory(subgraphs_dumper/tests) diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/CMakeLists.txt b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/CMakeLists.txt new file mode 100644 index 00000000000000..b1eb5bead0e7db --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/CMakeLists.txt @@ -0,0 +1,30 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME subgraphsDumper) + +list(APPEND DEPENDENCIES + gflags + inference_engine + commonTestUtils + ) + +addIeTargetTest( + NAME ${TARGET_NAME} + ROOT ${CMAKE_CURRENT_SOURCE_DIR} + INCLUDES + ${CMAKE_CURRENT_SOURCE_DIR}/include + $ + DEPENDENCIES + ${DEPENDENCIES} + inference_engine_ir_reader + LINK_LIBRARIES + PRIVATE + ${DEPENDENCIES} + ADD_CPPLINT +) + +ie_faster_build(${TARGET_NAME} + PCH PRIVATE "src/precomp.hpp" + ) diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/README.md b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/README.md new file mode 100644 index 00000000000000..0cddb328e3464c --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/README.md @@ -0,0 +1,35 @@ +# Subgraphs Dumper tool + +The tool is intended to analyse some arbitrary scope of the models in a formats supported by Inference Engine Readers +to extract and serialize unique patterns from all of the input models. Uniqueness and matching criteria are defined by implementation of +`Matcher` interface class declared in ./include/matchers/base_matcher.hpp and should be registered in +`MatchersManager`declared in ./include/matchers/matchers_manager.hpp by adding to `m_registry` map. + +## Building + +To build the tool need to run following commands +``` +cmake -DENABLE_FUNCTIONAL_TESTS=ON +make -j subgraphsDumper +``` +Outcome of a build is a `subgrpahsDumper` binary located in building artifacts folder. + +## Running +The tool takes two command line parameters: +* `--input_folders` - comma separated list for recursive search for models to analyse +* `--output_folder` - path to the output folder which will be used for extracted subgrpahs serialization in IR format + +E.g. +```subgraphsDumper --input_folders /folder/with/models,/another/folder/with/models --output_folder /output/folder``` + +## Extraction algorithm +*NOTE: current implementation presumes only single operation matching rules, to be extended to handle wider patterns.* + +1. Recursively searching for all of rhe models in provided input folders +2. Reading first model and iterating over the nodes in the ngraph function model's representation + (Parameters, Results and Constants are ignored) +3. Comparing current operation with all of the operations in internal cache by running all of the matchers registered in +`MatchersManager`. Operation is cloned and added to the cache if it is not matched by any of matchers, otherwise will be ignored. + Cloning rules may vary depending on operation type and defined in `./src/op_cloner.cpp` +4. Proceeding with a next model without resetting internal operations cache. +5. Serializing all cached subgraphs to the output folder in IR format. \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/gflag_config.hpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/gflag_config.hpp new file mode 100644 index 00000000000000..19a38e2d2ef8ea --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/gflag_config.hpp @@ -0,0 +1,30 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +static const char help_message[] = "Print a usage message."; +static const char input_folders_message[] = "Required. Comma separated paths to the input folders with IRs"; +static const char output_folder_message[] = "Required. Path to the output folders with IRs"; + +DEFINE_bool(h, false, help_message); +DEFINE_string(input_folders, ".", input_folders_message); +DEFINE_string(output_folder, "output", output_folder_message); + +/** +* @brief This function shows a help message +*/ +static void showUsage() { + std::cout << "\n"; + std::cout << "Subgraph Dumper [OPTION]\n"; + std::cout << "Options:\n"; + std::cout << "\n"; + std::cout << " -h " << help_message << "\n"; + std::cout << " --input_folders \"\" " << input_folders_message << "\n"; + std::cout << " --output_folder \"\" " << output_folder_message << "\n"; + std::cout << std::flush; +} \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/base_matcher.hpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/base_matcher.hpp new file mode 100644 index 00000000000000..65db08f203d4b3 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/base_matcher.hpp @@ -0,0 +1,73 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include "ngraph/node.hpp" +#include "pugixml.hpp" + +namespace SubgraphsDumper { + +class MatchersManager; + +class iMatcherConfig { +public: + using Ptr = std::shared_ptr; + + explicit iMatcherConfig(bool is_fallback_config) : is_fallback_config(is_fallback_config) {} + + iMatcherConfig( + std::vector ignored_attributes, + std::vector ignored_ports, + bool _is_fallback_config) + : ignored_attributes(std::move(ignored_attributes)), + ignored_ports(std::move(ignored_ports)), + is_fallback_config(_is_fallback_config) {} + + // Empty vectors stands for any of possible values + std::vector ignored_attributes; + std::vector ignored_ports; + bool is_fallback_config; + + virtual bool op_in_config(const std::shared_ptr& node) = 0; + + virtual ~iMatcherConfig() = default; +}; + +template +struct MatcherConfig : public iMatcherConfig { +public: + MatcherConfig() : iMatcherConfig(sizeof...(OPTypes) == 0) {} + + MatcherConfig(std::vector ignored_attributes, std::vector ignored_ports) + : iMatcherConfig( + std::move(ignored_attributes), std::move(ignored_ports), sizeof...(OPTypes) == 0) {} + + bool op_in_config(const std::shared_ptr &node) override { + std::initializer_list vals{(ngraph::is_type(node))...}; + return std::any_of(vals.begin(), vals.end(), [](bool i) { return i; }); + }; +}; + +class Matcher { + using Ptr = std::shared_ptr; + friend class MatchersManager; + +public: + virtual bool match(const std::shared_ptr& node, const std::shared_ptr& ref) const = 0; + + virtual ~Matcher() = default; + +protected: + virtual const char* get_name() = 0; + + virtual void configure(const pugi::xml_document& cfg) = 0; + + iMatcherConfig::Ptr get_config(const std::shared_ptr& node) const; + + std::vector default_configs; +}; +} // namespace SubgraphsDumper diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/matchers_manager.hpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/matchers_manager.hpp new file mode 100644 index 00000000000000..852a15ccc46a2b --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/matchers_manager.hpp @@ -0,0 +1,37 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "pugixml.hpp" +#include "ngraph/node.hpp" +#include "single_op.hpp" + +namespace SubgraphsDumper { +class Matcher; + +class MatchersManager { +public: + using RegistryMap = std::map>; + using MatchersMap = std::map; + + explicit MatchersManager(const std::string &cfg_path = {}); + + bool match_all(const std::shared_ptr &node, const std::shared_ptr &ref); + + bool match_any(const std::shared_ptr &node, const std::shared_ptr &ref); + + // TODO: Implement default xml config file generation by Matchers + void generate_config() {} + +private: + std::vector run_matchers(const std::shared_ptr &node, const std::shared_ptr &ref); +// TODO: No copy constructor for xml_document +// pugi::xml_document m_cfg; + RegistryMap m_registry = { + {SingleOpMatcher::name, []() { return std::make_shared(); }} + }; + MatchersMap m_matchers = {}; +}; +} // namespace SubgraphsDumper diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/single_op.hpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/single_op.hpp new file mode 100644 index 00000000000000..cc31c0a31a3adc --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/matchers/single_op.hpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include "base_matcher.hpp" +#include "pugixml.hpp" +#include "ngraph/node.hpp" +#include "common_test_utils/ngraph_test_utils.hpp" + +namespace SubgraphsDumper { + + +class SingleOpMatcher : public Matcher { +public: + SingleOpMatcher(); + + bool match(const std::shared_ptr &node, const std::shared_ptr &ref) const override; + + static const char *name; +protected: + const char *get_name() override { return name; } + + void configure(const pugi::xml_document &cfg) override {} +private: + bool same_op_type(const std::shared_ptr &node, const std::shared_ptr &ref) const; + bool match_inputs(const std::shared_ptr &node, const std::shared_ptr &ref) const; + bool match_outputs(const std::shared_ptr &node, const std::shared_ptr &ref) const; + bool same_attrs(const std::shared_ptr &node, const std::shared_ptr &ref) const; + bool match_ports(const std::shared_ptr &node, const std::shared_ptr &ref) const; +}; +} // namespace SubgraphsDumper diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/op_cloner.hpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/op_cloner.hpp new file mode 100644 index 00000000000000..49e6032c1a8108 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/op_cloner.hpp @@ -0,0 +1,24 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +#include + +namespace SubgraphsDumper { + +struct ClonersMap { + using clone_fn = + std::function(const std::shared_ptr&)>; + + using cloners_map_type = std::map; + + static const cloners_map_type cloners; +}; + +} // namespace SubgraphsDumper diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/ops_cache.hpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/ops_cache.hpp new file mode 100644 index 00000000000000..e4d11e888c9015 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include/ops_cache.hpp @@ -0,0 +1,49 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include +#include "matchers/matchers_manager.hpp" + +namespace SubgraphsDumper { + +class OPCache { +public: + OPCache() : num_neighbours_to_cache(0), manager(MatchersManager()), + m_ops_cache(std::vector, OPInfo>>()) {} + + static std::unique_ptr make_cache() { + return std::unique_ptr(new OPCache()); + } + + void update_ops_cache(const std::shared_ptr &op, const std::string &source_model = {}); + + void update_ops_cache(const std::shared_ptr &func, const std::string &source_model = {}); + + void serialize_cached_ops(const std::string &serialization_dir); + + void set_num_neighbours_to_cache(size_t num) { num_neighbours_to_cache = num; } + +protected: + struct OPInfo { + std::string source_model; + std::map found_in_models; + + OPInfo(const std::string &_source_model) : source_model(_source_model) { + found_in_models = {{_source_model, 1}}; + } + + OPInfo() = default; + }; + + std::vector, OPInfo>> m_ops_cache; + MatchersManager manager; + size_t num_neighbours_to_cache = 0; +}; +} // namespace SubgraphsDumper diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/main.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/main.cpp new file mode 100644 index 00000000000000..dc19cce8dbd4bf --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/main.cpp @@ -0,0 +1,66 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "inference_engine.hpp" + +#include "common_test_utils/file_utils.hpp" + +#include "ops_cache.hpp" +#include "gflag_config.hpp" + +// TODO: Poor exceptions handling +int main(int argc, char *argv[]) { + uint8_t ret_code = 0; + + gflags::ParseCommandLineNonHelpFlags(&argc, &argv, true); + if (FLAGS_h) { + showUsage(); + return 0; + } + std::vector input_folder_content; + std::vector dirs = CommonTestUtils::splitStringByDelimiter(FLAGS_input_folders); + for (const auto &dir : dirs) { + if (!CommonTestUtils::directoryExists(dir)) { + std::string msg = "Input directory (" + dir + ") doesn't not exist!"; + throw std::runtime_error(msg); + } + CommonTestUtils::directoryFileListRecursive(dir, input_folder_content); + } + + if (!CommonTestUtils::directoryExists(FLAGS_output_folder)) { + std::string msg = "Output directory (" + FLAGS_output_folder + ") doesn't not exist!"; + throw std::runtime_error(msg); + } + + auto ie = InferenceEngine::Core(); + auto cache = SubgraphsDumper::OPCache::make_cache(); + + auto xml_regex = std::regex(R"(.*\.xml)"); + for (const auto &file : input_folder_content) { + try { + if (CommonTestUtils::fileExists(file) && std::regex_match(file, xml_regex)) { + std::cout << "Processing model: " << file << std::endl; + std::string bin_file = CommonTestUtils::replaceExt(file, "bin"); + if (!CommonTestUtils::fileExists(bin_file)) { + std::cerr << "Corresponding .bin file for the model " << file << " doesn't exist" << std::endl; + continue; + } + InferenceEngine::CNNNetwork net = ie.ReadNetwork(file); + auto function = net.getFunction(); + cache->update_ops_cache(function, file); + } + } catch (std::exception &e) { + std::cerr << "Model processing failed with exception:" << std::endl << e.what() << std::endl; + ret_code = 1; + continue; + } + } + + cache->serialize_cached_ops(FLAGS_output_folder); + + return ret_code; +} diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/base_matcher.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/base_matcher.cpp new file mode 100644 index 00000000000000..604dedf83bf0e6 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/base_matcher.cpp @@ -0,0 +1,21 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "matchers/base_matcher.hpp" +#include "common_test_utils/common_utils.hpp" + + +SubgraphsDumper::iMatcherConfig::Ptr SubgraphsDumper::Matcher::get_config(const std::shared_ptr &node) const { + for (const auto &cfg : default_configs) { + if (cfg->op_in_config(node)) { + return cfg; + } + } + for (const auto &cfg : default_configs) { + if (cfg->is_fallback_config) { + return cfg; + } + } + return std::make_shared>(); +} diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/matchers_manager.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/matchers_manager.cpp new file mode 100644 index 00000000000000..edaca1230cd23e --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/matchers_manager.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "matchers/matchers_manager.hpp" + +using namespace SubgraphsDumper; + +bool MatchersManager::match_any(const std::shared_ptr &node, const std::shared_ptr &ref) { + const auto matches = this->run_matchers(node, ref); + return std::any_of(matches.begin(), matches.end(), [](bool i) { return i; }); +} + +bool MatchersManager::match_all(const std::shared_ptr &node, const std::shared_ptr &ref) { + const auto matches = this->run_matchers(node, ref); + return std::all_of(matches.begin(), matches.end(), [](bool i) { return i; }); +} + +MatchersManager::MatchersManager(const std::string &cfg_path) { + if (!cfg_path.empty()) { +// m_cfg.load_file(cfg_path.c_str()); + } + for (const auto &it : m_registry) { + m_matchers[it.first] = it.second(); + } +} + +std::vector MatchersManager::run_matchers(const std::shared_ptr &node, const std::shared_ptr &ref) { + std::vector matches; + for (const auto &it : m_matchers) { + matches.push_back(it.second->match(node, ref)); + } + return matches; +} diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/single_op.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/single_op.cpp new file mode 100644 index 00000000000000..9989a37da1e75c --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers/single_op.cpp @@ -0,0 +1,165 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "matchers/single_op.hpp" +#include "ngraph/ops.hpp" +#include + +using namespace SubgraphsDumper; + +template +bool compare_constants_data(const std::shared_ptr &op, + const std::shared_ptr &ref) { + size_t elements_count = ngraph::shape_size(op->get_shape()); + if (elements_count != ngraph::shape_size(ref->get_shape())) { + return false; + } + const auto &op_data = op->cast_vector(); + const auto &ref_data = ref->cast_vector(); + for (size_t i = 0; i < elements_count; ++i) { + // std:abs doesn't implemented for unsigned types, compare explicitly to keep code universal for all dTypes + dType diff = op_data[i] > ref_data[i] ? op_data[i] - ref_data[i] : ref_data[i] - op_data[i]; + if (diff > std::numeric_limits::epsilon()) { + return false; + } + } + return true; +} + +// TODO: Move to some utils? +bool compare_constants_data(const std::shared_ptr &op, + const std::shared_ptr &ref) { + switch (op->get_element_type()) { + case ngraph::element::Type_t::boolean: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::bf16: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::f16: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::f32: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::f64: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::i8: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::i16: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::i32: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::i64: + return compare_constants_data(op, ref); + // TODO cast_vector doesn't support u1 now +// case ngraph::element::Type_t::u1: +// return compare_constants_data(op, ref); + case ngraph::element::Type_t::u8: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::u16: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::u32: + return compare_constants_data(op, ref); + case ngraph::element::Type_t::u64: + return compare_constants_data(op, ref); + default: + std::cerr << "Can't compare constants" << op << " with " << ref << "\n" << "Unsupported data type"; + return false; + } +} + +const char *SingleOpMatcher::name = "generic_single_op"; +bool +SingleOpMatcher::same_op_type(const std::shared_ptr &node, const std::shared_ptr &ref) const { + return node->get_type_info().name == ref->get_type_info().name && + node->get_type_info().version == ref->get_type_info().version; +} + +bool +SingleOpMatcher::match_inputs(const std::shared_ptr &node, const std::shared_ptr &ref) const { + if (node->get_input_size() != ref->get_input_size()) { + return false; + } + for (size_t i = 0; i < node->get_input_size(); ++i) { + bool rankIsEqual = node->get_input_tensor(i).get_partial_shape().rank() == + ref->get_input_tensor(i).get_partial_shape().rank(); + bool elemTypeIsEqual = node->get_input_tensor(i).get_element_type() == + ref->get_input_tensor(i).get_element_type(); + bool is_dynamic = node->get_input_node_ptr(i)->is_dynamic() == + ref->get_input_node_ptr(i)->is_dynamic(); + if (!(rankIsEqual && elemTypeIsEqual && is_dynamic)) { + return false; + } + } + + return true; +} + +bool +SingleOpMatcher::match_outputs(const std::shared_ptr &node, const std::shared_ptr &ref) const { + if (node->get_output_size() != ref->get_output_size()) { + return false; + } + // Match output element type + for (size_t i = 0; i < node->get_output_size(); ++i) { + if (node->get_output_tensor(i).get_element_type() != + ref->get_output_tensor(i).get_element_type()) { + return false; + } + } + + return true; +} + +bool SingleOpMatcher::same_attrs(const std::shared_ptr &node, const std::shared_ptr &ref) const { + return attributes::compare(node.get(), ref.get(), Comparator::CmpValues::ATTRIBUTES).valid; +} + +bool SingleOpMatcher::match_ports(const std::shared_ptr &node, const std::shared_ptr &ref) const { + const auto &cfg = get_config(node); + const std::vector &ignored_ports = cfg->ignored_ports; + + for (size_t port_id = 0; port_id < node->get_input_size(); ++port_id) { + if (std::any_of(begin(ignored_ports), end(ignored_ports), [=](size_t p){return p == port_id;})) { + continue; + } + const auto &cur_node_input = node->input_value(port_id).get_node_shared_ptr(); + const auto &ref_node_input = ref->input_value(port_id).get_node_shared_ptr(); + + const auto &cur_const_input = std::dynamic_pointer_cast(cur_node_input); + const auto &ref_const_input = std::dynamic_pointer_cast(ref_node_input); + + // Check that both OP an reference port inputs are constant and have same data + if (cur_const_input && ref_const_input && + !compare_constants_data(cur_const_input, ref_const_input)) { + return false; + // Check that input nodes on the port both not constants + } else if ((cur_const_input && !ref_const_input) || (!cur_const_input && ref_const_input)) { + return false; + } + } + return true; +} +bool SingleOpMatcher::match(const std::shared_ptr &node, const std::shared_ptr &ref) const { + return same_op_type(node, ref) && + match_inputs(node, ref) && + match_outputs(node, ref) && + same_attrs(node, ref) && + match_ports(node, ref); +} + +SingleOpMatcher::SingleOpMatcher() { + default_configs = { + std::make_shared>(std::vector{}, std::vector{0}), + std::make_shared>(std::vector{}, + std::vector{0, 1, 2, 3, 4}), + std::make_shared>(std::vector{}, std::vector{0, 1}), + }; +} diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/op_cloner.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/op_cloner.cpp new file mode 100644 index 00000000000000..703c73a8b66a6c --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/op_cloner.cpp @@ -0,0 +1,154 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "op_cloner.hpp" +#include "ngraph/opsets/opset6.hpp" +#include "common_test_utils/data_utils.hpp" + +namespace SubgraphsDumper { +namespace { +const std::shared_ptr clone(const std::shared_ptr &node) { + ngraph::OutputVector op_inputs; + for (const auto &input : node->inputs()) { + if (ngraph::op::is_constant(input.get_source_output().get_node_shared_ptr())) { + op_inputs.push_back(input.get_source_output().get_node_shared_ptr()->clone_with_new_inputs({})); + } else { + op_inputs.push_back(std::make_shared(input.get_element_type(), + input.get_source_output().get_shape())); + } + } + auto op_clone = node->clone_with_new_inputs(op_inputs); + return op_clone; +} + +template +std::shared_ptr +copy_constant_with_randomization(const std::shared_ptr &const_node) { + std::vector data = const_node->cast_vector(); + if (!data.empty()) { + auto min_max = std::minmax_element(data.begin(), data.end()); + // Apply randomization only if constant stores several non-equal values + if (ngraph::shape_size(const_node->get_shape()) != 1 && + *min_max.first - *min_max.second > std::numeric_limits::epsilon()) { + CommonTestUtils::fill_vector(data, *min_max.first, *min_max.second); + } + } + return std::make_shared(const_node->get_element_type(), const_node->get_shape(), data); +} + + +std::shared_ptr +copy_constant_with_randomization(const std::shared_ptr &node, + const std::shared_ptr &constant_input) { + switch (node->get_element_type()) { + case ngraph::element::Type_t::boolean: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::bf16: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::f16: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::f32: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::f64: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::i8: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::i16: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::i32: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::i64: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::u1: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::u8: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::u16: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::u32: + return copy_constant_with_randomization(constant_input); + case ngraph::element::Type_t::u64: + return copy_constant_with_randomization(constant_input); + default: + return {}; + } +} + +std::shared_ptr clone_weightable_node(const std::shared_ptr &node, + const std::vector &weight_ports) { + ngraph::OutputVector op_inputs; + for (size_t i = 0; i < node->get_input_size(); ++i) { + const auto input = node->input(i).get_source_output().get_node_shared_ptr(); + const auto constant_input = std::dynamic_pointer_cast(input); + if (!constant_input) { + op_inputs.push_back(std::make_shared(node->get_input_tensor(i).get_element_type(), + node->get_input_tensor(i).get_shape())); + continue; + } + if (std::find(weight_ports.begin(), weight_ports.end(), i) == weight_ports.end()) { + op_inputs.push_back(input->clone_with_new_inputs({})); + continue; + } + op_inputs.push_back(copy_constant_with_randomization(node, constant_input)); + } + auto op_clone = node->clone_with_new_inputs(op_inputs); + return op_clone; +} + +// Clone nodes requiring weights randomization +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +const std::shared_ptr clone(const std::shared_ptr &node) { + return clone_weightable_node(node, {1}); +} + +template +const std::shared_ptr clone_node(const std::shared_ptr &node) { + return clone(ngraph::as_type_ptr(node)); +} +} // namespace + +#define NGRAPH_OP(NAME, NAMESPACE) {NAMESPACE::NAME::type_info, clone_node}, + +const ClonersMap::cloners_map_type ClonersMap::cloners{ +#include +#include +#include +#include +#include +#include +}; +#undef NGRAPH_OP + +} // namespace SubgraphsDumper diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/ops_cache.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/ops_cache.cpp new file mode 100644 index 00000000000000..41e276e10f9cb3 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/ops_cache.cpp @@ -0,0 +1,124 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include +#include +#include "inference_engine.hpp" +#include "common_test_utils/file_utils.hpp" + + +using namespace SubgraphsDumper; + + +void OPCache::update_ops_cache(const std::shared_ptr &op, + const std::string &source_model) { + const bool op_found = [&] { + for (auto &&it : m_ops_cache) { + if (manager.match_any(it.first, op)) { + it.second.found_in_models[source_model] += 1; + return true; + } + } + return false; + }(); + if (!op_found) { + // TODO: Extend for subgraphs caching + const auto& clone_fn = SubgraphsDumper::ClonersMap::cloners.at(op->get_type_info()); + m_ops_cache.emplace_back(clone_fn(op), OPInfo(source_model)); + } +} + +void OPCache::update_ops_cache(const std::shared_ptr &func, const std::string &source_model) { + func->validate_nodes_and_infer_types(); + for (const auto &op : func->get_ordered_ops()) { + if (ngraph::is_type(op) || + ngraph::is_type(op) || + ngraph::is_type(op)) { + continue; + } + update_ops_cache(op, source_model); + } +} + +void OPCache::serialize_cached_ops(const std::string &serialization_dir) { + if (!CommonTestUtils::directoryExists(serialization_dir)) { + CommonTestUtils::createDirectoryRecursive(serialization_dir); + } + for (const auto &op : m_ops_cache) { + try { + auto rt_info = op.first->get_rt_info(); + std::cout << "Serializing function wrapping op " << op.first << std::endl; + if (rt_info.find("source_model") != rt_info.end()) { + auto val = rt_info["source_model"]; + auto source_model = std::dynamic_pointer_cast>(val); + if (source_model != nullptr) { + std::cout << " Taken from model: " << source_model->get() << std::endl; + } + } + + ngraph::ParameterVector params; + for (size_t i = 0; i < op.first->get_input_size(); ++i) { + if (ngraph::op::is_parameter(op.first->get_input_node_ptr(i))) { + auto param = std::dynamic_pointer_cast( + op.first->get_input_node_shared_ptr(i)); + params.push_back(param); + } + } + ngraph::ResultVector results; + for (auto &out : op.first->outputs()) { + results.push_back(std::make_shared(out)); + } + auto function = std::make_shared(results, params); + + bool output_shape_is_dynamic = false; + // TODO: Check 'o.get_partial_shape().is_static()' failed at + // inference-engine/src/transformations/src/transformations/serialize.cpp:680: + for (size_t i = 0; i < function->get_output_size(); ++i) { + if (function->get_output_partial_shape(i).is_dynamic()) { + std::cerr << "Can't serialize function related to op: " << std::endl << op.first << std::endl << + "Output shape on port " << i << " is dynamic" << std::endl; + output_shape_is_dynamic = true; + break; + } + } + if (output_shape_is_dynamic) { + continue; + } + function->validate_nodes_and_infer_types(); + // TODO: How to define element type for multi-output ops + auto op_el_type = op.first->get_output_element_type(0).get_type_name(); + auto current_op_folder = serialization_dir + CommonTestUtils::FileSeparator + + op.first->get_type_info().name + CommonTestUtils::FileSeparator + op_el_type; + std::cout << current_op_folder << std::endl; + if (!CommonTestUtils::directoryExists(current_op_folder)) { + CommonTestUtils::createDirectoryRecursive(current_op_folder); + } + auto op_name = op.first->get_name(); + std::replace(op_name.begin(), op_name.end(), '/', '_'); + std::replace(op_name.begin(), op_name.end(), '\\', '_'); + // TODO: Possible names collision + auto xml_path = current_op_folder + CommonTestUtils::FileSeparator + op_name + ".xml"; + auto bin_path = current_op_folder + CommonTestUtils::FileSeparator + op_name + ".bin"; + auto mapping = current_op_folder + CommonTestUtils::FileSeparator + op_name + ".csv"; + auto cnn_net = InferenceEngine::CNNNetwork(function); + cnn_net.serialize(xml_path, bin_path); + + std::string delimiter = ","; + std::ofstream out(mapping); + out << "Model" << delimiter << "counters\n"; + // TODO: rethink format of mapping - + // how to store both initial source model and usage statistics in one file? + out << op.second.source_model << delimiter << "source\n"; + for (const auto &m : op.second.found_in_models) { + out << m.first << delimiter << m.second << "\n"; + } + out.close(); + } catch (std::exception &e) { + std::cerr << "Failed to serialize function related to op" << op.first << std::endl + << "Exception occurred: " << e.what() << std::endl; + } + } +} diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/precomp.hpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/precomp.hpp new file mode 100644 index 00000000000000..d6e9a611080da9 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/precomp.hpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/CMakeLists.txt b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/CMakeLists.txt new file mode 100644 index 00000000000000..802f596e17d0ce --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/CMakeLists.txt @@ -0,0 +1,29 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME subgraphsDumperTests) + +list(APPEND DEPENDENCIES + unitTestUtils + ngraph + ) + +addIeTargetTest( + NAME ${TARGET_NAME} + ROOT ${CMAKE_CURRENT_SOURCE_DIR} + ADDITIONAL_SOURCE_DIRS ${OpenVINO_MAIN_SOURCE_DIR}/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/matchers + INCLUDES + ${OpenVINO_MAIN_SOURCE_DIR}/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/include + $ + DEPENDENCIES + ${DEPENDENCIES} + LINK_LIBRARIES + PRIVATE + ${DEPENDENCIES} + ADD_CPPLINT +) + +ie_faster_build(${TARGET_NAME} + PCH PRIVATE "${OpenVINO_MAIN_SOURCE_DIR}/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/src/precomp.hpp" + ) diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/matchers/generic_single_op.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/matchers/generic_single_op.cpp new file mode 100644 index 00000000000000..d2e7a701e635e3 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/matchers/generic_single_op.cpp @@ -0,0 +1,89 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "matchers/single_op.hpp" +#include "ngraph/ops.hpp" + +using namespace ngraph::op; +using namespace ngraph; +using ngraph::element::Type_t; + +class SingleOpMatcherTest : public ::testing::Test { +protected: + void SetUp() { + matcher = SubgraphsDumper::SingleOpMatcher(); + } + + SubgraphsDumper::SingleOpMatcher matcher; +}; + + +// Check that different values of constant nodes on port 0 (default value) are ignored in match() +TEST_F(SingleOpMatcherTest, AllPortsAreConsts_IgnoreConstPortVals) { + const auto const1 = std::make_shared(Type_t::f32, Shape({5, 5}), 1); + const auto shape_pattern = std::make_shared(Type_t::i64, Shape({2}), std::vector{1, 25}); + const auto op1 = std::make_shared(const1, shape_pattern, false); + + const auto const2 = std::make_shared(Type_t::f32, Shape({5, 5}), 2); + const auto op2 = std::make_shared(const2, shape_pattern, false); + ASSERT_TRUE(matcher.match(op1, op2)); +} + +// Check match of equal nodes +TEST_F(SingleOpMatcherTest, AllPortsAreParams_NodesEqual) { + const auto param1 = std::make_shared(element::Type_t::f32, Shape({10, 10})); + const auto param2 = std::make_shared(element::Type_t::f32, Shape({10, 20})); + const auto op1 = std::make_shared<::Concat>(OutputVector({param1, param2}), 1); + const auto op2 = std::make_shared<::Concat>(OutputVector({param1, param2}), 1); + ASSERT_TRUE(matcher.match(op1, op2)); +} + +// Check nodes doesn't match - different input ranks +TEST_F(SingleOpMatcherTest, AllPortsAreParams_RanksNotEqual) { + const auto param1 = std::make_shared(element::Type_t::f32, Shape({10, 10})); + const auto param2 = std::make_shared(element::Type_t::f32, Shape({10, 20})); + const auto op1 = std::make_shared<::Concat>(OutputVector({param1, param2}), 1); + + const auto param3 = std::make_shared(element::Type_t::f32, Shape({10, 40, 10})); + const auto param4 = std::make_shared(element::Type_t::f32, Shape({10, 40, 10})); + const auto op2 = std::make_shared<::Concat>(OutputVector({param3, param4}), 1); + ASSERT_FALSE(matcher.match(op1, op2)); +} + +// Check nodes doesn't match - different input element types +TEST_F(SingleOpMatcherTest, AllPortsAreParams_TypesNotEqual) { + const auto param1 = std::make_shared(element::Type_t::f32, Shape({10, 10})); + const auto param2 = std::make_shared(element::Type_t::f32, Shape({10, 20})); + const auto op1 = std::make_shared<::Concat>(OutputVector({param1, param2}), 1); + + const auto param3 = std::make_shared(element::Type_t::f16, Shape({10, 10})); + const auto param4 = std::make_shared(element::Type_t::f16, Shape({10, 20})); + const auto op2 = std::make_shared<::Concat>(OutputVector({param3, param4}), 1); + ASSERT_FALSE(matcher.match(op1, op2)); +} + +// Check nodes doesn't match - different input element types +TEST_F(SingleOpMatcherTest, AllPortsAreParams_AttrsNotEqual) { + const auto param1 = std::make_shared(element::Type_t::f32, Shape({10, 10, 10})); + const auto param2 = std::make_shared(element::Type_t::f32, Shape({10, 10, 10})); + const auto op1 = std::make_shared<::Concat>(OutputVector({param1, param2}), 1); + + const auto param3 = std::make_shared(element::Type_t::f32, Shape({10, 10, 10})); + const auto param4 = std::make_shared(element::Type_t::f32, Shape({10, 10, 10})); + const auto op2 = std::make_shared<::Concat>(OutputVector({param3, param4}), 2); + ASSERT_FALSE(matcher.match(op1, op2)); +} + +// Check nodes Add OPs match with different constants on ports +TEST_F(SingleOpMatcherTest, ChecAddOpConfiguration) { + const auto const1 = std::make_shared(Type_t::f32, Shape({5, 5}), 1); + const auto const2 = std::make_shared(Type_t::f32, Shape({5, 5}), 2); + const auto op1 = std::make_shared(const1, const2); + + const auto const3 = std::make_shared(Type_t::f32, Shape({5, 5}), 3); + const auto const4 = std::make_shared(Type_t::f32, Shape({5, 5}), 4); + const auto op2 = std::make_shared(const1, const2); + ASSERT_TRUE(matcher.match(op1, op2)); +} \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/matchers/matchers_config.cpp b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/matchers/matchers_config.cpp new file mode 100644 index 00000000000000..263d316a50e48b --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/subgraphs_dumper/tests/matchers/matchers_config.cpp @@ -0,0 +1,56 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "matchers/base_matcher.hpp" +#include "ngraph/ops.hpp" + +using namespace ngraph::op; +using namespace ngraph; +using ngraph::element::Type_t; + +class MatcherConfigTest : public ::testing::Test { +protected: + void SetUp() { + const auto const1 = std::make_shared(Type_t::f32, Shape({5, 5}), 1); + const auto const2 = std::make_shared(Type_t::f32, Shape({5, 5}), 2); + node = std::make_shared(const1, const2); + } + + std::shared_ptr node; +}; + + +// Check that matcher configuration for operation created successfully and all parameters are set +TEST_F(MatcherConfigTest, ParametersAreSet) { + std::vector ignored_ports = {0}; + std::vector ignored_attrs = {"attr"}; + SubgraphsDumper::MatcherConfig matcher_cfg(ignored_attrs, ignored_ports); + ASSERT_TRUE(matcher_cfg.op_in_config(node)); + ASSERT_TRUE(matcher_cfg.ignored_ports == ignored_ports); + ASSERT_TRUE(matcher_cfg.ignored_attributes == ignored_attrs); + ASSERT_FALSE(matcher_cfg.is_fallback_config); +} + +// Check that fallback matcher configuration created successfully and all parameters are set +TEST_F(MatcherConfigTest, FallbackConfig) { + std::vector ignored_ports = {0}; + std::vector ignored_attrs = {"attr"}; + SubgraphsDumper::MatcherConfig<> matcher_cfg(ignored_attrs, ignored_ports); + ASSERT_FALSE(matcher_cfg.op_in_config(node)); + ASSERT_TRUE(matcher_cfg.ignored_ports == ignored_ports); + ASSERT_TRUE(matcher_cfg.ignored_attributes == ignored_attrs); + ASSERT_TRUE(matcher_cfg.is_fallback_config); +} + +// Check that fallback matcher configuration created with default constructor +TEST_F(MatcherConfigTest, FallbackConfigDefaultConstructor) { + std::vector ignored_ports = {}; + std::vector ignored_attrs = {}; + auto matcher_cfg = SubgraphsDumper::MatcherConfig<>(); + ASSERT_FALSE(matcher_cfg.op_in_config(node)); + ASSERT_TRUE(matcher_cfg.ignored_ports == ignored_ports); + ASSERT_TRUE(matcher_cfg.ignored_attributes == ignored_attrs); + ASSERT_TRUE(matcher_cfg.is_fallback_config); +} \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/CMakeLists.txt b/inference-engine/tests/functional/plugin/conformance/test_runner/CMakeLists.txt new file mode 100644 index 00000000000000..de7e630c85fffe --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/CMakeLists.txt @@ -0,0 +1,32 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME conformanceTests) + +list(APPEND EXPORT_DEPENDENCIES + gflags + funcSharedTests + ) + +addIeTargetTest( + NAME ${TARGET_NAME} + ROOT "${CMAKE_CURRENT_SOURCE_DIR}/include" + ADDITIONAL_SOURCE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/src + ADD_CPPLINT + INCLUDES + PUBLIC + "${CMAKE_CURRENT_SOURCE_DIR}/include" + LINK_LIBRARIES + PUBLIC + ${EXPORT_DEPENDENCIES} + DEPENDENCIES + ${EXPORT_DEPENDENCIES} + LABELS + CONFORMANCE +) + +ie_faster_build(${TARGET_NAME} + PCH PRIVATE "src/precomp.hpp" + ) diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/README.md b/inference-engine/tests/functional/plugin/conformance/test_runner/README.md new file mode 100644 index 00000000000000..6b7c76c45677d4 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/README.md @@ -0,0 +1,46 @@ +# Conformance test runner + +## Description +Conformance suit is a set of tests with parameters independent from plug-in specific and limitations. It contains: +* `ReadIR`. Allow to read IRs from folders recursive, infer it and compare results with reference. + +## How to build +Run the following command in build directory: +1. Generate CMake project: + ``` + cmake -DENABLE_FUNCTIONAL_TESTS=ON .. + ``` +2. Build the target: + ``` + make conformanceTests + ``` + +## How to run +The target is able to take the following command-line arguments: +* `-h` prints target command-line options with description. +* `--device` specifies target device. +* `--input_folders` specifies folders with IRs to run. The separator is `,`. +* `--disable_test_config` allows to ignore all skipped tests with the exception of `DISABLED_` prefix using. +* `--extend_report` allows not to re-write device results to the report (add results of this run to the existing). +* All `gtest` command-line parameters + +The result of execution is `report.xml` file. It demonstrates tests statistic like pass rate, passed, crashed, skipped and failed tests per operation for +devices. + +> **NOTE**: +> +> Using of GTest parallel tool to run `conformanceTests` helps to report crashed tests and collect correct statistic +> after unexpected crashes. +> +> The example of usage is: +> ``` +> python3 gtest_parallel.py /opt/repo/openvino/bin/intel64/Debug/conformanceTests -d . --gtest_filter=*1613473581844763495*:*roi_align*:*PSROIPooling*:*Add*:*BinaryConv* -- --input_folders=/opt/repo/roi_align,/opt/repo/omz/out --device=CPU +> ``` +> All arguments after `--` symbol is forwarding to `conformanceTests` target. + +## How to build operation coverage report +Run [the script](./../../../../ie_test_utils/functional_test_utils/layer_tests_summary/summarize.py) to generate `html` report. +The example of using the script is: +``` +python3 summarize.py --xml /opt/repo/infrastructure-master/thirdparty/gtest-parallel/report.xml --out /opt/repo/infrastructure-master/thirdparty/gtest-parallel/ +``` \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/include/conformance.hpp b/inference-engine/tests/functional/plugin/conformance/test_runner/include/conformance.hpp new file mode 100644 index 00000000000000..d7ac9207735291 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/include/conformance.hpp @@ -0,0 +1,10 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +namespace ConformanceTests { + +extern const char* targetDevice; +extern std::vector IRFolderPaths; + +} // namespace ConformanceTests diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/include/gflag_config.hpp b/inference-engine/tests/functional/plugin/conformance/test_runner/include/gflag_config.hpp new file mode 100644 index 00000000000000..a5c184768cc55b --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/include/gflag_config.hpp @@ -0,0 +1,47 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +static const char help_message[] = "Print a usage message."; +static const char disable_test_config_message[] = "Optional. Ignore tests skipping rules and run all the test (except those which are skipped with DISABLED " + "prefix). Default value is true"; +static const char extend_report_config_message[] = "Optional. Extend operation coverage report without overwriting the device results." + "Mutually exclusive with --report_unique_name. Default value is false"; +static const char target_device_message[] = "Required. Specify the target device for Conformance Test Suite " + "(the list of available devices is shown below). Default value is CPU. " + "Use \"-d HETERO:\" format to specify HETERO plugin. " + "The application looks for a suitable plugin for the specified device."; +static const char input_folders_message[] = "Required. Paths to the input folders with IRs. Delimiter is `,` symbol."; +static const char output_folder_message[] = "Optional. Paths to the output folder to save report. Default value is \".\""; +static const char report_unique_name_message[] = "Optional. Allow to save report with unique name (report_pid_timestamp.xml). " + "Mutually exclusive with --extend_report. Default value is false"; + +DEFINE_bool(h, false, help_message); +DEFINE_string(device, "CPU", target_device_message); +DEFINE_string(input_folders, ".", input_folders_message); +DEFINE_string(output_folder, ".", output_folder_message); +DEFINE_bool(disable_test_config, true, disable_test_config_message); +DEFINE_bool(extend_report, false, extend_report_config_message); +DEFINE_bool(report_unique_name, false, report_unique_name_message); + +/** +* @brief This function shows a help message +*/ +static void showUsage() { + std::cout << std::endl; + std::cout << "Conformance tests [OPTION]" << std::endl; + std::cout << "Options:" << std::endl; + std::cout << std::endl; + std::cout << " -h " << help_message << std::endl; + std::cout << " --disable_test_config " << disable_test_config_message << std::endl; + std::cout << " --extend_report " << extend_report_config_message << std::endl; + std::cout << " --report_unique_name " << extend_report_config_message << std::endl; + std::cout << " --device " << target_device_message << std::endl; + std::cout << " --input_folders \"\" " << input_folders_message << std::endl; + std::cout << " --output_folder \"\" " << output_folder_message << std::endl; +} \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/src/core_config.cpp b/inference-engine/tests/functional/plugin/conformance/test_runner/src/core_config.cpp new file mode 100644 index 00000000000000..e75091f571fa70 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/src/core_config.cpp @@ -0,0 +1,8 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "functional_test_utils/core_config.hpp" + +void CoreConfiguration(LayerTestsUtils::LayerTestsCommon* test) { +} diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/src/main.cpp b/inference-engine/tests/functional/plugin/conformance/test_runner/src/main.cpp new file mode 100644 index 00000000000000..b079df3f1ed5b7 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/src/main.cpp @@ -0,0 +1,65 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "shared_test_classes/base/layer_test_utils.hpp" + +#include "gflag_config.hpp" +#include "conformance.hpp" + +static std::vector splitStringByDelimiter(std::string str, const std::string& delimiter = ",") { + size_t delimiterPos; + std::vector irPaths; + while ((delimiterPos = str.find(delimiter)) != std::string::npos) { + irPaths.push_back(str.substr(0, delimiterPos)); + str = str.substr(delimiterPos + 1); + } + irPaths.push_back(str); + return irPaths; +} + +int main(int argc, char* argv[]) { + // Workaround for Gtest + Gflag + std::vector argv_gflags_vec; + int argc_gflags = 0; + for (int i = 0; i < argc; ++i) { + std::string arg(argv[i]); + if (arg.find("--gtest") == std::string::npos) { + argv_gflags_vec.emplace_back(argv[i]); + argc_gflags++; + } + } + char** argv_gflags = argv_gflags_vec.data(); + + // ---------------------------Parsing and validation of input args-------------------------------------- + gflags::ParseCommandLineNonHelpFlags(&argc_gflags, &argv_gflags, true); + if (FLAGS_h) { + showUsage(); + return 0; + } + if (FLAGS_extend_report && FLAGS_report_unique_name) { + std::cout << "Using mutually exclusive arguments: --extend_report and --report_unique_name" << std::endl; + return -1; + } + + if (!FLAGS_disable_test_config) { + FuncTestUtils::SkipTestsConfig::disable_tests_skipping = false; + } + if (FLAGS_extend_report) { + LayerTestsUtils::Summary::setExtendReport(true); + } + if (FLAGS_report_unique_name) { + LayerTestsUtils::Summary::setSaveReportWithUniqueName(true); + } + LayerTestsUtils::Summary::setOutputFolder(FLAGS_output_folder); + + // ---------------------------Initialization of Gtest env ----------------------------------------------- + ConformanceTests::targetDevice = FLAGS_device.c_str(); + ConformanceTests::IRFolderPaths = splitStringByDelimiter(FLAGS_input_folders); + + ::testing::InitGoogleTest(&argc, argv); + ::testing::AddGlobalTestEnvironment(new LayerTestsUtils::TestEnvironment); + return RUN_ALL_TESTS();; +} diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/src/precomp.hpp b/inference-engine/tests/functional/plugin/conformance/test_runner/src/precomp.hpp new file mode 100644 index 00000000000000..23ba10110cf6a9 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/src/precomp.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/subgraph_builders.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/src/read_ir/read_ir.cpp b/inference-engine/tests/functional/plugin/conformance/test_runner/src/read_ir/read_ir.cpp new file mode 100644 index 00000000000000..a5f33b187dab25 --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/src/read_ir/read_ir.cpp @@ -0,0 +1,23 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "common_test_utils/file_utils.hpp" + +#include "read_ir/read_ir.hpp" + +namespace ConformanceTests { +using namespace LayerTestsDefinitions; + +const char* targetDevice = ""; +std::vector IRFolderPaths = {}; + +namespace { +INSTANTIATE_TEST_CASE_P(conformance, + ReadIRTest, + ::testing::Combine( + ::testing::ValuesIn(CommonTestUtils::getFileListByPatternRecursive(IRFolderPaths, std::regex(R"(.*\.xml)"))), + ::testing::Values(targetDevice)), + ReadIRTest::getTestCaseName); +} // namespace +} // namespace ConformanceTests diff --git a/inference-engine/tests/functional/plugin/conformance/test_runner/src/skip_tests_config.cpp b/inference-engine/tests/functional/plugin/conformance/test_runner/src/skip_tests_config.cpp new file mode 100644 index 00000000000000..1d6dd6d336092c --- /dev/null +++ b/inference-engine/tests/functional/plugin/conformance/test_runner/src/skip_tests_config.cpp @@ -0,0 +1,12 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "functional_test_utils/skip_tests_config.hpp" + +std::vector disabledTestPatterns() { + return {}; +} diff --git a/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt b/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt index 32d24a689414b5..abc6cc8fd8f099 100644 --- a/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2019-2021 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/bf16_network_restoring.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/bf16_network_restoring.cpp index 6bd745399e13c5..57b1d99728c87f 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/bf16_network_restoring.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/bf16_network_restoring.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/bfloat16_helpers.hpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/bfloat16_helpers.hpp index 8a73c3f1143b18..5fbe3d6c89be2c 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/bfloat16_helpers.hpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/bfloat16_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/concat_in_place.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/concat_in_place.cpp index c9084011a674da..242c09e98ff1e1 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/concat_in_place.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/concat_in_place.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_add.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_add.cpp index 85d0092574b8af..bcbe3d4d7a3e01 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_add.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -119,26 +119,6 @@ TEST_P(ConvAdd, CompareWithRefImpl) { test(); }; -// CPU plug-in failure in that case - -//INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_NoReshape, ConvAdd, -// ::testing::Combine( -// ::testing::Values(Precision::FP32), -// ::testing::Values(Precision::FP32), -// ::testing::Values(SizeVector({1, 256, 38, 38})), -// ::testing::Values(SizeVector()), -// ::testing::Values(CommonTestUtils::DEVICE_CPU)), -// ConvAdd::getTestCaseName); -// -//INSTANTIATE_TEST_CASE_P(smoke_BF16_bfloat16_NoReshape, ConvAdd, -// ::testing::Combine( -// ::testing::Values(Precision::FP32), -// ::testing::Values(Precision::BF16), -// ::testing::Values(SizeVector({1, 256, 38, 38})), -// ::testing::Values(SizeVector()), -// ::testing::Values(CommonTestUtils::DEVICE_CPU)), -// ConvAdd::getTestCaseName); - INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_NoReshape, ConvAdd, ::testing::Combine( ::testing::Values(Precision::FP32), diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_conv.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_conv.cpp index 577b856c6eb754..d18cc7ca6f2311 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_dwconv_relu.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_dwconv_relu.cpp index 24b32eea93b310..9d6c7180d3263f 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_dwconv_relu.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_dwconv_relu.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "bfloat16_helpers.hpp" #include diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_eltwise_depthwise.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_eltwise_depthwise.cpp index 8636624b8ead75..83fc049b678314 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_eltwise_depthwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_eltwise_depthwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,7 +36,7 @@ class ConvEltwiseDepthwise : Precision netPrecision; size_t kernel; CoordinateDiff pads; - string mkldnnPrimitive; + std::string mkldnnPrimitive; protected: std::shared_ptr createGraph(InferenceEngine::Precision netPrecision) { @@ -232,7 +232,7 @@ INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_1x1_depthwise_BF16, ConvEltwiseDepth ::testing::Values(CommonTestUtils::DEVICE_CPU), ::testing::Values(size_t(1)), ::testing::Values(CoordinateDiff({ 0, 0 })), - ::testing::Values(string("jit_avx512_1x1_BF16"))), + ::testing::Values(std::string("jit_avx512_1x1_BF16"))), ConvEltwiseDepthwise::getTestCaseName); INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_gemm_depthwise_BF16, ConvEltwiseDepthwise, @@ -242,7 +242,7 @@ INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_gemm_depthwise_BF16, ConvEltwiseDept ::testing::Values(CommonTestUtils::DEVICE_CPU), ::testing::Values(size_t(3)), ::testing::Values(CoordinateDiff({ 1, 1 })), - ::testing::Values(string("jit_gemm_BF16"))), + ::testing::Values(std::string("jit_avx512_BF16"))), ConvEltwiseDepthwise::getTestCaseName); INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_conv_depthwise_BF16, ConvEltwiseDepthwise, @@ -252,7 +252,7 @@ INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_conv_depthwise_BF16, ConvEltwiseDept ::testing::Values(CommonTestUtils::DEVICE_CPU), ::testing::Values(size_t(3)), ::testing::Values(CoordinateDiff({ 0, 0 })), - ::testing::Values(string("jit_avx512_BF16"))), + ::testing::Values(std::string("jit_avx512_BF16"))), ConvEltwiseDepthwise::getTestCaseName); } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_relu_pool_conv_relu_pool.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_relu_pool_conv_relu_pool.cpp index 09a0098e127db3..438510c3eff1d9 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_relu_pool_conv_relu_pool.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/conv_relu_pool_conv_relu_pool.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -164,7 +164,7 @@ class ConvReLUPoolConvReLUPool : public BasicBF16Test { // performance counters expectedPrecisions["Convolution_1"] = "FP32"; expectedPrecisions["ReLU_1"] = "ndef"; - expectedPrecisions["AvgPool_1"] = netPrecision == Precision::BF16 ? "BF16" : "FP32"; + expectedPrecisions["AvgPool_1"] = "BF16"; expectedPrecisions["Convolution_2"] = "BF16"; expectedPrecisions["ReLU_2"] = "ndef"; expectedPrecisions["MaxPool_2"] = "BF16"; diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_max.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_max.cpp index 44f78574513976..779079f778de60 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_max.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_max.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_x3.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_x3.cpp index bb1b2ef3914560..a95ee393681b4e 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_x3.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/elt_x3.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -187,26 +187,6 @@ TEST_P(Elt_x3, CompareWithRefImpl) { test(); }; -// CPU plug-in failure in that case - -//INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_NoReshape, Elt_x3, -// ::testing::Combine( -// ::testing::Values(Precision::FP32), -// ::testing::Values(Precision::FP32), -// ::testing::Values(SizeVector({1, 256, 38, 38})), -// ::testing::Values(SizeVector()), -// ::testing::Values(CommonTestUtils::DEVICE_CPU)), -// Elt_x3::getTestCaseName); -// -//INSTANTIATE_TEST_CASE_P(smoke_BF16_bfloat16_NoReshape, Elt_x3, -// ::testing::Combine( -// ::testing::Values(Precision::FP32), -// ::testing::Values(Precision::BF16), -// ::testing::Values(SizeVector({1, 256, 38, 38})), -// ::testing::Values(SizeVector()), -// ::testing::Values(CommonTestUtils::DEVICE_CPU)), -// Elt_x3::getTestCaseName); - INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_NoReshape, Elt_x3, ::testing::Combine( ::testing::Values(Precision::FP32), diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/faster_100_5_1_1_conv.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/faster_100_5_1_1_conv.cpp index cf8b1deb79ded7..2ee786e2ee8ded 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/faster_100_5_1_1_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/faster_100_5_1_1_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_multiply.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_multiply.cpp index c6f2fac37779f3..a5c2af32afda86 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_multiply.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_multiply.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -93,14 +93,14 @@ class Gather_multiply : public BasicBF16Test { fnPtr = createGraph(netPrecision); // STAGE2: set up safe threshold <= 5% from maximum value of output tensor - threshold = 0.1f; // Max in fp32 network by output: 21.7285 + threshold = 0.4f; // Max in fp32 network by output: 9.20144 // STAGE3: // filling of expected precision of layer execution defined by precisoin of input tensor to the primitive and reflected in // performance counters expectedPrecisions["Matmul_0"] = "BF16"; - expectedPrecisions["Mul_1"] = "FP32"; + expectedPrecisions["Mul_1"] = "BF16"; } }; @@ -108,24 +108,21 @@ TEST_P(Gather_multiply, CompareWithRefImpl) { test(); }; +INSTANTIATE_TEST_CASE_P(smoke_BF16_bfloat16_NoReshape, Gather_multiply, + ::testing::Combine( + ::testing::Values(Precision::FP32), + ::testing::Values(Precision::BF16), + ::testing::Values(SizeVector({2048, 64})), + ::testing::Values(SizeVector()), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + Gather_multiply::getTestCaseName); INSTANTIATE_TEST_CASE_P(smoke_FP32_bfloat16_NoReshape, Gather_multiply, ::testing::Combine( ::testing::Values(Precision::FP32), ::testing::Values(Precision::FP32), - ::testing::Values(SizeVector({1, 4})), + ::testing::Values(SizeVector({2048, 64})), ::testing::Values(SizeVector()), ::testing::Values(CommonTestUtils::DEVICE_CPU)), Gather_multiply::getTestCaseName); -// CPU plug-in failure in that case - -//INSTANTIATE_TEST_CASE_P(smoke_BF16_bfloat16_NoReshape, Gather_multiply, -// ::testing::Combine( -// ::testing::Values(Precision::FP32), -// ::testing::Values(Precision::BF16), -// ::testing::Values(SizeVector({1, 4})), -// ::testing::Values(SizeVector()), -// ::testing::Values(CommonTestUtils::DEVICE_CPU)), -// Gather_multiply::getTestCaseName); - } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_x2_add_mul_relu_concat_matmul.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_x2_add_mul_relu_concat_matmul.cpp index 44699e6f718f3a..2ccaa066312d16 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_x2_add_mul_relu_concat_matmul.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/gather_x2_add_mul_relu_concat_matmul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/memory_conv.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/memory_conv.cpp index ca5ca33c134d23..1540bbacc0f76a 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/memory_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/memory_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/mobilenet_ssd_with_branching.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/mobilenet_ssd_with_branching.cpp index 7b678cecc4fea4..6a640bb8e5abb7 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/mobilenet_ssd_with_branching.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/mobilenet_ssd_with_branching.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "bfloat16_helpers.hpp" #include diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_conv.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_conv.cpp index 5c4483db7ca900..0a4d0aee7a5295 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_relu_conv.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_relu_conv.cpp index 7353aa39f122f2..2fb3871a4967de 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_relu_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_relu_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_scaleshift.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_scaleshift.cpp index 0116a5f10584ab..5160bc9d9ac793 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_scaleshift.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_eltwise_scaleshift.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_elu_conv.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_elu_conv.cpp index 8bf1a659285dd4..5ba4893e2e768d 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_elu_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_elu_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_relu.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_relu.cpp index 3b116fcfdc55e5..416f6262f957b5 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_relu.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_concat_relu.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_concat_relu.cpp index 39ddb921eb1a05..46928de50a04ff 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_concat_relu.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_concat_relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_eltwise.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_eltwise.cpp index c2366ba8c9aea8..99908120e0ac32 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed1_eltwise.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed1_eltwise.cpp index 2b89f60ff674da..47a21b7bd86cd6 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed1_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed1_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed2_eltwise.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed2_eltwise.cpp index a50b768a3cd866..13fe62fb00eefa 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed2_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x2_mixed2_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x3_eltwise.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x3_eltwise.cpp index 24d497bb8d3ea8..064692e44a876a 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x3_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_conv_x3_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x2_conv_x2_eltwise.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x2_conv_x2_eltwise.cpp index 373dd1585b5a69..0bb63e3629c0d9 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x2_conv_x2_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x2_conv_x2_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x3_conv_eltwise_relu.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x3_conv_eltwise_relu.cpp index aa3bc613f25678..49dfd1bbb8ec83 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x3_conv_eltwise_relu.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/scaleshift_x3_conv_eltwise_relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/tail_fp32_optimization.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/tail_fp32_optimization.cpp index b08cbc7216450f..c9e5c71a00b708 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/tail_fp32_optimization.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/tail_fp32_optimization.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/bfloat16/topk_inputs_i32.cpp b/inference-engine/tests/functional/plugin/cpu/bfloat16/topk_inputs_i32.cpp index d3daa9a206795e..aa8e2e8c28aae7 100644 --- a/inference-engine/tests/functional/plugin/cpu/bfloat16/topk_inputs_i32.cpp +++ b/inference-engine/tests/functional/plugin/cpu/bfloat16/topk_inputs_i32.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/extension/extension.cpp b/inference-engine/tests/functional/plugin/cpu/extension/extension.cpp index ac48ca9d7f7b99..93eb83c4f838b7 100644 --- a/inference-engine/tests/functional/plugin/cpu/extension/extension.cpp +++ b/inference-engine/tests/functional/plugin/cpu/extension/extension.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -106,8 +106,6 @@ class CustomAbsExtension : public InferenceEngine::IExtension { void GetVersion(const InferenceEngine::Version*& versionInfo) const noexcept override {} - void Release() noexcept override { delete this; } - void Unload() noexcept override {} std::map getOpSets() override { @@ -329,7 +327,7 @@ TEST(Extension, XmlModelWithExtensionFromDSO) { std::vector input_values{1, 2, 3, 4, 5, 6, 7, 8}; std::vector expected{12, 13, 14, 15, 16, 17, 18, 19}; InferenceEngine::Core ie; - ie.AddExtension(InferenceEngine::make_so_pointer(get_extension_path())); + ie.AddExtension(std::make_shared(get_extension_path())); infer_model(ie, model, input_values, expected); } @@ -406,7 +404,7 @@ opset_import { std::vector input_values{1, 2, 3, 4, 5, 6, 7, 8}; std::vector expected{12, 13, 14, 15, 16, 17, 18, 19}; InferenceEngine::Core ie; - ie.AddExtension(InferenceEngine::make_so_pointer(get_extension_path())); + ie.AddExtension(std::make_shared(get_extension_path())); infer_model(ie, model, input_values, expected); } diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/add_output.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/add_output.cpp index dad200057593c7..b3bfd41267d3ef 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/add_output.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/add_output.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/caching_tests.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/caching_tests.cpp new file mode 100644 index 00000000000000..c9e4d9c4294fe5 --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/caching_tests.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "behavior/caching_tests.hpp" + +using namespace LayerTestsDefinitions; + +namespace { + static const std::vector precisionsCPU = { + ngraph::element::f32, + ngraph::element::f16, + ngraph::element::i32, + ngraph::element::i64, + ngraph::element::i8, + ngraph::element::u8, + ngraph::element::i16, + ngraph::element::u16, + }; + + static const std::vector batchSizesCPU = { + 1, 2 + }; + + INSTANTIATE_TEST_CASE_P(smoke_CachingSupportCase_CPU, LoadNetworkCacheTestBase, + ::testing::Combine( + ::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), + ::testing::ValuesIn(precisionsCPU), + ::testing::ValuesIn(batchSizesCPU), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + LoadNetworkCacheTestBase::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/config.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/config.cpp index 8054011bc0bb0a..e2a09cc6e80fcc 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/config.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_integration.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_integration.cpp index 2babfa7dab97e4..79ff8fe40e8003 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_integration.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_integration.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_threading_tests.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_threading_tests.cpp index 778316b1ccd698..3802907904d41c 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_threading_tests.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/core_threading_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/cpp_holders.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/cpp_holders.cpp index f01442e92780a2..b71d2e3d0a1e67 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/cpp_holders.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/cpp_holders.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/exec_graph_info.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/exec_graph_info.cpp index e8d5ea58f939d9..32c789d1f54c19 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/exec_graph_info.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/exec_graph_info.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request.cpp index 28ac4210268438..4323e803058fb8 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_callback.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_callback.cpp index d147be3aa823a8..6d616300a5c293 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_callback.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_callback.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_cancellation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_cancellation.cpp index 2598acad66f14a..612d9047208635 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_cancellation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_cancellation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_config.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_config.cpp index eafbb32c7d95a0..40f6c58d9aa055 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_config.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_input.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_input.cpp index 8357803b620369..efd3684a5c038e 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_input.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_input.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_output.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_output.cpp index 0197b14b35809d..d041a358182493 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_output.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/infer_request_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/invalid_cases/proposal.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/invalid_cases/proposal.cpp index cf527db9931957..dd8c3167e121e5 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/invalid_cases/proposal.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/invalid_cases/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/layout.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/layout.cpp index efb734cb5908d2..908ec597e0d340 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/layout.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/layout.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/memory_states.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/memory_states.cpp index 0a7bc37cb63c01..548c7d05311ca7 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/memory_states.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/memory_states.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/perf_counters.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/perf_counters.cpp index 79acae75929185..ff9a8063ae0690 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/perf_counters.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/perf_counters.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/preprocessing.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/preprocessing.cpp index a0106b02350a92..0d9533b63dda9c 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/preprocessing.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/preprocessing.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob.cpp index 4cd4ae4f902692..ce1e87d5a5133e 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob_of_kind.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob_of_kind.cpp index b50f301e30fa39..6acf155d033e18 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob_of_kind.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_blob_of_kind.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_preprocess.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_preprocess.cpp index a11831dd560f1e..6086c902524c67 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_preprocess.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/set_preprocess.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,6 +20,10 @@ namespace { {{InferenceEngine::PluginConfigParams::KEY_CPU_THROUGHPUT_STREAMS, "0"}, {InferenceEngine::PluginConfigParams::KEY_CPU_THREADS_NUM, "1"}} }; + const std::vector> heteroConfigs = { + {{ "TARGET_FALLBACK" , CommonTestUtils::DEVICE_CPU}} + }; + const std::vector> multiConfigs = { {{ InferenceEngine::MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES , CommonTestUtils::DEVICE_CPU}} }; @@ -31,10 +35,75 @@ namespace { ::testing::ValuesIn(configs)), PreprocessTest::getTestCaseName); + INSTANTIATE_TEST_CASE_P(smoke_Hetero_BehaviorTests, PreprocessTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_HETERO), + ::testing::ValuesIn(heteroConfigs)), + PreprocessTest::getTestCaseName); + INSTANTIATE_TEST_CASE_P(smoke_Multi_BehaviorTests, PreprocessTest, ::testing::Combine( ::testing::ValuesIn(netPrecisions), ::testing::Values(CommonTestUtils::DEVICE_MULTI), ::testing::ValuesIn(multiConfigs)), PreprocessTest::getTestCaseName); + + + const std::vector ioPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::U8 + }; + const std::vector netLayouts = { + InferenceEngine::Layout::NCHW, + // InferenceEngine::Layout::NHWC + }; + + const std::vector ioLayouts = { + InferenceEngine::Layout::NCHW, + InferenceEngine::Layout::NHWC + }; + + INSTANTIATE_TEST_CASE_P(smoke_BehaviorTests, PreprocessConversionTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::ValuesIn(configs)), + PreprocessConversionTest::getTestCaseName); + + INSTANTIATE_TEST_CASE_P(smoke_Hetero_BehaviorTests, PreprocessConversionTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(CommonTestUtils::DEVICE_HETERO), + ::testing::ValuesIn(heteroConfigs)), + PreprocessConversionTest::getTestCaseName); + + INSTANTIATE_TEST_CASE_P(smoke_Multi_BehaviorTests, PreprocessConversionTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(CommonTestUtils::DEVICE_MULTI), + ::testing::ValuesIn(multiConfigs)), + PreprocessConversionTest::getTestCaseName); + } // namespace \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/test_plugin.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/test_plugin.cpp index 6c955e3c0f1c7c..286563e3217975 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/test_plugin.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/test_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/version.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/version.cpp index 222ce2e359d128..49db5c2389d619 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/version.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/behavior/version.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/configuration_tests.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/configuration_tests.cpp index 50b6682c8a6975..dc1e42f28e2ede 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/configuration_tests.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/configuration_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp index 34eed9884d0f3d..6c882e13ab71cb 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/core_config.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/core_config.cpp index fa4330ed1d5f7f..c7b15b9fda3a0d 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/core_config.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/core_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/exec_graph_serialization.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/exec_graph_serialization.cpp index 388085781e3c51..f8bcd35e9a469b 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/exec_graph_serialization.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/exec_graph_serialization.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/keep_assign.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/keep_assign.cpp index 3bd1d5d750d827..bd6d2eec753a01 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/keep_assign.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/keep_assign.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/num_inputs_fusing_bin_conv.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/num_inputs_fusing_bin_conv.cpp index ab56a82e4eb6f7..4ff4c385747dd3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/num_inputs_fusing_bin_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/num_inputs_fusing_bin_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/remove_parameter.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/remove_parameter.cpp index c11d876ee38e01..790a8f91aeda61 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/remove_parameter.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/remove_parameter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/runtime_precision.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/runtime_precision.cpp index 4f518345caa94d..2ddda8ae6a18c8 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/runtime_precision.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/runtime_precision.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp index df8472b9247cca..ebd1d57c3ef107 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/query_network.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/query_network.cpp index 17b7d781786579..ff05d70af9cad7 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/query_network.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/query_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/synthetic.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/synthetic.cpp index 49b063fa6611ee..49f4ddda323f55 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/synthetic.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/hetero/synthetic.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp index e19a1366ce8a86..c90dc6545d6a11 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp index e2f2156b4dee2d..a657058d1feb1f 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp index 80a2e3feadd8a6..fa6166888dfe1e 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp index 8e931284e447b5..5688483d58b110 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp index 5003140a4b450f..05361b264b309f 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp index fc9b03449b93a4..c4f984b8e94a65 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_transformation.cpp index 1660eee108f289..9ece832517f48c 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp index a5ca8f23b68929..f035f132e012b5 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp index 7d1d040000564a..14d92bbea12633 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp index 9ad3f34028a818..4bf07c12a315fc 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp index c5f2e7025dc25d..baf025aefacca9 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp index c567163d5d20c4..cf86089bfd68f5 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp index 627eba3b30f896..fe184eef51659a 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp index 0b63eabaefd737..29124d9503b9c8 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp index bc73f0251f900a..3b897406957e18 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp index 0ea710a3e98e51..6ab6f4e23eba90 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp index 34fab4b80d0c62..5779ec69bee152 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp index e8ebf2784a6f73..e439c53abcefd4 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp index 74f8f0183cb7d0..f59e9bcf8e8ffe 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp index c7a5e7cc8d8c82..189cc02d14b1cd 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp index 9fc732fa285ee3..39a32db4ceeafc 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,6 +25,31 @@ const std::vector testValues = { { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } } }, + { + ngraph::Shape{128, 3}, + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParamsU8I8(), + { + ngraph::element::f32, + { }, + ngraph::element::f32, + { {}, {}, { {0.01f, 0.1f, 1.f}, ngraph::element::f32, {1, 3} } }, + ngraph::element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, + // 1) Multiply by zero + { + ngraph::Shape{1, 3, 16, 16}, + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParamsU8I8(), + { + ngraph::element::f32, + { }, + ngraph::element::f32, + { {}, {}, { {0.01f, 0.f, 0.01f} } }, + ngraph::element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, // 1) Subtract + Multiply { ngraph::Shape{1, 3, 16, 16}, @@ -64,6 +89,19 @@ const std::vector testValues = { { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } } }, + // issue #40611 for FP32 + { + ngraph::Shape{1, 3, 16, 16}, + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParamsU8I8(), + { + { }, + { }, + ngraph::element::i32, + { {ngraph::element::f32}, {}, {} }, + ngraph::element::f32, + { 256ul, {}, { 0.f }, { 25.5f }, { 0.f }, { 25.5f } } + } + }, }; INSTANTIATE_TEST_CASE_P(smoke_LPT, FuseFakeQuantizeTransformation, diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp index ad1f7ebe3a3ac4..927c64cad19e2a 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp index 53a6e40d114d04..252015a0a42c9a 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp index 61398d107af19c..52e9223f208e5a 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp index 87efd2e116df9f..36e81ef438d165 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/groupconvolution_qdq_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/groupconvolution_qdq_transformation.cpp new file mode 100644 index 00000000000000..54f14fb037d20e --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/groupconvolution_qdq_transformation.cpp @@ -0,0 +1,503 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "low_precision_transformations/groupconvolution_qdq_transformation.hpp" +#include "low_precision_transformations/convolution_with_incorrect_weights.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + ngraph::element::f32, + // ngraph::element::f16 +}; + +const std::vector trasformationParamValues = { + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(true), + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(false), +}; + +const std::vector params = { + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Constant Convert + // |U8 |U8 |I8 + // | | | + // Convert Convert Convert Constant + // \FP32 /FP32 |FP32 /I8 + // \ / | / + // Subtract Constant Subtract Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + //FakeQuantize Constant Constant + // \U8 /U8 /I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1} }, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + { {-128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + false, + }, + + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Constant Convert + // |U8 |U8 |I8 + // | | | + // Convert Convert Convert Constant + // \FP32 /FP32 |FP32 /I8 + // \ / | / + // Subtract Constant Subtract Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + //FakeQuantize Constant Constant + // \U8 /U8 /I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1} }, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + { {-128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + true, + }, + + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Convert + // |U8 |I8 + // | | + // Convert Constant Convert Constant + // \FP32 /FP32 |FP32 /F32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + // FakeQuantize Constant + // \U8 /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + {}, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1} }, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + false + }, + + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Convert + // |U8 |I8 + // | | + // Convert Constant Convert Constant + // \FP32 /FP32 |FP32 /F32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + // FakeQuantize Constant + // \U8 /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + {}, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1}}, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + true, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert Constant Constant + // |U8 |U8 |U8 |U8 + // | | | | + // Convert Convert Convert Convert + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Subtract Constant Subtract Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + // FQ Constant Constant + // \U8 /U8 / I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + false, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert Constant Constant + // |U8 |U8 |U8 |U8 + // | | | | + // Convert Convert Convert Convert + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Subtract Constant Subtract Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + // FQ Constant Constant + // \U8 /U8 / I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + true, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert + // |U8 |U8 + // | | + // Convert Convert Constant + // \FP32 /FP32 \U8 + // \ / \ + // Subtract Constant Convert Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + // FQ Constant + // \U8 /U8 + // \ / + // Subtract + // \FP32 + // \ Constant + // \ /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + false, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert + // |U8 |U8 + // | | + // Convert Convert Constant + // \FP32 /FP32 \I8 + // \ / \ + // Subtract Constant Convert Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + // FQ Constant + // \U8 /U8 + // \ / + // Subtract + // \FP32 + // \ Constant + // \ /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + true, + }, +}; + +const std::vector shapes = { + { 1, 4, 7, 7 } +}; + +INSTANTIATE_TEST_CASE_P(smoke_LPT, GroupConvolutionQDqTransformation, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(shapes), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::ValuesIn(trasformationParamValues), + ::testing::ValuesIn(params)), + GroupConvolutionQDqTransformation::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp index 87553718918487..d8e2854699ea91 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp index eb99a23efc8b92..1d7e14753d3f59 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp index f7ebcb8fe159e9..58caafc62f5dd9 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp index c8deae853f98e9..ad9678887ccfd9 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,9 +18,19 @@ std::vector testValues = { { { 2, 3, 4 }, { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, - { 2, 4 }, - std::vector(4 * 2, 2.f), + { std::vector(4 * 2, 2.f), ngraph::element::f32, ngraph::Shape{ 2, 4 } }, { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-128.f}, {127.f}, {-128.f, -12.8f}, {127.f, 12.7f} }, + { {}, {}, {} }, + "matMul/FC", + "U8" + }, + // 3D with dequantize on weights + { + { 2, 3, 4 }, + { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, + { std::vector(4 * 2, 2.f), ngraph::element::i8, ngraph::Shape{ 2, 4 } }, + {}, + { ngraph::element::f32, {}, {0.1f} }, "matMul/FC", "U8" }, @@ -28,9 +38,9 @@ std::vector testValues = { { { 1, 3, 4 }, { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}}, {-10.5f}, {4.5f}, {-10.5f}, {4.5f} }, - { 2, 4 }, - std::vector(4 * 2, 2.f), + { std::vector(4 * 2, 2.f), ngraph::element::f32, ngraph::Shape{ 2, 4 } }, { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-128.f}, {127.f}, {-128.f, -12.8f}, {127.f, 12.7f} }, + { {}, {}, {} }, "matMul/FC", "U8" }, @@ -38,9 +48,19 @@ std::vector testValues = { { { 1, 1, 3, 4 }, { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, - { 2, 4 }, - std::vector(4 * 2, 2.f), + { std::vector(4 * 2, 2.f), ngraph::element::f32, ngraph::Shape{ 2, 4 } }, { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-128.f}, {127.f}, {-128.f, -12.8f}, {127.f, 12.7f} }, + { {}, {}, {} }, + "matMul/FC", + "U8" + }, + // 4D with Dq on weights + { + { 1, 1, 3, 4 }, + { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, + { std::vector(4 * 2, 2.f), ngraph::element::i8, ngraph::Shape{ 2, 4 } }, + {}, + { ngraph::element::f32, {}, {{0.1f, 0.01}, ngraph::element::f32, ngraph::Shape{ 2, 1 }} }, "matMul/FC", "U8" }, @@ -48,9 +68,9 @@ std::vector testValues = { { { 1, 3, 4 }, { 256ul, {{1}, {1}, {1}, {1}}, {0.f}, {255.f}, {0.f}, {25.5f} }, - { 4, 4 }, - std::vector(4 * 4, 2.f), + { std::vector(4 * 4, 2.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, { 256ul, {{1}, {1}, {1}, {1}}, {-128.f}, {127.f}, {-128.f}, {127.f} }, + { {}, {}, {} }, "matMul/FC", "U8" }, @@ -58,9 +78,19 @@ std::vector testValues = { { { 2, 3 }, { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-10.f}, {5.f}, {-10.f, -5.f}, {5.f, 5.f} }, - { 2, 3 }, - std::vector{1, 2, 3, 4, 5, 6}, + { std::vector{1, 2, 3, 4, 5, 6}, ngraph::element::f32, ngraph::Shape{ 2, 3 } }, { 256ul, {{1}, {1}, {1}, {1}}, {-128.f}, {127.f}, {-12.8f}, {12.7f} }, + { {}, {}, {} }, + "matMul/1", + "U8" + }, + // 2D with subtract on activations & Dq on weights + { + { 2, 3 }, + { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-10.f}, {5.f}, {-10.f, -5.f}, {5.f, 5.f} }, + { std::vector{1, 2, 3, 4, 5, 6}, ngraph::element::i8, ngraph::Shape{ 2, 3 } }, + {}, + { ngraph::element::f32, {}, {0.1f} }, "matMul/1", "U8" } diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp index 55ea00321bd59a..47d7d6eda915b4 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp index e35b4ad45c4a3f..0a7baea851642d 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp index 2f6cefa12b4338..1814b6830eea09 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp index 8f75d570d152e0..efafab0e36ec6b 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp index 21880bd532fe5a..fd3811e909eb56 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp index df1e1734d2901b..ed312302d5ec1a 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp index ba94bb14fd325a..d2ae271b277c67 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp index f4d3f638974716..ea42b1c8ef336b 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp index 45b82b0e54c1a7..aa09761dd87519 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp index dd772ed9099795..ac0af7702391b0 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp new file mode 100644 index 00000000000000..d0c33423c175d6 --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp @@ -0,0 +1,83 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "low_precision_transformations/pull_reshape_through_dequantization_transformation.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + ngraph::element::f32, + // ngraph::element::f16 +}; + +const std::vector trasformationParamValues = { + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(true), + // LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(false), +}; + +const std::vector params = { + { + ngraph::element::f32, + { 256ul, {{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }}, { 0.f }, { 25.5f }, { 0.f }, { 25.5f } }, + {}, + { std::vector{ 2.f }, ngraph::element::i8, {9, 16}}, + { + { ngraph::element::f32, false }, + {}, + { {0.03f}, ngraph::element::f32, {/* from parameter */}, false } + }, + { {3, 3, 16, 1} }, + { {2}, ngraph::element::f32, {1, 1, 16, 1}, false }, + { {2, 3, 0, 1} }, + { {16, 1, 1, 3, 3} }, + ngraph::element::f32, + {}, + "output_original", + "U8" + }, + { + ngraph::element::f32, + { 256ul, {{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }}, { 0.f }, { 25.5f }, { 0.f }, { 25.5f } }, + {}, + { std::vector{ 2.f }, ngraph::element::i8, {9, 16}}, + { + { ngraph::element::f32, false }, + { {127.0f}, ngraph::element::f32, {/* from parameter */}, false}, + { {0.03f}, ngraph::element::f32, {/* from parameter */}, false } + }, + { {3, 3, 16, 1} }, + { {2}, ngraph::element::f32, {1, 1, 16, 1}, false }, + { {2, 3, 0, 1} }, + { {16, 1, 1, 3, 3} }, + ngraph::element::f32, + {}, + "output_original", + "FP32" + } +}; + +const std::vector inputShapes = { + { 1, 16, 9, 9 }, + { 4, 16, 9, 9 } +}; + +const std::vector dequantizationOnWeightElementwiseConstantShapes = { + { ngraph::Shape({1, 16}) } +}; + +INSTANTIATE_TEST_CASE_P(smoke_LPT, PullReshapeThroughDequantizationTransformation, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(inputShapes), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::ValuesIn(trasformationParamValues), + ::testing::ValuesIn(dequantizationOnWeightElementwiseConstantShapes), + ::testing::ValuesIn(params)), + PullReshapeThroughDequantizationTransformation::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp index 70a06e3c49de79..25d7bd0398e267 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp index 7d67e8143c8c2e..5a9342ca718655 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,6 +36,13 @@ const std::vector params = { { 256ul, ngraph::Shape{ 1, 1, 1, 1 }, { 0.f }, { 255.f }, { 0.f }, { 25.5f } }, true }, + // 4D -> 3D + { + ngraph::Shape{ 1, 3, 16, 16 }, + { 0, 3, -1 }, + { 256ul, ngraph::Shape{ 1, 3, 1, 1 }, { 0.f }, { 255.f }, { 0.f, 0.f, 0.f }, { 255.f, 25.5f, 2.55f } }, + true + }, // 4D -> 2D { ngraph::Shape{ 1, 3, 4, 8 }, diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp index a9f439e9d6912f..be380eeac0963f 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp index 0aaeef6e16d407..efe0109ee55192 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp index 4bc132aaba79ea..273daf6f7102e8 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp index ff766e36dc4456..db33013688268e 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp index 127c277a26f7db..4b3c6a792c3efb 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp index afced61e1fda04..f378f4ff487639 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp index 04a3612d16cda1..28c09a394543dc 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp index a5ab487f5b4d93..b245edb9bec4f4 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp index 64f5d2072bbf6e..5778caa6fb8687 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/multi/cpu_remote_blob_tests.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/multi/cpu_remote_blob_tests.cpp index 5f52d3f4afa6a9..3b0ba475eae223 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/multi/cpu_remote_blob_tests.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/multi/cpu_remote_blob_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp index 6256f560ff0949..5f8562bfa555d3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp index e552b5e72b56a4..5ba015166dd6af 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp index c011eb313273ce..471a9ad4868863 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -52,7 +52,8 @@ const std::map>> activationTypes {SoftPlus, {}}, {HSigmoid, {}}, {RoundHalfToEven, {}}, - {RoundHalfAwayFromZero, {}} + {RoundHalfAwayFromZero, {}}, + {Erf, {}} }; const std::map>> activationParamTypes = { @@ -98,4 +99,6 @@ INSTANTIATE_TEST_CASE_P(smoke_Activation_Basic_Prelu, ActivationLayerTest, basic INSTANTIATE_TEST_CASE_P(smoke_Activation_Basic, ActivationParamLayerTest, basicPreluCases, ActivationLayerTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_Activation_Basic, ActivationDynamicLayerTest, basicCases, ActivationLayerTest::getTestCaseName); + } // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_norm.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_norm.cpp index 7e579f3a2fe239..cbe867e859840e 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_norm.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_norm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp index 32c3d453bcfc15..18a099484fffb6 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/binary_convolution.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/binary_convolution.cpp new file mode 100644 index 00000000000000..fcb8f792d3bbbf --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/binary_convolution.cpp @@ -0,0 +1,72 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "single_layer_tests/binary_convolution.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; + +namespace { + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, InferenceEngine::Precision::FP16}; + +/* ============= 2D Binary Convolution ============= */ +const std::vector> kernels = {{3, 3}, {3, 5}}; +const std::vector> strides = {{1, 1}, {1, 3}}; +const std::vector> padsBegin = {{0, 0}, {0, 3}}; +const std::vector> padsEnd = {{0, 0}, {0, 3}}; +const std::vector> dilations = {{1, 1}, {3, 1}}; +const std::vector numOutChannels = {1, 5}; +const std::vector padValues = {0, 1}; + +const auto binConv2DParams_ExplicitPadding = ::testing::Combine( + ::testing::ValuesIn(kernels), + ::testing::ValuesIn(strides), + ::testing::ValuesIn(padsBegin), + ::testing::ValuesIn(padsEnd), + ::testing::ValuesIn(dilations), + ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::EXPLICIT), + ::testing::ValuesIn(padValues)); + +const auto binConv2DParams_ValidPadding = ::testing::Combine( + ::testing::ValuesIn(kernels), + ::testing::ValuesIn(strides), + ::testing::Values(std::vector({0, 0})), + ::testing::Values(std::vector({0, 0})), + ::testing::ValuesIn(dilations), + ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::VALID), + ::testing::ValuesIn(padValues)); + +INSTANTIATE_TEST_CASE_P( + smoke_BinaryConvolution2D_ExplicitPadding, BinaryConvolutionLayerTest, + ::testing::Combine( + binConv2DParams_ExplicitPadding, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + BinaryConvolutionLayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P( + smoke_BinaryConvolution2D_AutoPadValid, BinaryConvolutionLayerTest, + ::testing::Combine( + binConv2DParams_ValidPadding, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + BinaryConvolutionLayerTest::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/broadcast.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/broadcast.cpp index e373188c9568ed..8f69fd6ee4bcef 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/broadcast.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/bucketize.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/bucketize.cpp index 24fbe56ac33b8c..6d75dfe3717a2d 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/bucketize.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/bucketize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/clamp.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/clamp.cpp new file mode 100644 index 00000000000000..200350fd316067 --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/clamp.cpp @@ -0,0 +1,52 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "single_layer_tests/clamp.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; + +const std::vector> inShapes = { + {50}, + {10, 10}, + {1, 20, 20} +}; + +const std::vector> intervals = { + {-20.1, -10.5}, + {-10.0, 10.0}, + {10.3, 20.4} +}; + +const std::vector> intervals_unsigned = { + {0.1, 10.1}, + {10.0, 100.0}, + {10.6, 20.6} +}; + +const std::vector netPrc = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, + InferenceEngine::Precision::I64, + InferenceEngine::Precision::I32 +}; + +const auto test_Clamp_signed = ::testing::Combine( + ::testing::ValuesIn(inShapes), + ::testing::ValuesIn(intervals), + ::testing::ValuesIn(netPrc), + ::testing::Values(CommonTestUtils::DEVICE_CPU) +); + +const auto test_Clamp_unsigned = ::testing::Combine( + ::testing::ValuesIn(inShapes), + ::testing::ValuesIn(intervals_unsigned), + ::testing::Values(InferenceEngine::Precision::U64), + ::testing::Values(CommonTestUtils::DEVICE_CPU) +); + +INSTANTIATE_TEST_CASE_P(smoke_TestsClamp_signed, ClampLayerTest, test_Clamp_signed, ClampLayerTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_TestsClamp_unsigned, ClampLayerTest, test_Clamp_unsigned, ClampLayerTest::getTestCaseName); diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/comparison.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/comparison.cpp index 885a0742b74bc0..d1602d698a07e3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/comparison.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/comparison.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/concat.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/concat.cpp index 24afe0d4622746..7c75e31a3548b9 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/concat.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert.cpp index ebcb0ca78652b0..3a024a65965bc1 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert_like.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert_like.cpp index 90c79a740bf1c3..abb8d43057e3b1 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert_like.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convert_like.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution.cpp index e83e94f8860e16..020809776338a2 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp index 177b3514850402..a8b4c01497fb81 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp index 47dd838d6e4d97..b0ddcd67c89d10 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp index f62737548f3f2f..2247dfd7821fd7 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_loss.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_loss.cpp index 08d4fce31613ff..e0609683606a92 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_loss.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/ctc_loss.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/cum_sum.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/cum_sum.cpp index 1e47d00db51d72..9a8325041a6785 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/cum_sum.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/cum_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp index e6628b8fe8d918..d63bc5c1f5ef00 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp index 5b1b02c63fdb4f..e30c577241fbba 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/eltwise.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/eltwise.cpp index a8cb97e7836483..ea9c438abe2722 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp index 10690af0bb146d..7bd296bca76df5 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp index d275f76ef828e3..805a766f49110d 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp index a6db36609cae9d..70d982c5f33ef4 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp index bd16056e14497e..d43bc4679c05a4 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp index 962a56d997b693..fcaa41f72f09d3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather.cpp index f6debc6a199f6a..483979f1b7eb43 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_elements.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_elements.cpp index 9b4321097d986b..b07dfe252e1370 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_elements.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_nd.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_nd.cpp index 5904fe7f46b8ca..a467f96ec22fb8 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_nd.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_tree.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_tree.cpp index 358c44589b2077..cb19f2e2b3bbdc 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_tree.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gather_tree.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution.cpp index 808690c111006c..1a0e4305d8ff59 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp index f77134b7bf2b27..5c7c79255a1431 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_cell.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_cell.cpp index eb9523db1e7cd6..51e7dad83ca208 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_cell.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp index 01b4133d070449..7e3dea8b04fc2e 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,6 +13,8 @@ namespace { std::vector mode{ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::PURE_SEQ}; // output values increase rapidly without clip, so use only seq_lenghts = 2 std::vector seq_lengths_zero_clip{2}; diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/interpolate.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/interpolate.cpp index 20f4be614eef42..573598bdd09c96 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/interpolate.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/interpolate.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/log_softmax.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/log_softmax.cpp index 8c87da149ec8b2..37042c8ad7d9cb 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/log_softmax.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/log_softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/logical.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/logical.cpp index b7e2c79842de38..0e252f6753873c 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/logical.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/logical.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/loop.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/loop.cpp index c4ae2bbaeff303..ad294a4ce1f6ff 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/loop.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/loop.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -50,6 +50,7 @@ namespace { INSTANTIATE_TEST_CASE_P(smoke_StaticShapeLoop, StaticShapeLoopTest, Combine( + ValuesIn(std::vector{true, false}), Values(true), ValuesIn(static_loop_types), Values(7), diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lrn.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lrn.cpp index 67a5b1939d5221..fe97e4626b65f3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lrn.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lrn.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp index ebf79cbfad14e5..cc1f0a4fa783bf 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp index c6988625d75ab6..1fbe1190a76142 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,9 @@ namespace { std::vector mode{ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM, - ngraph::helpers::SequenceTestsMode::PURE_SEQ}; + ngraph::helpers::SequenceTestsMode::PURE_SEQ, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM}; // output values increase rapidly without clip, so use only seq_lenghts = 2 std::vector seq_lengths_zero_clip{2}; std::vector seq_lengths_clip_non_zero{20}; diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mat_mul.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mat_mul.cpp index f2c119a7fd30e6..4a0d5dcdcbd556 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mat_mul.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,7 +17,24 @@ const std::vector inputPrecisions = { const std::vector shapeRelatedParams = { { { {1, 4, 5, 6}, false }, { {1, 4, 6, 4}, false } }, { { {4, 5, 6}, false }, { {6, 3}, false } }, - { { {9, 9, 9}, false }, { {9, 9}, false } } + { { {9, 9, 9}, false }, { {9, 9}, false } }, + { { {1, 2, 3}, false }, { {1, 1, 3, 2}, false } }, + { { {1, 3, 2, 4}, false }, { {2, 1, 4, 2}, false } }, + { { {2, 1, 2, 4}, false }, { {1, 3, 4, 2}, false } }, + { { {3, 2, 4}, false }, { {2, 1, 4, 2}, false } }, + { { {2, 1, 4, 2}, false }, { {3, 2, 4}, false } }, + { { {2, 1, 2, 3}, true }, { {3, 2, 4}, false } }, + { { {2, 1, 3, 2}, false }, { {3, 4, 2}, true } }, + { { {2, 1, 2, 3}, true }, { {3, 4, 2}, true } }, + { { {3}, false }, { {2, 2, 3, 1}, false } }, + { { {2, 2, 1, 3}, false }, { {3}, false } }, + { { {1, 5}, false }, { {5, 1}, false } }, + { { {5, 1}, true }, { {5, 1}, false } }, + { { {1, 5}, false }, { {1, 5}, true } }, + { { {1, 5}, false }, { {5}, false } }, + { { {5}, false }, { {5, 1}, false } }, + { { {5}, false }, { {5}, false } }, + { { {5}, true }, { {5}, true } } }; std::vector secondaryInputTypes = { diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp index 79b2631754c8bc..64c3878736eb72 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mvn.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mvn.cpp index c682b0faa3979c..3975e3c0c10b6a 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mvn.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -75,7 +75,7 @@ INSTANTIATE_TEST_CASE_P(smoke_MVN_5D, Mvn6LayerTest, ::testing::ValuesIn(std::vector>{{1, 10, 5, 7, 8}, {1, 3, 8, 9, 49}}), ::testing::ValuesIn(dataPrecisions), ::testing::ValuesIn(idxPrecisions), - ::testing::ValuesIn(std::vector>{{1, 2, 3, 4}, {2, 3, 4}}), + ::testing::ValuesIn(std::vector>{{1, 2, 3, 4}, {2, 3, 4}, {-3, -2, -1}, {-1, -4, -2, -3}}), ::testing::ValuesIn(normalizeVariance), ::testing::ValuesIn(epsilonF), ::testing::ValuesIn(epsMode), @@ -87,7 +87,7 @@ INSTANTIATE_TEST_CASE_P(smoke_MVN_4D, Mvn6LayerTest, ::testing::ValuesIn(std::vector>{{1, 10, 5, 17}, {1, 3, 8, 9}}), ::testing::ValuesIn(dataPrecisions), ::testing::ValuesIn(idxPrecisions), - ::testing::ValuesIn(std::vector>{{1, 2, 3}, {2, 3}}), + ::testing::ValuesIn(std::vector>{{1, 2, 3}, {2, 3}, {-2, -1}, {-2, -1, -3}}), ::testing::ValuesIn(normalizeVariance), ::testing::ValuesIn(epsilonF), ::testing::ValuesIn(epsMode), @@ -99,7 +99,7 @@ INSTANTIATE_TEST_CASE_P(smoke_MVN_3D, Mvn6LayerTest, ::testing::ValuesIn(std::vector>{{1, 32, 17}, {1, 37, 9}}), ::testing::ValuesIn(dataPrecisions), ::testing::ValuesIn(idxPrecisions), - ::testing::ValuesIn(std::vector>{{1, 2}, {2}}), + ::testing::ValuesIn(std::vector>{{1, 2}, {2}, {-1}, {-1, -2}}), ::testing::ValuesIn(normalizeVariance), ::testing::ValuesIn(epsilonF), ::testing::ValuesIn(epsMode), @@ -130,18 +130,6 @@ INSTANTIATE_TEST_CASE_P(smoke_MVN_1D, Mvn6LayerTest, ::testing::Values(CommonTestUtils::DEVICE_CPU)), Mvn6LayerTest::getTestCaseName); -INSTANTIATE_TEST_CASE_P(smoke_Decomposition_1D, Mvn6LayerTest, - ::testing::Combine( - ::testing::ValuesIn(std::vector>{{3}, {9}, {55}}), - ::testing::ValuesIn(dataPrecisions), - ::testing::ValuesIn(idxPrecisions), - ::testing::ValuesIn(std::vector>{{}}), - ::testing::ValuesIn(normalizeVariance), - ::testing::ValuesIn(epsilonF), - ::testing::ValuesIn(epsMode), - ::testing::Values(CommonTestUtils::DEVICE_CPU)), - Mvn6LayerTest::getTestCaseName); - INSTANTIATE_TEST_CASE_P(smoke_Decomposition_3D, Mvn6LayerTest, ::testing::Combine( ::testing::ValuesIn(std::vector>{{1, 32, 17}, {1, 37, 9}}), diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp index a8150f53304598..a8d10d65bdf329 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp index 3f562d581f07e3..75b2c0a5b492cd 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/one_hot.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/one_hot.cpp index 1c15edb310f3d0..9ab687d76f2834 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/one_hot.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/one_hot.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,8 +12,6 @@ const std::vector netPrecisions = { InferenceEngine::Precision::I32, }; -using namespace ngraph::element; - const std::vector argDepthType_IC = { ngraph::element::i32 }; const std::vector argDepth_IC = { 1, 5, 1017 }; const std::vector argSetType_IC = { ngraph::element::i32 }; diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pad.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pad.cpp index a9ac0a6ce0dd6b..0a760ed69e59e6 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pad.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,8 +19,6 @@ const std::vector netPrecisions = { InferenceEngine::Precision::U8, }; -const std::vector> padsBegin2D = {{0, 0}, {1, 1}, {2, 0}, {0, 3}}; -const std::vector> padsEnd2D = {{0, 0}, {1, 1}, {0, 1}, {3, 2}}; const std::vector argPadValue = {0.f, 1.f, -1.f, 2.5f}; const std::vector padMode = { @@ -29,6 +27,52 @@ const std::vector padMode = { ngraph::helpers::PadMode::SYMMETRIC }; +const std::vector> padsBegin1D = {{0}, {1}, {2}}; +const std::vector> padsEnd1D = {{0}, {1}, {2}}; + +const auto pad1DConstparams = testing::Combine( + testing::ValuesIn(padsBegin1D), + testing::ValuesIn(padsEnd1D), + testing::ValuesIn(argPadValue), + testing::Values(ngraph::helpers::PadMode::CONSTANT), + testing::ValuesIn(netPrecisions), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(std::vector{5}), + testing::Values(CommonTestUtils::DEVICE_CPU) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Pad1DConst, + PadLayerTest, + pad1DConstparams, + PadLayerTest::getTestCaseName +); + +const auto pad1Dparams = testing::Combine( + testing::ValuesIn(padsBegin1D), + testing::ValuesIn(padsEnd1D), + testing::Values(0), + testing::ValuesIn(padMode), + testing::ValuesIn(netPrecisions), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(std::vector{5}), + testing::Values(CommonTestUtils::DEVICE_CPU) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Pad1D, + PadLayerTest, + pad1Dparams, + PadLayerTest::getTestCaseName +); + +const std::vector> padsBegin2D = {{0, 0}, {1, 1}, {2, 0}, {0, 3}}; +const std::vector> padsEnd2D = {{0, 0}, {1, 1}, {0, 1}, {3, 2}}; + const auto pad2DConstparams = testing::Combine( testing::ValuesIn(padsBegin2D), testing::ValuesIn(padsEnd2D), diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pooling.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pooling.cpp index be3ca5bac37a69..98fa2a9ff844fa 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pooling.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/pooling.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/proposal.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/proposal.cpp index 0a009bc0002805..df5352605093ba 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/proposal.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/psroi_pooling.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/psroi_pooling.cpp index c648a990667f79..6c896b56aa8845 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/psroi_pooling.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/psroi_pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/range.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/range.cpp index 32702894f54a10..acc17b1142eed3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/range.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/range.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp index cf1466e258b30e..ad4a24430ac81c 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/region_yolo.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/region_yolo.cpp index eb2e2807ffe8e1..ac4e3b384039b9 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/region_yolo.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp index 03aa80811edb20..32a1f934968d43 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reshape.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reshape.cpp index 17fab593ab1835..0bdef6426580a1 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reshape.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp index 6f5988618a8bc7..91e0fc5bf5f1ba 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp index b74a16f5cd3063..db9c450dba8006 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp index 94be74518b5dd3..0805ff960d6124 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,6 +13,8 @@ namespace { std::vector mode{ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::PURE_SEQ}; // output values increase rapidly without clip, so use only seq_lenghts = 2 std::vector seq_lengths_zero_clip{2}; diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_align.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_align.cpp index 4502d029b38ee6..38c97de0ffbd15 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_align.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_align.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,6 +9,12 @@ using namespace LayerTestsDefinitions; + +const std::vector netPRCs = { + InferenceEngine::Precision::FP16, + InferenceEngine::Precision::FP32 +}; + const auto ROIAlignCases_average = ::testing::Combine( ::testing::ValuesIn( std::vector> { @@ -21,7 +27,7 @@ const auto ROIAlignCases_average = ::testing::Combine( ::testing::ValuesIn(std::vector { 1, 0.625 }), ::testing::Values(2), ::testing::Values("avg"), - ::testing::Values(InferenceEngine::Precision::FP32), + ::testing::ValuesIn(netPRCs), ::testing::Values(CommonTestUtils::DEVICE_CPU) ); @@ -39,7 +45,7 @@ const auto ROIAlignCases_max = ::testing::Combine( ::testing::ValuesIn(std::vector { 1, 0.625 }), ::testing::Values(2), ::testing::Values("max"), - ::testing::Values(InferenceEngine::Precision::FP32), + ::testing::ValuesIn(netPRCs), ::testing::Values(CommonTestUtils::DEVICE_CPU) ); diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_pooling.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_pooling.cpp index b67e0bd252bf83..8387a754b43afe 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_pooling.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/roi_pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_ND_update.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_ND_update.cpp index 26c87d9d0c78ff..081d07345347cc 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_ND_update.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_ND_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp index b9dfce8a53a2f4..15b8852b101392 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_update.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_update.cpp index 3855e09d76ba33..b9ef4bbbfc9614 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_update.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/scatter_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/select.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/select.cpp index 6ee640f4a121de..315c3331db9800 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/select.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/select.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shape_of.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shape_of.cpp index d366f519be5d5f..9dbd9a6abbff27 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shape_of.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shape_of.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp index 0d7807a90d2b4b..86bcb113414cb2 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/softmax.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/softmax.cpp index db9f26dc639575..4c90f92d98b117 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/softmax.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp index 2065af13ea9e5b..ac4801df822a54 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp index 646692945f66a0..54d48ebf992117 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp index e29eef1ef019b4..814c97988060f3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp index 2cc394428da2bb..486d0e20e470ce 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/strided_slice.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/strided_slice.cpp index 8056732261fc2c..401e5360eb15f1 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/strided_slice.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tensor_iterator.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tensor_iterator.cpp index 7a6f19b3329cb5..2531a6668c408f 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tensor_iterator.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tensor_iterator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tile.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tile.cpp index 182ff24f36fdaa..cac26120ba8b34 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tile.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/tile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/topk.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/topk.cpp index 6495a9a850f721..0c66b067ac4e18 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/topk.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/transpose.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/transpose.cpp index 9f88c22658a45f..5742abd9feec58 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/transpose.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/variadic_split.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/variadic_split.cpp index cc3e7390cb2701..db0c9e156e6af5 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/variadic_split.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/skip_tests_config.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/skip_tests_config.cpp index a1567cac2c1dc0..0298734feaf9bd 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/skip_tests_config.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/skip_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,8 +23,6 @@ std::vector disabledTestPatterns() { R"(.*(QuantGroupConv3D).*)", // TODO: failed to downgrade to opset v0 in interpreter backend R"(.*Gather.*axis=-1.*)", - // TODO: Issue 33151 - R"(.*Reduce.*axes=\(1\.-1\).*)", // TODO: Issue: 34518 R"(.*RangeLayerTest.*)", R"(.*(RangeAddSubgraphTest).*Start=1.2.*Stop=(5.2|-5.2).*Step=(0.1|-0.1).*netPRC=FP16.*)", @@ -39,8 +37,6 @@ std::vector disabledTestPatterns() { R"(.*(PreprocessTest).*(SetMeanValuePreProcessSetBlob).*)", R"(.*(PreprocessTest).*(SetMeanImagePreProcessSetBlob).*)", R"(.*(PreprocessTest).*(ReverseInputChannelsPreProcessGetBlob).*)", - // TODO: Issue: 40957 - R"(.*(ConstantResultSubgraphTest).*)", // TODO: Issue: 34348 R"(.*IEClassGetAvailableDevices.*)", // TODO: Issue: 25533 @@ -61,6 +57,11 @@ std::vector disabledTestPatterns() { R"(.*decomposition1_batch=5_hidden_size=10_input_size=30_.*tanh.relu.*_clip=0_linear_before_reset=1.*_targetDevice=CPU_.*)", // Skip platforms that do not support BF16 (i.e. sse, avx, avx2) R"(.*BF16.*(jit_avx(?!5)|jit_sse).*)", + // TODO: Incorrect blob sizes for node BinaryConvolution_X + R"(.*BinaryConvolutionLayerTest.*)", + // TODO: 51676. Incorrect conversion of min and max limits from double to integral + R"(.*ClampLayerTest.*netPrc=(I64|I32).*)", + R"(.*ClampLayerTest.*netPrc=U64.*)" }; if (!InferenceEngine::with_cpu_x86_avx512_core()) { diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/constant_result.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/constant_result.cpp index 7fe22027d0bb21..19dcaacecda54e 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/constant_result.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/constant_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,10 +8,38 @@ #include "common_test_utils/test_constants.hpp" using namespace SubgraphTestsDefinitions; +using namespace InferenceEngine; namespace { - INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, - ::testing::Values(CommonTestUtils::DEVICE_CPU), - ConstantResultSubgraphTest::getTestCaseName); -} // namespace +const std::vector types = { + ConstantSubgraphType::SINGLE_COMPONENT, + ConstantSubgraphType::SEVERAL_COMPONENT +}; + +const std::vector shapes = { + {1, 3, 10, 10}, + {2, 3, 4, 5} +}; + +const std::vector precisions = { + Precision::U8, + Precision::I8, + Precision::U16, + Precision::I16, + Precision::I32, + Precision::U64, + Precision::I64, + Precision::FP32, + Precision::BOOL +}; + +INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, + ::testing::Combine( + ::testing::ValuesIn(types), + ::testing::ValuesIn(shapes), + ::testing::ValuesIn(precisions), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + ConstantResultSubgraphTest::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/conv_eltwise_fusion.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/conv_eltwise_fusion.cpp index 2590c5d1df1e79..920891a726ae51 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/conv_eltwise_fusion.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/conv_eltwise_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/convert_pad_to_group_conv.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/convert_pad_to_group_conv.cpp index 609361bd2158bd..2ab868e8ca04ad 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/convert_pad_to_group_conv.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/convert_pad_to_group_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp index b6fa972bde32f2..6f47cf9d7d9dff 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp index 80ddeed8cdcf58..9cab6afd9fb68d 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp index f35894a3e663d5..3468d2b417f744 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiply_add.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiply_add.cpp index d7660a3bd5e0ad..37df66d8b6bbbf 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiply_add.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/multiply_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp index 10a9ca41a8f7cf..da0b67cd8c4f03 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/perm_conv_perm_concat.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp index 197dd0255f2e79..0413002c0967e3 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution.cpp index a0471488b7893b..33c010dc36ca29 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp index dce213590b0a51..bc64dd43041553 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_mat_mul.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_mat_mul.cpp index da7209db211b89..9e74d2a0384630 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_mat_mul.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/quantized_mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/range_add.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/range_add.cpp index 32bd836b6aed21..9a53c864dd99bc 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/range_add.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/range_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/relu_shape_of.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/relu_shape_of.cpp index 4ad89667ca88e2..917cb6932c0cab 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/relu_shape_of.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/relu_shape_of.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp index cd23adb208ce85..1e4666b523b5e0 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_squeeze_reshape_relu.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_concat_memory.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_concat_memory.cpp index 78e1af80759032..a115a9cbf081d7 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_concat_memory.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_concat_memory.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp index 5a698376e31f5e..12dedadc265072 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/tensor_names.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/tensor_names.cpp index 99ceae1156ac85..e5d104920cb3f2 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/tensor_names.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/tensor_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/variadic_split_pad.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/variadic_split_pad.cpp new file mode 100644 index 00000000000000..3e73dbeccf8a1e --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/subgraph_tests/variadic_split_pad.cpp @@ -0,0 +1,63 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "subgraph_tests/variadic_split_pad.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { + +const std::vector netPrecision = { + InferenceEngine::Precision::FP32 +}; + +const std::vector shapes = { + {1, 8, 3, 2}, + {3, 8, 8, 8}, +}; + +const std::vector> connectedIndexes = { + {0}, + {0, 2}, + {0, 1, 3}, + {0, 1, 1, 0}, + {0, 0, 0, 1}, +}; + +const std::vector> numSplits = { + {2, 2, 2, 2}, + {1, 2, 4, 1}, + {3, 2, 2, 1} +}; + +const std::vector> padsBegin = { + {0, 0, 0, 0}, + {0, 0, 1, 1}, +}; + +const std::vector> padsEnd = { + {0, 0, 0, 0}, + {0, 0, 1, 1}, +}; + +const std::vector padMode = { + ngraph::helpers::PadMode::CONSTANT, + ngraph::helpers::PadMode::EDGE, + ngraph::helpers::PadMode::REFLECT, + ngraph::helpers::PadMode::SYMMETRIC +}; + +INSTANTIATE_TEST_CASE_P(smoke_CPU, VariadicSplitPad, + ::testing::Combine( + ::testing::ValuesIn(shapes), + ::testing::Values(1), + ::testing::ValuesIn(numSplits), + ::testing::ValuesIn(connectedIndexes), + ::testing::ValuesIn(padsBegin), + ::testing::ValuesIn(padsEnd), + ::testing::ValuesIn(padMode), + ::testing::ValuesIn(netPrecision), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + VariadicSplitPad::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/activation.cpp index ef1fe64bcd0f70..2ecfe958f5ffc6 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/activation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convert.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convert.cpp index 61d08cbdc44333..e0ef6bfee15ce6 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convert.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution.cpp index d6af8eee32236a..7b596f40a9a781 100755 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -68,8 +68,10 @@ class ConvolutionLayerCPUTest : public testing::WithParamInterface fusingParamsSet{ fusingClamp, fusingPRelu, fusingSwish, + fusingHSwish, + fusingMish, // other patterns fusingReluScaleShift, fusingFakeQuantizePerTensorRelu, @@ -202,6 +206,22 @@ INSTANTIATE_TEST_CASE_P(smoke_Conv_2D_Planar_BF16, ConvolutionLayerCPUTest, ::testing::Values(cpuBF16PluginConfig)), ConvolutionLayerCPUTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_Conv_2D_Planar_I8, ConvolutionLayerCPUTest, + ::testing::Combine( + ::testing::Combine( + convParams_ExplicitPadding_Planar_2D, + ::testing::Values(Precision::FP32), + ::testing::Values(Precision::I8), + ::testing::Values(Precision::UNSPECIFIED), + ::testing::Values(Layout::ANY), + ::testing::Values(Layout::ANY), + ::testing::Values(std::vector({ 2, 12, 7, 7 })), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + ::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_Planar_2D)), + ::testing::Values(fusingSum), + ::testing::Values(cpuEmptyPluginConfig)), + ConvolutionLayerCPUTest::getTestCaseName); + /* ============= GroupConvolution (Planar 3D) ============= */ const auto convParams_ExplicitPadding_Planar_3D = ::testing::Combine( ::testing::ValuesIn(kernels3d), @@ -249,6 +269,22 @@ INSTANTIATE_TEST_CASE_P(smoke_Conv_3D_Planar_BF16, ConvolutionLayerCPUTest, ::testing::Values(cpuBF16PluginConfig)), ConvolutionLayerCPUTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_Conv_3D_Planar_I8, ConvolutionLayerCPUTest, + ::testing::Combine( + ::testing::Combine( + convParams_ExplicitPadding_Planar_3D, + ::testing::Values(Precision::FP32), + ::testing::Values(Precision::I8), + ::testing::Values(Precision::UNSPECIFIED), + ::testing::Values(Layout::ANY), + ::testing::Values(Layout::ANY), + ::testing::Values(std::vector({ 2, 12, 7, 7, 7 })), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + ::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_Planar_3D)), + ::testing::Values(fusingSum), + ::testing::Values(cpuEmptyPluginConfig)), + ConvolutionLayerCPUTest::getTestCaseName); + /* ============= GroupConvolution (Blocked 2D) ============= */ const auto convParams_ExplicitPadding_Blocked_2D = ::testing::Combine( ::testing::ValuesIn(kernels2d), @@ -298,6 +334,22 @@ INSTANTIATE_TEST_CASE_P(smoke_Conv_2D_Blocked_BF16, ConvolutionLayerCPUTest, ::testing::Values(cpuBF16PluginConfig)), ConvolutionLayerCPUTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_Conv_2D_Blocked_I8, ConvolutionLayerCPUTest, + ::testing::Combine( + ::testing::Combine( + convParams_ExplicitPadding_Blocked_2D, + ::testing::Values(Precision::FP32), + ::testing::Values(Precision::I8), + ::testing::Values(Precision::UNSPECIFIED), + ::testing::Values(Layout::ANY), + ::testing::Values(Layout::ANY), + ::testing::Values(std::vector({ 2, 64, 7, 7 })), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + ::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_Blocked_2D)), + ::testing::Values(fusingSum), + ::testing::Values(cpuEmptyPluginConfig)), + ConvolutionLayerCPUTest::getTestCaseName); + /* ============= GroupConvolution (Blocked 3D) ============= */ const auto convParams_ExplicitPadding_Blocked_3D = ::testing::Combine( ::testing::ValuesIn(kernels3d), @@ -347,6 +399,22 @@ INSTANTIATE_TEST_CASE_P(smoke_Conv_3D_Blocked_BF16, ConvolutionLayerCPUTest, ::testing::Values(cpuBF16PluginConfig)), ConvolutionLayerCPUTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_Conv_3D_Blocked_I8, ConvolutionLayerCPUTest, + ::testing::Combine( + ::testing::Combine( + convParams_ExplicitPadding_Blocked_3D, + ::testing::Values(Precision::FP32), + ::testing::Values(Precision::I8), + ::testing::Values(Precision::UNSPECIFIED), + ::testing::Values(Layout::ANY), + ::testing::Values(Layout::ANY), + ::testing::Values(std::vector({ 2, 64, 7, 7, 7 })), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + ::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_Blocked_3D)), + ::testing::Values(fusingSum), + ::testing::Values(cpuEmptyPluginConfig)), + ConvolutionLayerCPUTest::getTestCaseName); + /* ============= Kernel_1x1 (2D) ============= */ const auto convParams_ExplicitPadding_1x1_2D = ::testing::Combine( @@ -397,6 +465,22 @@ INSTANTIATE_TEST_CASE_P(smoke_Conv_2D_1x1_BF16, ConvolutionLayerCPUTest, ::testing::Values(cpuBF16PluginConfig)), ConvolutionLayerCPUTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_Conv_2D_1x1_I8, ConvolutionLayerCPUTest, + ::testing::Combine( + ::testing::Combine( + convParams_ExplicitPadding_1x1_2D, + ::testing::Values(Precision::FP32), + ::testing::Values(Precision::I8), + ::testing::Values(Precision::UNSPECIFIED), + ::testing::Values(Layout::ANY), + ::testing::Values(Layout::ANY), + ::testing::Values(std::vector({ 2, 64, 7, 7 })), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + ::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_1x1_2D)), + ::testing::Values(fusingSum), + ::testing::Values(cpuEmptyPluginConfig)), + ConvolutionLayerCPUTest::getTestCaseName); + /* ========= */ } // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution_backprop_data.cpp index 90ef29a9cc2701..817e177b0655df 100755 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/crop.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/crop.cpp index 7b0a47d3fd1a33..5bf5d795c8060a 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/crop.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/crop.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/eltwise.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/eltwise.cpp index 1ec767c9a5f0b5..9d5e4f1bf1189e 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/eltwise.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -56,7 +56,7 @@ class EltwiseLayerCPUTest : public testing::WithParamInterface fusingParamsSet { fusingClamp, fusingPRelu, fusingSwish, + fusingHSwish, + fusingMish, // other patterns fusingReluScaleShift, fusingFakeQuantizePerTensorRelu, diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/group_convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/group_convolution_backprop_data.cpp index f4f512d8988c38..250f8c9ff5f4fa 100755 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/interpolate.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/interpolate.cpp index fc037336aeddb5..2ce67191202c3c 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/interpolate.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/interpolate.cpp @@ -1,9 +1,10 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include "test_utils/cpu_test_utils.hpp" +#include "test_utils/fusing_test_utils.hpp" using namespace InferenceEngine; using namespace CPUTestUtils; @@ -11,27 +12,35 @@ using namespace CPUTestUtils; namespace CPULayerTestsDefinitions { typedef std::tuple< - LayerTestsDefinitions::InterpolateLayerTestParams, - std::map, // Bf16 config - CPUSpecificParams> InterpolateLayerCPUTestParamsSet; + LayerTestsDefinitions::InterpolateLayerTestParams, + CPUSpecificParams, + fusingSpecificParams, + std::map + > InterpolateLayerCPUTestParamsSet; class InterpolateLayerCPUTest : public testing::WithParamInterface, - virtual public LayerTestsUtils::LayerTestsCommon, public CPUTestsBase { + virtual public LayerTestsUtils::LayerTestsCommon, public CpuTestWithFusing { public: static std::string getTestCaseName(testing::TestParamInfo obj) { LayerTestsDefinitions::InterpolateLayerTestParams basicParamsSet; CPUSpecificParams cpuParams; - std::map bf16config; - std::tie(basicParamsSet, bf16config, cpuParams) = obj.param; + fusingSpecificParams fusingParams; + std::map additionalConfig; + std::tie(basicParamsSet, cpuParams, fusingParams, additionalConfig) = obj.param; std::ostringstream result; result << LayerTestsDefinitions::InterpolateLayerTest::getTestCaseName(testing::TestParamInfo( basicParamsSet, 0)); - result << "bf16Enforce=" << (bf16config.count(InferenceEngine::PluginConfigParams::KEY_ENFORCE_BF16) ? - bf16config.at(InferenceEngine::PluginConfigParams::KEY_ENFORCE_BF16) : InferenceEngine::PluginConfigParams::NO); - result << CPUTestsBase::getTestCaseName(cpuParams); + result << CpuTestWithFusing::getTestCaseName(fusingParams); + + if (!additionalConfig.empty()) { + result << "_PluginConf"; + for (auto& item : additionalConfig) { + result << "_" << item.first << "=" << item.second; + } + } return result.str(); } @@ -40,10 +49,12 @@ class InterpolateLayerCPUTest : public testing::WithParamInterface bf16config; - std::tie(basicParamsSet, bf16config, cpuParams) = this->GetParam(); + fusingSpecificParams fusingParams; + std::map additionalConfig; + std::tie(basicParamsSet, cpuParams, fusingParams, additionalConfig) = this->GetParam(); std::tie(inFmts, outFmts, priority, selectedType) = cpuParams; + std::tie(postOpMgrPtr, fusedOps) = fusingParams; LayerTestsDefinitions::InterpolateSpecificParams interpolateParams; std::vector inputShape; @@ -62,7 +73,7 @@ class InterpolateLayerCPUTest : public testing::WithParamInterface scales; std::tie(mode, shapeCalcMode, coordinateTransformMode, nearestMode, antialias, padBegin, padEnd, cubeCoef, axes, scales) = interpolateParams; inPrc = outPrc = netPrecision; - configuration.insert(bf16config.begin(), bf16config.end()); + configuration.insert(additionalConfig.begin(), additionalConfig.end()); using ShapeCalcMode = ngraph::op::v4::Interpolate::ShapeCalcMode; auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); @@ -86,7 +97,11 @@ class InterpolateLayerCPUTest : public testing::WithParamInterface filterCPUInfoForDevice() { std::vector resCPUParams; if (with_cpu_x86_avx512f()) { - resCPUParams.push_back(CPUSpecificParams{{nChw16c, x, x}, {nChw16c}, {"jit_avx512"}, "jit_avx512_FP32"}); - resCPUParams.push_back(CPUSpecificParams{{nhwc, x, x}, {nhwc}, {"jit_avx512"}, "jit_avx512_FP32"}); + resCPUParams.push_back(CPUSpecificParams{{nChw16c, x, x}, {nChw16c}, {"jit_avx512"}, "jit_avx512"}); + resCPUParams.push_back(CPUSpecificParams{{nhwc, x, x}, {nhwc}, {"jit_avx512"}, "jit_avx512"}); } else if (with_cpu_x86_avx2()) { - resCPUParams.push_back(CPUSpecificParams{{nChw8c, x, x}, {nChw8c}, {"jit_avx2"}, "jit_avx2_FP32"}); - resCPUParams.push_back(CPUSpecificParams{{nhwc, x, x}, {nhwc}, {"jit_avx2"}, "jit_avx2_FP32"}); - resCPUParams.push_back(CPUSpecificParams{{nchw, x, x}, {nchw}, {"jit_avx2"}, "jit_avx2_FP32"}); + resCPUParams.push_back(CPUSpecificParams{{nChw8c, x, x}, {nChw8c}, {"jit_avx2"}, "jit_avx2"}); + resCPUParams.push_back(CPUSpecificParams{{nhwc, x, x}, {nhwc}, {"jit_avx2"}, "jit_avx2"}); + resCPUParams.push_back(CPUSpecificParams{{nchw, x, x}, {nchw}, {"jit_avx2"}, "jit_avx2"}); } else if (with_cpu_x86_sse42()) { - resCPUParams.push_back(CPUSpecificParams{{nChw8c, x, x}, {nChw8c}, {"jit_sse42"}, "jit_sse42_FP32"}); - resCPUParams.push_back(CPUSpecificParams{{nhwc, x, x}, {nhwc}, {"jit_sse42"}, "jit_sse42_FP32"}); + resCPUParams.push_back(CPUSpecificParams{{nChw8c, x, x}, {nChw8c}, {"jit_sse42"}, "jit_sse42"}); + resCPUParams.push_back(CPUSpecificParams{{nhwc, x, x}, {nhwc}, {"jit_sse42"}, "jit_sse42"}); } else { - resCPUParams.push_back(CPUSpecificParams{{nchw, x, x}, {nchw}, {"ref"}, "ref_FP32"}); + resCPUParams.push_back(CPUSpecificParams{{nchw, x, x}, {nchw}, {"ref"}, "ref"}); } return resCPUParams; } /* ========== */ const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::BF16 + InferenceEngine::Precision::FP32 }; const std::vector coordinateTransformModes = { @@ -194,8 +208,8 @@ const auto interpolateCasesLinearOnnx = ::testing::Combine( ::testing::ValuesIn(defaultAxes), ::testing::ValuesIn(defaultScales)); -const auto interpolateCasesCubic = ::testing::Combine( - ::testing::Values(ngraph::op::v4::Interpolate::InterpolateMode::cubic), +const auto interpolateCasesLinear = ::testing::Combine( + ::testing::Values(ngraph::op::v4::Interpolate::InterpolateMode::linear), ::testing::ValuesIn(shapeCalculationMode), ::testing::ValuesIn(coordinateTransformModes), ::testing::ValuesIn(defNearestModes), @@ -206,11 +220,11 @@ const auto interpolateCasesCubic = ::testing::Combine( ::testing::ValuesIn(defaultAxes), ::testing::ValuesIn(defaultScales)); -const auto interpolateCasesBf16Enforced = ::testing::Combine( - ::testing::Values(ngraph::op::v4::Interpolate::InterpolateMode::nearest), - ::testing::Values(ngraph::op::v4::Interpolate::ShapeCalcMode::scales), - ::testing::Values(ngraph::op::v4::Interpolate::CoordinateTransformMode::tf_half_pixel_for_nn), - ::testing::Values(ngraph::op::v4::Interpolate::NearestMode::simple), +const auto interpolateCasesCubic = ::testing::Combine( + ::testing::Values(ngraph::op::v4::Interpolate::InterpolateMode::cubic), + ::testing::ValuesIn(shapeCalculationMode), + ::testing::ValuesIn(coordinateTransformModes), + ::testing::ValuesIn(defNearestModes), ::testing::ValuesIn(antialias), ::testing::ValuesIn(pads), ::testing::ValuesIn(pads), @@ -218,6 +232,11 @@ const auto interpolateCasesBf16Enforced = ::testing::Combine( ::testing::ValuesIn(defaultAxes), ::testing::ValuesIn(defaultScales)); +const std::vector interpolateFusingParamsSet{ + emptyFusingSpec, + fusingRelu, +}; + std::vector> bf16EnforceFlags = { {{PluginConfigParams::KEY_ENFORCE_BF16, PluginConfigParams::NO}}, {{PluginConfigParams::KEY_ENFORCE_BF16, PluginConfigParams::YES}} @@ -235,8 +254,9 @@ INSTANTIATE_TEST_CASE_P(smoke_InterpolateNN_Layout_Test, InterpolateLayerCPUTest ::testing::Values(std::vector({1, 21, 40, 40})), ::testing::Values(std::vector({1, 21, 50, 60})), ::testing::Values(CommonTestUtils::DEVICE_CPU)), - ::testing::Values(std::map {}), - ::testing::ValuesIn(filterCPUInfoForDevice())), + ::testing::ValuesIn(filterCPUInfoForDevice()), + ::testing::ValuesIn(interpolateFusingParamsSet), + ::testing::ValuesIn(bf16EnforceFlags)), InterpolateLayerCPUTest::getTestCaseName); INSTANTIATE_TEST_CASE_P(smoke_InterpolateLinearOnnx_Layout_Test, InterpolateLayerCPUTest, @@ -251,14 +271,15 @@ INSTANTIATE_TEST_CASE_P(smoke_InterpolateLinearOnnx_Layout_Test, InterpolateLaye ::testing::Values(std::vector({1, 21, 40, 40})), ::testing::Values(std::vector({1, 21, 50, 60})), ::testing::Values(CommonTestUtils::DEVICE_CPU)), - ::testing::Values(std::map {}), - ::testing::ValuesIn(filterCPUInfoForDevice())), + ::testing::ValuesIn(filterCPUInfoForDevice()), + ::testing::ValuesIn(interpolateFusingParamsSet), + ::testing::ValuesIn(bf16EnforceFlags)), InterpolateLayerCPUTest::getTestCaseName); -INSTANTIATE_TEST_CASE_P(smoke_InterpolateCubic_Layout_Test, InterpolateLayerCPUTest, +INSTANTIATE_TEST_CASE_P(smoke_InterpolateLinear_Layout_Test, InterpolateLayerCPUTest, ::testing::Combine( ::testing::Combine( - interpolateCasesCubic, + interpolateCasesLinear, ::testing::ValuesIn(netPrecisions), ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), @@ -267,15 +288,16 @@ INSTANTIATE_TEST_CASE_P(smoke_InterpolateCubic_Layout_Test, InterpolateLayerCPUT ::testing::Values(std::vector({1, 21, 40, 40})), ::testing::Values(std::vector({1, 21, 50, 60})), ::testing::Values(CommonTestUtils::DEVICE_CPU)), - ::testing::Values(std::map {}), - ::testing::ValuesIn(filterCPUInfoForDevice())), + ::testing::ValuesIn(filterCPUInfoForDevice()), + ::testing::ValuesIn(interpolateFusingParamsSet), + ::testing::ValuesIn(bf16EnforceFlags)), InterpolateLayerCPUTest::getTestCaseName); -INSTANTIATE_TEST_CASE_P(smoke_Interpolate_Enforced_Bf16_Layout_Test, InterpolateLayerCPUTest, +INSTANTIATE_TEST_CASE_P(smoke_InterpolateCubic_Layout_Test, InterpolateLayerCPUTest, ::testing::Combine( ::testing::Combine( - interpolateCasesBf16Enforced, - ::testing::Values(InferenceEngine::Precision::BF16), + interpolateCasesCubic, + ::testing::ValuesIn(netPrecisions), ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), ::testing::Values(InferenceEngine::Layout::ANY), @@ -283,10 +305,10 @@ INSTANTIATE_TEST_CASE_P(smoke_Interpolate_Enforced_Bf16_Layout_Test, Interpolate ::testing::Values(std::vector({1, 21, 40, 40})), ::testing::Values(std::vector({1, 21, 50, 60})), ::testing::Values(CommonTestUtils::DEVICE_CPU)), - ::testing::ValuesIn(bf16EnforceFlags), - ::testing::ValuesIn(filterCPUInfoForDevice())), - InterpolateLayerCPUTest::getTestCaseName); - + ::testing::ValuesIn(filterCPUInfoForDevice()), + ::testing::ValuesIn(interpolateFusingParamsSet), + ::testing::ValuesIn(bf16EnforceFlags)), + InterpolateLayerCPUTest::getTestCaseName); ////////////////////////5D///////////////////////////// std::vector filterCPUInfoForDevice5D() { diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/logical.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/logical.cpp index c8ef0ccd020761..6e423ca669f855 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/logical.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/logical.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/mvn.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/mvn.cpp index 6a74e5fc3d8b24..36c7ff5859bd39 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/mvn.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/normalize.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/normalize.cpp index ac386aae715b67..bda32ff8c96567 100755 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/normalize.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/normalize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/one_hot.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/one_hot.cpp new file mode 100644 index 00000000000000..f80298200c93f3 --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/one_hot.cpp @@ -0,0 +1,166 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include "test_utils/cpu_test_utils.hpp" + +using namespace InferenceEngine; +using namespace CPUTestUtils; + +namespace CPULayerTestsDefinitions { + +typedef std::tuple< + std::vector, // Input shape + int, // axis to extend + size_t, // depth + float, // on_value + float, // off_value + InferenceEngine::Precision,// Net precision + InferenceEngine::Precision,// Input precision + InferenceEngine::Precision,// Output precision + std::string, // Target device name + CPUSpecificParams +> oneHotCPUTestParams; + +class OneHotLayerCPUTest : public testing::WithParamInterface, + virtual public LayerTestsUtils::LayerTestsCommon, public CPUTestsBase { +public: + static std::string getTestCaseName(const testing::TestParamInfo& obj) { + InferenceEngine::SizeVector inputShape; + int axis; + size_t depth; + float onValue, offValue; + InferenceEngine::Precision netPrecision; + InferenceEngine::Precision inPrc, outPrc; + std::string targetDevice; + CPUSpecificParams cpuParams; + std::tie(inputShape, axis, depth, onValue, offValue, netPrecision, inPrc, outPrc, targetDevice, cpuParams) = obj.param; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(inputShape) << "_"; + result << "axis=" << axis << "_"; + result << "depth=" << depth << "_"; + result << "OnVal=" << onValue << "_"; + result << "OffVal=" << offValue << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "inPRC=" << inPrc.name() << "_"; + result << "outPRC=" << outPrc.name() << "_"; + result << "trgDev=" << targetDevice; + result << CPUTestsBase::getTestCaseName(cpuParams); + return result.str(); + } +protected: + void SetUp() override { + ngraph::Shape inputShape; + int axis; + size_t depth; + float onValue, offValue; + InferenceEngine::Precision netPrecision; + CPUSpecificParams cpuParams; + + std::tie(inputShape, axis, depth, onValue, offValue, netPrecision, inPrc, outPrc, targetDevice, cpuParams) = this->GetParam(); + std::tie(inFmts, outFmts, priority, selectedType) = cpuParams; + selectedType = std::string("unknown_") + inPrc.name(); + + auto depthConst = ngraph::builder::makeConstant(ngraph::element::i32, {}, {depth}); + auto onConst = ngraph::builder::makeConstant(ngraph::element::f32, {}, {onValue}); + auto offConst = ngraph::builder::makeConstant(ngraph::element::f32, {}, {offValue}); + + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto inputParams = ngraph::builder::makeParams(ngPrc, { inputShape }); + + auto oneHot = std::make_shared(inputParams.front(), depthConst, onConst, offConst, axis); + function = makeNgraphFunction(ngPrc, inputParams, oneHot, "OneHot"); + } +}; + +TEST_P(OneHotLayerCPUTest, CompareWithRefs) { + SKIP_IF_CURRENT_TEST_IS_DISABLED() + + Run(); + CheckPluginRelatedResults(executableNetwork, "OneHot"); +} + +namespace { +const std::vector inPrc = {Precision::I32}; +const std::vector outPrc = {Precision::FP32, Precision::BF16, Precision::I8, Precision::U8}; + +// 0d -> 1d, depth +const auto testCase_1d = ::testing::Combine( + ::testing::Values(std::vector{}), + ::testing::Values(-1, 0), + ::testing::Values(3, 4), + ::testing::Values(1.f), + ::testing::Values(0.f), + ::testing::Values(Precision::I32), + ::testing::ValuesIn(inPrc), + ::testing::ValuesIn(outPrc), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::Values(emptyCPUSpec) +); +INSTANTIATE_TEST_CASE_P(smoke_OneHotCPU_1D, OneHotLayerCPUTest, testCase_1d, OneHotLayerCPUTest::getTestCaseName); + + +// 1d -> 2d, axis default +const auto testCase_2d = ::testing::Combine( + ::testing::Values(std::vector{3}), + ::testing::Values(-1, 0, 1), + ::testing::Values(6), + ::testing::Values(1.f), + ::testing::Values(0.f), + ::testing::Values(Precision::I32), + ::testing::ValuesIn(inPrc), + ::testing::ValuesIn(outPrc), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::Values(emptyCPUSpec) +); +INSTANTIATE_TEST_CASE_P(smoke_OneHotCPU_2D, OneHotLayerCPUTest, testCase_2d, OneHotLayerCPUTest::getTestCaseName); + +// 2d -> 3d, on_value, off_value +const auto testCase_3d = ::testing::Combine( + ::testing::Values(std::vector{3, 2}), + ::testing::Values(-1, 0, 1), + ::testing::Values(4), + ::testing::Values(2.f), + ::testing::Values(-1.f), + ::testing::Values(Precision::I32), + ::testing::ValuesIn(inPrc), + ::testing::ValuesIn(outPrc), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::Values(emptyCPUSpec) +); +INSTANTIATE_TEST_CASE_P(smoke_OneHotCPU_3D, OneHotLayerCPUTest, testCase_3d, OneHotLayerCPUTest::getTestCaseName); + +// 3d -> 4d +const auto testCase_4d = ::testing::Combine( + ::testing::Values(std::vector{1, 3, 2}), + ::testing::Values(-1, 0, 1, 2), + ::testing::Values(4), + ::testing::Values(1.f), + ::testing::Values(0.f), + ::testing::Values(Precision::I32), + ::testing::ValuesIn(inPrc), + ::testing::ValuesIn(outPrc), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::Values(emptyCPUSpec) +); +INSTANTIATE_TEST_CASE_P(smoke_OneHotCPU_4D, OneHotLayerCPUTest, testCase_4d, OneHotLayerCPUTest::getTestCaseName); + +// 4d -> 5d +const auto testCase_5d = ::testing::Combine( + ::testing::Values(std::vector{1, 3, 2, 3}), + ::testing::Values(-1, 0, 1, 2, 3), + ::testing::Values(4), + ::testing::Values(1.f), + ::testing::Values(0.f), + ::testing::Values(Precision::I32), + ::testing::ValuesIn(inPrc), + ::testing::ValuesIn(outPrc), + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::Values(emptyCPUSpec) +); +INSTANTIATE_TEST_CASE_P(smoke_OneHotCPU_5D, OneHotLayerCPUTest, testCase_5d, OneHotLayerCPUTest::getTestCaseName); + +} // namespace +} // namespace CPULayerTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pad.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pad.cpp index b58293b95d0c1e..82bdc0971a6dba 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pad.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/permute.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/permute.cpp index 2655946615c666..71c0a9419a572b 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/permute.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/permute.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pooling.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pooling.cpp index 9b0021365947fa..72dbe0d5e12e60 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pooling.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/psroi_pooling.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/psroi_pooling.cpp index e387870a8ae0ea..585588b1767250 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/psroi_pooling.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/psroi_pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/reduce_ops.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/reduce_ops.cpp index 29cdb68854e4f0..38d0d083769499 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/reduce_ops.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/reduce_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/region_yolo.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/region_yolo.cpp index 59cf14b865a644..3d8718f204504f 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/region_yolo.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/roialign.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/roialign.cpp index 84eac5cff45204..c49f0b5b3227bc 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/roialign.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/roialign.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/softmax.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/softmax.cpp index d65dadf09bf203..1bd230d091c39c 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/softmax.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/split.cpp index 5ac9e3bc3f0c88..4b8573f9c13502 100644 --- a/inference-engine/tests/functional/plugin/cpu/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/cpu/single_layer_tests/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/conv_concat.hpp b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/conv_concat.hpp index 949f3b90b89731..d4a89cb0e99810 100644 --- a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/conv_concat.hpp +++ b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/conv_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/fuse_permute_reorder.hpp b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/fuse_permute_reorder.hpp index fa6aeaa2aacec5..2d6fcce3aa473c 100644 --- a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/fuse_permute_reorder.hpp +++ b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/include/fuse_permute_reorder.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/add_conver_to_reorder.cpp b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/add_conver_to_reorder.cpp index d00b872988c004..55dd27d564dc98 100644 --- a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/add_conver_to_reorder.cpp +++ b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/add_conver_to_reorder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/conv_concat.cpp b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/conv_concat.cpp index e8b46fe9c8bbee..30e273f0744559 100644 --- a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/conv_concat.cpp +++ b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/conv_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/eltwise_chain.cpp b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/eltwise_chain.cpp index bcb71b67685386..25c109b5c051c9 100644 --- a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/eltwise_chain.cpp +++ b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/eltwise_chain.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include #include diff --git a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/fuse_permute_reorder.cpp b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/fuse_permute_reorder.cpp index 1697000c86081b..16f5e680229210 100644 --- a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/fuse_permute_reorder.cpp +++ b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/fuse_permute_reorder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/reshape_permute_conv_permute_reshape_act.cpp b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/reshape_permute_conv_permute_reshape_act.cpp index 96f954e7a466a1..b389e2bc3fb938 100644 --- a/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/reshape_permute_conv_permute_reshape_act.cpp +++ b/inference-engine/tests/functional/plugin/cpu/subgraph_tests/src/reshape_permute_conv_permute_reshape_act.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_permute_conv_permute_reshape_act.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.cpp b/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.cpp index 98613d8de1d2f5..3bd91fbb639feb 100644 --- a/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.cpp +++ b/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.hpp b/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.hpp index fbd1a41492f046..09b90ea24344f0 100644 --- a/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.hpp +++ b/inference-engine/tests/functional/plugin/cpu/test_utils/cpu_test_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.cpp b/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.cpp index 93fa14d9a99efa..52f235c7821872 100644 --- a/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.cpp +++ b/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.hpp b/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.hpp index f7e22884ea8157..ba04fb884bffec 100644 --- a/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.hpp +++ b/inference-engine/tests/functional/plugin/cpu/test_utils/fusing_test_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -94,7 +94,7 @@ const auto fusingPRelu = fusingSpecificParams{std::make_shared(std {[](std::shared_ptr inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params){ auto shape = inpNode->get_shape(); if (shape.size() == 1) - THROW_IE_EXCEPTION << "If shape.size() == 1 then Granularity can be PerTensor only"; + IE_THROW() << "If shape.size() == 1 then Granularity can be PerTensor only"; ngraph::Shape newShape(shape.size(), 1); newShape[1] = shape[1]; auto data = NGraphFunctions::Utils::generateVector(ngraph::shape_size(newShape)); @@ -104,6 +104,14 @@ const auto fusingSwish = fusingSpecificParams{std::make_shared(std {[](std::shared_ptr inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params){ return ngraph::builder::makeActivation(inpNode, ngPrc, ngraph::helpers::Swish, {}, {1.0f}); }, "Swish"}}), {"Swish"}}; +const auto fusingHSwish = fusingSpecificParams{std::make_shared(std::vector{ + {[](std::shared_ptr inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params){ + return ngraph::builder::makeActivation(inpNode, ngPrc, ngraph::helpers::HSwish, {}, {}); + }, "HSwish"}}), {"HSwish"}}; +const auto fusingMish = fusingSpecificParams{std::make_shared(std::vector{ + {[](std::shared_ptr inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params){ + return ngraph::builder::makeActivation(inpNode, ngPrc, ngraph::helpers::Mish, {}, {}); + }, "Mish"}}), {"Mish"}}; const auto fusingReluScaleShift = fusingSpecificParams{std::make_shared(std::vector{ {[](std::shared_ptr inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params){ @@ -112,7 +120,7 @@ const auto fusingReluScaleShift = fusingSpecificParams{std::make_shared inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params){ auto shape = inpNode->get_shape(); if (shape.size() == 1) - THROW_IE_EXCEPTION << "If shape.size() == 1 then Granularity can be PerTensor only"; + IE_THROW() << "If shape.size() == 1 then Granularity can be PerTensor only"; ngraph::Shape newShape(shape.size(), 1); newShape[1] = shape[1]; auto constNode = ngraph::builder::makeConstant(ngraph::element::f32, newShape, {}, true); @@ -121,7 +129,7 @@ const auto fusingReluScaleShift = fusingSpecificParams{std::make_shared inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params){ auto shape = inpNode->get_shape(); if (shape.size() == 1) - THROW_IE_EXCEPTION << "If shape.size() == 1 then Granularity can be PerTensor only"; + IE_THROW() << "If shape.size() == 1 then Granularity can be PerTensor only"; ngraph::Shape newShape(shape.size(), 1); newShape[1] = shape[1]; auto constNode = ngraph::builder::makeConstant(ngraph::element::f32, newShape, {}, true); @@ -131,7 +139,7 @@ const auto fusingScaleShift = fusingSpecificParams{ std::make_shared inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params) { auto shape = inpNode->get_shape(); if (shape.size() == 1) - THROW_IE_EXCEPTION << "If shape.size() == 1 then Granularity can be PerTensor only"; + IE_THROW() << "If shape.size() == 1 then Granularity can be PerTensor only"; ngraph::Shape newShape(shape.size(), 1); newShape[1] = shape[1]; auto constNode = ngraph::builder::makeConstant(ngraph::element::f32, newShape, {}, true); @@ -140,7 +148,7 @@ const auto fusingScaleShift = fusingSpecificParams{ std::make_shared inpNode, const ngraph::element::Type& ngPrc, ngraph::ParameterVector& params) { auto shape = inpNode->get_shape(); if (shape.size() == 1) - THROW_IE_EXCEPTION << "If shape.size() == 1 then Granularity can be PerTensor only"; + IE_THROW() << "If shape.size() == 1 then Granularity can be PerTensor only"; ngraph::Shape newShape(shape.size(), 1); newShape[1] = shape[1]; auto constNode = ngraph::builder::makeConstant(ngraph::element::f32, newShape, {}, true); @@ -151,7 +159,7 @@ const auto fusingFakeQuantizePerChannelRelu = fusingSpecificParams{std::make_sha auto localPrc = inpNode->get_element_type(); auto shape = inpNode->get_shape(); if (shape.size() == 1) - THROW_IE_EXCEPTION << "If shape.size() == 1 then Granularity can be PerTensor only"; + IE_THROW() << "If shape.size() == 1 then Granularity can be PerTensor only"; ngraph::Shape newShape(shape.size(), 1); newShape[1] = shape[1]; return ngraph::builder::makeFakeQuantize(inpNode, localPrc, 256, newShape); diff --git a/inference-engine/tests/functional/plugin/gna/CMakeLists.txt b/inference-engine/tests/functional/plugin/gna/CMakeLists.txt index c1b553dfa45831..83567e31b8fc72 100644 --- a/inference-engine/tests/functional/plugin/gna/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/gna/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2019 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/functional/plugin/gna/Import_export_tests/import_export_memory_layer.cpp b/inference-engine/tests/functional/plugin/gna/Import_export_tests/import_export_memory_layer.cpp new file mode 100644 index 00000000000000..8adc666460a435 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/Import_export_tests/import_export_memory_layer.cpp @@ -0,0 +1,140 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "functional_test_utils/blob_utils.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" +#include "ngraph_functions/builders.hpp" + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map, // Export Configuration + std::map // Import Configuration +> exportImportNetworkParams; + +namespace LayerTestsDefinitions { + +class ImportMemoryTest : public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map exportConfiguration; + std::map importConfiguration; + std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration) = obj.param; + + std::ostringstream result; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice << "_"; + for (auto const &configItem : exportConfiguration) { + result << "_exportConfigItem=" << configItem.first << "_" << configItem.second; + } + for (auto const &configItem : importConfiguration) { + result << "_importConfigItem=" << configItem.first << "_" << configItem.second; + } + return result.str(); + } + + void Run() override { + SKIP_IF_CURRENT_TEST_IS_DISABLED() + + configuration.insert(exportConfiguration.begin(), exportConfiguration.end()); + LoadNetwork(); + GenerateInputs(); + Infer(); + executableNetwork.Export("exported_model.blob"); + for (auto const &configItem : importConfiguration) { + configuration[configItem.first] = configItem.second; + } + std::fstream inputStream("exported_model.blob", std::ios_base::in | std::ios_base::binary); + if (inputStream.fail()) { + FAIL() << "Cannot open file to import model: exported_model.blob"; + } + auto importedNetwork = core->ImportNetwork(inputStream, targetDevice, configuration); + std::vector queryToState; + for (const auto &query_state : executableNetwork.QueryState()) { + queryToState.push_back(query_state.GetName()); + } + for (const auto &next_memory : importedNetwork.QueryState()) { + ASSERT_TRUE(std::find(queryToState.begin(), queryToState.end(), next_memory.GetName()) != queryToState.end()) + << "State " << next_memory.GetName() << " expected to be in memory states but it is not!"; + } + InferenceEngine::InferRequest importInfer = importedNetwork.CreateInferRequest(); + importInfer.Infer(); + } + +protected: + void SetUp() override { + InferenceEngine::Precision netPrecision; + std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration) = this->GetParam(); + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + + auto params = ngraph::builder::makeParams(ngPrc, {{1, 336}}); + auto mem_c = ngraph::builder::makeConstant(ngPrc, {1, 336}, std::vector{1}); + auto mem_r = std::make_shared(mem_c, "id"); + + auto mul = std::make_shared(params[0], mem_r); + auto mem_w = std::make_shared(mul, "id"); + + auto relu = std::make_shared(mul); + mem_w->add_control_dependency(mem_r); + relu->add_control_dependency(mem_w); + ngraph::ResultVector results{std::make_shared(relu)}; + function = std::make_shared(results, params, "ExportImportNetwork"); + } + +private: + std::map exportConfiguration; + std::map importConfiguration; +}; + +TEST_P(ImportMemoryTest, CompareWithRefImpl) { + Run(); +}; + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +const std::vector> exportConfigs = { + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, + {"GNA_SCALE_FACTOR_0", "327.67"} + } +}; + +const std::vector> importConfigs = { + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, + {"GNA_SCALE_FACTOR_0", "32767"} + }, + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, + {"GNA_SCALE_FACTOR_0", "327.67"} + }, +}; + +INSTANTIATE_TEST_CASE_P(smoke_ImportNetworkMemoryCase, ImportMemoryTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(exportConfigs), + ::testing::ValuesIn(importConfigs)), + ImportMemoryTest::getTestCaseName); + +} // namespace LayerTestsDefinitions + diff --git a/inference-engine/tests/functional/plugin/gna/pass_tests/4d_eltwise.cpp b/inference-engine/tests/functional/plugin/gna/pass_tests/4d_eltwise.cpp index eee419401ec0fd..37cb4a825690bd 100644 --- a/inference-engine/tests/functional/plugin/gna/pass_tests/4d_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/gna/pass_tests/4d_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/pass_tests/eltwise_split_over_channels_pass.cpp b/inference-engine/tests/functional/plugin/gna/pass_tests/eltwise_split_over_channels_pass.cpp index a0c987a66fe6c3..17da73dfc99e18 100644 --- a/inference-engine/tests/functional/plugin/gna/pass_tests/eltwise_split_over_channels_pass.cpp +++ b/inference-engine/tests/functional/plugin/gna/pass_tests/eltwise_split_over_channels_pass.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/pass_tests/fq_activation.cpp b/inference-engine/tests/functional/plugin/gna/pass_tests/fq_activation.cpp new file mode 100644 index 00000000000000..c996d06205bfb7 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/pass_tests/fq_activation.cpp @@ -0,0 +1,134 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include +#include +#include + +#include + +#include "common_test_utils/common_utils.hpp" +#include "functional_test_utils/plugin_cache.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "functional_test_utils/blob_utils.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" +#include "ngraph_functions/builders.hpp" + +#include "ngraph_functions/pass/convert_prc.hpp" + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map, // Configuration + std::vector, // Input Shape + std::pair, // Input Min and Max + size_t // Levels +> fqActivationParams; + +namespace LayerTestsDefinitions { + +class FQActivation : public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon { + float inputDataMin = 0.0f; + float inputDataMax = 0.0f; + float inputDataResolution = 1.0f; + +public: + static std::string getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map configuration; + std::vector inputShape; + std::pair inputMinMax; + size_t levels = 0; + std::tie(netPrecision, targetDevice, configuration, inputShape, inputMinMax, levels) = obj.param; + + std::ostringstream result; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice << "_"; + for (auto const& configItem : configuration) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + result << "_inputShape=" << CommonTestUtils::vec2str(inputShape); + result << "_inputMinMax=(" << inputMinMax.first << ".." << inputMinMax.second << ")"; + result << "_levels=" << levels; + + return result.str(); + } + + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo& info) const { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), inputDataMax - inputDataMin, inputDataMin, 1 / inputDataResolution); + } + +protected: + void SetUp() override { + InferenceEngine::Precision netPrecision; + + std::vector inputShape; + std::pair inputMinMax; + size_t levels = 0; + std::tie(netPrecision, targetDevice, configuration, inputShape, inputMinMax, levels) = this->GetParam(); + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + + auto inputLowNode = ngraph::builder::makeConstant(ngPrc, { 1 }, { inputMinMax.first }); + auto inputHighNode = ngraph::builder::makeConstant(ngPrc, { 1 }, { inputMinMax.second }); + + auto inputVector = ngraph::builder::makeParams(ngPrc, { inputShape }); + auto inputFQNode = std::make_shared(inputVector[0], + inputLowNode, inputHighNode, inputLowNode, inputHighNode, levels); + + auto relu = ngraph::builder::makeActivation(inputFQNode, ngraph::element::f32, ngraph::helpers::ActivationTypes::Relu); + auto reluFQNode = std::make_shared(relu, + inputLowNode, inputHighNode, inputLowNode, inputHighNode, levels); + + ngraph::ResultVector results{ std::make_shared(reluFQNode) }; + function = std::make_shared(results, inputVector, "FQActivation"); + } +}; + + +TEST_P(FQActivation, CompareWithRefImpl) { + Run(); +}; + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +const std::vector> configs = { + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, + } +}; + +const std::vector> inputShape = { + {1, 1024}, +}; + +const std::vector> inputMinMax = { + {-0.5, 0.5}, + {-2, 2}, + {-8, 8}, + {-16, 16}, + {-50, 50}, + {-100, 100}, +}; + +const std::vector levels = { + 65535, +}; + +INSTANTIATE_TEST_CASE_P(smoke_fq_activation, FQActivation, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs), + ::testing::ValuesIn(inputShape), + ::testing::ValuesIn(inputMinMax), + ::testing::ValuesIn(levels)), + FQActivation::getTestCaseName); +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/gna/pass_tests/remove_permutations_NHWC_to_NCHW_pass.cpp b/inference-engine/tests/functional/plugin/gna/pass_tests/remove_permutations_NHWC_to_NCHW_pass.cpp index c8c5e82b3382f2..84d63fd0882e00 100644 --- a/inference-engine/tests/functional/plugin/gna/pass_tests/remove_permutations_NHWC_to_NCHW_pass.cpp +++ b/inference-engine/tests/functional/plugin/gna/pass_tests/remove_permutations_NHWC_to_NCHW_pass.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/add_output.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/add_output.cpp index c27c85a30d6d22..a14c11241e9918 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/add_output.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/add_output.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/caching_tests.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/caching_tests.cpp new file mode 100644 index 00000000000000..5d956898897025 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/caching_tests.cpp @@ -0,0 +1,27 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "behavior/caching_tests.hpp" + +using namespace LayerTestsDefinitions; + +namespace { + static const std::vector precisionsGNA = { + ngraph::element::f32, + ngraph::element::u8, + ngraph::element::i16, + }; + + static const std::vector batchSizesGNA = { + 1, 2 + }; + + INSTANTIATE_TEST_CASE_P(smoke_CachingSupportCase_GNA, LoadNetworkCacheTestBase, + ::testing::Combine( + ::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), + ::testing::ValuesIn(precisionsGNA), + ::testing::ValuesIn(batchSizesGNA), + ::testing::Values(CommonTestUtils::DEVICE_GNA)), + LoadNetworkCacheTestBase::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/config.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/config.cpp index f896a7b7a05913..2c74871bd324ea 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/config.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_integration.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_integration.cpp index 276c1ef603d675..52efa7af27bea1 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_integration.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_integration.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -142,7 +142,7 @@ TEST_P(IEClassExecutableNetworkSetConfigFromFp32Test, SetConfigFromFp32Throws) { initialConfig[GNA_CONFIG_KEY(DEVICE_MODE)] = GNAConfigParams::GNA_SW_FP32; ExecutableNetwork exeNetwork = ie.LoadNetwork(simpleNetwork, deviceName, initialConfig); - ASSERT_THROW(exeNetwork.SetConfig({{configKey, configValue}}), InferenceEngineException); + ASSERT_THROW(exeNetwork.SetConfig({{configKey, configValue}}), Exception); } // TODO: Convolution with 3D input is not supported on GNA diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_threading_tests.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_threading_tests.cpp index 1adbd58045b832..f1cb21ac6b5f0e 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_threading_tests.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/core_threading_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,7 @@ std::vector< std::tuple > paramsWithIterations{ params[0], param INSTANTIATE_TEST_CASE_P(GNA, CoreThreadingTests, testing::ValuesIn(params), CoreThreadingTests::getTestCaseName); -INSTANTIATE_TEST_CASE_P(DISABLED_GNA, CoreThreadingTestsWithIterations, +INSTANTIATE_TEST_CASE_P(GNA, CoreThreadingTestsWithIterations, testing::Combine(testing::ValuesIn(paramsWithIterations), testing::Values(3), testing::Values(4), diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/cpp_holders.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/cpp_holders.cpp index 666fef809b70ca..433d4adf9336cc 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/cpp_holders.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/cpp_holders.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/exec_graph_info.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/exec_graph_info.cpp index 4f8ee553ffd9cb..d8cb26b4499588 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/exec_graph_info.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/exec_graph_info.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request.cpp index 14c748e17ecce1..9d67255fafc429 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_callback.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_callback.cpp index ddc4616a73c0ec..661e58597d013a 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_callback.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_callback.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_config.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_config.cpp index 85f83c8039eb3d..2d502168f46d42 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_config.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_input.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_input.cpp index d9912f706a889d..81620660e0f250 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_input.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_input.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_output.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_output.cpp index 47c836c08723da..da5b0b42611ae2 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_output.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/infer_request_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/layout.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/layout.cpp index 86675a90737b59..2d5f773bf41e83 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/layout.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/layout.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/memory_states.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/memory_states.cpp index 6a7b4ccb69b24e..580baf8ea2e805 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/memory_states.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/memory_states.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/test_plugin.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/test_plugin.cpp index 410a2d0444ec17..4ee7a5a8761abe 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/test_plugin.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/test_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/version.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/version.cpp index bb5c62855c9548..1d3652863b59df 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/version.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/behavior/version.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/core_config.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/core_config.cpp index 2604d37d06123c..ebb902ee000f53 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/core_config.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/core_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/import_export_tests/import_reshape_permute_conv.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/import_export_tests/import_reshape_permute_conv.cpp index 27f92bd88d0708..442cb116f5d387 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/import_export_tests/import_reshape_permute_conv.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/import_export_tests/import_reshape_permute_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,13 +14,23 @@ namespace { class ImportReshapePermuteConvGNA : public ImportReshapePermuteConv { private: void exportImportNetwork() override { - executableNetwork.Export(fileName); - std::fstream inputStream(fileName, std::ios_base::in | std::ios_base::binary); - if (inputStream.fail()) { - FAIL() << "Cannot open file to import model: " << fileName; + { + std::ofstream out(fileName); + out.write(applicationHeader.c_str(), applicationHeader.size()); + executableNetwork.Export(out); + } + { + std::string appHeader(applicationHeader.size(), ' '); + std::fstream inputStream(fileName, std::ios_base::in | std::ios_base::binary); + if (inputStream.fail()) { + FAIL() << "Cannot open file to import model: " << fileName; + } + inputStream.read(&appHeader[0], applicationHeader.size()); + ASSERT_EQ(appHeader, applicationHeader); + executableNetwork = core->ImportNetwork(inputStream, targetDevice, configuration); } - executableNetwork = core->ImportNetwork(inputStream, targetDevice, configuration); } + protected: void TearDown() override { if (remove(fileName.c_str()) != 0) { @@ -59,12 +69,18 @@ const std::vector> importConfigs = { }, }; +const std::vector appHeaders = { + "", + "APPLICATION_HEADER" +}; + INSTANTIATE_TEST_CASE_P(smoke_ImportNetworkCase, ImportReshapePermuteConvGNA, ::testing::Combine( ::testing::ValuesIn(netPrecisions), ::testing::Values(CommonTestUtils::DEVICE_GNA), ::testing::ValuesIn(exportConfigs), - ::testing::ValuesIn(importConfigs)), + ::testing::ValuesIn(importConfigs), + ::testing::ValuesIn(appHeaders)), ImportReshapePermuteConvGNA::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/activation.cpp index c05ce551c52a5b..d114747234a081 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/activation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/concat.cpp index d056a2659da906..66d15c7976fe8c 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/convolution.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/convolution.cpp index e51e76614d1989..8f99a0d6778f34 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,11 +6,31 @@ #include "single_layer_tests/convolution.hpp" #include "common_test_utils/test_constants.hpp" +#include "../skip_tests_check.hpp" using namespace LayerTestsDefinitions; namespace { +class GnaConvolutionLayerTest : public ConvolutionLayerTest, GnaLayerTestCheck { +protected: + void Run() override { + GnaLayerTestCheck::SkipTestCheck(); + + if (!GnaLayerTestCheck::skipTest) { + ConvolutionLayerTest::Run(); + } + } + + void SetUp() { + ConvolutionLayerTest::SetUp(); + } +}; + +TEST_P(GnaConvolutionLayerTest, CompareWithRefs) { + Run(); +} + const std::vector netPrecisions = { InferenceEngine::Precision::FP32, InferenceEngine::Precision::FP16 @@ -27,7 +47,6 @@ const std::vector> padEndsH1 = {{1, 0}, {1, 3}}; const std::vector> dilationsH1 = {{1, 1}, {1, 3}}; -// TODO: Currently C != 1 is not supported for graphs with native NCHW layout (will be fixed in 40496) const std::vector> inputShapesH1 = {{1, 1, 1, 32}, {1, 32, 1, 160}, {1, 8, 1, 64}}; @@ -41,7 +60,6 @@ const std::vector> padEndsW1 = {{0, 1}, {3, 1}}; const std::vector> dilationsW1 = {{1, 1}, {3, 1}}; -// TODO: Currently C != 1 is not supported for graphs with native NCHW layout (will be fixed in 40496) const std::vector> inputShapesW1 = {{1, 1, 32, 1}, {1, 32, 160, 1}, {1, 8, 64, 1}}; @@ -69,6 +87,10 @@ const std::vector numOutCannels2D = { 1, 2, 5 }; const std::vector input2DNCHW = { 1, 2, 20, 15 }; +const std::vector> inputShapesMapTo1d = {{1, 1, 56, 5}, + {1, 32, 56, 5}, + {1, 2, 64, 5}}; + const auto conv2DParams_Kernels2D = ::testing::Combine( ::testing::ValuesIn(kernels2D), ::testing::ValuesIn(strides2D), @@ -114,6 +136,15 @@ const auto conv2DParams_AutoPadValid_Width1 = ::testing::Combine( ::testing::ValuesIn(numOutCannels), ::testing::Values(ngraph::op::PadType::VALID) ); +const auto conv2DParams_AutoPadValid_MapTo1d = ::testing::Combine( + ::testing::Values(std::vector{3, 5}), + ::testing::ValuesIn(stridesW1), + ::testing::Values(std::vector({0, 0})), + ::testing::Values(std::vector({0, 0})), + ::testing::Values(std::vector{1, 1}), + ::testing::ValuesIn(numOutCannels), + ::testing::Values(ngraph::op::PadType::VALID) +); // TODO: padding isn't currently supported in GNA INSTANTIATE_TEST_CASE_P(DISABLED_smoke_Convolution2D_ExplicitPadding_Height1, ConvolutionLayerTest, @@ -164,8 +195,19 @@ INSTANTIATE_TEST_CASE_P(smoke_Convolution2D_AutoPadValid_Width1, ConvolutionLaye ::testing::Values(CommonTestUtils::DEVICE_GNA)), ConvolutionLayerTest::getTestCaseName); -// TODO: Enable for GNA 2.1 library -INSTANTIATE_TEST_CASE_P(DISABLED_smoke_Convolution2D_Kernels2D, ConvolutionLayerTest, +INSTANTIATE_TEST_CASE_P(smoke_Convolution2D_AutoPadValid_MapTo1d, ConvolutionLayerTest, + ::testing::Combine( + conv2DParams_AutoPadValid_MapTo1d, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(inputShapesMapTo1d), + ::testing::Values(CommonTestUtils::DEVICE_GNA)), + ConvolutionLayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_Convolution2D_Kernels2D, GnaConvolutionLayerTest, ::testing::Combine( conv2DParams_Kernels2D, ::testing::ValuesIn(netPrecisions), @@ -175,5 +217,5 @@ INSTANTIATE_TEST_CASE_P(DISABLED_smoke_Convolution2D_Kernels2D, ConvolutionLayer ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(input2DNCHW), ::testing::Values(CommonTestUtils::DEVICE_GNA)), - ConvolutionLayerTest::getTestCaseName); + GnaConvolutionLayerTest::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/eltwise.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/eltwise.cpp index 3c8e3e811dcf8c..2f00c7b067e025 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/fake_quantize.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/fake_quantize.cpp index 34f7d7a7c5cb0d..98e8e3163c89e0 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/fake_quantize.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/pooling.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/pooling.cpp index e045f8626baed8..cd5af6385d2ac8 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/pooling.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/pooling.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/power.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/power.cpp index 3266252cdc6d1c..88f5cd4c64c4cd 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/power.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/power.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp index dcaa8d5d99131c..a2740dd8ea7867 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/skip_tests_check.hpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/skip_tests_check.hpp new file mode 100644 index 00000000000000..501b7134c60347 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/skip_tests_check.hpp @@ -0,0 +1,26 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +class GnaLayerTestCheck : virtual public LayerTestsUtils::LayerTestsCommon { +protected: + bool skipTest = true; + + void SkipTestCheck() { + InferenceEngine::Core ie_core; + std::vector metrics = ie_core.GetMetric(targetDevice, METRIC_KEY(SUPPORTED_METRICS)); + + if (targetDevice == "GNA") { + if (std::find(metrics.begin(), metrics.end(), METRIC_KEY(GNA_LIBRARY_FULL_VERSION)) != metrics.end()) { + std::string gnaLibVer = ie_core.GetMetric(targetDevice, METRIC_KEY(GNA_LIBRARY_FULL_VERSION)); + + if (gnaLibVer.rfind("2.1", 0) != 0) { + GTEST_SKIP() << "Disabled test due to GNA library version being < 2.1" << std::endl; + } + skipTest = false; + } + } + } +}; diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/skip_tests_config.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/skip_tests_config.cpp index 53b9753b1bec3a..47852fb59c858d 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/skip_tests_config.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/skip_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -54,6 +54,8 @@ std::vector disabledTestPatterns() { R"(.*VariableStateTest.inferreq_smoke_VariableState_2infers*.*)", // TODO: Issue 24839 R"(.*ConvolutionLayerTest.CompareWithRefs.*D=\(1.3\).*)", - R"(.*ConvolutionLayerTest.CompareWithRefs.*D=\(3.1\).*)" + R"(.*ConvolutionLayerTest.CompareWithRefs.*D=\(3.1\).*)", + R"(.*ConstantResultSubgraphTest.*IS=\(2\.3\.4\.5\).*)", + R"(.*ConstantResultSubgraphTest.*inPrc=(U8|I8|I32|U64|I64|BOOL).*)", }; } diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/activation_concats_eltwise.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/activation_concats_eltwise.cpp index c86fb626390782..f08ef63d0b9842 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/activation_concats_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/activation_concats_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/basic_lstm.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/basic_lstm.cpp index bf32ee22ad0876..48cb3afdfeda91 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/basic_lstm.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/basic_lstm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/broadcast_power.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/broadcast_power.cpp index 2a890505f01c5c..252e64cb2753c7 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/broadcast_power.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/broadcast_power.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include #include diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/cascade_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/cascade_concat.cpp index 2e9e3a9659e2ef..fc408535b6d235 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/cascade_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/cascade_concat.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include #include diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/clamp_fq.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/clamp_fq.cpp new file mode 100644 index 00000000000000..2a53f88a83aa5d --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/clamp_fq.cpp @@ -0,0 +1,87 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "subgraph_tests/clamp_fq.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP16, InferenceEngine::Precision::FP32 +}; + + +using ConfigType = std::map; +const ConfigType configFP32 = { + {"GNA_DEVICE_MODE", "GNA_SW_FP32"}, +}; + +const ConfigType configSWExact = { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"}, + {"GNA_COMPACT_MODE", "NO"} +}; + +const std::vector> gnaQuantModes = { + {"sw_fp32", configFP32}, + {"sw_exact", configSWExact} +}; + +const std::vector> inputShapes = { + {1, 250}, + {1, 640}, + {1, 1024} +}; + +const std::vector level = {65535}; +const std::vector> inputParams = { + {-16, 16, 1}, + {-40, 40, 1}, + {0, 10, 1}, + {-50, 0, 1}, + {0, 50, 1}, + {-100, 100, 1}, + {-5, 5, 1}, + {-10, 10, 1}, + {-14, 14, 1} +}; +const std::vector> clampMaxMin = { + {-5, 5}, + {-20, 20}, + {-25, 0}, + {-30, 25}, + {0, 40}, + {-10, 10}, + {-14, 14} +}; + +const std::vector>> constShapes = { + {{1}} +}; + +const auto fqParams = ::testing::Combine( + ::testing::Values(level), + ::testing::ValuesIn(constShapes), + ::testing::ValuesIn(clampMaxMin), + ::testing::ValuesIn(inputParams) +); + + +INSTANTIATE_TEST_CASE_P(smoke_Clamp_FQ_subgraph, ClampFakeQuantizeSubgraphTest, + ::testing::Combine( + fqParams, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(inputShapes), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(gnaQuantModes)), + ClampFakeQuantizeSubgraphTest::getTestCaseName); +} // namespace \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_conv.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_conv.cpp new file mode 100644 index 00000000000000..4b657aec21e3fe --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_conv.cpp @@ -0,0 +1,51 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "common_test_utils/test_constants.hpp" +#include "subgraph_tests/concat_conv.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +const std::vector> configs = { + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"} + } +}; + +std::vector params = { + std::make_tuple( + std::vector{1, 32}, //InputShape + std::vector{1, 3}, //KernelShape + 1), //Stride + std::make_tuple(std::vector{1, 64}, std::vector{1, 5}, 1), + std::make_tuple(std::vector{1, 256}, std::vector{1, 9}, 2) +}; + +std::vector inputChannels = { + 1 +}; + +std::vector outputChannels = { + 4, + 8 +}; + +INSTANTIATE_TEST_CASE_P(smoke_ConcatConvTest, ConcatConvTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs), + ::testing::ValuesIn(params), + ::testing::ValuesIn(inputChannels), + ::testing::ValuesIn(outputChannels)), + ConcatConvTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_multi_input.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_multi_input.cpp index 0e45793eeb9b2a..c748d53a83fa3e 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_multi_input.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_multi_input.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization.cpp index a55c0950df411a..01db9ae551f0ea 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization_during_memory_requantization.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization_during_memory_requantization.cpp index eb489ece93a3d6..32df9109d6af06 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization_during_memory_requantization.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/concat_quantization_during_memory_requantization.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/concat_quantization_during_memory_requantization.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/connect_split_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/connect_split_concat.cpp new file mode 100644 index 00000000000000..47bb9adda01581 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/connect_split_concat.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "subgraph_tests/multiple_connect_split_concat.hpp" +#include "subgraph_tests/connect_split_concat_concat.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { + +std::vector netPrecisions = {InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +std::map additional_config = { + {"GNA_COMPACT_MODE", "NO"} +}; + +INSTANTIATE_TEST_CASE_P(multiple_connect_split_concat, MultipleConnectSplitConcatTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::Values(additional_config)), + MultipleConnectSplitConcatTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(connect_split_concat_concat, SplitConcatConcatTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::Values(additional_config)), + MultipleConnectSplitConcatTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/constant_result.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/constant_result.cpp index 8ba56773cf8090..3c3c7978fe24bd 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/constant_result.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/constant_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,10 +8,38 @@ #include "common_test_utils/test_constants.hpp" using namespace SubgraphTestsDefinitions; +using namespace InferenceEngine; namespace { - INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, - ::testing::Values(CommonTestUtils::DEVICE_GNA), - ConstantResultSubgraphTest::getTestCaseName); -} // namespace +const std::vector types = { + ConstantSubgraphType::SINGLE_COMPONENT, + ConstantSubgraphType::SEVERAL_COMPONENT +}; + +const std::vector shapes = { + {1, 3, 10, 10}, + {2, 3, 4, 5} +}; + +const std::vector precisions = { + Precision::U8, + Precision::I8, + Precision::U16, + Precision::I16, + Precision::I32, + Precision::U64, + Precision::I64, + Precision::FP32, + Precision::BOOL +}; + +INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, + ::testing::Combine( + ::testing::ValuesIn(types), + ::testing::ValuesIn(shapes), + ::testing::ValuesIn(precisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA)), + ConstantResultSubgraphTest::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/convolution_relu_sequence.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/convolution_relu_sequence.cpp new file mode 100644 index 00000000000000..e8b6761694408a --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/convolution_relu_sequence.cpp @@ -0,0 +1,164 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "gna/gna_config.hpp" + +#include "subgraph_tests/convolution_relu_sequence.hpp" +#include "common_test_utils/test_constants.hpp" +#include "../skip_tests_check.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { + +class GnaConvolutionReluSequenceTest : public ConvolutionReluSequenceTest, GnaLayerTestCheck { +protected: + void Run() override { + GnaLayerTestCheck::SkipTestCheck(); + + if (!GnaLayerTestCheck::skipTest) { + ConvolutionReluSequenceTest::Run(); + } + } + + void SetUp() { + ConvolutionReluSequenceTest::SetUp(); + } +}; + +TEST_P(GnaConvolutionReluSequenceTest, CompareWithRefs) { + Run(); +} + + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +const std::vector inputShapeSimple = { + {1, 32, 64, 16}, +}; + +const std::vector inputShapeSimpleWithPooling = { + {1, 32, 128, 32}, +}; + +const std::vector convReluSpecificParamsSimpleSeq { + { + {2, 2}, // Kernel size + {2, 2}, // Stride + {0, 0}, // Pad begin + {0, 0}, // Pad end + 3, // Num out channels + {1, 1}, //Pooling window + {1, 1} //Pooling stride + }, + { + {2, 5}, // Kernel size + {2, 3}, // Stride + {0, 0}, // Pad begin + {0, 0}, // Pad end + 8, // Num out channels + {1, 1}, //Pooling window + {1, 1} //Pooling stride + }, +}; + +const std::vector convReluSpecificParamsSimpleSeqWithPooling { + { + {3, 3}, // Kernel size + {1, 1}, // Stride + {0, 0}, // Pad begin + {0, 0}, // Pad end + 3, // Num out channels + {2, 3}, //Pooling window + {2, 3} //Pooling stride + }, + { + {2, 2}, // Kernel size + {1, 2}, // Stride + {0, 0}, // Pad begin + {0, 0}, // Pad end + 8, // Num out channels + {2, 3}, //Pooling window + {2, 2} //Pooling stride + }, +}; + +const InferenceEngine::SizeVector inputShapeFB = { + {1, 1, 5, 236}, +}; + +const std::vector convReluSpecificParamsFBSeq = { + { + {5, 7}, // Kernel size + {1, 1}, // Stride + {2, 3}, // Pad begin + {2, 3}, // Pad end + 32, // Num out channels + {1, 1}, //Pooling window + {1, 1} //Pooling stride + }, + { + {9, 5}, // Kernel size + {1, 1}, // Stride + {4, 2}, // Pad begin + {4, 2}, // Pad end + 32, // Num out channels + {1, 1}, //Pooling window + {1, 1} //Pooling stride + }, + { + {1, 1}, // Kernel size + {1, 1}, // Stride + {0, 0}, // Pad begin + {0, 0}, // Pad end + 8, // Num out channels + {1, 1}, //Pooling window + {1, 1} //Pooling stride + }, +}; + +const std::vector convReluSpecificParamsAllAll = { + { + inputShapeSimple, + convReluSpecificParamsSimpleSeq + }, + { + inputShapeFB, + convReluSpecificParamsFBSeq + }, + { + inputShapeSimpleWithPooling, + convReluSpecificParamsSimpleSeqWithPooling + } +}; + +const std::vector > configs = { + { + {InferenceEngine::GNAConfigParams::KEY_GNA_DEVICE_MODE, InferenceEngine::GNAConfigParams::GNA_AUTO} + }, + { + {InferenceEngine::GNAConfigParams::KEY_GNA_DEVICE_MODE, InferenceEngine::GNAConfigParams::GNA_SW_FP32} + }, + { + {InferenceEngine::GNAConfigParams::KEY_GNA_DEVICE_MODE, InferenceEngine::GNAConfigParams::GNA_SW_EXACT} + } +}; + +// Enable when using GNA 2.1 library +INSTANTIATE_TEST_CASE_P(smoke_ConvolutionReluSequenceTest, GnaConvolutionReluSequenceTest, + ::testing::Combine( + ::testing::ValuesIn(convReluSpecificParamsAllAll), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs)), + GnaConvolutionReluSequenceTest::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/copy_before_squeeze.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/copy_before_squeeze.cpp index dc5101164b8ce6..3e82d4f0e8b43e 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/copy_before_squeeze.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/copy_before_squeeze.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/copy_before_squeeze.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/crop4d.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/crop4d.cpp index 23c6a57383af96..7e390c381585a7 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/crop4d.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/crop4d.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/delayed_copy_layer.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/delayed_copy_layer.cpp index 5c660b4a248a04..41a8c1d68e0d7e 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/delayed_copy_layer.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/delayed_copy_layer.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/delayed_copy_layer.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/eltwise_conv_eltwise.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/eltwise_conv_eltwise.cpp similarity index 98% rename from inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/eltwise_conv_eltwise.cpp rename to inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/eltwise_conv_eltwise.cpp index 750aa3dc1e2be3..bacdd0d90061bc 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/eltwise_conv_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/eltwise_conv_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/fc_conv_fc.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/fc_conv_fc.cpp index d33420004265ac..db70b15fd5c01e 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/fc_conv_fc.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/fc_conv_fc.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/first_connect_input_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/first_connect_input_concat.cpp index 703e212de16f5b..3a7bdf8935d524 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/first_connect_input_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/first_connect_input_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/fq_conv_fq_affine.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/fq_conv_fq_affine.cpp new file mode 100644 index 00000000000000..28f414ee11d750 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/fq_conv_fq_affine.cpp @@ -0,0 +1,59 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "subgraph_tests/fq_conv_fq_affine.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { + +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, InferenceEngine::Precision::FP16, +}; + +const std::vector> configs = { + {{"GNA_DEVICE_MODE", "GNA_SW_FP32"}}, + {{"GNA_DEVICE_MODE", "GNA_SW_EXACT"}} +}; + +const std::vector> inputShapes = { + {1, 1024} +}; + +const std::vector levels = {65535, 65535}; + +const std::vector> inputParams = {{-0.2, 0.2, 0.01}}; + +const auto fqParams = ::testing::Combine( + ::testing::Values(levels), + ::testing::ValuesIn(inputParams) +); + +const std::vector> kernels = {{1, 3}}; +const std::vector> strides = {{1, 1}}; +const std::vector inputChannels = {8}; +const std::vector outputChannels {4}; + +const auto convParams = ::testing::Combine( + ::testing::ValuesIn(kernels), + ::testing::ValuesIn(strides), + ::testing::ValuesIn(inputChannels), + ::testing::ValuesIn(outputChannels) +); + +INSTANTIATE_TEST_CASE_P(smoke_FqConvFqAffineTest, FqConvFqAffineTest, + ::testing::Combine( + fqParams, + convParams, + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(inputShapes), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs)), + FqConvFqAffineTest::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp index 9799b927283cde..7588776f73b64c 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/handling_orientation_conv.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/handling_orientation_conv.cpp index c71852a4fee8b7..f752ba54f1d6cc 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/handling_orientation_conv.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/handling_orientation_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/input_conv.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/input_conv.cpp index 8bb654c4afb7ae..3fad3b60d27d46 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/input_conv.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/input_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/input_split_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/input_split_concat.cpp new file mode 100644 index 00000000000000..2e667336fecbe9 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/input_split_concat.cpp @@ -0,0 +1,40 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "common_test_utils/test_constants.hpp" +#include "subgraph_tests/input_split_concat.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +const std::vector> configs = { + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"} + }, + { + {"GNA_DEVICE_MODE", "GNA_SW_FP32"} + } +}; + +const std::vector> inputShapes = { + {1, 128}, + {1, 512}, + {1, 320} +}; + +INSTANTIATE_TEST_CASE_P(smoke_InputSplitConcat, InputSplitConcatTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs), + ::testing::ValuesIn(inputShapes)), + InputSplitConcatTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp index b6874daac9f825..17afb8cd5a8af3 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_LSTMCell.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_LSTMCell.cpp index 46aca0ccab2362..a8d651f6c807f6 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_LSTMCell.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_LSTMCell.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_eltwise_reshape_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_eltwise_reshape_concat.cpp index 102bec2ca9d982..bf287286ac59db 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_eltwise_reshape_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/memory_eltwise_reshape_concat.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multioutput_eltwise_squeeze_eltwise.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multioutput_eltwise_squeeze_eltwise.cpp index eff09008cf94df..0055e18c95bafc 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multioutput_eltwise_squeeze_eltwise.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multioutput_eltwise_squeeze_eltwise.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/multioutput_eltwise_squeeze_eltwise.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp index 26bd25e001626d..2d94617991d3cd 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_LSTMCell.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_concat.cpp index 6df422f9d26a01..0cb64714ffb702 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/multiple_concat.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/negative_memory_layer_offset.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/negative_memory_layer_offset.cpp index e88f0587681aed..36b530e4469501 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/negative_memory_layer_offset.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/negative_memory_layer_offset.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/negative_memory_layer_offset.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp index 3735d68d4efa3d..e6fd385f5f825e 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/perm_conv_perm_concat.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp index 1c7ba8b2960137..a07908927c1d0c 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_permute_conv_permute_reshape_act.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp index 456ab0aa130ce0..5cf777fe654281 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_squeeze_reshape_relu.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshapre_permute_reshape.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshapre_permute_reshape.cpp index ab5c5f0bb3595b..27c9b22c0e87e0 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshapre_permute_reshape.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/reshapre_permute_reshape.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_permute_reshape.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scale_shift.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scale_shift.cpp index 9b4c56ae14889f..759413f8bd5b19 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scale_shift.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scale_shift.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scaleshift_conv_scaleshift.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scaleshift_conv_scaleshift.cpp index 9d9d55bcd8c703..2e476ac1f876cf 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scaleshift_conv_scaleshift.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/scaleshift_conv_scaleshift.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/softsign.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/softsign.cpp index d92aa166175378..58c987151c060c 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/softsign.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/softsign.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_conv.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_conv.cpp new file mode 100644 index 00000000000000..bf71c5e2c9de58 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_conv.cpp @@ -0,0 +1,54 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "common_test_utils/test_constants.hpp" +#include "subgraph_tests/split_conv.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +const std::vector> configs = { + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"} + } +}; + +std::vector params = { + std::make_tuple( + std::vector{1, 128}, //InputShape + std::vector{1, 3}, //KernelShape + 1), //Stride + std::make_tuple(std::vector{1, 256}, std::vector{1, 5}, 1), + std::make_tuple(std::vector{1, 336}, std::vector{1, 9}, 2), + std::make_tuple(std::vector{1, 640}, std::vector{1, 8}, 4) +}; + +std::vector inputChannels = { + 1, + 4, + 8 +}; + +std::vector outputChannels = { + 4, + 8 +}; + +INSTANTIATE_TEST_CASE_P(smoke_SplitConvTest, SplitConvTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs), + ::testing::ValuesIn(params), + ::testing::ValuesIn(inputChannels), + ::testing::ValuesIn(outputChannels)), + SplitConvTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_conv_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_conv_concat.cpp index 2943d6bd0e1c9a..3a3c4e3bbba30d 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_conv_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_conv_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_relu.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_relu.cpp index a2bf744e85f7c1..b9764b919fc821 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_relu.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_relu.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/split_relu.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_trivial_permute_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_trivial_permute_concat.cpp index aca05e343fef4b..49047d3cf8341f 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_trivial_permute_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/split_trivial_permute_concat.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/split_trivial_permute_concat.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/stridedslice_conv.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/stridedslice_conv.cpp new file mode 100644 index 00000000000000..4517005f3d7afa --- /dev/null +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/stridedslice_conv.cpp @@ -0,0 +1,47 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "common_test_utils/test_constants.hpp" +#include "subgraph_tests/stridedslice_conv.hpp" + +using namespace SubgraphTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +const std::vector> configs = { + { + {"GNA_DEVICE_MODE", "GNA_SW_EXACT"} + } +}; + +std::vector params = { + std::make_tuple( + std::vector{1, 1, 1, 256}, //InputShape + std::vector{1, 3}, //KernelShape + 1), //Stride + std::make_tuple(std::vector{1, 1, 1, 1024}, std::vector{1, 5}, 1), + std::make_tuple(std::vector{1, 1, 1, 336}, std::vector{1, 9}, 2), + std::make_tuple(std::vector{1, 1, 1, 640}, std::vector{1, 8}, 4) +}; + +std::vector outputChannels = { + 4, + 8 +}; + +INSTANTIATE_TEST_CASE_P(smoke_SliceConvTest, SliceConvTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GNA), + ::testing::ValuesIn(configs), + ::testing::ValuesIn(params), + ::testing::ValuesIn(outputChannels)), + SliceConvTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/tensor_names.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/tensor_names.cpp index 0729a36e9a4dc6..5ef074f3496285 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/tensor_names.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/tensor_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/trivial_concat.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/trivial_concat.cpp index 46395c3fce5ee1..866080faa2a38e 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/trivial_concat.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/trivial_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/two_fake_quantize_to_fullyconnected.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/two_fake_quantize_to_fullyconnected.cpp index 84e913e99f58bb..5de8e1813aab9a 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/two_fake_quantize_to_fullyconnected.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/subgraph_tests/two_fake_quantize_to_fullyconnected.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/CMakeLists.txt b/inference-engine/tests/functional/plugin/gpu/CMakeLists.txt index c11d6dd1539948..2cc1c9d3bc36c6 100644 --- a/inference-engine/tests/functional/plugin/gpu/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/gpu/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2019 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -11,13 +10,13 @@ addIeTargetTest( ROOT ${CMAKE_CURRENT_SOURCE_DIR} INCLUDES - ${CLDNN__IOCL_ICD_INCDIRS} + ${CLDNN__OCL_ICD_INCDIRS} ${CMAKE_CURRENT_SOURCE_DIR} DEPENDENCIES clDNNPlugin LINK_LIBRARIES funcSharedTests - ${CLDNN__IOCL_ICD_LIBPATH} + ${CLDNN__OCL_ICD_LIBPATH} ADD_CPPLINT LABELS GPU diff --git a/inference-engine/tests/functional/plugin/gpu/behavior/cache.cpp b/inference-engine/tests/functional/plugin/gpu/behavior/cache.cpp index 7140bd967345a5..389f2b4f57d635 100644 --- a/inference-engine/tests/functional/plugin/gpu/behavior/cache.cpp +++ b/inference-engine/tests/functional/plugin/gpu/behavior/cache.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/cldnn_remote_blob_tests.cpp b/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/cldnn_remote_blob_tests.cpp index 02ed31b2ec756d..a842756267fb79 100644 --- a/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/cldnn_remote_blob_tests.cpp +++ b/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/cldnn_remote_blob_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/remote_blob_helpers.hpp b/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/remote_blob_helpers.hpp index ce2d7bb89c7595..5704797917ef77 100644 --- a/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/remote_blob_helpers.hpp +++ b/inference-engine/tests/functional/plugin/gpu/remote_blob_tests/remote_blob_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/caching_tests.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/caching_tests.cpp new file mode 100644 index 00000000000000..e840f2aa797f75 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/caching_tests.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "behavior/caching_tests.hpp" + +using namespace LayerTestsDefinitions; + +namespace { + static const std::vector precisionsGPU = { + ngraph::element::f32, + ngraph::element::f16, + ngraph::element::i32, + ngraph::element::i64, + ngraph::element::i8, + ngraph::element::u8, + ngraph::element::i16, + ngraph::element::u16, + }; + + static const std::vector batchSizesGPU = { + 1, 2 + }; + + INSTANTIATE_TEST_CASE_P(smoke_CachingSupportCase_GPU, LoadNetworkCacheTestBase, + ::testing::Combine( + ::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), + ::testing::ValuesIn(precisionsGPU), + ::testing::ValuesIn(batchSizesGPU), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + LoadNetworkCacheTestBase::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/config.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/config.cpp index 0cea147b8ec7b6..05c24eeba636f5 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/config.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_integration.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_integration.cpp index 676e0c5ae673af..657db77f3506e8 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_integration.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_integration.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_threading_tests.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_threading_tests.cpp index 56e3c38a9779af..db06501a896e3b 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_threading_tests.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/core_threading_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/cpp_holders.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/cpp_holders.cpp index 9c97fa5d6899a3..329db9f216d115 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/cpp_holders.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/cpp_holders.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/exec_graph_info.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/exec_graph_info.cpp index 6354bbe76059cb..be19200cf41ab5 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/exec_graph_info.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/exec_graph_info.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request.cpp index 918191cc7f252f..66d7b8559d9f13 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_callback.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_callback.cpp index 836eaabd5f1ab3..ce076110f6a519 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_callback.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_callback.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_config.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_config.cpp index 7daa91d5f7037b..59d8d5065b0ab4 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_config.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_input.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_input.cpp index 04eac211623924..e21bcdef1a20fb 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_input.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_input.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_output.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_output.cpp index 3c2da8a0a8baa4..5ee14b13a8d4ab 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_output.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/infer_request_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/layout.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/layout.cpp index d40930354cfc27..6748fc58c50c32 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/layout.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/layout.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/perf_counters.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/perf_counters.cpp index dd7f0b3d1e22df..c959685df1c583 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/perf_counters.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/perf_counters.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_blob_of_kind.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_blob_of_kind.cpp index e638e5e01dffc4..00988bdc510289 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_blob_of_kind.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_blob_of_kind.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_preprocess.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_preprocess.cpp index 6b61105c648076..9f66c554da1785 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_preprocess.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/set_preprocess.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,4 +36,34 @@ namespace { ::testing::Values(CommonTestUtils::DEVICE_MULTI), ::testing::ValuesIn(multiConfigs)), PreprocessTest::getTestCaseName); + + + const std::vector ioPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::U8 + }; + const std::vector netLayouts = { + InferenceEngine::Layout::NCHW, + // InferenceEngine::Layout::NHWC + }; + + const std::vector ioLayouts = { + InferenceEngine::Layout::NCHW, + InferenceEngine::Layout::NHWC + }; + + INSTANTIATE_TEST_CASE_P(smoke_BehaviorTests, PreprocessConversionTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(CommonTestUtils::DEVICE_GPU), + ::testing::ValuesIn(configs)), + PreprocessConversionTest::getTestCaseName); + } // namespace \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/test_plugin.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/test_plugin.cpp index ca63da13200ec5..de7ceae1d4c00e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/test_plugin.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/test_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/version.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/version.cpp index c5623c33855139..02a61ccf0a4ecd 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/version.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/behavior/version.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp index d9390e4cee6ce9..6f3cac60cfb74c 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/configuration_tests/dynamic_batch.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/core_config.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/core_config.cpp index 25bc749cc4fc8d..e75091f571fa70 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/core_config.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/core_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp index aeda278cd38d55..d3689b4492c894 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/execution_graph_tests/unique_node_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/hetero/query_network.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/hetero/query_network.cpp index fe9d50f5a35778..a23cf6b936b24a 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/hetero/query_network.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/hetero/query_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp index 4dac9d08b39235..56964d5628838d 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp index 8eb7338120928f..bad59746178beb 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/clamp_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp index 4e3be6df3e11a3..5ecb4f4d773cd1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,7 @@ using namespace InferenceEngine::details; namespace { const std::vector precisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector testValues = { diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp index 92818ad5ee3bdf..b5702fe243114e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_child_and_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,7 @@ using namespace LayerTestsDefinitions; namespace { const std::vector netPrecisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector trasformationParamValues = { diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp index 22df75d93224ee..892373d56492dc 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_different_precision_on_childs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,7 @@ using namespace LayerTestsDefinitions; namespace { const std::vector netPrecisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector trasformationParamValues = { diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp index 88c69ff269cd1b..16daf1cbc1d377 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_intermediate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,7 @@ using namespace InferenceEngine::details; namespace { const std::vector netPrecisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector trasformationParamValues = { diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp index 295ac773e04a5c..c009d2694f02d4 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,7 @@ using namespace InferenceEngine::details; namespace { const std::vector precisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector trasformationParamValues = { diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp index 1ba16c0c26c009..c2e16a810cd68d 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/concat_with_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,7 @@ using namespace LayerTestsDefinitions; namespace { const std::vector netPrecisions = { ngraph::element::f32, - // ngraph::element::f16 + ngraph::element::f16 }; const std::vector trasformationParamValues = { diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp index a6344d5625e9ce..937aea184aaa89 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_qdq_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp index 9c9e61e431f52b..422641666fc0ad 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp index e53a95f6d1cc91..4d51965d270c6a 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/depth_to_space_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp index daaf6f66bd55f5..052f99a6bfb6af 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp index 7860d820a46b08..c270e701845ca8 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp index 417455cdf04458..7091a66e0d3143 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp index 330f143260043e..bc8960524670eb 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp index 300f9ad292c2ab..434e150d35e839 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp index 9d3b43c2583128..90facce307b23e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp index c91489b2dd686a..5ba8057fc3c2d1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fully_connected_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp index fcca682821ca89..67bdef0c6a8611 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_convert_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp index dd82d742186db5..042ff2692fbdda 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp index 02e1b66284f29a..3125575ec5f1ab 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -24,6 +24,32 @@ const std::vector testValues = { { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } } }, + // 1) Multiply with different input and output shape + { + ngraph::Shape{128, 3}, + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParamsU8I8(), + { + ngraph::element::f32, + { }, + ngraph::element::f32, + { {}, {}, { {0.01f, 0.1f, 1.f}, ngraph::element::f32, {1, 3} } }, + ngraph::element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, + // 1) Multiply by zero + { + ngraph::Shape{1, 3, 16, 16}, + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParamsU8I8(), + { + ngraph::element::f32, + { }, + ngraph::element::f32, + { {}, {}, { {0.01f, 0.f, 0.01f} } }, + ngraph::element::f32, + { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } + } + }, // 1) Subtract + Multiply { ngraph::Shape{1, 3, 16, 16}, @@ -63,6 +89,19 @@ const std::vector testValues = { { 256ul, {}, { 0.f }, { 2.55f }, { 0.f }, { 2.55f } } } }, + // issue #40611 for FP32 + { + ngraph::Shape{1, 3, 16, 16}, + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParamsU8I8(), + { + { }, + { }, + ngraph::element::i32, + { {ngraph::element::f32}, {}, {} }, + ngraph::element::f32, + { 256ul, {}, { 0.f }, { 25.5f }, { 0.f }, { 25.5f } } + } + }, }; INSTANTIATE_TEST_CASE_P(smoke_LPT, FuseFakeQuantizeTransformation, diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp index 43b8b72997d8a7..2cc508be12b9dd 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp index 5c0248f250d013..35861a9830aeb1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp index 1c6a30d00ecb1f..50bdfdd913db11 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp index 43d4f474719265..a26dd86b404c6e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/group_convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/groupconvolution_qdq_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/groupconvolution_qdq_transformation.cpp new file mode 100644 index 00000000000000..5f07e42d4b2ef2 --- /dev/null +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/groupconvolution_qdq_transformation.cpp @@ -0,0 +1,503 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "low_precision_transformations/groupconvolution_qdq_transformation.hpp" +#include "low_precision_transformations/convolution_with_incorrect_weights.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + ngraph::element::f32, + // ngraph::element::f16 +}; + +const std::vector trasformationParamValues = { + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(true), + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(false), +}; + +const std::vector params = { + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Constant Convert + // |U8 |U8 |I8 + // | | | + // Convert Convert Convert Constant + // \FP32 /FP32 |FP32 /I8 + // \ / | / + // Subtract Constant Subtract Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + //FakeQuantize Constant Constant + // \U8 /U8 /I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1} }, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + { {-128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + false, + }, + + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Constant Convert + // |U8 |U8 |I8 + // | | | + // Convert Convert Convert Constant + // \FP32 /FP32 |FP32 /I8 + // \ / | / + // Subtract Constant Subtract Constant + // \FP32 /FP32 |FP32 /FP32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + //FakeQuantize Constant Constant + // \U8 /U8 /I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1} }, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + { {-128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + true, + }, + + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Convert + // |U8 |I8 + // | | + // Convert Constant Convert Constant + // \FP32 /FP32 |FP32 /F32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + // FakeQuantize Constant + // \U8 /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + {}, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1} }, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + false + }, + + // Actual: + // + // Constant + // | Constant Constant Constant Constant + // | /FP32 /FP32 /FP32 /FP32 + // FakeQuantize FakeQuantize + // |FP32 |FP32 + // | | + // Convert Convert + // |U8 |I8 + // | | + // Convert Constant Convert Constant + // \FP32 /FP32 |FP32 /F32 + // \ / | / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + // FakeQuantize Constant + // \U8 /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + {ngraph::element::f32}, + {}, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::f32, {2, 2, 1, 1}}, + { 255ul, ngraph::Shape({ 1, 1, 1, 1 }), { 0.f }, { 25.5f }, { -128.f }, { 127.f }, ngraph::element::f32 }, + { ngraph::element::i8, false }, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + true, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert Constant Constant + // |U8 |U8 |U8 |U8 + // | | | | + // Convert Convert Convert Convert + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Subtract Constant Subtract Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + // FQ Constant Constant + // \U8 /U8 / I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + false, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert Constant Constant + // |U8 |U8 |U8 |U8 + // | | | | + // Convert Convert Convert Convert + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Subtract Constant Subtract Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + // FQ Constant Constant + // \U8 /U8 / I8 + // \ / / + // Subtract Subtract + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::i8, true }, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "FP32", + true, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert + // |U8 |U8 + // | | + // Convert Convert Constant + // \FP32 /FP32 \U8 + // \ / \ + // Subtract Constant Convert Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution + // + // Transformed: + // + // FQ Constant + // \U8 /U8 + // \ / + // Subtract + // \FP32 + // \ Constant + // \ /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + false, + }, + + // Actual: + // + // FQ + // |FP32 + // | + // Convert Convert + // |U8 |U8 + // | | + // Convert Convert Constant + // \FP32 /FP32 \I8 + // \ / \ + // Subtract Constant Convert Constant + // \FP32 /FP32 \FP32 /FP32 + // \ / \ / + // Multiply Multiply + // \FP32 /FP32 + // \ / + // \ Reshape + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + // + // Transformed: + // + // FQ Constant + // \U8 /U8 + // \ / + // Subtract + // \FP32 + // \ Constant + // \ /I8 + // \ / + // GroupConvolution Constant + // \FP32 /FP32 + // \ / + // Multiply + { + { 256ul, {{ 1, 1, 1, 1 }}, { -12.8f }, { 12.7f }, { 0.f }, { 255.f }, ngraph::element::f32 }, + { ngraph::element::u8, false }, + { + { ngraph::element::f32, false }, + { {128.f}, ngraph::element::f32, {}, false, 1ul, ngraph::element::u8, true }, + { {0.1f}, ngraph::element::f32, {}, false } + }, + { std::vector(4, 15.f), ngraph::element::i8, {2, 2, 1, 1} }, + {}, + {}, + { + { ngraph::element::f32, false }, + {}, + { {0.2f}, ngraph::element::f32, {}, false } + }, + { {2, 1, 2, 1, 1} }, + "output_original", + "U8", + true, + }, +}; + +const std::vector shapes = { + { 1, 4, 7, 7 } +}; + +INSTANTIATE_TEST_CASE_P(smoke_LPT, GroupConvolutionQDqTransformation, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(shapes), + ::testing::Values(CommonTestUtils::DEVICE_GPU), + ::testing::ValuesIn(trasformationParamValues), + ::testing::ValuesIn(params)), + GroupConvolutionQDqTransformation::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp index c700ce11ced939..4c56b43458c437 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/interpolate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp index 643cf3c33b7370..9769e9b9b0d476 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp index e53eb5db75a161..f6aeca2e58d731 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp index 83a481fef69691..10d547c83d68ef 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_constant_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,38 +14,76 @@ const std::vector precisions = { ngraph::element::f32 }; //transpose_a = false, transpose_b = true std::vector testValues = { - // 3D with different values { { 2, 3, 4 }, { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, - { 2, 4 }, - std::vector(4 * 2, 2.f), + { std::vector(4 * 2, 2.f), ngraph::element::f32, ngraph::Shape{ 2, 4 } }, { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-128.f}, {127.f}, {-128.f, -12.8f}, {127.f, 12.7f} }, + { {}, {}, {} }, + "result_result", + "FP32" + }, + { + { 2, 3, 4 }, + { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, + { std::vector(4 * 2, 2.f), ngraph::element::i8, ngraph::Shape{ 2, 4 } }, + {}, + { ngraph::element::f32, {}, {0.1f} }, + "result_result", + "FP32" }, - // 3D with different values { { 1, 3, 4 }, { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}}, {-10.5f}, {4.5f}, {-10.5f}, {4.5f} }, - { 2, 4 }, - std::vector(4 * 2, 2.f), + { std::vector(4 * 2, 2.f), ngraph::element::f32, ngraph::Shape{ 2, 4 } }, + { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-128.f}, {127.f}, {-128.f, -12.8f}, {127.f, 12.7f} }, + { {}, {}, {} }, + "result_result", + "FP32" + }, + { + { 1, 1, 3, 4 }, + { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, + { std::vector(4 * 2, 2.f), ngraph::element::f32, ngraph::Shape{ 2, 4 } }, { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-128.f}, {127.f}, {-128.f, -12.8f}, {127.f, 12.7f} }, + { {}, {}, {} }, + "matMul", + "U8" + }, + { + { 1, 1, 3, 4 }, + { 256ul, {{1, 1, 1}, {1, 1, 1}, {1, 3, 1}, {1, 3, 1}}, {0.f}, {255.f}, {0.f, 0.f, 0.f}, {255.f, 25.5f, 255.f} }, + { std::vector(4 * 2, 2.f), ngraph::element::i8, ngraph::Shape{ 2, 4 } }, + {}, + { ngraph::element::f32, {}, {{0.1f, 0.01}, ngraph::element::f32, ngraph::Shape{ 2, 1 }} }, + "matMul", + "U8" }, - // 3D with the same values { { 1, 3, 4 }, { 256ul, {{1}, {1}, {1}, {1}}, {0.f}, {255.f}, {0.f}, {25.5f} }, - { 4, 4 }, - std::vector(4 * 4, 2.f), + { std::vector(4 * 4, 2.f), ngraph::element::f32, ngraph::Shape{ 4, 4 } }, { 256ul, {{1}, {1}, {1}, {1}}, {-128.f}, {127.f}, {-128.f}, {127.f} }, + { {}, {}, {} }, + "result_result", + "FP32" }, - // 2D with subtract on activations { { 2, 3 }, { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-10.f}, {5.f}, {-10.f, -5.f}, {5.f, 5.f} }, - { 2, 3 }, - std::vector{1, 2, 3, 4, 5, 6}, + { std::vector{1, 2, 3, 4, 5, 6}, ngraph::element::f32, ngraph::Shape{ 2, 3 } }, { 256ul, {{1}, {1}, {1}, {1}}, {-128.f}, {127.f}, {-12.8f}, {12.7f} }, + { {}, {}, {} }, + "matMul", + "U8" }, + { + { 2, 3 }, + { 256ul, {{1}, {1}, {2, 1}, {2, 1}}, {-10.f}, {5.f}, {-10.f, -5.f}, {5.f, 5.f} }, + { std::vector{1, 2, 3, 4, 5, 6}, ngraph::element::i8, ngraph::Shape{ 2, 3 } }, + {}, + { ngraph::element::f32, {}, {0.1f} }, + } }; INSTANTIATE_TEST_CASE_P(smoke_LPT, MatMulWithConstantTransformation, diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp index b2d596b2059277..0425979aa65eea 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp index bb217236dc5c21..5ac2b3e779be89 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_to_group_convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp index e5edaab95932a0..74df7d38321987 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp index bfc9ead82199bc..870b9c52130c8e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/multiply_with_one_parent_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp index bad176560c8228..6355c957403ca9 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/mvn_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp index a64afad8b8e3d8..d446ab186628bd 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/normalize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp index 92bfe5a2a19304..487a99a379d74d 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp index 92bfe5a2a19304..1901cc4a219bb8 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat.cpp @@ -1,10 +1,10 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include -#include "low_precision_transformations/output_layers_handling_in_transformations.hpp" +#include "low_precision_transformations/output_layers_handling_in_transformations_for_concat.hpp" #include "common_test_utils/test_constants.hpp" using namespace LayerTestsDefinitions; @@ -19,11 +19,11 @@ const std::vector trasformationParamValues = { LayerTestsUtils::LayerTransformationParamsFactory::createParams() }; -INSTANTIATE_TEST_CASE_P(smoke_LPT, OutputLayersHandlingInTransformations, +INSTANTIATE_TEST_CASE_P(smoke_LPT, OutputLayersHandlingInTransformationsForConcat, ::testing::Combine( ::testing::ValuesIn(netPrecisions), ::testing::Values(InferenceEngine::SizeVector({ 1, 3, 16, 16 })), ::testing::Values(CommonTestUtils::DEVICE_GPU), ::testing::ValuesIn(trasformationParamValues)), - OutputLayersHandlingInTransformations::getTestCaseName); + OutputLayersHandlingInTransformationsForConcat::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp index 92bfe5a2a19304..cbf5ccb423c59d 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp @@ -1,10 +1,10 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include -#include "low_precision_transformations/output_layers_handling_in_transformations.hpp" +#include "low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.hpp" #include "common_test_utils/test_constants.hpp" using namespace LayerTestsDefinitions; @@ -19,11 +19,11 @@ const std::vector trasformationParamValues = { LayerTestsUtils::LayerTransformationParamsFactory::createParams() }; -INSTANTIATE_TEST_CASE_P(smoke_LPT, OutputLayersHandlingInTransformations, +INSTANTIATE_TEST_CASE_P(DISABLED_smoke_LPT, OutputLayersHandlingInTransformationsForConcatMultiChannel, ::testing::Combine( ::testing::ValuesIn(netPrecisions), ::testing::Values(InferenceEngine::SizeVector({ 1, 3, 16, 16 })), ::testing::Values(CommonTestUtils::DEVICE_GPU), ::testing::ValuesIn(trasformationParamValues)), - OutputLayersHandlingInTransformations::getTestCaseName); + OutputLayersHandlingInTransformationsForConcatMultiChannel::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp index b1baac53569682..06f2939bb31ccf 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/prelu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp new file mode 100644 index 00000000000000..96e5773babcc1a --- /dev/null +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp @@ -0,0 +1,83 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "low_precision_transformations/pull_reshape_through_dequantization_transformation.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; + +namespace { +const std::vector netPrecisions = { + ngraph::element::f32, + ngraph::element::f16 +}; + +const std::vector trasformationParamValues = { + LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(true), + // LayerTestsUtils::LayerTransformationParamsNGraphFactory::createParams().setUpdatePrecisions(false), +}; + +const std::vector params = { + { + ngraph::element::f32, + { 256ul, {{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }}, { 0.f }, { 25.5f }, { 0.f }, { 25.5f } }, + {}, + { std::vector{ 2.f }, ngraph::element::i8, {9, 16}}, + { + { ngraph::element::f32, false }, + {}, + { {0.03f}, ngraph::element::f32, {/* from parameter */}, false } + }, + { {3, 3, 16, 1} }, + { {2}, ngraph::element::f32, {1, 1, 16, 1}, false }, + { {2, 3, 0, 1} }, + { {16, 1, 1, 3, 3} }, + ngraph::element::f32, + {}, + "output_original", + "U8" + }, + { + ngraph::element::f32, + { 256ul, {{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }}, { 0.f }, { 25.5f }, { 0.f }, { 25.5f } }, + {}, + { std::vector{ 2.f }, ngraph::element::i8, {9, 16}}, + { + { ngraph::element::f32, false }, + { {127.0f}, ngraph::element::f32, {/* from parameter */}, false}, + { {0.03f}, ngraph::element::f32, {/* from parameter */}, false } + }, + { {3, 3, 16, 1} }, + { {2}, ngraph::element::f32, {1, 1, 16, 1}, false }, + { {2, 3, 0, 1} }, + { {16, 1, 1, 3, 3} }, + ngraph::element::f32, + {}, + "output_original", + "FP32" + } +}; + +const std::vector inputShapes = { + { 1, 16, 9, 9 }, + { 4, 16, 9, 9 } +}; + +const std::vector dequantizationOnWeightElementwiseConstantShapes = { + { ngraph::Shape({1, 16}) } +}; + +INSTANTIATE_TEST_CASE_P(smoke_LPT, PullReshapeThroughDequantizationTransformation, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(inputShapes), + ::testing::Values(CommonTestUtils::DEVICE_GPU), + ::testing::ValuesIn(trasformationParamValues), + ::testing::ValuesIn(dequantizationOnWeightElementwiseConstantShapes), + ::testing::ValuesIn(params)), + PullReshapeThroughDequantizationTransformation::getTestCaseName); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp index 25050e63019f8d..9ea97a8bafa718 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/relu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp index 98e2f916f1ebd0..222e24bd553726 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/reshape_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,6 +36,13 @@ const std::vector params = { { 256ul, ngraph::Shape{ 1, 1, 1, 1 }, { 0.f }, { 255.f }, { 0.f }, { 25.5f } }, true }, + // 4D -> 3D + { + ngraph::Shape{ 1, 3, 16, 16 }, + { 0, 3, -1 }, + { 256ul, ngraph::Shape{ 1, 3, 1, 1 }, { 0.f }, { 255.f }, { 0.f, 0.f, 0.f }, { 255.f, 25.5f, 2.55f } }, + true + }, // 4D -> 2D { ngraph::Shape{ 1, 3, 4, 8 }, diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp index 5a54513ae23026..393e40c15da5ef 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp index fe4a476aeee60a..a966d6ba20c821 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/squeeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp index 1d039f15c78405..0263ac39c79398 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/strided_slice_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp index ad07d3acc310e0..41d4109cb5bc90 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp index ac97b4f9036ae8..387657ab28080c 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/subtract_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp index 086c5115734d80..7bf86ffe6cbf57 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_after_matmul_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp index 842ff3006f29ac..e1735a84f8cad4 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/transpose_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp index dac07734f181b7..a996c8a655cf5e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/unsqueeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp index 2a34f7f0af7d95..5e7e3919c59347 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/variadic_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/multi/gpu_remote_blob_tests.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/multi/gpu_remote_blob_tests.cpp index 761467f4d7c965..db91ba9598d7eb 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/multi/gpu_remote_blob_tests.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/multi/gpu_remote_blob_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,7 +43,7 @@ TEST_P(MultiDevice_Test, cannotInferRemoteBlobIfNotInitializedForDevice) { ASSERT_NE((std::shared_ptr)req, nullptr); ASSERT_NO_THROW(req.SetBlob(first_input_name, rblob)); ASSERT_NO_THROW(req.StartAsync()); - ASSERT_THROW(req.Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY), InferenceEngine::Exception); } const std::vector device_names_and_support_for_remote_blobs2 { diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp index 9efa5ae31497cd..37471e8cc67041 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/conv_bias_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp index a433f1d9cbf870..bbfc01e3f1877f 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/activation.cpp index 2597674aed68f3..e7e1f8a63440a1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/activation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_norm.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_norm.cpp index 73680a9d3a3d95..94c15c93018ce4 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_norm.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_norm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp index 21f4245ff8878e..7194d632344120 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/batch_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/broadcast.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/broadcast.cpp index f742499993ccd9..aa055e9b5282f0 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/broadcast.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/comparison.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/comparison.cpp index 66034c94800b1e..877bd366e0e9a6 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/comparison.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/comparison.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/concat.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/concat.cpp index 861e7f3154911e..bde5e2fc19bbe7 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/concat.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert.cpp index a870276c51f60c..130360d4cdf472 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert_like.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert_like.cpp index 56283e869cf688..8b0208ea8cc51c 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert_like.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convert_like.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution.cpp index ad63526b0c3e23..6b4c1bea5cf523 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp index 510c0949242b85..f18346cde9fb10 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp index 75189f84024a28..a9faeddaa46325 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp index 92d0324bbb941e..497686924b2af4 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/cum_sum.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/cum_sum.cpp index fc6ccfaf1af9e7..b92a453693f27e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/cum_sum.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/cum_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp index cd38a6a8258952..4e42493d567978 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp index 6606c71af7fe3b..e12fdbc6ea2779 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/eltwise.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/eltwise.cpp index 6b1ab1c82e917a..3cd2feebf58399 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp index 0557fb59fa3050..afb5945fa19cd9 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_offsets_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp index c2aa5ef2d585e1..2981ac862663d2 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_bag_packed_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp index 14b5f7133b3945..34caed6822dce9 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/embedding_segments_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp index a9bb644e016785..1749c0db0963c7 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/extract_image_patches.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp index 3a11829be617f3..ba1e5a6ca67136 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather.cpp index 3ba263840c77c7..6499641ffb3b94 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather_tree.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather_tree.cpp index 07ce90238a2de3..ee09b1fa36a73a 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather_tree.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gather_tree.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/grn.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/grn.cpp index c1eb14f284576c..52c0ed6c59b140 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/grn.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/grn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution.cpp index fab226558f2d91..75a28f94315714 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp index 0eafcb852c3bc2..40e751e817a899 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_cell.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_cell.cpp index 2ff16c312d1651..7224b098c9fb98 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_cell.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp index 964039987528e2..9474335c2fe20c 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/gru_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,6 +13,8 @@ namespace { std::vector mode{ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM, ngraph::helpers::SequenceTestsMode::PURE_SEQ}; // output values increase rapidly without clip, so use only seq_lenghts = 2 std::vector seq_lengths_zero_clip{2}; diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/interpolate.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/interpolate.cpp index f3391fd11698b5..fbbb30c1e2c6fe 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/interpolate.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/interpolate.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/log_softmax.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/log_softmax.cpp index f49760945e6c1d..eb62a64128029e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/log_softmax.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/log_softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/logical.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/logical.cpp index f89d35fdbf893c..c8dd9db4c2e1ad 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/logical.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/logical.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lrn.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lrn.cpp index 572e897a6f96c9..b513e61a137421 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lrn.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lrn.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp index 29f4eeb13ef9ab..b9267eb552d08a 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp index fa293441e7b615..01c284093019a6 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/lstm_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,6 +13,8 @@ namespace { std::vector mode{ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM, ngraph::helpers::SequenceTestsMode::PURE_SEQ}; // output values increase rapidly without clip, so use only seq_lenghts = 2 std::vector seq_lengths_zero_clip{2}; diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mat_mul.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mat_mul.cpp index 1a0b854476a7ec..88a05601e2243f 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mat_mul.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp index 473e578dbd2f65..8c1ba19aa05f15 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/minimum_maximum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mvn.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mvn.cpp index 8cbd56f53d9606..97d1335c813d70 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mvn.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -49,3 +49,117 @@ const auto MvnCases = ::testing::Combine( INSTANTIATE_TEST_CASE_P(smoke_CLDNN_TestsMVN, MvnLayerTest, MvnCases, MvnLayerTest::getTestCaseName); +std::vector dataPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16 +}; + +std::vector idxPrecisions = { + InferenceEngine::Precision::I32, + InferenceEngine::Precision::I64 +}; + +const std::vector epsMode = { + "inside_sqrt", + "outside_sqrt" +}; + +const std::vector epsilonF = { + 0.0001 +}; + +INSTANTIATE_TEST_CASE_P(smoke_MVN_5D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{1, 10, 5, 7, 8}, {1, 3, 8, 9, 49}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{1, 2, 3, 4}, {2, 3, 4}, {-3, -2, -1}, {-1, -4, -2, -3}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_MVN_4D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{1, 10, 5, 17}, {1, 3, 8, 9}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{1, 2, 3}, {2, 3}, {-2, -1}, {-2, -1, -3}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_MVN_3D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{1, 32, 17}, {1, 37, 9}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{1, 2}, {2}, {-1}, {-1, -2}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_MVN_2D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{3, 5}, {2, 55}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{1}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_Decomposition_1D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{3}, {9}, {55}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_Decomposition_3D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{1, 32, 17}, {1, 37, 9}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{0, 1, 2}, {0}, {1}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_Decomposition_4D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{1, 16, 5, 8}, {2, 19, 5, 10}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{0, 1, 2, 3}, {0, 1, 2}, {0, 3}, {0}, {1}, {2}, {3}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_Decomposition_6D, Mvn6LayerTest, + ::testing::Combine( + ::testing::ValuesIn(std::vector>{{1, 3, 5, 4, 2, 6}}), + ::testing::ValuesIn(dataPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::ValuesIn(std::vector>{{0, 1, 5}, {0, 1, 2, 3}, {0, 1, 2}, {0, 3}, {0}, {3}}), + ::testing::ValuesIn(normalizeVariance), + ::testing::ValuesIn(epsilonF), + ::testing::ValuesIn(epsMode), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + Mvn6LayerTest::getTestCaseName); diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp index 3e6cec3cd9e3d0..47abf07e3ce53c 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp index 034d9de7c5ad3c..438e26ed039fd1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/normalize_l2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pad.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pad.cpp index 379647cf79d210..1d2d3ab67913e2 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pad.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pooling.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pooling.cpp index 4663aef6586021..7e19ba866a592b 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pooling.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/pooling.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/power.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/power.cpp index 8382ebf47997ff..288b641754eaa1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/power.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/power.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/prior_box_clustered.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/prior_box_clustered.cpp index 6db9d289ffebed..171b85bc7740b1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/prior_box_clustered.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/prior_box_clustered.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/proposal.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/proposal.cpp index 8aa40241cebe16..7562964b5e8498 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/proposal.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp index 9f1a55b40dbf88..041f1040403741 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reduce_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/region_yolo.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/region_yolo.cpp index 17ad6268bda3f4..395210d020e265 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/region_yolo.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp index 14f83da02303c1..e0294010774b84 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reorg_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reshape.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reshape.cpp index 2ed4a30f6af9f5..a304c345776a06 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reshape.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp index 44d8f3f225bef2..aa4054030a696b 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/reverse_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp index 14a2b0de4bfc92..b353a97e318be8 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp index e965d12ca7b439..10f888cec1ea05 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/rnn_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,6 +13,8 @@ namespace { std::vector mode{ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST, ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST, + ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM, ngraph::helpers::SequenceTestsMode::PURE_SEQ}; // output values increase rapidly without clip, so use only seq_lenghts = 2 std::vector seq_lengths_zero_clip{2}; diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp index c929ef6834448a..325ace5c88ad7e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_elements_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_nd_update.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_nd_update.cpp new file mode 100644 index 00000000000000..39767aaa50cdea --- /dev/null +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_nd_update.cpp @@ -0,0 +1,53 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "single_layer_tests/scatter_ND_update.hpp" +#include "common_test_utils/test_constants.hpp" + +using namespace LayerTestsDefinitions; +using namespace ngraph::opset3; + +namespace { + +// map> +// updateShape is gotten from inputShape and indicesShape +std::map, std::map, std::vector>> sliceSelectInShape{ + {{4, 3, 2, 3, 2}, {{{2, 2, 1}, {3, 2, 0, 1}}}}, + {{10, 9, 9, 11}, {{{4, 1}, {1, 3, 5, 7}}, {{1, 2}, {4, 6}}, {{2, 3}, {0, 1, 1, 2, 2, 2}}, {{1, 4}, {5, 5, 4, 9}}}}, + {{10, 9, 12, 10, 11}, {{{2, 2, 1}, {5, 6, 2, 8}}, {{2, 3}, {0, 4, 6, 5, 7, 1}}}}, + {{15}, {{{2, 1}, {1, 3}}}}, + {{15, 14}, {{{2, 1}, {1, 3}}, {{2, 2}, {2, 3, 10, 11}}}}, + {{15, 14, 13}, {{{2, 1}, {1, 3}}, {{2, 2}, {2, 3, 10, 11}}, {{2, 3}, {2, 3, 1, 8, 10, 11}}}}, + {{15, 14, 13, 12}, {{{2, 1}, {1, 3}}, {{2, 2}, {2, 3, 10, 11}}, {{2, 3}, {2, 3, 1, 8, 10, 11}}, {{2, 4}, {2, 3, 1, 8, 7, 5, 6, 5}}, + {{2, 2, 2}, {2, 3, 1, 8, 7, 5, 6, 5}}}}, + {{15, 14, 13, 12, 16}, {{{2, 1}, {1, 3}}, {{2, 2}, {2, 3, 10, 11}}, {{2, 3}, {2, 3, 1, 8, 10, 11}}, {{2, 4}, {2, 3, 1, 8, 7, 5, 6, 5}}, + {{2, 5}, {2, 3, 1, 8, 6, 9, 7, 5, 6, 5}}}}, + {{15, 14, 13, 12, 16, 10}, {{{2, 1}, {1, 3}}, {{2, 2}, {2, 3, 10, 11}}, {{2, 3}, {2, 3, 1, 8, 10, 11}}, {{2, 4}, {2, 3, 1, 8, 7, 5, 6, 5}}, + {{1, 2, 4}, {2, 3, 1, 8, 7, 5, 6, 5}}, {{2, 5}, {2, 3, 1, 8, 6, 9, 7, 5, 6, 5}}, {{2, 6}, {2, 3, 1, 8, 6, 5, 9, 7, 5, 6, 5, 7}}}} +}; + + +const std::vector inputPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, + InferenceEngine::Precision::I32, +}; + +const std::vector idxPrecisions = { + InferenceEngine::Precision::I32, + InferenceEngine::Precision::I64, +}; + +const auto ScatterNDUpdateCases = ::testing::Combine( + ::testing::ValuesIn(ScatterNDUpdateLayerTest::combineShapes(sliceSelectInShape)), + ::testing::ValuesIn(inputPrecisions), + ::testing::ValuesIn(idxPrecisions), + ::testing::Values(CommonTestUtils::DEVICE_GPU) +); + +INSTANTIATE_TEST_CASE_P(smoke_ScatterNDUpdate, ScatterNDUpdateLayerTest, ScatterNDUpdateCases, ScatterNDUpdateLayerTest::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_update.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_update.cpp index 690ba1b81ffd42..6f48dd1be4268e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_update.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/scatter_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/select.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/select.cpp index 320c6d19082ea7..af7e775ef40b5e 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/select.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/select.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp index 5a3ef40c14b5d0..6f7bdc1fcf2225 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/shuffle_channels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/softmax.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/softmax.cpp index 2ce2e8e47c3a28..98727447a883b3 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/softmax.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/softmax.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp index ffc5815a65f02d..149908a1d7dd06 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp index 56b71379b34982..4ad127c4d4c75f 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/space_to_depth.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp index bf70bcebe03457..c7fb37ec7488e8 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp index cff536069ac963..ab82ff49f12ba3 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/squeeze_unsqueeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/strided_slice.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/strided_slice.cpp index 53afa5d2db956c..7fb8dd1d8c6e13 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/strided_slice.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/tile.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/tile.cpp index 3327e02be4c18f..9ddeabf4789b94 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/tile.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/tile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/topk.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/topk.cpp index 7b31962affe2c6..acf56303f2d6e2 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/topk.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/transpose.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/transpose.cpp index 0aa03eba0359cc..265b742e6f2afa 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/transpose.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,13 +15,24 @@ const std::vector netPrecisions = { InferenceEngine::Precision::FP32, }; +/** + * 4D permute tests + */ const std::vector> inputShapes = { std::vector{1, 3, 100, 100}, + // use permute_8x8_4x4 kernel + std::vector{2, 8, 64, 64}, + std::vector{2, 5, 64, 64}, + std::vector{2, 8, 64, 5}, + std::vector{2, 5, 64, 5}, }; const std::vector> inputOrder = { + // use permute_ref std::vector{0, 3, 2, 1}, std::vector{}, + // use permute_8x8_4x4 kernel + std::vector{0, 2, 3, 1}, }; const auto params = testing::Combine( @@ -42,4 +53,77 @@ INSTANTIATE_TEST_CASE_P( TransposeLayerTest::getTestCaseName ); +/** + * 5D permute tests + */ +const std::vector> inputShapes5D = { + std::vector{2, 3, 4, 12, 64}, + std::vector{2, 5, 11, 32, 32}, + std::vector{2, 8, 64, 32, 5}, + std::vector{2, 5, 64, 32, 5}, +}; + +const std::vector> inputOrder5D = { + // use permute_ref + std::vector{0, 3, 4, 2, 1}, + std::vector{}, + // use permute_8x8_4x4 kernel + std::vector{0, 2, 3, 4, 1}, +}; + +const auto params5D = testing::Combine( + testing::ValuesIn(inputOrder5D), + testing::ValuesIn(netPrecisions), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(InferenceEngine::Layout::ANY), + testing::ValuesIn(inputShapes5D), + testing::Values(CommonTestUtils::DEVICE_GPU) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Transpose_5D, + TransposeLayerTest, + params5D, + TransposeLayerTest::getTestCaseName +); + +/** + * 6D permute tests + */ +const std::vector> inputShapes6D = { + std::vector{2, 8, 5, 13, 11, 16}, + std::vector{2, 11, 6, 2, 15, 10}, + std::vector{2, 13, 1, 3, 14, 32}, + std::vector{2, 14, 3, 4, 4, 22}, +}; + +const std::vector> inputOrder6D = { + // use permute_ref + std::vector{0, 4, 3, 5, 2, 1}, + std::vector{}, + // use permute_8x8_4x4 kernel + std::vector{0, 2, 3, 4, 5, 1}, +}; + +const auto params6D = testing::Combine( + testing::ValuesIn(inputOrder6D), + testing::ValuesIn(netPrecisions), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(InferenceEngine::Layout::ANY), + testing::ValuesIn(inputShapes6D), + testing::Values(CommonTestUtils::DEVICE_GPU) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Transpose_6D, + TransposeLayerTest, + params6D, + TransposeLayerTest::getTestCaseName +); + + } // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/variadic_split.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/variadic_split.cpp index af7d8a19469880..b5e91b031e7269 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/variadic_split.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/skip_tests_config.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/skip_tests_config.cpp index a06d52df4839c3..2732f24d3e3209 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/skip_tests_config.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/skip_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -24,8 +24,8 @@ std::vector disabledTestPatterns() { R"(.*(PreprocessTest).*(SetMeanValuePreProcessSetBlob).*)", R"(.*(PreprocessTest).*(SetMeanImagePreProcessSetBlob).*)", R"(.*(PreprocessTest).*(ReverseInputChannelsPreProcessGetBlob).*)", - // TODO: Issue: 41467 -- "unsupported element type f16 op Convert" - R"(.*(ConvertLayerTest).*targetPRC=FP16.*)", + // TODO: Issue: 51764 + ".*PreprocessConversionTest.*", // TODO: Issue: 41462 R"(.*(SoftMaxLayerTest).*axis=0.*)", // TODO: Issue: 41461 @@ -48,13 +48,14 @@ std::vector disabledTestPatterns() { // Need to update activation primitive to support any broadcastable constant to enable these cases. R"(.*ActivationParamLayerTest.*)", // Unknown issues - R"(.*(LSTMSequence).*mode=CONVERT_TO_TI_RAND_SEQ_LEN.*)", + R"(.*(LSTMSequence).*mode=.*_RAND_SEQ_LEN_CONST.*)", R"(.*(smoke_DetectionOutput3In).*)", R"(.*(smoke_DetectionOutput5In).*)", // TODO: Issue: 47773 R"(.*(ProposalLayerTest).*)", - // INT8 StridedSlice not supported R"(.*(LPT/StridedSliceTransformation).*)", + // TODO: Issue: 48106 + R"(.*ConstantResultSubgraphTest.*inPrc=I16.*)", }; } diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/constant_result.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/constant_result.cpp index 56a4b0b601b53d..bf4ca2f13523da 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/constant_result.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/constant_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,10 +8,39 @@ #include "common_test_utils/test_constants.hpp" using namespace SubgraphTestsDefinitions; +using namespace InferenceEngine; namespace { - INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, - ::testing::Values(CommonTestUtils::DEVICE_GPU), - ConstantResultSubgraphTest::getTestCaseName); + +const std::vector types = { + ConstantSubgraphType::SINGLE_COMPONENT, + ConstantSubgraphType::SEVERAL_COMPONENT +}; + +const std::vector shapes = { + {1, 3, 10, 10}, + {2, 3, 4, 5} +}; + +const std::vector precisions = { + Precision::U8, + Precision::I8, + Precision::U16, + Precision::I16, + Precision::I32, + Precision::U64, + Precision::I64, + Precision::FP32, + Precision::BOOL +}; + +INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, + ::testing::Combine( + ::testing::ValuesIn(types), + ::testing::ValuesIn(shapes), + ::testing::ValuesIn(precisions), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + ConstantResultSubgraphTest::getTestCaseName); + } // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp index d6be085fefd2c9..7c4be794741700 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/get_output_before_activation.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp index a4245531320dfd..9afd80f0af9216 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/matmul_squeeze_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/multiply_add.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/multiply_add.cpp index d8edd91ac8855f..642cb25d4cf150 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/multiply_add.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/multiply_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/parameter_result.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/parameter_result.cpp index 539e32923b846b..2819577a7710b5 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/parameter_result.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/parameter_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp index a5b76e1fe10e48..88da94c4ddb6c1 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/perm_conv_perm_concat.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/perm_conv_perm_concat.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp index 19ea702defb709..48f6635bdae026 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp index ed67df548dce18..b310104ff97e0f 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/quantized_group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp index 8210dccc0c976c..05fcaf36ecd9b7 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_permute_conv_permute_reshape_act.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_permute_conv_permute_reshape_act.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp index ba5ac2df9a2117..75d90a5fa2913d 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_squeeze_reshape_relu.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/scale_shift.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/scale_shift.cpp index f28fdc26c0ac12..928a9f19df6028 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/scale_shift.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/scale_shift.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp index 6d360c801f103f..40364a93cd2c62 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/split_conv_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/tensor_names.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/tensor_names.cpp index b5258c33fd5e89..a1f5fc59981012 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/tensor_names.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/subgraph_tests/tensor_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt b/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt index 3d96584d6f87dd..34f1bb8ac11646 100644 --- a/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2019-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.cpp b/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.cpp index ff8fd80da3b589..7043cb17026e93 100644 --- a/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.cpp +++ b/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.hpp b/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.hpp index acf939bff3592c..deb0ef5074060d 100644 --- a/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.hpp +++ b/inference-engine/tests/functional/plugin/myriad/common/myriad_common_test_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/conversions/dynamic_shape_resolver.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/conversions/dynamic_shape_resolver.cpp index 6d0c9e2cc8edaa..9ab50fc501e30f 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/conversions/dynamic_shape_resolver.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/conversions/dynamic_shape_resolver.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/dynamic_shape_resolver.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/dynamic_shape_resolver.cpp index ef2838dd3994e4..e3b5e4c137c2d9 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/dynamic_shape_resolver.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/dynamic_shape_resolver.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,7 +8,6 @@ #include #include #include -#include
#include #include @@ -42,7 +41,7 @@ class DynamicShapeResolverTests : public CommonTestUtils::TestsCommon, public te TEST_P(DynamicShapeResolverTests, CanValidateAndInferTypes) { std::shared_ptr dynamicShapeResolver; ASSERT_NO_THROW(dynamicShapeResolver = std::make_shared(data, dims)); - ASSERT_NO_THROW(std::make_shared(ngraph::NodeVector{dynamicShapeResolver}, ngraph::ParameterVector{data, dims})); + ASSERT_NO_THROW(auto fun = std::make_shared(ngraph::NodeVector{dynamicShapeResolver}, ngraph::ParameterVector{data, dims})); } std::set allNGraphTypes() { @@ -117,7 +116,7 @@ class DynamicShapeResolverNegativeTests using DynamicShapeResolverNegativeTestsDataType = DynamicShapeResolverNegativeTests; TEST_P(DynamicShapeResolverNegativeTestsDataType, ThrowsOnInvalidDimsType) { - ASSERT_THROW(std::make_shared(data, dims), ngraph::ngraph_error); + ASSERT_THROW(auto dynamicShapeResolver = std::make_shared(data, dims), ngraph::ngraph_error); } INSTANTIATE_TEST_CASE_P(smoke_NGraph, DynamicShapeResolverNegativeTestsDataType, testing::Combine( @@ -128,7 +127,7 @@ INSTANTIATE_TEST_CASE_P(smoke_NGraph, DynamicShapeResolverNegativeTestsDataType, using DynamicShapeResolverNegativeTestsDimsType = DynamicShapeResolverNegativeTests; TEST_P(DynamicShapeResolverNegativeTestsDimsType, ThrowsOnInvalidDimsType) { - ASSERT_THROW(std::make_shared(data, dims), ngraph::ngraph_error); + ASSERT_THROW(auto dynamicShapeResolver = std::make_shared(data, dims), ngraph::ngraph_error); } std::set allNGraphNotIntegralTypes() { @@ -148,7 +147,7 @@ INSTANTIATE_TEST_CASE_P(smoke_NGraph, DynamicShapeResolverNegativeTestsDimsType, using DynamicShapeResolverNegativeTestsDataShape = DynamicShapeResolverNegativeTests; TEST_P(DynamicShapeResolverNegativeTestsDataShape, ThrowsOnInvalidDimsType) { - ASSERT_THROW(std::make_shared(data, dims), ngraph::ngraph_error); + ASSERT_THROW(auto dynamicShapeResolver = std::make_shared(data, dims), ngraph::ngraph_error); } INSTANTIATE_TEST_CASE_P(smoke_NGraph, DynamicShapeResolverNegativeTestsDataShape, testing::Combine( @@ -163,7 +162,7 @@ INSTANTIATE_TEST_CASE_P(smoke_NGraph, DynamicShapeResolverNegativeTestsDataShape using DynamicShapeResolverNegativeTestsDimsShape = DynamicShapeResolverNegativeTests; TEST_P(DynamicShapeResolverNegativeTestsDimsShape, ThrowsOnInvalidDimsType) { - ASSERT_THROW(std::make_shared(data, dims), ngraph::ngraph_error); + ASSERT_THROW(auto dynamicShapeResolver = std::make_shared(data, dims), ngraph::ngraph_error); } INSTANTIATE_TEST_CASE_P(smoke_NGraph, DynamicShapeResolverNegativeTestsDimsShape, testing::Combine( diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/out_shape_of_reshape.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/out_shape_of_reshape.cpp index 15f66c63c09f13..fd5687af017bc1 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/out_shape_of_reshape.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/out_shape_of_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,6 @@ #include #include -#include
#include @@ -94,7 +93,7 @@ TEST_P(OutShapeOfReshapeTests, CanValidateAndInferTypes) { std::shared_ptr op; ASSERT_NO_THROW(op = std::make_shared( m_inDataShapeParam, m_outShapeDescriptorParam, true)); - ASSERT_NO_THROW(std::make_shared( + ASSERT_NO_THROW(auto fun = std::make_shared( ngraph::OutputVector{op->output(0)}, ngraph::ParameterVector{m_inDataShapeParam, m_outShapeDescriptorParam})); } diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_broadcast.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_broadcast.cpp index 51c200089c5dab..79371a30a42c6a 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_broadcast.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,6 @@ #include #include -#include
#include @@ -146,7 +145,7 @@ TEST_P(StaticShapeBroadcastNumpyTests, CanValidateAndInferTypes) { std::shared_ptr op; ASSERT_NO_THROW(op = std::make_shared( m_tensor, shapeOf)); - ASSERT_NO_THROW(std::make_shared( + ASSERT_NO_THROW(auto fun = std::make_shared( ngraph::OutputVector{op->output(0)}, ngraph::ParameterVector{m_tensor, m_tensorWithTargetShape})); ASSERT_EQ(m_tensorWithTargetShape->get_shape(), op->output(0).get_shape()); @@ -162,7 +161,7 @@ TEST_P(StaticShapeBroadcastExplicitTests, CanValidateAndInferTypes) { std::shared_ptr op; ASSERT_NO_THROW(op = std::make_shared( m_tensor, shapeOf, m_axesMapping)); - ASSERT_NO_THROW(std::make_shared( + ASSERT_NO_THROW(auto fun = std::make_shared( ngraph::OutputVector{op->output(0)}, ngraph::ParameterVector{m_tensor, m_tensorWithTargetShape})); ASSERT_EQ(m_tensorWithTargetShape->get_shape(), op->get_output_shape(0)); @@ -178,7 +177,7 @@ TEST_P(StaticShapeBroadcastBidirectionalTests, CanValidateAndInferTypes) { std::shared_ptr op; ASSERT_NO_THROW(op = std::make_shared( m_tensor, shapeOf, ngraph::op::BroadcastType::BIDIRECTIONAL)); - ASSERT_NO_THROW(std::make_shared( + ASSERT_NO_THROW(auto fun = std::make_shared( ngraph::OutputVector{op->output(0)}, ngraph::ParameterVector{m_tensor, m_tensorWithTargetShape})); ASSERT_EQ(m_tensorWithOutput->get_shape(), op->output(0).get_shape()); diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_nonzero.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_nonzero.cpp index 46a3b90e6a5d30..245bee742a33bb 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_nonzero.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/operations/static_shape_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,6 @@ #include #include -#include
#include @@ -84,7 +83,7 @@ std::vector outputTypes { TEST_P(StaticShapeNonZeroTests, CanValidateAndInferTypes) { std::shared_ptr op; ASSERT_NO_THROW(op = std::make_shared(m_param, m_outputType)); - ASSERT_NO_THROW(std::make_shared( + ASSERT_NO_THROW(auto fun = std::make_shared( ngraph::OutputVector{op->output(0), op->output(1)}, ngraph::ParameterVector{m_param})); } diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo_vpu.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo_vpu.cpp index 6812f645c51d31..e61a1765880c6d 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo_vpu.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/convert_extract_image_patches_to_reorg_yolo_vpu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp index 4d0083722acbbe..24dcef17e604cb 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_binary_elementwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp index 80b76464c8ad91..dae6706a399b83 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_clamp.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_clamp.cpp index db52408fc6f33c..15ecbfc951e37d 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_clamp.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_clamp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_concat.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_concat.cpp index 3fd157b4794503..d18710a0bd9fae 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_concat.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_convert.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_convert.cpp index e52cacfacc409b..851702d95752ff 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_convert.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather.cpp index 412b99c1a66e2d..13b1c44893af91 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp index 84f3acedbcadeb..c60be44e9e5d10 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp index fc9a085b24df3d..f4f91dd2bf6235 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_matmul.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_matmul.cpp index 03a56e3ffc76ac..fbab95ffbd4f9c 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_matmul.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_matmul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp index d8a7155574e0dc..c69468741d1dd9 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp index f94168c9245ada..b62ce98c88b150 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reduce.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reduce.cpp index 9e6e4b2347b7cc..13fbaee293a7ec 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reduce.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reshape.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reshape.cpp index 072f4253865b48..a0abc4e5c9ad41 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reshape.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_roialign.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_roialign.cpp index 7c9467e0bd100d..4551bfb1378b81 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_roialign.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_roialign.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_scatter.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_scatter.cpp index 721309630caba4..a846600340696f 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_scatter.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_scatter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_split.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_split.cpp index 0aa361c3d1520c..b61464a91405c9 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_split.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp index 46ba9b5c493e4b..65200017df2d9b 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_squeeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_topk.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_topk.cpp index d57c556f13df70..e761ed6d94b645 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_topk.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -159,7 +159,8 @@ class DynamicToStaticShapeTopK : public CommonTestUtils::TestsCommon, const auto data = std::make_shared(data_type, topk_setup.data_shape); const auto dims = std::make_shared(ngraph::element::i64, ngraph::Shape{topk_setup.data_shape.size()}); - const auto gather = std::make_shared(dims, + const auto shapeOf = std::make_shared(data); + const auto gather = std::make_shared(shapeOf, ngraph::opset3::Constant::create(ngraph::element::i32, {1}, {topk_setup.axis}), ngraph::opset3::Constant::create(ngraph::element::i32, {1}, {0})); const auto upper_bound = ngraph::opset3::Constant::create(dims->get_element_type(), {1}, {100}); @@ -188,7 +189,8 @@ class DynamicToStaticShapeTopK : public CommonTestUtils::TestsCommon, const auto data = std::make_shared(data_type, topk_setup.data_shape); const auto dims = std::make_shared(ngraph::element::i64, ngraph::Shape{topk_setup.data_shape.size()}); - const auto gather = std::make_shared(dims, + const auto shapeOf = std::make_shared(data); + const auto gather = std::make_shared(shapeOf, ngraph::opset3::Constant::create(ngraph::element::i32, {1}, {topk_setup.axis}), ngraph::opset3::Constant::create(ngraph::element::i32, {1}, {0})); const auto upper_bound = ngraph::opset3::Constant::create(dims->get_element_type(), {1}, {100}); diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_transpose.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_transpose.cpp index 3ec4749e28cb08..71e6d7cf7e5f44 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_transpose.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp index c8e9068043519c..55bef3bb2ceed8 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unary_elementwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp index 332cc980e5836d..8684b1e6bbabe4 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_unsqueeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp index 4ca9e9cafa56fd..8d871bdd6c5757 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/dynamic_to_static_shape_variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/eliminate_shapeof_after_dsr.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/eliminate_shapeof_after_dsr.cpp index 0220488e72ebda..15b7f6f434ecc3 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/eliminate_shapeof_after_dsr.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/eliminate_shapeof_after_dsr.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_gather_gather_elements.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_gather_gather_elements.cpp index 47120117f107e6..50e0f12dee873c 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_gather_gather_elements.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_gather_gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_subsequent_dsr_operations.cpp b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_subsequent_dsr_operations.cpp index fc35ec7103501b..7e2e9614d2a212 100644 --- a/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_subsequent_dsr_operations.cpp +++ b/inference-engine/tests/functional/plugin/myriad/ngraph/transformations/merge_subsequent_dsr_operations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/caching_tests.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/caching_tests.cpp new file mode 100644 index 00000000000000..c7b1194c2940fc --- /dev/null +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/caching_tests.cpp @@ -0,0 +1,49 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "behavior/caching_tests.hpp" + +using namespace LayerTestsDefinitions; + +namespace { + static const std::vector nightly_precisionsMyriad = { + ngraph::element::f32, + ngraph::element::f16, + ngraph::element::i32, + ngraph::element::i8, + ngraph::element::u8, + }; + + static const std::vector smoke_precisionsMyriad = { + ngraph::element::f32, + }; + + static const std::vector batchSizesMyriad = { + 1, 2 + }; + + static std::vector smoke_functions() { + auto funcs = LoadNetworkCacheTestBase::getStandardFunctions(); + if (funcs.size() > 1) { + funcs.erase(funcs.begin() + 1, funcs.end()); + } + return funcs; + } + + INSTANTIATE_TEST_CASE_P(smoke_CachingSupportCase_Myriad, LoadNetworkCacheTestBase, + ::testing::Combine( + ::testing::ValuesIn(smoke_functions()), + ::testing::ValuesIn(smoke_precisionsMyriad), + ::testing::ValuesIn(batchSizesMyriad), + ::testing::Values(CommonTestUtils::DEVICE_MYRIAD)), + LoadNetworkCacheTestBase::getTestCaseName); + + INSTANTIATE_TEST_CASE_P(nightly_CachingSupportCase_Myriad, LoadNetworkCacheTestBase, + ::testing::Combine( + ::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), + ::testing::ValuesIn(nightly_precisionsMyriad), + ::testing::ValuesIn(batchSizesMyriad), + ::testing::Values(CommonTestUtils::DEVICE_MYRIAD)), + LoadNetworkCacheTestBase::getTestCaseName); +} // namespace diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/config.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/config.cpp index 131da1006a141d..a5015b4a3210b1 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/config.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_integration.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_integration.cpp index ea209e63d3f290..200e62cf37fa23 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_integration.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_integration.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_threading_tests.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_threading_tests.cpp index 9142caa7ef3df1..9ca3ccb37dd15d 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_threading_tests.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/core_threading_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/exec_graph_info.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/exec_graph_info.cpp index d78638c0bdd882..e644dbc140bd93 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/exec_graph_info.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/exec_graph_info.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request.cpp index a3f3b6ee5d6f77..931fefbf391f8e 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_callback.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_callback.cpp index 70fd54abadc40a..c2281c39b809bb 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_callback.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_callback.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_config.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_config.cpp index 81a26e02bbff60..a9085f57e09764 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_config.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_input.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_input.cpp index 13f007575aee4e..76a2966501d733 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_input.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_input.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_output.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_output.cpp index c61af11ce4c7ba..eff1abed9f9a80 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_output.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/layout.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/layout.cpp index 4629cceefc602f..b0f9d38c93b3a8 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/layout.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/layout.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/query_network.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/query_network.cpp index ec6686708cd53e..bacbb6e4de2787 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/query_network.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/query_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/set_preprocess.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/set_preprocess.cpp index bb8085472565a8..cd06aa2f583637 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/set_preprocess.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/set_preprocess.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,4 +34,33 @@ namespace { ::testing::Values(CommonTestUtils::DEVICE_MULTI), ::testing::ValuesIn(multiConfigs)), PreprocessTest::getTestCaseName); + + const std::vector ioPrecisions = { + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::U8 + }; + const std::vector netLayouts = { + InferenceEngine::Layout::NCHW, + // InferenceEngine::Layout::NHWC + }; + + const std::vector ioLayouts = { + InferenceEngine::Layout::NCHW, + InferenceEngine::Layout::NHWC + }; + + INSTANTIATE_TEST_CASE_P(smoke_BehaviorTests, PreprocessConversionTest, + ::testing::Combine( + ::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(CommonTestUtils::DEVICE_MYRIAD), + ::testing::ValuesIn(configs)), + PreprocessConversionTest::getTestCaseName); + } // namespace \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/stress_tests.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/stress_tests.cpp index f9f03ef689120f..8655b88d39b564 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/stress_tests.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/stress_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/test_plugin.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/test_plugin.cpp index 56dbdff4defd06..a5f8e120009e90 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/test_plugin.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/test_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/version.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/version.cpp index df519f7f05afc2..bbae60bad4d51b 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/version.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/version.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/core_config.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/core_config.cpp index 25bc749cc4fc8d..e75091f571fa70 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/core_config.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/core_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/import_export_tests/import_nonzero.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/import_export_tests/import_nonzero.cpp index e863bb62e72e3d..ccdbb4182af9a3 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/import_export_tests/import_nonzero.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/import_export_tests/import_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,12 +21,18 @@ const std::vector> importConfigs = { {} }; +const std::vector appHeaders = { + "", + "APPLICATION_HEADER" +}; + INSTANTIATE_TEST_CASE_P(smoke_ImportNetworkCase, ImportNonZero, ::testing::Combine( ::testing::ValuesIn(netPrecisions), ::testing::Values(CommonTestUtils::DEVICE_MYRIAD), ::testing::ValuesIn(exportConfigs), - ::testing::ValuesIn(importConfigs)), + ::testing::ValuesIn(importConfigs), + ::testing::ValuesIn(appHeaders)), ImportNonZero::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/myriad_remote_blobs_tests.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/myriad_remote_blobs_tests.cpp index adff12ab7fc6e0..7a6948044cb797 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/myriad_remote_blobs_tests.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/myriad_remote_blobs_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp index 4b1813cbd78e60..e87e73f6e6f47c 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/comparison.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/comparison.cpp index b82fde73bac7d3..f4cfc820195b7e 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/comparison.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/comparison.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/concat.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/concat.cpp index a6311022a1bc22..f9500dad7e6226 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/concat.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/convolution.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/convolution.cpp index ef772b7df6924d..ac5285cad1bad9 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp index aafc112942b021..c3866b9621ccc2 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/eltwise.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/eltwise.cpp index 3a1631cb3a2e7b..dc258dec53825e 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_elements.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_elements.cpp index c99e855765fc2e..e6dae4781080fa 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_elements.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_elements.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include "shared_test_classes/single_layer/gather_elements.hpp" diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_nd.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_nd.cpp index 3a8ea3044a59da..d6dbf6f534913c 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_nd.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/interpolate.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/interpolate.cpp index 35254161cad49a..338d74c57bb616 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/interpolate.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/interpolate.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/logical.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/logical.cpp index 15980115247df9..8c1202dba66551 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/logical.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/logical.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mat_mul.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mat_mul.cpp index f8871b634c419e..f947367633bba5 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mat_mul.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/minimum_maximum.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/minimum_maximum.cpp index a08fb354d88f01..8db8e1297d32df 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/minimum_maximum.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/minimum_maximum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp index 4e02b6450737ec..1dc99bdd642978 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2021 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/nonzero.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/nonzero.cpp index 28553334034a7b..592236bb34bd23 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/nonzero.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/nonzero.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/pad.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/pad.cpp new file mode 100644 index 00000000000000..ce681365a1c2b2 --- /dev/null +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/pad.cpp @@ -0,0 +1,107 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "single_layer_tests/pad.hpp" + +using namespace LayerTestsDefinitions; + +namespace { + +const std::vector padMode = { + ngraph::helpers::PadMode::EDGE, + ngraph::helpers::PadMode::REFLECT, + ngraph::helpers::PadMode::SYMMETRIC +}; + +const std::vector argPadValue = {0.f, 1.f, -1.f, 2.5f}; + +const std::vector> padsBegin4D = {{0, 0, 0, 0}, {0, 3, 0, 0}, {0, 0, 0, 1}, {0, 0, 1, 1}, {0, 3, 0, 1}}; +const std::vector> padsEnd4D = {{0, 0, 0, 0}, {0, 3, 0, 0}, {0, 0, 0, 2}, {0, 3, 0, 1}}; + +const std::vector> padsBegin3D = {{0, 0, 0}, {3, 0, 0}, {0, 0, 1}, {0, 1, 1}, {3, 0, 1}}; +const std::vector> padsEnd3D = {{0, 0, 0}, {3, 0, 0}, {0, 0, 2}, {3, 0, 1}}; + +const auto pad4DConstParams = testing::Combine( + testing::ValuesIn(padsBegin4D), + testing::ValuesIn(padsEnd4D), + testing::ValuesIn(argPadValue), + testing::Values(ngraph::helpers::PadMode::CONSTANT), + testing::Values(InferenceEngine::Precision::FP16), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(std::vector{1, 5, 10, 11}), + testing::Values(CommonTestUtils::DEVICE_MYRIAD) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Pad4DConst, + PadLayerTest, + pad4DConstParams, + PadLayerTest::getTestCaseName +); + +const auto pad4DParams = testing::Combine( + testing::ValuesIn(padsBegin4D), + testing::ValuesIn(padsEnd4D), + testing::Values(0), + testing::ValuesIn(padMode), + testing::Values(InferenceEngine::Precision::FP16), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(std::vector{1, 5, 10, 11}), + testing::Values(CommonTestUtils::DEVICE_MYRIAD) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Pad4D, + PadLayerTest, + pad4DParams, + PadLayerTest::getTestCaseName +); + +const auto pad3DConstParams = testing::Combine( + testing::ValuesIn(padsBegin3D), + testing::ValuesIn(padsEnd3D), + testing::ValuesIn(argPadValue), + testing::Values(ngraph::helpers::PadMode::CONSTANT), + testing::Values(InferenceEngine::Precision::FP16), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(std::vector{5, 10, 11}), + testing::Values(CommonTestUtils::DEVICE_MYRIAD) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Pad3DConst, + PadLayerTest, + pad3DConstParams, + PadLayerTest::getTestCaseName +); + +const auto pad3DParams = testing::Combine( + testing::ValuesIn(padsBegin3D), + testing::ValuesIn(padsEnd3D), + testing::Values(0), + testing::ValuesIn(padMode), + testing::Values(InferenceEngine::Precision::FP16), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Precision::UNSPECIFIED), + testing::Values(InferenceEngine::Layout::ANY), + testing::Values(std::vector{5, 10, 11}), + testing::Values(CommonTestUtils::DEVICE_MYRIAD) +); + +INSTANTIATE_TEST_CASE_P( + smoke_Pad3D, + PadLayerTest, + pad3DParams, + PadLayerTest::getTestCaseName +); + +} // namespace diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/pooling.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/pooling.cpp index 50148850b9bec2..0909880261ba90 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/pooling.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/pooling.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/proposal.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/proposal.cpp index 95c28cd5523a98..103dff03d6f15d 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/proposal.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/roi_pooling.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/roi_pooling.cpp index 582928bb5fdb50..66baf439e144bf 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/roi_pooling.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/roi_pooling.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp index 2f0903066c56b7..11afafbc42ac4f 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/strided_slice.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/strided_slice.cpp index fb82c0e508f4e9..6c4003a3f3a08f 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/strided_slice.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/topk.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/topk.cpp index 81803d014e705a..9b3e4c7239d4ae 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/topk.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,6 +19,9 @@ const std::vector axes = { 0, 1, 2, + -1, + -2, + -3, }; const std::vector k = { diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/skip_tests_config.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/skip_tests_config.cpp index f092bd99352685..30511e8081517b 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/skip_tests_config.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/skip_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -35,5 +35,9 @@ std::vector disabledTestPatterns() { ".*ProposalLayerTest.*", // TODO: Issue 48183 R"(.*CTCGreedyDecoderSeqLen.*?\(1.1.1\).*)", + // TODO: Issue 51472 + ".*CachingSupportCase.*_batch2_.*", + // TODO: Issue 51804 + ".*PreprocessConversionTest.*oPRC=U8.*", }; } diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/constant_result.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/constant_result.cpp index 07ad29d2e79403..19fdc4ba9bf34f 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/constant_result.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/constant_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,10 +8,39 @@ #include "common_test_utils/test_constants.hpp" using namespace SubgraphTestsDefinitions; +using namespace InferenceEngine; namespace { - INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, - ::testing::Values(CommonTestUtils::DEVICE_MYRIAD), - ConstantResultSubgraphTest::getTestCaseName); + +const std::vector types = { + ConstantSubgraphType::SINGLE_COMPONENT, + ConstantSubgraphType::SEVERAL_COMPONENT +}; + +const std::vector shapes = { + {1, 3, 10, 10}, + {2, 3, 4, 5} +}; + +const std::vector precisions = { + Precision::U8, + Precision::I8, + Precision::U16, + Precision::I16, + Precision::I32, + Precision::U64, + Precision::I64, + Precision::FP32, + Precision::BOOL +}; + +INSTANTIATE_TEST_CASE_P(smoke_Check, ConstantResultSubgraphTest, + ::testing::Combine( + ::testing::ValuesIn(types), + ::testing::ValuesIn(shapes), + ::testing::ValuesIn(precisions), + ::testing::Values(CommonTestUtils::DEVICE_MYRIAD)), + ConstantResultSubgraphTest::getTestCaseName); + } // namespace diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp index 0dd02849e293e8..bdc85b7ae9ff43 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/reshape_squeeze_reshape_relu.cpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #include #include "subgraph_tests/reshape_squeeze_reshape_relu.hpp" #include "common_test_utils/test_constants.hpp" diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/split_conv_concat.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/split_conv_concat.cpp index 043c27d9ccd664..2688eed42fc06c 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/split_conv_concat.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/split_conv_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/tensor_names.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/tensor_names.cpp index 93e978ab427b07..b89622fb297f82 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/tensor_names.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/subgraph_tests/tensor_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/gather.cpp b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/gather.cpp index 6360db74f0b585..d882c3ba7c2a82 100644 --- a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/gather.cpp +++ b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/out_shape_of_reshape.cpp b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/out_shape_of_reshape.cpp index 3fd4d1511750d8..61b27f909e758e 100644 --- a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/out_shape_of_reshape.cpp +++ b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/out_shape_of_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_broadcast.cpp b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_broadcast.cpp index 22caeaa00597bd..fb1f38f1ae46ea 100644 --- a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_broadcast.cpp +++ b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nms.cpp b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nms.cpp index 8455e4f4ec1111..ea5a44ed98817f 100644 --- a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nms.cpp +++ b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nms.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nonzero.cpp b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nonzero.cpp index 098fa4f2a63e23..9d1193bd89aa70 100644 --- a/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nonzero.cpp +++ b/inference-engine/tests/functional/plugin/myriad/single_layer_tests/static_shape_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/concat_split_transpose.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/concat_split_transpose.cpp index 6a9c27f86ab758..2f5b6dac415e52 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/concat_split_transpose.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/concat_split_transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_binary_elementwise.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_binary_elementwise.cpp index 63b2936fe14e5f..279dc7a783d291 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_binary_elementwise.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_binary_elementwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_clamp.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_clamp.cpp index 6c68311ca55210..1cc7abf4ca9bb2 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_clamp.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_clamp.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_concat.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_concat.cpp index 1ec0a3b15d50ba..58d3c5d4357970 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_concat.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_convert.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_convert.cpp index 846c135a2da9a9..7ba067a7e7494c 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_convert.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather.cpp index 1c8d0ad3e51fac..628383b5bf6fa3 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_base.hpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_base.hpp index 433eb74b507f11..eaeb01ef9c5908 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_base.hpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_elements.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_elements.cpp index 434c92dccd7329..fd27c196162d53 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_elements.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_nd.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_nd.cpp index 7e9d001650700f..0b0b2a7db16f8c 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_nd.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_matmul.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_matmul.cpp index a54d05826f4baa..536da208e72d41 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_matmul.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_matmul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_non_max_suppression.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_non_max_suppression.cpp index 02e6d9921bddec..a764cb07c338e5 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_non_max_suppression.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reduce.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reduce.cpp index a77fc4441498cd..20fb3c905a92c1 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reduce.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp index 4065d2b531a585..2aa408c7a5f6a2 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_roialign.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_roialign.cpp index 1c70d4bdfd3834..c3e55b5ce93ad2 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_roialign.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_roialign.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_scatter.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_scatter.cpp index 729926659ba0a3..0aa93b16d50ba4 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_scatter.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_scatter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_split.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_split.cpp index 103a03280340da..0f8164bc831d8e 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_split.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_squeeze.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_squeeze.cpp index f7931c8805f459..ef6f8cfad1e722 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_squeeze.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_squeeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_strided_slice.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_strided_slice.cpp index 8bb4780c3263ff..da7c6bd5530d21 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_strided_slice.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_tests_common.hpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_tests_common.hpp index cc8ef1caa42ef7..82ef0832e4404c 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_tests_common.hpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_tests_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_topk.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_topk.cpp index 5083c54466b2ff..bafc3d9212cb69 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_topk.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,8 @@ const auto combinations = testing::Combine( ngraph::element::i32), testing::Values( TopKTestCase{{{12345}, {80000}}, 75, 0}, - TopKTestCase{{{1234}, {4663}}, 70, 0}), + TopKTestCase{{{1234}, {4663}}, 70, 0}, + TopKTestCase{{{1234}, {4663}}, 70, -1}), testing::Values(CommonTestUtils::DEVICE_MYRIAD)); @@ -64,8 +65,9 @@ class DSR_TopK : public testing::WithParamInterface, public DSR_Test const auto inputSubgraph = createInputSubgraphWithDSR(dataType, topkSetup.dataShapes); + const auto shapeOf = std::make_shared(inputSubgraph->input_value(0), ngraph::element::i32); const auto gather = std::make_shared( - inputSubgraph->input_value(1), + shapeOf, ngraph::opset3::Constant::create(ngraph::element::i32, {1}, {topkSetup.axis}), ngraph::opset3::Constant::create(ngraph::element::i32, {1}, {0})); const auto upper_bound = ngraph::opset3::Constant::create(inputSubgraph->get_input_element_type(1), {1}, {topkSetup.k}); diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unary_elementwise.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unary_elementwise.cpp index 8334cb13b226cb..589bbaae849128 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unary_elementwise.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unary_elementwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unsqueeze.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unsqueeze.cpp index 197af623154bf2..998e7f3878c97e 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unsqueeze.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_unsqueeze.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_variadic_split.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_variadic_split.cpp index f239999dbc6cf5..aead15031984f8 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_variadic_split.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/gather_gather_elements.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/gather_gather_elements.cpp index 3a053328ffe1b0..e8abae995bb344 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/gather_gather_elements.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/gather_gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nms_nonzero.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nms_nonzero.cpp index 92323d1e10c040..c71eeaceaaa1d2 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nms_nonzero.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nms_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_broadcast.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_broadcast.cpp index be8c4b4c1cd511..d739c1279cea8f 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_broadcast.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_transpose.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_transpose.cpp index 4751dd8236de05..b1615fa7db692e 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_transpose.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/nonzero_transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_result.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_result.cpp index 99801e409eec7f..57866f28ddeda4 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_result.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_shapeof_result.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_shapeof_result.cpp index 33ea4f11ea72ed..d47af641a3c1ea 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_shapeof_result.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/parameter_shapeof_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/topk_k_propagation.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/topk_k_propagation.cpp index e0c4f0e494ff7b..0c69c818f724d9 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/topk_k_propagation.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/topk_k_propagation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/unsqueeze_gather.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/unsqueeze_gather.cpp index 0b676a76eb381f..c3d3e5ba9e734b 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/unsqueeze_gather.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/unsqueeze_gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/CMakeLists.txt b/inference-engine/tests/functional/plugin/shared/CMakeLists.txt index 05fa0e4d2e32d6..6bb9f918a2b741 100644 --- a/inference-engine/tests/functional/plugin/shared/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/shared/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2019 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -32,6 +31,7 @@ addIeTarget( PRIVATE inference_engine_transformations DEPENDENCIES + inference_engine mock_engine HeteroPlugin MultiDevicePlugin diff --git a/inference-engine/tests/functional/plugin/shared/include/base/behavior_test_utils.hpp b/inference-engine/tests/functional/plugin/shared/include/base/behavior_test_utils.hpp index e7a11d69edef28..e21eb11624b20d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/base/behavior_test_utils.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/base/behavior_test_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/base/import_export_base/import_export_base.hpp b/inference-engine/tests/functional/plugin/shared/include/base/import_export_base/import_export_base.hpp index 8c954e01f46371..d8f30c23f2df1f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/base/import_export_base/import_export_base.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/base/import_export_base/import_export_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,8 @@ typedef std::tuple< InferenceEngine::Precision, // Network Precision std::string, // Target Device std::map, // Export Configuration - std::map // Import Configuration + std::map, // Import Configuration + std::string // Application Header > exportImportNetworkParams; namespace FuncTestUtils { @@ -26,6 +27,7 @@ class ImportNetworkTestBase : public testing::WithParamInterface exportConfiguration; std::map importConfiguration; + std::string applicationHeader; private: virtual void exportImportNetwork(); diff --git a/inference-engine/tests/functional/plugin/shared/include/base/multi/multi_helpers.hpp b/inference-engine/tests/functional/plugin/shared/include/base/multi/multi_helpers.hpp index 064c75006db640..c0aece496eace4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/base/multi/multi_helpers.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/base/multi/multi_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/add_output.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/add_output.hpp index 81a5770d8047c2..82bc95a001a8c1 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/add_output.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/add_output.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/caching_tests.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/caching_tests.hpp new file mode 100644 index 00000000000000..c5c4d3178d5c6b --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/caching_tests.hpp @@ -0,0 +1,46 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph/function.hpp" + +#include +#include + +using ngraphFunctionGenerator = std::function(ngraph::element::Type, std::size_t)>; +using nGraphFunctionWithName = std::tuple; + +using loadNetworkCacheParams = std::tuple< + nGraphFunctionWithName, // ngraph function with friendly name + ngraph::element::Type, // precision + std::size_t, // batch size + std::string // device name + >; + +namespace LayerTestsDefinitions { + +class LoadNetworkCacheTestBase : public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon { + std::string m_cacheFolderName; + std::string m_functionName; + ngraph::element::Type m_precision; + size_t m_batchSize; +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + void SetUp() override; + void TearDown() override; + void Run() override; + + bool importExportSupported(InferenceEngine::Core& ie) const; + + // Default functions and precisions that can be used as test parameters + static std::vector getStandardFunctions(); +}; + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/config.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/config.hpp index c83ec86d628293..2e2f91067f785e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/config.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -61,7 +61,7 @@ namespace BehaviorTestsDefinitions { targetDevice.find(CommonTestUtils::DEVICE_HETERO) == std::string::npos) { ASSERT_NO_THROW(ie->GetMetric(targetDevice, METRIC_KEY(SUPPORTED_CONFIG_KEYS))); ASSERT_THROW(ie->SetConfig(configuration, targetDevice), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } else { ASSERT_NO_THROW(ie->GetMetric(targetDevice, METRIC_KEY(SUPPORTED_CONFIG_KEYS))); ASSERT_NO_THROW(ie->SetConfig(configuration, targetDevice)); @@ -74,7 +74,7 @@ namespace BehaviorTestsDefinitions { // Create CNNNetwork from ngrpah::Function InferenceEngine::CNNNetwork cnnNet(function); ASSERT_THROW(auto execNet = ie->LoadNetwork(cnnNet, targetDevice, configuration), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } using IncorrectConfigAPITests = BehaviorTestsUtils::BehaviorTestsBasic; @@ -90,7 +90,7 @@ namespace BehaviorTestsDefinitions { } else { try { ie->SetConfig(configuration, targetDevice); - } catch (InferenceEngine::details::InferenceEngineException &) {} + } catch (InferenceEngine::Exception &) {} } } diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/core_integration.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/core_integration.hpp index caabf06061455b..d9386bdbf39a46 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/core_integration.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/core_integration.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -55,18 +55,11 @@ namespace BehaviorTestsDefinitions { ASSERT_NE(metrics.end(), it); \ } -// TODO: issue with RTTI -#ifdef __APPLE__ -using NotImplementedException = std::exception; -#else -using NotImplementedException = InferenceEngine::NotImplemented; -#endif - #define SKIP_IF_NOT_IMPLEMENTED(...) \ { \ try { \ __VA_ARGS__; \ - } catch (const NotImplementedException &) { \ + } catch (const InferenceEngine::NotImplemented&) { \ GTEST_SKIP(); \ } \ } @@ -219,7 +212,7 @@ TEST(IEClassBasicTest, smoke_createDefault) { TEST_P(IEClassBasicTestP, registerExistingPluginThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; - ASSERT_THROW(ie.RegisterPlugin(pluginName, deviceName), InferenceEngineException); + ASSERT_THROW(ie.RegisterPlugin(pluginName, deviceName), Exception); } TEST_P(IEClassBasicTestP, registerNewPluginNoThrows) { @@ -232,12 +225,12 @@ TEST_P(IEClassBasicTestP, registerNewPluginNoThrows) { TEST(IEClassBasicTest, smoke_registerExistingPluginFileThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; - ASSERT_THROW(ie.RegisterPlugins("nonExistPlugins.xml"), InferenceEngineException); + ASSERT_THROW(ie.RegisterPlugins("nonExistPlugins.xml"), Exception); } TEST(IEClassBasicTest, smoke_createNonExistingConfigThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() - ASSERT_THROW(Core ie("nonExistPlugins.xml"), InferenceEngineException); + ASSERT_THROW(Core ie("nonExistPlugins.xml"), Exception); } #ifdef __linux__ @@ -256,7 +249,7 @@ TEST(IEClassBasicTest, smoke_createMockEngineConfigThrows) { std::string filename{"mock_engine.xml"}; std::string content{""}; CommonTestUtils::createFile(filename, content); - ASSERT_THROW(Core ie(filename), InferenceEngineException); + ASSERT_THROW(Core ie(filename), Exception); CommonTestUtils::removeFile(filename.c_str()); } @@ -300,7 +293,7 @@ TEST_P(IEClassBasicTestP, smoke_registerPluginsXMLUnicodePath) { GTEST_COUT << "OK" << std::endl; } - catch (const InferenceEngine::details::InferenceEngineException &e_next) { + catch (const InferenceEngine::Exception &e_next) { CommonTestUtils::removeFile(pluginsXmlW); std::remove(pluginXML.c_str()); FAIL() << e_next.what(); @@ -341,7 +334,7 @@ TEST_P(IEClassBasicTestP, unregisterExistingPluginNoThrow) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; // device instance is not created yet - ASSERT_THROW(ie.UnregisterPlugin(deviceName), InferenceEngineException); + ASSERT_THROW(ie.UnregisterPlugin(deviceName), Exception); // make the first call to IE which created device instance ie.GetVersions(deviceName); @@ -352,7 +345,7 @@ TEST_P(IEClassBasicTestP, unregisterExistingPluginNoThrow) { TEST_P(IEClassBasicTestP, accessToUnregisteredPluginThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; - ASSERT_THROW(ie.UnregisterPlugin(deviceName), InferenceEngineException); + ASSERT_THROW(ie.UnregisterPlugin(deviceName), Exception); ASSERT_NO_THROW(ie.GetVersions(deviceName)); ASSERT_NO_THROW(ie.UnregisterPlugin(deviceName)); ASSERT_NO_THROW(ie.SetConfig({}, deviceName)); @@ -363,7 +356,7 @@ TEST_P(IEClassBasicTestP, accessToUnregisteredPluginThrows) { TEST(IEClassBasicTest, smoke_unregisterNonExistingPluginThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; - ASSERT_THROW(ie.UnregisterPlugin("unkown_device"), InferenceEngineException); + ASSERT_THROW(ie.UnregisterPlugin("unkown_device"), Exception); } // @@ -380,7 +373,7 @@ TEST_P(IEClassBasicTestP, SetConfigAllThrows) { TEST_P(IEClassBasicTestP, SetConfigForUnRegisteredDeviceThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; - ASSERT_THROW(ie.SetConfig({{"unsupported_key", "4"}}, "unregistered_device"), InferenceEngineException); + ASSERT_THROW(ie.SetConfig({{"unsupported_key", "4"}}, "unregistered_device"), Exception); } TEST_P(IEClassBasicTestP, SetConfigNoThrow) { @@ -432,7 +425,7 @@ TEST_P(IEClassBasicTestP, ImportNetworkThrows) { if (deviceName == CommonTestUtils::DEVICE_CPU || deviceName == CommonTestUtils::DEVICE_GPU) { - ASSERT_THROW(ie.ImportNetwork("model", deviceName), NotImplementedException); + ASSERT_THROW(ie.ImportNetwork("model", deviceName), NotImplemented); } } @@ -440,13 +433,13 @@ TEST(IEClassBasicTest, smoke_ImportNetworkHeteroThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; - ASSERT_THROW(ie.ImportNetwork("model", CommonTestUtils::DEVICE_HETERO), InferenceEngineException); + ASSERT_THROW(ie.ImportNetwork("model", CommonTestUtils::DEVICE_HETERO), Exception); } TEST(IEClassBasicTest, smoke_ImportNetworkMultiThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() InferenceEngine::Core ie; - ASSERT_THROW(ie.ImportNetwork("model", CommonTestUtils::DEVICE_MULTI), InferenceEngineException); + ASSERT_THROW(ie.ImportNetwork("model", CommonTestUtils::DEVICE_MULTI), Exception); } TEST_P(IEClassBasicTestP, ImportNetworkWithNullContextThrows) { @@ -454,7 +447,7 @@ TEST_P(IEClassBasicTestP, ImportNetworkWithNullContextThrows) { Core ie; RemoteContext::Ptr context = nullptr; std::istringstream stream("None"); - ASSERT_THROW(ie.ImportNetwork(stream, context, {}), InferenceEngineException); + ASSERT_THROW(ie.ImportNetwork(stream, context, {}), Exception); } // @@ -547,7 +540,7 @@ TEST_P(IEClassNetworkTestP, QueryNetworkActualNoThrow) { try { ie.QueryNetwork(actualNetwork, deviceName); - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { std::string message = ex.what(); ASSERT_STR_CONTAINS(message, "[NOT_IMPLEMENTED] ngraph::Function is not supported natively"); } @@ -566,7 +559,59 @@ TEST_P(IEClassNetworkTestP, QueryNetworkWithKSO) { FAIL() << "Op " << op->get_friendly_name() << " is not supported by " << deviceName; } } - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { + std::string message = ex.what(); + ASSERT_STR_CONTAINS(message, "[NOT_IMPLEMENTED] ngraph::Function is not supported natively"); + } +} + +TEST_P(IEClassNetworkTestP, SetAffinityWithConstantBranches) { + SKIP_IF_CURRENT_TEST_IS_DISABLED() + Core ie; + + try { + std::shared_ptr func; + { + ngraph::PartialShape shape({1, 84}); + ngraph::element::Type type(ngraph::element::Type_t::f32); + auto param = std::make_shared(type, shape); + auto matMulWeights = + ngraph::opset6::Constant::create(ngraph::element::Type_t::f32, {10, 84}, {1}); + auto shapeOf = std::make_shared(matMulWeights); + auto gConst1 = ngraph::opset6::Constant::create(ngraph::element::Type_t::i32, {1}, {1}); + auto gConst2 = ngraph::opset6::Constant::create(ngraph::element::Type_t::i64, {}, {0}); + auto gather = std::make_shared(shapeOf, gConst1, gConst2); + auto concatConst = ngraph::opset6::Constant::create(ngraph::element::Type_t::i64, {1}, {1}); + auto concat = + std::make_shared(ngraph::NodeVector{concatConst, gather}, 0); + auto relu = std::make_shared(param); + auto reshape = std::make_shared(relu, concat, false); + auto matMul = std::make_shared(reshape, matMulWeights, false, true); + auto matMulBias = + ngraph::opset6::Constant::create(ngraph::element::Type_t::f32, {1, 10}, {1}); + auto addBias = std::make_shared(matMul, matMulBias); + auto result = std::make_shared(addBias); + + ngraph::ParameterVector params = {param}; + ngraph::ResultVector results = {result}; + + func = std::make_shared(results, params); + } + CNNNetwork net(func); + + auto rres = ie.QueryNetwork(net, deviceName); + auto rl_map = rres.supportedLayersMap; + for (const auto & op : func->get_ops()) { + if (!rl_map.count(op->get_friendly_name())) { + FAIL() << "Op " << op->get_friendly_name() << " is not supported by " << deviceName; + } + } + for (const auto & op : net.getFunction()->get_ops()) { + std::string affinity = rl_map[op->get_friendly_name()]; + op->get_rt_info()["affinity"] = std::make_shared>(affinity); + } + ExecutableNetwork exeNetwork = ie.LoadNetwork(ksoNetwork, deviceName); + } catch (const NotImplemented& ex) { std::string message = ex.what(); ASSERT_STR_CONTAINS(message, "[NOT_IMPLEMENTED] ngraph::Function is not supported natively"); } @@ -590,7 +635,7 @@ TEST_P(IEClassNetworkTestP, SetAffinityWithKSO) { op->get_rt_info()["affinity"] = std::make_shared>(affinity); } ExecutableNetwork exeNetwork = ie.LoadNetwork(ksoNetwork, deviceName); - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { std::string message = ex.what(); ASSERT_STR_CONTAINS(message, "[NOT_IMPLEMENTED] ngraph::Function is not supported natively"); } @@ -607,7 +652,7 @@ TEST_P(IEClassNetworkTestP, QueryNetworkHeteroActualNoThrow) { TEST_P(IEClassNetworkTestP, QueryNetworkMultiThrows) { SKIP_IF_CURRENT_TEST_IS_DISABLED() Core ie; - ASSERT_THROW(ie.QueryNetwork(actualNetwork, CommonTestUtils::DEVICE_MULTI), InferenceEngineException); + ASSERT_THROW(ie.QueryNetwork(actualNetwork, CommonTestUtils::DEVICE_MULTI), Exception); } TEST(IEClassBasicTest, smoke_GetMetricSupportedMetricsHeteroNoThrow) { @@ -649,7 +694,7 @@ TEST(IEClassBasicTest, smoke_GetMetricSupportedConfigKeysHeteroThrows) { Core ie; // TODO: check std::string targetDevice = CommonTestUtils::DEVICE_HETERO + std::string(":") + CommonTestUtils::DEVICE_CPU; - ASSERT_THROW(ie.GetMetric(targetDevice, METRIC_KEY(SUPPORTED_CONFIG_KEYS)), InferenceEngineException); + ASSERT_THROW(ie.GetMetric(targetDevice, METRIC_KEY(SUPPORTED_CONFIG_KEYS)), Exception); } TEST_P(IEClassGetMetricTest_SUPPORTED_METRICS, GetMetricAndPrintNoThrow) { @@ -802,7 +847,7 @@ TEST_P(IEClassGetMetricTest_ThrowUnsupported, GetMetricThrow) { Core ie; Parameter p; - ASSERT_THROW(p = ie.GetMetric(deviceName, "unsupported_metric"), InferenceEngineException); + ASSERT_THROW(p = ie.GetMetric(deviceName, "unsupported_metric"), Exception); } TEST_P(IEClassGetConfigTest, GetConfigNoThrow) { @@ -838,7 +883,7 @@ TEST_P(IEClassGetConfigTest_ThrowUnsupported, GetConfigHeteroThrow) { Core ie; Parameter p; - ASSERT_THROW(p = ie.GetConfig(CommonTestUtils::DEVICE_HETERO, "unsupported_config"), InferenceEngineException); + ASSERT_THROW(p = ie.GetConfig(CommonTestUtils::DEVICE_HETERO, "unsupported_config"), Exception); } TEST_P(IEClassGetConfigTest_ThrowUnsupported, GetConfigHeteroWithDeviceThrow) { @@ -847,7 +892,7 @@ TEST_P(IEClassGetConfigTest_ThrowUnsupported, GetConfigHeteroWithDeviceThrow) { Parameter p; ASSERT_THROW(p = ie.GetConfig(CommonTestUtils::DEVICE_HETERO + std::string(":") + deviceName, HETERO_CONFIG_KEY(DUMP_GRAPH_DOT)), - InferenceEngineException); + Exception); } TEST_P(IEClassGetConfigTest_ThrowUnsupported, GetConfigThrow) { @@ -855,7 +900,7 @@ TEST_P(IEClassGetConfigTest_ThrowUnsupported, GetConfigThrow) { Core ie; Parameter p; - ASSERT_THROW(p = ie.GetConfig(deviceName, "unsupported_config"), InferenceEngineException); + ASSERT_THROW(p = ie.GetConfig(deviceName, "unsupported_config"), Exception); } TEST_P(IEClassGetAvailableDevices, GetAvailableDevicesNoThrow) { @@ -957,7 +1002,7 @@ TEST_P(IEClassExecutableNetworkGetMetricTest_ThrowsUnsupported, GetMetricThrow) ExecutableNetwork exeNetwork = ie.LoadNetwork(simpleNetwork, deviceName); - ASSERT_THROW(p = exeNetwork.GetMetric("unsupported_metric"), InferenceEngineException); + ASSERT_THROW(p = exeNetwork.GetMetric("unsupported_metric"), Exception); } TEST_P(IEClassExecutableNetworkGetConfigTest, GetConfigNoThrow) { @@ -984,7 +1029,7 @@ TEST_P(IEClassExecutableNetworkGetConfigTest, GetConfigThrows) { ExecutableNetwork exeNetwork = ie.LoadNetwork(simpleNetwork, deviceName); - ASSERT_THROW(p = exeNetwork.GetConfig("unsupported_config"), InferenceEngineException); + ASSERT_THROW(p = exeNetwork.GetConfig("unsupported_config"), Exception); } TEST_P(IEClassExecutableNetworkSetConfigTest, SetConfigThrows) { @@ -994,7 +1039,7 @@ TEST_P(IEClassExecutableNetworkSetConfigTest, SetConfigThrows) { ExecutableNetwork exeNetwork = ie.LoadNetwork(simpleNetwork, deviceName); - ASSERT_THROW(exeNetwork.SetConfig({{"unsupported_config", "some_value"}}), InferenceEngineException); + ASSERT_THROW(exeNetwork.SetConfig({{"unsupported_config", "some_value"}}), Exception); } TEST_P(IEClassExecutableNetworkSupportedConfigTest, SupportedConfigWorks) { @@ -1016,7 +1061,7 @@ TEST_P(IEClassExecutableNetworkUnsupportedConfigTest, UnsupportedConfigThrows) { ExecutableNetwork exeNetwork = ie.LoadNetwork(simpleNetwork, deviceName); - ASSERT_THROW(exeNetwork.SetConfig({{configKey, configValue}}), InferenceEngineException); + ASSERT_THROW(exeNetwork.SetConfig({{configKey, configValue}}), Exception); } TEST_P(IEClassExecutableNetworkGetConfigTest, GetConfigNoEmptyNoThrow) { @@ -1179,7 +1224,7 @@ TEST_P(IEClassQueryNetworkTest, QueryNetworkWithDeviceID) { if (supportsDeviceID(ie, deviceName)) { try { ie.QueryNetwork(simpleNetwork, deviceName + ".0"); - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { std::string message = ex.what(); ASSERT_STR_CONTAINS(message, "[NOT_IMPLEMENTED] ngraph::Function is not supported natively"); } @@ -1193,7 +1238,7 @@ TEST_P(IEClassQueryNetworkTest, QueryNetworkWithBigDeviceIDThrows) { Core ie; if (supportsDeviceID(ie, deviceName)) { - ASSERT_THROW(ie.QueryNetwork(actualNetwork, deviceName + ".110"), InferenceEngineException); + ASSERT_THROW(ie.QueryNetwork(actualNetwork, deviceName + ".110"), Exception); } else { GTEST_SKIP(); } @@ -1204,7 +1249,7 @@ TEST_P(IEClassQueryNetworkTest, QueryNetworkWithInvalidDeviceIDThrows) { Core ie; if (supportsDeviceID(ie, deviceName)) { - ASSERT_THROW(ie.QueryNetwork(actualNetwork, deviceName + ".l0"), InferenceEngineException); + ASSERT_THROW(ie.QueryNetwork(actualNetwork, deviceName + ".l0"), Exception); } else { GTEST_SKIP(); } @@ -1216,7 +1261,7 @@ TEST_P(IEClassQueryNetworkTest, QueryNetworkHETEROWithBigDeviceIDThrows) { if (supportsDeviceID(ie, deviceName)) { ASSERT_THROW(ie.QueryNetwork(actualNetwork, CommonTestUtils::DEVICE_HETERO, - {{"TARGET_FALLBACK", deviceName + ".100," + CommonTestUtils::DEVICE_CPU}}), InferenceEngineException); + {{"TARGET_FALLBACK", deviceName + ".100," + CommonTestUtils::DEVICE_CPU}}), Exception); } else { GTEST_SKIP(); } @@ -1259,7 +1304,7 @@ TEST_P(IEClassLoadNetworkTest, LoadNetworkWithBigDeviceIDThrows) { Core ie; if (supportsDeviceID(ie, deviceName)) { - ASSERT_THROW(ie.LoadNetwork(actualNetwork, deviceName + ".10"), InferenceEngineException); + ASSERT_THROW(ie.LoadNetwork(actualNetwork, deviceName + ".10"), Exception); } else { GTEST_SKIP(); } @@ -1270,7 +1315,7 @@ TEST_P(IEClassLoadNetworkTest, LoadNetworkWithInvalidDeviceIDThrows) { Core ie; if (supportsDeviceID(ie, deviceName)) { - ASSERT_THROW(ie.LoadNetwork(actualNetwork, deviceName + ".l0"), InferenceEngineException); + ASSERT_THROW(ie.LoadNetwork(actualNetwork, deviceName + ".l0"), Exception); } else { GTEST_SKIP(); } @@ -1282,7 +1327,7 @@ TEST_P(IEClassLoadNetworkTest, LoadNetworkHETEROWithBigDeviceIDThrows) { if (supportsDeviceID(ie, deviceName)) { ASSERT_THROW(ie.LoadNetwork(actualNetwork, "HETERO", - {{"TARGET_FALLBACK", deviceName + ".100," + CommonTestUtils::DEVICE_CPU}}), InferenceEngineException); + {{"TARGET_FALLBACK", deviceName + ".100," + CommonTestUtils::DEVICE_CPU}}), Exception); } else { GTEST_SKIP(); } @@ -1295,7 +1340,7 @@ TEST_P(IEClassLoadNetworkTest, LoadNetworkHETEROAndDeviceIDThrows) { if (supportsDeviceID(ie, deviceName)) { ASSERT_THROW(ie.LoadNetwork(actualNetwork, CommonTestUtils::DEVICE_HETERO, {{"TARGET_FALLBACK", deviceName + "," + CommonTestUtils::DEVICE_CPU}, - {CONFIG_KEY(DEVICE_ID), "110"}}), InferenceEngineException); + {CONFIG_KEY(DEVICE_ID), "110"}}), Exception); } else { GTEST_SKIP(); } diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/core_threading_tests.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/core_threading_tests.hpp index 25148eac87c459..1b255e6afbd239 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/core_threading_tests.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/core_threading_tests.hpp @@ -1,9 +1,8 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include -#include
#include #include #include @@ -56,7 +55,7 @@ class CoreThreadingTestsBase { void safePluginUnregister(InferenceEngine::Core & ie) { try { ie.UnregisterPlugin(deviceName); - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { // if several threads unload plugin at once, the first thread does this // while all others will throw an exception that plugin is not registered ASSERT_STR_CONTAINS(ex.what(), "name is not registered in the"); @@ -65,10 +64,10 @@ class CoreThreadingTestsBase { void safeAddExtension(InferenceEngine::Core & ie) { try { - auto extension = InferenceEngine::make_so_pointer( + auto extension = std::make_shared( FileUtils::makePluginLibraryName({}, "template_extension")); ie.AddExtension(extension); - } catch (const InferenceEngine::details::InferenceEngineException & ex) { + } catch (const InferenceEngine::Exception & ex) { ASSERT_STR_CONTAINS(ex.what(), "name: experimental"); } } diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/cpp_holders.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/cpp_holders.hpp index 33f631c234a504..2f10607953867b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/cpp_holders.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/cpp_holders.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include @@ -14,7 +15,6 @@ #include #include #include "gtest/gtest.h" -#include "common_test_utils/common_utils.hpp" #include "common_test_utils/test_common.hpp" #include "functional_test_utils/skip_tests_config.hpp" #include "functional_test_utils/precision_utils.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/exec_graph_info.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/exec_graph_info.hpp index d1065d2e027ac8..b663f54859803f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/exec_graph_info.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/exec_graph_info.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -137,8 +137,9 @@ TEST_P(ExecGraphTests, CheckExecGraphInfoBeforeExecution) { ASSERT_GE(layer.second, 0); } } else { - ASSERT_THROW(ie->LoadNetwork(cnnNet, targetDevice, configuration).GetExecGraphInfo(), - InferenceEngine::NotImplemented); + InferenceEngine::ExecutableNetwork network; + ASSERT_NO_THROW(network = ie->LoadNetwork(cnnNet, targetDevice, configuration)); + ASSERT_THROW(network.GetExecGraphInfo(), InferenceEngine::NotImplemented); } } diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request.hpp index 793e0eb215a999..40106ef228b714 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -95,7 +95,7 @@ TEST_P(InferRequestTests, failToSetNullptrForInput) { ASSERT_NO_THROW(req = execNet.CreateInferRequest()); InferenceEngine::Blob::Ptr inputBlob = nullptr; ASSERT_THROW(req.SetBlob(cnnNet.getInputsInfo().begin()->first, inputBlob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(InferRequestTests, failToSetEmptyInputBlob) { @@ -110,7 +110,7 @@ TEST_P(InferRequestTests, failToSetEmptyInputBlob) { ASSERT_NO_THROW(req = execNet.CreateInferRequest()); InferenceEngine::Blob::Ptr blob; ASSERT_THROW(req.SetBlob(cnnNet.getInputsInfo().begin()->first, blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(InferRequestTests, failToSetEmptyOutputBlob) { @@ -125,7 +125,7 @@ TEST_P(InferRequestTests, failToSetEmptyOutputBlob) { ASSERT_NO_THROW(req = execNet.CreateInferRequest()); InferenceEngine::Blob::Ptr blob; ASSERT_THROW(req.SetBlob(cnnNet.getOutputsInfo().begin()->first, blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(InferRequestTests, failToSetNotAllocatedInput) { @@ -173,7 +173,7 @@ TEST_P(InferRequestTests, failToSetBlobWithIncorrectName) { FuncTestUtils::createAndFillBlob(cnnNet.getInputsInfo().begin()->second->getTensorDesc()); blob->allocate(); ASSERT_THROW(req.SetBlob(incorrect_input_name, blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(InferRequestTests, failToSetInputWithIncorrectSizes) { @@ -191,7 +191,7 @@ TEST_P(InferRequestTests, failToSetInputWithIncorrectSizes) { blob->allocate(); blob->getTensorDesc().getDims()[0]*=2; ASSERT_THROW(req.SetBlob(cnnNet.getInputsInfo().begin()->first, blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(InferRequestTests, failToSetOutputWithIncorrectSizes) { @@ -209,7 +209,7 @@ TEST_P(InferRequestTests, failToSetOutputWithIncorrectSizes) { blob->allocate(); blob->getTensorDesc().getDims()[0]*=2; ASSERT_THROW(req.SetBlob(cnnNet.getOutputsInfo().begin()->first, blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(InferRequestTests, canInferWithoutSetAndGetInOut) { @@ -288,7 +288,7 @@ TEST_P(InferRequestTests, canProcessDeallocatedInputBlobAfterSetBlob) { blob->allocate(); ASSERT_NO_THROW(req.SetBlob(cnnNet.getInputsInfo().begin()->first, blob)); blob->deallocate(); - ASSERT_THROW(req.Infer(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Infer(), InferenceEngine::Exception); } TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterGetBlob) { @@ -306,7 +306,7 @@ TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterGetBlob) { blob->allocate(); ASSERT_NO_THROW(req.SetBlob(cnnNet.getOutputsInfo().begin()->first, blob)); blob->deallocate(); - ASSERT_THROW(req.Infer(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Infer(), InferenceEngine::Exception); } TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterGetBlobForAsync) { @@ -324,8 +324,8 @@ TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterGetBlobForAsync) { blob->allocate(); ASSERT_NO_THROW(req.SetBlob(cnnNet.getOutputsInfo().begin()->first, blob)); blob->deallocate(); - ASSERT_THROW(req.Infer(), InferenceEngine::details::InferenceEngineException); - ASSERT_THROW(req.StartAsync(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Infer(), InferenceEngine::Exception); + ASSERT_THROW(req.StartAsync(), InferenceEngine::Exception); } TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterGetAndSetBlob) { @@ -344,7 +344,7 @@ TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterGetAndSetBlob) { ASSERT_NO_THROW(blob = req.GetBlob(cnnNet.getOutputsInfo().begin()->first)); ASSERT_NO_THROW(req.SetBlob(cnnNet.getOutputsInfo().begin()->first, blob)); blob->deallocate(); - ASSERT_THROW(req.Infer(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Infer(), InferenceEngine::Exception); } TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterSetBlob) { @@ -362,7 +362,7 @@ TEST_P(InferRequestTests, canProcessDeallocatedOutputBlobAfterSetBlob) { blob->allocate(); ASSERT_NO_THROW(req.SetBlob(cnnNet.getOutputsInfo().begin()->first, blob)); blob->deallocate(); - ASSERT_THROW(req.Infer(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Infer(), InferenceEngine::Exception); } TEST_P(InferRequestTests, secondCallGetOutputDoNotReAllocateData) { @@ -441,7 +441,7 @@ TEST_P(InferRequestTests, FailedAsyncInferWithNegativeTimeForWait) { ASSERT_NO_THROW(blob = req.GetBlob(cnnNet.getInputsInfo().begin()->first)); req.Infer(); req.StartAsync(); - ASSERT_THROW(req.Wait(-2), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(req.Wait(-2), InferenceEngine::Exception); } TEST_P(InferRequestTests, canRun3SyncRequestsConsistentlyFromThreads) { diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_callback.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_callback.hpp index ad1b27d6bca205..2dfb4bd4835e14 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_callback.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_callback.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -125,7 +125,7 @@ TEST_P(CallbackTests, returnGeneralErrorIfCallbackThrowException) { InferenceEngine::IInferRequest::Ptr req = static_cast(execNet.CreateInferRequest()); req->SetCompletionCallback( [](InferenceEngine::IInferRequest::Ptr, InferenceEngine::StatusCode status) { - THROW_IE_EXCEPTION << "returnGeneralErrorIfCallbackThrowException"; + IE_THROW() << "returnGeneralErrorIfCallbackThrowException"; }); InferenceEngine::ResponseDesc resp; diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_cancellation.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_cancellation.hpp index ddc1432d12b54d..0030ade00e319b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_cancellation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_cancellation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -46,7 +46,7 @@ TEST_P(CancellationTests, canCancelAsyncRequest) { ASSERT_NO_THROW(req.Cancel()); try { req.Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY); - } catch (const InferenceEngine::InferCancelled& ex) { + } catch (const InferenceEngine::InferCancelled&) { SUCCEED(); } } @@ -65,7 +65,7 @@ TEST_P(CancellationTests, canResetAfterCancelAsyncRequest) { ASSERT_NO_THROW(req.Cancel()); try { req.Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY); - } catch (const InferenceEngine::InferCancelled& ex) { + } catch (const InferenceEngine::InferCancelled&) { SUCCEED(); } @@ -107,7 +107,7 @@ TEST_P(CancellationTests, canCancelInferRequest) { ASSERT_NO_THROW(req.Cancel()); try { infer.get(); - } catch (const InferenceEngine::InferCancelled& ex) { + } catch (const InferenceEngine::InferCancelled&) { SUCCEED(); } } diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_config.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_config.hpp index b2f2008cd25907..d19a78a33931d2 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_config.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_input.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_input.hpp index d066f8ef80e38a..e0d77199996c4c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_input.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_input.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_output.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_output.hpp index a68deeba4a0765..8132f3cc32ee83 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_output.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/infer_request_output.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/invalid_cases/proposal.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/invalid_cases/proposal.hpp index 5ca19336b489bf..ee1e8227600e32 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/invalid_cases/proposal.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/invalid_cases/proposal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/layout.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/layout.hpp index 9a18a5cbfc7e3c..2d27800a76285d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/layout.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/layout.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/memory_states.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/memory_states.hpp index a9718b1b6c8d57..245be3dfb758db 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/memory_states.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/memory_states.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/perf_counters.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/perf_counters.hpp index 9f77230eff4c2d..f1987b3c9a1cf4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/perf_counters.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/perf_counters.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/preprocessing.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/preprocessing.hpp index 32d959d8e16281..40aa68c3337039 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/preprocessing.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/preprocessing.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob.hpp index 6ed62ff59479be..aa9b4acc8b8a0c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob_of_kind.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob_of_kind.hpp index 8271cbcf88e5bd..a27ce1c507201e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob_of_kind.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/set_blob_of_kind.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/set_preprocess.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/set_preprocess.hpp index ec258bfabb9059..78a9e72665b266 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/set_preprocess.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/set_preprocess.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,7 +20,7 @@ using PreprocessTest = BehaviorTestsUtils::BehaviorTestsBasic; TEST_P(PreprocessTest, SetPreProcessToInputInfo) { // Skip test according to plugin specific disabledTestPatterns() (if any) SKIP_IF_CURRENT_TEST_IS_DISABLED() - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(function); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -41,7 +41,7 @@ TEST_P(PreprocessTest, SetPreProcessToInputInfo) { TEST_P(PreprocessTest, SetPreProcessToInferRequest) { // Skip test according to plugin specific disabledTestPatterns() (if any) SKIP_IF_CURRENT_TEST_IS_DISABLED() - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(function); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -82,7 +82,7 @@ TEST_P(PreprocessTest, SetMeanImagePreProcessGetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -108,8 +108,8 @@ TEST_P(PreprocessTest, SetMeanImagePreProcessGetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -149,7 +149,7 @@ TEST_P(PreprocessTest, SetMeanImagePreProcessSetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -178,8 +178,8 @@ TEST_P(PreprocessTest, SetMeanImagePreProcessSetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -219,7 +219,7 @@ TEST_P(PreprocessTest, SetMeanValuePreProcessGetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -239,8 +239,8 @@ TEST_P(PreprocessTest, SetMeanValuePreProcessGetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -280,7 +280,7 @@ TEST_P(PreprocessTest, SetMeanValuePreProcessSetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -303,8 +303,8 @@ TEST_P(PreprocessTest, SetMeanValuePreProcessSetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -345,7 +345,7 @@ TEST_P(PreprocessTest, ReverseInputChannelsPreProcessGetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -358,8 +358,8 @@ TEST_P(PreprocessTest, ReverseInputChannelsPreProcessGetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -409,7 +409,7 @@ TEST_P(PreprocessTest, ReverseInputChannelsPreProcessSetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -425,8 +425,8 @@ TEST_P(PreprocessTest, ReverseInputChannelsPreProcessSetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -475,7 +475,7 @@ TEST_P(PreprocessTest, SetScalePreProcessGetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -495,8 +495,8 @@ TEST_P(PreprocessTest, SetScalePreProcessGetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -537,7 +537,7 @@ TEST_P(PreprocessTest, SetScalePreProcessSetBlob) { ngraph = std::make_shared(results, params); } - // Create CNNNetwork from ngrpah::Function + // Create CNNNetwork from ngraph::Function InferenceEngine::CNNNetwork cnnNet(ngraph); auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); @@ -560,8 +560,8 @@ TEST_P(PreprocessTest, SetScalePreProcessSetBlob) { // Fill input { - auto locketMem = inBlob->buffer(); - auto *inData = locketMem.as(); + auto lockedMem = inBlob->buffer(); + auto *inData = lockedMem.as(); for (size_t i = 0; i < inBlob->size(); i++) inData[i] = i; } @@ -581,4 +581,174 @@ TEST_P(PreprocessTest, SetScalePreProcessSetBlob) { } } +typedef std::tuple< + InferenceEngine::Precision, // Network precision + InferenceEngine::Precision, // Set input precision + InferenceEngine::Precision, // Set output precision + InferenceEngine::Layout, // Network layout - always NCHW + InferenceEngine::Layout, // Set input layout + InferenceEngine::Layout, // Set output layout + bool, // SetBlob or GetBlob for input blob + bool, // SetBlob or GetBlob for output blob + std::string, // Device name + std::map // Config +> PreprocessConversionParams; + +class PreprocessConversionTest : public testing::WithParamInterface, + public CommonTestUtils::TestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::Precision netPrecision, iPrecision, oPrecision; + InferenceEngine::Layout netLayout, iLayout, oLayout; + bool setInputBlob, setOutputBlob; + std::string targetDevice; + std::map configuration; + std::tie(netPrecision, iPrecision, oPrecision, + netLayout, iLayout, oLayout, + setInputBlob, setOutputBlob, + targetDevice, configuration) = obj.param; + std::ostringstream result; + result << "netPRC=" << netPrecision.name() << "_"; + result << "iPRC=" << iPrecision.name() << "_"; + result << "oPRC=" << oPrecision.name() << "_"; + result << "netLT=" << netLayout << "_"; + result << "iLT=" << iLayout << "_"; + result << "oLT=" << oLayout << "_"; + result << "setIBlob=" << setInputBlob << "_"; + result << "setOBlob=" << setOutputBlob << "_"; + result << "targetDevice=" << targetDevice; + if (!configuration.empty()) { + for (auto& configItem : configuration) { + result << "configItem=" << configItem.first << "_" << configItem.second << "_"; + } + } + return result.str(); + } + + void SetUp() override { + std::tie(netPrecision, iPrecision, oPrecision, + netLayout, iLayout, oLayout, + setInputBlob, setOutputBlob, + targetDevice, configuration) = this->GetParam(); + } + + void TearDown() override { + if (!configuration.empty()) { + PluginCache::get().reset(); + } + } + + std::shared_ptr ie = PluginCache::get().ie(); + InferenceEngine::Precision netPrecision, iPrecision, oPrecision; + InferenceEngine::Layout netLayout, iLayout, oLayout; + bool setInputBlob, setOutputBlob; + std::string targetDevice; + std::map configuration; +}; + +TEST_P(PreprocessConversionTest, Infer) { + // Skip test according to plugin specific disabledTestPatterns() (if any) + SKIP_IF_CURRENT_TEST_IS_DISABLED() + std::shared_ptr ngraph; + unsigned int shape_size = 9, channels = 3, batch = 1, offset = 0; + { + ngraph::PartialShape shape({batch, channels, shape_size, shape_size}); + ngraph::element::Type type(ngraph::element::Type_t::f32); + auto param = std::make_shared(type, shape); + param->set_friendly_name("param"); + auto relu = std::make_shared(param); + relu->set_friendly_name("relu"); + auto result = std::make_shared(relu); + result->set_friendly_name("result"); + + ngraph::ParameterVector params = {param}; + ngraph::ResultVector results = {result}; + + ngraph = std::make_shared(results, params); + } + + // Create CNNNetwork from ngraph::Function + InferenceEngine::CNNNetwork cnnNet(ngraph); + + cnnNet.getInputsInfo().begin()->second->setPrecision(iPrecision); + cnnNet.getInputsInfo().begin()->second->setLayout(iLayout); + cnnNet.getOutputsInfo().begin()->second->setPrecision(oPrecision); + cnnNet.getOutputsInfo().begin()->second->setLayout(oLayout); + + // Load CNNNetwork to target plugins + auto execNet = ie->LoadNetwork(cnnNet, targetDevice, configuration); + // Create InferRequest + auto req = execNet.CreateInferRequest(); + + // unsigned int stride = shape_size + offset; + // std::vector blobData(batch * channels * stride * stride, 0); + // InferenceEngine::BlockingDesc blockDesc({ batch, shape_size, shape_size, channels }, + // { 0, 2, 3, 1 }, + // 0, + // { 0, 0, 0, 0 }, + // { channels * stride * stride, channels * stride, channels, 1 }); + // InferenceEngine::TensorDesc desc( + // InferenceEngine::Precision::FP32, + // { batch, channels, shape_size, shape_size }, blockDesc); + (void)offset; + + InferenceEngine::Blob::Ptr inBlob = nullptr, outBlob = nullptr; + + if (setInputBlob) { + inBlob = make_blob_with_precision(cnnNet.getInputsInfo().begin()->second->getTensorDesc()); + inBlob->allocate(); + req.SetBlob("param", inBlob); + } else { + inBlob = req.GetBlob("param"); + } + + if (setOutputBlob) { + outBlob = make_blob_with_precision(cnnNet.getOutputsInfo().begin()->second->getTensorDesc()); + outBlob->allocate(); + req.SetBlob(cnnNet.getOutputsInfo().begin()->first, outBlob); + } else { + outBlob = req.GetBlob(cnnNet.getOutputsInfo().begin()->first); + } + + // Fill input + { + auto lockedMem = inBlob->buffer(); + auto desc = inBlob->getTensorDesc(); + + if (iPrecision == InferenceEngine::Precision::FP32) { + auto *inData = lockedMem.as(); + for (size_t i = 0; i < inBlob->size(); i++) + inData[desc.offset(i)] = i; + } else if (iPrecision == InferenceEngine::Precision::U8) { + auto *inData = lockedMem.as(); + for (size_t i = 0; i < inBlob->size(); i++) + inData[desc.offset(i)] = i; + } else { + ASSERT_TRUE(false); + } + } + + req.Infer(); + + // Check output + { + auto outMem = outBlob->cbuffer(); + auto desc = outBlob->getTensorDesc(); + + if (oPrecision == InferenceEngine::Precision::FP32) { + const auto* outData = outMem.as(); + ASSERT_EQ(inBlob->size(), outBlob->size()); + for (size_t i = 0; i < inBlob->size(); i++) + ASSERT_EQ(i, outData[desc.offset(i)]) << i; + } else if (oPrecision == InferenceEngine::Precision::U8) { + const auto* outData = outMem.as(); + ASSERT_EQ(inBlob->size(), outBlob->size()); + for (size_t i = 0; i < inBlob->size(); i++) + ASSERT_EQ(i, outData[desc.offset(i)]) << i; + } else { + ASSERT_TRUE(false); + } + } +} + } // namespace BehaviorTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/stress_tests.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/stress_tests.hpp index 52a39037f85632..834239027e094d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/stress_tests.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/stress_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/test_plugin.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/test_plugin.hpp index afb611cff58903..2dba0810bc4832 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/test_plugin.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/test_plugin.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -53,7 +53,7 @@ TEST_P(BehaviorTests, canNotLoadNetworkWithoutWeights) { InferenceEngine::Core core; auto model = FuncTestUtils::TestModel::convReluNormPoolFcModelFP32; ASSERT_THROW(core.ReadNetwork(model.model_xml_str, InferenceEngine::Blob::CPtr()), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(BehaviorTests, pluginDoesNotChangeOriginalNetwork) { @@ -83,17 +83,7 @@ TEST_P(BehaviorTestInput, canSetInputPrecisionForNetwork) { || targetDevice == CommonTestUtils::DEVICE_HDDL || targetDevice == CommonTestUtils::DEVICE_KEEMBAY) && netPrecision == InferenceEngine::Precision::I16) { - std::string msg; - InferenceEngine::StatusCode sts = InferenceEngine::StatusCode::OK; - try { - ie->LoadNetwork(cnnNet, targetDevice, configuration); - } catch (InferenceEngine::details::InferenceEngineException & ex) { - msg = ex.what(); - sts = ex.getStatus(); - } - ASSERT_EQ(InferenceEngine::StatusCode::GENERAL_ERROR, sts) << msg; - std::string refError = "Input image format I16 is not supported yet."; - ASSERT_EQ(refError, msg); + ASSERT_THROW(ie->LoadNetwork(cnnNet, targetDevice, configuration), InferenceEngine::GeneralError); } else { ASSERT_NO_THROW(ie->LoadNetwork(cnnNet, targetDevice, configuration)); } @@ -107,24 +97,14 @@ TEST_P(BehaviorTestOutput, canSetOutputPrecisionForNetwork) { InferenceEngine::OutputsDataMap output_info; InferenceEngine::CNNNetwork cnnNet(function); setOutputNetworkPrecision(cnnNet, output_info, netPrecision); - - std::string msg; - InferenceEngine::StatusCode sts = InferenceEngine::StatusCode::OK; - - try { - InferenceEngine::ExecutableNetwork exeNetwork = ie->LoadNetwork(cnnNet, targetDevice, configuration); - } catch (InferenceEngine::details::InferenceEngineException & ex) { - sts = ex.getStatus(); - msg = ex.what(); - std::cout << "LoadNetwork() threw InferenceEngineException. Status: " << sts << ", message: " << msg << std::endl; - } - if ((netPrecision == InferenceEngine::Precision::I16 || netPrecision == InferenceEngine::Precision::U8)) { if ((targetDevice == "CPU") || (targetDevice == "GPU")) { - ASSERT_EQ(InferenceEngine::StatusCode::OK, sts); + ASSERT_NO_THROW(ie->LoadNetwork(cnnNet, targetDevice, configuration)); + } else { + GTEST_SKIP(); } } else { - ASSERT_EQ(InferenceEngine::StatusCode::OK, sts); + ASSERT_NO_THROW(ie->LoadNetwork(cnnNet, targetDevice, configuration)); } } } // namespace BehaviorTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/shared/include/behavior/version.hpp b/inference-engine/tests/functional/plugin/shared/include/behavior/version.hpp index d663262822bc85..c010c4849f1475 100644 --- a/inference-engine/tests/functional/plugin/shared/include/behavior/version.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/behavior/version.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/configuration_tests/configuration_tests.hpp b/inference-engine/tests/functional/plugin/shared/include/configuration_tests/configuration_tests.hpp index 5f2b523af9e61a..89125fe4e31171 100644 --- a/inference-engine/tests/functional/plugin/shared/include/configuration_tests/configuration_tests.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/configuration_tests/configuration_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/configuration_tests/dynamic_batch.hpp b/inference-engine/tests/functional/plugin/shared/include/configuration_tests/dynamic_batch.hpp index 973ae5b6e4bad9..997ca79255a2ff 100644 --- a/inference-engine/tests/functional/plugin/shared/include/configuration_tests/dynamic_batch.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/configuration_tests/dynamic_batch.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -35,7 +35,7 @@ class DynamicBatchTest : public LayerTestsUtils::LayerTestsCommon, void SetUp() override; void Run() override; - void LoadNetwork(); + void LoadNetwork() override; void Infer() override; void Validate() override; public: diff --git a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/exec_graph_serialization.hpp b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/exec_graph_serialization.hpp index e88ab3556c485e..b94093683d35d8 100644 --- a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/exec_graph_serialization.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/exec_graph_serialization.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/keep_assing.hpp b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/keep_assing.hpp index cb054ad4fe4677..84bc620e8cb4b3 100644 --- a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/keep_assing.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/keep_assing.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/num_inputs_fusing_bin_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/num_inputs_fusing_bin_conv.hpp index e198ef69903c6e..5b6d01bd8bbabc 100644 --- a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/num_inputs_fusing_bin_conv.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/num_inputs_fusing_bin_conv.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/remove_parameter.hpp b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/remove_parameter.hpp index e2b19c5ef07611..b1763b709f0230 100644 --- a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/remove_parameter.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/remove_parameter.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/runtime_precision.hpp b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/runtime_precision.hpp index 840a0f8b40a9ae..28f55bdc66ca76 100644 --- a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/runtime_precision.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/runtime_precision.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/unique_node_names.hpp b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/unique_node_names.hpp index 353e09f87d18c7..a3c59515b56671 100644 --- a/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/unique_node_names.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/execution_graph_tests/unique_node_names.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/hetero/query_network.hpp b/inference-engine/tests/functional/plugin/shared/include/hetero/query_network.hpp index a8feb88a67d7ee..b043a068b76661 100644 --- a/inference-engine/tests/functional/plugin/shared/include/hetero/query_network.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/hetero/query_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/hetero/synthetic.hpp b/inference-engine/tests/functional/plugin/shared/include/hetero/synthetic.hpp index 59da21acfb4736..b516308826da8d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/hetero/synthetic.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/hetero/synthetic.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_nonzero.hpp b/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_nonzero.hpp index 2172697cc55361..313df13522da7d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_nonzero.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_nonzero.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_reshape_permute_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_reshape_permute_conv.hpp index 1b12cc6589d8f1..8d70e0fb913661 100644 --- a/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_reshape_permute_conv.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/import_export_tests/import_reshape_permute_conv.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/add_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/add_transformation.hpp index 7e2aac14507df1..1908d91413d962 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/add_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/add_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/clamp_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/clamp_transformation.hpp index bd2427ac0e1da4..de7b31c9558d74 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/clamp_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/clamp_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_transformation.hpp index bca64ee6963064..093944bf9565ff 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_child_and_output.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_child_and_output.hpp index 1a0af44a9639e4..4c96976db6f43c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_child_and_output.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_child_and_output.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_different_precision_on_childs.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_different_precision_on_childs.hpp index 87b173c7a86c6f..509b673aadeb34 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_different_precision_on_childs.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_different_precision_on_childs.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_intermediate_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_intermediate_transformation.hpp index 8261a5093fd2d3..c560455b1c0e9d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_intermediate_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_intermediate_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_neighbors_graph_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_neighbors_graph_transformation.hpp index e008ab805c6549..f3235572fb337c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_neighbors_graph_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_neighbors_graph_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_split_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_split_transformation.hpp index 97f7028faa7e2b..f1d973410c58b0 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_split_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/concat_with_split_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_qdq_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_qdq_transformation.hpp index 5eb91f469bf774..c3e7ea4c9e15f9 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_qdq_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_qdq_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_transformation.hpp index 61f52d4007ad04..adcabc8734ab3b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_with_incorrect_weights.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_with_incorrect_weights.hpp index fd9655fd44ebfb..1bc8197ca20e73 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_with_incorrect_weights.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/convolution_with_incorrect_weights.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/depth_to_space_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/depth_to_space_transformation.hpp index 6874278c25cbcd..d634e062e129ed 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/depth_to_space_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/depth_to_space_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_avg_pool_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_avg_pool_transformation.hpp index 8456834c68faab..d7967203b7c11e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_avg_pool_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_avg_pool_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_max_pool_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_max_pool_transformation.hpp index 3f1eab8e6d8905..3644960ef1e6a9 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_max_pool_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_max_pool_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.hpp index 3c69b34d2d6cad..be6860353612c5 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_precision_selection_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_precision_selection_transformation.hpp index 7bc7d09ad1cc7a..9b99e2f6f0983c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_precision_selection_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_precision_selection_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_transformation.hpp index 14addaf29b6843..aef99adf002073 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.hpp index 369f8e172e280e..25d56620a52c73 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fully_connected_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fully_connected_transformation.hpp index 14cb1ebcd3d7ad..4e4d56bc01c27a 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fully_connected_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fully_connected_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_convert_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_convert_transformation.hpp index fe6cebbcc369c9..cacacd09bd9ad1 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_convert_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_convert_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.hpp index d5ac61f2cc7677..4b5ce627f6e55e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_transformation.hpp index 4e6d958e8139c8..d52cd6b5a7ed60 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_fake_quantize_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.hpp index f15b5e8999e642..4d9a205c3c2758 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.hpp index 2b2f3ffb45db0d..d4e1f29f617dee 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/gemm_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/gemm_transformation.hpp index 20ac52494fc493..90eb782daac7b9 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/gemm_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/gemm_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/group_convolution_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/group_convolution_transformation.hpp index 3307efb886ca3b..1910df5e46da3f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/group_convolution_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/group_convolution_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/groupconvolution_qdq_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/groupconvolution_qdq_transformation.hpp new file mode 100644 index 00000000000000..6caa548bc72cfb --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/groupconvolution_qdq_transformation.hpp @@ -0,0 +1,72 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include "shared_test_classes/base/low_precision_transformations/layer_transformation.hpp" +#include "lpt_ngraph_functions/common/constant.hpp" +#include "lpt_ngraph_functions/common/reshape.hpp" +#include "lpt_ngraph_functions/common/dequantization_operations.hpp" +#include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" +#include "lpt_ngraph_functions/common/fake_quantize_on_weights.hpp" + +namespace LayerTestsDefinitions { + +class GroupConvolutionQDqTransformationParam { +public: + ngraph::builder::subgraph::FakeQuantizeOnDataWithConstant fakeQuantizeOnData; + ngraph::builder::subgraph::DequantizationOperations::Convert convertOnData; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnData; + + ngraph::builder::subgraph::Constant constantOnWeights; + ngraph::builder::subgraph::FakeQuantizeOnWeights fakeQuantizeOnWeights; + ngraph::builder::subgraph::DequantizationOperations::Convert convertOnWeights; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnWeights; + ngraph::builder::subgraph::Reshape reshape; + + std::string layerName; + std::string expectedKernelType; + bool multiplyAfter; +}; + +inline std::ostream& operator<<(std::ostream& out, const GroupConvolutionQDqTransformationParam& data) { + return out << "_" << + data.fakeQuantizeOnData << "_" << + data.convertOnData << "_" << + data.dequantizationOnData << "_" << + + data.constantOnWeights << "_" << + data.fakeQuantizeOnWeights << "_" << + data.convertOnWeights << "_" << + data.dequantizationOnWeights << + + data.layerName << "_" << + data.expectedKernelType << "_" << + "multiplyAfter=" << std::boolalpha << data.multiplyAfter; +} + +typedef std::tuple< + ngraph::element::Type, + ngraph::Shape, + std::string, + ngraph::pass::low_precision::LayerTransformation::Params, + GroupConvolutionQDqTransformationParam +> GroupConvolutionQDqTransformationParams; + +class GroupConvolutionQDqTransformation : + public testing::WithParamInterface, + public LayerTestsUtils::LayerTransformation { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + +protected: + void SetUp() override; + + void Run() override; +}; + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/interpolate_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/interpolate_transformation.hpp index 54a49c14a2fbf7..6a643ee2650e6d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/interpolate_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/interpolate_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_transformation.hpp index 15e849fda6f83e..65022a7bbaf5ce 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_constant_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_constant_transformation.hpp index 8e858673c8def2..ed0ef0e99671c2 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_constant_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_constant_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,6 +9,9 @@ #include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" #include "lpt_ngraph_functions/common/fake_quantize_on_weights.hpp" +#include "lpt_ngraph_functions/common/constant.hpp" +#include "lpt_ngraph_functions/common/dequantization_operations.hpp" + #include "lpt_ngraph_functions/mat_mul_function.hpp" #include "shared_test_classes/base/low_precision_transformations/layer_transformation.hpp" @@ -18,9 +21,11 @@ class MatMulWithConstantTransformationTestValues { public: ngraph::Shape inputShape; ngraph::builder::subgraph::FakeQuantizeOnDataWithConstant fqOnData; - ngraph::Shape weightsConstShape; - std::vector weightsConstValues; + + ngraph::builder::subgraph::Constant weights; ngraph::builder::subgraph::FakeQuantizeOnDataWithConstant fqOnWeights; + ngraph::builder::subgraph::DequantizationOperations deqOnWeights; + std::string layerName; std::string expectedKernelType; }; diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.hpp index 8390fe1bb484b9..71d175006ced86 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mat_mul_with_optimized_constant_fake_quantize_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_to_group_convolution_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_to_group_convolution_transformation.hpp index 8a7cc2117ba178..ee49b11d892116 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_to_group_convolution_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_to_group_convolution_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_transformation.hpp index 28af51870c352a..63d4d527f13009 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_with_one_parent_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_with_one_parent_transformation.hpp index 1af156dd7dc1c4..a2dea7f9ec6dbc 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_with_one_parent_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/multiply_with_one_parent_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mvn_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mvn_transformation.hpp index 6ae88bde8f9937..6bb4fdcaf923c5 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mvn_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/mvn_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/normalize_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/normalize_transformation.hpp index 71ca3fb466a723..8edae2282026f4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/normalize_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/normalize_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations.hpp index 9236c19e73cb5e..2c9f349c01de0d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat.hpp index 1afed3052122d4..f96ab634c12656 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.hpp index 1c3696e1c565b7..a5c4f4b1ae7798 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/prelu_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/prelu_transformation.hpp index b3c1b27c44ae67..a46ffef511ea62 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/prelu_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/prelu_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/pull_reshape_through_dequantization_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/pull_reshape_through_dequantization_transformation.hpp new file mode 100644 index 00000000000000..61292175942ec9 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/pull_reshape_through_dequantization_transformation.hpp @@ -0,0 +1,56 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include "shared_test_classes/base/low_precision_transformations/layer_transformation.hpp" +#include "lpt_ngraph_functions/common/constant.hpp" +#include "lpt_ngraph_functions/common/dequantization_operations.hpp" +#include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" +#include "lpt_ngraph_functions/common/fake_quantize_on_weights.hpp" +#include "lpt_ngraph_functions/common/reshape.hpp" +#include "lpt_ngraph_functions/common/transpose.hpp" + +namespace LayerTestsDefinitions { + +class PullReshapeThroughDequantizationTestValues { +public: + ngraph::element::Type precisionBeforeDequantization; + ngraph::builder::subgraph::FakeQuantizeOnDataWithConstant fakeQuantizeOnData; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnActivations; + ngraph::builder::subgraph::Constant weights; + ngraph::builder::subgraph::DequantizationOperations dequantizationOnWeights; + ngraph::builder::subgraph::Reshape reshape1; + ngraph::builder::subgraph::DequantizationOperations::Multiply multiply; + ngraph::builder::subgraph::Transpose transpose; + ngraph::builder::subgraph::Reshape reshape2; + ngraph::element::Type precisionAfterOperation; + ngraph::builder::subgraph::DequantizationOperations dequantizationAfter; + std::string operationName; + std::string expectedKernelType; +}; + +typedef std::tuple< + ngraph::element::Type, + ngraph::Shape, + std::string, + ngraph::pass::low_precision::LayerTransformation::Params, + ngraph::Shape, + PullReshapeThroughDequantizationTestValues> PullReshapeThroughDequantizationParams; + +class PullReshapeThroughDequantizationTransformation : + public testing::WithParamInterface, + public LayerTestsUtils::LayerTransformation { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + +protected: + void SetUp() override; + void Run() override; +}; + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/relu_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/relu_transformation.hpp index a137d2b0a69a10..064aedd1c84c65 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/relu_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/relu_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/reshape_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/reshape_transformation.hpp index 9e1e57b8acece1..47d8a1876fdcac 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/reshape_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/reshape_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/split_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/split_transformation.hpp index 83dd127b5d7598..6598bdfb59be6e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/split_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/split_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/squeeze_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/squeeze_transformation.hpp index ba0305b1366b13..b8aa50a11ce815 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/squeeze_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/squeeze_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/strided_slice_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/strided_slice_transformation.hpp index b903d694921f54..321a5bb37161ef 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/strided_slice_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/strided_slice_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.hpp index 795a67570c61bc..2a1cc62a91e4de 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_transformation.hpp index 3ea36179013d10..5743a49d88553c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/subtract_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_after_matmul_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_after_matmul_transformation.hpp index 3acce880d7096f..6c73e0198ff314 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_after_matmul_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_after_matmul_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_transformation.hpp index 39e2c1aae3abff..8701bdc2b2d1ad 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/transpose_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/unsqueeze_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/unsqueeze_transformation.hpp index ce477099e97da8..416640b06df45b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/unsqueeze_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/unsqueeze_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/variadic_split_transformation.hpp b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/variadic_split_transformation.hpp index f076d1564e5edf..44205e2c7038dc 100644 --- a/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/variadic_split_transformation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/low_precision_transformations/variadic_split_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/multi/multi_remote_blob_tests.hpp b/inference-engine/tests/functional/plugin/shared/include/multi/multi_remote_blob_tests.hpp index 13f529557080b9..f430c8f6cda6a0 100644 --- a/inference-engine/tests/functional/plugin/shared/include/multi/multi_remote_blob_tests.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/multi/multi_remote_blob_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/conv_bias_fusion.hpp b/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/conv_bias_fusion.hpp index 80e3e8dd3ef239..2dd60018e3a3af 100644 --- a/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/conv_bias_fusion.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/conv_bias_fusion.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/plugin_specific_ngraph_conversion.hpp b/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/plugin_specific_ngraph_conversion.hpp index bfe3eff73a9d7e..c76d42e884303b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/plugin_specific_ngraph_conversion.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/ngraph_conversion_tests/plugin_specific_ngraph_conversion.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/read_ir/read_ir.hpp b/inference-engine/tests/functional/plugin/shared/include/read_ir/read_ir.hpp new file mode 100644 index 00000000000000..711a3a0de86626 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/read_ir/read_ir.hpp @@ -0,0 +1,11 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/read_ir/read_ir.hpp" + +namespace LayerTestsDefinitions { +TEST_P(ReadIRTest, ReadIR) { + Run(); +} +} // namespace LayerTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/activation.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/activation.hpp index 809fd94d53d6ef..afcc5f6db69fa5 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/activation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/activation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,4 +16,8 @@ TEST_P(ActivationParamLayerTest, CompareWithRefs) { Run(); } +TEST_P(ActivationDynamicLayerTest, CompareWithRefs) { + Run(); +} + } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_norm.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_norm.hpp index 502dc5231699dc..42e73be32ee87b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_norm.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_norm.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_to_space.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_to_space.hpp index 248372ffbfda62..e30fba2a8bd555 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_to_space.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/batch_to_space.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/binary_convolution.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/binary_convolution.hpp new file mode 100644 index 00000000000000..b33c0f906589a0 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/binary_convolution.hpp @@ -0,0 +1,14 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_layer/binary_convolution.hpp" + +namespace LayerTestsDefinitions { + +TEST_P(BinaryConvolutionLayerTest, CompareWithRefs) { + Run(); +} +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/broadcast.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/broadcast.hpp index 30062c0464bd39..c1516b81dfd595 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/broadcast.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/broadcast.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/bucketize.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/bucketize.hpp index d551928e03f37e..abb5bed910374b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/bucketize.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/bucketize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/clamp.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/clamp.hpp new file mode 100644 index 00000000000000..dcbdb43eea097d --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/clamp.hpp @@ -0,0 +1,14 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_layer/clamp.hpp" + +namespace LayerTestsDefinitions { + +TEST_P(ClampLayerTest, CompareWithRefs) { + Run(); +} +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/comparison.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/comparison.hpp index c40325b0c769f8..ae37ee3aba975c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/comparison.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/comparison.hpp @@ -1,6 +1,6 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/concat.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/concat.hpp index 60603dc83185e2..2b233dc708f628 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert.hpp index 5c82419454f1d8..81e61f78234e2e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert_like.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert_like.hpp index fcefd26cf88e85..e4baa2315b9e69 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert_like.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convert_like.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution.hpp index ddde8ac0606aba..4acf53a8b0765e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution_backprop_data.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution_backprop_data.hpp index 4c71061464a581..67fb0c56efdc1b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/convolution_backprop_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder.hpp index b24f62be408b4b..d52e236aa96261 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder_seq_len.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder_seq_len.hpp index 28ff5a9ac1f7cf..2d236fd51f961c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder_seq_len.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_greedy_decoder_seq_len.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_loss.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_loss.hpp index be7276ceace510..d30fa6e6144dde 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_loss.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/ctc_loss.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/cum_sum.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/cum_sum.hpp index 8be3dfee95442d..599096b3a98292 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/cum_sum.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/cum_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/depth_to_space.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/depth_to_space.hpp index 3f63b3d06cf9b7..d8889073d7526e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/depth_to_space.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/depth_to_space.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/detection_output.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/detection_output.hpp index 1348434c8021dd..fa5f0f8214c9b4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/detection_output.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/detection_output.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/eltwise.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/eltwise.hpp index fb4e3bf3a64c20..53df26a4c8b523 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/eltwise.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/eltwise.hpp @@ -1,7 +1,7 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_offsets_sum.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_offsets_sum.hpp index 275ca8aa7fe779..7e28a4b62159f4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_offsets_sum.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_offsets_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_packed_sum.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_packed_sum.hpp index 3971bcecf3acc9..949c8bcc25a7e0 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_packed_sum.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_bag_packed_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_segments_sum.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_segments_sum.hpp index d78df0511421c8..2bdba4db1e7a4a 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_segments_sum.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/embedding_segments_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/extract_image_patches.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/extract_image_patches.hpp index 077ea6fcc55624..44fbc8ea2936e9 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/extract_image_patches.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/extract_image_patches.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/fake_quantize.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/fake_quantize.hpp index a4fa5e7666bb66..e140257c799ac0 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/fake_quantize.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/fake_quantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,6 +20,7 @@ TEST_P(FakeQuantizeLayerTest, CompareWithRefs) { size_t nIterations = 1; for (; nIterations != 0; nIterations--) { UpdateSeed(); + GenerateInputs(); Infer(); Validate(); } diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather.hpp index 91d47c046ea04a..d5aaa661dbdb1c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_nd.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_nd.hpp index f366a7f82f9fc1..4ef0b9c7dc18ff 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_nd.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_nd.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_tree.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_tree.hpp index d153f6ed9d1ace..0359a8d83012ff 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_tree.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gather_tree.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/grn.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/grn.hpp index 8ef6aef818cd8a..42dd2e89611870 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/grn.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/grn.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution.hpp index 57d3c06790ed81..c97a2491acbb6f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution_backprop_data.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution_backprop_data.hpp index aa2277ee26bd04..9df8cd792ce967 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/group_convolution_backprop_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_cell.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_cell.hpp index ba4fd51f77f4bf..42d6fc61d97b36 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_cell.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_cell.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_sequence.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_sequence.hpp index 4ecb0014a1b89a..eae1a8278c7fa1 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_sequence.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/interpolate.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/interpolate.hpp index 28a079aebe6c5f..476bd2a8ae2d0c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/interpolate.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/interpolate.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/log_softmax.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/log_softmax.hpp index 5c5459f9a0a063..bb669dd9058062 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/log_softmax.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/log_softmax.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/logical.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/logical.hpp index e4b70e5d1b10ea..b4c496cef485d9 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/logical.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/logical.hpp @@ -1,6 +1,6 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/loop.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/loop.hpp index d6514d66de76e7..6bb2133df744d4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/loop.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/loop.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,6 +20,7 @@ TEST_P(StaticShapeLoopTest, CompareWithRefs) { TEST_P(StaticShapeLoopTest, CompareWithPredefinedRefs) { SKIP_IF_CURRENT_TEST_IS_DISABLED() LoadNetwork(); + GenerateInputs(); Infer(); auto expectedOutputs = PredefinedRefs(); // use predefined refs instead of CalculateRefs function const auto& actualOutputs = GetOutputs(); diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lrn.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lrn.hpp index cacb3fbd4e7bde..88f1439ad8baa0 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lrn.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lrn.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_cell.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_cell.hpp index abf9631a2f9ca7..62b54806f57911 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_cell.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_cell.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_sequence.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_sequence.hpp index 54edabb71aa8f1..3885afd6211d6c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_sequence.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mat_mul.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mat_mul.hpp index 224738ee67223b..5f0218ba2c930b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mat_mul.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mat_mul.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/minimum_maximum.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/minimum_maximum.hpp index 1b4e0284cfd89d..56428dfe3dbd8d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/minimum_maximum.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/minimum_maximum.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include "shared_test_classes/single_layer/minimum_maximum.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mvn.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mvn.hpp index 3366dc1f9ac2f4..c0cc301e714cd3 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mvn.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/mvn.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/non_max_suppression.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/non_max_suppression.hpp index 685d47cdff1d20..c52155fc752770 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/non_max_suppression.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/non_max_suppression.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/nonzero.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/nonzero.hpp index cbf159574d6145..d81ef650db670f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/nonzero.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/nonzero.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/normalize_l2.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/normalize_l2.hpp index c7165fb0a8faf8..90bb7b4ce1b9e2 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/normalize_l2.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/normalize_l2.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/one_hot.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/one_hot.hpp index a0f0f41f6ff14f..a65d8701c207f0 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/one_hot.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/one_hot.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pad.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pad.hpp index c0e10a7f72eb55..1919387d9a6e39 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pad.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pad.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pooling.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pooling.hpp index 5c474445c8e06c..f8bd0907fa5f99 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pooling.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/pooling.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/power.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/power.hpp index 8519fdb00b8238..b2aa7f3fb7002d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/power.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/power.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include "shared_test_classes/single_layer/power.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/prior_box_clustered.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/prior_box_clustered.hpp index 5ecf883133c87b..0dc53993825f6c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/prior_box_clustered.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/prior_box_clustered.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/proposal.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/proposal.hpp index bcefaa9eb471ba..3af3bc08197fcb 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/proposal.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/proposal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/psroi_pooling.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/psroi_pooling.hpp index 8c05afcd891939..0e64128cbd1e43 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/psroi_pooling.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/psroi_pooling.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/range.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/range.hpp index 8db4dc46af25fc..f49851302f296e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/range.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reduce_ops.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reduce_ops.hpp index 07fb2739d8574a..eca1331ebf857f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reduce_ops.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reduce_ops.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/region_yolo.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/region_yolo.hpp index 7301e9487b5387..294966ad9590b1 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/region_yolo.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/region_yolo.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reorg_yolo.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reorg_yolo.hpp index 0d34dc50f6af51..c4b1bd827a2394 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reorg_yolo.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reorg_yolo.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reshape.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reshape.hpp index a9c52f761af37f..f6f738566ebeba 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reshape.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reshape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reverse_sequence.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reverse_sequence.hpp index fdebaa867465e5..acf28b28c67430 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reverse_sequence.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/reverse_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_cell.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_cell.hpp index 2eedbd7beb01ac..d9cfdb55a0a4fb 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_cell.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_cell.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_sequence.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_sequence.hpp index 8f749491967678..0493fc9fc7aa9e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_sequence.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_align.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_align.hpp index 61cfd472ace2db..71e01dfd671c9c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_align.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_align.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_pooling.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_pooling.hpp index 9b8b3030a507b7..33f2e3fb149495 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_pooling.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/roi_pooling.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_ND_update.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_ND_update.hpp index e27f06e93dfeae..61424bbb5a6ed0 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_ND_update.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_ND_update.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_elements_update.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_elements_update.hpp index 789f62f1633b02..291760b8f56c9b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_elements_update.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_elements_update.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_update.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_update.hpp index 7b6cbe492ca93d..143a040be85b5e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_update.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/scatter_update.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/select.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/select.hpp index 3980e08628cd02..29e6c2abfb747a 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/select.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/select.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shape_of.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shape_of.hpp index 52a0aeeb52d3f4..13a3e83778c726 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shape_of.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shape_of.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shuffle_channels.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shuffle_channels.hpp index 88aef0e277b934..b3da36bbe94d51 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shuffle_channels.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/shuffle_channels.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/softmax.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/softmax.hpp index 116da7025c47c8..4f13f185517ea3 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/softmax.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/softmax.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_batch.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_batch.hpp index 0bd6e080cb5802..67ddd1466b80fe 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_batch.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_batch.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_depth.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_depth.hpp index f1223659e61dd7..fdf05248bae3a3 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_depth.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/space_to_depth.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp index 830d136170bc27..c244c40747c6be 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/squeeze_unsqueeze.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/squeeze_unsqueeze.hpp index 8b9cab0c9be7aa..74dbaeb33a43b7 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/squeeze_unsqueeze.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/squeeze_unsqueeze.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/strided_slice.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/strided_slice.hpp index ee3b1721dd8263..2ca9f11a2640a8 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/strided_slice.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/strided_slice.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tensor_iterator.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tensor_iterator.hpp index d9411d4d40fd2f..a09108391792ca 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tensor_iterator.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tensor_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tile.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tile.hpp index f208727e7fd4af..0f8df4399921c6 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tile.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/tile.hpp @@ -1,5 +1,4 @@ - -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/topk.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/topk.hpp index 99167364a2efd6..29f3b3d1d94013 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/topk.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/topk.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/transpose.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/transpose.hpp index e63f44e43c8632..2218521872d1c8 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/transpose.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/transpose.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/variadic_split.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/variadic_split.hpp index 5743fccc8340b1..c4b1ce7fa2e9b9 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/variadic_split.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/variadic_split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/activation_concats_eltwise.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/activation_concats_eltwise.hpp index b4566d0a70de75..a6c13510b53265 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/activation_concats_eltwise.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/activation_concats_eltwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/basic_lstm.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/basic_lstm.hpp index 438417645cf609..2e3e8cfb9e6a86 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/basic_lstm.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/basic_lstm.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -56,6 +56,7 @@ TEST_P(Basic_LSTM_S, CompareWithRefImpl_LowLatencyTransformation) { } } IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); // Run and compare Infer(); const auto& actualOutputs = GetOutputs(); diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/broadcast_power.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/broadcast_power.hpp index 623548d4fbd887..e9256cfa078ab7 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/broadcast_power.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/broadcast_power.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/cascade_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/cascade_concat.hpp index 770c34a0a7e7fc..be1911d64a65d3 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/cascade_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/cascade_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/cascade_concat.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/clamp_fq.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/clamp_fq.hpp new file mode 100644 index 00000000000000..74840aeec6d498 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/clamp_fq.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/clamp_fq.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(ClampFakeQuantizeSubgraphTest, CompareWithRefs) { +Run(); +} + +} // namespace SubgraphTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_conv.hpp new file mode 100644 index 00000000000000..af9d15ff6bc650 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_conv.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/concat_conv.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(ConcatConvTest, CompareWithRefImpl) { + Run(); +}; + +} // namespace SubgraphTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_multi_input.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_multi_input.hpp index ffa0b0f2d23262..1cbe78719e239f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_multi_input.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_multi_input.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization.hpp index fae3aff2fd6db8..df82cde39f639f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,7 @@ TEST_P(ConcatQuantization, CompareWithRefImpl) { InferenceEngine::CNNNetwork cnnNetwork = InferenceEngine::CNNNetwork{ function }; executableNetwork = core->LoadNetwork(cnnNetwork, targetDevice); } - catch (InferenceEngine::details::InferenceEngineException & ex) { + catch (InferenceEngine::Exception & ex) { FAIL() << ex.what(); } }; diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization_during_memory_requantization.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization_during_memory_requantization.hpp index 456f4f1b740029..23813718119057 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization_during_memory_requantization.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/concat_quantization_during_memory_requantization.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/concat_quantization_during_memory_requantization.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/connect_split_concat_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/connect_split_concat_concat.hpp new file mode 100644 index 00000000000000..60ac94fe535ca7 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/connect_split_concat_concat.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/connect_split_concat_concat.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(SplitConcatConcatTest, CompareWithRefs) { + Run(); +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/constant_result.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/constant_result.hpp index 6a1f9cec05f7c5..b1b8b11e04e888 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/constant_result.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/constant_result.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/conv_eltwise_fusion.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/conv_eltwise_fusion.hpp index 078c5ef12575ac..4fa729ca42d215 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/conv_eltwise_fusion.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/conv_eltwise_fusion.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/conv_eltwise_fusion.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/convert_pad_to_group_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/convert_pad_to_group_conv.hpp index d54ed0832e7728..4920e52acb7ad5 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/convert_pad_to_group_conv.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/convert_pad_to_group_conv.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/convert_pad_to_group_conv.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/convolution_relu_sequence.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/convolution_relu_sequence.hpp new file mode 100644 index 00000000000000..53c2776d554ef7 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/convolution_relu_sequence.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/convolution_relu_sequence.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(ConvolutionReluSequenceTest, CompareWithRefImpl) { + Run(); +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/copy_before_squeeze.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/copy_before_squeeze.hpp index 610672180177a2..705fcbf1a6ff4b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/copy_before_squeeze.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/copy_before_squeeze.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/copy_before_squeeze.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/crop4d.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/crop4d.hpp index 630a51cd502de6..705237fbcf37f9 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/crop4d.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/crop4d.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include "shared_test_classes/subgraph/crop4d.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/delayed_copy_layer.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/delayed_copy_layer.hpp index 0292fbdf7eed9c..261ca06df163a7 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/delayed_copy_layer.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/delayed_copy_layer.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/delayed_copy_layer.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/eltwise_conv_eltwise.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/eltwise_conv_eltwise.hpp index 37c8606cbf9900..cc79ec153c9f94 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/eltwise_conv_eltwise.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/eltwise_conv_eltwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,6 +10,7 @@ namespace SubgraphTestsDefinitions { TEST_P(EltwiseAfterConvTest, CompareWithRefImpl) { LoadNetwork(); + GenerateInputs(); Infer(); // Create another copy of function for validation since some data will be changed by GNA plugin SetUp(); @@ -18,6 +19,7 @@ TEST_P(EltwiseAfterConvTest, CompareWithRefImpl) { TEST_P(EltwiseBeforeConvTest, CompareWithRefImpl) { LoadNetwork(); + GenerateInputs(); Infer(); // Create another copy of function for validation since some data will be changed by GNA plugin SetUp(); diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/fc_conv_fc.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/fc_conv_fc.hpp index 5d8f7b6a5e2cad..82e10ddade954e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/fc_conv_fc.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/fc_conv_fc.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/first_connect_input_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/first_connect_input_concat.hpp index d10a6817542fc3..317b818d6b26b6 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/first_connect_input_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/first_connect_input_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/fq_conv_fq_affine.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/fq_conv_fq_affine.hpp new file mode 100644 index 00000000000000..6ac7c250a5015b --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/fq_conv_fq_affine.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/fq_conv_fq_affine.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(FqConvFqAffineTest, CompareWithRefs) { + Run(); +} + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/get_output_before_activation.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/get_output_before_activation.hpp index b3df1b381d118f..ce239ee1cafbf5 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/get_output_before_activation.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/get_output_before_activation.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/get_output_before_activation.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/handling_orientation_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/handling_orientation_conv.hpp index bb265bf166da43..bbb14f9672268a 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/handling_orientation_conv.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/handling_orientation_conv.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/input_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/input_conv.hpp index d002061722a9af..8654d15d88f651 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/input_conv.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/input_conv.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/input_split_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/input_split_concat.hpp new file mode 100644 index 00000000000000..665f2526873f58 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/input_split_concat.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/input_split_concat.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(InputSplitConcatTest, CompareWithRefImpl) { + Run(); +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/matmul_squeeze_add.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/matmul_squeeze_add.hpp index 6d0708e6b5a6cc..12165c74962f0a 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/matmul_squeeze_add.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/matmul_squeeze_add.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_LSTMCell.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_LSTMCell.hpp index 522b2cc4e84a88..947f0fa1e1a515 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_LSTMCell.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_LSTMCell.hpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_eltwise_reshape_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_eltwise_reshape_concat.hpp index b0e576a91e1ae0..13b5be0852f2e5 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_eltwise_reshape_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/memory_eltwise_reshape_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/memory_eltwise_reshape_concat.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multioutput_eltwise_squeeze_eltwise.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multioutput_eltwise_squeeze_eltwise.hpp index f96f10f0fa9f50..213c758e02fd55 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multioutput_eltwise_squeeze_eltwise.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multioutput_eltwise_squeeze_eltwise.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/multioutput_eltwise_squeeze_eltwise.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_LSTMCell.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_LSTMCell.hpp index bbcba76ed958df..5dd18ff446381e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_LSTMCell.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_LSTMCell.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/multiple_LSTMCell.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_concat.hpp index 8b3556dcbbe6d1..1513de6145849c 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/multiple_concat.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_connect_split_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_connect_split_concat.hpp new file mode 100644 index 00000000000000..d531ce695f961a --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiple_connect_split_concat.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/multiple_connect_split_concat.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(MultipleConnectSplitConcatTest, CompareWithRefs) { + Run(); +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiply_add.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiply_add.hpp index e52822343dc811..c35155f4fb2a10 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiply_add.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/multiply_add.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include "shared_test_classes/subgraph/multiply_add.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/negative_memory_layer_offset.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/negative_memory_layer_offset.hpp index 5a19b188584a9b..fc0207d385f923 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/negative_memory_layer_offset.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/negative_memory_layer_offset.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/negative_memory_layer_offset.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_result.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_result.hpp index 7df683396ce794..0b3ff97b6a2754 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_result.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_result.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_shapeof_result.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_shapeof_result.hpp index 5770bbc4490f67..e8d2c7dc624157 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_shapeof_result.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/parameter_shapeof_result.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/perm_conv_perm_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/perm_conv_perm_concat.hpp index 47486921dc8900..c8a96b80229dac 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/perm_conv_perm_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/perm_conv_perm_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_convolution_backprop_data.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_convolution_backprop_data.hpp index bf6ff273e8879c..d5ee7dc76d7ef2 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_convolution_backprop_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution.hpp index 13d21c4a83c5e2..66f0e290085036 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution_backprop_data.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution_backprop_data.hpp index 445d51356167e3..0dcc01ef302204 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_group_convolution_backprop_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_mat_mul.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_mat_mul.hpp index 9454633b5d0093..d26e3005e6b1f5 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_mat_mul.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/quantized_mat_mul.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/range_add.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/range_add.hpp index a299768086d09a..667b73e4511a99 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/range_add.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/range_add.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/relu_shape_of.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/relu_shape_of.hpp index b9c1ef41944bee..5aa55bf2621661 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/relu_shape_of.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/relu_shape_of.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_conv_permute_reshape_act.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_conv_permute_reshape_act.hpp index 6b52414c5c7049..3fba2683c4a735 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_conv_permute_reshape_act.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_conv_permute_reshape_act.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_reshape.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_reshape.hpp index 2c86bd8d6b1431..dc49ca230efc81 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_reshape.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_permute_reshape.hpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_squeeze_reshape_relu.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_squeeze_reshape_relu.hpp index 8e158fd158d9c6..7a21b1738c9674 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_squeeze_reshape_relu.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/reshape_squeeze_reshape_relu.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/reshape_squeeze_reshape_relu.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift.hpp index 137668bf9a6266..6bc55ce843c1ed 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include "shared_test_classes/subgraph/scaleshift.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift_conv_scaleshift.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift_conv_scaleshift.hpp index bc1d8ce9ffda38..47d28b0a4d172d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift_conv_scaleshift.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/scaleshift_conv_scaleshift.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,6 +10,7 @@ namespace SubgraphTestsDefinitions { TEST_P(ScaleShiftAfterConvTest, CompareWithRefImpl) { LoadNetwork(); + GenerateInputs(); Infer(); // Create another copy of function for validation since some data will be changed by GNA plugin SetUp(); @@ -18,6 +19,7 @@ TEST_P(ScaleShiftAfterConvTest, CompareWithRefImpl) { TEST_P(ScaleShiftBeforeConvTest, CompareWithRefImpl) { LoadNetwork(); + GenerateInputs(); Infer(); // Create another copy of function for validation since some data will be changed by GNA plugin SetUp(); diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/softsign.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/softsign.hpp index 999d28147a9b00..830591b24fadd4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/softsign.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/softsign.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_concat_memory.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_concat_memory.hpp index 90809fa4f7c935..f634a439114346 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_concat_memory.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_concat_memory.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_conv.hpp new file mode 100644 index 00000000000000..5466911a1e4b3d --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_conv.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/split_conv.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(SplitConvTest, CompareWithRefImpl) { + Run(); +}; + +} // namespace SubgraphTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_conv_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_conv_concat.hpp index b8d79cb78fef7e..801ec46c6ce91e 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_conv_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_conv_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_relu.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_relu.hpp index 485095913fe5f0..421db8e5baef2d 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_relu.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_relu.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include "shared_test_classes/subgraph/split_relu.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_trivial_permute_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_trivial_permute_concat.hpp index 3a314261b2bb26..8fe6b662b67c4b 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_trivial_permute_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/split_trivial_permute_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "shared_test_classes/subgraph/split_trivial_permute_concat.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/stridedslice_conv.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/stridedslice_conv.hpp new file mode 100644 index 00000000000000..644ad867a7fc0a --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/stridedslice_conv.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/stridedslice_conv.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(SliceConvTest, CompareWithRefImpl) { + Run(); +}; + +} // namespace SubgraphTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/tensor_names.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/tensor_names.hpp index d545e47705e445..37a6b7e02f5ed4 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/tensor_names.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/tensor_names.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,13 +23,11 @@ TEST_P(TensorNamesTest, CheckTensorNames) { outNames.emplace(out.first); for (const auto& param : function->get_parameters()) { - ASSERT_TRUE(inNames.count(cnnNetwork.getOVNameForOperation(param->get_friendly_name()))); for (const auto& name : param->get_output_tensor(0).get_names()) ASSERT_TRUE(inNames.count(cnnNetwork.getOVNameForTensor(name))); } for (const auto& result : function->get_results()) { - ASSERT_TRUE(outNames.count(cnnNetwork.getOVNameForOperation(result->get_friendly_name()))); for (const auto& name : result->input_value(0).get_tensor().get_names()) ASSERT_TRUE(outNames.count(cnnNetwork.getOVNameForTensor(name))); } @@ -38,13 +36,11 @@ TEST_P(TensorNamesTest, CheckTensorNames) { inferRequest = executableNetwork.CreateInferRequest(); for (const auto& param : function->get_parameters()) { - ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForOperation(param->get_friendly_name()))); for (const auto& name : param->get_output_tensor(0).get_names()) ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForTensor(name))); } for (const auto& result : function->get_results()) { - ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForOperation(result->get_friendly_name()))); for (const auto& name : result->get_input_tensor(0).get_names()) { ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForTensor(name))); } @@ -66,14 +62,11 @@ TEST_P(TensorNamesTest, CheckTensorNamesAfterClone) { outNames.emplace(out.first); for (const auto& param : function->get_parameters()) { - ASSERT_TRUE(inNames.count(clonedNet.getOVNameForOperation(param->get_friendly_name()))); for (const auto& name : param->get_output_tensor(0).get_names()) ASSERT_TRUE(inNames.count(clonedNet.getOVNameForTensor(name))); } for (const auto& result : function->get_results()) { - ASSERT_TRUE(outNames.count(clonedNet.getOVNameForOperation(result->get_friendly_name()))); - for (const auto& name : result->get_input_tensor(0).get_names()) { ASSERT_TRUE(outNames.count(clonedNet.getOVNameForTensor(name))); } @@ -83,13 +76,11 @@ TEST_P(TensorNamesTest, CheckTensorNamesAfterClone) { inferRequest = executableNetwork.CreateInferRequest(); for (const auto& param : function->get_parameters()) { - ASSERT_NO_THROW(inferRequest.GetBlob(clonedNet.getOVNameForOperation(param->get_friendly_name()))); for (const auto& name : param->get_output_tensor(0).get_names()) ASSERT_NO_THROW(inferRequest.GetBlob(clonedNet.getOVNameForTensor(name))); } for (const auto& result : function->get_results()) { - ASSERT_NO_THROW(inferRequest.GetBlob(clonedNet.getOVNameForOperation(result->get_friendly_name()))); for (const auto& name : result->input_value(0).get_tensor().get_names()) ASSERT_NO_THROW(inferRequest.GetBlob(clonedNet.getOVNameForTensor(name))); } @@ -114,9 +105,8 @@ TEST_P(TensorNamesTest, CheckAddOutput) { ASSERT_EQ(1, function->get_results().size()); // Check that relu_prev doesn't exist in output and input maps - ASSERT_THROW(cnnNetwork.getOVNameForOperation("relu_prev"), InferenceEngine::NotFound); for (const std::string& tensor_name : {"relu,prev_t", "identity_prev_t"}) { - ASSERT_THROW(cnnNetwork.getOVNameForOperation(tensor_name), InferenceEngine::NotFound); + ASSERT_THROW(cnnNetwork.getOVNameForTensor(tensor_name), InferenceEngine::NotFound); } // Add relu_prev as output @@ -136,11 +126,9 @@ TEST_P(TensorNamesTest, CheckAddOutput) { ASSERT_EQ(2, function->get_results().size()); // Check that relu_prev exists in output map - ASSERT_FALSE(inNames.count(cnnNetwork.getOVNameForOperation("relu_prev"))); for (const std::string& tensor_name : {"relu,prev_t", "identity_prev_t"}) { ASSERT_FALSE(inNames.count(cnnNetwork.getOVNameForTensor(tensor_name))); } - ASSERT_TRUE(outNames.count(cnnNetwork.getOVNameForOperation("relu_prev"))); for (const std::string& tensor_name : {"relu,prev_t", "identity_prev_t"}) { ASSERT_TRUE(outNames.count(cnnNetwork.getOVNameForTensor(tensor_name))); } @@ -149,13 +137,11 @@ TEST_P(TensorNamesTest, CheckAddOutput) { inferRequest = executableNetwork.CreateInferRequest(); for (const auto& param : cnnNetwork.getFunction()->get_parameters()) { - ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForOperation(param->get_friendly_name()))); for (const auto& name : param->get_output_tensor(0).get_names()) ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForTensor(name))); } for (const auto& result : cnnNetwork.getFunction()->get_results()) { - ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForOperation(result->get_friendly_name()))); for (const auto& name : result->get_input_tensor(0).get_names()) { ASSERT_NO_THROW(inferRequest.GetBlob(cnnNetwork.getOVNameForTensor(name))); } diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/trivial_concat.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/trivial_concat.hpp index 6b2e71d33f24aa..2b494349ec360f 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/trivial_concat.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/trivial_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/two_fake_quantize_to_fullyconnected.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/two_fake_quantize_to_fullyconnected.hpp index 9261422870442a..20ee833a35cd56 100644 --- a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/two_fake_quantize_to_fullyconnected.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/two_fake_quantize_to_fullyconnected.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/variadic_split_pad.hpp b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/variadic_split_pad.hpp new file mode 100644 index 00000000000000..a36a11207887f9 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/include/subgraph_tests/variadic_split_pad.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/subgraph/variadic_split_pad.hpp" + +namespace SubgraphTestsDefinitions { + +TEST_P(VariadicSplitPad, CompareWithRefs){ + Run(); +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/src/base/import_export_base/import_export_base.cpp b/inference-engine/tests/functional/plugin/shared/src/base/import_export_base/import_export_base.cpp index d807d80eaa31a8..0db7264cb74410 100644 --- a/inference-engine/tests/functional/plugin/shared/src/base/import_export_base/import_export_base.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/base/import_export_base/import_export_base.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,8 @@ std::string ImportNetworkTestBase::getTestCaseName(testing::TestParamInfo exportConfiguration; std::map importConfiguration; - std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration) = obj.param; + std::string appHeader; + std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration, appHeader) = obj.param; std::ostringstream result; result << "netPRC=" << netPrecision.name() << "_"; @@ -24,12 +25,19 @@ std::string ImportNetworkTestBase::getTestCaseName(testing::TestParamInfo +#include +#include + +#include "behavior/caching_tests.hpp" +#include "common_test_utils/file_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/subgraph_builders.hpp" + +using namespace InferenceEngine::details; +using namespace InferenceEngine; +using namespace ::testing; +using namespace std::placeholders; + +#define GTEST_COUT std::cout << "[ ] [ INFO ] " + +namespace LayerTestsDefinitions { + +static std::shared_ptr simple_function_multiply(ngraph::element::Type type, size_t batchSize) { + // Create Parameter operation with static shape + auto data = std::make_shared(type, ngraph::Shape{batchSize, 2}); + data->set_friendly_name("Parameter"); + + auto constant = ngraph::opset6::Constant::create(type, ngraph::Shape{1}, {2}); + constant->set_friendly_name("constant"); + auto mul = std::make_shared(data, constant); + mul->set_friendly_name("mul"); + + // Create Result operation + auto res = std::make_shared(mul); + res->set_friendly_name("res"); + + // Create nGraph function + auto func = std::make_shared(ngraph::ResultVector{res}, ngraph::ParameterVector{data}); + func->set_friendly_name("function"); + return func; +} + +static std::shared_ptr simple_function_relu(ngraph::element::Type type, size_t batchSize) { + // Create Parameter operation with static shape + auto data = std::make_shared(type, ngraph::Shape{batchSize, 2}); + data->set_friendly_name("Parameter"); + + auto relu = std::make_shared(data); + relu->set_friendly_name("relu"); + + // Create Result operation + auto res = std::make_shared(relu); + res->set_friendly_name("res"); + + // Create nGraph function + auto func = std::make_shared(ngraph::ResultVector{res}, ngraph::ParameterVector{data}); + func->set_friendly_name("function"); + return func; +} + +std::vector LoadNetworkCacheTestBase::getStandardFunctions() { + // Wrapper of most part of available builder functions + using ngraphFunctionIS = std::function(std::vector inputShape, + ngraph::element::Type_t type)>; + auto inputShapeWrapper = [](ngraphFunctionIS fun, std::vector inputShape) { + return [fun, inputShape](ngraph::element::Type type, std::size_t batchSize) { + auto shape = inputShape; + shape[0] = batchSize; + return fun(shape, type); + }; + }; + + std::vector res; + res.push_back(nGraphFunctionWithName { simple_function_multiply, "SimpleFunctionMultiply"}); + res.push_back(nGraphFunctionWithName { simple_function_relu, "SimpleFunctionRelu"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeConvPoolRelu, {1, 1, 32, 32}), + "ConvPoolRelu"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeSplitConvConcat, {1, 4, 20, 20}), + "SplitConvConcat"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeKSOFunction, {1, 4, 20, 20}), + "KSOFunction"}); + res.push_back(nGraphFunctionWithName { [](ngraph::element::Type type, size_t batchSize) { + return ngraph::builder::subgraph::makeTIwithLSTMcell(type, batchSize); + }, "TIwithLSTMcell1"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeSingleConv, {1, 3, 24, 24}), + "SingleConv"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::make2InputSubtract, {1, 3, 24, 24}), + "2InputSubtract"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeNestedSplitConvConcat, {1, 4, 20, 20}), + "NestedSplitConvConcat"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeSplitConvConcatInputInBranch, {1, 4, 20, 20}), + "SplitConvConcatInputInBranch"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeSplitConvConcatNestedInBranch, {1, 4, 20, 20}), + "SplitConvConcatNestedInBranch"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeSplitConvConcatNestedInBranchNestedOut, {1, 4, 20, 20}), + "SplitConvConcatNestedInBranchNestedOut"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeConvBias, {1, 3, 24, 24}), + "ConvBias"}); + res.push_back(nGraphFunctionWithName { + inputShapeWrapper(ngraph::builder::subgraph::makeReadConcatSplitAssign, {1, 1, 2, 4}), + "ReadConcatSplitAssign"}); + + return res; +} + +bool LoadNetworkCacheTestBase::importExportSupported(InferenceEngine::Core& ie) const { + std::vector supportedMetricKeys = ie.GetMetric(targetDevice, METRIC_KEY(SUPPORTED_METRICS)); + auto it = std::find(supportedMetricKeys.begin(), supportedMetricKeys.end(), + METRIC_KEY(IMPORT_EXPORT_SUPPORT)); + bool supported = (it != supportedMetricKeys.end()) && + ie.GetMetric(targetDevice, METRIC_KEY(IMPORT_EXPORT_SUPPORT)); + return supported; +} + +std::string LoadNetworkCacheTestBase::getTestCaseName(testing::TestParamInfo obj) { + auto param = obj.param; + auto funcName = std::get<1>(std::get<0>(param)); + auto precision = std::get<1>(param); + auto batchSize = std::get<2>(param); + auto deviceName = std::get<3>(param); + return funcName + "_" + ngraph::element::Type(precision).get_type_name() + "_batch" + std::to_string(batchSize) + "_" + deviceName; +} + +void LoadNetworkCacheTestBase::SetUp() { + nGraphFunctionWithName funcPair; + std::tie(funcPair, m_precision, m_batchSize, targetDevice) = GetParam(); + auto fGen = std::get<0>(funcPair); + m_functionName = std::get<1>(funcPair); + try { + function = fGen(m_precision, m_batchSize); + } catch (...) { + SKIP(); + } + + std::stringstream ss; + auto hash = std::hash()(GetTestName()); + ss << "testCache_" << std::to_string(hash) << "_" << std::this_thread::get_id() << "_" << GetTimestamp(); + m_cacheFolderName = ss.str(); + core->SetConfig({{CONFIG_KEY(CACHE_DIR), {}}}); +} + +void LoadNetworkCacheTestBase::TearDown() { + CommonTestUtils::removeFilesWithExt(m_cacheFolderName, "blob"); + std::remove(m_cacheFolderName.c_str()); + core->SetConfig({{CONFIG_KEY(CACHE_DIR), {}}}); +} + +void LoadNetworkCacheTestBase::Run() { + SKIP_IF_CURRENT_TEST_IS_DISABLED() + auto compareOutputs = [&](const std::vector& expected, + const std::vector& actual) { + ASSERT_EQ(expected.size(), actual.size()); + for (size_t i = 0; i < expected.size(); i++) { + const auto& expPtr = expected[i]; + const auto& actPtr = actual[i]; + ASSERT_NO_THROW(Compare(expPtr, actPtr)); + } + }; + if (!function) { + GTEST_COUT << "Can't create function " << m_functionName << " with precision " << m_precision.get_type_name() << std::endl; + SKIP(); + } + if (!importExportSupported(*core)) { + GTEST_COUT << "Plugin doesn't support import and export - skipping test" << std::endl; + SKIP(); + } + cnnNetwork = CNNNetwork{function}; + ConfigureNetwork(); + try { + executableNetwork = core->LoadNetwork(cnnNetwork, targetDevice, configuration); + GenerateInputs(); + Infer(); + } catch (InferenceEngineException &ex) { + GTEST_COUT << "Can't loadNetwork without cache for " << m_functionName << " with precision " << m_precision.get_type_name() << std::endl; + GTEST_COUT << "Exception [" << ex.what() << "]" << std::endl; + SKIP(); + } catch (...) { + GTEST_COUT << "Can't loadNetwork without cache for " << m_functionName << " with precision " << m_precision.get_type_name() << std::endl; + SKIP(); // skip caching test if such network is not supported by device at all + } + auto originalOutputs = GetOutputs(); + + for (int i = 0; i < 2; i++) { + // Step 2: Load with cache. Export or import shall not throw + executableNetwork = {}; // Destroy network object + { + core->SetConfig({{CONFIG_KEY(CACHE_DIR), m_cacheFolderName}}); + ASSERT_NO_THROW(executableNetwork = core->LoadNetwork(cnnNetwork, targetDevice, configuration)); + GenerateInputs(); + ASSERT_NO_THROW(Infer()); + } + // cache is created and reused + ASSERT_EQ(CommonTestUtils::listFilesWithExt(m_cacheFolderName, "blob").size(), 1); + compareOutputs(originalOutputs, GetOutputs()); + } +} + +TEST_P(LoadNetworkCacheTestBase, CompareWithRefImpl) { + Run(); +} + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/src/behavior/invalid_cases/proposal.cpp b/inference-engine/tests/functional/plugin/shared/src/behavior/invalid_cases/proposal.cpp index 2292a8b6a293a9..a3484332add0a7 100644 --- a/inference-engine/tests/functional/plugin/shared/src/behavior/invalid_cases/proposal.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/behavior/invalid_cases/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -95,9 +95,10 @@ void ProposalBehTest::SetUp() { void ProposalBehTest::Run() { LoadNetwork(); + GenerateInputs(); Infer(); } TEST_P(ProposalBehTest, CompareWithRefs) { - ASSERT_THROW(Run(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(Run(), InferenceEngine::Exception); } diff --git a/inference-engine/tests/functional/plugin/shared/src/behavior/layout.cpp b/inference-engine/tests/functional/plugin/shared/src/behavior/layout.cpp index 1442012cc6f5b8..5b4abea77b218e 100644 --- a/inference-engine/tests/functional/plugin/shared/src/behavior/layout.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/behavior/layout.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -105,7 +105,7 @@ TEST_P(LayoutTest, NetWithLayout) { ASSERT_EQ(inputBlob->getTensorDesc().getLayout(), layout); } else { ASSERT_THROW(cnnNet.getInputsInfo().begin()->second->setLayout(layout), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } } } // namespace BehaviorTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/src/behavior/memory_states.cpp b/inference-engine/tests/functional/plugin/shared/src/behavior/memory_states.cpp index 7e5a816faaa9e7..5b002da7dcd857 100644 --- a/inference-engine/tests/functional/plugin/shared/src/behavior/memory_states.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/behavior/memory_states.cpp @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 // - #include #include #include "behavior/memory_states.hpp" diff --git a/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob.cpp b/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob.cpp index dbc5ce5c1f71d2..fb20d01fefa8fe 100644 --- a/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ std::ostream& operator<<(std::ostream & os, setType type) { os << "BOTH"; break; default: - THROW_IE_EXCEPTION << "Not supported type for SetBlob"; + IE_THROW() << "Not supported type for SetBlob"; } return os; } @@ -53,7 +53,7 @@ inline void fillBlob(Blob::Ptr &blob) { CASE(InferenceEngine::Precision::BOOL) #undef CASE default: - THROW_IE_EXCEPTION << "Can't fill blob with precision: " << blob->getTensorDesc().getPrecision(); + IE_THROW() << "Can't fill blob with precision: " << blob->getTensorDesc().getPrecision(); } } diff --git a/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob_of_kind.cpp b/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob_of_kind.cpp index 962b1fab7b5f72..34e1b475245966 100644 --- a/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob_of_kind.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/behavior/set_blob_of_kind.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -52,7 +52,7 @@ bool isBlobKindSupported(const std::shared_ptr& core, case FuncTestUtils::BlobKind::BatchOfSimple: return isBatchedBlobSupported(core, targetDevice); default: - THROW_IE_EXCEPTION << "Test does not support the blob kind"; + IE_THROW() << "Test does not support the blob kind"; } } @@ -66,6 +66,7 @@ void SetBlobOfKindTest::Run() { SKIP_IF_CURRENT_TEST_IS_DISABLED() LoadNetwork(); + GenerateInputs(); if (isBlobKindSupported(core, targetDevice, blobKind)) { Infer(); @@ -81,7 +82,7 @@ void SetBlobOfKindTest::ExpectSetBlobThrow() { const auto &info = input.second; auto blob = GenerateInput(*info); EXPECT_THROW(inferRequest.SetBlob(info->name(), blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } } diff --git a/inference-engine/tests/functional/plugin/shared/src/behavior/stress_tests.cpp b/inference-engine/tests/functional/plugin/shared/src/behavior/stress_tests.cpp index f39f6ec63b00d9..31e07b5c962edf 100644 --- a/inference-engine/tests/functional/plugin/shared/src/behavior/stress_tests.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/behavior/stress_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -42,7 +42,9 @@ TEST_P(MultipleAllocations, InferWorksCorrectAfterAllocations) { LoadNetwork(); std::cout << "Infer(): " << j << std::flush; - + if (j == 0) { + GenerateInputs(); + } Infer(); Validate(); } diff --git a/inference-engine/tests/functional/plugin/shared/src/configuration_tests/configuration_tests.cpp b/inference-engine/tests/functional/plugin/shared/src/configuration_tests/configuration_tests.cpp index 22724ef38d0829..5acfa44471c289 100644 --- a/inference-engine/tests/functional/plugin/shared/src/configuration_tests/configuration_tests.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/configuration_tests/configuration_tests.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/configuration_tests/dynamic_batch.cpp b/inference-engine/tests/functional/plugin/shared/src/configuration_tests/dynamic_batch.cpp index f1144bab8af0d5..43c97545842919 100644 --- a/inference-engine/tests/functional/plugin/shared/src/configuration_tests/dynamic_batch.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/configuration_tests/dynamic_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -154,6 +154,7 @@ namespace ConfigurationTestsDefinitions { void DynamicBatchTest::Run() { SKIP_IF_CURRENT_TEST_IS_DISABLED(); LoadNetwork(); + GenerateInputs(); Infer(); Validate(); } diff --git a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/exec_graph_serialization.cpp b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/exec_graph_serialization.cpp index 46c25e74fffdc0..d31850c4ecd25d 100644 --- a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/exec_graph_serialization.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/exec_graph_serialization.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -255,7 +255,7 @@ void ExecGraphSerializationTest::SetUp() { const std::string BIN_EXT = ".bin"; std::string test_name = ::testing::UnitTest::GetInstance()->current_test_info()->name(); - std::remove(test_name.begin(), test_name.end(), '/'); + test_name.erase(std::remove(test_name.begin(), test_name.end(), '/'), test_name.end()); test_name += getTimestamp(); m_out_xml_path = test_name + XML_EXT; diff --git a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/keep_assing.cpp b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/keep_assing.cpp index fac3e1ea923997..5340403b871cfb 100644 --- a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/keep_assing.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/keep_assing.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/network_serializer.cpp b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/network_serializer.cpp index a6690475f7075f..d68ea04d7dcc59 100644 --- a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/network_serializer.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/network_serializer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,7 +44,7 @@ std::vector TopologicalSort(const InferenceEngine: for (const auto & input : node->insData) { auto locked_input = input.lock(); if (!locked_input) { - THROW_IE_EXCEPTION << "insData for " << node->name << " is not valid."; + IE_THROW() << "insData for " << node->name << " is not valid."; } if (auto next_node = getCreatorLayer(locked_input).lock()) { if (!used.count(next_node->name)) { diff --git a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/num_inputs_fusing_bin_conv.cpp b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/num_inputs_fusing_bin_conv.cpp index 5881758e8a15de..4c50b8e960bc4f 100644 --- a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/num_inputs_fusing_bin_conv.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/num_inputs_fusing_bin_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/remove_parameter.cpp b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/remove_parameter.cpp index 3f23df27a1833e..a8fd552809c89a 100644 --- a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/remove_parameter.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/remove_parameter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/runtime_precision.cpp b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/runtime_precision.cpp index 816002ceaa59dc..3802d27a9b48f9 100644 --- a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/runtime_precision.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/runtime_precision.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/unique_node_names.cpp b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/unique_node_names.cpp index ad3d3aecbfa94a..ebd8ae366b55bd 100644 --- a/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/unique_node_names.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/execution_graph_tests/unique_node_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/hetero/query_network.cpp b/inference-engine/tests/functional/plugin/shared/src/hetero/query_network.cpp index cbae179dc95f4e..a914f3a66489cc 100644 --- a/inference-engine/tests/functional/plugin/shared/src/hetero/query_network.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/hetero/query_network.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/hetero/synthetic.cpp b/inference-engine/tests/functional/plugin/shared/src/hetero/synthetic.cpp index 73e2731f305e30..b134d27a8118f5 100644 --- a/inference-engine/tests/functional/plugin/shared/src/hetero/synthetic.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/hetero/synthetic.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -90,7 +89,7 @@ void HeteroSyntheticTest::SetUp() { bool registred = true; try { PluginCache::get().ie()->RegisterPlugin(pluginParameter._location, pluginParameter._name); - } catch (InferenceEngine::details::InferenceEngineException& ex) { + } catch (InferenceEngine::Exception& ex) { if (std::string{ex.what()}.find("Device with \"" + pluginParameter._name + "\" is already registered in the InferenceEngine") == std::string::npos) { diff --git a/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_nonzero.cpp b/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_nonzero.cpp index 9ea9634dbd9d5d..44ed3eff75c888 100644 --- a/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_nonzero.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_nonzero.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,7 @@ namespace LayerTestsDefinitions { void ImportNonZero::SetUp() { InferenceEngine::Precision netPrecision; - std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration) = this->GetParam(); + std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration, applicationHeader) = this->GetParam(); const auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); const auto parameter = std::make_shared(ngPrc, ngraph::Shape{1000}); diff --git a/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_reshape_permute_conv.cpp b/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_reshape_permute_conv.cpp index 8fa48a4bdc276b..5a6cb6b6ba6a99 100644 --- a/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_reshape_permute_conv.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/import_export_tests/import_reshape_permute_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -10,7 +10,7 @@ namespace LayerTestsDefinitions { void ImportReshapePermuteConv::SetUp() { InferenceEngine::Precision netPrecision; - std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration) = this->GetParam(); + std::tie(netPrecision, targetDevice, exportConfiguration, importConfiguration, applicationHeader) = this->GetParam(); auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); auto params = ngraph::builder::makeParams(ngPrc, { {1, 336} }); diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/add_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/add_transformation.cpp index bfb9e412939b7d..cffa033cc1b528 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/add_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/clamp_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/clamp_transformation.cpp index 3a450a2462a594..7c0a07aeb0dfc3 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/clamp_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/clamp_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_transformation.cpp index 03e95ab46b9be4..f6dc2452a22218 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_child_and_output.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_child_and_output.cpp index f8a9c399df3a95..0d3bf4acfef6bd 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_child_and_output.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_child_and_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_different_precision_on_childs.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_different_precision_on_childs.cpp index 0c8a4fd7596241..a7da85ed9b6e11 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_different_precision_on_childs.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_different_precision_on_childs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_intermediate_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_intermediate_transformation.cpp index ef51a937680eec..2bf15a14c32158 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_intermediate_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_intermediate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp index f100a544335bd4..d5d0d21a6db910 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_neighbors_graph_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,7 +34,7 @@ InferenceEngine::Blob::Ptr ConcatWithNeighborsGraphTransformation::GenerateInput std::tie(netPrecision, inputShape, targetDevice, params) = this->GetParam(); if ((info.name() != "input1") && (info.name() != "input2") && (info.name() != "input3")) { - THROW_IE_EXCEPTION << "unexpected input name " << info.name(); + IE_THROW() << "unexpected input name " << info.name(); } const float k = (info.name() == "input1") ? 1.f : (info.name() == "input2" ? 2.f : 3.f); return LayerTransformation::GenerateInput(params.precisionsOnActivations[0], info.getTensorDesc(), k); diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_split_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_split_transformation.cpp index 53199107bfcb30..fca261f6b4f54a 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/concat_with_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_qdq_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_qdq_transformation.cpp index a4780649188737..3f7d9e0ea31577 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_qdq_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_qdq_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_transformation.cpp index 6d746e9846153f..b2dcd7205c5963 100755 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_with_incorrect_weights.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_with_incorrect_weights.cpp index 36b666c4f78b9a..63087b13a43eb4 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_with_incorrect_weights.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/convolution_with_incorrect_weights.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/depth_to_space_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/depth_to_space_transformation.cpp index 4b78b5cd8bd1a9..7c4fb839ffa0d2 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/depth_to_space_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/depth_to_space_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -62,7 +62,7 @@ void DepthToSpaceTransformation::SetUp() { std::tie(precision, inputShape, targetDevice, mode, blockSize) = this->GetParam(); if (inputShape.size() != 4ul) { - THROW_IE_EXCEPTION << "not supported input shape size " << inputShape.size(); + IE_THROW() << "not supported input shape size " << inputShape.size(); } function = ngraph::builder::subgraph::DepthToSpaceFunction::getOriginal(precision, inputShape, mode, blockSize); diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp index 0473aa1bf16101..368a0265dff8d3 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_avg_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp index 4417c217ad5a6d..eda5c2911266cf 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_max_pool_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp index c097755ba95a96..6c1d90e537d3b3 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_and_two_output_branches_with_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp index c61efbfc871c3f..bb2acd8bd64acf 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_precision_selection_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_transformation.cpp index d9eebb44f9891e..bd65adae44bdfc 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp index 3e005334d709b7..49823d5335ce0c 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fake_quantize_with_dq_not_optimal_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fully_connected_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fully_connected_transformation.cpp index b8bcfd80c8f130..7c2d26737cc785 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fully_connected_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fully_connected_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_convert_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_convert_transformation.cpp index 72b58ce078832f..84ddf440f3228f 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_convert_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_convert_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp index aa44e25e0904df..9997779d9441f2 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_and_scale_shift_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_transformation.cpp index b57a9ee5b10d78..c88f04cf02b3be 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp index 1aaaaeb830dab3..fea144ece1f1d9 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_multiply_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp index e58af683a55877..e7f91d0fefea11 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/fuse_subtract_to_fake_quantize_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp index d96c20520ffece..aabc93f115a6bb 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/group_convolution_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/group_convolution_transformation.cpp index 540ed38b63f103..f56c9743defdf2 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/group_convolution_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/group_convolution_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/groupconvolution_qdq_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/groupconvolution_qdq_transformation.cpp new file mode 100644 index 00000000000000..454581e8b8ac07 --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/groupconvolution_qdq_transformation.cpp @@ -0,0 +1,70 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "low_precision_transformations/groupconvolution_qdq_transformation.hpp" + +#include +#include +#include +#include + +#include + +#include "common_test_utils/common_utils.hpp" +#include "functional_test_utils/plugin_cache.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "functional_test_utils/blob_utils.hpp" +#include "ngraph_functions/pass/convert_prc.hpp" +#include "lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp" + +namespace LayerTestsDefinitions { + +std::string GroupConvolutionQDqTransformation::getTestCaseName(testing::TestParamInfo obj) { + ngraph::element::Type netPrecision; + ngraph::Shape inputShape; + std::string targetDevice; + ngraph::pass::low_precision::LayerTransformation::Params params; + GroupConvolutionQDqTransformationParam param; + std::tie(netPrecision, inputShape, targetDevice, params, param) = obj.param; + + std::ostringstream result; + result << getTestCaseNameByParams(netPrecision, inputShape, targetDevice, params) << param; + return result.str(); +} + +void GroupConvolutionQDqTransformation::SetUp() { + // threshold = 0.1f; + + ngraph::element::Type netPrecision; + ngraph::Shape inputShape; + ngraph::pass::low_precision::LayerTransformation::Params params; + GroupConvolutionQDqTransformationParam param; + std::tie(netPrecision, inputShape, targetDevice, params, param) = this->GetParam(); + + function = ngraph::builder::subgraph::FakeQuantizeAndConvolutionFunction::get( + netPrecision, + inputShape, + param.fakeQuantizeOnData, + param.convertOnData, + param.dequantizationOnData, + param.constantOnWeights, + param.fakeQuantizeOnWeights, + param.convertOnWeights, + param.dequantizationOnWeights, + {}, {}, {}, param.reshape, {}, "GroupConvolution", param.multiplyAfter); +} + +void GroupConvolutionQDqTransformation::Run() { + LayerTestsCommon::Run(); + + const auto params = std::get<4>(GetParam()); + const auto actualType = getRuntimePrecision(params.layerName); + EXPECT_EQ(actualType, params.expectedKernelType); +} + +TEST_P(GroupConvolutionQDqTransformation, CompareWithRefImpl) { + Run(); +}; + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/interpolate_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/interpolate_transformation.cpp index b8750fb3dd320d..983e8ddb642551 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/interpolate_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/interpolate_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/mat_mul_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/mat_mul_transformation.cpp index 4844b02359ccb5..3e6e737e7b9893 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/mat_mul_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/mat_mul_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -40,7 +40,7 @@ std::string MatMulTransformation::getTestCaseName(testing::TestParamInfoGetParam(); if ((info.name() != "input1") && (info.name() != "input2")) { - THROW_IE_EXCEPTION << "unexpected input name " << info.name(); + IE_THROW() << "unexpected input name " << info.name(); } const float k = (info.name() == "input1") ? 1.f : 2.f; diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp index ec7572b0bd05af..07dab5fefb20bc 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/output_layers_handling_in_transformations_for_concat_multi_channel.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -47,7 +47,7 @@ InferenceEngine::Blob::Ptr OutputLayersHandlingInTransformationsForConcatMultiCh std::tie(netPrecision, inputShape, targetDevice, params) = this->GetParam(); if ((info.name() != "input1") && (info.name() != "input2")) { - THROW_IE_EXCEPTION << "unexpected input name " << info.name(); + IE_THROW() << "unexpected input name " << info.name(); } const float k = (info.name() == "input1") ? 1.f : (info.name() == "input2" ? 2.f : 3.f); diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/prelu_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/prelu_transformation.cpp index 863018e0305a1c..125de3e4ff02d9 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/prelu_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/prelu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp new file mode 100644 index 00000000000000..fa9cdeeba909ae --- /dev/null +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/pull_reshape_through_dequantization_transformation.cpp @@ -0,0 +1,94 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "low_precision_transformations/pull_reshape_through_dequantization_transformation.hpp" + +#include +#include +#include +#include + +#include + +#include "common_test_utils/common_utils.hpp" +#include "functional_test_utils/plugin_cache.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "functional_test_utils/blob_utils.hpp" +#include "ngraph_functions/pass/convert_prc.hpp" +#include "lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp" + +namespace LayerTestsDefinitions { + +std::string PullReshapeThroughDequantizationTransformation::getTestCaseName(testing::TestParamInfo obj) { + ngraph::element::Type netPrecision; + ngraph::Shape inputShape; + std::string targetDevice; + ngraph::pass::low_precision::LayerTransformation::Params params; + ngraph::Shape elementwiseConstantShapes; + PullReshapeThroughDequantizationTestValues testValues; + std::tie(netPrecision, inputShape, targetDevice, params, elementwiseConstantShapes, testValues) = obj.param; + + std::ostringstream result; + result << getTestCaseNameByParams(netPrecision, inputShape, targetDevice, params) << "_" << + inputShape << "_" << + elementwiseConstantShapes << "_" << + testValues.precisionBeforeDequantization << "_" << + testValues.dequantizationOnActivations << "_" << + testValues.weights.outPrecision << "_" << + testValues.weights.values[0] << " _" << + testValues.dequantizationOnWeights; + return result.str(); +} + +void PullReshapeThroughDequantizationTransformation::SetUp() { + // threshold = 0.1f; + + ngraph::element::Type netPrecision; + ngraph::Shape inputShape; + ngraph::pass::low_precision::LayerTransformation::Params params; + ngraph::Shape elementwiseConstantShapes; + PullReshapeThroughDequantizationTestValues testValues; + std::tie(netPrecision, inputShape, targetDevice, params, elementwiseConstantShapes, testValues) = this->GetParam(); + + // to prevent test cases increasing let's parameterize test by dequantization shape and + // initialize values here + if (!testValues.dequantizationOnWeights.subtract.empty()) { + testValues.dequantizationOnWeights.subtract.constantShape = elementwiseConstantShapes; + } + + if (!testValues.dequantizationOnWeights.multiply.empty()) { + testValues.dequantizationOnWeights.multiply.constantShape = elementwiseConstantShapes; + } + + function = ngraph::builder::subgraph::FakeQuantizeAndConvolutionFunction::get( + testValues.precisionBeforeDequantization, + inputShape, + testValues.fakeQuantizeOnData, + {}, + testValues.dequantizationOnActivations, + testValues.weights, + {}, + {}, + testValues.dequantizationOnWeights, + testValues.reshape1, + testValues.multiply, + testValues.transpose, + testValues.reshape2, + testValues.dequantizationAfter, + "GroupConvolution"); +} + +void PullReshapeThroughDequantizationTransformation::Run() { + LayerTestsCommon::Run(); + + const auto params = std::get<5>(GetParam()); + const auto actualType = getRuntimePrecision(params.operationName); + EXPECT_EQ(actualType, params.expectedKernelType); +} + +TEST_P(PullReshapeThroughDequantizationTransformation, CompareWithRefImpl) { + Run(); +}; + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/relu_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/relu_transformation.cpp index e06285eeabaa34..7500b9b88029e5 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/relu_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/relu_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/reshape_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/reshape_transformation.cpp index 9afc5c064e37a4..6ba90574cd41f8 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/reshape_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/reshape_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/split_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/split_transformation.cpp index 5289acc9f2f1fd..7c9eb6e8379240 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/squeeze_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/squeeze_transformation.cpp index 636326372a194a..4ca33445a5d9ca 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/squeeze_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/squeeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/strided_slice_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/strided_slice_transformation.cpp index f9f5bd686148a4..a0c4d48a9c2b8f 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/strided_slice_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/strided_slice_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp index 7d5971265f6d69..1aff8e06d6a7a4 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_multiply_to_multiply_add_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_transformation.cpp index dd6659780d4d36..afb24897f82907 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/subtract_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_after_matmul_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_after_matmul_transformation.cpp index e4417a1a236292..d6682af481b575 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_after_matmul_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_after_matmul_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_transformation.cpp index eb1a9b985fb24e..fe672b238fe1f4 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/transpose_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/unsqueeze_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/unsqueeze_transformation.cpp index 576c5b20abb805..3ab69cd633fe85 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/unsqueeze_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/unsqueeze_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/variadic_split_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/variadic_split_transformation.cpp index 1b3b6d03e3d9b3..5c5444ee0fdcd0 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/variadic_split_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/variadic_split_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/main.cpp b/inference-engine/tests/functional/plugin/shared/src/main.cpp index 1b3728c518c205..c1e629d23ce850 100644 --- a/inference-engine/tests/functional/plugin/shared/src/main.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/main.cpp @@ -1,29 +1,54 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "gtest/gtest.h" -#include "shared_test_classes/base/layer_test_utils.hpp" +#include "functional_test_utils/layer_test_utils/environment.hpp" +#include "functional_test_utils/layer_test_utils/summary.hpp" +#include "functional_test_utils/skip_tests_config.hpp" -int main(int argc, char* argv[]) { +int main(int argc, char *argv[]) { FuncTestUtils::SkipTestsConfig::disable_tests_skipping = false; bool print_custom_help = false; for (int i = 0; i < argc; ++i) { if (std::string(argv[i]) == "--disable_tests_skipping") { FuncTestUtils::SkipTestsConfig::disable_tests_skipping = true; - } - if (std::string(argv[i]) == "--help") { + } else if (std::string(argv[i]) == "--extend_report") { + LayerTestsUtils::Summary::setExtendReport(true); + } else if (std::string(argv[i]) == "--help") { print_custom_help = true; + } else if (std::string(argv[i]).find("--output_folder") != std::string::npos) { + LayerTestsUtils::Summary::setOutputFolder( + std::string(argv[i]).substr(std::string("--output_folder").length() + 1)); + } else if (std::string(argv[i]).find("--report_unique_name") != std::string::npos) { + LayerTestsUtils::Summary::setSaveReportWithUniqueName(true); } } + if (print_custom_help) { std::cout << "Custom command line argument:" << std::endl; std::cout << " --disable_tests_skipping" << std::endl; std::cout << " Ignore tests skipping rules and run all the test" << std::endl; std::cout << " (except those which are skipped with DISABLED prefix)" << std::endl; + std::cout << " --extend_report" << std::endl; + std::cout << " Extend operation coverage report without overwriting the device results. " << + "Mutually exclusive with --report_unique_name" << std::endl; + std::cout << " --output_folder" << std::endl; + std::cout << " Folder path to save the report. Example is --output_folder=/home/user/report_folder" + << std::endl; + std::cout << " --report_unique_name" << std::endl; + std::cout << " Allow to save report with unique name (report_pid_timestamp.xml). " << + "Mutually exclusive with --extend_report." << std::endl; std::cout << std::endl; } + + if (LayerTestsUtils::Summary::getSaveReportWithUniqueName() && + LayerTestsUtils::Summary::getExtendReport()) { + std::cout << "Using mutually exclusive arguments: --extend_report and --report_unique_name" << std::endl; + return -1; + } + ::testing::InitGoogleTest(&argc, argv); ::testing::AddGlobalTestEnvironment(new LayerTestsUtils::TestEnvironment); auto retcode = RUN_ALL_TESTS(); diff --git a/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/conv_bias_fusion.cpp b/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/conv_bias_fusion.cpp index 7b28e0170ee6aa..0df6eefa9cdc95 100644 --- a/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/conv_bias_fusion.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/conv_bias_fusion.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp b/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp index c10556a0a61012..8f1190b6086545 100644 --- a/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/ngraph_conversion_tests/plugin_specific_ngraph_conversion.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -35,7 +34,7 @@ TEST_P(PluginSpecificConversion, addOutputAfterLoadNetwork) { InferenceEngine::ExecutableNetwork exeNetwork = ie.LoadNetwork(network, device); network.addOutput("add1"); InferenceEngine::ExecutableNetwork exeNetwork2 = ie.LoadNetwork(network, device); - } catch (InferenceEngine::details::InferenceEngineException& ex) { + } catch (InferenceEngine::Exception& ex) { FAIL() << ex.what(); } } diff --git a/inference-engine/tests/functional/plugin/shared/src/precomp.hpp b/inference-engine/tests/functional/plugin/shared/src/precomp.hpp index b1fee93176de22..65246ab76c6239 100644 --- a/inference-engine/tests/functional/plugin/shared/src/precomp.hpp +++ b/inference-engine/tests/functional/plugin/shared/src/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/CMakeLists.txt b/inference-engine/tests/functional/shared_test_classes/CMakeLists.txt index 092cb2b440827e..1e231440d17e1f 100644 --- a/inference-engine/tests/functional/shared_test_classes/CMakeLists.txt +++ b/inference-engine/tests/functional/shared_test_classes/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/layer_test_utils.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/layer_test_utils.hpp index 12381ee2c81423..a6e20f7e1fe5af 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/layer_test_utils.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/layer_test_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,99 +25,16 @@ #include "functional_test_utils/plugin_cache.hpp" #include "functional_test_utils/blob_utils.hpp" #include "functional_test_utils/precision_utils.hpp" +#include "functional_test_utils/layer_test_utils/summary.hpp" +#include "functional_test_utils/layer_test_utils/environment.hpp" #include "ngraph_functions/utils/ngraph_helpers.hpp" #include "ngraph_functions/pass/convert_prc.hpp" namespace LayerTestsUtils { -// filename length limitation due to Windows constraints (max 256 characters) constexpr std::size_t maxFileNameLength = 140; -class Summary; - -class SummaryDestroyer { -private: - Summary *p_instance; -public: - ~SummaryDestroyer(); - - void initialize(Summary *p); -}; - -class TestEnvironment; - -class LayerTestsCommon; - -struct PassRate { - enum Statuses { - PASSED, - FAILED, - SKIPPED - }; - unsigned long passed = 0; - unsigned long failed = 0; - unsigned long skipped = 0; - - PassRate() = default; - - PassRate(unsigned long p, unsigned long f, unsigned long s) { - passed = p; - failed = f; - skipped = s; - } - - float getPassrate() const { - if (passed + failed == 0) { - return 0.f; - } else { - return passed * 100.f / (passed + failed + skipped); - } - } -}; - -class Summary { -private: - static Summary *p_instance; - static SummaryDestroyer destroyer; - std::map opsStats = {}; - std::string deviceName; - -protected: - Summary() = default; - - Summary(const Summary &); - - Summary &operator=(Summary &); - - ~Summary() = default; - - void updateOPsStats(ngraph::NodeTypeInfo op, PassRate::Statuses status); - - std::map getOPsStats() { return opsStats; } - - std::string getDeviceName() const { return deviceName; } - - void setDeviceName(std::string device) { deviceName = device; } - - friend class SummaryDestroyer; - - friend class TestEnvironment; - - friend class LayerTestsCommon; - -public: - static Summary &getInstance(); -}; - -class TestEnvironment : public ::testing::Environment { -public: - void TearDown() override; - -private: - std::string reportFileName = "report.xml"; -}; - using TargetDevice = std::string; typedef std::tuple< @@ -140,6 +57,14 @@ class LayerTestsCommon : public CommonTestUtils::TestsCommon { virtual void Serialize(); + static void Compare(const std::vector> &expected, + const std::vector &actual, + float threshold); + + static void Compare(const std::vector &expected, + const InferenceEngine::Blob::Ptr &actual, + float threshold); + virtual void Compare(const std::vector> &expectedOutputs, const std::vector &actualOutputs); @@ -155,9 +80,6 @@ class LayerTestsCommon : public CommonTestUtils::TestsCommon { std::string getRuntimePrecision(const std::string& layerName); -protected: - LayerTestsCommon(); - template static void Compare(const T *expected, const T *actual, std::size_t size, T threshold) { for (std::size_t i = 0; i < size; ++i) { @@ -170,13 +92,17 @@ class LayerTestsCommon : public CommonTestUtils::TestsCommon { const auto max = std::max(CommonTestUtils::ie_abs(res), CommonTestUtils::ie_abs(ref)); float diff = static_cast(absoluteDifference) / static_cast(max); - ASSERT_TRUE(max != 0 && (diff <= static_cast(threshold))) - << "Relative comparison of values expected: " << ref << " and actual: " << res - << " at index " << i << " with threshold " << threshold - << " failed"; + if (max == 0 || (diff > static_cast(threshold))) { + IE_THROW() << "Relative comparison of values expected: " << ref << " and actual: " << res + << " at index " << i << " with threshold " << threshold + << " failed"; + } } } +protected: + LayerTestsCommon(); + RefMode GetRefMode() { return refMode; } @@ -187,7 +113,9 @@ class LayerTestsCommon : public CommonTestUtils::TestsCommon { virtual void ConfigureNetwork(); - void LoadNetwork(); + virtual void LoadNetwork(); + + virtual void GenerateInputs(); virtual void Infer(); @@ -209,7 +137,7 @@ class LayerTestsCommon : public CommonTestUtils::TestsCommon { virtual std::vector> CalculateRefs(); - std::vector GetOutputs(); + virtual std::vector GetOutputs(); InferenceEngine::InferRequest inferRequest; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/low_precision_transformations/layer_transformation.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/low_precision_transformations/layer_transformation.hpp index 05c07533da738f..f1d2fde5d3d445 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/low_precision_transformations/layer_transformation.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/base/low_precision_transformations/layer_transformation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/compare_results.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/compare_results.hpp new file mode 100644 index 00000000000000..cd1f24873a6b70 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/compare_results.hpp @@ -0,0 +1,19 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include "ngraph/node.hpp" + +namespace LayerTestsDefinitions { + +using CompareMap = std::map node, + const std::vector>& expected, + const std::vector& actual, + float threshold)>>; + +CompareMap getCompareMap(); +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/generate_inputs.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/generate_inputs.hpp new file mode 100644 index 00000000000000..efcfb65fd0986e --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/generate_inputs.hpp @@ -0,0 +1,17 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include "ngraph/node.hpp" + +namespace LayerTestsDefinitions { +using InputsMap = std::map node, + const InferenceEngine::InputInfo& info, + size_t port)>>; + +InputsMap getInputMap(); +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/read_ir.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/read_ir.hpp new file mode 100644 index 00000000000000..f71ae7c0ab2f66 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/read_ir/read_ir.hpp @@ -0,0 +1,27 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "shared_test_classes/single_layer/psroi_pooling.hpp" +#include "shared_test_classes/single_layer/roi_pooling.hpp" +#include "shared_test_classes/single_layer/roi_align.hpp" + +namespace LayerTestsDefinitions { +class ReadIRTest : public testing::WithParamInterface>, + public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(const testing::TestParamInfo> &obj); + +protected: + void SetUp() override; + void GenerateInputs() override; + void Compare(const std::vector> &expected, + const std::vector &actual) override; + std::vector GetOutputs() override; + +private: + std::string pathToModel; +}; +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/activation.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/activation.hpp index 1552ca270fe0bb..3447a91664970f 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/activation.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/activation.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,7 +15,6 @@ #include "ie_core.hpp" #include "ie_precision.hpp" -#include "details/ie_exception.hpp" #include "ngraph/opsets/opset1.hpp" @@ -111,4 +110,10 @@ class ActivationParamLayerTest : public ActivationLayerTest { std::vector constantsValue; }; +class ActivationDynamicLayerTest : public ActivationLayerTest { +public: + std::unordered_set static_dims; + void Run() override; +}; + } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_norm.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_norm.hpp index f2e883293ed7ec..a2479e746e433d 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_norm.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_norm.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_to_space.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_to_space.hpp index 6a47951ff2d2f6..c3ddcca1e7c20c 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_to_space.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/batch_to_space.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/binary_convolution.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/binary_convolution.hpp new file mode 100644 index 00000000000000..196c659786e9a6 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/binary_convolution.hpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +namespace LayerTestsDefinitions { + +using binConvSpecificParams = std::tuple< + InferenceEngine::SizeVector, // Kernel size + InferenceEngine::SizeVector, // Strides + std::vector, // Pads begin + std::vector, // Pads end + InferenceEngine::SizeVector, // Dilations + size_t, // Num Output channels + ngraph::op::PadType, // Padding type + float>; // Padding value + +using binaryConvolutionTestParamsSet = std::tuple< + binConvSpecificParams, // + InferenceEngine::Precision, // Network precision + InferenceEngine::Precision, // Input precision + InferenceEngine::Precision, // Output precision + InferenceEngine::Layout, // Input layout + InferenceEngine::Layout, // Output layout + InferenceEngine::SizeVector, // Input shape + LayerTestsUtils::TargetDevice>; // Device name + +class BinaryConvolutionLayerTest : public testing::WithParamInterface, + virtual public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo &info) const override; + +protected: + void SetUp() override; +}; + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/broadcast.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/broadcast.hpp index 7e59367a892883..1a5f3686446c40 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/broadcast.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/broadcast.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/bucketize.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/bucketize.hpp index 03db575bcae5f9..8917ee3681a9f1 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/bucketize.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/bucketize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/clamp.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/clamp.hpp new file mode 100644 index 00000000000000..bcf34636513df6 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/clamp.hpp @@ -0,0 +1,31 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +#include "shared_test_classes/base/layer_test_utils.hpp" + +namespace LayerTestsDefinitions { + +using clampParamsTuple = std::tuple< + InferenceEngine::SizeVector, // Input shape + std::pair, // Interval [min, max] + InferenceEngine::Precision, // Net precision + std::string>; // Device name + +class ClampLayerTest : public testing::WithParamInterface, + virtual public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); +protected: + void SetUp() override; +}; + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/comparison.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/comparison.hpp index 5a576d938b1a0c..1335d721eff8b3 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/comparison.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/comparison.hpp @@ -1,6 +1,6 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/concat.hpp index 09c38be111de96..bdc6cb44de0306 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert.hpp index e009cd0a95c2a4..a50b1d2d6a9f2b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert_like.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert_like.hpp index caa715768663e2..d7872ac1d93781 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert_like.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convert_like.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution.hpp index 2a721ac1bb67de..c8d7b0b89698a3 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution_backprop_data.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution_backprop_data.hpp index f15c2d080cc423..ecfd6e4f1f7769 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/convolution_backprop_data.hpp @@ -1,5 +1,4 @@ -// namespace LayerTestsDefinitions -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder.hpp index 728b3b8b2c4f76..d08acf525071a0 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder_seq_len.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder_seq_len.hpp index 78eaf5f77bbb09..267537476361d4 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder_seq_len.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_greedy_decoder_seq_len.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_loss.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_loss.hpp index 6c6c0a70fab10d..bcf89fef2b7994 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_loss.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/ctc_loss.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/cum_sum.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/cum_sum.hpp index 212a291fc0140f..6a52af687c27ed 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/cum_sum.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/cum_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/depth_to_space.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/depth_to_space.hpp index 8cd29a1c394345..a031cf9b4d2cf5 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/depth_to_space.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/depth_to_space.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp index 82a56f7d5ca92c..2e01dc1fd6a260 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -62,7 +62,7 @@ class DetectionOutputLayerTest : public testing::WithParamInterface obj); ngraph::op::DetectionOutputAttrs attrs; std::vector inShapes; - void Infer() override; + void GenerateInputs() override; void Compare(const std::vector &expected, const InferenceEngine::Blob::Ptr &actual) override; protected: void SetUp() override; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/eltwise.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/eltwise.hpp index 4bb3fc324c4c0e..76439bc2d4bee0 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/eltwise.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/eltwise.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // // NOTE: WILL BE REWORKED (31905) diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_offsets_sum.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_offsets_sum.hpp index 49f298ebb5a5e9..1d72b248bdcfe8 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_offsets_sum.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_offsets_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_packed_sum.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_packed_sum.hpp index 157768c931d77a..711de79841bcf8 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_packed_sum.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_bag_packed_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_segments_sum.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_segments_sum.hpp index 3744a87c79f2b3..d6498a1379f58c 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_segments_sum.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/embedding_segments_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/extract_image_patches.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/extract_image_patches.hpp index 2be311afcf40ab..af16c325b479f8 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/extract_image_patches.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/extract_image_patches.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/fake_quantize.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/fake_quantize.hpp index cbaee3ddafd164..b465fcedf07c24 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/fake_quantize.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/fake_quantize.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather.hpp index 64b9ea0d25bef1..071b9e2cb02c10 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_elements.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_elements.hpp index 6963345213326f..77e0e32dc82750 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_elements.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_elements.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_nd.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_nd.hpp index 437d71feee71de..cf1f436d728b36 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_nd.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_nd.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_tree.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_tree.hpp index 9839cedf2b09c9..02f1a26bf8ba5c 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_tree.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gather_tree.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/grn.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/grn.hpp index 8aebddcf9df3a4..ce9982495fd448 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/grn.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/grn.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,6 @@ #include "ie_core.hpp" #include "ie_precision.hpp" -#include "details/ie_exception.hpp" #include "ngraph/opsets/opset1.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution.hpp index d17c96c1025305..37b61b3f9582e8 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution_backprop_data.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution_backprop_data.hpp index d1bba6cce3b387..dd2cd42f3ea18c 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/group_convolution_backprop_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_cell.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_cell.hpp index e28389709f822d..3888009f4e51a4 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_cell.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_cell.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_sequence.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_sequence.hpp index 38cd2ca42549d8..396055554e103a 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_sequence.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/gru_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,7 +36,7 @@ class GRUSequenceTest : public testing::WithParamInterface, protected: void SetUp() override; - void Infer() override; + void GenerateInputs() override; private: ngraph::helpers::SequenceTestsMode m_mode; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/interpolate.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/interpolate.hpp index aebb23cd4bb503..b18792485a010d 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/interpolate.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/interpolate.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/log_softmax.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/log_softmax.hpp index 71780bf6c101e3..3b32a1f6658c7f 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/log_softmax.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/log_softmax.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/logical.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/logical.hpp index c0864251a684d4..d5702f43302a34 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/logical.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/logical.hpp @@ -1,6 +1,6 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/loop.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/loop.hpp index c5b7d9f6cbfb07..d763efadca71d6 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/loop.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/loop.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,6 +39,7 @@ class LoopTest : public testing::WithParamInterface, using StaticShapeLoopParams = typename std::tuple< + bool, bool, std::tuple< bool, @@ -64,6 +65,7 @@ class StaticShapeLoopTest : public testing::WithParamInterface> PredefinedRefs(); private: + bool unrolling; // unroll Loop bool static_iter_num; // trip count provided by constant node bool static_continue_cond; // initial_cond provided by constant node int64_t max_iter_num; // -1 means infinity loop (expected dynamic exit condition in body) diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lrn.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lrn.hpp index 40abbedea6e04c..5b5c94236f268b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lrn.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lrn.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_cell.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_cell.hpp index 55c700a862f7af..f07b1d51bf0439 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_cell.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_cell.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_sequence.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_sequence.hpp index c141ec070b8211..c1932d8c682cb9 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_sequence.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/lstm_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,7 +32,7 @@ class LSTMSequenceTest : public testing::WithParamInterface, public: static std::string getTestCaseName(const testing::TestParamInfo &obj); protected: - void Infer() override; + void GenerateInputs() override; void SetUp() override; private: diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mat_mul.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mat_mul.hpp index d9148b9165fab1..a09fc943663e86 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mat_mul.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mat_mul.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/minimum_maximum.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/minimum_maximum.hpp index c3770155467525..30b453c5715023 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/minimum_maximum.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/minimum_maximum.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mvn.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mvn.hpp index 771eba2fa5a0aa..1fac97f20d2372 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mvn.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/mvn.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/non_max_suppression.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/non_max_suppression.hpp index ca7598ea71f7df..6f8c9999276ca5 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/non_max_suppression.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/non_max_suppression.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,7 +34,7 @@ using NmsParams = std::tuple, virtual public LayerTestsUtils::LayerTestsCommon { public: static std::string getTestCaseName(testing::TestParamInfo obj); - void Infer() override; + void GenerateInputs() override; void Compare(const std::vector> &expectedOutputs, const std::vector &actualOutputs) override; protected: diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/nonzero.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/nonzero.hpp index dba88a5e8f799a..7953aab58b0cbd 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/nonzero.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/nonzero.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/normalize_l2.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/normalize_l2.hpp index b7ace7b909c8ad..833f6ef0591563 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/normalize_l2.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/normalize_l2.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/one_hot.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/one_hot.hpp index 4b51c6cded14c7..13d8b533687e51 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/one_hot.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/one_hot.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pad.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pad.hpp index 466cdce049aedb..799c0c8ba67ebb 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pad.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pad.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pooling.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pooling.hpp index 85fd53e6fbda30..72c96115806d45 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pooling.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/pooling.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/power.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/power.hpp index 2394172cd301d6..3b7cf94a849ec2 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/power.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/power.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/prior_box_clustered.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/prior_box_clustered.hpp index e7e5110d6833b7..37f06fa3373c95 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/prior_box_clustered.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/prior_box_clustered.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,6 @@ #include "ie_core.hpp" #include "ie_precision.hpp" -#include "details/ie_exception.hpp" #include "ngraph/opsets/opset1.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/proposal.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/proposal.hpp index cb57372720d4f5..c70aa50cea50c7 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/proposal.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/proposal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/psroi_pooling.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/psroi_pooling.hpp index 00b77b2835f6e8..1787cc047842fe 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/psroi_pooling.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/psroi_pooling.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,7 +31,10 @@ class PSROIPoolingLayerTest : public testing::WithParamInterface, virtual public LayerTestsUtils::LayerTestsCommon { public: static std::string getTestCaseName(testing::TestParamInfo obj); - void Infer() override; + void GenerateInputs() override; + static void fillROITensor(float* buffer, int numROIs, int batchSize, + int height, int width, int groupSize, + float spatialScale, int spatialBinsX, int spatialBinsY, const std::string& mode); protected: void SetUp() override; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/range.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/range.hpp index 54fcdd5d49484e..573f79eeec2908 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/range.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/range.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reduce_ops.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reduce_ops.hpp index 0d228d6d190b4b..ad8b12deb8599e 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reduce_ops.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reduce_ops.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,6 +32,7 @@ class ReduceOpsLayerTest : public testing::WithParamInterface, virtual public LayerTestsUtils::LayerTestsCommon { public: static std::string getTestCaseName(testing::TestParamInfo obj); + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo &info) const override; protected: void SetUp() override; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/region_yolo.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/region_yolo.hpp index 86b3ae8f14e9a5..a7bb45c7481ca1 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/region_yolo.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/region_yolo.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reorg_yolo.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reorg_yolo.hpp index a242d43f6731be..ebb63089332008 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reorg_yolo.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reorg_yolo.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reshape.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reshape.hpp index c17471bd18a025..d0acf57931dbfa 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reshape.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reshape.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reverse_sequence.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reverse_sequence.hpp index 50b5f575446bf0..eb1f6acf922307 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reverse_sequence.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/reverse_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_cell.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_cell.hpp index 754aaf17b1ab04..c57d858cd2c6d3 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_cell.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_cell.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_sequence.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_sequence.hpp index 3d6786c80d40ac..73ca5390280478 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_sequence.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/rnn_sequence.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,7 +34,7 @@ class RNNSequenceTest : public testing::WithParamInterface, protected: void SetUp() override; - void Infer() override; + void GenerateInputs() override; private: ngraph::helpers::SequenceTestsMode m_mode; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_align.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_align.hpp index 3077a5125027aa..b4f4064292790e 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_align.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_align.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,7 +22,9 @@ class ROIAlignLayerTest : public testing::WithParamInterface, virtual public LayerTestsUtils::LayerTestsCommon { public: static std::string getTestCaseName(testing::TestParamInfo obj); - void Infer() override; + static void fillCoordTensor(std::vector& coords, int height, int width, + float spatialScale, int pooledRatio, int pooledH, int pooledW); + static void fillIdxTensor(std::vector& idx, int batchSize); protected: void SetUp() override; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_pooling.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_pooling.hpp index 21163526742db8..bdd446c021646a 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_pooling.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/roi_pooling.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,7 +29,7 @@ class ROIPoolingLayerTest : public testing::WithParamInterface obj); - void Infer() override; + void GenerateInputs() override; protected: void SetUp() override; diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_ND_update.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_ND_update.hpp index ccc1a6e0a5717a..3f42a733a3efc9 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_ND_update.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_ND_update.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,14 +12,14 @@ #include "shared_test_classes/base/layer_test_utils.hpp" namespace LayerTestsDefinitions { -using sliceSelcetInShape = std::tuple< +using sliceSelectInShape = std::tuple< std::vector, // input shape std::vector, // indices shape std::vector, // indices value std::vector>; // update shape using scatterNDUpdateParamsTuple = typename std::tuple< - sliceSelcetInShape, // Input description + sliceSelectInShape, // Input description InferenceEngine::Precision, // Network precision InferenceEngine::Precision, // indices precision std::string>; // Device name @@ -28,7 +28,7 @@ class ScatterNDUpdateLayerTest : public testing::WithParamInterface &obj); - static std::vector combineShapes( + static std::vector combineShapes( const std::map, std::map, std::vector>>& inputShapes); protected: diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_elements_update.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_elements_update.hpp index ac83e22d87a067..0f467e678aca39 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_elements_update.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_elements_update.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_update.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_update.hpp index 630efd145c7c3a..34191d6fc3558c 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_update.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/scatter_update.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/select.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/select.hpp index a8bfe6860d3883..f787c0b89f6467 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/select.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/select.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shape_of.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shape_of.hpp index 4c7254eaf5c976..8756f824c1ad26 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shape_of.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shape_of.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shuffle_channels.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shuffle_channels.hpp index 40a54f55b98730..6646b622a82ab6 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shuffle_channels.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/shuffle_channels.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/softmax.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/softmax.hpp index 9130ade310d2f6..02fd100035698d 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/softmax.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/softmax.hpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_batch.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_batch.hpp index 6b7aa533e4e92a..40de2499d41e04 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_batch.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_batch.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_depth.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_depth.hpp index 5aa80f4701bd4a..a01e67ffa8f3fc 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_depth.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/space_to_depth.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/split.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/split.hpp index ffa62aa15d227e..bc45e82a0db8c6 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/split.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/squeeze_unsqueeze.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/squeeze_unsqueeze.hpp index 70d664c001e50b..05dd7cfab3a6de 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/squeeze_unsqueeze.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/squeeze_unsqueeze.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/strided_slice.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/strided_slice.hpp index 96104e75556fdd..fbeaf29bbe1fcc 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/strided_slice.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/strided_slice.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tensor_iterator.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tensor_iterator.hpp index 5214d26c324939..7b9939eecbe69c 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tensor_iterator.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tensor_iterator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tile.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tile.hpp index c3b40a4b0a0c99..c4cffefe29a803 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tile.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/tile.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/topk.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/topk.hpp index 5184c77f21646e..26262fe1d5d570 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/topk.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/topk.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/transpose.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/transpose.hpp index 975cbb6e29ab0f..22c253dede91bc 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/transpose.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/transpose.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/variadic_split.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/variadic_split.hpp index e6864298ba3448..02f40f99077978 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/variadic_split.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/variadic_split.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/activation_concats_eltwise.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/activation_concats_eltwise.hpp index 4c81564f38b633..c47a9099cfcabd 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/activation_concats_eltwise.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/activation_concats_eltwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/basic_lstm.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/basic_lstm.hpp index f19c942d64c343..09796de19f729d 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/basic_lstm.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/basic_lstm.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/broadcast_power.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/broadcast_power.hpp index 80bc5cd234b67f..75f2067a926cd9 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/broadcast_power.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/broadcast_power.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/cascade_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/cascade_concat.hpp index 0e1ad9a8e293a6..8ee152e750b096 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/cascade_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/cascade_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/clamp_fq.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/clamp_fq.hpp new file mode 100644 index 00000000000000..4012370d0887bb --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/clamp_fq.hpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include +#include +#include "../base/layer_test_utils.hpp" + +namespace SubgraphTestsDefinitions { +typedef std::tuple< + std::vector, // levels + std::vector>, // const inputs shape + std::vector, // clamp min max + std::vector // input generator data: low, high, resolution +> fqSpecificParams; + +typedef std::tuple< + fqSpecificParams, + InferenceEngine::Precision, // Net precision + InferenceEngine::Precision, // Input precision + InferenceEngine::Precision, // Output precision + InferenceEngine::Layout, // Input layout + InferenceEngine::Layout, // Output layout + InferenceEngine::SizeVector, // Input shapes + LayerTestsUtils::TargetDevice, // Device name + std::pair> // Additional backend configuration and alis name to it +> fqSubgraphTestParamsSet; + +class ClampFakeQuantizeSubgraphTest : public testing::WithParamInterface, + virtual public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + +protected: + void SetUp() override; + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo &info) const override; + +protected: + float inputDataMin = 0.0; + float inputDataMax = 10.0; + float inputDataResolution = 1.0; + int32_t seed = 1; +}; +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_conv.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_conv.hpp new file mode 100644 index 00000000000000..dfc1b73c78a329 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_conv.hpp @@ -0,0 +1,43 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + std::vector, // Input Shapes + std::vector, // Kernel Shape + size_t // Stride +> convParams; + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map, // Configuration + convParams, // Convolution Params + size_t, // Input Channels + size_t // Output Channels +> ConcatConvParams; + +class ConcatConvTest : public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo& info) const override; + +protected: + void SetUp() override; +}; + +} // namespace SubgraphTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_multi_input.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_multi_input.hpp index b15e8eac8d41c1..6715dc78946d1b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_multi_input.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_multi_input.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization.hpp index d69feed8f15332..57221f50f54f40 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization_during_memory_requantization.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization_during_memory_requantization.hpp index dfaf7b0688a7f5..c9ae8ef7beda9e 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization_during_memory_requantization.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/concat_quantization_during_memory_requantization.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/connect_split_concat_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/connect_split_concat_concat.hpp new file mode 100644 index 00000000000000..5ec64eafaf2c49 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/connect_split_concat_concat.hpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" +#include "common_test_utils/test_constants.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map //Configuration +> SplitConcatConcatParams; + +class SplitConcatConcatTest: + public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon{ +public: + static std::string getTestCaseName(const testing::TestParamInfo &obj); +protected: + void SetUp() override; +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/constant_result.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/constant_result.hpp index 008b8fcb8a8323..4386940d629901 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/constant_result.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/constant_result.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,16 +14,27 @@ namespace SubgraphTestsDefinitions { -typedef std::tuple< - std::string // Device name +enum class ConstantSubgraphType { + SINGLE_COMPONENT, + SEVERAL_COMPONENT +}; + +std::ostream& operator<<(std::ostream &os, ConstantSubgraphType type); + +typedef std::tuple < + ConstantSubgraphType, + InferenceEngine::SizeVector, // input shape + InferenceEngine::Precision, // input precision + std::string // Device name > constResultParams; class ConstantResultSubgraphTest : public testing::WithParamInterface, virtual public LayerTestsUtils::LayerTestsCommon { public: static std::string getTestCaseName(testing::TestParamInfo obj); + void createGraph(ConstantSubgraphType type, const InferenceEngine::SizeVector &inputShape, const InferenceEngine::Precision &inputPrecision); protected: void SetUp() override; }; -} // namespace SubgraphTestsDefinitions +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/conv_eltwise_fusion.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/conv_eltwise_fusion.hpp index 7d033de8d0d383..8958d71493394b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/conv_eltwise_fusion.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/conv_eltwise_fusion.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/convert_pad_to_group_conv.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/convert_pad_to_group_conv.hpp index 9bcd3ee825d472..cd402f37b27718 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/convert_pad_to_group_conv.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/convert_pad_to_group_conv.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/convolution_relu_sequence.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/convolution_relu_sequence.hpp new file mode 100644 index 00000000000000..b49ccd00ac29f5 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/convolution_relu_sequence.hpp @@ -0,0 +1,53 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +namespace SubgraphTestsDefinitions { + +// ! [test_convolution:definition] +typedef struct { + InferenceEngine::SizeVector kernelSize; + InferenceEngine::SizeVector strides; + std::vector padBegin; + std::vector padEnd; + size_t numOutChannels; + InferenceEngine::SizeVector poolingWindow; + InferenceEngine::SizeVector poolingStride; +} convReluSpecificParams; + +typedef struct { + InferenceEngine::SizeVector inputShape; + std::vector sequenceDesc; +} convReluSpecificParamsAll; + +typedef std::tuple< + convReluSpecificParamsAll, // CNN2D sequence desc + InferenceEngine::Precision, // Net precision + InferenceEngine::Precision, // Input precision + InferenceEngine::Precision, // Output precision + LayerTestsUtils::TargetDevice, // Device name + std::map // Configuration +> convReluSequenceTestParamsSet; + +class ConvolutionReluSequenceTest : public testing::WithParamInterface, + virtual public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + +protected: + void SetUp() override; +}; +// ! [test_convolution_relu_sequence:definition] + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/copy_before_squeeze.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/copy_before_squeeze.hpp index 1817740b1ecd03..d591144e929529 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/copy_before_squeeze.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/copy_before_squeeze.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/crop4d.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/crop4d.hpp index 281a63c4f51418..71e76b58744ab6 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/crop4d.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/crop4d.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/delayed_copy_layer.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/delayed_copy_layer.hpp index 97404963187935..b590ecc4dc137b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/delayed_copy_layer.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/delayed_copy_layer.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/eltwise_conv_eltwise.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/eltwise_conv_eltwise.hpp index 7ddb5b810432e8..56ba88646551cb 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/eltwise_conv_eltwise.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/eltwise_conv_eltwise.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/fc_conv_fc.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/fc_conv_fc.hpp index cab91ad3fb5a4b..b3c99dac2adc2e 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/fc_conv_fc.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/fc_conv_fc.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/first_connect_input_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/first_connect_input_concat.hpp index ef99ed1c8b2818..6ad904443e820e 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/first_connect_input_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/first_connect_input_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/fq_conv_fq_affine.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/fq_conv_fq_affine.hpp new file mode 100644 index 00000000000000..a8ca812b749227 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/fq_conv_fq_affine.hpp @@ -0,0 +1,55 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + std::vector, // levels + std::vector // input generator data: low, high, resolution +> FqSpecificParams; + +typedef std::tuple< + std::vector, // Kernel Shape + std::vector, // Strides + size_t, // Input channels + size_t // Output channels +> ConvParams; + +typedef std::tuple< + FqSpecificParams, + ConvParams, + InferenceEngine::Precision, // Net precision + InferenceEngine::SizeVector, // Input shapes + LayerTestsUtils::TargetDevice, // Device name + std::map // Additional backend configuration and alis name to it +> FqConvFqAffineTestParamsSet; + +class FqConvFqAffineTest : public testing::WithParamInterface, + virtual public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + +protected: + void SetUp() override; + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo &info) const override; + +protected: + float inputDataMin = 0.0; + float inputDataMax = 10.0; + float inputDataResolution = 1.0; + int32_t seed = 1; +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/get_output_before_activation.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/get_output_before_activation.hpp index d7b83970c123d6..fe0efae499cf56 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/get_output_before_activation.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/get_output_before_activation.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "common_test_utils/test_common.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/handling_orientation_conv.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/handling_orientation_conv.hpp index 50ee3ba5579838..a00604c52cab47 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/handling_orientation_conv.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/handling_orientation_conv.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/input_conv.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/input_conv.hpp index d6b412917f4ce0..c05d38a3d26653 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/input_conv.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/input_conv.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/input_split_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/input_split_concat.hpp new file mode 100644 index 00000000000000..ba5991c431b447 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/input_split_concat.hpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map, // Configuration + std::vector // Input Shapes +> InputSplitConcatParams; + +class InputSplitConcatTest : public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + +protected: + void SetUp() override; +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/matmul_squeeze_add.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/matmul_squeeze_add.hpp index 220ed4e16ba6e9..680f237d27763b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/matmul_squeeze_add.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/matmul_squeeze_add.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_LSTMCell.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_LSTMCell.hpp index 13d068284a9a9a..489431e2a9b67b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_LSTMCell.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_LSTMCell.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "common_test_utils/test_common.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_eltwise_reshape_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_eltwise_reshape_concat.hpp index 6862cd38e153c6..2c8d9cc389b842 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_eltwise_reshape_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/memory_eltwise_reshape_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "common_test_utils/test_common.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multioutput_eltwise_squeeze_eltwise.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multioutput_eltwise_squeeze_eltwise.hpp index 8997fbf058c08e..984e73f50893ea 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multioutput_eltwise_squeeze_eltwise.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multioutput_eltwise_squeeze_eltwise.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_LSTMCell.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_LSTMCell.hpp index 26cda14d03d74c..7c1e72a7bb7644 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_LSTMCell.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_LSTMCell.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "common_test_utils/test_common.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_concat.hpp index 09ef8286e3c5ed..bb77f4757b9f92 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include "common_test_utils/test_common.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_connect_split_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_connect_split_concat.hpp new file mode 100644 index 00000000000000..8eb908ed2aed93 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiple_connect_split_concat.hpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" +#include "common_test_utils/test_constants.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map //Configuration +> MultipleConnectSplitConcatParams; + +class MultipleConnectSplitConcatTest: + public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon{ +public: + static std::string getTestCaseName(const testing::TestParamInfo &obj); +protected: + void SetUp() override; +}; + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiply_add.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiply_add.hpp index 2d6302d5b74014..3644d7e2678759 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiply_add.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/multiply_add.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/negative_memory_layer_offset.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/negative_memory_layer_offset.hpp index a76b9ded6ef84c..affa94180e29eb 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/negative_memory_layer_offset.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/negative_memory_layer_offset.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_result.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_result.hpp index 1e444c6c6fd9e1..ed3a99f2885d18 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_result.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_result.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_shapeof_result.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_shapeof_result.hpp index bd84f538397205..cf7d444cf1f21d 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_shapeof_result.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/parameter_shapeof_result.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/perm_conv_perm_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/perm_conv_perm_concat.hpp index 7afc7babf37471..761075efcb3838 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/perm_conv_perm_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/perm_conv_perm_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_convolution_backprop_data.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_convolution_backprop_data.hpp index 3f597392424185..59d36270341a15 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_convolution_backprop_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution.hpp index a4c446b135e55b..5461a2dd400623 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution_backprop_data.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution_backprop_data.hpp index 36d98ec98bfffb..e7a2a8695a0655 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution_backprop_data.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_group_convolution_backprop_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_mat_mul.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_mat_mul.hpp index a9bc3e11dc9b7e..d97d911df03b61 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_mat_mul.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/quantized_mat_mul.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/range_add.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/range_add.hpp index 903ef8de87ac8c..aa350bb2e253ab 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/range_add.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/range_add.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/relu_shape_of.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/relu_shape_of.hpp index 6ecad136a0f5eb..749b841b0459ac 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/relu_shape_of.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/relu_shape_of.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_conv_permute_reshape_act.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_conv_permute_reshape_act.hpp index 42d79fa72c046d..97fd8c1406bf1a 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_conv_permute_reshape_act.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_conv_permute_reshape_act.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_reshape.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_reshape.hpp index 732c752bf8f0d7..1e8eb43227b51b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_reshape.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_permute_reshape.hpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #pragma once diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_squeeze_reshape_relu.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_squeeze_reshape_relu.hpp index 13fc56e08b77f7..51005f0b4b6cb1 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_squeeze_reshape_relu.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/reshape_squeeze_reshape_relu.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift.hpp index 5510cc99aebca7..57043f0fa28f37 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift_conv_scaleshift.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift_conv_scaleshift.hpp index b6a6908d099107..7d3e5b8bce560e 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift_conv_scaleshift.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/scaleshift_conv_scaleshift.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/softsign.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/softsign.hpp index 37913b6f9cc72c..0c56e6067ea199 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/softsign.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/softsign.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_concat_memory.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_concat_memory.hpp index 6ca5b0b7e82e1f..e7e53e34dd369b 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_concat_memory.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_concat_memory.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_conv.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_conv.hpp new file mode 100644 index 00000000000000..3682f595f96cdf --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_conv.hpp @@ -0,0 +1,43 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + std::vector, // Input Shapes + std::vector, // Kernel Shape + size_t // Stride +> convParams; + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map, // Configuration + convParams, // Convolution Params + size_t, // Input Channels + size_t // Output Channels +> SplitConvParams; + +class SplitConvTest : public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo& info) const override; + +protected: + void SetUp() override; +}; + +} // namespace SubgraphTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_conv_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_conv_concat.hpp index b938bd80ff8554..53c566d8cd2346 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_conv_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_conv_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_relu.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_relu.hpp index 4335af5cf0fd19..a7e20591048ba8 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_relu.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_relu.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_trivial_permute_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_trivial_permute_concat.hpp index 7068574f1f75ce..fe66ca0b36b0ee 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_trivial_permute_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/split_trivial_permute_concat.hpp @@ -1,5 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// + #pragma once #include diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/stridedslice_conv.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/stridedslice_conv.hpp new file mode 100644 index 00000000000000..c4212667ea734c --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/stridedslice_conv.hpp @@ -0,0 +1,42 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" +#include "ngraph_functions/utils/ngraph_helpers.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + std::vector, // Input Shapes + std::vector, // Kernel Shape + size_t // Stride +> convParams; + +typedef std::tuple< + InferenceEngine::Precision, // Network Precision + std::string, // Target Device + std::map, // Configuration + convParams, // Convolution Params + size_t // Output Channels +> SliceConvParams; + +class SliceConvTest : public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon { +public: + static std::string getTestCaseName(testing::TestParamInfo obj); + InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo& info) const override; + +protected: + void SetUp() override; +}; + +} // namespace SubgraphTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/tensor_names.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/tensor_names.hpp index dfa2cbeaa259d7..e863688af0180f 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/tensor_names.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/tensor_names.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/trivial_concat.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/trivial_concat.hpp index 849696fcf65d15..299e5eed644801 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/trivial_concat.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/trivial_concat.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/two_fake_quantize_to_fullyconnected.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/two_fake_quantize_to_fullyconnected.hpp index 496192556a6823..3393e143a2e336 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/two_fake_quantize_to_fullyconnected.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/two_fake_quantize_to_fullyconnected.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/variadic_split_pad.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/variadic_split_pad.hpp new file mode 100644 index 00000000000000..2010337f1c2324 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/subgraph/variadic_split_pad.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "ngraph_functions/builders.hpp" + +namespace SubgraphTestsDefinitions { + +typedef std::tuple< + InferenceEngine::SizeVector, // Input shapes + size_t, // Axis + std::vector, // Split number + std::vector, // Index connected layer + std::vector, // Pad begin + std::vector, // Pad end + ngraph::helpers::PadMode, // Pad mode + InferenceEngine::Precision, // Network precision + std::string // Device name +> SplitPadTuple; + + +class VariadicSplitPad: public testing::WithParamInterface, + public LayerTestsUtils::LayerTestsCommon{ +public: + static std::string getTestCaseName(const testing::TestParamInfo &obj); +protected: + void SetUp() override; +}; +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/base/layer_test_utils.cpp b/inference-engine/tests/functional/shared_test_classes/src/base/layer_test_utils.cpp index a00ca8d9183275..3924efc1624b8b 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/base/layer_test_utils.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/base/layer_test_utils.cpp @@ -1,7 +1,12 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include +#include +#ifdef _WIN32 +#include +#endif #include #include @@ -9,6 +14,7 @@ #include #include #include +#include #include "ngraph/variant.hpp" #include "shared_test_classes/base/layer_test_utils.hpp" @@ -16,126 +22,6 @@ namespace LayerTestsUtils { -Summary *Summary::p_instance = nullptr; -SummaryDestroyer Summary::destroyer; - -SummaryDestroyer::~SummaryDestroyer() { - delete p_instance; -} - -void SummaryDestroyer::initialize(Summary *p) { - p_instance = p; -} - -Summary &Summary::getInstance() { - if (!p_instance) { - p_instance = new Summary(); - destroyer.initialize(p_instance); - } - return *p_instance; -} - -void Summary::updateOPsStats(ngraph::NodeTypeInfo op, PassRate::Statuses status) { - auto it = opsStats.find(op); - if (it != opsStats.end()) { - auto &passrate = it->second; - switch (status) { - case PassRate::PASSED: - passrate.passed += 1; - break; - case PassRate::FAILED: - passrate.failed += 1; - break; - case PassRate::SKIPPED: - passrate.skipped += 1; - break; - } - } else { - switch (status) { - case PassRate::PASSED: - opsStats[op] = PassRate(1, 0, 0); - break; - case PassRate::FAILED: - opsStats[op] = PassRate(0, 1, 0); - break; - case PassRate::SKIPPED: - opsStats[op] = PassRate(0, 0, 1); - break; - } - } -} - -void TestEnvironment::TearDown() { - std::vector opsets; - opsets.push_back(ngraph::get_opset1()); - opsets.push_back(ngraph::get_opset2()); - opsets.push_back(ngraph::get_opset3()); - opsets.push_back(ngraph::get_opset4()); - opsets.push_back(ngraph::get_opset5()); - opsets.push_back(ngraph::get_opset6()); - std::set opsInfo; - for (const auto &opset : opsets) { - const auto &type_info_set = opset.get_type_info_set(); - opsInfo.insert(type_info_set.begin(), type_info_set.end()); - } - - auto &s = Summary::getInstance(); - auto stats = s.getOPsStats(); - - pugi::xml_document doc; - - std::ifstream file; - file.open(reportFileName); - - time_t rawtime; - struct tm *timeinfo; - char timeNow[80]; - - time(&rawtime); - // cpplint require to use localtime_r instead which is not available in C++14 - timeinfo = localtime(&rawtime); // NOLINT - - strftime(timeNow, sizeof(timeNow), "%d-%m-%Y %H:%M:%S", timeinfo); - - pugi::xml_node root; - if (file) { - doc.load_file(reportFileName.c_str()); - root = doc.child("report"); - //Ugly but shorter than to write predicate for find_atrribute() to update existing one - root.remove_attribute("timestamp"); - root.append_attribute("timestamp").set_value(timeNow); - - root.remove_child("ops_list"); - root.child("results").remove_child(s.deviceName.c_str()); - } else { - root = doc.append_child("report"); - root.append_attribute("timestamp").set_value(timeNow); - root.append_child("results"); - } - - pugi::xml_node opsNode = root.append_child("ops_list"); - for (const auto &op : opsInfo) { - std::string name = std::string(op.name) + "-" + std::to_string(op.version); - pugi::xml_node entry = opsNode.append_child(name.c_str()); - (void)entry; - } - - pugi::xml_node resultsNode = root.child("results"); - pugi::xml_node currentDeviceNode = resultsNode.append_child(s.deviceName.c_str()); - for (const auto &it : stats) { - std::string name = std::string(it.first.name) + "-" + std::to_string(it.first.version); - pugi::xml_node entry = currentDeviceNode.append_child(name.c_str()); - entry.append_attribute("passed").set_value(it.second.passed); - entry.append_attribute("failed").set_value(it.second.failed); - entry.append_attribute("skipped").set_value(it.second.skipped); - entry.append_attribute("passrate").set_value(it.second.getPassrate()); - } - bool result = doc.save_file(reportFileName.c_str()); - if (!result) { - std::cout << "Failed to write report to " << reportFileName << "!" << std::endl; - } -} - LayerTestsCommon::LayerTestsCommon() : threshold(1e-2f) { core = PluginCache::get().ie(targetDevice); } @@ -143,53 +29,37 @@ LayerTestsCommon::LayerTestsCommon() : threshold(1e-2f) { void LayerTestsCommon::Run() { auto &s = Summary::getInstance(); s.setDeviceName(targetDevice); - auto reportStatus = [this, &s](PassRate::Statuses status) { - if (function){ - for (const auto &op : function->get_ordered_ops()) { - if (ngraph::is_type(op) || - ngraph::is_type(op) || - ngraph::is_type(op)) { - continue; - } else if (ngraph::is_type(op)) { - s.updateOPsStats(op->get_type_info(), status); - auto ti = ngraph::as_type_ptr(op); - auto ti_body = ti->get_function(); - for (const auto &ti_op : ti_body->get_ordered_ops()) { - s.updateOPsStats(ti_op->get_type_info(), status); - } - } else if (ngraph::is_type(op)) { - s.updateOPsStats(op->get_type_info(), status); - auto loop = ngraph::as_type_ptr(op); - auto loop_body = loop->get_function(); - for (const auto &loop_op : loop_body->get_ordered_ops()) { - s.updateOPsStats(loop_op->get_type_info(), status); - } - } else { - s.updateOPsStats(op->get_type_info(), status); - } - } - } + + auto crashHandler = [](int errCode) { + auto &s = Summary::getInstance(); + s.saveReport(); + std::cout << "Unexpected application crash!" << std::endl; + std::abort(); }; + signal(SIGSEGV, crashHandler); if (FuncTestUtils::SkipTestsConfig::currentTestIsDisabled()) { - reportStatus(PassRate::Statuses::SKIPPED); + s.updateOPsStats(function, PassRate::Statuses::SKIPPED); GTEST_SKIP() << "Disabled test due to configuration" << std::endl; + } else { + s.updateOPsStats(function, PassRate::Statuses::CRASHED); } try { LoadNetwork(); + GenerateInputs(); Infer(); Validate(); - reportStatus(PassRate::Statuses::PASSED); + s.updateOPsStats(function, PassRate::Statuses::PASSED); } catch (const std::runtime_error &re) { - reportStatus(PassRate::Statuses::FAILED); + s.updateOPsStats(function, PassRate::Statuses::FAILED); GTEST_FATAL_FAILURE_(re.what()); } catch (const std::exception &ex) { - reportStatus(PassRate::Statuses::FAILED); + s.updateOPsStats(function, PassRate::Statuses::FAILED); GTEST_FATAL_FAILURE_(ex.what()); } catch (...) { - reportStatus(PassRate::Statuses::FAILED); + s.updateOPsStats(function, PassRate::Statuses::FAILED); GTEST_FATAL_FAILURE_("Unknown failure occurred."); } } @@ -206,8 +76,7 @@ void LayerTestsCommon::Serialize() { manager.register_pass(out_xml_path, out_bin_path); manager.run_passes(function); - InferenceEngine::Core ie; - auto result = ie.ReadNetwork(out_xml_path, out_bin_path); + auto result = getCore()->ReadNetwork(out_xml_path, out_bin_path); bool success; std::string message; @@ -224,8 +93,19 @@ void LayerTestsCommon::Serialize() { InferenceEngine::Blob::Ptr LayerTestsCommon::GenerateInput(const InferenceEngine::InputInfo &info) const { return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); } +void LayerTestsCommon::Compare(const std::vector> &expectedOutputs, + const std::vector &actualOutputs, + float threshold) { + for (std::size_t outputIndex = 0; outputIndex < expectedOutputs.size(); ++outputIndex) { + const auto &expected = expectedOutputs[outputIndex]; + const auto &actual = actualOutputs[outputIndex]; + Compare(expected, actual, threshold); + } +} -void LayerTestsCommon::Compare(const std::vector &expected, const InferenceEngine::Blob::Ptr &actual) { +void LayerTestsCommon::Compare(const std::vector &expected, + const InferenceEngine::Blob::Ptr &actual, + float threshold) { ASSERT_EQ(expected.size(), actual->byteSize()); const auto &expectedBuffer = expected.data(); @@ -283,6 +163,10 @@ void LayerTestsCommon::Compare(const std::vector &expected, const } } +void LayerTestsCommon::Compare(const std::vector &expected, const InferenceEngine::Blob::Ptr &actual) { + Compare(expected, actual, threshold); +} + void LayerTestsCommon::Compare(const InferenceEngine::Blob::Ptr &expected, const InferenceEngine::Blob::Ptr &actual) { auto get_raw_buffer = [](const InferenceEngine::Blob::Ptr &blob) { auto memory = InferenceEngine::as(blob); @@ -336,19 +220,33 @@ void LayerTestsCommon::LoadNetwork() { executableNetwork = core->LoadNetwork(cnnNetwork, targetDevice, configuration); } +void LayerTestsCommon::GenerateInputs() { + const auto& inputsInfo = executableNetwork.GetInputsInfo(); + const auto& functionParams = function->get_parameters(); + for (int i = 0; i < functionParams.size(); ++i) { + const auto& param = functionParams[i]; + const auto infoIt = inputsInfo.find(param->get_friendly_name()); + GTEST_ASSERT_NE(infoIt, inputsInfo.cend()); + + const auto& info = infoIt->second; + auto blob = GenerateInput(*info); + inputs.push_back(blob); + } +} + void LayerTestsCommon::Infer() { inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); const auto& inputsInfo = executableNetwork.GetInputsInfo(); - for (const auto& param : function->get_parameters()) { + const auto& functionParams = function->get_parameters(); + for (int i = 0; i < functionParams.size(); ++i) { + const auto& param = functionParams[i]; const auto infoIt = inputsInfo.find(param->get_friendly_name()); GTEST_ASSERT_NE(infoIt, inputsInfo.cend()); const auto& info = infoIt->second; - auto blob = GenerateInput(*info); + auto blob = inputs[i]; inferRequest.SetBlob(info->name(), blob); - inputs.push_back(blob); } if (configuration.count(InferenceEngine::PluginConfigParams::KEY_DYN_BATCH_ENABLED) && configuration.count(InferenceEngine::PluginConfigParams::YES)) { @@ -423,11 +321,7 @@ std::vector LayerTestsCommon::GetOutputs() { void LayerTestsCommon::Compare(const std::vector> &expectedOutputs, const std::vector &actualOutputs) { - for (std::size_t outputIndex = 0; outputIndex < expectedOutputs.size(); ++outputIndex) { - const auto &expected = expectedOutputs[outputIndex]; - const auto &actual = actualOutputs[outputIndex]; - Compare(expected, actual); - } + Compare(expectedOutputs, actualOutputs, threshold); } void LayerTestsCommon::Validate() { diff --git a/inference-engine/tests/functional/shared_test_classes/src/base/low_precision_transformations/layer_transformation.cpp b/inference-engine/tests/functional/shared_test_classes/src/base/low_precision_transformations/layer_transformation.cpp index 436b5c079a888f..72c4c0cd1f5c6e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/base/low_precision_transformations/layer_transformation.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/base/low_precision_transformations/layer_transformation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/precomp.hpp b/inference-engine/tests/functional/shared_test_classes/src/precomp.hpp index b9d5fc69556ea3..23ba10110cf6a9 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/precomp.hpp +++ b/inference-engine/tests/functional/shared_test_classes/src/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/read_ir/compareResults.cpp b/inference-engine/tests/functional/shared_test_classes/src/read_ir/compareResults.cpp new file mode 100644 index 00000000000000..a9b7197d5ec868 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/read_ir/compareResults.cpp @@ -0,0 +1,207 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "ngraph/ops.hpp" + +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "shared_test_classes/read_ir/compare_results.hpp" + +namespace LayerTestsDefinitions { + +namespace { +void compare(const std::shared_ptr node, + const std::vector>& expected, + const std::vector& actual, + float threshold) { + LayerTestsUtils::LayerTestsCommon::Compare(expected, actual, threshold); +} + +void compare(const std::shared_ptr node, + const std::vector& expected, + const std::vector& actual, + float threshold) { + ASSERT_EQ(expected.size(), actual.front()->byteSize()); + + size_t expSize = 0; + size_t actSize = 0; + + const auto &expectedBuffer = expected.data(); + auto memory = InferenceEngine::as(actual.front()); + IE_ASSERT(memory); + const auto lockedMemory = memory->wmap(); + const auto actualBuffer = lockedMemory.as(); + + const float *expBuf = reinterpret_cast(expectedBuffer); + const float *actBuf = reinterpret_cast(actualBuffer); + for (size_t i = 0; i < actual.front()->size(); i+=7) { + if (expBuf[i] == -1) + break; + expSize += 7; + } + for (size_t i = 0; i < actual.front()->size(); i+=7) { + if (actBuf[i] == -1) + break; + actSize += 7; + } + ASSERT_EQ(expSize, actSize); + LayerTestsUtils::LayerTestsCommon::Compare(expBuf, actBuf, expSize, 1e-2f); +} + +namespace Proposal { +template +void Compare(const T *expected, const T *actual, std::size_t size, + T threshold, const std::size_t output_index, size_t& num_selected_boxes) { + for (std::size_t i = 0; i < size; ++i) { + const auto &ref = expected[i]; + const auto &res = actual[i]; + + // verify until first -1 appears in the 1st output. + if (output_index == 0 && + CommonTestUtils::ie_abs(ref - static_cast(-1)) <= threshold) { + // output0 shape = {x, 5} + // output1 shape = {x} + // setting the new_size for output1 verification + num_selected_boxes = i / 5; + return; + } + + const auto absoluteDifference = CommonTestUtils::ie_abs(res - ref); + if (absoluteDifference <= threshold) { + continue; + } + + const auto max = std::max(CommonTestUtils::ie_abs(res), + CommonTestUtils::ie_abs(ref)); + float diff = + static_cast(absoluteDifference) / static_cast(max); + ASSERT_TRUE(max != 0 && (diff <= static_cast(threshold))) + << "Relative comparison of values expected: " << ref + << " and actual: " << res << " at index " << i + << " with threshold " << threshold << " failed"; + } +} +} // namespace Proposal + +void compare(const std::shared_ptr node, + const std::vector>& expectedOutputs, + const std::vector& actualOutputs, + float threshold) { + size_t num_selected_boxes = 0; + for (std::size_t outputIndex = 0; outputIndex < expectedOutputs.size(); ++outputIndex) { + const auto &expected = expectedOutputs[outputIndex]; + const auto &actual = actualOutputs[outputIndex]; + ASSERT_EQ(expected.size(), actual->byteSize()); + const auto &expectedBuffer = expected.data(); + + auto memory = InferenceEngine::as(actual); + IE_ASSERT(memory); + const auto lockedMemory = memory->rmap(); + const auto actualBuffer = lockedMemory.as(); + + const auto &precision = actual->getTensorDesc().getPrecision(); + auto size = actual->size(); + + // verifying the first output if there was less proposals than space + // provided, + // num_selected_boxes was set, take this into consideration while verifying the 2nd + // output + if (outputIndex == 1 && num_selected_boxes) { + size = num_selected_boxes; + } + + switch (precision) { + case InferenceEngine::Precision::BF16: + Proposal::Compare( + reinterpret_cast(expectedBuffer), + reinterpret_cast(actualBuffer), size, + ngraph::bfloat16(threshold), outputIndex, num_selected_boxes); + break; + case InferenceEngine::Precision::FP16: + Proposal::Compare( + reinterpret_cast(expectedBuffer), + reinterpret_cast(actualBuffer), size, + ngraph::float16(threshold), outputIndex, num_selected_boxes); + break; + case InferenceEngine::Precision::FP32: + Proposal::Compare( + reinterpret_cast(expectedBuffer), + reinterpret_cast(actualBuffer), size, + threshold, outputIndex, num_selected_boxes); + break; + default: + FAIL() << "Comparator for " << precision << " precision isn't supported"; + } + } +} + +void compare(const std::shared_ptr node, + const std::vector>& expectedOutputs, + const std::vector& actualOutputs, + float threshold) { + for (int outputIndex = static_cast(expectedOutputs.size()) - 1; outputIndex >=0 ; outputIndex--) { + const auto& expected = expectedOutputs[outputIndex]; + const auto& actual = actualOutputs[outputIndex]; + + const auto &expectedBuffer = expected.data(); + auto memory = InferenceEngine::as(actual); + IE_ASSERT(memory); + const auto lockedMemory = memory->wmap(); + const auto actualBuffer = lockedMemory.as(); + + if (outputIndex == 2) { + if (expected.size() != actual->byteSize()) + throw std::runtime_error("Expected and actual size 3rd output have different size"); + } + + const auto &precision = actual->getTensorDesc().getPrecision(); + size_t size = expected.size() / actual->getTensorDesc().getPrecision().size(); + switch (precision) { + case InferenceEngine::Precision::FP32: { + LayerTestsUtils::LayerTestsCommon::Compare( + reinterpret_cast(expectedBuffer), reinterpret_cast(actualBuffer), size, threshold); + const auto fBuffer = lockedMemory.as(); + for (int i = size; i < actual->size(); i++) { + ASSERT_TRUE(fBuffer[i] == -1.f) << "Invalid default value: " << fBuffer[i] << " at index: " << i; + } + break; + } + case InferenceEngine::Precision::I32: { + LayerTestsUtils::LayerTestsCommon::Compare( + reinterpret_cast(expectedBuffer), reinterpret_cast(actualBuffer), size, 0); + const auto iBuffer = lockedMemory.as(); + for (int i = size; i < actual->size(); i++) { + ASSERT_TRUE(iBuffer[i] == -1) << "Invalid default value: " << iBuffer[i] << " at index: " << i; + } + break; + } + default: + FAIL() << "Comparator for " << precision << " precision isn't supported"; + } + } +} + +template +void compareResults(const std::shared_ptr node, + const std::vector>& expected, + const std::vector& actual, + float threshold) { + return compare(ngraph::as_type_ptr(node), expected, actual, threshold); +} +} // namespace + +CompareMap getCompareMap() { + CompareMap compareMap{ +#define NGRAPH_OP(NAME, NAMESPACE) {NAMESPACE::NAME::type_info, compareResults}, +#include "ngraph/opsets/opset1_tbl.hpp" +#include "ngraph/opsets/opset2_tbl.hpp" +#include "ngraph/opsets/opset3_tbl.hpp" +#include "ngraph/opsets/opset4_tbl.hpp" +#include "ngraph/opsets/opset5_tbl.hpp" +#include "ngraph/opsets/opset6_tbl.hpp" +#undef NGRAPH_OP + }; + return compareMap; +} + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/read_ir/generate_inputs.cpp b/inference-engine/tests/functional/shared_test_classes/src/read_ir/generate_inputs.cpp new file mode 100644 index 00000000000000..28cc0ff696ec5f --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/read_ir/generate_inputs.cpp @@ -0,0 +1,659 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "ngraph/ops.hpp" + +#include "shared_test_classes/single_layer/roi_align.hpp" +#include "shared_test_classes/single_layer/psroi_pooling.hpp" +#include "shared_test_classes/read_ir/generate_inputs.hpp" + +namespace LayerTestsDefinitions { + +namespace { +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); +} + +namespace Activation { +InferenceEngine::Blob::Ptr generate(const InferenceEngine::InputInfo& info, + bool inPrcSigned, + int32_t data_start_from = -10, + uint32_t data_range = 20, + int32_t resolution = 32768) { + if (!inPrcSigned) { + data_range = 15; + data_start_from = 0; + } + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), data_range, + data_start_from, + resolution); +} +} // namespace Activation + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed(), -1, 2); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed(), -1, 2); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed(), -1, 2); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed(), -1000, 2000); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + InferenceEngine::Blob::Ptr blob; + blob = make_blob_with_precision(info.getTensorDesc()); + blob->allocate(); + + int32_t resolution = 1; + uint32_t range = 1; + switch (port) { + case 1: + case 3: + resolution = 1000; + break; + case 2: + if (node->get_attrs().normalized) { + resolution = 1000; + } else { + range = 10; + } + break; + default: + resolution = 10; + break; + } + CommonTestUtils::fill_data_random_float(blob, range, 0, resolution); + return blob; +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + switch (port) { + case 1: { + std::vector alpha(node->get_input_shape(1).size(), 0.2f); + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), alpha.data(), alpha.size()); + } + case 2: { + std::vector beta(node->get_input_shape(2).size(), 0.5f); + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), beta.data(), beta.size()); + } + default: { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); + } + } +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + auto constShapes = node->get_input_shape(0); + int seed = 1; + size_t constDataSize = ngraph::shape_size(constShapes); + std::vector inputLowData, inputHighData, outputLowData, outputHighData; + inputLowData = NGraphFunctions::Utils::generateVector(constDataSize, 10, 1, seed); + if (node->get_levels() != 2) { + inputHighData = NGraphFunctions::Utils::generateVector(constDataSize, 10, 1, seed); + outputLowData = NGraphFunctions::Utils::generateVector(constDataSize, 10, 1, seed); + outputHighData = NGraphFunctions::Utils::generateVector(constDataSize, 10, 1, seed); + } else { + inputHighData = inputLowData; + outputLowData = NGraphFunctions::Utils::generateVector(constDataSize, 10, 1, seed); + outputHighData = NGraphFunctions::Utils::generateVector(constDataSize, 10, 1, seed); + + for (int i = 0; i < constDataSize; i++) { + if (outputLowData[i] > outputHighData[i]) { + outputLowData[i] = 1; + outputHighData[i] = 0; + } else { + outputLowData[i] = 0; + outputHighData[i] = 1; + } + } + } + + for (int i = 0; i < constDataSize; i++) { + inputLowData[i] = std::min(inputLowData[i], inputHighData[i]); + inputHighData[i] = std::max(inputLowData[i], inputHighData[i]); + if (inputLowData[i] == inputHighData[i]) + inputHighData[i] += 1; + } + + for (int i = 0; i < constDataSize; i++) { + outputLowData[i] = std::min(outputLowData[i], outputHighData[i]); + outputHighData[i] = std::max(outputLowData[i], outputHighData[i]); + if (outputLowData[i] == outputHighData[i]) + outputHighData[i] += 1; + } + switch (port) { + case 1: + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), inputLowData.data(), inputLowData.size()); + case 2: + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), inputHighData.data(), inputHighData.size()); + case 3: + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), outputLowData.data(), outputLowData.size()); + case 4: + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), outputHighData.data(), outputHighData.size()); + default: { + float resolution = 1.0f, min = +5.f, max = +25.f; + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), max - min, min, resolution, seed); + } + } +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed(), 1, 20); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + switch (port) { + case 1: { + std::vector negativeSlope(node->get_input_shape(1).size(), -0.01f); + FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), negativeSlope.data(), negativeSlope.size()); + } + default: { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); + } + } +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + const auto& inputShape = node->get_input_shape(0); + if (port == 1) { + InferenceEngine::Blob::Ptr blob; + blob = make_blob_with_precision(info.getTensorDesc()); + blob->allocate(); + PSROIPoolingLayerTest::fillROITensor(blob->buffer(), + blob->size() / 5, + inputShape[0], + inputShape[2], + inputShape[3], + node->get_group_size(), + node->get_spatial_scale(), + node->get_spatial_bins_x(), + node->get_spatial_bins_y(), + node->get_mode()); + return blob; + } + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + const auto& inputShape = node->get_input_shape(0); + if (port == 1) { + InferenceEngine::Blob::Ptr blob; + blob = make_blob_with_precision(info.getTensorDesc()); + blob->allocate(); + + CommonTestUtils::fill_data_roi(blob->buffer(), + blob->size(), + node->get_input_shape(0).front() - 1, + inputShape[2], + inputShape[3], + 1.0f, + node->get_method() == "max"); + return blob; + } + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + switch (port) { + case 1: { + std::vector alpha(node->get_input_shape(1).size(), 1.6732f); + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), alpha.data(), alpha.size()); + } + case 2: { + std::vector lambda(node->get_input_shape(1).size(), 1.0507f); + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), lambda.data(), lambda.size()); + } + default: + return Activation::generate(info, node->get_input_element_type(0).is_signed()); + } +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed(), 1, 20); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return info.getPrecision().is_float() ? FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 2, 128): + FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 100, 101); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return info.getPrecision().is_float() ? FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 2, 128): + FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 4, 2); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + auto& shape = node->get_input_shape(0); + auto maxBeamIndx = shape.at(2) - 1; + + switch (port) { + case 2: + case 3: + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), maxBeamIndx, maxBeamIndx / 2); + default: + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), maxBeamIndx); + } +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 0); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 0); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 0); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 0); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return info.getPrecision().is_float() ? FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 2, 128): + FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 4, 2); +} + +namespace ReduceOps { + InferenceEngine::Blob::Ptr generate(const ngraph::AxisSet& axis_vec, + const InferenceEngine::InputInfo& info) { + IE_ASSERT(axis_vec.size() == 1); + + auto axis = *axis_vec.begin(); + auto td = info.getTensorDesc(); + auto dims = td.getDims(); + + // Slice of tensor through axis is {1, 0, 0, ....}, the mean value is 1/slice_size + auto raw_values = std::vector(dims[axis], 0); + raw_values[0] = 1; + + auto blob = make_blob_with_precision(td); + blob->allocate(); + CommonTestUtils::fill_data_with_broadcast(blob, axis, raw_values); + return blob; + } +} // namespace ReduceOps + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + InferenceEngine::Blob::Ptr blobPtr; + switch (port) { + case 0: { + auto data_shape = info.getTensorDesc().getDims(); + auto data_size = std::accumulate(begin(data_shape), end(data_shape), 1, std::multiplies()); + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), data_size * 5, 0, 10, 7235346); + } + case 1: { + return FuncTestUtils::createAndFillBlobUniqueSequence(info.getTensorDesc(), 0, 10, 8234231); + } + default: + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); + } +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + const auto& inputShape = node->get_input_shape(0); + switch (port) { + case 1: { + std::vector blobData(node->get_shape()[0] * 4); + ROIAlignLayerTest::fillCoordTensor(blobData, + inputShape[2], + inputShape[3], + node->get_spatial_scale(), + node->get_sampling_ratio(), + node->get_pooled_h(), + node->get_pooled_w()); + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), blobData.data(), blobData.size()); + } + case 2: { + std::vector roiIdxVector(node->get_shape()[0]); + ROIAlignLayerTest::fillIdxTensor(roiIdxVector, node->get_shape()[0]); + return FuncTestUtils::createAndFillBlobWithFloatArray(info.getTensorDesc(), roiIdxVector.data(), roiIdxVector.size()); + } + default: + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); + } +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + if (port == 0) { + return FuncTestUtils::createAndFillBlobFloat(info.getTensorDesc(), 1, 0, 1000, 8234231); + } + return FuncTestUtils::createAndFillBlobFloatNormalDistribution(info.getTensorDesc(), 0.0f, 0.2f, 7235346); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return ReduceOps::generate(node->get_reduction_axes(), info); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const ngraph::op::v5::BatchNormInference node, + const InferenceEngine::InputInfo& info, + size_t port) { + return FuncTestUtils::createAndFillBlobConsistently(info.getTensorDesc(), 3, 0, 1); +} + +InferenceEngine::Blob::Ptr generate(const ngraph::op::v5::GRUSequence node, + const InferenceEngine::InputInfo& info, + size_t port) { + if (port == 2) { + unsigned int m_max_seq_len = 10; + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), m_max_seq_len, 0); + } + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed()); +} + +InferenceEngine::Blob::Ptr generate(const ngraph::op::v5::Loop node, + const InferenceEngine::InputInfo& info, + size_t port) { + auto tdesc = info.getTensorDesc(); + auto blob = make_blob_with_precision(tdesc); + blob->allocate(); + + if (tdesc.getLayout() == InferenceEngine::SCALAR) { + auto scalar_1d = CommonTestUtils::make_reshape_view(blob, {1}); + unsigned int max_iter_num = 10; + CommonTestUtils::fill_data_with_broadcast(scalar_1d, 0, {static_cast(max_iter_num)}); + } else { + int start_value = 7; + CommonTestUtils::fill_data_with_broadcast(blob, 0, {static_cast(start_value)}); + } + return blob; +} + +InferenceEngine::Blob::Ptr generate(const ngraph::op::v5::LSTMSequence node, + const InferenceEngine::InputInfo& info, + size_t port) { + if (port == 2) { + unsigned int m_max_seq_len = 10; + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), m_max_seq_len, 0); + } + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); +} + +InferenceEngine::Blob::Ptr generate(const ngraph::op::v5::NonMaxSuppression node, + const InferenceEngine::InputInfo& info, + size_t port) { + if (port == 1) { + InferenceEngine::Blob::Ptr blob; + blob = make_blob_with_precision(info.getTensorDesc()); + blob->allocate(); + CommonTestUtils::fill_data_random_float(blob, 1, 0, 1000); + return blob; + } + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); +} + +InferenceEngine::Blob::Ptr generate(const ngraph::op::v5::RNNSequence node, + const InferenceEngine::InputInfo& info, + size_t port) { + if (port == 2) { + unsigned int m_max_seq_len = 10; + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), m_max_seq_len, 0); + } + return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); +} + +InferenceEngine::Blob::Ptr generate(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return Activation::generate(info, node->get_input_element_type(0).is_signed(), -10, 20, 4); +} + +template +InferenceEngine::Blob::Ptr generateInput(const std::shared_ptr node, + const InferenceEngine::InputInfo& info, + size_t port) { + return generate(ngraph::as_type_ptr(node), info, port); +} +} // namespace + +InputsMap getInputMap() { + static InputsMap inputsMap{ +#define NGRAPH_OP(NAME, NAMESPACE) {NAMESPACE::NAME::type_info, generateInput}, + #include "ngraph/opsets/opset1_tbl.hpp" + #include "ngraph/opsets/opset2_tbl.hpp" + #include "ngraph/opsets/opset3_tbl.hpp" + #include "ngraph/opsets/opset4_tbl.hpp" + #include "ngraph/opsets/opset5_tbl.hpp" + #include "ngraph/opsets/opset6_tbl.hpp" +#undef NGRAPH_OP + }; + return inputsMap; +} + +} // namespace LayerTestsDefinitions \ No newline at end of file diff --git a/inference-engine/tests/functional/shared_test_classes/src/read_ir/read_ir.cpp b/inference-engine/tests/functional/shared_test_classes/src/read_ir/read_ir.cpp new file mode 100644 index 00000000000000..6110c6b762904c --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/read_ir/read_ir.cpp @@ -0,0 +1,89 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "functional_test_utils/core_config.hpp" + +#include "shared_test_classes/read_ir/read_ir.hpp" +#include "shared_test_classes/read_ir/compare_results.hpp" +#include "shared_test_classes/read_ir/generate_inputs.hpp" + +namespace LayerTestsDefinitions { +std::string ReadIRTest::getTestCaseName(const testing::TestParamInfo>& obj) { + std::string pathToModel, deviceName; + std::tie(pathToModel, deviceName) = obj.param; + + std::ostringstream result; + result << "ModelPath=" << pathToModel << "_"; + result << "TargetDevice=" << deviceName << "_"; + return result.str(); +} + +void ReadIRTest::SetUp() { + std::tie(pathToModel, targetDevice) = this->GetParam(); + cnnNetwork = getCore()->ReadNetwork(pathToModel); + function = cnnNetwork.getFunction(); +} + +void ReadIRTest::GenerateInputs() { + auto inputMap = getInputMap(); + const auto& inputsInfo = executableNetwork.GetInputsInfo(); + for (const auto& param : function->get_parameters()) { + const auto infoIt = inputsInfo.find(param->get_friendly_name()); + GTEST_ASSERT_NE(infoIt, inputsInfo.cend()); + + const auto& info = infoIt->second; + for (size_t i = 0; i < param->get_output_size(); i++) { + for (const auto& node : param->get_output_target_inputs(i)) { + const auto nodePtr = node.get_node()->shared_from_this(); + auto it = inputMap.find(nodePtr->get_type_info()); + for (size_t port = 0; port < nodePtr->get_input_size(); ++port) { + if (nodePtr->get_input_node_ptr(port)->shared_from_this() == param->shared_from_this()) { + inputs.push_back(it->second(nodePtr, *info, port)); + } + } + } + } + } +} + +void ReadIRTest::Compare(const std::vector> &expected, + const std::vector &actual) { + auto compareMap = getCompareMap(); + for (const auto& result : function->get_results()) { + for (size_t i = 0; i < result->get_input_size(); ++i) { + const auto inputNode = result->get_input_node_shared_ptr(i); + auto it = compareMap.find(inputNode->get_type_info()); + it->second(inputNode, expected, actual, threshold); + } + } +} + +std::vector ReadIRTest::GetOutputs() { + std::vector outputs; +// CNNNetworkNGraphImpl::getOVNameForTensor works incorrect: _tensorNames is empty +// for (const auto& result : function->get_results()) { +// outputs.push_back(inferRequest.GetBlob(cnnNetwork.getOVNameForTensor(result->get_friendly_name()))); +// } + + for (const auto& result : function->get_results()) { + for (size_t inPort = 0; inPort < result->get_input_size(); ++inPort) { + const auto& inputNode = result->get_input_node_shared_ptr(inPort); + for (size_t outPort = 0; outPort < inputNode->get_output_size(); ++outPort) { + for (const auto& out : inputNode->get_output_target_inputs(outPort)) { + if (out.get_node()->shared_from_this() == result) { + std::string name = inputNode->get_friendly_name(); + if (inputNode->get_output_size() > 1) { + name += "." + std::to_string(outPort); + } + outputs.push_back(inferRequest.GetBlob(name)); + break; + } + } + } + } + } + return outputs; +} +} // namespace LayerTestsDefinitions + diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/activation.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/activation.cpp index a2a320f9f22b57..8e0932b8e2018d 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/activation.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/activation.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -41,6 +40,7 @@ void ActivationLayerTest::SetUp() { auto constantsValue = activationDecl.second; auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); auto params = ngraph::builder::makeParams(ngPrc, {shapes.first}); + params[0]->set_friendly_name("Input"); auto activation = ngraph::builder::makeActivation(params[0], ngPrc, activationType, shapes.second, constantsValue); function = std::make_shared(ngraph::NodeVector{activation}, params); @@ -147,7 +147,7 @@ ngraph::ParameterVector ActivationParamLayerTest::createActivationParams(ngraph: return seluParam; } default: - THROW_IE_EXCEPTION << "Unsupported activation type for Params test type"; + IE_THROW() << "Unsupported activation type for Params test type"; } } @@ -178,13 +178,13 @@ void ActivationParamLayerTest::generateActivationBlob(std::vector constan blobHardSigmoidLambda = FuncTestUtils::createAndFillBlobWithFloatArray(blobHardSigmoidLambda->getTensorDesc(), &lambda, 1); } default: - THROW_IE_EXCEPTION << "Unsupported activation type for Params test type"; + IE_THROW() << "Unsupported activation type for Params test type"; } } void ActivationParamLayerTest::Infer() { inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); + auto blobInput = inferRequest.GetBlob("Input"); blobInput = FuncTestUtils::createAndFillBlobFloat(blobInput->getTensorDesc()); @@ -211,4 +211,32 @@ void ActivationParamLayerTest::SetUp() { auto activation = ngraph::builder::makeActivation(params, ngPrc, activationType); function = std::make_shared(ngraph::NodeVector{activation}, params); } + +void ActivationDynamicLayerTest::Run() { + const auto& params = function->get_parameters(); + ngraph::PartialShape output_shape; + + // make each parameter dimension dynamic with range {1 .. prev_dim * 2} + for (const auto& parameter : params) { + auto& dynamic_pshape = parameter->get_partial_shape(); + NGRAPH_CHECK(dynamic_pshape.rank().is_static(), + "tests are not prepared to work with dynamically ranked inputs"); + for (size_t i = 0; i < dynamic_pshape.rank().get_length(); ++i) { + if (static_dims.count(i)) + continue; + dynamic_pshape[i] = {1, dynamic_pshape[i].get_max_length() * 2}; + } + parameter->set_partial_shape(dynamic_pshape); + if (parameter->get_friendly_name() == "Input") + output_shape = dynamic_pshape; + } + function->validate_nodes_and_infer_types(); + + const auto& results = function->get_results(); + NGRAPH_CHECK(results.size() == 1); + ASSERT_EQ(results[0]->get_output_partial_shape(0), output_shape); + // no inference and checks are done here -- just shape check because we miss CNNNetwork functionality + // to handle dynamic inputs-outputs and test functionality to generate blob of a certain shape +} + } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_norm.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_norm.cpp index 8ccbe96faacd29..c9185270343e72 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_norm.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_norm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_to_space.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_to_space.cpp index 5aa8f6c0ddf872..873e8e7deb6b96 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_to_space.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/batch_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/binary_convolution.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/binary_convolution.cpp new file mode 100644 index 00000000000000..a5ca59e73faeb6 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/binary_convolution.cpp @@ -0,0 +1,79 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_layer/binary_convolution.hpp" + +namespace LayerTestsDefinitions { + +std::string BinaryConvolutionLayerTest::getTestCaseName(testing::TestParamInfo obj) { + binConvSpecificParams binConvParams; + InferenceEngine::Precision netPrecision; + InferenceEngine::Precision inPrc, outPrc; + InferenceEngine::Layout inLayout, outLayout; + InferenceEngine::SizeVector inputShape; + std::string targetDevice; + + std::tie(binConvParams, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShape, targetDevice) = obj.param; + + ngraph::op::PadType padType; + InferenceEngine::SizeVector kernel, stride, dilation; + std::vector padBegin, padEnd; + size_t convOutChannels; + float padValue; + std::tie(kernel, stride, padBegin, padEnd, dilation, convOutChannels, padType, padValue) = binConvParams; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(inputShape) << "_"; + result << "KS=" << CommonTestUtils::vec2str(kernel) << "_"; + result << "S=" << CommonTestUtils::vec2str(stride) << "_"; + result << "PB=" << CommonTestUtils::vec2str(padBegin) << "_"; + result << "PE=" << CommonTestUtils::vec2str(padEnd) << "_"; + result << "D=" << CommonTestUtils::vec2str(dilation) << "_"; + result << "O=" << convOutChannels << "_"; + result << "AP=" << padType << "_"; + result << "PV=" << padValue << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "inPRC=" << inPrc.name() << "_"; + result << "outPRC=" << outPrc.name() << "_"; + result << "inL=" << inLayout << "_"; + result << "outL=" << outLayout << "_"; + result << "trgDev=" << targetDevice; + return result.str(); +} + +InferenceEngine::Blob::Ptr BinaryConvolutionLayerTest::GenerateInput(const InferenceEngine::InputInfo &info) const { + InferenceEngine::Blob::Ptr blobPtr; + const std::string name = info.name(); + // there is no input generation for filters since CPU implementation uses Constant + // TODO: enable filters input generation as Parameter when supported (Issue 50148) + if (name == "a_data_batch") { + blobPtr = FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 1, 0, 1, 7235346); + } + return blobPtr; +} + +void BinaryConvolutionLayerTest::SetUp() { + binConvSpecificParams binConvParams; + InferenceEngine::Precision netPrecision; + InferenceEngine::SizeVector inputShape; + + std::tie(binConvParams, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShape, targetDevice) = + this->GetParam(); + + ngraph::op::PadType padType; + InferenceEngine::SizeVector kernelSize, strides, dilations; + std::vector padsBegin, padsEnd; + size_t numOutChannels; + float padValue; + std::tie(kernelSize, strides, padsBegin, padsEnd, dilations, numOutChannels, padType, padValue) = binConvParams; + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto params = ngraph::builder::makeParams(ngPrc, {{"a_data_batch", inputShape}}); + // TODO: refactor build BinaryConvolution op to accept filters input as Parameter + auto binConv = ngraph::builder::makeBinaryConvolution(params[0], kernelSize, strides, padsBegin, padsEnd, dilations, padType, numOutChannels, + padValue); + ngraph::ResultVector results{std::make_shared(binConv)}; + function = std::make_shared(results, params, "BinaryConvolution"); +} + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/broadcast.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/broadcast.cpp index fc4aad99260737..2961551648accf 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/broadcast.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/bucketize.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/bucketize.cpp index def1575fcd3999..c10d47cc699f7b 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/bucketize.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/bucketize.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/clamp.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/clamp.cpp new file mode 100644 index 00000000000000..0fae07ccc745e1 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/clamp.cpp @@ -0,0 +1,40 @@ +// Copyright (C) 2021 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_layer/clamp.hpp" + +namespace LayerTestsDefinitions { + +std::string ClampLayerTest::getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::SizeVector inShape; + std::pair interval; + InferenceEngine::Precision netPrc; + std::string targetDevice; + + std::tie(inShape, interval, netPrc, targetDevice) = obj.param; + + std::ostringstream result; + result << "inShape=" << CommonTestUtils::vec2str(inShape) << "_"; + result << "min=" << interval.first << "_"; + result << "max=" << interval.second << "_"; + result << "netPrc=" << netPrc.name() << "_"; + result << "trgDev=" << targetDevice; + return result.str(); +} + +void ClampLayerTest::SetUp() { + InferenceEngine::SizeVector inShape; + std::pair interval; + InferenceEngine::Precision netPrc; + + std::tie(inShape, interval, netPrc, targetDevice) = this->GetParam(); + + auto ngNetPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrc); + auto input = std::make_shared(ngNetPrc, ngraph::Shape(inShape)); + auto clamp = std::make_shared(input, interval.first, interval.second); + function = std::make_shared(std::make_shared(clamp), ngraph::ParameterVector{input}); +} + +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/comparison.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/comparison.cpp index 4ccee588367121..1f2981b35ac6d5 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/comparison.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/comparison.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/concat.cpp index af5bfa39d25ee8..8f09acbbc1c9ea 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert.cpp index 6c5ae263ae46be..17c23818fe9c67 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert_like.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert_like.cpp index 9f62289fc4ec61..d08d402c81e3b8 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert_like.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convert_like.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution.cpp index 830b2e12a11a0b..744bb9a2b73126 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution_backprop_data.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution_backprop_data.cpp index 3d42398b444e59..c6730a3aaecf30 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder.cpp index 1de0313680c1bf..e9c0d1dd103dba 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder_seq_len.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder_seq_len.cpp index f05c900f664963..c207eeb06963bd 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder_seq_len.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_greedy_decoder_seq_len.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_loss.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_loss.cpp index ab9f2c08617ef7..4939d9326f5121 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_loss.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/ctc_loss.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/cum_sum.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/cum_sum.cpp index 1d8c0584dbca7e..ae371c7b229e7a 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/cum_sum.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/cum_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/depth_to_space.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/depth_to_space.cpp index 9129ebea0790d9..9345ee6d01eda3 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/depth_to_space.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp index a60c204db55eea..36190dbe0a5990 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -64,10 +64,7 @@ std::string DetectionOutputLayerTest::getTestCaseName(testing::TestParamInfogetTensorDesc()); blob->allocate(); CommonTestUtils::fill_data_random_float(blob, range, 0, resolution); - inferRequest.SetBlob(info->name(), blob); inputs.push_back(blob); it++; } - inferRequest.Infer(); } void DetectionOutputLayerTest::Compare(const std::vector &expected, const InferenceEngine::Blob::Ptr &actual) { diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/eltwise.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/eltwise.cpp index 164587f60cac64..0a84a71aa6e329 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/eltwise.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/eltwise.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -45,6 +44,8 @@ InferenceEngine::Blob::Ptr EltwiseLayerTest::GenerateInput(const InferenceEngine case ngraph::helpers::EltwiseTypes::DIVIDE: return info.getPrecision().is_float() ? FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 2, 128): FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 100, 101); + case ngraph::helpers::EltwiseTypes::ERF: + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 6, -3); default: return FuncTestUtils::createAndFillBlob(info.getTensorDesc()); } @@ -68,7 +69,7 @@ void EltwiseLayerTest::SetUp() { inputShape1 = inputShapes.front(); inputShape2 = inputShapes.back(); } else { - THROW_IE_EXCEPTION << "Incorrect number of input shapes"; + IE_THROW() << "Incorrect number of input shapes"; } configuration.insert(additional_config.begin(), additional_config.end()); @@ -107,4 +108,4 @@ void EltwiseLayerTest::SetUp() { auto eltwise = ngraph::builder::makeEltwise(input[0], secondaryInput, eltwiseType); function = std::make_shared(eltwise, input, "Eltwise"); } -} // namespace LayerTestsDefinitions \ No newline at end of file +} // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_offsets_sum.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_offsets_sum.cpp index fc0e711bb75b6a..54991d0b237f70 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_offsets_sum.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_offsets_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_packed_sum.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_packed_sum.cpp index 98a70f092cf4d8..32ba24efa30378 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_packed_sum.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_bag_packed_sum.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "shared_test_classes/single_layer/embedding_bag_packed_sum.hpp" #include "ngraph_functions/builders.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_segments_sum.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_segments_sum.cpp index 27e1ef7941596f..3fe0faf563932a 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_segments_sum.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/embedding_segments_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/extract_image_patches.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/extract_image_patches.cpp index 750b3ba8a04ff4..7dad336eed6dc6 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/extract_image_patches.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/extract_image_patches.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/fake_quantize.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/fake_quantize.cpp index e09811ccb4f8c6..57bed0c9044557 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/fake_quantize.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/fake_quantize.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather.cpp index 8cfc86e6c0467e..77aca8d652e1f0 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_elements.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_elements.cpp index c87c3a14b665a5..af5832302aa0be 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_elements.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_nd.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_nd.cpp index a566830357e4fd..7ceca5670ff1ef 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_nd.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_tree.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_tree.cpp index 06ca1448b3f55e..c9229aa4675f9a 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_tree.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gather_tree.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/grn.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/grn.cpp index 4ebfbee9793e1e..07ede562536db9 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/grn.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/grn.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution.cpp index ce48b42e9b4c3c..0b301b5d273090 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution_backprop_data.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution_backprop_data.cpp index ee13c9627abcf8..a329ad4e6e5d1f 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_cell.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_cell.cpp index 3aea409dcb5e20..48aeeb53fef44e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_cell.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_sequence.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_sequence.cpp index ee8edd16937ebd..c89a1bc06e29e1 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_sequence.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/gru_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,6 +44,7 @@ namespace LayerTestsDefinitions { } void GRUSequenceTest::SetUp() { + using namespace ngraph::helpers; size_t seq_lenghts; size_t batch; size_t hidden_size; @@ -66,8 +67,9 @@ namespace LayerTestsDefinitions { m_max_seq_len = seq_lenghts; auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); auto params = ngraph::builder::makeParams(ngPrc, {inputShapes[0], inputShapes[1]}); - if (m_mode == ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || - m_mode == ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM) { + if (m_mode == SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM) { auto seq_lengths = ngraph::builder::makeParams(ngraph::element::i64, {inputShapes[2]}).at(0); seq_lengths->set_friendly_name("seq_lengths"); params.push_back(seq_lengths); @@ -79,39 +81,31 @@ namespace LayerTestsDefinitions { ngraph::ResultVector results{std::make_shared(gru_sequence->output(0)), std::make_shared(gru_sequence->output(1))}; function = std::make_shared(results, params, "gru_sequence"); - if (m_mode != ngraph::helpers::SequenceTestsMode::PURE_SEQ) { + bool is_pure_sequence = (m_mode == SequenceTestsMode::PURE_SEQ || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST); + if (!is_pure_sequence) { ngraph::pass::Manager manager; if (direction == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL) manager.register_pass(); manager.register_pass(); manager.run_passes(function); - bool ti_found = ngraph::helpers::is_tensor_iterator_exist(function); + bool ti_found = is_tensor_iterator_exist(function); EXPECT_EQ(ti_found, true); } else { - bool ti_found = ngraph::helpers::is_tensor_iterator_exist(function); + bool ti_found = is_tensor_iterator_exist(function); EXPECT_EQ(ti_found, false); } } - void GRUSequenceTest::Infer() { - inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); - + void GRUSequenceTest::GenerateInputs() { for (const auto &input : executableNetwork.GetInputsInfo()) { const auto &info = input.second; auto blob = GenerateInput(*info); if (input.first == "seq_lengths") { blob = FuncTestUtils::createAndFillBlob(info->getTensorDesc(), m_max_seq_len, 0); } - - inferRequest.SetBlob(info->name(), blob); inputs.push_back(blob); } - if (configuration.count(InferenceEngine::PluginConfigParams::KEY_DYN_BATCH_ENABLED) && - configuration.count(InferenceEngine::PluginConfigParams::YES)) { - auto batchSize = executableNetwork.GetInputsInfo().begin()->second->getTensorDesc().getDims()[0] / 2; - inferRequest.SetBatch(batchSize); - } - inferRequest.Infer(); } } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/interpolate.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/interpolate.cpp index 9e836b3a296ac2..b7b566922acd79 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/interpolate.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/interpolate.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/log_softmax.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/log_softmax.cpp index df1b40fd90b6fa..8b1bf040748930 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/log_softmax.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/log_softmax.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/logical.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/logical.cpp index e1979af54f4c2c..2172ec87e2e435 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/logical.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/logical.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/loop.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/loop.cpp index 1265757c0bf19d..e10fda90c26604 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/loop.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/loop.cpp @@ -1,8 +1,9 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "shared_test_classes/single_layer/loop.hpp" +#include namespace LayerTestsDefinitions { @@ -143,6 +144,7 @@ namespace LayerTestsDefinitions { SKIP_IF_CURRENT_TEST_IS_DISABLED() auto args_papck = std::tie(static_iter_num, max_iter_num, dynamic_exit, axis); std::tie( + unrolling, static_continue_cond, args_papck, start_value, @@ -212,6 +214,11 @@ namespace LayerTestsDefinitions { function = std::make_shared( ngraph::OutputVector {loop}, params); + if (unrolling) { + ngraph::pass::Manager manager; + manager.register_pass(); + manager.run_passes(function); + } } InferenceEngine::Blob::Ptr StaticShapeLoopTest::GenerateInput(const InferenceEngine::InputInfo &info) const { diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/lrn.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/lrn.cpp index 2170c3f2114569..248493a38515ff 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/lrn.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/lrn.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_cell.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_cell.cpp index 0d38fbea707731..260290539af22a 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_cell.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_sequence.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_sequence.cpp index 1756a0616c544a..f26475d84eb0d0 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_sequence.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/lstm_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -44,6 +44,8 @@ namespace LayerTestsDefinitions { } void LSTMSequenceTest::SetUp() { + using namespace ngraph::helpers; + using namespace ngraph::builder; size_t seq_lenghts; size_t batch; @@ -64,39 +66,39 @@ namespace LayerTestsDefinitions { {batch}, {num_directions, 4 * hidden_size, input_size}, {num_directions, 4 * hidden_size, hidden_size}, {num_directions, 4 * hidden_size}}, }; auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); - auto params = ngraph::builder::makeParams(ngPrc, {inputShapes[0], inputShapes[1], inputShapes[2]}); - if (m_mode == ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || - m_mode == ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM) { - auto seq_lengths = ngraph::builder::makeParams(ngraph::element::i64, {inputShapes[3]}).at(0); + auto params = makeParams(ngPrc, {inputShapes[0], inputShapes[1], inputShapes[2]}); + if (m_mode == SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM) { + auto seq_lengths = makeParams(ngraph::element::i64, {inputShapes[3]}).at(0); seq_lengths->set_friendly_name("seq_lengths"); params.push_back(seq_lengths); } std::vector WRB = {inputShapes[4], inputShapes[5], inputShapes[6], inputShapes[3]}; - auto lstm_sequence = ngraph::builder::makeLSTM(ngraph::helpers::convert2OutputVector(ngraph::helpers::castOps2Nodes(params)), - WRB, hidden_size, activations, {}, {}, clip, true, direction, - m_mode); + auto lstm_sequence = makeLSTM(convert2OutputVector(castOps2Nodes(params)), WRB, hidden_size, activations, + {}, {}, clip, true, direction, m_mode); ngraph::ResultVector results{std::make_shared(lstm_sequence->output(0)), std::make_shared(lstm_sequence->output(1)), std::make_shared(lstm_sequence->output(2))}; function = std::make_shared(results, params, "lstm_sequence"); - if (m_mode != ngraph::helpers::SequenceTestsMode::PURE_SEQ) { + bool is_pure_sequence = (m_mode == SequenceTestsMode::PURE_SEQ || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST); + if (!is_pure_sequence) { ngraph::pass::Manager manager; if (direction == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL) manager.register_pass(); manager.register_pass(); manager.run_passes(function); - bool ti_found = ngraph::helpers::is_tensor_iterator_exist(function); + bool ti_found = is_tensor_iterator_exist(function); EXPECT_EQ(ti_found, true); } else { - bool ti_found = ngraph::helpers::is_tensor_iterator_exist(function); + bool ti_found = is_tensor_iterator_exist(function); EXPECT_EQ(ti_found, false); - } + } } - void LSTMSequenceTest::Infer() { - inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); - + void LSTMSequenceTest::GenerateInputs() { for (const auto &input : executableNetwork.GetInputsInfo()) { const auto &info = input.second; auto blob = GenerateInput(*info); @@ -104,14 +106,7 @@ namespace LayerTestsDefinitions { blob = FuncTestUtils::createAndFillBlob(info->getTensorDesc(), m_max_seq_len, 0); } - inferRequest.SetBlob(info->name(), blob); inputs.push_back(blob); } - if (configuration.count(InferenceEngine::PluginConfigParams::KEY_DYN_BATCH_ENABLED) && - configuration.count(InferenceEngine::PluginConfigParams::YES)) { - auto batchSize = executableNetwork.GetInputsInfo().begin()->second->getTensorDesc().getDims()[0] / 2; - inferRequest.SetBatch(batchSize); - } - inferRequest.Infer(); } } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/mat_mul.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/mat_mul.cpp index 19a6f9fa10d437..c75c89952057be 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/mat_mul.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/minimum_maximum.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/minimum_maximum.cpp index 8d9545abf48dea..a3eada5c2a6426 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/minimum_maximum.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/minimum_maximum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -35,7 +35,7 @@ namespace LayerTestsDefinitions { ngraph::helpers::MinMaxOpType opType; std::tie(inputShapes, opType, netPrecision, inPrc, outPrc, inLayout, outLayout, inputType, targetDevice) = this->GetParam(); if (inputShapes.size() != 2) { - THROW_IE_EXCEPTION << "Unsupported inputs number for Minimum/Maximum operaton"; + IE_THROW() << "Unsupported inputs number for Minimum/Maximum operaton"; } auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); auto input = ngraph::builder::makeParams(ngPrc, {inputShapes[0]}); diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/mvn.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/mvn.cpp index 0b27aaed76b756..2ae7af4116b302 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/mvn.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/non_max_suppression.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/non_max_suppression.cpp index 5554dcfd0294d3..5444a3c206b523 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/non_max_suppression.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -37,10 +37,7 @@ std::string NmsLayerTest::getTestCaseName(testing::TestParamInfo obj) return result.str(); } -void NmsLayerTest::Infer() { - inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); - +void NmsLayerTest::GenerateInputs() { size_t it = 0; for (const auto &input : cnnNetwork.getInputsInfo()) { const auto &info = input.second; @@ -53,11 +50,9 @@ void NmsLayerTest::Infer() { } else { blob = GenerateInput(*info); } - inferRequest.SetBlob(info->name(), blob); inputs.push_back(blob); it++; } - inferRequest.Infer(); } void NmsLayerTest::Compare(const std::vector> &expectedOutputs, const std::vector &actualOutputs) { diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/nonzero.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/nonzero.cpp index 3964348637c110..f504b0e16d4e8c 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/nonzero.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/nonzero.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/normalize_l2.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/normalize_l2.cpp index cf31b316e103eb..58fd09d41d13f2 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/normalize_l2.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/normalize_l2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/one_hot.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/one_hot.cpp index 05ba2a0fa747e9..324989b93f74fc 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/one_hot.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/one_hot.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/pad.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/pad.cpp index 0a0ef76222ff6b..71353007f6f128 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/pad.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/pooling.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/pooling.cpp index 8a4a51f1212c87..8a68be10a8d588 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/pooling.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/pooling.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/power.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/power.cpp index 6f8f341f7a8fef..7fc0cc20899e6e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/power.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/power.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/prior_box_clustered.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/prior_box_clustered.cpp index d85bd5bd1c6ac8..ce85bf79bd4784 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/prior_box_clustered.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/prior_box_clustered.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/proposal.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/proposal.cpp index 9efed201956e5f..823a9abd87afa0 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/proposal.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/proposal.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/psroi_pooling.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/psroi_pooling.cpp index 92619f9fe97a63..d2260b3d3dcd2f 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/psroi_pooling.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/psroi_pooling.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -42,7 +41,7 @@ static int randInt(int low, int high) { return dis(gen); } -static void fillROITensor(float* buffer, int numROIs, int batchSize, + void PSROIPoolingLayerTest::fillROITensor(float* buffer, int numROIs, int batchSize, int height, int width, int groupSize, float spatialScale, int spatialBinsX, int spatialBinsY, const std::string& mode) { int minRoiWidth = groupSize; @@ -61,8 +60,8 @@ static void fillROITensor(float* buffer, int numROIs, int batchSize, } int batchId = 0; for (int i = 0; i < numROIs; i++) { - int sizeX = std::min(width, randInt(minRoiWidth, maxRoiWidth)); - int sizeY = std::min(height, randInt(minRoiHeight, maxRoiHeight)); + int sizeX = std::min(width, randInt(std::min(minRoiWidth, maxRoiWidth), std::max(minRoiWidth, maxRoiWidth))); + int sizeY = std::min(height, randInt(std::min(minRoiWidth, maxRoiWidth), std::max(minRoiWidth, maxRoiWidth))); int startX = randInt(0, std::max(1, width - sizeX - 1)); int startY = randInt(0, std::max(1, height - sizeY - 1)); @@ -77,10 +76,7 @@ static void fillROITensor(float* buffer, int numROIs, int batchSize, } } -void PSROIPoolingLayerTest::Infer() { - inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); - +void PSROIPoolingLayerTest::GenerateInputs() { auto inputShape = cnnNetwork.getInputShapes().begin()->second; size_t it = 0; @@ -97,11 +93,9 @@ void PSROIPoolingLayerTest::Infer() { } else { blob = GenerateInput(*info); } - inferRequest.SetBlob(info->name(), blob); inputs.push_back(blob); it++; } - inferRequest.Infer(); } void PSROIPoolingLayerTest::SetUp() { diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/range.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/range.cpp index e06e5acd3ed085..1695737c3ef72e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/range.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/range.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reduce_ops.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reduce_ops.cpp index 34f055bcdbf8be..c410fb0b39d5f4 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reduce_ops.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reduce_ops.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,9 +32,6 @@ std::string ReduceOpsLayerTest::getTestCaseName(testing::TestParamInfo(reduce)}; function = std::make_shared(results, params, "Reduce"); } +InferenceEngine::Blob::Ptr ReduceOpsLayerTest::GenerateInput(const InferenceEngine::InputInfo &info) const { + ngraph::helpers::ReductionType reductionType = std::get<3>(GetParam()); + InferenceEngine::Precision netPrecision = std::get<4>(GetParam()); + if (reductionType == ngraph::helpers::ReductionType::LogicalOr || + reductionType == ngraph::helpers::ReductionType::LogicalAnd) { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 2, 0); + } else if (!netPrecision.is_float()) { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), 5, 0); + } + auto td = info.getTensorDesc(); + auto blob = make_blob_with_precision(td); + blob->allocate(); + CommonTestUtils::fill_data_random_float(blob, 5, 0, 1000); + return blob; +} InferenceEngine::Blob::Ptr ReduceOpsLayerWithSpecificInputTest::GenerateInput(const InferenceEngine::InputInfo &info) const { auto axis_vec = std::get<0>(GetParam()); diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/region_yolo.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/region_yolo.cpp index 928954ddb6e4ed..9438685889ad34 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/region_yolo.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/region_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reorg_yolo.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reorg_yolo.cpp index 0e10ec6a5c3f00..fbb8287ffa4d4d 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reorg_yolo.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reorg_yolo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reshape.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reshape.cpp index 08b81da1b6d0a3..3063b01b27b1ea 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reshape.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reshape.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reverse_sequence.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reverse_sequence.cpp index 0977ddcd1fb946..3bc82a7f4aa8f6 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/reverse_sequence.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/reverse_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_cell.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_cell.cpp index 9175872007eed2..19e125408828df 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_cell.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_sequence.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_sequence.cpp index e0a660203cfd88..c8ffc3111966fe 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_sequence.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/rnn_sequence.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -43,6 +43,7 @@ namespace LayerTestsDefinitions { } void RNNSequenceTest::SetUp() { + using namespace ngraph::helpers; size_t seq_lenghts; size_t batch; size_t hidden_size; @@ -64,8 +65,9 @@ namespace LayerTestsDefinitions { m_max_seq_len = seq_lenghts; auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); auto params = ngraph::builder::makeParams(ngPrc, {inputShapes[0], inputShapes[1]}); - if (m_mode == ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || - m_mode == ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM) { + if (m_mode == SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM) { auto seq_lengths = ngraph::builder::makeParams(ngraph::element::i64, {inputShapes[2]}).at(0); seq_lengths->set_friendly_name("seq_lengths"); params.push_back(seq_lengths); @@ -77,7 +79,10 @@ namespace LayerTestsDefinitions { ngraph::ResultVector results{std::make_shared(rnn_sequence->output(0)), std::make_shared(rnn_sequence->output(1))}; function = std::make_shared(results, params, "rnn_sequence"); - if (m_mode != ngraph::helpers::SequenceTestsMode::PURE_SEQ) { + bool is_pure_sequence = (m_mode == SequenceTestsMode::PURE_SEQ || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM || + m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST); + if (!is_pure_sequence) { ngraph::pass::Manager manager; if (direction == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL) manager.register_pass(); @@ -91,10 +96,7 @@ namespace LayerTestsDefinitions { } } - void RNNSequenceTest::Infer() { - inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); - + void RNNSequenceTest::GenerateInputs() { for (const auto &input : executableNetwork.GetInputsInfo()) { const auto &info = input.second; auto blob = GenerateInput(*info); @@ -102,14 +104,7 @@ namespace LayerTestsDefinitions { blob = FuncTestUtils::createAndFillBlob(info->getTensorDesc(), m_max_seq_len, 0); } - inferRequest.SetBlob(info->name(), blob); inputs.push_back(blob); } - if (configuration.count(InferenceEngine::PluginConfigParams::KEY_DYN_BATCH_ENABLED) && - configuration.count(InferenceEngine::PluginConfigParams::YES)) { - auto batchSize = executableNetwork.GetInputsInfo().begin()->second->getTensorDesc().getDims()[0] / 2; - inferRequest.SetBatch(batchSize); - } - inferRequest.Infer(); } } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_align.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_align.cpp index ed1c180533992f..57b5393811d6ca 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_align.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_align.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -47,8 +46,8 @@ static int randInt(int low, int high) { return dis(gen); } -static void fillCoordTensor(std::vector & coords, int height, int width, - float spatialScale, int pooledRatio, int pooledH, int pooledW) { +void ROIAlignLayerTest::fillCoordTensor(std::vector& coords, int height, int width, + float spatialScale, int pooledRatio, int pooledH, int pooledW) { int minRoiWidth = pooledW; int maxRoiWidth = width / pooledRatio; int minRoiHeight = pooledH; @@ -66,7 +65,7 @@ static void fillCoordTensor(std::vector & coords, int height, int width, coords[i * 4 + 3] = (startY + sizeY - 1) / spatialScale; } } -static void fillIdxTensor(std::vector & idx, int batchSize) { +void ROIAlignLayerTest::fillIdxTensor(std::vector& idx, int batchSize) { int batchId = 0; for (int i = 0; i < idx.size(); i++) { idx[i] = batchId; @@ -74,20 +73,6 @@ static void fillIdxTensor(std::vector & idx, int batchSize) { } } -void ROIAlignLayerTest::Infer() { - inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); - auto inputShape = cnnNetwork.getInputShapes().begin()->second; - for (const auto &input : cnnNetwork.getInputsInfo()) { - const auto &info = input.second; - Blob::Ptr blob; - blob = GenerateInput(*info); - inferRequest.SetBlob(info->name(), blob); - inputs.push_back(blob); - } - inferRequest.Infer(); -} - void ROIAlignLayerTest::SetUp() { std::vector inputShape; std::vector coordsShape; @@ -109,7 +94,7 @@ void ROIAlignLayerTest::SetUp() { fillIdxTensor(roiIdxVector, inputShape[0]); ngraph::Shape idxShape = { coordsShape[0] }; - auto coords = std::make_shared(ngraph::element::f32, coordsShape, proposalVector.data()); + auto coords = std::make_shared(ngPrc, coordsShape, proposalVector.data()); auto roisIdx = std::make_shared(ngraph::element::i32, idxShape, roiIdxVector.data()); std::shared_ptr roiAlign = diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_pooling.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_pooling.cpp index ead8c9848128fd..f8d3ba8569306d 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_pooling.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/roi_pooling.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,10 +35,7 @@ namespace LayerTestsDefinitions { return result.str(); } - void ROIPoolingLayerTest::Infer() { - inferRequest = executableNetwork.CreateInferRequest(); - inputs.clear(); - + void ROIPoolingLayerTest::GenerateInputs() { auto feat_map_shape = cnnNetwork.getInputShapes().begin()->second; const auto is_roi_max_mode = (pool_method == ngraph::helpers::ROIPoolingTypes::ROI_MAX); @@ -60,11 +56,9 @@ namespace LayerTestsDefinitions { } else { blob = GenerateInput(*info); } - inferRequest.SetBlob(info->name(), blob); inputs.push_back(blob); it++; } - inferRequest.Infer(); } void ROIPoolingLayerTest::SetUp() { diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_ND_update.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_ND_update.cpp index d8c07e3fad8464..bff111d7027669 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_ND_update.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_ND_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,7 +8,7 @@ namespace LayerTestsDefinitions { std::string ScatterNDUpdateLayerTest::getTestCaseName(const testing::TestParamInfo &obj) { - sliceSelcetInShape shapeDescript; + sliceSelectInShape shapeDescript; std::vector inShape; std::vector indicesShape; std::vector indicesValue; @@ -28,9 +28,9 @@ std::string ScatterNDUpdateLayerTest::getTestCaseName(const testing::TestParamIn return result.str(); } -std::vector ScatterNDUpdateLayerTest::combineShapes( +std::vector ScatterNDUpdateLayerTest::combineShapes( const std::map, std::map, std::vector>>& inputShapes) { - std::vector resVec; + std::vector resVec; for (auto& inputShape : inputShapes) { for (auto& item : inputShape.second) { auto indiceShape = item.first; @@ -50,7 +50,7 @@ std::vector ScatterNDUpdateLayerTest::combineShapes( } void ScatterNDUpdateLayerTest::SetUp() { - sliceSelcetInShape shapeDescript; + sliceSelectInShape shapeDescript; InferenceEngine::SizeVector inShape; InferenceEngine::SizeVector indicesShape; InferenceEngine::SizeVector indicesValue; diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_elements_update.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_elements_update.cpp index b9422c46fdf74a..e5d28fc4cef9eb 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_elements_update.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_elements_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_update.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_update.cpp index 5053a225d1b013..e7a1fa2707a4a3 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_update.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/scatter_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/select.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/select.cpp index 43f20309cb2642..c8438bf0ba1a18 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/select.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/select.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/shape_of.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/shape_of.cpp index 98522daf5e722f..fabec53f8baa2f 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/shape_of.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/shape_of.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/shuffle_channels.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/shuffle_channels.cpp index 1217ea256c68b4..c6312fac05b537 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/shuffle_channels.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/shuffle_channels.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/softmax.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/softmax.cpp index 1b00d622882f3d..d492f5e763cba2 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/softmax.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/softmax.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_batch.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_batch.cpp index 8d1820ab6c0dbe..c2bbf712a71ed3 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_batch.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_depth.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_depth.cpp index 49266bd4db38eb..70d0856d185f21 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_depth.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/space_to_depth.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/split.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/split.cpp index a0d0e205839fe7..6dfa1dab2d558b 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/split.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/squeeze_unsqueeze.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/squeeze_unsqueeze.cpp index 4a3b19b3c928c2..5ea46aee66485e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/squeeze_unsqueeze.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/squeeze_unsqueeze.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2020 Intel Corporation -// +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/strided_slice.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/strided_slice.cpp index 4fd9c256262ed3..20998f5c330a6b 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/strided_slice.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/tensor_iterator.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/tensor_iterator.cpp index 411b3973c3b134..6686c917e9dac8 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/tensor_iterator.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/tensor_iterator.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/tile.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/tile.cpp index d4ce236d9a2e58..6e22c9769bf376 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/tile.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/tile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/topk.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/topk.cpp index fb59c80fccecfa..3886f7f391a3d3 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/topk.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/topk.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/transpose.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/transpose.cpp index d05d90d8ce75ad..8556ccce3f2940 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/transpose.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/transpose.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/variadic_split.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/variadic_split.cpp index 9922080182bd9e..925b5b3dbd13e8 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/variadic_split.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/activation_concats_eltwise.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/activation_concats_eltwise.cpp index 70f947f9bee124..6eab9fce1b7e6c 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/activation_concats_eltwise.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/activation_concats_eltwise.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include "ngraph_functions/builders.hpp" #include "shared_test_classes/subgraph/activation_concats_eltwise.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/basic_lstm.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/basic_lstm.cpp index 529b748ea1baff..4fa81744ea93d9 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/basic_lstm.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/basic_lstm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -105,6 +105,7 @@ void Basic_LSTM_S::Run() { SKIP_IF_CURRENT_TEST_IS_DISABLED() LoadNetwork(); + GenerateInputs(); Infer(); const auto& actualOutputs = GetOutputs(); diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/broadcast_power.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/broadcast_power.cpp index 8af1e2d4b2d4eb..a8f05c22ea675c 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/broadcast_power.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/broadcast_power.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/cascade_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/cascade_concat.cpp index 7730182af3efc2..6a2fc1d6c4067e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/cascade_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/cascade_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/clamp_fq.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/clamp_fq.cpp new file mode 100644 index 00000000000000..a3bdb01d98367b --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/clamp_fq.cpp @@ -0,0 +1,86 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include "shared_test_classes/subgraph/clamp_fq.hpp" + +namespace SubgraphTestsDefinitions { + + std::string ClampFakeQuantizeSubgraphTest::getTestCaseName(testing::TestParamInfo obj) { + fqSpecificParams fqParams; + InferenceEngine::Precision netPrecision; + InferenceEngine::Precision inPrc, outPrc; + InferenceEngine::Layout inLayout, outLayout; + InferenceEngine::SizeVector inputShapes; + std::string targetDevice; + std::pair> config; + std::tie(fqParams, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShapes, targetDevice, config) = obj.param; + std::vector levels; + std::vector> constShape; + std::vector inputParams; + std::vector clampMinMax; + std::tie(levels, constShape, clampMinMax, inputParams) = fqParams; + + std::ostringstream result; + result << "InputShape=" << CommonTestUtils::vec2str(inputShapes) << "_"; + result << "CS=" << CommonTestUtils::vec2str(constShape) << "_"; + result << "LEVELS=" << CommonTestUtils::vec2str(levels) << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "inPRC=" << inPrc.name() << "_"; + result << "outPRC=" << outPrc.name() << "_"; + result << "inL=" << inLayout << "_"; + result << "outL=" << outLayout << "_"; + result << "trgDev=" << targetDevice; + if (!config.first.empty()) { + result << "_targetConfig=" << config.first; + } + if (inputParams.size() == 3) { + result << "_inputArg=" << inputParams[0] << "_" << inputParams[1] << "_" << inputParams[2]; + } + if (clampMinMax.size() == 2) { + result << "_clampMaxMin=" << clampMinMax[0] << "_" << clampMinMax[1]; + } + return result.str(); + } + void ClampFakeQuantizeSubgraphTest::SetUp() { + fqSpecificParams fqParams; + std::vector inputShape; + std::pair> config; + auto netPrecision = InferenceEngine::Precision::UNSPECIFIED; + std::tie(fqParams, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShape, targetDevice, config) = this->GetParam(); + InferenceEngine::SizeVector kernel, stride, dilation; + std::vector levels; + std::vector> constShape; + std::vector clamp_min_max; + std::vector inputArg; + std::tie(levels, constShape, clamp_min_max, inputArg) = fqParams; + if (inputArg.size() == 3) { + inputDataMin = inputArg[0]; + inputDataMax = inputArg[1]; + inputDataResolution = inputArg[2]; + } + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto params = ngraph::builder::makeParams(ngPrc, {inputShape}); + auto paramOuts = ngraph::helpers::convert2OutputVector(ngraph::helpers::castOps2Nodes(params)); + + auto clamp = std::make_shared(paramOuts[0], clamp_min_max[0], clamp_min_max[1]); + + auto FQNode = ngraph::builder::makeFakeQuantize(clamp, ngraph::element::f32, levels[0], constShape[0], + { inputDataMin }, { inputDataMax }, { inputDataMin }, { inputDataMax }); + + + auto FQ = std::dynamic_pointer_cast(FQNode); + auto sigmoid = std::make_shared(FQ); + + ngraph::ResultVector results{std::make_shared(sigmoid)}; + function = std::make_shared(results, params, "fakeQuantizeSubgraph"); + + configuration = config.second; + } + +InferenceEngine::Blob::Ptr ClampFakeQuantizeSubgraphTest::GenerateInput(const InferenceEngine::InputInfo &info) const { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), inputDataMax - inputDataMin, inputDataMin, 1 / inputDataResolution, + seed); +} +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_conv.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_conv.cpp new file mode 100644 index 00000000000000..f2f80e00e8aee3 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_conv.cpp @@ -0,0 +1,89 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/concat_conv.hpp" +#include "ngraph_functions/builders.hpp" + +namespace SubgraphTestsDefinitions { + +std::string ConcatConvTest::getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map configuration; + size_t inputChannels; + size_t outputChannels; + convParams convolutionParams; + std::vector inputShape; + std::vector kernelShape; + size_t stride; + std::tie(netPrecision, targetDevice, configuration, convolutionParams, inputChannels, outputChannels) = obj.param; + std::tie(inputShape, kernelShape, stride) = convolutionParams; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(inputShape) << "_"; + result << "KS=" << CommonTestUtils::vec2str(kernelShape) << "_"; + result << "S=" << stride << "_"; + result << "IC=" << inputChannels << "_"; + result << "OC=" << outputChannels << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice; + for (auto const& configItem : configuration) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + return result.str(); +} + +InferenceEngine::Blob::Ptr ConcatConvTest::GenerateInput(const InferenceEngine::InputInfo& info) const { + InferenceEngine::Blob::Ptr blob = make_blob_with_precision(info.getTensorDesc()); + blob->allocate(); + + auto* rawBlobDataPtr = blob->buffer().as(); + std::vector values = CommonTestUtils::generate_float_numbers(blob->size(), -2.0f, 2.0f); + for (size_t i = 0; i < blob->size(); i++) { + rawBlobDataPtr[i] = values[i]; + } + return blob; +} + +void ConcatConvTest::SetUp() { + InferenceEngine::Precision netPrecision; + std::map tempConfig; + convParams convolutionParams; + size_t inputChannels; + size_t outputChannels; + std::tie(netPrecision, targetDevice, tempConfig, convolutionParams, inputChannels, outputChannels) = this->GetParam(); + configuration.insert(tempConfig.begin(), tempConfig.end()); + + std::vector inputShape; + std::vector kernelShape; + size_t stride; + std::tie(inputShape, kernelShape, stride) = convolutionParams; + + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto params = ngraph::builder::makeParams(ngPrc, { inputShape }); + auto relu1 = std::make_shared(params[0]); + + auto const_values = CommonTestUtils::generate_float_numbers(inputShape[1], -2.0f, 2.0f); + auto constant = ngraph::builder::makeConstant(ngPrc, inputShape, const_values); + auto concat = ngraph::builder::makeConcat({constant, relu1}, 1); + + std::vector convInputShape = {1, inputChannels, 1, 2 * inputShape[0] * inputShape[1] / inputChannels}; + auto reshapePattern1 = std::make_shared(ngraph::element::Type_t::i64, ngraph::Shape{ 4 }, convInputShape); + auto reshape1 = std::make_shared(concat, reshapePattern1, false); + + auto filterWeights = CommonTestUtils::generate_float_numbers(outputChannels * convInputShape[1] * kernelShape[0] * kernelShape[1], + -0.2f, 0.2f); + auto conv = ngraph::builder::makeConvolution(reshape1, ngPrc, { kernelShape[0], kernelShape[1] }, { stride, stride }, { 0, 0 }, + { 0, 0 }, { 1, 1 }, ngraph::op::PadType::VALID, outputChannels, false, filterWeights); + + auto widthAfterConv = (convInputShape[3] - kernelShape[1]) / stride + 1; + std::vector outFormShapes = {1, outputChannels * widthAfterConv }; + + auto reshapePattern2 = std::make_shared(ngraph::element::Type_t::i64, ngraph::Shape{ 2 }, outFormShapes); + auto reshape2 = std::make_shared(conv, reshapePattern2, false); + + function = std::make_shared(reshape2, params, "ConcatConvTest"); +} + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_multi_input.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_multi_input.cpp index a49133d8cfbd19..4134b941058beb 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_multi_input.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_multi_input.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_quantization_during_memory_requantization.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_quantization_during_memory_requantization.cpp index 82ed62a69517a1..b02dc5b86b7f54 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_quantization_during_memory_requantization.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_quantization_during_memory_requantization.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "shared_test_classes/subgraph/concat_quantization_during_memory_requantization.hpp" namespace SubgraphTestsDefinitions { @@ -115,6 +116,7 @@ namespace SubgraphTestsDefinitions { } } IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); Infer(); switchToNgraphFriendlyModel(); Validate(); diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_qunatization.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_qunatization.cpp index c9b45485854b64..18de96d4713bd0 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_qunatization.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/concat_qunatization.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/connect_split_concat_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/connect_split_concat_concat.cpp new file mode 100644 index 00000000000000..5e5e87a463e34c --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/connect_split_concat_concat.cpp @@ -0,0 +1,42 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/connect_split_concat_concat.hpp" + +namespace SubgraphTestsDefinitions { +std::string SplitConcatConcatTest::getTestCaseName(const testing::TestParamInfo &obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map configuration; + std::tie(netPrecision, targetDevice, configuration) = obj.param; + + std::ostringstream result; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice << "_"; + for (auto const &configItem : configuration) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + return result.str(); +} + +void SplitConcatConcatTest::SetUp() { + InferenceEngine::Precision netPrecision; + std::tie(netPrecision, targetDevice, configuration) = this->GetParam(); + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + + auto params = ngraph::builder::makeParams(ngPrc, {{1, 256}}); + auto relu_start = std::make_shared(params[0]); + auto split = ngraph::builder::makeSplit(relu_start, ngPrc, 2, 1); + auto const_concat = ngraph::builder::makeConstant(ngPrc, {1, 96}, std::vector{0}); + auto const_concat_2 = ngraph::builder::makeConstant(ngPrc, {1, 96}, std::vector{0}); + auto concat = std::make_shared(ngraph::OutputVector{split->output(0), const_concat}, 1); + auto concat_2 = std::make_shared(ngraph::OutputVector{concat, const_concat_2}, + 1); + auto relu = std::make_shared(concat_2); + ngraph::ResultVector resultVector{ + std::make_shared(relu) + }; + function = std::make_shared(resultVector, params, "Multiple_connection_split_concat"); +} +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/constant_result.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/constant_result.cpp index 7137feaed98168..90acce06d3df6f 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/constant_result.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/constant_result.cpp @@ -1,31 +1,75 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "shared_test_classes/subgraph/constant_result.hpp" +using namespace InferenceEngine; +using namespace ngraph; + namespace SubgraphTestsDefinitions { +std::ostream& operator<<(std::ostream &os, ConstantSubgraphType type) { + switch (type) { + case ConstantSubgraphType::SINGLE_COMPONENT: + os << "SINGLE_COMPONENT"; + break; + case ConstantSubgraphType::SEVERAL_COMPONENT: + os << "SEVERAL_COMPONENT"; + break; + default: + os << "UNSUPPORTED_CONST_SUBGRAPH_TYPE"; + } + return os; +} + std::string ConstantResultSubgraphTest::getTestCaseName(testing::TestParamInfo obj) { + ConstantSubgraphType type; + SizeVector IS; + Precision inputPrecision; std::string targetDevice; - std::tie(targetDevice) = obj.param; + + std::tie(type, IS, inputPrecision, targetDevice) = obj.param; std::ostringstream result; - result << "TargetDevice=" << targetDevice; + result << "SubgraphType=" << type << "_"; + result << "IS=" << CommonTestUtils::vec2str(IS) << "_"; + result << "inPrc=" << inputPrecision << "_"; + result << "Device=" << targetDevice; return result.str(); } +void ConstantResultSubgraphTest::createGraph(ConstantSubgraphType type, const SizeVector &inputShape, const Precision &inputPrecision) { + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(inputPrecision); + + ParameterVector params; + ResultVector results; + switch (type) { + case ConstantSubgraphType::SINGLE_COMPONENT: { + auto input = builder::makeConstant(ngPrc, inputShape, {}, true); + results.push_back(std::make_shared(input)); + break; + } + case ConstantSubgraphType::SEVERAL_COMPONENT: { + auto input1 = builder::makeConstant(ngPrc, inputShape, {}, true); + results.push_back(std::make_shared(input1)); + auto input2 = builder::makeConstant(ngPrc, inputShape, {}, true); + results.push_back(std::make_shared(input2)); + break; + } + default: { + throw std::runtime_error("Unsupported constant graph type"); + } + } + function = std::make_shared(results, params, "ConstResult"); +} + void ConstantResultSubgraphTest::SetUp() { - InferenceEngine::SizeVector inputShapes; - std::tie(targetDevice) = this->GetParam(); - std::vector data(300); - for (size_t i = 0; i < 300; i++) - data[i] = i; - - auto constant = std::make_shared(ngraph::element::Type_t::f32, ngraph::Shape{1, 3, 10, 10}, data); - const ngraph::ResultVector results{std::make_shared(constant)}; - ngraph::ParameterVector params; - function = std::make_shared(results, params, "ConstResult"); + ConstantSubgraphType type; + SizeVector IS; + Precision inputPrecision; + std::tie(type, IS, inputPrecision, targetDevice) = this->GetParam(); + + createGraph(type, IS, inputPrecision); } } // namespace SubgraphTestsDefinitions - diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/conv_eltwise_fusion.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/conv_eltwise_fusion.cpp index df3462318a16d6..9c40075ac5fbcf 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/conv_eltwise_fusion.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/conv_eltwise_fusion.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/convert_pad_to_group_conv.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/convert_pad_to_group_conv.cpp index 027d2c7fb8b631..cb4433bcef407c 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/convert_pad_to_group_conv.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/convert_pad_to_group_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/convolution_relu_sequence.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/convolution_relu_sequence.cpp new file mode 100644 index 00000000000000..5c98569885c659 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/convolution_relu_sequence.cpp @@ -0,0 +1,92 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/convolution_relu_sequence.hpp" + +namespace SubgraphTestsDefinitions { + +std::string ConvolutionReluSequenceTest::getTestCaseName(testing::TestParamInfo obj) { + convReluSpecificParamsAll convParamsAll; + InferenceEngine::Precision netPrecision; + InferenceEngine::Precision inPrc, outPrc; + std::string targetDevice; + std::map config; + std::tie(convParamsAll, netPrecision, inPrc, outPrc, targetDevice, config) = + obj.param; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(convParamsAll.inputShape) << "_"; + result << "inPRC=" << inPrc.name() << "_"; + result << "outPRC=" << outPrc.name() << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "trgDev=" << targetDevice << "_"; + + for (auto&& single : convParamsAll.sequenceDesc) { + result << "K" << CommonTestUtils::vec2str(single.kernelSize) << "_"; + result << "S" << CommonTestUtils::vec2str(single.strides) << "_"; + result << "PB" << CommonTestUtils::vec2str(single.padBegin) << "_"; + result << "PE" << CommonTestUtils::vec2str(single.padEnd) << "_"; + result << "O=" << single.numOutChannels << "_"; + result << "PW" << CommonTestUtils::vec2str(single.poolingWindow) << "_"; + result << "PS" << CommonTestUtils::vec2str(single.poolingStride) << "_"; + } + + for (auto&& single : config) { + result << single.first << "=" << single.second; + } + return result.str(); +} + +void ConvolutionReluSequenceTest::SetUp() { + threshold = 0.0031; + const InferenceEngine::SizeVector dilation = { 1, 1 }; + convReluSpecificParamsAll convParamsAll; + auto netPrecision = InferenceEngine::Precision::UNSPECIFIED; + std::map config; + std::tie(convParamsAll, netPrecision, inPrc, outPrc, targetDevice, config) = + this->GetParam(); + configuration.insert(config.begin(), config.end()); + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto params = ngraph::builder::makeParams(ngPrc, { convParamsAll.inputShape}); + auto lastOutputs = ngraph::helpers::castOps2Nodes(params).front(); + auto inputChannels = convParamsAll.inputShape[1]; + + for (auto&& single : convParamsAll.sequenceDesc) { + const auto addBiases = true; + const auto filtersRange = 0.1f; + const auto biasesRange = 0.05f; + std::vector filter_weights; + std::vector biases; + if (targetDevice == CommonTestUtils::DEVICE_GNA) { + auto filter_size = std::accumulate(std::begin(single.kernelSize), std::end(single.kernelSize), 1, std::multiplies()); + filter_weights = CommonTestUtils::generate_float_numbers(single.numOutChannels * inputChannels * filter_size, + -filtersRange, filtersRange); + if (addBiases) { + biases = CommonTestUtils::generate_float_numbers(single.numOutChannels, + -biasesRange, biasesRange); + } + } + + std::shared_ptr conv = + std::dynamic_pointer_cast( + ngraph::builder::makeConvolution( + lastOutputs, + ngPrc, single.kernelSize, single.strides, single.padBegin, single.padEnd, + dilation, ngraph::op::PadType::EXPLICIT, single.numOutChannels, addBiases, filter_weights, biases)); + lastOutputs = std::make_shared(conv); + if (single.poolingWindow.size() == 2 && + (single.poolingWindow[0] != 1 || + single.poolingWindow[1] != 1)) { + lastOutputs = std::make_shared(lastOutputs, single.poolingStride, + ngraph::Shape{ 0, 0 }, + ngraph::Shape{ 0, 0 }, + single.poolingWindow); + } + inputChannels = single.numOutChannels; + } + + ngraph::ResultVector results{std::make_shared(lastOutputs)}; + function = std::make_shared(results, params, "convolution_relu_sequence"); +} +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/copy_before_squeeze.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/copy_before_squeeze.cpp index 5f5a7faf3fd073..b2845c8bbdcd96 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/copy_before_squeeze.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/copy_before_squeeze.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "shared_test_classes/subgraph/copy_before_squeeze.hpp" namespace SubgraphTestsDefinitions { diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/crop4d.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/crop4d.cpp index 8213a4f2480d6e..bee4c8e0df230c 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/crop4d.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/crop4d.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/delayed_copy_layer.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/delayed_copy_layer.cpp index 43aba42012e1fd..87ddf060bbae34 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/delayed_copy_layer.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/delayed_copy_layer.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "shared_test_classes/subgraph/delayed_copy_layer.hpp" namespace SubgraphTestsDefinitions { @@ -63,6 +64,7 @@ namespace SubgraphTestsDefinitions { SKIP_IF_CURRENT_TEST_IS_DISABLED() LoadNetwork(); + GenerateInputs(); Infer(); switchToNgraphFriendlyModel(); Validate(); diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/eltwise_conv_eltwise.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/eltwise_conv_eltwise.cpp index 06c023f65488c0..d5ce0907607f1b 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/eltwise_conv_eltwise.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/eltwise_conv_eltwise.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/fc_conv_fc.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/fc_conv_fc.cpp index 8f4202a50b5947..406182b79d6929 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/fc_conv_fc.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/fc_conv_fc.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/first_connect_input_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/first_connect_input_concat.cpp index 597dcfd7cd7f4a..bf37af3d6d96bb 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/first_connect_input_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/first_connect_input_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/fq_conv_fq_affine.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/fq_conv_fq_affine.cpp new file mode 100644 index 00000000000000..cd4370d9661968 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/fq_conv_fq_affine.cpp @@ -0,0 +1,122 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/fq_conv_fq_affine.hpp" + +namespace SubgraphTestsDefinitions { + +std::string FqConvFqAffineTest::getTestCaseName(testing::TestParamInfo obj) { + FqSpecificParams fqParams; + ConvParams convParams; + InferenceEngine::Precision netPrecision; + InferenceEngine::SizeVector inputShapes; + std::string targetDevice; + std::map config; + std::tie(fqParams, convParams, netPrecision, inputShapes, targetDevice, config) = obj.param; + + std::vector levels; + std::vector inputArg; + std::tie(levels, inputArg) = fqParams; + + std::vector kernelShape; + std::vector strides; + size_t inputChannels; + size_t outputChannels; + std::tie(kernelShape, strides, inputChannels, outputChannels) = convParams; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(inputShapes) << "_"; + result << "LEVELS=" << CommonTestUtils::vec2str(levels) << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "trgDev=" << targetDevice; + for (auto const& configItem : config) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + if (inputArg.size() == 3) { + result << "_inputArg=" << inputArg[0] << "_" << inputArg[1] << "_" << inputArg[2]; + } + result << "_KERNEL=" << CommonTestUtils::vec2str(kernelShape) << "_"; + result << "STRIDES=" << CommonTestUtils::vec2str(strides) << "_"; + result << "IC=" << inputChannels << "_"; + result << "OC=" << outputChannels; + return result.str(); +} + +void FqConvFqAffineTest::SetUp() { + FqSpecificParams fqParams; + ConvParams convParams; + std::vector inputShape; + std::map config; + auto netPrecision = InferenceEngine::Precision::UNSPECIFIED; + std::tie(fqParams, convParams, netPrecision, inputShape, targetDevice, config) = this->GetParam(); + configuration.insert(config.begin(), config.end()); + + std::vector levels; + std::vector inputArg; + std::tie(levels, inputArg) = fqParams; + if (inputArg.size() == 3) { + inputDataMin = inputArg[0]; + inputDataMax = inputArg[1]; + inputDataResolution = inputArg[2]; + } + + std::vector kernelShape; + std::vector strides; + size_t inputChannels; + size_t outputChannels; + std::tie(kernelShape, strides, inputChannels, outputChannels) = convParams; + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + + auto params = ngraph::builder::makeParams(ngPrc, {inputShape}); + + const int seed = 0; + std::mt19937 gen(static_cast(seed)); + + auto inputFQNode = ngraph::builder::makeFakeQuantize(params[0], ngraph::element::f32, levels[0], std::vector{}, + { inputDataMin }, { inputDataMax }, { inputDataMin }, { inputDataMax }); + auto inputFQ = std::dynamic_pointer_cast(inputFQNode); + + std::vector convInputShape = {1, inputChannels, 1, inputShape[0] * inputShape[1] / inputChannels}; + auto reshapePattern1 = std::make_shared(ngraph::element::Type_t::i64, ngraph::Shape{ 4 }, convInputShape); + auto reshape1 = std::make_shared(inputFQ, reshapePattern1, false); + + auto filterWeightsNode = ngraph::builder::makeConstant(ngPrc, {outputChannels, inputChannels, kernelShape[0], kernelShape[1]}, + { 1.0f }); + + auto convLowNode = ngraph::builder::makeConstant(ngraph::element::f32, std::vector{ 1 }, std::vector{inputDataMin}); + auto convHighNode = ngraph::builder::makeConstant(ngraph::element::f32, std::vector{ 1 }, std::vector{inputDataMax}); + auto convWeightsFQNode = std::make_shared(filterWeightsNode, + convLowNode, convHighNode, convLowNode, convHighNode, levels[1]); + auto convWeightsFQ = std::dynamic_pointer_cast(convWeightsFQNode); + + auto conv = std::make_shared(reshape1, convWeightsFQ, strides, std::vector{ 0, 0 }, + std::vector{ 0, 0 }, std::vector{ 1, 1 }, + ngraph::op::PadType::VALID); + auto biasesWeightsNode = ngraph::builder::makeConstant(ngPrc, {}, std::vector{ 0.0f }); + auto add = std::make_shared(conv, biasesWeightsNode); + + auto widthAfterConv = (convInputShape[3] - kernelShape[1]) / strides[1] + 1; + auto heightAfterConv = (convInputShape[2] - kernelShape[0]) / strides[0] + 1; + std::vector outFormShapes = {1, outputChannels * widthAfterConv * heightAfterConv }; + + auto reshapePattern2 = std::make_shared(ngraph::element::Type_t::i64, ngraph::Shape{ 2 }, outFormShapes); + auto reshape2 = std::make_shared(add, reshapePattern2, false); + + auto matMulWeightsNode = ngraph::builder::makeConstant(ngPrc, {outFormShapes[1], outFormShapes[1]}, { 1.0f }); + auto matMulLowNode = ngraph::builder::makeConstant(ngraph::element::f32, std::vector{ 1 }, std::vector{inputDataMin}); + auto matMulHighNode = ngraph::builder::makeConstant(ngraph::element::f32, std::vector{ 1 }, std::vector{inputDataMax}); + auto matMulWeightsFQNode = std::make_shared(matMulWeightsNode, + matMulLowNode, matMulHighNode, matMulLowNode, matMulHighNode, levels[1]); + auto matMulWeightsFQ = std::dynamic_pointer_cast(matMulWeightsFQNode); + + auto matmul = std::make_shared(reshape2, matMulWeightsFQ, false, true); + + function = std::make_shared(matmul, params, "fqConvfqAffine"); +} + +InferenceEngine::Blob::Ptr FqConvFqAffineTest::GenerateInput(const InferenceEngine::InputInfo &info) const { + return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), inputDataMax - inputDataMin, inputDataMin, 1 / inputDataResolution, + seed); +} +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/get_output_before_activation.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/get_output_before_activation.cpp index 6c8450482afc11..c7491c1ee280bd 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/get_output_before_activation.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/get_output_before_activation.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include "ngraph_functions/builders.hpp" #include "shared_test_classes/subgraph/get_output_before_activation.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/handling_orientation_conv.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/handling_orientation_conv.cpp index 5b09e39de5c000..63aef4ceabdf89 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/handling_orientation_conv.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/handling_orientation_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp index adceb26d194eb5..5d3917b9aae6ba 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/input_conv.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/input_split_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/input_split_concat.cpp new file mode 100644 index 00000000000000..447c2bcbf6288b --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/input_split_concat.cpp @@ -0,0 +1,47 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/input_split_concat.hpp" +#include "ngraph_functions/builders.hpp" + +namespace SubgraphTestsDefinitions { + +std::string InputSplitConcatTest::getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map configuration; + std::vector inputShape; + std::tie(netPrecision, targetDevice, configuration, inputShape) = obj.param; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(inputShape) << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice; + for (auto const& configItem : configuration) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + return result.str(); +} + +void InputSplitConcatTest::SetUp() { + InferenceEngine::Precision netPrecision; + std::map tempConfig; + std::vector inputShape; + std::tie(netPrecision, targetDevice, tempConfig, inputShape) = this->GetParam(); + configuration.insert(tempConfig.begin(), tempConfig.end()); + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto params = ngraph::builder::makeParams(ngPrc, { inputShape }); + + auto split = ngraph::builder::makeSplit(params[0], ngPrc, 2, 1); + auto relu1 = std::make_shared(split->output(0)); + + auto const_vals = CommonTestUtils::generate_float_numbers(inputShape[1], -5.0f, 5.0f); + auto constant = ngraph::builder::makeConstant(ngPrc, inputShape, const_vals); + auto concat = std::make_shared(ngraph::OutputVector{constant, split->output(1)}, 1); + auto relu2 = std::make_shared(concat); + + ngraph::ResultVector results{ std::make_shared(relu1), std::make_shared(relu2) }; + function = std::make_shared(results, params, "InputSplitConcatTest"); +} +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/matmul_squeeze_add.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/matmul_squeeze_add.cpp index 7cb45319172fa2..3c2a14bc7a4d5b 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/matmul_squeeze_add.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/matmul_squeeze_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_LSTMCell.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_LSTMCell.cpp index 1b84bb5300915e..a8d5c067334b53 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_LSTMCell.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_LSTMCell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -265,6 +265,7 @@ namespace SubgraphTestsDefinitions { } } IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); Infer(); switchToNgraphFriendlyModel(); Validate(); @@ -303,6 +304,7 @@ namespace SubgraphTestsDefinitions { } } IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); Infer(); CreatePureTensorIteratorModel(); diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_eltwise_reshape_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_eltwise_reshape_concat.cpp index 3ff86dcec03533..774230a1c4b99b 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_eltwise_reshape_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/memory_eltwise_reshape_concat.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include "ngraph_functions/builders.hpp" @@ -128,6 +127,7 @@ void MemoryEltwiseReshapeConcatTest::Run() { memory_init.data(), memory_init.size()); states[0].SetState(state_values_blob); IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); Infer(); initNgraphFriendlyModel(); Validate(); diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multioutput_eltwise_squeeze_eltwise.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multioutput_eltwise_squeeze_eltwise.cpp index 0b3e9bbed779f3..7e0503eb22db24 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multioutput_eltwise_squeeze_eltwise.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multioutput_eltwise_squeeze_eltwise.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include "shared_test_classes/subgraph/multioutput_eltwise_squeeze_eltwise.hpp" namespace SubgraphTestsDefinitions { diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_LSTMCell.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_LSTMCell.cpp index ad8439254fee79..d854f7049302a4 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_LSTMCell.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_LSTMCell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -414,6 +414,7 @@ void MultipleLSTMCellTest::Run() { } } IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); Infer(); switchToNgraphFriendlyModel(); Validate(); @@ -464,6 +465,7 @@ void MultipleLSTMCellTest::RunLowLatency(bool regular_api) { } } IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); Infer(); // Calculate ref values for Unrolled TI diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_concat.cpp index d9b57e0a6c6952..60a16462320449 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_connect_split_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_connect_split_concat.cpp new file mode 100644 index 00000000000000..fc5cb4441db919 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiple_connect_split_concat.cpp @@ -0,0 +1,42 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/multiple_connect_split_concat.hpp" + +namespace SubgraphTestsDefinitions { +std::string MultipleConnectSplitConcatTest::getTestCaseName(const testing::TestParamInfo &obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map configuration; + std::tie(netPrecision, targetDevice, configuration) = obj.param; + + std::ostringstream result; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice << "_"; + for (auto const &configItem : configuration) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + return result.str(); +} + +void MultipleConnectSplitConcatTest::SetUp() { + InferenceEngine::Precision netPrecision; + std::tie(netPrecision, targetDevice, configuration) = this->GetParam(); + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + + auto params = ngraph::builder::makeParams(ngPrc, {{1, 256}}); + auto relu_start = std::make_shared(params[0]); + auto split = ngraph::builder::makeSplit(relu_start, ngPrc, 1, 1); + auto concat = std::make_shared(ngraph::OutputVector{split->output(0), split->output(0)}, 1); + auto concat_2 = std::make_shared(ngraph::OutputVector{split->output(0), split->output(0)}, + 1); + auto relu = std::make_shared(concat); + auto relu_2 = std::make_shared(concat_2); + ngraph::ResultVector resultVector{ + std::make_shared(relu), + std::make_shared(relu_2) + }; + function = std::make_shared(resultVector, params, "Multiple_connection_split_concat"); +} +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiply_add.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiply_add.cpp index 9ee694f9e9db92..65a0dc6f9d760a 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiply_add.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/multiply_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/negative_memory_layer_offset.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/negative_memory_layer_offset.cpp index ee715e0ce9674e..51acc473e0e1e1 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/negative_memory_layer_offset.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/negative_memory_layer_offset.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -85,6 +85,7 @@ namespace SubgraphTestsDefinitions { } } IE_SUPPRESS_DEPRECATED_END + GenerateInputs(); Infer(); switchToNgraphFriendlyModel(); Validate(); diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_result.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_result.cpp index b09e16a6805c3b..8de1cd0be5ad3a 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_result.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_shapeof_result.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_shapeof_result.cpp index e71af74ffd5f1a..50cb5eaeef7f00 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_shapeof_result.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/parameter_shapeof_result.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/perm_conv_perm_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/perm_conv_perm_concat.cpp index 8ec5bb0ccac6e2..f19197e4e1249f 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/perm_conv_perm_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/perm_conv_perm_concat.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include "shared_test_classes/subgraph/perm_conv_perm_concat.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_convolution_backprop_data.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_convolution_backprop_data.cpp index 6f3ed8ce463543..490be05714944d 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution.cpp index 032c394a0ca2a8..2c6c63d8b43558 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution_backprop_data.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution_backprop_data.cpp index 007185bbfd083b..8ff3044ccb5b69 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution_backprop_data.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_group_convolution_backprop_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_mat_mul.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_mat_mul.cpp index a1c55c0357b300..61868dfe0d534e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_mat_mul.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/quantized_mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/range_add.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/range_add.cpp index 751e1b441a0fff..a4a917e1a505c6 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/range_add.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/range_add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/relu_shape_of.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/relu_shape_of.cpp index bc5c6e6b9290f0..b636590ddc57c6 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/relu_shape_of.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/relu_shape_of.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_conv_permute_reshape_act.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_conv_permute_reshape_act.cpp index 0157f720716cb1..44f77fe7523550 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_conv_permute_reshape_act.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_conv_permute_reshape_act.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include "shared_test_classes/subgraph/reshape_permute_conv_permute_reshape_act.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_reshape.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_reshape.cpp index 4620bbe8b0cf91..7468d72f7b28f2 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_reshape.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_permute_reshape.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include #include "shared_test_classes/subgraph/reshape_permute_reshape.hpp" diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_squeeze_reshape_relu.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_squeeze_reshape_relu.cpp index 6790c5d2fb5f0e..2fb09bcdfe3412 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_squeeze_reshape_relu.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/reshape_squeeze_reshape_relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/scale_shift.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/scale_shift.cpp index ae95e5e6ed2a00..d15ecfc4f26409 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/scale_shift.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/scale_shift.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/scaleshift_conv_scaleshift.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/scaleshift_conv_scaleshift.cpp index 4fe72ed0397b0b..92be13eff4599e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/scaleshift_conv_scaleshift.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/scaleshift_conv_scaleshift.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/softsign.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/softsign.cpp index 45f69e108528c3..d38d2d8e9147b8 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/softsign.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/softsign.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -48,6 +48,7 @@ void SoftsignTest::Run() { SKIP_IF_CURRENT_TEST_IS_DISABLED() LoadNetwork(); + GenerateInputs(); Infer(); function = GenerateNgraphFriendlySoftSign(); diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_concat_memory.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_concat_memory.cpp index 9cedba51c973e5..828cc25b1a887e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_concat_memory.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_concat_memory.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_conv.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_conv.cpp new file mode 100644 index 00000000000000..d69a258b776b76 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_conv.cpp @@ -0,0 +1,91 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/split_conv.hpp" +#include "ngraph_functions/builders.hpp" + +namespace SubgraphTestsDefinitions { + +std::string SplitConvTest::getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map configuration; + size_t inputChannels; + size_t outputChannels; + convParams convolutionParams; + std::vector inputShape; + std::vector kernelShape; + size_t stride; + std::tie(netPrecision, targetDevice, configuration, convolutionParams, inputChannels, outputChannels) = obj.param; + std::tie(inputShape, kernelShape, stride) = convolutionParams; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(inputShape) << "_"; + result << "KS=" << CommonTestUtils::vec2str(kernelShape) << "_"; + result << "S=" << stride << "_"; + result << "IC=" << inputChannels << "_"; + result << "OC=" << outputChannels << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice; + for (auto const& configItem : configuration) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + return result.str(); +} + +InferenceEngine::Blob::Ptr SplitConvTest::GenerateInput(const InferenceEngine::InputInfo& info) const { + InferenceEngine::Blob::Ptr blob = make_blob_with_precision(info.getTensorDesc()); + blob->allocate(); + + auto* rawBlobDataPtr = blob->buffer().as(); + std::vector values = CommonTestUtils::generate_float_numbers(blob->size(), -2.0f, 2.0f); + for (size_t i = 0; i < blob->size(); i++) { + rawBlobDataPtr[i] = values[i]; + } + return blob; +} + +void SplitConvTest::SetUp() { + InferenceEngine::Precision netPrecision; + std::map tempConfig; + convParams convolutionParams; + size_t inputChannels; + size_t outputChannels; + std::tie(netPrecision, targetDevice, tempConfig, convolutionParams, inputChannels, outputChannels) = this->GetParam(); + configuration.insert(tempConfig.begin(), tempConfig.end()); + + std::vector inputShape; + std::vector kernelShape; + size_t stride; + std::tie(inputShape, kernelShape, stride) = convolutionParams; + + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto params = ngraph::builder::makeParams(ngPrc, { inputShape }); + const auto splitsNum = 2; + const auto splitAxis = 1; + auto split = ngraph::builder::makeSplit(params[0], ngPrc, splitsNum, splitAxis); + auto relu1 = std::make_shared(split->output(0)); + + auto relu2 = std::make_shared(split->output(1)); + std::vector convInputShape = {1, inputChannels, 1, inputShape[0] * inputShape[1] / inputChannels / 2}; + auto reshapePattern1 = std::make_shared(ngraph::element::Type_t::i64, ngraph::Shape{ 4 }, convInputShape); + auto reshape1 = std::make_shared(relu2, reshapePattern1, false); + + auto filterWeights = CommonTestUtils::generate_float_numbers(outputChannels * convInputShape[1] * kernelShape[0] * kernelShape[1], + -0.2f, 0.2f); + auto conv = ngraph::builder::makeConvolution(reshape1, ngPrc, { kernelShape[0], kernelShape[1] }, { stride, stride }, { 0, 0 }, + { 0, 0 }, { 1, 1 }, ngraph::op::PadType::VALID, outputChannels, false, filterWeights); + + auto widthAfterConv = (convInputShape[3] - kernelShape[1]) / stride + 1; + std::vector outFormShapes = {1, outputChannels * widthAfterConv }; + + auto reshapePattern2 = std::make_shared(ngraph::element::Type_t::i64, ngraph::Shape{ 2 }, outFormShapes); + auto reshape2 = std::make_shared(conv, reshapePattern2, false); + + ngraph::ResultVector results{std::make_shared(relu1), + std::make_shared(reshape2)}; + function = std::make_shared(results, params, "SplitConvTest"); +} + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_conv_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_conv_concat.cpp index a4d4aa0e371c94..0aa9b8cce14a91 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_conv_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_conv_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_relu.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_relu.cpp index adebfbf01396ed..7c3160ac16b538 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_relu.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_relu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_trivial_permute_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_trivial_permute_concat.cpp index ec3d46f2d381d3..ea2d547b7cf43e 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_trivial_permute_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/split_trivial_permute_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/stridedslice_conv.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/stridedslice_conv.cpp new file mode 100644 index 00000000000000..8d0995125c3f82 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/stridedslice_conv.cpp @@ -0,0 +1,75 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/stridedslice_conv.hpp" +#include "ngraph_functions/builders.hpp" + +namespace SubgraphTestsDefinitions { + +std::string SliceConvTest::getTestCaseName(testing::TestParamInfo obj) { + InferenceEngine::Precision netPrecision; + std::string targetDevice; + std::map configuration; + size_t outputChannels; + convParams convolutionParams; + std::vector inputShape; + std::vector kernelShape; + size_t stride; + std::tie(netPrecision, targetDevice, configuration, convolutionParams, outputChannels) = obj.param; + std::tie(inputShape, kernelShape, stride) = convolutionParams; + + std::ostringstream result; + result << "IS=" << CommonTestUtils::vec2str(inputShape) << "_"; + result << "KS=" << CommonTestUtils::vec2str(kernelShape) << "_"; + result << "S=" << stride << "_"; + result << "OC=" << outputChannels << "_"; + result << "netPRC=" << netPrecision.name() << "_"; + result << "targetDevice=" << targetDevice; + for (auto const& configItem : configuration) { + result << "_configItem=" << configItem.first << "_" << configItem.second; + } + return result.str(); +} + +InferenceEngine::Blob::Ptr SliceConvTest::GenerateInput(const InferenceEngine::InputInfo& info) const { + InferenceEngine::Blob::Ptr blob = make_blob_with_precision(info.getTensorDesc()); + blob->allocate(); + + auto* rawBlobDataPtr = blob->buffer().as(); + std::vector values = CommonTestUtils::generate_float_numbers(blob->size(), -2.0f, 2.0f); + for (size_t i = 0; i < blob->size(); i++) { + rawBlobDataPtr[i] = values[i]; + } + return blob; +} + +void SliceConvTest::SetUp() { + InferenceEngine::Precision netPrecision; + std::map tempConfig; + convParams convolutionParams; + size_t outputChannels; + std::tie(netPrecision, targetDevice, tempConfig, convolutionParams, outputChannels) = this->GetParam(); + configuration.insert(tempConfig.begin(), tempConfig.end()); + + std::vector inputShape; + std::vector kernelShape; + size_t stride; + std::tie(inputShape, kernelShape, stride) = convolutionParams; + + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto params = ngraph::builder::makeParams(ngPrc, { inputShape }); + auto ss = ngraph::builder::makeStridedSlice(params[0], std::vector{0, 0, 0, 64}, std::vector{1, 1, 1, 128}, + std::vector{1, 1, 1, 1}, ngPrc, std::vector{1, 1, 1, 0}, + std::vector{1, 1, 1, 0}, std::vector{0, 0, 0, 0}, + std::vector{0, 0, 0, 0}, std::vector{0, 0, 0, 0}); + + auto filterWeights = CommonTestUtils::generate_float_numbers(outputChannels * inputShape[1] * kernelShape[0] * kernelShape[1], + -0.2f, 0.2f); + auto conv = ngraph::builder::makeConvolution(ss, ngPrc, { kernelShape[0], kernelShape[1] }, { stride, stride }, { 0, 0 }, + { 0, 0 }, { 1, 1 }, ngraph::op::PadType::VALID, outputChannels, false, filterWeights); + + function = std::make_shared(conv, params, "StridedSliceConvTest"); +} + +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/tensor_names.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/tensor_names.cpp index 13f155a6d5c891..2705c4d047fae5 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/tensor_names.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/tensor_names.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/trivial_concat.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/trivial_concat.cpp index 5bd1936b92e526..85a6d0fd32de2a 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/trivial_concat.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/trivial_concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/two_fake_quantize_to_fullyconnected.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/two_fake_quantize_to_fullyconnected.cpp index 7b17c979d61023..b4bf7fdcdc210c 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/subgraph/two_fake_quantize_to_fullyconnected.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/two_fake_quantize_to_fullyconnected.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/functional/shared_test_classes/src/subgraph/variadic_split_pad.cpp b/inference-engine/tests/functional/shared_test_classes/src/subgraph/variadic_split_pad.cpp new file mode 100644 index 00000000000000..1de3509415de29 --- /dev/null +++ b/inference-engine/tests/functional/shared_test_classes/src/subgraph/variadic_split_pad.cpp @@ -0,0 +1,51 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/subgraph/variadic_split_pad.hpp" + +namespace SubgraphTestsDefinitions { + +std::string VariadicSplitPad::getTestCaseName(const testing::TestParamInfo &obj) { + InferenceEngine::SizeVector inputShape; + size_t axis; + std::vector numSplits, connectIndexes; + std::vector padsBegin, padsEnd; + ngraph::helpers::PadMode padMode; + InferenceEngine::Precision netPrecision; + std::string targetName; + std::tie(inputShape, axis, numSplits, connectIndexes, padsBegin, padsEnd, padMode, netPrecision, targetName) = obj.param; + std::ostringstream results; + + results << "IS=" << CommonTestUtils::vec2str(inputShape) << "_"; + results << "Axis=" << axis << "_"; + results << "NumSplits=" << CommonTestUtils::vec2str(numSplits) << "_"; + results << "ConnectIndexes=" << CommonTestUtils::vec2str(connectIndexes) << "_"; + results << "padsBegin=" << CommonTestUtils::vec2str(padsBegin) << "_"; + results << "padsEnd=" << CommonTestUtils::vec2str(padsEnd) << "_"; + results << "PadMode=" << padMode << "_"; + results << "netPRC=" << netPrecision.name() << "_"; + results << "targetDevice=" << targetName << "_"; + return results.str(); +} + +void VariadicSplitPad::SetUp() { + InferenceEngine::SizeVector inputs; + size_t axis; + std::vector numSplits, connectIndexes; + std::vector padBegin, padEnd; + ngraph::helpers::PadMode padMode; + InferenceEngine::Precision netPrecision; + std::tie(inputs, axis, numSplits, connectIndexes, padBegin, padEnd, padMode, netPrecision, targetDevice) = this->GetParam(); + auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); + auto input = ngraph::builder::makeParams(ngPrc, {inputs}); + auto split = ngraph::builder::makeVariadicSplit(input[0], numSplits, axis); + ngraph::ResultVector results; + + for (size_t i : connectIndexes) { + auto pad = ngraph::builder::makePad(split->output(i), padBegin, padEnd, 0, padMode); + results.push_back(std::make_shared(pad)); + } + function = std::make_shared(results, input, "variadic_split_pad"); +} +} // namespace SubgraphTestsDefinitions diff --git a/inference-engine/tests/ie_test_utils/CMakeLists.txt b/inference-engine/tests/ie_test_utils/CMakeLists.txt index 3b7d5c1c8a3e95..cb82ae840199b3 100644 --- a/inference-engine/tests/ie_test_utils/CMakeLists.txt +++ b/inference-engine/tests/ie_test_utils/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/CMakeLists.txt b/inference-engine/tests/ie_test_utils/common_test_utils/CMakeLists.txt index 6145bc606b47a4..9d7a028605482e 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/CMakeLists.txt +++ b/inference-engine/tests/ie_test_utils/common_test_utils/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -30,7 +30,7 @@ function(add_gtest_libraries) if(TARGET "${target_name}") get_target_property(_target_cxx_flags ${target_name} COMPILE_FLAGS) if(_target_cxx_flags) - if(CMAKE_CXX_FLAGS_DEBUG MATCHES ".+/Z7.+") + if(CMAKE_CXX_FLAGS_DEBUG MATCHES ".+/Z7.+" OR CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES ".+/Z7.+") string(REPLACE "-Zi" " " _target_cxx_flags ${_target_cxx_flags}) message(STATUS "Removing -Zi flag from target " ${target_name}) set_target_properties(${target_name} PROPERTIES COMPILE_FLAGS "${_target_cxx_flags}") diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.cpp b/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.cpp index 7a7f9ed421424a..0ccdbc182a0045 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.cpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -153,7 +153,7 @@ InferenceEngine::Blob::Ptr getWeightsBlob(size_t sizeInBytes, const std::string weights = InferenceEngine::make_shared_blob( {InferenceEngine::Precision::FP16, {sizeInBytes / sizeof(dataType)}, InferenceEngine::C}); } else { - THROW_IE_EXCEPTION << "Precision " << precision << " is not covered by getWeightsBlob()"; + IE_THROW() << "Precision " << precision << " is not covered by getWeightsBlob()"; } } @@ -218,7 +218,7 @@ std::ostream& operator<<(std::ostream & os, OpType type) { os << "VECTOR"; break; default: - THROW_IE_EXCEPTION << "NOT_SUPPORTED_OP_TYPE"; + IE_THROW() << "NOT_SUPPORTED_OP_TYPE"; } return os; } diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp index 391d93d09e3afc..b1d5ec5595ecfd 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include @@ -8,7 +9,6 @@ #include #include // to allow putting vector into exception string stream -#include "details/ie_exception.hpp" #include #include "ie_blob.h" diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/common_utils.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/common_utils.hpp index 97724ece09dc4e..391ada9bf77d1e 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/common_utils.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/common_utils.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include @@ -9,6 +10,7 @@ #include #include #include +#include #include #include @@ -57,10 +59,7 @@ inline InferenceEngine::CNNLayerPtr getLayerByName(const InferenceEngine::CNNNet return layer; ++i; } - - std::stringstream stream; - stream << "Layer " << layerName << " not found in network"; - throw InferenceEngine::NotFound(stream.str()); + IE_THROW(NotFound) << "Layer " << layerName << " not found in network"; } template @@ -118,4 +117,11 @@ inline T getTotal(const std::vector& shape) { return shape.empty() ? 0 : std::accumulate(shape.cbegin(), shape.cend(), static_cast(1), std::multiplies()); } +inline std::string GetTimestamp() { + auto now = std::chrono::system_clock::now(); + auto epoch = now.time_since_epoch(); + auto ns = std::chrono::duration_cast(epoch); + return std::to_string(ns.count()); +} + } // namespace CommonTestUtils diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.cpp b/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.cpp index 4867d8d1746219..68d3af73a39d04 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.cpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.cpp @@ -1,11 +1,10 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include // to allow putting vector into exception string stream -#include
#include #include @@ -123,7 +122,7 @@ void fill_data_with_broadcast(InferenceEngine::Blob::Ptr& blob, InferenceEngine: copy_7D(src_ptr, src_strides, dst_ptr, dst_strides, dst_dims); break; default: - THROW_IE_EXCEPTION << "Unsupported precision by fill_data_with_broadcast function"; + IE_THROW() << "Unsupported precision by fill_data_with_broadcast function"; } } @@ -154,7 +153,7 @@ InferenceEngine::Blob::Ptr make_with_precision_convert(InferenceEngine::Blob::Pt copy_with_convert (blob, new_blob); break switch (prc) { CASE(FP32); CASE(I64); CASE(U64); CASE(I32); CASE(U32); CASE(I16); CASE(U16); CASE(I8); CASE(U8); - default: THROW_IE_EXCEPTION << "Unsupported precision case"; + default: IE_THROW() << "Unsupported precision case"; } #undef CASE @@ -243,7 +242,7 @@ void fill_data_const(InferenceEngine::Blob::Ptr& blob, const std::vector fill_data_const(raw_data_ptr, raw_data_size, val); break; default: - THROW_IE_EXCEPTION << "Unsupported precision by fill_data_const() function"; + IE_THROW() << "Unsupported precision by fill_data_const() function"; } } diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.hpp index d040199687ed73..50e2eb37e99fc2 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/data_utils.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once #include @@ -11,7 +12,6 @@ #include #include -#include #include namespace CommonTestUtils { @@ -38,7 +38,7 @@ inline void fill_data_sine(float *data, size_t size, float center, float ampl, f */ inline std::vector generate_float_numbers(std::size_t vec_len, float min, float max, int seed = 0) { std::vector res; - std::mt19937 gen(static_cast(seed)); + std::mt19937 gen(seed); std::uniform_real_distribution dist(min, max); for (std::size_t i = 0; i < vec_len; i++) @@ -47,6 +47,21 @@ inline std::vector generate_float_numbers(std::size_t vec_len, float min, return res; } +/** + * @brief Create vector of floats with length of vec_len, with values ranging from min to max, + * with initial seed equal to variable seed with default of 0 + */ +template +inline std::vector fill_vector(std::vector &res, double min, double max, int seed = 0) { + std::mt19937 gen(static_cast(seed)); + + std::uniform_real_distribution dist(min, max); + for (std::size_t i = 0; i < res.size(); i++) + res[i] = static_cast(dist(gen)); + + return res; +} + /** * Fill blob with value data blob. Broadcast semantic is included. * Broadcasting with alignment through last dimension. @@ -54,7 +69,7 @@ inline std::vector generate_float_numbers(std::size_t vec_len, float min, * @param blob tensor to fill in * @param values src tensor which should be broadcast */ -void fill_data_with_broadcast(InferenceEngine::Blob::Ptr& blob, InferenceEngine::Blob::Ptr& values); +void fill_data_with_broadcast(InferenceEngine::Blob::Ptr &blob, InferenceEngine::Blob::Ptr &values); /** * Wrapper on top of fill_data_with_broadcast with simplified signature @@ -63,7 +78,7 @@ void fill_data_with_broadcast(InferenceEngine::Blob::Ptr& blob, InferenceEngine: * @param axis Axis to apply values * @param values data to broadcast */ -void fill_data_with_broadcast(InferenceEngine::Blob::Ptr& blob, size_t axis, std::vector values); +void fill_data_with_broadcast(InferenceEngine::Blob::Ptr &blob, size_t axis, std::vector values); /** * Make a view blob with new shape. It will reinterpret original tensor data as a tensor with new shape. @@ -75,7 +90,8 @@ void fill_data_with_broadcast(InferenceEngine::Blob::Ptr& blob, size_t axis, std * @param new_shape new one shape for view blob * @return new one blob view */ -InferenceEngine::Blob::Ptr make_reshape_view(const InferenceEngine::Blob::Ptr &blob, InferenceEngine::SizeVector new_shape); +InferenceEngine::Blob::Ptr +make_reshape_view(const InferenceEngine::Blob::Ptr &blob, InferenceEngine::SizeVector new_shape); /** * Fill blob with single value for all elements @@ -86,7 +102,7 @@ InferenceEngine::Blob::Ptr make_reshape_view(const InferenceEngine::Blob::Ptr &b * @param blob tensor to fill in * @param val value to set into each element */ -void fill_data_const(InferenceEngine::Blob::Ptr& blob, float val); +void fill_data_const(InferenceEngine::Blob::Ptr &blob, float val); /** @@ -101,8 +117,8 @@ inline void fill_data_bbox(float *data, size_t size, int height, int width, floa float center_w = (width - 1.0f) / 2; for (size_t i = 0; i < size; i = i + 5) { data[i] = 0.0f; - data[i + 1] = center_w + width * 0.6f * sin(static_cast(i+1) * omega); - data[i + 3] = center_w + width * 0.6f * sin(static_cast(i+3) * omega); + data[i + 1] = center_w + width * 0.6f * sin(static_cast(i + 1) * omega); + data[i + 3] = center_w + width * 0.6f * sin(static_cast(i + 3) * omega); if (data[i + 3] < data[i + 1]) { std::swap(data[i + 1], data[i + 3]); } @@ -111,8 +127,8 @@ inline void fill_data_bbox(float *data, size_t size, int height, int width, floa if (data[i + 3] > width - 1) data[i + 3] = static_cast(width - 1); - data[i + 2] = center_h + height * 0.6f * sin(static_cast(i+2) * omega); - data[i + 4] = center_h + height * 0.6f * sin(static_cast(i+4) * omega); + data[i + 2] = center_h + height * 0.6f * sin(static_cast(i + 2) * omega); + data[i + 4] = center_h + height * 0.6f * sin(static_cast(i + 4) * omega); if (data[i + 4] < data[i + 2]) { std::swap(data[i + 2], data[i + 4]); } @@ -123,13 +139,14 @@ inline void fill_data_bbox(float *data, size_t size, int height, int width, floa } } -inline void fill_data_roi(float *data, size_t size, const uint32_t range, const int height, const int width, const float omega, - const bool is_roi_max_mode, const int seed = 1) { +inline void +fill_data_roi(float *data, size_t size, const uint32_t range, const int height, const int width, const float omega, + const bool is_roi_max_mode, const int seed = 1) { std::default_random_engine random(seed); std::uniform_int_distribution distribution(0, range); const int max_y = (is_roi_max_mode) ? (height - 1) : 1; - const int max_x = (is_roi_max_mode) ? (width - 1) : 1; + const int max_x = (is_roi_max_mode) ? (width - 1) : 1; float center_h = (max_y) / 2.0f; float center_w = (max_x) / 2.0f; @@ -163,7 +180,9 @@ inline void fill_data_roi(float *data, size_t size, const uint32_t range, const } template -void inline fill_data_random(T* pointer, std::size_t size, const uint32_t range = 10, int32_t start_from = 0, const int32_t k = 1, const int seed = 1) { +void inline +fill_data_random(T *pointer, std::size_t size, const uint32_t range = 10, int32_t start_from = 0, const int32_t k = 1, + const int seed = 1) { testing::internal::Random random(seed); random.Generate(range); @@ -187,7 +206,8 @@ void inline fill_data_random(T* pointer, std::size_t size, const uint32_t range * - With k = 4 numbers resolution will 1/4 so outputs only .0 .25 .50 0.75 and etc. */ template -void inline fill_data_random(InferenceEngine::Blob::Ptr &blob, const uint32_t range = 10, int32_t start_from = 0, const int32_t k = 1, const int seed = 1) { +void inline fill_data_random(InferenceEngine::Blob::Ptr &blob, const uint32_t range = 10, int32_t start_from = 0, + const int32_t k = 1, const int seed = 1) { using dataType = typename InferenceEngine::PrecisionTrait::value_type; auto *rawBlobDataPtr = blob->buffer().as(); fill_data_random(rawBlobDataPtr, blob->size(), range, start_from, k, seed); @@ -207,7 +227,7 @@ void inline fill_data_random(InferenceEngine::Blob::Ptr &blob, const uint32_t r * - With k = 4 numbers resolution will 1/4 so outputs only .0 .25 .50 0.75 and etc. */ template -void inline fill_random_unique_sequence(InferenceEngine::Blob::Ptr& blob, +void inline fill_random_unique_sequence(InferenceEngine::Blob::Ptr &blob, uint32_t range, int32_t start_from = 0, const int32_t k = 1, @@ -231,7 +251,7 @@ void inline fill_random_unique_sequence(InferenceEngine::Blob::Ptr& blob, auto value = static_cast(dist(generator)); value /= static_cast(k); if (PRC == InferenceEngine::Precision::FP16) { - elems.insert(ngraph::float16(value).to_bits()); + elems.insert(static_cast(ngraph::float16(value).to_bits())); } else { elems.insert(static_cast(value)); } @@ -240,7 +260,8 @@ void inline fill_random_unique_sequence(InferenceEngine::Blob::Ptr& blob, } template -void inline fill_data_consistently(InferenceEngine::Blob::Ptr &blob, const uint32_t range = 10, int32_t start_from = 0, const int32_t k = 1) { +void inline fill_data_consistently(InferenceEngine::Blob::Ptr &blob, const uint32_t range = 10, int32_t start_from = 0, + const int32_t k = 1) { using dataType = typename InferenceEngine::PrecisionTrait::value_type; auto *rawBlobDataPtr = blob->buffer().as(); if (start_from < 0 && !std::is_signed::value) { @@ -260,7 +281,9 @@ void inline fill_data_consistently(InferenceEngine::Blob::Ptr &blob, const uint3 } template -void inline fill_data_random_float(InferenceEngine::Blob::Ptr &blob, const uint32_t range, int32_t start_from, const int32_t k, const int seed = 1) { +void inline +fill_data_random_float(InferenceEngine::Blob::Ptr &blob, const uint32_t range, int32_t start_from, const int32_t k, + const int seed = 1) { using dataType = typename InferenceEngine::PrecisionTrait::value_type; std::default_random_engine random(seed); // 1/k is the resolution of the floating point numbers @@ -271,11 +294,11 @@ void inline fill_data_random_float(InferenceEngine::Blob::Ptr &blob, const uint3 auto value = static_cast(distribution(random)); value /= static_cast(k); if (PRC == InferenceEngine::Precision::FP16) { - rawBlobDataPtr[i] = ngraph::float16(value).to_bits(); + rawBlobDataPtr[i] = static_cast(ngraph::float16(value).to_bits()); } else if (PRC == InferenceEngine::Precision::BF16) { - rawBlobDataPtr[i] = ngraph::bfloat16(value).to_bits(); + rawBlobDataPtr[i] = static_cast(ngraph::bfloat16(value).to_bits()); } else { - rawBlobDataPtr[i] = value; + rawBlobDataPtr[i] = static_cast(value); } } } @@ -292,25 +315,28 @@ void inline fill_data_normal_random_float(InferenceEngine::Blob::Ptr &blob, auto *rawBlobDataPtr = blob->buffer().as(); for (size_t i = 0; i < blob->size(); i++) { auto value = static_cast(normal_d(random)); - if (typeid(dataType) == typeid(typename InferenceEngine::PrecisionTrait::value_type)) { - rawBlobDataPtr[i] = ngraph::float16(value).to_bits(); + if (typeid(dataType) == + typeid(typename InferenceEngine::PrecisionTrait::value_type)) { + rawBlobDataPtr[i] = static_cast(ngraph::float16(value).to_bits()); } else { - rawBlobDataPtr[i] = value; + rawBlobDataPtr[i] = static_cast(value); } } } -template -void inline fill_data_float_array(InferenceEngine::Blob::Ptr &blob, const float values[], const size_t size) { +template +void inline fill_data_float_array(InferenceEngine::Blob::Ptr &blob, const T values[], const size_t size) { using dataType = typename InferenceEngine::PrecisionTrait::value_type; auto *rawBlobDataPtr = blob->buffer().as(); for (size_t i = 0; i < std::min(size, blob->size()); i++) { auto value = values[i]; - if (typeid(dataType) == typeid(typename InferenceEngine::PrecisionTrait::value_type)) { - rawBlobDataPtr[i] = ngraph::float16(value).to_bits(); + if (typeid(dataType) == + typeid(typename InferenceEngine::PrecisionTrait::value_type)) { + rawBlobDataPtr[i] = static_cast(ngraph::float16(value).to_bits()); + } else { - rawBlobDataPtr[i] = value; + rawBlobDataPtr[i] = static_cast(value); } } } @@ -352,11 +378,11 @@ inline ie_abs(const T &val) { return val; } -inline ngraph::bfloat16 ie_abs(const ngraph::bfloat16& val) { +inline ngraph::bfloat16 ie_abs(const ngraph::bfloat16 &val) { return ngraph::bfloat16::from_bits(val.to_bits() & 0x7FFF); } -inline ngraph::float16 ie_abs(const ngraph::float16& val) { +inline ngraph::float16 ie_abs(const ngraph::float16 &val) { return ngraph::float16::from_bits(val.to_bits() ^ 0x8000); } diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/file_utils.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/file_utils.hpp index 0452c24a016c3f..1e5534c7d8f8cf 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/file_utils.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/file_utils.hpp @@ -1,8 +1,10 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once +#include #include #include #include @@ -59,7 +61,7 @@ inline void createFile(const std::string& filename, const std::string& content) inline void removeFile(const std::string& path) { if (!path.empty()) { - remove(path.c_str()); + std::remove(path.c_str()); } } @@ -101,6 +103,27 @@ inline int removeFilesWithExt(std::string path, std::string ext) { return ret; } +// Lists all files with extension=ext from the given directory +// Return value: +// vector of strings representing file paths +inline std::vector listFilesWithExt(const std::string& path, const std::string& ext) { + struct dirent *ent; + DIR *dir = opendir(path.c_str()); + std::vector res; + if (dir != nullptr) { + while ((ent = readdir(dir)) != NULL) { + auto file = makePath(path, std::string(ent->d_name)); + struct stat stat_path; + stat(file.c_str(), &stat_path); + if (!S_ISDIR(stat_path.st_mode) && endsWith(file, "." + ext)) { + res.push_back(std::move(file)); + } + } + closedir(dir); + } + return res; +} + inline int removeDir(const std::string &path) { return rmdir(path.c_str()); } @@ -115,4 +138,104 @@ inline bool directoryExists(const std::string &path) { return false; } + +inline void directoryFileListRecursive(const std::string& name, std::vector& file_list) { + struct CloseDir { + void operator()(DIR* d) const noexcept { + if (d) { + closedir(d); + } + } + }; + using Dir = std::unique_ptr; + Dir directory(opendir(name.c_str())); + struct dirent *entire; + if (directory) { + const std::string current_dir{"."}; + const std::string parent_dir{".."}; + while ((entire = readdir(directory.get())) != nullptr) { + if (entire->d_name == parent_dir || entire->d_name == current_dir) { + continue; + } + std::string path = name + CommonTestUtils::FileSeparator + entire->d_name; + if (directoryExists(path)) { + directoryFileListRecursive(path, file_list); + } + if (fileExists(path)) { + file_list.push_back(path); + } + } + } +} + +inline int createDirectory(const std::string& dirPath) { +#ifdef _WIN32 + return _mkdir(dirPath.c_str()); +#else + return mkdir(dirPath.c_str(), mode_t(0777)); +#endif +} + +inline int createDirectoryRecursive(const std::string& dirPath) { + std::string copyDirPath = dirPath; + std::vector nested_dir_names; + while (!directoryExists(copyDirPath)) { + auto pos = copyDirPath.rfind(CommonTestUtils::FileSeparator); + nested_dir_names.push_back(copyDirPath.substr(pos, copyDirPath.length() - pos)); + copyDirPath = copyDirPath.substr(0, pos); + } + while (!nested_dir_names.empty()) { + std::string a = copyDirPath + nested_dir_names.back(); + if (createDirectory(a) != 0) { + return -1; + } + nested_dir_names.pop_back(); + } + return 0; +} + +inline std::vector getFileListByPatternRecursive(const std::vector& folderPaths, + const std::regex& pattern) { + auto getFileListByPattern = [&pattern](const std::string& folderPath) { + std::vector allFilePaths; + CommonTestUtils::directoryFileListRecursive(folderPath, allFilePaths); + std::set result; + for (auto& filePath : allFilePaths) { + if (CommonTestUtils::fileExists(filePath) && std::regex_match(filePath, pattern)) { + result.insert(filePath); + } + } + return result; + }; + + std::vector result; + for (auto &&folderPath : folderPaths) { + if (!CommonTestUtils::directoryExists(folderPath)) { + continue; + } + auto fileListByPattern = getFileListByPattern(folderPath); + result.insert(result.end(), fileListByPattern.begin(), fileListByPattern.end()); + } + return result; +} + +inline std::string replaceExt(std::string file, const std::string& newExt) { + std::string::size_type i = file.rfind('.', file.length()); + + if (i != std::string::npos) { + file.replace(i + 1, newExt.length(), newExt); + } + return file; +} + +inline std::vector splitStringByDelimiter(std::string paths, const std::string& delimiter = ",") { + size_t delimiterPos; + std::vector splitPath; + while ((delimiterPos = paths.find(delimiter)) != std::string::npos) { + splitPath.push_back(paths.substr(0, delimiterPos)); + paths = paths.substr(delimiterPos + 1); + } + splitPath.push_back(paths); + return splitPath; +} } // namespace CommonTestUtils diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.cpp b/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.cpp index 9777ed6d224749..94da102b606864 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.cpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.cpp @@ -1,10 +1,12 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "ngraph_test_utils.hpp" +#include #include +#include #include #include #include @@ -19,31 +21,33 @@ #include #include #include -#include #include +#include "details/ie_exception.hpp" + namespace { -bool isTypeRelaxed(const std::string& type) { +inline namespace tools { +bool isTypeRelaxed(const std::string &type) { return type.find_first_of("TypeRelaxed") == 0; } -bool compareTypeInfo(const ngraph::DiscreteTypeInfo& info1, const ngraph::DiscreteTypeInfo& info2) { +bool compareTypeInfo(const ngraph::DiscreteTypeInfo &info1, const ngraph::DiscreteTypeInfo &info2) { if (!isTypeRelaxed(info1.name) && !isTypeRelaxed(info2.name) && (info1.version != info2.version)) { return false; } const std::string info1Name = - isTypeRelaxed(info1.name) && (info1.parent != nullptr) ? info1.parent->name : info1.name; + isTypeRelaxed(info1.name) && (info1.parent != nullptr) ? info1.parent->name : info1.name; const std::string info2Name = - isTypeRelaxed(info2.name) && (info2.parent != nullptr) ? info2.parent->name : info2.name; + isTypeRelaxed(info2.name) && (info2.parent != nullptr) ? info2.parent->name : info2.name; return info1Name == info2Name; } -template -bool compare_rt_keys(const Node& node1, const Node& node2) { - const auto& first_node_rt_info = node1->get_rt_info(); - const auto& second_node_rt_info = node2->get_rt_info(); +template +bool compare_rt_keys(const Node &node1, const Node &node2) { + const auto &first_node_rt_info = node1->get_rt_info(); + const auto &second_node_rt_info = node2->get_rt_info(); if (first_node_rt_info.empty() && second_node_rt_info.empty()) { return true; @@ -67,696 +71,471 @@ bool compare_rt_keys(const Node& node1, const Node& node2) { } bool less_by_name( - const std::shared_ptr& l, - const std::shared_ptr& r) { + const std::shared_ptr &l, + const std::shared_ptr &r) { return l->get_friendly_name() < r->get_friendly_name(); } -template -std::string to_str(const T& v) { - return std::to_string(v); -} -std::string typeInfoToStr(const ngraph::Node::type_info_t& typeInfo) { + +std::string typeInfoToStr(const ngraph::Node::type_info_t &typeInfo) { return std::string(typeInfo.name) + "/" + to_str(typeInfo.version); } -template -std::string name(const Node& n) { - return n->get_friendly_name(); -} -std::string tensor_names(const ngraph::descriptor::Tensor& t) { +std::string tensor_names(const ngraph::descriptor::Tensor &t) { std::string n; - const char* glue = ""; - for (const auto& name : t.get_names()) { + const char *glue = ""; + for (const auto &name : t.get_names()) { n.append(glue).append(name); glue = ", "; } return "\"" + n + "\""; } +} // namespace tools -class Comparator { -public: - using CmpValues = FunctionsComparator::CmpValues; - using Result = FunctionsComparator::Result; - using ComparedNodes = std::pair; - - explicit Comparator(CmpValues f) : m_comparition_flags(f) {} +namespace subgraph { - Result compare( - const std::shared_ptr& f1, const std::shared_ptr& f2); +namespace detail { - Result compare(ngraph::Node* node1, ngraph::Node* node2) { - std::stringstream errors; - const auto result = compare(node1, node2, errors); - if (!result.valid) { - return result; - } - const auto msg = errors.str(); - return msg.empty() ? Result::ok() : Result::error(msg); +template +Ptr not_null(Ptr &&p) { + if (!p) { + IE_THROW() << "empty pointer"; } + return std::forward(p); +} - Comparator recreate() const { - return Comparator(m_comparition_flags); - } +template +bool equal_type_and_partial_shape(const InOut1 &lhs, const InOut2 &rhs) { + return lhs.get_element_type() == rhs.get_element_type() && + lhs.get_partial_shape() == rhs.get_partial_shape(); +} -private: - bool should_compare(CmpValues f) const noexcept { - return m_comparition_flags & f; - } +class NodeAndInputDescription { +public: + using SubGraphOp = ngraph::op::util::SubGraphOp; + using InputDescripton = SubGraphOp::InputDescription; + using InputNode = ngraph::Input; + using Parameter = ngraph::opset6::Parameter; - /// - /// \param err_log - will be fill by minor errors if happen - /// \return only fatality error if some minor one appears it will be add to err_log - /// - Result compare(ngraph::Node* node1, ngraph::Node* node2, std::ostream& err_log); + explicit NodeAndInputDescription( + const InputNode &input, const Parameter *parameter, const InputDescripton *description) + : m_input(input), m_parameter(not_null(parameter)), m_description(not_null(description)) {} - void add_nodes_inputs_to_queue(ngraph::Node* node1, ngraph::Node* node2); + static bool equal_descriptions(const InputDescripton *lhs, const InputDescripton *rhs) { + if (!lhs || !rhs || lhs->get_type_info() != rhs->get_type_info()) { + return false; + } - //-- DATA -- - CmpValues m_comparition_flags; + if (lhs->get_type_info() == SubGraphOp::SliceInputDescription::type_info) { + using InDesc = SubGraphOp::SliceInputDescription; + const InDesc *l_input = static_cast(lhs); + const InDesc *r_input = static_cast(rhs); + return l_input->m_start == r_input->m_start && l_input->m_stride == r_input->m_stride && + l_input->m_part_size == r_input->m_part_size && + l_input->m_end == r_input->m_end && l_input->m_axis == r_input->m_axis; + } else if (lhs->get_type_info() == SubGraphOp::MergedInputDescription::type_info) { + return true; // noting extra to check + } else if (lhs->get_type_info() == SubGraphOp::InvariantInputDescription::type_info) { + return true; // noting extra to check + } - std::queue q; - std::unordered_set used; -}; + IE_THROW() << "Type is not supported: [" << lhs->get_type_info().name << "]"; -namespace attr_comparison { + return false; + } -using AttrName = std::string; + bool parameter_and_input_match(size_t num_iterations) const { + if (const SubGraphOp::SliceInputDescription *slice_description = + ngraph::as_type(m_description)) { + if (m_parameter->get_element_type() != m_input.get_element_type()) { + return false; + } + const auto ¶m_partial_shape = m_parameter->get_partial_shape(); + const auto &input_partial_shape = m_input.get_partial_shape(); + if (param_partial_shape.is_dynamic() && input_partial_shape.is_dynamic()) { + return true; + } + if (!param_partial_shape.is_static() || !input_partial_shape.is_static()) { + return false; + } + const auto ¶m_shape = param_partial_shape.to_shape(); + const auto &input_shape = input_partial_shape.to_shape(); + if (param_shape.size() != input_shape.size()) { + return false; + } + if (param_shape[slice_description->m_axis] != slice_description->m_part_size) { + return false; + } + for (size_t i = 0; i != param_shape.size(); ++i) { + const auto expected_axis_size = + i == slice_description->m_axis ? slice_description->m_part_size * num_iterations + : param_shape[i]; + if (input_shape[i] != expected_axis_size) { + return false; + } + } + return true; + } else if ( + m_description->get_type_info() == SubGraphOp::MergedInputDescription::type_info || + m_description->get_type_info() == SubGraphOp::InvariantInputDescription::type_info) { + return equal_type_and_partial_shape(*m_parameter, m_input); + } -class Result { -public: - explicit Result(std::string m = {}) : m_message(std::move(m)) {} + IE_THROW() << "Type is not supported: [" << m_description->get_type_info().name + << "]"; - const std::string& message() const { - return m_message; + return false; } - bool has_error() const { - return !m_message.empty(); + static bool equal_parameters(const Parameter *lhs, const Parameter *rhs) { + return lhs && rhs && equal_type_and_partial_shape(*lhs, *rhs); } - Result& operator+=(const std::string& msg) { - m_message.append(m_break_line_no, '\n').append(msg); - m_break_line_no = 1; - return *this; + friend bool operator==(const NodeAndInputDescription &lhs, const NodeAndInputDescription &rhs) { + if (!equal_descriptions(lhs.m_description, rhs.m_description)) { + return false; + } + return equal_parameters(lhs.m_parameter, rhs.m_parameter); } private: - std::string m_message; - int m_break_line_no{0}; + const InputNode m_input; + const Parameter *m_parameter; + const InputDescripton *m_description; }; -using SubGraphOpInputDescription = - std::vector>; +class NodeAndOutputDescription { +public: + using SubGraphOp = ngraph::op::util::SubGraphOp; + using OutputDescription = SubGraphOp::OutputDescription; + using OutputNode = ngraph::Output; + using Result = ngraph::opset6::Result; -using SubGraphOpOutputDescription = - std::vector>; + explicit NodeAndOutputDescription( + const OutputNode &output, const Result *result, const OutputDescription *description) + : m_output(output), m_result(not_null(result)), m_description(not_null(description)) {} -using SpecialBodyPorts = ngraph::opset6::Loop::SpecialBodyPorts; + static bool equal_descriptions(const OutputDescription *lhs, const OutputDescription *rhs) { + if (!lhs || !rhs || lhs->get_type_info() != rhs->get_type_info()) { + return false; + } -namespace storage { + if (lhs->get_type_info() == SubGraphOp::ConcatOutputDescription::type_info) { + using OutDesc = SubGraphOp::ConcatOutputDescription; + const OutDesc *l_output = static_cast(lhs); + const OutDesc *r_output = static_cast(rhs); + return l_output->m_start == r_output->m_start && + l_output->m_stride == r_output->m_stride && + l_output->m_part_size == r_output->m_part_size && + l_output->m_end == r_output->m_end && l_output->m_axis == r_output->m_axis; + } else if (lhs->get_type_info() == SubGraphOp::BodyOutputDescription::type_info) { + using OutDesc = SubGraphOp::BodyOutputDescription; + const OutDesc *l_output = static_cast(lhs); + const OutDesc *r_output = static_cast(rhs); + return l_output->m_iteration == r_output->m_iteration; + } -class MemoryChunk { -public: - using Data = std::vector; - MemoryChunk(Data data) : m_data{std::move(data)} {} + IE_THROW() << "Type is not supported: [" << lhs->get_type_info().name << "]"; - Data::const_pointer data() const { - return m_data.data(); + return false; } - size_t size() const { - return m_data.size(); - } + bool result_and_output_match(size_t num_iterations) const { + if (const auto concat_desciption = + ngraph::as_type(m_description)) { + if (m_result->output(0).get_element_type() != m_output.get_element_type()) { + return false; + } -private: - Data m_data; -}; + const auto &output_partial_shape = m_output.get_partial_shape(); + const auto &result_partial_shape = m_result->output(0).get_partial_shape(); + if (result_partial_shape.is_dynamic() && output_partial_shape.is_dynamic()) { + return true; + } + if (!result_partial_shape.is_static() || !output_partial_shape.is_static()) { + return false; + } + const auto &output_shape = output_partial_shape.to_shape(); + const auto &result_shape = result_partial_shape.to_shape(); + if (result_shape.size() != output_shape.size()) { + return false; + } + for (size_t i = 0; i != result_shape.size(); ++i) { + const auto axis_multiplier = i == concat_desciption->m_axis ? num_iterations : 1; + if (result_shape[i] * axis_multiplier != output_shape[i]) { + return false; + } + } + return true; + } else if (m_description->get_type_info() == SubGraphOp::BodyOutputDescription::type_info) { + return equal_type_and_partial_shape(m_result->output(0), m_output); + } -template -class AttributeStorage { -public: - bool insert_value(AttrName name, AttrValue value) { - return m_attributes.insert({std::move(name), std::move(value)}).second; + IE_THROW() << "Type is not supported: [" << m_description->get_type_info().name + << "]"; + + return false; } - const AttrValue* get_value(const AttrName& name) const { - const auto found = m_attributes.find(name); - if (found != end(m_attributes)) { - return std::addressof(found->second); - } - return {}; + static bool equal_results(const Result *lhs, const Result *rhs) { + return lhs && rhs && equal_type_and_partial_shape(lhs->output(0), rhs->output(0)); } - std::size_t get_attributes_number() const { - return m_attributes.size(); + friend bool operator==( + const NodeAndOutputDescription &lhs, const NodeAndOutputDescription &rhs) { + if (!equal_descriptions(lhs.m_description, rhs.m_description)) { + return false; + } + return equal_results(lhs.m_result, rhs.m_result); } private: - std::map m_attributes; + const OutputNode m_output; + const Result *m_result; + const OutputDescription *m_description; }; -class Storage : private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage>, - private AttributeStorage, - private AttributeStorage, - private AttributeStorage { +class BackEdge { public: - template - const AttributeStorage& storage() const { - return *static_cast*>(this); - } - template - AttributeStorage& storage() { - return *static_cast*>(this); - } - - size_t stored_attributes_number() const { - return storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage>().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number() + - storage().get_attributes_number(); - } -}; + using Parameter = ngraph::opset6::Parameter; + using Result = ngraph::opset6::Result; + using Id = uint64_t; -} // namespace storage + explicit BackEdge(const Parameter *parameter, const Result *result) + : m_parameter(not_null(parameter)), m_result(not_null(result)) {} -class ReadAndStoreAttributes : public ngraph::AttributeVisitor, protected storage::Storage { -public: - void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { - if (auto inputs = - ngraph::as_type>(&adapter)) { - insert(name, inputs->get()); - } else if ( - auto outputs = - ngraph::as_type>(&adapter)) { - insert(name, outputs->get()); - } else if ( - auto ports = ngraph::as_type>(&adapter)) { - insert(name, ports->get()); - } else if ( - auto a = ngraph::as_type< - ngraph::AttributeAdapter>>( - &adapter)) { - const auto beg = static_cast(a->get()->get_ptr()); - const auto end = beg + a->get()->size(); - insert(name, storage::MemoryChunk{storage::MemoryChunk::Data(beg, end)}); - } else { - m_read_result += "store attr [ ERR ]: " + name + - " [drop `void` comparison which is '" + adapter.get_type_info().name + - "']"; - } + bool result_and_parameter_match() const { + return equal_type_and_partial_shape(m_result->output(0), *m_parameter); } -#define ON_ADAPTER(TYPE) \ - void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { \ - insert(name, adapter.get()); \ - } - - ON_ADAPTER(bool) - ON_ADAPTER(std::string) - ON_ADAPTER(int8_t) - ON_ADAPTER(int16_t) - ON_ADAPTER(int32_t) - ON_ADAPTER(int64_t) - ON_ADAPTER(uint8_t) - ON_ADAPTER(uint16_t) - ON_ADAPTER(uint32_t) - ON_ADAPTER(uint64_t) - ON_ADAPTER(float) - ON_ADAPTER(double) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - -#undef ON_ADAPTER - - void on_adapter( - const std::string&, ngraph::ValueAccessor>&) override { - // handled by `compare_functions` drop it here - } - - template - const AttrValue* get(const AttrName& name) const { - return storage().get_value(name); - } - - template - bool insert(AttrName name, AttrValue value) { - return storage().insert_value(std::move(name), std::move(value)); - } - - size_t attributes_number() const { - return stored_attributes_number(); - } - - const Result read_result() const { - return m_read_result; + friend bool operator==(const BackEdge &lhs, const BackEdge &rhs) { + return equal_type_and_partial_shape(*lhs.m_parameter, *rhs.m_parameter) && + equal_type_and_partial_shape(lhs.m_result->output(0), rhs.m_result->output(0)); } private: - Result m_read_result; + const Parameter *m_parameter; + const Result *m_result; }; -namespace equal { - -template -struct Equal { - static bool equal_value(const Value& lhs, const Value& rhs) { - return lhs == rhs; - } -}; +std::vector extract_inputs(ngraph::op::util::SubGraphOp *sub) { + std::vector nodes; + const auto &fn_body = sub->get_function(); + const auto &fn_parameters = fn_body->get_parameters(); -template <> -struct Equal { - static bool equal_value(ngraph::bfloat16 lhs, ngraph::bfloat16 rhs) { - if (lhs.to_bits() == rhs.to_bits()) { - return true; - } - return std::abs(lhs - rhs) < 1e-3; + for (const auto &in_desc : sub->get_input_descriptions()) { + const auto parameter = fn_parameters.at(in_desc->m_body_parameter_index).get(); + const auto input = sub->input(in_desc->m_input_index); + nodes.push_back(NodeAndInputDescription{input, parameter, in_desc.get()}); } -}; + return nodes; +} -template <> -struct Equal { - static bool equal_value(ngraph::float16 lhs, ngraph::float16 rhs) { - if (lhs.to_bits() == rhs.to_bits()) { - return true; - } - return std::abs(lhs - rhs) < 1e-3; - } -}; +std::vector extract_outputs(ngraph::op::util::SubGraphOp *sub) { + std::vector nodes; + const auto &fn_body = sub->get_function(); + const auto &fs_results = fn_body->get_results(); -template <> -struct Equal { - static bool equal_value(float lhs, float rhs) { - return std::abs(lhs - rhs) < 1e-4; + for (const auto &out_desc : sub->get_output_descriptions()) { + const auto result = fs_results.at(out_desc->m_body_value_index).get(); + const auto output = sub->output(out_desc->m_output_index); + nodes.push_back(NodeAndOutputDescription{output, result, out_desc.get()}); } -}; + return nodes; +} -template <> -struct Equal { - static bool equal_value(double lhs, double rhs) { - return std::abs(lhs - rhs) < 1e-5; - } -}; +std::vector extract_backedges(ngraph::op::util::SubGraphOp *sub) { + using MergedInputDescription = ngraph::op::util::SubGraphOp::MergedInputDescription; + std::vector edges; + const auto &fn_body = sub->get_function(); -template -struct Equal> { - static bool equal_value(const std::vector& lhs, const std::vector& rhs) { - return lhs.size() == rhs.size() && - std::equal(begin(lhs), end(lhs), begin(rhs), Equal::equal_value); - } -}; + const auto &fs_parameters = fn_body->get_parameters(); + const auto &fs_results = fn_body->get_results(); -template <> -struct Equal { - static bool equal_value( - SubGraphOpInputDescription::const_reference lhs, - SubGraphOpInputDescription::const_reference rhs) { - const auto& lhs_type_info = lhs->get_type_info(); - const auto& rhs_type_info = rhs->get_type_info(); - if (lhs_type_info != rhs_type_info) { - return false; - } - using SubGraphOp = ngraph::op::util::SubGraphOp; - if (lhs_type_info == SubGraphOp::SliceInputDescription::type_info) { - const auto& l_input = static_cast(*lhs); - const auto& r_input = static_cast(*rhs); - return l_input.m_start == r_input.m_start && l_input.m_stride == r_input.m_stride && - l_input.m_part_size == r_input.m_part_size && l_input.m_end == r_input.m_end && - l_input.m_axis == r_input.m_axis; - } else if (lhs_type_info == SubGraphOp::MergedInputDescription::type_info) { - return true; - } else if (lhs_type_info == SubGraphOp::InvariantInputDescription::type_info) { - return true; + for (const auto &in_desc : sub->get_input_descriptions()) { + if (const auto &merged_in_desc = + ngraph::as_type_ptr(in_desc)) { + const auto parameter = fs_parameters.at(merged_in_desc->m_body_parameter_index); + const auto result = fs_results.at(merged_in_desc->m_body_value_index); + edges.push_back(BackEdge{parameter.get(), result.get()}); } - return false; } -}; + return edges; +} -template <> -struct Equal { - static bool equal_value( - const SubGraphOpInputDescription& lhs, const SubGraphOpInputDescription& rhs) { - if (lhs.size() != rhs.size()) { - return false; - } - return std::is_permutation( - begin(lhs), end(lhs), begin(rhs), - Equal::equal_value); - } -}; +struct NotValidInputOrOutput { + NotValidInputOrOutput(int64_t num_iterations) : m_num_iterations(num_iterations) {} -template <> -struct Equal { - static bool equal_value( - SubGraphOpOutputDescription::const_reference lhs, - SubGraphOpOutputDescription::const_reference rhs) { - const auto& lhs_type_info = lhs->get_type_info(); - const auto& rhs_type_info = rhs->get_type_info(); - if (lhs_type_info != rhs_type_info) { - return false; - } - using SubGraphOp = ngraph::op::util::SubGraphOp; - if (lhs_type_info == SubGraphOp::ConcatOutputDescription::type_info) { - const auto& l_output = static_cast(*lhs); - const auto& r_output = static_cast(*rhs); - return l_output.m_start == r_output.m_start && l_output.m_stride == r_output.m_stride && - l_output.m_part_size == r_output.m_part_size && - l_output.m_end == r_output.m_end && l_output.m_axis == r_output.m_axis; - } else if (lhs_type_info == SubGraphOp::BodyOutputDescription::type_info) { - const auto& l_output = static_cast(*lhs); - const auto& r_output = static_cast(*rhs); - return l_output.m_iteration == r_output.m_iteration; - } - return false; + bool operator()(const NodeAndOutputDescription &d) const { + return !d.result_and_output_match(m_num_iterations); } -}; -template <> -struct Equal { - static bool equal_value( - const SubGraphOpOutputDescription& lhs, const SubGraphOpOutputDescription& rhs) { - if (lhs.size() != rhs.size()) { - return false; - } - return std::is_permutation( - begin(lhs), end(lhs), begin(rhs), - Equal::equal_value); + bool operator()(const NodeAndInputDescription &d) const { + return !d.parameter_and_input_match(m_num_iterations); } -}; -template <> -struct Equal { - static bool equal_value(const SpecialBodyPorts& lhs, const SpecialBodyPorts& rhs) { - return lhs.current_iteration_input_idx == rhs.current_iteration_input_idx; - } + int64_t m_num_iterations; }; -using Constant = ngraph::opset1::Constant; -template <> -struct Equal> { - static bool equal_value( - const std::shared_ptr& lhs, const std::shared_ptr& rhs) { - const auto lhs_t = lhs->get_element_type(); - const auto rhs_t = rhs->get_element_type(); - if (lhs_t != rhs_t) { - return false; - } +bool not_valid_back_edge(const BackEdge &be) { + return !be.result_and_parameter_match(); +} - switch (lhs_t) { - case ngraph::element::Type_t::bf16: { - auto lhs_v = lhs->cast_vector(); - auto rhs_v = rhs->cast_vector(); - return Equal>::equal_value(lhs_v, rhs_v); - break; - } - case ngraph::element::Type_t::f16: { - const auto& lhs_v = lhs->cast_vector(); - const auto& rhs_v = rhs->cast_vector(); - return Equal>::equal_value(lhs_v, rhs_v); - break; - } - case ngraph::element::Type_t::f32: { - const auto& lhs_v = lhs->cast_vector(); - const auto& rhs_v = rhs->cast_vector(); - return Equal>::equal_value(lhs_v, rhs_v); - break; - } - default: { - const auto& lhs_v = lhs->cast_vector(); - const auto& rhs_v = rhs->cast_vector(); - return Equal>::equal_value(lhs_v, rhs_v); - break; - } - } +bool equal_body_ports(ngraph::opset6::Loop *lhs, ngraph::opset6::Loop *rhs) { + if (!lhs || !rhs) { return false; } -}; -} // namespace equal + const auto &lhs_fn_body = lhs->get_function(); + const auto &rhs_fn_body = rhs->get_function(); -namespace str { -template -struct Void_t { - using type = void; -}; + const auto &lhs_sbp = lhs->get_special_body_ports(); + const auto &rhs_sbp = rhs->get_special_body_ports(); -template -struct Get { - static std::string value(const T&) { - return std::string("[Ups can't convert this to value: ") + typeid(T).name() + "]"; - } -}; + constexpr int64_t port_not_provided = -1; -template -struct Get()))>::type> { - static std::string value(const T& v) { - return "[" + std::to_string(v) + "]"; - } -}; - -template <> -struct Get { - static std::string value(const std::string& v) { - return "[" + v + "]"; - } -}; + const bool input_provided = lhs_sbp.current_iteration_input_idx != port_not_provided || + rhs_sbp.current_iteration_input_idx != port_not_provided; -template -struct Get< - T, - typename Void_t())), decltype(end(std::declval()))>::type> { - template - static std::string join(const Container& c, const char* glue = ", ") { - std::stringstream oss; - const char* s = ""; - for (const auto& v : c) { - oss << s << v; - s = glue; + if (input_provided) { + const auto &lhs_parameter = + lhs_fn_body->get_parameters().at(lhs_sbp.current_iteration_input_idx); + const auto &rhs_parameter = + rhs_fn_body->get_parameters().at(rhs_sbp.current_iteration_input_idx); + if (!NodeAndInputDescription::equal_parameters(lhs_parameter.get(), rhs_parameter.get())) { + return false; } - return oss.str(); } - static std::string value(const T& v) { - return "[" + join(v) + "]"; - } -}; + const auto &lhs_result = lhs_fn_body->get_results().at(lhs_sbp.body_condition_output_idx); + const auto &rhs_result = rhs_fn_body->get_results().at(rhs_sbp.body_condition_output_idx); -} // namespace str + return NodeAndOutputDescription::equal_results(lhs_result.get(), rhs_result.get()); +} -class ReadAndCompareAttributes : public ngraph::AttributeVisitor { +class CompareSubGraphs { public: - ReadAndCompareAttributes(const ReadAndStoreAttributes& ref) - : m_attr_ref(ref), m_cmp_result{ref.read_result()} {} + using Result = Comparator::Result; + using SubGraphOp = ngraph::op::util::SubGraphOp; - void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { - if (should_return()) { - return; + Result compare(SubGraphOp *sub_lhs, SubGraphOp *sub_rhs) { + const auto lhs_it_no = get_num_iterations(sub_lhs); + const auto rhs_it_no = get_num_iterations(sub_rhs); + if (lhs_it_no != rhs_it_no) { + return Result::error("different number of iterations"); } - m_visited_attributes.insert(name); - if (auto inputs = - ngraph::as_type>(&adapter)) { - verify(name, inputs->get()); - } else if ( - auto outputs = - ngraph::as_type>(&adapter)) { - verify(name, outputs->get()); - } else if ( - auto ports = ngraph::as_type>(&adapter)) { - verify(name, ports->get()); - } else if ( - auto a = ngraph::as_type< - ngraph::AttributeAdapter>>( - &adapter)) { - m_visited_attributes.insert(name); - const auto ref_value = m_attr_ref.get(name); - if (!ref_value) { - m_cmp_result += "missing attribute name: '" + name + "'"; - return; - } - if (a->get()->size() != ref_value->size() || - std::memcmp(ref_value->data(), a->get()->get_ptr(), ref_value->size()) != 0) { - m_cmp_result += "mismatch in value: '" + name + "' : look in to the mem buffer"; - return; - } - } else { - m_cmp_result += "compare attr [ ERR ]: " + name + - " [drop `void` comparison which is '" + adapter.get_type_info().name + - "']"; - } - } + not_valid_input_output = lhs_it_no; -#define ON_ADAPTER(TYPE) \ - void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { \ - verify(name, adapter.get()); \ - } - - ON_ADAPTER(bool) - ON_ADAPTER(std::string) - ON_ADAPTER(int8_t) - ON_ADAPTER(int16_t) - ON_ADAPTER(int32_t) - ON_ADAPTER(int64_t) - ON_ADAPTER(uint8_t) - ON_ADAPTER(uint16_t) - ON_ADAPTER(uint32_t) - ON_ADAPTER(uint64_t) - ON_ADAPTER(float) - ON_ADAPTER(double) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - ON_ADAPTER(std::vector) - -#undef ON_ADAPTER + const auto result_for_inputs = compare_inputs(sub_lhs, sub_rhs); + if (!result_for_inputs.valid) { + return result_for_inputs; + } - void on_adapter( - const std::string&, ngraph::ValueAccessor>&) override { - // handled by `compare_functions` drop it here - } + const auto result_for_outputs = compare_outputs(sub_lhs, sub_rhs); + if (!result_for_outputs.valid) { + return result_for_outputs; + } - bool all_attr_was_compared() const { - return m_visited_attributes.size() == m_attr_ref.attributes_number(); + return compare_backedges(sub_lhs, sub_rhs); } - size_t compared_attr_number() const { - return m_visited_attributes.size(); - } +private: + Result compare_inputs(SubGraphOp *sub_lhs, SubGraphOp *sub_rhs) const { + const auto &lhs_sub_inputs = extract_inputs(sub_lhs); + const auto &rhs_sub_inputs = extract_inputs(sub_rhs); - const Result& cmp_result() const { - return m_cmp_result; - } + if (lhs_sub_inputs.empty() || rhs_sub_inputs.empty()) { + return Result::error("no input in subgraph"); + } -private: - bool should_return() const { - return m_fast_exit && m_cmp_result.has_error(); - } - template - void verify(const std::string& name, const AttrValue& attr_value) { - if (should_return()) { - return; + if (std::any_of(begin(lhs_sub_inputs), end(lhs_sub_inputs), not_valid_input_output)) { + return Result::error("inputs and parameters mismatch"); } - m_visited_attributes.insert(name); - const auto ref_value = m_attr_ref.get(name); - if (!ref_value) { - m_cmp_result += "missing attribute name: '" + name + "'"; - return; + if (std::any_of(begin(rhs_sub_inputs), end(rhs_sub_inputs), not_valid_input_output)) { + return Result::error("inputs and parameters mismatch"); } - if (!equal::Equal::equal_value(*ref_value, attr_value)) { - m_cmp_result += "mismatch in value: '" + name + - "' : " + str::Get::value(*ref_value) + " vs " + - str::Get::value(attr_value); + if (lhs_sub_inputs.size() != rhs_sub_inputs.size() || + !std::is_permutation( + begin(lhs_sub_inputs), end(lhs_sub_inputs), begin(rhs_sub_inputs))) { + return Result::error("different SubGraph InputDescription"); } + return Result::ok(); } - const ReadAndStoreAttributes& m_attr_ref; - Result m_cmp_result; - std::set m_visited_attributes; - bool m_fast_exit{true}; -}; + Result compare_outputs(SubGraphOp *sub_lhs, SubGraphOp *sub_rhs) const { + const auto &lhs_sub_outputs = extract_outputs(sub_lhs); + const auto &rhs_sub_outputs = extract_outputs(sub_rhs); -} // namespace attr_comparison + if (lhs_sub_outputs.empty() || rhs_sub_outputs.empty()) { + return Result::error("no output in subgraph"); + } -class CompareNodesAttributes { -public: - CompareNodesAttributes() : m_compare_attr(m_store_attr) {} + if (std::any_of(begin(lhs_sub_outputs), end(lhs_sub_outputs), not_valid_input_output)) { + return Result::error("outputs and results mismatch"); + } + if (std::any_of(begin(rhs_sub_outputs), end(rhs_sub_outputs), not_valid_input_output)) { + return Result::error("outputs and results mismatch"); + } - attr_comparison::ReadAndStoreAttributes& get_ref_reader() { - return m_store_attr; + if (lhs_sub_outputs.size() != rhs_sub_outputs.size() || + !std::is_permutation( + begin(lhs_sub_outputs), end(lhs_sub_outputs), begin(rhs_sub_outputs))) { + return Result::error("different SubGraph OutputDescription"); + } + return Result::ok(); } - attr_comparison::ReadAndCompareAttributes& get_cmp_reader() { - return m_compare_attr; - } + Result compare_backedges(SubGraphOp *sub_lhs, SubGraphOp *sub_rhs) const { + const auto lhs_back_edges = extract_backedges(sub_lhs); + const auto rhs_back_edges = extract_backedges(sub_rhs); - bool equal() const { - return m_compare_attr.all_attr_was_compared() && !m_compare_attr.cmp_result().has_error(); + if (std::any_of(begin(lhs_back_edges), end(lhs_back_edges), not_valid_back_edge)) { + return Result::error("back edges mismatch"); + } + if (std::any_of(begin(rhs_back_edges), end(rhs_back_edges), not_valid_back_edge)) { + return Result::error("back edges mismatch"); + } + + if (lhs_back_edges.size() != rhs_back_edges.size() || + !std::is_permutation( + begin(lhs_back_edges), end(lhs_back_edges), begin(rhs_back_edges))) { + return Result::error("different SubGraph BackEdges"); + } + if (auto loop_lhs = ngraph::as_type(sub_lhs)) { + auto loop_rhs = ngraph::as_type(sub_rhs); + if (!equal_body_ports(loop_lhs, loop_rhs)) { + return Result::error("different Special Body Ports"); + } + } + return Result::ok(); } - friend std::string to_string(const CompareNodesAttributes& c) { - const auto& result = c.m_compare_attr.cmp_result(); - if (result.has_error()) { - return result.message(); + static int64_t get_num_iterations(ngraph::op::util::SubGraphOp *sub) { + using namespace ngraph::opset6; + if (const auto ti = dynamic_cast(sub)) { + return ti->get_num_iterations(); } - if (!c.m_compare_attr.all_attr_was_compared()) { - return "not all of attr was compared: " + - std::to_string(c.m_compare_attr.compared_attr_number()) + " vs " + - std::to_string(c.m_store_attr.attributes_number()); + if (const auto l = dynamic_cast(sub)) { + return l->get_num_iterations(); } - return "looks good [compared " + std::to_string(c.m_compare_attr.compared_attr_number()) + - " attributes]"; + + return -1; } -private: - attr_comparison::ReadAndStoreAttributes m_store_attr; - attr_comparison::ReadAndCompareAttributes m_compare_attr; + NotValidInputOrOutput not_valid_input_output{-1}; }; +} // namespace detail + +Comparator::Result compare_io( + ngraph::op::util::SubGraphOp *sub_lhs, ngraph::op::util::SubGraphOp *sub_rhs) { + return detail::CompareSubGraphs{}.compare(sub_lhs, sub_rhs); +} +} // namespace subgraph +} // namespace Comparator::Result Comparator::compare( const std::shared_ptr& f1, const std::shared_ptr& f2) { /* @@ -831,8 +610,10 @@ Comparator::Result Comparator::compare( auto subgraph1 = dynamic_cast(node1); auto subgraph2 = dynamic_cast(node2); - if (subgraph1 && subgraph2) { - auto result = recreate().compare(subgraph1->get_function(), subgraph2->get_function()); + const bool subgraph_nodes = subgraph1 && subgraph2; + + if (subgraph_nodes) { + const auto result = subgraph::compare_io(subgraph1, subgraph2); if (!result.valid) { return result; } @@ -859,14 +640,32 @@ Comparator::Result Comparator::compare( name(node1) + " and " + to_str(node2->inputs().size()) + " for " + name(node2)); } - for (int i = 0; i < node1->inputs().size(); ++i) { + if (!subgraph_nodes) { + compare_inputs(node1, node2, err_log); + compare_outputs(node1, node2, err_log); + } + + if (should_compare(CmpValues::ATTRIBUTES)) { + const auto result = attributes::compare(node1, node2, m_comparition_flags); + if (!result.valid) { + return result; + } + } + + return Result::ok("Check if any minor error was log in to err_log"); +} + + +void Comparator::compare_inputs(ngraph::Node* node1, ngraph::Node* node2, std::ostream& err_log) { + for (size_t i = 0; i < node1->inputs().size(); ++i) { if (should_compare(CmpValues::CONST_VALUES)) { using Constant = ngraph::opset1::Constant; + const auto equal_value = + ::attributes::detail::equal::Equal>::equal_value; + auto const1 = ngraph::as_type_ptr(node1->get_input_node_shared_ptr(i)); auto const2 = ngraph::as_type_ptr(node2->get_input_node_shared_ptr(i)); - using namespace ::attr_comparison::equal; - if (const1 && const2 && - !Equal>::equal_value(const1, const2)) { + if (const1 && const2 && !equal_value(const1, const2)) { err_log << "Different Constant values detected\n" << node1->description() << " Input(" << i << ") and " << node2->description() << " Input(" << i << ")" << std::endl; @@ -905,7 +704,9 @@ Comparator::Result Comparator::compare( << std::endl; } } +} +void Comparator::compare_outputs(ngraph::Node* node1, ngraph::Node* node2, std::ostream& err_log) { for (int i = 0; i < node1->outputs().size(); ++i) { const auto& tensor1 = node1->output(i).get_tensor(); const auto& tensor2 = node2->output(i).get_tensor(); @@ -925,19 +726,6 @@ Comparator::Result Comparator::compare( << i << ") " << node2->output(i).get_partial_shape() << std::endl; } } - - if (should_compare(CmpValues::ATTRIBUTES)) { - CompareNodesAttributes compare_nodes; - node1->visit_attributes(compare_nodes.get_ref_reader()); - node2->visit_attributes(compare_nodes.get_cmp_reader()); - if (!compare_nodes.equal()) { - return Result::error( - "Comparison of attributes failed for nodes " + name(node1) + ", " + name(node2) + - " [cmp status: " + to_string(compare_nodes) + "]"); - } - } - - return Result::ok("Check if any minor error was log in to err_log"); } void Comparator::add_nodes_inputs_to_queue(ngraph::Node* node1, ngraph::Node* node2) { @@ -949,8 +737,6 @@ void Comparator::add_nodes_inputs_to_queue(ngraph::Node* node1, ngraph::Node* no } } -} // namespace - FunctionsComparator::Result FunctionsComparator::compare( const std::shared_ptr& f1, const std::shared_ptr& f2) const { @@ -980,3 +766,124 @@ void check_rt_info(const std::shared_ptr& f) { } NGRAPH_RTTI_DEFINITION(TestOpMultiOut, "TestOp", 0); + +namespace attributes { +namespace detail { +void ReadAndStoreAttributes::on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) { + if (auto inputs = + ngraph::as_type>(&adapter)) { + insert(name, inputs->get()); + } else if ( + auto outputs = + ngraph::as_type>(&adapter)) { + insert(name, outputs->get()); + } else if (ngraph::is_type>(&adapter)) { + // drop comparison, no more info than port indexes which will be check in + // subgraph::compare_io + } else if ( + auto a = ngraph::as_type< + ngraph::AttributeAdapter>>( + &adapter)) { + const auto beg = static_cast(a->get()->get_ptr()); + const auto end = beg + a->get()->size(); + insert(name, storage::MemoryChunk{storage::MemoryChunk::Data(beg, end)}); + } else { + m_read_result += "store attr [ ERR ]: " + name + + " [drop `void` comparison which is '" + adapter.get_type_info().name + + "']"; + } +} +template +void ReadAndCompareAttributes::verify(const std::string &name, const AttrValue &attr_value) { + if (should_return()) { + return; + } + m_visited_attributes.insert(name); + const auto ref_value = m_attr_ref.get(name); + if (!ref_value) { + m_cmp_result += "missing attribute name: '" + name + "'"; + return; + } + + if (!equal::Equal::equal_value(*ref_value, attr_value)) { + m_cmp_result += "mismatch in value: '" + name + + "' : " + str::Get::value(*ref_value) + " vs " + + str::Get::value(attr_value); + } +} + +void ReadAndCompareAttributes::verify_mem_buf(const std::string &name, + const std::shared_ptr &buffer) { + if (should_return()) { + return; + } + m_visited_attributes.insert(name); + const auto ref_value = m_attr_ref.get(name); + if (!ref_value) { + m_cmp_result += "missing attribute name: '" + name + "'"; + return; + } + + if (buffer->size() != ref_value->size() || + std::memcmp(ref_value->data(), buffer->get_ptr(), ref_value->size()) != 0) { + m_cmp_result += "mismatch in value: '" + name + "' : look in to the mem buffer"; + return; + } +} + +void ReadAndCompareAttributes::verify_function(const std::string &name, FunctionAccessor &adapter) { + if (should_return()) { + return; + } + m_visited_attributes.insert(name); + const auto ref_value = m_attr_ref.get>(name); + if (!ref_value) { + m_cmp_result += "missing attribute name: '" + name + "'"; + return; + } + Comparator c(m_check_flags); + const auto result = c.compare(*ref_value, adapter.get()); + if (!result.valid) { + m_cmp_result += result.message; + } +} + +void ReadAndCompareAttributes::verify_others(const std::string &name, ngraph::ValueAccessor &adapter) { + if (auto inputs = + ngraph::as_type>(&adapter)) { + verify(name, inputs->get()); + } else if ( + auto outputs = + ngraph::as_type>(&adapter)) { + verify(name, outputs->get()); + } else if (ngraph::is_type>(&adapter)) { + // drop comparison, no more info than port indexes which will be check in + // subgraph::compare_io + } else if ( + auto a = ngraph::as_type< + ngraph::AttributeAdapter>>( + &adapter)) { + verify_mem_buf(name, a->get()); + } else { + m_cmp_result += "compare attr [ ERR ]: " + name + + " [drop `void` comparison which is '" + adapter.get_type_info().name + + "']"; + } +} + +} // namespace detail + +Comparator::Result compare( + ngraph::Node* node1, ngraph::Node* node2, Comparator::CmpValues comparition_flags) { + detail::CompareNodesAttributes compare_nodes_attr(comparition_flags); + node1->visit_attributes(compare_nodes_attr.get_ref_reader()); + node2->visit_attributes(compare_nodes_attr.get_cmp_reader()); + if (!compare_nodes_attr.equal()) { + return Comparator::Result::error( + "Comparison of attributes failed for nodes " + name(node1) + ", " + name(node2) + + " [cmp status: " + to_str(compare_nodes_attr) + "]"); + } + return Comparator::Result::ok(to_str(compare_nodes_attr)); +} + +} // namespace attributes \ No newline at end of file diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.hpp index 43a93fb07d0d17..e58fa5edb9f455 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -11,6 +11,7 @@ #include #include #include +#include #include "test_common.hpp" @@ -71,7 +72,7 @@ class FunctionsComparator { /// /// \deprecated -/// \brief compare_functions is obsolete function use FunctionComparator instead. +/// \brief compare_functions is obsolete function use FunctionsComparator instead. /// inline std::pair compare_functions( const std::shared_ptr& f1, @@ -151,3 +152,657 @@ class TestOpMultiOut : public ngraph::op::Op { return std::make_shared(new_args.at(0), new_args.at(1)); } }; +class Comparator { +public: + using CmpValues = FunctionsComparator::CmpValues; + using Result = FunctionsComparator::Result; + using ComparedNodes = std::pair; + + explicit Comparator(CmpValues f) : m_comparition_flags(f) {} + + Result compare( + const std::shared_ptr& f1, const std::shared_ptr& f2); + + Result compare(ngraph::Node* node1, ngraph::Node* node2) { + std::stringstream errors; + const auto result = compare(node1, node2, errors); + if (!result.valid) { + return result; + } + const auto msg = errors.str(); + return msg.empty() ? Result::ok() : Result::error(msg); + } + + Comparator recreate() const { + return Comparator(m_comparition_flags); + } + + void compare_inputs(ngraph::Node* node1, ngraph::Node* node2, std::ostream& err_log); + + void compare_outputs(ngraph::Node* node1, ngraph::Node* node2, std::ostream& err_log); + +private: + bool should_compare(CmpValues f) const noexcept { + return m_comparition_flags & f; + } + + /// + /// \param err_log - will be fill by minor errors if happen + /// \return only fatality error if some minor one appears it will be add to err_log + /// + Result compare(ngraph::Node* node1, ngraph::Node* node2, std::ostream& err_log); + + void add_nodes_inputs_to_queue(ngraph::Node* node1, ngraph::Node* node2); + + //-- DATA -- + CmpValues m_comparition_flags; + + std::queue q; + std::unordered_set used; +}; + +inline namespace tools { +template +std::string to_str(const T &v) { + using std::to_string; + return to_string(v); +} +template +std::string name(const Node &n) { + return n->get_friendly_name(); +} +} +namespace attributes { + +namespace detail { + +using AttrName = std::string; + +class Result { +public: + explicit Result(std::string m = {}) : m_message(std::move(m)) {} + + const std::string& message() const { + return m_message; + } + + bool has_error() const { + return !m_message.empty(); + } + + Result& operator+=(const std::string& msg) { + m_message.append(m_break_line_no, '\n').append(msg); + m_break_line_no = 1; + return *this; + } + +private: + std::string m_message; + int m_break_line_no{0}; +}; + +using SubGraphOpInputDescription = +std::vector>; + +using SubGraphOpOutputDescription = +std::vector>; + +using SpecialBodyPorts = ngraph::opset6::Loop::SpecialBodyPorts; + +namespace storage { + +class MemoryChunk { +public: + using Data = std::vector; + MemoryChunk(Data data) : m_data{std::move(data)} {} + + Data::const_pointer data() const { + return m_data.data(); + } + + size_t size() const { + return m_data.size(); + } + +private: + Data m_data; +}; + +template +class AttributeStorage { +public: + bool insert_value(AttrName name, AttrValue value) { + return m_attributes.insert({std::move(name), std::move(value)}).second; + } + + const AttrValue* get_value(const AttrName& name) const { + const auto found = m_attributes.find(name); + if (found != end(m_attributes)) { + return std::addressof(found->second); + } + return {}; + } + + std::size_t get_attributes_number() const { + return m_attributes.size(); + } + +private: + std::map m_attributes; +}; + +class Storage : private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage>, + private AttributeStorage, + private AttributeStorage { +public: + template + const AttributeStorage& storage() const { + return *static_cast*>(this); + } + template + AttributeStorage& storage() { + return *static_cast*>(this); + } + + size_t stored_attributes_number() const { + return storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage>().get_attributes_number() + + storage().get_attributes_number() + + storage().get_attributes_number(); + } +}; + +} // namespace storage + +class ReadAndStoreAttributes : public ngraph::AttributeVisitor, protected storage::Storage { +public: + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + +#define ON_ADAPTER(TYPE) \ + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { \ + insert(name, adapter.get()); \ + } + + ON_ADAPTER(bool) + ON_ADAPTER(std::string) + ON_ADAPTER(int8_t) + ON_ADAPTER(int16_t) + ON_ADAPTER(int32_t) + ON_ADAPTER(int64_t) + ON_ADAPTER(uint8_t) + ON_ADAPTER(uint16_t) + ON_ADAPTER(uint32_t) + ON_ADAPTER(uint64_t) + ON_ADAPTER(float) + ON_ADAPTER(double) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::shared_ptr) + +#undef ON_ADAPTER + + template + const AttrValue* get(const AttrName& name) const { + return storage().get_value(name); + } + + template + bool insert(AttrName name, AttrValue value) { + return storage().insert_value(std::move(name), std::move(value)); + } + + size_t attributes_number() const { + return stored_attributes_number(); + } + + const Result read_result() const { + return m_read_result; + } + +private: + Result m_read_result; +}; + +namespace equal { + +template +struct Equal { + static bool equal_value(const Value& lhs, const Value& rhs) { + return lhs == rhs; + } +}; + +template <> +struct Equal { + static bool equal_value(ngraph::bfloat16 lhs, ngraph::bfloat16 rhs) { + if (lhs.to_bits() == rhs.to_bits()) { + return true; + } + return std::abs(lhs - rhs) < 1e-3; + } +}; + +template <> +struct Equal { + static bool equal_value(ngraph::float16 lhs, ngraph::float16 rhs) { + if (lhs.to_bits() == rhs.to_bits()) { + return true; + } + return std::abs(lhs - rhs) < 1e-3; + } +}; + +template <> +struct Equal { + static bool equal_value(float lhs, float rhs) { + if (std::isfinite(lhs) && std::isfinite(rhs)) { + return std::abs(lhs - rhs) < 1e-4; + } + return (std::isinf(lhs) && std::isinf(rhs)) || + (std::isnan(lhs) && std::isnan(rhs)); + } +}; + +template <> +struct Equal { + static bool equal_value(double lhs, double rhs) { + if (std::isfinite(lhs) && std::isfinite(rhs)) { + return std::abs(lhs - rhs) < 1e-5; + } + return (std::isinf(lhs) && std::isinf(rhs)) || + (std::isnan(lhs) && std::isnan(rhs)); + } +}; + +template +struct Equal> { + static bool equal_value(const std::vector& lhs, const std::vector& rhs) { + return lhs.size() == rhs.size() && + std::equal(begin(lhs), end(lhs), begin(rhs), Equal::equal_value); + } +}; + +template <> +struct Equal { + static bool equal_value( + SubGraphOpInputDescription::const_reference lhs, + SubGraphOpInputDescription::const_reference rhs) { + const auto& lhs_type_info = lhs->get_type_info(); + const auto& rhs_type_info = rhs->get_type_info(); + if (lhs_type_info != rhs_type_info) { + return false; + } + using SubGraphOp = ngraph::op::util::SubGraphOp; + if (lhs_type_info == SubGraphOp::SliceInputDescription::type_info) { + const auto& l_input = static_cast(*lhs); + const auto& r_input = static_cast(*rhs); + return l_input.m_start == r_input.m_start && l_input.m_stride == r_input.m_stride && + l_input.m_part_size == r_input.m_part_size && l_input.m_end == r_input.m_end && + l_input.m_axis == r_input.m_axis; + } else if (lhs_type_info == SubGraphOp::MergedInputDescription::type_info) { + return true; + } else if (lhs_type_info == SubGraphOp::InvariantInputDescription::type_info) { + return true; + } + return false; + } +}; + +template <> +struct Equal { + static bool equal_value( + const SubGraphOpInputDescription& lhs, const SubGraphOpInputDescription& rhs) { + if (lhs.size() != rhs.size()) { + return false; + } + return std::is_permutation( + begin(lhs), end(lhs), begin(rhs), + Equal::equal_value); + } +}; + +template <> +struct Equal { + static bool equal_value( + SubGraphOpOutputDescription::const_reference lhs, + SubGraphOpOutputDescription::const_reference rhs) { + const auto& lhs_type_info = lhs->get_type_info(); + const auto& rhs_type_info = rhs->get_type_info(); + if (lhs_type_info != rhs_type_info) { + return false; + } + using SubGraphOp = ngraph::op::util::SubGraphOp; + if (lhs_type_info == SubGraphOp::ConcatOutputDescription::type_info) { + const auto& l_output = static_cast(*lhs); + const auto& r_output = static_cast(*rhs); + return l_output.m_start == r_output.m_start && l_output.m_stride == r_output.m_stride && + l_output.m_part_size == r_output.m_part_size && + l_output.m_end == r_output.m_end && l_output.m_axis == r_output.m_axis; + } else if (lhs_type_info == SubGraphOp::BodyOutputDescription::type_info) { + const auto& l_output = static_cast(*lhs); + const auto& r_output = static_cast(*rhs); + return l_output.m_iteration == r_output.m_iteration; + } + return false; + } +}; + +template <> +struct Equal { + static bool equal_value( + const SubGraphOpOutputDescription& lhs, const SubGraphOpOutputDescription& rhs) { + if (lhs.size() != rhs.size()) { + return false; + } + return std::is_permutation( + begin(lhs), end(lhs), begin(rhs), + Equal::equal_value); + } +}; + +template <> +struct Equal { + static constexpr uint8_t BITS_IN_BYTE_COUNT = 8; + + static inline uint8_t extract_bit(uint8_t val, uint8_t bit) { + return (val >> bit) & 0x01; + } + + static bool equal_value(const uint8_t* lhs, const uint8_t* rhs, + size_t lhs_bit_size, size_t rhs_bit_size) { + if (lhs_bit_size != rhs_bit_size) return false; + + for (size_t bit_idx = 0; bit_idx < lhs_bit_size; bit_idx++) { + const uint8_t byte_idx = bit_idx / BITS_IN_BYTE_COUNT; + const uint8_t bit_in_byte_idx = 7 - (bit_idx % BITS_IN_BYTE_COUNT); + + if (extract_bit(lhs[byte_idx], bit_in_byte_idx) != + extract_bit(rhs[byte_idx], bit_in_byte_idx)) { + return false; + } + } + + return true; + } +}; + +using Constant = ngraph::opset1::Constant; +template <> +struct Equal> { + static bool equal_value( + const std::shared_ptr& lhs, const std::shared_ptr& rhs) { + const auto lhs_t = lhs->get_element_type(); + const auto rhs_t = rhs->get_element_type(); + if (lhs_t != rhs_t) { + return false; + } + + switch (lhs_t) { + case ngraph::element::Type_t::u1: { + const auto lhs_v = static_cast(lhs->get_data_ptr()); + const auto rhs_v = static_cast(rhs->get_data_ptr()); + const auto lhs_bit_size = shape_size(lhs->get_shape()); + const auto rhs_bit_size = shape_size(rhs->get_shape()); + return Equal::equal_value(lhs_v, rhs_v, lhs_bit_size, + rhs_bit_size); + } + case ngraph::element::Type_t::bf16: { + auto lhs_v = lhs->cast_vector(); + auto rhs_v = rhs->cast_vector(); + return Equal>::equal_value(lhs_v, rhs_v); + break; + } + case ngraph::element::Type_t::f16: { + const auto& lhs_v = lhs->cast_vector(); + const auto& rhs_v = rhs->cast_vector(); + return Equal>::equal_value(lhs_v, rhs_v); + break; + } + case ngraph::element::Type_t::f32: { + const auto& lhs_v = lhs->cast_vector(); + const auto& rhs_v = rhs->cast_vector(); + return Equal>::equal_value(lhs_v, rhs_v); + break; + } + default: { + const auto& lhs_v = lhs->cast_vector(); + const auto& rhs_v = rhs->cast_vector(); + return Equal>::equal_value(lhs_v, rhs_v); + break; + } + } + return false; + } +}; +} // namespace equal + +namespace str { +template +struct Void_t { + using type = void; +}; + +template +struct Get { + static std::string value(const T&) { + return std::string("[Ups can't convert this to value: ") + typeid(T).name() + "]"; + } +}; + +template +struct Get()))>::type> { + static std::string value(const T& v) { + return "[" + std::to_string(v) + "]"; + } +}; + +template <> +struct Get { + static std::string value(const std::string& v) { + return "[" + v + "]"; + } +}; + +template +struct Get< + T, + typename Void_t())), decltype(end(std::declval()))>::type> { + template + static std::string join(const Container& c, const char* glue = ", ") { + std::stringstream oss; + const char* s = ""; + for (const auto& v : c) { + oss << s << v; + s = glue; + } + return oss.str(); + } + + static std::string value(const T& v) { + return "[" + join(v) + "]"; + } +}; + +} // namespace str + +class ReadAndCompareAttributes : public ngraph::AttributeVisitor { +public: + ReadAndCompareAttributes(const ReadAndStoreAttributes& ref, Comparator::CmpValues check_flags) + : m_attr_ref(ref), m_cmp_result{ref.read_result()}, m_check_flags(check_flags) {} + + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { + verify_others(name, adapter); + } + +#define ON_ADAPTER(TYPE) \ + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override { \ + verify(name, adapter.get()); \ + } + + ON_ADAPTER(bool) + ON_ADAPTER(std::string) + ON_ADAPTER(int8_t) + ON_ADAPTER(int16_t) + ON_ADAPTER(int32_t) + ON_ADAPTER(int64_t) + ON_ADAPTER(uint8_t) + ON_ADAPTER(uint16_t) + ON_ADAPTER(uint32_t) + ON_ADAPTER(uint64_t) + ON_ADAPTER(float) + ON_ADAPTER(double) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + ON_ADAPTER(std::vector) + +#undef ON_ADAPTER + + void on_adapter( + const std::string& name, + ngraph::ValueAccessor>& adapter) override { + verify_function(name, adapter); + } + + bool all_attr_was_compared() const { + return m_visited_attributes.size() == m_attr_ref.attributes_number(); + } + + size_t compared_attr_number() const { + return m_visited_attributes.size(); + } + + const Result& cmp_result() const { + return m_cmp_result; + } + +private: + bool should_return() const { + return m_fast_exit && m_cmp_result.has_error(); + } + + template + void verify(const std::string& name, const AttrValue& attr_value); + + void verify_mem_buf( + const std::string& name, const std::shared_ptr& buffer); + + using FunctionAccessor = ngraph::ValueAccessor>; + + void verify_function(const std::string& name, FunctionAccessor& adapter); + + void verify_others(const std::string& name, ngraph::ValueAccessor& adapter); + //-- DATA -- + const ReadAndStoreAttributes& m_attr_ref; + Result m_cmp_result; + Comparator::CmpValues m_check_flags; + std::set m_visited_attributes; + static constexpr bool m_fast_exit{true}; +}; +class CompareNodesAttributes { +public: + using ReadAndStoreAttributes = detail::ReadAndStoreAttributes; + using ReadAndCompareAttributes = detail::ReadAndCompareAttributes; + + CompareNodesAttributes(Comparator::CmpValues m_compare_flags) + : m_compare_attr(m_store_attr, m_compare_flags) {} + + ReadAndStoreAttributes& get_ref_reader() { + return m_store_attr; + } + + ReadAndCompareAttributes& get_cmp_reader() { + return m_compare_attr; + } + + bool equal() const { + return m_compare_attr.all_attr_was_compared() && !m_compare_attr.cmp_result().has_error(); + } + + friend std::string to_string(const CompareNodesAttributes& c) { + const auto& result = c.m_compare_attr.cmp_result(); + if (result.has_error()) { + return result.message(); + } + if (!c.m_compare_attr.all_attr_was_compared()) { + return "not all of attr was compared: " + + to_str(c.m_compare_attr.compared_attr_number()) + " vs " + + to_str(c.m_store_attr.attributes_number()); + } + return "looks good [compared " + to_str(c.m_compare_attr.compared_attr_number()) + + " attributes]"; + } + +private: + ReadAndStoreAttributes m_store_attr; + ReadAndCompareAttributes m_compare_attr; +}; + +} // namespace detail + +Comparator::Result compare(ngraph::Node* node1, ngraph::Node* node2, Comparator::CmpValues comparition_flags); + +} // namespace attributes \ No newline at end of file diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/precomp.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/precomp.hpp index b1fee93176de22..65246ab76c6239 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/precomp.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/test_assertions.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/test_assertions.hpp index d737e69fea68e6..be0eb055f1cf56 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/test_assertions.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/test_assertions.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,19 +12,14 @@ #include #include -namespace { - -bool strContains(const std::string & str, const std::string & substr) { +inline bool strContains(const std::string & str, const std::string & substr) { return str.find(substr) != std::string::npos; } -bool strDoesnotContain(const std::string & str, const std::string & substr) { - (void)strDoesnotContain; // to overcome unused warning +inline bool strDoesnotContain(const std::string & str, const std::string & substr) { return !strContains(str, substr); } -} // namespace - #define ASSERT_STR_CONTAINS(str, substr) \ ASSERT_PRED2(&strContains, str, substr) diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/test_common.cpp b/inference-engine/tests/ie_test_utils/common_test_utils/test_common.cpp index fe9c31793d21c6..02f5f5dca9e35f 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/test_common.cpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/test_common.cpp @@ -1,8 +1,9 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include "test_common.hpp" +#include "common_utils.hpp" #include @@ -69,10 +70,7 @@ TestsCommon::TestsCommon() { } std::string TestsCommon::GetTimestamp() { - auto now = std::chrono::system_clock::now(); - auto epoch = now.time_since_epoch(); - auto ns = std::chrono::duration_cast(epoch); - return std::to_string(ns.count()); + return CommonTestUtils::GetTimestamp(); } std::string TestsCommon::GetTestName() const { diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/test_common.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/test_common.hpp index 9e600636b079d5..2c4dcf49067a1a 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/test_common.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/test_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,11 +13,9 @@ namespace CommonTestUtils { class TestsCommon : virtual public ::testing::Test { protected: TestsCommon(); - ~TestsCommon() override; static std::string GetTimestamp(); - std::string GetTestName() const; }; diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/test_constants.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/test_constants.hpp index 3ab8e8db0a3154..327439cfa65e87 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/test_constants.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/test_constants.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once namespace CommonTestUtils { @@ -16,6 +17,9 @@ const char DEVICE_MULTI[] = "MULTI"; const char DEVICE_TEMPLATE[] = "TEMPLATE"; const char DEVICE_HETERO[] = "HETERO"; +const char REPORT_FILENAME[] = "report"; +const char REPORT_EXTENSION[] = ".xml"; + #ifdef _WIN32 #ifdef __MINGW32__ const char pre[] = "lib"; diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.cpp b/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.cpp index a5e2b1e7864b47..22a19fa089dc95 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.cpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.hpp index 196167d201bfdf..f88b8dbe24ccea 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/unicode_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/w_dirent.h b/inference-engine/tests/ie_test_utils/common_test_utils/w_dirent.h index c44077678899ab..57ce4342d51ea9 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/w_dirent.h +++ b/inference-engine/tests/ie_test_utils/common_test_utils/w_dirent.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.cpp b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.cpp index 476ecb129f652d..0e27479132593b 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.cpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,7 +9,7 @@ namespace CommonTestUtils { void Port::connect(Port &port) { auto locked = m_parent.lock(); if (!locked) { - THROW_IE_EXCEPTION << "Error getting parent class"; + IE_THROW() << "Error getting parent class"; } auto &ir_net = locked->getNetwork(); ir_net.addEdge(*this, port); diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.hpp index a2bff38405fa0b..257cd3f2b5213c 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/ir_net.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -53,7 +53,7 @@ class Port { Layer &getLayer() { auto locked = m_parent.lock(); if (!locked) { - THROW_IE_EXCEPTION << "Error getting parent Layer class"; + IE_THROW() << "Error getting parent Layer class"; } return *locked; } @@ -90,7 +90,7 @@ class Layer : public std::enable_shared_from_this { Port &getPortById(int64_t id) const { if (id >= m_ports.size()) { - THROW_IE_EXCEPTION << "Out of range: a port with id " << id << " not found"; + IE_THROW() << "Out of range: a port with id " << id << " not found"; } return *m_ports[id]; } @@ -123,7 +123,7 @@ class Layer : public std::enable_shared_from_this { Port &operator[](size_t id) const { if (id >= m_ports.size()) { - THROW_IE_EXCEPTION << "Out of range: a port with id " << id << " not found"; + IE_THROW() << "Out of range: a port with id " << id << " not found"; } return *m_ports[id]; } @@ -131,7 +131,7 @@ class Layer : public std::enable_shared_from_this { IRNet &getNetwork() const { auto locked = m_parent.lock(); if (!locked) { - THROW_IE_EXCEPTION << "Error getting parent IRNet class"; + IE_THROW() << "Error getting parent IRNet class"; } return *locked; } @@ -139,7 +139,7 @@ class Layer : public std::enable_shared_from_this { const std::string &getName() const { auto it = m_common_attributes.find("name"); if (it == m_common_attributes.end()) { - THROW_IE_EXCEPTION << "The layer attribute \"name\" not found."; + IE_THROW() << "The layer attribute \"name\" not found."; } return it->second; } @@ -260,14 +260,14 @@ class IRNet : public std::enable_shared_from_this { return layer_name == layer->getName(); }); if (it == m_layers.end()) { - THROW_IE_EXCEPTION << "Out of range: a layer with name " << layer_name << " not found"; + IE_THROW() << "Out of range: a layer with name " << layer_name << " not found"; } return **it; } Layer &getLayerById(size_t id) const { if (id >= m_layers.size()) { - THROW_IE_EXCEPTION << "Out of range: a layer with id " << id << " not found"; + IE_THROW() << "Out of range: a layer with id " << id << " not found"; } return *m_layers[id]; } @@ -357,7 +357,7 @@ class IRBuilder_v10 { } if (specific_attributes.find("size") == specific_attributes.end()) { - THROW_IE_EXCEPTION << "Required attribute \"size\" for Const layer is not found"; + IE_THROW() << "Required attribute \"size\" for Const layer is not found"; } m_offset += std::strtol(specific_attributes["size"].c_str(), nullptr, 10); } diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_father.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_father.hpp index 8b999379d48579..4a35ca04e389f5 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_father.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_father.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_filler.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_filler.hpp index b22e02321acc7b..68338ea88981b5 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_filler.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_filler.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.cpp b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.cpp index fff43fd223afdc..ef4215f4d1e688 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.cpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.cpp @@ -1,11 +1,10 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include #include -#include "details/ie_exception.hpp" #include "common_test_utils/xml_net_builder/xml_net_builder.hpp" namespace CommonTestUtils { @@ -41,13 +40,13 @@ void LayerDesc::resetPortIDs() { LayerDesc::LayerPortData LayerDesc::getNextInData() { if (_currentInPort == _inPortsID.size()) - THROW_IE_EXCEPTION << "Failed to get next input port: reached the last one"; + IE_THROW() << "Failed to get next input port: reached the last one"; return _inPortsID[_currentInPort++]; } LayerDesc::LayerPortData LayerDesc::getNextOutData() { if (_currentOutPort == _outPortsID.size()) - THROW_IE_EXCEPTION << "Failed to get next output port: reached the last one"; + IE_THROW() << "Failed to get next output port: reached the last one"; return _outPortsID[_currentOutPort++]; } @@ -76,7 +75,7 @@ EdgesBuilder &EdgesBuilder::connect(size_t layer1, size_t layer2) { return desc->getLayerID() == layer2; }); if (found1 == layersDesc.end() || found2 == layersDesc.end()) - THROW_IE_EXCEPTION << "Failed to find layers with index: " << layer1 << " and " << layer2; + IE_THROW() << "Failed to find layers with index: " << layer1 << " and " << layer2; nodeEdges.node("edge") .attr("from-layer", (*found1)->getLayerID()) diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.hpp index 6de59a7ed09544..55ffec60b1316b 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/xml_net_builder/xml_net_builder.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/CMakeLists.txt b/inference-engine/tests/ie_test_utils/functional_test_utils/CMakeLists.txt index d7e8862c9b4190..f391e1ce202c36 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/CMakeLists.txt +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/blob_utils.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/blob_utils.hpp index 73f445b9d42eea..afb64e4bec6d2a 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/blob_utils.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/blob_utils.hpp @@ -1,6 +1,7 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #pragma once @@ -277,7 +278,7 @@ compareBlobs(const InferenceEngine::Blob::Ptr &res, const InferenceEngine::Blob: COMPARE_WITH_REF(InferenceEngine::Precision::I64); #undef COMPARE_WITH_REF default: - THROW_IE_EXCEPTION << "Precision " << res->getTensorDesc().getPrecision().name() + IE_THROW() << "Precision " << res->getTensorDesc().getPrecision().name() << " is not covered by FuncTestUtils::compareBlobs() method"; } } @@ -296,7 +297,7 @@ inline void GetComparisonThreshold(InferenceEngine::Precision prc, float &absolu absoluteThreshold = relativeThreshold = 1; break; default: - THROW_IE_EXCEPTION << "Unhandled precision " << prc << " passed to the GetComparisonThreshold()"; + IE_THROW() << "Unhandled precision " << prc << " passed to the GetComparisonThreshold()"; } } @@ -378,7 +379,7 @@ inline InferenceEngine::Blob::Ptr copyBlobWithCast(const InferenceEngine::Blob:: newBlob = FuncTestUtils::convertBlobPrecision(blob); break; default: - THROW_IE_EXCEPTION << "Conversion from blob with precision " << blob->getTensorDesc().getPrecision().name() + IE_THROW() << "Conversion from blob with precision " << blob->getTensorDesc().getPrecision().name() << " not implemented yet!"; } return newBlob; @@ -404,7 +405,7 @@ inline InferenceEngine::Blob::Ptr createAndFillBlobFloatNormalDistribution(const CASE(InferenceEngine::Precision::BOOL) #undef CASE default: - THROW_IE_EXCEPTION << "Wrong precision specified: " << td.getPrecision().name(); + IE_THROW() << "Wrong precision specified: " << td.getPrecision().name(); } return blob; } @@ -431,18 +432,19 @@ inline InferenceEngine::Blob::Ptr createAndFillBlobFloat(const InferenceEngine:: CASE(InferenceEngine::Precision::BOOL) #undef CASE default: - THROW_IE_EXCEPTION << "Wrong precision specified: " << td.getPrecision().name(); + IE_THROW() << "Wrong precision specified: " << td.getPrecision().name(); } return blob; } +template inline InferenceEngine::Blob::Ptr createAndFillBlobWithFloatArray(const InferenceEngine::TensorDesc &td, - const float values[], + const T values[], const int size) { InferenceEngine::Blob::Ptr blob = make_blob_with_precision(td); blob->allocate(); switch (td.getPrecision()) { -#define CASE(X) case X: CommonTestUtils::fill_data_float_array(blob, values, size); break; +#define CASE(X) case X: CommonTestUtils::fill_data_float_array(blob, values, size); break; CASE(InferenceEngine::Precision::FP32) CASE(InferenceEngine::Precision::FP16) CASE(InferenceEngine::Precision::U8) @@ -455,7 +457,7 @@ inline InferenceEngine::Blob::Ptr createAndFillBlobWithFloatArray(const Inferenc CASE(InferenceEngine::Precision::BOOL) #undef CASE default: - THROW_IE_EXCEPTION << "Wrong precision specified: " << td.getPrecision().name(); + IE_THROW() << "Wrong precision specified: " << td.getPrecision().name(); } return blob; } @@ -483,7 +485,7 @@ inline InferenceEngine::Blob::Ptr createAndFillBlob(const InferenceEngine::Tenso CASE(InferenceEngine::Precision::BOOL) #undef CASE default: - THROW_IE_EXCEPTION << "Wrong precision specified: " << td.getPrecision().name(); + IE_THROW() << "Wrong precision specified: " << td.getPrecision().name(); } return blob; } @@ -509,7 +511,7 @@ inline InferenceEngine::Blob::Ptr createAndFillBlobConsistently( CASE(InferenceEngine::Precision::BOOL) #undef CASE default: - THROW_IE_EXCEPTION << "Wrong precision specified: " << td.getPrecision().name(); + IE_THROW() << "Wrong precision specified: " << td.getPrecision().name(); } return blob; } @@ -535,7 +537,7 @@ inline InferenceEngine::Blob::Ptr createAndFillBlobUniqueSequence( CASE(InferenceEngine::Precision::I32) #undef CASE default: - THROW_IE_EXCEPTION << "Wrong precision specified: " << td.getPrecision().name(); + IE_THROW() << "Wrong precision specified: " << td.getPrecision().name(); } return blob; } @@ -661,7 +663,7 @@ inline std::ostream& operator<<(std::ostream& os, BlobKind kind) { case BlobKind::BatchOfSimple: return os << "BatchOfSimple"; default: - THROW_IE_EXCEPTION << "Test does not support the blob kind"; + IE_THROW() << "Test does not support the blob kind"; } } @@ -683,7 +685,7 @@ inline InferenceEngine::Blob::Ptr makeBlobOfKind(const InferenceEngine::TensorDe return make_shared_blob(subBlobs); } default: - THROW_IE_EXCEPTION << "Test does not support the blob kind"; + IE_THROW() << "Test does not support the blob kind"; } } diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/core_config.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/core_config.hpp index ea043267b79606..de8048ae4694e5 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/core_config.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/core_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/layer_test_utils/environment.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/layer_test_utils/environment.hpp new file mode 100644 index 00000000000000..c236ba3d989aad --- /dev/null +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/layer_test_utils/environment.hpp @@ -0,0 +1,22 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include "ngraph/ngraph.hpp" + +#include "functional_test_utils/layer_test_utils/summary.hpp" + +namespace LayerTestsUtils { + +class TestEnvironment : public ::testing::Environment { +public: + void TearDown() override { + Summary::getInstance().saveReport(); + }; +}; +} // namespace LayerTestsUtils diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/layer_test_utils/summary.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/layer_test_utils/summary.hpp new file mode 100644 index 00000000000000..b2beb4313fd709 --- /dev/null +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/layer_test_utils/summary.hpp @@ -0,0 +1,106 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +#include + +#include "ngraph/ngraph.hpp" + +#include "common_test_utils/test_constants.hpp" + +namespace LayerTestsUtils { + +class Summary; + +class SummaryDestroyer { +private: + Summary *p_instance; +public: + ~SummaryDestroyer(); + + void initialize(Summary *p); +}; + + +struct PassRate { + enum Statuses { + PASSED, + FAILED, + SKIPPED, + CRASHED + }; + unsigned long passed = 0; + unsigned long failed = 0; + unsigned long skipped = 0; + unsigned long crashed = 0; + + PassRate() = default; + + PassRate(unsigned long p, unsigned long f, unsigned long s, unsigned long c) { + passed = p; + failed = f; + skipped = s; + crashed = c; + } + + float getPassrate() const { + if (passed + failed + crashed == 0) { + return 0.f; + } else { + return passed * 100.f / (passed + failed + skipped + crashed); + } + } +}; + +class Summary { +private: + static Summary *p_instance; + static SummaryDestroyer destroyer; + std::map opsStats = {}; + std::string deviceName; + bool isReported = false; + static bool extendReport; + static bool saveReportWithUniqueName; + static const char* outputFolder; + + friend class SummaryDestroyer; + +protected: + Summary() = default; + + ~Summary() = default; + +public: + void setDeviceName(std::string device) { deviceName = device; } + + std::map getOpStatisticFromReport(); + + std::string getDeviceName() const { return deviceName; } + + std::map getOPsStats() { return opsStats; } + + void updateOPsStats(const std::shared_ptr &function, const PassRate::Statuses &status); + + void updateOPsStats(const ngraph::NodeTypeInfo &op, const PassRate::Statuses &status); + + static Summary &getInstance(); + + void saveReport(); + + static void setExtendReport(bool val) { extendReport = val; } + + static bool getExtendReport() { return extendReport; } + + static void setSaveReportWithUniqueName(bool val) { saveReportWithUniqueName = val; } + + static bool getSaveReportWithUniqueName() { return saveReportWithUniqueName; } + + static void setOutputFolder(const std::string &val) { outputFolder = val.c_str(); } +}; + +} // namespace LayerTestsUtils \ No newline at end of file diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/network_utils.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/network_utils.hpp index 76b2e2899ecafb..b50f52d6043221 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/network_utils.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/network_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/plugin_cache.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/plugin_cache.hpp index e119942db178fa..81571c1c1b2f90 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/plugin_cache.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/plugin_cache.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/precision_utils.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/precision_utils.hpp index e66df326857e58..79088b00f66605 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/precision_utils.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/precision_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -51,7 +51,7 @@ inline ::ngraph::element::Type convertIE2nGraphPrc(const InferenceEngine::Precis case InferenceEngine::Precision::MIXED: case InferenceEngine::Precision::CUSTOM: default: - THROW_IE_EXCEPTION << "Incorrect precision!"; + IE_THROW() << "Incorrect precision!"; } } diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/skip_tests_config.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/skip_tests_config.hpp index fd6a4ba1f407ee..fe40f82ec04f55 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/skip_tests_config.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/skip_tests_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/test_model/test_model.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/test_model/test_model.hpp index 9cd9b689efbdeb..e144575df912da 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/test_model/test_model.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/include/functional_test_utils/test_model/test_model.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/merge_xmls.py b/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/merge_xmls.py new file mode 100644 index 00000000000000..75cebf36223c5d --- /dev/null +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/merge_xmls.py @@ -0,0 +1,105 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import xml.etree.ElementTree as ET +import argparse +import os +from datetime import datetime +import logging +import glob + +logging.basicConfig() +logger = logging.getLogger('XmlMerger') +logger.setLevel(logging.INFO) + + +def parse_arguments(): + parser = argparse.ArgumentParser() + + input_folders_help = "Paths to folders with reports to merge" + output_folders_help = "Path to folder to save report" + + parser.add_argument("-i", "--input_folders", help=input_folders_help, nargs="*", required=True) + parser.add_argument("-o", "--output_folder", help=output_folders_help, default="") + return parser.parse_args() + + +def update_passrates(results: ET.SubElement): + for device in results: + for op in device: + passed_tests = 0 + total_tests = 0 + for attrib in op.attrib: + if attrib == "passrate": + continue + if attrib == "passed": + passed_tests = int(op.attrib.get(attrib)) + total_tests += int(op.attrib.get(attrib)) + passrate = float(passed_tests * 100 / total_tests) if passed_tests < total_tests else 100 + op.set("passrate", str(round(passrate, 1))) + + +def aggregate_test_results(results: ET.SubElement, xml_reports: list): + timestamp = None + for xml in xml_reports: + logger.info(f" Processing: {xml}") + xml_root = ET.parse(xml).getroot() + xml_timestamp = xml_root.get("timestamp") + if (timestamp is None) or (xml_timestamp < timestamp): + timestamp = xml_timestamp + for device in xml_root.find("results"): + device_results = results.find(device.tag) + if device_results is None: + results.append(device) + else: + device_results_report = xml_root.find("results").find(device.tag) + for op in device_results_report: + if device_results.find(op.tag) is not None: + entry = device_results.find(op.tag) + for attr_name in device_results.find(op.tag).attrib: + xml_value = int(op.attrib.get(attr_name)) + aggregated_value = int(entry.attrib.get(attr_name)) + device_results.find(entry.tag).set(attr_name, str(xml_value + aggregated_value)) + else: + device_results.append(op) + return timestamp + + +def merge_xml(input_folder_paths: list, output_folder_paths: str): + logger.info(f" Processing is finished") + + summary = ET.Element("report") + results = ET.SubElement(summary, "results") + ops_list = ET.SubElement(summary, "ops_list") + + for folder_path in input_folder_paths: + if not os.path.exists(folder_path): + logger.error(f" {folder_path} is not exist!") + continue + if not os.path.isdir(folder_path): + logger.error(f" {folder_path} is not a directory!") + continue + + xml_reports = glob.glob(os.path.join(folder_path, '**/report*.xml')) + + xml_root = ET.parse(xml_reports[0]).getroot() + for op in xml_root.find("ops_list"): + if ops_list.find(op.tag) is None: + ET.SubElement(ops_list, op.tag) + + timestamp = aggregate_test_results(results, xml_reports) + update_passrates(results) + summary.set("timestamp", timestamp) + logger.info(f" Processing is finished") + + if not os.path.exists(output_folder_paths): + os.mkdir(output_folder_paths) + out_file_path = os.path.join(output_folder_paths, "report.xml") + with open(out_file_path, "w") as xml_file: + xml_file.write(ET.tostring(summary).decode('utf8')) + logger.info(f" Final report is saved to file: '{out_file_path}'") + + +if __name__ == "__main__": + arguments = parse_arguments() + merge_xml(arguments.input_folders, arguments.output_folder) diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/summarize.py b/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/summarize.py index 1a028efb99f9fd..6d8298fbe7dd13 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/summarize.py +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/summarize.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import xml.etree.ElementTree as ET from jinja2 import Environment, FileSystemLoader import argparse @@ -18,8 +21,90 @@ parser.add_argument("--out", help=out_help, default="") args = parser.parse_args() +verified_operations = [ + 'Abs-0', + 'Acos-0', + 'Add-1', + 'Asin-0', + 'Assign-6', + 'AvgPool-1', + 'BatchNormInference-5', + 'BinaryConvolution-1', + 'Broadcast-1', + 'Broadcast-3', + 'Bucketize-3', + 'CTCGreedyDecoder-0', + 'CTCGreedyDecoderSeqLen-6', + 'Concat-0', + 'ConvertLike-1', + 'Convolution-1', + 'DetectionOutput-0', + 'Divide-1', + 'ExperimentalDetectronDetectionOutput-6', + 'ExperimentalDetectronGenerateProposalsSingleImage-6', + 'ExperimentalDetectronPriorGridGenerator-6', + 'ExperimentalDetectronROIFeatureExtractor-6', + 'ExperimentalDetectronTopKROIs-6', + 'GRUSequence-5', + 'Gather-1', + 'GatherElements-6', + 'GatherND-5', + 'Gelu-7', + 'GroupConvolution-1', + 'GroupConvolutionBackpropData-1', + 'GRUSequence-5', + 'HSigmoid-5', + 'HSwish-4', + 'HardSigmoid-0', + 'Interpolate-4', + 'LRN-0', + 'LSTMCell-4', + 'LSTMSequence-5', + 'LogSoftmax-5', + 'Loop-5', + 'MVN-6', + 'MaxPool-1', + 'Mish-4', + 'Multiply-1', + 'NonMaxSuppression-4', + 'NonMaxSuppression-5', + 'PSROIPooling-0', + 'Proposal-0', + 'Proposal-4', + 'RNNSequence-4', + 'ROIAlign-3', + 'ROIPooling-0', + 'Range-0', + 'Range-4', + 'ReadValue-6', + 'ReduceL1-4', + 'ReduceL2-4', + 'ReduceMean-1', + 'RegionYOLO-0', + 'Relu-0', + 'ReorgYOLO-0', + 'GRUSequence-5', + 'Round-5', + 'ShapeOf-0', + 'ShapeOf-3', + 'Sigmoid-0', + 'Sin-0', + 'SoftPlus-4', + 'Softmax-1', + 'StridedSlice-1', + 'Substract-1', + 'Swish-4', + 'Tile-0', + 'TopK-1', + 'TopK-3' +] +pass_rate_avg = dict() +general_pass_rate = dict() +general_test_count = dict() +general_passed_tests = dict() + -def merge_xmls(xmls): +def merge_xmls(xmls: list): if len(xmls) == 1: return xmls[0] summary = ET.Element("report") @@ -62,8 +147,20 @@ def merge_xmls(xmls): results = {} for device in root.find("results"): results[device.tag] = {op.tag: op.attrib for op in device} + pass_rate_avg[device.tag] = 0 + general_test_count[device.tag] = 0 + general_passed_tests[device.tag] = 0 for op in results[device.tag]: - results[device.tag][op]["passrate"] = round(float(results[device.tag][op]["passrate"]), 1) + pass_rate = round(float(results[device.tag][op]["passrate"]), 1) + results[device.tag][op]["passrate"] = pass_rate + pass_rate_avg[device.tag] += pass_rate + general_test_count[device.tag] += (int(results[device.tag][op]["passed"]) + int(results[device.tag][op]["failed"]) + + int(results[device.tag][op]["crashed"]) + int(results[device.tag][op]["skipped"])) + general_passed_tests[device.tag] += int(results[device.tag][op]["passed"]) + pass_rate_avg[device.tag] /= len(results[device.tag]) + pass_rate_avg[device.tag] = round(float(pass_rate_avg[device.tag]), 1) + general_pass_rate[device.tag] = general_passed_tests[device.tag] * 100 / general_test_count[device.tag] + general_pass_rate[device.tag] = round(float(general_pass_rate[device.tag]), 1) devices = results.keys() @@ -71,7 +168,9 @@ def merge_xmls(xmls): env = Environment(loader=file_loader) template = env.get_template('report_template.html') -res = template.render(ordered_ops=ordered_ops, devices=devices, results=results, timestamp=timestamp) +res = template.render(ordered_ops=ordered_ops, devices=devices, results=results, timestamp=timestamp, + general_pass_rate=general_pass_rate, pass_rate_avg=pass_rate_avg, + verified_operations=verified_operations) with open(os.path.join(args.out, "report.html"), "w") as f: f.write(res) diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/template/report_template.html b/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/template/report_template.html index e95f74d12a7bef..f31a987f6c837c 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/template/report_template.html +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/layer_tests_summary/template/report_template.html @@ -29,25 +29,63 @@

Operations coverage summary {{ timestamp }}


+ + + + + + + + + + + +
Not verified Ngraph references
Collected statistic info
- + {% for d in devices -%} - + {% endfor %} + + + + {% for d in devices -%} + + {% endfor %} + + + + + {% for d in devices -%} + + {% endfor %} + + + + {% for d in devices -%} + + {% endfor %} + + {% for op in ordered_ops -%} - + {% if op in verified_operations -%} + + {% else -%} + + {% endif -%} {% for d in devices -%} {% if op in results[d] -%} - + f:{{ results[d][op].failed }},s:{{ results[d][op].skipped }}, + c:{{ results[d][op].crashed }}) + {% else -%} {% endif -%} @@ -55,14 +93,8 @@

Operations coverage summary {{ timestamp }}

{% endfor %} {% endfor -%} - - - {% for d in devices -%} - - {% endfor %} -
OperationOperation{{ d }}{{ d }}
Total: {{ordered_ops|length}}{{results[d]|length}}
AVG passrate per op (=sum_pass_rates/covered_ops_num):{{pass_rate_avg[d]}}%
General passrate (=passed_tests/all_tests):{{general_pass_rate[d]}}%
{{ op }}{{ op }}{{ op }} + {{ results[d][op].passrate }}% (p:{{ results[d][op].passed }}, - f:{{ results[d][op].failed }},s:{{ results[d][op].skipped }}) - No tests
Total: {{ordered_ops|length}}{{results[d]|length}}
- \ No newline at end of file + diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/src/layer_test_utils/summary.cpp b/inference-engine/tests/ie_test_utils/functional_test_utils/src/layer_test_utils/summary.cpp new file mode 100644 index 00000000000000..ecf1274a7e480b --- /dev/null +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/src/layer_test_utils/summary.cpp @@ -0,0 +1,244 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "functional_test_utils/layer_test_utils/summary.hpp" +#include "common_test_utils/file_utils.hpp" + +using namespace LayerTestsUtils; + + +Summary *Summary::p_instance = nullptr; +bool Summary::extendReport = false; +bool Summary::saveReportWithUniqueName = false; +const char* Summary::outputFolder = "."; +SummaryDestroyer Summary::destroyer; + +SummaryDestroyer::~SummaryDestroyer() { + delete p_instance; +} + +void SummaryDestroyer::initialize(Summary *p) { + p_instance = p; +} + +Summary &Summary::getInstance() { + if (!p_instance) { + p_instance = new Summary(); + destroyer.initialize(p_instance); + } + return *p_instance; +} + +void Summary::updateOPsStats(const ngraph::NodeTypeInfo &op, const PassRate::Statuses &status) { + auto it = opsStats.find(op); + if (it != opsStats.end()) { + auto &passrate = it->second; + switch (status) { + case PassRate::PASSED: + passrate.passed++; + passrate.crashed--; + break; + case PassRate::FAILED: + passrate.failed++; + passrate.crashed--; + break; + case PassRate::SKIPPED: + passrate.skipped++; + break; + case PassRate::CRASHED: + passrate.crashed++; + break; + } + } else { + switch (status) { + case PassRate::PASSED: + opsStats[op] = PassRate(1, 0, 0, 0); + break; + case PassRate::FAILED: + opsStats[op] = PassRate(0, 1, 0, 0); + break; + case PassRate::SKIPPED: + opsStats[op] = PassRate(0, 0, 1, 0); + break; + case PassRate::CRASHED: + opsStats[op] = PassRate(0, 0, 0, 1); + break; + } + } +} + +std::map Summary::getOpStatisticFromReport() { + pugi::xml_document doc; + + std::ifstream file; + file.open(CommonTestUtils::REPORT_FILENAME); + + pugi::xml_node root; + doc.load_file(CommonTestUtils::REPORT_FILENAME); + root = doc.child("report"); + + pugi::xml_node resultsNode = root.child("results"); + pugi::xml_node currentDeviceNode = resultsNode.child(deviceName.c_str()); + std::map oldOpsStat; + for (auto &child : currentDeviceNode.children()) { + std::string entry = child.name(); + auto p = std::stoi(child.attribute("passed").value()); + auto f = std::stoi(child.attribute("failed").value()); + auto s = std::stoi(child.attribute("skipped").value()); + auto c = std::stoi(child.attribute("crashed").value()); + PassRate obj(p, f, s, c); + oldOpsStat.insert({entry, obj}); + } + return oldOpsStat; +} + +void Summary::updateOPsStats(const std::shared_ptr &function, const PassRate::Statuses &status) { + for (const auto &op : function->get_ordered_ops()) { + if (ngraph::is_type(op) || + ngraph::is_type(op) || + ngraph::is_type(op)) { + continue; + } else if (ngraph::is_type(op)) { + updateOPsStats(op->get_type_info(), status); + auto ti = ngraph::as_type_ptr(op); + auto ti_body = ti->get_function(); + for (const auto &ti_op : ti_body->get_ordered_ops()) { + updateOPsStats(ti_op->get_type_info(), status); + } + } else if (ngraph::is_type(op)) { + updateOPsStats(op->get_type_info(), status); + auto loop = ngraph::as_type_ptr(op); + auto loop_body = loop->get_function(); + for (const auto &loop_op : loop_body->get_ordered_ops()) { + updateOPsStats(loop_op->get_type_info(), status); + } + } else { + updateOPsStats(op->get_type_info(), status); + } + } +} + +void Summary::saveReport() { + if (isReported) { + return; + } + + std::string filename = CommonTestUtils::REPORT_FILENAME; + if (saveReportWithUniqueName) { + auto processId = std::to_string(getpid()); + filename += "_" + processId + "_" + std::string(CommonTestUtils::GetTimestamp()); + } + filename += CommonTestUtils::REPORT_EXTENSION; + + if (!CommonTestUtils::directoryExists(outputFolder)) { + CommonTestUtils::createDirectoryRecursive(outputFolder); + } + + std::string outputFilePath = outputFolder + std::string(CommonTestUtils::FileSeparator) + filename; + + std::vector opsets; + opsets.push_back(ngraph::get_opset1()); + opsets.push_back(ngraph::get_opset2()); + opsets.push_back(ngraph::get_opset3()); + opsets.push_back(ngraph::get_opset4()); + opsets.push_back(ngraph::get_opset5()); + opsets.push_back(ngraph::get_opset6()); + opsets.push_back(ngraph::get_opset7()); + std::set opsInfo; + for (const auto &opset : opsets) { + const auto &type_info_set = opset.get_type_info_set(); + opsInfo.insert(type_info_set.begin(), type_info_set.end()); + } + + auto &summary = Summary::getInstance(); + auto stats = summary.getOPsStats(); + + pugi::xml_document doc; + + std::ifstream file; + file.open(outputFilePath); + + time_t rawtime; + struct tm *timeinfo; + char timeNow[80]; + + time(&rawtime); + // cpplint require to use localtime_r instead which is not available in C++14 + timeinfo = localtime(&rawtime); // NOLINT + + strftime(timeNow, sizeof(timeNow), "%d-%m-%Y %H:%M:%S", timeinfo); + + pugi::xml_node root; + if (file) { + doc.load_file(outputFilePath.c_str()); + root = doc.child("report"); + //Ugly but shorter than to write predicate for find_atrribute() to update existing one + root.remove_attribute("timestamp"); + root.append_attribute("timestamp").set_value(timeNow); + + root.remove_child("ops_list"); + root.child("results").remove_child(summary.deviceName.c_str()); + } else { + root = doc.append_child("report"); + root.append_attribute("timestamp").set_value(timeNow); + root.append_child("results"); + } + + pugi::xml_node opsNode = root.append_child("ops_list"); + for (const auto &op : opsInfo) { + std::string name = std::string(op.name) + "-" + std::to_string(op.version); + pugi::xml_node entry = opsNode.append_child(name.c_str()); + (void)entry; + } + + pugi::xml_node resultsNode = root.child("results"); + pugi::xml_node currentDeviceNode = resultsNode.append_child(summary.deviceName.c_str()); + std::unordered_set opList; + for (const auto &it : stats) { + std::string name = std::string(it.first.name) + "-" + std::to_string(it.first.version); + opList.insert(name); + pugi::xml_node entry = currentDeviceNode.append_child(name.c_str()); + entry.append_attribute("passed").set_value(it.second.passed); + entry.append_attribute("failed").set_value(it.second.failed); + entry.append_attribute("skipped").set_value(it.second.skipped); + entry.append_attribute("crashed").set_value(it.second.crashed); + entry.append_attribute("passrate").set_value(it.second.getPassrate()); + } + + if (extendReport && file) { + auto opStataFromReport = summary.getOpStatisticFromReport(); + for (auto& item : opStataFromReport) { + pugi::xml_node entry; + if (opList.find(item.first) == opList.end()) { + entry = currentDeviceNode.append_child(item.first.c_str()); + entry.append_attribute("passed").set_value(item.second.passed); + entry.append_attribute("failed").set_value(item.second.failed); + entry.append_attribute("skipped").set_value(item.second.skipped); + entry.append_attribute("crashed").set_value(item.second.crashed); + entry.append_attribute("passrate").set_value(item.second.getPassrate()); + } else { + entry = currentDeviceNode.child(item.first.c_str()); + auto p = std::stoi(entry.attribute("passed").value()) + item.second.passed; + auto f = std::stoi(entry.attribute("failed").value()) + item.second.failed; + auto s = std::stoi(entry.attribute("skipped").value()) + item.second.skipped; + auto c = std::stoi(entry.attribute("crashed").value()) + item.second.crashed; + PassRate obj(p, f, s, c); + + entry.attribute("passed").set_value(obj.passed); + entry.attribute("failed").set_value(obj.failed); + entry.attribute("skipped").set_value(obj.skipped); + entry.attribute("crashed").set_value(obj.crashed); + entry.attribute("passrate").set_value(obj.getPassrate()); + } + } + } + bool result = doc.save_file(outputFilePath.c_str()); + if (!result) { + std::string errMessage = "Failed to write report to " + outputFilePath; + throw std::runtime_error(errMessage); + } else { + isReported = true; + } + file.close(); +} diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/src/network_utils.cpp b/inference-engine/tests/ie_test_utils/functional_test_utils/src/network_utils.cpp index 027bd20977367b..91348277147b30 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/src/network_utils.cpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/src/network_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -179,7 +179,7 @@ namespace FuncTestUtils { for (auto &it : err_log) { std::cout << "ERROR: " << it << std::endl; } - THROW_IE_EXCEPTION << "CNNNetworks have different layers!"; + IE_THROW() << "CNNNetworks have different layers!"; } } @@ -194,7 +194,7 @@ namespace FuncTestUtils { success = success && old_info.find(it.first) != old_info.end(); } if (!success) - THROW_IE_EXCEPTION << err_msg; + IE_THROW() << err_msg; } void @@ -205,7 +205,7 @@ namespace FuncTestUtils { auto ti_old = std::dynamic_pointer_cast(old_layer); if (!ti_new || !ti_old) { - THROW_IE_EXCEPTION << "Cannot cast the layer to TensorIterator."; + IE_THROW() << "Cannot cast the layer to TensorIterator."; } auto get_port_map = []( @@ -236,7 +236,7 @@ namespace FuncTestUtils { std::map, InferenceEngine::TensorIterator::PortMap> &old_ordered_port_maps) { if (new_ordered_port_maps.size() != old_ordered_port_maps.size()) { - THROW_IE_EXCEPTION << "PortMaps have different numbers of layers: " << new_ordered_port_maps.size() << + IE_THROW() << "PortMaps have different numbers of layers: " << new_ordered_port_maps.size() << " and " << old_ordered_port_maps.size(); } @@ -246,7 +246,7 @@ namespace FuncTestUtils { for (; iterator_new != new_ordered_port_maps.end() && iterator_old != old_ordered_port_maps.end(); iterator_new++, iterator_old++) { if (iterator_new->first != iterator_old->first) { - THROW_IE_EXCEPTION << R"(Names of "from" and "to" layers in the port maps do not match!)"; + IE_THROW() << R"(Names of "from" and "to" layers in the port maps do not match!)"; } InferenceEngine::TensorIterator::PortMap &pm_new = iterator_new->second; @@ -255,7 +255,7 @@ namespace FuncTestUtils { if (pm_new.part_size != pm_old.part_size || pm_new.axis != pm_old.axis || pm_new.stride != pm_old.stride || pm_new.end != pm_old.end || pm_new.start != pm_old.start) { - THROW_IE_EXCEPTION << "Parameters in the port maps do not match!"; + IE_THROW() << "Parameters in the port maps do not match!"; } } }; @@ -316,11 +316,11 @@ namespace FuncTestUtils { void compareCNNNetworks(const InferenceEngine::CNNNetwork &network, const InferenceEngine::CNNNetwork &refNetwork, bool sameNetVersions) { if (network.getName() != refNetwork.getName()) - THROW_IE_EXCEPTION << "CNNNetworks have different names! " << network.getName() + IE_THROW() << "CNNNetworks have different names! " << network.getName() << " and " << refNetwork.getName(); if (network.getBatchSize() != refNetwork.getBatchSize()) - THROW_IE_EXCEPTION << "CNNNetworks have different batch size! " << std::to_string(network.getBatchSize()) + IE_THROW() << "CNNNetworks have different batch size! " << std::to_string(network.getBatchSize()) << " and " << std::to_string(refNetwork.getBatchSize()); compareLayerByLayer(network, refNetwork, sameNetVersions); @@ -340,7 +340,7 @@ void compareLayerByLayer(const std::vector& networ auto iterator = network.begin(); auto refIterator = refNetwork.begin(); if (network.size() != refNetwork.size()) - THROW_IE_EXCEPTION << "CNNNetworks have different number of layers: " << + IE_THROW() << "CNNNetworks have different number of layers: " << network.size() << " vs " << refNetwork.size(); for (; iterator != network.end() && refIterator != refNetwork.end(); iterator++, refIterator++) { InferenceEngine::CNNLayerPtr layer = *iterator; @@ -373,7 +373,7 @@ void compareLayerByLayer(const InferenceEngine::CNNNetwork& network, size_t layerRefCount = convertedRefNetwork ? convertedRefNetwork->layerCount() : refNetwork.layerCount(); if (layerCount != layerRefCount) - THROW_IE_EXCEPTION << "CNNNetworks have different number of layers: " << layerCount << " vs " << layerRefCount; + IE_THROW() << "CNNNetworks have different number of layers: " << layerCount << " vs " << layerRefCount; for (; iterator != end && refIterator != end; iterator++, refIterator++) { InferenceEngine::CNNLayerPtr layer = *iterator; InferenceEngine::CNNLayerPtr refLayer = *refIterator; diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/src/plugin_cache.cpp b/inference-engine/tests/ie_test_utils/functional_test_utils/src/plugin_cache.cpp index 16f1aedd06f7b7..95b8e29eff417d 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/src/plugin_cache.cpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/src/plugin_cache.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/src/precomp.hpp b/inference-engine/tests/ie_test_utils/functional_test_utils/src/precomp.hpp index b1fee93176de22..65246ab76c6239 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/src/precomp.hpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/src/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/src/skip_tests_config.cpp b/inference-engine/tests/ie_test_utils/functional_test_utils/src/skip_tests_config.cpp index d92a02b3365a90..4071991458dcb3 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/src/skip_tests_config.cpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/src/skip_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/functional_test_utils/src/test_model/test_model.cpp b/inference-engine/tests/ie_test_utils/functional_test_utils/src/test_model/test_model.cpp index 17b08a40d97cff..dc95066462ed97 100644 --- a/inference-engine/tests/ie_test_utils/functional_test_utils/src/test_model/test_model.cpp +++ b/inference-engine/tests/ie_test_utils/functional_test_utils/src/test_model/test_model.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -482,12 +482,12 @@ void generateTestModel(const std::string &modelPath, std::ofstream ofsXml; ofsXml.open(modelPath); if (!ofsXml) { - THROW_IE_EXCEPTION << "File '" << modelPath << "' can not be opened as out file stream"; + IE_THROW() << "File '" << modelPath << "' can not be opened as out file stream"; } ofsXml << ir_builder_v10.serialize(); ofsXml.close(); if (!ofsXml.good()) { - THROW_IE_EXCEPTION << "Error during '" << modelPath << "' closing"; + IE_THROW() << "Error during '" << modelPath << "' closing"; } /* Allocate conv blobs and store them to the reference with the required tensor desc */ @@ -507,7 +507,7 @@ void generateTestModel(const std::string &modelPath, std::ofstream ofsBin; ofsBin.open(weightsPath, std::ofstream::out | std::ofstream::binary); if (!ofsBin) { - THROW_IE_EXCEPTION << "File '" << weightsPath << "' can not be opened as out file stream"; + IE_THROW() << "File '" << weightsPath << "' can not be opened as out file stream"; } /* Write weights for Conv1 layer to the bin file */ @@ -540,11 +540,11 @@ void generateTestModel(const std::string &modelPath, conv3LayerPtr->blobs["weights"]->byteSize()); if (!ofsBin.good()) { - THROW_IE_EXCEPTION << "Error during writing blob weights"; + IE_THROW() << "Error during writing blob weights"; } ofsBin.close(); if (!ofsBin.good()) { - THROW_IE_EXCEPTION << "Error during '" << weightsPath << "' closing"; + IE_THROW() << "Error during '" << weightsPath << "' closing"; } } diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/CMakeLists.txt b/inference-engine/tests/ie_test_utils/unit_test_utils/CMakeLists.txt index ab956218aabd08..50836ed2fb99b8 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/CMakeLists.txt +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/empty.cpp b/inference-engine/tests/ie_test_utils/unit_test_utils/empty.cpp index 18275c49c1c5aa..58f2bfc78c1857 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/empty.cpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/empty.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_default.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_default.hpp index 9b20c38b6e479f..a4bfc297f4e4f8 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_default.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_default.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_internal.hpp index 4090503890ef7f..29148ad90ab02e 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_async_infer_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_network_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_network_internal.hpp index 0b9348f7f9d106..82c914b076e4be 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_network_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_network_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_async_only.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_async_only.hpp index a55c6aeb39e83b..912233e1d9ae50 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_async_only.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_async_only.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_default.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_default.hpp index 5f5597fb3a4423..088d23b4855cc2 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_default.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_executable_thread_safe_default.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_infer_request_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_infer_request_internal.hpp index b209d291a28c58..12cddf27f42cd0 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_infer_request_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_infer_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_inference_plugin_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_inference_plugin_internal.hpp index d93d0df3e9a38e..a24be876758994 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_inference_plugin_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/impl/mock_inference_plugin_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iasync_infer_request_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iasync_infer_request_internal.hpp index 782dd560d8ffa2..79a97d9d4be1fc 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iasync_infer_request_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iasync_infer_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_icore.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_icore.hpp index 8bffc712ac17a5..e52f79bb1568bc 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_icore.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_icore.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,9 +16,13 @@ class MockICore : public InferenceEngine::ICore { MOCK_METHOD3(LoadNetwork, InferenceEngine::ExecutableNetwork( const InferenceEngine::CNNNetwork&, const std::string&, const std::map&)); + MOCK_METHOD3(LoadNetwork, InferenceEngine::ExecutableNetwork( + const InferenceEngine::CNNNetwork&, const InferenceEngine::RemoteContext::Ptr &, const std::map&)); MOCK_METHOD3(ImportNetwork, InferenceEngine::ExecutableNetwork( std::istream&, const std::string&, const std::map&)); + MOCK_METHOD3(ImportNetwork, InferenceEngine::ExecutableNetwork( + std::istream&, const InferenceEngine::RemoteContext::Ptr&, const std::map&)); MOCK_QUALIFIED_METHOD3(QueryNetwork, const, InferenceEngine::QueryNetworkResult( const InferenceEngine::CNNNetwork&, const std::string&, const std::map&)); diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iexecutable_network_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iexecutable_network_internal.hpp index 54a26b977b02e3..71e9ad381dfbbf 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iexecutable_network_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iexecutable_network_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinfer_request_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinfer_request_internal.hpp index 63fb99ad083ead..bba158bd0c4d99 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinfer_request_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinfer_request_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinference_plugin.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinference_plugin.hpp index d633f5554084cd..53a4c1f79c1bdc 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinference_plugin.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_iinference_plugin.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_ivariable_state_internal.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_ivariable_state_internal.hpp index 694a981a84d068..98800d53dc9f65 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_ivariable_state_internal.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/interface/mock_ivariable_state_internal.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/mock_task_executor.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/mock_task_executor.hpp index 9bc636ef505f94..d0c2e25180ee52 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/mock_task_executor.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/cpp_interfaces/mock_task_executor.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_allocator.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_allocator.hpp index a75eeb49e046ef..47b77d999e0f8c 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_allocator.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_allocator.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,7 +14,6 @@ class MockAllocator : public InferenceEngine::IAllocator { public: - MOCK_QUALIFIED_METHOD0(Release, noexcept, void()); MOCK_QUALIFIED_METHOD2(lock, noexcept, void*(void*, InferenceEngine::LockOp)); MOCK_QUALIFIED_METHOD1(unlock, noexcept, void(void *)); MOCK_QUALIFIED_METHOD1(alloc, noexcept, void*(size_t)); diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/CMakeLists.txt b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/CMakeLists.txt index d6ea447435573d..e4f055b2ee451a 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/CMakeLists.txt +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/dllmain.cpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/dllmain.cpp index 0401a03f9d7a5d..591d63578ce965 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/dllmain.cpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/dllmain.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.cpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.cpp index 0c8098001058f6..ebba2977370232 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.cpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,36 +22,88 @@ void MockPlugin::SetConfig(const std::map& config) { this->config = config; } +Parameter MockPlugin::GetMetric(const std::string& name, const std::map& options) const { + if (_target) { + return _target->GetMetric(name, options); + } else { + IE_THROW(NotImplemented); + } +} + ExecutableNetwork MockPlugin::LoadNetwork(const CNNNetwork &network, const std::map &config) { if (_target) { return _target->LoadNetwork(network, config); } else { - THROW_IE_EXCEPTION_WITH_STATUS(NOT_IMPLEMENTED); + IE_THROW(NotImplemented); + } +} + +ExecutableNetwork +MockPlugin::LoadNetwork(const CNNNetwork& network, const std::map& config, + RemoteContext::Ptr context) { + if (_target) { + return _target->LoadNetwork(network, config, context); + } else { + IE_THROW(NotImplemented); } } -InferenceEngine::ExecutableNetworkInternal::Ptr -MockPlugin::LoadExeNetworkImpl(const InferenceEngine::CNNNetwork& network, +ExecutableNetworkInternal::Ptr +MockPlugin::LoadExeNetworkImpl(const CNNNetwork& network, const std::map& config) { return {}; } -InferenceEngine::IInferencePlugin *__target = nullptr; +InferenceEngine::ExecutableNetwork +MockPlugin::ImportNetworkImpl(std::istream& networkModel, + const std::map& config) { + if (_target) { + return _target->ImportNetwork(networkModel, config); + } else { + IE_THROW(NotImplemented); + } +} -INFERENCE_PLUGIN_API(StatusCode) CreatePluginEngine(IInferencePlugin *&plugin, ResponseDesc *resp) noexcept { - try { - IInferencePlugin *p = nullptr; - std::swap(__target, p); - plugin = new MockPlugin(p); - return OK; +InferenceEngine::ExecutableNetwork +MockPlugin::ImportNetworkImpl(std::istream& networkModel, + const InferenceEngine::RemoteContext::Ptr& context, + const std::map& config) { + if (_target) { + return _target->ImportNetwork(networkModel, context, config); + } else { + IE_THROW(NotImplemented); + } +} + +InferenceEngine::RemoteContext::Ptr MockPlugin::GetDefaultContext(const InferenceEngine::ParamMap& params) { + if (_target) { + return _target->GetDefaultContext(params); + } else { + IE_THROW(NotImplemented); } - catch (std::exception &ex) { - return DescriptionBuffer(GENERAL_ERROR, resp) << ex.what(); +} + +InferenceEngine::QueryNetworkResult +MockPlugin::QueryNetwork(const InferenceEngine::CNNNetwork& network, + const std::map& config) const { + if (_target) { + return _target->QueryNetwork(network, config); + } else { + IE_THROW(NotImplemented); } } + +InferenceEngine::IInferencePlugin *__target = nullptr; + +INFERENCE_PLUGIN_API(void) CreatePluginEngine(std::shared_ptr& plugin) { + IInferencePlugin *p = nullptr; + std::swap(__target, p); + plugin = std::make_shared(p); +} + INFERENCE_PLUGIN_API(InferenceEngine::IInferencePlugin*) CreatePluginEngineProxy(InferenceEngine::IInferencePlugin *target) { return new MockPlugin(target); diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.hpp index 1015f6a5a54330..73254a4e51d204 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_engine/mock_plugin.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,12 +17,34 @@ class MockPlugin : public InferenceEngine::InferencePluginInternal { explicit MockPlugin(InferenceEngine::IInferencePlugin*target); void SetConfig(const std::map& config) override; + InferenceEngine::ExecutableNetwork LoadNetwork(const InferenceEngine::CNNNetwork &network, const std::map &config) override; + + InferenceEngine::ExecutableNetwork + LoadNetwork(const InferenceEngine::CNNNetwork& network, + const std::map& config, + InferenceEngine::RemoteContext::Ptr context) override; + InferenceEngine::ExecutableNetworkInternal::Ptr LoadExeNetworkImpl(const InferenceEngine::CNNNetwork& network, const std::map& config) override; + InferenceEngine::ExecutableNetwork ImportNetworkImpl(std::istream& networkModel, + const std::map& config) override; + + InferenceEngine::ExecutableNetwork ImportNetworkImpl(std::istream& networkModel, + const InferenceEngine::RemoteContext::Ptr& context, + const std::map& config) override; + + InferenceEngine::Parameter GetMetric(const std::string& name, + const std::map& options) const override; + + InferenceEngine::RemoteContext::Ptr GetDefaultContext(const InferenceEngine::ParamMap& params) override; + + InferenceEngine::QueryNetworkResult QueryNetwork(const InferenceEngine::CNNNetwork& network, + const std::map& config) const override; + std::map config; }; diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_icnn_network.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_icnn_network.hpp index 5756a3049276ad..164eba642ad4cd 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_icnn_network.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_icnn_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,7 +22,7 @@ IE_SUPPRESS_DEPRECATED_START * @class MockICNNNetwork * @brief Main interface to describe the NN topology */ -class MockICNNNetwork : public InferenceEngine::ICNNNetwork { +class MockICNNNetwork final : public InferenceEngine::ICNNNetwork { public: MOCK_QUALIFIED_METHOD0(getFunction, const noexcept, std::shared_ptr ()); MOCK_QUALIFIED_METHOD0(getFunction, noexcept, std::shared_ptr()); @@ -37,7 +37,6 @@ class MockICNNNetwork : public InferenceEngine::ICNNNetwork { InferenceEngine::ResponseDesc*)); MOCK_QUALIFIED_METHOD2(setBatchSize, noexcept, InferenceEngine::StatusCode(const size_t size, InferenceEngine::ResponseDesc*)); MOCK_QUALIFIED_METHOD0(getBatchSize, const noexcept, size_t()); - MOCK_QUALIFIED_METHOD0(Release, noexcept, void()); MOCK_QUALIFIED_METHOD1(getInputShapes, const noexcept, void(InferenceEngine::ICNNNetwork::InputShapes&)); MOCK_QUALIFIED_METHOD2(reshape, noexcept, InferenceEngine::StatusCode(const InferenceEngine::ICNNNetwork::InputShapes &, InferenceEngine::ResponseDesc *)); MOCK_QUALIFIED_METHOD3(serialize, const noexcept, InferenceEngine::StatusCode( @@ -45,25 +44,3 @@ class MockICNNNetwork : public InferenceEngine::ICNNNetwork { const std::string &, InferenceEngine::ResponseDesc*)); }; - -/** - * @class MockCNNNetworkImpl - * @brief Main interface to describe the NN topology - */ -class MockCNNNetworkImpl: public InferenceEngine::details::CNNNetworkImpl { -public: - MOCK_QUALIFIED_METHOD1(getOutputsInfo, const noexcept, void(InferenceEngine::OutputsDataMap& out)); - MOCK_QUALIFIED_METHOD1(getInputsInfo, const noexcept, void(InferenceEngine::InputsDataMap &inputs)); - MOCK_QUALIFIED_METHOD1(getInput, const noexcept, InferenceEngine::InputInfo::Ptr(const std::string &inputName)); - MOCK_QUALIFIED_METHOD0(getName, const noexcept, const std::string&()); - MOCK_QUALIFIED_METHOD0(layerCount, const noexcept, size_t()); - MOCK_QUALIFIED_METHOD3(addOutput, noexcept, InferenceEngine::StatusCode(const std::string &, size_t , InferenceEngine::ResponseDesc*)); - MOCK_QUALIFIED_METHOD2(setBatchSize, noexcept, InferenceEngine::StatusCode(const size_t size, InferenceEngine::ResponseDesc*)); - MOCK_QUALIFIED_METHOD0(getBatchSize, const noexcept, size_t()); - MOCK_QUALIFIED_METHOD0(Release, noexcept, void()); - MOCK_METHOD1(validate, void(int)); - - void validateNetwork() { - InferenceEngine::details::CNNNetworkImpl::validate(); - } -}; diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_ie_ivariable_state.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_ie_ivariable_state.hpp index e9505caa0fe45a..eac6fcbfa3f246 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_ie_ivariable_state.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_ie_ivariable_state.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iexecutable_network.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iexecutable_network.hpp index 7aea137622bd65..147ee892a8f1e0 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iexecutable_network.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iexecutable_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -33,7 +33,6 @@ class MockIExecutableNetwork : public IExecutableNetwork { MOCK_QUALIFIED_METHOD3(GetMetric, const noexcept, StatusCode(const std::string &name, Parameter &result, ResponseDesc *resp)); MOCK_QUALIFIED_METHOD2(GetContext, const noexcept, StatusCode(RemoteContext::Ptr &pContext, ResponseDesc *resp)); MOCK_QUALIFIED_METHOD3(QueryState, noexcept, StatusCode(IVariableState::Ptr &, size_t, ResponseDesc *)); - MOCK_QUALIFIED_METHOD0(Release, noexcept, void()); }; IE_SUPPRESS_DEPRECATED_END diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iinfer_request.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iinfer_request.hpp index cbc3fdac32d39e..a56ad790a979ea 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iinfer_request.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_iinfer_request.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,6 @@ class MockIInferRequest : public IInferRequest { MOCK_QUALIFIED_METHOD2(GetUserData, noexcept, StatusCode(void**, ResponseDesc*)); MOCK_QUALIFIED_METHOD2(SetUserData, noexcept, StatusCode(void*, ResponseDesc*)); MOCK_QUALIFIED_METHOD1(SetCompletionCallback, noexcept, StatusCode(IInferRequest::CompletionCallback)); - MOCK_QUALIFIED_METHOD0(Release, noexcept, void()); MOCK_QUALIFIED_METHOD1(Infer, noexcept, StatusCode(ResponseDesc*)); MOCK_QUALIFIED_METHOD2(GetPerformanceCounts, const noexcept, StatusCode(std::map &perfMap, ResponseDesc*)); diff --git a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_not_empty_icnn_network.hpp b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_not_empty_icnn_network.hpp index 971b2e7131acd7..5be19d7ae5b6b9 100644 --- a/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_not_empty_icnn_network.hpp +++ b/inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_not_empty_icnn_network.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,7 +15,7 @@ namespace InferenceEngine { -class MockNotEmptyICNNNetwork : public ICNNNetwork { +class MockNotEmptyICNNNetwork final : public ICNNNetwork { public: static constexpr const char* INPUT_BLOB_NAME = "first_input"; const SizeVector INPUT_DIMENTIONS = { 1, 3, 299, 299 }; @@ -73,7 +73,6 @@ class MockNotEmptyICNNNetwork : public ICNNNetwork { MOCK_QUALIFIED_METHOD3(addOutput, noexcept, StatusCode(const std::string &, size_t , ResponseDesc*)); MOCK_QUALIFIED_METHOD2(setBatchSize, noexcept, StatusCode(const size_t size, ResponseDesc*)); MOCK_QUALIFIED_METHOD0(getBatchSize, const noexcept, size_t()); - MOCK_QUALIFIED_METHOD0(Release, noexcept, void()); MOCK_QUALIFIED_METHOD1(getInputShapes, const noexcept, void(ICNNNetwork::InputShapes &)); MOCK_QUALIFIED_METHOD2(reshape, noexcept, StatusCode(const ICNNNetwork::InputShapes &, ResponseDesc *)); MOCK_QUALIFIED_METHOD3(serialize, const noexcept, StatusCode(const std::string &, const std::string &, InferenceEngine::ResponseDesc*)); diff --git a/inference-engine/tests/ngraph_helpers/CMakeLists.txt b/inference-engine/tests/ngraph_helpers/CMakeLists.txt index a730f8ef58b804..c7b08fa81117fb 100644 --- a/inference-engine/tests/ngraph_helpers/CMakeLists.txt +++ b/inference-engine/tests/ngraph_helpers/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/CMakeLists.txt b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/CMakeLists.txt index 9b9f82ae56ece3..d17fb380d286c2 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/CMakeLists.txt +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/add_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/add_function.hpp index 3a2eb1b4d9d74f..8f0ddf1cc314eb 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/add_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/add_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/avg_pool_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/avg_pool_function.hpp index 75621b7d4ecfad..7e02b1f44c93f0 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/avg_pool_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/avg_pool_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,6 +18,7 @@ namespace subgraph { class AvgPoolFunction { public: static std::shared_ptr getOriginal( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const bool addFQ, @@ -30,6 +31,7 @@ class AvgPoolFunction { const FakeQuantizeOnData& fakeQuantizeOnData); static std::shared_ptr getReference( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const bool addFQ, diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/clamp_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/clamp_function.hpp index 6c8cdc1f914adf..33d1942afee839 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/clamp_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/clamp_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,6 +21,10 @@ class ClampFunction { const ngraph::element::Type precisionBeforeDequantization, const ngraph::builder::subgraph::DequantizationOperations& dequantization); + static std::shared_ptr getWithNonDequantizationMultiply( + const ngraph::Shape& inputShape, + const ngraph::element::Type precision); + static std::shared_ptr getOriginal( const ngraph::element::Type originalFunctionPrecision, const ngraph::Shape& inputShape, diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/add.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/add.hpp index c1e6898e376e7a..5cdaf9b7e01d2a 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/add.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/add.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/builders.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/builders.hpp index 70f76db27f4a69..b7ab49d8590509 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/builders.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/builders.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,6 +16,8 @@ #include "lpt_ngraph_functions/common/add.hpp" #include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" #include "lpt_ngraph_functions/common/dequantization_operations.hpp" +#include "lpt_ngraph_functions/common/reshape.hpp" +#include "lpt_ngraph_functions/common/transpose.hpp" namespace ngraph { namespace builder { @@ -64,6 +66,12 @@ std::shared_ptr makeDequantization( const Output& data, const DequantizationOperations& dequantizationOperations); +std::shared_ptr makeMultiply(const Output& data, const DequantizationOperations::Multiply& multiply); + +std::shared_ptr makeReshape(const Output& data, const Reshape& reshape); + +std::shared_ptr makeTranspose(const Output& data, const Transpose& reshape); + std::shared_ptr makeFakeQuantize( const Output& input, const ngraph::element::Type precision, @@ -76,13 +84,13 @@ std::shared_ptr makeFakeQuantizeTypeRelaxed( std::shared_ptr makeFakeQuantize( const Output& input, - const ngraph::element::Type precision, + const ngraph::element::Type constantPrecision, const FakeQuantizeOnDataWithConstant& fqOnData, const bool subgraphOnConstantPath = false); std::shared_ptr makeFakeQuantizeTypeRelaxed( const std::shared_ptr& input, - const ngraph::element::Type precision, + const ngraph::element::Type constantPrecision, const FakeQuantizeOnDataWithConstant& fqOnData); std::shared_ptr addDequantizationAttribute(const std::shared_ptr& op); diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/constant.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/constant.hpp index b16f4f0b985634..d86167980706ef 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/constant.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/constant.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/dequantization_operations.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/dequantization_operations.hpp index f6eb58929897ce..4c9f1a66f17942 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/dequantization_operations.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/dequantization_operations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_data.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_data.hpp index e6bd204889c09f..f89e980d374f4c 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_data.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_weights.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_weights.hpp index c21f70da8d1a54..7b2ef2ee4f0576 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_weights.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/fake_quantize_on_weights.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/multiply.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/multiply.hpp index d4ed0c8a423df2..70c4ea5520508a 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/multiply.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/multiply.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/reshape.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/reshape.hpp new file mode 100644 index 00000000000000..cad9899cc655cd --- /dev/null +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/reshape.hpp @@ -0,0 +1,28 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph { +namespace builder { +namespace subgraph { + +class Reshape { +public: + Reshape(); + Reshape(const std::vector& values, const bool special_zero = true); + bool empty() const noexcept; + + std::vector values; + bool special_zero; +private: + bool isEmpty; +}; + +} // namespace subgraph +} // namespace builder +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/transpose.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/transpose.hpp new file mode 100644 index 00000000000000..ee8c156ab89c1f --- /dev/null +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/common/transpose.hpp @@ -0,0 +1,27 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph { +namespace builder { +namespace subgraph { + +class Transpose { +public: + Transpose(); + Transpose(const std::vector& values); + bool empty() const noexcept; + + std::vector values; +private: + bool isEmpty; +}; + +} // namespace subgraph +} // namespace builder +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/compose_fake_quantize_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/compose_fake_quantize_function.hpp index c8026ca6e7e769..a4866e65923fe6 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/compose_fake_quantize_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/compose_fake_quantize_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/concat_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/concat_function.hpp index df3ff860bf10ce..e69fd113be56b5 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/concat_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/concat_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -90,6 +90,13 @@ class ConcatFunction { const FakeQuantizeOnDataWithConstant& fqOnData2, const FakeQuantizeOnDataWithConstant& fqOnData3); + static std::shared_ptr getOriginalWithIntermediateReshape( + const ngraph::element::Type precision, + const ngraph::Shape& inputShape, + const ngraph::Shape& reshapeOutputShape, + const FakeQuantizeOnData& fqOnData1, + const FakeQuantizeOnData& fqOnData2); + static std::shared_ptr getReference( const ngraph::element::Type precision, const ngraph::Shape& inputShape, @@ -206,6 +213,14 @@ class ConcatFunction { const ngraph::element::Type precisionAfterOperation, const DequantizationOperations& dequantizationOperations); + static std::shared_ptr getReferenceWithIntermediateReshape( + const ngraph::element::Type precision, + const ngraph::Shape& inputShape, + const ngraph::Shape& reshapeOutputShape, + const FakeQuantizeOnData& fqOnData1, + const FakeQuantizeOnData& fqOnData2, + const DequantizationOperations& dequantizationAfter); + private: static std::shared_ptr makeMaxPool(const Output& parent, const std::vector& kernel); }; diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convert_mul_or_add_finally_with_dequantization_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convert_mul_or_add_finally_with_dequantization_function.hpp index 1ea526b95665bb..5d76a046003504 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convert_mul_or_add_finally_with_dequantization_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convert_mul_or_add_finally_with_dequantization_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convolution_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convolution_function.hpp index ce12e3053f87eb..7a37f7ab9faa71 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convolution_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/convolution_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,6 +19,7 @@ namespace subgraph { class ConvolutionFunction { public: static std::shared_ptr getOriginal( + const ngraph::element::Type netPrecision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const ngraph::builder::subgraph::DequantizationOperations& dequantizationBefore, @@ -49,6 +50,7 @@ class ConvolutionFunction { bool isCorrect); static std::shared_ptr getReference( + const ngraph::element::Type netPrecision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const ngraph::builder::subgraph::DequantizationOperations& dequantizationBefore, diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/depth_to_space_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/depth_to_space_function.hpp index 090f2dbaaebd9d..05fb814eb88081 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/depth_to_space_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/depth_to_space_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/elementwise_with_multi_parent_dequantization_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/elementwise_with_multi_parent_dequantization_function.hpp index 403b56398a34e5..c6ae6d0d66a4fa 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/elementwise_with_multi_parent_dequantization_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/elementwise_with_multi_parent_dequantization_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp index a1adec6bedfa1c..5b44eb6ffb17d8 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_convolution_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,6 +9,9 @@ #include #include "lpt_ngraph_functions/common/constant.hpp" +#include "lpt_ngraph_functions/common/multiply.hpp" +#include "lpt_ngraph_functions/common/reshape.hpp" +#include "lpt_ngraph_functions/common/transpose.hpp" #include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" #include "lpt_ngraph_functions/common/fake_quantize_on_weights.hpp" #include "lpt_ngraph_functions/common/dequantization_operations.hpp" @@ -38,6 +41,24 @@ class FakeQuantizeAndConvolutionFunction { const DequantizationOperations& dequantizationOnWeights, const DequantizationOperations& dequantizationAfter, const std::string operation = "Convolution"); + + static std::shared_ptr get( + const ngraph::element::Type precision, + const ngraph::Shape& inputShape, + const FakeQuantizeOnDataWithConstant& fakeQuantizeOnData, + const DequantizationOperations::Convert& convertOnData, + const DequantizationOperations& dequantizationOnData, + const Constant& constantOnWeights, + const FakeQuantizeOnWeights& fakeQuantizeOnWeights, + const DequantizationOperations::Convert& convertOnWeights, + const DequantizationOperations& dequantizationOnWeights, + const Reshape& reshape1, + const DequantizationOperations::Multiply& multiply, + const Transpose& transpose, + const Reshape& reshape2, + const DequantizationOperations& dequantizationAfter, + const std::string operation = "Convolution", + bool multiplyAfter = false); }; } // namespace subgraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_two_output_branches_with_convolution_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_two_output_branches_with_convolution_function.hpp index ec252ca4c06fb4..74c471a04b7828 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_two_output_branches_with_convolution_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_and_two_output_branches_with_convolution_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_function.hpp index 91e94f9c9a3274..c0a7da296bedd5 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_on_weights_and_unsupported_child_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_on_weights_and_unsupported_child_function.hpp index ea38f2366f87b3..6562139b64c32e 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_on_weights_and_unsupported_child_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_on_weights_and_unsupported_child_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_precision_selection_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_precision_selection_function.hpp index e5a39644aa8df0..f0775e4a383296 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_precision_selection_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fake_quantize_precision_selection_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fold_fake_quantize_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fold_fake_quantize_function.hpp index 7ad788b39fb50f..e67035e9dfbe32 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fold_fake_quantize_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fold_fake_quantize_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_convert_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_convert_function.hpp index 3b16261667b5cd..b24f1082cf5a02 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_convert_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_convert_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_and_scale_shift_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_and_scale_shift_function.hpp index f9037202f45528..30c28261f014cb 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_and_scale_shift_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_and_scale_shift_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_function.hpp index 983a41b00bcdc1..e17ce33f78ee04 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_fake_quantize_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_multiply_to_fake_quantize_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_multiply_to_fake_quantize_function.hpp index c25174a85df828..3b36ded92c1eda 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_multiply_to_fake_quantize_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_multiply_to_fake_quantize_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_subtract_to_fake_quantize_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_subtract_to_fake_quantize_function.hpp index acce224816efbf..a8e6b158ddaf09 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_subtract_to_fake_quantize_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/fuse_subtract_to_fake_quantize_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/get_dequantization_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/get_dequantization_function.hpp index 8c3cb89e4b7034..70afbdb978a22d 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/get_dequantization_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/get_dequantization_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/group_convolution_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/group_convolution_function.hpp index 05ab395b695943..2273de2602c4fc 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/group_convolution_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/group_convolution_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/interpolate_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/interpolate_function.hpp index 508c6d35e4a03c..5624b5bab424fd 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/interpolate_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/interpolate_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_function.hpp index 3e35297ecc3e26..77c5bca8599913 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,6 +9,7 @@ #include "lpt_ngraph_functions/common/dequantization_operations.hpp" #include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" #include "lpt_ngraph_functions/common/fake_quantize_on_weights.hpp" +#include "lpt_ngraph_functions/common/constant.hpp" namespace ngraph { namespace builder { @@ -37,6 +38,7 @@ class MatMulFunction { const FakeQuantizeOnData& fqOnData2); static std::shared_ptr getOriginal( + const element::Type netPrecision, const ngraph::Shape& inputShape1, const ngraph::element::Type precisionBeforeDequantization1, const DequantizationOperations& dequantization1, @@ -48,10 +50,10 @@ class MatMulFunction { const ngraph::element::Type precision, const ngraph::Shape& inputShape, const ngraph::element::Type precisionBeforeDequantization, - const DequantizationOperations& dequantization, - const ngraph::Shape& weightsConstShape, - const std::vector& weightsConstValues, - const FakeQuantizeOnWeights& fqOnWeights); + const DequantizationOperations& deqOnData, + const Constant& weights, + const FakeQuantizeOnWeights& fqOnWeights, + const DequantizationOperations& deqOnWeights); static std::shared_ptr getReference( const ngraph::element::Type precision, @@ -68,18 +70,16 @@ class MatMulFunction { const ngraph::Shape& inputShape, const ngraph::element::Type precisionBeforeDequantization, const DequantizationOperations& dequantization, - const ngraph::element::Type weightsConstPrecision, - const ngraph::Shape& weightsConstShape, - const std::vector& weightsConstValues, + const Constant& weights, const DequantizationOperations& resultDequantization); static std::shared_ptr getOriginal( const ngraph::element::Type precision, const ngraph::Shape& inputShape, const FakeQuantizeOnDataWithConstant& fqOnData, - const ngraph::Shape& weightsConstShape, - const std::vector& weightsConstValues, - const FakeQuantizeOnDataWithConstant& fqOnWeights); + const Constant& weights, + const FakeQuantizeOnDataWithConstant& fqOnWeights, + const DequantizationOperations& deqOnWeights); }; } // namespace subgraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_with_optimized_constant_fake_quantize_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_with_optimized_constant_fake_quantize_function.hpp index 3bea8fa3b9fdbb..e77c1e1d1cc8ef 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_with_optimized_constant_fake_quantize_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mat_mul_with_optimized_constant_fake_quantize_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/max_pool_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/max_pool_function.hpp index e7282a6af570e1..457d9a6697cb3c 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/max_pool_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/max_pool_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/move_dequantization_after_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/move_dequantization_after_function.hpp index 44c1dc3351ea4a..c97cb13ba34de2 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/move_dequantization_after_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/move_dequantization_after_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/move_dequantization_after_with_int_constant_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/move_dequantization_after_with_int_constant_function.hpp deleted file mode 100644 index bb59b9f2243c42..00000000000000 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/move_dequantization_after_with_int_constant_function.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -#include -#include - -#include "lpt_ngraph_functions/common/dequantization_operations.hpp" -#include "ngraph_functions/subgraph_builders.hpp" - -namespace ngraph { -namespace builder { -namespace subgraph { - -class MoveDequantizationAfterWithIntConstantFunction { -public: - static std::shared_ptr getOriginal( - const ngraph::element::Type precision, - const ngraph::Shape& inputShape, - const ngraph::builder::subgraph::DequantizationOperations dequantization); - - static std::shared_ptr getReference( - const ngraph::element::Type precision, - const ngraph::Shape& inputShape, - const ngraph::builder::subgraph::DequantizationOperations dequantizationBefore, - const ngraph::element::Type precisionAfterOperation, - const ngraph::builder::subgraph::DequantizationOperations dequantizationAfter); -}; - -} // namespace subgraph -} // namespace builder -} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mul_add_to_scaleshift_or_power_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mul_add_to_scaleshift_or_power_function.hpp index 57c1a4d7f49536..0333cf09a0fce5 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mul_add_to_scaleshift_or_power_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mul_add_to_scaleshift_or_power_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_function.hpp index a5a1aabfcc9419..6b8c29a464a999 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,7 +39,10 @@ inline std::ostream& operator<<(std::ostream& out, const MultiplyValues& values) class MultiplyFunction { public: - static std::shared_ptr get(const ngraph::Shape& inputShape, const MultiplyValues& actualValues); + static std::shared_ptr get( + const element::Type precision, + const ngraph::Shape& inputShape, + const MultiplyValues& actualValues); static std::shared_ptr getOriginal( const ngraph::element::Type precision, diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_to_group_convolution_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_to_group_convolution_function.hpp index 44023f33a1bd1b..0f157a088d9e21 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_to_group_convolution_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_to_group_convolution_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_with_one_parent_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_with_one_parent_function.hpp index 505a8e254cb409..3aab5f89747916 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_with_one_parent_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/multiply_with_one_parent_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mvn_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mvn_function.hpp index f4402e2e1c3275..4455d0e5fa6dad 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mvn_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/mvn_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -15,11 +15,13 @@ namespace subgraph { class MVNFunction { public: static std::shared_ptr getOriginal( + const element::Type precision, const ngraph::Shape& inputShape, const AxisSet& reductionAxes, const bool& normalizeVariance, const ngraph::element::Type precisionBeforeDequantization, - const ngraph::builder::subgraph::DequantizationOperations& dequantization); + const ngraph::builder::subgraph::DequantizationOperations& dequantization, + const int opset_version); static std::shared_ptr getOriginal( const ngraph::element::Type precision, @@ -28,13 +30,15 @@ class MVNFunction { const bool& normalizeVariance); static std::shared_ptr getReference( + const element::Type precision, const ngraph::Shape& inputShape, const AxisSet& reductionAxes, const bool& normalizeVariance, const ngraph::element::Type precisionBeforeDequantization, const ngraph::builder::subgraph::DequantizationOperations& dequantizationBefore, const ngraph::element::Type precisionAfterOperation, - const ngraph::builder::subgraph::DequantizationOperations& dequantizationAfter); + const ngraph::builder::subgraph::DequantizationOperations& dequantizationAfter, + const int opset_version); }; } // namespace subgraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_dequantization_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_dequantization_function.hpp index 67232042f1ff4c..d04979a6553dc9 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_dequantization_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_dequantization_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_l2_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_l2_function.hpp index 94a391502c7515..ae85fb168c7072 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_l2_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/normalize_l2_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -28,6 +28,7 @@ class NormalizeL2Function { const bool shift); static std::shared_ptr getOriginal( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& shape, const ngraph::op::EpsMode& epsMode, @@ -35,6 +36,7 @@ class NormalizeL2Function { const ngraph::builder::subgraph::DequantizationOperations& dequantization); static std::shared_ptr getReference( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& shape, const ngraph::op::EpsMode& epsMode, diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/prelu_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/prelu_function.hpp index 5df9e4bc6155ac..09bbfdcf8d664b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/prelu_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/prelu_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/relu_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/relu_function.hpp index f67c52fdd104b3..f972dccac98e01 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/relu_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/relu_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_fully_connected_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_fully_connected_function.hpp index 14bd5055bea77b..661093eaadeba9 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_fully_connected_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_fully_connected_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_function.hpp index 8f8286229cbf70..819e5b76caa2f1 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/reshape_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/round_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/round_function.hpp index e9217941fa3289..3c13101681b8d2 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/round_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/round_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/split_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/split_function.hpp index 695de1ef32f69a..661c4c2e80c8e3 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/split_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/split_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/squeeze_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/squeeze_function.hpp index b5300e6a24ad5f..7a2d91fb3afc7b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/squeeze_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/squeeze_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/strided_slice_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/strided_slice_function.hpp index f7634e78316dd5..75c2d22e39b83b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/strided_slice_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/strided_slice_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_function.hpp index 43ed4e05bb33db..2de725ca64e2c9 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_multiply_to_multiply_add_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_multiply_to_multiply_add_function.hpp index 773e486e6c4b8c..46c30a124a3502 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_multiply_to_multiply_add_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/subtract_multiply_to_multiply_add_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transformations_after_split_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transformations_after_split_function.hpp new file mode 100644 index 00000000000000..fdebd24f9d008e --- /dev/null +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transformations_after_split_function.hpp @@ -0,0 +1,26 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +namespace ngraph { +namespace builder { +namespace subgraph { + +class TransformationsAfterSplitFunction { +public: + static std::shared_ptr get(const std::string transformationName); + + static std::shared_ptr getLayerByTransformationName( + const std::string transformationName, + const Output parent); +}; + +} // namespace subgraph +} // namespace builder +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_after_mat_mul_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_after_mat_mul_function.hpp index 7376cb30b15993..e8a1307407866b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_after_mat_mul_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_after_mat_mul_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_function.hpp index 7cb53c79c0c022..58edf501526a4b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/transpose_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/unsqueeze_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/unsqueeze_function.hpp index fad256120b7ee2..3b1e48e29cd6e3 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/unsqueeze_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/unsqueeze_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/variadic_split_function.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/variadic_split_function.hpp index d3735c2f1948b9..a286f287af21a5 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/variadic_split_function.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/include/lpt_ngraph_functions/variadic_split_function.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/add_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/add_function.cpp index d14831be8c1eb3..f8afbe434b0659 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/add_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/add_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -37,11 +37,17 @@ std::shared_ptr AddFunction::getOriginal( constValues); } else { input1 = std::make_shared( - precision1, + precision1.is_real() ? precision : precision1, broadcast ? ngraph::Shape({ inputShape[0], inputShape[1], 1, 1 }) : ngraph::Shape(inputShape)); } - const auto dequantizationOp1 = dequantization1.empty() ? input1 : makeDequantization(input1, dequantization1); + auto dequantizationStructure1 = dequantization1; + dequantizationStructure1.multiply.outPrecision = precision; + if (dequantizationStructure1.multiply.empty()) { + dequantizationStructure1.subtract.outPrecision = precision; + } + + const auto dequantizationOp1 = dequantization1.empty() ? input1 : makeDequantization(input1, dequantizationStructure1); std::shared_ptr input2; if (constInput == 1) { @@ -51,13 +57,13 @@ std::shared_ptr AddFunction::getOriginal( constValues); } else { input2 = std::make_shared( - precision2, ngraph::Shape(inputShape)); + precision2.is_real() ? precision : precision2, ngraph::Shape(inputShape)); } auto parent = input2; if (additionalLayer == "convolution") { parent = std::make_shared>( std::vector{ element::f32, element::f32 }, - std::vector{ element::f32 }, + std::vector{ precision }, ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), ngraph::op::TemporaryReplaceOutputType( std::make_shared(element::i8, Shape{ 1, 4, 1, 1 }, std::vector{0.8f, 0.8f, 0.8f, 0.8f}), @@ -70,7 +76,7 @@ std::shared_ptr AddFunction::getOriginal( if (additionalLayer == "group_convolution") { parent = std::make_shared< ngraph::op::TypeRelaxed>( std::vector{ element::f32, element::f32 }, - std::vector{ element::f32 }, + std::vector{ precision }, ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), ngraph::op::TemporaryReplaceOutputType( std::make_shared(element::i8, Shape{ 4, 1, 1, 1, 1 }, std::vector{0.8f, 0.8f, 0.8f, 0.8f}), @@ -83,13 +89,16 @@ std::shared_ptr AddFunction::getOriginal( if (additionalLayer != "") { parent = std::make_shared( parent, - std::make_shared(element::f32, Shape{ 1, 1, 1, 1 }, std::vector{1.f})); + std::make_shared(precision, Shape{ 1, 1, 1, 1 }, std::vector{1.f})); parent = ngraph::builder::subgraph::makeFakeQuantizeTypeRelaxed( parent, - ngraph::element::f32, - FakeQuantizeOnData{256, Shape{}, { 0 }, { 255 }, { 0 }, { 255 }, element::u8}); + precision, + {256, Shape{}, { 0 }, { 255 }, { 0 }, { 255 }, element::u8}); } - const auto dequantizationOp2 = dequantization2.empty() ? parent : makeDequantization(parent, dequantization2); + + auto dequantizationStructure2 = dequantization2; + dequantizationStructure2.multiply.outPrecision = precision; + const auto dequantizationOp2 = dequantization2.empty() ? parent : makeDequantization(parent, dequantizationStructure2); const auto add = std::make_shared(dequantizationOp1, dequantizationOp2); add->set_friendly_name("output"); @@ -165,32 +174,34 @@ std::shared_ptr AddFunction::getReference( std::shared_ptr input1; if (constInputIndex == 0) { input1 = std::make_shared( - precision, + dequantizationAfter.empty() ? precision : element::f32, inputShape, constValues); } else { input1 = std::make_shared( - precision1, + precision1.is_real() ? precision : precision1, broadcast ? ngraph::Shape({ inputShape[0], inputShape[1], 1, 1 }) : ngraph::Shape(inputShape)); } - const auto dequantizationOp1 = is_type(input1) ? input1 : makeDequantization(input1, dequantization1); + auto dequantizationStructure1 = dequantization1; + dequantizationStructure1.multiply.outPrecision = dequantizationAfter.empty() ? precision : element::f32; + const auto dequantizationOp1 = is_type(input1) ? input1 : makeDequantization(input1, dequantizationStructure1); std::shared_ptr input2; if (constInputIndex == 1) { input2 = std::make_shared( - precision, + dequantizationAfter.empty() ? precision : element::f32, inputShape, constValues); } else { input2 = std::make_shared( - precision2, ngraph::Shape(inputShape)); + precision2.is_real() ? precision : precision2, ngraph::Shape(inputShape)); } auto parent = input2; if (additionalLayer == "convolution") { parent = std::make_shared>( std::vector{ element::f32, element::f32 }, - std::vector{ element::f32 }, + std::vector{ precision }, ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), ngraph::op::TemporaryReplaceOutputType( std::make_shared(element::i8, Shape{ 1, 4, 1, 1 }, std::vector{0.8f, 0.8f, 0.8f, 0.8f}), @@ -203,7 +214,7 @@ std::shared_ptr AddFunction::getReference( if (additionalLayer == "group_convolution") { parent = std::make_shared< ngraph::op::TypeRelaxed>( std::vector{ element::f32, element::f32 }, - std::vector{ element::f32 }, + std::vector{ precision }, ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), ngraph::op::TemporaryReplaceOutputType( std::make_shared(element::i8, Shape{ 4, 1, 1, 1, 1 }, std::vector{0.8f, 0.8f, 0.8f, 0.8f}), @@ -216,31 +227,36 @@ std::shared_ptr AddFunction::getReference( if (additionalLayer != "") { parent = std::make_shared( parent, - std::make_shared(element::f32, Shape{ 1, 1, 1, 1 }, std::vector{1.f})); + std::make_shared(precision, Shape{ 1, 1, 1, 1 }, std::vector{1.f})); parent = ngraph::builder::subgraph::makeFakeQuantizeTypeRelaxed( parent, - ngraph::element::f32, - FakeQuantizeOnData{256, Shape{}, { 0 }, { 255 }, { 0 }, { 255 }, element::u8}); + precision, + {256, Shape{}, { 0 }, { 255 }, { 0 }, { 255 }, element::u8}); } - const auto dequantizationOp2 = is_type(parent) ? parent : makeDequantization(parent, dequantization2); + + auto dequantizationStructure2 = dequantization2; + dequantizationStructure2.multiply.outPrecision = dequantizationAfter.empty() ? precision : element::f32; + const auto dequantizationOp2 = is_type(parent) ? parent : makeDequantization(parent, dequantizationStructure2); const std::shared_ptr add = operationType == "Add" ? std::dynamic_pointer_cast(std::make_shared>( std::vector{ element::f32, element::f32 }, - std::vector{}, + std::vector{ element::f32 }, ngraph::op::TemporaryReplaceOutputType(dequantizationOp1, element::f32).get(), ngraph::op::TemporaryReplaceOutputType(dequantizationOp2, element::f32).get())) : std::make_shared>( std::vector{ element::f32, element::f32 }, - std::vector{}, + std::vector{ element::f32 }, ngraph::op::TemporaryReplaceOutputType(dequantizationOp1, element::f32).get(), ngraph::op::TemporaryReplaceOutputType(dequantizationOp2, element::f32).get()); - NetworkHelper::setOutDataPrecisionForTypeRelaxed(add, precision); + NetworkHelper::setOutDataPrecisionForTypeRelaxed(add, dequantizationAfter.empty() ? precision : element::f32); auto& rtInfo = add->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("add"); - const auto dequantizationOpAfter = makeDequantization(add, dequantizationAfter); + auto dequantizationStructureAfter = dequantizationAfter; + dequantizationStructureAfter.multiply.outPrecision = precision; + const auto dequantizationOpAfter = makeDequantization(add, dequantizationStructureAfter); dequantizationOpAfter->set_friendly_name("output"); diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/avg_pool_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/avg_pool_function.cpp index c1a87fd558d1d6..ebb8798e680895 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/avg_pool_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/avg_pool_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,6 +16,7 @@ namespace builder { namespace subgraph { std::shared_ptr AvgPoolFunction::getOriginal( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const bool addFQ, @@ -24,7 +25,9 @@ std::shared_ptr AvgPoolFunction::getOriginal( const auto input = std::make_shared(inputPrecision, ngraph::Shape(inputShape)); std::shared_ptr parent = input; - const auto dequantization = makeDequantization(input, dequantizationBefore); + auto deqBeforeStructure = dequantizationBefore; + deqBeforeStructure.multiply.outPrecision = precision; + const auto dequantization = makeDequantization(input, deqBeforeStructure); const std::shared_ptr avgPool = std::make_shared( dequantization, @@ -48,7 +51,7 @@ std::shared_ptr AvgPoolFunction::getOriginal( if (addFQ) { lastLayer = ngraph::builder::makeFakeQuantize( - lastLayer, ngraph::element::f32, 256, {}, { 0 }, { 255 }, { 0 }, { 255 }); + lastLayer, precision, 256, {}, { 0 }, { 255 }, { 0 }, { 255 }); } lastLayer->set_friendly_name("output"); @@ -81,6 +84,7 @@ std::shared_ptr AvgPoolFunction::getOriginal( } std::shared_ptr AvgPoolFunction::getReference( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const bool addFQ, @@ -89,17 +93,19 @@ std::shared_ptr AvgPoolFunction::getReference( const ngraph::element::Type precisionAfterOperation, const ngraph::builder::subgraph::DequantizationOperations& dequantizationAfter) { auto input = std::make_shared(inputPrecision, ngraph::Shape(inputShape)); - const auto deqBefore = makeDequantization(input, dequantizationBefore); + const auto deqBefore = makeDequantization(input, dequantizationBefore); + auto outPrecision = precisionAfterOperation; const std::shared_ptr avgPool = std::make_shared>( - deqBefore, - Strides{ 1, 1 }, - Shape{ 1, 1 }, - Shape{ 0, 0 }, - Shape{ 2, 2 }, - true, - op::RoundingType::FLOOR); - ngraph::pass::low_precision::NetworkHelper::setOutDataPrecisionForTypeRelaxed(avgPool, precisionAfterOperation); + opset1::AvgPool( + deqBefore, + Strides{ 1, 1 }, + Shape{ 1, 1 }, + Shape{ 0, 0 }, + Shape{ 2, 2 }, + true, + op::RoundingType::FLOOR), + outPrecision); std::shared_ptr lastLayer = avgPool; if (additionalLayer == "maxpool") { @@ -111,12 +117,13 @@ std::shared_ptr AvgPoolFunction::getReference( Shape{ 2, 2 }, op::RoundingType::FLOOR); } - - lastLayer = makeDequantization(lastLayer, dequantizationAfter); + auto deqAfterStructure = dequantizationAfter; + deqAfterStructure.multiply.outPrecision = precision; + lastLayer = makeDequantization(lastLayer, deqAfterStructure); if (addFQ) { lastLayer = ngraph::builder::makeFakeQuantize( - lastLayer, ngraph::element::f32, 256, {}, { 0 }, { 255 }, { 0 }, { 255 }); + lastLayer, precision, 256, {}, { 0 }, { 255 }, { 0 }, { 255 }); } lastLayer->set_friendly_name("output"); diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/clamp_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/clamp_function.cpp index d2612e5c5a2003..5c8a1a5390248b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/clamp_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/clamp_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -61,6 +61,20 @@ std::shared_ptr ClampFunction::getOriginal( return std::make_shared(results, ngraph::ParameterVector{ input }, "ClampFunction"); } +std::shared_ptr ClampFunction::getWithNonDequantizationMultiply( + const ngraph::Shape& inputShape, + const ngraph::element::Type precision) { + const auto input1 = std::make_shared(precision, inputShape); + const auto input2 = std::make_shared(precision, inputShape); + + const auto multiply = std::make_shared(input1, input2); + const auto clamp = std::make_shared(multiply, 0.0, 6.0); + clamp->set_friendly_name("output"); + + ngraph::ResultVector results{ std::make_shared(clamp) }; + return std::make_shared(results, ngraph::ParameterVector{ input1, input2 }, "ClampFunction"); +} + std::shared_ptr ClampFunction::getReference( const ngraph::Shape& inputShape, const ngraph::element::Type precisionBeforeDequantization, diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/add.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/add.cpp index 5bde7118c66824..881484fce87dd1 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/add.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/add.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/builders.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/builders.cpp index 19e243fec95468..0342e4e5cd6c9b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/builders.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/builders.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -128,83 +128,99 @@ std::shared_ptr makeDequantization( } if (!dequantizationOperations.multiply.empty()) { - std::vector shape; - auto values = dequantizationOperations.multiply.values; - if (dequantizationOperations.multiply.constantShapeIsDefined) { - shape = dequantizationOperations.multiply.constantShape; - if (values.size() == 1ul) { - values = std::vector(shape_size(shape), values[0]); - } + auto const newMultiply = makeMultiply(parent, dequantizationOperations.multiply); + ngraph::copy_runtime_info({ data.get_node_shared_ptr(), newMultiply }, newMultiply); + parent = newMultiply; + } + + return parent.get_node_shared_ptr(); +} + +std::shared_ptr makeMultiply(const Output& parent, const DequantizationOperations::Multiply& multiply) { + std::vector shape; + auto values = multiply.values; + if (multiply.constantShapeIsDefined) { + shape = multiply.constantShape; + if (values.size() == 1ul) { + values = std::vector(shape_size(shape), values[0]); + } + } else { + if (values.size() == 1ul) { + shape = std::vector({}); } else { - if (values.size() == 1ul) { - shape = std::vector({}); - } else { - shape = std::vector(parent.get_shape().size(), 1ul); - shape[shape.size() >= 2 ? 1ul : 0] = values.size(); - } + shape = std::vector(parent.get_shape().size(), 1ul); + shape[shape.size() >= 2 ? 1ul : 0] = values.size(); } + } - std::shared_ptr multiply; - if (((dequantizationOperations.multiply.outPrecision == element::undefined) || - (dequantizationOperations.multiply.outPrecision == parent.get_element_type())) && - ((dequantizationOperations.multiply.constantPrecision == element::undefined) || - (dequantizationOperations.multiply.constantPrecision == parent.get_element_type()))) { - const std::shared_ptr constant = std::make_shared( - dequantizationOperations.multiply.constantPrecision != element::undefined ? - dequantizationOperations.multiply.constantPrecision : - parent.get_element_type(), - shape, - values); - - if (dequantizationOperations.multiply.addDequantizationAttribute) { - multiply = dequantizationOperations.multiply.constantIndex == 1ul ? - std::make_shared(parent, constant) : - std::make_shared(constant, parent); - } else { - multiply = dequantizationOperations.multiply.constantIndex == 1ul ? - std::make_shared(parent, constant) : - std::make_shared(constant, parent); - } + std::shared_ptr newMultiply; + if (((multiply.outPrecision == element::undefined) || + (multiply.outPrecision == parent.get_element_type())) && + ((multiply.constantPrecision == element::undefined) || + (multiply.constantPrecision == parent.get_element_type()))) { + const std::shared_ptr constant = std::make_shared( + multiply.constantPrecision != element::undefined ? + multiply.constantPrecision : + parent.get_element_type(), + shape, + values); + + if (multiply.addDequantizationAttribute) { + newMultiply = multiply.constantIndex == 1ul ? + std::make_shared(parent, constant) : + std::make_shared(constant, parent); } else { - const std::shared_ptr constant = std::make_shared( - dequantizationOperations.multiply.constantPrecision != element::undefined ? - dequantizationOperations.multiply.constantPrecision : - parent.get_element_type(), - shape, - values); + newMultiply = multiply.constantIndex == 1ul ? + std::make_shared(parent, constant) : + std::make_shared(constant, parent); + } + } else { + const std::shared_ptr constant = std::make_shared( + multiply.constantPrecision != element::undefined ? + multiply.constantPrecision : + parent.get_element_type(), + shape, + values); - // TODO: use templates - if (dequantizationOperations.multiply.addDequantizationAttribute) { - multiply = dequantizationOperations.multiply.constantIndex == 1ul ? - std::make_shared>( - std::vector{element::f32, element::f32}, - std::vector{ element::f32 }, - ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get()) : - std::make_shared>( - std::vector{element::f32, element::f32}, - std::vector{ element::f32 }, - ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get()); - } else { - multiply = dequantizationOperations.multiply.constantIndex == 1ul ? - std::make_shared>( - std::vector{element::f32, element::f32}, - std::vector{ element::f32 }, - ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get()) : - std::make_shared>( - std::vector{element::f32, element::f32}, - std::vector{ element::f32 }, - ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get()); - } + // TODO: use templates + if (multiply.addDequantizationAttribute) { + newMultiply = multiply.constantIndex == 1ul ? + std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{ multiply.outPrecision }, + ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get()) : + std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{ multiply.outPrecision }, + ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get()); + } else { + newMultiply = multiply.constantIndex == 1ul ? + std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{ multiply.outPrecision }, + ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get()) : + std::make_shared>( + std::vector{element::f32, element::f32}, + std::vector{ multiply.outPrecision }, + ngraph::op::TemporaryReplaceOutputType(constant, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(parent, element::f32).get()); } - ngraph::copy_runtime_info({ data.get_node_shared_ptr(), multiply }, multiply); - parent = multiply; } - return parent.get_node_shared_ptr(); + return newMultiply; +} + +std::shared_ptr makeReshape(const Output& data, const Reshape& reshape) { + auto constant = makeConstant(ngraph::element::i64, Shape({ reshape.values.size() }), reshape.values); + return std::make_shared(data, constant->output(0), reshape.special_zero); +} + +std::shared_ptr makeTranspose(const Output& data, const Transpose& transpose) { + auto constant = makeConstant(ngraph::element::i64, Shape({ transpose.values.size() }), transpose.values); + return std::make_shared(data, constant->output(0)); } std::shared_ptr makeFakeQuantize( @@ -232,38 +248,44 @@ std::shared_ptr makeFakeQuantizeTypeRelaxed( std::shared_ptr makeFakeQuantize( const Output& input, - const ngraph::element::Type precision, + const ngraph::element::Type constantPrecision, const FakeQuantizeOnDataWithConstant& fqOnData, const bool subgraphOnConstantPath) { std::shared_ptr inputLowNode; std::shared_ptr inputHighNode; if (subgraphOnConstantPath) { - const auto topConstant = ngraph::builder::makeConstant(precision, ngraph::Shape{1}, std::vector(1, 0.f), false); + const auto topConstant = ngraph::builder::makeConstant(constantPrecision, ngraph::Shape{1}, std::vector(1, 0.f), false); const auto convert = std::make_shared(topConstant, element::f32); const auto subtractMin = std::make_shared( - std::make_shared(precision, ngraph::Shape{ 1 }, std::vector{fqOnData.outputLowValues[0]}), + std::make_shared(constantPrecision, ngraph::Shape{ 1 }, std::vector{fqOnData.outputLowValues[0]}), convert); const auto subtractMax = std::make_shared( - std::make_shared(precision, ngraph::Shape{ 1 }, std::vector{fqOnData.outputHighValues[0]}), + std::make_shared(constantPrecision, ngraph::Shape{ 1 }, std::vector{fqOnData.outputHighValues[0]}), convert); inputLowNode = std::make_shared( - std::make_shared(precision, ngraph::Shape{ 1 }, std::vector{fqOnData.inputLowValues[0] / fqOnData.outputLowValues[0]}), + std::make_shared( + constantPrecision, + ngraph::Shape{ 1 }, + std::vector{fqOnData.inputLowValues[0] / fqOnData.outputLowValues[0]}), subtractMin); inputHighNode = std::make_shared( - std::make_shared(precision, ngraph::Shape{ 1 }, std::vector{fqOnData.inputHighValues[0] / fqOnData.outputHighValues[0]}), + std::make_shared( + constantPrecision, + ngraph::Shape{ 1 }, + std::vector{fqOnData.inputHighValues[0] / fqOnData.outputHighValues[0]}), subtractMax); } else { inputLowNode = ngraph::builder::makeConstant( - precision, + constantPrecision, fqOnData.constantShapes.empty() ? ngraph::Shape{} : fqOnData.constantShapes[0], fqOnData.inputLowValues, fqOnData.inputLowValues.empty()); inputHighNode = ngraph::builder::makeConstant( - precision, + constantPrecision, fqOnData.constantShapes.empty() ? ngraph::Shape{} : (fqOnData.constantShapes.size() == 1 ? fqOnData.constantShapes[0] : fqOnData.constantShapes[1]), @@ -272,7 +294,7 @@ std::shared_ptr makeFakeQuantize( } const auto outputLowNode = ngraph::builder::makeConstant( - precision, + constantPrecision, fqOnData.constantShapes.empty() ? ngraph::Shape{} : (fqOnData.constantShapes.size() == 1 ? fqOnData.constantShapes[0] : fqOnData.constantShapes[2]), @@ -280,7 +302,7 @@ std::shared_ptr makeFakeQuantize( fqOnData.outputLowValues.empty()); const auto outputHighNode = ngraph::builder::makeConstant( - precision, + constantPrecision, fqOnData.constantShapes.empty() ? ngraph::Shape{} : (fqOnData.constantShapes.size() == 1 ? fqOnData.constantShapes[0] : fqOnData.constantShapes[3]), @@ -293,10 +315,12 @@ std::shared_ptr makeFakeQuantize( std::shared_ptr makeFakeQuantizeTypeRelaxed( const std::shared_ptr& input, - const ngraph::element::Type precision, + const ngraph::element::Type constantPrecision, const FakeQuantizeOnDataWithConstant& fqOnData) { - const std::shared_ptr fq = makeFakeQuantize(input, precision, fqOnData); - return std::make_shared>(*fq, fqOnData.outputPrecision); + const std::shared_ptr fq = makeFakeQuantize(input, constantPrecision, fqOnData); + return std::make_shared>( + *fq, + fqOnData.outputPrecision == ngraph::element::undefined ? constantPrecision : fqOnData.outputPrecision); } std::shared_ptr addDequantizationAttribute(const std::shared_ptr& op) { diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/constant.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/constant.cpp index 5306067c9a877f..4b4de22081402b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/constant.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/constant.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/dequantization_operations.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/dequantization_operations.cpp index e079831ab98a77..eccd81c08aa7f1 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/dequantization_operations.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/dequantization_operations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_data.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_data.cpp index 1a09292295ab38..da72c48366142f 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_data.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_data.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_weights.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_weights.cpp index 30cc8ed278e843..8b8e759b035788 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_weights.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/fake_quantize_on_weights.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/multiply.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/multiply.cpp index aa2b090f57966a..e5bf31c438e398 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/multiply.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/multiply.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/reshape.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/reshape.cpp new file mode 100644 index 00000000000000..bbbf7a23fdc9e8 --- /dev/null +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/reshape.cpp @@ -0,0 +1,26 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "lpt_ngraph_functions/common/reshape.hpp" + +namespace ngraph { +namespace builder { +namespace subgraph { + +Reshape::Reshape() : isEmpty(true), special_zero(true) { +} + +Reshape::Reshape(const std::vector& values, const bool special_zero) : + isEmpty(values.empty()), + values(values), + special_zero(special_zero) { +} + +bool Reshape::empty() const noexcept { + return isEmpty; +} + +} // namespace subgraph +} // namespace builder +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/transpose.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/transpose.cpp new file mode 100644 index 00000000000000..ca51ebd0b7cb80 --- /dev/null +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/common/transpose.cpp @@ -0,0 +1,25 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "lpt_ngraph_functions/common/transpose.hpp" + +namespace ngraph { +namespace builder { +namespace subgraph { + +Transpose::Transpose() : isEmpty(true) { +} + +Transpose::Transpose(const std::vector& values) : + isEmpty(values.empty()), + values(values) { +} + +bool Transpose::empty() const noexcept { + return isEmpty; +} + +} // namespace subgraph +} // namespace builder +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/compose_fake_quantize_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/compose_fake_quantize_function.cpp index 87235ec378f84c..64890e2fdb7236 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/compose_fake_quantize_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/compose_fake_quantize_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/concat_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/concat_function.cpp index c8747b4d3da18b..2d9bb24453a948 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/concat_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/concat_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -656,6 +656,43 @@ std::shared_ptr ConcatFunction::getOriginalWithReshapeAtTheEnd return function; } +std::shared_ptr ConcatFunction::getOriginalWithIntermediateReshape( + const ngraph::element::Type precision, + const ngraph::Shape& inputShape, + const ngraph::Shape& reshapeOutputShape, + const FakeQuantizeOnData& fqOnData1, + const FakeQuantizeOnData& fqOnData2) { + const auto input1 = std::make_shared(precision, inputShape); + input1->set_friendly_name("input1"); + const auto fakeQuantize1 = makeFakeQuantize(input1, precision, fqOnData1); + const auto reshape1 = std::make_shared( + fakeQuantize1, + opset1::Constant::create(element::i64, Shape{reshapeOutputShape.size()}, reshapeOutputShape), + true); + + const std::vector inputShape2 = inputShape; + const auto input2 = std::make_shared(precision, ngraph::Shape(inputShape2)); + input2->set_friendly_name("input2"); + const auto fakeQuantize2 = makeFakeQuantize(input2, precision, fqOnData2); + const auto reshape2 = std::make_shared( + fakeQuantize2, + opset1::Constant::create(element::i64, Shape{reshapeOutputShape.size()}, reshapeOutputShape), + true); + const std::shared_ptr concat = std::make_shared( + ngraph::OutputVector{ reshape1->output(0), reshape2->output(0) }, 1); + concat->set_friendly_name("output"); + auto& rtInfo = concat->get_rt_info(); + rtInfo["Variant::std::string"] = std::make_shared>("concat"); + + ngraph::ResultVector results{ std::make_shared(concat) }; + std::shared_ptr function = std::make_shared( + results, + ngraph::ParameterVector{ input1, input2 }, + "ConcatWithIntermediateReshapeTransformation"); + + return function; +} + std::shared_ptr ConcatFunction::getReference( const ngraph::element::Type precision, const ngraph::Shape& inputShape, @@ -738,14 +775,10 @@ std::shared_ptr ConcatFunction::get( parent2 = makeDequantization(parent2, dequantization2); } - const std::shared_ptr concat = std::make_shared>( - ngraph::OutputVector{ parent1, parent2 }, 1); + const std::shared_ptr concat = std::make_shared(ngraph::OutputVector{ parent1, parent2 }, 1); auto& rtInfo = concat->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("concat"); - if (precisionAfterOperation != ngraph::element::undefined) { - ngraph::pass::low_precision::NetworkHelper::setOutDataPrecision(concat, precisionAfterOperation); - } const auto lastDequantization = makeDequantization(concat, dequantizationAfter); lastDequantization->set_friendly_name("output"); @@ -1424,6 +1457,49 @@ std::shared_ptr ConcatFunction::getReferenceWithReshapeAtTheEn return function; } +std::shared_ptr ConcatFunction::getReferenceWithIntermediateReshape( + const ngraph::element::Type precision, + const ngraph::Shape& inputShape, + const ngraph::Shape& reshapeOutputShape, + const FakeQuantizeOnData& fqOnData1, + const FakeQuantizeOnData& fqOnData2, + const DequantizationOperations& dequantizationAfter) { + const auto input1 = std::make_shared(precision, inputShape); + input1->set_friendly_name("input1"); + const auto fakeQuantize1 = makeFakeQuantizeTypeRelaxed(input1, precision, fqOnData1); + ngraph::pass::low_precision::NetworkHelper::setOutDataPrecision(fakeQuantize1, element::u8); + const auto reshape1 = std::make_shared( + fakeQuantize1, + opset1::Constant::create(element::i64, Shape{reshapeOutputShape.size()}, reshapeOutputShape), + true); + + const std::vector inputShape2 = inputShape; + const auto input2 = std::make_shared(precision, ngraph::Shape(inputShape2)); + input2->set_friendly_name("input2"); + const auto fakeQuantize2 = makeFakeQuantizeTypeRelaxed(input2, precision, fqOnData2); + ngraph::pass::low_precision::NetworkHelper::setOutDataPrecision(fakeQuantize2, element::u8); + const auto reshape2 = std::make_shared( + fakeQuantize2, + opset1::Constant::create(element::i64, Shape{reshapeOutputShape.size()}, reshapeOutputShape), + true); + const std::shared_ptr concat = std::make_shared( + ngraph::OutputVector{ reshape1->output(0), reshape2->output(0) }, 1); + concat->set_friendly_name("output_original"); + auto& rtInfo = concat->get_rt_info(); + rtInfo["Variant::std::string"] = std::make_shared>("concat"); + + const auto dequantization = makeDequantization(concat, dequantizationAfter); + dequantization->set_friendly_name("output"); + + ngraph::ResultVector results{ std::make_shared(dequantization) }; + std::shared_ptr function = std::make_shared( + results, + ngraph::ParameterVector{ input1, input2 }, + "ConcatWithIntermediateReshapeTransformation"); + + return function; +} + std::shared_ptr ConcatFunction::makeMaxPool(const Output& parent, const std::vector& kernel) { const std::vector stride = { 1, 1 }; const std::vector padBegin = { 0, 0 }; diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convert_mul_or_add_finally_with_dequantization_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convert_mul_or_add_finally_with_dequantization_function.cpp index 39a0b99712418e..648837f703f77d 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convert_mul_or_add_finally_with_dequantization_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convert_mul_or_add_finally_with_dequantization_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convolution_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convolution_function.cpp index 70647687cbed91..5159d3faa04cf8 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convolution_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/convolution_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,13 +23,16 @@ namespace builder { namespace subgraph { std::shared_ptr ConvolutionFunction::getOriginal( + const ngraph::element::Type netPrecision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const ngraph::builder::subgraph::DequantizationOperations& dequantizationBefore, std::shared_ptr weights, const ngraph::builder::subgraph::FakeQuantizeOnWeights fakeQuantizeOnWeights) { const auto input = std::make_shared(inputPrecision, inputShape); - const auto dequantization = makeDequantization(input, dequantizationBefore); + auto dequantizationStructure = dequantizationBefore; + dequantizationStructure.multiply.outPrecision = netPrecision; + const auto dequantization = makeDequantization(input, dequantizationStructure); const size_t inputChannelsCount = inputShape[1]; const size_t outputChannelsCount = 2 * inputShape[1]; @@ -44,9 +47,14 @@ std::shared_ptr ConvolutionFunction::getOriginal( weights, op::Constant::create(ngraph::element::i64, Shape{ targetShape.size() }, targetShape))); } - const auto onWeights = fakeQuantizeOnWeights.empty() ? weights : + const auto convertOnWeights = std::make_shared(weights, netPrecision); + OutputVector convertedOutput(1); + convertOnWeights->constant_fold(convertedOutput, convertOnWeights->input_values()); + const auto convertedWeights = convertedOutput[0].get_node_shared_ptr(); + + const auto onWeights = fakeQuantizeOnWeights.empty() ? convertedWeights : ngraph::builder::makeFakeQuantize( - weights, weights->get_element_type(), + convertedWeights, netPrecision, fakeQuantizeOnWeights.quantizationLevel, fakeQuantizeOnWeights.constantShape, fakeQuantizeOnWeights.inputLowValues, @@ -55,16 +63,16 @@ std::shared_ptr ConvolutionFunction::getOriginal( fakeQuantizeOnWeights.outputHighValues); auto convolutionOriginal = ngraph::opset1::Convolution( - ngraph::op::TemporaryReplaceOutputType(dequantization, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(onWeights, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(dequantization, netPrecision).get(), + ngraph::op::TemporaryReplaceOutputType(onWeights, netPrecision).get(), ngraph::Strides{ 1, 1 }, ngraph::CoordinateDiff{ 0, 0 }, ngraph::CoordinateDiff{ 0, 0 }, ngraph::Strides{ 1, 1 }); std::shared_ptr convolution = std::make_shared>( convolutionOriginal, - std::vector{ element::f32, element::f32 }, - std::vector{}); + std::vector{ netPrecision, netPrecision }, + std::vector{ netPrecision }); convolution->set_friendly_name("output"); auto& rtInfo = convolution->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("convolution"); @@ -203,6 +211,7 @@ std::shared_ptr ConvolutionFunction::getReferenceWithIncorrect } std::shared_ptr ConvolutionFunction::getReference( + const ngraph::element::Type netPrecision, const ngraph::element::Type inputPrecision, const ngraph::Shape& inputShape, const ngraph::builder::subgraph::DequantizationOperations& dequantizationBefore, @@ -212,7 +221,9 @@ std::shared_ptr ConvolutionFunction::getReference( const ngraph::builder::subgraph::DequantizationOperations& dequantizationAfter, const ngraph::element::Type precisionAfterDequantization) { auto input = std::make_shared(inputPrecision, inputShape); - const auto deqBefore = makeDequantization(input, dequantizationBefore); + auto dequantizationBeforeStructure = dequantizationBefore; + dequantizationBeforeStructure.multiply.outPrecision = netPrecision; + const auto deqBefore = makeDequantization(input, dequantizationBeforeStructure); const size_t inputChannelsCount = inputShape[1]; const size_t outputChannelsCount = 2 * inputShape[1]; @@ -227,11 +238,16 @@ std::shared_ptr ConvolutionFunction::getReference( weights, op::Constant::create(ngraph::element::i64, Shape{ targetShape.size() }, targetShape))); } + const auto convertOnWeights = std::make_shared(weights, netPrecision); + OutputVector convertedOutput(1); + convertOnWeights->constant_fold(convertedOutput, convertOnWeights->input_values()); + const auto convertedWeights = convertedOutput[0].get_node_shared_ptr(); + std::shared_ptr onWeights = fakeQuantizeOnWeights.empty() ? std::dynamic_pointer_cast(weights) : ngraph::builder::makeFakeQuantize( - weights->output(0), - weights->get_element_type(), + convertedWeights->output(0), + netPrecision, fakeQuantizeOnWeights.quantizationLevel, fakeQuantizeOnWeights.constantShape, fakeQuantizeOnWeights.inputLowValues, @@ -240,8 +256,8 @@ std::shared_ptr ConvolutionFunction::getReference( fakeQuantizeOnWeights.outputHighValues); auto convolutionOriginal = ngraph::opset1::Convolution( - ngraph::op::TemporaryReplaceOutputType(deqBefore, element::f32).get(), - ngraph::op::TemporaryReplaceOutputType(onWeights, element::f32).get(), + ngraph::op::TemporaryReplaceOutputType(deqBefore, netPrecision).get(), + ngraph::op::TemporaryReplaceOutputType(onWeights, netPrecision).get(), ngraph::Strides{ 1, 1 }, ngraph::CoordinateDiff{ 0, 0 }, ngraph::CoordinateDiff{ 0, 0 }, @@ -249,14 +265,19 @@ std::shared_ptr ConvolutionFunction::getReference( std::shared_ptr convolution = std::make_shared>( convolutionOriginal, - std::vector{ element::f32, element::f32 }, - std::vector{}); + std::vector{ netPrecision, netPrecision }, + std::vector{ netPrecision }); - ngraph::pass::low_precision::NetworkHelper::setOutDataPrecisionForTypeRelaxed(convolution, precisionAfterOperation); + if (!dequantizationAfter.empty()) { + ngraph::pass::low_precision::NetworkHelper::setOutDataPrecisionForTypeRelaxed(convolution, + precisionAfterOperation); + } auto& rtInfo = convolution->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("convolution"); - const auto deqAfter = makeDequantization(convolution, dequantizationAfter); + auto dequantizationStructure = dequantizationAfter; + dequantizationStructure.multiply.outPrecision = netPrecision; + const auto deqAfter = makeDequantization(convolution, dequantizationStructure); deqAfter->set_friendly_name("output"); ngraph::ResultVector results{ std::make_shared(deqAfter) }; diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/depth_to_space_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/depth_to_space_function.cpp index b6e9a229a687e2..7eb37ecef6a397 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/depth_to_space_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/depth_to_space_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/elementwise_with_multi_parent_dequantization_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/elementwise_with_multi_parent_dequantization_function.cpp index ac8613e260ff31..3ad0d8cb9e2de6 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/elementwise_with_multi_parent_dequantization_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/elementwise_with_multi_parent_dequantization_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_convolution_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_convolution_function.cpp index d4587ae2867f49..e588c815f9735f 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_convolution_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_convolution_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -62,6 +62,41 @@ std::shared_ptr FakeQuantizeAndConvolutionFunction::get( const DequantizationOperations& dequantizationOnWeights, const DequantizationOperations& dequantizationAfter, const std::string operation) { + return FakeQuantizeAndConvolutionFunction::get( + precision, + inputShape, + fqOnData, + convertOnData, + dequantizationOnData, + constantOnWeights, + fqOnWeights, + convertOnWeights, + dequantizationOnWeights, + {}, + {}, + {}, + {}, + dequantizationAfter, + operation); +} + +std::shared_ptr FakeQuantizeAndConvolutionFunction::get( + const ngraph::element::Type precision, + const ngraph::Shape& inputShape, + const FakeQuantizeOnDataWithConstant& fqOnData, + const DequantizationOperations::Convert& convertOnData, + const DequantizationOperations& dequantizationOnData, + const Constant& constantOnWeights, + const FakeQuantizeOnWeights& fqOnWeights, + const DequantizationOperations::Convert& convertOnWeights, + const DequantizationOperations& dequantizationOnWeights, + const Reshape& reshape1, + const DequantizationOperations::Multiply& multiply, + const Transpose& transpose, + const Reshape& reshape2, + const DequantizationOperations& dequantizationAfter, + const std::string operation, + bool multiplyAfter) { const auto input = std::make_shared(precision, ngraph::Shape(inputShape)); std::shared_ptr parentOnActivation = input; @@ -83,14 +118,19 @@ std::shared_ptr FakeQuantizeAndConvolutionFunction::get( std::shared_ptr parentOnWeights; { - const size_t inputChannelsCount = inputShape[1]; - const size_t outputChannelsCount = 2 * inputShape[1]; + size_t numGroups = inputShape[1]; + size_t inputChannelsCount = inputShape[1]; + size_t outputChannelsCount = inputShape[1] * 2; + if (operation == "GroupConvolution") { + inputChannelsCount = inputShape[1] / numGroups; + outputChannelsCount = inputShape[1]; + } const Shape shape = constantOnWeights.shapeIsDefined ? constantOnWeights.shape : ngraph::Shape{ outputChannelsCount, inputChannelsCount, 1, 1 }; parentOnWeights = ngraph::opset1::Constant::create( constantOnWeights.outPrecision, shape, constantOnWeights.values.size() != ngraph::shape_size(shape) ? - std::vector(outputChannelsCount * inputChannelsCount, constantOnWeights.values[0]) : + std::vector(ngraph::shape_size(shape), constantOnWeights.values[0]) : constantOnWeights.values); if (!fqOnWeights.empty()) { @@ -106,6 +146,22 @@ std::shared_ptr FakeQuantizeAndConvolutionFunction::get( if (!dequantizationOnWeights.empty()) { parentOnWeights = makeDequantization(parentOnWeights, dequantizationOnWeights); } + + if (!reshape1.empty()) { + parentOnWeights = makeReshape(parentOnWeights, reshape1); + } + + if (!multiply.empty()) { + parentOnWeights = makeMultiply(parentOnWeights, multiply); + } + + if (!transpose.empty()) { + parentOnWeights = makeTranspose(parentOnWeights, transpose); + } + + if (!reshape2.empty()) { + parentOnWeights = makeReshape(parentOnWeights, reshape2); + } } std::shared_ptr lastOperation; @@ -121,7 +177,7 @@ std::shared_ptr FakeQuantizeAndConvolutionFunction::get( std::vector{ element::f32, element::f32 }, std::vector{}); } else if (operation == "GroupConvolution") { - std::make_shared>( + lastOperation = std::make_shared>( ngraph::opset1::GroupConvolution( ngraph::op::TemporaryReplaceOutputType(parentOnActivation, element::f32).get(), ngraph::op::TemporaryReplaceOutputType(parentOnWeights, element::f32).get(), @@ -131,8 +187,14 @@ std::shared_ptr FakeQuantizeAndConvolutionFunction::get( ngraph::Strides{ 1, 1 }), std::vector{ element::f32, element::f32 }, std::vector{}); + if (multiplyAfter) { + const auto& O = lastOperation->get_shape()[1]; + std::vector weights_val(O, 1); + auto constant = op::Constant::create(element::f32, Shape{O, 1, 1}, weights_val); + lastOperation = std::make_shared(lastOperation, constant); + } } else { - THROW_IE_EXCEPTION << "unknown operation type " << operation; + IE_THROW() << "unknown operation type " << operation; } if (!dequantizationAfter.empty()) { diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_two_output_branches_with_convolution_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_two_output_branches_with_convolution_function.cpp index 44d127931dcfbf..650e88b698c732 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_two_output_branches_with_convolution_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_and_two_output_branches_with_convolution_function.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include "lpt_ngraph_functions/common/builders.hpp" #include "lpt_ngraph_functions/fake_quantize_and_two_output_branches_with_convolution_function.hpp" diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_function.cpp index 44dd0e29a0a1b0..050dae69841743 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -69,6 +69,7 @@ std::shared_ptr FakeQuantizeFunction::getReference( updateDequantization.multiply.constantPrecision = element::f32; } + updateDequantization.multiply.outPrecision = precision; std::shared_ptr deq; if (updatePrecisions) { deq = makeDequantization(fakeQuantize, updateDequantization); diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_on_weights_and_unsupported_child_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_on_weights_and_unsupported_child_function.cpp index 80630d0e3a01d8..b6b4a3e8445c38 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_on_weights_and_unsupported_child_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_on_weights_and_unsupported_child_function.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include "lpt_ngraph_functions/common/builders.hpp" #include "lpt_ngraph_functions/fake_quantize_on_weights_and_unsupported_child_function.hpp" diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_precision_selection_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_precision_selection_function.cpp index 47b8833f7715c1..20c71967588250 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_precision_selection_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fake_quantize_precision_selection_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -149,7 +149,7 @@ std::shared_ptr FakeQuantizePrecisionSelectionFunction::getRef std::shared_ptr branch1Multiply = std::make_shared( convolution, - std::make_shared(precision, Shape({1, 1, 1}), std::vector({ 0.0001f }))); + std::make_shared(precision, Shape({1, 1, 1, 1}), std::vector({ 0.0001f }))); // just another branch diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fold_fake_quantize_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fold_fake_quantize_function.cpp index b707d61d6893cf..0258016c104c28 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fold_fake_quantize_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fold_fake_quantize_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_convert_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_convert_function.cpp index f762b2ee318ba8..8d8e1b2ab6756a 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_convert_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_convert_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_and_scale_shift_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_and_scale_shift_function.cpp index d77ebadad1f0ee..6bb28eff007053 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_and_scale_shift_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_and_scale_shift_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_function.cpp index d66c05d6d7fbf8..d833f436a95041 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_fake_quantize_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -78,7 +78,7 @@ std::shared_ptr FuseFakeQuantizeFunction::getOriginal( fqOnDataCopy.outputHighValues = {255.f}; fqOnDataCopy.outputPrecision = ngraph::element::u8; lastNode = makeFakeQuantizeTypeRelaxed(lastDequantization, precisionFqOnData, fqOnDataCopy); - lastNode = makeDequantization(lastNode, {{element::f32}, {}, {0.01f}}); + lastNode = makeDequantization(lastNode, { {element::f32}, {}, {{0.01f}, precisionFqOnData} }); } else { throw std::runtime_error("Unknown parameter on output intervals!"); diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_multiply_to_fake_quantize_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_multiply_to_fake_quantize_function.cpp index d65000b7a38cd9..a95f8e7a0eab5a 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_multiply_to_fake_quantize_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_multiply_to_fake_quantize_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_subtract_to_fake_quantize_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_subtract_to_fake_quantize_function.cpp index 79b1b36726e794..59aec0b11a1fb3 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_subtract_to_fake_quantize_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/fuse_subtract_to_fake_quantize_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/get_dequantization_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/get_dequantization_function.cpp index 7fcf672b7d7757..1d5e452ac99a7b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/get_dequantization_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/get_dequantization_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/group_convolution_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/group_convolution_function.cpp index 97084998177df7..2d7297baa193ed 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/group_convolution_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/group_convolution_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/interpolate_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/interpolate_function.cpp index bc51e941f7c8ab..b59d584f8472f4 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/interpolate_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/interpolate_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_function.cpp index 1f3f6cef6befa0..82f54f048a8892 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -117,6 +117,7 @@ std::shared_ptr MatMulFunction::getOriginal( } std::shared_ptr MatMulFunction::getOriginal( + const element::Type netPrecision, const ngraph::Shape& inputShape1, const ngraph::element::Type precisionBeforeDequantization1, const DequantizationOperations& dequantization1, @@ -137,9 +138,14 @@ std::shared_ptr MatMulFunction::getOriginal( const std::shared_ptr input2 = std::make_shared(precisionBeforeDequantization2, inputShape2); input2->set_friendly_name("input2"); + DequantizationOperations deqSructure1 = dequantization1; + deqSructure1.multiply.outPrecision = netPrecision; + DequantizationOperations deqSructure2 = dequantization2; + deqSructure2.multiply.outPrecision = netPrecision; + const std::shared_ptr matMul = std::make_shared( - makeDequantization(input1, dequantization1), - makeDequantization(input2, dequantization2), + makeDequantization(input1, deqSructure1), + makeDequantization(input2, deqSructure2), false, false); matMul->set_friendly_name("matMul"); @@ -162,39 +168,40 @@ std::shared_ptr MatMulFunction::getOriginal( const ngraph::element::Type precision, const ngraph::Shape& inputShape, const ngraph::element::Type precisionBeforeDequantization, - const DequantizationOperations& dequantizationOperations, - const ngraph::Shape& weightsConstShape, - const std::vector& weightsConstValues, - const FakeQuantizeOnWeights& fqOnWeights) { + const DequantizationOperations& deqOnData, + const Constant& weights, + const FakeQuantizeOnWeights& fqOnWeights, + const DequantizationOperations& deqOnWeights) { const std::shared_ptr input = std::make_shared( precisionBeforeDequantization, inputShape); input->set_friendly_name("input1"); - auto lastDequantization = makeDequantization(input, dequantizationOperations); + const auto dequantizationOnData = makeDequantization(input, deqOnData); - const std::shared_ptr weightsConst = std::make_shared( - precision, - weightsConstShape, - weightsConstValues); + const std::shared_ptr weightsConst = std::make_shared( + weights.outPrecision, + weights.shape, + weights.values); - auto fakeQuantize = makeFakeQuantize(weightsConst, precision, fqOnWeights); + const std::shared_ptr fakeQuantize = fqOnWeights.empty() ? nullptr : makeFakeQuantize(weightsConst, precision, fqOnWeights); + const auto dequantizationOnWeights = makeDequantization(fakeQuantize == nullptr ? weightsConst : fakeQuantize, deqOnWeights); - const std::shared_ptr matMul = std::make_shared( - lastDequantization, - fakeQuantize, + const auto matMul = std::make_shared( + dequantizationOnData, + dequantizationOnWeights, false, false); matMul->set_friendly_name("matMul"); auto& rtInfo = matMul->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("matMul"); - std::shared_ptr result = std::make_shared(matMul); - + const auto result = std::make_shared(matMul); std::shared_ptr function = std::make_shared( ngraph::ResultVector{ result }, std::vector> { input }, "MatMulTransformation"); + return function; } @@ -221,19 +228,25 @@ std::shared_ptr MatMulFunction::getReference( const std::shared_ptr input2 = std::make_shared(precisionBeforeDequantization2, inputShape2); input2->set_friendly_name("input2"); - auto dequantization1Op = makeDequantization(input1, dequantization1); - auto dequantization2Op = makeDequantization(input2, dequantization2); + DequantizationOperations deqSructure1 = dequantization1; + deqSructure1.multiply.outPrecision = precision; + DequantizationOperations deqSructure2 = dequantization2; + deqSructure2.multiply.outPrecision = precision; + + auto dequantization1Op = makeDequantization(input1, deqSructure1); + auto dequantization2Op = makeDequantization(input2, deqSructure2); std::shared_ptr matMul = std::make_shared>( - std::vector{ element::f32, element::f32 }, std::vector{}, + std::vector{ element::f32, element::f32 }, std::vector{ element::f32 }, ngraph::op::TemporaryReplaceOutputType(dequantization1Op, element::f32).get(), ngraph::op::TemporaryReplaceOutputType(dequantization2Op, element::f32).get(), false, false); matMul->set_friendly_name("matMul"); - ngraph::pass::low_precision::NetworkHelper::setOutDataPrecision(matMul, precision); - auto dequantizationAfter = makeDequantization(matMul, resultDequantizationOperations); + DequantizationOperations deqSructureAfter = resultDequantizationOperations; + deqSructureAfter.multiply.outPrecision = precision; + auto dequantizationAfter = makeDequantization(matMul, deqSructureAfter); dequantizationAfter->set_friendly_name("matMul"); std::shared_ptr result = std::make_shared(dequantizationAfter); @@ -250,9 +263,7 @@ std::shared_ptr MatMulFunction::getReference( const ngraph::Shape& inputShape, const ngraph::element::Type precisionBeforeDequantization, const DequantizationOperations& dequantization, - const ngraph::element::Type weightsConstPrecision, - const ngraph::Shape& weightsConstShape, - const std::vector& weightsConstValues, + const Constant& weights, const DequantizationOperations& resultDequantization) { const std::shared_ptr input = std::make_shared( precisionBeforeDequantization, @@ -262,9 +273,9 @@ std::shared_ptr MatMulFunction::getReference( const std::shared_ptr lastDequantizationBefore = makeDequantization(input, dequantization); const std::shared_ptr weightsConst = std::make_shared( - weightsConstPrecision, - weightsConstShape, - weightsConstValues); + weights.outPrecision, + weights.shape, + weights.values); const std::shared_ptr matMul = std::make_shared>( std::vector{ element::f32, element::f32 }, std::vector{}, @@ -293,36 +304,37 @@ std::shared_ptr MatMulFunction::getOriginal( const ngraph::element::Type precision, const ngraph::Shape& inputShape, const FakeQuantizeOnDataWithConstant& fqOnData, - const ngraph::Shape& weightsConstShape, - const std::vector& weightsConstValues, - const FakeQuantizeOnDataWithConstant& fqOnWeights) { - const std::shared_ptr input = std::make_shared( - precision, - inputShape); + const Constant& weights, + const FakeQuantizeOnDataWithConstant& fqOnWeights, + const DequantizationOperations& deqOnWeights) { + const auto input = std::make_shared(precision, inputShape); input->set_friendly_name("input1"); - auto lastDequantization = makeFakeQuantize(input, precision, fqOnData); + const auto dequantizationOnData = makeFakeQuantize(input, precision, fqOnData); - const std::shared_ptr weightsConst = std::make_shared( - precision, - weightsConstShape, - weightsConstValues); + const std::shared_ptr weightsConst = std::make_shared( + weights.outPrecision, + weights.shape, + weights.values); - auto fakeQuantize = makeFakeQuantize(weightsConst, precision, fqOnWeights); + const std::shared_ptr fakeQuantize = fqOnWeights.empty() ? nullptr : makeFakeQuantize(weightsConst, precision, fqOnWeights); + const auto dequantizationOnWeights = makeDequantization(fakeQuantize == nullptr ? weightsConst : fakeQuantize, deqOnWeights); const std::shared_ptr matMul = std::make_shared( - lastDequantization, - fakeQuantize, + dequantizationOnData, + dequantizationOnWeights, false, true); matMul->set_friendly_name("matMul"); - std::shared_ptr result = std::make_shared(matMul); + const std::shared_ptr result = std::make_shared(matMul); + result->set_friendly_name("result"); std::shared_ptr function = std::make_shared( ngraph::ResultVector{ result }, std::vector> { input }, "MatMulTransformation"); + return function; } diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_with_optimized_constant_fake_quantize_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_with_optimized_constant_fake_quantize_function.cpp index 26da1586d93d7a..066eeb8226bfc9 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_with_optimized_constant_fake_quantize_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mat_mul_with_optimized_constant_fake_quantize_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/max_pool_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/max_pool_function.cpp index ab2b7dfa479532..593e0b1d34a941 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/max_pool_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/max_pool_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/move_dequantization_after_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/move_dequantization_after_function.cpp index 0d9f86cbcfa804..3714287294f7a3 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/move_dequantization_after_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/move_dequantization_after_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/move_dequantization_after_with_int_constant_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/move_dequantization_after_with_int_constant_function.cpp deleted file mode 100644 index 618368377533d7..00000000000000 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/move_dequantization_after_with_int_constant_function.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (C) 2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "lpt_ngraph_functions/move_dequantization_after_with_int_constant_function.hpp" -#include "low_precision/network_helper.hpp" - -#include -#include "ngraph_functions/subgraph_builders.hpp" -#include "lpt_ngraph_functions/common/builders.hpp" - -using namespace ngraph::pass::low_precision; - -namespace ngraph { -namespace builder { -namespace subgraph { - std::shared_ptr MoveDequantizationAfterWithIntConstantFunction::getOriginal( - const ngraph::element::Type precision, - const ngraph::Shape& inputShape, - const ngraph::builder::subgraph::DequantizationOperations dequantization) { - const auto input = std::make_shared(precision, inputShape); - - const auto deq = makeDequantization(input, dequantization); - const auto avgPool = std::make_shared>( - ngraph::opset1::AvgPool( - deq, - Strides{ 1, 1 }, - Shape{ 1, 1 }, - Shape{ 0, 0 }, - Shape{ 2, 2 }, - true, - op::RoundingType::FLOOR), - std::vector{ element::f32, element::f32 }, - std::vector{}); - - auto& rtInfo = avgPool->get_rt_info(); - rtInfo["Variant::std::string"] = std::make_shared>("targetOp"); - - return std::make_shared( - ngraph::ResultVector{ std::make_shared(avgPool) }, - ngraph::ParameterVector{ input }, - "MoveDequantizationAfterFunction"); - } - - std::shared_ptr MoveDequantizationAfterWithIntConstantFunction::getReference( - const ngraph::element::Type precision, - const ngraph::Shape& inputShape, - const ngraph::builder::subgraph::DequantizationOperations dequantizationBefore, - const ngraph::element::Type precisionAfterOperation, - const ngraph::builder::subgraph::DequantizationOperations dequantizationAfter) { - const auto input = std::make_shared(precision, inputShape); - - const auto deqBefore = makeDequantization(input, dequantizationBefore); - const auto targetOp = std::make_shared>( - ngraph::opset1::AvgPool( - deqBefore, - Strides{ 1, 1 }, - Shape{ 1, 1 }, - Shape{ 0, 0 }, - Shape{ 2, 2 }, - true, - op::RoundingType::FLOOR), - std::vector{ element::f32, element::f32 }, - std::vector{}); - ngraph::pass::low_precision::NetworkHelper::setOutDataPrecisionForTypeRelaxed(targetOp, precisionAfterOperation); - auto& rtInfo = targetOp->get_rt_info(); - rtInfo["Variant::std::string"] = std::make_shared>("targetOp"); - - const auto deqAfter = makeDequantization(targetOp, dequantizationAfter); - - return std::make_shared( - ngraph::ResultVector{ std::make_shared(deqAfter) }, - ngraph::ParameterVector{ input }, - "MoveDequantizationAfterFunction"); - } - -} // namespace subgraph -} // namespace builder -} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mul_add_to_scaleshift_or_power_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mul_add_to_scaleshift_or_power_function.cpp index 967abde394df66..52946be7c46500 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mul_add_to_scaleshift_or_power_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mul_add_to_scaleshift_or_power_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_function.cpp index 5b0dfe8491817d..e53ad144ef99a4 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -51,8 +51,16 @@ BranchNodes getBranch(const MultiplyBranch& branch) { } std::shared_ptr MultiplyFunction::get( + const element::Type precision, const ngraph::Shape& inputShape, const MultiplyValues& actualValues) { + auto branch1Structure = actualValues.branch1; + branch1Structure.precisionBeforeDequantization = precision; + branch1Structure.dequantization.multiply.outPrecision = precision; + auto branch2Structure = actualValues.branch2; + branch2Structure.precisionBeforeDequantization = precision; + branch2Structure.dequantization.multiply.outPrecision = precision; + const BranchNodes branchNodes1 = getBranch(actualValues.branch1); const BranchNodes branchNodes2 = getBranch(actualValues.branch2); @@ -67,7 +75,7 @@ std::shared_ptr MultiplyFunction::get( const std::shared_ptr multiply = std::make_shared>( multiplyOriginal, std::vector{element::f32, element::f32}, - std::vector{}); + std::vector{precision}); auto& rtInfo = multiply->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("multiply"); multiply->set_friendly_name("output"); diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_to_group_convolution_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_to_group_convolution_function.cpp index 2213ad2f0684de..45db397381b7c6 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_to_group_convolution_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_to_group_convolution_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_with_one_parent_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_with_one_parent_function.cpp index a29e007ecdf5cb..f23b0e6d66f80d 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_with_one_parent_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/multiply_with_one_parent_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mvn_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mvn_function.cpp index d5c0bbffc0698c..115135da98db40 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mvn_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/mvn_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,17 +13,30 @@ namespace builder { namespace subgraph { std::shared_ptr MVNFunction::getOriginal( + const element::Type precision, const ngraph::Shape& inputShape, const AxisSet& reductionAxes, const bool& normalizeVariance, const ngraph::element::Type precisionBeforeDequantization, - const ngraph::builder::subgraph::DequantizationOperations& dequantization) { + const ngraph::builder::subgraph::DequantizationOperations& dequantization, + const int opset_version) { const std::shared_ptr input = std::make_shared( precisionBeforeDequantization, ngraph::Shape(inputShape)); - - const auto dequantizationOp = makeDequantization(input, dequantization); - const auto mvn = std::make_shared(dequantizationOp, reductionAxes, normalizeVariance); + auto deqStructure = dequantization; + deqStructure.multiply.outPrecision = precision; + const auto dequantizationOp = makeDequantization(input, deqStructure); + std::shared_ptr mvn; + if (opset_version == 2) { + mvn = std::make_shared(dequantizationOp, reductionAxes, normalizeVariance); + } else if (opset_version == 6) { + mvn = std::make_shared( + dequantizationOp, + std::make_shared(element::i64, Shape{reductionAxes.size()}, reductionAxes.to_vector()), + normalizeVariance, + 1e-9, + op::MVNEpsMode::INSIDE_SQRT); + } mvn->set_friendly_name("output"); auto& rtInfo = mvn->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("mvn"); @@ -50,24 +63,41 @@ std::shared_ptr MVNFunction::getOriginal( } std::shared_ptr MVNFunction::getReference( + const element::Type precision, const ngraph::Shape& inputShape, const AxisSet& reductionAxes, const bool& normalizeVariance, const ngraph::element::Type precisionBeforeDequantization, const ngraph::builder::subgraph::DequantizationOperations& dequantizationBefore, const ngraph::element::Type precisionAfterOperation, - const ngraph::builder::subgraph::DequantizationOperations& dequantizationAfter) { + const ngraph::builder::subgraph::DequantizationOperations& dequantizationAfter, + const int opset_version) { const std::shared_ptr input = std::make_shared( precisionBeforeDequantization, ngraph::Shape(inputShape)); - - const std::shared_ptr dequantizationOpBefore = makeDequantization(input, dequantizationBefore); - const auto mvn = std::make_shared>( - op::MVN(dequantizationOpBefore, reductionAxes, normalizeVariance), precisionAfterOperation); + auto deqBeforeStructure = dequantizationBefore; + deqBeforeStructure.multiply.outPrecision = precision; + const std::shared_ptr dequantizationOpBefore = makeDequantization(input, deqBeforeStructure); + std::shared_ptr mvn; + if (opset_version == 2) { + mvn = std::make_shared>( + op::MVN(dequantizationOpBefore, reductionAxes, normalizeVariance), + dequantizationAfter.empty() ? precision : element::f32); + } else if (opset_version == 6) { + mvn = std::make_shared>( + opset6::MVN(dequantizationOpBefore, + std::make_shared(element::i64, Shape{reductionAxes.size()}, reductionAxes.to_vector()), + normalizeVariance, + 1e-9, + op::MVNEpsMode::INSIDE_SQRT), + dequantizationAfter.empty() ? precision : element::f32); + } auto& rtInfo = mvn->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("mvn"); - const std::shared_ptr dequantizationOpAfter = makeDequantization(mvn, dequantizationAfter); + auto deqAfterStructure = dequantizationAfter; + deqAfterStructure.multiply.outPrecision = precision; + const std::shared_ptr dequantizationOpAfter = makeDequantization(mvn, deqAfterStructure); dequantizationOpAfter->set_friendly_name("output"); ngraph::ResultVector results{ std::make_shared(dequantizationOpAfter) }; diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_dequantization_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_dequantization_function.cpp index 2fd50a45ec60e6..343bb6da0d51a4 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_dequantization_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_dequantization_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_l2_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_l2_function.cpp index e02f51575a43ce..553ec6575ec5cd 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_l2_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/normalize_l2_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -60,14 +60,18 @@ std::shared_ptr NormalizeL2Function::getOriginal( } std::shared_ptr NormalizeL2Function::getOriginal( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& shape, const ngraph::op::EpsMode& epsMode, const std::vector& axes, const ngraph::builder::subgraph::DequantizationOperations& dequantization) { - const auto input = std::make_shared(inputPrecision, shape); - const auto deq = makeDequantization(input, dequantization); + const auto input = std::make_shared(inputPrecision.is_real() ? precision : inputPrecision, shape); + + auto deqStructure = dequantization; + deqStructure.multiply.outPrecision = precision; + const auto deq = makeDequantization(input, deqStructure); const auto axesNode = std::make_shared(ngraph::element::i64, ngraph::Shape{ axes.size() }, axes); const auto normalizeL2 = std::make_shared(deq, axesNode, 1e-6, epsMode); @@ -81,6 +85,7 @@ std::shared_ptr NormalizeL2Function::getOriginal( } std::shared_ptr NormalizeL2Function::getReference( + const ngraph::element::Type precision, const ngraph::element::Type inputPrecision, const ngraph::Shape& shape, const ngraph::op::EpsMode& epsMode, @@ -88,22 +93,29 @@ std::shared_ptr NormalizeL2Function::getReference( const ngraph::builder::subgraph::DequantizationOperations& dequantizationBefore, const ngraph::element::Type precisionAfterOperation, const ngraph::builder::subgraph::DequantizationOperations& dequantizationAfter) { - const auto input = std::make_shared(inputPrecision, shape); + const auto input = std::make_shared(inputPrecision.is_real() ? precision : inputPrecision, shape); + + auto deqBeforeStructure = dequantizationBefore; + if (dequantizationAfter.empty()) { + deqBeforeStructure.multiply.outPrecision = precision; + } - const auto deqBefore = makeDequantization(input, dequantizationBefore); + const auto deqBefore = makeDequantization(input, deqBeforeStructure); const auto axesNode = std::make_shared(ngraph::element::i64, ngraph::Shape{ axes.size() }, axes); const auto normalizeL2 = std::make_shared>( - std::vector{ element::f32, element::f32 }, std::vector{element::f32}, + std::vector{ element::f32, element::f32 }, + std::vector{dequantizationAfter.empty() ? precision : element::f32}, ngraph::op::TemporaryReplaceOutputType(deqBefore, element::f32).get(), ngraph::op::TemporaryReplaceOutputType(axesNode, element::f32).get(), 1e-6, epsMode); auto& rtInfo = normalizeL2->get_rt_info(); rtInfo["Variant::std::string"] = std::make_shared>("normalizeL2"); - ngraph::pass::low_precision::NetworkHelper::setOutDataPrecisionForTypeRelaxed(normalizeL2, precisionAfterOperation); - const auto deqAfter = makeDequantization(normalizeL2, dequantizationAfter); + auto deqAfterStructure = dequantizationAfter; + deqAfterStructure.multiply.outPrecision = precision; + const auto deqAfter = makeDequantization(normalizeL2, deqAfterStructure); deqAfter->set_friendly_name("output"); diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/precomp.hpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/precomp.hpp index eebe470d7f0b62..b604a638d7d07b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/precomp.hpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/prelu_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/prelu_function.cpp index 2ee4055b960819..ba79f5d12e9b9e 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/prelu_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/prelu_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/relu_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/relu_function.cpp index a0fb6c7639913f..711ed232d69a81 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/relu_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/relu_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_fully_connected_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_fully_connected_function.cpp index 78d291ef9f6004..72424d4cbee0d4 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_fully_connected_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_fully_connected_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_function.cpp index 39c7e9f9f844a7..15dc957f0baddb 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/reshape_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/round_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/round_function.cpp index 394de7dbaf2151..c102110db87130 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/round_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/round_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/split_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/split_function.cpp index dcb574c3aa84ce..6820572c302138 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/split_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/split_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/squeeze_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/squeeze_function.cpp index 3680a551d0be37..2969ed5c39f720 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/squeeze_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/squeeze_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/strided_slice_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/strided_slice_function.cpp index 52dee1a258dd38..d62d024b85cf8b 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/strided_slice_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/strided_slice_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_function.cpp index 835f1b87c6fda5..c90d774a042d81 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_multiply_to_multiply_add_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_multiply_to_multiply_add_function.cpp index 7668447a3a334b..7a5e91b2f04ea3 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_multiply_to_multiply_add_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/subtract_multiply_to_multiply_add_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transformations_after_split_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transformations_after_split_function.cpp new file mode 100644 index 00000000000000..e7ccd1f65989aa --- /dev/null +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transformations_after_split_function.cpp @@ -0,0 +1,187 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "lpt_ngraph_functions/transformations_after_split_function.hpp" + +#include + +#include + +#include "lpt_ngraph_functions/common/fake_quantize_on_data.hpp" +#include "lpt_ngraph_functions/common/dequantization_operations.hpp" +#include "lpt_ngraph_functions/common/builders.hpp" + +namespace ngraph { +namespace builder { +namespace subgraph { + +std::shared_ptr TransformationsAfterSplitFunction::get(const std::string transformationName) { + const auto input = std::make_shared(element::u8, Shape{ 1, 3, 16, 16 }); + const size_t outputSize = 2ul; + + const auto axis = opset1::Constant::create(element::i64, Shape{}, { 2 }); + const auto splitLength = opset1::Constant::create(element::i64, Shape{ outputSize }, { 8, 8 }); + const auto variadicSplit = std::make_shared(input, axis, splitLength); + + ResultVector results; + for (size_t i = 0; i < outputSize; ++i) { + const auto additionalLayer = getLayerByTransformationName(transformationName, variadicSplit->output(i)); + results.push_back(std::make_shared(additionalLayer)); + } + + const auto function = std::make_shared( + results, + ngraph::ParameterVector{ input }, + "VariadicSplitAndAdditionalLayerTransformation"); + + return function; +} + +std::shared_ptr TransformationsAfterSplitFunction::getLayerByTransformationName( + const std::string transformationName, + const Output parent) { + if (transformationName == "AddTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto addConstant = opset1::Constant::create(element::f32, Shape{}, { 128.f }); + return std::make_shared(dequantization, addConstant); + } + if (transformationName == "AvgPoolTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + return std::make_shared( + dequantization, + Strides{ 1, 1 }, + Shape{ 1, 1 }, + Shape{ 0, 0 }, + Shape{ 2, 2 }, + true, + op::RoundingType::FLOOR); + } + if (transformationName == "ClampTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + return std::make_shared(dequantization, 0.0, 6.0); + } + if (transformationName == "ConvolutionTransformation") { + const auto dequantizationOnData = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto weights = opset1::Constant::create(element::i8, Shape{ 3, 3, 1, 1 }, { 2 }); + const auto dequantizationOnWeights = makeDequantization(weights, { {element::f32}, {}, {0.3f} }); + return std::make_shared( + dequantizationOnData, + dequantizationOnWeights, + Strides{ 1, 1 }, + CoordinateDiff{ 0, 0 }, + CoordinateDiff{ 0, 0 }, + Strides{ 1, 1 }); + } + if (transformationName == "DepthToSpaceTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + return std::make_shared(dequantization, opset1::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST, 3); + } + if (transformationName == "FakeQuantizeTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + return makeFakeQuantize(dequantization, element::f32, { 256, Shape{}, { 0.f }, { 255.f }, { 0.f }, { 127.f } }); + } + if (transformationName == "InterpolateTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto outShape = opset1::Constant::create(element::i64, Shape{ 4 }, { 1, 4, 32, 32 }); + + op::v0::InterpolateAttrs attributes; + attributes.axes = AxisSet{ 2, 3 }; + attributes.mode = "nearest"; + attributes.align_corners = false; + attributes.antialias = false; + attributes.pads_begin = std::vector{ 0ul }; + attributes.pads_end = std::vector{ 0ul }; + + return std::make_shared(dequantization, outShape, attributes); + } + if (transformationName == "MatMulTransformation") { + const auto dequantizationOnData = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto weights = opset1::Constant::create(element::i8, Shape{ 16, 16 }, { 2 }); + const auto dequantizationOnWeights = makeDequantization(weights, { {element::f32}, {}, { 0.3f } }); + return std::make_shared(dequantizationOnData, dequantizationOnWeights); + } + if (transformationName == "MaxPoolTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + return std::make_shared( + dequantization, + Strides{ 1, 1 }, + Shape{ 1, 1 }, + Shape{ 0, 0 }, + Shape{ 2, 2 }); + } + if (transformationName == "MultiplyTransformation") { + const auto dequantization = makeDequantization(parent, { {}, {}, {{ 2.f }, element::f32, {}} }); + return makeDequantization(dequantization, { {}, {}, { 0.2f } }); + } + if (transformationName == "MVNTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + return std::make_shared(dequantization, AxisSet{ 2, 3 }); + } + if (transformationName == "NormalizeL2Transformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto axesNode = opset1::Constant::create(element::u64, ngraph::Shape{ 3 }, { 1, 2, 3 }); + return std::make_shared(dequantization, axesNode, 1e-6, ngraph::op::EpsMode::ADD); + } + if (transformationName == "PReluTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto slope = std::make_shared(element::f32, Shape{}, std::vector { 0.1f }); + return std::make_shared(dequantization, slope); + } + if (transformationName == "ReluTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + return std::make_shared(dequantization); + } + if (transformationName == "ReshapeTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto reshapeConst = opset1::Constant::create(element::i64, ngraph::Shape{ 3 }, { 1, 3, -1 }); + return std::make_shared(dequantization, reshapeConst, false); + } + if (transformationName == "SqueezeTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto squeezeConst = opset1::Constant::create(element::i64, ngraph::Shape{ 1 }, { 0 }); + return std::make_shared(dequantization, squeezeConst); + } + if (transformationName == "StridedSliceTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + + std::vector mask{ 1, 0, 1, 1 }; + const auto beginParam = opset1::Constant::create(element::i64, Shape{ 4 }, { 0, 0, 0, 0 }); + const auto endParam = opset1::Constant::create(element::i64, Shape{ 4 }, { 1, 2, 1, 1 }); + const auto stridesParam = opset1::Constant::create(element::i64, Shape{ 4 }, { 1, 1, 1, 1 }); + + return std::make_shared(dequantization, beginParam, endParam, stridesParam, mask, mask); + } + if (transformationName == "TransposeTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto transposeConstant = opset1::Constant::create(element::i64, Shape{ 4 }, { 0, 1, 3, 2 }); + return std::make_shared(dequantization, transposeConstant); + } + if (transformationName == "UnsqueezeTransformation") { + const auto dequantization = makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + const auto unsqueezeConst = opset1::Constant::create(element::i64, ngraph::Shape{ 1 }, { 0 }); + return std::make_shared(dequantization, unsqueezeConst); + } + if (transformationName == "FuseConvertTransformation") { + return makeDequantization(parent, { {element::f32}, {}, { 0.1f } }); + } + if (transformationName == "FuseSubtractToFakeQuantizeTransformation") { + const auto fakeQuantize = makeFakeQuantize(parent, element::f32, { 256, Shape{}, { 0.f }, { 255.f }, { 0.f }, { 127.f } }); + return makeDequantization(fakeQuantize, { {}, {{ 128.f }, element::f32, {}}, {} }); + } + if (transformationName == "FuseMultiplyToFakeQuantizeTransformation") { + const auto fakeQuantize = makeFakeQuantize(parent, element::f32, { 256, Shape{}, { 0.f }, { 255.f }, { 0.f }, { 127.f } }); + return makeDequantization(fakeQuantize, { {}, {}, {{ 2.f }, element::f32, {}} }); + } + if (transformationName == "MultiplyToGroupConvolutionTransformation") { + return makeDequantization(parent, { {}, {{ 128.f }, element::f32, {}}, { 2.f } }); + } + if (transformationName == "SubtractMultiplyToMultiplyAddTransformation") { + return makeDequantization(parent, { {}, {{ 128.f }, element::f32, {}}, { 2.f } }); + } + throw std::runtime_error("unexpected additional layer name"); +} + +} // namespace subgraph +} // namespace builder +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_after_mat_mul_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_after_mat_mul_function.cpp index 6f0a85a2cbc9be..4e698c7908b9c7 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_after_mat_mul_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_after_mat_mul_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_function.cpp index 9542ba1113729a..e15d23b983c1fc 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/transpose_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/unsqueeze_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/unsqueeze_function.cpp index f3528d5fb90666..061907120d1c65 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/unsqueeze_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/unsqueeze_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/variadic_split_function.cpp b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/variadic_split_function.cpp index 7f47115f55cbb2..739dd82100c4ab 100644 --- a/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/variadic_split_function.cpp +++ b/inference-engine/tests/ngraph_helpers/lpt_ngraph_functions/src/variadic_split_function.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/CMakeLists.txt b/inference-engine/tests/ngraph_helpers/ngraph_functions/CMakeLists.txt index 260aaa213bfdd3..4a0a331a02c932 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/CMakeLists.txt +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/builders.hpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/builders.hpp index 55e136fc3f0c45..b76b1561dbf875 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/builders.hpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/builders.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/pass/convert_prc.hpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/pass/convert_prc.hpp index b9861492868e13..fe630b104e5a8e 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/pass/convert_prc.hpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/pass/convert_prc.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/subgraph_builders.hpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/subgraph_builders.hpp index f4e10694cc98af..7177d7954e62a4 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/subgraph_builders.hpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/subgraph_builders.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -122,12 +122,12 @@ inline std::shared_ptr makeSplitMultiConvConcat(std::vector makeTIwithLSTMcell(ngraph::element::Type_t ngPRC = ngraph::element::Type_t::f32) { - // That which we iterate over - const size_t N = 32; // Batch size - const size_t L = 10; // Sequence length - const size_t I = 8; // Input size - const size_t H = 32; // Hidden size +inline std::shared_ptr makeTIwithLSTMcell( + ngraph::element::Type_t ngPRC = ngraph::element::Type_t::f32, + size_t N = 32, // Batch size + size_t L = 10, // Sequence length + size_t I = 8, // Input size + size_t H = 32) { // Hidden size auto SENT = std::make_shared(ngPRC, ngraph::Shape{N, L, I}); auto H_init = std::make_shared(ngPRC, ngraph::Shape{N, 1, H}); diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/data_utils.hpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/data_utils.hpp index 5105e97895f42b..8c53df8c0c7a57 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/data_utils.hpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/data_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp index 4430441a8ce750..f5c1dc79653d72 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporationconvert2OutputVector +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -131,7 +131,8 @@ enum EltwiseTypes { SQUARED_DIFF, POWER, FLOOR_MOD, - MOD + MOD, + ERF }; enum ComparisonTypes { @@ -198,6 +199,8 @@ enum class TensorIteratorBody { enum class SequenceTestsMode { PURE_SEQ, + PURE_SEQ_RAND_SEQ_LEN_CONST, + PURE_SEQ_RAND_SEQ_LEN_PARAM, CONVERT_TO_TI_MAX_SEQ_LEN_CONST, CONVERT_TO_TI_MAX_SEQ_LEN_PARAM, CONVERT_TO_TI_RAND_SEQ_LEN_CONST, diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/activation.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/activation.cpp index ee0add014b90c4..7737b299b48cec 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/activation.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/activation.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_norm.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_norm.cpp index d45972b82719bb..01c01306cea912 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_norm.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_norm.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_to_space.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_to_space.cpp index 6157df3c25e9a7..59f23e654b9dcf 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_to_space.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/batch_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/binary_convolution.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/binary_convolution.cpp index 12e04d17ac4c50..eaaada3da2eb46 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/binary_convolution.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/binary_convolution.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/broadcast.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/broadcast.cpp index 5da37fe8211ae9..5e825ec369a5d9 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/broadcast.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/broadcast.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/comparison.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/comparison.cpp index 25497b87bf080e..892601c625d6dc 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/comparison.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/comparison.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/concat.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/concat.cpp index df5c652ccfebe5..7021d664e35bed 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/concat.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/concat.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution.cpp index 34abb815ac043d..43ca5522cf8782 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include @@ -32,7 +31,7 @@ std::shared_ptr makeConvolution(const ngraph::Output &in, autoPad); if (addBiases) { bool randomBiases = biasesWeights.empty(); - auto biasesWeightsNode = makeConstant(type, {}, biasesWeights, randomBiases); + auto biasesWeightsNode = makeConstant(type, {1, numOutChannels , 1, 1}, biasesWeights, randomBiases); auto add = std::make_shared(conv, biasesWeightsNode); return add; } else { @@ -41,4 +40,4 @@ std::shared_ptr makeConvolution(const ngraph::Output &in, } } // namespace builder -} // namespace ngraph \ No newline at end of file +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution_backprop_data.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution_backprop_data.cpp index dd0bdf82994b1b..0edf339ce7f3da 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution_backprop_data.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/convolution_backprop_data.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder.cpp index fd9ff69a17d022..b9122eb858dfa7 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder_seq_len.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder_seq_len.cpp index 7d2ef255262a4f..4b7ba3b399fd82 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder_seq_len.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_greedy_decoder_seq_len.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_loss.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_loss.cpp index 15f6363f5eb216..30df88bfce9955 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_loss.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/ctc_loss.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/cum_sum.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/cum_sum.cpp index 3ac47f2ac16cbf..bb57cc89dbca32 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/cum_sum.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/cum_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/depth_to_space.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/depth_to_space.cpp index f7e41d3179ad38..c385f1ddfbab12 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/depth_to_space.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/depth_to_space.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/detection_output.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/detection_output.cpp index 27c18081d6380e..3999b43c8a2a3e 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/detection_output.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/detection_output.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/eltwise.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/eltwise.cpp index 1ed66932bee902..edd9c5f0d045dd 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/eltwise.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/eltwise.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include #include #include "ngraph_functions/utils/ngraph_helpers.hpp" @@ -31,6 +30,8 @@ std::shared_ptr makeEltwise(const ngraph::Output &in0, return std::make_shared(in0, in1); case ngraph::helpers::EltwiseTypes::MOD: return std::make_shared(in0, in1); + case ngraph::helpers::EltwiseTypes::ERF: + return std::make_shared(in0); default: { throw std::runtime_error("Incorrect type of Eltwise operation"); } @@ -38,4 +39,4 @@ std::shared_ptr makeEltwise(const ngraph::Output &in0, } } // namespace builder -} // namespace ngraph \ No newline at end of file +} // namespace ngraph diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_offsets_sum.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_offsets_sum.cpp index 9e20e2566e3209..992c43a69e9ebe 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_offsets_sum.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_offsets_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_packed_sum.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_packed_sum.cpp index 6f29508cf1242e..5cd747dfbd5410 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_packed_sum.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_bag_packed_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_segments_sum.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_segments_sum.cpp index 403fb6ff8f9f7a..b7d53192a1d7c5 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_segments_sum.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/embedding_segments_sum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fake_quantize.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fake_quantize.cpp index 13e687de845130..d8351a4bd56987 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fake_quantize.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fake_quantize.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fully_connected.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fully_connected.cpp index 59a241bb7e8dac..1702683ce2899b 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fully_connected.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/fully_connected.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_elements.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_elements.cpp index 92c88651e55ff6..5246e10c58698b 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_elements.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_elements.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_nd.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_nd.cpp index 63222332cc4ada..dc3e95353dd0e5 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_nd.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gather_nd.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution.cpp index 27da6700d946d2..07df7d0f481e29 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution_backprop_data.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution_backprop_data.cpp index 74cce51596ef91..fe5e6706749a62 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution_backprop_data.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/group_convolution_backprop_data.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gru_cell.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gru_cell.cpp index 1b69aaa5d35e4d..6c36cbfe453c44 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gru_cell.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/gru_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -38,7 +38,8 @@ std::shared_ptr makeGRU(const OutputVector& in, seq_lengths = ngraph::builder::makeConstant(element::i64, constants[3], lengths, false); break; } - case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST: { + case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST: + case ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST: { for (size_t i = 0; i <= in[0].get_shape().at(0); ++i) { std::vector lengths; seq_lengths = ngraph::builder::makeConstant(element::i64, constants[3], lengths, true, @@ -47,7 +48,8 @@ std::shared_ptr makeGRU(const OutputVector& in, break; } case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM: - case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM: { + case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM: + case ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM: { // Seq_lengths should be as a Parameter node for these two modes seq_lengths = in.at(2).get_node_shared_ptr(); break; diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/input_layer.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/input_layer.cpp index a09e46b6d23308..117c8719ab9ec1 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/input_layer.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/input_layer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/logical.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/logical.cpp index 95c47f054742bb..e21be58f158cd1 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/logical.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/logical.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/lstm_cell.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/lstm_cell.cpp index 4053563f380375..4c136086b68030 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/lstm_cell.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/lstm_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,7 +36,8 @@ std::shared_ptr makeLSTM(const std::vector>& seq_lengths = ngraph::builder::makeConstant(element::i64, constants[3], lengths, false); break; } - case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST: { + case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST: + case ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST: { for (size_t i = 0; i <= in[0].get_shape().at(0); ++i) { std::vector lengths; seq_lengths = ngraph::builder::makeConstant(element::i64, constants[3], lengths, true, @@ -44,6 +45,7 @@ std::shared_ptr makeLSTM(const std::vector>& } break; } + case ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM: case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM: case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM: { // Seq_lengths should be as a Parameter node for these two modes diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mat_mul.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mat_mul.cpp index 62f6dcdd94ca4b..52bcb041cfe1d1 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mat_mul.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mat_mul.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/minimum_maximum.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/minimum_maximum.cpp index 22d7166e4941ec..a486bc188f0fa5 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/minimum_maximum.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/minimum_maximum.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mvn.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mvn.cpp index f0a9017ea75b24..ab65a06c179c34 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mvn.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/mvn.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/non_max_suppression.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/non_max_suppression.cpp index d4aa3c7b4f7d1c..0da8294e254821 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/non_max_suppression.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/non_max_suppression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/normalize_l2.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/normalize_l2.cpp index 38c4c4a021eceb..2d9266d8def8e2 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/normalize_l2.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/normalize_l2.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/one_hot.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/one_hot.cpp index fad455c80789cd..0e92eb27c0e718 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/one_hot.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/one_hot.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pad.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pad.cpp index 89a6469cfec042..9493ac15d28ec3 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pad.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pad.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/params_vector.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/params_vector.cpp index ba7ef1e75b898a..a62deb9f466db4 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/params_vector.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/params_vector.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pooling.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pooling.cpp index c79b85dfe4aa8d..b486ab8e1febf5 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pooling.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/pooling.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/precomp.hpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/precomp.hpp index eebe470d7f0b62..b604a638d7d07b 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/precomp.hpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/proposal.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/proposal.cpp index cc5a4b04c28df5..3f0b7b0beebc0b 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/proposal.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/proposal.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/reduce.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/reduce.cpp index 3f8e0f7ddc58bb..cd5ab4be773c63 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/reduce.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/reduce.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/rnn_cell.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/rnn_cell.cpp index 480a0ae9995308..95103b12cbcae5 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/rnn_cell.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/rnn_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -36,7 +36,8 @@ std::shared_ptr makeRNN(const OutputVector& in, seq_lengths = ngraph::builder::makeConstant(element::i64, constants[3], lengths, false); break; } - case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST: { + case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST: + case ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST: { for (size_t i = 0; i <= in[0].get_shape().at(0); ++i) { std::vector lengths; seq_lengths = ngraph::builder::makeConstant(element::i64, constants[3], lengths, true, @@ -45,7 +46,8 @@ std::shared_ptr makeRNN(const OutputVector& in, break; } case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM: - case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM: { + case ngraph::helpers::SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM: + case ngraph::helpers::SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM: { // Seq_lengths should be as a Parameter node for these two modes seq_lengths = in.at(2).get_node_shared_ptr(); break; diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/roi_pooling.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/roi_pooling.cpp index 3ae3532c8dc068..3713ab5a28bb1d 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/roi_pooling.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/roi_pooling.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_ND_update.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_ND_update.cpp index 5928fd3ddcbd88..7ce8fb21aa36e3 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_ND_update.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_ND_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_elements_update.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_elements_update.cpp index 74e25004c3dbb3..7e342fee789d86 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_elements_update.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_elements_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_update.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_update.cpp index 94f04bbd92a3be..5d8e56b023b327 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_update.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/scatter_update.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/select.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/select.cpp index b7b28b73453cf2..8dfb9bc2f396b0 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/select.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/select.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/shuffle_channels.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/shuffle_channels.cpp index fb150b12d743a3..9f08e87079d356 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/shuffle_channels.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/shuffle_channels.cpp @@ -1,7 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -// #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_batch.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_batch.cpp index b140a58e21e6f4..cab38e3e94c60e 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_batch.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_depth.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_depth.cpp index 8d7d279c3d0128..7bc8caa7e02a21 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_depth.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/space_to_depth.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/split.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/split.cpp index 64929731ce4e92..14946bdea2f281 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/split.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/squeeze_unsqueeze.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/squeeze_unsqueeze.cpp index 8e7b762b5801b7..5f81a2a1bf9601 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/squeeze_unsqueeze.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/squeeze_unsqueeze.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/strided_slice.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/strided_slice.cpp index 188956a9c1b674..9dac5584a18898 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/strided_slice.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/strided_slice.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/tile.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/tile.cpp index 14016fea14c5cd..a9164d2d6bd68e 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/tile.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/tile.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp index 85e4033e836920..48ac22942ccbf6 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporationconvert2OutputVector +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -735,7 +735,7 @@ std::vector convertOutputPrecision(const std::vector } } -std::ostream& operator<<(std::ostream & os, ngraph::helpers::EltwiseTypes type) { +std::ostream& operator<<(std::ostream & os, const ngraph::helpers::EltwiseTypes type) { switch (type) { case ngraph::helpers::EltwiseTypes::SUBTRACT: os << "Sub"; @@ -761,6 +761,9 @@ std::ostream& operator<<(std::ostream & os, ngraph::helpers::EltwiseTypes type) case ngraph::helpers::EltwiseTypes::MOD: os << "Mod"; break; + case ngraph::helpers::EltwiseTypes::ERF: + os << "Erf"; + break; default: throw std::runtime_error("NOT_SUPPORTED_OP_TYPE"); } @@ -943,6 +946,12 @@ std::ostream& operator<<(std::ostream & os, SequenceTestsMode type) { case SequenceTestsMode::PURE_SEQ: os << "PURE_SEQ"; break; + case SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST: + os << "PURE_SEQ_RAND_SEQ_LEN_CONST"; + break; + case SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM: + os << "PURE_SEQ_RAND_SEQ_LEN_PARAM"; + break; case SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM: os << "CONVERT_TO_TI_RAND_SEQ_LEN_PARAM"; break; diff --git a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/variadic_split.cpp b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/variadic_split.cpp index efdecb21c5374a..3fd688d6772226 100644 --- a/inference-engine/tests/ngraph_helpers/ngraph_functions/src/variadic_split.cpp +++ b/inference-engine/tests/ngraph_helpers/ngraph_functions/src/variadic_split.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/CMakeLists.txt b/inference-engine/tests/unit/CMakeLists.txt index 7d5ed259213d06..f729ae89e1b2e9 100644 --- a/inference-engine/tests/unit/CMakeLists.txt +++ b/inference-engine/tests/unit/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/unit/cpu/CMakeLists.txt b/inference-engine/tests/unit/cpu/CMakeLists.txt index c9a92b4857786f..dfa8ce9d3f6e9e 100644 --- a/inference-engine/tests/unit/cpu/CMakeLists.txt +++ b/inference-engine/tests/unit/cpu/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/unit/cpu/bf16_transformer_test.cpp b/inference-engine/tests/unit/cpu/bf16_transformer_test.cpp deleted file mode 100644 index 8a6c49e63ccf78..00000000000000 --- a/inference-engine/tests/unit/cpu/bf16_transformer_test.cpp +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (C) 2018-2021 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include -#include - -#include -#include -#include - -#include -#include -#include - -using ngraph::Shape; -using ngraph::element::Type; -using namespace ngraph::opset5; -using std::make_shared; -using InferenceEngine::Precision; - -std::map get_layer_collection(InferenceEngine::CNNNetwork net) { - IE_SUPPRESS_DEPRECATED_START - auto all_layers = InferenceEngine::details::CNNNetSortTopologically(net); - - std::map res; - for (auto &layer : all_layers) { - res[layer->name] = layer; - } - IE_SUPPRESS_DEPRECATED_END - return res; -} - -enum TypeOfNet { NG, IE }; -InferenceEngine::CNNNetwork create_net(std::shared_ptr &func, TypeOfNet type) { - InferenceEngine::CNNNetwork ng_net(func); - if (type == NG) - return ng_net; - else - return InferenceEngine::CNNNetwork {InferenceEngine::details::convertFunctionToICNNNetwork(func, ng_net)}; -} - - -TEST(BF16TransformerTest, KeepMemoryPrecision) { - /* - * Suggested pattern - * _______ _____ - * [_mem_r_] [_inp_] - * _|______|_ - * [___mul____] - * __|__ - * [_sig_] - * __|__ - * [_fc1_] - * ___|____ - * ___|___ __|__ - * [_mem_w_] [_fc2_] - * __|__ - * [_out_] - * - * If does'n care about memory precision the mem_w will have precicion of data - * between fc1 and fc2 operations. In case of enabled BF16 it should be BF16. - * However mem_r still keep original precision. - */ - Shape shape = {3, 2}; - Type type = ngraph::element::f32; - auto input = make_shared(type, shape); - auto mem_i = make_shared(type, shape, 0); - auto mem_r = make_shared(mem_i, "id"); - mem_r->set_friendly_name("mem_r"); - - auto mul = make_shared(mem_r, input); - auto sig = make_shared(mul); - - auto fc1_w = make_shared(type, Shape{2, 2}, 1); - auto fc1_b = make_shared(type, Shape{2}, 1); - auto fc1 = make_shared(sig, fc1_w, fc1_b, shape); - - auto fc2_w = make_shared(type, Shape{2, 2}, 1); - auto fc2_b = make_shared(type, Shape{2}, 1); - auto fc2 = make_shared(fc1, fc2_w, fc2_b, shape); - - auto mem_w = make_shared(fc1, "id"); - mem_w->set_friendly_name("mem_w"); - - // WA. Limitation of ngraph. control_dependency are required. - mem_w->add_control_dependency(mem_r); - fc2->add_control_dependency(mem_w); - - auto function = make_shared( - ngraph::NodeVector {fc2}, - ngraph::ParameterVector {input}); - - auto net = create_net(function, IE); - - // Apply tested BF16 transformation - MKLDNNPlugin::BF16Transformer transformer; - transformer.convertToBFloat16(net); - - // Check precision - auto layers = get_layer_collection(net); - IE_SUPPRESS_DEPRECATED_START - Precision prc_mem_r = layers["mem_r"]->outData[0]->getPrecision(); - Precision prc_mem_w = layers["mem_w"]->insData[0].lock()->getPrecision(); - IE_SUPPRESS_DEPRECATED_END - - ASSERT_EQ(prc_mem_r, Precision::BF16); - ASSERT_EQ(prc_mem_w, Precision::BF16); -} - -TEST(BF16TransformerTest, DISABLED_KeepMemoryPrecisionWithGEMM) { - /* _______ _____ - * [_mem_r_] [_inp_] - * _|______|_ - * [___mul____] - * __|__ - * [_sig_] - * __|____ - * [_gemm1_] - * ___|____ - * ___|___ __|____ - * [_mem_w_] [_gemm2_] - * __|__ - * [_out_] - * - * Same as KeepMemoryPrecision test with replacing FC -> GEMM - */ - Shape shape = {3, 2}; - Type type = ngraph::element::f32; - auto input = make_shared(type, shape); - auto mem_i = make_shared(type, shape, 0); - auto mem_r = make_shared(mem_i, "id"); - mem_r->set_friendly_name("mem_r"); - - auto mul = make_shared(mem_r, input); - auto sig = make_shared(mul); - - auto fc1_w = make_shared(type, Shape{2, 2}, 1); - auto fc1 = make_shared(sig, fc1_w); - - auto fc2_w = make_shared(type, Shape{2, 2}, 1); - auto fc2 = make_shared(fc1, fc2_w); - - auto mem_w = make_shared(fc1, "id"); - mem_w->set_friendly_name("mem_w"); - - // WA. Limitation of ngraph. control_dependency are required. - mem_w->add_control_dependency(mem_r); - fc2->add_control_dependency(mem_w); - - auto function = make_shared( - ngraph::NodeVector {fc2}, - ngraph::ParameterVector {input}); - - auto net = create_net(function, IE); - - // Apply tested BF16 transformation - MKLDNNPlugin::BF16Transformer transformer; - transformer.convertToBFloat16(net); - - // Check precision - auto layers = get_layer_collection(net); - IE_SUPPRESS_DEPRECATED_START - Precision prc_mem_r = layers["mem_r"]->outData[0]->getPrecision(); - Precision prc_mem_w = layers["mem_w"]->insData[0].lock()->getPrecision(); - IE_SUPPRESS_DEPRECATED_END - - ASSERT_EQ(prc_mem_r, Precision::BF16); - ASSERT_EQ(prc_mem_w, Precision::BF16); -} diff --git a/inference-engine/tests/unit/cpu/mkldnn_memory_desc_test.cpp b/inference-engine/tests/unit/cpu/mkldnn_memory_desc_test.cpp index a02edca942f072..96764070c5a385 100644 --- a/inference-engine/tests/unit/cpu/mkldnn_memory_desc_test.cpp +++ b/inference-engine/tests/unit/cpu/mkldnn_memory_desc_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,7 +6,6 @@ #include #include "mkldnn_memory.h" -#include "details/ie_exception.hpp" using namespace MKLDNNPlugin; using namespace InferenceEngine; diff --git a/inference-engine/tests/unit/cpu/mkldnn_memory_solver_test.cpp b/inference-engine/tests/unit/cpu/mkldnn_memory_solver_test.cpp index 3accbb784c67e8..0debe313e98734 100644 --- a/inference-engine/tests/unit/cpu/mkldnn_memory_solver_test.cpp +++ b/inference-engine/tests/unit/cpu/mkldnn_memory_solver_test.cpp @@ -1,12 +1,12 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include +#include #include "mkldnn_memory_solver.hpp" -#include "details/ie_exception.hpp" using Box = MKLDNNPlugin::MemorySolver::Box; @@ -68,7 +68,7 @@ TEST(MemSolverTest, GetOffsetThrowException) { MKLDNNPlugin::MemorySolver ms(boxes); ms.solve(); - EXPECT_THROW(ms.getOffset(100), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(ms.getOffset(100), InferenceEngine::Exception); } TEST(MemSolverTest, LinearAndEven) { diff --git a/inference-engine/tests/unit/cpu/mkldnn_memory_test.cpp b/inference-engine/tests/unit/cpu/mkldnn_memory_test.cpp index 4d099dc226f2be..41e2d42cf7bada 100644 --- a/inference-engine/tests/unit/cpu/mkldnn_memory_test.cpp +++ b/inference-engine/tests/unit/cpu/mkldnn_memory_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,7 +6,6 @@ #include #include "mkldnn_memory.h" -#include "details/ie_exception.hpp" using namespace MKLDNNPlugin; using namespace InferenceEngine; diff --git a/inference-engine/tests/unit/frontends/onnx_import/CMakeLists.txt b/inference-engine/tests/unit/frontends/onnx_import/CMakeLists.txt index c5fc05a902c6ce..7567c718688d68 100644 --- a/inference-engine/tests/unit/frontends/onnx_import/CMakeLists.txt +++ b/inference-engine/tests/unit/frontends/onnx_import/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/unit/frontends/onnx_import/onnx_importer_test.cpp b/inference-engine/tests/unit/frontends/onnx_import/onnx_importer_test.cpp index 8d9ce065776b18..f2b08deae6f6ed 100644 --- a/inference-engine/tests/unit/frontends/onnx_import/onnx_importer_test.cpp +++ b/inference-engine/tests/unit/frontends/onnx_import/onnx_importer_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/gna/CMakeLists.txt b/inference-engine/tests/unit/gna/CMakeLists.txt index 9180631a2061d9..4ecd6d63c12372 100644 --- a/inference-engine/tests/unit/gna/CMakeLists.txt +++ b/inference-engine/tests/unit/gna/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/unit/gna/gna_allocator_test.cpp b/inference-engine/tests/unit/gna/gna_allocator_test.cpp index 852e91c46cc815..2f70a900d71a10 100644 --- a/inference-engine/tests/unit/gna/gna_allocator_test.cpp +++ b/inference-engine/tests/unit/gna/gna_allocator_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/gna/gna_api_stub.cpp b/inference-engine/tests/unit/gna/gna_api_stub.cpp index 307f8d0f629a6e..0761353464e4b6 100644 --- a/inference-engine/tests/unit/gna/gna_api_stub.cpp +++ b/inference-engine/tests/unit/gna/gna_api_stub.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #define INTEL_GNA_DLLEXPORT 1 #if GNA_LIB_VER == 1 diff --git a/inference-engine/tests/unit/gna/gna_get_2d_reshaped_data.cpp b/inference-engine/tests/unit/gna/gna_get_2d_reshaped_data.cpp index df937edd2226f4..5af1bf88fa7b1b 100644 --- a/inference-engine/tests/unit/gna/gna_get_2d_reshaped_data.cpp +++ b/inference-engine/tests/unit/gna/gna_get_2d_reshaped_data.cpp @@ -1,6 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + #include #include diff --git a/inference-engine/tests/unit/gna/gna_mock_api.hpp b/inference-engine/tests/unit/gna/gna_mock_api.hpp index d67e26cb0a4351..c8c204da10666a 100644 --- a/inference-engine/tests/unit/gna/gna_mock_api.hpp +++ b/inference-engine/tests/unit/gna/gna_mock_api.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/gna/gna_model_serial_test.cpp b/inference-engine/tests/unit/gna/gna_model_serial_test.cpp new file mode 100644 index 00000000000000..69536875552ea6 --- /dev/null +++ b/inference-engine/tests/unit/gna/gna_model_serial_test.cpp @@ -0,0 +1,26 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +// to suppress deprecated definition errors +#define IMPLEMENT_INFERENCE_ENGINE_PLUGIN +#include "gna_model_serial.hpp" + +using ::testing::Return; +using ::testing::_; + +class IstreamMock final: public std::streambuf { +public: + MOCK_METHOD3(seekoff, std::streampos(std::streamoff, std::ios_base::seekdir, + std::ios_base::openmode)); +}; + +TEST(GNAModelSerialTest, TestErrorOnTellg) { + IstreamMock mock; + EXPECT_CALL(mock, seekoff(_, _, _)).WillRepeatedly(Return(-1)); + std::istream is(&mock); + ASSERT_THROW(GNAModelSerial::ReadHeader(is), InferenceEngine::Exception); +} diff --git a/inference-engine/tests/unit/gna/gna_permute_sequence_test.cpp b/inference-engine/tests/unit/gna/gna_permute_sequence_test.cpp index 9ceec6cbaf7f18..867ca34303641b 100644 --- a/inference-engine/tests/unit/gna/gna_permute_sequence_test.cpp +++ b/inference-engine/tests/unit/gna/gna_permute_sequence_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/gna/gna_plugin_config_test.cpp b/inference-engine/tests/unit/gna/gna_plugin_config_test.cpp index 394504414b3c80..8329077742534e 100644 --- a/inference-engine/tests/unit/gna/gna_plugin_config_test.cpp +++ b/inference-engine/tests/unit/gna/gna_plugin_config_test.cpp @@ -1,5 +1,6 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +// #include #include "gna_plugin_config.hpp" @@ -20,6 +21,7 @@ const std::map supportedConfigKeysWithDefaults = { {CONFIG_KEY(EXCLUSIVE_ASYNC_REQUESTS), CONFIG_VALUE(NO)}, {GNA_CONFIG_KEY(PRECISION), Precision(Precision::I16).name()}, {GNA_CONFIG_KEY(PWL_UNIFORM_DESIGN), CONFIG_VALUE(NO)}, + {GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT), "1.000000"}, {CONFIG_KEY(PERF_COUNT), CONFIG_VALUE(NO)}, {GNA_CONFIG_KEY(LIB_N_THREADS), "1"}, {CONFIG_KEY(SINGLE_THREAD), CONFIG_VALUE(YES)} @@ -34,7 +36,7 @@ class GNAPluginConfigTest : public ::testing::Test { } void ExpectThrow(const std::string& key, const std::string& val) { EXPECT_THROW(config.UpdateFromMap({{key, val}}), - details::InferenceEngineException); + Exception); } void SetAndCheckFlag(const std::string& key, bool& val, bool reverse = false) { const bool yes = reverse ? false : true; @@ -153,6 +155,17 @@ TEST_F(GNAPluginConfigTest, GnaConfigPwlUniformDesignTest) { config.gnaFlags.uniformPwlDesign); } +TEST_F(GNAPluginConfigTest, GnaConfigPwlMaxErrorPercentTest) { + SetAndCompare(GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT), std::string("0.100000")); + EXPECT_FLOAT_EQ(config.gnaFlags.pwlMaxErrorPercent, 0.1f); + SetAndCompare(GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT), std::string("1.000000")); + EXPECT_FLOAT_EQ(config.gnaFlags.pwlMaxErrorPercent, 1); + SetAndCompare(GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT), std::string("5.000000")); + EXPECT_FLOAT_EQ(config.gnaFlags.pwlMaxErrorPercent, 5); + ExpectThrow(GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT), "-1"); + ExpectThrow(GNA_CONFIG_KEY(PWL_MAX_ERROR_PERCENT), "100.1"); +} + TEST_F(GNAPluginConfigTest, GnaConfigPerfCountTest) { SetAndCheckFlag(CONFIG_KEY(PERF_COUNT), config.gnaFlags.performance_counting); diff --git a/inference-engine/tests/unit/gna/gna_wait_test.cpp b/inference-engine/tests/unit/gna/gna_wait_test.cpp index 68173a67f96a28..0621da16c18f5f 100644 --- a/inference-engine/tests/unit/gna/gna_wait_test.cpp +++ b/inference-engine/tests/unit/gna/gna_wait_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/inference_engine/CMakeLists.txt b/inference-engine/tests/unit/inference_engine/CMakeLists.txt index 1d9515f540f309..5c38c77b9b7e9a 100644 --- a/inference-engine/tests/unit/inference_engine/CMakeLists.txt +++ b/inference-engine/tests/unit/inference_engine/CMakeLists.txt @@ -1,11 +1,11 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # set(TARGET_NAME ieUnitTests) # Find OpenCV components if exist -find_package(OpenCV COMPONENTS imgcodecs videoio imgproc QUIET) +find_package(OpenCV COMPONENTS core QUIET) if(NOT OpenCV_FOUND) message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} needs OpenCV for its build") else() diff --git a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_executable_network_base_test.cpp b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_executable_network_base_test.cpp index 20125117abe4ff..02a5e9792a7538 100644 --- a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_executable_network_base_test.cpp +++ b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_executable_network_base_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -33,8 +33,7 @@ class ExecutableNetworkThreadSafeAsyncOnlyTests : public ::testing::Test { virtual void SetUp() { mockExeNetwork = make_shared(); - exeNetwork = details::shared_from_irelease( - new ExecutableNetworkBase(mockExeNetwork)); + exeNetwork = std::make_shared(mockExeNetwork); InputsDataMap networkInputs; OutputsDataMap networkOutputs; mockAsyncInferRequestInternal = make_shared(networkInputs, networkOutputs); @@ -108,8 +107,7 @@ class ExecutableNetworkThreadSafeTests : public ::testing::Test { virtual void SetUp() { mockExeNetwork = make_shared(); - exeNetwork = details::shared_from_irelease( - new ExecutableNetworkBase(mockExeNetwork)); + exeNetwork = std::make_shared(mockExeNetwork); InputsDataMap networkInputs; OutputsDataMap networkOutputs; mockInferRequestInternal = make_shared(networkInputs, networkOutputs); diff --git a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_base_test.cpp b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_base_test.cpp index cd116340e52bf3..08af204bdab699 100644 --- a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_base_test.cpp +++ b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_base_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -34,7 +34,7 @@ class InferRequestBaseTests : public ::testing::Test { virtual void SetUp() { mock_impl.reset(new MockIAsyncInferRequestInternal()); - request = details::shared_from_irelease(new InferRequestBase(mock_impl)); + request = std::make_shared(mock_impl); } }; @@ -228,8 +228,8 @@ class InferRequestTests : public ::testing::Test { _incorrectName = "incorrect_name"; _inputName = MockNotEmptyICNNNetwork::INPUT_BLOB_NAME; _failedToFindInOutError = - NOT_FOUND_str + "Failed to find input or output with name: \'" + _incorrectName + "\'"; - _inputDataNotAllocatedError = std::string("Input data was not allocated. Input name: \'") + "[ NOT_FOUND ] Failed to find input or output with name: \'" + _incorrectName + "\'"; + _inputDataNotAllocatedError = std::string("[ NOT_ALLOCATED ] Input data was not allocated. Input name: \'") + _inputName + "\'"; _inputDataIsEmptyError = std::string("Input data is empty. Input name: \'") + _inputName + "\'"; @@ -242,8 +242,7 @@ class InferRequestTests : public ::testing::Test { OutputsDataMap outputsInfo; mockNotEmptyNet.getOutputsInfo(outputsInfo); mockInferRequestInternal = make_shared(inputsInfo, outputsInfo); - inferRequest = shared_from_irelease( - new InferRequestBase(mockInferRequestInternal)); + inferRequest = std::make_shared(mockInferRequestInternal); return make_shared(inferRequest); } @@ -251,7 +250,7 @@ class InferRequestTests : public ::testing::Test { std::string actualError; try { function(); - } catch (const InferenceEngineException &iie) { + } catch (const Exception &iie) { actualError = iie.what(); } return actualError; @@ -281,7 +280,7 @@ TEST_F(InferRequestTests, constructorsTests) { ASSERT_NO_THROW(InferRequest req(mock_request)); IInferRequest::Ptr tmp; // InferRequest's "actual" is nullptr, let's check it throws on construction - ASSERT_THROW(InferRequest req(tmp), InferenceEngineException); + ASSERT_THROW(InferRequest req(tmp), Exception); } // StartAsync @@ -292,7 +291,7 @@ TEST_F(InferRequestTests, canForwardStartAsync) { TEST_F(InferRequestTests, throwsIfStartAsyncReturnNotOK) { EXPECT_CALL(*mock_request.get(), StartAsync(_)).WillOnce(Return(GENERAL_ERROR)); - ASSERT_THROW(requestWrapper->StartAsync(), InferenceEngineException); + ASSERT_THROW(requestWrapper->StartAsync(), Exception); } // Wait @@ -315,7 +314,7 @@ TEST_F(InferRequestTests, canForwardInfer) { TEST_F(InferRequestTests, throwsIfInferReturnNotOK) { EXPECT_CALL(*mock_request.get(), Infer(_)).WillOnce(Return(GENERAL_ERROR)); - ASSERT_THROW(requestWrapper->Infer(), InferenceEngineException); + ASSERT_THROW(requestWrapper->Infer(), Exception); } // GetPerformanceCounts @@ -328,7 +327,7 @@ TEST_F(InferRequestTests, canForwardGetPerformanceCounts) { TEST_F(InferRequestTests, throwsIfGetPerformanceCountsReturnNotOK) { std::map info; EXPECT_CALL(*mock_request.get(), GetPerformanceCounts(_, _)).WillOnce(Return(GENERAL_ERROR)); - ASSERT_THROW(info = requestWrapper->GetPerformanceCounts(), InferenceEngineException); + ASSERT_THROW(info = requestWrapper->GetPerformanceCounts(), Exception); } MATCHER_P(blob_in_map_pointer_is_same, ref_blob, "") { @@ -352,7 +351,7 @@ TEST_F(InferRequestTests, getInputCallsSetBlob) { TEST_F(InferRequestTests, throwsIfSetInputReturnNotOK) { EXPECT_CALL(*mock_request.get(), SetBlob(_, _, _)).WillOnce(Return(GENERAL_ERROR)); BlobMap blobMap{{{}, {}}}; - ASSERT_THROW(requestWrapper->SetInput(blobMap), InferenceEngineException); + ASSERT_THROW(requestWrapper->SetInput(blobMap), Exception); } // SetOutput @@ -383,7 +382,7 @@ TEST_F(InferRequestTests, throwsIfGetBlobReturnNotOK) { std::string name = "blob1"; EXPECT_CALL(*mock_request.get(), GetBlob(_, _, _)).WillOnce(Return(GENERAL_ERROR)); - ASSERT_THROW(blob = requestWrapper->GetBlob(name), InferenceEngineException); + ASSERT_THROW(blob = requestWrapper->GetBlob(name), Exception); } // SetBlob @@ -400,13 +399,13 @@ TEST_F(InferRequestTests, throwsIfSetBlobReturnNotOK) { std::string name = "blob1"; EXPECT_CALL(*mock_request.get(), SetBlob(_, _, _)).WillOnce(Return(GENERAL_ERROR)); - ASSERT_THROW(requestWrapper->SetBlob(name, blob), InferenceEngineException); + ASSERT_THROW(requestWrapper->SetBlob(name, blob), Exception); } TEST_F(InferRequestTests, throwsIfSetOutputReturnNotOK) { EXPECT_CALL(*mock_request.get(), SetBlob(_, _, _)).WillOnce(Return(GENERAL_ERROR)); BlobMap blobMap{{{}, {}}}; - ASSERT_THROW(requestWrapper->SetOutput(blobMap), InferenceEngineException); + ASSERT_THROW(requestWrapper->SetOutput(blobMap), Exception); } // SetCompletionCallback API @@ -447,27 +446,23 @@ TEST_F(InferRequestTests, canForwardAnyCallback) { TEST_F(InferRequestTests, failToSetInputWithInCorrectName) { auto InferRequest = getInferRequestWithMockImplInside(); auto blobMap = getBlobMapWithIncorrectName(); - auto exceptionMessage = getExceptionMessage([&]() { InferRequest->SetInput(blobMap); }); - ASSERT_EQ(_failedToFindInOutError, exceptionMessage.substr(0, _failedToFindInOutError.size())); + ASSERT_THROW(InferRequest->SetInput(blobMap), NotFound); } TEST_F(InferRequestTests, failToSetOutputWithInCorrectName) { auto InferRequest = getInferRequestWithMockImplInside(); auto blobMap = getBlobMapWithIncorrectName(); - auto exceptionMessage = getExceptionMessage([&]() { InferRequest->SetOutput(blobMap); }); - ASSERT_EQ(_failedToFindInOutError, exceptionMessage.substr(0, _failedToFindInOutError.size())); + ASSERT_THROW(InferRequest->SetOutput(blobMap), NotFound); } TEST_F(InferRequestTests, failToSetInputWithNotAllocatedInput) { auto InferRequest = getInferRequestWithMockImplInside(); auto blobMap = getBlobMapWithNotAllocatedInput(); - auto exceptionMessage = getExceptionMessage([&]() { InferRequest->SetInput(blobMap); }); - ASSERT_EQ(_inputDataNotAllocatedError, exceptionMessage.substr(0, _inputDataNotAllocatedError.size())); + ASSERT_THROW(InferRequest->SetInput(blobMap), NotAllocated); } TEST_F(InferRequestTests, failToSetInputWithEmptyDimensions) { auto InferRequest = getInferRequestWithMockImplInside(); auto blobMap = getBlobMapWithEmptyDimensions(); - auto exceptionMessage = getExceptionMessage([&]() { InferRequest->SetInput(blobMap); }); - ASSERT_EQ(_inputDataIsEmptyError, exceptionMessage.substr(0, _inputDataIsEmptyError.size())); + ASSERT_THROW(InferRequest->SetInput(blobMap), GeneralError); } diff --git a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_thread_safe_default_test.cpp b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_thread_safe_default_test.cpp index 8ac217e6cda3d6..8404dc74e8808b 100644 --- a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_thread_safe_default_test.cpp +++ b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_infer_async_request_thread_safe_default_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -66,16 +66,6 @@ class InferRequestThreadSafeDefaultTests : public ::testing::Test { mockInferRequestInternal = make_shared(inputsInfo, outputsInfo); testRequest = make_shared(mockInferRequestInternal, mockTaskExecutor, mockTaskExecutor); } - - bool _doesThrowExceptionWithMessage(std::function func, string refError) { - std::string whatMessage; - try { - func(); - } catch (const InferenceEngineException &iee) { - whatMessage = iee.what(); - } - return whatMessage.find(refError) != std::string::npos; - } }; // StartAsync @@ -84,7 +74,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnStartAsync) { testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { testRequest->StartAsync(); }, REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->StartAsync(), RequestBusy); taskExecutor->executeAll(); } @@ -92,10 +82,10 @@ TEST_F(InferRequestThreadSafeDefaultTests, canResetBusyStatusIfStartAsyncFails) auto taskExecutor = std::make_shared(); testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, checkBlobs()).Times(2) - .WillOnce(Throw(InferenceEngineException(__FILE__, __LINE__) << "compare")) + .WillOnce(Throw(GeneralError{""})) .WillOnce(Return()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([&]() { testRequest->StartAsync(); }, "compare")); + ASSERT_THROW(testRequest->StartAsync(), GeneralError); ASSERT_NO_THROW(testRequest->StartAsync()); taskExecutor->executeAll(); } @@ -106,7 +96,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnGetUserData) { testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { testRequest->GetUserData(nullptr); }, REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->GetUserData(nullptr), RequestBusy); taskExecutor->executeAll(); } @@ -116,7 +106,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnSetUserData) { testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { testRequest->SetUserData(nullptr); }, REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->SetUserData(nullptr), RequestBusy); taskExecutor->executeAll(); } @@ -133,7 +123,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnInfer) { testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { testRequest->Infer(); }, REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->StartAsync(), RequestBusy); taskExecutor->executeAll(); } @@ -141,9 +131,10 @@ TEST_F(InferRequestThreadSafeDefaultTests, canResetBusyStatusIfInferFails) { auto taskExecutor = std::make_shared(); testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(2) - .WillOnce(Throw(InferenceEngineException(__FILE__, __LINE__) << "compare")) + .WillOnce(Throw(GeneralError{""})) .WillOnce(Return()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { testRequest->Infer(); }, "compare")); + ASSERT_THROW(testRequest->Infer(), GeneralError); + ASSERT_NO_THROW(testRequest->Infer()); taskExecutor->executeAll(); } @@ -154,9 +145,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnGetPerformanceCoun testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { - auto info = testRequest->GetPerformanceCounts(); - }, REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->GetPerformanceCounts(), RequestBusy); taskExecutor->executeAll(); } @@ -166,9 +155,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnGetBlob) { testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { - auto data = testRequest->GetBlob({}); - }, REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->GetBlob({}), RequestBusy); taskExecutor->executeAll(); } @@ -178,7 +165,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnSetBlob) { testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { testRequest->SetBlob({}, {}); }, REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->SetBlob({}, {}), RequestBusy); taskExecutor->executeAll(); } @@ -188,8 +175,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, returnRequestBusyOnSetCompletionCallb testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); EXPECT_CALL(*mockInferRequestInternal, InferImpl()).Times(1).WillOnce(Return()); ASSERT_NO_THROW(testRequest->StartAsync()); - ASSERT_TRUE(_doesThrowExceptionWithMessage([this]() { testRequest->SetCompletionCallback(nullptr); }, - REQUEST_BUSY_str)); + ASSERT_THROW(testRequest->SetCompletionCallback({}), RequestBusy); taskExecutor->executeAll(); } @@ -198,7 +184,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, callbackTakesOKIfAsyncRequestWasOK) { testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); IInferRequest::Ptr asyncRequest; - asyncRequest.reset(new InferRequestBase(testRequest), [](IInferRequest *p) { p->Release(); }); + asyncRequest.reset(new InferRequestBase(testRequest)); testRequest->SetPointerToPublicInterface(asyncRequest); testRequest->SetCompletionCallback([](InferenceEngine::IInferRequest::Ptr request, StatusCode status) { @@ -214,7 +200,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, callbackIsCalledIfAsyncRequestFailed) auto taskExecutor = std::make_shared(); testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); IInferRequest::Ptr asyncRequest; - asyncRequest.reset(new InferRequestBase(testRequest), [](IInferRequest *p) { p->Release(); }); + asyncRequest.reset(new InferRequestBase(testRequest)); testRequest->SetPointerToPublicInterface(asyncRequest); bool wasCalled = false; @@ -236,7 +222,7 @@ TEST_F(InferRequestThreadSafeDefaultTests, canCatchExceptionIfAsyncRequestFailed auto taskExecutor = std::make_shared(); testRequest = make_shared(mockInferRequestInternal, taskExecutor, taskExecutor); IInferRequest::Ptr asyncRequest; - asyncRequest.reset(new InferRequestBase(testRequest), [](IInferRequest *p) { p->Release(); }); + asyncRequest.reset(new InferRequestBase(testRequest)); testRequest->SetPointerToPublicInterface(asyncRequest); EXPECT_CALL(*mockInferRequestInternal.get(), InferImpl()).WillOnce(Throw(std::exception())); diff --git a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_memory_state_internal_test.cpp b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_memory_state_internal_test.cpp index d8cffe2e4de74a..217d624c79e516 100644 --- a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_memory_state_internal_test.cpp +++ b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_memory_state_internal_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,9 +20,7 @@ using namespace InferenceEngine::details; template inline typename InferenceEngine::InferRequest make_infer_request(std::shared_ptr impl) { - typename InferRequestBase::Ptr req(new InferRequestBase(impl), [](IInferRequest* p) { - p->Release(); - }); + typename InferRequestBase::Ptr req(new InferRequestBase(impl)); return InferenceEngine::InferRequest(req); } diff --git a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_plugin_test.cpp b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_plugin_test.cpp index f85f4bef2092c4..a4ad1a82a51342 100644 --- a/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_plugin_test.cpp +++ b/inference-engine/tests/unit/inference_engine/cpp_interfaces/ie_plugin_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -70,67 +70,72 @@ TEST_F(InferenceEnginePluginInternalTest, failToSetBlobWithInCorrectName) { Blob::Ptr inBlob = make_shared_blob({ Precision::FP32, {1, 1, 1, 1}, NCHW }); inBlob->allocate(); string inputName = "not_input"; - std::string refError = NOT_FOUND_str + "Failed to find input or output with name: \'" + inputName + "\'"; + std::string refError = "[ NOT_FOUND ] Failed to find input or output with name: \'" + inputName + "\'"; IInferRequest::Ptr inferRequest; getInferRequestWithMockImplInside(inferRequest); ASSERT_NO_THROW(sts = inferRequest->SetBlob(inputName.c_str(), inBlob, &dsc)); - ASSERT_EQ(StatusCode::GENERAL_ERROR, sts); - dsc.msg[refError.length()] = '\0'; - ASSERT_EQ(refError, dsc.msg); + ASSERT_EQ(StatusCode::NOT_FOUND, sts); + ASSERT_TRUE(std::string{dsc.msg}.find(refError) != std::string::npos) + << "\tExpected: " << refError + << "\n\tActual: " << dsc.msg; } TEST_F(InferenceEnginePluginInternalTest, failToSetBlobWithEmptyName) { Blob::Ptr inBlob = make_shared_blob({ Precision::FP32, {}, NCHW }); inBlob->allocate(); string inputName = "not_input"; - std::string refError = NOT_FOUND_str + "Failed to set blob with empty name"; + std::string refError = "[ NOT_FOUND ] Failed to set blob with empty name"; IInferRequest::Ptr inferRequest; getInferRequestWithMockImplInside(inferRequest); ASSERT_NO_THROW(sts = inferRequest->SetBlob("", inBlob, &dsc)); - ASSERT_EQ(StatusCode::GENERAL_ERROR, sts); - dsc.msg[refError.length()] = '\0'; - ASSERT_EQ(refError, dsc.msg); + ASSERT_EQ(StatusCode::NOT_FOUND, sts); + ASSERT_TRUE(std::string{dsc.msg}.find(refError) != std::string::npos) + << "\tExpected: " << refError + << "\n\tActual: " << dsc.msg; } TEST_F(InferenceEnginePluginInternalTest, failToSetNullPtr) { string inputName = MockNotEmptyICNNNetwork::INPUT_BLOB_NAME; - std::string refError = NOT_ALLOCATED_str + "Failed to set empty blob with name: \'" + inputName + "\'"; + std::string refError = "[ NOT_ALLOCATED ] Failed to set empty blob with name: \'" + inputName + "\'"; IInferRequest::Ptr inferRequest; getInferRequestWithMockImplInside(inferRequest); Blob::Ptr inBlob = nullptr; ASSERT_NO_THROW(sts = inferRequest->SetBlob(inputName.c_str(), inBlob, &dsc)); - ASSERT_EQ(StatusCode::GENERAL_ERROR, sts); - dsc.msg[refError.length()] = '\0'; - ASSERT_EQ(refError, dsc.msg); + ASSERT_EQ(StatusCode::NOT_ALLOCATED, sts); + ASSERT_TRUE(std::string{dsc.msg}.find(refError) != std::string::npos) + << "\tExpected: " << refError + << "\n\tActual: " << dsc.msg; } TEST_F(InferenceEnginePluginInternalTest, failToSetEmptyBlob) { Blob::Ptr inBlob; string inputName = MockNotEmptyICNNNetwork::INPUT_BLOB_NAME; - std::string refError = NOT_ALLOCATED_str + "Failed to set empty blob with name: \'" + inputName + "\'"; + std::string refError = "[ NOT_ALLOCATED ] Failed to set empty blob with name: \'" + inputName + "\'"; IInferRequest::Ptr inferRequest; getInferRequestWithMockImplInside(inferRequest); ASSERT_NO_THROW(sts = inferRequest->SetBlob(inputName.c_str(), inBlob, &dsc)); - ASSERT_EQ(StatusCode::GENERAL_ERROR, sts); - dsc.msg[refError.length()] = '\0'; - ASSERT_EQ(refError, dsc.msg); + ASSERT_EQ(StatusCode::NOT_ALLOCATED, sts); + ASSERT_TRUE(std::string{dsc.msg}.find(refError) != std::string::npos) + << "\tExpected: " << refError + << "\n\tActual: " << dsc.msg; } TEST_F(InferenceEnginePluginInternalTest, failToSetNotAllocatedBlob) { string inputName = MockNotEmptyICNNNetwork::INPUT_BLOB_NAME; - std::string refError = "Input data was not allocated. Input name: \'" + inputName + "\'"; + std::string refError = "[ NOT_ALLOCATED ] Input data was not allocated. Input name: \'" + inputName + "\'"; IInferRequest::Ptr inferRequest; getInferRequestWithMockImplInside(inferRequest); Blob::Ptr blob = make_shared_blob({ Precision::FP32, {}, NCHW }); ASSERT_NO_THROW(sts = inferRequest->SetBlob(inputName.c_str(), blob, &dsc)); - ASSERT_EQ(StatusCode::GENERAL_ERROR, sts); - dsc.msg[refError.length()] = '\0'; - ASSERT_EQ(refError, dsc.msg); + ASSERT_EQ(StatusCode::NOT_ALLOCATED, sts); + ASSERT_TRUE(std::string{dsc.msg}.find(refError) != std::string::npos) + << "\tExpected: " << refError + << "\n\tActual: " << dsc.msg; } TEST_F(InferenceEnginePluginInternalTest, executableNetworkInternalExportsMagicAndName) { @@ -159,32 +164,32 @@ TEST_F(InferenceEnginePluginInternalTest, pluginInternalEraseMagicAndNameWhenImp TEST(InferencePluginTests, throwsOnNullptrCreation) { InferenceEnginePluginPtr nulptr; InferencePlugin plugin; - ASSERT_THROW(plugin = InferencePlugin(nulptr), details::InferenceEngineException); + ASSERT_THROW(plugin = InferencePlugin(nulptr), Exception); } TEST(InferencePluginTests, throwsOnUninitializedGetVersion) { InferencePlugin plg; - ASSERT_THROW(plg.GetVersion(), details::InferenceEngineException); + ASSERT_THROW(plg.GetVersion(), Exception); } TEST(InferencePluginTests, throwsOnUninitializedLoadNetwork) { InferencePlugin plg; - ASSERT_THROW(plg.LoadNetwork(CNNNetwork(), {}), details::InferenceEngineException); + ASSERT_THROW(plg.LoadNetwork(CNNNetwork(), {}), Exception); } TEST(InferencePluginTests, throwsOnUninitializedImportNetwork) { InferencePlugin plg; - ASSERT_THROW(plg.ImportNetwork({}, {}), details::InferenceEngineException); + ASSERT_THROW(plg.ImportNetwork({}, {}), Exception); } TEST(InferencePluginTests, throwsOnUninitializedAddExtension) { InferencePlugin plg; - ASSERT_THROW(plg.AddExtension(IExtensionPtr()), details::InferenceEngineException); + ASSERT_THROW(plg.AddExtension(IExtensionPtr()), Exception); } TEST(InferencePluginTests, throwsOnUninitializedSetConfig) { InferencePlugin plg; - ASSERT_THROW(plg.SetConfig({{}}), details::InferenceEngineException); + ASSERT_THROW(plg.SetConfig({{}}), Exception); } TEST(InferencePluginTests, nothrowsUninitializedCast) { diff --git a/inference-engine/tests/unit/inference_engine/ie_blob_test.cpp b/inference-engine/tests/unit/inference_engine/ie_blob_test.cpp index 69520c1d4c54a1..e33fcbc42d46ed 100644 --- a/inference-engine/tests/unit/inference_engine/ie_blob_test.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_blob_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -28,14 +28,14 @@ class BlobTests: public ::testing::Test { // Testing TBlob(const TensorDesc& tensorDesc, T* ptr, size_t data_size = 0) TEST_F(BlobTests, TBlobThrowsIfPtrForPreAllocatorIsNullPtr) { ASSERT_THROW(InferenceEngine::TBlob({InferenceEngine::Precision::FP32, {1}, InferenceEngine::C}, nullptr), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } // Testing TBlob(const TensorDesc& tensorDesc, const std::std::shared_ptr& alloc) TEST_F(BlobTests, TBlobThrowsIfAllocatorIsNullPtr) { ASSERT_THROW(InferenceEngine::TBlob( {InferenceEngine::Precision::FP32, {1}, InferenceEngine::C}, std::shared_ptr()), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } @@ -271,7 +271,7 @@ TEST_F(BlobTests, canMakeSharedBlob) { TEST_F(BlobTests, cannotCreateBlobWithIncorrectPrecision) { InferenceEngine::TensorDesc desc(InferenceEngine::Precision::FP16, {1, 3, 227, 227}, InferenceEngine::Layout::NCHW); - ASSERT_THROW(InferenceEngine::make_shared_blob(desc), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(InferenceEngine::make_shared_blob(desc), InferenceEngine::Exception); } TEST_F(BlobTests, canUseBlobInMoveSemantics) { @@ -396,7 +396,7 @@ TEST_F(BlobTests, makeRoiBlobWrongSize) { // try to create ROI blob with wrong size InferenceEngine::ROI roi = {0, 1, 1, 4, 4}; // cropped picture with: id = 0, (x,y) = (1,1), sizeX (W) = 4, sizeY (H) = 4 - ASSERT_THROW(make_shared_blob(blob, roi), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(make_shared_blob(blob, roi), InferenceEngine::Exception); } TEST_F(BlobTests, readRoiBlob) { diff --git a/inference-engine/tests/unit/inference_engine/ie_compilation_context_test.cpp b/inference-engine/tests/unit/inference_engine/ie_compilation_context_test.cpp new file mode 100644 index 00000000000000..c3d428dbf8b240 --- /dev/null +++ b/inference-engine/tests/unit/inference_engine/ie_compilation_context_test.cpp @@ -0,0 +1,388 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include +#include +#include + +#include "compilation_context.hpp" +#include "ngraph/function.hpp" +#include "ngraph/ops.hpp" +#include "ngraph/variant.hpp" +#include "ngraph/opsets/opset6.hpp" +#include "transformations/rt_info/dequantization_attribute.hpp" +#include "transformations/rt_info/fused_names_attribute.hpp" +#include "transformations/rt_info/primitives_priority_attribute.hpp" +#include "cpp/ie_cnn_network.h" + +#include "common_test_utils/test_constants.hpp" + +using namespace InferenceEngine; +using namespace ngraph; +using namespace ::testing; +using namespace std::chrono; + +static std::string generateTestFilePrefix() { + // Generate unique file names based on test name, thread id and timestamp + // This allows execution of tests in parallel (stress mode) + auto testInfo = UnitTest::GetInstance()->current_test_info(); + std::string testName = testInfo->test_case_name(); + testName += testInfo->name(); + testName = std::to_string(std::hash()(testName)); + std::stringstream ss; + auto ts = duration_cast(high_resolution_clock::now().time_since_epoch()); + ss << testName << "_" << std::this_thread::get_id() << "_" << ts.count(); + testName = ss.str(); + return testName; +} + +class FileGuard { + std::string m_fileName; +public: + FileGuard(const std::string& name): m_fileName(name) {} + ~FileGuard() { std::remove(m_fileName.c_str()); } +}; + +class NetworkContext_CalcFileInfoTests : public Test { +public: + std::string m_fileName = "test.blob"; + + static void createFile(const std::string& fileName, std::size_t size = 1) { + std::ofstream str(fileName, std::ios::binary); + if (!str.good()) { + GTEST_SKIP(); + } + for (std::size_t i = 0; i < size; i++) + str.put('a'); + } + + // Sets up the test fixture. + void SetUp() override { + auto testName = generateTestFilePrefix(); + m_fileName = testName + m_fileName; + createFile(m_fileName); + } + + // Tears down the test fixture. + void TearDown() override { + std::remove(m_fileName.c_str()); + } +}; + +TEST_F(NetworkContext_CalcFileInfoTests, NoFile) { + ASSERT_NE(NetworkCompilationContext::calculateFileInfo("notexisting.abc"), + NetworkCompilationContext::calculateFileInfo("notexisting2.abc")); + + std::string fileName(100, 'a'); + std::string fileName2(fileName); + ASSERT_EQ(NetworkCompilationContext::calculateFileInfo(fileName), + NetworkCompilationContext::calculateFileInfo(fileName2)); +} + +TEST_F(NetworkContext_CalcFileInfoTests, ExistingFile) { + ASSERT_EQ(NetworkCompilationContext::calculateFileInfo(m_fileName), + NetworkCompilationContext::calculateFileInfo(m_fileName)); +} + +TEST_F(NetworkContext_CalcFileInfoTests, ExistingDiffFiles) { + auto hash1 = NetworkCompilationContext::calculateFileInfo(m_fileName); + std::string newName = m_fileName + "2"; + std::rename(m_fileName.c_str(), newName.c_str()); + m_fileName = std::move(newName); + auto hash2 = NetworkCompilationContext::calculateFileInfo(m_fileName); + ASSERT_NE(hash1, hash2); +} + +TEST_F(NetworkContext_CalcFileInfoTests, ExistingFile_sameAbsPath) { + std::string file1 = m_fileName; + std::string file2 = std::string(".") + CommonTestUtils::FileSeparator + m_fileName; + ASSERT_EQ(NetworkCompilationContext::calculateFileInfo(file1), + NetworkCompilationContext::calculateFileInfo(file2)) << + "Hash of [" << file1 << "] is not equal to hash of [" << file2 << "]"; +} + +TEST_F(NetworkContext_CalcFileInfoTests, DateModified) { + auto info1 = NetworkCompilationContext::calculateFileInfo(m_fileName); + std::this_thread::sleep_for(std::chrono::seconds(2)); + createFile(m_fileName); + auto info2 = NetworkCompilationContext::calculateFileInfo(m_fileName); + ASSERT_NE(info1, info2); +} + +TEST_F(NetworkContext_CalcFileInfoTests, SizeModified) { + createFile(m_fileName, 1); + auto info1 = NetworkCompilationContext::calculateFileInfo(m_fileName); + createFile(m_fileName, 2); + auto info2 = NetworkCompilationContext::calculateFileInfo(m_fileName); + ASSERT_NE(info1, info2); +} + +//////////////////////////////////////////////////// + +static std::shared_ptr create_simple_function() { + // This example is taken from docs, shows how to create ngraph::Function + // + // Parameter--->Multiply--->Add--->Result + // Constant---' / + // Constant---' + + // Create opset6::Parameter operation with static shape + auto data = std::make_shared(ngraph::element::i8, ngraph::Shape{3, 1, 2}); + data->set_friendly_name("Parameter"); + + auto mul_constant = ngraph::opset6::Constant::create(ngraph::element::i8, ngraph::Shape{1}, {3}); + mul_constant->set_friendly_name("mul_constant"); + auto mul = std::make_shared(data, mul_constant); + mul->set_friendly_name("mul"); + + auto add_constant = ngraph::opset6::Constant::create(ngraph::element::i8, ngraph::Shape{1}, {2}); + add_constant->set_friendly_name("add_constant"); + auto add = std::make_shared(mul, add_constant); + add->set_friendly_name("add"); + + // Create opset3::Result operation + auto res = std::make_shared(add); + res->set_friendly_name("res"); + + // Create nGraph function + auto func = std::make_shared(ngraph::ResultVector{res}, ngraph::ParameterVector{data}); + func->set_friendly_name("function"); + return func; +} + +static CNNNetwork createNetwork() { + CNNNetwork res(create_simple_function()); + return res; +} + +static void checkCustomRt(std::function emptyCb, + std::function nameCb) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + auto & op1 = net1.getFunction()->get_ops().front()->get_rt_info(); + auto & op2 = net2.getFunction()->get_ops().front()->get_rt_info(); + + emptyCb(op2); + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + emptyCb(op1); + ASSERT_EQ(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + nameCb(op1, "test"); + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + nameCb(op2, "test"); + ASSERT_EQ(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + nameCb(op1, "test2"); + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); +} + +TEST(NetworkContext_CNNNetwork, HashOfSame) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + ASSERT_EQ(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); +} + +TEST(NetworkContext_CNNNetwork, HashWithConfig) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {{"key", "value"}}), + NetworkCompilationContext::computeHash(net2, {})); + ASSERT_EQ(NetworkCompilationContext::computeHash(net1, {{"key", "value"}}), + NetworkCompilationContext::computeHash(net2, {{"key", "value"}})); +} + +TEST(NetworkContext_CNNNetwork, HashWithPrimitivesPriority) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + auto net3 = createNetwork(); + auto & op2 = net2.getFunction()->get_ops().front()->get_rt_info(); + op2["PrimitivesPriority"] = std::make_shared > ("testPriority"); + + auto & op3 = net3.getFunction()->get_ops().front()->get_rt_info(); + op3["PrimitivesPriority"] = std::make_shared > ("testPriority"); + + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + ASSERT_EQ(NetworkCompilationContext::computeHash(net2, {}), + NetworkCompilationContext::computeHash(net3, {})); +} + +TEST(NetworkContext_CNNNetwork, HashWithDequantization) { + auto setDeqEmpty = [&](Node::RTMap& rtInfo) { + rtInfo[VariantWrapper::type_info.name] = + std::make_shared>(DequantizationAttr()); + }; + auto setDeq = [&](Node::RTMap& rtInfo, const std::string& name) { + rtInfo[VariantWrapper::type_info.name] = + std::make_shared>(DequantizationAttr(name)); + }; + checkCustomRt(setDeqEmpty, setDeq); +} + +TEST(NetworkContext_CNNNetwork, HashWithFusedNames) { + auto setFusedEmpty = [&](Node::RTMap& rtInfo) { + rtInfo[VariantWrapper::type_info.name] = + std::make_shared>(FusedNames()); + }; + auto setFused = [&](Node::RTMap& rtInfo, const std::string& name) { + rtInfo[VariantWrapper::type_info.name] = + std::make_shared>(FusedNames(name)); + }; + checkCustomRt(setFusedEmpty, setFused); +} + +TEST(NetworkContext_CNNNetwork, HashWithPrimitivesPriorityType) { + auto setPrimEmpty = [&](Node::RTMap& rtInfo) { + rtInfo[VariantWrapper::type_info.name] = + std::make_shared>(PrimitivesPriority()); + }; + auto setPrim = [&](Node::RTMap& rtInfo, const std::string& name) { + rtInfo[VariantWrapper::type_info.name] = + std::make_shared>(PrimitivesPriority(name)); + }; + checkCustomRt(setPrimEmpty, setPrim); +} + +TEST(NetworkContext_CNNNetwork, HashWithAffinity) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + auto net3 = createNetwork(); + auto & op2 = net2.getFunction()->get_ops().front()->get_rt_info(); + op2["affinity"] = std::make_shared>("testAffinity"); + + auto & op3 = net3.getFunction()->get_ops().front()->get_rt_info(); + op3["affinity"] = std::make_shared>("testAffinity"); + + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + ASSERT_EQ(NetworkCompilationContext::computeHash(net2, {}), + NetworkCompilationContext::computeHash(net3, {})); +} + +TEST(NetworkContext_CNNNetwork, HashWithFutureRt_string) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + auto net3 = createNetwork(); + + auto & op1 = net1.getFunction()->get_ops().front()->get_rt_info(); + op1["someFutureKey"] = std::make_shared>("hello"); + + auto & op2 = net2.getFunction()->get_ops().front()->get_rt_info(); + op2["someFutureKey"] = std::make_shared>("hello"); + + auto & op3 = net3.getFunction()->get_ops().front()->get_rt_info(); + op3["someFutureKey"] = std::make_shared>("olleh"); + + ASSERT_EQ(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + ASSERT_NE(NetworkCompilationContext::computeHash(net2, {}), + NetworkCompilationContext::computeHash(net3, {})); +} + +TEST(NetworkContext_CNNNetwork, HashWithFutureRt_int64) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + auto net3 = createNetwork(); + + auto & op1 = net1.getFunction()->get_ops().front()->get_rt_info(); + op1["someFutureKey"] = std::make_shared>(42); + + auto & op2 = net2.getFunction()->get_ops().front()->get_rt_info(); + op2["someFutureKey"] = std::make_shared>(42); + + auto & op3 = net3.getFunction()->get_ops().front()->get_rt_info(); + op3["someFutureKey"] = std::make_shared>(43); + + ASSERT_EQ(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + + ASSERT_NE(NetworkCompilationContext::computeHash(net2, {}), + NetworkCompilationContext::computeHash(net3, {})); +} + +TEST(NetworkContext_CNNNetwork, HashWithDifferentResults) { + auto net1 = createNetwork(); + auto net2 = createNetwork(); + net2.getFunction()->remove_result(net2.getFunction()->get_results().front()); + auto net3 = createNetwork(); + net3.getFunction()->remove_result(net3.getFunction()->get_results().front()); + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + ASSERT_EQ(NetworkCompilationContext::computeHash(net2, {}), + NetworkCompilationContext::computeHash(net3, {})); +} + +TEST(NetworkContext_CNNNetwork, HashWithDifferentMeanValues) { + auto updatePreprocess = [&](CNNNetwork& cnnNet) { + auto &preProcess = cnnNet.getInputsInfo().begin()->second->getPreProcess(); + preProcess.init(3); + preProcess[0]->stdScale = 2; + preProcess[1]->stdScale = 3; + preProcess[2]->stdScale = 4; + preProcess[0]->meanValue = 0; + preProcess[1]->meanValue = 1; + preProcess[2]->meanValue = 2; + preProcess.setVariant(InferenceEngine::MEAN_VALUE); + }; + auto net1 = createNetwork(); + auto net2 = createNetwork(); + updatePreprocess(net2); + auto net3 = createNetwork(); + updatePreprocess(net3); + ASSERT_NE(NetworkCompilationContext::computeHash(net1, {}), + NetworkCompilationContext::computeHash(net2, {})); + ASSERT_EQ(NetworkCompilationContext::computeHash(net2, {}), + NetworkCompilationContext::computeHash(net3, {})); +} + +//////////////////////////////////////////// + +TEST(NetworkContext_ModelName, HashOfSame) { + ASSERT_EQ(NetworkCompilationContext::computeHash("model1", {}), + NetworkCompilationContext::computeHash("model1", {})); + + ASSERT_NE(NetworkCompilationContext::computeHash("model1", {}), + NetworkCompilationContext::computeHash("model2", {})); + + ASSERT_NE(NetworkCompilationContext::computeHash("model1", {{"key", "value"}}), + NetworkCompilationContext::computeHash("model1", {})); + + ASSERT_EQ(NetworkCompilationContext::computeHash("model1", {{"key", "value"}}), + NetworkCompilationContext::computeHash("model1", {{"key", "value"}})); +} + +TEST(NetworkContext_ModelName, HashOfExistingFile) { + auto file1 = generateTestFilePrefix() + ".xml"; + auto file2 = std::string(".") + CommonTestUtils::FileSeparator + file1; + + FileGuard guard(file1); + { + std::ofstream os(file1); + os << "test"; + } + ASSERT_EQ(NetworkCompilationContext::computeHash(file1, {}), + NetworkCompilationContext::computeHash(file1, {})); + + ASSERT_EQ(NetworkCompilationContext::computeHash(file1, {}), + NetworkCompilationContext::computeHash(file2, {})); + + ASSERT_NE(NetworkCompilationContext::computeHash(file1, {{"key", "value"}}), + NetworkCompilationContext::computeHash(file2, {})); + + ASSERT_EQ(NetworkCompilationContext::computeHash(file1, {{"key", "value"}}), + NetworkCompilationContext::computeHash(file2, {{"key", "value"}})); +} diff --git a/inference-engine/tests/unit/inference_engine/ie_compound_blob_test.cpp b/inference-engine/tests/unit/inference_engine/ie_compound_blob_test.cpp index 2ffb7a0721e9a9..fd52f8cd609eaa 100644 --- a/inference-engine/tests/unit/inference_engine/ie_compound_blob_test.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_compound_blob_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -139,7 +139,7 @@ TEST(BlobConversionTests, blobSharesOwnershipOnCast) { TEST_F(CompoundBlobTests, cannotCreateCompoundBlobFromNullptr) { Blob::Ptr valid = make_shared_blob(TensorDesc(Precision::U8, {1, 3, 4, 4}, NCHW)); EXPECT_THROW(make_shared_blob(std::vector({valid, nullptr})), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_F(CompoundBlobTests, canCreateEmptyCompoundBlob) { @@ -174,7 +174,7 @@ TEST_F(CompoundBlobTests, cannotCreateCompoundBlobFromCompoundBlob) { verifyCompoundBlob(_test_blob); EXPECT_THROW(make_shared_blob(std::vector({blob, _test_blob})), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_F(CompoundBlobTests, compoundBlobHoldsCorrectDataInCorrectOrder) { @@ -248,46 +248,46 @@ TEST_F(CompoundBlobTests, compoundBlobHoldsValidDataWhenUnderlyingBlobIsDestroye TEST_F(NV12BlobTests, cannotCreateNV12BlobFromNullptrBlobs) { Blob::Ptr valid = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 4, 4}, NHWC)); EXPECT_THROW(make_shared_blob(valid, nullptr), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); EXPECT_THROW(make_shared_blob(nullptr, valid), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_F(NV12BlobTests, cannotCreateNV12BlobFromCompoundBlobs) { Blob::Ptr blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 4, 4}, NHWC)); auto cblob = make_shared_blob(std::vector({blob})); EXPECT_THROW(make_shared_blob(cblob, blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); EXPECT_THROW(make_shared_blob(blob, cblob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithDifferentElementSize) { Blob::Ptr blob_u8 = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 4, 4}, NHWC)); Blob::Ptr blob_float = make_shared_blob(TensorDesc(Precision::FP32, {1, 2, 2, 2}, NHWC)); EXPECT_THROW(make_shared_blob(blob_u8, blob_float), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithNonU8Precision) { Blob::Ptr float_y_blob = make_shared_blob(TensorDesc(Precision::FP32, {1, 1, 4, 4}, NHWC)); Blob::Ptr float_uv_blob = make_shared_blob(TensorDesc(Precision::FP32, {1, 2, 2, 2}, NHWC)); EXPECT_THROW(make_shared_blob(float_y_blob, float_uv_blob), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithInconsistentBatchSize) { Blob::Ptr y = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 4, 4}, NHWC)); Blob::Ptr uv = make_shared_blob(TensorDesc(Precision::U8, {2, 2, 2, 2}, NHWC)); - EXPECT_THROW(make_shared_blob(y, uv), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y, uv), InferenceEngine::Exception); } TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithWrongChannelNumber) { Blob::Ptr y = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 4, 4}, NHWC)); Blob::Ptr uv = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 2, 2}, NHWC)); - EXPECT_THROW(make_shared_blob(y, y), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(uv, uv), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(uv, y), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y, y), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(uv, uv), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(uv, y), InferenceEngine::Exception); } TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithWrongWidthRatio) { @@ -296,10 +296,10 @@ TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithWrongWidthRatio) { Blob::Ptr uv1 = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 5, 3}, NHWC)); Blob::Ptr uv2 = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 6, 3}, NHWC)); Blob::Ptr uv3 = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 8, 3}, NHWC)); - EXPECT_THROW(make_shared_blob(y, uv0), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y, uv1), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y, uv2), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y, uv3), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y, uv0), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y, uv1), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y, uv2), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y, uv3), InferenceEngine::Exception); } TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithWrongHeightRatio) { @@ -308,10 +308,10 @@ TEST_F(NV12BlobTests, cannotCreateNV12BlobFromPlanesWithWrongHeightRatio) { Blob::Ptr uv1 = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 3, 5}, NHWC)); Blob::Ptr uv2 = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 3, 6}, NHWC)); Blob::Ptr uv3 = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 3, 8}, NHWC)); - EXPECT_THROW(make_shared_blob(y, uv0), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y, uv1), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y, uv2), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y, uv3), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y, uv0), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y, uv1), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y, uv2), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y, uv3), InferenceEngine::Exception); } TEST_F(NV12BlobTests, canCreateNV12BlobFromTwoPlanes) { @@ -351,8 +351,8 @@ TEST_F(I420BlobTests, canCreateI420BlobFromThreeMovedPlanes) { TEST_F(I420BlobTests, cannotCreateI420BlobFromNullptrBlobs) { Blob::Ptr valid = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 4, 4}, NHWC)); - EXPECT_THROW(make_shared_blob(valid, nullptr, nullptr), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(nullptr, valid, nullptr), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(valid, nullptr, nullptr), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(nullptr, valid, nullptr), InferenceEngine::Exception); } TEST_F(I420BlobTests, cannotCreateI420BlobFromCompoundBlobs) { @@ -367,7 +367,7 @@ TEST_F(I420BlobTests, cannotCreateI420BlobFromCompoundBlobs) { auto c_y_blob = make_cblob(y_blob); auto c_u_blob = make_cblob(u_blob); auto c_v_blob = make_cblob(v_blob); - using ie_exception_t = InferenceEngine::details::InferenceEngineException; + using ie_exception_t = InferenceEngine::Exception; EXPECT_THROW(make_shared_blob(c_y_blob, u_blob, v_blob), ie_exception_t); EXPECT_THROW(make_shared_blob(y_blob, c_u_blob, v_blob), ie_exception_t); @@ -379,7 +379,7 @@ TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithDifferentElementSize) { Blob::Ptr u_blob_float = make_shared_blob(TensorDesc(Precision::FP32, {1, 1, 2, 2}, NHWC)); Blob::Ptr v_blob_float = make_shared_blob(TensorDesc(Precision::FP32, {1, 1, 2, 2}, NHWC)); - EXPECT_THROW(make_shared_blob(y_blob_u8, u_blob_float, v_blob_float), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y_blob_u8, u_blob_float, v_blob_float), InferenceEngine::Exception); } TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithNonU8Precision) { @@ -387,23 +387,23 @@ TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithNonU8Precision) { Blob::Ptr u_blob_float = make_shared_blob(TensorDesc(Precision::FP32, {1, 1, 2, 2}, NHWC)); Blob::Ptr v_blob_float = make_shared_blob(TensorDesc(Precision::FP32, {1, 1, 2, 2}, NHWC)); - EXPECT_THROW(make_shared_blob(y_blob_float, u_blob_float, v_blob_float), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y_blob_float, u_blob_float, v_blob_float), InferenceEngine::Exception); } TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithInconsistentBatchSize) { Blob::Ptr y_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 6, 8}, NHWC)); Blob::Ptr u_blob = make_shared_blob(TensorDesc(Precision::U8, {2, 1, 3, 4}, NHWC)); Blob::Ptr v_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 3, 4}, NHWC)); - EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::Exception); } TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithWrongChannelNumber) { Blob::Ptr y_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 6, 8}, NHWC)); Blob::Ptr u_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 2, 3, 4}, NHWC)); Blob::Ptr v_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 3, 4}, NHWC)); - EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::Exception); } TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithWrongWidthRatio) { @@ -411,8 +411,8 @@ TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithWrongWidthRatio) { Blob::Ptr u_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 3, 2}, NHWC)); Blob::Ptr v_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 3, 4}, NHWC)); - EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::Exception); } TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithWrongHeightRatio) { @@ -420,8 +420,8 @@ TEST_F(I420BlobTests, cannotCreateI420BlobFromPlanesWithWrongHeightRatio) { Blob::Ptr u_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 2, 4}, NHWC)); Blob::Ptr v_blob = make_shared_blob(TensorDesc(Precision::U8, {1, 1, 3, 4}, NHWC)); - EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::details::InferenceEngineException); - EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(make_shared_blob(y_blob, u_blob, v_blob), InferenceEngine::Exception); + EXPECT_THROW(make_shared_blob(y_blob, v_blob, u_blob), InferenceEngine::Exception); } diff --git a/inference-engine/tests/unit/inference_engine/ie_exception_test.cpp b/inference-engine/tests/unit/inference_engine/ie_exception_test.cpp index ec3416ef5c8b7d..f0440fd81d1dee 100644 --- a/inference-engine/tests/unit/inference_engine/ie_exception_test.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_exception_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6,29 +6,24 @@ #include #include -#include "details/ie_exception.hpp" #include "ie_common.h" +#include "cpp_interfaces/exception2status.hpp" // TODO: cover and
from // tests/unit/inference_engine/exception_test.cpp -TEST(ExceptionTests, CopyConstructor) { - InferenceEngine::details::InferenceEngineException exception(__FILE__, __LINE__); - ASSERT_NO_THROW(InferenceEngine::details::InferenceEngineException {exception}); -} - TEST(ExceptionTests, CanThrowUsingMacro) { std::string message = "Exception message!"; - ASSERT_THROW(THROW_IE_EXCEPTION << message, InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(IE_THROW() << message, InferenceEngine::Exception); } TEST(ExceptionTests, CanThrowScoringException) { - InferenceEngine::details::InferenceEngineException exception(__FILE__, __LINE__); - ASSERT_THROW(throw exception, InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception exception{""}; + ASSERT_THROW(throw exception, InferenceEngine::Exception); } TEST(ExceptionTests, CanDefineExceptionContent) { - InferenceEngine::details::InferenceEngineException exception(__FILE__, __LINE__); + InferenceEngine::Exception exception{""}; ASSERT_STREQ(exception.what(), ""); } @@ -39,10 +34,10 @@ TEST(ExceptionTests, ExceptionShowsCorrectMessageDebugVersion) { int lineNum = 0; try { lineNum = __LINE__ + 1; - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } - catch (InferenceEngine::details::InferenceEngineException &iex) { - std::string ref_message = message + "\n" + __FILE__ + ":" + std::to_string(lineNum); + catch (InferenceEngine::Exception &iex) { + std::string ref_message = std::string {"\n"} + __FILE__ + ":" + std::to_string(lineNum) + " " + message; ASSERT_STREQ(iex.what(), ref_message.c_str()); } } @@ -50,85 +45,25 @@ TEST(ExceptionTests, ExceptionShowsCorrectMessageDebugVersion) { TEST(ExceptionTests, ExceptionShowsCorrectMessageReleaseVersion) { std::string message = "exception"; try { - THROW_IE_EXCEPTION << message; + IE_THROW() << message; } - catch (InferenceEngine::details::InferenceEngineException &iex) { + catch (InferenceEngine::Exception &iex) { std::string ref_message = message; ASSERT_STREQ(iex.what(), ref_message.c_str()); } } #endif -TEST(ExceptionTests, ExceptionCanBeCoughtAsStandard) { - ASSERT_THROW(THROW_IE_EXCEPTION, std::exception); +TEST(ExceptionTests, ExceptionCanBeCaughtAsStandard) { + ASSERT_THROW(IE_THROW(), std::exception); } TEST(ExceptionTests, CanThrowStatusCode) { try { - THROW_IE_EXCEPTION << InferenceEngine::details::as_status << InferenceEngine::StatusCode::INFER_NOT_STARTED; - } - catch (const InferenceEngine::details::InferenceEngineException &iex) { - ASSERT_TRUE(iex.hasStatus()); - ASSERT_EQ(iex.getStatus(), InferenceEngine::StatusCode::INFER_NOT_STARTED); - } -} - -TEST(ExceptionTests, HandleOnlyFirstStatus) { - try { - THROW_IE_EXCEPTION << InferenceEngine::details::as_status << - InferenceEngine::StatusCode::NETWORK_NOT_LOADED << InferenceEngine::StatusCode::NOT_FOUND; - } - catch (const InferenceEngine::details::InferenceEngineException &iex) { - ASSERT_TRUE(iex.hasStatus()); - ASSERT_EQ(iex.getStatus(), InferenceEngine::StatusCode::NETWORK_NOT_LOADED); - } -} - -TEST(ExceptionTests, IgnoreNotStatusCodeEnumAfterManip) { - enum testEnum : int { - FIRST = 1 - }; - try { - THROW_IE_EXCEPTION << InferenceEngine::details::as_status << testEnum::FIRST; - } - catch (const InferenceEngine::details::InferenceEngineException &iex) { - ASSERT_FALSE(iex.hasStatus()); - } -} - -TEST(ExceptionTests, CanUseManipulatorStandalone) { - auto iex = InferenceEngine::details::InferenceEngineException("filename", 1); - as_status(iex); - try { - throw iex << InferenceEngine::StatusCode::NOT_IMPLEMENTED; - } catch (const InferenceEngine::details::InferenceEngineException &iex) { - ASSERT_TRUE(iex.hasStatus()); - ASSERT_EQ(iex.getStatus(), InferenceEngine::StatusCode::NOT_IMPLEMENTED); - } -} - -TEST(ExceptionTests, StatusCodeNotAppearInMessageAfterCatch) { - std::string message = "Exception message!"; - std::string strStatusCode = std::to_string(InferenceEngine::StatusCode::NETWORK_NOT_LOADED); - try { - THROW_IE_EXCEPTION << "" << message; - } - catch (const InferenceEngine::details::InferenceEngineException &iex) { - ASSERT_THAT(iex.what(), testing::HasSubstr(message)); - ASSERT_THAT(iex.what(), testing::Not(testing::HasSubstr(""))); - } -} - -TEST(ExceptionTests, StatusCodeAppearInMessageAfterCatch) { - std::string message = "Exception message!"; - std::string strStatusCode = std::to_string(InferenceEngine::StatusCode::NETWORK_NOT_LOADED); - try { - THROW_IE_EXCEPTION << "" << message; + IE_THROW(InferNotStarted); } - catch (const InferenceEngine::details::InferenceEngineException &iex) { - ASSERT_THAT(iex.what(), testing::HasSubstr(message)); - ASSERT_THAT(iex.what(), testing::HasSubstr("")); + catch (const InferenceEngine::InferNotStarted& iex) { + ASSERT_EQ(InferenceEngine::ExceptionToStatus(iex), InferenceEngine::StatusCode::INFER_NOT_STARTED); } } @@ -142,10 +77,10 @@ TEST(ExceptionTests, ExceptionWithAssertThrowsNothingIfExpressionTrue) { } TEST(ExceptionTests, ExceptionWithAssertThrowsExceptionIfFalse) { - ASSERT_THROW(IE_ASSERT(false), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(IE_ASSERT(false), InferenceEngine::Exception); } TEST(ExceptionTests, ExceptionWithAssertThrowsExceptionIfFalseExpession) { - ASSERT_THROW(IE_ASSERT(0 == 1), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(IE_ASSERT(0 == 1), InferenceEngine::Exception); } #endif // NDEBUG diff --git a/inference-engine/tests/unit/inference_engine/ie_executable_network_test.cpp b/inference-engine/tests/unit/inference_engine/ie_executable_network_test.cpp index 21ea155807d468..d2f39bc4a4d2f8 100644 --- a/inference-engine/tests/unit/inference_engine/ie_executable_network_test.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_executable_network_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -35,7 +35,7 @@ TEST(ExecutableNetworkConstructorTests, ThrowsIfConstructFromNullptr) { // TODO issue: 26390; ExecutableNetwork's constructor shouldn't be available EXPECT_NO_THROW(InferenceEngine::ExecutableNetwork exeNet{}); - EXPECT_THROW(InferenceEngine::ExecutableNetwork exeNet{nullptr}, InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(InferenceEngine::ExecutableNetwork exeNet{nullptr}, InferenceEngine::Exception); } TEST(ExecutableNetworkConstructorTests, CanConstruct) { @@ -45,8 +45,9 @@ TEST(ExecutableNetworkConstructorTests, CanConstruct) { TEST(ExecutableNetworkDestructorTests, Destruct) { std::shared_ptr mockIExeNet_p = std::make_shared(); - InferenceEngine::ExecutableNetwork exeNet{mockIExeNet_p}; - exeNet.~ExecutableNetwork(); + { + InferenceEngine::ExecutableNetwork exeNet{mockIExeNet_p}; + } // Call of destructor should decrease counter of shared_ptr ASSERT_EQ(mockIExeNet_p.use_count(), 1); } @@ -75,7 +76,7 @@ TEST_F(ExecutableNetworkTests, GetOutputsInfoThrowsIfReturnErr) { .Times(1) .WillOnce(Return(InferenceEngine::GENERAL_ERROR)); - ASSERT_THROW(exeNetwork->GetOutputsInfo(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exeNetwork->GetOutputsInfo(), InferenceEngine::Exception); } TEST_F(ExecutableNetworkTests, GetOutputsInfo) { @@ -93,7 +94,7 @@ TEST_F(ExecutableNetworkTests, GetInputsInfoThrowsIfReturnErr) { .Times(1) .WillOnce(Return(InferenceEngine::GENERAL_ERROR)); - ASSERT_THROW(exeNetwork->GetInputsInfo(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exeNetwork->GetInputsInfo(), InferenceEngine::Exception); } TEST_F(ExecutableNetworkTests, GetInputsInfo) { @@ -109,7 +110,7 @@ TEST_F(ExecutableNetworkTests, GetInputsInfo) { TEST_F(ExecutableNetworkTests, resetThrowsIfResetToNullptr) { InferenceEngine::IExecutableNetwork::Ptr mockIExeNet_p_2{}; - ASSERT_THROW(exeNetwork->reset(mockIExeNet_p_2), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exeNetwork->reset(mockIExeNet_p_2), InferenceEngine::Exception); } TEST_F(ExecutableNetworkTests, reset) { @@ -132,7 +133,7 @@ TEST_F(ExecutableNetworkTests, QueryStateThrowsIfReturnErr) { EXPECT_CALL(*mockIExeNet_p.get(), QueryState(_, _, _)) .Times(1) .WillOnce(Return(InferenceEngine::GENERAL_ERROR)); - EXPECT_THROW(exeNetwork->QueryState(), InferenceEngine::details::InferenceEngineException); + EXPECT_THROW(exeNetwork->QueryState(), InferenceEngine::Exception); } TEST_F(ExecutableNetworkTests, QueryStateIfReturnOutOfBounds) { @@ -181,13 +182,13 @@ TEST_F(ExecutableNetworkWithIInferReqTests, CanCreateInferRequest) { TEST_F(ExecutableNetworkWithIInferReqTests, CreateInferRequestThrowsIfReturnNotOK) { EXPECT_CALL(*mockIExeNet_p.get(), CreateInferRequest(_, _)).WillOnce(Return(InferenceEngine::GENERAL_ERROR)); - ASSERT_THROW(exeNetwork->CreateInferRequest(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exeNetwork->CreateInferRequest(), InferenceEngine::Exception); } TEST_F(ExecutableNetworkWithIInferReqTests, CreateInferRequestThrowsIfSetRequestToNullptr) { EXPECT_CALL(*mockIExeNet_p.get(), CreateInferRequest(_, _)) .WillOnce(DoAll(SetArgReferee<0>(nullptr), Return(InferenceEngine::OK))); - ASSERT_THROW(exeNetwork->CreateInferRequest(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exeNetwork->CreateInferRequest(), InferenceEngine::Exception); } // CreateInferRequestPtr @@ -201,13 +202,13 @@ TEST_F(ExecutableNetworkWithIInferReqTests, CanCreateInferRequestPtr) { TEST_F(ExecutableNetworkWithIInferReqTests, CreateInferRequestPtrThrowsIfReturnNotOK) { EXPECT_CALL(*mockIExeNet_p.get(), CreateInferRequest(_, _)).WillOnce(Return(InferenceEngine::GENERAL_ERROR)); - ASSERT_THROW(exeNetwork->CreateInferRequestPtr(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exeNetwork->CreateInferRequestPtr(), InferenceEngine::Exception); } TEST_F(ExecutableNetworkWithIInferReqTests, CreateInferRequestPtrThrowsIfSetRequestToNullptr) { EXPECT_CALL(*mockIExeNet_p.get(), CreateInferRequest(_, _)) .WillOnce(DoAll(SetArgReferee<0>(nullptr), Return(InferenceEngine::OK))); - ASSERT_THROW(exeNetwork->CreateInferRequestPtr(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(exeNetwork->CreateInferRequestPtr(), InferenceEngine::Exception); } IE_SUPPRESS_DEPRECATED_START @@ -223,7 +224,7 @@ class ExecutableNetworkBaseTests : public ::testing::Test { virtual void SetUp() { mock_impl.reset(new MockIExecutableNetworkInternal()); - exeNetwork = shared_from_irelease(new ExecutableNetworkBase(mock_impl)); + exeNetwork = std::make_shared(mock_impl); } }; diff --git a/inference-engine/tests/unit/inference_engine/ie_executor_manager_tests.cpp b/inference-engine/tests/unit/inference_engine/ie_executor_manager_tests.cpp index 26835cd46eb78b..0b2bde401a8724 100644 --- a/inference-engine/tests/unit/inference_engine/ie_executor_manager_tests.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_executor_manager_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/inference_engine/ie_extension_test.cpp b/inference-engine/tests/unit/inference_engine/ie_extension_test.cpp index 89f48bee6e2545..efa968775e0341 100644 --- a/inference-engine/tests/unit/inference_engine/ie_extension_test.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_extension_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -25,34 +25,34 @@ std::string getExtensionPath() { } TEST(ExtensionTests, testGetOpSets) { - IExtensionPtr extension = make_so_pointer(getExtensionPath()); + IExtensionPtr extension = std::make_shared(getExtensionPath()); auto opsets = extension->getOpSets(); ASSERT_FALSE(opsets.empty()); opsets.clear(); } TEST(ExtensionTests, testGetImplTypes) { - IExtensionPtr extension = make_so_pointer(getExtensionPath()); + IExtensionPtr extension = std::make_shared(getExtensionPath()); auto opset = extension->getOpSets().begin()->second; std::shared_ptr op(opset.create(opset.get_types_info().begin()->name)); ASSERT_FALSE(extension->getImplTypes(op).empty()); } TEST(ExtensionTests, testGetImplTypesThrowsIfNgraphNodeIsNullPtr) { - IExtensionPtr extension = make_so_pointer(getExtensionPath()); + IExtensionPtr extension = std::make_shared(getExtensionPath()); ASSERT_THROW(extension->getImplTypes(std::shared_ptr ()), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST(ExtensionTests, testGetImplementation) { - IExtensionPtr extension = make_so_pointer(getExtensionPath()); + IExtensionPtr extension = std::make_shared(getExtensionPath()); auto opset = extension->getOpSets().begin()->second; std::shared_ptr op(opset.create("Template")); ASSERT_NE(nullptr, extension->getImplementation(op, extension->getImplTypes(op)[0])); } TEST(ExtensionTests, testGetImplementationThrowsIfNgraphNodeIsNullPtr) { - IExtensionPtr extension = make_so_pointer(getExtensionPath()); + IExtensionPtr extension = std::make_shared(getExtensionPath()); ASSERT_THROW(extension->getImplementation(std::shared_ptr (), ""), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } diff --git a/inference-engine/tests/unit/inference_engine/ie_locked_memory_test.cpp b/inference-engine/tests/unit/inference_engine/ie_locked_memory_test.cpp index c4c44da205f531..51343a1c859f76 100644 --- a/inference-engine/tests/unit/inference_engine/ie_locked_memory_test.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_locked_memory_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/inference_engine/ie_plugin_ptr.cpp b/inference-engine/tests/unit/inference_engine/ie_plugin_ptr.cpp index fe612fb38c32b2..0f66277141e4db 100644 --- a/inference-engine/tests/unit/inference_engine/ie_plugin_ptr.cpp +++ b/inference-engine/tests/unit/inference_engine/ie_plugin_ptr.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -40,21 +40,12 @@ class PluginTest: public ::testing::Test { MockInferencePluginInternal2 engine; }; -TEST_F(PluginTest, canCreatePlugin) { - auto ptr = make_std_function("CreatePluginEngineProxy"); - - unique_ptr> smart_ptr(ptr(nullptr), [](IInferencePlugin *p) { - p->Release(); - }); -} - TEST_F(PluginTest, canCreatePluginUsingSmartPtr) { ASSERT_NO_THROW(InferenceEnginePluginPtr ptr(get_mock_engine_name())); } TEST_F(PluginTest, shouldThrowExceptionIfPluginNotExist) { - EXPECT_THROW(InferenceEnginePluginPtr("unknown_plugin"), InferenceEngineException); + EXPECT_THROW(InferenceEnginePluginPtr("unknown_plugin"), Exception); } InferenceEnginePluginPtr PluginTest::getPtr() { @@ -66,11 +57,11 @@ TEST_F(PluginTest, canSetConfiguration) { InferenceEnginePluginPtr ptr = getPtr(); // TODO: dynamic->reinterpret because of clang/gcc cannot // dynamically cast this MOCK object - ASSERT_TRUE(reinterpret_cast(*ptr)->config.empty()); + ASSERT_TRUE(dynamic_cast(ptr.operator->())->config.empty()); std::map config = { { "key", "value" } }; ASSERT_NO_THROW(ptr->SetConfig(config)); config.clear(); - ASSERT_STREQ(reinterpret_cast(*ptr)->config["key"].c_str(), "value"); + ASSERT_STREQ(dynamic_cast(ptr.operator->())->config["key"].c_str(), "value"); } diff --git a/inference-engine/tests/unit/inference_engine/precision_utils_test.cpp b/inference-engine/tests/unit/inference_engine/precision_utils_test.cpp index b987e5d8d898bf..d4636fc3cb7881 100644 --- a/inference-engine/tests/unit/inference_engine/precision_utils_test.cpp +++ b/inference-engine/tests/unit/inference_engine/precision_utils_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/inference_engine/saturated_cast_test.cpp b/inference-engine/tests/unit/inference_engine/saturated_cast_test.cpp index 1667fb984fdd0c..e22f3a18c6ee0c 100644 --- a/inference-engine/tests/unit/inference_engine/saturated_cast_test.cpp +++ b/inference-engine/tests/unit/inference_engine/saturated_cast_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/inference_engine/system_allocator_test.cpp b/inference-engine/tests/unit/inference_engine/system_allocator_test.cpp index c0b03800005326..cc2e2fb44ebed4 100644 --- a/inference-engine/tests/unit/inference_engine/system_allocator_test.cpp +++ b/inference-engine/tests/unit/inference_engine/system_allocator_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -9,14 +9,10 @@ #include "system_allocator.hpp" +using namespace InferenceEngine; class SystemAllocatorReleaseTests : public CommonTestUtils::TestsCommon { }; -TEST_F(SystemAllocatorReleaseTests, canRelease) { - SystemMemoryAllocator *allocator_ = new SystemMemoryAllocator(); - allocator_->Release(); -} - class SystemAllocatorTests : public CommonTestUtils::TestsCommon { protected: void SetUp() override { diff --git a/inference-engine/tests/unit/inference_engine/transformations/low_precision/reshape_test.cpp b/inference-engine/tests/unit/inference_engine/transformations/low_precision/reshape_test.cpp index 9df8765b640efc..403f73ae14c98a 100644 --- a/inference-engine/tests/unit/inference_engine/transformations/low_precision/reshape_test.cpp +++ b/inference-engine/tests/unit/inference_engine/transformations/low_precision/reshape_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/inference_engine/transformations/low_precision/update_reshape_values.cpp b/inference-engine/tests/unit/inference_engine/transformations/low_precision/update_reshape_values.cpp new file mode 100644 index 00000000000000..43da1491dd41a6 --- /dev/null +++ b/inference-engine/tests/unit/inference_engine/transformations/low_precision/update_reshape_values.cpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include "low_precision/network_helper.hpp" + +using LPT_ReshapeTransformation = ::testing::Test; + +TEST(LPT_UpdateReshapeValuesTransformation, updateReshapeValues_3_3_32_1_to_1_1_32_1) { + ASSERT_EQ( + ngraph::Shape({1, 1, 32, 1}), + ngraph::pass::low_precision::NetworkHelper::updateReshapeValues({ 1, 32 }, { 9, 32 }, { 3, 3, 32, 1 })); +} diff --git a/inference-engine/tests/unit/vpu/CMakeLists.txt b/inference-engine/tests/unit/vpu/CMakeLists.txt index 5be30a30926832..685bcbacc0bdc3 100644 --- a/inference-engine/tests/unit/vpu/CMakeLists.txt +++ b/inference-engine/tests/unit/vpu/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests/unit/vpu/base/graph_transformer_tests.cpp b/inference-engine/tests/unit/vpu/base/graph_transformer_tests.cpp index efe885dbf12c8a..5f018914a5ee8e 100644 --- a/inference-engine/tests/unit/vpu/base/graph_transformer_tests.cpp +++ b/inference-engine/tests/unit/vpu/base/graph_transformer_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -163,7 +163,10 @@ void TestModel::createOutputs(std::vector descriptors) { } } -Stage TestModel::addStage(const std::vector& curInputInfos, const std::vector& curOutputInfos) { +Stage TestModel::addStage( + const std::vector& curInputInfos, + const std::vector& curOutputInfos, + StageType stageType) { DataVector curInputs; for (const auto& info : curInputInfos) { if (info.type == InputType::Original) { @@ -188,7 +191,7 @@ Stage TestModel::addStage(const std::vector& curInputInfos, const std auto stage = _model->addNewStage( formatString("Stage %m%m%d", std::setw(2), std::setfill('0'), _stages.size()), - StageType::None, + stageType, nullptr, curInputs, curOutputs); diff --git a/inference-engine/tests/unit/vpu/base/graph_transformer_tests.hpp b/inference-engine/tests/unit/vpu/base/graph_transformer_tests.hpp index e8e7d453d18b19..ea2fa0de07b694 100644 --- a/inference-engine/tests/unit/vpu/base/graph_transformer_tests.hpp +++ b/inference-engine/tests/unit/vpu/base/graph_transformer_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -95,7 +95,10 @@ class TestModel final { void createInputs(std::vector inputDescs = {}); void createOutputs(std::vector outputDescs = {}); - Stage addStage(const std::vector& curInputInfos, const std::vector& curOutputInfos); + Stage addStage( + const std::vector& curInputInfos, + const std::vector& curOutputInfos, + StageType stageType = StageType::None); void setStageDataOrderInfo( int stageInd, diff --git a/inference-engine/tests/unit/vpu/blob_reader_tests.cpp b/inference-engine/tests/unit/vpu/blob_reader_tests.cpp index 121064bc4320ed..91115fc522a8dd 100644 --- a/inference-engine/tests/unit/vpu/blob_reader_tests.cpp +++ b/inference-engine/tests/unit/vpu/blob_reader_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/frontend_tests/dsr_parsing_tests.cpp b/inference-engine/tests/unit/vpu/frontend_tests/dsr_parsing_tests.cpp index 58045b894b666c..dbcf4587ef3792 100644 --- a/inference-engine/tests/unit/vpu/frontend_tests/dsr_parsing_tests.cpp +++ b/inference-engine/tests/unit/vpu/frontend_tests/dsr_parsing_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/data_to_shape_edge.cpp b/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/data_to_shape_edge.cpp index c360026adc9712..56af9052f16c8f 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/data_to_shape_edge.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/data_to_shape_edge.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -328,12 +328,12 @@ TEST_F(DataToShapeEdgeProcessingTests, ReplaceDataToShapeParentReplacesConnectio ASSERT_EQ(finalShape->childDataToShapeEdges().front(), dataToShapeEdge); ASSERT_EQ(dataToShapeEdge->parent(), finalShape); - ASSERT_TRUE(initialShape->dependentStagesEdges().empty()); - ASSERT_FALSE(finalShape->dependentStagesEdges().empty()); + ASSERT_TRUE(firstShapeProcessor->childDependencyEdges().empty()); + ASSERT_FALSE(secondShapeProcessor->childDependencyEdges().empty()); - const auto& stageDependencyEdge = finalShape->dependentStagesEdges().front(); - ASSERT_EQ(stageDependencyEdge->dependentStage(), dataProcessor); - ASSERT_EQ(stageDependencyEdge->dependency(), finalShape); + const auto& stageDependencyEdge = secondShapeProcessor->childDependencyEdges().front(); + ASSERT_EQ(stageDependencyEdge->child(), dataProcessor); + ASSERT_EQ(stageDependencyEdge->parent(), secondShapeProcessor); } TEST_F(DataToShapeEdgeProcessingTests, ReplaceDataToShapeChildReplacesConnections) { @@ -372,11 +372,11 @@ TEST_F(DataToShapeEdgeProcessingTests, ReplaceDataToShapeChildReplacesConnection ASSERT_EQ(finalData->parentDataToShapeEdge(), dataToShapeEdge); ASSERT_EQ(dataToShapeEdge->child(), finalData); - ASSERT_FALSE(processedShape->dependentStagesEdges().empty()); - const auto& stageDependencyEdge = processedShape->dependentStagesEdges().front(); + ASSERT_FALSE(shapeProcessor->childDependencyEdges().empty()); + const auto& stageDependencyEdge = shapeProcessor->childDependencyEdges().front(); - ASSERT_EQ(stageDependencyEdge->dependentStage(), secondDataProcessor); - ASSERT_EQ(stageDependencyEdge->dependency(), processedShape); + ASSERT_EQ(stageDependencyEdge->child(), secondDataProcessor); + ASSERT_EQ(stageDependencyEdge->parent(), shapeProcessor); } TEST_F(DataToShapeEdgeProcessingTests, DisconnectDatasRemovesConnections) { @@ -408,7 +408,7 @@ TEST_F(DataToShapeEdgeProcessingTests, DisconnectDatasRemovesConnections) { ASSERT_EQ(processedData->parentDataToShapeEdge(), nullptr); ASSERT_TRUE(processedShape->childDataToShapeEdges().empty()); - ASSERT_TRUE(processedShape->dependentStagesEdges().empty()); + ASSERT_TRUE(shapeProcessor->childDependencyEdges().empty()); } } // namespace vpu diff --git a/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/stage_dependency_edge.cpp b/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/stage_dependency_edge.cpp index b73aa7e663b44f..0387e72d63c889 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/stage_dependency_edge.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/edges_tests/stage_dependency_edge.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -22,52 +22,11 @@ class StageDependencyEdgeProcessingTests : public GraphTransformerTest { TestModel _testModel; }; -TEST_F(StageDependencyEdgeProcessingTests, AddStageDependencyAssertsOnNetworkInput) { +TEST_F(StageDependencyEdgeProcessingTests, AddStageDependencyDoesNotAssertOnOutputProducer) { // - // -> [Output] - // [Input] -> (Stage) - // -> [Output] - // - - const DataDesc desc{1}; - - _testModel.createInputs({desc}); - _testModel.createOutputs({desc, desc}); - - auto stage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(0), - OutputInfo::fromNetwork(1)}); - - auto model = _testModel.getBaseModel(); - - ASSERT_ANY_THROW(model->addStageDependency(stage, _testModel.getInputs().front())); -} - -TEST_F(StageDependencyEdgeProcessingTests, AddStageDependencyAssertsOnStageInput) { - // - // -> [Output] - // [Input] -> (Stage) // -> [Data] -> (Stage) -> [Output] - // - - const DataDesc desc{1}; - - _testModel.createInputs({desc}); - _testModel.createOutputs({desc, desc}); - - _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), - OutputInfo::fromNetwork(1)}); - auto stage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - - auto model = _testModel.getBaseModel(); - - ASSERT_ANY_THROW(model->addStageDependency(stage, stage->input(0))); -} - -TEST_F(StageDependencyEdgeProcessingTests, AddStageDependencyDoesNotAssertOnOutputData) { - // + // [Input] -> (Stage) | // -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] // const DataDesc desc{1}; @@ -77,19 +36,19 @@ TEST_F(StageDependencyEdgeProcessingTests, AddStageDependencyDoesNotAssertOnOutp _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); } TEST_F(StageDependencyEdgeProcessingTests, AddStageDependencyAssertsIfDependencyExists) { // // -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] + // [Input] -> (Stage) | + // -> [Data] -> (Stage) -> [Output] // const DataDesc desc{1}; @@ -99,20 +58,20 @@ TEST_F(StageDependencyEdgeProcessingTests, AddStageDependencyAssertsIfDependency _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); - ASSERT_ANY_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); + ASSERT_ANY_THROW(model->addStageDependency(parentStage, childStage)); } TEST_F(StageDependencyEdgeProcessingTests, NetWithTwoStagesHasCorrectExecOrder) { // // -> [Data] -> (Stage) -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] + // [Input] -> (Stage) | + // -> [Data] -> (Stage) -> [Output] // const DataDesc desc{1}; @@ -122,24 +81,24 @@ TEST_F(StageDependencyEdgeProcessingTests, NetWithTwoStagesHasCorrectExecOrder) _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::intermediate(desc)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::intermediate(desc)}); _testModel.addStage({InputInfo::fromPrevStage(2)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_TRUE(checkExecutionOrder(model, {dependentStage->id(), dependencyProducer->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {childStage->id(), parentStage->id()})); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); - ASSERT_TRUE(checkExecutionOrder(model, {dependencyProducer->id(), dependentStage->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), childStage->id()})); } TEST_F(StageDependencyEdgeProcessingTests, NetWithThreeStagesHasCorrectExecOrder) { // // -> [Data] -> (Stage) -> [Data] -> (Stage) -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ---------------------------------> (Stage) -> [Output] + // [Input] -> (Stage) | + // -> [Data] ----------------------> (Stage) -> [Output] // const DataDesc desc{1}; @@ -149,77 +108,25 @@ TEST_F(StageDependencyEdgeProcessingTests, NetWithThreeStagesHasCorrectExecOrder _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::intermediate(desc)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(2)}, {OutputInfo::intermediate(desc)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(2)}, {OutputInfo::intermediate(desc)}); _testModel.addStage({InputInfo::fromPrevStage(3)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_TRUE(checkExecutionOrder(model, {dependentStage->id(), dependencyProducer->id()})); - - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); - - ASSERT_TRUE(checkExecutionOrder(model, {dependencyProducer->id(), dependentStage->id()})); -} - -TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyAssertsOnNetworkInput) { - // - // -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] - // - - const DataDesc desc{1}; - - _testModel.createInputs({desc}); - _testModel.createOutputs({desc, desc}); - - _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), - OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); - - auto model = _testModel.getBaseModel(); - - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_TRUE(checkExecutionOrder(model, {childStage->id(), parentStage->id()})); - const auto edge = dependencyProducer->output(0)->dependentStagesEdges().front(); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); - ASSERT_ANY_THROW(model->replaceStageDependency(edge, _testModel.getInputs().front())); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), childStage->id()})); } -TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyAssertsOnStageInput) { +TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyParentAssertsIfDependencyExists) { // // -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] - // - - const DataDesc desc{1}; - - _testModel.createInputs({desc}); - _testModel.createOutputs({desc, desc}); - - _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), - OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); - - auto model = _testModel.getBaseModel(); - - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); - - const auto edge = dependencyProducer->output(0)->dependentStagesEdges().front(); - - ASSERT_ANY_THROW(model->replaceStageDependency(edge, dependentStage->input(0))); -} - -TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyAssertsIfDependencyExists) { - // + // [Input] -> (Stage) | // -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] // const DataDesc desc{1}; @@ -229,25 +136,25 @@ TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyAssertsIfDepend _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); - const auto edge = dependencyProducer->output(0)->dependentStagesEdges().front(); + const auto edge = parentStage->childDependencyEdges().front(); - ASSERT_ANY_THROW(model->replaceStageDependency(edge, dependencyProducer->output(0))); + ASSERT_ANY_THROW(model->replaceStageDependencyParent(edge, parentStage)); } -TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyReplacesConnection) { +TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyParentReplacesConnection) { // // -> [Data] -> (Stage) -> [Output] // // [Input] -> (Stage) -> [Data] -> (Stage) -> [Output] - // | - // -> [Data] ------------> (Stage) -> [Output] + // | + // -> [Data] -> (Stage) -> [Output] // const DataDesc desc{1}; @@ -258,58 +165,32 @@ TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyReplacesConnect _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto initialDependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); - auto resultDependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(2)}, {OutputInfo::fromNetwork(2)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto initialParentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto resultParentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(2)}, {OutputInfo::fromNetwork(2)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, initialDependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(initialParentStage, childStage)); - ASSERT_TRUE(checkExecutionOrder(model, {initialDependencyProducer->id(), dependentStage->id()})); - ASSERT_TRUE(checkExecutionOrder(model, {dependentStage->id(), resultDependencyProducer->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {initialParentStage->id(), childStage->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {childStage->id(), resultParentStage->id()})); - const auto edge = initialDependencyProducer->output(0)->dependentStagesEdges().front(); + const auto edge = initialParentStage->childDependencyEdges().front(); - ASSERT_NO_THROW(model->replaceStageDependency(edge, resultDependencyProducer->output(0))); + ASSERT_NO_THROW(model->replaceStageDependencyParent(edge, resultParentStage)); - ASSERT_EQ(initialDependencyProducer->output(0)->dependentStagesEdges().size(), 0); - ASSERT_EQ(edge->dependency(), resultDependencyProducer->output(0)); + ASSERT_EQ(initialParentStage->childDependencyEdges().size(), 0); + ASSERT_EQ(edge->parent(), resultParentStage); - ASSERT_TRUE(checkExecutionOrder(model, {resultDependencyProducer->id(), dependentStage->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {resultParentStage->id(), childStage->id()})); } -TEST_F(StageDependencyEdgeProcessingTests, ReplaceDependentStageAssertsOnStageInput) { +TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyChildAssertsIfDependencyExists) { // - // -----------> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | // -> [Data] -> (Stage) -> [Output] - // - - const DataDesc desc{1}; - - _testModel.createInputs({desc}); - _testModel.createOutputs({desc, desc}); - - auto dependencyProducer = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), - OutputInfo::intermediate(desc)}); - auto initialDependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto resultDependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); - - auto model = _testModel.getBaseModel(); - - ASSERT_NO_THROW(model->addStageDependency(initialDependentStage, dependencyProducer->output(1))); - - const auto edge = dependencyProducer->output(1)->dependentStagesEdges().front(); - - ASSERT_ANY_THROW(model->replaceDependentStage(edge, resultDependentStage)); -} - -TEST_F(StageDependencyEdgeProcessingTests, ReplaceDependentStageAssertsIfDependencyExists) { - // + // [Input] -> (Stage) | // -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] // const DataDesc desc{1}; @@ -319,25 +200,25 @@ TEST_F(StageDependencyEdgeProcessingTests, ReplaceDependentStageAssertsIfDepende _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); - const auto edge = dependencyProducer->output(0)->dependentStagesEdges().front(); + const auto edge = parentStage->childDependencyEdges().front(); - ASSERT_ANY_THROW(model->replaceDependentStage(edge, dependentStage)); + ASSERT_ANY_THROW(model->replaceStageDependencyChild(edge, childStage)); } -TEST_F(StageDependencyEdgeProcessingTests, ReplaceDependentStageReplacesConnection) { +TEST_F(StageDependencyEdgeProcessingTests, ReplaceStageDependencyChildReplacesConnection) { // // -> [Data] -> (Stage) -> [Output] // // [Input] -> (Stage) -> [Data] -> (Stage) -> [Output] - // | - // -> [Data] ------------> (Stage) -> [Output] + // | + // -> [Data] -> (Stage) -> [Output] // const DataDesc desc{1}; @@ -348,31 +229,31 @@ TEST_F(StageDependencyEdgeProcessingTests, ReplaceDependentStageReplacesConnecti _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto initialDependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto resultDependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(2)}, {OutputInfo::fromNetwork(2)}); + auto initialChildStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto resultChildStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(2)}, {OutputInfo::fromNetwork(2)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(initialDependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, initialChildStage)); - ASSERT_TRUE(checkExecutionOrder(model, {dependencyProducer->id(), initialDependentStage->id()})); - ASSERT_TRUE(checkExecutionOrder(model, {resultDependentStage->id(), dependencyProducer->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), initialChildStage->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {resultChildStage->id(), parentStage->id()})); - const auto edge = dependencyProducer->output(0)->dependentStagesEdges().front(); + const auto edge = parentStage->childDependencyEdges().front(); - ASSERT_NO_THROW(model->replaceDependentStage(edge, resultDependentStage)); + ASSERT_NO_THROW(model->replaceStageDependencyChild(edge, resultChildStage)); - ASSERT_EQ(edge->dependentStage(), resultDependentStage); + ASSERT_EQ(edge->child(), resultChildStage); - ASSERT_TRUE(checkExecutionOrder(model, {dependencyProducer->id(), resultDependentStage->id()})); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), resultChildStage->id()})); } TEST_F(StageDependencyEdgeProcessingTests, RemoveStageDependencyUpdatesNextPrevStages) { // // -> [Data] -> (Stage) -> [Output] - // [Input] -> (Stage) | - // -> [Data] ------------> (Stage) -> [Output] + // [Input] -> (Stage) | + // -> [Data] -> (Stage) -> [Output] // const DataDesc desc{1}; @@ -382,24 +263,24 @@ TEST_F(StageDependencyEdgeProcessingTests, RemoveStageDependencyUpdatesNextPrevS _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); - const auto edge = dependencyProducer->output(0)->dependentStagesEdges().front(); + const auto edge = parentStage->childDependencyEdges().front(); ASSERT_NO_THROW(model->removeStageDependency(edge)); - const auto prevStages = dependentStage->prevStages(); - const auto nextStages = dependencyProducer->prevStages(); + const auto prevStages = childStage->prevStages(); + const auto nextStages = parentStage->prevStages(); - auto it = std::find(prevStages.begin(), prevStages.end(), dependencyProducer); + auto it = std::find(prevStages.begin(), prevStages.end(), parentStage); ASSERT_EQ(it, prevStages.end()); - it = std::find(nextStages.begin(), nextStages.end(), dependentStage); + it = std::find(nextStages.begin(), nextStages.end(), childStage); ASSERT_EQ(it, nextStages.end()); } @@ -417,22 +298,22 @@ TEST_F(StageDependencyEdgeProcessingTests, RemoveStageDependencyViaDataToShapeEd _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::intermediate(desc), OutputInfo::intermediate(desc)}); - auto dependentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); - auto dependencyProducer = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); + auto childStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(0)}, {OutputInfo::fromNetwork(0)}); + auto parentStage = _testModel.addStage({InputInfo::fromPrevStage(0).output(1)}, {OutputInfo::fromNetwork(1)}); auto model = _testModel.getBaseModel(); - ASSERT_NO_THROW(model->addStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->addStageDependency(parentStage, childStage)); - ASSERT_NO_THROW(model->removeStageDependency(dependentStage, dependencyProducer->output(0))); + ASSERT_NO_THROW(model->removeStageDependency(parentStage, childStage)); - const auto prevStages = dependentStage->prevStages(); - const auto nextStages = dependencyProducer->prevStages(); + const auto prevStages = childStage->prevStages(); + const auto nextStages = parentStage->prevStages(); - auto it = std::find(prevStages.begin(), prevStages.end(), dependencyProducer); + auto it = std::find(prevStages.begin(), prevStages.end(), parentStage); ASSERT_EQ(it, prevStages.end()); - it = std::find(nextStages.begin(), nextStages.end(), dependentStage); + it = std::find(nextStages.begin(), nextStages.end(), childStage); ASSERT_EQ(it, nextStages.end()); } diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/add_copy_for_outputs_inside_network.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/add_copy_for_outputs_inside_network.cpp index dd97d7189f1ed8..f678a501382bf3 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/add_copy_for_outputs_inside_network.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/add_copy_for_outputs_inside_network.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_data_batch_tests.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_data_batch_tests.cpp index b24016f1f7e1dd..181f7105a14759 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_data_batch_tests.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_data_batch_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_dynamic_batch.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_dynamic_batch.cpp index 6f729fa6dfa7a5..922fa6302f5105 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_dynamic_batch.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/adjust_dynamic_batch.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/annotate_memory_types.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/annotate_memory_types.cpp index a42d9a6410338d..f1f841101c56bf 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/annotate_memory_types.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/annotate_memory_types.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/convert_shape_notation.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/convert_shape_notation.cpp index 967a48f82a0d51..6b86bbc720d702 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/convert_shape_notation.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/convert_shape_notation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -89,16 +89,16 @@ class ConvertShapeNotationTests : public GraphTransformerTest { ASSERT_EQ(edge->parent(), shape); } - void checkStageDependency(const Data& shape, const Stage& stage) { - ASSERT_FALSE(shape->dependentStagesEdges().empty()); - const auto& dependentStagesEdges = shape->dependentStagesEdges(); + void checkStageDependency(const Stage& parent, const Stage& child) { + ASSERT_FALSE(parent->childDependencyEdges().empty()); + const auto& childDependencyEdges = parent->childDependencyEdges(); - auto it = std::find_if(dependentStagesEdges.begin(), dependentStagesEdges.end(), - [&stage](const StageDependency& edge) { - return edge->dependentStage() == stage; + auto it = std::find_if(childDependencyEdges.begin(), childDependencyEdges.end(), + [&child](const StageDependency& edge) { + return edge->child() == child; }); - ASSERT_NE(it, dependentStagesEdges.end()); + ASSERT_NE(it, childDependencyEdges.end()); } void checkNoDataToShapeDependency(const Data& shape, const Data& data) { @@ -114,15 +114,15 @@ class ConvertShapeNotationTests : public GraphTransformerTest { ASSERT_EQ(it, childDataToShapeEdges.end()); } - void checkNoStageDependency(const Data& shape, const Stage& stage) { - const auto& dependentStagesEdges = shape->dependentStagesEdges(); + void checkNoStageDependency(const Stage& parent, const Stage& child) { + const auto& childDependencyEdges = parent->childDependencyEdges(); - auto it = std::find_if(dependentStagesEdges.begin(), dependentStagesEdges.end(), - [&stage](const StageDependency& edge) { - return edge->dependentStage() == stage; + auto it = std::find_if(childDependencyEdges.begin(), childDependencyEdges.end(), + [&child](const StageDependency& edge) { + return edge->child() == child; }); - ASSERT_EQ(it, shape->dependentStagesEdges().end()); + ASSERT_EQ(it, parent->childDependencyEdges().end()); } void checkGathers(int gathersCount) { @@ -145,8 +145,8 @@ class ConvertShapeNotationTests : public GraphTransformerTest { dependentStage = dataConsumingShape->producer(); } - checkStageDependency(convertedShape, dependentStage); - checkNoStageDependency(shape, dependentStage); + checkStageDependency(convertedShape->producer(), dependentStage); + checkNoStageDependency(shape->producer(), dependentStage); } } diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/inject_sw.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/inject_sw.cpp new file mode 100644 index 00000000000000..e643ad2388e389 --- /dev/null +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/inject_sw.cpp @@ -0,0 +1,141 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "graph_transformer_tests.hpp" + +namespace vpu { + +namespace ie = InferenceEngine; + +class InjectStageTests : public GraphTransformerTest { +protected: + void SetUp() override { + ASSERT_NO_FATAL_FAILURE(GraphTransformerTest::SetUp()); + + ASSERT_NO_FATAL_FAILURE(InitCompileEnv()); + + _testModel = CreateTestModel(); + } + +protected: + TestModel _testModel; +}; + +TEST_F(InjectStageTests, InjectionRedirectsChildStageDependency) { + // + // -> (Stage) -> [Output] + // [Input] -> (Stage) -> [Output] + // -> (Stage) -> [Output] + // + + const DataDesc desc{1}; + + _testModel.createInputs({desc}); + _testModel.createOutputs({desc, desc, desc}); + + const auto hwStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(0)}, StageType::MyriadXHwOp); + const auto swStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(1)}, StageType::Copy); + const auto childStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(2)}); + + auto model = _testModel.getBaseModel(); + + ASSERT_NO_THROW(model->addStageDependency(swStage, childStage)); + ASSERT_TRUE(checkExecutionOrder(model, {swStage->id(), childStage->id()})); + + ASSERT_NO_THROW(model->injectStage() + .parentHW(hwStage) + .childSW(swStage) + .done()); + ASSERT_TRUE(checkExecutionOrder(model, {hwStage->id(), childStage->id()})); +} + +TEST_F(InjectStageTests, InjectionRedirectsParentStageDependency) { + // + // -> (Stage) -> [Output] + // [Input] -> (Stage) -> [Output] + // -> (Stage) -> [Output] + // + + const DataDesc desc{1}; + + _testModel.createInputs({desc}); + _testModel.createOutputs({desc, desc, desc}); + + const auto hwStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(0)}, StageType::MyriadXHwOp); + const auto swStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(1)}, StageType::Copy); + const auto parentStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(2)}); + + auto model = _testModel.getBaseModel(); + + ASSERT_NO_THROW(model->addStageDependency(parentStage, swStage)); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), swStage->id()})); + + ASSERT_NO_THROW(model->injectStage() + .parentHW(hwStage) + .childSW(swStage) + .done()); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), hwStage->id()})); +} + +TEST_F(InjectStageTests, RevertInjectionRedirectsChildStageDependency) { + // + // -> (Stage) -> [Output] + // [Input] -> (Stage) -> [Output] + // -> (Stage) -> [Output] + // + + const DataDesc desc{1}; + + _testModel.createInputs({desc}); + _testModel.createOutputs({desc, desc, desc}); + + const auto hwStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(0)}, StageType::MyriadXHwOp); + const auto swStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(1)}, StageType::Copy); + const auto parentStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(2)}); + + auto model = _testModel.getBaseModel(); + + ASSERT_NO_THROW(model->addStageDependency(parentStage, swStage)); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), swStage->id()})); + + Injection edge; + ASSERT_NO_THROW(edge = model->injectStage() + .parentHW(hwStage) + .childSW(swStage) + .done()); + ASSERT_NO_THROW(model->revertInjection(edge)); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), swStage->id()})); +} + +TEST_F(InjectStageTests, RevertInjectionRedirectsParentStageDependency) { + // + // -> (Stage) -> [Output] + // [Input] -> (Stage) -> [Output] + // -> (Stage) -> [Output] + // + + const DataDesc desc{1}; + + _testModel.createInputs({desc}); + _testModel.createOutputs({desc, desc, desc}); + + const auto hwStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(0)}, StageType::MyriadXHwOp); + const auto swStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(1)}, StageType::Copy); + const auto parentStage = _testModel.addStage({InputInfo::fromNetwork()}, {OutputInfo::fromNetwork(2)}); + + auto model = _testModel.getBaseModel(); + + ASSERT_NO_THROW(model->addStageDependency(parentStage, swStage)); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), swStage->id()})); + + Injection edge; + ASSERT_NO_THROW(edge = model->injectStage() + .parentHW(hwStage) + .childSW(swStage) + .done()); + ASSERT_NO_THROW(model->revertInjection(edge)); + ASSERT_TRUE(checkExecutionOrder(model, {parentStage->id(), swStage->id()})); +} + +} // namespace vpu diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/mark_fast_stages.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/mark_fast_stages.cpp index a853286057d6bb..081a8c5503715c 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/mark_fast_stages.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/mark_fast_stages.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/split_large_kernel_conv_tests.cpp b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/split_large_kernel_conv_tests.cpp index d4c42bd74c4f3f..37eb621c8a98af 100644 --- a/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/split_large_kernel_conv_tests.cpp +++ b/inference-engine/tests/unit/vpu/middleend_tests/passes_tests/split_large_kernel_conv_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests/unit/vpu/utils_tests/heap_test.cpp b/inference-engine/tests/unit/vpu/utils_tests/heap_test.cpp index d93df51ff768de..6d2abb211bab0e 100644 --- a/inference-engine/tests/unit/vpu/utils_tests/heap_test.cpp +++ b/inference-engine/tests/unit/vpu/utils_tests/heap_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/CMakeLists.txt b/inference-engine/tests_deprecated/CMakeLists.txt index 6e587878d869e5..31f5a9f7f96add 100644 --- a/inference-engine/tests_deprecated/CMakeLists.txt +++ b/inference-engine/tests_deprecated/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/behavior/CMakeLists.txt b/inference-engine/tests_deprecated/behavior/CMakeLists.txt index 5731c531cca7c3..888b7b9a6414d2 100644 --- a/inference-engine/tests_deprecated/behavior/CMakeLists.txt +++ b/inference-engine/tests_deprecated/behavior/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/behavior/cldnn/CMakeLists.txt b/inference-engine/tests_deprecated/behavior/cldnn/CMakeLists.txt index f2d14c30fd3fe3..530746af62d27a 100644 --- a/inference-engine/tests_deprecated/behavior/cldnn/CMakeLists.txt +++ b/inference-engine/tests_deprecated/behavior/cldnn/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/behavior/cldnn/dummy.cpp b/inference-engine/tests_deprecated/behavior/cldnn/dummy.cpp index 3f70c7a4cb9e94..936eaeb8151125 100644 --- a/inference-engine/tests_deprecated/behavior/cldnn/dummy.cpp +++ b/inference-engine/tests_deprecated/behavior/cldnn/dummy.cpp @@ -1,3 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + diff --git a/inference-engine/tests_deprecated/behavior/gna/CMakeLists.txt b/inference-engine/tests_deprecated/behavior/gna/CMakeLists.txt index a064a79c770a95..ad1e33fdb40f3f 100644 --- a/inference-engine/tests_deprecated/behavior/gna/CMakeLists.txt +++ b/inference-engine/tests_deprecated/behavior/gna/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/behavior/gna/dummy.cpp b/inference-engine/tests_deprecated/behavior/gna/dummy.cpp index 3f70c7a4cb9e94..936eaeb8151125 100644 --- a/inference-engine/tests_deprecated/behavior/gna/dummy.cpp +++ b/inference-engine/tests_deprecated/behavior/gna/dummy.cpp @@ -1,3 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + diff --git a/inference-engine/tests_deprecated/behavior/mkldnn/CMakeLists.txt b/inference-engine/tests_deprecated/behavior/mkldnn/CMakeLists.txt index d60d94dcbc2241..1127d7c5458aba 100644 --- a/inference-engine/tests_deprecated/behavior/mkldnn/CMakeLists.txt +++ b/inference-engine/tests_deprecated/behavior/mkldnn/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/behavior/mkldnn/dummy.cpp b/inference-engine/tests_deprecated/behavior/mkldnn/dummy.cpp index 3f70c7a4cb9e94..936eaeb8151125 100644 --- a/inference-engine/tests_deprecated/behavior/mkldnn/dummy.cpp +++ b/inference-engine/tests_deprecated/behavior/mkldnn/dummy.cpp @@ -1,3 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + diff --git a/inference-engine/tests_deprecated/behavior/shared_tests/CMakeLists.txt b/inference-engine/tests_deprecated/behavior/shared_tests/CMakeLists.txt index d18283e4b25b06..8c272673b06283 100644 --- a/inference-engine/tests_deprecated/behavior/shared_tests/CMakeLists.txt +++ b/inference-engine/tests_deprecated/behavior/shared_tests/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -20,11 +19,6 @@ target_link_libraries(${TARGET_NAME} PUBLIC ieTestHelpers ) -if(UNIX) - find_package(Threads REQUIRED) - target_link_libraries(${TARGET_NAME} PRIVATE Threads::Threads) -endif() - target_link_libraries(${TARGET_NAME} PUBLIC gmock) target_include_directories(${TARGET_NAME} PUBLIC diff --git a/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.cpp b/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.cpp index 3f70c7a4cb9e94..936eaeb8151125 100644 --- a/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.cpp +++ b/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.cpp @@ -1,3 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + diff --git a/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.h b/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.h index c99b02a8c258bd..cc94c94f9c8832 100644 --- a/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.h +++ b/inference-engine/tests_deprecated/behavior/shared_tests/plugin_tests/behavior_test_plugin.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt b/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt index 9f7498587bd8b0..0bf133402c7f6b 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt +++ b/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/aot_behavior_tests.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/aot_behavior_tests.cpp index 0e2a458916adc9..99617e16f3bf46 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/aot_behavior_tests.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/aot_behavior_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,27 +67,15 @@ class AOTBehaviorTests : public BehaviorPluginTest { } void canImportBlob() { - ASSERT_EQ(StatusCode::OK, importBlob()) << response.msg; + ASSERT_NO_THROW(importBlob()) << response.msg; } void canNotImportBlob() { - ASSERT_NE(StatusCode::OK, importBlob()) << response.msg; + ASSERT_THROW(importBlob(), InferenceEngine::Exception) << response.msg; } - StatusCode importBlob() { - InferenceEngine::Core core; - ExecutableNetwork ret; - - try - { - ret = core.ImportNetwork("local_tmp.fw", GetParam().device); - } - catch (InferenceEngine::details::InferenceEngineException & ex) - { - return ex.getStatus(); - } - - return StatusCode::OK; + void importBlob() { + InferenceEngine::Core{}.ImportNetwork("local_tmp.fw", GetParam().device); } void setHeaderVersion(int major, int minor) { diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.cpp index 647871f84ee0d1..d5adac10397fc5 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.hpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.hpp index 6e365440b13f24..a5628fcd0e60fb 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.hpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_devices.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.cpp index 48f005e132e982..ce2c4b1f459203 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.hpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.hpp index 8fa5da0f02131c..3ca276f6105a7d 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.hpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_load_network_case.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.cpp index ddb5b4ef88a8e6..48c8a413b84feb 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.hpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.hpp index 0be811a6fb5e2e..1875ead4d0bb88 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.hpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/helpers/myriad_protocol_case.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_boot_tests.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_boot_tests.cpp index 558bf39a1e87a4..e96bcbe408c19d 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_boot_tests.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_boot_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_get_metric_tests.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_get_metric_tests.cpp index 5ffd53f5b7d109..e97ed83c7376ee 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_get_metric_tests.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_get_metric_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_load_network_tests.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_load_network_tests.cpp index fa470686981dde..cedf09cce9b908 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_load_network_tests.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_load_network_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_protocol_tests.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_protocol_tests.cpp index c8062e64da9400..b394214801b99c 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_protocol_tests.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_protocol_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_watchdog_tests.cpp b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_watchdog_tests.cpp index b9b6057fd55ff4..764d0e72df2f08 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_watchdog_tests.cpp +++ b/inference-engine/tests_deprecated/behavior/vpu/myriad_tests/vpu_watchdog_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,7 +14,6 @@ #include "functional_test_utils/test_model/test_model.hpp" #include "helpers/myriad_devices.hpp" -#include
#include diff --git a/inference-engine/tests_deprecated/behavior/vpu/shared_tests_instances/plugin_tests/vpu_test_data.hpp b/inference-engine/tests_deprecated/behavior/vpu/shared_tests_instances/plugin_tests/vpu_test_data.hpp index dab2e673deef2e..6d4b89c2261521 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/shared_tests_instances/plugin_tests/vpu_test_data.hpp +++ b/inference-engine/tests_deprecated/behavior/vpu/shared_tests_instances/plugin_tests/vpu_test_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/fluid_preproc/CMakeLists.txt b/inference-engine/tests_deprecated/fluid_preproc/CMakeLists.txt index 959c331441257a..fd78ef95636b9e 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/CMakeLists.txt +++ b/inference-engine/tests_deprecated/fluid_preproc/CMakeLists.txt @@ -1,10 +1,10 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # set(TARGET fluid_preproc_tests) -find_package(OpenCV COMPONENTS gapi QUIET) +find_package(OpenCV COMPONENTS gapi core imgproc QUIET) if(NOT OpenCV_FOUND) message(WARNING "No suitable OpenCV version detected, ${TARGET} skipped") return() @@ -23,12 +23,13 @@ target_include_directories(${TARGET} PRIVATE $ $) -target_link_libraries(${TARGET} PRIVATE opencv_core opencv_imgproc inference_engine fluid_test_computations gtest gtest_main) +target_link_libraries(${TARGET} PRIVATE opencv_core opencv_imgproc + inference_engine fluid_test_computations gtest gtest_main) if(GAPI_TEST_PERF) - target_compile_definitions(${TARGET} PRIVATE -DPERF_TEST=1) + target_compile_definitions(${TARGET} PRIVATE -DPERF_TEST=1) else() - target_compile_definitions(${TARGET} PRIVATE -DPERF_TEST=0) + target_compile_definitions(${TARGET} PRIVATE -DPERF_TEST=0) endif() add_test(NAME ${TARGET} COMMAND ${TARGET}) diff --git a/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.cpp b/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.cpp index f0c60539bbb60e..5993baae55354a 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.cpp +++ b/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -117,7 +117,7 @@ cv::String colorFormatToString(InferenceEngine::ColorFormat f) { case ColorFormat::RGBX: return "RGBX"; case ColorFormat::BGRX: return "BGRX"; case ColorFormat::NV12: return "NV12"; - default: THROW_IE_EXCEPTION << "Unrecognized color format"; + default: IE_THROW() << "Unrecognized color format"; } } @@ -179,7 +179,7 @@ int numChannels(InferenceEngine::ColorFormat fmt) { case ColorFormat::BGR: return 3; case ColorFormat::RGBX: return 4; case ColorFormat::BGRX: return 4; - default: THROW_IE_EXCEPTION << "Unrecognized color format"; + default: IE_THROW() << "Unrecognized color format"; } } @@ -223,7 +223,7 @@ InferenceEngine::Blob::Ptr img2Blob(cv::Mat &img, InferenceEngine::Layout layout } break; default: - THROW_IE_EXCEPTION << "Inconsistent input layout for image processing: " << layout; + IE_THROW() << "Inconsistent input layout for image processing: " << layout; } return resultBlob; } @@ -263,7 +263,7 @@ void Blob2Img(const InferenceEngine::Blob::Ptr& blobP, cv::Mat& img, InferenceEn } break; default: - THROW_IE_EXCEPTION << "Inconsistent input layout for image processing: " << layout; + IE_THROW() << "Inconsistent input layout for image processing: " << layout; } } } // anonymous namespace diff --git a/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.hpp b/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.hpp index 8bca5f36a7141f..53073f409d78d3 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.hpp +++ b/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests_common.hpp b/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests_common.hpp index 4de8ccd02fa7ac..3ba09cf39c0585 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests_common.hpp +++ b/inference-engine/tests_deprecated/fluid_preproc/common/fluid_tests_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/fluid_preproc/cpu/fluid_tests_cpu.cpp b/inference-engine/tests_deprecated/fluid_preproc/cpu/fluid_tests_cpu.cpp index ec03ade000ec02..babaa43f1a8cbc 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/cpu/fluid_tests_cpu.cpp +++ b/inference-engine/tests_deprecated/fluid_preproc/cpu/fluid_tests_cpu.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/CMakeLists.txt b/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/CMakeLists.txt index 36b3d9a089ad08..3ccecefe8fb874 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/CMakeLists.txt +++ b/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.cpp b/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.cpp index 5192cf02043518..ce2206b659a973 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.cpp +++ b/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.hpp b/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.hpp index e7d071ec790f32..57f554f8e9e8ee 100644 --- a/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.hpp +++ b/inference-engine/tests_deprecated/fluid_preproc/fluid_test_computations/fluid_test_computations.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/CMakeLists.txt b/inference-engine/tests_deprecated/functional/CMakeLists.txt index 13b519eb644768..8ee3016d989d41 100644 --- a/inference-engine/tests_deprecated/functional/CMakeLists.txt +++ b/inference-engine/tests_deprecated/functional/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2016-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/functional/cldnn/CMakeLists.txt b/inference-engine/tests_deprecated/functional/cldnn/CMakeLists.txt index e896dd31e95e56..223bf1635f35aa 100644 --- a/inference-engine/tests_deprecated/functional/cldnn/CMakeLists.txt +++ b/inference-engine/tests_deprecated/functional/cldnn/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -12,7 +11,7 @@ list(APPEND TEST_SRC ${CLDNN_TEST_SOURCES}) list(APPEND CLDNN_LIBS IESharedTests - ${CLDNN__IOCL_ICD_LIBPATH}) + ${CLDNN__OCL_ICD_LIBPATH}) # try to find VA libraries find_package(PkgConfig QUIET) @@ -57,7 +56,7 @@ if(LIBVA_FOUND) target_include_directories(${TARGET_NAME} PRIVATE ${LIBVA_INCLUDE_DIRS}) endif() -target_include_directories(${TARGET_NAME} PRIVATE ${CLDNN__IOCL_ICD_INCDIRS}) +target_include_directories(${TARGET_NAME} PRIVATE ${CLDNN__OCL_ICD_INCDIRS}) target_link_libraries(${TARGET_NAME} PRIVATE ${CLDNN_LIBS}) add_dependencies(${TARGET_NAME} ${DEPENDENCIES}) diff --git a/inference-engine/tests_deprecated/functional/cldnn/dummy.cpp b/inference-engine/tests_deprecated/functional/cldnn/dummy.cpp index 27390184c64df6..936eaeb8151125 100644 --- a/inference-engine/tests_deprecated/functional/cldnn/dummy.cpp +++ b/inference-engine/tests_deprecated/functional/cldnn/dummy.cpp @@ -1,3 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // + diff --git a/inference-engine/tests_deprecated/functional/gna/CMakeLists.txt b/inference-engine/tests_deprecated/functional/gna/CMakeLists.txt index 4e05f853f4452b..a09b7cf91a394d 100644 --- a/inference-engine/tests_deprecated/functional/gna/CMakeLists.txt +++ b/inference-engine/tests_deprecated/functional/gna/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp b/inference-engine/tests_deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp index efe79eb35d18d7..618c857c7b5a30 100644 --- a/inference-engine/tests_deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp +++ b/inference-engine/tests_deprecated/functional/gna/backward_compatibility/backward_compatibility.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/input_tests/parser_tests.cpp b/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/input_tests/parser_tests.cpp index 5726a03a56847f..d54817b53ed7ce 100644 --- a/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/input_tests/parser_tests.cpp +++ b/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/input_tests/parser_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/lstm/lstm_cell_test.cpp b/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/lstm/lstm_cell_test.cpp index f91eab61a271aa..378b593c216f2a 100644 --- a/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/lstm/lstm_cell_test.cpp +++ b/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/lstm/lstm_cell_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/single_layer_tests/ti_tests.cpp b/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/single_layer_tests/ti_tests.cpp index eae49083810eab..4ca51cf1528423 100644 --- a/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/single_layer_tests/ti_tests.cpp +++ b/inference-engine/tests_deprecated/functional/gna/shared_tests_instance/single_layer_tests/ti_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/gna/test_model_repo.cpp b/inference-engine/tests_deprecated/functional/gna/test_model_repo.cpp index 1cb30455d332ad..97ab83c5c31e6b 100644 --- a/inference-engine/tests_deprecated/functional/gna/test_model_repo.cpp +++ b/inference-engine/tests_deprecated/functional/gna/test_model_repo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/CMakeLists.txt b/inference-engine/tests_deprecated/functional/ie_tests/CMakeLists.txt index c3ba343e659abb..dc247e8a817b4b 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/CMakeLists.txt +++ b/inference-engine/tests_deprecated/functional/ie_tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/base_matcher.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/base_matcher.hpp index 63be7ef7971456..84d2a5e6c37d5d 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/base_matcher.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/base_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/classification_matcher.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/classification_matcher.hpp index e487ad6aa7f609..36bc6fd98706e2 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/classification_matcher.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/classification_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/custom_matcher.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/custom_matcher.hpp index 0218d0f6c9a6c6..4225156dcaa86f 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/custom_matcher.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/custom_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/ie_core_adapter.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/ie_core_adapter.hpp index 436a7fe913bc59..538e04b851f753 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/ie_core_adapter.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/ie_core_adapter.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/label_probability.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/label_probability.hpp index bc5407ef952e6e..18b8c931e08fe4 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/label_probability.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/label_probability.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/net_model.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/net_model.hpp index 1451920812ade3..a96ead95cfd3ec 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/net_model.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/net_model.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/object_detection_matcher.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/object_detection_matcher.hpp index a33ec22e92d80e..7975b6faf16c82 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/object_detection_matcher.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/object_detection_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/optimized_network_matcher.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/optimized_network_matcher.hpp index 8604ef8f5c1951..a47d52b38848b2 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/optimized_network_matcher.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/optimized_network_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/raw_matcher.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/raw_matcher.hpp index 6d8b88e4aa23b2..cfd60ed8d5bdbb 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/raw_matcher.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/raw_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/regression_config.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/regression_config.hpp index c85b8409f3f436..1fde58a1fdab17 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/regression_config.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/regression_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/regression_reference.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/regression_reference.hpp index cde008d3e84030..d743ad713727d9 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/regression_reference.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/regression_reference.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/regression_tests.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/regression_tests.hpp index effe09c70b5799..fc8db0deb2a71b 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/regression_tests.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/regression_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -229,7 +229,7 @@ class ModelSelector { /// @breif - tile last batch ModelSelector &onN_infers(int nTimesCopyInputImages) { if (config._paths_to_images.size() != config.batchSize) { - THROW_IE_EXCEPTION << "number of input images:" + IE_THROW() << "number of input images:" << config._paths_to_images.size() << " not equal to batch size: " << config.batchSize; } auto first_image = config._paths_to_images.end(); @@ -347,7 +347,7 @@ class ModelSelector { config.batchSize = nBatchSize; // assumption made that inputs already gets provided to matcher if (config._paths_to_images.empty() && needInput()) { - THROW_IE_EXCEPTION << "withBatch token should follow after setting up inputs"; + IE_THROW() << "withBatch token should follow after setting up inputs"; } if (config._paths_to_images.size() < nBatchSize) { tile(nBatchSize - config._paths_to_images.size()); diff --git a/inference-engine/tests_deprecated/functional/ie_tests/include/segmentation_matcher.hpp b/inference-engine/tests_deprecated/functional/ie_tests/include/segmentation_matcher.hpp index cdc3b7ee05cf1a..fdc86455ede157 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/include/segmentation_matcher.hpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/include/segmentation_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/base_matcher.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/base_matcher.cpp index aea0f484c1f7f9..9be0afecb4cc46 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/base_matcher.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/base_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,29 +16,29 @@ void loadImage(const std::string &imageFilename, InferenceEngine::Blob::Ptr &blo && tensDesc.getPrecision() != InferenceEngine::Precision::FP32 && tensDesc.getPrecision()!= InferenceEngine::Precision::U8 && tensDesc.getPrecision()!= InferenceEngine::Precision::I16) { - THROW_IE_EXCEPTION << "loadImage error: Input must have FP16, FP32 or U8 precision"; + IE_THROW() << "loadImage error: Input must have FP16, FP32 or U8 precision"; } if (tensDesc.getLayout() != NHWC && tensDesc.getLayout() != NCHW) { - THROW_IE_EXCEPTION << "loadImage error: Input must have NHWC or NHWC layout"; + IE_THROW() << "loadImage error: Input must have NHWC or NHWC layout"; } FormatReader::ReaderPtr reader(imageFilename.c_str()); if (reader.get() == nullptr) { - THROW_IE_EXCEPTION << "loadImage error: image " << imageFilename << " cannot be read!"; + IE_THROW() << "loadImage error: image " << imageFilename << " cannot be read!"; } size_t w = tensDesc.getDims()[3]; size_t h = tensDesc.getDims()[2]; if (reader->width() != w || reader->height() != h) { - THROW_IE_EXCEPTION << "loadImage error: Input sizes mismatch, got " << reader->width() << "x" << reader->height() + IE_THROW() << "loadImage error: Input sizes mismatch, got " << reader->width() << "x" << reader->height() << " expecting " << w << "x" << h; } auto numBlobChannels = tensDesc.getDims()[1]; size_t numImageChannels = reader->size() / (reader->width() * reader->height()); if (numBlobChannels != numImageChannels && numBlobChannels != 1) { - THROW_IE_EXCEPTION << "loadImage error: Input channels mismatch: image channels " << numImageChannels << ", " + IE_THROW() << "loadImage error: Input channels mismatch: image channels " << numImageChannels << ", " << "network channels " << numBlobChannels << ", expecting count of image channels are equal " << "to count if network channels or count of network channels are equal to 1"; } @@ -77,7 +77,7 @@ void loadImage(const std::string &imageFilename, InferenceEngine::Blob::Ptr &blo break; } default: - THROW_IE_EXCEPTION << "Unsupported precision!"; + IE_THROW() << "Unsupported precision!"; } } } diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/classification_matcher.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/classification_matcher.cpp index f15abfa415976a..7147b1b08797f5 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/classification_matcher.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/classification_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -107,7 +107,7 @@ void ClassificationMatcher::readLabels(std::string labelFilePath) { config.labels.push_back(TestsCommon::trim(line)); } } else { - THROW_IE_EXCEPTION << "cannot open label file: " << labelFilePath; + IE_THROW() << "cannot open label file: " << labelFilePath; } } @@ -115,7 +115,7 @@ void ClassificationMatcher::readLabels(std::string labelFilePath) { int ClassificationMatcher::getIndexByLabel(const std::string &label) { auto result = std::find(begin(config.labels), end(config.labels), label); if (result == config.labels.end()) { - THROW_IE_EXCEPTION << "cannot locate index for label : " << label; + IE_THROW() << "cannot locate index for label : " << label; } return static_cast(std::distance(begin(config.labels), result)); } @@ -125,7 +125,7 @@ std::string ClassificationMatcher::getLabel(unsigned int index) { return "label #" + std::to_string(index); } if (index >= config.labels.size()) { - THROW_IE_EXCEPTION << "index out of labels file: " << index; + IE_THROW() << "index out of labels file: " << index; } return config.labels[index]; @@ -185,7 +185,7 @@ template inline void TopResults(unsigned int n, TBlob& input, std::vector& output) { SizeVector dims = input.getTensorDesc().getDims(); size_t input_rank = dims.size(); - if (!input_rank || !dims[0]) THROW_IE_EXCEPTION << "Input blob has incorrect dimensions!"; + if (!input_rank || !dims[0]) IE_THROW() << "Input blob has incorrect dimensions!"; size_t batchSize = dims[0]; std::vector indexes(input.size() / batchSize); @@ -224,7 +224,7 @@ void ClassificationMatcher::match_n(size_t top, int index) { } if (config._paths_to_images.size() % batchSize != 0) { - THROW_IE_EXCEPTION << "Can not process all input images("<< config._paths_to_images.size() + IE_THROW() << "Can not process all input images("<< config._paths_to_images.size() <<") using given batch size of " << batchSize; } // loading images in batches @@ -264,7 +264,7 @@ void ClassificationMatcher::match_n(size_t top, int index) { } else if (outputBlobPtr->getTensorDesc().getPrecision() == InferenceEngine::Precision::FP32) { outputFP32 = dynamic_pointer_cast>(outputBlobPtr); } else { - THROW_IE_EXCEPTION << "Unsupported output format for test. Supported FP16, FP32"; + IE_THROW() << "Unsupported output format for test. Supported FP16, FP32"; } vector topClassesIndexes; @@ -274,7 +274,7 @@ void ClassificationMatcher::match_n(size_t top, int index) { saveResults(topClassesIndexes, probabilities, top); } - } catch (InferenceEngine::details::InferenceEngineException &e) { + } catch (InferenceEngine::Exception &e) { FAIL() << e.what(); } catch (std::exception &e) { FAIL() << e.what(); diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/custom_matcher.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/custom_matcher.cpp index 8ae040e1f8a7fa..fce8d1c153a49e 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/custom_matcher.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/custom_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -225,11 +225,11 @@ void Regression::Matchers::CustomMatcher::matchCustom() { // Check errors if (sts == GENERAL_ERROR) { - THROW_IE_EXCEPTION << "Scoring failed! Critical error: " << dsc.msg; + IE_THROW() << "Scoring failed! Critical error: " << dsc.msg; } else if (sts == NOT_IMPLEMENTED) { - THROW_IE_EXCEPTION << "Scoring failed! Input data is incorrect and not supported!"; + IE_THROW() << "Scoring failed! Input data is incorrect and not supported!"; } else if (sts == NETWORK_NOT_LOADED) { - THROW_IE_EXCEPTION << "Scoring failed! " << dsc.msg; + IE_THROW() << "Scoring failed! " << dsc.msg; } if (!fetchResult.fetchMore) break; } diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/ie_core_adapter.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/ie_core_adapter.cpp index 5f30a8069a9b04..5a3b870a725d4d 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/ie_core_adapter.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/ie_core_adapter.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/net_model.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/net_model.cpp index c030fef23c1a90..edea2ae0384f09 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/net_model.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/net_model.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/object_detection_matcher.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/object_detection_matcher.cpp index 3c5dc9253e15cf..f1c7ab8046da84 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/object_detection_matcher.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/object_detection_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/optimized_network_matcher.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/optimized_network_matcher.cpp index 52860bf855c972..63bce010583428 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/optimized_network_matcher.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/optimized_network_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/raw_matcher.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/raw_matcher.cpp index cf9fe953ccd885..b8cab381c65871 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/raw_matcher.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/raw_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,7 +21,7 @@ void RawMatcher::match() { InferenceEngine::InputsDataMap networkInputs; networkInputs = cnnNetwork.getInputsInfo(); if (networkInputs.size() == 0) { - THROW_IE_EXCEPTION << "No inputs detected."; + IE_THROW() << "No inputs detected."; } if (config._paths_to_images.size() % ( config.batchSize * networkInputs.size()) != 0) { @@ -86,7 +86,7 @@ void RawMatcher::match() { for (auto & imageName : config._paths_to_images) { FormatReader::ReaderPtr reader(imageName.c_str()); if (reader.get() == nullptr) { - THROW_IE_EXCEPTION << "[ERROR]: Image " + imageName + " cannot be read!"; + IE_THROW() << "[ERROR]: Image " + imageName + " cannot be read!"; } actualNetSize += reader->size(); // Store image data @@ -103,14 +103,14 @@ void RawMatcher::match() { height = dims.at(3); width = dims.at(4); } else { - THROW_IE_EXCEPTION << inputData->getName() << " has unsupported layout " << inputData->getTensorDesc().getLayout(); + IE_THROW() << inputData->getName() << " has unsupported layout " << inputData->getTensorDesc().getLayout(); } std::shared_ptr data(reader->getData(width, height)); if (data.get() != nullptr) { imagesData.push_back(data); } else { - THROW_IE_EXCEPTION << "Invalid image '" << imageName << "'"; + IE_THROW() << "Invalid image '" << imageName << "'"; } } @@ -150,7 +150,7 @@ void RawMatcher::match() { blob = InferenceEngine::make_shared_blob(desc); break; default: - THROW_IE_EXCEPTION << "Unsupported blob precision: " << desc.getPrecision(); + IE_THROW() << "Unsupported blob precision: " << desc.getPrecision(); } blob->allocate(); @@ -209,7 +209,7 @@ void RawMatcher::match() { *config.perfInfoPtr = inferRequest.GetPerformanceCounts(); } } - } catch (details::InferenceEngineException &e) { + } catch (Exception &e) { FAIL() << e.what(); } catch (std::exception &e) { diff --git a/inference-engine/tests_deprecated/functional/ie_tests/src/segmentation_matcher.cpp b/inference-engine/tests_deprecated/functional/ie_tests/src/segmentation_matcher.cpp index 3aab57a1a6f9e9..45afd5a28802d4 100644 --- a/inference-engine/tests_deprecated/functional/ie_tests/src/segmentation_matcher.cpp +++ b/inference-engine/tests_deprecated/functional/ie_tests/src/segmentation_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -29,7 +29,7 @@ static std::vector> blobToImageOutputArray(InferenceEngine:: H = outputDims.at(3); W = outputDims.at(4); } else { - THROW_IE_EXCEPTION << "Output blob has unsupported layout " << output->getTensorDesc().getLayout(); + IE_THROW() << "Output blob has unsupported layout " << output->getTensorDesc().getLayout(); } // Get classes @@ -86,20 +86,20 @@ void SegmentationMatcher::match() { InferenceEngine::SizeVector outputDims = outInfo.begin()->second->getDims(); if (outputDims.size() != 4) { - THROW_IE_EXCEPTION << "Incorrect output dimensions for Deconvolution model"; + IE_THROW() << "Incorrect output dimensions for Deconvolution model"; } // Read image FormatReader::ReaderPtr reader(config._paths_to_images[0].c_str()); if (reader.get() == nullptr) { - THROW_IE_EXCEPTION << "[ERROR]: Image " << config._paths_to_images[0] << " cannot be read!"; + IE_THROW() << "[ERROR]: Image " << config._paths_to_images[0] << " cannot be read!"; } int inputNetworkSize = static_cast(std::accumulate( inputDims.begin(), inputDims.end(), (size_t)1, std::multiplies())); if (reader->size() != inputNetworkSize) { - THROW_IE_EXCEPTION << "[ERROR]: Input sizes mismatch, got " << reader->size() << " bytes, expecting " + IE_THROW() << "[ERROR]: Input sizes mismatch, got " << reader->size() << " bytes, expecting " << inputNetworkSize; } @@ -117,7 +117,7 @@ void SegmentationMatcher::match() { input = InferenceEngine::make_shared_blob({ InferenceEngine::Precision::U8, inputDims, NCHW }); break; default: - THROW_IE_EXCEPTION << "Unsupported network precision: " << inputs.begin()->second->getPrecision(); + IE_THROW() << "Unsupported network precision: " << inputs.begin()->second->getPrecision(); } input->allocate(); @@ -183,7 +183,7 @@ float SegmentationMatcher::compareOutputBmp(std::vector> dat FormatReader::ReaderPtr rd(inFileName.c_str()); if (rd.get() == nullptr) { - THROW_IE_EXCEPTION << "[ERROR]: Image " << inFileName << " cannot be read!"; + IE_THROW() << "[ERROR]: Image " << inFileName << " cannot be read!"; } auto height = data.size(); diff --git a/inference-engine/tests_deprecated/functional/mkldnn/CMakeLists.txt b/inference-engine/tests_deprecated/functional/mkldnn/CMakeLists.txt index af44b0477ce4a5..98708da0209ff1 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/CMakeLists.txt +++ b/inference-engine/tests_deprecated/functional/mkldnn/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/functional/mkldnn/config_param_test/config_param_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/config_param_test/config_param_test.cpp index 2db8c491288e8f..57a7a235ff4170 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/config_param_test/config_param_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/config_param_test/config_param_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/extensions_tests/extensions_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/extensions_tests/extensions_test.cpp index 0adcc944d7a62e..79c8892152c156 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/extensions_tests/extensions_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/extensions_tests/extensions_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -104,7 +104,6 @@ class NewTestExtension : public InferenceEngine::IExtension { return std::make_shared(node); }; } - void Release() noexcept override { delete this; } void GetVersion(const InferenceEngine::Version *&versionInfo) const noexcept override { static const InferenceEngine::Version VERSION{{}, "", ""}; @@ -155,7 +154,7 @@ class smoke_ExtensionTest : public TestsCommon, score_engine.reset(); ASSERT_EQ(p.extension.use_count(), 2); - } catch (const InferenceEngine::details::InferenceEngineException& e) { + } catch (const InferenceEngine::Exception& e) { FAIL() << e.what(); } } @@ -179,7 +178,7 @@ class smoke_ExtensionTest : public TestsCommon, ASSERT_EQ(p.extension.use_count(), p.pluginName.find("Multi")==std::string::npos ? 3 : 4); score_engine1.reset(); ASSERT_EQ(p.extension.use_count(), 2); - } catch (const InferenceEngine::details::InferenceEngineException& e) { + } catch (const InferenceEngine::Exception& e) { FAIL() << e.what(); } } @@ -243,8 +242,8 @@ class smoke_ExtensionTest : public TestsCommon, Blob::Ptr weights; CNNNetwork cnnNet1 = ie.ReadNetwork(model, weights); ASSERT_NO_THROW(ie.LoadNetwork(cnnNet1, device)); - ASSERT_THROW(ie2.ReadNetwork(model, weights), details::InferenceEngineException); - } catch (const InferenceEngine::details::InferenceEngineException& e) { + ASSERT_THROW(ie2.ReadNetwork(model, weights), InferenceEngine::Exception); + } catch (const InferenceEngine::Exception& e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/network_tests/ngraph_network_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/network_tests/ngraph_network_test.cpp index 372de68f9c4d85..5ae7de8ae7c7cf 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/network_tests/ngraph_network_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/network_tests/ngraph_network_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -107,7 +107,7 @@ class smoke_NGraphNetworkTest : public TestsCommon, public TestsCommonFunc { for (size_t i = 0; i < v7blb->size(); i++) { ASSERT_EQ(v7data[i], v5data[i]); } - } catch (const InferenceEngine::details::InferenceEngineException& e) { + } catch (const InferenceEngine::Exception& e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/regression_tests/regression_reference.cpp b/inference-engine/tests_deprecated/functional/mkldnn/regression_tests/regression_reference.cpp index 1cdaffee34eddf..634cb9c7e71919 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/regression_tests/regression_reference.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/regression_tests/regression_reference.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp index 3544573c620e7a..69fc62c23daa8f 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/graph_tools/graph_tools_functional_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/graph_tools/graph_tools_functional_tests.cpp index 121098fb324fe9..2863bdbea2779b 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/graph_tools/graph_tools_functional_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/graph_tools/graph_tools_functional_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/inference_engine_regression_tests/common_dyn_batch_regression.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/inference_engine_regression_tests/common_dyn_batch_regression.cpp index b896f1f3988d21..5514971502c422 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/inference_engine_regression_tests/common_dyn_batch_regression.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/inference_engine_regression_tests/common_dyn_batch_regression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/input_tests/parser_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/input_tests/parser_tests.cpp index b96b34fefe99ed..916fb9a3de8828 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/input_tests/parser_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/input_tests/parser_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/cropResize_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/cropResize_tests.cpp index 4b0aea1dbf524e..b13922560c494f 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/cropResize_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/cropResize_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -203,7 +203,7 @@ TEST_F(IEPreprocessTest, smoke_NetworkInputSmallSize) { EXPECT_NO_THROW(preprocess->execute(out_blob, info, false)); } else { EXPECT_THROW(preprocess->execute(out_blob, info, false), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/dims_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/dims_tests.cpp index 8ec5c6e3fa9dfd..963b6676c2d8a6 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/dims_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/dims_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/layout_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/layout_tests.cpp index b54a7c4edb66a6..084f69911ed0a9 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/layout_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/io_blob_tests/layout_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_cell_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_cell_test.cpp index 965e0f8e18ceef..622259f4f22c6c 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_cell_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_cell_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_ir_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_ir_test.cpp index 574dfc54f2624e..a4c00554258ea2 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_ir_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/lstm_ir_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/rnn_seq_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/rnn_seq_test.cpp index d0f1ddb1d7ccd5..882ecdd955dd76 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/rnn_seq_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/lstm/rnn_seq_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/network_tests/network_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/network_tests/network_test.cpp index a1f0d432e2986a..cae97a1177fcd4 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/network_tests/network_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/network_tests/network_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,7 @@ TEST_P(ModelTransformationsTest, LPT) {} static void checkLayerInputPrecision(const CNNNetwork& network, const std::string& layerName, Precision expectedPrecision, int inputIndex = -1) { CNNLayerPtr layer = getLayer(network, layerName); if (layer == nullptr) { - THROW_IE_EXCEPTION << "layer '" << layerName << "' was not found"; + IE_THROW() << "layer '" << layerName << "' was not found"; } for (size_t index = 0ul; index < layer->insData.size(); ++index) { if ((inputIndex != -1) && (index != inputIndex)) { @@ -133,7 +133,7 @@ std::map modelParams = { const auto it = modelParams.find(modelName); if (it == modelParams.end()) { - THROW_IE_EXCEPTION << "parameters for model '" << modelName << "' were not found"; + IE_THROW() << "parameters for model '" << modelName << "' were not found"; } return it->second; } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/transformations/low_precision_transformer_single_layer_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/transformations/low_precision_transformer_single_layer_tests.cpp index 5cff70d15b5568..090fc1bf99d524 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/transformations/low_precision_transformer_single_layer_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/shared_tests_instance/transformations/low_precision_transformer_single_layer_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/argmax_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/argmax_tests.cpp index 14e39e6c6567f6..66e5b21c39e0ef 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/argmax_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/argmax_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -178,7 +178,7 @@ class smoke_CPU_ArgmaxOnlyTest: public TestsCommon, public WithParamInterfacesecond, dst_ref); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/concat_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/concat_tests.cpp index 1ac3400eb0c13d..55e4c18b1c3272 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/concat_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/concat_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -223,7 +223,7 @@ class smoke_CPU_ConcatOnlyTest: public TestsCommon, } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_int8_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_int8_tests.cpp index 050f223ba682dc..cf31c1e7be6b4e 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_int8_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_int8_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -219,7 +219,7 @@ class smoke_ConvolutionInt8OnlyTest : public TestsCommon, calculateRef(weights, p, src, dst_ref); compare(*dst, *dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests.cpp index 35739686558516..490e155f6b3f51 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -239,7 +239,7 @@ class smoke_ConvolutionOnlyTest : public TestsCommon, CNNNetwork network = getNetwork(weights, p); infer(network, p, src, dst); compare(*dst, *dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -300,7 +300,7 @@ class smoke_ConvolutionReshapeTest : public smoke_ConvolutionOnlyTest { dst_ref->allocate(); calculateRef(weights, p, src, dst_ref); compare(*dst, *dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests_int8.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests_int8.cpp index 6cfe61460713e0..2ca739cab5e00d 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests_int8.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/conv_tests_int8.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -371,7 +371,7 @@ class smoke_ConvolutionInt8Test: public TestsCommon, // Comparing the result with the reference compare_NRMSD(*dst, dst_ref, 0.17); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/detectionout_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/detectionout_tests.cpp index 341bf4d24367a3..3e718de151093b 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/detectionout_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/detectionout_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -174,7 +174,7 @@ class smoke_CPUDetectionOutOnlyTest: public TestsCommon, inferRequest.SetOutput(outputBlobs); inferRequest.Infer(); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/fullycon_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/fullycon_tests.cpp index 632559c49af32f..5730a3a3c3520b 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/fullycon_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/fullycon_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -157,7 +157,7 @@ class smoke_FullyConnectedOnlyTest: public TestsCommon, ref_innerproduct(*srcPtr, weights->readOnly().as(), weights->size() / sizeof(float), dst_ref, p); compare(*dst, dst_ref, 0.9f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_batchnorm_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_batchnorm_tests.cpp index 986f501290f6e9..88a58955c484af 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_batchnorm_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_batchnorm_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -160,7 +160,7 @@ class smoke_CPUBatchNorn4DOnlyTest: public TestsCommon, ref_batchnorm4D(*srcPtr, (const float*) weights->buffer(), ((const float*) weights->buffer() + p.in.c), dst_ref, p); compare(*dst, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_deconv_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_deconv_tests.cpp index 21ebfd25b6ce4b..1b247042ddfd7b 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_deconv_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_deconv_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -189,7 +189,7 @@ class smoke_CPUDeconvolutionOnlyTest : public TestsCommon, ref_deconv(src, weights, bias, dst_ref, p); compare(*dst.get(), *dst_ref.get()); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_logistic_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_logistic_tests.cpp index b1f8173606328d..99363c68877211 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_logistic_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_logistic_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -120,7 +120,7 @@ class smoke_CPULogisticOnlyTest : public TestsCommon, compare(*dst, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_power_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_power_tests.cpp index 45e82e789d8af2..8437a12f1d252a 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_power_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_power_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -129,7 +129,7 @@ class smoke_CPUPowerOnlyTest: public TestsCommon, compare(*dst, dst_ref); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_roipooling_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_roipooling_tests.cpp index ff987e4945c43c..12f39d4ed47e3b 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_roipooling_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_roipooling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -92,7 +92,7 @@ class MKLDNNROIPoolingOnlyTest: public TestsCommon, InferenceEngine::Core ie; ASSERT_NO_THROW(ie.ReadNetwork(model, Blob::CPtr())); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_scaleshift_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_scaleshift_tests.cpp index 1e9f95f29967c2..bc1915393ffbc1 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_scaleshift_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_scaleshift_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -154,7 +154,7 @@ class smoke_CPUScaleShiftOnlyTest: public TestsCommon, compare(*dst, dst_ref); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_simplernms_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_simplernms_tests.cpp index dbe4dfe252d8eb..1ddfe5a80e7d49 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_simplernms_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/mkldnn_simplernms_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -142,7 +142,7 @@ class MKLDNNSimplerNMSOnlyTest: public TestsCommon, inferRequest.SetBlob(outInfo.begin()->first, dst); inferRequest.Infer(); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/norm_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/norm_tests.cpp index d1568c7932ed21..d950ce5492e3f9 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/norm_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/norm_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -157,7 +157,7 @@ class smoke_NormOnlyTest: public TestsCommon, ref_norm(*srcPtr, dst_ref, p); compare(*dst, dst_ref); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/pooling_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/pooling_tests.cpp index e97bb9b07d3870..8db87e9c59bcf6 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/pooling_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/pooling_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -159,7 +159,7 @@ class smoke_CPU_PoolingOnlyTest: public TestsCommon, ref_pool(src, dst_ref, p); compare(*dst.get(), *dst_ref.get()); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/priorbox_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/priorbox_tests.cpp index b02069c144a4d5..44a6a976db967d 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/priorbox_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/priorbox_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -191,7 +191,7 @@ class smoke_CPUPriorBoxOnlyTest: public TestsCommon, for (int d = 0; d < p.out.h * p.out.w; ++d) { EXPECT_NEAR(dst_ptr[d], 0.1, eps); } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -353,7 +353,7 @@ class smoke_CPUPriorBoxDensityTest : public TestsCommon, EXPECT_NEAR(dst_ptr[d], 0.1, 1e-6); } } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/region_yolo_tests.cpp b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/region_yolo_tests.cpp index 24eef95effe142..9e998088948038 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/region_yolo_tests.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/single_layer_tests/region_yolo_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -216,7 +216,7 @@ class smoke_CPU_RegionYoloOnlyTest: public TestsCommon, public WithParamInterfac compare(*outputBlobs.begin()->second, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/multi_out_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/multi_out_test.cpp index 2038bdc55e49e8..c94817cd87bfe3 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/multi_out_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/multi_out_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/tripple_test.cpp b/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/tripple_test.cpp index 6d6f53b68684cb..cf544daac38744 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/tripple_test.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/snippet_test/tripple_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/mkldnn/test_model_repo.cpp b/inference-engine/tests_deprecated/functional/mkldnn/test_model_repo.cpp index 1cb30455d332ad..97ab83c5c31e6b 100644 --- a/inference-engine/tests_deprecated/functional/mkldnn/test_model_repo.cpp +++ b/inference-engine/tests_deprecated/functional/mkldnn/test_model_repo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/CMakeLists.txt b/inference-engine/tests_deprecated/functional/shared_tests/CMakeLists.txt index 62019d7638e386..472a014ef16ed1 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/CMakeLists.txt +++ b/inference-engine/tests_deprecated/functional/shared_tests/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2016-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -33,7 +32,7 @@ if(ENABLE_MKL_DNN) endif() # Find OpenCV components if exist -find_package(OpenCV COMPONENTS imgcodecs imgproc QUIET) +find_package(OpenCV COMPONENTS core imgproc QUIET) if(OpenCV_FOUND) target_compile_definitions(${TARGET_NAME} PUBLIC USE_OPENCV) else() diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.cpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.cpp index ba07061b350dea..7030c2d43faca0 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.cpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,7 +13,7 @@ using namespace InferenceEngine; void Convolution_parseParams(InferenceEngine::CNNLayer* layer) { auto convLayer = dynamic_cast(layer); if (!convLayer) { - THROW_IE_EXCEPTION << "Layer is not instance of ConvolutionLayer class"; + IE_THROW() << "Layer is not instance of ConvolutionLayer class"; } convLayer->_out_depth = convLayer->GetParamAsUInt("output"); @@ -61,7 +61,7 @@ void Convolution_parseParams(InferenceEngine::CNNLayer* layer) { std::vector strides = convLayer->GetParamAsUInts("strides", default_1); for (size_t i = 1; i <= strides.size(); i++) { if (strides[strides.size() - i] == 0) { - THROW_IE_EXCEPTION << "Stride could not be 0.\nIn layer " << convLayer->name; + IE_THROW() << "Stride could not be 0.\nIn layer " << convLayer->name; } convLayer->_stride.insert(i - 1, strides[strides.size() - i]); } @@ -96,7 +96,7 @@ void ref_conv_common(const std::vector srcs, const CommonTestUtils::conv_common_params& prm) { if (srcs[0]->getTensorDesc().getLayout() != Layout::NCHW && srcs[0]->getTensorDesc().getLayout() != Layout::NCDHW) - THROW_IE_EXCEPTION << "Reference FP32 convolution supports NCHW and NCDHW layouts only"; + IE_THROW() << "Reference FP32 convolution supports NCHW and NCDHW layouts only"; size_t KW = prm.kernel[X_AXIS]; size_t KH = prm.kernel[Y_AXIS]; size_t KD = prm.kernel.size() > Z_AXIS ? prm.kernel[Z_AXIS] : 1lu; diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.hpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.hpp index 6101200215d211..00ff824ebd83a2 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/conv_ref.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.cpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.cpp index 6ec563430aae20..dfd9f2a1f04d3a 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.cpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,7 +19,7 @@ void ref_deconv_common(const std::vector srcs, size_t bias_size, const CommonTestUtils::conv_common_params &prm) { if (srcs[0]->getTensorDesc().getLayout() != Layout::NCHW) - THROW_IE_EXCEPTION << "Reference FP32 convolution supports NCHW layout only"; + IE_THROW() << "Reference FP32 convolution supports NCHW layout only"; size_t KH = prm.kernel[Y_AXIS]; size_t KW = prm.kernel[X_AXIS]; diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.hpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.hpp index b3a23bbbafe91a..6b602871c4f5c8 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/deconv_ref.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.cpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.cpp index 4d17316ef0741f..751fa28fcf645b 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.cpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,7 +16,7 @@ void Convolution_parseParams(InferenceEngine::CNNLayer* layer); void DeformableConvolution_parseParams(InferenceEngine::CNNLayer* layer) { auto deformable_conv_layer = dynamic_cast(layer); if (!deformable_conv_layer) { - THROW_IE_EXCEPTION << "Layer is not instance of DeformableConvolutionLayer class"; + IE_THROW() << "Layer is not instance of DeformableConvolutionLayer class"; } deformable_conv_layer->_deformable_group = deformable_conv_layer->GetParamAsUInt("deformable_group", 1u); Convolution_parseParams(layer); @@ -32,7 +32,7 @@ void ref_def_conv_common(const std::vector srcs, const CommonTestUtils::def_conv_common_params& prm) { if (srcs[0]->getTensorDesc().getLayout() != Layout::NCHW && srcs[0]->getTensorDesc().getLayout() != Layout::NCDHW) - THROW_IE_EXCEPTION << "Reference FP32 deformable convolution supports NCHW and NCDHW layouts only"; + IE_THROW() << "Reference FP32 deformable convolution supports NCHW and NCDHW layouts only"; size_t KW = prm.kernel[X_AXIS]; size_t KH = prm.kernel[Y_AXIS]; size_t KD = prm.kernel.size() > Z_AXIS ? prm.kernel[Z_AXIS] : 1lu; @@ -163,7 +163,7 @@ void ref_def_conv_common(const std::vector srcs, const CommonTestUtils::def_conv_common_params& prm) { if (srcs[0]->getTensorDesc().getLayout() != Layout::NCHW && srcs[0]->getTensorDesc().getLayout() != Layout::NCDHW) - THROW_IE_EXCEPTION << "Reference FP16 deformable convolution supports NCHW and NCDHW layouts only"; + IE_THROW() << "Reference FP16 deformable convolution supports NCHW and NCDHW layouts only"; size_t KW = prm.kernel[X_AXIS]; size_t KH = prm.kernel[Y_AXIS]; size_t KD = prm.kernel.size() > Z_AXIS ? prm.kernel[Z_AXIS] : 1lu; diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.hpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.hpp index cb53ad92e9854e..1410169d09c820 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/def_conv_ref.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.cpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.cpp index a20182903c4c8c..ec1dde8567311e 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.cpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -12,7 +12,7 @@ using namespace InferenceEngine; void Pool_parseParams(InferenceEngine::CNNLayer* layer) { auto poolLayer = dynamic_cast(layer); if (!poolLayer) { - THROW_IE_EXCEPTION << "Layer is not instance of PoolingLayer class"; + IE_THROW() << "Layer is not instance of PoolingLayer class"; } poolLayer->_kernel.clear(); @@ -81,7 +81,7 @@ void Pool_parseParams(InferenceEngine::CNNLayer* layer) { std::string alg = poolLayer->GetParamAsString("pool-method", "max"); poolLayer->_type = alg == "avg" ? InferenceEngine::PoolingLayer::AVG : InferenceEngine::PoolingLayer::MAX; if (alg != "max" && alg != "avg") { - THROW_IE_EXCEPTION << "Layer has incorrect pool-type!"; + IE_THROW() << "Layer has incorrect pool-type!"; } } } else { @@ -95,7 +95,7 @@ void Pool_parseParams(InferenceEngine::CNNLayer* layer) { std::vector strides = poolLayer->GetParamAsUInts("strides", default_1); for (size_t i = 1; i <= strides.size(); i++) { if (strides[strides.size() - i] == 0) { - THROW_IE_EXCEPTION << "Stride could not be 0.\nIn layer " << poolLayer->name; + IE_THROW() << "Stride could not be 0.\nIn layer " << poolLayer->name; } poolLayer->_stride.insert(i - 1, strides[strides.size() - i]); } @@ -114,7 +114,7 @@ void Pool_parseParams(InferenceEngine::CNNLayer* layer) { std::string alg = poolLayer->GetParamAsString("pool-method", "max"); poolLayer->_type = alg == "avg" ? InferenceEngine::PoolingLayer::AVG : InferenceEngine::PoolingLayer::MAX; if (alg != "max" && alg != "avg") { - THROW_IE_EXCEPTION << "Layer has incorrect pad-type!"; + IE_THROW() << "Layer has incorrect pad-type!"; } } // TODO: checks for presence of all required attributes, and that there's no extraneous parameters only. @@ -124,7 +124,7 @@ template<> void ref_pool_common(const std::vector srcs, Blob &dst, const CommonTestUtils::pool_common_params &p) { if (srcs[0]->getTensorDesc().getLayout() != Layout::NCHW) - THROW_IE_EXCEPTION << "Reference FP32 convolution supports NCHW layout only"; + IE_THROW() << "Reference FP32 convolution supports NCHW layout only"; size_t KW = p.kernel[X_AXIS]; size_t KH = p.kernel[Y_AXIS]; diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.hpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.hpp index 0772c3654da79d..6584b08cbe0b71 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/pool_ref.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/single_layer_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/single_layer_tests.hpp index c96b35462ed733..92976e9cbc11ac 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/single_layer_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/common_single_layer_tests/single_layer_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/graph_tools/graph_tools_functional_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/graph_tools/graph_tools_functional_tests.hpp index 66975dcf639358..5ce1b544c59526 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/graph_tools/graph_tools_functional_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/graph_tools/graph_tools_functional_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/inference_engine_regression_tests/common_dyn_batch_regression.hpp b/inference-engine/tests_deprecated/functional/shared_tests/inference_engine_regression_tests/common_dyn_batch_regression.hpp index 4e6c9dfeb323ce..c7c0d361b4e84b 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/inference_engine_regression_tests/common_dyn_batch_regression.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/inference_engine_regression_tests/common_dyn_batch_regression.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/input_tests/parser_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/input_tests/parser_tests.hpp index d1594ad406ccd0..0222e8678fcd7e 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/input_tests/parser_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/input_tests/parser_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -122,7 +122,7 @@ TEST_F(IncorrectIRTests, smoke_loadIRWithIncorrectInput) { InferenceEngine::Core ie; ASSERT_THROW(ie.ReadNetwork(model, InferenceEngine::Blob::CPtr()), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } TEST_P(IncorrectIRTests, loadIncorrectLayer) { diff --git a/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/cropResize_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/cropResize_tests.hpp index f878731c3370b2..2a3ef4ab9ea250 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/cropResize_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/cropResize_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -26,7 +26,6 @@ #include #include "ie_parallel.hpp" -#include "details/ie_exception.hpp" using namespace ::testing; using namespace InferenceEngine; @@ -36,7 +35,7 @@ Blob::Ptr img2Blob(const std::vector& imgs, Layout layout) { using data_t = typename PrecisionTrait::value_type; if (imgs.empty()) { - THROW_IE_EXCEPTION << "No images to create blob from"; + IE_THROW() << "No images to create blob from"; } // get image value in correct format @@ -50,7 +49,7 @@ Blob::Ptr img2Blob(const std::vector& imgs, Layout layout) { case CV_32FC3: return img.at(h, w)[c]; case CV_32FC4: return img.at(h, w)[c]; default: - THROW_IE_EXCEPTION << "Image type is not recognized"; + IE_THROW() << "Image type is not recognized"; } }; @@ -92,7 +91,7 @@ Blob::Ptr img2Blob(const std::vector& imgs, Layout layout) { } break; default: - THROW_IE_EXCEPTION << "Inconsistent input layout for image processing: " << layout; + IE_THROW() << "Inconsistent input layout for image processing: " << layout; } } return resultBlob; @@ -153,7 +152,7 @@ class Base : public TestsCommon, public WithParamInterface { case ColorFormat::BGRX: return cv::COLOR_BGR2BGRA; case ColorFormat::RGBX: return cv::COLOR_BGR2RGBA; case ColorFormat::RGB: return cv::COLOR_BGR2RGB; - default: THROW_IE_EXCEPTION << "Color format " << fmt << " not found"; + default: IE_THROW() << "Color format " << fmt << " not found"; } return cv::COLOR_COLORCVT_MAX; } @@ -248,7 +247,7 @@ class RandomROITest: public Base> if (((_colorFormat == BGRX) || (_colorFormat == RGBX)) && (_inputLayout != NHWC)) { - THROW_IE_EXCEPTION << "The color format with the layout aren't compatible."; + IE_THROW() << "The color format with the layout aren't compatible."; } _inputPrecision = _inPrcThresh.first; @@ -507,7 +506,7 @@ class CropResizeTest : public ResizeBase { } break; default: - THROW_IE_EXCEPTION << "Can't resize data of inconsistent precision: " << _inputPrecision; + IE_THROW() << "Can't resize data of inconsistent precision: " << _inputPrecision; } refBlob = img2Blob(resizedImg, Layout::NCHW); @@ -543,7 +542,7 @@ TEST_P(CropResizeTest, resizeTest) { Blob::Ptr outputBlob = req.GetBlob(net.getOutputsInfo().begin()->first); if (refBlob->size() != outputBlob->size()) { - THROW_IE_EXCEPTION << "reference and output blobs have different sizes!"; + IE_THROW() << "reference and output blobs have different sizes!"; } compare(*outputBlob, *refBlob, _threshold); @@ -579,7 +578,7 @@ TEST_P(CropResizeTest, resizeAfterLoadTest) { Blob::Ptr outputBlob = req.GetBlob(net.getOutputsInfo().begin()->first); if (refBlob->size() != outputBlob->size()) { - THROW_IE_EXCEPTION << "reference and output blobs have different sizes!"; + IE_THROW() << "reference and output blobs have different sizes!"; } compare(*outputBlob, *refBlob, _threshold); @@ -642,7 +641,7 @@ TEST_P(CropResizeTest, cropRoiTest) { } break; default: - THROW_IE_EXCEPTION << "Can't resize data of inconsistent precision: " << _inputPrecision; + IE_THROW() << "Can't resize data of inconsistent precision: " << _inputPrecision; } refBlob = img2Blob(resizedImg, Layout::NCHW); @@ -661,7 +660,7 @@ TEST_P(CropResizeTest, cropRoiTest) { Blob::Ptr outputBlob = req.GetBlob(net.getOutputsInfo().begin()->first); if (refBlob->size() != outputBlob->size()) { - THROW_IE_EXCEPTION << "reference and output blobs have different sizes!"; + IE_THROW() << "reference and output blobs have different sizes!"; } compare(*outputBlob, *refBlob, _threshold); @@ -740,7 +739,7 @@ TEST_P(BatchResizeTest, batchTest) { } break; default: - THROW_IE_EXCEPTION << "Can't resize data of inconsistent precision: " + IE_THROW() << "Can't resize data of inconsistent precision: " << _inputPrecision; } } @@ -762,7 +761,7 @@ TEST_P(BatchResizeTest, batchTest) { } break; default: - THROW_IE_EXCEPTION << "Can't resize data of inconsistent precision: " + IE_THROW() << "Can't resize data of inconsistent precision: " << _inputPrecision; } @@ -780,7 +779,7 @@ TEST_P(BatchResizeTest, batchTest) { Blob::Ptr outputBlob = req.GetBlob(net.getOutputsInfo().begin()->first); if (refBlob->size() != outputBlob->size()) { - THROW_IE_EXCEPTION << "reference and output blobs have different sizes!"; + IE_THROW() << "reference and output blobs have different sizes!"; } compare(*outputBlob, *refBlob, _threshold); @@ -866,7 +865,7 @@ TEST_P(DynamicBatchResizeTest, dynamicBatchTest) { } break; default: - THROW_IE_EXCEPTION << "Can't resize data of inconsistent precision: " + IE_THROW() << "Can't resize data of inconsistent precision: " << _inputPrecision; } } @@ -896,7 +895,7 @@ TEST_P(DynamicBatchResizeTest, dynamicBatchTest) { } break; default: - THROW_IE_EXCEPTION << "Can't resize data of inconsistent precision: " + IE_THROW() << "Can't resize data of inconsistent precision: " << _inputPrecision; } @@ -918,7 +917,7 @@ TEST_P(DynamicBatchResizeTest, dynamicBatchTest) { } if (refBlob->size() != outputBlob->size()) { - THROW_IE_EXCEPTION << "reference and output blobs have different sizes!"; + IE_THROW() << "reference and output blobs have different sizes!"; } compare(*outputBlob, *refBlob, _threshold); @@ -991,7 +990,7 @@ TEST_P(ReorderTest, reorderTest) { } break; default: - THROW_IE_EXCEPTION << "Can't resize data of inconsistent precision: " << _inputPrecision; + IE_THROW() << "Can't resize data of inconsistent precision: " << _inputPrecision; } refBlob = img2Blob(_img, Layout::NCHW); @@ -1008,7 +1007,7 @@ TEST_P(ReorderTest, reorderTest) { Blob::Ptr outputBlob = req.GetBlob(net.getOutputsInfo().begin()->first); if (refBlob->size() != outputBlob->size()) { - THROW_IE_EXCEPTION << "reference and output blobs have different sizes!"; + IE_THROW() << "reference and output blobs have different sizes!"; } compare(*outputBlob, *refBlob, _threshold); @@ -1058,7 +1057,7 @@ class NV12ColorConvertTest : public Base { _inputLayout = Layout::NCHW; if (_inputPrecision != Precision::U8) { - THROW_IE_EXCEPTION << "Specified input precision != Precision::U8"; + IE_THROW() << "Specified input precision != Precision::U8"; } _yRoi = _cropRoi; @@ -1156,7 +1155,7 @@ TEST_P(NV12ColorConvertTest, NV12Test) { Blob::Ptr outputBlob = req.GetBlob(net.getOutputsInfo().begin()->first); if (refBlob->size() != outputBlob->size()) { - THROW_IE_EXCEPTION << "reference and output blobs have different sizes!"; + IE_THROW() << "reference and output blobs have different sizes!"; } compare(*outputBlob, *refBlob, _threshold); diff --git a/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/dims_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/dims_tests.hpp index e00fb88000580b..1082759d965380 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/dims_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/dims_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/layout_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/layout_tests.hpp index d23dbc7ae0e62f..e276762a3306b7 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/layout_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/io_blob_tests/layout_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_cell_test.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_cell_test.hpp index b9cf3ae3e22f65..931774ed34abec 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_cell_test.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_cell_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_ir_test.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_ir_test.hpp index dbbc90511b0147..ca1d9fcac16291 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_ir_test.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/lstm_ir_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/npy.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/npy.hpp index 695b186ede0b32..1878215cd0954f 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/npy.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/npy.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/plg_test.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/plg_test.hpp index 0f5b0b6211de7e..c7e5039b327fb3 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/plg_test.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/plg_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.cpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.cpp index 71669065f82819..0e6781d8dccdb3 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.cpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.hpp index 346921d7df380c..0a0c280704896d 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_gen.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.cpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.cpp index f1212ea36f5d38..8f3e5b735c8092 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.cpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -54,7 +54,7 @@ class RNN_ReferBase : public RNN_Referee { else if (act.alg == "relu") res = [=] (const float x) { return (x > 0) ? x : alpha*x; }; else - THROW_IE_EXCEPTION << "Unknown activation type " << act.alg; + IE_THROW() << "Unknown activation type " << act.alg; return res; } diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.hpp index af1d9d3372dd66..3242bcbfbed97c 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_referee.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp index 287d41b130f9e1..4e83949cf7389f 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_seq_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.cpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.cpp index 92973c3e3a145a..4d3f596b043253 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.cpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.hpp b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.hpp index 4199ecdf7a38b4..878a48fe05a7ca 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/lstm/rnn_util.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/precomp.hpp b/inference-engine/tests_deprecated/functional/shared_tests/precomp.hpp index 625a48ff6cd2a7..a44c237976eb89 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/precomp.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/precomp.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/bin_conv_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/bin_conv_tests.hpp index 5c599e77f12fd9..170378f66475e8 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/bin_conv_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/bin_conv_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -171,7 +171,7 @@ class BinaryConvolutionOnlyTest : public TestsCommon, const bin_conv_common_params& prm) { if (src.getTensorDesc().getLayout() != Layout::NCHW && dst.getTensorDesc().getLayout() != Layout::NCDHW) - THROW_IE_EXCEPTION << "Reference FP32 convolution supports NCHW and NCDHW layouts only"; + IE_THROW() << "Reference FP32 convolution supports NCHW and NCDHW layouts only"; size_t KW = prm.kernel[X_AXIS]; size_t KH = prm.kernel[Y_AXIS]; size_t KD = prm.kernel.size() > Z_AXIS ? prm.kernel[Z_AXIS] : 1lu; @@ -337,7 +337,7 @@ class BinaryConvolutionOnlyTest : public TestsCommon, infer(network, p, src, dst); compare(*dst, *dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/deformable_psroi_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/deformable_psroi_tests.hpp index baa2da590248fd..16f18da5fb97f7 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/deformable_psroi_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/deformable_psroi_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -316,7 +316,7 @@ class DeformablePSROIOnlyTest : public TestsCommon, compare(*dsts_map.begin()->second, *dsts_vec[0]); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/gemm_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/gemm_tests.hpp index b67d689053d34a..8e431ee9326e83 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/gemm_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/gemm_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/one_hot_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/one_hot_tests.hpp index f4842b19a3caed..0c62b519b3da78 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/one_hot_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/one_hot_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -183,7 +183,7 @@ class OneHotOnlyTestShared: public TestsCommon, ref_one_hot_4d(*src, dst_ref, p); compare(*output, dst_ref); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/permute_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/permute_tests.hpp index 1206787fe8d1ba..361a6f29f463f9 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/permute_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/permute_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -142,7 +142,7 @@ class PermuteOnlyTests: public TestsCommon, ref_permute(*srcPtr, dst_ref, p.base); compare(*output, dst_ref); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/quantize_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/quantize_tests.hpp index 91a5f0beabe68d..23fcd962a75c58 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/quantize_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/quantize_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -296,7 +296,7 @@ class QuantizeOnlyTest : public TestsCommon, public WithParamInterface(*srcPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/ti_tests.hpp b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/ti_tests.hpp index 2498281bd782e5..706fdc1240f1bd 100644 --- a/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/ti_tests.hpp +++ b/inference-engine/tests_deprecated/functional/shared_tests/single_layer_tests/ti_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -30,7 +30,7 @@ static void setValuesInBlob(Blob::Ptr blob, float value) { std::vector values_vector(output_size, value); if (!blob->is()) - THROW_IE_EXCEPTION << "Only MemoryBlob is expected here"; + IE_THROW() << "Only MemoryBlob is expected here"; auto m_blob = blob->as(); if (m_blob->wmap().as() == nullptr) @@ -169,7 +169,7 @@ class TITestBase: public PlgTest { setValuesInBlob(req.GetBlob("in2"), 1.0f); req.Infer(); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -321,7 +321,7 @@ class TITest2Base: public PlgTest { setValuesInBlob(req.GetBlob("in1"), 1.0f); req.Infer(); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/functional/vpu/CMakeLists.txt b/inference-engine/tests_deprecated/functional/vpu/CMakeLists.txt index 1ee7e078f4f114..b3245238c30f2c 100644 --- a/inference-engine/tests_deprecated/functional/vpu/CMakeLists.txt +++ b/inference-engine/tests_deprecated/functional/vpu/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation -# +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.cpp b/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.cpp index 094be4dd9098ba..5192b1b6f03505 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.h b/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.h index 0181cec5142a2e..75410abb54f53a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.h +++ b/inference-engine/tests_deprecated/functional/vpu/common/bbox_util.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.cpp index 9984954103a797..d645f5627ea3d2 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.hpp index f366fbd8f46531..c688ead5d6f792 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_CTCDecoder_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.cpp index a30d8b1d215d19..7e0378afebfaa0 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.hpp index 20d451b1cfc113..ad4c1d6f393383 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_batch_normalization_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.cpp index eb89b5c18058ff..a54a50efbe0303 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.hpp index 6aa5110b4326b8..5032c8c5e5497f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_bias_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_blob_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_blob_test.cpp index 8c576d7e752132..fc210dee5b7d26 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_blob_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_blob_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.cpp index bffd09723851e8..4d031eed5dcd2c 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.hpp index a201e14581b59d..aaf623bd75f894 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_clamp_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.cpp index ded0c301fad01b..5872049504a145 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.hpp index 01d2b314c29dd4..775708c6389c7f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_concat_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -151,20 +151,6 @@ static std::vector s_concatInputs = { {{1,}, {1, 2, 4}, {1, 2, 3, 4, 5}, {2, 4}} }; -template -std::ostream &operator << (std::ostream & os, const std::vector & vector_of_elements) { - os <<"{"; - int idx=0; - for(const auto & element : vector_of_elements) { - os << element; - if(++idx != vector_of_elements.size()) { - os<<","; - } - } - os <<"}"; - return os; -} - //function is returning correct name to gtest std::string getTestCaseName(testing::TestParamInfo param) { auto core = std::get<0>(param.param); diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.cpp index 78ef816d51714b..472403fa6f283a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.hpp index a88f2d40b80a4b..edba5bbb135494 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_conv_nd_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.cpp index 556f9fd8ef90e6..582311afe2289a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.hpp index fdadfbf8296461..4fa185912664b6 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convert_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.cpp index 6143dbbed3f9b0..b25f1d80d38e12 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.hpp index 84be867f2608ac..11dcd976953bef 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution1x1.hpp @@ -1,4 +1,4 @@ -// // Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.cpp index df2fecebc9c58f..537bef657fdf3b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.hpp index 7945608d11e91f..2861bcf0420012 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution3x3.hpp @@ -1,4 +1,4 @@ -// // Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.cpp index 4592cc1dfee236..9093504eaf65ea 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.hpp index 3c88234d211412..2f6a85541bf0e1 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_convolution_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.cpp index e2526fbab8c0fe..2dafed621277ba 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.hpp index 2e78063daab370..6bb737cc80424e 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_copy_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.cpp index c7e2de4bc12476..8df5595df1786b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.hpp index d4e56da0c6ba45..df5f7748f42e2d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_crop_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.cpp index 3ad912198dac0a..106f2ea52532a6 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.hpp index af8a1d92aaa35a..2d549fbb3708ff 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_custom_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.cpp index b1f42b1bc76f45..6dd93d3b1460e6 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.hpp index 526b7df15f2e31..7df94f20a57cc7 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_deconvolution_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_detection_output_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_detection_output_test.cpp index 51b53dbac0278a..60cfdb62deab9b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_detection_output_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_detection_output_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.cpp index e7e9b5e6b042b8..9b307b8d91e438 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.hpp index 94b33390790cdb..6300798c1d1951 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_eltwise_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.cpp index bd7f236d7b986c..16d211a1467917 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.hpp index b0a84210da5b5b..9a6fcec6074e61 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_elu_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.cpp index 8f5ef6a2caf94e..609d76fa4c227f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.hpp index 9d4c32641e98fe..e5bb01ae230572 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_erf_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.cpp index 969ffdc03b0e12..23f6b46deaca60 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.hpp index 407d3ce8d3f4c1..e7206e8766abac 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_detectionoutput_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals.cpp index bedf24f7f15004..63175d7ce9d843 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals_test.hpp index e10f151e70c8df..833d6becc5a86a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_generateproposals_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.cpp index 8913312f090059..1036a4bdf7da45 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.hpp index 7cf3b9470c74e1..b773cdd9005b5a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_priorgridgenerator_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.cpp index f5ce39ba41b296..b78906e928d640 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.hpp index 03f33d8d7ed688..ef37dfd8477396 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.cpp index bd8a826672e1a3..ff0094c4f20462 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.hpp index e788952d1061d2..839e0c8cf068df 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_exp_topkrois_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.cpp index c98d36fff2134d..98978ecfd11650 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.hpp index 7dde0103154251..eaf6b24c6a9349 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_flatten_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.cpp index 351dae0bf6f108..cdd5dc7422ac10 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.hpp index 479ee3a8cc3ff2..6183c608969b66 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_floor_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.cpp index 31e8a73e866b58..8ec8ad6378ce77 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.hpp index c671d15ba94068..8f8563fb9a9fe7 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_fully_connected_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.cpp index 2f0aafdea56d1d..7cb12c87748490 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.hpp index 3280898eb571bc..04c75577a8dc51 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_gemm_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.cpp index 3d2f15df078115..5cccc5f5be32d4 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.hpp index d35a8aba969268..c6d03a1479a335 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_grn_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.cpp index 1628d021f2ed48..bfedb4600671d1 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.hpp index 834461632ebe7b..edf60aa91420ab 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_interp_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.cpp index 24d235e3d1879f..490a762997e805 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.hpp index 1c0801bcdb4067..fa7f21e5850aba 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_log_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.cpp index c0d9b153ca1d56..a7b3172ff43149 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.hpp index dcb4f7652448b1..888683290c3c9d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lrn_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.cpp index 95df481396d1ec..819de8087dbbc6 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.hpp index 0310b10cff5f90..aad4be30e2bbd0 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_lstm_cell.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.cpp index 17745545002ac6..702c3688e560dc 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.hpp index 95a1dafba03b3d..2eb0826ff10bb8 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_mvn_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.cpp index bbcd9e37314215..0075457ce6a4db 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.hpp index a15caa918586a7..ab4a454cf5ce0d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_nonzero_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.cpp index a9a70a92611b60..34b9e4600cd86b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.hpp index 64c24edaff90d5..874855149c5116 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_normalize_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.cpp index 59fa5635daee42..7233519144730b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.hpp index 44f4d703bb1701..7bcb413ea09ffc 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_oneHot_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.cpp index abe65e9f72236a..e45d93d121fb15 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.hpp index 013881cd33e572..59d56fdb61e93f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pad_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.cpp index 453e15552f9d9e..463163e8c561fb 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.hpp index 93a86e1b135027..0b4b440b5209ae 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_nd_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,7 +23,7 @@ void calculateRefBlob(const Blob::Ptr& src, Blob::Ptr dst, const SizeVector& per case InferenceEngine::Precision::FP16: ref_Permute(src, dst, permutationVector); break; - default: THROW_IE_EXCEPTION << "Unsupported precision"; + default: IE_THROW() << "Unsupported precision"; } } diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.cpp index 41973e348c371e..a8738e300b51c6 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.hpp index a48e444091d6ee..ce06a6c28d27ab 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_permute_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.cpp index 543d40091cf20f..b6b791c108a08d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.hpp index 42a22176a7fb70..fc02ce8d462361 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pool_nd_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.cpp index 1564201cb343f0..1fda0995a0b357 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.hpp index 2b1a6f50bfd45d..3d8d38e60231a3 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_pooling_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.cpp index 69142a11c05148..a8557aa10ed013 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.hpp index 082a859f904bbf..d59f684d274d4f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_power_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.cpp index f15f0f2eb47dfa..7a6f469a06acee 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.hpp index 12dd20562b0998..2d4d27100bbd95 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prelu_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_clustered_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_clustered_test.cpp index 9fea2f659c3c24..394193fdb0eebb 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_clustered_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_clustered_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_test.cpp index ac1d81b3df651e..7dc3954a567701 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_prior_box_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_proposal_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_proposal_test.cpp index e32bc8bd70d881..5bc6ebd40abdab 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_proposal_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_proposal_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.cpp index 535cdf1284e77d..1955910aa7f78f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.hpp index 5d80aa2674624a..9f25bb1df37fd7 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_psroipooling_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.cpp index 525691f3a398f4..eeb62e51ca0e27 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.hpp index 453d50f35ff3e4..3cab95e484ed7b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reduce_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.cpp index f81be4a08fc93b..a5470c4ac956f1 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.hpp index 55cd947c3bb00c..c160eb7db7cbdf 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_region_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.cpp index 8f4900509833db..84c9a828040b65 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.hpp index dc03d73409741a..62d4e3d76d4069 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_relu_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.cpp index d46d0c1061f272..6b5e88de88d17f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.hpp index 3f27835e0b2344..ae355726b53f0c 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reorg_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.cpp index 97d81cfe68dca7..c111327edd8614 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.hpp index a160565d12b84a..ed5665d467f7ab 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_resample_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.cpp index c4b9d0a021f145..721a9c6820155e 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.hpp index d6f7c42de3c643..c6af4f2afb59e6 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reshape_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.cpp index bc5c38e449e1fe..21938c5e595ba1 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.hpp index 6ef6ba63a19443..22f9c4fa17b457 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_reverse_sequence_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_rfcn_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_rfcn_test.cpp index 7ff0e233fd8ec0..3836b8a84b603b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_rfcn_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_rfcn_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.cpp index 9daf7aa670921b..87c467e3dfc6bd 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.hpp index 397efdcc1f1376..e7252202d1e115 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_align_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.cpp index 4c44ef6a3803ed..e047f00ce0c47a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.hpp index b4914602611ac2..da51e1e2e2c420 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_feature_extractor_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.cpp index ff45363c66dd20..dc88686743cd4d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.hpp index 3fb28d41c266a3..958f5ffbc9954b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_roi_pooling_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.cpp index 8c8de925791e8f..0bee6c57c432ee 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.hpp index 812afc02fea96a..5d5f767dc5845b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scale_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.cpp index 7d7b6a3054f5dc..e344d9fac8a151 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.hpp index 0568d3bf4626fe..64c24f310ace21 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_elements_update_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.cpp index 6f5fda6d856a26..4412c1d1cf6248 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.hpp index 4f8d3c79036a2c..96909a26d85d52 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_scatter_update_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.cpp index 0d63d0fc03fb45..76939b7c23e7b4 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.hpp index 15a24d01c747f5..757586bf2c9705 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_select_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.cpp index 89d8f407d250fe..4eca99fa2ff43f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.hpp index 5bfeffb020b8c0..5a49b8892d1c4e 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_sigmoid_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.cpp index d5a5ee1d2205fd..f710365f2e02c3 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.hpp index 2e5c53ffa80046..56b3cd47b8111e 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_slice_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.cpp index 8e3bd5683c8ec3..75cea33ed2b3b2 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.hpp index 38fdb639f6ba90..5abc1907ad6f21 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_softmax_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.cpp index 72ba0c199dc417..cc28aa41976701 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.hpp index c79983df2109eb..00caa483474183 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_split_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.cpp index f00894aeababee..be4f155363970d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.hpp index c0d8ef8e8df7c8..085bb7119a0bd4 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_squeeze_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.cpp index 5be47e61122e9a..b3936b10db02e8 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.h b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.h index 4d5cb7141f1df7..ef5d8a76e2cd36 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.h +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_strided_slice_test.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.cpp index 20268ffa5403ba..60f816b0842c25 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.hpp index 7fd4916029ac12..bf74a0724560bd 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tanh_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.cpp index e4eb5bcd251556..ad6d40376a515e 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.hpp index 48b285ce235a78..3aec5bf335dfeb 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_tile_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.cpp index 6f5f795495a0b8..23a36df4f58559 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.hpp index 61b8b484a2fdf8..c910dfe63e114e 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_topk_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.cpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.cpp index 78bfc189e9b525..070a99e64051fe 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.hpp b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.hpp index 551aac2bec62f6..7ed5b134551069 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/myriad_layers_unsqueeze_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/layers/weights_for_convolution_test.h b/inference-engine/tests_deprecated/functional/vpu/common/layers/weights_for_convolution_test.h index 33f338eeda50ad..bc37379e624589 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/layers/weights_for_convolution_test.h +++ b/inference-engine/tests_deprecated/functional/vpu/common/layers/weights_for_convolution_test.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.cpp index 90129ebf505ff8..4d45cc5a9a2795 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.hpp index 6c8c084e9894cc..2421f93e140588 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_output_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_perf_count_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_perf_count_tests.cpp index f3b86588fe80d1..c38515813f29e6 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_perf_count_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_get_perf_count_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_conv_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_conv_tests.hpp index 60efef04a2dc0d..f911e8e3fe7cf7 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_conv_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_conv_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_extra_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_extra_tests.hpp index f9fdb96b1ea521..f7c5b2bca0645d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_extra_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_extra_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_fc_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_fc_tests.hpp index fa92f790ea9e8a..5542538947785c 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_fc_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_fc_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_network_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_network_tests.hpp index 35f4495f693ce9..2252dc3cd724fc 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_network_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_network_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.cpp index 954f4c908b01ec..89ab9b1743f1e0 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.hpp index 05d056b77269a6..278f25e3356bca 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_opt_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_pool_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_pool_tests.hpp index d4e787d7405443..10f982b6945a65 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_pool_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_pool_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_tests_base.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_tests_base.hpp index b1b82760b7a850..66e6660957bb6b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_tests_base.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_hw_tests_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_infer_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_infer_tests.cpp index df653d0a31b9ff..c32d9669ae853d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_infer_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_infer_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.cpp index 748aad76d91ffc..0c11efcf6eabe2 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.hpp index 69a80f9e2156f5..26d6352b573a93 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_merge_permute_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/myriad_xml_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/common/myriad_xml_tests.hpp index 9743ab42e7cccc..d0924e9a535480 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/myriad_xml_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/myriad_xml_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/reference_regression.cpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/reference_regression.cpp index b0c6c1b04f156b..5330b3627b7876 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/reference_regression.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/reference_regression.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.cpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.cpp index 7c06d3024b2b3a..7b03eb8a1c2058 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.hpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.hpp index c4449099e7ecda..8047b9d848ed49 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_params.hpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_params.hpp index 4a7528bcb8564c..55ad08f4a32d05 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_params.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_case_params.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.cpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.cpp index 3b08936952f02e..dd767687613871 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.hpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.hpp index eeb4551428602b..81dd646c459ff9 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_classification_case.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.cpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.cpp index 80271c64f6371e..8227ccfe70b519 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.hpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.hpp index 5d81d4a4062139..8d90f94e29b016 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_param_containers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.cpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.cpp index 2caaec12d51cf2..94893b8a59dc5e 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -39,7 +39,7 @@ std::vector VpuNoRawResultsRegression::fromBinaryFile(std::string inputTe result.push_back(tmp); } } else { - THROW_IE_EXCEPTION << "Can't open file "<< inputTensorBinary; + IE_THROW() << "Can't open file "<< inputTensorBinary; } return result; @@ -134,7 +134,7 @@ bool VpuNoRawResultsRegression::loadImage(const std::string &imageFilename, cons break; } default: - THROW_IE_EXCEPTION << "Unsupported precision!"; + IE_THROW() << "Unsupported precision!"; } } } @@ -179,7 +179,7 @@ bool VpuNoRawResultsRegression::generateSeqIndLPR(InferenceEngine::Blob::Ptr &se break; } default: - THROW_IE_EXCEPTION << "Unsupported precision!"; + IE_THROW() << "Unsupported precision!"; } return true; @@ -224,7 +224,7 @@ bool VpuNoRawResultsRegression::loadTensorDistance(InferenceEngine::Blob::Ptr bl break; } default: - THROW_IE_EXCEPTION << "Unsupported precision!"; + IE_THROW() << "Unsupported precision!"; } return true; diff --git a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.hpp b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.hpp index 68fdbb6c4a41c6..db333f6e12fe00 100644 --- a/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/common/regression/helpers/vpu_raw_results_case.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -134,7 +134,7 @@ void VpuNoRawResultsRegression::readInputForLPR(const Ctx & ctx) { auto seq_ind = ctx.currentInputs(); generateSeqIndLPR(seq_ind); } else { - THROW_IE_EXCEPTION << "incorrect input index for LPRNET: " << ctx.getInputIdx(); + IE_THROW() << "incorrect input index for LPRNET: " << ctx.getInputIdx(); } } diff --git a/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.cpp index 6e17719a5f34d7..b5c98e0b368a97 100644 --- a/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.hpp index 9005c76204e1a9..155b9f21ea3683 100644 --- a/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/graph_transformer/gt_functional_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/graph_transformer/merge_permute_and_reorder_test.cpp b/inference-engine/tests_deprecated/functional/vpu/graph_transformer/merge_permute_and_reorder_test.cpp index c6b18a373dcc3a..abcf7b062c6133 100644 --- a/inference-engine/tests_deprecated/functional/vpu/graph_transformer/merge_permute_and_reorder_test.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/graph_transformer/merge_permute_and_reorder_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_configs_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_configs_tests.cpp index ec4259dbb0a8b5..074ed1a78ef2cb 100644 --- a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_configs_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_configs_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -51,7 +51,7 @@ TEST_P(myriadCorrectModelsConfigsTests_nightly, CreateInferRequestWithUnavailabl InferenceEngine::InferRequest request; ASSERT_THROW(request = executable.CreateInferRequest(), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } //------------------------------------------------------------------------------ @@ -64,7 +64,7 @@ TEST_P(myriadIncorrectModelsConfigsTests_nightly, LoadNetworkWithIncorrectConfig InferenceEngine::CNNNetwork net(ngraph::builder::subgraph::makeSplitConvConcat()); InferenceEngine::ExecutableNetwork executable; ASSERT_THROW(executable = _vpuPluginPtr->LoadNetwork(net, config), - InferenceEngine::details::InferenceEngineException); + InferenceEngine::Exception); } //------------------------------------------------------------------------------ diff --git a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_multiple_graph_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_multiple_graph_tests.cpp index 552b09d86882ee..19a626a90bb2bd 100644 --- a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_multiple_graph_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_multiple_graph_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_streams_configuration_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_streams_configuration_tests.cpp index e6b13686767f9f..a6d99e2367a3ea 100644 --- a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_streams_configuration_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/myriad_streams_configuration_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/vpu_tests_config.cpp b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/vpu_tests_config.cpp index d829985ab92b1b..298a337781d8f2 100644 --- a/inference-engine/tests_deprecated/functional/vpu/myriad_tests/vpu_tests_config.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/myriad_tests/vpu_tests_config.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp index 553dc2e959a644..0b59f755bb1b80 100644 --- a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/common_single_layer_tests/single_layer_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/input_tests/parser_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/input_tests/parser_tests.cpp index d03eb761dd43a1..616e2214011bed 100644 --- a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/input_tests/parser_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/input_tests/parser_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/cropResize_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/cropResize_tests.cpp index 02f0d10648b0f4..48badaa1b3706a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/cropResize_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/cropResize_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/dims_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/dims_tests.cpp index 4f59e6311f0345..668afcebc3c295 100644 --- a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/dims_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/dims_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/layout_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/layout_tests.cpp index d3af081fb1d472..f90e5d3951b019 100644 --- a/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/layout_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/shared_tests_instance/io_blob_tests/layout_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/test_data/test_model_repo.cpp b/inference-engine/tests_deprecated/functional/vpu/test_data/test_model_repo.cpp index 1cb30455d332ad..97ab83c5c31e6b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/test_data/test_model_repo.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/test_data/test_model_repo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/tester.py b/inference-engine/tests_deprecated/functional/vpu/tester.py index e74cb0a33a1647..89aaa3d2a4ce7c 100644 --- a/inference-engine/tests_deprecated/functional/vpu/tester.py +++ b/inference-engine/tests_deprecated/functional/vpu/tester.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import errno import os import sys diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.cpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.cpp index f9f215a8c67567..7a9b21bd66109d 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -467,7 +467,7 @@ void ref_innerproduct(const Blob::Ptr src, IW = dims[1]; break; default: - THROW_IE_EXCEPTION << "Unsupported layout: " << tensorDesc.getLayout(); + IE_THROW() << "Unsupported layout: " << tensorDesc.getLayout(); } const uint16_t *src_data = static_cast(src->buffer()); const uint16_t *weights_data = weights; @@ -639,7 +639,7 @@ void ref_permute_wrap(const InferenceEngine::Blob::Ptr src, ref_Permute(src, dst, order); break; default: - THROW_IE_EXCEPTION << "Unsupported precision"; + IE_THROW() << "Unsupported precision"; } } @@ -847,7 +847,7 @@ void ref_RegionYolo(const InferenceEngine::Blob::Ptr src, } break; default: - THROW_IE_EXCEPTION << "Unsupported layout: " << src->getTensorDesc().getLayout(); + IE_THROW() << "Unsupported layout: " << src->getTensorDesc().getLayout(); } ie_memcpy(dstData, dst->byteSize() * sizeof(uint16_t), ref_data.data(), src->size() * sizeof(uint16_t)); @@ -1277,7 +1277,7 @@ namespace topk_impl { return compareValuesMax; if (modeString == "min") return compareValuesMin; - THROW_IE_EXCEPTION << "Reference TopK can take only 'max' or 'min' for mode, but actually it has: " << modeString; + IE_THROW() << "Reference TopK can take only 'max' or 'min' for mode, but actually it has: " << modeString; } bool isIndicesSort(const std::string& sortString) { @@ -1287,7 +1287,7 @@ namespace topk_impl { return false; if (sortString == "index") return true; - THROW_IE_EXCEPTION << "Reference TopK can take only 'value', 'index' or 'none' for sort, but actually it has: " << sortString; + IE_THROW() << "Reference TopK can take only 'value', 'index' or 'none' for sort, but actually it has: " << sortString; } template @@ -2558,7 +2558,7 @@ void ref_convert(const InferenceEngine::Blob::Ptr &src, } else if (srcPrecision == Precision::I32 && dstPrecision == Precision::U8) { dst->buffer().as()[i] = static_cast(src->cbuffer().as()[i]); } else { - THROW_IE_EXCEPTION << "Unsupported input or output precision"; + IE_THROW() << "Unsupported input or output precision"; } } } diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.hpp index 6c8a746f142cb2..33c1976cd4ab06 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_reference_functions.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.cpp index 5cbccf6cd1cacc..0cca587573c6f3 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.hpp index c789f45e103164..9ec8f77bd947eb 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/myriad_layers_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.cpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.cpp index 1e0529bcac7295..fbe82f734b047a 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.hpp index a4e6366e9f6866..85bb4655bacd6b 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_ir_dumper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.cpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.cpp index 10a43a94c09a0a..d90eafce1149ac 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.hpp index 95d4150ca2301e..e1483508128124 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layer_tests_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.cpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.cpp index fa79676e34af6c..de10a27081ff64 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.hpp index 869b2b3b38b7a3..e69e84c286be4f 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_layers_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_common_definitions.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_common_definitions.hpp index c0a9fbdcb0baf5..36770f03d341b7 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_common_definitions.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_common_definitions.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.cpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.cpp index a6b58f908b1136..40de2024446306 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.cpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,7 +19,7 @@ std::vector GetParamAsDoubles(const std::string& vals) { try { result.push_back(std::stod(str)); } catch (...) { - THROW_IE_EXCEPTION << "Cannot parse parameter " << str + IE_THROW() << "Cannot parse parameter " << str << ". Value " << vals << " cannot be casted to double."; } } @@ -53,7 +53,7 @@ std::vector PackData(const std::vector& values, const Inference if (precision == InferenceEngine::Precision::FP16) return PackData(values); - THROW_IE_EXCEPTION << "unsupported pack format '" << precision << "'"; + IE_THROW() << "unsupported pack format '" << precision << "'"; } InferenceEngine::Layout getLayout(const IN_OUT_desc& inDim) { diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.hpp index abe29d9db9400f..f75970b5d64679 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_test_net.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_tests_config.hpp b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_tests_config.hpp index a983cda47a6522..ab402644b3f3e0 100644 --- a/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_tests_config.hpp +++ b/inference-engine/tests_deprecated/functional/vpu/vpu_base/vpu_tests_config.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/CMakeLists.txt b/inference-engine/tests_deprecated/helpers/CMakeLists.txt index 140c2d1a586a65..5b9c2258d3aa16 100644 --- a/inference-engine/tests_deprecated/helpers/CMakeLists.txt +++ b/inference-engine/tests_deprecated/helpers/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -29,7 +29,7 @@ function(add_helpers target_name) # TODO: eliminate dependency on samples target_include_directories(${target_name} PUBLIC - "${IE_MAIN_SOURCE_DIR}/samples/common/os/windows") + "${IE_MAIN_SOURCE_DIR}/samples/common/utils/include/samples/os/windows") set_property(TARGET ${target_name} PROPERTY COMPILE_PDB_NAME ${target_name}) diff --git a/inference-engine/tests_deprecated/helpers/ir_gen_helper.cpp b/inference-engine/tests_deprecated/helpers/ir_gen_helper.cpp index 1982fc251b9550..e883b516e56dc6 100644 --- a/inference-engine/tests_deprecated/helpers/ir_gen_helper.cpp +++ b/inference-engine/tests_deprecated/helpers/ir_gen_helper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/ir_gen_helper.hpp b/inference-engine/tests_deprecated/helpers/ir_gen_helper.hpp index bd2df4b31cd397..e81aa5febdd8d9 100644 --- a/inference-engine/tests_deprecated/helpers/ir_gen_helper.hpp +++ b/inference-engine/tests_deprecated/helpers/ir_gen_helper.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/single_layer_common.cpp b/inference-engine/tests_deprecated/helpers/single_layer_common.cpp index a34e0ccf870e51..6da65807f1d18e 100644 --- a/inference-engine/tests_deprecated/helpers/single_layer_common.cpp +++ b/inference-engine/tests_deprecated/helpers/single_layer_common.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -55,7 +55,7 @@ void GenRandomDataCommon(Blob::Ptr blob) { tempSum +=val; } } else { - THROW_IE_EXCEPTION << blob->getTensorDesc().getPrecision() << " is not supported by GenRandomDataCommon"; + IE_THROW() << blob->getTensorDesc().getPrecision() << " is not supported by GenRandomDataCommon"; } } @@ -71,7 +71,7 @@ BufferWrapper::BufferWrapper(const Blob::Ptr& blob, Precision _precision) : prec } else if (precision == Precision::U8) { u8_ptr = blob->buffer().as(); } else { - THROW_IE_EXCEPTION << "Unsupported precision for compare: " << precision; + IE_THROW() << "Unsupported precision for compare: " << precision; } } diff --git a/inference-engine/tests_deprecated/helpers/single_layer_common.hpp b/inference-engine/tests_deprecated/helpers/single_layer_common.hpp index 8508280ce6579a..67e9cdab0180fd 100644 --- a/inference-engine/tests_deprecated/helpers/single_layer_common.hpp +++ b/inference-engine/tests_deprecated/helpers/single_layer_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/test_model_path.cpp b/inference-engine/tests_deprecated/helpers/test_model_path.cpp index 30e5698e58f0db..0d85343dab1e96 100644 --- a/inference-engine/tests_deprecated/helpers/test_model_path.cpp +++ b/inference-engine/tests_deprecated/helpers/test_model_path.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/test_model_path.hpp b/inference-engine/tests_deprecated/helpers/test_model_path.hpp index f54b148122bf8e..c163fdba78c883 100644 --- a/inference-engine/tests_deprecated/helpers/test_model_path.hpp +++ b/inference-engine/tests_deprecated/helpers/test_model_path.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/test_model_repo.hpp b/inference-engine/tests_deprecated/helpers/test_model_repo.hpp index 154307c967bd43..c1721ee7781c74 100644 --- a/inference-engine/tests_deprecated/helpers/test_model_repo.hpp +++ b/inference-engine/tests_deprecated/helpers/test_model_repo.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/tests_common.cpp b/inference-engine/tests_deprecated/helpers/tests_common.cpp index 6b9bc92ef9439f..c38ca67d1858ca 100644 --- a/inference-engine/tests_deprecated/helpers/tests_common.cpp +++ b/inference-engine/tests_deprecated/helpers/tests_common.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -86,7 +86,7 @@ template void copyFromRGB8(uint8_t* RGB8, size_t RGB8_size, InferenceEngine::TBlob* blob) { InferenceEngine::SizeVector dims = blob->getTensorDesc().getDims(); if (4 != dims.size()) - THROW_IE_EXCEPTION << "Cannot write data to input blob! Blob has incorrect dimensions size " << dims.size(); + IE_THROW() << "Cannot write data to input blob! Blob has incorrect dimensions size " << dims.size(); size_t num_channels = dims[1]; // because RGB size_t num_images = dims[0]; size_t w = dims[3]; @@ -94,7 +94,7 @@ void copyFromRGB8(uint8_t* RGB8, size_t RGB8_size, InferenceEngine::TBlob dataArray; diff --git a/inference-engine/tests_deprecated/helpers/tests_common.hpp b/inference-engine/tests_deprecated/helpers/tests_common.hpp index 7dcb53c8892d1f..1671339ffa3e7b 100644 --- a/inference-engine/tests_deprecated/helpers/tests_common.hpp +++ b/inference-engine/tests_deprecated/helpers/tests_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/tests_common_func.cpp b/inference-engine/tests_deprecated/helpers/tests_common_func.cpp index 92778836245b09..5738cf75521863 100644 --- a/inference-engine/tests_deprecated/helpers/tests_common_func.cpp +++ b/inference-engine/tests_deprecated/helpers/tests_common_func.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/tests_common_func.hpp b/inference-engine/tests_deprecated/helpers/tests_common_func.hpp index 3eb43f3611bce6..a66eaae9c7bdd8 100644 --- a/inference-engine/tests_deprecated/helpers/tests_common_func.hpp +++ b/inference-engine/tests_deprecated/helpers/tests_common_func.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -42,11 +42,11 @@ class TestsCommonFunc { if (!type.empty()) { const CNNLayerPtr layer = getLayer(network, layerName); if (layer == nullptr) { - THROW_IE_EXCEPTION << "layer was not found " << layerName; + IE_THROW() << "layer was not found " << layerName; } if (layer->type != type) { - THROW_IE_EXCEPTION << "layer '" << layer->name << "' type '" << layer->type << "' is not correct, expected " << type; + IE_THROW() << "layer '" << layer->name << "' type '" << layer->type << "' is not correct, expected " << type; } } checkLayerOuputPrecision(network, layerName, expectedPrecision); @@ -56,7 +56,7 @@ class TestsCommonFunc { static void checkLayerOuputPrecision(const CNNNetwork& network, const std::string& layerName, Precision expectedPrecision) { CNNLayerPtr layer = getLayer(network, layerName); if (layer == nullptr) { - THROW_IE_EXCEPTION << "layer '" << layerName << "' was not found"; + IE_THROW() << "layer '" << layerName << "' was not found"; } for (DataPtr data : layer->outData) { ASSERT_EQ(expectedPrecision, data->getPrecision()) << " unexpected precision " << data->getPrecision() << " for layer " << layerName; @@ -66,7 +66,7 @@ class TestsCommonFunc { static void checkLayerOuputPrecision(const CNNNetwork& network, const std::string& layerName, std::vector expectedPrecisions) { CNNLayerPtr layer = getLayer(network, layerName); if (layer == nullptr) { - THROW_IE_EXCEPTION << "layer '" << layerName << "' was not found"; + IE_THROW() << "layer '" << layerName << "' was not found"; } for (DataPtr data : layer->outData) { ASSERT_TRUE(std::any_of( diff --git a/inference-engine/tests_deprecated/helpers/tests_file_utils.cpp b/inference-engine/tests_deprecated/helpers/tests_file_utils.cpp index e568bcfb6bdf0a..ca459290a7635b 100644 --- a/inference-engine/tests_deprecated/helpers/tests_file_utils.cpp +++ b/inference-engine/tests_deprecated/helpers/tests_file_utils.cpp @@ -1,9 +1,8 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include -#include "details/ie_exception.hpp" #include #include @@ -28,10 +27,10 @@ using namespace std; void FileUtils::readAllFile(const std::string &file_name, void *buffer, size_t maxSize) { std::ifstream inputFile; inputFile.open(file_name, std::ios::binary | std::ios::in); - if (!inputFile.is_open()) THROW_IE_EXCEPTION << "cannot open file " << file_name; + if (!inputFile.is_open()) IE_THROW() << "cannot open file " << file_name; if (!inputFile.read(static_cast (buffer), maxSize)) { inputFile.close(); - THROW_IE_EXCEPTION << "cannot read " << maxSize << " bytes from file " << file_name; + IE_THROW() << "cannot read " << maxSize << " bytes from file " << file_name; } inputFile.close(); diff --git a/inference-engine/tests_deprecated/helpers/tests_file_utils.hpp b/inference-engine/tests_deprecated/helpers/tests_file_utils.hpp index bd29535abc869b..935370ca7af5ed 100644 --- a/inference-engine/tests_deprecated/helpers/tests_file_utils.hpp +++ b/inference-engine/tests_deprecated/helpers/tests_file_utils.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/tests_vpu_common.hpp b/inference-engine/tests_deprecated/helpers/tests_vpu_common.hpp index 8ccf7435b00075..12417a62a0027b 100644 --- a/inference-engine/tests_deprecated/helpers/tests_vpu_common.hpp +++ b/inference-engine/tests_deprecated/helpers/tests_vpu_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/helpers/version_printer.cpp b/inference-engine/tests_deprecated/helpers/version_printer.cpp index a00742405140a7..47697b8715b6c5 100644 --- a/inference-engine/tests_deprecated/helpers/version_printer.cpp +++ b/inference-engine/tests_deprecated/helpers/version_printer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/CMakeLists.txt b/inference-engine/tests_deprecated/unit/CMakeLists.txt index 7949b0c7578b1d..9746f06602ff2f 100644 --- a/inference-engine/tests_deprecated/unit/CMakeLists.txt +++ b/inference-engine/tests_deprecated/unit/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -137,7 +137,9 @@ target_link_libraries(${TARGET_NAME} PRIVATE # dynamic libraries inference_engine_transformations - inference_engine_lp_transformations) + inference_engine_lp_transformations + inference_engine_snippets + ) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold") diff --git a/inference-engine/tests_deprecated/unit/engines/gna/I8_quantisation_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/I8_quantisation_test.cpp index 03703944c29667..994eaa32b0e2ea 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/I8_quantisation_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/I8_quantisation_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/configuration_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/configuration_test.cpp index 5ffc8399c4f505..7f24b1e9bfe251 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/configuration_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/configuration_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/fp32_non_quantized_tests.cpp b/inference-engine/tests_deprecated/unit/engines/gna/fp32_non_quantized_tests.cpp index 0adda12e535fa2..e321c50a77c9f7 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/fp32_non_quantized_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/fp32_non_quantized_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -343,7 +343,7 @@ TEST_F(FP32NonQuantizedTest, InputSplitConcatReshapeUnalignedPropagateForward) { TEST_F(FP32NonQuantizedTest, LSTMCellPropagateForward) { std::vector input_data(96, 0.10f); - std::vector expected_result(32, 0.27119124f); + std::vector expected_result(32, 0.14366889f); assert_that().onInferModel(LSTMCellOnlyModel()).withWeigthsPattern({0.1f}) .inNotCompactMode().gna().propagate_forward().onCPU() diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_aminteldnn_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_aminteldnn_test.cpp index 4cf9cb40b877cd..d87709033db298 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_aminteldnn_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_aminteldnn_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,16 +32,16 @@ TEST_F(GNA_AmIntelDnn_test, intel_nnet_type_tSecondInitNotAllowed) { // First init is ok ASSERT_NO_THROW(amIntelDnn.InitGNAStruct(&desc)); // Second init would cause memory leak, so it's prohibited - ASSERT_THROW(amIntelDnn.InitGNAStruct(&desc), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(amIntelDnn.InitGNAStruct(&desc), InferenceEngine::Exception); amIntelDnn.DestroyGNAStruct(&desc); } TEST_F(GNA_AmIntelDnn_test, intel_nnet_type_t_ptrIsNullptr) { - ASSERT_THROW(amIntelDnn.InitGNAStruct(nullptr), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(amIntelDnn.InitGNAStruct(nullptr), InferenceEngine::Exception); } TEST_F(GNA_AmIntelDnn_test, intel_nnet_type_t_pLayersIsNotNullptr) { - ASSERT_THROW(amIntelDnn.InitGNAStruct(&desc), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(amIntelDnn.InitGNAStruct(&desc), InferenceEngine::Exception); } TEST_F(GNA_AmIntelDnn_test, ComponentIsEmpty) { @@ -50,5 +50,5 @@ TEST_F(GNA_AmIntelDnn_test, ComponentIsEmpty) { #else desc.pLayers = nullptr; #endif - ASSERT_THROW(amIntelDnn.InitGNAStruct(&desc), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(amIntelDnn.InitGNAStruct(&desc), InferenceEngine::Exception); } diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_api_stub.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_api_stub.cpp index 971d2c0a4e517e..fd70db84eb55ab 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_api_stub.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_api_stub.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_cppwraper_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_cppwraper_test.cpp index ebd306e69e237f..96abce2c605e5a 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_cppwraper_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_cppwraper_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -13,9 +13,9 @@ class GNA_CPPWrapper_test : public ::testing::Test {}; TEST_F(GNA_CPPWrapper_test, CPPWrapperConstructorCannotWorkWithInputEqualToZero) { #if GNA_LIB_VER == 2 - ASSERT_THROW(GNAPluginNS::CPPWrapper(0), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(GNAPluginNS::CPPWrapper(0), InferenceEngine::Exception); #else - ASSERT_THROW(GNAPluginNS::CPPWrapper(0), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(GNAPluginNS::CPPWrapper(0), InferenceEngine::Exception); #endif } diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_graph_aot_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_graph_aot_test.cpp index efb1464896f4d7..74fbe74043ffc3 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_graph_aot_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_graph_aot_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_hardware_precision_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_hardware_precision_test.cpp index b57c9317f6d807..baf11cafd379c6 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_hardware_precision_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_hardware_precision_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_input_precision_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_input_precision_test.cpp index f0b6f3d0b374aa..34baad4349b68d 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_input_precision_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_input_precision_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.cpp index 3e0b509576e6e0..38f0a877ba9e05 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -63,9 +63,6 @@ class NullAllocator : public IAllocator { bool free(void* handle) noexcept override { return true; } - void Release() noexcept override { - delete this; - } }; #if GNA_LIB_VER == 2 void expect_enqueue_calls(GNACppApi &mockApi, bool enableHardwareConsistency = true){ @@ -169,7 +166,7 @@ void GNAPropagateMatcher :: match() { if (layer->name == pattern.first) { auto weightableLayer = dynamic_pointer_cast(layer); if (!weightableLayer) { - THROW_IE_EXCEPTION << "given layer: " << layer->name <<" doesnt have weights"; + IE_THROW() << "given layer: " << layer->name <<" doesnt have weights"; } fillWeights(weightableLayer->_weights, pattern.second); break; diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.hpp index bf9d460705fc02..cbff4680a99b28 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_memory_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_memory_test.cpp index de09859e0e7ff0..6dfa38fc27d99e 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_memory_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_memory_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_mock_api.hpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_mock_api.hpp index da2036aa20bbd5..15825f7c22cd69 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_mock_api.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_mock_api.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_proc_type_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_proc_type_test.cpp index e2425aeb740eba..8eed7282212857 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_proc_type_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_proc_type_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_pwl_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_pwl_test.cpp index 52c1b3aca4a2ad..9cf69fc7c02a32 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_pwl_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_pwl_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/gna_query_state_tests.cpp b/inference-engine/tests_deprecated/unit/engines/gna/gna_query_state_tests.cpp index 3b127c1a948555..7ead4aa815336d 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/gna_query_state_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/gna_query_state_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/i16_quantisation_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/i16_quantisation_test.cpp index c48f40bf900a7d..36c201d60f9eae 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/i16_quantisation_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/i16_quantisation_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/activation_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/activation_test.cpp index d1dd4174f210b9..34b3c20761eff2 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/activation_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/activation_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_align_filter2_tests.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_align_filter2_tests.cpp index e12fecdb11a232..71db4e90376bb8 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_align_filter2_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_align_filter2_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_conv1d_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_conv1d_test.cpp index cdef1f19e60b30..310cf46d0f165e 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_conv1d_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_conv1d_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_eltwise_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_eltwise_test.cpp index d652768896524c..28c26e21af1924 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_eltwise_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_eltwise_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_multi_input_to_concat_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_multi_input_to_concat_test.cpp index 2eea1117a350d0..068b0f681e91b9 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_multi_input_to_concat_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_multi_input_to_concat_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_permute_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_permute_test.cpp index 8a560bada07066..3c0c7ffe33e386 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_permute_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_permute_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_split_to_concat_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_split_to_concat_test.cpp index 97523ef733ced9..9ac1011ca6cb54 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_split_to_concat_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_split_to_concat_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_squeeze_test.cpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_squeeze_test.cpp index fad0c91bdde86b..ee3b84c8c83d84 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_squeeze_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/gna_squeeze_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,16 +19,6 @@ typedef struct { using SqueezeTestParam = std::tuple; -template -inline std::ostream& operator<<(std::ostream& out, const std::vector& vec) { - if (vec.empty()) return std::operator<<(out, "[]"); - out << "[" << vec[0]; - for (unsigned i = 1; i < vec.size(); i++) { - out << " " << vec[i]; - } - return out << "]"; -} - class GNASqueezeTest_ : public GNATest<>, public testing::WithParamInterface { public: diff --git a/inference-engine/tests_deprecated/unit/engines/gna/layers/permute_irs.hpp b/inference-engine/tests_deprecated/unit/engines/gna/layers/permute_irs.hpp index d99d24db9f92ff..b58631aa048b27 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/layers/permute_irs.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/layers/permute_irs.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/conv_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/conv_matcher.hpp index bc83c4100b0e06..cd9fa584de96fa 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/conv_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/conv_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/copy_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/copy_matcher.hpp index 2bc6c05653db83..c3118639c1a6a9 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/copy_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/copy_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/diag_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/diag_matcher.hpp index f2e1bfb51b1697..42a42b5feb876c 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/diag_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/diag_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/fill_with_data.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/fill_with_data.hpp index 091b8661ab81e3..0048709874fc3e 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/fill_with_data.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/fill_with_data.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/input_data_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/input_data_matcher.hpp index 1e57f196f56653..44c69084b35944 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/input_data_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/input_data_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/nnet_base_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/nnet_base_matcher.hpp index c500bb9c2f61a4..b2c4b1d39fb46f 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/nnet_base_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/nnet_base_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/pool_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/pool_matcher.hpp index 701ecd7341ee69..c23db9c4aa12dc 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/pool_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/pool_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/precision_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/precision_matcher.hpp index 7376b32e140dd1..dab23d43100119 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/precision_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/precision_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_matcher.hpp index 38de0294a522bd..e311691c8fbda2 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_quantization_metrics_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_quantization_metrics_matcher.hpp index d11725f2685e8b..d3b9ceda409d9d 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_quantization_metrics_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/pwl_quantization_metrics_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/matchers/weights_matcher.hpp b/inference-engine/tests_deprecated/unit/engines/gna/matchers/weights_matcher.hpp index 9bdb8e2352d10d..73b896cd42850c 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/matchers/weights_matcher.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/matchers/weights_matcher.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/test_irs.cpp b/inference-engine/tests_deprecated/unit/engines/gna/test_irs.cpp index a697566e280e52..bd41ec0118b4c6 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/test_irs.cpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/test_irs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/gna/test_irs.hpp b/inference-engine/tests_deprecated/unit/engines/gna/test_irs.hpp index 5fa45620cd1a16..929cc644fc4198 100644 --- a/inference-engine/tests_deprecated/unit/engines/gna/test_irs.hpp +++ b/inference-engine/tests_deprecated/unit/engines/gna/test_irs.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/constant_propagation_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/constant_propagation_test.cpp index a3586d7104c45b..dfe0789481bef0 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/constant_propagation_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/constant_propagation_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -91,9 +91,6 @@ class FakeConstExtensionFabric : public InferenceEngine::Extensions::Cpu::MKLDNN void GetVersion(const InferenceEngine::Version *&versionInfo) const noexcept override {} void Unload() noexcept override {} - void Release() noexcept override { - delete this; - } InferenceEngine::StatusCode getPrimitiveTypes(char**& types, unsigned int& size, InferenceEngine::ResponseDesc* resp) noexcept override { types = new char *[factories.size()]; size_t count = 0; diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/convert_desc_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/convert_desc_test.cpp index 9a381c03930107..89da83f8cf2171 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/convert_desc_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/convert_desc_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/dump_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/dump_test.cpp index b2d30642af0e8a..9373b61a7c2357 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/dump_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/dump_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -19,7 +19,7 @@ TEST(MKLDNNDumpTests, UnallocatedBlob_NoDump) { EXPECT_THROW({ BlobDumper(blob).dump(buff); - }, details::InferenceEngineException); + }, Exception); } TEST(MKLDNNDumpTests, EmptyBlob_NoDump) { @@ -30,7 +30,7 @@ TEST(MKLDNNDumpTests, EmptyBlob_NoDump) { EXPECT_THROW({ BlobDumper(blob).dump(buff); - }, details::InferenceEngineException); + }, Exception); } TEST(MKLDNNDumpTests, Ser) { diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/dumper_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/dumper_test.cpp index 9c753d7a12cc55..3c95375c969bf7 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/dumper_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/dumper_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/broadcast_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/broadcast_tests.cpp index f4c20b088ef9ab..8f5377589994ab 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/broadcast_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/broadcast_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -248,7 +248,7 @@ class MKLDNNCPUExtBroadcastTests : public TestsCommon, public WithParamInterface return; } } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/bucketize_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/bucketize_tests.cpp index 3f0a9a9f6c8813..f8b03c9fef643f 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/bucketize_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/bucketize_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -159,7 +159,7 @@ class MKLDNNCPUExtBucketizeTests : public TestsCommon, public WithParamInterface auto iter = out.begin(); compare_int(*output_blob_map[iter->first], *output_blob_ref, 0); } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fake_layer.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fake_layer.cpp index 799cec8ccce7f0..e59bbb0dbfacef 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fake_layer.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fake_layer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -21,10 +21,6 @@ class FakeExtensions : public Cpu::MKLDNNExtensions { public: void Unload() noexcept override {}; - void Release() noexcept override { - delete this; - }; - static std::shared_ptr GetExtensionsHolder() { static std::shared_ptr localHolder; if (localHolder == nullptr) { @@ -80,7 +76,7 @@ class FakeLayerPLNImpl: public Cpu::ExtLayerBase { explicit FakeLayerPLNImpl(const CNNLayer* layer) { try { addConfig(layer, {{ConfLayout::PLN, false, 0}}, {{ConfLayout::PLN, false, 0}}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -101,7 +97,7 @@ class FakeLayerBLKImpl: public Cpu::ExtLayerBase { auto blk_layout = ConfLayout::BLK8; #endif addConfig(layer, {{blk_layout, false, 0}}, {{blk_layout, false, 0}}); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fill_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fill_tests.cpp index 944f724251ca12..b3b44fb37ca5ba 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fill_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/fill_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -172,7 +172,7 @@ class MKLDNNCPUExtFillTests : public TestsCommon, public WithParamInterfacebyteSize()) != 0) FAIL() << "Wrong result with compare TF reference!"; - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -668,7 +668,7 @@ class MKLDNNCPUExtGatherHolesTests : public TestsCommon, public WithParamInterfa if (memcmp(&((float*)(*output).data())[12], &p.ref[8], 8 * sizeof(float)) != 0) FAIL() << "Wrong result with compare TF reference!"; } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/graph_generic_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/graph_generic_test.cpp index 337abdf7440143..a46bb4f2d5a702 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/graph_generic_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/graph_generic_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -432,9 +432,6 @@ class FakeExtensionFabric : public InferenceEngine::Extensions::Cpu::MKLDNNExten void GetVersion(const InferenceEngine::Version *&versionInfo) const noexcept override {} void Unload() noexcept override {} - void Release() noexcept override { - delete this; - } InferenceEngine::StatusCode getPrimitiveTypes(char**& types, unsigned int& size, InferenceEngine::ResponseDesc* resp) noexcept override { types = new char *[factories.size()]; size_t count = 0; @@ -568,7 +565,7 @@ TEST_F(MKLDNNGraphGenericTests, DontCreateGPUGenericPrimitive) { ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); MKLDNNGraphTestClass graph; - ASSERT_THROW(graph.CreateGraph(network, extMgr), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(graph.CreateGraph(network, extMgr), InferenceEngine::Exception); } TEST_F(MKLDNNGraphGenericTests, ExecuteConstGenericPrimitive) { diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/log_softmax_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/log_softmax_tests.cpp index 4a103227b7a905..bd9978dcc72b6c 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/log_softmax_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/log_softmax_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -246,7 +246,7 @@ class MKLDNNCPUExtLogSoftmaxTests : public TestsCommon, public WithParamInterfac // Infer graph.Infer(srcs, outputBlobs); compare(*output, dst_ref, 0.00001f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/math_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/math_tests.cpp index 6e7eb38e02e6ae..573ed839dc93d1 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/math_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/math_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -275,7 +275,7 @@ class MKLDNNCPUExtMathTests: public TestsCommon, public WithParamInterfaceGetParamAsBool("is_blocked"); addConfig(layer); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -403,7 +403,7 @@ class FakeLayerImpl_MVN: public Cpu::ExtLayerBase, return 0; return (a + b - 1) / b; }; - if (!data) THROW_IE_EXCEPTION << "Cannot get input data!"; + if (!data) IE_THROW() << "Cannot get input data!"; DataConfig dataConfig; dataConfig.inPlace = 0; @@ -601,7 +601,7 @@ class MKLDNNCPUExtMVNTests_Blocked: public TestsCommon, public WithParamInterfac dst_ref.allocate(); ref_mvn(*srcPtr, dst_ref, p); compare(*output, dst_ref, 0.0001f); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/non_max_suppression_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/non_max_suppression_tests.cpp index 063033cca71832..1b7972eff63ca0 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/non_max_suppression_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/non_max_suppression_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -511,7 +511,7 @@ class MKLDNNCPUExtNonMaxSuppressionTFTests : public TestsCommon, public WithPara if (memcmp((*output).data(), &p.ref[0], output->byteSize()) != 0) FAIL() << "Wrong result with compare TF reference!"; } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/normalize_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/normalize_tests.cpp index a5471f0ccf2183..8ad5d5bbd89070 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/normalize_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/normalize_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -283,7 +283,7 @@ class MKLDNNCPUExtNormalizeTests: public TestsCommon, public WithParamInterface< ref_normalize(*srcPtr, dst_ref, p, weights->readOnly().as()); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -338,7 +338,7 @@ class FakeLayerImpl_Normalize: public Cpu::ExtLayerBase, try { is_blocked = layer->GetParamAsBool("is_blocked"); addConfig(layer); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -355,7 +355,7 @@ class FakeLayerImpl_Normalize: public Cpu::ExtLayerBase, return 0; return (a + b - 1) / b; }; - if (!data) THROW_IE_EXCEPTION << "Cannot get input data!"; + if (!data) IE_THROW() << "Cannot get input data!"; DataConfig dataConfig; dataConfig.inPlace = 0; @@ -571,7 +571,7 @@ class MKLDNNCPUExtNormalizeTests_Blocked: public TestsCommon, public WithParamIn ref_normalize(*srcPtr, dst_ref, p, weights->readOnly().as()); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/onehot_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/onehot_tests.cpp index 6d63eddf234db6..aec442364a7ea4 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/onehot_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/onehot_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,9 +32,9 @@ class OneHotOnly1dTest: public TestsCommon, public WithParamInterface { std::string model_t = R"V0G0N( - + - + 1 @@ -108,7 +108,7 @@ class OneHotOnly1dTest: public TestsCommon, InferenceEngine::CNNNetwork network; try { network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr()); - } catch (InferenceEngine::details::InferenceEngineException &e) { + } catch (InferenceEngine::Exception &e) { FAIL() << e.what(); } catch (std::exception &e) { FAIL() << e.what(); @@ -148,7 +148,7 @@ class OneHotOnly1dTest: public TestsCommon, // Infer graph.Infer(srcs, outputBlobs); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -160,9 +160,9 @@ class OneHotOnly2dTest: public TestsCommon, public WithParamInterface { std::string model_t = R"V0G0N( - + - + _IW_ @@ -247,7 +247,7 @@ class OneHotOnly2dTest: public TestsCommon, InferenceEngine::CNNNetwork network; try { network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr()); - } catch (InferenceEngine::details::InferenceEngineException &e) { + } catch (InferenceEngine::Exception &e) { FAIL() << e.what(); } catch (std::exception &e) { FAIL() << e.what(); @@ -292,7 +292,7 @@ class OneHotOnly2dTest: public TestsCommon, // Infer graph.Infer(srcs, outputBlobs); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -303,9 +303,9 @@ class OneHotOnly3dTest: public TestsCommon, public WithParamInterface { std::string model_t = R"V0G0N( - + - + _IH_ @@ -399,7 +399,7 @@ class OneHotOnly3dTest: public TestsCommon, InferenceEngine::CNNNetwork network; try { network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr()); - } catch (InferenceEngine::details::InferenceEngineException &e) { + } catch (InferenceEngine::Exception &e) { FAIL() << e.what(); } catch (std::exception &e) { FAIL() << e.what(); @@ -444,7 +444,7 @@ class OneHotOnly3dTest: public TestsCommon, // Infer graph.Infer(srcs, outputBlobs); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -454,9 +454,9 @@ class OneHotOnly4dTest: public TestsCommon, public WithParamInterface { std::string model_t = R"V0G0N( - + - + _IC_ @@ -557,7 +557,7 @@ void ref_one_hot_4d(InferenceEngine::Blob &src, InferenceEngine::Blob &dst, one_ InferenceEngine::CNNNetwork network; try { network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr()); - } catch (InferenceEngine::details::InferenceEngineException &e) { + } catch (InferenceEngine::Exception &e) { FAIL() << e.what(); } catch (std::exception &e) { FAIL() << e.what(); @@ -604,7 +604,7 @@ void ref_one_hot_4d(InferenceEngine::Blob &src, InferenceEngine::Blob &dst, one_ // Infer graph.Infer(srcs, outputBlobs); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -615,9 +615,9 @@ class OneHotOnly5dTest: public TestsCommon, public WithParamInterface { std::string model_t = R"V0G0N( - + - + _IN_ @@ -729,7 +729,7 @@ void ref_one_hot_5d(InferenceEngine::Blob &src, InferenceEngine::Blob &dst, one_ InferenceEngine::CNNNetwork network; try { network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr()); - } catch (InferenceEngine::details::InferenceEngineException &e) { + } catch (InferenceEngine::Exception &e) { FAIL() << e.what(); } catch (std::exception &e) { FAIL() << e.what(); @@ -777,7 +777,7 @@ void ref_one_hot_5d(InferenceEngine::Blob &src, InferenceEngine::Blob &dst, one_ // Infer graph.Infer(srcs, outputBlobs); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/range_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/range_tests.cpp index 8faef838f06ef3..f4d5c8a5de6ad4 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/range_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/range_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -224,7 +224,7 @@ class MKLDNNCPUExtRangeTests : public TestsCommon, public WithParamInterfacebyteSize()) != 0) FAIL() << "Wrong result with compare TF reference!"; - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/select_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/select_tests.cpp index 16638f05d45987..8e5b2fcbe8561c 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/select_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/select_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -257,7 +257,7 @@ class MKLDNNCPUExtSelectTests : public TestsCommon, public WithParamInterfacefirst], *output_ref, 0.0f); } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_to_dense_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_to_dense_tests.cpp index 755d28d33f3de4..be143c740e524e 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_to_dense_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_to_dense_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -175,7 +175,7 @@ class MKLDNNCPUExtSparseToDenseTests : public TestsCommon, public WithParamInter auto iter = out.begin(); compare_int(*output_blob_map[iter->first], *output_blob_ref, 0); } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_weighted_reduce_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_weighted_reduce_tests.cpp index 9516b9d6200559..0917fd9c0d0510 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_weighted_reduce_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/sparse_weighted_reduce_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -202,7 +202,7 @@ class MKLDNNCPUExtExperimentalSparseWeightedReduceTests : public TestsCommon, pu auto iter = out.begin(); compare(*output_blob_map[iter->first], *output_blob_ref, 0.0f); } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/strided_slice_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/strided_slice_tests.cpp index db7ec4b974141e..ca8f1fc24e4acc 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/strided_slice_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/strided_slice_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -409,7 +409,7 @@ class MKLDNNCPUExtStridedSliceTests : public TestsCommon, public WithParamInterf // Infer graph.Infer(srcs, outputBlobs); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/topk_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/topk_tests.cpp index 2e89f20de760e9..a72aa4ced8ad28 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/topk_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/extensions/topk_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -293,7 +293,7 @@ class MKLDNNCPUExtTopKTests : public TestsCommon, public WithParamInterfacefirst], *output_counts_blob_ref, 0.0f); } } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_activation_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_activation_test.cpp index c4587a736be52b..a2f9f7b8d8cab0 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_activation_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_activation_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -270,7 +270,7 @@ class MKLDNNGraphActivationTests: public TestsCommon, ref_activation(*srcPtr, dst_ref, p); compare(*output, dst_ref, 0.0005f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -327,9 +327,9 @@ class MKLDNNGraphDynBatchActivationTests: public MKLDNNGraphActivationTests { InferenceEngine::Core core; InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -378,7 +378,7 @@ class MKLDNNGraphDynBatchActivationTests: public MKLDNNGraphActivationTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkActivation); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkActivation); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_scaleshift_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_scaleshift_test.cpp index 18c75ae99087e1..c36beb6e6eb4c8 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_scaleshift_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_scaleshift_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -237,7 +237,7 @@ class MKLDNNGraphBatchNormScaleShiftTests: public TestsCommon, ref_batchnorm4DWithScale(*srcPtr, (const float*) weights->buffer(), ((const float*) weights->buffer() + p.in.c), (const float*) weights->buffer() + p.in.c*2, dst_ref, p.epsilon); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -285,8 +285,8 @@ class MKLDNNGraphDynBatchBatchNormScaleShiftTests: public MKLDNNGraphBatchNormSc InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, weights_ptr)); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -326,7 +326,7 @@ class MKLDNNGraphDynBatchBatchNormScaleShiftTests: public MKLDNNGraphBatchNormSc graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkScaleShift); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkScaleShift); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_test.cpp index 57137a1e962f5f..279218e57ed933 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_batchnorm_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -209,7 +209,7 @@ class MKLDNNGraphBatchNormTests: public TestsCommon, ref_batchnorm4D(*srcPtr, (const float*) weights->buffer(), ((const float*) weights->buffer() + p.in.c), dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -254,9 +254,9 @@ class MKLDNNGraphDynBatchBatchNormTests: public MKLDNNGraphBatchNormTests { InferenceEngine::Core core; InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, weights_ptr)); - - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -294,7 +294,7 @@ class MKLDNNGraphDynBatchBatchNormTests: public MKLDNNGraphBatchNormTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkScaleShift); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkScaleShift); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_concat_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_concat_test.cpp index 10ca519e3a480b..5ff03d84f8678c 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_concat_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_concat_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -197,7 +197,7 @@ class MKLDNNGraphConcatTests: public TestsCommon, index2++; index++; } } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -321,8 +321,8 @@ class MKLDNNGraphDynBatchConcatTests: public TestsCommon, public WithParamInterf InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -379,7 +379,7 @@ class MKLDNNGraphDynBatchConcatTests: public TestsCommon, public WithParamInterf graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkConcat, checkType); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkConcat, checkType); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -529,7 +529,7 @@ class MKLDNNGraphTwoConcatTests: public TestsCommon, if (!FIND_STR(model, TL) || !FIND_STR(model, TP)) { if (!FIND_STR(model, "_FSL_") || !FIND_STR(model, "_FSP_") || !FIND_STR(model, "_FSLTL_") || !FIND_STR(model, "_FSLTP_")) { - THROW_IE_EXCEPTION << "Incorrect configuration!"; + IE_THROW() << "Incorrect configuration!"; } REPLACE_WITH_NUM(model, "_FSL_", f_l); REPLACE_WITH_NUM(model, "_FSP_", f_p); @@ -791,7 +791,7 @@ class MKLDNNGraphTwoConcatTests: public TestsCommon, } } } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -1021,7 +1021,7 @@ class MKLDNNGraphTwoInputInConcatTests: public TestsCommon { index2++; index++; } } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_conv_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_conv_test.cpp index e762fe114adcfd..199a92641db3b3 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_conv_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_conv_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -332,7 +332,7 @@ class MKLDNNGraphConvolutionTests: public TestsCommon, dst_ref.allocate(); ref_conv(*srcPtr, (const float *)weights->buffer(), weights->size() / sizeof(float), dst_ref, p); compare(*output, dst_ref, 0.0002f); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } @@ -433,8 +433,8 @@ class MKLDNNGraphDynBatchConvolutionTests: public MKLDNNGraphConvolutionTests { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, weights_ptr)); - auto implNet = dynamic_cast(&((ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); ResponseDesc resp; StatusCode sts = implNet->setBatchSizeReshape(dims[0], &resp); ASSERT_EQ((int)StatusCode::OK, sts) << resp.msg; @@ -481,7 +481,7 @@ class MKLDNNGraphDynBatchConvolutionTests: public MKLDNNGraphConvolutionTests { graph.checkDynBatch(srcs, outputBlobs, dims[0], dims[0], checkConvolution, MKLDNNGraphTestClass::CheckDynBatchType::Child); graph.checkDynBatch(srcs, outputBlobs, 1, dims[0], checkConvolution, MKLDNNGraphTestClass::CheckDynBatchType::Child); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_crop_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_crop_test.cpp index 60d6b1b02cde3c..6d3769e1932342 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_crop_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_crop_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -210,7 +210,7 @@ class MKLDNNGraphCropTests: public TestsCommon, ref_crop(*srcPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -294,7 +294,7 @@ class MKLDNNGraphDynBatchCropTests: public MKLDNNGraphCropTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkCrop); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkCrop); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_deconv_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_deconv_test.cpp index 035101b036b009..c95f0df5c3be64 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_deconv_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_deconv_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -343,7 +343,7 @@ class MKLDNNGraphDeconvolutionalTests: public TestsCommon, ref_deconv(*srcPtr, weights, bias, dst_ref, p); compare(*output, dst_ref, 0.0002f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -481,13 +481,13 @@ class MKLDNNGraphDynBatchDeconvolutionalTests: public MKLDNNGraphDeconvolutional memcpy(model_blob_ptr, blb->buffer().as(), blb->byteSize()); model_blob_ptr += blb->byteSize(); } - + InferenceEngine::Core core; InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, model_blob)); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -526,7 +526,7 @@ class MKLDNNGraphDynBatchDeconvolutionalTests: public MKLDNNGraphDeconvolutional graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkDeconvolution, MKLDNNGraphTestClass::CheckDynBatchType::Child); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkDeconvolution, MKLDNNGraphTestClass::CheckDynBatchType::Child); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_depthwise_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_depthwise_test.cpp index c76122c0e1663b..e00f6da874b5a8 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_depthwise_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_depthwise_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -252,7 +252,7 @@ class MKLDNNGraphDepthwiseTests: public TestsCommon, ref_depthwise(*srcPtr, weights->readOnly().as(), weights->size() / sizeof(float), dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -368,8 +368,8 @@ class MKLDNNGraphDynBatchDepthwiseTests: public MKLDNNGraphDepthwiseTests { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, weights_ptr)); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -417,7 +417,7 @@ class MKLDNNGraphDynBatchDepthwiseTests: public MKLDNNGraphDepthwiseTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkDepthwise); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkDepthwise); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_eltwise_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_eltwise_test.cpp index d96d4490e38eae..6eb2b52ea88808 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_eltwise_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_eltwise_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -361,7 +361,7 @@ class MKLDNNGraphEltwise2PrecisionsTests : public TestsCommon, actual_reorder_nodes ++; } ASSERT_EQ(actual_reorder_nodes, p.num_reorder_nodes); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_fullyconnected_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_fullyconnected_test.cpp index c7dc6f9e09266a..871e8f402d078e 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_fullyconnected_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_fullyconnected_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -221,7 +221,7 @@ class MKLDNNGraphFullyConnectedTests: public TestsCommon, ref_innerproduct(*srcPtr, (const float *)weights->buffer(), weights->size() / sizeof(float), dst_ref, p); compare(*output, dst_ref, 0.9f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -267,8 +267,8 @@ class MKLDNNGraphDynBatchFullyConnectedTests: public MKLDNNGraphFullyConnectedTe InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, weights_ptr)); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -317,7 +317,7 @@ class MKLDNNGraphDynBatchFullyConnectedTests: public MKLDNNGraphFullyConnectedTe graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkFC); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkFC); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_gemm_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_gemm_test.cpp index 1f7eb5edf5d697..7ec1753214df0a 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_gemm_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_gemm_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -283,7 +283,7 @@ class MKLDNNGraphGemmTests: public TestsCommon, ref_gemm(src_vec, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -396,9 +396,8 @@ class MKLDNNGraphDynBatchGemmTests: public MKLDNNGraphGemmTests { InferenceEngine::Core core; InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -460,7 +459,7 @@ class MKLDNNGraphDynBatchGemmTests: public MKLDNNGraphGemmTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, check); graph.checkDynBatch(srcs, outputBlobs, 1, MB, check); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -636,7 +635,7 @@ class MKLDNNGraphSingleBatchDimGemmTests: public TestsCommon, ref_gemm(src_vec, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_input_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_input_test.cpp index 277ea5fd288324..14df8044d0fc87 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_input_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_input_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -155,7 +155,7 @@ class MKLDNNGraphInputTests: public TestsCommon, ASSERT_EQ(p.selectedType, nodes[i]->getSelectedPrimitiveDescriptor()->getImplementationType()); } } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -349,7 +349,7 @@ class MKLDNNGraphConstInputTests: public TestsCommon { index2++; index++; } } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -454,7 +454,7 @@ class MKLDNNGraphInputLayoutTest : public TestsCommon, public WithParamInterface if (memcmp((*output).data(), &p.reference[0], output->byteSize()) != 0) FAIL() << "Wrong result with compare reference!"; } - catch (const InferenceEngine::details::InferenceEngineException &e) { + catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_leaks_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_leaks_test.cpp index 18a36d56e4c5a9..e75902ff09ffb7 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_leaks_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_leaks_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -16,13 +16,12 @@ using namespace mkldnn; class MKLDNNTestExecNetwork: public MKLDNNPlugin::MKLDNNExecNetwork { public: MKLDNNPlugin::MKLDNNGraph& getGraph() { - return *(_graphs.begin()->get()); + return _graphs.front(); } }; struct TestExecutableNetworkBase : public InferenceEngine::ExecutableNetworkBase { using InferenceEngine::ExecutableNetworkBase::_impl; - ~TestExecutableNetworkBase() override = default; }; static MKLDNNPlugin::MKLDNNGraph& getGraph(InferenceEngine::IExecutableNetwork::Ptr execNetwork) { diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_lrn_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_lrn_test.cpp index d880b746afcefd..6612f88758542c 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_lrn_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_lrn_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -192,7 +192,7 @@ class MKLDNNGraphLrnTests: public TestsCommon, ref_lrn(*srcPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -245,8 +245,8 @@ class MKLDNNGraphDynBatchLrnTests: public MKLDNNGraphLrnTests { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -285,7 +285,7 @@ class MKLDNNGraphDynBatchLrnTests: public MKLDNNGraphLrnTests { }; graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkLRN); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkLRN); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_permute_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_permute_test.cpp index aaddef2714dbaa..0442b91f1c2032 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_permute_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_permute_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -46,7 +46,7 @@ class FakeLayerImpl_permute: public Cpu::ExtLayerBase, block_dims = layer->GetParamAsInts("block_dims"); order = layer->GetParamAsInts("order"); addConfig(layer); - } catch (InferenceEngine::details::InferenceEngineException &ex) { + } catch (InferenceEngine::Exception &ex) { errorMsg = ex.what(); } } @@ -60,7 +60,7 @@ class FakeLayerImpl_permute: public Cpu::ExtLayerBase, // Fill tensor parameters into config auto fill_port = [&] (std::vector& port, const DataPtr& data) { - if (!data) THROW_IE_EXCEPTION << "Cannot get input data!"; + if (!data) IE_THROW() << "Cannot get input data!"; DataConfig dataConfig; dataConfig.inPlace = 0; @@ -308,7 +308,7 @@ public WithParamInterface { ref_permute(*srcPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const details::InferenceEngineException &e) { + } catch (const Exception &e) { FAIL() << e.what(); } } @@ -554,8 +554,8 @@ class MKLDNNGraphDynBatchPermuteTests: public permute_f32 { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -598,7 +598,7 @@ class MKLDNNGraphDynBatchPermuteTests: public permute_f32 { }; graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkPermute); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkPermute); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_pooling_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_pooling_test.cpp index e0078445b35066..6c248eac720917 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_pooling_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_pooling_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -347,7 +347,7 @@ class MKLDNNGraphPoolingTests: public TestsCommon, ref_pool(*srcPtr, dst_ref, p); compare(*output, dst_ref, 0.0001f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -437,8 +437,8 @@ class MKLDNNGraphDynBatchPoolingTests: public MKLDNNGraphPoolingTests { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -486,7 +486,7 @@ class MKLDNNGraphDynBatchPoolingTests: public MKLDNNGraphPoolingTests { }; graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkPooling); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkPooling); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_power_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_power_test.cpp index 84b5a08dd2410e..0f7535a5a91f06 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_power_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_power_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -158,7 +158,7 @@ class MKLDNNGraphPowerTests: public TestsCommon, ref_power(*srcPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -260,8 +260,8 @@ class MKLDNNGraphDynBatchPowerTests: public MKLDNNGraphPowerTests { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -300,7 +300,7 @@ class MKLDNNGraphDynBatchPowerTests: public MKLDNNGraphPowerTests { }; graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkPower); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkPower); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_relu_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_relu_test.cpp index 4fcea93cc4a7ef..9086e9a2c5dc25 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_relu_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_relu_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -195,7 +195,7 @@ class MKLDNNGraphReluTests: public TestsCommon, ref_relu(*srcPtr, dst_ref, p); compare(*output, dst_ref, 0.0005f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reorder_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reorder_test.cpp index 1aaf08537a0479..5f43097726b0c2 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reorder_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reorder_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -27,7 +27,7 @@ TEST_F(MKLDNNGraphReorderTests, cannotCreatePrimitiveDescriprorsWithoutOtherLaye node.reset(MKLDNNPlugin::MKLDNNNode::factory().create(layer, eng, {}, cache)); ASSERT_EQ(MKLDNNPlugin::Type::Reorder, node->getType()); - ASSERT_THROW(node->getSupportedDescriptors(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(node->getSupportedDescriptors(), InferenceEngine::Exception); } TEST_F(MKLDNNGraphReorderTests, CreateReorder) { diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reshape_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reshape_test.cpp index e9d2af9ca4e0d5..503db07e574f0a 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reshape_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_reshape_test.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include "test_graph.hpp" #include "single_layer_common.hpp" @@ -162,7 +161,7 @@ __DST_DIMS__ ref_reshape(*srcPtr, dst_ref); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_roi_pooling_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_roi_pooling_test.cpp index 7d8aeb079bf7d4..0ffdfed272a6f6 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_roi_pooling_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_roi_pooling_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -290,7 +290,7 @@ class MKLDNNGraphRoiPoolingTests: public TestsCommon, ref_roipooling(*srcPtr, *roiPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_simplernms_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_simplernms_test.cpp index c1860f09b13bbe..ca9bef048a6e5e 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_simplernms_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_simplernms_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -447,7 +447,7 @@ class MKLDNNGraphSimplerNMSTests: public TestsCommon, ref_simplernms(*srcClsPtr, *srcDeltaPtr, *srcInfoPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_softmax_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_softmax_test.cpp index 47b2cecb9b5cf3..c7c941bacf6df9 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_softmax_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_softmax_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -285,7 +285,7 @@ class MKLDNNGraphSoftMaxTests: public TestsCommon, graph.Infer(srcs, outputBlobs); check_softmax_fwd(*output, p); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -335,8 +335,8 @@ class MKLDNNGraphDynBatchSoftMaxTests: public MKLDNNGraphSoftMaxTests { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -384,7 +384,7 @@ class MKLDNNGraphDynBatchSoftMaxTests: public MKLDNNGraphSoftMaxTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkSoftmax); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkSoftmax); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_split_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_split_test.cpp index f2fe38b6eeba8d..3a3f69ab56357f 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_split_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_split_test.cpp @@ -216,7 +216,7 @@ class MKLDNNGraphSplitTests: public TestsCommon, for (auto& output : outputBlobs) { compare(*output.second, dst_refs[ref_idx++], 0.0005f); } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -313,9 +313,9 @@ class MKLDNNGraphDynBatchSplitTests: public MKLDNNGraphSplitTests { InferenceEngine::Core core; InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -360,7 +360,7 @@ class MKLDNNGraphDynBatchSplitTests: public MKLDNNGraphSplitTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkSplit); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkSplit); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_tile_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_tile_test.cpp index 7e9c2549961184..6e5bafe8787051 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_tile_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/layers/internal/graph_tile_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -177,7 +177,7 @@ class MKLDNNGraphTileTests: public TestsCommon, ref_tile(*srcPtr, dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } @@ -215,8 +215,8 @@ class MKLDNNGraphDynBatchTileTests: public MKLDNNGraphTileTests { InferenceEngine::CNNNetwork network; ASSERT_NO_THROW(network = core.ReadNetwork(model, InferenceEngine::Blob::CPtr())); - auto implNet = dynamic_cast(&((InferenceEngine::ICNNNetwork&)network)); - ASSERT_NE(nullptr, implNet) << "Failed to cast ICNNNetwork to CNNNetworkImpl"; + ASSERT_EQ(nullptr, network.getFunction()); + auto implNet = static_cast(&((InferenceEngine::ICNNNetwork&)network)); InferenceEngine::ResponseDesc resp; InferenceEngine::StatusCode sts = implNet->setBatchSizeReshape(MB, &resp); ASSERT_EQ((int)InferenceEngine::StatusCode::OK, sts) << resp.msg; @@ -256,7 +256,7 @@ class MKLDNNGraphDynBatchTileTests: public MKLDNNGraphTileTests { graph.checkDynBatch(srcs, outputBlobs, MB, MB, checkTile); graph.checkDynBatch(srcs, outputBlobs, 1, MB, checkTile); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_concat_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_concat_tests.cpp index e4750691b8dc56..a62cb9cf0b8d9c 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_concat_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_concat_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -228,7 +228,7 @@ class MKLDNNConvConcatTests: public TestsCommon, graph.Infer(srcs, outputBlobs2); compare(*output, *output2, 0.0005f); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_depthwise_fusing_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_depthwise_fusing_test.cpp index faee5786bf4e6d..19b7e52d0394f8 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_depthwise_fusing_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_conv_depthwise_fusing_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -307,7 +307,7 @@ class MKLDNNGraphConvDepthwiseFusingTests: public TestsCommon, ref_conv_depthwise(*srcPtr, (const float *)weights->buffer(), dst_ref, p); compare(*output, dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_deconv_concat_tests.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_deconv_concat_tests.cpp index ec928fac50a17e..90892d6028969d 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_deconv_concat_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_deconv_concat_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -371,7 +371,7 @@ class MKLDNNDeconvConcatTests: public TestsCommon, } } - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_dw_conv_fusing_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_dw_conv_fusing_test.cpp index e96cb0af41fe78..ff3706c1d6c241 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_dw_conv_fusing_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_dw_conv_fusing_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -319,7 +319,7 @@ class MKLDNNGraphDWConvFusingTests: public TestsCommon, compare(*output, conv2_dst_ref); - } catch (const InferenceEngine::details::InferenceEngineException &e) { + } catch (const InferenceEngine::Exception &e) { FAIL() << e.what(); } } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_optimization_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_optimization_test.cpp index e9a2c650734441..bd8b05458f551d 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_optimization_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_optimization_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -303,9 +303,6 @@ class FakeFabric : public InferenceEngine::Extensions::Cpu::MKLDNNExtensions { void GetVersion(const InferenceEngine::Version *&versionInfo) const noexcept override {} void Unload() noexcept override {} - void Release() noexcept override { - delete this; - } InferenceEngine::StatusCode getPrimitiveTypes(char**& types, unsigned int& size, InferenceEngine::ResponseDesc* resp) noexcept override { types = new char *[factories.size()]; size_t count = 0; diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_structure_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_structure_test.cpp index eb5e07b770de6e..bdfc4d62633e21 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_structure_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/structure/graph_structure_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -6619,7 +6619,7 @@ TEST_F(MKLDNNGraphStructureTests, TestCheckIncorrectScaleShift) { ASSERT_NO_THROW(network = core.ReadNetwork(model, weights)); MKLDNNGraphTestClass graph; - ASSERT_THROW(graph.CreateGraph(network), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(graph.CreateGraph(network), InferenceEngine::Exception); } TEST_F(MKLDNNGraphStructureTests, TestConcatWithFourInputs) { diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/test_graph.hpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/test_graph.hpp index fd032cca535071..7a341f15f2263c 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/test_graph.hpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/graph/test_graph.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -85,7 +85,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { } void PushInputData(const std::string& name, const InferenceEngine::Blob::Ptr &in, int batch) { - if (!IsReady()) THROW_IE_EXCEPTION<< "Wrong state. Topology not ready."; + if (!IsReady()) IE_THROW()<< "Wrong state. Topology not ready."; auto input = inputNodes.find(name); if (input != inputNodes.end()) { @@ -118,11 +118,11 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { if (in->getTensorDesc().getPrecision() == InferenceEngine::Precision::FP32) { _meanImages[name].Subtract(outDims, reinterpret_cast(inter_data_ptr), in->getTensorDesc().getLayout()); } else { - THROW_IE_EXCEPTION << "Mean image of type " << in->getTensorDesc().getPrecision().name() << " is unsupported"; + IE_THROW() << "Mean image of type " << in->getTensorDesc().getPrecision().name() << " is unsupported"; } } } else { - THROW_IE_EXCEPTION << "Input blob for infer '" << name << "' doesn't correspond to input in network"; + IE_THROW() << "Input blob for infer '" << name << "' doesn't correspond to input in network"; } } @@ -140,7 +140,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { } if (in_f->readOnly() == nullptr) { - THROW_IE_EXCEPTION << "Input data was not allocated."; + IE_THROW() << "Input data was not allocated."; } } break; @@ -152,7 +152,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { } if (in_f->readOnly() == nullptr) { - THROW_IE_EXCEPTION << "Input data was not allocated."; + IE_THROW() << "Input data was not allocated."; } } break; @@ -164,7 +164,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { } if (in_f->readOnly() == nullptr) { - THROW_IE_EXCEPTION << "Input data was not allocated."; + IE_THROW() << "Input data was not allocated."; } } break; @@ -176,7 +176,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { } if (in_f->readOnly() == nullptr) { - THROW_IE_EXCEPTION << "Input data was not allocated."; + IE_THROW() << "Input data was not allocated."; } } break; @@ -188,7 +188,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { } if (in_f->readOnly() == nullptr) { - THROW_IE_EXCEPTION << "Input data was not allocated."; + IE_THROW() << "Input data was not allocated."; } } break; @@ -200,12 +200,12 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { } if (in_f->readOnly() == nullptr) { - THROW_IE_EXCEPTION << "Input data was not allocated."; + IE_THROW() << "Input data was not allocated."; } } break; default: - THROW_IE_EXCEPTION << "Unsupported input precision " << input.second->getTensorDesc().getPrecision(); + IE_THROW() << "Unsupported input precision " << input.second->getTensorDesc().getPrecision(); } PushInputData(input.first, input.second, batch); @@ -278,10 +278,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { MKLDNNGraph::CreateGraph(InferenceEngine::CNNNetwork(convertedNetwork), extMgr, cache); } else { auto & icnnnet = static_cast(network); - InferenceEngine::details::CNNNetworkImpl* netImpl = dynamic_cast(&icnnnet); - if (netImpl == nullptr) { - THROW_IE_EXCEPTION << "unexpected network type"; - } + InferenceEngine::details::CNNNetworkImpl* netImpl = static_cast(&icnnnet); MoveInternalBlobsToConstLayers(netImpl); MKLDNNGraph::CreateGraph(network, extMgr, cache); } @@ -295,10 +292,7 @@ class MKLDNNGraphTestClass: public MKLDNNPlugin::MKLDNNGraph { MKLDNNGraph::CreateGraph(InferenceEngine::CNNNetwork(convertedNetwork), extensionManager, cache); } else { auto & icnnnet = static_cast(network); - InferenceEngine::details::CNNNetworkImpl* netImpl = dynamic_cast(&icnnnet); - if (netImpl == nullptr) { - THROW_IE_EXCEPTION << "unexpected network type"; - } + InferenceEngine::details::CNNNetworkImpl* netImpl = static_cast(&icnnnet); MoveInternalBlobsToConstLayers(netImpl); MKLDNNGraph::CreateGraph(network, extensionManager, cache); } diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/mkldnn_primitive_test.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/mkldnn_primitive_test.cpp index 68196dcd1e7cce..743f433131cee5 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/mkldnn_primitive_test.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/mkldnn_primitive_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/mkldnn/test_layers.cpp b/inference-engine/tests_deprecated/unit/engines/mkldnn/test_layers.cpp index d38990dae836ea..e72cab66708339 100644 --- a/inference-engine/tests_deprecated/unit/engines/mkldnn/test_layers.cpp +++ b/inference-engine/tests_deprecated/unit/engines/mkldnn/test_layers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -174,10 +174,10 @@ // ASSERT_NE(nullptr, dynamic_cast(ctx.get())); // // InferenceEngine::CNNLayer cnnLayer({}); -// EXPECT_THROW(MKLDNNPlugin::LayerRegistry::CreateLayer(&cnnLayer, nullptr, dynamic_cast(ctx.get())) , InferenceEngine::details::InferenceEngineException); +// EXPECT_THROW(MKLDNNPlugin::LayerRegistry::CreateLayer(&cnnLayer, nullptr, dynamic_cast(ctx.get())) , InferenceEngine::Exception); //} // //TEST_F(MKLDNNLayersTests, canNotCreateLayerWithoutContext) { // InferenceEngine::ConvolutionLayer convLayer({}); -// EXPECT_THROW(MKLDNNPlugin::LayerRegistry::CreateLayer(&convLayer, nullptr, nullptr), InferenceEngine::details::InferenceEngineException); +// EXPECT_THROW(MKLDNNPlugin::LayerRegistry::CreateLayer(&convLayer, nullptr, nullptr), InferenceEngine::Exception); //} \ No newline at end of file diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_batch_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_batch_tests.cpp index d00fd69dbf7e23..8a8557698e722a 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_batch_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_batch_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_location_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_location_tests.cpp index 25f55c2a063e5e..5e5ebf2908222c 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_location_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/adjust_data_location_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/attributes_map_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/attributes_map_tests.cpp index c9a5e72ff623e1..6a8e7605aa3158 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/attributes_map_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/attributes_map_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/cache_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/cache_tests.cpp index 68003ce1920bef..1cce7db6e7fc34 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/cache_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/cache_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/data_desc_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/data_desc_tests.cpp index 6162b03e891f96..5d02e6c1057569 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/data_desc_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/data_desc_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_const_concat_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_const_concat_tests.cpp index dc666d0492d4f4..14416bcdde06bb 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_const_concat_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_const_concat_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_copy_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_copy_tests.cpp index 6fa314b58c5c8b..6f3370ff8a06d6 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_copy_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/eliminate_copy_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/get_vpu_scale_from_ir_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/get_vpu_scale_from_ir_tests.cpp index cbb1fc21cb2cec..aac3ac3ee97b2d 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/get_vpu_scale_from_ir_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/get_vpu_scale_from_ir_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.cpp index 1e24773cdbfade..cd4b1619bdfc93 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.hpp b/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.hpp index a74b6c5e2f9598..dc9768ea529ce1 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.hpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests_constructs.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests_constructs.cpp index 096c8271f9cf0d..43b4e0bf61ec35 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests_constructs.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/graph_transformer_tests_constructs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/intrusive_handle_list_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/intrusive_handle_list_tests.cpp index feeecfa7854e97..b65d1b99040bff 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/intrusive_handle_list_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/intrusive_handle_list_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/merge_parallel_fc.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/merge_parallel_fc.cpp index 6ecf86a345bb43..3ab1ab9dec0e76 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/merge_parallel_fc.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/merge_parallel_fc.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/merge_permute_stages_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/merge_permute_stages_tests.cpp index a1990368b23902..267f9e0f029802 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/merge_permute_stages_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/merge_permute_stages_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/pthread_semaphore_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/pthread_semaphore_tests.cpp index 9ee8d2c140c595..8a2f6282aa4230 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/pthread_semaphore_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/pthread_semaphore_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/watchdog_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/watchdog_tests.cpp index a307c295106eac..a4c2f50aa8b20c 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/watchdog_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/watchdog_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/xlink_device_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/xlink_device_tests.cpp index 369d291540fa3a..555caa04a95456 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/xlink_device_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/mvnc/xlink_device_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_mvnc_stub.h b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_mvnc_stub.h index 2e146fb307f652..3c5e4612fef844 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_mvnc_stub.h +++ b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_mvnc_stub.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.cpp index ac1a4209d7ea49..e50c7f3bb1d357 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.h b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.h index dddf1fa74b05b3..754b0fb7afb075 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.h +++ b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/helpers/myriad_test_case.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_engine_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_engine_tests.cpp index 32e8f241ee515d..ab437ab8774455 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_engine_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_engine_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_metrics_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_metrics_tests.cpp index a1d5fa4dadff75..55879599166831 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_metrics_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/myriad_tests/myriad_metrics_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/range_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/range_tests.cpp index f5a67fee016f70..69f48016e0d06e 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/range_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/range_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/replace_deconv_by_conv_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/replace_deconv_by_conv_tests.cpp index 8bfa79ba4f52b5..ef18901be416d1 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/replace_deconv_by_conv_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/replace_deconv_by_conv_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_reduce_mean_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_reduce_mean_tests.cpp index fb8f7a56e93867..b898f02ab2d571 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_reduce_mean_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_reduce_mean_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_screlu_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_screlu_tests.cpp index 65379f3aba4ecc..55ac15fa946ef8 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_screlu_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/replace_with_screlu_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/reshape_dilation_conv_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/reshape_dilation_conv_tests.cpp index 8d23e769e6be20..ea7ddd1e4eb4fd 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/reshape_dilation_conv_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/reshape_dilation_conv_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/small_vector_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/small_vector_tests.cpp index 72e4bb9c9b49c5..51687c0d7b7c3e 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/small_vector_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/small_vector_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/sw_conv_adaptation.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/sw_conv_adaptation.cpp index 320bac1465cc32..7d5e73003c5def 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/sw_conv_adaptation.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/sw_conv_adaptation.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/engines/vpu/uplift_activation_stages_tests.cpp b/inference-engine/tests_deprecated/unit/engines/vpu/uplift_activation_stages_tests.cpp index ed8e251694483d..8d265e7219611d 100644 --- a/inference-engine/tests_deprecated/unit/engines/vpu/uplift_activation_stages_tests.cpp +++ b/inference-engine/tests_deprecated/unit/engines/vpu/uplift_activation_stages_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/graph_tools/graph_copy_tests.cpp b/inference-engine/tests_deprecated/unit/graph_tools/graph_copy_tests.cpp index 5f6bba653a9b70..c9a1e8bb2187eb 100644 --- a/inference-engine/tests_deprecated/unit/graph_tools/graph_copy_tests.cpp +++ b/inference-engine/tests_deprecated/unit/graph_tools/graph_copy_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/graph_tools/graph_test_base.hpp b/inference-engine/tests_deprecated/unit/graph_tools/graph_test_base.hpp index 30d1af476e9a51..dd5a6a5ed382a2 100644 --- a/inference-engine/tests_deprecated/unit/graph_tools/graph_test_base.hpp +++ b/inference-engine/tests_deprecated/unit/graph_tools/graph_test_base.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/graph_tools/graph_tools_test.cpp b/inference-engine/tests_deprecated/unit/graph_tools/graph_tools_test.cpp index 2747827a2ea369..71b1f6ec46d2b1 100644 --- a/inference-engine/tests_deprecated/unit/graph_tools/graph_tools_test.cpp +++ b/inference-engine/tests_deprecated/unit/graph_tools/graph_tools_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -14,6 +14,7 @@ #include #include #include +#include using namespace testing; using namespace InferenceEngine; diff --git a/inference-engine/tests_deprecated/unit/inference_engine_tests/get_num_iterations_test.cpp b/inference-engine/tests_deprecated/unit/inference_engine_tests/get_num_iterations_test.cpp index 05799b07c8632d..36990430195bba 100644 --- a/inference-engine/tests_deprecated/unit/inference_engine_tests/get_num_iterations_test.cpp +++ b/inference-engine/tests_deprecated/unit/inference_engine_tests/get_num_iterations_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -62,19 +62,6 @@ class PortMap : public InferenceEngine::TensorIterator::PortMap { } }; -template -std::ostream& operator<<(std::ostream& stream, const std::vector& object) { - stream << "["; - for (std::size_t i = 0; i < object.size(); ++i) { - stream << object[i]; - if (i < object.size() - 1) { - stream << " "; - } - } - stream << "]"; - return stream; -} - struct NegativeTestParams { std::vector inputsDimensions; std::vector inputRules; diff --git a/inference-engine/tests_deprecated/unit/inference_engine_tests/layer_transform_test.cpp b/inference-engine/tests_deprecated/unit/inference_engine_tests/layer_transform_test.cpp index d172c9d5ec7eae..99f0c36686d03d 100644 --- a/inference-engine/tests_deprecated/unit/inference_engine_tests/layer_transform_test.cpp +++ b/inference-engine/tests_deprecated/unit/inference_engine_tests/layer_transform_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/inference_engine_tests/layers_test.cpp b/inference-engine/tests_deprecated/unit/inference_engine_tests/layers_test.cpp index 6d9aba27d5ac59..915fb37dca3a3b 100644 --- a/inference-engine/tests_deprecated/unit/inference_engine_tests/layers_test.cpp +++ b/inference-engine/tests_deprecated/unit/inference_engine_tests/layers_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -72,7 +72,7 @@ TEST_F(LayersTests, throwsOnExpiredDataPtr) { layer.insData.resize(1); layer.insData[0] = dataPtr; dataPtr.reset(); - ASSERT_THROW(layer.input(), InferenceEngine::details::InferenceEngineException); + ASSERT_THROW(layer.input(), InferenceEngine::Exception); } template @@ -425,7 +425,7 @@ TEST_F(LayersTests, returnEmptyPadForValidPadConvolution) { TEST_F(LayersTests, throwOnSamePadForEmptyConvolution) { ConvolutionLayer layer(getDefaultParamsForLayer()); layer.params["auto_pad"] = "same_upper"; - ASSERT_THROW(getPaddings(layer), details::InferenceEngineException); + ASSERT_THROW(getPaddings(layer), Exception); } TEST_F(LayersTests, throwOnInvalidDimsSamePadForConvolution) { @@ -433,7 +433,7 @@ TEST_F(LayersTests, throwOnInvalidDimsSamePadForConvolution) { layer.params["auto_pad"] = "same_upper"; auto emptyData = std::make_shared("", TensorDesc(Precision::UNSPECIFIED, Layout::ANY)); layer.insData.push_back(emptyData); - ASSERT_THROW(getPaddings(layer), details::InferenceEngineException); + ASSERT_THROW(getPaddings(layer), Exception); } TEST_F(LayersTests, throwOn2DSamePadForConvolution) { @@ -441,7 +441,7 @@ TEST_F(LayersTests, throwOn2DSamePadForConvolution) { layer.params["auto_pad"] = "same_upper"; auto notEmptyData = std::make_shared("", TensorDesc(Precision::UNSPECIFIED, SizeVector{ 1, 1 }, Layout::NC)); layer.insData.push_back(notEmptyData); - ASSERT_THROW(getPaddings(layer), details::InferenceEngineException); + ASSERT_THROW(getPaddings(layer), Exception); } TEST_F(LayersTests, throwWithNotEnoughParamsSamePadForConvolution) { diff --git a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.cpp b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.cpp index 13f9f43eb324f6..006a6c7cff5072 100644 --- a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.cpp +++ b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -209,7 +209,7 @@ IE::BlobMap RemoveLayerTests::fillConstDataDiffPrec (const std::vectorgetName()] = blob; } @@ -636,7 +636,7 @@ TEST_F(RemoveLayerTests, throwErrorOnFoldWithUnknownImplForNotShapeDefiningLayer } IE::ConstTransformer transformator(net.get()); - ASSERT_THROW(transformator.foldConstSubgraphs(), IE::details::InferenceEngineException); + ASSERT_THROW(transformator.foldConstSubgraphs(), IE::Exception); } TEST_F(RemoveLayerTests, canFullTrim) { diff --git a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.hpp b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.hpp index f6d779fe7ff858..f33054a9d3f2d8 100644 --- a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.hpp +++ b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_const_infer_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.cpp b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.cpp index 9f860a28873eca..55c81e438d63f0 100644 --- a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.cpp +++ b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -463,99 +463,3 @@ TEST(UtilTests, cloneNet_const) { ASSERT_EQ("custom_val2", getLayer(cloned, "input2")->params["custom_param2"]); ASSERT_EQ("custom_val3", getLayer(cloned, "input3")->params["custom_param3"]); } - -TEST(UtilTests, DISABLED_getRootDataObjects) { - // - // I1-d1-L1-d7 - // \ - // I2-d2 L6 - // \ / - // L2-d8 - // / - // I3-d3 - // \ - // L3 - // / - // C1-d4 - // \ - // L4-d9 - // / \ - // C2-d5 L7 - // / - // C3-d6-L5-d10 - auto net = NetBuilder() - .data("data1",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data2",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data3",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data4",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data5",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data6",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data7",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data8",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data9",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .data("data10",IE::TensorDesc(IE::Precision::UNSPECIFIED, IE::SizeVector{ 1,1,1 }, IE::Layout::CHW)) - .layer(IE::LayerParams{"input1","input",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"input2","Input",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"input3","input",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"const1","const",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"const2","Const",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"const3","const",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"layer1","dummy",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"layer2","dummy",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"layer3","dummy",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"layer4","dummy",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"layer5","dummy",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"layer6","dummy",IE::Precision::UNSPECIFIED}) - .layer(IE::LayerParams{"layer7","dummy",IE::Precision::UNSPECIFIED}) - - .linkToData("input1", "data1") - .linkToData("input2", "data2") - .linkToData("input3", "data3") - - .linkToData("const1", "data4") - .linkToData("const2", "data5") - .linkToData("const3", "data6") - - .linkDataTo("data1", "layer1") - .linkDataTo("data2", "layer2") - .linkDataTo("data3", "layer2") - .linkDataTo("data3", "layer3") - - .linkDataTo("data4", "layer3") - .linkDataTo("data4", "layer4") - .linkDataTo("data5", "layer4") - .linkDataTo("data6", "layer5") - - .linkToData("layer1", "data7") - .linkToData("layer2", "data8") - .linkToData("layer4", "data9") - .linkToData("layer5", "data10") - - .linkDataTo("data7", "layer6") - .linkDataTo("data8", "layer6") - - .linkDataTo("data9", "layer7") - .linkDataTo("data10", "layer7") - - .addInput("data1") - .addInput("data2") - .addInput("data3") - - .finalize(); - - auto cloned = IE::cloneNet(IE::CNNNetwork(net)); - - ASSERT_EQ(13, cloned->layerCount()); - auto root_data = IE::getRootDataObjects(IE::CNNNetwork(cloned)); - ASSERT_EQ(6, root_data.size()); - std::unordered_set data_names; - for (auto& data : root_data) { - data_names.insert(data->getName()); - } - ASSERT_TRUE(contains(data_names, "data1")); - ASSERT_TRUE(contains(data_names, "data2")); - ASSERT_TRUE(contains(data_names, "data3")); - ASSERT_TRUE(contains(data_names, "data4")); - ASSERT_TRUE(contains(data_names, "data5")); - ASSERT_TRUE(contains(data_names, "data6")); -} diff --git a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.hpp b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.hpp index 257b6626da93b6..a96b7f7e8c9b1a 100644 --- a/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.hpp +++ b/inference-engine/tests_deprecated/unit/inference_engine_tests/util_test.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/CMakeLists.txt b/inference-engine/thirdparty/CMakeLists.txt index 5586d900cd84ec..f028ebdd8ab5d2 100644 --- a/inference-engine/thirdparty/CMakeLists.txt +++ b/inference-engine/thirdparty/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -9,8 +9,8 @@ elseif(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQ # On g++ 9.3.0 (Ubuntu 20.04) the ADE library raises "redundant-move" warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=redundant-move") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=redundant-move") -elseif((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") AND (MSVC_VERSION VERSION_GREATER_EQUAL "1920")) - # 1920 version of MSVC 2019 +elseif((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") AND (MSVC_VERSION VERSION_GREATER_EQUAL "1910")) + # 1910 version of Visual Studio 2017 # This flagis needed for enabling SIMD vectorization with command '#pragma omp simd'. # Compilation with '/openmp:experimental' key allow us to enable vectorizatikon capability in MSVC. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp:experimental") @@ -39,7 +39,7 @@ if (ENABLE_CLDNN) else() set(CLDNN__ARCHITECTURE_TARGET "Linux64" CACHE STRING "" FORCE) endif() - + set(CLDNN_THREADING "${THREADING}" CACHE STRING "" FORCE) add_subdirectory(clDNN) # disable CLDNN docs build @@ -90,7 +90,7 @@ if(ENABLE_MKL_DNN) set(DNNL_CPU_RUNTIME "${THREADING}" CACHE BOOL "" FORCE) set(DNNL_BLAS_VENDOR "NONE" CACHE BOOL "" FORCE) set(SDL_cmake_included ON) ## to skip internal SDL flags. SDL flags are already set on IE level - if (ANDROID) + if (ANDROID OR ((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") AND NOT (THREADING STREQUAL "OMP"))) set(OpenMP_cmake_included ON) ## to skip "omp simd" inside a code. Lead to some crashes inside NDK LLVM.. endif() diff --git a/inference-engine/thirdparty/clDNN/CMakeLists.txt b/inference-engine/thirdparty/clDNN/CMakeLists.txt index d17e3a72f17cb6..c9cc74e38f7b82 100644 --- a/inference-engine/thirdparty/clDNN/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (c) 2016 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# cmake_minimum_required (VERSION 3.1) include(CheckCXXCompilerFlag) @@ -69,6 +59,14 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) # ====================================================================================================== # ====================================== HELPER CONSTANT VARIABLES ===================================== # ====================================================================================================== +# ====================================================================================================== +if("${CLDNN_THREADING}" MATCHES "SEQ") + add_definitions(-DCLDNN_THREADING=CLDNN_THREADING_SEQ) +elseif("${CLDNN_THREADING}" MATCHES "TBB") + add_definitions(-DCLDNN_THREADING=CLDNN_THREADING_TBB) +else() + add_definitions(-DCLDNN_THREADING=CLDNN_THREADING_THREADPOOL) +endif() # Path which points to main directory of project. set(CLDNN__MAIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}") @@ -85,11 +83,11 @@ set(CLDNN__API_EXTENSION_DIR "${CMAKE_CURRENT_SOURCE_DIR}/api_extension") # Path which points to directory with interface for framework. set(CLDNN__KERNEL_SELECTOR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/kernel_selector") -# Path which points to directory with binaries for Intel OpenCL SDK ICD (Installable Client Driver). -set(CLDNN__IOCL_ICD_DIR "${CLDNN__COMMON_DIR}/intel_ocl_icd") +# Path which points to directory with binaries for Khronos OpenCL ICD Loader (Installable Client Driver). +set(CLDNN__OCL_ICD_DIR "${CLDNN__COMMON_DIR}/khronos_ocl_icd") # Path which points to directory with C++ bindings for OpenCL (header files + wrapper that disables specific warnings). -set(CLDNN__KHR_CLHPP_DIR "${CLDNN__COMMON_DIR}/khronos_ocl_clhpp") +set(CLDNN__KHR_CLHPP_DIR "${CLDNN__COMMON_DIR}/include") # Path which points to directory with fused version of googletest framework (with fused googlemock as well). set(CLDNN__GTEST_DIR "${CLDNN__COMMON_DIR}/googletest-fused") @@ -146,94 +144,6 @@ function(cldnn_dmsg text) endif() endfunction() -# ====================================================================================================== - -# Locates and detects all versions of specific component. -# -# The highest version of component is also returned as default version to use. -# -# @param retVarNameVersions Name of variable placeholder with all versions of specified component -# which are available in the build. -# @param retVarNamePaths Name of variable placeholder with all paths to versions of specified -# component which are available in build. The paths map to corresponding -# versions from retVarNameVersions (1:1). -# @param retVarNameDefaultVersion Default version to use. It is highest specified version, or 0 if no -# version of component was found. -# @param componentName Descriptive name of a component. It is presentated in warning and -# debug messages. -# @param componentBaseDir Base directory for component (directory containing version -# subdirectories). -# @param [componentReqFile [...]] Optional list of component required files to check for existence. -# The componentReqFile can contain file(GLOB) wildcards. If multiple -# are specified, checked version is valid when all files are existing -# (or GLOB return at least one file for each entry). -function(cldnn_locate_component_versions retVarNameVersions retVarNamePaths retVarNameDefaultVersion - componentName componentBaseDir) - if(NOT EXISTS "${componentBaseDir}") - cldnn_dmsg("Base directory for ${componentName} does not exist at ${componentBaseDir}.") - set("${retVarNameVersions}" "" PARENT_SCOPE) - set("${retVarNamePaths}" "" PARENT_SCOPE) - set("${retVarNameDefaultVersion}" "0" PARENT_SCOPE) - return() - endif() - - # Detecting all versions of added component in the project. - file(GLOB __CLDNN_F_CompVersionPaths RELATIVE "${componentBaseDir}" "${componentBaseDir}/[0-9rRvV]*") - set(__CLDNN_F_CompVersions "") - set(__CLDNN_F_CompPaths "") - foreach(__CLDNN_F_CompVersionPath ${__CLDNN_F_CompVersionPaths}) - string(REPLACE ";" "\;" __CLDNN_F_CompVersionPath "${__CLDNN_F_CompVersionPath}") # [WA#1] Must escape ; again if occurred in item. - if(__CLDNN_F_CompVersionPath MATCHES "^[rRvV]?([0-9]+([\\._][0-9]+([\\._][0-9]+([\\._][0-9]+)?)?)?)") - string(REPLACE "_" "." __CLDNN_F_CompVersion "${CMAKE_MATCH_1}") - set(__CLDNN_F_CompPath "${componentBaseDir}/${__CLDNN_F_CompVersionPath}") - - set(__CLDNN_F_CompPathValid TRUE) - foreach(__CLDNN_F_CompReqFile ${ARGN}) - string(REPLACE ";" "\;" __CLDNN_F_CompReqFile "${__CLDNN_F_CompReqFile}") # [WA#1] Must escape ; again if occurred in item. - set(__CLDNN_F_CompReqFileGlob "${__CLDNN_F_CompPath}/${__CLDNN_F_CompReqFile}") - - file(GLOB __CLDNN_F_CompReqTargets ${__CLDNN_F_CompReqFileGlob}) - list(LENGTH __CLDNN_F_CompReqTargets __CLDNN_F_CompReqTargetsCount) - if(__CLDNN_F_CompReqTargetsCount LESS 1) - message(WARNING "[clDNN] ${componentName} at \"${__CLDNN_F_CompPath}\" does not contain required files. It will be omitted.") - set(__CLDNN_F_CompPathValid FALSE) - break() - endif() - endforeach() - unset(__CLDNN_F_CompReqFile) - unset(__CLDNN_F_CompReqFileGlob) - unset(__CLDNN_F_CompReqTargets) - unset(__CLDNN_F_CompReqTargetsCount) - - if(__CLDNN_F_CompPathValid) - cldnn_dmsg("Found internal ${componentName} (version: ${__CLDNN_F_CompVersion}) at path: ${__CLDNN_F_CompPath}") - list(APPEND __CLDNN_F_CompVersions "${__CLDNN_F_CompVersion}") - list(APPEND __CLDNN_F_CompPaths "${__CLDNN_F_CompPath}") - endif() - endif() - endforeach() - unset(__CLDNN_F_CompVersionPaths) - unset(__CLDNN_F_CompVersionPath) - unset(__CLDNN_F_CompVersion) - unset(__CLDNN_F_CompPath) - unset(__CLDNN_F_CompPathValid) - - # Selecting highest version of component as a default version. - set(__CLDNN_F_CompDefaultVersion "0") - foreach(__CLDNN_F_CompVersion ${__CLDNN_F_CompVersions}) - if(__CLDNN_F_CompVersion VERSION_GREATER __CLDNN_F_CompDefaultVersion) - set(__CLDNN_F_CompDefaultVersion "${__CLDNN_F_CompVersion}") - endif() - endforeach() - unset(__CLDNN_F_CompVersion) - cldnn_dmsg("Selected default version of internal ${componentName}: ${__CLDNN_F_CompDefaultVersion}") - - set("${retVarNameVersions}" ${__CLDNN_F_CompVersions} PARENT_SCOPE) - set("${retVarNamePaths}" ${__CLDNN_F_CompPaths} PARENT_SCOPE) - set("${retVarNameDefaultVersion}" "${__CLDNN_F_CompDefaultVersion}" PARENT_SCOPE) -endfunction() - - # ====================================================================================================== # ====================================================================================================== # ====================================================================================================== @@ -306,27 +216,6 @@ if(NOT __CLDNN_ArchValid_Target) endif() unset(__CLDNN_ArchValid_Target) -# ====================================================================================================== - -# Detecting all versions of added Intel OpenCL SDK ICDs in the project. -if(NOT EXISTS "${CLDNN__IOCL_ICD_DIR}") - if(NOT CLDNN__IOCL_ICD_USE_EXTERNAL) - message(FATAL_ERROR "[clDNN] Root for ICDs for Intel OpenCL SDK is invalid or does not exist. - Please make sure that ICDs are added into \"${CLDNN__IOCL_ICD_DIR}\".") - endif() -endif() - -cldnn_locate_component_versions(__CLDNN_IOclIcdVersions __CLDNN_IOclIcdPaths __CLDNN_IOclIcdDefaultVersion - "ICD for Intel OpenCL SDK" "${CLDNN__IOCL_ICD_DIR}" - "*/include/CL/opencl.h" - ) - -if(__CLDNN_IOclIcdDefaultVersion VERSION_EQUAL "0") - if(NOT CLDNN__IOCL_ICD_USE_EXTERNAL) - message(FATAL_ERROR "[clDNN] Intel OpenCL SDK ICD required for build cannot be located.") - endif() -endif() - # ====================================================================================================== # ============================================ CMAKE OPTIONS =========================================== # ====================================================================================================== @@ -363,18 +252,6 @@ elseif(NOT DEFINED CLDNN__OUTPUT_BIN_DIR AND NOT DEFINED CLDNN__OUTPUT_LIB_DIR) endif() # ====================================================================================================== -# Intel OpenCL SDK ICD: Version of ICD used to build clDNN. -set(CLDNN__IOCL_ICD_VERSION "${__CLDNN_IOclIcdDefaultVersion}" CACHE STRING "Intel OpenCL SDK ICD: Version of ICD used to build clDNN framework.") -mark_as_advanced(CLDNN__IOCL_ICD_VERSION) -set_property(CACHE CLDNN__IOCL_ICD_VERSION PROPERTY STRINGS ${__CLDNN_IOclIcdVersions}) - -# ====================================================================================================== - -set(CLDNN__IOCL_ICD_USE_EXTERNAL OFF CACHE BOOL "Intel OpenCL SDK ICD: Try to use externally-intalled Intel OpenCL SDK ICD.") -mark_as_advanced(CLDNN__IOCL_ICD_USE_EXTERNAL) - -# ====================================================================================================== - # Include and build: Core of clDNN framework. set(CLDNN__INCLUDE_CORE ON CACHE BOOL "Include and build: clDNN core.") mark_as_advanced(CLDNN__INCLUDE_CORE) @@ -494,79 +371,22 @@ endif() # ====================================================================================================== -# Selecting Intel OpenCL SDK version and path. -if (CLDNN__IOCL_ICD_USE_EXTERNAL) - if(NOT DEFINED ENV{INTELOCLSDKROOT}) - message(FATAL_ERROR "[clDNN] CLDNN__IOCL_ICD_USE_EXTERNAL: Usage of external Intel OpenCL SDK ICD was selected, but the INTELOCLSDKROOT environment variable cannot be found. - Make sure that SDK is installed on the host.") - endif() - if(NOT EXISTS "$ENV{INTELOCLSDKROOT}/include/CL/opencl.h") - message(FATAL_ERROR "[clDNN] CLDNN__IOCL_ICD_USE_EXTERNAL: Usage of external Intel OpenCL SDK ICD was selected, but the INTELOCLSDKROOT environment variable points to invalid directory. - Make sure that SDK is installed on the host.") - endif() - set(CLDNN__IOCL_ICD_ROOT "$ENV{INTELOCLSDKROOT}") -else() - list(FIND __CLDNN_IOclIcdVersions "${CLDNN__IOCL_ICD_VERSION}" __CLDNN_IOclIcdVersionIdx) - if(__CLDNN_IOclIcdVersionIdx LESS 0) - message(FATAL_ERROR "[clDNN] CLDNN__IOCL_ICD_VERSION: Selected version of Intel OpenCL SDK ICD cannot be found. - Please use one of following values: ${__CLDNN_IOclIcdVersions}.") - endif() - list(GET __CLDNN_IOclIcdPaths ${__CLDNN_IOclIcdVersionIdx} CLDNN__IOCL_ICD_ROOT) -endif() - -set(CLDNN__IOCL_ICD_ROOT "${CLDNN__IOCL_ICD_ROOT}" CACHE INTERNAL "Path to Intel OpenCL SDK ICD used to build clDNN framework.") - -# Select SDK subdirectories with headers, binaries and libraries (based on architecture, cpu, generator and SDK type). -if(CLDNN__IOCL_ICD_USE_EXTERNAL) - set(CLDNN__IOCL_ICD_INCDIRS "${CLDNN__IOCL_ICD_ROOT}/include" CACHE INTERNAL "Paths to interface headers for Intel OpenCL SDK ICD.") - set(CLDNN__IOCL_ICD_STLDIRS "${CLDNN__IOCL_ICD_ROOT}/lib/${__CLDNN_TargetCpuDir}" CACHE INTERNAL "Paths to static libraries for Intel OpenCL SDK ICD.") - - set(__CLDNN_FindLibSuffixes ${CMAKE_FIND_LIBRARY_SUFFIXES}) - set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_SHARED_LIBRARY_SUFFIX}") - find_library(CLDNN_FIND__IOCL_ICD_SHLPATH - NAMES OpenCL - PATHS "${CLDNN__IOCL_ICD_ROOT}" - "${CLDNN__IOCL_ICD_ROOT}/bin" - "${CLDNN__IOCL_ICD_ROOT}/bin/${__CLDNN_TargetCpuDir}" - "${CLDNN__IOCL_ICD_ROOT}/lib" - "${CLDNN__IOCL_ICD_ROOT}/lib/${__CLDNN_TargetCpuDir}" - NO_CMAKE_FIND_ROOT_PATH - ) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${__CLDNN_FindLibSuffixes}) - - if(CLDNN_FIND__IOCL_ICD_SHLPATH) - get_filename_component(__CLDNN_IOclIcdSharedLibDir "${CLDNN_FIND__IOCL_ICD_SHLPATH}" DIRECTORY) - set(CLDNN__IOCL_ICD_SHLDIRS "${__CLDNN_IOclIcdSharedLibDir}" CACHE INTERNAL "Paths to shared libraries for Intel OpenCL SDK ICD.") - else() - message(FATAL_ERROR "[clDNN] CLDNN__IOCL_ICD_USE_EXTERNAL: Usage of external Intel OpenCL SDK ICD was selected, but the ICD shared library cannot be located. - Make sure that SDK is installed on the host.") - endif() - - unset(CLDNN_FIND__IOCL_ICD_SHLPATH CACHE) - unset(__CLDNN_FindLibSuffixes) - unset(__CLDNN_IOclIcdSharedLibDir) -else() - set(CLDNN__IOCL_ICD_INCDIRS "${CLDNN__IOCL_ICD_ROOT}/${__CLDNN_TargetOs}/include" CACHE INTERNAL "Paths to interface headers for Intel OpenCL SDK ICD.") - set(CLDNN__IOCL_ICD_STLDIRS "${CLDNN__IOCL_ICD_ROOT}/${__CLDNN_TargetOs}/${CLDNN__TARGET_CFG_VAR}/lib/${__CLDNN_TargetCpuDir}" CACHE INTERNAL "Paths to static libraries for Intel OpenCL SDK ICD.") - set(CLDNN__IOCL_ICD_SHLDIRS "${CLDNN__IOCL_ICD_ROOT}/${__CLDNN_TargetOs}/${CLDNN__TARGET_CFG_VAR}/bin/${__CLDNN_TargetCpuDir}" CACHE INTERNAL "Paths to shared libraries for Intel OpenCL SDK ICD.") -endif() +set(CLDNN__OCL_ICD_ROOT "${CLDNN__OCL_ICD_DIR}" CACHE INTERNAL "Path to Khronos OpenCL ICD Loader used to build clDNN framework.") +set(CLDNN__OCL_ICD_INCDIRS "${CLDNN__KHR_CLHPP_DIR}" CACHE INTERNAL "Paths to interface headers for OpenCL.") +set(CLDNN__OCL_ICD_STLDIRS "${CLDNN__OCL_ICD_ROOT}/${__CLDNN_TargetOs}/${CLDNN__TARGET_CFG_VAR}/lib/${__CLDNN_TargetCpuDir}" CACHE INTERNAL "Paths to static libraries for OpenCL ICD Loader.") +set(CLDNN__OCL_ICD_SHLDIRS "${CLDNN__OCL_ICD_ROOT}/${__CLDNN_TargetOs}/${CLDNN__TARGET_CFG_VAR}/bin/${__CLDNN_TargetCpuDir}" CACHE INTERNAL "Paths to shared libraries for OpenCL ICD Loader.") # Select link directory based on targeted OS. # - on Windows: static libraries directory. # - on others: shared libraries directory. if(__CLDNN_TargetOs MATCHES "^windows$") - set(CLDNN__IOCL_ICD_LIBDIRS ${CLDNN__IOCL_ICD_STLDIRS} CACHE INTERNAL "Paths to libraries to link for Intel OpenCL SDK ICD.") - set(CLDNN__IOCL_ICD_LIBPATH ${CLDNN__IOCL_ICD_LIBDIRS}/${CMAKE_STATIC_LIBRARY_PREFIX}OpenCL${CMAKE_STATIC_LIBRARY_SUFFIX} CACHE INTERNAL "") + set(CLDNN__OCL_ICD_LIBDIRS ${CLDNN__OCL_ICD_STLDIRS} CACHE INTERNAL "Paths to libraries to link for OpenCL ICD Loader.") + set(CLDNN__OCL_ICD_LIBPATH ${CLDNN__OCL_ICD_LIBDIRS}/${CMAKE_STATIC_LIBRARY_PREFIX}OpenCL${CMAKE_STATIC_LIBRARY_SUFFIX} CACHE INTERNAL "") else() - set(CLDNN__IOCL_ICD_LIBDIRS ${CLDNN__IOCL_ICD_SHLDIRS} CACHE INTERNAL "Paths to libraries to link for Intel OpenCL SDK ICD.") - set(CLDNN__IOCL_ICD_LIBPATH ${CLDNN__IOCL_ICD_LIBDIRS}/${CMAKE_SHARED_LIBRARY_PREFIX}OpenCL${CMAKE_SHARED_LIBRARY_SUFFIX} CACHE INTERNAL "") + set(CLDNN__OCL_ICD_LIBDIRS ${CLDNN__OCL_ICD_SHLDIRS} CACHE INTERNAL "Paths to libraries to link for OpenCL ICD Loader.") + set(CLDNN__OCL_ICD_LIBPATH ${CLDNN__OCL_ICD_LIBDIRS}/${CMAKE_SHARED_LIBRARY_PREFIX}OpenCL${CMAKE_SHARED_LIBRARY_SUFFIX} CACHE INTERNAL "") endif() -unset(__CLDNN_IOclIcdVersions) -unset(__CLDNN_IOclIcdPaths) -unset(__CLDNN_IOclIcdDefaultVersion) -unset(__CLDNN_IOclIcdVersionIdx) - # ====================================================================================================== set(CLDNN_UTILS__RAPIDJSON_INCDIRS "utils/rapidjson" CACHE INTERNAL "Paths to interface headers for rapidjson.") @@ -590,11 +410,6 @@ message(STATUS "[clDNN] - target: ${CLDNN__ARCHITECTURE_TARGET} (detected: $ message(STATUS "[clDNN]") message(STATUS "[clDNN]") message(STATUS "[clDNN] Advanced:") -if (CLDNN__IOCL_ICD_USE_EXTERNAL) - message(STATUS "[clDNN] - ICD version used to build: N/A (installed externally)") -else() - message(STATUS "[clDNN] - ICD version used to build: ${CLDNN__IOCL_ICD_VERSION}") -endif() message(STATUS "[clDNN]") message(STATUS "[clDNN] - Include/Build cldnn core: ${CLDNN__INCLUDE_CORE}") message(STATUS "[clDNN] - Include/Build kernel selector: ${CLDNN__INCLUDE_KERNEL_SELECTOR}") @@ -611,11 +426,11 @@ message(STATUS "[clDNN] - CMake debug trace: ${CLDNN__CMAKE_DEBUG}" message(STATUS "[clDNN]") message(STATUS "[clDNN]") message(STATUS "[clDNN] ICD:") -message(STATUS "[clDNN] - Root: ${CLDNN__IOCL_ICD_ROOT}") -message(STATUS "[clDNN] + Headers: ${CLDNN__IOCL_ICD_INCDIRS}") -message(STATUS "[clDNN] + Static libs: ${CLDNN__IOCL_ICD_STLDIRS}") -message(STATUS "[clDNN] + Shared libs: ${CLDNN__IOCL_ICD_SHLDIRS}") -message(STATUS "[clDNN] + Libs to link: ${CLDNN__IOCL_ICD_LIBPATH}") +message(STATUS "[clDNN] - Root: ${CLDNN__OCL_ICD_ROOT}") +message(STATUS "[clDNN] + Headers: ${CLDNN__OCL_ICD_INCDIRS}") +message(STATUS "[clDNN] + Static libs: ${CLDNN__OCL_ICD_STLDIRS}") +message(STATUS "[clDNN] + Shared libs: ${CLDNN__OCL_ICD_SHLDIRS}") +message(STATUS "[clDNN] + Libs to link: ${CLDNN__OCL_ICD_LIBPATH}") message(STATUS "[clDNN] =============================================================================") unset(__CLDNN_DetectedArch_Target) @@ -970,12 +785,12 @@ include_directories( include_directories(SYSTEM "${CLDNN__KHR_CLHPP_DIR}" - ${CLDNN__IOCL_ICD_INCDIRS}) + ) add_library(clDNN_OpenCL UNKNOWN IMPORTED) set_target_properties(clDNN_OpenCL PROPERTIES - IMPORTED_LOCATION ${CLDNN__IOCL_ICD_LIBPATH} + IMPORTED_LOCATION ${CLDNN__OCL_ICD_LIBPATH} ) diff --git a/inference-engine/thirdparty/clDNN/README.md b/inference-engine/thirdparty/clDNN/README.md index da3b6d0d4155b0..8421ce3aa05962 100644 --- a/inference-engine/thirdparty/clDNN/README.md +++ b/inference-engine/thirdparty/clDNN/README.md @@ -21,7 +21,7 @@ clDNN uses 3rd-party components licensed under following licenses: - *RapidJSON* under [Tencent\* License](https://github.com/Tencent/rapidjson/blob/master/license.txt) ## Documentation -There is inline documentation available that can be [generated with Doxygen](#generating-documentation). +There is inline documentation available that can be generated with Doxygen. Accelerate Deep Learning Inference with Intel® Processor Graphics whitepaper [link](https://software.intel.com/en-us/articles/accelerating-deep-learning-inference-with-intel-processor-graphics). @@ -45,7 +45,7 @@ request will be merged into our GitHub repository. ## System Requirements clDNN supports Intel® HD Graphics and Intel® Iris® Graphics and is optimized for Gen9-Gen12LP architectures -clDNN currently uses OpenCL™ with multiple Intel® OpenCL™ extensions and requires Intel® Graphics Driver to run. +clDNN currently uses OpenCL™ with multiple Intel OpenCL™ extensions and requires Intel® Graphics Driver to run. clDNN requires CPU with Intel® SSE/Intel® AVX support. @@ -62,32 +62,20 @@ The software dependencies are: > Intel® CPU intrinsics header (``) must be available during compilation. - [python™](https://www.python.org/downloads/) 2.7 or later (scripts are both compatible with python™ 2.7.x and python™ 3.x) -- *(optional)* [Doxygen\*](http://www.stack.nl/~dimitri/doxygen/download.html) 1.8.13 or later - Needed for manual generation of documentation from inline comments or running `docs` custom target which will generate it automatically. -> [GraphViz\*](http://www.graphviz.org/Download..php) (2.38 or later) is also recommended to generate documentation with all embedded diagrams. -(Make sure that `dot` application is visible in the `PATH` environment variable.) +# Trademark Information +Intel, the Intel logo, Intel Atom, Intel Core, Intel Xeon Phi, Iris, OpenVINO, +the OpenVINO logo, Pentium, VTune, and Xeon are trademarks +of Intel Corporation or its subsidiaries. -### Generating documentation - -Documentation is provided inline and can be generated in HTML format with Doxygen. We recommend to use latest -[Doxygen\*](http://www.stack.nl/~dimitri/doxygen/download.html) and [GraphViz\*](http://www.graphviz.org/Download..php). - -Documentation templates and configuration files are stored in `docs` subdirectory. You can simply call: - -```shellscript - cd docs && doxygen -``` -to generate HTML documentation in `docs/html` subdirectory. - -There is also custom CMake target named `docs` which will generate documentation in `CLDNN__OUTPUT_BIN_DIR/html` directory. For example, when using Unix makefiles, you can run: -``` - make docs -``` -in order to create it. +\* Other names and brands may be claimed as the property of others. +Microsoft, Windows, and the Windows logo are trademarks, or registered +trademarks of Microsoft Corporation in the United States and/or other +countries. -\* Other names and brands may be claimed as the property of others. +OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission +by Khronos. -Copyright © 2020, Intel® Corporation +Copyright © 2021, Intel Corporation diff --git a/inference-engine/thirdparty/clDNN/api/activation.hpp b/inference-engine/thirdparty/clDNN/api/activation.hpp index e571eb595f9d22..71a8c4ba2c05fc 100644 --- a/inference-engine/thirdparty/clDNN/api/activation.hpp +++ b/inference-engine/thirdparty/clDNN/api/activation.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/arg_max_min.hpp b/inference-engine/thirdparty/clDNN/api/arg_max_min.hpp index 4058614a95ec2a..2b2ede9fecd43f 100644 --- a/inference-engine/thirdparty/clDNN/api/arg_max_min.hpp +++ b/inference-engine/thirdparty/clDNN/api/arg_max_min.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/average_unpooling.hpp b/inference-engine/thirdparty/clDNN/api/average_unpooling.hpp index 733324bc9e9ce3..8db0a0f48f00b3 100644 --- a/inference-engine/thirdparty/clDNN/api/average_unpooling.hpp +++ b/inference-engine/thirdparty/clDNN/api/average_unpooling.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/batch_to_space.hpp b/inference-engine/thirdparty/clDNN/api/batch_to_space.hpp index 47fe06064d0dbd..715b81ee0ba768 100644 --- a/inference-engine/thirdparty/clDNN/api/batch_to_space.hpp +++ b/inference-engine/thirdparty/clDNN/api/batch_to_space.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -27,9 +15,11 @@ namespace cldnn { /// @{ /// @brief The BatchToSpace operation reshapes the "batch" dimension 0 into N - 1, N ∈ {4,5,6} dimensions of shape block_shape + [batch] -/// and interleaves these blocks back into the grid defined by the spatial dimensions [1, ..., N - 1], N ∈ {4,5,6} to obtain a result with the same rank as data input. +/// and interleaves these blocks back into the grid defined by the spatial dimensions [1, ..., N - 1], N ∈ {4,5,6} +/// to obtain a result with the same rank as data input. /// The spatial dimensions of this intermediate result are then optionally cropped according to crops_begin and crops_end to produce the output. -/// @details The BatchToSpace operation is similar to the TensorFlow* operation BatchToSpaceND (https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/batch-to-space-n-d) +/// @details The BatchToSpace operation is similar to the TensorFlow* operation +/// BatchToSpaceND (https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/batch-to-space-n-d) /// There are 4 inputs of this operation: /// 1) data - input N-D tensor [batch, D_1, D_2 ... D_{N-1}], N ∈ {4,5,6}. Required. /// 2) block_shape - input 1-D tensor with shape [N], N ∈ {4,5,6}. Consists of block_sizes each of which specifies the size of the value block to be moved. @@ -51,7 +41,8 @@ namespace cldnn { /// x''' = reshape(x'', [batch / (B_1 * ... * B_{N - 1}), D_1 * B_1, D_2 * B_2, ... , D_{N - 1} * B_{N - 1}]) /// /// Crop the start and end of dimensions according to crops_begin, crops_end to produce the output of shape. -/// y = [batch / (B_1 * ... * B_{N - 1}), crop(D_1 * B_1, crops_begin[1], crops_end[1]), ... , crop(D_{N - 1} * B_{N - 1}, crops_begin[N - 1], crops_end[N - 1])] +/// y = [batch / (B_1 * ... * B_{N - 1}), crop(D_1 * B_1, crops_begin[1], crops_end[1]), ... , +/// crop(D_{N - 1} * B_{N - 1}, crops_begin[N - 1], crops_end[N - 1])] struct batch_to_space : public primitive_base { CLDNN_DECLARE_PRIMITIVE(batch_to_space) diff --git a/inference-engine/thirdparty/clDNN/api/binary_convolution.hpp b/inference-engine/thirdparty/clDNN/api/binary_convolution.hpp index effe04ad07083a..7942b8d5fd915b 100644 --- a/inference-engine/thirdparty/clDNN/api/binary_convolution.hpp +++ b/inference-engine/thirdparty/clDNN/api/binary_convolution.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/border.hpp b/inference-engine/thirdparty/clDNN/api/border.hpp index db617f08a0981f..17a14d6d363fd0 100644 --- a/inference-engine/thirdparty/clDNN/api/border.hpp +++ b/inference-engine/thirdparty/clDNN/api/border.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/broadcast.hpp b/inference-engine/thirdparty/clDNN/api/broadcast.hpp index 7c2ca99be0ebfd..f7140648d7851c 100644 --- a/inference-engine/thirdparty/clDNN/api/broadcast.hpp +++ b/inference-engine/thirdparty/clDNN/api/broadcast.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/cldnn.hpp b/inference-engine/thirdparty/clDNN/api/cldnn.hpp index 7130d0eae1650c..4b531ab050bb45 100644 --- a/inference-engine/thirdparty/clDNN/api/cldnn.hpp +++ b/inference-engine/thirdparty/clDNN/api/cldnn.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /*! @mainpage clDNN Documentation * @section intro Introduction @@ -135,6 +123,7 @@ #include #include #include +#include namespace cldnn { diff --git a/inference-engine/thirdparty/clDNN/api/compounds.h b/inference-engine/thirdparty/clDNN/api/compounds.h index ba6966fc7c7fe9..45429e584f9b46 100644 --- a/inference-engine/thirdparty/clDNN/api/compounds.h +++ b/inference-engine/thirdparty/clDNN/api/compounds.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/api/concatenation.hpp b/inference-engine/thirdparty/clDNN/api/concatenation.hpp index 033bfabe36d1af..b8e2118675dd1b 100644 --- a/inference-engine/thirdparty/clDNN/api/concatenation.hpp +++ b/inference-engine/thirdparty/clDNN/api/concatenation.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/condition.hpp b/inference-engine/thirdparty/clDNN/api/condition.hpp index 19501ba2f0afbd..1becbc1aff54f2 100644 --- a/inference-engine/thirdparty/clDNN/api/condition.hpp +++ b/inference-engine/thirdparty/clDNN/api/condition.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/convolution.hpp b/inference-engine/thirdparty/clDNN/api/convolution.hpp index 0d5bb7f6e36a98..0a34c6ba50641c 100644 --- a/inference-engine/thirdparty/clDNN/api/convolution.hpp +++ b/inference-engine/thirdparty/clDNN/api/convolution.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/crop.hpp b/inference-engine/thirdparty/clDNN/api/crop.hpp index ef7aa6ecf2b0bb..da4f587ec25bc5 100644 --- a/inference-engine/thirdparty/clDNN/api/crop.hpp +++ b/inference-engine/thirdparty/clDNN/api/crop.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/ctc_greedy_decoder.hpp b/inference-engine/thirdparty/clDNN/api/ctc_greedy_decoder.hpp index 64e25580d9b94f..2ec0f84c27baa0 100644 --- a/inference-engine/thirdparty/clDNN/api/ctc_greedy_decoder.hpp +++ b/inference-engine/thirdparty/clDNN/api/ctc_greedy_decoder.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/cum_sum.hpp b/inference-engine/thirdparty/clDNN/api/cum_sum.hpp index f5dee0b7647661..8a0847fd61fadb 100644 --- a/inference-engine/thirdparty/clDNN/api/cum_sum.hpp +++ b/inference-engine/thirdparty/clDNN/api/cum_sum.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/custom_gpu_primitive.hpp b/inference-engine/thirdparty/clDNN/api/custom_gpu_primitive.hpp index 2a729145752e31..22b43fedd3c01f 100644 --- a/inference-engine/thirdparty/clDNN/api/custom_gpu_primitive.hpp +++ b/inference-engine/thirdparty/clDNN/api/custom_gpu_primitive.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/data.hpp b/inference-engine/thirdparty/clDNN/api/data.hpp index 133c046a9dbef0..68e43ee1abd773 100644 --- a/inference-engine/thirdparty/clDNN/api/data.hpp +++ b/inference-engine/thirdparty/clDNN/api/data.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/deconvolution.hpp b/inference-engine/thirdparty/clDNN/api/deconvolution.hpp index fc1d21cd8717fb..333488d6297469 100644 --- a/inference-engine/thirdparty/clDNN/api/deconvolution.hpp +++ b/inference-engine/thirdparty/clDNN/api/deconvolution.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/depth_to_space.hpp b/inference-engine/thirdparty/clDNN/api/depth_to_space.hpp index 9b6765a38561c6..74b824a670d1c9 100644 --- a/inference-engine/thirdparty/clDNN/api/depth_to_space.hpp +++ b/inference-engine/thirdparty/clDNN/api/depth_to_space.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/detection_output.hpp b/inference-engine/thirdparty/clDNN/api/detection_output.hpp index 577f753fa9dfc1..22f7d686c0f674 100644 --- a/inference-engine/thirdparty/clDNN/api/detection_output.hpp +++ b/inference-engine/thirdparty/clDNN/api/detection_output.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/device.hpp b/inference-engine/thirdparty/clDNN/api/device.hpp index bf918f8b35dc73..809fbf7b61ec05 100644 --- a/inference-engine/thirdparty/clDNN/api/device.hpp +++ b/inference-engine/thirdparty/clDNN/api/device.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/eltwise.hpp b/inference-engine/thirdparty/clDNN/api/eltwise.hpp index 0926b52c430aa9..459377fdf12654 100644 --- a/inference-engine/thirdparty/clDNN/api/eltwise.hpp +++ b/inference-engine/thirdparty/clDNN/api/eltwise.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/embedding_bag.hpp b/inference-engine/thirdparty/clDNN/api/embedding_bag.hpp index 2dba4f4eeb93a4..630f352c94872d 100644 --- a/inference-engine/thirdparty/clDNN/api/embedding_bag.hpp +++ b/inference-engine/thirdparty/clDNN/api/embedding_bag.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/engine.hpp b/inference-engine/thirdparty/clDNN/api/engine.hpp index 9942aa930b4764..c65d89df60196d 100644 --- a/inference-engine/thirdparty/clDNN/api/engine.hpp +++ b/inference-engine/thirdparty/clDNN/api/engine.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -22,6 +10,7 @@ #include #include #include +#include namespace cldnn { @@ -73,6 +62,7 @@ struct engine_configuration { ///< (switched off for older drivers then NEO). uint16_t n_streams; ///< Number of queues executed in parallel const std::string kernels_cache_path; ///< Path to compiled kernels cache + uint16_t n_threads; ///< Number of threads const std::string tuning_cache_path; ///< Path to tuning kernel cache /// @brief Constructs engine configuration with specified options. @@ -95,6 +85,7 @@ struct engine_configuration { bool memory_pool = true, uint16_t n_streams = 1, const std::string& kernels_cache_path = "", + uint16_t n_threads = std::max(static_cast(std::thread::hardware_concurrency()), static_cast(1)), const std::string& tuning_cache_path = "cache.json") : enable_profiling(profiling) , meaningful_kernels_names(decorate_kernel_names) @@ -109,6 +100,7 @@ struct engine_configuration { , enable_memory_pool(memory_pool) , n_streams(n_streams) , kernels_cache_path(kernels_cache_path) + , n_threads(n_threads) , tuning_cache_path(tuning_cache_path) { if (n_streams == 0) { throw std::invalid_argument("Invalid streams count set in engine config"); diff --git a/inference-engine/thirdparty/clDNN/api/event.hpp b/inference-engine/thirdparty/clDNN/api/event.hpp index d39bf18f62b8cd..3b54171d74549d 100644 --- a/inference-engine/thirdparty/clDNN/api/event.hpp +++ b/inference-engine/thirdparty/clDNN/api/event.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/extract_image_patches.hpp b/inference-engine/thirdparty/clDNN/api/extract_image_patches.hpp index 0402036290ea78..8ee28b9c846cb6 100644 --- a/inference-engine/thirdparty/clDNN/api/extract_image_patches.hpp +++ b/inference-engine/thirdparty/clDNN/api/extract_image_patches.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -26,7 +14,8 @@ namespace cldnn { /// @addtogroup cpp_primitives Primitives /// @{ -/// @brief The ExtractImagePatches operation collects patches from the input tensor, as if applying a convolution. All extracted patches are stacked in the depth dimension of the output. +/// @brief The ExtractImagePatches operation collects patches from the input tensor, as if applying a convolution. +/// All extracted patches are stacked in the depth dimension of the output. /// @details The ExtractImagePatches operation is similar to the TensorFlow* /// operation ExtractImagePatches. /// This op extracts patches of shape `sizes` which are `strides` apart in the diff --git a/inference-engine/thirdparty/clDNN/api/fully_connected.hpp b/inference-engine/thirdparty/clDNN/api/fully_connected.hpp index 0801e8fd03acd4..9e2a5f51b10c96 100644 --- a/inference-engine/thirdparty/clDNN/api/fully_connected.hpp +++ b/inference-engine/thirdparty/clDNN/api/fully_connected.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/gather.hpp b/inference-engine/thirdparty/clDNN/api/gather.hpp index afe15e08fa54a5..6b4514e0cf3d01 100644 --- a/inference-engine/thirdparty/clDNN/api/gather.hpp +++ b/inference-engine/thirdparty/clDNN/api/gather.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/gather_tree.hpp b/inference-engine/thirdparty/clDNN/api/gather_tree.hpp index 28980cf7288136..59e7bec1955407 100644 --- a/inference-engine/thirdparty/clDNN/api/gather_tree.hpp +++ b/inference-engine/thirdparty/clDNN/api/gather_tree.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/gemm.hpp b/inference-engine/thirdparty/clDNN/api/gemm.hpp index 1b0c35ab53ae3b..5bac5ceb9ce55f 100644 --- a/inference-engine/thirdparty/clDNN/api/gemm.hpp +++ b/inference-engine/thirdparty/clDNN/api/gemm.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/grn.hpp b/inference-engine/thirdparty/clDNN/api/grn.hpp index 68428151ced832..47c9cb19fa90a3 100644 --- a/inference-engine/thirdparty/clDNN/api/grn.hpp +++ b/inference-engine/thirdparty/clDNN/api/grn.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/input_layout.hpp b/inference-engine/thirdparty/clDNN/api/input_layout.hpp index f994ed64cc2a0e..61cc5544e7acb6 100644 --- a/inference-engine/thirdparty/clDNN/api/input_layout.hpp +++ b/inference-engine/thirdparty/clDNN/api/input_layout.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/layout.hpp b/inference-engine/thirdparty/clDNN/api/layout.hpp index afe12825ff94aa..29f68c54c35aec 100644 --- a/inference-engine/thirdparty/clDNN/api/layout.hpp +++ b/inference-engine/thirdparty/clDNN/api/layout.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/lrn.hpp b/inference-engine/thirdparty/clDNN/api/lrn.hpp index 1e48dd06eba73b..3a24f4f70e7a14 100644 --- a/inference-engine/thirdparty/clDNN/api/lrn.hpp +++ b/inference-engine/thirdparty/clDNN/api/lrn.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/lstm.hpp b/inference-engine/thirdparty/clDNN/api/lstm.hpp index 69a86aa0e83e28..33c49bc7c186dc 100644 --- a/inference-engine/thirdparty/clDNN/api/lstm.hpp +++ b/inference-engine/thirdparty/clDNN/api/lstm.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/lstm_dynamic.hpp b/inference-engine/thirdparty/clDNN/api/lstm_dynamic.hpp index 3dafe2617355ad..5f0d297e3cbc07 100644 --- a/inference-engine/thirdparty/clDNN/api/lstm_dynamic.hpp +++ b/inference-engine/thirdparty/clDNN/api/lstm_dynamic.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/max_unpooling.hpp b/inference-engine/thirdparty/clDNN/api/max_unpooling.hpp index 6fe1dcd346f22a..c22852627e0587 100644 --- a/inference-engine/thirdparty/clDNN/api/max_unpooling.hpp +++ b/inference-engine/thirdparty/clDNN/api/max_unpooling.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/memory.hpp b/inference-engine/thirdparty/clDNN/api/memory.hpp index 54e837cc3f5da1..30dfd5c7eef0e9 100644 --- a/inference-engine/thirdparty/clDNN/api/memory.hpp +++ b/inference-engine/thirdparty/clDNN/api/memory.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/meta_utils.hpp b/inference-engine/thirdparty/clDNN/api/meta_utils.hpp index f34cb6f0e99520..c71073a8dfd0fa 100644 --- a/inference-engine/thirdparty/clDNN/api/meta_utils.hpp +++ b/inference-engine/thirdparty/clDNN/api/meta_utils.hpp @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/api/mutable_data.hpp b/inference-engine/thirdparty/clDNN/api/mutable_data.hpp index f6345d5217e1f8..6a8acc0770a1bc 100644 --- a/inference-engine/thirdparty/clDNN/api/mutable_data.hpp +++ b/inference-engine/thirdparty/clDNN/api/mutable_data.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/mvn.hpp b/inference-engine/thirdparty/clDNN/api/mvn.hpp index f66971f2ecfa8e..0f821debbb637f 100644 --- a/inference-engine/thirdparty/clDNN/api/mvn.hpp +++ b/inference-engine/thirdparty/clDNN/api/mvn.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -37,23 +25,28 @@ struct mvn : public primitive_base { /// @param across_channels Determines if the normalization is done across or within channels. Default is within channels.' /// @param normalize_variance Determines if normalize variance is applied. Default is true. /// @param epsilon Epsilon for not dividing by zero while normalizing. + /// @param eps_inside_sqrt The mode of applying epsilon. mvn(const primitive_id& id, const primitive_id& input, + const bool normalize_variance, + const float epsilon, + const bool eps_inside_sqrt, const bool across_channels = false, - const bool normalize_variance = true, - const float epsilon = 1e-10f, const padding& output_padding = padding()) : primitive_base(id, {input}, output_padding), - across_channels(across_channels), normalize_variance(normalize_variance), - epsilon(epsilon) {} + epsilon(epsilon), + eps_inside_sqrt(eps_inside_sqrt), + across_channels(across_channels) {} - /// @brief Determines if the normalization is done across or within channels. - bool across_channels; /// @brief Determines if normalize variance is applied. bool normalize_variance; /// @brief Epsilon for not dividing by zero while normalizing. float epsilon; + /// @brief The mode of applying epsilon. + bool eps_inside_sqrt; + /// @brief Determines if the normalization is done across or within channels. + bool across_channels; }; /// @} /// @} diff --git a/inference-engine/thirdparty/clDNN/api/network.hpp b/inference-engine/thirdparty/clDNN/api/network.hpp index 6c83688120d52a..ee089e7e42f4d1 100644 --- a/inference-engine/thirdparty/clDNN/api/network.hpp +++ b/inference-engine/thirdparty/clDNN/api/network.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/non_max_suppression.hpp b/inference-engine/thirdparty/clDNN/api/non_max_suppression.hpp index 6b906ae442e56d..ad017138248b78 100644 --- a/inference-engine/thirdparty/clDNN/api/non_max_suppression.hpp +++ b/inference-engine/thirdparty/clDNN/api/non_max_suppression.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/normalize.hpp b/inference-engine/thirdparty/clDNN/api/normalize.hpp index 611cc08bd65e92..931ffb0dd38050 100644 --- a/inference-engine/thirdparty/clDNN/api/normalize.hpp +++ b/inference-engine/thirdparty/clDNN/api/normalize.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/one_hot.hpp b/inference-engine/thirdparty/clDNN/api/one_hot.hpp index 18271a8bfbcb50..47d27c7970174e 100644 --- a/inference-engine/thirdparty/clDNN/api/one_hot.hpp +++ b/inference-engine/thirdparty/clDNN/api/one_hot.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/permute.hpp b/inference-engine/thirdparty/clDNN/api/permute.hpp index 24f6f03a135f32..db4f1b764c4e82 100644 --- a/inference-engine/thirdparty/clDNN/api/permute.hpp +++ b/inference-engine/thirdparty/clDNN/api/permute.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/pooling.hpp b/inference-engine/thirdparty/clDNN/api/pooling.hpp index 4dcccfbaafe349..6975b1918d2062 100644 --- a/inference-engine/thirdparty/clDNN/api/pooling.hpp +++ b/inference-engine/thirdparty/clDNN/api/pooling.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/primitive.hpp b/inference-engine/thirdparty/clDNN/api/primitive.hpp index 8a94dc37399cd2..1c8ac408493c0b 100644 --- a/inference-engine/thirdparty/clDNN/api/primitive.hpp +++ b/inference-engine/thirdparty/clDNN/api/primitive.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/prior_box.hpp b/inference-engine/thirdparty/clDNN/api/prior_box.hpp index 9ef0f212e75a67..5d3849483087c6 100644 --- a/inference-engine/thirdparty/clDNN/api/prior_box.hpp +++ b/inference-engine/thirdparty/clDNN/api/prior_box.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/profiling.hpp b/inference-engine/thirdparty/clDNN/api/profiling.hpp index 004b9ba1cc15d2..575fb06defa69c 100644 --- a/inference-engine/thirdparty/clDNN/api/profiling.hpp +++ b/inference-engine/thirdparty/clDNN/api/profiling.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/api/program.hpp b/inference-engine/thirdparty/clDNN/api/program.hpp index 8252271cb866e8..b50754e1fd07b9 100644 --- a/inference-engine/thirdparty/clDNN/api/program.hpp +++ b/inference-engine/thirdparty/clDNN/api/program.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/proposal.hpp b/inference-engine/thirdparty/clDNN/api/proposal.hpp index 19fc536744bb25..bce518b884330a 100644 --- a/inference-engine/thirdparty/clDNN/api/proposal.hpp +++ b/inference-engine/thirdparty/clDNN/api/proposal.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/pyramid_roi_align.hpp b/inference-engine/thirdparty/clDNN/api/pyramid_roi_align.hpp index 7a49824fdf7c13..b5272218d99e31 100644 --- a/inference-engine/thirdparty/clDNN/api/pyramid_roi_align.hpp +++ b/inference-engine/thirdparty/clDNN/api/pyramid_roi_align.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/quantize.hpp b/inference-engine/thirdparty/clDNN/api/quantize.hpp index abc39a680b1f76..5073641b1b71c3 100644 --- a/inference-engine/thirdparty/clDNN/api/quantize.hpp +++ b/inference-engine/thirdparty/clDNN/api/quantize.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/reduce.hpp b/inference-engine/thirdparty/clDNN/api/reduce.hpp index 6bc3c5fe1e4862..eadaeca114a0e1 100644 --- a/inference-engine/thirdparty/clDNN/api/reduce.hpp +++ b/inference-engine/thirdparty/clDNN/api/reduce.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/region_yolo.hpp b/inference-engine/thirdparty/clDNN/api/region_yolo.hpp index a1c68d5931b1dc..f36b31fc96d798 100644 --- a/inference-engine/thirdparty/clDNN/api/region_yolo.hpp +++ b/inference-engine/thirdparty/clDNN/api/region_yolo.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/reorder.hpp b/inference-engine/thirdparty/clDNN/api/reorder.hpp index 0f88dd05d011a0..ab597d7de189ca 100644 --- a/inference-engine/thirdparty/clDNN/api/reorder.hpp +++ b/inference-engine/thirdparty/clDNN/api/reorder.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/reorg_yolo.hpp b/inference-engine/thirdparty/clDNN/api/reorg_yolo.hpp index e80790328c4529..1993cc13b88dbe 100644 --- a/inference-engine/thirdparty/clDNN/api/reorg_yolo.hpp +++ b/inference-engine/thirdparty/clDNN/api/reorg_yolo.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/resample.hpp b/inference-engine/thirdparty/clDNN/api/resample.hpp index e48d7e117fe842..ffeed3b0cf208a 100644 --- a/inference-engine/thirdparty/clDNN/api/resample.hpp +++ b/inference-engine/thirdparty/clDNN/api/resample.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -54,13 +42,13 @@ enum class shape_calculation_mode : int32_t { enum class coordinate_transformation_mode : int32_t { /// @brief the coordinate in the original tensor axis `x` is calculated as `((x_resized + 0.5) / scale[x]) - 0.5`. half_pixel, - /// @brief the coordinate in the original tensor axis `x` is calculated by `(x_resized + 0.5) / scale[x] - 0.5 if output_shape[x] > 1 else 0.0`. + /// @brief the coordinate in the original tensor axis `x` is calculated by `(x_resized + 0.5) / scale[x] - 0.5 if out_shape[x] > 1 else 0.0`. pytorch_half_pixel, /// @brief the coordinate in the original tensor axis `x` is calculated according to the formula `x_resized / scale[x]`. asymmetric, /// @brief the coordinate in the original tensor axis `x` is `(x_resized + 0.5) / scale[x]`. tf_half_pixel_for_nn, - /// @brief the coordinate in the original tensor axis `x` is calculated as `0 if output_shape[x] == 1 else x_resized * (input_shape[x] - 1) / (output_shape[x] - 1)`. + /// @brief the coordinate in the original tensor axis `x` is calculated as `0 if out_shape[x] == 1 else x_resized * (in_shape[x] - 1) / (out_shape[x] - 1)`. align_corners }; diff --git a/inference-engine/thirdparty/clDNN/api/reshape.hpp b/inference-engine/thirdparty/clDNN/api/reshape.hpp index 27444d938598b8..5c14fb68ad8d4d 100644 --- a/inference-engine/thirdparty/clDNN/api/reshape.hpp +++ b/inference-engine/thirdparty/clDNN/api/reshape.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/reverse_sequence.hpp b/inference-engine/thirdparty/clDNN/api/reverse_sequence.hpp index 43dc95c93c337f..c0007868b8a6d3 100644 --- a/inference-engine/thirdparty/clDNN/api/reverse_sequence.hpp +++ b/inference-engine/thirdparty/clDNN/api/reverse_sequence.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/roi_pooling.hpp b/inference-engine/thirdparty/clDNN/api/roi_pooling.hpp index 9ec992a34c657c..ef1e101e97cc0a 100644 --- a/inference-engine/thirdparty/clDNN/api/roi_pooling.hpp +++ b/inference-engine/thirdparty/clDNN/api/roi_pooling.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/scale.hpp b/inference-engine/thirdparty/clDNN/api/scale.hpp index 019c884c5878b4..1d8d3340061915 100644 --- a/inference-engine/thirdparty/clDNN/api/scale.hpp +++ b/inference-engine/thirdparty/clDNN/api/scale.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/scatter_elements_update.hpp b/inference-engine/thirdparty/clDNN/api/scatter_elements_update.hpp index 6fb11b6aca2ba8..e99a46ea2e2dc0 100644 --- a/inference-engine/thirdparty/clDNN/api/scatter_elements_update.hpp +++ b/inference-engine/thirdparty/clDNN/api/scatter_elements_update.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/scatter_nd_update.hpp b/inference-engine/thirdparty/clDNN/api/scatter_nd_update.hpp new file mode 100644 index 00000000000000..e36e2b373c2bbf --- /dev/null +++ b/inference-engine/thirdparty/clDNN/api/scatter_nd_update.hpp @@ -0,0 +1,42 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma once +#include "primitive.hpp" + +namespace cldnn { +/// @addtogroup cpp_api C++ API +/// @{ +/// @addtogroup cpp_topology Network Topology +/// @{ +/// @addtogroup cpp_primitives Primitives +/// @{ + +/// @brief +/// @details +struct scatter_nd_update : public primitive_base { + CLDNN_DECLARE_PRIMITIVE(scatter_nd_update) + + /// @brief Constructs scatter_nd_update primitive. + /// @param id This primitive id. + /// @param dict Input data primitive id. + /// @param idx Input indexes primitive id. + /// @param idupd Input updates primitive id. + /// @param indices_rank Rank of indices. + scatter_nd_update(const primitive_id& id, + const primitive_id& data, + const primitive_id& idx, + const primitive_id& idupd, + const size_t indices_rank, + const padding& output_padding = padding()) + : primitive_base(id, {data, idx, idupd}, output_padding), indices_rank(indices_rank) {} + + /// @brief ScatterNDUpdate indices_rank + size_t indices_rank; +}; +/// @} +/// @} +/// @} +} // namespace cldnn diff --git a/inference-engine/thirdparty/clDNN/api/scatter_update.hpp b/inference-engine/thirdparty/clDNN/api/scatter_update.hpp index d5f3684d2a28bc..a28063b8f4c558 100644 --- a/inference-engine/thirdparty/clDNN/api/scatter_update.hpp +++ b/inference-engine/thirdparty/clDNN/api/scatter_update.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/select.hpp b/inference-engine/thirdparty/clDNN/api/select.hpp index 032e098d16eb02..3527318626b141 100644 --- a/inference-engine/thirdparty/clDNN/api/select.hpp +++ b/inference-engine/thirdparty/clDNN/api/select.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/shuffle_channels.hpp b/inference-engine/thirdparty/clDNN/api/shuffle_channels.hpp index 15bd750aa50f40..8965a266fa51ee 100644 --- a/inference-engine/thirdparty/clDNN/api/shuffle_channels.hpp +++ b/inference-engine/thirdparty/clDNN/api/shuffle_channels.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/softmax.hpp b/inference-engine/thirdparty/clDNN/api/softmax.hpp index 64510acccbcfcf..984acd627336d2 100644 --- a/inference-engine/thirdparty/clDNN/api/softmax.hpp +++ b/inference-engine/thirdparty/clDNN/api/softmax.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/space_to_batch.hpp b/inference-engine/thirdparty/clDNN/api/space_to_batch.hpp index ba21e35e386886..bd10ed3e74cf69 100644 --- a/inference-engine/thirdparty/clDNN/api/space_to_batch.hpp +++ b/inference-engine/thirdparty/clDNN/api/space_to_batch.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/space_to_depth.hpp b/inference-engine/thirdparty/clDNN/api/space_to_depth.hpp index a4d6f747165546..1a7e6616ea46f1 100644 --- a/inference-engine/thirdparty/clDNN/api/space_to_depth.hpp +++ b/inference-engine/thirdparty/clDNN/api/space_to_depth.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/split.hpp b/inference-engine/thirdparty/clDNN/api/split.hpp index af7a9e72e8fc8a..cb69c2bad5d8a4 100644 --- a/inference-engine/thirdparty/clDNN/api/split.hpp +++ b/inference-engine/thirdparty/clDNN/api/split.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/strided_slice.hpp b/inference-engine/thirdparty/clDNN/api/strided_slice.hpp index ddc7d375cb9ab4..8d379d1e66bcec 100644 --- a/inference-engine/thirdparty/clDNN/api/strided_slice.hpp +++ b/inference-engine/thirdparty/clDNN/api/strided_slice.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/tensor.hpp b/inference-engine/thirdparty/clDNN/api/tensor.hpp index b8ce09b7de9ade..4bed1bcdb3a5d6 100644 --- a/inference-engine/thirdparty/clDNN/api/tensor.hpp +++ b/inference-engine/thirdparty/clDNN/api/tensor.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/tile.hpp b/inference-engine/thirdparty/clDNN/api/tile.hpp index f3ef64c659ecac..5cc8a7c005fc0e 100644 --- a/inference-engine/thirdparty/clDNN/api/tile.hpp +++ b/inference-engine/thirdparty/clDNN/api/tile.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api/topology.hpp b/inference-engine/thirdparty/clDNN/api/topology.hpp index ddfdcba2631abc..0af8cc7dc91924 100644 --- a/inference-engine/thirdparty/clDNN/api/topology.hpp +++ b/inference-engine/thirdparty/clDNN/api/topology.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api_extension/fused_conv_eltwise.hpp b/inference-engine/thirdparty/clDNN/api_extension/fused_conv_eltwise.hpp index deb9a3ec73d375..ff1c274fb1c945 100644 --- a/inference-engine/thirdparty/clDNN/api_extension/fused_conv_eltwise.hpp +++ b/inference-engine/thirdparty/clDNN/api_extension/fused_conv_eltwise.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_input.hpp b/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_input.hpp index 2ff48fffcfa063..1a3d0fb7bff92d 100644 --- a/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_input.hpp +++ b/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_input.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_timeloop.hpp b/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_timeloop.hpp index d30c397e41ac3a..5449c95b01b8d9 100644 --- a/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_timeloop.hpp +++ b/inference-engine/thirdparty/clDNN/api_extension/lstm_dynamic_timeloop.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/api_test_builds/CMakeLists.txt b/inference-engine/thirdparty/clDNN/api_test_builds/CMakeLists.txt index 34f9ae32a45d88..38772c1e8941c2 100644 --- a/inference-engine/thirdparty/clDNN/api_test_builds/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/api_test_builds/CMakeLists.txt @@ -1,17 +1,6 @@ -# Copyright (c) 2016 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# # =================================== Name / Output settings from parent =============================== diff --git a/inference-engine/thirdparty/clDNN/common/README.md b/inference-engine/thirdparty/clDNN/common/README.md new file mode 100644 index 00000000000000..b328c6169b87cc --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/README.md @@ -0,0 +1,5 @@ +OpenCL ICD Loader: https://github.com/KhronosGroup/OpenCL-ICD-Loader/commit/bbdf079426d859fb8a68c332b41b714f9c87d6ad + +OpenCL Headers: https://github.com/KhronosGroup/OpenCL-Headers/commit/18eaa39c9cfe1811037cc38c4dd44031e4ba8f63 + +OpenCL-CLHPP: https://github.com/KhronosGroup/OpenCL-CLHPP/commit/74fb49b83c1747fbd53276a7993a25dd6d50f0df diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl.h similarity index 91% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl.h index 32ae73fc52a68d..3a5aae48617376 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl.h @@ -1,29 +1,17 @@ /******************************************************************************* - * Copyright (c) 2008-2019 The Khronos Group Inc. + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + * 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. ******************************************************************************/ #ifndef __OPENCL_CL_H @@ -50,6 +38,7 @@ typedef struct _cl_sampler * cl_sampler; typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ typedef cl_ulong cl_bitfield; +typedef cl_ulong cl_properties; typedef cl_bitfield cl_device_type; typedef cl_uint cl_platform_info; typedef cl_uint cl_device_info; @@ -69,7 +58,7 @@ typedef cl_bitfield cl_device_affinity_domain; typedef intptr_t cl_context_properties; typedef cl_uint cl_context_info; #ifdef CL_VERSION_2_0 -typedef cl_bitfield cl_queue_properties; +typedef cl_properties cl_queue_properties; #endif typedef cl_uint cl_command_queue_info; typedef cl_uint cl_channel_order; @@ -116,9 +105,16 @@ typedef cl_uint cl_event_info; typedef cl_uint cl_command_type; typedef cl_uint cl_profiling_info; #ifdef CL_VERSION_2_0 -typedef cl_bitfield cl_sampler_properties; +typedef cl_properties cl_sampler_properties; typedef cl_uint cl_kernel_exec_info; #endif +#ifdef CL_VERSION_3_0 +typedef cl_bitfield cl_device_atomic_capabilities; +typedef cl_bitfield cl_device_device_enqueue_capabilities; +typedef cl_uint cl_khronos_vendor_id; +typedef cl_properties cl_mem_properties; +typedef cl_uint cl_version; +#endif typedef struct _cl_image_format { cl_channel_order image_channel_order; @@ -138,20 +134,28 @@ typedef struct _cl_image_desc { cl_uint num_mip_levels; cl_uint num_samples; #ifdef CL_VERSION_2_0 -#ifdef __GNUC__ - __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ +#if defined(__GNUC__) + __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ #endif -#ifdef _MSC_VER +#if defined(_MSC_VER) && !defined(__STDC__) #pragma warning( push ) -#pragma warning( disable : 4201 ) /* Prevents warning about nameless struct/union in /W4 /Za builds */ +#pragma warning( disable : 4201 ) /* Prevents warning about nameless struct/union in /W4 builds */ #endif +#if defined(_MSC_VER) && defined(__STDC__) + /* Anonymous unions are not supported in /Za builds */ +#else union { +#endif #endif cl_mem buffer; #ifdef CL_VERSION_2_0 +#if defined(_MSC_VER) && defined(__STDC__) + /* Anonymous unions are not supported in /Za builds */ +#else cl_mem mem_object; }; -#ifdef _MSC_VER +#endif +#if defined(_MSC_VER) && !defined(__STDC__) #pragma warning( pop ) #endif #endif @@ -168,6 +172,17 @@ typedef struct _cl_buffer_region { #endif +#ifdef CL_VERSION_3_0 + +#define CL_NAME_VERSION_MAX_NAME_SIZE 64 + +typedef struct _cl_name_version { + cl_version version; + char name[CL_NAME_VERSION_MAX_NAME_SIZE]; +} cl_name_version; + +#endif + /******************************************************************************/ /* Error Codes */ @@ -266,6 +281,10 @@ typedef struct _cl_buffer_region { #ifdef CL_VERSION_2_1 #define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 #endif +#ifdef CL_VERSION_3_0 +#define CL_PLATFORM_NUMERIC_VERSION 0x0906 +#define CL_PLATFORM_EXTENSIONS_WITH_VERSION 0x0907 +#endif /* cl_device_type - bitfield */ #define CL_DEVICE_TYPE_DEFAULT (1 << 0) @@ -385,6 +404,24 @@ typedef struct _cl_buffer_region { #define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C #define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D #endif +#ifdef CL_VERSION_3_0 +#define CL_DEVICE_NUMERIC_VERSION 0x105E +#define CL_DEVICE_EXTENSIONS_WITH_VERSION 0x1060 +#define CL_DEVICE_ILS_WITH_VERSION 0x1061 +#define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION 0x1062 +#define CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES 0x1063 +#define CL_DEVICE_ATOMIC_FENCE_CAPABILITIES 0x1064 +#define CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT 0x1065 +#define CL_DEVICE_OPENCL_C_ALL_VERSIONS 0x1066 +#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x1067 +#define CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT 0x1068 +#define CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT 0x1069 +/* 0x106A to 0x106E - Reserved for upcoming KHR extension */ +#define CL_DEVICE_OPENCL_C_FEATURES 0x106F +#define CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES 0x1070 +#define CL_DEVICE_PIPE_SUPPORT 0x1071 +#define CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED 0x1072 +#endif /* cl_device_fp_config - bitfield */ #define CL_FP_DENORM (1 << 0) @@ -478,6 +515,9 @@ typedef struct _cl_buffer_region { #ifdef CL_VERSION_2_1 #define CL_QUEUE_DEVICE_DEFAULT 0x1095 #endif +#ifdef CL_VERSION_3_0 +#define CL_QUEUE_PROPERTIES_ARRAY 0x1098 +#endif /* cl_mem_flags and cl_svm_mem_flags - bitfield */ #define CL_MEM_READ_WRITE (1 << 0) @@ -586,6 +626,9 @@ typedef struct _cl_buffer_region { #ifdef CL_VERSION_2_0 #define CL_MEM_USES_SVM_POINTER 0x1109 #endif +#ifdef CL_VERSION_3_0 +#define CL_MEM_PROPERTIES 0x110A +#endif /* cl_image_info */ #define CL_IMAGE_FORMAT 0x1110 @@ -602,12 +645,14 @@ typedef struct _cl_buffer_region { #define CL_IMAGE_NUM_SAMPLES 0x111A #endif -#ifdef CL_VERSION_2_0 /* cl_pipe_info */ +#ifdef CL_VERSION_2_0 #define CL_PIPE_PACKET_SIZE 0x1120 #define CL_PIPE_MAX_PACKETS 0x1121 - +#endif +#ifdef CL_VERSION_3_0 +#define CL_PIPE_PROPERTIES 0x1122 #endif /* cl_addressing_mode */ @@ -637,6 +682,9 @@ typedef struct _cl_buffer_region { #define CL_SAMPLER_LOD_MIN 0x1156 #define CL_SAMPLER_LOD_MAX 0x1157 #endif +#ifdef CL_VERSION_3_0 +#define CL_SAMPLER_PROPERTIES 0x1158 +#endif /* cl_map_flags - bitfield */ #define CL_MAP_READ (1 << 0) @@ -701,10 +749,6 @@ typedef struct _cl_buffer_region { #ifdef CL_VERSION_1_2 #define CL_KERNEL_ATTRIBUTES 0x1195 #endif -#ifdef CL_VERSION_2_1 -#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 -#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA -#endif #ifdef CL_VERSION_1_2 @@ -766,6 +810,8 @@ typedef struct _cl_buffer_region { #define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 #define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 #define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 +#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 +#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA #endif @@ -823,6 +869,9 @@ typedef struct _cl_buffer_region { #define CL_COMMAND_SVM_MAP 0x120C #define CL_COMMAND_SVM_UNMAP 0x120D #endif +#ifdef CL_VERSION_3_0 +#define CL_COMMAND_SVM_MIGRATE_MEM 0x120E +#endif /* command execution status */ #define CL_COMPLETE 0x0 @@ -830,11 +879,9 @@ typedef struct _cl_buffer_region { #define CL_SUBMITTED 0x2 #define CL_QUEUED 0x3 -#ifdef CL_VERSION_1_1 - /* cl_buffer_create_type */ +#ifdef CL_VERSION_1_1 #define CL_BUFFER_CREATE_TYPE_REGION 0x1220 - #endif /* cl_profiling_info */ @@ -846,6 +893,53 @@ typedef struct _cl_buffer_region { #define CL_PROFILING_COMMAND_COMPLETE 0x1284 #endif +/* cl_device_atomic_capabilities - bitfield */ +#ifdef CL_VERSION_3_0 +#define CL_DEVICE_ATOMIC_ORDER_RELAXED (1 << 0) +#define CL_DEVICE_ATOMIC_ORDER_ACQ_REL (1 << 1) +#define CL_DEVICE_ATOMIC_ORDER_SEQ_CST (1 << 2) +#define CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM (1 << 3) +#define CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP (1 << 4) +#define CL_DEVICE_ATOMIC_SCOPE_DEVICE (1 << 5) +#define CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES (1 << 6) +#endif + +/* cl_device_device_enqueue_capabilities - bitfield */ +#ifdef CL_VERSION_3_0 +#define CL_DEVICE_QUEUE_SUPPORTED (1 << 0) +#define CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT (1 << 1) +#endif + +/* cl_khronos_vendor_id */ +#define CL_KHRONOS_VENDOR_ID_CODEPLAY 0x10004 + +#ifdef CL_VERSION_3_0 + +/* cl_version */ +#define CL_VERSION_MAJOR_BITS (10) +#define CL_VERSION_MINOR_BITS (10) +#define CL_VERSION_PATCH_BITS (12) + +#define CL_VERSION_MAJOR_MASK ((1 << CL_VERSION_MAJOR_BITS) - 1) +#define CL_VERSION_MINOR_MASK ((1 << CL_VERSION_MINOR_BITS) - 1) +#define CL_VERSION_PATCH_MASK ((1 << CL_VERSION_PATCH_BITS) - 1) + +#define CL_VERSION_MAJOR(version) \ + ((version) >> (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS)) + +#define CL_VERSION_MINOR(version) \ + (((version) >> CL_VERSION_PATCH_BITS) & CL_VERSION_MINOR_MASK) + +#define CL_VERSION_PATCH(version) ((version) & CL_VERSION_PATCH_MASK) + +#define CL_MAKE_VERSION(major, minor, patch) \ + ((((major) & CL_VERSION_MAJOR_MASK) \ + << (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS)) | \ + (((minor) & CL_VERSION_MINOR_MASK) << CL_VERSION_PATCH_BITS) | \ + ((patch) & CL_VERSION_PATCH_MASK)) + +#endif + /********************************************************************************************************/ /* Platform API */ @@ -946,6 +1040,16 @@ clGetContextInfo(cl_context context, void * param_value, size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +#ifdef CL_VERSION_3_0 + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetContextDestructorCallback(cl_context context, + void (CL_CALLBACK* pfn_notify)(cl_context context, + void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_3_0; + +#endif + /* Command Queue APIs */ #ifdef CL_VERSION_2_0 @@ -1014,6 +1118,27 @@ clCreatePipe(cl_context context, #endif +#ifdef CL_VERSION_3_0 + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateBufferWithProperties(cl_context context, + const cl_mem_properties * properties, + cl_mem_flags flags, + size_t size, + void * host_ptr, + cl_int * errcode_ret) CL_API_SUFFIX__VERSION_3_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateImageWithProperties(cl_context context, + const cl_mem_properties * properties, + cl_mem_flags flags, + const cl_image_format * image_format, + const cl_image_desc * image_desc, + void * host_ptr, + cl_int * errcode_ret) CL_API_SUFFIX__VERSION_3_0; + +#endif + extern CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; @@ -1186,11 +1311,11 @@ clLinkProgram(cl_context context, #ifdef CL_VERSION_2_2 -extern CL_API_ENTRY cl_int CL_API_CALL +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_2_2_DEPRECATED cl_int CL_API_CALL clSetProgramReleaseCallback(cl_program program, void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_2_2; + void * user_data) CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED; extern CL_API_ENTRY cl_int CL_API_CALL clSetProgramSpecializationConstant(cl_program program, @@ -1385,8 +1510,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBufferRect(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - const size_t * buffer_offset, - const size_t * host_offset, + const size_t * buffer_origin, + const size_t * host_origin, const size_t * region, size_t buffer_row_pitch, size_t buffer_slice_pitch, @@ -1416,8 +1541,8 @@ extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBufferRect(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, - const size_t * buffer_offset, - const size_t * host_offset, + const size_t * buffer_origin, + const size_t * host_origin, const size_t * region, size_t buffer_row_pitch, size_t buffer_slice_pitch, diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl2.hpp b/inference-engine/thirdparty/clDNN/common/include/CL/cl2.hpp new file mode 100644 index 00000000000000..a332962a8fd9f2 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl2.hpp @@ -0,0 +1,18 @@ +// +// Copyright (c) 2020 The Khronos Group Inc. +// +// 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. +// + +#include +#pragma message("cl2.hpp has been renamed to opencl.hpp to make it clear that it supports all versions of OpenCL. Please include opencl.hpp directly.") diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_d3d10.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_d3d10.h similarity index 70% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_d3d10.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_d3d10.h index d5960a43f72123..2b80d90cb55684 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_d3d10.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_d3d10.h @@ -1,37 +1,34 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ + * 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. + ******************************************************************************/ #ifndef __OPENCL_CL_D3D10_H #define __OPENCL_CL_D3D10_H +#if defined(_MSC_VER) +#if _MSC_VER >=1500 +#pragma warning( push ) +#pragma warning( disable : 4201 ) +#endif +#endif #include +#if defined(_MSC_VER) +#if _MSC_VER >=1500 +#pragma warning( pop ) +#endif +#endif #include #include diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_d3d11.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_d3d11.h similarity index 70% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_d3d11.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_d3d11.h index 39f9072398a29a..10023dde0e3715 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_d3d11.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_d3d11.h @@ -1,37 +1,34 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ + * 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. + ******************************************************************************/ #ifndef __OPENCL_CL_D3D11_H #define __OPENCL_CL_D3D11_H +#if defined(_MSC_VER) +#if _MSC_VER >=1500 +#pragma warning( push ) +#pragma warning( disable : 4201 ) +#endif +#endif #include +#if defined(_MSC_VER) +#if _MSC_VER >=1500 +#pragma warning( pop ) +#endif +#endif #include #include diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_dx9_media_sharing_intel.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_dx9_media_sharing.h similarity index 54% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_dx9_media_sharing_intel.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_dx9_media_sharing.h index 737e6856490707..4e64b1893e6fa2 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_dx9_media_sharing_intel.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_dx9_media_sharing.h @@ -1,67 +1,114 @@ -/********************************************************************************** - * Copyright (c) 2008-2019 The Khronos Group Inc. +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ -/*****************************************************************************\ + * 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. + ******************************************************************************/ -Copyright (c) 2013-2019 Intel Corporation All Rights Reserved. +#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_H +#define __OPENCL_CL_DX9_MEDIA_SHARING_H -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include +#include -File Name: cl_dx9_media_sharing_intel.h +#ifdef __cplusplus +extern "C" { +#endif -Abstract: +/******************************************************************************/ +/* cl_khr_dx9_media_sharing */ +#define cl_khr_dx9_media_sharing 1 -Notes: +typedef cl_uint cl_dx9_media_adapter_type_khr; +typedef cl_uint cl_dx9_media_adapter_set_khr; + +#if defined(_WIN32) +#include +typedef struct _cl_dx9_surface_info_khr +{ + IDirect3DSurface9 *resource; + HANDLE shared_handle; +} cl_dx9_surface_info_khr; +#endif -\*****************************************************************************/ -#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H -#define __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H +/******************************************************************************/ -#include -#include -#include -#include -#include -#include +/* Error Codes */ +#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 +#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 +#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 +#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 -#ifdef __cplusplus -extern "C" { -#endif +/* cl_media_adapter_type_khr */ +#define CL_ADAPTER_D3D9_KHR 0x2020 +#define CL_ADAPTER_D3D9EX_KHR 0x2021 +#define CL_ADAPTER_DXVA_KHR 0x2022 + +/* cl_media_adapter_set_khr */ +#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 +#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 + +/* cl_context_info */ +#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 +#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 +#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 + +/* cl_mem_info */ +#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 +#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 + +/* cl_image_info */ +#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A + +/* cl_command_type */ +#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B +#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C + +/******************************************************************************/ + +typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( + cl_platform_id platform, + cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr * media_adapter_type, + void * media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, + cl_uint num_entries, + cl_device_id * devices, + cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( + cl_context context, + cl_mem_flags flags, + cl_dx9_media_adapter_type_khr adapter_type, + void * surface_info, + cl_uint plane, + cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, + cl_uint num_objects, + const cl_mem * mem_objects, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, + cl_uint num_objects, + const cl_mem * mem_objects, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_API_SUFFIX__VERSION_1_2; /*************************************** * cl_intel_dx9_media_sharing extension * @@ -178,5 +225,5 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9ObjectsINTEL_fn)( } #endif -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H */ +#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl_dx9_media_sharing_intel.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_dx9_media_sharing_intel.h new file mode 100644 index 00000000000000..f6518d7f632227 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_dx9_media_sharing_intel.h @@ -0,0 +1,18 @@ +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. + * + * 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. + ******************************************************************************/ + +#include +#pragma message("The Intel DX9 media sharing extensions have been moved into cl_dx9_media_sharing.h. Please include cl_dx9_media_sharing.h directly.") diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_egl.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_egl.h similarity index 73% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_egl.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_egl.h index bc4d998eb3e94a..c8bde80e15d1a2 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_egl.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_egl.h @@ -1,29 +1,17 @@ /******************************************************************************* - * Copyright (c) 2008-2019 The Khronos Group Inc. + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + * 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. ******************************************************************************/ #ifndef __OPENCL_CL_EGL_H diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl_ext.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_ext.h new file mode 100644 index 00000000000000..47730612572d0a --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_ext.h @@ -0,0 +1,1620 @@ +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. + * + * 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. + ******************************************************************************/ + +/* cl_ext.h contains OpenCL extensions which don't have external */ +/* (OpenGL, D3D) dependencies. */ + +#ifndef __CL_EXT_H +#define __CL_EXT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* cl_khr_fp64 extension - no extension #define since it has no functions */ +/* CL_DEVICE_DOUBLE_FP_CONFIG is defined in CL.h for OpenCL >= 120 */ + +#if CL_TARGET_OPENCL_VERSION <= 110 +#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 +#endif + +/* cl_khr_fp16 extension - no extension #define since it has no functions */ +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 + +/* Memory object destruction + * + * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR + * + * Registers a user callback function that will be called when the memory object is deleted and its resources + * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback + * stack associated with memobj. The registered user callback functions are called in the reverse order in + * which they were registered. The user callback functions are called and then the memory object is deleted + * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be + * notified when the memory referenced by host_ptr, specified when the memory object is created and used as + * the storage bits for the memory object, can be reused or freed. + * + * The application may not call CL api's with the cl_mem object passed to the pfn_notify. + * + * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) + * before using. + */ +#define cl_APPLE_SetMemObjectDestructor 1 +cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem memobj, + void (* pfn_notify)(cl_mem memobj, void * user_data), + void * user_data) CL_EXT_SUFFIX__VERSION_1_0; + + +/* Context Logging Functions + * + * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). + * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) + * before using. + * + * clLogMessagesToSystemLog forwards on all log messages to the Apple System Logger + */ +#define cl_APPLE_ContextLoggingFunctions 1 +extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * errstr, + const void * private_info, + size_t cb, + void * user_data) CL_EXT_SUFFIX__VERSION_1_0; + +/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ +extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * errstr, + const void * private_info, + size_t cb, + void * user_data) CL_EXT_SUFFIX__VERSION_1_0; + +/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ +extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * errstr, + const void * private_info, + size_t cb, + void * user_data) CL_EXT_SUFFIX__VERSION_1_0; + + +/************************ +* cl_khr_icd extension * +************************/ +#define cl_khr_icd 1 + +/* cl_platform_info */ +#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 + +/* Additional Error Codes */ +#define CL_PLATFORM_NOT_FOUND_KHR -1001 + +extern CL_API_ENTRY cl_int CL_API_CALL +clIcdGetPlatformIDsKHR(cl_uint num_entries, + cl_platform_id * platforms, + cl_uint * num_platforms); + +typedef CL_API_ENTRY cl_int +(CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(cl_uint num_entries, + cl_platform_id * platforms, + cl_uint * num_platforms); + + +/******************************* + * cl_khr_il_program extension * + *******************************/ +#define cl_khr_il_program 1 + +/* New property to clGetDeviceInfo for retrieving supported intermediate + * languages + */ +#define CL_DEVICE_IL_VERSION_KHR 0x105B + +/* New property to clGetProgramInfo for retrieving for retrieving the IL of a + * program + */ +#define CL_PROGRAM_IL_KHR 0x1169 + +extern CL_API_ENTRY cl_program CL_API_CALL +clCreateProgramWithILKHR(cl_context context, + const void * il, + size_t length, + cl_int * errcode_ret); + +typedef CL_API_ENTRY cl_program +(CL_API_CALL *clCreateProgramWithILKHR_fn)(cl_context context, + const void * il, + size_t length, + cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; + +/* Extension: cl_khr_image2d_from_buffer + * + * This extension allows a 2D image to be created from a cl_mem buffer without + * a copy. The type associated with a 2D image created from a buffer in an + * OpenCL program is image2d_t. Both the sampler and sampler-less read_image + * built-in functions are supported for 2D images and 2D images created from + * a buffer. Similarly, the write_image built-ins are also supported for 2D + * images created from a buffer. + * + * When the 2D image from buffer is created, the client must specify the + * width, height, image format (i.e. channel order and channel data type) + * and optionally the row pitch. + * + * The pitch specified must be a multiple of + * CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR pixels. + * The base address of the buffer must be aligned to + * CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR pixels. + */ + +#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A +#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B + + +/************************************** + * cl_khr_initialize_memory extension * + **************************************/ + +#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 + + +/************************************** + * cl_khr_terminate_context extension * + **************************************/ + +#define CL_CONTEXT_TERMINATED_KHR -1121 + +#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 +#define CL_CONTEXT_TERMINATE_KHR 0x2032 + +#define cl_khr_terminate_context 1 +extern CL_API_ENTRY cl_int CL_API_CALL +clTerminateContextKHR(cl_context context) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL *clTerminateContextKHR_fn)(cl_context context) CL_EXT_SUFFIX__VERSION_1_2; + + +/* + * Extension: cl_khr_spir + * + * This extension adds support to create an OpenCL program object from a + * Standard Portable Intermediate Representation (SPIR) instance + */ + +#define CL_DEVICE_SPIR_VERSIONS 0x40E0 +#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 + + +/***************************************** + * cl_khr_create_command_queue extension * + *****************************************/ +#define cl_khr_create_command_queue 1 + +typedef cl_properties cl_queue_properties_khr; + +extern CL_API_ENTRY cl_command_queue CL_API_CALL +clCreateCommandQueueWithPropertiesKHR(cl_context context, + cl_device_id device, + const cl_queue_properties_khr* properties, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_command_queue +(CL_API_CALL *clCreateCommandQueueWithPropertiesKHR_fn)(cl_context context, + cl_device_id device, + const cl_queue_properties_khr* properties, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; + + +/****************************************** +* cl_nv_device_attribute_query extension * +******************************************/ + +/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ +#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 +#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 +#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 +#define CL_DEVICE_WARP_SIZE_NV 0x4003 +#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 +#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 +#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 + + +/********************************* +* cl_amd_device_attribute_query * +*********************************/ + +#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 +#define CL_DEVICE_TOPOLOGY_AMD 0x4037 +#define CL_DEVICE_BOARD_NAME_AMD 0x4038 +#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 +#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 +#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 +#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 +#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 +#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 +#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 +#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046 +#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 +#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 +#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 +#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A +#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B +#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C +#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 +#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 +#define CL_DEVICE_PCIE_ID_AMD 0x4034 + + +/********************************* +* cl_arm_printf extension +*********************************/ + +#define CL_PRINTF_CALLBACK_ARM 0x40B0 +#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 + + +/*********************************** +* cl_ext_device_fission extension +***********************************/ +#define cl_ext_device_fission 1 + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL *clReleaseDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL *clRetainDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; + +typedef cl_ulong cl_device_partition_property_ext; +extern CL_API_ENTRY cl_int CL_API_CALL +clCreateSubDevicesEXT(cl_device_id in_device, + const cl_device_partition_property_ext * properties, + cl_uint num_entries, + cl_device_id * out_devices, + cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clCreateSubDevicesEXT_fn)(cl_device_id in_device, + const cl_device_partition_property_ext * properties, + cl_uint num_entries, + cl_device_id * out_devices, + cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1; + +/* cl_device_partition_property_ext */ +#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 +#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 +#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 + +/* clDeviceGetInfo selectors */ +#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 +#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 +#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 +#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 +#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 + +/* error codes */ +#define CL_DEVICE_PARTITION_FAILED_EXT -1057 +#define CL_INVALID_PARTITION_COUNT_EXT -1058 +#define CL_INVALID_PARTITION_NAME_EXT -1059 + +/* CL_AFFINITY_DOMAINs */ +#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 +#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 +#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 +#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 +#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 +#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 + +/* cl_device_partition_property_ext list terminators */ +#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) +#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) +#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) + + +/*********************************** + * cl_ext_migrate_memobject extension definitions + ***********************************/ +#define cl_ext_migrate_memobject 1 + +typedef cl_bitfield cl_mem_migration_flags_ext; + +#define CL_MIGRATE_MEM_OBJECT_HOST_EXT 0x1 + +#define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040 + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueMigrateMemObjectEXT(cl_command_queue command_queue, + cl_uint num_mem_objects, + const cl_mem * mem_objects, + cl_mem_migration_flags_ext flags, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event); + +typedef CL_API_ENTRY cl_int +(CL_API_CALL *clEnqueueMigrateMemObjectEXT_fn)(cl_command_queue command_queue, + cl_uint num_mem_objects, + const cl_mem * mem_objects, + cl_mem_migration_flags_ext flags, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event); + + +/********************************* +* cl_ext_cxx_for_opencl extension +*********************************/ +#define cl_ext_cxx_for_opencl 1 + +#define CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT 0x4230 + +/********************************* +* cl_qcom_ext_host_ptr extension +*********************************/ +#define cl_qcom_ext_host_ptr 1 + +#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) + +#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 +#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 +#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 +#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 +#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 +#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 +#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 +#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 + +typedef cl_uint cl_image_pitch_info_qcom; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetDeviceImageInfoQCOM(cl_device_id device, + size_t image_width, + size_t image_height, + const cl_image_format *image_format, + cl_image_pitch_info_qcom param_name, + size_t param_value_size, + void *param_value, + size_t *param_value_size_ret); + +typedef struct _cl_mem_ext_host_ptr +{ + /* Type of external memory allocation. */ + /* Legal values will be defined in layered extensions. */ + cl_uint allocation_type; + + /* Host cache policy for this external memory allocation. */ + cl_uint host_cache_policy; + +} cl_mem_ext_host_ptr; + + +/******************************************* +* cl_qcom_ext_host_ptr_iocoherent extension +********************************************/ + +/* Cache policy specifying io-coherence */ +#define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9 + + +/********************************* +* cl_qcom_ion_host_ptr extension +*********************************/ + +#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 + +typedef struct _cl_mem_ion_host_ptr +{ + /* Type of external memory allocation. */ + /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ + cl_mem_ext_host_ptr ext_host_ptr; + + /* ION file descriptor */ + int ion_filedesc; + + /* Host pointer to the ION allocated memory */ + void* ion_hostptr; + +} cl_mem_ion_host_ptr; + + +/********************************* +* cl_qcom_android_native_buffer_host_ptr extension +*********************************/ + +#define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM 0x40C6 + +typedef struct _cl_mem_android_native_buffer_host_ptr +{ + /* Type of external memory allocation. */ + /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */ + cl_mem_ext_host_ptr ext_host_ptr; + + /* Virtual pointer to the android native buffer */ + void* anb_ptr; + +} cl_mem_android_native_buffer_host_ptr; + + +/****************************************** + * cl_img_yuv_image extension * + ******************************************/ + +/* Image formats used in clCreateImage */ +#define CL_NV21_IMG 0x40D0 +#define CL_YV12_IMG 0x40D1 + + +/****************************************** + * cl_img_cached_allocations extension * + ******************************************/ + +/* Flag values used by clCreateBuffer */ +#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) +#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) + + +/****************************************** + * cl_img_use_gralloc_ptr extension * + ******************************************/ +#define cl_img_use_gralloc_ptr 1 + +/* Flag values used by clCreateBuffer */ +#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) + +/* To be used by clGetEventInfo: */ +#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 +#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 + +/* Error codes from clEnqueueAcquireGrallocObjectsIMG and clEnqueueReleaseGrallocObjectsIMG */ +#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 +#define CL_INVALID_GRALLOC_OBJECT_IMG 0x40D5 + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueAcquireGrallocObjectsIMG(cl_command_queue command_queue, + cl_uint num_objects, + const cl_mem * mem_objects, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueReleaseGrallocObjectsIMG(cl_command_queue command_queue, + cl_uint num_objects, + const cl_mem * mem_objects, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; + +/****************************************** + * cl_img_generate_mipmap extension * + ******************************************/ +#define cl_img_generate_mipmap 1 + +typedef cl_uint cl_mipmap_filter_mode_img; + +/* To be used by clEnqueueGenerateMipmapIMG */ +#define CL_MIPMAP_FILTER_ANY_IMG 0x0 +#define CL_MIPMAP_FILTER_BOX_IMG 0x1 + +/* To be used by clGetEventInfo */ +#define CL_COMMAND_GENERATE_MIPMAP_IMG 0x40D6 + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueGenerateMipmapIMG(cl_command_queue command_queue, + cl_mem src_image, + cl_mem dst_image, + cl_mipmap_filter_mode_img mipmap_filter_mode, + const size_t *array_region, + const size_t *mip_region, + cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_EXT_SUFFIX__VERSION_1_2; + +/****************************************** + * cl_img_mem_properties extension * + ******************************************/ +#define cl_img_mem_properties 1 + +/* To be used by clCreateBufferWithProperties */ +#define CL_MEM_ALLOC_FLAGS_IMG 0x40D7 + +/* To be used wiith the CL_MEM_ALLOC_FLAGS_IMG property */ +typedef cl_bitfield cl_mem_alloc_flags_img; + +/* To be used with cl_mem_alloc_flags_img */ +#define CL_MEM_ALLOC_RELAX_REQUIREMENTS_IMG (1 << 0) + +/********************************* +* cl_khr_subgroups extension +*********************************/ +#define cl_khr_subgroups 1 + +#if !defined(CL_VERSION_2_1) +/* For OpenCL 2.1 and newer, cl_kernel_sub_group_info is declared in CL.h. + In hindsight, there should have been a khr suffix on this type for + the extension, but keeping it un-suffixed to maintain backwards + compatibility. */ +typedef cl_uint cl_kernel_sub_group_info; +#endif + +/* cl_kernel_sub_group_info */ +#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 +#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetKernelSubGroupInfoKHR(cl_kernel in_kernel, + cl_device_id in_device, + cl_kernel_sub_group_info param_name, + size_t input_value_size, + const void * input_value, + size_t param_value_size, + void * param_value, + size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; + +typedef CL_API_ENTRY cl_int +(CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel in_kernel, + cl_device_id in_device, + cl_kernel_sub_group_info param_name, + size_t input_value_size, + const void * input_value, + size_t param_value_size, + void * param_value, + size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; + + +/********************************* +* cl_khr_mipmap_image extension +*********************************/ + +/* cl_sampler_properties */ +#define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155 +#define CL_SAMPLER_LOD_MIN_KHR 0x1156 +#define CL_SAMPLER_LOD_MAX_KHR 0x1157 + + +/********************************* +* cl_khr_priority_hints extension +*********************************/ +/* This extension define is for backwards compatibility. + It shouldn't be required since this extension has no new functions. */ +#define cl_khr_priority_hints 1 + +typedef cl_uint cl_queue_priority_khr; + +/* cl_command_queue_properties */ +#define CL_QUEUE_PRIORITY_KHR 0x1096 + +/* cl_queue_priority_khr */ +#define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0) +#define CL_QUEUE_PRIORITY_MED_KHR (1<<1) +#define CL_QUEUE_PRIORITY_LOW_KHR (1<<2) + + +/********************************* +* cl_khr_throttle_hints extension +*********************************/ +/* This extension define is for backwards compatibility. + It shouldn't be required since this extension has no new functions. */ +#define cl_khr_throttle_hints 1 + +typedef cl_uint cl_queue_throttle_khr; + +/* cl_command_queue_properties */ +#define CL_QUEUE_THROTTLE_KHR 0x1097 + +/* cl_queue_throttle_khr */ +#define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0) +#define CL_QUEUE_THROTTLE_MED_KHR (1<<1) +#define CL_QUEUE_THROTTLE_LOW_KHR (1<<2) + + +/********************************* +* cl_khr_subgroup_named_barrier +*********************************/ +/* This extension define is for backwards compatibility. + It shouldn't be required since this extension has no new functions. */ +#define cl_khr_subgroup_named_barrier 1 + +/* cl_device_info */ +#define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035 + + +/********************************* +* cl_khr_extended_versioning +*********************************/ + +#define cl_khr_extended_versioning 1 + +#define CL_VERSION_MAJOR_BITS_KHR (10) +#define CL_VERSION_MINOR_BITS_KHR (10) +#define CL_VERSION_PATCH_BITS_KHR (12) + +#define CL_VERSION_MAJOR_MASK_KHR ((1 << CL_VERSION_MAJOR_BITS_KHR) - 1) +#define CL_VERSION_MINOR_MASK_KHR ((1 << CL_VERSION_MINOR_BITS_KHR) - 1) +#define CL_VERSION_PATCH_MASK_KHR ((1 << CL_VERSION_PATCH_BITS_KHR) - 1) + +#define CL_VERSION_MAJOR_KHR(version) ((version) >> (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) +#define CL_VERSION_MINOR_KHR(version) (((version) >> CL_VERSION_PATCH_BITS_KHR) & CL_VERSION_MINOR_MASK_KHR) +#define CL_VERSION_PATCH_KHR(version) ((version) & CL_VERSION_PATCH_MASK_KHR) + +#define CL_MAKE_VERSION_KHR(major, minor, patch) \ + ((((major) & CL_VERSION_MAJOR_MASK_KHR) << (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) | \ + (((minor) & CL_VERSION_MINOR_MASK_KHR) << CL_VERSION_PATCH_BITS_KHR) | \ + ((patch) & CL_VERSION_PATCH_MASK_KHR)) + +typedef cl_uint cl_version_khr; + +#define CL_NAME_VERSION_MAX_NAME_SIZE_KHR 64 + +typedef struct _cl_name_version_khr +{ + cl_version_khr version; + char name[CL_NAME_VERSION_MAX_NAME_SIZE_KHR]; +} cl_name_version_khr; + +/* cl_platform_info */ +#define CL_PLATFORM_NUMERIC_VERSION_KHR 0x0906 +#define CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR 0x0907 + +/* cl_device_info */ +#define CL_DEVICE_NUMERIC_VERSION_KHR 0x105E +#define CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR 0x105F +#define CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR 0x1060 +#define CL_DEVICE_ILS_WITH_VERSION_KHR 0x1061 +#define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR 0x1062 + + +/********************************* +* cl_khr_device_uuid extension +*********************************/ +#define cl_khr_device_uuid 1 + +#define CL_UUID_SIZE_KHR 16 +#define CL_LUID_SIZE_KHR 8 + +#define CL_DEVICE_UUID_KHR 0x106A +#define CL_DRIVER_UUID_KHR 0x106B +#define CL_DEVICE_LUID_VALID_KHR 0x106C +#define CL_DEVICE_LUID_KHR 0x106D +#define CL_DEVICE_NODE_MASK_KHR 0x106E + + +/********************************** + * cl_arm_import_memory extension * + **********************************/ +#define cl_arm_import_memory 1 + +typedef intptr_t cl_import_properties_arm; + +/* Default and valid proporties name for cl_arm_import_memory */ +#define CL_IMPORT_TYPE_ARM 0x40B2 + +/* Host process memory type default value for CL_IMPORT_TYPE_ARM property */ +#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 + +/* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ +#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 + +/* Protected memory property */ +#define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5 + +/* Android hardware buffer type value for CL_IMPORT_TYPE_ARM property */ +#define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2 + +/* Data consistency with host property */ +#define CL_IMPORT_DMA_BUF_DATA_CONSISTENCY_WITH_HOST_ARM 0x41E3 + +/* Import memory size value to indicate a size for the whole buffer */ +#define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM SIZE_MAX + +/* This extension adds a new function that allows for direct memory import into + * OpenCL via the clImportMemoryARM function. + * + * Memory imported through this interface will be mapped into the device's page + * tables directly, providing zero copy access. It will never fall back to copy + * operations and aliased buffers. + * + * Types of memory supported for import are specified as additional extension + * strings. + * + * This extension produces cl_mem allocations which are compatible with all other + * users of cl_mem in the standard API. + * + * This extension maps pages with the same properties as the normal buffer creation + * function clCreateBuffer. + */ +extern CL_API_ENTRY cl_mem CL_API_CALL +clImportMemoryARM( cl_context context, + cl_mem_flags flags, + const cl_import_properties_arm *properties, + void *memory, + size_t size, + cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; + + +/****************************************** + * cl_arm_shared_virtual_memory extension * + ******************************************/ +#define cl_arm_shared_virtual_memory 1 + +/* Used by clGetDeviceInfo */ +#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 + +/* Used by clGetMemObjectInfo */ +#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 + +/* Used by clSetKernelExecInfoARM: */ +#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 + +/* To be used by clGetEventInfo: */ +#define CL_COMMAND_SVM_FREE_ARM 0x40BA +#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB +#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC +#define CL_COMMAND_SVM_MAP_ARM 0x40BD +#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE + +/* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */ +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) + +/* Flag values used by clSVMAllocARM: */ +#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) +#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) + +typedef cl_bitfield cl_svm_mem_flags_arm; +typedef cl_uint cl_kernel_exec_info_arm; +typedef cl_bitfield cl_device_svm_capabilities_arm; + +extern CL_API_ENTRY void * CL_API_CALL +clSVMAllocARM(cl_context context, + cl_svm_mem_flags_arm flags, + size_t size, + cl_uint alignment) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY void CL_API_CALL +clSVMFreeARM(cl_context context, + void * svm_pointer) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMFreeARM(cl_command_queue command_queue, + cl_uint num_svm_pointers, + void * svm_pointers[], + void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue, + cl_uint num_svm_pointers, + void * svm_pointers[], + void * user_data), + void * user_data, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMMemcpyARM(cl_command_queue command_queue, + cl_bool blocking_copy, + void * dst_ptr, + const void * src_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMMemFillARM(cl_command_queue command_queue, + void * svm_ptr, + const void * pattern, + size_t pattern_size, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMMapARM(cl_command_queue command_queue, + cl_bool blocking_map, + cl_map_flags flags, + void * svm_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMUnmapARM(cl_command_queue command_queue, + void * svm_ptr, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetKernelArgSVMPointerARM(cl_kernel kernel, + cl_uint arg_index, + const void * arg_value) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetKernelExecInfoARM(cl_kernel kernel, + cl_kernel_exec_info_arm param_name, + size_t param_value_size, + const void * param_value) CL_EXT_SUFFIX__VERSION_1_2; + +/******************************** + * cl_arm_get_core_id extension * + ********************************/ + +#ifdef CL_VERSION_1_2 + +#define cl_arm_get_core_id 1 + +/* Device info property for bitfield of cores present */ +#define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF + +#endif /* CL_VERSION_1_2 */ + +/********************************* +* cl_arm_job_slot_selection +*********************************/ + +#define cl_arm_job_slot_selection 1 + +/* cl_device_info */ +#define CL_DEVICE_JOB_SLOTS_ARM 0x41E0 + +/* cl_command_queue_properties */ +#define CL_QUEUE_JOB_SLOT_ARM 0x41E1 + +/********************************* +* cl_arm_scheduling_controls +*********************************/ + +#define cl_arm_scheduling_controls 1 + +typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm; + +/* cl_device_info */ +#define CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM 0x41E4 + +#define CL_DEVICE_SCHEDULING_KERNEL_BATCHING_ARM (1 << 0) +#define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_ARM (1 << 1) +#define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_MODIFIER_ARM (1 << 2) +#define CL_DEVICE_SCHEDULING_DEFERRED_FLUSH_ARM (1 << 3) +#define CL_DEVICE_SCHEDULING_REGISTER_ALLOCATION_ARM (1 << 4) + +#define CL_DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM 0x41EB + +/* cl_kernel_info */ +#define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM 0x41E5 +#define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM 0x41E6 + +/* cl_queue_properties */ +#define CL_QUEUE_KERNEL_BATCHING_ARM 0x41E7 +#define CL_QUEUE_DEFERRED_FLUSH_ARM 0x41EC + +/************************************** +* cl_arm_controlled_kernel_termination +***************************************/ + +#define cl_arm_controlled_kernel_termination 1 + +/* Error code to indicate kernel terminated with failure */ +#define CL_COMMAND_TERMINATED_ITSELF_WITH_FAILURE_ARM -1108 + +/* cl_device_info */ +#define CL_DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM 0x41EE + +/* Bit fields for controlled termination feature query */ +typedef cl_bitfield cl_device_controlled_termination_capabilities_arm; + +#define CL_DEVICE_CONTROLLED_TERMINATION_SUCCESS_ARM (1 << 0) +#define CL_DEVICE_CONTROLLED_TERMINATION_FAILURE_ARM (1 << 1) +#define CL_DEVICE_CONTROLLED_TERMINATION_QUERY_ARM (1 << 2) + +/* cl_event_info */ +#define CL_EVENT_COMMAND_TERMINATION_REASON_ARM 0x41ED + +/* Values returned for event termination reason query */ +typedef cl_uint cl_command_termination_reason_arm; + +#define CL_COMMAND_TERMINATION_COMPLETION_ARM 0 +#define CL_COMMAND_TERMINATION_CONTROLLED_SUCCESS_ARM 1 +#define CL_COMMAND_TERMINATION_CONTROLLED_FAILURE_ARM 2 +#define CL_COMMAND_TERMINATION_ERROR_ARM 3 + +/*************************************** +* cl_intel_thread_local_exec extension * +****************************************/ + +#define cl_intel_thread_local_exec 1 + +#define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (((cl_bitfield)1) << 31) + +/*********************************************** +* cl_intel_device_partition_by_names extension * +************************************************/ + +#define cl_intel_device_partition_by_names 1 + +#define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 +#define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1 + +/************************************************ +* cl_intel_accelerator extension * +* cl_intel_motion_estimation extension * +* cl_intel_advanced_motion_estimation extension * +*************************************************/ + +#define cl_intel_accelerator 1 +#define cl_intel_motion_estimation 1 +#define cl_intel_advanced_motion_estimation 1 + +typedef struct _cl_accelerator_intel* cl_accelerator_intel; +typedef cl_uint cl_accelerator_type_intel; +typedef cl_uint cl_accelerator_info_intel; + +typedef struct _cl_motion_estimation_desc_intel { + cl_uint mb_block_type; + cl_uint subpixel_mode; + cl_uint sad_adjust_mode; + cl_uint search_path_type; +} cl_motion_estimation_desc_intel; + +/* error codes */ +#define CL_INVALID_ACCELERATOR_INTEL -1094 +#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095 +#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096 +#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 + +/* cl_accelerator_type_intel */ +#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0 + +/* cl_accelerator_info_intel */ +#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090 +#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091 +#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092 +#define CL_ACCELERATOR_TYPE_INTEL 0x4093 + +/* cl_motion_detect_desc_intel flags */ +#define CL_ME_MB_TYPE_16x16_INTEL 0x0 +#define CL_ME_MB_TYPE_8x8_INTEL 0x1 +#define CL_ME_MB_TYPE_4x4_INTEL 0x2 + +#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 +#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 +#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2 + +#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 +#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1 + +#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0 +#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1 +#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5 + +#define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0 +#define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL 0x1 +#define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2 +#define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4 + +#define CL_ME_FORWARD_INPUT_MODE_INTEL 0x1 +#define CL_ME_BACKWARD_INPUT_MODE_INTEL 0x2 +#define CL_ME_BIDIRECTION_INPUT_MODE_INTEL 0x3 + +#define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL 16 +#define CL_ME_BIDIR_WEIGHT_THIRD_INTEL 21 +#define CL_ME_BIDIR_WEIGHT_HALF_INTEL 32 +#define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 43 +#define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 48 + +#define CL_ME_COST_PENALTY_NONE_INTEL 0x0 +#define CL_ME_COST_PENALTY_LOW_INTEL 0x1 +#define CL_ME_COST_PENALTY_NORMAL_INTEL 0x2 +#define CL_ME_COST_PENALTY_HIGH_INTEL 0x3 + +#define CL_ME_COST_PRECISION_QPEL_INTEL 0x0 +#define CL_ME_COST_PRECISION_HPEL_INTEL 0x1 +#define CL_ME_COST_PRECISION_PEL_INTEL 0x2 +#define CL_ME_COST_PRECISION_DPEL_INTEL 0x3 + +#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 +#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 +#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 + +#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 +#define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 +#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 +#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 +#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 +#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 + +#define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 +#define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 +#define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 + +/* cl_device_info */ +#define CL_DEVICE_ME_VERSION_INTEL 0x407E + +#define CL_ME_VERSION_LEGACY_INTEL 0x0 +#define CL_ME_VERSION_ADVANCED_VER_1_INTEL 0x1 +#define CL_ME_VERSION_ADVANCED_VER_2_INTEL 0x2 + +extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL +clCreateAcceleratorINTEL( + cl_context context, + cl_accelerator_type_intel accelerator_type, + size_t descriptor_size, + const void* descriptor, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_accelerator_intel (CL_API_CALL *clCreateAcceleratorINTEL_fn)( + cl_context context, + cl_accelerator_type_intel accelerator_type, + size_t descriptor_size, + const void* descriptor, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetAcceleratorInfoINTEL( + cl_accelerator_intel accelerator, + cl_accelerator_info_intel param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)( + cl_accelerator_intel accelerator, + cl_accelerator_info_intel param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainAcceleratorINTEL( + cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int (CL_API_CALL *clRetainAcceleratorINTEL_fn)( + cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseAcceleratorINTEL( + cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int (CL_API_CALL *clReleaseAcceleratorINTEL_fn)( + cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; + +/****************************************** +* cl_intel_simultaneous_sharing extension * +*******************************************/ + +#define cl_intel_simultaneous_sharing 1 + +#define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104 +#define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105 + +/*********************************** +* cl_intel_egl_image_yuv extension * +************************************/ + +#define cl_intel_egl_image_yuv 1 + +#define CL_EGL_YUV_PLANE_INTEL 0x4107 + +/******************************** +* cl_intel_packed_yuv extension * +*********************************/ + +#define cl_intel_packed_yuv 1 + +#define CL_YUYV_INTEL 0x4076 +#define CL_UYVY_INTEL 0x4077 +#define CL_YVYU_INTEL 0x4078 +#define CL_VYUY_INTEL 0x4079 + +/******************************************** +* cl_intel_required_subgroup_size extension * +*********************************************/ + +#define cl_intel_required_subgroup_size 1 + +#define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108 +#define CL_KERNEL_SPILL_MEM_SIZE_INTEL 0x4109 +#define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL 0x410A + +/**************************************** +* cl_intel_driver_diagnostics extension * +*****************************************/ + +#define cl_intel_driver_diagnostics 1 + +typedef cl_uint cl_diagnostics_verbose_level; + +#define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106 + +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL ( 0xff ) +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL ( 1 ) +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL ( 1 << 1 ) +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL ( 1 << 2 ) + +/******************************** +* cl_intel_planar_yuv extension * +*********************************/ + +#define CL_NV12_INTEL 0x410E + +#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) +#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) + +#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E +#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F + +/******************************************************* +* cl_intel_device_side_avc_motion_estimation extension * +********************************************************/ + +#define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B +#define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C +#define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D + +#define CL_AVC_ME_VERSION_0_INTEL 0x0 /* No support. */ +#define CL_AVC_ME_VERSION_1_INTEL 0x1 /* First supported version. */ + +#define CL_AVC_ME_MAJOR_16x16_INTEL 0x0 +#define CL_AVC_ME_MAJOR_16x8_INTEL 0x1 +#define CL_AVC_ME_MAJOR_8x16_INTEL 0x2 +#define CL_AVC_ME_MAJOR_8x8_INTEL 0x3 + +#define CL_AVC_ME_MINOR_8x8_INTEL 0x0 +#define CL_AVC_ME_MINOR_8x4_INTEL 0x1 +#define CL_AVC_ME_MINOR_4x8_INTEL 0x2 +#define CL_AVC_ME_MINOR_4x4_INTEL 0x3 + +#define CL_AVC_ME_MAJOR_FORWARD_INTEL 0x0 +#define CL_AVC_ME_MAJOR_BACKWARD_INTEL 0x1 +#define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL 0x2 + +#define CL_AVC_ME_PARTITION_MASK_ALL_INTEL 0x0 +#define CL_AVC_ME_PARTITION_MASK_16x16_INTEL 0x7E +#define CL_AVC_ME_PARTITION_MASK_16x8_INTEL 0x7D +#define CL_AVC_ME_PARTITION_MASK_8x16_INTEL 0x7B +#define CL_AVC_ME_PARTITION_MASK_8x8_INTEL 0x77 +#define CL_AVC_ME_PARTITION_MASK_8x4_INTEL 0x6F +#define CL_AVC_ME_PARTITION_MASK_4x8_INTEL 0x5F +#define CL_AVC_ME_PARTITION_MASK_4x4_INTEL 0x3F + +#define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL 0x0 +#define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL 0x1 +#define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL 0x2 +#define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL 0x3 +#define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL 0x4 +#define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL 0x5 +#define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL 0x6 +#define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL 0x7 +#define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL 0x8 +#define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL 0x9 +#define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL 0x2 +#define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL 0xa + +#define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 +#define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x2 + +#define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 +#define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 +#define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL 0x3 + +#define CL_AVC_ME_COST_PRECISION_QPEL_INTEL 0x0 +#define CL_AVC_ME_COST_PRECISION_HPEL_INTEL 0x1 +#define CL_AVC_ME_COST_PRECISION_PEL_INTEL 0x2 +#define CL_AVC_ME_COST_PRECISION_DPEL_INTEL 0x3 + +#define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL 0x10 +#define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL 0x15 +#define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL 0x20 +#define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 0x2B +#define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 0x30 + +#define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL 0x0 +#define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL 0x2 +#define CL_AVC_ME_BORDER_REACHED_TOP_INTEL 0x4 +#define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL 0x8 + +#define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL 0x0 +#define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL 0x4000 + +#define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL ( 0x3 << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL ( 0x55 << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL ( 0xAA << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL ( 0xFF << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL ( 0x1 << 26 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL ( 0x2 << 26 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL ( 0x1 << 28 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL ( 0x2 << 28 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL ( 0x1 << 30 ) +#define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL ( 0x2 << 30 ) + +#define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL 0x00 +#define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL 0x80 + +#define CL_AVC_ME_INTRA_16x16_INTEL 0x0 +#define CL_AVC_ME_INTRA_8x8_INTEL 0x1 +#define CL_AVC_ME_INTRA_4x4_INTEL 0x2 + +#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL 0x6 +#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL 0x5 +#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL 0x3 + +#define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL 0x60 +#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL 0x10 +#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8 +#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4 + +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 + +#define CL_AVC_ME_FRAME_FORWARD_INTEL 0x1 +#define CL_AVC_ME_FRAME_BACKWARD_INTEL 0x2 +#define CL_AVC_ME_FRAME_DUAL_INTEL 0x3 + +#define CL_AVC_ME_SLICE_TYPE_PRED_INTEL 0x0 +#define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL 0x1 +#define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL 0x2 + +#define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0 +#define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1 + +/******************************************* +* cl_intel_unified_shared_memory extension * +********************************************/ + +/* These APIs are in sync with Revision Q of the cl_intel_unified_shared_memory spec! */ + +#define cl_intel_unified_shared_memory 1 + +/* cl_device_info */ +#define CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL 0x4190 +#define CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL 0x4191 +#define CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4192 +#define CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4193 +#define CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL 0x4194 + +typedef cl_bitfield cl_device_unified_shared_memory_capabilities_intel; + +/* cl_device_unified_shared_memory_capabilities_intel - bitfield */ +#define CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL (1 << 0) +#define CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL (1 << 1) +#define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL (1 << 2) +#define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL (1 << 3) + +typedef cl_properties cl_mem_properties_intel; + +/* cl_mem_properties_intel */ +#define CL_MEM_ALLOC_FLAGS_INTEL 0x4195 + +typedef cl_bitfield cl_mem_alloc_flags_intel; + +/* cl_mem_alloc_flags_intel - bitfield */ +#define CL_MEM_ALLOC_WRITE_COMBINED_INTEL (1 << 0) + +typedef cl_uint cl_mem_info_intel; + +/* cl_mem_alloc_info_intel */ +#define CL_MEM_ALLOC_TYPE_INTEL 0x419A +#define CL_MEM_ALLOC_BASE_PTR_INTEL 0x419B +#define CL_MEM_ALLOC_SIZE_INTEL 0x419C +#define CL_MEM_ALLOC_DEVICE_INTEL 0x419D +/* Enum values 0x419E-0x419F are reserved for future queries. */ + +typedef cl_uint cl_unified_shared_memory_type_intel; + +/* cl_unified_shared_memory_type_intel */ +#define CL_MEM_TYPE_UNKNOWN_INTEL 0x4196 +#define CL_MEM_TYPE_HOST_INTEL 0x4197 +#define CL_MEM_TYPE_DEVICE_INTEL 0x4198 +#define CL_MEM_TYPE_SHARED_INTEL 0x4199 + +typedef cl_uint cl_mem_advice_intel; + +/* cl_mem_advice_intel */ +/* Enum values 0x4208-0x420F are reserved for future memory advices. */ + +/* cl_kernel_exec_info */ +#define CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL 0x4200 +#define CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL 0x4201 +#define CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL 0x4202 +#define CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL 0x4203 + +/* cl_command_type */ +#define CL_COMMAND_MEMFILL_INTEL 0x4204 +#define CL_COMMAND_MEMCPY_INTEL 0x4205 +#define CL_COMMAND_MIGRATEMEM_INTEL 0x4206 +#define CL_COMMAND_MEMADVISE_INTEL 0x4207 + +extern CL_API_ENTRY void* CL_API_CALL +clHostMemAllocINTEL( + cl_context context, + const cl_mem_properties_intel* properties, + size_t size, + cl_uint alignment, + cl_int* errcode_ret); + +typedef CL_API_ENTRY void* (CL_API_CALL * +clHostMemAllocINTEL_fn)( + cl_context context, + const cl_mem_properties_intel* properties, + size_t size, + cl_uint alignment, + cl_int* errcode_ret); + +extern CL_API_ENTRY void* CL_API_CALL +clDeviceMemAllocINTEL( + cl_context context, + cl_device_id device, + const cl_mem_properties_intel* properties, + size_t size, + cl_uint alignment, + cl_int* errcode_ret); + +typedef CL_API_ENTRY void* (CL_API_CALL * +clDeviceMemAllocINTEL_fn)( + cl_context context, + cl_device_id device, + const cl_mem_properties_intel* properties, + size_t size, + cl_uint alignment, + cl_int* errcode_ret); + +extern CL_API_ENTRY void* CL_API_CALL +clSharedMemAllocINTEL( + cl_context context, + cl_device_id device, + const cl_mem_properties_intel* properties, + size_t size, + cl_uint alignment, + cl_int* errcode_ret); + +typedef CL_API_ENTRY void* (CL_API_CALL * +clSharedMemAllocINTEL_fn)( + cl_context context, + cl_device_id device, + const cl_mem_properties_intel* properties, + size_t size, + cl_uint alignment, + cl_int* errcode_ret); + +extern CL_API_ENTRY cl_int CL_API_CALL +clMemFreeINTEL( + cl_context context, + void* ptr); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clMemFreeINTEL_fn)( + cl_context context, + void* ptr); + +extern CL_API_ENTRY cl_int CL_API_CALL +clMemBlockingFreeINTEL( + cl_context context, + void* ptr); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clMemBlockingFreeINTEL_fn)( + cl_context context, + void* ptr); + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetMemAllocInfoINTEL( + cl_context context, + const void* ptr, + cl_mem_info_intel param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clGetMemAllocInfoINTEL_fn)( + cl_context context, + const void* ptr, + cl_mem_info_intel param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetKernelArgMemPointerINTEL( + cl_kernel kernel, + cl_uint arg_index, + const void* arg_value); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clSetKernelArgMemPointerINTEL_fn)( + cl_kernel kernel, + cl_uint arg_index, + const void* arg_value); + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueMemsetINTEL( /* Deprecated */ + cl_command_queue command_queue, + void* dst_ptr, + cl_int value, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clEnqueueMemsetINTEL_fn)( /* Deprecated */ + cl_command_queue command_queue, + void* dst_ptr, + cl_int value, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueMemFillINTEL( + cl_command_queue command_queue, + void* dst_ptr, + const void* pattern, + size_t pattern_size, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clEnqueueMemFillINTEL_fn)( + cl_command_queue command_queue, + void* dst_ptr, + const void* pattern, + size_t pattern_size, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueMemcpyINTEL( + cl_command_queue command_queue, + cl_bool blocking, + void* dst_ptr, + const void* src_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clEnqueueMemcpyINTEL_fn)( + cl_command_queue command_queue, + cl_bool blocking, + void* dst_ptr, + const void* src_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +#ifdef CL_VERSION_1_2 + +/* Because these APIs use cl_mem_migration_flags, they require + OpenCL 1.2: */ + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueMigrateMemINTEL( + cl_command_queue command_queue, + const void* ptr, + size_t size, + cl_mem_migration_flags flags, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clEnqueueMigrateMemINTEL_fn)( + cl_command_queue command_queue, + const void* ptr, + size_t size, + cl_mem_migration_flags flags, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +#endif + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueMemAdviseINTEL( + cl_command_queue command_queue, + const void* ptr, + size_t size, + cl_mem_advice_intel advice, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef CL_API_ENTRY cl_int (CL_API_CALL * +clEnqueueMemAdviseINTEL_fn)( + cl_command_queue command_queue, + const void* ptr, + size_t size, + cl_mem_advice_intel advice, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +/*************************************************** +* cl_intel_create_buffer_with_properties extension * +****************************************************/ + +#define cl_intel_create_buffer_with_properties 1 + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateBufferWithPropertiesINTEL( + cl_context context, + const cl_mem_properties_intel* properties, + cl_mem_flags flags, + size_t size, + void * host_ptr, + cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_mem (CL_API_CALL * +clCreateBufferWithPropertiesINTEL_fn)( + cl_context context, + const cl_mem_properties_intel* properties, + cl_mem_flags flags, + size_t size, + void * host_ptr, + cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; + +/****************************************** +* cl_intel_mem_channel_property extension * +*******************************************/ + +#define CL_MEM_CHANNEL_INTEL 0x4213 + +/********************************* +* cl_intel_mem_force_host_memory * +**********************************/ + +#define cl_intel_mem_force_host_memory 1 + +/* cl_mem_flags */ +#define CL_MEM_FORCE_HOST_MEMORY_INTEL (1 << 20) + +#ifdef __cplusplus +} +#endif + + +#endif /* __CL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl_ext_intel.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_ext_intel.h new file mode 100644 index 00000000000000..a7ae87a3400ffb --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_ext_intel.h @@ -0,0 +1,19 @@ +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. + * + * 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. + * + ******************************************************************************/ + +#include +#pragma message("The Intel extensions have been moved into cl_ext.h. Please include cl_ext.h directly.") diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_gl.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_gl.h similarity index 80% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_gl.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_gl.h index fbdaf629778377..b587f02a986e9b 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_gl.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_gl.h @@ -1,30 +1,18 @@ -/********************************************************************************** - * Copyright (c) 2008-2019 The Khronos Group Inc. +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ + * 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. + ******************************************************************************/ #ifndef __OPENCL_CL_GL_H #define __OPENCL_CL_GL_H diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl_gl_ext.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_gl_ext.h new file mode 100644 index 00000000000000..52107b111e736f --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_gl_ext.h @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. + * + * 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. + ******************************************************************************/ + +#ifndef __OPENCL_CL_GL_EXT_H +#define __OPENCL_CL_GL_EXT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * cl_khr_gl_event extension + */ +#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D + +extern CL_API_ENTRY cl_event CL_API_CALL +clCreateEventFromGLsyncKHR(cl_context context, + cl_GLsync sync, + cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; + +#ifdef __cplusplus +} +#endif + +#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl_half.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_half.h new file mode 100644 index 00000000000000..ecc42233220284 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_half.h @@ -0,0 +1,440 @@ +/******************************************************************************* + * Copyright (c) 2019-2020 The Khronos Group Inc. + * + * 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. + ******************************************************************************/ + +/** + * This is a header-only utility library that provides OpenCL host code with + * routines for converting to/from cl_half values. + * + * Example usage: + * + * #include + * ... + * cl_half h = cl_half_from_float(0.5f, CL_HALF_RTE); + * cl_float f = cl_half_to_float(h); + */ + +#ifndef OPENCL_CL_HALF_H +#define OPENCL_CL_HALF_H + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * Rounding mode used when converting to cl_half. + */ +typedef enum +{ + CL_HALF_RTE, // round to nearest even + CL_HALF_RTZ, // round towards zero + CL_HALF_RTP, // round towards positive infinity + CL_HALF_RTN, // round towards negative infinity +} cl_half_rounding_mode; + + +/* Private utility macros. */ +#define CL_HALF_EXP_MASK 0x7C00 +#define CL_HALF_MAX_FINITE_MAG 0x7BFF + + +/* + * Utility to deal with values that overflow when converting to half precision. + */ +static inline cl_half cl_half_handle_overflow(cl_half_rounding_mode rounding_mode, + uint16_t sign) +{ + if (rounding_mode == CL_HALF_RTZ) + { + // Round overflow towards zero -> largest finite number (preserving sign) + return (sign << 15) | CL_HALF_MAX_FINITE_MAG; + } + else if (rounding_mode == CL_HALF_RTP && sign) + { + // Round negative overflow towards positive infinity -> most negative finite number + return (1 << 15) | CL_HALF_MAX_FINITE_MAG; + } + else if (rounding_mode == CL_HALF_RTN && !sign) + { + // Round positive overflow towards negative infinity -> largest finite number + return CL_HALF_MAX_FINITE_MAG; + } + + // Overflow to infinity + return (sign << 15) | CL_HALF_EXP_MASK; +} + +/* + * Utility to deal with values that underflow when converting to half precision. + */ +static inline cl_half cl_half_handle_underflow(cl_half_rounding_mode rounding_mode, + uint16_t sign) +{ + if (rounding_mode == CL_HALF_RTP && !sign) + { + // Round underflow towards positive infinity -> smallest positive value + return (sign << 15) | 1; + } + else if (rounding_mode == CL_HALF_RTN && sign) + { + // Round underflow towards negative infinity -> largest negative value + return (sign << 15) | 1; + } + + // Flush to zero + return (sign << 15); +} + + +/** + * Convert a cl_float to a cl_half. + */ +static inline cl_half cl_half_from_float(cl_float f, cl_half_rounding_mode rounding_mode) +{ + // Type-punning to get direct access to underlying bits + union + { + cl_float f; + uint32_t i; + } f32; + f32.f = f; + + // Extract sign bit + uint16_t sign = f32.i >> 31; + + // Extract FP32 exponent and mantissa + uint32_t f_exp = (f32.i >> (CL_FLT_MANT_DIG - 1)) & 0xFF; + uint32_t f_mant = f32.i & ((1 << (CL_FLT_MANT_DIG - 1)) - 1); + + // Remove FP32 exponent bias + int32_t exp = f_exp - CL_FLT_MAX_EXP + 1; + + // Add FP16 exponent bias + uint16_t h_exp = (uint16_t)(exp + CL_HALF_MAX_EXP - 1); + + // Position of the bit that will become the FP16 mantissa LSB + uint32_t lsb_pos = CL_FLT_MANT_DIG - CL_HALF_MANT_DIG; + + // Check for NaN / infinity + if (f_exp == 0xFF) + { + if (f_mant) + { + // NaN -> propagate mantissa and silence it + uint16_t h_mant = (uint16_t)(f_mant >> lsb_pos); + h_mant |= 0x200; + return (sign << 15) | CL_HALF_EXP_MASK | h_mant; + } + else + { + // Infinity -> zero mantissa + return (sign << 15) | CL_HALF_EXP_MASK; + } + } + + // Check for zero + if (!f_exp && !f_mant) + { + return (sign << 15); + } + + // Check for overflow + if (exp >= CL_HALF_MAX_EXP) + { + return cl_half_handle_overflow(rounding_mode, sign); + } + + // Check for underflow + if (exp < (CL_HALF_MIN_EXP - CL_HALF_MANT_DIG - 1)) + { + return cl_half_handle_underflow(rounding_mode, sign); + } + + // Check for value that will become denormal + if (exp < -14) + { + // Denormal -> include the implicit 1 from the FP32 mantissa + h_exp = 0; + f_mant |= 1 << (CL_FLT_MANT_DIG - 1); + + // Mantissa shift amount depends on exponent + lsb_pos = -exp + (CL_FLT_MANT_DIG - 25); + } + + // Generate FP16 mantissa by shifting FP32 mantissa + uint16_t h_mant = (uint16_t)(f_mant >> lsb_pos); + + // Check whether we need to round + uint32_t halfway = 1 << (lsb_pos - 1); + uint32_t mask = (halfway << 1) - 1; + switch (rounding_mode) + { + case CL_HALF_RTE: + if ((f_mant & mask) > halfway) + { + // More than halfway -> round up + h_mant += 1; + } + else if ((f_mant & mask) == halfway) + { + // Exactly halfway -> round to nearest even + if (h_mant & 0x1) + h_mant += 1; + } + break; + case CL_HALF_RTZ: + // Mantissa has already been truncated -> do nothing + break; + case CL_HALF_RTP: + if ((f_mant & mask) && !sign) + { + // Round positive numbers up + h_mant += 1; + } + break; + case CL_HALF_RTN: + if ((f_mant & mask) && sign) + { + // Round negative numbers down + h_mant += 1; + } + break; + } + + // Check for mantissa overflow + if (h_mant & 0x400) + { + h_exp += 1; + h_mant = 0; + } + + return (sign << 15) | (h_exp << 10) | h_mant; +} + + +/** + * Convert a cl_double to a cl_half. + */ +static inline cl_half cl_half_from_double(cl_double d, cl_half_rounding_mode rounding_mode) +{ + // Type-punning to get direct access to underlying bits + union + { + cl_double d; + uint64_t i; + } f64; + f64.d = d; + + // Extract sign bit + uint16_t sign = f64.i >> 63; + + // Extract FP64 exponent and mantissa + uint64_t d_exp = (f64.i >> (CL_DBL_MANT_DIG - 1)) & 0x7FF; + uint64_t d_mant = f64.i & (((uint64_t)1 << (CL_DBL_MANT_DIG - 1)) - 1); + + // Remove FP64 exponent bias + int64_t exp = d_exp - CL_DBL_MAX_EXP + 1; + + // Add FP16 exponent bias + uint16_t h_exp = (uint16_t)(exp + CL_HALF_MAX_EXP - 1); + + // Position of the bit that will become the FP16 mantissa LSB + uint32_t lsb_pos = CL_DBL_MANT_DIG - CL_HALF_MANT_DIG; + + // Check for NaN / infinity + if (d_exp == 0x7FF) + { + if (d_mant) + { + // NaN -> propagate mantissa and silence it + uint16_t h_mant = (uint16_t)(d_mant >> lsb_pos); + h_mant |= 0x200; + return (sign << 15) | CL_HALF_EXP_MASK | h_mant; + } + else + { + // Infinity -> zero mantissa + return (sign << 15) | CL_HALF_EXP_MASK; + } + } + + // Check for zero + if (!d_exp && !d_mant) + { + return (sign << 15); + } + + // Check for overflow + if (exp >= CL_HALF_MAX_EXP) + { + return cl_half_handle_overflow(rounding_mode, sign); + } + + // Check for underflow + if (exp < (CL_HALF_MIN_EXP - CL_HALF_MANT_DIG - 1)) + { + return cl_half_handle_underflow(rounding_mode, sign); + } + + // Check for value that will become denormal + if (exp < -14) + { + // Include the implicit 1 from the FP64 mantissa + h_exp = 0; + d_mant |= (uint64_t)1 << (CL_DBL_MANT_DIG - 1); + + // Mantissa shift amount depends on exponent + lsb_pos = (uint32_t)(-exp + (CL_DBL_MANT_DIG - 25)); + } + + // Generate FP16 mantissa by shifting FP64 mantissa + uint16_t h_mant = (uint16_t)(d_mant >> lsb_pos); + + // Check whether we need to round + uint64_t halfway = (uint64_t)1 << (lsb_pos - 1); + uint64_t mask = (halfway << 1) - 1; + switch (rounding_mode) + { + case CL_HALF_RTE: + if ((d_mant & mask) > halfway) + { + // More than halfway -> round up + h_mant += 1; + } + else if ((d_mant & mask) == halfway) + { + // Exactly halfway -> round to nearest even + if (h_mant & 0x1) + h_mant += 1; + } + break; + case CL_HALF_RTZ: + // Mantissa has already been truncated -> do nothing + break; + case CL_HALF_RTP: + if ((d_mant & mask) && !sign) + { + // Round positive numbers up + h_mant += 1; + } + break; + case CL_HALF_RTN: + if ((d_mant & mask) && sign) + { + // Round negative numbers down + h_mant += 1; + } + break; + } + + // Check for mantissa overflow + if (h_mant & 0x400) + { + h_exp += 1; + h_mant = 0; + } + + return (sign << 15) | (h_exp << 10) | h_mant; +} + + +/** + * Convert a cl_half to a cl_float. + */ +static inline cl_float cl_half_to_float(cl_half h) +{ + // Type-punning to get direct access to underlying bits + union + { + cl_float f; + uint32_t i; + } f32; + + // Extract sign bit + uint16_t sign = h >> 15; + + // Extract FP16 exponent and mantissa + uint16_t h_exp = (h >> (CL_HALF_MANT_DIG - 1)) & 0x1F; + uint16_t h_mant = h & 0x3FF; + + // Remove FP16 exponent bias + int32_t exp = h_exp - CL_HALF_MAX_EXP + 1; + + // Add FP32 exponent bias + uint32_t f_exp = exp + CL_FLT_MAX_EXP - 1; + + // Check for NaN / infinity + if (h_exp == 0x1F) + { + if (h_mant) + { + // NaN -> propagate mantissa and silence it + uint32_t f_mant = h_mant << (CL_FLT_MANT_DIG - CL_HALF_MANT_DIG); + f_mant |= 0x400000; + f32.i = (sign << 31) | 0x7F800000 | f_mant; + return f32.f; + } + else + { + // Infinity -> zero mantissa + f32.i = (sign << 31) | 0x7F800000; + return f32.f; + } + } + + // Check for zero / denormal + if (h_exp == 0) + { + if (h_mant == 0) + { + // Zero -> zero exponent + f_exp = 0; + } + else + { + // Denormal -> normalize it + // - Shift mantissa to make most-significant 1 implicit + // - Adjust exponent accordingly + uint32_t shift = 0; + while ((h_mant & 0x400) == 0) + { + h_mant <<= 1; + shift++; + } + h_mant &= 0x3FF; + f_exp -= shift - 1; + } + } + + f32.i = (sign << 31) | (f_exp << 23) | (h_mant << 13); + return f32.f; +} + + +#undef CL_HALF_EXP_MASK +#undef CL_HALF_MAX_FINITE_MAG + + +#ifdef __cplusplus +} +#endif + + +#endif /* OPENCL_CL_HALF_H */ diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl_icd.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_icd.h new file mode 100644 index 00000000000000..8ff8b94f9d74dc --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_icd.h @@ -0,0 +1,1294 @@ +/******************************************************************************* + * Copyright (c) 2019-2020 The Khronos Group Inc. + * + * 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. + ******************************************************************************/ + +#ifndef OPENCL_CL_ICD_H +#define OPENCL_CL_ICD_H + +#include +#include +#include +#include + +#if defined(_WIN32) +#include +#include +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This file contains pointer type definitions for each of the CL API calls as + * well as a type definition for the dispatch table used by the Khronos ICD + * loader (see cl_khr_icd extension specification for background). + */ + +/* API function pointer definitions */ + +// Platform APIs +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPlatformIDs)( + cl_uint num_entries, cl_platform_id *platforms, + cl_uint *num_platforms) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPlatformInfo)( + cl_platform_id platform, cl_platform_info param_name, + size_t param_value_size, void *param_value, + size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +// Device APIs +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDs)( + cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, + cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceInfo)( + cl_device_id device, cl_device_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateSubDevices)( + cl_device_id in_device, + const cl_device_partition_property *partition_properties, + cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices); + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainDevice)( + cl_device_id device) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseDevice)( + cl_device_id device) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clCreateSubDevices; +typedef void *cl_api_clRetainDevice; +typedef void *cl_api_clReleaseDevice; + +#endif + +// Context APIs +typedef CL_API_ENTRY cl_context(CL_API_CALL *cl_api_clCreateContext)( + const cl_context_properties *properties, cl_uint num_devices, + const cl_device_id *devices, + void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), + void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_context(CL_API_CALL *cl_api_clCreateContextFromType)( + const cl_context_properties *properties, cl_device_type device_type, + void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), + void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainContext)( + cl_context context) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseContext)( + cl_context context) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetContextInfo)( + cl_context context, cl_context_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +// Command Queue APIs +typedef CL_API_ENTRY cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueue)( + cl_context context, cl_device_id device, + cl_command_queue_properties properties, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_2_0 + +typedef CL_API_ENTRY +cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueueWithProperties)( + cl_context /* context */, cl_device_id /* device */, + const cl_queue_properties * /* properties */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; + +#else + +typedef void *cl_api_clCreateCommandQueueWithProperties; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainCommandQueue)( + cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseCommandQueue)( + cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetCommandQueueInfo)( + cl_command_queue command_queue, cl_command_queue_info param_name, + size_t param_value_size, void *param_value, + size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +// Memory Object APIs +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateBuffer)( + cl_context context, cl_mem_flags flags, size_t size, void *host_ptr, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage)( + cl_context context, cl_mem_flags flags, const cl_image_format *image_format, + const cl_image_desc *image_desc, void *host_ptr, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clCreateImage; + +#endif + +#ifdef CL_VERSION_3_0 + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateBufferWithProperties)( + cl_context context, const cl_mem_properties *properties, cl_mem_flags flags, + size_t size, void *host_ptr, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImageWithProperties)( + cl_context context, const cl_mem_properties *properties, cl_mem_flags flags, + const cl_image_format *image_format, const cl_image_desc *image_desc, + void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetContextDestructorCallback)( + cl_context context, + void(CL_CALLBACK* pfn_notify)(cl_context context, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_3_0; + +#else + +typedef void *cl_api_clCreateBufferWithProperties; +typedef void *cl_api_clCreateImageWithProperties; +typedef void *cl_api_clSetContextDestructorCallback; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainMemObject)( + cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseMemObject)( + cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetSupportedImageFormats)( + cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, + cl_uint num_entries, cl_image_format *image_formats, + cl_uint *num_image_formats) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetMemObjectInfo)( + cl_mem memobj, cl_mem_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetImageInfo)( + cl_mem image, cl_image_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_2_0 + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreatePipe)( + cl_context /* context */, cl_mem_flags /* flags */, + cl_uint /* pipe_packet_size */, cl_uint /* pipe_max_packets */, + const cl_pipe_properties * /* properties */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPipeInfo)( + cl_mem /* pipe */, cl_pipe_info /* param_name */, + size_t /* param_value_size */, void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clSVMAlloc)( + cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */, + unsigned int /* alignment */)CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY void(CL_API_CALL *cl_api_clSVMFree)( + cl_context /* context */, + void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; + +#else + +typedef void *cl_api_clCreatePipe; +typedef void *cl_api_clGetPipeInfo; +typedef void *cl_api_clSVMAlloc; +typedef void *cl_api_clSVMFree; + +#endif + +// Sampler APIs +typedef CL_API_ENTRY cl_sampler(CL_API_CALL *cl_api_clCreateSampler)( + cl_context context, cl_bool normalized_coords, + cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainSampler)( + cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseSampler)( + cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetSamplerInfo)( + cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_2_0 + +typedef CL_API_ENTRY +cl_sampler(CL_API_CALL *cl_api_clCreateSamplerWithProperties)( + cl_context /* context */, + const cl_sampler_properties * /* sampler_properties */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; + +#else + +typedef void *cl_api_clCreateSamplerWithProperties; + +#endif + +// Program Object APIs +typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithSource)( + cl_context context, cl_uint count, const char **strings, + const size_t *lengths, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithBinary)( + cl_context context, cl_uint num_devices, const cl_device_id *device_list, + const size_t *lengths, const unsigned char **binaries, + cl_int *binary_status, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY +cl_program(CL_API_CALL *cl_api_clCreateProgramWithBuiltInKernels)( + cl_context context, cl_uint num_devices, const cl_device_id *device_list, + const char *kernel_names, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clCreateProgramWithBuiltInKernels; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainProgram)( + cl_program program) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseProgram)( + cl_program program) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clBuildProgram)( + cl_program program, cl_uint num_devices, const cl_device_id *device_list, + const char *options, + void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), + void *user_data) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCompileProgram)( + cl_program program, cl_uint num_devices, const cl_device_id *device_list, + const char *options, cl_uint num_input_headers, + const cl_program *input_headers, const char **header_include_names, + void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), + void *user_data) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clLinkProgram)( + cl_context context, cl_uint num_devices, const cl_device_id *device_list, + const char *options, cl_uint num_input_programs, + const cl_program *input_programs, + void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), + void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clCompileProgram; +typedef void *cl_api_clLinkProgram; + +#endif + +#ifdef CL_VERSION_2_2 + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clSetProgramSpecializationConstant)( + cl_program program, cl_uint spec_id, size_t spec_size, + const void *spec_value) CL_API_SUFFIX__VERSION_2_2; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetProgramReleaseCallback)( + cl_program program, + void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), + void *user_data) CL_API_SUFFIX__VERSION_2_2; + +#else + +typedef void *cl_api_clSetProgramSpecializationConstant; +typedef void *cl_api_clSetProgramReleaseCallback; + +#endif + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clUnloadPlatformCompiler)( + cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clUnloadPlatformCompiler; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetProgramInfo)( + cl_program program, cl_program_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetProgramBuildInfo)( + cl_program program, cl_device_id device, cl_program_build_info param_name, + size_t param_value_size, void *param_value, + size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +// Kernel Object APIs +typedef CL_API_ENTRY cl_kernel(CL_API_CALL *cl_api_clCreateKernel)( + cl_program program, const char *kernel_name, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateKernelsInProgram)( + cl_program program, cl_uint num_kernels, cl_kernel *kernels, + cl_uint *num_kernels_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainKernel)( + cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseKernel)( + cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelArg)( + cl_kernel kernel, cl_uint arg_index, size_t arg_size, + const void *arg_value) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelInfo)( + cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelArgInfo)( + cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name, + size_t param_value_size, void *param_value, + size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clGetKernelArgInfo; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelWorkGroupInfo)( + cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, + size_t param_value_size, void *param_value, + size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_2_0 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelArgSVMPointer)( + cl_kernel /* kernel */, cl_uint /* arg_index */, + const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelExecInfo)( + cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */, + size_t /* param_value_size */, + const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfoKHR)( + cl_kernel /* in_kernel */, cl_device_id /*in_device*/, + cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/, + const void * /*input_value*/, size_t /*param_value_size*/, + void * /*param_value*/, + size_t * /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0; + +#else + +typedef void *cl_api_clSetKernelArgSVMPointer; +typedef void *cl_api_clSetKernelExecInfo; +typedef void *cl_api_clGetKernelSubGroupInfoKHR; + +#endif + +// Event Object APIs +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clWaitForEvents)( + cl_uint num_events, const cl_event *event_list) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetEventInfo)( + cl_event event, cl_event_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainEvent)(cl_event event) + CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseEvent)(cl_event event) + CL_API_SUFFIX__VERSION_1_0; + +// Profiling APIs +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetEventProfilingInfo)( + cl_event event, cl_profiling_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +// Flush and Finish APIs +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clFlush)( + cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clFinish)( + cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; + +// Enqueued Commands APIs +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadBuffer)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + size_t offset, size_t cb, void *ptr, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_1 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadBufferRect)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + const size_t *buffer_origin, const size_t *host_origin, + const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, void *ptr, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_1; + +#else + +typedef void *cl_api_clEnqueueReadBufferRect; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteBuffer)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, + size_t offset, size_t cb, const void *ptr, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_1 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteBufferRect)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + const size_t *buffer_origin, const size_t *host_origin, + const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, const void *ptr, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_1; + +#else + +typedef void *cl_api_clEnqueueWriteBufferRect; + +#endif + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueFillBuffer)( + cl_command_queue command_queue, cl_mem buffer, const void *pattern, + size_t pattern_size, size_t offset, size_t cb, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clEnqueueFillBuffer; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBuffer)( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, + size_t src_offset, size_t dst_offset, size_t cb, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_1 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferRect)( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, + const size_t *src_origin, const size_t *dst_origin, const size_t *region, + size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, + size_t dst_slice_pitch, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_1; + +#else + +typedef void *cl_api_clEnqueueCopyBufferRect; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadImage)( + cl_command_queue command_queue, cl_mem image, cl_bool blocking_read, + const size_t *origin, const size_t *region, size_t row_pitch, + size_t slice_pitch, void *ptr, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteImage)( + cl_command_queue command_queue, cl_mem image, cl_bool blocking_write, + const size_t *origin, const size_t *region, size_t input_row_pitch, + size_t input_slice_pitch, const void *ptr, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueFillImage)( + cl_command_queue command_queue, cl_mem image, const void *fill_color, + const size_t origin[3], const size_t region[3], + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clEnqueueFillImage; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyImage)( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, + const size_t *src_origin, const size_t *dst_origin, const size_t *region, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyImageToBuffer)( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, + const size_t *src_origin, const size_t *region, size_t dst_offset, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferToImage)( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, + size_t src_offset, const size_t *dst_origin, const size_t *region, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clEnqueueMapBuffer)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map, + cl_map_flags map_flags, size_t offset, size_t cb, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clEnqueueMapImage)( + cl_command_queue command_queue, cl_mem image, cl_bool blocking_map, + cl_map_flags map_flags, const size_t *origin, const size_t *region, + size_t *image_row_pitch, size_t *image_slice_pitch, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueUnmapMemObject)( + cl_command_queue command_queue, cl_mem memobj, void *mapped_ptr, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMigrateMemObjects)( + cl_command_queue command_queue, cl_uint num_mem_objects, + const cl_mem *mem_objects, cl_mem_migration_flags flags, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clEnqueueMigrateMemObjects; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueNDRangeKernel)( + cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, + const size_t *global_work_offset, const size_t *global_work_size, + const size_t *local_work_size, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueTask)( + cl_command_queue command_queue, cl_kernel kernel, + cl_uint num_events_in_wait_list, const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueNativeKernel)( + cl_command_queue command_queue, void(CL_CALLBACK *user_func)(void *), + void *args, size_t cb_args, cl_uint num_mem_objects, const cl_mem *mem_list, + const void **args_mem_loc, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMarkerWithWaitList)( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueBarrierWithWaitList)( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY void *( + CL_API_CALL *cl_api_clGetExtensionFunctionAddressForPlatform)( + cl_platform_id platform, + const char *function_name)CL_API_SUFFIX__VERSION_1_2; + +#else + +typedef void *cl_api_clEnqueueMarkerWithWaitList; +typedef void *cl_api_clEnqueueBarrierWithWaitList; +typedef void *cl_api_clGetExtensionFunctionAddressForPlatform; + +#endif + +// Shared Virtual Memory APIs + +#ifdef CL_VERSION_2_0 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMFree)( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, + void ** /* svm_pointers */, + void(CL_CALLBACK *pfn_free_func)(cl_command_queue /* queue */, + cl_uint /* num_svm_pointers */, + void ** /* svm_pointers[] */, + void * /* user_data */), + void * /* user_data */, cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemcpy)( + cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, + void * /* dst_ptr */, const void * /* src_ptr */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemFill)( + cl_command_queue /* command_queue */, void * /* svm_ptr */, + const void * /* pattern */, size_t /* pattern_size */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMap)( + cl_command_queue /* command_queue */, cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, void * /* svm_ptr */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMUnmap)( + cl_command_queue /* command_queue */, void * /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; + +#else + +typedef void *cl_api_clEnqueueSVMFree; +typedef void *cl_api_clEnqueueSVMMemcpy; +typedef void *cl_api_clEnqueueSVMMemFill; +typedef void *cl_api_clEnqueueSVMMap; +typedef void *cl_api_clEnqueueSVMUnmap; + +#endif + +// Deprecated APIs +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetCommandQueueProperty)( + cl_command_queue command_queue, cl_command_queue_properties properties, + cl_bool enable, cl_command_queue_properties *old_properties) + CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage2D)( + cl_context context, cl_mem_flags flags, const cl_image_format *image_format, + size_t image_width, size_t image_height, size_t image_row_pitch, + void *host_ptr, cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage3D)( + cl_context context, cl_mem_flags flags, const cl_image_format *image_format, + size_t image_width, size_t image_height, size_t image_depth, + size_t image_row_pitch, size_t image_slice_pitch, void *host_ptr, + cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clUnloadCompiler)(void) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMarker)( + cl_command_queue command_queue, + cl_event *event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWaitForEvents)( + cl_command_queue command_queue, cl_uint num_events, + const cl_event *event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueBarrier)( + cl_command_queue command_queue) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clGetExtensionFunctionAddress)( + const char *function_name)CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +// GL and other APIs +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLBuffer)( + cl_context context, cl_mem_flags flags, cl_GLuint bufobj, + int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture)( + cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture2D)( + cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture3D)( + cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLRenderbuffer)( + cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLObjectInfo)( + cl_mem memobj, cl_gl_object_type *gl_object_type, + cl_GLuint *gl_object_name) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLTextureInfo)( + cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueAcquireGLObjects)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReleaseGLObjects)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +/* cl_khr_gl_sharing */ +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLContextInfoKHR)( + const cl_context_properties *properties, cl_gl_context_info param_name, + size_t param_value_size, void *param_value, size_t *param_value_size_ret); + +/* cl_khr_gl_event */ +typedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateEventFromGLsyncKHR)( + cl_context context, cl_GLsync sync, cl_int *errcode_ret); + +#if defined(_WIN32) + +/* cl_khr_d3d10_sharing */ + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, + void *d3d_object, cl_d3d10_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id *devices, + cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10BufferKHR)( + cl_context context, cl_mem_flags flags, ID3D10Buffer *resource, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture2DKHR)( + cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource, + UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture3DKHR)( + cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource, + UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D10KHR( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, + void *d3d_object, cl_d3d10_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices); + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromD3D10BufferKHR(cl_context context, cl_mem_flags flags, + ID3D10Buffer *resource, cl_int *errcode_ret); + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR( + cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource, + UINT subresource, cl_int *errcode_ret); + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR( + cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource, + UINT subresource, cl_int *errcode_ret); + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +/* cl_khr_d3d11_sharing */ +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D11KHR)( + cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, + void *d3d_object, cl_d3d11_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id *devices, + cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11BufferKHR)( + cl_context context, cl_mem_flags flags, ID3D11Buffer *resource, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture2DKHR)( + cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource, + UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture3DKHR)( + cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource, + UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D11ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D11ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +/* cl_khr_dx9_media_sharing */ +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR)( + cl_platform_id platform, cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr *media_adapters_type, void *media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, + cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromDX9MediaSurfaceKHR)( + cl_context context, cl_mem_flags flags, + cl_dx9_media_adapter_type_khr adapter_type, void *surface_info, + cl_uint plane, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_1_2; + +/* cl_khr_d3d11_sharing */ +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D11KHR( + cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, + void *d3d_object, cl_d3d11_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices); + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromD3D11BufferKHR(cl_context context, cl_mem_flags flags, + ID3D11Buffer *resource, cl_int *errcode_ret); + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR( + cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource, + UINT subresource, cl_int *errcode_ret); + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR( + cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource, + UINT subresource, cl_int *errcode_ret); + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +/* cl_khr_dx9_media_sharing */ +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9MediaAdapterKHR( + cl_platform_id platform, cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr *media_adapter_type, void *media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, + cl_device_id *devices, cl_uint *num_devices); + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceKHR( + cl_context context, cl_mem_flags flags, + cl_dx9_media_adapter_type_khr adapter_type, void *surface_info, + cl_uint plane, cl_int *errcode_ret); + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +#else + +/* cl_khr_d3d10_sharing */ +typedef void *cl_api_clGetDeviceIDsFromD3D10KHR; +typedef void *cl_api_clCreateFromD3D10BufferKHR; +typedef void *cl_api_clCreateFromD3D10Texture2DKHR; +typedef void *cl_api_clCreateFromD3D10Texture3DKHR; +typedef void *cl_api_clEnqueueAcquireD3D10ObjectsKHR; +typedef void *cl_api_clEnqueueReleaseD3D10ObjectsKHR; + +/* cl_khr_d3d11_sharing */ +typedef void *cl_api_clGetDeviceIDsFromD3D11KHR; +typedef void *cl_api_clCreateFromD3D11BufferKHR; +typedef void *cl_api_clCreateFromD3D11Texture2DKHR; +typedef void *cl_api_clCreateFromD3D11Texture3DKHR; +typedef void *cl_api_clEnqueueAcquireD3D11ObjectsKHR; +typedef void *cl_api_clEnqueueReleaseD3D11ObjectsKHR; + +/* cl_khr_dx9_media_sharing */ +typedef void *cl_api_clCreateFromDX9MediaSurfaceKHR; +typedef void *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR; +typedef void *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR; +typedef void *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR; + +#endif + +/* OpenCL 1.1 */ + +#ifdef CL_VERSION_1_1 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetEventCallback)( + cl_event /* event */, cl_int /* command_exec_callback_type */, + void(CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), + void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateSubBuffer)( + cl_mem /* buffer */, cl_mem_flags /* flags */, + cl_buffer_create_type /* buffer_create_type */, + const void * /* buffer_create_info */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY +cl_int(CL_API_CALL *cl_api_clSetMemObjectDestructorCallback)( + cl_mem /* memobj */, + void(CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */, + void * /*user_data*/), + void * /*user_data */) CL_API_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateUserEvent)( + cl_context /* context */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetUserEventStatus)( + cl_event /* event */, + cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; + +#else + +typedef void *cl_api_clSetEventCallback; +typedef void *cl_api_clCreateSubBuffer; +typedef void *cl_api_clSetMemObjectDestructorCallback; +typedef void *cl_api_clCreateUserEvent; +typedef void *cl_api_clSetUserEventStatus; + +#endif + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateSubDevicesEXT)( + cl_device_id in_device, + const cl_device_partition_property_ext *partition_properties, + cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices); + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainDeviceEXT)( + cl_device_id device) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseDeviceEXT)( + cl_device_id device) CL_API_SUFFIX__VERSION_1_0; + +/* cl_khr_egl_image */ +typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromEGLImageKHR)( + cl_context context, CLeglDisplayKHR display, CLeglImageKHR image, + cl_mem_flags flags, const cl_egl_image_properties_khr *properties, + cl_int *errcode_ret); + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueAcquireEGLObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReleaseEGLObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, + const cl_mem *mem_objects, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, cl_event *event); + +/* cl_khr_egl_event */ +typedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateEventFromEGLSyncKHR)( + cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display, + cl_int *errcode_ret); + +#ifdef CL_VERSION_2_1 + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetDefaultDeviceCommandQueue)( + cl_context context, cl_device_id device, + cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1; + +typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithIL)( + cl_context context, const void *il, size_t length, + cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfo)( + cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name, + size_t input_value_size, const void *input_value, size_t param_value_size, + void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_2_1; + +typedef CL_API_ENTRY cl_kernel(CL_API_CALL *cl_api_clCloneKernel)( + cl_kernel source_kernel, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMigrateMem)( + cl_command_queue command_queue, cl_uint num_svm_pointers, + const void **svm_pointers, const size_t *sizes, + cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, + const cl_event *event_wait_list, + cl_event *event) CL_API_SUFFIX__VERSION_2_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceAndHostTimer)( + cl_device_id device, cl_ulong *device_timestamp, + cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetHostTimer)( + cl_device_id device, cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1; + +#else + +typedef void *cl_api_clSetDefaultDeviceCommandQueue; +typedef void *cl_api_clCreateProgramWithIL; +typedef void *cl_api_clGetKernelSubGroupInfo; +typedef void *cl_api_clCloneKernel; +typedef void *cl_api_clEnqueueSVMMigrateMem; +typedef void *cl_api_clGetDeviceAndHostTimer; +typedef void *cl_api_clGetHostTimer; + +#endif + +/* Vendor dispatch table struture */ + +typedef struct _cl_icd_dispatch { + /* OpenCL 1.0 */ + cl_api_clGetPlatformIDs clGetPlatformIDs; + cl_api_clGetPlatformInfo clGetPlatformInfo; + cl_api_clGetDeviceIDs clGetDeviceIDs; + cl_api_clGetDeviceInfo clGetDeviceInfo; + cl_api_clCreateContext clCreateContext; + cl_api_clCreateContextFromType clCreateContextFromType; + cl_api_clRetainContext clRetainContext; + cl_api_clReleaseContext clReleaseContext; + cl_api_clGetContextInfo clGetContextInfo; + cl_api_clCreateCommandQueue clCreateCommandQueue; + cl_api_clRetainCommandQueue clRetainCommandQueue; + cl_api_clReleaseCommandQueue clReleaseCommandQueue; + cl_api_clGetCommandQueueInfo clGetCommandQueueInfo; + cl_api_clSetCommandQueueProperty clSetCommandQueueProperty; + cl_api_clCreateBuffer clCreateBuffer; + cl_api_clCreateImage2D clCreateImage2D; + cl_api_clCreateImage3D clCreateImage3D; + cl_api_clRetainMemObject clRetainMemObject; + cl_api_clReleaseMemObject clReleaseMemObject; + cl_api_clGetSupportedImageFormats clGetSupportedImageFormats; + cl_api_clGetMemObjectInfo clGetMemObjectInfo; + cl_api_clGetImageInfo clGetImageInfo; + cl_api_clCreateSampler clCreateSampler; + cl_api_clRetainSampler clRetainSampler; + cl_api_clReleaseSampler clReleaseSampler; + cl_api_clGetSamplerInfo clGetSamplerInfo; + cl_api_clCreateProgramWithSource clCreateProgramWithSource; + cl_api_clCreateProgramWithBinary clCreateProgramWithBinary; + cl_api_clRetainProgram clRetainProgram; + cl_api_clReleaseProgram clReleaseProgram; + cl_api_clBuildProgram clBuildProgram; + cl_api_clUnloadCompiler clUnloadCompiler; + cl_api_clGetProgramInfo clGetProgramInfo; + cl_api_clGetProgramBuildInfo clGetProgramBuildInfo; + cl_api_clCreateKernel clCreateKernel; + cl_api_clCreateKernelsInProgram clCreateKernelsInProgram; + cl_api_clRetainKernel clRetainKernel; + cl_api_clReleaseKernel clReleaseKernel; + cl_api_clSetKernelArg clSetKernelArg; + cl_api_clGetKernelInfo clGetKernelInfo; + cl_api_clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo; + cl_api_clWaitForEvents clWaitForEvents; + cl_api_clGetEventInfo clGetEventInfo; + cl_api_clRetainEvent clRetainEvent; + cl_api_clReleaseEvent clReleaseEvent; + cl_api_clGetEventProfilingInfo clGetEventProfilingInfo; + cl_api_clFlush clFlush; + cl_api_clFinish clFinish; + cl_api_clEnqueueReadBuffer clEnqueueReadBuffer; + cl_api_clEnqueueWriteBuffer clEnqueueWriteBuffer; + cl_api_clEnqueueCopyBuffer clEnqueueCopyBuffer; + cl_api_clEnqueueReadImage clEnqueueReadImage; + cl_api_clEnqueueWriteImage clEnqueueWriteImage; + cl_api_clEnqueueCopyImage clEnqueueCopyImage; + cl_api_clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer; + cl_api_clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage; + cl_api_clEnqueueMapBuffer clEnqueueMapBuffer; + cl_api_clEnqueueMapImage clEnqueueMapImage; + cl_api_clEnqueueUnmapMemObject clEnqueueUnmapMemObject; + cl_api_clEnqueueNDRangeKernel clEnqueueNDRangeKernel; + cl_api_clEnqueueTask clEnqueueTask; + cl_api_clEnqueueNativeKernel clEnqueueNativeKernel; + cl_api_clEnqueueMarker clEnqueueMarker; + cl_api_clEnqueueWaitForEvents clEnqueueWaitForEvents; + cl_api_clEnqueueBarrier clEnqueueBarrier; + cl_api_clGetExtensionFunctionAddress clGetExtensionFunctionAddress; + cl_api_clCreateFromGLBuffer clCreateFromGLBuffer; + cl_api_clCreateFromGLTexture2D clCreateFromGLTexture2D; + cl_api_clCreateFromGLTexture3D clCreateFromGLTexture3D; + cl_api_clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer; + cl_api_clGetGLObjectInfo clGetGLObjectInfo; + cl_api_clGetGLTextureInfo clGetGLTextureInfo; + cl_api_clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects; + cl_api_clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects; + cl_api_clGetGLContextInfoKHR clGetGLContextInfoKHR; + + /* cl_khr_d3d10_sharing */ + cl_api_clGetDeviceIDsFromD3D10KHR clGetDeviceIDsFromD3D10KHR; + cl_api_clCreateFromD3D10BufferKHR clCreateFromD3D10BufferKHR; + cl_api_clCreateFromD3D10Texture2DKHR clCreateFromD3D10Texture2DKHR; + cl_api_clCreateFromD3D10Texture3DKHR clCreateFromD3D10Texture3DKHR; + cl_api_clEnqueueAcquireD3D10ObjectsKHR clEnqueueAcquireD3D10ObjectsKHR; + cl_api_clEnqueueReleaseD3D10ObjectsKHR clEnqueueReleaseD3D10ObjectsKHR; + + /* OpenCL 1.1 */ + cl_api_clSetEventCallback clSetEventCallback; + cl_api_clCreateSubBuffer clCreateSubBuffer; + cl_api_clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback; + cl_api_clCreateUserEvent clCreateUserEvent; + cl_api_clSetUserEventStatus clSetUserEventStatus; + cl_api_clEnqueueReadBufferRect clEnqueueReadBufferRect; + cl_api_clEnqueueWriteBufferRect clEnqueueWriteBufferRect; + cl_api_clEnqueueCopyBufferRect clEnqueueCopyBufferRect; + + /* cl_ext_device_fission */ + cl_api_clCreateSubDevicesEXT clCreateSubDevicesEXT; + cl_api_clRetainDeviceEXT clRetainDeviceEXT; + cl_api_clReleaseDeviceEXT clReleaseDeviceEXT; + + /* cl_khr_gl_event */ + cl_api_clCreateEventFromGLsyncKHR clCreateEventFromGLsyncKHR; + + /* OpenCL 1.2 */ + cl_api_clCreateSubDevices clCreateSubDevices; + cl_api_clRetainDevice clRetainDevice; + cl_api_clReleaseDevice clReleaseDevice; + cl_api_clCreateImage clCreateImage; + cl_api_clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels; + cl_api_clCompileProgram clCompileProgram; + cl_api_clLinkProgram clLinkProgram; + cl_api_clUnloadPlatformCompiler clUnloadPlatformCompiler; + cl_api_clGetKernelArgInfo clGetKernelArgInfo; + cl_api_clEnqueueFillBuffer clEnqueueFillBuffer; + cl_api_clEnqueueFillImage clEnqueueFillImage; + cl_api_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects; + cl_api_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList; + cl_api_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList; + cl_api_clGetExtensionFunctionAddressForPlatform + clGetExtensionFunctionAddressForPlatform; + cl_api_clCreateFromGLTexture clCreateFromGLTexture; + + /* cl_khr_d3d11_sharing */ + cl_api_clGetDeviceIDsFromD3D11KHR clGetDeviceIDsFromD3D11KHR; + cl_api_clCreateFromD3D11BufferKHR clCreateFromD3D11BufferKHR; + cl_api_clCreateFromD3D11Texture2DKHR clCreateFromD3D11Texture2DKHR; + cl_api_clCreateFromD3D11Texture3DKHR clCreateFromD3D11Texture3DKHR; + cl_api_clCreateFromDX9MediaSurfaceKHR clCreateFromDX9MediaSurfaceKHR; + cl_api_clEnqueueAcquireD3D11ObjectsKHR clEnqueueAcquireD3D11ObjectsKHR; + cl_api_clEnqueueReleaseD3D11ObjectsKHR clEnqueueReleaseD3D11ObjectsKHR; + + /* cl_khr_dx9_media_sharing */ + cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR + clGetDeviceIDsFromDX9MediaAdapterKHR; + cl_api_clEnqueueAcquireDX9MediaSurfacesKHR + clEnqueueAcquireDX9MediaSurfacesKHR; + cl_api_clEnqueueReleaseDX9MediaSurfacesKHR + clEnqueueReleaseDX9MediaSurfacesKHR; + + /* cl_khr_egl_image */ + cl_api_clCreateFromEGLImageKHR clCreateFromEGLImageKHR; + cl_api_clEnqueueAcquireEGLObjectsKHR clEnqueueAcquireEGLObjectsKHR; + cl_api_clEnqueueReleaseEGLObjectsKHR clEnqueueReleaseEGLObjectsKHR; + + /* cl_khr_egl_event */ + cl_api_clCreateEventFromEGLSyncKHR clCreateEventFromEGLSyncKHR; + + /* OpenCL 2.0 */ + cl_api_clCreateCommandQueueWithProperties clCreateCommandQueueWithProperties; + cl_api_clCreatePipe clCreatePipe; + cl_api_clGetPipeInfo clGetPipeInfo; + cl_api_clSVMAlloc clSVMAlloc; + cl_api_clSVMFree clSVMFree; + cl_api_clEnqueueSVMFree clEnqueueSVMFree; + cl_api_clEnqueueSVMMemcpy clEnqueueSVMMemcpy; + cl_api_clEnqueueSVMMemFill clEnqueueSVMMemFill; + cl_api_clEnqueueSVMMap clEnqueueSVMMap; + cl_api_clEnqueueSVMUnmap clEnqueueSVMUnmap; + cl_api_clCreateSamplerWithProperties clCreateSamplerWithProperties; + cl_api_clSetKernelArgSVMPointer clSetKernelArgSVMPointer; + cl_api_clSetKernelExecInfo clSetKernelExecInfo; + + /* cl_khr_sub_groups */ + cl_api_clGetKernelSubGroupInfoKHR clGetKernelSubGroupInfoKHR; + + /* OpenCL 2.1 */ + cl_api_clCloneKernel clCloneKernel; + cl_api_clCreateProgramWithIL clCreateProgramWithIL; + cl_api_clEnqueueSVMMigrateMem clEnqueueSVMMigrateMem; + cl_api_clGetDeviceAndHostTimer clGetDeviceAndHostTimer; + cl_api_clGetHostTimer clGetHostTimer; + cl_api_clGetKernelSubGroupInfo clGetKernelSubGroupInfo; + cl_api_clSetDefaultDeviceCommandQueue clSetDefaultDeviceCommandQueue; + + /* OpenCL 2.2 */ + cl_api_clSetProgramReleaseCallback clSetProgramReleaseCallback; + cl_api_clSetProgramSpecializationConstant clSetProgramSpecializationConstant; + + /* OpenCL 3.0 */ + cl_api_clCreateBufferWithProperties clCreateBufferWithProperties; + cl_api_clCreateImageWithProperties clCreateImageWithProperties; + cl_api_clSetContextDestructorCallback clSetContextDestructorCallback; + +} cl_icd_dispatch; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef OPENCL_CL_ICD_H */ diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/cl_layer.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_layer.h new file mode 100644 index 00000000000000..b75e6bc7feca33 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_layer.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * 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. + * + * OpenCL is a trademark of Apple Inc. used under license by Khronos. + */ + +#ifndef OPENCL_CL_LAYER_H +#define OPENCL_CL_LAYER_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef cl_uint cl_layer_info; +typedef cl_uint cl_layer_api_version; +#define CL_LAYER_API_VERSION 0x4240 +#define CL_LAYER_API_VERSION_100 100 + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetLayerInfo(cl_layer_info param_name, + size_t param_value_size, + void *param_value, + size_t *param_value_size_ret); + +CL_API_ENTRY typedef cl_int +(CL_API_CALL *pfn_clGetLayerInfo)(cl_layer_info param_name, + size_t param_value_size, + void *param_value, + size_t *param_value_size_ret); + +extern CL_API_ENTRY cl_int CL_API_CALL +clInitLayer(cl_uint num_entries, + const cl_icd_dispatch *target_dispatch, + cl_uint *num_entries_ret, + const cl_icd_dispatch **layer_dispatch_ret); + +CL_API_ENTRY typedef cl_int +(CL_API_CALL *pfn_clInitLayer)(cl_uint num_entries, + const cl_icd_dispatch *target_dispatch, + cl_uint *num_entries_ret, + const cl_icd_dispatch **layer_dispatch_ret); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENCL_CL_LAYER_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_platform.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_platform.h similarity index 95% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_platform.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_platform.h index 7f4ddea5b3ea1b..bed2370e1a106b 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_platform.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_platform.h @@ -1,30 +1,18 @@ -/********************************************************************************** - * Copyright (c) 2008-2018 The Khronos Group Inc. +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ + * 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. + ******************************************************************************/ #ifndef __CL_PLATFORM_H #define __CL_PLATFORM_H @@ -53,7 +41,6 @@ extern "C" { * deprecation but is deprecated in versions later than 1.1. */ -#define CL_EXTENSION_WEAK_LINK #define CL_API_SUFFIX__VERSION_1_0 #define CL_EXT_SUFFIX__VERSION_1_0 #define CL_API_SUFFIX__VERSION_1_1 @@ -66,6 +53,10 @@ extern "C" { #define CL_EXT_SUFFIX__VERSION_2_1 #define CL_API_SUFFIX__VERSION_2_2 #define CL_EXT_SUFFIX__VERSION_2_2 +#define CL_API_SUFFIX__VERSION_3_0 +#define CL_EXT_SUFFIX__VERSION_3_0 +#define CL_API_SUFFIX__EXPERIMENTAL +#define CL_EXT_SUFFIX__EXPERIMENTAL #ifdef __GNUC__ @@ -119,6 +110,14 @@ extern "C" { #define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED #endif +#ifdef CL_USE_DEPRECATED_OPENCL_2_2_APIS + #define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED + #define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED +#else + #define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED CL_EXT_SUFFIX_DEPRECATED + #define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED CL_EXT_PREFIX_DEPRECATED +#endif + #if (defined (_WIN32) && defined(_MSC_VER)) /* scalar types */ @@ -355,7 +354,9 @@ typedef unsigned int cl_GLenum; /* Define basic vector types */ #if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ + #if !defined(__clang__) + #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ + #endif typedef __vector unsigned char __cl_uchar16; typedef __vector signed char __cl_char16; typedef __vector unsigned short __cl_ushort8; @@ -482,7 +483,7 @@ typedef unsigned int cl_GLenum; #elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) #define __CL_HAS_ANON_STRUCT__ 1 #define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && defined(_MSC_VER) +#elif defined( _WIN32) && defined(_MSC_VER) && ! defined(__STDC__) #if _MSC_VER >= 1500 /* Microsoft Developer Studio 2008 supports anonymous structs, but * complains by default. */ @@ -499,7 +500,7 @@ typedef unsigned int cl_GLenum; #endif /* Define alignment keys */ -#if defined( __GNUC__ ) +#if defined( __GNUC__ ) || defined(__INTEGRITY) #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) #elif defined( _WIN32) && (_MSC_VER) /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ @@ -1373,9 +1374,7 @@ typedef union } #endif -#undef __CL_HAS_ANON_STRUCT__ -#undef __CL_ANON_STRUCT__ -#if defined( _WIN32) && defined(_MSC_VER) +#if defined( _WIN32) && defined(_MSC_VER) && ! defined(__STDC__) #if _MSC_VER >=1500 #pragma warning( pop ) #endif diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_va_api_media_sharing_intel.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_va_api_media_sharing_intel.h similarity index 64% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_va_api_media_sharing_intel.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_va_api_media_sharing_intel.h index b2e63a3ea4df39..7c4a4bac1e9bdf 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_va_api_media_sharing_intel.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_va_api_media_sharing_intel.h @@ -1,65 +1,25 @@ -/********************************************************************************** - * Copyright (c) 2008-2019 The Khronos Group Inc. +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ -/*****************************************************************************\ - -Copyright (c) 2013-2019 Intel Corporation All Rights Reserved. - -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -File Name: cl_va_api_media_sharing_intel.h - -Abstract: - -Notes: - -\*****************************************************************************/ - + * 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. + ******************************************************************************/ #ifndef __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H #define __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H #include #include - -/* since we need just VASurfaceID from this file, */ -/* had to comment this inlcude out to avoid VA dependency */ -/* #include */ -typedef cl_uint VASurfaceID; +#include #ifdef __cplusplus extern "C" { diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_version.h b/inference-engine/thirdparty/clDNN/common/include/CL/cl_version.h similarity index 55% rename from inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_version.h rename to inference-engine/thirdparty/clDNN/common/include/CL/cl_version.h index bb766cb9bbddca..3844938d548b67 100644 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_version.h +++ b/inference-engine/thirdparty/clDNN/common/include/CL/cl_version.h @@ -1,29 +1,17 @@ /******************************************************************************* - * Copyright (c) 2018 The Khronos Group Inc. + * Copyright (c) 2018-2020 The Khronos Group Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: + * 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 * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. + * http://www.apache.org/licenses/LICENSE-2.0 * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + * 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. ******************************************************************************/ #ifndef __CL_VERSION_H @@ -31,22 +19,26 @@ /* Detect which version to target */ #if !defined(CL_TARGET_OPENCL_VERSION) -#pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)") -#define CL_TARGET_OPENCL_VERSION 220 +#pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)") +#define CL_TARGET_OPENCL_VERSION 300 #endif #if CL_TARGET_OPENCL_VERSION != 100 && \ CL_TARGET_OPENCL_VERSION != 110 && \ CL_TARGET_OPENCL_VERSION != 120 && \ CL_TARGET_OPENCL_VERSION != 200 && \ CL_TARGET_OPENCL_VERSION != 210 && \ - CL_TARGET_OPENCL_VERSION != 220 -#pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220). Defaulting to 220 (OpenCL 2.2)") + CL_TARGET_OPENCL_VERSION != 220 && \ + CL_TARGET_OPENCL_VERSION != 300 +#pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220, 300). Defaulting to 300 (OpenCL 3.0)") #undef CL_TARGET_OPENCL_VERSION -#define CL_TARGET_OPENCL_VERSION 220 +#define CL_TARGET_OPENCL_VERSION 300 #endif /* OpenCL Version */ +#if CL_TARGET_OPENCL_VERSION >= 300 && !defined(CL_VERSION_3_0) +#define CL_VERSION_3_0 1 +#endif #if CL_TARGET_OPENCL_VERSION >= 220 && !defined(CL_VERSION_2_2) #define CL_VERSION_2_2 1 #endif @@ -67,6 +59,9 @@ #endif /* Allow deprecated APIs for older OpenCL versions. */ +#if CL_TARGET_OPENCL_VERSION <= 220 && !defined(CL_USE_DEPRECATED_OPENCL_2_2_APIS) +#define CL_USE_DEPRECATED_OPENCL_2_2_APIS +#endif #if CL_TARGET_OPENCL_VERSION <= 210 && !defined(CL_USE_DEPRECATED_OPENCL_2_1_APIS) #define CL_USE_DEPRECATED_OPENCL_2_1_APIS #endif diff --git a/inference-engine/thirdparty/clDNN/common/include/CL/opencl.h b/inference-engine/thirdparty/clDNN/common/include/CL/opencl.h new file mode 100644 index 00000000000000..1c4e10c88afaa1 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/CL/opencl.h @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2008-2020 The Khronos Group Inc. + * + * 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. + ******************************************************************************/ + +#ifndef __OPENCL_H +#define __OPENCL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* __OPENCL_H */ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2.hpp b/inference-engine/thirdparty/clDNN/common/include/CL/opencl.hpp similarity index 86% rename from inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2.hpp rename to inference-engine/thirdparty/clDNN/common/include/CL/opencl.hpp index 68a852cf0c02b5..629660acecafd8 100644 --- a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2.hpp +++ b/inference-engine/thirdparty/clDNN/common/include/CL/opencl.hpp @@ -1,48 +1,35 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ +// +// Copyright (c) 2008-2020 The Khronos Group Inc. +// +// 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. +// /*! \file * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33), - * OpenCL 1.2 (rev 15) and OpenCL 2.0 (rev 29) + * \brief C++ bindings for OpenCL 1.0, OpenCL 1.1, OpenCL 1.2, + * OpenCL 2.0, OpenCL 2.1, OpenCL 2.2, and OpenCL 3.0. * \author Lee Howes and Bruce Merry - * - * Derived from the OpenCL 1.x C++ bindings written by + * + * Derived from the OpenCL 1.x C++ bindings written by * Benedict R. Gaster, Laurent Morichetti and Lee Howes * With additions and fixes from: * Brian Cole, March 3rd 2010 and April 2012 * Matt Gruenke, April 2012. * Bruce Merry, February 2013. * Tom Deakin and Simon McIntosh-Smith, July 2013 - * James Price, June-November 2015 - * - * \version 2.0.9 - * \date 2015-12-07 + * James Price, 2015- + * \version 2.2.0 + * \date 2019-09-18 * * Optional extension support * @@ -52,6 +39,20 @@ * #define CL_HPP_USE_DX_INTEROP * cl_khr_sub_groups * #define CL_HPP_USE_CL_SUB_GROUPS_KHR + * cl_khr_image2d_from_buffer + * #define CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR + * + * Doxygen documentation for this header is available here: + * + * http://khronosgroup.github.io/OpenCL-CLHPP/ + * + * The latest version of this header can be found on the GitHub releases page: + * + * https://github.com/KhronosGroup/OpenCL-CLHPP/releases + * + * Bugs and patches can be submitted to the GitHub repository: + * + * https://github.com/KhronosGroup/OpenCL-CLHPP */ /*! \mainpage @@ -59,10 +60,10 @@ * For many large applications C++ is the language of choice and so it seems * reasonable to define C++ bindings for OpenCL. * - * The interface is contained with a single C++ header file \em cl2.hpp and all + * The interface is contained with a single C++ header file \em opencl.hpp and all * definitions are contained within the namespace \em cl. There is no additional * requirement to include \em cl.h and to use either the C++ or original C - * bindings; it is enough to simply include \em cl2.hpp. + * bindings; it is enough to simply include \em opencl.hpp. * * The bindings themselves are lightweight and correspond closely to the * underlying C API. Using the C++ bindings introduces no additional execution @@ -71,7 +72,7 @@ * There are numerous compatibility, portability and memory management * fixes in the new header as well as additional OpenCL 2.0 features. * As a result the header is not directly backward compatible and for this - * reason we release it as cl2.hpp rather than a new version of cl.hpp. + * reason we release it as opencl.hpp rather than a new version of cl.hpp. * * * \section compatibility Compatibility @@ -134,41 +135,72 @@ * * \section parameterization Parameters * This header may be parameterized by a set of preprocessor macros. - * CL_HPP_TARGET_OPENCL_VERSION - * - Defines the target OpenCL runtime version to build the header against. - * Defaults to 200, representing OpenCL 2.0. - * CL_HPP_NO_STD_STRING - * - Do not use the standard library string class. - * cl::string is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_VECTOR - * - Do not use the standard library vector class. - * cl::vector is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_ARRAY - * - Do not use the standard library array class. - * cl::array is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_UNIQUE_PTR - * - Do not use the standard library unique_ptr class. - * cl::pointer and the cl::allocate_pointer function are not defined - * and may be defined by the user before cl2.hpp is included. - * CL_HPP_ENABLE_DEVICE_FISSION - * - Enables device fission for OpenCL 1.2 platforms - * CL_HPP_ENABLE_EXCEPTIONS - * - Enable exceptions for use in the C++ bindings header. - * This is the preferred error handling mechanism but is not required. - * CL_HPP_ENABLE_SIZE_T_COMPATIBILITY - * - Backward compatibility option to support cl.hpp-style size_t class. - * Replaces the updated std::array derived version and removal of size_t - * from the namespace. Note that in this case the new size_t class - * is placed in the cl::compatibility namespace and thus requires - * an additional using declaration for direct backward compatibility. - * CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY - * - Enable older vector of pairs interface for construction of programs. - * CL_HPP_CL_1_2_DEFAULT_BUILD - * - Default to OpenCL C 1.2 compilation rather than OpenCL C 2.0 - * - applies to use of cl::Program construction and other program build variants. + * + * - CL_HPP_TARGET_OPENCL_VERSION + * + * Defines the target OpenCL runtime version to build the header + * against. Defaults to 200, representing OpenCL 2.0. + * + * - CL_HPP_NO_STD_STRING + * + * Do not use the standard library string class. cl::string is not + * defined and may be defined by the user before opencl.hpp is + * included. + * + * - CL_HPP_NO_STD_VECTOR + * + * Do not use the standard library vector class. cl::vector is not + * defined and may be defined by the user before opencl.hpp is + * included. + * + * - CL_HPP_NO_STD_ARRAY + * + * Do not use the standard library array class. cl::array is not + * defined and may be defined by the user before opencl.hpp is + * included. + * + * - CL_HPP_NO_STD_UNIQUE_PTR + * + * Do not use the standard library unique_ptr class. cl::pointer and + * the cl::allocate_pointer functions are not defined and may be + * defined by the user before opencl.hpp is included. + * + * - CL_HPP_ENABLE_DEVICE_FISSION + * + * Enables device fission for OpenCL 1.2 platforms. + * + * - CL_HPP_ENABLE_EXCEPTIONS + * + * Enable exceptions for use in the C++ bindings header. This is the + * preferred error handling mechanism but is not required. + * + * - CL_HPP_ENABLE_SIZE_T_COMPATIBILITY + * + * Backward compatibility option to support cl.hpp-style size_t + * class. Replaces the updated std::array derived version and + * removal of size_t from the namespace. Note that in this case the + * new size_t class is placed in the cl::compatibility namespace and + * thus requires an additional using declaration for direct backward + * compatibility. + * + * - CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY + * + * Enable older vector of pairs interface for construction of + * programs. + * + * - CL_HPP_CL_1_2_DEFAULT_BUILD + * + * Default to OpenCL C 1.2 compilation rather than OpenCL C 2.0 + * applies to use of cl::Program construction and other program + * build variants. + * + * - CL_HPP_USE_CL_SUB_GROUPS_KHR + * + * Enable the cl_khr_subgroups extension. + * + * - CL_HPP_USE_IL_KHR + * + * Enable the cl_khr_il_program extension. * * * \section example Example @@ -177,19 +209,19 @@ * bindings, including support for the optional exception feature and * also the supplied vector and string classes, see following sections for * decriptions of these features. - * + * * \code #define CL_HPP_ENABLE_EXCEPTIONS #define CL_HPP_TARGET_OPENCL_VERSION 200 - - #include + + #include #include #include #include #include - + const int numElements = 32; - + int main(void) { // Filter for a 2.0 platform and set it as the default @@ -212,35 +244,45 @@ std::cout << "Error setting default platform."; return -1; } - - std::string kernel1{ - "global int globalA;" - "kernel void updateGlobal(){" - " globalA = 75;" - "}"}; - std::string kernel2{ - "typedef struct { global int *bar; } Foo; kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, global int *output, int val, write_only pipe int outPipe, queue_t childQueue){" - " output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar);" - " write_pipe(outPipe, &val);" - " queue_t default_queue = get_default_queue(); " - " ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); " - // Have a child kernel write into third quarter of output - " enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*2 + get_global_id(0)] = inputA[get_global_size(0)*2+get_global_id(0)] + inputB[get_global_size(0)*2+get_global_id(0)] + globalA;" - " });" - // Have a child kernel write into last quarter of output - " enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*3 + get_global_id(0)] = inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2;" - " });" - "}" }; + + // Use C++11 raw string literals for kernel source code + std::string kernel1{R"CLC( + global int globalA; + kernel void updateGlobal() + { + globalA = 75; + } + )CLC"}; + std::string kernel2{R"CLC( + typedef struct { global int *bar; } Foo; + kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, + global int *output, int val, write_only pipe int outPipe, queue_t childQueue) + { + output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar); + write_pipe(outPipe, &val); + queue_t default_queue = get_default_queue(); + ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); + + // Have a child kernel write into third quarter of output + enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, + ^{ + output[get_global_size(0)*2 + get_global_id(0)] = + inputA[get_global_size(0)*2 + get_global_id(0)] + inputB[get_global_size(0)*2 + get_global_id(0)] + globalA; + }); + + // Have a child kernel write into last quarter of output + enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, + ^{ + output[get_global_size(0)*3 + get_global_id(0)] = + inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2; + }); + } + )CLC"}; // New simpler string interface style std::vector programStrings {kernel1, kernel2}; - cl::Program vectorAddProgram( - programStrings); + cl::Program vectorAddProgram(programStrings); try { vectorAddProgram.build("-cl-std=CL2.0"); } @@ -251,7 +293,7 @@ for (auto &pair : buildInfo) { std::cerr << pair.second << std::endl << std::endl; } - + return 1; } @@ -264,17 +306,17 @@ program2Kernel( cl::EnqueueArgs( cl::NDRange(1))); - + ////////////////// // SVM allocations - - cl::pointer anSVMInt = cl::allocate_svm>(); + + auto anSVMInt = cl::allocate_svm>(); *anSVMInt = 5; - cl::SVMAllocator>> svmAllocReadOnly; + cl::SVMAllocator>> svmAllocReadOnly; auto fooPointer = cl::allocate_pointer(svmAllocReadOnly); fooPointer->bar = anSVMInt.get(); cl::SVMAllocator> svmAlloc; - std::vector>> inputA(numElements, 1, svmAlloc); + std::vector>> inputA(numElements, 1, svmAlloc); cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); // @@ -284,7 +326,7 @@ std::vector output(numElements, 0xdeadbeef); cl::Buffer outputBuffer(begin(output), end(output), false); cl::Pipe aPipe(sizeof(cl_int), numElements / 2); - + // Default command queue, also passed in as a parameter cl::DeviceCommandQueue defaultDeviceQueue = cl::DeviceCommandQueue::makeDefault( cl::Context::getDefault(), cl::Device::getDefault()); @@ -339,7 +381,7 @@ return 0; } - * + * * \endcode * */ @@ -351,61 +393,84 @@ * both and hence work with either version of the bindings. */ #if !defined(CL_HPP_USE_DX_INTEROP) && defined(USE_DX_INTEROP) -# pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") +# pragma message("opencl.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") # define CL_HPP_USE_DX_INTEROP #endif #if !defined(CL_HPP_USE_CL_DEVICE_FISSION) && defined(USE_CL_DEVICE_FISSION) -# pragma message("cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") +# pragma message("opencl.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") # define CL_HPP_USE_CL_DEVICE_FISSION #endif #if !defined(CL_HPP_ENABLE_EXCEPTIONS) && defined(__CL_ENABLE_EXCEPTIONS) -# pragma message("cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") +# pragma message("opencl.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") # define CL_HPP_ENABLE_EXCEPTIONS #endif #if !defined(CL_HPP_NO_STD_VECTOR) && defined(__NO_STD_VECTOR) -# pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") +# pragma message("opencl.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") # define CL_HPP_NO_STD_VECTOR #endif #if !defined(CL_HPP_NO_STD_STRING) && defined(__NO_STD_STRING) -# pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") +# pragma message("opencl.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") # define CL_HPP_NO_STD_STRING #endif #if defined(VECTOR_CLASS) -# pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") +# pragma message("opencl.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") #endif #if defined(STRING_CLASS) -# pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") +# pragma message("opencl.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") #endif #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) && defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -# pragma message("cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") +# pragma message("opencl.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") # define CL_HPP_USER_OVERRIDE_ERROR_STRINGS #endif /* Warn about features that are no longer supported */ #if defined(__USE_DEV_VECTOR) -# pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") +# pragma message("opencl.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") #endif #if defined(__USE_DEV_STRING) -# pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") +# pragma message("opencl.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") #endif /* Detect which version to target */ #if !defined(CL_HPP_TARGET_OPENCL_VERSION) -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") -# define CL_HPP_TARGET_OPENCL_VERSION 200 +# pragma message("opencl.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 300 (OpenCL 3.0)") +# define CL_HPP_TARGET_OPENCL_VERSION 300 #endif -#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") +#if CL_HPP_TARGET_OPENCL_VERSION != 100 && \ + CL_HPP_TARGET_OPENCL_VERSION != 110 && \ + CL_HPP_TARGET_OPENCL_VERSION != 120 && \ + CL_HPP_TARGET_OPENCL_VERSION != 200 && \ + CL_HPP_TARGET_OPENCL_VERSION != 210 && \ + CL_HPP_TARGET_OPENCL_VERSION != 220 && \ + CL_HPP_TARGET_OPENCL_VERSION != 300 +# pragma message("opencl.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220 or 300). It will be set to 300 (OpenCL 3.0).") # undef CL_HPP_TARGET_OPENCL_VERSION -# define CL_HPP_TARGET_OPENCL_VERSION 200 +# define CL_HPP_TARGET_OPENCL_VERSION 300 +#endif + +/* Forward target OpenCL version to C headers if necessary */ +#if defined(CL_TARGET_OPENCL_VERSION) +/* Warn if prior definition of CL_TARGET_OPENCL_VERSION is lower than + * requested C++ bindings version */ +#if CL_TARGET_OPENCL_VERSION < CL_HPP_TARGET_OPENCL_VERSION +# pragma message("CL_TARGET_OPENCL_VERSION is already defined as is lower than CL_HPP_TARGET_OPENCL_VERSION") +#endif +#else +# define CL_TARGET_OPENCL_VERSION CL_HPP_TARGET_OPENCL_VERSION #endif #if !defined(CL_HPP_MINIMUM_OPENCL_VERSION) # define CL_HPP_MINIMUM_OPENCL_VERSION 200 #endif -#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") +#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 110 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 120 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 200 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 210 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 220 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 300 +# pragma message("opencl.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220 or 300). It will be set to 100") # undef CL_HPP_MINIMUM_OPENCL_VERSION # define CL_HPP_MINIMUM_OPENCL_VERSION 100 #endif @@ -425,6 +490,12 @@ #if CL_HPP_MINIMUM_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) # define CL_USE_DEPRECATED_OPENCL_2_0_APIS #endif +#if CL_HPP_MINIMUM_OPENCL_VERSION <= 210 && !defined(CL_USE_DEPRECATED_OPENCL_2_1_APIS) +# define CL_USE_DEPRECATED_OPENCL_2_1_APIS +#endif +#if CL_HPP_MINIMUM_OPENCL_VERSION <= 220 && !defined(CL_USE_DEPRECATED_OPENCL_2_2_APIS) +# define CL_USE_DEPRECATED_OPENCL_2_2_APIS +#endif #ifdef _WIN32 @@ -459,14 +530,18 @@ #include #endif // !__APPLE__ -#if (__cplusplus >= 201103L) +#if (__cplusplus >= 201103L || _MSVC_LANG >= 201103L ) #define CL_HPP_NOEXCEPT_ noexcept #else #define CL_HPP_NOEXCEPT_ #endif -#if defined(_MSC_VER) +#if __cplusplus >= 201703L +# define CL_HPP_DEFINE_STATIC_MEMBER_ inline +#elif defined(_MSC_VER) # define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) +#elif defined(__MINGW32__) +# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((selectany)) #else # define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) #endif // !_MSC_VER @@ -745,6 +820,9 @@ static inline cl_int errHandler (cl_int err, const char * errStr = NULL) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 #define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#define __GET_KERNEL_SUB_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelSubGroupInfo) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 #define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) #define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) #define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) @@ -775,7 +853,13 @@ static inline cl_int errHandler (cl_int err, const char * errStr = NULL) #define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) #define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) #define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#define __CREATE_PROGRAM_WITH_IL_ERR CL_HPP_ERR_STR_(clCreateProgramWithIL) +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 +#define __CREATE_PROGRAM_WITH_IL_ERR CL_HPP_ERR_STR_(clCreateProgramWithIL) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 210 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 #define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 @@ -812,6 +896,11 @@ static inline cl_int errHandler (cl_int err, const char * errStr = NULL) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 #define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 +#define __ENQUEUE_MIGRATE_SVM_ERR CL_HPP_ERR_STR_(clEnqueueSVMMigrateMem) +#define __SET_DEFAULT_DEVICE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clSetDefaultDeviceCommandQueue) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 210 + #define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) #define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) @@ -826,6 +915,16 @@ static inline cl_int errHandler (cl_int err, const char * errStr = NULL) #define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) #define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 +#define __GET_HOST_TIMER_ERR CL_HPP_ERR_STR_(clGetHostTimer) +#define __GET_DEVICE_AND_HOST_TIMER_ERR CL_HPP_ERR_STR_(clGetDeviceAndHostTimer) +#endif +#if CL_HPP_TARGET_OPENCL_VERSION >= 220 +#define __SET_PROGRAM_RELEASE_CALLBACK_ERR CL_HPP_ERR_STR_(clSetProgramReleaseCallback) +#define __SET_PROGRAM_SPECIALIZATION_CONSTANT_ERR CL_HPP_ERR_STR_(clSetProgramSpecializationConstant) +#endif + + /** * CL 1.2 version that uses device fission. */ @@ -866,6 +965,10 @@ static inline cl_int errHandler (cl_int err, const char * errStr = NULL) #define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 +#define __CLONE_KERNEL_ERR CL_HPP_ERR_STR_(clCloneKernel) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 210 + #endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS //! \endcond @@ -895,14 +998,12 @@ inline cl_int getInfoHelper(Func f, cl_uint name, vector>* size_type numBinaries = param->size(); vector binariesPointers(numBinaries); - size_type totalSize = 0; for (size_type i = 0; i < numBinaries; ++i) { binariesPointers[i] = (*param)[i].data(); - totalSize += (*param)[i].size(); } - cl_int err = f(name, totalSize, binariesPointers.data(), NULL); + cl_int err = f(name, numBinaries * sizeof(unsigned char*), binariesPointers.data(), NULL); if (err != CL_SUCCESS) { return err; @@ -1094,6 +1195,8 @@ inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_ F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ @@ -1190,8 +1293,6 @@ inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_ F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ \ F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ @@ -1217,6 +1318,7 @@ inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_ F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ \ F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ + F(cl_device_info, CL_DEVICE_PARTITION_MAX_SUB_DEVICES, cl_uint) \ F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ @@ -1242,12 +1344,40 @@ inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_ F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_COMPLETE, cl_ulong) \ + F(cl_kernel_exec_info, CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, cl_bool) \ + F(cl_kernel_exec_info, CL_KERNEL_EXEC_INFO_SVM_PTRS, void**) \ F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) +#define CL_HPP_PARAM_NAME_INFO_SUBGROUP_KHR_(F) \ + F(cl_kernel_sub_group_info, CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR, size_type) \ + F(cl_kernel_sub_group_info, CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR, size_type) + +#define CL_HPP_PARAM_NAME_INFO_IL_KHR_(F) \ + F(cl_device_info, CL_DEVICE_IL_VERSION_KHR, string) \ + F(cl_program_info, CL_PROGRAM_IL_KHR, cl::vector) + +#define CL_HPP_PARAM_NAME_INFO_2_1_(F) \ + F(cl_platform_info, CL_PLATFORM_HOST_TIMER_RESOLUTION, size_type) \ + F(cl_program_info, CL_PROGRAM_IL, cl::vector) \ + F(cl_kernel_info, CL_KERNEL_MAX_NUM_SUB_GROUPS, size_type) \ + F(cl_kernel_info, CL_KERNEL_COMPILE_NUM_SUB_GROUPS, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_NUM_SUB_GROUPS, cl_uint) \ + F(cl_device_info, CL_DEVICE_IL_VERSION, string) \ + F(cl_device_info, CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS, cl_bool) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE_DEFAULT, cl::DeviceCommandQueue) \ + F(cl_kernel_sub_group_info, CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE, size_type) \ + F(cl_kernel_sub_group_info, CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE, size_type) \ + F(cl_kernel_sub_group_info, CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT, cl::detail::size_t_array) + +#define CL_HPP_PARAM_NAME_INFO_2_2_(F) \ + F(cl_program_info, CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT, cl_bool) \ + F(cl_program_info, CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT, cl_bool) + #define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ @@ -1255,6 +1385,43 @@ inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_ F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) +#define CL_HPP_PARAM_NAME_CL_KHR_EXTENDED_VERSIONING_CL3_SHARED_(F) \ + F(cl_platform_info, CL_PLATFORM_NUMERIC_VERSION_KHR, cl_version_khr) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR, cl::vector) \ + \ + F(cl_device_info, CL_DEVICE_NUMERIC_VERSION_KHR, cl_version_khr) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR, cl::vector) \ + F(cl_device_info, CL_DEVICE_ILS_WITH_VERSION_KHR, cl::vector) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR, cl::vector) + +#define CL_HPP_PARAM_NAME_CL_KHR_EXTENDED_VERSIONING_KHRONLY_(F) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR, cl_version_khr) + +#define CL_HPP_PARAM_NAME_INFO_3_0_(F) \ + F(cl_platform_info, CL_PLATFORM_NUMERIC_VERSION, cl_version) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS_WITH_VERSION, cl::vector) \ + \ + F(cl_device_info, CL_DEVICE_NUMERIC_VERSION, cl_version) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS_WITH_VERSION, cl::vector) \ + F(cl_device_info, CL_DEVICE_ILS_WITH_VERSION, cl::vector) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION, cl::vector) \ + F(cl_device_info, CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES, cl_device_atomic_capabilities) \ + F(cl_device_info, CL_DEVICE_ATOMIC_FENCE_CAPABILITIES, cl_device_atomic_capabilities) \ + F(cl_device_info, CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_ALL_VERSIONS, cl::vector) \ + F(cl_device_info, CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ + F(cl_device_info, CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_FEATURES, cl::vector) \ + F(cl_device_info, CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES, cl_device_device_enqueue_capabilities) \ + F(cl_device_info, CL_DEVICE_PIPE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED, string) \ + \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES_ARRAY, cl::vector) \ + F(cl_mem_info, CL_MEM_PROPERTIES, cl::vector) \ + F(cl_pipe_info, CL_PIPE_PROPERTIES, cl::vector) \ + F(cl_sampler_info, CL_SAMPLER_PROPERTIES, cl::vector) + template struct param_traits {}; @@ -1273,10 +1440,27 @@ CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_) #endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 +CL_HPP_PARAM_NAME_INFO_2_1_(CL_HPP_DECLARE_PARAM_TRAITS_) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 210 +#if CL_HPP_TARGET_OPENCL_VERSION >= 220 +CL_HPP_PARAM_NAME_INFO_2_2_(CL_HPP_DECLARE_PARAM_TRAITS_) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 220 +#if CL_HPP_TARGET_OPENCL_VERSION >= 300 +CL_HPP_PARAM_NAME_INFO_3_0_(CL_HPP_DECLARE_PARAM_TRAITS_) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 300 + +#if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) && CL_HPP_TARGET_OPENCL_VERSION < 210 +CL_HPP_PARAM_NAME_INFO_SUBGROUP_KHR_(CL_HPP_DECLARE_PARAM_TRAITS_) +#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) && CL_HPP_TARGET_OPENCL_VERSION < 210 + +#if defined(CL_HPP_USE_IL_KHR) +CL_HPP_PARAM_NAME_INFO_IL_KHR_(CL_HPP_DECLARE_PARAM_TRAITS_) +#endif // #if defined(CL_HPP_USE_IL_KHR) // Flags deprecated in OpenCL 2.0 @@ -1305,6 +1489,13 @@ CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_); #endif // CL_HPP_USE_CL_DEVICE_FISSION +#if defined(cl_khr_extended_versioning) +#if CL_HPP_TARGET_OPENCL_VERSION < 300 +CL_HPP_PARAM_NAME_CL_KHR_EXTENDED_VERSIONING_CL3_SHARED_(CL_HPP_DECLARE_PARAM_TRAITS_) +#endif // CL_HPP_TARGET_OPENCL_VERSION < 300 +CL_HPP_PARAM_NAME_CL_KHR_EXTENDED_VERSIONING_KHRONLY_(CL_HPP_DECLARE_PARAM_TRAITS_) +#endif // cl_khr_extended_versioning + #ifdef CL_PLATFORM_ICD_SUFFIX_KHR CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, string) #endif @@ -1344,6 +1535,22 @@ CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUT CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) #endif +#ifdef CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM +CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM, cl_ulong) +#endif +#ifdef CL_DEVICE_JOB_SLOTS_ARM +CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_JOB_SLOTS_ARM, cl_uint) +#endif +#ifdef CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM +CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM, cl_bitfield) +#endif +#ifdef CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM +CL_HPP_DECLARE_PARAM_TRAITS_(cl_kernel_exec_info, CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM, cl_uint) +#endif +#ifdef CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM +CL_HPP_DECLARE_PARAM_TRAITS_(cl_kernel_exec_info, CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM, cl_int) +#endif + #ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) #endif @@ -1534,8 +1741,8 @@ struct ReferenceHandler { return ::clReleaseEvent(event); } }; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 // Extracts version number with major in the upper 16 bits, minor in the lower 16 static cl_uint getVersion(const vector &versionInfo) { @@ -1556,12 +1763,11 @@ static cl_uint getVersion(const vector &versionInfo) return (highVersion << 16) | lowVersion; } - static cl_uint getPlatformVersion(cl_platform_id platform) { size_type size = 0; clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - + vector versionInfo(size); clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); return getVersion(versionInfo); @@ -1655,10 +1861,7 @@ class Wrapper cl_type& operator ()() { return object_; } - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - + cl_type get() const { return object_; } protected: template @@ -1784,9 +1987,7 @@ class Wrapper cl_type& operator ()() { return object_; } - const cl_type get() const { return object_; } - - cl_type get() { return object_; } + cl_type get() const { return object_; } protected: template @@ -1896,9 +2097,6 @@ struct ImageFormat : public cl_image_format image_channel_data_type = type; } - //! \brief Default constexpr copy constructor. - constexpr ImageFormat(const ImageFormat& rhs) = default; - //! \brief Assignment operator. ImageFormat& operator = (const ImageFormat& rhs) { @@ -2040,7 +2238,7 @@ class Device : public detail::Wrapper } //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -2053,6 +2251,53 @@ class Device : public detail::Wrapper return param; } + +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 + /** + * Return the current value of the host clock as seen by the device. + * The resolution of the device timer may be queried with the + * CL_DEVICE_PROFILING_TIMER_RESOLUTION query. + * @return The host timer value. + */ + cl_ulong getHostTimer(cl_int *error = nullptr) + { + cl_ulong retVal = 0; + cl_int err = + clGetHostTimer(this->get(), &retVal); + detail::errHandler( + err, + __GET_HOST_TIMER_ERR); + if (error) { + *error = err; + } + return retVal; + } + + /** + * Return a synchronized pair of host and device timestamps as seen by device. + * Use to correlate the clocks and get the host timer only using getHostTimer + * as a lower cost mechanism in between calls. + * The resolution of the host timer may be queried with the + * CL_PLATFORM_HOST_TIMER_RESOLUTION query. + * The resolution of the device timer may be queried with the + * CL_DEVICE_PROFILING_TIMER_RESOLUTION query. + * @return A pair of (device timer, host timer) timer values. + */ + std::pair getDeviceAndHostTimer(cl_int *error = nullptr) + { + std::pair retVal; + cl_int err = + clGetDeviceAndHostTimer(this->get(), &(retVal.first), &(retVal.second)); + detail::errHandler( + err, + __GET_DEVICE_AND_HOST_TIMER_ERR); + if (error) { + *error = err; + } + return retVal; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + /** * CL 1.2 version */ @@ -2271,7 +2516,8 @@ class Platform : public detail::Wrapper } //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, string* param) const + template + cl_int getInfo(cl_platform_info name, T* param) const { return detail::errHandler( detail::getInfo(&::clGetPlatformInfo, object_, name, param), @@ -2279,7 +2525,7 @@ class Platform : public detail::Wrapper } //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -2305,14 +2551,16 @@ class Platform : public detail::Wrapper return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { + if (err != CL_SUCCESS && err != CL_DEVICE_NOT_FOUND) { return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } vector ids(n); - err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + if (n>0) { + err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } } // Cannot trivially assign because we need to capture intermediates @@ -2632,6 +2880,10 @@ class Context } } + /*! \brief Constructs a context including a specific device. + * + * Wraps clCreateContext(). + */ Context( const Device& device, cl_context_properties* properties = NULL, @@ -2703,7 +2955,9 @@ class Context error = platforms[i].getDevices(type, &devices); #if defined(CL_HPP_ENABLE_EXCEPTIONS) - } catch (Error) {} + } catch (cl::Error& e) { + error = e.err(); + } // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type // We do error checking next anyway, and can throw there if needed #endif @@ -2832,7 +3086,7 @@ class Context } //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -2974,7 +3228,7 @@ class Event : public detail::Wrapper } //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -2997,7 +3251,7 @@ class Event : public detail::Wrapper } //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getProfilingInfo(cl_int* err = NULL) const { @@ -3028,7 +3282,7 @@ class Event : public detail::Wrapper */ cl_int setCallback( cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), + void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), void * user_data = NULL) { return detail::errHandler( @@ -3189,7 +3443,7 @@ class Memory : public detail::Wrapper } //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -3217,7 +3471,7 @@ class Memory : public detail::Wrapper * value - not the Memory class instance. */ cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), + void (CL_CALLBACK * pfn_notify)(cl_mem, void *), void * user_data = NULL) { return detail::errHandler( @@ -3419,7 +3673,7 @@ class SVMAllocator { context_(), SVMTrait::getSVMMemFlags(), size*sizeof(T), - sizeof(T)); + 0); pointer retValue = reinterpret_cast( voidPointer); #if defined(CL_HPP_ENABLE_EXCEPTIONS) @@ -3455,7 +3709,7 @@ class SVMAllocator { { size_type maxSize = std::numeric_limits::max() / sizeof(T); - for (Device &d : context_.getInfo()) { + for (const Device &d : context_.getInfo()) { maxSize = std::min( maxSize, static_cast(d.getInfo())); @@ -3542,7 +3796,7 @@ template cl::pointer> allocate_pointer(const Alloc &alloc_, Args&&... args) { Alloc alloc(alloc_); - static const size_t copies = 1; + static const size_type copies = 1; // Ensure that creation of the management block and the // object are dealt with separately such that we only provide a deleter @@ -3560,7 +3814,7 @@ cl::pointer> allocate_pointer(const Alloc &alloc_, Arg return cl::pointer>(tmp, detail::Deleter{alloc, copies}); } - catch (std::bad_alloc b) + catch (std::bad_alloc& b) { std::allocator_traits::deallocate(alloc, tmp, copies); throw; @@ -3808,7 +4062,7 @@ class Buffer : public Memory } return result; - } + } #endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 }; @@ -4187,7 +4441,7 @@ class Image : public Memory } //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getImageInfo(cl_int* err = NULL) const { @@ -4550,7 +4804,7 @@ class Image2D : public Image #endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 } -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) /*! \brief Constructs a 2D Image from a buffer. * \note This will share storage with the underlying buffer. * @@ -4591,7 +4845,7 @@ class Image2D : public Image *err = error; } } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Constructs a 2D Image from an image. @@ -5336,7 +5590,7 @@ class Pipe : public Memory } //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -5469,7 +5723,7 @@ class Sampler : public detail::Wrapper } //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -5692,7 +5946,7 @@ class Kernel : public detail::Wrapper __GET_KERNEL_INFO_ERR); } - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -5714,7 +5968,7 @@ class Kernel : public detail::Wrapper __GET_KERNEL_ARG_INFO_ERR); } - template typename + template typename detail::param_traits::param_type getArgInfo(cl_uint argIndex, cl_int* err = NULL) const { @@ -5738,7 +5992,7 @@ class Kernel : public detail::Wrapper __GET_KERNEL_WORK_GROUP_INFO_ERR); } - template typename + template typename detail::param_traits::param_type getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { @@ -5751,20 +6005,29 @@ class Kernel : public detail::Wrapper return param; } -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) +#if (CL_HPP_TARGET_OPENCL_VERSION >= 200 && defined(CL_HPP_USE_CL_SUB_GROUPS_KHR)) || CL_HPP_TARGET_OPENCL_VERSION >= 210 cl_int getSubGroupInfo(const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type* param) const { +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 + + return detail::errHandler( + clGetKernelSubGroupInfo(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), + __GET_KERNEL_SUB_GROUP_INFO_ERR); + +#else // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); return detail::errHandler( pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), - __GET_KERNEL_ARG_INFO_ERR); + __GET_KERNEL_SUB_GROUP_INFO_ERR); + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 } - template + template size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const { size_type param; @@ -5774,7 +6037,6 @@ class Kernel : public detail::Wrapper } return param; } -#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) #endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 @@ -5886,27 +6148,28 @@ class Kernel : public detail::Wrapper ); } - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0, Ts... ts) + template + void setSVMPointersHelper(std::array &pointerList, const pointer &t0, const pointer &t1, Ts & ... ts) { pointerList[index] = static_cast(t0.get()); - setSVMPointersHelper(ts...); + setSVMPointersHelper(pointerList, t1, ts...); } - template + template typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0, Ts... ts) + setSVMPointersHelper(std::array &pointerList, T0 t0, T1 t1, Ts... ts) { pointerList[index] = static_cast(t0); - setSVMPointersHelper(ts...); + setSVMPointersHelper(pointerList, t1, ts...); } - + template void setSVMPointersHelper(std::array &pointerList, const pointer &t0) { pointerList[index] = static_cast(t0.get()); } + template typename std::enable_if::value, void>::type setSVMPointersHelper(std::array &pointerList, T0 t0) @@ -5915,7 +6178,7 @@ class Kernel : public detail::Wrapper } template - cl_int setSVMPointers(const T0 &t0, Ts... ts) + cl_int setSVMPointers(const T0 &t0, Ts & ... ts) { std::array pointerList; @@ -5927,7 +6190,40 @@ class Kernel : public detail::Wrapper sizeof(void*)*(1 + sizeof...(Ts)), pointerList.data())); } + + template + cl_int setExecInfo(cl_kernel_exec_info param_name, const T& val) + { + return detail::errHandler( + ::clSetKernelExecInfo( + object_, + param_name, + sizeof(T), + &val)); + } + + template + cl_int setExecInfo(typename detail::param_traits::param_type& val) + { + return setExecInfo(name, val); + } #endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 + /** + * Make a deep copy of the kernel object including its arguments. + * @return A new kernel object with internal state entirely separate from that + * of the original but with any arguments set on the original intact. + */ + Kernel clone() + { + cl_int error; + Kernel retValue(clCloneKernel(this->get(), &error)); + + detail::errHandler(error, __CLONE_KERNEL_ERR); + return retValue; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 }; /*! \class Program @@ -6090,6 +6386,116 @@ class Program : public detail::Wrapper } } + +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 || (CL_HPP_TARGET_OPENCL_VERSION==200 && defined(CL_HPP_USE_IL_KHR)) + /** + * Program constructor to allow construction of program from SPIR-V or another IL. + * Valid for either OpenCL >= 2.1 or when CL_HPP_USE_IL_KHR is defined. + */ + Program( + const vector& IL, + bool build = false, + cl_int* err = NULL) + { + cl_int error; + + Context context = Context::getDefault(err); + +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 + + object_ = ::clCreateProgramWithIL( + context(), static_cast(IL.data()), IL.size(), &error); + +#else // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + + typedef clCreateProgramWithILKHR_fn PFN_clCreateProgramWithILKHR; + static PFN_clCreateProgramWithILKHR pfn_clCreateProgramWithILKHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateProgramWithILKHR); + + return detail::errHandler( + pfn_clCreateProgramWithILKHR( + context(), static_cast(IL.data()), IL.size(), &error); + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + + detail::errHandler(error, __CREATE_PROGRAM_WITH_IL_ERR); + + if (error == CL_SUCCESS && build) { + + error = ::clBuildProgram( + object_, + 0, + NULL, +#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + "-cl-std=CL2.0", +#else + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, + NULL); + + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); + } + + if (err != NULL) { + *err = error; + } + } + + /** + * Program constructor to allow construction of program from SPIR-V or another IL + * for a specific context. + * Valid for either OpenCL >= 2.1 or when CL_HPP_USE_IL_KHR is defined. + */ + Program( + const Context& context, + const vector& IL, + bool build = false, + cl_int* err = NULL) + { + cl_int error; + +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 + + object_ = ::clCreateProgramWithIL( + context(), static_cast(IL.data()), IL.size(), &error); + +#else // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + + typedef clCreateProgramWithILKHR_fn PFN_clCreateProgramWithILKHR; + static PFN_clCreateProgramWithILKHR pfn_clCreateProgramWithILKHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateProgramWithILKHR); + + return detail::errHandler( + pfn_clCreateProgramWithILKHR( + context(), static_cast(IL.data()), IL.size(), &error); + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + + detail::errHandler(error, __CREATE_PROGRAM_WITH_IL_ERR); + + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram( + object_, + 0, + NULL, +#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + "-cl-std=CL2.0", +#else + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, + NULL); + + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); + } + + if (err != NULL) { + *err = error; + } + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + /** * Construct a program object from a list of devices and a per-device list of binaries. * \param context A valid OpenCL context in which to construct the program. @@ -6205,7 +6611,7 @@ class Program : public detail::Wrapper Program() { } - /*! \brief Constructor from cl_mem - takes ownership. + /*! \brief Constructor from cl_program - takes ownership. * * \param retainObject will cause the constructor to retain its cl object. * Defaults to false to maintain compatibility with @@ -6274,34 +6680,54 @@ class Program : public detail::Wrapper } cl_int build( + const Device& device, const char* options = NULL, void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, void* data = NULL) const { + cl_device_id deviceID = device(); + cl_int buildError = ::clBuildProgram( object_, - 0, - NULL, + 1, + &deviceID, options, notifyFptr, data); - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); + BuildLogType buildLog(1); + buildLog.push_back(std::make_pair(device, getBuildInfo(device))); + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, buildLog); } -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int compile( + cl_int build( const char* options = NULL, void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, void* data = NULL) const { - cl_int error = ::clCompileProgram( + cl_int buildError = ::clBuildProgram( object_, 0, NULL, options, - 0, + notifyFptr, + data); + + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); + } + +#if CL_HPP_TARGET_OPENCL_VERSION >= 120 + cl_int compile( + const char* options = NULL, + void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, + void* data = NULL) const + { + cl_int error = ::clCompileProgram( + object_, + 0, + NULL, + options, + 0, NULL, NULL, notifyFptr, @@ -6318,7 +6744,7 @@ class Program : public detail::Wrapper __GET_PROGRAM_INFO_ERR); } - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -6341,7 +6767,7 @@ class Program : public detail::Wrapper __GET_PROGRAM_BUILD_INFO_ERR); } - template typename + template typename detail::param_traits::param_type getBuildInfo(const Device& device, cl_int* err = NULL) const { @@ -6359,7 +6785,7 @@ class Program : public detail::Wrapper * info type and for all devices in the program. * On an error reading the info for any device, an empty vector of info will be returned. */ - template + template vector::param_type>> getBuildInfo(cl_int *err = NULL) const { @@ -6377,7 +6803,7 @@ class Program : public detail::Wrapper return devInfo; } - for (cl::Device d : devs) { + for (const cl::Device &d : devs) { typename detail::param_traits< detail::cl_program_build_info, name>::param_type param; result = getBuildInfo(d, name, ¶m); @@ -6427,6 +6853,64 @@ class Program : public detail::Wrapper } return CL_SUCCESS; } + +#if CL_HPP_TARGET_OPENCL_VERSION >= 220 +#if defined(CL_USE_DEPRECATED_OPENCL_2_2_APIS) + /*! \brief Registers a callback function to be called when destructors for + * program scope global variables are complete and before the + * program is released. + * + * Wraps clSetProgramReleaseCallback(). + * + * Each call to this function registers the specified user callback function + * on a callback stack associated with program. The registered user callback + * functions are called in the reverse order in which they were registered. + */ + CL_EXT_PREFIX__VERSION_2_2_DEPRECATED cl_int setReleaseCallback( + void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), + void * user_data = NULL) CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED + { + return detail::errHandler( + ::clSetProgramReleaseCallback( + object_, + pfn_notify, + user_data), + __SET_PROGRAM_RELEASE_CALLBACK_ERR); + } +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_2_2_APIS) + + /*! \brief Sets a SPIR-V specialization constant. + * + * Wraps clSetProgramSpecializationConstant(). + */ + template + typename std::enable_if::value, cl_int>::type + setSpecializationConstant(cl_uint index, const T &value) + { + return detail::errHandler( + ::clSetProgramSpecializationConstant( + object_, + index, + sizeof(value), + &value), + __SET_PROGRAM_SPECIALIZATION_CONSTANT_ERR); + } + + /*! \brief Sets a SPIR-V specialization constant. + * + * Wraps clSetProgramSpecializationConstant(). + */ + cl_int setSpecializationConstant(cl_uint index, size_type size, const void* value) + { + return detail::errHandler( + ::clSetProgramSpecializationConstant( + object_, + index, + size, + value), + __SET_PROGRAM_SPECIALIZATION_CONSTANT_ERR); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 220 }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 @@ -6524,7 +7008,7 @@ inline cl_int cl::Program::getInfo(cl_program_info name, vectorresize(numBinaries); - for (int i = 0; i < numBinaries; ++i) { + for (size_type i = 0; i < numBinaries; ++i) { (*param)[i].resize(sizes[i]); } @@ -6548,6 +7032,22 @@ inline vector> cl::Program::getInfo(c return binariesVectors; } +#if CL_HPP_TARGET_OPENCL_VERSION >= 220 +// Template specialization for clSetProgramSpecializationConstant +template <> +inline cl_int cl::Program::setSpecializationConstant(cl_uint index, const bool &value) +{ + cl_uchar ucValue = value ? CL_UCHAR_MAX : 0; + return detail::errHandler( + ::clSetProgramSpecializationConstant( + object_, + index, + sizeof(ucValue), + &ucValue), + __SET_PROGRAM_SPECIALIZATION_CONSTANT_ERR); +} +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 220 + inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { cl_int error; @@ -6658,31 +7158,49 @@ class CommandQueue : public detail::Wrapper } else { Device device = context.getInfo()[0]; + bool useWithProperties; -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useWithProperties = (version >= 0x20000); // OpenCL 2.0 or above } +#elif CL_HPP_TARGET_OPENCL_VERSION >= 200 + useWithProperties = true; +#else + useWithProperties = false; +#endif - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (useWithProperties) { + cl_queue_properties queue_properties[] = { + CL_QUEUE_PROPERTIES, properties, 0 }; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = ::clCreateCommandQueueWithProperties( + context(), device(), queue_properties, &error); + } + else { + error = CL_INVALID_QUEUE_PROPERTIES; + } + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 200 + if (!useWithProperties) { + object_ = ::clCreateCommandQueue( + context(), device(), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } -#endif +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 } } @@ -6706,28 +7224,46 @@ class CommandQueue : public detail::Wrapper } else { Device device = context.getInfo()[0]; + bool useWithProperties; -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useWithProperties = (version >= 0x20000); // OpenCL 2.0 or above + } +#elif CL_HPP_TARGET_OPENCL_VERSION >= 200 + useWithProperties = true; +#else + useWithProperties = false; +#endif - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (useWithProperties) { + cl_queue_properties queue_properties[] = { + CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; + object_ = ::clCreateCommandQueueWithProperties( + context(), device(), queue_properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 200 + if (!useWithProperties) { + object_ = ::clCreateCommandQueue( + context(), device(), static_cast(properties), &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } -#endif +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 + } } @@ -6741,6 +7277,7 @@ class CommandQueue : public detail::Wrapper cl_int* err = NULL) { cl_int error; + bool useWithProperties; vector devices; error = context.getInfo(CL_CONTEXT_DEVICES, &devices); @@ -6754,31 +7291,47 @@ class CommandQueue : public detail::Wrapper return; } -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useWithProperties = (version >= 0x20000); // OpenCL 2.0 or above } +#elif CL_HPP_TARGET_OPENCL_VERSION >= 200 + useWithProperties = true; #else - object_ = ::clCreateCommandQueue( - context(), devices[0](), properties, &error); + useWithProperties = false; +#endif - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (useWithProperties) { + cl_queue_properties queue_properties[] = { + CL_QUEUE_PROPERTIES, properties, 0 }; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = ::clCreateCommandQueueWithProperties( + context(), devices[0](), queue_properties, &error); + } + else { + error = CL_INVALID_QUEUE_PROPERTIES; + } + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } } -#endif +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 200 + if (!useWithProperties) { + object_ = ::clCreateCommandQueue( + context(), devices[0](), properties, &error); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 } /*! @@ -6791,6 +7344,7 @@ class CommandQueue : public detail::Wrapper cl_int* err = NULL) { cl_int error; + bool useWithProperties; vector devices; error = context.getInfo(CL_CONTEXT_DEVICES, &devices); @@ -6804,26 +7358,42 @@ class CommandQueue : public detail::Wrapper return; } -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useWithProperties = (version >= 0x20000); // OpenCL 2.0 or above } +#elif CL_HPP_TARGET_OPENCL_VERSION >= 200 + useWithProperties = true; #else - object_ = ::clCreateCommandQueue( - context(), devices[0](), static_cast(properties), &error); + useWithProperties = false; +#endif - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (useWithProperties) { + cl_queue_properties queue_properties[] = { + CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; + object_ = ::clCreateCommandQueueWithProperties( + context(), devices[0](), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } } -#endif +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 200 + if (!useWithProperties) { + object_ = ::clCreateCommandQueue( + context(), devices[0](), static_cast(properties), &error); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 } /*! @@ -6837,26 +7407,44 @@ class CommandQueue : public detail::Wrapper cl_int* err = NULL) { cl_int error; + bool useWithProperties; -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useWithProperties = (version >= 0x20000); // OpenCL 2.0 or above } +#elif CL_HPP_TARGET_OPENCL_VERSION >= 200 + useWithProperties = true; #else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + useWithProperties = false; +#endif - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (useWithProperties) { + cl_queue_properties queue_properties[] = { + CL_QUEUE_PROPERTIES, properties, 0 }; + object_ = ::clCreateCommandQueueWithProperties( + context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } } -#endif +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 200 + if (!useWithProperties) { + object_ = ::clCreateCommandQueue( + context(), device(), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 } /*! @@ -6869,19 +7457,36 @@ class CommandQueue : public detail::Wrapper QueueProperties properties, cl_int* err = NULL) { - cl_int error; + cl_int error; + bool useWithProperties; + +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useWithProperties = (version >= 0x20000); // OpenCL 2.0 or above + } +#elif CL_HPP_TARGET_OPENCL_VERSION >= 200 + useWithProperties = true; +#else + useWithProperties = false; +#endif #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (useWithProperties) { cl_queue_properties queue_properties[] = { CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; object_ = ::clCreateCommandQueueWithProperties( context(), device(), queue_properties, &error); - + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); if (err != NULL) { *err = error; } -#else + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 200 + if (!useWithProperties) { object_ = ::clCreateCommandQueue( context(), device(), static_cast(properties), &error); @@ -6889,8 +7494,9 @@ class CommandQueue : public detail::Wrapper if (err != NULL) { *err = error; } -#endif } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 + } static CommandQueue getDefault(cl_int * err = NULL) { @@ -6923,7 +7529,7 @@ class CommandQueue : public detail::Wrapper CommandQueue() { } - /*! \brief Constructor from cl_mem - takes ownership. + /*! \brief Constructor from cl_command_queue - takes ownership. * * \param retainObject will cause the constructor to retain its cl object. * Defaults to false to maintain compatibility with @@ -6975,7 +7581,7 @@ class CommandQueue : public detail::Wrapper __GET_COMMAND_QUEUE_INFO_ERR); } - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -7061,7 +7667,7 @@ class CommandQueue : public detail::Wrapper return err; } - +#if CL_HPP_TARGET_OPENCL_VERSION >= 110 cl_int enqueueReadBufferRect( const Buffer& buffer, cl_bool blocking, @@ -7111,7 +7717,7 @@ class CommandQueue : public detail::Wrapper size_type buffer_slice_pitch, size_type host_row_pitch, size_type host_slice_pitch, - void *ptr, + const void *ptr, const vector* events = NULL, Event* event = NULL) const { @@ -7176,7 +7782,7 @@ class CommandQueue : public detail::Wrapper return err; } - +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * Enqueue a command to fill a buffer object with a pattern @@ -7259,7 +7865,7 @@ class CommandQueue : public detail::Wrapper const array& region, size_type row_pitch, size_type slice_pitch, - void* ptr, + const void* ptr, const vector* events = NULL, Event* event = NULL) const { @@ -7608,7 +8214,7 @@ class CommandQueue : public detail::Wrapper { cl_event tmp; cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(container.data()), container.size(), + object_, blocking, flags, static_cast(container.data()), container.size()*sizeof(T), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), @@ -7734,7 +8340,7 @@ class CommandQueue : public detail::Wrapper */ cl_int enqueueMarkerWithWaitList( const vector *events = 0, - Event *event = 0) + Event *event = 0) const { cl_event tmp; cl_int err = detail::errHandler( @@ -7764,7 +8370,7 @@ class CommandQueue : public detail::Wrapper */ cl_int enqueueBarrierWithWaitList( const vector *events = 0, - Event *event = 0) + Event *event = 0) const { cl_event tmp; cl_int err = detail::errHandler( @@ -7790,7 +8396,7 @@ class CommandQueue : public detail::Wrapper cl_mem_migration_flags flags, const vector* events = NULL, Event* event = NULL - ) + ) const { cl_event tmp; @@ -7799,8 +8405,7 @@ class CommandQueue : public detail::Wrapper for( int i = 0; i < (int)memObjects.size(); ++i ) { localMemObjects[i] = memObjects[i](); } - - + cl_int err = detail::errHandler( ::clEnqueueMigrateMemObjects( object_, @@ -7819,6 +8424,128 @@ class CommandQueue : public detail::Wrapper } #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 + /** + * Enqueues a command that will allow the host associate ranges within a set of + * SVM allocations with a device. + * @param sizes - The length from each pointer to migrate. + */ + template + cl_int enqueueMigrateSVM( + const cl::vector &svmRawPointers, + const cl::vector &sizes, + cl_mem_migration_flags flags = 0, + const vector* events = NULL, + Event* event = NULL) const + { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueSVMMigrateMem( + object_, + svmRawPointers.size(), static_cast(svmRawPointers.data()), + sizes.data(), // array of sizes not passed + flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MIGRATE_SVM_ERR); + + if (event != NULL && err == CL_SUCCESS) + *event = tmp; + + return err; + } + + /** + * Enqueues a command that will allow the host associate a set of SVM allocations with + * a device. + */ + template + cl_int enqueueMigrateSVM( + const cl::vector &svmRawPointers, + cl_mem_migration_flags flags = 0, + const vector* events = NULL, + Event* event = NULL) const + { + return enqueueMigrateSVM(svmRawPointers, cl::vector(svmRawPointers.size()), flags, events, event); + } + + + /** + * Enqueues a command that will allow the host associate ranges within a set of + * SVM allocations with a device. + * @param sizes - The length from each pointer to migrate. + */ + template + cl_int enqueueMigrateSVM( + const cl::vector> &svmPointers, + const cl::vector &sizes, + cl_mem_migration_flags flags = 0, + const vector* events = NULL, + Event* event = NULL) const + { + cl::vector svmRawPointers; + svmRawPointers.reserve(svmPointers.size()); + for (auto p : svmPointers) { + svmRawPointers.push_back(static_cast(p.get())); + } + + return enqueueMigrateSVM(svmRawPointers, sizes, flags, events, event); + } + + + /** + * Enqueues a command that will allow the host associate a set of SVM allocations with + * a device. + */ + template + cl_int enqueueMigrateSVM( + const cl::vector> &svmPointers, + cl_mem_migration_flags flags = 0, + const vector* events = NULL, + Event* event = NULL) const + { + return enqueueMigrateSVM(svmPointers, cl::vector(svmPointers.size()), flags, events, event); + } + + /** + * Enqueues a command that will allow the host associate ranges within a set of + * SVM allocations with a device. + * @param sizes - The length from the beginning of each container to migrate. + */ + template + cl_int enqueueMigrateSVM( + const cl::vector> &svmContainers, + const cl::vector &sizes, + cl_mem_migration_flags flags = 0, + const vector* events = NULL, + Event* event = NULL) const + { + cl::vector svmRawPointers; + svmRawPointers.reserve(svmContainers.size()); + for (auto p : svmContainers) { + svmRawPointers.push_back(static_cast(p.data())); + } + + return enqueueMigrateSVM(svmRawPointers, sizes, flags, events, event); + } + + /** + * Enqueues a command that will allow the host associate a set of SVM allocations with + * a device. + */ + template + cl_int enqueueMigrateSVM( + const cl::vector> &svmContainers, + cl_mem_migration_flags flags = 0, + const vector* events = NULL, + Event* event = NULL) const + { + return enqueueMigrateSVM(svmContainers, cl::vector(svmContainers.size()), flags, events, event); + } + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 + cl_int enqueueNDRangeKernel( const Kernel& kernel, const NDRange& offset, @@ -7849,7 +8576,7 @@ class CommandQueue : public detail::Wrapper CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask( const Kernel& kernel, const vector* events = NULL, - Event* event = NULL) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED const + Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED { cl_event tmp; cl_int err = detail::errHandler( @@ -8234,7 +8961,7 @@ class DeviceCommandQueue : public detail::Wrapper __GET_COMMAND_QUEUE_INFO_ERR); } - template typename + template typename detail::param_traits::param_type getInfo(cl_int* err = NULL) const { @@ -8248,11 +8975,11 @@ class DeviceCommandQueue : public detail::Wrapper } /*! - * Create a new default device command queue for the default device, - * in the default context and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ + * Create a new default device command queue for the default device, + * in the default context and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ static DeviceCommandQueue makeDefault( cl_int *err = nullptr) { @@ -8278,11 +9005,11 @@ class DeviceCommandQueue : public detail::Wrapper } /*! - * Create a new default device command queue for the specified device - * and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ + * Create a new default device command queue for the specified device + * and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ static DeviceCommandQueue makeDefault( const Context &context, const Device &device, cl_int *err = nullptr) { @@ -8333,6 +9060,37 @@ class DeviceCommandQueue : public detail::Wrapper return deviceQueue; } + + + +#if CL_HPP_TARGET_OPENCL_VERSION >= 210 + /*! + * Modify the default device command queue to be used for subsequent kernels. + * This can update the default command queue for a device repeatedly to account + * for kernels that rely on the default. + * @return updated default device command queue. + */ + static DeviceCommandQueue updateDefault(const Context &context, const Device &device, const DeviceCommandQueue &default_queue, cl_int *err = nullptr) + { + cl_int error; + error = clSetDefaultDeviceCommandQueue(context.get(), device.get(), default_queue.get()); + + detail::errHandler(error, __SET_DEFAULT_DEVICE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } + return default_queue; + } + + /*! + * Return the current default command queue for the specified command queue + */ + static DeviceCommandQueue getDefault(const CommandQueue &queue, cl_int * err = NULL) + { + return queue.getInfo(err); + } + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210 }; // DeviceCommandQueue namespace detail @@ -8877,7 +9635,7 @@ inline cl_int enqueueWriteBufferRect( size_type buffer_slice_pitch, size_type host_row_pitch, size_type host_slice_pitch, - void *ptr, + const void *ptr, const vector* events = NULL, Event* event = NULL) { @@ -8975,7 +9733,7 @@ inline cl_int enqueueWriteImage( const array& region, size_type row_pitch, size_type slice_pitch, - void* ptr, + const void* ptr, const vector* events = NULL, Event* event = NULL) { @@ -9386,7 +10144,7 @@ class KernelFunctor } template - cl_int setSVMPointers(const T0 &t0, T1s... ts) + cl_int setSVMPointers(const T0 &t0, T1s &... ts) { return kernel_.setSVMPointers(t0, ts...); } @@ -9400,7 +10158,7 @@ class KernelFunctor namespace compatibility { /** - * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. + * Backward compatibility class to ensure that cl.hpp code works with opencl.hpp. * Please use KernelFunctor directly. */ template @@ -9445,73 +10203,101 @@ namespace compatibility { #undef CL_HPP_ERR_STR_ #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_ARG_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_ERR -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR -#undef __SET_PRINTF_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __UNLOAD_COMPILER_ERR -#undef __CREATE_SUB_DEVICES_ERR - -#undef __CREATE_PIPE_ERR -#undef __GET_PIPE_INFO_ERR +#undef __GET_DEVICE_INFO_ERR +#undef __GET_PLATFORM_INFO_ERR +#undef __GET_DEVICE_IDS_ERR +#undef __GET_PLATFORM_IDS_ERR +#undef __GET_CONTEXT_INFO_ERR +#undef __GET_EVENT_INFO_ERR +#undef __GET_EVENT_PROFILE_INFO_ERR +#undef __GET_MEM_OBJECT_INFO_ERR +#undef __GET_IMAGE_INFO_ERR +#undef __GET_SAMPLER_INFO_ERR +#undef __GET_KERNEL_INFO_ERR +#undef __GET_KERNEL_ARG_INFO_ERR +#undef __GET_KERNEL_SUB_GROUP_INFO_ERR +#undef __GET_KERNEL_WORK_GROUP_INFO_ERR +#undef __GET_PROGRAM_INFO_ERR +#undef __GET_PROGRAM_BUILD_INFO_ERR +#undef __GET_COMMAND_QUEUE_INFO_ERR +#undef __CREATE_CONTEXT_ERR +#undef __CREATE_CONTEXT_FROM_TYPE_ERR +#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR +#undef __CREATE_BUFFER_ERR +#undef __COPY_ERR +#undef __CREATE_SUBBUFFER_ERR +#undef __CREATE_GL_BUFFER_ERR +#undef __CREATE_GL_RENDER_BUFFER_ERR +#undef __GET_GL_OBJECT_INFO_ERR +#undef __CREATE_IMAGE_ERR +#undef __CREATE_GL_TEXTURE_ERR +#undef __IMAGE_DIMENSION_ERR +#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR +#undef __CREATE_USER_EVENT_ERR +#undef __SET_USER_EVENT_STATUS_ERR +#undef __SET_EVENT_CALLBACK_ERR +#undef __WAIT_FOR_EVENTS_ERR +#undef __CREATE_KERNEL_ERR +#undef __SET_KERNEL_ARGS_ERR +#undef __CREATE_PROGRAM_WITH_SOURCE_ERR +#undef __CREATE_PROGRAM_WITH_IL_ERR +#undef __CREATE_PROGRAM_WITH_BINARY_ERR +#undef __CREATE_PROGRAM_WITH_IL_ERR +#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR +#undef __BUILD_PROGRAM_ERR +#undef __COMPILE_PROGRAM_ERR +#undef __LINK_PROGRAM_ERR +#undef __CREATE_KERNELS_IN_PROGRAM_ERR +#undef __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR +#undef __CREATE_SAMPLER_WITH_PROPERTIES_ERR +#undef __SET_COMMAND_QUEUE_PROPERTY_ERR +#undef __ENQUEUE_READ_BUFFER_ERR +#undef __ENQUEUE_READ_BUFFER_RECT_ERR +#undef __ENQUEUE_WRITE_BUFFER_ERR +#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR +#undef __ENQEUE_COPY_BUFFER_ERR +#undef __ENQEUE_COPY_BUFFER_RECT_ERR +#undef __ENQUEUE_FILL_BUFFER_ERR +#undef __ENQUEUE_READ_IMAGE_ERR +#undef __ENQUEUE_WRITE_IMAGE_ERR +#undef __ENQUEUE_COPY_IMAGE_ERR +#undef __ENQUEUE_FILL_IMAGE_ERR +#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR +#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR +#undef __ENQUEUE_MAP_BUFFER_ERR +#undef __ENQUEUE_MAP_IMAGE_ERR +#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR +#undef __ENQUEUE_NDRANGE_KERNEL_ERR +#undef __ENQUEUE_NATIVE_KERNEL +#undef __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR +#undef __ENQUEUE_MIGRATE_SVM_ERR +#undef __ENQUEUE_ACQUIRE_GL_ERR +#undef __ENQUEUE_RELEASE_GL_ERR +#undef __CREATE_PIPE_ERR +#undef __GET_PIPE_INFO_ERR +#undef __RETAIN_ERR +#undef __RELEASE_ERR +#undef __FLUSH_ERR +#undef __FINISH_ERR +#undef __VECTOR_CAPACITY_ERR +#undef __CREATE_SUB_DEVICES_ERR +#undef __CREATE_SUB_DEVICES_ERR +#undef __ENQUEUE_MARKER_ERR +#undef __ENQUEUE_WAIT_FOR_EVENTS_ERR +#undef __ENQUEUE_BARRIER_ERR +#undef __UNLOAD_COMPILER_ERR +#undef __CREATE_GL_TEXTURE_2D_ERR +#undef __CREATE_GL_TEXTURE_3D_ERR +#undef __CREATE_IMAGE2D_ERR +#undef __CREATE_IMAGE3D_ERR +#undef __CREATE_COMMAND_QUEUE_ERR +#undef __ENQUEUE_TASK_ERR +#undef __CREATE_SAMPLER_ERR +#undef __ENQUEUE_MARKER_WAIT_LIST_ERR +#undef __ENQUEUE_BARRIER_WAIT_LIST_ERR +#undef __CLONE_KERNEL_ERR +#undef __GET_HOST_TIMER_ERR +#undef __GET_DEVICE_AND_HOST_TIMER_ERR #endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS diff --git a/inference-engine/thirdparty/clDNN/common/include/OpenCL_CLHPP_License.txt b/inference-engine/thirdparty/clDNN/common/include/OpenCL_CLHPP_License.txt new file mode 100644 index 00000000000000..d645695673349e --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/OpenCL_CLHPP_License.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/inference-engine/thirdparty/clDNN/common/include/OpenCL_Headers_License.txt b/inference-engine/thirdparty/clDNN/common/include/OpenCL_Headers_License.txt new file mode 100644 index 00000000000000..d645695673349e --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/OpenCL_Headers_License.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2_ext.hpp b/inference-engine/thirdparty/clDNN/common/include/cl2_ext.hpp similarity index 92% rename from inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2_ext.hpp rename to inference-engine/thirdparty/clDNN/common/include/cl2_ext.hpp index 97608c30a311e6..5b024f925e3d38 100644 --- a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2_ext.hpp +++ b/inference-engine/thirdparty/clDNN/common/include/cl2_ext.hpp @@ -1,24 +1,13 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - /// /// \file This file wraps cl2.hpp and introduces wrapper classes for Intel sharing extensions. /// #pragma once -#include "cl2.hpp" +#include #define NOMINMAX #ifdef _WIN32 #include @@ -29,8 +18,6 @@ typedef cl_d3d11_device_set_khr cl_device_set_intel; typedef cl_va_api_device_source_intel cl_device_source_intel; typedef cl_va_api_device_set_intel cl_device_set_intel; #endif -#include -#include "cl_intel_usm_defs.h" #include @@ -117,34 +104,34 @@ A static local variable in an extern inline function always refers to the same o */ inline void* hostMemAlloc(const cl::Context& cpp_context, const cl_mem_properties_intel *properties, size_t size, cl_uint alignment, cl_int* err_code_ret) { - PFN_clHostMemAllocINTEL fn = load_entrypoint(cpp_context.get(), "clHostMemAllocINTEL"); + clHostMemAllocINTEL_fn fn = load_entrypoint(cpp_context.get(), "clHostMemAllocINTEL"); return fn(cpp_context.get(), properties, size, alignment, err_code_ret); } inline void* sharedMemAlloc(const cl::Device& cpp_device, const cl::Context& cpp_context, const cl_mem_properties_intel *properties, size_t size, cl_uint alignment, cl_int* err_code_ret) { - PFN_clSharedMemAllocINTEL fn = load_entrypoint(cpp_context.get(), "clSharedMemAllocINTEL"); + clSharedMemAllocINTEL_fn fn = load_entrypoint(cpp_context.get(), "clSharedMemAllocINTEL"); return fn(cpp_context.get(), cpp_device.get(), properties, size, alignment, err_code_ret); } inline void* deviceMemAlloc(const cl::Device& cpp_device, const cl::Context& cpp_context, const cl_mem_properties_intel *properties, size_t size, cl_uint alignment, cl_int* err_code_ret) { - PFN_clDeviceMemAllocINTEL fn = load_entrypoint(cpp_context.get(), "clDeviceMemAllocINTEL"); + clDeviceMemAllocINTEL_fn fn = load_entrypoint(cpp_context.get(), "clDeviceMemAllocINTEL"); return fn(cpp_context.get(), cpp_device.get(), properties, size, alignment, err_code_ret); } inline cl_int memFree(const cl::Context& cpp_context, void* ptr) { - PFN_clMemFreeINTEL fn = load_entrypoint(cpp_context.get(), "clMemFreeINTEL"); + clMemFreeINTEL_fn fn = load_entrypoint(cpp_context.get(), "clMemFreeINTEL"); return fn(cpp_context.get(), ptr); } -inline cl_int set_kernel_arg_mem_pointer(const cl::Kernel& kernel, uint32_t index, const void* ptr, PFN_clSetKernelArgMemPointerINTEL fn) { +inline cl_int set_kernel_arg_mem_pointer(const cl::Kernel& kernel, uint32_t index, const void* ptr, clSetKernelArgMemPointerINTEL_fn fn) { return fn(kernel.get(), index, ptr); } inline cl_int enqueue_memcpy(const cl::CommandQueue& cpp_queue, void *dst_ptr, const void *src_ptr, size_t bytes_count, bool blocking = true, const std::vector* wait_list = nullptr, cl::Event* ret_event = nullptr) { - PFN_clEnqueueMemcpyINTEL fn = load_entrypoint(cpp_queue.get(), "clEnqueueMemcpyINTEL"); + clEnqueueMemcpyINTEL_fn fn = load_entrypoint(cpp_queue.get(), "clEnqueueMemcpyINTEL"); cl_event tmp; cl_int err = fn( @@ -166,7 +153,7 @@ inline cl_int enqueue_memcpy(const cl::CommandQueue& cpp_queue, void *dst_ptr, c inline cl_int enqueue_fill_mem(const cl::CommandQueue& cpp_queue, void *dst_ptr, const void* pattern, size_t pattern_size, size_t bytes_count, const std::vector* wait_list = nullptr, cl::Event* ret_event = nullptr) { - PFN_clEnqueueMemFillINTEL fn = load_entrypoint(cpp_queue.get(), "clEnqueueMemFillINTEL"); + clEnqueueMemFillINTEL_fn fn = load_entrypoint(cpp_queue.get(), "clEnqueueMemFillINTEL"); cl_event tmp; cl_int err = fn( @@ -188,7 +175,7 @@ inline cl_int enqueue_fill_mem(const cl::CommandQueue& cpp_queue, void *dst_ptr, inline cl_int enqueue_set_mem(const cl::CommandQueue& cpp_queue, void* dst_ptr, cl_int value, size_t bytes_count, const std::vector* wait_list = nullptr, cl::Event* ret_event = nullptr) { - PFN_clEnqueueMemsetINTEL fn = load_entrypoint(cpp_queue.get(), "clEnqueueMemsetINTEL"); + clEnqueueMemsetINTEL_fn fn = load_entrypoint(cpp_queue.get(), "clEnqueueMemsetINTEL"); cl_event tmp; cl_int err = fn( @@ -269,7 +256,7 @@ typedef CL_API_ENTRY cl_mem(CL_API_CALL * PFN_clCreateFromMediaSurfaceINTEL)( std::vector& surfaces, cl_int * err = NULL) : m_queue(queue), m_surfaces(surfaces), m_errPtr(err) { - + if (pfn_acquire!=NULL && m_surfaces.size()) { cl_int error = pfn_acquire(m_queue, static_cast(m_surfaces.size()), @@ -496,7 +483,7 @@ typedef CL_API_ENTRY cl_mem(CL_API_CALL * PFN_clCreateFromMediaSurfaceINTEL)( explicit PlatformVA(const cl_platform_id &platform, bool retainObject = false) : Platform(platform, retainObject) { } - + cl_int getDevices( cl_device_source_intel media_adapter_type, void * media_adapter, @@ -654,15 +641,15 @@ typedef CL_API_ENTRY cl_mem(CL_API_CALL * PFN_clCreateFromMediaSurfaceINTEL)( */ class KernelIntel : public Kernel { using Kernel::Kernel; - PFN_clSetKernelArgMemPointerINTEL fn; + clSetKernelArgMemPointerINTEL_fn fn; public: KernelIntel() : Kernel(), fn(nullptr) {} KernelIntel(const Kernel &other, bool supports_usm) : Kernel(other) { - fn = supports_usm ? load_entrypoint(get(), "clSetKernelArgMemPointerINTEL") : nullptr; + fn = supports_usm ? load_entrypoint(get(), "clSetKernelArgMemPointerINTEL") : nullptr; } - KernelIntel(const Kernel &other, PFN_clSetKernelArgMemPointerINTEL fn) : Kernel(other), fn(fn) { } + KernelIntel(const Kernel &other, clSetKernelArgMemPointerINTEL_fn fn) : Kernel(other), fn(fn) { } KernelIntel clone() const { Kernel cloned_kernel(this->getInfo(), this->getInfo().c_str()); diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2_wrapper.h b/inference-engine/thirdparty/clDNN/common/include/cl2_wrapper.h similarity index 75% rename from inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2_wrapper.h rename to inference-engine/thirdparty/clDNN/common/include/cl2_wrapper.h index 8e513a3710b5e1..3beb802304cafc 100644 --- a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl2_wrapper.h +++ b/inference-engine/thirdparty/clDNN/common/include/cl2_wrapper.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - /// /// \file This file wraps cl2.hpp and disables temporary some warnings that this header can emit. @@ -25,6 +14,12 @@ #error This header can be used in C++ only. #endif +// we want exceptions +#define CL_HPP_ENABLE_EXCEPTIONS +#define CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_HPP_MINIMUM_OPENCL_VERSION 200 +#define CL_HPP_TARGET_OPENCL_VERSION 200 + // Check for compiler and change specific diagnostics. #if defined __INTEL_COMPILER #pragma warning push @@ -65,6 +60,11 @@ #include "cl2_ext.hpp" +namespace cl { +namespace detail { +CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) +} +} // Restore specific diagnostics. #if defined __INTEL_COMPILER @@ -77,4 +77,4 @@ #pragma GCC diagnostic pop #endif -#endif // CL2_WRAPPER_H_ \ No newline at end of file +#endif // CL2_WRAPPER_H_ diff --git a/inference-engine/thirdparty/clDNN/common/include/va/va.h b/inference-engine/thirdparty/clDNN/common/include/va/va.h new file mode 100644 index 00000000000000..ca488ecd7277b1 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/include/va/va.h @@ -0,0 +1,9 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +// This is a stub to be used in cl_va_api_media_sharing_intel.h +typedef cl_uint VASurfaceID; +typedef void* VADisplay; diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/OpenCL_ICD_Loader_License.txt b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/OpenCL_ICD_Loader_License.txt deleted file mode 100644 index ea702b9b0e5e18..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/OpenCL_ICD_Loader_License.txt +++ /dev/null @@ -1,34 +0,0 @@ -Copyright (c) 2016 The Khronos Group Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software source and associated documentation files (the "Materials"), -to deal in the Materials without restriction, including without limitation -the rights to use, copy, modify, compile, merge, publish, distribute, -sublicense, and/or sell copies of the Materials, and to permit persons to -whom the Materials are furnished to do so, subject the following terms and -conditions: - -All modifications to the Materials used to create a binary that is -distributed to third parties shall be provided to Khronos with an -unrestricted license to use for the purposes of implementing bug fixes and -enhancements to the Materials; - -If the binary is used as part of an OpenCL(TM) implementation, whether binary -is distributed together with or separately to that implementation, then -recipient must become an OpenCL Adopter and follow the published OpenCL -conformance process for that implementation, details at: -http://www.khronos.org/conformance/; - -The above copyright notice, the OpenCL trademark license, and this permission -notice shall be included in all copies or substantial portions of the -Materials. - -THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN -THE MATERIALS. - -OpenCL is a trademark of Apple Inc. used under license by Khronos. \ No newline at end of file diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/OpenCL_headers_License.txt b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/OpenCL_headers_License.txt deleted file mode 100644 index b29426c3221d10..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/OpenCL_headers_License.txt +++ /dev/null @@ -1,27 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ \ No newline at end of file diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/README.md b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/README.md deleted file mode 100644 index 90340b237a90cb..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/README.md +++ /dev/null @@ -1,2 +0,0 @@ -libOpenCL.so: https://github.com/KhronosGroup/OpenCL-ICD-Loader/commit/978b4b3a29a3aebc86ce9315d5c5963e88722d03 -headers: https://github.com/KhronosGroup/OpenCL-Headers/commit/0d5f18c6e7196863bc1557a693f1509adfcee056 diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/Release/bin/x64/libOpenCL.so b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/Release/bin/x64/libOpenCL.so deleted file mode 100644 index 14bfbe65f1bdd2..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/Release/bin/x64/libOpenCL.so and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl.hpp deleted file mode 100644 index 396b86719fd032..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl.hpp +++ /dev/null @@ -1,12934 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/*! \file - * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33) and - * OpenCL 1.2 (rev 15) - * \author Benedict R. Gaster, Laurent Morichetti and Lee Howes - * - * Additions and fixes from: - * Brian Cole, March 3rd 2010 and April 2012 - * Matt Gruenke, April 2012. - * Bruce Merry, February 2013. - * Tom Deakin and Simon McIntosh-Smith, July 2013 - * - * \version 1.2.8 - * \date October 2015 - * - * Optional extension support - * - * cl - * cl_ext_device_fission - * #define USE_CL_DEVICE_FISSION - */ - -/*! \mainpage - * \section intro Introduction - * For many large applications C++ is the language of choice and so it seems - * reasonable to define C++ bindings for OpenCL. - * - * - * The interface is contained with a single C++ header file \em cl.hpp and all - * definitions are contained within the namespace \em cl. There is no additional - * requirement to include \em cl.h and to use either the C++ or original C - * bindings it is enough to simply include \em cl.hpp. - * - * The bindings themselves are lightweight and correspond closely to the - * underlying C API. Using the C++ bindings introduces no additional execution - * overhead. - * - * For detail documentation on the bindings see: - * - * The OpenCL C++ Wrapper API 1.2 (revision 09) - * http://www.khronos.org/registry/cl/specs/opencl-cplusplus-1.2.pdf - * - * \section example Example - * - * The following example shows a general use case for the C++ - * bindings, including support for the optional exception feature and - * also the supplied vector and string classes, see following sections for - * decriptions of these features. - * - * \code - * #define __CL_ENABLE_EXCEPTIONS - * - * #if defined(__APPLE__) || defined(__MACOSX) - * #include - * #else - * #include - * #endif - * #include - * #include - * #include - * - * const char * helloStr = "__kernel void " - * "hello(void) " - * "{ " - * " " - * "} "; - * - * int - * main(void) - * { - * cl_int err = CL_SUCCESS; - * try { - * - * std::vector platforms; - * cl::Platform::get(&platforms); - * if (platforms.size() == 0) { - * std::cout << "Platform size 0\n"; - * return -1; - * } - * - * cl_context_properties properties[] = - * { CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0}; - * cl::Context context(CL_DEVICE_TYPE_CPU, properties); - * - * std::vector devices = context.getInfo(); - * - * cl::Program::Sources source(1, - * std::make_pair(helloStr,strlen(helloStr))); - * cl::Program program_ = cl::Program(context, source); - * program_.build(devices); - * - * cl::Kernel kernel(program_, "hello", &err); - * - * cl::Event event; - * cl::CommandQueue queue(context, devices[0], 0, &err); - * queue.enqueueNDRangeKernel( - * kernel, - * cl::NullRange, - * cl::NDRange(4,4), - * cl::NullRange, - * NULL, - * &event); - * - * event.wait(); - * } - * catch (cl::Error err) { - * std::cerr - * << "ERROR: " - * << err.what() - * << "(" - * << err.err() - * << ")" - * << std::endl; - * } - * - * return EXIT_SUCCESS; - * } - * - * \endcode - * - */ -#ifndef CL_HPP_ -#define CL_HPP_ - -#ifdef _WIN32 - -#include - -#if defined(USE_DX_INTEROP) -#include -#include -#endif -#endif // _WIN32 - -#if defined(_MSC_VER) -#include -#endif // _MSC_VER - -// -#if defined(USE_CL_DEVICE_FISSION) -#include -#endif - -#if defined(__APPLE__) || defined(__MACOSX) -#include -#else -#include -#endif // !__APPLE__ - -#if (_MSC_VER >= 1700) || (__cplusplus >= 201103L) -#define CL_HPP_RVALUE_REFERENCES_SUPPORTED -#define CL_HPP_CPP11_ATOMICS_SUPPORTED -#include -#endif - -#if (__cplusplus >= 201103L) -#define CL_HPP_NOEXCEPT noexcept -#else -#define CL_HPP_NOEXCEPT -#endif - - -// To avoid accidentally taking ownership of core OpenCL types -// such as cl_kernel constructors are made explicit -// under OpenCL 1.2 -#if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -// Define deprecated prefixes and suffixes to ensure compilation -// in case they are not pre-defined -#if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) - -#if !defined(CL_CALLBACK) -#define CL_CALLBACK -#endif //CL_CALLBACK - -#include -#include -#include - -#if defined(__CL_ENABLE_EXCEPTIONS) -#include -#endif // #if defined(__CL_ENABLE_EXCEPTIONS) - -#if !defined(__NO_STD_VECTOR) -#include -#endif - -#if !defined(__NO_STD_STRING) -#include -#endif - -#if defined(__ANDROID__) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) -#include -#endif // linux - -#include - - -/*! \namespace cl - * - * \brief The OpenCL C++ bindings are defined within this namespace. - * - */ -namespace cl { - -class Memory; - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) - -#if defined(CL_VERSION_1_2) -#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) - -class Program; -class Device; -class Context; -class CommandQueue; -class Memory; -class Buffer; - -#if defined(__CL_ENABLE_EXCEPTIONS) -/*! \brief Exception class - * - * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. - */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} - - ~Error() throw() {} - - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } - - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } -}; - -#define __ERR_STR(x) #x -#else -#define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS - - -namespace detail -{ -#if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; -} -#else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; -} -#endif // __CL_ENABLE_EXCEPTIONS -} - - - -//! \cond DOXYGEN_DETAIL -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) -#if defined(CL_VERSION_1_2) -#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) -#endif // #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) - -#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) - -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __COPY_ERR __ERR_STR(cl::copy) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) -#if defined(CL_VERSION_1_2) -#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) -#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) - -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) - -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) -#if defined(CL_VERSION_1_2) -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) -#endif // #if defined(CL_VERSION_1_2) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) -#if defined(CL_VERSION_1_2) -#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) -#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) - -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) -#if defined(CL_VERSION_1_2) -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) -#endif // #if defined(CL_VERSION_1_2) - -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) - - -#define __RETAIN_ERR __ERR_STR(Retain Object) -#define __RELEASE_ERR __ERR_STR(Release Object) -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) -#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) - -/** - * CL 1.2 version that uses device fission. - */ -#if defined(CL_VERSION_1_2) -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) -#else -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // #if defined(CL_VERSION_1_2) - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#endif // #if defined(CL_VERSION_1_1) - -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS -//! \endcond - -/** - * CL 1.2 marker and barrier commands - */ -#if defined(CL_VERSION_1_2) -#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) -#endif // #if defined(CL_VERSION_1_2) - -#if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) -typedef std::string STRING_CLASS; -#elif !defined(__USE_DEV_STRING) - -/*! \class string - * \brief Simple string class, that provides a limited subset of std::string - * functionality but avoids many of the issues that come with that class. - - * \note Deprecated. Please use std::string as default or - * re-define the string class to match the std::string - * interface by defining STRING_CLASS - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ -private: - ::size_t size_; - char * str_; -public: - //! \brief Constructs an empty string, allocating no memory. - string(void) : size_(0), str_(NULL) - { - } - - /*! \brief Constructs a string populated from an arbitrary value of - * specified size. - * - * An extra '\0' is added, in case none was contained in str. - * - * \param str the initial value of the string instance. Note that '\0' - * characters receive no special treatment. If NULL, - * the string is left empty, with a size of 0. - * - * \param size the number of characters to copy from str. - */ - string(const char * str, ::size_t size) : - size_(size), - str_(NULL) - { - if( size > 0 ) { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } - } - - /*! \brief Constructs a string populated from a null-terminated value. - * - * \param str the null-terminated initial value of the string instance. - * If NULL, the string is left empty, with a size of 0. - */ - string(const char * str) : - size_(0), - str_(NULL) - { - if( str ) { - size_= ::strlen(str); - } - if( size_ > 0 ) { - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - } - } - - void resize( ::size_t n ) - { - if( size_ == n ) { - return; - } - if (n == 0) { - if( str_ ) { - delete [] str_; - } - str_ = NULL; - size_ = 0; - } - else { - char *newString = new char[n + 1]; - ::size_t copySize = n; - if( size_ < n ) { - copySize = size_; - } - size_ = n; - - if(str_) { - memcpy(newString, str_, (copySize + 1) * sizeof(char)); - } - if( copySize < size_ ) { - memset(newString + copySize, 0, size_ - copySize); - } - newString[size_] = '\0'; - - delete [] str_; - str_ = newString; - } - } - - const char& operator[] ( ::size_t pos ) const - { - return str_[pos]; - } - - char& operator[] ( ::size_t pos ) - { - return str_[pos]; - } - - /*! \brief Copies the value of another string to this one. - * - * \param rhs the string to copy. - * - * \returns a reference to the modified instance. - */ - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if( str_ != NULL ) { - delete [] str_; - str_ = NULL; - size_ = 0; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - str_ = NULL; - size_ = 0; - } - else { - str_ = new char[rhs.size_ + 1]; - size_ = rhs.size_; - - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - /*! \brief Constructs a string by copying the value of another instance. - * - * \param rhs the string to copy. - */ - string(const string& rhs) : - size_(0), - str_(NULL) - { - *this = rhs; - } - - //! \brief Destructor - frees memory used to hold the current value. - ~string() - { - delete[] str_; - str_ = NULL; - } - - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t size(void) const { return size_; } - - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t length(void) const { return size(); } - - /*! \brief Returns a pointer to the private copy held by this instance, - * or "" if empty/unset. - */ - const char * c_str(void) const { return (str_) ? str_ : "";} -}; -typedef cl::string STRING_CLASS; -#endif // #elif !defined(__USE_DEV_STRING) - -#if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) -#define VECTOR_CLASS std::vector -#elif !defined(__USE_DEV_VECTOR) -#define VECTOR_CLASS cl::vector - -#if !defined(__MAX_DEFAULT_VECTOR_SIZE) -#define __MAX_DEFAULT_VECTOR_SIZE 10 -#endif - -/*! \class vector - * \brief Fixed sized vector implementation that mirroring - * - * \note Deprecated. Please use std::vector as default or - * re-define the vector class to match the std::vector - * interface by defining VECTOR_CLASS - - * \note Not recommended for use with custom objects as - * current implementation will construct N elements - * - * std::vector functionality. - * \brief Fixed sized vector compatible with std::vector. - * - * \note - * This differs from std::vector<> not just in memory allocation, - * but also in terms of when members are constructed, destroyed, - * and assigned instead of being copy constructed. - * - * \param T type of element contained in the vector. - * - * \param N maximum size of the vector. - */ -template -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector -{ -private: - T data_[N]; - unsigned int size_; - -public: - //! \brief Constructs an empty vector with no memory allocated. - vector() : - size_(static_cast(0)) - {} - - //! \brief Deallocates the vector's memory and destroys all of its elements. - ~vector() - { - clear(); - } - - //! \brief Returns the number of elements currently contained. - unsigned int size(void) const - { - return size_; - } - - /*! \brief Empties the vector of all elements. - * \note - * This does not deallocate memory but will invoke destructors - * on contained elements. - */ - void clear() - { - while(!empty()) { - pop_back(); - } - } - - /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an - * exception if exceptions are enabled. - */ - void push_back (const T& x) - { - if (size() < N) { - new (&data_[size_]) T(x); - size_++; - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - } - - /*! \brief Removes the last valid element from the vector. - * Calling this on an empty vector will throw an exception - * if exceptions are enabled. - */ - void pop_back(void) - { - if (size_ != 0) { - --size_; - data_[size_].~T(); - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - } - - /*! \brief Constructs with a value copied from another. - * - * \param vec the vector to copy. - */ - vector(const vector& vec) : - size_(vec.size_) - { - if (size_ != 0) { - assign(vec.begin(), vec.end()); - } - } - - /*! \brief Constructs with a specified number of initial elements. - * - * \param size number of initial elements. - * - * \param val value of initial elements. - */ - vector(unsigned int size, const T& val = T()) : - size_(0) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } - } - - /*! \brief Overwrites the current content with that copied from another - * instance. - * - * \param rhs vector to copy. - * - * \returns a reference to this. - */ - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ != 0) { - assign(rhs.begin(), rhs.end()); - } else { - clear(); - } - - return *this; - } - - /*! \brief Tests equality against another instance. - * - * \param vec the vector against which to compare. - */ - bool operator==(vector &vec) - { - if (size() != vec.size()) { - return false; - } - - for( unsigned int i = 0; i < size(); ++i ) { - if( operator[](i) != vec[i] ) { - return false; - } - } - return true; - } - - //! \brief Conversion operator to T*. - operator T* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const T* () const { return data_; } - - //! \brief Tests whether this instance has any elements. - bool empty (void) const - { - return size_==0; - } - - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int max_size (void) const - { - return N; - } - - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int capacity () const - { - return N; - } - - //! \brief Resizes the vector to the given size - void resize(unsigned int newSize, T fill = T()) - { - if (newSize > N) - { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - else - { - while (size_ < newSize) - { - new (&data_[size_]) T(fill); - size_++; - } - while (size_ > newSize) - { - --size_; - data_[size_].~T(); - } - } - } - - /*! \brief Returns a reference to a given element. - * - * \param index which element to access. * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - T& operator[](int index) - { - return data_[index]; - } - - /*! \brief Returns a const reference to a given element. - * - * \param index which element to access. - * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - const T& operator[](int index) const - { - return data_[index]; - } - - /*! \brief Assigns elements of the vector based on a source iterator range. - * - * \param start Beginning iterator of source range - * \param end Enditerator of source range - * - * \note - * Will throw an exception if exceptions are enabled and size exceeded. - */ - template - void assign(I start, I end) - { - clear(); - while(start != end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Const iterator class for vectors - */ - class iterator - { - private: - const vector *vec_; - int index_; - - /** - * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking - * the vector by copy. - */ - iterator (const vector &vec, int index) : - vec_(&vec) - { - if( !vec.empty() ) { - index_ = index; - } else { - index_ = -1; - } - } - - public: - iterator(void) : - index_(-1), - vec_(NULL) - { - } - - iterator(const iterator& rhs) : - vec_(rhs.vec_), - index_(rhs.index_) - { - } - - ~iterator(void) {} - - static iterator begin(const cl::vector &vec) - { - iterator i(vec, 0); - - return i; - } - - static iterator end(const cl::vector &vec) - { - iterator i(vec, vec.size()); - - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - iterator& operator++() - { - ++index_; - return *this; - } - - iterator operator++(int) - { - iterator retVal(*this); - ++index_; - return retVal; - } - - iterator& operator--() - { - --index_; - return *this; - } - - iterator operator--(int) - { - iterator retVal(*this); - --index_; - return retVal; - } - - const T& operator *() const - { - return (*vec_)[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator begin(void) const - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - iterator end(void) const - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_-1]; - } -} CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) - - - - - -namespace detail { -#define __DEFAULT_NOT_INITIALIZED 1 -#define __DEFAULT_BEING_INITIALIZED 2 -#define __DEFAULT_INITIALIZED 4 - - /* - * Compare and exchange primitives are needed for handling of defaults - */ - -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(std::atomic * dest, int exchange, int comparand) -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(volatile int * dest, int exchange, int comparand) -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - { -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_compare_exchange_strong(dest, &comparand, exchange); - return comparand; -#elif _MSC_VER - return (int)(_InterlockedCompareExchange( - (volatile long*)dest, - (long)exchange, - (long)comparand)); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - return (__sync_val_compare_and_swap( - dest, - comparand, - exchange)); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } - - inline void fence() { -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_thread_fence(std::memory_order_seq_cst); -#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED - _ReadWriteBarrier(); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - __sync_synchronize(); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } -} // namespace detail - - -/*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ -template -class size_t -{ -private: - ::size_t data_[N]; - -public: - //! \brief Initialize size_t to all 0s - size_t() - { - for( int i = 0; i < N; ++i ) { - data_[i] = 0; - } - } - - ::size_t& operator[](int index) - { - return data_[index]; - } - - const ::size_t& operator[](int index) const - { - return data_[index]; - } - - //! \brief Conversion operator to T*. - operator ::size_t* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const ::size_t* () const { return data_; } -}; - -namespace detail { - -// Generic getInfoHelper. The final parameter is used to guide overload -// resolution: the actual parameter passed is an int, which makes this -// a worse conversion sequence than a specialization that declares the -// parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); -} - -// Specialized getInfoHelper for VECTOR_CLASS params -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; -} - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, typename T::cl_type = 0) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - typename T::cl_type * value = (typename T::cl_type *) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - ::size_t elements = required / sizeof(typename T::cl_type); - param->assign(&value[0], &value[elements]); - for (::size_t i = 0; i < elements; i++) - { - if (value[i] != NULL) - { - err = (*param)[i].retain(); - if (err != CL_SUCCESS) { - return err; - } - } - } - return CL_SUCCESS; -} - -// Specialized for getInfo -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) -{ - cl_int err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); - - if (err != CL_SUCCESS) { - return err; - } - - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for STRING_CLASS params -template -inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) -{ -#if defined(__NO_STD_VECTOR) || defined(__NO_STD_STRING) - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - char* value = (char*)alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - *param = value; - return CL_SUCCESS; -#else - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - // std::string has a constant data member - // a char vector does not - VECTOR_CLASS value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(value.begin(), value.end()); - } -#endif - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for cl::size_t params -template -inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - ::size_t* value = (::size_t*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - for(int i = 0; i < N; ++i) { - (*param)[i] = value[i]; - } - - return CL_SUCCESS; -} - -template struct ReferenceHandler; - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); - if (err != CL_SUCCESS) { - return err; - } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; -} - -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) - -#if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 - - -#if defined(CL_VERSION_1_2) -#define __PARAM_NAME_INFO_1_2(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ - \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) -#endif // #if defined(CL_VERSION_1_2) - -#if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION - -template -struct param_traits {}; - -#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; - -__PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) -#if defined(CL_VERSION_1_1) -__PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 -#if defined(CL_VERSION_1_2) -__PARAM_NAME_INFO_1_2(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 - -#if defined(USE_CL_DEVICE_FISSION) -__PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION - -#ifdef CL_PLATFORM_ICD_SUFFIX_KHR -__CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) -#endif - -#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong) -#endif - -#ifdef CL_DEVICE_GLOBAL_FREE_MEMORY_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, VECTOR_CLASS< ::size_t>) -#endif -#ifdef CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_WAVEFRONT_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_WAVEFRONT_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) -#endif - -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint) -#endif -#ifdef CL_DEVICE_WARP_SIZE_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint) -#endif -#ifdef CL_DEVICE_GPU_OVERLAP_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool) -#endif -#ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool) -#endif -#ifdef CL_DEVICE_INTEGRATED_MEMORY_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool) -#endif - -// Convenience functions - -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); -} - -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } -}; - -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } -}; - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); -} - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); -} - -template -struct ReferenceHandler -{ }; - -#if defined(CL_VERSION_1_2) -/** - * OpenCL 1.2 devices do have retain/release. - */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } -}; -#else // #if defined(CL_VERSION_1_2) -/** - * OpenCL 1.1 devices do not have retain/release. - */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } -}; -#endif // #if defined(CL_VERSION_1_2) - -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } -}; - - -// Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const char *versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } - ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; -} - -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - ::size_t size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - char *versionInfo = (char *) alloca(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); - return getVersion(versionInfo); -} - -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); -} - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - ::size_t size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - cl_device_id *devices = (cl_device_id *) alloca(size); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); - return getDevicePlatformVersion(devices[0]); -} -#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -template -class Wrapper -{ -public: - typedef T cl_type; - -protected: - cl_type object_; - -public: - Wrapper() : object_(NULL) { } - - Wrapper(const cl_type &obj) : object_(obj) { } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - rhs.object_ = NULL; - } -#endif - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } -#endif - - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - return *this; - } - - cl_type operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } - - cl_int release() const - { - return ReferenceHandler::release(object_); - } -}; - -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; - -protected: - cl_type object_; - bool referenceCountable_; - - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } - return retVal; - } - -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } - - Wrapper(const cl_type &obj) : object_(obj), referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } -#endif - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } -#endif - - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - cl_type operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); - - cl_int retain() const - { - if( referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if( referenceCountable_ ) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -} // namespace detail -//! \endcond - -/*! \stuct ImageFormat - * \brief Adds constructors and member functions for cl_image_format. - * - * \see cl_image_format - */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} - - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } - - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; - } -}; - -/*! \brief Class interface for cl_device_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_device_id - */ -class Device : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } - - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id &device) : detail::Wrapper(device) { } - - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault(cl_int * err = NULL); - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ -#if defined(CL_VERSION_1_2) - //! \brief Wrapper for clCreateSubDevicesEXT(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - VECTOR_CLASS* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = clCreateSubDevices(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif // #if defined(CL_VERSION_1_2) - -/** - * CL 1.1 version that uses device fission. - */ -#if defined(CL_VERSION_1_1) -#if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif // #if defined(USE_CL_DEVICE_FISSION) -#endif // #if defined(CL_VERSION_1_1) -}; - -/*! \brief Class interface for cl_platform_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_platform_id - */ -class Platform : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } - - /*! \brief Constructor from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id &platform) : detail::Wrapper(platform) { } - - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } - -#if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); - - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif - - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; - - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_uint n = 0; - - if( platform == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - *platform = ids[0]; - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform, returning it by value. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - Platform platform; - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - - return Platform(ids[0]); - } - - static Platform getDefault( - cl_int *errResult = NULL ) - { - return get(errResult); - } - - -#if defined(CL_VERSION_1_2) - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // #if defined(CL_VERSION_1_2) -}; // class Platform - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -/** - * Unload the OpenCL compiler. - * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_VERSION_1_1) - -/*! \brief Class interface for cl_context. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_context as the original. For details, see - * clRetainContext() and clReleaseContext(). - * - * \see cl_context - */ -class Context - : public detail::Wrapper -{ -private: - -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static Context default_; - static volatile cl_int default_error_; -public: - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - VECTOR_CLASS platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - VECTOR_CLASS devices; - -#if defined(__CL_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(__CL_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - NULL, - NULL, - NULL, - &error); - - detail::fence(); - - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - } - else { - formats->clear(); - } - return CL_SUCCESS; - } -}; - -inline Device Device::getDefault(cl_int * err) -{ - cl_int error; - Device device; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - device = context.getInfo()[0]; - if (err != NULL) { - *err = CL_SUCCESS; - } - } - - return device; -} - - -#ifdef _WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) Context Context::default_; -__declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; -#else // !_WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) Context Context::default_; -__attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; -#endif // !_WIN32 - -/*! \brief Class interface for cl_event. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_event as the original. For details, see - * clRetainEvent() and clReleaseEvent(). - * - * \see cl_event - */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } - - /*! \brief Constructor from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) { } - - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } - - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } - -#if defined(CL_VERSION_1_1) - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif - - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } -}; - -#if defined(CL_VERSION_1_1) -/*! \brief Class interface for user events (a subset of cl_event's). - * - * See Event for details about copy semantics, etc. - */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); - - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } - - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } -}; -#endif - -/*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); -} - -/*! \brief Class interface for cl_mem. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_mem as the original. For details, see - * clRetainMemObject() and clReleaseMemObject(). - * - * \see cl_mem - */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_mem - * into the new Memory object. - */ - __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) { } - - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(CL_VERSION_1_1) - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif - -}; - -// Pre-declare copy functions -class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); - - -/*! \brief Class interface for Buffer Memory Objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Buffer : public Memory -{ -public: - - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - -#if defined(CL_VERSION_1_1) - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); - - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; - } -#endif -}; - -#if defined (USE_DX_INTEROP) -/*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. - * - * This is provided to facilitate interoperability with Direct3D. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; - -#if defined(CL_VERSION_1_2) - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); -#endif -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); -#endif - - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif - -/*! \brief Class interface for GL Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief C++ base class for Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -#if defined(CL_VERSION_1_2) -/*! \brief Class interface for 1D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image1D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -/*! \class Image1DBuffer - * \brief Image interface for 1D buffer images. - */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DBuffer() { } - - __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) { } - - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -/*! \class Image1DArray - * \brief Image interface for arrays of 1D images. - */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DArray() { } - - __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) { } - - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - - -/*! \brief Class interface for 2D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - - -#if !defined(CL_VERSION_1_2) -/*! \brief Class interface for GL 2D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } - - } - - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if !defined(CL_VERSION_1_2) - -#if defined(CL_VERSION_1_2) -/*! \class Image2DArray - * \brief Image interface for arrays of 2D images. - */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t height, - ::size_t rowPitch, - ::size_t slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2DArray() { } - - __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) { } - - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - -/*! \brief Class interface for 3D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -#if !defined(CL_VERSION_1_2) -/*! \brief Class interface for GL 3D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if !defined(CL_VERSION_1_2) - -#if defined(CL_VERSION_1_2) -/*! \class ImageGL - * \brief general image interface for GL interop. - * We abstract the 2D and 3D GL images into a single instance here - * that wraps all GL sourced images on the grounds that setup information - * was performed by OpenCL anyway. - */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } - } - - ImageGL() : Image() { } - - __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) { } - - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - -/*! \brief Class interface for GL Render Buffer Memory Objects. -* -* This is provided to facilitate interoperability with OpenGL. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class BufferRenderGL : -#if defined(CL_VERSION_1_2) - public ImageGL -#else // #if defined(CL_VERSION_1_2) - public Image2DGL -#endif //#if defined(CL_VERSION_1_2) -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. -#if defined(CL_VERSION_1_2) - BufferRenderGL() : ImageGL() {}; -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL() : Image2DGL() {}; -#endif //#if defined(CL_VERSION_1_2) - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ -#if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) { } -#else // #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) { } -#endif //#if defined(CL_VERSION_1_2) - - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ -#if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} -#endif //#if defined(CL_VERSION_1_2) - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &rhs) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ -#if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} -#endif //#if defined(CL_VERSION_1_2) - - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(std::move(buf)); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(std::move(buf)); -#endif //#if defined(CL_VERSION_1_2) - - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_, type, gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief Class interface for cl_sampler. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_sampler as the original. For details, see - * clRetainSampler() and clReleaseSampler(). - * - * \see cl_sampler - */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } - - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -class Program; -class CommandQueue; -class Kernel; - -//! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; - -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { } - - //! \brief Constructs one-dimensional range. - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_[0] = size0; - } - - //! \brief Constructs two-dimensional range. - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - } - - //! \brief Constructs three-dimensional range. - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } - - /*! \brief Conversion operator to const ::size_t *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const ::size_t*() const { - return (const ::size_t*) sizes_; - } - - //! \brief Queries the number of dimensions in the range. - ::size_t dimensions() const { return dimensions_; } -}; - -//! \brief A zero-dimensional range. -static const NDRange NullRange; - -//! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - ::size_t size_; -}; - -namespace detail { - -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } -}; - -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } -}; - -} -//! \endcond - -/*! __local - * \brief Helper function for generating LocalSpaceArg objects. - * Deprecated. Replaced with Local. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg -__local(::size_t size) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -/*! Local - * \brief Helper function for generating LocalSpaceArg objects. - */ -inline LocalSpaceArg -Local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -//class KernelFunctor; - -/*! \brief Class interface for cl_kernel. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_kernel as the original. For details, see - * clRetainKernel() and clReleaseKernel(). - * - * \see cl_kernel - */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Kernel() { } - - /*! \brief Constructor from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) { } - - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(CL_VERSION_1_2) - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // #if defined(CL_VERSION_1_2) - - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } - - cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } -}; - -/*! \class Program - * \brief Program interface that implements cl_program. - */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; - - Program( - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const ::size_t length = source.size(); - - Context context = Context::getDefault(err); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const ::size_t length = source.size(); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); - - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; - - const ::size_t numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - ::size_t* lengths = (::size_t*) alloca(numDevices * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(numDevices * sizeof(const unsigned char**)); - - for (::size_t i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } - - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs, - lengths, images, (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - } - - -#if defined(CL_VERSION_1_2) - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const STRING_CLASS& kernelNames, - cl_int* err = NULL) - { - cl_int error; - - - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs, - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) - - Program() { } - - __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) : detail::Wrapper(program) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } - -#if defined(CL_VERSION_1_2) - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data), - __COMPILE_PROGRAM_ERR); - } -#endif - - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } -}; - -#if defined(CL_VERSION_1_2) -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program programs[2] = { input1(), input2() }; - - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} - -inline Program linkProgram( - VECTOR_CLASS inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program * programs = (cl_program*) alloca(inputPrograms.size() * sizeof(cl_program)); - - if (programs != NULL) { - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } - } - - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} -#endif - -template<> -inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const -{ - VECTOR_CLASS< ::size_t> sizes = getInfo(); - VECTOR_CLASS binaries; - for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) - { - char *ptr = NULL; - if (*s != 0) - ptr = new char[*s]; - binaries.push_back(ptr); - } - - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); - if (err != NULL) { - *err = result; - } - return binaries; -} - -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; - - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } - -} - -/*! \class CommandQueue - * \brief CommandQueue interface for cl_command_queue. - */ -class CommandQueue : public detail::Wrapper -{ -private: -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static CommandQueue default_; - static volatile cl_int default_error_; -public: - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - } - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - VECTOR_CLASS devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - - object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (err != NULL) { - *err = error; - } - - } - - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - static CommandQueue getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - default_ = CommandQueue(context, device, 0, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - - detail::fence(); - - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - - } - - CommandQueue() { } - - __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper(commandQueue) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const VECTOR_CLASS &memObjects, - cl_mem_migration_flags flags, - const VECTOR_CLASS* events = NULL, - Event* event = NULL - ) - { - cl_event tmp; - - cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } - - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - static_cast(localMemObjects), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // #if defined(CL_VERSION_1_1) - - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); - - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; -#if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); -#endif -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); -#endif - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; -#if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_2) -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_1) - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // #if defined(CL_VERSION_1_1) - - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } - - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; - -#ifdef _WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) CommandQueue CommandQueue::default_; -__declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#else // !_WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) CommandQueue CommandQueue::default_; -__attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#endif // !_WIN32 - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; -} - -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; -} - -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, startIterator, endIterator, buffer); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, buffer, startIterator, endIterator); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } -#if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); -#else - std::copy(startIterator, endIterator, pointer); -#endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -#if defined(CL_VERSION_1_1) -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); -} -#endif - -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); -} - -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); -} - -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); -} - - -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.flush(); -} - -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - - return queue.finish(); -} - -// Kernel Functor support -// New interface as of September 2011 -// Requires the C++11 std::tr1::function (note do not support TR1) -// Visual Studio 2010 and GCC 4.2 - -struct EnqueueArgs -{ - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - VECTOR_CLASS events_; - - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } -}; - -namespace detail { - -class NullType {}; - -template -struct SetArg -{ - static void set (Kernel kernel, T0 arg) - { - kernel.setArg(index, arg); - } -}; - -template -struct SetArg -{ - static void set (Kernel, NullType) - { - } -}; - -template < - typename T0, typename T1, typename T2, typename T3, - typename T4, typename T5, typename T6, typename T7, - typename T8, typename T9, typename T10, typename T11, - typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, - typename T20, typename T21, typename T22, typename T23, - typename T24, typename T25, typename T26, typename T27, - typename T28, typename T29, typename T30, typename T31 -> -class KernelFunctorGlobal -{ -private: - Kernel kernel_; - -public: - KernelFunctorGlobal( - Kernel kernel) : - kernel_(kernel) - {} - - KernelFunctorGlobal( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} - - Event operator() ( - const EnqueueArgs& args, - T0 t0, - T1 t1 = NullType(), - T2 t2 = NullType(), - T3 t3 = NullType(), - T4 t4 = NullType(), - T5 t5 = NullType(), - T6 t6 = NullType(), - T7 t7 = NullType(), - T8 t8 = NullType(), - T9 t9 = NullType(), - T10 t10 = NullType(), - T11 t11 = NullType(), - T12 t12 = NullType(), - T13 t13 = NullType(), - T14 t14 = NullType(), - T15 t15 = NullType(), - T16 t16 = NullType(), - T17 t17 = NullType(), - T18 t18 = NullType(), - T19 t19 = NullType(), - T20 t20 = NullType(), - T21 t21 = NullType(), - T22 t22 = NullType(), - T23 t23 = NullType(), - T24 t24 = NullType(), - T25 t25 = NullType(), - T26 t26 = NullType(), - T27 t27 = NullType(), - T28 t28 = NullType(), - T29 t29 = NullType(), - T30 t30 = NullType(), - T31 t31 = NullType() - ) - { - Event event; - SetArg<0, T0>::set(kernel_, t0); - SetArg<1, T1>::set(kernel_, t1); - SetArg<2, T2>::set(kernel_, t2); - SetArg<3, T3>::set(kernel_, t3); - SetArg<4, T4>::set(kernel_, t4); - SetArg<5, T5>::set(kernel_, t5); - SetArg<6, T6>::set(kernel_, t6); - SetArg<7, T7>::set(kernel_, t7); - SetArg<8, T8>::set(kernel_, t8); - SetArg<9, T9>::set(kernel_, t9); - SetArg<10, T10>::set(kernel_, t10); - SetArg<11, T11>::set(kernel_, t11); - SetArg<12, T12>::set(kernel_, t12); - SetArg<13, T13>::set(kernel_, t13); - SetArg<14, T14>::set(kernel_, t14); - SetArg<15, T15>::set(kernel_, t15); - SetArg<16, T16>::set(kernel_, t16); - SetArg<17, T17>::set(kernel_, t17); - SetArg<18, T18>::set(kernel_, t18); - SetArg<19, T19>::set(kernel_, t19); - SetArg<20, T20>::set(kernel_, t20); - SetArg<21, T21>::set(kernel_, t21); - SetArg<22, T22>::set(kernel_, t22); - SetArg<23, T23>::set(kernel_, t23); - SetArg<24, T24>::set(kernel_, t24); - SetArg<25, T25>::set(kernel_, t25); - SetArg<26, T26>::set(kernel_, t26); - SetArg<27, T27>::set(kernel_, t27); - SetArg<28, T28>::set(kernel_, t28); - SetArg<29, T29>::set(kernel_, t29); - SetArg<30, T30>::set(kernel_, t30); - SetArg<31, T31>::set(kernel_, t31); - - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - -}; - -//------------------------------------------------------------------------------------------------------ - - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30, - typename T31> -struct functionImplementation_ -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30, - T31 arg31) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30, - arg31); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3); - } - - -}; - -template< - typename T0, - typename T1, - typename T2> -struct functionImplementation_ -< T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2); - } - - -}; - -template< - typename T0, - typename T1> -struct functionImplementation_ -< T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1) - { - return functor_( - enqueueArgs, - arg0, - arg1); - } - - -}; - -template< - typename T0> -struct functionImplementation_ -< T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0) - { - return functor_( - enqueueArgs, - arg0); - } - - -}; - - - - - -} // namespace detail - -//---------------------------------------------------------------------------------------------- - -template < - typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, - typename T3 = detail::NullType, typename T4 = detail::NullType, - typename T5 = detail::NullType, typename T6 = detail::NullType, - typename T7 = detail::NullType, typename T8 = detail::NullType, - typename T9 = detail::NullType, typename T10 = detail::NullType, - typename T11 = detail::NullType, typename T12 = detail::NullType, - typename T13 = detail::NullType, typename T14 = detail::NullType, - typename T15 = detail::NullType, typename T16 = detail::NullType, - typename T17 = detail::NullType, typename T18 = detail::NullType, - typename T19 = detail::NullType, typename T20 = detail::NullType, - typename T21 = detail::NullType, typename T22 = detail::NullType, - typename T23 = detail::NullType, typename T24 = detail::NullType, - typename T25 = detail::NullType, typename T26 = detail::NullType, - typename T27 = detail::NullType, typename T28 = detail::NullType, - typename T29 = detail::NullType, typename T30 = detail::NullType, - typename T31 = detail::NullType -> -struct make_kernel : - public detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - > -{ -public: - typedef detail::KernelFunctorGlobal< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - > FunctorType; - - make_kernel( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - >( - FunctorType(program, name, err)) - {} - - make_kernel( - const Kernel kernel) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - >( - FunctorType(kernel)) - {} -}; - - -//---------------------------------------------------------------------------------------------------------------------- - -#undef __ERR_STR -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_ARG_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_ERR -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR -#undef __SET_PRINTF_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __CL_EXPLICIT_CONSTRUCTORS - -#undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS - -#undef __CL_FUNCTION_TYPE - -// Extensions -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_VERSION_1_1) -#undef __INIT_CL_EXT_FCN_PTR -#endif // #if defined(CL_VERSION_1_1) -#undef __CREATE_SUB_DEVICES - -#if defined(USE_CL_DEVICE_FISSION) -#undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION - -#undef __DEFAULT_NOT_INITIALIZED -#undef __DEFAULT_BEING_INITIALIZED -#undef __DEFAULT_INITIALIZED - -#undef CL_HPP_RVALUE_REFERENCES_SUPPORTED -#undef CL_HPP_NOEXCEPT - -} // namespace cl - -#endif // CL_HPP_ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl2.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl2.hpp deleted file mode 100644 index 50de6e5431b720..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl2.hpp +++ /dev/null @@ -1,9522 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/*! \file - * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33), - * OpenCL 1.2 (rev 15) and OpenCL 2.0 (rev 29) - * \author Lee Howes and Bruce Merry - * - * Derived from the OpenCL 1.x C++ bindings written by - * Benedict R. Gaster, Laurent Morichetti and Lee Howes - * With additions and fixes from: - * Brian Cole, March 3rd 2010 and April 2012 - * Matt Gruenke, April 2012. - * Bruce Merry, February 2013. - * Tom Deakin and Simon McIntosh-Smith, July 2013 - * James Price, June-November 2015 - * - * \version 2.0.8 - * \date 2015-11-03 - * - * Optional extension support - * - * cl_ext_device_fission - * #define CL_HPP_USE_CL_DEVICE_FISSION - * cl_khr_d3d10_sharing - * #define CL_HPP_USE_DX_INTEROP - * cl_khr_sub_groups - * #define CL_HPP_USE_CL_SUB_GROUPS_KHR - */ - -/*! \mainpage - * \section intro Introduction - * For many large applications C++ is the language of choice and so it seems - * reasonable to define C++ bindings for OpenCL. - * - * The interface is contained with a single C++ header file \em cl2.hpp and all - * definitions are contained within the namespace \em cl. There is no additional - * requirement to include \em cl.h and to use either the C++ or original C - * bindings; it is enough to simply include \em cl.hpp. - * - * The bindings themselves are lightweight and correspond closely to the - * underlying C API. Using the C++ bindings introduces no additional execution - * overhead. - * - * There are numerous compatibility, portability and memory management - * fixes in the new header as well as additional OpenCL 2.0 features. - * As a result the header is not directly backward compatible and for this - * reason we release it as cl2.hpp rather than a new version of cl.hpp. - * - * - * \section compatibility Compatibility - * Due to the evolution of the underlying OpenCL API the 2.0 C++ bindings - * include an updated approach to defining supported feature versions - * and the range of valid underlying OpenCL runtime versions supported. - * - * The combination of preprocessor macros CL_HPP_TARGET_OPENCL_VERSION and - * CL_HPP_MINIMUM_OPENCL_VERSION control this range. These are three digit - * decimal values representing OpenCL runime versions. The default for - * the target is 200, representing OpenCL 2.0 and the minimum is also - * defined as 200. These settings would use 2.0 API calls only. - * If backward compatibility with a 1.2 runtime is required, the minimum - * version may be set to 120. - * - * Note that this is a compile-time setting, and so affects linking against - * a particular SDK version rather than the versioning of the loaded runtime. - * - * The earlier versions of the header included basic vector and string - * classes based loosely on STL versions. These were difficult to - * maintain and very rarely used. For the 2.0 header we now assume - * the presence of the standard library unless requested otherwise. - * We use std::array, std::vector, std::shared_ptr and std::string - * throughout to safely manage memory and reduce the chance of a - * recurrance of earlier memory management bugs. - * - * These classes are used through typedefs in the cl namespace: - * cl::array, cl::vector, cl::pointer and cl::string. - * In addition cl::allocate_pointer forwards to std::allocate_shared - * by default. - * In all cases these standard library classes can be replaced with - * custom interface-compatible versions using the CL_HPP_NO_STD_ARRAY, - * CL_HPP_NO_STD_VECTOR, CL_HPP_NO_STD_UNIQUE_PTR and - * CL_HPP_NO_STD_STRING macros. - * - * The OpenCL 1.x versions of the C++ bindings included a size_t wrapper - * class to interface with kernel enqueue. This caused unpleasant interactions - * with the standard size_t declaration and led to namespacing bugs. - * In the 2.0 version we have replaced this with a std::array-based interface. - * However, the old behaviour can be regained for backward compatibility - * using the CL_HPP_ENABLE_SIZE_T_COMPATIBILITY macro. - * - * Finally, the program construction interface used a clumsy vector-of-pairs - * design in the earlier versions. We have replaced that with a cleaner - * vector-of-vectors and vector-of-strings design. However, for backward - * compatibility old behaviour can be regained with the - * CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY macro. - * - * In OpenCL 2.0 OpenCL C is not entirely backward compatibility with - * earlier versions. As a result a flag must be passed to the OpenCL C - * compiled to request OpenCL 2.0 compilation of kernels with 1.2 as - * the default in the absence of the flag. - * In some cases the C++ bindings automatically compile code for ease. - * For those cases the compilation defaults to OpenCL C 2.0. - * If this is not wanted, the CL_HPP_CL_1_2_DEFAULT_BUILD macro may - * be specified to assume 1.2 compilation. - * If more fine-grained decisions on a per-kernel bases are required - * then explicit build operations that take the flag should be used. - * - * - * \section parameterization Parameters - * This header may be parameterized by a set of preprocessor macros. - * CL_HPP_TARGET_OPENCL_VERSION - * - Defines the target OpenCL runtime version to build the header against. - * Defaults to 200, representing OpenCL 2.0. - * CL_HPP_NO_STD_STRING - * - Do not use the standard library string class. - * cl::string is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_VECTOR - * - Do not use the standard library vector class. - * cl::vector is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_ARRAY - * - Do not use the standard library array class. - * cl::array is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_UNIQUE_PTR - * - Do not use the standard library unique_ptr class. - * cl::pointer and the cl::allocate_pointer function are not defined - * and may be defined by the user before cl2.hpp is included. - * CL_HPP_ENABLE_DEVICE_FISSION - * - Enables device fission for OpenCL 1.2 platforms - * CL_HPP_ENABLE_EXCEPTIONS - * - Enable exceptions for use in the C++ bindings header. - * This is the preferred error handling mechanism but is not required. - * CL_HPP_ENABLE_SIZE_T_COMPATIBILITY - * - Backward compatibility option to support cl.hpp-style size_t class. - * Replaces the updated std::array derived version and removal of size_t - * from the namespace. Note that in this case the new size_t class - * is placed in the cl::compatibility namespace and thus requires - * an additional using declaration for direct backward compatibility. - * CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY - * - Enable older vector of pairs interface for construction of programs. - * CL_HPP_CL_1_2_DEFAULT_BUILD - * - Default to OpenCL C 1.2 compilation rather than OpenCL C 2.0 - * - applies to use of cl::Program construction and other program build variants. - * - * - * \section example Example - * - * The following example shows a general use case for the C++ - * bindings, including support for the optional exception feature and - * also the supplied vector and string classes, see following sections for - * decriptions of these features. - * - * \code - #define CL_HPP_ENABLE_EXCEPTIONS - #define CL_HPP_TARGET_OPENCL_VERSION 200 - - #include - #include - #include - #include - #include - - const int numElements = 32; - - int main(void) - { - // Filter for a 2.0 platform and set it as the default - std::vector platforms; - cl::Platform::get(&platforms); - cl::Platform plat; - for (auto &p : platforms) { - std::string platver = p.getInfo(); - if (platver.find("OpenCL 2.") != std::string::npos) { - plat = p; - } - } - if (plat() == 0) { - std::cout << "No OpenCL 2.0 platform found."; - return -1; - } - - cl::Platform newP = cl::Platform::setDefault(plat); - if (newP != plat) { - std::cout << "Error setting default platform."; - return -1; - } - - std::string kernel1{ - "global int globalA;" - "kernel void updateGlobal(){" - " globalA = 75;" - "}"}; - std::string kernel2{ - "typedef struct { global int *bar; } Foo; kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, global int *output, int val, write_only pipe int outPipe, queue_t childQueue){" - " output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar);" - " write_pipe(outPipe, &val);" - " queue_t default_queue = get_default_queue(); " - " ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); " - // Have a child kernel write into third quarter of output - " enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*2 + get_global_id(0)] = inputA[get_global_size(0)*2+get_global_id(0)] + inputB[get_global_size(0)*2+get_global_id(0)] + globalA;" - " });" - // Have a child kernel write into last quarter of output - " enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*3 + get_global_id(0)] = inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2;" - " });" - "}" }; - - // New simpler string interface style - std::vector programStrings {kernel1, kernel2}; - - cl::Program vectorAddProgram( - programStrings); - try { - vectorAddProgram.build("-cl-std=CL2.0"); - } - catch (...) { - // Print build info for all devices - cl_int buildErr = CL_SUCCESS; - auto buildInfo = vectorAddProgram.getBuildInfo(&buildErr); - for (auto &pair : buildInfo) { - std::cerr << pair.second << std::endl << std::endl; - } - - return 1; - } - - typedef struct { int *bar; } Foo; - - // Get and run kernel that initializes the program-scope global - // A test for kernels that take no arguments - auto program2Kernel = - cl::KernelFunctor<>(vectorAddProgram, "updateGlobal"); - program2Kernel( - cl::EnqueueArgs( - cl::NDRange(1))); - - ////////////////// - // SVM allocations - - cl::pointer anSVMInt = cl::allocate_svm>(); - *anSVMInt = 5; - cl::SVMAllocator>> svmAllocReadOnly; - auto fooPointer = cl::allocate_pointer(svmAllocReadOnly); - fooPointer->bar = anSVMInt.get(); - cl::SVMAllocator> svmAlloc; - std::vector>> inputA(numElements, 1, svmAlloc); - cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); - - // - ////////////// - - // Traditional cl_mem allocations - std::vector output(numElements, 0xdeadbeef); - cl::Buffer outputBuffer(begin(output), end(output), false); - cl::Pipe aPipe(sizeof(cl_int), numElements / 2); - - // Default command queue, also passed in as a parameter - cl::DeviceCommandQueue defaultDeviceQueue = cl::DeviceCommandQueue::makeDefault( - cl::Context::getDefault(), cl::Device::getDefault()); - - auto vectorAddKernel = - cl::KernelFunctor< - decltype(fooPointer)&, - int*, - cl::coarse_svm_vector&, - cl::Buffer, - int, - cl::Pipe&, - cl::DeviceCommandQueue - >(vectorAddProgram, "vectorAdd"); - - // Ensure that the additional SVM pointer is available to the kernel - // This one was not passed as a parameter - vectorAddKernel.setSVMPointers(anSVMInt); - - // Hand control of coarse allocations to runtime - cl::enqueueUnmapSVM(anSVMInt); - cl::enqueueUnmapSVM(fooPointer); - cl::unmapSVM(inputB); - cl::unmapSVM(output2); - - cl_int error; - vectorAddKernel( - cl::EnqueueArgs( - cl::NDRange(numElements/2), - cl::NDRange(numElements/2)), - fooPointer, - inputA.data(), - inputB, - outputBuffer, - 3, - aPipe, - defaultDeviceQueue, - error - ); - - cl::copy(outputBuffer, begin(output), end(output)); - // Grab the SVM output vector using a map - cl::mapSVM(output2); - - cl::Device d = cl::Device::getDefault(); - - std::cout << "Output:\n"; - for (int i = 1; i < numElements; ++i) { - std::cout << "\t" << output[i] << "\n"; - } - std::cout << "\n\n"; - - return 0; - } - * - * \endcode - * - */ -#ifndef CL_HPP_ -#define CL_HPP_ - -/* Handle deprecated preprocessor definitions. In each case, we only check for - * the old name if the new name is not defined, so that user code can define - * both and hence work with either version of the bindings. - */ -#if !defined(CL_HPP_USE_DX_INTEROP) && defined(USE_DX_INTEROP) -# pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") -# define CL_HPP_USE_DX_INTEROP -#endif -#if !defined(CL_HPP_USE_CL_DEVICE_FISSION) && defined(USE_CL_DEVICE_FISSION) -# pragma message("cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") -# define CL_HPP_USE_CL_DEVICE_FISSION -#endif -#if !defined(CL_HPP_ENABLE_EXCEPTIONS) && defined(__CL_ENABLE_EXCEPTIONS) -# pragma message("cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") -# define CL_HPP_ENABLE_EXCEPTIONS -#endif -#if !defined(CL_HPP_NO_STD_VECTOR) && defined(__NO_STD_VECTOR) -# pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") -# define CL_HPP_NO_STD_VECTOR -#endif -#if !defined(CL_HPP_NO_STD_STRING) && defined(__NO_STD_STRING) -# pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") -# define CL_HPP_NO_STD_STRING -#endif -#if defined(VECTOR_CLASS) -# pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") -#endif -#if defined(STRING_CLASS) -# pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") -#endif -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) && defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -# pragma message("cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") -# define CL_HPP_USER_OVERRIDE_ERROR_STRINGS -#endif - -/* Warn about features that are no longer supported - */ -#if defined(__USE_DEV_VECTOR) -# pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") -#endif -#if defined(__USE_DEV_STRING) -# pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") -#endif - -/* Detect which version to target */ -#if !defined(CL_HPP_TARGET_OPENCL_VERSION) -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") -# define CL_HPP_TARGET_OPENCL_VERSION 200 -#endif -#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") -# undef CL_HPP_TARGET_OPENCL_VERSION -# define CL_HPP_TARGET_OPENCL_VERSION 200 -#endif - -#if !defined(CL_HPP_MINIMUM_OPENCL_VERSION) -# define CL_HPP_MINIMUM_OPENCL_VERSION 200 -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") -# undef CL_HPP_MINIMUM_OPENCL_VERSION -# define CL_HPP_MINIMUM_OPENCL_VERSION 100 -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION > CL_HPP_TARGET_OPENCL_VERSION -# error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" -#endif - -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_0_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_1_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_2_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_2_0_APIS -#endif - -#ifdef _WIN32 - -#include - -#if defined(CL_HPP_USE_DX_INTEROP) -#include -#include -#endif -#endif // _WIN32 - -#if defined(_MSC_VER) -#include -#endif // _MSC_VER - - // Check for a valid C++ version - -// Need to do both tests here because for some reason __cplusplus is not -// updated in visual studio -#if (!defined(_MSC_VER) && __cplusplus < 201103L) || (defined(_MSC_VER) && _MSC_VER < 1700) -#error Visual studio 2013 or another C++11-supporting compiler required -#endif - -// -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) || defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#include -#endif - -#if defined(__APPLE__) || defined(__MACOSX) -#include -#else -#include -#endif // !__APPLE__ - -#if (__cplusplus >= 201103L) -#define CL_HPP_NOEXCEPT_ noexcept -#else -#define CL_HPP_NOEXCEPT_ -#endif - -#if defined(_MSC_VER) -# define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) -#else -# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) -#endif // !_MSC_VER - -// Define deprecated prefixes and suffixes to ensure compilation -// in case they are not pre-defined -#if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) - -#if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) - -#if !defined(CL_CALLBACK) -#define CL_CALLBACK -#endif //CL_CALLBACK - -#include -#include -#include -#include -#include -#include - - -// Define a size_type to represent a correctly resolved size_t -#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - using size_type = ::size_t; -} // namespace cl -#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - using size_type = size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) - - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -#include -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - -#if !defined(CL_HPP_NO_STD_VECTOR) -#include -namespace cl { - template < class T, class Alloc = std::allocator > - using vector = std::vector; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_VECTOR) - -#if !defined(CL_HPP_NO_STD_STRING) -#include -namespace cl { - using string = std::string; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_STRING) - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -#include -namespace cl { - // Replace unique_ptr and allocate_pointer for internal use - // to allow user to replace them - template - using pointer = std::unique_ptr; -} // namespace cl -#endif -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#if !defined(CL_HPP_NO_STD_ARRAY) -#include -namespace cl { - template < class T, size_type N > - using array = std::array; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_ARRAY) - -// Define size_type appropriately to allow backward-compatibility -// use of the old size_t interface class -#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - namespace compatibility { - /*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ - template - class size_t - { - private: - size_type data_[N]; - - public: - //! \brief Initialize size_t to all 0s - size_t() - { - for (int i = 0; i < N; ++i) { - data_[i] = 0; - } - } - - size_t(const array &rhs) - { - for (int i = 0; i < N; ++i) { - data_[i] = rhs[i]; - } - } - - size_type& operator[](int index) - { - return data_[index]; - } - - const size_type& operator[](int index) const - { - return data_[index]; - } - - //! \brief Conversion operator to T*. - operator size_type* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const size_type* () const { return data_; } - - operator array() const - { - array ret; - - for (int i = 0; i < N; ++i) { - ret[i] = data_[i]; - } - return ret; - } - }; - } // namespace compatibility - - template - using size_t = compatibility::size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) - -// Helper alias to avoid confusing the macros -namespace cl { - namespace detail { - using size_t_array = array; - } // namespace detail -} // namespace cl - - -/*! \namespace cl - * - * \brief The OpenCL C++ bindings are defined within this namespace. - * - */ -namespace cl { - class Memory; - -#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if (!pfn_##name) { \ - } \ - } - -#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if (!pfn_##name) { \ - } \ - } - - class Program; - class Device; - class Context; - class CommandQueue; - class DeviceCommandQueue; - class Memory; - class Buffer; - class Pipe; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - /*! \brief Exception class - * - * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. - */ - class Error : public std::exception - { - private: - cl_int err_; - const char * errStr_; - public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} - - ~Error() throw() {} - - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } - - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } - }; -#define CL_HPP_ERR_STR_(x) #x -#else -#define CL_HPP_ERR_STR_(x) NULL -#endif // CL_HPP_ENABLE_EXCEPTIONS - - -namespace detail -{ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; -} -#else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; -} -#endif // CL_HPP_ENABLE_EXCEPTIONS -} - - - -//! \cond DOXYGEN_DETAIL -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) -#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) - -#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) - -#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) -#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) -#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR CL_HPP_ERR_STR_(clSetMemObjectDestructorCallback) - -#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) - -#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) -#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) -#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) -#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) - -#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) -#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) - - -#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) -#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) -#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) -#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) -#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) - -/** - * CL 1.2 version that uses device fission. - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) -#else -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/** - * Deprecated APIs for 2.0 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) -#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) -#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/** - * CL 1.2 marker and barrier commands - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS -//! \endcond - - -namespace detail { - -// Generic getInfoHelper. The final parameter is used to guide overload -// resolution: the actual parameter passed is an int, which makes this -// a worse conversion sequence than a specialization that declares the -// parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); -} - -// Specialized for getInfo -// Assumes that the output vector was correctly resized on the way in -template -inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Create array of pointers, calculate total size and pass pointer array in - size_type numBinaries = param->size(); - vector binariesPointers(numBinaries); - - size_type totalSize = 0; - for (size_type i = 0; i < numBinaries; ++i) - { - binariesPointers[i] = (*param)[i].data(); - totalSize += (*param)[i].size(); - } - - cl_int err = f(name, totalSize, binariesPointers.data(), NULL); - - if (err != CL_SUCCESS) { - return err; - } - } - - - return CL_SUCCESS; -} - -// Specialized getInfoHelper for vector params -template -inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - const size_type elements = required / sizeof(T); - - // Temporary to avoid changing param on an error - vector localData(elements); - err = f(name, required, localData.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - *param = std::move(localData); - } - - return CL_SUCCESS; -} - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper( - Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - const size_type elements = required / sizeof(typename T::cl_type); - - vector value(elements); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - if (param) { - // Assign to convert CL type to T for each element - param->resize(elements); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < elements; i++) { - (*param)[i] = T(value[i], true); - } - } - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for string params -template -inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - // std::string has a constant data member - // a char vector does not - if (required > 0) { - vector value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(begin(value), prev(end(value))); - } - } - else if (param) { - param->assign(""); - } - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for clsize_t params -template -inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - size_type elements = required / sizeof(size_type); - vector value(elements, 0); - - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - // Bound the copy with N to prevent overruns - // if passed N > than the amount copied - if (elements > N) { - elements = N; - } - for (size_type i = 0; i < elements; ++i) { - (*param)[i] = value[i]; - } - - return CL_SUCCESS; -} - -template struct ReferenceHandler; - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); - if (err != CL_SUCCESS) { - return err; - } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; -} - -#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ - F(cl_platform_info, CL_PLATFORM_VERSION, string) \ - F(cl_platform_info, CL_PLATFORM_NAME, string) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, string) \ - F(cl_device_info, CL_DEVICE_VENDOR, string) \ - F(cl_device_info, CL_DRIVER_VERSION, string) \ - F(cl_device_info, CL_DEVICE_PROFILE, string) \ - F(cl_device_info, CL_DEVICE_VERSION, string) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, size_type) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ - F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ - F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_SOURCE, string) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) - - -#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, size_type) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) - -#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ - \ - F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ - F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) - -#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ - F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ - F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ - F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ - F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) - -#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) - -template -struct param_traits {}; - -#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; - -CL_HPP_PARAM_NAME_INFO_1_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - -// Flags deprecated in OpenCL 2.0 -#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) - -#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) - -#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) - -// Include deprecated query flags based on versions -// Only include deprecated 1.0 flags if 2.0 not active as there is an enum clash -#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && CL_HPP_TARGET_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 -#if CL_HPP_TARGET_OPENCL_VERSION > 110 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#if CL_HPP_TARGET_OPENCL_VERSION > 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 - -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) -CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_); -#endif // CL_HPP_USE_CL_DEVICE_FISSION - -#ifdef CL_PLATFORM_ICD_SUFFIX_KHR -CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, string) -#endif - -#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong) -#endif - -#ifdef CL_DEVICE_GLOBAL_FREE_MEMORY_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, vector) -#endif -#ifdef CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_WAVEFRONT_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WAVEFRONT_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) -#endif - -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint) -#endif -#ifdef CL_DEVICE_WARP_SIZE_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint) -#endif -#ifdef CL_DEVICE_GPU_OVERLAP_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool) -#endif -#ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool) -#endif -#ifdef CL_DEVICE_INTEGRATED_MEMORY_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool) -#endif - -// Convenience functions - -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); -} - -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, param, size, value, size_ret); } -}; - -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } -}; - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); -} - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); -} - - -template -struct ReferenceHandler -{ }; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/** - * OpenCL 1.2 devices do have retain/release. - */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } -}; -#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 -/** - * OpenCL 1.1 devices do not have retain/release. - */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } -}; -#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) - -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } -}; - - -// Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const vector &versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } - ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; -} - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - size_type size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - - vector versionInfo(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); - return getVersion(versionInfo); -} - -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); -} - -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - size_type size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - vector devices(size/sizeof(cl_device_id)); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); - return getDevicePlatformVersion(devices[0]); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - -template -class Wrapper -{ -public: - typedef T cl_type; - -protected: - cl_type object_; - -public: - Wrapper() : object_(NULL) { } - - Wrapper(const cl_type &obj, bool retainObject) : object_(obj) - { - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } - } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - rhs.object_ = NULL; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - if (object_ != nullptr) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; - -protected: - cl_type object_; - bool referenceCountable_; - - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } -#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - retVal = true; -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - return retVal; - } - -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } - - Wrapper(const cl_type &obj, bool retainObject) : - object_(obj), - referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } - } - - ~Wrapper() - { - release(); - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - detail::errHandler(retain(), __RETAIN_ERR); - } - - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); - - cl_int retain() const - { - if( object_ != nullptr && referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr && referenceCountable_) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -template -inline bool operator==(const Wrapper &lhs, const Wrapper &rhs) -{ - return lhs() == rhs(); -} - -template -inline bool operator!=(const Wrapper &lhs, const Wrapper &rhs) -{ - return !operator==(lhs, rhs); -} - -} // namespace detail -//! \endcond - - -using BuildLogType = vector::param_type>>; -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -/** -* Exception class for build errors to carry build info -*/ -class BuildError : public Error -{ -private: - BuildLogType buildLogs; -public: - BuildError(cl_int err, const char * errStr, const BuildLogType &vec) : Error(err, errStr), buildLogs(vec) - { - } - - BuildLogType getBuildLog() const - { - return buildLogs; - } -}; -namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - if (err != CL_SUCCESS) { - throw BuildError(err, errStr, buildLogs); - } - return err; - } -} // namespace detail - -#else -namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - (void)buildLogs; // suppress unused variable warning - (void)errStr; - return err; - } -} // namespace detail -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - - -/*! \stuct ImageFormat - * \brief Adds constructors and member functions for cl_image_format. - * - * \see cl_image_format - */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} - - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } - - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; - } -}; - -/*! \brief Class interface for cl_device_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_device_id - */ -class Device : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Device default_; - static cl_int default_error_; - - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault(); - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Device &p) { - default_ = p; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Device(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } - - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - explicit Device(const cl_device_id &device, bool retainObject = false) : - detail::Wrapper(device, retainObject) { } - - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; - } - - /** - * Modify the default device to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default device. - * Should be compared to the passed value to ensure that it was updated. - */ - static Device setDefault(const Device &default_device) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); - detail::errHandler(default_error_); - return default_; - } - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clCreateSubDevices(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - vector* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - - return CL_SUCCESS; - } -#elif defined(CL_HPP_USE_CL_DEVICE_FISSION) - -/** - * CL 1.1 version that uses device fission extension. - */ - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - vector* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); - - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - return CL_SUCCESS; - } -#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) -}; - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Device Device::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS; - -/*! \brief Class interface for cl_platform_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_platform_id - */ -class Platform : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Platform default_; - static cl_int default_error_; - - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - // If default wasn't passed ,generate one - // Otherwise set it - cl_uint n = 0; - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - if (n == 0) { - default_error_ = CL_INVALID_PLATFORM; - return; - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - - default_ = Platform(ids[0]); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Platform &p) { - default_ = p; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Platform(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } - - /*! \brief Constructor from cl_platform_id. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This simply copies the platform ID value, which is an inexpensive operation. - */ - explicit Platform(const cl_platform_id &platform, bool retainObject = false) : - detail::Wrapper(platform, retainObject) { } - - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - static Platform getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; - } - - /** - * Modify the default platform to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default platform. - * Should be compared to the passed value to ensure that it was updated. - */ - static Platform setDefault(const Platform &default_platform) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, string* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - vector* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; - } - -#if defined(CL_HPP_USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - vector* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); - - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; - } -#endif - - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - vector* platforms) - { - cl_uint n = 0; - - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - if (platforms) { - platforms->resize(ids.size()); - - // Platforms don't reference count - for (size_type i = 0; i < ids.size(); i++) { - (*platforms)[i] = Platform(ids[i]); - } - } - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (platform) { - *platform = default_platform; - } - return err; - } - - /*! \brief Gets the first available platform, returning it by value. - * - * \return Returns a valid platform if one is available. - * If no platform is available will return a null platform. - * Throws an exception if no platforms are available - * or an error condition occurs. - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (errResult) { - *errResult = err; - } - return default_platform; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -}; // class Platform - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Platform Platform::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS; - - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/** - * Unload the OpenCL compiler. - * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/*! \brief Class interface for cl_context. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_context as the original. For details, see - * clRetainContext() and clReleaseContext(). - * - * \see cl_context - */ -class Context - : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Context default_; - static cl_int default_error_; - - /*! \brief Create the default context from the default device type in the default platform. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { -#if !defined(__APPLE__) && !defined(__MACOS) - const Platform &p = Platform::getDefault(); - cl_platform_id defaultPlatform = p(); - cl_context_properties properties[3] = { - CL_CONTEXT_PLATFORM, (cl_context_properties)defaultPlatform, 0 - }; -#else // #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties *properties = nullptr; -#endif // #if !defined(__APPLE__) && !defined(__MACOS) - - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - properties, - NULL, - NULL, - &default_error_); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - - /*! \brief Create the default context from a provided Context. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Context &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Context(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const vector& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs.data(), - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - vector platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - vector devices; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } - - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default context to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default context. - * Should be compared to the passed value to ensure that it was updated. - */ - static Context setDefault(const Context &default_context) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - explicit Context(const cl_context& context, bool retainObject = false) : - detail::Wrapper(context, retainObject) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - vector* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - vector value(numEntries); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(begin(value), end(value)); - } - else { - // If no values are being returned, ensure an empty vector comes back - formats->clear(); - } - - return CL_SUCCESS; - } -}; - -inline void Device::makeDefault() -{ - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - cl_int error = 0; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - default_ = context.getInfo()[0]; - default_error_ = CL_SUCCESS; - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif -} - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Context::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Context Context::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Context::default_error_ = CL_SUCCESS; - -/*! \brief Class interface for cl_event. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_event as the original. For details, see - * clRetainEvent() and clReleaseEvent(). - * - * \see cl_event - */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } - - /*! \brief Constructor from cl_event - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - explicit Event(const cl_event& event, bool retainObject = false) : - detail::Wrapper(event, retainObject) { } - - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } - - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const vector& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -/*! \brief Class interface for user events (a subset of cl_event's). - * - * See Event for details about copy semantics, etc. - */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); - - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } - - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } -}; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -/*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ -inline static cl_int -WaitForEvents(const vector& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); -} - -/*! \brief Class interface for cl_mem. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_mem as the original. For details, see - * clRetainMemObject() and clReleaseMemObject(). - * - * \see cl_mem - */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * Optionally transfer ownership of a refcount on the cl_mem - * into the new Memory object. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * - * See Memory for further details. - */ - explicit Memory(const cl_mem& memory, bool retainObject) : - detail::Wrapper(memory, retainObject) { } - - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } - - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -}; - -// Pre-declare copy functions -class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -namespace detail -{ - class SVMTraitNull - { - public: - static cl_svm_mem_flags getSVMMemFlags() - { - return 0; - } - }; -} // namespace detail - -template -class SVMTraitReadWrite -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_WRITE | - Trait::getSVMMemFlags(); - } -}; - -template -class SVMTraitReadOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_ONLY | - Trait::getSVMMemFlags(); - } -}; - -template -class SVMTraitWriteOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_WRITE_ONLY | - Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitCoarse -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitFine -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_SVM_FINE_GRAIN_BUFFER | - Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitAtomic -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return - CL_MEM_SVM_FINE_GRAIN_BUFFER | - CL_MEM_SVM_ATOMICS | - Trait::getSVMMemFlags(); - } -}; - -// Pre-declare SVM map function -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL); - -/** - * STL-like allocator class for managing SVM objects provided for convenience. - * - * Note that while this behaves like an allocator for the purposes of constructing vectors and similar objects, - * care must be taken when using with smart pointers. - * The allocator should not be used to construct a unique_ptr if we are using coarse-grained SVM mode because - * the coarse-grained management behaviour would behave incorrectly with respect to reference counting. - * - * Instead the allocator embeds a Deleter which may be used with unique_ptr and is used - * with the allocate_shared and allocate_ptr supplied operations. - */ -template -class SVMAllocator { -private: - Context context_; - -public: - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - template - struct rebind - { - typedef SVMAllocator other; - }; - - template - friend class SVMAllocator; - - SVMAllocator() : - context_(Context::getDefault()) - { - } - - explicit SVMAllocator(cl::Context context) : - context_(context) - { - } - - - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } - - template - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } - - ~SVMAllocator() - { - } - - pointer address(reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } - - const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } - - /** - * Allocate an SVM pointer. - * - * If the allocator is coarse-grained, this will take ownership to allow - * containers to correctly construct data in place. - */ - pointer allocate( - size_type size, - typename cl::SVMAllocator::const_pointer = 0) - { - // Allocate memory with default alignment matching the size of the type - void* voidPointer = - clSVMAlloc( - context_(), - SVMTrait::getSVMMemFlags(), - size*sizeof(T), - sizeof(T)); - pointer retValue = reinterpret_cast( - voidPointer); -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - if (!retValue) { - std::bad_alloc excep; - throw excep; - } -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - - // If allocation was coarse-grained then map it - if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { - cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size*sizeof(T)); - if (err != CL_SUCCESS) { - std::bad_alloc excep; - throw excep; - } - } - - // If exceptions disabled, return null pointer from allocator - return retValue; - } - - void deallocate(pointer p, size_type) - { - clSVMFree(context_(), p); - } - - /** - * Return the maximum possible allocation size. - * This is the minimum of the maximum sizes of all devices in the context. - */ - size_type max_size() const CL_HPP_NOEXCEPT_ - { - size_type maxSize = std::numeric_limits::max() / sizeof(T); - - for (Device &d : context_.getInfo()) { - maxSize = std::min( - maxSize, - static_cast(d.getInfo())); - } - - return maxSize; - } - - template< class U, class... Args > - void construct(U* p, Args&&... args) - { - new(p)T(args...); - } - - template< class U > - void destroy(U* p) - { - p->~U(); - } - - /** - * Returns true if the contexts match. - */ - inline bool operator==(SVMAllocator const& rhs) - { - return (context_==rhs.context_); - } - - inline bool operator!=(SVMAllocator const& a) - { - return !operator==(a); - } -}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, copies}); - - -template -class SVMAllocator { -public: - typedef void value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - - template - struct rebind - { - typedef SVMAllocator other; - }; - - template - friend class SVMAllocator; -}; - -#if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -namespace detail -{ - template - class Deleter { - private: - Alloc alloc_; - size_type copies_; - - public: - typedef typename std::allocator_traits::pointer pointer; - - Deleter(const Alloc &alloc, size_type copies) : alloc_{ alloc }, copies_{ copies } - { - } - - void operator()(pointer ptr) const { - Alloc tmpAlloc{ alloc_ }; - std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); - std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); - } - }; -} // namespace detail - -/** - * Allocation operation compatible with std::allocate_ptr. - * Creates a unique_ptr by default. - * This requirement is to ensure that the control block is not - * allocated in memory inaccessible to the host. - */ -template -cl::pointer> allocate_pointer(const Alloc &alloc_, Args&&... args) -{ - Alloc alloc(alloc_); - static const size_t copies = 1; - - // Ensure that creation of the management block and the - // object are dealt with separately such that we only provide a deleter - - T* tmp = std::allocator_traits::allocate(alloc, copies); - if (!tmp) { - std::bad_alloc excep; - throw excep; - } - try { - std::allocator_traits::construct( - alloc, - std::addressof(*tmp), - std::forward(args)...); - - return cl::pointer>(tmp, detail::Deleter{alloc, copies}); - } - catch (std::bad_alloc b) - { - std::allocator_traits::deallocate(alloc, tmp, copies); - throw; - } -} - -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(Args... args) -{ - SVMAllocator alloc; - return cl::allocate_pointer(alloc, args...); -} - -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(const cl::Context &c, Args... args) -{ - SVMAllocator alloc(c); - return cl::allocate_pointer(alloc, args...); -} -#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) - -/*! \brief Vector alias to simplify contruction of coarse-grained SVM containers. - * - */ -template < class T > -using coarse_svm_vector = vector>>; - -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers. -* -*/ -template < class T > -using fine_svm_vector = vector>>; - -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform atomics. -* -*/ -template < class T > -using atomic_svm_vector = vector>>; - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -/*! \brief Class interface for Buffer Memory Objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Buffer : public Memory -{ -public: - - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must be random access. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Buffer(const cl_mem& buffer, bool retainObject = false) : - Memory(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); - - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -}; - -#if defined (CL_HPP_USE_DX_INTEROP) -/*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. - * - * This is provided to facilitate interoperability with Direct3D. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferD3D10 : public Buffer -{ -public: - - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) : pfn_clCreateFromD3D10BufferKHR(nullptr) - { - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); -#elif CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); -#endif - - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : - Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -}; -#endif - -/*! \brief Class interface for GL Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief Class interface for GL Render Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferRenderGL : public Buffer -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferRenderGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief C++ base class for Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image(const cl_mem& image, bool retainObject = false) : - Memory(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } - - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \brief Class interface for 1D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image1D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1D(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - -/*! \class Image1DBuffer - * \brief Image interface for 1D buffer images. - */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DBuffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } - - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - -/*! \class Image1DArray - * \brief Image interface for arrays of 1D images. - */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DArray() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) : - Image(imageArray, retainObject) { } - - - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - - -/*! \brief Class interface for 2D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 2D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from a buffer. - * \note This will share storage with the underlying buffer. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - ImageFormat format, - const Buffer &sourceBuffer, - size_type width, - size_type height, - size_type row_pitch = 0, - cl_int* err = nullptr) - { - cl_int error; - - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, - // Use buffer as input to image - sourceBuffer() - }; - object_ = ::clCreateImage( - context(), - 0, // flags inherited from buffer - &format, - &desc, - nullptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } - } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from an image. - * \note This will share storage with the underlying image but may - * reinterpret the channel order and type. - * - * The image will be created matching with a descriptor matching the source. - * - * \param order is the channel order to reinterpret the image data as. - * The channel order may differ as described in the OpenCL - * 2.0 API specification. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_channel_order order, - const Image &sourceImage, - cl_int* err = nullptr) - { - cl_int error; - - // Descriptor fields have to match source image - size_type sourceWidth = - sourceImage.getImageInfo(); - size_type sourceHeight = - sourceImage.getImageInfo(); - size_type sourceRowPitch = - sourceImage.getImageInfo(); - cl_uint sourceNumMIPLevels = - sourceImage.getImageInfo(); - cl_uint sourceNumSamples = - sourceImage.getImageInfo(); - cl_image_format sourceFormat = - sourceImage.getImageInfo(); - - // Update only the channel order. - // Channel format inherited from source. - sourceFormat.image_channel_order = order; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - sourceWidth, - sourceHeight, - 0, 0, // depth (unused), array size (unused) - sourceRowPitch, - 0, // slice pitch (unused) - sourceNumMIPLevels, - sourceNumSamples, - // Use buffer as input to image - sourceImage() - }; - object_ = ::clCreateImage( - context(), - 0, // flags should be inherited from mem_object - &sourceFormat, - &desc, - nullptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } - } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - //! \brief Default constructor - initializes to NULL. - Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2D(const cl_mem& image2D, bool retainObject = false) : - Image(image2D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - - -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/*! \brief Class interface for GL 2D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } - - } - - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DGL(const cl_mem& image, bool retainObject = false) : - Image2D(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - *c - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } - -} CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \class Image2DArray - * \brief Image interface for arrays of 2D images. - */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type height, - size_type rowPitch, - size_type slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2DArray() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) : Image(imageArray, retainObject) { } - - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - -/*! \brief Class interface for 3D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type depth, - size_type row_pitch = 0, - size_type slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - } - - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3D(const cl_mem& image3D, bool retainObject = false) : - Image(image3D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; - -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/*! \brief Class interface for GL 3D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3DGL(const cl_mem& image, bool retainObject = false) : - Image3D(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -}; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \class ImageGL - * \brief general image interface for GL interop. - * We abstract the 2D and 3D GL images into a single instance here - * that wraps all GL sourced images on the grounds that setup information - * was performed by OpenCL anyway. - */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } - } - - ImageGL() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit ImageGL(const cl_mem& image, bool retainObject = false) : - Image(image, retainObject) { } - - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/*! \brief Class interface for Pipe Memory Objects. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class Pipe : public Memory -{ -public: - - /*! \brief Constructs a Pipe in a specified context. - * - * Wraps clCreatePipe(). - * @param context Context in which to create the pipe. - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - const Context& context, - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; - - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Pipe in a the default context. - * - * Wraps clCreatePipe(). - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Pipe() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Pipe(const cl_mem& pipe, bool retainObject = false) : - Memory(pipe, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Pipe& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe(const Pipe& pipe) : Memory(pipe) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (const Pipe &pipe) - { - Memory::operator=(pipe); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (Pipe &&pipe) - { - Memory::operator=(std::move(pipe)); - return *this; - } - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_pipe_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPipeInfo, object_, name, param), - __GET_PIPE_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_pipe_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; // class Pipe -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -/*! \brief Class interface for cl_sampler. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_sampler as the original. For details, see - * clRetainSampler() and clReleaseSampler(). - * - * \see cl_sampler - */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } - - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_sampler_properties sampler_properties[] = { - CL_SAMPLER_NORMALIZED_COORDS, normalized_coords, - CL_SAMPLER_ADDRESSING_MODE, addressing_mode, - CL_SAMPLER_FILTER_MODE, filter_mode, - 0 }; - object_ = ::clCreateSamplerWithProperties( - context(), - sampler_properties, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - explicit Sampler(const cl_sampler& sampler, bool retainObject = false) : - detail::Wrapper(sampler, retainObject) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -class Program; -class CommandQueue; -class DeviceCommandQueue; -class Kernel; - -//! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_type sizes_[3]; - cl_uint dimensions_; - -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { - sizes_[0] = 0; - sizes_[1] = 0; - sizes_[2] = 0; - } - - //! \brief Constructs one-dimensional range. - NDRange(size_type size0) - : dimensions_(1) - { - sizes_[0] = size0; - sizes_[1] = 1; - sizes_[2] = 1; - } - - //! \brief Constructs two-dimensional range. - NDRange(size_type size0, size_type size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = 1; - } - - //! \brief Constructs three-dimensional range. - NDRange(size_type size0, size_type size1, size_type size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } - - /*! \brief Conversion operator to const size_type *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const size_type*() const { - return sizes_; - } - - //! \brief Queries the number of dimensions in the range. - size_type dimensions() const - { - return dimensions_; - } - - //! \brief Returns the size of the object in bytes based on the - // runtime number of dimensions - size_type size() const - { - return dimensions_*sizeof(size_type); - } - - size_type* get() - { - return sizes_; - } - - const size_type* get() const - { - return sizes_; - } -}; - -//! \brief A zero-dimensional range. -static const NDRange NullRange; - -//! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - size_type size_; -}; - -namespace detail { - -template -struct KernelArgumentHandler; - -// Enable for objects that are not subclasses of memory -// Pointers, constants etc -template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } -}; - -// Enable for subclasses of memory where we want to get a reference to the cl_mem out -// and pass that in for safety -template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(cl_mem); } - static const cl_mem* ptr(const T& value) { return &(value()); } -}; - -// Specialization for DeviceCommandQueue defined later - -template <> -struct KernelArgumentHandler -{ - static size_type size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } -}; - -} -//! \endcond - -/*! Local - * \brief Helper function for generating LocalSpaceArg objects. - */ -inline LocalSpaceArg -Local(size_type size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -/*! \brief Class interface for cl_kernel. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_kernel as the original. For details, see - * clRetainKernel() and clReleaseKernel(). - * - * \see cl_kernel - */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Kernel() { } - - /*! \brief Constructor from cl_kernel - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - explicit Kernel(const cl_kernel& kernel, bool retainObject = false) : - detail::Wrapper(kernel, retainObject) { } - - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) - cl_int getSubGroupInfo(const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type* param) const - { - typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; - static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); - - return detail::errHandler( - pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), - __GET_KERNEL_ARG_INFO_ERR); - } - - template - size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const - { - size_type param; - cl_int result = getSubGroupInfo(dev, name, range, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a shared_ptr type - */ - template - cl_int setArg(cl_uint index, const cl::pointer &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.get()), - __SET_KERNEL_ARGS_ERR); - } - - /*! \brief setArg overload taking a vector type. - */ - template - cl_int setArg(cl_uint index, const cl::vector &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.data()), - __SET_KERNEL_ARGS_ERR); - } - - /*! \brief setArg overload taking a pointer type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr), - __SET_KERNEL_ARGS_ERR); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - /*! \brief setArg overload taking a POD type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } - - cl_int setArg(cl_uint index, size_type size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! - * Specify a vector of SVM pointers that the kernel may access in - * addition to its arguments. - */ - cl_int setSVMPointers(const vector &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } - - /*! - * Specify a std::array of SVM pointers that the kernel may access in - * addition to its arguments. - */ - template - cl_int setSVMPointers(const std::array &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } - - /*! \brief Enable fine-grained system SVM. - * - * \note It is only possible to enable fine-grained system SVM if all devices - * in the context associated with kernel support it. - * - * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. - * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION - * if no devices in the context support fine-grained system SVM. - * - * \see clSetKernelExecInfo - */ - cl_int enableFineGrainedSystemSVM(bool svmEnabled) - { - cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, - sizeof(cl_bool), - &svmEnabled_ - ) - ); - } - - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0, Ts... ts) - { - pointerList[index] = static_cast(t0.get()); - setSVMPointersHelper(ts...); - } - - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0, Ts... ts) - { - pointerList[index] = static_cast(t0); - setSVMPointersHelper(ts...); - } - - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0) - { - pointerList[index] = static_cast(t0.get()); - } - - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0) - { - pointerList[index] = static_cast(t0); - } - - template - cl_int setSVMPointers(const T0 &t0, Ts... ts) - { - std::array pointerList; - - setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*(1 + sizeof...(Ts)), - pointerList.data())); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -}; - -/*! \class Program - * \brief Program interface that implements cl_program. - */ -class Program : public detail::Wrapper -{ -public: -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector> Binaries; - typedef vector Sources; -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector > Binaries; - typedef vector > Sources; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - Program( - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const size_type length = source.size(); - - Context context = Context::getDefault(err); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, -#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", -#else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); - - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const size_type length = source.size(); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - error = ::clBuildProgram( - object_, - 0, - NULL, -#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", -#else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); - - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } - } - - /** - * Create a program from a vector of source strings and the default context. - * Does not compile or link the program. - */ - Program( - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - Context context = Context::getDefault(err); - - const size_type n = (size_type)sources.size(); - - vector lengths(n); - vector strings(n); - - for (size_type i = 0; i < n; ++i) { -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Create a program from a vector of source strings and a provided context. - * Does not compile or link the program. - */ - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - - const size_type n = (size_type)sources.size(); - - vector lengths(n); - vector strings(n); - - for (size_type i = 0; i < n; ++i) { -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const vector& devices, - const Binaries& binaries, - vector* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; - - const size_type numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - - vector lengths(numDevices); - vector images(numDevices); -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = binaries[i].data(); - lengths[i] = binaries[(int)i].size(); - } -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs.data(), - lengths.data(), images.data(), (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - } - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const vector& devices, - const string& kernelNames, - cl_int* err = NULL) - { - cl_int error; - - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs.data(), - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - Program() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit Program(const cl_program& program, bool retainObject = false) : - detail::Wrapper(program, retainObject) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } - - cl_int build( - const vector& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - cl_int buildError = ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs.data(), - options, - notifyFptr, - data); - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int buildError = ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data); - - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int error = ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data); - return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, getBuildInfo()); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * Build info function that returns a vector of device/info pairs for the specified - * info type and for all devices in the program. - * On an error reading the info for any device, an empty vector of info will be returned. - */ - template - vector::param_type>> - getBuildInfo(cl_int *err = NULL) const - { - cl_int result = CL_SUCCESS; - - auto devs = getInfo(&result); - vector::param_type>> - devInfo; - - // If there was an initial error from getInfo return the error - if (result != CL_SUCCESS) { - if (err != NULL) { - *err = result; - } - return devInfo; - } - - for (cl::Device d : devs) { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - result = getBuildInfo(d, name, ¶m); - devInfo.push_back( - std::pair::param_type> - (d, param)); - if (result != CL_SUCCESS) { - // On error, leave the loop and return the error code - break; - } - } - if (err != NULL) { - *err = result; - } - if (result != CL_SUCCESS) { - devInfo.clear(); - } - return devInfo; - } - - cl_int createKernels(vector* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - vector value(numKernels); - - err = ::clCreateKernelsInProgram( - object_, numKernels, value.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - if (kernels) { - kernels->resize(value.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < value.size(); i++) { - // We do not need to retain because this kernel is being created - // by the runtime - (*kernels)[i] = Kernel(value[i], false); - } - } - return CL_SUCCESS; - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program programs[2] = { input1(), input2() }; - - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} - -inline Program linkProgram( - vector inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - vector programs(inputPrograms.size()); - - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } - - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs.data(), - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog, false); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -// Template specialization for CL_PROGRAM_BINARIES -template <> -inline cl_int cl::Program::getInfo(cl_program_info name, vector>* param) const -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Resize the parameter array appropriately for each allocation - // and pass down to the helper - - vector sizes = getInfo(); - size_type numBinaries = sizes.size(); - - // Resize the parameter array and constituent arrays - param->resize(numBinaries); - for (int i = 0; i < numBinaries; ++i) { - (*param)[i].resize(sizes[i]); - } - - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - return CL_SUCCESS; -} - -template<> -inline vector> cl::Program::getInfo(cl_int* err) const -{ - vector> binariesVectors; - - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); - if (err != NULL) { - *err = result; - } - return binariesVectors; -} - -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; - - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } - -} - -enum class QueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, - OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, -}; - -inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); -} - -/*! \class CommandQueue - * \brief CommandQueue interface for cl_command_queue. - */ -class CommandQueue : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static CommandQueue default_; - static cl_int default_error_; - - /*! \brief Create the default command queue returned by @ref getDefault. - * - * It sets default_error_ to indicate success or failure. It does not throw - * @c cl::Error. - */ - static void makeDefault() - { - /* We don't want to throw an error from this function, so we have to - * catch and set the error flag. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - int error; - Context context = Context::getDefault(&error); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - Device device = Device::getDefault(); - default_ = CommandQueue(context, device, 0, &default_error_); - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default command queue. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const CommandQueue &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = CommandQueue(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - static CommandQueue getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); -#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default command queue to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default command queue. - * Should be compared to the passed value to ensure that it was updated. - */ - static CommandQueue setDefault(const CommandQueue &default_queue) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); - detail::errHandler(default_error_); - return default_; - } - - CommandQueue() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified as a vector type. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - * \tparam offset Is the offset in bytes into the buffer at - * which to start filling. This must be a multiple of - * the pattern size. - * \tparam size Is the size in bytes of the region to fill. - * This must be a multiple of the pattern size. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, - src(), - dst(), - src_origin.data(), - region.data(), - dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, - src(), - dst(), - src_offset, - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const array& origin, - const array& region, - size_type * row_pitch, - size_type * slice_pitch, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - origin.data(), - region.data(), - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(ptr), size, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueMapSVM( - cl::pointer &ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(ptr.get()), size, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueMapSVM( - cl::vector &container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(container.data()), container.size(), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr.get()), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(container.data()), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const vector *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const vector *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const vector &memObjects, - cl_mem_migration_flags flags, - const vector* events = NULL, - Event* event = NULL - ) - { - cl_event tmp; - - vector localMemObjects(memObjects.size()); - - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } - - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - localMemObjects.data(), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const size_type*) offset : NULL, - (const size_type*) global, - local.dimensions() != 0 ? (const size_type*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask( - const Kernel& kernel, - const vector* events = NULL, - Event* event = NULL) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const vector* mem_objects = NULL, - const vector* mem_locs = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - size_type elements = 0; - if (mem_objects != NULL) { - elements = mem_objects->size(); - } - vector mems(elements); - for (unsigned int i = 0; i < elements; i++) { - mems[i] = ((*mem_objects)[i])(); - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems.data(), - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const vector& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - - cl_int enqueueAcquireGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined (CL_HPP_USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); - - cl_int enqueueAcquireD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); -#endif -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); -#endif - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } - - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; // CommandQueue - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag CommandQueue::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ CommandQueue CommandQueue::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int CommandQueue::default_error_ = CL_SUCCESS; - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -enum class DeviceQueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, -}; - -inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); -} - -/*! \class DeviceCommandQueue - * \brief DeviceCommandQueue interface for device cl_command_queues. - */ -class DeviceCommandQueue : public detail::Wrapper -{ -public: - - /*! - * Trivial empty constructor to create a null queue. - */ - DeviceCommandQueue() { } - - /*! - * Default construct device command queue on default context and device - */ - DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - cl_uint queueSize, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, - CL_QUEUE_SIZE, queueSize, - 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_command_queue - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - DeviceCommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (const DeviceCommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (DeviceCommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! - * Create a new default device command queue for the default device, - * in the default context and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - cl_int *err = nullptr) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the requested size in bytes. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_uint queueSize, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - CL_QUEUE_SIZE, queueSize, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } -}; // DeviceCommandQueue - -namespace detail -{ - // Specialization for device command queue - template <> - struct KernelArgumentHandler - { - static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } - static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } - }; -} // namespace detail - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; -} - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events, - Event* event) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); -} - -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ -template -inline cl_int enqueueMapSVM( - cl::pointer ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); -} - -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ -template -inline cl_int enqueueMapSVM( - cl::vector container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - container, blocking, flags, events, event); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; -} - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ -template -inline cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - -} - -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ -template -inline cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); -} - -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ -template -inline cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, startIterator, endIterator, buffer); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, buffer, startIterator, endIterator); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } -#if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); -#else - std::copy(startIterator, endIterator, pointer); -#endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Blocking SVM map operation - performs a blocking map underneath. - */ -template -inline cl_int mapSVM(cl::vector &container) -{ - return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); -} - -/** -* Blocking SVM map operation - performs a blocking map underneath. -*/ -template -inline cl_int unmapSVM(cl::vector &container) -{ - return enqueueUnmapSVM(container); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); -} - -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); -} - -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); -} - - -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.flush(); -} - -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - - return queue.finish(); -} - -class EnqueueArgs -{ -private: - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - vector events_; - - template - friend class KernelFunctor; - -public: - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(const vector &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(const vector &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } -}; - - -//---------------------------------------------------------------------------------------------- - - -/** - * Type safe kernel functor. - * - */ -template -class KernelFunctor -{ -private: - Kernel kernel_; - - template - void setArgs(T0&& t0, T1s&&... t1s) - { - kernel_.setArg(index, t0); - setArgs(std::forward(t1s)...); - } - - template - void setArgs(T0&& t0) - { - kernel_.setArg(index, t0); - } - - template - void setArgs() - { - } - - -public: - KernelFunctor(Kernel kernel) : kernel_(kernel) - {} - - KernelFunctor( - const Program& program, - const string name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} - - //! \brief Return type of the functor - typedef Event result_type; - - /** - * Enqueue kernel. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts) - { - Event event; - setArgs<0>(std::forward(ts)...); - - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - - /** - * Enqueue kernel with support for error code. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - * @param error Out parameter returning the error code from the execution. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts, - cl_int &error) - { - Event event; - setArgs<0>(std::forward(ts)...); - - error = args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int setSVMPointers(const vector &pointerList) - { - return kernel_.setSVMPointers(pointerList); - } - - template - cl_int setSVMPointers(const T0 &t0, T1s... ts) - { - return kernel_.setSVMPointers(t0, ts...); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - Kernel getKernel() - { - return kernel_; - } -}; - -namespace compatibility { - /** - * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. - * Please use KernelFunctor directly. - */ - template - struct make_kernel - { - typedef KernelFunctor FunctorType; - - FunctorType functor_; - - make_kernel( - const Program& program, - const string name, - cl_int * err = NULL) : - functor_(FunctorType(program, name, err)) - {} - - make_kernel( - const Kernel kernel) : - functor_(FunctorType(kernel)) - {} - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - Ts...); - - Event operator()( - const EnqueueArgs& enqueueArgs, - Ts... args) - { - return functor_( - enqueueArgs, args...); - } - }; -} // namespace compatibility - - -//---------------------------------------------------------------------------------------------------------------------- - -#undef CL_HPP_ERR_STR_ -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_ARG_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_ERR -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR -#undef __SET_PRINTF_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __UNLOAD_COMPILER_ERR -#undef __CREATE_SUB_DEVICES_ERR - -#undef __CREATE_PIPE_ERR -#undef __GET_PIPE_INFO_ERR - -#endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS - -// Extensions -#undef CL_HPP_INIT_CL_EXT_FCN_PTR_ -#undef CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_ - -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) -#undef CL_HPP_PARAM_NAME_DEVICE_FISSION_ -#endif // CL_HPP_USE_CL_DEVICE_FISSION - -#undef CL_HPP_NOEXCEPT_ -#undef CL_HPP_DEFINE_STATIC_MEMBER_ - -} // namespace cl - -#endif // CL_HPP_ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_dx9_media_sharing.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_dx9_media_sharing.h deleted file mode 100644 index 2729e8b9e89a10..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_dx9_media_sharing.h +++ /dev/null @@ -1,132 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_H -#define __OPENCL_CL_DX9_MEDIA_SHARING_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************/ -/* cl_khr_dx9_media_sharing */ -#define cl_khr_dx9_media_sharing 1 - -typedef cl_uint cl_dx9_media_adapter_type_khr; -typedef cl_uint cl_dx9_media_adapter_set_khr; - -#if defined(_WIN32) -#include -typedef struct _cl_dx9_surface_info_khr -{ - IDirect3DSurface9 *resource; - HANDLE shared_handle; -} cl_dx9_surface_info_khr; -#endif - - -/******************************************************************************/ - -/* Error Codes */ -#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 -#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 -#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 -#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 - -/* cl_media_adapter_type_khr */ -#define CL_ADAPTER_D3D9_KHR 0x2020 -#define CL_ADAPTER_D3D9EX_KHR 0x2021 -#define CL_ADAPTER_DXVA_KHR 0x2022 - -/* cl_media_adapter_set_khr */ -#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 -#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 - -/* cl_context_info */ -#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 -#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 -#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 - -/* cl_mem_info */ -#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 -#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 - -/* cl_image_info */ -#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B -#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapter_type, - void * media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_ext.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_ext.h deleted file mode 100644 index 5c185915c3e1fe..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_ext.h +++ /dev/null @@ -1,762 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2019 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* cl_ext.h contains OpenCL extensions which don't have external */ -/* (OpenGL, D3D) dependencies. */ - -#ifndef __CL_EXT_H -#define __CL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* cl_khr_fp64 extension - no extension #define since it has no functions */ -/* CL_DEVICE_DOUBLE_FP_CONFIG is defined in CL.h for OpenCL >= 120 */ - -#if CL_TARGET_OPENCL_VERSION <= 110 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 -#endif - -/* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 - -/* Memory object destruction - * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR - * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. - * - * The application may not call CL api's with the cl_mem object passed to the pfn_notify. - * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - */ -#define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem memobj, - void (* pfn_notify)(cl_mem memobj, void * user_data), - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; - - -/* Context Logging Functions - * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - * - * clLogMessagesToSystemLog forwards on all log messages to the Apple System Logger - */ -#define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * errstr, - const void * private_info, - size_t cb, - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * errstr, - const void * private_info, - size_t cb, - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * errstr, - const void * private_info, - size_t cb, - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; - - -/************************ -* cl_khr_icd extension * -************************/ -#define cl_khr_icd 1 - -/* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 - -/* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 - -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms); - -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms); - - -/******************************* - * cl_khr_il_program extension * - *******************************/ -#define cl_khr_il_program 1 - -/* New property to clGetDeviceInfo for retrieving supported intermediate - * languages - */ -#define CL_DEVICE_IL_VERSION_KHR 0x105B - -/* New property to clGetProgramInfo for retrieving for retrieving the IL of a - * program - */ -#define CL_PROGRAM_IL_KHR 0x1169 - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithILKHR(cl_context context, - const void * il, - size_t length, - cl_int * errcode_ret); - -typedef CL_API_ENTRY cl_program -(CL_API_CALL *clCreateProgramWithILKHR_fn)(cl_context context, - const void * il, - size_t length, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; - -/* Extension: cl_khr_image2d_from_buffer - * - * This extension allows a 2D image to be created from a cl_mem buffer without - * a copy. The type associated with a 2D image created from a buffer in an - * OpenCL program is image2d_t. Both the sampler and sampler-less read_image - * built-in functions are supported for 2D images and 2D images created from - * a buffer. Similarly, the write_image built-ins are also supported for 2D - * images created from a buffer. - * - * When the 2D image from buffer is created, the client must specify the - * width, height, image format (i.e. channel order and channel data type) - * and optionally the row pitch. - * - * The pitch specified must be a multiple of - * CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR pixels. - * The base address of the buffer must be aligned to - * CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR pixels. - */ - -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B - - -/************************************** - * cl_khr_initialize_memory extension * - **************************************/ - -#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 - - -/************************************** - * cl_khr_terminate_context extension * - **************************************/ - -#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 -#define CL_CONTEXT_TERMINATE_KHR 0x2032 - -#define cl_khr_terminate_context 1 -extern CL_API_ENTRY cl_int CL_API_CALL -clTerminateContextKHR(cl_context context) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clTerminateContextKHR_fn)(cl_context context) CL_EXT_SUFFIX__VERSION_1_2; - - -/* - * Extension: cl_khr_spir - * - * This extension adds support to create an OpenCL program object from a - * Standard Portable Intermediate Representation (SPIR) instance - */ - -#define CL_DEVICE_SPIR_VERSIONS 0x40E0 -#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 - - -/***************************************** - * cl_khr_create_command_queue extension * - *****************************************/ -#define cl_khr_create_command_queue 1 - -typedef cl_bitfield cl_queue_properties_khr; - -extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithPropertiesKHR(cl_context context, - cl_device_id device, - const cl_queue_properties_khr* properties, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_command_queue -(CL_API_CALL *clCreateCommandQueueWithPropertiesKHR_fn)(cl_context context, - cl_device_id device, - const cl_queue_properties_khr* properties, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; - - -/****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ - -/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 - - -/********************************* -* cl_amd_device_attribute_query * -*********************************/ - -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 - - -/********************************* -* cl_arm_printf extension -*********************************/ - -#define CL_PRINTF_CALLBACK_ARM 0x40B0 -#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 - - -/*********************************** -* cl_ext_device_fission extension -***********************************/ -#define cl_ext_device_fission 1 - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; - -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clReleaseDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; - -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clRetainDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; - -typedef cl_ulong cl_device_partition_property_ext; -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevicesEXT(cl_device_id in_device, - const cl_device_partition_property_ext * properties, - cl_uint num_entries, - cl_device_id * out_devices, - cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1; - -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clCreateSubDevicesEXT_fn)(cl_device_id in_device, - const cl_device_partition_property_ext * properties, - cl_uint num_entries, - cl_device_id * out_devices, - cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1; - -/* cl_device_partition_property_ext */ -#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 -#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 -#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 - -/* clDeviceGetInfo selectors */ -#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 -#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 -#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 -#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 -#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 - -/* error codes */ -#define CL_DEVICE_PARTITION_FAILED_EXT -1057 -#define CL_INVALID_PARTITION_COUNT_EXT -1058 -#define CL_INVALID_PARTITION_NAME_EXT -1059 - -/* CL_AFFINITY_DOMAINs */ -#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 -#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 -#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 -#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 -#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 -#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 - -/* cl_device_partition_property_ext list terminators */ -#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) -#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) -#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) - - -/*********************************** - * cl_ext_migrate_memobject extension definitions - ***********************************/ -#define cl_ext_migrate_memobject 1 - -typedef cl_bitfield cl_mem_migration_flags_ext; - -#define CL_MIGRATE_MEM_OBJECT_HOST_EXT 0x1 - -#define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040 - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjectEXT(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem * mem_objects, - cl_mem_migration_flags_ext flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); - -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clEnqueueMigrateMemObjectEXT_fn)(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem * mem_objects, - cl_mem_migration_flags_ext flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); - - -/********************************* -* cl_qcom_ext_host_ptr extension -*********************************/ -#define cl_qcom_ext_host_ptr 1 - -#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) - -#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 -#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 -#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 -#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 -#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 -#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 -#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 -#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 - -typedef cl_uint cl_image_pitch_info_qcom; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceImageInfoQCOM(cl_device_id device, - size_t image_width, - size_t image_height, - const cl_image_format *image_format, - cl_image_pitch_info_qcom param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret); - -typedef struct _cl_mem_ext_host_ptr -{ - /* Type of external memory allocation. */ - /* Legal values will be defined in layered extensions. */ - cl_uint allocation_type; - - /* Host cache policy for this external memory allocation. */ - cl_uint host_cache_policy; - -} cl_mem_ext_host_ptr; - - -/******************************************* -* cl_qcom_ext_host_ptr_iocoherent extension -********************************************/ - -/* Cache policy specifying io-coherence */ -#define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9 - - -/********************************* -* cl_qcom_ion_host_ptr extension -*********************************/ - -#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 - -typedef struct _cl_mem_ion_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ - cl_mem_ext_host_ptr ext_host_ptr; - - /* ION file descriptor */ - int ion_filedesc; - - /* Host pointer to the ION allocated memory */ - void* ion_hostptr; - -} cl_mem_ion_host_ptr; - - -/********************************* -* cl_qcom_android_native_buffer_host_ptr extension -*********************************/ - -#define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM 0x40C6 - -typedef struct _cl_mem_android_native_buffer_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */ - cl_mem_ext_host_ptr ext_host_ptr; - - /* Virtual pointer to the android native buffer */ - void* anb_ptr; - -} cl_mem_android_native_buffer_host_ptr; - - -/****************************************** - * cl_img_yuv_image extension * - ******************************************/ - -/* Image formats used in clCreateImage */ -#define CL_NV21_IMG 0x40D0 -#define CL_YV12_IMG 0x40D1 - - -/****************************************** - * cl_img_cached_allocations extension * - ******************************************/ - -/* Flag values used by clCreateBuffer */ -#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) -#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) - - -/****************************************** - * cl_img_use_gralloc_ptr extension * - ******************************************/ -#define cl_img_use_gralloc_ptr 1 - -/* Flag values used by clCreateBuffer */ -#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) - -/* To be used by clGetEventInfo: */ -#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 -#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 - -/* Error code from clEnqueueReleaseGrallocObjectsIMG */ -#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGrallocObjectsIMG(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGrallocObjectsIMG(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - - -/********************************* -* cl_khr_subgroups extension -*********************************/ -#define cl_khr_subgroups 1 - -#if !defined(CL_VERSION_2_1) -/* For OpenCL 2.1 and newer, cl_kernel_sub_group_info is declared in CL.h. - In hindsight, there should have been a khr suffix on this type for - the extension, but keeping it un-suffixed to maintain backwards - compatibility. */ -typedef cl_uint cl_kernel_sub_group_info; -#endif - -/* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR(cl_kernel in_kernel, - cl_device_id in_device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; - -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel in_kernel, - cl_device_id in_device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; - - -/********************************* -* cl_khr_mipmap_image extension -*********************************/ - -/* cl_sampler_properties */ -#define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155 -#define CL_SAMPLER_LOD_MIN_KHR 0x1156 -#define CL_SAMPLER_LOD_MAX_KHR 0x1157 - - -/********************************* -* cl_khr_priority_hints extension -*********************************/ -/* This extension define is for backwards compatibility. - It shouldn't be required since this extension has no new functions. */ -#define cl_khr_priority_hints 1 - -typedef cl_uint cl_queue_priority_khr; - -/* cl_command_queue_properties */ -#define CL_QUEUE_PRIORITY_KHR 0x1096 - -/* cl_queue_priority_khr */ -#define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0) -#define CL_QUEUE_PRIORITY_MED_KHR (1<<1) -#define CL_QUEUE_PRIORITY_LOW_KHR (1<<2) - - -/********************************* -* cl_khr_throttle_hints extension -*********************************/ -/* This extension define is for backwards compatibility. - It shouldn't be required since this extension has no new functions. */ -#define cl_khr_throttle_hints 1 - -typedef cl_uint cl_queue_throttle_khr; - -/* cl_command_queue_properties */ -#define CL_QUEUE_THROTTLE_KHR 0x1097 - -/* cl_queue_throttle_khr */ -#define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0) -#define CL_QUEUE_THROTTLE_MED_KHR (1<<1) -#define CL_QUEUE_THROTTLE_LOW_KHR (1<<2) - - -/********************************* -* cl_khr_subgroup_named_barrier -*********************************/ -/* This extension define is for backwards compatibility. - It shouldn't be required since this extension has no new functions. */ -#define cl_khr_subgroup_named_barrier 1 - -/* cl_device_info */ -#define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035 - - -/********************************** - * cl_arm_import_memory extension * - **********************************/ -#define cl_arm_import_memory 1 - -typedef intptr_t cl_import_properties_arm; - -/* Default and valid proporties name for cl_arm_import_memory */ -#define CL_IMPORT_TYPE_ARM 0x40B2 - -/* Host process memory type default value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 - -/* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 - -/* Protected DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5 - -/* This extension adds a new function that allows for direct memory import into - * OpenCL via the clImportMemoryARM function. - * - * Memory imported through this interface will be mapped into the device's page - * tables directly, providing zero copy access. It will never fall back to copy - * operations and aliased buffers. - * - * Types of memory supported for import are specified as additional extension - * strings. - * - * This extension produces cl_mem allocations which are compatible with all other - * users of cl_mem in the standard API. - * - * This extension maps pages with the same properties as the normal buffer creation - * function clCreateBuffer. - */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clImportMemoryARM( cl_context context, - cl_mem_flags flags, - const cl_import_properties_arm *properties, - void *memory, - size_t size, - cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; - - -/****************************************** - * cl_arm_shared_virtual_memory extension * - ******************************************/ -#define cl_arm_shared_virtual_memory 1 - -/* Used by clGetDeviceInfo */ -#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 - -/* Used by clGetMemObjectInfo */ -#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 - -/* Used by clSetKernelExecInfoARM: */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 - -/* To be used by clGetEventInfo: */ -#define CL_COMMAND_SVM_FREE_ARM 0x40BA -#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB -#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC -#define CL_COMMAND_SVM_MAP_ARM 0x40BD -#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE - -/* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) - -/* Flag values used by clSVMAllocARM: */ -#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) -#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) - -typedef cl_bitfield cl_svm_mem_flags_arm; -typedef cl_uint cl_kernel_exec_info_arm; -typedef cl_bitfield cl_device_svm_capabilities_arm; - -extern CL_API_ENTRY void * CL_API_CALL -clSVMAllocARM(cl_context context, - cl_svm_mem_flags_arm flags, - size_t size, - cl_uint alignment) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY void CL_API_CALL -clSVMFreeARM(cl_context context, - void * svm_pointer) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFreeARM(cl_command_queue command_queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void * user_data), - void * user_data, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpyARM(cl_command_queue command_queue, - cl_bool blocking_copy, - void * dst_ptr, - const void * src_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFillARM(cl_command_queue command_queue, - void * svm_ptr, - const void * pattern, - size_t pattern_size, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMapARM(cl_command_queue command_queue, - cl_bool blocking_map, - cl_map_flags flags, - void * svm_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmapARM(cl_command_queue command_queue, - void * svm_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointerARM(cl_kernel kernel, - cl_uint arg_index, - const void * arg_value) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfoARM(cl_kernel kernel, - cl_kernel_exec_info_arm param_name, - size_t param_value_size, - const void * param_value) CL_EXT_SUFFIX__VERSION_1_2; - -/******************************** - * cl_arm_get_core_id extension * - ********************************/ - -#ifdef CL_VERSION_1_2 - -#define cl_arm_get_core_id 1 - -/* Device info property for bitfield of cores present */ -#define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF - -#endif /* CL_VERSION_1_2 */ - -/********************************* -* cl_arm_job_slot_selection -*********************************/ - -#define cl_arm_job_slot_selection 1 - -/* cl_device_info */ -#define CL_DEVICE_JOB_SLOTS_ARM 0x41E0 - -/* cl_command_queue_properties */ -#define CL_QUEUE_JOB_SLOT_ARM 0x41E1 - -#ifdef __cplusplus -} -#endif - - -#endif /* __CL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_ext_intel.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_ext_intel.h deleted file mode 100644 index 9d1e4b58773a48..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_ext_intel.h +++ /dev/null @@ -1,423 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2019 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ -/*****************************************************************************\ - -Copyright (c) 2013-2019 Intel Corporation All Rights Reserved. - -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -File Name: cl_ext_intel.h - -Abstract: - -Notes: - -\*****************************************************************************/ - -#ifndef __CL_EXT_INTEL_H -#define __CL_EXT_INTEL_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************** -* cl_intel_thread_local_exec extension * -****************************************/ - -#define cl_intel_thread_local_exec 1 - -#define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (((cl_bitfield)1) << 31) - -/*********************************************** -* cl_intel_device_partition_by_names extension * -************************************************/ - -#define cl_intel_device_partition_by_names 1 - -#define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 -#define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1 - -/************************************************ -* cl_intel_accelerator extension * -* cl_intel_motion_estimation extension * -* cl_intel_advanced_motion_estimation extension * -*************************************************/ - -#define cl_intel_accelerator 1 -#define cl_intel_motion_estimation 1 -#define cl_intel_advanced_motion_estimation 1 - -typedef struct _cl_accelerator_intel* cl_accelerator_intel; -typedef cl_uint cl_accelerator_type_intel; -typedef cl_uint cl_accelerator_info_intel; - -typedef struct _cl_motion_estimation_desc_intel { - cl_uint mb_block_type; - cl_uint subpixel_mode; - cl_uint sad_adjust_mode; - cl_uint search_path_type; -} cl_motion_estimation_desc_intel; - -/* error codes */ -#define CL_INVALID_ACCELERATOR_INTEL -1094 -#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095 -#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096 -#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 - -/* cl_accelerator_type_intel */ -#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0 - -/* cl_accelerator_info_intel */ -#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090 -#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091 -#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092 -#define CL_ACCELERATOR_TYPE_INTEL 0x4093 - -/* cl_motion_detect_desc_intel flags */ -#define CL_ME_MB_TYPE_16x16_INTEL 0x0 -#define CL_ME_MB_TYPE_8x8_INTEL 0x1 -#define CL_ME_MB_TYPE_4x4_INTEL 0x2 - -#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 -#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 -#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2 - -#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 -#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1 - -#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0 -#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1 -#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5 - -#define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0 -#define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL 0x1 -#define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2 -#define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4 - -#define CL_ME_FORWARD_INPUT_MODE_INTEL 0x1 -#define CL_ME_BACKWARD_INPUT_MODE_INTEL 0x2 -#define CL_ME_BIDIRECTION_INPUT_MODE_INTEL 0x3 - -#define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL 16 -#define CL_ME_BIDIR_WEIGHT_THIRD_INTEL 21 -#define CL_ME_BIDIR_WEIGHT_HALF_INTEL 32 -#define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 43 -#define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 48 - -#define CL_ME_COST_PENALTY_NONE_INTEL 0x0 -#define CL_ME_COST_PENALTY_LOW_INTEL 0x1 -#define CL_ME_COST_PENALTY_NORMAL_INTEL 0x2 -#define CL_ME_COST_PENALTY_HIGH_INTEL 0x3 - -#define CL_ME_COST_PRECISION_QPEL_INTEL 0x0 -#define CL_ME_COST_PRECISION_HPEL_INTEL 0x1 -#define CL_ME_COST_PRECISION_PEL_INTEL 0x2 -#define CL_ME_COST_PRECISION_DPEL_INTEL 0x3 - -#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 -#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 -#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 - -#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 -#define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 -#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 -#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 -#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 -#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 - -#define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 -#define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 -#define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 - -/* cl_device_info */ -#define CL_DEVICE_ME_VERSION_INTEL 0x407E - -#define CL_ME_VERSION_LEGACY_INTEL 0x0 -#define CL_ME_VERSION_ADVANCED_VER_1_INTEL 0x1 -#define CL_ME_VERSION_ADVANCED_VER_2_INTEL 0x2 - -extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL -clCreateAcceleratorINTEL( - cl_context context, - cl_accelerator_type_intel accelerator_type, - size_t descriptor_size, - const void* descriptor, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_accelerator_intel (CL_API_CALL *clCreateAcceleratorINTEL_fn)( - cl_context context, - cl_accelerator_type_intel accelerator_type, - size_t descriptor_size, - const void* descriptor, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetAcceleratorInfoINTEL( - cl_accelerator_intel accelerator, - cl_accelerator_info_intel param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)( - cl_accelerator_intel accelerator, - cl_accelerator_info_intel param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainAcceleratorINTEL( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clRetainAcceleratorINTEL_fn)( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseAcceleratorINTEL( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clReleaseAcceleratorINTEL_fn)( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; - -/****************************************** -* cl_intel_simultaneous_sharing extension * -*******************************************/ - -#define cl_intel_simultaneous_sharing 1 - -#define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104 -#define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105 - -/*********************************** -* cl_intel_egl_image_yuv extension * -************************************/ - -#define cl_intel_egl_image_yuv 1 - -#define CL_EGL_YUV_PLANE_INTEL 0x4107 - -/******************************** -* cl_intel_packed_yuv extension * -*********************************/ - -#define cl_intel_packed_yuv 1 - -#define CL_YUYV_INTEL 0x4076 -#define CL_UYVY_INTEL 0x4077 -#define CL_YVYU_INTEL 0x4078 -#define CL_VYUY_INTEL 0x4079 - -/******************************************** -* cl_intel_required_subgroup_size extension * -*********************************************/ - -#define cl_intel_required_subgroup_size 1 - -#define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108 -#define CL_KERNEL_SPILL_MEM_SIZE_INTEL 0x4109 -#define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL 0x410A - -/**************************************** -* cl_intel_driver_diagnostics extension * -*****************************************/ - -#define cl_intel_driver_diagnostics 1 - -typedef cl_uint cl_diagnostics_verbose_level; - -#define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106 - -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL ( 0xff ) -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL ( 1 ) -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL ( 1 << 1 ) -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL ( 1 << 2 ) - -/******************************** -* cl_intel_planar_yuv extension * -*********************************/ - -#define CL_NV12_INTEL 0x410E - -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) - -#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E -#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F - -/******************************************************* -* cl_intel_device_side_avc_motion_estimation extension * -********************************************************/ - -#define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B -#define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C -#define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D - -#define CL_AVC_ME_VERSION_0_INTEL 0x0; // No support. -#define CL_AVC_ME_VERSION_1_INTEL 0x1; // First supported version. - -#define CL_AVC_ME_MAJOR_16x16_INTEL 0x0 -#define CL_AVC_ME_MAJOR_16x8_INTEL 0x1 -#define CL_AVC_ME_MAJOR_8x16_INTEL 0x2 -#define CL_AVC_ME_MAJOR_8x8_INTEL 0x3 - -#define CL_AVC_ME_MINOR_8x8_INTEL 0x0 -#define CL_AVC_ME_MINOR_8x4_INTEL 0x1 -#define CL_AVC_ME_MINOR_4x8_INTEL 0x2 -#define CL_AVC_ME_MINOR_4x4_INTEL 0x3 - -#define CL_AVC_ME_MAJOR_FORWARD_INTEL 0x0 -#define CL_AVC_ME_MAJOR_BACKWARD_INTEL 0x1 -#define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL 0x2 - -#define CL_AVC_ME_PARTITION_MASK_ALL_INTEL 0x0 -#define CL_AVC_ME_PARTITION_MASK_16x16_INTEL 0x7E -#define CL_AVC_ME_PARTITION_MASK_16x8_INTEL 0x7D -#define CL_AVC_ME_PARTITION_MASK_8x16_INTEL 0x7B -#define CL_AVC_ME_PARTITION_MASK_8x8_INTEL 0x77 -#define CL_AVC_ME_PARTITION_MASK_8x4_INTEL 0x6F -#define CL_AVC_ME_PARTITION_MASK_4x8_INTEL 0x5F -#define CL_AVC_ME_PARTITION_MASK_4x4_INTEL 0x3F - -#define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL 0x0 -#define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL 0x1 -#define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL 0x2 -#define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL 0x3 -#define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL 0x4 -#define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL 0x5 -#define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL 0x6 -#define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL 0x7 -#define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL 0x8 -#define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL 0x9 -#define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL 0x2 -#define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL 0xa - -#define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 -#define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x2 - -#define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 -#define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 -#define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL 0x3 - -#define CL_AVC_ME_COST_PRECISION_QPEL_INTEL 0x0 -#define CL_AVC_ME_COST_PRECISION_HPEL_INTEL 0x1 -#define CL_AVC_ME_COST_PRECISION_PEL_INTEL 0x2 -#define CL_AVC_ME_COST_PRECISION_DPEL_INTEL 0x3 - -#define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL 0x10 -#define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL 0x15 -#define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL 0x20 -#define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 0x2B -#define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 0x30 - -#define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL 0x0 -#define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL 0x2 -#define CL_AVC_ME_BORDER_REACHED_TOP_INTEL 0x4 -#define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL 0x8 - -#define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL 0x0 -#define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL 0x4000 - -#define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL ( 0x3 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL ( 0x55 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL ( 0xAA << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL ( 0xFF << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL ( 0x1 << 26 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL ( 0x2 << 26 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL ( 0x1 << 28 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL ( 0x2 << 28 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL ( 0x1 << 30 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL ( 0x2 << 30 ) - -#define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL 0x00 -#define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL 0x80 - -#define CL_AVC_ME_INTRA_16x16_INTEL 0x0 -#define CL_AVC_ME_INTRA_8x8_INTEL 0x1 -#define CL_AVC_ME_INTRA_4x4_INTEL 0x2 - -#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL 0x6 -#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL 0x5 -#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL 0x3 - -#define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL 0x60 -#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL 0x10 -#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8 -#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4 - -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 - -#define CL_AVC_ME_FRAME_FORWARD_INTEL 0x1 -#define CL_AVC_ME_FRAME_BACKWARD_INTEL 0x2 -#define CL_AVC_ME_FRAME_DUAL_INTEL 0x3 - -#define CL_AVC_ME_SLICE_TYPE_PRED_INTEL 0x0 -#define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL 0x1 -#define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL 0x2 - -#define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0 -#define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1 - -#ifdef __cplusplus -} -#endif - -#endif /* __CL_EXT_INTEL_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_gl_ext.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_gl_ext.h deleted file mode 100644 index c26d31abed0ae1..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_gl_ext.h +++ /dev/null @@ -1,52 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2019 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -#ifndef __OPENCL_CL_GL_EXT_H -#define __OPENCL_CL_GL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * cl_khr_gl_event extension - */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context context, - cl_GLsync cl_GLsync, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_intel_planar_yuv.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_intel_planar_yuv.h deleted file mode 100644 index b470b074e260c3..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_intel_planar_yuv.h +++ /dev/null @@ -1,50 +0,0 @@ -/*****************************************************************************\ - -Copyright 2016 Intel Corporation All Rights Reserved. - -The source code contained or described herein and all documents related to -the source code ("Material") are owned by Intel Corporation or its suppliers -or licensors. Title to the Material remains with Intel Corporation or its -suppliers and licensors. The Material contains trade secrets and proprietary -and confidential information of Intel or its suppliers and licensors. The -Material is protected by worldwide copyright and trade secret laws and -treaty provisions. No part of the Material may be used, copied, reproduced, -modified, published, uploaded, posted, transmitted, distributed, or -disclosed in any way without Intel's prior express written permission. - -No license under any patent, copyright, trade secret or other intellectual -property right is granted to or conferred upon you by disclosure or delivery -of the Materials, either expressly, by implication, inducement, estoppel or -otherwise. Any license under such intellectual property rights must be -express and approved by Intel in writing. - -File Name: cl_intel_planar_yuv.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __CL_EXT_INTEL_PLANAR_YUV_H -#define __CL_EXT_INTEL_PLANAR_YUV_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/*************************************** -* cl_intel_planar_yuv extension * -****************************************/ -#define CL_NV12_INTEL 0x410E - -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) - -#ifdef __cplusplus -} -#endif - - -#endif /* __CL_EXT_INTEL_PLANAR_YUV_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_intel_planar_yuv.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_intel_planar_yuv.hpp deleted file mode 100644 index 63c55b9f2f429a..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_intel_planar_yuv.hpp +++ /dev/null @@ -1,315 +0,0 @@ -/*****************************************************************************\ - -Copyright 2016 Intel Corporation All Rights Reserved. - -The source code contained or described herein and all documents related to -the source code ("Material") are owned by Intel Corporation or its suppliers -or licensors. Title to the Material remains with Intel Corporation or its -suppliers and licensors. The Material contains trade secrets and proprietary -and confidential information of Intel or its suppliers and licensors. The -Material is protected by worldwide copyright and trade secret laws and -treaty provisions. No part of the Material may be used, copied, reproduced, -modified, published, uploaded, posted, transmitted, distributed, or -disclosed in any way without Intel's prior express written permission. - -No license under any patent, copyright, trade secret or other intellectual -property right is granted to or conferred upon you by disclosure or delivery -of the Materials, either expressly, by implication, inducement, estoppel or -otherwise. Any license under such intellectual property rights must be -express and approved by Intel in writing. - -File Name: cl_intel_planar_yuv.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __CL_EXT_INTEL_PLANAR_YUV_HPP_ -#define __CL_EXT_INTEL_PLANAR_YUV_HPP_ - -/*************************************** -* cl_intel_nv12 extension * -****************************************/ -#define CL_NV12_INTEL 0x410E - -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) - -#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E -#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F - -#ifdef __cplusplus - -#include - -#ifndef __ERR_STR -#if defined(__CL_ENABLE_EXCEPTIONS) -#define __ERR_STR(x) #x -#else -#define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS -#endif - -// To avoid accidentally taking ownership of core OpenCL types -// such as cl_kernel constructors are made explicit -// under OpenCL 1.2 -#ifndef __CL_EXPLICIT_CONSTRUCTORS -#if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#endif - -namespace cl { - -class Image2DYPlane : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2DYPlane( - const Context& context, - cl_mem_flags flags, - cl_mem parent_nv12_mem_object, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - cl::ImageFormat format(CL_R, CL_UNORM_INT8); - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - 0, // width (unused) - 0, // height (unused) - 0, // depth set to y-plane index - 0, // array size (unused) - 0, // row_pitch (unused) - 0, 0, 0, - parent_nv12_mem_object - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, parent_nv12_mem_object, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2DYPlane() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - - __CL_EXPLICIT_CONSTRUCTORS Image2DYPlane(const cl_mem& image2DYPlane) : Image(image2DYPlane) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DYPlane& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane(const Image2DYPlane& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane& operator = (const Image2DYPlane &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane(Image2DYPlane&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane& operator = (Image2DYPlane &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -class Image2DUVPlane : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2DUVPlane( - const Context& context, - cl_mem_flags flags, - cl_mem parent_nv12_mem_object, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - cl::ImageFormat format(CL_RG, CL_UNORM_INT8); - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - 0, // width (unused) - 0, // height (unused) - 1, // depth set to uv-plane index - 0, // array size (unused) - 0, // row_pitch (unused) - 0, 0, 0, - parent_nv12_mem_object - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, parent_nv12_mem_object, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2DUVPlane() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DUVPlane(const cl_mem& image2DUVPlane) : Image(image2DUVPlane) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DUVPlane& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane(const Image2DUVPlane& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane& operator = (const Image2DUVPlane &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane(Image2DUVPlane&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane& operator = (Image2DUVPlane &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -}; - -#endif - - -#endif /* __CL_EXT_INTEL_PLANAR_YUV_HPP_ */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_va_api_media_sharing_intel.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_va_api_media_sharing_intel.h deleted file mode 100644 index b2e63a3ea4df39..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/cl_va_api_media_sharing_intel.h +++ /dev/null @@ -1,176 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2019 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ -/*****************************************************************************\ - -Copyright (c) 2013-2019 Intel Corporation All Rights Reserved. - -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -File Name: cl_va_api_media_sharing_intel.h - -Abstract: - -Notes: - -\*****************************************************************************/ - - -#ifndef __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H -#define __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H - -#include -#include - -/* since we need just VASurfaceID from this file, */ -/* had to comment this inlcude out to avoid VA dependency */ -/* #include */ -typedef cl_uint VASurfaceID; - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************** -* cl_intel_va_api_media_sharing extension * -*******************************************/ - -#define cl_intel_va_api_media_sharing 1 - -/* error codes */ -#define CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL -1098 -#define CL_INVALID_VA_API_MEDIA_SURFACE_INTEL -1099 -#define CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL -1100 -#define CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL -1101 - -/* cl_va_api_device_source_intel */ -#define CL_VA_API_DISPLAY_INTEL 0x4094 - -/* cl_va_api_device_set_intel */ -#define CL_PREFERRED_DEVICES_FOR_VA_API_INTEL 0x4095 -#define CL_ALL_DEVICES_FOR_VA_API_INTEL 0x4096 - -/* cl_context_info */ -#define CL_CONTEXT_VA_API_DISPLAY_INTEL 0x4097 - -/* cl_mem_info */ -#define CL_MEM_VA_API_MEDIA_SURFACE_INTEL 0x4098 - -/* cl_image_info */ -#define CL_IMAGE_VA_API_PLANE_INTEL 0x4099 - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL 0x409A -#define CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL 0x409B - -typedef cl_uint cl_va_api_device_source_intel; -typedef cl_uint cl_va_api_device_set_intel; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDsFromVA_APIMediaAdapterINTEL( - cl_platform_id platform, - cl_va_api_device_source_intel media_adapter_type, - void* media_adapter, - cl_va_api_device_set_intel media_adapter_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL * clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn)( - cl_platform_id platform, - cl_va_api_device_source_intel media_adapter_type, - void* media_adapter, - cl_va_api_device_set_intel media_adapter_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromVA_APIMediaSurfaceINTEL( - cl_context context, - cl_mem_flags flags, - VASurfaceID* surface, - cl_uint plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL * clCreateFromVA_APIMediaSurfaceINTEL_fn)( - cl_context context, - cl_mem_flags flags, - VASurfaceID* surface, - cl_uint plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireVA_APIMediaSurfacesINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireVA_APIMediaSurfacesINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseVA_APIMediaSurfacesINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseVA_APIMediaSurfacesINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/opencl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/opencl.h deleted file mode 100644 index 143d1d2dc6767a..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/android/include/CL/opencl.h +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_H -#define __OPENCL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so deleted file mode 100644 index cba3ef2d15eb6a..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.1 b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.1 deleted file mode 100644 index cba3ef2d15eb6a..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.1 and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.2.0 b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.2.0 deleted file mode 100644 index cba3ef2d15eb6a..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.2.0 and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.2.0.debug b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.2.0.debug deleted file mode 100644 index 2694bef7e77fc2..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Debug/bin/x64/libOpenCL.so.2.0.debug and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so deleted file mode 100644 index e48f4963f70583..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.1 b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.1 deleted file mode 100644 index e48f4963f70583..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.1 and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.2.0 b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.2.0 deleted file mode 100644 index e48f4963f70583..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.2.0 and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.2.0.debug b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.2.0.debug deleted file mode 100644 index 556289028e6427..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release/bin/x64/libOpenCL.so.2.0.debug and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl.h deleted file mode 100644 index 28226442b771ba..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl.h +++ /dev/null @@ -1,1453 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -#ifndef __OPENCL_CL_H -#define __OPENCL_CL_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************/ - -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; - -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; -typedef cl_bitfield cl_device_svm_capabilities; -typedef cl_bitfield cl_command_queue_properties; -typedef intptr_t cl_device_partition_property; -typedef cl_bitfield cl_device_affinity_domain; - -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; -typedef cl_bitfield cl_queue_properties; -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; -typedef cl_bitfield cl_svm_mem_flags; -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; -typedef cl_bitfield cl_mem_migration_flags; -typedef cl_uint cl_image_info; -typedef cl_uint cl_buffer_create_type; -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; -typedef intptr_t cl_pipe_properties; -typedef cl_uint cl_pipe_info; -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; -typedef cl_uint cl_program_binary_type; -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; -typedef cl_uint cl_kernel_arg_info; -typedef cl_uint cl_kernel_arg_address_qualifier; -typedef cl_uint cl_kernel_arg_access_qualifier; -typedef cl_bitfield cl_kernel_arg_type_qualifier; -typedef cl_uint cl_kernel_work_group_info; -typedef cl_uint cl_kernel_sub_group_info; -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; -typedef cl_bitfield cl_sampler_properties; -typedef cl_uint cl_kernel_exec_info; - -typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; -} cl_image_format; - -typedef struct _cl_image_desc { - cl_mem_object_type image_type; - size_t image_width; - size_t image_height; - size_t image_depth; - size_t image_array_size; - size_t image_row_pitch; - size_t image_slice_pitch; - cl_uint num_mip_levels; - cl_uint num_samples; -#ifdef __GNUC__ - __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ -#endif - union { - cl_mem buffer; - cl_mem mem_object; - }; -} cl_image_desc; - -typedef struct _cl_buffer_region { - size_t origin; - size_t size; -} cl_buffer_region; - - -/******************************************************************************/ - -/* Error Codes */ -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 -#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 -#define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 -#define CL_COMPILE_PROGRAM_FAILURE -15 -#define CL_LINKER_NOT_AVAILABLE -16 -#define CL_LINK_PROGRAM_FAILURE -17 -#define CL_DEVICE_PARTITION_FAILED -18 -#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 - -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 -#define CL_INVALID_GLOBAL_WORK_SIZE -63 -#define CL_INVALID_PROPERTY -64 -#define CL_INVALID_IMAGE_DESCRIPTOR -65 -#define CL_INVALID_COMPILER_OPTIONS -66 -#define CL_INVALID_LINKER_OPTIONS -67 -#define CL_INVALID_DEVICE_PARTITION_COUNT -68 -#define CL_INVALID_PIPE_SIZE -69 -#define CL_INVALID_DEVICE_QUEUE -70 - -/* OpenCL Version */ -#define CL_VERSION_1_0 1 -#define CL_VERSION_1_1 1 -#define CL_VERSION_1_2 1 -#define CL_VERSION_2_0 1 -#define CL_VERSION_2_1 1 - -/* cl_bool */ -#define CL_FALSE 0 -#define CL_TRUE 1 -#define CL_BLOCKING CL_TRUE -#define CL_NON_BLOCKING CL_FALSE - -/* cl_platform_info */ -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 -#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 - -/* cl_device_type - bitfield */ -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) -#define CL_DEVICE_TYPE_CUSTOM (1 << 4) -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF - -/* cl_device_info */ -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ -#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 -/* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */ -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 -#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C -#define CL_DEVICE_OPENCL_C_VERSION 0x103D -#define CL_DEVICE_LINKER_AVAILABLE 0x103E -#define CL_DEVICE_BUILT_IN_KERNELS 0x103F -#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 -#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 -#define CL_DEVICE_PARENT_DEVICE 0x1042 -#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 -#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 -#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 -#define CL_DEVICE_PARTITION_TYPE 0x1046 -#define CL_DEVICE_REFERENCE_COUNT 0x1047 -#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 -#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B -#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C -#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D -#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E -#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F -#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 -#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 -#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 -#define CL_DEVICE_SVM_CAPABILITIES 0x1053 -#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 -#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 -#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 -#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 -#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 -#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 -#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A -#define CL_DEVICE_IL_VERSION 0x105B -#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C -#define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D - -/* cl_device_fp_config - bitfield */ -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) -#define CL_FP_SOFT_FLOAT (1 << 6) -#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) - -/* cl_device_mem_cache_type */ -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 - -/* cl_device_local_mem_type */ -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 - -/* cl_device_exec_capabilities - bitfield */ -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) - -/* cl_command_queue_properties - bitfield */ -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) -#define CL_QUEUE_ON_DEVICE (1 << 2) -#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) - -/* cl_context_info */ -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_DEVICES 0x1081 -#define CL_CONTEXT_PROPERTIES 0x1082 -#define CL_CONTEXT_NUM_DEVICES 0x1083 - -/* cl_context_properties */ -#define CL_CONTEXT_PLATFORM 0x1084 -#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 - -/* cl_device_partition_property */ -#define CL_DEVICE_PARTITION_EQUALLY 0x1086 -#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 -#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 - -/* cl_device_affinity_domain */ -#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) -#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) -#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) -#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) -#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) -#define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5) - -/* cl_device_svm_capabilities */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS (1 << 3) - -/* cl_command_queue_info */ -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 -#define CL_QUEUE_SIZE 0x1094 -#define CL_QUEUE_DEVICE_DEFAULT 0x1095 - -/* cl_mem_flags and cl_svm_mem_flags - bitfield */ -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) -/* reserved (1 << 6) */ -#define CL_MEM_HOST_WRITE_ONLY (1 << 7) -#define CL_MEM_HOST_READ_ONLY (1 << 8) -#define CL_MEM_HOST_NO_ACCESS (1 << 9) -#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ -#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ -#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) - -/* cl_mem_migration_flags - bitfield */ -#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) -#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) - -/* cl_channel_order */ -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 -#define CL_Rx 0x10BA -#define CL_RGx 0x10BB -#define CL_RGBx 0x10BC -#define CL_DEPTH 0x10BD -#define CL_DEPTH_STENCIL 0x10BE -#define CL_sRGB 0x10BF -#define CL_sRGBx 0x10C0 -#define CL_sRGBA 0x10C1 -#define CL_sBGRA 0x10C2 -#define CL_ABGR 0x10C3 - -/* cl_channel_type */ -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE -#define CL_UNORM_INT24 0x10DF -#define CL_UNORM_INT_101010_2 0x10E0 - -/* cl_mem_object_type */ -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 -#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 -#define CL_MEM_OBJECT_IMAGE1D 0x10F4 -#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 -#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 -#define CL_MEM_OBJECT_PIPE 0x10F7 - -/* cl_mem_info */ -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 -#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 -#define CL_MEM_OFFSET 0x1108 -#define CL_MEM_USES_SVM_POINTER 0x1109 - -/* cl_image_info */ -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 -#define CL_IMAGE_ARRAY_SIZE 0x1117 -#define CL_IMAGE_BUFFER 0x1118 -#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 -#define CL_IMAGE_NUM_SAMPLES 0x111A - -/* cl_pipe_info */ -#define CL_PIPE_PACKET_SIZE 0x1120 -#define CL_PIPE_MAX_PACKETS 0x1121 - -/* cl_addressing_mode */ -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 -#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 - -/* cl_filter_mode */ -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 - -/* cl_sampler_info */ -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 -#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 -#define CL_SAMPLER_LOD_MIN 0x1156 -#define CL_SAMPLER_LOD_MAX 0x1157 - -/* cl_map_flags - bitfield */ -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) -#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) - -/* cl_program_info */ -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 -#define CL_PROGRAM_NUM_KERNELS 0x1167 -#define CL_PROGRAM_KERNEL_NAMES 0x1168 -#define CL_PROGRAM_IL 0x1169 - -/* cl_program_build_info */ -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 -#define CL_PROGRAM_BINARY_TYPE 0x1184 -#define CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE 0x1185 - -/* cl_program_binary_type */ -#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 -#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 -#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 -#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 - -/* cl_build_status */ -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 - -/* cl_kernel_info */ -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 -#define CL_KERNEL_ATTRIBUTES 0x1195 -#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 -#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA - -/* cl_kernel_arg_info */ -#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 -#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 -#define CL_KERNEL_ARG_TYPE_NAME 0x1198 -#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 -#define CL_KERNEL_ARG_NAME 0x119A - -/* cl_kernel_arg_address_qualifier */ -#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B -#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C -#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D -#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E - -/* cl_kernel_arg_access_qualifier */ -#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 -#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 -#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 -#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 - -/* cl_kernel_arg_type_qualifer */ -#define CL_KERNEL_ARG_TYPE_NONE 0 -#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) -#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) -#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) -#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) - -/* cl_kernel_work_group_info */ -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 -#define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 -#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 -#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 - -/* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 -#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 - -/* cl_kernel_exec_info */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 - -/* cl_event_info */ -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 -#define CL_EVENT_CONTEXT 0x11D4 - -/* cl_command_type */ -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 -#define CL_COMMAND_READ_BUFFER_RECT 0x1201 -#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 -#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 -#define CL_COMMAND_USER 0x1204 -#define CL_COMMAND_BARRIER 0x1205 -#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 -#define CL_COMMAND_FILL_BUFFER 0x1207 -#define CL_COMMAND_FILL_IMAGE 0x1208 -#define CL_COMMAND_SVM_FREE 0x1209 -#define CL_COMMAND_SVM_MEMCPY 0x120A -#define CL_COMMAND_SVM_MEMFILL 0x120B -#define CL_COMMAND_SVM_MAP 0x120C -#define CL_COMMAND_SVM_UNMAP 0x120D -#define CL_COMMAND_MIGRATE_SVM_MEM_OBJECTS 0x120E - -/* command execution status */ -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 - -/* cl_buffer_create_type */ -#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 - -/* cl_profiling_info */ -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 -#define CL_PROFILING_COMMAND_COMPLETE 0x1284 - -/********************************************************************************************************/ - -/* Platform API */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id /* platform */, - cl_platform_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Device APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id /* platform */, - cl_device_type /* device_type */, - cl_uint /* num_entries */, - cl_device_id * /* devices */, - cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id /* in_device */, - const cl_device_partition_property * /* properties */, - cl_uint /* num_devices */, - cl_device_id * /* out_devices */, - cl_uint * /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetDefaultDeviceCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_2_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceAndHostTimer(cl_device_id /* device */, - cl_ulong* /* device_timestamp */, - cl_ulong* /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetHostTimer(cl_device_id /* device */, - cl_ulong * /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; - - -/* Context APIs */ -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * /* properties */, - cl_uint /* num_devices */, - const cl_device_id * /* devices */, - void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (CL_CALLBACK * /* pfn_notify*/ )(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context /* context */, - cl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Command Queue APIs */ -extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithProperties(cl_context /* context */, - cl_device_id /* device */, - const cl_queue_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue /* command_queue */, - cl_command_queue_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Memory Object APIs */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - size_t /* size */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem /* buffer */, - cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - const cl_image_desc * /* image_desc */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreatePipe(cl_context /* context */, - cl_mem_flags /* flags */, - cl_uint /* pipe_packet_size */, - cl_uint /* pipe_max_packets */, - const cl_pipe_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context /* context */, - cl_mem_flags /* flags */, - cl_mem_object_type /* image_type */, - cl_uint /* num_entries */, - cl_image_format * /* image_formats */, - cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem /* memobj */, - cl_mem_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem /* image */, - cl_image_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPipeInfo(cl_mem /* pipe */, - cl_pipe_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; - - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback(cl_mem /* memobj */, - void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_API_SUFFIX__VERSION_1_1; - -/* SVM Allocation APIs */ -extern CL_API_ENTRY void * CL_API_CALL -clSVMAlloc(cl_context /* context */, - cl_svm_mem_flags /* flags */, - size_t /* size */, - cl_uint /* alignment */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY void CL_API_CALL -clSVMFree(cl_context /* context */, - void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; - -/* Sampler APIs */ -extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSamplerWithProperties(cl_context /* context */, - const cl_sampler_properties * /* normalized_coords */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler /* sampler */, - cl_sampler_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Program Object APIs */ -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context /* context */, - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* kernel_names */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithIL(cl_context /* context */, - const void* /* il */, - size_t /* length */, - cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; - - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_headers */, - const cl_program * /* input_headers */, - const char ** /* header_include_names */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_programs */, - const cl_program * /* input_programs */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */, - cl_int * /* errcode_ret */ ) CL_API_SUFFIX__VERSION_1_2; - - -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id /* platform */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program /* program */, - cl_program_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Kernel Object APIs */ -extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program /* program */, - const char * /* kernel_name */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program /* program */, - cl_uint /* num_kernels */, - cl_kernel * /* kernels */, - cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_kernel CL_API_CALL -clCloneKernel(cl_kernel /* source_kernel */, - cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_index */, - size_t /* arg_size */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointer(cl_kernel /* kernel */, - cl_uint /* arg_index */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfo(cl_kernel /* kernel */, - cl_kernel_exec_info /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel /* kernel */, - cl_kernel_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel /* kernel */, - cl_uint /* arg_indx */, - cl_kernel_arg_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_work_group_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_sub_group_info /* param_name */, - size_t /* input_value_size */, - const void* /*input_value */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ ) CL_API_SUFFIX__VERSION_2_1; - - -/* Event Object APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event /* event */, - cl_event_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback( cl_event /* event */, - cl_int /* command_exec_callback_type */, - void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; - -/* Profiling APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event /* event */, - cl_profiling_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Flush and Finish APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -/* Enqueued Commands APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - size_t /* offset */, - size_t /* size */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - size_t /* offset */, - size_t /* size */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - size_t /* src_offset */, - size_t /* dst_offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin */, - const size_t * /* dst_origin */, - const size_t * /* region */, - size_t /* src_row_pitch */, - size_t /* src_slice_pitch */, - size_t /* dst_row_pitch */, - size_t /* dst_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_read */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_write */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* input_row_pitch */, - size_t /* input_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - const void * /* fill_color */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_image */, - const size_t * /* src_origin[3] */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin[3] */, - const size_t * /* region[3] */, - size_t /* dst_offset */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_image */, - size_t /* src_offset */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t * /* image_row_pitch */, - size_t * /* image_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, - cl_mem /* memobj */, - void * /* mapped_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue /* command_queue */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_objects */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* work_dim */, - const size_t * /* global_work_offset */, - const size_t * /* global_work_size */, - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue /* command_queue */, - void (CL_CALLBACK * /*user_func*/)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFree(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpy(cl_command_queue /* command_queue */, - cl_bool /* blocking_copy */, - void * /* dst_ptr */, - const void * /* src_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFill(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMap(cl_command_queue /* command_queue */, - cl_bool /* blocking_map */, - cl_map_flags /* flags */, - void * /* svm_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmap(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMigrateMem(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - const void ** /* svm_pointers */, - const size_t * /* sizes */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_1; - - -/* Extension function access - * - * Returns the extension function address for the given function name, - * or NULL if a valid function can not be found. The client must - * check to make sure the address is not NULL, before using or - * calling the returned function address. - */ -extern CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id /* platform */, - const char * /* func_name */) CL_API_SUFFIX__VERSION_1_2; - - -/* Deprecated OpenCL 1.1 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage2D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_row_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage3D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_depth */, - size_t /* image_row_pitch */, - size_t /* image_slice_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue /* command_queue */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue /* command_queue */, - cl_uint /* num_events */, - const cl_event * /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL -clGetExtensionFunctionAddress(const char * /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -/* Deprecated OpenCL 2.0 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL -clCreateSampler(cl_context /* context */, - cl_bool /* normalized_coords */, - cl_addressing_mode /* addressing_mode */, - cl_filter_mode /* filter_mode */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL -clEnqueueTask(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl.hpp deleted file mode 100644 index 396b86719fd032..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl.hpp +++ /dev/null @@ -1,12934 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/*! \file - * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33) and - * OpenCL 1.2 (rev 15) - * \author Benedict R. Gaster, Laurent Morichetti and Lee Howes - * - * Additions and fixes from: - * Brian Cole, March 3rd 2010 and April 2012 - * Matt Gruenke, April 2012. - * Bruce Merry, February 2013. - * Tom Deakin and Simon McIntosh-Smith, July 2013 - * - * \version 1.2.8 - * \date October 2015 - * - * Optional extension support - * - * cl - * cl_ext_device_fission - * #define USE_CL_DEVICE_FISSION - */ - -/*! \mainpage - * \section intro Introduction - * For many large applications C++ is the language of choice and so it seems - * reasonable to define C++ bindings for OpenCL. - * - * - * The interface is contained with a single C++ header file \em cl.hpp and all - * definitions are contained within the namespace \em cl. There is no additional - * requirement to include \em cl.h and to use either the C++ or original C - * bindings it is enough to simply include \em cl.hpp. - * - * The bindings themselves are lightweight and correspond closely to the - * underlying C API. Using the C++ bindings introduces no additional execution - * overhead. - * - * For detail documentation on the bindings see: - * - * The OpenCL C++ Wrapper API 1.2 (revision 09) - * http://www.khronos.org/registry/cl/specs/opencl-cplusplus-1.2.pdf - * - * \section example Example - * - * The following example shows a general use case for the C++ - * bindings, including support for the optional exception feature and - * also the supplied vector and string classes, see following sections for - * decriptions of these features. - * - * \code - * #define __CL_ENABLE_EXCEPTIONS - * - * #if defined(__APPLE__) || defined(__MACOSX) - * #include - * #else - * #include - * #endif - * #include - * #include - * #include - * - * const char * helloStr = "__kernel void " - * "hello(void) " - * "{ " - * " " - * "} "; - * - * int - * main(void) - * { - * cl_int err = CL_SUCCESS; - * try { - * - * std::vector platforms; - * cl::Platform::get(&platforms); - * if (platforms.size() == 0) { - * std::cout << "Platform size 0\n"; - * return -1; - * } - * - * cl_context_properties properties[] = - * { CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0}; - * cl::Context context(CL_DEVICE_TYPE_CPU, properties); - * - * std::vector devices = context.getInfo(); - * - * cl::Program::Sources source(1, - * std::make_pair(helloStr,strlen(helloStr))); - * cl::Program program_ = cl::Program(context, source); - * program_.build(devices); - * - * cl::Kernel kernel(program_, "hello", &err); - * - * cl::Event event; - * cl::CommandQueue queue(context, devices[0], 0, &err); - * queue.enqueueNDRangeKernel( - * kernel, - * cl::NullRange, - * cl::NDRange(4,4), - * cl::NullRange, - * NULL, - * &event); - * - * event.wait(); - * } - * catch (cl::Error err) { - * std::cerr - * << "ERROR: " - * << err.what() - * << "(" - * << err.err() - * << ")" - * << std::endl; - * } - * - * return EXIT_SUCCESS; - * } - * - * \endcode - * - */ -#ifndef CL_HPP_ -#define CL_HPP_ - -#ifdef _WIN32 - -#include - -#if defined(USE_DX_INTEROP) -#include -#include -#endif -#endif // _WIN32 - -#if defined(_MSC_VER) -#include -#endif // _MSC_VER - -// -#if defined(USE_CL_DEVICE_FISSION) -#include -#endif - -#if defined(__APPLE__) || defined(__MACOSX) -#include -#else -#include -#endif // !__APPLE__ - -#if (_MSC_VER >= 1700) || (__cplusplus >= 201103L) -#define CL_HPP_RVALUE_REFERENCES_SUPPORTED -#define CL_HPP_CPP11_ATOMICS_SUPPORTED -#include -#endif - -#if (__cplusplus >= 201103L) -#define CL_HPP_NOEXCEPT noexcept -#else -#define CL_HPP_NOEXCEPT -#endif - - -// To avoid accidentally taking ownership of core OpenCL types -// such as cl_kernel constructors are made explicit -// under OpenCL 1.2 -#if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -// Define deprecated prefixes and suffixes to ensure compilation -// in case they are not pre-defined -#if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) - -#if !defined(CL_CALLBACK) -#define CL_CALLBACK -#endif //CL_CALLBACK - -#include -#include -#include - -#if defined(__CL_ENABLE_EXCEPTIONS) -#include -#endif // #if defined(__CL_ENABLE_EXCEPTIONS) - -#if !defined(__NO_STD_VECTOR) -#include -#endif - -#if !defined(__NO_STD_STRING) -#include -#endif - -#if defined(__ANDROID__) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) -#include -#endif // linux - -#include - - -/*! \namespace cl - * - * \brief The OpenCL C++ bindings are defined within this namespace. - * - */ -namespace cl { - -class Memory; - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) - -#if defined(CL_VERSION_1_2) -#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) - -class Program; -class Device; -class Context; -class CommandQueue; -class Memory; -class Buffer; - -#if defined(__CL_ENABLE_EXCEPTIONS) -/*! \brief Exception class - * - * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. - */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} - - ~Error() throw() {} - - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } - - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } -}; - -#define __ERR_STR(x) #x -#else -#define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS - - -namespace detail -{ -#if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; -} -#else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; -} -#endif // __CL_ENABLE_EXCEPTIONS -} - - - -//! \cond DOXYGEN_DETAIL -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) -#if defined(CL_VERSION_1_2) -#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) -#endif // #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) - -#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) - -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __COPY_ERR __ERR_STR(cl::copy) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) -#if defined(CL_VERSION_1_2) -#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) -#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) - -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) - -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) -#if defined(CL_VERSION_1_2) -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) -#endif // #if defined(CL_VERSION_1_2) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) -#if defined(CL_VERSION_1_2) -#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) -#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) - -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) -#if defined(CL_VERSION_1_2) -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) -#endif // #if defined(CL_VERSION_1_2) - -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) - - -#define __RETAIN_ERR __ERR_STR(Retain Object) -#define __RELEASE_ERR __ERR_STR(Release Object) -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) -#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) - -/** - * CL 1.2 version that uses device fission. - */ -#if defined(CL_VERSION_1_2) -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) -#else -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // #if defined(CL_VERSION_1_2) - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#endif // #if defined(CL_VERSION_1_1) - -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS -//! \endcond - -/** - * CL 1.2 marker and barrier commands - */ -#if defined(CL_VERSION_1_2) -#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) -#endif // #if defined(CL_VERSION_1_2) - -#if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) -typedef std::string STRING_CLASS; -#elif !defined(__USE_DEV_STRING) - -/*! \class string - * \brief Simple string class, that provides a limited subset of std::string - * functionality but avoids many of the issues that come with that class. - - * \note Deprecated. Please use std::string as default or - * re-define the string class to match the std::string - * interface by defining STRING_CLASS - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ -private: - ::size_t size_; - char * str_; -public: - //! \brief Constructs an empty string, allocating no memory. - string(void) : size_(0), str_(NULL) - { - } - - /*! \brief Constructs a string populated from an arbitrary value of - * specified size. - * - * An extra '\0' is added, in case none was contained in str. - * - * \param str the initial value of the string instance. Note that '\0' - * characters receive no special treatment. If NULL, - * the string is left empty, with a size of 0. - * - * \param size the number of characters to copy from str. - */ - string(const char * str, ::size_t size) : - size_(size), - str_(NULL) - { - if( size > 0 ) { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } - } - - /*! \brief Constructs a string populated from a null-terminated value. - * - * \param str the null-terminated initial value of the string instance. - * If NULL, the string is left empty, with a size of 0. - */ - string(const char * str) : - size_(0), - str_(NULL) - { - if( str ) { - size_= ::strlen(str); - } - if( size_ > 0 ) { - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - } - } - - void resize( ::size_t n ) - { - if( size_ == n ) { - return; - } - if (n == 0) { - if( str_ ) { - delete [] str_; - } - str_ = NULL; - size_ = 0; - } - else { - char *newString = new char[n + 1]; - ::size_t copySize = n; - if( size_ < n ) { - copySize = size_; - } - size_ = n; - - if(str_) { - memcpy(newString, str_, (copySize + 1) * sizeof(char)); - } - if( copySize < size_ ) { - memset(newString + copySize, 0, size_ - copySize); - } - newString[size_] = '\0'; - - delete [] str_; - str_ = newString; - } - } - - const char& operator[] ( ::size_t pos ) const - { - return str_[pos]; - } - - char& operator[] ( ::size_t pos ) - { - return str_[pos]; - } - - /*! \brief Copies the value of another string to this one. - * - * \param rhs the string to copy. - * - * \returns a reference to the modified instance. - */ - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if( str_ != NULL ) { - delete [] str_; - str_ = NULL; - size_ = 0; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - str_ = NULL; - size_ = 0; - } - else { - str_ = new char[rhs.size_ + 1]; - size_ = rhs.size_; - - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - /*! \brief Constructs a string by copying the value of another instance. - * - * \param rhs the string to copy. - */ - string(const string& rhs) : - size_(0), - str_(NULL) - { - *this = rhs; - } - - //! \brief Destructor - frees memory used to hold the current value. - ~string() - { - delete[] str_; - str_ = NULL; - } - - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t size(void) const { return size_; } - - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t length(void) const { return size(); } - - /*! \brief Returns a pointer to the private copy held by this instance, - * or "" if empty/unset. - */ - const char * c_str(void) const { return (str_) ? str_ : "";} -}; -typedef cl::string STRING_CLASS; -#endif // #elif !defined(__USE_DEV_STRING) - -#if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) -#define VECTOR_CLASS std::vector -#elif !defined(__USE_DEV_VECTOR) -#define VECTOR_CLASS cl::vector - -#if !defined(__MAX_DEFAULT_VECTOR_SIZE) -#define __MAX_DEFAULT_VECTOR_SIZE 10 -#endif - -/*! \class vector - * \brief Fixed sized vector implementation that mirroring - * - * \note Deprecated. Please use std::vector as default or - * re-define the vector class to match the std::vector - * interface by defining VECTOR_CLASS - - * \note Not recommended for use with custom objects as - * current implementation will construct N elements - * - * std::vector functionality. - * \brief Fixed sized vector compatible with std::vector. - * - * \note - * This differs from std::vector<> not just in memory allocation, - * but also in terms of when members are constructed, destroyed, - * and assigned instead of being copy constructed. - * - * \param T type of element contained in the vector. - * - * \param N maximum size of the vector. - */ -template -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector -{ -private: - T data_[N]; - unsigned int size_; - -public: - //! \brief Constructs an empty vector with no memory allocated. - vector() : - size_(static_cast(0)) - {} - - //! \brief Deallocates the vector's memory and destroys all of its elements. - ~vector() - { - clear(); - } - - //! \brief Returns the number of elements currently contained. - unsigned int size(void) const - { - return size_; - } - - /*! \brief Empties the vector of all elements. - * \note - * This does not deallocate memory but will invoke destructors - * on contained elements. - */ - void clear() - { - while(!empty()) { - pop_back(); - } - } - - /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an - * exception if exceptions are enabled. - */ - void push_back (const T& x) - { - if (size() < N) { - new (&data_[size_]) T(x); - size_++; - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - } - - /*! \brief Removes the last valid element from the vector. - * Calling this on an empty vector will throw an exception - * if exceptions are enabled. - */ - void pop_back(void) - { - if (size_ != 0) { - --size_; - data_[size_].~T(); - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - } - - /*! \brief Constructs with a value copied from another. - * - * \param vec the vector to copy. - */ - vector(const vector& vec) : - size_(vec.size_) - { - if (size_ != 0) { - assign(vec.begin(), vec.end()); - } - } - - /*! \brief Constructs with a specified number of initial elements. - * - * \param size number of initial elements. - * - * \param val value of initial elements. - */ - vector(unsigned int size, const T& val = T()) : - size_(0) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } - } - - /*! \brief Overwrites the current content with that copied from another - * instance. - * - * \param rhs vector to copy. - * - * \returns a reference to this. - */ - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ != 0) { - assign(rhs.begin(), rhs.end()); - } else { - clear(); - } - - return *this; - } - - /*! \brief Tests equality against another instance. - * - * \param vec the vector against which to compare. - */ - bool operator==(vector &vec) - { - if (size() != vec.size()) { - return false; - } - - for( unsigned int i = 0; i < size(); ++i ) { - if( operator[](i) != vec[i] ) { - return false; - } - } - return true; - } - - //! \brief Conversion operator to T*. - operator T* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const T* () const { return data_; } - - //! \brief Tests whether this instance has any elements. - bool empty (void) const - { - return size_==0; - } - - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int max_size (void) const - { - return N; - } - - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int capacity () const - { - return N; - } - - //! \brief Resizes the vector to the given size - void resize(unsigned int newSize, T fill = T()) - { - if (newSize > N) - { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - else - { - while (size_ < newSize) - { - new (&data_[size_]) T(fill); - size_++; - } - while (size_ > newSize) - { - --size_; - data_[size_].~T(); - } - } - } - - /*! \brief Returns a reference to a given element. - * - * \param index which element to access. * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - T& operator[](int index) - { - return data_[index]; - } - - /*! \brief Returns a const reference to a given element. - * - * \param index which element to access. - * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - const T& operator[](int index) const - { - return data_[index]; - } - - /*! \brief Assigns elements of the vector based on a source iterator range. - * - * \param start Beginning iterator of source range - * \param end Enditerator of source range - * - * \note - * Will throw an exception if exceptions are enabled and size exceeded. - */ - template - void assign(I start, I end) - { - clear(); - while(start != end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Const iterator class for vectors - */ - class iterator - { - private: - const vector *vec_; - int index_; - - /** - * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking - * the vector by copy. - */ - iterator (const vector &vec, int index) : - vec_(&vec) - { - if( !vec.empty() ) { - index_ = index; - } else { - index_ = -1; - } - } - - public: - iterator(void) : - index_(-1), - vec_(NULL) - { - } - - iterator(const iterator& rhs) : - vec_(rhs.vec_), - index_(rhs.index_) - { - } - - ~iterator(void) {} - - static iterator begin(const cl::vector &vec) - { - iterator i(vec, 0); - - return i; - } - - static iterator end(const cl::vector &vec) - { - iterator i(vec, vec.size()); - - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - iterator& operator++() - { - ++index_; - return *this; - } - - iterator operator++(int) - { - iterator retVal(*this); - ++index_; - return retVal; - } - - iterator& operator--() - { - --index_; - return *this; - } - - iterator operator--(int) - { - iterator retVal(*this); - --index_; - return retVal; - } - - const T& operator *() const - { - return (*vec_)[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator begin(void) const - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - iterator end(void) const - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_-1]; - } -} CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) - - - - - -namespace detail { -#define __DEFAULT_NOT_INITIALIZED 1 -#define __DEFAULT_BEING_INITIALIZED 2 -#define __DEFAULT_INITIALIZED 4 - - /* - * Compare and exchange primitives are needed for handling of defaults - */ - -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(std::atomic * dest, int exchange, int comparand) -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(volatile int * dest, int exchange, int comparand) -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - { -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_compare_exchange_strong(dest, &comparand, exchange); - return comparand; -#elif _MSC_VER - return (int)(_InterlockedCompareExchange( - (volatile long*)dest, - (long)exchange, - (long)comparand)); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - return (__sync_val_compare_and_swap( - dest, - comparand, - exchange)); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } - - inline void fence() { -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_thread_fence(std::memory_order_seq_cst); -#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED - _ReadWriteBarrier(); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - __sync_synchronize(); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } -} // namespace detail - - -/*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ -template -class size_t -{ -private: - ::size_t data_[N]; - -public: - //! \brief Initialize size_t to all 0s - size_t() - { - for( int i = 0; i < N; ++i ) { - data_[i] = 0; - } - } - - ::size_t& operator[](int index) - { - return data_[index]; - } - - const ::size_t& operator[](int index) const - { - return data_[index]; - } - - //! \brief Conversion operator to T*. - operator ::size_t* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const ::size_t* () const { return data_; } -}; - -namespace detail { - -// Generic getInfoHelper. The final parameter is used to guide overload -// resolution: the actual parameter passed is an int, which makes this -// a worse conversion sequence than a specialization that declares the -// parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); -} - -// Specialized getInfoHelper for VECTOR_CLASS params -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; -} - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, typename T::cl_type = 0) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - typename T::cl_type * value = (typename T::cl_type *) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - ::size_t elements = required / sizeof(typename T::cl_type); - param->assign(&value[0], &value[elements]); - for (::size_t i = 0; i < elements; i++) - { - if (value[i] != NULL) - { - err = (*param)[i].retain(); - if (err != CL_SUCCESS) { - return err; - } - } - } - return CL_SUCCESS; -} - -// Specialized for getInfo -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) -{ - cl_int err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); - - if (err != CL_SUCCESS) { - return err; - } - - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for STRING_CLASS params -template -inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) -{ -#if defined(__NO_STD_VECTOR) || defined(__NO_STD_STRING) - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - char* value = (char*)alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - *param = value; - return CL_SUCCESS; -#else - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - // std::string has a constant data member - // a char vector does not - VECTOR_CLASS value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(value.begin(), value.end()); - } -#endif - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for cl::size_t params -template -inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - ::size_t* value = (::size_t*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - for(int i = 0; i < N; ++i) { - (*param)[i] = value[i]; - } - - return CL_SUCCESS; -} - -template struct ReferenceHandler; - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); - if (err != CL_SUCCESS) { - return err; - } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; -} - -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) - -#if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 - - -#if defined(CL_VERSION_1_2) -#define __PARAM_NAME_INFO_1_2(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ - \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) -#endif // #if defined(CL_VERSION_1_2) - -#if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION - -template -struct param_traits {}; - -#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; - -__PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) -#if defined(CL_VERSION_1_1) -__PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 -#if defined(CL_VERSION_1_2) -__PARAM_NAME_INFO_1_2(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 - -#if defined(USE_CL_DEVICE_FISSION) -__PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION - -#ifdef CL_PLATFORM_ICD_SUFFIX_KHR -__CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) -#endif - -#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong) -#endif - -#ifdef CL_DEVICE_GLOBAL_FREE_MEMORY_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, VECTOR_CLASS< ::size_t>) -#endif -#ifdef CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_WAVEFRONT_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_WAVEFRONT_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) -#endif - -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint) -#endif -#ifdef CL_DEVICE_WARP_SIZE_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint) -#endif -#ifdef CL_DEVICE_GPU_OVERLAP_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool) -#endif -#ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool) -#endif -#ifdef CL_DEVICE_INTEGRATED_MEMORY_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool) -#endif - -// Convenience functions - -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); -} - -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } -}; - -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } -}; - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); -} - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); -} - -template -struct ReferenceHandler -{ }; - -#if defined(CL_VERSION_1_2) -/** - * OpenCL 1.2 devices do have retain/release. - */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } -}; -#else // #if defined(CL_VERSION_1_2) -/** - * OpenCL 1.1 devices do not have retain/release. - */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } -}; -#endif // #if defined(CL_VERSION_1_2) - -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } -}; - - -// Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const char *versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } - ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; -} - -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - ::size_t size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - char *versionInfo = (char *) alloca(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); - return getVersion(versionInfo); -} - -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); -} - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - ::size_t size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - cl_device_id *devices = (cl_device_id *) alloca(size); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); - return getDevicePlatformVersion(devices[0]); -} -#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -template -class Wrapper -{ -public: - typedef T cl_type; - -protected: - cl_type object_; - -public: - Wrapper() : object_(NULL) { } - - Wrapper(const cl_type &obj) : object_(obj) { } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - rhs.object_ = NULL; - } -#endif - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } -#endif - - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - return *this; - } - - cl_type operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } - - cl_int release() const - { - return ReferenceHandler::release(object_); - } -}; - -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; - -protected: - cl_type object_; - bool referenceCountable_; - - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } - return retVal; - } - -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } - - Wrapper(const cl_type &obj) : object_(obj), referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } -#endif - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } -#endif - - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - cl_type operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); - - cl_int retain() const - { - if( referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if( referenceCountable_ ) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -} // namespace detail -//! \endcond - -/*! \stuct ImageFormat - * \brief Adds constructors and member functions for cl_image_format. - * - * \see cl_image_format - */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} - - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } - - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; - } -}; - -/*! \brief Class interface for cl_device_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_device_id - */ -class Device : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } - - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id &device) : detail::Wrapper(device) { } - - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault(cl_int * err = NULL); - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ -#if defined(CL_VERSION_1_2) - //! \brief Wrapper for clCreateSubDevicesEXT(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - VECTOR_CLASS* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = clCreateSubDevices(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif // #if defined(CL_VERSION_1_2) - -/** - * CL 1.1 version that uses device fission. - */ -#if defined(CL_VERSION_1_1) -#if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif // #if defined(USE_CL_DEVICE_FISSION) -#endif // #if defined(CL_VERSION_1_1) -}; - -/*! \brief Class interface for cl_platform_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_platform_id - */ -class Platform : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } - - /*! \brief Constructor from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id &platform) : detail::Wrapper(platform) { } - - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } - -#if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); - - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif - - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; - - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_uint n = 0; - - if( platform == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - *platform = ids[0]; - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform, returning it by value. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - Platform platform; - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - - return Platform(ids[0]); - } - - static Platform getDefault( - cl_int *errResult = NULL ) - { - return get(errResult); - } - - -#if defined(CL_VERSION_1_2) - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // #if defined(CL_VERSION_1_2) -}; // class Platform - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -/** - * Unload the OpenCL compiler. - * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_VERSION_1_1) - -/*! \brief Class interface for cl_context. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_context as the original. For details, see - * clRetainContext() and clReleaseContext(). - * - * \see cl_context - */ -class Context - : public detail::Wrapper -{ -private: - -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static Context default_; - static volatile cl_int default_error_; -public: - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - VECTOR_CLASS platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - VECTOR_CLASS devices; - -#if defined(__CL_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(__CL_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - NULL, - NULL, - NULL, - &error); - - detail::fence(); - - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - } - else { - formats->clear(); - } - return CL_SUCCESS; - } -}; - -inline Device Device::getDefault(cl_int * err) -{ - cl_int error; - Device device; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - device = context.getInfo()[0]; - if (err != NULL) { - *err = CL_SUCCESS; - } - } - - return device; -} - - -#ifdef _WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) Context Context::default_; -__declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; -#else // !_WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) Context Context::default_; -__attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; -#endif // !_WIN32 - -/*! \brief Class interface for cl_event. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_event as the original. For details, see - * clRetainEvent() and clReleaseEvent(). - * - * \see cl_event - */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } - - /*! \brief Constructor from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) { } - - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } - - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } - -#if defined(CL_VERSION_1_1) - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif - - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } -}; - -#if defined(CL_VERSION_1_1) -/*! \brief Class interface for user events (a subset of cl_event's). - * - * See Event for details about copy semantics, etc. - */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); - - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } - - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } -}; -#endif - -/*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); -} - -/*! \brief Class interface for cl_mem. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_mem as the original. For details, see - * clRetainMemObject() and clReleaseMemObject(). - * - * \see cl_mem - */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_mem - * into the new Memory object. - */ - __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) { } - - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(CL_VERSION_1_1) - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif - -}; - -// Pre-declare copy functions -class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); - - -/*! \brief Class interface for Buffer Memory Objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Buffer : public Memory -{ -public: - - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - -#if defined(CL_VERSION_1_1) - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); - - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; - } -#endif -}; - -#if defined (USE_DX_INTEROP) -/*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. - * - * This is provided to facilitate interoperability with Direct3D. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; - -#if defined(CL_VERSION_1_2) - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); -#endif -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); -#endif - - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif - -/*! \brief Class interface for GL Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief C++ base class for Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -#if defined(CL_VERSION_1_2) -/*! \brief Class interface for 1D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image1D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -/*! \class Image1DBuffer - * \brief Image interface for 1D buffer images. - */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DBuffer() { } - - __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) { } - - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -/*! \class Image1DArray - * \brief Image interface for arrays of 1D images. - */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DArray() { } - - __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) { } - - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - - -/*! \brief Class interface for 2D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - - -#if !defined(CL_VERSION_1_2) -/*! \brief Class interface for GL 2D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } - - } - - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if !defined(CL_VERSION_1_2) - -#if defined(CL_VERSION_1_2) -/*! \class Image2DArray - * \brief Image interface for arrays of 2D images. - */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t height, - ::size_t rowPitch, - ::size_t slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2DArray() { } - - __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) { } - - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - -/*! \brief Class interface for 3D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -#if !defined(CL_VERSION_1_2) -/*! \brief Class interface for GL 3D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if !defined(CL_VERSION_1_2) - -#if defined(CL_VERSION_1_2) -/*! \class ImageGL - * \brief general image interface for GL interop. - * We abstract the 2D and 3D GL images into a single instance here - * that wraps all GL sourced images on the grounds that setup information - * was performed by OpenCL anyway. - */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } - } - - ImageGL() : Image() { } - - __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) { } - - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - -/*! \brief Class interface for GL Render Buffer Memory Objects. -* -* This is provided to facilitate interoperability with OpenGL. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class BufferRenderGL : -#if defined(CL_VERSION_1_2) - public ImageGL -#else // #if defined(CL_VERSION_1_2) - public Image2DGL -#endif //#if defined(CL_VERSION_1_2) -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. -#if defined(CL_VERSION_1_2) - BufferRenderGL() : ImageGL() {}; -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL() : Image2DGL() {}; -#endif //#if defined(CL_VERSION_1_2) - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ -#if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) { } -#else // #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) { } -#endif //#if defined(CL_VERSION_1_2) - - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ -#if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} -#endif //#if defined(CL_VERSION_1_2) - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &rhs) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ -#if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} -#endif //#if defined(CL_VERSION_1_2) - - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(std::move(buf)); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(std::move(buf)); -#endif //#if defined(CL_VERSION_1_2) - - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_, type, gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief Class interface for cl_sampler. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_sampler as the original. For details, see - * clRetainSampler() and clReleaseSampler(). - * - * \see cl_sampler - */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } - - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -class Program; -class CommandQueue; -class Kernel; - -//! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; - -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { } - - //! \brief Constructs one-dimensional range. - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_[0] = size0; - } - - //! \brief Constructs two-dimensional range. - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - } - - //! \brief Constructs three-dimensional range. - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } - - /*! \brief Conversion operator to const ::size_t *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const ::size_t*() const { - return (const ::size_t*) sizes_; - } - - //! \brief Queries the number of dimensions in the range. - ::size_t dimensions() const { return dimensions_; } -}; - -//! \brief A zero-dimensional range. -static const NDRange NullRange; - -//! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - ::size_t size_; -}; - -namespace detail { - -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } -}; - -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } -}; - -} -//! \endcond - -/*! __local - * \brief Helper function for generating LocalSpaceArg objects. - * Deprecated. Replaced with Local. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg -__local(::size_t size) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -/*! Local - * \brief Helper function for generating LocalSpaceArg objects. - */ -inline LocalSpaceArg -Local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -//class KernelFunctor; - -/*! \brief Class interface for cl_kernel. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_kernel as the original. For details, see - * clRetainKernel() and clReleaseKernel(). - * - * \see cl_kernel - */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Kernel() { } - - /*! \brief Constructor from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) { } - - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(CL_VERSION_1_2) - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // #if defined(CL_VERSION_1_2) - - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } - - cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } -}; - -/*! \class Program - * \brief Program interface that implements cl_program. - */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; - - Program( - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const ::size_t length = source.size(); - - Context context = Context::getDefault(err); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const ::size_t length = source.size(); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); - - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; - - const ::size_t numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - ::size_t* lengths = (::size_t*) alloca(numDevices * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(numDevices * sizeof(const unsigned char**)); - - for (::size_t i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } - - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs, - lengths, images, (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - } - - -#if defined(CL_VERSION_1_2) - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const STRING_CLASS& kernelNames, - cl_int* err = NULL) - { - cl_int error; - - - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs, - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) - - Program() { } - - __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) : detail::Wrapper(program) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } - -#if defined(CL_VERSION_1_2) - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data), - __COMPILE_PROGRAM_ERR); - } -#endif - - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } -}; - -#if defined(CL_VERSION_1_2) -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program programs[2] = { input1(), input2() }; - - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} - -inline Program linkProgram( - VECTOR_CLASS inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program * programs = (cl_program*) alloca(inputPrograms.size() * sizeof(cl_program)); - - if (programs != NULL) { - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } - } - - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} -#endif - -template<> -inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const -{ - VECTOR_CLASS< ::size_t> sizes = getInfo(); - VECTOR_CLASS binaries; - for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) - { - char *ptr = NULL; - if (*s != 0) - ptr = new char[*s]; - binaries.push_back(ptr); - } - - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); - if (err != NULL) { - *err = result; - } - return binaries; -} - -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; - - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } - -} - -/*! \class CommandQueue - * \brief CommandQueue interface for cl_command_queue. - */ -class CommandQueue : public detail::Wrapper -{ -private: -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static CommandQueue default_; - static volatile cl_int default_error_; -public: - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - } - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - VECTOR_CLASS devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - - object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (err != NULL) { - *err = error; - } - - } - - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - static CommandQueue getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - default_ = CommandQueue(context, device, 0, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - - detail::fence(); - - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - - } - - CommandQueue() { } - - __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper(commandQueue) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const VECTOR_CLASS &memObjects, - cl_mem_migration_flags flags, - const VECTOR_CLASS* events = NULL, - Event* event = NULL - ) - { - cl_event tmp; - - cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } - - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - static_cast(localMemObjects), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // #if defined(CL_VERSION_1_1) - - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); - - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; -#if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); -#endif -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); -#endif - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; -#if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_2) -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_1) - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // #if defined(CL_VERSION_1_1) - - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } - - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; - -#ifdef _WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) CommandQueue CommandQueue::default_; -__declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#else // !_WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) CommandQueue CommandQueue::default_; -__attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#endif // !_WIN32 - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; -} - -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; -} - -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, startIterator, endIterator, buffer); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, buffer, startIterator, endIterator); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } -#if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); -#else - std::copy(startIterator, endIterator, pointer); -#endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -#if defined(CL_VERSION_1_1) -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); -} -#endif - -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); -} - -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); -} - -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); -} - - -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.flush(); -} - -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - - return queue.finish(); -} - -// Kernel Functor support -// New interface as of September 2011 -// Requires the C++11 std::tr1::function (note do not support TR1) -// Visual Studio 2010 and GCC 4.2 - -struct EnqueueArgs -{ - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - VECTOR_CLASS events_; - - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } -}; - -namespace detail { - -class NullType {}; - -template -struct SetArg -{ - static void set (Kernel kernel, T0 arg) - { - kernel.setArg(index, arg); - } -}; - -template -struct SetArg -{ - static void set (Kernel, NullType) - { - } -}; - -template < - typename T0, typename T1, typename T2, typename T3, - typename T4, typename T5, typename T6, typename T7, - typename T8, typename T9, typename T10, typename T11, - typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, - typename T20, typename T21, typename T22, typename T23, - typename T24, typename T25, typename T26, typename T27, - typename T28, typename T29, typename T30, typename T31 -> -class KernelFunctorGlobal -{ -private: - Kernel kernel_; - -public: - KernelFunctorGlobal( - Kernel kernel) : - kernel_(kernel) - {} - - KernelFunctorGlobal( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} - - Event operator() ( - const EnqueueArgs& args, - T0 t0, - T1 t1 = NullType(), - T2 t2 = NullType(), - T3 t3 = NullType(), - T4 t4 = NullType(), - T5 t5 = NullType(), - T6 t6 = NullType(), - T7 t7 = NullType(), - T8 t8 = NullType(), - T9 t9 = NullType(), - T10 t10 = NullType(), - T11 t11 = NullType(), - T12 t12 = NullType(), - T13 t13 = NullType(), - T14 t14 = NullType(), - T15 t15 = NullType(), - T16 t16 = NullType(), - T17 t17 = NullType(), - T18 t18 = NullType(), - T19 t19 = NullType(), - T20 t20 = NullType(), - T21 t21 = NullType(), - T22 t22 = NullType(), - T23 t23 = NullType(), - T24 t24 = NullType(), - T25 t25 = NullType(), - T26 t26 = NullType(), - T27 t27 = NullType(), - T28 t28 = NullType(), - T29 t29 = NullType(), - T30 t30 = NullType(), - T31 t31 = NullType() - ) - { - Event event; - SetArg<0, T0>::set(kernel_, t0); - SetArg<1, T1>::set(kernel_, t1); - SetArg<2, T2>::set(kernel_, t2); - SetArg<3, T3>::set(kernel_, t3); - SetArg<4, T4>::set(kernel_, t4); - SetArg<5, T5>::set(kernel_, t5); - SetArg<6, T6>::set(kernel_, t6); - SetArg<7, T7>::set(kernel_, t7); - SetArg<8, T8>::set(kernel_, t8); - SetArg<9, T9>::set(kernel_, t9); - SetArg<10, T10>::set(kernel_, t10); - SetArg<11, T11>::set(kernel_, t11); - SetArg<12, T12>::set(kernel_, t12); - SetArg<13, T13>::set(kernel_, t13); - SetArg<14, T14>::set(kernel_, t14); - SetArg<15, T15>::set(kernel_, t15); - SetArg<16, T16>::set(kernel_, t16); - SetArg<17, T17>::set(kernel_, t17); - SetArg<18, T18>::set(kernel_, t18); - SetArg<19, T19>::set(kernel_, t19); - SetArg<20, T20>::set(kernel_, t20); - SetArg<21, T21>::set(kernel_, t21); - SetArg<22, T22>::set(kernel_, t22); - SetArg<23, T23>::set(kernel_, t23); - SetArg<24, T24>::set(kernel_, t24); - SetArg<25, T25>::set(kernel_, t25); - SetArg<26, T26>::set(kernel_, t26); - SetArg<27, T27>::set(kernel_, t27); - SetArg<28, T28>::set(kernel_, t28); - SetArg<29, T29>::set(kernel_, t29); - SetArg<30, T30>::set(kernel_, t30); - SetArg<31, T31>::set(kernel_, t31); - - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - -}; - -//------------------------------------------------------------------------------------------------------ - - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30, - typename T31> -struct functionImplementation_ -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30, - T31 arg31) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30, - arg31); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3); - } - - -}; - -template< - typename T0, - typename T1, - typename T2> -struct functionImplementation_ -< T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2); - } - - -}; - -template< - typename T0, - typename T1> -struct functionImplementation_ -< T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1) - { - return functor_( - enqueueArgs, - arg0, - arg1); - } - - -}; - -template< - typename T0> -struct functionImplementation_ -< T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0) - { - return functor_( - enqueueArgs, - arg0); - } - - -}; - - - - - -} // namespace detail - -//---------------------------------------------------------------------------------------------- - -template < - typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, - typename T3 = detail::NullType, typename T4 = detail::NullType, - typename T5 = detail::NullType, typename T6 = detail::NullType, - typename T7 = detail::NullType, typename T8 = detail::NullType, - typename T9 = detail::NullType, typename T10 = detail::NullType, - typename T11 = detail::NullType, typename T12 = detail::NullType, - typename T13 = detail::NullType, typename T14 = detail::NullType, - typename T15 = detail::NullType, typename T16 = detail::NullType, - typename T17 = detail::NullType, typename T18 = detail::NullType, - typename T19 = detail::NullType, typename T20 = detail::NullType, - typename T21 = detail::NullType, typename T22 = detail::NullType, - typename T23 = detail::NullType, typename T24 = detail::NullType, - typename T25 = detail::NullType, typename T26 = detail::NullType, - typename T27 = detail::NullType, typename T28 = detail::NullType, - typename T29 = detail::NullType, typename T30 = detail::NullType, - typename T31 = detail::NullType -> -struct make_kernel : - public detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - > -{ -public: - typedef detail::KernelFunctorGlobal< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - > FunctorType; - - make_kernel( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - >( - FunctorType(program, name, err)) - {} - - make_kernel( - const Kernel kernel) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - >( - FunctorType(kernel)) - {} -}; - - -//---------------------------------------------------------------------------------------------------------------------- - -#undef __ERR_STR -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_ARG_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_ERR -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR -#undef __SET_PRINTF_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __CL_EXPLICIT_CONSTRUCTORS - -#undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS - -#undef __CL_FUNCTION_TYPE - -// Extensions -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_VERSION_1_1) -#undef __INIT_CL_EXT_FCN_PTR -#endif // #if defined(CL_VERSION_1_1) -#undef __CREATE_SUB_DEVICES - -#if defined(USE_CL_DEVICE_FISSION) -#undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION - -#undef __DEFAULT_NOT_INITIALIZED -#undef __DEFAULT_BEING_INITIALIZED -#undef __DEFAULT_INITIALIZED - -#undef CL_HPP_RVALUE_REFERENCES_SUPPORTED -#undef CL_HPP_NOEXCEPT - -} // namespace cl - -#endif // CL_HPP_ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl2.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl2.hpp deleted file mode 100644 index 50de6e5431b720..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl2.hpp +++ /dev/null @@ -1,9522 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/*! \file - * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33), - * OpenCL 1.2 (rev 15) and OpenCL 2.0 (rev 29) - * \author Lee Howes and Bruce Merry - * - * Derived from the OpenCL 1.x C++ bindings written by - * Benedict R. Gaster, Laurent Morichetti and Lee Howes - * With additions and fixes from: - * Brian Cole, March 3rd 2010 and April 2012 - * Matt Gruenke, April 2012. - * Bruce Merry, February 2013. - * Tom Deakin and Simon McIntosh-Smith, July 2013 - * James Price, June-November 2015 - * - * \version 2.0.8 - * \date 2015-11-03 - * - * Optional extension support - * - * cl_ext_device_fission - * #define CL_HPP_USE_CL_DEVICE_FISSION - * cl_khr_d3d10_sharing - * #define CL_HPP_USE_DX_INTEROP - * cl_khr_sub_groups - * #define CL_HPP_USE_CL_SUB_GROUPS_KHR - */ - -/*! \mainpage - * \section intro Introduction - * For many large applications C++ is the language of choice and so it seems - * reasonable to define C++ bindings for OpenCL. - * - * The interface is contained with a single C++ header file \em cl2.hpp and all - * definitions are contained within the namespace \em cl. There is no additional - * requirement to include \em cl.h and to use either the C++ or original C - * bindings; it is enough to simply include \em cl.hpp. - * - * The bindings themselves are lightweight and correspond closely to the - * underlying C API. Using the C++ bindings introduces no additional execution - * overhead. - * - * There are numerous compatibility, portability and memory management - * fixes in the new header as well as additional OpenCL 2.0 features. - * As a result the header is not directly backward compatible and for this - * reason we release it as cl2.hpp rather than a new version of cl.hpp. - * - * - * \section compatibility Compatibility - * Due to the evolution of the underlying OpenCL API the 2.0 C++ bindings - * include an updated approach to defining supported feature versions - * and the range of valid underlying OpenCL runtime versions supported. - * - * The combination of preprocessor macros CL_HPP_TARGET_OPENCL_VERSION and - * CL_HPP_MINIMUM_OPENCL_VERSION control this range. These are three digit - * decimal values representing OpenCL runime versions. The default for - * the target is 200, representing OpenCL 2.0 and the minimum is also - * defined as 200. These settings would use 2.0 API calls only. - * If backward compatibility with a 1.2 runtime is required, the minimum - * version may be set to 120. - * - * Note that this is a compile-time setting, and so affects linking against - * a particular SDK version rather than the versioning of the loaded runtime. - * - * The earlier versions of the header included basic vector and string - * classes based loosely on STL versions. These were difficult to - * maintain and very rarely used. For the 2.0 header we now assume - * the presence of the standard library unless requested otherwise. - * We use std::array, std::vector, std::shared_ptr and std::string - * throughout to safely manage memory and reduce the chance of a - * recurrance of earlier memory management bugs. - * - * These classes are used through typedefs in the cl namespace: - * cl::array, cl::vector, cl::pointer and cl::string. - * In addition cl::allocate_pointer forwards to std::allocate_shared - * by default. - * In all cases these standard library classes can be replaced with - * custom interface-compatible versions using the CL_HPP_NO_STD_ARRAY, - * CL_HPP_NO_STD_VECTOR, CL_HPP_NO_STD_UNIQUE_PTR and - * CL_HPP_NO_STD_STRING macros. - * - * The OpenCL 1.x versions of the C++ bindings included a size_t wrapper - * class to interface with kernel enqueue. This caused unpleasant interactions - * with the standard size_t declaration and led to namespacing bugs. - * In the 2.0 version we have replaced this with a std::array-based interface. - * However, the old behaviour can be regained for backward compatibility - * using the CL_HPP_ENABLE_SIZE_T_COMPATIBILITY macro. - * - * Finally, the program construction interface used a clumsy vector-of-pairs - * design in the earlier versions. We have replaced that with a cleaner - * vector-of-vectors and vector-of-strings design. However, for backward - * compatibility old behaviour can be regained with the - * CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY macro. - * - * In OpenCL 2.0 OpenCL C is not entirely backward compatibility with - * earlier versions. As a result a flag must be passed to the OpenCL C - * compiled to request OpenCL 2.0 compilation of kernels with 1.2 as - * the default in the absence of the flag. - * In some cases the C++ bindings automatically compile code for ease. - * For those cases the compilation defaults to OpenCL C 2.0. - * If this is not wanted, the CL_HPP_CL_1_2_DEFAULT_BUILD macro may - * be specified to assume 1.2 compilation. - * If more fine-grained decisions on a per-kernel bases are required - * then explicit build operations that take the flag should be used. - * - * - * \section parameterization Parameters - * This header may be parameterized by a set of preprocessor macros. - * CL_HPP_TARGET_OPENCL_VERSION - * - Defines the target OpenCL runtime version to build the header against. - * Defaults to 200, representing OpenCL 2.0. - * CL_HPP_NO_STD_STRING - * - Do not use the standard library string class. - * cl::string is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_VECTOR - * - Do not use the standard library vector class. - * cl::vector is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_ARRAY - * - Do not use the standard library array class. - * cl::array is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_UNIQUE_PTR - * - Do not use the standard library unique_ptr class. - * cl::pointer and the cl::allocate_pointer function are not defined - * and may be defined by the user before cl2.hpp is included. - * CL_HPP_ENABLE_DEVICE_FISSION - * - Enables device fission for OpenCL 1.2 platforms - * CL_HPP_ENABLE_EXCEPTIONS - * - Enable exceptions for use in the C++ bindings header. - * This is the preferred error handling mechanism but is not required. - * CL_HPP_ENABLE_SIZE_T_COMPATIBILITY - * - Backward compatibility option to support cl.hpp-style size_t class. - * Replaces the updated std::array derived version and removal of size_t - * from the namespace. Note that in this case the new size_t class - * is placed in the cl::compatibility namespace and thus requires - * an additional using declaration for direct backward compatibility. - * CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY - * - Enable older vector of pairs interface for construction of programs. - * CL_HPP_CL_1_2_DEFAULT_BUILD - * - Default to OpenCL C 1.2 compilation rather than OpenCL C 2.0 - * - applies to use of cl::Program construction and other program build variants. - * - * - * \section example Example - * - * The following example shows a general use case for the C++ - * bindings, including support for the optional exception feature and - * also the supplied vector and string classes, see following sections for - * decriptions of these features. - * - * \code - #define CL_HPP_ENABLE_EXCEPTIONS - #define CL_HPP_TARGET_OPENCL_VERSION 200 - - #include - #include - #include - #include - #include - - const int numElements = 32; - - int main(void) - { - // Filter for a 2.0 platform and set it as the default - std::vector platforms; - cl::Platform::get(&platforms); - cl::Platform plat; - for (auto &p : platforms) { - std::string platver = p.getInfo(); - if (platver.find("OpenCL 2.") != std::string::npos) { - plat = p; - } - } - if (plat() == 0) { - std::cout << "No OpenCL 2.0 platform found."; - return -1; - } - - cl::Platform newP = cl::Platform::setDefault(plat); - if (newP != plat) { - std::cout << "Error setting default platform."; - return -1; - } - - std::string kernel1{ - "global int globalA;" - "kernel void updateGlobal(){" - " globalA = 75;" - "}"}; - std::string kernel2{ - "typedef struct { global int *bar; } Foo; kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, global int *output, int val, write_only pipe int outPipe, queue_t childQueue){" - " output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar);" - " write_pipe(outPipe, &val);" - " queue_t default_queue = get_default_queue(); " - " ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); " - // Have a child kernel write into third quarter of output - " enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*2 + get_global_id(0)] = inputA[get_global_size(0)*2+get_global_id(0)] + inputB[get_global_size(0)*2+get_global_id(0)] + globalA;" - " });" - // Have a child kernel write into last quarter of output - " enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*3 + get_global_id(0)] = inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2;" - " });" - "}" }; - - // New simpler string interface style - std::vector programStrings {kernel1, kernel2}; - - cl::Program vectorAddProgram( - programStrings); - try { - vectorAddProgram.build("-cl-std=CL2.0"); - } - catch (...) { - // Print build info for all devices - cl_int buildErr = CL_SUCCESS; - auto buildInfo = vectorAddProgram.getBuildInfo(&buildErr); - for (auto &pair : buildInfo) { - std::cerr << pair.second << std::endl << std::endl; - } - - return 1; - } - - typedef struct { int *bar; } Foo; - - // Get and run kernel that initializes the program-scope global - // A test for kernels that take no arguments - auto program2Kernel = - cl::KernelFunctor<>(vectorAddProgram, "updateGlobal"); - program2Kernel( - cl::EnqueueArgs( - cl::NDRange(1))); - - ////////////////// - // SVM allocations - - cl::pointer anSVMInt = cl::allocate_svm>(); - *anSVMInt = 5; - cl::SVMAllocator>> svmAllocReadOnly; - auto fooPointer = cl::allocate_pointer(svmAllocReadOnly); - fooPointer->bar = anSVMInt.get(); - cl::SVMAllocator> svmAlloc; - std::vector>> inputA(numElements, 1, svmAlloc); - cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); - - // - ////////////// - - // Traditional cl_mem allocations - std::vector output(numElements, 0xdeadbeef); - cl::Buffer outputBuffer(begin(output), end(output), false); - cl::Pipe aPipe(sizeof(cl_int), numElements / 2); - - // Default command queue, also passed in as a parameter - cl::DeviceCommandQueue defaultDeviceQueue = cl::DeviceCommandQueue::makeDefault( - cl::Context::getDefault(), cl::Device::getDefault()); - - auto vectorAddKernel = - cl::KernelFunctor< - decltype(fooPointer)&, - int*, - cl::coarse_svm_vector&, - cl::Buffer, - int, - cl::Pipe&, - cl::DeviceCommandQueue - >(vectorAddProgram, "vectorAdd"); - - // Ensure that the additional SVM pointer is available to the kernel - // This one was not passed as a parameter - vectorAddKernel.setSVMPointers(anSVMInt); - - // Hand control of coarse allocations to runtime - cl::enqueueUnmapSVM(anSVMInt); - cl::enqueueUnmapSVM(fooPointer); - cl::unmapSVM(inputB); - cl::unmapSVM(output2); - - cl_int error; - vectorAddKernel( - cl::EnqueueArgs( - cl::NDRange(numElements/2), - cl::NDRange(numElements/2)), - fooPointer, - inputA.data(), - inputB, - outputBuffer, - 3, - aPipe, - defaultDeviceQueue, - error - ); - - cl::copy(outputBuffer, begin(output), end(output)); - // Grab the SVM output vector using a map - cl::mapSVM(output2); - - cl::Device d = cl::Device::getDefault(); - - std::cout << "Output:\n"; - for (int i = 1; i < numElements; ++i) { - std::cout << "\t" << output[i] << "\n"; - } - std::cout << "\n\n"; - - return 0; - } - * - * \endcode - * - */ -#ifndef CL_HPP_ -#define CL_HPP_ - -/* Handle deprecated preprocessor definitions. In each case, we only check for - * the old name if the new name is not defined, so that user code can define - * both and hence work with either version of the bindings. - */ -#if !defined(CL_HPP_USE_DX_INTEROP) && defined(USE_DX_INTEROP) -# pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") -# define CL_HPP_USE_DX_INTEROP -#endif -#if !defined(CL_HPP_USE_CL_DEVICE_FISSION) && defined(USE_CL_DEVICE_FISSION) -# pragma message("cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") -# define CL_HPP_USE_CL_DEVICE_FISSION -#endif -#if !defined(CL_HPP_ENABLE_EXCEPTIONS) && defined(__CL_ENABLE_EXCEPTIONS) -# pragma message("cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") -# define CL_HPP_ENABLE_EXCEPTIONS -#endif -#if !defined(CL_HPP_NO_STD_VECTOR) && defined(__NO_STD_VECTOR) -# pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") -# define CL_HPP_NO_STD_VECTOR -#endif -#if !defined(CL_HPP_NO_STD_STRING) && defined(__NO_STD_STRING) -# pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") -# define CL_HPP_NO_STD_STRING -#endif -#if defined(VECTOR_CLASS) -# pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") -#endif -#if defined(STRING_CLASS) -# pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") -#endif -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) && defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -# pragma message("cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") -# define CL_HPP_USER_OVERRIDE_ERROR_STRINGS -#endif - -/* Warn about features that are no longer supported - */ -#if defined(__USE_DEV_VECTOR) -# pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") -#endif -#if defined(__USE_DEV_STRING) -# pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") -#endif - -/* Detect which version to target */ -#if !defined(CL_HPP_TARGET_OPENCL_VERSION) -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") -# define CL_HPP_TARGET_OPENCL_VERSION 200 -#endif -#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") -# undef CL_HPP_TARGET_OPENCL_VERSION -# define CL_HPP_TARGET_OPENCL_VERSION 200 -#endif - -#if !defined(CL_HPP_MINIMUM_OPENCL_VERSION) -# define CL_HPP_MINIMUM_OPENCL_VERSION 200 -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") -# undef CL_HPP_MINIMUM_OPENCL_VERSION -# define CL_HPP_MINIMUM_OPENCL_VERSION 100 -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION > CL_HPP_TARGET_OPENCL_VERSION -# error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" -#endif - -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_0_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_1_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_2_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_2_0_APIS -#endif - -#ifdef _WIN32 - -#include - -#if defined(CL_HPP_USE_DX_INTEROP) -#include -#include -#endif -#endif // _WIN32 - -#if defined(_MSC_VER) -#include -#endif // _MSC_VER - - // Check for a valid C++ version - -// Need to do both tests here because for some reason __cplusplus is not -// updated in visual studio -#if (!defined(_MSC_VER) && __cplusplus < 201103L) || (defined(_MSC_VER) && _MSC_VER < 1700) -#error Visual studio 2013 or another C++11-supporting compiler required -#endif - -// -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) || defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#include -#endif - -#if defined(__APPLE__) || defined(__MACOSX) -#include -#else -#include -#endif // !__APPLE__ - -#if (__cplusplus >= 201103L) -#define CL_HPP_NOEXCEPT_ noexcept -#else -#define CL_HPP_NOEXCEPT_ -#endif - -#if defined(_MSC_VER) -# define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) -#else -# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) -#endif // !_MSC_VER - -// Define deprecated prefixes and suffixes to ensure compilation -// in case they are not pre-defined -#if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) - -#if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) - -#if !defined(CL_CALLBACK) -#define CL_CALLBACK -#endif //CL_CALLBACK - -#include -#include -#include -#include -#include -#include - - -// Define a size_type to represent a correctly resolved size_t -#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - using size_type = ::size_t; -} // namespace cl -#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - using size_type = size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) - - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -#include -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - -#if !defined(CL_HPP_NO_STD_VECTOR) -#include -namespace cl { - template < class T, class Alloc = std::allocator > - using vector = std::vector; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_VECTOR) - -#if !defined(CL_HPP_NO_STD_STRING) -#include -namespace cl { - using string = std::string; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_STRING) - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -#include -namespace cl { - // Replace unique_ptr and allocate_pointer for internal use - // to allow user to replace them - template - using pointer = std::unique_ptr; -} // namespace cl -#endif -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#if !defined(CL_HPP_NO_STD_ARRAY) -#include -namespace cl { - template < class T, size_type N > - using array = std::array; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_ARRAY) - -// Define size_type appropriately to allow backward-compatibility -// use of the old size_t interface class -#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - namespace compatibility { - /*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ - template - class size_t - { - private: - size_type data_[N]; - - public: - //! \brief Initialize size_t to all 0s - size_t() - { - for (int i = 0; i < N; ++i) { - data_[i] = 0; - } - } - - size_t(const array &rhs) - { - for (int i = 0; i < N; ++i) { - data_[i] = rhs[i]; - } - } - - size_type& operator[](int index) - { - return data_[index]; - } - - const size_type& operator[](int index) const - { - return data_[index]; - } - - //! \brief Conversion operator to T*. - operator size_type* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const size_type* () const { return data_; } - - operator array() const - { - array ret; - - for (int i = 0; i < N; ++i) { - ret[i] = data_[i]; - } - return ret; - } - }; - } // namespace compatibility - - template - using size_t = compatibility::size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) - -// Helper alias to avoid confusing the macros -namespace cl { - namespace detail { - using size_t_array = array; - } // namespace detail -} // namespace cl - - -/*! \namespace cl - * - * \brief The OpenCL C++ bindings are defined within this namespace. - * - */ -namespace cl { - class Memory; - -#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if (!pfn_##name) { \ - } \ - } - -#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if (!pfn_##name) { \ - } \ - } - - class Program; - class Device; - class Context; - class CommandQueue; - class DeviceCommandQueue; - class Memory; - class Buffer; - class Pipe; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - /*! \brief Exception class - * - * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. - */ - class Error : public std::exception - { - private: - cl_int err_; - const char * errStr_; - public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} - - ~Error() throw() {} - - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } - - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } - }; -#define CL_HPP_ERR_STR_(x) #x -#else -#define CL_HPP_ERR_STR_(x) NULL -#endif // CL_HPP_ENABLE_EXCEPTIONS - - -namespace detail -{ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; -} -#else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; -} -#endif // CL_HPP_ENABLE_EXCEPTIONS -} - - - -//! \cond DOXYGEN_DETAIL -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) -#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) - -#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) - -#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) -#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) -#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR CL_HPP_ERR_STR_(clSetMemObjectDestructorCallback) - -#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) - -#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) -#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) -#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) -#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) - -#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) -#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) - - -#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) -#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) -#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) -#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) -#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) - -/** - * CL 1.2 version that uses device fission. - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) -#else -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/** - * Deprecated APIs for 2.0 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) -#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) -#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/** - * CL 1.2 marker and barrier commands - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS -//! \endcond - - -namespace detail { - -// Generic getInfoHelper. The final parameter is used to guide overload -// resolution: the actual parameter passed is an int, which makes this -// a worse conversion sequence than a specialization that declares the -// parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); -} - -// Specialized for getInfo -// Assumes that the output vector was correctly resized on the way in -template -inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Create array of pointers, calculate total size and pass pointer array in - size_type numBinaries = param->size(); - vector binariesPointers(numBinaries); - - size_type totalSize = 0; - for (size_type i = 0; i < numBinaries; ++i) - { - binariesPointers[i] = (*param)[i].data(); - totalSize += (*param)[i].size(); - } - - cl_int err = f(name, totalSize, binariesPointers.data(), NULL); - - if (err != CL_SUCCESS) { - return err; - } - } - - - return CL_SUCCESS; -} - -// Specialized getInfoHelper for vector params -template -inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - const size_type elements = required / sizeof(T); - - // Temporary to avoid changing param on an error - vector localData(elements); - err = f(name, required, localData.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - *param = std::move(localData); - } - - return CL_SUCCESS; -} - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper( - Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - const size_type elements = required / sizeof(typename T::cl_type); - - vector value(elements); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - if (param) { - // Assign to convert CL type to T for each element - param->resize(elements); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < elements; i++) { - (*param)[i] = T(value[i], true); - } - } - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for string params -template -inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - // std::string has a constant data member - // a char vector does not - if (required > 0) { - vector value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(begin(value), prev(end(value))); - } - } - else if (param) { - param->assign(""); - } - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for clsize_t params -template -inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - size_type elements = required / sizeof(size_type); - vector value(elements, 0); - - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - // Bound the copy with N to prevent overruns - // if passed N > than the amount copied - if (elements > N) { - elements = N; - } - for (size_type i = 0; i < elements; ++i) { - (*param)[i] = value[i]; - } - - return CL_SUCCESS; -} - -template struct ReferenceHandler; - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); - if (err != CL_SUCCESS) { - return err; - } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; -} - -#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ - F(cl_platform_info, CL_PLATFORM_VERSION, string) \ - F(cl_platform_info, CL_PLATFORM_NAME, string) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, string) \ - F(cl_device_info, CL_DEVICE_VENDOR, string) \ - F(cl_device_info, CL_DRIVER_VERSION, string) \ - F(cl_device_info, CL_DEVICE_PROFILE, string) \ - F(cl_device_info, CL_DEVICE_VERSION, string) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, size_type) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ - F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ - F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_SOURCE, string) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) - - -#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, size_type) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) - -#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ - \ - F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ - F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) - -#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ - F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ - F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ - F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ - F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) - -#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) - -template -struct param_traits {}; - -#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; - -CL_HPP_PARAM_NAME_INFO_1_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - -// Flags deprecated in OpenCL 2.0 -#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) - -#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) - -#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) - -// Include deprecated query flags based on versions -// Only include deprecated 1.0 flags if 2.0 not active as there is an enum clash -#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && CL_HPP_TARGET_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 -#if CL_HPP_TARGET_OPENCL_VERSION > 110 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#if CL_HPP_TARGET_OPENCL_VERSION > 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 - -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) -CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_); -#endif // CL_HPP_USE_CL_DEVICE_FISSION - -#ifdef CL_PLATFORM_ICD_SUFFIX_KHR -CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, string) -#endif - -#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong) -#endif - -#ifdef CL_DEVICE_GLOBAL_FREE_MEMORY_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, vector) -#endif -#ifdef CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_WAVEFRONT_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WAVEFRONT_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) -#endif - -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint) -#endif -#ifdef CL_DEVICE_WARP_SIZE_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint) -#endif -#ifdef CL_DEVICE_GPU_OVERLAP_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool) -#endif -#ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool) -#endif -#ifdef CL_DEVICE_INTEGRATED_MEMORY_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool) -#endif - -// Convenience functions - -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); -} - -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, param, size, value, size_ret); } -}; - -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } -}; - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); -} - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); -} - - -template -struct ReferenceHandler -{ }; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/** - * OpenCL 1.2 devices do have retain/release. - */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } -}; -#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 -/** - * OpenCL 1.1 devices do not have retain/release. - */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } -}; -#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) - -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } -}; - - -// Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const vector &versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } - ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; -} - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - size_type size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - - vector versionInfo(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); - return getVersion(versionInfo); -} - -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); -} - -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - size_type size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - vector devices(size/sizeof(cl_device_id)); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); - return getDevicePlatformVersion(devices[0]); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - -template -class Wrapper -{ -public: - typedef T cl_type; - -protected: - cl_type object_; - -public: - Wrapper() : object_(NULL) { } - - Wrapper(const cl_type &obj, bool retainObject) : object_(obj) - { - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } - } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - rhs.object_ = NULL; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - if (object_ != nullptr) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; - -protected: - cl_type object_; - bool referenceCountable_; - - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } -#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - retVal = true; -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - return retVal; - } - -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } - - Wrapper(const cl_type &obj, bool retainObject) : - object_(obj), - referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } - } - - ~Wrapper() - { - release(); - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - detail::errHandler(retain(), __RETAIN_ERR); - } - - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); - - cl_int retain() const - { - if( object_ != nullptr && referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr && referenceCountable_) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -template -inline bool operator==(const Wrapper &lhs, const Wrapper &rhs) -{ - return lhs() == rhs(); -} - -template -inline bool operator!=(const Wrapper &lhs, const Wrapper &rhs) -{ - return !operator==(lhs, rhs); -} - -} // namespace detail -//! \endcond - - -using BuildLogType = vector::param_type>>; -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -/** -* Exception class for build errors to carry build info -*/ -class BuildError : public Error -{ -private: - BuildLogType buildLogs; -public: - BuildError(cl_int err, const char * errStr, const BuildLogType &vec) : Error(err, errStr), buildLogs(vec) - { - } - - BuildLogType getBuildLog() const - { - return buildLogs; - } -}; -namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - if (err != CL_SUCCESS) { - throw BuildError(err, errStr, buildLogs); - } - return err; - } -} // namespace detail - -#else -namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - (void)buildLogs; // suppress unused variable warning - (void)errStr; - return err; - } -} // namespace detail -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - - -/*! \stuct ImageFormat - * \brief Adds constructors and member functions for cl_image_format. - * - * \see cl_image_format - */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} - - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } - - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; - } -}; - -/*! \brief Class interface for cl_device_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_device_id - */ -class Device : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Device default_; - static cl_int default_error_; - - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault(); - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Device &p) { - default_ = p; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Device(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } - - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - explicit Device(const cl_device_id &device, bool retainObject = false) : - detail::Wrapper(device, retainObject) { } - - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; - } - - /** - * Modify the default device to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default device. - * Should be compared to the passed value to ensure that it was updated. - */ - static Device setDefault(const Device &default_device) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); - detail::errHandler(default_error_); - return default_; - } - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clCreateSubDevices(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - vector* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - - return CL_SUCCESS; - } -#elif defined(CL_HPP_USE_CL_DEVICE_FISSION) - -/** - * CL 1.1 version that uses device fission extension. - */ - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - vector* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); - - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - return CL_SUCCESS; - } -#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) -}; - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Device Device::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS; - -/*! \brief Class interface for cl_platform_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_platform_id - */ -class Platform : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Platform default_; - static cl_int default_error_; - - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - // If default wasn't passed ,generate one - // Otherwise set it - cl_uint n = 0; - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - if (n == 0) { - default_error_ = CL_INVALID_PLATFORM; - return; - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - - default_ = Platform(ids[0]); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Platform &p) { - default_ = p; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Platform(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } - - /*! \brief Constructor from cl_platform_id. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This simply copies the platform ID value, which is an inexpensive operation. - */ - explicit Platform(const cl_platform_id &platform, bool retainObject = false) : - detail::Wrapper(platform, retainObject) { } - - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - static Platform getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; - } - - /** - * Modify the default platform to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default platform. - * Should be compared to the passed value to ensure that it was updated. - */ - static Platform setDefault(const Platform &default_platform) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, string* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - vector* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; - } - -#if defined(CL_HPP_USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - vector* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); - - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; - } -#endif - - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - vector* platforms) - { - cl_uint n = 0; - - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - if (platforms) { - platforms->resize(ids.size()); - - // Platforms don't reference count - for (size_type i = 0; i < ids.size(); i++) { - (*platforms)[i] = Platform(ids[i]); - } - } - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (platform) { - *platform = default_platform; - } - return err; - } - - /*! \brief Gets the first available platform, returning it by value. - * - * \return Returns a valid platform if one is available. - * If no platform is available will return a null platform. - * Throws an exception if no platforms are available - * or an error condition occurs. - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (errResult) { - *errResult = err; - } - return default_platform; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -}; // class Platform - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Platform Platform::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS; - - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/** - * Unload the OpenCL compiler. - * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/*! \brief Class interface for cl_context. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_context as the original. For details, see - * clRetainContext() and clReleaseContext(). - * - * \see cl_context - */ -class Context - : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Context default_; - static cl_int default_error_; - - /*! \brief Create the default context from the default device type in the default platform. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { -#if !defined(__APPLE__) && !defined(__MACOS) - const Platform &p = Platform::getDefault(); - cl_platform_id defaultPlatform = p(); - cl_context_properties properties[3] = { - CL_CONTEXT_PLATFORM, (cl_context_properties)defaultPlatform, 0 - }; -#else // #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties *properties = nullptr; -#endif // #if !defined(__APPLE__) && !defined(__MACOS) - - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - properties, - NULL, - NULL, - &default_error_); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - - /*! \brief Create the default context from a provided Context. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Context &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Context(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const vector& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs.data(), - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - vector platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - vector devices; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } - - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default context to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default context. - * Should be compared to the passed value to ensure that it was updated. - */ - static Context setDefault(const Context &default_context) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - explicit Context(const cl_context& context, bool retainObject = false) : - detail::Wrapper(context, retainObject) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - vector* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - vector value(numEntries); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(begin(value), end(value)); - } - else { - // If no values are being returned, ensure an empty vector comes back - formats->clear(); - } - - return CL_SUCCESS; - } -}; - -inline void Device::makeDefault() -{ - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - cl_int error = 0; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - default_ = context.getInfo()[0]; - default_error_ = CL_SUCCESS; - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif -} - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Context::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Context Context::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Context::default_error_ = CL_SUCCESS; - -/*! \brief Class interface for cl_event. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_event as the original. For details, see - * clRetainEvent() and clReleaseEvent(). - * - * \see cl_event - */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } - - /*! \brief Constructor from cl_event - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - explicit Event(const cl_event& event, bool retainObject = false) : - detail::Wrapper(event, retainObject) { } - - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } - - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const vector& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -/*! \brief Class interface for user events (a subset of cl_event's). - * - * See Event for details about copy semantics, etc. - */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); - - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } - - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } -}; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -/*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ -inline static cl_int -WaitForEvents(const vector& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); -} - -/*! \brief Class interface for cl_mem. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_mem as the original. For details, see - * clRetainMemObject() and clReleaseMemObject(). - * - * \see cl_mem - */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * Optionally transfer ownership of a refcount on the cl_mem - * into the new Memory object. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * - * See Memory for further details. - */ - explicit Memory(const cl_mem& memory, bool retainObject) : - detail::Wrapper(memory, retainObject) { } - - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } - - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -}; - -// Pre-declare copy functions -class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -namespace detail -{ - class SVMTraitNull - { - public: - static cl_svm_mem_flags getSVMMemFlags() - { - return 0; - } - }; -} // namespace detail - -template -class SVMTraitReadWrite -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_WRITE | - Trait::getSVMMemFlags(); - } -}; - -template -class SVMTraitReadOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_ONLY | - Trait::getSVMMemFlags(); - } -}; - -template -class SVMTraitWriteOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_WRITE_ONLY | - Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitCoarse -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitFine -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_SVM_FINE_GRAIN_BUFFER | - Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitAtomic -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return - CL_MEM_SVM_FINE_GRAIN_BUFFER | - CL_MEM_SVM_ATOMICS | - Trait::getSVMMemFlags(); - } -}; - -// Pre-declare SVM map function -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL); - -/** - * STL-like allocator class for managing SVM objects provided for convenience. - * - * Note that while this behaves like an allocator for the purposes of constructing vectors and similar objects, - * care must be taken when using with smart pointers. - * The allocator should not be used to construct a unique_ptr if we are using coarse-grained SVM mode because - * the coarse-grained management behaviour would behave incorrectly with respect to reference counting. - * - * Instead the allocator embeds a Deleter which may be used with unique_ptr and is used - * with the allocate_shared and allocate_ptr supplied operations. - */ -template -class SVMAllocator { -private: - Context context_; - -public: - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - template - struct rebind - { - typedef SVMAllocator other; - }; - - template - friend class SVMAllocator; - - SVMAllocator() : - context_(Context::getDefault()) - { - } - - explicit SVMAllocator(cl::Context context) : - context_(context) - { - } - - - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } - - template - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } - - ~SVMAllocator() - { - } - - pointer address(reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } - - const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } - - /** - * Allocate an SVM pointer. - * - * If the allocator is coarse-grained, this will take ownership to allow - * containers to correctly construct data in place. - */ - pointer allocate( - size_type size, - typename cl::SVMAllocator::const_pointer = 0) - { - // Allocate memory with default alignment matching the size of the type - void* voidPointer = - clSVMAlloc( - context_(), - SVMTrait::getSVMMemFlags(), - size*sizeof(T), - sizeof(T)); - pointer retValue = reinterpret_cast( - voidPointer); -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - if (!retValue) { - std::bad_alloc excep; - throw excep; - } -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - - // If allocation was coarse-grained then map it - if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { - cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size*sizeof(T)); - if (err != CL_SUCCESS) { - std::bad_alloc excep; - throw excep; - } - } - - // If exceptions disabled, return null pointer from allocator - return retValue; - } - - void deallocate(pointer p, size_type) - { - clSVMFree(context_(), p); - } - - /** - * Return the maximum possible allocation size. - * This is the minimum of the maximum sizes of all devices in the context. - */ - size_type max_size() const CL_HPP_NOEXCEPT_ - { - size_type maxSize = std::numeric_limits::max() / sizeof(T); - - for (Device &d : context_.getInfo()) { - maxSize = std::min( - maxSize, - static_cast(d.getInfo())); - } - - return maxSize; - } - - template< class U, class... Args > - void construct(U* p, Args&&... args) - { - new(p)T(args...); - } - - template< class U > - void destroy(U* p) - { - p->~U(); - } - - /** - * Returns true if the contexts match. - */ - inline bool operator==(SVMAllocator const& rhs) - { - return (context_==rhs.context_); - } - - inline bool operator!=(SVMAllocator const& a) - { - return !operator==(a); - } -}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, copies}); - - -template -class SVMAllocator { -public: - typedef void value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - - template - struct rebind - { - typedef SVMAllocator other; - }; - - template - friend class SVMAllocator; -}; - -#if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -namespace detail -{ - template - class Deleter { - private: - Alloc alloc_; - size_type copies_; - - public: - typedef typename std::allocator_traits::pointer pointer; - - Deleter(const Alloc &alloc, size_type copies) : alloc_{ alloc }, copies_{ copies } - { - } - - void operator()(pointer ptr) const { - Alloc tmpAlloc{ alloc_ }; - std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); - std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); - } - }; -} // namespace detail - -/** - * Allocation operation compatible with std::allocate_ptr. - * Creates a unique_ptr by default. - * This requirement is to ensure that the control block is not - * allocated in memory inaccessible to the host. - */ -template -cl::pointer> allocate_pointer(const Alloc &alloc_, Args&&... args) -{ - Alloc alloc(alloc_); - static const size_t copies = 1; - - // Ensure that creation of the management block and the - // object are dealt with separately such that we only provide a deleter - - T* tmp = std::allocator_traits::allocate(alloc, copies); - if (!tmp) { - std::bad_alloc excep; - throw excep; - } - try { - std::allocator_traits::construct( - alloc, - std::addressof(*tmp), - std::forward(args)...); - - return cl::pointer>(tmp, detail::Deleter{alloc, copies}); - } - catch (std::bad_alloc b) - { - std::allocator_traits::deallocate(alloc, tmp, copies); - throw; - } -} - -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(Args... args) -{ - SVMAllocator alloc; - return cl::allocate_pointer(alloc, args...); -} - -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(const cl::Context &c, Args... args) -{ - SVMAllocator alloc(c); - return cl::allocate_pointer(alloc, args...); -} -#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) - -/*! \brief Vector alias to simplify contruction of coarse-grained SVM containers. - * - */ -template < class T > -using coarse_svm_vector = vector>>; - -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers. -* -*/ -template < class T > -using fine_svm_vector = vector>>; - -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform atomics. -* -*/ -template < class T > -using atomic_svm_vector = vector>>; - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -/*! \brief Class interface for Buffer Memory Objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Buffer : public Memory -{ -public: - - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must be random access. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Buffer(const cl_mem& buffer, bool retainObject = false) : - Memory(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); - - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -}; - -#if defined (CL_HPP_USE_DX_INTEROP) -/*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. - * - * This is provided to facilitate interoperability with Direct3D. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferD3D10 : public Buffer -{ -public: - - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) : pfn_clCreateFromD3D10BufferKHR(nullptr) - { - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); -#elif CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); -#endif - - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : - Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -}; -#endif - -/*! \brief Class interface for GL Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief Class interface for GL Render Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferRenderGL : public Buffer -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferRenderGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief C++ base class for Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image(const cl_mem& image, bool retainObject = false) : - Memory(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } - - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \brief Class interface for 1D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image1D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1D(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - -/*! \class Image1DBuffer - * \brief Image interface for 1D buffer images. - */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DBuffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } - - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - -/*! \class Image1DArray - * \brief Image interface for arrays of 1D images. - */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DArray() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) : - Image(imageArray, retainObject) { } - - - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - - -/*! \brief Class interface for 2D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 2D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from a buffer. - * \note This will share storage with the underlying buffer. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - ImageFormat format, - const Buffer &sourceBuffer, - size_type width, - size_type height, - size_type row_pitch = 0, - cl_int* err = nullptr) - { - cl_int error; - - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, - // Use buffer as input to image - sourceBuffer() - }; - object_ = ::clCreateImage( - context(), - 0, // flags inherited from buffer - &format, - &desc, - nullptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } - } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from an image. - * \note This will share storage with the underlying image but may - * reinterpret the channel order and type. - * - * The image will be created matching with a descriptor matching the source. - * - * \param order is the channel order to reinterpret the image data as. - * The channel order may differ as described in the OpenCL - * 2.0 API specification. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_channel_order order, - const Image &sourceImage, - cl_int* err = nullptr) - { - cl_int error; - - // Descriptor fields have to match source image - size_type sourceWidth = - sourceImage.getImageInfo(); - size_type sourceHeight = - sourceImage.getImageInfo(); - size_type sourceRowPitch = - sourceImage.getImageInfo(); - cl_uint sourceNumMIPLevels = - sourceImage.getImageInfo(); - cl_uint sourceNumSamples = - sourceImage.getImageInfo(); - cl_image_format sourceFormat = - sourceImage.getImageInfo(); - - // Update only the channel order. - // Channel format inherited from source. - sourceFormat.image_channel_order = order; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - sourceWidth, - sourceHeight, - 0, 0, // depth (unused), array size (unused) - sourceRowPitch, - 0, // slice pitch (unused) - sourceNumMIPLevels, - sourceNumSamples, - // Use buffer as input to image - sourceImage() - }; - object_ = ::clCreateImage( - context(), - 0, // flags should be inherited from mem_object - &sourceFormat, - &desc, - nullptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } - } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - //! \brief Default constructor - initializes to NULL. - Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2D(const cl_mem& image2D, bool retainObject = false) : - Image(image2D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - - -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/*! \brief Class interface for GL 2D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } - - } - - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DGL(const cl_mem& image, bool retainObject = false) : - Image2D(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - *c - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } - -} CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \class Image2DArray - * \brief Image interface for arrays of 2D images. - */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type height, - size_type rowPitch, - size_type slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2DArray() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) : Image(imageArray, retainObject) { } - - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - -/*! \brief Class interface for 3D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type depth, - size_type row_pitch = 0, - size_type slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - } - - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3D(const cl_mem& image3D, bool retainObject = false) : - Image(image3D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; - -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/*! \brief Class interface for GL 3D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3DGL(const cl_mem& image, bool retainObject = false) : - Image3D(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -}; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \class ImageGL - * \brief general image interface for GL interop. - * We abstract the 2D and 3D GL images into a single instance here - * that wraps all GL sourced images on the grounds that setup information - * was performed by OpenCL anyway. - */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } - } - - ImageGL() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit ImageGL(const cl_mem& image, bool retainObject = false) : - Image(image, retainObject) { } - - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/*! \brief Class interface for Pipe Memory Objects. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class Pipe : public Memory -{ -public: - - /*! \brief Constructs a Pipe in a specified context. - * - * Wraps clCreatePipe(). - * @param context Context in which to create the pipe. - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - const Context& context, - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; - - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Pipe in a the default context. - * - * Wraps clCreatePipe(). - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Pipe() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Pipe(const cl_mem& pipe, bool retainObject = false) : - Memory(pipe, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Pipe& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe(const Pipe& pipe) : Memory(pipe) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (const Pipe &pipe) - { - Memory::operator=(pipe); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (Pipe &&pipe) - { - Memory::operator=(std::move(pipe)); - return *this; - } - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_pipe_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPipeInfo, object_, name, param), - __GET_PIPE_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_pipe_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; // class Pipe -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -/*! \brief Class interface for cl_sampler. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_sampler as the original. For details, see - * clRetainSampler() and clReleaseSampler(). - * - * \see cl_sampler - */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } - - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_sampler_properties sampler_properties[] = { - CL_SAMPLER_NORMALIZED_COORDS, normalized_coords, - CL_SAMPLER_ADDRESSING_MODE, addressing_mode, - CL_SAMPLER_FILTER_MODE, filter_mode, - 0 }; - object_ = ::clCreateSamplerWithProperties( - context(), - sampler_properties, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - explicit Sampler(const cl_sampler& sampler, bool retainObject = false) : - detail::Wrapper(sampler, retainObject) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -class Program; -class CommandQueue; -class DeviceCommandQueue; -class Kernel; - -//! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_type sizes_[3]; - cl_uint dimensions_; - -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { - sizes_[0] = 0; - sizes_[1] = 0; - sizes_[2] = 0; - } - - //! \brief Constructs one-dimensional range. - NDRange(size_type size0) - : dimensions_(1) - { - sizes_[0] = size0; - sizes_[1] = 1; - sizes_[2] = 1; - } - - //! \brief Constructs two-dimensional range. - NDRange(size_type size0, size_type size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = 1; - } - - //! \brief Constructs three-dimensional range. - NDRange(size_type size0, size_type size1, size_type size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } - - /*! \brief Conversion operator to const size_type *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const size_type*() const { - return sizes_; - } - - //! \brief Queries the number of dimensions in the range. - size_type dimensions() const - { - return dimensions_; - } - - //! \brief Returns the size of the object in bytes based on the - // runtime number of dimensions - size_type size() const - { - return dimensions_*sizeof(size_type); - } - - size_type* get() - { - return sizes_; - } - - const size_type* get() const - { - return sizes_; - } -}; - -//! \brief A zero-dimensional range. -static const NDRange NullRange; - -//! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - size_type size_; -}; - -namespace detail { - -template -struct KernelArgumentHandler; - -// Enable for objects that are not subclasses of memory -// Pointers, constants etc -template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } -}; - -// Enable for subclasses of memory where we want to get a reference to the cl_mem out -// and pass that in for safety -template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(cl_mem); } - static const cl_mem* ptr(const T& value) { return &(value()); } -}; - -// Specialization for DeviceCommandQueue defined later - -template <> -struct KernelArgumentHandler -{ - static size_type size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } -}; - -} -//! \endcond - -/*! Local - * \brief Helper function for generating LocalSpaceArg objects. - */ -inline LocalSpaceArg -Local(size_type size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -/*! \brief Class interface for cl_kernel. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_kernel as the original. For details, see - * clRetainKernel() and clReleaseKernel(). - * - * \see cl_kernel - */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Kernel() { } - - /*! \brief Constructor from cl_kernel - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - explicit Kernel(const cl_kernel& kernel, bool retainObject = false) : - detail::Wrapper(kernel, retainObject) { } - - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) - cl_int getSubGroupInfo(const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type* param) const - { - typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; - static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); - - return detail::errHandler( - pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), - __GET_KERNEL_ARG_INFO_ERR); - } - - template - size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const - { - size_type param; - cl_int result = getSubGroupInfo(dev, name, range, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a shared_ptr type - */ - template - cl_int setArg(cl_uint index, const cl::pointer &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.get()), - __SET_KERNEL_ARGS_ERR); - } - - /*! \brief setArg overload taking a vector type. - */ - template - cl_int setArg(cl_uint index, const cl::vector &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.data()), - __SET_KERNEL_ARGS_ERR); - } - - /*! \brief setArg overload taking a pointer type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr), - __SET_KERNEL_ARGS_ERR); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - /*! \brief setArg overload taking a POD type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } - - cl_int setArg(cl_uint index, size_type size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! - * Specify a vector of SVM pointers that the kernel may access in - * addition to its arguments. - */ - cl_int setSVMPointers(const vector &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } - - /*! - * Specify a std::array of SVM pointers that the kernel may access in - * addition to its arguments. - */ - template - cl_int setSVMPointers(const std::array &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } - - /*! \brief Enable fine-grained system SVM. - * - * \note It is only possible to enable fine-grained system SVM if all devices - * in the context associated with kernel support it. - * - * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. - * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION - * if no devices in the context support fine-grained system SVM. - * - * \see clSetKernelExecInfo - */ - cl_int enableFineGrainedSystemSVM(bool svmEnabled) - { - cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, - sizeof(cl_bool), - &svmEnabled_ - ) - ); - } - - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0, Ts... ts) - { - pointerList[index] = static_cast(t0.get()); - setSVMPointersHelper(ts...); - } - - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0, Ts... ts) - { - pointerList[index] = static_cast(t0); - setSVMPointersHelper(ts...); - } - - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0) - { - pointerList[index] = static_cast(t0.get()); - } - - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0) - { - pointerList[index] = static_cast(t0); - } - - template - cl_int setSVMPointers(const T0 &t0, Ts... ts) - { - std::array pointerList; - - setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*(1 + sizeof...(Ts)), - pointerList.data())); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -}; - -/*! \class Program - * \brief Program interface that implements cl_program. - */ -class Program : public detail::Wrapper -{ -public: -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector> Binaries; - typedef vector Sources; -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector > Binaries; - typedef vector > Sources; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - Program( - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const size_type length = source.size(); - - Context context = Context::getDefault(err); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, -#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", -#else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); - - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const size_type length = source.size(); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - error = ::clBuildProgram( - object_, - 0, - NULL, -#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", -#else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); - - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } - } - - /** - * Create a program from a vector of source strings and the default context. - * Does not compile or link the program. - */ - Program( - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - Context context = Context::getDefault(err); - - const size_type n = (size_type)sources.size(); - - vector lengths(n); - vector strings(n); - - for (size_type i = 0; i < n; ++i) { -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Create a program from a vector of source strings and a provided context. - * Does not compile or link the program. - */ - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - - const size_type n = (size_type)sources.size(); - - vector lengths(n); - vector strings(n); - - for (size_type i = 0; i < n; ++i) { -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const vector& devices, - const Binaries& binaries, - vector* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; - - const size_type numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - - vector lengths(numDevices); - vector images(numDevices); -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = binaries[i].data(); - lengths[i] = binaries[(int)i].size(); - } -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs.data(), - lengths.data(), images.data(), (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - } - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const vector& devices, - const string& kernelNames, - cl_int* err = NULL) - { - cl_int error; - - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs.data(), - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - Program() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit Program(const cl_program& program, bool retainObject = false) : - detail::Wrapper(program, retainObject) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } - - cl_int build( - const vector& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - cl_int buildError = ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs.data(), - options, - notifyFptr, - data); - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int buildError = ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data); - - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int error = ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data); - return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, getBuildInfo()); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * Build info function that returns a vector of device/info pairs for the specified - * info type and for all devices in the program. - * On an error reading the info for any device, an empty vector of info will be returned. - */ - template - vector::param_type>> - getBuildInfo(cl_int *err = NULL) const - { - cl_int result = CL_SUCCESS; - - auto devs = getInfo(&result); - vector::param_type>> - devInfo; - - // If there was an initial error from getInfo return the error - if (result != CL_SUCCESS) { - if (err != NULL) { - *err = result; - } - return devInfo; - } - - for (cl::Device d : devs) { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - result = getBuildInfo(d, name, ¶m); - devInfo.push_back( - std::pair::param_type> - (d, param)); - if (result != CL_SUCCESS) { - // On error, leave the loop and return the error code - break; - } - } - if (err != NULL) { - *err = result; - } - if (result != CL_SUCCESS) { - devInfo.clear(); - } - return devInfo; - } - - cl_int createKernels(vector* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - vector value(numKernels); - - err = ::clCreateKernelsInProgram( - object_, numKernels, value.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - if (kernels) { - kernels->resize(value.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < value.size(); i++) { - // We do not need to retain because this kernel is being created - // by the runtime - (*kernels)[i] = Kernel(value[i], false); - } - } - return CL_SUCCESS; - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program programs[2] = { input1(), input2() }; - - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} - -inline Program linkProgram( - vector inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - vector programs(inputPrograms.size()); - - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } - - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs.data(), - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog, false); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -// Template specialization for CL_PROGRAM_BINARIES -template <> -inline cl_int cl::Program::getInfo(cl_program_info name, vector>* param) const -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Resize the parameter array appropriately for each allocation - // and pass down to the helper - - vector sizes = getInfo(); - size_type numBinaries = sizes.size(); - - // Resize the parameter array and constituent arrays - param->resize(numBinaries); - for (int i = 0; i < numBinaries; ++i) { - (*param)[i].resize(sizes[i]); - } - - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - return CL_SUCCESS; -} - -template<> -inline vector> cl::Program::getInfo(cl_int* err) const -{ - vector> binariesVectors; - - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); - if (err != NULL) { - *err = result; - } - return binariesVectors; -} - -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; - - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } - -} - -enum class QueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, - OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, -}; - -inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); -} - -/*! \class CommandQueue - * \brief CommandQueue interface for cl_command_queue. - */ -class CommandQueue : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static CommandQueue default_; - static cl_int default_error_; - - /*! \brief Create the default command queue returned by @ref getDefault. - * - * It sets default_error_ to indicate success or failure. It does not throw - * @c cl::Error. - */ - static void makeDefault() - { - /* We don't want to throw an error from this function, so we have to - * catch and set the error flag. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - int error; - Context context = Context::getDefault(&error); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - Device device = Device::getDefault(); - default_ = CommandQueue(context, device, 0, &default_error_); - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default command queue. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const CommandQueue &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = CommandQueue(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - static CommandQueue getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); -#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default command queue to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default command queue. - * Should be compared to the passed value to ensure that it was updated. - */ - static CommandQueue setDefault(const CommandQueue &default_queue) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); - detail::errHandler(default_error_); - return default_; - } - - CommandQueue() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified as a vector type. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - * \tparam offset Is the offset in bytes into the buffer at - * which to start filling. This must be a multiple of - * the pattern size. - * \tparam size Is the size in bytes of the region to fill. - * This must be a multiple of the pattern size. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, - src(), - dst(), - src_origin.data(), - region.data(), - dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, - src(), - dst(), - src_offset, - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const array& origin, - const array& region, - size_type * row_pitch, - size_type * slice_pitch, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - origin.data(), - region.data(), - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(ptr), size, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueMapSVM( - cl::pointer &ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(ptr.get()), size, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueMapSVM( - cl::vector &container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(container.data()), container.size(), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr.get()), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(container.data()), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const vector *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const vector *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const vector &memObjects, - cl_mem_migration_flags flags, - const vector* events = NULL, - Event* event = NULL - ) - { - cl_event tmp; - - vector localMemObjects(memObjects.size()); - - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } - - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - localMemObjects.data(), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const size_type*) offset : NULL, - (const size_type*) global, - local.dimensions() != 0 ? (const size_type*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask( - const Kernel& kernel, - const vector* events = NULL, - Event* event = NULL) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const vector* mem_objects = NULL, - const vector* mem_locs = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - size_type elements = 0; - if (mem_objects != NULL) { - elements = mem_objects->size(); - } - vector mems(elements); - for (unsigned int i = 0; i < elements; i++) { - mems[i] = ((*mem_objects)[i])(); - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems.data(), - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const vector& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - - cl_int enqueueAcquireGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined (CL_HPP_USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); - - cl_int enqueueAcquireD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); -#endif -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); -#endif - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } - - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; // CommandQueue - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag CommandQueue::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ CommandQueue CommandQueue::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int CommandQueue::default_error_ = CL_SUCCESS; - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -enum class DeviceQueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, -}; - -inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); -} - -/*! \class DeviceCommandQueue - * \brief DeviceCommandQueue interface for device cl_command_queues. - */ -class DeviceCommandQueue : public detail::Wrapper -{ -public: - - /*! - * Trivial empty constructor to create a null queue. - */ - DeviceCommandQueue() { } - - /*! - * Default construct device command queue on default context and device - */ - DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - cl_uint queueSize, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, - CL_QUEUE_SIZE, queueSize, - 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_command_queue - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - DeviceCommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (const DeviceCommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (DeviceCommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! - * Create a new default device command queue for the default device, - * in the default context and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - cl_int *err = nullptr) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the requested size in bytes. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_uint queueSize, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - CL_QUEUE_SIZE, queueSize, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } -}; // DeviceCommandQueue - -namespace detail -{ - // Specialization for device command queue - template <> - struct KernelArgumentHandler - { - static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } - static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } - }; -} // namespace detail - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; -} - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events, - Event* event) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); -} - -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ -template -inline cl_int enqueueMapSVM( - cl::pointer ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); -} - -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ -template -inline cl_int enqueueMapSVM( - cl::vector container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - container, blocking, flags, events, event); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; -} - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ -template -inline cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - -} - -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ -template -inline cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); -} - -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ -template -inline cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, startIterator, endIterator, buffer); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, buffer, startIterator, endIterator); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } -#if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); -#else - std::copy(startIterator, endIterator, pointer); -#endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Blocking SVM map operation - performs a blocking map underneath. - */ -template -inline cl_int mapSVM(cl::vector &container) -{ - return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); -} - -/** -* Blocking SVM map operation - performs a blocking map underneath. -*/ -template -inline cl_int unmapSVM(cl::vector &container) -{ - return enqueueUnmapSVM(container); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); -} - -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); -} - -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); -} - - -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.flush(); -} - -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - - return queue.finish(); -} - -class EnqueueArgs -{ -private: - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - vector events_; - - template - friend class KernelFunctor; - -public: - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(const vector &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(const vector &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } -}; - - -//---------------------------------------------------------------------------------------------- - - -/** - * Type safe kernel functor. - * - */ -template -class KernelFunctor -{ -private: - Kernel kernel_; - - template - void setArgs(T0&& t0, T1s&&... t1s) - { - kernel_.setArg(index, t0); - setArgs(std::forward(t1s)...); - } - - template - void setArgs(T0&& t0) - { - kernel_.setArg(index, t0); - } - - template - void setArgs() - { - } - - -public: - KernelFunctor(Kernel kernel) : kernel_(kernel) - {} - - KernelFunctor( - const Program& program, - const string name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} - - //! \brief Return type of the functor - typedef Event result_type; - - /** - * Enqueue kernel. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts) - { - Event event; - setArgs<0>(std::forward(ts)...); - - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - - /** - * Enqueue kernel with support for error code. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - * @param error Out parameter returning the error code from the execution. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts, - cl_int &error) - { - Event event; - setArgs<0>(std::forward(ts)...); - - error = args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int setSVMPointers(const vector &pointerList) - { - return kernel_.setSVMPointers(pointerList); - } - - template - cl_int setSVMPointers(const T0 &t0, T1s... ts) - { - return kernel_.setSVMPointers(t0, ts...); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - Kernel getKernel() - { - return kernel_; - } -}; - -namespace compatibility { - /** - * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. - * Please use KernelFunctor directly. - */ - template - struct make_kernel - { - typedef KernelFunctor FunctorType; - - FunctorType functor_; - - make_kernel( - const Program& program, - const string name, - cl_int * err = NULL) : - functor_(FunctorType(program, name, err)) - {} - - make_kernel( - const Kernel kernel) : - functor_(FunctorType(kernel)) - {} - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - Ts...); - - Event operator()( - const EnqueueArgs& enqueueArgs, - Ts... args) - { - return functor_( - enqueueArgs, args...); - } - }; -} // namespace compatibility - - -//---------------------------------------------------------------------------------------------------------------------- - -#undef CL_HPP_ERR_STR_ -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_ARG_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_ERR -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR -#undef __SET_PRINTF_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __UNLOAD_COMPILER_ERR -#undef __CREATE_SUB_DEVICES_ERR - -#undef __CREATE_PIPE_ERR -#undef __GET_PIPE_INFO_ERR - -#endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS - -// Extensions -#undef CL_HPP_INIT_CL_EXT_FCN_PTR_ -#undef CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_ - -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) -#undef CL_HPP_PARAM_NAME_DEVICE_FISSION_ -#endif // CL_HPP_USE_CL_DEVICE_FISSION - -#undef CL_HPP_NOEXCEPT_ -#undef CL_HPP_DEFINE_STATIC_MEMBER_ - -} // namespace cl - -#endif // CL_HPP_ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_d3d10.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_d3d10.h deleted file mode 100644 index d5960a43f72123..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_d3d10.h +++ /dev/null @@ -1,131 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_D3D10_H -#define __OPENCL_CL_D3D10_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** - * cl_khr_d3d10_sharing */ -#define cl_khr_d3d10_sharing 1 - -typedef cl_uint cl_d3d10_device_source_khr; -typedef cl_uint cl_d3d10_device_set_khr; - -/******************************************************************************/ - -/* Error Codes */ -#define CL_INVALID_D3D10_DEVICE_KHR -1002 -#define CL_INVALID_D3D10_RESOURCE_KHR -1003 -#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 -#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 - -/* cl_d3d10_device_source_nv */ -#define CL_D3D10_DEVICE_KHR 0x4010 -#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 - -/* cl_d3d10_device_set_nv */ -#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 -#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 - -/* cl_context_info */ -#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 -#define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C - -/* cl_mem_info */ -#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 - -/* cl_image_info */ -#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 -#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_D3D10_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_d3d11.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_d3d11.h deleted file mode 100644 index 6fe593efd57466..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_d3d11.h +++ /dev/null @@ -1,136 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_D3D11_H -#define __OPENCL_CL_D3D11_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** - * cl_khr_d3d11_sharing */ -#define cl_khr_d3d11_sharing 1 - -typedef cl_uint cl_d3d11_device_source_khr; -typedef cl_uint cl_d3d11_device_set_khr; - -/******************************************************************************/ - -/* Error Codes */ -#define CL_INVALID_D3D11_DEVICE_KHR -1006 -#define CL_INVALID_D3D11_RESOURCE_KHR -1007 -#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 -#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 - -/* cl_d3d11_device_source */ -#define CL_D3D11_DEVICE_KHR 0x4019 -#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A - -/* cl_d3d11_device_set */ -#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B -#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C - -/* cl_context_info */ -#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D -#define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D - -/* cl_mem_info */ -#define CL_MEM_D3D11_RESOURCE_KHR 0x401E - -/* cl_image_info */ -#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 -#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 - -// object types - -#define CL_D3D11_OBJECT_BUFFER 0x3000 -#define CL_D3D11_OBJECT_TEXTURE2D 0x3001 -#define CL_D3D11_OBJECT_TEXTURE3D 0x3003 -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)( - cl_platform_id platform, - cl_d3d11_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_D3D11_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_dx9_media_sharing.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_dx9_media_sharing.h deleted file mode 100644 index e8ec96e04f2164..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_dx9_media_sharing.h +++ /dev/null @@ -1,132 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_H -#define __OPENCL_CL_DX9_MEDIA_SHARING_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************/ -/* cl_khr_dx9_media_sharing */ -#define cl_khr_dx9_media_sharing 1 - -typedef cl_uint cl_dx9_media_adapter_type_khr; -typedef cl_uint cl_dx9_media_adapter_set_khr; - -#if defined(_WIN32) -#include -typedef struct _cl_dx9_surface_info_khr -{ - IDirect3DSurface9 *resource; - HANDLE shared_handle; -} cl_dx9_surface_info_khr; -#endif - - -/******************************************************************************/ - -/* Error Codes */ -#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 -#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 -#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 -#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 - -/* cl_media_adapter_type_khr */ -#define CL_ADAPTER_D3D9_KHR 0x2020 -#define CL_ADAPTER_D3D9EX_KHR 0x2021 -#define CL_ADAPTER_DXVA_KHR 0x2022 - -/* cl_media_adapter_set_khr */ -#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 -#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 - -/* cl_context_info */ -#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 -#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 -#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 - -/* cl_mem_info */ -#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 -#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 - -/* cl_image_info */ -#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B -#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapter_type, - void * media_adapters[], - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_egl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_egl.h deleted file mode 100644 index d9cf721d836d12..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_egl.h +++ /dev/null @@ -1,138 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -#ifndef __OPENCL_CL_EGL_H -#define __OPENCL_CL_EGL_H - -#ifdef __APPLE__ - -#else -#include -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Command type for events created with clEnqueueAcquireEGLObjectsKHR */ -#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F -#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D -#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E - -/* Error type for clCreateFromEGLImageKHR */ -#define CL_INVALID_EGL_OBJECT_KHR -1093 -#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 - -/* CLeglImageKHR is an opaque handle to an EGLImage */ -typedef void* CLeglImageKHR; - -/* CLeglDisplayKHR is an opaque handle to an EGLDisplay */ -typedef void* CLeglDisplayKHR; - -/* CLeglSyncKHR is an opaque handle to an EGLSync object */ -typedef void* CLeglSyncKHR; - -/* properties passed to clCreateFromEGLImageKHR */ -typedef intptr_t cl_egl_image_properties_khr; - - -#define cl_khr_egl_image 1 - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromEGLImageKHR(cl_context /* context */, - CLeglDisplayKHR /* egldisplay */, - CLeglImageKHR /* eglimage */, - cl_mem_flags /* flags */, - const cl_egl_image_properties_khr * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)( - cl_context context, - CLeglDisplayKHR egldisplay, - CLeglImageKHR eglimage, - cl_mem_flags flags, - const cl_egl_image_properties_khr * properties, - cl_int * errcode_ret); - - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); - - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); - - -#define cl_khr_egl_event 1 - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromEGLSyncKHR(cl_context /* context */, - CLeglSyncKHR /* sync */, - CLeglDisplayKHR /* display */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)( - cl_context context, - CLeglSyncKHR sync, - CLeglDisplayKHR display, - cl_int * errcode_ret); - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_EGL_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_ext.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_ext.h deleted file mode 100644 index a413c9a617008d..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_ext.h +++ /dev/null @@ -1,606 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11928 $ on $Date: 2010-07-13 09:04:56 -0700 (Tue, 13 Jul 2010) $ */ - -/* cl_ext.h contains OpenCL extensions which don't have external */ -/* (OpenGL, D3D) dependencies. */ - -#ifndef __CL_EXT_H -#define __CL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - #include - #include -#else - #include -#endif - -/* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 - -/* Memory object destruction - * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR - * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. - * - * The application may not call CL api's with the cl_mem object passed to the pfn_notify. - * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - */ -#define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */, - void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - - -/* Context Logging Functions - * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - * - * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger - */ -#define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - - -/************************ -* cl_khr_icd extension * -************************/ -#define cl_khr_icd 1 - -/* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 - -/* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 - -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( - cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); - - -/* Extension: cl_khr_image2D_buffer - * - * This extension allows a 2D image to be created from a cl_mem buffer without a copy. - * The type associated with a 2D image created from a buffer in an OpenCL program is image2d_t. - * Both the sampler and sampler-less read_image built-in functions are supported for 2D images - * and 2D images created from a buffer. Similarly, the write_image built-ins are also supported - * for 2D images created from a buffer. - * - * When the 2D image from buffer is created, the client must specify the width, - * height, image format (i.e. channel order and channel data type) and optionally the row pitch - * - * The pitch specified must be a multiple of CL_DEVICE_IMAGE_PITCH_ALIGNMENT pixels. - * The base address of the buffer must be aligned to CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT pixels. - */ - -/************************************* - * cl_khr_initalize_memory extension * - *************************************/ - -#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 - - -/************************************** - * cl_khr_terminate_context extension * - **************************************/ - -#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 -#define CL_CONTEXT_TERMINATE_KHR 0x2032 - -#define cl_khr_terminate_context 1 -extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clTerminateContextKHR_fn)(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; - - -/* - * Extension: cl_khr_spir - * - * This extension adds support to create an OpenCL program object from a - * Standard Portable Intermediate Representation (SPIR) instance - */ - -#define CL_DEVICE_SPIR_VERSIONS 0x40E0 -#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 - - -/****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ -/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 - -/********************************* -* cl_amd_device_attribute_query * -*********************************/ -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 - -/********************************* -* cl_arm_printf extension -*********************************/ -#define CL_PRINTF_CALLBACK_ARM 0x40B0 -#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 - -#ifdef _WIN32 -#if defined CL_DX9_MEDIA_SHARING_INTEL_EXT - -#include -#include -#include -#include - -/******************************************************************************/ -/* cl_intel_dx9_media_sharing extension */ -#define cl_intel_dx9_media_sharing 1 - -typedef cl_uint cl_dx9_device_source_intel; -typedef cl_uint cl_dx9_device_set_intel; - -/******************************************************************************/ - -// Error Codes -#define CL_INVALID_DX9_DEVICE_INTEL -1010 -#define CL_INVALID_DX9_RESOURCE_INTEL -1011 -#define CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL -1012 -#define CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL -1013 - -// cl_dx9_device_source_intel -#define CL_D3D9_DEVICE_INTEL 0x4022 -#define CL_D3D9EX_DEVICE_INTEL 0x4070 -#define CL_DXVA_DEVICE_INTEL 0x4071 - -// cl_dx9_device_set_intel -#define CL_PREFERRED_DEVICES_FOR_DX9_INTEL 0x4024 -#define CL_ALL_DEVICES_FOR_DX9_INTEL 0x4025 - -// cl_context_info -#define CL_CONTEXT_D3D9_DEVICE_INTEL 0x4026 -#define CL_CONTEXT_D3D9EX_DEVICE_INTEL 0x4072 -#define CL_CONTEXT_DXVA_DEVICE_INTEL 0x4073 - -// cl_mem_info -#define CL_MEM_DX9_RESOURCE_INTEL 0x4027 -#define CL_MEM_DX9_SHARED_HANDLE_INTEL 0x4074 - -// cl_image_info -#define CL_IMAGE_DX9_PLANE_INTEL 0x4075 - -// cl_command_type -#define CL_COMMAND_ACQUIRE_DX9_OBJECTS_INTEL 0x402A -#define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B - -//packed YUV channel order -#define CL_YUYV_INTEL 0x4076 -#define CL_UYVY_INTEL 0x4077 -#define CL_YVYU_INTEL 0x4078 -#define CL_VYUY_INTEL 0x4079 - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL* clGetDeviceIDsFromDX9INTEL_fn)( - cl_platform_id /*platform*/, - cl_dx9_device_source_intel /*dx9_device_source*/, - void* /*dx9_object*/, - cl_dx9_device_set_intel /*dx9_device_set*/, - cl_uint /*num_entries*/, - cl_device_id* /*devices*/, - cl_uint* /*num_devices*/); - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceINTEL_fn)( - cl_context /*context*/, - cl_mem_flags /*flags*/, - IDirect3DSurface9 * /*resource*/, - HANDLE /*sharedHandle*/, - UINT /*plane*/, - cl_int * /*errcode_ret*/); - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9ObjectsINTEL_fn)( - cl_command_queue /*command_queue*/, - cl_uint /*num_objects*/, - const cl_mem * /*mem_objects*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/); - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9ObjectsINTEL_fn)( - cl_command_queue /*command_queue*/, - cl_uint /*num_objects*/, - cl_mem * /*mem_objects*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/); - -#endif // CL_DX9_MEDIA_SHARING_INTEL_EXT -#endif - -/********************************* -* cl_intel_accelerator extension * -*********************************/ -#define cl_intel_accelerator 1 -#define cl_intel_motion_estimation 1 - -typedef struct _cl_accelerator_intel* cl_accelerator_intel; -typedef cl_uint cl_accelerator_type_intel; -typedef cl_uint cl_accelerator_info_intel; - -typedef struct _cl_motion_estimation_desc_intel { - cl_uint mb_block_type; - cl_uint subpixel_mode; - cl_uint sad_adjust_mode; - cl_uint search_path_type; -} cl_motion_estimation_desc_intel; - -/* Error Codes */ -#define CL_INVALID_ACCELERATOR_INTEL -1094 -#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095 -#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096 -#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 - -/* Deprecated Error Codes */ -#define CL_INVALID_ACCELERATOR_INTEL_DEPRECATED -6000 -#define CL_INVALID_ACCELERATOR_TYPE_INTEL_DEPRECATED -6001 -#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL_DEPRECATED -6002 -#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL_DEPRECATED -6003 - -/* cl_accelerator_type_intel */ -#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0 - -/* cl_accelerator_info_intel */ -#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090 -#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091 -#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092 -#define CL_ACCELERATOR_TYPE_INTEL 0x4093 - -/*cl_motion_detect_desc_intel flags */ -#define CL_ME_MB_TYPE_16x16_INTEL 0x0 -#define CL_ME_MB_TYPE_8x8_INTEL 0x1 -#define CL_ME_MB_TYPE_4x4_INTEL 0x2 - -#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 -#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 -#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2 - -#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 -#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1 - -#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0 -#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1 -#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5 - -extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL -clCreateAcceleratorINTEL( - cl_context /* context */, - cl_accelerator_type_intel /* accelerator_type */, - size_t /* descriptor_size */, - const void* /* descriptor */, - cl_int* /* errcode_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_accelerator_intel - (CL_API_CALL *clCreateAcceleratorINTEL_fn)( - cl_context /* context */, - cl_accelerator_type_intel /* accelerator_type */, - size_t /* descriptor_size */, - const void* /* descriptor */, - cl_int* /* errcode_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetAcceleratorInfoINTEL -( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetAcceleratorInfoINTEL -( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clSetAcceleratorInfoINTEL_fn)( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainAcceleratorINTEL( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainAcceleratorINTEL_fn)( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseAcceleratorINTEL( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseAcceleratorINTEL_fn)( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -#ifdef CL_VERSION_1_1 - /*********************************** - * cl_ext_device_fission extension * - ***********************************/ - #define cl_ext_device_fission 1 - - extern CL_API_ENTRY cl_int CL_API_CALL - clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - extern CL_API_ENTRY cl_int CL_API_CALL - clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef cl_ulong cl_device_partition_property_ext; - extern CL_API_ENTRY cl_int CL_API_CALL - clCreateSubDevicesEXT( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - /* cl_device_partition_property_ext */ - #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 - #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 - #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 - #define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 - #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 - - /* clDeviceGetInfo selectors */ - #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 - #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 - #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 - #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 - #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 - - /* error codes */ - #define CL_DEVICE_PARTITION_FAILED_EXT -1057 - #define CL_INVALID_PARTITION_COUNT_EXT -1058 - #define CL_INVALID_PARTITION_NAME_EXT -1059 - - /* CL_AFFINITY_DOMAINs */ - #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 - #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 - #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 - #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 - #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 - #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 - - /* cl_device_partition_property_ext list terminators */ - #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) - #define CL_PARTITION_BY_NAMES_LIST_END_INTEL ((cl_device_partition_property_ext) 0 - 1) - - #define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (1 << 31) - - -/********************************* -* cl_qcom_ext_host_ptr extension -*********************************/ - -#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) - -#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 -#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 -#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 -#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 -#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 -#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 -#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 -#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 - -typedef cl_uint cl_image_pitch_info_qcom; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceImageInfoQCOM(cl_device_id device, - size_t image_width, - size_t image_height, - const cl_image_format *image_format, - cl_image_pitch_info_qcom param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret); - -typedef struct _cl_mem_ext_host_ptr -{ - /* Type of external memory allocation. */ - /* Legal values will be defined in layered extensions. */ - cl_uint allocation_type; - - /* Host cache policy for this external memory allocation. */ - cl_uint host_cache_policy; - -} cl_mem_ext_host_ptr; - -/********************************* -* cl_qcom_ion_host_ptr extension -*********************************/ - -#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 - -typedef struct _cl_mem_ion_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ - cl_mem_ext_host_ptr ext_host_ptr; - - /* ION file descriptor */ - int ion_filedesc; - - /* Host pointer to the ION allocated memory */ - void* ion_hostptr; - -} cl_mem_ion_host_ptr; - -#endif /* CL_VERSION_1_1 */ - - -#ifdef CL_VERSION_2_0 -/********************************* -* cl_khr_sub_groups extension -*********************************/ -#define cl_khr_sub_groups 1 - -//typedef cl_uint cl_kernel_sub_group_info; - -/* cl_khr_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0; - -typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0; -#endif /* CL_VERSION_2_0 */ - -#ifdef CL_VERSION_2_1 -/********************************* -* cl_khr_priority_hints extension -*********************************/ -#define cl_khr_priority_hints 1 - -typedef cl_uint cl_queue_priority_khr; - -/* cl_command_queue_properties */ -#define CL_QUEUE_PRIORITY_KHR 0x1096 - -/* cl_queue_priority_khr */ -#define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0) -#define CL_QUEUE_PRIORITY_MED_KHR (1<<1) -#define CL_QUEUE_PRIORITY_LOW_KHR (1<<2) - -#endif /* CL_VERSION_2_1 */ - -#ifdef CL_VERSION_2_1 -/********************************* -* cl_khr_throttle_hints extension -*********************************/ -#define cl_khr_throttle_hints 1 - -typedef cl_uint cl_queue_throttle_khr; - -/* cl_command_queue_properties */ -#define CL_QUEUE_THROTTLE_KHR 0x1097 - -/* cl_queue_throttle_khr */ -#define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0) -#define CL_QUEUE_THROTTLE_MED_KHR (1<<1) -#define CL_QUEUE_THROTTLE_LOW_KHR (1<<2) - -#endif /* CL_VERSION_2_1 */ - -#ifdef __cplusplus -} -#endif - - -#endif /* __CL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_gl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_gl.h deleted file mode 100644 index 945daa83d7f712..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_gl.h +++ /dev/null @@ -1,167 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -#ifndef __OPENCL_CL_GL_H -#define __OPENCL_CL_GL_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; -typedef struct __GLsync *cl_GLsync; - -/* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 -#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E -#define CL_GL_OBJECT_TEXTURE1D 0x200F -#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 -#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 - -/* cl_gl_texture_info */ -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 -#define CL_GL_NUM_SAMPLES 0x2012 - - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* bufobj */, - int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* renderbuffer */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem /* memobj */, - cl_gl_object_type * /* gl_object_type */, - cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem /* memobj */, - cl_gl_texture_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - - -/* Deprecated OpenCL 1.1 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -/* cl_khr_gl_sharing extension */ - -#define cl_khr_gl_sharing 1 - -typedef cl_uint cl_gl_context_info; - -/* Additional Error Codes */ -#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 - -/* cl_gl_context_info */ -#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 -#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 - -/* Additional cl_context_properties */ -#define CL_GL_CONTEXT_KHR 0x2008 -#define CL_EGL_DISPLAY_KHR 0x2009 -#define CL_GLX_DISPLAY_KHR 0x200A -#define CL_WGL_HDC_KHR 0x200B -#define CL_CGL_SHAREGROUP_KHR 0x200C - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * /* properties */, - cl_gl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret); - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_GL_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_gl_ext.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_gl_ext.h deleted file mode 100644 index e3c14c6408c441..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_gl_ext.h +++ /dev/null @@ -1,74 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -/* cl_gl_ext.h contains vendor (non-KHR) OpenCL extensions which have */ -/* OpenGL dependencies. */ - -#ifndef __OPENCL_CL_GL_EXT_H -#define __OPENCL_CL_GL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - #include -#else - #include -#endif - -/* - * For each extension, follow this template - * cl_VEN_extname extension */ -/* #define cl_VEN_extname 1 - * ... define new types, if any - * ... define new tokens, if any - * ... define new APIs, if any - * - * If you need GLtypes here, mirror them with a cl_GLtype, rather than including a GL header - * This allows us to avoid having to decide whether to include GL headers or GLES here. - */ - -/* - * cl_khr_gl_event extension - * See section 9.9 in the OpenCL 1.1 spec for more information - */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context /* context */, - cl_GLsync /* cl_GLsync */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_intel_planar_yuv.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_intel_planar_yuv.h deleted file mode 100644 index b470b074e260c3..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_intel_planar_yuv.h +++ /dev/null @@ -1,50 +0,0 @@ -/*****************************************************************************\ - -Copyright 2016 Intel Corporation All Rights Reserved. - -The source code contained or described herein and all documents related to -the source code ("Material") are owned by Intel Corporation or its suppliers -or licensors. Title to the Material remains with Intel Corporation or its -suppliers and licensors. The Material contains trade secrets and proprietary -and confidential information of Intel or its suppliers and licensors. The -Material is protected by worldwide copyright and trade secret laws and -treaty provisions. No part of the Material may be used, copied, reproduced, -modified, published, uploaded, posted, transmitted, distributed, or -disclosed in any way without Intel's prior express written permission. - -No license under any patent, copyright, trade secret or other intellectual -property right is granted to or conferred upon you by disclosure or delivery -of the Materials, either expressly, by implication, inducement, estoppel or -otherwise. Any license under such intellectual property rights must be -express and approved by Intel in writing. - -File Name: cl_intel_planar_yuv.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __CL_EXT_INTEL_PLANAR_YUV_H -#define __CL_EXT_INTEL_PLANAR_YUV_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/*************************************** -* cl_intel_planar_yuv extension * -****************************************/ -#define CL_NV12_INTEL 0x410E - -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) - -#ifdef __cplusplus -} -#endif - - -#endif /* __CL_EXT_INTEL_PLANAR_YUV_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_intel_planar_yuv.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_intel_planar_yuv.hpp deleted file mode 100644 index 63c55b9f2f429a..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_intel_planar_yuv.hpp +++ /dev/null @@ -1,315 +0,0 @@ -/*****************************************************************************\ - -Copyright 2016 Intel Corporation All Rights Reserved. - -The source code contained or described herein and all documents related to -the source code ("Material") are owned by Intel Corporation or its suppliers -or licensors. Title to the Material remains with Intel Corporation or its -suppliers and licensors. The Material contains trade secrets and proprietary -and confidential information of Intel or its suppliers and licensors. The -Material is protected by worldwide copyright and trade secret laws and -treaty provisions. No part of the Material may be used, copied, reproduced, -modified, published, uploaded, posted, transmitted, distributed, or -disclosed in any way without Intel's prior express written permission. - -No license under any patent, copyright, trade secret or other intellectual -property right is granted to or conferred upon you by disclosure or delivery -of the Materials, either expressly, by implication, inducement, estoppel or -otherwise. Any license under such intellectual property rights must be -express and approved by Intel in writing. - -File Name: cl_intel_planar_yuv.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __CL_EXT_INTEL_PLANAR_YUV_HPP_ -#define __CL_EXT_INTEL_PLANAR_YUV_HPP_ - -/*************************************** -* cl_intel_nv12 extension * -****************************************/ -#define CL_NV12_INTEL 0x410E - -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) - -#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E -#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F - -#ifdef __cplusplus - -#include - -#ifndef __ERR_STR -#if defined(__CL_ENABLE_EXCEPTIONS) -#define __ERR_STR(x) #x -#else -#define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS -#endif - -// To avoid accidentally taking ownership of core OpenCL types -// such as cl_kernel constructors are made explicit -// under OpenCL 1.2 -#ifndef __CL_EXPLICIT_CONSTRUCTORS -#if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#endif - -namespace cl { - -class Image2DYPlane : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2DYPlane( - const Context& context, - cl_mem_flags flags, - cl_mem parent_nv12_mem_object, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - cl::ImageFormat format(CL_R, CL_UNORM_INT8); - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - 0, // width (unused) - 0, // height (unused) - 0, // depth set to y-plane index - 0, // array size (unused) - 0, // row_pitch (unused) - 0, 0, 0, - parent_nv12_mem_object - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, parent_nv12_mem_object, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2DYPlane() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - - __CL_EXPLICIT_CONSTRUCTORS Image2DYPlane(const cl_mem& image2DYPlane) : Image(image2DYPlane) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DYPlane& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane(const Image2DYPlane& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane& operator = (const Image2DYPlane &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane(Image2DYPlane&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane& operator = (Image2DYPlane &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -class Image2DUVPlane : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2DUVPlane( - const Context& context, - cl_mem_flags flags, - cl_mem parent_nv12_mem_object, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - cl::ImageFormat format(CL_RG, CL_UNORM_INT8); - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - 0, // width (unused) - 0, // height (unused) - 1, // depth set to uv-plane index - 0, // array size (unused) - 0, // row_pitch (unused) - 0, 0, 0, - parent_nv12_mem_object - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, parent_nv12_mem_object, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2DUVPlane() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DUVPlane(const cl_mem& image2DUVPlane) : Image(image2DUVPlane) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DUVPlane& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane(const Image2DUVPlane& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane& operator = (const Image2DUVPlane &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane(Image2DUVPlane&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane& operator = (Image2DUVPlane &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -}; - -#endif - - -#endif /* __CL_EXT_INTEL_PLANAR_YUV_HPP_ */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_platform.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_platform.h deleted file mode 100644 index 781950b59cebd6..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/cl_platform.h +++ /dev/null @@ -1,1333 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11803 $ on $Date: 2010-06-25 10:02:12 -0700 (Fri, 25 Jun 2010) $ */ - -#ifndef __CL_PLATFORM_H -#define __CL_PLATFORM_H - -#ifdef __APPLE__ - /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ - #include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) - #define CL_API_ENTRY - #define CL_API_CALL __stdcall - #define CL_CALLBACK __stdcall -#else - #define CL_API_ENTRY - #define CL_API_CALL - #define CL_CALLBACK -#endif - -/* - * Deprecation flags refer to the last version of the header in which the - * feature was not deprecated. - * - * E.g. VERSION_1_1_DEPRECATED means the feature is present in 1.1 without - * deprecation but is deprecated in versions later than 1.1. - */ - -#ifdef __APPLE__ - #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) - #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 - - #ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 - #else - #warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #endif -#else - #define CL_EXTENSION_WEAK_LINK - #define CL_API_SUFFIX__VERSION_1_0 - #define CL_EXT_SUFFIX__VERSION_1_0 - #define CL_API_SUFFIX__VERSION_1_1 - #define CL_EXT_SUFFIX__VERSION_1_1 - #define CL_API_SUFFIX__VERSION_1_2 - #define CL_EXT_SUFFIX__VERSION_1_2 - #define CL_API_SUFFIX__VERSION_2_0 - #define CL_EXT_SUFFIX__VERSION_2_0 - #define CL_API_SUFFIX__VERSION_2_1 - #define CL_EXT_SUFFIX__VERSION_2_1 - - #ifdef __GNUC__ - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #endif - #elif defined(_WIN32) - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED __declspec(deprecated) - #endif - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #endif -#endif - -#if (defined (_WIN32) && defined(_MSC_VER)) - -/* scalar types */ -typedef signed __int8 cl_char; -typedef unsigned __int8 cl_uchar; -typedef signed __int16 cl_short; -typedef unsigned __int16 cl_ushort; -typedef signed __int32 cl_int; -typedef unsigned __int32 cl_uint; -typedef signed __int64 cl_long; -typedef unsigned __int64 cl_ulong; - -typedef unsigned __int16 cl_half; -typedef float cl_float; -typedef double cl_double; - -/* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) - -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 0x1.0p-23f - -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 - -#define CL_M_E 2.718281828459045090796 -#define CL_M_LOG2E 1.442695040888963387005 -#define CL_M_LOG10E 0.434294481903251816668 -#define CL_M_LN2 0.693147180559945286227 -#define CL_M_LN10 2.302585092994045901094 -#define CL_M_PI 3.141592653589793115998 -#define CL_M_PI_2 1.570796326794896557999 -#define CL_M_PI_4 0.785398163397448278999 -#define CL_M_1_PI 0.318309886183790691216 -#define CL_M_2_PI 0.636619772367581382433 -#define CL_M_2_SQRTPI 1.128379167095512558561 -#define CL_M_SQRT2 1.414213562373095145475 -#define CL_M_SQRT1_2 0.707106781186547572737 - -#define CL_M_E_F 2.71828174591064f -#define CL_M_LOG2E_F 1.44269502162933f -#define CL_M_LOG10E_F 0.43429449200630f -#define CL_M_LN2_F 0.69314718246460f -#define CL_M_LN10_F 2.30258512496948f -#define CL_M_PI_F 3.14159274101257f -#define CL_M_PI_2_F 1.57079637050629f -#define CL_M_PI_4_F 0.78539818525314f -#define CL_M_1_PI_F 0.31830987334251f -#define CL_M_2_PI_F 0.63661974668503f -#define CL_M_2_SQRTPI_F 1.12837922573090f -#define CL_M_SQRT2_F 1.41421353816986f -#define CL_M_SQRT1_2_F 0.70710676908493f - -#define CL_NAN (CL_INFINITY - CL_INFINITY) -#define CL_HUGE_VALF ((cl_float) 1e50) -#define CL_HUGE_VAL ((cl_double) 1e500) -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF - -#else - -#include - -/* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short __attribute__((aligned(2))); -typedef uint16_t cl_ushort __attribute__((aligned(2))); -typedef int32_t cl_int __attribute__((aligned(4))); -typedef uint32_t cl_uint __attribute__((aligned(4))); -typedef int64_t cl_long __attribute__((aligned(8))); -typedef uint64_t cl_ulong __attribute__((aligned(8))); - -typedef uint16_t cl_half __attribute__((aligned(2))); -typedef float cl_float __attribute__((aligned(4))); -typedef double cl_double __attribute__((aligned(8))); - -/* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) - -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 0x1.fffffep127f -#define CL_FLT_MIN 0x1.0p-126f -#define CL_FLT_EPSILON 0x1.0p-23f - -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 0x1.fffffffffffffp1023 -#define CL_DBL_MIN 0x1.0p-1022 -#define CL_DBL_EPSILON 0x1.0p-52 - -#define CL_M_E 2.718281828459045090796 -#define CL_M_LOG2E 1.442695040888963387005 -#define CL_M_LOG10E 0.434294481903251816668 -#define CL_M_LN2 0.693147180559945286227 -#define CL_M_LN10 2.302585092994045901094 -#define CL_M_PI 3.141592653589793115998 -#define CL_M_PI_2 1.570796326794896557999 -#define CL_M_PI_4 0.785398163397448278999 -#define CL_M_1_PI 0.318309886183790691216 -#define CL_M_2_PI 0.636619772367581382433 -#define CL_M_2_SQRTPI 1.128379167095512558561 -#define CL_M_SQRT2 1.414213562373095145475 -#define CL_M_SQRT1_2 0.707106781186547572737 - -#define CL_M_E_F 2.71828174591064f -#define CL_M_LOG2E_F 1.44269502162933f -#define CL_M_LOG10E_F 0.43429449200630f -#define CL_M_LN2_F 0.69314718246460f -#define CL_M_LN10_F 2.30258512496948f -#define CL_M_PI_F 3.14159274101257f -#define CL_M_PI_2_F 1.57079637050629f -#define CL_M_PI_4_F 0.78539818525314f -#define CL_M_1_PI_F 0.31830987334251f -#define CL_M_2_PI_F 0.63661974668503f -#define CL_M_2_SQRTPI_F 1.12837922573090f -#define CL_M_SQRT2_F 1.41421353816986f -#define CL_M_SQRT1_2_F 0.70710676908493f - -#if defined( __GNUC__ ) - #define CL_HUGE_VALF __builtin_huge_valf() - #define CL_HUGE_VAL __builtin_huge_val() - #define CL_NAN __builtin_nanf( "" ) -#else - #define CL_HUGE_VALF ((cl_float) 1e50) - #define CL_HUGE_VAL ((cl_double) 1e500) - float nanf( const char * ); - #define CL_NAN nanf( "" ) -#endif -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF - -#endif - -#include - -/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ -typedef unsigned int cl_GLuint; -typedef int cl_GLint; -typedef unsigned int cl_GLenum; - -/* - * Vector types - * - * Note: OpenCL requires that all types be naturally aligned. - * This means that vector types must be naturally aligned. - * For example, a vector of four floats must be aligned to - * a 16 byte boundary (calculated as 4 * the natural 4-byte - * alignment of the float). The alignment qualifiers here - * will only function properly if your compiler supports them - * and if you don't actively work to defeat them. For example, - * in order for a cl_float4 to be 16 byte aligned in a struct, - * the start of the struct must itself be 16-byte aligned. - * - * Maintaining proper alignment is the user's responsibility. - */ - -/* Define basic vector types */ -#if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ - typedef vector unsigned char __cl_uchar16; - typedef vector signed char __cl_char16; - typedef vector unsigned short __cl_ushort8; - typedef vector signed short __cl_short8; - typedef vector unsigned int __cl_uint4; - typedef vector signed int __cl_int4; - typedef vector float __cl_float4; - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_UINT4__ 1 - #define __CL_INT4__ 1 - #define __CL_FLOAT4__ 1 -#endif - -#if defined( __SSE__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef float __cl_float4 __attribute__((vector_size(16))); - #else - typedef __m128 __cl_float4; - #endif - #define __CL_FLOAT4__ 1 -#endif - -#if defined( __SSE2__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); - typedef cl_char __cl_char16 __attribute__((vector_size(16))); - typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); - typedef cl_short __cl_short8 __attribute__((vector_size(16))); - typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); - typedef cl_int __cl_int4 __attribute__((vector_size(16))); - typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); - typedef cl_long __cl_long2 __attribute__((vector_size(16))); - typedef cl_double __cl_double2 __attribute__((vector_size(16))); - #else - typedef __m128i __cl_uchar16; - typedef __m128i __cl_char16; - typedef __m128i __cl_ushort8; - typedef __m128i __cl_short8; - typedef __m128i __cl_uint4; - typedef __m128i __cl_int4; - typedef __m128i __cl_ulong2; - typedef __m128i __cl_long2; - typedef __m128d __cl_double2; - #endif - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_INT4__ 1 - #define __CL_UINT4__ 1 - #define __CL_ULONG2__ 1 - #define __CL_LONG2__ 1 - #define __CL_DOUBLE2__ 1 -#endif - -#if defined( __MMX__ ) - #include - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); - typedef cl_char __cl_char8 __attribute__((vector_size(8))); - typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); - typedef cl_short __cl_short4 __attribute__((vector_size(8))); - typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); - typedef cl_int __cl_int2 __attribute__((vector_size(8))); - typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); - typedef cl_long __cl_long1 __attribute__((vector_size(8))); - typedef cl_float __cl_float2 __attribute__((vector_size(8))); - #else - typedef __m64 __cl_uchar8; - typedef __m64 __cl_char8; - typedef __m64 __cl_ushort4; - typedef __m64 __cl_short4; - typedef __m64 __cl_uint2; - typedef __m64 __cl_int2; - typedef __m64 __cl_ulong1; - typedef __m64 __cl_long1; - typedef __m64 __cl_float2; - #endif - #define __CL_UCHAR8__ 1 - #define __CL_CHAR8__ 1 - #define __CL_USHORT4__ 1 - #define __CL_SHORT4__ 1 - #define __CL_INT2__ 1 - #define __CL_UINT2__ 1 - #define __CL_ULONG1__ 1 - #define __CL_LONG1__ 1 - #define __CL_FLOAT2__ 1 -#endif - -#if defined( __AVX__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_float __cl_float8 __attribute__((vector_size(32))); - typedef cl_double __cl_double4 __attribute__((vector_size(32))); - #else - typedef __m256 __cl_float8; - typedef __m256d __cl_double4; - #endif - #define __CL_FLOAT8__ 1 - #define __CL_DOUBLE4__ 1 -#endif - -/* Define capabilities for anonymous struct members. */ -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && (_MSC_VER >= 1500) - /* Microsoft Developer Studio 2008 supports anonymous structs, but - * complains by default. */ -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ - /* Disable warning C4201: nonstandard extension used : nameless - * struct/union */ -#pragma warning( push ) -#pragma warning( disable : 4201 ) -#else -#define __CL_HAS_ANON_STRUCT__ 0 -#define __CL_ANON_STRUCT__ -#endif - -/* Define alignment keys */ -#if defined( __GNUC__ ) - #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) -#elif defined( _WIN32) && (_MSC_VER) - /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ - /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ - /* #include */ - /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ - #define CL_ALIGNED(_x) -#else - #warning Need to implement some method to align data here - #define CL_ALIGNED(_x) -#endif - -/* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ -#if __CL_HAS_ANON_STRUCT__ - /* .xyzw and .s0123...{f|F} are supported */ - #define CL_HAS_NAMED_VECTOR_FIELDS 1 - /* .hi and .lo are supported */ - #define CL_HAS_HI_LO_VECTOR_FIELDS 1 -#endif - -/* Define cl_vector types */ - -/* ---- cl_charn ---- */ -typedef union -{ - cl_char CL_ALIGNED(2) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_char lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2; -#endif -}cl_char2; - -typedef union -{ - cl_char CL_ALIGNED(4) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[2]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4; -#endif -}cl_char4; - -/* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ -typedef cl_char4 cl_char3; - -typedef union -{ - cl_char CL_ALIGNED(8) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[4]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[2]; -#endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8; -#endif -}cl_char8; - -typedef union -{ - cl_char CL_ALIGNED(16) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[8]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[4]; -#endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8[2]; -#endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16; -#endif -}cl_char16; - - -/* ---- cl_ucharn ---- */ -typedef union -{ - cl_uchar CL_ALIGNED(2) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; }; -#endif -#if defined( __cl_uchar2__) - __cl_uchar2 v2; -#endif -}cl_uchar2; - -typedef union -{ - cl_uchar CL_ALIGNED(4) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[2]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4; -#endif -}cl_uchar4; - -/* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ -typedef cl_uchar4 cl_uchar3; - -typedef union -{ - cl_uchar CL_ALIGNED(8) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[4]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[2]; -#endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8; -#endif -}cl_uchar8; - -typedef union -{ - cl_uchar CL_ALIGNED(16) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[8]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[4]; -#endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8[2]; -#endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16; -#endif -}cl_uchar16; - - -/* ---- cl_shortn ---- */ -typedef union -{ - cl_short CL_ALIGNED(4) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_short lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2; -#endif -}cl_short2; - -typedef union -{ - cl_short CL_ALIGNED(8) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[2]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4; -#endif -}cl_short4; - -/* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ -typedef cl_short4 cl_short3; - -typedef union -{ - cl_short CL_ALIGNED(16) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[4]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[2]; -#endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8; -#endif -}cl_short8; - -typedef union -{ - cl_short CL_ALIGNED(32) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[8]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[4]; -#endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8[2]; -#endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16; -#endif -}cl_short16; - - -/* ---- cl_ushortn ---- */ -typedef union -{ - cl_ushort CL_ALIGNED(4) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2; -#endif -}cl_ushort2; - -typedef union -{ - cl_ushort CL_ALIGNED(8) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[2]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4; -#endif -}cl_ushort4; - -/* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ -typedef cl_ushort4 cl_ushort3; - -typedef union -{ - cl_ushort CL_ALIGNED(16) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[4]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[2]; -#endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8; -#endif -}cl_ushort8; - -typedef union -{ - cl_ushort CL_ALIGNED(32) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[8]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[4]; -#endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8[2]; -#endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16; -#endif -}cl_ushort16; - -/* ---- cl_intn ---- */ -typedef union -{ - cl_int CL_ALIGNED(8) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_int lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2; -#endif -}cl_int2; - -typedef union -{ - cl_int CL_ALIGNED(16) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[2]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4; -#endif -}cl_int4; - -/* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ -typedef cl_int4 cl_int3; - -typedef union -{ - cl_int CL_ALIGNED(32) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[4]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4[2]; -#endif -#if defined( __CL_INT8__ ) - __cl_int8 v8; -#endif -}cl_int8; - -typedef union -{ - cl_int CL_ALIGNED(64) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[8]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4[4]; -#endif -#if defined( __CL_INT8__ ) - __cl_int8 v8[2]; -#endif -#if defined( __CL_INT16__ ) - __cl_int16 v16; -#endif -}cl_int16; - - -/* ---- cl_uintn ---- */ -typedef union -{ - cl_uint CL_ALIGNED(8) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2; -#endif -}cl_uint2; - -typedef union -{ - cl_uint CL_ALIGNED(16) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[2]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4; -#endif -}cl_uint4; - -/* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ -typedef cl_uint4 cl_uint3; - -typedef union -{ - cl_uint CL_ALIGNED(32) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[4]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[2]; -#endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8; -#endif -}cl_uint8; - -typedef union -{ - cl_uint CL_ALIGNED(64) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[8]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[4]; -#endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8[2]; -#endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16; -#endif -}cl_uint16; - -/* ---- cl_longn ---- */ -typedef union -{ - cl_long CL_ALIGNED(16) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_long lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2; -#endif -}cl_long2; - -typedef union -{ - cl_long CL_ALIGNED(32) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[2]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4; -#endif -}cl_long4; - -/* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ -typedef cl_long4 cl_long3; - -typedef union -{ - cl_long CL_ALIGNED(64) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[4]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4[2]; -#endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8; -#endif -}cl_long8; - -typedef union -{ - cl_long CL_ALIGNED(128) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[8]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4[4]; -#endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8[2]; -#endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16; -#endif -}cl_long16; - - -/* ---- cl_ulongn ---- */ -typedef union -{ - cl_ulong CL_ALIGNED(16) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2; -#endif -}cl_ulong2; - -typedef union -{ - cl_ulong CL_ALIGNED(32) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[2]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4; -#endif -}cl_ulong4; - -/* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ -typedef cl_ulong4 cl_ulong3; - -typedef union -{ - cl_ulong CL_ALIGNED(64) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[4]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[2]; -#endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8; -#endif -}cl_ulong8; - -typedef union -{ - cl_ulong CL_ALIGNED(128) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[8]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[4]; -#endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8[2]; -#endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16; -#endif -}cl_ulong16; - - -/* --- cl_floatn ---- */ - -typedef union -{ - cl_float CL_ALIGNED(8) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_float lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2; -#endif -}cl_float2; - -typedef union -{ - cl_float CL_ALIGNED(16) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[2]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4; -#endif -}cl_float4; - -/* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ -typedef cl_float4 cl_float3; - -typedef union -{ - cl_float CL_ALIGNED(32) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[4]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[2]; -#endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8; -#endif -}cl_float8; - -typedef union -{ - cl_float CL_ALIGNED(64) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[8]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[4]; -#endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8[2]; -#endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16; -#endif -}cl_float16; - -/* --- cl_doublen ---- */ - -typedef union -{ - cl_double CL_ALIGNED(16) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_double lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2; -#endif -}cl_double2; - -typedef union -{ - cl_double CL_ALIGNED(32) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[2]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4; -#endif -}cl_double4; - -/* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ -typedef cl_double4 cl_double3; - -typedef union -{ - cl_double CL_ALIGNED(64) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[4]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[2]; -#endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8; -#endif -}cl_double8; - -typedef union -{ - cl_double CL_ALIGNED(128) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[8]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[4]; -#endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8[2]; -#endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16; -#endif -}cl_double16; - -/* Macro to facilitate debugging - * Usage: - * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. - * The first line ends with: CL_PROGRAM_STRING_DEBUG_INFO \" - * Each line thereafter of OpenCL C source must end with: \n\ - * The last line ends in "; - * - * Example: - * - * const char *my_program = CL_PROGRAM_STRING_DEBUG_INFO "\ - * kernel void foo( int a, float * b ) \n\ - * { \n\ - * // my comment \n\ - * *b[ get_global_id(0)] = a; \n\ - * } \n\ - * "; - * - * This should correctly set up the line, (column) and file information for your source - * string so you can do source level debugging. - */ -#define __CL_STRINGIFY( _x ) # _x -#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) -#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" - -#ifdef __cplusplus -} -#endif - -#undef __CL_HAS_ANON_STRUCT__ -#undef __CL_ANON_STRUCT__ -#if defined( _WIN32) && (_MSC_VER >= 1500) -#pragma warning( pop ) -#endif - -#endif /* __CL_PLATFORM_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/opencl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/opencl.h deleted file mode 100644 index 9855cd75e7da06..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/include/CL/opencl.h +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_H -#define __OPENCL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - -#include -#include -#include -#include - -#else - -#include -#include -#include -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Debug/lib/x64/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Debug/lib/x64/OpenCL.lib deleted file mode 100644 index ebd6efac3739d1..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Debug/lib/x64/OpenCL.lib and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Debug/lib/x86/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Debug/lib/x86/OpenCL.lib deleted file mode 100644 index 4e051d35632c80..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Debug/lib/x86/OpenCL.lib and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Release/lib/x64/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Release/lib/x64/OpenCL.lib deleted file mode 100644 index ebd6efac3739d1..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Release/lib/x64/OpenCL.lib and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Release/lib/x86/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Release/lib/x86/OpenCL.lib deleted file mode 100644 index 4e051d35632c80..00000000000000 Binary files a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/Release/lib/x86/OpenCL.lib and /dev/null differ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl.h deleted file mode 100644 index 28226442b771ba..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl.h +++ /dev/null @@ -1,1453 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -#ifndef __OPENCL_CL_H -#define __OPENCL_CL_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************/ - -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; - -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; -typedef cl_bitfield cl_device_svm_capabilities; -typedef cl_bitfield cl_command_queue_properties; -typedef intptr_t cl_device_partition_property; -typedef cl_bitfield cl_device_affinity_domain; - -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; -typedef cl_bitfield cl_queue_properties; -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; -typedef cl_bitfield cl_svm_mem_flags; -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; -typedef cl_bitfield cl_mem_migration_flags; -typedef cl_uint cl_image_info; -typedef cl_uint cl_buffer_create_type; -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; -typedef intptr_t cl_pipe_properties; -typedef cl_uint cl_pipe_info; -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; -typedef cl_uint cl_program_binary_type; -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; -typedef cl_uint cl_kernel_arg_info; -typedef cl_uint cl_kernel_arg_address_qualifier; -typedef cl_uint cl_kernel_arg_access_qualifier; -typedef cl_bitfield cl_kernel_arg_type_qualifier; -typedef cl_uint cl_kernel_work_group_info; -typedef cl_uint cl_kernel_sub_group_info; -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; -typedef cl_bitfield cl_sampler_properties; -typedef cl_uint cl_kernel_exec_info; - -typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; -} cl_image_format; - -typedef struct _cl_image_desc { - cl_mem_object_type image_type; - size_t image_width; - size_t image_height; - size_t image_depth; - size_t image_array_size; - size_t image_row_pitch; - size_t image_slice_pitch; - cl_uint num_mip_levels; - cl_uint num_samples; -#ifdef __GNUC__ - __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ -#endif - union { - cl_mem buffer; - cl_mem mem_object; - }; -} cl_image_desc; - -typedef struct _cl_buffer_region { - size_t origin; - size_t size; -} cl_buffer_region; - - -/******************************************************************************/ - -/* Error Codes */ -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 -#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 -#define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 -#define CL_COMPILE_PROGRAM_FAILURE -15 -#define CL_LINKER_NOT_AVAILABLE -16 -#define CL_LINK_PROGRAM_FAILURE -17 -#define CL_DEVICE_PARTITION_FAILED -18 -#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 - -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 -#define CL_INVALID_GLOBAL_WORK_SIZE -63 -#define CL_INVALID_PROPERTY -64 -#define CL_INVALID_IMAGE_DESCRIPTOR -65 -#define CL_INVALID_COMPILER_OPTIONS -66 -#define CL_INVALID_LINKER_OPTIONS -67 -#define CL_INVALID_DEVICE_PARTITION_COUNT -68 -#define CL_INVALID_PIPE_SIZE -69 -#define CL_INVALID_DEVICE_QUEUE -70 - -/* OpenCL Version */ -#define CL_VERSION_1_0 1 -#define CL_VERSION_1_1 1 -#define CL_VERSION_1_2 1 -#define CL_VERSION_2_0 1 -#define CL_VERSION_2_1 1 - -/* cl_bool */ -#define CL_FALSE 0 -#define CL_TRUE 1 -#define CL_BLOCKING CL_TRUE -#define CL_NON_BLOCKING CL_FALSE - -/* cl_platform_info */ -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 -#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 - -/* cl_device_type - bitfield */ -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) -#define CL_DEVICE_TYPE_CUSTOM (1 << 4) -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF - -/* cl_device_info */ -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ -#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 -/* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */ -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 -#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C -#define CL_DEVICE_OPENCL_C_VERSION 0x103D -#define CL_DEVICE_LINKER_AVAILABLE 0x103E -#define CL_DEVICE_BUILT_IN_KERNELS 0x103F -#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 -#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 -#define CL_DEVICE_PARENT_DEVICE 0x1042 -#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 -#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 -#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 -#define CL_DEVICE_PARTITION_TYPE 0x1046 -#define CL_DEVICE_REFERENCE_COUNT 0x1047 -#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 -#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B -#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C -#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D -#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E -#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F -#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 -#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 -#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 -#define CL_DEVICE_SVM_CAPABILITIES 0x1053 -#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 -#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 -#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 -#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 -#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 -#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 -#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A -#define CL_DEVICE_IL_VERSION 0x105B -#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C -#define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D - -/* cl_device_fp_config - bitfield */ -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) -#define CL_FP_SOFT_FLOAT (1 << 6) -#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) - -/* cl_device_mem_cache_type */ -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 - -/* cl_device_local_mem_type */ -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 - -/* cl_device_exec_capabilities - bitfield */ -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) - -/* cl_command_queue_properties - bitfield */ -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) -#define CL_QUEUE_ON_DEVICE (1 << 2) -#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) - -/* cl_context_info */ -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_DEVICES 0x1081 -#define CL_CONTEXT_PROPERTIES 0x1082 -#define CL_CONTEXT_NUM_DEVICES 0x1083 - -/* cl_context_properties */ -#define CL_CONTEXT_PLATFORM 0x1084 -#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 - -/* cl_device_partition_property */ -#define CL_DEVICE_PARTITION_EQUALLY 0x1086 -#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 -#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 - -/* cl_device_affinity_domain */ -#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) -#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) -#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) -#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) -#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) -#define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5) - -/* cl_device_svm_capabilities */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS (1 << 3) - -/* cl_command_queue_info */ -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 -#define CL_QUEUE_SIZE 0x1094 -#define CL_QUEUE_DEVICE_DEFAULT 0x1095 - -/* cl_mem_flags and cl_svm_mem_flags - bitfield */ -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) -/* reserved (1 << 6) */ -#define CL_MEM_HOST_WRITE_ONLY (1 << 7) -#define CL_MEM_HOST_READ_ONLY (1 << 8) -#define CL_MEM_HOST_NO_ACCESS (1 << 9) -#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ -#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ -#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) - -/* cl_mem_migration_flags - bitfield */ -#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) -#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) - -/* cl_channel_order */ -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 -#define CL_Rx 0x10BA -#define CL_RGx 0x10BB -#define CL_RGBx 0x10BC -#define CL_DEPTH 0x10BD -#define CL_DEPTH_STENCIL 0x10BE -#define CL_sRGB 0x10BF -#define CL_sRGBx 0x10C0 -#define CL_sRGBA 0x10C1 -#define CL_sBGRA 0x10C2 -#define CL_ABGR 0x10C3 - -/* cl_channel_type */ -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE -#define CL_UNORM_INT24 0x10DF -#define CL_UNORM_INT_101010_2 0x10E0 - -/* cl_mem_object_type */ -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 -#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 -#define CL_MEM_OBJECT_IMAGE1D 0x10F4 -#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 -#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 -#define CL_MEM_OBJECT_PIPE 0x10F7 - -/* cl_mem_info */ -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 -#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 -#define CL_MEM_OFFSET 0x1108 -#define CL_MEM_USES_SVM_POINTER 0x1109 - -/* cl_image_info */ -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 -#define CL_IMAGE_ARRAY_SIZE 0x1117 -#define CL_IMAGE_BUFFER 0x1118 -#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 -#define CL_IMAGE_NUM_SAMPLES 0x111A - -/* cl_pipe_info */ -#define CL_PIPE_PACKET_SIZE 0x1120 -#define CL_PIPE_MAX_PACKETS 0x1121 - -/* cl_addressing_mode */ -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 -#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 - -/* cl_filter_mode */ -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 - -/* cl_sampler_info */ -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 -#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 -#define CL_SAMPLER_LOD_MIN 0x1156 -#define CL_SAMPLER_LOD_MAX 0x1157 - -/* cl_map_flags - bitfield */ -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) -#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) - -/* cl_program_info */ -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 -#define CL_PROGRAM_NUM_KERNELS 0x1167 -#define CL_PROGRAM_KERNEL_NAMES 0x1168 -#define CL_PROGRAM_IL 0x1169 - -/* cl_program_build_info */ -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 -#define CL_PROGRAM_BINARY_TYPE 0x1184 -#define CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE 0x1185 - -/* cl_program_binary_type */ -#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 -#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 -#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 -#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 - -/* cl_build_status */ -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 - -/* cl_kernel_info */ -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 -#define CL_KERNEL_ATTRIBUTES 0x1195 -#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 -#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA - -/* cl_kernel_arg_info */ -#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 -#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 -#define CL_KERNEL_ARG_TYPE_NAME 0x1198 -#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 -#define CL_KERNEL_ARG_NAME 0x119A - -/* cl_kernel_arg_address_qualifier */ -#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B -#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C -#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D -#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E - -/* cl_kernel_arg_access_qualifier */ -#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 -#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 -#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 -#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 - -/* cl_kernel_arg_type_qualifer */ -#define CL_KERNEL_ARG_TYPE_NONE 0 -#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) -#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) -#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) -#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) - -/* cl_kernel_work_group_info */ -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 -#define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 -#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 -#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 - -/* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 -#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 - -/* cl_kernel_exec_info */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 - -/* cl_event_info */ -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 -#define CL_EVENT_CONTEXT 0x11D4 - -/* cl_command_type */ -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 -#define CL_COMMAND_READ_BUFFER_RECT 0x1201 -#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 -#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 -#define CL_COMMAND_USER 0x1204 -#define CL_COMMAND_BARRIER 0x1205 -#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 -#define CL_COMMAND_FILL_BUFFER 0x1207 -#define CL_COMMAND_FILL_IMAGE 0x1208 -#define CL_COMMAND_SVM_FREE 0x1209 -#define CL_COMMAND_SVM_MEMCPY 0x120A -#define CL_COMMAND_SVM_MEMFILL 0x120B -#define CL_COMMAND_SVM_MAP 0x120C -#define CL_COMMAND_SVM_UNMAP 0x120D -#define CL_COMMAND_MIGRATE_SVM_MEM_OBJECTS 0x120E - -/* command execution status */ -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 - -/* cl_buffer_create_type */ -#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 - -/* cl_profiling_info */ -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 -#define CL_PROFILING_COMMAND_COMPLETE 0x1284 - -/********************************************************************************************************/ - -/* Platform API */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id /* platform */, - cl_platform_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Device APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id /* platform */, - cl_device_type /* device_type */, - cl_uint /* num_entries */, - cl_device_id * /* devices */, - cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id /* in_device */, - const cl_device_partition_property * /* properties */, - cl_uint /* num_devices */, - cl_device_id * /* out_devices */, - cl_uint * /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetDefaultDeviceCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_2_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceAndHostTimer(cl_device_id /* device */, - cl_ulong* /* device_timestamp */, - cl_ulong* /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetHostTimer(cl_device_id /* device */, - cl_ulong * /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; - - -/* Context APIs */ -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * /* properties */, - cl_uint /* num_devices */, - const cl_device_id * /* devices */, - void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (CL_CALLBACK * /* pfn_notify*/ )(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context /* context */, - cl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Command Queue APIs */ -extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithProperties(cl_context /* context */, - cl_device_id /* device */, - const cl_queue_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue /* command_queue */, - cl_command_queue_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Memory Object APIs */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - size_t /* size */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem /* buffer */, - cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - const cl_image_desc * /* image_desc */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreatePipe(cl_context /* context */, - cl_mem_flags /* flags */, - cl_uint /* pipe_packet_size */, - cl_uint /* pipe_max_packets */, - const cl_pipe_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context /* context */, - cl_mem_flags /* flags */, - cl_mem_object_type /* image_type */, - cl_uint /* num_entries */, - cl_image_format * /* image_formats */, - cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem /* memobj */, - cl_mem_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem /* image */, - cl_image_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPipeInfo(cl_mem /* pipe */, - cl_pipe_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; - - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback(cl_mem /* memobj */, - void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_API_SUFFIX__VERSION_1_1; - -/* SVM Allocation APIs */ -extern CL_API_ENTRY void * CL_API_CALL -clSVMAlloc(cl_context /* context */, - cl_svm_mem_flags /* flags */, - size_t /* size */, - cl_uint /* alignment */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY void CL_API_CALL -clSVMFree(cl_context /* context */, - void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; - -/* Sampler APIs */ -extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSamplerWithProperties(cl_context /* context */, - const cl_sampler_properties * /* normalized_coords */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler /* sampler */, - cl_sampler_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Program Object APIs */ -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context /* context */, - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* kernel_names */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithIL(cl_context /* context */, - const void* /* il */, - size_t /* length */, - cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; - - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_headers */, - const cl_program * /* input_headers */, - const char ** /* header_include_names */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_programs */, - const cl_program * /* input_programs */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */, - cl_int * /* errcode_ret */ ) CL_API_SUFFIX__VERSION_1_2; - - -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id /* platform */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program /* program */, - cl_program_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Kernel Object APIs */ -extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program /* program */, - const char * /* kernel_name */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program /* program */, - cl_uint /* num_kernels */, - cl_kernel * /* kernels */, - cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_kernel CL_API_CALL -clCloneKernel(cl_kernel /* source_kernel */, - cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_index */, - size_t /* arg_size */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointer(cl_kernel /* kernel */, - cl_uint /* arg_index */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfo(cl_kernel /* kernel */, - cl_kernel_exec_info /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel /* kernel */, - cl_kernel_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel /* kernel */, - cl_uint /* arg_indx */, - cl_kernel_arg_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_work_group_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_sub_group_info /* param_name */, - size_t /* input_value_size */, - const void* /*input_value */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ ) CL_API_SUFFIX__VERSION_2_1; - - -/* Event Object APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event /* event */, - cl_event_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback( cl_event /* event */, - cl_int /* command_exec_callback_type */, - void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; - -/* Profiling APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event /* event */, - cl_profiling_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Flush and Finish APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -/* Enqueued Commands APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - size_t /* offset */, - size_t /* size */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - size_t /* offset */, - size_t /* size */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - size_t /* src_offset */, - size_t /* dst_offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin */, - const size_t * /* dst_origin */, - const size_t * /* region */, - size_t /* src_row_pitch */, - size_t /* src_slice_pitch */, - size_t /* dst_row_pitch */, - size_t /* dst_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_read */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_write */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* input_row_pitch */, - size_t /* input_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - const void * /* fill_color */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_image */, - const size_t * /* src_origin[3] */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin[3] */, - const size_t * /* region[3] */, - size_t /* dst_offset */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_image */, - size_t /* src_offset */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t * /* image_row_pitch */, - size_t * /* image_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, - cl_mem /* memobj */, - void * /* mapped_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue /* command_queue */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_objects */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* work_dim */, - const size_t * /* global_work_offset */, - const size_t * /* global_work_size */, - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue /* command_queue */, - void (CL_CALLBACK * /*user_func*/)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFree(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpy(cl_command_queue /* command_queue */, - cl_bool /* blocking_copy */, - void * /* dst_ptr */, - const void * /* src_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFill(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMap(cl_command_queue /* command_queue */, - cl_bool /* blocking_map */, - cl_map_flags /* flags */, - void * /* svm_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmap(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMigrateMem(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - const void ** /* svm_pointers */, - const size_t * /* sizes */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_1; - - -/* Extension function access - * - * Returns the extension function address for the given function name, - * or NULL if a valid function can not be found. The client must - * check to make sure the address is not NULL, before using or - * calling the returned function address. - */ -extern CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id /* platform */, - const char * /* func_name */) CL_API_SUFFIX__VERSION_1_2; - - -/* Deprecated OpenCL 1.1 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage2D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_row_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage3D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_depth */, - size_t /* image_row_pitch */, - size_t /* image_slice_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue /* command_queue */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue /* command_queue */, - cl_uint /* num_events */, - const cl_event * /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL -clGetExtensionFunctionAddress(const char * /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -/* Deprecated OpenCL 2.0 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL -clCreateSampler(cl_context /* context */, - cl_bool /* normalized_coords */, - cl_addressing_mode /* addressing_mode */, - cl_filter_mode /* filter_mode */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL -clEnqueueTask(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl.hpp deleted file mode 100644 index 396b86719fd032..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl.hpp +++ /dev/null @@ -1,12934 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/*! \file - * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33) and - * OpenCL 1.2 (rev 15) - * \author Benedict R. Gaster, Laurent Morichetti and Lee Howes - * - * Additions and fixes from: - * Brian Cole, March 3rd 2010 and April 2012 - * Matt Gruenke, April 2012. - * Bruce Merry, February 2013. - * Tom Deakin and Simon McIntosh-Smith, July 2013 - * - * \version 1.2.8 - * \date October 2015 - * - * Optional extension support - * - * cl - * cl_ext_device_fission - * #define USE_CL_DEVICE_FISSION - */ - -/*! \mainpage - * \section intro Introduction - * For many large applications C++ is the language of choice and so it seems - * reasonable to define C++ bindings for OpenCL. - * - * - * The interface is contained with a single C++ header file \em cl.hpp and all - * definitions are contained within the namespace \em cl. There is no additional - * requirement to include \em cl.h and to use either the C++ or original C - * bindings it is enough to simply include \em cl.hpp. - * - * The bindings themselves are lightweight and correspond closely to the - * underlying C API. Using the C++ bindings introduces no additional execution - * overhead. - * - * For detail documentation on the bindings see: - * - * The OpenCL C++ Wrapper API 1.2 (revision 09) - * http://www.khronos.org/registry/cl/specs/opencl-cplusplus-1.2.pdf - * - * \section example Example - * - * The following example shows a general use case for the C++ - * bindings, including support for the optional exception feature and - * also the supplied vector and string classes, see following sections for - * decriptions of these features. - * - * \code - * #define __CL_ENABLE_EXCEPTIONS - * - * #if defined(__APPLE__) || defined(__MACOSX) - * #include - * #else - * #include - * #endif - * #include - * #include - * #include - * - * const char * helloStr = "__kernel void " - * "hello(void) " - * "{ " - * " " - * "} "; - * - * int - * main(void) - * { - * cl_int err = CL_SUCCESS; - * try { - * - * std::vector platforms; - * cl::Platform::get(&platforms); - * if (platforms.size() == 0) { - * std::cout << "Platform size 0\n"; - * return -1; - * } - * - * cl_context_properties properties[] = - * { CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0}; - * cl::Context context(CL_DEVICE_TYPE_CPU, properties); - * - * std::vector devices = context.getInfo(); - * - * cl::Program::Sources source(1, - * std::make_pair(helloStr,strlen(helloStr))); - * cl::Program program_ = cl::Program(context, source); - * program_.build(devices); - * - * cl::Kernel kernel(program_, "hello", &err); - * - * cl::Event event; - * cl::CommandQueue queue(context, devices[0], 0, &err); - * queue.enqueueNDRangeKernel( - * kernel, - * cl::NullRange, - * cl::NDRange(4,4), - * cl::NullRange, - * NULL, - * &event); - * - * event.wait(); - * } - * catch (cl::Error err) { - * std::cerr - * << "ERROR: " - * << err.what() - * << "(" - * << err.err() - * << ")" - * << std::endl; - * } - * - * return EXIT_SUCCESS; - * } - * - * \endcode - * - */ -#ifndef CL_HPP_ -#define CL_HPP_ - -#ifdef _WIN32 - -#include - -#if defined(USE_DX_INTEROP) -#include -#include -#endif -#endif // _WIN32 - -#if defined(_MSC_VER) -#include -#endif // _MSC_VER - -// -#if defined(USE_CL_DEVICE_FISSION) -#include -#endif - -#if defined(__APPLE__) || defined(__MACOSX) -#include -#else -#include -#endif // !__APPLE__ - -#if (_MSC_VER >= 1700) || (__cplusplus >= 201103L) -#define CL_HPP_RVALUE_REFERENCES_SUPPORTED -#define CL_HPP_CPP11_ATOMICS_SUPPORTED -#include -#endif - -#if (__cplusplus >= 201103L) -#define CL_HPP_NOEXCEPT noexcept -#else -#define CL_HPP_NOEXCEPT -#endif - - -// To avoid accidentally taking ownership of core OpenCL types -// such as cl_kernel constructors are made explicit -// under OpenCL 1.2 -#if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -// Define deprecated prefixes and suffixes to ensure compilation -// in case they are not pre-defined -#if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) - -#if !defined(CL_CALLBACK) -#define CL_CALLBACK -#endif //CL_CALLBACK - -#include -#include -#include - -#if defined(__CL_ENABLE_EXCEPTIONS) -#include -#endif // #if defined(__CL_ENABLE_EXCEPTIONS) - -#if !defined(__NO_STD_VECTOR) -#include -#endif - -#if !defined(__NO_STD_STRING) -#include -#endif - -#if defined(__ANDROID__) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) -#include -#endif // linux - -#include - - -/*! \namespace cl - * - * \brief The OpenCL C++ bindings are defined within this namespace. - * - */ -namespace cl { - -class Memory; - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) - -#if defined(CL_VERSION_1_2) -#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) - -class Program; -class Device; -class Context; -class CommandQueue; -class Memory; -class Buffer; - -#if defined(__CL_ENABLE_EXCEPTIONS) -/*! \brief Exception class - * - * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. - */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} - - ~Error() throw() {} - - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } - - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } -}; - -#define __ERR_STR(x) #x -#else -#define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS - - -namespace detail -{ -#if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; -} -#else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; -} -#endif // __CL_ENABLE_EXCEPTIONS -} - - - -//! \cond DOXYGEN_DETAIL -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) -#if defined(CL_VERSION_1_2) -#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) -#endif // #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) - -#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) - -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __COPY_ERR __ERR_STR(cl::copy) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) -#if defined(CL_VERSION_1_2) -#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) -#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) - -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) - -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) -#if defined(CL_VERSION_1_2) -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) -#endif // #if defined(CL_VERSION_1_2) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) -#if defined(CL_VERSION_1_2) -#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) -#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) - -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) -#if defined(CL_VERSION_1_2) -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) -#endif // #if defined(CL_VERSION_1_2) - -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) - - -#define __RETAIN_ERR __ERR_STR(Retain Object) -#define __RELEASE_ERR __ERR_STR(Release Object) -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) -#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) - -/** - * CL 1.2 version that uses device fission. - */ -#if defined(CL_VERSION_1_2) -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) -#else -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // #if defined(CL_VERSION_1_2) - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#endif // #if defined(CL_VERSION_1_1) - -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS -//! \endcond - -/** - * CL 1.2 marker and barrier commands - */ -#if defined(CL_VERSION_1_2) -#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) -#endif // #if defined(CL_VERSION_1_2) - -#if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) -typedef std::string STRING_CLASS; -#elif !defined(__USE_DEV_STRING) - -/*! \class string - * \brief Simple string class, that provides a limited subset of std::string - * functionality but avoids many of the issues that come with that class. - - * \note Deprecated. Please use std::string as default or - * re-define the string class to match the std::string - * interface by defining STRING_CLASS - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ -private: - ::size_t size_; - char * str_; -public: - //! \brief Constructs an empty string, allocating no memory. - string(void) : size_(0), str_(NULL) - { - } - - /*! \brief Constructs a string populated from an arbitrary value of - * specified size. - * - * An extra '\0' is added, in case none was contained in str. - * - * \param str the initial value of the string instance. Note that '\0' - * characters receive no special treatment. If NULL, - * the string is left empty, with a size of 0. - * - * \param size the number of characters to copy from str. - */ - string(const char * str, ::size_t size) : - size_(size), - str_(NULL) - { - if( size > 0 ) { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } - } - - /*! \brief Constructs a string populated from a null-terminated value. - * - * \param str the null-terminated initial value of the string instance. - * If NULL, the string is left empty, with a size of 0. - */ - string(const char * str) : - size_(0), - str_(NULL) - { - if( str ) { - size_= ::strlen(str); - } - if( size_ > 0 ) { - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - } - } - - void resize( ::size_t n ) - { - if( size_ == n ) { - return; - } - if (n == 0) { - if( str_ ) { - delete [] str_; - } - str_ = NULL; - size_ = 0; - } - else { - char *newString = new char[n + 1]; - ::size_t copySize = n; - if( size_ < n ) { - copySize = size_; - } - size_ = n; - - if(str_) { - memcpy(newString, str_, (copySize + 1) * sizeof(char)); - } - if( copySize < size_ ) { - memset(newString + copySize, 0, size_ - copySize); - } - newString[size_] = '\0'; - - delete [] str_; - str_ = newString; - } - } - - const char& operator[] ( ::size_t pos ) const - { - return str_[pos]; - } - - char& operator[] ( ::size_t pos ) - { - return str_[pos]; - } - - /*! \brief Copies the value of another string to this one. - * - * \param rhs the string to copy. - * - * \returns a reference to the modified instance. - */ - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if( str_ != NULL ) { - delete [] str_; - str_ = NULL; - size_ = 0; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - str_ = NULL; - size_ = 0; - } - else { - str_ = new char[rhs.size_ + 1]; - size_ = rhs.size_; - - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - /*! \brief Constructs a string by copying the value of another instance. - * - * \param rhs the string to copy. - */ - string(const string& rhs) : - size_(0), - str_(NULL) - { - *this = rhs; - } - - //! \brief Destructor - frees memory used to hold the current value. - ~string() - { - delete[] str_; - str_ = NULL; - } - - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t size(void) const { return size_; } - - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t length(void) const { return size(); } - - /*! \brief Returns a pointer to the private copy held by this instance, - * or "" if empty/unset. - */ - const char * c_str(void) const { return (str_) ? str_ : "";} -}; -typedef cl::string STRING_CLASS; -#endif // #elif !defined(__USE_DEV_STRING) - -#if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) -#define VECTOR_CLASS std::vector -#elif !defined(__USE_DEV_VECTOR) -#define VECTOR_CLASS cl::vector - -#if !defined(__MAX_DEFAULT_VECTOR_SIZE) -#define __MAX_DEFAULT_VECTOR_SIZE 10 -#endif - -/*! \class vector - * \brief Fixed sized vector implementation that mirroring - * - * \note Deprecated. Please use std::vector as default or - * re-define the vector class to match the std::vector - * interface by defining VECTOR_CLASS - - * \note Not recommended for use with custom objects as - * current implementation will construct N elements - * - * std::vector functionality. - * \brief Fixed sized vector compatible with std::vector. - * - * \note - * This differs from std::vector<> not just in memory allocation, - * but also in terms of when members are constructed, destroyed, - * and assigned instead of being copy constructed. - * - * \param T type of element contained in the vector. - * - * \param N maximum size of the vector. - */ -template -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector -{ -private: - T data_[N]; - unsigned int size_; - -public: - //! \brief Constructs an empty vector with no memory allocated. - vector() : - size_(static_cast(0)) - {} - - //! \brief Deallocates the vector's memory and destroys all of its elements. - ~vector() - { - clear(); - } - - //! \brief Returns the number of elements currently contained. - unsigned int size(void) const - { - return size_; - } - - /*! \brief Empties the vector of all elements. - * \note - * This does not deallocate memory but will invoke destructors - * on contained elements. - */ - void clear() - { - while(!empty()) { - pop_back(); - } - } - - /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an - * exception if exceptions are enabled. - */ - void push_back (const T& x) - { - if (size() < N) { - new (&data_[size_]) T(x); - size_++; - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - } - - /*! \brief Removes the last valid element from the vector. - * Calling this on an empty vector will throw an exception - * if exceptions are enabled. - */ - void pop_back(void) - { - if (size_ != 0) { - --size_; - data_[size_].~T(); - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - } - - /*! \brief Constructs with a value copied from another. - * - * \param vec the vector to copy. - */ - vector(const vector& vec) : - size_(vec.size_) - { - if (size_ != 0) { - assign(vec.begin(), vec.end()); - } - } - - /*! \brief Constructs with a specified number of initial elements. - * - * \param size number of initial elements. - * - * \param val value of initial elements. - */ - vector(unsigned int size, const T& val = T()) : - size_(0) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } - } - - /*! \brief Overwrites the current content with that copied from another - * instance. - * - * \param rhs vector to copy. - * - * \returns a reference to this. - */ - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ != 0) { - assign(rhs.begin(), rhs.end()); - } else { - clear(); - } - - return *this; - } - - /*! \brief Tests equality against another instance. - * - * \param vec the vector against which to compare. - */ - bool operator==(vector &vec) - { - if (size() != vec.size()) { - return false; - } - - for( unsigned int i = 0; i < size(); ++i ) { - if( operator[](i) != vec[i] ) { - return false; - } - } - return true; - } - - //! \brief Conversion operator to T*. - operator T* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const T* () const { return data_; } - - //! \brief Tests whether this instance has any elements. - bool empty (void) const - { - return size_==0; - } - - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int max_size (void) const - { - return N; - } - - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int capacity () const - { - return N; - } - - //! \brief Resizes the vector to the given size - void resize(unsigned int newSize, T fill = T()) - { - if (newSize > N) - { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - else - { - while (size_ < newSize) - { - new (&data_[size_]) T(fill); - size_++; - } - while (size_ > newSize) - { - --size_; - data_[size_].~T(); - } - } - } - - /*! \brief Returns a reference to a given element. - * - * \param index which element to access. * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - T& operator[](int index) - { - return data_[index]; - } - - /*! \brief Returns a const reference to a given element. - * - * \param index which element to access. - * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - const T& operator[](int index) const - { - return data_[index]; - } - - /*! \brief Assigns elements of the vector based on a source iterator range. - * - * \param start Beginning iterator of source range - * \param end Enditerator of source range - * - * \note - * Will throw an exception if exceptions are enabled and size exceeded. - */ - template - void assign(I start, I end) - { - clear(); - while(start != end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Const iterator class for vectors - */ - class iterator - { - private: - const vector *vec_; - int index_; - - /** - * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking - * the vector by copy. - */ - iterator (const vector &vec, int index) : - vec_(&vec) - { - if( !vec.empty() ) { - index_ = index; - } else { - index_ = -1; - } - } - - public: - iterator(void) : - index_(-1), - vec_(NULL) - { - } - - iterator(const iterator& rhs) : - vec_(rhs.vec_), - index_(rhs.index_) - { - } - - ~iterator(void) {} - - static iterator begin(const cl::vector &vec) - { - iterator i(vec, 0); - - return i; - } - - static iterator end(const cl::vector &vec) - { - iterator i(vec, vec.size()); - - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - iterator& operator++() - { - ++index_; - return *this; - } - - iterator operator++(int) - { - iterator retVal(*this); - ++index_; - return retVal; - } - - iterator& operator--() - { - --index_; - return *this; - } - - iterator operator--(int) - { - iterator retVal(*this); - --index_; - return retVal; - } - - const T& operator *() const - { - return (*vec_)[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator begin(void) const - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - iterator end(void) const - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_-1]; - } -} CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) - - - - - -namespace detail { -#define __DEFAULT_NOT_INITIALIZED 1 -#define __DEFAULT_BEING_INITIALIZED 2 -#define __DEFAULT_INITIALIZED 4 - - /* - * Compare and exchange primitives are needed for handling of defaults - */ - -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(std::atomic * dest, int exchange, int comparand) -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(volatile int * dest, int exchange, int comparand) -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - { -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_compare_exchange_strong(dest, &comparand, exchange); - return comparand; -#elif _MSC_VER - return (int)(_InterlockedCompareExchange( - (volatile long*)dest, - (long)exchange, - (long)comparand)); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - return (__sync_val_compare_and_swap( - dest, - comparand, - exchange)); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } - - inline void fence() { -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_thread_fence(std::memory_order_seq_cst); -#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED - _ReadWriteBarrier(); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - __sync_synchronize(); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } -} // namespace detail - - -/*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ -template -class size_t -{ -private: - ::size_t data_[N]; - -public: - //! \brief Initialize size_t to all 0s - size_t() - { - for( int i = 0; i < N; ++i ) { - data_[i] = 0; - } - } - - ::size_t& operator[](int index) - { - return data_[index]; - } - - const ::size_t& operator[](int index) const - { - return data_[index]; - } - - //! \brief Conversion operator to T*. - operator ::size_t* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const ::size_t* () const { return data_; } -}; - -namespace detail { - -// Generic getInfoHelper. The final parameter is used to guide overload -// resolution: the actual parameter passed is an int, which makes this -// a worse conversion sequence than a specialization that declares the -// parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); -} - -// Specialized getInfoHelper for VECTOR_CLASS params -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; -} - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, typename T::cl_type = 0) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - typename T::cl_type * value = (typename T::cl_type *) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - ::size_t elements = required / sizeof(typename T::cl_type); - param->assign(&value[0], &value[elements]); - for (::size_t i = 0; i < elements; i++) - { - if (value[i] != NULL) - { - err = (*param)[i].retain(); - if (err != CL_SUCCESS) { - return err; - } - } - } - return CL_SUCCESS; -} - -// Specialized for getInfo -template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) -{ - cl_int err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); - - if (err != CL_SUCCESS) { - return err; - } - - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for STRING_CLASS params -template -inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) -{ -#if defined(__NO_STD_VECTOR) || defined(__NO_STD_STRING) - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - char* value = (char*)alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - *param = value; - return CL_SUCCESS; -#else - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - // std::string has a constant data member - // a char vector does not - VECTOR_CLASS value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(value.begin(), value.end()); - } -#endif - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for cl::size_t params -template -inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - ::size_t* value = (::size_t*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - for(int i = 0; i < N; ++i) { - (*param)[i] = value[i]; - } - - return CL_SUCCESS; -} - -template struct ReferenceHandler; - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); - if (err != CL_SUCCESS) { - return err; - } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; -} - -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) - -#if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 - - -#if defined(CL_VERSION_1_2) -#define __PARAM_NAME_INFO_1_2(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ - \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) -#endif // #if defined(CL_VERSION_1_2) - -#if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION - -template -struct param_traits {}; - -#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; - -__PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) -#if defined(CL_VERSION_1_1) -__PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 -#if defined(CL_VERSION_1_2) -__PARAM_NAME_INFO_1_2(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 - -#if defined(USE_CL_DEVICE_FISSION) -__PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION - -#ifdef CL_PLATFORM_ICD_SUFFIX_KHR -__CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) -#endif - -#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong) -#endif - -#ifdef CL_DEVICE_GLOBAL_FREE_MEMORY_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, VECTOR_CLASS< ::size_t>) -#endif -#ifdef CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_WAVEFRONT_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_WAVEFRONT_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) -#endif - -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint) -#endif -#ifdef CL_DEVICE_WARP_SIZE_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint) -#endif -#ifdef CL_DEVICE_GPU_OVERLAP_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool) -#endif -#ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool) -#endif -#ifdef CL_DEVICE_INTEGRATED_MEMORY_NV -__CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool) -#endif - -// Convenience functions - -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); -} - -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } -}; - -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } -}; - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); -} - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); -} - -template -struct ReferenceHandler -{ }; - -#if defined(CL_VERSION_1_2) -/** - * OpenCL 1.2 devices do have retain/release. - */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } -}; -#else // #if defined(CL_VERSION_1_2) -/** - * OpenCL 1.1 devices do not have retain/release. - */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } -}; -#endif // #if defined(CL_VERSION_1_2) - -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } -}; - - -// Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const char *versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } - ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; -} - -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - ::size_t size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - char *versionInfo = (char *) alloca(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); - return getVersion(versionInfo); -} - -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); -} - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - ::size_t size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - cl_device_id *devices = (cl_device_id *) alloca(size); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); - return getDevicePlatformVersion(devices[0]); -} -#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -template -class Wrapper -{ -public: - typedef T cl_type; - -protected: - cl_type object_; - -public: - Wrapper() : object_(NULL) { } - - Wrapper(const cl_type &obj) : object_(obj) { } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - rhs.object_ = NULL; - } -#endif - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } -#endif - - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - return *this; - } - - cl_type operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } - - cl_int release() const - { - return ReferenceHandler::release(object_); - } -}; - -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; - -protected: - cl_type object_; - bool referenceCountable_; - - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } - return retVal; - } - -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } - - Wrapper(const cl_type &obj) : object_(obj), referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } -#endif - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } -#endif - - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - cl_type operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); - - cl_int retain() const - { - if( referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if( referenceCountable_ ) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -} // namespace detail -//! \endcond - -/*! \stuct ImageFormat - * \brief Adds constructors and member functions for cl_image_format. - * - * \see cl_image_format - */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} - - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } - - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; - } -}; - -/*! \brief Class interface for cl_device_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_device_id - */ -class Device : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } - - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id &device) : detail::Wrapper(device) { } - - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault(cl_int * err = NULL); - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ -#if defined(CL_VERSION_1_2) - //! \brief Wrapper for clCreateSubDevicesEXT(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - VECTOR_CLASS* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = clCreateSubDevices(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif // #if defined(CL_VERSION_1_2) - -/** - * CL 1.1 version that uses device fission. - */ -#if defined(CL_VERSION_1_1) -#if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif // #if defined(USE_CL_DEVICE_FISSION) -#endif // #if defined(CL_VERSION_1_1) -}; - -/*! \brief Class interface for cl_platform_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_platform_id - */ -class Platform : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } - - /*! \brief Constructor from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id &platform) : detail::Wrapper(platform) { } - - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } - -#if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); - - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif - - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; - - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_uint n = 0; - - if( platform == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - *platform = ids[0]; - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform, returning it by value. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - Platform platform; - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - - return Platform(ids[0]); - } - - static Platform getDefault( - cl_int *errResult = NULL ) - { - return get(errResult); - } - - -#if defined(CL_VERSION_1_2) - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // #if defined(CL_VERSION_1_2) -}; // class Platform - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -/** - * Unload the OpenCL compiler. - * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_VERSION_1_1) - -/*! \brief Class interface for cl_context. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_context as the original. For details, see - * clRetainContext() and clReleaseContext(). - * - * \see cl_context - */ -class Context - : public detail::Wrapper -{ -private: - -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static Context default_; - static volatile cl_int default_error_; -public: - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - VECTOR_CLASS platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - VECTOR_CLASS devices; - -#if defined(__CL_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(__CL_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - NULL, - NULL, - NULL, - &error); - - detail::fence(); - - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - } - else { - formats->clear(); - } - return CL_SUCCESS; - } -}; - -inline Device Device::getDefault(cl_int * err) -{ - cl_int error; - Device device; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - device = context.getInfo()[0]; - if (err != NULL) { - *err = CL_SUCCESS; - } - } - - return device; -} - - -#ifdef _WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) Context Context::default_; -__declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; -#else // !_WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) Context Context::default_; -__attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; -#endif // !_WIN32 - -/*! \brief Class interface for cl_event. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_event as the original. For details, see - * clRetainEvent() and clReleaseEvent(). - * - * \see cl_event - */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } - - /*! \brief Constructor from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) { } - - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } - - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } - -#if defined(CL_VERSION_1_1) - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif - - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } -}; - -#if defined(CL_VERSION_1_1) -/*! \brief Class interface for user events (a subset of cl_event's). - * - * See Event for details about copy semantics, etc. - */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); - - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } - - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } -}; -#endif - -/*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); -} - -/*! \brief Class interface for cl_mem. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_mem as the original. For details, see - * clRetainMemObject() and clReleaseMemObject(). - * - * \see cl_mem - */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_mem - * into the new Memory object. - */ - __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) { } - - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(CL_VERSION_1_1) - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif - -}; - -// Pre-declare copy functions -class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); - - -/*! \brief Class interface for Buffer Memory Objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Buffer : public Memory -{ -public: - - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - -#if defined(CL_VERSION_1_1) - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); - - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; - } -#endif -}; - -#if defined (USE_DX_INTEROP) -/*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. - * - * This is provided to facilitate interoperability with Direct3D. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; - -#if defined(CL_VERSION_1_2) - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); -#endif -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); -#endif - - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif - -/*! \brief Class interface for GL Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief C++ base class for Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -#if defined(CL_VERSION_1_2) -/*! \brief Class interface for 1D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image1D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -/*! \class Image1DBuffer - * \brief Image interface for 1D buffer images. - */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DBuffer() { } - - __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) { } - - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -/*! \class Image1DArray - * \brief Image interface for arrays of 1D images. - */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DArray() { } - - __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) { } - - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - - -/*! \brief Class interface for 2D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - - -#if !defined(CL_VERSION_1_2) -/*! \brief Class interface for GL 2D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } - - } - - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if !defined(CL_VERSION_1_2) - -#if defined(CL_VERSION_1_2) -/*! \class Image2DArray - * \brief Image interface for arrays of 2D images. - */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t height, - ::size_t rowPitch, - ::size_t slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2DArray() { } - - __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) { } - - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - -/*! \brief Class interface for 3D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -#if !defined(CL_VERSION_1_2) -/*! \brief Class interface for GL 3D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if !defined(CL_VERSION_1_2) - -#if defined(CL_VERSION_1_2) -/*! \class ImageGL - * \brief general image interface for GL interop. - * We abstract the 2D and 3D GL images into a single instance here - * that wraps all GL sourced images on the grounds that setup information - * was performed by OpenCL anyway. - */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } - } - - ImageGL() : Image() { } - - __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) { } - - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; -#endif // #if defined(CL_VERSION_1_2) - -/*! \brief Class interface for GL Render Buffer Memory Objects. -* -* This is provided to facilitate interoperability with OpenGL. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class BufferRenderGL : -#if defined(CL_VERSION_1_2) - public ImageGL -#else // #if defined(CL_VERSION_1_2) - public Image2DGL -#endif //#if defined(CL_VERSION_1_2) -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. -#if defined(CL_VERSION_1_2) - BufferRenderGL() : ImageGL() {}; -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL() : Image2DGL() {}; -#endif //#if defined(CL_VERSION_1_2) - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ -#if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) { } -#else // #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) { } -#endif //#if defined(CL_VERSION_1_2) - - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ -#if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} -#endif //#if defined(CL_VERSION_1_2) - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &rhs) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ -#if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} -#endif //#if defined(CL_VERSION_1_2) - - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { -#if defined(CL_VERSION_1_2) - ImageGL::operator=(std::move(buf)); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(std::move(buf)); -#endif //#if defined(CL_VERSION_1_2) - - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_, type, gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief Class interface for cl_sampler. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_sampler as the original. For details, see - * clRetainSampler() and clReleaseSampler(). - * - * \see cl_sampler - */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } - - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -class Program; -class CommandQueue; -class Kernel; - -//! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; - -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { } - - //! \brief Constructs one-dimensional range. - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_[0] = size0; - } - - //! \brief Constructs two-dimensional range. - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - } - - //! \brief Constructs three-dimensional range. - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } - - /*! \brief Conversion operator to const ::size_t *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const ::size_t*() const { - return (const ::size_t*) sizes_; - } - - //! \brief Queries the number of dimensions in the range. - ::size_t dimensions() const { return dimensions_; } -}; - -//! \brief A zero-dimensional range. -static const NDRange NullRange; - -//! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - ::size_t size_; -}; - -namespace detail { - -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } -}; - -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } -}; - -} -//! \endcond - -/*! __local - * \brief Helper function for generating LocalSpaceArg objects. - * Deprecated. Replaced with Local. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg -__local(::size_t size) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -/*! Local - * \brief Helper function for generating LocalSpaceArg objects. - */ -inline LocalSpaceArg -Local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -//class KernelFunctor; - -/*! \brief Class interface for cl_kernel. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_kernel as the original. For details, see - * clRetainKernel() and clReleaseKernel(). - * - * \see cl_kernel - */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Kernel() { } - - /*! \brief Constructor from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) { } - - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(CL_VERSION_1_2) - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // #if defined(CL_VERSION_1_2) - - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } - - cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } -}; - -/*! \class Program - * \brief Program interface that implements cl_program. - */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; - - Program( - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const ::size_t length = source.size(); - - Context context = Context::getDefault(err); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const ::size_t length = source.size(); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); - - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; - - const ::size_t numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - ::size_t* lengths = (::size_t*) alloca(numDevices * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(numDevices * sizeof(const unsigned char**)); - - for (::size_t i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } - - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs, - lengths, images, (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - } - - -#if defined(CL_VERSION_1_2) - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const STRING_CLASS& kernelNames, - cl_int* err = NULL) - { - cl_int error; - - - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs, - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) - - Program() { } - - __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) : detail::Wrapper(program) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } - -#if defined(CL_VERSION_1_2) - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data), - __COMPILE_PROGRAM_ERR); - } -#endif - - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } -}; - -#if defined(CL_VERSION_1_2) -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program programs[2] = { input1(), input2() }; - - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} - -inline Program linkProgram( - VECTOR_CLASS inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program * programs = (cl_program*) alloca(inputPrograms.size() * sizeof(cl_program)); - - if (programs != NULL) { - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } - } - - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} -#endif - -template<> -inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const -{ - VECTOR_CLASS< ::size_t> sizes = getInfo(); - VECTOR_CLASS binaries; - for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) - { - char *ptr = NULL; - if (*s != 0) - ptr = new char[*s]; - binaries.push_back(ptr); - } - - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); - if (err != NULL) { - *err = result; - } - return binaries; -} - -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; - - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } - -} - -/*! \class CommandQueue - * \brief CommandQueue interface for cl_command_queue. - */ -class CommandQueue : public detail::Wrapper -{ -private: -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static CommandQueue default_; - static volatile cl_int default_error_; -public: - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - } - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - VECTOR_CLASS devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - - object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (err != NULL) { - *err = error; - } - - } - - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - static CommandQueue getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - default_ = CommandQueue(context, device, 0, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - - detail::fence(); - - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - - } - - CommandQueue() { } - - __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper(commandQueue) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_VERSION_1_2) - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const VECTOR_CLASS &memObjects, - cl_mem_migration_flags flags, - const VECTOR_CLASS* events = NULL, - Event* event = NULL - ) - { - cl_event tmp; - - cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } - - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - static_cast(localMemObjects), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // #if defined(CL_VERSION_1_1) - - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); - - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; -#if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); -#endif -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); -#endif - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; -#if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_2) -#if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_1) - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // #if defined(CL_VERSION_1_1) - - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } - - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; - -#ifdef _WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__declspec(selectany) CommandQueue CommandQueue::default_; -__declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#else // !_WIN32 -#ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED -__attribute__((weak)) CommandQueue CommandQueue::default_; -__attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#endif // !_WIN32 - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; -} - -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; -} - -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, startIterator, endIterator, buffer); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, buffer, startIterator, endIterator); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } -#if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); -#else - std::copy(startIterator, endIterator, pointer); -#endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -#if defined(CL_VERSION_1_1) -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); -} -#endif - -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); -} - -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); -} - -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); -} - - -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.flush(); -} - -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - - return queue.finish(); -} - -// Kernel Functor support -// New interface as of September 2011 -// Requires the C++11 std::tr1::function (note do not support TR1) -// Visual Studio 2010 and GCC 4.2 - -struct EnqueueArgs -{ - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - VECTOR_CLASS events_; - - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } -}; - -namespace detail { - -class NullType {}; - -template -struct SetArg -{ - static void set (Kernel kernel, T0 arg) - { - kernel.setArg(index, arg); - } -}; - -template -struct SetArg -{ - static void set (Kernel, NullType) - { - } -}; - -template < - typename T0, typename T1, typename T2, typename T3, - typename T4, typename T5, typename T6, typename T7, - typename T8, typename T9, typename T10, typename T11, - typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, - typename T20, typename T21, typename T22, typename T23, - typename T24, typename T25, typename T26, typename T27, - typename T28, typename T29, typename T30, typename T31 -> -class KernelFunctorGlobal -{ -private: - Kernel kernel_; - -public: - KernelFunctorGlobal( - Kernel kernel) : - kernel_(kernel) - {} - - KernelFunctorGlobal( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} - - Event operator() ( - const EnqueueArgs& args, - T0 t0, - T1 t1 = NullType(), - T2 t2 = NullType(), - T3 t3 = NullType(), - T4 t4 = NullType(), - T5 t5 = NullType(), - T6 t6 = NullType(), - T7 t7 = NullType(), - T8 t8 = NullType(), - T9 t9 = NullType(), - T10 t10 = NullType(), - T11 t11 = NullType(), - T12 t12 = NullType(), - T13 t13 = NullType(), - T14 t14 = NullType(), - T15 t15 = NullType(), - T16 t16 = NullType(), - T17 t17 = NullType(), - T18 t18 = NullType(), - T19 t19 = NullType(), - T20 t20 = NullType(), - T21 t21 = NullType(), - T22 t22 = NullType(), - T23 t23 = NullType(), - T24 t24 = NullType(), - T25 t25 = NullType(), - T26 t26 = NullType(), - T27 t27 = NullType(), - T28 t28 = NullType(), - T29 t29 = NullType(), - T30 t30 = NullType(), - T31 t31 = NullType() - ) - { - Event event; - SetArg<0, T0>::set(kernel_, t0); - SetArg<1, T1>::set(kernel_, t1); - SetArg<2, T2>::set(kernel_, t2); - SetArg<3, T3>::set(kernel_, t3); - SetArg<4, T4>::set(kernel_, t4); - SetArg<5, T5>::set(kernel_, t5); - SetArg<6, T6>::set(kernel_, t6); - SetArg<7, T7>::set(kernel_, t7); - SetArg<8, T8>::set(kernel_, t8); - SetArg<9, T9>::set(kernel_, t9); - SetArg<10, T10>::set(kernel_, t10); - SetArg<11, T11>::set(kernel_, t11); - SetArg<12, T12>::set(kernel_, t12); - SetArg<13, T13>::set(kernel_, t13); - SetArg<14, T14>::set(kernel_, t14); - SetArg<15, T15>::set(kernel_, t15); - SetArg<16, T16>::set(kernel_, t16); - SetArg<17, T17>::set(kernel_, t17); - SetArg<18, T18>::set(kernel_, t18); - SetArg<19, T19>::set(kernel_, t19); - SetArg<20, T20>::set(kernel_, t20); - SetArg<21, T21>::set(kernel_, t21); - SetArg<22, T22>::set(kernel_, t22); - SetArg<23, T23>::set(kernel_, t23); - SetArg<24, T24>::set(kernel_, t24); - SetArg<25, T25>::set(kernel_, t25); - SetArg<26, T26>::set(kernel_, t26); - SetArg<27, T27>::set(kernel_, t27); - SetArg<28, T28>::set(kernel_, t28); - SetArg<29, T29>::set(kernel_, t29); - SetArg<30, T30>::set(kernel_, t30); - SetArg<31, T31>::set(kernel_, t31); - - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - -}; - -//------------------------------------------------------------------------------------------------------ - - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30, - typename T31> -struct functionImplementation_ -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30, - T31 arg31) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30, - arg31); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4); - } - - -}; - -template< - typename T0, - typename T1, - typename T2, - typename T3> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3); - } - - -}; - -template< - typename T0, - typename T1, - typename T2> -struct functionImplementation_ -< T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2); - } - - -}; - -template< - typename T0, - typename T1> -struct functionImplementation_ -< T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1) - { - return functor_( - enqueueArgs, - arg0, - arg1); - } - - -}; - -template< - typename T0> -struct functionImplementation_ -< T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; - - FunctorType functor_; - - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { - - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0) - { - return functor_( - enqueueArgs, - arg0); - } - - -}; - - - - - -} // namespace detail - -//---------------------------------------------------------------------------------------------- - -template < - typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, - typename T3 = detail::NullType, typename T4 = detail::NullType, - typename T5 = detail::NullType, typename T6 = detail::NullType, - typename T7 = detail::NullType, typename T8 = detail::NullType, - typename T9 = detail::NullType, typename T10 = detail::NullType, - typename T11 = detail::NullType, typename T12 = detail::NullType, - typename T13 = detail::NullType, typename T14 = detail::NullType, - typename T15 = detail::NullType, typename T16 = detail::NullType, - typename T17 = detail::NullType, typename T18 = detail::NullType, - typename T19 = detail::NullType, typename T20 = detail::NullType, - typename T21 = detail::NullType, typename T22 = detail::NullType, - typename T23 = detail::NullType, typename T24 = detail::NullType, - typename T25 = detail::NullType, typename T26 = detail::NullType, - typename T27 = detail::NullType, typename T28 = detail::NullType, - typename T29 = detail::NullType, typename T30 = detail::NullType, - typename T31 = detail::NullType -> -struct make_kernel : - public detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - > -{ -public: - typedef detail::KernelFunctorGlobal< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - > FunctorType; - - make_kernel( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - >( - FunctorType(program, name, err)) - {} - - make_kernel( - const Kernel kernel) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 - >( - FunctorType(kernel)) - {} -}; - - -//---------------------------------------------------------------------------------------------------------------------- - -#undef __ERR_STR -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_ARG_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_ERR -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR -#undef __SET_PRINTF_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __CL_EXPLICIT_CONSTRUCTORS - -#undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS - -#undef __CL_FUNCTION_TYPE - -// Extensions -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_VERSION_1_1) -#undef __INIT_CL_EXT_FCN_PTR -#endif // #if defined(CL_VERSION_1_1) -#undef __CREATE_SUB_DEVICES - -#if defined(USE_CL_DEVICE_FISSION) -#undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION - -#undef __DEFAULT_NOT_INITIALIZED -#undef __DEFAULT_BEING_INITIALIZED -#undef __DEFAULT_INITIALIZED - -#undef CL_HPP_RVALUE_REFERENCES_SUPPORTED -#undef CL_HPP_NOEXCEPT - -} // namespace cl - -#endif // CL_HPP_ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl2.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl2.hpp deleted file mode 100644 index 50de6e5431b720..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl2.hpp +++ /dev/null @@ -1,9522 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/*! \file - * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33), - * OpenCL 1.2 (rev 15) and OpenCL 2.0 (rev 29) - * \author Lee Howes and Bruce Merry - * - * Derived from the OpenCL 1.x C++ bindings written by - * Benedict R. Gaster, Laurent Morichetti and Lee Howes - * With additions and fixes from: - * Brian Cole, March 3rd 2010 and April 2012 - * Matt Gruenke, April 2012. - * Bruce Merry, February 2013. - * Tom Deakin and Simon McIntosh-Smith, July 2013 - * James Price, June-November 2015 - * - * \version 2.0.8 - * \date 2015-11-03 - * - * Optional extension support - * - * cl_ext_device_fission - * #define CL_HPP_USE_CL_DEVICE_FISSION - * cl_khr_d3d10_sharing - * #define CL_HPP_USE_DX_INTEROP - * cl_khr_sub_groups - * #define CL_HPP_USE_CL_SUB_GROUPS_KHR - */ - -/*! \mainpage - * \section intro Introduction - * For many large applications C++ is the language of choice and so it seems - * reasonable to define C++ bindings for OpenCL. - * - * The interface is contained with a single C++ header file \em cl2.hpp and all - * definitions are contained within the namespace \em cl. There is no additional - * requirement to include \em cl.h and to use either the C++ or original C - * bindings; it is enough to simply include \em cl.hpp. - * - * The bindings themselves are lightweight and correspond closely to the - * underlying C API. Using the C++ bindings introduces no additional execution - * overhead. - * - * There are numerous compatibility, portability and memory management - * fixes in the new header as well as additional OpenCL 2.0 features. - * As a result the header is not directly backward compatible and for this - * reason we release it as cl2.hpp rather than a new version of cl.hpp. - * - * - * \section compatibility Compatibility - * Due to the evolution of the underlying OpenCL API the 2.0 C++ bindings - * include an updated approach to defining supported feature versions - * and the range of valid underlying OpenCL runtime versions supported. - * - * The combination of preprocessor macros CL_HPP_TARGET_OPENCL_VERSION and - * CL_HPP_MINIMUM_OPENCL_VERSION control this range. These are three digit - * decimal values representing OpenCL runime versions. The default for - * the target is 200, representing OpenCL 2.0 and the minimum is also - * defined as 200. These settings would use 2.0 API calls only. - * If backward compatibility with a 1.2 runtime is required, the minimum - * version may be set to 120. - * - * Note that this is a compile-time setting, and so affects linking against - * a particular SDK version rather than the versioning of the loaded runtime. - * - * The earlier versions of the header included basic vector and string - * classes based loosely on STL versions. These were difficult to - * maintain and very rarely used. For the 2.0 header we now assume - * the presence of the standard library unless requested otherwise. - * We use std::array, std::vector, std::shared_ptr and std::string - * throughout to safely manage memory and reduce the chance of a - * recurrance of earlier memory management bugs. - * - * These classes are used through typedefs in the cl namespace: - * cl::array, cl::vector, cl::pointer and cl::string. - * In addition cl::allocate_pointer forwards to std::allocate_shared - * by default. - * In all cases these standard library classes can be replaced with - * custom interface-compatible versions using the CL_HPP_NO_STD_ARRAY, - * CL_HPP_NO_STD_VECTOR, CL_HPP_NO_STD_UNIQUE_PTR and - * CL_HPP_NO_STD_STRING macros. - * - * The OpenCL 1.x versions of the C++ bindings included a size_t wrapper - * class to interface with kernel enqueue. This caused unpleasant interactions - * with the standard size_t declaration and led to namespacing bugs. - * In the 2.0 version we have replaced this with a std::array-based interface. - * However, the old behaviour can be regained for backward compatibility - * using the CL_HPP_ENABLE_SIZE_T_COMPATIBILITY macro. - * - * Finally, the program construction interface used a clumsy vector-of-pairs - * design in the earlier versions. We have replaced that with a cleaner - * vector-of-vectors and vector-of-strings design. However, for backward - * compatibility old behaviour can be regained with the - * CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY macro. - * - * In OpenCL 2.0 OpenCL C is not entirely backward compatibility with - * earlier versions. As a result a flag must be passed to the OpenCL C - * compiled to request OpenCL 2.0 compilation of kernels with 1.2 as - * the default in the absence of the flag. - * In some cases the C++ bindings automatically compile code for ease. - * For those cases the compilation defaults to OpenCL C 2.0. - * If this is not wanted, the CL_HPP_CL_1_2_DEFAULT_BUILD macro may - * be specified to assume 1.2 compilation. - * If more fine-grained decisions on a per-kernel bases are required - * then explicit build operations that take the flag should be used. - * - * - * \section parameterization Parameters - * This header may be parameterized by a set of preprocessor macros. - * CL_HPP_TARGET_OPENCL_VERSION - * - Defines the target OpenCL runtime version to build the header against. - * Defaults to 200, representing OpenCL 2.0. - * CL_HPP_NO_STD_STRING - * - Do not use the standard library string class. - * cl::string is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_VECTOR - * - Do not use the standard library vector class. - * cl::vector is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_ARRAY - * - Do not use the standard library array class. - * cl::array is not defined and may be defined by the user before - * cl2.hpp is included. - * CL_HPP_NO_STD_UNIQUE_PTR - * - Do not use the standard library unique_ptr class. - * cl::pointer and the cl::allocate_pointer function are not defined - * and may be defined by the user before cl2.hpp is included. - * CL_HPP_ENABLE_DEVICE_FISSION - * - Enables device fission for OpenCL 1.2 platforms - * CL_HPP_ENABLE_EXCEPTIONS - * - Enable exceptions for use in the C++ bindings header. - * This is the preferred error handling mechanism but is not required. - * CL_HPP_ENABLE_SIZE_T_COMPATIBILITY - * - Backward compatibility option to support cl.hpp-style size_t class. - * Replaces the updated std::array derived version and removal of size_t - * from the namespace. Note that in this case the new size_t class - * is placed in the cl::compatibility namespace and thus requires - * an additional using declaration for direct backward compatibility. - * CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY - * - Enable older vector of pairs interface for construction of programs. - * CL_HPP_CL_1_2_DEFAULT_BUILD - * - Default to OpenCL C 1.2 compilation rather than OpenCL C 2.0 - * - applies to use of cl::Program construction and other program build variants. - * - * - * \section example Example - * - * The following example shows a general use case for the C++ - * bindings, including support for the optional exception feature and - * also the supplied vector and string classes, see following sections for - * decriptions of these features. - * - * \code - #define CL_HPP_ENABLE_EXCEPTIONS - #define CL_HPP_TARGET_OPENCL_VERSION 200 - - #include - #include - #include - #include - #include - - const int numElements = 32; - - int main(void) - { - // Filter for a 2.0 platform and set it as the default - std::vector platforms; - cl::Platform::get(&platforms); - cl::Platform plat; - for (auto &p : platforms) { - std::string platver = p.getInfo(); - if (platver.find("OpenCL 2.") != std::string::npos) { - plat = p; - } - } - if (plat() == 0) { - std::cout << "No OpenCL 2.0 platform found."; - return -1; - } - - cl::Platform newP = cl::Platform::setDefault(plat); - if (newP != plat) { - std::cout << "Error setting default platform."; - return -1; - } - - std::string kernel1{ - "global int globalA;" - "kernel void updateGlobal(){" - " globalA = 75;" - "}"}; - std::string kernel2{ - "typedef struct { global int *bar; } Foo; kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, global int *output, int val, write_only pipe int outPipe, queue_t childQueue){" - " output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar);" - " write_pipe(outPipe, &val);" - " queue_t default_queue = get_default_queue(); " - " ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); " - // Have a child kernel write into third quarter of output - " enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*2 + get_global_id(0)] = inputA[get_global_size(0)*2+get_global_id(0)] + inputB[get_global_size(0)*2+get_global_id(0)] + globalA;" - " });" - // Have a child kernel write into last quarter of output - " enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, " - " ^{" - " output[get_global_size(0)*3 + get_global_id(0)] = inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2;" - " });" - "}" }; - - // New simpler string interface style - std::vector programStrings {kernel1, kernel2}; - - cl::Program vectorAddProgram( - programStrings); - try { - vectorAddProgram.build("-cl-std=CL2.0"); - } - catch (...) { - // Print build info for all devices - cl_int buildErr = CL_SUCCESS; - auto buildInfo = vectorAddProgram.getBuildInfo(&buildErr); - for (auto &pair : buildInfo) { - std::cerr << pair.second << std::endl << std::endl; - } - - return 1; - } - - typedef struct { int *bar; } Foo; - - // Get and run kernel that initializes the program-scope global - // A test for kernels that take no arguments - auto program2Kernel = - cl::KernelFunctor<>(vectorAddProgram, "updateGlobal"); - program2Kernel( - cl::EnqueueArgs( - cl::NDRange(1))); - - ////////////////// - // SVM allocations - - cl::pointer anSVMInt = cl::allocate_svm>(); - *anSVMInt = 5; - cl::SVMAllocator>> svmAllocReadOnly; - auto fooPointer = cl::allocate_pointer(svmAllocReadOnly); - fooPointer->bar = anSVMInt.get(); - cl::SVMAllocator> svmAlloc; - std::vector>> inputA(numElements, 1, svmAlloc); - cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); - - // - ////////////// - - // Traditional cl_mem allocations - std::vector output(numElements, 0xdeadbeef); - cl::Buffer outputBuffer(begin(output), end(output), false); - cl::Pipe aPipe(sizeof(cl_int), numElements / 2); - - // Default command queue, also passed in as a parameter - cl::DeviceCommandQueue defaultDeviceQueue = cl::DeviceCommandQueue::makeDefault( - cl::Context::getDefault(), cl::Device::getDefault()); - - auto vectorAddKernel = - cl::KernelFunctor< - decltype(fooPointer)&, - int*, - cl::coarse_svm_vector&, - cl::Buffer, - int, - cl::Pipe&, - cl::DeviceCommandQueue - >(vectorAddProgram, "vectorAdd"); - - // Ensure that the additional SVM pointer is available to the kernel - // This one was not passed as a parameter - vectorAddKernel.setSVMPointers(anSVMInt); - - // Hand control of coarse allocations to runtime - cl::enqueueUnmapSVM(anSVMInt); - cl::enqueueUnmapSVM(fooPointer); - cl::unmapSVM(inputB); - cl::unmapSVM(output2); - - cl_int error; - vectorAddKernel( - cl::EnqueueArgs( - cl::NDRange(numElements/2), - cl::NDRange(numElements/2)), - fooPointer, - inputA.data(), - inputB, - outputBuffer, - 3, - aPipe, - defaultDeviceQueue, - error - ); - - cl::copy(outputBuffer, begin(output), end(output)); - // Grab the SVM output vector using a map - cl::mapSVM(output2); - - cl::Device d = cl::Device::getDefault(); - - std::cout << "Output:\n"; - for (int i = 1; i < numElements; ++i) { - std::cout << "\t" << output[i] << "\n"; - } - std::cout << "\n\n"; - - return 0; - } - * - * \endcode - * - */ -#ifndef CL_HPP_ -#define CL_HPP_ - -/* Handle deprecated preprocessor definitions. In each case, we only check for - * the old name if the new name is not defined, so that user code can define - * both and hence work with either version of the bindings. - */ -#if !defined(CL_HPP_USE_DX_INTEROP) && defined(USE_DX_INTEROP) -# pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") -# define CL_HPP_USE_DX_INTEROP -#endif -#if !defined(CL_HPP_USE_CL_DEVICE_FISSION) && defined(USE_CL_DEVICE_FISSION) -# pragma message("cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") -# define CL_HPP_USE_CL_DEVICE_FISSION -#endif -#if !defined(CL_HPP_ENABLE_EXCEPTIONS) && defined(__CL_ENABLE_EXCEPTIONS) -# pragma message("cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") -# define CL_HPP_ENABLE_EXCEPTIONS -#endif -#if !defined(CL_HPP_NO_STD_VECTOR) && defined(__NO_STD_VECTOR) -# pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") -# define CL_HPP_NO_STD_VECTOR -#endif -#if !defined(CL_HPP_NO_STD_STRING) && defined(__NO_STD_STRING) -# pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") -# define CL_HPP_NO_STD_STRING -#endif -#if defined(VECTOR_CLASS) -# pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") -#endif -#if defined(STRING_CLASS) -# pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") -#endif -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) && defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -# pragma message("cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") -# define CL_HPP_USER_OVERRIDE_ERROR_STRINGS -#endif - -/* Warn about features that are no longer supported - */ -#if defined(__USE_DEV_VECTOR) -# pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") -#endif -#if defined(__USE_DEV_STRING) -# pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") -#endif - -/* Detect which version to target */ -#if !defined(CL_HPP_TARGET_OPENCL_VERSION) -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") -# define CL_HPP_TARGET_OPENCL_VERSION 200 -#endif -#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") -# undef CL_HPP_TARGET_OPENCL_VERSION -# define CL_HPP_TARGET_OPENCL_VERSION 200 -#endif - -#if !defined(CL_HPP_MINIMUM_OPENCL_VERSION) -# define CL_HPP_MINIMUM_OPENCL_VERSION 200 -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") -# undef CL_HPP_MINIMUM_OPENCL_VERSION -# define CL_HPP_MINIMUM_OPENCL_VERSION 100 -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION > CL_HPP_TARGET_OPENCL_VERSION -# error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" -#endif - -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_0_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_1_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_2_APIS -#endif -#if CL_HPP_MINIMUM_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_2_0_APIS -#endif - -#ifdef _WIN32 - -#include - -#if defined(CL_HPP_USE_DX_INTEROP) -#include -#include -#endif -#endif // _WIN32 - -#if defined(_MSC_VER) -#include -#endif // _MSC_VER - - // Check for a valid C++ version - -// Need to do both tests here because for some reason __cplusplus is not -// updated in visual studio -#if (!defined(_MSC_VER) && __cplusplus < 201103L) || (defined(_MSC_VER) && _MSC_VER < 1700) -#error Visual studio 2013 or another C++11-supporting compiler required -#endif - -// -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) || defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#include -#endif - -#if defined(__APPLE__) || defined(__MACOSX) -#include -#else -#include -#endif // !__APPLE__ - -#if (__cplusplus >= 201103L) -#define CL_HPP_NOEXCEPT_ noexcept -#else -#define CL_HPP_NOEXCEPT_ -#endif - -#if defined(_MSC_VER) -# define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) -#else -# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) -#endif // !_MSC_VER - -// Define deprecated prefixes and suffixes to ensure compilation -// in case they are not pre-defined -#if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) - -#if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) -#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) -#if !defined(CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED) -#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) - -#if !defined(CL_CALLBACK) -#define CL_CALLBACK -#endif //CL_CALLBACK - -#include -#include -#include -#include -#include -#include - - -// Define a size_type to represent a correctly resolved size_t -#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - using size_type = ::size_t; -} // namespace cl -#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - using size_type = size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) - - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -#include -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - -#if !defined(CL_HPP_NO_STD_VECTOR) -#include -namespace cl { - template < class T, class Alloc = std::allocator > - using vector = std::vector; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_VECTOR) - -#if !defined(CL_HPP_NO_STD_STRING) -#include -namespace cl { - using string = std::string; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_STRING) - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -#include -namespace cl { - // Replace unique_ptr and allocate_pointer for internal use - // to allow user to replace them - template - using pointer = std::unique_ptr; -} // namespace cl -#endif -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#if !defined(CL_HPP_NO_STD_ARRAY) -#include -namespace cl { - template < class T, size_type N > - using array = std::array; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_ARRAY) - -// Define size_type appropriately to allow backward-compatibility -// use of the old size_t interface class -#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) -namespace cl { - namespace compatibility { - /*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ - template - class size_t - { - private: - size_type data_[N]; - - public: - //! \brief Initialize size_t to all 0s - size_t() - { - for (int i = 0; i < N; ++i) { - data_[i] = 0; - } - } - - size_t(const array &rhs) - { - for (int i = 0; i < N; ++i) { - data_[i] = rhs[i]; - } - } - - size_type& operator[](int index) - { - return data_[index]; - } - - const size_type& operator[](int index) const - { - return data_[index]; - } - - //! \brief Conversion operator to T*. - operator size_type* () { return data_; } - - //! \brief Conversion operator to const T*. - operator const size_type* () const { return data_; } - - operator array() const - { - array ret; - - for (int i = 0; i < N; ++i) { - ret[i] = data_[i]; - } - return ret; - } - }; - } // namespace compatibility - - template - using size_t = compatibility::size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) - -// Helper alias to avoid confusing the macros -namespace cl { - namespace detail { - using size_t_array = array; - } // namespace detail -} // namespace cl - - -/*! \namespace cl - * - * \brief The OpenCL C++ bindings are defined within this namespace. - * - */ -namespace cl { - class Memory; - -#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if (!pfn_##name) { \ - } \ - } - -#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if (!pfn_##name) { \ - } \ - } - - class Program; - class Device; - class Context; - class CommandQueue; - class DeviceCommandQueue; - class Memory; - class Buffer; - class Pipe; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - /*! \brief Exception class - * - * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. - */ - class Error : public std::exception - { - private: - cl_int err_; - const char * errStr_; - public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} - - ~Error() throw() {} - - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } - - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } - }; -#define CL_HPP_ERR_STR_(x) #x -#else -#define CL_HPP_ERR_STR_(x) NULL -#endif // CL_HPP_ENABLE_EXCEPTIONS - - -namespace detail -{ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; -} -#else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; -} -#endif // CL_HPP_ENABLE_EXCEPTIONS -} - - - -//! \cond DOXYGEN_DETAIL -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) -#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) - -#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) - -#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) -#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) -#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR CL_HPP_ERR_STR_(clSetMemObjectDestructorCallback) - -#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) - -#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) -#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) -#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) -#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) - -#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) -#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) - - -#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) -#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) -#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) -#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) -#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) - -/** - * CL 1.2 version that uses device fission. - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) -#else -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/** - * Deprecated APIs for 2.0 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) -#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) -#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/** - * CL 1.2 marker and barrier commands - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS -//! \endcond - - -namespace detail { - -// Generic getInfoHelper. The final parameter is used to guide overload -// resolution: the actual parameter passed is an int, which makes this -// a worse conversion sequence than a specialization that declares the -// parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); -} - -// Specialized for getInfo -// Assumes that the output vector was correctly resized on the way in -template -inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Create array of pointers, calculate total size and pass pointer array in - size_type numBinaries = param->size(); - vector binariesPointers(numBinaries); - - size_type totalSize = 0; - for (size_type i = 0; i < numBinaries; ++i) - { - binariesPointers[i] = (*param)[i].data(); - totalSize += (*param)[i].size(); - } - - cl_int err = f(name, totalSize, binariesPointers.data(), NULL); - - if (err != CL_SUCCESS) { - return err; - } - } - - - return CL_SUCCESS; -} - -// Specialized getInfoHelper for vector params -template -inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - const size_type elements = required / sizeof(T); - - // Temporary to avoid changing param on an error - vector localData(elements); - err = f(name, required, localData.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - *param = std::move(localData); - } - - return CL_SUCCESS; -} - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper( - Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - const size_type elements = required / sizeof(typename T::cl_type); - - vector value(elements); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - if (param) { - // Assign to convert CL type to T for each element - param->resize(elements); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < elements; i++) { - (*param)[i] = T(value[i], true); - } - } - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for string params -template -inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - // std::string has a constant data member - // a char vector does not - if (required > 0) { - vector value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(begin(value), prev(end(value))); - } - } - else if (param) { - param->assign(""); - } - return CL_SUCCESS; -} - -// Specialized GetInfoHelper for clsize_t params -template -inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - size_type elements = required / sizeof(size_type); - vector value(elements, 0); - - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - // Bound the copy with N to prevent overruns - // if passed N > than the amount copied - if (elements > N) { - elements = N; - } - for (size_type i = 0; i < elements; ++i) { - (*param)[i] = value[i]; - } - - return CL_SUCCESS; -} - -template struct ReferenceHandler; - -/* Specialization for reference-counted types. This depends on the - * existence of Wrapper::cl_type, and none of the other types having the - * cl_type member. Note that simplify specifying the parameter as Wrapper - * does not work, because when using a derived type (e.g. Context) the generic - * template will provide a better match. - */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); - if (err != CL_SUCCESS) { - return err; - } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; -} - -#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ - F(cl_platform_info, CL_PLATFORM_VERSION, string) \ - F(cl_platform_info, CL_PLATFORM_NAME, string) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, string) \ - F(cl_device_info, CL_DEVICE_VENDOR, string) \ - F(cl_device_info, CL_DRIVER_VERSION, string) \ - F(cl_device_info, CL_DEVICE_PROFILE, string) \ - F(cl_device_info, CL_DEVICE_VERSION, string) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, size_type) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ - F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ - F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_SOURCE, string) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) - - -#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, size_type) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) - -#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ - \ - F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ - F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) - -#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ - F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ - F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ - F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ - F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) - -#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) - -template -struct param_traits {}; - -#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; - -CL_HPP_PARAM_NAME_INFO_1_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - -// Flags deprecated in OpenCL 2.0 -#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) - -#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) - -#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) - -// Include deprecated query flags based on versions -// Only include deprecated 1.0 flags if 2.0 not active as there is an enum clash -#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && CL_HPP_TARGET_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 -#if CL_HPP_TARGET_OPENCL_VERSION > 110 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#if CL_HPP_TARGET_OPENCL_VERSION > 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 -CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 - -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) -CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_); -#endif // CL_HPP_USE_CL_DEVICE_FISSION - -#ifdef CL_PLATFORM_ICD_SUFFIX_KHR -CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, string) -#endif - -#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong) -#endif - -#ifdef CL_DEVICE_GLOBAL_FREE_MEMORY_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, vector) -#endif -#ifdef CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_WAVEFRONT_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WAVEFRONT_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, cl_uint) -#endif -#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) -#endif - -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint) -#endif -#ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint) -#endif -#ifdef CL_DEVICE_WARP_SIZE_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint) -#endif -#ifdef CL_DEVICE_GPU_OVERLAP_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool) -#endif -#ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool) -#endif -#ifdef CL_DEVICE_INTEGRATED_MEMORY_NV -CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool) -#endif - -// Convenience functions - -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); -} - -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, param, size, value, size_ret); } -}; - -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } -}; - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); -} - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); -} - - -template -struct ReferenceHandler -{ }; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/** - * OpenCL 1.2 devices do have retain/release. - */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } -}; -#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 -/** - * OpenCL 1.1 devices do not have retain/release. - */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } -}; -#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) - -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } -}; - - -// Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const vector &versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } - ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; -} - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - size_type size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - - vector versionInfo(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); - return getVersion(versionInfo); -} - -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); -} - -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - size_type size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - vector devices(size/sizeof(cl_device_id)); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); - return getDevicePlatformVersion(devices[0]); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - -template -class Wrapper -{ -public: - typedef T cl_type; - -protected: - cl_type object_; - -public: - Wrapper() : object_(NULL) { } - - Wrapper(const cl_type &obj, bool retainObject) : object_(obj) - { - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } - } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - rhs.object_ = NULL; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - if (object_ != nullptr) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; - -protected: - cl_type object_; - bool referenceCountable_; - - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } -#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - retVal = true; -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - return retVal; - } - -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } - - Wrapper(const cl_type &obj, bool retainObject) : - object_(obj), - referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } - } - - ~Wrapper() - { - release(); - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - detail::errHandler(retain(), __RETAIN_ERR); - } - - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); - - cl_int retain() const - { - if( object_ != nullptr && referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr && referenceCountable_) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } - } -}; - -template -inline bool operator==(const Wrapper &lhs, const Wrapper &rhs) -{ - return lhs() == rhs(); -} - -template -inline bool operator!=(const Wrapper &lhs, const Wrapper &rhs) -{ - return !operator==(lhs, rhs); -} - -} // namespace detail -//! \endcond - - -using BuildLogType = vector::param_type>>; -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -/** -* Exception class for build errors to carry build info -*/ -class BuildError : public Error -{ -private: - BuildLogType buildLogs; -public: - BuildError(cl_int err, const char * errStr, const BuildLogType &vec) : Error(err, errStr), buildLogs(vec) - { - } - - BuildLogType getBuildLog() const - { - return buildLogs; - } -}; -namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - if (err != CL_SUCCESS) { - throw BuildError(err, errStr, buildLogs); - } - return err; - } -} // namespace detail - -#else -namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - (void)buildLogs; // suppress unused variable warning - (void)errStr; - return err; - } -} // namespace detail -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - - -/*! \stuct ImageFormat - * \brief Adds constructors and member functions for cl_image_format. - * - * \see cl_image_format - */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} - - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } - - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; - } -}; - -/*! \brief Class interface for cl_device_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_device_id - */ -class Device : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Device default_; - static cl_int default_error_; - - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault(); - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Device &p) { - default_ = p; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Device(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } - - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - explicit Device(const cl_device_id &device, bool retainObject = false) : - detail::Wrapper(device, retainObject) { } - - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; - } - - /** - * Modify the default device to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default device. - * Should be compared to the passed value to ensure that it was updated. - */ - static Device setDefault(const Device &default_device) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); - detail::errHandler(default_error_); - return default_; - } - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clCreateSubDevices(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - vector* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - - return CL_SUCCESS; - } -#elif defined(CL_HPP_USE_CL_DEVICE_FISSION) - -/** - * CL 1.1 version that uses device fission extension. - */ - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - vector* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); - - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - return CL_SUCCESS; - } -#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) -}; - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Device Device::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS; - -/*! \brief Class interface for cl_platform_id. - * - * \note Copies of these objects are inexpensive, since they don't 'own' - * any underlying resources or data structures. - * - * \see cl_platform_id - */ -class Platform : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Platform default_; - static cl_int default_error_; - - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - // If default wasn't passed ,generate one - // Otherwise set it - cl_uint n = 0; - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - if (n == 0) { - default_error_ = CL_INVALID_PLATFORM; - return; - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - - default_ = Platform(ids[0]); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Platform &p) { - default_ = p; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Platform(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } - - /*! \brief Constructor from cl_platform_id. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This simply copies the platform ID value, which is an inexpensive operation. - */ - explicit Platform(const cl_platform_id &platform, bool retainObject = false) : - detail::Wrapper(platform, retainObject) { } - - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - static Platform getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; - } - - /** - * Modify the default platform to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default platform. - * Should be compared to the passed value to ensure that it was updated. - */ - static Platform setDefault(const Platform &default_platform) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, string* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - vector* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; - } - -#if defined(CL_HPP_USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - vector* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); - - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; - } -#endif - - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - vector* platforms) - { - cl_uint n = 0; - - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - if (platforms) { - platforms->resize(ids.size()); - - // Platforms don't reference count - for (size_type i = 0; i < ids.size(); i++) { - (*platforms)[i] = Platform(ids[i]); - } - } - return CL_SUCCESS; - } - - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (platform) { - *platform = default_platform; - } - return err; - } - - /*! \brief Gets the first available platform, returning it by value. - * - * \return Returns a valid platform if one is available. - * If no platform is available will return a null platform. - * Throws an exception if no platforms are available - * or an error condition occurs. - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (errResult) { - *errResult = err; - } - return default_platform; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -}; // class Platform - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Platform Platform::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS; - - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/** - * Unload the OpenCL compiler. - * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. - */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - -/*! \brief Class interface for cl_context. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_context as the original. For details, see - * clRetainContext() and clReleaseContext(). - * - * \see cl_context - */ -class Context - : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Context default_; - static cl_int default_error_; - - /*! \brief Create the default context from the default device type in the default platform. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { -#if !defined(__APPLE__) && !defined(__MACOS) - const Platform &p = Platform::getDefault(); - cl_platform_id defaultPlatform = p(); - cl_context_properties properties[3] = { - CL_CONTEXT_PLATFORM, (cl_context_properties)defaultPlatform, 0 - }; -#else // #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties *properties = nullptr; -#endif // #if !defined(__APPLE__) && !defined(__MACOS) - - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - properties, - NULL, - NULL, - &default_error_); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - - /*! \brief Create the default context from a provided Context. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Context &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Context(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const vector& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs.data(), - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - vector platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - vector devices; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } - - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default context to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default context. - * Should be compared to the passed value to ensure that it was updated. - */ - static Context setDefault(const Context &default_context) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - explicit Context(const cl_context& context, bool retainObject = false) : - detail::Wrapper(context, retainObject) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - vector* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - vector value(numEntries); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(begin(value), end(value)); - } - else { - // If no values are being returned, ensure an empty vector comes back - formats->clear(); - } - - return CL_SUCCESS; - } -}; - -inline void Device::makeDefault() -{ - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - cl_int error = 0; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - default_ = context.getInfo()[0]; - default_error_ = CL_SUCCESS; - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif -} - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Context::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ Context Context::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Context::default_error_ = CL_SUCCESS; - -/*! \brief Class interface for cl_event. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_event as the original. For details, see - * clRetainEvent() and clReleaseEvent(). - * - * \see cl_event - */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } - - /*! \brief Constructor from cl_event - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - explicit Event(const cl_event& event, bool retainObject = false) : - detail::Wrapper(event, retainObject) { } - - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } - - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const vector& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -/*! \brief Class interface for user events (a subset of cl_event's). - * - * See Event for details about copy semantics, etc. - */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); - - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } - - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } -}; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -/*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ -inline static cl_int -WaitForEvents(const vector& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); -} - -/*! \brief Class interface for cl_mem. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_mem as the original. For details, see - * clRetainMemObject() and clReleaseMemObject(). - * - * \see cl_mem - */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * Optionally transfer ownership of a refcount on the cl_mem - * into the new Memory object. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * - * See Memory for further details. - */ - explicit Memory(const cl_mem& memory, bool retainObject) : - detail::Wrapper(memory, retainObject) { } - - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } - - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -}; - -// Pre-declare copy functions -class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -namespace detail -{ - class SVMTraitNull - { - public: - static cl_svm_mem_flags getSVMMemFlags() - { - return 0; - } - }; -} // namespace detail - -template -class SVMTraitReadWrite -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_WRITE | - Trait::getSVMMemFlags(); - } -}; - -template -class SVMTraitReadOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_ONLY | - Trait::getSVMMemFlags(); - } -}; - -template -class SVMTraitWriteOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_WRITE_ONLY | - Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitCoarse -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitFine -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_SVM_FINE_GRAIN_BUFFER | - Trait::getSVMMemFlags(); - } -}; - -template> -class SVMTraitAtomic -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return - CL_MEM_SVM_FINE_GRAIN_BUFFER | - CL_MEM_SVM_ATOMICS | - Trait::getSVMMemFlags(); - } -}; - -// Pre-declare SVM map function -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL); - -/** - * STL-like allocator class for managing SVM objects provided for convenience. - * - * Note that while this behaves like an allocator for the purposes of constructing vectors and similar objects, - * care must be taken when using with smart pointers. - * The allocator should not be used to construct a unique_ptr if we are using coarse-grained SVM mode because - * the coarse-grained management behaviour would behave incorrectly with respect to reference counting. - * - * Instead the allocator embeds a Deleter which may be used with unique_ptr and is used - * with the allocate_shared and allocate_ptr supplied operations. - */ -template -class SVMAllocator { -private: - Context context_; - -public: - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - template - struct rebind - { - typedef SVMAllocator other; - }; - - template - friend class SVMAllocator; - - SVMAllocator() : - context_(Context::getDefault()) - { - } - - explicit SVMAllocator(cl::Context context) : - context_(context) - { - } - - - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } - - template - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } - - ~SVMAllocator() - { - } - - pointer address(reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } - - const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } - - /** - * Allocate an SVM pointer. - * - * If the allocator is coarse-grained, this will take ownership to allow - * containers to correctly construct data in place. - */ - pointer allocate( - size_type size, - typename cl::SVMAllocator::const_pointer = 0) - { - // Allocate memory with default alignment matching the size of the type - void* voidPointer = - clSVMAlloc( - context_(), - SVMTrait::getSVMMemFlags(), - size*sizeof(T), - sizeof(T)); - pointer retValue = reinterpret_cast( - voidPointer); -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - if (!retValue) { - std::bad_alloc excep; - throw excep; - } -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - - // If allocation was coarse-grained then map it - if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { - cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size*sizeof(T)); - if (err != CL_SUCCESS) { - std::bad_alloc excep; - throw excep; - } - } - - // If exceptions disabled, return null pointer from allocator - return retValue; - } - - void deallocate(pointer p, size_type) - { - clSVMFree(context_(), p); - } - - /** - * Return the maximum possible allocation size. - * This is the minimum of the maximum sizes of all devices in the context. - */ - size_type max_size() const CL_HPP_NOEXCEPT_ - { - size_type maxSize = std::numeric_limits::max() / sizeof(T); - - for (Device &d : context_.getInfo()) { - maxSize = std::min( - maxSize, - static_cast(d.getInfo())); - } - - return maxSize; - } - - template< class U, class... Args > - void construct(U* p, Args&&... args) - { - new(p)T(args...); - } - - template< class U > - void destroy(U* p) - { - p->~U(); - } - - /** - * Returns true if the contexts match. - */ - inline bool operator==(SVMAllocator const& rhs) - { - return (context_==rhs.context_); - } - - inline bool operator!=(SVMAllocator const& a) - { - return !operator==(a); - } -}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, copies}); - - -template -class SVMAllocator { -public: - typedef void value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - - template - struct rebind - { - typedef SVMAllocator other; - }; - - template - friend class SVMAllocator; -}; - -#if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -namespace detail -{ - template - class Deleter { - private: - Alloc alloc_; - size_type copies_; - - public: - typedef typename std::allocator_traits::pointer pointer; - - Deleter(const Alloc &alloc, size_type copies) : alloc_{ alloc }, copies_{ copies } - { - } - - void operator()(pointer ptr) const { - Alloc tmpAlloc{ alloc_ }; - std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); - std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); - } - }; -} // namespace detail - -/** - * Allocation operation compatible with std::allocate_ptr. - * Creates a unique_ptr by default. - * This requirement is to ensure that the control block is not - * allocated in memory inaccessible to the host. - */ -template -cl::pointer> allocate_pointer(const Alloc &alloc_, Args&&... args) -{ - Alloc alloc(alloc_); - static const size_t copies = 1; - - // Ensure that creation of the management block and the - // object are dealt with separately such that we only provide a deleter - - T* tmp = std::allocator_traits::allocate(alloc, copies); - if (!tmp) { - std::bad_alloc excep; - throw excep; - } - try { - std::allocator_traits::construct( - alloc, - std::addressof(*tmp), - std::forward(args)...); - - return cl::pointer>(tmp, detail::Deleter{alloc, copies}); - } - catch (std::bad_alloc b) - { - std::allocator_traits::deallocate(alloc, tmp, copies); - throw; - } -} - -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(Args... args) -{ - SVMAllocator alloc; - return cl::allocate_pointer(alloc, args...); -} - -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(const cl::Context &c, Args... args) -{ - SVMAllocator alloc(c); - return cl::allocate_pointer(alloc, args...); -} -#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) - -/*! \brief Vector alias to simplify contruction of coarse-grained SVM containers. - * - */ -template < class T > -using coarse_svm_vector = vector>>; - -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers. -* -*/ -template < class T > -using fine_svm_vector = vector>>; - -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform atomics. -* -*/ -template < class T > -using atomic_svm_vector = vector>>; - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -/*! \brief Class interface for Buffer Memory Objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Buffer : public Memory -{ -public: - - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - } - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must be random access. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Buffer(const cl_mem& buffer, bool retainObject = false) : - Memory(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); - - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -}; - -#if defined (CL_HPP_USE_DX_INTEROP) -/*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. - * - * This is provided to facilitate interoperability with Direct3D. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferD3D10 : public Buffer -{ -public: - - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) : pfn_clCreateFromD3D10BufferKHR(nullptr) - { - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); -#elif CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); -#endif - - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : - Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -}; -#endif - -/*! \brief Class interface for GL Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief Class interface for GL Render Buffer Memory Objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class BufferRenderGL : public Buffer -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - BufferRenderGL() : Buffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &buf) - { - Buffer::operator=(buf); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } - - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \brief C++ base class for Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image(const cl_mem& image, bool retainObject = false) : - Memory(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } - - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \brief Class interface for 1D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image1D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1D(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - -/*! \class Image1DBuffer - * \brief Image interface for 1D buffer images. - */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DBuffer() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } - - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - -/*! \class Image1DArray - * \brief Image interface for arrays of 1D images. - */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image1DArray() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) : - Image(imageArray, retainObject) { } - - - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - - -/*! \brief Class interface for 2D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 2D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from a buffer. - * \note This will share storage with the underlying buffer. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - ImageFormat format, - const Buffer &sourceBuffer, - size_type width, - size_type height, - size_type row_pitch = 0, - cl_int* err = nullptr) - { - cl_int error; - - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, - // Use buffer as input to image - sourceBuffer() - }; - object_ = ::clCreateImage( - context(), - 0, // flags inherited from buffer - &format, - &desc, - nullptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } - } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from an image. - * \note This will share storage with the underlying image but may - * reinterpret the channel order and type. - * - * The image will be created matching with a descriptor matching the source. - * - * \param order is the channel order to reinterpret the image data as. - * The channel order may differ as described in the OpenCL - * 2.0 API specification. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_channel_order order, - const Image &sourceImage, - cl_int* err = nullptr) - { - cl_int error; - - // Descriptor fields have to match source image - size_type sourceWidth = - sourceImage.getImageInfo(); - size_type sourceHeight = - sourceImage.getImageInfo(); - size_type sourceRowPitch = - sourceImage.getImageInfo(); - cl_uint sourceNumMIPLevels = - sourceImage.getImageInfo(); - cl_uint sourceNumSamples = - sourceImage.getImageInfo(); - cl_image_format sourceFormat = - sourceImage.getImageInfo(); - - // Update only the channel order. - // Channel format inherited from source. - sourceFormat.image_channel_order = order; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - sourceWidth, - sourceHeight, - 0, 0, // depth (unused), array size (unused) - sourceRowPitch, - 0, // slice pitch (unused) - sourceNumMIPLevels, - sourceNumSamples, - // Use buffer as input to image - sourceImage() - }; - object_ = ::clCreateImage( - context(), - 0, // flags should be inherited from mem_object - &sourceFormat, - &desc, - nullptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } - } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - //! \brief Default constructor - initializes to NULL. - Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2D(const cl_mem& image2D, bool retainObject = false) : - Image(image2D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } - -}; - - -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/*! \brief Class interface for GL 2D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. - */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } - - } - - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DGL(const cl_mem& image, bool retainObject = false) : - Image2D(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - *c - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } - -} CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \class Image2DArray - * \brief Image interface for arrays of 2D images. - */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type height, - size_type rowPitch, - size_type slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2DArray() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) : Image(imageArray, retainObject) { } - - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - -/*! \brief Class interface for 3D Image Memory objects. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type depth, - size_type row_pitch = 0, - size_type slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 - } - - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3D(const cl_mem& image3D, bool retainObject = false) : - Image(image3D, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; - -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -/*! \brief Class interface for GL 3D Image Memory objects. - * - * This is provided to facilitate interoperability with OpenGL. - * - * See Memory for details about copy semantics, etc. - * - * \see Memory - */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3DGL(const cl_mem& image, bool retainObject = false) : - Image3D(image, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -}; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -/*! \class ImageGL - * \brief general image interface for GL interop. - * We abstract the 2D and 3D GL images into a single instance here - * that wraps all GL sourced images on the grounds that setup information - * was performed by OpenCL anyway. - */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } - } - - ImageGL() : Image() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit ImageGL(const cl_mem& image, bool retainObject = false) : - Image(image, retainObject) { } - - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -}; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/*! \brief Class interface for Pipe Memory Objects. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class Pipe : public Memory -{ -public: - - /*! \brief Constructs a Pipe in a specified context. - * - * Wraps clCreatePipe(). - * @param context Context in which to create the pipe. - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - const Context& context, - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; - - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a Pipe in a the default context. - * - * Wraps clCreatePipe(). - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(err); - - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } - } - - //! \brief Default constructor - initializes to NULL. - Pipe() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Pipe(const cl_mem& pipe, bool retainObject = false) : - Memory(pipe, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Pipe& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe(const Pipe& pipe) : Memory(pipe) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (const Pipe &pipe) - { - Memory::operator=(pipe); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (Pipe &&pipe) - { - Memory::operator=(std::move(pipe)); - return *this; - } - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_pipe_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPipeInfo, object_, name, param), - __GET_PIPE_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_pipe_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; // class Pipe -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -/*! \brief Class interface for cl_sampler. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_sampler as the original. For details, see - * clRetainSampler() and clReleaseSampler(). - * - * \see cl_sampler - */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } - - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_sampler_properties sampler_properties[] = { - CL_SAMPLER_NORMALIZED_COORDS, normalized_coords, - CL_SAMPLER_ADDRESSING_MODE, addressing_mode, - CL_SAMPLER_FILTER_MODE, filter_mode, - 0 }; - object_ = ::clCreateSamplerWithProperties( - context(), - sampler_properties, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - explicit Sampler(const cl_sampler& sampler, bool retainObject = false) : - detail::Wrapper(sampler, retainObject) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -class Program; -class CommandQueue; -class DeviceCommandQueue; -class Kernel; - -//! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_type sizes_[3]; - cl_uint dimensions_; - -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { - sizes_[0] = 0; - sizes_[1] = 0; - sizes_[2] = 0; - } - - //! \brief Constructs one-dimensional range. - NDRange(size_type size0) - : dimensions_(1) - { - sizes_[0] = size0; - sizes_[1] = 1; - sizes_[2] = 1; - } - - //! \brief Constructs two-dimensional range. - NDRange(size_type size0, size_type size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = 1; - } - - //! \brief Constructs three-dimensional range. - NDRange(size_type size0, size_type size1, size_type size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } - - /*! \brief Conversion operator to const size_type *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const size_type*() const { - return sizes_; - } - - //! \brief Queries the number of dimensions in the range. - size_type dimensions() const - { - return dimensions_; - } - - //! \brief Returns the size of the object in bytes based on the - // runtime number of dimensions - size_type size() const - { - return dimensions_*sizeof(size_type); - } - - size_type* get() - { - return sizes_; - } - - const size_type* get() const - { - return sizes_; - } -}; - -//! \brief A zero-dimensional range. -static const NDRange NullRange; - -//! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - size_type size_; -}; - -namespace detail { - -template -struct KernelArgumentHandler; - -// Enable for objects that are not subclasses of memory -// Pointers, constants etc -template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } -}; - -// Enable for subclasses of memory where we want to get a reference to the cl_mem out -// and pass that in for safety -template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(cl_mem); } - static const cl_mem* ptr(const T& value) { return &(value()); } -}; - -// Specialization for DeviceCommandQueue defined later - -template <> -struct KernelArgumentHandler -{ - static size_type size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } -}; - -} -//! \endcond - -/*! Local - * \brief Helper function for generating LocalSpaceArg objects. - */ -inline LocalSpaceArg -Local(size_type size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -/*! \brief Class interface for cl_kernel. - * - * \note Copies of these objects are shallow, meaning that the copy will refer - * to the same underlying cl_kernel as the original. For details, see - * clRetainKernel() and clReleaseKernel(). - * - * \see cl_kernel - */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Kernel() { } - - /*! \brief Constructor from cl_kernel - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - explicit Kernel(const cl_kernel& kernel, bool retainObject = false) : - detail::Wrapper(kernel, retainObject) { } - - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) - cl_int getSubGroupInfo(const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type* param) const - { - typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; - static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); - - return detail::errHandler( - pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), - __GET_KERNEL_ARG_INFO_ERR); - } - - template - size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const - { - size_type param; - cl_int result = getSubGroupInfo(dev, name, range, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a shared_ptr type - */ - template - cl_int setArg(cl_uint index, const cl::pointer &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.get()), - __SET_KERNEL_ARGS_ERR); - } - - /*! \brief setArg overload taking a vector type. - */ - template - cl_int setArg(cl_uint index, const cl::vector &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.data()), - __SET_KERNEL_ARGS_ERR); - } - - /*! \brief setArg overload taking a pointer type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr), - __SET_KERNEL_ARGS_ERR); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - /*! \brief setArg overload taking a POD type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } - - cl_int setArg(cl_uint index, size_type size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! - * Specify a vector of SVM pointers that the kernel may access in - * addition to its arguments. - */ - cl_int setSVMPointers(const vector &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } - - /*! - * Specify a std::array of SVM pointers that the kernel may access in - * addition to its arguments. - */ - template - cl_int setSVMPointers(const std::array &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } - - /*! \brief Enable fine-grained system SVM. - * - * \note It is only possible to enable fine-grained system SVM if all devices - * in the context associated with kernel support it. - * - * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. - * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION - * if no devices in the context support fine-grained system SVM. - * - * \see clSetKernelExecInfo - */ - cl_int enableFineGrainedSystemSVM(bool svmEnabled) - { - cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, - sizeof(cl_bool), - &svmEnabled_ - ) - ); - } - - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0, Ts... ts) - { - pointerList[index] = static_cast(t0.get()); - setSVMPointersHelper(ts...); - } - - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0, Ts... ts) - { - pointerList[index] = static_cast(t0); - setSVMPointersHelper(ts...); - } - - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0) - { - pointerList[index] = static_cast(t0.get()); - } - - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0) - { - pointerList[index] = static_cast(t0); - } - - template - cl_int setSVMPointers(const T0 &t0, Ts... ts) - { - std::array pointerList; - - setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*(1 + sizeof...(Ts)), - pointerList.data())); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -}; - -/*! \class Program - * \brief Program interface that implements cl_program. - */ -class Program : public detail::Wrapper -{ -public: -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector> Binaries; - typedef vector Sources; -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector > Binaries; - typedef vector > Sources; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - Program( - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const size_type length = source.size(); - - Context context = Context::getDefault(err); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, -#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", -#else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); - - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; - - const char * strings = source.c_str(); - const size_type length = source.size(); - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - - if (error == CL_SUCCESS && build) { - error = ::clBuildProgram( - object_, - 0, - NULL, -#if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", -#else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); - - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } - } - - /** - * Create a program from a vector of source strings and the default context. - * Does not compile or link the program. - */ - Program( - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - Context context = Context::getDefault(err); - - const size_type n = (size_type)sources.size(); - - vector lengths(n); - vector strings(n); - - for (size_type i = 0; i < n; ++i) { -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Create a program from a vector of source strings and a provided context. - * Does not compile or link the program. - */ - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - - const size_type n = (size_type)sources.size(); - - vector lengths(n); - vector strings(n); - - for (size_type i = 0; i < n; ++i) { -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const vector& devices, - const Binaries& binaries, - vector* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; - - const size_type numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - - vector lengths(numDevices); - vector images(numDevices); -#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = binaries[i].data(); - lengths[i] = binaries[(int)i].size(); - } -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs.data(), - lengths.data(), images.data(), (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - } - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const vector& devices, - const string& kernelNames, - cl_int* err = NULL) - { - cl_int error; - - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs.data(), - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - Program() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit Program(const cl_program& program, bool retainObject = false) : - detail::Wrapper(program, retainObject) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } - - cl_int build( - const vector& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - cl_int buildError = ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs.data(), - options, - notifyFptr, - data); - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int buildError = ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data); - - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int error = ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data); - return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, getBuildInfo()); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * Build info function that returns a vector of device/info pairs for the specified - * info type and for all devices in the program. - * On an error reading the info for any device, an empty vector of info will be returned. - */ - template - vector::param_type>> - getBuildInfo(cl_int *err = NULL) const - { - cl_int result = CL_SUCCESS; - - auto devs = getInfo(&result); - vector::param_type>> - devInfo; - - // If there was an initial error from getInfo return the error - if (result != CL_SUCCESS) { - if (err != NULL) { - *err = result; - } - return devInfo; - } - - for (cl::Device d : devs) { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - result = getBuildInfo(d, name, ¶m); - devInfo.push_back( - std::pair::param_type> - (d, param)); - if (result != CL_SUCCESS) { - // On error, leave the loop and return the error code - break; - } - } - if (err != NULL) { - *err = result; - } - if (result != CL_SUCCESS) { - devInfo.clear(); - } - return devInfo; - } - - cl_int createKernels(vector* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - vector value(numKernels); - - err = ::clCreateKernelsInProgram( - object_, numKernels, value.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - if (kernels) { - kernels->resize(value.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < value.size(); i++) { - // We do not need to retain because this kernel is being created - // by the runtime - (*kernels)[i] = Kernel(value[i], false); - } - } - return CL_SUCCESS; - } -}; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - cl_program programs[2] = { input1(), input2() }; - - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog); -} - -inline Program linkProgram( - vector inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; - - vector programs(inputPrograms.size()); - - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } - - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs.data(), - notifyFptr, - data, - &error_local); - - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog, false); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - -// Template specialization for CL_PROGRAM_BINARIES -template <> -inline cl_int cl::Program::getInfo(cl_program_info name, vector>* param) const -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Resize the parameter array appropriately for each allocation - // and pass down to the helper - - vector sizes = getInfo(); - size_type numBinaries = sizes.size(); - - // Resize the parameter array and constituent arrays - param->resize(numBinaries); - for (int i = 0; i < numBinaries; ++i) { - (*param)[i].resize(sizes[i]); - } - - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - return CL_SUCCESS; -} - -template<> -inline vector> cl::Program::getInfo(cl_int* err) const -{ - vector> binariesVectors; - - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); - if (err != NULL) { - *err = result; - } - return binariesVectors; -} - -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; - - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } - -} - -enum class QueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, - OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, -}; - -inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); -} - -/*! \class CommandQueue - * \brief CommandQueue interface for cl_command_queue. - */ -class CommandQueue : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static CommandQueue default_; - static cl_int default_error_; - - /*! \brief Create the default command queue returned by @ref getDefault. - * - * It sets default_error_ to indicate success or failure. It does not throw - * @c cl::Error. - */ - static void makeDefault() - { - /* We don't want to throw an error from this function, so we have to - * catch and set the error flag. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - int error; - Context context = Context::getDefault(&error); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - Device device = Device::getDefault(); - default_ = CommandQueue(context, device, 0, &default_error_); - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default command queue. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const CommandQueue &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = CommandQueue(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - - static CommandQueue getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); -#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default command queue to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default command queue. - * Should be compared to the passed value to ensure that it was updated. - */ - static CommandQueue setDefault(const CommandQueue &default_queue) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); - detail::errHandler(default_error_); - return default_; - } - - CommandQueue() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified as a vector type. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - * \tparam offset Is the offset in bytes into the buffer at - * which to start filling. This must be a multiple of - * the pattern size. - * \tparam size Is the size in bytes of the region to fill. - * This must be a multiple of the pattern size. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, - src(), - dst(), - src_origin.data(), - region.data(), - dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, - src(), - dst(), - src_offset, - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const array& origin, - const array& region, - size_type * row_pitch, - size_type * slice_pitch, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - origin.data(), - region.data(), - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(ptr), size, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueMapSVM( - cl::pointer &ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(ptr.get()), size, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueMapSVM( - cl::vector &container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( - object_, blocking, flags, static_cast(container.data()), container.size(), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr.get()), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(container.data()), - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const vector *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const vector *events = 0, - Event *event = 0) - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const vector &memObjects, - cl_mem_migration_flags flags, - const vector* events = NULL, - Event* event = NULL - ) - { - cl_event tmp; - - vector localMemObjects(memObjects.size()); - - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } - - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - localMemObjects.data(), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const size_type*) offset : NULL, - (const size_type*) global, - local.dimensions() != 0 ? (const size_type*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask( - const Kernel& kernel, - const vector* events = NULL, - Event* event = NULL) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const vector* mem_objects = NULL, - const vector* mem_locs = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - size_type elements = 0; - if (mem_objects != NULL) { - elements = mem_objects->size(); - } - vector mems(elements); - for (unsigned int i = 0; i < elements; i++) { - mems[i] = ((*mem_objects)[i])(); - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems.data(), - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const vector& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - - cl_int enqueueAcquireGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - -#if defined (CL_HPP_USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); - - cl_int enqueueAcquireD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); -#endif -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); -#endif - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueReleaseD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; -#if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif - -/** - * Deprecated APIs for 1.2 - */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } - - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; // CommandQueue - -CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag CommandQueue::default_initialized_; -CL_HPP_DEFINE_STATIC_MEMBER_ CommandQueue CommandQueue::default_; -CL_HPP_DEFINE_STATIC_MEMBER_ cl_int CommandQueue::default_error_ = CL_SUCCESS; - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -enum class DeviceQueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, -}; - -inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); -} - -/*! \class DeviceCommandQueue - * \brief DeviceCommandQueue interface for device cl_command_queues. - */ -class DeviceCommandQueue : public detail::Wrapper -{ -public: - - /*! - * Trivial empty constructor to create a null queue. - */ - DeviceCommandQueue() { } - - /*! - * Default construct device command queue on default context and device - */ - DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - cl_uint queueSize, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, - CL_QUEUE_SIZE, queueSize, - 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_command_queue - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - DeviceCommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (const DeviceCommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (DeviceCommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! - * Create a new default device command queue for the default device, - * in the default context and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - cl_int *err = nullptr) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the requested size in bytes. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_uint queueSize, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - CL_QUEUE_SIZE, queueSize, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } -}; // DeviceCommandQueue - -namespace detail -{ - // Specialization for device command queue - template <> - struct KernelArgumentHandler - { - static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } - static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } - }; -} // namespace detail - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} - -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; -} - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events, - Event* event) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); -} - -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ -template -inline cl_int enqueueMapSVM( - cl::pointer ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); -} - -/** - * Enqueues to the default queue a command that will allow the host to - * update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ -template -inline cl_int enqueueMapSVM( - cl::vector container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } - - return queue.enqueueMapSVM( - container, blocking, flags, events, event); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; -} - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ -template -inline cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - -} - -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ -template -inline cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); -} - -/** - * Enqueues to the default queue a command that will release a coarse-grained - * SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ -template -inline cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, startIterator, endIterator, buffer); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses default command queue. - */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; - - return cl::copy(queue, buffer, startIterator, endIterator); -} - -/** - * Blocking copy operation between iterators and a buffer. - * Host to Device. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } -#if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); -#else - std::copy(startIterator, endIterator, pointer); -#endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - -/** - * Blocking copy operation between iterators and a buffer. - * Device to Host. - * Uses specified queue. - */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); - - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; -} - - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 -/** - * Blocking SVM map operation - performs a blocking map underneath. - */ -template -inline cl_int mapSVM(cl::vector &container) -{ - return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); -} - -/** -* Blocking SVM map operation - performs a blocking map underneath. -*/ -template -inline cl_int unmapSVM(cl::vector &container) -{ - return enqueueUnmapSVM(container); -} - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - -#if CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); -} -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); -} - -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); -} - -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); -} - -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); -} - - -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - return queue.flush(); -} - -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - - if (error != CL_SUCCESS) { - return error; - } - - - return queue.finish(); -} - -class EnqueueArgs -{ -private: - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - vector events_; - - template - friend class KernelFunctor; - -public: - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(const vector &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(const vector &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } -}; - - -//---------------------------------------------------------------------------------------------- - - -/** - * Type safe kernel functor. - * - */ -template -class KernelFunctor -{ -private: - Kernel kernel_; - - template - void setArgs(T0&& t0, T1s&&... t1s) - { - kernel_.setArg(index, t0); - setArgs(std::forward(t1s)...); - } - - template - void setArgs(T0&& t0) - { - kernel_.setArg(index, t0); - } - - template - void setArgs() - { - } - - -public: - KernelFunctor(Kernel kernel) : kernel_(kernel) - {} - - KernelFunctor( - const Program& program, - const string name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} - - //! \brief Return type of the functor - typedef Event result_type; - - /** - * Enqueue kernel. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts) - { - Event event; - setArgs<0>(std::forward(ts)...); - - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - - /** - * Enqueue kernel with support for error code. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - * @param error Out parameter returning the error code from the execution. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts, - cl_int &error) - { - Event event; - setArgs<0>(std::forward(ts)...); - - error = args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int setSVMPointers(const vector &pointerList) - { - return kernel_.setSVMPointers(pointerList); - } - - template - cl_int setSVMPointers(const T0 &t0, T1s... ts) - { - return kernel_.setSVMPointers(t0, ts...); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - Kernel getKernel() - { - return kernel_; - } -}; - -namespace compatibility { - /** - * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. - * Please use KernelFunctor directly. - */ - template - struct make_kernel - { - typedef KernelFunctor FunctorType; - - FunctorType functor_; - - make_kernel( - const Program& program, - const string name, - cl_int * err = NULL) : - functor_(FunctorType(program, name, err)) - {} - - make_kernel( - const Kernel kernel) : - functor_(FunctorType(kernel)) - {} - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - Ts...); - - Event operator()( - const EnqueueArgs& enqueueArgs, - Ts... args) - { - return functor_( - enqueueArgs, args...); - } - }; -} // namespace compatibility - - -//---------------------------------------------------------------------------------------------------------------------- - -#undef CL_HPP_ERR_STR_ -#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_ARG_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_ERR -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR -#undef __SET_PRINTF_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __UNLOAD_COMPILER_ERR -#undef __CREATE_SUB_DEVICES_ERR - -#undef __CREATE_PIPE_ERR -#undef __GET_PIPE_INFO_ERR - -#endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS - -// Extensions -#undef CL_HPP_INIT_CL_EXT_FCN_PTR_ -#undef CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_ - -#if defined(CL_HPP_USE_CL_DEVICE_FISSION) -#undef CL_HPP_PARAM_NAME_DEVICE_FISSION_ -#endif // CL_HPP_USE_CL_DEVICE_FISSION - -#undef CL_HPP_NOEXCEPT_ -#undef CL_HPP_DEFINE_STATIC_MEMBER_ - -} // namespace cl - -#endif // CL_HPP_ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_d3d10.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_d3d10.h deleted file mode 100644 index d5960a43f72123..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_d3d10.h +++ /dev/null @@ -1,131 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_D3D10_H -#define __OPENCL_CL_D3D10_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** - * cl_khr_d3d10_sharing */ -#define cl_khr_d3d10_sharing 1 - -typedef cl_uint cl_d3d10_device_source_khr; -typedef cl_uint cl_d3d10_device_set_khr; - -/******************************************************************************/ - -/* Error Codes */ -#define CL_INVALID_D3D10_DEVICE_KHR -1002 -#define CL_INVALID_D3D10_RESOURCE_KHR -1003 -#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 -#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 - -/* cl_d3d10_device_source_nv */ -#define CL_D3D10_DEVICE_KHR 0x4010 -#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 - -/* cl_d3d10_device_set_nv */ -#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 -#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 - -/* cl_context_info */ -#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 -#define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C - -/* cl_mem_info */ -#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 - -/* cl_image_info */ -#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 -#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_D3D10_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_d3d11.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_d3d11.h deleted file mode 100644 index 6fe593efd57466..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_d3d11.h +++ /dev/null @@ -1,136 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_D3D11_H -#define __OPENCL_CL_D3D11_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** - * cl_khr_d3d11_sharing */ -#define cl_khr_d3d11_sharing 1 - -typedef cl_uint cl_d3d11_device_source_khr; -typedef cl_uint cl_d3d11_device_set_khr; - -/******************************************************************************/ - -/* Error Codes */ -#define CL_INVALID_D3D11_DEVICE_KHR -1006 -#define CL_INVALID_D3D11_RESOURCE_KHR -1007 -#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 -#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 - -/* cl_d3d11_device_source */ -#define CL_D3D11_DEVICE_KHR 0x4019 -#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A - -/* cl_d3d11_device_set */ -#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B -#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C - -/* cl_context_info */ -#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D -#define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D - -/* cl_mem_info */ -#define CL_MEM_D3D11_RESOURCE_KHR 0x401E - -/* cl_image_info */ -#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 -#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 - -// object types - -#define CL_D3D11_OBJECT_BUFFER 0x3000 -#define CL_D3D11_OBJECT_TEXTURE2D 0x3001 -#define CL_D3D11_OBJECT_TEXTURE3D 0x3003 -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)( - cl_platform_id platform, - cl_d3d11_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_D3D11_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_driver_diagnostics_intel.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_driver_diagnostics_intel.h deleted file mode 100644 index ff2d00a2417cf5..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_driver_diagnostics_intel.h +++ /dev/null @@ -1,54 +0,0 @@ -/*****************************************************************************\ - -Copyright 2016 Intel Corporation All Rights Reserved. - -The source code contained or described herein and all documents related to -the source code ("Material") are owned by Intel Corporation or its suppliers -or licensors. Title to the Material remains with Intel Corporation or its -suppliers and licensors. The Material contains trade secrets and proprietary -and confidential information of Intel or its suppliers and licensors. The -Material is protected by worldwide copyright and trade secret laws and -treaty provisions. No part of the Material may be used, copied, reproduced, -modified, published, uploaded, posted, transmitted, distributed, or -disclosed in any way without Intel's prior express written permission. - -No license under any patent, copyright, trade secret or other intellectual -property right is granted to or conferred upon you by disclosure or delivery -of the Materials, either expressly, by implication, inducement, estoppel or -otherwise. Any license under such intellectual property rights must be -express and approved by Intel in writing. - -File Name: cl_driver_diagnostics_intel.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __CL_DRIVER_DIAGNOSTICS_INTEL_H -#define __CL_DRIVER_DIAGNOSTICS_INTEL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/**************************************** -* cl_intel_driver_diagnostics extension * -*****************************************/ -#define cl_intel_driver_diagnostics 1 - -typedef cl_bitfield cl_diagnostics_verbose_level_intel; - -#define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106 -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL 0x1 -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL 0x2 -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL 0x4 - -#ifdef __cplusplus -} -#endif - -#endif /* __CL_DRIVER_DIAGNOSTICS_INTEL_H */ \ No newline at end of file diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_dx9_media_sharing.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_dx9_media_sharing.h deleted file mode 100644 index e8ec96e04f2164..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_dx9_media_sharing.h +++ /dev/null @@ -1,132 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_H -#define __OPENCL_CL_DX9_MEDIA_SHARING_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************/ -/* cl_khr_dx9_media_sharing */ -#define cl_khr_dx9_media_sharing 1 - -typedef cl_uint cl_dx9_media_adapter_type_khr; -typedef cl_uint cl_dx9_media_adapter_set_khr; - -#if defined(_WIN32) -#include -typedef struct _cl_dx9_surface_info_khr -{ - IDirect3DSurface9 *resource; - HANDLE shared_handle; -} cl_dx9_surface_info_khr; -#endif - - -/******************************************************************************/ - -/* Error Codes */ -#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 -#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 -#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 -#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 - -/* cl_media_adapter_type_khr */ -#define CL_ADAPTER_D3D9_KHR 0x2020 -#define CL_ADAPTER_D3D9EX_KHR 0x2021 -#define CL_ADAPTER_DXVA_KHR 0x2022 - -/* cl_media_adapter_set_khr */ -#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 -#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 - -/* cl_context_info */ -#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 -#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 -#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 - -/* cl_mem_info */ -#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 -#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 - -/* cl_image_info */ -#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B -#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapter_type, - void * media_adapters[], - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_dx9_media_sharing_intel.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_dx9_media_sharing_intel.h deleted file mode 100644 index 737e6856490707..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_dx9_media_sharing_intel.h +++ /dev/null @@ -1,182 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2019 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ -/*****************************************************************************\ - -Copyright (c) 2013-2019 Intel Corporation All Rights Reserved. - -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -File Name: cl_dx9_media_sharing_intel.h - -Abstract: - -Notes: - -\*****************************************************************************/ - -#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H -#define __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************** -* cl_intel_dx9_media_sharing extension * -****************************************/ - -#define cl_intel_dx9_media_sharing 1 - -typedef cl_uint cl_dx9_device_source_intel; -typedef cl_uint cl_dx9_device_set_intel; - -/* error codes */ -#define CL_INVALID_DX9_DEVICE_INTEL -1010 -#define CL_INVALID_DX9_RESOURCE_INTEL -1011 -#define CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL -1012 -#define CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL -1013 - -/* cl_dx9_device_source_intel */ -#define CL_D3D9_DEVICE_INTEL 0x4022 -#define CL_D3D9EX_DEVICE_INTEL 0x4070 -#define CL_DXVA_DEVICE_INTEL 0x4071 - -/* cl_dx9_device_set_intel */ -#define CL_PREFERRED_DEVICES_FOR_DX9_INTEL 0x4024 -#define CL_ALL_DEVICES_FOR_DX9_INTEL 0x4025 - -/* cl_context_info */ -#define CL_CONTEXT_D3D9_DEVICE_INTEL 0x4026 -#define CL_CONTEXT_D3D9EX_DEVICE_INTEL 0x4072 -#define CL_CONTEXT_DXVA_DEVICE_INTEL 0x4073 - -/* cl_mem_info */ -#define CL_MEM_DX9_RESOURCE_INTEL 0x4027 -#define CL_MEM_DX9_SHARED_HANDLE_INTEL 0x4074 - -/* cl_image_info */ -#define CL_IMAGE_DX9_PLANE_INTEL 0x4075 - -/* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_OBJECTS_INTEL 0x402A -#define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B -/******************************************************************************/ - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDsFromDX9INTEL( - cl_platform_id platform, - cl_dx9_device_source_intel dx9_device_source, - void* dx9_object, - cl_dx9_device_set_intel dx9_device_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; - -typedef CL_API_ENTRY cl_int (CL_API_CALL* clGetDeviceIDsFromDX9INTEL_fn)( - cl_platform_id platform, - cl_dx9_device_source_intel dx9_device_source, - void* dx9_object, - cl_dx9_device_set_intel dx9_device_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromDX9MediaSurfaceINTEL( - cl_context context, - cl_mem_flags flags, - IDirect3DSurface9* resource, - HANDLE sharedHandle, - UINT plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceINTEL_fn)( - cl_context context, - cl_mem_flags flags, - IDirect3DSurface9* resource, - HANDLE sharedHandle, - UINT plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireDX9ObjectsINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9ObjectsINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseDX9ObjectsINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9ObjectsINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_egl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_egl.h deleted file mode 100644 index d9cf721d836d12..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_egl.h +++ /dev/null @@ -1,138 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -#ifndef __OPENCL_CL_EGL_H -#define __OPENCL_CL_EGL_H - -#ifdef __APPLE__ - -#else -#include -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Command type for events created with clEnqueueAcquireEGLObjectsKHR */ -#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F -#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D -#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E - -/* Error type for clCreateFromEGLImageKHR */ -#define CL_INVALID_EGL_OBJECT_KHR -1093 -#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 - -/* CLeglImageKHR is an opaque handle to an EGLImage */ -typedef void* CLeglImageKHR; - -/* CLeglDisplayKHR is an opaque handle to an EGLDisplay */ -typedef void* CLeglDisplayKHR; - -/* CLeglSyncKHR is an opaque handle to an EGLSync object */ -typedef void* CLeglSyncKHR; - -/* properties passed to clCreateFromEGLImageKHR */ -typedef intptr_t cl_egl_image_properties_khr; - - -#define cl_khr_egl_image 1 - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromEGLImageKHR(cl_context /* context */, - CLeglDisplayKHR /* egldisplay */, - CLeglImageKHR /* eglimage */, - cl_mem_flags /* flags */, - const cl_egl_image_properties_khr * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)( - cl_context context, - CLeglDisplayKHR egldisplay, - CLeglImageKHR eglimage, - cl_mem_flags flags, - const cl_egl_image_properties_khr * properties, - cl_int * errcode_ret); - - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); - - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); - - -#define cl_khr_egl_event 1 - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromEGLSyncKHR(cl_context /* context */, - CLeglSyncKHR /* sync */, - CLeglDisplayKHR /* display */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)( - cl_context context, - CLeglSyncKHR sync, - CLeglDisplayKHR display, - cl_int * errcode_ret); - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_EGL_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_egl_intel.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_egl_intel.h deleted file mode 100644 index c5a797bffecc26..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_egl_intel.h +++ /dev/null @@ -1,30 +0,0 @@ -/*****************************************************************************\ - -Copyright (c) 2013-2015 Intel Corporation All Rights Reserved. - -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -File Name: cl_egl_intel.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef CL_EGL_INTEL -#define CL_EGL_INTEL - -#define CL_EGL_YUV_PLANE_INTEL 0x4107 - -#endif //CL_EGL_INTEL - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_ext.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_ext.h deleted file mode 100644 index a413c9a617008d..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_ext.h +++ /dev/null @@ -1,606 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11928 $ on $Date: 2010-07-13 09:04:56 -0700 (Tue, 13 Jul 2010) $ */ - -/* cl_ext.h contains OpenCL extensions which don't have external */ -/* (OpenGL, D3D) dependencies. */ - -#ifndef __CL_EXT_H -#define __CL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - #include - #include -#else - #include -#endif - -/* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 - -/* Memory object destruction - * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR - * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. - * - * The application may not call CL api's with the cl_mem object passed to the pfn_notify. - * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - */ -#define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */, - void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - - -/* Context Logging Functions - * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - * - * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger - */ -#define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - - -/************************ -* cl_khr_icd extension * -************************/ -#define cl_khr_icd 1 - -/* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 - -/* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 - -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( - cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); - - -/* Extension: cl_khr_image2D_buffer - * - * This extension allows a 2D image to be created from a cl_mem buffer without a copy. - * The type associated with a 2D image created from a buffer in an OpenCL program is image2d_t. - * Both the sampler and sampler-less read_image built-in functions are supported for 2D images - * and 2D images created from a buffer. Similarly, the write_image built-ins are also supported - * for 2D images created from a buffer. - * - * When the 2D image from buffer is created, the client must specify the width, - * height, image format (i.e. channel order and channel data type) and optionally the row pitch - * - * The pitch specified must be a multiple of CL_DEVICE_IMAGE_PITCH_ALIGNMENT pixels. - * The base address of the buffer must be aligned to CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT pixels. - */ - -/************************************* - * cl_khr_initalize_memory extension * - *************************************/ - -#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 - - -/************************************** - * cl_khr_terminate_context extension * - **************************************/ - -#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 -#define CL_CONTEXT_TERMINATE_KHR 0x2032 - -#define cl_khr_terminate_context 1 -extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clTerminateContextKHR_fn)(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; - - -/* - * Extension: cl_khr_spir - * - * This extension adds support to create an OpenCL program object from a - * Standard Portable Intermediate Representation (SPIR) instance - */ - -#define CL_DEVICE_SPIR_VERSIONS 0x40E0 -#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 - - -/****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ -/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 - -/********************************* -* cl_amd_device_attribute_query * -*********************************/ -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 - -/********************************* -* cl_arm_printf extension -*********************************/ -#define CL_PRINTF_CALLBACK_ARM 0x40B0 -#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 - -#ifdef _WIN32 -#if defined CL_DX9_MEDIA_SHARING_INTEL_EXT - -#include -#include -#include -#include - -/******************************************************************************/ -/* cl_intel_dx9_media_sharing extension */ -#define cl_intel_dx9_media_sharing 1 - -typedef cl_uint cl_dx9_device_source_intel; -typedef cl_uint cl_dx9_device_set_intel; - -/******************************************************************************/ - -// Error Codes -#define CL_INVALID_DX9_DEVICE_INTEL -1010 -#define CL_INVALID_DX9_RESOURCE_INTEL -1011 -#define CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL -1012 -#define CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL -1013 - -// cl_dx9_device_source_intel -#define CL_D3D9_DEVICE_INTEL 0x4022 -#define CL_D3D9EX_DEVICE_INTEL 0x4070 -#define CL_DXVA_DEVICE_INTEL 0x4071 - -// cl_dx9_device_set_intel -#define CL_PREFERRED_DEVICES_FOR_DX9_INTEL 0x4024 -#define CL_ALL_DEVICES_FOR_DX9_INTEL 0x4025 - -// cl_context_info -#define CL_CONTEXT_D3D9_DEVICE_INTEL 0x4026 -#define CL_CONTEXT_D3D9EX_DEVICE_INTEL 0x4072 -#define CL_CONTEXT_DXVA_DEVICE_INTEL 0x4073 - -// cl_mem_info -#define CL_MEM_DX9_RESOURCE_INTEL 0x4027 -#define CL_MEM_DX9_SHARED_HANDLE_INTEL 0x4074 - -// cl_image_info -#define CL_IMAGE_DX9_PLANE_INTEL 0x4075 - -// cl_command_type -#define CL_COMMAND_ACQUIRE_DX9_OBJECTS_INTEL 0x402A -#define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B - -//packed YUV channel order -#define CL_YUYV_INTEL 0x4076 -#define CL_UYVY_INTEL 0x4077 -#define CL_YVYU_INTEL 0x4078 -#define CL_VYUY_INTEL 0x4079 - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL* clGetDeviceIDsFromDX9INTEL_fn)( - cl_platform_id /*platform*/, - cl_dx9_device_source_intel /*dx9_device_source*/, - void* /*dx9_object*/, - cl_dx9_device_set_intel /*dx9_device_set*/, - cl_uint /*num_entries*/, - cl_device_id* /*devices*/, - cl_uint* /*num_devices*/); - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceINTEL_fn)( - cl_context /*context*/, - cl_mem_flags /*flags*/, - IDirect3DSurface9 * /*resource*/, - HANDLE /*sharedHandle*/, - UINT /*plane*/, - cl_int * /*errcode_ret*/); - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9ObjectsINTEL_fn)( - cl_command_queue /*command_queue*/, - cl_uint /*num_objects*/, - const cl_mem * /*mem_objects*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/); - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9ObjectsINTEL_fn)( - cl_command_queue /*command_queue*/, - cl_uint /*num_objects*/, - cl_mem * /*mem_objects*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/); - -#endif // CL_DX9_MEDIA_SHARING_INTEL_EXT -#endif - -/********************************* -* cl_intel_accelerator extension * -*********************************/ -#define cl_intel_accelerator 1 -#define cl_intel_motion_estimation 1 - -typedef struct _cl_accelerator_intel* cl_accelerator_intel; -typedef cl_uint cl_accelerator_type_intel; -typedef cl_uint cl_accelerator_info_intel; - -typedef struct _cl_motion_estimation_desc_intel { - cl_uint mb_block_type; - cl_uint subpixel_mode; - cl_uint sad_adjust_mode; - cl_uint search_path_type; -} cl_motion_estimation_desc_intel; - -/* Error Codes */ -#define CL_INVALID_ACCELERATOR_INTEL -1094 -#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095 -#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096 -#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 - -/* Deprecated Error Codes */ -#define CL_INVALID_ACCELERATOR_INTEL_DEPRECATED -6000 -#define CL_INVALID_ACCELERATOR_TYPE_INTEL_DEPRECATED -6001 -#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL_DEPRECATED -6002 -#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL_DEPRECATED -6003 - -/* cl_accelerator_type_intel */ -#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0 - -/* cl_accelerator_info_intel */ -#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090 -#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091 -#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092 -#define CL_ACCELERATOR_TYPE_INTEL 0x4093 - -/*cl_motion_detect_desc_intel flags */ -#define CL_ME_MB_TYPE_16x16_INTEL 0x0 -#define CL_ME_MB_TYPE_8x8_INTEL 0x1 -#define CL_ME_MB_TYPE_4x4_INTEL 0x2 - -#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 -#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 -#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2 - -#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 -#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1 - -#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0 -#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1 -#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5 - -extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL -clCreateAcceleratorINTEL( - cl_context /* context */, - cl_accelerator_type_intel /* accelerator_type */, - size_t /* descriptor_size */, - const void* /* descriptor */, - cl_int* /* errcode_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_accelerator_intel - (CL_API_CALL *clCreateAcceleratorINTEL_fn)( - cl_context /* context */, - cl_accelerator_type_intel /* accelerator_type */, - size_t /* descriptor_size */, - const void* /* descriptor */, - cl_int* /* errcode_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetAcceleratorInfoINTEL -( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetAcceleratorInfoINTEL -( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clSetAcceleratorInfoINTEL_fn)( - cl_accelerator_intel /* accelerator */, - cl_accelerator_info_intel /* param_name */, - size_t /* param_value_size */, - void* /* param_value */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainAcceleratorINTEL( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainAcceleratorINTEL_fn)( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseAcceleratorINTEL( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseAcceleratorINTEL_fn)( - cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2; - -#ifdef CL_VERSION_1_1 - /*********************************** - * cl_ext_device_fission extension * - ***********************************/ - #define cl_ext_device_fission 1 - - extern CL_API_ENTRY cl_int CL_API_CALL - clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - extern CL_API_ENTRY cl_int CL_API_CALL - clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef cl_ulong cl_device_partition_property_ext; - extern CL_API_ENTRY cl_int CL_API_CALL - clCreateSubDevicesEXT( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - /* cl_device_partition_property_ext */ - #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 - #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 - #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 - #define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 - #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 - - /* clDeviceGetInfo selectors */ - #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 - #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 - #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 - #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 - #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 - - /* error codes */ - #define CL_DEVICE_PARTITION_FAILED_EXT -1057 - #define CL_INVALID_PARTITION_COUNT_EXT -1058 - #define CL_INVALID_PARTITION_NAME_EXT -1059 - - /* CL_AFFINITY_DOMAINs */ - #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 - #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 - #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 - #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 - #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 - #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 - - /* cl_device_partition_property_ext list terminators */ - #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) - #define CL_PARTITION_BY_NAMES_LIST_END_INTEL ((cl_device_partition_property_ext) 0 - 1) - - #define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (1 << 31) - - -/********************************* -* cl_qcom_ext_host_ptr extension -*********************************/ - -#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) - -#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 -#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 -#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 -#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 -#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 -#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 -#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 -#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 - -typedef cl_uint cl_image_pitch_info_qcom; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceImageInfoQCOM(cl_device_id device, - size_t image_width, - size_t image_height, - const cl_image_format *image_format, - cl_image_pitch_info_qcom param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret); - -typedef struct _cl_mem_ext_host_ptr -{ - /* Type of external memory allocation. */ - /* Legal values will be defined in layered extensions. */ - cl_uint allocation_type; - - /* Host cache policy for this external memory allocation. */ - cl_uint host_cache_policy; - -} cl_mem_ext_host_ptr; - -/********************************* -* cl_qcom_ion_host_ptr extension -*********************************/ - -#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 - -typedef struct _cl_mem_ion_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ - cl_mem_ext_host_ptr ext_host_ptr; - - /* ION file descriptor */ - int ion_filedesc; - - /* Host pointer to the ION allocated memory */ - void* ion_hostptr; - -} cl_mem_ion_host_ptr; - -#endif /* CL_VERSION_1_1 */ - - -#ifdef CL_VERSION_2_0 -/********************************* -* cl_khr_sub_groups extension -*********************************/ -#define cl_khr_sub_groups 1 - -//typedef cl_uint cl_kernel_sub_group_info; - -/* cl_khr_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0; - -typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0; -#endif /* CL_VERSION_2_0 */ - -#ifdef CL_VERSION_2_1 -/********************************* -* cl_khr_priority_hints extension -*********************************/ -#define cl_khr_priority_hints 1 - -typedef cl_uint cl_queue_priority_khr; - -/* cl_command_queue_properties */ -#define CL_QUEUE_PRIORITY_KHR 0x1096 - -/* cl_queue_priority_khr */ -#define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0) -#define CL_QUEUE_PRIORITY_MED_KHR (1<<1) -#define CL_QUEUE_PRIORITY_LOW_KHR (1<<2) - -#endif /* CL_VERSION_2_1 */ - -#ifdef CL_VERSION_2_1 -/********************************* -* cl_khr_throttle_hints extension -*********************************/ -#define cl_khr_throttle_hints 1 - -typedef cl_uint cl_queue_throttle_khr; - -/* cl_command_queue_properties */ -#define CL_QUEUE_THROTTLE_KHR 0x1097 - -/* cl_queue_throttle_khr */ -#define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0) -#define CL_QUEUE_THROTTLE_MED_KHR (1<<1) -#define CL_QUEUE_THROTTLE_LOW_KHR (1<<2) - -#endif /* CL_VERSION_2_1 */ - -#ifdef __cplusplus -} -#endif - - -#endif /* __CL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_gl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_gl.h deleted file mode 100644 index 945daa83d7f712..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_gl.h +++ /dev/null @@ -1,167 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -#ifndef __OPENCL_CL_GL_H -#define __OPENCL_CL_GL_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; -typedef struct __GLsync *cl_GLsync; - -/* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 -#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E -#define CL_GL_OBJECT_TEXTURE1D 0x200F -#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 -#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 - -/* cl_gl_texture_info */ -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 -#define CL_GL_NUM_SAMPLES 0x2012 - - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* bufobj */, - int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* renderbuffer */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem /* memobj */, - cl_gl_object_type * /* gl_object_type */, - cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem /* memobj */, - cl_gl_texture_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - - -/* Deprecated OpenCL 1.1 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -/* cl_khr_gl_sharing extension */ - -#define cl_khr_gl_sharing 1 - -typedef cl_uint cl_gl_context_info; - -/* Additional Error Codes */ -#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 - -/* cl_gl_context_info */ -#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 -#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 - -/* Additional cl_context_properties */ -#define CL_GL_CONTEXT_KHR 0x2008 -#define CL_EGL_DISPLAY_KHR 0x2009 -#define CL_GLX_DISPLAY_KHR 0x200A -#define CL_WGL_HDC_KHR 0x200B -#define CL_CGL_SHAREGROUP_KHR 0x200C - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * /* properties */, - cl_gl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret); - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_GL_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_gl_ext.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_gl_ext.h deleted file mode 100644 index e3c14c6408c441..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_gl_ext.h +++ /dev/null @@ -1,74 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -/* cl_gl_ext.h contains vendor (non-KHR) OpenCL extensions which have */ -/* OpenGL dependencies. */ - -#ifndef __OPENCL_CL_GL_EXT_H -#define __OPENCL_CL_GL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - #include -#else - #include -#endif - -/* - * For each extension, follow this template - * cl_VEN_extname extension */ -/* #define cl_VEN_extname 1 - * ... define new types, if any - * ... define new tokens, if any - * ... define new APIs, if any - * - * If you need GLtypes here, mirror them with a cl_GLtype, rather than including a GL header - * This allows us to avoid having to decide whether to include GL headers or GLES here. - */ - -/* - * cl_khr_gl_event extension - * See section 9.9 in the OpenCL 1.1 spec for more information - */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context /* context */, - cl_GLsync /* cl_GLsync */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_intel_planar_yuv.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_intel_planar_yuv.h deleted file mode 100644 index b470b074e260c3..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_intel_planar_yuv.h +++ /dev/null @@ -1,50 +0,0 @@ -/*****************************************************************************\ - -Copyright 2016 Intel Corporation All Rights Reserved. - -The source code contained or described herein and all documents related to -the source code ("Material") are owned by Intel Corporation or its suppliers -or licensors. Title to the Material remains with Intel Corporation or its -suppliers and licensors. The Material contains trade secrets and proprietary -and confidential information of Intel or its suppliers and licensors. The -Material is protected by worldwide copyright and trade secret laws and -treaty provisions. No part of the Material may be used, copied, reproduced, -modified, published, uploaded, posted, transmitted, distributed, or -disclosed in any way without Intel's prior express written permission. - -No license under any patent, copyright, trade secret or other intellectual -property right is granted to or conferred upon you by disclosure or delivery -of the Materials, either expressly, by implication, inducement, estoppel or -otherwise. Any license under such intellectual property rights must be -express and approved by Intel in writing. - -File Name: cl_intel_planar_yuv.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __CL_EXT_INTEL_PLANAR_YUV_H -#define __CL_EXT_INTEL_PLANAR_YUV_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/*************************************** -* cl_intel_planar_yuv extension * -****************************************/ -#define CL_NV12_INTEL 0x410E - -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) - -#ifdef __cplusplus -} -#endif - - -#endif /* __CL_EXT_INTEL_PLANAR_YUV_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_intel_planar_yuv.hpp b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_intel_planar_yuv.hpp deleted file mode 100644 index 63c55b9f2f429a..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_intel_planar_yuv.hpp +++ /dev/null @@ -1,315 +0,0 @@ -/*****************************************************************************\ - -Copyright 2016 Intel Corporation All Rights Reserved. - -The source code contained or described herein and all documents related to -the source code ("Material") are owned by Intel Corporation or its suppliers -or licensors. Title to the Material remains with Intel Corporation or its -suppliers and licensors. The Material contains trade secrets and proprietary -and confidential information of Intel or its suppliers and licensors. The -Material is protected by worldwide copyright and trade secret laws and -treaty provisions. No part of the Material may be used, copied, reproduced, -modified, published, uploaded, posted, transmitted, distributed, or -disclosed in any way without Intel's prior express written permission. - -No license under any patent, copyright, trade secret or other intellectual -property right is granted to or conferred upon you by disclosure or delivery -of the Materials, either expressly, by implication, inducement, estoppel or -otherwise. Any license under such intellectual property rights must be -express and approved by Intel in writing. - -File Name: cl_intel_planar_yuv.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __CL_EXT_INTEL_PLANAR_YUV_HPP_ -#define __CL_EXT_INTEL_PLANAR_YUV_HPP_ - -/*************************************** -* cl_intel_nv12 extension * -****************************************/ -#define CL_NV12_INTEL 0x410E - -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) - -#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E -#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F - -#ifdef __cplusplus - -#include - -#ifndef __ERR_STR -#if defined(__CL_ENABLE_EXCEPTIONS) -#define __ERR_STR(x) #x -#else -#define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS -#endif - -// To avoid accidentally taking ownership of core OpenCL types -// such as cl_kernel constructors are made explicit -// under OpenCL 1.2 -#ifndef __CL_EXPLICIT_CONSTRUCTORS -#if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#endif - -namespace cl { - -class Image2DYPlane : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2DYPlane( - const Context& context, - cl_mem_flags flags, - cl_mem parent_nv12_mem_object, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - cl::ImageFormat format(CL_R, CL_UNORM_INT8); - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - 0, // width (unused) - 0, // height (unused) - 0, // depth set to y-plane index - 0, // array size (unused) - 0, // row_pitch (unused) - 0, 0, 0, - parent_nv12_mem_object - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, parent_nv12_mem_object, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2DYPlane() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - - __CL_EXPLICIT_CONSTRUCTORS Image2DYPlane(const cl_mem& image2DYPlane) : Image(image2DYPlane) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DYPlane& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane(const Image2DYPlane& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane& operator = (const Image2DYPlane &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane(Image2DYPlane&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DYPlane& operator = (Image2DYPlane &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -class Image2DUVPlane : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2DUVPlane( - const Context& context, - cl_mem_flags flags, - cl_mem parent_nv12_mem_object, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; - cl::ImageFormat format(CL_RG, CL_UNORM_INT8); - -#if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } -#elif defined(CL_VERSION_1_2) - useCreateImage = true; -#else - useCreateImage = false; -#endif - -#if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - 0, // width (unused) - 0, // height (unused) - 1, // depth set to uv-plane index - 0, // array size (unused) - 0, // row_pitch (unused) - 0, 0, 0, - parent_nv12_mem_object - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); - - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) -#if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, parent_nv12_mem_object, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - } - - //! \brief Default constructor - initializes to NULL. - Image2DUVPlane() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DUVPlane(const cl_mem& image2DUVPlane) : Image(image2DUVPlane) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DUVPlane& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane(const Image2DUVPlane& img) : Image(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane& operator = (const Image2DUVPlane &img) - { - Image::operator=(img); - return *this; - } - -#if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane(Image2DUVPlane&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DUVPlane& operator = (Image2DUVPlane &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -}; - -}; - -#endif - - -#endif /* __CL_EXT_INTEL_PLANAR_YUV_HPP_ */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_packed_yuv_intel.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_packed_yuv_intel.h deleted file mode 100644 index 238ad80f11fbf0..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_packed_yuv_intel.h +++ /dev/null @@ -1,34 +0,0 @@ -/*****************************************************************************\ - -Copyright (c) 2013-2015 Intel Corporation All Rights Reserved. - -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -File Name: cl_packed_yuv_intel.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef CL_PACKED_YUV_INTEL -#define CL_PACKED_YUV_INTEL - -//packed YUV channel order -#define CL_YUYV_INTEL 0x4076 -#define CL_UYVY_INTEL 0x4077 -#define CL_YVYU_INTEL 0x4078 -#define CL_VYUY_INTEL 0x4079 - -#endif //CL_PACKED_YUV_INTEL - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_platform.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_platform.h deleted file mode 100644 index 4a733512ead817..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/cl_platform.h +++ /dev/null @@ -1,1408 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11803 $ on $Date: 2010-06-25 10:02:12 -0700 (Fri, 25 Jun 2010) $ */ - -#ifndef __CL_PLATFORM_H -#define __CL_PLATFORM_H - -#ifdef __APPLE__ - /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ - #include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) - #define CL_API_ENTRY - #define CL_API_CALL __stdcall - #define CL_CALLBACK __stdcall -#else - #define CL_API_ENTRY - #define CL_API_CALL - #define CL_CALLBACK -#endif - -/* - * Deprecation flags refer to the last version of the header in which the - * feature was not deprecated. - * - * E.g. VERSION_1_1_DEPRECATED means the feature is present in 1.1 without - * deprecation but is deprecated in versions later than 1.1. - */ - -#ifdef __APPLE__ - #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) - #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 - - #ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 - #else - #warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #endif -#else - #define CL_EXTENSION_WEAK_LINK - #define CL_API_SUFFIX__VERSION_1_0 - #define CL_EXT_SUFFIX__VERSION_1_0 - #define CL_API_SUFFIX__VERSION_1_1 - #define CL_EXT_SUFFIX__VERSION_1_1 - #define CL_API_SUFFIX__VERSION_1_2 - #define CL_EXT_SUFFIX__VERSION_1_2 - #define CL_API_SUFFIX__VERSION_2_0 - #define CL_EXT_SUFFIX__VERSION_2_0 - #define CL_API_SUFFIX__VERSION_2_1 - #define CL_EXT_SUFFIX__VERSION_2_1 - - #ifdef __GNUC__ - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #endif - #elif _WIN32 - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED __declspec(deprecated) - #endif - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #endif -#endif - -#if (defined (_WIN32) && defined(_MSC_VER)) - -/* scalar types */ -typedef signed __int8 cl_char; -typedef unsigned __int8 cl_uchar; -typedef signed __int16 cl_short; -typedef unsigned __int16 cl_ushort; -typedef signed __int32 cl_int; -typedef unsigned __int32 cl_uint; -typedef signed __int64 cl_long; -typedef unsigned __int64 cl_ulong; - -typedef unsigned __int16 cl_half; -typedef float cl_float; -typedef double cl_double; - -/* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) - -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 0x1.0p-23f - -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 - -#define CL_M_E 2.718281828459045090796 -#define CL_M_LOG2E 1.442695040888963387005 -#define CL_M_LOG10E 0.434294481903251816668 -#define CL_M_LN2 0.693147180559945286227 -#define CL_M_LN10 2.302585092994045901094 -#define CL_M_PI 3.141592653589793115998 -#define CL_M_PI_2 1.570796326794896557999 -#define CL_M_PI_4 0.785398163397448278999 -#define CL_M_1_PI 0.318309886183790691216 -#define CL_M_2_PI 0.636619772367581382433 -#define CL_M_2_SQRTPI 1.128379167095512558561 -#define CL_M_SQRT2 1.414213562373095145475 -#define CL_M_SQRT1_2 0.707106781186547572737 - -#define CL_M_E_F 2.71828174591064f -#define CL_M_LOG2E_F 1.44269502162933f -#define CL_M_LOG10E_F 0.43429449200630f -#define CL_M_LN2_F 0.69314718246460f -#define CL_M_LN10_F 2.30258512496948f -#define CL_M_PI_F 3.14159274101257f -#define CL_M_PI_2_F 1.57079637050629f -#define CL_M_PI_4_F 0.78539818525314f -#define CL_M_1_PI_F 0.31830987334251f -#define CL_M_2_PI_F 0.63661974668503f -#define CL_M_2_SQRTPI_F 1.12837922573090f -#define CL_M_SQRT2_F 1.41421353816986f -#define CL_M_SQRT1_2_F 0.70710676908493f - -#define CL_NAN (CL_INFINITY - CL_INFINITY) -#define CL_HUGE_VALF ((cl_float) 1e50) -#define CL_HUGE_VAL ((cl_double) 1e500) -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF - -#else - -#include - -/* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short __attribute__((aligned(2))); -typedef uint16_t cl_ushort __attribute__((aligned(2))); -typedef int32_t cl_int __attribute__((aligned(4))); -typedef uint32_t cl_uint __attribute__((aligned(4))); -typedef int64_t cl_long __attribute__((aligned(8))); -typedef uint64_t cl_ulong __attribute__((aligned(8))); - -typedef uint16_t cl_half __attribute__((aligned(2))); -typedef float cl_float __attribute__((aligned(4))); -typedef double cl_double __attribute__((aligned(8))); - -/* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) - -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 0x1.fffffep127f -#define CL_FLT_MIN 0x1.0p-126f -#define CL_FLT_EPSILON 0x1.0p-23f - -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 0x1.fffffffffffffp1023 -#define CL_DBL_MIN 0x1.0p-1022 -#define CL_DBL_EPSILON 0x1.0p-52 - -#define CL_M_E 2.718281828459045090796 -#define CL_M_LOG2E 1.442695040888963387005 -#define CL_M_LOG10E 0.434294481903251816668 -#define CL_M_LN2 0.693147180559945286227 -#define CL_M_LN10 2.302585092994045901094 -#define CL_M_PI 3.141592653589793115998 -#define CL_M_PI_2 1.570796326794896557999 -#define CL_M_PI_4 0.785398163397448278999 -#define CL_M_1_PI 0.318309886183790691216 -#define CL_M_2_PI 0.636619772367581382433 -#define CL_M_2_SQRTPI 1.128379167095512558561 -#define CL_M_SQRT2 1.414213562373095145475 -#define CL_M_SQRT1_2 0.707106781186547572737 - -#define CL_M_E_F 2.71828174591064f -#define CL_M_LOG2E_F 1.44269502162933f -#define CL_M_LOG10E_F 0.43429449200630f -#define CL_M_LN2_F 0.69314718246460f -#define CL_M_LN10_F 2.30258512496948f -#define CL_M_PI_F 3.14159274101257f -#define CL_M_PI_2_F 1.57079637050629f -#define CL_M_PI_4_F 0.78539818525314f -#define CL_M_1_PI_F 0.31830987334251f -#define CL_M_2_PI_F 0.63661974668503f -#define CL_M_2_SQRTPI_F 1.12837922573090f -#define CL_M_SQRT2_F 1.41421353816986f -#define CL_M_SQRT1_2_F 0.70710676908493f - -#if defined( __GNUC__ ) - #define CL_HUGE_VALF __builtin_huge_valf() - #define CL_HUGE_VAL __builtin_huge_val() - #define CL_NAN __builtin_nanf( "" ) -#else - #define CL_HUGE_VALF ((cl_float) 1e50) - #define CL_HUGE_VAL ((cl_double) 1e500) - float nanf( const char * ); - #define CL_NAN nanf( "" ) -#endif -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF - -#endif - -#include - -/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ -typedef unsigned int cl_GLuint; -typedef int cl_GLint; -typedef unsigned int cl_GLenum; - -/* - * Vector types - * - * Note: OpenCL requires that all types be naturally aligned. - * This means that vector types must be naturally aligned. - * For example, a vector of four floats must be aligned to - * a 16 byte boundary (calculated as 4 * the natural 4-byte - * alignment of the float). The alignment qualifiers here - * will only function properly if your compiler supports them - * and if you don't actively work to defeat them. For example, - * in order for a cl_float4 to be 16 byte aligned in a struct, - * the start of the struct must itself be 16-byte aligned. - * - * Maintaining proper alignment is the user's responsibility. - */ - -/* Define basic vector types */ -#if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ - typedef vector unsigned char __cl_uchar16; - typedef vector signed char __cl_char16; - typedef vector unsigned short __cl_ushort8; - typedef vector signed short __cl_short8; - typedef vector unsigned int __cl_uint4; - typedef vector signed int __cl_int4; - typedef vector float __cl_float4; - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_UINT4__ 1 - #define __CL_INT4__ 1 - #define __CL_FLOAT4__ 1 -#endif - -#if defined( __SSE__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef float __cl_float4 __attribute__((vector_size(16))); - #else - typedef __m128 __cl_float4; - #endif - #define __CL_FLOAT4__ 1 -#endif - -#if defined( __SSE2__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); - typedef cl_char __cl_char16 __attribute__((vector_size(16))); - typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); - typedef cl_short __cl_short8 __attribute__((vector_size(16))); - typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); - typedef cl_int __cl_int4 __attribute__((vector_size(16))); - typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); - typedef cl_long __cl_long2 __attribute__((vector_size(16))); - typedef cl_double __cl_double2 __attribute__((vector_size(16))); - #else - typedef __m128i __cl_uchar16; - typedef __m128i __cl_char16; - typedef __m128i __cl_ushort8; - typedef __m128i __cl_short8; - typedef __m128i __cl_uint4; - typedef __m128i __cl_int4; - typedef __m128i __cl_ulong2; - typedef __m128i __cl_long2; - typedef __m128d __cl_double2; - #endif - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_INT4__ 1 - #define __CL_UINT4__ 1 - #define __CL_ULONG2__ 1 - #define __CL_LONG2__ 1 - #define __CL_DOUBLE2__ 1 -#endif - -#if defined( __MMX__ ) - #include - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); - typedef cl_char __cl_char8 __attribute__((vector_size(8))); - typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); - typedef cl_short __cl_short4 __attribute__((vector_size(8))); - typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); - typedef cl_int __cl_int2 __attribute__((vector_size(8))); - typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); - typedef cl_long __cl_long1 __attribute__((vector_size(8))); - typedef cl_float __cl_float2 __attribute__((vector_size(8))); - #else - typedef __m64 __cl_uchar8; - typedef __m64 __cl_char8; - typedef __m64 __cl_ushort4; - typedef __m64 __cl_short4; - typedef __m64 __cl_uint2; - typedef __m64 __cl_int2; - typedef __m64 __cl_ulong1; - typedef __m64 __cl_long1; - typedef __m64 __cl_float2; - #endif - #define __CL_UCHAR8__ 1 - #define __CL_CHAR8__ 1 - #define __CL_USHORT4__ 1 - #define __CL_SHORT4__ 1 - #define __CL_INT2__ 1 - #define __CL_UINT2__ 1 - #define __CL_ULONG1__ 1 - #define __CL_LONG1__ 1 - #define __CL_FLOAT2__ 1 -#endif - -#if defined( __AVX__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_float __cl_float8 __attribute__((vector_size(32))); - typedef cl_double __cl_double4 __attribute__((vector_size(32))); - #else - typedef __m256 __cl_float8; - typedef __m256d __cl_double4; - #endif - #define __CL_FLOAT8__ 1 - #define __CL_DOUBLE4__ 1 -#endif - -/* Define capabilities for anonymous struct members. */ -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && (_MSC_VER >= 1500) - /* Microsoft Developer Studio 2008 supports anonymous structs, but - * complains by default. */ -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ - /* Disable warning C4201: nonstandard extension used : nameless - * struct/union */ -#pragma warning( push ) -#pragma warning( disable : 4201 ) -#else -#define __CL_HAS_ANON_STRUCT__ 0 -#define __CL_ANON_STRUCT__ -#endif - -/* Define alignment keys */ -#if defined( __GNUC__ ) - #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) -#elif defined( _WIN32) && (_MSC_VER) - /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ - /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ - /* #include */ - /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ - #define CL_ALIGNED(_x) -#else - #warning Need to implement some method to align data here - #define CL_ALIGNED(_x) -#endif - -/* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ -#if __CL_HAS_ANON_STRUCT__ - /* .xyzw and .s0123...{f|F} are supported */ - #define CL_HAS_NAMED_VECTOR_FIELDS 1 - /* .hi and .lo are supported */ - #define CL_HAS_HI_LO_VECTOR_FIELDS 1 -#endif - -/* Define cl_vector types */ - -/* ---- cl_charn ---- */ -typedef union -{ - cl_char CL_ALIGNED(2) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_char lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2; -#endif -}cl_char2; - -typedef union -{ - cl_char CL_ALIGNED(4) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[2]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4; -#endif -}cl_char4; - -/* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ -typedef cl_char4 cl_char3; - -typedef union -{ - cl_char CL_ALIGNED(8) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[4]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[2]; -#endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8; -#endif -}cl_char8; - -typedef union -{ - cl_char CL_ALIGNED(16) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[8]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[4]; -#endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8[2]; -#endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16; -#endif -}cl_char16; - - -/* ---- cl_ucharn ---- */ -typedef union -{ - cl_uchar CL_ALIGNED(2) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; }; -#endif -#if defined( __cl_uchar2__) - __cl_uchar2 v2; -#endif -}cl_uchar2; - -typedef union -{ - cl_uchar CL_ALIGNED(4) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[2]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4; -#endif -}cl_uchar4; - -/* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ -typedef cl_uchar4 cl_uchar3; - -typedef union -{ - cl_uchar CL_ALIGNED(8) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[4]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[2]; -#endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8; -#endif -}cl_uchar8; - -typedef union -{ - cl_uchar CL_ALIGNED(16) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[8]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[4]; -#endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8[2]; -#endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16; -#endif -}cl_uchar16; - - -/* ---- cl_shortn ---- */ -typedef union -{ - cl_short CL_ALIGNED(4) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_short lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2; -#endif -}cl_short2; - -typedef union -{ - cl_short CL_ALIGNED(8) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[2]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4; -#endif -}cl_short4; - -/* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ -typedef cl_short4 cl_short3; - -typedef union -{ - cl_short CL_ALIGNED(16) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[4]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[2]; -#endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8; -#endif -}cl_short8; - -typedef union -{ - cl_short CL_ALIGNED(32) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[8]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[4]; -#endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8[2]; -#endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16; -#endif -}cl_short16; - - -/* ---- cl_ushortn ---- */ -typedef union -{ - cl_ushort CL_ALIGNED(4) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2; -#endif -}cl_ushort2; - -typedef union -{ - cl_ushort CL_ALIGNED(8) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[2]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4; -#endif -}cl_ushort4; - -/* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ -typedef cl_ushort4 cl_ushort3; - -typedef union -{ - cl_ushort CL_ALIGNED(16) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[4]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[2]; -#endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8; -#endif -}cl_ushort8; - -typedef union -{ - cl_ushort CL_ALIGNED(32) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[8]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[4]; -#endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8[2]; -#endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16; -#endif -}cl_ushort16; - - -/* ---- cl_halfn ---- */ -typedef union -{ - cl_half CL_ALIGNED(4) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_half lo, hi; }; -#endif -#if defined( __CL_HALF2__) - __cl_half2 v2; -#endif -}cl_half2; - -typedef union -{ - cl_half CL_ALIGNED(8) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_half2 lo, hi; }; -#endif -#if defined( __CL_HALF2__) - __cl_half2 v2[2]; -#endif -#if defined( __CL_HALF4__) - __cl_half4 v4; -#endif -}cl_half4; - -/* cl_half3 is identical in size, alignment and behavior to cl_half4. See section 6.1.5. */ -typedef cl_half4 cl_half3; - -typedef union -{ - cl_half CL_ALIGNED(16) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_half4 lo, hi; }; -#endif -#if defined( __CL_HALF2__) - __cl_half2 v2[4]; -#endif -#if defined( __CL_HALF4__) - __cl_half4 v4[2]; -#endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8; -#endif -}cl_half8; - -typedef union -{ - cl_half CL_ALIGNED(32) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_half8 lo, hi; }; -#endif -#if defined( __CL_HALF2__) - __cl_half2 v2[8]; -#endif -#if defined( __CL_HALF4__) - __cl_half4 v4[4]; -#endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8[2]; -#endif -#if defined( __CL_HALF16__ ) - __cl_half16 v16; -#endif -}cl_half16; - -/* ---- cl_intn ---- */ -typedef union -{ - cl_int CL_ALIGNED(8) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_int lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2; -#endif -}cl_int2; - -typedef union -{ - cl_int CL_ALIGNED(16) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[2]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4; -#endif -}cl_int4; - -/* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ -typedef cl_int4 cl_int3; - -typedef union -{ - cl_int CL_ALIGNED(32) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[4]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4[2]; -#endif -#if defined( __CL_INT8__ ) - __cl_int8 v8; -#endif -}cl_int8; - -typedef union -{ - cl_int CL_ALIGNED(64) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[8]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4[4]; -#endif -#if defined( __CL_INT8__ ) - __cl_int8 v8[2]; -#endif -#if defined( __CL_INT16__ ) - __cl_int16 v16; -#endif -}cl_int16; - - -/* ---- cl_uintn ---- */ -typedef union -{ - cl_uint CL_ALIGNED(8) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2; -#endif -}cl_uint2; - -typedef union -{ - cl_uint CL_ALIGNED(16) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[2]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4; -#endif -}cl_uint4; - -/* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ -typedef cl_uint4 cl_uint3; - -typedef union -{ - cl_uint CL_ALIGNED(32) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[4]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[2]; -#endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8; -#endif -}cl_uint8; - -typedef union -{ - cl_uint CL_ALIGNED(64) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[8]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[4]; -#endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8[2]; -#endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16; -#endif -}cl_uint16; - -/* ---- cl_longn ---- */ -typedef union -{ - cl_long CL_ALIGNED(16) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_long lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2; -#endif -}cl_long2; - -typedef union -{ - cl_long CL_ALIGNED(32) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[2]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4; -#endif -}cl_long4; - -/* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ -typedef cl_long4 cl_long3; - -typedef union -{ - cl_long CL_ALIGNED(64) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[4]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4[2]; -#endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8; -#endif -}cl_long8; - -typedef union -{ - cl_long CL_ALIGNED(128) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[8]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4[4]; -#endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8[2]; -#endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16; -#endif -}cl_long16; - - -/* ---- cl_ulongn ---- */ -typedef union -{ - cl_ulong CL_ALIGNED(16) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2; -#endif -}cl_ulong2; - -typedef union -{ - cl_ulong CL_ALIGNED(32) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[2]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4; -#endif -}cl_ulong4; - -/* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ -typedef cl_ulong4 cl_ulong3; - -typedef union -{ - cl_ulong CL_ALIGNED(64) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[4]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[2]; -#endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8; -#endif -}cl_ulong8; - -typedef union -{ - cl_ulong CL_ALIGNED(128) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[8]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[4]; -#endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8[2]; -#endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16; -#endif -}cl_ulong16; - - -/* --- cl_floatn ---- */ - -typedef union -{ - cl_float CL_ALIGNED(8) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_float lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2; -#endif -}cl_float2; - -typedef union -{ - cl_float CL_ALIGNED(16) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[2]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4; -#endif -}cl_float4; - -/* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ -typedef cl_float4 cl_float3; - -typedef union -{ - cl_float CL_ALIGNED(32) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[4]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[2]; -#endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8; -#endif -}cl_float8; - -typedef union -{ - cl_float CL_ALIGNED(64) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[8]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[4]; -#endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8[2]; -#endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16; -#endif -}cl_float16; - -/* --- cl_doublen ---- */ - -typedef union -{ - cl_double CL_ALIGNED(16) s[2]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_double lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2; -#endif -}cl_double2; - -typedef union -{ - cl_double CL_ALIGNED(32) s[4]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[2]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4; -#endif -}cl_double4; - -/* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ -typedef cl_double4 cl_double3; - -typedef union -{ - cl_double CL_ALIGNED(64) s[8]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[4]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[2]; -#endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8; -#endif -}cl_double8; - -typedef union -{ - cl_double CL_ALIGNED(128) s[16]; -#if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[8]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[4]; -#endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8[2]; -#endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16; -#endif -}cl_double16; - -/* Macro to facilitate debugging - * Usage: - * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. - * The first line ends with: CL_PROGRAM_STRING_DEBUG_INFO \" - * Each line thereafter of OpenCL C source must end with: \n\ - * The last line ends in "; - * - * Example: - * - * const char *my_program = CL_PROGRAM_STRING_DEBUG_INFO "\ - * kernel void foo( int a, float * b ) \n\ - * { \n\ - * // my comment \n\ - * *b[ get_global_id(0)] = a; \n\ - * } \n\ - * "; - * - * This should correctly set up the line, (column) and file information for your source - * string so you can do source level debugging. - */ -#define __CL_STRINGIFY( _x ) # _x -#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) -#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" - -#ifdef __cplusplus -} -#endif - -#undef __CL_HAS_ANON_STRUCT__ -#undef __CL_ANON_STRUCT__ -#if defined( _WIN32) && (_MSC_VER >= 1500) -#pragma warning( pop ) -#endif - -#endif /* __CL_PLATFORM_H */ diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/opencl.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/opencl.h deleted file mode 100644 index 9855cd75e7da06..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/opencl.h +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2015 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are 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 Materials. - * - * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS - * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS - * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - * https://www.khronos.org/registry/ - * - * THE MATERIALS ARE 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 - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_H -#define __OPENCL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - -#include -#include -#include -#include - -#else - -#include -#include -#include -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_H */ - diff --git a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/va_ext.h b/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/va_ext.h deleted file mode 100644 index da67b8243c71d2..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/intel_ocl_icd/6.3/windows/include/CL/va_ext.h +++ /dev/null @@ -1,97 +0,0 @@ -/*****************************************************************************\ - -Copyright (c) 2013-2014 Intel Corporation All Rights Reserved. - -THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE -MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -File Name: va_ext.h - -Abstract: - -Notes: - -\*****************************************************************************/ -#ifndef __OPENCL_VA_EXT_H -#define __OPENCL_VA_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -//cl_va_api_device_source_intel -#define CL_VA_API_DISPLAY_INTEL 0x4094 - -//cl_va_api_device_set_intel -#define CL_PREFERRED_DEVICES_FOR_VA_API_INTEL 0x4095 -#define CL_ALL_DEVICES_FOR_VA_API_INTEL 0x4096 - -// cl_context_info -#define CL_CONTEXT_VA_API_DISPLAY_INTEL 0x4097 - -// cl_mem_info -#define CL_MEM_VA_API_MEDIA_SURFACE_INTEL 0x4098 -// cl_image_info -#define CL_IMAGE_VA_API_PLANE_INTEL 0x4099 - -//error codes -#define CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL -1098 -#define CL_INVALID_VA_API_MEDIA_SURFACE_INTEL -1099 -#define CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL -1100 -#define CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL -1101 - -// cl_command_type -#define CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL 0x409A -#define CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL 0x409B - -typedef cl_uint cl_va_api_device_source_intel; -typedef cl_uint cl_va_api_device_set_intel; - -typedef CL_API_ENTRY cl_int (CL_API_CALL * clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn)( - cl_platform_id platform, - cl_va_api_device_source_intel media_adapter_type, - void *media_adapter, - cl_va_api_device_set_intel media_adapter_set, - cl_uint num_entries, - cl_device_id *devices, - cl_uint *num_devices ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL * clCreateFromVA_APIMediaSurfaceINTEL_fn)( - cl_context context, - cl_mem_flags flags, - VASurfaceID *surface, - cl_uint plane, - cl_int *errcode_ret ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireVA_APIMediaSurfacesINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *ocl_event ) CL_EXT_SUFFIX__VERSION_1_2; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseVA_APIMediaSurfacesINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *ocl_event ) CL_EXT_SUFFIX__VERSION_1_2; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/LICENSE.txt b/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/LICENSE.txt deleted file mode 100644 index 5b0ef6117b5a1e..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/LICENSE.txt +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2008-2015 The Khronos Group Inc. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and/or associated documentation files (the -"Materials"), to deal in the Materials without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Materials, and to -permit persons to whom the Materials are 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 Materials. - -MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS -KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS -SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT - https://www.khronos.org/registry/ - -THE MATERIALS ARE 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 -MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. \ No newline at end of file diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl_intel_usm_defs.h b/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl_intel_usm_defs.h deleted file mode 100644 index 4eb29a10f3c465..00000000000000 --- a/inference-engine/thirdparty/clDNN/common/khronos_ocl_clhpp/cl_intel_usm_defs.h +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -#pragma once -#include "cl2.hpp" - -#define CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL 0x4190 -#define CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL 0x4191 -#define CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4192 -#define CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4193 -#define CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL 0x4194 - -typedef cl_bitfield cl_unified_shared_memory_capabilities_intel; - -#define CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL 1u -#define CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL 2u -#define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL 4u -#define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL 8u - -typedef cl_bitfield cl_mem_properties_intel; - -#define CL_MEM_ALLOC_FLAGS_INTEL 0x4195 - -typedef cl_bitfield cl_mem_alloc_flags_intel; - -#define CL_MEM_ALLOC_DEFAULT_INTEL 0 -#define CL_MEM_ALLOC_WRITE_COMBINED_INTEL (1 << 0) - -typedef cl_uint cl_mem_info_intel; - -#define CL_MEM_ALLOC_TYPE_INTEL 0x419A -#define CL_MEM_ALLOC_BASE_PTR_INTEL 0x419B -#define CL_MEM_ALLOC_SIZE_INTEL 0x419C -#define CL_MEM_ALLOC_INFO_TBD0_INTEL 0x419D /* reserved for future */ -#define CL_MEM_ALLOC_INFO_TBD1_INTEL 0x419E /* reserved for future */ -#define CL_MEM_ALLOC_INFO_TBD2_INTEL 0x419F /* reserved for future */ - -typedef cl_uint cl_unified_shared_memory_type_intel; - -#define CL_MEM_TYPE_UNKNOWN_INTEL 0x4196 -#define CL_MEM_TYPE_HOST_INTEL 0x4197 -#define CL_MEM_TYPE_DEVICE_INTEL 0x4198 -#define CL_MEM_TYPE_SHARED_INTEL 0x4199 - -typedef cl_uint cl_mem_advice_intel; - -#define CL_MEM_ADVICE_TBD0_INTEL 0x4208 /* reserved for future */ -#define CL_MEM_ADVICE_TBD1_INTEL 0x4209 /* reserved for future */ -#define CL_MEM_ADVICE_TBD2_INTEL 0x420A /* reserved for future */ -#define CL_MEM_ADVICE_TBD3_INTEL 0x420B /* reserved for future */ -#define CL_MEM_ADVICE_TBD4_INTEL 0x420C /* reserved for future */ -#define CL_MEM_ADVICE_TBD5_INTEL 0x420D /* reserved for future */ -#define CL_MEM_ADVICE_TBD6_INTEL 0x420E /* reserved for future */ -#define CL_MEM_ADVICE_TBD7_INTEL 0x420F /* reserved for future */ - -#define CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL 0x4200 -#define CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL 0x4201 -#define CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL 0x4202 - -#define CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL 0x4203 - -#define CL_COMMAND_MEMSET_INTEL 0x4204 -#define CL_COMMAND_MEMCPY_INTEL 0x4205 -#define CL_COMMAND_MIGRATEMEM_INTEL 0x4206 -#define CL_COMMAND_MEMADVISE_INTEL 0x4207 - -#define CL_MEM_ALLOC_TYPE_INTEL 0x419A -#define CL_MEM_ALLOC_BASE_PTR_INTEL 0x419B -#define CL_MEM_ALLOC_SIZE_INTEL 0x419C - -// Memory Allocation -typedef CL_API_ENTRY void *(CL_API_CALL *PFN_clHostMemAllocINTEL)( - cl_context, /*context*/ - const cl_mem_properties_intel*, /*properties*/ - size_t, /*size*/ - cl_uint, /*alignment*/ - cl_int* /*errcodeRet*/); - -typedef CL_API_ENTRY void *(CL_API_CALL *PFN_clSharedMemAllocINTEL)( - cl_context, /*context*/ - cl_device_id, /*device*/ - const cl_mem_properties_intel*, /*properties*/ - size_t, /*size*/ - cl_uint, /*alignment*/ - cl_int* /*errcodeRet*/); - -typedef CL_API_ENTRY void *(CL_API_CALL *PFN_clDeviceMemAllocINTEL)( - cl_context, /*context*/ - cl_device_id, /*device*/ - const cl_mem_properties_intel*, /*properties*/ - size_t, /*size*/ - cl_uint, /*alignment*/ - cl_int* /*errcodeRet*/); - -typedef CL_API_ENTRY cl_int(CL_API_CALL *PFN_clMemFreeINTEL)( - cl_context, /*context*/ - const void* /*ptr*/); - -// Kernel -typedef CL_API_ENTRY cl_int(CL_API_CALL *PFN_clSetKernelArgMemPointerINTEL)( - cl_kernel, /*kernel*/ - cl_uint, /*argIndex*/ - const void* /*argValue*/); - -//Queue -typedef CL_API_ENTRY cl_int(CL_API_CALL *PFN_clEnqueueMemcpyINTEL)( - cl_command_queue, /*commandQueue*/ - cl_bool, /*blocking*/ - void*, /*dstPtr*/ - const void*, /*srcPtr*/ - size_t, /*size*/ - cl_uint, /*numEventsInWaitList*/ - const cl_event*, /* eventWaitList */ - cl_event* /* event */); - -typedef CL_API_ENTRY cl_int(CL_API_CALL *PFN_clEnqueueMemsetINTEL)( - cl_command_queue, /*commandQueue*/ - void*, /*dstPtr*/ - cl_int, /*value*/ - size_t, /*size*/ - cl_uint, /*numEventsInWaitList*/ - const cl_event*, /*eventWaitList*/ - cl_event* /*event*/); - -typedef CL_API_ENTRY cl_int(CL_API_CALL *PFN_clEnqueueMigrateMemINTEL)( - cl_command_queue, /*commandQueue*/ - const void*, /*ptr*/ - size_t, /*size*/ - cl_mem_migration_flags, /*flags*/ - cl_uint, /*numEventsInWaitList*/ - const cl_event*, /*eventWaitList*/ - cl_event* /*event*/); - -typedef CL_API_ENTRY cl_int(CL_API_CALL *PFN_clEnqueueMemFillINTEL)( - cl_command_queue, /*commandQueue*/ - void*, /*dstPtr*/ - const void*, /*pattern*/ - size_t, /*patternSize*/ - size_t, /*size*/ - cl_uint, /*numEventsInWaitList*/ - const cl_event*, /*eventWaitList*/ - cl_event* /*event*/); diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/OpenCL_ICD_Loader_License.txt b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/OpenCL_ICD_Loader_License.txt new file mode 100644 index 00000000000000..d645695673349e --- /dev/null +++ b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/OpenCL_ICD_Loader_License.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/android/Release/bin/x64/libOpenCL.so b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/android/Release/bin/x64/libOpenCL.so new file mode 100644 index 00000000000000..b857419096a0fb Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/android/Release/bin/x64/libOpenCL.so differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so new file mode 100755 index 00000000000000..395d777479b488 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so.1 b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so.1 new file mode 100755 index 00000000000000..395d777479b488 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so.1 differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so.1.2 b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so.1.2 new file mode 100755 index 00000000000000..395d777479b488 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Debug/bin/x64/libOpenCL.so.1.2 differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so new file mode 100755 index 00000000000000..968cae814c6b15 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so.1 b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so.1 new file mode 100755 index 00000000000000..968cae814c6b15 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so.1 differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so.1.2 b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so.1.2 new file mode 100755 index 00000000000000..968cae814c6b15 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/linux/Release/bin/x64/libOpenCL.so.1.2 differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Debug/lib/x64/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Debug/lib/x64/OpenCL.lib new file mode 100755 index 00000000000000..ff5e256ccd5765 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Debug/lib/x64/OpenCL.lib differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Debug/lib/x86/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Debug/lib/x86/OpenCL.lib new file mode 100755 index 00000000000000..50ce5d036179bf Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Debug/lib/x86/OpenCL.lib differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Release/lib/x64/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Release/lib/x64/OpenCL.lib new file mode 100755 index 00000000000000..ff5e256ccd5765 Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Release/lib/x64/OpenCL.lib differ diff --git a/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Release/lib/x86/OpenCL.lib b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Release/lib/x86/OpenCL.lib new file mode 100755 index 00000000000000..50ce5d036179bf Binary files /dev/null and b/inference-engine/thirdparty/clDNN/common/khronos_ocl_icd/windows/Release/lib/x86/OpenCL.lib differ diff --git a/inference-engine/thirdparty/clDNN/docs/CMakeLists.txt b/inference-engine/thirdparty/clDNN/docs/CMakeLists.txt index 25e24ce2ffea27..6599a436d4a746 100644 --- a/inference-engine/thirdparty/clDNN/docs/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/docs/CMakeLists.txt @@ -1,17 +1,6 @@ -# Copyright (c) 2016 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# # ========================================= Name / Output settings ===================================== diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/CMakeLists.txt b/inference-engine/thirdparty/clDNN/kernel_selector/CMakeLists.txt index 718e295501028f..5869f7dd14a763 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/kernel_selector/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (c) 2016 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# # =================================== Name / Output settings from parent =============================== diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/common/common_tools.h b/inference-engine/thirdparty/clDNN/kernel_selector/common/common_tools.h index a7c2e025cf9480..4d4a1e7f531727 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/common/common_tools.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/common/common_tools.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once #include "common_types.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/common/common_types.h b/inference-engine/thirdparty/clDNN/kernel_selector/common/common_types.h index 4099586bfb38b5..0c07f352f5120d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/common/common_types.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/common/common_types.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once @@ -58,6 +48,7 @@ enum class KernelType { ONE_HOT, GATHER, SCATTER_UPDATE, + SCATTER_ND_UPDATE, SCATTER_ELEMENTS_UPDATE, DEPTH_TO_SPACE, BATCH_TO_SPACE, @@ -252,6 +243,14 @@ enum class MVNMode { WITHIN_CHANNELS }; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// MVNEpsMode +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +enum class MVNEpsMode { + INSIDE_SQRT, + OUTSIDE_SQRT +}; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // LRNMode //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.cpp index 6be09900ef7341..d193edab5a0a14 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include "tensor_type.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.h b/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.h index 67fa78eda7f0cb..19dbc972aba8b6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/common/tensor_type.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.cpp index 93f1549a28f4cd..0b31d6ce496cb3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "activation_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.h index 21ebf8025ddc7b..48b62f8b1aae77 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.cpp index 54822613d98c13..aac84fb4a7bc12 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "activation_kernel_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.h index d2e22bcaf15022..215b0869d69f35 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.cpp index 88bf37bad7c791..f17625c9ea24d5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "activation_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.h index 3680dc6c615c8c..5fffc096dd77d0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.cpp index 43c6c203624c24..218133dc310f38 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "activation_kernel_selector.h" #include "activation_kernel_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.h index 3ffb18aad11fce..e9bed939296025 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/activation/activation_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.cpp index d1e91089be693f..ab4e2068371679 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include #include "arg_max_min_kernel_axis.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.h index d4fe66fadb8c25..f3f5973148285a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_axis.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.cpp index bc465ff1bcbda0..236da961e4ed9b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "arg_max_min_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.h index c3289644b41143..94f22ed0aa28ba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.cpp index e7cf71ba51c7f8..5aa9df26723f59 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "arg_max_min_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.h index 3e5bb4f4f06504..736d7512feb71d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_gpu_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.cpp index 1619f222093b0d..7ff5f8d189c036 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "arg_max_min_kernel_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.h index 1851571851ff7c..dcf54cf68dceb2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_opt.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.cpp index 05dcbd10269d0c..3ddd5e1c62a092 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "arg_max_min_kernel_selector.h" #include "arg_max_min_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.h index cf72aa0be5f1e4..dc5936e0b0ba08 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/arg_max_min/arg_max_min_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.cpp index 7daa95de85f3f8..c3a21a139e44c5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "average_unpooling_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.h index f5a47698156f9f..31a6f1c397007b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.cpp index ceab3284981350..78c0c741b821fd 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "average_unpooling_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.h index fdce4caa5afb3a..166a19bd92b18e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_gpu_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.cpp index 75501415d3b136..a6ad1cc335bd0a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "average_unpooling_kernel_selector.h" #include "average_unpooling_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.h index 564954737fc0a1..653809a605d27c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/average_unpooling/average_unpooling_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.cpp index c180338f027212..99fcee558c8646 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "batch_to_space_kernel_base.h" #include "kernel_selector_utils.h" @@ -66,7 +54,7 @@ JitConstants BatchToSpaceKernelBase::GetJitConstants(const batch_to_space_params if (args.w != 0) { jit.AddConstant(MakeJitConstant(name + "_W", args.w)); jit.AddConstant(MakeJitConstant(name + "_Z", args.z)); - } else if(args.z != 0) { + } else if (args.z != 0) { jit.AddConstant(MakeJitConstant(name + "_W", default_value)); jit.AddConstant(MakeJitConstant(name + "_Z", args.z)); } else { diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.h index ebefdf2b1c4c39..47aed8cd4ce812 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.cpp index 1ac2f84c77b102..ab407b42601167 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "batch_to_space_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.h index d9f7355dcaf037..72be991d5628aa 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.cpp index dfb256987fa8b9..5dffd6d4041359 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "batch_to_space_kernel_selector.h" #include "batch_to_space_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.h index 1dc0fa2ff2fd0c..9da1fd47fa62bd 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/batch_to_space/batch_to_space_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.cpp index 5686d22ce73223..695b9b9e81a5e0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "binary_convolution_kernel_1x1.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.h index 14107259244502..e5577795e3a6c7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.cpp index dee3281ac99019..4ec6f5929193eb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "binary_convolution_kernel_1x1_b_fs_yx_fsv16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.h index a99fc9f10ab63a..cc2f1faab9e226 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_1x1_b_fs_yx_fsv16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.cpp index b288aa12ffc143..6747a78d418955 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include "binary_convolution_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.h index b8ff2d38b81f5a..9343553dfc6020 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.cpp index f896eff47b9f41..e2f429b384a585 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "binary_convolution_kernel_generic.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.h index 4a6a8bc25ca483..2f19f9709dc993 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_generic.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.cpp index 81f4f0a9e9fe81..bf6f17fb518bfc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "binary_convolution_kernel_ref.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.h index 428d250ff2dc15..e7f789982ad27e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.cpp index 22322121cbdf2c..a031c7fcea7ccb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "binary_convolution_kernel_selector.h" #include "binary_convolution_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.h index 6d14cc27884e26..e48859b9d5883d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.cpp index 6a2efed2cb19ef..de9915e74df96d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "binary_convolution_params.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.h index 28c50068f8998e..20f246b0d20dc9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/binary_convolution/binary_convolution_params.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.cpp index 8d51b85d2d0707..efeb5a1d8f3bc5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "border_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.h index a6317fc8d6931a..532603728b2ad0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.cpp index ecbaa5b34a5ab6..2bed9a76962a74 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "border_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.h index 0a8dc7e7f9f204..520a364d9e56d4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.cpp index 55e19a378fac4c..3143ec4ab53254 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "border_kernel_selector.h" #include "border_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.h index d0493f8b39dfcb..4fbcde4c41fa47 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/border/border_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.cpp index 790e197fcf3513..db7b26a07a48f1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "broadcast_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.h index f6c96f74e9c85c..99efe77f9a14e4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.cpp index 0961cc66e59f2b..034c2b86b457dc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "broadcast_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.h index b24b244cad7f94..c69b81b76d8614 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.cpp index 6426f9d6af2c6b..eecc88312068da 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "broadcast_kernel_selector.h" #include "broadcast_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.h index 9911526fb27764..80234e2e5d4bc3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/broadcast/broadcast_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.cpp index 6de6641e85d316..4595b21ecf81ef 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "concatenation_kernel_b_fs_yx_fsv16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.h index efb5e61351e8be..65221ab4a8b42e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_b_fs_yx_fsv16.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.cpp index 3958922b97539d..649afada9992b3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "tensor_type.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.h index 4fdd9408d4372c..ea7d31bba64cea 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.cpp index 93f59025bf3882..c3002978d3d19a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "concatenation_kernel_depth_bfyx_no_pitch.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.h index 18fa934999ae1d..5364ae163684f2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_depth_bfyx_no_pitch.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.cpp index c7d42ccd429b12..07912f47634e5e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.h index ca840ee4d40427..5ffcf2662eb9a6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_fs_b_yx_fsv32.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.cpp index 917315f0dfd553..d9f630b9a57520 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "concatenation_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.h index f57765fdfbc5fa..93c17a3434800c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.cpp index 933261865bc5e5..51be4448b2ed10 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "concatenation_kernel_selector.h" #include "concatenation_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.h index f2b7a63203b3ee..2135b74ed3c378 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.cpp index ada105fd398570..bb5fa8b8a34a7a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "concatenation_kernel_simple_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.h index 6e8cc9e4d84e85..4913f0082d280e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/concatenation/concatenation_kernel_simple_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.cpp index f70437b6b35861..14fb4322d2b749 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_b_fs_yx_fsv16.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.h index 6eeb88f061a7dc..e22aca5dc449bd 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp index 37f92f5b230c40..50c387183b98c6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "convolution_kernel_b_fs_yx_fsv16_1x1.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.h index 057af811ad5f23..c077f6ce985a14 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.cpp index d915f6b55a0e41..27824400371783 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "convolution_kernel_b_fs_yx_fsv16_depthwise.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.h index dc868e528d54ee..dd4d7c8ca693ae 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_depthwise.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.cpp index a36cf74a36ce4c..b168508d60eee0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_b_fs_yx_fsv16_imad_1x1.h" #include "kernel_selector_utils.h" @@ -201,13 +190,11 @@ bool Convolution_kernel_b_fs_yx_fsv16_imad_1x1::Validate(const Params& params, c if ((conv_params.activations_zero_points.empty() || conv_params.weights_zero_points.empty()) && (conv_params.compensation.empty())) return false; - } - else if (conv_params.quantization == QuantizationType::ASYMMETRIC_DATA) { + } else if (conv_params.quantization == QuantizationType::ASYMMETRIC_DATA) { if ((conv_params.activations_zero_points.empty()) && (conv_params.compensation.empty())) return false; - } - else if (conv_params.quantization == QuantizationType::ASYMMETRIC_WEIGHTS) { + } else if (conv_params.quantization == QuantizationType::ASYMMETRIC_WEIGHTS) { if (conv_params.weights_zero_points.empty()) return false; } else { diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.h index 6c37d1863758dc..34ef8682699782 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv16_imad_1x1.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.cpp index 4c0ff6661390b8..a5e86edfac8f66 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_b_fs_yx_fsv4_int8.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.h index 728cf17b5567ab..b229830a75f10c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv4_int8.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.cpp index b44628e54217f0..e419e88d6d6514 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.hpp" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.hpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.hpp index 217a9b8a403258..9d901b1938aa2b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.hpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_yx_fsv_16_32_imad_dw.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.cpp index 3adfcecacedfd3..cb80819e30cbde 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.cpp @@ -1,17 +1,5 @@ -// -// Copyright (c) 2019-2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include "convolution_kernel_b_fs_zyx_fsv16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.h index ae6d21a48b233b..83d419db8a8282 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16.h @@ -1,17 +1,5 @@ -// -// Copyright (c) 2019-2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp16.h index 53334dc2f36073..3acd8d98e01da3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp16.h @@ -1,17 +1,5 @@ -// -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp32.h index 902037fae8d570..457984ecbe9046 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_fp32.h @@ -1,17 +1,5 @@ -// -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.cpp index 397d5646da5ec9..87f09fd26062f4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_b_fs_zyx_fsv16_imad.h" #include "kernel_selector_utils.h" @@ -65,7 +55,6 @@ namespace kernel_selector { Convolution_kernel_b_fs_zyx_fsv16_imad::BlockParams Convolution_kernel_b_fs_zyx_fsv16_imad::GetBlockParams(const convolution_params& params) const { - size_t max_block_width = getOutBlock_X(params.output.X().v, params.stride.x, params.filterSize.x, params.dilation.x); size_t max_in_block_width = (max_block_width - 1) * params.stride.x + (params.filterSize.x - 1) * params.dilation.x + 1; @@ -454,7 +443,8 @@ ConvolutionKernelBase::DispatchData Convolution_kernel_b_fs_zyx_fsv16_imad::SetD dispatchData.gws[0] = CeilDiv(output.X().v, block_params.output_block_width); dispatchData.gws[1] = CeilDiv(output.Y().v, block_params.output_block_height) * CeilDiv(output.Z().v, block_params.output_block_depth); - dispatchData.gws[2] = output.Batch().v * CeilDiv(weights.OFM().v, block_params.output_block_features) * params.groups * simd * block_params.feature_slm_split; + dispatchData.gws[2] = output.Batch().v * CeilDiv(weights.OFM().v, block_params.output_block_features) * + params.groups * simd * block_params.feature_slm_split; dispatchData.lws[0] = 1; dispatchData.lws[1] = 1; @@ -490,13 +480,11 @@ bool Convolution_kernel_b_fs_zyx_fsv16_imad::Validate(const Params& params, cons if ((conv_params.activations_zero_points.empty() || conv_params.weights_zero_points.empty()) && (conv_params.compensation.empty())) return false; - } - else if (conv_params.quantization == QuantizationType::ASYMMETRIC_DATA) { + } else if (conv_params.quantization == QuantizationType::ASYMMETRIC_DATA) { if ((conv_params.activations_zero_points.empty()) && (conv_params.compensation.empty())) return false; - } - else if (conv_params.quantization == QuantizationType::ASYMMETRIC_WEIGHTS) { + } else if (conv_params.quantization == QuantizationType::ASYMMETRIC_WEIGHTS) { if (conv_params.weights_zero_points.empty()) return false; } else { diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.h index 094be9230de42f..882ef08f7bf921 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_b_fs_zyx_fsv16_imad.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.cpp index 24b4238039d126..bcc7bbd29e7c9b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "convolution_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.h index 24bbbba9d02678..a6bfc09d354b52 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.cpp index 0757c3285d1259..c88a3e818e0ce6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_1x1.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.h index 9a9c76ee7b4483..943be2aec9b14d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.cpp index 0f736da7497d0d..842b121322db80 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_1x1_gemm_buf.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.h index a8a3b2b2d2dbf6..05ff771ea03fef 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_gemm_buf.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.cpp index 1e8b6c6fc51d8f..e46c2189521d47 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_1x1_opt.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.h index 6e1023a3745ef2..38c40f0c87c22c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_1x1_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.cpp index ca2742d21b1850..492e63e3b04413 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_depthwise_weights_lwg.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.h index 3fafd3d9e110c6..7fe81911d5cd5e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_depthwise_weights_lwg.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.cpp index b6396055a85f35..c65a4cf6df7926 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_direct_10_12_16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.h index 4e49171c25651c..7ecdae9aeb74af 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_direct_10_12_16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.cpp index 0dae03481ec808..62fd322cb2fdf1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_gemm_like.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.h index 74ae80b2eec7b2..07e336bef9c3bf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_gemm_like.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.cpp index ef19e6ba48e5f4..1d990dd26d937a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_iyxo.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.h index 6dd530742d0799..a98ccd9d2715db 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_iyxo.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.cpp index 74199fe9193a5f..a80696c0b60a02 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_os_iyx_osv16.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.h index d8c8c07601723a..6bc617bb3f3e6b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_os_iyx_osv16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.cpp index b6c894335e4440..d073b28042744d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_to_b_fs_yx_fsv16.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.h index fbd6948e6c14b2..6880ea060d8030 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_b_fs_yx_fsv16.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.cpp index dce0b3f1fdfb03..6cbc72137a6fff 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.h" #include "convolution_kernel_bfyx_to_b_fs_yx_fsv16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.h index 6f6a5ff69b1711..9d54d738501d2b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_bs_fs_yx_bsv16_fsv16.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.cpp index 954b7e4b4aa525..ae48838a7769ba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_bfyx_to_fs_byx_fsv32.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.h index 66c9e569b8c99f..e3c7a9b93648fe 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_bfyx_to_fs_byx_fsv32.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once #include "convolution_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.cpp index 69ad4c0685920e..b7086797eeb4dc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_fs_byx_fsv32.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.h index e9bb290b15d7de..9e7da282e366c2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once #include "convolution_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.cpp index 280527a3e4862d..55463301ee430e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_fs_byx_fsv32_1x1.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.h index 01ee1bb872a599..0b39b6db514148 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_1x1.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once #include "convolution_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.cpp index 28dc583ddd0e27..9ecb7d4f070027 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_fs_byx_fsv32_depthwise.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.h index ee84214af09be1..be71a2dd77f1a7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_fs_byx_fsv32_depthwise.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once #include "convolution_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.cpp index dfcd19e59d8c96..c40498b48d8580 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_imad.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.h index 488c4b03ef789f..b85119bcfbc0fe 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.cpp index 41ac6a08ea712e..5bebc310c10194 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_imad_b_fs_yx_fsv4_1x1.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.h index f8a12cfd41c28f..d3843670040f54 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_1x1.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.cpp index c4a67fdf4cfe93..0823f40e869d6c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_imad_b_fs_yx_fsv4_dw.hpp" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.hpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.hpp index 9aaaba147760f6..1ca9ea57ec455a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.hpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_b_fs_yx_fsv4_dw.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.cpp index 795a82e8bdac2d..be175dd738165d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.h index 9be2e51ad83067..9be9871202447b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_1x1.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.cpp index 0b43b489911eed..de5a578fa63a40 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.h index 23c74e5f715a2b..1dbb84cc30eaea 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_imad_bs_fs_yx_bsv16_fsv16_3x3.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.cpp index 194dc34ef3ea0f..e541a60051a198 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_mmad_b_fs_yx_fsv32.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.h index 821abadd1330b4..333a8ec0449326 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.cpp index 412780194b60ee..bac9526d728149 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_mmad_b_fs_yx_fsv32_dw.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.h index ba43118034cef7..6bcba472008a7f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_b_fs_yx_fsv32_dw.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.cpp index 089b39c499940f..a33f301bef34a6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.h index 63bd8f0d2ca91b..bb518f27561704 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv32.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.cpp index 8b6c522aabfac2..56357aa7362279 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.h index a3dca1b83b3efa..94a9897038e2df 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_mmad_bfyx_to_b_fs_yx_fsv4.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.cpp index fe6e2cb334c349..ae3b01f968113a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "convolution_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.h index f467a1ba110aae..a07032c6e10678 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.cpp index 28f31b2c3dc2b7..38a3910be23313 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "convolution_kernel_selector.h" #include "convolution_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.h index 5bc4010531bea7..5b19d2eed0967c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.cpp index 143b9c0345700f..af5306c4c2106d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_winograd_2x3_s1.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.h index 27537be1d9ce0c..ed137643c2cc1b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.cpp index f3cd8003d02428..8ae6e2949f7516 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_winograd_2x3_s1_fused.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.h index 3e4627a6bd7506..462dfde4a159ba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_2x3_s1_fused.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.cpp index db87e168613f17..b727d9e2ecdd82 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "convolution_kernel_winograd_6x3_s1_fused.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.h index 8d4f94c34aa742..22140828086949 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_winograd_6x3_s1_fused.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.cpp index efbe60ef8a475a..bc5f8cb3e04472 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "convolution_kernel_yxfb_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.h index 9089ea32027789..abe6cab01964b9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.cpp index c073047ab40d38..6c666b613cb5df 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_yxfb_yxio_b16.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.h index 6628b81b4980aa..1506eb8613ab31 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.cpp index 94332f79985088..440f8ecea166cc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_yxfb_yxio_b1_block_multiple_x.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.h index 27fd6a39f67fe6..b315c2fcf2855c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b1_block_multiple_x.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.cpp index e315fa05544f70..a1fb451746ed91 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "convolution_kernel_yxfb_yxio_b8.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.h index d116a89099d3b4..effa59c78d84e0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_kernel_yxfb_yxio_b8.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.cpp index 68b2ca861974a2..47a0cfc772595f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "convolution_params.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.h index 1a2aab72ff3149..97aa44741b7d12 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/convolution_params.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.cpp index 8f47680eff1650..7333da84263b4f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "deformable_convolution_kernel_bfyx_conv.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.h index 05a6bb123e6da6..b4ae917fbf51af 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_conv.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.cpp index 86c939c1a0ccf0..776b9a7f8e5e21 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "deformable_convolution_kernel_bfyx_interp.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.h index 1012183c730418..ce7c2bc5de17cb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_interp.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.cpp index b487176d238afe..ee8a1a54b74804 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "deformable_convolution_kernel_bfyx_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.h index 4720cfe182a5cc..1ba3e77036cc03 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/convolution/deformable_convolution_kernel_bfyx_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.cpp index 6020e3bf93e7e5..db690ef39a4131 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "ctc_greedy_decoder_kernel_base.h" #include "kernel_selector_utils.h" @@ -39,7 +28,7 @@ JitConstants CTCGreedyDecoderKernelBase::GetJitConstants(const ctc_greedy_decode MakeJitConstant("T_", inp.Batch().v), MakeJitConstant("N_", inp.Feature().v) }); - }; + } return jit; } @@ -48,7 +37,7 @@ CTCGreedyDecoderKernelBase::DispatchData CTCGreedyDecoderKernelBase::SetDefault( DispatchData dispatchData; dispatchData.gws = { 1, 1, 1 }; - dispatchData.lws= GetOptimalLocalWorkGroupSizes(dispatchData.gws, params.engineInfo); + dispatchData.lws = GetOptimalLocalWorkGroupSizes(dispatchData.gws, params.engineInfo); return dispatchData; } diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.h index 218216bce32271..ef3f540b1e2c04 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_base.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include "kernel_base_opencl.h" @@ -25,7 +16,7 @@ struct ctc_greedy_decoder_params : public base_params { ctc_greedy_decoder_params() : base_params(KernelType::CTC_GREEDY_DECODER) {} bool merge_repeated = true; - uint32_t blank_index; + uint32_t blank_index = 0; uint32_t outputs_num = 1; }; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.cpp index 4528c02e8ea271..13b2367b6e2c09 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include "ctc_greedy_decoder_kernel_ref.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.h index 10998100d316af..eb38333b6a18c7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_ref.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include "ctc_greedy_decoder_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.cpp index ad98384ceebcf1..452d916f5ce332 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "ctc_greedy_decoder_kernel_selector.h" #include "ctc_greedy_decoder_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.h index d857b8a9aa45e9..0ee9b3bbc1a2c2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/ctc_greedy_decoder/ctc_greedy_decoder_kernel_selector.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include "kernel_selector.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.cpp index 6eac11f75c1d7b..7461c206a890dd 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "cum_sum_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.h index c1f6f70ff2a664..048ad02fab5969 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.cpp index 4a49f6b2b7ba10..319c9bb0224f65 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "cum_sum_kernel_partial_sum.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.h index d6e64547cc90b9..f29dabe0cf3cc9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_partial_sum.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.cpp index 88ee5597750be0..31e781890ddb72 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "cum_sum_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.h index 6853136ae09223..087f2754932c3a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.cpp index aa62790a15ff1c..cb1cde12cdf4ec 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "cum_sum_kernel_selector.h" #include "cum_sum_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.h index 8d4f6cea0de7b7..2ff5e5e277702a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/cum_sum/cum_sum_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.cpp index e05bf5e2681990..a4a5b0de0832a4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.cpp @@ -1,17 +1,5 @@ -// -// Copyright (c) 2019-2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include "deconvolution_kernel_b_fs_zyx_fsv16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.h index 711c962b14cd55..3df33305569950 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16.h @@ -1,17 +1,5 @@ -// -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.cpp index 77fa9e7e909314..830da100b544d8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.cpp @@ -1,17 +1,5 @@ -// -// Copyright (c) 2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include "deconvolution_kernel_b_fs_zyx_fsv16_dw.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.h index 45643bb23272ce..d9f266adcb19d4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_b_fs_zyx_fsv16_dw.h @@ -1,17 +1,5 @@ -// -// Copyright (c) 2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.cpp index 49ab16cde466e4..5ec4e19da1e8a4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "deconvolution_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.h index a1da638fd78439..e5d8667a34ae42 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.cpp index cf7394c8080d9d..f476bb265a10d0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "deconvolution_kernel_bfyx_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.h index 3cff8f2409d7b4..0408384a79278f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_bfyx_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.cpp index 4eff20a4b9fcef..5833177d83baec 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "deconvolution_kernel_imad_along_f_tile_bfx.hpp" @@ -127,7 +117,7 @@ DeconvolutionKernelBase::DispatchData DeconvolutionKernel_imad_along_f_tile_bfx: KernelsPriority DeconvolutionKernel_imad_along_f_tile_bfx::GetKernelsPriority(const Params& params, const optional_params& /*options*/) const { const auto& p = static_cast(params); - + // Currently most optimized for fsv16 formats if (p.inputs[0].GetLayout() == DataLayout::b_fs_yx_fsv16 || p.inputs[0].GetLayout() == DataLayout::b_fs_zyx_fsv16) return FORCE_PRIORITY_7; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.hpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.hpp index f33bcff40639b5..6f95d321f98ac6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.hpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_along_f_tile_bfx.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.cpp index 56250efdd8ea3e..384efdde91c3a9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "deconvolution_kernel_imad_ref.hpp" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.hpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.hpp index 926f7139528fc4..bf70836d9f4ad6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.hpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_imad_ref.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.cpp index 943577956e5423..4f906faf61013f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "deconvolution_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.h index 041076eb6315e6..ea80f76f61543b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.cpp index b8a02480456cc8..01f29124e47ad4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "deconvolution_kernel_selector.h" #include "deconvolution_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.h index 1625246efac375..661a1438e52239 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/deconvolution/deconvolution_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.cpp index dce468dc470e55..5b7d2f308feb06 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "depth_to_space_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.h index 2fbdaf39a9d438..71cc3d6571aa23 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.cpp index befd6cfe6d1cb7..3d962a0a3c5027 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "depth_to_space_kernel_block2_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.h index a08d0b1b91c279..3e0cbba8517ebf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_block2_opt.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.cpp index 75f0759ad0b5b3..8a247a2cc4d5e1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "depth_to_space_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.h index 9f08bb3cb2c222..14f28944f19384 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.cpp index d6e4264342c9b9..f43a1ed04987ee 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "depth_to_space_kernel_selector.h" #include "depth_to_space_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.h index fd757f7c0f261f..e7f6197e991348 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/depth_to_space/depth_to_space_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.cpp index 8a369722a8b1c2..e3150b22f77dd9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "eltwise_kernel_b_fs_yx_fsv16.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.h index 47109da9e8479c..2b4159d17ecef9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_b_fs_yx_fsv16.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.cpp index a14500262af19f..ed333d47fc49b3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "eltwise_kernel_base.h" #include "kernel_selector_utils.h" @@ -443,9 +433,9 @@ JitConstants EltwiseKernelBase::MakeIndexJitConstants(const eltwise_params& para // it means that z coord is equal to 1, so z offset will be always equal to 0 jit.AddConstant(MakeJitConstant(idx_order, "d4,d3,0,d2,d1")); } else if (out_c == 6) { - if (in_c < 5) + if (in_c < 5) { jit.AddConstant(MakeJitConstant(idx_order, "d6,d5,d2,d1")); - else if (in_c == 5) { + } else if (in_c == 5) { jit.AddConstant(MakeJitConstant(idx_order, "d6,d5,d3,d2,d1")); } else { jit.AddConstant(MakeJitConstant(idx_order, "d6,d5,d4,d3,d2,d1")); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.h index 81245f46d0089e..4a340048f25d48 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.cpp index 31f93840cb9781..c38010987cbee3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "eltwise_kernel_fs_b_yx_fsv32.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.h index b48faf70def91f..57967c385a2902 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_fs_b_yx_fsv32.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.cpp index d1a74a79fb3d93..6536cd3061399e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.h index 21fe703891d3fc..6e81200b01134f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_mixed_byxf_and_fs_b_yx_fsv32.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.cpp index ef3a0a382ff533..ec7a7d693a40d8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// Licensed under the Apache License, Version 2.0 (the "License"); -// y ou 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. - #include "eltwise_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.h index 2345233ae8695d..ddf4018e02829c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.cpp index 697e6a847f109b..70031e84d04722 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "eltwise_kernel_selector.h" #include "eltwise_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.h index e0070081219068..02882fa3f08111 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.cpp index 218ab234461939..295ac25fd83f94 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "eltwise_kernel_vload8.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.h index b1fd58792a083f..c06fd51fb0e8ae 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/eltwise/eltwise_kernel_vload8.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.cpp index a609f631a663e3..4328d436d21982 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "embedding_bag_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.h index 5652445517c462..96018cb19f24b7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once @@ -54,6 +42,6 @@ class EmbeddingBagKernelRef : public KernelBaseOpenCL { virtual JitConstants GetJitConstants(const embedding_bag_params& params) const; virtual CommonDispatchData SetDefault(const embedding_bag_params& params) const; - virtual bool Validate(const Params&, const optional_params&) const override; + bool Validate(const Params&, const optional_params&) const override; }; } // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.cpp index 14f8253f81928d..a3620aaf24cc0e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "embedding_bag_kernel_selector.h" #include "embedding_bag_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.h index a5172e785356d4..b3129cf21e38ad 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/embedding_bag/embedding_bag_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.cpp index 99e1459e095479..470024159ad442 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "extract_image_patches_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.h index fb7578048ac1d0..d348c4229d0bd3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once @@ -48,11 +38,11 @@ class ExtractImagePatchesKernelBase : public KernelBaseOpenCL { virtual ~ExtractImagePatchesKernelBase() {} protected: - virtual ParamsKey GetSupportedKey() const override; virtual JitConstants GetJitConstants(const extract_image_patches_params& params) const; DispatchData SetDefault(const extract_image_patches_params& params) const; KernelsData GetCommonKernelsData(const Params& params, const optional_params&) const; + ParamsKey GetSupportedKey() const override; bool Validate(const Params& p, const optional_params&) const override; }; } // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.cpp index a9df3f03ecc4b2..d60322fe0f1a38 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "extract_image_patches_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.h index 866e598f06bcf0..8fd07e8bd90a70 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.cpp index eb3858e05c114a..74f25f9279956d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "extract_image_patches_kernel_selector.h" #include "extract_image_patches_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.h index d69ad0d70ae29c..05951599cd1a6a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/extract_image_patches/extract_image_patches_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.cpp index 889b748785e3e1..62f1f4326017a8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_block_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.h index c3ad259ceab5ac..bb1b2d5e25e446 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_block_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.cpp index bee9dbfe5d028e..bb7138c701a91e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.h index af9460e64486ad..5733fe8e489fa6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.cpp index a4f858bfc95c14..0e7b33e79ba9a7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_bf_io_gemm.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.h index d6a73edbe96eb0..bb258696fa1d99 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_gemm.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.cpp index 9929d8bf76f336..353b2528586d6f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_bf_io_input_spatial.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.h index 61f121f6b6fa02..bd99200441cdfb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_input_spatial.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.cpp index eeda3e676a8790..7c27f5ca351ecf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include #include "fully_connected_kernel_bf_io_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.h index 5800167f6f2e11..1c997f4afc14de 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_io_ref.h @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.cpp index 6913fb7fbb5179..8906a1bf38dceb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include "fully_connected_kernel_bf_tiled.h" #include @@ -173,11 +164,11 @@ bool TuneParamsSelector::VerifyTuneParams(const fully_connected_params& params, return true; } -} +} // namespace FullyConnected_bf_tiled::tune_params FullyConnected_bf_tiled::GetAutoTuneParams(const fully_connected_params& params, int idx) const { - if (idx >= 0 && idx < (int)auto_tune_params.size() + if (idx >= 0 && idx < static_cast(auto_tune_params.size()) && TuneParamsSelector::VerifyTuneParams(params, auto_tune_params[idx])) return auto_tune_params[idx]; @@ -274,7 +265,7 @@ KernelsPriority FullyConnected_bf_tiled::GetKernelsPriority(const Params& params size_t output_b = fc_params.output.Batch().v; if (fc_params.output.GetLayout() == DataLayout::bfyx) output_b *= fc_params.output.Feature().v; - + float estimated_time = DONT_USE_IF_HAVE_SOMETHING_ELSE; if (output_b > 1 && fc_params.inputs[0].GetDType() == Datatype::F32) estimated_time = FORCE_PRIORITY_3; @@ -313,8 +304,7 @@ JitConstants FullyConnected_bf_tiled::GetJitConstants(const fully_connected_para jit.AddConstant(MakeJitConstant("TILE_IN_B_PITCH", params.inputs[0].Feature().pitch)); jit.AddConstant(MakeJitConstant("TILE_OUT_B_PITCH", params.output.Feature().pitch)); jit.AddConstant(MakeJitConstant("OUTPUT_3D", true)); - } - else { + } else { jit.AddConstant(MakeJitConstant("TILE_OUT_F_NUM", params.output.Feature().v)); jit.AddConstant(MakeJitConstant("TILE_OUT_F_PITCH", params.output.Feature().pitch)); jit.AddConstant(MakeJitConstant("TILE_IN_B_PITCH", params.inputs[0].Batch().pitch)); @@ -350,7 +340,7 @@ KernelsData FullyConnected_bf_tiled::GetTunedKernelsDataByIndex(const Params &pa const int autoTuneIndex) const { auto& fc_params = static_cast(params); - if (autoTuneIndex >= 0 && autoTuneIndex < (int)auto_tune_params.size() + if (autoTuneIndex >= 0 && autoTuneIndex < static_cast(auto_tune_params.size()) && !TuneParamsSelector::VerifyTuneParams(fc_params, auto_tune_params[autoTuneIndex])) return {}; @@ -368,13 +358,12 @@ KernelsData FullyConnected_bf_tiled::GetTunedKernelsDataByIndex(const Params &pa weights_layout, tparams.exec_options, autoTuneIndex); - } KernelsData FullyConnected_bf_tiled::GetKernelsDataForAutoTune(const Params& params, const optional_params& options) const { KernelsData res = {}; for (size_t idx = 0; idx < auto_tune_params.size(); ++idx) { - KernelsData kds = GetTunedKernelsDataByIndex(params, options, (int)idx); + KernelsData kds = GetTunedKernelsDataByIndex(params, options, static_cast(idx)); if (!kds.empty()) { res.emplace_back(kds[0]); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.h index 6954fb22698a66..4e4193e2e50bf7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bf_tiled.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include "fully_connected_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.cpp index 53137c1094f2ff..d179cb52ccf7f9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include #include "fully_connected_kernel_bfyx_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.h index 09a0e384f6d54e..a8c95031370509 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bfyx_ref.h @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.cpp index 586788c071d22c..8900e08b61f5a3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_bs_f_bsv16_af8.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.h index 50f6c919a2f576..31c42c2b66b9ba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_af8.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.cpp index 4cbf3ef7155a39..fc08e2c9461ad8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "fully_connected_kernel_bs_f_bsv16_b1.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.h index 933355b9ec662d..3a9d3a4e4c3609 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv16_b1.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.cpp index da06eea76d77db..8ca26cff653e77 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_bs_f_bsv8_af8.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.h index a91c5a465530ff..dd33bd1b16a0cf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_bs_f_bsv8_af8.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.cpp index 4a2581845b4036..7fada83beedc5b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_fb_io_b8_f8.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.h index 3a0e9f1858c601..1e930eb4422b5d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_b8_f8.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.cpp index d1203d20264bd4..8f6ebd2f166328 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_fb_io_block.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.h index 79e8da47c45696..5c260428100e0c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_block.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.cpp index 40a1776db94ff9..1c23a6873e4aef 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include #include "fully_connected_kernel_fb_io_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.h index d605e2aa3c8569..6a0e8e23b52753 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_io_ref.h @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.cpp index 0ed9a3aafb9fee..8a7a1c91233445 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_fb_oi_b8_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.h index 12cf56a433913d..c312d5b9ce0cce 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_b8_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.cpp index b0ca458cf840c6..aefcf3e9f79652 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include #include "fully_connected_kernel_fb_oi_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.h index 27fc3a3801509b..cd5349db2e38ac 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fb_oi_ref.h @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.cpp index c0a8d6dadc7233..55ee1642d0db81 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "fully_connected_kernel_fs_byx_fsv32.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.h index c06c11a3f7dac4..b54f85f0a347a0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_fs_byx_fsv32.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.cpp index e1d200670298d9..94a4bbe8cf5a9b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include #include "fully_connected_kernel_imad.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.h index 49b20ec70eb3a0..0eff7edd462fd1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_imad.h @@ -1,16 +1,7 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.cpp index 4f3d3a51c89984..f3d020c015e6ef 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "fully_connected_kernel_mmad.h" #include "kernel_selector_utils.h" @@ -79,7 +69,7 @@ FullyConnectedKernelMMAD::FullyConnectedTuningData FullyConnectedKernelMMAD::Get } tuning_data.sub_group_size = 8; - if (input.X().v == 1 && input.Z().v == 1 && input.Batch().v == 1 && + if (input.X().v == 1 && input.Z().v == 1 && input.Batch().v == 1 && ((input.Y().v == 1 && output.GetLayout() != DataLayout::bfyx) || (input.Feature().v == 1 && output.GetLayout() == DataLayout::bfyx)) ) { // Known cases for TGL where simd16 works better than simd8 bool simd16_exception_1 = input.Feature().v == 25088 && output.Feature().v == 512; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.h index 054be2ba4157af..d35f4c20db6f1d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_mmad.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.cpp index e611d59d6eda32..48da72dd1503f5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fully_connected_kernel_selector.h" #include "fully_connected_kernel_bfyx_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.h index 8b04383eb0f271..342dcef733668d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.cpp index 441467d6020a4b..def88861b4ce27 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include #include "fully_connected_kernel_yxfb_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.h index d487bb447c36c4..2a4b10edf82718 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_kernel_yxfb_ref.h @@ -1,16 +1,7 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.cpp index 41bc2bfd652b1c..7b855025074c19 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.cpp @@ -1,15 +1,5 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "fully_connected_params.h" \ No newline at end of file diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.h index 0f063c6390731d..1da610d593f1a7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fully_connected/fully_connected_params.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.cpp index b2e5e5a215de8e..ee6087e5417429 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "fused_conv_eltwise_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.h index 9e691831142456..36777b7aa03024 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.cpp index c9ac7065c986bf..deb62bd6709e6f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "fused_conv_eltwise_kernel_bfyx_1x1_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.h index d3019e81aa1861..98f8e18b077e4a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_1x1_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.cpp index 69f3a560d83624..499a5dd6344c66 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fused_conv_eltwise_kernel_bfyx_iyxo.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.h index 86db611164ad8a..1c3ba3f3705bec 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_iyxo.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.cpp index b2422c0273483b..51f67aa4f69235 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.h index a4505b2c665613..fcf61b8239c6eb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_bfyx_os_iyx_osv16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.cpp index da1c3c8e16f872..95f4f280d6911a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fused_conv_eltwise_kernel_selector.h" #include "fused_conv_eltwise_kernel_bfyx_1x1_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.h index fc66a7a48ac48c..a23edd5a43610b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.cpp index d6516c9daf2315..d5225e4afcdf14 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "fused_conv_eltwise_kernel_yxfb_yxio_b16.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.h index 973e9569edc24e..1902dfa729e5de 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/fused_conv_eltwise/fused_conv_eltwise_kernel_yxfb_yxio_b16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.cpp index ff70c819a12434..da46595290925d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gather_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.h index 3175c0d03477f5..7b2b706a11420d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.cpp index c9b4676124c445..645bb5e89fa190 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gather_kernel_selector.h" #include "gather_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.h index aa21c5f6c4de56..df215cb6baa23f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather/gather_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.cpp index 2a927d1b9d0f76..a374db7ba73169 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "gather_tree_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.h index e29ba3beeaf28e..aa137496c08106 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.cpp index d95639fb550a18..e143c3efffd3bf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "gather_tree_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.h index 932fe9cb42c938..e6565d579f58b1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.cpp index adf9ae1c380456..69c69cbc48bbf4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "gather_tree_kernel_selector.h" #include "gather_tree_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.h index a250640f3a40d9..c6e4851e898ecc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gather_tree/gather_tree_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.cpp index c95bc15fbf68ac..5a78ea1ab247b0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gemm_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.h index ee0e935d4dd2dc..c6139766caa8a5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.cpp index de20213ec6a52b..e1334d4b82a35a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gemm_kernel_mmad_int8.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.h index 6859515edf3475..0d72b0b36aa2a9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.cpp index b603a98d1191af..17a4952af2c591 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gemm_kernel_mmad_int8_slm.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.h index 2dfefaf0df15e6..fb5aa27a63053f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_mmad_int8_slm.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.cpp index 1744a411a5323c..b8a1efa1e133ec 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gemm_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.h index d14b0c50465224..cbff4cc8b7d62c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.cpp index 8fda68c6e05750..95792d02429373 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gemm_kernel_selector.h" #include "gemm_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.h index b21592dd5d9e05..cfdbddaaba2d7d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.cpp index e055208e90a23f..8a2cb70b001758 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gemm_kernel_tiled_opt.h" #include @@ -128,8 +116,7 @@ JitConstants GemmKernelTiledOpt::GetJitConstants(const gemm_params& params) cons MakeJitConstant("A_VEC_SIZE", tuning_data.tile_k_size / tuning_data.simd_size), MakeJitConstant("A_FLOATN", std::string("UNIT_TYPE") + std::to_string(tuning_data.tile_k_size / tuning_data.simd_size)), }); - } - else { + } else { jit.AddConstants({ MakeJitConstant("A_VEC_SIZE", 1), MakeJitConstant("A_FLOATN", std::string("UNIT_TYPE")), @@ -141,8 +128,7 @@ JitConstants GemmKernelTiledOpt::GetJitConstants(const gemm_params& params) cons MakeJitConstant("B_VEC_SIZE", b_vec_size), MakeJitConstant("B_FLOATN", std::string("UNIT_TYPE") + std::to_string(b_vec_size)), }); - } - else { + } else { b_vec_size = 1; jit.AddConstants({ MakeJitConstant("B_VEC_SIZE", 1), diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.h index af2151e4470f03..089e928c131601 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/gemm/gemm_kernel_tiled_opt.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.cpp index 6126862c82a274..8598999df30960 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "grn_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.h index 1acc7ca0e29af7..efc2258c2ca439 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_base.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include "kernel_base_opencl.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.cpp index b2be8458ca0708..27fd94f51ccdc4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.cpp @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include "grn_kernel_ref.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.h index a370277ec6bb5c..a57dceb9171dd0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_ref.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include "grn_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.cpp index 745f205155015d..1a271837eb922f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "grn_kernel_selector.h" #include "grn_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.h index 32d57262d055b0..89d95b3440be86 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/grn/grn_kernel_selector.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include "kernel_selector.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.cpp index b91ab1a9506ec7..73dea79aa93f30 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_across_channel_multiple_features.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.h index a04e0e54b5d368..d58021055c978d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.cpp index be801bd64a2677..0d41e177310534 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_across_channel_multiple_features_fsv16.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.h index 4d79ed08158b0b..af9b11688b28d1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_multiple_features_fsv16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.cpp index 290a31c9890d5d..a624e11e82e01d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_across_channel_opt_b8.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.h index 1e4ee17c72c14e..10f2e160a34bb0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_opt_b8.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.cpp index bd72d82511b319..338e4d2e452aa1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_across_channel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.h index 8ad4f91fcc445e..7e2692df9d3081 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_across_channel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.cpp index 8d53197a36f03a..40600e6c40ca34 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.h index 535570d0c0eb99..7fef21147b9847 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.cpp index b11f58b0d26697..bfd02f0859cb9b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.h index 2fe928870cebd3..a2b0369599a2e1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.cpp index 1677c849d72ab2..b0848b5ad8a601 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_selector.h" #include "lrn_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.h index 579343127e940e..ae429a5ac96ff7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.cpp index 6c66460feef05e..0f43916899bd3f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lrn_kernel_within_channel_byxf_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.h index 73470fd69e900b..64ea8960a3d17e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_byxf_opt.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.cpp index 51320dc2b0449d..be21a36b83f968 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_within_channel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.h index 903a59b0eabccb..b7ad094794520e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.cpp index 6d77c281670793..247aa2b7811f26 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "lrn_kernel_within_channel_ref_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.h index 8ab087583638e3..efde1f62077954 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lrn/lrn_kernel_within_channel_ref_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.cpp index c208f7d71879e8..d91ff0926bb3fc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_elt_kernel_base.h" #include "kernel_selector_utils.h" @@ -55,7 +43,7 @@ JitConstants LSTMEltKernelBase::GetJitConstants(const lstm_elt_params& params) c } jit.Merge(MakeTypeJitConstants(ftype, "ACCUMULATOR")); - static const std::vector asuffixes = {"_F","_G","_H","_CLIP"}; + static const std::vector asuffixes = {"_F", "_G", "_H", "_CLIP"}; for (size_t i = 0; i < params.activations.size(); i++) { std::vector aparams = { params.activations[i] }; jit.Merge(MakeActivationJitConstants(aparams, ftype, asuffixes[i])); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.h index c4b77e41b882a9..0cbb5ec77b912a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.cpp index 7ae4260d8b70d6..b4cf13518a9f31 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_elt_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.h index eec47fb59620c6..5dcf71b6012e51 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.cpp index 7cde97160d717e..5c00d655ed8d5d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_elt_kernel_selector.h" #include "lstm_elt_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.h index fdb89113ad06ab..dec486de9e32de 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_elt_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.cpp index 32cb791a8eb3a4..b7b4d4b0113be3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_gemm_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.h index 8713fffe3a739a..f78fd6da5d8464 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.cpp index f4d07064816df7..f99a6073a92719 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_gemm_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.h index e8528032a78ea7..872ea9ca9229da 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.cpp index 2e6313a081069f..41b6adcc1fdb22 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_gemm_kernel_selector.h" #include "lstm_gemm_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.h index c48bb719061830..f767415da88048 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemm_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.cpp index 814cc7e552aaf5..b5c2d1a482a787 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.h index 7417ccfb56532f..0d9be17cff7c16 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_ff_simd16.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.cpp index 9ce30f3ab3859c..437fc621fbc320 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.h index 9e48cccfe89c68..68aa4291d33969 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm/lstm_gemv_gpu_subgroup1x64_bfyx_hh_simd16.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.cpp index 6cd5277d8a188e..16271d23130e47 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_dynamic/lstm_dynamic_input_bfyx_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.h index 7baafe89b43b87..342b1b52dc92e4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_bfyx_opt.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.cpp index 8fd8deb8a32eab..8066bf61831f32 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_dynamic_input_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.h index 62ed8f4f431b56..1625100094256e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once #include "weight_bias_params.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.cpp index b8cf2b27d54c02..d85d341b174cee 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_dynamic_input_kernel_selector.h" #include "lstm_dynamic_input_ref_kernel.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.h index b908bcf268f3d7..ecdea53a3843e1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.cpp index 7471a1557ebc10..afbe7837f8bcf4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_dynamic/lstm_dynamic_input_ref_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.h index 312383418ebef4..a5e1f3c0138dfa 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_input_ref_kernel.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.cpp index 8fb1dc6290eab2..a39c724c92751f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_dynamic_timeloop_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.h index 29e20239a63d18..6df045a10bde1f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.cpp index 999d2d65b245ca..4e16eff27f84c3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_dynamic_timeloop_kernel_selector.h" #include "lstm_dynamic_timeloop_ref_kernel.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.h index a0e206264c13cd..a0a0812a2ad34a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.cpp index 02bee9cdd46a88..5880015410d743 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.h index 584b64e919475c..4bd45dcb28e43d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/lstm_dynamic/lstm_dynamic_timeloop_ref_kernel.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.cpp index 5d627d4a69168e..b34c674a75500c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "max_unpooling_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.h index 0724e92859748b..64e638fb07c691 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.cpp index a5e2f7f8cbdb46..e3c8c397ff3b04 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "max_unpooling_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.h index 1dbfa38cf1789b..a601fc2dba637f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_gpu_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.cpp index 99f05773c75063..08c8ceb6a77ecc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "max_unpooling_kernel_selector.h" #include "max_unpooling_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.h index f785ff0dbdecfb..842759cd07cf6e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/max_unpooling/max_unpooling_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.cpp index 654f3c6900d912..670f831594d51c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "mvn_kernel_b_fs_yx_fsv16_imad.hpp" #include "common/common_tools.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.hpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.hpp index d6f0f5441c98a1..623da1b642d1f1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.hpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_b_fs_yx_fsv16_imad.hpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.cpp index e487043ccd8c91..d19b95ff980780 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "mvn_kernel_base.h" #include "kernel_selector_utils.h" @@ -37,6 +26,7 @@ JitConstants MVNKernelBase::GetJitConstants(const mvn_params& params, MVNKernelB MakeJitConstant("EPSILON", params.epsilon), MakeJitConstant(toString(params.mvnMode), ""), MakeJitConstant("NORMALIZE_VARIANCE", params.mvnNormalizeVariance), + MakeJitConstant("EPS_" + toString(params.mvnEpsMode), ""), }); return jit; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.h index 4aa4b1c1091274..de20a0ad54f5a6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once @@ -27,8 +16,9 @@ struct mvn_params : public base_params { mvn_params() : base_params(KernelType::MVN) {} MVNMode mvnMode = MVNMode::WITHIN_CHANNELS; - bool mvnNormalizeVariance = true; - float epsilon = 1e-10f; + bool mvnNormalizeVariance = false; + float epsilon = 0.0f; + MVNEpsMode mvnEpsMode = MVNEpsMode::INSIDE_SQRT; virtual ParamsKey GetParamsKey() const { ParamsKey k = base_params::GetParamsKey(); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.cpp index 64507193b75175..076430e90d18d2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "mvn_kernel_bfyx_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.h index a22410a05b7906..80376566f99178 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_bfyx_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.cpp index ebdc121a0e779a..539454dd189ba0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "mvn_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.h index 5336749e4c6bc4..37b9a4f66e40a4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.cpp index 7e5942f005456e..5f40288352e93c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "mvn_kernel_selector.h" #include "mvn_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.h index 52dbcd0f61cc28..163749db2f6874 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/mvn/mvn_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.cpp index df98001844607e..8ecf060a9ff32a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "normalize_kernel_across_spatial_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.h index 4aef0a2f6adbb5..eb261ba35432bf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_across_spatial_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.cpp index 0730e799785825..2e36b028e28b15 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "normalize_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.h index 4aff4f90559622..5774e03f4cf823 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.cpp index b946e67346d246..3ee73cff06bc43 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "normalize_kernel_selector.h" #include "normalize_kernel_within_spatial_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.h index 469fd97f420e23..069029c78ceee1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.cpp index 9725a8c5a84150..152a7969986415 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "normalize_kernel_within_spatial_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.h index 406f6a866edfc0..f75052ec243c88 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/normalize/normalize_kernel_within_spatial_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.cpp index e2e038598cbd6f..cfe546a8406734 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "one_hot_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.h index a8d9ba4a6da333..62448dc8e8cd6e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.cpp index 26f23afbf2ba02..97063b6c61da7e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "one_hot_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.h index d4113d8acd4d0b..d25a19f2edadc6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.cpp index f9d3dfa77fd78c..312ecf3b5a093b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "one_hot_kernel_selector.h" #include "one_hot_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.h index 6ccb443d306243..493ea5fc1bb17a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/one_hot/one_hot_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_base.cpp new file mode 100644 index 00000000000000..7c2ad325ded808 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_base.cpp @@ -0,0 +1,46 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "permute_kernel_base.h" +#include "kernel_selector_utils.h" + +namespace kernel_selector { + +bool PermuteKernelBase::Validate(const Params& p, const optional_params& o) const { + if (p.GetType() != KernelType::PERMUTE || o.GetType() != KernelType::PERMUTE) { + return false; + } + const permute_params& params = static_cast(p); + for (auto& fused_op : params.fused_ops) { + if (!IsFusedPrimitiveSupported(fused_op)) { + return false; + } + } + return true; +} + +JitConstants PermuteKernelBase::GetJitConstants(const permute_params& params, const CommonDispatchData&) const { + JitConstants jit = MakeBaseParamsJitConstants(params); + return jit; +} + +KernelsData PermuteKernelBase::GetKernelsData(const Params& params, const optional_params& options) const { + if (!Validate(params, options)) { + return {}; + } + + KernelData kd = KernelData::Default(params); + permute_params& newParams = *static_cast(kd.params.get()); + + auto dispatchData = SetDefault(newParams); + auto cldnn_jit = GetJitConstants(newParams, dispatchData); + + auto entry_point = GetEntryPoint(kernelName, newParams.layerID, options); + std::string jit = CreateJit(kernelName, cldnn_jit, entry_point); + auto& kernel = kd.kernels[0]; + FillCLKernelData(kernel, dispatchData, params.engineInfo, kernelName, jit, entry_point, "", false, false, 1, GetFusedPrimitiveInputsCount(params)); + + return {kd}; +} +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_base.h new file mode 100644 index 00000000000000..cd2a2705ce503c --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_base.h @@ -0,0 +1,23 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "kernel_base_opencl.h" +#include "permute_params.h" +#include + +namespace kernel_selector { +class PermuteKernelBase : public KernelBaseOpenCL { +public: + using KernelBaseOpenCL::KernelBaseOpenCL; + virtual ~PermuteKernelBase() {} + + bool Validate(const Params& p, const optional_params& o) const override; + KernelsData GetKernelsData(const Params& params, const optional_params& options) const; +protected: + virtual JitConstants GetJitConstants(const permute_params& params, const CommonDispatchData& dispatchData) const; + virtual CommonDispatchData SetDefault(const permute_params& params) const = 0; +}; +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.cpp index 63768330c09130..7a627453c9e33f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "permute_kernel_ref.h" #include "kernel_selector_utils.h" @@ -41,9 +30,30 @@ ParamsKey PermuteKernelRef::GetSupportedKey() const { return k; } -JitConstants PermuteKernelRef::GetJitConstants(const permute_params& params) const { - JitConstants jit = MakeBaseParamsJitConstants(params); +CommonDispatchData PermuteKernelRef::SetDefault(const permute_params& params) const { + CommonDispatchData dispatchData; + const auto& in = params.inputs[0]; + + dispatchData.gws = {in.X().v, in.Y().v * in.Z().v * in.W().v, in.Feature().v * in.Batch().v}; + dispatchData.lws = GetOptimalLocalWorkGroupSizes(dispatchData.gws, params.engineInfo); + + return dispatchData; +} +bool PermuteKernelRef::Validate(const Params& p, const optional_params& o) const { + if (!Parent::Validate(p, o)) return false; + + const permute_params& params = static_cast(p); + + // currently reorder fusing is supported only for format change, not the layout change + if (DataTensor::ChannelsCount(params.inputs[0].GetLayout()) + != DataTensor::ChannelsCount(params.output.GetLayout())) { + return false; + } + return true; +} +JitConstants PermuteKernelRef::GetJitConstants(const permute_params& params, const CommonDispatchData& dispatchData) const { + auto jit = Parent::GetJitConstants(params, dispatchData); std::vector in_idx; std::vector out_idx; switch (DataTensor::ChannelsCount(params.inputs[0].GetLayout())) { @@ -69,11 +79,11 @@ JitConstants PermuteKernelRef::GetJitConstants(const permute_params& params) con jit.AddConstant(MakeJitConstant("OUT_IDX", "OUTPUT_GET_INDEX(" + output_order + ")")); if (!params.fused_ops.empty()) { - if (out_idx.size() == 4) + if (out_idx.size() == 4) { std::swap(out_idx[2], out_idx[3]); - else if (out_idx.size() == 5) + } else if (out_idx.size() == 5) { std::swap(out_idx[2], out_idx[4]); - else if (out_idx.size() == 6) { + } else if (out_idx.size() == 6) { std::swap(out_idx[2], out_idx[5]); std::swap(out_idx[3], out_idx[4]); } @@ -81,31 +91,9 @@ JitConstants PermuteKernelRef::GetJitConstants(const permute_params& params) con FusedOpsConfiguration conf = {"", out_idx, "input_var", params.inputs[0].GetDType(), 1}; jit.Merge(MakeFusedOpsJitConstants(params, {conf})); } - return jit; } -KernelsData PermuteKernelRef::GetKernelsData(const Params& params, const optional_params& options) const { - assert(params.GetType() == KernelType::PERMUTE); - - KernelData kd = KernelData::Default(params); - permute_params& newParams = *static_cast(kd.params.get()); - - auto entry_point = GetEntryPoint(kernelName, newParams.layerID, options); - auto cldnn_jit = GetJitConstants(newParams); - std::string jit = CreateJit(kernelName, cldnn_jit, entry_point); - - const auto& in = newParams.inputs[0]; - auto& kernel = kd.kernels[0]; - - kernel.workGroups.global = {in.X().v, in.Y().v * in.Z().v * in.W().v, in.Feature().v * in.Batch().v}; - kernel.workGroups.local = GetOptimalLocalWorkGroupSizes(kernel.workGroups.global, params.engineInfo); - kernel.kernelString = GetKernelString(kernelName, jit, entry_point, params.engineInfo, DEFAULT); - kernel.arguments = GetArgsDesc(1, false, false, GetFusedPrimitiveInputsCount(params)); - - return {kd}; -} - KernelsPriority PermuteKernelRef::GetKernelsPriority(const Params& /*params*/, const optional_params& /*options*/) const { return DONT_USE_IF_HAVE_SOMETHING_ELSE; } diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.h index af6ca9f9a7e85e..097174a8da12fa 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_ref.h @@ -1,53 +1,37 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once -#include "kernel_base_opencl.h" -#include +#include "permute_kernel_base.h" namespace kernel_selector { -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// permute_params -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -struct permute_params : public base_params { - permute_params() : base_params(KernelType::PERMUTE) {} - - std::vector order; - - virtual ParamsKey GetParamsKey() const { return base_params::GetParamsKey(); } -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// permute_optional_params -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -struct permute_optional_params : optional_params { - permute_optional_params() : optional_params(KernelType::PERMUTE) {} -}; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PermuteKernelRef //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -class PermuteKernelRef : public KernelBaseOpenCL { +class PermuteKernelRef : public PermuteKernelBase { public: - PermuteKernelRef() : KernelBaseOpenCL("permute_ref") {} + using Parent = PermuteKernelBase; + using Parent::Parent; + PermuteKernelRef() : PermuteKernelBase("permute_ref") {} virtual ~PermuteKernelRef() {} - JitConstants GetJitConstants(const permute_params& params) const; - KernelsData GetKernelsData(const Params& params, const optional_params& options) const override; - KernelsPriority GetKernelsPriority(const Params& params, const optional_params& options) const override; + bool Validate(const Params& p, const optional_params& o) const override; + KernelsPriority GetKernelsPriority(const Params& params, const optional_params& options) const; ParamsKey GetSupportedKey() const override; + +protected: + JitConstants GetJitConstants(const permute_params& params, const CommonDispatchData& dispatchData) const override; + CommonDispatchData SetDefault(const permute_params& params) const override; + std::vector GetSupportedFusedOps() const override { + return { + FusedOpType::ACTIVATION, + FusedOpType::QUANTIZE, + FusedOpType::ELTWISE, + FusedOpType::SCALE + }; + } }; } // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.cpp index 7aeaedf7d14ef2..5bd137433eee22 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.cpp @@ -1,26 +1,21 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "permute_kernel_selector.h" #include "permute_kernel_ref.h" +#include "permute_kernel_tile_8x8_4x4.h" +#include "permute_kernel_tile_8x8_4x4_fsv.h" namespace kernel_selector { -permute_kernel_selector::permute_kernel_selector() { Attach(); } +permute_kernel_selector::permute_kernel_selector() { + Attach(); + Attach(); + Attach(); +} KernelsData permute_kernel_selector::GetBestKernels(const Params& params, const optional_params& options) const { return GetNaiveBestKernel(params, options, KernelType::PERMUTE); } -} // namespace kernel_selector \ No newline at end of file +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.h index 63a7487d32805e..3d8b8b210b0200 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4.cpp new file mode 100644 index 00000000000000..8e9dbbf8ecb517 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4.cpp @@ -0,0 +1,262 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "permute_kernel_tile_8x8_4x4.h" +#include "kernel_selector_utils.h" +#include "common_tools.h" +#include +#include +#include + +// Tile size : 4x4 or 8x8 +#define MIN_TILE_SIZE 4 +#define DEFAULT_TILE_SIZE 8 + +namespace kernel_selector { + +ParamsKey PermuteKernel_tile_8x8_4x4::GetSupportedKey() const { + ParamsKey k; + k.EnableInputDataType(Datatype::F16); + k.EnableInputDataType(Datatype::F32); + k.EnableInputDataType(Datatype::INT8); + k.EnableInputDataType(Datatype::UINT8); + k.EnableInputDataType(Datatype::INT32); + k.EnableInputDataType(Datatype::INT64); + k.EnableOutputDataType(Datatype::F16); + k.EnableOutputDataType(Datatype::F32); + k.EnableOutputDataType(Datatype::INT8); + k.EnableOutputDataType(Datatype::UINT8); + k.EnableOutputDataType(Datatype::INT32); + k.EnableOutputDataType(Datatype::INT64); + k.EnableDifferentTypes(); + k.EnableInputLayout(DataLayout::bfyx); + k.EnableOutputLayout(DataLayout::bfyx); + k.EnableInputLayout(DataLayout::bfzyx); + k.EnableOutputLayout(DataLayout::bfzyx); + k.EnableInputLayout(DataLayout::bfwzyx); + k.EnableOutputLayout(DataLayout::bfwzyx); + k.EnableTensorOffset(); + k.EnableTensorPitches(); + k.EnableBatching(); + return k; +} + +static inline size_t GetTileSize(const permute_params& params) { + // supports 4x4 or 8x8 tiling + if (params.inputs[0].X().v < DEFAULT_TILE_SIZE || params.inputs[0].Feature().v < DEFAULT_TILE_SIZE) + return MIN_TILE_SIZE; + + if ((params.inputs[0].GetDType() == Datatype::INT64) || (params.output.GetDType() == Datatype::INT64)) + return MIN_TILE_SIZE; + + return DEFAULT_TILE_SIZE; +} + +static inline std::vector GetFusedOpOrderVector(size_t size) { + std::vector res; + switch (size) { + case 4 : + res = {"b", "y", "(x * TILE_SIZE + i)", "(f * TILE_SIZE + lh)"}; + break; + case 5 : + res = {"b", "z", "y", "(x * TILE_SIZE + i)", "(f * TILE_SIZE + lh)"}; + break; + case 6 : + res = {"b", "w", "z", "y", "(x * TILE_SIZE + i)", "(f * TILE_SIZE + lh)"}; + break; + default : throw std::runtime_error("Unsupported combination\n"); + } + return res; +} + +static inline std::string GetTiledOutputOrder(size_t size) { + std::string order_str = ""; + switch (size) { + case 4 : + order_str = "b, y, (x * TILE_SIZE + lh), (f * TILE_SIZE)"; + break; + case 5 : + order_str = "b, z, y, (x * TILE_SIZE + lh), (f * TILE_SIZE)"; + break; + case 6 : + order_str = "b, w, z, y, (x * TILE_SIZE + lh), (f * TILE_SIZE)"; + break; + default : throw std::runtime_error("Unsupported combination\n"); + } + return order_str; +} + +static inline std::string GetTiledInputOrder(size_t size) { + std::string order_str = ""; + switch (size) { + case 4 : + order_str = "b, (f * TILE_SIZE + lh), y, (x * TILE_SIZE)"; + break; + case 5 : + order_str = "b, (f * TILE_SIZE + lh), z, y, (x * TILE_SIZE)"; + break; + case 6 : + order_str = "b, (f * TILE_SIZE + lh), w, z, y, (x * TILE_SIZE)"; + break; + default : throw std::runtime_error("Unsupported combination\n"); + } + return order_str; +} + + +JitConstants PermuteKernel_tile_8x8_4x4::GetJitConstants(const permute_params& params, const CommonDispatchData& dispatchData) const { + auto jit = Parent::GetJitConstants(params, dispatchData); + size_t tile_size = GetTileSize(params); + size_t vector_width = tile_size; + // Note: this is default mode and different vector width is not being used now. + uint64_t total_lws = dispatchData.lws[0] * dispatchData.lws[1] * dispatchData.lws[2]; + jit.AddConstant(MakeJitConstant("VEC_WIDTH", vector_width)); + jit.AddConstant(MakeJitConstant("INPUT0_TILED_ORDER", GetTiledInputOrder(params.inputs[0].GetDims().size()))); + jit.AddConstant(MakeJitConstant("OUTPUT_TILED_ORDER", GetTiledOutputOrder(params.output.GetDims().size()))); + jit.AddConstant(MakeJitConstant("TILE_SIZE", tile_size)); + jit.AddConstant(MakeJitConstant("N_VECTORS_IN_TILE", tile_size / vector_width)); + jit.AddConstant(MakeJitConstant("LWS", total_lws)); + jit.AddConstant(MakeJitConstant("NFEATURE_TILES", CeilDiv(params.inputs[0].Feature().v, tile_size))); + + std::string normal_tile_cond = "true"; + std::string x_remainder_cond = "true"; + std::string f_remainder_cond = "true"; + + if (params.inputs[0].X().v % tile_size) { + jit.AddConstant(MakeJitConstant("X_REMAINDER_ITEM", params.inputs[0].X().v / tile_size)); + jit.AddConstant(MakeJitConstant("X_REMAINDER_SIZE", params.inputs[0].X().v % tile_size)); + jit.AddConstant(MakeJitConstant("X_REMAINDER_SIZE_AS_VECTOR", CeilDiv(params.inputs[0].X().v % tile_size, vector_width))); + normal_tile_cond += " && (x < X_REMAINDER_ITEM)"; + x_remainder_cond += " && (x == X_REMAINDER_ITEM)"; + f_remainder_cond += " && (x < X_REMAINDER_ITEM)"; + } + if (params.inputs[0].Feature().v % tile_size) { + jit.AddConstant(MakeJitConstant("F_REMAINDER_ITEM", params.inputs[0].Feature().v / tile_size)); + jit.AddConstant(MakeJitConstant("F_REMAINDER_SIZE", params.inputs[0].Feature().v % tile_size)); + jit.AddConstant(MakeJitConstant("F_REMAINDER_SIZE_AS_VECTOR", CeilDiv(params.inputs[0].Feature().v % tile_size, vector_width))); + normal_tile_cond += " && (f < F_REMAINDER_ITEM)"; + x_remainder_cond += " && (f < F_REMAINDER_ITEM)"; + f_remainder_cond += " && (f == F_REMAINDER_ITEM)"; + } + + jit.AddConstant(MakeJitConstant("NORMAL_TILE_CONDITION", normal_tile_cond)); + jit.AddConstant(MakeJitConstant("X_REMAINDER_CONDITION", x_remainder_cond)); + jit.AddConstant(MakeJitConstant("F_REMAINDER_CONDITION", f_remainder_cond)); + jit.AddConstant(MakeJitConstant("INPUTVTYPE", "CAT(INPUT0_TYPE, VEC_WIDTH)")); + jit.AddConstant(MakeJitConstant("OUTPUTVTYPE", "CAT(OUTPUT_TYPE, VEC_WIDTH)")); + jit.AddConstant(MakeJitConstant("VLOAD", "CAT(vload, VEC_WIDTH)")); + jit.AddConstant(MakeJitConstant("VSTORE", "CAT(vstore, VEC_WIDTH)")); + jit.AddConstant(MakeJitConstant("AS_INPUTVTYPE", "CAT(as_, INPUTVTYPE)")); + jit.AddConstant(MakeJitConstant("AS_OUTPUTVTYPE", "CAT(as_, OUTPUTVTYPE)")); + jit.AddConstant(MakeJitConstant("LOCAL_BUF_STRIDE", (tile_size / vector_width) * tile_size)); + jit.AddConstant(MakeJitConstant("TRANS_BUF_SIZE", (tile_size / vector_width) * tile_size * total_lws) ); + + if (!params.fused_ops.empty()) { + std::vector output_order = GetFusedOpOrderVector(params.output.GetDims().size()); + FusedOpsConfiguration conf = {"", output_order, "input_var", params.inputs[0].GetDType(), 1}; + jit.Merge(MakeFusedOpsJitConstants(params, {conf})); + } + return jit; +} + +static std::vector GetBestLwsFromGws(const permute_params& params, const std::vector& gws, const size_t tile_size) { + std::vector lws{1, 1, 1}; + std::vector dims{0, 2, 1}; + + // SLM size: elemsize * tile_size * tile_size * work_items <= 64K + size_t elem_size = params.output.ElementSize(); + size_t max_local_mem_size = params.engineInfo.maxLocalMemSize; + size_t max_num_work_items = std::min((size_t)256, (size_t)max_local_mem_size / (elem_size * tile_size * tile_size)); + + for (size_t i = 0; i < dims.size(); ++i) { + size_t dim = dims[i]; + size_t max_divider = static_cast(std::sqrt(gws[dim]) + 1); + for (size_t divider = 1; divider <= max_divider; ++divider) { + if (gws[dim] % divider == 0) { + const size_t lws0 = gws[dim] / divider; + if (lws0 <= max_num_work_items) { + lws[dim] = std::max(lws[dim], lws0); + } + if (divider <= max_num_work_items) { + lws[dim] = std::max(lws[dim], divider); + } + } + } + max_num_work_items /= lws[dim]; + } + return lws; +} + +CommonDispatchData PermuteKernel_tile_8x8_4x4::SetDefault(const permute_params& params) const { + CommonDispatchData dispatchData; + const auto& in = params.inputs[0]; + size_t tile_size = GetTileSize(params); + switch (in.GetLayout()) { + case DataLayout::bfyx: + dispatchData.gws = {CeilDiv(in.X().v , tile_size), in.Y().v, CeilDiv(in.Feature().v, tile_size) * in.Batch().v}; + break; + case DataLayout::bfzyx: + dispatchData.gws = {CeilDiv(in.X().v , tile_size), in.Y().v * in.Z().v, CeilDiv(in.Feature().v, tile_size) * in.Batch().v}; + break; + case DataLayout::bfwzyx: + dispatchData.gws = {CeilDiv(in.X().v , tile_size), in.Y().v * in.Z().v * in.W().v, CeilDiv(in.Feature().v, tile_size) * in.Batch().v}; + break; + default: + throw std::runtime_error("Unsupported combination\n"); + break; + } + dispatchData.lws = GetBestLwsFromGws(params, dispatchData.gws, tile_size); + return dispatchData; +} + +bool PermuteKernel_tile_8x8_4x4::Validate(const Params& p, const optional_params& o) const { + if (!Parent::Validate(p, o)) return false; + + std::function&)> is_rotating_except_batch = [](const std::vector& order) { + // Target transform: Rotate feature dim to back to be taken as inner-most axis + // ex) 0(b), 4(f), 1(z), 2(y), 3(x) + // ex) 0(b), 3(f), 1(y), 2(x) + if ((int32_t) order[1] != order.size() - 1) return false; + if ((int32_t) order[0] != 0) return false; + for (int32_t i = 2; i < (int32_t) order.size(); ++i) { + if ((int32_t)order[i] != (i - 1)) return false; + } + return true; + }; + + const permute_params& params = static_cast(p); + + if (params.inputs[0].GetDims().size() != params.output.GetDims().size()) { + return false; + } + + if (params.inputs[0].GetLayout() != params.output.GetLayout()) { + // Reorder cannot be fused + return false; + } + + if (!is_rotating_except_batch(params.order)) { + return false; + } + + if (params.output.PitchesDifferFromLogicalDims() || params.inputs[0].PitchesDifferFromLogicalDims()) { + return false; + } + + return true; +} + +KernelsPriority PermuteKernel_tile_8x8_4x4::GetKernelsPriority(const Params& params/*params*/, const optional_params& /*options*/) const { + KernelData kd = KernelData::Default(params); + permute_params& newParams = *static_cast(kd.params.get()); + + if ((newParams.inputs[0].Feature().v >= DEFAULT_TILE_SIZE) && (newParams.inputs[0].X().v >= DEFAULT_TILE_SIZE)) { + return FORCE_PRIORITY_1; + } else if ((newParams.inputs[0].Feature().v >= DEFAULT_TILE_SIZE) || (newParams.inputs[0].X().v >= DEFAULT_TILE_SIZE)) { + return FORCE_PRIORITY_2; + } else { + return FORCE_PRIORITY_3; + } +} +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4.h new file mode 100644 index 00000000000000..201c042b606425 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4.h @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "permute_kernel_base.h" + +namespace kernel_selector { +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// PermuteKernel_tile_8x8_4x4 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +class PermuteKernel_tile_8x8_4x4 : public PermuteKernelBase { +public: + using Parent = PermuteKernelBase; + using Parent::Parent; + PermuteKernel_tile_8x8_4x4() : PermuteKernelBase("permute_tile_8x8_4x4") {} + virtual ~PermuteKernel_tile_8x8_4x4() {} + + bool Validate(const Params& p, const optional_params& o) const override; + KernelsPriority GetKernelsPriority(const Params& params, const optional_params& options) const; + ParamsKey GetSupportedKey() const override; +protected: + JitConstants GetJitConstants(const permute_params& params, const CommonDispatchData& dispatchData) const; + CommonDispatchData SetDefault(const permute_params& params) const; + std::vector GetSupportedFusedOps() const override { + return { + FusedOpType::ACTIVATION, + FusedOpType::QUANTIZE, + FusedOpType::ELTWISE, + FusedOpType::SCALE + }; + } +}; +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4_fsv.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4_fsv.cpp new file mode 100644 index 00000000000000..12417d69699733 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4_fsv.cpp @@ -0,0 +1,305 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "permute_kernel_tile_8x8_4x4_fsv.h" +#include "kernel_selector_utils.h" +#include "common_tools.h" +#include +#include +#include + +// Tile size : 4x4 or 8x8 +#define MIN_TILE_SIZE 4 +#define DEFAULT_TILE_SIZE 8 + +namespace kernel_selector { + +ParamsKey PermuteKernel_tile_8x8_4x4_fsv::GetSupportedKey() const { + ParamsKey k; + k.EnableInputDataType(Datatype::F16); + k.EnableInputDataType(Datatype::F32); + k.EnableInputDataType(Datatype::INT8); + k.EnableInputDataType(Datatype::UINT8); + k.EnableInputDataType(Datatype::INT32); + k.EnableInputDataType(Datatype::INT64); + k.EnableOutputDataType(Datatype::F16); + k.EnableOutputDataType(Datatype::F32); + k.EnableOutputDataType(Datatype::INT8); + k.EnableOutputDataType(Datatype::UINT8); + k.EnableOutputDataType(Datatype::INT32); + k.EnableOutputDataType(Datatype::INT64); + k.EnableDifferentTypes(); + k.EnableInputLayout(DataLayout::b_fs_yx_fsv16); + k.EnableOutputLayout(DataLayout::b_fs_yx_fsv16); + k.EnableInputLayout(DataLayout::b_fs_zyx_fsv16); + k.EnableOutputLayout(DataLayout::b_fs_zyx_fsv16); + k.EnableInputLayout(DataLayout::b_fs_yx_fsv32); + k.EnableOutputLayout(DataLayout::b_fs_yx_fsv32); + k.EnableInputLayout(DataLayout::b_fs_zyx_fsv32); + k.EnableOutputLayout(DataLayout::b_fs_zyx_fsv32); + k.EnableInputLayout(DataLayout::b_fs_yx_fsv4); + k.EnableOutputLayout(DataLayout::b_fs_yx_fsv4); + k.EnableTensorOffset(); + k.EnableTensorPitches(); + k.EnableBatching(); + return k; +} + +static inline std::vector GetFusedOpOrderVector(size_t size) { + std::vector ret; + switch (size) { + case 4: + ret = {"b", "y + lh", "x", "f + lw"}; + break; + case 5: + ret = {"b", "z + lh", "y", "x", "f + lw"}; + break; + default : throw std::runtime_error("Unsupported combination\n"); + } + return ret; +} + +static inline std::string GetTiledOutputOrder(size_t size) { + std::string order_str = ""; + switch (size) { + case 4 : + order_str = "b, y, x, f + lw"; + break; + case 5 : + order_str = "b, z, y, x, f + lw"; + break; + default : throw std::runtime_error("Unsupported combination\n"); + } + return order_str; +} + +static inline std::string GetTiledInputOrder(size_t size) { + std::string order_str = ""; + switch (size) { + case 4 : + order_str = "b, f, y + lh, x"; + break; + case 5 : + order_str = "b, f, z + lh, y, x"; + break; + default : throw std::runtime_error("Unsupported combination\n"); + } + return order_str; +} + +static inline size_t GetFsvAlignment(const permute_params& params) { + const auto& in = params.inputs[0]; + int fsv_alignment = -1; + switch (in.GetLayout()) { + case DataLayout::b_fs_yx_fsv16: + case DataLayout::b_fs_zyx_fsv16: + fsv_alignment = 16; + break; + case DataLayout::b_fs_yx_fsv32: + case DataLayout::b_fs_zyx_fsv32: + fsv_alignment = 32; + break; + case DataLayout::b_fs_yx_fsv4: + fsv_alignment = 4; + break; + default: + throw std::runtime_error("Unsupported combination\n"); + } + return fsv_alignment; +} + +static inline size_t GetTileSize(const permute_params& params) { + const Datatype input_type = params.inputs[0].GetDType(); + const Datatype output_type = params.output.GetDType(); + + // i64 only supports tile size 4 + if ((input_type == Datatype::INT64) || (output_type == Datatype::INT64)) { + return MIN_TILE_SIZE; + } + + // supports 4x4 or 8x8 tiling + size_t rotating_dim = 0; + if (params.inputs[0].GetDims().size() == 4) { + rotating_dim = params.inputs[0].Y().v; + } else if (params.inputs[0].GetDims().size() == 5) { + rotating_dim = params.inputs[0].Z().v; + } + + if (rotating_dim < DEFAULT_TILE_SIZE || params.inputs[0].Feature().v < DEFAULT_TILE_SIZE) { + return MIN_TILE_SIZE; + } + + return DEFAULT_TILE_SIZE; +} + +JitConstants PermuteKernel_tile_8x8_4x4_fsv::GetJitConstants(const permute_params& params, const CommonDispatchData& dispatchData) const { + auto jit = Parent::GetJitConstants(params, dispatchData); + const size_t f = params.inputs[0].Feature().v; + const size_t z = params.inputs[0].Z().v; + const size_t y = params.inputs[0].Y().v; + const size_t tile_size = GetTileSize(params); + const uint64_t total_lws = dispatchData.lws[0] * dispatchData.lws[1] * dispatchData.lws[2]; + const size_t input_ndims = params.inputs[0].GetDims().size(); + const size_t output_ndims = params.output.GetDims().size(); + const size_t fsv_alignment = GetFsvAlignment(params); + + jit.AddConstant(MakeJitConstant("INPUT0_TILED_ORDER", GetTiledInputOrder(input_ndims))); + jit.AddConstant(MakeJitConstant("OUTPUT_TILED_ORDER", GetTiledOutputOrder(output_ndims))); + jit.AddConstant(MakeJitConstant("INPUT0_FEATURE_SLICE_NUM", CeilDiv(f, fsv_alignment))); + jit.AddConstant(MakeJitConstant("TILE_SIZE", tile_size)); + jit.AddConstant(MakeJitConstant("FSV_ALIGNMENT", fsv_alignment)); + jit.AddConstant(MakeJitConstant("TRANS_BUF_SIZE", tile_size * total_lws)); + + // whether F is tile_size-aligned + if (f % tile_size != 0) { + jit.AddConstant(MakeJitConstant("F_REMAINDER_SIZE", f % tile_size)); + jit.AddConstant(MakeJitConstant("F_REMAINDER_CONDITION", "((INPUT0_FEATURE_NUM - F_REMAINDER_SIZE) <= f) && (f < INPUT0_FEATURE_NUM)")); + jit.AddConstant(MakeJitConstant("F_NO_REMAINDER_CONDITION", "(f < (INPUT0_FEATURE_NUM - F_REMAINDER_SIZE))")); + } else { + jit.AddConstant(MakeJitConstant("F_NO_REMAINDER_CONDITION", "(f < INPUT0_FEATURE_NUM)")); + } + + // whether y (or z if b_fs_zyx_fsv16) is tile_size-aligned + if ((input_ndims == 4) && (y % tile_size != 0)) { + jit.AddConstant(MakeJitConstant("YZ_REMAINDER_SIZE", y % tile_size)); + jit.AddConstant(MakeJitConstant("YZ_NO_REMAINDER_CONDITION", "y < (INPUT0_SIZE_Y - YZ_REMAINDER_SIZE)")); + jit.AddConstant(MakeJitConstant("YZ_REMAINDER_CONDITION", "((INPUT0_SIZE_Y - YZ_REMAINDER_SIZE) <= y) && (y < INPUT0_SIZE_Y)")); + } else if ((input_ndims == 5) && (z % tile_size != 0)) { + jit.AddConstant(MakeJitConstant("YZ_REMAINDER_SIZE", z % tile_size)); + jit.AddConstant(MakeJitConstant("YZ_NO_REMAINDER_CONDITION", "z < (INPUT0_SIZE_Z - YZ_REMAINDER_SIZE)")); + jit.AddConstant(MakeJitConstant("YZ_REMAINDER_CONDITION", "((INPUT0_SIZE_Z - YZ_REMAINDER_SIZE) <= z) && (z < INPUT0_SIZE_Z)")); + } + + if (!params.fused_ops.empty()) { + std::vector output_order = GetFusedOpOrderVector(output_ndims); + FusedOpsConfiguration conf = {"", output_order, "input_var", params.inputs[0].GetDType(), 1}; + jit.Merge(MakeFusedOpsJitConstants(params, {conf})); + } + return jit; +} + +static std::vector GetBestLwsFromGws(const permute_params& params, const std::vector& gws, const size_t tile_width, const size_t tile_size) { + std::vector lws{1, 1, 1}; + std::vector dims{0, 1, 2}; + + // SLM size: elemsize * tile_width * tile_width * work_items <= 64K + const size_t elem_size = params.output.ElementSize(); + const size_t max_local_mem_size = params.engineInfo.maxLocalMemSize; + const size_t max_work_group_size = params.engineInfo.maxWorkGroupSize; + size_t max_num_work_items = std::min(max_work_group_size, max_local_mem_size / (elem_size * tile_width * tile_size)); + + for (size_t i = 0; i < dims.size(); ++i) { + size_t dim = dims[i]; + size_t max_divider = static_cast(std::sqrt(gws[dim]) + 1); + for (size_t divider = 1; divider <= max_divider; ++divider) { + if (gws[dim] % divider == 0) { + const size_t lws0 = gws[dim] / divider; + if (lws0 <= max_num_work_items) { + lws[dim] = std::max(lws[dim], lws0); + } + if (divider <= max_num_work_items) { + lws[dim] = std::max(lws[dim], divider); + } + } + } + max_num_work_items /= lws[dim]; + } + return lws; +} + +static inline std::vector GetGWS(const permute_params& params) { + const auto& in = params.inputs[0]; + const size_t tile_size = GetTileSize(params); + const size_t fsv_alignment = GetFsvAlignment(params); + std::vector gws; + switch (in.GetLayout()) { + case DataLayout::b_fs_yx_fsv16: + case DataLayout::b_fs_yx_fsv32: + case DataLayout::b_fs_yx_fsv4: + gws = {CeilDiv(fsv_alignment, tile_size), + CeilDiv(in.Y().v, tile_size) * in.X().v, + in.Batch().v * CeilDiv(in.Feature().v, fsv_alignment)}; + break; + case DataLayout::b_fs_zyx_fsv16: + case DataLayout::b_fs_zyx_fsv32: + gws = {CeilDiv(fsv_alignment, tile_size), + CeilDiv(in.Z().v, tile_size) * in.X().v * in.Y().v, + in.Batch().v * CeilDiv(in.Feature().v, fsv_alignment)}; + break; + default: + throw std::runtime_error("Unsupported combination\n"); + } + return gws; +} + +CommonDispatchData PermuteKernel_tile_8x8_4x4_fsv::SetDefault(const permute_params& params) const { + CommonDispatchData dispatchData; + const size_t tile_size = GetTileSize(params); + dispatchData.gws = GetGWS(params); + dispatchData.lws = GetBestLwsFromGws(params, dispatchData.gws, tile_size, tile_size); + return dispatchData; +} + +// Validate is the same as permute_kernel_tile_8x8_4x4 +bool PermuteKernel_tile_8x8_4x4_fsv::Validate(const Params& p, const optional_params& o) const { + if (!Parent::Validate(p, o)) return false; + + std::function&)> is_rotating_except_batch = [](const std::vector& order) { + // Target transform: Rotate feature dim to back to be taken as inner-most axis + // ex) 0(b), 4(f), 1(z), 2(y), 3(x) + // ex) 0(b), 3(f), 1(y), 2(x) + if ((int32_t) order[1] != order.size() - 1) return false; + if ((int32_t) order[0] != 0) return false; + for (int32_t i = 2; i < (int32_t) order.size(); ++i) { + if ((int32_t)order[i] != (i - 1)) return false; + } + return true; + }; + + const permute_params& params = static_cast(p); + + if (params.inputs[0].GetDims().size() != params.output.GetDims().size()) { + return false; + } + + if (!is_rotating_except_batch(params.order)) { + return false; + } + + return true; +} + +KernelsPriority PermuteKernel_tile_8x8_4x4_fsv::GetKernelsPriority(const Params& params, const optional_params& /*options*/) const { + KernelData kd = KernelData::Default(params); + permute_params& newParams = *static_cast(kd.params.get()); + + // calculate number of working groups + const size_t tile_size = GetTileSize(newParams); + + std::vector gws = GetGWS(newParams); + std::vector lws = GetBestLwsFromGws(newParams, gws, tile_size, tile_size); + size_t num_working_groups = 1; + for (size_t i=0; i < gws.size(); ++i) { + num_working_groups *= gws.at(i) / lws.at(i); + } + + const size_t feature = newParams.inputs[0].Feature().v; + size_t rotating_dim = 0; + if (newParams.inputs[0].GetDims().size() == 4) { + rotating_dim = newParams.inputs[0].Y().v; + } else if (newParams.inputs[0].GetDims().size() == 5) { + rotating_dim = newParams.inputs[0].Z().v; + } + + if (num_working_groups == 1) { + return DONT_USE_IF_HAVE_SOMETHING_ELSE; + } else if ((rotating_dim >= DEFAULT_TILE_SIZE) && (feature >= DEFAULT_TILE_SIZE)) { + return FORCE_PRIORITY_1; + } else if ((rotating_dim >= DEFAULT_TILE_SIZE) || (feature >= DEFAULT_TILE_SIZE)) { + return FORCE_PRIORITY_2; + } else { + return FORCE_PRIORITY_3; + } +} +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4_fsv.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4_fsv.h new file mode 100644 index 00000000000000..e2fded954f60bc --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_kernel_tile_8x8_4x4_fsv.h @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "permute_kernel_base.h" + +namespace kernel_selector { +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// PermuteKernel_tile_8x8_4x4 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +class PermuteKernel_tile_8x8_4x4_fsv : public PermuteKernelBase { +public: + using Parent = PermuteKernelBase; + using Parent::Parent; + PermuteKernel_tile_8x8_4x4_fsv() : PermuteKernelBase("permute_tile_8x8_4x4_fsv") {} + virtual ~PermuteKernel_tile_8x8_4x4_fsv() {} + + bool Validate(const Params& p, const optional_params& o) const override; + KernelsPriority GetKernelsPriority(const Params& params, const optional_params& options) const; + ParamsKey GetSupportedKey() const override; +protected: + JitConstants GetJitConstants(const permute_params& params, const CommonDispatchData& dispatchData) const; + CommonDispatchData SetDefault(const permute_params& params) const; + std::vector GetSupportedFusedOps() const override { + return { + FusedOpType::ACTIVATION, + FusedOpType::QUANTIZE, + FusedOpType::ELTWISE, + FusedOpType::SCALE + }; + } +}; +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_params.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_params.h new file mode 100644 index 00000000000000..b71e0021d7e54d --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/permute/permute_params.h @@ -0,0 +1,27 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "kernel_selector_params.h" +#include + +namespace kernel_selector { +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// permute_params +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +struct permute_params : public base_params { + permute_params() : base_params(KernelType::PERMUTE) {} + + std::vector order; + virtual ParamsKey GetParamsKey() const { return base_params::GetParamsKey(); } +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// permute_optional_params +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +struct permute_optional_params : optional_params { + permute_optional_params() : optional_params(KernelType::PERMUTE) {} +}; +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.cpp index 4e06d74f738c80..eb4313f39bc71d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.h index 0e088fa96ebb8d..150c0dd8f1effb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.cpp index f3d52903b55d11..81ac678defb1b1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_gpu_b_fs_yx_fsv16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.h index 67aa7fa29482c5..fa9d461f159d15 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.cpp index 8f58f960377b25..46fc97ddbca623 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "pooling_kernel_gpu_b_fs_yx_fsv4.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.h index 3b2197280d81a9..464595bb5eef43 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_yx_fsv4.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.cpp index 9bc05ff8da4652..15f39ee8b9163e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "pooling_kernel_gpu_b_fs_zyx_fsv16_imad.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.h index 5b5233197e2a0f..5a671cb315c7b4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_b_fs_zyx_fsv16_imad.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.cpp index 259c6d6672b404..8e78bbc72e5571 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_gpu_bfyx_block_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.h index 06dfb7723d9c7a..d899f276540d21 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bfyx_block_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.cpp index a690fd2218ff62..1c6fff28e3c423 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.h index 9b8dd00c0892b4..4ff4fa73942e1e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bs_fs_yx_bsv16_fsv16.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.cpp index 8625792dd8dfe3..6a684e2549cffe 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.cpp @@ -1,16 +1,5 @@ -// Copyright (c) 2019-2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #include "pooling_kernel_gpu_bsv16_fsv16.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.h index 1060a1c07ac42c..391568d298315c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_bsv16_fsv16.h @@ -1,16 +1,5 @@ -// Copyright (c) 2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.cpp index 50787fc7c489f5..3236ea578b2652 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_gpu_byxf_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.h index f4465134644e13..be224d8a19ff5e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.cpp index eef3094dc9965a..90bbdcc8b0f5cf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_gpu_byxf_padding_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.h index 40b56051ef9a00..14b376c52a1a64 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_byxf_padding_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.cpp index e5a26b20cb7678..942ee0f2dad2f3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_gpu_fs_b_yx_fsv32.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.h index a448fc16dde666..b6c3f66f673a7b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_fs_b_yx_fsv32.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.cpp index c8290c675f1914..c2d7f89acd7ff1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_gpu_int8_ref.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.h index 7571b0160ee0bc..abe5c773e2b130 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_int8_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.cpp index 308e00da64d431..a0b2a923311def 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.h index 3b7d5037da13cf..b6d1794deecc05 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_gpu_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.cpp index 263f63a64ca8d7..2941432b31f137 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "pooling_kernel_selector.h" #include "pooling_kernel_gpu_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.h index 8038de7ca03031..c7f86850f1ff61 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pooling/pooling_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.cpp index b4b84cbbd3b75a..dc651a42d1d558 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "pyramid_roi_align_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.h index 17575b83ff5bf8..0bd4832ef3d6f5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.cpp index f4d34db8918add..5bd147a37b7f0d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "pyramid_roi_align_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.h index f310211cd51d40..fa9b0f9d06a846 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.cpp index a45c4f82c0c6ba..18ea7ca0342160 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "pyramid_roi_align_kernel_selector.h" #include "pyramid_roi_align_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.h index 44f7ffd30183e0..a66d44545f23e9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/pyramid_roi_align/pyramid_roi_align_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.cpp index d66ad4032ff8a4..77b90e587142a0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "quantize_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.h index 1c97ab22357454..ce210d11a35d36 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_params.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_params.h index 39dc7ec4ba5566..685176997aaef7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_params.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_params.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.cpp index 7ea140b6c74bdc..746e5da7a26550 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "quantize_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.h index 2834d5a3bde39e..3c00589653e499 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_ref.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.cpp index e0a9994ad1215a..14550c5f55afb2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include #include "quantize_kernel_scale_shift_opt.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.h index 3136ebe3ad1491..3ea1d9855db567 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_scale_shift_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_selector.h index c467f9ca4e86dd..5d93b2776d53c9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/quantize_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/qunatize_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/qunatize_kernel_selector.cpp index dcf94b00333bc7..6b7ef227137662 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/qunatize_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/quantize/qunatize_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "quantize_kernel_selector.h" #include "quantize_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.cpp index d7f5b4e37461c0..b92d234eb8e257 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reduce_kernel_b_fs_yx_fsv16.h" #include "kernel_selector_utils.h" @@ -23,6 +11,9 @@ namespace kernel_selector { static const size_t SIMD = 16; +static const size_t XY_OPT_F_LIMITS = 96; +static const size_t AXIS_Y = 2; +static const size_t AXIS_X = 3; using NDims = std::vector; static size_t calc_read_offset(const reduce_params& params) { @@ -36,6 +27,13 @@ static size_t calc_read_offset(const reduce_params& params) { return read_offset; } +static NDims get_input_dims(const reduce_params& params) { + auto input = params.inputs[0]; + auto in_dims = input.GetDims(); + std::reverse(in_dims.begin(), in_dims.end()); + return in_dims; +} + static NDims calc_in_dims(const reduce_params& params) { auto input = params.inputs[0]; auto in_dims = input.GetDims(); @@ -50,6 +48,36 @@ static NDims calc_in_dims(const reduce_params& params) { return in_dims; } +static bool is_xy_opt_supported(const ReduceMode& mode) { + switch (mode) { + case ReduceMode::MAX: + case ReduceMode::MIN: + case ReduceMode::MEAN: + case ReduceMode::SUM: + case ReduceMode::AND: + case ReduceMode::OR: + case ReduceMode::L1: + case ReduceMode::LOG_SUM_EXP: + return true; + // prod, sum_squre, L2 and log_sum doesn't work with reduce(x,y) optimization. + case ReduceMode::PROD: + case ReduceMode::SUM_SQUARE: + case ReduceMode::L2: + case ReduceMode::LOG_SUM: + default: + return false; + } +} + +static bool can_opt_reduce_xy(const reduce_params& params) { + auto axes = params.reduceAxes; + auto input_dims = get_input_dims(params); + return is_xy_opt_supported(params.reduceMode) && axes.size() == 2 && + std::find(axes.begin(), axes.end(), AXIS_Y) != std::end(axes) && + std::find(axes.begin(), axes.end(), AXIS_X) != std::end(axes) && + input_dims[1].v <= XY_OPT_F_LIMITS; +} + ParamsKey ReduceKernel_b_fs_yx_fsv16::GetSupportedKey() const { ParamsKey k; k.EnableInputDataType(Datatype::F16); @@ -75,10 +103,19 @@ CommonDispatchData ReduceKernel_b_fs_yx_fsv16::SetDefault(const reduce_params& p CommonDispatchData dispatchData; auto in_dims = calc_in_dims(params); - dispatchData.gws = { 16, + + if (can_opt_reduce_xy(params)) { + auto input_dims = get_input_dims(params); + dispatchData.gws = { 16, + std::min(CeilDiv(input_dims[2].v, SIMD), SIMD), + CeilDiv(in_dims[1].v, SIMD) * in_dims[0].v }; // F, B + dispatchData.lws = { 16, dispatchData.gws[1], 1 }; + } else { + dispatchData.gws = { 16, CeilDiv(in_dims[3].v, calc_read_offset(params)) * in_dims[2].v, // X, Y CeilDiv(in_dims[1].v, SIMD) * in_dims[0].v }; // F, B - dispatchData.lws = { SIMD, 1, 1 }; + dispatchData.lws = { SIMD, 1, 1 }; + } return dispatchData; } @@ -88,6 +125,18 @@ JitConstants ReduceKernel_b_fs_yx_fsv16::GetJitConstants(const reduce_params& pa auto in_dims = calc_in_dims(params); auto read_offset = calc_read_offset(params); + // Optimization of reduce(x,y) when feature depth is shallow. + // In this case, tile the input tensor and create partial result to generate more work items + if (can_opt_reduce_xy(params)) { + auto input_dims = get_input_dims(params); + auto num_block_y = std::min(CeilDiv(input_dims[2].v, SIMD), SIMD); + jit.AddConstant(MakeJitConstant("IS_REDUCE_XY", 1)); + jit.AddConstant(MakeJitConstant("BLOCK_Y_NUM", num_block_y)); + jit.AddConstant(MakeJitConstant("BLOCK_Y_SIZE", CeilDiv(input_dims[2].v, num_block_y))); + } else { + jit.AddConstant(MakeJitConstant("IS_REDUCE_XY", 0)); + } + // Universal output sizes for keep dims = true/false cases jit.AddConstant(MakeJitConstant("COMMON_OUTPUT_SIZE_X", in_dims[3].v)); jit.AddConstant(MakeJitConstant("COMMON_OUTPUT_SIZE_Y", in_dims[2].v)); @@ -139,7 +188,8 @@ JitConstants ReduceKernel_b_fs_yx_fsv16::GetJitConstants(const reduce_params& pa IndexType::TENSOR_COORD, Tensor::DataChannelName::X}; - jit.AddConstant(MakeJitConstant("FUSED_OPS_VECTOR", "{FUSED_OPS_VECTOR_1;final_result.lo=FUSED_OPS_RESULT_VECTOR_1;} {FUSED_OPS_VECTOR_2;final_result.hi=FUSED_OPS_RESULT_VECTOR_2;}")); + jit.AddConstant(MakeJitConstant("FUSED_OPS_VECTOR", "{FUSED_OPS_VECTOR_1;final_result.lo=FUSED_OPS_RESULT_VECTOR_1;}" + "{FUSED_OPS_VECTOR_2;final_result.hi=FUSED_OPS_RESULT_VECTOR_2;}")); jit.AddConstant(MakeJitConstant("FUSED_OPS_RESULT_VECTOR", "final_result")); jit.Merge(MakeFusedOpsJitConstants(params, {conf_scalar, conf_vector_1, conf_vector_2})); } else { diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.h index 6a255f794adbdb..b68880c2e9cfa3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_b_fs_yx_fsv16.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.cpp index 9fa2248e958edb..b814f23b01eaee 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reduce_kernel_base.h" #include "kernel_selector_utils.h" @@ -213,11 +201,15 @@ Datatype ReduceKernelBase::GetAccumulatorType(const reduce_params& params) const Datatype ReduceKernelBase::GetFinalAccumulatorType(const reduce_params& params) const { const auto& reduce_mode = params.reduceMode; - if (reduce_mode == ReduceMode::MEAN || reduce_mode == ReduceMode::LOG_SUM_EXP || - reduce_mode == ReduceMode::LOG_SUM || reduce_mode == ReduceMode::L2 || reduce_mode == ReduceMode::L1) { - return Datatype::F32; - } else + if (reduce_mode == ReduceMode::MEAN || + reduce_mode == ReduceMode::LOG_SUM_EXP || + reduce_mode == ReduceMode::LOG_SUM || + reduce_mode == ReduceMode::L2 || + reduce_mode == ReduceMode::L1) { + return Datatype::F32; + } else { return GetAccumulatorType(params); + } } Datatype ReduceKernelBase::GetActivationType(const reduce_params& params) const { diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.h index 0d3f0395b4281c..90707e3729cf97 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.cpp index 9e64b3fd3aebc6..c3172c6fda467b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reduce_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.h index c4ba5a2a204436..2f920d5fec5a49 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.cpp index 763506fba67e7e..3e1d8d1c76cf29 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reduce_kernel_selector.h" #include "reduce_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.h index 7c0b5faed49802..69ff1da09a360f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reduce/reduce_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.cpp index 4090073717457f..fed2ac12b37505 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "region_yolo_kernel_ref.h" #include "kernel_selector_utils.h" @@ -46,21 +34,46 @@ JitConstants RegionYoloKernelRef::GetJitConstants(const region_yolo_params& ry) return jit; } +bool RegionYoloKernelRef::Validate(const Params& p, const optional_params& o) const { + if (p.GetType() != KernelType:: REGION_YOLO || o.GetType() != KernelType::REGION_YOLO) { + return false; + } + + const region_yolo_params& params = static_cast(p); + const size_t expected_feature_size = + params.do_softmax ? params.inputs[0].X().v * params.inputs[0].Y().v * params.inputs[0].Feature().v : params.inputs[0].Feature().v; + + if (expected_feature_size != params.output.Feature().v) { + return false; + } + + return true; +} + RegionYoloKernelRef::DispatchData SetDefault(const region_yolo_params& params) { RegionYoloKernelRef::DispatchData dispatchData; const auto& input = params.inputs[0]; - if (input.GetLayout() == DataLayout::bfyx) { - dispatchData.gws = {input.X().v * input.Y().v, 1, 1}; - } else { - dispatchData.gws = {input.Feature().v * input.Batch().v, input.X().v, input.Y().v}; + + switch (input.GetLayout()) { + case DataLayout::bfyx: + case DataLayout::byxf: { + uint32_t region_num = params.do_softmax ? params.num : params.mask_size; + dispatchData.gws = {input.X().v * input.Y().v, region_num, input.Batch().v}; + } break; + default: + throw std::invalid_argument("Unsupported DataLayout"); } dispatchData.lws = GetOptimalLocalWorkGroupSizes(dispatchData.gws, params.engineInfo); return dispatchData; } + KernelsData RegionYoloKernelRef::GetKernelsData(const Params& params, const optional_params& options) const { - assert(params.GetType() == KernelType::REGION_YOLO); + if (!Validate(params, options)) { + return {}; + } + const region_yolo_params& orgParams = static_cast(params); DispatchData dispatchData = SetDefault(orgParams); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.h index d3639e39ea0d09..e23d2ccc77f424 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once @@ -61,5 +49,6 @@ class RegionYoloKernelRef : public KernelBaseOpenCL { protected: virtual JitConstants GetJitConstants(const region_yolo_params& params) const; + bool Validate(const Params& p, const optional_params& o) const override; }; } // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.cpp index 5cd15079878ca3..3dead39204aed2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "region_yolo_kernel_selector.h" #include "region_yolo_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.h index e202ba1e82b938..bb7b9aac5a616a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/region_yolo/region_yolo_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.cpp index 055ffe24572f34..e88e3bb10195f3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_biplanar_nv12.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.h index 252e4561d581fe..2bd59dd14b2e61 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_biplanar_nv12.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.cpp index cda2efb4533f71..c76b01acc1a352 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "reorder_from_winograd_2x3_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.h index ebfabd3128a86f..1c431f26aab8c9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_from_winograd_2x3_kernel.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.cpp index f76da6f17f1ff4..c122e8f8616dbe 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "reorder_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.h index 22b05e0ed6077d..26c8bdbdbc28a4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.cpp index ad405edd8ab244..0255ceb190c27f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "kernel_selector_common.h" #include "reorder_kernel_base.h" @@ -154,7 +143,7 @@ ReorderKernelBase::DispatchData ReorderKernelBase::SetDefault(const reorder_weig DispatchData dispatchData; dispatchData.gws = { out.G().v * out.OFM().v, out.IFM().v, out.X().v * out.Y().v * out.Z().v }; - dispatchData.lws= GetOptimalLocalWorkGroupSizes(dispatchData.gws, params.engineInfo); + dispatchData.lws = GetOptimalLocalWorkGroupSizes(dispatchData.gws, params.engineInfo); return dispatchData; } diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.h index afa59324135a21..ea2b70330a8ee0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once @@ -106,7 +95,7 @@ class ReorderKernelBase : public KernelBaseOpenCL { virtual JitConstants GetJitConstants(const reorder_params& params) const; virtual DispatchData SetDefault(const reorder_weights_params& params) const; virtual DispatchData SetDefault(const reorder_params& params) const; - virtual bool Validate(const Params&, const optional_params&) const { return true; }; + virtual bool Validate(const Params&, const optional_params&) const { return true; } KernelsData GetCommonKernelsData(const reorder_weights_params& params, const optional_params&) const; KernelsData GetCommonKernelsData(const reorder_params& params, const optional_params&) const; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.cpp index 04c31c89b936df..62af69c727c680 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_kernel_binary.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.h index 819c55534b73e7..eeb8e9b6385dc0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_binary.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.cpp index 01450360461283..0ba8db8af1eb5a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_kernel_fast_b1.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.h index b3bda2a53c8cc3..e31ca49ece5779 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fast_b1.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.cpp index bc8dab0a65a331..20dd82424186ab 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "reorder_kernel_fs_b_yx_fsv32_to_bfyx.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.h index 6b0211ee9bf764..a01ff0e6d87909 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_fs_b_yx_fsv32_to_bfyx.h @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.cpp index c3ffb2086c1538..1076176a639529 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_kernel_selector.h" #include "reorder_kernel.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.h index 6deed3041d8718..0d41099163a50b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.cpp index 3a8375ef0866c0..40e5479341ea64 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_kernel_to_yxfb_batched.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.h index a8c5bcc85f4e23..1510900b9c427e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_kernel_to_yxfb_batched.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.cpp index 6968303b4cc597..b39bf7ed0db597 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_to_winograd_2x3_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.h index 214b0402ba1857..a49e0c436d57c0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_to_winograd_2x3_kernel.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.cpp index ea91760daebab8..b7fe01fc5f84ce 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_weights_binary_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.h index 9697d3b1f6a5d6..ea6b80df5d7099 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_binary_kernel.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.cpp index 4c38c18dff01e8..5d917a2239283c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_weights_image_fyx_b_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.h index 1d8644d3cc7ea3..b75593815783d5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_fyx_b_kernel.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.cpp index 54e27759d6db6d..da5a65b739d460 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_weights_image_winograd_6x3_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.h index e061be484c1b78..14c181ebdd06d0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_image_winograd_6x3_kernel.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.cpp index 850c6b49f3fe2c..f5dcaf3bd2e64c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "kernel_selector_common.h" #include "reorder_weights_kernel.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.h index 3a3db83de7e48f..20c951b48b7c0e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.cpp index e46cea765249cf..2c77f8504bdd0d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_weights_kernel_selector.h" #include "reorder_weights_kernel.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.h index 9f5d848aa0de40..da907695cd9982 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.cpp index 4ca730eba5b041..911bcf7350c089 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_weights_opt.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.h index 7a936c8d5637fa..ffeda36f57f463 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_opt.h @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once @@ -29,7 +18,7 @@ class ReorderWeightsOpt : public ReorderKernelBase { DispatchData SetDefault(const reorder_weights_params& arg) const override; protected: - virtual bool Validate(const Params& params, const optional_params& options) const override; - virtual JitConstants GetJitConstants(const reorder_weights_params& params) const override; + bool Validate(const Params& params, const optional_params& options) const override; + JitConstants GetJitConstants(const reorder_weights_params& params) const override; }; } // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.cpp index 2f5f46eef5cd03..64596d8ca6a3e0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_weights_winograd_2x3_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.h index bb19c76cee4c42..cf1d96da1c82fe 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_2x3_kernel.h @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.cpp index 99b5d67f2662b4..52c88a1b8d4bba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "reorder_weights_winograd_6x3_kernel.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.h index 1c8ca25e335311..a070b832a0b784 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorder/reorder_weights_winograd_6x3_kernel.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.cpp index b65383e01945e9..056d1e5af3ae79 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reorg_yolo_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.h index e6612a28a6a9e6..8f44907909a338 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.cpp index c6a12762c6ba07..7bba82d0971a4f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reorg_yolo_kernel_selector.h" #include "reorg_yolo_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.h index d4409cb414b68b..0ec8e38cbb9863 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reorg_yolo/reorg_yolo_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.cpp index 7446f5abc09ea0..75c876e11bd2a2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "resample_kernel_base.h" #include "kernel_selector_utils.h" @@ -22,7 +12,7 @@ namespace { int getAxisIndex(kernel_selector::InterpolateAxis axis) { - switch(axis) { + switch (axis) { case kernel_selector::InterpolateAxis::BATCH: return 0; case kernel_selector::InterpolateAxis::FEATURE: @@ -177,7 +167,7 @@ JitConstants ResampleKernelBase::GetJitConstants(const resample_params& params) MakeJitConstant("SCALES", scales), MakeJitConstant("PADS_BEGIN", pads_begin), MakeJitConstant("PADS_END", pads_end), - MakeJitConstant("PADDING_USED", (int)paddingUsed), + MakeJitConstant("PADDING_USED", static_cast(paddingUsed)), MakeJitConstant("AXES_USED", axesUsed), MakeJitConstant("ALIGN_CORNERS", align_corners), MakeJitConstant("KERNEL_W", 2), diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.h index 1e3cc42d6d4b5c..4750af8c9bce1c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.cpp index 0f263ec99040ec..9efc0fcc2b3db8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "resample_kernel_opt.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.h index bae5e64efb3b94..6a45332b7afd2c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_opt.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.cpp index 365388b0c7fdef..da2462df1a95ed 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include #include "resample_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.h index 50b2b85c2502ba..bb036a8048bc2b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.cpp index bb6a24cd565b7b..230514da09dd69 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "resample_kernel_selector.h" #include "resample_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.h index cd6a1e1e86c460..9a21591be61158 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/resample/resample_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.cpp index 854260d7911d15..011c581b55ebbd 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "reshape_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.h index 548990338cb382..7ea22a11bd2ad6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.cpp index f7db4308ce2fe2..adfdb1004ee8b1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "reshape_kernel_selector.h" #include "reshape_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.h index 80ad24149172f8..8429157f457a56 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reshape/reshape_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.cpp index 8b5f6de95d4b7a..9090a36911c06f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "reverse_sequence_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.h index 87cee137bd1979..f2267b19a2e527 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.cpp index d1399128fe9944..1cc02b1097377b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "reverse_sequence_kernel_selector.h" #include "reverse_sequence_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.h index 38aef6805db56e..3f3f15188fb7a7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/reverse_sequence/reverse_sequence_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.cpp index 8793a69d7d9b5e..147c2551b281be 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "roi_pooling_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.h index af826ee09acfb6..5afe1835cb65fa 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.cpp index 6bc516c4351405..bf2606a87b4d5b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "roi_pooling_kernel_ps_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.h index 0a79057634a051..d1e595c0e25bd1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ps_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.cpp index 4d59bdb442065c..ef6acf1f61a485 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "roi_pooling_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.h index cd6341a9a5d716..0c9a6a6b77b0eb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.cpp index 5b333208626ab6..d09d0042166dd5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "roi_pooling_kernel_selector.h" #include "roi_pooling_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.h index b03537c746dcd0..5f0cfa9781a8aa 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/roi_pooling/roi_pooling_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.cpp index bb5c96d67c16fe..3bec06a2e34702 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_elements_update_kernel_ref.h" #include "kernel_selector_utils.h" @@ -159,7 +147,7 @@ KernelsData ScatterElementsUpdateKernelRef::GetKernelsData(const Params& params, auto dispatchData = SetDefault(newParams, options, (i == 1)); auto entry_point = GetEntryPoint(kernelName, newParams.layerID, options); - if (i == 1){ + if (i == 1) { cldnn_jit.AddConstant(MakeJitConstant("IS_SECOND_ITER", "true")); } std::string jit = CreateJit(kernelName, cldnn_jit, entry_point); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.h index 027535f807af81..4bb42a126539a8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.cpp index 915b8110c3bad8..13a64ae798751b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_elements_update_kernel_selector.h" #include "scatter_elements_update_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.h index b4ebeb7e524e1a..11c03a8a438695 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_elements_update_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_ref.cpp new file mode 100644 index 00000000000000..f63662909e4016 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_ref.cpp @@ -0,0 +1,180 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "scatter_nd_update_kernel_ref.h" +#include "kernel_selector_utils.h" +#include +#include + +namespace kernel_selector { + +ParamsKey ScatterNDUpdateKernelRef::GetSupportedKey() const { + ParamsKey k; + k.EnableInputDataType(Datatype::F16); + k.EnableInputDataType(Datatype::F32); + k.EnableInputDataType(Datatype::INT32); + k.EnableOutputDataType(Datatype::F16); + k.EnableOutputDataType(Datatype::F32); + k.EnableOutputDataType(Datatype::INT32); + k.EnableOutputDataType(Datatype::INT8); + k.EnableOutputDataType(Datatype::UINT8); + k.EnableInputLayout(DataLayout::bfyx); + k.EnableOutputLayout(DataLayout::bfyx); + k.EnableInputLayout(DataLayout::bfzyx); + k.EnableOutputLayout(DataLayout::bfzyx); + k.EnableInputLayout(DataLayout::bfwzyx); + k.EnableOutputLayout(DataLayout::bfwzyx); + k.EnableTensorOffset(); + k.EnableTensorPitches(); + k.EnableBatching(); + k.EnableDifferentTypes(); + return k; +} + +static inline std::string GetOrderString(std::vector& order) { + std::string order_str = order[0]; + for (size_t i = 1; i < order.size(); i++) + order_str += ", " + order[i]; + + return order_str; +} + +static inline std::vector GetDefaultOrder(size_t size) { + std::vector default_order; + if (size <= 4) { + default_order = {"b", "f", "y", "x"}; + } else if (size == 5) { + default_order = {"b", "f", "z", "y", "x"}; + } else if (size == 6) { + default_order = {"b", "f", "w", "z", "y", "x"}; + } + + return default_order; +} + +ScatterNDUpdateKernelRef::DispatchData +ScatterNDUpdateKernelRef::SetDefault(const scatter_nd_update_params& params, const optional_params&, bool is_second) const { + DispatchData dispatchData; + + if (!is_second) { + const auto& scope = params.output; + dispatchData.gws = { scope.X().v * scope.Y().v, scope.Z().v * scope.W().v, scope.Feature().v * scope.Batch().v }; + } else { + auto indices_rank = params.indices_rank; + const auto& indices = params.inputs[1]; + auto indices_dims = indices.LogicalDims(); + + if (indices_dims.size() > 1) { + std::reverse(indices_dims.begin(), indices_dims.end()); + } + + dispatchData.indicesLastDim = indices_dims[indices_rank - 1]; + size_t indices_set_size = 1; + for (size_t i = 0; i < (indices_rank - 1); i++) { + indices_set_size *= indices_dims[i]; + } + + dispatchData.gws = {1, 1, indices_set_size}; + } + + dispatchData.lws = GetOptimalLocalWorkGroupSizes(dispatchData.gws, params.engineInfo); + + return dispatchData; +} + +JitConstants ScatterNDUpdateKernelRef::GetJitConstants(const scatter_nd_update_params& params) const { + JitConstants jit = MakeBaseParamsJitConstants(params); + + if (!params.fused_ops.empty()) { + FusedOpsConfiguration conf1 = { "_FIRST_KERNEL", GetDefaultOrder(params.output.GetDims().size()), "val", params.inputs[0].GetDType() }; + FusedOpsConfiguration conf2 = { "_SECOND_KERNEL", GetDefaultOrder(params.output.GetDims().size()), "val", params.inputs[0].GetDType() }; + jit.Merge(MakeFusedOpsJitConstants(params, {conf1, conf2})); + } + + return jit; +} + +bool ScatterNDUpdateKernelRef::Validate(const Params& p, const optional_params& o) const { + if (p.GetType() != KernelType:: SCATTER_ND_UPDATE || o.GetType() != KernelType::SCATTER_ND_UPDATE) { + return false; + } + + const scatter_nd_update_params& params = static_cast(p); + auto input_dims = params.inputs[0].LogicalDims(); + auto indices_dims = params.inputs[1].LogicalDims(); + std::reverse(indices_dims.begin(), indices_dims.end()); + + auto indices_rank = params.indices_rank; + if (indices_rank < 1) { + return false; + } + + if (indices_dims[indices_rank - 1] > input_dims.size()) { + return false; + } + + for (auto& fused_op : params.fused_ops) { + if (!IsFusedPrimitiveSupported(fused_op)) + return false; + } + + return true; +} + +static std::string GetInputBlockND(const scatter_nd_update_params& params) { + const auto& input = params.inputs[0]; + auto input_dims = input.LogicalDims(); + std::reverse(input_dims.begin(), input_dims.end()); + while (!input_dims.empty() && input_dims.back() == 1) { + input_dims.pop_back(); + } + const int rank = static_cast(input_dims.size()); + std::vector block_nd(rank + 1); + block_nd[rank] = 1; + for (int idx = (rank - 1); idx >= 0; idx--) { + block_nd[idx] = input_dims[idx] * block_nd[idx + 1]; + } + + std::stringstream s; + for (int i = 0; i < (rank + 1); i++) { + if (i < rank) { + s << block_nd[i] << ","; + } else { + s << block_nd[i]; + } + } + auto str_result = s.str(); + return str_result; +} + +KernelsData ScatterNDUpdateKernelRef::GetKernelsData(const Params& params, const optional_params& options) const { + if (!Validate(params, options)) { + return {}; + } + + KernelData kd = KernelData::Default(params, 2); + scatter_nd_update_params& newParams = *static_cast(kd.params.get()); + auto cldnn_jit = GetJitConstants(newParams); + + // First iter - copy input data to output data + // Second iter - update values specified by updates at specific index position specified by indices + for (int i = 0; i < 2; i++) { + auto dispatchData = SetDefault(newParams, options, (i == 1)); + auto entry_point = GetEntryPoint(kernelName, newParams.layerID, options); + + if (i == 1) { + cldnn_jit.AddConstant(MakeJitConstant("IS_SECOND_ITER", "true")); + cldnn_jit.AddConstant(MakeJitConstant("INDICES_LAST_DIM", dispatchData.indicesLastDim)); + cldnn_jit.AddConstant(MakeJitConstant("INPUT_BLOCK_ND", GetInputBlockND(newParams))); + } + std::string jit = CreateJit(kernelName, cldnn_jit, entry_point); + + clKernelData& kernel = kd.kernels[i]; + + FillCLKernelData(kernel, dispatchData, params.engineInfo, kernelName, jit, entry_point, "", false, false, 3, GetFusedPrimitiveInputsCount(params)); + } + + return {kd}; +} +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_ref.h new file mode 100644 index 00000000000000..378399c0b4c1dc --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_ref.h @@ -0,0 +1,50 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "kernel_base_opencl.h" + +namespace kernel_selector { +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// scatter_nd_update_params +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +struct scatter_nd_update_params : public base_params { + scatter_nd_update_params() : base_params(KernelType::SCATTER_ND_UPDATE), indices_rank(0) {} + + size_t indices_rank; + + virtual ParamsKey GetParamsKey() const { return base_params::GetParamsKey(); } +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// scatter_nd_update_optional_params +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +struct scatter_nd_update_optional_params : optional_params { + scatter_nd_update_optional_params() : optional_params(KernelType::SCATTER_ND_UPDATE) {} +}; + +class ScatterNDUpdateKernelRef : public KernelBaseOpenCL { +public: + struct DispatchData : public CommonDispatchData { + size_t indicesLastDim; + }; + + ScatterNDUpdateKernelRef() : KernelBaseOpenCL("scatter_nd_update_ref") {} + virtual ~ScatterNDUpdateKernelRef() {} + virtual JitConstants GetJitConstants(const scatter_nd_update_params& params) const; + virtual DispatchData SetDefault(const scatter_nd_update_params& params, const optional_params&, bool is_second) const; + KernelsData GetKernelsData(const Params& params, const optional_params& options) const override; + ParamsKey GetSupportedKey() const override; + std::vector GetSupportedFusedOps() const override { + return { FusedOpType::QUANTIZE, + FusedOpType::SCALE, + FusedOpType::ACTIVATION, + FusedOpType::ELTWISE }; + } + +protected: + bool Validate(const Params& p, const optional_params& o) const override; +}; +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_selector.cpp new file mode 100644 index 00000000000000..3241ca14c7ba8d --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_selector.cpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "scatter_nd_update_kernel_selector.h" +#include "scatter_nd_update_kernel_ref.h" + +namespace kernel_selector { + +scatter_nd_update_kernel_selector::scatter_nd_update_kernel_selector() { Attach(); } + +KernelsData scatter_nd_update_kernel_selector::GetBestKernels(const Params& params, const optional_params& options) const { + return GetNaiveBestKernel(params, options, KernelType::SCATTER_ND_UPDATE); +} +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_selector.h new file mode 100644 index 00000000000000..40673d9d706911 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_nd_update_kernel_selector.h @@ -0,0 +1,23 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "kernel_selector.h" + +namespace kernel_selector { +class scatter_nd_update_kernel_selector : public kernel_selector_base { +public: + static scatter_nd_update_kernel_selector& Instance() { + static scatter_nd_update_kernel_selector instance_; + return instance_; + } + + scatter_nd_update_kernel_selector(); + + virtual ~scatter_nd_update_kernel_selector() {} + + KernelsData GetBestKernels(const Params& params, const optional_params& options) const override; +}; +} // namespace kernel_selector diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.cpp index 4c6e888e490d64..90e40d274fbe90 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_update_kernel_ref.h" #include "kernel_selector_utils.h" @@ -128,7 +116,7 @@ CommonDispatchData ScatterUpdateKernelRef::SetDefault(const scatter_update_param // Each work item is for each tensor in input2. // Not using input2's shape info directly, because the input2's shape might be reordered from the reordering pass. // Instead, we reconsider update2's dimension with input1's shape which is shrinked as 1d. - // e.g., axis = b, input0(10, 9, 10, 9, 10) && input1(4, 2) => input2(8, 9, 10, 9, 10 + // e.g., axis = b, input0(10, 9, 10, 9, 10) && input1(4, 2) => input2(8, 9, 10, 9, 10 const size_t indices_size = params.inputs[1].LogicalSize(); switch (output.GetLayout()) { case DataLayout::bfyx: @@ -220,8 +208,10 @@ JitConstants ScatterUpdateKernelRef::GetJitConstants(const scatter_update_params } else { // i < axis_value - 1 std::string def_pitch = "UPDATES_" + GetAxisName(dims, i) + "_PITCH" + ""; std::string output_size_name; - if (i == 0) output_size_name = "OUTPUT_FEATURE_NUM"; - else output_size_name = "OUTPUT_SIZE_" + GetAxisName(dims, i + 1); + if (i == 0) + output_size_name = "OUTPUT_FEATURE_NUM"; + else + output_size_name = "OUTPUT_SIZE_" + GetAxisName(dims, i + 1); std::string src_pitch = "(UPDATES_" + GetAxisName(dims, i + 1) + "_PITCH * " + output_size_name + ")"; jit.AddConstant(MakeJitConstant(def_pitch, src_pitch)); } @@ -231,7 +221,8 @@ JitConstants ScatterUpdateKernelRef::GetJitConstants(const scatter_update_params if (!params.fused_ops.empty()) { FusedOpsConfiguration conf1 = { "_FIRST_KERNEL", GetDefaultOrder(params.output.GetDims().size()), "val", params.inputs[0].GetDType() }; - FusedOpsConfiguration conf2 = { "_SECOND_KERNEL", GetVectorSecondOutputIndexOrder(params, GetScatterUpdateChannelIndex(params)), "val", params.inputs[0].GetDType() }; + FusedOpsConfiguration conf2 = { "_SECOND_KERNEL", GetVectorSecondOutputIndexOrder(params, GetScatterUpdateChannelIndex(params)), + "val", params.inputs[0].GetDType() }; jit.Merge(MakeFusedOpsJitConstants(params, {conf1, conf2})); } @@ -267,7 +258,8 @@ KernelsData ScatterUpdateKernelRef::GetKernelsData(const Params& params, const o int start_with_iteration = 0; // if dim of output along axis is equal to logical size of indices, we miss copying kernel - if (orgParams.inputs[0].Extract(orgParams.inputs[0].GetLayout(), Tensor::DataChannelName(orgParams.axis), orgParams.inputs[0].GetDims()).v == indices_size) { + if (orgParams.inputs[0].Extract(orgParams.inputs[0].GetLayout(), Tensor::DataChannelName(orgParams.axis), + orgParams.inputs[0].GetDims()).v == indices_size) { start_with_iteration = 1; } @@ -279,7 +271,7 @@ KernelsData ScatterUpdateKernelRef::GetKernelsData(const Params& params, const o auto dispatchData = SetDefault(newParams, options, (i == 1)); auto entry_point = GetEntryPoint(kernelName, newParams.layerID, options); - if (i == 1){ + if (i == 1) { cldnn_jit.AddConstant(MakeJitConstant("IS_SECOND_ITER", "true")); } std::string jit = CreateJit(kernelName, cldnn_jit, entry_point); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.h index 25037d8550896d..70b9793176b1e4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.cpp index e5b565fb33c102..c636dbb03d1491 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_update_kernel_selector.h" #include "scatter_update_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.h index 366bc871266767..e393a2329abf5d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/scatter_update/scatter_update_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.cpp index 2eac3a810cdd55..e63fb5e04e919d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "select_kernel_base.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.h index 883bbb61791dc4..68ab0dc5034256 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.cpp index 06ed05fc719932..e8ef3b40f5936e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "select_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.h index a927359b425900..c6ca0b48dfadc3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.cpp index 624b781356bc20..23dec107686872 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "select_kernel_selector.h" #include "select_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.h index 3cd3ca23645442..964b257eec3ab2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/select/select_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.cpp index f97f79a52a03b3..dea0167155e318 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "shuffle_channels_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.h index 9764d1919340fc..62335db369a93a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.cpp index 9deb90174ea0a4..7fd0b1bd1411ae 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "shuffle_channels_kernel_selector.h" #include "shuffle_channels_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.h index 7c8138dc011693..f18a9867f08ed0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/shuffle_channels/shuffle_channels_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.cpp index 5d9547a5c4a435..b3d16867d89312 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "softmax_items_class_kernel_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.h index 987778c7f41104..a71946ef81d2be 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_items_class_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.cpp index 70a928e6527af3..7336f3cab13f7e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "softmax_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.h index eea3de6071cff1..3409abbc047c5e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_base.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.cpp index 42cb253c50b1db..938e5877f50de2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "softmax_kernel_bf.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.h index acd80f36d98206..6514cdc06b4026 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_bf.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.cpp index 816f763427efef..8fdffcfeaefc28 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "softmax_kernel_fb.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.h index bee4f88af6c727..754130a562780c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_fb.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.cpp index a0b6a303966e45..d530ac71453ecf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "softmax_kernel_items_class_optimized.h" #include "kernel_selector_utils.h" @@ -21,7 +11,7 @@ static const auto workitems_per_classes = 16; inline static size_t GetItemClassCount(const DataTensor& input, SoftmaxDim dim) { size_t item_class_count = 0; - + switch (dim) { case SoftmaxDim::X: item_class_count = input.X().v; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.h index 5f836551611f7e..262db2abf40f49 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_items_class_optimized.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.cpp index 22286d80d5d9b5..c2dbb204cf2c2c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "softmax_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.h index 77ff1c8243b1d3..72290bef08ac66 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.cpp index d40f5d303a5cbb..fa40ae6ac72aba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "softmax_kernel_selector.h" #include "softmax_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.h index f525ff5872392c..1ca30e05dd54ff 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/softmax/softmax_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.cpp index 341c92df4e90fa..039210668aa597 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_batch_kernel_base.h" #include "kernel_selector_utils.h" @@ -66,7 +54,7 @@ JitConstants SpaceToBatchKernelBase::GetJitConstants(const space_to_batch_params if (args.w != 0) { jit.AddConstant(MakeJitConstant(name + "_W", args.w)); jit.AddConstant(MakeJitConstant(name + "_Z", args.z)); - } else if(args.z != 0) { + } else if (args.z != 0) { jit.AddConstant(MakeJitConstant(name + "_W", default_value)); jit.AddConstant(MakeJitConstant(name + "_Z", args.z)); } else { diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.h index 37238d1eb2a1a1..ea63e56aafe27a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.cpp index 09d69edde70667..a52a302dc3504e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_batch_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.h index 48f6cfab1d67ed..c7d51a4cff2ea0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.cpp index 49658441496f4d..a917cdb98421a7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_batch_kernel_selector.h" #include "space_to_batch_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.h index 52242eadcb5ff2..3456ca122eef9c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_batch/space_to_batch_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.cpp index 8b2ae7a412410c..2c3a95df3c6ac7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_depth_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.h index c83f5d009b6a2e..cb5c0f2fd56135 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_ref.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.cpp index 53e000c06187a3..29a7617c6e4831 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_depth_kernel_selector.h" #include "space_to_depth_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.h index 387d06555f54db..94bc16b0b728e9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/space_to_depth/space_to_depth_kernel_selector.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.cpp index 7843f5654e3943..d20aab92c4c0e3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "strided_slice_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.h index 2d5f2fea825235..b28785b14f475a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.cpp index c1b616ad568f77..1259898d202b94 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "strided_slice_kernel_selector.h" #include "strided_slice_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.h index 28a26f9511f848..c8a84b11e5facf 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/strided_slice/strided_slice_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.cpp index 26eb747b5fbde2..32a07751603c2e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "tile_kernel_ref.h" #include "kernel_selector_utils.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.h index aa92b1f850e823..ad72633220d235 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_ref.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.cpp index ddd4f36049dd19..8aa2bcb62da4dc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "tile_kernel_selector.h" #include "tile_kernel_ref.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.h index da112cee5e6298..dd1236ad479ea7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/actual_kernels/tile/tile_kernel_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.cpp index 8253f424a4c1fe..bdef07b6f2964e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "auto_tuner.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.h index a3fb5203e4eafe..709f2955b6e657 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/auto_tuner.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_opt.cl index 7dbfc6f8797a2d..b80f5044e5cf21 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_opt.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_ref.cl index bcaf165be1f2c7..d1e4e033152543 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/activation_ref.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_axis.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_axis.cl index ec358526deec7a..cf6df25e4f1c81 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_axis.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_axis.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_gpu_ref.cl index 20cb8ae996f71a..551be7f23c9bec 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_opt.cl index 5d1ea0deca5c94..428bd11ebdd48d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/arg_max_min_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/average_unpooling_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/average_unpooling_gpu_ref.cl index f96ab41bde6c75..33a4cbbbc9156b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/average_unpooling_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/average_unpooling_gpu_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/batch_to_space_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/batch_to_space_ref.cl index b3d5ac01645f11..4368c6e4b8faa9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/batch_to_space_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/batch_to_space_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1.cl index b068ea984f34b1..390a587663464e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1_b_fs_yx_fsv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1_b_fs_yx_fsv16.cl index 32bbb91859c211..c09e8a861b4867 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1_b_fs_yx_fsv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_1x1_b_fs_yx_fsv16.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_generic.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_generic.cl index 669d8acdf852bd..1d3064a9bf7005 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_generic.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_generic.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_ref.cl index 2a176eeaf61eef..e7b2b86694478e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/binary_convolution_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/border_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/border_gpu_ref.cl index 9918b5770c6ddd..315fa9256ff551 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/border_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/border_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/broadcast_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/broadcast_gpu_ref.cl index 23bf2cca82c050..85b7135eb5d663 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/broadcast_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/broadcast_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_blocked.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_blocked.cl index 0fdbe4dd4de259..c793efc2b60e8a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_blocked.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_blocked.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/fetch.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_depth_bfyx_no_pitch.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_depth_bfyx_no_pitch.cl index d65a98729d91ff..50f3a4a54bf65d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_depth_bfyx_no_pitch.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_depth_bfyx_no_pitch.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_fs_b_yx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_fs_b_yx_fsv32.cl index 232565069360da..a87355d2c78719 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_fs_b_yx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_fs_b_yx_fsv32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_ref.cl index ba6b519fd75aaf..6607c0963b71a1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_simple_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_simple_ref.cl index 4f2284e1ce8228..7b71e39c361a16 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_simple_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/concatenation_gpu_simple_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv16_imad_1x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv16_imad_1x1.cl index e49bf6069cb3b0..4618f3890bc609 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv16_imad_1x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv16_imad_1x1.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_1x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_1x1.cl index 5a2d3657aec36d..da35aa9bc1ed91 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_1x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_1x1.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_dw.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_dw.cl index 57c7e6de1f4de1..23072a6184e508 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_dw.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_dw.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/imad.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_int8.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_int8.cl index ac3988cd589873..b9fc32bf500ab8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_int8.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv4_int8.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv_16_32_imad_dw.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv_16_32_imad_dw.cl index d34757e193fa60..30177e4798adaa 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv_16_32_imad_dw.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_yx_fsv_16_32_imad_dw.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/imad.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_zyx_fsv16_imad.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_zyx_fsv16_imad.cl index 16d0103aa8cb5e..af0ee8edb58960 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_zyx_fsv16_imad.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_b_fs_zyx_fsv16_imad.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1.cl index 5e7f52a566ac16..27643fec607bf0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_hgemm_buf_16x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_hgemm_buf_16x1.cl index 52e02e52fc819d..25f054e3368b53 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_hgemm_buf_16x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_hgemm_buf_16x1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/gemm_common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_opt.cl index 84a9de373f29c1..1f00b63e219d11 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_1x1_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_depthwise_weights_lwg.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_depthwise_weights_lwg.cl index bebedc07cde242..ef8d3d3e237867 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_depthwise_weights_lwg.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_depthwise_weights_lwg.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_10_12_16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_10_12_16.cl index a4087bbe7ffd2f..c99dddffc124d5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_10_12_16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_10_12_16.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_8_8_16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_8_8_16.cl index 56a80d19bfb0eb..a2dd6544d0a792 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_8_8_16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_direct_8_8_16.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ //#include "include/cnn_common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16.cl index e28ee5dc8af069..3c9005cf4e6e35 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/mmad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl index e2e14eb4e41648..247bcc2d61ab3f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_depthwise.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_depthwise.cl index 7573485a6f569f..8baa596ae1c0f1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_depthwise.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_f16_depthwise.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp16.cl index ee652d2508a83b..c7eac7b36d1222 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp16.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp32.cl index 801df7d09e35f5..df6b5fc227a043 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_gemm_like_fp32.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_iyxo.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_iyxo.cl index a29ee0905f9cf5..9d0208be7c066d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_iyxo.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_iyxo.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_os_iyx_osv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_os_iyx_osv16.cl index 71b776dc4c6599..57d96ec915ad2e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_os_iyx_osv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_os_iyx_osv16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bfyx_f16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bfyx_f16.cl index 5206853232f168..bc118ae788761a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bfyx_f16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bfyx_f16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/mmad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bs_fs_yx_bsv16_fsv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bs_fs_yx_bsv16_fsv16.cl index 5d7b065fa01d74..28399e1c3d9346 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bs_fs_yx_bsv16_fsv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_bs_fs_yx_bsv16_fsv16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_fs_byx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_fs_byx_fsv32.cl index a3afa6853040d7..cd80389e9186ca 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_fs_byx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_bfyx_to_fs_byx_fsv32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32.cl index 8f3f79e1eb75e4..2eb23fb5202401 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_1x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_1x1.cl index 7e9f8e7ccbb632..362ccfc3f7d0af 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_1x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_1x1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_depthwise.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_depthwise.cl index 45c48973cc6833..8b91df8c1f7ab5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_depthwise.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_fs_byx_fsv32_depthwise.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_1x1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_1x1.cl index 42ee40771d7fdc..6cc9007cb8ac79 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_1x1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_1x1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_3x3.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_3x3.cl index c2f60d04fe4caa..ce87e47fa80fab 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_3x3.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_imad_bs_fs_yx_bsv16_fsv16_3x3.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32.cl index d94dbbd0cdc83b..9fc38d0627f550 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32_dw.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32_dw.cl index b679854a712284..bf5d74d4d49aae 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32_dw.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_b_fs_yx_fsv32_dw.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv32.cl index 59c3040ca8818f..ddfda99462a341 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv4.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv4.cl index cfa4f7ceaae991..df6b490e2c55d9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv4.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_mmad_bfyx_to_b_fs_yx_fsv4.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1.cl index e84a1ff3c87368..a10daa2e6db7ba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. // -------------------------------------------------------------------------------------------------------------------------------- // L3_SIMD_4x8 diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1_fused.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1_fused.cl index 79569fce9dc8e9..cbcc1d61cf654d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1_fused.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_2x3_s1_fused.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. // -------------------------------------------------------------------------------------------------------------------------------- // L3_SIMD_4x8 diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_6x3_s1_fused.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_6x3_s1_fused.cl index f7c68ac00bab09..bfabed08d03a7a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_6x3_s1_fused.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_winograd_6x3_s1_fused.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. // -------------------------------------------------------------------------------------------------------------------------------- // L3_SIMD_4x8 diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_ref.cl index 421305c38677da..0a7ba29151565d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp16.cl index 257b344be0a4b2..fd69176dbe1465 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp16.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp32.cl index 5c9b7647e87f1d..496a94c8fbea64 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b16_fp32.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b1_block_multiple_x_fp32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b1_block_multiple_x_fp32.cl index 845bd6d960778b..6b94982513e83a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b1_block_multiple_x_fp32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b1_block_multiple_x_fp32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b8_fp32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b8_fp32.cl index 995c8cc5301cb0..bdf550f4a388c6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b8_fp32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/convolution_gpu_yxfb_yxio_b8_fp32.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/ctc_greedy_decoder_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/ctc_greedy_decoder_ref.cl index 14ee0e6b613bb5..8d382c31b51447 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/ctc_greedy_decoder_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/ctc_greedy_decoder_ref.cl @@ -1,16 +1,7 @@ -// Copyright (C) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include "include/include_all.cl" KERNEL(ctc_greedy_decoder_ref)(const __global INPUT0_TYPE* probabilities diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_partial_sum.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_partial_sum.cl index 57181b36d2ee48..e0fea1036b7133 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_partial_sum.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_partial_sum.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_ref.cl index 7595d3bd2c87b4..7a0cc1425a04ea 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/cum_sum_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_b_fs_zyx_fsv16_dw.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_b_fs_zyx_fsv16_dw.cl index 9b4408a4178aae..f0d84f87050d86 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_b_fs_zyx_fsv16_dw.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_b_fs_zyx_fsv16_dw.cl @@ -1,18 +1,6 @@ -/******************************************************************************* -* Copyright 2020 Intel Corporation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*******************************************************************************/ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// #include "include/include_all.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_bfyx_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_bfyx_opt.cl index 8691930df7825d..05a297852cec3e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_bfyx_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_bfyx_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_along_f_tile_bfx.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_along_f_tile_bfx.cl index 7bc15bd02373cd..12727d0509f01e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_along_f_tile_bfx.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_along_f_tile_bfx.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/fetch.cl" #include "include/imad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_common.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_common.cl index 902b7be23f9142..52826aca3f67be 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_common.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_common.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_ref.cl index 29f8865bedfcf1..1fa014d6955313 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_imad_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/fetch.cl" #include "include/imad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_ref.cl index d87bbafd948ee3..a084e97b05b296 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deconvolution_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_conv.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_conv.cl index c2e54bc651f4f8..0239534d37c9a7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_conv.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_conv.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_interp.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_interp.cl index 592d6818cf01cd..11a4f978f716c8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_interp.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_interp.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_ref.cl index 96cf3a04ec752f..76b97fc845b700 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/deformable_convolution_gpu_bfyx_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_block2_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_block2_opt.cl index 9ce93025c80b70..b6ae24edc35f53 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_block2_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_block2_opt.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_ref.cl index 347d792526d379..546c8bc97db21d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/depth_to_space_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_b_fs_yx_fsv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_b_fs_yx_fsv16.cl index b13ef8a31f1e02..71e9622db3ef22 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_b_fs_yx_fsv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_b_fs_yx_fsv16.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_fs_b_yx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_fs_b_yx_fsv32.cl index 042918bd5dfc1e..772c37dc1256d4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_fs_b_yx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_fs_b_yx_fsv32.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_mixed_byxf_and_fs_b_yx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_mixed_byxf_and_fs_b_yx_fsv32.cl index 2f2deaf3304316..eb36a23e9c3dd0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_mixed_byxf_and_fs_b_yx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_mixed_byxf_and_fs_b_yx_fsv32.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_simple_vload8.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_simple_vload8.cl index bf05fe1b24cbde..55b091f7c7bc6a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_simple_vload8.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/eltwise_simple_vload8.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/embedding_bag_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/embedding_bag_ref.cl index 4410bf113493bf..d8a998d857f192 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/embedding_bag_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/embedding_bag_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/extract_image_patches_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/extract_image_patches_ref.cl index f142f5034d4ab4..23c368b612e7fa 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/extract_image_patches_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/extract_image_patches_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_MMAD.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_MMAD.cl index 3dadc5fe9f9f7b..b8b68fd605ca19 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_MMAD.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_MMAD.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_gemm.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_gemm.cl index 476fe8fef1d580..3dd040303adead 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_gemm.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_gemm.cl @@ -1,19 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_input_spatial.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_input_spatial.cl index 49515614470494..5b18d30f5bcc0e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_input_spatial.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_input_spatial.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_ref.cl index 3db6b00e8df9ff..01225960459553 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_io_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_tiled.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_tiled.cl index e0705cdfcd3131..ed68578732e874 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_tiled.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bf_tiled.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bfyx_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bfyx_ref.cl index c8a6076b15f918..fe52556d725b1f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bfyx_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bfyx_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_af8_vload.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_af8_vload.cl index b6b96bbd75a943..536c6bde1f74ed 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_af8_vload.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_af8_vload.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_b1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_b1.cl index 89eddaea006d28..394a2d8de09405 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_b1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv16_b1.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv8_af8_vload.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv8_af8_vload.cl index bf97a23f119cf7..59c3ad61c71d66 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv8_af8_vload.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_bs_f_bsv8_af8_vload.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8.cl index bb2dd632363bbf..c030634982b49b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8_vload.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8_vload.cl index 3a5fa6ea506529..6626e0b9afd92d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8_vload.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_b8_f8_vload.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_block_fp16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_block_fp16.cl index 5257d6a7f725fa..dd2dd9e2148860 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_block_fp16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_block_fp16.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_ref.cl index f2f8327ab75953..e67abc7eab48a4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_io_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_b8_fp32_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_b8_fp32_ref.cl index 382649af9b710d..b1eb1495523ce1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_b8_fp32_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_b8_fp32_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_ref.cl index 4f59cc9c64b57e..d08be86349ea8f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fb_oi_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fs_byx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fs_byx_fsv32.cl index fceda2c738f141..9e1afb4e4c30cc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fs_byx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_fs_byx_fsv32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_imad.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_imad.cl index 34725d624748a7..ffb262ec342872 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_imad.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_imad.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_yxfb_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_yxfb_ref.cl index 37b6fbcb38455b..49e29af5f2ec41 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_yxfb_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fully_connected_gpu_yxfb_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/reshape_dims.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_1x1_opt_fp32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_1x1_opt_fp32.cl index aaf31ae64b9d8a..2ab51da96eb104 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_1x1_opt_fp32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_1x1_opt_fp32.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_iyxo.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_iyxo.cl index f45cc3f73294d6..d2f9bb1fb8fc50 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_iyxo.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_iyxo.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_os_iyx_osv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_os_iyx_osv16.cl index 0a875815e73054..77d979128bb54b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_os_iyx_osv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_bfyx_os_iyx_osv16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_imad.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_imad.cl index 180c873fb5cedf..85b1e0b23c4df7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_imad.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_imad.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_ref.cl index 341896b3ba4387..4c517d1b7f3c55 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_yxfb_yxio_b16_fp16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_yxfb_yxio_b16_fp16.cl index c25e1d9b72f056..34b3245c77269d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_yxfb_yxio_b16_fp16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/fused_conv_eltwise_gpu_yxfb_yxio_b16_fp16.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/sub_group.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_ref.cl index e7bfaa9b986b76..8f3698629df904 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_tree_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_tree_gpu_ref.cl index 73dba74686c14c..f348fe11b61b7a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_tree_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gather_tree_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8.cl index 5c8ccf10bf42fe..5cd8900cab4368 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/mmad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8_slm.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8_slm.cl index 2aa50278de1235..70cdede878b680 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8_slm.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_mmad_int8_slm.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/mmad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_ref.cl index 000c9b87baa3dc..636daa0006c352 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_tiled_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_tiled_opt.cl index 12aa3a4e223a36..804e42408169ca 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_tiled_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gemm_tiled_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_bwd_data.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_bwd_data.cl index f1535269e31470..bc611187ff0d10 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_bwd_data.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_bwd_data.cl @@ -1,18 +1,6 @@ -/******************************************************************************* -* Copyright 2019-2020 Intel Corporation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*******************************************************************************/ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// #include "include/fetch.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f16.cl index f3c3df04137315..4feb6d033ba869 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f16.cl @@ -1,18 +1,7 @@ -/******************************************************************************* -* Copyright 2019-2020 Intel Corporation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*******************************************************************************/ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + #include "include/include_all.cl" #include "include/unit_type.cl" #include "include/mmad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f32.cl index f081d84cc8b9b4..232f1059a383a2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/gen9_common_conv_fwd_data_f32.cl @@ -1,18 +1,7 @@ -/******************************************************************************* -* Copyright 2019-2020 Intel Corporation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*******************************************************************************/ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + #include "include/include_all.cl" #include "include/unit_type.cl" #include "include/mmad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/generic_eltwise_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/generic_eltwise_ref.cl index f83a5851ca7244..c6360274907ebd 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/generic_eltwise_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/generic_eltwise_ref.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/grn_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/grn_ref.cl index 4e7b2eb1af728c..28b26acc94f795 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/grn_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/grn_ref.cl @@ -1,16 +1,7 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #include "include/include_all.cl" KERNEL(grn_ref)( diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/arg_max_min_common.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/arg_max_min_common.cl index 4ce034e13ab3b7..b812078d4b409a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/arg_max_min_common.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/arg_max_min_common.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /* Index and Value type that holds index and value used in this kernel */ diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/common.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/common.cl index d7af01e934da33..7f8f24538bd746 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/common.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/common.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #if defined(cl_khr_fp16) #pragma OPENCL EXTENSION cl_khr_fp16 : enable diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/data_types.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/data_types.cl index b0ad478ed65f92..95dea0bfa2f9ea 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/data_types.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/data_types.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "mmad.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/detection_output_common.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/detection_output_common.cl index 68016af236e2d9..ffc6e8d75d5a07 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/detection_output_common.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/detection_output_common.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #define PRIOR_BOX_SIZE 4 // Each prior-box consists of [xmin, ymin, xmax, ymax]. #define OUTPUT_ROW_SIZE 7 // Each detection consists of [image_id, label, confidence, xmin, ymin, xmax, ymax]. diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl index 8b685eb66b7070..bcdcbbc2b41e90 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/gemm_common.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/gemm_common.cl index adb981c895476a..713ac6b372696d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/gemm_common.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/gemm_common.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #define GET_COL_8( _block, _col ) \ (float8)( intel_sub_group_shuffle( _block, _col )); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/imad.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/imad.cl index 0dbcedf8621023..c7f0da8e607180 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/imad.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/imad.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ inline int FUNC(imad_SW)(int acc, uchar4 input, char4 weight) __attribute__((overloadable)) { acc += input[0] * weight[0]; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/include_all.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/include_all.cl index cc1c7ea4068142..3efb6b86077d6e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/include_all.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/include_all.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "common.cl" #include "data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/mmad.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/mmad.cl index 40bd275ca63f74..855192717f7b93 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/mmad.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/mmad.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ void FUNC(intel_sub_group_block_write_4)( __local uint* p, uint4 data ) { diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/reshape_dims.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/reshape_dims.cl index 7b7ac6f4cbadfc..34bc3fef3b2e5b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/reshape_dims.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/reshape_dims.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ // ! Huge warning ! // Reshape functions below assume both input and output formats are bfyx, bfzyx, bfwzyx, etc. diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/sub_group.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/sub_group.cl index 84234198fab71d..68f8b18cdf9fbb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/sub_group.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/sub_group.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #if defined(cl_intel_subgroups) #pragma OPENCL EXTENSION cl_intel_subgroups : enable diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/unit_type.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/unit_type.cl index bc0b8bab0f5b25..fba62c463e6fba 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/unit_type.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/unit_type.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "common.cl" #include "data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/vec_typedefs.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/vec_typedefs.cl index 8b50ecbb5e4063..17bee1d4f4a6c1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/vec_typedefs.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/vec_typedefs.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ typedef struct half1 { half s0; } half1; typedef struct half5 { half s0; half s1; half s2; half s3; half s4; } half5; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features.cl index 8aa56fbd920561..ecc21ad8d837a6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features_fsv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features_fsv16.cl index 901e5c65797eac..8201ebb7eab0a3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features_fsv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_multiple_features_fsv16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_ref.cl index 3c40a5cad22a0a..4aa19b9223caa6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_yxfb_b8_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_yxfb_b8_opt.cl index 32aebc25a6552f..28b7972f0204b1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_yxfb_b8_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_across_channel_yxfb_b8_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel.cl index 1a0d988d1f5aab..b82b47b32d205b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel_opt.cl index bdbdc6e2bcb5a3..8c8da428e35801 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_gpu_within_channel_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_ref.cl index e66ab6519825dc..d8ff1735203fe3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_ref.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/common.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_within_channel_byxf_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_within_channel_byxf_opt.cl index b47d0ad10cb55c..846e9b2c963a9b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_within_channel_byxf_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lrn_within_channel_byxf_opt.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_bfyx_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_bfyx_opt.cl index 6cd82aefe6cf45..10f3f5bc2112ea 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_bfyx_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_bfyx_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_ref.cl index cbc5c5ef37a3ca..9855028668e328 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_input_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_timeloop_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_timeloop_ref.cl index 444b4e87e02a16..2c95356a38b6c3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_timeloop_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_dynamic_timeloop_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_elt_gpu_bfyx_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_elt_gpu_bfyx_ref.cl index b888c218b5479d..7758aab9f8aed0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_elt_gpu_bfyx_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_elt_gpu_bfyx_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemm_gpu_bfyx_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemm_gpu_bfyx_ref.cl index 90370bd56eb440..46ca91d33685c9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemm_gpu_bfyx_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemm_gpu_bfyx_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_ff_SIMD16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_ff_SIMD16.cl index 82c3e7fe077bac..5e0cd2ecb693bd 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_ff_SIMD16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_ff_SIMD16.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_hh_SIMD16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_hh_SIMD16.cl index 0be579bc074c08..4bb84d3458bcb2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_hh_SIMD16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/lstm_gemv_gpu_subgroup1x64_bfyx_hh_SIMD16.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/max_unpooling_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/max_unpooling_gpu_ref.cl index 99392c99c61930..94e77fa113fb09 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/max_unpooling_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/max_unpooling_gpu_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad.cl index c334425d3ca62c..a5c866a26f5ad3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/fetch.cl" #include "include/imad.cl" @@ -225,8 +215,11 @@ KERNEL(mvn_var_1)(const __global INPUT0_TYPE* input, #elif MVN_KERNEL_VAR_2 DECLARE_PACKED_ACCUMULATE(accumulate_sum, MEAN_TYPE, MEAN_TYPE, FSV, INPUT_SLICE_PITCH, ITEM_GROUPS, LWS, ACCUMULATE_SUM) - -#define CALC_INVERSE_VARIANCE(sum_diff_sq) native_powr((sum_diff_sq) / ITEMS_NUM + (MEAN_TYPE)EPSILON, -0.5f) +#if defined EPS_OUTSIDE_SQRT + #define CALC_INVERSE_VARIANCE(sum_diff_sq) native_powr(native_sqrt((sum_diff_sq) / ITEMS_NUM) + (MEAN_TYPE)EPSILON, -1.f); +#elif defined EPS_INSIDE_SQRT + #define CALC_INVERSE_VARIANCE(sum_diff_sq) native_powr((sum_diff_sq) / ITEMS_NUM + (MEAN_TYPE)EPSILON, -0.5f) +#endif #if SG_NUM != 1 DECLARE_WG_PACKED_REDUCE_ADD(reduce_var_across_sg, MEAN_TYPE, FSV, SG_NUM, CALC_INVERSE_VARIANCE) #else @@ -281,7 +274,11 @@ DECLARE_SG_PACKED_REDUCE_ADD(reduce_mean, MEAN_TYPE, FSV, CALC_MEAN) #define ACCUMULATE_SUM_SQ_DEV(curr, next, idx, mean) ACCUMULATE_SUM_SQ(curr, next - intel_sub_group_shuffle(mean, idx), idx) DECLARE_PACKED_ACCUMULATE_EARGS(accumulate_sum_sq_dev, MEAN_TYPE, INPUT0_TYPE, FSV, INPUT_SLICE_PITCH, ITEMS_NUM, LWS, ACCUMULATE_SUM_SQ_DEV, EXTRA_ARGS_DECL, EXTRA_ARGS) -#define CALC_INVERSE_VARIANCE(sum_diff_sq) native_powr((sum_diff_sq) / ITEMS_NUM + (MEAN_TYPE)EPSILON, -0.5f) +#if defined EPS_OUTSIDE_SQRT + #define CALC_INVERSE_VARIANCE(sum_diff_sq) native_powr(native_sqrt((sum_diff_sq) / ITEMS_NUM) + (MEAN_TYPE)EPSILON, -1.f); +#elif defined EPS_INSIDE_SQRT + #define CALC_INVERSE_VARIANCE(sum_diff_sq) native_powr((sum_diff_sq) / ITEMS_NUM + (MEAN_TYPE)EPSILON, -0.5f) +#endif #if SG_NUM != 1 DECLARE_WG_PACKED_REDUCE_ADD(reduce_inverse_variance, MEAN_TYPE, FSV, SG_NUM, CALC_INVERSE_VARIANCE) #else diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_accumulate.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_accumulate.cl index fbbc8a24f72509..7ae45dd5f0da86 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_accumulate.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_accumulate.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_reduce.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_reduce.cl index 16f8eb322740fe..dafd6e47b37fb8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_reduce.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_b_fs_yx_fsv16_imad_reduce.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_bfyx_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_bfyx_opt.cl index d67d425e5c50bf..04d7cc8e2b5ed6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_bfyx_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_bfyx_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" @@ -28,7 +18,7 @@ KERNEL (mvn_gpu_bfyx_opt)( const uint workers_per_data_set = LWS; //how many WI participates in processing of one data set const uint in_data_set_idx = get_global_id(0); //this WI's id in group of items processing single data set const uint data_set_size = DATA_SET_SIZE; //how many elements are in one data set - const uint data_sets_count = DATA_SETS_COUNT; //how many data sets are in the processing payload + const uint data_sets_count = DATA_SETS_COUNT; //how many data sets are in the processing payload const uint data_set_offset = data_set_idx * data_set_size; const uint my_data_offset = data_set_offset + in_data_set_idx; @@ -112,7 +102,12 @@ KERNEL (mvn_gpu_bfyx_opt)( my_variance += lg_storage[i]; my_variance /= data_set_size; + +# if defined EPS_OUTSIDE_SQRT + lg_storage[0] = native_powr(native_sqrt(my_variance) + (float)EPSILON, -1.f); +# elif defined EPS_INSIDE_SQRT lg_storage[0] = native_powr(my_variance + (float)EPSILON, -0.5f); +# endif } barrier(CLK_LOCAL_MEM_FENCE); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_accross_channels.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_accross_channels.cl index 4f3193f173e7c3..e47701bb45b6ef 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_accross_channels.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_accross_channels.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/fetch.cl" #include "include/data_types.cl" @@ -155,7 +145,11 @@ KERNEL (mvn_gpu_ref_accross_channels)( //normalize variance variance /= INPUT0_FEATURE_NUM * INPUT0_SIZE_Z * INPUT0_SIZE_Y * INPUT0_SIZE_X; +#if defined EPS_OUTSIDE_SQRT + variance = native_powr(native_sqrt(variance) + (float)EPSILON, -1.f); +#elif defined EPS_INSIDE_SQRT variance = native_powr(variance + (float)EPSILON, -0.5f); +#endif input_idx = input_first; for (uint f = 0; f < INPUT0_FEATURE_NUM; f++) diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_within_channels.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_within_channels.cl index 9f3543530f5027..48d26b89eac8fc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_within_channels.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/mvn_gpu_ref_within_channels.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/fetch.cl" #include "include/data_types.cl" @@ -137,7 +127,11 @@ KERNEL (mvn_gpu_ref_within_channels)( //normalize variance variance /= INPUT0_SIZE_Z * INPUT0_SIZE_Y * INPUT0_SIZE_X; +#if defined EPS_OUTSIDE_SQRT + variance = native_powr(native_sqrt(variance) + (float)EPSILON, -1.f); +#elif defined EPS_INSIDE_SQRT variance = native_powr(variance + (float)EPSILON, -0.5f); +#endif input_idx = input_first; for (uint z = 0; z < INPUT0_SIZE_Z; z++) diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_across_spatial_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_across_spatial_ref.cl index c90862f3f1c06b..2e8e23a0c77e0c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_across_spatial_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_across_spatial_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_within_spatial_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_within_spatial_ref.cl index 942e22962b1045..757b49ac898d5a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_within_spatial_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/normalize_gpu_within_spatial_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/one_hot_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/one_hot_ref.cl index dff4b88ad140cd..eaf279c93bf521 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/one_hot_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/one_hot_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_ref.cl index 58eb1dab5121da..8d6c530484b234 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_tile_8x8_4x4.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_tile_8x8_4x4.cl new file mode 100644 index 00000000000000..f3a00aa067c761 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_tile_8x8_4x4.cl @@ -0,0 +1,150 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "include/fetch.cl" +#include "include/common.cl" +#include "include/data_types.cl" + +#define unroll_for __attribute__((opencl_unroll_hint)) for +#define CEIL_DIV(A, B) (((A) + (B) - 1) / (B)) +#define INPUT0_GET_TILED_INDEX(ORDER) INPUT0_GET_INDEX(ORDER) +#define OUTPUT_GET_TILED_INDEX(ORDER) OUTPUT_GET_INDEX(ORDER) +KERNEL (permute_tile_8x8_4x4)( + const __global INPUT0_TYPE* input, + __global OUTPUT_TYPE* output +#if HAS_FUSED_OPS_DECLS + , FUSED_OPS_DECLS +#endif + ) +{ + const uint x = get_global_id(0); + const uint f = (uint)get_global_id(2) % NFEATURE_TILES; + const uint b = (uint)get_global_id(2) / NFEATURE_TILES; + +#if INPUT0_DIMS == 4 + //|dim2:bf|dim1:y|dim0:x + const uint y = get_global_id(1); +#elif INPUT0_DIMS == 5 + //|dim2:bf|dim1:yz|dim0:x + const uint z = get_global_id(1) / INPUT0_SIZE_Y; + const uint y = get_global_id(1) % INPUT0_SIZE_Y; +#elif INPUT0_DIMS == 6 + //|dim2:bf|dim1:wyz|dim0:x + const uint y = get_global_id(1) % INPUT0_SIZE_Y; + const uint z = get_global_id(1) / INPUT0_SIZE_Y % INPUT0_SIZE_Z; + const uint w = get_global_id(1) / (INPUT0_SIZE_Y * INPUT0_SIZE_Z) % INPUT0_SIZE_W; +#endif + __local OUTPUTVTYPE transpose_buf[TRANS_BUF_SIZE]; + + int local_id = get_local_id(0) * get_local_size(2) * get_local_size(1) + + get_local_id(1) * get_local_size(2) + + get_local_id(2); + + int local_buf_offset = local_id * LOCAL_BUF_STRIDE; + + if (NORMAL_TILE_CONDITION) { + for (int lh = 0; lh < TILE_SIZE; ++lh) { + // vectorwidth == tilesize + // read + unsigned int input_idx = INPUT0_GET_TILED_INDEX(INPUT0_TILED_ORDER); + INPUTVTYPE read_data = AS_INPUTVTYPE(VLOAD(0, input + input_idx)); + // transpose + unsigned int dst_w = lh / TILE_SIZE; + unroll_for (int i = 0; i < TILE_SIZE; ++i) { + unsigned int dst = local_buf_offset + i; +#if HAS_FUSED_OPS + INPUT0_TYPE input_var = read_data[i]; + FUSED_OPS; + transpose_buf[dst][lh] = FUSED_OPS_RESULT; +#else + transpose_buf[dst][lh] = ACTIVATION(read_data[i], ACTIVATION_PARAMS); +#endif + } + } + // write to ddr + for(int lh = 0; lh < TILE_SIZE; ++lh) { + unsigned int output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lh], 0, output + output_idx); + } + } +#ifdef F_REMAINDER_ITEM + else if (F_REMAINDER_CONDITION) { + for (int lh = 0; lh < F_REMAINDER_SIZE; ++lh) { + // read + unsigned int input_idx = INPUT0_GET_TILED_INDEX(INPUT0_TILED_ORDER); + INPUTVTYPE read_data = AS_INPUTVTYPE(VLOAD(0, input + input_idx)); + // transpose + unroll_for (int i = 0; i < TILE_SIZE; ++i) { +#if HAS_FUSED_OPS + INPUT0_TYPE input_var = read_data[i]; + FUSED_OPS; + transpose_buf[local_buf_offset + i][lh] = FUSED_OPS_RESULT; +#else + transpose_buf[local_buf_offset + i][lh] = ACTIVATION(read_data[i], ACTIVATION_PARAMS); +#endif + } + } + // write to ddr + for (int lh = 0; lh < TILE_SIZE; ++lh) { + unsigned int output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + for ( int i = 0; i < F_REMAINDER_SIZE; ++i) { + output[output_idx + i] = transpose_buf[local_buf_offset + lh][i]; + } + } + } +#endif +#ifdef X_REMAINDER_ITEM + else if (X_REMAINDER_CONDITION) { + // read + for (int lh = 0; lh < TILE_SIZE; ++lh) { + // read + unsigned int input_idx = INPUT0_GET_TILED_INDEX(INPUT0_TILED_ORDER); + INPUTVTYPE read_data = AS_INPUTVTYPE(VLOAD(0, input + input_idx)); + // transpose + unroll_for (int i = 0; i < X_REMAINDER_SIZE; ++i) { +#if HAS_FUSED_OPS + INPUT0_TYPE input_var = read_data[i]; + FUSED_OPS; + transpose_buf[local_buf_offset + i][lh] = FUSED_OPS_RESULT; +#else + transpose_buf[local_buf_offset + i][lh] = ACTIVATION(read_data[i], ACTIVATION_PARAMS); +#endif + } + } + // write to ddr + for (int lh = 0; lh < X_REMAINDER_SIZE; ++lh) { + unsigned int output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lh], 0, output + output_idx); + } + } +#endif +#if defined(X_REMAINDER_ITEM) && defined(F_REMAINDER_ITEM) + else if (f == F_REMAINDER_ITEM && x == X_REMAINDER_ITEM) { + // point by point + for (int lh = 0; lh < F_REMAINDER_SIZE; ++lh) { + // read + unsigned int input_idx = INPUT0_GET_TILED_INDEX(INPUT0_TILED_ORDER); + INPUTVTYPE read_data = AS_INPUTVTYPE(VLOAD(0, input + input_idx)); + // transpose + for (int i = 0; i < X_REMAINDER_SIZE; ++i) { + unsigned int dst = local_buf_offset + i; +#if HAS_FUSED_OPS + INPUT0_TYPE input_var = read_data[i]; + FUSED_OPS; + transpose_buf[local_buf_offset + i][lh] = FUSED_OPS_RESULT; +#else + transpose_buf[local_buf_offset + i][lh] = ACTIVATION(read_data[i], ACTIVATION_PARAMS); +#endif + } + } + // write to ddr + for(int lh = 0; lh < X_REMAINDER_SIZE; ++lh) { + unsigned int output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + for ( int i = 0; i < F_REMAINDER_SIZE; ++i) { + output[output_idx + i] = transpose_buf[local_buf_offset + lh][i]; + } + } + } +#endif +} diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_tile_8x8_4x4_fsv.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_tile_8x8_4x4_fsv.cl new file mode 100644 index 00000000000000..f2301cccd059de --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/permute_tile_8x8_4x4_fsv.cl @@ -0,0 +1,156 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "include/fetch.cl" +#include "include/common.cl" +#include "include/data_types.cl" + +#define unroll_for __attribute__((opencl_unroll_hint)) for +#define CEIL_DIV(A, B) (((A) + (B) - 1) / (B)) +#define INPUT0_GET_TILED_INDEX(ORDER) INPUT0_GET_INDEX(ORDER) +#define OUTPUT_GET_TILED_INDEX(ORDER) OUTPUT_GET_INDEX(ORDER) +#define YZ_REMAINDER_LESS_THAN_TILE_SIZE ((YZ_REMAINDER_CONDITION) && (YZ_REMAINDER_SIZE < ( TILE_SIZE /2))) +#define YZ_REMAINDER_MORE_THAN_TILE_SIZE ((YZ_REMAINDER_CONDITION) && (YZ_REMAINDER_SIZE >= ( TILE_SIZE /2))) + +#define INPUTVTYPE CAT(INPUT0_TYPE, TILE_SIZE) +#define OUTPUTVTYPE CAT(OUTPUT_TYPE, TILE_SIZE) +#define VLOAD CAT(vload, TILE_SIZE) +#define VSTORE CAT(vstore, TILE_SIZE) +#define AS_INPUTVTYPE CAT(as_, INPUTVTYPE) + +#define GET_GLOBAL_ID(IDX) ((uint)get_global_id(IDX)) +#define GET_LOCAL_ID(IDX) ((uint)get_local_id(IDX)) +#define GET_LOCAL_SIZE(IDX) ((uint)get_local_size(IDX)) + +KERNEL (permute_tile_8x8_4x4_fsv)( + const __global INPUT0_TYPE* input, + __global OUTPUT_TYPE* output +#if HAS_FUSED_OPS_DECLS + , FUSED_OPS_DECLS +#endif + ) +{ +#if INPUT0_DIMS == 4 + const uint y = (GET_GLOBAL_ID(1) / INPUT0_SIZE_X) * TILE_SIZE; + const uint x = (GET_GLOBAL_ID(1)) % INPUT0_SIZE_X; +#elif INPUT0_DIMS == 5 + const uint z = (GET_GLOBAL_ID(1)/ (INPUT0_SIZE_X * INPUT0_SIZE_Y)) * TILE_SIZE; + const uint yx = GET_GLOBAL_ID(1) % (INPUT0_SIZE_X * INPUT0_SIZE_Y); + const uint y = yx / INPUT0_SIZE_X ; + const uint x = yx % INPUT0_SIZE_X; +#endif + const uint fsv = GET_GLOBAL_ID(0) * TILE_SIZE; + const uint fs = GET_GLOBAL_ID(2) % INPUT0_FEATURE_SLICE_NUM; + const uint b = GET_GLOBAL_ID(2) / INPUT0_FEATURE_SLICE_NUM; + const uint f = fsv + fs * FSV_ALIGNMENT; + + __local OUTPUTVTYPE transpose_buf[TRANS_BUF_SIZE]; + const uint local_id = GET_LOCAL_ID(0) * GET_LOCAL_SIZE(2) * GET_LOCAL_SIZE(1) + + GET_LOCAL_ID(1) * GET_LOCAL_SIZE(2) + + GET_LOCAL_ID(2); + const uint local_buf_offset = local_id * TILE_SIZE; + + if (F_NO_REMAINDER_CONDITION) { + // read and transpose + unroll_for (uint lh = 0; lh < TILE_SIZE; ++lh) { + const uint input_idx = INPUT0_GET_TILED_INDEX(INPUT0_TILED_ORDER); + INPUTVTYPE read_data = AS_INPUTVTYPE(VLOAD(0, input + input_idx)); + + unroll_for (uint lw = 0; lw < TILE_SIZE; ++lw) { + const uint dst = local_buf_offset + lw; +#if HAS_FUSED_OPS + INPUT0_TYPE input_var = read_data[lw]; + FUSED_OPS; + transpose_buf[dst][lh] = FUSED_OPS_RESULT; +#else + transpose_buf[dst][lh] = ACTIVATION(read_data[lw], ACTIVATION_PARAMS); +#endif + } + } + // write to ddr +#ifdef YZ_REMAINDER_CONDITION + if (YZ_REMAINDER_LESS_THAN_TILE_SIZE) { + // copy one by one when z % TILE_SIZE < TILE_SIZE/2 + unroll_for (uint lw = 0; lw < TILE_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + unroll_for (uint lh = 0; lh < YZ_REMAINDER_SIZE; ++lh) { + output[output_idx + lh] = transpose_buf[local_buf_offset + lw][lh]; + } + } + } else if (YZ_REMAINDER_MORE_THAN_TILE_SIZE) { + // use vstore and fill zero when z % TILE_SIZE > TILE_SIZE/2 + unroll_for (uint lw = 0; lw < TILE_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lw], 0, output + output_idx); + unroll_for (uint lh = YZ_REMAINDER_SIZE; lh < TILE_SIZE; ++lh) { + output[output_idx + lh] = 0.f; + } + } + } else if (YZ_NO_REMAINDER_CONDITION) { + // use vstore when z % TILE_SIZE == 0 + unroll_for (uint lw = 0; lw < TILE_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lw], 0, output + output_idx); + } + } +#else + unroll_for (uint lw = 0; lw < TILE_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lw], 0, output + output_idx); + } +#endif + } +#ifdef F_REMAINDER_CONDITION + else if (F_REMAINDER_CONDITION) { + // read and transpose + unroll_for (uint lh = 0; lh < TILE_SIZE; ++lh) { + const uint input_idx = INPUT0_GET_TILED_INDEX(INPUT0_TILED_ORDER); + INPUTVTYPE read_data = AS_INPUTVTYPE(VLOAD(0, input + input_idx)); + unroll_for (uint lw = 0; lw < F_REMAINDER_SIZE; ++lw) { + uint dst = local_buf_offset + lw; + #if HAS_FUSED_OPS + INPUT0_TYPE input_var = read_data[lw]; + FUSED_OPS; + transpose_buf[dst][lh] = FUSED_OPS_RESULT; + #else + transpose_buf[dst][lh] = ACTIVATION(read_data[lw], ACTIVATION_PARAMS); + #endif + } + } + // write to ddr +#ifdef YZ_REMAINDER_CONDITION + if (YZ_REMAINDER_LESS_THAN_TILE_SIZE) { + // copy one by one when z % TILE_SIZE < TILE_SIZE/2 + unroll_for (uint lw = 0; lw < F_REMAINDER_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + unroll_for (uint lh = 0; lh < YZ_REMAINDER_SIZE; ++lh) { + output[output_idx + lh] = transpose_buf[local_buf_offset + lw][lh]; + } + } + } else if (YZ_REMAINDER_MORE_THAN_TILE_SIZE) { + // use vstore and fill zero when z % TILE_SIZE > TILE_SIZE/2 + unroll_for (uint lw = 0; lw < F_REMAINDER_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lw], 0, output + output_idx); + // zero fill for unaligned + unroll_for (uint lh = YZ_REMAINDER_SIZE; lh < TILE_SIZE; ++lh) { + output[output_idx + lh] = 0.f; + } + } + } else if (YZ_NO_REMAINDER_CONDITION) { + // use vstore when z % TILE_SIZE == 0 + unroll_for (uint lw = 0; lw < F_REMAINDER_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lw], 0, output + output_idx); + } + } +#else + unroll_for (uint lw = 0; lw < F_REMAINDER_SIZE; ++lw) { + const uint output_idx = OUTPUT_GET_TILED_INDEX(OUTPUT_TILED_ORDER); + VSTORE(transpose_buf[local_buf_offset + lw], 0, output + output_idx); + } +#endif + } +#endif +} diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_average_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_average_opt.cl index a10c90a68c587b..fc4ba38c41b759 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_average_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_average_opt.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_yx_fsv4.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_yx_fsv4.cl index 003556bc2f55ab..80e969c082022c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_yx_fsv4.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_yx_fsv4.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_zyx_fsv16_imad.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_zyx_fsv16_imad.cl index ed8b6e846260d3..2311a85c0b0091 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_zyx_fsv16_imad.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_b_fs_zyx_fsv16_imad.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bfyx_block_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bfyx_block_opt.cl index 960d4933ddf03e..bede5078ef31ad 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bfyx_block_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bfyx_block_opt.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_blocked.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_blocked.cl index 92ad4682d3d627..40dc127d49eee3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_blocked.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_blocked.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bs_fs_yx_bsv16_fsv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bs_fs_yx_bsv16_fsv16.cl index df48c22d66be27..5e1907c6e9d254 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bs_fs_yx_bsv16_fsv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bs_fs_yx_bsv16_fsv16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bsv16_fsv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bsv16_fsv16.cl index c0fb62e8e050e0..cd79b9ec2dfea8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bsv16_fsv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_bsv16_fsv16.cl @@ -1,18 +1,7 @@ -/******************************************************************************* -* Copyright (c) 2020 Intel Corporation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*******************************************************************************/ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + #include "include/include_all.cl" #define INPUT0_SIZE_X_WITH_PADDING (INPUT0_PAD_BEFORE_SIZE_X + INPUT0_SIZE_X + INPUT0_PAD_AFTER_SIZE_X) diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_opt.cl index 54bcab6d1b5b96..f789fe45c7e548 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_opt.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_padding_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_padding_opt.cl index 72a5a1c4c770af..4e4df49427a7bb 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_padding_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_byxf_padding_opt.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_fs_b_yx_fsv32.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_fs_b_yx_fsv32.cl index bec60b14b9e797..1c3fc9fdd3a264 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_fs_b_yx_fsv32.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_fs_b_yx_fsv32.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_int8_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_int8_ref.cl index 572b29a24f8494..1219fed70e61df 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_int8_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_int8_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_ref.cl index 098d3b54213f7a..ad918b6ca1edf4 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pooling_gpu_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pyramid_roi_align_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pyramid_roi_align_gpu_ref.cl index c6b3ae3601b934..8b33ea1bd43a1f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pyramid_roi_align_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/pyramid_roi_align_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_ref.cl index b9736a1af2c74a..8d665ef8c88982 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_scale_shift_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_scale_shift_opt.cl index 46a41ffbcebae8..6fb7718428435c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_scale_shift_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/quantize_gpu_scale_shift_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_gpu_b_fs_yx_fsv16.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_gpu_b_fs_yx_fsv16.cl index 52a83881656233..84cf2021fb6eca 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_gpu_b_fs_yx_fsv16.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_gpu_b_fs_yx_fsv16.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" @@ -160,9 +150,17 @@ KERNEL(reduce_fsv16)( #endif ) { +#if IS_REDUCE_XY + __local ACCUMULATOR_TYPE lg_storage[SIMD][BLOCK_Y_NUM]; + const uint lid0 = (uint)get_local_id(0); + const uint lid1 = (uint)get_local_id(1); + const uint x = 0; + const uint y = 0; +#else const uint xy = (uint)get_global_id(1) * READ_OFFSET; const uint x = xy % ALIGN(COMMON_OUTPUT_SIZE_X, READ_OFFSET); const uint y = xy / ALIGN(COMMON_OUTPUT_SIZE_X, READ_OFFSET); +#endif const uint bf = (uint)get_global_id(2) * SIMD; const uint b = bf / ALIGN(COMMON_OUTPUT_FEATURE_NUM, SIMD); const uint f = bf % ALIGN(COMMON_OUTPUT_FEATURE_NUM, SIMD); @@ -225,8 +223,13 @@ KERNEL(reduce_fsv16)( #endif #if REDUCE_Y + #if IS_REDUCE_XY + const uint y_out = (uint)get_local_id(1) * BLOCK_Y_SIZE; + const uint y_max_val = min((uint)(y_out + BLOCK_Y_SIZE), (uint)INPUT0_SIZE_Y); + #else const uint y_out = 0; const uint y_max_val = INPUT0_SIZE_Y; + #endif #else const uint y_out = SIZE_Y_IDX_COMP(linear_idx); const uint y_max_val = y_out + 1; @@ -290,10 +293,30 @@ uint offset = batch_out * input_batch_pitch + ((feature_out + FSV - 1) / FSV) * offset += input_batch_pitch - ((((feature_max_val - feature_out) + FSV - 1) / FSV) * input_fs_pitch); } +#if IS_REDUCE_XY + lg_storage[lid0][lid1] = acc; + + barrier(CLK_LOCAL_MEM_FENCE); + + if (lid1 != 0) + return; + + #if REDUCE_SUM_SQUARE_MODE || REDUCE_L2_MODE || REDUCE_LOG_SUM_MODE || REDUCE_LOG_SUM_EXP_MODE + acc = INIT_VAL; + unroll_for (uint i = 0; i < BLOCK_Y_NUM; i++) { + acc += lg_storage[lid0][i]; + } + #else + acc = lg_storage[lid0][0]; + unroll_for (uint i = 1; i < BLOCK_Y_NUM; i++) { + acc = FUNC_CALL(apply_reduce)(acc, lg_storage[lid0][i]); + } + #endif +#endif + FINAL_ACCUMULATOR_TYPE final_acc; acc = FUNC_CALL(sub_group_reduce)(acc); final_acc = FUNC_CALL(final_reduce)(TO_FINAL_ACCUMULATOR_TYPE(acc)); - OUTPUT_TYPE final_result; ACTIVATION_TYPE reduce_result = TO_ACTIVATION_TYPE(final_acc); #if HAS_FUSED_OPS diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_ref.cl index 569e3ab95744bf..6c7f8cf997cffc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reduce_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/region_yolo_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/region_yolo_gpu_ref.cl index de62864f8b81a8..366e1d22586ff0 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/region_yolo_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/region_yolo_gpu_ref.cl @@ -1,105 +1,80 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - -#include "include/common.cl" -#include "include/data_types.cl" -#define IW INPUT0_SIZES[0] -#define IH INPUT0_SIZES[1] -#define IC INPUT0_SIZES[2] -#define IB INPUT0_SIZES[3] +#include "include/fetch.cl" -inline UNIT_TYPE FUNC(logistic_activate)(UNIT_TYPE x) { +inline INPUT0_TYPE FUNC(logistic_activate)(INPUT0_TYPE x) { return 1. / (1. + exp(-x)); } -inline int FUNC(entry_index)(int width, int height, int coords, int classes, - int outputs, int batch, int location, - int entry) { - int n = location / (width * height); - int loc = location % (width * height); - return batch * outputs + n * width * height * (coords + classes + 1) + - entry * width * height + loc; +inline int FUNC(output_index)(int batch, int region_num, int x, int y, int xy, int feature_offset) { +#if DO_SOFTMAX + return OUTPUT_GET_INDEX(batch, feature_offset * INPUT0_SIZE_X * INPUT0_SIZE_Y + xy, 1, 1); +#else + return OUTPUT_GET_INDEX(batch, feature_offset, y, x); +#endif } -#if DO_SOFTMAX -inline void FUNC(softmax_generic)(const __global UNIT_TYPE* src_data, __global UNIT_TYPE* dst_data, - int B, int C, int W, int H, int i) +KERNEL (region_yolo_ref)(const __global INPUT0_TYPE* input, __global OUTPUT_TYPE* output) { - for (int b = 0; b < B; b++) { - UNIT_TYPE max = src_data[b*C*H*W + i]; - for (int c = 0; c < C; c++) { - UNIT_TYPE val = src_data[b*C*H*W + c*H*W + i]; - if (val > max) max = val; - } + int xy = get_global_id(0); + int region_num = get_global_id(1); + int batch = get_global_id(2); + int x_index = xy % INPUT0_SIZE_X; + int y_index = (xy / INPUT0_SIZE_X) % (INPUT0_SIZE_Y); - UNIT_TYPE expSum = 0; - for (int c = 0; c < C; c++) { - dst_data[b*C*H*W + c*H*W + i] = exp(src_data[b*C*H*W + c*H*W + i] - max); - expSum += dst_data[b*C*H*W + c*H*W + i]; - } + /// [x, y, width, height, objectness score, class score] + /// x,y + int region_offset = region_num * (COORDS + CLASSES + 1); + int in_i = INPUT0_GET_INDEX(batch, 0 + region_offset, y_index, x_index); + int out_i = FUNC_CALL(output_index)(batch, region_num, x_index, y_index, xy, 0 + region_offset); + output[out_i] = FUNC_CALL(logistic_activate)(input[in_i]); - for (int c = 0; c < C; c++) { - dst_data[b*C*H*W + c*H*W + i] = dst_data[b*C*H*W + c*H*W + i] / expSum; - } - } -} -#endif + in_i = INPUT0_GET_INDEX(batch, 1 + region_offset, y_index, x_index); + out_i = FUNC_CALL(output_index)(batch, region_num, x_index, y_index, xy, 1 + region_offset); + output[out_i] = FUNC_CALL(logistic_activate)(input[in_i]); -KERNEL (region_yolo_ref)(const __global UNIT_TYPE* input, __global UNIT_TYPE* output) -{ - int x = get_global_id(0); + /// width,height + in_i = INPUT0_GET_INDEX(batch, 2 + region_offset, y_index, x_index); + out_i = FUNC_CALL(output_index)(batch, region_num, x_index, y_index, xy, 2 + region_offset); + output[out_i] = input[in_i]; -#if DO_SOFTMAX - #define ACTUAL_NUM (NUM) - #define CONF_CLASSES (1) -#else - #define ACTUAL_NUM (MASK_SIZE) - #define CONF_CLASSES (CLASSES+1) -#endif - #define INPUTS_COUNT (IH * IW * ACTUAL_NUM * (CLASSES + COORDS + 1)) + in_i = INPUT0_GET_INDEX(batch, 3 + region_offset, y_index, x_index); + out_i = FUNC_CALL(output_index)(batch, region_num, x_index, y_index, xy, 3 + region_offset); + output[out_i] = input[in_i]; - for (int b = 0; b < IB; b++) { - for (int n = 0; n < ACTUAL_NUM; n++) { - // coords: x/y - int index = FUNC_CALL(entry_index)(IW, IH, COORDS, CLASSES, INPUTS_COUNT, b, n * IW * IH, 0); - int i = index + 2 * x; - output[i] = FUNC_CALL(logistic_activate)(input[i]); - output[i+1] = FUNC_CALL(logistic_activate)(input[i+1]); + /// objectness score + in_i = INPUT0_GET_INDEX(batch, COORDS + region_offset, y_index, x_index); + out_i = FUNC_CALL(output_index)(batch, region_num, x_index, y_index, xy, COORDS + region_offset); + output[out_i] = FUNC_CALL(logistic_activate)(input[in_i]); - // coords: w/h: directly copy? - index = FUNC_CALL(entry_index)(IW, IH, COORDS, CLASSES, INPUTS_COUNT, b, n * IW * IH, 2); - i = index + 2 * x; - output[i] = input[i]; - output[i+1] = input[i+1]; + /// class score(confidence) +#if DO_SOFTMAX + in_i = INPUT0_GET_INDEX(batch, COORDS + 1 + region_offset, y_index, x_index); + INPUT0_TYPE max_value = input[in_i]; + for (int j = 1; j < CLASSES; j++) { + in_i = INPUT0_GET_INDEX(batch, COORDS + 1 + j + region_offset, y_index, x_index); + max_value = max(max_value, input[in_i]); + } - // confidence - index = FUNC_CALL(entry_index)(IW, IH, COORDS, CLASSES, INPUTS_COUNT, b, n * IW * IH, COORDS); - for (int j = 0; j < CONF_CLASSES; j++) - { - i = index + x + j*IH*IW; - output[i] = FUNC_CALL(logistic_activate)(input[i]); - } - } + OUTPUT_TYPE expSum = 0; + for (int j = 0; j < CLASSES; j++) { + in_i = INPUT0_GET_INDEX(batch, COORDS + 1 + j + region_offset, y_index, x_index); + out_i = FUNC_CALL(output_index)(batch, region_num, x_index, y_index, xy, COORDS + 1 + j + region_offset); + output[out_i] = exp(input[in_i] - max_value); + expSum += output[out_i]; } -#if DO_SOFTMAX - // the probability of classes - int index = FUNC_CALL(entry_index)(IW, IH, COORDS, CLASSES, INPUTS_COUNT, 0, 0, COORDS + 1); - int batch_offset = INPUTS_COUNT / NUM; - for (int b = 0; b < IB * NUM; b++) - FUNC_CALL(softmax_generic)(input + index + b * batch_offset, output + index + b * batch_offset, - 1, CLASSES, IH, IW, x); + for (int j = 0; j < CLASSES; j++) { + out_i = FUNC_CALL(output_index)(batch, region_num, x_index, y_index, xy, COORDS + 1 + j + region_offset); + output[out_i] /= expSum; + } +#else + for (int j = 0; j < CLASSES; j++) + { + in_i = INPUT0_GET_INDEX(batch, COORDS + 1 + j + region_offset, y_index, x_index); + output[in_i] = FUNC_CALL(logistic_activate)(input[in_i]); + } #endif } diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_biplanar_nv12.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_biplanar_nv12.cl index 81c33bb034804e..8fc4d8085b66cc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_biplanar_nv12.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_biplanar_nv12.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/reshape_dims.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data.cl index acb9f6d861864a..cb0b6ae7838a61 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/reshape_dims.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_binary.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_binary.cl index ba2fdc2d5a28b6..1d97a8506c138c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_binary.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_binary.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/reshape_dims.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_fast_b1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_fast_b1.cl index 45c1ff650de9a8..4d2f5dc6f3678b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_fast_b1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_fast_b1.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/fetch.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_to_yxfb_batched.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_to_yxfb_batched.cl index f6014c62845b14..2f0098d23df9e3 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_to_yxfb_batched.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_data_to_yxfb_batched.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/reshape_dims.cl" #include "include/fetch.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_from_winograd_2x3_s1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_from_winograd_2x3_s1.cl index 470d2737a0f9c7..db5bb17630a70c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_from_winograd_2x3_s1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_from_winograd_2x3_s1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. // -------------------------------------------------------------------------------------------------------------------------------- // Convert the results using the inverse F(2,3) Winograd transform. diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_fs_b_yx_fsv32_to_bfyx.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_fs_b_yx_fsv32_to_bfyx.cl index 233a8c6c383b40..4de5783cc5ff6e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_fs_b_yx_fsv32_to_bfyx.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_fs_b_yx_fsv32_to_bfyx.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/fetch.cl" #include "include/unit_type.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_to_winograd_2x3_s1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_to_winograd_2x3_s1.cl index 6d8b1f09efd642..caca7db7f5856b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_to_winograd_2x3_s1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_to_winograd_2x3_s1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. // -------------------------------------------------------------------------------------------------------------------------------- // Convert the signal using the forward F(2,3) Winograd transform. diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights.cl index d42d438f7452fd..6a5cb202c34ad6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/fetch.cl" #include "include/reshape_dims.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_binary.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_binary.cl index d013dcd643c6ec..dd029354704c3c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_binary.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_binary.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/fetch.cl" #include "include/reshape_dims.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_2d_c4_fyx_b.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_2d_c4_fyx_b.cl index 699162d99998d6..5a18d35f6d56d7 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_2d_c4_fyx_b.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_2d_c4_fyx_b.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_winograd_6x3_s1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_winograd_6x3_s1.cl index f83cc6e7119999..d7454850fa62b9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_winograd_6x3_s1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_image_winograd_6x3_s1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_opt.cl index bcb4baa0bacd9f..a30c9da2124af8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_opt.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_2x3_s1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_2x3_s1.cl index dab829e7371b86..deb9b3d95c1a2e 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_2x3_s1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_2x3_s1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_6x3_s1.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_6x3_s1.cl index 6fb60e34f1cdd6..20a84cc2c6baea 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_6x3_s1.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorder_weights_winograd_6x3_s1.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorg_yolo_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorg_yolo_gpu_ref.cl index 47bdf2ae40e370..a72e5527d7a972 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorg_yolo_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reorg_yolo_gpu_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_opt.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_opt.cl index 60208944b60a36..829656d0ef5c54 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_opt.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_opt.cl @@ -1,16 +1,6 @@ -// Copyright (C) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_ref.cl index 1e871aa66a953b..536abd56b7f759 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/resample_ref.cl @@ -1,16 +1,6 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reshape_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reshape_ref.cl index f07845a3317faf..064867f8c4fdde 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reshape_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reshape_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reverse_sequence_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reverse_sequence_ref.cl index 7060a20ca6df06..445228cf84c805 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reverse_sequence_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/reverse_sequence_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ps_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ps_ref.cl index 77475ba353e3e0..df6bea3248742d 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ps_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ps_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ref.cl index 87d935c9dcd811..61f08bfe8b592a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/roi_pooling_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_elements_update_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_elements_update_ref.cl index f019f76d48312a..9c0e4f2dafe9b2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_elements_update_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_elements_update_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_nd_update_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_nd_update_ref.cl new file mode 100644 index 00000000000000..54b666c7f8f947 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_nd_update_ref.cl @@ -0,0 +1,141 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "include/include_all.cl" + +#define GET_UPDATES_INDEX(prefix, idx_order) CAT(prefix, _GET_INDEX)(idx_order) +#define GET_OUTPUT_INDEX(idx_order) OUTPUT_GET_INDEX(idx_order) + +#if OUTPUT_DIMS == 4 + #define ORDER b,f,y,x +#elif OUTPUT_DIMS == 5 + #define ORDER b,f,z,y,x +#elif OUTPUT_DIMS == 6 + #define ORDER b,f,w,z,y,x +#endif + +KERNEL(scatter_nd_update_ref)(const __global INPUT0_TYPE* data, + const __global INPUT1_TYPE* indices, + const __global INPUT2_TYPE* updates, + __global OUTPUT_TYPE* output +#if HAS_FUSED_OPS_DECLS + , FUSED_OPS_DECLS +#endif +) +{ + + const uint dim0 = get_global_id(0); + const uint dim1 = get_global_id(1); + const uint dim2 = get_global_id(2); + +#ifndef IS_SECOND_ITER // First kernel + const uint x = dim0 % OUTPUT_SIZE_X; + const uint y = dim0 / OUTPUT_SIZE_X; + const uint z = dim1 % OUTPUT_SIZE_Z; + const uint w = dim1 / OUTPUT_SIZE_Z; + const uint f = dim2 % OUTPUT_FEATURE_NUM; + const uint b = dim2 / OUTPUT_FEATURE_NUM; + + const uint output_idx = GET_OUTPUT_INDEX(ORDER); + INPUT0_TYPE val = data[output_idx]; + #if HAS_FUSED_OPS + FUSED_OPS_FIRST_KERNEL; + output[output_idx] = TO_OUTPUT_TYPE(FUSED_OPS_RESULT_FIRST_KERNEL); + #else + output[output_idx] = ACTIVATION(val, ACTIVATION_PARAMS); + #endif + +#else // Second kernel + + const uint blockND[] = {INPUT_BLOCK_ND}; + const uint k = INDICES_LAST_DIM; + const uint size_to_update = blockND[INDICES_LAST_DIM]; + const uint indices_idx = dim2; + const uint indices_offset = indices_idx * k; + uint dst_offset = 0; + + for (uint i = 0; i < k; i++) { + INPUT1_TYPE idxValue = indices[indices_offset + i]; + dst_offset += idxValue * blockND[i + 1]; + } + + uint update_offset = indices_idx * size_to_update; + + for (int i = 0; i < size_to_update; i++) { + uint dst_idx = dst_offset + i; + uint up_idx = update_offset + i; + INPUT2_TYPE val = updates[up_idx]; + + #if HAS_FUSED_OPS + #if OUTPUT_DIMS == 4 + const uint y_pitch = OUTPUT_SIZE_X; + const uint f_pitch = y_pitch * OUTPUT_SIZE_Y; + const uint b_pitch = f_pitch * OUTPUT_FEATURE_NUM; + + const uint b_remain = dst_idx % b_pitch; + const uint f_remain = b_remain % f_pitch; + const uint y_remain = f_remain % y_pitch; + + const uint b = dst_idx / b_pitch; + const uint f = b_remain / f_pitch; + const uint y = f_remain / y_pitch; + const uint x = y_remain; + #elif OUTPUT_DIMS == 5 + const uint y_pitch = OUTPUT_SIZE_X; + const uint z_pitch = y_pitch * OUTPUT_SIZE_Y; + const uint f_pitch = z_pitch * OUTPUT_SIZE_Z; + const uint b_pitch = f_pitch * OUTPUT_FEATURE_NUM; + + const uint b_remain = dst_idx % b_pitch; + const uint f_remain = b_remain % f_pitch; + const uint z_remain = f_remain % z_pitch; + const uint y_remain = z_remain % y_pitch; + + const uint b = dst_idx / b_pitch; + const uint f = b_remain / f_pitch; + const uint z = f_remain / z_pitch; + const uint y = z_remain / y_pitch; + const uint x = y_remain; + #elif OUTPUT_DIMS == 6 + const uint y_pitch = OUTPUT_SIZE_X; + const uint z_pitch = y_pitch * OUTPUT_SIZE_Y; + const uint w_pitch = z_pitch * OUTPUT_SIZE_Z; + const uint f_pitch = w_pitch * OUTPUT_SIZE_W; + const uint b_pitch = f_pitch * OUTPUT_FEATURE_NUM; + + const uint b_remain = dst_idx % b_pitch; + const uint f_remain = b_remain % f_pitch; + const uint w_remain = f_remain % w_pitch; + const uint z_remain = w_remain % z_pitch; + const uint y_remain = z_remain % y_pitch; + + const uint b = dst_idx / b_pitch; + const uint f = b_remain / f_pitch; + const uint w = f_remain / w_pitch; + const uint z = w_remain / z_pitch; + const uint y = z_remain / y_pitch; + const uint x = y_remain; + #endif + + FUSED_OPS_SECOND_KERNEL; + output[dst_idx] = TO_OUTPUT_TYPE(FUSED_OPS_RESULT_SECOND_KERNEL); + #else + output[dst_idx] = ACTIVATION(val, ACTIVATION_PARAMS); + #endif + } +#endif + +} + +#ifdef GET_UPDATES_INDEX +#undef GET_UPDATES_INDEX +#endif + +#ifdef GET_OUTPUT_INDEX +#undef GET_OUTPUT_INDEX +#endif + +#ifdef ORDER +#undef ORDER +#endif diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_update_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_update_ref.cl index 4234c00223f833..8195a45b999b66 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_update_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/scatter_update_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/select_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/select_gpu_ref.cl index 974ae3eea00047..8c4ea91c2785e5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/select_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/select_gpu_ref.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/shuffle_channels_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/shuffle_channels_ref.cl index d210e944dfb7a9..23a989c6e97ef2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/shuffle_channels_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/shuffle_channels_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_bf.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_bf.cl index aacb669e547fba..901b8bbe70280b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_bf.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_bf.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_fb.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_fb.cl index 78695d5a532203..a4e77dce1528da 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_fb.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_fb.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_items_class_optimized.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_items_class_optimized.cl index 103ea53bf45a4b..cb75d83e9e252a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_items_class_optimized.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_items_class_optimized.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_ref.cl index ba151ad43ca90a..ce25a1c9f7ead5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/softmax_gpu_ref.cl @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_batch_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_batch_ref.cl index 30c872b23662b5..ae0a4dbecac905 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_batch_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_batch_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_depth_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_depth_ref.cl index 028db559b15e6d..c192b06cd68140 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_depth_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/space_to_depth_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/strided_slice_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/strided_slice_ref.cl index 559b355e696e98..c6d7a3eb91bd07 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/strided_slice_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/strided_slice_ref.cl @@ -1,17 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "include/include_all.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/tile_ref.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/tile_ref.cl index 4d99d32d4e53e8..ce26c649e18626 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/tile_ref.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/tile_ref.cl @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "include/common.cl" #include "include/data_types.cl" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.cpp index 8059089e83bfd5..f3a234f1f2e067 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "jitter.h" #include "tensor_type.h" @@ -578,11 +566,14 @@ class WeightTensorJitConstant : public TensorBaseTJitConstantmacroName = MacroName(tensor_name, layout_name, macroNameArgs); this->calcFunction = FuncBody(layout_name, funcArgs, body); if (l == WeightsLayout::os_is_yx_osv16_isv16) - this->macroBody = FuncCall(layout_name, {"o", "i", "0", "y", "x", Cat("_SIZE_X"), Cat("_SIZE_Y"), "1", Cat("_IFM_NUM"), Cat("_OFM_NUM"), "16", "16"}); + this->macroBody = FuncCall(layout_name, {"o", "i", "0", "y", "x", + Cat("_SIZE_X"), Cat("_SIZE_Y"), "1", Cat("_IFM_NUM"), Cat("_OFM_NUM"), "16", "16"}); else if (l == WeightsLayout::os_is_zyx_osv32_isv16) - this->macroBody = FuncCall(layout_name, {"o", "i", "z", "y", "x", Cat("_SIZE_X"), Cat("_SIZE_Y"), Cat("_SIZE_Z"), Cat("_IFM_NUM"), Cat("_OFM_NUM"), "32", "16"}); + this->macroBody = FuncCall(layout_name, {"o", "i", "z", "y", "x", + Cat("_SIZE_X"), Cat("_SIZE_Y"), Cat("_SIZE_Z"), Cat("_IFM_NUM"), Cat("_OFM_NUM"), "32", "16"}); else if (l == WeightsLayout::os_is_zyx_osv64_isv16) - this->macroBody = FuncCall(layout_name, {"o", "i", "z", "y", "x", Cat("_SIZE_X"), Cat("_SIZE_Y"), Cat("_SIZE_Z"), Cat("_IFM_NUM"), Cat("_OFM_NUM"), "64", "16"}); + this->macroBody = FuncCall(layout_name, {"o", "i", "z", "y", "x", + Cat("_SIZE_X"), Cat("_SIZE_Y"), Cat("_SIZE_Z"), Cat("_IFM_NUM"), Cat("_OFM_NUM"), "64", "16"}); } else if (l == WeightsLayout::g_os_zyx_is_osv16_isv16 || l == WeightsLayout::g_os_zyx_is_osv16_isv32 || l == WeightsLayout::g_os_zyx_is_osv32_isv16 || l == WeightsLayout::g_os_zyx_is_osv32_isv32) { args macroNameArgs = {"prefix", "g", "o", "i", "z", "y", "x"}; @@ -1101,7 +1092,7 @@ JitConstants MakeActivationJitConstants(ActivationFunction activation_function, .str())); // the workaround for OpenCL's vector type result (!input) break; case ActivationFunction::ROUND_HALF_TO_EVEN: - jitConstants.AddConstant(MakeJitConstant( macro_def, "rint(input)")); + jitConstants.AddConstant(MakeJitConstant(macro_def, "rint(input)")); break; case ActivationFunction::ROUND_HALF_AWAY_FROM_ZERO: jitConstants.AddConstant(MakeJitConstant(macro_def, "(round(input))")); @@ -1381,15 +1372,11 @@ JitConstants MakeConstantLoopUnrollJitConstants(uint32_t loopCount) { }; for (uint32_t i = 2; i <= loopCount; ++i) { - jit.AddConstant( - MakeJitConstant("CONST_LOOP_" + toCodeString(i) + "(macro)", - "CONST_LOOP_" + toCodeString(i - 1) + "(macro); CONST_LOOP_CALL(macro," + toCodeString(i - 1) + ")") - ); + jit.AddConstant(MakeJitConstant("CONST_LOOP_" + toCodeString(i) + "(macro)", + "CONST_LOOP_" + toCodeString(i - 1) + "(macro); CONST_LOOP_CALL(macro," + toCodeString(i - 1) + ")")); } - jit.AddConstant( - MakeJitConstant("CONST_LOOP(count, macro)", "CAT(CONST_LOOP_, count)(macro)") - ); + jit.AddConstant(MakeJitConstant("CONST_LOOP(count, macro)", "CAT(CONST_LOOP_, count)(macro)")); return jit; } @@ -1562,8 +1549,7 @@ JitConstants FusedOpsCodeGenerator::MakeOpJitConstants(const FusedOpsConfigurati throw std::runtime_error("[clDNN] Eltwise fuse params can't be nullptr"); std::string op = ""; - switch (p->mode) - { + switch (p->mode) { case kernel_selector::EltwiseMode::ADD: op = "+"; break; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.h index ecf22d70b36179..3ff352508262cc 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/jitter.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.cpp index 26f20e6d48bb5d..92103f5bffe65f 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "kernel_base_opencl.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.h index 7f0e0e9a83c4f2..aad1b9e691b8d1 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_base_opencl.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.cpp index 926f100ec20621..b311e738ac0969 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "kernel_selector_utils.h" #include "reorder/reorder_weights_kernel_selector.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.h index 9d1880c2063dbe..018516b29b72d5 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/kernel_selector_utils.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.cpp index 7c899894647d87..c17d0898630231 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.cpp @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #include "primitive_db.h" #include #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.h index a77fa9c74f1a59..d1f2be607614c2 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db_gen.py b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db_gen.py index 2adee67fc31b76..0975ed1e2da05b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db_gen.py +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/primitive_db_gen.py @@ -1,5 +1,8 @@ #!/usr/bin/python +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # To add new kernel please add a .cl file to kernels directory # the database name will be the part of the file name up to first '.' character # the trailing characters are a tag to allow multiple primitive implementations @@ -109,4 +112,4 @@ def main(): converter.convert() if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.cpp index 9a0f48c79b22f8..d8a1b28ca1985c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "weight_bias_kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.h index 478bee59787ec2..4ad387d59b2e4c 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_kernel_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.cpp index e6a94c06ee8564..af477043abcb5b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "weight_bias_params.h" #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.h index 7d1db484771a82..1b4607e5b5b08a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/common/weight_bias_params.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.cpp index cc73e2e651a9e1..01df9ab53e8206 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "kernel_base.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.h index 35b5d497df057d..d547b6cf758d6a 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_base.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once @@ -61,7 +50,7 @@ class KernelBase { virtual KernelsPriority GetKernelsPriority(const Params& /*params*/, const optional_params& /*options*/) const { return DONT_USE_IF_HAVE_SOMETHING_ELSE; - }; + } virtual ParamsKey GetSupportedKey() const = 0; virtual const std::string GetName() const { return kernelName; } diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_runner_interface.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_runner_interface.h index 694d59a6c789e1..66cbb4995b1b48 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_runner_interface.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_runner_interface.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.cpp index 6316435da63f15..4d4a06b53fe8e9 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "kernel_base.h" #include "kernel_selector_common.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.h index 88a0bbb379fc54..e9abe5cd8307c6 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector.h @@ -1,17 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #pragma once diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.cpp index 259a40bae623a2..deeb31e350e890 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "kernel_selector_common.h" #include @@ -295,6 +284,14 @@ std::string toString(MVNMode mode) { } } +std::string toString(MVNEpsMode mode) { + switch (mode) { + case MVNEpsMode::INSIDE_SQRT : return "INSIDE_SQRT"; + case MVNEpsMode::OUTSIDE_SQRT : return "OUTSIDE_SQRT"; + default: return ""; + } +} + std::string toString(WeightsLayout layout) { switch (layout) { case WeightsLayout::oi: return "OI"; diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.h index 6a38ecfe54a3c5..b75d2dd7e87001 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_common.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once @@ -244,6 +232,7 @@ std::string toString(KernelDividerMode mode); std::string toString(SoftmaxDim d); std::string toString(NormalizeMode mode); std::string toString(MVNMode mode); +std::string toString(MVNEpsMode mode); std::string toString(WeightsLayout layout); std::string toString(ConcatAxis a); std::string toString(GatherAxis a); diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.cpp b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.cpp index 299b784ba33d77..12be3a963fc8a8 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.cpp +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.cpp @@ -1,17 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. - #include "kernel_selector_params.h" #include "kernel_selector_common.h" diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.h b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.h index 0fde52e2b01088..04b5ce64eb7d9b 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.h +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/kernel_selector_params.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/CMakeLists.txt b/inference-engine/thirdparty/clDNN/src/CMakeLists.txt index fdad756acef0e7..160492150a437f 100644 --- a/inference-engine/thirdparty/clDNN/src/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/src/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (c) 2016 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# # =================================== Name / Output settings from parent =============================== diff --git a/inference-engine/thirdparty/clDNN/src/activation.cpp b/inference-engine/thirdparty/clDNN/src/activation.cpp index 621a2d648653c1..dba83df3583043 100644 --- a/inference-engine/thirdparty/clDNN/src/activation.cpp +++ b/inference-engine/thirdparty/clDNN/src/activation.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "activation_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/arg_max_min.cpp b/inference-engine/thirdparty/clDNN/src/arg_max_min.cpp index 846d78b00f0ec6..f4a5a188e61e58 100644 --- a/inference-engine/thirdparty/clDNN/src/arg_max_min.cpp +++ b/inference-engine/thirdparty/clDNN/src/arg_max_min.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "arg_max_min_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/average_unpooling.cpp b/inference-engine/thirdparty/clDNN/src/average_unpooling.cpp index df37d369dd7bb2..c4ba3ac8418e19 100644 --- a/inference-engine/thirdparty/clDNN/src/average_unpooling.cpp +++ b/inference-engine/thirdparty/clDNN/src/average_unpooling.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "average_unpooling_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/batch_to_space.cpp b/inference-engine/thirdparty/clDNN/src/batch_to_space.cpp index 5615571a092da5..7540b49e754652 100644 --- a/inference-engine/thirdparty/clDNN/src/batch_to_space.cpp +++ b/inference-engine/thirdparty/clDNN/src/batch_to_space.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "batch_to_space_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/binary_convolution.cpp b/inference-engine/thirdparty/clDNN/src/binary_convolution.cpp index 45a79c9b69ada3..ece928a51d0d87 100644 --- a/inference-engine/thirdparty/clDNN/src/binary_convolution.cpp +++ b/inference-engine/thirdparty/clDNN/src/binary_convolution.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "binary_convolution_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/border.cpp b/inference-engine/thirdparty/clDNN/src/border.cpp index 2eacdd01dae135..810027192e0494 100644 --- a/inference-engine/thirdparty/clDNN/src/border.cpp +++ b/inference-engine/thirdparty/clDNN/src/border.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "border_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/broadcast.cpp b/inference-engine/thirdparty/clDNN/src/broadcast.cpp index 09a2a8b9bcdb13..790a1222fba116 100644 --- a/inference-engine/thirdparty/clDNN/src/broadcast.cpp +++ b/inference-engine/thirdparty/clDNN/src/broadcast.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "broadcast_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/concatenation.cpp b/inference-engine/thirdparty/clDNN/src/concatenation.cpp index f9d7cdff557aed..e6e622a93e9f6b 100644 --- a/inference-engine/thirdparty/clDNN/src/concatenation.cpp +++ b/inference-engine/thirdparty/clDNN/src/concatenation.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "concatenation_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/condition.cpp b/inference-engine/thirdparty/clDNN/src/condition.cpp index 94eaa842761359..f6b2d237392309 100644 --- a/inference-engine/thirdparty/clDNN/src/condition.cpp +++ b/inference-engine/thirdparty/clDNN/src/condition.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "condition_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/convolution.cpp b/inference-engine/thirdparty/clDNN/src/convolution.cpp index 11b813a8987dab..5b49b614f67117 100644 --- a/inference-engine/thirdparty/clDNN/src/convolution.cpp +++ b/inference-engine/thirdparty/clDNN/src/convolution.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "pass_manager.h" diff --git a/inference-engine/thirdparty/clDNN/src/crop.cpp b/inference-engine/thirdparty/clDNN/src/crop.cpp index b60643b370fad6..4dbcc9ce24727b 100644 --- a/inference-engine/thirdparty/clDNN/src/crop.cpp +++ b/inference-engine/thirdparty/clDNN/src/crop.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "crop_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/ctc_greedy_decoder.cpp b/inference-engine/thirdparty/clDNN/src/ctc_greedy_decoder.cpp index 970667fe0e6642..6727a9a702b6b3 100644 --- a/inference-engine/thirdparty/clDNN/src/ctc_greedy_decoder.cpp +++ b/inference-engine/thirdparty/clDNN/src/ctc_greedy_decoder.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "ctc_greedy_decoder_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/cum_sum.cpp b/inference-engine/thirdparty/clDNN/src/cum_sum.cpp index c2904d299b6a1d..ebb176ec74591c 100644 --- a/inference-engine/thirdparty/clDNN/src/cum_sum.cpp +++ b/inference-engine/thirdparty/clDNN/src/cum_sum.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "cum_sum_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/custom_gpu_primitive.cpp b/inference-engine/thirdparty/clDNN/src/custom_gpu_primitive.cpp index 53aba6feb13432..374f9c7158d1ab 100644 --- a/inference-engine/thirdparty/clDNN/src/custom_gpu_primitive.cpp +++ b/inference-engine/thirdparty/clDNN/src/custom_gpu_primitive.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "custom_gpu_primitive_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/data.cpp b/inference-engine/thirdparty/clDNN/src/data.cpp index 245be2be1a2e65..7d0d89ea3d9603 100644 --- a/inference-engine/thirdparty/clDNN/src/data.cpp +++ b/inference-engine/thirdparty/clDNN/src/data.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "data_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/deconvolution.cpp b/inference-engine/thirdparty/clDNN/src/deconvolution.cpp index 79c92a710a3164..9642e3e3289939 100644 --- a/inference-engine/thirdparty/clDNN/src/deconvolution.cpp +++ b/inference-engine/thirdparty/clDNN/src/deconvolution.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "deconvolution_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/deformable_convolution.cpp b/inference-engine/thirdparty/clDNN/src/deformable_convolution.cpp index 25aabb67c597a0..d3e04b2e1c8833 100644 --- a/inference-engine/thirdparty/clDNN/src/deformable_convolution.cpp +++ b/inference-engine/thirdparty/clDNN/src/deformable_convolution.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "deformable_convolution_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/depth_to_space.cpp b/inference-engine/thirdparty/clDNN/src/depth_to_space.cpp index fd9ccf04d6b5b1..3c8622f6b8ae42 100644 --- a/inference-engine/thirdparty/clDNN/src/depth_to_space.cpp +++ b/inference-engine/thirdparty/clDNN/src/depth_to_space.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "depth_to_space_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/detection_output.cpp b/inference-engine/thirdparty/clDNN/src/detection_output.cpp index 01eb991c3082e2..78a770caa54b51 100644 --- a/inference-engine/thirdparty/clDNN/src/detection_output.cpp +++ b/inference-engine/thirdparty/clDNN/src/detection_output.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "detection_output_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/device.cpp b/inference-engine/thirdparty/clDNN/src/device.cpp index 797c09248a88ea..b3470db4ff93bd 100644 --- a/inference-engine/thirdparty/clDNN/src/device.cpp +++ b/inference-engine/thirdparty/clDNN/src/device.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "device_impl.h" diff --git a/inference-engine/thirdparty/clDNN/src/eltwise.cpp b/inference-engine/thirdparty/clDNN/src/eltwise.cpp index 3b0a46cecec0f2..760b504a013e89 100644 --- a/inference-engine/thirdparty/clDNN/src/eltwise.cpp +++ b/inference-engine/thirdparty/clDNN/src/eltwise.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "eltwise_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/embedding_bag.cpp b/inference-engine/thirdparty/clDNN/src/embedding_bag.cpp index c5bf30b23f2641..951ff190049b68 100644 --- a/inference-engine/thirdparty/clDNN/src/embedding_bag.cpp +++ b/inference-engine/thirdparty/clDNN/src/embedding_bag.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "embedding_bag_inst.h" @@ -47,7 +35,7 @@ std::string embedding_bag_inst::to_string(embedding_bag_node const& node) { json_composite embedding_bag_info; embedding_bag_info.add("input id", input.id()); - switch(desc->type) { + switch (desc->type) { case embedding_bag::packed_sum: embedding_bag_info.add("embedding bag type", "PackedSum"); break; diff --git a/inference-engine/thirdparty/clDNN/src/engine.cpp b/inference-engine/thirdparty/clDNN/src/engine.cpp index 379e8dba0c3ba5..e64c0051827714 100644 --- a/inference-engine/thirdparty/clDNN/src/engine.cpp +++ b/inference-engine/thirdparty/clDNN/src/engine.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "engine_impl.h" @@ -95,6 +83,7 @@ gpu_toolkit_config convert_configuration(const engine_configuration conf) { result.queues_num = conf.n_streams; result.kernels_cache_path = conf.kernels_cache_path; result.tuning_cache_path = conf.tuning_cache_path; + result.n_threads = conf.n_threads; return result; } diff --git a/inference-engine/thirdparty/clDNN/src/error_handler.cpp b/inference-engine/thirdparty/clDNN/src/error_handler.cpp index f6baa684f322aa..1e41407b27d82b 100644 --- a/inference-engine/thirdparty/clDNN/src/error_handler.cpp +++ b/inference-engine/thirdparty/clDNN/src/error_handler.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "error_handler.h" diff --git a/inference-engine/thirdparty/clDNN/src/event.cpp b/inference-engine/thirdparty/clDNN/src/event.cpp index 3e76713022c752..48b6dfaff31175 100644 --- a/inference-engine/thirdparty/clDNN/src/event.cpp +++ b/inference-engine/thirdparty/clDNN/src/event.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "api/event.hpp" diff --git a/inference-engine/thirdparty/clDNN/src/extract_image_patches.cpp b/inference-engine/thirdparty/clDNN/src/extract_image_patches.cpp index d265e9cc9b635f..a4cc4ff1fe65a0 100644 --- a/inference-engine/thirdparty/clDNN/src/extract_image_patches.cpp +++ b/inference-engine/thirdparty/clDNN/src/extract_image_patches.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "extract_image_patches_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/fully_connected.cpp b/inference-engine/thirdparty/clDNN/src/fully_connected.cpp index 47a765a3b02759..4c6aeabe80eaae 100644 --- a/inference-engine/thirdparty/clDNN/src/fully_connected.cpp +++ b/inference-engine/thirdparty/clDNN/src/fully_connected.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "fully_connected_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/fused_conv_eltwise.cpp b/inference-engine/thirdparty/clDNN/src/fused_conv_eltwise.cpp index 5d8de989d086bd..dc4db14393b499 100644 --- a/inference-engine/thirdparty/clDNN/src/fused_conv_eltwise.cpp +++ b/inference-engine/thirdparty/clDNN/src/fused_conv_eltwise.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "fused_conv_eltwise_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gather.cpp b/inference-engine/thirdparty/clDNN/src/gather.cpp index ae1c8a269a9cd6..e85c6bcade6a90 100644 --- a/inference-engine/thirdparty/clDNN/src/gather.cpp +++ b/inference-engine/thirdparty/clDNN/src/gather.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gather_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gather_tree.cpp b/inference-engine/thirdparty/clDNN/src/gather_tree.cpp index fcf439eb526153..98b687be5b7013 100644 --- a/inference-engine/thirdparty/clDNN/src/gather_tree.cpp +++ b/inference-engine/thirdparty/clDNN/src/gather_tree.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "gather_tree_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gemm.cpp b/inference-engine/thirdparty/clDNN/src/gemm.cpp index cba30c1ab96543..1c3191b87d9184 100644 --- a/inference-engine/thirdparty/clDNN/src/gemm.cpp +++ b/inference-engine/thirdparty/clDNN/src/gemm.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "gemm_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/generic_layer.cpp b/inference-engine/thirdparty/clDNN/src/generic_layer.cpp index 486648112495c0..b1477872d925a8 100644 --- a/inference-engine/thirdparty/clDNN/src/generic_layer.cpp +++ b/inference-engine/thirdparty/clDNN/src/generic_layer.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "generic_layer_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/activation_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/activation_gpu.cpp index 599c32c3971589..7ea703cab3bc87 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/activation_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/activation_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "activation_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/arg_max_min_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/arg_max_min_gpu.cpp index 0e683569827ea3..3b898761653687 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/arg_max_min_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/arg_max_min_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "arg_max_min_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/average_unpooling_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/average_unpooling_gpu.cpp index b169e4f16b1f1f..4ed6597d63ab30 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/average_unpooling_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/average_unpooling_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "average_unpooling_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/batch_to_space_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/batch_to_space_gpu.cpp index 126d926a466f54..820e62561670ea 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/batch_to_space_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/batch_to_space_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "batch_to_space_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/binary_convolution_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/binary_convolution_gpu.cpp index 03f13b6a5f86c8..8800cc2c5ad111 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/binary_convolution_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/binary_convolution_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include diff --git a/inference-engine/thirdparty/clDNN/src/gpu/border_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/border_gpu.cpp index 6b0a92d1965323..33985b48c9736b 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/border_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/border_gpu.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "border_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/broadcast_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/broadcast_gpu.cpp index 2ed7e36c412ce5..a3fa9715eb90e8 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/broadcast_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/broadcast_gpu.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "broadcast_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.cpp b/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.cpp index 00e9c9accc6948..25f842cd4c07d2 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "command_queues_builder.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.h b/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.h index 25a334935c1840..7d99bcccbd2ecd 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/command_queues_builder.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/concatenation_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/concatenation_gpu.cpp index 6bde288004ea75..b2abee8ab58ccf 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/concatenation_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/concatenation_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "concatenation_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/condition_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/condition_gpu.cpp index e88e9002c20e77..e3df38f722980f 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/condition_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/condition_gpu.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "condition_inst.h" #include "network_impl.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/configuration.cpp b/inference-engine/thirdparty/clDNN/src/gpu/configuration.cpp index 052a133a128eb1..2536bf0b0c1d10 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/configuration.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/configuration.cpp @@ -1,21 +1,10 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "configuration.h" +#include namespace cldnn { namespace gpu { @@ -34,6 +23,7 @@ configuration::configuration() throttle_mode(throttle_mode_types::disabled), queues_num(0), tuning_cache_path("cache.json"), - kernels_cache_path("") {} + kernels_cache_path(""), + n_threads(std::max(static_cast(std::thread::hardware_concurrency()), static_cast(1))) {} } // namespace gpu } // namespace cldnn diff --git a/inference-engine/thirdparty/clDNN/src/gpu/configuration.h b/inference-engine/thirdparty/clDNN/src/gpu/configuration.h index cf402baa0fabb3..f0792ad8dac0d2 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/configuration.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/configuration.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -43,6 +31,7 @@ struct configuration { uint16_t queues_num; std::string tuning_cache_path; std::string kernels_cache_path; + uint16_t n_threads; }; } // namespace gpu } // namespace cldnn diff --git a/inference-engine/thirdparty/clDNN/src/gpu/convolution_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/convolution_gpu.cpp index d6e733eb9819a0..1c37c2073032c5 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/convolution_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/convolution_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "convolution_inst.h" #include "eltwise_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/cpu_impl_helpers.hpp b/inference-engine/thirdparty/clDNN/src/gpu/cpu_impl_helpers.hpp index 8bb3376934d9fa..09b1bcb2a574c5 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/cpu_impl_helpers.hpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/cpu_impl_helpers.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/crop_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/crop_gpu.cpp index a28b532f7efd37..a328d4792b894e 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/crop_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/crop_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "crop_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ctc_greedy_decoder_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/ctc_greedy_decoder_gpu.cpp index 349d12bc9a5af7..1161e4aee482ae 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ctc_greedy_decoder_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/ctc_greedy_decoder_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "ctc_greedy_decoder_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/cum_sum_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/cum_sum_gpu.cpp index 37b6cd3d77f167..d6d82ae2055dec 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/cum_sum_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/cum_sum_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "cum_sum_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/custom_gpu_primitive_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/custom_gpu_primitive_gpu.cpp index b3350f3aea7cec..493f40203cdc52 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/custom_gpu_primitive_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/custom_gpu_primitive_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "custom_gpu_primitive_inst.h" #include "kernel.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/deconvolution_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/deconvolution_gpu.cpp index 3c9b5d89ec21ff..352bdf00d5d0de 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/deconvolution_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/deconvolution_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "deconvolution_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/deformable_convolution_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/deformable_convolution_gpu.cpp index 63654823331490..897f1a07a763f7 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/deformable_convolution_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/deformable_convolution_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "deformable_convolution_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/depth_to_space_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/depth_to_space_gpu.cpp index f2f144ca467752..fc3c5dd9f56279 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/depth_to_space_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/depth_to_space_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "depth_to_space_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/detection_output_cpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/detection_output_cpu.cpp index baae08b130a6c1..20b50bdedd7827 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/detection_output_cpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/detection_output_cpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "detection_output_inst.h" #include "kernel.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.cpp b/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.cpp index a6ab81514a616d..0d0b310a1793a3 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "device_cache_reader.h" #include "include/to_string_utils.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.h b/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.h index fa7a2bf2655e64..51c50b0df774fb 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/device_cache_reader.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/src/gpu/device_info.cpp b/inference-engine/thirdparty/clDNN/src/gpu/device_info.cpp index c462d400f3b8e2..cd4927795113c1 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/device_info.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/device_info.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "device_info.h" #include "include/to_string_utils.h" @@ -43,8 +33,7 @@ namespace cldnn { namespace gpu { namespace { -int driver_dev_id() -{ +int driver_dev_id() { const std::vector unused_ids = { 0x4905, 0x4906, 0x4907, 0x4908 }; @@ -61,9 +50,9 @@ int driver_dev_id() devinfo_data.cbSize = sizeof(devinfo_data); for (DWORD dev_idx = 0; SetupDiEnumDeviceInfo(device_info_set, dev_idx, &devinfo_data); dev_idx++) { - const size_t buf_size = 512; - char buf[buf_size]; - if (!SetupDiGetDeviceInstanceIdA(device_info_set, &devinfo_data, buf, buf_size, NULL)) { + const size_t kBufSize = 512; + char buf[kBufSize]; + if (!SetupDiGetDeviceInstanceIdA(device_info_set, &devinfo_data, buf, kBufSize, NULL)) { continue; } @@ -84,16 +73,13 @@ int driver_dev_id() { std::string dev_base{ "/sys/devices/pci0000:00/0000:00:02.0/" }; std::ifstream ifs(dev_base + "vendor"); - if (ifs.good()) - { + if (ifs.good()) { int ven_id; ifs >> std::hex >> ven_id; ifs.close(); - if (ven_id == 0x8086) - { + if (ven_id == 0x8086) { ifs.open(dev_base + "device"); - if (ifs.good()) - { + if (ifs.good()) { int res = 0; ifs >> std::hex >> res; result.push_back(res); @@ -165,7 +151,7 @@ bool is_local_block_io_supported(const cl::Device& device) { " dst[lid] = read.s0 + 1;" "}"; cl::Program program(ctx, kernel_code); - if (program.build({ device }, "-Dcl_intel_subgroup_local_block_io") != CL_SUCCESS) + if (program.build(device, "-Dcl_intel_subgroup_local_block_io") != CL_SUCCESS) return false; cl::Buffer buffer(ctx, CL_MEM_READ_WRITE, sizeof(uint8_t) * 8); cl::Kernel kernel(program, "is_local_block_io_supported"); diff --git a/inference-engine/thirdparty/clDNN/src/gpu/device_info.h b/inference-engine/thirdparty/clDNN/src/gpu/device_info.h index 0b5b087bf7b4fa..e4aacedb0ae682 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/device_info.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/device_info.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/src/gpu/eltwise_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/eltwise_gpu.cpp index ebd84484f99b5f..5ff1be35b761da 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/eltwise_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/eltwise_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "eltwise_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/embedding_bag_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/embedding_bag_gpu.cpp index 8d96591fc13dff..4de2c9cda6db33 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/embedding_bag_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/embedding_bag_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "embedding_bag_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/events_pool.h b/inference-engine/thirdparty/clDNN/src/gpu/events_pool.h index da623743c7f046..9fdf0a23fabe44 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/events_pool.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/events_pool.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "refcounted_obj.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/events_waiter.h b/inference-engine/thirdparty/clDNN/src/gpu/events_waiter.h index 73af622c5ed444..55be7d2e092e73 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/events_waiter.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/events_waiter.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/extract_image_patches_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/extract_image_patches_gpu.cpp index 735eb2e35199db..bff7dafc638d6f 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/extract_image_patches_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/extract_image_patches_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "extract_image_patches_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/fully_connected_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/fully_connected_gpu.cpp index 677e93224fe42c..05cdc2eb3e1d82 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/fully_connected_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/fully_connected_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/gpu/fused_conv_eltwise_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/fused_conv_eltwise_gpu.cpp index 1e552b9bc03d16..28d8990c9eaa23 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/fused_conv_eltwise_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/fused_conv_eltwise_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "fused_conv_eltwise_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/gather_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/gather_gpu.cpp index c6f7f114557a89..80588d55755968 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/gather_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/gather_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gather_inst.h" #include "primitive_gpu_base.h" @@ -80,11 +68,11 @@ attach_gather_gpu::attach_gather_gpu() { implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f32, format::bfyx), val_fw); implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f16, format::bfyx), val_fw); implementation_map::add(std::make_tuple(engine_types::ocl, data_types::i32, format::bfyx), val_fw); - + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f32, format::bfzyx), val_fw); implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f16, format::bfzyx), val_fw); implementation_map::add(std::make_tuple(engine_types::ocl, data_types::i32, format::bfzyx), val_fw); - + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f32, format::bfwzyx), val_fw); implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f16, format::bfwzyx), val_fw); implementation_map::add(std::make_tuple(engine_types::ocl, data_types::i32, format::bfwzyx), val_fw); diff --git a/inference-engine/thirdparty/clDNN/src/gpu/gather_tree_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/gather_tree_gpu.cpp index 9eeff6e0a6cd04..db98e0b543c67d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/gather_tree_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/gather_tree_gpu.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "gather_tree_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/gemm_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/gemm_gpu.cpp index 8dd8b5153fd18e..bc475596c7ccc8 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/gemm_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/gemm_gpu.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "gemm_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/generic_layer_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/generic_layer_gpu.cpp index d8538a87b6b768..c6643ed65beb95 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/generic_layer_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/generic_layer_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "generic_layer_inst.h" #include "kernel.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/grn_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/grn_gpu.cpp index 1789679be89844..7612be5ccffc37 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/grn_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/grn_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "grn_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/kd_selector.h b/inference-engine/thirdparty/clDNN/src/gpu/kd_selector.h index a88c74237e80ad..32c9694e155245 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/kd_selector.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/kd_selector.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/kernel.cpp b/inference-engine/thirdparty/clDNN/src/gpu/kernel.cpp index d82805defc2463..0ba0ece0443359 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/kernel.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/kernel.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -272,7 +260,6 @@ void kernel::cleanup(uint32_t queue_id) { event_impl::ptr kernel::run(uint32_t queue_id, const kernel_selector::cl_kernel_data& kernel_data, const std::vector& dependencies) const { - if (_cl_kernels.find(queue_id) == _cl_kernels.end() || _cl_kernels.at(queue_id).get() == NULL) { throw std::runtime_error("[clDNN] Kernel for layer " + kernel_data.layerID + " is not found for stream " + std::to_string(queue_id)); } diff --git a/inference-engine/thirdparty/clDNN/src/gpu/kernel.h b/inference-engine/thirdparty/clDNN/src/gpu/kernel.h index 555c9e4713c633..c55f2ca615b3ef 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/kernel.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/kernel.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.cpp b/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.cpp index 1f1c4445e2f831..2faddb64a6ac5d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.h b/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.h index 12a5d796da9515..6e257fef15f8d3 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/kernel_runner.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.cpp b/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.cpp index 31560c2bf0a0a5..9a50c6b0a28fa5 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "kernels_cache.h" @@ -25,9 +13,17 @@ #include #include #include - #include "kernel_selector_helper.h" #include "cldnn_itt.h" +#if (CLDNN_THREADING == CLDNN_THREADING_TBB) +#include +#include +#elif(CLDNN_THREADING == CLDNN_THREADING_THREADPOOL) +#include +#include +#include +#include +#endif #ifndef ENABLE_UNICODE_PATH_SUPPORT # ifdef _WIN32 @@ -48,8 +44,10 @@ #include #endif +#if (CLDNN_THREADING != CLDNN_THREADING_SEQ) +#define DEFAULT_NUM_THREADS 2 +#endif namespace { - std::mutex cacheAccessMutex; #ifdef ENABLE_UNICODE_PATH_SUPPORT @@ -96,7 +94,6 @@ static std::vector loadBinaryFromFile(std::string path) { return {}; } - static void saveBinaryToFile(std::string path, const std::vector buffer) { std::lock_guard lock(cacheAccessMutex); #if defined(ENABLE_UNICODE_PATH_SUPPORT) && defined(_WIN32) @@ -107,7 +104,7 @@ static void saveBinaryToFile(std::string path, const std::vector #endif std::ofstream out_file(filename, std::ios::out | std::ios::binary); if (out_file.is_open()) { - out_file.write((char*)&buffer[0], buffer.size()); + out_file.write(reinterpret_cast(&buffer[0]), buffer.size()); } } @@ -202,9 +199,10 @@ size_t kernels_cache::get_max_kernels_per_batch() const { return 10; } -kernels_cache::sorted_code kernels_cache::get_program_source(const kernels_code& kernels_source_code) const { + +void kernels_cache::get_program_source(const kernels_code& kernels_source_code, std::vector* all_batches) const { OV_ITT_SCOPED_TASK(itt::domains::CLDNN, "KernelsCache::BuildAll::GetProgramSource"); - sorted_code scode; + std::map> program_buckets; for (const auto& code : kernels_source_code) { std::string full_code = code.kernel_strings->jit + code.kernel_strings->str; @@ -225,7 +223,7 @@ kernels_cache::sorted_code kernels_cache::get_program_source(const kernels_code& std::string key = options; if (batch_compilation == false) { - key += " __PROGRAM__" + std::to_string(scode.size()); + key += " __PROGRAM__" + std::to_string(program_buckets.size()); } if (dump_custom_program) { @@ -235,48 +233,63 @@ kernels_cache::sorted_code kernels_cache::get_program_source(const kernels_code& if (one_time_kernel) { key += " __ONE_TIME__"; } - - auto& current_bucket = scode[key]; - current_bucket.dump_custom_program = dump_custom_program; - current_bucket.one_time = one_time_kernel; - - if (current_bucket.source.empty()) { - current_bucket.options = options; + auto& current_bucket = program_buckets[key]; + if (current_bucket.empty()) { // new bucket + const auto& bucket_id = program_buckets.size() - 1; + current_bucket.push_back(batch_program()); + current_bucket.back().bucket_id = static_cast(bucket_id); + current_bucket.back().batch_id = 0; + current_bucket.back().options = options; } - // Create new kernels bucket when the limit is reached - if ((current_bucket.kernels_counter % get_max_kernels_per_batch()) == 0) { - current_bucket.source.push_back({}); + // Create new kernels batch when the limit is reached + if (current_bucket.back().kernels_counter >= get_max_kernels_per_batch()) { + const auto& batch_id = current_bucket.size(); + current_bucket.push_back(batch_program()); + current_bucket.back().bucket_id = static_cast(program_buckets.size()); + current_bucket.back().batch_id = static_cast(batch_id); + current_bucket.back().options = options; } - current_bucket.entry_point_to_id[entry_point] = code.id; - assert(org_source_code.size() == 1); + auto& current_batch = current_bucket.back(); + current_batch.dump_custom_program = dump_custom_program; + current_batch.one_time = one_time_kernel; + current_batch.entry_point_to_id[entry_point] = code.id; - current_bucket.source.back().push_back(std::move(org_source_code.front())); + assert(org_source_code.size() == 1); - current_bucket.kernels_counter++; + current_batch.source.push_back(std::move(org_source_code.front())); + current_batch.kernels_counter++; } - // Compute hash value for each bucket + // Compute hash value for each batch // Hash calculation might require additional optimizations, but currently execution time of this part is much smaller than loading // of the precompiled binaries or get_undef_jit calls // Hash is computed for string that contains compilation options + driver version + - // full source code (jit + template + undef sections) of all kernels in the bucket - for (auto& c : scode) { - program_code& code = c.second; + // full source code (jit + template + undef sections) of all kernels in the batches + for (auto& c : program_buckets) { auto options = c.first; - for (size_t i = 0; i < code.source.size(); i++) { + auto& batches = c.second; + for (auto& b : batches) { std::string full_code = options + " " + _context.get_device_info().driver_version; - for (auto& ss : code.source[i]) + for (auto& ss : b.source) full_code += ss; - code.hash_values.push_back(std::hash()(full_code)); + b.hash_value = std::hash()(full_code); + all_batches->push_back(b); } } - - return scode; } -kernels_cache::kernels_cache(gpu_toolkit& context, uint32_t prog_id) : _context(context), _prog_id(prog_id) {} +kernels_cache::kernels_cache(gpu_toolkit& context, uint32_t prog_id) : _context(context), _prog_id(prog_id) { +#if (CLDNN_THREADING == CLDNN_THREADING_TBB) + int n_threads = _context.get_configuration().n_threads; + arena = std::unique_ptr(new tbb::task_arena()); + arena->initialize(n_threads); +#elif(CLDNN_THREADING == CLDNN_THREADING_THREADPOOL) + int n_threads = _context.get_configuration().n_threads; + pool = std::unique_ptr(new thread_pool(n_threads)); +#endif +} kernels_cache::kernel_id kernels_cache::set_kernel_source( const std::shared_ptr& kernel_string, @@ -288,7 +301,7 @@ kernels_cache::kernel_id kernels_cache::set_kernel_source( const auto kernel_num = _kernels.size() + _kernels_code.size(); kernels_cache::kernel_id id = kernel_string->entry_point + "_" + std::to_string(kernel_num); - auto res = _kernels_code.emplace( kernel_string, id, dump_custom_program, one_time_kernel ); + auto res = _kernels_code.emplace(kernel_string, id, dump_custom_program, one_time_kernel); assert(_kernels.find(id) == _kernels.end()); if (res.second) { @@ -313,151 +326,160 @@ static std::vector getProgramBinaries(cl::Program program) { return program.getInfo().front(); } -kernels_cache::kernels_map kernels_cache::build_program(const program_code& program_source) const { +void kernels_cache::build_batch(const batch_program& batch) { OV_ITT_SCOPED_TASK(itt::domains::CLDNN, "KernelsCache::BuildProgram"); - static uint32_t current_file_index = 0; - bool dump_sources = !_context.get_configuration().ocl_sources_dumps_dir.empty() || program_source.dump_custom_program; + bool dump_sources = !_context.get_configuration().ocl_sources_dumps_dir.empty() || batch.dump_custom_program; - std::string dump_file_name = ""; + std::string err_log; // accumulated build log from all program's parts (only contains messages from parts which + + std::string current_dump_file_name = ""; if (dump_sources) { - dump_file_name = _context.get_configuration().ocl_sources_dumps_dir; - if (!dump_file_name.empty() && dump_file_name.back() != '/') - dump_file_name += '/'; + current_dump_file_name = _context.get_configuration().ocl_sources_dumps_dir; + if (!current_dump_file_name.empty() && current_dump_file_name.back() != '/') + current_dump_file_name += '/'; - dump_file_name += "clDNN_program_" + std::to_string(current_file_index++) + "_part_"; + current_dump_file_name += "clDNN_program_" + std::to_string(batch.bucket_id) + "_part_" + std::to_string(batch.batch_id) + ".cl"; } + std::ofstream dump_file; + if (dump_sources) { + dump_file.open(current_dump_file_name); + if (dump_file.good()) { + for (auto& s : batch.source) + dump_file << s; + } + } + + std::string cached_bin_name = get_cache_path() + std::to_string(batch.hash_value) + ".cl_cache"; + cl::Program::Binaries precompiled_kernels = {}; + + if (is_cache_enabled()) { + // Try to load file with name ${hash_value}.cl_cache which contains precompiled kernels for current bucket + // If read is successful, then remove kernels from compilation bucket + auto bin = loadBinaryFromFile(cached_bin_name); + if (!bin.empty()) { + precompiled_kernels.push_back(bin); + } + } try { - kernels_map kmap; - std::string err_log; // accumulated build log from all program's parts (only contains messages from parts which - // failed to compile) - - uint32_t part_idx = 0; - for (size_t i = 0; i < program_source.source.size(); i++) { - auto sources_bucket_to_compile = program_source.source[i]; - const auto& hash_value = program_source.hash_values[i]; - std::string cached_bin_name = get_cache_path() + std::to_string(hash_value) + ".cl_cache"; - cl::Program::Binaries precompiled_kernels = {}; - if (is_cache_enabled()) { - // Try to load file with name ${hash_value}.cl_cache which contains precompiled kernels for current bucket - // If read is successful, then remove kernels from compilation bucket - auto bin = loadBinaryFromFile(cached_bin_name); - if (!bin.empty()) { - precompiled_kernels.push_back(bin); - } + cl::vector kernels; + + // Run compilation + if (precompiled_kernels.empty()) { + cl::Program program(_context.context(), batch.source); + { + OV_ITT_SCOPED_TASK(itt::domains::CLDNN, "KernelsCache::BuildProgram::RunCompilation"); + program.build(_context.device(), batch.options.c_str()); } - auto current_dump_file_name = dump_file_name + std::to_string(part_idx++) + ".cl"; - std::ofstream dump_file; - if (dump_sources) { - dump_file.open(current_dump_file_name); + if (dump_sources && dump_file.good()) { + dump_file << "\n/* Build Log:\n"; + for (auto& p : program.getBuildInfo()) + dump_file << p.second << "\n"; - if (dump_file.good()) { - for (auto& s : sources_bucket_to_compile) - dump_file << s; - } + dump_file << "*/\n"; } - try { - cl::vector kernels; - // Run compilation - if (precompiled_kernels.empty()) { - cl::Program program(_context.context(), sources_bucket_to_compile); - { - OV_ITT_SCOPED_TASK(itt::domains::CLDNN, "KernelsCache::BuildProgram::RunCompilation"); - program.build({_context.device()}, program_source.options.c_str()); - } - - if (dump_sources && dump_file.good()) { - dump_file << "\n/* Build Log:\n"; - for (auto& p : program.getBuildInfo()) - dump_file << p.second << "\n"; + program.createKernels(&kernels); - dump_file << "*/\n"; - } - - program.createKernels(&kernels); - if (is_cache_enabled()) { - // If kernels caching is enabled, then we save compiled bucket to binary file with name ${code_hash_value}.cl_cache - // Note: Bin file contains full bucket, not separate kernels, so kernels reuse across different models is quite limited - // Bucket size can be changed in get_max_kernels_per_batch() method, but forcing it to 1 will lead to much longer - // compile time. - saveBinaryToFile(cached_bin_name, getProgramBinaries(program)); + if (is_cache_enabled()) { + // If kernels caching is enabled, then we save compiled bucket to binary file with name ${code_hash_value}.cl_cache + // Note: Bin file contains full bucket, not separate kernels, so kernels reuse across different models is quite limited + // Bucket size can be changed in get_max_kernels_per_batch() method, but forcing it to 1 will lead to much longer + // compile time. + saveBinaryToFile(cached_bin_name, getProgramBinaries(program)); + } + } else { + cl::Program program(_context.context(), {_context.device()}, precompiled_kernels); + program.build(_context.device(), batch.options.c_str()); + program.createKernels(&kernels); + } + { + std::lock_guard lock(_context.get_cache_mutex()); + for (auto& k : kernels) { + const auto& entry_point = k.getInfo(); + const auto& k_id = batch.entry_point_to_id.find(entry_point); + const auto& k_type = kernel_type(k, _context.get_device_info().supports_usm); + if (k_id != batch.entry_point_to_id.end()) { + const auto& kmap = std::make_pair(k_id->second, k_type); + if (batch.one_time) { + _one_time_kernels.insert(kmap); + } else { + _kernels.insert(kmap); } } else { - cl::Program program(_context.context(), {_context.device()}, precompiled_kernels); - program.build({_context.device()}, program_source.options.c_str()); - program.createKernels(&kernels); - } - - for (auto& k : kernels) { - auto kernel_name = k.getInfo(); - kmap.emplace(kernel_name, kernels_cache::kernel_type(k, _context.get_device_info().supports_usm)); - } - } catch (const cl::BuildError& err) { - if (dump_sources && dump_file.good()) - dump_file << "\n/* Build Log:\n"; - - for (auto& p : err.getBuildLog()) { - if (dump_sources && dump_file.good()) - dump_file << p.second << "\n"; - - err_log += p.second + '\n'; + throw std::runtime_error("Could not find entry point"); } - - if (dump_sources && dump_file.good()) - dump_file << "*/\n"; } } - - if (!err_log.empty()) { - static const size_t max_msg_length = 128; - std::string short_err_log = err_log.length() > max_msg_length ? err_log.erase(max_msg_length) : err_log; - throw std::runtime_error("Program build failed:\n" + std::move(short_err_log)); + } catch (const cl::BuildError& err) { + if (dump_sources && dump_file.good()) + dump_file << "\n/* Build Log:\n"; + + for (auto& p : err.getBuildLog()) { + if (dump_sources && dump_file.good()) + dump_file << p.second << "\n"; + err_log += p.second + '\n'; } - - return kmap; - } catch (const cl::Error& err) { - throw ocl_error(err); + if (dump_sources && dump_file.good()) + dump_file << "*/\n"; + } + if (!err_log.empty()) { + throw std::runtime_error("Program build failed. You may enable OCL source dump to see the error log.\n"); } } -kernels_cache::kernel_type kernels_cache::get_kernel(kernel_id id, bool one_time_kernel) { - build_all(); - if (one_time_kernel) { - return _one_time_kernels.at(id); - } else { - return _kernels.at(id); - } +kernels_cache::kernel_type kernels_cache::get_kernel(kernel_id id, bool one_time_kernel) const { + if (_pending_compilation) + throw std::runtime_error("Kernel cache is not compiled, call build_all() first!"); + + const auto& kernels = one_time_kernel ? _one_time_kernels : _kernels; + auto res = kernels.find(id); + if (kernels.end() == res) + throw std::runtime_error("Kernel " + id + " not found in the kernel cache!"); + return res->second; } void kernels_cache::build_all() { OV_ITT_SCOPED_TASK(itt::domains::CLDNN, "KernelsCache::BuildAll"); if (!_pending_compilation) return; + std::vector batches; + { + std::lock_guard lock(_context.get_cache_mutex()); + get_program_source(_kernels_code, &batches); + _one_time_kernels.clear(); + } - std::lock_guard lock(_context.get_cache_mutex()); - - auto sorted_program_code = get_program_source(_kernels_code); - - _one_time_kernels.clear(); - for (auto& program : sorted_program_code) { - auto kernels = build_program(program.second); - - for (auto& k : kernels) { - const auto& entry_point = k.first; - const auto& k_id = program.second.entry_point_to_id[entry_point]; - if (program.second.one_time) { - _one_time_kernels[k_id] = k.second; - } else { - _kernels[k_id] = k.second; +#if (CLDNN_THREADING == CLDNN_THREADING_TBB) + arena->execute([this, &batches] { + tbb::parallel_for(tbb::blocked_range(0, batches.size()), [this, &batches](const tbb::blocked_range& r) { + for (auto i = r.begin(); i != r.end(); ++i) { + build_batch(batches[i]); } - } + }); + }); +#elif(CLDNN_THREADING == CLDNN_THREADING_THREADPOOL) + std::vector> builds; + for (size_t i = 0; i < batches.size(); ++i) { + builds.push_back(pool->enqueue([this, &batches, i] () { + build_batch(batches[i]); + })); } + std::for_each(builds.begin(), builds.end(), [] (std::future& f) { f.wait(); }); +#else + // no parallel build + for (const auto& batch : batches) { + build_batch(batch); + } +#endif - _kernels_code.clear(); - _pending_compilation = false; + { + std::lock_guard lock(_context.get_cache_mutex()); + _kernels_code.clear(); + _pending_compilation = false; + } } void kernels_cache::reset() { @@ -466,6 +488,5 @@ void kernels_cache::reset() { _kernels_code.clear(); _pending_compilation = false; } - } // namespace gpu } // namespace cldnn diff --git a/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.h b/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.h index 234efee9ff145b..7cf31598bbf01a 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/kernels_cache.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -25,6 +13,19 @@ #include #include +#define CLDNN_THREADING_SEQ 0 +#define CLDNN_THREADING_TBB 1 +#define CLDNN_THREADING_THREADPOOL 2 + +#if (CLDNN_THREADING == CLDNN_THREADING_TBB) +#include +#elif(CLDNN_THREADING == CLDNN_THREADING_THREADPOOL) +#include +#include +#include +#include +#endif + namespace cl { class Kernel; class KernelIntel; @@ -38,14 +39,76 @@ namespace cldnn { namespace gpu { class gpu_toolkit; +#if (CLDNN_THREADING == CLDNN_THREADING_THREADPOOL) +class thread_pool { +public: + thread_pool(size_t num_threads) : _stop_pool(false) { + _workers.reserve(num_threads); + for (size_t i = 0; i < num_threads; ++i) { + _workers.emplace_back(std::thread(&thread_pool::worker_thread, this)); + } + } + + ~thread_pool() { + { + std::lock_guard lock(_q_m); + _stop_pool = true; + } + this->wait_all(); + } + + template + std::future::type> enqueue(F&& f, Args&&... args) { + if (_stop_pool) { + throw std::runtime_error("Thread pool is stoped"); + } + using return_type = typename std::result_of::type; + auto task = std::make_shared> (std::bind(std::forward(f), std::forward(args)...)); + std::future result = task->get_future(); + { + std::lock_guard lock(_q_m); + _tasks.push([task]() {(*task)();}); + } + _cv.notify_one(); + return result; + } + + void wait_all() { + _cv.notify_all(); + for (auto& w : _workers) { + w.join(); + } + } + +private: + std::vector _workers; + std::queue> _tasks; + std::condition_variable _cv; + std::mutex _q_m; + bool _stop_pool; + + void worker_thread() { + while (true) { + std::unique_lock lock(this->_q_m); + _cv.wait(lock, [this]() { return (!this->_tasks.empty()) || (_stop_pool); }); + if ((_stop_pool) && (this->_tasks.empty())) return; + auto task = std::move(_tasks.front()); + this->_tasks.pop(); + lock.unlock(); + task(); + } + } +}; +#endif class kernels_cache { public: using source_code = std::vector; - - struct program_code { - std::vector source; - std::vector hash_values; + struct batch_program { + int32_t bucket_id = 0; + int32_t batch_id = 0; + source_code source; + size_t hash_value; uint32_t kernels_counter = 0; std::string options; bool dump_custom_program = false; @@ -70,7 +133,7 @@ class kernels_cache { bool operator == (const kernel_code& c2) const { return kernel_strings->get_hash() == c2.kernel_strings->get_hash(); - }; + } }; struct hash_kernel_code { @@ -81,7 +144,6 @@ class kernels_cache { typedef std::string kernel_id; typedef cl::KernelIntel kernel_type; - using sorted_code = std::map; using kernels_map = std::map; using kernels_code = std::unordered_set; @@ -89,23 +151,30 @@ class kernels_cache { gpu_toolkit& _context; kernels_code _kernels_code; std::atomic _pending_compilation{false}; - std::map _kernels; - std::map _one_time_kernels; // These kernels are intended to be executed only once (can + std::map _kernels; + std::map _one_time_kernels; // These kernels are intended to be executed only once (can // be removed later from the cache). uint32_t _prog_id; +#if (CLDNN_THREADING == CLDNN_THREADING_TBB) + std::unique_ptr arena; +#elif(CLDNN_THREADING == CLDNN_THREADING_THREADPOOL) + std::unique_ptr pool; +#endif - sorted_code get_program_source(const kernels_code& kernels_source_code) const; - kernels_map build_program(const program_code& pcode) const; + + void get_program_source(const kernels_code& kernels_source_code, std::vector*) const; + void build_batch(const batch_program& batch); std::string get_cache_path() const; bool is_cache_enabled() const; size_t get_max_kernels_per_batch() const; + public: explicit kernels_cache(gpu_toolkit& context, uint32_t prog_id); kernel_id set_kernel_source(const std::shared_ptr& kernel_string, bool dump_custom_program, bool one_time_kernel); - kernel_type get_kernel(kernel_id id, bool one_time_kernel); + kernel_type get_kernel(kernel_id id, bool one_time_kernel) const; gpu_toolkit& get_context() { return _context; } // forces compilation of all pending kernels/programs void build_all(); diff --git a/inference-engine/thirdparty/clDNN/src/gpu/lrn_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/lrn_gpu.cpp index 28555a88850087..c12c07aad6753d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/lrn_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/lrn_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lrn_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_input_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_input_gpu.cpp index f2a15259bdb9b6..30640edd24e06a 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_input_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_input_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_timeloop_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_timeloop_gpu.cpp index 0df109e54f1f3c..bbacc878735fa9 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_timeloop_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/lstm_dynamic_timeloop_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/gpu/lstm_elt_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/lstm_elt_gpu.cpp index 23170ab224e079..b4a45bfe41500c 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/lstm_elt_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/lstm_elt_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/gpu/lstm_gemm_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/lstm_gemm_gpu.cpp index abb33e4475b479..2b27aee688ee99 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/lstm_gemm_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/lstm_gemm_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/gpu/max_unpooling_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/max_unpooling_gpu.cpp index c1601a5c3026a5..7e903fc65b0fdd 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/max_unpooling_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/max_unpooling_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "max_unpooling_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.cpp index 1d9686847fbeb6..5a839905ac38c3 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "error_handler.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.h b/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.h index 01fbcb2829134b..e1ac301f997c55 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/memory_gpu.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/mutable_data_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/mutable_data_gpu.cpp index 70d9f8f44f81f7..0b2285af85915d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/mutable_data_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/mutable_data_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "mutable_data_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/mvn_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/mvn_gpu.cpp index 429201bb7a9207..d2b839e7a9de6a 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/mvn_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/mvn_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "mvn_inst.h" #include "primitive_gpu_base.h" @@ -43,6 +31,9 @@ struct mvn_gpu : typed_primitive_gpu_impl { mvn_params.mvnNormalizeVariance = arg.get_primitive()->normalize_variance; mvn_params.epsilon = arg.get_primitive()->epsilon; + mvn_params.mvnEpsMode = arg.get_primitive()->eps_inside_sqrt ? kernel_selector::mvn_eps_mode::INSIDE_SQRT + : kernel_selector::mvn_eps_mode::OUTSIDE_SQRT; + auto& kernel_selector = kernel_selector::mvn_kernel_selector::Instance(); auto best_kernels = kernel_selector.GetBestKernels(mvn_params, mvn_optional_params); diff --git a/inference-engine/thirdparty/clDNN/src/gpu/non_max_suppression_cpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/non_max_suppression_cpu.cpp index a803900401ee45..bcb8f006c3a565 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/non_max_suppression_cpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/non_max_suppression_cpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "non_max_suppression_inst.h" #include "primitive_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/normalize_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/normalize_gpu.cpp index 52d3b545341088..9a8a025ffb78bb 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/normalize_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/normalize_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "normalize_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.cpp b/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.cpp index 3e4ec0466b4031..09e2cfda0b9254 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "ocl_base_event.h" @@ -118,7 +106,6 @@ bool base_events::is_set_impl() { } bool base_events::get_profiling_info_impl(std::list& info) { - // For every profiling period (i.e. submission / starting / executing), // the goal is to sum up all disjoint durations of its projection on the time axis diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.h b/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.h index 9d7ad72ead2ae5..988628497dad1a 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_base_event.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.cpp b/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.cpp index 2e590d044c19a1..a906e09970337c 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.cpp @@ -1,23 +1,12 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "ocl_builder.h" #include "configuration.h" #include "include/to_string_utils.h" +#include "api/device.hpp" #include #include #include @@ -49,8 +38,7 @@ std::map ocl_builder::get_available_devices(void* std::map ret; for (auto& dptr : dev_orig) { - auto flag = dptr->get_device().getInfo(); - if (flag != 0) + if (dptr->get_info().dev_type == cldnn::device_type::integrated_gpu) dev_sorted.insert(dev_sorted.begin(), dptr); else dev_sorted.push_back(dptr); diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.h b/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.h index d013d0e78563d7..5f426c9042f27d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_builder.h @@ -1,25 +1,10 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once -// we want exceptions -#define CL_HPP_ENABLE_EXCEPTIONS -#define CL_HPP_MINIMUM_OPENCL_VERSION 120 -#define CL_HPP_TARGET_OPENCL_VERSION 120 + #include #include #include diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.cpp b/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.cpp index 2f38a8ae6673df..60298e65a8547f 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "ocl_queue_wrapper.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.h b/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.h index 3a0b8b1733a39a..55dabcdcfd04db 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_queue_wrapper.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -40,7 +28,7 @@ namespace gpu { typedef CL_API_ENTRY cl_command_queue(CL_API_CALL* pfn_clCreateCommandQueueWithPropertiesINTEL)( cl_context context, cl_device_id device, - const cl_queue_properties* properties, + const cl_queue_properties_khr* properties, cl_int* errcodeRet); class gpu_toolkit; diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.cpp b/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.cpp index 76eacfbe89dd37..3ee0842eb26f95 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "ocl_toolkit.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.h b/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.h index fdc8378afe9766..ba8a3cb8d26e1e 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_toolkit.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -39,7 +27,7 @@ namespace gpu { typedef CL_API_ENTRY cl_command_queue(CL_API_CALL* pfn_clCreateCommandQueueWithPropertiesINTEL)( cl_context context, cl_device_id device, - const cl_queue_properties* properties, + const cl_queue_properties_khr* properties, cl_int* errcodeRet); class ocl_error : public std::runtime_error { diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.cpp b/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.cpp index 3e45cec2131010..c5663fb549d696 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "ocl_user_event.h" #include diff --git a/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.h b/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.h index e101e45d550041..45e44509face3a 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/ocl_user_event.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/one_hot_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/one_hot_gpu.cpp index 000154cfd7c4b0..1c2704a5b26c15 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/one_hot_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/one_hot_gpu.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "one_hot_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/permute_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/permute_gpu.cpp index 86d8b04e8859c2..31bc335b90470d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/permute_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/permute_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "permute_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/pooling_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/pooling_gpu.cpp index 0f38da3a5b9119..aec365a8d6ba75 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/pooling_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/pooling_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "pooling_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.cpp b/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.cpp index d474ba8a94504b..9e4479695c8470 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "primitive_gpu_base.h" #include diff --git a/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.h b/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.h index 0a8a974e914903..c08058d9c67950 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/primitive_gpu_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/proposal_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/proposal_gpu.cpp index 82e3f7c8e0fc41..889703234673a1 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/proposal_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/proposal_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "proposal_inst.h" #include "kernel.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/push_pop_map.h b/inference-engine/thirdparty/clDNN/src/gpu/push_pop_map.h index ef57836a98d705..c4fc57ed14c1c9 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/push_pop_map.h +++ b/inference-engine/thirdparty/clDNN/src/gpu/push_pop_map.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/gpu/pyramid_roi_align_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/pyramid_roi_align_gpu.cpp index c9d28174d283ec..3b16e678c2ceb0 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/pyramid_roi_align_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/pyramid_roi_align_gpu.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "primitive_gpu_base.h" #include "implementation_map.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/quantize_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/quantize_gpu.cpp index 68cf8caccbfccb..aefaa20eb8cc06 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/quantize_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/quantize_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "quantize_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/reduce_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/reduce_gpu.cpp index 1dacf794c55719..2bf2f7535b2e1e 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/reduce_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/reduce_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reduce_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/region_yolo_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/region_yolo_gpu.cpp index bbf50ae64ceeb0..5bbe70ce8ed00e 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/region_yolo_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/region_yolo_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "region_yolo_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.cpp index fab9ed83113a9d..f272c6023fba59 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "register_gpu.hpp" @@ -69,6 +57,7 @@ void register_implementations_gpu() { REGISTER_GPU(roi_pooling); REGISTER_GPU(scale); REGISTER_GPU(scatter_update); + REGISTER_GPU(scatter_nd_update); REGISTER_GPU(scatter_elements_update); REGISTER_GPU(select); REGISTER_GPU(shuffle_channels); diff --git a/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.hpp b/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.hpp index 37795e88812b73..646dee946533b0 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.hpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/register_gpu.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -62,6 +50,7 @@ #include "api/scale.hpp" #include "api/scatter_update.hpp" #include "api/scatter_elements_update.hpp" +#include "api/scatter_nd_update.hpp" #include "api/select.hpp" #include "api/shuffle_channels.hpp" #include "api/softmax.hpp" @@ -138,6 +127,7 @@ REGISTER_GPU(roi_pooling); REGISTER_GPU(scale); REGISTER_GPU(scatter_update); REGISTER_GPU(scatter_elements_update); +REGISTER_GPU(scatter_nd_update); REGISTER_GPU(select); REGISTER_GPU(shuffle_channels); REGISTER_GPU(softmax); diff --git a/inference-engine/thirdparty/clDNN/src/gpu/reorder_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/reorder_gpu.cpp index f12bda978a56ab..e3961faaa000dc 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/reorder_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/reorder_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reorder_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/reorg_yolo_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/reorg_yolo_gpu.cpp index 91f1c3784d028b..b8badf3584e524 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/reorg_yolo_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/reorg_yolo_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reorg_yolo_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/resample_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/resample_gpu.cpp index 7607232ed0670f..18697841ac478d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/resample_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/resample_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "resample_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/reshape_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/reshape_gpu.cpp index 25eda178f34c16..04a89b42002b03 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/reshape_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/reshape_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reshape_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/reverse_sequence_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/reverse_sequence_gpu.cpp index 1b4b8480bd2541..01a03b9a251460 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/reverse_sequence_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/reverse_sequence_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reverse_sequence_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/roi_pooling_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/roi_pooling_gpu.cpp index c81d2a1634631d..c8f1fde2290976 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/roi_pooling_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/roi_pooling_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "roi_pooling_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/scale_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/scale_gpu.cpp index 9645def25fa9f6..0f6a91b3f546b8 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/scale_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/scale_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scale_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/scatter_elements_update_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/scatter_elements_update_gpu.cpp index 06832ecf2c4635..00d756142fddf5 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/scatter_elements_update_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/scatter_elements_update_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_elements_update_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/scatter_nd_update_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/scatter_nd_update_gpu.cpp new file mode 100644 index 00000000000000..c9014120b51d65 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/src/gpu/scatter_nd_update_gpu.cpp @@ -0,0 +1,66 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "scatter_nd_update_inst.h" +#include "primitive_gpu_base.h" +#include "implementation_map.h" +#include "kernel_selector_helper.h" +#include "scatter_update/scatter_nd_update_kernel_selector.h" +#include "scatter_update/scatter_nd_update_kernel_ref.h" +#include "error_handler.h" + +using namespace cldnn; + +namespace cldnn { +namespace gpu { + +struct scatter_nd_update_gpu : typed_primitive_gpu_impl { + using parent = typed_primitive_gpu_impl; + using parent::parent; + +public: + static primitive_impl* create(const scatter_nd_update_node& arg) { + auto scatter_nd_update_params = get_default_params(arg); + auto scatter_nd_update_optional_params = + get_default_optional_params(arg.get_program()); + + scatter_nd_update_params.indices_rank = arg.get_primitive()->indices_rank; + + scatter_nd_update_params.inputs.push_back(convert_data_tensor(arg.input(1).get_output_layout())); + scatter_nd_update_params.inputs.push_back(convert_data_tensor(arg.input(2).get_output_layout())); + + auto& kernel_selector = kernel_selector::scatter_nd_update_kernel_selector::Instance(); + auto best_kernels = kernel_selector.GetBestKernels(scatter_nd_update_params, scatter_nd_update_optional_params); + + CLDNN_ERROR_BOOL(arg.id(), + "Best_kernel.empty()", + best_kernels.empty(), + "Cannot find a proper kernel with this arguments"); + + auto scatter_nd_update = new scatter_nd_update_gpu(arg, best_kernels[0]); + + return scatter_nd_update; + } +}; + +namespace detail { + +attach_scatter_nd_update_gpu::attach_scatter_nd_update_gpu() { + auto val_fw = scatter_nd_update_gpu::create; + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f32, format::bfyx), val_fw); + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f16, format::bfyx), val_fw); + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::i32, format::bfyx), val_fw); + + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f32, format::bfzyx), val_fw); + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f16, format::bfzyx), val_fw); + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::i32, format::bfzyx), val_fw); + + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f32, format::bfwzyx), val_fw); + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::f16, format::bfwzyx), val_fw); + implementation_map::add(std::make_tuple(engine_types::ocl, data_types::i32, format::bfwzyx), val_fw); +} + +} // namespace detail +} // namespace gpu +} // namespace cldnn diff --git a/inference-engine/thirdparty/clDNN/src/gpu/scatter_update_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/scatter_update_gpu.cpp index 416eda9fe327e8..8bf3e7122a270a 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/scatter_update_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/scatter_update_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_update_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/select_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/select_gpu.cpp index c8cb4732055a34..88d088113054ac 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/select_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/select_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "select_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/shuffle_channels_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/shuffle_channels_gpu.cpp index 3d8dd07c091829..95a7705aa3a61f 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/shuffle_channels_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/shuffle_channels_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "shuffle_channels_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/softmax_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/softmax_gpu.cpp index f6b938fdffe90f..70cdf63d3cff4d 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/softmax_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/softmax_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "softmax_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/space_to_batch_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/space_to_batch_gpu.cpp index c73d986ccf0b50..5961ee1858cb5f 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/space_to_batch_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/space_to_batch_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_batch_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/space_to_depth_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/space_to_depth_gpu.cpp index b4fea787b42777..0866cebd143b0f 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/space_to_depth_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/space_to_depth_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_depth_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/strided_slice_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/strided_slice_gpu.cpp index e8ce5b13898bc2..d78a08eef69fd5 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/strided_slice_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/strided_slice_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "strided_slice_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/tile_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/tile_gpu.cpp index 9f2545e63c060b..02f95954f58e79 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/tile_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/tile_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "tile_inst.h" #include "primitive_gpu_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/gpu/wait_for_events_gpu.cpp b/inference-engine/thirdparty/clDNN/src/gpu/wait_for_events_gpu.cpp index dc1596d30fb8c7..38a822dca525d8 100644 --- a/inference-engine/thirdparty/clDNN/src/gpu/wait_for_events_gpu.cpp +++ b/inference-engine/thirdparty/clDNN/src/gpu/wait_for_events_gpu.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "primitive_inst.h" #include "data_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/add_required_reorders.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/add_required_reorders.cpp index 5d45db4eabc9ba..7d61c77158d9d0 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/add_required_reorders.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/add_required_reorders.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/basic_memory_dependencies.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/basic_memory_dependencies.cpp index 97cf43cbf490f9..540a81707aae69 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/basic_memory_dependencies.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/basic_memory_dependencies.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/calculate_prior_boxes.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/calculate_prior_boxes.cpp index ac2ace87d9fe39..387512cae04c2f 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/calculate_prior_boxes.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/calculate_prior_boxes.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/compile_graph.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/compile_graph.cpp index ce0008be600ed1..fe236c180d8c41 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/compile_graph.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/compile_graph.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/concat_input_order.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/concat_input_order.cpp index 85594322f72635..2e949169e3d35b 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/concat_input_order.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/concat_input_order.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_remove_stride.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_remove_stride.cpp index dbf8d28f846341..c30a3348548f5c 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_remove_stride.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_remove_stride.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_shrinking.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_shrinking.cpp index 92d03b3b7bb6c2..d4ace81e1714fb 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_shrinking.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/eltwise_shrinking.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "pass_manager.h" #include "eltwise_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/graph_initializations.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/graph_initializations.cpp index 000ba5dc2791c9..c4284fc3944917 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/graph_initializations.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/graph_initializations.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_input_padding.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_input_padding.cpp index ad59b8b0c4f0de..76e6b1bc5b1a8e 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_input_padding.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_input_padding.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_reshape.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_reshape.cpp index cf0ecf6399e873..54423a6d758be7 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_reshape.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/handle_reshape.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -40,13 +28,19 @@ void handle_reshape::run(program_impl& p) { while (node_itr != p.get_processing_order().end()) { auto node = (*node_itr++); program_helpers::do_for_types(*node, [&p](reshape_node& node) { - auto input_lay = node.input().get_output_layout(); + auto& input_node = node.input(); + auto input_lay = input_node.get_output_layout(); auto output_lay = node.get_output_layout(); if (!node.is_in_place()) return; - if (program_helpers::are_layouts_identical(input_lay, output_lay).first) { + auto are_layouts_identical = program_helpers::are_layouts_identical(input_lay, output_lay); + if (are_layouts_identical.first) { + p.add_optimized_primitive_info(node.id()); + p.extract_and_remove(node); + } else if (are_layouts_identical.second && input_node.is_type()) { + input_node.set_output_layout(output_lay, false); p.add_optimized_primitive_info(node.id()); p.extract_and_remove(node); } diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/mark_nodes.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/mark_nodes.cpp index 8ac83ef8454cec..6b9c0ddcdcc26f 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/mark_nodes.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/mark_nodes.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/oooq_memory_dependencies.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/oooq_memory_dependencies.cpp index 26d81191cb496c..052d70bdc4f98e 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/oooq_memory_dependencies.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/oooq_memory_dependencies.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_input_reorder.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_input_reorder.cpp index 6d5fded9598a66..f98eabd2cf6514 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_input_reorder.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_input_reorder.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_optimize_weights.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_optimize_weights.cpp index bee0c197dae344..271293e4dc43ea 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_optimize_weights.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/post_optimize_weights.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_optimize_bias.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_optimize_bias.cpp index 5a4204c76835b3..9314d6ad873700 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_optimize_bias.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_optimize_bias.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_replace_deconv.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_replace_deconv.cpp index dee2b4d3daa590..874eedb91ce759 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_replace_deconv.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/pre_replace_deconv.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_buffer_fusing.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_buffer_fusing.cpp index 4299d1a5bfc4b7..d3618d1034bda2 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_buffer_fusing.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_buffer_fusing.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp index 8e15fd5360a043..3030640516c120 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_primitive_fusing.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_primitive_fusing.cpp index 7ad1cf87c6e859..fd8d4233d7d628 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_primitive_fusing.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_primitive_fusing.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -45,6 +33,7 @@ #include "space_to_depth_inst.h" #include "gather_inst.h" #include "scatter_update_inst.h" +#include "scatter_nd_update_inst.h" #include "scatter_elements_update_inst.h" #include "reverse_sequence_inst.h" #include "shuffle_channels_inst.h" @@ -206,6 +195,7 @@ void prepare_primitive_fusing::fuse_activations(program_impl &p) { !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && + !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type() && !input.is_type())) @@ -540,6 +530,8 @@ void prepare_primitive_fusing::fuse_simple_primitives(program_impl &p) { should_fuse |= input_data.is_type(); + should_fuse |= input_data.is_type(); + should_fuse |= input_data.is_type(); should_fuse |= input_data.is_type(); @@ -604,6 +596,8 @@ void prepare_primitive_fusing::fuse_simple_primitives(program_impl &p) { should_fuse |= input_data.is_type(); + should_fuse |= input_data.is_type(); + should_fuse |= input_data.is_type(); should_fuse |= input_data.is_type(); @@ -690,6 +684,8 @@ void prepare_primitive_fusing::fuse_simple_primitives(program_impl &p) { should_fuse |= input_data.is_type() && quantize_node.get_scale_shift_opt(); + should_fuse |= input_data.is_type() && quantize_node.get_scale_shift_opt(); + should_fuse |= input_data.is_type() && quantize_node.get_scale_shift_opt(); should_fuse |= input_data.is_type() && quantize_node.get_scale_shift_opt(); @@ -745,6 +741,7 @@ void prepare_primitive_fusing::fuse_simple_primitives(program_impl &p) { (parents[i]->is_type()) || (parents[i]->is_type() && eltwise_supports_fusings(parents[i]->as())) || (parents[i]->is_type()) || + (parents[i]->is_type()) || (parents[i]->is_type()) || (parents[i]->is_type() && pooling_supports_fusings(parents[i]->as())) || (parents[i]->is_type() && dts_supports_fusings(parents[i]->as())) || @@ -766,8 +763,7 @@ void prepare_primitive_fusing::fuse_simple_primitives(program_impl &p) { if (p1_raw_size[k] != 1) return; can_fuse_parents[0] = false; - } - else if (p2_raw_size[k] < p1_raw_size[k]) { + } else if (p2_raw_size[k] < p1_raw_size[k]) { if (p2_raw_size[k] != 1) return; can_fuse_parents[1] = false; diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_quantization.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_quantization.cpp index 18ac3d0f62c6fb..5e6401a106e7f0 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_quantization.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_quantization.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/propagate_constants.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/propagate_constants.cpp index f3d14e6ffa7d00..0229027776ca20 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/propagate_constants.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/propagate_constants.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp index d7a1c4f311aa5e..5d1fc6e6977bd2 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -25,6 +13,7 @@ #include "reshape_inst.h" #include "one_hot_inst.h" +#include "permute_inst.h" using namespace cldnn; @@ -278,45 +267,46 @@ void remove_redundant_reorders::run(program_impl& p) { // This pass removed reorder if previous node can store directly to required layout itr = p.get_processing_order().begin(); - while (itr != p.get_processing_order().end()) { - auto& node_ptr = *itr++; - if (!node_ptr->is_type()) // only care for reorders - continue; + if (enable_reorder_fusing) { + while (itr != p.get_processing_order().end()) { + auto& node_ptr = *itr++; + if (!node_ptr->is_type()) // only care for reorders + continue; - auto& node = node_ptr->as(); + auto& node = node_ptr->as(); - auto& input = node.input(); - auto output_layout = node.get_output_layout(); + auto& input = node.input(); + auto output_layout = node.get_output_layout(); - if (node.is_output()) - continue; + if (node.is_output()) + continue; - if (node.has_mean() || !node.get_primitive()->subtract_per_feature.empty()) - continue; + if (node.has_mean() || !node.get_primitive()->subtract_per_feature.empty()) + continue; - if (!node.get_fused_activations_funcs().empty()) - continue; + if (!node.get_fused_activations_funcs().empty()) + continue; - if (input.get_users().size() != 1 || node.get_users().empty()) - continue; + if (input.get_users().size() != 1 || node.get_users().empty()) + continue; - bool same_data_type = input.get_output_layout().data_type == output_layout.data_type; - bool allowed_dt_conversion_fuse = input.is_type(); - if (!same_data_type && !allowed_dt_conversion_fuse) - continue; + bool same_data_type = input.get_output_layout().data_type == output_layout.data_type; + bool allowed_dt_conversion_fuse = (input.is_type()) || (input.is_type()); + if (!same_data_type && !allowed_dt_conversion_fuse) + continue; - if (!lo.can_fuse_reorder_to_prev(input, *node.get_users().front(), input.get_output_layout().format, output_layout.format)) - continue; + if (!lo.can_fuse_reorder_to_prev(input, *node.get_users().front(), input.get_output_layout().format, output_layout.format)) + continue; - input.set_output_layout(output_layout, false); - if (input.type()->does_possible_implementation_exist(p.get_engine(), input)) { - p.replace_all_usages(node, input); - p.add_optimized_primitive_info(node.id()); - p.remove_all_connections(node); - p.remove_if_dangling(node); + input.set_output_layout(output_layout, false); + if (input.type()->does_possible_implementation_exist(p.get_engine(), input)) { + p.replace_all_usages(node, input); + p.add_optimized_primitive_info(node.id()); + p.remove_all_connections(node); + p.remove_if_dangling(node); + } } } - // This pass removed reorder if the next node supports reorder's input format and data type doesn't change itr = p.get_processing_order().begin(); while (itr != p.get_processing_order().end()) { diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/reorder_inputs.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/reorder_inputs.cpp index 46efaa5f0cf735..689157262ccc08 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/reorder_inputs.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/reorder_inputs.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/reverse_optional_nodes_outputs.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/reverse_optional_nodes_outputs.cpp index 7d8cd273528a57..7b39a83f7b598e 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/reverse_optional_nodes_outputs.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/reverse_optional_nodes_outputs.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/skipped_branch_memory_dependencies.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/skipped_branch_memory_dependencies.cpp index 3b3057f64468d6..bb9578142b203a 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/skipped_branch_memory_dependencies.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/skipped_branch_memory_dependencies.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/strided_slice_optimize.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/strided_slice_optimize.cpp index e70620ed0f0c1c..50ddea1771a183 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/strided_slice_optimize.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/strided_slice_optimize.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/trim_to_outputs.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/trim_to_outputs.cpp index 5f6c9dce17d98c..d8c9c2e1dd7d0f 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/trim_to_outputs.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/trim_to_outputs.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/grn.cpp b/inference-engine/thirdparty/clDNN/src/grn.cpp index 66deafd30d2eca..23e6b54aa8bbac 100644 --- a/inference-engine/thirdparty/clDNN/src/grn.cpp +++ b/inference-engine/thirdparty/clDNN/src/grn.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "grn_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/half.cpp b/inference-engine/thirdparty/clDNN/src/half.cpp index 11a3eca7919ba1..95b0e916502a31 100644 --- a/inference-engine/thirdparty/clDNN/src/half.cpp +++ b/inference-engine/thirdparty/clDNN/src/half.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/src/include/activation_inst.h b/inference-engine/thirdparty/clDNN/src/include/activation_inst.h index ebb235f19fc4ca..f5c66dac45dbc7 100644 --- a/inference-engine/thirdparty/clDNN/src/include/activation_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/activation_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/arg_max_min_inst.h b/inference-engine/thirdparty/clDNN/src/include/arg_max_min_inst.h index 939d2211351614..48a899dbc1ccf5 100644 --- a/inference-engine/thirdparty/clDNN/src/include/arg_max_min_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/arg_max_min_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/average_unpooling_inst.h b/inference-engine/thirdparty/clDNN/src/include/average_unpooling_inst.h index be91e855b7accf..e20df8e759750a 100644 --- a/inference-engine/thirdparty/clDNN/src/include/average_unpooling_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/average_unpooling_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/batch_to_space_inst.h b/inference-engine/thirdparty/clDNN/src/include/batch_to_space_inst.h index a158c96b859ef4..930db1ae93f0f2 100644 --- a/inference-engine/thirdparty/clDNN/src/include/batch_to_space_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/batch_to_space_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/binary_convolution_inst.h b/inference-engine/thirdparty/clDNN/src/include/binary_convolution_inst.h index 027499c55859f9..f4ce140d4f804a 100644 --- a/inference-engine/thirdparty/clDNN/src/include/binary_convolution_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/binary_convolution_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/border_inst.h b/inference-engine/thirdparty/clDNN/src/include/border_inst.h index 5d750f621e1ef1..d724b426891787 100644 --- a/inference-engine/thirdparty/clDNN/src/include/border_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/border_inst.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/broadcast_inst.h b/inference-engine/thirdparty/clDNN/src/include/broadcast_inst.h index aa9cd1cd0ef0e6..9b8471d44db2ee 100644 --- a/inference-engine/thirdparty/clDNN/src/include/broadcast_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/broadcast_inst.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/cldnn_itt.h b/inference-engine/thirdparty/clDNN/src/include/cldnn_itt.h index d2bbdca464e29c..979ba14aad0435 100644 --- a/inference-engine/thirdparty/clDNN/src/include/cldnn_itt.h +++ b/inference-engine/thirdparty/clDNN/src/include/cldnn_itt.h @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing diff --git a/inference-engine/thirdparty/clDNN/src/include/concatenation_inst.h b/inference-engine/thirdparty/clDNN/src/include/concatenation_inst.h index 9899a3e12ce04c..ffdb51a63de9e3 100644 --- a/inference-engine/thirdparty/clDNN/src/include/concatenation_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/concatenation_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/condition_inst.h b/inference-engine/thirdparty/clDNN/src/include/condition_inst.h index c03931c8f88596..8a8859b55b6f88 100644 --- a/inference-engine/thirdparty/clDNN/src/include/condition_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/condition_inst.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/convolution_inst.h b/inference-engine/thirdparty/clDNN/src/include/convolution_inst.h index 932db2adb0cd76..b90d667134ce90 100644 --- a/inference-engine/thirdparty/clDNN/src/include/convolution_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/convolution_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/crop_inst.h b/inference-engine/thirdparty/clDNN/src/include/crop_inst.h index 75369a82e80edb..4ae7a095f0b495 100644 --- a/inference-engine/thirdparty/clDNN/src/include/crop_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/crop_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/ctc_greedy_decoder_inst.h b/inference-engine/thirdparty/clDNN/src/include/ctc_greedy_decoder_inst.h index be395809102176..7e856ff2e0cd9f 100644 --- a/inference-engine/thirdparty/clDNN/src/include/ctc_greedy_decoder_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/ctc_greedy_decoder_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/cum_sum_inst.h b/inference-engine/thirdparty/clDNN/src/include/cum_sum_inst.h index 4b05bdc02edce9..452076299e8b7e 100644 --- a/inference-engine/thirdparty/clDNN/src/include/cum_sum_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/cum_sum_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/custom_gpu_primitive_inst.h b/inference-engine/thirdparty/clDNN/src/include/custom_gpu_primitive_inst.h index e964281a8f0027..125dbcfc2b65b3 100644 --- a/inference-engine/thirdparty/clDNN/src/include/custom_gpu_primitive_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/custom_gpu_primitive_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/data_inst.h b/inference-engine/thirdparty/clDNN/src/include/data_inst.h index 782e41d5e2711f..311257992c9f51 100644 --- a/inference-engine/thirdparty/clDNN/src/include/data_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/data_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/deconvolution_inst.h b/inference-engine/thirdparty/clDNN/src/include/deconvolution_inst.h index e06c8454b1b581..c96d179aa9800f 100644 --- a/inference-engine/thirdparty/clDNN/src/include/deconvolution_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/deconvolution_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/deformable_convolution_inst.h b/inference-engine/thirdparty/clDNN/src/include/deformable_convolution_inst.h index a622e519179b00..63c4556b65fa32 100644 --- a/inference-engine/thirdparty/clDNN/src/include/deformable_convolution_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/deformable_convolution_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/depth_to_space_inst.h b/inference-engine/thirdparty/clDNN/src/include/depth_to_space_inst.h index 67788d9333db9a..0d85e72663b30f 100644 --- a/inference-engine/thirdparty/clDNN/src/include/depth_to_space_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/depth_to_space_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/detection_output_inst.h b/inference-engine/thirdparty/clDNN/src/include/detection_output_inst.h index 9d91778f96e6b1..398767ed581b1d 100644 --- a/inference-engine/thirdparty/clDNN/src/include/detection_output_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/detection_output_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/device_impl.h b/inference-engine/thirdparty/clDNN/src/include/device_impl.h index d44f6c6023ebfd..9c692ae49bc110 100644 --- a/inference-engine/thirdparty/clDNN/src/include/device_impl.h +++ b/inference-engine/thirdparty/clDNN/src/include/device_impl.h @@ -1,24 +1,9 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once -#define CL_HPP_ENABLE_EXCEPTIONS -#define CL_HPP_MINIMUM_OPENCL_VERSION 120 -#define CL_HPP_TARGET_OPENCL_VERSION 120 #include #include "gpu/device_info.h" #include "api/device.hpp" @@ -72,8 +57,8 @@ class memory_capabilities { std::vector _caps; bool does_device_support(int32_t param, const cl::Device& device) { - cl_unified_shared_memory_capabilities_intel capabilities; - auto err = clGetDeviceInfo(device.get(), param, sizeof(cl_unified_shared_memory_capabilities_intel), &capabilities, NULL); + cl_device_unified_shared_memory_capabilities_intel capabilities; + auto err = clGetDeviceInfo(device.get(), param, sizeof(cl_device_unified_shared_memory_capabilities_intel), &capabilities, NULL); if (err) throw std::runtime_error("[CLDNN ERROR]. clGetDeviceInfo error " + std::to_string(err)); return !((capabilities & CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL) == 0u); } diff --git a/inference-engine/thirdparty/clDNN/src/include/eltwise_inst.h b/inference-engine/thirdparty/clDNN/src/include/eltwise_inst.h index a723ecffb5c032..f1c72138fad089 100644 --- a/inference-engine/thirdparty/clDNN/src/include/eltwise_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/eltwise_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/embedding_bag_inst.h b/inference-engine/thirdparty/clDNN/src/include/embedding_bag_inst.h index f24dc7d72fc353..1b5982083ffa6a 100644 --- a/inference-engine/thirdparty/clDNN/src/include/embedding_bag_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/embedding_bag_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/engine_impl.h b/inference-engine/thirdparty/clDNN/src/include/engine_impl.h index 958255a2371ad4..addc1e1daf0542 100644 --- a/inference-engine/thirdparty/clDNN/src/include/engine_impl.h +++ b/inference-engine/thirdparty/clDNN/src/include/engine_impl.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/error_handler.h b/inference-engine/thirdparty/clDNN/src/include/error_handler.h index 517b9c0d471a68..1ce66e39c9f134 100644 --- a/inference-engine/thirdparty/clDNN/src/include/error_handler.h +++ b/inference-engine/thirdparty/clDNN/src/include/error_handler.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/event_impl.h b/inference-engine/thirdparty/clDNN/src/include/event_impl.h index 3bfe644bce4b5e..c87e34a3f84507 100644 --- a/inference-engine/thirdparty/clDNN/src/include/event_impl.h +++ b/inference-engine/thirdparty/clDNN/src/include/event_impl.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/extract_image_patches_inst.h b/inference-engine/thirdparty/clDNN/src/include/extract_image_patches_inst.h index fad58adfcb3583..00ec93d57dbe6d 100644 --- a/inference-engine/thirdparty/clDNN/src/include/extract_image_patches_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/extract_image_patches_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/fully_connected_inst.h b/inference-engine/thirdparty/clDNN/src/include/fully_connected_inst.h index f6cabd3a077476..75e00f7dd92015 100644 --- a/inference-engine/thirdparty/clDNN/src/include/fully_connected_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/fully_connected_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/fused_conv_eltwise_inst.h b/inference-engine/thirdparty/clDNN/src/include/fused_conv_eltwise_inst.h index 7cec0d0e015c4c..6f4aa5a47a0c30 100644 --- a/inference-engine/thirdparty/clDNN/src/include/fused_conv_eltwise_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/fused_conv_eltwise_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/gather_inst.h b/inference-engine/thirdparty/clDNN/src/include/gather_inst.h index e54a0a6a5387fc..f8e2c924cea462 100644 --- a/inference-engine/thirdparty/clDNN/src/include/gather_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/gather_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/gather_tree_inst.h b/inference-engine/thirdparty/clDNN/src/include/gather_tree_inst.h index 64caaac2e01e18..cb18b6e713391e 100644 --- a/inference-engine/thirdparty/clDNN/src/include/gather_tree_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/gather_tree_inst.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/gemm_inst.h b/inference-engine/thirdparty/clDNN/src/include/gemm_inst.h index a40d5887d67482..501f3029c566c6 100644 --- a/inference-engine/thirdparty/clDNN/src/include/gemm_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/gemm_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/generic_layer.hpp b/inference-engine/thirdparty/clDNN/src/include/generic_layer.hpp index 47f8305315c663..7809c2d58f3722 100644 --- a/inference-engine/thirdparty/clDNN/src/include/generic_layer.hpp +++ b/inference-engine/thirdparty/clDNN/src/include/generic_layer.hpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/generic_layer_inst.h b/inference-engine/thirdparty/clDNN/src/include/generic_layer_inst.h index e5a2de8231021f..e04fa801f3ed47 100644 --- a/inference-engine/thirdparty/clDNN/src/include/generic_layer_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/generic_layer_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/grn_inst.h b/inference-engine/thirdparty/clDNN/src/include/grn_inst.h index ec9cd007437bf4..1023d3ba4fa7bd 100644 --- a/inference-engine/thirdparty/clDNN/src/include/grn_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/grn_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/implementation_map.h b/inference-engine/thirdparty/clDNN/src/include/implementation_map.h index 3816ccda22b84e..89b053e9c74eea 100644 --- a/inference-engine/thirdparty/clDNN/src/include/implementation_map.h +++ b/inference-engine/thirdparty/clDNN/src/include/implementation_map.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/src/include/input_layout_inst.h b/inference-engine/thirdparty/clDNN/src/include/input_layout_inst.h index bf33de6f5924b1..3db3e7db12a19a 100644 --- a/inference-engine/thirdparty/clDNN/src/include/input_layout_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/input_layout_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/internal_primitive.h b/inference-engine/thirdparty/clDNN/src/include/internal_primitive.h index f815e06284f900..927871b63d6b72 100644 --- a/inference-engine/thirdparty/clDNN/src/include/internal_primitive.h +++ b/inference-engine/thirdparty/clDNN/src/include/internal_primitive.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include "api/primitive.hpp" diff --git a/inference-engine/thirdparty/clDNN/src/include/internal_primitive_type_base.h b/inference-engine/thirdparty/clDNN/src/include/internal_primitive_type_base.h index 605ab5bf7f3cfc..64aa1342a1fa93 100644 --- a/inference-engine/thirdparty/clDNN/src/include/internal_primitive_type_base.h +++ b/inference-engine/thirdparty/clDNN/src/include/internal_primitive_type_base.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include "meta_utils.h" diff --git a/inference-engine/thirdparty/clDNN/src/include/json_object.h b/inference-engine/thirdparty/clDNN/src/include/json_object.h index e1c0fa3b46eba3..02870c2cf91ed8 100644 --- a/inference-engine/thirdparty/clDNN/src/include/json_object.h +++ b/inference-engine/thirdparty/clDNN/src/include/json_object.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include #include diff --git a/inference-engine/thirdparty/clDNN/src/include/kernel_selector_helper.h b/inference-engine/thirdparty/clDNN/src/include/kernel_selector_helper.h index dce38799f95a6d..5e0c510c136167 100644 --- a/inference-engine/thirdparty/clDNN/src/include/kernel_selector_helper.h +++ b/inference-engine/thirdparty/clDNN/src/include/kernel_selector_helper.h @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once @@ -66,6 +56,7 @@ using lookt_axis = kernel_selector::LookUpTableAxis; using lrn_mode = kernel_selector::LRNMode; using normalize_mode = kernel_selector::NormalizeMode; using mvn_mode = kernel_selector::MVNMode; +using mvn_eps_mode = kernel_selector::MVNEpsMode; using kernel_divider_mode = kernel_selector::KernelDividerMode; using eltwise_mode = kernel_selector::EltwiseMode; using eltwise_input_mode = kernel_selector::EltwiseInputMode; diff --git a/inference-engine/thirdparty/clDNN/src/include/layout_optimizer.h b/inference-engine/thirdparty/clDNN/src/include/layout_optimizer.h index c55d4bb9833805..8bd0da81f09763 100644 --- a/inference-engine/thirdparty/clDNN/src/include/layout_optimizer.h +++ b/inference-engine/thirdparty/clDNN/src/include/layout_optimizer.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once @@ -149,24 +137,28 @@ class layout_optimizer { const layout& output_layout, const layout& weights_layout, const convolution_node& node); - bool convolution_b_fs_yx_fsv16_opt(const layout &output_layout, - const layout &weights_layout, + bool convolution_b_fs_yx_fsv16_opt(const layout& input_layout, + const layout& output_layout, + const layout& weights_layout, std::shared_ptr conv, bool weak_restrictions = false); - bool convolution_b_fs_zyx_fsv16_opt(const layout &output_layout, - const layout &weights_layout, + bool convolution_b_fs_zyx_fsv16_opt(const layout& input_layout, + const layout& output_layout, + const layout& weights_layout, std::shared_ptr conv); - bool convolution_bs_fs_yx_bsv16_fsv16_opt(const layout &input_layout, + bool convolution_bs_fs_yx_bsv16_fsv16_opt(const layout& input_layout, + const layout& output_layout, const layout& weights_layout, std::shared_ptr conv); bool convolution_fs_b_yx_fsv32_opt(const layout& input_layout, + const layout& output_layout, const layout& weights_layout, std::shared_ptr conv, bool weak_restrictions = false); - bool deconvolution_b_fs_zyx_fsv16_opt(const layout &output_layout, + bool deconvolution_b_fs_zyx_fsv16_opt(const layout &input_layout, const layout &weights_layout, std::shared_ptr conv); - bool deconvolution_b_fs_yx_fsv16_opt(const layout &output_layout, + bool deconvolution_b_fs_yx_fsv16_opt(const layout &input_layout, const layout &weights_layout, std::shared_ptr conv); bool users_for_convolution_byxf_opt(program_node const& node, uint32_t depth); diff --git a/inference-engine/thirdparty/clDNN/src/include/lrn_inst.h b/inference-engine/thirdparty/clDNN/src/include/lrn_inst.h index f43315535e1c56..47df087be8f6e5 100644 --- a/inference-engine/thirdparty/clDNN/src/include/lrn_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/lrn_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_input_inst.h b/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_input_inst.h index 6b8cddb1f012b2..5676fe49914ba8 100644 --- a/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_input_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_input_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_inst.h b/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_inst.h index fac24bcbcb5ee1..24d1fb95d29e3d 100644 --- a/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_timeloop_inst.h b/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_timeloop_inst.h index f5d13e3090c799..6330abb5efcfec 100644 --- a/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_timeloop_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/lstm_dynamic_timeloop_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/lstm_elt_inst.h b/inference-engine/thirdparty/clDNN/src/include/lstm_elt_inst.h index 5be00727c3612a..7cdb1483f4d300 100644 --- a/inference-engine/thirdparty/clDNN/src/include/lstm_elt_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/lstm_elt_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/lstm_gemm_inst.h b/inference-engine/thirdparty/clDNN/src/include/lstm_gemm_inst.h index aff8437eb326da..7d88493fccb15c 100644 --- a/inference-engine/thirdparty/clDNN/src/include/lstm_gemm_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/lstm_gemm_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/lstm_inst.h b/inference-engine/thirdparty/clDNN/src/include/lstm_inst.h index 95f9f348b35950..6f42da675f0833 100644 --- a/inference-engine/thirdparty/clDNN/src/include/lstm_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/lstm_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/math_utils.h b/inference-engine/thirdparty/clDNN/src/include/math_utils.h index 7863dde8d5f0f4..8a4efdc202ee67 100644 --- a/inference-engine/thirdparty/clDNN/src/include/math_utils.h +++ b/inference-engine/thirdparty/clDNN/src/include/math_utils.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/src/include/max_unpooling_inst.h b/inference-engine/thirdparty/clDNN/src/include/max_unpooling_inst.h index 4e06c0dd0c0274..85079daf5b087b 100644 --- a/inference-engine/thirdparty/clDNN/src/include/max_unpooling_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/max_unpooling_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/memory_impl.h b/inference-engine/thirdparty/clDNN/src/include/memory_impl.h index 445c6a3e7f1957..a0353637b3306d 100644 --- a/inference-engine/thirdparty/clDNN/src/include/memory_impl.h +++ b/inference-engine/thirdparty/clDNN/src/include/memory_impl.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -48,7 +36,8 @@ struct memory_impl : refcounted_obj { // - To be Weights format (Data memory can be reused by memory_pool, which can lead to errors) // - To have zero paddings // - To be completely filled with data - if ((!format::is_weights_format(l.format) && !format::is_simple_data_format(l.format)) || format::is_winograd(l.format) || format::is_image_2d(l.format)) { + if ((!format::is_weights_format(l.format) && !format::is_simple_data_format(l.format)) || + format::is_winograd(l.format) || format::is_image_2d(l.format)) { return true; } diff --git a/inference-engine/thirdparty/clDNN/src/include/memory_pool.h b/inference-engine/thirdparty/clDNN/src/include/memory_pool.h index 3baf69e0855a1d..739cf23515a9f0 100644 --- a/inference-engine/thirdparty/clDNN/src/include/memory_pool.h +++ b/inference-engine/thirdparty/clDNN/src/include/memory_pool.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/meta_utils.h b/inference-engine/thirdparty/clDNN/src/include/meta_utils.h index 8de3f6fd2ce649..ac412a5ac0e058 100644 --- a/inference-engine/thirdparty/clDNN/src/include/meta_utils.h +++ b/inference-engine/thirdparty/clDNN/src/include/meta_utils.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/src/include/mutable_data_inst.h b/inference-engine/thirdparty/clDNN/src/include/mutable_data_inst.h index 6b57b1a8dd408b..02ed1f1ff3b160 100644 --- a/inference-engine/thirdparty/clDNN/src/include/mutable_data_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/mutable_data_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/mvn_inst.h b/inference-engine/thirdparty/clDNN/src/include/mvn_inst.h index 6c8ec374763211..31b2537746e540 100644 --- a/inference-engine/thirdparty/clDNN/src/include/mvn_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/mvn_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/network_impl.h b/inference-engine/thirdparty/clDNN/src/include/network_impl.h index 2686ac51d5a0a1..2fdb6090d57a0b 100644 --- a/inference-engine/thirdparty/clDNN/src/include/network_impl.h +++ b/inference-engine/thirdparty/clDNN/src/include/network_impl.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/non_max_suppression_inst.h b/inference-engine/thirdparty/clDNN/src/include/non_max_suppression_inst.h index 150e48b616a653..b4ff4c3e4812ac 100644 --- a/inference-engine/thirdparty/clDNN/src/include/non_max_suppression_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/non_max_suppression_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/normalize_inst.h b/inference-engine/thirdparty/clDNN/src/include/normalize_inst.h index 4e64f4b2b0177d..7d93b24cd78fec 100644 --- a/inference-engine/thirdparty/clDNN/src/include/normalize_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/normalize_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/one_hot_inst.h b/inference-engine/thirdparty/clDNN/src/include/one_hot_inst.h index 49fc93d1824a21..13477f9f3969f4 100644 --- a/inference-engine/thirdparty/clDNN/src/include/one_hot_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/one_hot_inst.h @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/pass_manager.h b/inference-engine/thirdparty/clDNN/src/include/pass_manager.h index 0af02bc4dae909..1e2173e3c73f2f 100644 --- a/inference-engine/thirdparty/clDNN/src/include/pass_manager.h +++ b/inference-engine/thirdparty/clDNN/src/include/pass_manager.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/permute_inst.h b/inference-engine/thirdparty/clDNN/src/include/permute_inst.h index 8ad0b371b835f0..be8b8d8049ccd6 100644 --- a/inference-engine/thirdparty/clDNN/src/include/permute_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/permute_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/pooling_inst.h b/inference-engine/thirdparty/clDNN/src/include/pooling_inst.h index 39fb338a039f7d..5fc2f05b4bd21a 100644 --- a/inference-engine/thirdparty/clDNN/src/include/pooling_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/pooling_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/primitive_inst.h b/inference-engine/thirdparty/clDNN/src/include/primitive_inst.h index 21bfa2a7083f4c..fa67e28022cd1a 100644 --- a/inference-engine/thirdparty/clDNN/src/include/primitive_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/primitive_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once @@ -227,8 +215,8 @@ struct typed_primitive_impl : public primitive_impl { return cleanup_impl(reinterpret_cast&>(instance)); } - virtual void set_arguments_impl(typed_primitive_inst& /*instance*/) {}; - virtual void cleanup_impl(typed_primitive_inst& /*instance*/) {}; + virtual void set_arguments_impl(typed_primitive_inst& /*instance*/) {} + virtual void cleanup_impl(typed_primitive_inst& /*instance*/) {} virtual event_impl::ptr execute_impl(const std::vector& event, typed_primitive_inst& instance) = 0; diff --git a/inference-engine/thirdparty/clDNN/src/include/primitive_type.h b/inference-engine/thirdparty/clDNN/src/include/primitive_type.h index 072b157f0ff736..b608dff853615e 100644 --- a/inference-engine/thirdparty/clDNN/src/include/primitive_type.h +++ b/inference-engine/thirdparty/clDNN/src/include/primitive_type.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/primitive_type_base.h b/inference-engine/thirdparty/clDNN/src/include/primitive_type_base.h index 0b9033a7755b57..faffe78c4ea420 100644 --- a/inference-engine/thirdparty/clDNN/src/include/primitive_type_base.h +++ b/inference-engine/thirdparty/clDNN/src/include/primitive_type_base.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/prior_box_inst.h b/inference-engine/thirdparty/clDNN/src/include/prior_box_inst.h index 7bfecee72a5720..8aba188276dda2 100644 --- a/inference-engine/thirdparty/clDNN/src/include/prior_box_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/prior_box_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/program_dump_graph.h b/inference-engine/thirdparty/clDNN/src/include/program_dump_graph.h index e7150aa34853d3..5f8e687cd9089f 100644 --- a/inference-engine/thirdparty/clDNN/src/include/program_dump_graph.h +++ b/inference-engine/thirdparty/clDNN/src/include/program_dump_graph.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/include/program_helpers.h b/inference-engine/thirdparty/clDNN/src/include/program_helpers.h index 57e56f7587ba41..cdef2a3b18d663 100644 --- a/inference-engine/thirdparty/clDNN/src/include/program_helpers.h +++ b/inference-engine/thirdparty/clDNN/src/include/program_helpers.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/include/program_impl.h b/inference-engine/thirdparty/clDNN/src/include/program_impl.h index 420660aa491703..2aa361b7b12f10 100644 --- a/inference-engine/thirdparty/clDNN/src/include/program_impl.h +++ b/inference-engine/thirdparty/clDNN/src/include/program_impl.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/include/program_node.h b/inference-engine/thirdparty/clDNN/src/include/program_node.h index 8866b3dbb5c63f..0cd3225f98bed6 100644 --- a/inference-engine/thirdparty/clDNN/src/include/program_node.h +++ b/inference-engine/thirdparty/clDNN/src/include/program_node.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017-2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-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. -*/ + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/src/include/proposal_inst.h b/inference-engine/thirdparty/clDNN/src/include/proposal_inst.h index 0ffb3ac7399011..d1fa03f8d9e58e 100644 --- a/inference-engine/thirdparty/clDNN/src/include/proposal_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/proposal_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/pyramid_roi_align_inst.h b/inference-engine/thirdparty/clDNN/src/include/pyramid_roi_align_inst.h index 05ecbae5297839..45cd6638f741ab 100644 --- a/inference-engine/thirdparty/clDNN/src/include/pyramid_roi_align_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/pyramid_roi_align_inst.h @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once #include "api/pyramid_roi_align.hpp" diff --git a/inference-engine/thirdparty/clDNN/src/include/quantize_inst.h b/inference-engine/thirdparty/clDNN/src/include/quantize_inst.h index d7003d1c6d6b47..0cf0b30e81c0cc 100644 --- a/inference-engine/thirdparty/clDNN/src/include/quantize_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/quantize_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/reduce_inst.h b/inference-engine/thirdparty/clDNN/src/include/reduce_inst.h index 9963505fb36b46..6574ce8de21a97 100644 --- a/inference-engine/thirdparty/clDNN/src/include/reduce_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/reduce_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/refcounted_obj.h b/inference-engine/thirdparty/clDNN/src/include/refcounted_obj.h index a7bd2c3fb66c11..82b931f65da3c2 100644 --- a/inference-engine/thirdparty/clDNN/src/include/refcounted_obj.h +++ b/inference-engine/thirdparty/clDNN/src/include/refcounted_obj.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/region_yolo_inst.h b/inference-engine/thirdparty/clDNN/src/include/region_yolo_inst.h index 0a285b2f134cbe..26553e215cecc9 100644 --- a/inference-engine/thirdparty/clDNN/src/include/region_yolo_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/region_yolo_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/reorder_inst.h b/inference-engine/thirdparty/clDNN/src/include/reorder_inst.h index 5f393e2e4806c1..c9fccb0d7c7106 100644 --- a/inference-engine/thirdparty/clDNN/src/include/reorder_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/reorder_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/reorg_yolo_inst.h b/inference-engine/thirdparty/clDNN/src/include/reorg_yolo_inst.h index 4f8528645b5991..43361d31760ef9 100644 --- a/inference-engine/thirdparty/clDNN/src/include/reorg_yolo_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/reorg_yolo_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/resample_inst.h b/inference-engine/thirdparty/clDNN/src/include/resample_inst.h index 0dcc45176f35a7..33bf98f2ddaf63 100644 --- a/inference-engine/thirdparty/clDNN/src/include/resample_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/resample_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/reshape_inst.h b/inference-engine/thirdparty/clDNN/src/include/reshape_inst.h index 2ee1e45c50ca95..3c640441bad3f3 100644 --- a/inference-engine/thirdparty/clDNN/src/include/reshape_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/reshape_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/reverse_sequence_inst.h b/inference-engine/thirdparty/clDNN/src/include/reverse_sequence_inst.h index 631b5916517527..51f4a24a8cbb6c 100644 --- a/inference-engine/thirdparty/clDNN/src/include/reverse_sequence_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/reverse_sequence_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/roi_pooling_inst.h b/inference-engine/thirdparty/clDNN/src/include/roi_pooling_inst.h index b323d37100aa43..f9c3dc3b069f46 100644 --- a/inference-engine/thirdparty/clDNN/src/include/roi_pooling_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/roi_pooling_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/scale_inst.h b/inference-engine/thirdparty/clDNN/src/include/scale_inst.h index f2bbe601a31593..018daad2a8cfd3 100644 --- a/inference-engine/thirdparty/clDNN/src/include/scale_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/scale_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/scatter_elements_update_inst.h b/inference-engine/thirdparty/clDNN/src/include/scatter_elements_update_inst.h index b3aa5d5fa20da2..dd87a7facce92d 100644 --- a/inference-engine/thirdparty/clDNN/src/include/scatter_elements_update_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/scatter_elements_update_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/scatter_nd_update_inst.h b/inference-engine/thirdparty/clDNN/src/include/scatter_nd_update_inst.h new file mode 100644 index 00000000000000..1da6e21445ccf9 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/src/include/scatter_nd_update_inst.h @@ -0,0 +1,37 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma once +#include "api/scatter_nd_update.hpp" +#include "primitive_inst.h" +#include + +namespace cldnn { +template <> +struct typed_program_node : public typed_program_node_base { + using parent = typed_program_node_base; + +public: + using parent::parent; + + program_node& input(size_t index = 0) const { return get_dependency(index); } +}; + +using scatter_nd_update_node = typed_program_node; + +template <> +class typed_primitive_inst : public typed_primitive_inst_base { + using parent = typed_primitive_inst_base; + +public: + static layout calc_output_layout(scatter_nd_update_node const& node); + static std::string to_string(scatter_nd_update_node const& node); + +public: + typed_primitive_inst(network_impl& network, scatter_nd_update_node const& desc); +}; + +using scatter_nd_update_inst = typed_primitive_inst; +} // namespace cldnn diff --git a/inference-engine/thirdparty/clDNN/src/include/scatter_update_inst.h b/inference-engine/thirdparty/clDNN/src/include/scatter_update_inst.h index f6b537960f0302..54fa0fae09dc52 100644 --- a/inference-engine/thirdparty/clDNN/src/include/scatter_update_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/scatter_update_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/select_inst.h b/inference-engine/thirdparty/clDNN/src/include/select_inst.h index ffddcffedb0fdb..bd59f29062db5f 100644 --- a/inference-engine/thirdparty/clDNN/src/include/select_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/select_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/shuffle_channels_inst.h b/inference-engine/thirdparty/clDNN/src/include/shuffle_channels_inst.h index 168c4ec38fb06c..585d7440ba7a78 100644 --- a/inference-engine/thirdparty/clDNN/src/include/shuffle_channels_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/shuffle_channels_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/sliding_window_utils.h b/inference-engine/thirdparty/clDNN/src/include/sliding_window_utils.h index 8c93cc99f2a284..b832c49979fe06 100644 --- a/inference-engine/thirdparty/clDNN/src/include/sliding_window_utils.h +++ b/inference-engine/thirdparty/clDNN/src/include/sliding_window_utils.h @@ -1,16 +1,6 @@ -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/softmax_inst.h b/inference-engine/thirdparty/clDNN/src/include/softmax_inst.h index 1b362936d4a780..1fc97c3288c8ce 100644 --- a/inference-engine/thirdparty/clDNN/src/include/softmax_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/softmax_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/space_to_batch_inst.h b/inference-engine/thirdparty/clDNN/src/include/space_to_batch_inst.h index 158273439cbdaf..3fed298e57fbdb 100644 --- a/inference-engine/thirdparty/clDNN/src/include/space_to_batch_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/space_to_batch_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/space_to_depth_inst.h b/inference-engine/thirdparty/clDNN/src/include/space_to_depth_inst.h index 761b6f4565fca2..527c17e9b85427 100644 --- a/inference-engine/thirdparty/clDNN/src/include/space_to_depth_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/space_to_depth_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/split_inst.h b/inference-engine/thirdparty/clDNN/src/include/split_inst.h index 97add445bf3ce8..16f74d64e4a0e7 100644 --- a/inference-engine/thirdparty/clDNN/src/include/split_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/split_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/strided_slice_inst.h b/inference-engine/thirdparty/clDNN/src/include/strided_slice_inst.h index d3d3f74d5aa4b4..812cd2137612d3 100644 --- a/inference-engine/thirdparty/clDNN/src/include/strided_slice_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/strided_slice_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/tile_inst.h b/inference-engine/thirdparty/clDNN/src/include/tile_inst.h index 5bc64ff4839cd9..ea3966c5ee5a9d 100644 --- a/inference-engine/thirdparty/clDNN/src/include/tile_inst.h +++ b/inference-engine/thirdparty/clDNN/src/include/tile_inst.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/include/to_string_utils.h b/inference-engine/thirdparty/clDNN/src/include/to_string_utils.h index e8df0874d395ab..ae48ecd853a29f 100644 --- a/inference-engine/thirdparty/clDNN/src/include/to_string_utils.h +++ b/inference-engine/thirdparty/clDNN/src/include/to_string_utils.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #pragma once #include #include diff --git a/inference-engine/thirdparty/clDNN/src/include/topology_impl.h b/inference-engine/thirdparty/clDNN/src/include/topology_impl.h index c8b465cc460551..2e9b943ca146f8 100644 --- a/inference-engine/thirdparty/clDNN/src/include/topology_impl.h +++ b/inference-engine/thirdparty/clDNN/src/include/topology_impl.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma once diff --git a/inference-engine/thirdparty/clDNN/src/input_layout.cpp b/inference-engine/thirdparty/clDNN/src/input_layout.cpp index f4446fb4cd0e7d..b4df10dd23a66f 100644 --- a/inference-engine/thirdparty/clDNN/src/input_layout.cpp +++ b/inference-engine/thirdparty/clDNN/src/input_layout.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "input_layout_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/kernel_selector_helper.cpp b/inference-engine/thirdparty/clDNN/src/kernel_selector_helper.cpp index 71c808b9b19551..7ba2a515120ae4 100644 --- a/inference-engine/thirdparty/clDNN/src/kernel_selector_helper.cpp +++ b/inference-engine/thirdparty/clDNN/src/kernel_selector_helper.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "kernel_selector_helper.h" #include "kernel_selector_params.h" @@ -521,7 +511,8 @@ cldnn::format::type from_weights_layout(kernel_selector::weights_layout l) { case kernel_selector::weights_layout::giy_xs_os_xsv2_osv16__ao32: return cldnn::format::giy_xs_os_xsv2_osv16__ao32; default: - throw std::invalid_argument("Unable to convert kernel selector Weights layout " + std::to_string((int)l) + " to cldnn format"); + throw std::invalid_argument("Unable to convert kernel selector Weights layout " + + std::to_string(static_cast(l)) + " to cldnn format"); } } diff --git a/inference-engine/thirdparty/clDNN/src/layout_optimizer.cpp b/inference-engine/thirdparty/clDNN/src/layout_optimizer.cpp index 23e6d51e465f65..c3020dfaf03c25 100644 --- a/inference-engine/thirdparty/clDNN/src/layout_optimizer.cpp +++ b/inference-engine/thirdparty/clDNN/src/layout_optimizer.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "layout_optimizer.h" #include "topology_impl.h" @@ -248,10 +236,12 @@ bool layout_optimizer::can_fuse_reorder_to_prev(program_node& prev, program_node fmt_next == format::b_fs_yx_fsv16 || fmt_next == format::b_fs_zyx_fsv16 || fmt_next == format::bs_fs_yx_bsv16_fsv16)) return true; + if (prev.is_type() && fmt_prev.dimension() == fmt_next.dimension()) { + return true; + } return false; } - namespace { bool should_use_winograd_2x3_s1(std::shared_ptr const& prim, layout const& input_layout, @@ -354,8 +344,9 @@ bool layout_optimizer::convolution_byxf_opt(const layout& input_layout, return false; } -bool layout_optimizer::convolution_b_fs_yx_fsv16_opt(layout const &input_layout, - const layout &weights_layout, +bool layout_optimizer::convolution_b_fs_yx_fsv16_opt(const layout& input_layout, + const layout& output_layout, + const layout& weights_layout, std::shared_ptr conv, bool weak_restrictions) { // A set of rules that define when b_fs_yx_fsv16 mem format can be used for int8 case @@ -367,15 +358,12 @@ bool layout_optimizer::convolution_b_fs_yx_fsv16_opt(layout const &input_layout, auto ks_y = weights_layout.size.spatial[1]; size_t in_features_per_group = input_layout.size.feature[0] / conv->groups; - size_t out_features_per_group = weights_layout.size.batch[0] / conv->groups; - if (weights_layout.format.group_num() > 0) { - out_features_per_group = weights_layout.size.batch[0]; - } + size_t out_features_per_group = output_layout.size.feature[0] / conv->groups; // Check for non-grouped or depthwise convolution if (input_layout.format.dimension() == 4 && ((ks_x == 7 && ks_y == 7) || (ks_x == 3 && ks_y == 3) || (ks_x == 1 && ks_y == 1) || (ks_x == 5 && ks_y == 5)) && - weights_layout.size.batch[0] * weights_layout.size.group[0] >= 16 && + output_layout.size.feature[0] >= 16 && ((conv->groups == 1 && conv->split() == 1) || conv->groups == static_cast(input_layout.size.feature[0]) || conv->split() == static_cast(input_layout.size.feature[0]))) @@ -394,27 +382,27 @@ bool layout_optimizer::convolution_b_fs_yx_fsv16_opt(layout const &input_layout, return false; } // A set of rules that define when b_fs_yx_fsv16 mem format can be used for fp16/fp32 case - auto feature_block_size = 16; - auto correct_data_type = input_layout.data_type == data_types::f16 || input_layout.data_type == data_types::f32; - correct_data_type &= weights_layout.data_type == input_layout.data_type; - auto correct_batch = (input_layout.size.batch[0] == 1) || (input_layout.size.batch[0] > 1 && input_layout.data_type == data_types::f32); - auto correct_spatial_dims = input_layout.size.spatial[2] == 1 && input_layout.size.spatial[3] == 1; - auto required_feature_num = weak_restrictions ? feature_block_size / 2 : feature_block_size; - auto correct_in_feature = (input_layout.size.feature[0] >= required_feature_num && - weights_layout.size.batch[0] * weights_layout.size.group[0] >= required_feature_num); - if (!correct_in_feature && input_layout.size.feature[0] <= 4 && weights_layout.size.batch[0] >= feature_block_size) + int32_t feature_block_size = 16; + bool correct_data_type = (input_layout.data_type == data_types::f16 || input_layout.data_type == data_types::f32) && + (weights_layout.data_type == input_layout.data_type); + bool correct_batch = (input_layout.size.batch[0] == 1) || (input_layout.size.batch[0] > 1 && input_layout.data_type == data_types::f32); + bool correct_spatial_dims = input_layout.size.spatial[2] == 1 && input_layout.size.spatial[3] == 1; + int32_t required_feature_num = weak_restrictions ? feature_block_size / 2 : feature_block_size; + bool correct_in_feature = (input_layout.size.feature[0] >= required_feature_num && + output_layout.size.feature[0] >= required_feature_num); + int32_t in_features_per_group = input_layout.size.feature[0] / conv->groups; + int32_t out_features_per_group = output_layout.size.feature[0] / conv->groups; + if (!correct_in_feature && input_layout.size.feature[0] <= 4 && out_features_per_group >= feature_block_size) correct_in_feature = true; - auto depthwise = conv->groups == static_cast(input_layout.size.feature[0]); // depthwise conv - auto out_features_per_group = weights_layout.size.batch[0]; - auto in_features_per_group = weights_layout.size.feature[0]; - auto grouped = ((feature_block_size % out_features_per_group == 0) && - (feature_block_size % in_features_per_group == 0) && - (feature_block_size / out_features_per_group > 1) && - (feature_block_size / in_features_per_group > 1) && - (out_features_per_group != 1) && - (in_features_per_group != 1)) || - ((out_features_per_group % feature_block_size == 0 || feature_block_size % out_features_per_group == 0) && - (in_features_per_group % feature_block_size == 0)); + bool depthwise = conv->groups == static_cast(input_layout.size.feature[0]); // depthwise conv + bool grouped = ((feature_block_size % out_features_per_group == 0) && + (feature_block_size % in_features_per_group == 0) && + (feature_block_size / out_features_per_group > 1) && + (feature_block_size / in_features_per_group > 1) && + (out_features_per_group != 1) && + (in_features_per_group != 1)) || + ((out_features_per_group % feature_block_size == 0 || feature_block_size % out_features_per_group == 0) && + (in_features_per_group % feature_block_size == 0)); if (correct_data_type && correct_batch && correct_spatial_dims && @@ -424,18 +412,20 @@ bool layout_optimizer::convolution_b_fs_yx_fsv16_opt(layout const &input_layout, return false; } -bool layout_optimizer::should_select_b_fs_yx_fsv16_layout(convolution_node const& node, layout const& output_or_weights_layout) { +bool layout_optimizer::should_select_b_fs_yx_fsv16_layout(convolution_node const& node, layout const& weights_layout) { auto prim = node.get_primitive(); auto input_layout = node.get_dependency(0).get_output_layout(); auto const cond_denom = _total_conv > 0 ? 1.0f / static_cast(_total_conv) : 1.0f; auto fully_support_conv_num = _optimized_conv_count.at({format::b_fs_yx_fsv16, false}); auto partially_support_conv_num = _optimized_conv_count.at({format::b_fs_yx_fsv16, true}); - auto current_conv_supports_layout = convolution_b_fs_yx_fsv16_opt(input_layout, output_or_weights_layout, prim); + auto output_layout = node.calc_output_layout(); + + auto current_conv_supports_layout = convolution_b_fs_yx_fsv16_opt(input_layout, output_layout, weights_layout, prim); auto is_prev_conv_node_supports_layout = node.get_dependency(0).is_type() && is_format_optimized(node.get_dependency(0).as(), format::b_fs_yx_fsv16); auto weak_restriction_cond = (partially_support_conv_num - fully_support_conv_num) * cond_denom < 0.15f; - auto current_conv_partially_supports_layout = convolution_b_fs_yx_fsv16_opt(input_layout, output_or_weights_layout, prim, true); + auto current_conv_partially_supports_layout = convolution_b_fs_yx_fsv16_opt(input_layout, output_layout, weights_layout, prim, true); auto may_use_weak_restrictions = is_prev_conv_node_supports_layout || weak_restriction_cond; return ((_optimization_attributes.b_fs_yx_fsv16_network) && @@ -443,15 +433,13 @@ bool layout_optimizer::should_select_b_fs_yx_fsv16_layout(convolution_node const input_layout.format == format::b_fs_yx_fsv16; } -bool layout_optimizer::convolution_b_fs_zyx_fsv16_opt(layout const &input_layout, - const layout &weights_layout, +bool layout_optimizer::convolution_b_fs_zyx_fsv16_opt(const layout& input_layout, + const layout& output_layout, + const layout& weights_layout, std::shared_ptr conv) { // A set of rules that define when b_fs_zyx_fsv16 mem format can be used size_t in_features_per_group = input_layout.size.feature[0] / conv->groups; - size_t out_features_per_group = weights_layout.size.batch[0] / conv->groups; - if (weights_layout.format.group_num() > 0) { - out_features_per_group = weights_layout.size.batch[0]; - } + size_t out_features_per_group = output_layout.size.feature[0] / conv->groups; // Check for fsv16 imad kernel if ((input_layout.format.dimension() == 5) && @@ -465,12 +453,13 @@ bool layout_optimizer::convolution_b_fs_zyx_fsv16_opt(layout const &input_layout bool data_type_ver = input_layout.data_type == data_types::f16 || input_layout.data_type == data_types::f32; bool w_layout = weights_layout.data_type == input_layout.data_type; bool single_dilation = conv->dilation == tensor(1); - bool groups_ver = conv->groups == 1 || weights_layout.size.batch[0] % 16 == 0 - || (conv->groups > 1 && weights_layout.size.batch[0] == 8); + bool groups_ver = conv->groups == 1 || out_features_per_group % 16 == 0 + || (conv->groups > 1 && out_features_per_group == 8); return format_ver && data_type_ver && w_layout && single_dilation && groups_ver; } -bool layout_optimizer::convolution_bs_fs_yx_bsv16_fsv16_opt(const layout &input_layout, +bool layout_optimizer::convolution_bs_fs_yx_bsv16_fsv16_opt(const layout& input_layout, + const layout& output_layout, const layout& weights_layout, std::shared_ptr conv) { // A set of rules that define when bs_fs_yx_bsv16_fsv16 mem format can be used @@ -488,21 +477,22 @@ bool layout_optimizer::convolution_bs_fs_yx_bsv16_fsv16_opt(const layout &input_ auto ks_x = weights_layout.size.spatial[0]; auto ks_y = weights_layout.size.spatial[1]; int8_sup &= (input_layout.size.spatial[2] == 1 && ((ks_x == 1 && ks_y == 1) || (ks_x == 3 && ks_y == 3) || (ks_x == 7 && ks_y == 7)) && - weights_layout.size.batch[0] % 32 == 0 && conv->split() == 1 && conv->dilation == tensor{1}); + output_layout.size.feature[0] % 32 == 0 && conv->split() == 1 && conv->dilation == tensor{1}); return (int8_sup || fp16_ver || fp32_ver) && correct_feature && correct_batch && single_group; } -bool layout_optimizer::convolution_fs_b_yx_fsv32_opt(layout const& input_layout, - layout const& weights_layout, +bool layout_optimizer::convolution_fs_b_yx_fsv32_opt(const layout& input_layout, + const layout& output_layout, + const layout& weights_layout, std::shared_ptr conv, bool weak_restrictions) { - auto ofm = weights_layout.size.batch[0] * weights_layout.size.group[0]; + auto ofm = output_layout.size.feature[0]; // A set of rules that define when fs_b_yx_fsv32 mem format can be used bool correct_batch = input_layout.size.batch[0] > 1; bool correct_in_feature = input_layout.size.feature[0] >= 16; bool correct_out_feature = weak_restrictions ? ofm >= 16 : ofm > 16; - bool dw_conv = static_cast(conv->groups) == weights_layout.size.group[0]; + bool dw_conv = static_cast(conv->groups) == input_layout.size.feature[0]; if (!correct_in_feature && input_layout.size.feature[0] == 3 && conv->groups == 1) { // bfyx with 3 feature -> fs_b_yx_fsv32 case correct_in_feature = true; } @@ -672,7 +662,7 @@ format layout_optimizer::imad_case(convolution_node const& node) const { layout layout_optimizer::get_expected_layout(layout const& current_layout, convolution_node const& node, - layout const& output_or_weights_layout) { + layout const& weights_layout) { auto prim = node.get_primitive(); auto expected_tensor = current_layout.size; auto expected_data_type = current_layout.data_type; @@ -681,23 +671,24 @@ layout layout_optimizer::get_expected_layout(layout const& current_layout, const float cond_denom = _total_conv > 0 ? 1.0f / static_cast(_total_conv) : 1.0f; + auto output_layout = node.calc_output_layout(); + if ((input_layout.data_type == data_types::u8 || input_layout.data_type == data_types::i8)) { if ((_optimization_attributes.bs_fs_yx_bsv16_fsv16_network && expected_tensor.batch[0] % 16 == 0 && - convolution_bs_fs_yx_bsv16_fsv16_opt(input_layout, output_or_weights_layout, prim))) { + convolution_bs_fs_yx_bsv16_fsv16_opt(input_layout, output_layout, weights_layout, prim))) { expected_format = cldnn::format::bs_fs_yx_bsv16_fsv16; } else if ((_optimization_attributes.b_fs_yx_fsv16_network && - convolution_b_fs_yx_fsv16_opt(input_layout, output_or_weights_layout, prim))) { + convolution_b_fs_yx_fsv16_opt(input_layout, output_layout, weights_layout, prim))) { expected_format = cldnn::format::b_fs_yx_fsv16; } else if ((_optimization_attributes.b_fs_zyx_fsv16_network && - convolution_b_fs_zyx_fsv16_opt(input_layout, output_or_weights_layout, prim))) { + convolution_b_fs_zyx_fsv16_opt(input_layout, output_layout, weights_layout, prim))) { expected_format = cldnn::format::b_fs_zyx_fsv16; } else { expected_format = imad_case(node); } expected_tensor = current_layout.size; } else if (_optimization_attributes.b_fs_zyx_fsv16_network && - convolution_b_fs_zyx_fsv16_opt(input_layout, - output_or_weights_layout, prim)) { + convolution_b_fs_zyx_fsv16_opt(input_layout, output_layout, weights_layout, prim)) { expected_tensor = current_layout.size; if ((current_layout.data_type == data_types::f32 && expected_tensor.batch[0] % 16 == 0) || (current_layout.data_type == data_types::f16 && expected_tensor.batch[0] % 32 == 0)) @@ -709,27 +700,29 @@ layout layout_optimizer::get_expected_layout(layout const& current_layout, expected_tensor = current_layout.size; expected_format = cldnn::format::bfzyx; } else if (_optimization_attributes.bs_fs_yx_bsv16_fsv16_network && - convolution_bs_fs_yx_bsv16_fsv16_opt(node.input().get_output_layout(), output_or_weights_layout, prim)) { + convolution_bs_fs_yx_bsv16_fsv16_opt(node.input().get_output_layout(), output_layout, weights_layout, prim)) { expected_tensor = current_layout.size; expected_format = cldnn::format::bs_fs_yx_bsv16_fsv16; } else if (_optimization_attributes.fs_b_yx_fsv32_network && !node.get_transposed() && - ((convolution_fs_b_yx_fsv32_opt(node.get_dependency(0).get_output_layout(), - node.get_dependency(1).get_output_layout(), prim) || + ((convolution_fs_b_yx_fsv32_opt(input_layout, + output_layout, + weights_layout, prim) || (((node.get_dependency(0).is_type() && is_format_optimized(node.get_dependency(0).as(), format::fs_b_yx_fsv32)) || (_optimized_conv_count.at({format::fs_b_yx_fsv32, false}) * cond_denom > 0.8f)) && - convolution_fs_b_yx_fsv32_opt(node.get_dependency(0).get_output_layout(), - node.get_dependency(1).get_output_layout(), prim, true))))) { + convolution_fs_b_yx_fsv32_opt(input_layout, + output_layout, + weights_layout, prim, true))))) { // Chose fs_b_yx_fsv32 layout in two cases: 1-st: the current conv primitive totally supports fs_b_yx_fsv32 layout // 2-nd: the previous conv primitive supports fs_b_yx_fsv32 layout and // current conv primitives supports this one with weak restrictions - // that should be cheaper than reordering data to another layout expected_tensor = current_layout.size; expected_format = format::fs_b_yx_fsv32; - } else if (should_select_b_fs_yx_fsv16_layout(node, output_or_weights_layout)) { + } else if (should_select_b_fs_yx_fsv16_layout(node, weights_layout)) { expected_tensor = current_layout.size; expected_format = cldnn::format::b_fs_yx_fsv16; } else if (current_layout.data_type == data_types::f16 && - layout_optimizer::convolution_byxf_opt(node.input().get_output_layout(), current_layout, output_or_weights_layout, node) && + layout_optimizer::convolution_byxf_opt(input_layout, current_layout, weights_layout, node) && (users_for_convolution_byxf_opt(node, 2) || deps_for_convolution_byxf_opt(node, 2)) && // todo: remove this condition when yxfb optimizations will be disabled current_layout.format != cldnn::format::yxfb && current_layout.size.batch[0] == 1) { @@ -739,7 +732,7 @@ layout layout_optimizer::get_expected_layout(layout const& current_layout, current_layout.format == format::os_is_yx_osv16_isv4) { // imad case // nothing to do, just go out from here. - } else if (layout_optimizer::convolution_bfyx_opt(current_layout, output_or_weights_layout, prim) || + } else if (layout_optimizer::convolution_bfyx_opt(current_layout, weights_layout, prim) || (_output_size_handling_enabled && prim->with_output_size) || node.get_transposed()) { { expected_tensor = current_layout.size; @@ -779,7 +772,7 @@ layout layout_optimizer::get_expected_layout(layout const& current_layout, auto input_tensor = node.get_dependency(0).get_output_layout().size; int input_features = input_tensor.feature[0]; int output_features = expected_tensor.feature[0]; - float r = float(input_features * output_features) / (align_to(input_features, 16) * align_to(output_features, 16)); + float r = static_cast(input_features * output_features) / (align_to(input_features, 16) * align_to(output_features, 16)); if (r > 0.5f) expected_format = cldnn::format::b_fs_yx_fsv16; else @@ -859,12 +852,8 @@ format layout_optimizer::get_preferred_format(program_node& node) { } else if (node.is_type()) { auto input_layout = node.get_dependency(0).get_output_layout(); if (input_layout.format.dimension() == 5 && - (input_layout.data_type == data_types::f32 || input_layout.data_type == data_types::f16 )) + (input_layout.data_type == data_types::f32 || input_layout.data_type == data_types::f16)) expected = format::bfzyx; - } else if (node.is_type()) { - if (_optimization_attributes.b_fs_yx_fsv16_network) { - expected = format::bfyx; - } } return expected; @@ -907,20 +896,21 @@ void layout_optimizer::set_optimization_attribute(optimization_attributes_type a bool layout_optimizer::is_format_optimized(const convolution_node& node, const format& format, bool use_weak_restrictions) { auto input_layout = node.input().get_output_layout(); auto weights_layout = node.weights().get_output_layout(); + auto output_layout = node.calc_output_layout(); auto prim = node.get_primitive(); switch (format) { case format::b_fs_yx_fsv16: - return convolution_b_fs_yx_fsv16_opt(input_layout, weights_layout, prim, use_weak_restrictions) && + return convolution_b_fs_yx_fsv16_opt(input_layout, output_layout, weights_layout, prim, use_weak_restrictions) && // Work-around for inability to use b_fs_yx_fsv16 and winograd together !should_use_winograd_2x3_s1(prim, input_layout, weights_layout, _output_size_handling_enabled); case format::b_fs_zyx_fsv16: case format::bs_fs_zyx_bsv16_fsv16: - return convolution_b_fs_zyx_fsv16_opt(input_layout, weights_layout, prim); + return convolution_b_fs_zyx_fsv16_opt(input_layout, output_layout, weights_layout, prim); case format::fs_b_yx_fsv32: - return convolution_fs_b_yx_fsv32_opt(input_layout, weights_layout, prim); + return convolution_fs_b_yx_fsv32_opt(input_layout, output_layout, weights_layout, prim); case format::bs_fs_yx_bsv16_fsv16: - return convolution_bs_fs_yx_bsv16_fsv16_opt(input_layout, weights_layout, prim); + return convolution_bs_fs_yx_bsv16_fsv16_opt(input_layout, output_layout, weights_layout, prim); default: throw std::invalid_argument( "[Layout optimizer] Other formats in is_format_optimized(...) method are not implemented!"); diff --git a/inference-engine/thirdparty/clDNN/src/lrn.cpp b/inference-engine/thirdparty/clDNN/src/lrn.cpp index 8d5d0e83a94b85..c1f0c1b3e1b4e7 100644 --- a/inference-engine/thirdparty/clDNN/src/lrn.cpp +++ b/inference-engine/thirdparty/clDNN/src/lrn.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "lrn_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/lstm.cpp b/inference-engine/thirdparty/clDNN/src/lstm.cpp index 5eb99dfdeba756..5c0d4c25ee38fa 100644 --- a/inference-engine/thirdparty/clDNN/src/lstm.cpp +++ b/inference-engine/thirdparty/clDNN/src/lstm.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "lstm_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/lstm_dynamic.cpp b/inference-engine/thirdparty/clDNN/src/lstm_dynamic.cpp index 657d1e22bf2ddc..2e60fff1285998 100644 --- a/inference-engine/thirdparty/clDNN/src/lstm_dynamic.cpp +++ b/inference-engine/thirdparty/clDNN/src/lstm_dynamic.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "lstm_dynamic_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/lstm_dynamic_input.cpp b/inference-engine/thirdparty/clDNN/src/lstm_dynamic_input.cpp index aa72f3ae7e7430..72e0967007249e 100644 --- a/inference-engine/thirdparty/clDNN/src/lstm_dynamic_input.cpp +++ b/inference-engine/thirdparty/clDNN/src/lstm_dynamic_input.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "lstm_dynamic_input_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/lstm_dynamic_timeloop.cpp b/inference-engine/thirdparty/clDNN/src/lstm_dynamic_timeloop.cpp index 32f6276e7fcf7e..6db06934be112b 100644 --- a/inference-engine/thirdparty/clDNN/src/lstm_dynamic_timeloop.cpp +++ b/inference-engine/thirdparty/clDNN/src/lstm_dynamic_timeloop.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "lstm_dynamic_timeloop_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/lstm_elt.cpp b/inference-engine/thirdparty/clDNN/src/lstm_elt.cpp index 2672148ac5c26c..2c8346accbc4f8 100644 --- a/inference-engine/thirdparty/clDNN/src/lstm_elt.cpp +++ b/inference-engine/thirdparty/clDNN/src/lstm_elt.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "lstm_elt_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/lstm_gemm.cpp b/inference-engine/thirdparty/clDNN/src/lstm_gemm.cpp index 580ab10a659e71..4456e29675a042 100644 --- a/inference-engine/thirdparty/clDNN/src/lstm_gemm.cpp +++ b/inference-engine/thirdparty/clDNN/src/lstm_gemm.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "lstm_gemm_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/max_unpooling.cpp b/inference-engine/thirdparty/clDNN/src/max_unpooling.cpp index b3a3c9d78e95ff..3e95bd95eb4e3d 100644 --- a/inference-engine/thirdparty/clDNN/src/max_unpooling.cpp +++ b/inference-engine/thirdparty/clDNN/src/max_unpooling.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "max_unpooling_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/memory.cpp b/inference-engine/thirdparty/clDNN/src/memory.cpp index 26fb4b32b2a290..9cf892500f0bc8 100644 --- a/inference-engine/thirdparty/clDNN/src/memory.cpp +++ b/inference-engine/thirdparty/clDNN/src/memory.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "api/memory.hpp" @@ -72,28 +60,38 @@ memory memory::share_surface(const engine& engine, const layout& layout, shared_ #endif size_t memory::count() const { - if (_impl) return get_layout().count(); - else return 0; + if (_impl) + return get_layout().count(); + else + return 0; } size_t memory::size() const { - if (_impl) return _impl->size(); - else return 0; + if (_impl) + return _impl->size(); + else + return 0; } const layout& memory::get_layout() const { - if (_impl) return _impl->get_layout(); - else throw std::runtime_error("empty memory object"); + if (_impl) + return _impl->get_layout(); + else + throw std::runtime_error("empty memory object"); } int memory::get_net_id() const { - if (_impl) return _impl->get_net_id(); - else throw std::runtime_error("empty memory object"); + if (_impl) + return _impl->get_net_id(); + else + throw std::runtime_error("empty memory object"); } bool memory::is_allocated_by(const engine& engine) const { - if (_impl) return _impl->is_allocated_by(*engine.get()); - else return false; + if (_impl) + return _impl->is_allocated_by(*engine.get()); + else + return false; } bool memory::is_the_same_buffer(const memory& other) const { @@ -115,8 +113,10 @@ bool memory::is_the_same_buffer(const memory& other) const { } shared_mem_params memory::get_internal_params() const { - if (_impl) return _impl->get_internal_params(); - else throw std::runtime_error("empty memory object"); + if (_impl) + return _impl->get_internal_params(); + else + throw std::runtime_error("empty memory object"); } memory memory::attach_impl(const cldnn::layout& layout, void* ptr, uint32_t net_id) { @@ -124,8 +124,10 @@ memory memory::attach_impl(const cldnn::layout& layout, void* ptr, uint32_t net_ } void* memory::lock_impl() const { - if (_impl) return _impl->lock(); - else return nullptr; + if (_impl) + return _impl->lock(); + else + return nullptr; } void memory::unlock() const { diff --git a/inference-engine/thirdparty/clDNN/src/memory_pool.cpp b/inference-engine/thirdparty/clDNN/src/memory_pool.cpp index a3930abe278dcc..f80e8e9cd986bb 100644 --- a/inference-engine/thirdparty/clDNN/src/memory_pool.cpp +++ b/inference-engine/thirdparty/clDNN/src/memory_pool.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/mutable_data.cpp b/inference-engine/thirdparty/clDNN/src/mutable_data.cpp index c5d14002a81734..85f73d89c8ade1 100644 --- a/inference-engine/thirdparty/clDNN/src/mutable_data.cpp +++ b/inference-engine/thirdparty/clDNN/src/mutable_data.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "mutable_data_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/mvn.cpp b/inference-engine/thirdparty/clDNN/src/mvn.cpp index a4cb277a495108..bf637d1a91182b 100644 --- a/inference-engine/thirdparty/clDNN/src/mvn.cpp +++ b/inference-engine/thirdparty/clDNN/src/mvn.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "mvn_inst.h" #include "primitive_type_base.h" @@ -44,6 +32,7 @@ std::string mvn_inst::to_string(mvn_node const& node) { auto epsilon = desc->epsilon; auto across_channels = desc->across_channels ? "true" : "false"; auto normalize_variance = desc->normalize_variance ? "true" : "false"; + auto eps_inside_sqrt = desc->eps_inside_sqrt ? "true" : "false"; auto& input = node.input(); std::stringstream primitive_description; @@ -53,6 +42,7 @@ std::string mvn_inst::to_string(mvn_node const& node) { mvn_info.add("epsilon", epsilon); mvn_info.add("across_channels region", across_channels); mvn_info.add("normalize_variance region", normalize_variance); + mvn_info.add("eps_inside_sqrt region", eps_inside_sqrt); node_info->add("mvn info", mvn_info); node_info->dump(primitive_description); diff --git a/inference-engine/thirdparty/clDNN/src/network.cpp b/inference-engine/thirdparty/clDNN/src/network.cpp index 4dfd44724cb2cc..2ce1c58a1ffcce 100644 --- a/inference-engine/thirdparty/clDNN/src/network.cpp +++ b/inference-engine/thirdparty/clDNN/src/network.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2021 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "network_impl.h" diff --git a/inference-engine/thirdparty/clDNN/src/nodes_ordering.cpp b/inference-engine/thirdparty/clDNN/src/nodes_ordering.cpp index c8d70f4805e12f..a776234eae66cc 100644 --- a/inference-engine/thirdparty/clDNN/src/nodes_ordering.cpp +++ b/inference-engine/thirdparty/clDNN/src/nodes_ordering.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/non_max_suppression.cpp b/inference-engine/thirdparty/clDNN/src/non_max_suppression.cpp index fe8eb29473c1c2..ec0ea21359a7c9 100644 --- a/inference-engine/thirdparty/clDNN/src/non_max_suppression.cpp +++ b/inference-engine/thirdparty/clDNN/src/non_max_suppression.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "non_max_suppression_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/normalize.cpp b/inference-engine/thirdparty/clDNN/src/normalize.cpp index 1d6e82bd2834a2..4bafd2263eed20 100644 --- a/inference-engine/thirdparty/clDNN/src/normalize.cpp +++ b/inference-engine/thirdparty/clDNN/src/normalize.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "normalize_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/one_hot.cpp b/inference-engine/thirdparty/clDNN/src/one_hot.cpp index af2b3207c5b1ae..3b985254018826 100644 --- a/inference-engine/thirdparty/clDNN/src/one_hot.cpp +++ b/inference-engine/thirdparty/clDNN/src/one_hot.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #include "one_hot_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/pass_manager.cpp b/inference-engine/thirdparty/clDNN/src/pass_manager.cpp index c0960bf4f04578..5b5b546ff3b977 100644 --- a/inference-engine/thirdparty/clDNN/src/pass_manager.cpp +++ b/inference-engine/thirdparty/clDNN/src/pass_manager.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "pass_manager.h" #include "program_dump_graph.h" diff --git a/inference-engine/thirdparty/clDNN/src/permute.cpp b/inference-engine/thirdparty/clDNN/src/permute.cpp index 8f7e708d90e172..c820de4e4255b5 100644 --- a/inference-engine/thirdparty/clDNN/src/permute.cpp +++ b/inference-engine/thirdparty/clDNN/src/permute.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "permute_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/pooling.cpp b/inference-engine/thirdparty/clDNN/src/pooling.cpp index 66974f2f983ca5..8376b7404f1a61 100644 --- a/inference-engine/thirdparty/clDNN/src/pooling.cpp +++ b/inference-engine/thirdparty/clDNN/src/pooling.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "pooling_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/primitive_inst.cpp b/inference-engine/thirdparty/clDNN/src/primitive_inst.cpp index 611baac3308b41..43ec27e3e1e200 100644 --- a/inference-engine/thirdparty/clDNN/src/primitive_inst.cpp +++ b/inference-engine/thirdparty/clDNN/src/primitive_inst.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "primitive_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/prior_box.cpp b/inference-engine/thirdparty/clDNN/src/prior_box.cpp index 87679f0ac72f67..a85691bb9c6fc1 100644 --- a/inference-engine/thirdparty/clDNN/src/prior_box.cpp +++ b/inference-engine/thirdparty/clDNN/src/prior_box.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "prior_box_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/program.cpp b/inference-engine/thirdparty/clDNN/src/program.cpp index ed050e7a7d369c..e8900de455599e 100644 --- a/inference-engine/thirdparty/clDNN/src/program.cpp +++ b/inference-engine/thirdparty/clDNN/src/program.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -26,6 +14,7 @@ #include "program_dump_graph.h" #include "program_impl.h" #include "sliding_window_utils.h" +#include "program_helpers.h" #include "roi_pooling_inst.h" #include "reorg_yolo_inst.h" @@ -375,7 +364,9 @@ void program_impl::build_program(bool is_internal) { if (!is_internal) prim_info = get_current_stage_info(); - if (!is_internal) transfer_memory_to_device(); + if (!is_internal) + transfer_memory_to_device(); + cleanup(); } @@ -531,12 +522,19 @@ void program_impl::transfer_memory_to_device() { for (auto& node : processing_order) { if (node->is_type() && !node->need_lockable_memory()) { auto& data_node = node->as(); + auto data_node_layout = data_node.get_output_layout(); auto& mem = data_node.get_attached_memory(); + auto mem_layout = mem.get_layout(); auto alloc_type = mem.get_allocation_type(); + if (!program_helpers::are_layouts_identical(mem_layout, data_node_layout).second) { + std::string err_str("Node and memory layouts are incompatible, error occurred for " + node->id() + " node"); + throw std::invalid_argument(err_str); + } + if (alloc_type == allocation_type::usm_host || alloc_type == allocation_type::usm_shared) { // Allocate and transfer memory - auto device_mem = mem.get_engine()->allocate_memory(mem.get_layout(), + auto device_mem = mem.get_engine()->allocate_memory(data_node_layout, allocation_type::usm_device, mem.get_net_id(), false); @@ -1149,6 +1147,9 @@ void program_impl::set_layout_optimizer_attributes(layout_optimizer& lo) { size_t opt_deconv_layers_b_fs_zyx_fsv16 = 0; size_t total_crop_layers = 0; + size_t weighted_sum_feature_size = 0; + size_t weight_sum = 0; + for (auto& node : get_processing_order()) { auto &prim = *node; if (prim.type() == cldnn::convolution::type_id()) { @@ -1221,7 +1222,8 @@ void program_impl::set_layout_optimizer_attributes(layout_optimizer& lo) { prim.type() != cldnn::mutable_data::type_id() && prim.type() != cldnn::reduce::type_id() && prim.type() != cldnn::strided_slice::type_id() && - prim.type() != cldnn::region_yolo::type_id()) + prim.type() != cldnn::region_yolo::type_id() && + prim.type() != cldnn::mvn::type_id()) can_use_fsv16 = false; if (prim.type() == cldnn::quantize::type_id() && @@ -1298,4 +1300,35 @@ void program_impl::set_layout_optimizer_attributes(layout_optimizer& lo) { if (should_use_bs_fs_yx_bsv16_fsv16) lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::bs_fs_yx_bsv16_fsv16_network, 1); + + + // This is to avoid using fsv16 for shallow-feature networks. + // This may not be exactly same as real execution graph as layer fusing is not done yet, + // but it is a reasonable approximation. + // Check the expected network efficiency after setting layer optimization attributes. + // If network depth is shallow, it is faster with fsv4. + for (auto& node : get_processing_order()) { + auto &prim = *node; + + if (prim.is_in_data_flow() && prim.type() == cldnn::convolution::type_id()) { + size_t num_feature = prim.get_output_layout().size.feature.vector()[0]; + size_t num_spatial = 1; + for (auto s : prim.get_output_layout().size.spatial.vector()) + num_spatial *= s; + + if (lo.get_preferred_format(prim) != format::b_fs_yx_fsv4) { + weight_sum += num_spatial; + weighted_sum_feature_size += num_spatial * num_feature; + } + } + } + + size_t weighted_average_feature_depth = weighted_sum_feature_size / std::max(weight_sum, static_cast(1)); + + // Need to confirm that weighted_average_feature_depth > 1 to keep unittest behavior. + if (is_quantized_int8_model && weighted_average_feature_depth < 8 && weighted_average_feature_depth > 1) { + lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::fs_b_yx_fsv32_network, 0); + lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::b_fs_yx_fsv16_network, 0); + lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::bs_fs_yx_bsv16_fsv16_network, 0); + } } diff --git a/inference-engine/thirdparty/clDNN/src/program_dump_graph.cpp b/inference-engine/thirdparty/clDNN/src/program_dump_graph.cpp index 71fc3626fd5289..938c888d08939d 100644 --- a/inference-engine/thirdparty/clDNN/src/program_dump_graph.cpp +++ b/inference-engine/thirdparty/clDNN/src/program_dump_graph.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/program_helpers.cpp b/inference-engine/thirdparty/clDNN/src/program_helpers.cpp index a99f1c807abd69..27c67c032116ea 100644 --- a/inference-engine/thirdparty/clDNN/src/program_helpers.cpp +++ b/inference-engine/thirdparty/clDNN/src/program_helpers.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/src/program_node.cpp b/inference-engine/thirdparty/clDNN/src/program_node.cpp index 1ac49b292e3cab..63bdc8f58eb135 100644 --- a/inference-engine/thirdparty/clDNN/src/program_node.cpp +++ b/inference-engine/thirdparty/clDNN/src/program_node.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "program_node.h" #include "program_impl.h" diff --git a/inference-engine/thirdparty/clDNN/src/proposal.cpp b/inference-engine/thirdparty/clDNN/src/proposal.cpp index b30f5544e04877..967c41ed9d9bb9 100644 --- a/inference-engine/thirdparty/clDNN/src/proposal.cpp +++ b/inference-engine/thirdparty/clDNN/src/proposal.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "proposal_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/pyramid_roi_align.cpp b/inference-engine/thirdparty/clDNN/src/pyramid_roi_align.cpp index 7241b09b59311a..bc2bbbc095d96c 100644 --- a/inference-engine/thirdparty/clDNN/src/pyramid_roi_align.cpp +++ b/inference-engine/thirdparty/clDNN/src/pyramid_roi_align.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include "pyramid_roi_align_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/quantize.cpp b/inference-engine/thirdparty/clDNN/src/quantize.cpp index b5c01a1b66f222..95f4e5c6be321d 100644 --- a/inference-engine/thirdparty/clDNN/src/quantize.cpp +++ b/inference-engine/thirdparty/clDNN/src/quantize.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "quantize_inst.h" #include "binary_convolution_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/reduce.cpp b/inference-engine/thirdparty/clDNN/src/reduce.cpp index 082de608852c23..d1d66553e9c6f0 100644 --- a/inference-engine/thirdparty/clDNN/src/reduce.cpp +++ b/inference-engine/thirdparty/clDNN/src/reduce.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reduce_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/region_yolo.cpp b/inference-engine/thirdparty/clDNN/src/region_yolo.cpp index c8b347d5a7a355..5732529b0e6131 100644 --- a/inference-engine/thirdparty/clDNN/src/region_yolo.cpp +++ b/inference-engine/thirdparty/clDNN/src/region_yolo.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "region_yolo_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/reorder.cpp b/inference-engine/thirdparty/clDNN/src/reorder.cpp index 857d76de81e582..bbe1f897c4e8ce 100644 --- a/inference-engine/thirdparty/clDNN/src/reorder.cpp +++ b/inference-engine/thirdparty/clDNN/src/reorder.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "reorder_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/reorg_yolo.cpp b/inference-engine/thirdparty/clDNN/src/reorg_yolo.cpp index bd28abaa59204f..01d12f22e193a9 100644 --- a/inference-engine/thirdparty/clDNN/src/reorg_yolo.cpp +++ b/inference-engine/thirdparty/clDNN/src/reorg_yolo.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reorg_yolo_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/resample.cpp b/inference-engine/thirdparty/clDNN/src/resample.cpp index 4caa4947ec7095..882a2361d3e83d 100644 --- a/inference-engine/thirdparty/clDNN/src/resample.cpp +++ b/inference-engine/thirdparty/clDNN/src/resample.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "resample_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/reshape.cpp b/inference-engine/thirdparty/clDNN/src/reshape.cpp index a7e07f492ba283..ecdbeb289a9f48 100644 --- a/inference-engine/thirdparty/clDNN/src/reshape.cpp +++ b/inference-engine/thirdparty/clDNN/src/reshape.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "reshape_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/reverse_sequence.cpp b/inference-engine/thirdparty/clDNN/src/reverse_sequence.cpp index df6c68fb3f3145..77f650a8e19ad1 100644 --- a/inference-engine/thirdparty/clDNN/src/reverse_sequence.cpp +++ b/inference-engine/thirdparty/clDNN/src/reverse_sequence.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "reverse_sequence_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/roi_pooling.cpp b/inference-engine/thirdparty/clDNN/src/roi_pooling.cpp index 6cbaf400317f8f..4c291ec1329fe7 100644 --- a/inference-engine/thirdparty/clDNN/src/roi_pooling.cpp +++ b/inference-engine/thirdparty/clDNN/src/roi_pooling.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "roi_pooling_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/scale.cpp b/inference-engine/thirdparty/clDNN/src/scale.cpp index e864ca7f971cae..1e881122bdb9c8 100644 --- a/inference-engine/thirdparty/clDNN/src/scale.cpp +++ b/inference-engine/thirdparty/clDNN/src/scale.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scale_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/scatter_elements_update.cpp b/inference-engine/thirdparty/clDNN/src/scatter_elements_update.cpp index 9b68c5ae7dd4d7..11165e1b547c27 100644 --- a/inference-engine/thirdparty/clDNN/src/scatter_elements_update.cpp +++ b/inference-engine/thirdparty/clDNN/src/scatter_elements_update.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_elements_update_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/scatter_nd_update.cpp b/inference-engine/thirdparty/clDNN/src/scatter_nd_update.cpp new file mode 100644 index 00000000000000..e2935e530f2ef8 --- /dev/null +++ b/inference-engine/thirdparty/clDNN/src/scatter_nd_update.cpp @@ -0,0 +1,54 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "scatter_nd_update_inst.h" + +#include "primitive_type_base.h" +#include "error_handler.h" +#include "json_object.h" +#include + +namespace cldnn { +primitive_type_id scatter_nd_update::type_id() { + static primitive_type_base instance; + return &instance; +} + + +layout scatter_nd_update_inst::calc_output_layout(scatter_nd_update_node const& node) { + auto input_layout = node.input(0).get_output_layout(); + + auto output_shape = input_layout.size; + auto input_format = input_layout.format; + auto output_type = input_layout.data_type; + + if (node.has_fused_primitives()) { + output_type = node.get_fused_output_layout().data_type; + } + + return layout{output_type, input_format, output_shape}; +} + +std::string scatter_nd_update_inst::to_string(scatter_nd_update_node const& node) { + auto desc = node.get_primitive(); + auto node_info = node.desc_to_json(); + auto& input = node.input(); + + std::stringstream primitive_description; + + json_composite scatter_nd_update_info; + scatter_nd_update_info.add("input id", input.id()); + scatter_nd_update_info.add("input shape", node.input(0).get_output_layout().size.to_string()); + scatter_nd_update_info.add("indices shape", node.input(1).get_output_layout().size.to_string()); + scatter_nd_update_info.add("updates shape", node.input(2).get_output_layout().size.to_string()); + + node_info->add("scatter_nd_update info", scatter_nd_update_info); + node_info->dump(primitive_description); + + return primitive_description.str(); +} + +scatter_nd_update_inst::typed_primitive_inst(network_impl& network, scatter_nd_update_node const& node) : parent(network, node) {} + +} // namespace cldnn diff --git a/inference-engine/thirdparty/clDNN/src/scatter_update.cpp b/inference-engine/thirdparty/clDNN/src/scatter_update.cpp index 8bc7a9609754ae..2359494f4d9f24 100644 --- a/inference-engine/thirdparty/clDNN/src/scatter_update.cpp +++ b/inference-engine/thirdparty/clDNN/src/scatter_update.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "scatter_update_inst.h" @@ -60,7 +48,7 @@ layout scatter_update_inst::calc_output_layout(scatter_update_node const& node) const size_t nonempty_indices_dims = GetNonEmptyDimsNumber(node.input(1).get_output_layout()); auto input_layout = node.input(0).get_output_layout(); - + auto output_shape = input_layout.size; auto input_format = input_layout.format; auto output_type = input_layout.data_type; diff --git a/inference-engine/thirdparty/clDNN/src/select.cpp b/inference-engine/thirdparty/clDNN/src/select.cpp index d01c1f8b1aabf0..5494449d3849df 100644 --- a/inference-engine/thirdparty/clDNN/src/select.cpp +++ b/inference-engine/thirdparty/clDNN/src/select.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "select_inst.h" @@ -74,7 +62,7 @@ select_inst::typed_primitive_inst(network_impl& network, select_node const& node "Positive input format", deps[1]->get_output_layout().format, ""); - + if (deps[2]->get_output_layout().size != cldnn::tensor(1)) CLDNN_ERROR_NOT_EQUAL(node.id(), "Mask format", diff --git a/inference-engine/thirdparty/clDNN/src/shuffle_channels.cpp b/inference-engine/thirdparty/clDNN/src/shuffle_channels.cpp index e01b730e6c3c88..530202d3fc1901 100644 --- a/inference-engine/thirdparty/clDNN/src/shuffle_channels.cpp +++ b/inference-engine/thirdparty/clDNN/src/shuffle_channels.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "shuffle_channels_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/softmax.cpp b/inference-engine/thirdparty/clDNN/src/softmax.cpp index 36e8205627a9b2..c0227f0695df01 100644 --- a/inference-engine/thirdparty/clDNN/src/softmax.cpp +++ b/inference-engine/thirdparty/clDNN/src/softmax.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "softmax_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/space_to_batch.cpp b/inference-engine/thirdparty/clDNN/src/space_to_batch.cpp index ef11c165053ecc..98712851ae3ffb 100644 --- a/inference-engine/thirdparty/clDNN/src/space_to_batch.cpp +++ b/inference-engine/thirdparty/clDNN/src/space_to_batch.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_batch_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/space_to_depth.cpp b/inference-engine/thirdparty/clDNN/src/space_to_depth.cpp index 287f2cfecfeef4..c3283b32265af6 100644 --- a/inference-engine/thirdparty/clDNN/src/space_to_depth.cpp +++ b/inference-engine/thirdparty/clDNN/src/space_to_depth.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "space_to_depth_inst.h" diff --git a/inference-engine/thirdparty/clDNN/src/split.cpp b/inference-engine/thirdparty/clDNN/src/split.cpp index 5ffd7bd08e6ab2..80ee4aac11a753 100644 --- a/inference-engine/thirdparty/clDNN/src/split.cpp +++ b/inference-engine/thirdparty/clDNN/src/split.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "split_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/strided_slice.cpp b/inference-engine/thirdparty/clDNN/src/strided_slice.cpp index 4eb947e3ff1b66..eb409b3572c454 100644 --- a/inference-engine/thirdparty/clDNN/src/strided_slice.cpp +++ b/inference-engine/thirdparty/clDNN/src/strided_slice.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "strided_slice_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/tile.cpp b/inference-engine/thirdparty/clDNN/src/tile.cpp index 449a8f1e6fc15c..c6661655d926f5 100644 --- a/inference-engine/thirdparty/clDNN/src/tile.cpp +++ b/inference-engine/thirdparty/clDNN/src/tile.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "tile_inst.h" #include "primitive_type_base.h" diff --git a/inference-engine/thirdparty/clDNN/src/topology.cpp b/inference-engine/thirdparty/clDNN/src/topology.cpp index 3c1d6e3580b716..3f76d8c2b13088 100644 --- a/inference-engine/thirdparty/clDNN/src/topology.cpp +++ b/inference-engine/thirdparty/clDNN/src/topology.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include "api/topology.hpp" diff --git a/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt b/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt index 46f0eb6999da60..f1107dba4317df 100644 --- a/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (c) 2016 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# # ========================================= Name / Output settings ===================================== diff --git a/inference-engine/thirdparty/clDNN/tests/main.cpp b/inference-engine/thirdparty/clDNN/tests/main.cpp index 1a93cd7188720c..6fc0619701ff71 100644 --- a/inference-engine/thirdparty/clDNN/tests/main.cpp +++ b/inference-engine/thirdparty/clDNN/tests/main.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gtest/gtest.h" diff --git a/inference-engine/thirdparty/clDNN/tests/module_tests/events_pool_test.cpp b/inference-engine/thirdparty/clDNN/tests/module_tests/events_pool_test.cpp index 8d058fbdd92e22..8dc4d57f426be7 100644 --- a/inference-engine/thirdparty/clDNN/tests/module_tests/events_pool_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/module_tests/events_pool_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include "api/engine.hpp" diff --git a/inference-engine/thirdparty/clDNN/tests/module_tests/gpu_toolkit_test.cpp b/inference-engine/thirdparty/clDNN/tests/module_tests/gpu_toolkit_test.cpp index 4a70e3cb974c7e..d7efdc350450c7 100644 --- a/inference-engine/thirdparty/clDNN/tests/module_tests/gpu_toolkit_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/module_tests/gpu_toolkit_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include "api/engine.hpp" @@ -25,10 +13,6 @@ #include "test_utils.h" -#define CL_HPP_ENABLE_EXCEPTIONS -#define CL_HPP_MINIMUM_OPENCL_VERSION 120 -#define CL_HPP_TARGET_OPENCL_VERSION 120 - #if defined __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wmissing-braces" @@ -239,6 +223,3 @@ TEST(gpu_device_query, DISABLED_release_device) //check if simple execution was finished correctly execute_simple_topology(eng); } - - - diff --git a/inference-engine/thirdparty/clDNN/tests/module_tests/test_uqr_distribution.cpp b/inference-engine/thirdparty/clDNN/tests/module_tests/test_uqr_distribution.cpp index 0867a79af20bca..88ecd67818bb34 100644 --- a/inference-engine/thirdparty/clDNN/tests/module_tests/test_uqr_distribution.cpp +++ b/inference-engine/thirdparty/clDNN/tests/module_tests/test_uqr_distribution.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/activation_simple_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/activation_simple_gpu_test.cpp index f407e10a81157e..77546a65f4d635 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/activation_simple_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/activation_simple_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/add_reorders_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/add_reorders_gpu_test.cpp index 570253dc596bcb..b9e26b77b94eb1 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/add_reorders_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/add_reorders_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/arg_max_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/arg_max_gpu_test.cpp index d5c77d30319178..ac1dacfe4e325a 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/arg_max_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/arg_max_gpu_test.cpp @@ -1,19 +1,6 @@ - -/* -// Copyright (c) 2018 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-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. -*/ #include #include "api/memory.hpp" diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/average_unpooling_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/average_unpooling_gpu_test.cpp index 53414e1cbf4f4f..01eafbde391ca0 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/average_unpooling_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/average_unpooling_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/barriers_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/barriers_test.cpp index e4a52090236ae2..2b15da70ed271c 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/barriers_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/barriers_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/batch_to_space_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/batch_to_space_gpu_test.cpp index 425d1577d67a8a..9299820f8ce448 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/batch_to_space_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/batch_to_space_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/binary_convolution_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/binary_convolution_gpu_test.cpp index 287e7f82543eae..a5535f3239fc77 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/binary_convolution_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/binary_convolution_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/border_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/border_gpu_test.cpp index 357568c805e39a..1e206a2876cb39 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/border_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/border_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/broadcast_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/broadcast_gpu_test.cpp index ea000d9515febf..9784a70a916b8d 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/broadcast_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/broadcast_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/cache_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/cache_test.cpp index 175cce14c9f5a2..89935b79549406 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/cache_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/cache_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/cl_mem_input_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/cl_mem_input_test.cpp index 29f5c90f72628b..2ff579ca8ffcd6 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/cl_mem_input_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/cl_mem_input_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include @@ -26,12 +14,8 @@ #include #include "test_utils/test_utils.h" -#define CL_HPP_MINIMUM_OPENCL_VERSION 120 -#define CL_HPP_TARGET_OPENCL_VERSION 120 -#define CL_HPP_ENABLE_EXCEPTIONS -#define CL_USE_DEPRECATED_OPENCL_1_2_APIS -#include -#include "CL/cl_intel_planar_yuv.h" + +#include using namespace cldnn; using namespace tests; @@ -65,8 +49,8 @@ std::vector createSampleData(int width, int height) } for (int i = 0; i < height / 2; i++) { for (int j = 0; j < width; j += 2) { - data[width * height + i * width + j] = (i + j) % 255; - data[width * height + i * width + j + 1] = (i + j) % 255; + data[width * height + i * width + j] = (i + j) % 255; + data[width * height + i * width + j + 1] = (i + j) % 255; } } @@ -85,7 +69,7 @@ std::vector createReferenceData(std::vector data, int widt float B = (1.164f * (float)(y_comp - 16) + 1.596f * (float)(v_comp - 128)); float G = (1.164f * (float)(y_comp - 16) - 0.813f * (float)(v_comp - 128) - 0.391f * (u_comp - 128)); float R = (1.164f * (float)(y_comp - 16) + 2.018f * (float)(u_comp - 128)); - + R = std::min(std::max(R, 0.f), 255.f); G = std::min(std::max(G, 0.f), 255.f); B = std::min(std::max(B, 0.f), 255.f); @@ -334,4 +318,3 @@ TEST(cl_mem_check, check_input) { } checkStatus(clReleaseMemObject(img), "clReleaseMemObject"); } - diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/command_queue_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/command_queue_test.cpp index c74e901419923c..a07688ee671a6e 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/command_queue_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/command_queue_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/concatenation_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/concatenation_gpu_test.cpp index 48f4dcad92992b..9294d5e5d7cbbe 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/concatenation_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/concatenation_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/condition_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/condition_gpu_test.cpp index f855ba971e20dc..34a7c99dfb349c 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/condition_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/condition_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/convolution_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/convolution_gpu_test.cpp index 0bb22ad2fc5fb5..66855dba938b0e 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/convolution_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/convolution_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/crop_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/crop_gpu_test.cpp index 8417c644480dba..da96bcab6f490c 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/crop_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/crop_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/cum_sum_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/cum_sum_gpu_test.cpp index 7d55d4e0b81ced..bb40415d16aed1 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/cum_sum_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/cum_sum_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/custom_gpu_primitive_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/custom_gpu_primitive_test.cpp index 706f870e7c6366..a484f20291a126 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/custom_gpu_primitive_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/custom_gpu_primitive_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/deconvolution_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/deconvolution_gpu_test.cpp index 289d9c4c648304..a5789188fbf506 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/deconvolution_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/deconvolution_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/depth_concatenate_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/depth_concatenate_gpu_test.cpp index 88419e197ca207..6af2651aa2fc1b 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/depth_concatenate_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/depth_concatenate_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/depth_to_space_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/depth_to_space_gpu_test.cpp index 9e7880ccb6d839..6f608e9efe5bf8 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/depth_to_space_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/depth_to_space_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/detection_output_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/detection_output_test.cpp index 502cc171706e63..2112f227ca29fb 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/detection_output_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/detection_output_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/eltwise_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/eltwise_gpu_test.cpp index 3a2e6c8cf19cdf..2feaeb715f58dd 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/eltwise_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/eltwise_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/embedding_bag_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/embedding_bag_gpu_test.cpp index 26166aa37f0dc4..531e290461dce5 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/embedding_bag_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/embedding_bag_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/extract_image_patches_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/extract_image_patches_gpu_test.cpp index a1ad3a015bbb3f..ccbe6f5a769390 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/extract_image_patches_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/extract_image_patches_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/fully_connected_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/fully_connected_gpu_test.cpp index e129a31d908fde..21f51050aa8185 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/fully_connected_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/fully_connected_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/fused_conv_eltwise_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/fused_conv_eltwise_gpu_test.cpp index 1ffbf11007b482..237c7aa12ebbe0 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/fused_conv_eltwise_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/fused_conv_eltwise_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/fusings_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/fusings_gpu_test.cpp index 4dfa0cd65a0fa8..ec4e6ec656288d 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/fusings_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/fusings_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include @@ -35,6 +23,7 @@ #include "api/permute.hpp" #include "api/gather.hpp" #include "api/scatter_update.hpp" +#include "api/scatter_nd_update.hpp" #include "api/scatter_elements_update.hpp" #include "api/depth_to_space.hpp" #include "api/space_to_depth.hpp" @@ -164,7 +153,7 @@ class BaseFusingTest : public ::testing::TestWithParam { bo_not_fused.set_option(build_option::allow_static_input_reorder(true)); } - void compare(network& not_fused, network& fused, T& p) { + void compare(network& not_fused, network& fused, T& p, bool count_reorder = false) { auto outputs_ref = not_fused.execute(); auto outputs_fused = fused.execute(); @@ -199,8 +188,8 @@ class BaseFusingTest : public ::testing::TestWithParam { SCOPED_TRACE(description.str()); // Subtract reorders count to handle execution in different layouts when input/output reorders can be added in the graph - ASSERT_EQ(fused.get_executed_primitives().size() - reorders_count_fused, p.expected_fused_primitives); - ASSERT_EQ(not_fused.get_executed_primitives().size() - reorders_count_not_fused, p.expected_not_fused_primitives); + ASSERT_EQ(fused.get_executed_primitives().size() - (count_reorder ? 0 : reorders_count_fused), p.expected_fused_primitives); + ASSERT_EQ(not_fused.get_executed_primitives().size() - (count_reorder ? 0 : reorders_count_not_fused), p.expected_not_fused_primitives); ASSERT_EQ(outputs_ref.size(), outputs_fused.size()); ASSERT_EQ(outputs_ref.size(), size_t(1)); @@ -3269,7 +3258,7 @@ TEST_P(mvn_activation, basic) { auto p = GetParam(); create_topologies( input_layout("input", get_input_layout(p)), - mvn("mvn", "input", false, p.normalize_variance), + mvn("mvn", "input", p.normalize_variance, 1e-10f, false, false), activation("act", "mvn", activation_func::hyperbolic_tan), reorder("reorder_bfyx", "act", format::bfyx, data_types::f32) ); @@ -3307,7 +3296,7 @@ TEST_P(mvn_scale_quantize_i8, basic) { auto p = GetParam(); create_topologies( input_layout("input", get_input_layout(p)), - mvn("mvn", "input", false, p.normalize_variance), + mvn("mvn", "input", p.normalize_variance, 1e-10f, false, false), data("scale_data", get_mem(get_per_channel_layout(p))), scale("scale", "mvn", "scale_data"), data("in_low", get_mem(get_per_channel_layout(p), min_random, 0)), @@ -3352,7 +3341,7 @@ TEST_P(mvn_scale_activation_eltwise_fp32_quantize_i8, basic) { auto p = GetParam(); create_topologies( input_layout("input", get_input_layout(p)), - mvn("mvn", "input", false, p.normalize_variance), + mvn("mvn", "input", p.normalize_variance, 1e-10f, false, false), data("scale_data", get_mem(get_per_channel_layout(p))), scale("scale", "mvn", "scale_data"), activation("act", "scale", activation_func::hyperbolic_tan), @@ -3411,7 +3400,7 @@ class mvn_eltwise : public MVNFusingTest {}; TEST_P(mvn_eltwise, basic) { auto p = GetParam(); create_topologies(input_layout("input", layout{ p.input_type, p.input_format, p.input_size }), - mvn("mvn", "input", false, p.normalize_variance), + mvn("mvn", "input", p.normalize_variance, 1e-10f, false, false), data("eltw_data", get_mem(layout{ p.input_type, p.default_format, p.elwise_size })), eltwise("eltw", {"mvn", "eltw_data"}, eltwise_mode::sum, data_types::f32), reorder("reorder_bfyx", "eltw", p.default_format, data_types::f32) @@ -4551,7 +4540,7 @@ TEST_P(deconv_scale_actv_quant_u8_eltw_scale_actv_quant_i8, basic) { reorder("out", "quant2", p.default_format, data_types::f32) ); - tolerance = 1.f; + tolerance = 1.0f; execute(p); } @@ -4599,7 +4588,7 @@ INSTANTIATE_TEST_CASE_P(fusings_gpu, deconv_scale_actv_quant_u8_eltw_scale_actv_ deconv_test_params{ CASE_DECONV_FP32_3D_4, 2, 9 }, deconv_test_params{ CASE_DECONV_FP32_3D_5, 2, 9 }, deconv_test_params{ CASE_DECONV_FP32_3D_6, 2, 9 }, - deconv_test_params{ CASE_DECONV_FP32_3D_7, 2, 9 }, + // deconv_test_params{ CASE_DECONV_FP32_3D_7, 2, 9 }, deconv_test_params{ CASE_DECONV_FP32_3D_8, 2, 9 }, // deconv_test_params{ CASE_DECONV_FP32_3D_9, 6, 9 }, @@ -6047,6 +6036,30 @@ struct permute_params { #define CASE_PERMUTE_U8_3D_2 {2, 16, 4, 4, 3}, {4, 2, 4, 3, 16}, {3, 0, 2, 4, 1}, tensor{0}, data_types::u8, format::bfzyx, data_types::f32, format::bfzyx #define CASE_PERMUTE_U8_3D_3 {1, 32, 4, 2, 1}, {1, 2, 32, 1, 4}, {4, 3, 1, 0, 2}, tensor{0}, data_types::u8, format::bfzyx, data_types::f32, format::bfzyx +// permute_tile_8x8_4x4 +#define CASE_PERMUTE_TILE_8x8_4x4_4D_0 {1, 8, 8, 2}, {1, 2, 8, 8}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_PERMUTE_TILE_8x8_4x4_4D_1 {1, 5, 8, 2}, {1, 2, 5, 8}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_PERMUTE_TILE_8x8_4x4_4D_2 {1, 8, 5, 2}, {1, 2, 8, 5}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_PERMUTE_TILE_8x8_4x4_4D_3 {1, 5, 5, 2}, {1, 2, 5, 5}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_PERMUTE_TILE_8x8_4x4_5D_0 {1, 8, 8, 2, 2}, {1, 2, 8, 8, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::bfzyx, data_types::f32, format::bfzyx +#define CASE_PERMUTE_TILE_8x8_4x4_5D_1 {1, 5, 8, 2, 2}, {1, 2, 5, 8, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::bfzyx, data_types::f32, format::bfzyx +#define CASE_PERMUTE_TILE_8x8_4x4_5D_2 {1, 8, 5, 2, 2}, {1, 2, 8, 5, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::bfzyx, data_types::f32, format::bfzyx +#define CASE_PERMUTE_TILE_8x8_4x4_5D_3 {1, 5, 5, 2, 2}, {1, 2, 5, 5, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::bfzyx, data_types::f32, format::bfzyx +#define CASE_PERMUTE_TILE_8x8_4x4_6D_0 {1, 8, 8, 2, 2, 2}, {1, 2, 8, 8, 2, 2}, {0, 5, 1, 2, 3, 4}, tensor{0}, data_types::f32, format::bfwzyx, data_types::f32, format::bfwzyx +#define CASE_PERMUTE_TILE_8x8_4x4_6D_1 {1, 5, 8, 2, 2, 2}, {1, 2, 5, 8, 2, 2}, {0, 5, 1, 2, 3, 4}, tensor{0}, data_types::f32, format::bfwzyx, data_types::f32, format::bfwzyx +#define CASE_PERMUTE_TILE_8x8_4x4_6D_2 {1, 8, 5, 2, 2, 2}, {1, 2, 8, 5, 2, 2}, {0, 5, 1, 2, 3, 4}, tensor{0}, data_types::f32, format::bfwzyx, data_types::f32, format::bfwzyx +#define CASE_PERMUTE_TILE_8x8_4x4_6D_3 {1, 5, 5, 2, 2, 2}, {1, 2, 5, 5, 2, 2}, {0, 5, 1, 2, 3, 4}, tensor{0}, data_types::f32, format::bfwzyx, data_types::f32, format::bfwzyx + +// permute_tile_8x8_4x4_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_0 {1, 16, 16, 2}, {1, 2, 16, 16}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::b_fs_yx_fsv16, data_types::f32, format::b_fs_yx_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_1 {1, 15, 16, 2}, {1, 2, 15, 16}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::b_fs_yx_fsv16, data_types::f32, format::b_fs_yx_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_2 {1, 16, 3, 2}, {1, 2, 16, 3}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::b_fs_yx_fsv16, data_types::f32, format::b_fs_yx_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_3 {1, 5, 7, 2}, {1, 2, 5, 7}, {0, 3, 1, 2}, tensor{0}, data_types::f32, format::b_fs_yx_fsv16, data_types::f32, format::b_fs_yx_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_0 {1, 16, 16, 2, 2}, {1, 2, 16, 16, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::b_fs_zyx_fsv16, data_types::f32, format::b_fs_zyx_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_1 {1, 15, 16, 2, 2}, {1, 2, 15, 16, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::b_fs_zyx_fsv16, data_types::f32, format::b_fs_zyx_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_2 {1, 16, 3, 2, 2}, {1, 2, 16, 3, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::b_fs_zyx_fsv16, data_types::f32, format::b_fs_zyx_fsv16 +#define CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_3 {1, 5, 7, 2, 2}, {1, 2, 5, 7, 2}, {0, 4, 1, 2, 3}, tensor{0}, data_types::f32, format::b_fs_zyx_fsv16, data_types::f32, format::b_fs_zyx_fsv16 + class PermuteFusingTest : public ::BaseFusingTest { public: @@ -6138,6 +6151,30 @@ INSTANTIATE_TEST_CASE_P(fusings_gpu, permute_activation_scale_eltwise, permute_params{CASE_PERMUTE_U8_3D_1, 2, 5}, permute_params{CASE_PERMUTE_U8_3D_2, 2, 5}, permute_params{CASE_PERMUTE_U8_3D_3, 2, 5}, + + // Fusing tests for permute_tile_8x8_4x4 + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_0, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_1, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_2, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_3, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_0, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_1, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_2, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_3, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_0, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_1, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_2, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_3, 2, 5}, + + // Fusing tests for permute_tile_8x8_4x4_fsv16 + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_0, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_1, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_2, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_3, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_0, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_1, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_2, 2, 5}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_3, 2, 5}, }), ); class permute_quant_u8: public PermuteFusingTest {}; @@ -6317,8 +6354,110 @@ INSTANTIATE_TEST_CASE_P(fusings_gpu, permute_scale_eltwise_actv_scale_actv, permute_params{CASE_PERMUTE_U8_3D_1, 2, 7}, permute_params{CASE_PERMUTE_U8_3D_2, 2, 7}, permute_params{CASE_PERMUTE_U8_3D_3, 2, 7}, + + // Fusing tests for permute_tile_8x8_4x4 + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_0, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_1, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_2, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_4D_3, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_0, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_1, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_2, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_5D_3, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_0, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_1, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_2, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_6D_3, 2, 7}, + + // Fusing tests for permute_tile_8x8_4x4_fsv16 + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_0, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_1, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_2, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_4D_3, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_0, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_1, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_2, 2, 7}, + permute_params{CASE_PERMUTE_TILE_8x8_4x4_FSV16_5D_3, 2, 7}, }), ); +/* ------------------------------------------------------------------------------------------------------------ */ +/* ---------------------------- PERMUTE FUSE REDUNDANT REORDER cases ------------------------------------------ */ +/* ------------------------------------------------------------------------------------------------------------ */ + +struct permute_reorder_params { + tensor in_shape; + tensor out_shape; + std::vector permute_order1; + std::vector permute_order2; + data_types permute_type; + data_types output_type; + format permute_format; + format output_format; + size_t expected_fused_primitives; + size_t expected_not_fused_primitives; +}; + +#define CASE_PERMUTE_REORDER_F32_0 {1, 16, 32, 2}, {1, 16, 32, 2}, {0, 3, 2, 1}, {0, 3, 2, 1}, data_types::f32, data_types::f32, format::b_fs_yx_fsv16, format::bfyx +#define CASE_PERMUTE_REORDER_F32_1 {2, 16, 16, 16}, {2, 16, 16, 16}, {0, 3, 2, 1}, {0, 3, 2, 1}, data_types::f32, data_types::f32, format::b_fs_yx_fsv4, format::bfyx +#define CASE_PERMUTE_REORDER_F32_2 {1, 16, 4, 5, 16}, {1, 16, 4, 5, 16}, {0, 2, 3, 4, 1}, {0, 4, 1, 2, 3}, data_types::f32, data_types::f32, format::b_fs_zyx_fsv16, format::bfzyx + +#define CASE_PERMUTE_REORDER_F16_0 {1, 16, 2, 4}, {1, 16, 2, 4}, {0, 2, 1, 3}, {0, 2, 1, 3}, data_types::f16, data_types::f16, format::b_fs_yx_fsv16, format::bfyx +#define CASE_PERMUTE_REORDER_F16_1 {1, 16, 4, 5, 16}, {1, 16, 4, 5, 16}, {0, 2, 3, 4, 1}, {0, 4, 1, 2, 3}, data_types::f16, data_types::f16, format::b_fs_zyx_fsv16, format::bfzyx +#define CASE_PERMUTE_REORDER_F16_2 {1, 5, 1, 2, 14}, {1, 5, 1, 2, 14}, {0, 2, 3, 4, 1}, {0, 4, 1, 2, 3}, data_types::f16, data_types::f16, format::b_fs_zyx_fsv16, format::bfzyx + +#define CASE_PERMUTE_REORDER_S8_0 {1, 15, 4, 5}, {1, 15, 4, 5}, {0, 2, 3, 1}, {0, 3, 1, 2}, data_types::i8, data_types::f32, format::b_fs_yx_fsv4, format::bfyx +#define CASE_PERMUTE_REORDER_S8_1 {1, 2, 15, 4, 5}, {1, 2, 15, 4, 5}, {0, 2, 4, 1, 3}, {0, 3, 1, 4, 2}, data_types::i8, data_types::f32, format::b_fs_zyx_fsv16, format::bfzyx + +#define CASE_PERMUTE_REORDER_F32_TO_F16_0 {1, 5, 1, 2, 14}, {1, 5, 1, 2, 14}, {0, 2, 3, 4, 1}, {0, 4, 1, 2, 3}, data_types::f32, data_types::f16, format::b_fs_zyx_fsv16, format::bfzyx +#define CASE_PERMUTE_REORDER_S8_TO_F32_0 {1, 18, 1, 2, 2}, {1, 5, 1, 2, 14}, {0, 2, 3, 4, 1}, {0, 4, 1, 2, 3}, data_types::i8, data_types::f32, format::b_fs_zyx_fsv16, format::bfzyx +#define CASE_PERMUTE_REORDER_U8_TO_F16_0 {1, 17, 1, 2, 7}, {1, 5, 1, 2, 14}, {0, 2, 3, 4, 1}, {0, 4, 1, 2, 3}, data_types::u8, data_types::f16, format::b_fs_zyx_fsv16, format::bfzyx + +class PermuteReorderFusingTest : public ::BaseFusingTest { +public: + + void execute(permute_reorder_params& p) { + auto input_prim = get_mem(get_input_layout(p)); + network network_not_fused(this->engine, this->topology_non_fused, bo_not_fused); + network network_fused(this->engine, this->topology_fused, bo_fused); + network_fused.set_input_data("input", input_prim); + network_not_fused.set_input_data("input", input_prim); + compare(network_not_fused, network_fused, p, true); + } + + layout get_input_layout(permute_reorder_params& p) { + return layout{ p.permute_type, p.permute_format, p.in_shape, padding{} }; + } +}; + +class permute_redundant_reorder : public PermuteReorderFusingTest {}; + +TEST_P(permute_redundant_reorder, basic) { + auto p = GetParam(); + create_topologies( + input_layout("input", get_input_layout(p)), + permute("permute1", "input", p.permute_order1), + reorder("reorder1", "permute1", p.output_format, p.output_type), // to be fused + permute("permute2", "reorder1", p.permute_order2) // dummy last op to make reorder n + ); + tolerance = 1e-5f; + execute(p); +} + +INSTANTIATE_TEST_CASE_P(fusings_gpu, permute_redundant_reorder, + ::testing::ValuesIn(std::vector { + permute_reorder_params{CASE_PERMUTE_REORDER_F32_0, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_F32_1, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_F32_2, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_F16_0, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_F16_1, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_F16_2, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_S8_0, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_S8_1, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_F32_TO_F16_0, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_S8_TO_F32_0, 3, 4}, + permute_reorder_params{CASE_PERMUTE_REORDER_U8_TO_F16_0, 3, 4}, + }),); + class NormalizeFusingTest : public ::BaseFusingTest { public: void execute(normalize_test_params& p) { @@ -7448,3 +7587,224 @@ INSTANTIATE_TEST_CASE_P(DISABLED_fusings_gpu, reduce_test_params{CASE_REDUCE_I8_3, 2, 4, reduce_mode::mean, {reduce::along_x}, true, "reduce_ref"}, reduce_test_params{CASE_REDUCE_U8_3, 2, 4, reduce_mode::l2, {reduce::along_x}, true, "reduce_ref"} }), ); + + +/* ----------------------------------------------------------------------------------------------------- */ +/* ------------------------------------------ ScatterNDUpdate cases ------------------------------ */ +/* ----------------------------------------------------------------------------------------------------- */ +struct scatter_nd_update_test_params { + tensor input_shape; + tensor indices_shape; + tensor updates_shape; + int max_number_in_indices; + int indices_rank; + data_types data_type; + format input_format; + data_types default_type; + format default_format; + size_t expected_fused_primitives; + size_t expected_not_fused_primitives; +}; + +#define CASE_SCATTER_ND_UPDATE_FP16_4D_1 {6, 1, 1, 1}, {3, 1, 1, 1}, {3, 1, 1, 1}, 6, 1, data_types::f16, format::bfyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_4D_2 {6, 6, 1, 1}, {3, 2, 1, 1}, {3, 1, 1, 1}, 6, 2, data_types::f16, format::bfyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_4D_3 {6, 7, 8, 9}, {5, 1, 1, 1}, {5, 7, 8, 9}, 6, 2, data_types::f16, format::bfyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_4D_4 {6, 7, 8, 9}, {5, 1, 1, 1}, {5, 7, 8, 9}, 6, 2, data_types::f16, format::bfyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_4D_5 {6, 7, 8, 9}, {6, 2, 1, 1}, {6, 9, 1, 8}, 6, 2, data_types::f16, format::bfyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_4D_6 {6, 7, 8, 9}, {6, 3, 1, 1}, {6, 8, 1, 1}, 6, 2, data_types::f16, format::bfyx, data_types::f16, format::bfyx + +#define CASE_SCATTER_ND_UPDATE_FP16_5D_1 {6, 7, 8, 9, 10}, {5, 1, 1, 1, 1}, {5, 7, 8, 9, 10}, 6, 1, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_2 {6, 7, 8, 9, 10}, {5, 2, 1, 1, 1}, {5, 10, 1, 8, 9}, 6, 2, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_3 {6, 7, 8, 9, 10}, {5, 3, 1, 1, 1}, {5, 9, 1, 1, 8}, 6, 2, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_4 {6, 7, 8, 9, 10}, {5, 4, 1, 1, 1}, {5, 8, 1, 1, 1}, 6, 2, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_5 {6, 7, 8, 9, 10}, {5, 5, 1, 1, 1}, {5, 1, 1, 1, 1}, 6, 2, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_6 {6, 7, 8, 9, 10}, {5, 2, 1, 1, 2}, {5, 2, 8, 9, 10}, 6, 3, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_7 {6, 7, 8, 9, 10}, {5, 2, 1, 1, 3}, {5, 2, 1, 8, 9}, 6, 3, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_8 {6, 7, 8, 9, 10}, {5, 2, 1, 4, 3}, {5, 2, 1, 8, 3}, 6, 4, data_types::f16, format::bfzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_5D_9 {6, 7, 8, 9, 10}, {5, 2, 1, 3, 3}, {5, 2, 8, 9, 3}, 6, 4, data_types::f16, format::bfzyx, data_types::f16, format::bfyx + +#define CASE_SCATTER_ND_UPDATE_FP16_6D_1 {6, 7, 8, 9, 10, 11}, {5, 1, 1, 1}, {5, 7, 8, 9, 10, 11}, 6, 1, data_types::f16, format::bfwzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_6D_2 {6, 7, 8, 9, 10, 11}, {5, 2, 1, 1}, {5, 11, 1, 8, 9, 10}, 6, 2, data_types::f16, format::bfwzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_6D_3 {6, 7, 8, 9, 10, 11}, {5, 3, 1, 1}, {5, 10, 1, 1, 8, 9}, 6, 2, data_types::f16, format::bfwzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_6D_4 {6, 7, 8, 9, 10, 11}, {5, 4, 1, 1}, {5, 9, 1, 1, 1, 8}, 6, 2, data_types::f16, format::bfwzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_6D_5 {6, 7, 8, 9, 2, 2}, {5, 5, 1, 1}, {5, 8, 1, 1, 1, 1}, 6, 2, data_types::f16, format::bfwzyx, data_types::f16, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP16_6D_6 {6, 7, 8, 9, 2, 2}, {5, 6, 1, 1}, {5, 1, 1, 1, 1, 1}, 6, 2, data_types::f16, format::bfwzyx, data_types::f16, format::bfyx + +#define CASE_SCATTER_ND_UPDATE_FP32_4D_1 {6, 1, 1, 1}, {3, 1, 1, 1}, {3, 1, 1, 1}, 6, 1, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_4D_2 {6, 6, 1, 1}, {3, 2, 1, 1}, {3, 1, 1, 1}, 6, 2, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_4D_3 {6, 7, 8, 1}, {5, 1, 1, 1}, {5, 7, 8, 1}, 6, 2, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_4D_4 {6, 7, 8, 9}, {5, 1, 1, 1}, {5, 7, 8, 9}, 6, 2, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_4D_5 {6, 7, 8, 9}, {6, 2, 1, 1}, {6, 9, 1, 8}, 6, 2, data_types::f32, format::bfyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_4D_6 {6, 7, 8, 9}, {6, 3, 1, 1}, {6, 8, 1, 1}, 6, 2, data_types::f32, format::bfyx, data_types::f32, format::bfyx + +#define CASE_SCATTER_ND_UPDATE_FP32_5D_1 {6, 7, 8, 9, 10}, {5, 1, 1, 1, 1}, {5, 7, 8, 9, 10}, 6, 1, data_types::f32, format::bfzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_5D_2 {6, 7, 8, 9, 10}, {5, 2, 1, 1, 1}, {5, 10, 1, 8, 9}, 6, 2, data_types::f32, format::bfzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_5D_3 {6, 7, 8, 9, 10}, {5, 3, 1, 1, 1}, {5, 9, 1, 1, 8}, 6, 2, data_types::f32, format::bfzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_5D_4 {6, 7, 8, 9, 10}, {5, 4, 1, 1, 1}, {5, 8, 1, 1, 1}, 6, 2, data_types::f32, format::bfzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_5D_5 {6, 7, 8, 9, 10}, {5, 5, 1, 1, 1}, {5, 1, 1, 1, 1}, 6, 2, data_types::f32, format::bfzyx, data_types::f32, format::bfyx + +#define CASE_SCATTER_ND_UPDATE_FP32_6D_1 {6, 7, 8, 9, 10, 11}, {5, 1, 1, 1}, {5, 7, 8, 9, 10, 11}, 6, 1, data_types::f32, format::bfwzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_6D_2 {6, 7, 8, 9, 10, 11}, {5, 2, 1, 1}, {5, 11, 1, 8, 9, 10}, 6, 2, data_types::f32, format::bfwzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_6D_3 {6, 7, 8, 9, 10, 11}, {5, 3, 1, 1}, {5, 10, 1, 1, 8, 9}, 6, 2, data_types::f32, format::bfwzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_6D_4 {6, 7, 8, 9, 10, 11}, {5, 4, 1, 1}, {5, 9, 1, 1, 1, 8}, 6, 2, data_types::f32, format::bfwzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_6D_5 {6, 7, 8, 9, 2, 2}, {5, 5, 1, 1}, {5, 8, 1, 1, 1, 1}, 6, 2, data_types::f32, format::bfwzyx, data_types::f32, format::bfyx +#define CASE_SCATTER_ND_UPDATE_FP32_6D_6 {6, 7, 8, 9, 2, 2}, {5, 6, 1, 1}, {5, 1, 1, 1, 1, 1}, 6, 2, data_types::f32, format::bfwzyx, data_types::f32, format::bfyx + +class ScatterNDUpdatePrimitiveFusingTest : public ::BaseFusingTest { +public: + void execute(scatter_nd_update_test_params& p) { + auto input_prim = get_mem(get_input_layout(p)); + network network_not_fused(this->engine, this->topology_non_fused, bo_not_fused); + network network_fused(this->engine, this->topology_fused, bo_fused); + network_fused.set_input_data("input", input_prim); + network_not_fused.set_input_data("input", input_prim); + compare(network_not_fused, network_fused, p); + } + + layout get_input_layout(scatter_nd_update_test_params& p) { + return layout{ p.data_type, p.input_format, p.input_shape }; + } + + layout get_indices_layout(scatter_nd_update_test_params& p) { + return layout{ p.data_type, p.input_format, p.indices_shape }; + } + + layout get_updates_layout(scatter_nd_update_test_params& p) { + return layout{ p.data_type, p.input_format, p.updates_shape }; + } + + layout get_per_channel_layout(scatter_nd_update_test_params& p) { + return layout{ p.default_type, p.default_format, tensor{1, p.input_shape.feature[0], 1, 1} }; + } +}; + +class scatter_nd_update_quantize : public ScatterNDUpdatePrimitiveFusingTest {}; +TEST_P(scatter_nd_update_quantize, basic) { + auto p = GetParam(); + create_topologies(input_layout("input", get_input_layout(p)), + data("scatter_nd_update_indices", get_mem(get_indices_layout(p), 0, p.max_number_in_indices)), + data("scatter_nd_update_updates", get_mem(get_updates_layout(p), 0, 100)), + data("in_lo", get_mem(get_per_channel_layout(p), min_random, 0)), + data("in_hi", get_mem(get_per_channel_layout(p), 1, max_random)), + data("out_lo", get_mem(get_single_element_layout(p), -127)), + data("out_hi", get_mem(get_single_element_layout(p), 127)), + scatter_nd_update("scatter_nd_update_prim", "input", "scatter_nd_update_indices", "scatter_nd_update_updates", p.indices_rank), + quantize("quantize", "scatter_nd_update_prim", "in_lo", "in_hi", "out_lo", "out_hi", 255, data_types::i8), + reorder("reorder_bfyx", "quantize", p.default_format, data_types::f32) + ); + tolerance = 1.f; + execute(p); +} + +INSTANTIATE_TEST_CASE_P(fusings_gpu, scatter_nd_update_quantize, + ::testing::ValuesIn(std::vector{ + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_1, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_2, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_3, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_4, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_5, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_6, 2, 3 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_1, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_2, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_3, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_4, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_5, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_6, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_7, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_8, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_9, 2, 3 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_1, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_2, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_3, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_4, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_5, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_6, 2, 3 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_1, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_2, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_3, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_4, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_5, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_6, 2, 3 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_1, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_2, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_3, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_4, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_5, 2, 3 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_1, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_2, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_3, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_4, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_5, 2, 3 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_6, 2, 3 }, +}), ); + +class scatter_nd_update_scale_activation_eltwise : public ScatterNDUpdatePrimitiveFusingTest {}; +TEST_P(scatter_nd_update_scale_activation_eltwise, basic) { + auto p = GetParam(); + create_topologies(input_layout("input", get_input_layout(p)), + data("scatter_nd_update_indices", get_mem(get_indices_layout(p), 0, p.max_number_in_indices)), + data("scatter_nd_update_updates", get_mem(get_updates_layout(p), 0, 100)), + data("scale_data", get_mem(get_per_channel_layout(p), -10, 10)), + data("eltwise_data", get_mem(layout{ p.data_type, p.input_format, p.input_shape })), + scatter_nd_update("scatter_nd_update_prim", "input", "scatter_nd_update_indices", "scatter_nd_update_updates", p.indices_rank), + activation("activation", "scatter_nd_update_prim", activation_func::abs), + scale("scale", "activation", "scale_data"), + eltwise("eltwise", { "scale", "eltwise_data" }, eltwise_mode::sum, p.data_type), + reorder("reorder_bfyx", "eltwise", p.default_format, data_types::f32) + ); + + tolerance = 1.f; + execute(p); +} + +INSTANTIATE_TEST_CASE_P(fusings_gpu, scatter_nd_update_scale_activation_eltwise, + ::testing::ValuesIn(std::vector{ + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_1, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_2, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_3, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_4, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_5, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_4D_6, 2, 5 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_1, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_2, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_3, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_4, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_5, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_6, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_7, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_8, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_5D_9, 2, 5 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_1, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_2, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_3, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_4, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_5, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP16_6D_6, 2, 5 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_1, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_2, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_3, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_4, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_5, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_4D_6, 2, 5 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_1, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_2, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_3, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_4, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_5D_5, 2, 5 }, + + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_1, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_2, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_3, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_4, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_5, 2, 5 }, + scatter_nd_update_test_params{ CASE_SCATTER_ND_UPDATE_FP32_6D_6, 2, 5 }, +}), ); diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/gather_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/gather_gpu_test.cpp index 1f32898ac342de..41abdc9670fa41 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/gather_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/gather_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/gemm_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/gemm_gpu_test.cpp index 12ccd310ac8226..136c1a3c107f04 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/gemm_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/gemm_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include @@ -3536,7 +3526,7 @@ class GemmBaseTest : public ::testing::TestWithParam { EXPECT_EQ(output_ptr.size(), (size_t)(p.b_out_num * p.f_out_num * p.m_size * p.n_size)); if (sizeof(input0_type) == 1) { for (size_t i = 0; i < out_data.size(); ++i) { - EXPECT_FLOAT_EQ(float(output_ptr[i]), float(out_data[i])) << "index = " << i; + EXPECT_NEAR(float(output_ptr[i]), float(out_data[i]), 1e-1) << "index = " << i; } } else if (sizeof(input0_type) == 2) { for (size_t i = 0; i < out_data.size(); ++i) { diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/lrn_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/lrn_gpu_test.cpp index 7ca2850ff2b86b..8d0c39a9bad475 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/lrn_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/lrn_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_dynamic_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_dynamic_gpu_test.cpp index 46cfc1ccf06199..04100ead3c7b9d 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_dynamic_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_dynamic_gpu_test.cpp @@ -1,4 +1,8 @@ -#include +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include #include "api/memory.hpp" #include "api/mutable_data.hpp" #include "api/input_layout.hpp" diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_gpu_test.cpp index ed303de4cec2bf..866343d92974f2 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/lstm_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/max_unpooling_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/max_unpooling_gpu_test.cpp index 6d9f7d25f2d4fe..1fbdba583d7b01 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/max_unpooling_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/max_unpooling_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/memory_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/memory_test.cpp index c1bde3306bb393..d303700be2ffd2 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/memory_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/memory_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/mvn_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/mvn_gpu_test.cpp index 793f93b0d54e32..32909ae9890d3a 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/mvn_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/mvn_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -119,7 +107,7 @@ void mvn_compute_mean_within_channels(cldnn::memory& output, bool normalize_vari } } -TEST(mvn_gpu_test, mvn_test_across_channels_bfyx) { +TEST(mvn_gpu_test, mvn_test_across_channels_outside_sqrt_bfyx) { // mvn accross channels fp32 test with normalize_variance set to false using namespace cldnn; using namespace tests; @@ -132,7 +120,7 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", true, false)); + topology.add(mvn("mvn", "input", false, 1e-10f, false, true)); network network(engine, topology); @@ -146,7 +134,61 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx) { mvn_compute_mean_accross_channels(output, false); } -TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_fp16) { +TEST(mvn_gpu_test, mvn_test_across_channels_inside_sqrt_bfyx) { + // mvn accross channels fp32 test with normalize_variance set to false + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f32, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", false, 1e-10f, true, true)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_accross_channels(output, false); +} + +TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_outside_sqrt_fp16) { + // mvn accross channels fp16 test with normalize_variance set to false + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f16, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", false, 1e-10f, false, true)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_accross_channels(output, false); +} + +TEST(mvn_gpu_test, mvn_test_across_channels_inside_sqrt_bfyx_fp16) { // mvn accross channels fp16 test with normalize_variance set to false using namespace cldnn; using namespace tests; @@ -159,7 +201,7 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_fp16) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", true, false)); + topology.add(mvn("mvn", "input", false, 1e-10f, true, true)); network network(engine, topology); @@ -173,7 +215,34 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_fp16) { mvn_compute_mean_accross_channels(output, false); } -TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_normalize_variance) { +TEST(mvn_gpu_test, mvn_test_across_channels_outside_sqrt_bfyx_normalize_variance) { + // mvn accross channels fp32 test with normalize_variance set to true + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f32, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", true, 1e-10f, false, true)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_accross_channels(output, true); +} + +TEST(mvn_gpu_test, mvn_test_across_channels_inside_sqrt_bfyx_normalize_variance) { // mvn accross channels fp32 test with normalize_variance set to true using namespace cldnn; using namespace tests; @@ -186,7 +255,7 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_normalize_variance) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", true, true)); + topology.add(mvn("mvn", "input", true, 1e-10f, true, true)); network network(engine, topology); @@ -200,7 +269,34 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_normalize_variance) { mvn_compute_mean_accross_channels(output, true); } -TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_normalize_variance_fp16) { +TEST(mvn_gpu_test, mvn_test_across_channels_outside_sqrt_bfyx_normalize_variance_fp16) { + // mvn accross channels fp16 test with normalize_variance set to true + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f16, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", true, 1e-10f, false, true)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_accross_channels(output, true); +} + +TEST(mvn_gpu_test, mvn_test_across_channels_inside_sqrt_bfyx_normalize_variance_fp16) { // mvn accross channels fp16 test with normalize_variance set to true using namespace cldnn; using namespace tests; @@ -213,7 +309,7 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_normalize_variance_fp16) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", true, true)); + topology.add(mvn("mvn", "input", true, 1e-10f, true, true)); network network(engine, topology); @@ -227,7 +323,7 @@ TEST(mvn_gpu_test, mvn_test_across_channels_bfyx_normalize_variance_fp16) { mvn_compute_mean_accross_channels(output, true); } -TEST(mvn_gpu_test, mvn_test_within_channels_bfyx) { +TEST(mvn_gpu_test, mvn_test_within_channels_outside_sqrt_bfyx) { // mvn within channels fp32 test with normalize_variance set to false using namespace cldnn; using namespace tests; @@ -240,7 +336,7 @@ TEST(mvn_gpu_test, mvn_test_within_channels_bfyx) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", false, false)); + topology.add(mvn("mvn", "input", false, 1e-10f, false, false)); network network(engine, topology); @@ -254,7 +350,34 @@ TEST(mvn_gpu_test, mvn_test_within_channels_bfyx) { mvn_compute_mean_within_channels(output, false); } -TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_fp16) { +TEST(mvn_gpu_test, mvn_test_within_channels_inside_sqrt__bfyx) { + // mvn within channels fp32 test with normalize_variance set to false + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f32, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", false, 1e-10f, true, false)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_within_channels(output, false); +} + +TEST(mvn_gpu_test, mvn_test_within_channels_outside_sqrt_bfyx_fp16) { // mvn within channels fp16 test with normalize_variance set to false using namespace cldnn; using namespace tests; @@ -267,7 +390,7 @@ TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_fp16) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", false, false)); + topology.add(mvn("mvn", "input", false, 1e-10f, false, false)); network network(engine, topology); @@ -281,7 +404,61 @@ TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_fp16) { mvn_compute_mean_within_channels(output, false); } -TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_normalize_variance) { +TEST(mvn_gpu_test, mvn_test_within_channels_inside_sqrt_bfyx_fp16) { + // mvn within channels fp16 test with normalize_variance set to false + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f16, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", false, 1e-10f, true, false)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_within_channels(output, false); +} + +TEST(mvn_gpu_test, mvn_test_within_channels_outside_sqrt_bfyx_normalize_variance) { + // mvn within channels fp32 test with normalize_variance set to true + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f32, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", true, 1e-10f, false, false)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_within_channels(output, true); +} + +TEST(mvn_gpu_test, mvn_test_within_channels_inside_sqrt_bfyx_normalize_variance) { // mvn within channels fp32 test with normalize_variance set to true using namespace cldnn; using namespace tests; @@ -294,7 +471,7 @@ TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_normalize_variance) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", false, true)); + topology.add(mvn("mvn", "input", true, 1e-10f, true, false)); network network(engine, topology); @@ -308,7 +485,7 @@ TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_normalize_variance) { mvn_compute_mean_within_channels(output, true); } -TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_normalize_variance_fp16) { +TEST(mvn_gpu_test, mvn_test_within_channels_outside_sqrt_bfyx_normalize_variance_fp16) { // mvn within channels fp16 test with normalize_variance set to true using namespace cldnn; using namespace tests; @@ -321,7 +498,34 @@ TEST(mvn_gpu_test, mvn_test_within_channels_bfyx_normalize_variance_fp16) { topology topology; topology.add(input_layout("input", input.get_layout())); - topology.add(mvn("mvn", "input", false, true)); + topology.add(mvn("mvn", "input", true, 1e-10f, false, false)); + + network network(engine, topology); + + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "mvn"); + + auto output = outputs.begin()->second.get_memory(); + mvn_compute_mean_within_channels(output, true); +} + +TEST(mvn_gpu_test, mvn_test_within_channels_inside_sqrt_bfyx_normalize_variance_fp16) { + // mvn within channels fp16 test with normalize_variance set to true + using namespace cldnn; + using namespace tests; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, {data_types::f16, format::bfyx, {7, 10, 17, 13}}); + + tests::set_random_values(input, true, 8, 100); + + topology topology; + topology.add(input_layout("input", input.get_layout())); + topology.add(mvn("mvn", "input", true, 1e-10f, true, false)); network network(engine, topology); @@ -339,8 +543,9 @@ struct mvn_basic_test_params { format::type input_format; data_types input_type; tensor input_size; - bool across_channels; bool normalize_variance; + bool eps_inside_sqrt; + bool across_channels; padding output_pad; }; @@ -419,7 +624,7 @@ struct mvn_random_test : ::testing::TestWithParam { topology topo; topo.add(input_layout("input", input.get_layout())); - auto prim = mvn("mvn", "input", params.across_channels, params.normalize_variance); + auto prim = mvn("mvn", "input", params.normalize_variance, 1e-10f, false, params.across_channels); prim.output_padding = output_pad; topo.add(prim); @@ -448,31 +653,47 @@ struct mvn_test_case_generator : std::vector { } mvn_test_case_generator& smoke_tests(format::type fmt, data_types in_dt) { - push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, false, false, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, false, true, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, true, false, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, true, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, false, false, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, true, false, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, false, true, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, false, false, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, true, true, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, true, false, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, false, true, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {7, 10, 17, 13}, true, true, true, padding()}); return *this; } mvn_test_case_generator& zyx_tests(format::type fmt, data_types in_dt) { - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, false, false, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, false, true, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 5, 67, 71}, false, false, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 5, 67, 71}, false, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, false, false, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, true, false, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, false, true, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, false, false, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, true, true, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, true, false, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, false, true, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 1, 67, 71}, true, true, true, padding()}); return *this; } mvn_test_case_generator& extended_tests(format::type fmt, data_types in_dt) { - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, false, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, true, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, false, padding()}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, false, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, false, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, true, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, false, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, true, false, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, false, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, true, true, padding()}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, true, true, padding()}); // output padding - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, false, padding({0, 0, 1, 1})}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, true, padding({0, 0, 1, 1})}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, false, padding({0, 0, 1, 1})}); - push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, true, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, false, false, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, false, false, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, true, false, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, false, true, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, true, false, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, false, true, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, false, true, true, padding({0, 0, 1, 1})}); + push_back(mvn_basic_test_params{fmt, in_dt, {2, 17, 67, 71}, true, true, true, padding({0, 0, 1, 1})}); return *this; } diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/non_max_suppression_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/non_max_suppression_test.cpp index e1182378192c5d..554e648608607a 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/non_max_suppression_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/non_max_suppression_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/normalizel2_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/normalizel2_gpu_test.cpp index 8de4a1d07d4745..00a400cce57453 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/normalizel2_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/normalizel2_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/one_hot_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/one_hot_gpu_test.cpp index f03975728beaa7..cb510e4a685119 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/one_hot_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/one_hot_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/permute_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/permute_gpu_test.cpp index d60d6ea34b69aa..d22a5bf8077e9d 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/permute_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/permute_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include @@ -31,6 +19,7 @@ #include #include #include +#include using namespace cldnn; using namespace tests; @@ -517,6 +506,97 @@ TEST(permute_gpu_i64, basic_bfyx_permute_0_1_3_2) { permute_test_with_reorder(); } +TEST(permute_fuse_reorder_gpu_f32, basic_b_fs_yx_fsv4_permute_1_8_16_1) +{ + // Input : bfyx:1x32x1x2 + // Permute1 order : {0, 3, 1, 2} + // Permute2 order : {0, 2, 3, 1} + + const auto& engine = get_test_engine(); + auto input = memory::allocate(engine, { data_types::f32, format::bfyx, {1, 8, 1, 16}}); + + std::vector values = { + 0.0f, 1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, 7.0f, + 8.0f, 9.0f, 10.0f, 11.0f, + 12.0f, 13.0f, 14.0f, 15.0f, + 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, + 24.0f, 25.0f, 26.0f, 27.0f, + 28.0f, 29.0f, 30.0f, 31.0f, + 32.0f, 33.0f, 34.0f, 35.0f, + 36.0f, 37.0f, 38.0f, 39.0f, + 40.0f, 41.0f, 42.0f, 43.0f, + 44.0f, 45.0f, 46.0f, 47.0f, + 48.0f, 49.0f, 50.0f, 51.0f, + 52.0f, 53.0f, 54.0f, 55.0f, + 56.0f, 57.0f, 58.0f, 59.0f, + 60.0f, 61.0f, 62.0f, 63.0f, + 64.0f, 65.0f, 66.0f, 67.0f, + 68.0f, 69.0f, 70.0f, 71.0f, + 72.0f, 73.0f, 74.0f, 75.0f, + 76.0f, 77.0f, 78.0f, 79.0f, + 80.0f, 81.0f, 82.0f, 83.0f, + 84.0f, 85.0f, 86.0f, 87.0f, + 88.0f, 89.0f, 90.0f, 91.0f, + 92.0f, 93.0f, 94.0f, 95.0f, + 96.0f, 97.0f, 98.0f, 99.0f, + 100.0f, 101.0f, 102.0f, 103.0f, + 104.0f, 105.0f, 106.0f, 107.0f, + 108.0f, 109.0f, 110.0f, 111.0f, + 112.0f, 113.0f, 114.0f, 115.0f, + 116.0f, 117.0f, 118.0f, 119.0f, + 120.0f, 121.0f, 122.0f, 123.0f, + 124.0f, 125.0f, 126.0f, 127.0f + }; + + set_values(input, values); + // unfused + topology topology_unfused( + input_layout("input", input.get_layout()), + reorder("reorder1", "input", format::b_fs_yx_fsv4, data_types::f32), + permute("permute", "reorder1", { 0, 3, 1, 2}), + reorder("reorder2", "permute", format::bfyx, data_types::f32), + permute("out", "reorder2", { 0, 2, 3, 1})); + + cldnn::build_options options_unfused; + options_unfused.set_option(cldnn::build_option::optimize_data(false)); + options_unfused.set_option(cldnn::build_option::allow_static_input_reorder(true)); + + network unfused(engine, topology_unfused, options_unfused); + unfused.set_input_data("input", input); + + // fused network + topology topology_fused( + input_layout("input", input.get_layout()), + reorder("reorder1", "input", format::b_fs_yx_fsv4, data_types::f32), + permute("permute", "reorder1", { 0, 3, 1, 2}), + reorder("reorder2", "permute", format::bfyx, data_types::f32), // to be fused to previous permute + permute("out", "reorder2", { 0, 2, 3, 1})); // return to original value + + cldnn::build_options options_fused; + options_fused.set_option(cldnn::build_option::optimize_data(true)); + network fused(engine, topology_fused, options_fused); + fused.set_input_data("input", input); + + auto outputs_fused = fused.execute(); + auto outputs_unfused = unfused.execute(); + auto output_fused = outputs_fused.begin()->second.get_memory(); + auto output_fused_ptr = output_fused.pointer(); + auto output_unfused = outputs_unfused.begin()->second.get_memory(); + auto output_unfused_ptr = output_unfused.pointer(); + EXPECT_EQ(output_fused.get_layout().format, cldnn::format::bfyx); + EXPECT_EQ(output_unfused.get_layout().format, cldnn::format::bfyx); + EXPECT_EQ(fused.get_executed_primitives().size(), 4); + EXPECT_EQ(unfused.get_executed_primitives().size(), 5); + + for (size_t i = 0; i < values.size(); i++) + { + EXPECT_FLOAT_EQ(output_unfused_ptr[i], output_fused_ptr[i]); + EXPECT_FLOAT_EQ(output_unfused_ptr[i], values[i]); + } +} + TEST(fc_permute_crop_gpu, basic_permute_yxfb) { const auto& engine = get_test_engine(); @@ -836,3 +916,938 @@ TEST(permute_gpu_f32, basic_bfzyx_permute_0_2_3_4_1) } } + +/** + * Test cases for permute_tile_8x8_4x4 kernel + * + * This TCs are enabled only when batch axis move to the last. + * i.e permute order is 0,3,1,2 or 0,4,1,2,3 or 0,5,1,2,3,4 + */ +TEST(permute_gpu_f32_tile_8x8_4x4, normal_bfyx_0_3_1_2) { + // Input : bfyx:2x8x2x8 + // Permute order : { 0,3,1,2 } + + constexpr size_t array_size = 256; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfyx,{ 2, 8, 8, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 3, 1, 2 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 16.f, 32.f, 48.f, 64.f, 80.f, 96.f, 112.f, 1.f, 17.f, 33.f, 49.f, 65.f, 81.f, 97.f, 113.f, + 2.f, 18.f, 34.f, 50.f, 66.f, 82.f, 98.f, 114.f, 3.f, 19.f, 35.f, 51.f, 67.f, 83.f, 99.f, 115.f, + 4.f, 20.f, 36.f, 52.f, 68.f, 84.f, 100.f, 116.f, 5.f, 21.f, 37.f, 53.f, 69.f, 85.f, 101.f, 117.f, + 6.f, 22.f, 38.f, 54.f, 70.f, 86.f, 102.f, 118.f, 7.f, 23.f, 39.f, 55.f, 71.f, 87.f, 103.f, 119.f, + 8.f, 24.f, 40.f, 56.f, 72.f, 88.f, 104.f, 120.f, 9.f, 25.f, 41.f, 57.f, 73.f, 89.f, 105.f, 121.f, + 10.f, 26.f, 42.f, 58.f, 74.f, 90.f, 106.f, 122.f, 11.f, 27.f, 43.f, 59.f, 75.f, 91.f, 107.f, 123.f, + 12.f, 28.f, 44.f, 60.f, 76.f, 92.f, 108.f, 124.f, 13.f, 29.f, 45.f, 61.f, 77.f, 93.f, 109.f, 125.f, + 14.f, 30.f, 46.f, 62.f, 78.f, 94.f, 110.f, 126.f, 15.f, 31.f, 47.f, 63.f, 79.f, 95.f, 111.f, 127.f, + 128.f, 144.f, 160.f, 176.f, 192.f, 208.f, 224.f, 240.f, 129.f, 145.f, 161.f, 177.f, 193.f, 209.f, 225.f, 241.f, + 130.f, 146.f, 162.f, 178.f, 194.f, 210.f, 226.f, 242.f, 131.f, 147.f, 163.f, 179.f, 195.f, 211.f, 227.f, 243.f, + 132.f, 148.f, 164.f, 180.f, 196.f, 212.f, 228.f, 244.f, 133.f, 149.f, 165.f, 181.f, 197.f, 213.f, 229.f, 245.f, + 134.f, 150.f, 166.f, 182.f, 198.f, 214.f, 230.f, 246.f, 135.f, 151.f, 167.f, 183.f, 199.f, 215.f, 231.f, 247.f, + 136.f, 152.f, 168.f, 184.f, 200.f, 216.f, 232.f, 248.f, 137.f, 153.f, 169.f, 185.f, 201.f, 217.f, 233.f, 249.f, + 138.f, 154.f, 170.f, 186.f, 202.f, 218.f, 234.f, 250.f, 139.f, 155.f, 171.f, 187.f, 203.f, 219.f, 235.f, 251.f, + 140.f, 156.f, 172.f, 188.f, 204.f, 220.f, 236.f, 252.f, 141.f, 157.f, 173.f, 189.f, 205.f, 221.f, 237.f, 253.f, + 142.f, 158.f, 174.f, 190.f, 206.f, 222.f, 238.f, 254.f, 143.f, 159.f, 175.f, 191.f, 207.f, 223.f, 239.f, 255.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, f_remainder_bfyx_0_3_1_2) { + // Input : bfyx:2x5x2x8 + // Permute order : { 0,3,1,2 } + + constexpr size_t array_size = 160; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfyx,{ 2, 5, 8, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 3, 1, 2 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 16.f, 32.f, 48.f, 64.f, 1.f, 17.f, 33.f, 49.f, 65.f, 2.f, 18.f, 34.f, 50.f, 66.f, 3.f, + 19.f, 35.f, 51.f, 67.f, 4.f, 20.f, 36.f, 52.f, 68.f, 5.f, 21.f, 37.f, 53.f, 69.f, 6.f, 22.f, + 38.f, 54.f, 70.f, 7.f, 23.f, 39.f, 55.f, 71.f, 8.f, 24.f, 40.f, 56.f, 72.f, 9.f, 25.f, 41.f, + 57.f, 73.f, 10.f, 26.f, 42.f, 58.f, 74.f, 11.f, 27.f, 43.f, 59.f, 75.f, 12.f, 28.f, 44.f, 60.f, + 76.f, 13.f, 29.f, 45.f, 61.f, 77.f, 14.f, 30.f, 46.f, 62.f, 78.f, 15.f, 31.f, 47.f, 63.f, 79.f, + 80.f, 96.f, 112.f, 128.f, 144.f, 81.f, 97.f, 113.f, 129.f, 145.f, 82.f, 98.f, 114.f, 130.f, 146.f, 83.f, + 99.f, 115.f, 131.f, 147.f, 84.f, 100.f, 116.f, 132.f, 148.f, 85.f, 101.f, 117.f, 133.f, 149.f, 86.f, 102.f, + 118.f, 134.f, 150.f, 87.f, 103.f, 119.f, 135.f, 151.f, 88.f, 104.f, 120.f, 136.f, 152.f, 89.f, 105.f, 121.f, + 137.f, 153.f, 90.f, 106.f, 122.f, 138.f, 154.f, 91.f, 107.f, 123.f, 139.f, 155.f, 92.f, 108.f, 124.f, 140.f, + 156.f, 93.f, 109.f, 125.f, 141.f, 157.f, 94.f, 110.f, 126.f, 142.f, 158.f, 95.f, 111.f, 127.f, 143.f, 159.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, x_remainder_bfyx_0_3_1_2) { + // Input : bfyx:2x8x2x5 + // Permute order : { 0,3,1,2 } + + constexpr size_t array_size = 160; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfyx,{ 2, 8, 5, 2 } }); + + set_values(input, { + 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f, 15.f, + 16.f, 17.f, 18.f, 19.f, 20.f, 21.f, 22.f, 23.f, 24.f, 25.f, 26.f, 27.f, 28.f, 29.f, 30.f, 31.f, + 32.f, 33.f, 34.f, 35.f, 36.f, 37.f, 38.f, 39.f, 40.f, 41.f, 42.f, 43.f, 44.f, 45.f, 46.f, 47.f, + 48.f, 49.f, 50.f, 51.f, 52.f, 53.f, 54.f, 55.f, 56.f, 57.f, 58.f, 59.f, 60.f, 61.f, 62.f, 63.f, + 64.f, 65.f, 66.f, 67.f, 68.f, 69.f, 70.f, 71.f, 72.f, 73.f, 74.f, 75.f, 76.f, 77.f, 78.f, 79.f, + 80.f, 81.f, 82.f, 83.f, 84.f, 85.f, 86.f, 87.f, 88.f, 89.f, 90.f, 91.f, 92.f, 93.f, 94.f, 95.f, + 96.f, 97.f, 98.f, 99.f, 100.f, 101.f, 102.f, 103.f, 104.f, 105.f, 106.f, 107.f, 108.f, 109.f, 110.f, 111.f, + 112.f, 113.f, 114.f, 115.f, 116.f, 117.f, 118.f, 119.f, 120.f, 121.f, 122.f, 123.f, 124.f, 125.f, 126.f, 127.f, + 128.f, 129.f, 130.f, 131.f, 132.f, 133.f, 134.f, 135.f, 136.f, 137.f, 138.f, 139.f, 140.f, 141.f, 142.f, 143.f, + 144.f, 145.f, 146.f, 147.f, 148.f, 149.f, 150.f, 151.f, 152.f, 153.f, 154.f, 155.f, 156.f, 157.f, 158.f, 159.f + }); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 3, 1, 2 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 10.f, 20.f, 30.f, 40.f, 50.f, 60.f, 70.f, 1.f, 11.f, 21.f, 31.f, 41.f, 51.f, 61.f, 71.f, + 2.f, 12.f, 22.f, 32.f, 42.f, 52.f, 62.f, 72.f, 3.f, 13.f, 23.f, 33.f, 43.f, 53.f, 63.f, 73.f, + 4.f, 14.f, 24.f, 34.f, 44.f, 54.f, 64.f, 74.f, 5.f, 15.f, 25.f, 35.f, 45.f, 55.f, 65.f, 75.f, + 6.f, 16.f, 26.f, 36.f, 46.f, 56.f, 66.f, 76.f, 7.f, 17.f, 27.f, 37.f, 47.f, 57.f, 67.f, 77.f, + 8.f, 18.f, 28.f, 38.f, 48.f, 58.f, 68.f, 78.f, 9.f, 19.f, 29.f, 39.f, 49.f, 59.f, 69.f, 79.f, + 80.f, 90.f, 100.f, 110.f, 120.f, 130.f, 140.f, 150.f, 81.f, 91.f, 101.f, 111.f, 121.f, 131.f, 141.f, 151.f, + 82.f, 92.f, 102.f, 112.f, 122.f, 132.f, 142.f, 152.f, 83.f, 93.f, 103.f, 113.f, 123.f, 133.f, 143.f, 153.f, + 84.f, 94.f, 104.f, 114.f, 124.f, 134.f, 144.f, 154.f, 85.f, 95.f, 105.f, 115.f, 125.f, 135.f, 145.f, 155.f, + 86.f, 96.f, 106.f, 116.f, 126.f, 136.f, 146.f, 156.f, 87.f, 97.f, 107.f, 117.f, 127.f, 137.f, 147.f, 157.f, + 88.f, 98.f, 108.f, 118.f, 128.f, 138.f, 148.f, 158.f, 89.f, 99.f, 109.f, 119.f, 129.f, 139.f, 149.f, 159.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, xf_remainder_bfyx_0_3_1_2) { + // Input : bfyx:2x5x2x5 + // Permute order : { 0,3,1,2 } + + constexpr size_t array_size = 100; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfyx,{ 2, 5, 5, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 3, 1, 2 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 10.f, 20.f, 30.f, 40.f, 1.f, 11.f, 21.f, 31.f, 41.f, + 2.f, 12.f, 22.f, 32.f, 42.f, 3.f, 13.f, 23.f, 33.f, 43.f, + 4.f, 14.f, 24.f, 34.f, 44.f, 5.f, 15.f, 25.f, 35.f, 45.f, + 6.f, 16.f, 26.f, 36.f, 46.f, 7.f, 17.f, 27.f, 37.f, 47.f, + 8.f, 18.f, 28.f, 38.f, 48.f, 9.f, 19.f, 29.f, 39.f, 49.f, + 50.f, 60.f, 70.f, 80.f, 90.f, 51.f, 61.f, 71.f, 81.f, 91.f, + 52.f, 62.f, 72.f, 82.f, 92.f, 53.f, 63.f, 73.f, 83.f, 93.f, + 54.f, 64.f, 74.f, 84.f, 94.f, 55.f, 65.f, 75.f, 85.f, 95.f, + 56.f, 66.f, 76.f, 86.f, 96.f, 57.f, 67.f, 77.f, 87.f, 97.f, + 58.f, 68.f, 78.f, 88.f, 98.f, 59.f, 69.f, 79.f, 89.f, 99.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, normal_bfzyx_0_4_1_2_3) { + // Input : bfzyx:2x8x2x2x8 + // Permute order : { 0,4,1,2,3 } + + constexpr size_t array_size = 512; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfzyx,{ 2, 8, 8, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 4, 1, 2, 3 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 32.f, 64.f, 96.f, 128.f, 160.f, 192.f, 224.f, 1.f, 33.f, 65.f, 97.f, 129.f, 161.f, 193.f, 225.f, 2.f, 34.f, 66.f, 98.f, 130.f, 162.f, 194.f, 226.f, + 3.f, 35.f, 67.f, 99.f, 131.f, 163.f, 195.f, 227.f, 4.f, 36.f, 68.f, 100.f, 132.f, 164.f, 196.f, 228.f, 5.f, 37.f, 69.f, 101.f, 133.f, 165.f, 197.f, 229.f, + 6.f, 38.f, 70.f, 102.f, 134.f, 166.f, 198.f, 230.f, 7.f, 39.f, 71.f, 103.f, 135.f, 167.f, 199.f, 231.f, 8.f, 40.f, 72.f, 104.f, 136.f, 168.f, 200.f, 232.f, + 9.f, 41.f, 73.f, 105.f, 137.f, 169.f, 201.f, 233.f, 10.f, 42.f, 74.f, 106.f, 138.f, 170.f, 202.f, 234.f, 11.f, 43.f, 75.f, 107.f, 139.f, 171.f, 203.f, 235.f, + 12.f, 44.f, 76.f, 108.f, 140.f, 172.f, 204.f, 236.f, 13.f, 45.f, 77.f, 109.f, 141.f, 173.f, 205.f, 237.f, 14.f, 46.f, 78.f, 110.f, 142.f, 174.f, 206.f, 238.f, + 15.f, 47.f, 79.f, 111.f, 143.f, 175.f, 207.f, 239.f, 16.f, 48.f, 80.f, 112.f, 144.f, 176.f, 208.f, 240.f, 17.f, 49.f, 81.f, 113.f, 145.f, 177.f, 209.f, 241.f, + 18.f, 50.f, 82.f, 114.f, 146.f, 178.f, 210.f, 242.f, 19.f, 51.f, 83.f, 115.f, 147.f, 179.f, 211.f, 243.f, 20.f, 52.f, 84.f, 116.f, 148.f, 180.f, 212.f, 244.f, + 21.f, 53.f, 85.f, 117.f, 149.f, 181.f, 213.f, 245.f, 22.f, 54.f, 86.f, 118.f, 150.f, 182.f, 214.f, 246.f, 23.f, 55.f, 87.f, 119.f, 151.f, 183.f, 215.f, 247.f, + 24.f, 56.f, 88.f, 120.f, 152.f, 184.f, 216.f, 248.f, 25.f, 57.f, 89.f, 121.f, 153.f, 185.f, 217.f, 249.f, 26.f, 58.f, 90.f, 122.f, 154.f, 186.f, 218.f, 250.f, + 27.f, 59.f, 91.f, 123.f, 155.f, 187.f, 219.f, 251.f, 28.f, 60.f, 92.f, 124.f, 156.f, 188.f, 220.f, 252.f, 29.f, 61.f, 93.f, 125.f, 157.f, 189.f, 221.f, 253.f, + 30.f, 62.f, 94.f, 126.f, 158.f, 190.f, 222.f, 254.f, 31.f, 63.f, 95.f, 127.f, 159.f, 191.f, 223.f, 255.f, 256.f, 288.f, 320.f, 352.f, 384.f, 416.f, 448.f, 480.f, + 257.f, 289.f, 321.f, 353.f, 385.f, 417.f, 449.f, 481.f, 258.f, 290.f, 322.f, 354.f, 386.f, 418.f, 450.f, 482.f, 259.f, 291.f, 323.f, 355.f, 387.f, 419.f, 451.f, 483.f, + 260.f, 292.f, 324.f, 356.f, 388.f, 420.f, 452.f, 484.f, 261.f, 293.f, 325.f, 357.f, 389.f, 421.f, 453.f, 485.f, 262.f, 294.f, 326.f, 358.f, 390.f, 422.f, 454.f, 486.f, + 263.f, 295.f, 327.f, 359.f, 391.f, 423.f, 455.f, 487.f, 264.f, 296.f, 328.f, 360.f, 392.f, 424.f, 456.f, 488.f, 265.f, 297.f, 329.f, 361.f, 393.f, 425.f, 457.f, 489.f, + 266.f, 298.f, 330.f, 362.f, 394.f, 426.f, 458.f, 490.f, 267.f, 299.f, 331.f, 363.f, 395.f, 427.f, 459.f, 491.f, 268.f, 300.f, 332.f, 364.f, 396.f, 428.f, 460.f, 492.f, + 269.f, 301.f, 333.f, 365.f, 397.f, 429.f, 461.f, 493.f, 270.f, 302.f, 334.f, 366.f, 398.f, 430.f, 462.f, 494.f, 271.f, 303.f, 335.f, 367.f, 399.f, 431.f, 463.f, 495.f, + 272.f, 304.f, 336.f, 368.f, 400.f, 432.f, 464.f, 496.f, 273.f, 305.f, 337.f, 369.f, 401.f, 433.f, 465.f, 497.f, 274.f, 306.f, 338.f, 370.f, 402.f, 434.f, 466.f, 498.f, + 275.f, 307.f, 339.f, 371.f, 403.f, 435.f, 467.f, 499.f, 276.f, 308.f, 340.f, 372.f, 404.f, 436.f, 468.f, 500.f, 277.f, 309.f, 341.f, 373.f, 405.f, 437.f, 469.f, 501.f, + 278.f, 310.f, 342.f, 374.f, 406.f, 438.f, 470.f, 502.f, 279.f, 311.f, 343.f, 375.f, 407.f, 439.f, 471.f, 503.f, 280.f, 312.f, 344.f, 376.f, 408.f, 440.f, 472.f, 504.f, + 281.f, 313.f, 345.f, 377.f, 409.f, 441.f, 473.f, 505.f, 282.f, 314.f, 346.f, 378.f, 410.f, 442.f, 474.f, 506.f, 283.f, 315.f, 347.f, 379.f, 411.f, 443.f, 475.f, 507.f, + 284.f, 316.f, 348.f, 380.f, 412.f, 444.f, 476.f, 508.f, 285.f, 317.f, 349.f, 381.f, 413.f, 445.f, 477.f, 509.f, 286.f, 318.f, 350.f, 382.f, 414.f, 446.f, 478.f, 510.f, + 287.f, 319.f, 351.f, 383.f, 415.f, 447.f, 479.f, 511.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, f_remainder_bfzyx_0_4_1_2_3) { + // Input : bfzyx:2x5x2x2x8 + // Permute order : { 0,4,1,2,3 } + + constexpr size_t array_size = 320; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfzyx,{ 2, 5, 8, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 4, 1, 2, 3 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 32.f, 64.f, 96.f, 128.f, 1.f, 33.f, 65.f, 97.f, 129.f, 2.f, 34.f, 66.f, 98.f, 130.f, 3.f, 35.f, 67.f, 99.f, 131.f, 4.f, 36.f, 68.f, 100.f, + 132.f, 5.f, 37.f, 69.f, 101.f, 133.f, 6.f, 38.f, 70.f, 102.f, 134.f, 7.f, 39.f, 71.f, 103.f, 135.f, 8.f, 40.f, 72.f, 104.f, 136.f, 9.f, 41.f, 73.f, + 105.f, 137.f, 10.f, 42.f, 74.f, 106.f, 138.f, 11.f, 43.f, 75.f, 107.f, 139.f, 12.f, 44.f, 76.f, 108.f, 140.f, 13.f, 45.f, 77.f, 109.f, 141.f, 14.f, 46.f, + 78.f, 110.f, 142.f, 15.f, 47.f, 79.f, 111.f, 143.f, 16.f, 48.f, 80.f, 112.f, 144.f, 17.f, 49.f, 81.f, 113.f, 145.f, 18.f, 50.f, 82.f, 114.f, 146.f, 19.f, + 51.f, 83.f, 115.f, 147.f, 20.f, 52.f, 84.f, 116.f, 148.f, 21.f, 53.f, 85.f, 117.f, 149.f, 22.f, 54.f, 86.f, 118.f, 150.f, 23.f, 55.f, 87.f, 119.f, 151.f, + 24.f, 56.f, 88.f, 120.f, 152.f, 25.f, 57.f, 89.f, 121.f, 153.f, 26.f, 58.f, 90.f, 122.f, 154.f, 27.f, 59.f, 91.f, 123.f, 155.f, 28.f, 60.f, 92.f, 124.f, + 156.f, 29.f, 61.f, 93.f, 125.f, 157.f, 30.f, 62.f, 94.f, 126.f, 158.f, 31.f, 63.f, 95.f, 127.f, 159.f, 160.f, 192.f, 224.f, 256.f, 288.f, 161.f, 193.f, 225.f, + 257.f, 289.f, 162.f, 194.f, 226.f, 258.f, 290.f, 163.f, 195.f, 227.f, 259.f, 291.f, 164.f, 196.f, 228.f, 260.f, 292.f, 165.f, 197.f, 229.f, 261.f, 293.f, 166.f, 198.f, + 230.f, 262.f, 294.f, 167.f, 199.f, 231.f, 263.f, 295.f, 168.f, 200.f, 232.f, 264.f, 296.f, 169.f, 201.f, 233.f, 265.f, 297.f, 170.f, 202.f, 234.f, 266.f, 298.f, 171.f, + 203.f, 235.f, 267.f, 299.f, 172.f, 204.f, 236.f, 268.f, 300.f, 173.f, 205.f, 237.f, 269.f, 301.f, 174.f, 206.f, 238.f, 270.f, 302.f, 175.f, 207.f, 239.f, 271.f, 303.f, + 176.f, 208.f, 240.f, 272.f, 304.f, 177.f, 209.f, 241.f, 273.f, 305.f, 178.f, 210.f, 242.f, 274.f, 306.f, 179.f, 211.f, 243.f, 275.f, 307.f, 180.f, 212.f, 244.f, 276.f, + 308.f, 181.f, 213.f, 245.f, 277.f, 309.f, 182.f, 214.f, 246.f, 278.f, 310.f, 183.f, 215.f, 247.f, 279.f, 311.f, 184.f, 216.f, 248.f, 280.f, 312.f, 185.f, 217.f, 249.f, + 281.f, 313.f, 186.f, 218.f, 250.f, 282.f, 314.f, 187.f, 219.f, 251.f, 283.f, 315.f, 188.f, 220.f, 252.f, 284.f, 316.f, 189.f, 221.f, 253.f, 285.f, 317.f, 190.f, 222.f, + 254.f, 286.f, 318.f, 191.f, 223.f, 255.f, 287.f, 319.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, x_remainder_bfzyx_0_4_1_2_3) { + // Input : bfzyx:2x8x2x2x5 + // Permute order : { 0,4,1,2,3 } + + constexpr size_t array_size = 320; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfzyx,{ 2, 8, 5, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 4, 1, 2, 3 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 20.f, 40.f, 60.f, 80.f, 100.f, 120.f, 140.f, 1.f, 21.f, 41.f, 61.f, 81.f, 101.f, 121.f, 141.f, 2.f, 22.f, 42.f, 62.f, 82.f, 102.f, 122.f, 142.f, + 3.f, 23.f, 43.f, 63.f, 83.f, 103.f, 123.f, 143.f, 4.f, 24.f, 44.f, 64.f, 84.f, 104.f, 124.f, 144.f, 5.f, 25.f, 45.f, 65.f, 85.f, 105.f, 125.f, 145.f, + 6.f, 26.f, 46.f, 66.f, 86.f, 106.f, 126.f, 146.f, 7.f, 27.f, 47.f, 67.f, 87.f, 107.f, 127.f, 147.f, 8.f, 28.f, 48.f, 68.f, 88.f, 108.f, 128.f, 148.f, + 9.f, 29.f, 49.f, 69.f, 89.f, 109.f, 129.f, 149.f, 10.f, 30.f, 50.f, 70.f, 90.f, 110.f, 130.f, 150.f, 11.f, 31.f, 51.f, 71.f, 91.f, 111.f, 131.f, 151.f, + 12.f, 32.f, 52.f, 72.f, 92.f, 112.f, 132.f, 152.f, 13.f, 33.f, 53.f, 73.f, 93.f, 113.f, 133.f, 153.f, 14.f, 34.f, 54.f, 74.f, 94.f, 114.f, 134.f, 154.f, + 15.f, 35.f, 55.f, 75.f, 95.f, 115.f, 135.f, 155.f, 16.f, 36.f, 56.f, 76.f, 96.f, 116.f, 136.f, 156.f, 17.f, 37.f, 57.f, 77.f, 97.f, 117.f, 137.f, 157.f, + 18.f, 38.f, 58.f, 78.f, 98.f, 118.f, 138.f, 158.f, 19.f, 39.f, 59.f, 79.f, 99.f, 119.f, 139.f, 159.f, 160.f, 180.f, 200.f, 220.f, 240.f, 260.f, 280.f, 300.f, + 161.f, 181.f, 201.f, 221.f, 241.f, 261.f, 281.f, 301.f, 162.f, 182.f, 202.f, 222.f, 242.f, 262.f, 282.f, 302.f, 163.f, 183.f, 203.f, 223.f, 243.f, 263.f, 283.f, 303.f, + 164.f, 184.f, 204.f, 224.f, 244.f, 264.f, 284.f, 304.f, 165.f, 185.f, 205.f, 225.f, 245.f, 265.f, 285.f, 305.f, 166.f, 186.f, 206.f, 226.f, 246.f, 266.f, 286.f, 306.f, + 167.f, 187.f, 207.f, 227.f, 247.f, 267.f, 287.f, 307.f, 168.f, 188.f, 208.f, 228.f, 248.f, 268.f, 288.f, 308.f, 169.f, 189.f, 209.f, 229.f, 249.f, 269.f, 289.f, 309.f, + 170.f, 190.f, 210.f, 230.f, 250.f, 270.f, 290.f, 310.f, 171.f, 191.f, 211.f, 231.f, 251.f, 271.f, 291.f, 311.f, 172.f, 192.f, 212.f, 232.f, 252.f, 272.f, 292.f, 312.f, + 173.f, 193.f, 213.f, 233.f, 253.f, 273.f, 293.f, 313.f, 174.f, 194.f, 214.f, 234.f, 254.f, 274.f, 294.f, 314.f, 175.f, 195.f, 215.f, 235.f, 255.f, 275.f, 295.f, 315.f, + 176.f, 196.f, 216.f, 236.f, 256.f, 276.f, 296.f, 316.f, 177.f, 197.f, 217.f, 237.f, 257.f, 277.f, 297.f, 317.f, 178.f, 198.f, 218.f, 238.f, 258.f, 278.f, 298.f, 318.f, + 179.f, 199.f, 219.f, 239.f, 259.f, 279.f, 299.f, 319.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, xf_remainder_bfzyx_0_4_1_2_3) { + // Input : bfzyx:2x5x2x2x5 + // Permute order : { 0,4,1,2,3 } + + constexpr size_t array_size = 200; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfzyx,{ 2, 5, 5, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 4, 1, 2, 3 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 20.f, 40.f, 60.f, 80.f, 1.f, 21.f, 41.f, 61.f, 81.f, 2.f, 22.f, 42.f, 62.f, 82.f, + 3.f, 23.f, 43.f, 63.f, 83.f, 4.f, 24.f, 44.f, 64.f, 84.f, 5.f, 25.f, 45.f, 65.f, 85.f, + 6.f, 26.f, 46.f, 66.f, 86.f, 7.f, 27.f, 47.f, 67.f, 87.f, 8.f, 28.f, 48.f, 68.f, 88.f, + 9.f, 29.f, 49.f, 69.f, 89.f, 10.f, 30.f, 50.f, 70.f, 90.f, 11.f, 31.f, 51.f, 71.f, 91.f, + 12.f, 32.f, 52.f, 72.f, 92.f, 13.f, 33.f, 53.f, 73.f, 93.f, 14.f, 34.f, 54.f, 74.f, 94.f, + 15.f, 35.f, 55.f, 75.f, 95.f, 16.f, 36.f, 56.f, 76.f, 96.f, 17.f, 37.f, 57.f, 77.f, 97.f, + 18.f, 38.f, 58.f, 78.f, 98.f, 19.f, 39.f, 59.f, 79.f, 99.f, 100.f, 120.f, 140.f, 160.f, 180.f, + 101.f, 121.f, 141.f, 161.f, 181.f, 102.f, 122.f, 142.f, 162.f, 182.f, 103.f, 123.f, 143.f, 163.f, 183.f, + 104.f, 124.f, 144.f, 164.f, 184.f, 105.f, 125.f, 145.f, 165.f, 185.f, 106.f, 126.f, 146.f, 166.f, 186.f, + 107.f, 127.f, 147.f, 167.f, 187.f, 108.f, 128.f, 148.f, 168.f, 188.f, 109.f, 129.f, 149.f, 169.f, 189.f, + 110.f, 130.f, 150.f, 170.f, 190.f, 111.f, 131.f, 151.f, 171.f, 191.f, 112.f, 132.f, 152.f, 172.f, 192.f, + 113.f, 133.f, 153.f, 173.f, 193.f, 114.f, 134.f, 154.f, 174.f, 194.f, 115.f, 135.f, 155.f, 175.f, 195.f, + 116.f, 136.f, 156.f, 176.f, 196.f, 117.f, 137.f, 157.f, 177.f, 197.f, 118.f, 138.f, 158.f, 178.f, 198.f, + 119.f, 139.f, 159.f, 179.f, 199.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, normal_bfwzyx_0_5_4_1_2_3) { + // Input : bfwzyx:2x8x2x2x2x8 + // Permute order : { 0,5,1,2,3,4 } + + constexpr size_t array_size = 1024; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfwzyx,{ 2, 8, 8, 2, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 5, 1, 2, 3, 4 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 64.f, 128.f, 192.f, 256.f, 320.f, 384.f, 448.f, 1.f, 65.f, 129.f, 193.f, 257.f, 321.f, 385.f, 449.f, 2.f, 66.f, 130.f, 194.f, 258.f, 322.f, 386.f, 450.f, 3.f, 67.f, 131.f, 195.f, 259.f, 323.f, 387.f, 451.f, + 4.f, 68.f, 132.f, 196.f, 260.f, 324.f, 388.f, 452.f, 5.f, 69.f, 133.f, 197.f, 261.f, 325.f, 389.f, 453.f, 6.f, 70.f, 134.f, 198.f, 262.f, 326.f, 390.f, 454.f, 7.f, 71.f, 135.f, 199.f, 263.f, 327.f, 391.f, 455.f, + 8.f, 72.f, 136.f, 200.f, 264.f, 328.f, 392.f, 456.f, 9.f, 73.f, 137.f, 201.f, 265.f, 329.f, 393.f, 457.f, 10.f, 74.f, 138.f, 202.f, 266.f, 330.f, 394.f, 458.f, 11.f, 75.f, 139.f, 203.f, 267.f, 331.f, 395.f, 459.f, + 12.f, 76.f, 140.f, 204.f, 268.f, 332.f, 396.f, 460.f, 13.f, 77.f, 141.f, 205.f, 269.f, 333.f, 397.f, 461.f, 14.f, 78.f, 142.f, 206.f, 270.f, 334.f, 398.f, 462.f, 15.f, 79.f, 143.f, 207.f, 271.f, 335.f, 399.f, 463.f, + 16.f, 80.f, 144.f, 208.f, 272.f, 336.f, 400.f, 464.f, 17.f, 81.f, 145.f, 209.f, 273.f, 337.f, 401.f, 465.f, 18.f, 82.f, 146.f, 210.f, 274.f, 338.f, 402.f, 466.f, 19.f, 83.f, 147.f, 211.f, 275.f, 339.f, 403.f, 467.f, + 20.f, 84.f, 148.f, 212.f, 276.f, 340.f, 404.f, 468.f, 21.f, 85.f, 149.f, 213.f, 277.f, 341.f, 405.f, 469.f, 22.f, 86.f, 150.f, 214.f, 278.f, 342.f, 406.f, 470.f, 23.f, 87.f, 151.f, 215.f, 279.f, 343.f, 407.f, 471.f, + 24.f, 88.f, 152.f, 216.f, 280.f, 344.f, 408.f, 472.f, 25.f, 89.f, 153.f, 217.f, 281.f, 345.f, 409.f, 473.f, 26.f, 90.f, 154.f, 218.f, 282.f, 346.f, 410.f, 474.f, 27.f, 91.f, 155.f, 219.f, 283.f, 347.f, 411.f, 475.f, + 28.f, 92.f, 156.f, 220.f, 284.f, 348.f, 412.f, 476.f, 29.f, 93.f, 157.f, 221.f, 285.f, 349.f, 413.f, 477.f, 30.f, 94.f, 158.f, 222.f, 286.f, 350.f, 414.f, 478.f, 31.f, 95.f, 159.f, 223.f, 287.f, 351.f, 415.f, 479.f, + 32.f, 96.f, 160.f, 224.f, 288.f, 352.f, 416.f, 480.f, 33.f, 97.f, 161.f, 225.f, 289.f, 353.f, 417.f, 481.f, 34.f, 98.f, 162.f, 226.f, 290.f, 354.f, 418.f, 482.f, 35.f, 99.f, 163.f, 227.f, 291.f, 355.f, 419.f, 483.f, + 36.f, 100.f, 164.f, 228.f, 292.f, 356.f, 420.f, 484.f, 37.f, 101.f, 165.f, 229.f, 293.f, 357.f, 421.f, 485.f, 38.f, 102.f, 166.f, 230.f, 294.f, 358.f, 422.f, 486.f, 39.f, 103.f, 167.f, 231.f, 295.f, 359.f, 423.f, 487.f, + 40.f, 104.f, 168.f, 232.f, 296.f, 360.f, 424.f, 488.f, 41.f, 105.f, 169.f, 233.f, 297.f, 361.f, 425.f, 489.f, 42.f, 106.f, 170.f, 234.f, 298.f, 362.f, 426.f, 490.f, 43.f, 107.f, 171.f, 235.f, 299.f, 363.f, 427.f, 491.f, + 44.f, 108.f, 172.f, 236.f, 300.f, 364.f, 428.f, 492.f, 45.f, 109.f, 173.f, 237.f, 301.f, 365.f, 429.f, 493.f, 46.f, 110.f, 174.f, 238.f, 302.f, 366.f, 430.f, 494.f, 47.f, 111.f, 175.f, 239.f, 303.f, 367.f, 431.f, 495.f, + 48.f, 112.f, 176.f, 240.f, 304.f, 368.f, 432.f, 496.f, 49.f, 113.f, 177.f, 241.f, 305.f, 369.f, 433.f, 497.f, 50.f, 114.f, 178.f, 242.f, 306.f, 370.f, 434.f, 498.f, 51.f, 115.f, 179.f, 243.f, 307.f, 371.f, 435.f, 499.f, + 52.f, 116.f, 180.f, 244.f, 308.f, 372.f, 436.f, 500.f, 53.f, 117.f, 181.f, 245.f, 309.f, 373.f, 437.f, 501.f, 54.f, 118.f, 182.f, 246.f, 310.f, 374.f, 438.f, 502.f, 55.f, 119.f, 183.f, 247.f, 311.f, 375.f, 439.f, 503.f, + 56.f, 120.f, 184.f, 248.f, 312.f, 376.f, 440.f, 504.f, 57.f, 121.f, 185.f, 249.f, 313.f, 377.f, 441.f, 505.f, 58.f, 122.f, 186.f, 250.f, 314.f, 378.f, 442.f, 506.f, 59.f, 123.f, 187.f, 251.f, 315.f, 379.f, 443.f, 507.f, + 60.f, 124.f, 188.f, 252.f, 316.f, 380.f, 444.f, 508.f, 61.f, 125.f, 189.f, 253.f, 317.f, 381.f, 445.f, 509.f, 62.f, 126.f, 190.f, 254.f, 318.f, 382.f, 446.f, 510.f, 63.f, 127.f, 191.f, 255.f, 319.f, 383.f, 447.f, 511.f, + 512.f, 576.f, 640.f, 704.f, 768.f, 832.f, 896.f, 960.f, 513.f, 577.f, 641.f, 705.f, 769.f, 833.f, 897.f, 961.f, 514.f, 578.f, 642.f, 706.f, 770.f, 834.f, 898.f, 962.f, 515.f, 579.f, 643.f, 707.f, 771.f, 835.f, 899.f, 963.f, + 516.f, 580.f, 644.f, 708.f, 772.f, 836.f, 900.f, 964.f, 517.f, 581.f, 645.f, 709.f, 773.f, 837.f, 901.f, 965.f, 518.f, 582.f, 646.f, 710.f, 774.f, 838.f, 902.f, 966.f, 519.f, 583.f, 647.f, 711.f, 775.f, 839.f, 903.f, 967.f, + 520.f, 584.f, 648.f, 712.f, 776.f, 840.f, 904.f, 968.f, 521.f, 585.f, 649.f, 713.f, 777.f, 841.f, 905.f, 969.f, 522.f, 586.f, 650.f, 714.f, 778.f, 842.f, 906.f, 970.f, 523.f, 587.f, 651.f, 715.f, 779.f, 843.f, 907.f, 971.f, + 524.f, 588.f, 652.f, 716.f, 780.f, 844.f, 908.f, 972.f, 525.f, 589.f, 653.f, 717.f, 781.f, 845.f, 909.f, 973.f, 526.f, 590.f, 654.f, 718.f, 782.f, 846.f, 910.f, 974.f, 527.f, 591.f, 655.f, 719.f, 783.f, 847.f, 911.f, 975.f, + 528.f, 592.f, 656.f, 720.f, 784.f, 848.f, 912.f, 976.f, 529.f, 593.f, 657.f, 721.f, 785.f, 849.f, 913.f, 977.f, 530.f, 594.f, 658.f, 722.f, 786.f, 850.f, 914.f, 978.f, 531.f, 595.f, 659.f, 723.f, 787.f, 851.f, 915.f, 979.f, + 532.f, 596.f, 660.f, 724.f, 788.f, 852.f, 916.f, 980.f, 533.f, 597.f, 661.f, 725.f, 789.f, 853.f, 917.f, 981.f, 534.f, 598.f, 662.f, 726.f, 790.f, 854.f, 918.f, 982.f, 535.f, 599.f, 663.f, 727.f, 791.f, 855.f, 919.f, 983.f, + 536.f, 600.f, 664.f, 728.f, 792.f, 856.f, 920.f, 984.f, 537.f, 601.f, 665.f, 729.f, 793.f, 857.f, 921.f, 985.f, 538.f, 602.f, 666.f, 730.f, 794.f, 858.f, 922.f, 986.f, 539.f, 603.f, 667.f, 731.f, 795.f, 859.f, 923.f, 987.f, + 540.f, 604.f, 668.f, 732.f, 796.f, 860.f, 924.f, 988.f, 541.f, 605.f, 669.f, 733.f, 797.f, 861.f, 925.f, 989.f, 542.f, 606.f, 670.f, 734.f, 798.f, 862.f, 926.f, 990.f, 543.f, 607.f, 671.f, 735.f, 799.f, 863.f, 927.f, 991.f, + 544.f, 608.f, 672.f, 736.f, 800.f, 864.f, 928.f, 992.f, 545.f, 609.f, 673.f, 737.f, 801.f, 865.f, 929.f, 993.f, 546.f, 610.f, 674.f, 738.f, 802.f, 866.f, 930.f, 994.f, 547.f, 611.f, 675.f, 739.f, 803.f, 867.f, 931.f, 995.f, + 548.f, 612.f, 676.f, 740.f, 804.f, 868.f, 932.f, 996.f, 549.f, 613.f, 677.f, 741.f, 805.f, 869.f, 933.f, 997.f, 550.f, 614.f, 678.f, 742.f, 806.f, 870.f, 934.f, 998.f, 551.f, 615.f, 679.f, 743.f, 807.f, 871.f, 935.f, 999.f, + 552.f, 616.f, 680.f, 744.f, 808.f, 872.f, 936.f, 1000.f, 553.f, 617.f, 681.f, 745.f, 809.f, 873.f, 937.f, 1001.f, 554.f, 618.f, 682.f, 746.f, 810.f, 874.f, 938.f, 1002.f, 555.f, 619.f, 683.f, 747.f, 811.f, 875.f, 939.f, 1003.f, + 556.f, 620.f, 684.f, 748.f, 812.f, 876.f, 940.f, 1004.f, 557.f, 621.f, 685.f, 749.f, 813.f, 877.f, 941.f, 1005.f, 558.f, 622.f, 686.f, 750.f, 814.f, 878.f, 942.f, 1006.f, 559.f, 623.f, 687.f, 751.f, 815.f, 879.f, 943.f, 1007.f, + 560.f, 624.f, 688.f, 752.f, 816.f, 880.f, 944.f, 1008.f, 561.f, 625.f, 689.f, 753.f, 817.f, 881.f, 945.f, 1009.f, 562.f, 626.f, 690.f, 754.f, 818.f, 882.f, 946.f, 1010.f, 563.f, 627.f, 691.f, 755.f, 819.f, 883.f, 947.f, 1011.f, + 564.f, 628.f, 692.f, 756.f, 820.f, 884.f, 948.f, 1012.f, 565.f, 629.f, 693.f, 757.f, 821.f, 885.f, 949.f, 1013.f, 566.f, 630.f, 694.f, 758.f, 822.f, 886.f, 950.f, 1014.f, 567.f, 631.f, 695.f, 759.f, 823.f, 887.f, 951.f, 1015.f, + 568.f, 632.f, 696.f, 760.f, 824.f, 888.f, 952.f, 1016.f, 569.f, 633.f, 697.f, 761.f, 825.f, 889.f, 953.f, 1017.f, 570.f, 634.f, 698.f, 762.f, 826.f, 890.f, 954.f, 1018.f, 571.f, 635.f, 699.f, 763.f, 827.f, 891.f, 955.f, 1019.f, + 572.f, 636.f, 700.f, 764.f, 828.f, 892.f, 956.f, 1020.f, 573.f, 637.f, 701.f, 765.f, 829.f, 893.f, 957.f, 1021.f, 574.f, 638.f, 702.f, 766.f, 830.f, 894.f, 958.f, 1022.f, 575.f, 639.f, 703.f, 767.f, 831.f, 895.f, 959.f, 1023.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, f_remainder_bfwzyx_0_5_4_1_2_3) { + // Input : bfwzyx:2x5x2x2x2x8 + // Permute order : { 0,5,1,2,3,4 } + + constexpr size_t array_size = 640; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfwzyx,{ 2, 5, 8, 2, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 5, 1, 2, 3, 4 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 64.f, 128.f, 192.f, 256.f, 1.f, 65.f, 129.f, 193.f, 257.f, 2.f, 66.f, 130.f, 194.f, 258.f, 3.f, 67.f, 131.f, 195.f, 259.f, 4.f, 68.f, 132.f, 196.f, 260.f, 5.f, 69.f, 133.f, 197.f, 261.f, 6.f, 70.f, + 134.f, 198.f, 262.f, 7.f, 71.f, 135.f, 199.f, 263.f, 8.f, 72.f, 136.f, 200.f, 264.f, 9.f, 73.f, 137.f, 201.f, 265.f, 10.f, 74.f, 138.f, 202.f, 266.f, 11.f, 75.f, 139.f, 203.f, 267.f, 12.f, 76.f, 140.f, 204.f, + 268.f, 13.f, 77.f, 141.f, 205.f, 269.f, 14.f, 78.f, 142.f, 206.f, 270.f, 15.f, 79.f, 143.f, 207.f, 271.f, 16.f, 80.f, 144.f, 208.f, 272.f, 17.f, 81.f, 145.f, 209.f, 273.f, 18.f, 82.f, 146.f, 210.f, 274.f, 19.f, + 83.f, 147.f, 211.f, 275.f, 20.f, 84.f, 148.f, 212.f, 276.f, 21.f, 85.f, 149.f, 213.f, 277.f, 22.f, 86.f, 150.f, 214.f, 278.f, 23.f, 87.f, 151.f, 215.f, 279.f, 24.f, 88.f, 152.f, 216.f, 280.f, 25.f, 89.f, 153.f, + 217.f, 281.f, 26.f, 90.f, 154.f, 218.f, 282.f, 27.f, 91.f, 155.f, 219.f, 283.f, 28.f, 92.f, 156.f, 220.f, 284.f, 29.f, 93.f, 157.f, 221.f, 285.f, 30.f, 94.f, 158.f, 222.f, 286.f, 31.f, 95.f, 159.f, 223.f, 287.f, + 32.f, 96.f, 160.f, 224.f, 288.f, 33.f, 97.f, 161.f, 225.f, 289.f, 34.f, 98.f, 162.f, 226.f, 290.f, 35.f, 99.f, 163.f, 227.f, 291.f, 36.f, 100.f, 164.f, 228.f, 292.f, 37.f, 101.f, 165.f, 229.f, 293.f, 38.f, 102.f, + 166.f, 230.f, 294.f, 39.f, 103.f, 167.f, 231.f, 295.f, 40.f, 104.f, 168.f, 232.f, 296.f, 41.f, 105.f, 169.f, 233.f, 297.f, 42.f, 106.f, 170.f, 234.f, 298.f, 43.f, 107.f, 171.f, 235.f, 299.f, 44.f, 108.f, 172.f, 236.f, + 300.f, 45.f, 109.f, 173.f, 237.f, 301.f, 46.f, 110.f, 174.f, 238.f, 302.f, 47.f, 111.f, 175.f, 239.f, 303.f, 48.f, 112.f, 176.f, 240.f, 304.f, 49.f, 113.f, 177.f, 241.f, 305.f, 50.f, 114.f, 178.f, 242.f, 306.f, 51.f, + 115.f, 179.f, 243.f, 307.f, 52.f, 116.f, 180.f, 244.f, 308.f, 53.f, 117.f, 181.f, 245.f, 309.f, 54.f, 118.f, 182.f, 246.f, 310.f, 55.f, 119.f, 183.f, 247.f, 311.f, 56.f, 120.f, 184.f, 248.f, 312.f, 57.f, 121.f, 185.f, + 249.f, 313.f, 58.f, 122.f, 186.f, 250.f, 314.f, 59.f, 123.f, 187.f, 251.f, 315.f, 60.f, 124.f, 188.f, 252.f, 316.f, 61.f, 125.f, 189.f, 253.f, 317.f, 62.f, 126.f, 190.f, 254.f, 318.f, 63.f, 127.f, 191.f, 255.f, 319.f, + 320.f, 384.f, 448.f, 512.f, 576.f, 321.f, 385.f, 449.f, 513.f, 577.f, 322.f, 386.f, 450.f, 514.f, 578.f, 323.f, 387.f, 451.f, 515.f, 579.f, 324.f, 388.f, 452.f, 516.f, 580.f, 325.f, 389.f, 453.f, 517.f, 581.f, 326.f, 390.f, + 454.f, 518.f, 582.f, 327.f, 391.f, 455.f, 519.f, 583.f, 328.f, 392.f, 456.f, 520.f, 584.f, 329.f, 393.f, 457.f, 521.f, 585.f, 330.f, 394.f, 458.f, 522.f, 586.f, 331.f, 395.f, 459.f, 523.f, 587.f, 332.f, 396.f, 460.f, 524.f, + 588.f, 333.f, 397.f, 461.f, 525.f, 589.f, 334.f, 398.f, 462.f, 526.f, 590.f, 335.f, 399.f, 463.f, 527.f, 591.f, 336.f, 400.f, 464.f, 528.f, 592.f, 337.f, 401.f, 465.f, 529.f, 593.f, 338.f, 402.f, 466.f, 530.f, 594.f, 339.f, + 403.f, 467.f, 531.f, 595.f, 340.f, 404.f, 468.f, 532.f, 596.f, 341.f, 405.f, 469.f, 533.f, 597.f, 342.f, 406.f, 470.f, 534.f, 598.f, 343.f, 407.f, 471.f, 535.f, 599.f, 344.f, 408.f, 472.f, 536.f, 600.f, 345.f, 409.f, 473.f, + 537.f, 601.f, 346.f, 410.f, 474.f, 538.f, 602.f, 347.f, 411.f, 475.f, 539.f, 603.f, 348.f, 412.f, 476.f, 540.f, 604.f, 349.f, 413.f, 477.f, 541.f, 605.f, 350.f, 414.f, 478.f, 542.f, 606.f, 351.f, 415.f, 479.f, 543.f, 607.f, + 352.f, 416.f, 480.f, 544.f, 608.f, 353.f, 417.f, 481.f, 545.f, 609.f, 354.f, 418.f, 482.f, 546.f, 610.f, 355.f, 419.f, 483.f, 547.f, 611.f, 356.f, 420.f, 484.f, 548.f, 612.f, 357.f, 421.f, 485.f, 549.f, 613.f, 358.f, 422.f, + 486.f, 550.f, 614.f, 359.f, 423.f, 487.f, 551.f, 615.f, 360.f, 424.f, 488.f, 552.f, 616.f, 361.f, 425.f, 489.f, 553.f, 617.f, 362.f, 426.f, 490.f, 554.f, 618.f, 363.f, 427.f, 491.f, 555.f, 619.f, 364.f, 428.f, 492.f, 556.f, + 620.f, 365.f, 429.f, 493.f, 557.f, 621.f, 366.f, 430.f, 494.f, 558.f, 622.f, 367.f, 431.f, 495.f, 559.f, 623.f, 368.f, 432.f, 496.f, 560.f, 624.f, 369.f, 433.f, 497.f, 561.f, 625.f, 370.f, 434.f, 498.f, 562.f, 626.f, 371.f, + 435.f, 499.f, 563.f, 627.f, 372.f, 436.f, 500.f, 564.f, 628.f, 373.f, 437.f, 501.f, 565.f, 629.f, 374.f, 438.f, 502.f, 566.f, 630.f, 375.f, 439.f, 503.f, 567.f, 631.f, 376.f, 440.f, 504.f, 568.f, 632.f, 377.f, 441.f, 505.f, + 569.f, 633.f, 378.f, 442.f, 506.f, 570.f, 634.f, 379.f, 443.f, 507.f, 571.f, 635.f, 380.f, 444.f, 508.f, 572.f, 636.f, 381.f, 445.f, 509.f, 573.f, 637.f, 382.f, 446.f, 510.f, 574.f, 638.f, 383.f, 447.f, 511.f, 575.f, 639.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, x_remainder_bfwzyx_0_5_4_1_2_3) { + // Input : bfwzyx:2x8x2x2x2x5 + // Permute order : { 0,5,1,2,3,4 } + + constexpr size_t array_size = 640; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfwzyx,{ 2, 8, 5, 2, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 5, 1, 2, 3, 4 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 40.f, 80.f, 120.f, 160.f, 200.f, 240.f, 280.f, 1.f, 41.f, 81.f, 121.f, 161.f, 201.f, 241.f, 281.f, 2.f, 42.f, 82.f, 122.f, 162.f, 202.f, 242.f, 282.f, 3.f, 43.f, 83.f, 123.f, 163.f, 203.f, 243.f, 283.f, + 4.f, 44.f, 84.f, 124.f, 164.f, 204.f, 244.f, 284.f, 5.f, 45.f, 85.f, 125.f, 165.f, 205.f, 245.f, 285.f, 6.f, 46.f, 86.f, 126.f, 166.f, 206.f, 246.f, 286.f, 7.f, 47.f, 87.f, 127.f, 167.f, 207.f, 247.f, 287.f, + 8.f, 48.f, 88.f, 128.f, 168.f, 208.f, 248.f, 288.f, 9.f, 49.f, 89.f, 129.f, 169.f, 209.f, 249.f, 289.f, 10.f, 50.f, 90.f, 130.f, 170.f, 210.f, 250.f, 290.f, 11.f, 51.f, 91.f, 131.f, 171.f, 211.f, 251.f, 291.f, + 12.f, 52.f, 92.f, 132.f, 172.f, 212.f, 252.f, 292.f, 13.f, 53.f, 93.f, 133.f, 173.f, 213.f, 253.f, 293.f, 14.f, 54.f, 94.f, 134.f, 174.f, 214.f, 254.f, 294.f, 15.f, 55.f, 95.f, 135.f, 175.f, 215.f, 255.f, 295.f, + 16.f, 56.f, 96.f, 136.f, 176.f, 216.f, 256.f, 296.f, 17.f, 57.f, 97.f, 137.f, 177.f, 217.f, 257.f, 297.f, 18.f, 58.f, 98.f, 138.f, 178.f, 218.f, 258.f, 298.f, 19.f, 59.f, 99.f, 139.f, 179.f, 219.f, 259.f, 299.f, + 20.f, 60.f, 100.f, 140.f, 180.f, 220.f, 260.f, 300.f, 21.f, 61.f, 101.f, 141.f, 181.f, 221.f, 261.f, 301.f, 22.f, 62.f, 102.f, 142.f, 182.f, 222.f, 262.f, 302.f, 23.f, 63.f, 103.f, 143.f, 183.f, 223.f, 263.f, 303.f, + 24.f, 64.f, 104.f, 144.f, 184.f, 224.f, 264.f, 304.f, 25.f, 65.f, 105.f, 145.f, 185.f, 225.f, 265.f, 305.f, 26.f, 66.f, 106.f, 146.f, 186.f, 226.f, 266.f, 306.f, 27.f, 67.f, 107.f, 147.f, 187.f, 227.f, 267.f, 307.f, + 28.f, 68.f, 108.f, 148.f, 188.f, 228.f, 268.f, 308.f, 29.f, 69.f, 109.f, 149.f, 189.f, 229.f, 269.f, 309.f, 30.f, 70.f, 110.f, 150.f, 190.f, 230.f, 270.f, 310.f, 31.f, 71.f, 111.f, 151.f, 191.f, 231.f, 271.f, 311.f, + 32.f, 72.f, 112.f, 152.f, 192.f, 232.f, 272.f, 312.f, 33.f, 73.f, 113.f, 153.f, 193.f, 233.f, 273.f, 313.f, 34.f, 74.f, 114.f, 154.f, 194.f, 234.f, 274.f, 314.f, 35.f, 75.f, 115.f, 155.f, 195.f, 235.f, 275.f, 315.f, + 36.f, 76.f, 116.f, 156.f, 196.f, 236.f, 276.f, 316.f, 37.f, 77.f, 117.f, 157.f, 197.f, 237.f, 277.f, 317.f, 38.f, 78.f, 118.f, 158.f, 198.f, 238.f, 278.f, 318.f, 39.f, 79.f, 119.f, 159.f, 199.f, 239.f, 279.f, 319.f, + 320.f, 360.f, 400.f, 440.f, 480.f, 520.f, 560.f, 600.f, 321.f, 361.f, 401.f, 441.f, 481.f, 521.f, 561.f, 601.f, 322.f, 362.f, 402.f, 442.f, 482.f, 522.f, 562.f, 602.f, 323.f, 363.f, 403.f, 443.f, 483.f, 523.f, 563.f, 603.f, + 324.f, 364.f, 404.f, 444.f, 484.f, 524.f, 564.f, 604.f, 325.f, 365.f, 405.f, 445.f, 485.f, 525.f, 565.f, 605.f, 326.f, 366.f, 406.f, 446.f, 486.f, 526.f, 566.f, 606.f, 327.f, 367.f, 407.f, 447.f, 487.f, 527.f, 567.f, 607.f, + 328.f, 368.f, 408.f, 448.f, 488.f, 528.f, 568.f, 608.f, 329.f, 369.f, 409.f, 449.f, 489.f, 529.f, 569.f, 609.f, 330.f, 370.f, 410.f, 450.f, 490.f, 530.f, 570.f, 610.f, 331.f, 371.f, 411.f, 451.f, 491.f, 531.f, 571.f, 611.f, + 332.f, 372.f, 412.f, 452.f, 492.f, 532.f, 572.f, 612.f, 333.f, 373.f, 413.f, 453.f, 493.f, 533.f, 573.f, 613.f, 334.f, 374.f, 414.f, 454.f, 494.f, 534.f, 574.f, 614.f, 335.f, 375.f, 415.f, 455.f, 495.f, 535.f, 575.f, 615.f, + 336.f, 376.f, 416.f, 456.f, 496.f, 536.f, 576.f, 616.f, 337.f, 377.f, 417.f, 457.f, 497.f, 537.f, 577.f, 617.f, 338.f, 378.f, 418.f, 458.f, 498.f, 538.f, 578.f, 618.f, 339.f, 379.f, 419.f, 459.f, 499.f, 539.f, 579.f, 619.f, + 340.f, 380.f, 420.f, 460.f, 500.f, 540.f, 580.f, 620.f, 341.f, 381.f, 421.f, 461.f, 501.f, 541.f, 581.f, 621.f, 342.f, 382.f, 422.f, 462.f, 502.f, 542.f, 582.f, 622.f, 343.f, 383.f, 423.f, 463.f, 503.f, 543.f, 583.f, 623.f, + 344.f, 384.f, 424.f, 464.f, 504.f, 544.f, 584.f, 624.f, 345.f, 385.f, 425.f, 465.f, 505.f, 545.f, 585.f, 625.f, 346.f, 386.f, 426.f, 466.f, 506.f, 546.f, 586.f, 626.f, 347.f, 387.f, 427.f, 467.f, 507.f, 547.f, 587.f, 627.f, + 348.f, 388.f, 428.f, 468.f, 508.f, 548.f, 588.f, 628.f, 349.f, 389.f, 429.f, 469.f, 509.f, 549.f, 589.f, 629.f, 350.f, 390.f, 430.f, 470.f, 510.f, 550.f, 590.f, 630.f, 351.f, 391.f, 431.f, 471.f, 511.f, 551.f, 591.f, 631.f, + 352.f, 392.f, 432.f, 472.f, 512.f, 552.f, 592.f, 632.f, 353.f, 393.f, 433.f, 473.f, 513.f, 553.f, 593.f, 633.f, 354.f, 394.f, 434.f, 474.f, 514.f, 554.f, 594.f, 634.f, 355.f, 395.f, 435.f, 475.f, 515.f, 555.f, 595.f, 635.f, + 356.f, 396.f, 436.f, 476.f, 516.f, 556.f, 596.f, 636.f, 357.f, 397.f, 437.f, 477.f, 517.f, 557.f, 597.f, 637.f, 358.f, 398.f, 438.f, 478.f, 518.f, 558.f, 598.f, 638.f, 359.f, 399.f, 439.f, 479.f, 519.f, 559.f, 599.f, 639.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +TEST(permute_gpu_f32_tile_8x8_4x4, xf_remainder_bfwzyx_0_5_4_1_2_3) { + // Input : bfwzyx:2x5x2x2x2x5 + // Permute order : { 0,5,1,2,3,4 } + + constexpr size_t array_size = 400; + + const auto& engine = get_test_engine(); + + auto input = memory::allocate(engine, { data_types::f32, format::bfwzyx,{ 2, 5, 5, 2, 2, 2 } }); + + std::vector input_data; + input_data.reserve(array_size); + for (size_t i=0 ; i < array_size; ++i) + input_data.push_back(static_cast(i)); + + set_values(input, input_data); + + topology topology( + input_layout("input", input.get_layout()), + permute("permute", "input", { 0, 5, 1, 2, 3, 4 })); + + network network(engine, topology); + network.set_input_data("input", input); + + auto outputs = network.execute(); + EXPECT_EQ(outputs.size(), size_t(1)); + EXPECT_EQ(outputs.begin()->first, "permute"); + + auto output = outputs.begin()->second.get_memory(); + + float answers[array_size] = { + 0.f, 40.f, 80.f, 120.f, 160.f, 1.f, 41.f, 81.f, 121.f, 161.f, 2.f, 42.f, 82.f, 122.f, 162.f, 3.f, 43.f, 83.f, 123.f, 163.f, + 4.f, 44.f, 84.f, 124.f, 164.f, 5.f, 45.f, 85.f, 125.f, 165.f, 6.f, 46.f, 86.f, 126.f, 166.f, 7.f, 47.f, 87.f, 127.f, 167.f, + 8.f, 48.f, 88.f, 128.f, 168.f, 9.f, 49.f, 89.f, 129.f, 169.f, 10.f, 50.f, 90.f, 130.f, 170.f, 11.f, 51.f, 91.f, 131.f, 171.f, + 12.f, 52.f, 92.f, 132.f, 172.f, 13.f, 53.f, 93.f, 133.f, 173.f, 14.f, 54.f, 94.f, 134.f, 174.f, 15.f, 55.f, 95.f, 135.f, 175.f, + 16.f, 56.f, 96.f, 136.f, 176.f, 17.f, 57.f, 97.f, 137.f, 177.f, 18.f, 58.f, 98.f, 138.f, 178.f, 19.f, 59.f, 99.f, 139.f, 179.f, + 20.f, 60.f, 100.f, 140.f, 180.f, 21.f, 61.f, 101.f, 141.f, 181.f, 22.f, 62.f, 102.f, 142.f, 182.f, 23.f, 63.f, 103.f, 143.f, 183.f, + 24.f, 64.f, 104.f, 144.f, 184.f, 25.f, 65.f, 105.f, 145.f, 185.f, 26.f, 66.f, 106.f, 146.f, 186.f, 27.f, 67.f, 107.f, 147.f, 187.f, + 28.f, 68.f, 108.f, 148.f, 188.f, 29.f, 69.f, 109.f, 149.f, 189.f, 30.f, 70.f, 110.f, 150.f, 190.f, 31.f, 71.f, 111.f, 151.f, 191.f, + 32.f, 72.f, 112.f, 152.f, 192.f, 33.f, 73.f, 113.f, 153.f, 193.f, 34.f, 74.f, 114.f, 154.f, 194.f, 35.f, 75.f, 115.f, 155.f, 195.f, + 36.f, 76.f, 116.f, 156.f, 196.f, 37.f, 77.f, 117.f, 157.f, 197.f, 38.f, 78.f, 118.f, 158.f, 198.f, 39.f, 79.f, 119.f, 159.f, 199.f, + 200.f, 240.f, 280.f, 320.f, 360.f, 201.f, 241.f, 281.f, 321.f, 361.f, 202.f, 242.f, 282.f, 322.f, 362.f, 203.f, 243.f, 283.f, 323.f, 363.f, + 204.f, 244.f, 284.f, 324.f, 364.f, 205.f, 245.f, 285.f, 325.f, 365.f, 206.f, 246.f, 286.f, 326.f, 366.f, 207.f, 247.f, 287.f, 327.f, 367.f, + 208.f, 248.f, 288.f, 328.f, 368.f, 209.f, 249.f, 289.f, 329.f, 369.f, 210.f, 250.f, 290.f, 330.f, 370.f, 211.f, 251.f, 291.f, 331.f, 371.f, + 212.f, 252.f, 292.f, 332.f, 372.f, 213.f, 253.f, 293.f, 333.f, 373.f, 214.f, 254.f, 294.f, 334.f, 374.f, 215.f, 255.f, 295.f, 335.f, 375.f, + 216.f, 256.f, 296.f, 336.f, 376.f, 217.f, 257.f, 297.f, 337.f, 377.f, 218.f, 258.f, 298.f, 338.f, 378.f, 219.f, 259.f, 299.f, 339.f, 379.f, + 220.f, 260.f, 300.f, 340.f, 380.f, 221.f, 261.f, 301.f, 341.f, 381.f, 222.f, 262.f, 302.f, 342.f, 382.f, 223.f, 263.f, 303.f, 343.f, 383.f, + 224.f, 264.f, 304.f, 344.f, 384.f, 225.f, 265.f, 305.f, 345.f, 385.f, 226.f, 266.f, 306.f, 346.f, 386.f, 227.f, 267.f, 307.f, 347.f, 387.f, + 228.f, 268.f, 308.f, 348.f, 388.f, 229.f, 269.f, 309.f, 349.f, 389.f, 230.f, 270.f, 310.f, 350.f, 390.f, 231.f, 271.f, 311.f, 351.f, 391.f, + 232.f, 272.f, 312.f, 352.f, 392.f, 233.f, 273.f, 313.f, 353.f, 393.f, 234.f, 274.f, 314.f, 354.f, 394.f, 235.f, 275.f, 315.f, 355.f, 395.f, + 236.f, 276.f, 316.f, 356.f, 396.f, 237.f, 277.f, 317.f, 357.f, 397.f, 238.f, 278.f, 318.f, 358.f, 398.f, 239.f, 279.f, 319.f, 359.f, 399.f + }; + + auto output_ptr = output.pointer(); + for (size_t i = 0; i < array_size; i++) + { + EXPECT_FLOAT_EQ(answers[i], output_ptr[i]); + } +} + +struct TiledPermuteParam { + std::vector sizes; + cldnn::format format_fsv; +}; + +class TiledPermuteTest : public ::testing::TestWithParam { +public: + const cldnn::engine engine; + TiledPermuteTest(): engine(get_test_engine()) { } + + template + void compare_value(T a, T b) const { + EXPECT_EQ(a, b); + } + + template + void set_random_values(const cldnn::memory& mem) const { + tests::set_random_values(mem); + } + + template + void run_test(const std::vector& sizes, cldnn::format format_fsv); +}; + +template<> +void TiledPermuteTest::compare_value(float a, float b) const { + EXPECT_FLOAT_EQ(a, b); +} + +// f16 format +template<> +void TiledPermuteTest::compare_value(FLOAT16 a, FLOAT16 b) const { + EXPECT_FLOAT_EQ(static_cast(a), static_cast(b)); +} + +template<> +void TiledPermuteTest::set_random_values(const cldnn::memory& mem) const { + // tests::set_random_values() is not supported + std::mt19937 gen; + static std::uniform_int_distribution uid(std::numeric_limits::min(), std::numeric_limits::max()); + auto ptr = mem.pointer(); + for (auto it = ptr.begin(); it != ptr.end(); ++it) { + *it = static_cast(uid(gen)); + } +} + +template +void TiledPermuteTest::run_test(const std::vector& sizes, cldnn::format format_fsv) +{ + // convert half_t to FLOAT16 + using type_ = typename data_type_to_type::type; + using type = typename std::conditional::value, FLOAT16, type_>::type; + + size_t input_size = 1; + for (size_t i = 0; i internal_sizes(sizes); + std::swap(internal_sizes.at(2), internal_sizes.back()); + cldnn::tensor tensor(internal_sizes); + + cldnn::format format = sizes.size() == 4?cldnn::format::bfyx:cldnn::format::bfzyx; + + std::vector order{0, static_cast(sizes.size()-1)}; + for (uint16_t i = 1; i<(sizes.size()-1); ++i) { + order.push_back(i); + } + + auto input = memory::allocate(engine, {Data_Type, format, tensor}); + set_random_values(input); + + topology topology_ref = topology( + input_layout("input", input.get_layout()), + reorder("reorder", "input", {Data_Type, format_fsv, tensor}), + permute("output", "reorder", order ) + ); + + // run with permute_ref + cldnn::build_options options_ref; + cldnn::implementation_desc permute_ref = { format_fsv, "permute_ref" }; + options_ref.set_option(cldnn::build_option::force_implementations({ {"output", permute_ref} })); + + cldnn::network network_ref(engine, topology_ref, options_ref); + network_ref.set_input_data("input", input); + auto outputs_ref = network_ref.execute(); + auto output_ref = outputs_ref.begin()->second.get_memory(); + auto output_ref_ptr = output_ref.pointer(); + + // run with permute_tile_8x8_4x4_fsv16 + cldnn::build_options options_tile; + cldnn::implementation_desc permute_tile_8x8_4x4_fsv = { format_fsv, "permute_tile_8x8_4x4_fsv" }; + options_tile.set_option(cldnn::build_option::force_implementations({ {"output", permute_tile_8x8_4x4_fsv} })); + + cldnn::network network_tile(engine, topology_ref, options_tile); + network_tile.set_input_data("input", input); + auto outputs_tile = network_tile.execute(); + auto output_tile = outputs_tile.begin()->second.get_memory(); + auto output_tile_ptr = output_tile.pointer(); + + // compare results + const size_t output_size= output_ref.get_layout().get_linear_size(); + for (size_t i = 0; i < output_size; i++) + { + compare_value(output_ref_ptr[i], output_tile_ptr[i]); + } +} + +class permute_tile_fsv_4d: public TiledPermuteTest {}; + +INSTANTIATE_TEST_CASE_P(, permute_tile_fsv_4d, + ::testing::ValuesIn(std::vector { + // b_fs_yx_fsv16 + // normal cases + {{1, 16, 16, 3}, format::b_fs_yx_fsv16}, + // f_not_aligned + {{1, 16 - 7, 16, 2}, format::b_fs_yx_fsv16}, + {{1, 16 - 15, 16, 2}, format::b_fs_yx_fsv16}, + // y_not_aligned + {{1, 16, 16 - 1, 2}, format::b_fs_yx_fsv16}, + {{1, 16, 16 - 9, 2}, format::b_fs_yx_fsv16}, + // fy_not_aligned + {{1, 16 - 15, 16 - 1, 2}, format::b_fs_yx_fsv16}, + {{1, 16 - 1, 16 - 7, 2}, format::b_fs_yx_fsv16}, + {{1, 16 - 7, 16 - 9, 2}, format::b_fs_yx_fsv16}, + {{1, 16 - 9, 16 - 15, 2}, format::b_fs_yx_fsv16}, + + // b_fs_yx_fsv32 + // normal cases + {{1, 32, 32, 3}, format::b_fs_yx_fsv32}, + // f_not_aligned + {{1, 32 - 7, 32, 2}, format::b_fs_yx_fsv32}, + {{1, 32 - 15, 32, 2}, format::b_fs_yx_fsv32}, + // y_not_aligned + {{1, 32, 32 - 1, 2}, format::b_fs_yx_fsv32}, + {{1, 32, 32 - 9, 2}, format::b_fs_yx_fsv32}, + // fy_not_aligned + {{1, 32 - 15, 32 - 1, 2}, format::b_fs_yx_fsv32}, + {{1, 32 - 1, 32 - 7, 2}, format::b_fs_yx_fsv32}, + {{1, 32 - 7, 32 - 9, 2}, format::b_fs_yx_fsv32}, + {{1, 32 - 9, 32 - 15, 2}, format::b_fs_yx_fsv32}, + + // b_fs_yx_fsv4 + // normal cases + {{1, 4, 4, 2}, format::b_fs_yx_fsv4}, + // f_not_aligned + {{1, 4 - 1, 4, 2}, format::b_fs_yx_fsv4}, + {{1, 4 - 3, 4, 2}, format::b_fs_yx_fsv4}, + // y_not_aligned + {{1, 4, 4 - 1, 2}, format::b_fs_yx_fsv4}, + {{1, 4, 4 - 3, 2}, format::b_fs_yx_fsv4}, + // fy_not_aligned + {{1, 4 - 3, 4 - 1, 2}, format::b_fs_yx_fsv4}, + {{1, 4 - 1, 4 - 3, 2}, format::b_fs_yx_fsv4}, + }),); + +TEST_P(permute_tile_fsv_4d, f16) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_4d, f32) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_4d, i8) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_4d, i32) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_4d, i64) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +class permute_tile_fsv_5d: public TiledPermuteTest {}; + +INSTANTIATE_TEST_CASE_P(, permute_tile_fsv_5d, + ::testing::ValuesIn(std::vector { + // b_fs_zyx_fsv16 + // normal cases + {{1, 16, 16, 3, 2}, format::b_fs_zyx_fsv16}, + // f_not_aligned + {{1, 16 - 7, 16, 2, 2}, format::b_fs_zyx_fsv16}, + {{1, 16 - 15, 16, 2, 2}, format::b_fs_zyx_fsv16}, + // z_not_aligned + {{1, 16, 16 - 1, 2, 2}, format::b_fs_zyx_fsv16}, + {{1, 16, 16 - 9, 2, 2}, format::b_fs_zyx_fsv16}, + // fz_not_aligned + {{1, 16 - 15, 16 - 1, 2, 2}, format::b_fs_zyx_fsv16}, + {{1, 16 - 1, 16 - 7, 2, 2}, format::b_fs_zyx_fsv16}, + {{1, 16 - 7, 16 - 9, 2, 2}, format::b_fs_zyx_fsv16}, + {{1, 16 - 9, 16 - 15, 2, 2}, format::b_fs_zyx_fsv16}, + + // b_fs_zyx_fsv32 + // normal cases + {{1, 32, 32, 3, 2}, format::b_fs_zyx_fsv32}, + // f_not_aligned + {{1, 32 - 7, 32, 2, 2}, format::b_fs_zyx_fsv32}, + {{1, 32 - 15, 32, 2, 2}, format::b_fs_zyx_fsv32}, + // z_not_aligned + {{1, 32, 32 - 1, 2, 2}, format::b_fs_zyx_fsv32}, + {{1, 32, 32 - 9, 2, 2}, format::b_fs_zyx_fsv32}, + // fz_not_aligned + {{1, 32 - 15, 32 - 1, 2, 2}, format::b_fs_zyx_fsv32}, + {{1, 32 - 1, 32 - 7, 2, 2}, format::b_fs_zyx_fsv32}, + {{1, 32 - 7, 32 - 9, 2, 2}, format::b_fs_zyx_fsv32}, + {{1, 32 - 9, 32 - 15, 2, 2}, format::b_fs_zyx_fsv32}, + }),); + +TEST_P(permute_tile_fsv_5d, f16) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_5d, f32) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_5d, i8) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_5d, i32) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} + +TEST_P(permute_tile_fsv_5d, i64) { + auto p = GetParam(); + run_test(p.sizes, p.format_fsv); +} diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/pooling_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/pooling_gpu_test.cpp index e433fdf6fb65b6..a1dc98c8b0351e 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/pooling_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/pooling_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/propagate_constants_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/propagate_constants_gpu_test.cpp index 8d6f1e98ab946c..264eb954d3936c 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/propagate_constants_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/propagate_constants_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_cpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_cpu_test.cpp index 88b3180325d0e2..7cbec32a861bfb 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_cpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_cpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_test_data.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_test_data.cpp index 3c138f3e1d89a6..056c52435bbc05 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_test_data.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/proposal_test_data.cpp @@ -1,19 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ -/////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/pyramid_roi_align_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/pyramid_roi_align_gpu_test.cpp index 90223e50708bad..58afd3089287c8 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/pyramid_roi_align_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/pyramid_roi_align_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/quantize_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/quantize_gpu_test.cpp index d2e2376d262d44..1d0dfaa4beb219 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/quantize_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/quantize_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/reduce_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/reduce_gpu_test.cpp index e2da55d12d48e9..f1b906058ab249 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/reduce_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/reduce_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include @@ -75,7 +63,7 @@ struct reduce_accumulator { return acc; }; - AccT accumulate(AccT& acc, AccT& input_val, cldnn::reduce_mode reduce_mode) { + AccT accumulate(AccT& acc, AccT& input_val, cldnn::reduce_mode reduce_mode, bool sum_only) { if (reduce_mode == cldnn::reduce_mode::sum || reduce_mode == cldnn::reduce_mode::mean || reduce_mode == cldnn::reduce_mode::log_sum) acc += input_val; @@ -89,14 +77,26 @@ struct reduce_accumulator { acc = acc && input_val; else if (reduce_mode == cldnn::reduce_mode::logical_or) acc = acc || input_val; - else if (reduce_mode == cldnn::reduce_mode::sum_square) - acc += input_val * input_val; + else if (reduce_mode == cldnn::reduce_mode::sum_square) { + if (sum_only) + acc += input_val; + else + acc += input_val * input_val; + } else if (reduce_mode == cldnn::reduce_mode::l1) acc += abs(input_val); - else if (reduce_mode == cldnn::reduce_mode::l2) - acc += input_val * input_val; - else if (reduce_mode == cldnn::reduce_mode::log_sum_exp) - acc += exp(input_val); + else if (reduce_mode == cldnn::reduce_mode::l2) { + if (sum_only) + acc += input_val; + else + acc += input_val * input_val; + } + else if (reduce_mode == cldnn::reduce_mode::log_sum_exp) { + if (sum_only) + acc += input_val; + else + acc += exp(input_val); + } return acc; }; @@ -287,10 +287,10 @@ VVVVVVF reference_reduce(VVVVVVF& input, temp_output[bi % out_dims[0]][fi % out_dims[1]] [wi % out_dims[2]][zi % out_dims[3]] - [yi % out_dims[4]][xi % out_dims[5]] = reduce.accumulate(acc, input_val, reduce_mode); + [yi % out_dims[4]][xi % out_dims[5]] = reduce.accumulate(acc, input_val, reduce_mode, &axis != &reduce_axis.front()); } } - if (&axis == &reduce_axis.back() || reduce_mode != cldnn::reduce_mode::mean) + if (&axis == &reduce_axis.back()) if (reduce_mode == cldnn::reduce_mode::mean || reduce_mode == cldnn::reduce_mode::l2 || reduce_mode == cldnn::reduce_mode::log_sum || reduce_mode == cldnn::reduce_mode::log_sum_exp) { for (size_t bi = 0; bi < temp_output.size(); ++bi) @@ -443,6 +443,8 @@ class ReduceTestBase : public ::testing::TestWithParam> perf_data; + ReduceTestBase() { this->batch_num = testing::get<0>(GetParam()); this->input_f = testing::get<1>(GetParam()); @@ -541,7 +543,11 @@ class ReduceTestBase : public ::testing::TestWithParam +class ReduceXYWithBigTensorTestBase : public ::testing::TestWithParam { +protected: + cldnn::engine engine = get_test_engine(); + int batch_num, input_f, input_w, input_z, input_y, input_x; + cldnn::format input_format = format::any; + cldnn::reduce_mode reduce_mode; + std::vector reduce_axis; + std::string kernel_name; + bool keep_dims; + cldnn::data_types input_dt; + cldnn::data_types output_dt; + bool force_output_dt; + + static std::vector> perf_data; + + ReduceXYWithBigTensorTestBase() { + this->batch_num = testing::get<0>(GetParam()); + this->input_f = testing::get<1>(GetParam()); + this->input_w = testing::get<2>(GetParam()); + this->input_z = testing::get<3>(GetParam()); + this->input_y = testing::get<4>(GetParam()); + this->input_x = testing::get<5>(GetParam()); + this->input_format = testing::get<6>(GetParam()); + this->reduce_mode = testing::get<7>(GetParam()); // not used + this->reduce_axis = testing::get<8>(GetParam()); + this->kernel_name = testing::get<9>(GetParam()); + this->keep_dims = testing::get<10>(GetParam()); + this->input_dt = testing::get<11>(GetParam()); + this->force_output_dt = testing::get<12>(GetParam()); + this->output_dt = testing::get<13>(GetParam()); + } + +public: + void execute() { + + int input_dim = static_cast(input_format.dimension()); + cldnn::format layout_format = input_format; + + if (input_dim == 4) + layout_format = format::bfyx; + else if (input_dim == 5) + layout_format = format::bfzyx; + else + layout_format = format::bfwzyx; + + using input_t = typename input_data_type::type; + using output_t = typename output_data_type::type; + + auto input_size = tensor(batch(batch_num), feature(input_f), spatial(input_x, input_y, input_z, input_w)); + auto input_data = generate_random_6d(batch_num, input_f, input_x, input_y, input_z, input_w, 1, 5, 9); + auto input_lay = layout(input_dt, layout_format, input_size); + auto input_mem = memory::allocate(engine, input_lay); + + { + auto input_ptr = input_mem.pointer(); + for (int fi = 0; fi < input_f; fi++) + for (int wi = 0; wi < input_w; wi++) + for (int zi = 0; zi < input_z; zi++) + for (int yi = 0; yi < input_y; yi++) + for (int xi = 0; xi < input_x; xi++) { + for (int bi = 0; bi < batch_num; bi++) { + tensor coords = tensor(batch(bi), feature(fi), spatial(xi, yi, zi, wi)); + size_t offset = input_lay.get_linear_offset(coords); + input_ptr[offset] = input_data[bi][fi][xi][yi][zi][wi]; + } + } + } + + std::vector modes { + cldnn::reduce_mode::max, + cldnn::reduce_mode::min, + cldnn::reduce_mode::mean, + // reduce_mode::prod, + cldnn::reduce_mode::sum, + cldnn::reduce_mode::logical_and, + cldnn::reduce_mode::logical_or, + // reduce_mode::sum_square, + cldnn::reduce_mode::l1, + // reduce_mode::l2, + // reduce_mode::log_sum, + cldnn::reduce_mode::log_sum_exp + }; + + for (auto& target_mode : modes) + { + auto reference_result = reference_reduce(input_data, target_mode, reduce_axis, batch_num, + input_f, input_w, input_z, input_y, + input_x, input_dim, keep_dims); + + topology topology; + auto red = reduce("reduce", "input", target_mode, reduce_axis, keep_dims); + if (force_output_dt) { + red.output_data_type = output_dt; + } + topology.add(input_layout("input", input_mem.get_layout())); + topology.add(red); + build_options options; + options.set_option(build_option::optimize_data(true)); + implementation_desc reduce_impl = {input_format, kernel_name}; + options.set_option(build_option::force_implementations({{"reduce", reduce_impl}})); + network network(engine, topology, options); + network.set_input_data("input", input_mem); + + network.execute(); + + auto out_mem = network.get_output("reduce").get_memory(); + auto out_ptr = out_mem.pointer(); + auto out_lay = out_mem.get_layout(); + + ASSERT_EQ(out_lay.size.sizes()[0], reference_result.size()); // b + ASSERT_EQ(out_lay.size.sizes()[1], reference_result[0].size()); // f + ASSERT_EQ(out_lay.size.spatial[3], reference_result[0][0].size()); // w + ASSERT_EQ(out_lay.size.spatial[2], reference_result[0][0][0].size()); // z + ASSERT_EQ(out_lay.size.spatial[1], reference_result[0][0][0][0].size()); // y + ASSERT_EQ(out_lay.size.spatial[0], reference_result[0][0][0][0][0].size()); // x + + bool need_adjust_threshold = (typeid(output_t) == typeid(output_data_type::type)); + for (size_t bi = 0; bi < reference_result.size(); bi++) + for (size_t fi = 0; fi < reference_result[0].size(); fi++) + for (size_t wi = 0; wi < reference_result[0][0].size(); wi++) + for (size_t zi = 0; zi < reference_result[0][0][0].size(); zi++) + for (size_t yi = 0; yi < reference_result[0][0][0][0].size(); yi++) { + for (size_t xi = 0; xi < reference_result[0][0][0][0][0].size(); xi++) { + tensor coords = tensor(batch(bi), feature(fi), spatial(xi, yi, zi, wi)); + size_t offset = out_lay.get_linear_offset(coords); + auto val = out_ptr[offset]; + auto val_ref = static_cast(reference_result[bi][fi][wi][zi][yi][xi]); + bool equal = need_adjust_threshold ? + are_equal(val_ref, val, 1e-1f, 1.0f, 10.0f) : are_equal(val_ref, val, 1e-1f); + + if (!equal) + std::cout << "Reduce mode: " << (int)target_mode << ", " + << "Reference value at batch: " << bi << " output_f: " << fi + << " y: " << yi << " x: " << xi << " = " << val_ref << " Val = " << val + << std::endl; + + EXPECT_TRUE(equal); + + if (!equal) + break; + } + } + } + } +}; + + +class general_reduce_gpu_xy_f32 : public ReduceXYWithBigTensorTestBase {}; +TEST_P(general_reduce_gpu_xy_f32, base) { execute(); } + +class general_reduce_gpu_xy_i8 : public ReduceXYWithBigTensorTestBase {}; +TEST_P(general_reduce_gpu_xy_i8, base) { execute(); } + +INSTANTIATE_TEST_CASE_P(reduce_gpu_b_fs_yx_fsv16_xy_f32, + general_reduce_gpu_xy_f32, + ::testing::Values( + TestParamType_general_reduce_gpu(1, 32, 1, 1, 18, 18, format::b_fs_yx_fsv16, reduce_mode::max, {reduce::along_x, reduce::along_y}, "reduce_gpu_b_fs_yx_fsv16", false, data_types::f32, true, data_types::f32), + TestParamType_general_reduce_gpu(1, 32, 1, 1, 256, 256, format::b_fs_yx_fsv16, reduce_mode::max, {reduce::along_x, reduce::along_y}, "reduce_gpu_b_fs_yx_fsv16", false, data_types::f32, true, data_types::f32) + ), + general_reduce_gpu::PrintToStringParamName); + +INSTANTIATE_TEST_CASE_P(reduce_gpu_b_fs_yx_fsv16_xy_i8, + general_reduce_gpu_xy_i8, + ::testing::Values( + TestParamType_general_reduce_gpu(1, 32, 1, 1, 18, 18, format::b_fs_yx_fsv16, reduce_mode::max, {reduce::along_x, reduce::along_y}, "reduce_gpu_b_fs_yx_fsv16", false, data_types::i8, true, data_types::i8), + TestParamType_general_reduce_gpu(1, 32, 1, 1, 256, 256, format::b_fs_yx_fsv16, reduce_mode::max, {reduce::along_x, reduce::along_y}, "reduce_gpu_b_fs_yx_fsv16", false, data_types::i8, true, data_types::i8) + ), + general_reduce_gpu::PrintToStringParamName); diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/region_yolo_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/region_yolo_gpu_test.cpp new file mode 100644 index 00000000000000..62d02ef2abd54a --- /dev/null +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/region_yolo_gpu_test.cpp @@ -0,0 +1,260 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/////////////////////////////////////////////////////////////////////////////////////////////////// +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace cldnn; +using namespace ::tests; + +namespace internal +{ + static inline int entry_index(int width, + int height, + int coords, + int classes, + int outputs, + int batch, + int location, + int entry) + { + int n = location / (width * height); + int loc = location % (width * height); + return batch * outputs + n * width * height * (coords + classes + 1) + + entry * width * height + loc; + } + + template + static inline T sigmoid(float x) + { + return static_cast(1.f / (1.f + std::exp(-x))); + } + + template + static inline void softmax_generic(const T* src_data, T* dst_data, + uint32_t batches, uint32_t channels, uint32_t height, uint32_t width) + { + const uint32_t area = height * width; + for (unsigned int batch_idx = 0; batch_idx < batches; batch_idx++) + { + const int offset = batch_idx * channels * area; + for (unsigned int i = 0; i < height * width; i++) + { + T max = src_data[batch_idx * channels * area + i]; + for (unsigned int channel_idx = 0; channel_idx < channels; channel_idx++) + { + T val = src_data[offset + channel_idx * area + i]; + max = std::max(max, val); + } + + T sum = 0; + for (unsigned int channel_idx = 0; channel_idx < channels; channel_idx++) + { + dst_data[offset + channel_idx * area + i] = + std::exp((float)(src_data[offset + channel_idx * area + i] - max)); + sum += dst_data[offset + channel_idx * area + i]; + } + + for (unsigned int channel_idx = 0; channel_idx < channels; channel_idx++) + { + dst_data[offset + channel_idx * area + i] /= sum; + } + } + } + } + + uint32_t shape_size(const std::vector& input_shape) + { + uint32_t ret = 1; + std::for_each(input_shape.begin(), input_shape.end(), [&ret](uint32_t n){ + ret *= n; + }); + + return ret; + } + + template + void region_yolo(const T* input, + T* output, + const std::vector& input_shape, + const uint32_t coords, + const uint32_t classes, + const uint32_t regions, + const bool do_softmax, + const std::vector& mask) + { + EXPECT_EQ(input_shape.size(), 4); + + const uint32_t batches = input_shape[0]; + //const uint32_t channels = input_shape[1]; + const uint32_t height = input_shape[2]; + const uint32_t width = input_shape[3]; + + const auto mask_size = mask.size(); + + std::copy(input, input + shape_size(input_shape), output); + + uint32_t num_regions = 0; + uint32_t end_index = 0; + + if (do_softmax) + { + // Region layer (Yolo v2) + num_regions = regions; + end_index = width * height; + } + else + { + // Yolo layer (Yolo v3) + num_regions = static_cast(mask_size); + end_index = width * height * (classes + 1); + } + + const uint32_t inputs_size = width * height * num_regions * (classes + coords + 1); + for (unsigned int batch_idx = 0; batch_idx < batches; batch_idx++) + { + for (unsigned int n = 0; n < num_regions; n++) + { + int index = entry_index(width, + height, + coords, + classes, + inputs_size, + batch_idx, + n * width * height, + 0); + std::transform(input + index, + input + index + 2 * width * height, + output + index, + [](T elem) { return sigmoid(elem); }); + + index = entry_index(width, + height, + coords, + classes, + inputs_size, + batch_idx, + n * width * height, + coords); + std::transform(input + index, + input + index + end_index, + output + index, + [](T elem) { return sigmoid(elem); }); + } + } + + if (do_softmax) + { + int index = + entry_index(width, height, coords, classes, inputs_size, 0, 0, coords + 1); + int batch_offset = inputs_size / regions; + for (unsigned int batch_idx = 0; batch_idx < batches * regions; batch_idx++) + { + softmax_generic(input + index + batch_idx * batch_offset, + output + index + batch_idx * batch_offset, + 1, + classes, + height, + width); + } + } + } + + struct region_yolo_test_params { + std::vector tensor; + std::vector mask; + uint32_t coords; + uint32_t classes; + uint32_t regionNum; + data_types dataType; + format fmt; + bool softMax; + }; +} + +template +static void runRegionTest(internal::region_yolo_test_params& params) +{ + engine eng; + const tensor kInputTensor(params.tensor[0], params.tensor[1], params.tensor[2], params.tensor[3]); + auto inputData = generate_random_1d(params.tensor[0] * params.tensor[1] * params.tensor[2] * params.tensor[3], -1, 1); + + auto inputPrim = memory::allocate(eng, { params.dataType, format::bfyx, kInputTensor }); + set_values(inputPrim, inputData); + + topology topology; + topology.add(input_layout("InputData", inputPrim.get_layout())); + topology.add(reorder("reorder_pre", "InputData", params.fmt, params.dataType)); + topology.add(region_yolo("region_yolo", "reorder_pre", params.coords, params.classes, + params.regionNum, static_cast(params.mask.size()), params.softMax)); + topology.add(reorder("reorder_post", "region_yolo", format::bfyx, params.dataType)); + + network network(eng, topology); + network.set_input_data("InputData", inputPrim); + + auto outputs = network.execute(); + auto output = outputs.at("reorder_post").get_memory(); + auto outputData = output.pointer(); + + /// reference value + std::vector refOutputData(inputData.size()); + internal::region_yolo(inputData.data(), refOutputData.data(), + params.tensor, params.coords, params.classes, + params.regionNum, params.softMax, params.mask); + + /// compare values + for (size_t i = 0; i < inputData.size(); ++i) { + EXPECT_NEAR(refOutputData[i], outputData[i], 0.01); + } +} + +TEST(region_yolo_gpu_fp32, bfyx) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f32, format::bfyx, false}; + runRegionTest(params); +} + +TEST(region_yolo_gpu_fp32, bfyx_softmax) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f32, format::bfyx, true}; + runRegionTest(params); +} + +TEST(region_yolo_gpu_fp32, byxf) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f32, format::byxf, false}; + runRegionTest(params); +} + +TEST(region_yolo_gpu_fp32, byxf_softmax) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f32, format::byxf, true}; + runRegionTest(params); +} + +TEST(region_yolo_gpu_fp16, bfyx) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f16, format::bfyx, false}; + runRegionTest(params); +} + +TEST(region_yolo_gpu_fp16, bfyx_softmax) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f16, format::bfyx, true}; + runRegionTest(params); +} + +TEST(region_yolo_gpu_fp16, byxf) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f16, format::byxf, false}; + runRegionTest(params); +} + +TEST(region_yolo_gpu_fp16, byxf_softmax) { + internal::region_yolo_test_params params{{ 1, 33, 52, 52 }, { 0, 1, 2 }, 4, 6, 3, data_types::f16, format::byxf, true}; + runRegionTest(params); +} diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/removing_output_node_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/removing_output_node_test.cpp index 2c92475b23f791..65e1c9f0ec0410 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/removing_output_node_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/removing_output_node_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/reorder_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/reorder_gpu_test.cpp index 023472962b6029..59a4fd0af2328b 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/reorder_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/reorder_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/resample_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/resample_gpu_test.cpp index cad77780ee9608..151fcd8e8ba164 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/resample_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/resample_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/reshape_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/reshape_gpu_test.cpp index bc42597fcb82bc..69ad0f2be1f1af 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/reshape_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/reshape_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/reverse_sequence_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/reverse_sequence_gpu_test.cpp index f941eb87d670ea..b7de3b16fa6d52 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/reverse_sequence_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/reverse_sequence_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/scale_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/scale_gpu_test.cpp index 388785439eae7a..1e0359f1dada2e 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/scale_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/scale_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_elements_update_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_elements_update_gpu_test.cpp index 433a4791525737..e190e590241b9f 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_elements_update_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_elements_update_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_nd_update_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_nd_update_gpu_test.cpp new file mode 100644 index 00000000000000..26dc684f5e52be --- /dev/null +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_nd_update_gpu_test.cpp @@ -0,0 +1,3917 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/////////////////////////////////////////////////////////////////////////////////////////////////// +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace cldnn; +using namespace ::tests; + + +TEST(scatter_nd_update_gpu_fp16_test15, data5_indice3_update5) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 2, 4, 3 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 1, 2, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 1, 2, 2, 4, 3, 2 } }); // updates + + set_values(input1, { + // 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + // 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(1.0f), + FLOAT16(0.0f), + }); + + set_values(input3, { + // 0 + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + // 1 + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + }); + + std::vector expected_results = { + // 0 + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + // 1 + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + + FLOAT16(91.0f), FLOAT16(2.0f), FLOAT16(83.0f), FLOAT16(4.0f), FLOAT16(71.0f), FLOAT16(2.0f), FLOAT16(63.0f), FLOAT16(4.0f), + FLOAT16(95.0f), FLOAT16(6.0f), FLOAT16(87.0f), FLOAT16(8.0f), FLOAT16(75.0f), FLOAT16(6.0f), FLOAT16(67.0f), FLOAT16(8.0f), + FLOAT16(99.0f), FLOAT16(10.0f), FLOAT16(811.0f), FLOAT16(12.0f), FLOAT16(79.0f), FLOAT16(10.0f), FLOAT16(611.0f), FLOAT16(12.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 3) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test14, data5_indice2_update3) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 2, 4, 3 } }); // data 2x2x3x4x2 (bfzyx) + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 3, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 3, 4, 1, 1, 2 } }); // updates + + set_values(input1, { + // 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + // 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(2.0f), + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(0.0f), + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), + }); + + set_values(input3, { + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), FLOAT16(67.0f), FLOAT16(68.0f), + FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), FLOAT16(75.0f), FLOAT16(76.0f), FLOAT16(77.0f), FLOAT16(78.0f), + }); + + std::vector expected_results = { + // 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), FLOAT16(75.0f), FLOAT16(76.0f), FLOAT16(77.0f), FLOAT16(78.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + // 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), FLOAT16(67.0f), FLOAT16(68.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test13, data4_indice2_update2) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 4, 2 } }); // data 2x3x2x4 (bfyx) + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 3, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 4, 1, 1 } }); // updates + + set_values(input1, { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(0.0f), + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(1.0f), + FLOAT16(0.0f), FLOAT16(2.0f), FLOAT16(1.0f), + }); + + set_values(input3, { + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), + FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), + FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + }); + + std::vector expected_results = { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test12, data3_indice3_update1) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 3, 1, 4 } }); // data 3x3x4 (bfy) + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 4, 3, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 4, 1, 1, 1 } }); // updates + + set_values(input1, { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(2.0f), FLOAT16(0.0f), FLOAT16(0.0f), + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(0.0f), + }); + + set_values(input3, { + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), + }); + + std::vector expected_results = { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(54.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(53.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(52.0f), + + FLOAT16(51.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test11, data6_indice1_update6) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 3, 4, 2 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 1, 1, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 1, 2, 2, 3, 4, 2 } }); // updates + + set_values(input1, { + // 0, 0, 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + // 0, 0, 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + // 0, 1, 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + + // 1, 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + // 1, 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(1.0f), + }); + + set_values(input3, { + // 0 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(50.0f), FLOAT16(51.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + FLOAT16(150.0f), FLOAT16(151.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + }); + + std::vector expected_results = { + // 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + // 1 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(50.0f), FLOAT16(51.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + FLOAT16(150.0f), FLOAT16(151.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test10, data5_indice1_update5) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 3, 4, 2 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 3, 4, 2 } }); // updates + + set_values(input1, { + // 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + // 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(1.0f), FLOAT16(0.0f), + }); + + set_values(input3, { + // 0 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(50.0f), FLOAT16(51.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + // 1 + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + FLOAT16(150.0f), FLOAT16(151.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + }); + + std::vector expected_results = { + // 0 + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + FLOAT16(150.0f), FLOAT16(151.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + // 1 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(50.0f), FLOAT16(51.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test9, data4_indice1_update4) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 3, 4, 2 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 4, 2 } }); // updates + + set_values(input1, { + // 0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + // 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + // 2 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(2.0f), FLOAT16(0.0f), + }); + + set_values(input3, { + // 0 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + // 1 + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + }); + + std::vector expected_results = { + // 0 + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + // 1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + // 2 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test8, data6_indice2_update5) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 1, 2, 2, 3, 4, 2 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 2, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 1, 3, 4, 2 } }); // updates + + set_values(input1, { + //0,0 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + //0,1 + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), + FLOAT16(0.0f), FLOAT16(0.0f) + }); + + set_values(input3, { + // 0 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + + // 1 + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + }); + + std::vector expected_results = { + // 0,0 + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + // 0,1 + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test7, data5_indice2_update4) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 1, 2, 3, 4, 2 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 2, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 1, 3, 4 } }); // updates + + + set_values(input1, { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), + FLOAT16(0.0f), FLOAT16(0.0f) + }); + + set_values(input3, { + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + }); + + std::vector expected_results = { + FLOAT16(151.0f), FLOAT16(152.0f), FLOAT16(153.0f), FLOAT16(154.0f), FLOAT16(155.0f), FLOAT16(156.0f), FLOAT16(157.0f), FLOAT16(158.0f), + FLOAT16(159.0f), FLOAT16(160.0f), FLOAT16(161.0f), FLOAT16(162.0f), FLOAT16(163.0f), FLOAT16(164.0f), FLOAT16(165.0f), FLOAT16(166.0f), + FLOAT16(167.0f), FLOAT16(168.0f), FLOAT16(169.0f), FLOAT16(170.0f), FLOAT16(171.0f), FLOAT16(172.0f), FLOAT16(173.0f), FLOAT16(174.0f), + + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16_test6, data4_indice2_update3) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 4, 2 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 2, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 4, 1, 2 } }); // updates + + + set_values(input1, { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(1.0f), FLOAT16(0.0f), + FLOAT16(0.0f), FLOAT16(2.0f) + }); + + set_values(input3, { + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + }); + + std::vector expected_results = { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(67.0f), FLOAT16(68.0f), FLOAT16(69.0f), FLOAT16(70.0f), FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(59.0f), FLOAT16(60.0f), FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), FLOAT16(65.0f), FLOAT16(66.0f), + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), FLOAT16(55.0f), FLOAT16(56.0f), FLOAT16(57.0f), FLOAT16(58.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test5, data3_indice2_update2) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 1, 4 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 2, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 4, 1, 1 } }); // updates + + + set_values(input1, { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(1.0f), FLOAT16(0.0f), + FLOAT16(0.0f), FLOAT16(2.0f) + }); + + set_values(input3, { + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), + FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), + FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + }); + + std::vector expected_results = { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(71.0f), FLOAT16(72.0f), FLOAT16(73.0f), FLOAT16(74.0f), + + FLOAT16(61.0f), FLOAT16(62.0f), FLOAT16(63.0f), FLOAT16(64.0f), + FLOAT16(51.0f), FLOAT16(52.0f), FLOAT16(53.0f), FLOAT16(54.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test4, data2_indice2_update1) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 4, 1, 1 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 2, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 1, 1, 1 } }); // updates + + + set_values(input1, { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(2.0f), FLOAT16(1.0f), + FLOAT16(0.0f), FLOAT16(3.0f), + FLOAT16(0.0f), FLOAT16(2.0f) + }); + + set_values(input3, { + FLOAT16(21.0f), FLOAT16(22.0f), FLOAT16(23.0f) + }); + + std::vector expected_results = { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(23.0f), FLOAT16(22.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(21.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test3, data3_indice1_update3) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 3, 4, 1 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 4, 1 } }); // updates + + + set_values(input1, { + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + }); + + set_values(input2, { + FLOAT16(2.0f), FLOAT16(0.0f) + }); + + set_values(input3, { + FLOAT16(21.0f), FLOAT16(22.0f), FLOAT16(23.0f), FLOAT16(24.0f), + FLOAT16(25.0f), FLOAT16(26.0f), FLOAT16(27.0f), FLOAT16(28.0f), + FLOAT16(29.0f), FLOAT16(30.0f), FLOAT16(31.0f), FLOAT16(32.0f), + + FLOAT16(41.0f), FLOAT16(42.0f), FLOAT16(43.0f), FLOAT16(44.0f), + FLOAT16(45.0f), FLOAT16(46.0f), FLOAT16(47.0f), FLOAT16(48.0f), + FLOAT16(49.0f), FLOAT16(50.0f), FLOAT16(51.0f), FLOAT16(52.0f), + }); + + std::vector expected_results = { + FLOAT16(41.0f), FLOAT16(42.0f), FLOAT16(43.0f), FLOAT16(44.0f), + FLOAT16(45.0f), FLOAT16(46.0f), FLOAT16(47.0f), FLOAT16(48.0f), + FLOAT16(49.0f), FLOAT16(50.0f), FLOAT16(51.0f), FLOAT16(52.0f), + + FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(3.0f), FLOAT16(4.0f), + FLOAT16(5.0f), FLOAT16(6.0f), FLOAT16(7.0f), FLOAT16(8.0f), + FLOAT16(9.0f), FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), + + FLOAT16(21.0f), FLOAT16(22.0f), FLOAT16(23.0f), FLOAT16(24.0f), + FLOAT16(25.0f), FLOAT16(26.0f), FLOAT16(27.0f), FLOAT16(28.0f), + FLOAT16(29.0f), FLOAT16(30.0f), FLOAT16(31.0f), FLOAT16(32.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16_test2, data2_indice1_update2) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 4, 1, 1 } }); // data + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // indices + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 4, 1, 1 } }); // updates + + + set_values(input1, { + FLOAT16(13.0f), FLOAT16(12.0f), FLOAT16(11.0f), FLOAT16(10.0f), + FLOAT16(9.0f), FLOAT16(8.0f), FLOAT16(7.0f), FLOAT16(6.0f), + FLOAT16(5.0f), FLOAT16(4.0f), FLOAT16(3.0f), FLOAT16(2.0f) + }); + + set_values(input2, { + FLOAT16(2.0f), FLOAT16(0.0f) + }); + + set_values(input3, { + FLOAT16(20.0f), FLOAT16(21.0f), FLOAT16(22.0f), FLOAT16(23.0f), + FLOAT16(24.0f), FLOAT16(25.0f), FLOAT16(26.0f), FLOAT16(27.0f) + }); + + std::vector expected_results = { + FLOAT16(24.0f), FLOAT16(25.0f), FLOAT16(26.0f), FLOAT16(27.0f), + FLOAT16(9.0f), FLOAT16(8.0f), FLOAT16(7.0f), FLOAT16(6.0f), + FLOAT16(20.0f), FLOAT16(21.0f), FLOAT16(22.0f), FLOAT16(23.0f), + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16_test1, data1_indice1_update1) { + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 8, 1, 1, 1 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 4, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 4, 1, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(9.0f), FLOAT16(8.0f), FLOAT16(7.0f), FLOAT16(6.0f), FLOAT16(5.0f), FLOAT16(4.0f), FLOAT16(3.0f), FLOAT16(2.0f) + }); + + set_values(input2, { + FLOAT16(2.0f), FLOAT16(4.0f), FLOAT16(5.0f), FLOAT16(7.0f) + }); + + set_values(input3, { + FLOAT16(10.0f), FLOAT16(11.0f), FLOAT16(12.0f), FLOAT16(13.0f) + }); + + std::vector expected_results = { + 9.f, 8.f, 10.f, 6.f, 11.f, 12.f, 3.f, 13.f + }; + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + + +TEST(scatter_nd_update_gpu_fp16, d6661_i2311) { + // Dictionary : 6x6x6x1 + // Indexes : 2x3x1x1 + // Updates : 2x1x1x1 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 6, 6, 1, 6 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // Updates + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(136.f), FLOAT16(137.f), FLOAT16(138.f), FLOAT16(139.f), FLOAT16(140.f), FLOAT16(141.f), + FLOAT16(142.f), FLOAT16(143.f), FLOAT16(144.f), FLOAT16(145.f), FLOAT16(146.f), FLOAT16(147.f), + FLOAT16(148.f), FLOAT16(149.f), FLOAT16(150.f), FLOAT16(151.f), FLOAT16(152.f), FLOAT16(153.f), + FLOAT16(154.f), FLOAT16(155.f), FLOAT16(156.f), FLOAT16(157.f), FLOAT16(158.f), FLOAT16(159.f), + FLOAT16(160.f), FLOAT16(161.f), FLOAT16(162.f), FLOAT16(163.f), FLOAT16(164.f), FLOAT16(165.f), + FLOAT16(166.f), FLOAT16(167.f), FLOAT16(168.f), FLOAT16(169.f), FLOAT16(170.f), FLOAT16(171.f), + + FLOAT16(172.f), FLOAT16(173.f), FLOAT16(174.f), FLOAT16(175.f), FLOAT16(176.f), FLOAT16(177.f), + FLOAT16(178.f), FLOAT16(179.f), FLOAT16(180.f), FLOAT16(181.f), FLOAT16(182.f), FLOAT16(183.f), + FLOAT16(184.f), FLOAT16(185.f), FLOAT16(186.f), FLOAT16(187.f), FLOAT16(188.f), FLOAT16(189.f), + FLOAT16(190.f), FLOAT16(191.f), FLOAT16(192.f), FLOAT16(193.f), FLOAT16(194.f), FLOAT16(195.f), + FLOAT16(196.f), FLOAT16(197.f), FLOAT16(198.f), FLOAT16(199.f), FLOAT16(200.f), FLOAT16(201.f), + FLOAT16(202.f), FLOAT16(203.f), FLOAT16(204.f), FLOAT16(205.f), FLOAT16(206.f), FLOAT16(207.f), + + FLOAT16(208.f), FLOAT16(209.f), FLOAT16(210.f), FLOAT16(211.f), FLOAT16(212.f), FLOAT16(213.f), + FLOAT16(214.f), FLOAT16(215.f), FLOAT16(216.f), FLOAT16(217.f), FLOAT16(218.f), FLOAT16(219.f), + FLOAT16(220.f), FLOAT16(221.f), FLOAT16(222.f), FLOAT16(223.f), FLOAT16(224.f), FLOAT16(225.f), + FLOAT16(226.f), FLOAT16(227.f), FLOAT16(228.f), FLOAT16(229.f), FLOAT16(230.f), FLOAT16(231.f), + FLOAT16(232.f), FLOAT16(233.f), FLOAT16(234.f), FLOAT16(235.f), FLOAT16(236.f), FLOAT16(237.f), + FLOAT16(238.f), FLOAT16(239.f), FLOAT16(240.f), FLOAT16(241.f), FLOAT16(242.f), FLOAT16(243.f), + + FLOAT16(244.f), FLOAT16(245.f), FLOAT16(246.f), FLOAT16(247.f), FLOAT16(248.f), FLOAT16(249.f), + FLOAT16(250.f), FLOAT16(251.f), FLOAT16(252.f), FLOAT16(253.f), FLOAT16(254.f), FLOAT16(255.f), + FLOAT16(256.f), FLOAT16(257.f), FLOAT16(258.f), FLOAT16(259.f), FLOAT16(260.f), FLOAT16(261.f), + FLOAT16(262.f), FLOAT16(263.f), FLOAT16(264.f), FLOAT16(265.f), FLOAT16(266.f), FLOAT16(267.f), + FLOAT16(268.f), FLOAT16(269.f), FLOAT16(270.f), FLOAT16(271.f), FLOAT16(272.f), FLOAT16(273.f), + FLOAT16(274.f), FLOAT16(275.f), FLOAT16(276.f), FLOAT16(277.f), FLOAT16(278.f), FLOAT16(279.f), + + FLOAT16(280.f), FLOAT16(281.f), FLOAT16(282.f), FLOAT16(283.f), FLOAT16(284.f), FLOAT16(285.f), + FLOAT16(286.f), FLOAT16(287.f), FLOAT16(288.f), FLOAT16(289.f), FLOAT16(290.f), FLOAT16(291.f), + FLOAT16(292.f), FLOAT16(293.f), FLOAT16(294.f), FLOAT16(295.f), FLOAT16(296.f), FLOAT16(297.f), + FLOAT16(298.f), FLOAT16(299.f), FLOAT16(300.f), FLOAT16(301.f), FLOAT16(302.f), FLOAT16(303.f), + FLOAT16(304.f), FLOAT16(305.f), FLOAT16(306.f), FLOAT16(307.f), FLOAT16(308.f), FLOAT16(309.f), + FLOAT16(310.f), FLOAT16(311.f), FLOAT16(312.f), FLOAT16(313.f), FLOAT16(314.f), FLOAT16(315.f), + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(2.0f), + FLOAT16(3.0f), FLOAT16(4.0f), FLOAT16(5.0f) + }); + + set_values(input3, { + FLOAT16(999.0f), FLOAT16(888.0f) + }); + + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, 102.f, 103.f, 104.f, 105.f, + 106.f, 107.f, 999.f, 109.f, 110.f, 111.f, + 112.f, 113.f, 114.f, 115.f, 116.f, 117.f, + 118.f, 119.f, 120.f, 121.f, 122.f, 123.f, + 124.f, 125.f, 126.f, 127.f, 128.f, 129.f, + 130.f, 131.f, 132.f, 133.f, 134.f, 135.f, + + 136.f, 137.f, 138.f, 139.f, 140.f, 141.f, + 142.f, 143.f, 144.f, 145.f, 146.f, 147.f, + 148.f, 149.f, 150.f, 151.f, 152.f, 153.f, + 154.f, 155.f, 156.f, 157.f, 158.f, 159.f, + 160.f, 161.f, 162.f, 163.f, 164.f, 165.f, + 166.f, 167.f, 168.f, 169.f, 170.f, 171.f, + + 172.f, 173.f, 174.f, 175.f, 176.f, 177.f, + 178.f, 179.f, 180.f, 181.f, 182.f, 183.f, + 184.f, 185.f, 186.f, 187.f, 188.f, 189.f, + 190.f, 191.f, 192.f, 193.f, 194.f, 195.f, + 196.f, 197.f, 198.f, 199.f, 200.f, 201.f, + 202.f, 203.f, 204.f, 205.f, 206.f, 207.f, + + 208.f, 209.f, 210.f, 211.f, 212.f, 213.f, + 214.f, 215.f, 216.f, 217.f, 218.f, 219.f, + 220.f, 221.f, 222.f, 223.f, 224.f, 225.f, + 226.f, 227.f, 228.f, 229.f, 230.f, 231.f, + 232.f, 233.f, 234.f, 235.f, 236.f, 888.f, + 238.f, 239.f, 240.f, 241.f, 242.f, 243.f, + + 244.f, 245.f, 246.f, 247.f, 248.f, 249.f, + 250.f, 251.f, 252.f, 253.f, 254.f, 255.f, + 256.f, 257.f, 258.f, 259.f, 260.f, 261.f, + 262.f, 263.f, 264.f, 265.f, 266.f, 267.f, + 268.f, 269.f, 270.f, 271.f, 272.f, 273.f, + 274.f, 275.f, 276.f, 277.f, 278.f, 279.f, + + 280.f, 281.f, 282.f, 283.f, 284.f, 285.f, + 286.f, 287.f, 288.f, 289.f, 290.f, 291.f, + 292.f, 293.f, 294.f, 295.f, 296.f, 297.f, + 298.f, 299.f, 300.f, 301.f, 302.f, 303.f, + 304.f, 305.f, 306.f, 307.f, 308.f, 309.f, + 310.f, 311.f, 312.f, 313.f, 314.f, 315.f, + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16, d6661_i2211) { + // Dictionary : 6x6x6x1 + // Indexes : 2x2x1x1 + // Updates : 2x6x1x1 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 6, 6, 1, 6 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 2, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 6, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(136.f), FLOAT16(137.f), FLOAT16(138.f), FLOAT16(139.f), FLOAT16(140.f), FLOAT16(141.f), + FLOAT16(142.f), FLOAT16(143.f), FLOAT16(144.f), FLOAT16(145.f), FLOAT16(146.f), FLOAT16(147.f), + FLOAT16(148.f), FLOAT16(149.f), FLOAT16(150.f), FLOAT16(151.f), FLOAT16(152.f), FLOAT16(153.f), + FLOAT16(154.f), FLOAT16(155.f), FLOAT16(156.f), FLOAT16(157.f), FLOAT16(158.f), FLOAT16(159.f), + FLOAT16(160.f), FLOAT16(161.f), FLOAT16(162.f), FLOAT16(163.f), FLOAT16(164.f), FLOAT16(165.f), + FLOAT16(166.f), FLOAT16(167.f), FLOAT16(168.f), FLOAT16(169.f), FLOAT16(170.f), FLOAT16(171.f), + + FLOAT16(172.f), FLOAT16(173.f), FLOAT16(174.f), FLOAT16(175.f), FLOAT16(176.f), FLOAT16(177.f), + FLOAT16(178.f), FLOAT16(179.f), FLOAT16(180.f), FLOAT16(181.f), FLOAT16(182.f), FLOAT16(183.f), + FLOAT16(184.f), FLOAT16(185.f), FLOAT16(186.f), FLOAT16(187.f), FLOAT16(188.f), FLOAT16(189.f), + FLOAT16(190.f), FLOAT16(191.f), FLOAT16(192.f), FLOAT16(193.f), FLOAT16(194.f), FLOAT16(195.f), + FLOAT16(196.f), FLOAT16(197.f), FLOAT16(198.f), FLOAT16(199.f), FLOAT16(200.f), FLOAT16(201.f), + FLOAT16(202.f), FLOAT16(203.f), FLOAT16(204.f), FLOAT16(205.f), FLOAT16(206.f), FLOAT16(207.f), + + FLOAT16(208.f), FLOAT16(209.f), FLOAT16(210.f), FLOAT16(211.f), FLOAT16(212.f), FLOAT16(213.f), + FLOAT16(214.f), FLOAT16(215.f), FLOAT16(216.f), FLOAT16(217.f), FLOAT16(218.f), FLOAT16(219.f), + FLOAT16(220.f), FLOAT16(221.f), FLOAT16(222.f), FLOAT16(223.f), FLOAT16(224.f), FLOAT16(225.f), + FLOAT16(226.f), FLOAT16(227.f), FLOAT16(228.f), FLOAT16(229.f), FLOAT16(230.f), FLOAT16(231.f), + FLOAT16(232.f), FLOAT16(233.f), FLOAT16(234.f), FLOAT16(235.f), FLOAT16(236.f), FLOAT16(237.f), + FLOAT16(238.f), FLOAT16(239.f), FLOAT16(240.f), FLOAT16(241.f), FLOAT16(242.f), FLOAT16(243.f), + + FLOAT16(244.f), FLOAT16(245.f), FLOAT16(246.f), FLOAT16(247.f), FLOAT16(248.f), FLOAT16(249.f), + FLOAT16(250.f), FLOAT16(251.f), FLOAT16(252.f), FLOAT16(253.f), FLOAT16(254.f), FLOAT16(255.f), + FLOAT16(256.f), FLOAT16(257.f), FLOAT16(258.f), FLOAT16(259.f), FLOAT16(260.f), FLOAT16(261.f), + FLOAT16(262.f), FLOAT16(263.f), FLOAT16(264.f), FLOAT16(265.f), FLOAT16(266.f), FLOAT16(267.f), + FLOAT16(268.f), FLOAT16(269.f), FLOAT16(270.f), FLOAT16(271.f), FLOAT16(272.f), FLOAT16(273.f), + FLOAT16(274.f), FLOAT16(275.f), FLOAT16(276.f), FLOAT16(277.f), FLOAT16(278.f), FLOAT16(279.f), + + FLOAT16(280.f), FLOAT16(281.f), FLOAT16(282.f), FLOAT16(283.f), FLOAT16(284.f), FLOAT16(285.f), + FLOAT16(286.f), FLOAT16(287.f), FLOAT16(288.f), FLOAT16(289.f), FLOAT16(290.f), FLOAT16(291.f), + FLOAT16(292.f), FLOAT16(293.f), FLOAT16(294.f), FLOAT16(295.f), FLOAT16(296.f), FLOAT16(297.f), + FLOAT16(298.f), FLOAT16(299.f), FLOAT16(300.f), FLOAT16(301.f), FLOAT16(302.f), FLOAT16(303.f), + FLOAT16(304.f), FLOAT16(305.f), FLOAT16(306.f), FLOAT16(307.f), FLOAT16(308.f), FLOAT16(309.f), + FLOAT16(310.f), FLOAT16(311.f), FLOAT16(312.f), FLOAT16(313.f), FLOAT16(314.f), FLOAT16(315.f), + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), + FLOAT16(3.0f), FLOAT16(4.0f), + }); + + set_values(input3, { + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, 102.f, 103.f, 104.f, 105.f, + 999.f, 999.f, 999.f, 999.f, 999.f, 999.f, + 112.f, 113.f, 114.f, 115.f, 116.f, 117.f, + 118.f, 119.f, 120.f, 121.f, 122.f, 123.f, + 124.f, 125.f, 126.f, 127.f, 128.f, 129.f, + 130.f, 131.f, 132.f, 133.f, 134.f, 135.f, + + 136.f, 137.f, 138.f, 139.f, 140.f, 141.f, + 142.f, 143.f, 144.f, 145.f, 146.f, 147.f, + 148.f, 149.f, 150.f, 151.f, 152.f, 153.f, + 154.f, 155.f, 156.f, 157.f, 158.f, 159.f, + 160.f, 161.f, 162.f, 163.f, 164.f, 165.f, + 166.f, 167.f, 168.f, 169.f, 170.f, 171.f, + + 172.f, 173.f, 174.f, 175.f, 176.f, 177.f, + 178.f, 179.f, 180.f, 181.f, 182.f, 183.f, + 184.f, 185.f, 186.f, 187.f, 188.f, 189.f, + 190.f, 191.f, 192.f, 193.f, 194.f, 195.f, + 196.f, 197.f, 198.f, 199.f, 200.f, 201.f, + 202.f, 203.f, 204.f, 205.f, 206.f, 207.f, + + 208.f, 209.f, 210.f, 211.f, 212.f, 213.f, + 214.f, 215.f, 216.f, 217.f, 218.f, 219.f, + 220.f, 221.f, 222.f, 223.f, 224.f, 225.f, + 226.f, 227.f, 228.f, 229.f, 230.f, 231.f, + 888.f, 888.f, 888.f, 888.f, 888.f, 888.f, + 238.f, 239.f, 240.f, 241.f, 242.f, 243.f, + + 244.f, 245.f, 246.f, 247.f, 248.f, 249.f, + 250.f, 251.f, 252.f, 253.f, 254.f, 255.f, + 256.f, 257.f, 258.f, 259.f, 260.f, 261.f, + 262.f, 263.f, 264.f, 265.f, 266.f, 267.f, + 268.f, 269.f, 270.f, 271.f, 272.f, 273.f, + 274.f, 275.f, 276.f, 277.f, 278.f, 279.f, + + 280.f, 281.f, 282.f, 283.f, 284.f, 285.f, + 286.f, 287.f, 288.f, 289.f, 290.f, 291.f, + 292.f, 293.f, 294.f, 295.f, 296.f, 297.f, + 298.f, 299.f, 300.f, 301.f, 302.f, 303.f, + 304.f, 305.f, 306.f, 307.f, 308.f, 309.f, + 310.f, 311.f, 312.f, 313.f, 314.f, 315.f, + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16, d6661_i2111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 6, 6, 1, 6 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 6, 1, 6 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(136.f), FLOAT16(137.f), FLOAT16(138.f), FLOAT16(139.f), FLOAT16(140.f), FLOAT16(141.f), + FLOAT16(142.f), FLOAT16(143.f), FLOAT16(144.f), FLOAT16(145.f), FLOAT16(146.f), FLOAT16(147.f), + FLOAT16(148.f), FLOAT16(149.f), FLOAT16(150.f), FLOAT16(151.f), FLOAT16(152.f), FLOAT16(153.f), + FLOAT16(154.f), FLOAT16(155.f), FLOAT16(156.f), FLOAT16(157.f), FLOAT16(158.f), FLOAT16(159.f), + FLOAT16(160.f), FLOAT16(161.f), FLOAT16(162.f), FLOAT16(163.f), FLOAT16(164.f), FLOAT16(165.f), + FLOAT16(166.f), FLOAT16(167.f), FLOAT16(168.f), FLOAT16(169.f), FLOAT16(170.f), FLOAT16(171.f), + + FLOAT16(172.f), FLOAT16(173.f), FLOAT16(174.f), FLOAT16(175.f), FLOAT16(176.f), FLOAT16(177.f), + FLOAT16(178.f), FLOAT16(179.f), FLOAT16(180.f), FLOAT16(181.f), FLOAT16(182.f), FLOAT16(183.f), + FLOAT16(184.f), FLOAT16(185.f), FLOAT16(186.f), FLOAT16(187.f), FLOAT16(188.f), FLOAT16(189.f), + FLOAT16(190.f), FLOAT16(191.f), FLOAT16(192.f), FLOAT16(193.f), FLOAT16(194.f), FLOAT16(195.f), + FLOAT16(196.f), FLOAT16(197.f), FLOAT16(198.f), FLOAT16(199.f), FLOAT16(200.f), FLOAT16(201.f), + FLOAT16(202.f), FLOAT16(203.f), FLOAT16(204.f), FLOAT16(205.f), FLOAT16(206.f), FLOAT16(207.f), + + FLOAT16(208.f), FLOAT16(209.f), FLOAT16(210.f), FLOAT16(211.f), FLOAT16(212.f), FLOAT16(213.f), + FLOAT16(214.f), FLOAT16(215.f), FLOAT16(216.f), FLOAT16(217.f), FLOAT16(218.f), FLOAT16(219.f), + FLOAT16(220.f), FLOAT16(221.f), FLOAT16(222.f), FLOAT16(223.f), FLOAT16(224.f), FLOAT16(225.f), + FLOAT16(226.f), FLOAT16(227.f), FLOAT16(228.f), FLOAT16(229.f), FLOAT16(230.f), FLOAT16(231.f), + FLOAT16(232.f), FLOAT16(233.f), FLOAT16(234.f), FLOAT16(235.f), FLOAT16(236.f), FLOAT16(237.f), + FLOAT16(238.f), FLOAT16(239.f), FLOAT16(240.f), FLOAT16(241.f), FLOAT16(242.f), FLOAT16(243.f), + + FLOAT16(244.f), FLOAT16(245.f), FLOAT16(246.f), FLOAT16(247.f), FLOAT16(248.f), FLOAT16(249.f), + FLOAT16(250.f), FLOAT16(251.f), FLOAT16(252.f), FLOAT16(253.f), FLOAT16(254.f), FLOAT16(255.f), + FLOAT16(256.f), FLOAT16(257.f), FLOAT16(258.f), FLOAT16(259.f), FLOAT16(260.f), FLOAT16(261.f), + FLOAT16(262.f), FLOAT16(263.f), FLOAT16(264.f), FLOAT16(265.f), FLOAT16(266.f), FLOAT16(267.f), + FLOAT16(268.f), FLOAT16(269.f), FLOAT16(270.f), FLOAT16(271.f), FLOAT16(272.f), FLOAT16(273.f), + FLOAT16(274.f), FLOAT16(275.f), FLOAT16(276.f), FLOAT16(277.f), FLOAT16(278.f), FLOAT16(279.f), + + FLOAT16(280.f), FLOAT16(281.f), FLOAT16(282.f), FLOAT16(283.f), FLOAT16(284.f), FLOAT16(285.f), + FLOAT16(286.f), FLOAT16(287.f), FLOAT16(288.f), FLOAT16(289.f), FLOAT16(290.f), FLOAT16(291.f), + FLOAT16(292.f), FLOAT16(293.f), FLOAT16(294.f), FLOAT16(295.f), FLOAT16(296.f), FLOAT16(297.f), + FLOAT16(298.f), FLOAT16(299.f), FLOAT16(300.f), FLOAT16(301.f), FLOAT16(302.f), FLOAT16(303.f), + FLOAT16(304.f), FLOAT16(305.f), FLOAT16(306.f), FLOAT16(307.f), FLOAT16(308.f), FLOAT16(309.f), + FLOAT16(310.f), FLOAT16(311.f), FLOAT16(312.f), FLOAT16(313.f), FLOAT16(314.f), FLOAT16(315.f), + }); + + set_values(input2, { + FLOAT16(0.0f), + FLOAT16(3.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(777.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(777.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(777.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(777.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(777.0f), + + FLOAT16(666.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(666.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(666.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(666.0f), FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(666.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(666.0f), + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 777.f, 999.f, 999.f, 999.f, 999.f, 999.f, + 999.f, 777.f, 999.f, 999.f, 999.f, 999.f, + 999.f, 999.f, 777.f, 999.f, 999.f, 999.f, + 999.f, 999.f, 999.f, 777.f, 999.f, 999.f, + 999.f, 999.f, 999.f, 999.f, 777.f, 999.f, + 999.f, 999.f, 999.f, 999.f, 999.f, 777.f, + + 136.f, 137.f, 138.f, 139.f, 140.f, 141.f, + 142.f, 143.f, 144.f, 145.f, 146.f, 147.f, + 148.f, 149.f, 150.f, 151.f, 152.f, 153.f, + 154.f, 155.f, 156.f, 157.f, 158.f, 159.f, + 160.f, 161.f, 162.f, 163.f, 164.f, 165.f, + 166.f, 167.f, 168.f, 169.f, 170.f, 171.f, + + 172.f, 173.f, 174.f, 175.f, 176.f, 177.f, + 178.f, 179.f, 180.f, 181.f, 182.f, 183.f, + 184.f, 185.f, 186.f, 187.f, 188.f, 189.f, + 190.f, 191.f, 192.f, 193.f, 194.f, 195.f, + 196.f, 197.f, 198.f, 199.f, 200.f, 201.f, + 202.f, 203.f, 204.f, 205.f, 206.f, 207.f, + + 666.f, 888.f, 888.f, 888.f, 888.f, 888.f, + 888.f, 666.f, 888.f, 888.f, 888.f, 888.f, + 888.f, 888.f, 666.f, 888.f, 888.f, 888.f, + 888.f, 888.f, 888.f, 666.f, 888.f, 888.f, + 888.f, 888.f, 888.f, 888.f, 666.f, 888.f, + 888.f, 888.f, 888.f, 888.f, 888.f, 666.f, + + 244.f, 245.f, 246.f, 247.f, 248.f, 249.f, + 250.f, 251.f, 252.f, 253.f, 254.f, 255.f, + 256.f, 257.f, 258.f, 259.f, 260.f, 261.f, + 262.f, 263.f, 264.f, 265.f, 266.f, 267.f, + 268.f, 269.f, 270.f, 271.f, 272.f, 273.f, + 274.f, 275.f, 276.f, 277.f, 278.f, 279.f, + + 280.f, 281.f, 282.f, 283.f, 284.f, 285.f, + 286.f, 287.f, 288.f, 289.f, 290.f, 291.f, + 292.f, 293.f, 294.f, 295.f, 296.f, 297.f, + 298.f, 299.f, 300.f, 301.f, 302.f, 303.f, + 304.f, 305.f, 306.f, 307.f, 308.f, 309.f, + 310.f, 311.f, 312.f, 313.f, 314.f, 315.f, + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d3232_i2411) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 2, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 4, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(1.0f), + FLOAT16(2.0f), FLOAT16(1.0f), FLOAT16(2.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + 104.f, 105.f, + + 106.f, 107.f, + 108.f, 109.f, + 110.f, 777.f, + + 112.f, 113.f, + 114.f, 115.f, + 116.f, 117.f, + + 118.f, 119.f, + 120.f, 121.f, + 122.f, 123.f, + + 124.f, 125.f, + 126.f, 127.f, + 128.f, 129.f, + + 130.f, 131.f, + 132.f, 133.f, + 134.f, 999.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d3232_i2311) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 2, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 2, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(2.0f), + FLOAT16(2.0f), FLOAT16(1.0f), FLOAT16(2.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + 104.f, 105.f, + + 106.f, 107.f, + 108.f, 109.f, + 777.f, 777.f, + + 112.f, 113.f, + 114.f, 115.f, + 116.f, 117.f, + + 118.f, 119.f, + 120.f, 121.f, + 122.f, 123.f, + + 124.f, 125.f, + 126.f, 127.f, + 128.f, 129.f, + + 130.f, 131.f, + 132.f, 133.f, + 999.f, 999.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d3232_i2211) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 2, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 2, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 3, 1, 2 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), + FLOAT16(2.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + 104.f, 105.f, + + 777.f, 777.f, + 777.f, 777.f, + 777.f, 777.f, + + 112.f, 113.f, + 114.f, 115.f, + 116.f, 117.f, + + 118.f, 119.f, + 120.f, 121.f, + 122.f, 123.f, + + 124.f, 125.f, + 126.f, 127.f, + 128.f, 129.f, + + 999.f, 999.f, + 999.f, 999.f, + 999.f, 999.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d3232_i2111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfyx, { 3, 2, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfyx, { 2, 2, 2, 3 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), + FLOAT16(2.0f) + }); + + set_values(input3, { + FLOAT16(666.0f), FLOAT16(666.0f), + FLOAT16(666.0f), FLOAT16(666.0f), + FLOAT16(666.0f), FLOAT16(666.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 666.f, 666.f, + 666.f, 666.f, + 666.f, 666.f, + + 777.f, 777.f, + 777.f, 777.f, + 777.f, 777.f, + + 112.f, 113.f, + 114.f, 115.f, + 116.f, 117.f, + + 118.f, 119.f, + 120.f, 121.f, + 122.f, 123.f, + + 888.f, 888.f, + 888.f, 888.f, + 888.f, 888.f, + + 999.f, 999.f, + 999.f, 999.f, + 999.f, 999.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16, d32323_i25111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 3, 2, 3, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 5, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 1, 1, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 2 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 3 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(2.0f), + FLOAT16(2.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 127.f, 128.f, 777.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 2 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 127.f, 128.f, 129.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 3 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 127.f, 999.f, 129.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d32323_i24111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 3, 2, 3, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 4, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 3, 1, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 2 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 3 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(2.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 777.f, 777.f, 777.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 2 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 127.f, 128.f, 129.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 3 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 999.f, 999.f, 999.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d32323_i23111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 3, 2, 3, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 3, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 1, 1, 3 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 2 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 3 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(2.0f), FLOAT16(1.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 777.f, 777.f, 777.f, + 777.f, 777.f, 777.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 2 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 127.f, 128.f, 129.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 3 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 999.f, 999.f, 999.f, + 999.f, 999.f, 999.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d32323_i22111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 3, 2, 3, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 3, 1, 3, 2 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 2 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 3 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), + FLOAT16(2.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(555.0f), FLOAT16(555.0f), FLOAT16(555.0f), + FLOAT16(555.0f), FLOAT16(555.0f), FLOAT16(555.0f), + + FLOAT16(666.0f), FLOAT16(666.0f), FLOAT16(666.0f), + FLOAT16(666.0f), FLOAT16(666.0f), FLOAT16(666.0f), + + FLOAT16(444.0f), FLOAT16(444.0f), FLOAT16(444.0f), + FLOAT16(444.0f), FLOAT16(444.0f), FLOAT16(444.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 555.f, 555.f, 555.f, + 555.f, 555.f, 555.f, + + 666.f, 666.f, 666.f, + 666.f, 666.f, 666.f, + + 444.f, 444.f, 444.f, + 444.f, 444.f, 444.f, + + // 2 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 127.f, 128.f, 129.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 3 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 777.f, 777.f, 777.f, + 777.f, 777.f, 777.f, + + 888.f, 888.f, 888.f, + 888.f, 888.f, 888.f, + + 999.f, 999.f, 999.f, + 999.f, 999.f, 999.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d32323_i21111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + auto input1 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 3, 2, 3, 2, 3 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 1, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfzyx, { 2, 2, 3, 2, 3 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 2 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f), + + // 3 + FLOAT16(100.f), FLOAT16(101.f), FLOAT16(102.f), + FLOAT16(103.f), FLOAT16(104.f), FLOAT16(105.f), + + FLOAT16(106.f), FLOAT16(107.f), FLOAT16(108.f), + FLOAT16(109.f), FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), FLOAT16(114.f), + FLOAT16(115.f), FLOAT16(116.f), FLOAT16(117.f), + + FLOAT16(118.f), FLOAT16(119.f), FLOAT16(120.f), + FLOAT16(121.f), FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), FLOAT16(126.f), + FLOAT16(127.f), FLOAT16(128.f), FLOAT16(129.f), + + FLOAT16(130.f), FLOAT16(131.f), FLOAT16(132.f), + FLOAT16(133.f), FLOAT16(134.f), FLOAT16(135.f) + }); + + set_values(input2, { + FLOAT16(0.0f), + FLOAT16(2.0f) + }); + + set_values(input3, { + FLOAT16(555.0f), FLOAT16(555.0f), FLOAT16(555.0f), + FLOAT16(555.0f), FLOAT16(555.0f), FLOAT16(555.0f), + + FLOAT16(666.0f), FLOAT16(666.0f), FLOAT16(666.0f), + FLOAT16(666.0f), FLOAT16(666.0f), FLOAT16(666.0f), + + FLOAT16(444.0f), FLOAT16(444.0f), FLOAT16(444.0f), + FLOAT16(444.0f), FLOAT16(444.0f), FLOAT16(444.0f), + + FLOAT16(555.0f), FLOAT16(555.0f), FLOAT16(555.0f), + FLOAT16(555.0f), FLOAT16(555.0f), FLOAT16(555.0f), + + FLOAT16(666.0f), FLOAT16(666.0f), FLOAT16(666.0f), + FLOAT16(666.0f), FLOAT16(666.0f), FLOAT16(666.0f), + + FLOAT16(444.0f), FLOAT16(444.0f), FLOAT16(444.0f), + FLOAT16(444.0f), FLOAT16(444.0f), FLOAT16(444.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + FLOAT16(888.0f), FLOAT16(888.0f), FLOAT16(888.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 555.f, 555.f, 555.f, + 555.f, 555.f, 555.f, + + 666.f, 666.f, 666.f, + 666.f, 666.f, 666.f, + + 444.f, 444.f, 444.f, + 444.f, 444.f, 444.f, + + 555.f, 555.f, 555.f, + 555.f, 555.f, 555.f, + + 666.f, 666.f, 666.f, + 666.f, 666.f, 666.f, + + 444.f, 444.f, 444.f, + 444.f, 444.f, 444.f, + + // 2 + 100.f, 101.f, 102.f, + 103.f, 104.f, 105.f, + + 106.f, 107.f, 108.f, + 109.f, 110.f, 111.f, + + 112.f, 113.f, 114.f, + 115.f, 116.f, 117.f, + + 118.f, 119.f, 120.f, + 121.f, 122.f, 123.f, + + 124.f, 125.f, 126.f, + 127.f, 128.f, 129.f, + + 130.f, 131.f, 132.f, + 133.f, 134.f, 135.f, + + // 3 + 777.f, 777.f, 777.f, + 777.f, 777.f, 777.f, + + 888.f, 888.f, 888.f, + 888.f, 888.f, 888.f, + + 999.f, 999.f, 999.f, + 999.f, 999.f, 999.f, + + 777.f, 777.f, 777.f, + 777.f, 777.f, 777.f, + + 888.f, 888.f, 888.f, + 888.f, 888.f, 888.f, + + 999.f, 999.f, 999.f, + 999.f, 999.f, 999.f + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d222222_i261111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + // memory order is bfxyzw + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 2, 2, 2 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 6, 1, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 1, 1, 1, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f),//1 + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f),//2 + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f),//3 + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + + FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f),//4 + + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f),//5 + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f),//6 + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f),//7 + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f),//8 + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(0.0f), + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(0.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + + 104.f, 105.f, + 106.f, 107.f,//1 + + 108.f, 109.f, + 110.f, 111.f, + + 112.f, 113.f, + 114.f, 115.f,//2 + + 116.f, 117.f, + 118.f, 119.f, + + 120.f, 121.f, + 122.f, 123.f,//3 + + 124.f, 125.f, + 126.f, 127.f, + + 128.f, 129.f, + 777.f, 131.f,//4 + + 132.f, 133.f, + 134.f, 135.f, + + 100.f, 101.f, + 102.f, 103.f,//5 + + 104.f, 105.f, + 106.f, 107.f, + + 108.f, 109.f, + 110.f, 111.f,//6 + + 112.f, 113.f, + 114.f, 115.f, + + 116.f, 117.f, + 118.f, 119.f,//7 + + 120.f, 121.f, + 122.f, 123.f, + + 124.f, 125.f, + 999.f, 127.f,//8 + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d222222_i251111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + // memory order is bfxyzw + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 2, 2, 2 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 5, 1, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 1, 1, 1, 1 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f),//1 + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f),//2 + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f),//3 + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + + FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f),//4 + + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f),//5 + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f),//6 + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f),//7 + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f),//8 + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + + 104.f, 105.f, + 106.f, 107.f,//1 + + 108.f, 109.f, + 110.f, 111.f, + + 112.f, 113.f, + 114.f, 115.f,//2 + + 116.f, 117.f, + 118.f, 119.f, + + 120.f, 121.f, + 122.f, 123.f,//3 + + 124.f, 125.f, + 126.f, 127.f, + + 128.f, 129.f, + 777.f, 777.f,//4 + + 132.f, 133.f, + 134.f, 135.f, + + 100.f, 101.f, + 102.f, 103.f,//5 + + 104.f, 105.f, + 106.f, 107.f, + + 108.f, 109.f, + 110.f, 111.f,//6 + + 112.f, 113.f, + 114.f, 115.f, + + 116.f, 117.f, + 118.f, 119.f,//7 + + 120.f, 121.f, + 122.f, 123.f, + + 124.f, 125.f, + 999.f, 999.f,//8 + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d222222_i241111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + // memory order is bfxyzw + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 2, 2, 2 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 4, 1, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 1, 1, 1, 2 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f),//1 + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f),//2 + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f),//3 + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + + FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f),//4 + + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f),//5 + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f),//6 + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f),//7 + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f),//8 + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + + 104.f, 105.f, + 106.f, 107.f,//1 + + 108.f, 109.f, + 110.f, 111.f, + + 112.f, 113.f, + 114.f, 115.f,//2 + + 116.f, 117.f, + 118.f, 119.f, + + 120.f, 121.f, + 122.f, 123.f,//3 + + 124.f, 125.f, + 126.f, 127.f, + + 777.f, 777.f, + 777.f, 777.f,//4 + + 132.f, 133.f, + 134.f, 135.f, + + 100.f, 101.f, + 102.f, 103.f,//5 + + 104.f, 105.f, + 106.f, 107.f, + + 108.f, 109.f, + 110.f, 111.f,//6 + + 112.f, 113.f, + 114.f, 115.f, + + 116.f, 117.f, + 118.f, 119.f,//7 + + 120.f, 121.f, + 122.f, 123.f, + + 999.f, 999.f, + 999.f, 999.f,//8 + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + + +TEST(scatter_nd_update_gpu_fp16, d222222_i231111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + // memory order is bfxyzw + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 2, 2, 2 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 3, 1, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 1, 1, 2, 2 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f),//1 + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f),//2 + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f),//3 + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + + FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f),//4 + + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f),//5 + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f),//6 + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f),//7 + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f),//8 + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), FLOAT16(1.0f), + FLOAT16(1.0f), FLOAT16(1.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + + 104.f, 105.f, + 106.f, 107.f,//1 + + 108.f, 109.f, + 110.f, 111.f, + + 112.f, 113.f, + 114.f, 115.f,//2 + + 116.f, 117.f, + 118.f, 119.f, + + 120.f, 121.f, + 122.f, 123.f,//3 + + 777.f, 777.f, + 777.f, 777.f, + + 777.f, 777.f, + 777.f, 777.f,//4 + + 132.f, 133.f, + 134.f, 135.f, + + 100.f, 101.f, + 102.f, 103.f,//5 + + 104.f, 105.f, + 106.f, 107.f, + + 108.f, 109.f, + 110.f, 111.f,//6 + + 112.f, 113.f, + 114.f, 115.f, + + 116.f, 117.f, + 118.f, 119.f,//7 + + 999.f, 999.f, + 999.f, 999.f, + + 999.f, 999.f, + 999.f, 999.f,//8 + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + + +TEST(scatter_nd_update_gpu_fp16, d222222_i221111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + // memory order is bfxyzw + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 2, 2, 2 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 1, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 1, 2, 2, 2 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f),//1 + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f),//2 + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f),//3 + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + + FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f),//4 + + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f),//5 + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f),//6 + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f),//7 + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f),//8 + }); + + set_values(input2, { + FLOAT16(0.0f), FLOAT16(1.0f), + FLOAT16(1.0f), FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 100.f, 101.f, + 102.f, 103.f, + + 104.f, 105.f, + 106.f, 107.f,//1 + + 108.f, 109.f, + 110.f, 111.f, + + 112.f, 113.f, + 114.f, 115.f,//2 + + 777.f, 777.f, + 777.f, 777.f, + + 777.f, 777.f, + 777.f, 777.f,//3 + + 777.f, 777.f, + 777.f, 777.f, + + 777.f, 777.f, + 777.f, 777.f,//4 + + 132.f, 133.f, + 134.f, 135.f, + + 100.f, 101.f, + 102.f, 103.f,//5 + + 104.f, 105.f, + 106.f, 107.f, + + 108.f, 109.f, + 110.f, 111.f,//6 + + 999.f, 999.f, + 999.f, 999.f, + + 999.f, 999.f, + 999.f, 999.f,//7 + + 999.f, 999.f, + 999.f, 999.f, + + 999.f, 999.f, + 999.f, 999.f,//8 + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} + +TEST(scatter_nd_update_gpu_fp16, d222222_i211111) { + // Dictionary : 6x6x6x1 + // Indexes : 2x1x1x1 + // Updates : 2x6x1x6 + // Output : 6x6x6x1 + // Input values in fp16 + // + + engine engine; + + // memory order is bfxyzw + auto input1 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 2, 2, 2 } }); // Dictionary + auto input2 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 1, 1, 1, 1, 1 } }); // Indexes + auto input3 = memory::allocate(engine, { data_types::f16, format::bfwzyx, { 2, 2, 2, 2, 2, 2 } }); // Updates + + + set_values(input1, { + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f), + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f),//1 + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f), + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f),//2 + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f), + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f),//3 + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f), + + FLOAT16(128.f), FLOAT16(129.f), + FLOAT16(130.f), FLOAT16(131.f),//4 + + FLOAT16(132.f), FLOAT16(133.f), + FLOAT16(134.f), FLOAT16(135.f), + + FLOAT16(100.f), FLOAT16(101.f), + FLOAT16(102.f), FLOAT16(103.f),//5 + + FLOAT16(104.f), FLOAT16(105.f), + FLOAT16(106.f), FLOAT16(107.f), + + FLOAT16(108.f), FLOAT16(109.f), + FLOAT16(110.f), FLOAT16(111.f),//6 + + FLOAT16(112.f), FLOAT16(113.f), + FLOAT16(114.f), FLOAT16(115.f), + + FLOAT16(116.f), FLOAT16(117.f), + FLOAT16(118.f), FLOAT16(119.f),//7 + + FLOAT16(120.f), FLOAT16(121.f), + FLOAT16(122.f), FLOAT16(123.f), + + FLOAT16(124.f), FLOAT16(125.f), + FLOAT16(126.f), FLOAT16(127.f),//8 + }); + + set_values(input2, { + FLOAT16(0.0f), + FLOAT16(1.0f) + }); + + set_values(input3, { + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(777.0f), FLOAT16(777.0f), + FLOAT16(777.0f), FLOAT16(777.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f), + + FLOAT16(999.0f), FLOAT16(999.0f), + FLOAT16(999.0f), FLOAT16(999.0f) + }); + + topology topology; + topology.add(input_layout("InputData", input1.get_layout())); + topology.add(input_layout("InputIndices", input2.get_layout())); + topology.add(input_layout("InputUpdates", input3.get_layout())); + topology.add( + scatter_nd_update("scatter_nd_update", "InputData", "InputIndices", "InputUpdates", 2) + ); + + network network(engine, topology); + + + network.set_input_data("InputData", input1); + network.set_input_data("InputIndices", input2); + network.set_input_data("InputUpdates", input3); + + auto outputs = network.execute(); + + + auto output = outputs.at("scatter_nd_update").get_memory(); + auto output_ptr = output.pointer(); + + std::vector expected_results = { + 777.f, 777.f, + 777.f, 777.f, + + 777.f, 777.f, + 777.f, 777.f,//1 + + 777.f, 777.f, + 777.f, 777.f, + + 777.f, 777.f, + 777.f, 777.f,//2 + + 777.f, 777.f, + 777.f, 777.f, + + 777.f, 777.f, + 777.f, 777.f,//3 + + 777.f, 777.f, + 777.f, 777.f, + + 777.f, 777.f, + 777.f, 777.f,//4 + + 999.f, 999.f, + 999.f, 999.f, + + 999.f, 999.f, + 999.f, 999.f,//5 + + 999.f, 999.f, + 999.f, 999.f, + + 999.f, 999.f, + 999.f, 999.f,//6 + + 999.f, 999.f, + 999.f, 999.f, + + 999.f, 999.f, + 999.f, 999.f,//7 + + 999.f, 999.f, + 999.f, 999.f, + + 999.f, 999.f, + 999.f, 999.f,//8 + }; + + for (size_t i = 0; i < expected_results.size(); ++i) { + EXPECT_EQ(expected_results[i], float16_to_float32(output_ptr[i])); + } +} diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_update_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_update_gpu_test.cpp index c5132ec5a765ee..01f2c7f02ef209 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_update_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/scatter_update_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/select_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/select_gpu_test.cpp index 24a21554f9baf5..fff6997834b640 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/select_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/select_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/shuffle_channels_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/shuffle_channels_test.cpp index f78548f4cf6869..a1bbf1987715b5 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/shuffle_channels_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/shuffle_channels_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/softmax_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/softmax_gpu_test.cpp index f85537b49b1f09..803ca0b3ae9c50 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/softmax_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/softmax_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include "api/memory.hpp" diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_batch_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_batch_gpu_test.cpp index d6e3d56a8c4e58..9dec5cf8c7393a 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_batch_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_batch_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_depth_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_depth_gpu_test.cpp index 5b6935bdb697d1..76611b0f60f1aa 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_depth_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/space_to_depth_gpu_test.cpp @@ -1,16 +1,6 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/spatial_concatenate_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/spatial_concatenate_gpu_test.cpp index 72a2fe19decdcf..27dcab87f8bff5 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/spatial_concatenate_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/spatial_concatenate_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/split_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/split_gpu_test.cpp index 2df547b6d49237..0d420abfefabcd 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/split_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/split_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/streams_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/streams_test.cpp index ee3743c1fef567..b679ac71a6be9e 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/streams_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/streams_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/strided_slice_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/strided_slice_gpu_test.cpp index 51a9a5c171401d..2634f03962a2c3 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/strided_slice_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/strided_slice_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/tensor_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/tensor_test.cpp index 8f6200b7cb4432..22abf3fbc818eb 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/tensor_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/tensor_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/tile_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/tile_gpu_test.cpp index 778c6397bd9841..b734a9e7b4f666 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/tile_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/tile_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/topology_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/topology_test.cpp index cd715a130aa24e..11e34e2f60158f 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/topology_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/topology_test.cpp @@ -1,3 +1,7 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + #include #include #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_cases/trim_to_outputs_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests/test_cases/trim_to_outputs_gpu_test.cpp index 99ca88126cb381..bb613fccd13955 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_cases/trim_to_outputs_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_cases/trim_to_outputs_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/conv_test_data.cpp b/inference-engine/thirdparty/clDNN/tests/test_utils/conv_test_data.cpp index d818557ca9bc72..067eb1f8ad85da 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/conv_test_data.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/conv_test_data.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/float16.h b/inference-engine/thirdparty/clDNN/tests/test_utils/float16.h index 607bda0d62ac87..2c9b1342c3acc0 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/float16.h +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/float16.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once #include "include/math_utils.h" diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.cpp b/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.cpp index 25605fe31ebee6..d8b2c73cc1145a 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "instrumentation.h" diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.h b/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.h index 9c46782ff9560b..8bb105356320c9 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.h +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/instrumentation.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/network_test.h b/inference-engine/thirdparty/clDNN/tests/test_utils/network_test.h index 0cef155a5356bf..e83e3b50335753 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/network_test.h +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/network_test.h @@ -1,16 +1,7 @@ -// Copyright (c) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. + #pragma once #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/random_gen.h b/inference-engine/thirdparty/clDNN/tests/test_utils/random_gen.h index c7209f0d4733ad..8352b3c757d2d1 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/random_gen.h +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/random_gen.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include #include diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.cpp b/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.cpp index 51cbb131c16c7d..86f0cfd7805c21 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.cpp +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.h b/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.h index 0757409b967106..436df5abb1e34e 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.h +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/test_utils.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2016-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ //todo move to another folder @@ -334,15 +322,15 @@ inline void check_exception_massage(const cldnn::engine& engine, cldnn::topology // Default values: // relative_error_threshold = 1e-3 // absolute_error_threshold = 1e-6 -// absoulte_error_limit = 1e-4 +// absolute_error_limit = 1e-4 inline bool are_equal( const float ref_item, const float item, const float relative_error_threshold = 1e-3, const float absolute_error_threshold = 1e-6, - const float absoulte_error_limit = 1e-4) { + const float absolute_error_limit = 1e-4) { - if( fabs(item) < absoulte_error_limit) { + if( fabs(item) < absolute_error_limit) { if(fabs( item - ref_item ) > absolute_error_threshold) { std::cout << "Ref val: " << ref_item << "\tSecond val: " << item << std::endl; return false; diff --git a/inference-engine/thirdparty/clDNN/tests/test_utils/uniform_quantized_real_distribution.hpp b/inference-engine/thirdparty/clDNN/tests/test_utils/uniform_quantized_real_distribution.hpp index 953ea69d50bf0f..ea817fae29e242 100644 --- a/inference-engine/thirdparty/clDNN/tests/test_utils/uniform_quantized_real_distribution.hpp +++ b/inference-engine/thirdparty/clDNN/tests/test_utils/uniform_quantized_real_distribution.hpp @@ -1,16 +1,6 @@ -// Copyright (c) 2018 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. #pragma once diff --git a/inference-engine/thirdparty/clDNN/tests_core_internal/CMakeLists.txt b/inference-engine/thirdparty/clDNN/tests_core_internal/CMakeLists.txt index f4fb9fd9a70f1f..2d270f7c79db04 100644 --- a/inference-engine/thirdparty/clDNN/tests_core_internal/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/tests_core_internal/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (c) 2019 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# # ========================================= Name / Output settings ===================================== diff --git a/inference-engine/thirdparty/clDNN/tests_core_internal/main.cpp b/inference-engine/thirdparty/clDNN/tests_core_internal/main.cpp index 02fbc7da6acd61..7e583e9b068903 100644 --- a/inference-engine/thirdparty/clDNN/tests_core_internal/main.cpp +++ b/inference-engine/thirdparty/clDNN/tests_core_internal/main.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include "gtest/gtest.h" diff --git a/inference-engine/thirdparty/clDNN/tests_core_internal/program_impl_wrapper.h b/inference-engine/thirdparty/clDNN/tests_core_internal/program_impl_wrapper.h index a9a8fd22301235..855f3f050db4d9 100644 --- a/inference-engine/thirdparty/clDNN/tests_core_internal/program_impl_wrapper.h +++ b/inference-engine/thirdparty/clDNN/tests_core_internal/program_impl_wrapper.h @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ namespace cldnn { diff --git a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/graph_manipulation_gpu_test.cpp b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/graph_manipulation_gpu_test.cpp index 7b2fe96710d7f9..81e4665287533c 100644 --- a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/graph_manipulation_gpu_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/graph_manipulation_gpu_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include diff --git a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/prepare_conv_eltw_fusing.cpp b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/prepare_conv_eltw_fusing.cpp index ff3d07427bc863..1e6037fd98a773 100644 --- a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/prepare_conv_eltw_fusing.cpp +++ b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/prepare_conv_eltw_fusing.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include diff --git a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/reorder_inputs_test.cpp b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/reorder_inputs_test.cpp index cf04baa20336a6..fb21acf2396ef4 100644 --- a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/reorder_inputs_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/reorder_inputs_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include diff --git a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/usm_memory_test.cpp b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/usm_memory_test.cpp index 0404dbd1bb46ac..d1b35dc774c91b 100644 --- a/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/usm_memory_test.cpp +++ b/inference-engine/thirdparty/clDNN/tests_core_internal/test_cases/usm_memory_test.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include diff --git a/inference-engine/thirdparty/clDNN/tutorial/CMakeLists.txt b/inference-engine/thirdparty/clDNN/tutorial/CMakeLists.txt index 26a93927f755a6..6b481a9e5f34fb 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/tutorial/CMakeLists.txt @@ -1,17 +1,6 @@ -# Copyright (c) 2017 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# # ========================================= Name / Output settings ===================================== diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_1.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_1.cpp index 4a47f33a6e854d..105f6b068b0bc0 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_1.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_1.cpp @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #include <../api/engine.hpp> #include <../api/memory.hpp> #include <../api/tensor.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_2.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_2.cpp index 3b729d0f08c0e5..e37d2b1bd50993 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_2.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_2.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include <../api/engine.hpp> #include <../api/input_layout.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_3.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_3.cpp index b2228f2444429e..b9cd10cf4d265d 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_3.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_3.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include <../api/engine.hpp> #include <../api/input_layout.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_4.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_4.cpp index accea67b5cc38e..3f78b2ece1c4a5 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_4.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_4.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include <../api/engine.hpp> #include <../api/input_layout.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_5.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_5.cpp index 655c17c02780d5..0f13380c4f1ea1 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_5.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_5.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include <../api/engine.hpp> #include <../api/input_layout.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_6.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_6.cpp index fb972d88baff75..b4f21abe1e7ccc 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_6.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_6.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include <../api/engine.hpp> #include <../api/input_layout.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_7.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_7.cpp index c2f683464e4fea..d6ecd2d684af54 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_7.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_7.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include <../api/engine.hpp> #include <../api/input_layout.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/chapter_8.cpp b/inference-engine/thirdparty/clDNN/tutorial/chapter_8.cpp index a5e782e2bb2b80..1f152f92d9c689 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/chapter_8.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/chapter_8.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ #include <../api/engine.hpp> #include <../api/input_layout.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/example_cldnn.cpp b/inference-engine/thirdparty/clDNN/tutorial/example_cldnn.cpp index 4ed03b4191d6ef..c1919ea2706ef4 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/example_cldnn.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/example_cldnn.cpp @@ -1,3 +1,7 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + #include #include #include diff --git a/inference-engine/thirdparty/clDNN/tutorial/helper_functions.h b/inference-engine/thirdparty/clDNN/tutorial/helper_functions.h index 2244b92da371a4..e4fb4b0f738240 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/helper_functions.h +++ b/inference-engine/thirdparty/clDNN/tutorial/helper_functions.h @@ -1,18 +1,7 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ + #include #include <../api/memory.hpp> diff --git a/inference-engine/thirdparty/clDNN/tutorial/main.cpp b/inference-engine/thirdparty/clDNN/tutorial/main.cpp index 10b5b7f8e86936..5290ddac882d2f 100644 --- a/inference-engine/thirdparty/clDNN/tutorial/main.cpp +++ b/inference-engine/thirdparty/clDNN/tutorial/main.cpp @@ -1,18 +1,6 @@ -/* -// Copyright (c) 2017 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ /*! @page tutorial clDNN Tutorial * @section intro Introduction diff --git a/inference-engine/thirdparty/clDNN/utils/build/cmake/modules/IntelHelpers.cmake b/inference-engine/thirdparty/clDNN/utils/build/cmake/modules/IntelHelpers.cmake index 2d395f5181f508..7416955b4a27aa 100644 --- a/inference-engine/thirdparty/clDNN/utils/build/cmake/modules/IntelHelpers.cmake +++ b/inference-engine/thirdparty/clDNN/utils/build/cmake/modules/IntelHelpers.cmake @@ -1,18 +1,6 @@ -# Copyright (c) 2016 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. - - #cmake_policy(PUSH) # Not needed... CMake manages policy scope. cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR) diff --git a/inference-engine/thirdparty/mkl-dnn b/inference-engine/thirdparty/mkl-dnn index e8879c1c30daaf..fdf537051e8d30 160000 --- a/inference-engine/thirdparty/mkl-dnn +++ b/inference-engine/thirdparty/mkl-dnn @@ -1 +1 @@ -Subproject commit e8879c1c30daaf85a9aab6323a167138b59653fa +Subproject commit fdf537051e8d30adcf56f0a56afa3cc3abddc7a4 diff --git a/inference-engine/thirdparty/movidius/CMakeLists.txt b/inference-engine/thirdparty/movidius/CMakeLists.txt index e18cab65e15724..b9f7b066d1b13b 100644 --- a/inference-engine/thirdparty/movidius/CMakeLists.txt +++ b/inference-engine/thirdparty/movidius/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/thirdparty/movidius/XLink/CMakeLists.txt b/inference-engine/thirdparty/movidius/XLink/CMakeLists.txt index 79a627302079f5..6e7f904227afec 100644 --- a/inference-engine/thirdparty/movidius/XLink/CMakeLists.txt +++ b/inference-engine/thirdparty/movidius/XLink/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/thirdparty/movidius/XLink/XLink.cmake b/inference-engine/thirdparty/movidius/XLink/XLink.cmake index edba4ba1ee52bd..54b0a7f3ae8777 100644 --- a/inference-engine/thirdparty/movidius/XLink/XLink.cmake +++ b/inference-engine/thirdparty/movidius/XLink/XLink.cmake @@ -1,3 +1,7 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + if(EXISTS "$ENV{MV_COMMON_BASE}") set(XLINK_ROOT_DIR "$ENV{MV_COMMON_BASE}/components/XLink") else() diff --git a/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.c b/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.c index 07a2a99e86d445..55e3050d54f650 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.h b/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.h index 435e25157fff98..c5e340b8b08e92 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/MacOS/pthread_semaphore.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/PlatformData.c b/inference-engine/thirdparty/movidius/XLink/pc/PlatformData.c index 5c16d56054fa7f..95fdc13d957c22 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/PlatformData.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/PlatformData.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceControl.c b/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceControl.c index 6481839e0a999d..0ab4dbdd3841f6 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceControl.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceControl.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceSearch.c b/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceSearch.c index ce3c7cd15da449..47369eb68562b8 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceSearch.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/PlatformDeviceSearch.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_pthread.h b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_pthread.h index b24c0cdb9d9ee3..08d5afc630eca2 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_pthread.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_pthread.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_semaphore.h b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_semaphore.h index 344f35639b43fa..b75db17e7fb214 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_semaphore.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_semaphore.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_synchapi.h b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_synchapi.h index e773dbad3e26b4..a4d8c88318eb78 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_synchapi.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_synchapi.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_time.h b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_time.h index 1cd9e2d83b24b8..46fb04708ef14b 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_time.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_time.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_usb.h b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_usb.h index 206cc1123bd173..cf6448dd55013f 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_usb.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/include/win_usb.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_pthread.c b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_pthread.c index b45a920705cb81..bc0fd04f4040a8 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_pthread.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_pthread.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_semaphore.c b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_semaphore.c index 22bee0ca68da5d..1d92aa94c1df68 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_semaphore.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_semaphore.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_synchapi.c b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_synchapi.c index 974b36f1a561e9..adcf33195099bc 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_synchapi.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_synchapi.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_time.c b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_time.c index 8b87e96d26eb73..80d2ed2ac536e5 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_time.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_time.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_usb.c b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_usb.c index 144c390a9f379a..ebe704a87b06ae 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_usb.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/Win/src/win_usb.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.c b/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.c index e547829c7711d1..2ef75094a693cb 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.h b/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.h index 172bf26c3e5dc7..40761a67c20099 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/protocols/pcie_host.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.c b/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.c index 3ef9ca2cb96916..fb94cac7f1ccd9 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.c +++ b/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.h b/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.h index 8c9cb8d1b5887e..2b5c86c76b8a63 100644 --- a/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.h +++ b/inference-engine/thirdparty/movidius/XLink/pc/protocols/usb_boot.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLink.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLink.h index ac2762d9cd9d83..0cc5089f787627 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLink.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLink.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcher.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcher.h index ec403bf368dfb5..c574f50bbf3567 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcher.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcher.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcherImpl.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcherImpl.h index e8cc2c4a42b9c8..6172909e2a4b82 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcherImpl.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkDispatcherImpl.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkErrorUtils.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkErrorUtils.h index ea28ed3b35bf84..6d5a4e81aae760 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkErrorUtils.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkErrorUtils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkLog.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkLog.h index 1bdebb437a3b12..f9da0e0a4a4204 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkLog.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkLog.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkMacros.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkMacros.h index 920ad2c8daa6a1..03983ff8b553ba 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkMacros.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkMacros.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatform.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatform.h index d8bb336bc5dcbd..7df09b4032282f 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatform.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatform.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatformErrorUtils.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatformErrorUtils.h index cbf7a96c284bd8..124da895aa223a 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatformErrorUtils.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPlatformErrorUtils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateDefines.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateDefines.h index ffeea35e71ea5e..273d3b1a43d5c9 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateDefines.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateDefines.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateFields.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateFields.h index d6aec0abc54e18..0bcc6bd80c2eed 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateFields.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPrivateFields.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPublicDefines.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPublicDefines.h index 71690d6826a198..33fb8c7f3e84a1 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPublicDefines.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkPublicDefines.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkSemaphore.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkSemaphore.h index 8bf85922757ae1..6421798d17ea2b 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkSemaphore.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkSemaphore.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStream.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStream.h index 88fac4401a16ed..9cc68d4e08b02e 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStream.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStream.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStringUtils.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStringUtils.h index 357d6c777a99fb..c085debf0e2493 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStringUtils.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkStringUtils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkVersion.h b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkVersion.h index 4891023ca70b93..c97ea713ca7a4f 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkVersion.h +++ b/inference-engine/thirdparty/movidius/XLink/shared/include/XLinkVersion.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkData.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkData.c index 442ed4e317e546..1cd82c1d3b01ca 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkData.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkData.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDeprecated.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDeprecated.c index ab5f268d317021..97d43e2728bce6 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDeprecated.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDeprecated.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDevice.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDevice.c index 533aaf7407a52b..807020e4c34dd3 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDevice.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDevice.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcher.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcher.c index 8ef396f74ca027..357fa3e5be7e0f 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcher.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcher.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcherImpl.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcherImpl.c index e18a5e7c57f19a..3c36073c6c2da3 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcherImpl.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkDispatcherImpl.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateDefines.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateDefines.c index be4e6ea46352d5..2459ee55f3df78 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateDefines.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateDefines.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateFields.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateFields.c index 46a97a253b2d85..4512de69db89ae 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateFields.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkPrivateFields.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkSemaphore.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkSemaphore.c index e2fa8a4d7b06f8..aacb399633b5fb 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkSemaphore.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkSemaphore.c @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStream.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStream.c index 6c5945ce619b79..7f83c162e6404f 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStream.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStream.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStringUtils.c b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStringUtils.c index 4a47dd03717290..ca36bcc6828198 100644 --- a/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStringUtils.c +++ b/inference-engine/thirdparty/movidius/XLink/shared/src/XLinkStringUtils.c @@ -1,20 +1,6 @@ -/* -* Copyright 2017-2019 Intel Corporation. -* The source code, information and material ("Material") contained herein is -* owned by Intel Corporation or its suppliers or licensors, and title to such -* Material remains with Intel Corporation or its suppliers or licensors. -* The Material contains proprietary information of Intel or its suppliers and -* licensors. The Material is protected by worldwide copyright laws and treaty -* provisions. -* No part of the Material may be used, copied, reproduced, modified, published, -* uploaded, posted, transmitted, distributed or disclosed in any way without -* Intel's prior express written permission. No license under any patent, -* copyright or other intellectual property rights in the Material is granted to -* or conferred upon you, either expressly, by implication, inducement, estoppel -* or otherwise. -* Any license under such intellectual property rights must be express and -* approved by Intel in writing. -*/ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// #include "XLinkStringUtils.h" diff --git a/inference-engine/thirdparty/movidius/mvnc/CMakeLists.txt b/inference-engine/thirdparty/movidius/mvnc/CMakeLists.txt index 02352ca1fd4d6b..f0e88da5c0253d 100644 --- a/inference-engine/thirdparty/movidius/mvnc/CMakeLists.txt +++ b/inference-engine/thirdparty/movidius/mvnc/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/thirdparty/movidius/mvnc/include/mvnc.h b/inference-engine/thirdparty/movidius/mvnc/include/mvnc.h index 02bef56c510a47..b4585e14aa3c85 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/mvnc.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/mvnc.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -121,6 +121,7 @@ typedef enum { NC_RO_DEVICE_PROTOCOL = 2018, // returns device protocol (USB, PCIe) NC_RW_DEVICE_POWER_CONFIG = 2100, // writes config for the power manager to device NC_RW_DEVICE_POWER_CONFIG_RESET = 2101, // resets power manager config on device + NC_RW_ENABLE_ASYNC_DMA = 2102 // enable/disable asynchronous DMA on device } ncDeviceOption_t; typedef enum { diff --git a/inference-engine/thirdparty/movidius/mvnc/include/mvnc_data.h b/inference-engine/thirdparty/movidius/mvnc/include/mvnc_data.h index 9e73b0b27b0e37..a010e91289357a 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/mvnc_data.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/mvnc_data.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/include/mvnc_ext.h b/inference-engine/thirdparty/movidius/mvnc/include/mvnc_ext.h index fc7e7fe97e1d8d..66155be76f6686 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/mvnc_ext.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/mvnc_ext.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/include/mvnc_tool.h b/inference-engine/thirdparty/movidius/mvnc/include/mvnc_tool.h index ac0f245c8f17fa..f2a2487401db73 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/mvnc_tool.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/mvnc_tool.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/include/ncCommPrivate.h b/inference-engine/thirdparty/movidius/mvnc/include/ncCommPrivate.h index 729a292d022a27..ae79af7415963c 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/ncCommPrivate.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/ncCommPrivate.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -113,7 +113,8 @@ typedef enum { DEVICE_SET_STDIO_REDIRECT_XLINK = 5, DEVICE_SET_POWER_CONFIG = 6, DEVICE_RESET_POWER_CONFIG = 7, - DEVICE_COMMAND_LAST = 8 + DEVICE_ENABLE_ASYNC_DMA = 8, + DEVICE_COMMAND_LAST = 9 } deviceCommandType_t; typedef struct { diff --git a/inference-engine/thirdparty/movidius/mvnc/include/ncPrivateTypes.h b/inference-engine/thirdparty/movidius/mvnc/include/ncPrivateTypes.h index 2e846b9ab51c29..99b5b5a96d9111 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/ncPrivateTypes.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/ncPrivateTypes.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdog.h b/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdog.h index 09c3d7dde80fb1..2d29bebc8b04ce 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdog.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdog.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdogPrivate.hpp b/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdogPrivate.hpp index 99b516fc477968..4b9ecb2ce2fcf8 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdogPrivate.hpp +++ b/inference-engine/thirdparty/movidius/mvnc/include/watchdog/watchdogPrivate.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/include/watchdog/xlink_device.h b/inference-engine/thirdparty/movidius/mvnc/include/watchdog/xlink_device.h index bff0b59b4a083b..230374a5ef8179 100644 --- a/inference-engine/thirdparty/movidius/mvnc/include/watchdog/xlink_device.h +++ b/inference-engine/thirdparty/movidius/mvnc/include/watchdog/xlink_device.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/src/mvnc_api.c b/inference-engine/thirdparty/movidius/mvnc/src/mvnc_api.c index b7a9f86fc0564c..58f58b212d56d9 100644 --- a/inference-engine/thirdparty/movidius/mvnc/src/mvnc_api.c +++ b/inference-engine/thirdparty/movidius/mvnc/src/mvnc_api.c @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -2719,6 +2719,24 @@ static ncStatus_t setDevicePowerConfig(struct _devicePrivate_t *d, return NC_OK; } +static ncStatus_t enableAsyncDMA(struct _devicePrivate_t *d, + ncDeviceOption_t option, + const void *data, unsigned int dataLength){ + XLinkError_t rc = X_LINK_SUCCESS; + deviceCommand_t config; + + config.type = DEVICE_ENABLE_ASYNC_DMA; + config.arg = *(uint32_t*)data; + rc = XLinkWriteData(d->device_mon_stream_id, (const uint8_t *)&config, sizeof(config)); + if (rc != X_LINK_SUCCESS) + { + mvLog(MVLOG_ERROR, "Failed to write data, rc: %s", XLinkErrorToStr(rc)); + return parseXLinkError(rc); + } + + return NC_OK; +} + ncStatus_t ncDeviceSetOption(struct ncDeviceHandle_t *deviceHandle, ncDeviceOption_t option, const void *data, unsigned int dataLength){ @@ -2768,6 +2786,11 @@ ncStatus_t ncDeviceSetOption(struct ncDeviceHandle_t *deviceHandle, rc = setDevicePowerConfig(d, option, data, dataLength); break; } + case NC_RW_ENABLE_ASYNC_DMA: + { + rc = enableAsyncDMA(d, option, data, dataLength); + break; + } default: rc = NC_INVALID_PARAMETERS; mvLog(MVLOG_ERROR, "There is no such option"); diff --git a/inference-engine/thirdparty/movidius/mvnc/src/mvnc_data.c b/inference-engine/thirdparty/movidius/mvnc/src/mvnc_data.c index 4d7917dddcff8e..ddebe959e4adac 100644 --- a/inference-engine/thirdparty/movidius/mvnc/src/mvnc_data.c +++ b/inference-engine/thirdparty/movidius/mvnc/src/mvnc_data.c @@ -1,20 +1,6 @@ -/* -* Copyright 2017-2019 Intel Corporation. -* The source code, information and material ("Material") contained herein is -* owned by Intel Corporation or its suppliers or licensors, and title to such -* Material remains with Intel Corporation or its suppliers or licensors. -* The Material contains proprietary information of Intel or its suppliers and -* licensors. The Material is protected by worldwide copyright laws and treaty -* provisions. -* No part of the Material may be used, copied, reproduced, modified, published, -* uploaded, posted, transmitted, distributed or disclosed in any way without -* Intel's prior express written permission. No license under any patent, -* copyright or other intellectual property rights in the Material is granted to -* or conferred upon you, either expressly, by implication, inducement, estoppel -* or otherwise. -* Any license under such intellectual property rights must be express and -* approved by Intel in writing. -*/ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// #include "mvnc_data.h" #include "mvnc_tool.h" diff --git a/inference-engine/thirdparty/movidius/mvnc/src/watchdog/watchdog.cpp b/inference-engine/thirdparty/movidius/mvnc/src/watchdog/watchdog.cpp index 3834ece1fc0858..73b82f7bfc42e8 100644 --- a/inference-engine/thirdparty/movidius/mvnc/src/watchdog/watchdog.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/src/watchdog/watchdog.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/src/watchdog/xlink_device.cpp b/inference-engine/thirdparty/movidius/mvnc/src/watchdog/xlink_device.cpp index 774686b749a23c..747d0dddabfa58 100644 --- a/inference-engine/thirdparty/movidius/mvnc/src/watchdog/xlink_device.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/src/watchdog/xlink_device.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/CMakeLists.txt b/inference-engine/thirdparty/movidius/mvnc/tests/CMakeLists.txt index dafab99eb802c4..518aea6d0ef79d 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/CMakeLists.txt +++ b/inference-engine/thirdparty/movidius/mvnc/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.cpp index 3fd0f9f3465475..f21da7a63addb9 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.h b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.h index 9ba0c4088cab82..ba513c23dccca4 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.h +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_common_test_cases.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.cpp index adfef69bb77041..6aec9db8b3fc14 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.h b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.h index d00ef1e2018fbe..7243553c79b453 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.h +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_no_boot_test_cases.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.cpp index fe108597210dd2..30ca21a699410d 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.h b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.h index e536ecc7973842..d7ee839c1ca6fd 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.h +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_stress_test_cases.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.cpp index 5a105980454fc2..3f288b12412474 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.h b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.h index 73ef6a220a4ad2..3714e0b98e9f71 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.h +++ b/inference-engine/thirdparty/movidius/mvnc/tests/cases/mvnc_usb_test_cases.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.cpp index ef5c417c3cbb6a..57c39e9adab345 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.h b/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.h index 07c5283150c957..c6c8d8ae715248 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.h +++ b/inference-engine/thirdparty/movidius/mvnc/tests/helpers/mvnc_test_helper.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_no_boot_tests.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_no_boot_tests.cpp index 411844306504d8..4293da658a8daf 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_no_boot_tests.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_no_boot_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_stress_tests.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_stress_tests.cpp index 1827dece606cf2..636fc6f6094274 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_stress_tests.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_stress_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_common.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_common.cpp index 7e87e0ff7c80c2..02eda4c3dcaed7 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_common.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_common.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_usb.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_usb.cpp index 5ec4600ceeec9b..65a2a09fb233bc 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_usb.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_tests_usb.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_utils_tests.cpp b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_utils_tests.cpp index 4910c1e4bebd68..98600eaf8195e9 100644 --- a/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_utils_tests.cpp +++ b/inference-engine/thirdparty/movidius/mvnc/tests/mvnc_utils_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/tests/CMakeLists.txt b/inference-engine/thirdparty/movidius/tests/CMakeLists.txt index ba621695e8ffa8..6e91b6f746d064 100644 --- a/inference-engine/thirdparty/movidius/tests/CMakeLists.txt +++ b/inference-engine/thirdparty/movidius/tests/CMakeLists.txt @@ -1 +1,5 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + add_subdirectory(XLink) diff --git a/inference-engine/thirdparty/movidius/tests/XLink/CMakeLists.txt b/inference-engine/thirdparty/movidius/tests/XLink/CMakeLists.txt index 69cfcedd1fd296..f65f813b4cd4e3 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/CMakeLists.txt +++ b/inference-engine/thirdparty/movidius/tests/XLink/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/inference-engine/thirdparty/movidius/tests/XLink/XLink_common_tests.cpp b/inference-engine/thirdparty/movidius/tests/XLink/XLink_common_tests.cpp index 98045b7dfc6e3e..81dc53ec4d26e4 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/XLink_common_tests.cpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/XLink_common_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/tests/XLink/XLink_deprecated_tests.cpp b/inference-engine/thirdparty/movidius/tests/XLink/XLink_deprecated_tests.cpp index 63f5616172cb25..2d9685b2214414 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/XLink_deprecated_tests.cpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/XLink_deprecated_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/tests/XLink/XLink_specific_tests.cpp b/inference-engine/thirdparty/movidius/tests/XLink/XLink_specific_tests.cpp index 89ac8de02e6811..c8dd2e82286ee5 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/XLink_specific_tests.cpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/XLink_specific_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.cpp b/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.cpp index 9aaefa56185b64..d5fd7ad91cda93 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.cpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.cpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #include "XLink_common_cases.hpp" #include diff --git a/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.hpp b/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.hpp index ee45709615ea00..a973fb875167c6 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.hpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_common_cases.hpp @@ -1,8 +1,7 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // - #pragma once #include "XLink.h" diff --git a/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_specific_cases.hpp b/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_specific_cases.hpp index 4638dd3929707a..1a2aa76cdfda52 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_specific_cases.hpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/cases/XLink_specific_cases.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.cpp b/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.cpp index f9e14c3ea9d8c3..b0db807701a657 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.cpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.hpp b/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.hpp index 238b9d897198e8..f1f282628bffcc 100644 --- a/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.hpp +++ b/inference-engine/thirdparty/movidius/tests/XLink/helpers/XLink_tests_helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/thirdparty/ocv/opencv_hal_intrin.hpp b/inference-engine/thirdparty/ocv/opencv_hal_intrin.hpp index c5b843f6c32817..a10ed62f79c0dc 100644 --- a/inference-engine/thirdparty/ocv/opencv_hal_intrin.hpp +++ b/inference-engine/thirdparty/ocv/opencv_hal_intrin.hpp @@ -188,6 +188,16 @@ inline unsigned int trailingZeros32(unsigned int value) { // access from within opencv code more accessible namespace cv { +#ifndef CV_ALWAYS_INLINE +#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +#define CV_ALWAYS_INLINE inline __attribute__((always_inline)) +#elif defined(_MSC_VER) +#define CV_ALWAYS_INLINE __forceinline +#else +#define CV_ALWAYS_INLINE inline +#endif +#endif + namespace hal { enum StoreMode diff --git a/inference-engine/thirdparty/ocv/opencv_hal_neon.hpp b/inference-engine/thirdparty/ocv/opencv_hal_neon.hpp index 3ee2d3fd3d9cc6..80175b96a95428 100644 --- a/inference-engine/thirdparty/ocv/opencv_hal_neon.hpp +++ b/inference-engine/thirdparty/ocv/opencv_hal_neon.hpp @@ -46,6 +46,7 @@ #define OPENCV_HAL_INTRIN_NEON_HPP #include +#include namespace cv @@ -2323,7 +2324,267 @@ inline v_uint16x8 v_mulhi(const v_uint16x8& a, uint16_t b) { return result; } +CV_ALWAYS_INLINE v_int16x8 v_mulhrs(const v_int16x8& a, const v_int16x8& b) +{ + // Multiply + int32x4_t mul_lo = vmull_s16(vget_low_s16(a.val), + vget_low_s16(b.val)); + int32x4_t mul_hi = vmull_s16(vget_high_s16(a.val), + vget_high_s16(b.val)); + + // Rounding narrowing shift right + // narrow = (int16_t)((mul + 16384) >> 15); + int16x4_t narrow_lo = vrshrn_n_s32(mul_lo, 15); + int16x4_t narrow_hi = vrshrn_n_s32(mul_hi, 15); + + // Join together + return v_int16x8(vcombine_s16(narrow_lo, narrow_hi)); +} + +CV_ALWAYS_INLINE v_int16x8 v_mulhrs(const v_int16x8& a, const short b) +{ + return v_mulhrs(a, v_setall_s16(b)); +} + +CV_ALWAYS_INLINE void v_gather_channel(v_uint8x16& vec, const uint8_t tmp[], + const short* index, const int chanNum, + const int c, const int shift) +{ + int32x4_t result = {}; + result = vsetq_lane_s32(*reinterpret_cast(&tmp[4 * (chanNum * (*(index + shift + 0)) + c)]), result, 0); + result = vsetq_lane_s32(*reinterpret_cast(&tmp[4 * (chanNum * (*(index + shift + 1)) + c)]), result, 1); + result = vsetq_lane_s32(*reinterpret_cast(&tmp[4 * (chanNum * (*(index + shift + 0) + 1) + c)]), result, 2); + result = vsetq_lane_s32(*reinterpret_cast(&tmp[4 * (chanNum * (*(index + shift + 1) + 1) + c)]), result, 3); + + vec.val = vreinterpretq_u8_s32(result); +} + +template +CV_ALWAYS_INLINE void v_gather_channel(v_uint8x16& vec, const uchar src[], const int channel) +{ + uint8x16_t result = {}; + result = vsetq_lane_u8(*reinterpret_cast(src + channel), result, 0); + result = vsetq_lane_u8(*reinterpret_cast(src + chanNum + channel), result, 1); + result = vsetq_lane_u8(*reinterpret_cast(src + 2 * chanNum + channel), result, 2); + result = vsetq_lane_u8(*reinterpret_cast(src + 3 * chanNum + channel), result, 3); + result = vsetq_lane_u8(*reinterpret_cast(src + 4 * chanNum + channel), result, 4); + result = vsetq_lane_u8(*reinterpret_cast(src + 5 * chanNum + channel), result, 5); + result = vsetq_lane_u8(*reinterpret_cast(src + 6 * chanNum + channel), result, 6); + result = vsetq_lane_u8(*reinterpret_cast(src + 7 * chanNum + channel), result, 7); + result = vsetq_lane_u8(*reinterpret_cast(src + 8 * chanNum + channel), result, 8); + result = vsetq_lane_u8(*reinterpret_cast(src + 9 * chanNum + channel), result, 9); + result = vsetq_lane_u8(*reinterpret_cast(src + 10 * chanNum + channel), result, 10); + result = vsetq_lane_u8(*reinterpret_cast(src + 11 * chanNum + channel), result, 11); + result = vsetq_lane_u8(*reinterpret_cast(src + 12 * chanNum + channel), result, 12); + result = vsetq_lane_u8(*reinterpret_cast(src + 13 * chanNum + channel), result, 13); + result = vsetq_lane_u8(*reinterpret_cast(src + 14 * chanNum + channel), result, 14); + result = vsetq_lane_u8(*reinterpret_cast(src + 15 * chanNum + channel), result, 15); + + vec.val = result; +} + +namespace { +template +CV_ALWAYS_INLINE void v_gather_channel(v_int16x8& vec, const uchar src[], const short* index, const int channel, const int pos) +{ + int16x8_t result = {}; + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*index + pos) + channel]), result, 0); + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*(index + 1) + pos) + channel]), result, 1); + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*(index + 2) + pos) + channel]), result, 2); + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*(index + 3) + pos) + channel]), result, 3); + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*(index + 4) + pos) + channel]), result, 4); + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*(index + 5) + pos) + channel]), result, 5); + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*(index + 6) + pos) + channel]), result, 6); + result = vsetq_lane_s16(*reinterpret_cast(&src[chanNum * (*(index + 7) + pos) + channel]), result, 7); + + vec.val = result; +} +} // namespace + +CV_ALWAYS_INLINE v_uint8x16 v_gather_pairs(const uchar src[], const short* mapsx) +{ + int16x8_t result = {}; + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 0)]), result, 0); + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 1)]), result, 1); + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 2)]), result, 2); + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 3)]), result, 3); + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 4)]), result, 4); + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 5)]), result, 5); + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 6)]), result, 6); + result = vsetq_lane_s16(*reinterpret_cast(&src[*(mapsx + 7)]), result, 7); + return v_uint8x16(vreinterpretq_u8_s16(result)); +} + +CV_ALWAYS_INLINE v_uint8x16 v_gather_lines(const uchar src[], const short* mapsx) +{ + int32x4_t result = {}; + result = vsetq_lane_s32(*reinterpret_cast(&src[4 * (*(mapsx + 0))]), result, 0); + result = vsetq_lane_s32(*reinterpret_cast(&src[4 * (*(mapsx + 1))]), result, 1); + result = vsetq_lane_s32(*reinterpret_cast(&src[4 * (*(mapsx + 0) + 1)]), result, 2); + result = vsetq_lane_s32(*reinterpret_cast(&src[4 * (*(mapsx + 1) + 1)]), result, 3); + + return v_uint8x16(vreinterpretq_u8_s32(result)); +} + +template +CV_ALWAYS_INLINE v_uint8x16 v_blend(const v_uint8x16& a, const v_uint8x16& b) +{ + const uint16_t _mask[8] = { ((imm) & (1 << 0)) ? 0xFFFF : 0x0000, + ((imm) & (1 << 1)) ? 0xFFFF : 0x0000, + ((imm) & (1 << 2)) ? 0xFFFF : 0x0000, + ((imm) & (1 << 3)) ? 0xFFFF : 0x0000, + ((imm) & (1 << 4)) ? 0xFFFF : 0x0000, + ((imm) & (1 << 5)) ? 0xFFFF : 0x0000, + ((imm) & (1 << 6)) ? 0xFFFF : 0x0000, + ((imm) & (1 << 7)) ? 0xFFFF : 0x0000 }; + uint16x8_t _mask_vec = vld1q_u16(_mask); + uint16x8_t _a = vreinterpretq_u16_u8(a.val); + uint16x8_t _b = vreinterpretq_u16_u8(b.val); + return v_uint8x16(vreinterpretq_u8_u16(vbslq_u16(_mask_vec, _b, _a))); +} + +CV_ALWAYS_INLINE v_uint8x16 v_shuffle(const v_uint8x16& a, const v_uint8x16& mask) +{ + + uint8x16_t tbl = a.val; // input a + uint8x16_t idx = mask.val; // input mask + uint8x16_t idx_masked = + vandq_u8(idx, vdupq_n_u8(0x8F)); // avoid using meaningless bits +#if defined(__aarch64__) + return v_uint8x16(vqtbl1q_u8(tbl, idx_masked)); +#elif defined(__GNUC__) + uint8x16_t ret; + // %e and %f represent the even and odd D registers + // respectively. + __asm__ __volatile__( + "vtbl.8 %e[ret], {%e[tbl], %f[tbl]}, %e[idx]\n" + "vtbl.8 %f[ret], {%e[tbl], %f[tbl]}, %f[idx]\n" + : [ret] "=&w"(ret) + : [tbl] "w"(tbl), [idx] "w"(idx_masked)); + + return v_uint8x16(ret); +#else + uint8x8x2_t a_split = { vget_low_u8(tbl), vget_high_u8(tbl) }; + + return v_uint8x16(vcombine_u8( + vtbl2_u8(a_split, vget_low_u8(idx_masked)), + vtbl2_u8(a_split, vget_high_u8(idx_masked)))); + +#endif +} + +CV_ALWAYS_INLINE void v_deinterleave(const v_uint8x16& i0, const v_uint8x16& i1, + const v_uint8x16& i2, const v_uint8x16& i3, + v_uint8x16& res0, v_uint8x16& res1, + v_uint8x16& res2, v_uint8x16& res3) +{ + uint8x16x2_t p1 = vzipq_u8(i0.val, i2.val); + uint8x16x2_t p2 = vzipq_u8(i1.val, i3.val); + + uint8x16_t v0 = p1.val[0]; + uint8x16_t v1 = p1.val[1]; + uint8x16_t v2 = p2.val[0]; + uint8x16_t v3 = p2.val[1]; + + uint8x16x2_t p3 = vzipq_u8(v0, v2); + uint8x16x2_t p4 = vzipq_u8(v1, v3); + + uint8x16_t u0 = p3.val[0]; + uint8x16_t u2 = p3.val[1]; + uint8x16_t u1 = p4.val[0]; + uint8x16_t u3 = p4.val[1]; + + uint8x16x2_t p5 = vzipq_u8(u0, u1); + uint8x16x2_t p6 = vzipq_u8(u2, u3); + + v0 = p5.val[0]; + v2 = p5.val[1]; + v1 = p6.val[0]; + v3 = p6.val[1]; + + uint8x16x2_t p7 = vzipq_u8(v0, v1); + uint8x16x2_t p8 = vzipq_u8(v2, v3); + + res0.val = p7.val[0]; + res1.val = p7.val[1]; + res2.val = p8.val[0]; + res3.val = p8.val[1]; +} + +CV_ALWAYS_INLINE void v_deinterleave_expand(const v_uint8x16& src, + v_int16x8& even, v_int16x8& odd) +{ + constexpr int nlanes = static_cast(v_uint8x16::nlanes); + uchar mask_e[nlanes] = { 0, -1, 2, -1, 4, -1, 6, -1, + 8, -1, 10, -1, 12, -1, 14, -1 }; + + uchar mask_o[nlanes] = { 1, -1, 3, -1, 5, -1, 7, -1, + 9, -1, 11, -1, 13, -1, 15, -1 }; + + uint8x16_t mask_even = vld1q_u8(mask_e); + uint8x16_t mask_odd = vld1q_u8(mask_o); + + v_uint8x16 res1 = v_shuffle(src, v_uint8x16(mask_even)); + v_uint8x16 res2 = v_shuffle(src, v_uint8x16(mask_odd)); + even.val = vreinterpretq_s16_u8(res1.val); + odd.val = vreinterpretq_s16_u8(res2.val); +} + +CV_ALWAYS_INLINE v_int16x8 v_interleave_low(const v_int16x8& a, const v_int16x8& b) +{ + int16x8x2_t p = vzipq_s16(a.val, b.val); + int16x8_t v = p.val[0]; + return v_int16x8(v); +} + +CV_ALWAYS_INLINE v_int16x8 v_interleave_high(const v_int16x8& a, const v_int16x8& b) +{ + int16x8x2_t p = vzipq_s16(a.val, b.val); + int16x8_t v = p.val[1]; + return v_int16x8(v); +} + +CV_ALWAYS_INLINE v_uint8x16 v_interleave_low(const v_uint8x16& a, const v_uint8x16& b) +{ + uint8x16x2_t p = vzipq_u8(a.val, b.val); + uint8x16_t v = p.val[0]; + return v_uint8x16(v); +} +CV_ALWAYS_INLINE v_uint8x16 v_interleave_high(const v_uint8x16& a, const v_uint8x16& b) +{ + uint8x16x2_t p = vzipq_u8(a.val, b.val); + uint8x16_t v = p.val[1]; + return v_uint8x16(v); +} + +template +CV_ALWAYS_INLINE v_uint8x16 v_slli_si128(const v_uint8x16& a) +{ + assert((shift > 0) && (shift <= 15)); + uint8x16_t ret = vextq_u8(vdupq_n_u8(0), a.val, shift /*16 - (imm)*/); + return v_uint8x16(ret); +} + +template +CV_ALWAYS_INLINE v_uint8x16 v_shift_right(const v_uint8x16& a) +{ + assert((shift > 0) && (shift <= 15)); + uint8x16_t ret = vextq_u8(a.val, vdupq_n_u8(0), shift); + return v_uint8x16(ret); +} + +template +CV_ALWAYS_INLINE v_uint8x16 v_shift_left(const v_uint8x16& a) +{ + return v_slli_si128<16 - shift>(a); +} + +template +CV_ALWAYS_INLINE v_uint8x16 v_insert(v_uint8x16& a, int64_t b) +{ + return v_uint8x16(vreinterpretq_u8_s64(vsetq_lane_s64(b, vreinterpretq_s64_u8(a.val), indx))); +} CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END diff --git a/inference-engine/tools/CMakeLists.txt b/inference-engine/tools/CMakeLists.txt index 8096c0d3dcfadd..19bc1ce21e56f5 100644 --- a/inference-engine/tools/CMakeLists.txt +++ b/inference-engine/tools/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# add_subdirectory(vpu) @@ -19,7 +9,7 @@ add_subdirectory(compile_tool) # install if(ENABLE_PYTHON) - ie_cpack_add_component(python_tools REQUIRED DEPENDS core) + ie_cpack_add_component(python_tools DEPENDS core) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/benchmark_tool DESTINATION deployment_tools/tools diff --git a/inference-engine/tools/benchmark_tool/README.md b/inference-engine/tools/benchmark_tool/README.md index ced317c85b2992..1c213f67f1f65d 100644 --- a/inference-engine/tools/benchmark_tool/README.md +++ b/inference-engine/tools/benchmark_tool/README.md @@ -133,7 +133,9 @@ Options: graph information serialized. -pc [PERF_COUNTS], --perf_counts [PERF_COUNTS] Optional. Report performance counters. - + -ip "U8"/"FP16"/"FP32" Optional. Specifies precision for all input layers of the network. + -op "U8"/"FP16"/"FP32" Optional. Specifies precision for all output layers of the network. + -iop Optional. Specifies precision for input and output layers by name. Example: -iop "input:FP16, output:FP16". Notice that quotes are required. Overwrites precision from ip and op options for specified layers. ``` Running the application with the empty list of options yields the usage message given above and an error message. diff --git a/inference-engine/tools/benchmark_tool/benchmark_app.py b/inference-engine/tools/benchmark_tool/benchmark_app.py index d0644d32475092..289a60868b57f2 100755 --- a/inference-engine/tools/benchmark_tool/benchmark_app.py +++ b/inference-engine/tools/benchmark_tool/benchmark_app.py @@ -1,20 +1,7 @@ #!/usr/bin/python3 -""" -Copyright (C) 2018-2019 Intel Corporation - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys from openvino.tools.benchmark.main import main diff --git a/inference-engine/tools/compile_tool/CMakeLists.txt b/inference-engine/tools/compile_tool/CMakeLists.txt index 58614d3ced5326..6e6f384289ee22 100644 --- a/inference-engine/tools/compile_tool/CMakeLists.txt +++ b/inference-engine/tools/compile_tool/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. set(TARGET_NAME compile_tool) @@ -21,7 +11,6 @@ file(GLOB SRCS add_executable(${TARGET_NAME} ${SRCS}) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE - ${IE_MAIN_SOURCE_DIR}/samples/common ${IE_MAIN_SOURCE_DIR}/include ${IE_MAIN_SOURCE_DIR}/src/vpu/graph_transformer/include ${IE_MAIN_SOURCE_DIR}/src/vpu/common/include @@ -37,6 +26,7 @@ endif() target_link_libraries(${TARGET_NAME} PRIVATE inference_engine gflags + ie_samples_utils ) set_target_properties(${TARGET_NAME} PROPERTIES @@ -48,10 +38,12 @@ add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) # install +ie_cpack_add_component(core_tools DEPENDS core) + install(TARGETS compile_tool RUNTIME DESTINATION deployment_tools/tools/compile_tool - COMPONENT core) + COMPONENT core_tools) install(FILES README.md DESTINATION deployment_tools/tools/compile_tool - COMPONENT core) + COMPONENT core_tools) diff --git a/inference-engine/tools/compile_tool/main.cpp b/inference-engine/tools/compile_tool/main.cpp index f1094a2b903ec3..056228fdd0cbab 100644 --- a/inference-engine/tools/compile_tool/main.cpp +++ b/inference-engine/tools/compile_tool/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -18,7 +18,9 @@ #include #include #include + #include "samples/common.hpp" +#include "samples/args_helper.hpp" static constexpr char help_message[] = "Optional. Print the usage message."; @@ -208,106 +210,6 @@ IE_SUPPRESS_DEPRECATED_END return config; } -static std::map parseArgMap(std::string argMap) { - argMap.erase(std::remove_if(argMap.begin(), argMap.end(), ::isspace), argMap.end()); - - std::vector pairs; - vpu::splitStringList(argMap, pairs, ','); - - std::map parsedMap; - for (auto&& pair : pairs) { - std::vector keyValue; - vpu::splitStringList(pair, keyValue, ':'); - if (keyValue.size() != 2) { - throw std::invalid_argument("Invalid key/value pair " + pair + ". Expected :"); - } - - parsedMap[keyValue[0]] = keyValue[1]; - } - - return parsedMap; -} - -using supported_precisions_t = std::unordered_map; -using supported_layouts_t = std::unordered_map; -using matchLayoutToDims_t = std::unordered_map; - -static InferenceEngine::Layout getLayout(std::string value, - const supported_layouts_t& supported_layouts) { - std::transform(value.begin(), value.end(), value.begin(), ::toupper); - - const auto layout = supported_layouts.find(value); - if (layout == supported_layouts.end()) { - throw std::logic_error("\"" + value + "\"" + " is not a valid layout"); - } - - return layout->second; -} - -static InferenceEngine::Layout getLayout(const std::string& value) { - static const supported_layouts_t supported_layouts = { - { "NCDHW", InferenceEngine::Layout::NCDHW }, - { "NDHWC", InferenceEngine::Layout::NDHWC }, - { "NCHW", InferenceEngine::Layout::NCHW }, - { "NHWC", InferenceEngine::Layout::NHWC }, - { "CHW", InferenceEngine::Layout::CHW }, - { "NC", InferenceEngine::Layout::NC }, - { "C", InferenceEngine::Layout::C }, - }; - - return getLayout(value, supported_layouts); -} - -static bool isMatchLayoutToDims(InferenceEngine::Layout layout, size_t dimension) { - static const matchLayoutToDims_t matchLayoutToDims = { - {static_cast(InferenceEngine::Layout::NCDHW), 5 }, - {static_cast(InferenceEngine::Layout::NDHWC), 5 }, - {static_cast(InferenceEngine::Layout::NCHW), 4 }, - {static_cast(InferenceEngine::Layout::NHWC), 4 }, - {static_cast(InferenceEngine::Layout::CHW), 3 }, - {static_cast(InferenceEngine::Layout::NC), 2 }, - {static_cast(InferenceEngine::Layout::C), 1 } - }; - - const auto dims = matchLayoutToDims.find(static_cast(layout)); - if (dims == matchLayoutToDims.end()) { - throw std::logic_error("Layout is not valid."); - } - - return dimension == dims->second; -} - -static InferenceEngine::Precision getPrecision(std::string value, - const supported_precisions_t& supported_precisions) { - std::transform(value.begin(), value.end(), value.begin(), ::toupper); - - const auto precision = supported_precisions.find(value); - if (precision == supported_precisions.end()) { - throw std::logic_error("\"" + value + "\"" + " is not a valid precision"); - } - - return precision->second; -} - -static InferenceEngine::Precision getPrecision(const std::string& value) { - static const supported_precisions_t supported_precisions = { - { "FP32", InferenceEngine::Precision::FP32 }, - { "FP16", InferenceEngine::Precision::FP16 }, - { "BF16", InferenceEngine::Precision::BF16 }, - { "U64", InferenceEngine::Precision::U64 }, - { "I64", InferenceEngine::Precision::I64 }, - { "U32", InferenceEngine::Precision::U32 }, - { "I32", InferenceEngine::Precision::I32 }, - { "U16", InferenceEngine::Precision::U16 }, - { "I16", InferenceEngine::Precision::I16 }, - { "U8", InferenceEngine::Precision::U8 }, - { "I8", InferenceEngine::Precision::I8 }, - { "BOOL", InferenceEngine::Precision::BOOL }, - }; - - return getPrecision(value, supported_precisions); -} - bool isFP16(InferenceEngine::Precision precision) { return precision == InferenceEngine::Precision::FP16; } @@ -320,29 +222,6 @@ bool isFloat(InferenceEngine::Precision precision) { return isFP16(precision) || isFP32(precision); } -static void setPrecisions(const InferenceEngine::CNNNetwork& network) { - const auto user_precisions_map = parseArgMap(FLAGS_iop); - - auto inputs = network.getInputsInfo(); - auto outputs = network.getOutputsInfo(); - - for (auto&& item : user_precisions_map) { - const auto& layer_name = item.first; - const auto& user_precision = item.second; - - const auto input = inputs.find(layer_name); - const auto output = outputs.find(layer_name); - - if (input != inputs.end()) { - input->second->setPrecision(getPrecision(user_precision)); - } else if (output != outputs.end()) { - output->second->setPrecision(getPrecision(user_precision)); - } else { - throw std::logic_error(layer_name + " is not an input neither output"); - } - } -} - static void setDefaultIO(InferenceEngine::CNNNetwork& network) { const bool isMYRIAD = FLAGS_d.find("MYRIAD") != std::string::npos; const bool isVPUX = FLAGS_d.find("VPUX") != std::string::npos; @@ -377,81 +256,6 @@ static void setDefaultIO(InferenceEngine::CNNNetwork& network) { } } -static void processPrecisions(InferenceEngine::CNNNetwork& network) { - if (!FLAGS_ip.empty()) { - const auto user_precision = getPrecision(FLAGS_ip); - for (auto&& layer : network.getInputsInfo()) { - layer.second->setPrecision(user_precision); - } - } - - if (!FLAGS_op.empty()) { - auto user_precision = getPrecision(FLAGS_op); - for (auto&& layer : network.getOutputsInfo()) { - layer.second->setPrecision(user_precision); - } - } - - if (!FLAGS_iop.empty()) { - setPrecisions(network); - } -} - -static void setLayouts(const InferenceEngine::CNNNetwork& network) { - const auto user_layouts_map = parseArgMap(FLAGS_iol); - - auto inputs = network.getInputsInfo(); - auto outputs = network.getOutputsInfo(); - - for (auto&& item : user_layouts_map) { - const auto& layer_name = item.first; - const auto& user_layout = getLayout(item.second); - - const auto input = inputs.find(layer_name); - const auto output = outputs.find(layer_name); - - if (input != inputs.end()) { - if (!isMatchLayoutToDims(user_layout, input->second->getTensorDesc().getDims().size())) { - throw std::logic_error(item.second + " layout is not applicable to " + layer_name); - } - - input->second->setLayout(user_layout); - } else if (output != outputs.end()) { - if (!isMatchLayoutToDims(user_layout, output->second->getTensorDesc().getDims().size())) { - throw std::logic_error(item.second + " layout is not applicable to " + layer_name); - } - - output->second->setLayout(user_layout); - } else { - throw std::logic_error(layer_name + " is not an input neither output"); - } - } -} - -static void processLayout(InferenceEngine::CNNNetwork& network) { - if (!FLAGS_il.empty()) { - const auto layout = getLayout(FLAGS_il); - for (auto&& layer : network.getInputsInfo()) { - if (isMatchLayoutToDims(layout, layer.second->getTensorDesc().getDims().size())) { - layer.second->setLayout(layout); - } - } - } - - if (!FLAGS_ol.empty()) { - const auto layout = getLayout(FLAGS_ol); - for (auto&& layer : network.getOutputsInfo()) { - if (isMatchLayoutToDims(layout, layer.second->getTensorDesc().getDims().size())) { - layer.second->setLayout(layout); - } - } - } - - if (!FLAGS_iol.empty()) { - setLayouts(network); - } -} - std::string getFileNameFromPath(const std::string& path, #if defined(_WIN32) const std::string& sep = "\\") { @@ -487,18 +291,10 @@ int main(int argc, char* argv[]) { auto network = ie.ReadNetwork(FLAGS_m); setDefaultIO(network); - processPrecisions(network); - processLayout(network); + processPrecision(network, FLAGS_ip, FLAGS_op, FLAGS_iop); + processLayout(network, FLAGS_il, FLAGS_ol, FLAGS_iol); - std::cout << "Network inputs:" << std::endl; - for (auto&& layer : network.getInputsInfo()) { - std::cout << " " << layer.first << " : " << layer.second->getPrecision() << " / " << layer.second->getLayout() << std::endl; - } - std::cout << "Network outputs:" << std::endl; - for (auto&& layer : network.getOutputsInfo()) { - std::cout << " " << layer.first << " : " << layer.second->getPrecision() << " / " << layer.second->getLayout() << std::endl; - } - std::cout << std::endl; + printInputAndOutputsInfo(network); auto timeBeforeLoadNetwork = std::chrono::steady_clock::now(); auto executableNetwork = ie.LoadNetwork(network, FLAGS_d, configure()); diff --git a/inference-engine/tools/cross_check_tool/__init__.py b/inference-engine/tools/cross_check_tool/__init__.py index 79b3c5795b4aa1..60324954ef522e 100644 --- a/inference-engine/tools/cross_check_tool/__init__.py +++ b/inference-engine/tools/cross_check_tool/__init__.py @@ -1,15 +1,3 @@ -""" -Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 -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. -""" diff --git a/inference-engine/tools/cross_check_tool/cross_check_tool.py b/inference-engine/tools/cross_check_tool/cross_check_tool.py index 543a7cdcc7b2b7..83ccc4f7abc063 100755 --- a/inference-engine/tools/cross_check_tool/cross_check_tool.py +++ b/inference-engine/tools/cross_check_tool/cross_check_tool.py @@ -1,8 +1,7 @@ #!/usr/bin/python3 -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# import datetime import logging as log diff --git a/inference-engine/tools/cross_check_tool/utils.py b/inference-engine/tools/cross_check_tool/utils.py index 45d6eb72af99a0..93a6af637f047f 100644 --- a/inference-engine/tools/cross_check_tool/utils.py +++ b/inference-engine/tools/cross_check_tool/utils.py @@ -1,6 +1,5 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# import argparse import logging as log diff --git a/inference-engine/tools/vpu/CMakeLists.txt b/inference-engine/tools/vpu/CMakeLists.txt index 647cc549784bcf..fa0357111b2e4b 100644 --- a/inference-engine/tools/vpu/CMakeLists.txt +++ b/inference-engine/tools/vpu/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. if(ENABLE_MYRIAD) add_subdirectory(vpu_compile) diff --git a/inference-engine/tools/vpu/common/vpu_tools_common.cpp b/inference-engine/tools/vpu/common/vpu_tools_common.cpp index f7e7ade765f7e0..e3071a557beafe 100644 --- a/inference-engine/tools/vpu/common/vpu_tools_common.cpp +++ b/inference-engine/tools/vpu/common/vpu_tools_common.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -8,7 +8,6 @@ #endif #include -#include #include #include @@ -20,7 +19,9 @@ #include "vpu_tools_common.hpp" #include -#include "samples/common.hpp" + +#include +#include #include "precision_utils.h" @@ -58,25 +59,6 @@ void setPrecisions(const InferenceEngine::CNNNetwork &network) { } } -std::map parseConfig(const std::string &configName, char comment) { - std::map config = {}; - - std::ifstream file(configName); - if (!file.is_open()) { - return config; - } - - std::string key, value; - while (file >> key >> value) { - if (key.empty() || key[0] == comment) { - continue; - } - config[key] = value; - } - - return config; -} - BitMap::BitMap(const std::string &filename) { BmpHeader header; BmpInfoHeader infoHeader; diff --git a/inference-engine/tools/vpu/common/vpu_tools_common.hpp b/inference-engine/tools/vpu/common/vpu_tools_common.hpp index e5f7b6911c20d6..3ce092ef12a490 100644 --- a/inference-engine/tools/vpu/common/vpu_tools_common.hpp +++ b/inference-engine/tools/vpu/common/vpu_tools_common.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -20,8 +20,6 @@ bool isFloat(InferenceEngine::Precision precision); /* Set FP32 to FP16, all others without changes */ void setPrecisions(const InferenceEngine::CNNNetwork &network); -std::map parseConfig(const std::string &configName, char comment = '#'); - class BitMap { private: typedef struct { diff --git a/inference-engine/tools/vpu/vpu_compile/CMakeLists.txt b/inference-engine/tools/vpu/vpu_compile/CMakeLists.txt index b8861dad9a86af..d296489d996da9 100644 --- a/inference-engine/tools/vpu/vpu_compile/CMakeLists.txt +++ b/inference-engine/tools/vpu/vpu_compile/CMakeLists.txt @@ -1,16 +1,6 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. set(TARGET_NAME myriad_compile) @@ -28,13 +18,14 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") endif() target_include_directories(${TARGET_NAME} SYSTEM PRIVATE - ${IE_MAIN_SOURCE_DIR}/samples/common ${IE_MAIN_SOURCE_DIR}/tools/vpu/common + ${IE_MAIN_SOURCE_DIR}/samples/common ) target_link_libraries(${TARGET_NAME} PRIVATE inference_engine vpu_graph_transformer gflags + ie_samples_utils ) add_dependencies(${TARGET_NAME} myriadPlugin) @@ -50,4 +41,4 @@ add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} - COMPONENT myriad) \ No newline at end of file + COMPONENT myriad) diff --git a/inference-engine/tools/vpu/vpu_compile/main.cpp b/inference-engine/tools/vpu/vpu_compile/main.cpp index 1a3fc4ff6943d5..01a7177e0693d8 100644 --- a/inference-engine/tools/vpu/vpu_compile/main.cpp +++ b/inference-engine/tools/vpu/vpu_compile/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/inference-engine/tools/vpu/vpu_perfcheck/CMakeLists.txt b/inference-engine/tools/vpu/vpu_perfcheck/CMakeLists.txt index b000e63c00146c..80edff53921268 100644 --- a/inference-engine/tools/vpu/vpu_perfcheck/CMakeLists.txt +++ b/inference-engine/tools/vpu/vpu_perfcheck/CMakeLists.txt @@ -1,24 +1,10 @@ -# -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # disable_deprecated_warnings() function(add_perfcheck_target TARGET_NAME PLUGIN_NAME) - find_package(Threads REQUIRED) - file(GLOB SOURCES *.cpp) add_executable(${TARGET_NAME} ${SOURCES}) @@ -34,13 +20,13 @@ function(add_perfcheck_target TARGET_NAME PLUGIN_NAME) SYSTEM PRIVATE "${IE_MAIN_SOURCE_DIR}/src/vpu/graph_transformer/include" "${IE_MAIN_SOURCE_DIR}/src/plugin_api" - "${IE_MAIN_SOURCE_DIR}/samples/common/samples" "${IE_MAIN_SOURCE_DIR}/samples/common/format_reader") target_link_libraries(${TARGET_NAME} PRIVATE inference_engine format_reader - Threads::Threads) + Threads::Threads + ie_samples_utils) add_dependencies(${TARGET_NAME} ${PLUGIN_NAME} ${ARGN}) @@ -55,7 +41,9 @@ endfunction() if(ENABLE_MYRIAD) add_perfcheck_target(myriad_perfcheck myriadPlugin) + ie_cpack_add_component(myriad_tools DEPENDS myriad) + install(TARGETS myriad_perfcheck RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} - COMPONENT myriad) + COMPONENT myriad_tools) endif() diff --git a/inference-engine/tools/vpu/vpu_perfcheck/main.cpp b/inference-engine/tools/vpu/vpu_perfcheck/main.cpp index 2c348dcdec2785..c093303b47eabc 100644 --- a/inference-engine/tools/vpu/vpu_perfcheck/main.cpp +++ b/inference-engine/tools/vpu/vpu_perfcheck/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -29,11 +29,13 @@ #include #include #include -#include + +#include #include #include -#include +#include + #include static char* m_exename = nullptr; @@ -51,14 +53,14 @@ typedef std::chrono::duration fsec; class BitMap { private: - typedef struct { + struct BmpHeader { unsigned short type = 0u; /* Magic identifier */ unsigned int size = 0u; /* File size in bytes */ unsigned int reserved = 0u; unsigned int offset = 0u; /* Offset to image data, bytes */ - } BmpHeader; + }; - typedef struct { + struct BmpInfoHeader { unsigned int size = 0u; /* Header size in bytes */ int width = 0, height = 0; /* Width and height of image */ unsigned short planes = 0u; /* Number of colour planes */ @@ -68,7 +70,7 @@ class BitMap { int xresolution = 0, yresolution = 0; /* Pixels per meter */ unsigned int ncolours = 0u; /* Number of colours */ unsigned int importantcolours = 0u; /* Important colours */ - } BmpInfoHeader; + }; public: explicit BitMap(const std::string &filename) { diff --git a/install_build_dependencies.sh b/install_build_dependencies.sh index 64b69bf62feae6..ebf5293a52e226 100755 --- a/install_build_dependencies.sh +++ b/install_build_dependencies.sh @@ -1,7 +1,7 @@ #!/bin/bash -# Copyright (C) 2018 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# params=$1 @@ -37,6 +37,7 @@ if [ -f /etc/lsb-release ]; then libssl-dev \ ca-certificates \ git \ + git-lfs \ libboost-regex-dev \ $x86_64_specific_packages \ libgtk2.0-dev \ @@ -77,6 +78,7 @@ elif [ -f /etc/redhat-release ]; then libssl-dev \ ca-certificates \ git \ + git-lfs \ boost-devel \ libtool \ gcc \ diff --git a/licensing/mkl-dnn/third-party-programs.txt b/licensing/onednn_third-party-programs.txt similarity index 100% rename from licensing/mkl-dnn/third-party-programs.txt rename to licensing/onednn_third-party-programs.txt diff --git a/licensing/tbb_third-party-programs.txt b/licensing/tbb_third-party-programs.txt new file mode 100644 index 00000000000000..c91e3ca4e523e2 --- /dev/null +++ b/licensing/tbb_third-party-programs.txt @@ -0,0 +1,230 @@ +Intel(R) Threading Building Blocks Third Party Programs File + +This file contains the list of third party software ("third party programs") +contained in the Intel software and their required notices and/or license terms. +This third party software, even if included with the distribution of the Intel +software, may be governed by separate license terms, including without limitation, +third party license terms, other Intel software license terms, and open source +software license terms. These separate license terms govern your use of the third +party programs as set forth in the "third-party-programs.txt" or other similarly named text file. + +Third party programs and their corresponding required notices and/or license +terms are listed below. +____________________________________________________________________________________________________ + +1. Portable Hardware Locality (hwloc): + Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. + Copyright (c) 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. + Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. + Copyright (c) 2004-2005 The Regents of the University of California. All rights reserved. + Copyright (c) 2009 CNRS + Copyright (c) 2009-2016 Inria. All rights reserved. + Copyright (c) 2009-2015 Universite Bordeaux + Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved. + Copyright (c) 2009-2012 Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2010 IBM + Copyright (c) 2010 Jirka Hladky + Copyright (c) 2012 Aleksej Saushev, The NetBSD Foundation + Copyright (c) 2012 Blue Brain Project, EPFL. All rights reserved. + Copyright (c) 2013-2014 University of Wisconsin-La Crosse. All rights reserved. + Copyright (c) 2015 Research Organization for Information Science and Technology (RIST). All rights reserved. + Copyright (c) 2015-2016 Intel, Inc. All rights reserved. + See COPYING in top-level directory. + + New BSD License + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +_______________________________________________________________________________________________________ + +2. Instrumentation and Tracing Technology (ITT) Notify User API: + Copyright (c) 2005-2014 Intel Corporation. All rights reserved. + + The 3-Clause BSD License + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +_______________________________________________________________________________________________________ + +3. ActiveState Thread pool with same API as (multi) processing.Pool (Python recipe): + Copyright (c) 2008,2016 david decotigny (this file) + Copyright (c) 2006-2008, R Oudkerk (multiprocessing.Pool) + + BSD 3-clause "New" or "Revised" License + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of author nor the names of any contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. +_______________________________________________________________________________________________________ + +4. gperftools: Copyright (c) 2011, Google Inc. + + Tachyon: Copyright (c) 1994-2008 John E. Stone. All rights reserved. + + BSD 3-Clause "New" or "Revised" License + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +_______________________________________________________________________________________________________ + +5. Mateusz Kwiatkowski Workaround for bug 62258 in libstdc++ + + Public domain +_______________________________________________________________________________________________________ + +6. Bzip2: Copyright (c) 1996-2019 Julian Seward. + + Bzip 2 License + + This program, bzip2, the associated library libbzip2, and all documentation, are copyright (c) 1996-2019 Julian Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. + + Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + + The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +_______________________________________________________________________________________________________ + +7. Apple OpenGL Image Sample Source Code + + Apple License + + ("Apple") in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under Apple's copyrights in this original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple.Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +_______________________________________________________________________________________________________ + +8. LodePNG: Copyright (c) 2005-2019 by Lode Vandevenne. + + zlib License + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +_______________________________________________________________________________________________________ + +9. prism: Copyright (c) 2012-2013 Lea Verou. + + jquery: Copyright (c) 2005, 2014 jQuery Foundation, Inc. + + MIT License + + 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. +_______________________________________________________________________________________________________ + +*Other names and brands may be claimed as the property of others. \ No newline at end of file diff --git a/licensing/third-party-programs.txt b/licensing/third-party-programs.txt index ffec437bde073b..d59f1aaa5d9b7d 100644 --- a/licensing/third-party-programs.txt +++ b/licensing/third-party-programs.txt @@ -5,18 +5,24 @@ This file contains the list of third party software (“third party programs”) Third party programs and their corresponding required notices and/or license terms are listed below. ------------------------------------------------------------- -1. Intel MKL-Deep Nueral Network +1. oneAPI Deep Neural Network Library (oneDNN) Copyright 2016-2019 Intel Corporation Copyright 2018 YANDEX LLC Copyright 2020 Arm Limited and affiliates +Intel(R) Threading Building Blocks +Copyright 2005-2020 Intel Corporation. All Rights Reserved. + OpenCL ICD Loader Copyright (c) 2012-2019 The Khronos Group Inc. OpenCL is a trademark of Apple Inc. used under license by Khronos. Khronos Group - OpenCL Headers (c) The Khronos(R) Group Inc. 2020 - OpenCL is a trademark of Apple Inc. used under license by Khronos. + OpenCL is a trademark of Apple Inc. used under license by Khronos. + +OpenCL(TM) API C++ bindings + Copyright (c) 2008-2020 The Khronos Group Inc. Open Computer Vision Library (OpenCV) Copyright (C) 2000-2020, Intel Corporation, all rights reserved. @@ -27,6 +33,10 @@ Open Computer Vision Library (OpenCV) Copyright (C) 2015-2016, Itseez Inc., all rights reserved. Copyright (C) 2019-2020, Xperience AI, all rights reserved. Third party copyrights are property of their respective owners. + +Roboto Fonts + Copyright 2011 Google Inc. All Rights Reserved. + http://www.apache.org/licenses/ @@ -197,59 +207,20 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------- -4. intel ittnotify src - Copyright (c) 2011, Intel Corporation - All rights reserved. +4. Intel(R) Instrumentation and Tracing Technology (ITT) and Just-In-Time (JIT) API + Copyright (c) 2019 Intel Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -• Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -• Neither the name of the Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------- -5. stb - Copyright (c) 2017 Sean Barrett +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -ALTERNATIVE A - MIT License -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. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain (www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non-commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain. We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors. We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -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 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. - ------------------------------------------------------------- -6. Intel Open Source Technology Center Safe String Library + +5. Intel Open Source Technology Center Safe String Library Copyright (c) 2014-2018 Intel Corporation Permission is hereby granted, free of charge, to any person obtaining a copy @@ -297,7 +268,7 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------- -7. Microsoft onnxruntime +6. Microsoft onnxruntime Copyright (c) 2018 Microsoft Corporation pugixml @@ -322,7 +293,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------- -8. rapidjson +7. rapidjson Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. If you have downloaded a copy of the RapidJSON binary from Tencent, please note that the RapidJSON binary is licensed under the MIT License. @@ -378,7 +349,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ------------------------------------------------------------- -9. Protobuf +8. Protobuf Copyright 2008 Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -414,11 +385,171 @@ support library is itself covered by the above license. ------------------------------------------------------------- + +9. XByak (src/cpu/xbyak/) +Copyright (c) 2007 MITSUNARI Shigeo +All rights reserved. + +3-Clause BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +Neither the name of the copyright owner nor the names of its contributors may +be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + + +ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満た +す場合に限り、再頒布および使用が許可されます。 + +ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項 +を含めること。 +バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作 +権表示、本条件一覧、および下記免責条項を含めること。 +書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進 +に、著作権者の名前またはコントリビューターの名前を使用してはならない。 +本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供さ +れており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性 +に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。 +著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを +問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為で +あるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、 +本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の +喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接 +損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、 +一切責任を負わないものとします。 + +------------------------------------------------------------- + +10. Google fonts +Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +------------------------------------------------------------- + +11. Bootstrap +Copyright (c) 2011-2021 Twitter, Inc. +Copyright (c) 2011-2021 The Bootstrap Authors + +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. + +------------------------------------------------------------- + +12. jQuery JavaScript Library +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +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. + + +------------------------------------------------------------- + +13. Intel® Single Event API (Intel® SEAPI) +Copyright (c) 2021, Intel Corporation + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + Neither the name of the Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------- + The following third party programs have their own third party program files. These additional third party program files are as follows: -Intel MKL-Deep Nueral Network Third Party Programs File is available here https://github.com/openvinotoolkit/openvino/blob/master/licensing/mkl-dnn/third-party-programs.txt -or https://github.com/oneapi-src/oneDNN/blob/master/THIRD-PARTY-PROGRAMS +oneAPI Deep Neural Network Library (oneDNN) Third Party Programs File is available here https://github.com/openvinotoolkit/openvino/blob/master/licensing/onednn_third-party-programs.txt +Intel(R) Threading Building Blocks Third Party Programs File is available here https://github.com/openvinotoolkit/openvino/blob/master/licensing/tbb_third-party-programs.txt ------------------------------------------------------------- -Other names and brands may be claimed as the property of others. \ No newline at end of file +* Other names and brands may be claimed as the property of others. + +OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos. diff --git a/model-optimizer/.coveragerc b/model-optimizer/.coveragerc index 8bfb27e3f0435a..66d591bc9e5b59 100644 --- a/model-optimizer/.coveragerc +++ b/model-optimizer/.coveragerc @@ -3,6 +3,7 @@ branch = True source = + extensions/ mo/ mo.py diff --git a/model-optimizer/CMakeLists.txt b/model-optimizer/CMakeLists.txt index 413472e0a95066..7abc68042ca777 100644 --- a/model-optimizer/CMakeLists.txt +++ b/model-optimizer/CMakeLists.txt @@ -1,20 +1,8 @@ -# Copyright (C) 2018-2020 Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # install -ie_cpack_add_component(model_optimizer REQUIRED) +ie_cpack_add_component(model_optimizer) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/automation/version.txt.in" diff --git a/model-optimizer/automation/create_package.py b/model-optimizer/automation/create_package.py index 2112e5afcbe449..7761a6d8f5ab71 100644 --- a/model-optimizer/automation/create_package.py +++ b/model-optimizer/automation/create_package.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import argparse import os from shutil import rmtree diff --git a/model-optimizer/automation/package_BOM.txt b/model-optimizer/automation/package_BOM.txt index 3f12fdc3882a0a..008894900e457e 100644 --- a/model-optimizer/automation/package_BOM.txt +++ b/model-optimizer/automation/package_BOM.txt @@ -11,6 +11,7 @@ extensions/back/__init__.py extensions/back/AvgPool.py extensions/back/blob_normalizer.py extensions/back/CellNormalizer.py +extensions/back/ChangeCastOutputType.py extensions/back/ClampNormalizer.py extensions/back/compress_quantized_weights.py extensions/back/ConvolutionNormalizer.py @@ -30,7 +31,9 @@ extensions/back/InterpolateReshape.py extensions/back/kaldi_remove_memory_output.py extensions/back/LayoutChangeForGatherND.py extensions/back/LeakyReLUMutation.py +extensions/back/LinearToLinearONNXReplacer.py extensions/back/LRNToNorm.py +extensions/back/MarkNodesWithShapeValues.py extensions/back/MatMulNormalizer.py extensions/back/MaxPool.py extensions/back/NormalizeToNormalizeL2.py @@ -96,7 +99,7 @@ extensions/front/caffe/input_ext.py extensions/front/caffe/interp_ext.py extensions/front/caffe/lrn_ext.py extensions/front/caffe/mvn_ext.py -extensions/front/caffe/MVNNormalizer.py +extensions/front/caffe/MVNCaffeToMVN.py extensions/front/caffe/normalize_ext.py extensions/front/caffe/permute_ext.py extensions/front/caffe/pooling_ext.py @@ -124,7 +127,6 @@ extensions/front/caffe/softmax_ext.py extensions/front/caffe/spatial_transformer_ext.py extensions/front/caffe/split_to_identity.py extensions/front/caffe/tanh.py -extensions/front/ChangeCastOutputType.py extensions/front/ChangePlaceholderTypes.py extensions/front/create_tensor_nodes.py extensions/front/disable_weights_quantize_value_propagation.py @@ -153,6 +155,7 @@ extensions/front/kaldi/add_reshape_around_pooling.py extensions/front/kaldi/apply_counts.py extensions/front/kaldi/logsoftmax_component_ext.py extensions/front/kaldi/memory_offset_adjustment.py +extensions/front/kaldi/memoryoffset_batch_update.py extensions/front/kaldi/replace_eltwise_nin1.py extensions/front/kaldi/replace_lstm_node_pattern.py extensions/front/kaldi/replace_lstm_nonlinearity.py @@ -294,6 +297,7 @@ extensions/front/onnx/mask_rcnn.json extensions/front/onnx/mask_rcnn_conversion.py extensions/front/onnx/matmul_ext.py extensions/front/onnx/mean_variance_normalization_ext.py +extensions/front/onnx/MvnOnnxToMvn.py extensions/front/onnx/non_max_suppression_ext.py extensions/front/onnx/non_zero_ext.py extensions/front/onnx/normalize_ext.py @@ -370,6 +374,7 @@ extensions/front/tf/BatchMatMul_ext.py extensions/front/tf/BatchToSpaceNDToUpsample.py extensions/front/tf/BlockLSTM.py extensions/front/tf/BlockLSTM_ext.py +extensions/front/tf/broadcast_ext.py extensions/front/tf/bucketize.py extensions/front/tf/bucketize_ext.py extensions/front/tf/Cast_ext.py @@ -387,6 +392,7 @@ extensions/front/tf/cumsum_ext.py extensions/front/tf/deconv_ext.py extensions/front/tf/depth_to_space.py extensions/front/tf/efficient_det_support_api_v2.0.json +extensions/front/tf/efficient_det_support_api_v2.4.json extensions/front/tf/elementwise_ext.py extensions/front/tf/embedding_segments_sum.py extensions/front/tf/expand_dims_ext.py @@ -401,6 +407,7 @@ extensions/front/tf/faster_rcnn_support_api_v1.14.json extensions/front/tf/faster_rcnn_support_api_v1.15.json extensions/front/tf/faster_rcnn_support_api_v1.7.json extensions/front/tf/faster_rcnn_support_api_v2.0.json +extensions/front/tf/faster_rcnn_support_api_v2.4.json extensions/front/tf/fifo_queue_v2_ext.py extensions/front/tf/fifo_replacer.py extensions/front/tf/fill_ext.py @@ -427,6 +434,7 @@ extensions/front/tf/mask_rcnn_support_api_v1.14.json extensions/front/tf/mask_rcnn_support_api_v1.15.json extensions/front/tf/mask_rcnn_support_api_v1.7.json extensions/front/tf/mask_rcnn_support_api_v2.0.json +extensions/front/tf/mask_rcnn_support_api_v2.4.json extensions/front/tf/matmul_ext.py extensions/front/tf/mvn.py extensions/front/tf/mvn_unrolled.py @@ -434,6 +442,7 @@ extensions/front/tf/nearest_neighbor_upsampling.py extensions/front/tf/next_iteration_ext.py extensions/front/tf/non_max_suppression_ext.py extensions/front/tf/non_max_suppression_normalize.py +extensions/front/tf/NonConstBeginStridedSliceReplacement.py extensions/front/tf/noop.py extensions/front/tf/ObjectDetectionAPI.py extensions/front/tf/one_hot_ext.py @@ -475,6 +484,7 @@ extensions/front/tf/ssd_support.json extensions/front/tf/ssd_support_api_v1.14.json extensions/front/tf/ssd_support_api_v1.15.json extensions/front/tf/ssd_support_api_v2.0.json +extensions/front/tf/ssd_support_api_v2.4.json extensions/front/tf/ssd_toolbox_detection_output.json extensions/front/tf/ssd_toolbox_multihead_detection_output.json extensions/front/tf/ssd_v2_support.json @@ -569,6 +579,7 @@ extensions/middle/L2NormFusing.py extensions/middle/LayoutChangeForConstantShapePaths.py extensions/middle/LeakyReluPattern.py extensions/middle/LSTMRNNSequenceToTensorIterator.py +extensions/middle/MakeKaldiConstReshapable.py extensions/middle/MarkSubgraphsWithCorrectLayout.py extensions/middle/MoveConstToLoopBody.py extensions/middle/MulFakeQuantizeFuse.py @@ -637,9 +648,11 @@ extensions/ops/box_nms.py extensions/ops/bucketize.py extensions/ops/Cast.py extensions/ops/constant_fill.py +extensions/ops/ConvertLike.py extensions/ops/copyop.py extensions/ops/correlation.py extensions/ops/ctc_greedy_decoder.py +extensions/ops/ctc_greedy_decoder_seq_len.py extensions/ops/ctc_loss.py extensions/ops/cumsum.py extensions/ops/data_augmentation.py @@ -764,9 +777,11 @@ install_prerequisites/protobuf-3.6.1-py3.6-win-amd64.egg install_prerequisites/protobuf-3.6.1-py3.7-win-amd64.egg mo.py mo/__init__.py +mo/__main__.py mo/back/__init__.py mo/back/ie_ir_ver_2/__init__.py mo/back/ie_ir_ver_2/emitter.py +mo/back/offline_transformations.py mo/back/replacement.py mo/front/__init__.py mo/front/caffe/__init__.py @@ -786,6 +801,7 @@ mo/front/caffe/python_layer_extractor.py mo/front/caffe/register_custom_ops.py mo/front/common/__init__.py mo/front/common/custom_replacement_registry.py +mo/front/common/extractors/__init__.py mo/front/common/extractors/utils.py mo/front/common/find_unsupported_ops.py mo/front/common/layout.py @@ -962,15 +978,19 @@ mo/pipeline/common.py mo/pipeline/unified.py mo/utils/__init__.py mo/utils/broadcasting.py +mo/utils/check_ie_bindings.py mo/utils/class_registration.py mo/utils/cli_parser.py mo/utils/custom_replacement_config.py mo/utils/dsu.py mo/utils/error.py +mo/utils/extract_release_version.py +mo/utils/find_ie_version.py mo/utils/find_inputs.py mo/utils/get_ov_update_message.py mo/utils/graph.py mo/utils/guess_framework.py +mo/utils/ie_version.py mo/utils/import_extensions.py mo/utils/ir_engine/__init__.py mo/utils/ir_engine/compare_graphs.py @@ -981,6 +1001,7 @@ mo/utils/ir_reader/extenders/binary_convolution_extender.py mo/utils/ir_reader/extenders/bucketize_extender.py mo/utils/ir_reader/extenders/conv_extender.py mo/utils/ir_reader/extenders/convert_extender.py +mo/utils/ir_reader/extenders/ctc_greedy_decoder_seq_len_extender.py mo/utils/ir_reader/extenders/deconvolution_extender.py mo/utils/ir_reader/extenders/deformable_convolution_extender.py mo/utils/ir_reader/extenders/experimental_extender.py diff --git a/model-optimizer/automation/utils.py b/model-optimizer/automation/utils.py index 9045282bf4bb3e..ffd5805e0d2ab9 100644 --- a/model-optimizer/automation/utils.py +++ b/model-optimizer/automation/utils.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import subprocess import tarfile diff --git a/model-optimizer/extensions/__init__.py b/model-optimizer/extensions/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/__init__.py +++ b/model-optimizer/extensions/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/analysis/Iterator_get_next_test.py b/model-optimizer/extensions/analysis/Iterator_get_next_test.py index e172ad23d2182a..9d5a54bcd0a191 100644 --- a/model-optimizer/extensions/analysis/Iterator_get_next_test.py +++ b/model-optimizer/extensions/analysis/Iterator_get_next_test.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/analysis/__init__.py b/model-optimizer/extensions/analysis/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/analysis/__init__.py +++ b/model-optimizer/extensions/analysis/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/analysis/boolean_input.py b/model-optimizer/extensions/analysis/boolean_input.py index b4e6de4140bd2f..4c5d316ae10500 100644 --- a/model-optimizer/extensions/analysis/boolean_input.py +++ b/model-optimizer/extensions/analysis/boolean_input.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/analysis/inputs.py b/model-optimizer/extensions/analysis/inputs.py index 380c0c0e220942..a3fee9ffd6cf27 100644 --- a/model-optimizer/extensions/analysis/inputs.py +++ b/model-optimizer/extensions/analysis/inputs.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/analysis/json_print.py b/model-optimizer/extensions/analysis/json_print.py index 60799185d9bc27..2e5ef412ceab1b 100644 --- a/model-optimizer/extensions/analysis/json_print.py +++ b/model-optimizer/extensions/analysis/json_print.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import json import logging as log import sys diff --git a/model-optimizer/extensions/analysis/nodes.py b/model-optimizer/extensions/analysis/nodes.py index 3b65795e979d90..499c5157a30e72 100644 --- a/model-optimizer/extensions/analysis/nodes.py +++ b/model-optimizer/extensions/analysis/nodes.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph from mo.utils.model_analysis import AnalyzeAction diff --git a/model-optimizer/extensions/analysis/tf_od_api.py b/model-optimizer/extensions/analysis/tf_od_api.py index 976511f1869004..8fe6d78964a036 100644 --- a/model-optimizer/extensions/analysis/tf_od_api.py +++ b/model-optimizer/extensions/analysis/tf_od_api.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/analysis/tf_retinanet.py b/model-optimizer/extensions/analysis/tf_retinanet.py index dcbf2165285163..35fdcf9d49c04a 100644 --- a/model-optimizer/extensions/analysis/tf_retinanet.py +++ b/model-optimizer/extensions/analysis/tf_retinanet.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph from mo.middle.pattern_match import apply_pattern from mo.utils.model_analysis import AnalyzeAction diff --git a/model-optimizer/extensions/analysis/tf_yolo.py b/model-optimizer/extensions/analysis/tf_yolo.py index ecf44d102af33e..626187b25f508b 100644 --- a/model-optimizer/extensions/analysis/tf_yolo.py +++ b/model-optimizer/extensions/analysis/tf_yolo.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.middle.pattern_match import apply_pattern diff --git a/model-optimizer/extensions/back/AvgPool.py b/model-optimizer/extensions/back/AvgPool.py index 6f2c7a85c295c4..94f10a97cd33c3 100644 --- a/model-optimizer/extensions/back/AvgPool.py +++ b/model-optimizer/extensions/back/AvgPool.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/CellNormalizer.py b/model-optimizer/extensions/back/CellNormalizer.py index bb9834fbd2fd72..b4b4ad2769f51f 100644 --- a/model-optimizer/extensions/back/CellNormalizer.py +++ b/model-optimizer/extensions/back/CellNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/back/ChangeCastOutputType.py b/model-optimizer/extensions/back/ChangeCastOutputType.py new file mode 100644 index 00000000000000..976b6b50a29136 --- /dev/null +++ b/model-optimizer/extensions/back/ChangeCastOutputType.py @@ -0,0 +1,43 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import logging as log + +import numpy as np + +from mo.back.replacement import BackReplacementPattern +from mo.graph.graph import Graph +from mo.middle.passes.convert_data_type import data_type_str_to_np + + +class ChangeCastOutputType(BackReplacementPattern): + """ + Change the Cast dst_type from fp64 to fp32 since not all plugins support fp64 data type. + Change the Cast dst_type from fp32 to fp16 when generating IR for fp16. + But leave fp32 if node returns shape value even if --data_type=FP16 (look extensions/back/MarkNodesWithShapeValues.py). + """ + enabled = True + force_shape_inference = True + + def run_after(self): + from extensions.back.MarkNodesWithShapeValues import MarkNodesWithShapeValues + return [MarkNodesWithShapeValues] + + def run_before(self): + return [] + + def find_and_replace_pattern(self, graph: Graph): + for node in graph.get_op_nodes(op='Cast'): + if node.dst_type == np.float64: + log.warning('Change data type from {} to {} for node {}'.format(node.dst_type, np.float32, node.name)) + node.dst_type = np.float32 + + ir_data_type = data_type_str_to_np(node.graph.graph['cmd_params'].data_type) + if node.dst_type == np.float32 and ir_data_type == np.float16 and not node.has_and_set('returns_shape_value'): + log.warning('Change data type from {} to {} for node {}'.format(node.dst_type, ir_data_type, node.name)) + node.dst_type = ir_data_type + elif node.has_and_set('returns_shape_value') and node.dst_type == np.float16: + # return back FP32 for all Convert nodes with shape values + log.warning('Change data type from {} to {} for node {} in ShapeOf subgraph'. + format(node.dst_type, np.float32, node.name)) + node.dst_type = np.float32 diff --git a/model-optimizer/extensions/back/ClampNormalizer.py b/model-optimizer/extensions/back/ClampNormalizer.py index a702b9544750f9..2e2ef4fd1e1df9 100644 --- a/model-optimizer/extensions/back/ClampNormalizer.py +++ b/model-optimizer/extensions/back/ClampNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Minimum, Maximum from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/ClampNormalizer_test.py b/model-optimizer/extensions/back/ClampNormalizer_test.py index e1b8c2ec9b03e6..bd7746eed4bda4 100644 --- a/model-optimizer/extensions/back/ClampNormalizer_test.py +++ b/model-optimizer/extensions/back/ClampNormalizer_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/back/ConvolutionNormalizer.py b/model-optimizer/extensions/back/ConvolutionNormalizer.py index 358fa290651ce2..04da65631c53fa 100644 --- a/model-optimizer/extensions/back/ConvolutionNormalizer.py +++ b/model-optimizer/extensions/back/ConvolutionNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/back/ConvolutionNormalizer_test.py b/model-optimizer/extensions/back/ConvolutionNormalizer_test.py index 2dcfcb4d1f1d13..fb4b15cae34247 100644 --- a/model-optimizer/extensions/back/ConvolutionNormalizer_test.py +++ b/model-optimizer/extensions/back/ConvolutionNormalizer_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/back/CorrectName.py b/model-optimizer/extensions/back/CorrectName.py index 1d1e9c0dd5231d..f9d41973f6b542 100644 --- a/model-optimizer/extensions/back/CorrectName.py +++ b/model-optimizer/extensions/back/CorrectName.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/CropToStridedSlice.py b/model-optimizer/extensions/back/CropToStridedSlice.py index 2ad55a9bcd6973..26c0bb11f449be 100644 --- a/model-optimizer/extensions/back/CropToStridedSlice.py +++ b/model-optimizer/extensions/back/CropToStridedSlice.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.back.ForceStrictPrecision import ForceStrictPrecision diff --git a/model-optimizer/extensions/back/CutMemory.py b/model-optimizer/extensions/back/CutMemory.py index d0f4ff80100217..5e6807196b3b60 100644 --- a/model-optimizer/extensions/back/CutMemory.py +++ b/model-optimizer/extensions/back/CutMemory.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.parameter import Parameter diff --git a/model-optimizer/extensions/back/CutMemory_test.py b/model-optimizer/extensions/back/CutMemory_test.py index 51521e0a707314..4edb90e6f7eb02 100644 --- a/model-optimizer/extensions/back/CutMemory_test.py +++ b/model-optimizer/extensions/back/CutMemory_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/back/EnableConstantStridedSlice.py b/model-optimizer/extensions/back/EnableConstantStridedSlice.py index 2ffc7793335d1d..f9a03a64af808f 100644 --- a/model-optimizer/extensions/back/EnableConstantStridedSlice.py +++ b/model-optimizer/extensions/back/EnableConstantStridedSlice.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/FakeOutputResolver.py b/model-optimizer/extensions/back/FakeOutputResolver.py index f6a27186fa1daa..e007a66ee01f5a 100644 --- a/model-optimizer/extensions/back/FakeOutputResolver.py +++ b/model-optimizer/extensions/back/FakeOutputResolver.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Add from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/FakeOutputResolver_test.py b/model-optimizer/extensions/back/FakeOutputResolver_test.py index 00f9affbd4866e..64baebc8d2c070 100644 --- a/model-optimizer/extensions/back/FakeOutputResolver_test.py +++ b/model-optimizer/extensions/back/FakeOutputResolver_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/ForceStrictPrecision.py b/model-optimizer/extensions/back/ForceStrictPrecision.py index 0f2a0443cef1b9..985534dddfc904 100644 --- a/model-optimizer/extensions/back/ForceStrictPrecision.py +++ b/model-optimizer/extensions/back/ForceStrictPrecision.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.Cast import Cast from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/FuseTransposesSequence.py b/model-optimizer/extensions/back/FuseTransposesSequence.py index a9e16d71bdc33e..3e74cafd1dc963 100644 --- a/model-optimizer/extensions/back/FuseTransposesSequence.py +++ b/model-optimizer/extensions/back/FuseTransposesSequence.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/FuseTransposesSequence_test.py b/model-optimizer/extensions/back/FuseTransposesSequence_test.py index 97afe7e6244049..0614a90e9f4301 100644 --- a/model-optimizer/extensions/back/FuseTransposesSequence_test.py +++ b/model-optimizer/extensions/back/FuseTransposesSequence_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/back/GatherNormalizer.py b/model-optimizer/extensions/back/GatherNormalizer.py index 0bb1a8d96a4fda..2aef1377c5b5cc 100644 --- a/model-optimizer/extensions/back/GatherNormalizer.py +++ b/model-optimizer/extensions/back/GatherNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/back/GroupedConvWeightsNormalize.py b/model-optimizer/extensions/back/GroupedConvWeightsNormalize.py index 4848fa63f84984..fbcbb4c5ef0e75 100644 --- a/model-optimizer/extensions/back/GroupedConvWeightsNormalize.py +++ b/model-optimizer/extensions/back/GroupedConvWeightsNormalize.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/InterpolateReshape.py b/model-optimizer/extensions/back/InterpolateReshape.py index b8686fa317a6c2..60323d1f88f2a9 100644 --- a/model-optimizer/extensions/back/InterpolateReshape.py +++ b/model-optimizer/extensions/back/InterpolateReshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/back/InterpolateReshape_test.py b/model-optimizer/extensions/back/InterpolateReshape_test.py index c685004f85c779..0ab62e5d7548fc 100644 --- a/model-optimizer/extensions/back/InterpolateReshape_test.py +++ b/model-optimizer/extensions/back/InterpolateReshape_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/back/LRNToNorm.py b/model-optimizer/extensions/back/LRNToNorm.py index 4984ae49263569..6da78e6fc28e50 100644 --- a/model-optimizer/extensions/back/LRNToNorm.py +++ b/model-optimizer/extensions/back/LRNToNorm.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/back/LayoutChangeForGatherND.py b/model-optimizer/extensions/back/LayoutChangeForGatherND.py index 8f6d1c7c69d166..daa741af19c095 100644 --- a/model-optimizer/extensions/back/LayoutChangeForGatherND.py +++ b/model-optimizer/extensions/back/LayoutChangeForGatherND.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.transpose import Transpose diff --git a/model-optimizer/extensions/back/LayoutChangeForGatherND_test.py b/model-optimizer/extensions/back/LayoutChangeForGatherND_test.py index 7bf611ea63ac8f..7d517fe3c13063 100644 --- a/model-optimizer/extensions/back/LayoutChangeForGatherND_test.py +++ b/model-optimizer/extensions/back/LayoutChangeForGatherND_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/LeakyReLUMutation.py b/model-optimizer/extensions/back/LeakyReLUMutation.py index 6232f66b2d3f39..5e1a6c09a783ce 100644 --- a/model-optimizer/extensions/back/LeakyReLUMutation.py +++ b/model-optimizer/extensions/back/LeakyReLUMutation.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.back.ForceStrictPrecision import ForceStrictPrecision diff --git a/model-optimizer/extensions/back/LinearToLinearONNXReplacer.py b/model-optimizer/extensions/back/LinearToLinearONNXReplacer.py new file mode 100644 index 00000000000000..a7e8846aba007b --- /dev/null +++ b/model-optimizer/extensions/back/LinearToLinearONNXReplacer.py @@ -0,0 +1,28 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from extensions.back.InterpolateReshape import InterpolateConcat, InterpolateReshapeWA +from mo.back.replacement import BackReplacementPattern +from mo.graph.graph import Graph + + +class LinearToLinearONNXReplacer(BackReplacementPattern): + """ + If we don't use this transformation, then we have a performance drop, because CPU and GPU have no optimized + version of the 'linear' mode of the operation Interpolate. + TODO: delete this transformation, when CPU and GPU will have optimized version of the 'linear' mode. + """ + enabled = True + + def run_after(self): + return [InterpolateConcat, InterpolateReshapeWA] + + def find_and_replace_pattern(self, graph: Graph): + for interpolate_node in graph.get_op_nodes(type='Interpolate', version='opset4', mode='linear'): + input_shape = interpolate_node.in_port(0).data.get_shape() + interpolate_name = interpolate_node.soft_get('name', interpolate_node.id) + assert input_shape is not None, \ + 'Shape of interpolated data for node {} must not be None'.format(interpolate_name) + input_rank = len(input_shape) + if input_rank == 4: + interpolate_node['mode'] = 'linear_onnx' diff --git a/model-optimizer/extensions/back/MarkNodesWithShapeValues.py b/model-optimizer/extensions/back/MarkNodesWithShapeValues.py new file mode 100644 index 00000000000000..0201e31423a9d9 --- /dev/null +++ b/model-optimizer/extensions/back/MarkNodesWithShapeValues.py @@ -0,0 +1,78 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import logging as log + +import numpy as np + +from extensions.middle.MarkSubgraphsWithCorrectLayout import MarkSubGraphsWithCorrectLayout +from mo.back.replacement import BackReplacementPattern +from mo.graph.graph import Graph + + +class MarkNodesWithShapeValues(BackReplacementPattern): + """ + This transformation marks op nodes in ShapeOf subgraphs with 'returns_shape_value' bool attribute and + data nodes of float32 constants with 'correct_data_type' attribute. + So that float Consts and Cast float will be kept in FP32 even if argument --data_type=FP16 is specified. + + This is needed to enable conversion to FP16 even if values in ShapeOf subgraphs exceed max(float16) + or because of FP16 lower precession shape inference is incorrect on some nodes (e.g. if Interpolate in scales mode + accepts values from ShapeOf subgraph). + + This transformation should be executed after shape inference and after all transformations which insert/modify + Cast nodes in ShapeOf subgraphs therefore it's placed at the end of the back phase. + """ + enabled = True + graph_condition = [lambda graph: graph.graph['cmd_params'].data_type == 'FP16'] + + def run_after(self): + from extensions.back.pass_separator import BackFinish + return [BackFinish] + + def run_before(self): + return [] + + @staticmethod + def get_operations_with_shape_inputs(): + return { + 'Interpolate': [1, 2], # sizes, scales inputs + 'Reshape': [1], # shape + 'Broadcast': [1], # target_shape + 'ConvBackPropData ': [2], # output_shape + 'GroupConvolutionBackpropData ': [2], # output_shape + 'BatchToSpace': [1, 2, 3], # block_shape, crops_begin, crops_end + 'SpaceToBatch': [1, 2, 3], # block_shape, pads_begin, pads_end + 'StridedSlice': [1, 2, 3], # begin, end, strides + 'VariadicSplit': [2], # split_lengths + 'Tile': [1], # repeats input + 'TopK': [1], # K input + 'Pad': [1, 2], # pads_begin, pads_end + 'Range': [0, 1, 2], # start, stop, step inputs + 'OneHot': [1], # depth input + } + + def find_and_replace_pattern(self, graph: Graph): + shape_input_ops_map = self.get_operations_with_shape_inputs() + + nodes_with_shape_inputs = [] + for node in graph.get_op_nodes(): + if node.soft_get('type') in shape_input_ops_map: + nodes_with_shape_inputs.append(node) + + start_nodes = [] + for node in nodes_with_shape_inputs: + start_nodes.extend( + [node.in_port(port_idx).get_source().node for port_idx in shape_input_ops_map[node.type] if + node.is_in_port_connected(port_idx)]) + + condition = lambda node: node.soft_get('type') != 'ShapeOf' + nodes_with_shape_values = MarkSubGraphsWithCorrectLayout.bfs(start_nodes, set(), condition, forward=False) + for node in nodes_with_shape_values: + node['returns_shape_value'] = True + if node.soft_get('type') == 'Const': + if node.value.dtype == np.float32: + node.out_node(0)['correct_data_type'] = True + elif node.value.dtype in [np.float16, np.float64]: + log.debug('Const nodes {} with shape values have {} type'.format(node.soft_get('name', node.id), + node.value.dtype)) diff --git a/model-optimizer/extensions/back/MarkNodesWithShapeValues_test.py b/model-optimizer/extensions/back/MarkNodesWithShapeValues_test.py new file mode 100644 index 00000000000000..0d33f7b6e21dae --- /dev/null +++ b/model-optimizer/extensions/back/MarkNodesWithShapeValues_test.py @@ -0,0 +1,103 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +import numpy as np + +from extensions.back.MarkNodesWithShapeValues import MarkNodesWithShapeValues +from mo.front.common.partial_infer.utils import int64_array, float32_array +from mo.graph.graph import Node +from mo.utils.ir_engine.compare_graphs import compare_graphs +from mo.utils.unittest.graph import build_graph +from mo.utils.unittest.graph import result, regular_op_with_empty_data, \ + shaped_const_with_data, connect, regular_op + + +class TestMarkDataTypeInShapeOfSubgraphs(unittest.TestCase): + + def test_run_with_shape_subgraph_input(self): + inp_shape = (1, 3, 1000, 1000) + dst_type = np.float32 + + nodes = { + **shaped_const_with_data('input', int64_array(inp_shape)), + **regular_op_with_empty_data('shape', {'type': 'ShapeOf'}), + **regular_op_with_empty_data('cast_to_float', {'type': 'Cast', 'dst_type': dst_type}), + **regular_op('mul_const', {'op': 'Const'}), + **{'mul_const_d': {'kind': 'data', 'value': float32_array([1., 1., 1., 100.])}}, + **regular_op_with_empty_data('mul', {'type': 'Mul'}), + **regular_op_with_empty_data('cast_to_int', {'type': 'Cast', 'dst_type': np.int64}), + **regular_op_with_empty_data('interpolate', {'type': 'Interpolate', 'shape_calculation_model': 'scales'}), + **result('res'), + } + + nodes_ref = { + **shaped_const_with_data('input', int64_array(inp_shape)), + **regular_op_with_empty_data('shape', {'type': 'ShapeOf'}), + **regular_op_with_empty_data('cast_to_float', {'type': 'Cast', 'dst_type': dst_type, + 'returns_shape_value': True}), + **regular_op_with_empty_data('mul', {'type': 'Mul', 'returns_shape_value': True}), + **regular_op('mul_const', {'op': 'Const', 'returns_shape_value': True}), + **{'mul_const_d': {'kind': 'data', 'value': float32_array([1., 1., 1., 100.]), + 'correct_data_type': True}}, + **regular_op_with_empty_data('cast_to_int', {'type': 'Cast', 'dst_type': np.int64, + 'returns_shape_value': True}), + **regular_op_with_empty_data('interpolate', {'type': 'Interpolate', 'shape_calculation_model': 'scales'}), + **result('res'), + } + + edges = [ + *connect('input', '0:interpolate'), + *connect('input', '0:shape', skip_data=True), + *connect('shape', '0:cast_to_float'), + *connect('cast_to_float', '0:mul'), + *connect('mul_const', '1:mul'), + *connect('mul', '0:cast_to_int'), + *connect('cast_to_int', '1:interpolate'), + *connect('interpolate', 'res'), + ] + graph = build_graph(nodes, edges) + interp_node = Node(graph, 'interpolate') + interp_node.add_input_port(2) + + MarkNodesWithShapeValues().find_and_replace_pattern(graph) + + graph_ref = build_graph(nodes_ref, edges) + (flag, resp) = compare_graphs(graph, graph_ref, 'res', check_op_attrs=True) + self.assertTrue(flag, resp) + + def test_run_with_const_input(self): + inp_shape = (1, 3, 1000, 1000) + dst_type = np.float32 + + nodes = { + **shaped_const_with_data('input', int64_array(inp_shape)), + **regular_op('sizes_const', {'op': 'Const'}), + **{'sizes_const_d': {'kind': 'data', 'value': float32_array([1., 1., 1., 100.])}}, + **regular_op_with_empty_data('interpolate', {'type': 'Interpolate', 'shape_calculation_model': 'scales'}), + **result('res'), + } + + nodes_ref = { + **shaped_const_with_data('input', int64_array(inp_shape)), + **regular_op('sizes_const', {'op': 'Const', 'returns_shape_value': True}), + **{'sizes_const_d': {'kind': 'data', 'value': float32_array([1., 1., 1., 100.])}}, + **regular_op_with_empty_data('interpolate', {'type': 'Interpolate', 'shape_calculation_model': 'scales'}), + **result('res'), + } + + edges = [ + *connect('input', '0:interpolate'), + *connect('sizes_const', '1:interpolate'), + *connect('interpolate', 'res'), + ] + graph = build_graph(nodes, edges) + interp_node = Node(graph, 'interpolate') + interp_node.add_input_port(2) + + MarkNodesWithShapeValues().find_and_replace_pattern(graph) + + graph_ref = build_graph(nodes_ref, edges) + (flag, resp) = compare_graphs(graph, graph_ref, 'res', check_op_attrs=True) + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/back/MatMulNormalizer.py b/model-optimizer/extensions/back/MatMulNormalizer.py index d19d6b2b3a6102..46e4b3ec750395 100644 --- a/model-optimizer/extensions/back/MatMulNormalizer.py +++ b/model-optimizer/extensions/back/MatMulNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/back/MatMulNormalizer_test.py b/model-optimizer/extensions/back/MatMulNormalizer_test.py index eb149b65d68f50..ab5d59428214d1 100644 --- a/model-optimizer/extensions/back/MatMulNormalizer_test.py +++ b/model-optimizer/extensions/back/MatMulNormalizer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/back/MaxPool.py b/model-optimizer/extensions/back/MaxPool.py index 71f62c1d99928f..b34dbef4c61f07 100644 --- a/model-optimizer/extensions/back/MaxPool.py +++ b/model-optimizer/extensions/back/MaxPool.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/NormalizeToNormalizeL2.py b/model-optimizer/extensions/back/NormalizeToNormalizeL2.py index 482c536cc85f97..81c279e72c8dd5 100644 --- a/model-optimizer/extensions/back/NormalizeToNormalizeL2.py +++ b/model-optimizer/extensions/back/NormalizeToNormalizeL2.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.back.insert_compatibility_l2normalization import CompatibilityL2NormalizationPattern diff --git a/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence.py b/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence.py index 5ef773670ed977..c1557382c90512 100644 --- a/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence.py +++ b/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import math diff --git a/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence_test.py b/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence_test.py index 123184d76d4886..5a1b2a21f0e773 100644 --- a/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence_test.py +++ b/model-optimizer/extensions/back/OptimizeTransposeReshapeSequence_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/PackBinaryWeights.py b/model-optimizer/extensions/back/PackBinaryWeights.py index 0035ad2b6b1aba..01d6cc443a1616 100644 --- a/model-optimizer/extensions/back/PackBinaryWeights.py +++ b/model-optimizer/extensions/back/PackBinaryWeights.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/back/ProposalMutation.py b/model-optimizer/extensions/back/ProposalMutation.py index 016d2f3fea9d73..7ac6f7e06c3564 100644 --- a/model-optimizer/extensions/back/ProposalMutation.py +++ b/model-optimizer/extensions/back/ProposalMutation.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/back/RNNSequenceTypeRename.py b/model-optimizer/extensions/back/RNNSequenceTypeRename.py index a8ad117f1dfa4f..3c2cb3f1dd4553 100644 --- a/model-optimizer/extensions/back/RNNSequenceTypeRename.py +++ b/model-optimizer/extensions/back/RNNSequenceTypeRename.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/ReduceMerge.py b/model-optimizer/extensions/back/ReduceMerge.py index a670a1f1b4c2fe..418f3a18ffc3b0 100644 --- a/model-optimizer/extensions/back/ReduceMerge.py +++ b/model-optimizer/extensions/back/ReduceMerge.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/back/ReduceTransposeDimensions.py b/model-optimizer/extensions/back/ReduceTransposeDimensions.py index 16ceed18a29071..b9a244c39de9e0 100644 --- a/model-optimizer/extensions/back/ReduceTransposeDimensions.py +++ b/model-optimizer/extensions/back/ReduceTransposeDimensions.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/back/ReduceTransposeDimensions_test.py b/model-optimizer/extensions/back/ReduceTransposeDimensions_test.py index 840adc4dc3215c..2de175aa8a6efa 100644 --- a/model-optimizer/extensions/back/ReduceTransposeDimensions_test.py +++ b/model-optimizer/extensions/back/ReduceTransposeDimensions_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/RemoveUselessConvert.py b/model-optimizer/extensions/back/RemoveUselessConvert.py index e2312acf4a0ff3..64a9e5c1695a13 100644 --- a/model-optimizer/extensions/back/RemoveUselessConvert.py +++ b/model-optimizer/extensions/back/RemoveUselessConvert.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/Reshape0DToSqueeze.py b/model-optimizer/extensions/back/Reshape0DToSqueeze.py index 67185e1fc17869..9ac585fd30bc34 100644 --- a/model-optimizer/extensions/back/Reshape0DToSqueeze.py +++ b/model-optimizer/extensions/back/Reshape0DToSqueeze.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/back/ReshapeMutation.py b/model-optimizer/extensions/back/ReshapeMutation.py index 685cccd11ffc38..299e70c595e44a 100644 --- a/model-optimizer/extensions/back/ReshapeMutation.py +++ b/model-optimizer/extensions/back/ReshapeMutation.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.back.ForceStrictPrecision import ForceStrictPrecision from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/ResultNormalizer.py b/model-optimizer/extensions/back/ResultNormalizer.py index 81d6aed24bd703..1f4f71789b39e5 100644 --- a/model-optimizer/extensions/back/ResultNormalizer.py +++ b/model-optimizer/extensions/back/ResultNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/ResultRename.py b/model-optimizer/extensions/back/ResultRename.py index 44bd4f9df4507e..fac0770a81e09e 100644 --- a/model-optimizer/extensions/back/ResultRename.py +++ b/model-optimizer/extensions/back/ResultRename.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph @@ -30,7 +17,12 @@ def find_and_replace_pattern(self, graph: Graph): if node.in_ports(): prev_node_out_port = node.in_port(0).get_connection().get_source() tensor_names = prev_node_out_port.get_tensor_names() - if tensor_names: + # Graph may contain Result nodes with names equal to input tensors and + # renaming in this case is not needed. The example of such situation is + # IR reader check when graph is read with correct Result names. + if tensor_names and node.soft_get('name') == tensor_names[0]: + continue + if tensor_names and not graph.get_op_nodes(name=tensor_names[0]): result_name = tensor_names[0] else: result_name = prev_node_out_port.node.soft_get('name', prev_node_out_port.node.id) + \ diff --git a/model-optimizer/extensions/back/ResultRename_test.py b/model-optimizer/extensions/back/ResultRename_test.py index ba75438d50ff01..1c70c3995e847a 100644 --- a/model-optimizer/extensions/back/ResultRename_test.py +++ b/model-optimizer/extensions/back/ResultRename_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest @@ -23,26 +10,57 @@ nodes = { **regular_op('Op1', {'type': 'Op1', 'kind': 'op', 'op': 'Op1'}), - **result('result'), - 'Op1_data': {'kind': 'data', 'fw_tensor_debug_info': [('Op1', 0, 'Op1_tensor')]} + **regular_op('Op2', {'type': 'Op2', 'kind': 'op', 'op': 'Op2'}), + **result('result1'), + **result('result2'), + 'Op1_data': {'kind': 'data', 'fw_tensor_debug_info': [('Op1', 0, 'Op1_tensor')]}, + 'Op2_data': {'kind': 'data', 'fw_tensor_debug_info': [('Op1', 0, 'Op2_tensor')]}, } class ResultRenameTest(unittest.TestCase): def test_case1(self): - graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result')]) - graph_ref = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result')]) - res_node = Node(graph_ref, 'result') - res_node['name'] = 'Op1_tensor' - + graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1')]) ResultRename().find_and_replace_pattern(graph) - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) + res_node = Node(graph, 'result1') + self.assertTrue(res_node['name'] == 'Op1_tensor') def test_case2(self): graph = build_graph(nodes, []) graph_ref = build_graph(nodes, []) ResultRename().find_and_replace_pattern(graph) - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) + (flag, resp) = compare_graphs(graph, graph_ref, 'result1', check_op_attrs=True) self.assertTrue(flag, resp) + + def test_case3(self): + graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1')]) + res_node_graph = Node(graph, 'Op1') + res_node_graph['name'] = 'Op1_tensor' + ResultRename().find_and_replace_pattern(graph) + res_node = Node(graph, 'result1') + self.assertTrue(res_node['name'] == 'Op1_tensor/sink_port_0') + + def test_case4(self): + graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1'), + ('Op1_data', 'Op2'), ('Op2', 'Op2_data'), + ('Op2_data', 'result2')]) + ResultRename().find_and_replace_pattern(graph) + res1_node = Node(graph, 'result1') + res2_node = Node(graph, 'result2') + self.assertTrue(res1_node['name'] == 'Op1_tensor') + self.assertTrue(res2_node['name'] == 'Op2_tensor') + + def test_case5(self): + graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1'), + ('Op1_data', 'Op2'), ('Op2', 'Op2_data'), + ('Op2_data', 'result2')]) + + res_node_graph = Node(graph, 'result1') + res_node_graph['name'] = 'Op1_tensor' + ResultRename().find_and_replace_pattern(graph) + res1_node = Node(graph, 'result1') + res2_node = Node(graph, 'result2') + self.assertTrue(res1_node['name'] == 'Op1_tensor') + self.assertTrue(res2_node['name'] == 'Op2_tensor') + diff --git a/model-optimizer/extensions/back/ReverseInputChannels.py b/model-optimizer/extensions/back/ReverseInputChannels.py index e578190784eb48..c0c62c10f8b356 100644 --- a/model-optimizer/extensions/back/ReverseInputChannels.py +++ b/model-optimizer/extensions/back/ReverseInputChannels.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/back/ScalarConstNormalize.py b/model-optimizer/extensions/back/ScalarConstNormalize.py index 2193e49428c532..923f68b8929dbf 100644 --- a/model-optimizer/extensions/back/ScalarConstNormalize.py +++ b/model-optimizer/extensions/back/ScalarConstNormalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.back.ReshapeMutation import ReshapeMutation from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/SelectBroadcast.py b/model-optimizer/extensions/back/SelectBroadcast.py index d45550d95cfe96..5770887d9a8d65 100644 --- a/model-optimizer/extensions/back/SelectBroadcast.py +++ b/model-optimizer/extensions/back/SelectBroadcast.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.back.ReshapeMutation import ReshapeMutation diff --git a/model-optimizer/extensions/back/ShuffleChannelPatternOptimization.py b/model-optimizer/extensions/back/ShuffleChannelPatternOptimization.py index 2ee151bfb6cbcb..7701edeb87494d 100644 --- a/model-optimizer/extensions/back/ShuffleChannelPatternOptimization.py +++ b/model-optimizer/extensions/back/ShuffleChannelPatternOptimization.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.back.FuseTransposesSequence import FuseTransposesSequence diff --git a/model-optimizer/extensions/back/ShuffleChannelPatternOptimization_test.py b/model-optimizer/extensions/back/ShuffleChannelPatternOptimization_test.py index 82a383c2c7a48c..8469c32c734e45 100644 --- a/model-optimizer/extensions/back/ShuffleChannelPatternOptimization_test.py +++ b/model-optimizer/extensions/back/ShuffleChannelPatternOptimization_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/back/ShufflenetReLUReorder.py b/model-optimizer/extensions/back/ShufflenetReLUReorder.py index 76e3fa08cf8359..89cd9d7629790a 100644 --- a/model-optimizer/extensions/back/ShufflenetReLUReorder.py +++ b/model-optimizer/extensions/back/ShufflenetReLUReorder.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/back/ShufflenetReLUReorder_test.py b/model-optimizer/extensions/back/ShufflenetReLUReorder_test.py index 3982172ce94408..38dab3464af4c9 100644 --- a/model-optimizer/extensions/back/ShufflenetReLUReorder_test.py +++ b/model-optimizer/extensions/back/ShufflenetReLUReorder_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/SpecialNodesFinalization.py b/model-optimizer/extensions/back/SpecialNodesFinalization.py index e19d413262de5e..c177d7873cf0f2 100644 --- a/model-optimizer/extensions/back/SpecialNodesFinalization.py +++ b/model-optimizer/extensions/back/SpecialNodesFinalization.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from collections import defaultdict diff --git a/model-optimizer/extensions/back/SpecialNodesFinalization_test.py b/model-optimizer/extensions/back/SpecialNodesFinalization_test.py index 1541c64666b707..46523aac61f6e3 100644 --- a/model-optimizer/extensions/back/SpecialNodesFinalization_test.py +++ b/model-optimizer/extensions/back/SpecialNodesFinalization_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/back/StridedSliceMasksNormalizer.py b/model-optimizer/extensions/back/StridedSliceMasksNormalizer.py index 18c26be0445250..4d745ede93c205 100644 --- a/model-optimizer/extensions/back/StridedSliceMasksNormalizer.py +++ b/model-optimizer/extensions/back/StridedSliceMasksNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/back/TopKNormalizer.py b/model-optimizer/extensions/back/TopKNormalizer.py index e590f4f282188d..af756a97bfc42d 100644 --- a/model-optimizer/extensions/back/TopKNormalizer.py +++ b/model-optimizer/extensions/back/TopKNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.back.Reshape0DToSqueeze import Reshape0DToSqueeze from extensions.back.ScalarConstNormalize import ScalarNormalize diff --git a/model-optimizer/extensions/back/TransposeReduceFusing.py b/model-optimizer/extensions/back/TransposeReduceFusing.py index 13d638a1af50f7..ecf8a3bf9acfa9 100644 --- a/model-optimizer/extensions/back/TransposeReduceFusing.py +++ b/model-optimizer/extensions/back/TransposeReduceFusing.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from typing import Dict import numpy as np diff --git a/model-optimizer/extensions/back/TransposeReduceFusing_test.py b/model-optimizer/extensions/back/TransposeReduceFusing_test.py index 85d578a3cc49bf..fa7ec2c1cc85f6 100644 --- a/model-optimizer/extensions/back/TransposeReduceFusing_test.py +++ b/model-optimizer/extensions/back/TransposeReduceFusing_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/UselessConcatRemoval.py b/model-optimizer/extensions/back/UselessConcatRemoval.py index c022e29f6aebe6..b067b9e8940b10 100644 --- a/model-optimizer/extensions/back/UselessConcatRemoval.py +++ b/model-optimizer/extensions/back/UselessConcatRemoval.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.back.ResultNormalizer import ResultNormalizer diff --git a/model-optimizer/extensions/back/__init__.py b/model-optimizer/extensions/back/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/back/__init__.py +++ b/model-optimizer/extensions/back/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/back/blob_normalizer.py b/model-optimizer/extensions/back/blob_normalizer.py index fc23124e3f9b7b..53f1118eac51cc 100644 --- a/model-optimizer/extensions/back/blob_normalizer.py +++ b/model-optimizer/extensions/back/blob_normalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.back.op_versioning import OpVersioning from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/compress_quantized_weights.py b/model-optimizer/extensions/back/compress_quantized_weights.py index 8c1e3d93fccafa..7a646f00caca2b 100644 --- a/model-optimizer/extensions/back/compress_quantized_weights.py +++ b/model-optimizer/extensions/back/compress_quantized_weights.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from typing import Dict @@ -22,7 +9,7 @@ from extensions.ops.elementwise import Sub, Div, Mul, Negative from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph, Node -from mo.middle.passes.convert_data_type import data_type_str_to_np, np_data_type_to_destination_type +from mo.middle.passes.convert_data_type import data_type_str_to_np, np_data_type_to_destination_type, packed_I4 from mo.ops.const import Const @@ -104,6 +91,12 @@ class CompressQuantizeWeights(BackReplacementPattern): force_clean_up = True + QUANTIZATION_MAP = { + # max_levels: (np_dtype, quantization_mode) + 256: (np.int8, "signed"), + 16: (packed_I4, "signed"), + } + def pattern(self): return dict( nodes=[ @@ -118,7 +111,7 @@ def pattern(self): ) @staticmethod - def quantize_data(fake_quantize: Node, dst_type: type): + def quantize_data(fake_quantize: Node, dst_type: type, quantized_type: type, mode: str): graph = fake_quantize.graph name = fake_quantize.soft_get('name', fake_quantize.id) levels = fake_quantize.levels @@ -131,8 +124,12 @@ def quantize_data(fake_quantize: Node, dst_type: type): fake_quantize.in_port(2).get_connection().set_destination(quantize.in_port(2)) # calculate output limits for quantized weights - i_min = np.array([-(levels // 2)], dtype=dst_type) + assert mode in ["signed", "unsigned"] + i_min_value = -(levels // 2) if mode == "signed" else 0 + + i_min = np.array([i_min_value], dtype=dst_type) i_max = np.array(levels + i_min - 1, dtype=dst_type) + assert i_max - i_min == levels - 1 out_low = Const(graph, dict(name=name + '/Copy/out_low', value=i_min)).create_node() out_high = Const(graph, dict(name=name + '/Copy/out_high', value=i_max)).create_node() @@ -144,19 +141,20 @@ def quantize_data(fake_quantize: Node, dst_type: type): original_const = quantize.in_port(0).get_source().node quantized_data_name = original_const.soft_get('name', original_const.id) + '/quantized' - cast = Cast(graph, dict(name=quantized_data_name, dst_type=np.int8, stop_value_propagation=False)).create_node() + cast = Cast(graph, dict(name=quantized_data_name, dst_type=quantized_type, + stop_value_propagation=False)).create_node() quantize.out_port(0).connect(cast.in_port(0)) cast.out_port(0).connect(fake_quantize.in_port(0)) @staticmethod - def dequantize_data(fake_quantize: Node, dst_type: type) -> Node: + def dequantize_data(fake_quantize: Node, dst_type: type, quantized_type: type) -> Node: graph = fake_quantize.graph quantized_data = fake_quantize.in_port(0).get_source().node name = fake_quantize.soft_get('name', fake_quantize.id) - assert quantized_data.soft_get('type') == 'Convert' and quantized_data.dst_type == np.int8, \ + assert quantized_data.soft_get('type') == 'Convert' and quantized_data.dst_type == quantized_type, \ 'Weights aren`t compressed as expected for node {}'.format(fake_quantize.soft_get('name', fake_quantize.id)) dequantizing_cast = Cast(graph, dict( @@ -212,5 +210,11 @@ def replace_pattern(self, graph: Graph, match: Dict[str, Node]): if np.issubdtype(dst_type, np.floating): dst_type = data_type_str_to_np(graph.graph['cmd_params'].data_type) - self.quantize_data(fake_quantize, dst_type) - self.dequantize_data(fake_quantize, dst_type) + quantized_type, mode = None, None + for quantization_levels in sorted(self.QUANTIZATION_MAP): + if quantization_levels >= fake_quantize.levels: + quantized_type, mode = self.QUANTIZATION_MAP[quantization_levels] + break + + self.quantize_data(fake_quantize, dst_type, quantized_type, mode) + self.dequantize_data(fake_quantize, dst_type, quantized_type) diff --git a/model-optimizer/extensions/back/compress_quantized_weights_test.py b/model-optimizer/extensions/back/compress_quantized_weights_test.py index 7bfab89bdb6520..251b9be4c69982 100644 --- a/model-optimizer/extensions/back/compress_quantized_weights_test.py +++ b/model-optimizer/extensions/back/compress_quantized_weights_test.py @@ -1,18 +1,6 @@ -""" - Copyright (c) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from argparse import Namespace @@ -83,7 +71,7 @@ def test_quantize(self): self.assertEqual(len(fq_nodes), 1, error_message.format('before', len(fq_nodes))) fake_quantize = fq_nodes[0] - CompressQuantizeWeights.quantize_data(fake_quantize, original_type) + CompressQuantizeWeights.quantize_data(fake_quantize, original_type, np.int8, "signed") graph.clean_up() fq_nodes = graph.get_op_nodes(type='FakeQuantize') @@ -124,7 +112,7 @@ def test_dequantize(self): self.assertEqual(len(cast_nodes), 1, error_message.format('Convert', 'before', len(cast_nodes))) cast_nodes[0]['need_shape_inference'] = True - CompressQuantizeWeights.dequantize_data(fq_nodes[0], original_type) + CompressQuantizeWeights.dequantize_data(fq_nodes[0], original_type, np.int8) graph.clean_up() fq_nodes = graph.get_op_nodes(type='FakeQuantize') diff --git a/model-optimizer/extensions/back/disable_unsupported_ND_operations.py b/model-optimizer/extensions/back/disable_unsupported_ND_operations.py index 87dc7e7f193369..b673966779fca2 100644 --- a/model-optimizer/extensions/back/disable_unsupported_ND_operations.py +++ b/model-optimizer/extensions/back/disable_unsupported_ND_operations.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/back/fuse_sub_div_min.py b/model-optimizer/extensions/back/fuse_sub_div_min.py index 647e262914dd5d..9c13708150b12e 100644 --- a/model-optimizer/extensions/back/fuse_sub_div_min.py +++ b/model-optimizer/extensions/back/fuse_sub_div_min.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.elementwise import Sub, Div, Negative diff --git a/model-optimizer/extensions/back/insert_compatibility_l2normalization.py b/model-optimizer/extensions/back/insert_compatibility_l2normalization.py index a09544ef7103cf..8d6bf733c1b290 100644 --- a/model-optimizer/extensions/back/insert_compatibility_l2normalization.py +++ b/model-optimizer/extensions/back/insert_compatibility_l2normalization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/back/insert_compatibility_l2normalization_test.py b/model-optimizer/extensions/back/insert_compatibility_l2normalization_test.py index ea7e02aeb4edc6..5c88dfba0b6267 100644 --- a/model-optimizer/extensions/back/insert_compatibility_l2normalization_test.py +++ b/model-optimizer/extensions/back/insert_compatibility_l2normalization_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/kaldi_remove_memory_output.py b/model-optimizer/extensions/back/kaldi_remove_memory_output.py index b3e275ddc38c55..96759b025da443 100644 --- a/model-optimizer/extensions/back/kaldi_remove_memory_output.py +++ b/model-optimizer/extensions/back/kaldi_remove_memory_output.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/kaldi_remove_memory_output_test.py b/model-optimizer/extensions/back/kaldi_remove_memory_output_test.py index a771be71453856..b0adddcddbecdf 100644 --- a/model-optimizer/extensions/back/kaldi_remove_memory_output_test.py +++ b/model-optimizer/extensions/back/kaldi_remove_memory_output_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/back/op_versioning.py b/model-optimizer/extensions/back/op_versioning.py index 8a78f90cb18c33..f8a8141a8c0895 100644 --- a/model-optimizer/extensions/back/op_versioning.py +++ b/model-optimizer/extensions/back/op_versioning.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/pass_separator.py b/model-optimizer/extensions/back/pass_separator.py index abad35bcb3145d..6407598af453ab 100644 --- a/model-optimizer/extensions/back/pass_separator.py +++ b/model-optimizer/extensions/back/pass_separator.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.back.replacement import BackReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/back/priorbox_mutation.py b/model-optimizer/extensions/back/priorbox_mutation.py index 01054ef2d3790d..9b33a31e028173 100644 --- a/model-optimizer/extensions/back/priorbox_mutation.py +++ b/model-optimizer/extensions/back/priorbox_mutation.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.back.ForceStrictPrecision import ForceStrictPrecision diff --git a/model-optimizer/extensions/back/remove_last_softmax_pattern.py b/model-optimizer/extensions/back/remove_last_softmax_pattern.py index d673b832938400..4b74f8f29c3b6a 100644 --- a/model-optimizer/extensions/back/remove_last_softmax_pattern.py +++ b/model-optimizer/extensions/back/remove_last_softmax_pattern.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.back.replacement import BackReplacementPattern diff --git a/model-optimizer/extensions/back/remove_last_softmax_test.py b/model-optimizer/extensions/back/remove_last_softmax_test.py index 3ff31c2fa6d74b..d9165097617cfb 100644 --- a/model-optimizer/extensions/back/remove_last_softmax_test.py +++ b/model-optimizer/extensions/back/remove_last_softmax_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/ATenToEmbeddingBag.py b/model-optimizer/extensions/front/ATenToEmbeddingBag.py index 8da70dc5c0d164..b8d48a85ea16af 100644 --- a/model-optimizer/extensions/front/ATenToEmbeddingBag.py +++ b/model-optimizer/extensions/front/ATenToEmbeddingBag.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.embedding_bag import EmbeddingBagOffsetsSum, EmbeddingBagPackedSum from extensions.ops.rank import Rank diff --git a/model-optimizer/extensions/front/ATenToEmbeddingBag_test.py b/model-optimizer/extensions/front/ATenToEmbeddingBag_test.py index bade2da38dbc9d..31436a037d7a66 100644 --- a/model-optimizer/extensions/front/ATenToEmbeddingBag_test.py +++ b/model-optimizer/extensions/front/ATenToEmbeddingBag_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/ArgMaxSqueeze.py b/model-optimizer/extensions/front/ArgMaxSqueeze.py index 0c5e93f4379fa3..da8b7283027fe7 100644 --- a/model-optimizer/extensions/front/ArgMaxSqueeze.py +++ b/model-optimizer/extensions/front/ArgMaxSqueeze.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementSubgraph from mo.graph.graph import Graph from mo.ops.const import Const diff --git a/model-optimizer/extensions/front/AttributedClampNormalizer.py b/model-optimizer/extensions/front/AttributedClampNormalizer.py index 0b5559666f6b92..e58eb97525f77e 100644 --- a/model-optimizer/extensions/front/AttributedClampNormalizer.py +++ b/model-optimizer/extensions/front/AttributedClampNormalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.common.replacement import FrontReplacementPattern diff --git a/model-optimizer/extensions/front/AttributedClampNormalizer_test.py b/model-optimizer/extensions/front/AttributedClampNormalizer_test.py index 0eb1bb7b4a8e14..ba7aa09e51a5d2 100644 --- a/model-optimizer/extensions/front/AttributedClampNormalizer_test.py +++ b/model-optimizer/extensions/front/AttributedClampNormalizer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/AttributedGatherNormalizer.py b/model-optimizer/extensions/front/AttributedGatherNormalizer.py index 659fe4e494b18a..6dc473402932f1 100644 --- a/model-optimizer/extensions/front/AttributedGatherNormalizer.py +++ b/model-optimizer/extensions/front/AttributedGatherNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.gather import Gather from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/AttributedPadToPad.py b/model-optimizer/extensions/front/AttributedPadToPad.py index f5002b9089ed2d..74798722372d33 100644 --- a/model-optimizer/extensions/front/AttributedPadToPad.py +++ b/model-optimizer/extensions/front/AttributedPadToPad.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph, rename_nodes diff --git a/model-optimizer/extensions/front/AttributedPadToPad_test.py b/model-optimizer/extensions/front/AttributedPadToPad_test.py index 8133657756f02a..6a878c3daba85e 100644 --- a/model-optimizer/extensions/front/AttributedPadToPad_test.py +++ b/model-optimizer/extensions/front/AttributedPadToPad_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/ChangeCastOutputType.py b/model-optimizer/extensions/front/ChangeCastOutputType.py deleted file mode 100644 index 7dcbeaa09163e2..00000000000000 --- a/model-optimizer/extensions/front/ChangeCastOutputType.py +++ /dev/null @@ -1,51 +0,0 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -import logging as log - -import numpy as np - -from mo.front.common.replacement import FrontReplacementSubgraph -from mo.front.subgraph_matcher import SubgraphMatch -from mo.graph.graph import Graph -from mo.middle.passes.convert_data_type import data_type_str_to_np - - -class ChangeCastOutputType(FrontReplacementSubgraph): - """ - Change the Cast to fp64 to fp32 since not all plugins support fp64 data type. - Change the Cast to fp32 to fp16 when generating IR for fp16. - """ - enabled = True - - def pattern(self): - return dict( - nodes=[ - ('cast', dict(op='Cast')) - ], - edges=[] - ) - - def replace_sub_graph(self, graph: Graph, match: [dict, SubgraphMatch]): - node = match['cast'] - if node.dst_type == np.float64: - log.warning('Change data type from {} to {} for node {}'.format(node.dst_type, np.float32, node.name)) - node.dst_type = np.float32 - - ir_data_type = data_type_str_to_np(node.graph.graph['cmd_params'].data_type) - if node.dst_type == np.float32 and ir_data_type == np.float16: - log.warning('Change data type from {} to {} for node {}'.format(node.dst_type, ir_data_type, node.name)) - node.dst_type = ir_data_type diff --git a/model-optimizer/extensions/front/ChangePlaceholderTypes.py b/model-optimizer/extensions/front/ChangePlaceholderTypes.py index 92796a9ad533c1..fb432ca9d05720 100644 --- a/model-optimizer/extensions/front/ChangePlaceholderTypes.py +++ b/model-optimizer/extensions/front/ChangePlaceholderTypes.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer.py b/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer.py index d271db29a22c2c..92a17dca9d1278 100644 --- a/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer.py +++ b/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer_test.py b/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer_test.py index 99c0f0a1f1b123..77f9f9c528465b 100644 --- a/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer_test.py +++ b/model-optimizer/extensions/front/DropoutWithRandomUniformReplacer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/ExpandDimsToUnsqueeze.py b/model-optimizer/extensions/front/ExpandDimsToUnsqueeze.py index c285510493b424..8a77b29951ba0d 100644 --- a/model-optimizer/extensions/front/ExpandDimsToUnsqueeze.py +++ b/model-optimizer/extensions/front/ExpandDimsToUnsqueeze.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/FillToBroadcast.py b/model-optimizer/extensions/front/FillToBroadcast.py index 11d8981cef80c0..503853572d04cf 100644 --- a/model-optimizer/extensions/front/FillToBroadcast.py +++ b/model-optimizer/extensions/front/FillToBroadcast.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/GeLUMerger_Erf.py b/model-optimizer/extensions/front/GeLUMerger_Erf.py index d95fe2c8dff8f6..c35a745fd000ac 100644 --- a/model-optimizer/extensions/front/GeLUMerger_Erf.py +++ b/model-optimizer/extensions/front/GeLUMerger_Erf.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log @@ -126,7 +113,7 @@ def replace_gelu(self, graph: Graph, match: dict): # check that the values match the approximation if fabs(div_param - sqrt2) < 1e-06 and mul_param == 0.5 and add_param == 1.0: log.debug('Confirmed Erf-based GELU pattern after {} with name {}'.format(inp_node.op, inp_name)) - gelu = GeLUOP(graph, dict(name=inp_name + '/GELU_')).create_node() + gelu = GeLUOP(graph, dict(name=inp_name + '/GELU_', approximation_mode='erf')).create_node() div.in_port(0).get_connection().set_destination(gelu.in_port(0)) out_node.out_port(0).get_connection().set_source(gelu.out_port(0)) rename_nodes([(out_node, node_name + '/TBD'), (gelu, node_name)]) diff --git a/model-optimizer/extensions/front/GeLUMerger_Erf_test.py b/model-optimizer/extensions/front/GeLUMerger_Erf_test.py index 8f3a4ebca3d75e..8b8552267628f3 100644 --- a/model-optimizer/extensions/front/GeLUMerger_Erf_test.py +++ b/model-optimizer/extensions/front/GeLUMerger_Erf_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from math import sqrt @@ -23,7 +10,7 @@ from mo.utils.unittest.graph import build_graph, const, regular_op, result, build_graph ref_nodes = {**regular_op('input', {'type': 'Parameter'}), - **regular_op('gelu', {'type': 'Gelu', 'name': 'final_mul'}), + **regular_op('gelu', {'type': 'Gelu', 'approximation_mode': 'erf', 'name': 'final_mul'}), **result('result') } ref_edges = [('input', 'gelu'), ('gelu', 'result')] @@ -65,6 +52,7 @@ def test_gelu_p1(self): (flag, resp) = compare_graphs(graph, graph_ref, 'result') self.assertTrue(flag, resp) + self.assertTrue(graph.get_op_nodes(op='Gelu')[0].approximation_mode == 'erf') self.assertTrue(len(graph.get_op_nodes(name='final_mul')) == 1 and graph.get_op_nodes(name='final_mul')[0].op == 'Gelu') @@ -89,6 +77,7 @@ def test_gelu_p2(self): (flag, resp) = compare_graphs(graph, graph_ref, 'result') self.assertTrue(flag, resp) + self.assertTrue(graph.get_op_nodes(op='Gelu')[0].approximation_mode == 'erf') self.assertTrue(len(graph.get_op_nodes(name='final_mul')) == 1 and graph.get_op_nodes(name='final_mul')[0].op == 'Gelu') @@ -113,5 +102,6 @@ def test_gelu_p3(self): (flag, resp) = compare_graphs(graph, graph_ref, 'result') self.assertTrue(flag, resp) + self.assertTrue(graph.get_op_nodes(op='Gelu')[0].approximation_mode == 'erf') self.assertTrue(len(graph.get_op_nodes(name='final_mul')) == 1 and graph.get_op_nodes(name='final_mul')[0].op == 'Gelu') diff --git a/model-optimizer/extensions/front/GeLUMerger_Tanh.py b/model-optimizer/extensions/front/GeLUMerger_Tanh.py index 923cf3623329b2..20664f6ff801a3 100644 --- a/model-optimizer/extensions/front/GeLUMerger_Tanh.py +++ b/model-optimizer/extensions/front/GeLUMerger_Tanh.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log @@ -74,6 +61,6 @@ def replace_sub_graph(self, graph: Graph, match: dict): # check that the values match the approximation if fabs(mul0_param - sqrt2pi) < 1e-06 and fabs(mul_param - 0.044715) < 1e-06 and mul1_param == 0.5: log.debug('Confirmed TanH-based GELU pattern after {} with name {}'.format(inp.op, inp.name)) - gelu = GeLUOP(graph, dict(name=inp.name + '/GELU_')).create_node() + gelu = GeLUOP(graph, dict(name=inp.name + '/GELU_', approximation_mode='tanh')).create_node() inp_port.connect(gelu.in_port(0)) match['mul2'].out_port(0).get_connection().set_source(gelu.out_port(0)) diff --git a/model-optimizer/extensions/front/GeLUMerger_test.py b/model-optimizer/extensions/front/GeLUMerger_Tanh_test.py similarity index 59% rename from model-optimizer/extensions/front/GeLUMerger_test.py rename to model-optimizer/extensions/front/GeLUMerger_Tanh_test.py index 6c6b698918bc6f..9c29feb98563ae 100644 --- a/model-optimizer/extensions/front/GeLUMerger_test.py +++ b/model-optimizer/extensions/front/GeLUMerger_Tanh_test.py @@ -1,25 +1,11 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest +from math import sqrt import numpy as np -from math import sqrt -from extensions.front.GeLUMerger_Erf import GeLUMergerErf from extensions.front.GeLUMerger_Tanh import GeLUMergerTanh from mo.utils.ir_engine.compare_graphs import compare_graphs from mo.utils.unittest.graph import build_graph @@ -55,42 +41,13 @@ nodes_attributes_ref = { 'inp': {'kind': 'op', 'op': 'AnyOp'}, - 'gelu': {'kind': 'op', 'op': 'Gelu'}, + 'gelu': {'kind': 'op', 'op': 'Gelu', 'approximation_mode': 'tanh'}, 'out': {'kind': 'op', 'op': 'AnyOp'}, } -class TestGeLUMergerReplacement(unittest.TestCase): - def test_GeLUMergerErf_test_1(self): - graph = build_graph(nodes_attributes_erf, - [('inp', 'mul0', {'out': 0}), - ('inp', 'div', {'out': 0}), - ('mul', 'mul0'), - ('div', 'erf'), - ('erf', 'add'), - ('add', 'mul0'), - ('mul_param', 'mul'), - ('div_param', 'div'), - ('add_param', 'add'), - ('mul0', 'out'), - ], - {'mul_param': {'shape': np.array([1]), 'value': np.array(0.5)}, - 'add_param': {'shape': np.array([1]), 'value': np.array(1.0)}, - 'div_param': {'shape': np.array([1]), 'value': np.array(sqrt(2.0))} - }, - nodes_with_edges_only=True) - graph_ref = build_graph(nodes_attributes_ref, - [('inp', 'gelu'), - ('gelu', 'out')], - {}, nodes_with_edges_only=True) - graph.stage = 'front' - - replacer = GeLUMergerErf() - replacer.find_and_replace_pattern(graph) - (flag, resp) = compare_graphs(graph, graph_ref, 'out', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_GeLUMergerTanh_test_2(self): +class TestGeLUMergerReplacement(unittest.TestCase): + def test_GeLUMergerTanh(self): graph = build_graph(nodes_attributes_tanh, [('inp', 'mul2', {'out': 0}), ('inp', 'add', {'out': 0}), @@ -122,4 +79,4 @@ def test_GeLUMergerTanh_test_2(self): replacer.find_and_replace_pattern(graph) (flag, resp) = compare_graphs(graph, graph_ref, 'out', check_op_attrs=True) - self.assertTrue(flag, resp) \ No newline at end of file + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/front/HSigmoid_fusion.py b/model-optimizer/extensions/front/HSigmoid_fusion.py index 555cd4484020dc..a898308d3a1804 100644 --- a/model-optimizer/extensions/front/HSigmoid_fusion.py +++ b/model-optimizer/extensions/front/HSigmoid_fusion.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.front.AttributedClampNormalizer import AttributedClampNormalizer diff --git a/model-optimizer/extensions/front/HSigmoid_fusion_test.py b/model-optimizer/extensions/front/HSigmoid_fusion_test.py index 6c6b9961bcd247..3edb80f86eea29 100644 --- a/model-optimizer/extensions/front/HSigmoid_fusion_test.py +++ b/model-optimizer/extensions/front/HSigmoid_fusion_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/HSwish_fusing_test.py b/model-optimizer/extensions/front/HSwish_fusing_test.py index b7cedba4a16d6f..912ea92ee51880 100644 --- a/model-optimizer/extensions/front/HSwish_fusing_test.py +++ b/model-optimizer/extensions/front/HSwish_fusing_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/HSwish_fusion.py b/model-optimizer/extensions/front/HSwish_fusion.py index 624d1ba4ee90c4..f6907c450730f6 100644 --- a/model-optimizer/extensions/front/HSwish_fusion.py +++ b/model-optimizer/extensions/front/HSwish_fusion.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.front.AttributedClampNormalizer import AttributedClampNormalizer diff --git a/model-optimizer/extensions/front/InterpolateNormalizer.py b/model-optimizer/extensions/front/InterpolateNormalizer.py index ce590d75ed45e9..4f19ccbe48d97a 100644 --- a/model-optimizer/extensions/front/InterpolateNormalizer.py +++ b/model-optimizer/extensions/front/InterpolateNormalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import inspect import logging as log diff --git a/model-optimizer/extensions/front/InterpolateV1ToInterpolate.py b/model-optimizer/extensions/front/InterpolateV1ToInterpolate.py index 906965c8c7557d..31866c0de2da35 100644 --- a/model-optimizer/extensions/front/InterpolateV1ToInterpolate.py +++ b/model-optimizer/extensions/front/InterpolateV1ToInterpolate.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/LayerNorm.py b/model-optimizer/extensions/front/LayerNorm.py index 58e847908104b5..11293e3992427d 100644 --- a/model-optimizer/extensions/front/LayerNorm.py +++ b/model-optimizer/extensions/front/LayerNorm.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/LayerNorm_test.py b/model-optimizer/extensions/front/LayerNorm_test.py index fe34989dee4108..85127c9edc7b79 100644 --- a/model-optimizer/extensions/front/LayerNorm_test.py +++ b/model-optimizer/extensions/front/LayerNorm_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/Log1p.py b/model-optimizer/extensions/front/Log1p.py index c37b7f329fa874..98d6a6a6a787af 100644 --- a/model-optimizer/extensions/front/Log1p.py +++ b/model-optimizer/extensions/front/Log1p.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.activation_ops import Log diff --git a/model-optimizer/extensions/front/Log1p_test.py b/model-optimizer/extensions/front/Log1p_test.py index 98a4c9f94877a9..4fab1fd5948e41 100644 --- a/model-optimizer/extensions/front/Log1p_test.py +++ b/model-optimizer/extensions/front/Log1p_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/MatMul_normalizer.py b/model-optimizer/extensions/front/MatMul_normalizer.py index 1baddac0d58062..81588336d681da 100644 --- a/model-optimizer/extensions/front/MatMul_normalizer.py +++ b/model-optimizer/extensions/front/MatMul_normalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import math import numpy as np diff --git a/model-optimizer/extensions/front/Mish_fusion.py b/model-optimizer/extensions/front/Mish_fusion.py index 5d0bfa2e638746..f86ea349944159 100644 --- a/model-optimizer/extensions/front/Mish_fusion.py +++ b/model-optimizer/extensions/front/Mish_fusion.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.Softplus_fusion import SoftplusFusion from extensions.ops.activation_ops import Mish diff --git a/model-optimizer/extensions/front/Mish_fusion_test.py b/model-optimizer/extensions/front/Mish_fusion_test.py index c1d97c431a4f2d..8febc581acdd67 100644 --- a/model-optimizer/extensions/front/Mish_fusion_test.py +++ b/model-optimizer/extensions/front/Mish_fusion_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/MoveEmbeddedInputsToInputs.py b/model-optimizer/extensions/front/MoveEmbeddedInputsToInputs.py index 102338f69c5824..a37818271c21ba 100644 --- a/model-optimizer/extensions/front/MoveEmbeddedInputsToInputs.py +++ b/model-optimizer/extensions/front/MoveEmbeddedInputsToInputs.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.pass_separator import FrontStart from extensions.front.restore_ports import RestorePorts diff --git a/model-optimizer/extensions/front/OneHotDepthNormalizer.py b/model-optimizer/extensions/front/OneHotDepthNormalizer.py index 14416664850a7d..1e6f6bb44777d1 100644 --- a/model-optimizer/extensions/front/OneHotDepthNormalizer.py +++ b/model-optimizer/extensions/front/OneHotDepthNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementPattern diff --git a/model-optimizer/extensions/front/OneHotDepthNormalizer_test.py b/model-optimizer/extensions/front/OneHotDepthNormalizer_test.py index eac210e50d5b53..159c4f2d5124e6 100644 --- a/model-optimizer/extensions/front/OneHotDepthNormalizer_test.py +++ b/model-optimizer/extensions/front/OneHotDepthNormalizer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/Pack.py b/model-optimizer/extensions/front/Pack.py index 4070ec44e4fa7d..ad386f8429157a 100644 --- a/model-optimizer/extensions/front/Pack.py +++ b/model-optimizer/extensions/front/Pack.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp from mo.front.tf.graph_utils import create_op_with_const_inputs diff --git a/model-optimizer/extensions/front/Pack_test.py b/model-optimizer/extensions/front/Pack_test.py index 7471b8e1a97fbd..21185302f5d524 100644 --- a/model-optimizer/extensions/front/Pack_test.py +++ b/model-optimizer/extensions/front/Pack_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/PowerToEltwises.py b/model-optimizer/extensions/front/PowerToEltwises.py index 9c8b2aee6837fa..5e2ce2a9f0ec3b 100644 --- a/model-optimizer/extensions/front/PowerToEltwises.py +++ b/model-optimizer/extensions/front/PowerToEltwises.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/Softplus_fusion.py b/model-optimizer/extensions/front/Softplus_fusion.py index eb5ff592298597..4d600e1b969b77 100644 --- a/model-optimizer/extensions/front/Softplus_fusion.py +++ b/model-optimizer/extensions/front/Softplus_fusion.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.activation_ops import SoftPlus diff --git a/model-optimizer/extensions/front/Softplus_fusion_test.py b/model-optimizer/extensions/front/Softplus_fusion_test.py index eba085e93352a6..1adcd8022ae6d0 100644 --- a/model-optimizer/extensions/front/Softplus_fusion_test.py +++ b/model-optimizer/extensions/front/Softplus_fusion_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/SqueezeNormalize.py b/model-optimizer/extensions/front/SqueezeNormalize.py index bec23837fff968..bfc0f6080be12e 100644 --- a/model-optimizer/extensions/front/SqueezeNormalize.py +++ b/model-optimizer/extensions/front/SqueezeNormalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/Swish_fusion.py b/model-optimizer/extensions/front/Swish_fusion.py index bd47af787b664b..48cc69ca540fb5 100644 --- a/model-optimizer/extensions/front/Swish_fusion.py +++ b/model-optimizer/extensions/front/Swish_fusion.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Swish from mo.front.common.replacement import FrontReplacementSubgraph diff --git a/model-optimizer/extensions/front/Swish_fusion_test.py b/model-optimizer/extensions/front/Swish_fusion_test.py index 08144c8d006608..f4620e3b139b22 100644 --- a/model-optimizer/extensions/front/Swish_fusion_test.py +++ b/model-optimizer/extensions/front/Swish_fusion_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/ThresholdedReluDecomposition.py b/model-optimizer/extensions/front/ThresholdedReluDecomposition.py index b7db4f1b143fc9..4cd590efc728de 100644 --- a/model-optimizer/extensions/front/ThresholdedReluDecomposition.py +++ b/model-optimizer/extensions/front/ThresholdedReluDecomposition.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.Cast import Cast from extensions.ops.elementwise import Greater, Mul diff --git a/model-optimizer/extensions/front/ThresholdedReluDecomposition_test.py b/model-optimizer/extensions/front/ThresholdedReluDecomposition_test.py index be0dee03a978e4..2dc592feeb3f9d 100644 --- a/model-optimizer/extensions/front/ThresholdedReluDecomposition_test.py +++ b/model-optimizer/extensions/front/ThresholdedReluDecomposition_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.front.ThresholdedReluDecomposition import ThresholdedReluDecomposition diff --git a/model-optimizer/extensions/front/TopKNormalize.py b/model-optimizer/extensions/front/TopKNormalize.py index 0692bd17d5712d..f30112fbe05701 100644 --- a/model-optimizer/extensions/front/TopKNormalize.py +++ b/model-optimizer/extensions/front/TopKNormalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/TransposeOrderNormalizer.py b/model-optimizer/extensions/front/TransposeOrderNormalizer.py index dd08b52e9b6ebb..8deff02ab74aac 100644 --- a/model-optimizer/extensions/front/TransposeOrderNormalizer.py +++ b/model-optimizer/extensions/front/TransposeOrderNormalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.tf.pad_tf_to_pad import PadTFToPad from mo.front.common.replacement import FrontReplacementSubgraph from mo.front.subgraph_matcher import SubgraphMatch diff --git a/model-optimizer/extensions/front/YOLO.py b/model-optimizer/extensions/front/YOLO.py index 2a042cb32a3eab..867e839fe3c452 100644 --- a/model-optimizer/extensions/front/YOLO.py +++ b/model-optimizer/extensions/front/YOLO.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.no_op_eraser import NoOpEraser from extensions.front.standalone_const_eraser import StandaloneConstEraser diff --git a/model-optimizer/extensions/front/__init__.py b/model-optimizer/extensions/front/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/front/__init__.py +++ b/model-optimizer/extensions/front/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/front/binary_quantize_normalization.py b/model-optimizer/extensions/front/binary_quantize_normalization.py index 55c4ad79589441..b3ad1ea1f97747 100644 --- a/model-optimizer/extensions/front/binary_quantize_normalization.py +++ b/model-optimizer/extensions/front/binary_quantize_normalization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/binary_quantize_normalization_test.py b/model-optimizer/extensions/front/binary_quantize_normalization_test.py index fa0d9cd17d6f8c..2b64e1993fa522 100644 --- a/model-optimizer/extensions/front/binary_quantize_normalization_test.py +++ b/model-optimizer/extensions/front/binary_quantize_normalization_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/broadcast_with_range.py b/model-optimizer/extensions/front/broadcast_with_range.py index 0bb73b1e2e4b59..77da39a5130929 100644 --- a/model-optimizer/extensions/front/broadcast_with_range.py +++ b/model-optimizer/extensions/front/broadcast_with_range.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/broadcast_with_range_test.py b/model-optimizer/extensions/front/broadcast_with_range_test.py index 2c1ef540e86440..9c1bfb1b5f6252 100644 --- a/model-optimizer/extensions/front/broadcast_with_range_test.py +++ b/model-optimizer/extensions/front/broadcast_with_range_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/caffe/ArgMaxFlatten.py b/model-optimizer/extensions/front/caffe/ArgMaxFlatten.py index e5651be48af0be..dd7d30919e88a2 100644 --- a/model-optimizer/extensions/front/caffe/ArgMaxFlatten.py +++ b/model-optimizer/extensions/front/caffe/ArgMaxFlatten.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp from mo.front.tf.graph_utils import create_op_node_with_second_input diff --git a/model-optimizer/extensions/front/caffe/MVNNormalizer.py b/model-optimizer/extensions/front/caffe/MVNCaffeToMVN.py similarity index 74% rename from model-optimizer/extensions/front/caffe/MVNNormalizer.py rename to model-optimizer/extensions/front/caffe/MVNCaffeToMVN.py index bd9ebff5c83912..bc027a3087b06a 100644 --- a/model-optimizer/extensions/front/caffe/MVNNormalizer.py +++ b/model-optimizer/extensions/front/caffe/MVNCaffeToMVN.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.mvn import MVN from extensions.ops.range import Range from extensions.ops.rank import Rank diff --git a/model-optimizer/extensions/front/caffe/MVNNormalize_test.py b/model-optimizer/extensions/front/caffe/MVNCaffeToMVN_test.py similarity index 80% rename from model-optimizer/extensions/front/caffe/MVNNormalize_test.py rename to model-optimizer/extensions/front/caffe/MVNCaffeToMVN_test.py index b16f55235adda6..76fe876fff9caa 100644 --- a/model-optimizer/extensions/front/caffe/MVNNormalize_test.py +++ b/model-optimizer/extensions/front/caffe/MVNCaffeToMVN_test.py @@ -1,24 +1,11 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np -from extensions.front.caffe.MVNNormalizer import MVNCaffeToMVN +from extensions.front.caffe.MVNCaffeToMVN import MVNCaffeToMVN from mo.utils.ir_engine.compare_graphs import compare_graphs from mo.utils.unittest.graph import build_graph, regular_op_with_empty_data, result, const, connect_front @@ -37,7 +24,7 @@ } -class MVNNormalizerTest(unittest.TestCase): +class MVNCaffeToMVNTest(unittest.TestCase): def test_mvn_normalizer(self): graph = build_graph(nodes, [('input', 'mvn_caffe'), ('mvn_caffe', 'output')], diff --git a/model-optimizer/extensions/front/caffe/__init__.py b/model-optimizer/extensions/front/caffe/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/front/caffe/__init__.py +++ b/model-optimizer/extensions/front/caffe/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/front/caffe/accum_ext.py b/model-optimizer/extensions/front/caffe/accum_ext.py index 7c042616b14865..dda896921d9f84 100644 --- a/model-optimizer/extensions/front/caffe/accum_ext.py +++ b/model-optimizer/extensions/front/caffe/accum_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.accum import AccumOp from mo.front.caffe.collect_attributes import collect_attributes from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/accum_ext_test.py b/model-optimizer/extensions/front/caffe/accum_ext_test.py index 817179cef88068..6c5477cd58585f 100644 --- a/model-optimizer/extensions/front/caffe/accum_ext_test.py +++ b/model-optimizer/extensions/front/caffe/accum_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/argmax_ext.py b/model-optimizer/extensions/front/caffe/argmax_ext.py index bcf51c96c884cf..7924592900a5a5 100644 --- a/model-optimizer/extensions/front/caffe/argmax_ext.py +++ b/model-optimizer/extensions/front/caffe/argmax_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.argmax import ArgMaxOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/argmax_ext_test.py b/model-optimizer/extensions/front/caffe/argmax_ext_test.py index b748eaef4691f1..0f55d526e2b6ea 100644 --- a/model-optimizer/extensions/front/caffe/argmax_ext_test.py +++ b/model-optimizer/extensions/front/caffe/argmax_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/axpy.py b/model-optimizer/extensions/front/caffe/axpy.py index 22ac09fe5c9001..b489e038926b0e 100644 --- a/model-optimizer/extensions/front/caffe/axpy.py +++ b/model-optimizer/extensions/front/caffe/axpy.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Add from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/caffe/axpy_test.py b/model-optimizer/extensions/front/caffe/axpy_test.py index fc462b60d6b78f..e1ca7df5fbc7a6 100644 --- a/model-optimizer/extensions/front/caffe/axpy_test.py +++ b/model-optimizer/extensions/front/caffe/axpy_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.front.caffe.axpy import AxpyToSSandAdd diff --git a/model-optimizer/extensions/front/caffe/batchnorm_ext.py b/model-optimizer/extensions/front/caffe/batchnorm_ext.py index 419fb738f1ae32..16effdffb2719b 100644 --- a/model-optimizer/extensions/front/caffe/batchnorm_ext.py +++ b/model-optimizer/extensions/front/caffe/batchnorm_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.BatchNormInference import BatchNormInference diff --git a/model-optimizer/extensions/front/caffe/binarization.py b/model-optimizer/extensions/front/caffe/binarization.py index b4b5387823102b..f29f19f4a1b89e 100644 --- a/model-optimizer/extensions/front/caffe/binarization.py +++ b/model-optimizer/extensions/front/caffe/binarization.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.fakequantize import FakeQuantize diff --git a/model-optimizer/extensions/front/caffe/binary_conv_ext.py b/model-optimizer/extensions/front/caffe/binary_conv_ext.py index 2e7c1e6cf470aa..87964017a60d02 100644 --- a/model-optimizer/extensions/front/caffe/binary_conv_ext.py +++ b/model-optimizer/extensions/front/caffe/binary_conv_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.caffe.conv_ext import conv_create_attrs, conv_set_params from mo.front.caffe.extractors.utils import weights_biases diff --git a/model-optimizer/extensions/front/caffe/bn.py b/model-optimizer/extensions/front/caffe/bn.py index 4aa3cdc34323fa..dc38504db7e8ec 100644 --- a/model-optimizer/extensions/front/caffe/bn.py +++ b/model-optimizer/extensions/front/caffe/bn.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/caffe/bn_ext.py b/model-optimizer/extensions/front/caffe/bn_ext.py index 39f83be46065f7..0e0da720ab8293 100644 --- a/model-optimizer/extensions/front/caffe/bn_ext.py +++ b/model-optimizer/extensions/front/caffe/bn_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.BN import BN from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/bn_test.py b/model-optimizer/extensions/front/caffe/bn_test.py index c6be7929e05463..6ea6ed0f0ff8c7 100644 --- a/model-optimizer/extensions/front/caffe/bn_test.py +++ b/model-optimizer/extensions/front/caffe/bn_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np import unittest diff --git a/model-optimizer/extensions/front/caffe/concat_ext.py b/model-optimizer/extensions/front/caffe/concat_ext.py index abbc85cd390f99..a5ac31233aac5e 100644 --- a/model-optimizer/extensions/front/caffe/concat_ext.py +++ b/model-optimizer/extensions/front/caffe/concat_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.concat import Concat diff --git a/model-optimizer/extensions/front/caffe/conv_ext.py b/model-optimizer/extensions/front/caffe/conv_ext.py index c72f20bdd265ee..f09f7b1fb1e782 100644 --- a/model-optimizer/extensions/front/caffe/conv_ext.py +++ b/model-optimizer/extensions/front/caffe/conv_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/caffe/conv_ext_test.py b/model-optimizer/extensions/front/caffe/conv_ext_test.py index 58530f32f8e86a..eb1e368e8c75b6 100644 --- a/model-optimizer/extensions/front/caffe/conv_ext_test.py +++ b/model-optimizer/extensions/front/caffe/conv_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/correlation_ext.py b/model-optimizer/extensions/front/caffe/correlation_ext.py index 827fbaad5dda72..f63a49be5e7db7 100644 --- a/model-optimizer/extensions/front/caffe/correlation_ext.py +++ b/model-optimizer/extensions/front/caffe/correlation_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.correlation import CorrelationOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.common.extractors.utils import layout_attrs diff --git a/model-optimizer/extensions/front/caffe/correlation_ext_test.py b/model-optimizer/extensions/front/caffe/correlation_ext_test.py index 8bb19437a54bf3..d526dace33831c 100644 --- a/model-optimizer/extensions/front/caffe/correlation_ext_test.py +++ b/model-optimizer/extensions/front/caffe/correlation_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/crop_ext.py b/model-optimizer/extensions/front/caffe/crop_ext.py index 073e286b4330f0..4cb52303a71ada 100644 --- a/model-optimizer/extensions/front/caffe/crop_ext.py +++ b/model-optimizer/extensions/front/caffe/crop_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.crop import crop_infer from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/crop_ext_test.py b/model-optimizer/extensions/front/caffe/crop_ext_test.py index 755c0c066d1ae2..295ff6932f4342 100644 --- a/model-optimizer/extensions/front/caffe/crop_ext_test.py +++ b/model-optimizer/extensions/front/caffe/crop_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext.py b/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext.py index e68e2ddc3c1442..99ad990898a151 100644 --- a/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext.py +++ b/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.ctc_greedy_decoder import CTCGreedyDecoderOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.common.extractors.utils import layout_attrs diff --git a/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext_test.py b/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext_test.py index 0193e974fa5125..46f1532ddd8fb1 100644 --- a/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext_test.py +++ b/model-optimizer/extensions/front/caffe/ctcgreedydecoder_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/data_augmentation_ext.py b/model-optimizer/extensions/front/caffe/data_augmentation_ext.py index 1e474e0db9ad1f..19e84bd068a9b9 100644 --- a/model-optimizer/extensions/front/caffe/data_augmentation_ext.py +++ b/model-optimizer/extensions/front/caffe/data_augmentation_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.data_augmentation import DataAugmentationOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.caffe.extractors.utils import embed_input diff --git a/model-optimizer/extensions/front/caffe/data_augmentation_ext_test.py b/model-optimizer/extensions/front/caffe/data_augmentation_ext_test.py index 33b4ef26fb1e2f..facf87ea3ad7b3 100644 --- a/model-optimizer/extensions/front/caffe/data_augmentation_ext_test.py +++ b/model-optimizer/extensions/front/caffe/data_augmentation_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/detection_output.py b/model-optimizer/extensions/front/caffe/detection_output.py index 0f43b73a7ed98b..1371fe1ffbd5c2 100644 --- a/model-optimizer/extensions/front/caffe/detection_output.py +++ b/model-optimizer/extensions/front/caffe/detection_output.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/caffe/dropout_ext.py b/model-optimizer/extensions/front/caffe/dropout_ext.py index 2737986e83155b..52d860185ca8af 100644 --- a/model-optimizer/extensions/front/caffe/dropout_ext.py +++ b/model-optimizer/extensions/front/caffe/dropout_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/elementwise_ext.py b/model-optimizer/extensions/front/caffe/elementwise_ext.py index 144bab6ca9f1b6..16a128be7ae008 100644 --- a/model-optimizer/extensions/front/caffe/elementwise_ext.py +++ b/model-optimizer/extensions/front/caffe/elementwise_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.elementwise import Add, Mul, Maximum diff --git a/model-optimizer/extensions/front/caffe/elementwise_ext_test.py b/model-optimizer/extensions/front/caffe/elementwise_ext_test.py index 681fb856dba050..59b83363ed1108 100644 --- a/model-optimizer/extensions/front/caffe/elementwise_ext_test.py +++ b/model-optimizer/extensions/front/caffe/elementwise_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/eltwise_add_normalize.py b/model-optimizer/extensions/front/caffe/eltwise_add_normalize.py index 94180fd1123c47..9aedf8618dfcb5 100644 --- a/model-optimizer/extensions/front/caffe/eltwise_add_normalize.py +++ b/model-optimizer/extensions/front/caffe/eltwise_add_normalize.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.front.eltwise_n import EltwiseNReplacement diff --git a/model-optimizer/extensions/front/caffe/eltwise_add_normalize_test.py b/model-optimizer/extensions/front/caffe/eltwise_add_normalize_test.py index 4d0635982685f8..d347693fec3117 100644 --- a/model-optimizer/extensions/front/caffe/eltwise_add_normalize_test.py +++ b/model-optimizer/extensions/front/caffe/eltwise_add_normalize_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/caffe/elu.py b/model-optimizer/extensions/front/caffe/elu.py index eee09bc560b689..1229f23986b328 100644 --- a/model-optimizer/extensions/front/caffe/elu.py +++ b/model-optimizer/extensions/front/caffe/elu.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Elu from mo.front.caffe.collect_attributes import collect_attributes diff --git a/model-optimizer/extensions/front/caffe/elu_test.py b/model-optimizer/extensions/front/caffe/elu_test.py index dc30e54e8250da..b5cebf6cc97316 100644 --- a/model-optimizer/extensions/front/caffe/elu_test.py +++ b/model-optimizer/extensions/front/caffe/elu_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/flatten_ext.py b/model-optimizer/extensions/front/caffe/flatten_ext.py index 2eb3593f3c32d8..702fe6332aad08 100644 --- a/model-optimizer/extensions/front/caffe/flatten_ext.py +++ b/model-optimizer/extensions/front/caffe/flatten_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.flatten import Flatten diff --git a/model-optimizer/extensions/front/caffe/grn_ext.py b/model-optimizer/extensions/front/caffe/grn_ext.py index e7112f56975981..25177d1b1a2002 100644 --- a/model-optimizer/extensions/front/caffe/grn_ext.py +++ b/model-optimizer/extensions/front/caffe/grn_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.grn import GRNOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/grn_ext_test.py b/model-optimizer/extensions/front/caffe/grn_ext_test.py index 0499be2b0c7b4c..dc8f1d6d99f349 100644 --- a/model-optimizer/extensions/front/caffe/grn_ext_test.py +++ b/model-optimizer/extensions/front/caffe/grn_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/inner_product_ext.py b/model-optimizer/extensions/front/caffe/inner_product_ext.py index b6e861ed345b1f..538e8c1a2ef8bd 100644 --- a/model-optimizer/extensions/front/caffe/inner_product_ext.py +++ b/model-optimizer/extensions/front/caffe/inner_product_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.MatMul import FullyConnected from mo.front.caffe.extractors.utils import weights_biases diff --git a/model-optimizer/extensions/front/caffe/input_ext.py b/model-optimizer/extensions/front/caffe/input_ext.py index b880dc65b36f5b..f062e5804a2555 100644 --- a/model-optimizer/extensions/front/caffe/input_ext.py +++ b/model-optimizer/extensions/front/caffe/input_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.parameter import Parameter from mo.front.caffe.extractors.utils import dim_to_shape diff --git a/model-optimizer/extensions/front/caffe/interp_ext.py b/model-optimizer/extensions/front/caffe/interp_ext.py index 6d953cbf94fd51..202d65e89de605 100644 --- a/model-optimizer/extensions/front/caffe/interp_ext.py +++ b/model-optimizer/extensions/front/caffe/interp_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.interpolate import Interpolate from mo.front.caffe.collect_attributes import merge_attrs diff --git a/model-optimizer/extensions/front/caffe/lrn_ext.py b/model-optimizer/extensions/front/caffe/lrn_ext.py index 1c0a72ca06eec3..3982278ead0f6c 100644 --- a/model-optimizer/extensions/front/caffe/lrn_ext.py +++ b/model-optimizer/extensions/front/caffe/lrn_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.ops.lrn import AttributedLRN diff --git a/model-optimizer/extensions/front/caffe/mvn_ext.py b/model-optimizer/extensions/front/caffe/mvn_ext.py index 6b50a786edcc5d..c77bbb547d8882 100644 --- a/model-optimizer/extensions/front/caffe/mvn_ext.py +++ b/model-optimizer/extensions/front/caffe/mvn_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.mvn import MVNCaffe from mo.front.caffe.collect_attributes import collect_attributes from mo.front.extractor import FrontExtractorOp @@ -29,6 +17,11 @@ def extract(cls, node): attrs = collect_attributes(param) + if 'normalize_variance' not in attrs: + attrs['normalize_variance'] = 1 + if 'across_channels' not in attrs: + attrs['across_channels'] = 0 + # update the attributes of the node MVNCaffe.update_node_stat(node, attrs) return cls.enabled diff --git a/model-optimizer/extensions/front/caffe/normalize_ext.py b/model-optimizer/extensions/front/caffe/normalize_ext.py index dbb8ee098c0734..b99e9e0b5d1b31 100644 --- a/model-optimizer/extensions/front/caffe/normalize_ext.py +++ b/model-optimizer/extensions/front/caffe/normalize_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.normalize import NormalizeOp from mo.front.caffe.collect_attributes import collect_attributes from mo.front.caffe.extractors.utils import weights_biases diff --git a/model-optimizer/extensions/front/caffe/normalize_ext_test.py b/model-optimizer/extensions/front/caffe/normalize_ext_test.py index ed76fcd1e8c556..be2041cc03e524 100644 --- a/model-optimizer/extensions/front/caffe/normalize_ext_test.py +++ b/model-optimizer/extensions/front/caffe/normalize_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/permute_ext.py b/model-optimizer/extensions/front/caffe/permute_ext.py index ca9e3f3b13694e..a0d298eb411f14 100644 --- a/model-optimizer/extensions/front/caffe/permute_ext.py +++ b/model-optimizer/extensions/front/caffe/permute_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/caffe/pooling_ext.py b/model-optimizer/extensions/front/caffe/pooling_ext.py index 873e0d38be43df..e16f0e5acd9adf 100644 --- a/model-optimizer/extensions/front/caffe/pooling_ext.py +++ b/model-optimizer/extensions/front/caffe/pooling_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.caffe.extractors.utils import get_spatial_attr diff --git a/model-optimizer/extensions/front/caffe/pooling_ext_test.py b/model-optimizer/extensions/front/caffe/pooling_ext_test.py index c5ada7f7787052..2fff102e87622c 100644 --- a/model-optimizer/extensions/front/caffe/pooling_ext_test.py +++ b/model-optimizer/extensions/front/caffe/pooling_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/caffe/power_file_ext.py b/model-optimizer/extensions/front/caffe/power_file_ext.py index 039cce114e4998..5c2a6a42ea4658 100644 --- a/model-optimizer/extensions/front/caffe/power_file_ext.py +++ b/model-optimizer/extensions/front/caffe/power_file_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.power_file import PowerFileOp from mo.front.caffe.collect_attributes import collect_attributes from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/power_file_ext_test.py b/model-optimizer/extensions/front/caffe/power_file_ext_test.py index be4ace65318ef9..7984735f6eae9d 100644 --- a/model-optimizer/extensions/front/caffe/power_file_ext_test.py +++ b/model-optimizer/extensions/front/caffe/power_file_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/prelu_ext.py b/model-optimizer/extensions/front/caffe/prelu_ext.py index 33df993a8dc358..41187003856c39 100644 --- a/model-optimizer/extensions/front/caffe/prelu_ext.py +++ b/model-optimizer/extensions/front/caffe/prelu_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.prelu import PReLU from mo.front.caffe.collect_attributes import merge_attrs from mo.front.caffe.extractors.utils import weights_biases diff --git a/model-optimizer/extensions/front/caffe/prelu_ext_test.py b/model-optimizer/extensions/front/caffe/prelu_ext_test.py index 581b6cde09104c..3aacb165d03e2b 100644 --- a/model-optimizer/extensions/front/caffe/prelu_ext_test.py +++ b/model-optimizer/extensions/front/caffe/prelu_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/priorbox_clustered_ext.py b/model-optimizer/extensions/front/caffe/priorbox_clustered_ext.py index 8648f69d46fa3f..475b6e24e2994c 100644 --- a/model-optimizer/extensions/front/caffe/priorbox_clustered_ext.py +++ b/model-optimizer/extensions/front/caffe/priorbox_clustered_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.priorbox_clustered import PriorBoxClusteredOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.common.extractors.utils import layout_attrs diff --git a/model-optimizer/extensions/front/caffe/priorbox_clustered_ext_test.py b/model-optimizer/extensions/front/caffe/priorbox_clustered_ext_test.py index f3ba679df7e4e5..a5081500389267 100644 --- a/model-optimizer/extensions/front/caffe/priorbox_clustered_ext_test.py +++ b/model-optimizer/extensions/front/caffe/priorbox_clustered_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/priorbox_ext.py b/model-optimizer/extensions/front/caffe/priorbox_ext.py index f3b544be5bcc21..5ef4162746a240 100644 --- a/model-optimizer/extensions/front/caffe/priorbox_ext.py +++ b/model-optimizer/extensions/front/caffe/priorbox_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.priorbox import PriorBoxOp diff --git a/model-optimizer/extensions/front/caffe/priorbox_ext_test.py b/model-optimizer/extensions/front/caffe/priorbox_ext_test.py index db1d8b086f44ca..a3a12b680d99a6 100644 --- a/model-optimizer/extensions/front/caffe/priorbox_ext_test.py +++ b/model-optimizer/extensions/front/caffe/priorbox_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/proposal_ext.py b/model-optimizer/extensions/front/caffe/proposal_ext.py index e3973601cb8a5b..9019a1c7e8e3a9 100644 --- a/model-optimizer/extensions/front/caffe/proposal_ext.py +++ b/model-optimizer/extensions/front/caffe/proposal_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.proposal import ProposalOp diff --git a/model-optimizer/extensions/front/caffe/proposal_ext_test.py b/model-optimizer/extensions/front/caffe/proposal_ext_test.py index e2a15babde5627..8a5ea3285f64a0 100644 --- a/model-optimizer/extensions/front/caffe/proposal_ext_test.py +++ b/model-optimizer/extensions/front/caffe/proposal_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/proposal_python_ext.py b/model-optimizer/extensions/front/caffe/proposal_python_ext.py index 18170812f6c662..706533345ba7d3 100644 --- a/model-optimizer/extensions/front/caffe/proposal_python_ext.py +++ b/model-optimizer/extensions/front/caffe/proposal_python_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.ops.proposal import ProposalOp diff --git a/model-optimizer/extensions/front/caffe/proposal_python_ext_test.py b/model-optimizer/extensions/front/caffe/proposal_python_ext_test.py index b6f2f2b7779706..fb496bd7f75b73 100644 --- a/model-optimizer/extensions/front/caffe/proposal_python_ext_test.py +++ b/model-optimizer/extensions/front/caffe/proposal_python_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/caffe/psroipooling_ext.py b/model-optimizer/extensions/front/caffe/psroipooling_ext.py index 5050c65d3f4d5d..c605035932a0f7 100644 --- a/model-optimizer/extensions/front/caffe/psroipooling_ext.py +++ b/model-optimizer/extensions/front/caffe/psroipooling_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.psroipooling import PSROIPoolingOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.common.extractors.utils import layout_attrs diff --git a/model-optimizer/extensions/front/caffe/regionyolo_ext.py b/model-optimizer/extensions/front/caffe/regionyolo_ext.py index 91cc2dd84a561f..540035d9a9e738 100644 --- a/model-optimizer/extensions/front/caffe/regionyolo_ext.py +++ b/model-optimizer/extensions/front/caffe/regionyolo_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.regionyolo import RegionYoloOp diff --git a/model-optimizer/extensions/front/caffe/regionyolo_ext_test.py b/model-optimizer/extensions/front/caffe/regionyolo_ext_test.py index 87db9dce25d75f..6400b70055fc3e 100644 --- a/model-optimizer/extensions/front/caffe/regionyolo_ext_test.py +++ b/model-optimizer/extensions/front/caffe/regionyolo_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/relu6.py b/model-optimizer/extensions/front/caffe/relu6.py index bf6c29f478bead..be0fcf803c37b6 100644 --- a/model-optimizer/extensions/front/caffe/relu6.py +++ b/model-optimizer/extensions/front/caffe/relu6.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import ReLU6 from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/relu_ext.py b/model-optimizer/extensions/front/caffe/relu_ext.py index 5689338f4ac83e..10723bd4d6027f 100644 --- a/model-optimizer/extensions/front/caffe/relu_ext.py +++ b/model-optimizer/extensions/front/caffe/relu_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import LeakyReLU, ReLU from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/reorgyolo_ext.py b/model-optimizer/extensions/front/caffe/reorgyolo_ext.py index c33c759c7f3d57..44db8ce9346185 100644 --- a/model-optimizer/extensions/front/caffe/reorgyolo_ext.py +++ b/model-optimizer/extensions/front/caffe/reorgyolo_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.reorgyolo import ReorgYoloOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.common.extractors.utils import layout_attrs diff --git a/model-optimizer/extensions/front/caffe/reorgyolo_ext_test.py b/model-optimizer/extensions/front/caffe/reorgyolo_ext_test.py index 3775eb98b74d87..2f3cfde2627bf4 100644 --- a/model-optimizer/extensions/front/caffe/reorgyolo_ext_test.py +++ b/model-optimizer/extensions/front/caffe/reorgyolo_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/resample_ext.py b/model-optimizer/extensions/front/caffe/resample_ext.py index e59997ea326ddc..7c9a74d2c99b06 100644 --- a/model-optimizer/extensions/front/caffe/resample_ext.py +++ b/model-optimizer/extensions/front/caffe/resample_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.interpolate import Interpolate from mo.front.caffe.collect_attributes import merge_attrs from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/caffe/reshape.py b/model-optimizer/extensions/front/caffe/reshape.py index 49d78f3b9d7aae..08f3ed05a5f0c6 100644 --- a/model-optimizer/extensions/front/caffe/reshape.py +++ b/model-optimizer/extensions/front/caffe/reshape.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/roipooling_ext.py b/model-optimizer/extensions/front/caffe/roipooling_ext.py index 76cbd4fd3925b0..3b39e436e67f19 100644 --- a/model-optimizer/extensions/front/caffe/roipooling_ext.py +++ b/model-optimizer/extensions/front/caffe/roipooling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.roipooling import ROIPooling diff --git a/model-optimizer/extensions/front/caffe/scale_ext.py b/model-optimizer/extensions/front/caffe/scale_ext.py index 53c5a1a323b396..bd54581453811e 100644 --- a/model-optimizer/extensions/front/caffe/scale_ext.py +++ b/model-optimizer/extensions/front/caffe/scale_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/caffe/shufflechannel_ext.py b/model-optimizer/extensions/front/caffe/shufflechannel_ext.py index 2c00c50fbaa539..d04e3064c68a55 100644 --- a/model-optimizer/extensions/front/caffe/shufflechannel_ext.py +++ b/model-optimizer/extensions/front/caffe/shufflechannel_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.shufflechannel import ShuffleChannels from mo.front.caffe.collect_attributes import collect_attributes from mo.front.common.extractors.utils import layout_attrs diff --git a/model-optimizer/extensions/front/caffe/sigmoid.py b/model-optimizer/extensions/front/caffe/sigmoid.py index 4d1fba12005e4e..17fabc1135536b 100644 --- a/model-optimizer/extensions/front/caffe/sigmoid.py +++ b/model-optimizer/extensions/front/caffe/sigmoid.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Sigmoid from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/simplernms_ext.py b/model-optimizer/extensions/front/caffe/simplernms_ext.py index b3c446966d9f27..09b6fcab09232a 100644 --- a/model-optimizer/extensions/front/caffe/simplernms_ext.py +++ b/model-optimizer/extensions/front/caffe/simplernms_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.simplernms import SimplerNMSOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/simplernms_ext_test.py b/model-optimizer/extensions/front/caffe/simplernms_ext_test.py index 834e0ca4f15250..af7420d4c5fd9a 100644 --- a/model-optimizer/extensions/front/caffe/simplernms_ext_test.py +++ b/model-optimizer/extensions/front/caffe/simplernms_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/slice_ext.py b/model-optimizer/extensions/front/caffe/slice_ext.py index fb4f8b0cf55b38..d71a72573c3f54 100644 --- a/model-optimizer/extensions/front/caffe/slice_ext.py +++ b/model-optimizer/extensions/front/caffe/slice_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/slice_to_split.py b/model-optimizer/extensions/front/caffe/slice_to_split.py index f42b94fcc9d2ab..96d19f89596d03 100644 --- a/model-optimizer/extensions/front/caffe/slice_to_split.py +++ b/model-optimizer/extensions/front/caffe/slice_to_split.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/caffe/softmax_ext.py b/model-optimizer/extensions/front/caffe/softmax_ext.py index fd838d58831beb..6e75866ff5f816 100644 --- a/model-optimizer/extensions/front/caffe/softmax_ext.py +++ b/model-optimizer/extensions/front/caffe/softmax_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.softmax import Softmax diff --git a/model-optimizer/extensions/front/caffe/spatial_transformer_ext.py b/model-optimizer/extensions/front/caffe/spatial_transformer_ext.py index a5d573559212d4..7227196d532bb5 100644 --- a/model-optimizer/extensions/front/caffe/spatial_transformer_ext.py +++ b/model-optimizer/extensions/front/caffe/spatial_transformer_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.spatial_transformer import SpatialTransformOp from mo.front.caffe.collect_attributes import merge_attrs from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/caffe/spatial_transformer_ext_test.py b/model-optimizer/extensions/front/caffe/spatial_transformer_ext_test.py index 8246e07c3bcaa8..059903cbd1f362 100644 --- a/model-optimizer/extensions/front/caffe/spatial_transformer_ext_test.py +++ b/model-optimizer/extensions/front/caffe/spatial_transformer_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/extensions/front/caffe/split_to_identity.py b/model-optimizer/extensions/front/caffe/split_to_identity.py index 5d39d2d1980c79..423fd7389f6e95 100644 --- a/model-optimizer/extensions/front/caffe/split_to_identity.py +++ b/model-optimizer/extensions/front/caffe/split_to_identity.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.identity import Identity from mo.front.common.replacement import FrontReplacementOp from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/caffe/tanh.py b/model-optimizer/extensions/front/caffe/tanh.py index 668eb91006bc92..b73fa00a3f456f 100644 --- a/model-optimizer/extensions/front/caffe/tanh.py +++ b/model-optimizer/extensions/front/caffe/tanh.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Tanh from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/create_tensor_nodes.py b/model-optimizer/extensions/front/create_tensor_nodes.py index 0a389c99920298..e54332ff4429a9 100644 --- a/model-optimizer/extensions/front/create_tensor_nodes.py +++ b/model-optimizer/extensions/front/create_tensor_nodes.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.front.extractor import create_tensor_nodes from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/disable_weights_quantize_value_propagation.py b/model-optimizer/extensions/front/disable_weights_quantize_value_propagation.py index 85da9265a77c98..96ffb303b3ceff 100644 --- a/model-optimizer/extensions/front/disable_weights_quantize_value_propagation.py +++ b/model-optimizer/extensions/front/disable_weights_quantize_value_propagation.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.tf.FakeQuantWithMinMaxVars import FakeQuantWithMinMaxVarsToQuantize from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/div.py b/model-optimizer/extensions/front/div.py index 1c0f875ee44f11..1e6f32c9f59551 100644 --- a/model-optimizer/extensions/front/div.py +++ b/model-optimizer/extensions/front/div.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/div_test.py b/model-optimizer/extensions/front/div_test.py index e06f08208d7101..9d32f1d2da76c9 100644 --- a/model-optimizer/extensions/front/div_test.py +++ b/model-optimizer/extensions/front/div_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/eltwise_n.py b/model-optimizer/extensions/front/eltwise_n.py index ad44b4a6689165..aaba8c320518ba 100644 --- a/model-optimizer/extensions/front/eltwise_n.py +++ b/model-optimizer/extensions/front/eltwise_n.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Add, Maximum, Minimum, Mul from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/eltwise_n_test.py b/model-optimizer/extensions/front/eltwise_n_test.py index dd0c5fd123eb23..46705e2c8b4311 100644 --- a/model-optimizer/extensions/front/eltwise_n_test.py +++ b/model-optimizer/extensions/front/eltwise_n_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/flatten_to_reshape.py b/model-optimizer/extensions/front/flatten_to_reshape.py index 9683c0e3097ac3..4ee70725a69cca 100644 --- a/model-optimizer/extensions/front/flatten_to_reshape.py +++ b/model-optimizer/extensions/front/flatten_to_reshape.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.rank_decomposer import RankDecomposer from extensions.ops.ReduceOps import ReduceProd from extensions.ops.rank import Rank diff --git a/model-optimizer/extensions/front/freeze_placeholder_value.py b/model-optimizer/extensions/front/freeze_placeholder_value.py index 05cf5b3abbf775..9c905841ff9358 100644 --- a/model-optimizer/extensions/front/freeze_placeholder_value.py +++ b/model-optimizer/extensions/front/freeze_placeholder_value.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/freeze_placeholder_value_test.py b/model-optimizer/extensions/front/freeze_placeholder_value_test.py index 93c443492f7fdd..421d566fa3e0a2 100644 --- a/model-optimizer/extensions/front/freeze_placeholder_value_test.py +++ b/model-optimizer/extensions/front/freeze_placeholder_value_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/global_pooling_to_reduce.py b/model-optimizer/extensions/front/global_pooling_to_reduce.py index 1887c3daa3c526..135dd22548cdac 100644 --- a/model-optimizer/extensions/front/global_pooling_to_reduce.py +++ b/model-optimizer/extensions/front/global_pooling_to_reduce.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/image_scaler.py b/model-optimizer/extensions/front/image_scaler.py index dc18baa9c8329a..b1331705c30da9 100644 --- a/model-optimizer/extensions/front/image_scaler.py +++ b/model-optimizer/extensions/front/image_scaler.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/image_scaler_test.py b/model-optimizer/extensions/front/image_scaler_test.py index 8c7142681106b3..521e2ccb1cf470 100644 --- a/model-optimizer/extensions/front/image_scaler_test.py +++ b/model-optimizer/extensions/front/image_scaler_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/input_cut.py b/model-optimizer/extensions/front/input_cut.py index c5c6f30247b091..a93347ab5d9152 100644 --- a/model-optimizer/extensions/front/input_cut.py +++ b/model-optimizer/extensions/front/input_cut.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.front.extractor import add_input_ops from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/instance_normalization.py b/model-optimizer/extensions/front/instance_normalization.py index d4f9917e832a27..57025ddda33d35 100644 --- a/model-optimizer/extensions/front/instance_normalization.py +++ b/model-optimizer/extensions/front/instance_normalization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Add, Mul from extensions.ops.mvn import MVN diff --git a/model-optimizer/extensions/front/instance_normalization_test.py b/model-optimizer/extensions/front/instance_normalization_test.py index 91ad4a5646b258..b8d0fdd30d5171 100644 --- a/model-optimizer/extensions/front/instance_normalization_test.py +++ b/model-optimizer/extensions/front/instance_normalization_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/interpolate_reshape.py b/model-optimizer/extensions/front/interpolate_reshape.py index 1d0201d0dcb7fb..16a31a847d1a56 100644 --- a/model-optimizer/extensions/front/interpolate_reshape.py +++ b/model-optimizer/extensions/front/interpolate_reshape.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.gather import Gather diff --git a/model-optimizer/extensions/front/interpolate_reshape_test.py b/model-optimizer/extensions/front/interpolate_reshape_test.py index cb3dabb438d190..0fc090f8897a34 100644 --- a/model-optimizer/extensions/front/interpolate_reshape_test.py +++ b/model-optimizer/extensions/front/interpolate_reshape_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/kaldi/__init__.py b/model-optimizer/extensions/front/kaldi/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/front/kaldi/__init__.py +++ b/model-optimizer/extensions/front/kaldi/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/front/kaldi/add_permute_after_convolution.py b/model-optimizer/extensions/front/kaldi/add_permute_after_convolution.py index e3611d474b6327..8511bbc8d747d4 100644 --- a/model-optimizer/extensions/front/kaldi/add_permute_after_convolution.py +++ b/model-optimizer/extensions/front/kaldi/add_permute_after_convolution.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from collections import deque from extensions.front.MatMul_normalizer import FullyConnectedDecomposer diff --git a/model-optimizer/extensions/front/kaldi/add_permute_after_convolution_test.py b/model-optimizer/extensions/front/kaldi/add_permute_after_convolution_test.py index 9ffc65eab9983c..28017a2509a3f2 100644 --- a/model-optimizer/extensions/front/kaldi/add_permute_after_convolution_test.py +++ b/model-optimizer/extensions/front/kaldi/add_permute_after_convolution_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/kaldi/add_reshape_around_convolution.py b/model-optimizer/extensions/front/kaldi/add_reshape_around_convolution.py index 81733284598825..42ef5d4da061a1 100644 --- a/model-optimizer/extensions/front/kaldi/add_reshape_around_convolution.py +++ b/model-optimizer/extensions/front/kaldi/add_reshape_around_convolution.py @@ -1,27 +1,14 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.Cast import Cast from extensions.ops.elementwise import Div -from mo.front.common.partial_infer.utils import int64_array, float_array +from mo.front.common.partial_infer.utils import int64_array, float32_array from mo.front.common.replacement import FrontReplacementPattern from mo.front.tf.graph_utils import create_op_with_const_inputs, create_op_node_with_second_input from mo.graph.graph import Graph -from mo.middle.passes.convert_data_type import data_type_str_to_np from mo.ops.concat import Concat from mo.ops.reshape import Reshape from mo.ops.shape import Shape @@ -58,21 +45,23 @@ def replace_pattern(graph: Graph, match: dict): node = match['conv'] node_name = node.soft_get('name', node.id) + dst_dtype = np.float32 # even if data_type=FP16 use float32 for shape values + # create Reshape before convolution # shape = [in_shape[0], in_shape[1]/patch_stride, 1, patch_stride] i_shape = Shape(graph, {'name': node_name + '/Shape'}).create_node() shape = Cast(graph, {'name': node_name + '/to_float', - 'dst_type': data_type_str_to_np(graph.graph['cmd_params'].data_type)}).create_node() + 'dst_type': dst_dtype}).create_node() i_shape.in_port(0).connect(node.in_port(0).get_source()) shape.in_port(0).connect(i_shape.out_port(0)) N, H = node_to_get_shape_value_of_indices(shape, [0]), node_to_get_shape_value_of_indices(shape, [1]) div = create_op_with_const_inputs( - graph, Div, {1: float_array([node.patch_stride])}, {'name': node_name + '/div_stride_h'}) + graph, Div, {1: float32_array([node.patch_stride])}, {'name': node_name + '/div_stride_h'}) div.in_port(0).connect(H.out_port(0)) - concat = create_op_with_const_inputs(graph, Concat, {2: float_array([1]), 3: float_array([node.patch_stride])}, + concat = create_op_with_const_inputs(graph, Concat, {2: float32_array([1]), 3: float32_array([node.patch_stride])}, {'name': node_name + '/concat_all_dims', 'in_ports_count': 4, 'axis': 0}) concat.in_port(0).connect(N.out_port(0)) concat.in_port(1).connect(div.out_port(0)) diff --git a/model-optimizer/extensions/front/kaldi/add_reshape_around_pooling.py b/model-optimizer/extensions/front/kaldi/add_reshape_around_pooling.py index 68c56299ab8a8e..10c992d6a830cb 100644 --- a/model-optimizer/extensions/front/kaldi/add_reshape_around_pooling.py +++ b/model-optimizer/extensions/front/kaldi/add_reshape_around_pooling.py @@ -1,27 +1,14 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.Cast import Cast from extensions.ops.elementwise import Div -from mo.front.common.partial_infer.utils import int64_array, float_array +from mo.front.common.partial_infer.utils import int64_array, float32_array from mo.front.common.replacement import FrontReplacementPattern from mo.front.tf.graph_utils import create_op_node_with_second_input, create_op_with_const_inputs from mo.graph.graph import Graph -from mo.middle.passes.convert_data_type import data_type_str_to_np from mo.ops.concat import Concat from mo.ops.reshape import Reshape from mo.ops.shape import Shape @@ -60,18 +47,20 @@ def replace_pattern(graph: Graph, match: dict): # create Reshape before convolution # shape = [in_shape[0], pool_stride, 1, in_shape[1]/pool_stride] i_shape = Shape(graph, {'name': node_name + '/Shape'}).create_node() + + dst_dtype = np.float32 # even if data_type=FP16 use float32 for shape values shape = Cast(graph, {'name': node_name + '/to_float', - 'dst_type': data_type_str_to_np(graph.graph['cmd_params'].data_type)}).create_node() + 'dst_type': dst_dtype}).create_node() i_shape.in_port(0).connect(node.in_port(0).get_source()) shape.in_port(0).connect(i_shape.out_port(0)) N, H = node_to_get_shape_value_of_indices(shape, [0]), node_to_get_shape_value_of_indices(shape, [1]) div = create_op_with_const_inputs( - graph, Div, {1: float_array([node.pool_stride])}, {'name': node_name + '/div_stride_h'}) + graph, Div, {1: float32_array([node.pool_stride])}, {'name': node_name + '/div_stride_h'}) div.in_port(0).connect(H.out_port(0)) - concat = create_op_with_const_inputs(graph, Concat, {1: float_array([node.pool_stride]), 2: float_array([1])}, + concat = create_op_with_const_inputs(graph, Concat, {1: float32_array([node.pool_stride]), 2: float32_array([1])}, {'name': node_name + '/concat_all_dims', 'in_ports_count': 4, 'axis': 0}) concat.in_port(0).connect(N.out_port(0)) concat.in_port(3).connect(div.out_port(0)) diff --git a/model-optimizer/extensions/front/kaldi/apply_counts.py b/model-optimizer/extensions/front/kaldi/apply_counts.py index 5b037567f3dfeb..6720ce800d757c 100644 --- a/model-optimizer/extensions/front/kaldi/apply_counts.py +++ b/model-optimizer/extensions/front/kaldi/apply_counts.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.elementwise import Add diff --git a/model-optimizer/extensions/front/kaldi/apply_counts_test.py b/model-optimizer/extensions/front/kaldi/apply_counts_test.py index e654a650d5ce8d..153d85d96cdbf0 100644 --- a/model-optimizer/extensions/front/kaldi/apply_counts_test.py +++ b/model-optimizer/extensions/front/kaldi/apply_counts_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/kaldi/logsoftmax_component_ext.py b/model-optimizer/extensions/front/kaldi/logsoftmax_component_ext.py index 3f60ae944dafeb..76d42c2803e8b9 100644 --- a/model-optimizer/extensions/front/kaldi/logsoftmax_component_ext.py +++ b/model-optimizer/extensions/front/kaldi/logsoftmax_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.ops.log_softmax import LogSoftmax from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/kaldi/memory_offset_adjustment.py b/model-optimizer/extensions/front/kaldi/memory_offset_adjustment.py index 565adfc2658fdc..092a9247c4e407 100644 --- a/model-optimizer/extensions/front/kaldi/memory_offset_adjustment.py +++ b/model-optimizer/extensions/front/kaldi/memory_offset_adjustment.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import networkx as nx from mo.front.common.replacement import FrontReplacementSubgraph @@ -65,7 +53,7 @@ def align_frame_time(graph: Graph, node: Node, frame_time_max): 'splitted': False}).create_node() # add element_size for MemoryOffset after Parameter for infer if in_node.op == 'Parameter': - memory_align['element_size'] = in_node.shape[1] + memory_align['element_size'] = in_node.shape in_port.get_connection().set_source(memory_align.out_port(0)) memory_align.in_port(0).connect(in_node_out_port) memory_align['frame_time'] = memory_align.t diff --git a/model-optimizer/extensions/front/kaldi/memory_offset_adjustment_test.py b/model-optimizer/extensions/front/kaldi/memory_offset_adjustment_test.py index fb708e775546c1..85137a2c057709 100644 --- a/model-optimizer/extensions/front/kaldi/memory_offset_adjustment_test.py +++ b/model-optimizer/extensions/front/kaldi/memory_offset_adjustment_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.front.kaldi.memory_offset_adjustment import MemoryOffsetAdjustment diff --git a/model-optimizer/extensions/front/kaldi/memoryoffset_batch_update.py b/model-optimizer/extensions/front/kaldi/memoryoffset_batch_update.py new file mode 100644 index 00000000000000..5a7a0d7a253be2 --- /dev/null +++ b/model-optimizer/extensions/front/kaldi/memoryoffset_batch_update.py @@ -0,0 +1,27 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from mo.front.common.replacement import FrontReplacementPattern +from mo.graph.graph import Graph + + +class MemoryOffsetBatchUpdate(FrontReplacementPattern): + """ + Update batch for MemoryOffset nodes with set element_size. + element_size is set in loader according to shape saved in model (for example Parameter node have shape in attribute). + But batch can be changed on front stage if user set batch through command line. So, element_size should be updated + accordingly. + """ + enabled = True + run_not_recursively = True + + def run_after(self): + from extensions.front.user_data_repack import UserDataRepack + from extensions.front.kaldi.split_recurrent_memoryoffset import SplitRecurrentMemoryOffset + return [UserDataRepack, SplitRecurrentMemoryOffset] + + def find_and_replace_pattern(self, graph: Graph): + batch = graph.get_op_nodes(op="Parameter")[0].shape[0] + for memoryoffset_node in graph.get_op_nodes(op='MemoryOffset'): + if memoryoffset_node.has_valid('element_size'): + memoryoffset_node.element_size[0] = batch diff --git a/model-optimizer/extensions/front/kaldi/replace_eltwise_nin1.py b/model-optimizer/extensions/front/kaldi/replace_eltwise_nin1.py index 5e3d74b39bf0ea..d503168432bddf 100644 --- a/model-optimizer/extensions/front/kaldi/replace_eltwise_nin1.py +++ b/model-optimizer/extensions/front/kaldi/replace_eltwise_nin1.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.elementwise import Add, Mul from extensions.ops.split import Split from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/kaldi/replace_lstm_node_pattern.py b/model-optimizer/extensions/front/kaldi/replace_lstm_node_pattern.py index 8f29bae85d45b8..f01011a25a4d03 100644 --- a/model-optimizer/extensions/front/kaldi/replace_lstm_node_pattern.py +++ b/model-optimizer/extensions/front/kaldi/replace_lstm_node_pattern.py @@ -1,39 +1,23 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np +from extensions.middle.MakeKaldiConstReshapable import create_const_with_batch_from_input from extensions.ops.MatMul import FullyConnected from extensions.ops.activation_ops import Tanh, Sigmoid from extensions.ops.elementwise import Add, Mul from extensions.ops.split import Split from mo.front.caffe.extractors.utils import input_as_const -from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp from mo.front.tf.graph_utils import create_op_with_const_inputs -from mo.graph.graph import Node, Graph, Port +from mo.graph.graph import Node, Graph from mo.ops.assign import Assign -from mo.ops.broadcast import Broadcast from mo.ops.clamp import Clamp -from mo.ops.concat import Concat from mo.ops.const import Const -from mo.ops.crop import Crop from mo.ops.read_value import ReadValue from mo.ops.result import Result from mo.ops.scale_shift import ScaleShiftOp -from mo.ops.shape import Shape def unique_id(prefix: str = 'id') -> str: @@ -53,35 +37,6 @@ def unique_id(prefix: str = 'id') -> str: unique_id.names = [] -def create_zero_value_with_batch_from_input(input_out_port: Port, second_dim, precision = np.float): - # create init_graph connected to ReadValue - graph = input_out_port.node.graph - input_name = input_out_port.node.name - shape_of_input = Shape(graph, {'name': 'shape/' + input_name}).create_node() - shape_of_input.in_port(0).connect(input_out_port) - dim_for_get_batch = Const(graph, {'name': 'dim/crop_batch/'+shape_of_input.name, - 'value': int64_array([1]), 'shape': int64_array([1])}).create_node() - get_batch = Crop(graph, {'name': 'crop_batch/' + shape_of_input.name, - 'axis': int64_array([0]), 'offset': int64_array([0]) - }).create_node() - get_batch.in_port(0).connect(shape_of_input.out_port(0)) - get_batch.in_port(1).connect(dim_for_get_batch.out_port(0)) - mem_shape_2nd_dim = Const(graph, {'name': 'gifo_r_weights_shape/'+input_name, - 'value': int64_array([second_dim]), - 'shape': int64_array([1])}).create_node() - mem_shape = Concat(graph, {'name': 'gather_memory_shape/' + input_name, - 'axis': 0, 'in_ports_count': 2}).create_node() - mem_shape.in_port(0).connect(get_batch.out_port(0)) - mem_shape.in_port(1).connect(mem_shape_2nd_dim.out_port(0)) - fill_value = Const(graph, {'name': 'fill_value/'+input_name, - 'value': np.array([0.0], precision), 'shape': int64_array([1])}).create_node() - init_value_prev_lstm_output = Broadcast(graph, {'name': 'init_value/'+input_name, - }).create_node() - init_value_prev_lstm_output.in_port(0).connect(fill_value.out_port(0)) - init_value_prev_lstm_output.in_port(1).connect(mem_shape.out_port(0)) - return init_value_prev_lstm_output - - class ReplaceLSTMNodePattern(FrontReplacementOp): op = "LSTMCell" enabled = True @@ -122,8 +77,8 @@ def replace_op(self, graph: Graph, node: Node): input_as_const(fc_layer_after_input, fc_layer_after_input_attrs, 1, 'weights', node.gifo_x_weights) input_as_const(fc_layer_after_input, fc_layer_after_input_attrs, 2, 'biases', node.gifo_biases) - init_value_prev_lstm_output = create_zero_value_with_batch_from_input(input_out_port, - node.gifo_r_weights_shape[1]) + init_value_prev_lstm_output = create_const_with_batch_from_input(input_out_port, + node.gifo_r_weights_shape[1]) prev_lstm_output = ReadValue(graph, {'name': 'prev_memory_output', 'variable_id': memory_pair_input }).create_node() @@ -162,14 +117,8 @@ def replace_op(self, graph: Graph, node: Node): split_joined_input.in_port(0).connect(join_input_prev_state_sum.out_port(0)) split_joined_input.in_port(1).connect(split_joined_input_axis.out_port(0)) - # prev_lstm_state = Memory(graph, {'name': 'prev_memory_state', - # 'id': memory_pair_output, - # 'index': 1, - # 'size': 2, - # 'shape': np.array([node.input_gate_weights.shape[0]], dtype=np.int64) - # }).create_node() - init_value_prev_lstm_state = create_zero_value_with_batch_from_input(split_joined_input.out_port(0), - node.input_gate_weights.shape[0]) + init_value_prev_lstm_state = create_const_with_batch_from_input(split_joined_input.out_port(0), + node.input_gate_weights.shape[0]) prev_lstm_state = ReadValue(graph, {'name': 'prev_memory_state', 'variable_id': memory_pair_output}).create_node() prev_lstm_state.in_port(0).connect(init_value_prev_lstm_state.out_port(0)) diff --git a/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity.py b/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity.py index 9bd5de07b821d8..14d56c789fd15f 100644 --- a/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity.py +++ b/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.activation_ops import Sigmoid, Tanh diff --git a/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity_test.py b/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity_test.py index 311f54d2933a36..8b875b2f72c7e9 100644 --- a/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity_test.py +++ b/model-optimizer/extensions/front/kaldi/replace_lstm_nonlinearity_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/kaldi/set_ports.py b/model-optimizer/extensions/front/kaldi/set_ports.py index f2614362c6a365..022cb1c7debe88 100644 --- a/model-optimizer/extensions/front/kaldi/set_ports.py +++ b/model-optimizer/extensions/front/kaldi/set_ports.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementSubgraph from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/front/kaldi/sigmoid_ext.py b/model-optimizer/extensions/front/kaldi/sigmoid_ext.py index 03ab52d1e9cebb..f253d1bd8cdd3b 100644 --- a/model-optimizer/extensions/front/kaldi/sigmoid_ext.py +++ b/model-optimizer/extensions/front/kaldi/sigmoid_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Sigmoid from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/kaldi/sigmoid_ext_test.py b/model-optimizer/extensions/front/kaldi/sigmoid_ext_test.py index 8d30458f317397..b4b003d0a08f31 100644 --- a/model-optimizer/extensions/front/kaldi/sigmoid_ext_test.py +++ b/model-optimizer/extensions/front/kaldi/sigmoid_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.kaldi.sigmoid_ext import SigmoidFrontExtractor from extensions.ops.activation_ops import Sigmoid diff --git a/model-optimizer/extensions/front/kaldi/split_recurrent_memoryoffset.py b/model-optimizer/extensions/front/kaldi/split_recurrent_memoryoffset.py index 78f91a9aeb178d..f9787dae3ba5d6 100644 --- a/model-optimizer/extensions/front/kaldi/split_recurrent_memoryoffset.py +++ b/model-optimizer/extensions/front/kaldi/split_recurrent_memoryoffset.py @@ -1,20 +1,9 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import networkx as nx +from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementSubgraph from mo.graph.graph import Graph from mo.ops.memoryoffset import MemoryOffset @@ -57,6 +46,13 @@ def find_and_replace_pattern(self, graph: Graph): # MemoryOffset node is not in a recurrent block -- no splitting is needed return + # check that node has information for future partial infer + # element_size is set in loader based on dimensions of previous layer from original Kaldi model if not offset_node.has_valid('element_size'): - raise Error("In a recurrent block 'element_size' for node {} is not set".format(offset_node.id)) + # check if previous layer contains information about its shape in out-size + # out-size is set in extractor of some nodes like affinecomponent based on weight's size + if offset_node.in_port(0).get_source().node.has_valid('out-size'): + offset_node['element_size'] = int64_array([1, offset_node.in_port(0).get_source().node['out-size']]) + else: + raise Error("In a recurrent block 'element_size' for node {} is not set".format(offset_node.id)) SplitRecurrentMemoryOffset.split_offset(offset_node) diff --git a/model-optimizer/extensions/front/kaldi/tanh_component_ext.py b/model-optimizer/extensions/front/kaldi/tanh_component_ext.py index 8beaf19c959f1c..b8c364824eaa2d 100644 --- a/model-optimizer/extensions/front/kaldi/tanh_component_ext.py +++ b/model-optimizer/extensions/front/kaldi/tanh_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Tanh from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/kaldi/tanh_ext_test.py b/model-optimizer/extensions/front/kaldi/tanh_ext_test.py index 5f8df79e71da39..c75cf66c68b319 100644 --- a/model-optimizer/extensions/front/kaldi/tanh_ext_test.py +++ b/model-optimizer/extensions/front/kaldi/tanh_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.kaldi.tanh_component_ext import TanhFrontExtractor from extensions.ops.activation_ops import Tanh diff --git a/model-optimizer/extensions/front/kaldi/tdnn_component_replacer.py b/model-optimizer/extensions/front/kaldi/tdnn_component_replacer.py index 02413c63b70a72..8452c1ed80e17c 100644 --- a/model-optimizer/extensions/front/kaldi/tdnn_component_replacer.py +++ b/model-optimizer/extensions/front/kaldi/tdnn_component_replacer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.MatMul import FullyConnected from mo.front.common.replacement import FrontReplacementPattern diff --git a/model-optimizer/extensions/front/kaldi/tdnn_component_replacer_test.py b/model-optimizer/extensions/front/kaldi/tdnn_component_replacer_test.py index e5ffc3edf4b73e..17ef9cb9f2fc1f 100644 --- a/model-optimizer/extensions/front/kaldi/tdnn_component_replacer_test.py +++ b/model-optimizer/extensions/front/kaldi/tdnn_component_replacer_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/MXRepeatReplacer.py b/model-optimizer/extensions/front/mxnet/MXRepeatReplacer.py index bc30eb598bd2de..70c64a0f3712f6 100644 --- a/model-optimizer/extensions/front/mxnet/MXRepeatReplacer.py +++ b/model-optimizer/extensions/front/mxnet/MXRepeatReplacer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.rank_decomposer import RankDecomposer from extensions.ops.elementwise import Add, Sub, Mul diff --git a/model-optimizer/extensions/front/mxnet/RNN_ext.py b/model-optimizer/extensions/front/mxnet/RNN_ext.py index d0a13983f6537f..753e3968d15cce 100644 --- a/model-optimizer/extensions/front/mxnet/RNN_ext.py +++ b/model-optimizer/extensions/front/mxnet/RNN_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.GRU import GRU from extensions.ops.LSTM import LSTM from extensions.ops.RNN import RNN diff --git a/model-optimizer/extensions/front/mxnet/RNN_ext_test.py b/model-optimizer/extensions/front/mxnet/RNN_ext_test.py index 53745596aac437..d016a0a7e4b6c6 100644 --- a/model-optimizer/extensions/front/mxnet/RNN_ext_test.py +++ b/model-optimizer/extensions/front/mxnet/RNN_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/__init__.py b/model-optimizer/extensions/front/mxnet/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/front/mxnet/__init__.py +++ b/model-optimizer/extensions/front/mxnet/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/front/mxnet/activation.py b/model-optimizer/extensions/front/mxnet/activation.py index 8f4ad02d669d8a..ab7f3e912d2e37 100644 --- a/model-optimizer/extensions/front/mxnet/activation.py +++ b/model-optimizer/extensions/front/mxnet/activation.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import SoftPlus, Sigmoid, Tanh, ReLU, Asinh, Acosh, Atanh from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/activation_test.py b/model-optimizer/extensions/front/mxnet/activation_test.py index d4227126818fb6..50e53ebb3715e0 100644 --- a/model-optimizer/extensions/front/mxnet/activation_test.py +++ b/model-optimizer/extensions/front/mxnet/activation_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/adaptive_avg_pooling_ext.py b/model-optimizer/extensions/front/mxnet/adaptive_avg_pooling_ext.py index 84edb5f7a562e1..0a92eaa7f331ae 100644 --- a/model-optimizer/extensions/front/mxnet/adaptive_avg_pooling_ext.py +++ b/model-optimizer/extensions/front/mxnet/adaptive_avg_pooling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.adaptive_avg_pooling import AdaptiveAvgPooling from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes.py b/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes.py index 222613d7134395..2defe2031dabd9 100644 --- a/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes.py +++ b/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph, Node diff --git a/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes_test.py b/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes_test.py index f5f236e0c12f3c..aff09d11766d7d 100644 --- a/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes_test.py +++ b/model-optimizer/extensions/front/mxnet/add_input_data_to_prior_boxes_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/front/mxnet/arange_ext.py b/model-optimizer/extensions/front/mxnet/arange_ext.py index 3eb9c7e3b98bbf..36c367c1932094 100644 --- a/model-optimizer/extensions/front/mxnet/arange_ext.py +++ b/model-optimizer/extensions/front/mxnet/arange_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/arange_replacer.py b/model-optimizer/extensions/front/mxnet/arange_replacer.py index 669e2fbdb64a87..0da60e076ebbf5 100644 --- a/model-optimizer/extensions/front/mxnet/arange_replacer.py +++ b/model-optimizer/extensions/front/mxnet/arange_replacer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.mxnet.MXRepeatReplacer import MXRepeatReplacer from extensions.ops.mxrepeat import MXRepeat from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/mxnet/block_grad_ext.py b/model-optimizer/extensions/front/mxnet/block_grad_ext.py index 695e4ccde197c8..5a97ec1a1aa4ac 100644 --- a/model-optimizer/extensions/front/mxnet/block_grad_ext.py +++ b/model-optimizer/extensions/front/mxnet/block_grad_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/box_nms_ext.py b/model-optimizer/extensions/front/mxnet/box_nms_ext.py index 72c5b20ac6d884..63fd32267a3cb3 100644 --- a/model-optimizer/extensions/front/mxnet/box_nms_ext.py +++ b/model-optimizer/extensions/front/mxnet/box_nms_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.box_nms import BoxNms from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/cast_ext.py b/model-optimizer/extensions/front/mxnet/cast_ext.py index d5973f8b881b55..0b49f36e93495d 100644 --- a/model-optimizer/extensions/front/mxnet/cast_ext.py +++ b/model-optimizer/extensions/front/mxnet/cast_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.Cast import Cast diff --git a/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs.py b/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs.py index 9222e966a75878..0182ee8fcee4e0 100644 --- a/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs.py +++ b/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs_test.py b/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs_test.py index 7a1695911e5744..859f4f65b02cbc 100644 --- a/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs_test.py +++ b/model-optimizer/extensions/front/mxnet/check_softmax_node_inputs_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/clip_ext.py b/model-optimizer/extensions/front/mxnet/clip_ext.py index ad8b2baa646868..a4fc592ed5ca48 100644 --- a/model-optimizer/extensions/front/mxnet/clip_ext.py +++ b/model-optimizer/extensions/front/mxnet/clip_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/mxnet/conv_ext.py b/model-optimizer/extensions/front/mxnet/conv_ext.py index 0b02c2d4eb1553..acaab898d55a79 100644 --- a/model-optimizer/extensions/front/mxnet/conv_ext.py +++ b/model-optimizer/extensions/front/mxnet/conv_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/conv_ext_test.py b/model-optimizer/extensions/front/mxnet/conv_ext_test.py index f880f66de5a603..afc5402dd7b787 100644 --- a/model-optimizer/extensions/front/mxnet/conv_ext_test.py +++ b/model-optimizer/extensions/front/mxnet/conv_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/copy_ext.py b/model-optimizer/extensions/front/mxnet/copy_ext.py index 60828651982448..309f4eb4342b0b 100644 --- a/model-optimizer/extensions/front/mxnet/copy_ext.py +++ b/model-optimizer/extensions/front/mxnet/copy_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/crop_ext.py b/model-optimizer/extensions/front/mxnet/crop_ext.py index 19dab326bf7d08..156b81356d5b4f 100644 --- a/model-optimizer/extensions/front/mxnet/crop_ext.py +++ b/model-optimizer/extensions/front/mxnet/crop_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/crop_ext_test.py b/model-optimizer/extensions/front/mxnet/crop_ext_test.py index 44e8625785d5b1..d9a23ee539a4e7 100644 --- a/model-optimizer/extensions/front/mxnet/crop_ext_test.py +++ b/model-optimizer/extensions/front/mxnet/crop_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/cumsum.py b/model-optimizer/extensions/front/mxnet/cumsum.py index 84717e6dba60f9..11772da70cbb63 100644 --- a/model-optimizer/extensions/front/mxnet/cumsum.py +++ b/model-optimizer/extensions/front/mxnet/cumsum.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.Cast import Cast from extensions.ops.cumsum import CumSum from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/mxnet/cumsum_ext.py b/model-optimizer/extensions/front/mxnet/cumsum_ext.py index 4ee3bcc35fb9b9..cb76cd78e512f6 100644 --- a/model-optimizer/extensions/front/mxnet/cumsum_ext.py +++ b/model-optimizer/extensions/front/mxnet/cumsum_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np from extensions.ops.cumsum import MXNetCumSum diff --git a/model-optimizer/extensions/front/mxnet/custom.py b/model-optimizer/extensions/front/mxnet/custom.py index d31122c9c054d0..3dd5215549fcbd 100644 --- a/model-optimizer/extensions/front/mxnet/custom.py +++ b/model-optimizer/extensions/front/mxnet/custom.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp, MXNetCustomFrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/custom_rpn_proposal.py b/model-optimizer/extensions/front/mxnet/custom_rpn_proposal.py index dfc8848f6975e6..61694a0155b20d 100644 --- a/model-optimizer/extensions/front/mxnet/custom_rpn_proposal.py +++ b/model-optimizer/extensions/front/mxnet/custom_rpn_proposal.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/custom_test.py b/model-optimizer/extensions/front/mxnet/custom_test.py index 47d69d9343c2c1..e0493f4eb74779 100644 --- a/model-optimizer/extensions/front/mxnet/custom_test.py +++ b/model-optimizer/extensions/front/mxnet/custom_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/deformable_conv_ext.py b/model-optimizer/extensions/front/mxnet/deformable_conv_ext.py index 5dc818bd206a21..e5422ab6199ee8 100644 --- a/model-optimizer/extensions/front/mxnet/deformable_conv_ext.py +++ b/model-optimizer/extensions/front/mxnet/deformable_conv_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/deformable_psroi_pooling_ext.py b/model-optimizer/extensions/front/mxnet/deformable_psroi_pooling_ext.py index 5ee1e456a1d6ed..44f75250c4be88 100644 --- a/model-optimizer/extensions/front/mxnet/deformable_psroi_pooling_ext.py +++ b/model-optimizer/extensions/front/mxnet/deformable_psroi_pooling_ext.py @@ -1,19 +1,5 @@ - -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.psroipooling import DeformablePSROIPoolingOp, PSROIPoolingOp from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/dropout_ext.py b/model-optimizer/extensions/front/mxnet/dropout_ext.py index 72c084f3b78e4e..85454910a76be7 100644 --- a/model-optimizer/extensions/front/mxnet/dropout_ext.py +++ b/model-optimizer/extensions/front/mxnet/dropout_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/elementwise_ext.py b/model-optimizer/extensions/front/mxnet/elementwise_ext.py index 56909de56ef2b0..1bc1e333773ac8 100644 --- a/model-optimizer/extensions/front/mxnet/elementwise_ext.py +++ b/model-optimizer/extensions/front/mxnet/elementwise_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.elementwise import Mul, Sub, Add, Maximum, Minimum, Div, Greater, GreaterEqual, Equal, Less, \ diff --git a/model-optimizer/extensions/front/mxnet/eltwise_scalar_replacers.py b/model-optimizer/extensions/front/mxnet/eltwise_scalar_replacers.py index d0722d3118645b..3a8c1ded60d595 100644 --- a/model-optimizer/extensions/front/mxnet/eltwise_scalar_replacers.py +++ b/model-optimizer/extensions/front/mxnet/eltwise_scalar_replacers.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Div, Greater, GreaterEqual, Equal, NotEqual, Sub, Mul, Add, Less, LessEqual, Minimum, Maximum from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/mxnet/exp_ext.py b/model-optimizer/extensions/front/mxnet/exp_ext.py index 5245711e68a76d..8e3a71a9f0c710 100644 --- a/model-optimizer/extensions/front/mxnet/exp_ext.py +++ b/model-optimizer/extensions/front/mxnet/exp_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Exp from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/expand_dims_ext.py b/model-optimizer/extensions/front/mxnet/expand_dims_ext.py index fb670e17f2b8c6..dadd6c6b9cb16f 100644 --- a/model-optimizer/extensions/front/mxnet/expand_dims_ext.py +++ b/model-optimizer/extensions/front/mxnet/expand_dims_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/flatten_ext.py b/model-optimizer/extensions/front/mxnet/flatten_ext.py index 2d525c0f0af061..91d515b3454f6a 100644 --- a/model-optimizer/extensions/front/mxnet/flatten_ext.py +++ b/model-optimizer/extensions/front/mxnet/flatten_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.flatten import Flatten diff --git a/model-optimizer/extensions/front/mxnet/fully_connected_ext.py b/model-optimizer/extensions/front/mxnet/fully_connected_ext.py index 6aac795e77dc33..53be29275b4de5 100644 --- a/model-optimizer/extensions/front/mxnet/fully_connected_ext.py +++ b/model-optimizer/extensions/front/mxnet/fully_connected_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.MatMul import FullyConnected from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/gather.py b/model-optimizer/extensions/front/mxnet/gather.py index e00aaefac4df97..333b42917339f4 100644 --- a/model-optimizer/extensions/front/mxnet/gather.py +++ b/model-optimizer/extensions/front/mxnet/gather.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.gather import Gather from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/mxnet/gather_ext.py b/model-optimizer/extensions/front/mxnet/gather_ext.py index 3db2be355fb94a..3633b2ef4a6cd3 100644 --- a/model-optimizer/extensions/front/mxnet/gather_ext.py +++ b/model-optimizer/extensions/front/mxnet/gather_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/gather_test.py b/model-optimizer/extensions/front/mxnet/gather_test.py index 48a30d7a6dacee..49edba0c53ab46 100644 --- a/model-optimizer/extensions/front/mxnet/gather_test.py +++ b/model-optimizer/extensions/front/mxnet/gather_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors.py b/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors.py index e357e1c3fd6aae..d29c3556a6f057 100644 --- a/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors.py +++ b/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from typing import Dict diff --git a/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors_test.py b/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors_test.py index c1ec54144932b2..0a839f37aa615d 100644 --- a/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors_test.py +++ b/model-optimizer/extensions/front/mxnet/gluoncv_ssd_anchors_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np import unittest diff --git a/model-optimizer/extensions/front/mxnet/instance_norm_ext.py b/model-optimizer/extensions/front/mxnet/instance_norm_ext.py index 3cc61ab8149b3f..db6ffcd36bef8a 100644 --- a/model-optimizer/extensions/front/mxnet/instance_norm_ext.py +++ b/model-optimizer/extensions/front/mxnet/instance_norm_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.instance_normalization import InstanceNormalization from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/leaky_relu.py b/model-optimizer/extensions/front/mxnet/leaky_relu.py index 64e0d0af7501a7..5dc68ad694dbd0 100644 --- a/model-optimizer/extensions/front/mxnet/leaky_relu.py +++ b/model-optimizer/extensions/front/mxnet/leaky_relu.py @@ -1,20 +1,8 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Elu, LeakyReLU, ReLU +from extensions.ops.gelu import GeLUOP from extensions.ops.prelu import PReLU from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs @@ -50,6 +38,8 @@ def extract(cls, node): ReLU.update_node_stat(node) else: LeakyReLU.update_node_stat(node, {'negative_slope': negative_slope}) + elif act_type == 'gelu': + GeLUOP.update_node_stat(node, {'approximation_mode': 'erf'}) else: raise Error( "Operation '{}' not supported. Please register it as custom op. " + diff --git a/model-optimizer/extensions/front/mxnet/leaky_relu_test.py b/model-optimizer/extensions/front/mxnet/leaky_relu_test.py index 17a65062ce4b3a..8bcba1cd3a714b 100644 --- a/model-optimizer/extensions/front/mxnet/leaky_relu_test.py +++ b/model-optimizer/extensions/front/mxnet/leaky_relu_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/lrn_ext.py b/model-optimizer/extensions/front/mxnet/lrn_ext.py index b68f583fca7bf4..0b1502dead5570 100644 --- a/model-optimizer/extensions/front/mxnet/lrn_ext.py +++ b/model-optimizer/extensions/front/mxnet/lrn_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs from mo.ops.lrn import AttributedLRN diff --git a/model-optimizer/extensions/front/mxnet/max_ext.py b/model-optimizer/extensions/front/mxnet/max_ext.py index 17d7bb84a97ad4..65afbe82a2fd22 100644 --- a/model-optimizer/extensions/front/mxnet/max_ext.py +++ b/model-optimizer/extensions/front/mxnet/max_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.ReduceOps import ReduceMax from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/mxnet/multibox_detection_ext.py b/model-optimizer/extensions/front/mxnet/multibox_detection_ext.py index 05b1d9e300ce57..5f967a10fa19e0 100644 --- a/model-optimizer/extensions/front/mxnet/multibox_detection_ext.py +++ b/model-optimizer/extensions/front/mxnet/multibox_detection_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.DetectionOutput import DetectionOutput from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/multibox_detection_test.py b/model-optimizer/extensions/front/mxnet/multibox_detection_test.py index f484354fefc80a..e34fa088287716 100644 --- a/model-optimizer/extensions/front/mxnet/multibox_detection_test.py +++ b/model-optimizer/extensions/front/mxnet/multibox_detection_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/mx_reshape_reverse.py b/model-optimizer/extensions/front/mxnet/mx_reshape_reverse.py index 05cd66253b6c9a..3aa5c676d10aaa 100644 --- a/model-optimizer/extensions/front/mxnet/mx_reshape_reverse.py +++ b/model-optimizer/extensions/front/mxnet/mx_reshape_reverse.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/mx_reshape_reverse_test.py b/model-optimizer/extensions/front/mxnet/mx_reshape_reverse_test.py index 9e66165193fc9e..deaf30ffa9042b 100644 --- a/model-optimizer/extensions/front/mxnet/mx_reshape_reverse_test.py +++ b/model-optimizer/extensions/front/mxnet/mx_reshape_reverse_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape.py b/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape.py index 254317c79d16bd..c8841ea91282f5 100644 --- a/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape.py +++ b/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape_test.py b/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape_test.py index 5a62c6e240cb1e..74c618655fcb09 100644 --- a/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape_test.py +++ b/model-optimizer/extensions/front/mxnet/mx_reshape_to_reshape_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/null_ext.py b/model-optimizer/extensions/front/mxnet/null_ext.py index ec9c36c73b7063..f830393e278470 100644 --- a/model-optimizer/extensions/front/mxnet/null_ext.py +++ b/model-optimizer/extensions/front/mxnet/null_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.parameter import Parameter from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/pad_ext.py b/model-optimizer/extensions/front/mxnet/pad_ext.py index 1ca39f9681ab32..517471248dcab9 100644 --- a/model-optimizer/extensions/front/mxnet/pad_ext.py +++ b/model-optimizer/extensions/front/mxnet/pad_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/pooling_ext.py b/model-optimizer/extensions/front/mxnet/pooling_ext.py index 54b9a7be00a5b2..450040c23e3a5b 100644 --- a/model-optimizer/extensions/front/mxnet/pooling_ext.py +++ b/model-optimizer/extensions/front/mxnet/pooling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/pooling_ext_test.py b/model-optimizer/extensions/front/mxnet/pooling_ext_test.py index 7212a27f232ae3..14be10895820ca 100644 --- a/model-optimizer/extensions/front/mxnet/pooling_ext_test.py +++ b/model-optimizer/extensions/front/mxnet/pooling_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/proposal_ext.py b/model-optimizer/extensions/front/mxnet/proposal_ext.py index 4d31cff791f3c2..7204976b799fde 100644 --- a/model-optimizer/extensions/front/mxnet/proposal_ext.py +++ b/model-optimizer/extensions/front/mxnet/proposal_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/psroi_pooling_ext.py b/model-optimizer/extensions/front/mxnet/psroi_pooling_ext.py index 2b2ad80f1920ff..b8bf7eb5af4f32 100644 --- a/model-optimizer/extensions/front/mxnet/psroi_pooling_ext.py +++ b/model-optimizer/extensions/front/mxnet/psroi_pooling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.psroipooling import PSROIPoolingOp from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/repeat_ext.py b/model-optimizer/extensions/front/mxnet/repeat_ext.py index 5a94de078d80c1..51f62b2708a899 100644 --- a/model-optimizer/extensions/front/mxnet/repeat_ext.py +++ b/model-optimizer/extensions/front/mxnet/repeat_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.mxrepeat import MXRepeat from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/reshape_ext.py b/model-optimizer/extensions/front/mxnet/reshape_ext.py index 1df0ecf262bea7..b39b5f7174ff67 100644 --- a/model-optimizer/extensions/front/mxnet/reshape_ext.py +++ b/model-optimizer/extensions/front/mxnet/reshape_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.mxreshape import MXReshape from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/mxnet/rnn_param_concat.py b/model-optimizer/extensions/front/mxnet/rnn_param_concat.py index 89dd7ada492872..1f71e4d4288291 100644 --- a/model-optimizer/extensions/front/mxnet/rnn_param_concat.py +++ b/model-optimizer/extensions/front/mxnet/rnn_param_concat.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/roi_pooling_ext.py b/model-optimizer/extensions/front/mxnet/roi_pooling_ext.py index 16e4dc9002aec8..02997c102959d5 100644 --- a/model-optimizer/extensions/front/mxnet/roi_pooling_ext.py +++ b/model-optimizer/extensions/front/mxnet/roi_pooling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.extractors.utils import layout_attrs from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/shape_array_ext.py b/model-optimizer/extensions/front/mxnet/shape_array_ext.py index e77415fb4dc25a..3986462fa7d897 100644 --- a/model-optimizer/extensions/front/mxnet/shape_array_ext.py +++ b/model-optimizer/extensions/front/mxnet/shape_array_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.shape import Shape diff --git a/model-optimizer/extensions/front/mxnet/sigmoid.py b/model-optimizer/extensions/front/mxnet/sigmoid.py index e605f062d86cf7..b07f298ba856fd 100644 --- a/model-optimizer/extensions/front/mxnet/sigmoid.py +++ b/model-optimizer/extensions/front/mxnet/sigmoid.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Sigmoid from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/sigmoid_test.py b/model-optimizer/extensions/front/mxnet/sigmoid_test.py index 996327b245e247..9fc9a30c7e4e38 100644 --- a/model-optimizer/extensions/front/mxnet/sigmoid_test.py +++ b/model-optimizer/extensions/front/mxnet/sigmoid_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/slice_channel_ext.py b/model-optimizer/extensions/front/mxnet/slice_channel_ext.py index 53968dce82a14d..80a5fc25d32593 100644 --- a/model-optimizer/extensions/front/mxnet/slice_channel_ext.py +++ b/model-optimizer/extensions/front/mxnet/slice_channel_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.split import AttributedSplit from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/slice_ext.py b/model-optimizer/extensions/front/mxnet/slice_ext.py index 8e799ebdb0d005..b113cba1a87f71 100644 --- a/model-optimizer/extensions/front/mxnet/slice_ext.py +++ b/model-optimizer/extensions/front/mxnet/slice_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/slice_like_ext.py b/model-optimizer/extensions/front/mxnet/slice_like_ext.py index 6074471d88a5d7..619b22d5fd0814 100644 --- a/model-optimizer/extensions/front/mxnet/slice_like_ext.py +++ b/model-optimizer/extensions/front/mxnet/slice_like_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.slice_like import SliceLike from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/slice_replacers.py b/model-optimizer/extensions/front/mxnet/slice_replacers.py index 1e93da80aa37ef..17e741d5fbfb83 100644 --- a/model-optimizer/extensions/front/mxnet/slice_replacers.py +++ b/model-optimizer/extensions/front/mxnet/slice_replacers.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/softmax.py b/model-optimizer/extensions/front/mxnet/softmax.py index 094a82d0b67629..3a91dac904c438 100644 --- a/model-optimizer/extensions/front/mxnet/softmax.py +++ b/model-optimizer/extensions/front/mxnet/softmax.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/softmax_activation_ext.py b/model-optimizer/extensions/front/mxnet/softmax_activation_ext.py index ab2396f3ee3432..05170e7cea13a0 100644 --- a/model-optimizer/extensions/front/mxnet/softmax_activation_ext.py +++ b/model-optimizer/extensions/front/mxnet/softmax_activation_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/softmax_ext.py b/model-optimizer/extensions/front/mxnet/softmax_ext.py index 5fb37eeb7c9320..4644e11e22391f 100644 --- a/model-optimizer/extensions/front/mxnet/softmax_ext.py +++ b/model-optimizer/extensions/front/mxnet/softmax_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/softmax_output_ext.py b/model-optimizer/extensions/front/mxnet/softmax_output_ext.py index c88c9e9c014e71..db4bdccd66af48 100644 --- a/model-optimizer/extensions/front/mxnet/softmax_output_ext.py +++ b/model-optimizer/extensions/front/mxnet/softmax_output_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/squeeze_ext.py b/model-optimizer/extensions/front/mxnet/squeeze_ext.py index 0dec2ff8cf672c..c586ab7ed9d40b 100644 --- a/model-optimizer/extensions/front/mxnet/squeeze_ext.py +++ b/model-optimizer/extensions/front/mxnet/squeeze_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/ssd_anchor_reshape.py b/model-optimizer/extensions/front/mxnet/ssd_anchor_reshape.py index efa94aa3263d80..fe0d62ddacc740 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_anchor_reshape.py +++ b/model-optimizer/extensions/front/mxnet/ssd_anchor_reshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/ssd_detection_output_replacer.py b/model-optimizer/extensions/front/mxnet/ssd_detection_output_replacer.py index 1bef8e9a2e90f0..511fe5542da1b8 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_detection_output_replacer.py +++ b/model-optimizer/extensions/front/mxnet/ssd_detection_output_replacer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.flatten_to_reshape import FlattenToReshape from extensions.front.split_normalizer import AttributedSplitToSplit from extensions.ops.DetectionOutput import DetectionOutput diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation.py index 267f601dd52642..91e3bf449b8087 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.mxnet.ssd_pattern_remove_flatten import SsdPatternRemoveFlatten from extensions.front.mxnet.ssd_pattern_remove_reshape import SsdPatternRemoveReshape diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation_test.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation_test.py index 104b128a8162b6..a5585382bd8389 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation_test.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_flatten_softmax_activation_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten.py index f500fb838fab34..30f4669e576480 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.flatten_to_reshape import FlattenToReshape from extensions.front.mxnet.ssd_pattern_remove_reshape import SsdPatternRemoveReshape diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten_test.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten_test.py index 12061e9051af28..a27da1cc87794d 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten_test.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_flatten_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape.py index 6820c47078c9e4..abcb6e0df8f078 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementSubgraph from mo.front.mxnet.extractors.utils import get_json_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape_test.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape_test.py index d2a7234d094bc2..e8c66412aba5e4 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape_test.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_reshape_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose.py index 997ea99c0e75e0..b47712b4c603bf 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.mxnet.ssd_pattern_flatten_softmax_activation import SsdPatternFlattenSoftmaxActivation from extensions.front.mxnet.ssd_pattern_remove_flatten import SsdPatternRemoveFlatten diff --git a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose_test.py b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose_test.py index 38a9d5af19b330..4ec408f77a56bf 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose_test.py +++ b/model-optimizer/extensions/front/mxnet/ssd_pattern_remove_transpose_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs.py b/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs.py index b4a55a35f0d7c8..fb2e4bea2a5309 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs.py +++ b/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.mxnet.ssd_pattern_flatten_softmax_activation import SsdPatternFlattenSoftmaxActivation from extensions.front.mxnet.ssd_pattern_remove_transpose import SsdPatternRemoveTranspose diff --git a/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs_test.py b/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs_test.py index 91d7293cd671ff..d3f37e138fc9bb 100644 --- a/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs_test.py +++ b/model-optimizer/extensions/front/mxnet/ssd_reorder_detection_out_inputs_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/mxnet/stack_ext.py b/model-optimizer/extensions/front/mxnet/stack_ext.py index afbac1fef60f34..b22aab0f29ebac 100644 --- a/model-optimizer/extensions/front/mxnet/stack_ext.py +++ b/model-optimizer/extensions/front/mxnet/stack_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.pack import PackOp from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/swapaxis_ext.py b/model-optimizer/extensions/front/mxnet/swapaxis_ext.py index 99b7a60f620e06..9ad20d64cbe7a3 100644 --- a/model-optimizer/extensions/front/mxnet/swapaxis_ext.py +++ b/model-optimizer/extensions/front/mxnet/swapaxis_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.swapaxis import SwapAxis from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/take_ext.py b/model-optimizer/extensions/front/mxnet/take_ext.py index 590f0a3d68633d..566f32503f4c9e 100644 --- a/model-optimizer/extensions/front/mxnet/take_ext.py +++ b/model-optimizer/extensions/front/mxnet/take_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.gather import AttributedGather from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/tile_ext.py b/model-optimizer/extensions/front/mxnet/tile_ext.py index 00ec81f7677519..505e4c9e6f70f9 100644 --- a/model-optimizer/extensions/front/mxnet/tile_ext.py +++ b/model-optimizer/extensions/front/mxnet/tile_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.mxnet.extractors.utils import get_mxnet_layer_attrs diff --git a/model-optimizer/extensions/front/mxnet/tile_replacer.py b/model-optimizer/extensions/front/mxnet/tile_replacer.py index 6252a2e58ed525..a2c98f34ecdd66 100644 --- a/model-optimizer/extensions/front/mxnet/tile_replacer.py +++ b/model-optimizer/extensions/front/mxnet/tile_replacer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/mxnet/transpose_ext.py b/model-optimizer/extensions/front/mxnet/transpose_ext.py index f664b9b44f5eeb..5a836a5d5e4714 100644 --- a/model-optimizer/extensions/front/mxnet/transpose_ext.py +++ b/model-optimizer/extensions/front/mxnet/transpose_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/mxnet/up_sampling_ext.py b/model-optimizer/extensions/front/mxnet/up_sampling_ext.py index 7a5873d499a635..6557c496f0e2d6 100644 --- a/model-optimizer/extensions/front/mxnet/up_sampling_ext.py +++ b/model-optimizer/extensions/front/mxnet/up_sampling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import math diff --git a/model-optimizer/extensions/front/mxnet/where_ext.py b/model-optimizer/extensions/front/mxnet/where_ext.py index ca28fc41a8a42f..470b0f946a5dfb 100644 --- a/model-optimizer/extensions/front/mxnet/where_ext.py +++ b/model-optimizer/extensions/front/mxnet/where_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.select import Select from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/mxnet/zeros_ext.py b/model-optimizer/extensions/front/mxnet/zeros_ext.py index e0fc4c0e8c641c..5270878ab35237 100644 --- a/model-optimizer/extensions/front/mxnet/zeros_ext.py +++ b/model-optimizer/extensions/front/mxnet/zeros_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/no_op_eraser.py b/model-optimizer/extensions/front/no_op_eraser.py index cc131adf112220..df28700c28bf75 100644 --- a/model-optimizer/extensions/front/no_op_eraser.py +++ b/model-optimizer/extensions/front/no_op_eraser.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/non_max_suppression_normalize.py b/model-optimizer/extensions/front/non_max_suppression_normalize.py index a9a23d85832881..50cbcf6606faa7 100644 --- a/model-optimizer/extensions/front/non_max_suppression_normalize.py +++ b/model-optimizer/extensions/front/non_max_suppression_normalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementSubgraph diff --git a/model-optimizer/extensions/front/onnx/AttributedSliceToSlice.py b/model-optimizer/extensions/front/onnx/AttributedSliceToSlice.py index e23cc0c77c37d8..f6c1735b5842e6 100644 --- a/model-optimizer/extensions/front/onnx/AttributedSliceToSlice.py +++ b/model-optimizer/extensions/front/onnx/AttributedSliceToSlice.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementOp from mo.front.tf.graph_utils import create_op_with_const_inputs diff --git a/model-optimizer/extensions/front/onnx/AttributedSliceToSlice_test.py b/model-optimizer/extensions/front/onnx/AttributedSliceToSlice_test.py index ea478ba3287520..9420dc384c112c 100644 --- a/model-optimizer/extensions/front/onnx/AttributedSliceToSlice_test.py +++ b/model-optimizer/extensions/front/onnx/AttributedSliceToSlice_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/LoopNormalize.py b/model-optimizer/extensions/front/onnx/LoopNormalize.py index 391ef5b7527b12..1d887fc640d100 100644 --- a/model-optimizer/extensions/front/onnx/LoopNormalize.py +++ b/model-optimizer/extensions/front/onnx/LoopNormalize.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.front.pass_separator import FrontStart diff --git a/model-optimizer/extensions/front/onnx/MvnOnnxToMvn.py b/model-optimizer/extensions/front/onnx/MvnOnnxToMvn.py new file mode 100644 index 00000000000000..461f566f07ee77 --- /dev/null +++ b/model-optimizer/extensions/front/onnx/MvnOnnxToMvn.py @@ -0,0 +1,28 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from extensions.ops.mvn import MVN +from mo.front.common.replacement import FrontReplacementPattern +from mo.front.tf.graph_utils import create_op_with_const_inputs +from mo.graph.graph import Graph, rename_nodes + + +class MvnOnnxToMvn(FrontReplacementPattern): + """ + Replace AttributedMVN operation from ONNX with MVN + """ + enabled = True + + def find_and_replace_pattern(self, graph: Graph): + for node in graph.get_op_nodes(op='MVNOnnx'): + node_name = node.soft_get('name', node.id) + + new_mvn = create_op_with_const_inputs(graph, MVN, {1: node.axes}, + {'eps': node.eps, + 'eps_mode': node.eps_mode, + 'normalize_variance': node.normalize_variance}) + node.in_port(0).get_connection().set_destination(new_mvn.in_port(0)) + node.out_port(0).get_connection().set_source(new_mvn.out_port(0)) + rename_nodes([(node, node_name + '/to_be_removed'), (new_mvn, node_name)]) + + graph.remove_node(node.id) diff --git a/model-optimizer/extensions/front/onnx/MvnOnnxToMvn_test.py b/model-optimizer/extensions/front/onnx/MvnOnnxToMvn_test.py new file mode 100644 index 00000000000000..70f722e5210d62 --- /dev/null +++ b/model-optimizer/extensions/front/onnx/MvnOnnxToMvn_test.py @@ -0,0 +1,43 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +import numpy as np + +from extensions.front.onnx.MvnOnnxToMvn import MvnOnnxToMvn +from mo.front.common.partial_infer.utils import int64_array +from mo.utils.ir_engine.compare_graphs import compare_graphs +from mo.utils.unittest.graph import build_graph, regular_op_with_empty_data, result, const, connect_front + +nodes = { + **regular_op_with_empty_data('input', {'type': 'Parameter'}), + **regular_op_with_empty_data('mvn_onnx', {'op': 'MVNOnnx', + 'axes': int64_array([2, 3]), + 'eps': 1e-9, + 'eps_mode': 'outside_sqrt', + 'normalize_variance': 1}), + **result(), + + # nodes after replacement + **const('axes', int64_array([2, 3])), + **regular_op_with_empty_data('mvn', {'op': 'MVN', 'type': None}), +} + + +class MvnOnnxToMvnTest(unittest.TestCase): + def test_mvn_normalize(self): + graph = build_graph(nodes, [('input', 'mvn_onnx'), + ('mvn_onnx', 'output')], + nodes_with_edges_only=True) + graph.stage = 'front' + + MvnOnnxToMvn().find_and_replace_pattern(graph) + + graph_ref = build_graph(nodes, [('input', 'mvn'), + *connect_front('axes', '1:mvn'), + ('mvn', 'output')], + nodes_with_edges_only=True) + + (flag, resp) = compare_graphs(graph, graph_ref, 'output', check_op_attrs=True) + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/front/onnx/ONNXResize10ToInterpolate.py b/model-optimizer/extensions/front/onnx/ONNXResize10ToInterpolate.py index a58cc5e0199161..ae2b28ece0532e 100644 --- a/model-optimizer/extensions/front/onnx/ONNXResize10ToInterpolate.py +++ b/model-optimizer/extensions/front/onnx/ONNXResize10ToInterpolate.py @@ -1,25 +1,12 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import numpy as np -from extensions.ops.activation_ops import Floor from extensions.ops.Cast import Cast +from extensions.ops.activation_ops import Floor from extensions.ops.elementwise import Add, Mul from extensions.ops.interpolate import Interpolate from extensions.ops.range import Range @@ -28,7 +15,6 @@ from mo.front.common.replacement import FrontReplacementOp from mo.front.tf.graph_utils import create_op_with_const_inputs from mo.graph.graph import Graph, Node, rename_nodes -from mo.middle.passes.convert_data_type import data_type_str_to_np from mo.ops.shape import Shape from mo.ops.strided_slice import StridedSlice @@ -92,9 +78,9 @@ def replace_resize(graph: Graph, resize: Node): {1: float_array([1.0e-5])}, {'name': resize_name + '/Add'}) - input_data_type = data_type_str_to_np(graph.graph['cmd_params'].data_type) + dst_dtype = np.float32 # even if data_type=FP16 use float32 for shape values - cast_shape_to_float = Cast(graph, {'dst_type': input_data_type}).create_node() + cast_shape_to_float = Cast(graph, {'dst_type': dst_dtype}).create_node() shape_of.out_port(0).connect(cast_shape_to_float.in_port(0)) mul_node = Mul(graph, {'name': resize_name + '/Mul'}).create_node([cast_shape_to_float, add_node]) diff --git a/model-optimizer/extensions/front/onnx/__init__.py b/model-optimizer/extensions/front/onnx/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/front/onnx/__init__.py +++ b/model-optimizer/extensions/front/onnx/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/front/onnx/activation_ext.py b/model-optimizer/extensions/front/onnx/activation_ext.py index e9d0580d338a1d..be8c0d8250c4ac 100644 --- a/model-optimizer/extensions/front/onnx/activation_ext.py +++ b/model-optimizer/extensions/front/onnx/activation_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.activation_ops import * from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/activation_ext_test.py b/model-optimizer/extensions/front/onnx/activation_ext_test.py index 1e4c8b6c74956a..58e9e3a7499d72 100644 --- a/model-optimizer/extensions/front/onnx/activation_ext_test.py +++ b/model-optimizer/extensions/front/onnx/activation_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/affine_ext.py b/model-optimizer/extensions/front/onnx/affine_ext.py index 785a39e89ab5fc..84a37dfb1d9c78 100644 --- a/model-optimizer/extensions/front/onnx/affine_ext.py +++ b/model-optimizer/extensions/front/onnx/affine_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/affine_ext_test.py b/model-optimizer/extensions/front/onnx/affine_ext_test.py index e3d874f2d2e7c2..705a3e81c59e0a 100644 --- a/model-optimizer/extensions/front/onnx/affine_ext_test.py +++ b/model-optimizer/extensions/front/onnx/affine_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/argmax_ext.py b/model-optimizer/extensions/front/onnx/argmax_ext.py index 898646bfc399fe..9122d360a36be8 100644 --- a/model-optimizer/extensions/front/onnx/argmax_ext.py +++ b/model-optimizer/extensions/front/onnx/argmax_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.argmax import ArgMaxOp from mo.front.extractor import FrontExtractorOp @@ -35,7 +22,9 @@ def extract(cls, node): 'out_max_val' : 0, # Set attribute to trigger ArgMax replacer in case do not keep the dimension - 'keepdims': keepdims + 'keepdims': keepdims, + + 'remove_values_output': True } ArgMaxOp.update_node_stat(node, attrs) diff --git a/model-optimizer/extensions/front/onnx/aten_ext.py b/model-optimizer/extensions/front/onnx/aten_ext.py index 502830f406b68a..383fb3652a7198 100644 --- a/model-optimizer/extensions/front/onnx/aten_ext.py +++ b/model-optimizer/extensions/front/onnx/aten_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (c) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.aten import ATen from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/cast_ext.py b/model-optimizer/extensions/front/onnx/cast_ext.py index 36e1dbdbbe21ad..839adccaf9f1a4 100644 --- a/model-optimizer/extensions/front/onnx/cast_ext.py +++ b/model-optimizer/extensions/front/onnx/cast_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.Cast import Cast from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/clip_ext.py b/model-optimizer/extensions/front/onnx/clip_ext.py index b0ecd1dd1f55d5..942a640ee2de26 100644 --- a/model-optimizer/extensions/front/onnx/clip_ext.py +++ b/model-optimizer/extensions/front/onnx/clip_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/onnx/concat_ext.py b/model-optimizer/extensions/front/onnx/concat_ext.py index 287de77e082fe7..2d04cd373acd2c 100644 --- a/model-optimizer/extensions/front/onnx/concat_ext.py +++ b/model-optimizer/extensions/front/onnx/concat_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.onnx.extractors.utils import onnx_attr from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/const_ext.py b/model-optimizer/extensions/front/onnx/const_ext.py index 016b7fcdd26736..5c9c5895c2e8e6 100644 --- a/model-optimizer/extensions/front/onnx/const_ext.py +++ b/model-optimizer/extensions/front/onnx/const_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from onnx import numpy_helper from onnx.numpy_helper import to_array diff --git a/model-optimizer/extensions/front/onnx/constant_fill_ext.py b/model-optimizer/extensions/front/onnx/constant_fill_ext.py index de3983f0d5b75b..23804777a92820 100644 --- a/model-optimizer/extensions/front/onnx/constant_fill_ext.py +++ b/model-optimizer/extensions/front/onnx/constant_fill_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.constant_fill import ConstantFill from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/constant_of_shape_ext.py b/model-optimizer/extensions/front/onnx/constant_of_shape_ext.py index 061ac9d67f974b..1ee97f5e155811 100644 --- a/model-optimizer/extensions/front/onnx/constant_of_shape_ext.py +++ b/model-optimizer/extensions/front/onnx/constant_of_shape_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from onnx import numpy_helper diff --git a/model-optimizer/extensions/front/onnx/constant_of_shape_to_broadcast.py b/model-optimizer/extensions/front/onnx/constant_of_shape_to_broadcast.py index 4c0209289a00eb..f95b276662eba6 100644 --- a/model-optimizer/extensions/front/onnx/constant_of_shape_to_broadcast.py +++ b/model-optimizer/extensions/front/onnx/constant_of_shape_to_broadcast.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/onnx/conv_ext.py b/model-optimizer/extensions/front/onnx/conv_ext.py index aebd25837e7fdc..38c061b2607f7d 100644 --- a/model-optimizer/extensions/front/onnx/conv_ext.py +++ b/model-optimizer/extensions/front/onnx/conv_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/conv_ext_test.py b/model-optimizer/extensions/front/onnx/conv_ext_test.py index 85f1c427030dcf..27f5c2460ea8f8 100644 --- a/model-optimizer/extensions/front/onnx/conv_ext_test.py +++ b/model-optimizer/extensions/front/onnx/conv_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/crop_ext.py b/model-optimizer/extensions/front/onnx/crop_ext.py index 0e886d28ada5cc..15ecfaba59139e 100644 --- a/model-optimizer/extensions/front/onnx/crop_ext.py +++ b/model-optimizer/extensions/front/onnx/crop_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/onnx/crop_ext_test.py b/model-optimizer/extensions/front/onnx/crop_ext_test.py index 2fd6a8e4abddb2..e1d8e7ed08003e 100644 --- a/model-optimizer/extensions/front/onnx/crop_ext_test.py +++ b/model-optimizer/extensions/front/onnx/crop_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/cumsum_ext.py b/model-optimizer/extensions/front/onnx/cumsum_ext.py index d6b55f62156ac6..52112fbbdc06b1 100644 --- a/model-optimizer/extensions/front/onnx/cumsum_ext.py +++ b/model-optimizer/extensions/front/onnx/cumsum_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.cumsum import CumSum from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/deformable_conv_ext.py b/model-optimizer/extensions/front/onnx/deformable_conv_ext.py index 94b1eaf0a8a168..d1f1ccc0f91aa8 100644 --- a/model-optimizer/extensions/front/onnx/deformable_conv_ext.py +++ b/model-optimizer/extensions/front/onnx/deformable_conv_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/depth_to_space_ext.py b/model-optimizer/extensions/front/onnx/depth_to_space_ext.py index d8f95ea92a3a10..36eb75e3b7e68b 100644 --- a/model-optimizer/extensions/front/onnx/depth_to_space_ext.py +++ b/model-optimizer/extensions/front/onnx/depth_to_space_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.ops.depth_to_space import DepthToSpaceOp diff --git a/model-optimizer/extensions/front/onnx/dequantize_linear_ext.py b/model-optimizer/extensions/front/onnx/dequantize_linear_ext.py index 466f7f323ffefb..73ebaf958d8b6c 100644 --- a/model-optimizer/extensions/front/onnx/dequantize_linear_ext.py +++ b/model-optimizer/extensions/front/onnx/dequantize_linear_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.ops.dequantize_linear import DequantizeLinear diff --git a/model-optimizer/extensions/front/onnx/dequantize_linear_resolver.py b/model-optimizer/extensions/front/onnx/dequantize_linear_resolver.py index ae47bdcf743ebb..1c2ab410c1b186 100644 --- a/model-optimizer/extensions/front/onnx/dequantize_linear_resolver.py +++ b/model-optimizer/extensions/front/onnx/dequantize_linear_resolver.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.onnx.quantize_dequantize_linear import QuantizeDequantizeLinear from extensions.ops.Cast import Cast diff --git a/model-optimizer/extensions/front/onnx/dequantize_linear_resolver_test.py b/model-optimizer/extensions/front/onnx/dequantize_linear_resolver_test.py index bce0f49ee4c025..63ca7bde34b682 100644 --- a/model-optimizer/extensions/front/onnx/dequantize_linear_resolver_test.py +++ b/model-optimizer/extensions/front/onnx/dequantize_linear_resolver_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/front/onnx/detection_output.py b/model-optimizer/extensions/front/onnx/detection_output.py index 84456594fc811e..f7fa8854998422 100644 --- a/model-optimizer/extensions/front/onnx/detection_output.py +++ b/model-optimizer/extensions/front/onnx/detection_output.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.DetectionOutput import DetectionOutput from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/detection_output_test.py b/model-optimizer/extensions/front/onnx/detection_output_test.py index 267e801ded65e5..4dae80795283d1 100644 --- a/model-optimizer/extensions/front/onnx/detection_output_test.py +++ b/model-optimizer/extensions/front/onnx/detection_output_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/detectionoutput_ext.py b/model-optimizer/extensions/front/onnx/detectionoutput_ext.py index f72c80b9bc4510..b87865012e24c0 100644 --- a/model-optimizer/extensions/front/onnx/detectionoutput_ext.py +++ b/model-optimizer/extensions/front/onnx/detectionoutput_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from math import log diff --git a/model-optimizer/extensions/front/onnx/dropout_ext.py b/model-optimizer/extensions/front/onnx/dropout_ext.py index f18e8aafc21987..4b31d487a375e0 100644 --- a/model-optimizer/extensions/front/onnx/dropout_ext.py +++ b/model-optimizer/extensions/front/onnx/dropout_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/elementwise_ext.py b/model-optimizer/extensions/front/onnx/elementwise_ext.py index b78a116673f35f..19b4d3edd40e0a 100644 --- a/model-optimizer/extensions/front/onnx/elementwise_ext.py +++ b/model-optimizer/extensions/front/onnx/elementwise_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.elementwise import Add, Sub, Mul, Div, Pow, Less, Equal, Greater, LogicalAnd, LogicalOr, LogicalXor, \ diff --git a/model-optimizer/extensions/front/onnx/expand_ext.py b/model-optimizer/extensions/front/onnx/expand_ext.py index 2e337413f7fe4e..165fe941a88c0f 100644 --- a/model-optimizer/extensions/front/onnx/expand_ext.py +++ b/model-optimizer/extensions/front/onnx/expand_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.broadcast import Broadcast diff --git a/model-optimizer/extensions/front/onnx/flattenONNX_to_reshape.py b/model-optimizer/extensions/front/onnx/flattenONNX_to_reshape.py index 02c2d1f8b489d4..b8285e01337389 100644 --- a/model-optimizer/extensions/front/onnx/flattenONNX_to_reshape.py +++ b/model-optimizer/extensions/front/onnx/flattenONNX_to_reshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.ReduceOps import ReduceProd from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/onnx/flatten_ext.py b/model-optimizer/extensions/front/onnx/flatten_ext.py index e85d0c7ccf6fbf..4d9c1b3e8ac938 100644 --- a/model-optimizer/extensions/front/onnx/flatten_ext.py +++ b/model-optimizer/extensions/front/onnx/flatten_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/fused_bn_ext.py b/model-optimizer/extensions/front/onnx/fused_bn_ext.py index 7493210d53f5b9..64b89b3119d1ac 100644 --- a/model-optimizer/extensions/front/onnx/fused_bn_ext.py +++ b/model-optimizer/extensions/front/onnx/fused_bn_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.ops.BatchNormInference import BatchNormInference diff --git a/model-optimizer/extensions/front/onnx/gather_ext.py b/model-optimizer/extensions/front/onnx/gather_ext.py index 404ce24ebf9f98..5a0c6b82065dd7 100644 --- a/model-optimizer/extensions/front/onnx/gather_ext.py +++ b/model-optimizer/extensions/front/onnx/gather_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/gatherelements_ext.py b/model-optimizer/extensions/front/onnx/gatherelements_ext.py index 32f705f331a751..4102d2623c4013 100644 --- a/model-optimizer/extensions/front/onnx/gatherelements_ext.py +++ b/model-optimizer/extensions/front/onnx/gatherelements_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.gatherelements import GatherElements from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/gathernd_ext.py b/model-optimizer/extensions/front/onnx/gathernd_ext.py index 34be3aa153ce5f..8bf7463be0d5ba 100644 --- a/model-optimizer/extensions/front/onnx/gathernd_ext.py +++ b/model-optimizer/extensions/front/onnx/gathernd_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.gathernd import GatherND from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/gemm_ext.py b/model-optimizer/extensions/front/onnx/gemm_ext.py index 9dd4d18f8449f7..2991508254c010 100644 --- a/model-optimizer/extensions/front/onnx/gemm_ext.py +++ b/model-optimizer/extensions/front/onnx/gemm_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/group_norm_ext.py b/model-optimizer/extensions/front/onnx/group_norm_ext.py index 1e4051a7dde881..5b5181fab590ea 100644 --- a/model-optimizer/extensions/front/onnx/group_norm_ext.py +++ b/model-optimizer/extensions/front/onnx/group_norm_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/gru_ext.py b/model-optimizer/extensions/front/onnx/gru_ext.py index f888c92962d9d5..8568d45c6d399d 100644 --- a/model-optimizer/extensions/front/onnx/gru_ext.py +++ b/model-optimizer/extensions/front/onnx/gru_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.GRU import GRU diff --git a/model-optimizer/extensions/front/onnx/gru_ext_test.py b/model-optimizer/extensions/front/onnx/gru_ext_test.py index f5d605d8fa2b7b..e00cdc76d05df1 100644 --- a/model-optimizer/extensions/front/onnx/gru_ext_test.py +++ b/model-optimizer/extensions/front/onnx/gru_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/onnx/hard_sigmoid_ext.py b/model-optimizer/extensions/front/onnx/hard_sigmoid_ext.py index ac5297b14d53e1..4347740094f9e0 100644 --- a/model-optimizer/extensions/front/onnx/hard_sigmoid_ext.py +++ b/model-optimizer/extensions/front/onnx/hard_sigmoid_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/identity_ext.py b/model-optimizer/extensions/front/onnx/identity_ext.py index 5ec3eb3f86681a..9e1b155b13801e 100644 --- a/model-optimizer/extensions/front/onnx/identity_ext.py +++ b/model-optimizer/extensions/front/onnx/identity_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from extensions.ops.identity import Identity diff --git a/model-optimizer/extensions/front/onnx/image_scaler_ext.py b/model-optimizer/extensions/front/onnx/image_scaler_ext.py index 349ba474461021..25add962e4ecf5 100644 --- a/model-optimizer/extensions/front/onnx/image_scaler_ext.py +++ b/model-optimizer/extensions/front/onnx/image_scaler_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/image_scaler_ext_test.py b/model-optimizer/extensions/front/onnx/image_scaler_ext_test.py index e9cc50ad9922b5..710929a610de7f 100644 --- a/model-optimizer/extensions/front/onnx/image_scaler_ext_test.py +++ b/model-optimizer/extensions/front/onnx/image_scaler_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/instance_normalization_ext.py b/model-optimizer/extensions/front/onnx/instance_normalization_ext.py index f5ab8435d8ba3e..b4938c4dbb481a 100644 --- a/model-optimizer/extensions/front/onnx/instance_normalization_ext.py +++ b/model-optimizer/extensions/front/onnx/instance_normalization_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.instance_normalization import InstanceNormalization from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/instance_normalization_ext_test.py b/model-optimizer/extensions/front/onnx/instance_normalization_ext_test.py index 686afe4f67430c..9881ba397313fd 100644 --- a/model-optimizer/extensions/front/onnx/instance_normalization_ext_test.py +++ b/model-optimizer/extensions/front/onnx/instance_normalization_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import onnx diff --git a/model-optimizer/extensions/front/onnx/logsoftmaxONNX_to_logsoftmax.py b/model-optimizer/extensions/front/onnx/logsoftmaxONNX_to_logsoftmax.py index 8a630460b20867..4163f5d4f5e38b 100644 --- a/model-optimizer/extensions/front/onnx/logsoftmaxONNX_to_logsoftmax.py +++ b/model-optimizer/extensions/front/onnx/logsoftmaxONNX_to_logsoftmax.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementOp from mo.graph.graph import Graph, Node, rename_nodes from mo.ops.flatten import FlattenONNX diff --git a/model-optimizer/extensions/front/onnx/loop_ext.py b/model-optimizer/extensions/front/onnx/loop_ext.py index 6a2168df4eb4b8..8c692001ed39fb 100644 --- a/model-optimizer/extensions/front/onnx/loop_ext.py +++ b/model-optimizer/extensions/front/onnx/loop_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import copy import logging as log @@ -77,7 +65,7 @@ def extract(cls, loop_node): # need to manually update necessary attrs for the node because extractor will not be called # for it because the node does not have .pb attribute Parameter.update_node_stat(parameter_node, {}) - external_edges.append((main_graph.graph['tensor_mapping'][inp], parameter_node)) + external_edges.append((main_graph.graph['tensor_mapping'][inp], parameter_node, inp)) src_id, src_port = param_id, 0 additional_params[main_graph.graph['tensor_mapping'][inp]] = parameter_node else: @@ -93,7 +81,7 @@ def extract(cls, loop_node): 'out': src_port, 'in': dst_port, 'name': inp, - 'fw_tensor_debug_info': [(inp, inp)], + 'fw_tensor_debug_info': [(src_id, dst_port, inp)], 'in_attrs': ['in', 'name'], 'out_attrs': ['out', 'name'], 'data_attrs': ['fw_tensor_debug_info'] @@ -144,11 +132,11 @@ def extract(cls, loop_node): # some of the inputs/outputs may not be connected but the normalization transformation will take care of it # connection Loop body nodes with external input edges next_loop_input_port_idx = sorted(loop_node.in_edges().keys())[-1] + 1 - for (src_node, src_port), body_node in external_edges: + for (src_node, src_port), body_node, tensor_name in external_edges: main_graph.add_edge(src_node, loop_node.id, **{'out': src_port, 'in': next_loop_input_port_idx, 'name': src_node, - 'fw_tensor_debug_info': [(src_node, src_node)], + 'fw_tensor_debug_info': [(src_node, next_loop_input_port_idx, tensor_name)], 'in_attrs': ['in', 'name'], 'out_attrs': ['out', 'name'], 'data_attrs': ['fw_tensor_debug_info']} diff --git a/model-optimizer/extensions/front/onnx/lp_normalization_ext.py b/model-optimizer/extensions/front/onnx/lp_normalization_ext.py index b09328effb86d4..fcbe85339c3fb8 100644 --- a/model-optimizer/extensions/front/onnx/lp_normalization_ext.py +++ b/model-optimizer/extensions/front/onnx/lp_normalization_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.ops.normalize_l2 import NormalizeL2Op diff --git a/model-optimizer/extensions/front/onnx/lrn_ext.py b/model-optimizer/extensions/front/onnx/lrn_ext.py index 471af33747a709..44ab90425aba53 100644 --- a/model-optimizer/extensions/front/onnx/lrn_ext.py +++ b/model-optimizer/extensions/front/onnx/lrn_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/lstm_ext.py b/model-optimizer/extensions/front/onnx/lstm_ext.py index e7786d8c7f970e..1f2088c8ed4b7b 100644 --- a/model-optimizer/extensions/front/onnx/lstm_ext.py +++ b/model-optimizer/extensions/front/onnx/lstm_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.LSTM import LSTM diff --git a/model-optimizer/extensions/front/onnx/lstm_ext_test.py b/model-optimizer/extensions/front/onnx/lstm_ext_test.py index 61f426ec446ceb..60c8568b6d95f7 100644 --- a/model-optimizer/extensions/front/onnx/lstm_ext_test.py +++ b/model-optimizer/extensions/front/onnx/lstm_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/onnx/mask_rcnn_conversion.py b/model-optimizer/extensions/front/onnx/mask_rcnn_conversion.py index 12ca0cfbb62c1c..ce11bb82fdefbe 100644 --- a/model-optimizer/extensions/front/onnx/mask_rcnn_conversion.py +++ b/model-optimizer/extensions/front/onnx/mask_rcnn_conversion.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/matmul_ext.py b/model-optimizer/extensions/front/onnx/matmul_ext.py index 286319bc8e58da..4cd4e9f1517a63 100644 --- a/model-optimizer/extensions/front/onnx/matmul_ext.py +++ b/model-optimizer/extensions/front/onnx/matmul_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.MatMul import MatMul from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/mean_variance_normalization_ext.py b/model-optimizer/extensions/front/onnx/mean_variance_normalization_ext.py index a4d5f286490d0a..e93b446a352dc5 100644 --- a/model-optimizer/extensions/front/onnx/mean_variance_normalization_ext.py +++ b/model-optimizer/extensions/front/onnx/mean_variance_normalization_ext.py @@ -1,25 +1,12 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np -from extensions.ops.mvn import MVN +from extensions.ops.mvn import MVNOnnx +from mo.front.common.partial_infer.utils import int64_array from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr -from mo.ops.const import Const class MeanVarianceNormalizationExtractor(FrontExtractorOp): @@ -28,20 +15,16 @@ class MeanVarianceNormalizationExtractor(FrontExtractorOp): @classmethod def extract(cls, node): - name = node.soft_get('name', node.id) axes = onnx_attr(node, 'axes', 'ints', - default=np.array([0, 2, 3], dtype=np.int64), + default=int64_array([0, 2, 3]), dst_type=lambda x: np.array(x, dtype=np.int64)) - axes = Const(node.graph, {'value': axes, 'name': name + '/Axes'}).create_node() - node.add_input_port(1, skip_if_exist=True) - node.in_port(1).connect(axes.out_port(0)) - attrs = { 'eps': 1e-9, 'normalize_variance': 1, - 'eps_mode': 'outside_sqrt' + 'axes': axes, + 'eps_mode': 'outside_sqrt', } - MVN.update_node_stat(node, attrs) + MVNOnnx.update_node_stat(node, attrs) return cls.enabled diff --git a/model-optimizer/extensions/front/onnx/non_max_suppression_ext.py b/model-optimizer/extensions/front/onnx/non_max_suppression_ext.py index 3471da2eff81c7..f4335b0e2b763f 100644 --- a/model-optimizer/extensions/front/onnx/non_max_suppression_ext.py +++ b/model-optimizer/extensions/front/onnx/non_max_suppression_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.non_max_suppression import NonMaxSuppression diff --git a/model-optimizer/extensions/front/onnx/non_zero_ext.py b/model-optimizer/extensions/front/onnx/non_zero_ext.py index 6f3e97ba05b44b..88613fdbd6bac3 100644 --- a/model-optimizer/extensions/front/onnx/non_zero_ext.py +++ b/model-optimizer/extensions/front/onnx/non_zero_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.non_zero import NonZero diff --git a/model-optimizer/extensions/front/onnx/normalize_ext.py b/model-optimizer/extensions/front/onnx/normalize_ext.py index 16863d79d858ae..b701fa6b4ff5cb 100644 --- a/model-optimizer/extensions/front/onnx/normalize_ext.py +++ b/model-optimizer/extensions/front/onnx/normalize_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.normalize import NormalizeOp from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/normalize_ext_test.py b/model-optimizer/extensions/front/onnx/normalize_ext_test.py index 063e77dca01e57..0324b49e9d6b9e 100644 --- a/model-optimizer/extensions/front/onnx/normalize_ext_test.py +++ b/model-optimizer/extensions/front/onnx/normalize_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import onnx diff --git a/model-optimizer/extensions/front/onnx/normalize_l2_normalize.py b/model-optimizer/extensions/front/onnx/normalize_l2_normalize.py index 66a42cd65db236..c28307da1d6555 100644 --- a/model-optimizer/extensions/front/onnx/normalize_l2_normalize.py +++ b/model-optimizer/extensions/front/onnx/normalize_l2_normalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/onnx/one_hot_ext.py b/model-optimizer/extensions/front/onnx/one_hot_ext.py index 895f8db641ccb5..0f756522175773 100644 --- a/model-optimizer/extensions/front/onnx/one_hot_ext.py +++ b/model-optimizer/extensions/front/onnx/one_hot_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.one_hot import OneHot from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/one_hot_normalize.py b/model-optimizer/extensions/front/onnx/one_hot_normalize.py index 27f93b565f05c0..2bcbe0ed85ec77 100644 --- a/model-optimizer/extensions/front/onnx/one_hot_normalize.py +++ b/model-optimizer/extensions/front/onnx/one_hot_normalize.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.front.split_normalizer import SqueezeAxis diff --git a/model-optimizer/extensions/front/onnx/pad_converter.py b/model-optimizer/extensions/front/onnx/pad_converter.py index 691ef8c17b2550..5b9a992af94598 100644 --- a/model-optimizer/extensions/front/onnx/pad_converter.py +++ b/model-optimizer/extensions/front/onnx/pad_converter.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.split import Split from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/onnx/pad_converter_test.py b/model-optimizer/extensions/front/onnx/pad_converter_test.py index 560399eb703025..a43ec3681dede4 100644 --- a/model-optimizer/extensions/front/onnx/pad_converter_test.py +++ b/model-optimizer/extensions/front/onnx/pad_converter_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/pad_ext.py b/model-optimizer/extensions/front/onnx/pad_ext.py index 8246f4c7776143..c16c2a7db185ec 100644 --- a/model-optimizer/extensions/front/onnx/pad_ext.py +++ b/model-optimizer/extensions/front/onnx/pad_ext.py @@ -1,21 +1,9 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np +from mo.front.common.partial_infer.utils import int64_array from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr, get_onnx_opset_version from mo.ops.pad import AttributedPad, ONNXPad @@ -28,11 +16,13 @@ class PadFrontExtractor(FrontExtractorOp): @classmethod def extract(cls, node): mode = onnx_attr(node, 'mode', 's', default='constant', dst_type=lambda x: x.decode()) - if get_onnx_opset_version(node) < 11: - pads = onnx_attr(node, 'pads', 'ints', dst_type=lambda x: np.array(x, dtype=np.int64)) + # Pytorch 1.3 while converting to opset 11, creates Pad from older opset. + # To be able to convert such models we have to check if pads attribute exists. + pads = onnx_attr(node, 'pads', 'ints', dst_type=int64_array) + if get_onnx_opset_version(node) < 11 or pads is not None: value = onnx_attr(node, 'value', 'f', default=0.) - assert pads is not None + assert pads is not None, 'pads is required attribute for Pad operation' # MO Pad op and ONNX Pad op have different format for pads values # MO Pad has Dx2 where D is the total number of dimensions diff --git a/model-optimizer/extensions/front/onnx/pad_ext_test.py b/model-optimizer/extensions/front/onnx/pad_ext_test.py index f70e0efee06270..c67e831bdd4435 100644 --- a/model-optimizer/extensions/front/onnx/pad_ext_test.py +++ b/model-optimizer/extensions/front/onnx/pad_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from argparse import Namespace import onnx @@ -57,6 +45,20 @@ def test_ok(self): self.compare() + def test_older_pad_opset_11(self): + node = self._create_node() + node.graph.graph['fw_opset_version'] = 11 + PadFrontExtractor.extract(node) + self.res = node + + self.expected = { + 'pads': [[1, 3], [2, 4]], + 'mode': 'constant', + 'fill_value': 0 + } + + self.compare() + def test_reflect(self): node = self._create_node(mode='reflect') PadFrontExtractor.extract(node) diff --git a/model-optimizer/extensions/front/onnx/parameter_ext.py b/model-optimizer/extensions/front/onnx/parameter_ext.py index dce13656574a74..4ce1a98f4f8c5a 100644 --- a/model-optimizer/extensions/front/onnx/parameter_ext.py +++ b/model-optimizer/extensions/front/onnx/parameter_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from onnx.mapping import TENSOR_TYPE_TO_NP_TYPE diff --git a/model-optimizer/extensions/front/onnx/person_detection_crossroad_conversion.py b/model-optimizer/extensions/front/onnx/person_detection_crossroad_conversion.py index a84117a89d7ece..36bd6b4ba4cdf7 100644 --- a/model-optimizer/extensions/front/onnx/person_detection_crossroad_conversion.py +++ b/model-optimizer/extensions/front/onnx/person_detection_crossroad_conversion.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.roifeatureextractor_onnx import ExperimentalDetectronROIFeatureExtractor from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/onnx/pooling_ext.py b/model-optimizer/extensions/front/onnx/pooling_ext.py index 40abbfeeda70b6..86f6afadf534b4 100644 --- a/model-optimizer/extensions/front/onnx/pooling_ext.py +++ b/model-optimizer/extensions/front/onnx/pooling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/onnx/priorbox_clustered_ext.py b/model-optimizer/extensions/front/onnx/priorbox_clustered_ext.py index 88441f42fb3aec..fed3c0fb6dc379 100644 --- a/model-optimizer/extensions/front/onnx/priorbox_clustered_ext.py +++ b/model-optimizer/extensions/front/onnx/priorbox_clustered_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.priorbox_clustered import PriorBoxClusteredOp diff --git a/model-optimizer/extensions/front/onnx/priorbox_clustered_ext_test.py b/model-optimizer/extensions/front/onnx/priorbox_clustered_ext_test.py index 118b04a2b802d0..06f3ae8ea003e4 100644 --- a/model-optimizer/extensions/front/onnx/priorbox_clustered_ext_test.py +++ b/model-optimizer/extensions/front/onnx/priorbox_clustered_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/priorbox_ext.py b/model-optimizer/extensions/front/onnx/priorbox_ext.py index 7d28c740b83b01..5ab653ffcbdb03 100644 --- a/model-optimizer/extensions/front/onnx/priorbox_ext.py +++ b/model-optimizer/extensions/front/onnx/priorbox_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.priorbox import PriorBoxOp diff --git a/model-optimizer/extensions/front/onnx/priorbox_ext_test.py b/model-optimizer/extensions/front/onnx/priorbox_ext_test.py index fdf96e577fe45f..f5e2be7061cb06 100644 --- a/model-optimizer/extensions/front/onnx/priorbox_ext_test.py +++ b/model-optimizer/extensions/front/onnx/priorbox_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/priorgridgenerator_ext.py b/model-optimizer/extensions/front/onnx/priorgridgenerator_ext.py index 73c27195000a6b..ac5e53ad8ab862 100644 --- a/model-optimizer/extensions/front/onnx/priorgridgenerator_ext.py +++ b/model-optimizer/extensions/front/onnx/priorgridgenerator_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.priorgridgenerator_onnx import ExperimentalDetectronPriorGridGenerator from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/proposal_ext.py b/model-optimizer/extensions/front/onnx/proposal_ext.py index e0002de83bd8a4..bf8ca0545a0b1d 100644 --- a/model-optimizer/extensions/front/onnx/proposal_ext.py +++ b/model-optimizer/extensions/front/onnx/proposal_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.proposal_onnx import ExperimentalDetectronGenerateProposalsSingleImage from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/quantize_dequantize_linear.py b/model-optimizer/extensions/front/onnx/quantize_dequantize_linear.py index f57db79f9d4390..5607c336cd16ec 100644 --- a/model-optimizer/extensions/front/onnx/quantize_dequantize_linear.py +++ b/model-optimizer/extensions/front/onnx/quantize_dequantize_linear.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/onnx/quantize_dequantize_linear_test.py b/model-optimizer/extensions/front/onnx/quantize_dequantize_linear_test.py index e6116f93d33ebc..c97f6722be4fd0 100644 --- a/model-optimizer/extensions/front/onnx/quantize_dequantize_linear_test.py +++ b/model-optimizer/extensions/front/onnx/quantize_dequantize_linear_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/front/onnx/quantize_ext.py b/model-optimizer/extensions/front/onnx/quantize_ext.py index 7e60e5af23b5b9..ac4439325c6a95 100644 --- a/model-optimizer/extensions/front/onnx/quantize_ext.py +++ b/model-optimizer/extensions/front/onnx/quantize_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.fakequantize import FakeQuantize from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/quantize_linear_ext.py b/model-optimizer/extensions/front/onnx/quantize_linear_ext.py index ba3dbd4166dc0a..8d329d0cbff562 100644 --- a/model-optimizer/extensions/front/onnx/quantize_linear_ext.py +++ b/model-optimizer/extensions/front/onnx/quantize_linear_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.quantize_linear import QuantizeLinear from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr, get_onnx_opset_version diff --git a/model-optimizer/extensions/front/onnx/quantize_linear_resolver.py b/model-optimizer/extensions/front/onnx/quantize_linear_resolver.py index 6cb2facfa4e764..1b9df08c99c98b 100644 --- a/model-optimizer/extensions/front/onnx/quantize_linear_resolver.py +++ b/model-optimizer/extensions/front/onnx/quantize_linear_resolver.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.front.onnx.quantize_dequantize_linear import QuantizeDequantizeLinear diff --git a/model-optimizer/extensions/front/onnx/quantize_linear_resolver_test.py b/model-optimizer/extensions/front/onnx/quantize_linear_resolver_test.py index 8230ae624775d9..e90d6c7144267a 100644 --- a/model-optimizer/extensions/front/onnx/quantize_linear_resolver_test.py +++ b/model-optimizer/extensions/front/onnx/quantize_linear_resolver_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/front/onnx/range_ext.py b/model-optimizer/extensions/front/onnx/range_ext.py index 73f320b58afe96..0657dec370760b 100644 --- a/model-optimizer/extensions/front/onnx/range_ext.py +++ b/model-optimizer/extensions/front/onnx/range_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.range import Range from mo.front.extractor import FrontExtractorOp from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/onnx/reduce_ext.py b/model-optimizer/extensions/front/onnx/reduce_ext.py index e1c2458d5793dd..55c998366b6f1f 100644 --- a/model-optimizer/extensions/front/onnx/reduce_ext.py +++ b/model-optimizer/extensions/front/onnx/reduce_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.ReduceOps import ReduceL1, ReduceL2, ReduceMax, ReduceMean, ReduceMin, ReduceProd, ReduceSum from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/onnx/remove_filtering_boxes_by_size.py b/model-optimizer/extensions/front/onnx/remove_filtering_boxes_by_size.py index dec16f70456b6d..01755ea4636c49 100644 --- a/model-optimizer/extensions/front/onnx/remove_filtering_boxes_by_size.py +++ b/model-optimizer/extensions/front/onnx/remove_filtering_boxes_by_size.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.split_normalizer import AttributedVariadicSplitToVariadicSplit from extensions.ops.range import Range from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/onnx/reshape_ext.py b/model-optimizer/extensions/front/onnx/reshape_ext.py index 9c79f9d9783696..6e9f30bee284ff 100644 --- a/model-optimizer/extensions/front/onnx/reshape_ext.py +++ b/model-optimizer/extensions/front/onnx/reshape_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/resize_ext.py b/model-optimizer/extensions/front/onnx/resize_ext.py index 3692dbbcc8c47b..4d9c51ffc0c162 100644 --- a/model-optimizer/extensions/front/onnx/resize_ext.py +++ b/model-optimizer/extensions/front/onnx/resize_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.ONNXResize10 import ONNXResize10 from extensions.ops.ONNXResize11 import ONNXResize11Op diff --git a/model-optimizer/extensions/front/onnx/reverse_sequence_ext.py b/model-optimizer/extensions/front/onnx/reverse_sequence_ext.py index c8e4313f573930..9158889c7b1868 100644 --- a/model-optimizer/extensions/front/onnx/reverse_sequence_ext.py +++ b/model-optimizer/extensions/front/onnx/reverse_sequence_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2019 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.reverse_sequence import ReverseSequence from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/rnn_ext.py b/model-optimizer/extensions/front/onnx/rnn_ext.py index 527da4d7774431..a1ba1e846fb958 100644 --- a/model-optimizer/extensions/front/onnx/rnn_ext.py +++ b/model-optimizer/extensions/front/onnx/rnn_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.RNN import RNN diff --git a/model-optimizer/extensions/front/onnx/rnn_ext_test.py b/model-optimizer/extensions/front/onnx/rnn_ext_test.py index bef89582351b7e..36d031e21d7b5e 100644 --- a/model-optimizer/extensions/front/onnx/rnn_ext_test.py +++ b/model-optimizer/extensions/front/onnx/rnn_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/front/onnx/roialign_ext.py b/model-optimizer/extensions/front/onnx/roialign_ext.py index bcf97fcdd4820a..0f8516995c5c2a 100644 --- a/model-optimizer/extensions/front/onnx/roialign_ext.py +++ b/model-optimizer/extensions/front/onnx/roialign_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.roialign import ROIAlign from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/roifeatureextractor_ext.py b/model-optimizer/extensions/front/onnx/roifeatureextractor_ext.py index a6a25fbfab4607..47e1de57922f24 100644 --- a/model-optimizer/extensions/front/onnx/roifeatureextractor_ext.py +++ b/model-optimizer/extensions/front/onnx/roifeatureextractor_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/scatter_ext.py b/model-optimizer/extensions/front/onnx/scatter_ext.py index 8e9a1d2bd86e26..c291004af34c88 100644 --- a/model-optimizer/extensions/front/onnx/scatter_ext.py +++ b/model-optimizer/extensions/front/onnx/scatter_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.scatter import ScatterElementsUpdate from extensions.ops.scatternd import ScatterNDUpdate from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/shape_ext.py b/model-optimizer/extensions/front/onnx/shape_ext.py index e32a09a42aef55..3f84d1c2dda388 100644 --- a/model-optimizer/extensions/front/onnx/shape_ext.py +++ b/model-optimizer/extensions/front/onnx/shape_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/slice_ext.py b/model-optimizer/extensions/front/onnx/slice_ext.py index 47f38ab809fe5e..d071a4ca443a75 100644 --- a/model-optimizer/extensions/front/onnx/slice_ext.py +++ b/model-optimizer/extensions/front/onnx/slice_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/softmaxONNX_to_softmax.py b/model-optimizer/extensions/front/onnx/softmaxONNX_to_softmax.py index 45d33bd591d42a..047dc94ae2796b 100644 --- a/model-optimizer/extensions/front/onnx/softmaxONNX_to_softmax.py +++ b/model-optimizer/extensions/front/onnx/softmaxONNX_to_softmax.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementOp from mo.graph.graph import Graph, Node, rename_nodes diff --git a/model-optimizer/extensions/front/onnx/softmax_ext.py b/model-optimizer/extensions/front/onnx/softmax_ext.py index 59d92d233a6f30..3f2759a5492e31 100644 --- a/model-optimizer/extensions/front/onnx/softmax_ext.py +++ b/model-optimizer/extensions/front/onnx/softmax_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.onnx.extractors.utils import onnx_attr diff --git a/model-optimizer/extensions/front/onnx/softplus_ext.py b/model-optimizer/extensions/front/onnx/softplus_ext.py index 46d06117fc8639..a469496cffaddd 100644 --- a/model-optimizer/extensions/front/onnx/softplus_ext.py +++ b/model-optimizer/extensions/front/onnx/softplus_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import SoftPlus from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/space_to_depth_ext.py b/model-optimizer/extensions/front/onnx/space_to_depth_ext.py index c468dd2488fa2b..39e804c5026f5d 100644 --- a/model-optimizer/extensions/front/onnx/space_to_depth_ext.py +++ b/model-optimizer/extensions/front/onnx/space_to_depth_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.space_to_depth import SpaceToDepth from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/split_ext.py b/model-optimizer/extensions/front/onnx/split_ext.py index c51ad226387576..bea9237f1e6a16 100644 --- a/model-optimizer/extensions/front/onnx/split_ext.py +++ b/model-optimizer/extensions/front/onnx/split_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.split import AttributedVariadicSplit, AttributedSplit diff --git a/model-optimizer/extensions/front/onnx/squeeze_ext.py b/model-optimizer/extensions/front/onnx/squeeze_ext.py index c7ea1c76dfdf20..e57f67298bcc91 100644 --- a/model-optimizer/extensions/front/onnx/squeeze_ext.py +++ b/model-optimizer/extensions/front/onnx/squeeze_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/squeeze_ext_test.py b/model-optimizer/extensions/front/onnx/squeeze_ext_test.py index 50952e1000a6a0..ee943eba26b1dc 100644 --- a/model-optimizer/extensions/front/onnx/squeeze_ext_test.py +++ b/model-optimizer/extensions/front/onnx/squeeze_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/top_k_ext.py b/model-optimizer/extensions/front/onnx/top_k_ext.py index bf6cc94acf2020..bae2bec317686a 100644 --- a/model-optimizer/extensions/front/onnx/top_k_ext.py +++ b/model-optimizer/extensions/front/onnx/top_k_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.topk import TopK from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/topkrois_ext.py b/model-optimizer/extensions/front/onnx/topkrois_ext.py index 0d6b59741b5c7e..bb6e2af6a09a29 100644 --- a/model-optimizer/extensions/front/onnx/topkrois_ext.py +++ b/model-optimizer/extensions/front/onnx/topkrois_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.topkrois_onnx import ExperimentalDetectronTopKROIs from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/onnx/transpose_ext.py b/model-optimizer/extensions/front/onnx/transpose_ext.py index d2ce963992a62d..3302cac11ccd48 100644 --- a/model-optimizer/extensions/front/onnx/transpose_ext.py +++ b/model-optimizer/extensions/front/onnx/transpose_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.transpose import Transpose from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/onnx/transpose_ext_test.py b/model-optimizer/extensions/front/onnx/transpose_ext_test.py index 8030a5216cb2d8..cb4e8075af6e31 100644 --- a/model-optimizer/extensions/front/onnx/transpose_ext_test.py +++ b/model-optimizer/extensions/front/onnx/transpose_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import itertools import unittest diff --git a/model-optimizer/extensions/front/onnx/unsqueeze_ext.py b/model-optimizer/extensions/front/onnx/unsqueeze_ext.py index 442b018528a696..dde10aeae5b9cd 100644 --- a/model-optimizer/extensions/front/onnx/unsqueeze_ext.py +++ b/model-optimizer/extensions/front/onnx/unsqueeze_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/onnx/unsqueeze_ext_test.py b/model-optimizer/extensions/front/onnx/unsqueeze_ext_test.py index ad8576db9de37f..f631aa8351d243 100644 --- a/model-optimizer/extensions/front/onnx/unsqueeze_ext_test.py +++ b/model-optimizer/extensions/front/onnx/unsqueeze_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/onnx/upsample_ext.py b/model-optimizer/extensions/front/onnx/upsample_ext.py index b5b691c1b979ae..a07f1d0d5d5159 100644 --- a/model-optimizer/extensions/front/onnx/upsample_ext.py +++ b/model-optimizer/extensions/front/onnx/upsample_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import math diff --git a/model-optimizer/extensions/front/onnx/upsample_ext_test.py b/model-optimizer/extensions/front/onnx/upsample_ext_test.py index 987378c36cedd6..bb1684b8192c36 100644 --- a/model-optimizer/extensions/front/onnx/upsample_ext_test.py +++ b/model-optimizer/extensions/front/onnx/upsample_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import onnx diff --git a/model-optimizer/extensions/front/onnx/where_ext.py b/model-optimizer/extensions/front/onnx/where_ext.py index 70ab322982cabc..ac06bc1d2ed889 100644 --- a/model-optimizer/extensions/front/onnx/where_ext.py +++ b/model-optimizer/extensions/front/onnx/where_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.select import Select from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/output_cut.py b/model-optimizer/extensions/front/output_cut.py index c64c2bbc9473de..2fbacfecb97cd5 100644 --- a/model-optimizer/extensions/front/output_cut.py +++ b/model-optimizer/extensions/front/output_cut.py @@ -1,21 +1,9 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.front.extractor import add_output_ops -from mo.graph.graph import Graph +from mo.graph.graph import Graph, get_edge_attribute_between_nodes, set_edge_attribute_between_nodes class OutputCut(FrontReplacementPattern): @@ -32,3 +20,24 @@ def run_before(self): def find_and_replace_pattern(self, graph: Graph): add_output_ops(graph, graph.graph['packed_outputs'], inputs=graph.graph['user_shapes']) + + # For keeping tensor names information for output nodes fake outputs are added + # to graph during the model loading. In the following code fake outputs are removed + # and tensor names information is moved to output->Result edge. + for node in graph.get_op_nodes(needs_removal=True): + fw_info = None + in_node = None + for in_port_idx in node.in_edges(): + node_idx = node.in_edge(in_port_idx)['in'] + if node_idx in node.in_nodes(): + in_node = node.in_node(node_idx) + fw_info_value = get_edge_attribute_between_nodes(in_node, node, 'fw_tensor_debug_info') + if fw_info_value: + fw_info = fw_info_value + break + graph.erase_node(node) + + if fw_info is not None and in_node is not None: + for out_idx in in_node.out_nodes(): + set_edge_attribute_between_nodes(in_node, in_node.out_node(out_idx), + 'fw_tensor_debug_info', fw_info) diff --git a/model-optimizer/extensions/front/output_cut_test.py b/model-optimizer/extensions/front/output_cut_test.py new file mode 100644 index 00000000000000..8d662250176ab4 --- /dev/null +++ b/model-optimizer/extensions/front/output_cut_test.py @@ -0,0 +1,70 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +from extensions.front.output_cut import OutputCut +from mo.graph.graph import Node +from mo.utils.unittest.graph import build_graph, regular_op + +nodes = { + **regular_op('Parameter1', {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}), + **regular_op('Op1', {'type': 'Op1', 'kind': 'op', 'op': 'Op1'}), + **regular_op('Op2', {'type': 'Op2', 'kind': 'op', 'op': 'Op2'}), + + **regular_op('FakeOutput1', {'type': 'Identity', 'kind': 'op', 'op': 'Identity', 'needs_removal': True, 'id': 0}), + **regular_op('FakeOutput2', {'type': 'Identity', 'kind': 'op', 'op': 'Identity', 'needs_removal': True, 'id': 1}), + +} + + +class TestsOutputCut(unittest.TestCase): + def test_case1(self): + graph = build_graph(nodes, [('Parameter1', 'FakeOutput1', + {'in': 0, 'out': 0, 'fw_tensor_debug_info': + [('Parameter1', 0, 'Parameter1_tensor_name')]})]) + graph.graph['packed_outputs'] = None + graph.graph['user_shapes'] = None + + graph.stage = 'front' + OutputCut().find_and_replace_pattern(graph) + + param1 = Node(graph, 'Parameter1') + self.assertTrue(param1.out_node()['type'] == 'Result') + self.assertTrue(param1.out_edge()['fw_tensor_debug_info'] == [('Parameter1', 0, 'Parameter1_tensor_name')]) + self.assertTrue(graph.get_op_nodes(name='FakeOutput1') == []) + + def test_case2(self): + graph = build_graph(nodes, [('Parameter1', 'Op1'), + ('Op1', 'FakeOutput1', + {'in': 1, 'out': 1, 'fw_tensor_debug_info': + [('Op1', 0, 'Op1_tensor_name')]}), + ('Parameter1', 'Op2'), + ('Op2', 'FakeOutput2', + {'in': 2, 'out': 3, + 'fw_tensor_debug_info': [('Op2', 0, 'Op2_tensor_name')]})]) + graph.graph['packed_outputs'] = None + graph.graph['user_shapes'] = None + + graph.stage = 'front' + OutputCut().find_and_replace_pattern(graph) + + op1 = Node(graph, 'Op1') + op2 = Node(graph, 'Op2') + self.assertTrue(op1.out_node(1)['type'] == 'Result') + self.assertTrue(op2.out_node(3)['type'] == 'Result') + self.assertTrue(op1.out_edge(1)['fw_tensor_debug_info'] == [('Op1', 0, 'Op1_tensor_name')]) + self.assertTrue(op2.out_edge(3)['fw_tensor_debug_info'] == [('Op2', 0, 'Op2_tensor_name')]) + self.assertTrue(graph.get_op_nodes(name='FakeOutput1') == []) + self.assertTrue(graph.get_op_nodes(name='FakeOutput2') == []) + + def test_case3(self): + graph = build_graph(nodes, []) + graph.graph['packed_outputs'] = None + graph.graph['user_shapes'] = None + + graph.stage = 'front' + OutputCut().find_and_replace_pattern(graph) + + self.assertTrue(graph.get_op_nodes(name='FakeOutput1') == []) + self.assertTrue(graph.get_op_nodes(name='FakeOutput2') == []) diff --git a/model-optimizer/extensions/front/override_batch.py b/model-optimizer/extensions/front/override_batch.py index c3f4239abe47b6..7b20047905c937 100644 --- a/model-optimizer/extensions/front/override_batch.py +++ b/model-optimizer/extensions/front/override_batch.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph from mo.middle.passes.infer import override_batch diff --git a/model-optimizer/extensions/front/pass_separator.py b/model-optimizer/extensions/front/pass_separator.py index f9998b19f1fb6d..a6e37bad5b60f4 100644 --- a/model-optimizer/extensions/front/pass_separator.py +++ b/model-optimizer/extensions/front/pass_separator.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/rank_decomposer.py b/model-optimizer/extensions/front/rank_decomposer.py index b7dcb4ee5357ac..cc379a14acec47 100644 --- a/model-optimizer/extensions/front/rank_decomposer.py +++ b/model-optimizer/extensions/front/rank_decomposer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/rank_decomposer_test.py b/model-optimizer/extensions/front/rank_decomposer_test.py index f3f504731d1083..d6fea7f34764dd 100644 --- a/model-optimizer/extensions/front/rank_decomposer_test.py +++ b/model-optimizer/extensions/front/rank_decomposer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/reciprocal.py b/model-optimizer/extensions/front/reciprocal.py index 3655f184a82513..b90a1ba10edc8f 100644 --- a/model-optimizer/extensions/front/reciprocal.py +++ b/model-optimizer/extensions/front/reciprocal.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.elementwise import Pow diff --git a/model-optimizer/extensions/front/reciprocal_test.py b/model-optimizer/extensions/front/reciprocal_test.py index 4ba3c6f8cb2cb7..738c47404ae213 100644 --- a/model-optimizer/extensions/front/reciprocal_test.py +++ b/model-optimizer/extensions/front/reciprocal_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/reduce_axis_normalizer.py b/model-optimizer/extensions/front/reduce_axis_normalizer.py index dee2492f7c63a2..2197d5ed38a5d6 100644 --- a/model-optimizer/extensions/front/reduce_axis_normalizer.py +++ b/model-optimizer/extensions/front/reduce_axis_normalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.ReduceOps import reduce_map from extensions.ops.range import Range diff --git a/model-optimizer/extensions/front/reduce_axis_normalizer_test.py b/model-optimizer/extensions/front/reduce_axis_normalizer_test.py index 896a1d78075c1d..d459f52e648db5 100644 --- a/model-optimizer/extensions/front/reduce_axis_normalizer_test.py +++ b/model-optimizer/extensions/front/reduce_axis_normalizer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/reshape_dim_normalizer.py b/model-optimizer/extensions/front/reshape_dim_normalizer.py index 03ad628681ef8f..79aa5b7c622185 100644 --- a/model-optimizer/extensions/front/reshape_dim_normalizer.py +++ b/model-optimizer/extensions/front/reshape_dim_normalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.pass_separator import FrontStart from mo.front.common.replacement import FrontReplacementSubgraph from mo.front.subgraph_matcher import SubgraphMatch diff --git a/model-optimizer/extensions/front/restore_ports.py b/model-optimizer/extensions/front/restore_ports.py index 2044a7bbcfbef2..3d4c6c81586eb8 100644 --- a/model-optimizer/extensions/front/restore_ports.py +++ b/model-optimizer/extensions/front/restore_ports.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementSubgraph from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/scatter_normalizer.py b/model-optimizer/extensions/front/scatter_normalizer.py index 07afa84d33380b..2e3d081f60b3c7 100644 --- a/model-optimizer/extensions/front/scatter_normalizer.py +++ b/model-optimizer/extensions/front/scatter_normalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/scatter_normalizer_test.py b/model-optimizer/extensions/front/scatter_normalizer_test.py index 016cd9963209f6..0c873d7eca660d 100644 --- a/model-optimizer/extensions/front/scatter_normalizer_test.py +++ b/model-optimizer/extensions/front/scatter_normalizer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/softmax.py b/model-optimizer/extensions/front/softmax.py index 9b93f0001eba23..f530d4392fa65f 100644 --- a/model-optimizer/extensions/front/softmax.py +++ b/model-optimizer/extensions/front/softmax.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/softsign_replacer.py b/model-optimizer/extensions/front/softsign_replacer.py index feb1b21823febe..282cb323dfe823 100644 --- a/model-optimizer/extensions/front/softsign_replacer.py +++ b/model-optimizer/extensions/front/softsign_replacer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.activation_ops import Abs diff --git a/model-optimizer/extensions/front/softsign_replacer_test.py b/model-optimizer/extensions/front/softsign_replacer_test.py index ad3a7e493dc904..60f9e701f99e51 100644 --- a/model-optimizer/extensions/front/softsign_replacer_test.py +++ b/model-optimizer/extensions/front/softsign_replacer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/split_normalizer.py b/model-optimizer/extensions/front/split_normalizer.py index bb7d79c83c3ba4..637efc83ae0431 100644 --- a/model-optimizer/extensions/front/split_normalizer.py +++ b/model-optimizer/extensions/front/split_normalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/split_normalizer_test.py b/model-optimizer/extensions/front/split_normalizer_test.py index fcd322f0e2c843..0c4e96a2de6f70 100644 --- a/model-optimizer/extensions/front/split_normalizer_test.py +++ b/model-optimizer/extensions/front/split_normalizer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/standalone_const_eraser.py b/model-optimizer/extensions/front/standalone_const_eraser.py index 6cbae5c77757be..7b01d34d57d74e 100644 --- a/model-optimizer/extensions/front/standalone_const_eraser.py +++ b/model-optimizer/extensions/front/standalone_const_eraser.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/sub.py b/model-optimizer/extensions/front/sub.py index 8e1e915e58f1d9..289dabb0d227c9 100644 --- a/model-optimizer/extensions/front/sub.py +++ b/model-optimizer/extensions/front/sub.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/sub_test.py b/model-optimizer/extensions/front/sub_test.py index 852249e86d34c3..1cc1956e97505a 100644 --- a/model-optimizer/extensions/front/sub_test.py +++ b/model-optimizer/extensions/front/sub_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/AutomlEfficientDet.py b/model-optimizer/extensions/front/tf/AutomlEfficientDet.py index f9af87247c666a..2ac2a166b669ea 100644 --- a/model-optimizer/extensions/front/tf/AutomlEfficientDet.py +++ b/model-optimizer/extensions/front/tf/AutomlEfficientDet.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np @@ -35,6 +22,7 @@ class EfficientDet(FrontReplacementFromConfigFileGeneral): replacement_id = 'AutomlEfficientDet' + run_not_recursively = True def run_before(self): from extensions.front.ExpandDimsToUnsqueeze import ExpandDimsToUnsqueeze @@ -70,10 +58,11 @@ def transform_graph(self, graph: Graph, replacement_descriptions: dict): # which includes padding and resizing from the model preprocessing_input_node_id = replacement_descriptions['preprocessing_input_node'] assert preprocessing_input_node_id in graph.nodes, 'The node with name "{}" is not found in the graph. This ' \ - 'node should provide scaled image output and is specified' \ + 'should be a last node before image normalization and is specified' \ ' in the json file.'.format(preprocessing_input_node_id) preprocessing_input_node = Node(graph, preprocessing_input_node_id) - preprocessing_input_node.in_port(0).get_connection().set_source(parameter_node.out_port(0)) + consumer_node = preprocessing_input_node.out_port(0).get_connection().get_destination().node + consumer_node.in_port(0).get_connection().set_source(parameter_node.out_port(0)) preprocessing_output_node_id = replacement_descriptions['preprocessing_output_node'] assert preprocessing_output_node_id in graph.nodes, 'The node with name "{}" is not found in the graph. This ' \ diff --git a/model-optimizer/extensions/front/tf/BatchMatMul_ext.py b/model-optimizer/extensions/front/tf/BatchMatMul_ext.py index 6d877fa1fc672b..f35174f1dc2c77 100644 --- a/model-optimizer/extensions/front/tf/BatchMatMul_ext.py +++ b/model-optimizer/extensions/front/tf/BatchMatMul_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.MatMul import MatMul from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/BatchToSpaceNDToUpsample.py b/model-optimizer/extensions/front/tf/BatchToSpaceNDToUpsample.py index b5f93f1785958c..a9d9f2c78fee05 100644 --- a/model-optimizer/extensions/front/tf/BatchToSpaceNDToUpsample.py +++ b/model-optimizer/extensions/front/tf/BatchToSpaceNDToUpsample.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/tf/BlockLSTM.py b/model-optimizer/extensions/front/tf/BlockLSTM.py index 11d8b435a60ead..0d887d16a656d4 100644 --- a/model-optimizer/extensions/front/tf/BlockLSTM.py +++ b/model-optimizer/extensions/front/tf/BlockLSTM.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/BlockLSTM_ext.py b/model-optimizer/extensions/front/tf/BlockLSTM_ext.py index d728ce5fe9a02b..05cf77050698b5 100644 --- a/model-optimizer/extensions/front/tf/BlockLSTM_ext.py +++ b/model-optimizer/extensions/front/tf/BlockLSTM_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.BlockLSTM import BlockLSTM from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement.py b/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement.py index c3df89e657366b..143509a0a2ff10 100644 --- a/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement.py +++ b/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement.py @@ -1,232 +1,91 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - 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 +from extensions.ops.ctc_greedy_decoder_seq_len import CTCGreedyDecoderSeqLenOp +from extensions.ops.transpose import Transpose +from mo.front.common.partial_infer.utils import int64_array +from mo.front.common.replacement import FrontReplacementSubgraph +from mo.front.tf.graph_utils import create_op_with_const_inputs +from mo.graph.graph import Graph, rename_nodes - 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. -""" +def replace_ctc_greedy_decoder(graph: Graph, match: dict): + ctc_greedy_decoder_tf = match['decoder'] + cast = match['cast'] + sparse_to_dense = match['sparse_to_dense'] + sparse_to_dense_name = sparse_to_dense.soft_get('name', sparse_to_dense.id) + ctc_greedy_decoder_tf_name = ctc_greedy_decoder_tf.soft_get('name', ctc_greedy_decoder_tf.id) -import logging as log + # for normalizing input chanel need to transpose input data from [T, N, C] to [N, T, C] + # which supported CTCGreedyDecoderSeqLen op. + ctc_data_permute = create_op_with_const_inputs(graph, Transpose, {1: int64_array([1, 0, 2])}, + {'name': ctc_greedy_decoder_tf_name + '/ctc_data_permute'}) -import numpy as np + assert ctc_greedy_decoder_tf.has_valid('merge_repeated'), \ + 'The CTCGreedyDecoderSeqLen node "{}" misses "merge_repeated" attribute'.format(ctc_greedy_decoder_tf_name) -from extensions.ops.Cast import Cast -from extensions.front.Pack import Pack -from extensions.front.FillToBroadcast import FillToBroadcast -from mo.front.common.partial_infer.utils import int64_array -from mo.front.common.replacement import FrontReplacementSubgraph -from mo.front.tf.graph_utils import create_op_with_const_inputs -from mo.graph.graph import Graph, rename_nodes -from mo.ops.broadcast import Broadcast -from mo.ops.concat import Concat -from mo.ops.squeeze import Squeeze -from mo.ops.unsqueeze import Unsqueeze + ctc_greedy_decoder_tf.in_port(0).get_source().connect(ctc_data_permute.in_port(0)) + merge_repeated_tf = ctc_greedy_decoder_tf.merge_repeated + ctc_greedy_decoder = CTCGreedyDecoderSeqLenOp(graph, {'name': sparse_to_dense_name, + 'merge_repeated': merge_repeated_tf}).create_node() + rename_nodes( + [(sparse_to_dense, sparse_to_dense_name + '/AbandonedName'), (ctc_greedy_decoder, sparse_to_dense_name)]) + ctc_greedy_decoder.in_port(0).connect(ctc_data_permute.out_port(0)) + ctc_greedy_decoder_tf.in_port(1).get_source().connect(ctc_greedy_decoder.in_port(1)) + + # set output of the new sub-graph as a source for SparseToDense consumer + sparse_to_dense.out_port(0).get_connection().set_source(ctc_greedy_decoder.out_port(0)) + + # remove no longer needed nodes + graph.remove_nodes_from([sparse_to_dense.id, cast.id, ctc_greedy_decoder_tf.id]) class CTCGreedyDecoderReplacement(FrontReplacementSubgraph): """ TensorFlow CTCGreedyDecoder produces output in a sparse tensor that is not supported by Inference Engine and - Inference Engine's CTCGreedyDecoder has different output that is in a dense format. So this transformation - intents to replace TF CTCGreedyDecoder+SparseToDense with IE one. - Also Inference Engine's CTCGreedyDecoder has a specific format for the second input tensor, a sequence length, - different from TF's one so this transformation cares about transformation of its format. - The second input to the CTCGreedyDecoder in the TensorFlow is a 1D tensor with sequence lengths. In the Inference - Engine the second input to the CTCGreedyDecoder is a 2D tensor, a sequence mask, where the first element - in each row is equal to 1 and all others in the tail are equal to 0. The number of ones represents - a sequence length. + Inference Engine's CTCGreedyDecoderSeqLen has different output that is in a dense format. So this transformation + intents to replace TF CTCGreedyDecoder+SparseToDense where SparseToDense third input get from input parameter + to CTCGreedyDecoderSeqLen which compatible with IE. """ enabled = True - def run_after(self): - # CTCGreedyDecoderReplacement is not reshape-able transformation - # so reshape-able CTCGreedyDecoderReplacement2 transformation is applied first - return [CTCGreedyDecoderReplacement2] - @staticmethod def pattern(**kwargs): return dict( - nodes=[('decoder', dict(op='CTCGreedyDecoder')), + nodes=[('decoder', dict(op='CTCGreedyDecoderSeqLen')), ('cast', dict(op='Cast')), ('sparse_to_dense', dict(op='SparseToDense')) ], edges=[('decoder', 'sparse_to_dense', {'out': 0}), ('decoder', 'cast', {'out': 1}), - ('cast', 'sparse_to_dense', {'out': 0}) - ] + ('cast', 'sparse_to_dense', {'out': 0})] ) def replace_sub_graph(self, graph: Graph, match: dict): - # TODO: Once Inference Engine's CTCGreedyDecoder starts to support sequence length format like in TensorFlow, - # CTCGreedyDecoderReplacement2 needs to be removed and CTCGreedyDecoderReplacement, a more generic - # transformation, needs to be adopted for all cases - ctc_greedy_decoder = match['decoder'] - cast = match['cast'] - sparse_to_dense = match['sparse_to_dense'] - sparse_to_dense_name = sparse_to_dense.soft_get('name', sparse_to_dense.id) - - # disconnect SparseToDense and Cast nodes - sparse_to_dense.in_port(0).disconnect() - cast.in_port(0).disconnect() - - # transform CTCGreedyDecoder output to TensorFlow's one: - # 1. squeeze the output to [N, T] shape - # 2. cast it to integer - squeeze_dec_seq = create_op_with_const_inputs(graph, Squeeze, {1: int64_array([2, 3])}, - {'name': sparse_to_dense_name}) - squeeze_dec_seq.in_port(0).connect(ctc_greedy_decoder.out_port(0)) - cast_to_int = Cast(graph, {'name': sparse_to_dense_name + '/CastToInt', - 'dst_type': np.int32}).create_node() - cast_to_int.in_port(0).connect(squeeze_dec_seq.out_port(0)) - - # preserve output name from original graph - rename_nodes([(sparse_to_dense, sparse_to_dense_name + '/AbandonedName'), - (cast_to_int, sparse_to_dense_name)]) - - # set output of the new sub-graph as a source for SparseToDense consumer - sparse_to_dense.out_port(0).get_connection().set_source(cast_to_int.out_port(0)) - - # remove no longer needed nodes - graph.remove_nodes_from([sparse_to_dense.id, cast.id]) - - # mark CTCGreedyDecoder node as a node that requires transformation of sequence length to a mask format - # in the middle phase - ctc_greedy_decoder['use_mask_format'] = True - - # unless the second input of CTCGreedyDecoder is a parameter, it enforces MO to use --static-shape - # to try getting the second input with a value - sequence_length_node = ctc_greedy_decoder.in_node(1) - if sequence_length_node.soft_get('op') != 'Parameter' and not graph.graph['cmd_params'].static_shape: - log.error( - "Model can not be translated in a reshape-able way.\n" - "Model Optimizer key static_shape was turned on to prevent related errors.\n" - "There will be no success changing input shapes of the model with the help of " - "InferenceEngine reshape method", extra={'is_warning': True}) - graph.graph['cmd_params'].static_shape = True - - -class CTCGreedyDecoderReplacement2(FrontReplacementSubgraph): + replace_ctc_greedy_decoder(graph, match) + + +class CTCGreedyDecoderWithSparseToDenseShapeReplacement(FrontReplacementSubgraph): """ - The TF implementation of the CTCGreedyDecoder produces a tuple with two tensors. The first element in the tuple is - the SparseTensor which is converted to a regular tensor with the SparseToDense operation. This replacer matches - CTCGreedyDecoder and SparseToDense operations and removes the SparseToDense and Cast operation which is also used - in the SparseToDense operation, because Inference Engine implementation of the CTCGreedyDecoder produces regular - tensor as output. - Also, Inference Engine CTCGreedyDecoder requires a mask format for sequence lengths that is a different from - original one. Hence, this transformation changes a format of sequence length to a mask by replacing Fill and Pack - nodes with a special graph that produces a tensor of ones with shape [T, N] accepted by opset CTCGreedyDecoder. + TensorFlow CTCGreedyDecoder produces output in a sparse tensor that is not supported by Inference Engine and + Inference Engine's CTCGreedyDecoderSeqLen has different output that is in a dense format. So this transformation + intents to replace TF CTCGreedyDecoder+SparseToDense where SparseToDense third input get from CTCGreedyDecoder + second output to CTCGreedyDecoderSeqLen which compatible with IE. """ enabled = True - def run_before(self): - return [Pack, FillToBroadcast] - @staticmethod def pattern(**kwargs): return dict( - nodes=[ - ('transpose', dict(op='Transpose')), - ('shape', dict(op='ShapeOf')), - ('shape_1', dict(op='ShapeOf')), - ('strided_slice', dict(op='StridedSlice')), - ('stack', dict(op='Const', value=lambda v: v is not None and np.array_equal(v, [1]))), - ('stack1', dict(op='Const', value=lambda v: v is not None and np.array_equal(v, [2]))), - ('stack2', dict(op='Const', value=lambda v: v is not None and np.array_equal(v, [1]))), - ('strided_slice_1', dict(op='StridedSlice')), - ('stack_1', dict(op='Const', value=lambda v: v is not None and np.array_equal(v, [0]))), - ('stack1_1', dict(op='Const', value=lambda v: v is not None and np.array_equal(v, [1]))), - ('stack2_1', dict(op='Const', value=lambda v: v is not None and np.array_equal(v, [1]))), - ('dims', dict(op='Pack')), - ('fill', dict(op='Fill')), - ('decoder', dict(op='CTCGreedyDecoder')), - ('cast', dict(op='Cast')), - ('sparse_to_dense', dict(op='SparseToDense')), - ], - edges=[ - ('transpose', 'shape', {'out': 0}), - ('transpose', 'shape_1', {'out': 0}), - ('transpose', 'decoder', {'out': 0, 'in': 0}), - ('shape', 'strided_slice', {'out': 0, 'in': 0}), - ('stack', 'strided_slice', {'out': 0, 'in': 1}), - ('stack1', 'strided_slice', {'out': 0, 'in': 2}), - ('stack2', 'strided_slice', {'out': 0, 'in': 3}), - ('shape_1', 'strided_slice_1', {'out': 0, 'in': 0}), - ('stack_1', 'strided_slice_1', {'out': 0, 'in': 1}), - ('stack1_1', 'strided_slice_1', {'out': 0, 'in': 2}), - ('stack2_1', 'strided_slice_1', {'out': 0, 'in': 3}), - ('strided_slice', 'dims', {'out': 0, 'in': 0}), - ('dims', 'fill', {'out': 0, 'in': 0}), - ('strided_slice_1', 'fill', {'out': 0, 'in': 1}), - ('fill', 'decoder', {'out': 0, 'in': 1}), - ('decoder', 'sparse_to_dense', {'out': 0, 'in': 0}), - ('decoder', 'cast', {'out': 1, 'in': 0}), - ('cast', 'sparse_to_dense', {'out': 0}), - ] + nodes=[('decoder', dict(op='CTCGreedyDecoderSeqLen')), + ('cast', dict(op='Cast')), + ('sparse_to_dense', dict(op='SparseToDense')) + ], + edges=[('decoder', 'sparse_to_dense', {'out': 0}), + ('decoder', 'cast', {'out': 1}), + ('decoder', 'sparse_to_dense', {'out': 2}), + ('cast', 'sparse_to_dense', {'out': 0})] ) def replace_sub_graph(self, graph: Graph, match: dict): - # obtain references to necessary nodes and their names - fill = match['fill'] - dims = match['dims'] - strided_slice = match['strided_slice'] - strided_slice_1 = match['strided_slice_1'] - ctc_greedy_decoder = match['decoder'] - cast = match['cast'] - sparse_to_dense = match['sparse_to_dense'] - strided_slice_name = strided_slice.soft_get('name', strided_slice.id) - strided_slice_1_name = strided_slice_1.soft_get('name', strided_slice_1.id) - ctc_greedy_decoder_name = ctc_greedy_decoder.soft_get('name', ctc_greedy_decoder.id) - sparse_to_dense_name = sparse_to_dense.soft_get('name', sparse_to_dense.id) - - # unsqueeze scalar values with batch size and time dimension - unsqueeze_batch_size = create_op_with_const_inputs(graph, Unsqueeze, {1: int64_array(0)}, - {'name': strided_slice_name + '/Unsqueeze'}) - dims.in_port(0).get_connection().set_destination(unsqueeze_batch_size.in_port(0)) - unsqueeze_time_size = create_op_with_const_inputs(graph, Unsqueeze, {1: int64_array(0)}, - {'name': strided_slice_1_name + '/Unsqueeze'}) - fill.in_port(1).get_connection().set_destination(unsqueeze_time_size.in_port(0)) - - # compute a sequence mask shape [T, N] required for CTCGreedyDecoder - seq_mask_shape = Concat(graph, {'axis': 0, 'in_ports_count': 2, - 'name': ctc_greedy_decoder_name + '/SequenceMaskShape'}).create_node() - seq_mask_shape.in_port(0).connect(unsqueeze_time_size.out_port(0)) - seq_mask_shape.in_port(1).connect(unsqueeze_batch_size.out_port(0)) - - # compute a sequence mask - sequence_mask = create_op_with_const_inputs(graph, Broadcast, {0: np.array([1.0], dtype=np.float)}, - {'mode': 'numpy', - 'name': ctc_greedy_decoder_name + '/SequenceMask'}) - sequence_mask.in_port(1).connect(seq_mask_shape.out_port(0)) - - # create CTCGreedyDecoder with the sequence mask instead of sequence length - ctc_greedy_decoder.in_port(1).disconnect() - ctc_greedy_decoder.in_port(1).connect(sequence_mask.out_port(0)) - - # remove fill and pack nodes since they are now in unconnected component - graph.remove_nodes_from([fill.id, dims.id]) - - # transform opset CTCGreedyDecoder output to TensorFlow's one that has a shape [N, T] - # opset CTCGreedyDecoder has an output with a shape [N, T, 1, 1] - squeeze_dec_seq = create_op_with_const_inputs(graph, Squeeze, {1: int64_array([2, 3])}, - {'name': sparse_to_dense_name}) - squeeze_dec_seq.in_port(0).connect(ctc_greedy_decoder.out_port(0)) - cast_to_int = Cast(graph, {'name': sparse_to_dense_name + '/CastToInt', - 'dst_type': np.int32}).create_node() - cast_to_int.in_port(0).connect(squeeze_dec_seq.out_port(0)) - - # preserve output name from original graph - rename_nodes([(sparse_to_dense, sparse_to_dense_name + '/AbandonedName'), - (cast_to_int, sparse_to_dense_name)]) - - # set output of the new sub-graph as a source for SparseToDense consumer - sparse_to_dense.out_port(0).get_connection().set_source(cast_to_int.out_port(0)) - - # cleanup a graph - graph.remove_nodes_from([cast.id, sparse_to_dense.id]) + replace_ctc_greedy_decoder(graph, match) diff --git a/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement_test.py b/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement_test.py index 8fe482d939131c..1b5c6895974c56 100644 --- a/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement_test.py +++ b/model-optimizer/extensions/front/tf/CTCGreedyDecoderReplacement_test.py @@ -1,23 +1,11 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +import unittest import numpy as np -import unittest -from extensions.front.tf.CTCGreedyDecoderReplacement import CTCGreedyDecoderReplacement, CTCGreedyDecoderReplacement2 +from extensions.front.tf.CTCGreedyDecoderReplacement import CTCGreedyDecoderReplacement, CTCGreedyDecoderWithSparseToDenseShapeReplacement from mo.front.common.partial_infer.utils import int64_array from mo.utils.ir_engine.compare_graphs import compare_graphs from mo.utils.unittest.graph import build_graph, const @@ -29,13 +17,15 @@ def test1(self): # nodes from original graph 'logits': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, 'seq_len': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, - 'decoder': {'kind': 'op', 'op': 'CTCGreedyDecoder'}, + 'order_arr': {'kind': 'op', 'op': 'Const'}, + 'transpose': {'type': 'Transpose', 'kind': 'op', 'op': 'Transpose'}, + 'decoder': {'kind': 'op', 'op': 'CTCGreedyDecoderSeqLen', 'merge_repeated': True}, 'cast': {'kind': 'op', 'op': 'Cast'}, 'sparse_to_dense': {'kind': 'op', 'op': 'SparseToDense'}, 'last': {'type': None, 'value': None, 'kind': 'op', 'op': 'Result'}, # new nodes - 'new_decoder': {'kind': 'op', 'op': 'CTCGreedyDecoder', 'use_mask_format': True}, + 'new_decoder': {'kind': 'op', 'op': 'CTCGreedyDecoderSeqLen', 'use_mask_format': True}, **const('squeeze_axes', int64_array([2, 3])), 'squeeze_dec_seq': {'kind': 'op', 'op': 'Squeeze'}, 'cast_to_int': {'kind': 'op', 'op': 'Cast'}, @@ -45,121 +35,64 @@ def test1(self): [('logits', 'decoder', {'out': 0, 'in': 0}), ('seq_len', 'decoder', {'out': 0, 'in': 1}), ('decoder', 'sparse_to_dense', {'out': 0, 'in': 0}), + ('decoder', 'sparse_to_dense', {'out': 2, 'in': 1}), ('decoder', 'cast', {'out': 1, 'in': 0}), ('cast', 'sparse_to_dense', {'out': 0}), ('sparse_to_dense', 'last', {'out': 0, 'in': 0}), ], nodes_with_edges_only=True) graph.stage = 'front' - CTCGreedyDecoderReplacement().find_and_replace_pattern(graph) + CTCGreedyDecoderWithSparseToDenseShapeReplacement().find_and_replace_pattern(graph) graph_ref = build_graph(nodes_attributes, - [('logits', 'decoder', {'out': 0, 'in': 0}), + [('logits', 'transpose', {'out': 0, 'in': 0}), + ('order_arr', 'transpose', {'out': 0, 'in': 1}), + ('transpose', 'decoder', {'out': 0, 'in': 0}), ('seq_len', 'decoder', {'out': 0, 'in': 1}), - ('decoder', 'squeeze_dec_seq', {'out': 0, 'in': 0}), - ('squeeze_axes', 'squeeze_dec_seq', {'out': 0, 'in': 1}), - ('squeeze_dec_seq', 'cast_to_int', {'out': 0, 'in': 0}), - ('cast_to_int', 'last', {'out': 0, 'in': 0}), + ('decoder', 'last', {'out': 0, 'in': 0}), ], nodes_with_edges_only=True) (flag, resp) = compare_graphs(graph, graph_ref, 'last', check_op_attrs=True) - self.assertEqual(len(graph.get_op_nodes(op='Cast')) == 1 and - graph.get_op_nodes(op='Cast')[0]['name'] == 'sparse_to_dense', True, - 'Name is not inherited from original node for CTCGreedyDecoderReplacement') self.assertTrue(flag, resp) def test2(self): nodes_attributes = { # nodes from original graph 'logits': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, - 'transpose': {'kind': 'op', 'op': 'Transpose'}, - 'shape': {'kind': 'op', 'op': 'ShapeOf'}, - 'shape_1': {'kind': 'op', 'op': 'ShapeOf'}, - 'strided_slice': {'kind': 'op', 'op': 'StridedSlice'}, - **const('stack', int64_array([1])), - **const('stack1', int64_array([2])), - **const('stack2', int64_array([1])), - 'strided_slice_1': {'kind': 'op', 'op': 'StridedSlice'}, - **const('stack_1', int64_array([0])), - **const('stack1_1', int64_array([1])), - **const('stack2_1', int64_array([1])), - 'dims': {'kind': 'op', 'op': 'Pack'}, - 'fill': {'kind': 'op', 'op': 'Fill'}, - 'decoder': {'kind': 'op', 'op': 'CTCGreedyDecoder'}, + 'seq_len': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, + 'order_arr': {'kind': 'op', 'op': 'Const'}, + 'transpose': {'type': 'Transpose', 'kind': 'op', 'op': 'Transpose'}, + 'decoder': {'kind': 'op', 'op': 'CTCGreedyDecoderSeqLen', 'merge_repeated': True}, 'cast': {'kind': 'op', 'op': 'Cast'}, 'sparse_to_dense': {'kind': 'op', 'op': 'SparseToDense'}, + 'last': {'type': None, 'value': None, 'kind': 'op', 'op': 'Result'}, # new nodes - **const('unsqueeze_batch_size_axis', int64_array(0)), - 'unsqueeze_batch_size': {'kind': 'op', 'op': 'Unsqueeze'}, - **const('unsqueeze_time_size_axis', int64_array(0)), - 'unsqueeze_time_size': {'kind': 'op', 'op': 'Unsqueeze'}, - 'seq_mask_shape': {'kind': 'op', 'op': 'Concat'}, - 'sequence_mask': {'kind': 'op', 'op': 'Broadcast'}, - **const('one', np.array([1.0], dtype=np.float)), + 'new_decoder': {'kind': 'op', 'op': 'CTCGreedyDecoderSeqLen', 'use_mask_format': True}, **const('squeeze_axes', int64_array([2, 3])), 'squeeze_dec_seq': {'kind': 'op', 'op': 'Squeeze'}, 'cast_to_int': {'kind': 'op', 'op': 'Cast'}, - - 'last': {'type': None, 'value': None, 'kind': 'op', 'op': 'Result'}, } graph = build_graph(nodes_attributes, - [('logits', 'transpose', {'out': 0}), - ('transpose', 'shape', {'out': 0}), - ('transpose', 'shape_1', {'out': 0}), - ('transpose', 'decoder', {'out': 0, 'in': 0}), - ('shape', 'strided_slice', {'out': 0, 'in': 0}), - ('stack', 'strided_slice', {'out': 0, 'in': 1}), - ('stack1', 'strided_slice', {'out': 0, 'in': 2}), - ('stack2', 'strided_slice', {'out': 0, 'in': 3}), - ('shape_1', 'strided_slice_1', {'out': 0, 'in': 0}), - ('stack_1', 'strided_slice_1', {'out': 0, 'in': 1}), - ('stack1_1', 'strided_slice_1', {'out': 0, 'in': 2}), - ('stack2_1', 'strided_slice_1', {'out': 0, 'in': 3}), - ('strided_slice', 'dims', {'out': 0, 'in': 0}), - ('dims', 'fill', {'out': 0, 'in': 0}), - ('strided_slice_1', 'fill', {'out': 0, 'in': 1}), - ('fill', 'decoder', {'out': 0, 'in': 1}), + [('logits', 'decoder', {'out': 0, 'in': 0}), + ('seq_len', 'decoder', {'out': 0, 'in': 1}), ('decoder', 'sparse_to_dense', {'out': 0, 'in': 0}), ('decoder', 'cast', {'out': 1, 'in': 0}), ('cast', 'sparse_to_dense', {'out': 0}), ('sparse_to_dense', 'last', {'out': 0, 'in': 0}), ], nodes_with_edges_only=True) graph.stage = 'front' - CTCGreedyDecoderReplacement2().find_and_replace_pattern(graph) + CTCGreedyDecoderReplacement().find_and_replace_pattern(graph) graph_ref = build_graph(nodes_attributes, - [('logits', 'transpose', {'out': 0}), - ('transpose', 'shape', {'out': 0}), - ('transpose', 'shape_1', {'out': 0}), + [('logits', 'transpose', {'out': 0, 'in': 0}), + ('order_arr', 'transpose', {'out': 0, 'in': 1}), ('transpose', 'decoder', {'out': 0, 'in': 0}), - ('shape', 'strided_slice', {'out': 0, 'in': 0}), - ('stack', 'strided_slice', {'out': 0, 'in': 1}), - ('stack1', 'strided_slice', {'out': 0, 'in': 2}), - ('stack2', 'strided_slice', {'out': 0, 'in': 3}), - ('shape_1', 'strided_slice_1', {'out': 0, 'in': 0}), - ('stack_1', 'strided_slice_1', {'out': 0, 'in': 1}), - ('stack1_1', 'strided_slice_1', {'out': 0, 'in': 2}), - ('stack2_1', 'strided_slice_1', {'out': 0, 'in': 3}), - ('strided_slice', 'unsqueeze_batch_size', {'out': 0, 'in': 0}), - ('unsqueeze_batch_size_axis', 'unsqueeze_batch_size', {'out': 0, 'in': 1}), - ('strided_slice_1', 'unsqueeze_time_size', {'out': 0, 'in': 0}), - ('unsqueeze_time_size_axis', 'unsqueeze_time_size', {'out': 0, 'in': 1}), - ('unsqueeze_batch_size', 'seq_mask_shape', {'out': 0, 'in': 1}), - ('unsqueeze_time_size', 'seq_mask_shape', {'out': 0, 'in': 0}), - ('one', 'sequence_mask', {'out': 0, 'in': 0}), - ('seq_mask_shape', 'sequence_mask', {'out': 0, 'in': 1}), - ('sequence_mask', 'decoder', {'out': 0, 'in': 1}), - ('decoder', 'squeeze_dec_seq', {'out': 0, 'in': 0}), - ('squeeze_axes', 'squeeze_dec_seq', {'out': 0, 'in': 1}), - ('squeeze_dec_seq', 'cast_to_int', {'out': 0, 'in': 0}), - ('cast_to_int', 'last', {'out': 0, 'in': 0}), + ('seq_len', 'decoder', {'out': 0, 'in': 1}), + ('decoder', 'last', {'out': 0, 'in': 0}), ], nodes_with_edges_only=True) (flag, resp) = compare_graphs(graph, graph_ref, 'last', check_op_attrs=True) - self.assertEqual(len(graph.get_op_nodes(op='Cast')) == 1 and - graph.get_op_nodes(op='Cast')[0]['name'] == 'sparse_to_dense', True, - 'Name is not inherited from original node for CTCGreedyDecoderReplacement2') self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/front/tf/CTCGreedyDecoder_ext.py b/model-optimizer/extensions/front/tf/CTCGreedyDecoder_ext.py index ea7c619a8fe3b0..5efbaed7aa3324 100644 --- a/model-optimizer/extensions/front/tf/CTCGreedyDecoder_ext.py +++ b/model-optimizer/extensions/front/tf/CTCGreedyDecoder_ext.py @@ -1,19 +1,7 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" -from extensions.ops.ctc_greedy_decoder import CTCGreedyDecoderOp +from extensions.ops.ctc_greedy_decoder_seq_len import CTCGreedyDecoderSeqLenOp from mo.front.extractor import FrontExtractorOp @@ -24,7 +12,7 @@ class CTCCGreedyDecoderFrontExtractor(FrontExtractorOp): @classmethod def extract(cls, node): attrs = { - 'ctc_merge_repeated': int(node.pb.attr['merge_repeated'].b), + 'merge_repeated': bool(node.pb.attr['merge_repeated'].b), } - CTCGreedyDecoderOp.update_node_stat(node, attrs) + CTCGreedyDecoderSeqLenOp.update_node_stat(node, attrs) return cls.enabled diff --git a/model-optimizer/extensions/front/tf/CTCLossReplacement.py b/model-optimizer/extensions/front/tf/CTCLossReplacement.py index 18670e302470b6..c47296db98e39e 100644 --- a/model-optimizer/extensions/front/tf/CTCLossReplacement.py +++ b/model-optimizer/extensions/front/tf/CTCLossReplacement.py @@ -1,50 +1,21 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -import numpy as np -import logging as log - -from extensions.ops.Cast import Cast -from extensions.ops.ctc_greedy_decoder import CTCGreedyDecoderOp +from extensions.ops.ctc_greedy_decoder_seq_len import CTCGreedyDecoderSeqLenOp from extensions.ops.ctc_loss import CTCLoss -from extensions.ops.elementwise import Equal -from extensions.ops.parameter import Parameter -from extensions.ops.ReduceOps import ReduceSum -from extensions.ops.select import Select from extensions.ops.transpose import Transpose from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementSubgraph from mo.front.tf.graph_utils import create_op_with_const_inputs from mo.graph.graph import Graph, rename_nodes -from mo.middle.passes.convert_data_type import data_type_str_to_np -from mo.ops.broadcast import Broadcast -from mo.ops.shape import Shape -from mo.ops.squeeze import Squeeze -from mo.utils.error import Error class CTCLossReplacement(FrontReplacementSubgraph): """ The CTCLoss appears along with CTCGreedyDecoder operation in particular. Since the TensorFlow* CTCGreedyDecoder - outputs sparse tensor format, the OpenVINO CTCGreedyDecoder has a different format and the CTCLoss is also affected + outputs sparse tensor format, the OpenVINO CTCGreedyDecoderSeqLen has a different format and the CTCLoss is also affected in terms of different format for its inputs. So the corresponding sub-graph with CTCGreedyDecoding and CTCLoss must be transformed properly. - Also, the transformation changes the input sequence length format into a mask format. For example, 1D tensor of - sequence lengths equal to [4 2] is coded as 2D tensor [[1 1 1 1 0], [1 1 0 0 0]] with a time dimension is - equal to 5. """ enabled = True @@ -55,17 +26,14 @@ def run_before(self): def pattern(self): return dict( nodes=[ - ('seq_len', dict(op='Parameter')), ('transpose', dict(op='Transpose')), - ('ctc_greedy_decoder', dict(op='CTCGreedyDecoder')), + ('ctc_greedy_decoder', dict(op='CTCGreedyDecoderSeqLen')), ('cast', dict(op='Cast')), ('sparse_to_dense', dict(op='SparseToDense')), ('const', dict(op='Const')), ('ctc_loss', dict(op='CTCLoss')), ], edges=[ - ('seq_len', 'ctc_greedy_decoder', {'out': 0, 'in': 1}), - ('seq_len', 'ctc_loss', {'out': 0, 'in': 3}), ('transpose', 'ctc_greedy_decoder', {'out': 0, 'in': 0}), ('transpose', 'ctc_loss', {'out': 0, 'in': 0}), ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 0, 'in': 0}), @@ -78,53 +46,29 @@ def pattern(self): ]) def replace_sub_graph(self, graph: Graph, match: dict): - seq_len_tf = match['seq_len'] transpose_tf = match['transpose'] ctc_greedy_decoder_tf = match['ctc_greedy_decoder'] cast_tf = match['cast'] ctc_loss_tf = match['ctc_loss'] sparse_to_dense_tf = match['sparse_to_dense'] - output_sparse_to_dense_name = sparse_to_dense_tf.soft_get('name', sparse_to_dense_tf.id) - output_ctc_loss_name = ctc_loss_tf.soft_get('name', ctc_loss_tf.id) - ctc_greedy_decoder_tf_name = ctc_greedy_decoder_tf.soft_get('name', ctc_greedy_decoder_tf.id) - - log.debug('Found CTCLossFrontReplacer pattern after {} with name {}'.format(ctc_greedy_decoder_tf.op, - ctc_greedy_decoder_tf.name)) - - # create sequence mask node, sub-graph for transforming into sequence length and connect with consumers - seq_len_tf_shape = seq_len_tf.soft_get('shape', None) - if seq_len_tf_shape is None or len(seq_len_tf_shape) != 2: - raise Error('The sequence length that is the second input to the CTCGreedyDecoder node "{}"' - ' must be specified in a mask format.'.format(ctc_greedy_decoder_tf_name)) - log.error('The format of input sequence length has been changed to a mask format', extra={'is_warning': True}) - seq_len_tf_type = seq_len_tf.soft_get('data_type', None) - seq_len_tf_name = seq_len_tf.soft_get('name', seq_len_tf.id) - seq_mask_placeholder = Parameter(graph, {'name': seq_len_tf_name, 'shape': seq_len_tf_shape, - 'data_type': seq_len_tf_type}).create_node() - reduce_to_seq_len_node = create_op_with_const_inputs(graph, ReduceSum, {1: np.array(1, dtype=np.int32)}, - {'name': seq_len_tf_name + '/ReduceToSeqLen', - 'keep_dims': False}) - reduce_to_seq_len_node.in_port(0).connect(seq_mask_placeholder.out_port(0)) - seq_len_tf.out_port(0).get_connection().set_source(reduce_to_seq_len_node.out_port(0)) + ctc_data_permute = create_op_with_const_inputs(graph, Transpose, {1: int64_array([1, 0, 2])}, + {'name': ctc_greedy_decoder_tf.name + '/ctc_data_permute'}) + ctc_data_permute.in_port(0).connect(transpose_tf.out_port(0)) - cast_fp_type = data_type_str_to_np(graph.graph['cmd_params'].data_type) - casted_seq_mask_node = Cast(graph, {'name': seq_len_tf_name + '/CastToFP32', 'dst_type': cast_fp_type}).create_node() - casted_seq_mask_node.in_port(0).connect(seq_mask_placeholder.out_port(0)) - permuted_casted_seq_mask = create_op_with_const_inputs(graph, Transpose, {1: int64_array([1, 0])}, - {'name': seq_len_tf_name + '/Permute'}) - permuted_casted_seq_mask.in_port(0).connect(casted_seq_mask_node.out_port(0)) - rename_nodes([(seq_len_tf, seq_len_tf_name + '/AbandonedName'), (seq_mask_placeholder, seq_len_tf_name)]) - - # create CTCGreedyDecoder node and set mask node - ctc_merge_repeated_i = ctc_greedy_decoder_tf.soft_get('ctc_merge_repeated', ctc_greedy_decoder_tf.id) - ctc_greedy_decoder = CTCGreedyDecoderOp(graph, {'name': output_sparse_to_dense_name, - 'ctc_merge_repeated': ctc_merge_repeated_i}).create_node() - ctc_greedy_decoder.in_port(1).connect(permuted_casted_seq_mask.out_port(0)) + ctc_greedy_decoder_tf_name = ctc_greedy_decoder_tf.soft_get('name', ctc_greedy_decoder_tf.id) + assert ctc_greedy_decoder_tf.has_valid('merge_repeated'), \ + 'The CTCGreedyDecoderSeqLen node "{}" misses "merge_repeated" attribute'.format(ctc_greedy_decoder_tf_name) + merge_repeated_tf = ctc_greedy_decoder_tf.merge_repeated + ctc_greedy_decoder = CTCGreedyDecoderSeqLenOp(graph, {'name': output_sparse_to_dense_name, + 'merge_repeated': merge_repeated_tf}).create_node() rename_nodes([(sparse_to_dense_tf, output_sparse_to_dense_name + '/AbandonedName'), (ctc_greedy_decoder, output_sparse_to_dense_name)]) + ctc_greedy_decoder.in_port(0).connect(ctc_data_permute.out_port(0)) + ctc_greedy_decoder.in_port(1).connect(ctc_greedy_decoder_tf.in_port(1).get_connection().get_source()) - # create CTCLoss node and set attributes + # set output of the new sub-graph as a source for SparseToDense consumer + output_ctc_loss_name = ctc_loss_tf.soft_get('name', ctc_loss_tf.id) assert ctc_loss_tf.has_valid('preprocess_collapse_repeated'), \ 'The CTCLoss node "{}" misses "preprocess_collapse_repeated" attribute'.format(output_ctc_loss_name) assert ctc_loss_tf.has_valid('ctc_merge_repeated'), \ @@ -139,48 +83,14 @@ def replace_sub_graph(self, graph: Graph, match: dict): 'ctc_merge_repeated': ctc_merge_repeated, 'unique': unique}).create_node() rename_nodes([(ctc_loss_tf, output_ctc_loss_name + '/AbandonedName'), (ctc_loss, output_ctc_loss_name)]) - - # connect logits - ctc_greedy_decoder_tf.in_port(0).get_connection().set_destination(ctc_greedy_decoder.in_port(0)) - ctc_loss.in_port(0).disconnect() - transpose_tf.in_port(0).get_connection().add_destination(ctc_loss.in_port(0)) - - # connect logit lengths - ctc_greedy_decoder_tf.in_port(1).disconnect() - ctc_loss.in_port(1).connect(reduce_to_seq_len_node.out_port(0)) - - # connect labels to ctc_loss - squeeze_op = create_op_with_const_inputs(graph, Squeeze, {1: int64_array([2, 3])}) - cast_labels_op = Cast(graph, {'name': output_sparse_to_dense_name + '/CastLabels', 'dst_type': np.int32}).create_node() - squeeze_op.in_port(0).connect(ctc_greedy_decoder.out_port(0)) - cast_labels_op.in_port(0).connect(squeeze_op.out_port(0)) - ctc_loss.in_port(2).connect(cast_labels_op.out_port(0)) - - # connect label lengths - equal_op = create_op_with_const_inputs(graph, Equal, {1: np.array([-1], dtype=np.int32)}, - {'name': output_sparse_to_dense_name + '/Equal'}) - equal_op.in_port(0).connect(cast_labels_op.out_port(0)) - labels_shape_op = Shape(graph, {'name': output_sparse_to_dense_name + '/ShapeOf'}).create_node() - labels_shape_op.in_port(0).connect(equal_op.out_port(0)) - broadcast_one = create_op_with_const_inputs(graph, Broadcast, {0: np.array([1], dtype=np.int32)}, - {'mode': 'numpy', - 'name': output_sparse_to_dense_name + '/One'}) - broadcast_one.in_port(1).connect(labels_shape_op.out_port(0)) - broadcast_zero = create_op_with_const_inputs(graph, Broadcast, {0: np.array([0], dtype=np.int32)}, - {'mode': 'numpy', - 'name': output_sparse_to_dense_name + '/Zero'}) - broadcast_zero.in_port(1).connect(labels_shape_op.out_port(0)) - - select_node = Select(graph, {'name': output_sparse_to_dense_name + '/Select'}).create_node() - select_node.in_port(0).connect(equal_op.out_port(0)) - select_node.in_port(1).connect(broadcast_zero.out_port(0)) - select_node.in_port(2).connect(broadcast_one.out_port(0)) - label_length_node = create_op_with_const_inputs(graph, ReduceSum, {1: int64_array([1])}, - op_attrs={'name': output_sparse_to_dense_name + '/LabelLength', - 'keep_dims': False}) - label_length_node.in_port(0).connect(select_node.out_port(0)) - ctc_loss.in_port(3).connect(label_length_node.out_port(0)) - - # set source for output of new sub-graph and remove old nodes ctc_loss_tf.out_port(0).get_connection().set_source(ctc_loss.out_port(0)) - graph.remove_nodes_from([ctc_greedy_decoder_tf.id, ctc_loss_tf.id, cast_tf.id, sparse_to_dense_tf.id]) + if ctc_loss_tf.logits_time_major: + ctc_loss.in_port(0).connect(ctc_data_permute.out_port(0)) + else: + ctc_loss.in_port(0).connect(transpose_tf.out_port(0)) + ctc_loss.in_port(1).connect(ctc_greedy_decoder_tf.in_port(1).get_connection().get_source()) + ctc_loss.in_port(2).connect(ctc_greedy_decoder.out_port(0)) + ctc_loss.in_port(3).connect(ctc_greedy_decoder.out_port(1)) + + # remove no longer needed nodes + graph.remove_nodes_from([sparse_to_dense_tf.id, cast_tf.id, ctc_loss_tf.id, ctc_greedy_decoder_tf.id]) diff --git a/model-optimizer/extensions/front/tf/CTCLossReplacement_test.py b/model-optimizer/extensions/front/tf/CTCLossReplacement_test.py index 1b566356b284a6..25aabc9b927353 100644 --- a/model-optimizer/extensions/front/tf/CTCLossReplacement_test.py +++ b/model-optimizer/extensions/front/tf/CTCLossReplacement_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np import unittest @@ -28,107 +15,101 @@ class CTCLossFrontReplacementTest(unittest.TestCase): def test1(self): nodes_attributes = { 'logits': {'shape': int64_array([2, 6, 100]), 'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, - 'seq_mask': {'shape': int64_array([2, 100]), 'data_type': np.int32, 'kind': 'op', 'op': 'Parameter'}, - - 'reduce_seq_mask': {'kind': 'op', 'op': 'ReduceSum'}, - 's_cast_seq_mask': {'kind': 'op', 'op': 'Cast'}, - 'transpose_cast_seq_mask': {'kind': 'op', 'op': 'Transpose'}, - + 'seq_mask': {'shape': int64_array([2]), 'data_type': np.int32, 'kind': 'op', 'op': 'Parameter'}, 'transpose': {'kind': 'op', 'op': 'Transpose'}, - 'ctc_greedy_decoder': {'kind': 'op', 'op': 'CTCGreedyDecoder'}, + 'ctc_greedy_decoder': {'kind': 'op', 'op': 'CTCGreedyDecoderSeqLen', 'merge_repeated': True}, 'cast': {'kind': 'op', 'op': 'Cast'}, 'sparse_to_dense': {'kind': 'op', 'op': 'SparseToDense'}, - 'const': {'kind': 'op', 'op': 'Const'}, + 'tf_ctc_loss': {'kind': 'op', 'op': 'CTCLoss', 'preprocess_collapse_repeated': False, + 'ctc_merge_repeated': True, 'unique': False, 'logits_time_major': True}, 'ctc_loss': {'kind': 'op', 'op': 'CTCLoss', 'preprocess_collapse_repeated': False, - 'ctc_merge_repeated': True, 'unique': False}, - - 'equal_op': {'kind': 'op', 'op': 'Equal'}, - - 'ctc_greedy_decoder_op': {'kind': 'op', 'op': 'CTCGreedyDecoder'}, - 'ctc_loss_op': {'kind': 'op', 'op': 'CTCLoss'}, - 'squeeze_op': {'kind': 'op', 'op': 'Squeeze'}, - - 'cast_labels_op': {'kind': 'op', 'op': 'Cast', 'type': 'Convert'}, - 'labels_shape_op': {'kind': 'op', 'op': 'ShapeOf'}, - 'broadcast_one_op': {'kind': 'op', 'op': 'Broadcast'}, - 'broadcast_zero_op': {'kind': 'op', 'op': 'Broadcast'}, - 'select_op': {'kind': 'op', 'op': 'Select'}, - 'label_length_op': {'kind': 'op', 'op': 'ReduceSum'}, - - **const('reduce_indices', int64_array(1)), - **const('permute_order', int64_array([1, 0])), + 'ctc_merge_repeated': True, 'unique': False}, **const('default_value', int64_array(-1)), - **const('squeeze_axis', int64_array([2, 3])), - **const('minus_one', np.array([-1], dtype=np.int32)), - **const('one', np.array([1], dtype=np.int32)), - **const('zero', np.array([0], dtype=np.int32)), - **const('reduce_sum_axis', int64_array([1])), - 'last': {'type': None, 'value': None, 'kind': 'op', 'op': 'Result'}, + 'transpose2': {'kind': 'op', 'op': 'Transpose'}, + **const('transpose2_axis', int64_array([1, 0, 2])), } - - graph = build_graph(nodes_attributes, - [('logits', 'transpose', {'out': 0, 'in': 0}), - ('transpose', 'ctc_greedy_decoder', {'out': 0, 'in': 0}), - ('seq_mask', 'ctc_greedy_decoder', {'out': 0, 'in': 1}), - - ('transpose', 'ctc_loss', {'out': 0, 'in': 0}), - ('seq_mask', 'ctc_loss', {'out': 0, 'in': 3}), - - ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 0, 'in': 0}), - ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 2, 'in': 1}), - ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 1, 'in': 2}), - ('default_value', 'sparse_to_dense', {'out': 0, 'in': 3}), - ('ctc_greedy_decoder', 'cast', {'out': 1, 'in': 0}), - ('ctc_greedy_decoder', 'ctc_loss', {'out': 0, 'in': 1}), - ('cast', 'ctc_loss', {'out': 0, 'in': 2}), - - ('ctc_loss', 'last', {'out': 0, 'in': 0}), - ], nodes_with_edges_only=True) + graph = build_graph(nodes_attributes, [('logits', 'transpose', {'out': 0, 'in': 0}), + ('transpose', 'ctc_greedy_decoder', {'out': 0, 'in': 0}), + ('seq_mask', 'ctc_greedy_decoder', {'out': 0, 'in': 1}), + ('transpose', 'tf_ctc_loss', {'out': 0, 'in': 0}), + ('seq_mask', 'tf_ctc_loss', {'out': 0, 'in': 3}), + ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 0, 'in': 0}), + ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 2, 'in': 1}), + ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 1, 'in': 2}), + ('default_value', 'sparse_to_dense', {'out': 0, 'in': 3}), + ('ctc_greedy_decoder', 'cast', {'out': 1, 'in': 0}), + ('ctc_greedy_decoder', 'tf_ctc_loss', {'out': 0, 'in': 1}), + ('cast', 'tf_ctc_loss', {'out': 0, 'in': 2}), + ('tf_ctc_loss', 'last', {'out': 0, 'in': 0})], + nodes_with_edges_only=True) graph.graph['cmd_params'] = Namespace(data_type='FP32') graph.stage = 'front' CTCLossReplacement().find_and_replace_pattern(graph) graph_ref = build_graph(nodes_attributes, - [('seq_mask', 'reduce_seq_mask', {'out': 0, 'in': 0}), - ('reduce_indices', 'reduce_seq_mask', {'out': 0, 'in': 1}), - - ('seq_mask', 's_cast_seq_mask', {'out': 0, 'in': 0}), - ('s_cast_seq_mask', 'transpose_cast_seq_mask', {'out': 0, 'in': 0}), - ('permute_order', 'transpose_cast_seq_mask', {'out': 0, 'in': 1}), - - ('logits', 'transpose', {'out': 0, 'in': 0}), - ('transpose', 'ctc_greedy_decoder_op', {'out': 0, 'in': 0}), - ('transpose_cast_seq_mask', 'ctc_greedy_decoder_op', {'out': 0, 'in': 1}), - - ('ctc_greedy_decoder_op', 'squeeze_op', {'out': 0, 'in': 0}), - ('squeeze_axis', 'squeeze_op', {'out': 0, 'in': 1}), - ('squeeze_op', 'cast_labels_op', {'in': 0}), - - ('minus_one', 'equal_op', {'out': 0, 'in': 1}), + [('logits', 'transpose', {'out': 0, 'in': 0}), + ('transpose', 'transpose2', {'out': 0, 'in': 0}), + ('transpose2_axis', 'transpose2', {'out': 0, 'in': 1}), + ('transpose2', 'ctc_greedy_decoder', {'out': 0, 'in': 0}), + ('seq_mask', 'ctc_greedy_decoder', {'out': 0, 'in': 1}), + ('transpose2', 'ctc_loss', {'out': 0, 'in': 0}), + ('ctc_greedy_decoder', 'ctc_loss', {'out': 0, 'in': 2}), + ('ctc_greedy_decoder', 'ctc_loss', {'out': 1, 'in': 3}), + ('seq_mask', 'ctc_loss', {'out': 0, 'in': 1}), + ('ctc_loss', 'last', {'out': 0, 'in': 0})], + nodes_with_edges_only=True) - ('equal_op', 'labels_shape_op', {'out': 0, 'in': 0}), - ('one', 'broadcast_one_op', {'out': 0, 'in': 0}), - ('labels_shape_op', 'broadcast_one_op', {'out': 0, 'in': 1}), - ('zero', 'broadcast_zero_op', {'out': 0, 'in': 0}), - ('labels_shape_op', 'broadcast_zero_op', {'out': 0, 'in': 1}), - - ('equal_op', 'select_op', {'out': 0, 'in': 0}), - ('broadcast_zero_op', 'select_op', {'out': 0, 'in': 1}), - ('broadcast_one_op', 'select_op', {'out': 0, 'in': 2}), - - ('select_op', 'label_length_op', {'out': 0, 'in': 0}), - ('reduce_sum_axis', 'label_length_op', {'out': 0, 'in': 1}), - - ('logits', 'ctc_loss_op', {'out': 0, 'in': 0}), - ('reduce_seq_mask', 'ctc_loss_op', {'out': 0, 'in': 1}), - ('cast_labels_op', 'ctc_loss_op', {'out': 0, 'in': 2}), - ('label_length_op', 'ctc_loss_op', {'out': 0, 'in': 3}), + (flag, resp) = compare_graphs(graph, graph_ref, 'last', check_op_attrs=True) + self.assertTrue(flag, resp) - ('cast_labels_op', 'equal_op', {'out': 0, 'in': 0}), + def test2(self): + nodes_attributes = { + 'logits': {'shape': int64_array([2, 6, 100]), 'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, + 'seq_mask': {'shape': int64_array([2]), 'data_type': np.int32, 'kind': 'op', 'op': 'Parameter'}, + 'transpose': {'kind': 'op', 'op': 'Transpose'}, + 'ctc_greedy_decoder': {'kind': 'op', 'op': 'CTCGreedyDecoderSeqLen', 'merge_repeated': True}, + 'cast': {'kind': 'op', 'op': 'Cast'}, + 'sparse_to_dense': {'kind': 'op', 'op': 'SparseToDense'}, + 'tf_ctc_loss': {'kind': 'op', 'op': 'CTCLoss', 'preprocess_collapse_repeated': False, + 'ctc_merge_repeated': True, 'unique': False, 'logits_time_major': False}, + 'ctc_loss': {'kind': 'op', 'op': 'CTCLoss', 'preprocess_collapse_repeated': False, + 'ctc_merge_repeated': True, 'unique': False}, + **const('default_value', int64_array(-1)), + 'last': {'type': None, 'value': None, 'kind': 'op', 'op': 'Result'}, + 'transpose2': {'kind': 'op', 'op': 'Transpose'}, + **const('transpose2_axis', int64_array([1, 0, 2])), + } + graph = build_graph(nodes_attributes, [('logits', 'transpose', {'out': 0, 'in': 0}), + ('transpose', 'ctc_greedy_decoder', {'out': 0, 'in': 0}), + ('seq_mask', 'ctc_greedy_decoder', {'out': 0, 'in': 1}), + ('transpose', 'tf_ctc_loss', {'out': 0, 'in': 0}), + ('seq_mask', 'tf_ctc_loss', {'out': 0, 'in': 3}), + ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 0, 'in': 0}), + ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 2, 'in': 1}), + ('ctc_greedy_decoder', 'sparse_to_dense', {'out': 1, 'in': 2}), + ('default_value', 'sparse_to_dense', {'out': 0, 'in': 3}), + ('ctc_greedy_decoder', 'cast', {'out': 1, 'in': 0}), + ('ctc_greedy_decoder', 'tf_ctc_loss', {'out': 0, 'in': 1}), + ('cast', 'tf_ctc_loss', {'out': 0, 'in': 2}), + ('tf_ctc_loss', 'last', {'out': 0, 'in': 0})], + nodes_with_edges_only=True) + graph.graph['cmd_params'] = Namespace(data_type='FP32') + graph.stage = 'front' + CTCLossReplacement().find_and_replace_pattern(graph) - ('ctc_loss_op', 'last', {'out': 0, 'in': 0})], - nodes_with_edges_only=True) + graph_ref = build_graph(nodes_attributes, + [('logits', 'transpose', {'out': 0, 'in': 0}), + ('transpose', 'transpose2', {'out': 0, 'in': 0}), + ('transpose2_axis', 'transpose2', {'out': 0, 'in': 1}), + ('transpose2', 'ctc_greedy_decoder', {'out': 0, 'in': 0}), + ('seq_mask', 'ctc_greedy_decoder', {'out': 0, 'in': 1}), + ('transpose', 'ctc_loss', {'out': 0, 'in': 0}), + ('ctc_greedy_decoder', 'ctc_loss', {'out': 0, 'in': 2}), + ('ctc_greedy_decoder', 'ctc_loss', {'out': 1, 'in': 3}), + ('seq_mask', 'ctc_loss', {'out': 0, 'in': 1}), + ('ctc_loss', 'last', {'out': 0, 'in': 0})], + nodes_with_edges_only=True) (flag, resp) = compare_graphs(graph, graph_ref, 'last', check_op_attrs=True) self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/front/tf/CTCLoss_ext.py b/model-optimizer/extensions/front/tf/CTCLoss_ext.py index 97800c58283ce7..cde96ac4f688fa 100644 --- a/model-optimizer/extensions/front/tf/CTCLoss_ext.py +++ b/model-optimizer/extensions/front/tf/CTCLoss_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.ctc_loss import CTCLoss from mo.front.extractor import FrontExtractorOp @@ -23,11 +11,18 @@ class CTCLossFrontExtractor(FrontExtractorOp): @classmethod def extract(cls, node): + # For CTCLoss default value is [N, T] + logits_time_major = True + if 'logits_time_major' in node.pb.attr: + logits_time_major = node.pb.attr['logits_time_major'].b + attrs = { 'ctc_merge_repeated': node.pb.attr['ctc_merge_repeated'].b, 'preprocess_collapse_repeated': node.pb.attr['preprocess_collapse_repeated'].b, + 'logits_time_major': logits_time_major, # unique is always false for CTCLoss V1 'unique': False } + CTCLoss.update_node_stat(node, attrs) return cls.enabled diff --git a/model-optimizer/extensions/front/tf/Cast_ext.py b/model-optimizer/extensions/front/tf/Cast_ext.py index 7c08b433723495..097ae9c550560f 100644 --- a/model-optimizer/extensions/front/tf/Cast_ext.py +++ b/model-optimizer/extensions/front/tf/Cast_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.Cast import Cast from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/CropAndResizeReplacement.py b/model-optimizer/extensions/front/tf/CropAndResizeReplacement.py index 8e639199597703..6eb68e19dfe418 100644 --- a/model-optimizer/extensions/front/tf/CropAndResizeReplacement.py +++ b/model-optimizer/extensions/front/tf/CropAndResizeReplacement.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars.py b/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars.py index 767f18e548029c..2bcabee91dc575 100644 --- a/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars.py +++ b/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from typing import Dict diff --git a/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars_ext.py b/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars_ext.py index a9995a975f76c2..37abcac8857a91 100644 --- a/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars_ext.py +++ b/model-optimizer/extensions/front/tf/FakeQuantWithMinMaxVars_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.op import Op diff --git a/model-optimizer/extensions/front/tf/FlattenToReshape.py b/model-optimizer/extensions/front/tf/FlattenToReshape.py index ff0ee12218650f..8aa0ae31c238b9 100644 --- a/model-optimizer/extensions/front/tf/FlattenToReshape.py +++ b/model-optimizer/extensions/front/tf/FlattenToReshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/GNMT_DynamicSequenceLengths.py b/model-optimizer/extensions/front/tf/GNMT_DynamicSequenceLengths.py index 59df5a67bcf12e..14532b194dda4c 100644 --- a/model-optimizer/extensions/front/tf/GNMT_DynamicSequenceLengths.py +++ b/model-optimizer/extensions/front/tf/GNMT_DynamicSequenceLengths.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/tf/GatherTree_ext.py b/model-optimizer/extensions/front/tf/GatherTree_ext.py index 9c7892813bea8a..27cbc0988205cc 100644 --- a/model-optimizer/extensions/front/tf/GatherTree_ext.py +++ b/model-optimizer/extensions/front/tf/GatherTree_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - """ from extensions.ops.GatherTree import GatherTree from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/InterpolateTransposes.py b/model-optimizer/extensions/front/tf/InterpolateTransposes.py index fdc21e60f9775e..1350f3c72bf29b 100644 --- a/model-optimizer/extensions/front/tf/InterpolateTransposes.py +++ b/model-optimizer/extensions/front/tf/InterpolateTransposes.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.interpolate import Interpolate diff --git a/model-optimizer/extensions/front/tf/IteratorGetNext_ext.py b/model-optimizer/extensions/front/tf/IteratorGetNext_ext.py index a1fda7f0fcba99..d3ceb2b4627e8f 100644 --- a/model-optimizer/extensions/front/tf/IteratorGetNext_ext.py +++ b/model-optimizer/extensions/front/tf/IteratorGetNext_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/KerasRNNTransformation.py b/model-optimizer/extensions/front/tf/KerasRNNTransformation.py index 7ba9fd41783630..70c853181a9624 100644 --- a/model-optimizer/extensions/front/tf/KerasRNNTransformation.py +++ b/model-optimizer/extensions/front/tf/KerasRNNTransformation.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/LookupTableInsert_ext.py b/model-optimizer/extensions/front/tf/LookupTableInsert_ext.py index 609291f8d67dd6..8102bbf3376382 100644 --- a/model-optimizer/extensions/front/tf/LookupTableInsert_ext.py +++ b/model-optimizer/extensions/front/tf/LookupTableInsert_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.LookupTableInsert import LookupTableInsert from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/LoopCond_ext.py b/model-optimizer/extensions/front/tf/LoopCond_ext.py index 9748252ced14ff..a75baa769827f1 100644 --- a/model-optimizer/extensions/front/tf/LoopCond_ext.py +++ b/model-optimizer/extensions/front/tf/LoopCond_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import single_output_infer from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/NonConstBeginStridedSliceReplacement.py b/model-optimizer/extensions/front/tf/NonConstBeginStridedSliceReplacement.py new file mode 100644 index 00000000000000..c0567921482ebc --- /dev/null +++ b/model-optimizer/extensions/front/tf/NonConstBeginStridedSliceReplacement.py @@ -0,0 +1,134 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np + +from extensions.ops.gather import Gather +from mo.front.common.partial_infer.utils import int64_array +from mo.front.common.replacement import FrontReplacementSubgraph +from mo.front.tf.graph_utils import create_op_with_const_inputs +from mo.graph.graph import Graph, rename_nodes +from mo.ops.squeeze import Squeeze +from mo.ops.unsqueeze import Unsqueeze + + +class NonConstBeginStridedSliceReplacement(FrontReplacementSubgraph): + """ + The transformation handles StridedSlice operation with dynamic begin and end values + when slicing performs along just one dimension with a dynamic index. + For example, StridedSlice with begin=(0,idx,0), end=(0,idx+1,0), + and begin_mask=end_mask=shrink_mask=(0, 1, 0) can be replaced with Squeeze(axis=1;Gather(axis=1; Unsqueeze(idx))). + The transformation attempts to match to following sub-graph: + + Input ----> StridedSlice(begin_mask, end_mask, and shrink_mask where only element for axis equal to 1) --> OTHER OPS + /\ /\ /\ + | | | + ---------> Pack(Begin) Pack(End) Const(Step) = (1,..,1) + | /\ /\ /\ + | | | | + | | | Const(All others) + | Const(All others) | + Index ---------------------------> Add + /\ + Const(SliceSize)=1------------------| + + And the original sub-graph is transformed as follows: + + Input --------> Gather(axis) ---> Squeeze(axis) ---> OTHER OPS + /\ + | + Index -----> Unsqueeze(axis=1) + + """ + enabled = True + + def run_before(self): + from extensions.front.Pack import Pack + return [Pack] + + @staticmethod + def pattern(**kwargs): + return dict( + nodes=[('begin', dict(op='Pack')), + ('end', dict(op='Pack')), + ('step', dict(op='Const')), + ('strided_slice', dict(op='StridedSlice')), + ], + edges=[('begin', 'strided_slice', {'in': 1}), + ('end', 'strided_slice', {'in': 2}), + ('step', 'strided_slice', {'in': 3})]) + + def replace_sub_graph(self, graph: Graph, match: dict): + strided_slice_node = match['strided_slice'] + begin_node = match['begin'] + end_node = match['end'] + step_node = match['step'] + + # retrieve attribute values + begin_mask = strided_slice_node.soft_get('begin_mask') + end_mask = strided_slice_node.soft_get('end_mask') + shrink_mask = strided_slice_node.soft_get('shrink_axis_mask', int64_array([0])) + + # check applicability of this transformation to the given sub-graph: + # 1. check that slicing is performed along just one axis + if np.sum(begin_mask) != 1 or np.sum(end_mask) != 1 or np.sum(shrink_mask) != 1: + return + # 2. check that shrink axis is equal to slicing axis + if not np.array_equal(np.argwhere(begin_mask == 1), np.argwhere(end_mask == 1)) or \ + not np.array_equal(np.argwhere(begin_mask == 1), np.argwhere(shrink_mask == 1)): + return + sliced_axis = np.argwhere(begin_mask == 1)[0][0] + # 3. check constant nodes for begin and end correspond to non-slicing axes + for idx_port, in_port in begin_node.in_ports().items(): + if idx_port != sliced_axis and in_port.get_source().node.soft_get('type') != 'Const' or \ + idx_port == sliced_axis and in_port.get_source().node.soft_get('type') == 'Const': + return + for idx_port, in_port in end_node.in_ports().items(): + if idx_port != sliced_axis and in_port.get_source().node.soft_get('type') != 'Const' or \ + idx_port == sliced_axis and in_port.get_source().node.soft_get('type') == 'Const': + return + # 4. check that offset of begin and end values for slicing axis is constant + add_node = end_node.in_port(sliced_axis).get_source().node + slice_start_index_node = begin_node.in_port(sliced_axis).get_source().node + if add_node.soft_get('type') != 'Add': + return + + if add_node.in_port(1).get_source().node.soft_get('type') == 'Const': + slice_size_node = add_node.in_port(1).get_source().node + if add_node.in_port(0).get_source().node.id != slice_start_index_node.id: + return + elif add_node.in_port(0).get_source().node.soft_get('type') == 'Const': + slice_size_node = add_node.in_port(0).get_source().node + if add_node.in_port(1).get_source().node.id != slice_start_index_node.id: + return + else: + return + slice_size = slice_size_node.value + step_value = step_node.value[sliced_axis] + + # 5. check that step_value equal to 1 and step_value equal to 1 + # TODO: support other cases when slice_size not equal to 1 and step_value not equal to 1 + if slice_size != 1 or step_value != 1: + return + + # unsqueeze a scalar by which to slice input tensor + strided_slice_name = strided_slice_node.soft_get('name', strided_slice_node.id) + unsqueeze_node = create_op_with_const_inputs(graph, Unsqueeze, {1: int64_array(0)}, + {'name': strided_slice_name + '/Unsqueeze'}) + add_node.in_port(0).get_connection().add_destination(unsqueeze_node.in_port(0)) + + # replace StridedSlice with Gather operation that supports dynamic indices for slicing + gather_node = create_op_with_const_inputs(graph, Gather, {2: int64_array(sliced_axis)}, + {'name': strided_slice_name + '/Gather'}) + strided_slice_node.in_port(0).get_connection().set_destination(gather_node.in_port(0)) + unsqueeze_node.out_port(0).connect(gather_node.in_port(1)) + + # squeeze Gather output since sliced axis is shrinked + squeeze_node = create_op_with_const_inputs(graph, Squeeze, {1: int64_array(sliced_axis)}, + {'name': strided_slice_name + '/Squeeze'}) + squeeze_node.in_port(0).connect(gather_node.out_port(0)) + rename_nodes( + [(strided_slice_node, strided_slice_name + '/AbandonedName'), (squeeze_node, strided_slice_name)]) + + # preserve a name of original StridedSlice node + strided_slice_node.out_port(0).get_connection().set_source(squeeze_node.out_port(0)) diff --git a/model-optimizer/extensions/front/tf/NonConstBeginStridedSliceReplacement_test.py b/model-optimizer/extensions/front/tf/NonConstBeginStridedSliceReplacement_test.py new file mode 100644 index 00000000000000..6e6709f213b464 --- /dev/null +++ b/model-optimizer/extensions/front/tf/NonConstBeginStridedSliceReplacement_test.py @@ -0,0 +1,127 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +from extensions.front.tf.NonConstBeginStridedSliceReplacement import NonConstBeginStridedSliceReplacement +from mo.front.common.partial_infer.utils import int64_array +from mo.utils.ir_engine.compare_graphs import compare_graphs +from mo.utils.unittest.graph import build_graph, const + + +class NonConstBeginStridedSliceReplacementTests(unittest.TestCase): + def test1(self): + nodes_attributes = { + # nodes from original graph + 'input': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, + 'index': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, + 'add': {'type': 'Add', 'kind': 'op', 'op': 'Add'}, + **const('slice_size', int64_array(1)), + 'begin': {'type': 'Pack', 'kind': 'op', 'op': 'Pack'}, + **const('begin_1', int64_array(0)), + **const('begin_3', int64_array(0)), + 'end': {'type': 'Pack', 'kind': 'op', 'op': 'Pack'}, + **const('end_1', int64_array(0)), + **const('end_3', int64_array(0)), + **const('step', int64_array([1, 1, 1])), + 'strided_slice': {'type': 'StridedSlice', 'kind': 'op', 'op': 'StridedSlice', + 'begin_mask': int64_array([0, 1, 0]), 'end_mask': int64_array([0, 1, 0]), + 'shrink_axis_mask': int64_array([0, 1, 0]), 'name': 'non_const_begin_strided_slice'}, + 'result': {'type': 'Result', 'kind': 'op', 'op': 'Result'}, + + # nodes from the reference graph + 'unsqueeze': {'type': 'Unsqueeze', 'kind': 'op', 'op': 'Unsqueeze'}, + **const('unsqueeze_axis', int64_array(0)), + 'gather': {'type': 'Gather', 'kind': 'op', 'op': 'Gather'}, + **const('gather_axis', int64_array(1)), + 'squeeze': {'type': 'Squeeze', 'kind': 'op', 'op': 'Squeeze'}, + **const('squeeze_axis', int64_array(1)), + } + + graph = build_graph(nodes_attributes, + [('input', 'strided_slice', {'out': 0, 'in': 0}), + ('begin_1', 'begin', {'out': 0, 'in': 0}), + ('index', 'begin', {'out': 0, 'in': 1}), + ('begin_3', 'begin', {'out': 0, 'in': 2}), + ('begin', 'strided_slice', {'out': 0, 'in': 1}), + ('end_1', 'end', {'out': 0, 'in': 0}), + ('index', 'add', {'out': 0, 'in': 0}), + ('slice_size', 'add', {'out': 0, 'in': 1}), + ('add', 'end', {'out': 0, 'in': 1}), + ('end_3', 'end', {'out': 0, 'in': 2}), + ('end', 'strided_slice', {'out': 0, 'in': 2}), + ('step', 'strided_slice', {'out': 0, 'in': 3}), + ('strided_slice', 'result', {'out': 0, 'in': 0}), + ], nodes_with_edges_only=True) + graph.stage = 'front' + NonConstBeginStridedSliceReplacement().find_and_replace_pattern(graph) + + graph_ref = build_graph(nodes_attributes, + [('input', 'gather', {'out': 0, 'in': 0}), + ('gather_axis', 'gather', {'out': 0, 'in': 2}), + ('index', 'unsqueeze', {'out': 0, 'in': 0}), + ('unsqueeze_axis', 'unsqueeze', {'out': 0, 'in': 1}), + ('unsqueeze', 'gather', {'out': 0, 'in': 1}), + ('gather', 'squeeze', {'out': 0, 'in': 0}), + ('squeeze_axis', 'squeeze', {'out': 0, 'in': 1}), + ('squeeze', 'result', {'out': 0, 'in': 0}), + ], + nodes_with_edges_only=True) + + (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) + self.assertTrue(flag, resp) + self.assertTrue(graph.node[graph.get_nodes_with_attributes(op='Squeeze')[0]]['name'] == + 'non_const_begin_strided_slice') + + def test2_not_applied_transform(self): + # the transformation is not applied if begin and end are constant + nodes_attributes = { + # nodes from original graph + 'input': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, + 'begin': {'type': 'Pack', 'kind': 'op', 'op': 'Pack'}, + **const('begin_1', int64_array(0)), + **const('begin_2', int64_array(0)), + **const('begin_3', int64_array(0)), + 'end': {'type': 'Pack', 'kind': 'op', 'op': 'Pack'}, + **const('end_1', int64_array(0)), + **const('end_2', int64_array(3)), + **const('end_3', int64_array(0)), + **const('step', int64_array([1, 1, 1])), + 'strided_slice': {'type': 'StridedSlice', 'kind': 'op', 'op': 'StridedSlice', + 'begin_mask': int64_array([0, 1, 0]), 'end_mask': int64_array([0, 1, 0]), + 'shrink_axis_mask': int64_array([0, 1, 0]), 'name': 'non_const_begin_strided_slice'}, + 'result': {'type': 'Result', 'kind': 'op', 'op': 'Result'}, + } + + graph = build_graph(nodes_attributes, + [('input', 'strided_slice', {'out': 0, 'in': 0}), + ('begin_1', 'begin', {'out': 0, 'in': 0}), + ('begin_2', 'begin', {'out': 0, 'in': 1}), + ('begin_3', 'begin', {'out': 0, 'in': 2}), + ('begin', 'strided_slice', {'out': 0, 'in': 1}), + ('end_1', 'end', {'out': 0, 'in': 0}), + ('end_2', 'end', {'out': 0, 'in': 1}), + ('end_3', 'end', {'out': 0, 'in': 2}), + ('end', 'strided_slice', {'out': 0, 'in': 2}), + ('step', 'strided_slice', {'out': 0, 'in': 3}), + ('strided_slice', 'result', {'out': 0, 'in': 0}), + ], nodes_with_edges_only=True) + graph.stage = 'front' + NonConstBeginStridedSliceReplacement().find_and_replace_pattern(graph) + + graph_ref = build_graph(nodes_attributes, + [('input', 'strided_slice', {'out': 0, 'in': 0}), + ('begin_1', 'begin', {'out': 0, 'in': 0}), + ('begin_2', 'begin', {'out': 0, 'in': 1}), + ('begin_3', 'begin', {'out': 0, 'in': 2}), + ('begin', 'strided_slice', {'out': 0, 'in': 1}), + ('end_1', 'end', {'out': 0, 'in': 0}), + ('end_2', 'end', {'out': 0, 'in': 1}), + ('end_3', 'end', {'out': 0, 'in': 2}), + ('end', 'strided_slice', {'out': 0, 'in': 2}), + ('step', 'strided_slice', {'out': 0, 'in': 3}), + ('strided_slice', 'result', {'out': 0, 'in': 0})], + nodes_with_edges_only=True) + + (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/front/tf/ObjectDetectionAPI.py b/model-optimizer/extensions/front/tf/ObjectDetectionAPI.py index 33940be9df6328..449b9e57983fb5 100644 --- a/model-optimizer/extensions/front/tf/ObjectDetectionAPI.py +++ b/model-optimizer/extensions/front/tf/ObjectDetectionAPI.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from math import sqrt @@ -25,6 +12,7 @@ from extensions.front.standalone_const_eraser import StandaloneConstEraser from extensions.front.tf.CropAndResizeReplacement import CropAndResizeReplacement from extensions.front.tf.FakeQuantWithMinMaxVars import FakeQuantWithMinMaxVarsToQuantize +from extensions.front.tf.KerasRNNTransformation import KerasRNNInputSlicing, KerasRNNOutputConcatenation from extensions.front.tf.TFSliceToSlice import TFSliceToSliceReplacer from extensions.front.tf.pad_tf_to_pad import PadTFToPad from extensions.middle.InsertLayoutPropagationTransposes import mark_as_correct_data_layout, \ @@ -32,7 +20,7 @@ from extensions.ops.DetectionOutput import DetectionOutput from extensions.ops.ReduceOps import ReduceMean from extensions.ops.activation_ops import Sigmoid -from extensions.ops.elementwise import Mul +from extensions.ops.elementwise import Mul, Sub, Add, Div from extensions.ops.gather import Gather from extensions.ops.parameter import Parameter from extensions.ops.priorbox_clustered import PriorBoxClusteredOp @@ -41,10 +29,12 @@ from extensions.ops.transpose import Transpose from mo.front.common.layout import get_batch_dim, get_height_dim, get_width_dim from mo.front.common.partial_infer.utils import int64_array +from mo.front.common.replacement import FrontReplacementPattern from mo.front.extractor import output_user_data_repack, add_output_ops from mo.front.subgraph_matcher import SubgraphMatch from mo.front.tf.graph_utils import add_activation_function_after_node, add_convolution_to_swap_xy_coordinates, \ - mark_squeeze_reshape_concat_before_detection_output, add_fake_background_loc, create_op_node_with_second_input + mark_squeeze_reshape_concat_before_detection_output, add_fake_background_loc, create_op_node_with_second_input, \ + create_op_with_const_inputs from mo.front.tf.replacement import FrontReplacementFromConfigFileSubGraph, FrontReplacementFromConfigFileGeneral from mo.graph.graph import Graph, Node from mo.ops.concat import Concat @@ -57,7 +47,7 @@ from mo.ops.shape import Shape from mo.ops.softmax import Softmax from mo.utils.error import Error -from mo.utils.graph import backward_bfs_for_operation, bfs_search +from mo.utils.graph import backward_bfs_for_operation, bfs_search, clear_tensor_names_info, sub_graph_between_nodes from mo.utils.pipeline_config import PipelineConfig missing_param_error = 'To convert the model specify path to the pipeline configuration file which was used to ' \ @@ -363,7 +353,8 @@ def skip_nodes_by_condition(current_node: Node, condition: callable): return current_node -def calculate_shape_keeping_aspect_ratio(height: int, width: int, min_size: int, max_size: int): +def calculate_shape_keeping_aspect_ratio(height: int, width: int, min_size: int, max_size: int, + pad_to_max_dimension: bool = False): """ The function scales spatial sizes of the image keeping aspect ratio to satisfy provided requirements. The behavior of this function is equivalent to the output shape calculation of the Preprocessor block of TensorFlow @@ -372,8 +363,11 @@ def calculate_shape_keeping_aspect_ratio(height: int, width: int, min_size: int, :param width: input width. :param min_size: size limit. :param max_size: size limit. + :param pad_to_max_dimension: scale the input image size to the maximum value specified :return: the tuple with scaled image height, width. """ + if pad_to_max_dimension: + return max_size, max_size ratio_min = min_size / min(height, width) ratio_max = max_size / max(height, width) ratio = min(ratio_min, ratio_max) @@ -441,6 +435,7 @@ def calculate_placeholder_spatial_shape(graph: Graph, match: SubgraphMatch, pipe # if the model is created with an input image resizer keeping aspect ratio if resizer_min_dimension and resizer_max_dimension: + pad_to_max_dimension = pipeline_config.get_param('pad_to_max_dimension') print('[ WARNING ] Model Optimizer removes pre-processing block of the model which resizes image keeping ' 'aspect ratio. The Inference Engine does not support dynamic image size so the Intermediate ' 'Representation file is generated with the input image size of a fixed size.') @@ -448,7 +443,8 @@ def calculate_placeholder_spatial_shape(graph: Graph, match: SubgraphMatch, pipe scaled_height, scaled_width = calculate_shape_keeping_aspect_ratio(user_defined_height, user_defined_width, resizer_min_dimension, - resizer_max_dimension) + resizer_max_dimension, + pad_to_max_dimension) if scaled_height != user_defined_height or scaled_width != user_defined_width: log.error('The model resizes the input image keeping aspect ratio with min dimension {}, max ' 'dimension {}. The provided input height {}, width {} is transformed to height {}, width ' @@ -457,7 +453,10 @@ def calculate_placeholder_spatial_shape(graph: Graph, match: SubgraphMatch, pipe height = scaled_height width = scaled_width else: - height = width = resizer_min_dimension + if pad_to_max_dimension: + height = width = resizer_max_dimension + else: + height = width = resizer_min_dimension print('Specify the "--input_shape" command line parameter to override the default shape which is equal to ' '({}, {}).'.format(height, width)) @@ -503,19 +502,107 @@ def update_parameter_shape(graph: Graph, match: [SubgraphMatch, None]): return initial_input_node_name, parameter_node -class ObjectDetectionAPIPreprocessorReplacement(FrontReplacementFromConfigFileSubGraph): +class ObjectDetectionAPITransformationsStart(FrontReplacementPattern): """ - The class replaces the "Preprocessor" block resizing input image and applying mean/scale values. Only nodes related - to applying mean/scaling values are kept. + This is a anchor transformation which is used to distinguish TF OD API models related transformations. """ - replacement_id = 'ObjectDetectionAPIPreprocessorReplacement' + enabled = True + + def run_after(self): + return [CropAndResizeReplacement, FakeQuantWithMinMaxVarsToQuantize] + + def find_and_replace_pattern(self, graph: Graph): + pass + + +class ObjectDetectionAPITransformationsFinish(FrontReplacementPattern): + """ + This is a anchor transformation which is used to distinguish TF OD API models related transformations. + """ + enabled = True + # cleanup the graph after applying of TF OD API transformations to remove a lot of unconnected nodes to avoid issues + # with shape inference + force_clean_up = True def run_before(self): # PadTFToPad inserts Transpose ops for Pad ops inside the sub-graph corresponding to DetectionOutput. # But the inputs corresponding to padding values is re-used as inputs for newly created Pad node. This input # is removed during removing nodes from the DO sub-graph so the first input to Transpose is missing which # results in TransposeOrderNormalizer transformation failure. - return [Pack, TransposeOrderNormalizer, PadTFToPad] + return [Pack, TransposeOrderNormalizer, PadTFToPad, SqueezeAxis, StandaloneConstEraser, TFSliceToSliceReplacer, + KerasRNNOutputConcatenation, KerasRNNInputSlicing] + + def find_and_replace_pattern(self, graph: Graph): + pass + + +def get_specific_ops_with_const_inputs(first_node: Node, allowed_ops: list, forward: bool = True): + """ + Returns the list with information about consecutive nodes of operation from "allowed_ops". + + :param first_node: The first node (not included) to start looking for nodes from the "allowed_ops" list + :param allowed_ops: list of allowed operations + :param forward: flag specifying direction of search + :return: list of triplets (Node, const_port_index, const_value) + """ + node = first_node.out_port(0).get_destination().node if forward else first_node.in_port(0).get_source().node + result = [] # (Node, port # with constant input, value) + while node.soft_get('op') in allowed_ops: + num_in_ports = len(node.in_ports()) + assert num_in_ports == 2, 'The node "{}" should have exactly 2 inputs, but it has only {}.' \ + ''.format(node.soft_get('name', node.id), num_in_ports) + for port in (0, 1): + if node.in_port(port).get_source().node.has_valid('value'): # this is a constant input to the node + result.append((node, port, node.in_port(port).get_source().node.value.copy())) + node = node.out_port(0).get_destination().node if forward else node.in_port(1 - port).get_source().node + break + return result + + +def get_preprocessing_ops(graph: Graph, start_node_id_suffix: str, end_node_id_suffix: str): + """ + Finds a sequence of pre-processing nodes (Sub, Mul, Div and Add) after the node with the id suffix + 'end_node_id_suffix' or ending with the node with id suffix 'end_node_id_suffix'. + + :param graph: graph to look for pre-processing ops + :param start_node_id_suffix: suffix of the start node name + :param end_node_id_suffix: suffix of the end node name + :return: the list with pre-processing nodes information and flag specifying nodes position + """ + start_node = None + end_node = None + for node in graph.get_op_nodes(): + if node.id.endswith(start_node_id_suffix): + start_node = node + if node.id.endswith(end_node_id_suffix): + end_node = node + + assert start_node is not None and end_node is not None, \ + 'Failed to find start/end nodes of the pre-processing block. The section of the transformation JSON ' \ + 'configuration file related to "ObjectDetectionAPIPreprocessor2Replacement" transformation should be updated ' \ + 'for this particular model.' + allowed_ops = ['Sub', 'Mul', 'Div', 'Add'] + preprocessing_nodes = get_specific_ops_with_const_inputs(start_node, allowed_ops, False) + trailing = False # switch to apply newly created pre-processing nodes after/before start_node/end_node + if len(preprocessing_nodes) == 0: + preprocessing_nodes = get_specific_ops_with_const_inputs(end_node, allowed_ops, True) + trailing = True + return preprocessing_nodes, trailing + + +class ObjectDetectionAPIPreprocessorReplacement(FrontReplacementFromConfigFileSubGraph): + """ + The class replaces the "Preprocessor" block resizing input image and applying mean/scale values. Only nodes related + to applying mean/scaling values are kept. + """ + replacement_id = 'ObjectDetectionAPIPreprocessorReplacement' + run_not_recursively = True + + def run_before(self): + return [ObjectDetectionAPITransformationsFinish] + + def run_after(self): + return [ObjectDetectionAPITransformationsStart] def nodes_to_remove(self, graph: Graph, match: SubgraphMatch): new_nodes_to_remove = match.matched_nodes_names() @@ -584,15 +671,33 @@ class ObjectDetectionAPIPreprocessor2Replacement(FrontReplacementFromConfigFileG """ The class replaces the "Preprocessor" block resizing input image and applying mean/scale values. Only nodes related to applying mean/scaling values are kept. The transformation is used for TensorFlow 2.X models. + + There are 6 possible cases: + 1. ... -> Scale -> Start -> Resize -> End -> ... + 2. ... -> Start -> Resize -> End -> Scale -> ... + 3. ... -> Start -> Resize -> End -> ... + 4. ... -> Start -> While (... -> Scale -> Resize -> ...) -> End -> ... + 5. ... -> Start -> While (... -> Resize -> Scale -> ...) -> End -> ... + 6. ... -> Start -> While (... -> Resize -> ...) -> End -> ... + + Where: + - "Start" - is the node name specified in the transformation configuration file + - "End" - is the node name specified in the transformation configuration file + - "Scale" - a node or a sequence of element-wise nodes like Mul, Add, Sub or Div with Const input + - "While" (... nodes ... ) - a Loop operation with body nodes specified in parentheses + - "Resize" - the Resize sub-graph being removed + + The transformation creates a new sub-graph of pre-processing nodes if in the original model it is inside the Loop, + or keeps the existing one if they are in the main graph originally. """ replacement_id = 'ObjectDetectionAPIPreprocessor2Replacement' + run_not_recursively = True def run_before(self): - # PadTFToPad inserts Transpose ops for Pad ops inside the sub-graph corresponding to DetectionOutput. - # But the inputs corresponding to padding values is re-used as inputs for newly created Pad node. This input - # is removed during removing nodes from the DO sub-graph so the first input to Transpose is missing which - # results in TransposeOrderNormalizer transformation failure. - return [Pack, TransposeOrderNormalizer, PadTFToPad] + return [ObjectDetectionAPITransformationsFinish] + + def run_after(self): + return [ObjectDetectionAPITransformationsStart] def transform_graph(self, graph: Graph, replacement_descriptions: dict): update_parameter_shape(graph, None) @@ -600,16 +705,69 @@ def transform_graph(self, graph: Graph, replacement_descriptions: dict): start_nodes = replacement_descriptions['start_nodes'] end_nodes = replacement_descriptions['end_nodes'] + start_nodes = [node_id for node_id in start_nodes if node_id in graph.nodes] + end_nodes = [node_id for node_id in end_nodes if node_id in graph.nodes] + assert len(start_nodes) >= 1 - assert start_nodes[0] in graph.nodes - input_node = Node(graph, start_nodes[0]) + start_node = Node(graph, start_nodes[0]) assert len(end_nodes) >= 1 - assert end_nodes[0] in graph.nodes - output_node = Node(graph, end_nodes[0]) - - output_node.out_port(0).get_connection().set_source(input_node.in_port(0).get_source()) - input_node.in_port(0).disconnect() + end_node = Node(graph, end_nodes[0]) + + # determine nodes between specified input and output nodes to check if there is a Loop op among them + sub_graph_node_ids = sub_graph_between_nodes(graph, start_nodes, end_nodes, include_control_flow=False, + allow_non_reachable_end_nodes=True) + + pre_processing_in_loop = False + # If the pre-processing block contains Loop operation then mean and scale value should be obtained from it using + # some pre-defined marker nodes existing for all pre-processing blocks. + # If there is no Loop then pre-processing nodes are in the main graph and they should be obtained from it + loop_nodes_ids = [node_id for node_id in sub_graph_node_ids if graph.node[node_id].get('op') == 'Loop'] + if len(loop_nodes_ids): + assert len(loop_nodes_ids) == 1, 'There should be exactly one Loop node in the pre-processor block.' + pre_processing_in_loop = True + loop_node = Node(graph, loop_nodes_ids[0]) + body_graph = loop_node.body + # we stick to the nodes with ids 'map/while/Preprocessor/unstack' and 'map/while/Preprocessor/stack' as they + # "wrap" nodes performing image resize. The scale/mean values nodes are located strictly before or after + # them + pre_processing_ops, trailing = get_preprocessing_ops(body_graph, + 'map/while/Preprocessor/unstack', + 'map/while/Preprocessor/stack') + else: + pre_processing_ops, trailing = get_preprocessing_ops(graph, start_node.id, end_node.id) + + if len(pre_processing_ops): + # if the pre-processing is applied before the resize then reverse them to be in the topological order + if not trailing: + pre_processing_ops = list(reversed(pre_processing_ops)) + + if pre_processing_in_loop: # case 4 and 5 + # build a sub-graph containing a sequence of pre_processing_ops if they came from the Loop + new_preprocessing_ops = [] + ops_mapping = {'Add': Add, 'Div': Div, 'Mul': Mul, 'Sub': Sub} + for idx in range(len(pre_processing_ops)): + origin_node, const_port_ind, value = pre_processing_ops[idx] + new_node = create_op_with_const_inputs(graph, ops_mapping[origin_node.op], {const_port_ind: value}) + if len(new_preprocessing_ops): + new_node.in_port(1 - const_port_ind).connect(new_preprocessing_ops[-1].out_port(0)) + new_preprocessing_ops.append(new_node) + + # replace sub-graph between start and end nodes (including them) with new_preprocessing_ops nodes + end_node.out_port(0).get_connection().set_source(new_preprocessing_ops[-1].out_port(0)) + start_node.in_port(0).get_connection().set_destination( + new_preprocessing_ops[0].in_port(new_preprocessing_ops[0].is_in_port_connected(0))) + else: + if trailing: # case 2 + # change output of the end_node to be produced with the start node producer + source_port = start_node.in_port(0).get_source() + source_port.disconnect() + end_node.out_port(0).get_connection().set_source(source_port) + else: # case 1 + # change output of the end_node to be produced with the last preprocessing op + end_node.out_port(0).get_connection().set_source(pre_processing_ops[-1][0].out_port(0)) + else: # simply remove the nodes in between start_node and end_node (including them). Case 3 and 6 + end_node.out_port(0).get_connection().set_source(start_node.in_port(0).get_source()) print('The Preprocessor block has been removed. Only nodes performing mean value subtraction and scaling (if' ' applicable) are kept.') @@ -624,12 +782,13 @@ class ObjectDetectionAPIDetectionOutputReplacement(FrontReplacementFromConfigFil Refer to the code for more details. """ replacement_id = 'ObjectDetectionAPIDetectionOutputReplacement' + run_not_recursively = True def run_before(self): - return [ObjectDetectionAPIMaskRCNNROIPoolingSecondReplacement, SqueezeAxis, TransposeOrderNormalizer] + return [ObjectDetectionAPIMaskRCNNROIPoolingSecondReplacement] def run_after(self): - return [ObjectDetectionAPIProposalReplacement, CropAndResizeReplacement, FakeQuantWithMinMaxVarsToQuantize] + return [ObjectDetectionAPIProposalReplacement] def nodes_to_remove(self, graph: Graph, match: SubgraphMatch): new_nodes_to_remove = match.matched_nodes_names().copy() @@ -813,6 +972,10 @@ def generate_sub_graph(self, graph: Graph, match: SubgraphMatch): class ObjectDetectionAPIMaskRCNNROIPoolingSecondReplacement(FrontReplacementFromConfigFileSubGraph): replacement_id = 'ObjectDetectionAPIMaskRCNNROIPoolingSecondReplacement' + run_not_recursively = True + + def run_before(self): + return [ObjectDetectionAPITransformationsFinish] def run_after(self): return [ObjectDetectionAPIProposalReplacement] @@ -884,6 +1047,10 @@ class ObjectDetectionAPIMaskRCNNSigmoidReplacement(FrontReplacementFromConfigFil Adds activation with sigmoid function to the end of the network producing masks tensors. """ replacement_id = 'ObjectDetectionAPIMaskRCNNSigmoidReplacement' + run_not_recursively = True + + def run_before(self): + return [ObjectDetectionAPITransformationsFinish] def run_after(self): return [ObjectDetectionAPIMaskRCNNROIPoolingSecondReplacement] @@ -910,12 +1077,13 @@ class ObjectDetectionAPIProposalReplacement(FrontReplacementFromConfigFileSubGra Refer to comments inside the function for more information about performed actions. """ replacement_id = 'ObjectDetectionAPIProposalReplacement' + run_not_recursively = True def run_after(self): return [ObjectDetectionAPIPreprocessorReplacement, ObjectDetectionAPIPreprocessor2Replacement] def run_before(self): - return [CropAndResizeReplacement, TransposeOrderNormalizer, Pack] + return [ObjectDetectionAPITransformationsFinish] def output_edges_match(self, graph: Graph, match: SubgraphMatch, new_sub_graph: dict): return {match.output_node(0)[0].id: new_sub_graph['proposal_node'].id} @@ -1061,13 +1229,13 @@ def generate_sub_graph(self, graph: Graph, match: SubgraphMatch): class ObjectDetectionAPISSDPostprocessorReplacement(FrontReplacementFromConfigFileSubGraph): replacement_id = 'ObjectDetectionAPISSDPostprocessorReplacement' + run_not_recursively = True def run_after(self): - return [ObjectDetectionAPIPreprocessorReplacement, ObjectDetectionAPIPreprocessor2Replacement, - FakeQuantWithMinMaxVarsToQuantize] + return [ObjectDetectionAPIPreprocessorReplacement, ObjectDetectionAPIPreprocessor2Replacement] def run_before(self): - return [StandaloneConstEraser, TransposeOrderNormalizer, TFSliceToSliceReplacer] + return [ObjectDetectionAPITransformationsFinish] def output_edges_match(self, graph: Graph, match: SubgraphMatch, new_sub_graph: dict): # the DetectionOutput in IE produces single tensor, but in TF it produces two tensors, so create only one output @@ -1147,6 +1315,13 @@ def generate_sub_graph(self, graph: Graph, match: SubgraphMatch): conv_nodes = backward_bfs_for_operation(detection_output_node.in_node(0), ['Conv2D']) swap_weights_xy(graph, conv_nodes) + # As outputs are replaced with a postprocessing node, outgoing tensor names are no longer + # correspond to original tensors and should be removed from output->Result edges + out_nodes = [] + for out in range(match.outputs_count()): + out_nodes.append(match.output_node(out)[0]) + clear_tensor_names_info(out_nodes) + return {'detection_output_node': detection_output_node} @staticmethod @@ -1172,6 +1347,12 @@ def do_infer(node: Node): node.in_node(2).shape = int64_array(prior_boxes.shape) node.in_node(2).value = prior_boxes + # create Const node with an updated prior boxes values. Cannot use Port/Connection API here because we are + # in the middle of the partial inference phase and graph is in the intermediate step + graph.remove_edge(node.in_node(2).in_node(0).id, node.in_node(2).id) + const = Const(graph, {'name': 'prior_boxes', 'executable': True, 'value': prior_boxes}).create_node() + graph.create_edge(const, node.in_node(2)) + node.old_infer(node) conv_nodes = backward_bfs_for_operation(node.in_node(0), ['Conv2D']) @@ -1193,10 +1374,13 @@ class ObjectDetectionAPIOutputReplacement(FrontReplacementFromConfigFileGeneral) SecondStageBoxPredictor_1/Conv_1/BiasAdd will be output if it exists in the graph. """ replacement_id = 'ObjectDetectionAPIOutputReplacement' + run_not_recursively = True + + def run_after(self): + return [ObjectDetectionAPITransformationsStart] def run_before(self): - return [ObjectDetectionAPIPreprocessorReplacement, ObjectDetectionAPIPreprocessor2Replacement, - TransposeOrderNormalizer] + return [ObjectDetectionAPIPreprocessorReplacement, ObjectDetectionAPIPreprocessor2Replacement] def transform_graph(self, graph: Graph, replacement_descriptions: dict): if graph.graph['cmd_params'].output is not None: @@ -1218,9 +1402,13 @@ def transform_graph(self, graph: Graph, replacement_descriptions: dict): class ObjectDetectionAPIPSROIPoolingReplacement(FrontReplacementFromConfigFileSubGraph): replacement_id = 'ObjectDetectionAPIPSROIPoolingReplacement' + run_not_recursively = True def run_after(self): - return [ObjectDetectionAPIProposalReplacement, TransposeOrderNormalizer] + return [ObjectDetectionAPIProposalReplacement] + + def run_before(self): + return [ObjectDetectionAPITransformationsFinish] def output_edges_match(self, graph: Graph, match: SubgraphMatch, new_sub_graph: dict): return {match.output_node(0)[0].id: new_sub_graph['output_node'].id} @@ -1289,10 +1477,13 @@ class ObjectDetectionAPIConstValueOverride(FrontReplacementFromConfigFileGeneral no more equal to the 'first_stage_max_proposals' saved as a constant. """ replacement_id = 'ObjectDetectionAPIConstValueOverride' + run_not_recursively = True + + def run_after(self): + return [ObjectDetectionAPITransformationsStart] def run_before(self): - return [ObjectDetectionAPIPreprocessorReplacement, ObjectDetectionAPIPreprocessor2Replacement, - TransposeOrderNormalizer] + return [ObjectDetectionAPIPreprocessorReplacement, ObjectDetectionAPIPreprocessor2Replacement] def transform_graph(self, graph: Graph, replacement_descriptions: dict): argv = graph.graph['cmd_params'] diff --git a/model-optimizer/extensions/front/tf/ObjectDetectionAPI_test.py b/model-optimizer/extensions/front/tf/ObjectDetectionAPI_test.py index fa5914121ac559..20d7a1c2d421bf 100644 --- a/model-optimizer/extensions/front/tf/ObjectDetectionAPI_test.py +++ b/model-optimizer/extensions/front/tf/ObjectDetectionAPI_test.py @@ -1,27 +1,20 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest +from generator import generator, generate +from unittest.mock import patch + from extensions.front.tf.ObjectDetectionAPI import calculate_shape_keeping_aspect_ratio, \ - calculate_placeholder_spatial_shape + calculate_placeholder_spatial_shape, ObjectDetectionAPIPreprocessor2Replacement +from mo.front.common.partial_infer.utils import float32_array from mo.front.subgraph_matcher import SubgraphMatch from mo.graph.graph import Graph from mo.utils.custom_replacement_config import CustomReplacementDescriptor from mo.utils.error import Error +from mo.utils.ir_engine.compare_graphs import compare_graphs +from mo.utils.unittest.graph import const, regular_op, result, build_graph, connect_front class FakePipelineConfig: @@ -34,58 +27,33 @@ def get_param(self, param: str): return self._model_params[param] +@generator class TestCalculateShape(unittest.TestCase): min_size = 600 max_size = 1024 - def test_calculate_shape_1(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(100, 300, self.min_size, self.max_size), (341, 1024)) - - def test_calculate_shape_2(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(100, 600, self.min_size, self.max_size), (171, 1024)) - - def test_calculate_shape_3(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(100, 3000, self.min_size, self.max_size), (34, 1024)) - - def test_calculate_shape_4(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(300, 300, self.min_size, self.max_size), (600, 600)) - - def test_calculate_shape_5(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(300, 400, self.min_size, self.max_size), (600, 800)) - - def test_calculate_shape_6(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(300, 600, self.min_size, self.max_size), (512, 1024)) - - def test_calculate_shape_7(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(1000, 2500, self.min_size, self.max_size), - (410, 1024)) - - def test_calculate_shape_8(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(1800, 2000, self.min_size, self.max_size), - (600, 667)) - - def test_calculate_shape_11(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(300, 100, self.min_size, self.max_size), (1024, 341)) - - def test_calculate_shape_12(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(600, 100, self.min_size, self.max_size), (1024, 171)) - - def test_calculate_shape_13(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(3000, 100, self.min_size, self.max_size), (1024, 34)) - - def test_calculate_shape_15(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(400, 300, self.min_size, self.max_size), (800, 600)) - - def test_calculate_shape_16(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(600, 300, self.min_size, self.max_size), (1024, 512)) - - def test_calculate_shape_17(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(2500, 1000, self.min_size, self.max_size), - (1024, 410)) - - def test_calculate_shape_18(self): - self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(2000, 1800, self.min_size, self.max_size), - (667, 600)) + @generate(*[(100, 300, 341, 1024, False), + (100, 600, 171, 1024, False), + (100, 3000, 34, 1024, False), + (300, 300, 600, 600, False), + (300, 400, 600, 800, False), + (300, 600, 512, 1024, False), + (1000, 2500, 410, 1024, False), + (1800, 2000, 600, 667, False), + (300, 100, 1024, 341, False), + (600, 100, 1024, 171, False), + (3000, 100, 1024, 34, False), + (400, 300, 800, 600, False), + (600, 300, 1024, 512, False), + (2500, 1000, 1024, 410, False), + (2000, 1800, 667, 600, False), + (300, 300, 1024, 1024, True), + (900, 300, 1024, 1024, True), + (1300, 900, 1024, 1024, True), + (1025, 1025, 1024, 1024, True), + ]) + def test_calculate_shape(self, h, w, th, tw, pad): + self.assertTupleEqual(calculate_shape_keeping_aspect_ratio(h, w, self.min_size, self.max_size, pad), (th, tw)) class TestCalculatePlaceholderSpatialShape(unittest.TestCase): @@ -122,5 +90,208 @@ def test_keep_aspect_ratio_resizer_overrided_by_user(self): self.assertTupleEqual((800, 600), calculate_placeholder_spatial_shape(self.graph, self.match, self.pipeline_config)) + def test_keep_aspect_ratio_resizer_overrided_by_user_pad(self): + self.pipeline_config._model_params['resizer_min_dimension'] = 600 + self.pipeline_config._model_params['resizer_max_dimension'] = 1024 + self.pipeline_config._model_params['pad_to_max_dimension'] = True + self.graph.graph['user_shapes'] = {'image_tensor': [{'shape': [1, 400, 300, 3]}]} + self.assertTupleEqual((1024, 1024), + calculate_placeholder_spatial_shape(self.graph, self.match, self.pipeline_config)) + def test_missing_input_shape_information(self): self.assertRaises(Error, calculate_placeholder_spatial_shape, self.graph, self.match, self.pipeline_config) + + +@patch('extensions.front.tf.ObjectDetectionAPI.update_parameter_shape') +class TestObjectDetectionAPIPreprocessor2Replacement(unittest.TestCase): + def setUp(self): + self.start_node_name = 'StatefulPartitionedCall/Preprocessor/unstack' + self.end_node_name = 'StatefulPartitionedCall/Preprocessor/stack' + self.end_node_name2 = 'StatefulPartitionedCall/Preprocessor/stack2' + self.loop_start_node_name = 'prefix/map/while/Preprocessor/unstack' + self.loop_end_node_name = 'prefix/map/while/Preprocessor/stack' + self.mul_const = float32_array([0.025, 0.374, -0.45]) + self.sub_const = float32_array([2.0, 3.0, 4.0]) + + self.nodes = { + **regular_op('input', {'type': 'Parameter'}), + + **regular_op('mul', {'op': 'Mul', 'type': 'Multiply', 'name': 'my_mul'}), + **regular_op('sub', {'op': 'Sub', 'type': 'Subtract', 'name': 'my_sub'}), + **const('mul_const', self.mul_const), + **const('sub_const', self.sub_const), + + **regular_op(self.start_node_name, {'op': 'Identity'}), + **regular_op(self.end_node_name, {'op': 'Identity'}), + **regular_op(self.end_node_name2, {'op': 'Identity'}), + + **regular_op('loop', {'op': 'Loop', 'body': None}), + + **regular_op('resize', {'type': 'Interpolate'}), + **result('result'), + } + self.replacement_desc = {'start_nodes': [self.start_node_name], + 'end_nodes': [self.end_node_name, self.end_node_name2]} + + def build_ref_graph(self, preprocessing: bool): + if preprocessing: + ref_edges = [*connect_front('input', '0:mul'), + *connect_front('mul_const', '1:mul'), + *connect_front('sub_const', '0:sub'), + *connect_front('mul', '1:sub'), + *connect_front('sub', 'result'), + ] + else: + ref_edges = [*connect_front('input', 'result')] + ref_graph = build_graph(self.nodes, ref_edges, nodes_with_edges_only=True) + ref_graph.stage = 'front' + return ref_graph + + def test_case_1(self, update_parameter_shape_mock): + # test for case #1 described in the ObjectDetectionAPIPreprocessor2Replacement + update_parameter_shape_mock.return_value = None + edges = [*connect_front('input', '0:mul'), + *connect_front('mul_const', '1:mul'), + *connect_front('sub_const', '0:sub'), + *connect_front('mul', '1:sub'), + *connect_front('sub', self.start_node_name), + *connect_front(self.start_node_name, 'resize'), + *connect_front('resize', self.end_node_name), + *connect_front(self.end_node_name, 'result'), + ] + graph = build_graph(self.nodes, edges) + graph.stage = 'front' + + ObjectDetectionAPIPreprocessor2Replacement().transform_graph(graph, self.replacement_desc) + + (flag, resp) = compare_graphs(graph, self.build_ref_graph(True), 'result', check_op_attrs=True) + self.assertTrue(flag, resp) + + def test_case_2(self, update_parameter_shape_mock): + # test for case #2 described in the ObjectDetectionAPIPreprocessor2Replacement + update_parameter_shape_mock.return_value = None + + edges = [*connect_front('input', self.start_node_name), + *connect_front(self.start_node_name, 'resize'), + *connect_front('resize', self.end_node_name), + *connect_front(self.end_node_name, '0:mul'), + *connect_front('mul_const', '1:mul'), + *connect_front('sub_const', '0:sub'), + *connect_front('mul', '1:sub'), + *connect_front('sub', 'result'), + ] + graph = build_graph(self.nodes, edges) + graph.stage = 'front' + + ObjectDetectionAPIPreprocessor2Replacement().transform_graph(graph, self.replacement_desc) + + (flag, resp) = compare_graphs(graph, self.build_ref_graph(True), 'result', check_op_attrs=True) + self.assertTrue(flag, resp) + + def test_case_3(self, update_parameter_shape_mock): + # test for case #3 described in the ObjectDetectionAPIPreprocessor2Replacement + update_parameter_shape_mock.return_value = None + + edges = [*connect_front('input', self.start_node_name), + *connect_front(self.start_node_name, 'resize'), + *connect_front('resize', self.end_node_name), + *connect_front(self.end_node_name, 'result'), + ] + graph = build_graph(self.nodes, edges) + graph.stage = 'front' + + ObjectDetectionAPIPreprocessor2Replacement().transform_graph(graph, self.replacement_desc) + + (flag, resp) = compare_graphs(graph, self.build_ref_graph(False), 'result', check_op_attrs=True) + self.assertTrue(flag, resp) + + def build_main_graph(self, pre_processing: str): + def build_body_graph(pre_processing: str): + nodes = { + **regular_op('input', {'type': 'Parameter'}), + + **regular_op('mul', {'op': 'Mul', 'type': 'Multiply', 'name': 'my_body_mul'}), + **regular_op('sub', {'op': 'Sub', 'type': 'Subtract', 'name': 'my_body_sub'}), + **const('body_mul_const', self.mul_const), + **const('body_sub_const', self.sub_const), + + **regular_op(self.loop_start_node_name, {'op': 'Identity'}), + **regular_op(self.loop_end_node_name, {'op': 'Identity'}), + + **regular_op('resize', {'type': 'Interpolate'}), + **result('result'), + } + edges = None + if pre_processing == 'no': + edges = [*connect_front('input', self.loop_start_node_name), + *connect_front(self.loop_start_node_name, 'resize'), + *connect_front('resize', self.loop_end_node_name), + *connect_front(self.loop_end_node_name, 'result'), + ] + elif pre_processing == 'trailing': + edges = [*connect_front('input', self.loop_start_node_name), + *connect_front(self.loop_start_node_name, 'resize'), + *connect_front('resize', self.loop_end_node_name), + *connect_front(self.loop_end_node_name, '0:mul'), + *connect_front('body_mul_const', '1:mul'), + *connect_front('body_sub_const', '0:sub'), + *connect_front('mul', '1:sub'), + *connect_front('sub', 'result'), + ] + else: + edges = [*connect_front('input', '0:mul'), + *connect_front('body_mul_const', '1:mul'), + *connect_front('body_sub_const', '0:sub'), + *connect_front('mul', '1:sub'), + *connect_front('sub', self.loop_start_node_name), + *connect_front(self.loop_start_node_name, 'resize'), + *connect_front('resize', self.loop_end_node_name), + *connect_front(self.loop_end_node_name, 'result'), + ] + graph = build_graph(nodes, edges, nodes_with_edges_only=True) + graph.stage = 'front' + return graph + + edges = [*connect_front('input', self.start_node_name), + *connect_front(self.start_node_name, 'loop'), + *connect_front('loop:0', self.end_node_name), + *connect_front('loop:1', self.end_node_name2), + *connect_front(self.end_node_name, 'result'), + ] + graph = build_graph(self.nodes, edges, {'loop': {'body': build_body_graph(pre_processing)}}, + nodes_with_edges_only=True) + graph.stage = 'front' + return graph + + def test_case_4(self, update_parameter_shape_mock): + # test for case #4 described in the ObjectDetectionAPIPreprocessor2Replacement + update_parameter_shape_mock.return_value = None + + graph = self.build_main_graph('leading') + + ObjectDetectionAPIPreprocessor2Replacement().transform_graph(graph, self.replacement_desc) + + (flag, resp) = compare_graphs(graph, self.build_ref_graph(True), 'result', check_op_attrs=True) + self.assertTrue(flag, resp) + + def test_case_5(self, update_parameter_shape_mock): + # test for case #5 described in the ObjectDetectionAPIPreprocessor2Replacement + update_parameter_shape_mock.return_value = None + + graph = self.build_main_graph('trailing') + + ObjectDetectionAPIPreprocessor2Replacement().transform_graph(graph, self.replacement_desc) + + (flag, resp) = compare_graphs(graph, self.build_ref_graph(True), 'result', check_op_attrs=True) + self.assertTrue(flag, resp) + + def test_case_6(self, update_parameter_shape_mock): + # test for case #6 described in the ObjectDetectionAPIPreprocessor2Replacement + update_parameter_shape_mock.return_value = None + + graph = self.build_main_graph('no') + + ObjectDetectionAPIPreprocessor2Replacement().transform_graph(graph, self.replacement_desc) + + (flag, resp) = compare_graphs(graph, self.build_ref_graph(False), 'result', check_op_attrs=True) + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/front/tf/RetinaNetFilteredDetectionsReplacement.py b/model-optimizer/extensions/front/tf/RetinaNetFilteredDetectionsReplacement.py index c21439362eefde..cdcdfa0a5221fc 100644 --- a/model-optimizer/extensions/front/tf/RetinaNetFilteredDetectionsReplacement.py +++ b/model-optimizer/extensions/front/tf/RetinaNetFilteredDetectionsReplacement.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np @@ -21,7 +8,7 @@ from extensions.ops.elementwise import Mul, Sub, Pow from extensions.ops.gather import Gather from extensions.ops.split import VariadicSplit -from mo.front.common.partial_infer.utils import int64_array +from mo.front.common.partial_infer.utils import int64_array, float32_array from mo.front.subgraph_matcher import SubgraphMatch from mo.front.tf.graph_utils import create_op_node_with_second_input, create_op_with_const_inputs from mo.front.tf.replacement import FrontReplacementFromConfigFileSubGraph @@ -33,6 +20,7 @@ from mo.ops.shape import Shape from mo.ops.strided_slice import StridedSlice from mo.utils.error import Error +from mo.utils.graph import clear_tensor_names_info class RetinaNetFilteredDetectionsReplacement(FrontReplacementFromConfigFileSubGraph): @@ -66,9 +54,9 @@ def append_variances(priors_scale_node: Node, variance: list): sp_shape = Shape(graph, {'name': name + '/shape'}).create_node() priors_scale_node.out_port(0).connect(sp_shape.in_port(0)) - begin = Const(graph, {'value': np.array([-2])}).create_node() - end = Const(graph, {'value': np.array([-1])}).create_node() - stride = Const(graph, {'value': np.array([1])}).create_node() + begin = Const(graph, {'value': int64_array([-2])}).create_node() + end = Const(graph, {'value': int64_array([-1])}).create_node() + stride = Const(graph, {'value': int64_array([1])}).create_node() shape_part_for_tiling = StridedSlice(graph, {'name': name + '/get_-2_dim', 'begin_mask': np.array([1]), 'end_mask': np.array([1]), 'new_axis_mask': np.array([0]), 'shrink_axis_mask': np.array([0]), @@ -84,7 +72,7 @@ def append_variances(priors_scale_node: Node, variance: list): 'axis': int64_array(0)}, shape_part_for_tiling) - variance = Const(graph, {'name': name + '/variance', 'value': np.array(variance)}).create_node() + variance = Const(graph, {'name': name + '/variance', 'value': float32_array(variance)}).create_node() tile = Broadcast(graph, {'name': name + '/variance_tile'}).create_node() variance.out_port(0).connect(tile.in_port(0)) shape_concat.out_port(0).connect(tile.in_port(1)) @@ -125,9 +113,9 @@ def placeholder_scales(self, placeholder: Node): shape = Shape(graph, {'name': 'input_image_shape'}).create_node() shape.in_port(0).connect(placeholder.out_port(0)) - begin = Const(graph, {'value': np.array([1])}).create_node() - end = Const(graph, {'value': np.array([3])}).create_node() - stride = Const(graph, {'value': np.array([1])}).create_node() + begin = Const(graph, {'value': int64_array([1])}).create_node() + end = Const(graph, {'value': int64_array([3])}).create_node() + stride = Const(graph, {'value': int64_array([1])}).create_node() spatial = StridedSlice(graph, {'name': name + '/get_h_w', 'begin_mask': np.array([1]), 'end_mask': np.array([1]), 'new_axis_mask': np.array([0]), 'shrink_axis_mask': np.array([0]), 'ellipsis_mask': np.array([0])}).create_node() @@ -137,7 +125,7 @@ def placeholder_scales(self, placeholder: Node): spatial.in_port(2).connect(end.out_port(0)) spatial.in_port(3).connect(stride.out_port(0)) - power = Const(graph, {'value': np.array([-1.])}).create_node() + power = Const(graph, {'value': float32_array([-1.])}).create_node() spatial_scale = Pow(graph, {}).create_node() spatial_scale.in_port(0).connect(spatial.out_port(0)) @@ -260,4 +248,11 @@ def generate_sub_graph(self, graph: Graph, match: SubgraphMatch): dict(name=detection_output_op.attrs['type'], nms_threshold=iou_threshold, clip_after_nms=1, normalized=1, variance_encoded_in_target=0, background_label_id=1000)) + # As outputs are replaced with a postprocessing node, outgoing tensor names are no longer + # correspond to original tensors and should be removed from output->Result edges + out_nodes = [] + for out in range(match.outputs_count()): + out_nodes.append(match.output_node(out)[0]) + clear_tensor_names_info(out_nodes) + return {'detection_output_node': detection_output_node} diff --git a/model-optimizer/extensions/front/tf/SSDToolboxDetectionOutput.py b/model-optimizer/extensions/front/tf/SSDToolboxDetectionOutput.py index 26d6e1edf975bf..af24927e0bf930 100644 --- a/model-optimizer/extensions/front/tf/SSDToolboxDetectionOutput.py +++ b/model-optimizer/extensions/front/tf/SSDToolboxDetectionOutput.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.standalone_const_eraser import StandaloneConstEraser from extensions.ops.DetectionOutput import DetectionOutput diff --git a/model-optimizer/extensions/front/tf/SizeReplacer.py b/model-optimizer/extensions/front/tf/SizeReplacer.py index 42fefddef85002..3b65e97bb2e068 100644 --- a/model-optimizer/extensions/front/tf/SizeReplacer.py +++ b/model-optimizer/extensions/front/tf/SizeReplacer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.ReduceOps import ReduceProd from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp diff --git a/model-optimizer/extensions/front/tf/SwitchMergeOptimization.py b/model-optimizer/extensions/front/tf/SwitchMergeOptimization.py index 727a79c10619cd..cdd7e676057e6f 100644 --- a/model-optimizer/extensions/front/tf/SwitchMergeOptimization.py +++ b/model-optimizer/extensions/front/tf/SwitchMergeOptimization.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.select import Select from mo.front.common.replacement import FrontReplacementSubgraph from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/tf/SwitchMergeOptimization_test.py b/model-optimizer/extensions/front/tf/SwitchMergeOptimization_test.py index 780a169614322a..7370e7bcbdac5a 100644 --- a/model-optimizer/extensions/front/tf/SwitchMergeOptimization_test.py +++ b/model-optimizer/extensions/front/tf/SwitchMergeOptimization_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.front.tf.SwitchMergeOptimization import SwitchMergeOptimization diff --git a/model-optimizer/extensions/front/tf/TFResizeToInterpolate.py b/model-optimizer/extensions/front/tf/TFResizeToInterpolate.py index 99255153610950..e9660a8b290b6b 100644 --- a/model-optimizer/extensions/front/tf/TFResizeToInterpolate.py +++ b/model-optimizer/extensions/front/tf/TFResizeToInterpolate.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/TFSliceToSlice.py b/model-optimizer/extensions/front/tf/TFSliceToSlice.py index 62e59878452249..07a61620a37451 100644 --- a/model-optimizer/extensions/front/tf/TFSliceToSlice.py +++ b/model-optimizer/extensions/front/tf/TFSliceToSlice.py @@ -1,81 +1,55 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np from extensions.ops.Cast import Cast from extensions.ops.elementwise import Add, Equal from extensions.ops.select import Select +from mo.front.common.partial_infer.utils import int64_array from mo.front.common.replacement import FrontReplacementOp +from mo.front.tf.graph_utils import create_op_with_const_inputs from mo.graph.graph import Graph, rename_nodes -from mo.ops.const import Const +from mo.ops.shape import Shape from mo.ops.slice import Slice class TFSliceToSliceReplacer(FrontReplacementOp): """ This transformation converts TFSlice to internal Slice operation. - In TFSlice size[i] == -1 means take all elements on axis i up to the end including(!) the last - In internal MO Slice (which is borrowed from ONNX) -1 means take all excluding(!) the last (shape[i] - 1). - Also TFSlice has 'sizes' on the second input while Slice has 'ends'. - This transformation was added to avoid multiple if statements in future transformations. + TFSlice has 'size' on the second input while Slice has 'ends', therefore we insert Add(begin, size). + size[i] == -1 is a magic number that means take the whole range along axis i up to the end. + To process the case when size[i] == -1 we insert subgraph with ShapeOf. """ op = 'TFSlice' enabled = True def replace_sub_graph(self, graph: Graph, match: dict): - node = match['op'] - slice_name = node.soft_get('name', node.id) + tf_slice_node = match['op'] + slice_name = tf_slice_node.soft_get('name', tf_slice_node.id) slice_node = Slice(graph).create_node() - rename_nodes([(node, slice_name + '/to_be_removed'), (slice_node, slice_name)]) - - eq_node = Equal(graph, {'name': slice_name + '/equal'}).create_node() - minus_one_node = Const(graph, {'name': slice_name + '/minus_one', 'value': np.array(-1)}).create_node() - int32_max_node = Const(graph, {'name': slice_name + '/int32_max', 'value': np.iinfo(np.int32).max}).create_node() - select_node = Select(graph, {'name': slice_name + '/select'}).create_node() - - # node to convert sizes to ends - sum_node = Add(graph, {'name': slice_name + '/end_const'}).create_node() - - # reconnect input from tfslice to slice - node.in_port(0).get_source().connect(slice_node.in_port(0)) - node.in_port(0).disconnect() - # reconnect begin of tfslice to start of slice - node.in_port(1).get_source().connect(slice_node.in_port(1)) - node.in_port(1).disconnect() - - # (size -> ends) reconnect begins and sizes to sum to evaluate ends for Slice - # connects begins to slice - slice_node.in_port(1).get_source().connect(sum_node.in_port(0)) - node.in_port(2).get_source().connect(sum_node.in_port(1)) - node.in_port(2).disconnect() - - # if size[i] == -1 when take int32_max as end[i] - sum_node.in_port(1).get_source().connect(eq_node.in_port(0)) - minus_one_node.out_port(0).connect(eq_node.in_port(1)) - # from equal to 0 port of select - eq_node.out_port(0).connect(select_node.in_port(0)) - # from int32_max to 1 of select - int32_max_node.out_port(0).connect(select_node.in_port(1)) - # from sum to 2nd of select - sum_node.out_port(0).connect(select_node.in_port(2)) - # out of select to end (2nd of slice) - select_node.out_port(0).connect(slice_node.in_port(2)) - - cast = Cast(graph, dict(name=sum_node.name + '/CastToI64', dst_type=np.int64)).create_node() - select_node.in_port(2).get_connection().insert_node(cast) - - node.out_port(0).get_connection().set_source(slice_node.out_port(0)) + rename_nodes([(tf_slice_node, slice_name + '/to_be_removed'), (slice_node, slice_name)]) + ends_node = Add(graph, {'name': slice_name + '/ends'}).create_node() + + # reconnect input, begin, and size from TFSlice to the subgraph with Slice + tf_slice_node.in_port(0).get_connection().set_destination(slice_node.in_port(0)) + tf_slice_node.in_port(1).get_connection().set_destination(slice_node.in_port(1)) + tf_slice_node.in_port(2).get_connection().set_destination(ends_node.in_port(0)) + slice_node.in_port(1).get_connection().add_destination(ends_node.in_port(1)) + + max_ends = Shape(graph, {'name': slice_name + '/ShapeOf'}).create_node() + slice_node.in_port(0).get_connection().add_destination(max_ends.in_port(0)) + + # check if size[i] == -1, will be applied elementwisely: len(size) = len(begin) = input_rank + where_max_ends_is_needed = create_op_with_const_inputs(graph, Equal, {0: int64_array(-1)}, + {'name': slice_name + '/where_max_ends_is_needed'}) + ends_node.in_port(0).get_connection().add_destination(where_max_ends_is_needed.in_port(1)) + # select requires equal dtypes, need to convert ends to I64 + ends_casted_to_i64 = Cast(graph, {'name': slice_name + '/CastToI64', + 'dst_type': np.int64}).create_node([ends_node]) + # if size[i] == 1 then take max_ends values + correct_ends = Select(graph, {'name': slice_name + '/chosen_ends'}).create_node([where_max_ends_is_needed, + max_ends, ends_casted_to_i64]) + correct_ends.out_port(0).connect(slice_node.in_port(2)) + + tf_slice_node.out_port(0).get_connection().set_source(slice_node.out_port(0)) diff --git a/model-optimizer/extensions/front/tf/TFSliceToSlice_test.py b/model-optimizer/extensions/front/tf/TFSliceToSlice_test.py index 2919a71bfc47b0..a19fe3192412e4 100644 --- a/model-optimizer/extensions/front/tf/TFSliceToSlice_test.py +++ b/model-optimizer/extensions/front/tf/TFSliceToSlice_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest @@ -32,7 +19,7 @@ # nodes after replacement **const('minus_one', np.array(-1)), - **const('int32_max', np.array(np.iinfo(np.int32).max)), + **regular_op_with_empty_data('shapeof', {'op': 'ShapeOf', 'type': 'ShapeOf'}), **regular_op_with_empty_data('end_const', {'op': 'Add', 'type': 'Add'}), **regular_op_with_empty_data('equal', {'op': 'Equal', 'type': 'Equal'}), **regular_op_with_empty_data('select', {'op': 'Select', 'type': 'Select'}), @@ -57,6 +44,7 @@ def test_slice_replacer_begin_with_2_inputs(self): graph_ref = build_graph(nodes_attrs=nodes, edges=[ *connect_front('input:0', 'slice'), + *connect_front('input:0', 'shapeof'), *connect_front('begin:0', 'slice:1'), *connect_front('begin:0', 'john_doe:1'), @@ -64,7 +52,7 @@ def test_slice_replacer_begin_with_2_inputs(self): *connect_front('size:0', 'end_const:1'), *connect_front('size:0', 'equal:0'), - *connect_front('int32_max:0', 'select:1'), + *connect_front('shapeof:0', 'select:1'), *connect_front('minus_one:0', 'equal:1'), *connect_front('equal:0', 'select:0'), @@ -81,7 +69,7 @@ def test_slice_replacer_begin_with_2_inputs(self): def test_slice_replacer(self): graph = build_graph(nodes_attrs=nodes, edges=[ - *connect_front('input:0', 'tfslice'), + *connect_front('input:0', '0:tfslice'), *connect_front('begin:0', '1:tfslice'), *connect_front('size:0', '2:tfslice'), *connect_front('tfslice:0', 'output'), @@ -92,11 +80,12 @@ def test_slice_replacer(self): graph_ref = build_graph(nodes_attrs=nodes, edges=[ *connect_front('input:0', 'slice'), + *connect_front('input:0', 'shapeof'), *connect_front('begin:0', '1:slice'), *connect_front('begin:0', '0:end_const'), *connect_front('size:0', '1:end_const'), *connect_front('size:0', '0:equal'), - *connect_front('int32_max:0', '1:select'), + *connect_front('shapeof:0', '1:select'), *connect_front('minus_one:0', '1:equal'), *connect_front('equal:0', '0:select'), *connect_front('end_const:0', '0:cast'), diff --git a/model-optimizer/extensions/front/tf/TensorArrayExtractors.py b/model-optimizer/extensions/front/tf/TensorArrayExtractors.py index 5daf322666fa75..67e5246f251efe 100644 --- a/model-optimizer/extensions/front/tf/TensorArrayExtractors.py +++ b/model-optimizer/extensions/front/tf/TensorArrayExtractors.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.TensorArray import TensorArray from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/TensorArrayGatherV3.py b/model-optimizer/extensions/front/tf/TensorArrayGatherV3.py index 6800574bbebdb7..158a681f208510 100644 --- a/model-optimizer/extensions/front/tf/TensorArrayGatherV3.py +++ b/model-optimizer/extensions/front/tf/TensorArrayGatherV3.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.TensorArrayGather import TensorArrayGather from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/UnpackPackReverseInputChannels.py b/model-optimizer/extensions/front/tf/UnpackPackReverseInputChannels.py index 2b14e82548e284..eded7589a2ee09 100644 --- a/model-optimizer/extensions/front/tf/UnpackPackReverseInputChannels.py +++ b/model-optimizer/extensions/front/tf/UnpackPackReverseInputChannels.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.back.ReverseInputChannels import ReverseChannels diff --git a/model-optimizer/extensions/front/tf/WhereDecomposition.py b/model-optimizer/extensions/front/tf/WhereDecomposition.py index a8e513be399f5c..79da519746556a 100644 --- a/model-optimizer/extensions/front/tf/WhereDecomposition.py +++ b/model-optimizer/extensions/front/tf/WhereDecomposition.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/WhereDecomposition_test.py b/model-optimizer/extensions/front/tf/WhereDecomposition_test.py index 432a619771a051..e3ba84140cbf4d 100644 --- a/model-optimizer/extensions/front/tf/WhereDecomposition_test.py +++ b/model-optimizer/extensions/front/tf/WhereDecomposition_test.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/WhileNormalize.py b/model-optimizer/extensions/front/tf/WhileNormalize.py index a5d37216b16fec..f48f7b3d9866a7 100644 --- a/model-optimizer/extensions/front/tf/WhileNormalize.py +++ b/model-optimizer/extensions/front/tf/WhileNormalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/__init__.py b/model-optimizer/extensions/front/tf/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/front/tf/__init__.py +++ b/model-optimizer/extensions/front/tf/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/front/tf/activation_ext.py b/model-optimizer/extensions/front/tf/activation_ext.py index d8a856260b1f7b..3780d77f7f3392 100644 --- a/model-optimizer/extensions/front/tf/activation_ext.py +++ b/model-optimizer/extensions/front/tf/activation_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.activation_ops import Abs, Elu, Erf, Exp, ReLU, LeakyReLU, LogicalNot, ReLU6, Sigmoid, \ Sin, Sinh, Cos, Cosh, Tan, Tanh, Ceiling, Atanh, Acosh, Asinh, Mish, Log from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/argmax_ext.py b/model-optimizer/extensions/front/tf/argmax_ext.py index 47f531bea51f3f..cb308b74c2f8a4 100644 --- a/model-optimizer/extensions/front/tf/argmax_ext.py +++ b/model-optimizer/extensions/front/tf/argmax_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.argmax import ArgMaxOp diff --git a/model-optimizer/extensions/front/tf/assign_elimination.py b/model-optimizer/extensions/front/tf/assign_elimination.py index e251dfda5b9b4f..cccf0c1038590a 100644 --- a/model-optimizer/extensions/front/tf/assign_elimination.py +++ b/model-optimizer/extensions/front/tf/assign_elimination.py @@ -1,83 +1,22 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log -import networkx as nx - -from mo.front.common.replacement import FrontReplacementOp +from mo.front.common.replacement import FrontReplacementPattern from mo.graph.graph import Graph -from mo.utils.error import Error - - -class AssignElimination(FrontReplacementOp): - op = "Assign" - enabled = True - - def replace_sub_graph(self, graph: Graph, match: dict): - node = match['op'] - # here we request all data flow output edges (control flow edges will not be listed) - out_edges = node.out_edges() - if len(out_edges) == 0: - graph.remove_node(node.id) - log.debug('Assign op was removed {}'.format(node.id)) - else: - raise Error('Data flow edge coming out of Assign node {}'.format(node.id)) - - -class AssignSubElimination(FrontReplacementOp): - op = "AssignSub" - enabled = True - - def replace_sub_graph(self, graph: Graph, match: dict): - node = match['op'] - # here we request all data flow output edges (control flow edges will not be listed) - out_edges = node.out_edges() - if len(out_edges) == 0: - graph.remove_node(node.id) - log.debug('AssignSub op was removed {}'.format(node.id)) - else: - raise Error('Data flow edge coming out of AssignSub node {}'.format(node.id)) - - -class AssignAddElimination(FrontReplacementOp): - op = "AssignAdd" - enabled = True - - def replace_sub_graph(self, graph: Graph, match: dict): - node = match['op'] - # here we request all data flow output edges (control flow edges will not be listed) - out_edges = node.out_edges() - if len(out_edges) == 0: - graph.remove_node(node.id) - log.debug('AssignAdd op was removed {}'.format(node.id)) - else: - raise Error('Data flow edge coming out of AssignAdd node {}'.format(node.id)) -class AssertElimination(FrontReplacementOp): - op = "Assert" +class AssignAndAssertElimination(FrontReplacementPattern): + # The solution with removal of Assign and Assert operations is temporary. + # The proper solution is to keep these operations until the partial inference + # phase when control flow edges are properly handled and later unnecessary ones are eliminated. + # In order to achieve this we need to implement control flow inference function + # for these operations similar to "Merge" and "Switch" operations. enabled = True - def replace_sub_graph(self, graph: nx.MultiDiGraph, match: dict): - node = match['op'] - # here we request all data flow output edges (control flow edges will not be listed) - out_edges = node.out_edges() - if len(out_edges) == 0: - graph.remove_node(node.id) - log.debug('Assert op was removed {}'.format(node.id)) - else: - raise Error('Data flow edge coming out of Assert node {}'.format(node.id)) + def find_and_replace_pattern(self, graph: Graph): + for node in graph.get_op_nodes(): + if node.soft_get('op') in ["Assign", "AssignSub", "AssignAdd", "Assert"]: + log.debug('"{}" op with id="{}" was removed'.format(node.op, node.id)) + graph.remove_node(node.id) diff --git a/model-optimizer/extensions/front/tf/automl_efficientdet.json b/model-optimizer/extensions/front/tf/automl_efficientdet.json index 19eb1122f0c0d4..ebf13c68ab0495 100644 --- a/model-optimizer/extensions/front/tf/automl_efficientdet.json +++ b/model-optimizer/extensions/front/tf/automl_efficientdet.json @@ -2,7 +2,7 @@ { "id": "AutomlEfficientDet", "custom_attributes": { - "preprocessing_input_node": "convert_image", + "preprocessing_input_node": "strided_slice_1", "preprocessing_output_node": "truediv", "aspect_ratios": [1.0, 1.0, 1.4, 0.7, 0.7, 1.4], "variance": [1.0, 1.0, 1.0, 1.0], diff --git a/model-optimizer/extensions/front/tf/basic_lstm_cell.py b/model-optimizer/extensions/front/tf/basic_lstm_cell.py index dd6e29bc12cd9a..be8378094f75f8 100644 --- a/model-optimizer/extensions/front/tf/basic_lstm_cell.py +++ b/model-optimizer/extensions/front/tf/basic_lstm_cell.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.split_normalizer import SplitInputsReconnect from extensions.ops.lstm_cell import LSTMCell from mo.front.common.replacement import FrontReplacementSubgraph diff --git a/model-optimizer/extensions/front/tf/batch_to_space_ext.py b/model-optimizer/extensions/front/tf/batch_to_space_ext.py index bc18e759da19e2..fae988a5645859 100644 --- a/model-optimizer/extensions/front/tf/batch_to_space_ext.py +++ b/model-optimizer/extensions/front/tf/batch_to_space_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.space_to_batch import BatchToSpace diff --git a/model-optimizer/extensions/front/tf/broadcast_ext.py b/model-optimizer/extensions/front/tf/broadcast_ext.py new file mode 100644 index 00000000000000..fa9d5b58b3f94e --- /dev/null +++ b/model-optimizer/extensions/front/tf/broadcast_ext.py @@ -0,0 +1,16 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from mo.front.extractor import FrontExtractorOp +from mo.graph.graph import Node +from mo.ops.broadcast import Broadcast + + +class BroadcastExtractor(FrontExtractorOp): + op = 'BroadcastTo' + enabled = True + + @classmethod + def extract(cls, node: Node): + Broadcast.update_node_stat(node, attrs={'mode': 'numpy'}) + return cls.enabled diff --git a/model-optimizer/extensions/front/tf/bucketize.py b/model-optimizer/extensions/front/tf/bucketize.py index 7cea253a564821..18bf645aa2669c 100644 --- a/model-optimizer/extensions/front/tf/bucketize.py +++ b/model-optimizer/extensions/front/tf/bucketize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/bucketize_ext.py b/model-optimizer/extensions/front/tf/bucketize_ext.py index dcd7453f8c14e2..3e651dfaf1ba4b 100644 --- a/model-optimizer/extensions/front/tf/bucketize_ext.py +++ b/model-optimizer/extensions/front/tf/bucketize_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/concat.py b/model-optimizer/extensions/front/tf/concat.py index c57551f98c6b49..401d146072c734 100644 --- a/model-optimizer/extensions/front/tf/concat.py +++ b/model-optimizer/extensions/front/tf/concat.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementSubgraph from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/tf/concat_ext.py b/model-optimizer/extensions/front/tf/concat_ext.py index ef8c8e1be37a49..18c476dad19235 100644 --- a/model-optimizer/extensions/front/tf/concat_ext.py +++ b/model-optimizer/extensions/front/tf/concat_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.concat import Concat diff --git a/model-optimizer/extensions/front/tf/concat_ext_test.py b/model-optimizer/extensions/front/tf/concat_ext_test.py index 9dba3c93c1924f..bda6c35447b3b3 100644 --- a/model-optimizer/extensions/front/tf/concat_ext_test.py +++ b/model-optimizer/extensions/front/tf/concat_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.tf.concat_ext import ConcatFrontExtractor from mo.utils.unittest.extractors import PB, BaseExtractorsTestingClass diff --git a/model-optimizer/extensions/front/tf/concat_test.py b/model-optimizer/extensions/front/tf/concat_test.py index d94e4e4acad4f7..41cee96ca7135a 100644 --- a/model-optimizer/extensions/front/tf/concat_test.py +++ b/model-optimizer/extensions/front/tf/concat_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/const_ext.py b/model-optimizer/extensions/front/tf/const_ext.py index c853994700365d..72cb8d37eddfc6 100644 --- a/model-optimizer/extensions/front/tf/const_ext.py +++ b/model-optimizer/extensions/front/tf/const_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.tf.extractors.utils import tf_dtype_extractor, tf_tensor_shape, tf_tensor_content diff --git a/model-optimizer/extensions/front/tf/conv_ext.py b/model-optimizer/extensions/front/tf/conv_ext.py index 5b89dfb7f57029..1800f0322c7240 100644 --- a/model-optimizer/extensions/front/tf/conv_ext.py +++ b/model-optimizer/extensions/front/tf/conv_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.common.partial_infer.utils import convert_tf_padding_to_str, int64_array diff --git a/model-optimizer/extensions/front/tf/conv_ext_test.py b/model-optimizer/extensions/front/tf/conv_ext_test.py index 85a8a3e9090cb5..230bef5dc67813 100644 --- a/model-optimizer/extensions/front/tf/conv_ext_test.py +++ b/model-optimizer/extensions/front/tf/conv_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/crop_and_resize_ext.py b/model-optimizer/extensions/front/tf/crop_and_resize_ext.py index fe3643761e6b09..2ba6a8903d980b 100644 --- a/model-optimizer/extensions/front/tf/crop_and_resize_ext.py +++ b/model-optimizer/extensions/front/tf/crop_and_resize_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/cumsum_ext.py b/model-optimizer/extensions/front/tf/cumsum_ext.py index 53409e9f27c0c3..5c9e502199c303 100644 --- a/model-optimizer/extensions/front/tf/cumsum_ext.py +++ b/model-optimizer/extensions/front/tf/cumsum_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.cumsum import CumSum from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/deconv_ext.py b/model-optimizer/extensions/front/tf/deconv_ext.py index adae35f269ed09..23c9a93fc3e3f9 100644 --- a/model-optimizer/extensions/front/tf/deconv_ext.py +++ b/model-optimizer/extensions/front/tf/deconv_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import convert_deconv_tf_padding_to_str, int64_array from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/deconv_ext_test.py b/model-optimizer/extensions/front/tf/deconv_ext_test.py index 60a274e8c87018..8b97f0b3f97eb3 100644 --- a/model-optimizer/extensions/front/tf/deconv_ext_test.py +++ b/model-optimizer/extensions/front/tf/deconv_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/depth_to_space.py b/model-optimizer/extensions/front/tf/depth_to_space.py index 2abbe796b403c2..ab6c5731ee6c9d 100644 --- a/model-optimizer/extensions/front/tf/depth_to_space.py +++ b/model-optimizer/extensions/front/tf/depth_to_space.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.depth_to_space import DepthToSpaceOp from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/efficient_det_support_api_v2.4.json b/model-optimizer/extensions/front/tf/efficient_det_support_api_v2.4.json new file mode 100644 index 00000000000000..e1826d8b45fd2b --- /dev/null +++ b/model-optimizer/extensions/front/tf/efficient_det_support_api_v2.4.json @@ -0,0 +1,50 @@ +[ + { + "custom_attributes": { + "start_nodes": ["StatefulPartitionedCall/map/TensorArrayUnstack/TensorListFromTensor"], + "end_nodes": ["StatefulPartitionedCall/map/TensorArrayV2Stack/TensorListStack", + "StatefulPartitionedCall/map/TensorArrayV2Stack_1/TensorListStack"] + }, + "id": "ObjectDetectionAPIPreprocessor2Replacement", + "match_kind": "general" + }, + { + "custom_attributes": { + "code_type": "caffe.PriorBoxParameter.CENTER_SIZE", + "pad_mode": "caffe.ResizeParameter.CONSTANT", + "resize_mode": "caffe.ResizeParameter.WARP", + "clip_before_nms": false, + "clip_after_nms": true, + "disable_prior_boxes_layers_generator": true + }, + "id": "ObjectDetectionAPISSDPostprocessorReplacement", + "include_inputs_to_sub_graph": true, + "include_outputs_to_sub_graph": true, + "instances": { + "end_points": [ + "StatefulPartitionedCall/Identity", + "StatefulPartitionedCall/Identity_1", + "StatefulPartitionedCall/Identity_2", + "StatefulPartitionedCall/Identity_3", + "StatefulPartitionedCall/Identity_4", + "StatefulPartitionedCall/Identity_5", + "StatefulPartitionedCall/Identity_6", + "StatefulPartitionedCall/Identity_7" + ], + "start_points": [ + "StatefulPartitionedCall/Postprocessor/Reshape_1", + "StatefulPartitionedCall/Postprocessor/scale_logits", + "StatefulPartitionedCall/Postprocessor/Tile", + "StatefulPartitionedCall/Postprocessor/Cast_1" + ] + }, + "match_kind": "points" + }, + { + "custom_attributes": { + "outputs": "StatefulPartitionedCall/Identity,StatefulPartitionedCall/Identity_1,StatefulPartitionedCall/Identity_2,StatefulPartitionedCall/Identity_3,StatefulPartitionedCall/Identity_4,StatefulPartitionedCall/Identity_5,StatefulPartitionedCall/Identity_6,StatefulPartitionedCall/Identity_7" + }, + "id": "ObjectDetectionAPIOutputReplacement", + "match_kind": "general" + } +] diff --git a/model-optimizer/extensions/front/tf/elementwise_ext.py b/model-optimizer/extensions/front/tf/elementwise_ext.py index fe453b74bfafdd..bbdddc1b6570d5 100644 --- a/model-optimizer/extensions/front/tf/elementwise_ext.py +++ b/model-optimizer/extensions/front/tf/elementwise_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.elementwise import Add, Mul, Sub, Div, Maximum, Minimum, Pow, LogicalAnd, LogicalOr, Equal, \ GreaterEqual, Greater, Less, LessEqual, NotEqual, FloorMod, BiasAdd, SquaredDifference, Round from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/embedding_segments_sum.py b/model-optimizer/extensions/front/tf/embedding_segments_sum.py index b033ae7cd2cbbe..c38276a3bd5d78 100644 --- a/model-optimizer/extensions/front/tf/embedding_segments_sum.py +++ b/model-optimizer/extensions/front/tf/embedding_segments_sum.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/tf/embedding_segments_sum_test.py b/model-optimizer/extensions/front/tf/embedding_segments_sum_test.py index daed2c76b9e8a0..1b41e033dc27aa 100644 --- a/model-optimizer/extensions/front/tf/embedding_segments_sum_test.py +++ b/model-optimizer/extensions/front/tf/embedding_segments_sum_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/expand_dims_ext.py b/model-optimizer/extensions/front/tf/expand_dims_ext.py index ebd300aed2172e..65a2856f2a02ec 100644 --- a/model-optimizer/extensions/front/tf/expand_dims_ext.py +++ b/model-optimizer/extensions/front/tf/expand_dims_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/tf/extract_image_patches_ext.py b/model-optimizer/extensions/front/tf/extract_image_patches_ext.py index 14ec62b06a3599..7ebcc118fb708f 100644 --- a/model-optimizer/extensions/front/tf/extract_image_patches_ext.py +++ b/model-optimizer/extensions/front/tf/extract_image_patches_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.ExtractImagePatches import ExtractImagePatches from mo.front.common.partial_infer.utils import convert_tf_padding_to_str diff --git a/model-optimizer/extensions/front/tf/fake_const_ext.py b/model-optimizer/extensions/front/tf/fake_const_ext.py index ed63e272477305..ba32c4c065fdd1 100644 --- a/model-optimizer/extensions/front/tf/fake_const_ext.py +++ b/model-optimizer/extensions/front/tf/fake_const_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/tf/faster_rcnn_support_api_v2.4.json b/model-optimizer/extensions/front/tf/faster_rcnn_support_api_v2.4.json new file mode 100644 index 00000000000000..abaec0accf6636 --- /dev/null +++ b/model-optimizer/extensions/front/tf/faster_rcnn_support_api_v2.4.json @@ -0,0 +1,82 @@ +[ + { + "custom_attributes": { + "start_nodes": ["StatefulPartitionedCall/map/TensorArrayUnstack/TensorListFromTensor"], + "end_nodes": ["StatefulPartitionedCall/map/TensorArrayV2Stack/TensorListStack", + "StatefulPartitionedCall/map/TensorArrayV2Stack_1/TensorListStack"] + }, + "id": "ObjectDetectionAPIPreprocessor2Replacement", + "match_kind": "general" + }, + { + "custom_attributes": { + "clip_before_nms": false, + "clip_after_nms": true + }, + "id": "ObjectDetectionAPIProposalReplacement", + "include_inputs_to_sub_graph": true, + "include_outputs_to_sub_graph": true, + "instances": { + "end_points": [ + "StatefulPartitionedCall/stack_3", + "StatefulPartitionedCall/BatchMultiClassNonMaxSuppression/stack_10", + "StatefulPartitionedCall/Shape" + ], + "start_points": [ + "StatefulPartitionedCall/concat/concat", + "StatefulPartitionedCall/concat_1/concat", + "StatefulPartitionedCall/GridAnchorGenerator/Identity", + "StatefulPartitionedCall/Cast_1", + "StatefulPartitionedCall/Cast_2", + "StatefulPartitionedCall/Shape" + ] + }, + "match_kind": "points" + }, + { + "custom_attributes": { + "clip_before_nms": false, + "clip_after_nms": true, + "background_label_id": 0, + "coordinates_swap_method": "swap_weights" + }, + "id": "ObjectDetectionAPIDetectionOutputReplacement", + "inputs": [ + [ + { + "node": "Reshape$", + "port": 0 + } + ], + [ + { + "node": "Reshape_1$", + "port": 0 + } + ], + [ + { + "node": "ExpandDims$", + "port": 0 + } + ] + ], + "instances": [ + ".*SecondStagePostprocessor/" + ], + "match_kind": "scope", + "outputs": [ + { + "node": "Cast_3$", + "port": 0 + } + ] + }, + { + "custom_attributes": { + "outputs": "StatefulPartitionedCall/SecondStagePostprocessor/Cast_3" + }, + "id": "ObjectDetectionAPIOutputReplacement", + "match_kind": "general" + } +] diff --git a/model-optimizer/extensions/front/tf/fifo_queue_v2_ext.py b/model-optimizer/extensions/front/tf/fifo_queue_v2_ext.py index 243cf4766116c7..a136b1c93e1bbd 100644 --- a/model-optimizer/extensions/front/tf/fifo_queue_v2_ext.py +++ b/model-optimizer/extensions/front/tf/fifo_queue_v2_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/fifo_replacer.py b/model-optimizer/extensions/front/tf/fifo_replacer.py index 12aa4c8460b857..762747980c4f3e 100644 --- a/model-optimizer/extensions/front/tf/fifo_replacer.py +++ b/model-optimizer/extensions/front/tf/fifo_replacer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/tf/fifo_replacer_test.py b/model-optimizer/extensions/front/tf/fifo_replacer_test.py index e4a6099c320b24..d3b639f154188c 100644 --- a/model-optimizer/extensions/front/tf/fifo_replacer_test.py +++ b/model-optimizer/extensions/front/tf/fifo_replacer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/fill_ext.py b/model-optimizer/extensions/front/tf/fill_ext.py index 784a0f732b1016..c5f6c6087ccc92 100644 --- a/model-optimizer/extensions/front/tf/fill_ext.py +++ b/model-optimizer/extensions/front/tf/fill_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.fill import Fill diff --git a/model-optimizer/extensions/front/tf/floor_div_decomposition.py b/model-optimizer/extensions/front/tf/floor_div_decomposition.py index aab8e2c1809fe5..2f3c5bd3759a61 100644 --- a/model-optimizer/extensions/front/tf/floor_div_decomposition.py +++ b/model-optimizer/extensions/front/tf/floor_div_decomposition.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Floor from extensions.ops.elementwise import Div diff --git a/model-optimizer/extensions/front/tf/floor_div_test.py b/model-optimizer/extensions/front/tf/floor_div_test.py index db4160bf391968..57a48d4c194484 100644 --- a/model-optimizer/extensions/front/tf/floor_div_test.py +++ b/model-optimizer/extensions/front/tf/floor_div_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/floor_ext.py b/model-optimizer/extensions/front/tf/floor_ext.py index 0da6685ae3e36f..d201232810b2ae 100644 --- a/model-optimizer/extensions/front/tf/floor_ext.py +++ b/model-optimizer/extensions/front/tf/floor_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Floor from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/gather_ext.py b/model-optimizer/extensions/front/tf/gather_ext.py index 374e6a78cb0ce4..8af73b1550272c 100644 --- a/model-optimizer/extensions/front/tf/gather_ext.py +++ b/model-optimizer/extensions/front/tf/gather_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.gather import Gather, AttributedGather from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/gathernd_ext.py b/model-optimizer/extensions/front/tf/gathernd_ext.py index 24c1a44020443d..c11ee0d92f5709 100644 --- a/model-optimizer/extensions/front/tf/gathernd_ext.py +++ b/model-optimizer/extensions/front/tf/gathernd_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.gathernd import GatherND from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/identityN_to_identity.py b/model-optimizer/extensions/front/tf/identityN_to_identity.py index 7578ef97d8d8da..7876cc72f3960b 100644 --- a/model-optimizer/extensions/front/tf/identityN_to_identity.py +++ b/model-optimizer/extensions/front/tf/identityN_to_identity.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.identity import Identity from mo.front.common.replacement import FrontReplacementPattern diff --git a/model-optimizer/extensions/front/tf/identityN_to_identity_test.py b/model-optimizer/extensions/front/tf/identityN_to_identity_test.py index 71571d7783a8cf..f05fbf46ac3226 100644 --- a/model-optimizer/extensions/front/tf/identityN_to_identity_test.py +++ b/model-optimizer/extensions/front/tf/identityN_to_identity_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/identity_ext.py b/model-optimizer/extensions/front/tf/identity_ext.py index bdd91587539ef4..ceaf5aa4c86cc6 100644 --- a/model-optimizer/extensions/front/tf/identity_ext.py +++ b/model-optimizer/extensions/front/tf/identity_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.identity import Identity, IdentityN from mo.front.extractor import FrontExtractorOp from mo.front.tf.extractors.utils import tf_dtype_extractor diff --git a/model-optimizer/extensions/front/tf/log_softmax_ext.py b/model-optimizer/extensions/front/tf/log_softmax_ext.py index 64c6e839b139aa..88459fd979a0a7 100644 --- a/model-optimizer/extensions/front/tf/log_softmax_ext.py +++ b/model-optimizer/extensions/front/tf/log_softmax_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.log_softmax import LogSoftmax diff --git a/model-optimizer/extensions/front/tf/lrn_ext.py b/model-optimizer/extensions/front/tf/lrn_ext.py index 08277b057fb201..1b33e0f8eccb61 100644 --- a/model-optimizer/extensions/front/tf/lrn_ext.py +++ b/model-optimizer/extensions/front/tf/lrn_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.ops.lrn import AttributedLRN diff --git a/model-optimizer/extensions/front/tf/mask_rcnn_support_api_v2.4.json b/model-optimizer/extensions/front/tf/mask_rcnn_support_api_v2.4.json new file mode 100644 index 00000000000000..359f962c74f44e --- /dev/null +++ b/model-optimizer/extensions/front/tf/mask_rcnn_support_api_v2.4.json @@ -0,0 +1,91 @@ +[ + { + "custom_attributes": { + "start_nodes": ["StatefulPartitionedCall/map/TensorArrayUnstack/TensorListFromTensor"], + "end_nodes": ["StatefulPartitionedCall/map/TensorArrayV2Stack/TensorListStack", + "StatefulPartitionedCall/map/TensorArrayV2Stack_1/TensorListStack"] + }, + "id": "ObjectDetectionAPIPreprocessor2Replacement", + "match_kind": "general" + }, + { + "custom_attributes": { + "clip_before_nms": false, + "clip_after_nms": true + }, + "id": "ObjectDetectionAPIProposalReplacement", + "include_inputs_to_sub_graph": true, + "include_outputs_to_sub_graph": true, + "instances": { + "end_points": [ + "StatefulPartitionedCall/stack_3", + "StatefulPartitionedCall/BatchMultiClassNonMaxSuppression/stack_10", + "StatefulPartitionedCall/Shape" + ], + "start_points": [ + "StatefulPartitionedCall/concat/concat", + "StatefulPartitionedCall/concat_1/concat", + "StatefulPartitionedCall/GridAnchorGenerator/Identity", + "StatefulPartitionedCall/Cast_1", + "StatefulPartitionedCall/Cast_2", + "StatefulPartitionedCall/Shape" + ] + }, + "match_kind": "points" + }, + { + "custom_attributes": { + "clip_before_nms": false, + "clip_after_nms": true, + "background_label_id": 0, + "coordinates_swap_method": "swap_weights" + }, + "id": "ObjectDetectionAPIDetectionOutputReplacement", + "include_inputs_to_sub_graph": true, + "include_outputs_to_sub_graph": true, + "instances": { + "end_points": [ + "StatefulPartitionedCall/BatchMultiClassNonMaxSuppression_1/stack_8", + "StatefulPartitionedCall/BatchMultiClassNonMaxSuppression_1/stack_6" + ], + "start_points": [ + "StatefulPartitionedCall/Reshape_4", + "StatefulPartitionedCall/Reshape_5", + "StatefulPartitionedCall/ExpandDims_6", + "StatefulPartitionedCall/Cast_5" + ] + }, + "match_kind": "points" + }, + { + "custom_attributes": { + }, + "id": "ObjectDetectionAPIMaskRCNNROIPoolingSecondReplacement", + "include_inputs_to_sub_graph": true, + "include_outputs_to_sub_graph": true, + "instances": { + "end_points": [ + "StatefulPartitionedCall/Reshape_10" + ], + "start_points": [ + "StatefulPartitionedCall/CropAndResize_1/CropAndResize", + "StatefulPartitionedCall/CropAndResize_1/Reshape" + ] + }, + "match_kind": "points" + }, + { + "custom_attributes": { + "masks_node_prefix_name": "StatefulPartitionedCall/mask_rcnn_keras_box_predictor/mask_rcnn_mask_head/" + }, + "id": "ObjectDetectionAPIMaskRCNNSigmoidReplacement", + "match_kind": "general" + }, + { + "custom_attributes": { + "outputs": "StatefulPartitionedCall/mask_rcnn_keras_box_predictor/mask_rcnn_mask_head/MaskPredictor_last_conv2d/BiasAdd,StatefulPartitionedCall/Reshape_13" + }, + "id": "ObjectDetectionAPIOutputReplacement", + "match_kind": "general" + } +] diff --git a/model-optimizer/extensions/front/tf/matmul_ext.py b/model-optimizer/extensions/front/tf/matmul_ext.py index 11970af998cab9..80a1da52839eb3 100644 --- a/model-optimizer/extensions/front/tf/matmul_ext.py +++ b/model-optimizer/extensions/front/tf/matmul_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.MatMul import MatMul from mo.front.extractor import FrontExtractorOp from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/tf/mvn.py b/model-optimizer/extensions/front/tf/mvn.py index 003d23939d498d..4c4a4afed0a5fc 100644 --- a/model-optimizer/extensions/front/tf/mvn.py +++ b/model-optimizer/extensions/front/tf/mvn.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/mvn_unrolled.py b/model-optimizer/extensions/front/tf/mvn_unrolled.py index 78229f991d8cb0..092eae1fbacd8b 100644 --- a/model-optimizer/extensions/front/tf/mvn_unrolled.py +++ b/model-optimizer/extensions/front/tf/mvn_unrolled.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/mvn_unrolled_test.py b/model-optimizer/extensions/front/tf/mvn_unrolled_test.py index 265b54e0489152..28df8ae474ee07 100644 --- a/model-optimizer/extensions/front/tf/mvn_unrolled_test.py +++ b/model-optimizer/extensions/front/tf/mvn_unrolled_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.front.tf.mvn_unrolled import MVNUnrolled diff --git a/model-optimizer/extensions/front/tf/nearest_neighbor_upsampling.py b/model-optimizer/extensions/front/tf/nearest_neighbor_upsampling.py index e605b8e7e9146d..d5b238d56e0da7 100644 --- a/model-optimizer/extensions/front/tf/nearest_neighbor_upsampling.py +++ b/model-optimizer/extensions/front/tf/nearest_neighbor_upsampling.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/next_iteration_ext.py b/model-optimizer/extensions/front/tf/next_iteration_ext.py index 0fc2591ae04ace..0e7ebb55f44d0e 100644 --- a/model-optimizer/extensions/front/tf/next_iteration_ext.py +++ b/model-optimizer/extensions/front/tf/next_iteration_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/next_iteration_ext_test.py b/model-optimizer/extensions/front/tf/next_iteration_ext_test.py index f80055b3ebc744..eaf5f06c52ceb7 100644 --- a/model-optimizer/extensions/front/tf/next_iteration_ext_test.py +++ b/model-optimizer/extensions/front/tf/next_iteration_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.front.tf.next_iteration_ext import NextIterationExtractor from mo.utils.unittest.extractors import PB, BaseExtractorsTestingClass diff --git a/model-optimizer/extensions/front/tf/non_max_suppression_ext.py b/model-optimizer/extensions/front/tf/non_max_suppression_ext.py index f56b5bafc58551..4bbb4b46fb3ce7 100644 --- a/model-optimizer/extensions/front/tf/non_max_suppression_ext.py +++ b/model-optimizer/extensions/front/tf/non_max_suppression_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/front/tf/non_max_suppression_normalize.py b/model-optimizer/extensions/front/tf/non_max_suppression_normalize.py index 81e4b0718246c3..537389095f1fb8 100644 --- a/model-optimizer/extensions/front/tf/non_max_suppression_normalize.py +++ b/model-optimizer/extensions/front/tf/non_max_suppression_normalize.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/tf/noop.py b/model-optimizer/extensions/front/tf/noop.py index ae758d50c2a4e8..86aae635c50a7a 100644 --- a/model-optimizer/extensions/front/tf/noop.py +++ b/model-optimizer/extensions/front/tf/noop.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/one_hot_ext.py b/model-optimizer/extensions/front/tf/one_hot_ext.py index 1875e8230dbbb1..4d25cb2af2e5ed 100644 --- a/model-optimizer/extensions/front/tf/one_hot_ext.py +++ b/model-optimizer/extensions/front/tf/one_hot_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/pad_ext.py b/model-optimizer/extensions/front/tf/pad_ext.py index cd344186f96e29..d51e1a4a8e4a36 100644 --- a/model-optimizer/extensions/front/tf/pad_ext.py +++ b/model-optimizer/extensions/front/tf/pad_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.pad import TFPad diff --git a/model-optimizer/extensions/front/tf/pad_tf_to_pad.py b/model-optimizer/extensions/front/tf/pad_tf_to_pad.py index 087199e5763196..b773a6e9514f86 100644 --- a/model-optimizer/extensions/front/tf/pad_tf_to_pad.py +++ b/model-optimizer/extensions/front/tf/pad_tf_to_pad.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.split import Split from extensions.ops.transpose import Transpose from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/front/tf/pad_tf_to_pad_test.py b/model-optimizer/extensions/front/tf/pad_tf_to_pad_test.py index 1515ba9bac49d2..ea017d17e9ae59 100644 --- a/model-optimizer/extensions/front/tf/pad_tf_to_pad_test.py +++ b/model-optimizer/extensions/front/tf/pad_tf_to_pad_test.py @@ -1,25 +1,12 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np from extensions.front.tf.pad_tf_to_pad import PadTFToPad -from mo.front.common.partial_infer.utils import int64_array +from mo.front.common.partial_infer.utils import int64_array, float_array from mo.utils.ir_engine.compare_graphs import compare_graphs from mo.utils.unittest.graph import build_graph, const @@ -27,7 +14,7 @@ 'placeholder': {'shape': None, 'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, 'tfpad': {'type': None, 'kind': 'op', 'op': 'TFPad', 'mode': 'constant', 'name': 'tfpad_name'}, **const('paddings', int64_array([1, 2, 3, 4, 5, 6]).reshape([3, 2])), - **const('fill', int64_array(5.75)), + **const('fill', float_array(5.75)), 'result': {'type': 'Result', 'value': None, 'kind': 'op', 'op': 'Result'}, # new Pad layer and sub-graph diff --git a/model-optimizer/extensions/front/tf/placeholder_ext.py b/model-optimizer/extensions/front/tf/placeholder_ext.py index fdec574295a7c0..534ed34951bd89 100644 --- a/model-optimizer/extensions/front/tf/placeholder_ext.py +++ b/model-optimizer/extensions/front/tf/placeholder_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.parameter import Parameter from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/placeholder_with_default_ext.py b/model-optimizer/extensions/front/tf/placeholder_with_default_ext.py index 35965b13badb3f..ec42fcb5efa028 100644 --- a/model-optimizer/extensions/front/tf/placeholder_with_default_ext.py +++ b/model-optimizer/extensions/front/tf/placeholder_with_default_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.elemental import copy_shape_infer, copy_value from mo.front.extractor import FrontExtractorOp from mo.front.tf.extractors.utils import tf_dtype_extractor, tf_tensor_shape diff --git a/model-optimizer/extensions/front/tf/pooling_ext.py b/model-optimizer/extensions/front/tf/pooling_ext.py index dcc34f35ab2a63..4badd36ede6ce7 100644 --- a/model-optimizer/extensions/front/tf/pooling_ext.py +++ b/model-optimizer/extensions/front/tf/pooling_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import convert_tf_padding_to_str from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/prelu.py b/model-optimizer/extensions/front/tf/prelu.py index 02f134e34e1a0a..a5ae263a03aea1 100644 --- a/model-optimizer/extensions/front/tf/prelu.py +++ b/model-optimizer/extensions/front/tf/prelu.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/range_ext.py b/model-optimizer/extensions/front/tf/range_ext.py index 5d3fa4f2b35744..138a03094fdc85 100644 --- a/model-optimizer/extensions/front/tf/range_ext.py +++ b/model-optimizer/extensions/front/tf/range_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.range import Range from mo.front.extractor import FrontExtractorOp from mo.front.tf.extractors.utils import tf_dtype_extractor diff --git a/model-optimizer/extensions/front/tf/reduce_ext.py b/model-optimizer/extensions/front/tf/reduce_ext.py index c593fcd7884066..5ebff5ba6eb9f4 100644 --- a/model-optimizer/extensions/front/tf/reduce_ext.py +++ b/model-optimizer/extensions/front/tf/reduce_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.ReduceOps import ReduceProd, ReduceAnd, ReduceMax, ReduceMean, ReduceSum, ReduceL2 from mo.front.extractor import FrontExtractorOp from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/tf/reshape_related_ext.py b/model-optimizer/extensions/front/tf/reshape_related_ext.py index 51632d2f962aa6..d9e8bdec00468c 100644 --- a/model-optimizer/extensions/front/tf/reshape_related_ext.py +++ b/model-optimizer/extensions/front/tf/reshape_related_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.rank import Rank diff --git a/model-optimizer/extensions/front/tf/resize_bilinear.py b/model-optimizer/extensions/front/tf/resize_bilinear.py index 1ba2b17ec8d344..73a2884223072b 100644 --- a/model-optimizer/extensions/front/tf/resize_bilinear.py +++ b/model-optimizer/extensions/front/tf/resize_bilinear.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.TFResize import TFResize from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/resize_nearest_neighbor.py b/model-optimizer/extensions/front/tf/resize_nearest_neighbor.py index 327744e2a7ea94..3c98dcd03ae09d 100644 --- a/model-optimizer/extensions/front/tf/resize_nearest_neighbor.py +++ b/model-optimizer/extensions/front/tf/resize_nearest_neighbor.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.TFResize import TFResize from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/reverse_sequence.py b/model-optimizer/extensions/front/tf/reverse_sequence.py index d73a28e866fd00..56368ef4b78c74 100644 --- a/model-optimizer/extensions/front/tf/reverse_sequence.py +++ b/model-optimizer/extensions/front/tf/reverse_sequence.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.reverse_sequence import ReverseSequence from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/reverse_v2.py b/model-optimizer/extensions/front/tf/reverse_v2.py index 07359ec6ba53df..4bab756f29a6a9 100644 --- a/model-optimizer/extensions/front/tf/reverse_v2.py +++ b/model-optimizer/extensions/front/tf/reverse_v2.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.Reverse import Reverse from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/select_ext.py b/model-optimizer/extensions/front/tf/select_ext.py index 32a38a66f51394..4a2436a8f21306 100644 --- a/model-optimizer/extensions/front/tf/select_ext.py +++ b/model-optimizer/extensions/front/tf/select_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.select import Select from mo.front.extractor import FrontExtractorOp from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/tf/sign_ext.py b/model-optimizer/extensions/front/tf/sign_ext.py index f63511a07f51ab..150facbda2ea28 100644 --- a/model-optimizer/extensions/front/tf/sign_ext.py +++ b/model-optimizer/extensions/front/tf/sign_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import Sign from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/size_replacer_test.py b/model-optimizer/extensions/front/tf/size_replacer_test.py index 03daf1a266651f..446bc20f1e9351 100644 --- a/model-optimizer/extensions/front/tf/size_replacer_test.py +++ b/model-optimizer/extensions/front/tf/size_replacer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/slice_ext.py b/model-optimizer/extensions/front/tf/slice_ext.py index 335b8fe33c954d..a052f67c756317 100644 --- a/model-optimizer/extensions/front/tf/slice_ext.py +++ b/model-optimizer/extensions/front/tf/slice_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/tf/softmax_ext.py b/model-optimizer/extensions/front/tf/softmax_ext.py index fc4461abce77ed..17c431dbb24332 100644 --- a/model-optimizer/extensions/front/tf/softmax_ext.py +++ b/model-optimizer/extensions/front/tf/softmax_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.softmax import Softmax diff --git a/model-optimizer/extensions/front/tf/softplus_ext.py b/model-optimizer/extensions/front/tf/softplus_ext.py index 798728e76adbfc..43830342a70c8e 100644 --- a/model-optimizer/extensions/front/tf/softplus_ext.py +++ b/model-optimizer/extensions/front/tf/softplus_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from extensions.ops.activation_ops import SoftPlus diff --git a/model-optimizer/extensions/front/tf/space_to_batch.py b/model-optimizer/extensions/front/tf/space_to_batch.py index 1b2df6472b2f28..c3333642d4f686 100644 --- a/model-optimizer/extensions/front/tf/space_to_batch.py +++ b/model-optimizer/extensions/front/tf/space_to_batch.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.Cast import Cast diff --git a/model-optimizer/extensions/front/tf/space_to_batch_ext.py b/model-optimizer/extensions/front/tf/space_to_batch_ext.py index 7747fc3c844717..7a2cf873928c47 100644 --- a/model-optimizer/extensions/front/tf/space_to_batch_ext.py +++ b/model-optimizer/extensions/front/tf/space_to_batch_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.space_to_batch import SpaceToBatch diff --git a/model-optimizer/extensions/front/tf/space_to_depth_ext.py b/model-optimizer/extensions/front/tf/space_to_depth_ext.py index efee2b4c9fc3e0..4fe3a45c4f4dee 100644 --- a/model-optimizer/extensions/front/tf/space_to_depth_ext.py +++ b/model-optimizer/extensions/front/tf/space_to_depth_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.space_to_depth import SpaceToDepth from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/sparse_fill_empty_rows_ext.py b/model-optimizer/extensions/front/tf/sparse_fill_empty_rows_ext.py index 5edff71a5d6fd7..a9e2a941513d17 100644 --- a/model-optimizer/extensions/front/tf/sparse_fill_empty_rows_ext.py +++ b/model-optimizer/extensions/front/tf/sparse_fill_empty_rows_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.sparse_fill_empty_rows import SparseFillEmptyRows from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/sparse_segment_mean_ext.py b/model-optimizer/extensions/front/tf/sparse_segment_mean_ext.py index d2a656df27bfc6..a71842618b1f01 100644 --- a/model-optimizer/extensions/front/tf/sparse_segment_mean_ext.py +++ b/model-optimizer/extensions/front/tf/sparse_segment_mean_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.sparse_segment_mean import SparseSegmentMean from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/sparse_segment_sqrtn_ext.py b/model-optimizer/extensions/front/tf/sparse_segment_sqrtn_ext.py index b0137d1f556aaa..385ad19dc45721 100644 --- a/model-optimizer/extensions/front/tf/sparse_segment_sqrtn_ext.py +++ b/model-optimizer/extensions/front/tf/sparse_segment_sqrtn_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.sparse_segment_sqrtn import SparseSegmentSqrtN from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/sparse_segment_sum_ext.py b/model-optimizer/extensions/front/tf/sparse_segment_sum_ext.py index 33a2e36228f497..4c512623a92f17 100644 --- a/model-optimizer/extensions/front/tf/sparse_segment_sum_ext.py +++ b/model-optimizer/extensions/front/tf/sparse_segment_sum_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.sparse_segment_sum import SparseSegmentSum from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/sparse_to_dense_replacer.py b/model-optimizer/extensions/front/tf/sparse_to_dense_replacer.py index de51c706585c64..1440b150696a94 100644 --- a/model-optimizer/extensions/front/tf/sparse_to_dense_replacer.py +++ b/model-optimizer/extensions/front/tf/sparse_to_dense_replacer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/front/tf/sparse_to_dense_replacer_test.py b/model-optimizer/extensions/front/tf/sparse_to_dense_replacer_test.py index 12464e92be758c..b1ac8426c7fffd 100644 --- a/model-optimizer/extensions/front/tf/sparse_to_dense_replacer_test.py +++ b/model-optimizer/extensions/front/tf/sparse_to_dense_replacer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/front/tf/split_ext.py b/model-optimizer/extensions/front/tf/split_ext.py index d73771e5f34063..d44971a0b3219e 100644 --- a/model-optimizer/extensions/front/tf/split_ext.py +++ b/model-optimizer/extensions/front/tf/split_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.split import VariadicSplit, Split, AttributedSplit from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/ssd_support_api_v2.0.json b/model-optimizer/extensions/front/tf/ssd_support_api_v2.0.json index f1333461f9d0b3..8c62fdd3340e77 100644 --- a/model-optimizer/extensions/front/tf/ssd_support_api_v2.0.json +++ b/model-optimizer/extensions/front/tf/ssd_support_api_v2.0.json @@ -2,8 +2,7 @@ { "custom_attributes": { "start_nodes": ["StatefulPartitionedCall/Preprocessor/unstack"], - "end_nodes": ["StatefulPartitionedCall/Preprocessor/stack", - "StatefulPartitionedCall/Preprocessor/stack_1"] + "end_nodes": ["StatefulPartitionedCall/Preprocessor/stack"] }, "id": "ObjectDetectionAPIPreprocessor2Replacement", "match_kind": "general" diff --git a/model-optimizer/extensions/front/tf/ssd_support_api_v2.4.json b/model-optimizer/extensions/front/tf/ssd_support_api_v2.4.json new file mode 100644 index 00000000000000..e1826d8b45fd2b --- /dev/null +++ b/model-optimizer/extensions/front/tf/ssd_support_api_v2.4.json @@ -0,0 +1,50 @@ +[ + { + "custom_attributes": { + "start_nodes": ["StatefulPartitionedCall/map/TensorArrayUnstack/TensorListFromTensor"], + "end_nodes": ["StatefulPartitionedCall/map/TensorArrayV2Stack/TensorListStack", + "StatefulPartitionedCall/map/TensorArrayV2Stack_1/TensorListStack"] + }, + "id": "ObjectDetectionAPIPreprocessor2Replacement", + "match_kind": "general" + }, + { + "custom_attributes": { + "code_type": "caffe.PriorBoxParameter.CENTER_SIZE", + "pad_mode": "caffe.ResizeParameter.CONSTANT", + "resize_mode": "caffe.ResizeParameter.WARP", + "clip_before_nms": false, + "clip_after_nms": true, + "disable_prior_boxes_layers_generator": true + }, + "id": "ObjectDetectionAPISSDPostprocessorReplacement", + "include_inputs_to_sub_graph": true, + "include_outputs_to_sub_graph": true, + "instances": { + "end_points": [ + "StatefulPartitionedCall/Identity", + "StatefulPartitionedCall/Identity_1", + "StatefulPartitionedCall/Identity_2", + "StatefulPartitionedCall/Identity_3", + "StatefulPartitionedCall/Identity_4", + "StatefulPartitionedCall/Identity_5", + "StatefulPartitionedCall/Identity_6", + "StatefulPartitionedCall/Identity_7" + ], + "start_points": [ + "StatefulPartitionedCall/Postprocessor/Reshape_1", + "StatefulPartitionedCall/Postprocessor/scale_logits", + "StatefulPartitionedCall/Postprocessor/Tile", + "StatefulPartitionedCall/Postprocessor/Cast_1" + ] + }, + "match_kind": "points" + }, + { + "custom_attributes": { + "outputs": "StatefulPartitionedCall/Identity,StatefulPartitionedCall/Identity_1,StatefulPartitionedCall/Identity_2,StatefulPartitionedCall/Identity_3,StatefulPartitionedCall/Identity_4,StatefulPartitionedCall/Identity_5,StatefulPartitionedCall/Identity_6,StatefulPartitionedCall/Identity_7" + }, + "id": "ObjectDetectionAPIOutputReplacement", + "match_kind": "general" + } +] diff --git a/model-optimizer/extensions/front/tf/swap_deconv_inputs.py b/model-optimizer/extensions/front/tf/swap_deconv_inputs.py index a5c7c7496e5380..0d194685340232 100644 --- a/model-optimizer/extensions/front/tf/swap_deconv_inputs.py +++ b/model-optimizer/extensions/front/tf/swap_deconv_inputs.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementSubgraph from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/tf/swish_ext.py b/model-optimizer/extensions/front/tf/swish_ext.py index 97008775999b71..8e757d0b986277 100644 --- a/model-optimizer/extensions/front/tf/swish_ext.py +++ b/model-optimizer/extensions/front/tf/swish_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.activation_ops import Swish from mo.front.extractor import FrontExtractorOp from mo.graph.graph import Node diff --git a/model-optimizer/extensions/front/tf/tensorflow_custom_operations_config_update.py b/model-optimizer/extensions/front/tf/tensorflow_custom_operations_config_update.py index d76a6d761f93e9..ecc0c9ebbcbaa7 100644 --- a/model-optimizer/extensions/front/tf/tensorflow_custom_operations_config_update.py +++ b/model-optimizer/extensions/front/tf/tensorflow_custom_operations_config_update.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import json from mo.front.common.replacement import FrontReplacementPattern diff --git a/model-optimizer/extensions/front/tf/tile_ext.py b/model-optimizer/extensions/front/tf/tile_ext.py index ac06c6afd5a451..128e4bebfaf840 100644 --- a/model-optimizer/extensions/front/tf/tile_ext.py +++ b/model-optimizer/extensions/front/tf/tile_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.ops.tile import Tile diff --git a/model-optimizer/extensions/front/tf/topk_ext.py b/model-optimizer/extensions/front/tf/topk_ext.py index 7c338b8594d239..f6ce033626a418 100644 --- a/model-optimizer/extensions/front/tf/topk_ext.py +++ b/model-optimizer/extensions/front/tf/topk_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.topk import TopK diff --git a/model-optimizer/extensions/front/tf/transpose_ext.py b/model-optimizer/extensions/front/tf/transpose_ext.py index a09f0e1fba4dc6..876b433180b696 100644 --- a/model-optimizer/extensions/front/tf/transpose_ext.py +++ b/model-optimizer/extensions/front/tf/transpose_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.transpose import Transpose from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/transposed_mvn_unrolled.py b/model-optimizer/extensions/front/tf/transposed_mvn_unrolled.py index 6f7c895169fc38..9fcb88630b4214 100644 --- a/model-optimizer/extensions/front/tf/transposed_mvn_unrolled.py +++ b/model-optimizer/extensions/front/tf/transposed_mvn_unrolled.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/front/tf/unique_ext.py b/model-optimizer/extensions/front/tf/unique_ext.py index 75f1d5bddca265..eb6551fff764b2 100644 --- a/model-optimizer/extensions/front/tf/unique_ext.py +++ b/model-optimizer/extensions/front/tf/unique_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.unique import Unique from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/extensions/front/tf/variable_ext.py b/model-optimizer/extensions/front/tf/variable_ext.py index e0a173d69e1617..2e0b7351119f30 100644 --- a/model-optimizer/extensions/front/tf/variable_ext.py +++ b/model-optimizer/extensions/front/tf/variable_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.ops.op import Op diff --git a/model-optimizer/extensions/front/tf/variables_values_freezing.py b/model-optimizer/extensions/front/tf/variables_values_freezing.py index 719ab4e3adbb7e..d1fab151414908 100644 --- a/model-optimizer/extensions/front/tf/variables_values_freezing.py +++ b/model-optimizer/extensions/front/tf/variables_values_freezing.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.front.tf.loader import variables_to_constants from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/front/tf/while_ext.py b/model-optimizer/extensions/front/tf/while_ext.py index bb29379e05c24b..eb33a4e5f75037 100644 --- a/model-optimizer/extensions/front/tf/while_ext.py +++ b/model-optimizer/extensions/front/tf/while_ext.py @@ -1,25 +1,13 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import copy from extensions.ops.loop import Loop from extensions.ops.parameter import Parameter from mo.front.common.register_custom_ops import check_for_duplicates from mo.front.extractor import extract_node_attrs, FrontExtractorOp -from mo.front.tf.extractor import tf_op_extractor, tf_op_extractors +from mo.front.tf.extractor import tf_op_extractor, tf_op_extractors, create_tf_edge from mo.front.tf.extractors.utils import tf_dtype_extractor from mo.graph.graph import add_opoutput, Graph, Node from mo.ops.op import PermuteAttrs @@ -51,19 +39,17 @@ def update_body_graph(body_graph: Graph, subgraph_proto: dict, # add incoming edges based on data_nodes_map for dst_port, inp in enumerate(pb_node.input): orig_src_id = inp.split(":")[0] + + # TODO: avoid this temporal workaround for TF 2.4 or higher RNN layers: + # skip control flow dependency + if orig_src_id[0] == '^': + continue + src_id = map_original_name[orig_src_id] src_port = 0 if len(inp.split(":")) == 1 else int(inp.split(":")[-1]) assert (body_graph.has_node(src_id)) - edge_attrs = { - 'out': src_port, - 'in': dst_port, - 'name': src_id, - 'fw_tensor_debug_info': [(src_id, src_port)], - 'in_attrs': ['in', 'name'], - 'out_attrs': ['out', 'name'], - 'data_attrs': ['fw_tensor_debug_info'] - } - body_graph.add_edge(src_id, id, **edge_attrs) + + body_graph.add_edges_from([create_tf_edge(src_id + ":" + str(src_port), id, dst_port)]) # create Result nodes in the loop body graph for output in subgraph_proto['output_arg']: diff --git a/model-optimizer/extensions/front/transformations_config.py b/model-optimizer/extensions/front/transformations_config.py index 823627525b4d31..0aa2ad5fb070be 100644 --- a/model-optimizer/extensions/front/transformations_config.py +++ b/model-optimizer/extensions/front/transformations_config.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.custom_replacement_registry import CustomReplacementRegistry from mo.front.common.replacement import FrontReplacementPattern from mo.front.tf.replacement import FrontReplacementFromConfigFileOp @@ -21,6 +9,9 @@ class TransformationsConfig(FrontReplacementPattern): enabled = True + # do not run this transformation recursively otherwise transformations which are enabled with a configuration file + # will be registered multiple times + run_not_recursively = True graph_condition = [lambda graph: graph.graph['cmd_params'].transformations_config is not None] def run_before(self): diff --git a/model-optimizer/extensions/front/user_data_repack.py b/model-optimizer/extensions/front/user_data_repack.py index a2f6a72f856ebc..556010a19838d7 100644 --- a/model-optimizer/extensions/front/user_data_repack.py +++ b/model-optimizer/extensions/front/user_data_repack.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementPattern from mo.front.extractor import user_data_repack from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/load/__init__.py b/model-optimizer/extensions/load/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/load/__init__.py +++ b/model-optimizer/extensions/load/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/load/caffe/__init__.py b/model-optimizer/extensions/load/caffe/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/load/caffe/__init__.py +++ b/model-optimizer/extensions/load/caffe/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/load/caffe/loader.py b/model-optimizer/extensions/load/caffe/loader.py index b9c978255c5644..9ca6c213665084 100644 --- a/model-optimizer/extensions/load/caffe/loader.py +++ b/model-optimizer/extensions/load/caffe/loader.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.load.loader import Loader from mo.front.caffe import custom_layers_mapping, loader diff --git a/model-optimizer/extensions/load/kaldi/__init__.py b/model-optimizer/extensions/load/kaldi/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/load/kaldi/__init__.py +++ b/model-optimizer/extensions/load/kaldi/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/load/kaldi/loader.py b/model-optimizer/extensions/load/kaldi/loader.py index d6a118ba922b72..60ce0c706303e5 100644 --- a/model-optimizer/extensions/load/kaldi/loader.py +++ b/model-optimizer/extensions/load/kaldi/loader.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.load.loader import Loader from mo.front.common.register_custom_ops import update_extractors_with_extensions from mo.front.extractor import extract_node_attrs diff --git a/model-optimizer/extensions/load/loader.py b/model-optimizer/extensions/load/loader.py index e406041b1dfb2b..aa1b3eb15e68e9 100644 --- a/model-optimizer/extensions/load/loader.py +++ b/model-optimizer/extensions/load/loader.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.utils import class_registration diff --git a/model-optimizer/extensions/load/mxnet/__init__.py b/model-optimizer/extensions/load/mxnet/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/load/mxnet/__init__.py +++ b/model-optimizer/extensions/load/mxnet/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/load/mxnet/loader.py b/model-optimizer/extensions/load/mxnet/loader.py index c524213e1cb2bc..e5fef61bad3243 100644 --- a/model-optimizer/extensions/load/mxnet/loader.py +++ b/model-optimizer/extensions/load/mxnet/loader.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.error import FrameworkError, Error from mo.utils.utils import refer_to_faq_msg diff --git a/model-optimizer/extensions/load/onnx/__init__.py b/model-optimizer/extensions/load/onnx/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/load/onnx/__init__.py +++ b/model-optimizer/extensions/load/onnx/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/load/onnx/loader.py b/model-optimizer/extensions/load/onnx/loader.py index b18bc54414239a..6a65717de7215f 100644 --- a/model-optimizer/extensions/load/onnx/loader.py +++ b/model-optimizer/extensions/load/onnx/loader.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from __future__ import absolute_import from __future__ import division from __future__ import print_function diff --git a/model-optimizer/extensions/load/tf/__init__.py b/model-optimizer/extensions/load/tf/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/load/tf/__init__.py +++ b/model-optimizer/extensions/load/tf/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/load/tf/loader.py b/model-optimizer/extensions/load/tf/loader.py index b1e219f6429044..4ae484bb04891b 100644 --- a/model-optimizer/extensions/load/tf/loader.py +++ b/model-optimizer/extensions/load/tf/loader.py @@ -1,21 +1,9 @@ -""" - Copyright (C) 2020-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 try: import tensorflow.compat.v1 as tf_v1 + # disable eager execution of TensorFlow 2 environment immediately tf_v1.disable_eager_execution() except ImportError: @@ -31,8 +19,8 @@ from extensions.load.loader import Loader from mo.front.common.register_custom_ops import check_for_duplicates from mo.front.common.register_custom_ops import update_extractors_with_extensions -from mo.front.extractor import restore_edges, extract_node_attrs, remove_control_dependency_inputs -from mo.front.tf.extractor import get_tf_edges, tf_op_extractor, tf_op_extractors +from mo.front.extractor import restore_edges, extract_node_attrs, remove_control_dependency_inputs, add_outputs_identity +from mo.front.tf.extractor import get_tf_edges, create_tf_edge, tf_op_extractor, tf_op_extractors from mo.front.tf.loader import load_tf_graph_def, protobuf2nx from mo.graph.graph import Graph from mo.utils import tensorboard_util @@ -96,7 +84,16 @@ def load(self, graph: Graph): graph.graph['variables_values'] = variables_values del variables_values - restore_edges(graph, get_tf_edges) + used_tensors = restore_edges(graph, get_tf_edges) + + # Tensor names information corresponding to a node is stored on outgoing edges. + # As output nodes do not have outgoing edges, fake outputs are required. In the following code + # for each output Identity node is added, and tensor name for the output is kept + # on (output, fake output) edge. After Result nodes adding transformation fake outputs + # are deleted from graph. + add_outputs_identity(graph, graph.nodes - used_tensors, lambda g, output, fake_node_name: g.add_edges_from([ + create_tf_edge(output, fake_node_name, 0)])) + remove_control_dependency_inputs(graph) graph.check_empty_graph('protobuf2nx. It may happen due to problems with loaded model') diff --git a/model-optimizer/extensions/middle/AddFakeQuantizeFuse.py b/model-optimizer/extensions/middle/AddFakeQuantizeFuse.py index d59b779582d7c5..4fd5b70390d061 100644 --- a/model-optimizer/extensions/middle/AddFakeQuantizeFuse.py +++ b/model-optimizer/extensions/middle/AddFakeQuantizeFuse.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from typing import Dict diff --git a/model-optimizer/extensions/middle/AddIsCyclicAttribute.py b/model-optimizer/extensions/middle/AddIsCyclicAttribute.py index f6458697d31647..6bea6d49a4e85a 100644 --- a/model-optimizer/extensions/middle/AddIsCyclicAttribute.py +++ b/model-optimizer/extensions/middle/AddIsCyclicAttribute.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import networkx as nx diff --git a/model-optimizer/extensions/middle/AddIsCyclicAttribute_test.py b/model-optimizer/extensions/middle/AddIsCyclicAttribute_test.py index d60c930c4e486f..865ed9e5841f04 100644 --- a/model-optimizer/extensions/middle/AddIsCyclicAttribute_test.py +++ b/model-optimizer/extensions/middle/AddIsCyclicAttribute_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/AddMeanScaleValues.py b/model-optimizer/extensions/middle/AddMeanScaleValues.py index 4cc5596b359e53..a9585bd4ebda0a 100644 --- a/model-optimizer/extensions/middle/AddMeanScaleValues.py +++ b/model-optimizer/extensions/middle/AddMeanScaleValues.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/middle/AddMeanScaleValues_test.py b/model-optimizer/extensions/middle/AddMeanScaleValues_test.py index 1bee346b398325..a73f55e107481c 100644 --- a/model-optimizer/extensions/middle/AddMeanScaleValues_test.py +++ b/model-optimizer/extensions/middle/AddMeanScaleValues_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from argparse import Namespace diff --git a/model-optimizer/extensions/middle/ApplyNHWCtoNCHWpermutation.py b/model-optimizer/extensions/middle/ApplyNHWCtoNCHWpermutation.py index 5d3561ed739904..4cabc88b7bf546 100644 --- a/model-optimizer/extensions/middle/ApplyNHWCtoNCHWpermutation.py +++ b/model-optimizer/extensions/middle/ApplyNHWCtoNCHWpermutation.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.middle.LayoutChangeForConstantShapePaths import LayoutChangeForConstantShapePaths from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/ApplyPermutations.py b/model-optimizer/extensions/middle/ApplyPermutations.py index 874845c28b4992..9564ad5967971c 100644 --- a/model-optimizer/extensions/middle/ApplyPermutations.py +++ b/model-optimizer/extensions/middle/ApplyPermutations.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/middle/ArgMaxToTopK.py b/model-optimizer/extensions/middle/ArgMaxToTopK.py index 149c44d618a0a7..2a3b9dd73cdd0f 100644 --- a/model-optimizer/extensions/middle/ArgMaxToTopK.py +++ b/model-optimizer/extensions/middle/ArgMaxToTopK.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.topk import TopK from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/middle/AttributedTileNormalizer.py b/model-optimizer/extensions/middle/AttributedTileNormalizer.py index 2bb0569a188c74..3c9f81c41a5510 100644 --- a/model-optimizer/extensions/middle/AttributedTileNormalizer.py +++ b/model-optimizer/extensions/middle/AttributedTileNormalizer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/BiasAddBroadcasting.py b/model-optimizer/extensions/middle/BiasAddBroadcasting.py index 8d7803f623c729..b461e93ee4ced1 100644 --- a/model-optimizer/extensions/middle/BiasAddBroadcasting.py +++ b/model-optimizer/extensions/middle/BiasAddBroadcasting.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.middle.EltwiseChecker import EltwiseChecker diff --git a/model-optimizer/extensions/middle/BinarizeWeightsM1P1.py b/model-optimizer/extensions/middle/BinarizeWeightsM1P1.py index 881b6b2d2b8102..7d5974c65a64e5 100644 --- a/model-optimizer/extensions/middle/BinarizeWeightsM1P1.py +++ b/model-optimizer/extensions/middle/BinarizeWeightsM1P1.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/BlockLSTMtoLSTMSequence.py b/model-optimizer/extensions/middle/BlockLSTMtoLSTMSequence.py index 25e11a7c463cd5..cf53ac3622292b 100644 --- a/model-optimizer/extensions/middle/BlockLSTMtoLSTMSequence.py +++ b/model-optimizer/extensions/middle/BlockLSTMtoLSTMSequence.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.LSTM import LSTM diff --git a/model-optimizer/extensions/middle/CheckForCycle.py b/model-optimizer/extensions/middle/CheckForCycle.py index b24f53d0b3ac45..6894e323b9af06 100644 --- a/model-optimizer/extensions/middle/CheckForCycle.py +++ b/model-optimizer/extensions/middle/CheckForCycle.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import networkx as nx diff --git a/model-optimizer/extensions/middle/CheckForCycle_test.py b/model-optimizer/extensions/middle/CheckForCycle_test.py index 3ca65a65c97760..d9c2e2a043eb1c 100644 --- a/model-optimizer/extensions/middle/CheckForCycle_test.py +++ b/model-optimizer/extensions/middle/CheckForCycle_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/ConcatOptimization.py b/model-optimizer/extensions/middle/ConcatOptimization.py index 1e3a8753512048..aba6d5312e5395 100644 --- a/model-optimizer/extensions/middle/ConcatOptimization.py +++ b/model-optimizer/extensions/middle/ConcatOptimization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/ConcatOptimization_test.py b/model-optimizer/extensions/middle/ConcatOptimization_test.py index 713627240f8334..b2211c5fb03261 100644 --- a/model-optimizer/extensions/middle/ConcatOptimization_test.py +++ b/model-optimizer/extensions/middle/ConcatOptimization_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.ConcatOptimization import ConcatOdInputEraserAndPortsReconnect diff --git a/model-optimizer/extensions/middle/ConstSwitchResolver.py b/model-optimizer/extensions/middle/ConstSwitchResolver.py index 8705f03a445efe..1a68ebd7a4a883 100644 --- a/model-optimizer/extensions/middle/ConstSwitchResolver.py +++ b/model-optimizer/extensions/middle/ConstSwitchResolver.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.middle.passes.eliminate import remove_op_node_with_data_node diff --git a/model-optimizer/extensions/middle/ConvToBinaryConv.py b/model-optimizer/extensions/middle/ConvToBinaryConv.py index 526a777ec9171d..bfd54218f3ff24 100644 --- a/model-optimizer/extensions/middle/ConvToBinaryConv.py +++ b/model-optimizer/extensions/middle/ConvToBinaryConv.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/ConvertGroupedStridedSlice.py b/model-optimizer/extensions/middle/ConvertGroupedStridedSlice.py index 9672230e15ccbf..b6ad3a295e95f9 100644 --- a/model-optimizer/extensions/middle/ConvertGroupedStridedSlice.py +++ b/model-optimizer/extensions/middle/ConvertGroupedStridedSlice.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from copy import deepcopy diff --git a/model-optimizer/extensions/middle/ConvertGroupedStridedSlice_test.py b/model-optimizer/extensions/middle/ConvertGroupedStridedSlice_test.py index 7aa86002d3e6cb..0b36ff77839494 100644 --- a/model-optimizer/extensions/middle/ConvertGroupedStridedSlice_test.py +++ b/model-optimizer/extensions/middle/ConvertGroupedStridedSlice_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/ConvertLayoutDependentOperations.py b/model-optimizer/extensions/middle/ConvertLayoutDependentOperations.py index 8ff5ab0752739f..38d2abd71b7683 100644 --- a/model-optimizer/extensions/middle/ConvertLayoutDependentOperations.py +++ b/model-optimizer/extensions/middle/ConvertLayoutDependentOperations.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.transpose import Transpose from mo.front.common.layout import indices_mapping from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/middle/ConvertMultiInputConv.py b/model-optimizer/extensions/middle/ConvertMultiInputConv.py index c68ddb0566909f..7561126439a16b 100644 --- a/model-optimizer/extensions/middle/ConvertMultiInputConv.py +++ b/model-optimizer/extensions/middle/ConvertMultiInputConv.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import copy diff --git a/model-optimizer/extensions/middle/CustomSubgraphCall.py b/model-optimizer/extensions/middle/CustomSubgraphCall.py index 5595df87f485a3..10cff6fc7f41dd 100644 --- a/model-optimizer/extensions/middle/CustomSubgraphCall.py +++ b/model-optimizer/extensions/middle/CustomSubgraphCall.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import copy import logging as log diff --git a/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat.py b/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat.py index c485b25e9a3a89..1fda46725b4d1d 100644 --- a/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat.py +++ b/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2019-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat_test.py b/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat_test.py index c3493d73d4d89d..ea008ff61a68ef 100644 --- a/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat_test.py +++ b/model-optimizer/extensions/middle/CutInputHavingZeroDimFromConcat_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/DecomposeBias.py b/model-optimizer/extensions/middle/DecomposeBias.py index 57623772a0bc4d..315460f5f36eae 100644 --- a/model-optimizer/extensions/middle/DecomposeBias.py +++ b/model-optimizer/extensions/middle/DecomposeBias.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/DecomposeBidirectionalRNNSequence.py b/model-optimizer/extensions/middle/DecomposeBidirectionalRNNSequence.py index c081d5f34be8a1..094ed402f2b95e 100644 --- a/model-optimizer/extensions/middle/DecomposeBidirectionalRNNSequence.py +++ b/model-optimizer/extensions/middle/DecomposeBidirectionalRNNSequence.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.split import Split diff --git a/model-optimizer/extensions/middle/Deconvolution3rdInputNormalization.py b/model-optimizer/extensions/middle/Deconvolution3rdInputNormalization.py index 892d878e410d2c..b8ba55d6b4578c 100644 --- a/model-optimizer/extensions/middle/Deconvolution3rdInputNormalization.py +++ b/model-optimizer/extensions/middle/Deconvolution3rdInputNormalization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.gather import Gather from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/middle/DeleteControlFlowEdges.py b/model-optimizer/extensions/middle/DeleteControlFlowEdges.py index 89597919f7d949..8ecab7029d6b40 100644 --- a/model-optimizer/extensions/middle/DeleteControlFlowEdges.py +++ b/model-optimizer/extensions/middle/DeleteControlFlowEdges.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/DeleteNotExecutable.py b/model-optimizer/extensions/middle/DeleteNotExecutable.py index a90a9821bebd22..df752b00c6962a 100644 --- a/model-optimizer/extensions/middle/DeleteNotExecutable.py +++ b/model-optimizer/extensions/middle/DeleteNotExecutable.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/DilatedConvolution.py b/model-optimizer/extensions/middle/DilatedConvolution.py index da45a2fc70dd88..1409d7a760118f 100644 --- a/model-optimizer/extensions/middle/DilatedConvolution.py +++ b/model-optimizer/extensions/middle/DilatedConvolution.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/middle/EltwiseChecker.py b/model-optimizer/extensions/middle/EltwiseChecker.py index b42941aa0327cc..c9ab5672c43a3f 100644 --- a/model-optimizer/extensions/middle/EltwiseChecker.py +++ b/model-optimizer/extensions/middle/EltwiseChecker.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/EltwiseInputReshape.py b/model-optimizer/extensions/middle/EltwiseInputReshape.py index 84b40d7a70164e..2032cfc7b462f3 100644 --- a/model-optimizer/extensions/middle/EltwiseInputReshape.py +++ b/model-optimizer/extensions/middle/EltwiseInputReshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/EltwiseInputReshape_test.py b/model-optimizer/extensions/middle/EltwiseInputReshape_test.py index ce45b463aacec1..9f451a4324705d 100644 --- a/model-optimizer/extensions/middle/EltwiseInputReshape_test.py +++ b/model-optimizer/extensions/middle/EltwiseInputReshape_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/FakeSplitOutputs.py b/model-optimizer/extensions/middle/FakeSplitOutputs.py index 6e13a94946b634..da943974f0b6dd 100644 --- a/model-optimizer/extensions/middle/FakeSplitOutputs.py +++ b/model-optimizer/extensions/middle/FakeSplitOutputs.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.middle.TensorIteratorMerge import TensorIteratorMerge from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/FakeSplitOutputs_test.py b/model-optimizer/extensions/middle/FakeSplitOutputs_test.py index d24e30ec229d74..2c2e4e58ce2da5 100644 --- a/model-optimizer/extensions/middle/FakeSplitOutputs_test.py +++ b/model-optimizer/extensions/middle/FakeSplitOutputs_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/FuseReshapesSequence.py b/model-optimizer/extensions/middle/FuseReshapesSequence.py index 933f23b82d0b93..8dcdcebd45a587 100644 --- a/model-optimizer/extensions/middle/FuseReshapesSequence.py +++ b/model-optimizer/extensions/middle/FuseReshapesSequence.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.middle.pass_separator import PostMiddleStart, MiddleFinish diff --git a/model-optimizer/extensions/middle/FusedBatchNormNonConstant.py b/model-optimizer/extensions/middle/FusedBatchNormNonConstant.py index 3993d7a91d09b2..171b4f867782b9 100644 --- a/model-optimizer/extensions/middle/FusedBatchNormNonConstant.py +++ b/model-optimizer/extensions/middle/FusedBatchNormNonConstant.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.elementwise import Mul, Add, Pow diff --git a/model-optimizer/extensions/middle/FusedBatchNormTraining.py b/model-optimizer/extensions/middle/FusedBatchNormTraining.py index 586c38a38927fa..e693c2d0b451e9 100644 --- a/model-optimizer/extensions/middle/FusedBatchNormTraining.py +++ b/model-optimizer/extensions/middle/FusedBatchNormTraining.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/FusedBatchNormTraining_test.py b/model-optimizer/extensions/middle/FusedBatchNormTraining_test.py index 9f5c52bbca3181..23c56554eef6bd 100644 --- a/model-optimizer/extensions/middle/FusedBatchNormTraining_test.py +++ b/model-optimizer/extensions/middle/FusedBatchNormTraining_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/GRURNNSequenceToTensorIterator.py b/model-optimizer/extensions/middle/GRURNNSequenceToTensorIterator.py index 1e2bf92d75c889..7e22f2a1d1b3cd 100644 --- a/model-optimizer/extensions/middle/GRURNNSequenceToTensorIterator.py +++ b/model-optimizer/extensions/middle/GRURNNSequenceToTensorIterator.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.tensor_iterator import TensorIterator diff --git a/model-optimizer/extensions/middle/GatherNdNormalizer.py b/model-optimizer/extensions/middle/GatherNdNormalizer.py index 0a973ad29b9d77..d15a6adf0b63f2 100644 --- a/model-optimizer/extensions/middle/GatherNdNormalizer.py +++ b/model-optimizer/extensions/middle/GatherNdNormalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/middle/GroupNorm.py b/model-optimizer/extensions/middle/GroupNorm.py index 7cf7c9f130de4f..079c4a64fd6e1a 100644 --- a/model-optimizer/extensions/middle/GroupNorm.py +++ b/model-optimizer/extensions/middle/GroupNorm.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from typing import Dict @@ -123,12 +110,12 @@ def replace_pattern(self, graph: Graph, match: Dict[str, Node]): mvn_node.in_port(0).connect(reshape_for_mvn_node.out_port(0)) # MVN axes - _, rank = get_shape_and_rank_nodes_by_port(mvn_node.in_port(0), return_as_a_scalar=True) + _, rank = get_shape_and_rank_nodes_by_port(mvn_node.in_port(0).get_connection().get_source(), + return_as_a_scalar=True) rng = create_op_with_const_inputs(graph, Range, {0: int64_array(1), 2: int64_array(1)}, {'name': group_norm_node.name + '/Range', 'output_type': np.int64}) mvn_node.in_port(1).connect(rng.out_port(0)) rng.in_port(1).connect(rank.out_port(0)) - mvn_node.in_port(0).get_connection().add_destination(rank.in_port(0)) # reshape to the initial shape before multiplying with gamma and adding beta reshape_to_initial_shape_node = Reshape(graph, {}).create_node() diff --git a/model-optimizer/extensions/middle/GroupNorm_test.py b/model-optimizer/extensions/middle/GroupNorm_test.py new file mode 100644 index 00000000000000..00e3fd2ded9a28 --- /dev/null +++ b/model-optimizer/extensions/middle/GroupNorm_test.py @@ -0,0 +1,115 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +from extensions.middle.GroupNorm import GroupNormToMVN +from mo.front.common.partial_infer.utils import float_array, int64_array +from mo.utils.ir_engine.compare_graphs import compare_graphs +from mo.utils.unittest.graph import build_graph, result, build_graph_with_edge_attrs, connect, \ + regular_op_with_shaped_data, valued_const_with_data, connect_data + +shape = int64_array([1, 3, 5, 2]) +nodes = {**regular_op_with_shaped_data('input', shape, {'type': 'Parameter', 'op': 'Parameter'}), + **valued_const_with_data('gamma', float_array([0.5])), + **valued_const_with_data('beta', float_array([0.5])), + **regular_op_with_shaped_data('group_norm', shape, + {'op': 'GroupNorm', 'name': 'group_norm', 'num_groups': 3, 'eps': 1e-9}), + **result('result') + } + +edges = [*connect('input:0', '0:group_norm'), + *connect('gamma', '1:group_norm'), + *connect('beta', '2:group_norm'), + *connect('group_norm:0', 'result'), + ] + +ref_nodes = {**regular_op_with_shaped_data('input', shape, {'type': 'Parameter', 'op': 'Parameter'}), + **regular_op_with_shaped_data('shape1', int64_array([4]), {'op': 'ShapeOf'}), + **regular_op_with_shaped_data('shape2', int64_array([4]), {'op': 'ShapeOf'}), + **regular_op_with_shaped_data('shape3', int64_array([1]), {'op': 'ShapeOf'}), + **regular_op_with_shaped_data('hcast1', int64_array([4]), {'op': 'Cast'}), + **regular_op_with_shaped_data('cast2', int64_array([2]), {'op': 'Cast'}), + **regular_op_with_shaped_data('cast3', int64_array([4]), {'op': 'Cast'}), + **regular_op_with_shaped_data('gather1', int64_array([2]), {'op': 'Gather'}), + **regular_op_with_shaped_data('gather2', int64_array([1]), {'op': 'Gather'}), + **regular_op_with_shaped_data('gather3', int64_array([1]), {'op': 'Gather'}), + **regular_op_with_shaped_data('mul1', int64_array([1]), {'op': 'Mul'}), + **regular_op_with_shaped_data('mul2', int64_array([1]), {'op': 'Mul'}), + **regular_op_with_shaped_data('mul3', shape, {'op': 'Mul'}), + **regular_op_with_shaped_data('concat', int64_array([4]), {'op': 'Concat'}), + **regular_op_with_shaped_data('reshape1', int64_array([3, 1, 5, 2]), {'op': 'Reshape'}), + **regular_op_with_shaped_data('reshape2', shape, {'op': 'Reshape'}), + **regular_op_with_shaped_data('squeeze', int64_array([]), {'op': 'Squeeze'}), + **regular_op_with_shaped_data('range', int64_array([3]), {'op': 'Range'}), + **regular_op_with_shaped_data('mvn', int64_array([3, 1, 5, 2]), {'op': 'MVN'}), + **regular_op_with_shaped_data('add', shape, {'op': 'Add'}), + **valued_const_with_data('shape/axis1', int64_array(0)), + **valued_const_with_data('shape/ind1', int64_array([2, 3])), + **valued_const_with_data('shape/axis2', int64_array(0)), + **valued_const_with_data('shape/ind2', int64_array([0])), + **valued_const_with_data('shape/axis3', int64_array(0)), + **valued_const_with_data('shape/ind3', int64_array([1])), + **valued_const_with_data('gn/rec', float_array([1./3])), + **valued_const_with_data('group', int64_array([3])), + **valued_const_with_data('squeeze/axis', int64_array([0])), + **valued_const_with_data('range/start', int64_array(1)), + **valued_const_with_data('range/step', int64_array(1)), + **valued_const_with_data('gamma', float_array([[[[0.5]]]])), + **valued_const_with_data('beta', float_array([[[[0.5]]]])), + **result('result') + } +ref_edges = [*connect('input', '0:reshape1'), + *connect('input', 'shape1', skip_data=True), + *connect('shape1:0', '0:gather1'), + *connect('shape1:0', 'hcast1', skip_data=True), + *connect('shape/ind1', '1:gather1'), + *connect('shape/axis1', '2:gather1'), + *connect('gather1', 'cast2'), + *connect('hcast1', '0:gather3'), + *connect('hcast1', '0:gather2', skip_data=True), + *connect('shape/ind2', '1:gather2'), + *connect('shape/axis2', '2:gather2'), + *connect('gather2', '0:mul2'), + *connect('group', '1:mul2'), + *connect('shape/ind3', '1:gather3'), + *connect('shape/axis3', '2:gather3'), + *connect('gather3', '0:mul1'), + *connect('gn/rec', '1:mul1'), + *connect('mul2', '0:concat'), + *connect('mul1', '1:concat'), + *connect('cast2', '2:concat'), + *connect('concat', 'cast3'), + *connect('cast3', '1:reshape1'), + *connect('reshape1', 'shape2'), + *connect('shape2', 'shape3'), + *connect('shape3', '0:squeeze'), + *connect('squeeze/axis', '1:squeeze'), + *connect('range/start', '0:range'), + *connect('squeeze', '1:range'), + *connect('range/step', '2:range'), + *connect('reshape1', '0:mvn', skip_data=True), + *connect('range', '1:mvn'), + *connect('mvn', '0:reshape2'), + *connect('shape1:0', '1:reshape2', skip_data=True), + *connect('reshape2', '0:mul3'), + *connect('gamma', '1:mul3'), + *connect('mul3', '0:add'), + *connect('beta', '1:add'), + *connect('add', 'result') + ] + + +class GroupNormToMVNTest(unittest.TestCase): + def test_group_norm_1(self): + graph = build_graph(nodes, edges) + + graph_ref = build_graph(ref_nodes, ref_edges) + + graph.graph['layout'] = 'NCHW' + + GroupNormToMVN().find_and_replace_pattern(graph) + graph.clean_up() + + (flag, resp) = compare_graphs(graph, graph_ref, 'result') + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/middle/InputCut.py b/model-optimizer/extensions/middle/InputCut.py index 63cbc925647039..f96d1d53fd6d0d 100644 --- a/model-optimizer/extensions/middle/InputCut.py +++ b/model-optimizer/extensions/middle/InputCut.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import add_input_ops from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/InsertLayoutPropagationTransposes.py b/model-optimizer/extensions/middle/InsertLayoutPropagationTransposes.py index 50ec7b5972b35a..489be45bba39c0 100644 --- a/model-optimizer/extensions/middle/InsertLayoutPropagationTransposes.py +++ b/model-optimizer/extensions/middle/InsertLayoutPropagationTransposes.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.middle.pass_separator import PostMiddleStart from extensions.ops.transpose import Transpose diff --git a/model-optimizer/extensions/middle/InsertSelect.py b/model-optimizer/extensions/middle/InsertSelect.py index 6654fd3aac5da2..737b7469dbfca7 100644 --- a/model-optimizer/extensions/middle/InsertSelect.py +++ b/model-optimizer/extensions/middle/InsertSelect.py @@ -1,21 +1,9 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np -from extensions.front.kaldi.replace_lstm_node_pattern import create_zero_value_with_batch_from_input +from extensions.middle.MakeKaldiConstReshapable import create_const_with_batch_from_input from extensions.ops.elementwise import Equal from extensions.ops.select import Select from mo.front.common.partial_infer.utils import int64_array @@ -24,7 +12,6 @@ from mo.middle.replacement import MiddleReplacementPattern from mo.ops.assign import Assign from mo.ops.concat import Concat -from mo.ops.const import Const from mo.ops.crop import Crop from mo.ops.read_value import ReadValue from mo.ops.result import Result @@ -91,7 +78,7 @@ def replace_pattern(graph: Graph, match: dict): # add Select before saving state to avoid saving garbage select_node = Select(graph, {'name': 'select_' + node.name}).create_node() - zero_else = Const(graph, {'name': 'zero_else', 'value': np.zeros(in_node_shape)}).create_node() + zero_else = create_const_with_batch_from_input(in_node_port, in_node_shape[1]) select_node.in_port(1).connect(in_node_port) select_node.in_port(2).connect(zero_else.out_port(0)) @@ -126,14 +113,14 @@ def replace_pattern(graph: Graph, match: dict): ones = Node(graph, inverse_dict(counter_match)['const_1']) input_port = Node(graph, inverse_dict(counter_match)['crop_out']).out_port(0) else: - init_value_mem_out = create_zero_value_with_batch_from_input(in_node_port, context_len, np.int32) + init_value_mem_out = create_const_with_batch_from_input(in_node_port, context_len, precision=np.int32) mem_out = ReadValue(graph, {'name': 'iteration_number', 'variable_id': 'iteration_'+node.name}).create_node() mem_out.in_port(0).connect(init_value_mem_out.out_port(0)) cut_first = Crop(graph, {'name': 'cut_first', 'axis': int64_array([1]), 'offset': int64_array([1]), 'dim': int64_array([context_len-1])}).create_node() cut_first.in_port(0).connect(mem_out.out_port(0)) - ones = Const(graph, {'name': 'ones', 'value': np.ones([1, 1], dtype=np.int32)}).create_node() + ones = create_const_with_batch_from_input(in_node_port, 1, 1, np.int32) concat = Concat(graph, {'name': 'concat_ones', 'in_ports_count': 2, 'axis': 1}).create_node() concat.in_port(0).connect(cut_first.out_port(0)) concat.in_port(1).connect(ones.out_port(0)) diff --git a/model-optimizer/extensions/middle/InsertSelect_test.py b/model-optimizer/extensions/middle/InsertSelect_test.py index dbfa9d2fd4c460..db783576de9ab5 100644 --- a/model-optimizer/extensions/middle/InsertSelect_test.py +++ b/model-optimizer/extensions/middle/InsertSelect_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np @@ -27,12 +15,12 @@ class InsertSelectTests(unittest.TestCase): # graph have no splices - selects should not be inserted def test_insert_select_0(self): - graph = build_graph({'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'placeholder_1': {'kind': 'op', 'op': None}, + graph = build_graph({ + 'placeholder_1': {'kind': 'op', 'op': 'Parameter'}, 'placeholder_data_1': {'kind': 'data', 'shape': [1, 13]}, 'memory': {'kind': 'op', 'op': 'Assign'}, }, - [('in_node', 'placeholder_1'), ('placeholder_1', 'placeholder_data_1'), + [('placeholder_1', 'placeholder_data_1'), ('placeholder_data_1', 'memory') ], nodes_with_edges_only=True) @@ -44,8 +32,8 @@ def test_insert_select_0(self): # graph contains 1 splice with context length 5, should be inserted select with memory as counter with length 5 def test_insert_select_1(self): - graph = build_graph({'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'placeholder_1': {'kind': 'op', 'op': None}, + graph = build_graph({ + 'placeholder_1': {'kind': 'op', 'op': 'Parameter'}, 'placeholder_data_1': {'kind': 'data', 'shape': [1, 13]}, 'splice_1': {'kind': 'op', 'op': 'Splice', 'context': np.array([-2, -1, 0, 1, 2])}, 'splice_data_1': {'kind': 'data', 'shape': [1, 13]}, @@ -53,35 +41,53 @@ def test_insert_select_1(self): 'placeholder_data_2': {'kind': 'data', 'shape': [1, 26]}, 'memory': {'kind': 'op', 'op': 'Assign', 'index': 0}, }, - [('in_node', 'placeholder_1'), ('placeholder_1', 'placeholder_data_1'), + [('placeholder_1', 'placeholder_data_1'), ('placeholder_data_1', 'splice_1'), ('splice_1', 'splice_data_1'), ('splice_data_1', 'placeholder_2'), ('placeholder_2', 'placeholder_data_2'), ('placeholder_data_2', 'memory') ], nodes_with_edges_only=True) AddSelectBeforeMemoryNodePattern().find_and_replace_pattern(graph) - ref_graph = build_graph({'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'placeholder_1': {'kind': 'op', 'op': None}, + ref_graph = build_graph({ + 'placeholder_1': {'kind': 'op', 'op': 'Parameter'}, 'placeholder_data_1': {'kind': 'data', 'shape': [1, 13]}, 'splice_1': {'kind': 'op', 'op': 'Splice', 'context': np.array([-2, -1, 0, 1, 2])}, 'splice_data_1': {'kind': 'data', 'shape': [1, 13]}, 'placeholder_2': {'kind': 'op', 'op': None}, + 'second_dim_mem_1': {'kind': 'op', 'op': 'Const', 'value': int64_array([5])}, + 'second_dim_data_mem_1': {'kind': 'data'}, + 'gather_shape_mem_1': {'kind': 'op', 'op': 'Concat'}, + 'gather_shape_data_mem_1': {'kind': 'data'}, + 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data': {'kind': 'data'}, + 'broadcast_mem_1': {'kind': 'op', 'op': 'Broadcast'}, + 'broadcast_data_mem_1': {'kind': 'data'}, + 'shape': {'kind': 'op', 'op': 'ShapeOf'}, 'shape_data': {'kind': 'data'}, 'crop_batch': {'kind': 'op', 'op': 'Crop', 'offset': int64_array([0])}, 'crop_batch_data': {'kind': 'data'}, - 'crop_batch_dim':{'kind': 'op', 'op': 'Const', 'value': int64_array([1])}, + 'crop_batch_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([1])}, 'crop_batch_dim_data': {'kind': 'data'}, 'second_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([5])}, 'second_dim_data': {'kind': 'data'}, 'gather_shape': {'kind': 'op', 'op': 'Concat'}, 'gather_shape_data': {'kind': 'data'}, - 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, - 'fill_value_data': {'kind': 'data'}, + 'fill_value_ones': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data_ones': {'kind': 'data'}, 'broadcast': {'kind': 'op', 'op': 'Broadcast'}, 'broadcast_data': {'kind': 'data'}, + 'second_dim_mem_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([26])}, + 'second_dim_data_mem_2': {'kind': 'data'}, + 'gather_shape_mem_2': {'kind': 'op', 'op': 'Concat'}, + 'gather_shape_data_mem_2': {'kind': 'data'}, + 'fill_value_ones_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data_ones_2': {'kind': 'data'}, + 'broadcast_mem_2': {'kind': 'op', 'op': 'Broadcast'}, + 'broadcast_data_mem_2': {'kind': 'data'}, + 'memory_in': {'kind': 'op', 'op': 'ReadValue', 'shape': int64_array([5])}, 'memory_in_data': {'kind': 'data'}, 'memory_out': {'kind': 'op', 'op': 'Assign', 'shape': int64_array([5])}, @@ -97,40 +103,58 @@ def test_insert_select_1(self): 'select_out_data': {'kind': 'data', 'shape': [1, 26]}, 'const_0': {'kind': 'op', 'op': 'Const'}, 'const_0_data': {'kind': 'data'}, - 'const_1': {'kind': 'op', 'op': 'Const'}, - 'const_1_data': {'kind': 'data'}, 'concat': {'kind': 'op', 'op': 'Concat'}, 'concat_data': {'kind': 'data'}, 'placeholder_data_2': {'kind': 'data', 'shape': [1, 26]}, 'memory': {'kind': 'op', 'op': 'Assign'}, }, - [('in_node', 'placeholder_1'), ('placeholder_1', 'placeholder_data_1'), + [('placeholder_1', 'placeholder_data_1'), ('placeholder_data_1', 'splice_1'), ('splice_1', 'splice_data_1'), ('splice_data_1', 'placeholder_2'), ('placeholder_2', 'placeholder_data_2'), - ('placeholder_data_2', 'select', {'in': 1}), - - ('placeholder_data_2', 'shape'), ('shape', 'shape_data'), - ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), - ('crop_batch_dim', 'crop_batch_dim_data'), - ('crop_batch_dim_data', 'crop_batch', {'in': 1}), - ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), - ('crop_batch_data', 'gather_shape', {'in': 0}), ('gather_shape', 'gather_shape_data'), - ('fill_value', 'fill_value_data'), ('fill_value_data', 'broadcast', {'in': 0}), - ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), - ('broadcast_data', 'memory_in'), + ('placeholder_data_2', 'select', {'in': 1}), + + ('second_dim_mem_1', 'second_dim_data_mem_1'), + ('second_dim_data_mem_1', 'gather_shape_mem_1', {'in': 1}), + ('crop_batch_data', 'gather_shape_mem_1', {'in': 0}), + ('gather_shape_mem_1', 'gather_shape_data_mem_1'), + ('fill_value', 'fill_value_data'), + ('fill_value_data', 'broadcast_mem_1', {'in': 0}), + ('gather_shape_data_mem_1', 'broadcast_mem_1', {'in': 1}), + ('broadcast_mem_1', 'broadcast_data_mem_1'), + ('broadcast_data_mem_1', 'memory_in'), ('memory_in', 'memory_in_data'), ('memory_in_data', 'crop_in'), ('crop_in', 'crop_in_data'), ('crop_in_data', 'concat', {'in': 0}), - ('const_1', 'const_1_data'), ('const_1_data', 'concat', {'in': 1}), + + ('second_dim_mem_2', 'second_dim_data_mem_2'), + ('second_dim_data_mem_2', 'gather_shape_mem_2', {'in': 1}), + ('crop_batch_data', 'gather_shape_mem_2', {'in': 0}), + ('gather_shape_mem_2', 'gather_shape_data_mem_2'), + ('fill_value_ones_2', 'fill_value_data_ones_2'), + ('fill_value_data_ones_2', 'broadcast_mem_2', {'in': 0}), + ('gather_shape_data_mem_2', 'broadcast_mem_2', {'in': 1}), + ('broadcast_mem_2', 'broadcast_data_mem_2'), + ('broadcast_data_mem_2', 'concat', {'in': 1}), + ('concat', 'concat_data'), ('concat_data', 'memory_out'), ('memory_out', 'memory_out_data'), ('memory_out_data', 'result'), ('concat_data', 'crop_out'), ('crop_out', 'crop_out_data'), - ('crop_out_data', 'equal', {'in': 1}), ('const_1_data', 'equal', {'in': 0}), + ('crop_out_data', 'equal', {'in': 1}), ('broadcast_data_mem_2', 'equal', {'in': 0}), ('equal', 'equal_data'), ('equal_data', 'select', {'in': 0}), - ('const_0', 'const_0_data'), ('const_0_data', 'select', {'in': 2}), + ('placeholder_data_2', 'shape'), ('shape', 'shape_data'), + ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), + ('crop_batch_dim', 'crop_batch_dim_data'), + ('crop_batch_dim_data', 'crop_batch', {'in': 1}), + ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), + ('crop_batch_data', 'gather_shape', {'in': 0}), ('gather_shape', 'gather_shape_data'), + ('fill_value_ones', 'fill_value_data_ones'), + ('fill_value_data_ones', 'broadcast', {'in': 0}), + ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), + ('broadcast_data', 'select', {'in': 2}), + ('select', 'select_out_data'), ('select_out_data', 'memory') ], @@ -143,8 +167,8 @@ def test_insert_select_1(self): # graph contains 1 splice with context length 5 on the path to memory and 1 out of path, # should be inserted select with memory as counter with length 5 def test_insert_select_2(self): - graph = build_graph({'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'placeholder_1': {'kind': 'op', 'op': None}, + graph = build_graph({ + 'placeholder_1': {'kind': 'op', 'op': 'Parameter'}, 'placeholder_data_1': {'kind': 'data', 'shape': [1, 13]}, 'splice_1': {'kind': 'op', 'op': 'Splice', 'context': np.array([-2, -1, 0, 1, 2])}, 'splice_data_1': {'kind': 'data', 'shape': [1, 65]}, @@ -154,7 +178,7 @@ def test_insert_select_2(self): 'placeholder_data_2': {'kind': 'data', 'shape': [1, 26]}, 'memory': {'kind': 'op', 'op': 'Assign'}, }, - [('in_node', 'placeholder_1'), ('placeholder_1', 'placeholder_data_1'), + [('placeholder_1', 'placeholder_data_1'), ('placeholder_data_1', 'splice_1'), ('splice_1', 'splice_data_1'), ('placeholder_data_1', 'splice_2'), ('splice_2', 'splice_data_2'), ('splice_data_1', 'placeholder_2'), ('placeholder_2', 'placeholder_data_2'), @@ -162,8 +186,8 @@ def test_insert_select_2(self): ], nodes_with_edges_only=True) AddSelectBeforeMemoryNodePattern().find_and_replace_pattern(graph) - ref_graph = build_graph({'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'placeholder_1': {'kind': 'op', 'op': None}, + ref_graph = build_graph({ + 'placeholder_1': {'kind': 'op', 'op': 'Parameter'}, 'placeholder_data_1': {'kind': 'data', 'shape': [1, 13]}, 'splice_1': {'kind': 'op', 'op': 'Splice', 'context': np.array([-2, -1, 0, 1, 2])}, 'splice_data_1': {'kind': 'data', 'shape': [1, 65]}, @@ -171,6 +195,15 @@ def test_insert_select_2(self): 'splice_data_2': {'kind': 'data', 'shape': [1, 39]}, 'placeholder_2': {'kind': 'op', 'op': None}, + 'second_dim_mem_1': {'kind': 'op', 'op': 'Const', 'value': int64_array([5])}, + 'second_dim_data_mem_1': {'kind': 'data'}, + 'gather_shape_mem_1': {'kind': 'op', 'op': 'Concat'}, + 'gather_shape_data_mem_1': {'kind': 'data'}, + 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data': {'kind': 'data'}, + 'broadcast_mem_1': {'kind': 'op', 'op': 'Broadcast'}, + 'broadcast_data_mem_1': {'kind': 'data'}, + 'shape': {'kind': 'op', 'op': 'ShapeOf'}, 'shape_data': {'kind': 'data'}, 'crop_batch': {'kind': 'op', 'op': 'Crop', 'offset': int64_array([0])}, @@ -181,14 +214,23 @@ def test_insert_select_2(self): 'second_dim_data': {'kind': 'data'}, 'gather_shape': {'kind': 'op', 'op': 'Concat'}, 'gather_shape_data': {'kind': 'data'}, - 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, - 'fill_value_data': {'kind': 'data'}, + 'fill_value_ones': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data_ones': {'kind': 'data'}, 'broadcast': {'kind': 'op', 'op': 'Broadcast'}, 'broadcast_data': {'kind': 'data'}, - 'memory_in': {'kind': 'op', 'op': 'ReadValue'}, + 'second_dim_mem_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([26])}, + 'second_dim_data_mem_2': {'kind': 'data'}, + 'gather_shape_mem_2': {'kind': 'op', 'op': 'Concat'}, + 'gather_shape_data_mem_2': {'kind': 'data'}, + 'fill_value_ones_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data_ones_2': {'kind': 'data'}, + 'broadcast_mem_2': {'kind': 'op', 'op': 'Broadcast'}, + 'broadcast_data_mem_2': {'kind': 'data'}, + + 'memory_in': {'kind': 'op', 'op': 'ReadValue', 'shape': int64_array([5])}, 'memory_in_data': {'kind': 'data'}, - 'memory_out': {'kind': 'op', 'op': 'Assign'}, + 'memory_out': {'kind': 'op', 'op': 'Assign', 'shape': int64_array([5])}, 'memory_out_data': {'kind': 'data'}, 'result': {'kind': 'op', 'op': 'Result'}, 'crop_in': {'kind': 'op', 'op': 'Crop', 'axis': 1, 'offset': 1, 'dim': 4}, @@ -201,55 +243,72 @@ def test_insert_select_2(self): 'select_out_data': {'kind': 'data', 'shape': [1, 26]}, 'const_0': {'kind': 'op', 'op': 'Const'}, 'const_0_data': {'kind': 'data'}, - 'const_1': {'kind': 'op', 'op': 'Const'}, - 'const_1_data': {'kind': 'data'}, 'concat': {'kind': 'op', 'op': 'Concat'}, 'concat_data': {'kind': 'data'}, 'placeholder_data_2': {'kind': 'data', 'shape': [1, 26]}, 'memory': {'kind': 'op', 'op': 'Assign'}, }, - [('in_node', 'placeholder_1'), ('placeholder_1', 'placeholder_data_1'), + [('placeholder_1', 'placeholder_data_1'), ('placeholder_data_1', 'splice_1'), ('splice_1', 'splice_data_1'), ('placeholder_data_1', 'splice_2'), ('splice_2', 'splice_data_2'), ('splice_data_1', 'placeholder_2'), ('placeholder_2', 'placeholder_data_2'), ('placeholder_data_2', 'select', {'in': 1}), - ('placeholder_data_2', 'shape'), ('shape', 'shape_data'), - ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), - ('crop_batch_dim', 'crop_batch_dim_data'), - ('crop_batch_dim_data', 'crop_batch', {'in': 1}), - ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), - ('crop_batch_data', 'gather_shape', {'in': 0}), ('gather_shape', 'gather_shape_data'), - ('fill_value', 'fill_value_data'), ('fill_value_data', 'broadcast', {'in': 0}), - ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), - ('broadcast_data', 'memory_in'), + ('second_dim_mem_1', 'second_dim_data_mem_1'), + ('second_dim_data_mem_1', 'gather_shape_mem_1', {'in': 1}), + ('crop_batch_data', 'gather_shape_mem_1', {'in': 0}), + ('gather_shape_mem_1', 'gather_shape_data_mem_1'), + ('fill_value', 'fill_value_data'), + ('fill_value_data', 'broadcast_mem_1', {'in': 0}), + ('gather_shape_data_mem_1', 'broadcast_mem_1', {'in': 1}), + ('broadcast_mem_1', 'broadcast_data_mem_1'), + ('broadcast_data_mem_1', 'memory_in'), ('memory_in', 'memory_in_data'), ('memory_in_data', 'crop_in'), ('crop_in', 'crop_in_data'), ('crop_in_data', 'concat', {'in': 0}), - ('const_1', 'const_1_data'), ('const_1_data', 'concat', {'in': 1}), + + ('second_dim_mem_2', 'second_dim_data_mem_2'), + ('second_dim_data_mem_2', 'gather_shape_mem_2', {'in': 1}), + ('crop_batch_data', 'gather_shape_mem_2', {'in': 0}), + ('gather_shape_mem_2', 'gather_shape_data_mem_2'), + ('fill_value_ones_2', 'fill_value_data_ones_2'), + ('fill_value_data_ones_2', 'broadcast_mem_2', {'in': 0}), + ('gather_shape_data_mem_2', 'broadcast_mem_2', {'in': 1}), + ('broadcast_mem_2', 'broadcast_data_mem_2'), + ('broadcast_data_mem_2', 'concat', {'in': 1}), + ('concat', 'concat_data'), ('concat_data', 'memory_out'), ('memory_out', 'memory_out_data'), ('memory_out_data', 'result'), ('concat_data', 'crop_out'), ('crop_out', 'crop_out_data'), - ('crop_out_data', 'equal', {'in': 1}), ('const_1_data', 'equal', {'in': 0}), + ('crop_out_data', 'equal', {'in': 1}), ('broadcast_data_mem_2', 'equal', {'in': 0}), ('equal', 'equal_data'), ('equal_data', 'select', {'in': 0}), - ('const_0', 'const_0_data'), ('const_0_data', 'select', {'in': 2}), + + ('placeholder_data_2', 'shape'), ('shape', 'shape_data'), + ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), + ('crop_batch_dim', 'crop_batch_dim_data'), + ('crop_batch_dim_data', 'crop_batch', {'in': 1}), + ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), + ('crop_batch_data', 'gather_shape', {'in': 0}), ('gather_shape', 'gather_shape_data'), + ('fill_value_ones', 'fill_value_data_ones'), + ('fill_value_data_ones', 'broadcast', {'in': 0}), + ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), + ('broadcast_data', 'select', {'in': 2}), ('select', 'select_out_data'), ('select_out_data', 'memory') ], nodes_with_edges_only=True ) - (flag, resp) = compare_graphs(graph, ref_graph, 'memory') self.assertTrue(flag, resp) # graph contains 2 splices with sum context length 8 on the path to memory, # should be inserted select with memory as counter with length 7 def test_insert_select_3(self): - graph = build_graph({'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'placeholder_1': {'kind': 'op', 'op': None}, + graph = build_graph({ + 'placeholder_1': {'kind': 'op', 'op': 'Parameter'}, 'placeholder_data_1': {'kind': 'data', 'shape': [1, 13]}, 'splice_1': {'kind': 'op', 'op': 'Splice', 'context': np.array([-2, -1, 0, 1, 2])}, 'splice_data_1': {'kind': 'data', 'shape': [1, 65]}, @@ -259,7 +318,7 @@ def test_insert_select_3(self): 'placeholder_data_2': {'kind': 'data', 'shape': [1, 26]}, 'memory': {'kind': 'op', 'op': 'Assign', 'index': 0}, }, - [('in_node', 'placeholder_1'), ('placeholder_1', 'placeholder_data_1'), + [('placeholder_1', 'placeholder_data_1'), ('placeholder_data_1', 'splice_1'), ('splice_1', 'splice_data_1'), ('splice_data_1', 'splice_2'), ('splice_2', 'splice_data_2'), ('splice_data_2', 'placeholder_2'), ('placeholder_2', 'placeholder_data_2'), @@ -267,8 +326,8 @@ def test_insert_select_3(self): ], nodes_with_edges_only=True) AddSelectBeforeMemoryNodePattern().find_and_replace_pattern(graph) - ref_graph = build_graph({'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'placeholder_1': {'kind': 'op', 'op': None}, + ref_graph = build_graph({ + 'placeholder_1': {'kind': 'op', 'op': 'Parameter'}, 'placeholder_data_1': {'kind': 'data', 'shape': [1, 13]}, 'splice_1': {'kind': 'op', 'op': 'Splice', 'context': np.array([-2, -1, 0, 1, 2])}, 'splice_data_1': {'kind': 'data', 'shape': [1, 65]}, @@ -276,27 +335,45 @@ def test_insert_select_3(self): 'splice_data_2': {'kind': 'data', 'shape': [1, 39]}, 'placeholder_2': {'kind': 'op', 'op': None}, + 'second_dim_mem_1': {'kind': 'op', 'op': 'Const', 'value': int64_array([5])}, + 'second_dim_data_mem_1': {'kind': 'data'}, + 'gather_shape_mem_1': {'kind': 'op', 'op': 'Concat'}, + 'gather_shape_data_mem_1': {'kind': 'data'}, + 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data': {'kind': 'data'}, + 'broadcast_mem_1': {'kind': 'op', 'op': 'Broadcast'}, + 'broadcast_data_mem_1': {'kind': 'data'}, + 'shape': {'kind': 'op', 'op': 'ShapeOf'}, 'shape_data': {'kind': 'data'}, 'crop_batch': {'kind': 'op', 'op': 'Crop', 'offset': int64_array([0])}, 'crop_batch_data': {'kind': 'data'}, 'crop_batch_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([1])}, 'crop_batch_dim_data': {'kind': 'data'}, - 'second_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([7])}, + 'second_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([5])}, 'second_dim_data': {'kind': 'data'}, 'gather_shape': {'kind': 'op', 'op': 'Concat'}, 'gather_shape_data': {'kind': 'data'}, - 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, - 'fill_value_data': {'kind': 'data'}, + 'fill_value_ones': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data_ones': {'kind': 'data'}, 'broadcast': {'kind': 'op', 'op': 'Broadcast'}, 'broadcast_data': {'kind': 'data'}, - 'memory_in': {'kind': 'op', 'op': 'ReadValue'}, + 'second_dim_mem_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([26])}, + 'second_dim_data_mem_2': {'kind': 'data'}, + 'gather_shape_mem_2': {'kind': 'op', 'op': 'Concat'}, + 'gather_shape_data_mem_2': {'kind': 'data'}, + 'fill_value_ones_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, + 'fill_value_data_ones_2': {'kind': 'data'}, + 'broadcast_mem_2': {'kind': 'op', 'op': 'Broadcast'}, + 'broadcast_data_mem_2': {'kind': 'data'}, + + 'memory_in': {'kind': 'op', 'op': 'ReadValue', 'shape': int64_array([5])}, 'memory_in_data': {'kind': 'data'}, - 'memory_out': {'kind': 'op', 'op': 'Assign'}, + 'memory_out': {'kind': 'op', 'op': 'Assign', 'shape': int64_array([5])}, 'memory_out_data': {'kind': 'data'}, 'result': {'kind': 'op', 'op': 'Result'}, - 'crop_in': {'kind': 'op', 'op': 'Crop', 'axis': 1, 'offset': 1, 'dim': 6}, + 'crop_in': {'kind': 'op', 'op': 'Crop', 'axis': 1, 'offset': 1, 'dim': 4}, 'crop_in_data': {'kind': 'data'}, 'crop_out': {'kind': 'op', 'op': 'Crop', 'axis': 1, 'offset': 0, 'dim': 1}, 'crop_out_data': {'kind': 'data'}, @@ -306,40 +383,58 @@ def test_insert_select_3(self): 'select_out_data': {'kind': 'data', 'shape': [1, 26]}, 'const_0': {'kind': 'op', 'op': 'Const'}, 'const_0_data': {'kind': 'data'}, - 'const_1': {'kind': 'op', 'op': 'Const'}, - 'const_1_data': {'kind': 'data'}, 'concat': {'kind': 'op', 'op': 'Concat'}, 'concat_data': {'kind': 'data'}, 'placeholder_data_2': {'kind': 'data', 'shape': [1, 26]}, 'memory': {'kind': 'op', 'op': 'Assign', 'index': 0}, }, - [('in_node', 'placeholder_1'), ('placeholder_1', 'placeholder_data_1'), + [('placeholder_1', 'placeholder_data_1'), ('placeholder_data_1', 'splice_1'), ('splice_1', 'splice_data_1'), ('splice_data_1', 'splice_2'), ('splice_2', 'splice_data_2'), ('splice_data_2', 'placeholder_2'), ('placeholder_2', 'placeholder_data_2'), ('placeholder_data_2', 'select', {'in': 1}), - ('placeholder_data_2', 'shape'), ('shape', 'shape_data'), - ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), - ('crop_batch_dim', 'crop_batch_dim_data'), - ('crop_batch_dim_data', 'crop_batch', {'in': 1}), - ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), - ('crop_batch_data', 'gather_shape', {'in': 0}), ('gather_shape', 'gather_shape_data'), - ('fill_value', 'fill_value_data'), ('fill_value_data', 'broadcast', {'in': 0}), - ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), - ('broadcast_data', 'memory_in'), + ('second_dim_mem_1', 'second_dim_data_mem_1'), + ('second_dim_data_mem_1', 'gather_shape_mem_1', {'in': 1}), + ('crop_batch_data', 'gather_shape_mem_1', {'in': 0}), + ('gather_shape_mem_1', 'gather_shape_data_mem_1'), + ('fill_value', 'fill_value_data'), + ('fill_value_data', 'broadcast_mem_1', {'in': 0}), + ('gather_shape_data_mem_1', 'broadcast_mem_1', {'in': 1}), + ('broadcast_mem_1', 'broadcast_data_mem_1'), + ('broadcast_data_mem_1', 'memory_in'), ('memory_in', 'memory_in_data'), ('memory_in_data', 'crop_in'), ('crop_in', 'crop_in_data'), ('crop_in_data', 'concat', {'in': 0}), - ('const_1', 'const_1_data'), ('const_1_data', 'concat', {'in': 1}), + + ('second_dim_mem_2', 'second_dim_data_mem_2'), + ('second_dim_data_mem_2', 'gather_shape_mem_2', {'in': 1}), + ('crop_batch_data', 'gather_shape_mem_2', {'in': 0}), + ('gather_shape_mem_2', 'gather_shape_data_mem_2'), + ('fill_value_ones_2', 'fill_value_data_ones_2'), + ('fill_value_data_ones_2', 'broadcast_mem_2', {'in': 0}), + ('gather_shape_data_mem_2', 'broadcast_mem_2', {'in': 1}), + ('broadcast_mem_2', 'broadcast_data_mem_2'), + ('broadcast_data_mem_2', 'concat', {'in': 1}), + ('concat', 'concat_data'), ('concat_data', 'memory_out'), ('memory_out', 'memory_out_data'), ('memory_out_data', 'result'), ('concat_data', 'crop_out'), ('crop_out', 'crop_out_data'), - ('crop_out_data', 'equal', {'in': 1}), ('const_1_data', 'equal', {'in': 0}), + ('crop_out_data', 'equal', {'in': 1}), ('broadcast_data_mem_2', 'equal', {'in': 0}), ('equal', 'equal_data'), ('equal_data', 'select', {'in': 0}), - ('const_0', 'const_0_data'), ('const_0_data', 'select', {'in': 2}), + + ('placeholder_data_2', 'shape'), ('shape', 'shape_data'), + ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), + ('crop_batch_dim', 'crop_batch_dim_data'), + ('crop_batch_dim_data', 'crop_batch', {'in': 1}), + ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), + ('crop_batch_data', 'gather_shape', {'in': 0}), ('gather_shape', 'gather_shape_data'), + ('fill_value_ones', 'fill_value_data_ones'), + ('fill_value_data_ones', 'broadcast', {'in': 0}), + ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), + ('broadcast_data', 'select', {'in': 2}), ('select', 'select_out_data'), ('select_out_data', 'memory') diff --git a/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate.py b/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate.py index e759e404897b58..f6ac510cfa09ec 100644 --- a/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate.py +++ b/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import numpy as np diff --git a/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate_test.py b/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate_test.py index 197d84444cb7d4..e9f95811485c0c 100644 --- a/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate_test.py +++ b/model-optimizer/extensions/middle/InterpolateSequenceToInterpolate_test.py @@ -1,19 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np import unittest diff --git a/model-optimizer/extensions/middle/L2NormFusing.py b/model-optimizer/extensions/middle/L2NormFusing.py index 0d8befe5701e48..d36861d580e0ef 100644 --- a/model-optimizer/extensions/middle/L2NormFusing.py +++ b/model-optimizer/extensions/middle/L2NormFusing.py @@ -1,31 +1,24 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import numpy as np from extensions.ops.normalize_l2 import NormalizeL2Op +from mo.front.common.layout import get_features_dim from mo.front.common.partial_infer.utils import int64_array from mo.front.tf.graph_utils import create_op_node_with_second_input -from mo.graph.graph import Graph, rename_node +from mo.graph.graph import Graph, rename_nodes from mo.middle.replacement import MiddleReplacementPattern class L2NormToNorm(MiddleReplacementPattern): + """ + Transformation fuses sub-graph performing l2 normalization into the NormalizeL2 operation. IE plugins do not support + NormalizeL2 operation and there is a nGraph transformation which converts NormalizeL2 to NormalizeIE. The latter one + allows to normalize over just channel dimension or "channel + all spatial" dimensions for 2D, 3D or 4D cases. + """ enabled = True force_clean_up = True @@ -86,29 +79,33 @@ def replace_pattern(self, graph: Graph, match: dict): # reduction only along spatial and channel dimensions. input_rank = len(match['sum'].in_port(0).data.get_shape()) if input_rank not in [2, 3, 4]: - log.debug('IE supports L2 normalization only for 2D, 3D and 4D tensors, skip fusing transformation.') + log.debug('IE supports L2 normalization only for 2D, 3D and 4D tensors.') return axes = match['sum'].in_port(1).data.get_value() axes = int64_array(axes) if axes.shape == (): axes = int64_array([axes]) + axes = int64_array([axis if axis >= 0 else axis + input_rank for axis in axes]) axes.sort() - if not np.array_equal(axes, int64_array(np.arange(start=1, stop=input_rank))): - log.debug('IE doesn\'t support l2 normalization with reduction along axes {}, skip fusing transformation.' - ''.format(axes)) + transformation_applicable = False + # check for case C + all spatial dims. Works for 2D (NC), 3D (NCH) and 4D (NCHW and NHWC) + if len(axes) + 1 == input_rank and np.array_equal(axes, int64_array(np.arange(start=1, stop=input_rank))): + transformation_applicable = True + + # check for pure C channel normalization + if len(axes) == 1 and ((input_rank == 4 and get_features_dim(graph.graph['layout'], input_rank) == axes[0]) or + (input_rank != 4 and axes[0] == 1)): + transformation_applicable = True + + if not transformation_applicable: + log.debug('IE doesn\'t support l2 normalization with reduction along axes {}.'.format(axes)) return - # rename l2_normalize node since it will be no longer output after the transformation output_name = match['l2_normalize'].soft_get('name', match['l2_normalize'].id) - normalizel2_name = output_name + '/normalizel2' - rename_node(match['l2_normalize'], normalizel2_name) - normalize_node = create_op_node_with_second_input(graph, NormalizeL2Op, axes, {'name': output_name, 'eps_mode': 'max', 'eps': y}) - rename_node(normalize_node, output_name) - match['square'].in_port(0).get_source().connect(normalize_node.in_port(0)) match['square'].in_port(0).disconnect() @@ -118,3 +115,4 @@ def replace_pattern(self, graph: Graph, match: dict): match['l2_normalize'].in_port(0).disconnect() match['l2_normalize'].out_port(0).get_connection().set_source(normalize_node.out_port(0)) + rename_nodes([(match['l2_normalize'], output_name + "/TBR"), (normalize_node, output_name)]) diff --git a/model-optimizer/extensions/middle/L2NormFusing_test.py b/model-optimizer/extensions/middle/L2NormFusing_test.py index 979609c6383e40..82395c818b6d47 100644 --- a/model-optimizer/extensions/middle/L2NormFusing_test.py +++ b/model-optimizer/extensions/middle/L2NormFusing_test.py @@ -1,22 +1,10 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np +from generator import generator, generate from extensions.middle.L2NormFusing import L2NormToNorm from mo.front.common.partial_infer.utils import int64_array @@ -79,59 +67,23 @@ ] +@generator class L2NormToNormTest(unittest.TestCase): - def test_2D(self): - input_shape = int64_array([1, 300]) - axes = int64_array([1]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=axes.shape)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('weights_node_data', dict(kind='data', value=axes.sort())), - ], edges_after_replacement, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(graph.node[graph.get_nodes_with_attributes(type='NormalizeL2')[0]]['name'] == 'l2_norm_name') - self.assertTrue(flag, resp) - - def test_2D_scalar_axis(self): - input_shape = int64_array([1, 300]) - axes = int64_array(1) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('weights_node_data', dict(kind='data', value=int64_array([axes]).sort())), - ], edges_after_replacement, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(graph.node[graph.get_nodes_with_attributes(type='NormalizeL2')[0]]['name'] == 'l2_norm_name') - self.assertTrue(flag, resp) - - def test_3D(self): - input_shape = int64_array([1, 300, 300]) - axes = int64_array([1, 2]) - + @generate(*[(int64_array([2, 3]), int64_array([1]), 'NCHW'), # NC layout, normalize C dimension + (int64_array([2, 3]), int64_array([1]), 'NHWC'), # NC layout, normalize C dimension + (int64_array([2, 3, 5]), int64_array([1]), 'NCHW'), # NCH layout, normalize C dimension + (int64_array([2, 3, 5]), int64_array([1]), 'NHWC'), # NCH layout, normalize C dimension + (int64_array([2, 3, 5]), int64_array([-1, -2]), 'NHWC'), # NCH layout, normalize CH dimensions + (int64_array([2, 3, 5]), int64_array([-1, -2]), 'NCHW'), # NCH layout, normalize CH dimensions + (int64_array([2, 3, 5]), int64_array([1, 2]), 'NCHW'), # NCH layout, normalize CH dimensions + (int64_array([2, 3, 5]), int64_array([1, 2]), 'NHWC'), # NCH layout, normalize CH dimensions + (int64_array([2, 3, 5, 7]), int64_array([1]), 'NCHW'), # NCHW layout, normalize C dimension + (int64_array([2, 3, 5, 7]), int64_array([-1]), 'NHWC'), # NHWC layout, normalize C dimension + (int64_array([2, 3, 5, 7]), int64_array([3]), 'NHWC'), # NCHW layout, normalize C dimension + (int64_array([2, 3, 5, 7]), int64_array([-1, 1, 2]), 'NCHW'), # NCHW layout, normalize CHW dimensions + (int64_array([2, 3, 5, 7]), int64_array([-3, -2, -1]), 'NHWC'), # NCHW layout, normalize HWC dimensions + ]) + def test_positive(self, input_shape, axes, layout): graph = build_graph_with_attrs(nodes + [ ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), @@ -139,6 +91,7 @@ def test_3D(self): ('sum_axes_data', dict(kind='data', value=axes, shape=None)), ], edges, nodes_with_edges_only=True) graph.stage = 'middle' + graph.graph['layout'] = layout L2NormToNorm().find_and_replace_pattern(graph) @@ -152,253 +105,43 @@ def test_3D(self): self.assertTrue(graph.node[graph.get_nodes_with_attributes(type='NormalizeL2')[0]]['name'] == 'l2_norm_name') self.assertTrue(flag, resp) - def test_4D(self): - input_shape = int64_array([1, 300, 300, 3]) - axes = int64_array([1, 2, 3]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('weights_node_data', dict(kind='data', value=axes.sort())), - ], edges_after_replacement, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(graph.node[graph.get_nodes_with_attributes(type='NormalizeL2')[0]]['name'] == 'l2_norm_name') - self.assertTrue(flag, resp) - - def test_4D_mixed_axes(self): - input_shape = int64_array([1, 300, 300, 3]) - axes = int64_array([3, 1, 2]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('weights_node_data', dict(kind='data', value=axes.sort())), - ], edges_after_replacement, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(graph.node[graph.get_nodes_with_attributes(type='NormalizeL2')[0]]['name'] == 'l2_norm_name') - self.assertTrue(flag, resp) - - def test_4D_multiple_consumers(self): - input_shape = int64_array([1, 300, 300, 3]) - axes = int64_array([1, 2, 3]) - weights_value = np.ones(shape=int64_array([input_shape[-1]]), dtype=np.float32) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ('result_2', dict(kind='op', op='Result')) - ], edges + [('input_data', 'result_2')], nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('weights_node_data', dict(kind='data', value=axes.sort())), - ('result_2', dict(kind='op', op='Result')) - ], edges_after_replacement + [('input_data', 'result_2')], nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(graph.node[graph.get_nodes_with_attributes(type='NormalizeL2')[0]]['name'] == 'l2_norm_name') - self.assertTrue(flag, resp) - - def test_1D_negative(self): - input_shape = int64_array([300]) - axes = int64_array([0]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_2D_negative(self): - input_shape = int64_array([1, 300]) - axes = int64_array([0]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_3D_negative(self): - input_shape = int64_array([1, 300, 300]) - axes = int64_array([2]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_4D_negative_1(self): - input_shape = int64_array([1, 300, 300, 3]) - axes = int64_array([0, 1, 2]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_4D_negative_2(self): - input_shape = int64_array([1, 300, 300, 3]) - axes = int64_array([2]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_4D_negative_3(self): - input_shape = int64_array([1, 300, 300, 3]) - axes = int64_array([2, 1]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_4D_negative_4(self): - input_shape = int64_array([1, 300, 300, 3]) - axes = int64_array([2, 0]) - - graph = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - graph.stage = 'middle' - - L2NormToNorm().find_and_replace_pattern(graph) - - graph_ref = build_graph_with_attrs(nodes + [ - ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), - ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), - ('square_data', dict(kind='data', shape=input_shape)), - ('sum_axes_data', dict(kind='data', value=axes, shape=None)), - ], edges, nodes_with_edges_only=True) - - (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) - self.assertTrue(flag, resp) - - def test_5D_negative(self): - input_shape = int64_array([1, 300, 300, 300, 3]) - axes = int64_array([1, 2, 3, 4]) - + @generate(*[(int64_array([2]), int64_array([0]), 'NCHW'), + (int64_array([2, 3]), int64_array([0]), 'NCHW'), + (int64_array([2, 3]), int64_array([0]), 'NHWC'), + (int64_array([2, 3]), int64_array([0, 1]), 'NCHW'), + (int64_array([2, 3]), int64_array([0, 1]), 'NHWC'), + (int64_array([2, 3, 5]), int64_array([0]), 'NCHW'), + (int64_array([2, 3, 5]), int64_array([0]), 'NHWC'), + (int64_array([2, 3, 5]), int64_array([-1]), 'NCHW'), + (int64_array([2, 3, 5]), int64_array([-1]), 'NHWC'), + (int64_array([2, 3, 5]), int64_array([0, 1]), 'NCHW'), + (int64_array([2, 3, 5]), int64_array([0, 1]), 'NHWC'), + (int64_array([2, 3, 5]), int64_array([0, 2]), 'NCHW'), + (int64_array([2, 3, 5]), int64_array([0, 2]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([0]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([0]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([2]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([2]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([3]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([1]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([1, 2]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([1, -1]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([1, -1]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([-2, -1]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([1, 3]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([2, 3]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([0, 1, 2]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([0, 1, 2]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([0, 2, 3]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([0, 2, 3]), 'NHWC'), + (int64_array([2, 3, 5, 7]), int64_array([0, 1, 2, 3]), 'NCHW'), + (int64_array([2, 3, 5, 7]), int64_array([0, 1, 2, 3]), 'NHWC'), + (int64_array([2, 3, 5, 7, 9]), int64_array([1]), 'NCHW'), + (int64_array([2, 3, 5, 7, 9]), int64_array([-1]), 'NHWC'), + (int64_array([2, 3, 5, 7, 9]), int64_array([1, 2, 3, 4]), 'NCHW'), + (int64_array([2, 3, 5, 7, 9]), int64_array([-1, -2, -3, -4]), 'NHWC'), + ]) + def test_negative(self, input_shape, axes, layout): graph = build_graph_with_attrs(nodes + [ ('input', dict(kind='op', shape=input_shape, op='Parameter', data_type=np.float32)), ('input_data', dict(kind='data', shape=input_shape, data_type=np.float32)), @@ -406,6 +149,7 @@ def test_5D_negative(self): ('sum_axes_data', dict(kind='data', value=axes, shape=None)), ], edges, nodes_with_edges_only=True) graph.stage = 'middle' + graph.graph['layout'] = layout L2NormToNorm().find_and_replace_pattern(graph) diff --git a/model-optimizer/extensions/middle/LSTMRNNSequenceToTensorIterator.py b/model-optimizer/extensions/middle/LSTMRNNSequenceToTensorIterator.py index 04a759c12ecb05..7af0d18b388adc 100644 --- a/model-optimizer/extensions/middle/LSTMRNNSequenceToTensorIterator.py +++ b/model-optimizer/extensions/middle/LSTMRNNSequenceToTensorIterator.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.middle.RNNSequenceNormalizeToIE import RNNSequenceNormalize diff --git a/model-optimizer/extensions/middle/LayoutChangeForConstantShapePaths.py b/model-optimizer/extensions/middle/LayoutChangeForConstantShapePaths.py index a92e74d682bb48..54356bd1170d24 100644 --- a/model-optimizer/extensions/middle/LayoutChangeForConstantShapePaths.py +++ b/model-optimizer/extensions/middle/LayoutChangeForConstantShapePaths.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from collections import deque from typing import List, Set diff --git a/model-optimizer/extensions/middle/LeakyReluPattern.py b/model-optimizer/extensions/middle/LeakyReluPattern.py index d01bf8d398dd63..d8525e7b2690cc 100644 --- a/model-optimizer/extensions/middle/LeakyReluPattern.py +++ b/model-optimizer/extensions/middle/LeakyReluPattern.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from extensions.middle.fusings import Fusing from extensions.middle.pass_separator import PostMiddleStart diff --git a/model-optimizer/extensions/middle/LeakyReluPattern_test.py b/model-optimizer/extensions/middle/LeakyReluPattern_test.py index 4a84b5d8fac2c6..50ce990b56e23b 100644 --- a/model-optimizer/extensions/middle/LeakyReluPattern_test.py +++ b/model-optimizer/extensions/middle/LeakyReluPattern_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/MXNetRNNSequenceNormalize.py b/model-optimizer/extensions/middle/MXNetRNNSequenceNormalize.py index 51a77617b5d8e9..85eedec7b06534 100644 --- a/model-optimizer/extensions/middle/MXNetRNNSequenceNormalize.py +++ b/model-optimizer/extensions/middle/MXNetRNNSequenceNormalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/MXNetSplitMultiLayers.py b/model-optimizer/extensions/middle/MXNetSplitMultiLayers.py index 7802c7ddb6e233..0df4280074796c 100644 --- a/model-optimizer/extensions/middle/MXNetSplitMultiLayers.py +++ b/model-optimizer/extensions/middle/MXNetSplitMultiLayers.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph, Node diff --git a/model-optimizer/extensions/middle/MXTileReplacer.py b/model-optimizer/extensions/middle/MXTileReplacer.py index 58a7283fcc7f0c..353d1290cbb7c4 100644 --- a/model-optimizer/extensions/middle/MXTileReplacer.py +++ b/model-optimizer/extensions/middle/MXTileReplacer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.tf.graph_utils import create_op_node_with_second_input diff --git a/model-optimizer/extensions/middle/MXTileReplacer_test.py b/model-optimizer/extensions/middle/MXTileReplacer_test.py index 5226dfe4cf3000..b4f6b470928b73 100644 --- a/model-optimizer/extensions/middle/MXTileReplacer_test.py +++ b/model-optimizer/extensions/middle/MXTileReplacer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/MakeKaldiConstReshapable.py b/model-optimizer/extensions/middle/MakeKaldiConstReshapable.py new file mode 100644 index 00000000000000..9f8091c9382a4f --- /dev/null +++ b/model-optimizer/extensions/middle/MakeKaldiConstReshapable.py @@ -0,0 +1,118 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np + +from mo.front.common.partial_infer.utils import int64_array +from mo.front.tf.graph_utils import create_op_node_with_second_input, create_op_with_const_inputs +from mo.graph.graph import Graph, Port +from mo.middle.replacement import MiddleReplacementPattern +from mo.ops.broadcast import Broadcast +from mo.ops.concat import Concat +from mo.ops.crop import Crop +from mo.ops.shape import Shape + + +def create_const_with_batch_from_input(producer_port: Port, second_dim, value=0, precision=np.float32): + """ + Create const with batch taken from input_out_port and second dimension equals second_dim + :param producer_port: take batch from this port + :param second_dim: second dimension for created constant + :param value: value to initialize constant + :param precision: precision for constant + :return created constant node + """ + graph = producer_port.node.graph + input_name = producer_port.node.soft_get('name', producer_port.node.id) + + shape_of_input = None + for dest in producer_port.get_destinations(): + if dest.node.soft_get('op') == "ShapeOf": + shape_of_input = dest.node + break + + if shape_of_input is None: + shape_of_input = Shape(graph, {'name': input_name + '/Shape'}).create_node() + shape_of_input.in_port(0).connect(producer_port) + + get_batch = None + for dest in shape_of_input.out_port(0).get_destinations(): + if dest.node.soft_get('op') == "Crop" and \ + dest.node.in_port(1).get_source().node.soft_get('value', []) == int64_array([1]): + get_batch = dest.node + break + + if get_batch is None: + get_batch = create_op_node_with_second_input(graph, Crop, int64_array([1]), + {'name': shape_of_input.name + '/Crop', + 'axis': int64_array([0]), 'offset': int64_array([0])}, + shape_of_input) + + mem_shape = None + for dest in get_batch.out_port(0).get_destinations(): + if dest.node.soft_get('op') == "Concat" and \ + dest.node.in_port(1).get_source().node.soft_get('value', []) == int64_array([second_dim]): + mem_shape = dest.node + break + + if mem_shape is None: + mem_shape = create_op_node_with_second_input(graph, Concat, int64_array([second_dim]), + {'name': get_batch.name + '/Concat', 'axis': 0, + 'in_ports_count': 2}, get_batch) + + init_value_prev_lstm_output = None + for dest in mem_shape.out_port(0).get_destinations(): + if dest.node.soft_get('op') == "Broadcast" and \ + dest.node.in_port(1).get_source().node.soft_get('value', []) == np.array([value], dtype=precision): + init_value_prev_lstm_output = dest.node + break + + if init_value_prev_lstm_output is None: + init_value_prev_lstm_output = create_op_with_const_inputs(graph, Broadcast, + {0: np.array([value], dtype=precision)}, + {'name': mem_shape.name + '/Broadcast'}) + init_value_prev_lstm_output.in_port(1).connect(mem_shape.out_port(0)) + + return init_value_prev_lstm_output + + +class MakeKaldiConstReshapable(MiddleReplacementPattern): + """ + Add broadcasting of constant nodes based on batch from Parameter node. This approach works only for Kaldi, + because it has the same batch in whole graph due to framework specific. + """ + enabled = True + graph_condition = [lambda graph: graph.graph['fw'] == "kaldi"] + + def run_after(self): + from extensions.middle.InsertSelect import AddSelectBeforeMemoryNodePattern + from extensions.middle.ReplaceMemoryOffsetWithSplice import ReplaceMemoryOffsetWithMemoryNodePattern + from extensions.middle.ReplaceSpliceNodePattern import ReplaceSpliceNodePattern + return [AddSelectBeforeMemoryNodePattern, ReplaceMemoryOffsetWithMemoryNodePattern, + ReplaceSpliceNodePattern] + + def find_and_replace_pattern(self, graph: Graph): + params = graph.get_op_nodes(op="Parameter") + batch = params[0].shape[0] + + # check that all Parameters have the same batch + for p in params: + assert(p.shape[0] == batch, + "Parameter {} have batch different from the {}".format(p.soft_get('name', p.id), + params[0].soft_get('name', params[0].id))) + + # make constants for initialization of ReadValue reshapable + for read in graph.get_op_nodes(op='ReadValue'): + input_node = read.in_port(0).get_source().node + if input_node.soft_get('op') == "Const": + const_shape = input_node.out_port(0).data.get_shape() + # extra check to be sure that we don't break shapes compatibility in graph + # in Kaldi models we have only 2 dimensions + # and batch should be set the same as we will get from Parameter + # otherwise just skip such node + if len(const_shape) != 2 or const_shape[0] != batch: + continue + new_const = create_const_with_batch_from_input(params[0].out_port(0), + const_shape[1], + value=input_node.value[0], precision=input_node.data_type) + input_node.out_port(0).get_connection().set_source(new_const.out_port(0)) diff --git a/model-optimizer/extensions/middle/MakeKaldiConstReshapable_test.py b/model-optimizer/extensions/middle/MakeKaldiConstReshapable_test.py new file mode 100644 index 00000000000000..db0389829325be --- /dev/null +++ b/model-optimizer/extensions/middle/MakeKaldiConstReshapable_test.py @@ -0,0 +1,104 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +import numpy as np + +from extensions.middle.MakeKaldiConstReshapable import MakeKaldiConstReshapable +from mo.front.common.partial_infer.utils import int64_array +from mo.utils.ir_engine.compare_graphs import compare_graphs +from mo.utils.unittest.graph import build_graph, result, regular_op_with_shaped_data, connect + +nodes = { + **regular_op_with_shaped_data('placeholder_1', [1, 13], {'kind': 'op', 'op': 'Parameter', 'shape': [1, 13]}), + **regular_op_with_shaped_data('splice_1', [1, 13], {'kind': 'op', 'op': 'Splice', + 'context': np.array([-2, -1, 0, 1, 2])}), + **regular_op_with_shaped_data('placeholder_2', [1, 26], {'kind': 'op', 'op': None}), + **regular_op_with_shaped_data('memory_in', [1, 5], {'kind': 'op', 'op': 'ReadValue', + 'shape': int64_array([1, 5])}), + **regular_op_with_shaped_data('memory_out', [1, 5], {'kind': 'op', 'op': 'Assign', 'shape': int64_array([1, 5])}), + **result('result'), + **regular_op_with_shaped_data('crop_in', [1, 4], {'kind': 'op', 'op': 'Crop', 'axis': 1, 'offset': 1, 'dim': 4}), + **regular_op_with_shaped_data('crop_out', [1, 1], {'kind': 'op', 'op': 'Crop', 'axis': 1, 'offset': 0, 'dim': 1}), + **regular_op_with_shaped_data('equal', [1, 1], {'kind': 'op', 'op': 'Equal'}), + **regular_op_with_shaped_data('select', [1, 26], {'kind': 'op', 'op': 'Select'}), + **regular_op_with_shaped_data('const_0', [1, 1], {'kind': 'op', 'op': 'Const', 'shape': [1, 1], + 'value': [0], 'data_type': np.float32}), + **regular_op_with_shaped_data('const_1', [1, 1], {'kind': 'op', 'op': 'Const', 'shape': [1, 1], + 'value': [0], 'data_type': np.float32}), + **regular_op_with_shaped_data('concat', [1, 5], {'kind': 'op', 'op': 'Concat'}), + **regular_op_with_shaped_data('memory', [1, 26], {'kind': 'op', 'op': 'Assign'}), + + **regular_op_with_shaped_data('shape', None, {'kind': 'op', 'op': 'ShapeOf'}), + **regular_op_with_shaped_data('crop_batch', None, {'kind': 'op', 'op': 'Crop', 'offset': int64_array([0])}), + **regular_op_with_shaped_data('crop_batch_dim', None, {'kind': 'op', 'op': 'Const', 'shape': [1], + 'value': [1], 'data_type': np.int64}), + **regular_op_with_shaped_data('second_dim', None, {'kind': 'op', 'op': 'Const', 'shape': [1], + 'value': [5], 'data_type': np.int64}), + **regular_op_with_shaped_data('gather_shape', None, {'kind': 'op', 'op': 'Concat'}), + **regular_op_with_shaped_data('fill_value', [1, 5], {'kind': 'op', 'op': 'Const', 'shape': [1, 5], + 'value': np.zeros([1, 5]), 'data_type': np.float32}), + **regular_op_with_shaped_data('fill_value_2', None, {'kind': 'op', 'op': 'Const', 'shape': [1], + 'value': [0], 'data_type': np.float32}), + **regular_op_with_shaped_data('broadcast', [1, 5], {'kind': 'op', 'op': 'Broadcast'}), + + **regular_op_with_shaped_data('fill_value_ones', [1, 26], {'kind': 'op', 'op': 'Const', 'shape': [1, 26], + 'value': np.zeros([1, 26]), 'data_type': np.int64}), + **regular_op_with_shaped_data('fill_value_ones_2', [1, 1], {'kind': 'op', 'op': 'Const', 'shape': [1, 1], + 'value': [1], 'data_type': np.int64}), +} + + +class MakeKaldiConstReshapableTests(unittest.TestCase): + + # graph contains 1 splice with context length 5, should be inserted select with memory as counter with length 5 + def test_reshapable_const(self): + graph = build_graph(nodes, + [*connect('placeholder_1', 'splice_1'), + *connect('splice_1', 'placeholder_2'), + *connect('placeholder_2', '1:select'), + *connect('fill_value', 'memory_in'), + *connect('memory_in', 'crop_in'), + *connect('crop_in', '0:concat'), + *connect('fill_value_ones_2:0', '1:concat'), + *connect('concat', 'memory_out'), + *connect('memory_out', 'result'), + *connect('concat', 'crop_out'), + *connect('crop_out', '1:equal'), + *connect('fill_value_ones_2:0', '0:equal'), + *connect('equal', '0:select'), + *connect('fill_value_ones', '2:select'), + *connect('select', 'memory') + ], + nodes_with_edges_only=True) + graph.strict_mode = False + MakeKaldiConstReshapable().find_and_replace_pattern(graph) + ref_graph = build_graph(nodes, + [*connect('placeholder_1:0', 'splice_1'), + *connect('splice_1', 'placeholder_2'), + *connect('placeholder_2', '1:select'), + *connect('placeholder_1:0', 'shape', skip_data=True), + *connect('shape', '0:crop_batch'), + *connect('crop_batch_dim', '1:crop_batch'), + *connect('second_dim', '1:gather_shape'), + *connect('crop_batch', '0:gather_shape'), + *connect('fill_value_2', '0:broadcast'), + *connect('gather_shape', '1:broadcast'), + *connect('broadcast', 'memory_in'), + *connect('memory_in', 'crop_in'), + *connect('crop_in', '0:concat'), + *connect('fill_value_ones_2', '1:concat'), + *connect('concat', 'memory_out'), + *connect('memory_out', 'result'), + *connect('concat', 'crop_out'), + *connect('crop_out', '1:equal'), + *connect('fill_value_ones_2', '0:equal'), + *connect('equal', '0:select'), + *connect('const_0', '2:select'), + *connect('fill_value_ones', '2:select'), + *connect('select', 'memory') + ], nodes_with_edges_only=True) + + (flag, resp) = compare_graphs(graph, ref_graph, 'memory') + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/middle/MarkSubgraphsWithCorrectLayout.py b/model-optimizer/extensions/middle/MarkSubgraphsWithCorrectLayout.py index fc7b834d24f3df..38058f76fc42d3 100644 --- a/model-optimizer/extensions/middle/MarkSubgraphsWithCorrectLayout.py +++ b/model-optimizer/extensions/middle/MarkSubgraphsWithCorrectLayout.py @@ -1,28 +1,14 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from collections import deque - from typing import Set from extensions.middle.InsertLayoutPropagationTransposes import InsertLayoutPropagationTranspose, \ mark_as_correct_data_layout, mark_output_as_in_correct_layout, mark_input_as_in_correct_layout from extensions.middle.LayoutChangeForConstantShapePaths import LayoutChangeForConstantShapePaths from extensions.middle.pass_separator import PostMiddleStart -from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Graph, Node from mo.graph.perm_inputs import PermuteInputs from mo.graph.port import Port @@ -63,7 +49,8 @@ def get_output_nodes(node: Node): result.append(dest_port.node) return result - def bfs(self, start_nodes: list, visited: set, condition: callable = None, forward: bool = True): + @staticmethod + def bfs(start_nodes: list, visited: set, condition: callable = None, forward: bool = True): """ The function performs BFS starting from selected nodes in forward or backward direction adding nodes by an optional condition @@ -75,7 +62,7 @@ def bfs(self, start_nodes: list, visited: set, condition: callable = None, forwa :return: the list of Nodes visited """ assert visited is not None, 'The "visited" set must be defined' - assert start_nodes is not None and len(start_nodes) != 0, 'The list of start nodes must be specified' + assert start_nodes is not None, 'The list of start nodes must be specified' result = list() d = deque(start_nodes) @@ -84,9 +71,9 @@ def bfs(self, start_nodes: list, visited: set, condition: callable = None, forwa result.append(cur_node) visited.add(cur_node) if forward: - next_nodes = self.get_output_nodes(cur_node) + next_nodes = MarkSubGraphsWithCorrectLayout.get_output_nodes(cur_node) else: - next_nodes = self.get_input_nodes(cur_node) + next_nodes = MarkSubGraphsWithCorrectLayout.get_input_nodes(cur_node) for next_node in next_nodes: if next_node not in visited and (condition is None or condition(next_node)): d.append(next_node) diff --git a/model-optimizer/extensions/middle/MoveConstToLoopBody.py b/model-optimizer/extensions/middle/MoveConstToLoopBody.py index c6bb3ef49e6126..0bb15d33b148b2 100644 --- a/model-optimizer/extensions/middle/MoveConstToLoopBody.py +++ b/model-optimizer/extensions/middle/MoveConstToLoopBody.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.loop import Loop from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/MulFakeQuantizeFuse.py b/model-optimizer/extensions/middle/MulFakeQuantizeFuse.py index b4cc9dbdab8b56..70045685e958c3 100644 --- a/model-optimizer/extensions/middle/MulFakeQuantizeFuse.py +++ b/model-optimizer/extensions/middle/MulFakeQuantizeFuse.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from collections import defaultdict from typing import Dict, List diff --git a/model-optimizer/extensions/middle/MulQuantizeFuse_test.py b/model-optimizer/extensions/middle/MulQuantizeFuse_test.py index 29b76bb9123a9a..49503987caa674 100644 --- a/model-optimizer/extensions/middle/MulQuantizeFuse_test.py +++ b/model-optimizer/extensions/middle/MulQuantizeFuse_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/ONNXRNNSequenceNormalize.py b/model-optimizer/extensions/middle/ONNXRNNSequenceNormalize.py index a94b9af116d3a7..e31cbe3858d187 100644 --- a/model-optimizer/extensions/middle/ONNXRNNSequenceNormalize.py +++ b/model-optimizer/extensions/middle/ONNXRNNSequenceNormalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/ONNXResize11ToInterpolate.py b/model-optimizer/extensions/middle/ONNXResize11ToInterpolate.py index d232b99ded9aca..ffd3c27eebdba6 100644 --- a/model-optimizer/extensions/middle/ONNXResize11ToInterpolate.py +++ b/model-optimizer/extensions/middle/ONNXResize11ToInterpolate.py @@ -1,32 +1,19 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log + import numpy as np -from extensions.ops.activation_ops import Floor from extensions.ops.Cast import Cast +from extensions.ops.activation_ops import Floor from extensions.ops.elementwise import Add, Div, Mul from extensions.ops.interpolate import Interpolate from mo.front.common.layout import get_depth_dim, get_height_dim, get_width_dim from mo.front.common.partial_infer.utils import int64_array, float_array from mo.front.tf.graph_utils import create_op_with_const_inputs -from mo.middle.passes.convert_data_type import data_type_str_to_np -from mo.middle.replacement import MiddleReplacementPattern from mo.graph.graph import Graph, Node, rename_nodes +from mo.middle.replacement import MiddleReplacementPattern from mo.ops.const import Const from mo.ops.shape import Shape from mo.ops.strided_slice import StridedSlice @@ -107,10 +94,10 @@ def replace_resize(graph: Graph, resize: Node): {1: float_array([1.0e-5])}, {'name': resize_name + '/Add'}) - input_data_type = data_type_str_to_np(graph.graph['cmd_params'].data_type) + dst_dtype = np.float32 # even if data_type=FP16 use float32 for shape values if num_of_inputs == 3: - cast_shape_to_float = Cast(graph, {'dst_type': input_data_type}).create_node() + cast_shape_to_float = Cast(graph, {'dst_type': dst_dtype}).create_node() mul_node = Mul(graph, {'name': resize_name + '/Mul'}).create_node() shape_of.out_port(0).connect(cast_shape_to_float.in_port(0)) cast_shape_to_float.out_port(0).connect(mul_node.in_port(0)) @@ -132,8 +119,8 @@ def replace_resize(graph: Graph, resize: Node): connection_of_resize_input.get_source().connect(shape_of.in_port(0)) connection_of_scales.get_source().connect(mul_node.in_port(1)) else: - cast_shape_to_float = Cast(graph, {'dst_type': input_data_type}).create_node() - cast_sizes_to_float = Cast(graph, {'dst_type': input_data_type}).create_node() + cast_shape_to_float = Cast(graph, {'dst_type': dst_dtype}).create_node() + cast_sizes_to_float = Cast(graph, {'dst_type': dst_dtype}).create_node() div_node = Div(graph, {'name': resize_name + '/Div'}).create_node() cast_sizes_to_float.out_port(0).connect(div_node.in_port(0)) cast_shape_to_float.out_port(0).connect(div_node.in_port(1)) diff --git a/model-optimizer/extensions/middle/PartialInfer.py b/model-optimizer/extensions/middle/PartialInfer.py index 1461f0791d767d..6c6f6a60d509dc 100644 --- a/model-optimizer/extensions/middle/PartialInfer.py +++ b/model-optimizer/extensions/middle/PartialInfer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph from mo.middle.passes.infer import partial_infer from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/PoolV2ToAttributedPool.py b/model-optimizer/extensions/middle/PoolV2ToAttributedPool.py index 1b0b59b17e07b4..a4b614edcbb207 100644 --- a/model-optimizer/extensions/middle/PoolV2ToAttributedPool.py +++ b/model-optimizer/extensions/middle/PoolV2ToAttributedPool.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph, rename_nodes from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/PoolV2ToAttributedPool_test.py b/model-optimizer/extensions/middle/PoolV2ToAttributedPool_test.py index 5d73f0080d0e3e..2a239fe9b39bbc 100644 --- a/model-optimizer/extensions/middle/PoolV2ToAttributedPool_test.py +++ b/model-optimizer/extensions/middle/PoolV2ToAttributedPool_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.PoolV2ToAttributedPool import PoolV2ToAttributedPool diff --git a/model-optimizer/extensions/middle/RNNSequenceNormalizeToIE.py b/model-optimizer/extensions/middle/RNNSequenceNormalizeToIE.py index a05a04bf5ba9e0..344af300ff5d43 100644 --- a/model-optimizer/extensions/middle/RNNSequenceNormalizeToIE.py +++ b/model-optimizer/extensions/middle/RNNSequenceNormalizeToIE.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/ReluQuantizeFuse.py b/model-optimizer/extensions/middle/ReluQuantizeFuse.py index f581e8f6c6f276..b6f609f6fba1dc 100644 --- a/model-optimizer/extensions/middle/ReluQuantizeFuse.py +++ b/model-optimizer/extensions/middle/ReluQuantizeFuse.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from typing import Dict @@ -34,6 +21,7 @@ class ReluFakeQuantizeMark(MiddleReplacementPattern): """ enabled = True + graph_condition = [lambda graph: not graph.graph['cmd_params'].disable_fusing] def run_after(self): return [BinarizeWeightsM1P1] diff --git a/model-optimizer/extensions/middle/ReluQuantizeFuse_test.py b/model-optimizer/extensions/middle/ReluQuantizeFuse_test.py index 0065a3577b3357..c12ceb592fdc8f 100644 --- a/model-optimizer/extensions/middle/ReluQuantizeFuse_test.py +++ b/model-optimizer/extensions/middle/ReluQuantizeFuse_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/RemoveDuplicationMemory.py b/model-optimizer/extensions/middle/RemoveDuplicationMemory.py index 91f52985a31de5..faa6e037081521 100644 --- a/model-optimizer/extensions/middle/RemoveDuplicationMemory.py +++ b/model-optimizer/extensions/middle/RemoveDuplicationMemory.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/middle/RemoveDuplicationMemory_test.py b/model-optimizer/extensions/middle/RemoveDuplicationMemory_test.py index 9b8de7cd66fd64..a18ea20f40f10e 100644 --- a/model-optimizer/extensions/middle/RemoveDuplicationMemory_test.py +++ b/model-optimizer/extensions/middle/RemoveDuplicationMemory_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.RemoveDuplicationMemory import RemoveMemoryDuplicationPattern, MergeNeighborSplicePattern diff --git a/model-optimizer/extensions/middle/RemoveIdentity.py b/model-optimizer/extensions/middle/RemoveIdentity.py index 02ad2567e76631..cd24b3069d10ad 100644 --- a/model-optimizer/extensions/middle/RemoveIdentity.py +++ b/model-optimizer/extensions/middle/RemoveIdentity.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.middle.passes.eliminate import remove_op_node_with_data_node diff --git a/model-optimizer/extensions/middle/RemoveRedundantReshapeAfterCropAndResize.py b/model-optimizer/extensions/middle/RemoveRedundantReshapeAfterCropAndResize.py index b1deb8cf0c7d48..b9c9ce9e0be6fa 100644 --- a/model-optimizer/extensions/middle/RemoveRedundantReshapeAfterCropAndResize.py +++ b/model-optimizer/extensions/middle/RemoveRedundantReshapeAfterCropAndResize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/RemoveRedundantReshapes.py b/model-optimizer/extensions/middle/RemoveRedundantReshapes.py index 935ebc5f78689f..fca3dd4cb999d4 100644 --- a/model-optimizer/extensions/middle/RemoveRedundantReshapes.py +++ b/model-optimizer/extensions/middle/RemoveRedundantReshapes.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/middle/RemoveUselessConcatSplit.py b/model-optimizer/extensions/middle/RemoveUselessConcatSplit.py index 97aed7266d9fbd..1f16adc63af961 100644 --- a/model-optimizer/extensions/middle/RemoveUselessConcatSplit.py +++ b/model-optimizer/extensions/middle/RemoveUselessConcatSplit.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/RemoveUselessConcatSplit_test.py b/model-optimizer/extensions/middle/RemoveUselessConcatSplit_test.py index 7f91a7e4cbc1b0..d3ebd71ef43aec 100644 --- a/model-optimizer/extensions/middle/RemoveUselessConcatSplit_test.py +++ b/model-optimizer/extensions/middle/RemoveUselessConcatSplit_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.RemoveUselessConcatSplit import RemoveUselessConcatSplitPattern diff --git a/model-optimizer/extensions/middle/RemoveUselessCrops.py b/model-optimizer/extensions/middle/RemoveUselessCrops.py index 785ef4cd429a51..47ae5c6e6104b1 100644 --- a/model-optimizer/extensions/middle/RemoveUselessCrops.py +++ b/model-optimizer/extensions/middle/RemoveUselessCrops.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/RemoveUselessCrops_test.py b/model-optimizer/extensions/middle/RemoveUselessCrops_test.py index 3f6f1eec9df824..e629154285aa89 100644 --- a/model-optimizer/extensions/middle/RemoveUselessCrops_test.py +++ b/model-optimizer/extensions/middle/RemoveUselessCrops_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.RemoveUselessCrops import RemoveUselessCropsPattern diff --git a/model-optimizer/extensions/middle/RemoveUselessPad.py b/model-optimizer/extensions/middle/RemoveUselessPad.py index af6680a83da3f6..b767e6915dc933 100644 --- a/model-optimizer/extensions/middle/RemoveUselessPad.py +++ b/model-optimizer/extensions/middle/RemoveUselessPad.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/RemoveUselessPad_test.py b/model-optimizer/extensions/middle/RemoveUselessPad_test.py index b9fd3f837ec1cb..53059492f003b4 100644 --- a/model-optimizer/extensions/middle/RemoveUselessPad_test.py +++ b/model-optimizer/extensions/middle/RemoveUselessPad_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice.py b/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice.py index 48d9ba0d1077f3..6a70e5337ed5e5 100644 --- a/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice.py +++ b/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice.py @@ -1,28 +1,15 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np -import logging as log -from extensions.front.kaldi.replace_lstm_node_pattern import create_zero_value_with_batch_from_input from extensions.ops.splice import Splice from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Graph, Node from mo.middle.replacement import MiddleReplacementPattern from mo.ops.assign import Assign from mo.ops.concat import Concat +from mo.ops.const import Const from mo.ops.crop import Crop from mo.ops.read_value import ReadValue from mo.ops.result import Result @@ -146,7 +133,9 @@ def replace_pattern(graph: Graph, match: dict): in_shape = input_port.data.get_shape() node_t = abs(node.t) - init_value_memory_out = create_zero_value_with_batch_from_input(input_port, in_shape[1]*node_t) + init_value_memory_out = Const(graph, {'name': 'init_value_' + pair_name, + 'value': np.zeros(int64_array([in_shape[0], in_shape[1]*node_t])), + 'shape': int64_array([in_shape[0], in_shape[1]*node_t])}).create_node() memory_out = ReadValue(graph, {'name': pair_name, 'variable_id': node_name+pair_name}).create_node() init_value_memory_out.out_port(0).connect(memory_out.in_port(0)) @@ -175,14 +164,6 @@ def replace_pattern(graph: Graph, match: dict): memory_in.out_port(0).connect(out.in_port(0)) out_port.get_connection().set_source(memory_out.out_port(0)) - if not graph.graph['cmd_params'].static_shape: - log.error( - "Model can not be translated in a reshape-able way.\n" - "Model Optimizer key static_shape was turned on to prevent related errors.\n" - "There will be no success changing input shapes of the model with the help of " - "InferenceEngine reshape method", extra={'is_warning': True}) - graph.graph['cmd_params'].static_shape = True - graph.remove_node(op_output_id) graph.remove_node(node.id) graph.remove_node(pair_node.id) diff --git a/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice_test.py b/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice_test.py index c00bd53b2b4e38..81c9223a9f62a7 100644 --- a/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice_test.py +++ b/model-optimizer/extensions/middle/ReplaceMemoryOffsetWithSplice_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.ReplaceMemoryOffsetWithSplice import ReplaceMemoryOffsetNodePattern diff --git a/model-optimizer/extensions/middle/ReplacePNorm.py b/model-optimizer/extensions/middle/ReplacePNorm.py index 507f889de9bb28..466542772cb873 100644 --- a/model-optimizer/extensions/middle/ReplacePNorm.py +++ b/model-optimizer/extensions/middle/ReplacePNorm.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.ReduceOps import ReduceSum from extensions.ops.elementwise import Pow from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/middle/ReplacePNormNodePattern_test.py b/model-optimizer/extensions/middle/ReplacePNormNodePattern_test.py index 4bb01dea2122b8..c26f65265ea4c8 100644 --- a/model-optimizer/extensions/middle/ReplacePNormNodePattern_test.py +++ b/model-optimizer/extensions/middle/ReplacePNormNodePattern_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.ReplacePNorm import ReplacePNormNodePattern diff --git a/model-optimizer/extensions/middle/ReplaceSpliceNodePattern.py b/model-optimizer/extensions/middle/ReplaceSpliceNodePattern.py index 3a8042dad6f86f..8be8cb005ab7e7 100644 --- a/model-optimizer/extensions/middle/ReplaceSpliceNodePattern.py +++ b/model-optimizer/extensions/middle/ReplaceSpliceNodePattern.py @@ -1,19 +1,9 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" -from extensions.front.kaldi.replace_lstm_node_pattern import unique_id, create_zero_value_with_batch_from_input +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np + +from extensions.front.kaldi.replace_lstm_node_pattern import unique_id from extensions.ops.split import VariadicSplit from mo.front.common.partial_infer.utils import int64_array from mo.front.tf.graph_utils import create_op_with_const_inputs @@ -21,6 +11,7 @@ from mo.middle.replacement import MiddleReplacementPattern from mo.ops.assign import Assign from mo.ops.concat import Concat +from mo.ops.const import Const from mo.ops.crop import Crop from mo.ops.read_value import ReadValue from mo.ops.result import Result @@ -105,8 +96,11 @@ def replace_pattern(graph: Graph, match: dict): # create separate splice construction for const_dim memory_pair_id = unique_id('memory_for_const_dim') - init_value_input_memory_const_dim = create_zero_value_with_batch_from_input(split.out_port(1), - memory_size_constdim) + init_value_input_memory_const_dim = Const(graph, {'name': 'init_value_const_dim_in_memory', + 'value': np.zeros(int64_array([in_shape[0], + memory_size_constdim])), + 'shape': int64_array([in_shape[0], + memory_size_constdim])}).create_node() input_memory_const_dim = ReadValue(graph, {'name': 'const_dim_in_memory', 'variable_id': memory_pair_id}).create_node() init_value_input_memory_const_dim.out_port(0).connect(input_memory_const_dim.in_port(0)) @@ -141,14 +135,16 @@ def replace_pattern(graph: Graph, match: dict): concat_const.in_port(1).connect(crop_first.out_port(0)) concat_const.in_port(0).connect(concat_node.out_port(0)) - init_value_input_memory = create_zero_value_with_batch_from_input(split.out_port(0), - memory_size) + init_value_input_memory = Const(graph, {'name': 'init_value_' + node.name, + 'value': np.zeros(int64_array([in_shape[0], memory_size])), + 'shape': int64_array([in_shape[0], memory_size])}).create_node() init_value_input_memory.out_port(0).connect(input_memory.in_port(0)) node.in_port(0).get_connection().set_destination(split.in_port(0)) node.out_port(0).get_connection().set_source(concat_const.out_port(0)) else: - init_value_input_memory = create_zero_value_with_batch_from_input(node.in_port(0).get_source(), - memory_size) + init_value_input_memory = Const(graph, {'name': 'init_value_' + node.name, + 'value': np.zeros(int64_array([in_shape[0], memory_size])), + 'shape': int64_array([in_shape[0], memory_size])}).create_node() init_value_input_memory.out_port(0).connect(input_memory.in_port(0)) node.in_port(0).get_connection().set_destination(concat_node.in_port(1)) node.out_port(0).get_connection().set_source(concat_node.out_port(0)) diff --git a/model-optimizer/extensions/middle/ReplaceSpliceNodePattern_test.py b/model-optimizer/extensions/middle/ReplaceSpliceNodePattern_test.py index f02f94138f7364..ec5985196a4d27 100644 --- a/model-optimizer/extensions/middle/ReplaceSpliceNodePattern_test.py +++ b/model-optimizer/extensions/middle/ReplaceSpliceNodePattern_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.ReplaceSpliceNodePattern import ReplaceSpliceNodePattern @@ -44,20 +32,8 @@ def test_splice(self): ref_graph = build_graph({'in_placeholder': {'kind': 'op', 'op': None}, 'in_node': {'kind': 'data', 'shape': [1, 13]}, - 'shape': {'kind': 'op', 'op': 'ShapeOf'}, - 'shape_data': {'kind': 'data'}, - 'crop_batch': {'kind': 'op', 'op': 'Crop', 'offset': int64_array([0])}, - 'crop_batch_data': {'kind': 'data'}, - 'crop_batch_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([1])}, - 'crop_batch_dim_data': {'kind': 'data'}, - 'second_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([143])}, - 'second_dim_data': {'kind': 'data'}, - 'gather_shape': {'kind': 'op', 'op': 'Concat'}, - 'gather_shape_data': {'kind': 'data'}, 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, 'fill_value_data': {'kind': 'data'}, - 'broadcast': {'kind': 'op', 'op': 'Broadcast'}, - 'broadcast_data': {'kind': 'data'}, 'memory_in': {'kind': 'op', 'op': 'ReadValue'}, 'memory_in_data': {'kind': 'data'}, @@ -73,16 +49,7 @@ def test_splice(self): [ ('in_placeholder', 'in_node'), - ('in_node', 'shape'), ('shape', 'shape_data'), - ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), - ('crop_batch_dim', 'crop_batch_dim_data'), - ('crop_batch_dim_data', 'crop_batch', {'in': 1}), - ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), - ('crop_batch_data', 'gather_shape', {'in': 0}), - ('gather_shape', 'gather_shape_data'), - ('fill_value', 'fill_value_data'), ('fill_value_data', 'broadcast', {'in': 0}), - ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), - ('broadcast_data', 'memory_in'), + ('fill_value', 'fill_value_data'), ('fill_value_data', 'memory_in'), ('memory_in', 'memory_in_data'), ('memory_in_data', 'crop_mem'), @@ -116,20 +83,8 @@ def test_splice_with_constdim(self): 'split_data_0': {'kind': 'data'}, 'split_data_1': {'kind': 'data'}, - 'shape': {'kind': 'op', 'op': 'ShapeOf'}, - 'shape_data': {'kind': 'data'}, - 'crop_batch': {'kind': 'op', 'op': 'Crop', 'offset': int64_array([0])}, - 'crop_batch_data': {'kind': 'data'}, - 'crop_batch_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([1])}, - 'crop_batch_dim_data': {'kind': 'data'}, - 'second_dim': {'kind': 'op', 'op': 'Const', 'value': int64_array([33])}, - 'second_dim_data': {'kind': 'data'}, - 'gather_shape': {'kind': 'op', 'op': 'Concat'}, - 'gather_shape_data': {'kind': 'data'}, 'fill_value': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, 'fill_value_data': {'kind': 'data'}, - 'broadcast': {'kind': 'op', 'op': 'Broadcast'}, - 'broadcast_data': {'kind': 'data'}, 'memory_in': {'kind': 'op', 'op': 'ReadValue'}, 'memory_in_data': {'kind': 'data'}, @@ -141,21 +96,10 @@ def test_splice_with_constdim(self): 'memory_out_data': {'kind': 'data'}, 'result': {'kind': 'op', 'op': 'Result'}, - 'shape_2': {'kind': 'op', 'op': 'ShapeOf'}, - 'shape_2_data': {'kind': 'data'}, - 'crop_batch_2': {'kind': 'op', 'op': 'Crop', 'offset': int64_array([0])}, - 'crop_batch_2_data': {'kind': 'data'}, - 'crop_batch_dim_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([1])}, - 'crop_batch_dim_2_data': {'kind': 'data'}, - 'second_dim_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([33])}, - 'second_dim_2_data': {'kind': 'data'}, - 'gather_shape_2': {'kind': 'op', 'op': 'Concat'}, - 'gather_shape_2_data': {'kind': 'data'}, + 'fill_value_2': {'kind': 'op', 'op': 'Const', 'value': int64_array([0])}, 'fill_value_2_data': {'kind': 'data'}, - 'broadcast_2': {'kind': 'op', 'op': 'Broadcast'}, - 'broadcast_2_data': {'kind': 'data'}, - +\ 'memory_in_constdims': {'kind': 'op', 'op': 'ReadValue'}, 'memory_in_constdims_data': {'kind': 'data'}, 'crop_mem_constdims': {'kind': 'op', 'op': 'Crop', 'offset': 10, 'dim': 100}, @@ -183,16 +127,7 @@ def test_splice_with_constdim(self): ('split', 'split_data_0', {'out': 0}), ('split', 'split_data_1', {'out': 1}), - ('split_data_0', 'shape'), ('shape', 'shape_data'), - ('shape_data', 'crop_batch'), ('crop_batch', 'crop_batch_data'), - ('crop_batch_dim', 'crop_batch_dim_data'), - ('crop_batch_dim_data', 'crop_batch', {'in': 1}), - ('second_dim', 'second_dim_data'), ('second_dim_data', 'gather_shape', {'in': 1}), - ('crop_batch_data', 'gather_shape', {'in': 0}), - ('gather_shape', 'gather_shape_data'), - ('fill_value', 'fill_value_data'), ('fill_value_data', 'broadcast', {'in': 0}), - ('gather_shape_data', 'broadcast', {'in': 1}), ('broadcast', 'broadcast_data'), - ('broadcast_data', 'memory_in'), + ('fill_value', 'fill_value_data'), ('fill_value_data', 'memory_in'), ('memory_in', 'memory_in_data'), ('memory_in_data', 'crop_mem'), @@ -204,16 +139,7 @@ def test_splice_with_constdim(self): ('memory_out', 'memory_out_data'), ('memory_out_data', 'result'), - ('split_data_1', 'shape_2'), ('shape_2', 'shape_2_data'), - ('shape_2_data', 'crop_batch_2'), ('crop_batch_2', 'crop_batch_2_data'), - ('crop_batch_dim_2', 'crop_batch_dim_2_data'), - ('crop_batch_dim_2_data', 'crop_batch_2', {'in': 1}), - ('second_dim_2', 'second_dim_2_data'), ('second_dim_2_data', 'gather_shape_2', {'in': 1}), - ('crop_batch_2_data', 'gather_shape_2', {'in': 0}), - ('gather_shape_2', 'gather_shape_2_data'), - ('fill_value_2', 'fill_value_2_data'), ('fill_value_2_data', 'broadcast_2', {'in': 0}), - ('gather_shape_2_data', 'broadcast_2', {'in': 1}), ('broadcast_2', 'broadcast_2_data'), - ('broadcast_2_data', 'memory_in_constdims'), + ('fill_value_2', 'fill_value_2_data'), ('fill_value_2_data', 'memory_in_constdims'), ('memory_in_constdims', 'memory_in_constdims_data'), ('memory_in_constdims_data', 'crop_mem_constdims'), diff --git a/model-optimizer/extensions/middle/ReverseTransposeNormalization.py b/model-optimizer/extensions/middle/ReverseTransposeNormalization.py index 89b93b7cd005c4..34350c1a0a4dc7 100644 --- a/model-optimizer/extensions/middle/ReverseTransposeNormalization.py +++ b/model-optimizer/extensions/middle/ReverseTransposeNormalization.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph, Node diff --git a/model-optimizer/extensions/middle/ReverseV2ToReverseSequence.py b/model-optimizer/extensions/middle/ReverseV2ToReverseSequence.py index 9c9c11575db7f0..f9f9a4ade40d3e 100644 --- a/model-optimizer/extensions/middle/ReverseV2ToReverseSequence.py +++ b/model-optimizer/extensions/middle/ReverseV2ToReverseSequence.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.reverse_sequence import ReverseSequence diff --git a/model-optimizer/extensions/middle/ScaleInput.py b/model-optimizer/extensions/middle/ScaleInput.py index 72755bfcc3570d..4e78e2ac20a0c3 100644 --- a/model-optimizer/extensions/middle/ScaleInput.py +++ b/model-optimizer/extensions/middle/ScaleInput.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.middle.AddMeanScaleValues import AddMeanScaleValues diff --git a/model-optimizer/extensions/middle/SequenceLengthToMask.py b/model-optimizer/extensions/middle/SequenceLengthToMask.py index 65b156d706bbb1..d5a2e1ffe5f72d 100644 --- a/model-optimizer/extensions/middle/SequenceLengthToMask.py +++ b/model-optimizer/extensions/middle/SequenceLengthToMask.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/SequenceLenthToMask_test.py b/model-optimizer/extensions/middle/SequenceLenthToMask_test.py index 5ff0d7d440250c..1f9b5698282c1e 100644 --- a/model-optimizer/extensions/middle/SequenceLenthToMask_test.py +++ b/model-optimizer/extensions/middle/SequenceLenthToMask_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/SharedWeightsDuplication.py b/model-optimizer/extensions/middle/SharedWeightsDuplication.py index 77f5c5756ccdb8..242481af937701 100644 --- a/model-optimizer/extensions/middle/SharedWeightsDuplication.py +++ b/model-optimizer/extensions/middle/SharedWeightsDuplication.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph, Node diff --git a/model-optimizer/extensions/middle/SharedWeightsDuplication_test.py b/model-optimizer/extensions/middle/SharedWeightsDuplication_test.py index 0be30a4242b9d7..9c97f9f5eb3695 100644 --- a/model-optimizer/extensions/middle/SharedWeightsDuplication_test.py +++ b/model-optimizer/extensions/middle/SharedWeightsDuplication_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/SliceConverter.py b/model-optimizer/extensions/middle/SliceConverter.py index 5a9df90917ea90..33135a2e29859b 100644 --- a/model-optimizer/extensions/middle/SliceConverter.py +++ b/model-optimizer/extensions/middle/SliceConverter.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/SliceConverter_test.py b/model-optimizer/extensions/middle/SliceConverter_test.py index 63380c28292248..bfaeefa55cb45f 100644 --- a/model-optimizer/extensions/middle/SliceConverter_test.py +++ b/model-optimizer/extensions/middle/SliceConverter_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/SliceLikeToStridedSlice.py b/model-optimizer/extensions/middle/SliceLikeToStridedSlice.py index c9145a921ad7c4..73d13032b2bdb1 100644 --- a/model-optimizer/extensions/middle/SliceLikeToStridedSlice.py +++ b/model-optimizer/extensions/middle/SliceLikeToStridedSlice.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from typing import Dict diff --git a/model-optimizer/extensions/middle/SliceLikeToStridedSlice_test.py b/model-optimizer/extensions/middle/SliceLikeToStridedSlice_test.py index b8bd16b14a6d46..855a3b741add97 100644 --- a/model-optimizer/extensions/middle/SliceLikeToStridedSlice_test.py +++ b/model-optimizer/extensions/middle/SliceLikeToStridedSlice_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.SliceLikeToStridedSlice import SliceLikeToStridedSlice diff --git a/model-optimizer/extensions/middle/SplitConcatPairToInterpolate.py b/model-optimizer/extensions/middle/SplitConcatPairToInterpolate.py index 01d0353be0a322..cab3203a6cc05e 100644 --- a/model-optimizer/extensions/middle/SplitConcatPairToInterpolate.py +++ b/model-optimizer/extensions/middle/SplitConcatPairToInterpolate.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import numpy as np @@ -32,6 +19,19 @@ def get_concat_after_split(split: Node) -> Optional[Node]: + """ + This function gets consumers of the 'split' node, checks that the following conditions are fulfilled: + 1) 'split' node has only one consumer; + 2) for any output port of 'split', number of corresponding input ports of the consumer is the same; + 3) for any output port 'i' of the 'split', corresponding input ports of the consumer are + [i * m, ..., i * m + (m - 1)], where 'm' is the same for all 'i'; + 4) the consumer operation is 'Concat'; + 5) 'split' is a unique producer for this 'Concat'; + and, if all these conditions are fulfilled, returns the above mentioned 'Concat' node. Otherwise, if some of these + conditions is false, this functions returns None. + :param split: Split node + :return: Concat node, if all conditions are fulfilled, or None otherwise + """ # If number of output nodes of 'split' is not equal to 1, then the transformation is not applicable. split_outputs = [d.node for _, p in split.out_ports().items() for d in p.get_connection().get_destinations()] names_of_split_outputs = set([n.name for n in split_outputs]) @@ -53,7 +53,17 @@ def get_concat_after_split(split: Node) -> Optional[Node]: dest = split.out_port(0).get_destinations()[0].node # The transformation is applicable, only if next node is Concat. - return dest if dest.soft_get('type') == 'Concat' else None + if dest.soft_get('type') != 'Concat': + return + + # The transformation is applicable, only if Split is a unique producer for Concat. + dest_inputs = [p.get_source().node for p in dest.in_ports().values() if not p.disconnected()] + names_of_concat_inputs = set([n.soft_get('name', n.id) for n in dest_inputs]) + expected_number_of_unique_inputs = 1 if dest.has_valid('axis') else 2 + if len(names_of_concat_inputs) != expected_number_of_unique_inputs: + return + + return dest def get_interpolate_pattern(split: Node) -> dict: diff --git a/model-optimizer/extensions/middle/SplitConcatPairToInterpolate_test.py b/model-optimizer/extensions/middle/SplitConcatPairToInterpolate_test.py index 72281f1f55273c..f9358816cad238 100644 --- a/model-optimizer/extensions/middle/SplitConcatPairToInterpolate_test.py +++ b/model-optimizer/extensions/middle/SplitConcatPairToInterpolate_test.py @@ -1,19 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest @@ -503,6 +489,81 @@ } +graph_node_attrs_when_there_are_two_splits_one_concat = { + 'placeholder1': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, + 'placeholder1_data': { + 'value': None, + 'shape': int64_array([1, 13, 13, 3, 2]), + 'kind': 'data', + 'data_type': None + }, + 'placeholder2': {'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, + 'placeholder2_data': { + 'value': None, + 'shape': int64_array([1, 13, 13, 3, 2]), + 'kind': 'data', + 'data_type': None + }, + 'split1': {'type': 'Split', 'kind': 'op', 'op': 'Split', 'num_splits': 2}, + 'split1_axis_const': { + 'kind': 'op', + 'value': np.array(4, dtype=np.int64), + 'op': 'Const', + 'type': 'Const' + }, + 'split1_axis_const_data': { + 'value': np.array(4, dtype=np.int64), + 'shape': np.array(4, dtype=np.int64).shape, + 'kind': 'data' + }, + 'split2': {'type': 'Split', 'kind': 'op', 'op': 'Split', 'num_splits': 2}, + 'split2_axis_const': { + 'kind': 'op', + 'value': np.array(4, dtype=np.int64), + 'op': 'Const', + 'type': 'Const' + }, + 'split2_axis_const_data': { + 'value': np.array(4, dtype=np.int64), + 'shape': np.array(4, dtype=np.int64).shape, + 'kind': 'data' + }, + 'split1_data_0': {'value': None, 'shape': int64_array([1, 13, 13, 3, 1]), 'kind': 'data'}, + 'split1_data_1': {'value': None, 'shape': int64_array([1, 13, 13, 3, 1]), 'kind': 'data'}, + 'split2_data_0': {'value': None, 'shape': int64_array([1, 13, 13, 3, 1]), 'kind': 'data'}, + 'split2_data_1': {'value': None, 'shape': int64_array([1, 13, 13, 3, 1]), 'kind': 'data'}, + 'concat': {'type': 'Concat', 'kind': 'op', 'axis': 4}, + 'concat_data': {'value': None, 'shape': int64_array([1, 13, 13, 3, 4]), 'kind': 'data'}, + 'abs': {'type': 'Abs', 'kind': 'op', 'op': 'Abs'}, + 'abs_data': {'value': None, 'shape': int64_array([1, 13, 13, 3, 4]), 'kind': 'data'}, + 'output': {'kind': 'op', 'op': 'Result'}, +} + + +graph_edges_when_there_are_two_splits_one_concat = [ + ('placeholder1', 'placeholder1_data'), + ('placeholder2', 'placeholder2_data'), + ('placeholder1_data', 'split1', {'in': 0}), + ('split1_axis_const', 'split1_axis_const_data'), + ('split1_axis_const_data', 'split1', {'in': 1}), + ('split1', 'split1_data_0', {'out': 0}), + ('split1', 'split1_data_1', {'out': 1}), + ('placeholder2_data', 'split2', {'in': 0}), + ('split2_axis_const', 'split2_axis_const_data'), + ('split2_axis_const_data', 'split2', {'in': 1}), + ('split2', 'split2_data_0', {'out': 0}), + ('split2', 'split2_data_1', {'out': 1}), + ('split1_data_0', 'concat', {'in': 0}), + ('split1_data_1', 'concat', {'in': 1}), + ('split2_data_0', 'concat', {'in': 2}), + ('split2_data_1', 'concat', {'in': 3}), + ('concat', 'concat_data'), + ('concat_data', 'abs'), + ('abs', 'abs_data'), + ('abs_data', 'output') +] + + class SplitConcatPairToInterpolateTest(unittest.TestCase): def test_spatial_2d_split_concat_1(self): graph = build_graph( @@ -601,3 +662,16 @@ def test_spatial_3d_split_concat_2(self): SplitConcatPairToInterpolate().find_and_replace_pattern(graph) (flag, resp) = compare_graphs(graph, ref_graph, 'output') self.assertTrue(flag, resp) + + def test_two_splits_one_concat(self): + graph = build_graph( + nodes_attrs=graph_node_attrs_when_there_are_two_splits_one_concat, + edges=graph_edges_when_there_are_two_splits_one_concat + ) + ref_graph = build_graph( + nodes_attrs=graph_node_attrs_when_there_are_two_splits_one_concat, + edges=graph_edges_when_there_are_two_splits_one_concat + ) + SplitConcatPairToInterpolate().find_and_replace_pattern(graph) + (flag, resp) = compare_graphs(graph, ref_graph, 'output') + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/middle/StridedSliceNormalizer.py b/model-optimizer/extensions/middle/StridedSliceNormalizer.py index 267ba9cc8bd4b2..580cf533c61221 100644 --- a/model-optimizer/extensions/middle/StridedSliceNormalizer.py +++ b/model-optimizer/extensions/middle/StridedSliceNormalizer.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.split import VariadicSplit @@ -102,6 +90,10 @@ def run_before(self): from extensions.middle.LayoutChangeForConstantShapePaths import LayoutChangeForConstantShapePaths return [LayoutChangeForConstantShapePaths] + def run_after(self): + from extensions.middle.SliceConverter import ConvertSlice + return [ConvertSlice] + def find_and_replace_pattern(self, graph: Graph): for node in graph.get_op_nodes(type='StridedSlice'): StridedSliceNormalizer.normalize_strided_slice(graph, node) @@ -116,7 +108,8 @@ def find_and_replace_pattern(self, graph: Graph): # Until now it was not possible to set correct permutations PermuteInputs().set_input_permutation(node.in_node(1), node, 'input:1', 'slice', 'dim_size') PermuteInputs().set_input_permutation(node.in_node(2), node, 'input:2', 'slice', 'dim_size') - PermuteInputs().set_input_permutation(node.in_node(3), node, 'input:3', 'slice', 'dim_size') + if node.is_in_port_connected(3): + PermuteInputs().set_input_permutation(node.in_node(3), node, 'input:3', 'slice', 'dim_size') @staticmethod def normalize_strided_slice(graph: Graph, node: Node): @@ -157,13 +150,13 @@ def unroll_ellipsis_for_inputs(graph: Graph, node: Node, ellipsis_start: int, nu node_name = node.soft_get('name', node.id) for i, input_name in [(1, 'begin'), (2, 'end'), (3, 'strides')]: + if i == 3 and not node.is_in_port_connected(3): + continue # no need to extend strides if they are not connected + blank_values_arr = np.zeros(num_insertions) if input_name != 'strides' else np.ones(num_insertions) blank_values_node = Const(graph, {'name': node_name + '/const_to_unroll_{}_ellipsis'.format(input_name), 'value': int64_array(blank_values_arr)}).create_node() - if i == 3 and node.in_port(3).disconnected(): - continue # no need to extend strides if they are not connected - concat_in_ports_count = 3 if ellipsis_start != 0 else 2 concat = Concat(graph, {'axis': 0, 'name': node_name + '/concat_{}'.format(input_name), 'in_ports_count': concat_in_ports_count}).create_node() @@ -190,13 +183,13 @@ def extend_inputs(node: Node, num_insertions: int): node_name = node.soft_get('name', node.id) for i, input_name in [(1, 'begin'), (2, 'end'), (3, 'strides')]: + if i == 3 and not node.is_in_port_connected(3): + continue # no need to extend strides if they are not connected + blank_values_arr = np.zeros(num_insertions) if input_name != 'strides' else np.ones(num_insertions) blank_values_node = Const(graph, {'name': node_name + '/extend_{}_const'.format(input_name), 'value': int64_array(blank_values_arr)}).create_node() - if i == 3 and node.in_port(3).disconnected(): - continue # no need to extend strides if they are not connected - if node.in_port(i).get_source().node.soft_get('type') == 'Concat': # concat already exists concat = node.in_port(i).get_source().node @@ -227,7 +220,7 @@ def normalize_slices_attr(node: Node): if strides is None: raise Error('StridedSlice operation for node {} supports only constant strides input'.format(node_name)) else: - strides = np.ones(slice_rank) + strides = np.ones(len(node['slices']), dtype=np.int32) num_ellipsis_inserts = len(data_shape) - slice_rank + np.count_nonzero(node.new_axis_mask) + 1 res_slices = [] diff --git a/model-optimizer/extensions/middle/StridedSliceNormalizer_test.py b/model-optimizer/extensions/middle/StridedSliceNormalizer_test.py index ba560048eb106b..9cb8c6f6dcd5fe 100644 --- a/model-optimizer/extensions/middle/StridedSliceNormalizer_test.py +++ b/model-optimizer/extensions/middle/StridedSliceNormalizer_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np @@ -38,6 +26,12 @@ *connect('strided_slice', 'res') ) +edges_without_strides = ( + *connect('input', '0:strided_slice'), + *connect('begin', '1:strided_slice'), + *connect('end', '2:strided_slice'), + *connect('strided_slice', 'res') +) class TestStridedSliceNormalizer(unittest.TestCase): @@ -108,6 +102,65 @@ def test_strided_slice_extend_inputs(self): (flag, resp) = compare_graphs(graph, graph_ref, 'res', check_op_attrs=False) self.assertTrue(flag, 'Graphs after StridedSliceNormalizer do not match to reference: {}'.format(resp)) + def test_strided_slice_extend_inputs_without_strides(self): + input_shape = (16, 100, 100, 3) + nodes = { + **valued_const_with_data('input', np.arange(np.product(input_shape)).reshape(*input_shape)), + **regular_op_with_empty_data('strided_slice', {'op': 'StridedSlice', + 'type': 'StridedSlice', + 'begin_mask': [1, 1, 1], + 'end_mask': [1, 1, 1], + 'shrink_axis_mask': [1, 0, 0], + 'new_axis_mask': [0, 0, 0], + 'ellipsis_mask': [0, 0, 0], + 'infer': StridedSlice.infer}), + + **regular_op_with_empty_data('strided_slice_ref', {'op': 'StridedSlice', + 'type': 'StridedSlice', + 'begin_mask': [1, 1, 1, 0], + 'end_mask': [1, 1, 1, 0], + 'new_axis_mask': [0, 0, 0, 0], + 'shrink_axis_mask': [1, 0, 0, 0], + 'ellipsis_mask': [0, 0, 0, 0], + 'infer': StridedSlice.infer}), + **valued_const_with_data('begin', int64_array([0, 0, 0])), + **valued_const_with_data('begin_placeholder', int64_array([0])), + **regular_op_with_empty_data('begin_concat', + {'op': 'Concat', 'infer': concat_infer, 'axis': 0, 'dim_attrs': {}}), + **valued_const_with_data('end', int64_array([4, 25, 50])), + **valued_const_with_data('end_placeholder', int64_array([0])), + **regular_op_with_empty_data('end_concat', + {'op': 'Concat', 'infer': concat_infer, 'axis': 0, 'dim_attrs': {}}), + **regular_op('res', {'kind': 'op', 'type': 'Result', 'op': 'Result', 'infer': lambda x: None}) + } + + edges_ref_extended_inputs = ( + *connect('input', '0:strided_slice_ref'), + + *connect('begin', '0:begin_concat'), + *connect('begin_placeholder', '1:begin_concat'), + *connect('begin_concat', '1:strided_slice_ref'), + + *connect('end', '0:end_concat'), + *connect('end_placeholder', '1:end_concat'), + *connect('end_concat', '2:strided_slice_ref'), + + *connect('strided_slice_ref', 'res') + ) + + graph = build_graph(nodes, edges_without_strides, nodes_with_edges_only=True) + graph_ref = build_graph(nodes, edges_ref_extended_inputs, nodes_with_edges_only=True) + graph.stage = 'middle' + graph_ref.stage = 'middle' + + graph = partial_infer(graph) + StridedSliceNormalizer().find_and_replace_pattern(graph) + graph = partial_infer(graph) + graph_ref = partial_infer(graph_ref) + + (flag, resp) = compare_graphs(graph, graph_ref, 'res', check_op_attrs=False) + self.assertTrue(flag, 'Graphs after StridedSliceNormalizer do not match to reference: {}'.format(resp)) + def test_strided_slice_unrooll_ellipsis(self): input_shape = (10, 10, 10, 10) # out = inp[1:4, ..., 0:5] -> inp[1:4, :, :, 0:5] => out_shape = (3, 10, 10, 5) @@ -204,6 +257,84 @@ def test_strided_slice_unrooll_ellipsis(self): (flag, resp) = compare_graphs(graph, graph_ref, 'res', check_op_attrs=False) self.assertTrue(flag, 'Graphs after StridedSliceNormalizer do not match to reference: {}'.format(resp)) + def test_strided_slice_unrooll_ellipsis_without_strides(self): + input_shape = (10, 10, 10, 10) + # out = inp[1:4, ..., 0:5] -> inp[1:4, :, :, 0:5] => out_shape = (3, 10, 10, 5) + ellipsis_start = 1 + + nodes = { + **valued_const_with_data('input', np.arange(np.product(input_shape)).reshape(*input_shape)), + **regular_op_with_empty_data('strided_slice', {'op': 'StridedSlice', 'type': 'StridedSlice', + 'begin_mask': [1, 1, 1], 'end_mask': [1, 1, 1], + 'shrink_axis_mask': [0, 0, 0], + 'new_axis_mask': [0, 0, 0], + 'ellipsis_mask': [0, 1, 0], + 'infer': StridedSlice.infer}), + + **regular_op_with_empty_data('strided_slice_ref', {'op': 'StridedSlice', 'begin_mask': [1, 0, 0, 1], + 'end_mask': [1, 0, 0, 1], 'ellipsis_mask': [0, 0, 0, 0], + 'new_axis_mask': [0, 0, 0, 0], + 'shrink_axis_mask': [0, 0, 0, 0], + 'infer': StridedSlice.infer}), + + **valued_const_with_data('begin', int64_array([1, 0, 0])), + **valued_const_with_data('split_axis_begin', int64_array(0)), + **valued_const_with_data('splits_lengths_begin', int64_array([ellipsis_start, -1])), + **regular_op_with_empty_data('split_for_begin', {'op': 'VariadicSplit', 'infer': VariadicSplit.infer}), + **empty_data('split_for_begin_data_1'), + **valued_const_with_data('begin_placeholder', int64_array([0])), + **regular_op_with_empty_data('begin_concat', + {'op': 'Concat', 'infer': concat_infer, 'axis': 0, 'dim_attrs': {}}), + + + **valued_const_with_data('end', int64_array([4, 0, 5])), + **valued_const_with_data('split_axis_end', int64_array(0)), + **valued_const_with_data('splits_lengths_end', int64_array([ellipsis_start, -1])), + **regular_op_with_empty_data('split_for_end', {'op': 'VariadicSplit', 'infer': VariadicSplit.infer}), + **empty_data('split_for_end_data_1'), + **valued_const_with_data('end_placeholder', int64_array([0])), + **regular_op_with_empty_data('end_concat', + {'op': 'Concat', 'infer': concat_infer, 'axis': 0, 'dim_attrs': {}}), + + **regular_op('res', {'kind': 'op', 'type': 'Result', 'op': 'Result', 'infer': lambda x: None}) + } + + edges_ref_ellipsis_unrolled = ( + *connect('input', '0:strided_slice_ref'), + + *connect('begin', '0:split_for_begin'), + *connect('split_axis_begin', '1:split_for_begin'), + *connect('splits_lengths_begin', '2:split_for_begin'), + *connect('split_for_begin:0', '0:begin_concat'), + *connect('begin_placeholder', '1:begin_concat'), + ('split_for_begin', 'split_for_begin_data_1', {'out': 1, 'in': 2}), + ('split_for_begin_data_1', 'begin_concat', {'out': 1, 'in': 2}), + *connect('begin_concat', '1:strided_slice_ref'), + + *connect('end', '0:split_for_end'), + *connect('split_axis_end', '1:split_for_end'), + *connect('splits_lengths_end', '2:split_for_end'), + *connect('split_for_end:0', '0:end_concat'), + *connect('end_placeholder', '1:end_concat'), + ('split_for_end', 'split_for_end_data_1', {'out': 1, 'in': 2}), + ('split_for_end_data_1', 'end_concat', {'out': 1, 'in': 2}), + *connect('end_concat', '2:strided_slice_ref'), + + *connect('strided_slice_ref', 'res') + ) + + graph = build_graph(nodes, edges_without_strides, nodes_with_edges_only=True) + graph_ref = build_graph(nodes, edges_ref_ellipsis_unrolled, nodes_with_edges_only=True) + graph.stage = 'middle' + graph_ref.stage = 'middle' + graph = partial_infer(graph) + StridedSliceNormalizer().find_and_replace_pattern(graph) + graph = partial_infer(graph) + graph_ref = partial_infer(graph_ref) + + (flag, resp) = compare_graphs(graph, graph_ref, 'res', check_op_attrs=False) + self.assertTrue(flag, 'Graphs after StridedSliceNormalizer do not match to reference: {}'.format(resp)) + class TestStridedSliceShapeInferAfterNormalizer(unittest.TestCase): # check that after inserting Splits and Concats we still get the same shape diff --git a/model-optimizer/extensions/middle/SwapAxesMiddleReplacer.py b/model-optimizer/extensions/middle/SwapAxesMiddleReplacer.py index 0105f9b9919a19..bda8562b8dc4bd 100644 --- a/model-optimizer/extensions/middle/SwapAxesMiddleReplacer.py +++ b/model-optimizer/extensions/middle/SwapAxesMiddleReplacer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.transpose import Transpose from mo.graph.graph import Graph, Node diff --git a/model-optimizer/extensions/middle/TF_lstm_cell_to_generic.py b/model-optimizer/extensions/middle/TF_lstm_cell_to_generic.py index 8ae170fef70b57..13694c4a18bd99 100644 --- a/model-optimizer/extensions/middle/TF_lstm_cell_to_generic.py +++ b/model-optimizer/extensions/middle/TF_lstm_cell_to_generic.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/TensorIteratorBackEdge.py b/model-optimizer/extensions/middle/TensorIteratorBackEdge.py index d3397fcb8374c2..454d87efcdf037 100644 --- a/model-optimizer/extensions/middle/TensorIteratorBackEdge.py +++ b/model-optimizer/extensions/middle/TensorIteratorBackEdge.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log @@ -47,7 +34,11 @@ class BackEdgesMatching(MiddleReplacementPattern): graph_condition = [lambda graph: graph.graph['is_cyclic']] def run_after(self): - return [DynamicDecoderConditionMatcher] + # since the pattern of this transformation contains TensorIteratorCondition, + # condition matchers must be applied first + from extensions.middle.TensorIteratorCondition import DynamicDecoderConditionMatcher, LoopConditionMatcher, \ + SimpleConditionMatcher + return [DynamicDecoderConditionMatcher, SimpleConditionMatcher, LoopConditionMatcher] def run_before(self): from extensions.middle.TensorIteratorMerge import TensorIteratorMerge diff --git a/model-optimizer/extensions/middle/TensorIteratorBackEdge_test.py b/model-optimizer/extensions/middle/TensorIteratorBackEdge_test.py index 9abd5d24013026..370c819637fcfa 100644 --- a/model-optimizer/extensions/middle/TensorIteratorBackEdge_test.py +++ b/model-optimizer/extensions/middle/TensorIteratorBackEdge_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/TensorIteratorCondition.py b/model-optimizer/extensions/middle/TensorIteratorCondition.py index 75048e15aaab34..6f64c402866e92 100644 --- a/model-optimizer/extensions/middle/TensorIteratorCondition.py +++ b/model-optimizer/extensions/middle/TensorIteratorCondition.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log @@ -20,7 +7,8 @@ from extensions.middle.TensorIterator_utils import delete_selects_from from extensions.ops.TensorIterator_ops import TensorIteratorCondition, TensorIteratorBackEdge -from mo.graph.graph import Graph +from extensions.ops.identity import Identity +from mo.graph.graph import Graph, rename_nodes from mo.middle.replacement import MiddleReplacementPattern @@ -213,7 +201,7 @@ def check_dynamic_seq_len(graph: Graph, match: dict): shape. """ dynamic_seq_len = match['Enter_1_less_data'].value is None or match['Enter_2_less_data'].value is None or \ - not np.array_equal(match['Enter_1_less_data'].value, match['Enter_2_less_data'].value) + not np.array_equal(match['Enter_1_less_data'].value, match['Enter_2_less_data'].value) return dynamic_seq_len @@ -260,7 +248,7 @@ def replace_pattern(self, graph: Graph, match: dict): # Add BackEdge for time iterator node backedge = TensorIteratorBackEdge(graph, dict(name='/TimeIterator/TensorIteratorBackEdge_')) backedge_data = backedge.create_node_with_data(inputs=[match['init_2_data'], match['add_2_data'], - condition_data[0]],) + condition_data[0]], ) graph.remove_edge(match['add_2'].in_node(0).id, match['add_2'].id) graph.add_edge(backedge_data.id, match['add_2'].id, **{'in': 0}) @@ -269,7 +257,8 @@ def replace_pattern(self, graph: Graph, match: dict): graph.add_edge(backedge_data.id, greater_equal_id, **{'in': 0}) # nodes for time iterator - safe_nodes += ['init_2_data', 'init_2', 'Identity_2_data', 'add_2_data', 'add_2', 'add_2_y', 'add_2_y_data'] + safe_nodes += ['init_2_data', 'init_2', 'Identity_2_data', 'add_2_data', 'add_2', 'add_2_y', + 'add_2_y_data'] # Manually reshape all iterator nodes (for time) from 0D to 1D iterator_data_nodes = [backedge_data, match['add_2_data'], match['add_2_y_data'], match['add_2_y'], @@ -377,6 +366,10 @@ def replace_pattern(graph: Graph, match: dict): match['loop_cond_data'].value = None + # compute destination (or consumer) ports for time node + identity_node_name = match['Identity_1'].soft_get('name', match['Identity_1'].id) + time_dsts = match['Identity_1'].out_port(0).get_destinations() + # Create condition node and delete all useless nodes from condition pattern condition_attrs = dict(iter=dict(init=init_1, step=step_1), name=match['loop_cond'].name + '/TensorIteratorCondition_') @@ -384,8 +377,35 @@ def replace_pattern(graph: Graph, match: dict): condition.create_node_with_data(inputs=[match['Strided_slice_data']], data_nodes=[match['loop_cond_data'], match['Identity_1_data']]) - # Delete useless nodes safe_nodes = ['loop_cond_data', 'Identity_1_data', 'Strided_slice', 'Strided_slice_data'] + + # check if time node has other consumers different from increment node, + # input slicing and output concatenation nodes + other_time_consumers = False + for time_consumer in time_dsts: + if time_consumer.node.soft_get('op') not in ['TensorIteratorInput', 'TensorIteratorOutput'] and \ + time_consumer.node.id != match['add_1'].id: + other_time_consumers = True + break + if other_time_consumers: + # save time related nodes since they have other consumers different from + # input slicing and output concatenation nodes + safe_nodes += ['init_1', 'init_1_data', 'Enter_1', 'Enter_1_data', 'Merge_1', 'Merge_1_data', + 'Switch_1', 'Switch_1_data', 'add_1', 'add_1_y', 'add_1_y_data', 'add_1_data', + 'NextIteration_1'] + switch_node = match['Switch_1'] + new_identity_node = Identity(graph, dict(name=identity_node_name)).create_node() + switch_node.out_port(1).connect(new_identity_node.in_port(0)) + + # make the graph consistent to avoid multiple producers by the same input port + graph.remove_nodes_from([match['Identity_1'].id]) + rename_nodes([(new_identity_node, identity_node_name)]) + + for time_consumer in time_dsts: + if time_consumer.node.soft_get('op') not in ['TensorIteratorInput', 'TensorIteratorOutput']: + time_consumer.get_connection().set_source(new_identity_node.out_port(0)) + + # Delete useless nodes nodes_for_remove = [] for node in match.keys(): if node not in safe_nodes: @@ -436,13 +456,13 @@ def pattern(): ('add', dict(kind='op', op='Add')), ('add_data', dict(kind='data')), - ('Less_enter', dict(kind='op', op='Enter')), + ('Less_enter', dict(kind='op', op='Enter')), ('Less_enter_data', dict(kind='data')), ('And', dict(kind='op', op='LogicalAnd')), ('And_data', dict(kind='data')), - ('Less', dict(kind='op', op='Less')), + ('Less', dict(kind='op', op='Less')), ('Less_data', dict(kind='data')), ('TensorIteratorOutput', dict(kind='op', op='TensorIteratorOutput')), diff --git a/model-optimizer/extensions/middle/TensorIteratorConditionChecker.py b/model-optimizer/extensions/middle/TensorIteratorConditionChecker.py index 827b5928fe34c4..55edb5b4edbbe6 100644 --- a/model-optimizer/extensions/middle/TensorIteratorConditionChecker.py +++ b/model-optimizer/extensions/middle/TensorIteratorConditionChecker.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/middle/TensorIteratorCondition_test.py b/model-optimizer/extensions/middle/TensorIteratorCondition_test.py index 81838e23657677..6c4d27899fbf21 100644 --- a/model-optimizer/extensions/middle/TensorIteratorCondition_test.py +++ b/model-optimizer/extensions/middle/TensorIteratorCondition_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/middle/TensorIteratorInput.py b/model-optimizer/extensions/middle/TensorIteratorInput.py index c37efb1886819b..48c27c0074e9ce 100644 --- a/model-optimizer/extensions/middle/TensorIteratorInput.py +++ b/model-optimizer/extensions/middle/TensorIteratorInput.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log @@ -239,8 +226,8 @@ def replace_pattern(graph: Graph, match: dict): # We need to create new TensorItertorInput node only if this node doesn't exist already. if (len(init_input.in_nodes()) == 0 or \ - (len(init_input.in_nodes()) == 1 and init_input.has_valid('value') and - init_input.in_node(0).soft_get('op') != 'TensorIteratorInput')): + (len(init_input.in_nodes()) == 1 and init_input.has_valid('value') and + init_input.in_node(0).soft_get('op') != 'TensorIteratorInput')): input_node = TensorIteratorInput(graph, dict(external_port_id=None, internal_layer_id=None, @@ -255,3 +242,180 @@ def replace_pattern(graph: Graph, match: dict): input_data_node.shape = np.array(init_input.shape, dtype=np.int64) graph.remove_edges_from([(init_input.id, match['BackEdge'].id)]) graph.add_edges_from([(input_data_node.id, match['BackEdge'].id, {'in': 0, 'out': 0})]) + + +class SmartMatcherInputSlicingWithGather(MiddleReplacementPattern): + """ + The transformation matches a sub-graph where input tensor is consequently sliced along some axis + for each time step (or index) inside TensorFlow 1.x while_loop operation. + In the original graph StridedSlice with non-constant begin and end attributes performs this slicing. + NonConstBeginStridedSliceReplacement, a front transformation, replaces this StridedSlice with Gather operation + after which the following sub-graph is obtained (Note: no data node is displayed): + + NextIteration <------- Add <--- Time Step + | /\ + \/ | + InitTime ----> Enter --> Merge ---> Switch ---> Identity ------ + | /\ | + \/ | | + MaxTime ---> Less ---> LoopCond Unsqueeze (axis=0) + | | + \/ \/ + Input ---> Enter ----> Merge ---> Switch ---> Identity ---> Gather ---> Squeeze --> Ops (Need Slice at i-th time) + /\ | /\ /\ + | \/ |----Axis----| + -------------------- NextIteration + + Some part of the sub-graph above is replaced with TensorIteratorInput and the following graph is obtained + after the transformation: + + NextIteration <------- Add <--- Time Step + | /\ + \/ | + InitTime ----> Enter --> Merge ---> Switch ---> Identity ------| + | /\ | + \/ | | + MaxTime ---> Less ---> LoopCond | + | | + | |----------------------------------------- + \/ \/ + Input --> TensorIteratorInput(InitTime, TimeStep, Axis) ---> Ops (Need Slice at i-th time) + + Details about TensorIterator (inputs, outputs, and attributes) will be finally used by TensorIteratorMerge + transformation during construction of TensorIterator operation. + """ + + enabled = True + graph_condition = [lambda graph: graph.graph['is_cyclic']] + + def run_after(self): + return [AddIsCyclicAttribute] + + def run_before(self): + from extensions.middle.TensorIteratorBackEdge import BackEdgesMatching + from extensions.middle.TensorIteratorCondition import LoopConditionMatcher + return [BackEdgesMatching, LoopConditionMatcher] + + @staticmethod + def pattern(): + return dict( + nodes=[ + # LoopCond node and related Condition node + ('EnterMaxIndex', dict(kind='op', op='Enter')), + ('EnterMaxIndexData', dict(kind='data')), + ('Less', dict(kind='op', op='Less')), + ('LessData', dict(kind='data')), + ('LoopCond', dict(kind='op', op='LoopCond')), + ('LoopCondData', dict(kind='data')), + + # a list of Input specific nodes + ('EnterInput', dict(kind='op', op='Enter')), + ('EnterInputData', dict(kind='data')), + ('MergeInput', dict(kind='op', op='Merge')), + ('MergeInputData', dict(kind='data')), + ('SwitchInput', dict(kind='op', op='Switch')), + ('SwitchInputData', dict(kind='data')), + ('IdentityInput', dict(kind='op', op='Identity')), + ('IdentityInputData', dict(kind='data')), + ('NextIterationInput', dict(kind='op', op='NextIteration')), + + # a list of Index specific nodes + ('InitIndex', dict(kind='op', op='Const')), + ('InitIndexData', dict(kind='data')), + ('EnterIndex', dict(kind='op', op='Enter')), + ('EnterIndexData', dict(kind='data')), + ('MergeIndex', dict(kind='op', op='Merge')), + ('MergeIndexData', dict(kind='data')), + ('SwitchIndex', dict(kind='op', op='Switch')), + ('SwitchIndexData', dict(kind='data')), + ('IdentityIndex', dict(kind='op', op='Identity')), + ('IdentityIndexData', dict(kind='data')), + ('UnsqueezeIndex', dict(kind='op', op='Unsqueeze')), + ('UnsqueezeIndexData', dict(kind='data')), + ('AddIndex', dict(kind='op', op='Add')), + ('AddIndexData', dict(kind='data')), + ('NextIterationIndex', dict(kind='op', op='NextIteration')), + ('IndexDelta', dict(kind='op', op='Const')), + ('IndexDeltaData', dict(kind='data')), + + # a list of nodes responsible for slicing + ('Axis', dict(kind='op', op='Const')), + ('AxisData', dict(kind='data')), + ('Gather', dict(kind='op', op='Gather')), + ('GatherData', dict(kind='data')), + ('SqueezeSlice', dict(kind='op', op='Squeeze')), + ('SqueezeSliceData', dict(kind='data')), + ], + edges=[ + ('EnterMaxIndex', 'EnterMaxIndexData'), + ('EnterMaxIndexData', 'Less', {'in': 1}), + ('Less', 'LessData'), + ('LessData', 'LoopCond'), + ('LoopCond', 'LoopCondData'), + ('LoopCondData', 'SwitchInput', {'in': 1}), + + ('EnterInput', 'EnterInputData'), + ('EnterInputData', 'MergeInput', {'in': 0}), + ('MergeInput', 'MergeInputData'), + ('MergeInputData', 'SwitchInput', {'in': 0}), + ('SwitchInput', 'SwitchInputData', {'out': 1}), + ('SwitchInputData', 'IdentityInput'), + ('IdentityInput', 'IdentityInputData'), + ('IdentityInputData', 'Gather', {'in': 0}), + ('IdentityInputData', 'NextIterationInput'), + + ('InitIndex', 'InitIndexData'), + ('InitIndexData', 'EnterIndex'), + ('EnterIndex', 'EnterIndexData'), + ('EnterIndexData', 'MergeIndex', {'in': 0}), + ('MergeIndex', 'MergeIndexData'), + ('MergeIndexData', 'SwitchIndex', {'in': 0}), + ('MergeIndexData', 'Less', {'in': 0}), + ('LoopCondData', 'SwitchIndex', {'in': 1}), + ('SwitchIndex', 'SwitchIndexData', {'out': 1}), + ('SwitchIndexData', 'IdentityIndex'), + ('IdentityIndex', 'IdentityIndexData'), + ('IdentityIndexData', 'AddIndex', {'in': 0}), + ('AddIndex', 'AddIndexData'), + ('AddIndexData', 'NextIterationIndex'), + ('IndexDelta', 'IndexDeltaData'), + ('IndexDeltaData', 'AddIndex', {'in': 1}), + + ('IdentityIndexData', 'UnsqueezeIndex'), + ('UnsqueezeIndex', 'UnsqueezeIndexData'), + ('UnsqueezeIndexData', 'Gather', {'in': 1}), + ('Axis', 'AxisData'), + ('AxisData', 'Gather', {'in': 2}), + ('Gather', 'GatherData'), + ('GatherData', 'SqueezeSlice'), + ('SqueezeSlice', 'SqueezeSliceData'), + ], + ) + + @staticmethod + def replace_pattern(graph: Graph, match: dict): + # retrieve attribute values for TensorIteratorInput node + init_time = match['InitIndex'].value.item(0) + time_step = match['IndexDelta'].value.item(0) + axis = match['Axis'].value.item(0) + + # retrieve input and output nodes for TensorIteratorInput node + initial_input_node = match['EnterInput'] + current_index_node = match['IdentityIndex'] + size_node = match['EnterMaxIndex'] + resulted_slice_node = match['SqueezeSlice'] + resulted_slice_node_name = resulted_slice_node.soft_get('name', resulted_slice_node.id) + + # create TensorIteratorInput node that reflects slicing of input for each time step along axis + ti_input_node = TensorIteratorInput(graph, dict(axis=axis, start=init_time, stride=time_step, + name=resulted_slice_node_name + '/TensorIteratorInput') + ).create_node() + size_node.in_port(0).get_connection().add_destination(ti_input_node.in_port(0)) + initial_input_node.in_port(0).get_connection().set_destination(ti_input_node.in_port(1)) + current_index_node.out_port(0).connect(ti_input_node.in_port(2)) + resulted_slice_node.out_port(0).get_connection().set_source(ti_input_node.out_port(0)) + + # delete no longer needed nodes responsible for slicing of input in the original graph + node_names_for_remove = ['EnterInput', 'MergeInput', 'SwitchInput', + 'IdentityInput', 'NextIterationInput', 'SqueezeSlice', 'UnsqueezeIndex', 'Gather'] + graph.remove_nodes_from([match[node_name].id for node_name in node_names_for_remove]) diff --git a/model-optimizer/extensions/middle/TensorIteratorInput_test.py b/model-optimizer/extensions/middle/TensorIteratorInput_test.py index 2279ae837ff88a..34e467349366af 100644 --- a/model-optimizer/extensions/middle/TensorIteratorInput_test.py +++ b/model-optimizer/extensions/middle/TensorIteratorInput_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/middle/TensorIteratorLSTMToLSTMSequence.py b/model-optimizer/extensions/middle/TensorIteratorLSTMToLSTMSequence.py index d2f7f41228ca5d..b4316dce78cde1 100644 --- a/model-optimizer/extensions/middle/TensorIteratorLSTMToLSTMSequence.py +++ b/model-optimizer/extensions/middle/TensorIteratorLSTMToLSTMSequence.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.middle.ONNXRNNSequenceNormalize import ONNXRNNSequenceNormalize from extensions.middle.TF_lstm_cell_to_generic import TensorFlowLSTMtoGeneric diff --git a/model-optimizer/extensions/middle/TensorIteratorMerge.py b/model-optimizer/extensions/middle/TensorIteratorMerge.py index 28716fe69bc89f..3799d1db161a24 100644 --- a/model-optimizer/extensions/middle/TensorIteratorMerge.py +++ b/model-optimizer/extensions/middle/TensorIteratorMerge.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from collections import deque from copy import deepcopy @@ -119,7 +106,7 @@ def pattern(): @staticmethod def replace_pattern(graph, match: dict): # Here we will found all parts of TI: condition, inputs/outputs, back edges, body and create TensorIterator Op - # and make all checks needed for TensorIteator work + # and make all checks needed for TensorIterator work cond_data = match['condition'].out_node(0) if not match['condition'].out_port(0).disconnected() else None time_data = match['condition'].out_node(1) if len(match['condition'].out_nodes()) >= 1 else None name = match['condition'].name @@ -342,6 +329,7 @@ def replace_pattern(graph, match: dict): ext_out['external_port_id'] = internal_id_count internal_id_count += 1 + # create TensorIterator layer with pre-computed components ti_op = TensorIterator(graph, { 'name': name + '/TensorIterator', 'body': body, diff --git a/model-optimizer/extensions/middle/TensorIteratorOutput.py b/model-optimizer/extensions/middle/TensorIteratorOutput.py index 6fa4713b193544..f545747171f013 100644 --- a/model-optimizer/extensions/middle/TensorIteratorOutput.py +++ b/model-optimizer/extensions/middle/TensorIteratorOutput.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/TensorIteratorOutput_test.py b/model-optimizer/extensions/middle/TensorIteratorOutput_test.py index 470a76ca8fd6cb..10792c775ae1f3 100644 --- a/model-optimizer/extensions/middle/TensorIteratorOutput_test.py +++ b/model-optimizer/extensions/middle/TensorIteratorOutput_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/middle/TensorIterator_utils.py b/model-optimizer/extensions/middle/TensorIterator_utils.py index d89d9b730c1df5..9855033f1da5d7 100644 --- a/model-optimizer/extensions/middle/TensorIterator_utils.py +++ b/model-optimizer/extensions/middle/TensorIterator_utils.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph, Node diff --git a/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate.py b/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate.py index d4f9aaf23b7980..30b4625699e931 100644 --- a/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate.py +++ b/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate.py @@ -1,55 +1,69 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log + import numpy as np -from extensions.ops.activation_ops import Floor -from extensions.ops.Cast import Cast from extensions.ops.elementwise import Mul from extensions.ops.interpolate import Interpolate from mo.front.common.partial_infer.utils import int64_array, float32_array +from mo.front.tf.graph_utils import create_op_with_const_inputs from mo.graph.graph import Graph, rename_nodes from mo.middle.replacement import MiddleReplacementPattern -from mo.ops.const import Const from mo.ops.shape import Shape -from mo.ops.strided_slice import StridedSlice +from mo.utils.shape import node_to_get_shape_value_of_indices class UnsqueezeTileReshapeBlockToInterpolate(MiddleReplacementPattern): """ - This transformation looks for Interpolation layer implemented using simple operations, i.e. Unsqueeze, - Tile, Reshape, and replaces found pattern with a sequence of Shape, StridedSlice, Const, Mul, Interpolate. - - Here we assume that the input of 'unsqueeze' is in NDHWC layout and is a 5D-tensor. - - Found pattern will be replaced with - nodes=[ - ('shape', dict(kind='op', op='Shape')), - ('strided_slice', dict(kind='op', op='StridedSlice')), - ('scales', dict(kind='op', op='Const')), - ('scaled_shape', dict(kind='op', op='Mul')), - ('interp', dict(kind='op', op='Interpolate')) - ], - edges=[ - ('shape', 'strided_slice', {'in': 0}), - ('strided_slice', 'scaled_shape', {'in': 0}), - ('scales', 'scaled_shape', {'in': 1}), - ('scaled_shape', 'interp', {'in': 1}), - ] + The transformation looks for a sub-graph performing unsqueeze-ing input tensor by some "axis" and then tiling over + it fixed number of "times". This pattern can be represented with the Interpolate operation of mode "nearest" + performing interpolation over specific "axis" with fixed output dimension size equal to "times". + + Note, that the transformation expects that the output from Tile is reshaped back to the tensor with rank equal to + the input tensor rank. This constraints occurs because the pattern appears in the models where these patterns appear + one after another, performing unsqueeze-ing over different dimensions, effectively performing interpolation over + several dimensions. + + These sequences are merged in the 'optimizer/extensions/middle/InterpolateSequenceToInterpolate.py' transformation + into a single Interpolate operation. + + The transformation is applicable only when all following conditions are fulfilled: + + 1. 'Unsqueeze' must be performed with respect to only one axis. + 2. The length of the value of the second input of 'Tile' must be equal to the input rank of 'Unsqueeze' plus 1. + 3. All elements of the value of the second input of 'Tile' must be equal to 1, + except the value corresponding the interpolated axis. + 4. The input rank of 'Unsqueeze' and the output rank of 'Reshape' must be equal. + + Finally, because plugins support only Interpolate-4 with 4D or 5D tensor with interpolated data, + we need to check that the input rank of 'Unsqueeze' is equal to 4 or 5. + + Example. + + Let data = np.arange(0, 1 * 2 * 3 * 4).reshape((1, 2, 3, 4)).astype(np.float32), that is + data = np.array([[[[ 0, 1, 2, 3], + [ 4, 5, 6, 7], + [ 8, 9, 10, 11]], + [[12, 13, 14, 15], + [16, 17, 18, 19], + [20, 21, 22, 23]]]], dtype=np.float32) + After np.tile(np.expand_dims(data, 3), [1, 1, 1, 2, 1]).reshape((1, 2, 3 * 2, 4)) we get + array([[[[ 0, 1, 2, 3], + [ 0, 1, 2, 3], + [ 4, 5, 6, 7], + [ 4, 5, 6, 7], + [ 8, 9, 10, 11], + [ 8, 9, 10, 11]], + [[12, 13, 14, 15], + [12, 13, 14, 15], + [16, 17, 18, 19], + [16, 17, 18, 19], + [20, 21, 22, 23], + [20, 21, 22, 23]]]], dtype=np.float32) + This result is equal to nearest interpolation along with axis = 2 (the second argument of 'expand_dims') + and scale = 2 (the element from the second argument of 'tile' that is not equal to 1). """ enabled = True force_shape_inference = True @@ -76,79 +90,93 @@ def pattern(self): ] ) - def replace_pattern(self, graph: Graph, match: dict): + @staticmethod + def is_applicable(match: dict) -> bool: + """ + This function checks whether this transformation is applicable. + :param match: dictionary with nodes from the found pattern + :return: True, if the transformation is applicable + False, otherwise + """ unsqueeze_node = match['unsqueeze'] - unsqueeze_name = unsqueeze_node.name - second_input_of_unsqueeze = unsqueeze_node.in_port(1).get_connection().get_source().node - if not second_input_of_unsqueeze.has_valid('value'): - return + if not second_input_of_unsqueeze.has_valid('value') or len(second_input_of_unsqueeze.value) != 1: + return False d_idx = int(second_input_of_unsqueeze.value) + if d_idx == 0: + return False second_input_of_tile = match['tile'].in_port(1).get_connection().get_source().node if not second_input_of_tile.has_valid('value'): - return + return False input_shape_of_unsqueeze = unsqueeze_node.in_port(0).data.get_shape() - if len(input_shape_of_unsqueeze) not in {4, 5}: + input_rank_of_unsqueeze = len(input_shape_of_unsqueeze) + if input_rank_of_unsqueeze not in {4, 5}: + return False + + if input_rank_of_unsqueeze + 1 != len(second_input_of_tile.value): + return False + + expected_tile_constant = np.ones(input_rank_of_unsqueeze + 1) + expected_tile_constant[d_idx] = float(second_input_of_tile.value[d_idx]) + + if not np.array_equal(expected_tile_constant, float32_array(second_input_of_tile.value)): + return False + + reshape_node = match['reshape'] + new_shape = reshape_node.in_port(1).data.get_value() + if new_shape is None or input_rank_of_unsqueeze != len(new_shape): + return False + + return True + + def replace_pattern(self, graph: Graph, match: dict): + if not self.is_applicable(match): return - scale = float32_array([second_input_of_tile.value[d_idx]]) + unsqueeze_node = match['unsqueeze'] + unsqueeze_name = unsqueeze_node.soft_get('name', unsqueeze_node.id) + second_input_of_unsqueeze = unsqueeze_node.in_port(1).get_connection().get_source().node + d_idx = int(second_input_of_unsqueeze.value) axis = d_idx - 1 - axis_node = Const(graph, {'name': unsqueeze_name + '/axis', 'value': int64_array([axis])}).create_node() shape_node = Shape(graph, dict(name=unsqueeze_name + '/Shape')).create_node() - scales_node = Const(graph, dict(name=unsqueeze_name + '/scales', value=scale)).create_node() - mul_node = Mul(graph, dict(name=unsqueeze_name + '/Mul')).create_node() - scales_node.out_port(0).connect(mul_node.in_port(1)) - - slice_begin = Const(graph, dict(name=unsqueeze_name + '/slice_begin', value=int64_array([axis]))).create_node() - slice_end = Const(graph, dict(name=unsqueeze_name + '/slice_end', value=int64_array([axis + 1]))).create_node() - - strided_slice_node = StridedSlice(graph, - {'name': unsqueeze_name + '/StridedSlice', - 'begin_mask': int64_array([1]), - 'end_mask': int64_array([1]), - 'new_axis_mask': int64_array([0]), - 'shrink_axis_mask': int64_array([0]), - 'ellipsis_mask': int64_array([0]), - }).create_node() - shape_node.out_port(0).connect(strided_slice_node.in_port(0)) - slice_begin.out_port(0).connect(strided_slice_node.in_port(1)) - slice_end.out_port(0).connect(strided_slice_node.in_port(2)) - - cast_shape_to_float = Cast(graph, {'dst_type': np.float32}).create_node() - - strided_slice_node.out_port(0).connect(cast_shape_to_float.in_port(0)) - cast_shape_to_float.out_port(0).connect(mul_node.in_port(0)) - - interp_node = Interpolate(graph, - dict(mode='nearest', - antialias=0, pads_begin=int64_array([0]), - pads_end=int64_array([0]), coordinate_transformation_mode='half_pixel', - nearest_mode='round_prefer_floor', cube_coeff=-0.75, - version='opset4', shape_calculation_mode='scales', - in_ports_count=4, - maybe_part_of_sequence=True)).create_node() - - floor_node = Floor(graph, {'name': unsqueeze_name + '/Floor'}).create_node() - cast_mul_result_to_int = Cast(graph, {'dst_type': np.int64}).create_node() - - mul_node.out_port(0).connect(floor_node.in_port(0)) - floor_node.out_port(0).connect(cast_mul_result_to_int.in_port(0)) - - cast_mul_result_to_int.out_port(0).connect(interp_node.in_port(1)) - scales_node.out_port(0).connect(interp_node.in_port(2)) - axis_node.out_port(0).connect(interp_node.in_port(3)) + axis_len_node = node_to_get_shape_value_of_indices(shape_node, [axis]) - reshape_node = match['reshape'] + second_input_of_tile = match['tile'].in_port(1).get_connection().get_source().node + scale = int64_array([second_input_of_tile.value[d_idx]]) + float_scale = float32_array([second_input_of_tile.value[d_idx]]) + mul_node = create_op_with_const_inputs(graph, Mul, {1: scale}, {'name': unsqueeze_name + '/Mul'}) + + axis_len_node.out_port(0).connect(mul_node.in_port(0)) + + interp_node = create_op_with_const_inputs(graph, + Interpolate, + { + 2: float_scale, + 3: int64_array([axis])}, + { + 'mode': 'nearest', + 'antialias': 0, + 'pads_begin': int64_array([0]), + 'pads_end': int64_array([0]), + 'coordinate_transformation_mode': 'half_pixel', + 'nearest_mode': 'round_prefer_floor', + 'cube_coeff': -0.75, + 'version': 'opset4', + 'shape_calculation_mode': 'scales', + 'in_ports_count': 4, + 'maybe_part_of_sequence': True + }) + mul_node.out_port(0).connect(interp_node.in_port(1)) + reshape_node = match['reshape'] reshape_node.out_port(0).get_connection().set_source(interp_node.out_port(0)) reshape_name = reshape_node.soft_get('name', reshape_node.id) rename_nodes([(reshape_node, reshape_name + '/delete'), (interp_node, reshape_name)]) - unsqueeze_connection = match['unsqueeze'].in_port(0).get_connection() - before_unsqueeze = unsqueeze_connection.get_source().node + unsqueeze_connection = unsqueeze_node.in_port(0).get_connection() unsqueeze_connection.set_destination(interp_node.in_port(0)) - before_unsqueeze.out_port(0).connect(shape_node.in_port(0)) + unsqueeze_connection.get_source().connect(shape_node.in_port(0)) diff --git a/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate_test.py b/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate_test.py index 9b24758f34132c..69f9a15ef7f360 100644 --- a/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate_test.py +++ b/model-optimizer/extensions/middle/UnsqueezeTileReshapeBlockToInterpolate_test.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np @@ -127,74 +114,69 @@ 'shape': None, 'value': None, }, - 'strided_slice': { - 'type': 'StridedSlice', + 'gather': { + 'type': 'Gather', 'kind': 'op', - 'op': 'StridedSlice', - 'begin_mask': int64_array([1]), - 'end_mask': int64_array([1]), - 'new_axis_mask': int64_array([0]), - 'shrink_axis_mask': int64_array([0]), - 'ellipsis_mask': int64_array([0]), - }, - 'strided_slice_data': { + 'op': 'Gather' + }, + 'gather_data': { 'kind': 'data', 'shape': None, 'value': None, }, - 'begin': { + 'indices': { 'kind': 'op', 'op': 'Const', 'type': 'Const', 'value': int64_array([1]), 'shape': int64_array([1]), }, - 'begin_data': { + 'indices_data': { 'kind': 'data', 'value': None, 'shape': None, }, - 'end': { + 'gather_axis': { 'kind': 'op', 'op': 'Const', 'type': 'Const', - 'value': int64_array([2]), - 'shape': int64_array([1]), + 'value': np.array(0, dtype=np.int64), + 'shape': np.array(0, dtype=np.int64).shape, }, - 'end_data': { + 'gather_axis_data': { 'kind': 'data', 'value': None, 'shape': None, }, - 'scales': { + 'scales_m': { 'kind': 'op', 'op': 'Const', 'type': 'Const', - 'value': np.array([2], dtype=np.float32), + 'value': np.array([2], dtype=np.int64), 'shape': int64_array([1]), }, - 'scales_data': { + 'scales_m_data': { 'kind': 'data', - 'value': None, - 'shape': None, + 'value': np.array([2], dtype=np.float32), + 'shape': int64_array([1]), }, - 'cast_shape_to_float': {'kind': 'op', 'op': 'Cast', 'type': 'Convert', 'dst_type': np.float32}, - 'cast_shape_to_float_data': {'kind': 'data', 'shape': None}, 'mul': {'type': 'Mul', 'kind': 'op', 'op': 'Mul'}, 'mul_data': { 'kind': 'data', 'value': None, 'shape': None, }, - 'floor': {'kind': 'op', 'op': 'Floor', 'type': 'Floor'}, - 'floor_data': {'kind': 'data', 'shape': None}, - 'cast_mul_to_float': {'kind': 'op', 'op': 'Cast', 'type': 'Convert', 'dst_type': np.int64}, - 'cast_mul_to_float_data': {'kind': 'data', 'shape': None}, - 'interpolate': {'type': 'Interpolate', 'kind': 'op', 'op': 'Interpolate'}, - 'interpolate_data': { + 'scales': { + 'kind': 'op', + 'op': 'Const', + 'type': 'Const', + 'value': np.array([2], dtype=np.float32), + 'shape': int64_array([1]), + }, + 'scales_data': { 'kind': 'data', - 'value': None, - 'shape': int64_array([1, 16, 32, 32, 64]), + 'value': np.array([2], dtype=np.float32), + 'shape': int64_array([1]), }, 'axes': { 'kind': 'op', @@ -204,9 +186,15 @@ 'shape': int64_array([1]), }, 'axes_data': { + 'kind': 'data', + 'value': int64_array([1]), + 'shape': int64_array([1]), + }, + 'interpolate': {'type': 'Interpolate', 'kind': 'op', 'op': 'Interpolate'}, + 'interpolate_data': { 'kind': 'data', 'value': None, - 'shape': None, + 'shape': int64_array([1, 16, 32, 32, 64]), }, 'abs': {'type': 'Abs', 'kind': 'op', 'op': 'Abs'}, 'abs_data': { @@ -222,26 +210,21 @@ ('placeholder', 'placeholder_data'), ('placeholder_data', 'shapeof'), ('shapeof', 'shapeof_data'), - ('shapeof_data', 'strided_slice', {'in': 0}), - ('strided_slice', 'strided_slice_data'), - ('begin', 'begin_data'), - ('begin_data', 'strided_slice', {'in': 1}), - ('end', 'end_data'), - ('end_data', 'strided_slice', {'in': 2}), + ('shapeof_data', 'gather', {'in': 0}), + ('gather', 'gather_data'), + ('indices', 'indices_data'), + ('indices_data', 'gather', {'in': 1}), + ('gather_axis', 'gather_axis_data'), + ('gather_axis_data', 'gather', {'in': 2}), + ('scales_m', 'scales_m_data'), + ('gather_data', 'mul', {'in': 0}), + ('scales_m_data', 'mul', {'in': 1}), + ('mul', 'mul_data'), ('scales', 'scales_data'), - ('strided_slice_data', 'cast_shape_to_float'), - ('cast_shape_to_float', 'cast_shape_to_float_data'), - ('cast_shape_to_float_data', 'mul', {'in': 0}), - ('scales_data', 'mul', {'out': 0, 'in': 1}), + ('axes', 'axes_data'), ('scales_data', 'interpolate', {'out': 0, 'in': 2}), - ('mul', 'mul_data'), - ('mul_data', 'floor'), - ('floor', 'floor_data'), - ('floor_data', 'cast_mul_to_float'), - ('cast_mul_to_float', 'cast_mul_to_float_data'), - ('cast_mul_to_float_data', 'interpolate', {'in': 1}), + ('mul_data', 'interpolate', {'in': 1}), ('placeholder_data', 'interpolate', {'in': 0}), - ('axes', 'axes_data'), ('axes_data', 'interpolate', {'in': 3}), ('interpolate', 'interpolate_data'), ('interpolate_data', 'abs'), diff --git a/model-optimizer/extensions/middle/UpsampleToResample.py b/model-optimizer/extensions/middle/UpsampleToResample.py index 42ea1ce4db28fe..7d265a946a3786 100644 --- a/model-optimizer/extensions/middle/UpsampleToResample.py +++ b/model-optimizer/extensions/middle/UpsampleToResample.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import math @@ -24,7 +11,7 @@ from extensions.ops.elementwise import Mul from extensions.ops.interpolate import Interpolate from mo.front.common.layout import get_height_dim, get_width_dim, get_depth_dim -from mo.front.common.partial_infer.utils import int64_array +from mo.front.common.partial_infer.utils import int64_array, float32_array from mo.front.tf.graph_utils import create_op_with_const_inputs, create_op_node_with_second_input from mo.graph.graph import Graph, Node, rename_nodes from mo.middle.replacement import MiddleReplacementPattern @@ -92,10 +79,10 @@ def replace_pattern(self, graph: Graph, match: Dict[str, Node]): if input_shape_rank == 4: begin_value = int64_array([get_height_dim(layout, input_shape_rank)]) - factor_value = np.array([height_scale, width_scale]) + factor_value = float32_array([height_scale, width_scale]) else: begin_value = int64_array([get_depth_dim(layout, input_shape_rank)]) - factor_value = np.array([depth_scale, height_scale, width_scale]) + factor_value = float32_array([depth_scale, height_scale, width_scale]) ss = create_op_with_const_inputs(graph, StridedSlice, {1: begin_value, @@ -141,7 +128,8 @@ def replace_pattern(self, graph: Graph, match: Dict[str, Node]): mul.out_port(0).connect(interpolate.in_port(1)) axes_node.out_port(0).connect(interpolate.in_port(3)) - scales_node = Const(graph, {'name': upsample_name + '/scales', 'value': factor_value}).create_node() + scales_node = Const(graph, {'name': upsample_name + '/scales', + 'value': factor_value}).create_node() scales_node.out_port(0).connect(interpolate.in_port(2)) upsample.in_port(0).get_connection().set_destination(interpolate.in_port(0)) diff --git a/model-optimizer/extensions/middle/UpsampleToResample_test.py b/model-optimizer/extensions/middle/UpsampleToResample_test.py index 79f8ef5dc13c24..4b27f954225992 100644 --- a/model-optimizer/extensions/middle/UpsampleToResample_test.py +++ b/model-optimizer/extensions/middle/UpsampleToResample_test.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest @@ -20,7 +7,7 @@ from generator import generator, generate from extensions.middle.UpsampleToResample import UpsampleToResample -from mo.front.common.partial_infer.utils import int64_array +from mo.front.common.partial_infer.utils import int64_array, float32_array from mo.utils.ir_engine.compare_graphs import compare_graphs from mo.utils.unittest.graph import build_graph @@ -166,15 +153,26 @@ class UpsampleToResampleTest(unittest.TestCase): ([2, 3, 20, 30, 40], [1, 1, 3, 4, 3], [2, 3, 4]), ([2, 3, 20, 30, 40], [1, 1, 4, 3, 3], [2, 3, 4]), ([2, 3, 20, 30, 40], [1, 1, 3, 3, 4], [2, 3, 4]), + ([2, 10, 20, 30], [1, 1, 5.5, 5.7], [2, 3]), + ([2, 20, 30, 40], [1, 1, 3.3, 3.1], [2, 3]), + ([2, 10, 20, 30], [1, 1, 6.18, 5.34], [2, 3]), + ([2, 20, 30, 40], [1, 1, 3.79, 4.16], [2, 3]), + ([2, 3, 20, 30, 40], [1, 1, 3.12, 3.87, 3.92], [2, 3, 4]), + ([2, 3, 20, 30, 40], [1, 1, 3.74, 4.873, 3.287], [2, 3, 4]), + ([2, 3, 20, 30, 40], [1, 1, 4.8, 3.6, 3.11], [2, 3, 4]), + ([2, 3, 20, 30, 40], [1, 1, 3.33, 3.73, 4.765], [2, 3, 4]), ]) def test_conversion(self, input_shape, scales, axes): + input_shape_as_array = int64_array(input_shape) + scales_as_array = float32_array(scales) graph = build_graph(graph_node_attrs, graph_edges, { - 'placeholder_data': {'shape': int64_array(input_shape)}, - 'scales': {'value': int64_array(scales), 'shape': int64_array(scales).shape}, - 'scales_data': {'value': int64_array(scales), 'shape': int64_array(scales).shape}, - 'upsample_data': {'shape': int64_array(input_shape) * int64_array(scales)} + 'placeholder_data': {'shape': input_shape_as_array}, + 'scales': {'value': scales_as_array, 'shape': scales_as_array.shape}, + 'scales_data': {'value': scales_as_array, 'shape': scales_as_array.shape}, + 'upsample_data': + {'shape': ((input_shape_as_array + 1.e-5) * scales_as_array).astype(np.int64)} }) graph.graph['layout'] = 'NCHW' ref_graph = build_graph(new_ref_graph_node_attr, @@ -185,12 +183,13 @@ def test_conversion(self, input_shape, scales, axes): 'ss_end': {'value': int64_array([axes[-1] + 1])}, 'ss_begin_data': {'value': int64_array([axes[0]])}, 'ss_end_data': {'value': int64_array([axes[-1] + 1])}, - 'factor': {'value': int64_array(scales)[2:], - 'shape': int64_array(scales[2:]).shape}, - 'factor_data': {'value': int64_array(scales)[2:], - 'shape': int64_array(scales[2:]).shape}, + 'factor': {'value': scales_as_array[2:], + 'shape': scales_as_array[2:].shape}, + 'factor_data': {'value': scales_as_array[2:], + 'shape': scales_as_array[2:].shape}, 'axes_const': {'value': int64_array(axes), 'shape': int64_array(axes).shape}, - 'interpolate_data': {'shape': int64_array(input_shape) * int64_array(scales)}, + 'interpolate_data': { + 'shape': (input_shape_as_array * scales_as_array + 1e-5).astype(np.int64)}, }) UpsampleToResample().find_and_replace_pattern(graph) (flag, resp) = compare_graphs(graph, ref_graph, 'output') diff --git a/model-optimizer/extensions/middle/UselessMerge.py b/model-optimizer/extensions/middle/UselessMerge.py index 7846c49cf38818..089e3e99fad8c3 100644 --- a/model-optimizer/extensions/middle/UselessMerge.py +++ b/model-optimizer/extensions/middle/UselessMerge.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/middle/UselessSplitEraser.py b/model-optimizer/extensions/middle/UselessSplitEraser.py index a84cc75c32ebce..5930c499828cfe 100644 --- a/model-optimizer/extensions/middle/UselessSplitEraser.py +++ b/model-optimizer/extensions/middle/UselessSplitEraser.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/__init__.py b/model-optimizer/extensions/middle/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/middle/__init__.py +++ b/model-optimizer/extensions/middle/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/middle/fusings.py b/model-optimizer/extensions/middle/fusings.py index 406e899b4c4d35..1a7224ddfcc234 100644 --- a/model-optimizer/extensions/middle/fusings.py +++ b/model-optimizer/extensions/middle/fusings.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.front.div import Div from extensions.front.sub import Sub from extensions.middle.AddFakeQuantizeFuse import AddFakeQuantizeFuse @@ -99,11 +87,12 @@ def find_and_replace_pattern(self, graph: Graph): for_graph_and_each_sub_graph_recursively(graph, normalize_eltwise_inputs) for_graph_and_each_sub_graph_recursively(graph, lambda G: G.clean_up()) - MarkNodesToFuseUpToFakeQuantize().find_and_replace_pattern(graph) - FakeQuantizeFuse().find_and_replace_pattern(graph) - AddFakeQuantizeFuse().find_and_replace_pattern(graph) - MulFakeQuantizeFuse().find_and_replace_pattern(graph) - for_graph_and_each_sub_graph_recursively(graph, lambda G: G.clean_up()) + if not argv.disable_fusing: + MarkNodesToFuseUpToFakeQuantize().find_and_replace_pattern(graph) + FakeQuantizeFuse().find_and_replace_pattern(graph) + AddFakeQuantizeFuse().find_and_replace_pattern(graph) + MulFakeQuantizeFuse().find_and_replace_pattern(graph) + for_graph_and_each_sub_graph_recursively(graph, lambda G: G.clean_up()) for_graph_and_each_sub_graph_recursively(graph, fuse_pad) for_graph_and_each_sub_graph_recursively(graph, lambda G: G.clean_up()) diff --git a/model-optimizer/extensions/middle/pass_separator.py b/model-optimizer/extensions/middle/pass_separator.py index 89e0a57ef2fc56..9207ea38107155 100644 --- a/model-optimizer/extensions/middle/pass_separator.py +++ b/model-optimizer/extensions/middle/pass_separator.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern diff --git a/model-optimizer/extensions/middle/permute_tensor_iterator.py b/model-optimizer/extensions/middle/permute_tensor_iterator.py index 00df4034de64c7..a51942c9506d37 100644 --- a/model-optimizer/extensions/middle/permute_tensor_iterator.py +++ b/model-optimizer/extensions/middle/permute_tensor_iterator.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/preprocessing.py b/model-optimizer/extensions/middle/preprocessing.py index 97c787dcd6e180..9f5106220a7976 100644 --- a/model-optimizer/extensions/middle/preprocessing.py +++ b/model-optimizer/extensions/middle/preprocessing.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.middle.LeakyReluPattern import LeakyReLUFusion from extensions.middle.pass_separator import PostMiddleStart from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/middle/quantize_fuses.py b/model-optimizer/extensions/middle/quantize_fuses.py index 26f887662fee73..2db975333c1200 100644 --- a/model-optimizer/extensions/middle/quantize_fuses.py +++ b/model-optimizer/extensions/middle/quantize_fuses.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.middle.BinarizeWeightsM1P1 import BinarizeWeightsM1P1 @@ -31,6 +19,7 @@ class MarkNodesToFuseUpToFakeQuantize(MiddleReplacementPattern): """ enabled = True + graph_condition = [lambda graph: not graph.graph['cmd_params'].disable_fusing] def run_after(self): return [DeleteControlFlowEdges] @@ -83,6 +72,7 @@ class FakeQuantizeFuse(MiddleReplacementPattern): replacer duplicates node to fuse (duplicate connections of inputs of node to fuse to duplicates of it) """ enabled = True + graph_condition = [lambda graph: not graph.graph['cmd_params'].disable_fusing] def run_after(self): return [MarkNodesToFuseUpToFakeQuantize] diff --git a/model-optimizer/extensions/middle/quantize_fuses_test.py b/model-optimizer/extensions/middle/quantize_fuses_test.py index d32af2d69d7771..ec7da4b0802d9e 100644 --- a/model-optimizer/extensions/middle/quantize_fuses_test.py +++ b/model-optimizer/extensions/middle/quantize_fuses_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/middle/reverse_tensor_iterator.py b/model-optimizer/extensions/middle/reverse_tensor_iterator.py index 643dd6bae461ba..558551ae8992a7 100644 --- a/model-optimizer/extensions/middle/reverse_tensor_iterator.py +++ b/model-optimizer/extensions/middle/reverse_tensor_iterator.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.middle.ONNXRNNSequenceNormalize import ONNXRNNSequenceNormalize diff --git a/model-optimizer/extensions/middle/sparse_reshape.py b/model-optimizer/extensions/middle/sparse_reshape.py index 5db8b162dcd261..4efd69342f2b8c 100644 --- a/model-optimizer/extensions/middle/sparse_reshape.py +++ b/model-optimizer/extensions/middle/sparse_reshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/middle/sparse_reshape_test.py b/model-optimizer/extensions/middle/sparse_reshape_test.py index d99c202a52ac7a..fbccf744d56877 100644 --- a/model-optimizer/extensions/middle/sparse_reshape_test.py +++ b/model-optimizer/extensions/middle/sparse_reshape_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from extensions.middle.sparse_reshape import SparseReshapeMiddleReplacer diff --git a/model-optimizer/extensions/middle/split_tdnn_memoryoffset.py b/model-optimizer/extensions/middle/split_tdnn_memoryoffset.py index 73e5239551453a..e9762ab515beef 100644 --- a/model-optimizer/extensions/middle/split_tdnn_memoryoffset.py +++ b/model-optimizer/extensions/middle/split_tdnn_memoryoffset.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.middle.replacement import MiddleReplacementPattern @@ -45,4 +32,4 @@ def find_and_replace_pattern(self, graph: Graph): paired_node['element_size'] = offset_node['element_size'] # Copy shape from previous node. Typically (but not always) for TDNN blocks this is the case else: - paired_node['element_size'] = offset_node.in_port(0).data.get_shape()[1] + paired_node['element_size'] = offset_node.in_port(0).data.get_shape() diff --git a/model-optimizer/extensions/ops/BN.py b/model-optimizer/extensions/ops/BN.py index 2e3114d4fcb408..8206a38e8e4506 100644 --- a/model-optimizer/extensions/ops/BN.py +++ b/model-optimizer/extensions/ops/BN.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/BatchNormInference.py b/model-optimizer/extensions/ops/BatchNormInference.py index 307a2ed9af376e..c29f24025b08bd 100644 --- a/model-optimizer/extensions/ops/BatchNormInference.py +++ b/model-optimizer/extensions/ops/BatchNormInference.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/BlockLSTM.py b/model-optimizer/extensions/ops/BlockLSTM.py index de670dec48b96c..d66a565fda308f 100644 --- a/model-optimizer/extensions/ops/BlockLSTM.py +++ b/model-optimizer/extensions/ops/BlockLSTM.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import mark_input_bins from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/ops/Cast.py b/model-optimizer/extensions/ops/Cast.py index 046249567a05a0..8f7ac73ffbec4c 100644 --- a/model-optimizer/extensions/ops/Cast.py +++ b/model-optimizer/extensions/ops/Cast.py @@ -1,23 +1,13 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log -from mo.front.common.partial_infer.elemental import copy_shape_infer +import numpy as np + from mo.graph.graph import Node, Graph -from mo.middle.passes.convert_data_type import np_data_type_to_precision, convert_blob, np_data_type_to_destination_type +from mo.middle.passes.convert_data_type import np_data_type_to_precision, convert_blob, \ + np_data_type_to_destination_type, packed_I4, packed_U4 from mo.ops.op import Op from mo.utils.utils import refer_to_faq_msg @@ -47,23 +37,77 @@ def type_infer(node: Node): assert node.has_valid('dst_type'), 'Destination type of "Cast" operation should be extracted earlier' node.out_port(0).set_data_type(node.dst_type) + @staticmethod + def helper_value_propagation(node_name, value, dst_type): + new_blob, finite_match_count, zero_match_count = convert_blob(value, dst_type) + + if finite_match_count: + log.error("{} elements of {} were clipped to infinity while converting an input blob for node '{}' to {}." + " ".format(finite_match_count, new_blob.size, node_name, dst_type) + refer_to_faq_msg(76)) + if zero_match_count: + log.warning("{} elements of {} were clipped to zero while converting an input blob for node '{}' to {}." + " ".format(zero_match_count, new_blob.size, node_name, dst_type) + refer_to_faq_msg(77)) + return new_blob + + @staticmethod + def custom_type_casting_and_packing(node: Node, value, dst_type): + """ + Custom types are not supported by numpy but we still need to write it to the .bin file in a compact way. + To do so we prepare bit representation of int4/uint4 values and store them in a numpy friendly data type. + We pack int4/uint4 values into uint8 type (two int4/uint4 numbers fit in uint8). + If the number of elements in the blob is odd we pad them with zero value to be able to fit the bit sequence + into the uint8 array. + Example: we need to represent 5 elements of int4 dtype + we would pad them to 6 element with the last element as zero and we would pack them into 3 uint8 values + """ + assert dst_type in [packed_U4, packed_I4] + + minimum_regular_dtype = np.uint8 if dst_type == packed_U4 else np.int8 + # initial casing from the source type to the numpy-friendly type which could absorb all the values of dst_type + casted_to_regular_type = Cast.helper_value_propagation( + node.soft_get('name', node.id), value, minimum_regular_dtype) + + # packing the values + data_shape = node.out_port(0).data.get_shape() + assert data_shape is not None + data_size = np.prod(data_shape) + + num_bits = 4 + assert num_bits < 8 and 8 % num_bits == 0, "Packing algorithm for the data types stored in 1, 2 or 4 bits" + num_values_fitting_into_uint8 = 8 // num_bits + pad = (-data_size) % num_values_fitting_into_uint8 + + flattened = casted_to_regular_type.flatten() + padded = np.concatenate((flattened, np.zeros([pad], dtype=minimum_regular_dtype))) + assert np.prod(padded.shape) % num_values_fitting_into_uint8 == 0 + + bit_order_little = (padded[:, None] & (1 << np.arange(num_bits)) > 0).astype(np.uint8) + bit_order_big = np.flip(bit_order_little, axis=1) + bit_order_big_flattened = bit_order_big.flatten() + packed = np.packbits(bit_order_big_flattened, bitorder='big') + + node.out_node(0)['force_shape'] = data_shape.copy() + node.out_node(0)['force_type'] = np_data_type_to_precision(dst_type) + node.out_port(0).data.set_value(packed) + @staticmethod def infer(node: Node): - assert node.has_valid('dst_type'), 'Destination type of "Cast" operation should be extracted earlier' - dst_type = node.dst_type - copy_shape_infer(node) - if node.has_and_set('stop_value_propagation'): + node_name = node.soft_get('name', node.id) + dst_type = node.soft_get('dst_type', None) + + assert dst_type is not None, \ + 'Destination type of "Cast" operation should be extracted earlier, but it`s not for node: ' + node_name + + input_shape = node.in_port(0).data.get_shape() + assert input_shape is not None + node.out_port(0).data.set_shape(input_shape) + + value = node.in_port(0).data.get_value() + if value is None or node.has_and_set('stop_value_propagation'): return - if node.in_node(0).has_valid('value'): - new_blob, finite_match_count, zero_match_count = convert_blob(node.in_node(0).value, dst_type) - node.out_port(0).data.set_value(new_blob) - - if finite_match_count: - log.error( - ("{} elements of {} were clipped to infinity while converting an input blob for node '{}' to {}. " + - refer_to_faq_msg(76)).format(finite_match_count, new_blob.size, node.name, dst_type)) - if zero_match_count: - log.warning( - ("{} elements of {} were clipped to zero while converting an input blob for node '{}' to {}. " + - refer_to_faq_msg(77)).format(zero_match_count, new_blob.size, node.name, dst_type)) + if dst_type in [packed_U4, packed_I4]: # custom types conversion + Cast.custom_type_casting_and_packing(node, value, dst_type) + else: + node.out_port(0).data.set_value( + Cast.helper_value_propagation(node_name, value, dst_type)) diff --git a/model-optimizer/extensions/ops/ConvertLike.py b/model-optimizer/extensions/ops/ConvertLike.py new file mode 100644 index 00000000000000..de1c90be4db1ff --- /dev/null +++ b/model-optimizer/extensions/ops/ConvertLike.py @@ -0,0 +1,31 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from mo.front.common.partial_infer.elemental import copy_shape_infer +from mo.graph.graph import Node, Graph +from mo.ops.op import Op + + +class ConvertLike(Op): + op = 'ConvertLike' + enabled = False + + def __init__(self, graph: Graph, attrs: dict): + mandatory_props = { + 'op': self.op, + 'type': self.op, + 'version': 'opset1', + + 'infer': copy_shape_infer, + 'type_infer': self.type_infer, + + 'in_ports_count': 2, + 'out_ports_count': 1, + } + super().__init__(graph, mandatory_props, attrs) + + @staticmethod + def type_infer(node: Node): + assert node.is_in_port_connected(1), 'The second input is not connected for a node {}.' \ + ''.format(node.soft_get('name'), node.id) + node.out_port(0).set_data_type(node.in_port(1).get_data_type()) diff --git a/model-optimizer/extensions/ops/DetectionOutput.py b/model-optimizer/extensions/ops/DetectionOutput.py index 787a4b2d207949..55bf0bdcebd6c8 100644 --- a/model-optimizer/extensions/ops/DetectionOutput.py +++ b/model-optimizer/extensions/ops/DetectionOutput.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.common.partial_infer.multi_box_detection import multi_box_detection_infer diff --git a/model-optimizer/extensions/ops/Enter.py b/model-optimizer/extensions/ops/Enter.py index 8c9330580ea744..4f95837996f38f 100644 --- a/model-optimizer/extensions/ops/Enter.py +++ b/model-optimizer/extensions/ops/Enter.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/Exit.py b/model-optimizer/extensions/ops/Exit.py index ba64e892648030..949de86575ab65 100644 --- a/model-optimizer/extensions/ops/Exit.py +++ b/model-optimizer/extensions/ops/Exit.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/ExtractImagePatches.py b/model-optimizer/extensions/ops/ExtractImagePatches.py index 69cd3254df8a25..cd1b4eec9ebb62 100644 --- a/model-optimizer/extensions/ops/ExtractImagePatches.py +++ b/model-optimizer/extensions/ops/ExtractImagePatches.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/ExtractImagePatches_test.py b/model-optimizer/extensions/ops/ExtractImagePatches_test.py index 2d23c16e369e5a..490cb82f8a0bd6 100644 --- a/model-optimizer/extensions/ops/ExtractImagePatches_test.py +++ b/model-optimizer/extensions/ops/ExtractImagePatches_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/GRU.py b/model-optimizer/extensions/ops/GRU.py index e943e7d53e1977..dcb8280ffd227d 100644 --- a/model-optimizer/extensions/ops/GRU.py +++ b/model-optimizer/extensions/ops/GRU.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.RNN import rnn_infer diff --git a/model-optimizer/extensions/ops/GRUCell.py b/model-optimizer/extensions/ops/GRUCell.py index 5ae69b339fdae3..4b6f935621fbdb 100644 --- a/model-optimizer/extensions/ops/GRUCell.py +++ b/model-optimizer/extensions/ops/GRUCell.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.utils import mark_input_bins from mo.front.extractor import bool_to_str from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/ops/GatherTree.py b/model-optimizer/extensions/ops/GatherTree.py index 4dc40de7a018ad..a271b8815d63ab 100644 --- a/model-optimizer/extensions/ops/GatherTree.py +++ b/model-optimizer/extensions/ops/GatherTree.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node, Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/LSTM.py b/model-optimizer/extensions/ops/LSTM.py index a435da8069cc06..0db068b471c3f8 100644 --- a/model-optimizer/extensions/ops/LSTM.py +++ b/model-optimizer/extensions/ops/LSTM.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.RNN import rnn_infer from mo.graph.graph import Node, Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/LookupTableInsert.py b/model-optimizer/extensions/ops/LookupTableInsert.py index a225003a7b1477..4284088623bee9 100644 --- a/model-optimizer/extensions/ops/LookupTableInsert.py +++ b/model-optimizer/extensions/ops/LookupTableInsert.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/LookupTableInsert_test.py b/model-optimizer/extensions/ops/LookupTableInsert_test.py index bf822e3b974e2f..49f40a375640bf 100644 --- a/model-optimizer/extensions/ops/LookupTableInsert_test.py +++ b/model-optimizer/extensions/ops/LookupTableInsert_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/MatMul.py b/model-optimizer/extensions/ops/MatMul.py index 7181ddc33167ee..7fd6cb889375a5 100644 --- a/model-optimizer/extensions/ops/MatMul.py +++ b/model-optimizer/extensions/ops/MatMul.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/MatMul_test.py b/model-optimizer/extensions/ops/MatMul_test.py index 7b4625921c6c5e..9424a26489c1ef 100644 --- a/model-optimizer/extensions/ops/MatMul_test.py +++ b/model-optimizer/extensions/ops/MatMul_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/MatMul_value_propagation_test.py b/model-optimizer/extensions/ops/MatMul_value_propagation_test.py index 9d5a267dddeddd..fe60eec84bcf1b 100644 --- a/model-optimizer/extensions/ops/MatMul_value_propagation_test.py +++ b/model-optimizer/extensions/ops/MatMul_value_propagation_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/NextIteration.py b/model-optimizer/extensions/ops/NextIteration.py index 35b28e3ad452f6..a78d531aa1d6ae 100644 --- a/model-optimizer/extensions/ops/NextIteration.py +++ b/model-optimizer/extensions/ops/NextIteration.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/ONNXResize10.py b/model-optimizer/extensions/ops/ONNXResize10.py index 51d506adc27a43..b2354d4961cc9c 100644 --- a/model-optimizer/extensions/ops/ONNXResize10.py +++ b/model-optimizer/extensions/ops/ONNXResize10.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node, Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/ONNXResize11.py b/model-optimizer/extensions/ops/ONNXResize11.py index 7445b61c27e3d8..5ef8d7f6ac88c2 100644 --- a/model-optimizer/extensions/ops/ONNXResize11.py +++ b/model-optimizer/extensions/ops/ONNXResize11.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/ONNXResize11_test.py b/model-optimizer/extensions/ops/ONNXResize11_test.py index a06e467445d0db..c19ca15d4e7bfc 100644 --- a/model-optimizer/extensions/ops/ONNXResize11_test.py +++ b/model-optimizer/extensions/ops/ONNXResize11_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/RNN.py b/model-optimizer/extensions/ops/RNN.py index 23a54bcfcc0557..e20c12f0cb30a6 100644 --- a/model-optimizer/extensions/ops/RNN.py +++ b/model-optimizer/extensions/ops/RNN.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.common.partial_infer.utils import mark_input_bins diff --git a/model-optimizer/extensions/ops/RNNCell.py b/model-optimizer/extensions/ops/RNNCell.py index 52ec6e77a957b1..065c277ff26231 100644 --- a/model-optimizer/extensions/ops/RNNCell.py +++ b/model-optimizer/extensions/ops/RNNCell.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.utils import mark_input_bins from mo.graph.graph import Graph, Node from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/ReduceOps.py b/model-optimizer/extensions/ops/ReduceOps.py index 3c8cc0714eca12..890f7e77ade0ea 100644 --- a/model-optimizer/extensions/ops/ReduceOps.py +++ b/model-optimizer/extensions/ops/ReduceOps.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/ReduceOps_test.py b/model-optimizer/extensions/ops/ReduceOps_test.py index 2d0fffcc5072b1..9ca82cc9ccd9eb 100644 --- a/model-optimizer/extensions/ops/ReduceOps_test.py +++ b/model-optimizer/extensions/ops/ReduceOps_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/Reverse.py b/model-optimizer/extensions/ops/Reverse.py index 3743b7f06a92b2..f51be7f29ef295 100644 --- a/model-optimizer/extensions/ops/Reverse.py +++ b/model-optimizer/extensions/ops/Reverse.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/Reverse_test.py b/model-optimizer/extensions/ops/Reverse_test.py index b91473e92e485e..892885629d9a7f 100644 --- a/model-optimizer/extensions/ops/Reverse_test.py +++ b/model-optimizer/extensions/ops/Reverse_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/TFResize.py b/model-optimizer/extensions/ops/TFResize.py index 4fcb6fa67ef564..c114a36926ee40 100644 --- a/model-optimizer/extensions/ops/TFResize.py +++ b/model-optimizer/extensions/ops/TFResize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.layout import get_height_dim, get_width_dim from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/extensions/ops/TensorArray.py b/model-optimizer/extensions/ops/TensorArray.py index fcb6e2975cf0dd..40e8ddbfd283bf 100644 --- a/model-optimizer/extensions/ops/TensorArray.py +++ b/model-optimizer/extensions/ops/TensorArray.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/TensorArrayGather.py b/model-optimizer/extensions/ops/TensorArrayGather.py index 82a0362008ab41..e3adca7296c9df 100644 --- a/model-optimizer/extensions/ops/TensorArrayGather.py +++ b/model-optimizer/extensions/ops/TensorArrayGather.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/TensorArrayRead.py b/model-optimizer/extensions/ops/TensorArrayRead.py index 0fd4782f486573..d4d24d33469909 100644 --- a/model-optimizer/extensions/ops/TensorArrayRead.py +++ b/model-optimizer/extensions/ops/TensorArrayRead.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/TensorArrayScatter.py b/model-optimizer/extensions/ops/TensorArrayScatter.py index 6575f2736d77a9..0ef26a20c568f8 100644 --- a/model-optimizer/extensions/ops/TensorArrayScatter.py +++ b/model-optimizer/extensions/ops/TensorArrayScatter.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/TensorArraySize.py b/model-optimizer/extensions/ops/TensorArraySize.py index 114def202a4df3..4281bebdb643d0 100644 --- a/model-optimizer/extensions/ops/TensorArraySize.py +++ b/model-optimizer/extensions/ops/TensorArraySize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/TensorArrayWrite.py b/model-optimizer/extensions/ops/TensorArrayWrite.py index 6c8171cf154c0d..d35ebaa1264fa0 100644 --- a/model-optimizer/extensions/ops/TensorArrayWrite.py +++ b/model-optimizer/extensions/ops/TensorArrayWrite.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/TensorIterator_ops.py b/model-optimizer/extensions/ops/TensorIterator_ops.py index fc2564b4e60fba..c0a0f3c171025a 100644 --- a/model-optimizer/extensions/ops/TensorIterator_ops.py +++ b/model-optimizer/extensions/ops/TensorIterator_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node, Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/__init__.py b/model-optimizer/extensions/ops/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/extensions/ops/__init__.py +++ b/model-optimizer/extensions/ops/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/extensions/ops/accum.py b/model-optimizer/extensions/ops/accum.py index d52833928cc891..c283df30d0131d 100644 --- a/model-optimizer/extensions/ops/accum.py +++ b/model-optimizer/extensions/ops/accum.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/accum_test.py b/model-optimizer/extensions/ops/accum_test.py index 8bd96a9614c7eb..c08f0615a711e1 100644 --- a/model-optimizer/extensions/ops/accum_test.py +++ b/model-optimizer/extensions/ops/accum_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/activation_ops.py b/model-optimizer/extensions/ops/activation_ops.py index c6fb84b56a6108..b9894d529b04c4 100644 --- a/model-optimizer/extensions/ops/activation_ops.py +++ b/model-optimizer/extensions/ops/activation_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/activation_test.py b/model-optimizer/extensions/ops/activation_test.py index 17270d741795c8..49d59637ab6bdb 100644 --- a/model-optimizer/extensions/ops/activation_test.py +++ b/model-optimizer/extensions/ops/activation_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/adaptive_avg_pooling.py b/model-optimizer/extensions/ops/adaptive_avg_pooling.py index 2e2460518b7ac7..9439efecba1c19 100644 --- a/model-optimizer/extensions/ops/adaptive_avg_pooling.py +++ b/model-optimizer/extensions/ops/adaptive_avg_pooling.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Graph, Node diff --git a/model-optimizer/extensions/ops/argmax.py b/model-optimizer/extensions/ops/argmax.py index 366f130327c60a..be6f4ecac62f94 100644 --- a/model-optimizer/extensions/ops/argmax.py +++ b/model-optimizer/extensions/ops/argmax.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/argmax_test.py b/model-optimizer/extensions/ops/argmax_test.py index 8f688ae24e3498..e1f0d42ef0852d 100644 --- a/model-optimizer/extensions/ops/argmax_test.py +++ b/model-optimizer/extensions/ops/argmax_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/assert_op.py b/model-optimizer/extensions/ops/assert_op.py index 3f626cf3d9fbeb..392f528e8fb507 100644 --- a/model-optimizer/extensions/ops/assert_op.py +++ b/model-optimizer/extensions/ops/assert_op.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node, Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/assert_test.py b/model-optimizer/extensions/ops/assert_test.py index 1666250661c27f..d786b7638e93a5 100644 --- a/model-optimizer/extensions/ops/assert_test.py +++ b/model-optimizer/extensions/ops/assert_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from unittest.mock import Mock diff --git a/model-optimizer/extensions/ops/aten.py b/model-optimizer/extensions/ops/aten.py index 92a045d2340cc4..c4849a0e15e572 100644 --- a/model-optimizer/extensions/ops/aten.py +++ b/model-optimizer/extensions/ops/aten.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/axpy.py b/model-optimizer/extensions/ops/axpy.py index c2438765448645..f24982561d894a 100644 --- a/model-optimizer/extensions/ops/axpy.py +++ b/model-optimizer/extensions/ops/axpy.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/binarization.py b/model-optimizer/extensions/ops/binarization.py index c30226f233c33d..5a32bf4b7d7747 100644 --- a/model-optimizer/extensions/ops/binarization.py +++ b/model-optimizer/extensions/ops/binarization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/box_nms.py b/model-optimizer/extensions/ops/box_nms.py index affcccc8ba9f9e..d42e68b42ac166 100644 --- a/model-optimizer/extensions/ops/box_nms.py +++ b/model-optimizer/extensions/ops/box_nms.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node, Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/bucketize.py b/model-optimizer/extensions/ops/bucketize.py index 777a28b9c400d5..c7e6ad8fa968ba 100644 --- a/model-optimizer/extensions/ops/bucketize.py +++ b/model-optimizer/extensions/ops/bucketize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/bucketize_test.py b/model-optimizer/extensions/ops/bucketize_test.py index 6dab647a3fe641..6334d362dd5400 100644 --- a/model-optimizer/extensions/ops/bucketize_test.py +++ b/model-optimizer/extensions/ops/bucketize_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/cast_test.py b/model-optimizer/extensions/ops/cast_test.py new file mode 100644 index 00000000000000..dc0f6449c99f80 --- /dev/null +++ b/model-optimizer/extensions/ops/cast_test.py @@ -0,0 +1,113 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np +import unittest +from generator import generator, generate + +from extensions.ops.Cast import Cast +from mo.middle.passes.convert_data_type import packed_U4, packed_I4 +from mo.middle.passes.infer import partial_infer +from mo.utils.ir_engine.compare_graphs import compare_graphs +from mo.utils.unittest.graph import valued_const_with_data, regular_op_with_empty_data, \ + result, build_graph, connect + +nodes = lambda value, dst_type: { + **valued_const_with_data('value', np.array(value)), + **regular_op_with_empty_data('convert', {'dst_type': dst_type, 'infer': Cast.infer}), + **result(), +} + + +@generator +class CastTest(unittest.TestCase): + """ + Example of checking: + 7 == 0111, padded to 0111 0000, results in 112 + 7 == 0111, 8 == 1000 packed to 0111 1000, results in 120 + + -8 == 1000, padded to 1000 0000, results in 128 + """ + + @generate(*[ + ([0], [0], packed_U4), + ([1], [16], packed_U4), + ([2], [32], packed_U4), + ([3], [48], packed_U4), + ([4], [64], packed_U4), + ([5], [80], packed_U4), + ([6], [96], packed_U4), + ([7], [112], packed_U4), + ([8], [128], packed_U4), + ([9], [144], packed_U4), + ([10], [160], packed_U4), + ([11], [176], packed_U4), + ([12], [192], packed_U4), + ([13], [208], packed_U4), + ([14], [224], packed_U4), + ([15], [240], packed_U4), + + ([0, 15], [15], packed_U4), + ([1, 14], [30], packed_U4), + ([2, 13], [45], packed_U4), + ([3, 12], [60], packed_U4), + ([4, 11], [75], packed_U4), + ([5, 10], [90], packed_U4), + ([6, 9], [105], packed_U4), + ([7, 8], [120], packed_U4), + ([8, 7], [135], packed_U4), + ([9, 6], [150], packed_U4), + ([10, 5], [165], packed_U4), + ([11, 4], [180], packed_U4), + ([12, 3], [195], packed_U4), + ([13, 2], [210], packed_U4), + ([14, 1], [225], packed_U4), + ([15, 0], [240], packed_U4), + + ([-8], [128], packed_I4), + ([-7], [144], packed_I4), + ([-6], [160], packed_I4), + ([-5], [176], packed_I4), + ([-4], [192], packed_I4), + ([-3], [208], packed_I4), + ([-2], [224], packed_I4), + ([-1], [240], packed_I4), + ([0], [0], packed_I4), + ([1], [16], packed_I4), + ([2], [32], packed_I4), + ([3], [48], packed_I4), + ([4], [64], packed_I4), + ([5], [80], packed_I4), + ([6], [96], packed_I4), + ([7], [112], packed_I4), + + ([-8, 7], [135], packed_I4), + ([-7, 6], [150], packed_I4), + ([-6, 5], [165], packed_I4), + ([-5, 4], [180], packed_I4), + ([-4, 3], [195], packed_I4), + ([-3, 2], [210], packed_I4), + ([-2, 1], [225], packed_I4), + ([-1, 0], [240], packed_I4), + ([0, -1], [15], packed_I4), + ([1, -2], [30], packed_I4), + ([2, -3], [45], packed_I4), + ([3, -4], [60], packed_I4), + ([4, -5], [75], packed_I4), + ([5, -6], [90], packed_I4), + ([6, -7], [105], packed_I4), + ([7, -8], [120], packed_I4), + ]) + def test_custom_value_propagation(self, value, expected, custom_dtype): + graph = build_graph(nodes(value, custom_dtype), [ + *connect('value', 'convert'), *connect('convert', 'output'), + ]) + partial_infer(graph) + + graph_ref = build_graph(nodes(value, custom_dtype), [ + *connect('value', 'convert'), *connect('convert', 'output')], + {'convert_d': {'force_type': custom_dtype, 'force_shape': np.array(value).shape, + 'value': expected}}) + + (flag, resp) = compare_graphs(graph, graph_ref, 'output', check_op_attrs=True) + self.assertTrue(flag, resp) diff --git a/model-optimizer/extensions/ops/constant_fill.py b/model-optimizer/extensions/ops/constant_fill.py index 46cabbf914d1d6..fcbc93d8eaa27a 100644 --- a/model-optimizer/extensions/ops/constant_fill.py +++ b/model-optimizer/extensions/ops/constant_fill.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/copyop.py b/model-optimizer/extensions/ops/copyop.py index dbd0977a4d0c6c..8944e768fd53e9 100644 --- a/model-optimizer/extensions/ops/copyop.py +++ b/model-optimizer/extensions/ops/copyop.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/correlation.py b/model-optimizer/extensions/ops/correlation.py index b0396435f0fdae..fa15707ccf0415 100644 --- a/model-optimizer/extensions/ops/correlation.py +++ b/model-optimizer/extensions/ops/correlation.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from math import ceil diff --git a/model-optimizer/extensions/ops/correlation_test.py b/model-optimizer/extensions/ops/correlation_test.py index e9072095e454a1..d28835cbc42633 100644 --- a/model-optimizer/extensions/ops/correlation_test.py +++ b/model-optimizer/extensions/ops/correlation_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/ctc_greedy_decoder.py b/model-optimizer/extensions/ops/ctc_greedy_decoder.py index 9d0fda38ae666d..84f9fba72d3395 100644 --- a/model-optimizer/extensions/ops/ctc_greedy_decoder.py +++ b/model-optimizer/extensions/ops/ctc_greedy_decoder.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.extractor import bool_to_str diff --git a/model-optimizer/extensions/ops/ctc_greedy_decoder_seq_len.py b/model-optimizer/extensions/ops/ctc_greedy_decoder_seq_len.py new file mode 100644 index 00000000000000..bf6d4edec8d9db --- /dev/null +++ b/model-optimizer/extensions/ops/ctc_greedy_decoder_seq_len.py @@ -0,0 +1,79 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np + +from mo.front.common.partial_infer.utils import int64_array +from mo.front.extractor import bool_to_str +from mo.graph.graph import Node, Graph +from mo.middle.passes.convert_data_type import np_data_type_to_destination_type +from mo.ops.op import Op +from mo.utils.error import Error + + +class CTCGreedyDecoderSeqLenOp(Op): + op = 'CTCGreedyDecoderSeqLen' + + def __init__(self, graph: Graph, attrs: dict): + mandatory_props = { + 'type': self.op, + 'op': self.op, + 'version': 'opset6', + + 'infer': self.infer, + 'type_infer': self.type_infer, + + 'in_ports_count': 3, + 'out_ports_count': 2, + + 'merge_repeated': True, + 'classes_index_type': np.int32, + 'sequence_length_type': np.int32 + } + super().__init__(graph, mandatory_props, attrs) + + def backend_attrs(self): + version = self.get_opset() + if version == 'opset6': + return [('classes_index_type', lambda node: np_data_type_to_destination_type(node.classes_index_type)), + ('sequence_length_type', lambda node: np_data_type_to_destination_type(node.sequence_length_type)), + ('merge_repeated', lambda node: bool_to_str(node, 'merge_repeated'))] + else: + raise Error('Unknown opset version "{}"'.format(version)) + + @staticmethod + def type_infer(node): + opset = node.get_opset() + if opset == 'opset6': + node.out_port(0).set_data_type(node.classes_index_type) + node.out_port(1).set_data_type(node.sequence_length_type) + + @staticmethod + def infer(node: Node): + node_name = node.soft_get('name', node.id) + connected_in_ports = [port for port in node.in_ports().values() if not port.disconnected()] + assert len(connected_in_ports) in [2, 3], \ + "Incorrect number of inputs for {} node".format(node_name) + + logits_shape = node.in_port(0).data.get_shape() + sequence_len_shape = node.in_port(1).data.get_shape() + if len(node.in_nodes()) == 3: + blank_index_shape = node.in_port(2).data.get_shape() + assert len(blank_index_shape) == 1, \ + 'Incorrect rank of blank_index for {} node'.format(node_name) + + # check shapes of input tensors + assert len(logits_shape) == 3, \ + 'Incorrect rank of logits for {} node'.format(node_name) + + assert len(sequence_len_shape) == 1, \ + 'Incorrect rank of sequence length tensor for {} node'.format(node_name) + assert logits_shape[0] == sequence_len_shape[0], \ + 'Batch dimensions of input tensors must be the same for {} node'.format(node_name) + + batch_size = logits_shape[0] + time_size = logits_shape[1] + if node.is_out_port_connected(0): + node.out_port(0).data.set_shape(int64_array([batch_size, time_size])) + if node.is_out_port_connected(1): + node.out_port(1).data.set_shape(int64_array([batch_size])) diff --git a/model-optimizer/extensions/ops/ctc_greedy_decoder_test.py b/model-optimizer/extensions/ops/ctc_greedy_decoder_test.py index b8bf3038e4ed21..6e445ce4ac6f96 100644 --- a/model-optimizer/extensions/ops/ctc_greedy_decoder_test.py +++ b/model-optimizer/extensions/ops/ctc_greedy_decoder_test.py @@ -1,24 +1,11 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np -from extensions.ops.ctc_greedy_decoder import CTCGreedyDecoderOp +from extensions.ops.ctc_greedy_decoder_seq_len import CTCGreedyDecoderSeqLenOp from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Node from mo.utils.unittest.graph import build_graph @@ -28,68 +15,73 @@ 'logits_data': {'shape': None, 'value': None, 'kind': 'data'}, 'seq_mask': {'kind': 'op'}, 'seq_mask_data': {'shape': None, 'value': None, 'kind': 'data'}, - 'ctcgreedydecoder_node': {'op': 'CTCGreedyDecoder', 'kind': 'op', + 'ctcgreedydecoder_node': {'op': 'CTCGreedyDecoderSeqLen', 'kind': 'op', 'ctc_merge_repeated': True}, - 'output': {'shape': None, 'value': None, 'kind': 'data'}} + 'output1': {'shape': None, 'value': None, 'kind': 'data'}, + 'last_output1': {'shape': None, 'value': None, 'kind': 'op'}, + 'output2': {'shape': None, 'value': None, 'kind': 'data'} + } # graph 1 edges1 = [('logits', 'logits_data'), ('seq_mask', 'seq_mask_data'), ('logits_data', 'ctcgreedydecoder_node', {'in': 0}), ('seq_mask_data', 'ctcgreedydecoder_node', {'in': 1}), - ('ctcgreedydecoder_node', 'output', {'out': 0})] + ('ctcgreedydecoder_node', 'output1', {'out': 0}), + ('ctcgreedydecoder_node', 'output2', {'out': 1}), + ('output1', 'last_output1', {'out': 0}),] # valid test case -inputs1 = {'logits_data': {'shape': int64_array([100, 4, 5])}, - 'seq_mask_data': {'shape': int64_array([100, 4])}} +inputs1 = {'logits_data': {'shape': int64_array([4, 100, 5])}, + 'seq_mask_data': {'shape': int64_array([4])}} # invalid test case with incorrect rank for the first input tensor -inputs1_inv = {'logits_data': {'shape': int64_array([100, 4, 5, 6])}, - 'seq_mask_data': {'shape': int64_array([100, 4])}} +inputs1_inv = {'logits_data': {'shape': int64_array([4, 100, 5, 6])}, + 'seq_mask_data': {'shape': int64_array([4])}} # invalid test case with incorrect rank for the second input tensor -inputs2_inv = {'logits_data': {'shape': int64_array([100, 4, 5])}, - 'seq_mask_data': {'shape': int64_array([100])}} +inputs2_inv = {'logits_data': {'shape': int64_array([4, 100, 5])}, + 'seq_mask_data': {'shape': int64_array([4, 100])}} # invalid test case with incorrect time dimension -inputs3_inv = {'logits_data': {'shape': int64_array([100, 4, 5])}, - 'seq_mask_data': {'shape': int64_array([101, 4])}} +inputs3_inv = {'logits_data': {'shape': int64_array([4, 100, 5])}, + 'seq_mask_data': {'shape': int64_array([4, 101])}} # invalid test case with incorrect batch dimension -inputs4_inv = {'logits_data': {'shape': int64_array([100, 4, 5])}, - 'seq_mask_data': {'shape': int64_array([100, 14])}} +inputs4_inv = {'logits_data': {'shape': int64_array([4, 100, 5])}, + 'seq_mask_data': {'shape': int64_array([14, 100])}} class TestCTCGreedyDecoder(unittest.TestCase): def test_infer1(self): graph = build_graph(nodes_attributes, edges1, inputs1) ctcgreedydecoder_node = Node(graph, 'ctcgreedydecoder_node') - CTCGreedyDecoderOp.infer(ctcgreedydecoder_node) + CTCGreedyDecoderSeqLenOp.infer(ctcgreedydecoder_node) # prepare reference results - ref_output_shape = int64_array([4, 100, 1, 1]) + ref_output1_shape = int64_array([4, 100]) # get the result - res_output_shape = graph.node['output']['shape'] + res_output1_shape = graph.node['output1']['shape'] - self.assertTrue(np.array_equal(ref_output_shape, res_output_shape), - 'shapes do not match expected: {} and given: {}'.format(ref_output_shape, res_output_shape)) + self.assertTrue(np.array_equal(ref_output1_shape, res_output1_shape), + 'shapes do not match expected: {} and given: {}'.format(ref_output1_shape, res_output1_shape)) def test_infer_invalid1(self): graph = build_graph(nodes_attributes, edges1, inputs1_inv) ctcgreedydecoder_node = Node(graph, 'ctcgreedydecoder_node') - self.assertRaises(AssertionError, CTCGreedyDecoderOp.infer, ctcgreedydecoder_node) + self.assertRaises(AssertionError, CTCGreedyDecoderSeqLenOp.infer, ctcgreedydecoder_node) def test_infer_invalid2(self): graph = build_graph(nodes_attributes, edges1, inputs2_inv) ctcgreedydecoder_node = Node(graph, 'ctcgreedydecoder_node') - self.assertRaises(AssertionError, CTCGreedyDecoderOp.infer, ctcgreedydecoder_node) + self.assertRaises(AssertionError, CTCGreedyDecoderSeqLenOp.infer, ctcgreedydecoder_node) def test_infer_invalid3(self): graph = build_graph(nodes_attributes, edges1, inputs3_inv) ctcgreedydecoder_node = Node(graph, 'ctcgreedydecoder_node') - self.assertRaises(AssertionError, CTCGreedyDecoderOp.infer, ctcgreedydecoder_node) + self.assertRaises(AssertionError, CTCGreedyDecoderSeqLenOp.infer, ctcgreedydecoder_node) def test_infer_invalid4(self): graph = build_graph(nodes_attributes, edges1, inputs4_inv) ctcgreedydecoder_node = Node(graph, 'ctcgreedydecoder_node') - self.assertRaises(AssertionError, CTCGreedyDecoderOp.infer, ctcgreedydecoder_node) + self.assertRaises(AssertionError, CTCGreedyDecoderSeqLenOp.infer, ctcgreedydecoder_node) diff --git a/model-optimizer/extensions/ops/ctc_loss.py b/model-optimizer/extensions/ops/ctc_loss.py index 1a5bdce41aab75..d4751d5cdb8b66 100644 --- a/model-optimizer/extensions/ops/ctc_loss.py +++ b/model-optimizer/extensions/ops/ctc_loss.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/ctc_loss_test.py b/model-optimizer/extensions/ops/ctc_loss_test.py index 7d53804dfa3363..66562b60d68f21 100644 --- a/model-optimizer/extensions/ops/ctc_loss_test.py +++ b/model-optimizer/extensions/ops/ctc_loss_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/cumsum.py b/model-optimizer/extensions/ops/cumsum.py index f7a6dc130b5e6c..be3d2e2dfb5e11 100644 --- a/model-optimizer/extensions/ops/cumsum.py +++ b/model-optimizer/extensions/ops/cumsum.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.extractor import bool_to_str diff --git a/model-optimizer/extensions/ops/cumsum_test.py b/model-optimizer/extensions/ops/cumsum_test.py index e6756551a42f4e..c44517e96bf570 100644 --- a/model-optimizer/extensions/ops/cumsum_test.py +++ b/model-optimizer/extensions/ops/cumsum_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/data_augmentation.py b/model-optimizer/extensions/ops/data_augmentation.py index 55d9074438e90d..d315031717bed9 100644 --- a/model-optimizer/extensions/ops/data_augmentation.py +++ b/model-optimizer/extensions/ops/data_augmentation.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # Concat infer : N - number of inputs to concat # axis - dimension number for tensors concatenation diff --git a/model-optimizer/extensions/ops/data_augmentation_test.py b/model-optimizer/extensions/ops/data_augmentation_test.py index 7d704d864cd16c..c67fc888b8c94b 100644 --- a/model-optimizer/extensions/ops/data_augmentation_test.py +++ b/model-optimizer/extensions/ops/data_augmentation_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/depth_to_space.py b/model-optimizer/extensions/ops/depth_to_space.py index 1978b48323f19f..831252ffe687ec 100644 --- a/model-optimizer/extensions/ops/depth_to_space.py +++ b/model-optimizer/extensions/ops/depth_to_space.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/depth_to_space_test.py b/model-optimizer/extensions/ops/depth_to_space_test.py index e8e558c3aba3a9..c6f3a2fba978a3 100644 --- a/model-optimizer/extensions/ops/depth_to_space_test.py +++ b/model-optimizer/extensions/ops/depth_to_space_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np diff --git a/model-optimizer/extensions/ops/dequantize_linear.py b/model-optimizer/extensions/ops/dequantize_linear.py index 81fe2014559d8c..ec4fc70ac9dbf6 100644 --- a/model-optimizer/extensions/ops/dequantize_linear.py +++ b/model-optimizer/extensions/ops/dequantize_linear.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/detectionoutput_onnx.py b/model-optimizer/extensions/ops/detectionoutput_onnx.py index a5de6ec9b02e92..bae3f743afded1 100644 --- a/model-optimizer/extensions/ops/detectionoutput_onnx.py +++ b/model-optimizer/extensions/ops/detectionoutput_onnx.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/div_value_propagation_test.py b/model-optimizer/extensions/ops/div_value_propagation_test.py index 31b53d05a733b3..6ae15b02b06464 100644 --- a/model-optimizer/extensions/ops/div_value_propagation_test.py +++ b/model-optimizer/extensions/ops/div_value_propagation_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/elementwise.py b/model-optimizer/extensions/ops/elementwise.py index ee2187fe4da42b..e9c451b96be55d 100644 --- a/model-optimizer/extensions/ops/elementwise.py +++ b/model-optimizer/extensions/ops/elementwise.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/elementwise_test.py b/model-optimizer/extensions/ops/elementwise_test.py index 990a89c1c89c77..36e54000f44b8c 100644 --- a/model-optimizer/extensions/ops/elementwise_test.py +++ b/model-optimizer/extensions/ops/elementwise_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/embedding_bag.py b/model-optimizer/extensions/ops/embedding_bag.py index 1d83db0a6375a3..d5e0623d36c52c 100644 --- a/model-optimizer/extensions/ops/embedding_bag.py +++ b/model-optimizer/extensions/ops/embedding_bag.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/embedding_bag_test.py b/model-optimizer/extensions/ops/embedding_bag_test.py index beda49b9c88d74..ae04e526356213 100644 --- a/model-optimizer/extensions/ops/embedding_bag_test.py +++ b/model-optimizer/extensions/ops/embedding_bag_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/fake_output.py b/model-optimizer/extensions/ops/fake_output.py index ee184f9a2c9a87..0b129f92e4011f 100644 --- a/model-optimizer/extensions/ops/fake_output.py +++ b/model-optimizer/extensions/ops/fake_output.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.elemental import copy_shape_infer, copy_value from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/fakequantize.py b/model-optimizer/extensions/ops/fakequantize.py index 00d48da7a4752d..a6828b44921d8c 100644 --- a/model-optimizer/extensions/ops/fakequantize.py +++ b/model-optimizer/extensions/ops/fakequantize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/gather.py b/model-optimizer/extensions/ops/gather.py index ea5410e148aeb2..3396a639e7e7a5 100644 --- a/model-optimizer/extensions/ops/gather.py +++ b/model-optimizer/extensions/ops/gather.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/gather_test.py b/model-optimizer/extensions/ops/gather_test.py index ad6f231a00d037..bf0b3375ed07a3 100644 --- a/model-optimizer/extensions/ops/gather_test.py +++ b/model-optimizer/extensions/ops/gather_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/gatherelements.py b/model-optimizer/extensions/ops/gatherelements.py index 116977e9e0626a..50e32a068ec44f 100644 --- a/model-optimizer/extensions/ops/gatherelements.py +++ b/model-optimizer/extensions/ops/gatherelements.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/gatherelements_test.py b/model-optimizer/extensions/ops/gatherelements_test.py index 51c6de0a10ba6e..f3bae01f83a295 100644 --- a/model-optimizer/extensions/ops/gatherelements_test.py +++ b/model-optimizer/extensions/ops/gatherelements_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/gathernd.py b/model-optimizer/extensions/ops/gathernd.py index ff69ce7918d31a..e61757d4a882ed 100644 --- a/model-optimizer/extensions/ops/gathernd.py +++ b/model-optimizer/extensions/ops/gathernd.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/gathernd_test.py b/model-optimizer/extensions/ops/gathernd_test.py index da27f4968e8fa8..8a4f52d8ac26d6 100644 --- a/model-optimizer/extensions/ops/gathernd_test.py +++ b/model-optimizer/extensions/ops/gathernd_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/gelu.py b/model-optimizer/extensions/ops/gelu.py index 3a0a00ee05476e..df485d35ed849b 100644 --- a/model-optimizer/extensions/ops/gelu.py +++ b/model-optimizer/extensions/ops/gelu.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph @@ -24,11 +11,17 @@ class GeLUOP(Op): def __init__(self, graph: Graph, attrs: dict): mandatory_props = { - 'type': __class__.op, - 'op': __class__.op, + 'type': self.op, + 'op': self.op, 'in_ports_count': 1, 'out_ports_count': 1, - 'version': 'opset2', + 'version': 'opset7', 'infer': copy_shape_infer } - super().__init__(graph, mandatory_props, attrs) \ No newline at end of file + super().__init__(graph, mandatory_props, attrs) + + def backend_attrs(self): + if self.get_opset() == 'opset7': + return ['approximation_mode'] + else: + return [] diff --git a/model-optimizer/extensions/ops/grn.py b/model-optimizer/extensions/ops/grn.py index afcb881238f34e..a0b9cb30fc9d0a 100644 --- a/model-optimizer/extensions/ops/grn.py +++ b/model-optimizer/extensions/ops/grn.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/ops/grn_test.py b/model-optimizer/extensions/ops/grn_test.py index 78392a32659e22..977560977a81fc 100644 --- a/model-optimizer/extensions/ops/grn_test.py +++ b/model-optimizer/extensions/ops/grn_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/hard_sigmoid.py b/model-optimizer/extensions/ops/hard_sigmoid.py index 52126dec3b5004..bf69de8d4701b1 100644 --- a/model-optimizer/extensions/ops/hard_sigmoid.py +++ b/model-optimizer/extensions/ops/hard_sigmoid.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/identity.py b/model-optimizer/extensions/ops/identity.py index 72dcfe7202ad61..990c1cb3d1f3a0 100644 --- a/model-optimizer/extensions/ops/identity.py +++ b/model-optimizer/extensions/ops/identity.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/instance_normalization.py b/model-optimizer/extensions/ops/instance_normalization.py index 03b2ae827eabe0..3e52f89702fab8 100644 --- a/model-optimizer/extensions/ops/instance_normalization.py +++ b/model-optimizer/extensions/ops/instance_normalization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/instance_normalization_test.py b/model-optimizer/extensions/ops/instance_normalization_test.py index 233d5649b01e8f..f49ba1db91a025 100644 --- a/model-optimizer/extensions/ops/instance_normalization_test.py +++ b/model-optimizer/extensions/ops/instance_normalization_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/interp.py b/model-optimizer/extensions/ops/interp.py index 0d97a4cbab573d..33522e70041300 100644 --- a/model-optimizer/extensions/ops/interp.py +++ b/model-optimizer/extensions/ops/interp.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import inspect import logging as log diff --git a/model-optimizer/extensions/ops/interpolate.py b/model-optimizer/extensions/ops/interpolate.py index 1426f341181fd2..fca0cac53ec78a 100644 --- a/model-optimizer/extensions/ops/interpolate.py +++ b/model-optimizer/extensions/ops/interpolate.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import math diff --git a/model-optimizer/extensions/ops/interpolate_test.py b/model-optimizer/extensions/ops/interpolate_test.py index 9a44c652cadc50..59f1f7f1c85517 100644 --- a/model-optimizer/extensions/ops/interpolate_test.py +++ b/model-optimizer/extensions/ops/interpolate_test.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/loop.py b/model-optimizer/extensions/ops/loop.py index 53af05d219b6bf..6aca93bebc8e2e 100644 --- a/model-optimizer/extensions/ops/loop.py +++ b/model-optimizer/extensions/ops/loop.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np @@ -20,6 +8,7 @@ from extensions.ops.tensor_iterator import TensorIterator from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Node, Graph +from mo.middle.passes.fusing.helpers import common_bfs from mo.middle.passes.infer import partial_infer from mo.ops.const import Const @@ -119,7 +108,7 @@ def updated_loop_output_ports_shape_and_value(loop_node: Node): loop_port_idx = record['external_port_id'] if loop_port_idx != -1: # the id = -1 for execution condition output which is not connected anywhere output_value = body_node.in_port(0).data.get_value() - output_shape = body_node.in_port(0).data.get_shape() + output_shape = body_node.in_port(0).data.get_shape().copy() concat_axis = record['axis'] if concat_axis is not None: assert output_shape[concat_axis] == 1, 'Dimension for concatenation is not equal to 1 for scan ' \ @@ -312,14 +301,52 @@ def add_back_edge(loop_node: Node, internal_parameter: Node, internal_result: No 'from_port': 0, 'to_port': 0}) + @staticmethod + def parameter_unchanged_after_iteration(loop_node: Node, body_parameter: Node): + """ + Checks if the body Parameter node is connected to some body Result and the data provided to Result is not + changed between iterations. The data is considered unchanged if: + 1. There is no back edge for this Parameter OR + 2. There is a back edge from some Result to Parameter and there are only Identity ops in between or + Parameter is connected to Result directly. + + :param loop_node: the Loop node to check + :param body_parameter: the body Parameter node + :return: the result of the check + """ + assert body_parameter.id in loop_node.body + assert body_parameter.soft_get('op') == 'Parameter' + if not any([attr['to_layer'] == body_parameter.soft_get('internal_layer_id') for attr in loop_node.back_edges]): + return True + + for back_edge_attrs in loop_node.back_edges: + if back_edge_attrs['to_layer'] == body_parameter.soft_get('internal_layer_id'): + result_internal_id = back_edge_attrs['from_layer'] + result_nodes = loop_node.body.get_op_nodes(internal_layer_id=result_internal_id) + assert len(result_nodes) == 1, 'There should be exactly one node with id {}, but there are {}' \ + ''.format(result_internal_id, len(result_nodes)) + result_node = result_nodes[0] + # check that the Result node consumes data from Parameter node directly or through Identity operations + parameters = common_bfs(result_node, ['Identity'], ['Parameter'], is_backward=True, attr_to_check='op', + follow_multi_consumer_data_nodes=True) + if any([node.soft_get('internal_layer_id') == body_parameter.internal_layer_id for node in parameters]): + return True + return False + @staticmethod def pull_constant_inputs_into_body(loop_node: Node): for port_idx, in_port in reversed(loop_node.in_ports().items()): if port_idx > 1 and not in_port.disconnected() and in_port.get_source().node.soft_get('type') == 'Const': + body_parameter = Loop.external_port_id_to_body_node(loop_node, port_idx, loop_node.input_port_map) + # if there is a back edge into a body Parameter then we cannot replace it with a Const if the value + # is updated during each iteration. So we need to check that the tensor is passed to the next iteration + # unchanged + if not Loop.parameter_unchanged_after_iteration(loop_node, body_parameter): + continue + original_const_node = in_port.get_source().node new_const_node = Const(loop_node.body, original_const_node.attrs()).create_node() - body_parameter = Loop.external_port_id_to_body_node(loop_node, port_idx, loop_node.input_port_map) body_parameter.out_port(0).get_connection().set_source(new_const_node.out_port(0)) loop_node.body.remove_nodes_from([body_parameter.id]) loop_node.delete_input_port(port_idx) @@ -336,7 +363,7 @@ def update_port_map_value(port_map: dict, attr: str, original_value: int, new_va @staticmethod def update_port_map_value_ext(port_map: dict, layer_id_attr: str, layer_id_value: int, - updated_attr: str, new_attr_value: int): + updated_attr: str, new_attr_value: int): """ Updates a value of requested attribute for a certain layer id in a port map :param port_map: a map of external ports to internal layer ids @@ -406,7 +433,8 @@ def re_number_input_port(loop_node: Node, old_port_id: int, new_port_id: int): new_port_id += 1 for port_idx_to_remove in reversed(range(new_port_id, max_port_id + 1)): - loop_node.delete_input_port(port_idx_to_remove) + if port_idx_to_remove in loop_node.in_ports().keys(): + loop_node.delete_input_port(port_idx_to_remove) @staticmethod def re_numerate_output_ports(loop_node: Node): diff --git a/model-optimizer/extensions/ops/lstm_cell.py b/model-optimizer/extensions/ops/lstm_cell.py index bdd8c05e6c51d5..7dc091f2b69969 100644 --- a/model-optimizer/extensions/ops/lstm_cell.py +++ b/model-optimizer/extensions/ops/lstm_cell.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import mark_input_bins from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/ops/lstm_sequence.py b/model-optimizer/extensions/ops/lstm_sequence.py index a50dcd26583c34..0fce701ff9902c 100644 --- a/model-optimizer/extensions/ops/lstm_sequence.py +++ b/model-optimizer/extensions/ops/lstm_sequence.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/merge.py b/model-optimizer/extensions/ops/merge.py index 118976931fe9f5..53134bf8a966b2 100644 --- a/model-optimizer/extensions/ops/merge.py +++ b/model-optimizer/extensions/ops/merge.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/merge_test.py b/model-optimizer/extensions/ops/merge_test.py index 9def594d74a0cd..bb7e3ce30dd3d9 100644 --- a/model-optimizer/extensions/ops/merge_test.py +++ b/model-optimizer/extensions/ops/merge_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/mvn.py b/model-optimizer/extensions/ops/mvn.py index 58f03a622cc687..506522d9aaea7e 100644 --- a/model-optimizer/extensions/ops/mvn.py +++ b/model-optimizer/extensions/ops/mvn.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.caffe.extractors.utils import get_canonical_axis_index from mo.front.common.layout import get_features_dim from mo.front.common.partial_infer.elemental import copy_shape_infer @@ -70,6 +58,26 @@ def infer(node: None): copy_shape_infer(node) +class MVNOnnx(Op): + op = 'MVNOnnx' + enabled = False + + def __init__(self, graph: Graph, attrs: dict): + super().__init__(graph, { + 'kind': 'op', + 'type': None, + 'op': self.op, + 'version': None, + 'eps': None, + 'eps_mode': None, + 'normalize_variance': None, + 'axes': None, + 'in_ports_count': 1, + 'out_ports_count': 1, + 'infer': None + }, attrs) + + class MVNCaffe(Op): op = 'MVNCaffe' enabled = False @@ -81,8 +89,8 @@ def __init__(self, graph: Graph, attrs: dict): 'op': self.op, 'version': None, 'eps': 1e-9, - 'normalize_variance': 1, - 'across_channels': 0, + 'normalize_variance': None, + 'across_channels': None, 'in_ports_count': 1, 'out_ports_count': 1, 'infer': None diff --git a/model-optimizer/extensions/ops/mxrepeat.py b/model-optimizer/extensions/ops/mxrepeat.py index 1a60ed5d5a1b51..7357c443562297 100644 --- a/model-optimizer/extensions/ops/mxrepeat.py +++ b/model-optimizer/extensions/ops/mxrepeat.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/mxreshape.py b/model-optimizer/extensions/ops/mxreshape.py index 30452863b3a26d..d027bb104f0b61 100644 --- a/model-optimizer/extensions/ops/mxreshape.py +++ b/model-optimizer/extensions/ops/mxreshape.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/non_max_suppression.py b/model-optimizer/extensions/ops/non_max_suppression.py index 3273fea409f80b..e863bc84fed3cb 100644 --- a/model-optimizer/extensions/ops/non_max_suppression.py +++ b/model-optimizer/extensions/ops/non_max_suppression.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/extensions/ops/non_max_suppression_test.py b/model-optimizer/extensions/ops/non_max_suppression_test.py index b41aef0aeb3e8b..9e167c64f95b7f 100644 --- a/model-optimizer/extensions/ops/non_max_suppression_test.py +++ b/model-optimizer/extensions/ops/non_max_suppression_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/non_zero.py b/model-optimizer/extensions/ops/non_zero.py index 151e8961c340ff..8860870a3aea89 100644 --- a/model-optimizer/extensions/ops/non_zero.py +++ b/model-optimizer/extensions/ops/non_zero.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/normalize.py b/model-optimizer/extensions/ops/normalize.py index 7dd8ea82acc339..18b365d46ecc70 100644 --- a/model-optimizer/extensions/ops/normalize.py +++ b/model-optimizer/extensions/ops/normalize.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.front.common.partial_infer.utils import mark_input_bins diff --git a/model-optimizer/extensions/ops/normalize_l2.py b/model-optimizer/extensions/ops/normalize_l2.py index a0d19f1b7a8b78..f4693fbae49a40 100644 --- a/model-optimizer/extensions/ops/normalize_l2.py +++ b/model-optimizer/extensions/ops/normalize_l2.py @@ -1,21 +1,10 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph, Node +from mo.graph.perm_inputs import PermuteInputs from mo.ops.op import Op @@ -25,15 +14,15 @@ class NormalizeL2Op(Op): def __init__(self, graph: Graph, attrs: dict): super().__init__(graph, { - 'type': __class__.op, - 'op': __class__.op, + 'type': self.op, + 'op': self.op, 'version': 'opset1', 'eps': None, 'p': None, 'eps_mode': None, 'in_ports_count': 2, 'out_ports_count': 1, - 'infer': __class__.infer + 'infer': self.infer }, attrs) def supported_attrs(self): @@ -58,3 +47,5 @@ def infer(node: Node): node.out_port(0).data.set_value(input_value / norm_value) else: node.out_port(0).data.set_shape(input_shape) + + PermuteInputs().set_input_permutation(node.in_node(1), node, 'input:0', 'axis') diff --git a/model-optimizer/extensions/ops/normalize_test.py b/model-optimizer/extensions/ops/normalize_test.py index 87d9fb8360b506..67bcb25f9706a2 100644 --- a/model-optimizer/extensions/ops/normalize_test.py +++ b/model-optimizer/extensions/ops/normalize_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/one_hot.py b/model-optimizer/extensions/ops/one_hot.py index e22c21549ee1fb..12e1390a5fc229 100644 --- a/model-optimizer/extensions/ops/one_hot.py +++ b/model-optimizer/extensions/ops/one_hot.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/ops/one_hot_test.py b/model-optimizer/extensions/ops/one_hot_test.py index 7c491318dbdb0a..d712d4e059afd2 100644 --- a/model-optimizer/extensions/ops/one_hot_test.py +++ b/model-optimizer/extensions/ops/one_hot_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/pack.py b/model-optimizer/extensions/ops/pack.py index 9bad21e454c6da..9abea6ed907f8c 100644 --- a/model-optimizer/extensions/ops/pack.py +++ b/model-optimizer/extensions/ops/pack.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/parameter.py b/model-optimizer/extensions/ops/parameter.py index 24a4321570a1d7..25bf0be1bfdea6 100644 --- a/model-optimizer/extensions/ops/parameter.py +++ b/model-optimizer/extensions/ops/parameter.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/pnorm.py b/model-optimizer/extensions/ops/pnorm.py index 9e923300f5f533..6f0b83f9c7e489 100644 --- a/model-optimizer/extensions/ops/pnorm.py +++ b/model-optimizer/extensions/ops/pnorm.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph, Node from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/power_file.py b/model-optimizer/extensions/ops/power_file.py index 32b201205048f2..dc0158b515fa29 100644 --- a/model-optimizer/extensions/ops/power_file.py +++ b/model-optimizer/extensions/ops/power_file.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/ops/prediction_heatmap.py b/model-optimizer/extensions/ops/prediction_heatmap.py index 94eabb42d1ec51..f614c8601f68d6 100644 --- a/model-optimizer/extensions/ops/prediction_heatmap.py +++ b/model-optimizer/extensions/ops/prediction_heatmap.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/prelu.py b/model-optimizer/extensions/ops/prelu.py index 76bd58d001095b..9dde5394369ab4 100644 --- a/model-optimizer/extensions/ops/prelu.py +++ b/model-optimizer/extensions/ops/prelu.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/priorbox.py b/model-optimizer/extensions/ops/priorbox.py index 50b4e54f4ec5a6..c27a128bf69a7c 100644 --- a/model-optimizer/extensions/ops/priorbox.py +++ b/model-optimizer/extensions/ops/priorbox.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np @@ -68,8 +55,10 @@ def supported_attrs(self): def backend_attrs(self): return [ - ('flip', lambda node: bool_to_str(node, 'flip')), - ('clip', lambda node: bool_to_str(node, 'clip')), + ('flip', lambda node: int(node.flip)), # We need to convert this boolean attribute value to int to keep + # forward compatibility with IE 2021.2 + ('clip', lambda node: int(node.clip)), # We need to convert this boolean attribute value to int to keep + # forward compatibility with IE 2021.2 'step', 'offset', ('scale_all_sizes', lambda node: bool_to_str(node, 'scale_all_sizes')), diff --git a/model-optimizer/extensions/ops/priorbox_clustered.py b/model-optimizer/extensions/ops/priorbox_clustered.py index dd3ee398ace389..cedf74c1fd3eb3 100644 --- a/model-optimizer/extensions/ops/priorbox_clustered.py +++ b/model-optimizer/extensions/ops/priorbox_clustered.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np @@ -56,7 +43,8 @@ def supported_attrs(self): def backend_attrs(self): return [ - ('clip', lambda node: bool_to_str(node, 'clip')), + ('clip', lambda node: int(node.clip)), # We need to convert this boolean attribute value to int to keep + # forward compatibility with IE 2021.2 'img_h', 'img_w', 'step', diff --git a/model-optimizer/extensions/ops/priorbox_clustered_test.py b/model-optimizer/extensions/ops/priorbox_clustered_test.py index 91297350d2303f..b28759bb5243be 100644 --- a/model-optimizer/extensions/ops/priorbox_clustered_test.py +++ b/model-optimizer/extensions/ops/priorbox_clustered_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/priorbox_test.py b/model-optimizer/extensions/ops/priorbox_test.py index 2572fd804a3ad8..a0a7010fd7700f 100644 --- a/model-optimizer/extensions/ops/priorbox_test.py +++ b/model-optimizer/extensions/ops/priorbox_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/priorgridgenerator_onnx.py b/model-optimizer/extensions/ops/priorgridgenerator_onnx.py index 5376d3a41ef6f3..3d4e3a7b540dfc 100644 --- a/model-optimizer/extensions/ops/priorgridgenerator_onnx.py +++ b/model-optimizer/extensions/ops/priorgridgenerator_onnx.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/proposal.py b/model-optimizer/extensions/ops/proposal.py index b452324169a2ae..0da312caf04b85 100644 --- a/model-optimizer/extensions/ops/proposal.py +++ b/model-optimizer/extensions/ops/proposal.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.front.extractor import attr_getter, bool_to_str @@ -31,7 +18,7 @@ def __init__(self, graph: Graph, attrs: dict): 'post_nms_topn': 300, # default in caffe-shared 'infer': ProposalOp.proposal_infer, 'in_ports_count': 3, - 'out_ports_count': 2, + 'out_ports_count': 1 if attrs.get('version') == 'opset1' else 2, 'normalize': False, 'clip_before_nms': True, 'clip_after_nms': False, diff --git a/model-optimizer/extensions/ops/proposal_onnx.py b/model-optimizer/extensions/ops/proposal_onnx.py index 3265d218782530..e7a2c6f6837562 100644 --- a/model-optimizer/extensions/ops/proposal_onnx.py +++ b/model-optimizer/extensions/ops/proposal_onnx.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/proposal_python_example.py b/model-optimizer/extensions/ops/proposal_python_example.py index 6d1ee647d752a9..52c75812ab97a4 100644 --- a/model-optimizer/extensions/ops/proposal_python_example.py +++ b/model-optimizer/extensions/ops/proposal_python_example.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.proposal import ProposalOp from mo.front.caffe.extractor import register_caffe_python_extractor diff --git a/model-optimizer/extensions/ops/proposal_test.py b/model-optimizer/extensions/ops/proposal_test.py index f65012e23bfe99..a4feb8f6f94ff7 100644 --- a/model-optimizer/extensions/ops/proposal_test.py +++ b/model-optimizer/extensions/ops/proposal_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/psroipooling.py b/model-optimizer/extensions/ops/psroipooling.py index ef569bdb23b68b..5b8003710ad475 100644 --- a/model-optimizer/extensions/ops/psroipooling.py +++ b/model-optimizer/extensions/ops/psroipooling.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.layout import get_batch_dim, shape_for_layout from mo.graph.graph import Node, Graph diff --git a/model-optimizer/extensions/ops/psroipooling_test.py b/model-optimizer/extensions/ops/psroipooling_test.py index 3f95b88bc602d1..2b9cad7838d326 100644 --- a/model-optimizer/extensions/ops/psroipooling_test.py +++ b/model-optimizer/extensions/ops/psroipooling_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/quantize_linear.py b/model-optimizer/extensions/ops/quantize_linear.py index ae5717579cf9ae..7068ee42de9b1b 100644 --- a/model-optimizer/extensions/ops/quantize_linear.py +++ b/model-optimizer/extensions/ops/quantize_linear.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/quantize_test.py b/model-optimizer/extensions/ops/quantize_test.py index 2348415dc0f93c..65d4f2dd336cf7 100644 --- a/model-optimizer/extensions/ops/quantize_test.py +++ b/model-optimizer/extensions/ops/quantize_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/range.py b/model-optimizer/extensions/ops/range.py index 4af6ea982bc0be..78c934105dbef9 100644 --- a/model-optimizer/extensions/ops/range.py +++ b/model-optimizer/extensions/ops/range.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/rank.py b/model-optimizer/extensions/ops/rank.py index c295758601b670..c44a83f2d47c00 100644 --- a/model-optimizer/extensions/ops/rank.py +++ b/model-optimizer/extensions/ops/rank.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/ops/regionyolo.py b/model-optimizer/extensions/ops/regionyolo.py index 30944715495677..ed002c0e2ba79b 100644 --- a/model-optimizer/extensions/ops/regionyolo.py +++ b/model-optimizer/extensions/ops/regionyolo.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/regionyolo_test.py b/model-optimizer/extensions/ops/regionyolo_test.py index 53a286ce72b115..9ebd2045b1f3dd 100644 --- a/model-optimizer/extensions/ops/regionyolo_test.py +++ b/model-optimizer/extensions/ops/regionyolo_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/reorgyolo.py b/model-optimizer/extensions/ops/reorgyolo.py index 366554508c4480..6c87804b1f4b7c 100644 --- a/model-optimizer/extensions/ops/reorgyolo.py +++ b/model-optimizer/extensions/ops/reorgyolo.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/reorgyolo_test.py b/model-optimizer/extensions/ops/reorgyolo_test.py index 46b1a22c1e3ef8..b21a9336281ec0 100644 --- a/model-optimizer/extensions/ops/reorgyolo_test.py +++ b/model-optimizer/extensions/ops/reorgyolo_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/resize.py b/model-optimizer/extensions/ops/resize.py index 7ae426de779de3..cffff0360433e0 100644 --- a/model-optimizer/extensions/ops/resize.py +++ b/model-optimizer/extensions/ops/resize.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Node, Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/resize_factor_utils.py b/model-optimizer/extensions/ops/resize_factor_utils.py index 7b167661d1873d..ed95163d54eae4 100644 --- a/model-optimizer/extensions/ops/resize_factor_utils.py +++ b/model-optimizer/extensions/ops/resize_factor_utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/reverse_sequence.py b/model-optimizer/extensions/ops/reverse_sequence.py index b8892929f4d887..fa6d946619ba8d 100644 --- a/model-optimizer/extensions/ops/reverse_sequence.py +++ b/model-optimizer/extensions/ops/reverse_sequence.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/roialign.py b/model-optimizer/extensions/ops/roialign.py index 4d9ea71620c32b..4f7bb489348a9e 100644 --- a/model-optimizer/extensions/ops/roialign.py +++ b/model-optimizer/extensions/ops/roialign.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.layout import get_features_dim, shape_for_layout from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/roifeatureextractor_onnx.py b/model-optimizer/extensions/ops/roifeatureextractor_onnx.py index fc34290a4ea93d..71783b0c733f30 100644 --- a/model-optimizer/extensions/ops/roifeatureextractor_onnx.py +++ b/model-optimizer/extensions/ops/roifeatureextractor_onnx.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/scatter.py b/model-optimizer/extensions/ops/scatter.py index a800ac9fb4fbce..4349b4242b028f 100644 --- a/model-optimizer/extensions/ops/scatter.py +++ b/model-optimizer/extensions/ops/scatter.py @@ -1,18 +1,7 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +import numpy as np from mo.graph.graph import Node, Graph from mo.ops.op import Op @@ -50,6 +39,10 @@ def infer(node: Node): updates_shape = node.in_port(2).data.get_shape() assert input_shape is not None and updates_shape is not None and indices_shape is not None, \ 'The node "{}" input shape is None'.format(node_name) + assert len(input_shape) == len(indices_shape), 'data and indices inputs for node {} must be of the ' \ + 'same rank. Instead got {} and {}'.format(node_name, len(input_shape), len(indices_shape)) + assert np.array_equal(indices_shape, updates_shape), 'updates and indices shapes for node {} must be equal. ' \ + 'Instead got {} and {}'.format(node_name, indices_shape, updates_shape) node.out_port(0).data.set_shape(input_shape) @@ -94,6 +87,31 @@ class ScatterElementsUpdate(Scatter): op = op_type = 'ScatterElementsUpdate' version = 'opset3' + @staticmethod + def infer(node: Node): + Scatter.infer(node) + + node_name = node.soft_get('name', node.id) + connected_in_ports = [port for port in node.in_ports().values() if not port.disconnected()] + assert len(connected_in_ports) == 4, \ + "Incorrect number of inputs for {} node".format(node_name) + + input_value = node.in_port(0).data.get_value() + indices_value = node.in_port(1).data.get_value() + indices_shape = node.in_port(1).data.get_shape() + updates_value = node.in_port(2).data.get_value() + axis = node.in_port(3).data.get_value() + if input_value is not None and indices_value is not None and updates_value is not None and axis is not None: + assert axis.size == 1, "The node {} has axis input value size equal to {} but it should be exactly 1.".format( + node_name, axis.size) + axis = axis.item() + out_value = input_value.copy() + for idx in np.ndindex(*indices_shape): + data_idx = list(idx) + data_idx[axis] = indices_value[idx] + out_value[tuple(data_idx)] = updates_value[idx] + node.out_port(0).data.set_value(out_value) + class ScatterAdd(Scatter): op = 'ScatterAdd' diff --git a/model-optimizer/extensions/ops/scatter_test.py b/model-optimizer/extensions/ops/scatter_test.py new file mode 100644 index 00000000000000..a653140d9bbde9 --- /dev/null +++ b/model-optimizer/extensions/ops/scatter_test.py @@ -0,0 +1,104 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +import numpy as np +from generator import generator, generate + +from extensions.ops.scatter import ScatterElementsUpdate +from mo.front.common.partial_infer.utils import int64_array +from mo.graph.graph import Node +from mo.utils.unittest.graph import build_graph, regular_op_with_empty_data, result, connect, \ + valued_const_with_data + + +@generator +class ScatterElementsInferTest(unittest.TestCase): + @generate(*[ + ([[0.0, 0.0, 0.0], + [0.0, 0.0, 0.0], + [0.0, 0.0, 0.0]], + [[1, 0, 2], + [0, 2, 1]], + [[1.0, 1.1, 1.2], + [2.0, 2.1, 2.2]], + 0, + [[2.0, 1.1, 0.0], + [1.0, 0.0, 2.2], + [0.0, 2.1, 1.2]]), + + ([[1.0, 2.0, 3.0, 4.0, 5.0]], + [[1, 3]], + [[1.1, 2.1]], + 1, + [[1.0, 1.1, 3.0, 2.1, 5.0]]), + + ([[1.0, 2.0, 3.0, 4.0, 5.0]], + [[1, 3]], + [[1.1, 2.1]], + [1], + [[1.0, 1.1, 3.0, 2.1, 5.0]]), + + ([ # 3D case + [[1, 2], + [3, 4]], + [[5, 6], + [7, 8]], + [[9, 10], + [11, 12]] + ], + [ + [[1, 0], + [0, 1]], + [[1, 0], + [1, 0]], + [[0, 1], + [1, 0]] + ], + [ + [[21, 22], + [23, 24]], + [[25, 26], + [27, 28]], + [[29, 30], + [31, 32]] + ], + -1, # axis + [ + [[22, 21], + [23, 24]], + [[26, 25], + [28, 27]], + [[29, 30], + [32, 31]] + ]), + ]) + + def test_scatterelements_value_infer(self, data, indices, updates, axis, ref_res): + nodes = { + **valued_const_with_data('data', np.array(data)), + **valued_const_with_data('indices', int64_array(indices)), + **valued_const_with_data('updates', np.array(updates)), + **valued_const_with_data('axis', int64_array(axis)), + **regular_op_with_empty_data('scatter_elements', {'op': 'ScatterElementsUpdate', 'axis': axis}), + **result() + } + + graph = build_graph(nodes_attrs=nodes, edges=[ + *connect('data', '0:scatter_elements'), + *connect('indices', '1:scatter_elements'), + *connect('updates', '2:scatter_elements'), + *connect('axis', '3:scatter_elements'), + *connect('scatter_elements', 'output') + ], nodes_with_edges_only=True) + graph.stage = 'middle' + + scatter_el_node = Node(graph, 'scatter_elements') + ScatterElementsUpdate.infer(scatter_el_node) + + res_output_shape = scatter_el_node.out_node().shape + self.assertTrue(np.array_equal(int64_array(ref_res).shape, res_output_shape)) + + res_output_value = scatter_el_node.out_node().value + self.assertTrue(np.array_equal(ref_res, res_output_value)) diff --git a/model-optimizer/extensions/ops/scatternd.py b/model-optimizer/extensions/ops/scatternd.py index 83d910fe965056..8917d11cfb8f1f 100644 --- a/model-optimizer/extensions/ops/scatternd.py +++ b/model-optimizer/extensions/ops/scatternd.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np @@ -57,14 +44,16 @@ def infer(node: Node): # 1. ranks of both input and indices must be at least 1 assert len(input_shape) >= 1 and len(indices_shape) >= 1, \ 'The node "{}" input and indices ranks must be at least 1'.format(node_name) - + # 2. the last dimension of indices shape must be at most a rank of input assert indices_shape[-1] <= len(input_shape), \ 'The last dimension of indices shape must be at most a rank of input for the node "{}"'.format(node_name) # 3. updates is a tensor of shape indices_shape[:-1] + input_shape[indices_shape[-1]:] + # if expected updates shape is scalar, updates can be tensor with the single element (for example, of shape [1], [[1]], etc.) expected_updates_shape = np.concatenate((indices_shape[:-1], input_shape[indices_shape[-1]:]), axis=0) - assert np.array_equal(updates_shape, expected_updates_shape), \ + assert np.array_equal(updates_shape, expected_updates_shape) or\ + np.array_equal(expected_updates_shape, []) and np.array_equal(updates_shape, np.ones(len(updates_shape))), \ 'The updates shape must be equal to indices_shape[:-1] + input_shape[indices_shape[-1]:] for the node "{}"'.format(node_name) node.out_port(0).data.set_shape(input_shape) diff --git a/model-optimizer/extensions/ops/scatternd_test.py b/model-optimizer/extensions/ops/scatternd_test.py index 3a4ec042573d29..a53b020202ccea 100644 --- a/model-optimizer/extensions/ops/scatternd_test.py +++ b/model-optimizer/extensions/ops/scatternd_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest @@ -75,6 +62,11 @@ 'updates': {'shape': int64_array([]), 'value': 9}} output7 = int64_array([1, 2, 3, 4, 9, 6, 7, 8]) +inputs8 = {'input': {'shape': int64_array([3]), 'value': int64_array([1, 2, 3])}, + 'indices': {'shape': int64_array([1]), 'value': int64_array([2])}, + 'updates': {'shape': int64_array([1]), 'value': int64_array([9])}} +output8 = int64_array([1, 2, 9]) + class TestScatterNDUpdate(unittest.TestCase): def test_partial_infer1(self): graph = build_graph(nodes_attributes, edges, inputs1) @@ -152,7 +144,7 @@ def test_infer6(self): res_output_value = graph.node['output']['value'] self.assertTrue(np.array_equal(output6, res_output_value), - 'values do not match expected: {} and given: {}'.format(output5, res_output_value)) + 'values do not match expected: {} and given: {}'.format(output6, res_output_value)) def test_infer7_scalar(self): graph = build_graph(nodes_attributes, edges, inputs7) @@ -163,4 +155,15 @@ def test_infer7_scalar(self): res_output_value = graph.node['output']['value'] self.assertTrue(np.array_equal(output7, res_output_value), - 'values do not match expected: {} and given: {}'.format(output5, res_output_value)) + 'values do not match expected: {} and given: {}'.format(output7, res_output_value)) + + def test_infer8(self): + graph = build_graph(nodes_attributes, edges, inputs8) + scatternd_node = Node(graph, 'scatternd_node') + ScatterNDUpdate.infer(scatternd_node) + + # get the result + res_output_value = graph.node['output']['value'] + + self.assertTrue(np.array_equal(output8, res_output_value), + 'values do not match expected: {} and given: {}'.format(output8, res_output_value)) diff --git a/model-optimizer/extensions/ops/select.py b/model-optimizer/extensions/ops/select.py index fd298e10a8e31f..31d602195d5889 100644 --- a/model-optimizer/extensions/ops/select.py +++ b/model-optimizer/extensions/ops/select.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/select_test.py b/model-optimizer/extensions/ops/select_test.py index 2f504b79d4e55d..516dcaa71d73ad 100644 --- a/model-optimizer/extensions/ops/select_test.py +++ b/model-optimizer/extensions/ops/select_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/shufflechannel.py b/model-optimizer/extensions/ops/shufflechannel.py index 4faf5c718493d3..ae3e600f87f4f1 100644 --- a/model-optimizer/extensions/ops/shufflechannel.py +++ b/model-optimizer/extensions/ops/shufflechannel.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph, Node from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/simplernms.py b/model-optimizer/extensions/ops/simplernms.py index 4400ce5e07cea8..9763dfee358073 100644 --- a/model-optimizer/extensions/ops/simplernms.py +++ b/model-optimizer/extensions/ops/simplernms.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/simplernms_test.py b/model-optimizer/extensions/ops/simplernms_test.py index f96191777dc8ee..eabb6f09c1e20b 100644 --- a/model-optimizer/extensions/ops/simplernms_test.py +++ b/model-optimizer/extensions/ops/simplernms_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/size.py b/model-optimizer/extensions/ops/size.py index 282af22d5dfe44..cbfbb341b6f82d 100644 --- a/model-optimizer/extensions/ops/size.py +++ b/model-optimizer/extensions/ops/size.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/slice_like.py b/model-optimizer/extensions/ops/slice_like.py index 7d6ae78b5fc2d5..db2077398e07cc 100644 --- a/model-optimizer/extensions/ops/slice_like.py +++ b/model-optimizer/extensions/ops/slice_like.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.caffe.extractors.utils import get_canonical_axis_index diff --git a/model-optimizer/extensions/ops/slice_like_test.py b/model-optimizer/extensions/ops/slice_like_test.py index 156fa377117a7f..92ffa057d79d11 100644 --- a/model-optimizer/extensions/ops/slice_like_test.py +++ b/model-optimizer/extensions/ops/slice_like_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/extensions/ops/space_to_depth.py b/model-optimizer/extensions/ops/space_to_depth.py index abffb2967456dd..8a116c53c5aa78 100644 --- a/model-optimizer/extensions/ops/space_to_depth.py +++ b/model-optimizer/extensions/ops/space_to_depth.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/space_to_depth_test.py b/model-optimizer/extensions/ops/space_to_depth_test.py index 61f3a21fc2cdf2..7f9c4716ee2c01 100644 --- a/model-optimizer/extensions/ops/space_to_depth_test.py +++ b/model-optimizer/extensions/ops/space_to_depth_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np diff --git a/model-optimizer/extensions/ops/sparse_fill_empty_rows.py b/model-optimizer/extensions/ops/sparse_fill_empty_rows.py index 012fa40bb5914d..4129b941098455 100644 --- a/model-optimizer/extensions/ops/sparse_fill_empty_rows.py +++ b/model-optimizer/extensions/ops/sparse_fill_empty_rows.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/sparse_fill_empty_rows_test.py b/model-optimizer/extensions/ops/sparse_fill_empty_rows_test.py index 39b7996431d696..14fa6d26735d98 100644 --- a/model-optimizer/extensions/ops/sparse_fill_empty_rows_test.py +++ b/model-optimizer/extensions/ops/sparse_fill_empty_rows_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/sparse_reshape.py b/model-optimizer/extensions/ops/sparse_reshape.py index 53c77532d0f551..6b113b8f46d72f 100644 --- a/model-optimizer/extensions/ops/sparse_reshape.py +++ b/model-optimizer/extensions/ops/sparse_reshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/sparse_reshape_test.py b/model-optimizer/extensions/ops/sparse_reshape_test.py index f2595bdf171f42..26927ae7153ef8 100644 --- a/model-optimizer/extensions/ops/sparse_reshape_test.py +++ b/model-optimizer/extensions/ops/sparse_reshape_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/sparse_segment_mean.py b/model-optimizer/extensions/ops/sparse_segment_mean.py index 80e2c8d969c0bf..aa50cb93c1b92d 100644 --- a/model-optimizer/extensions/ops/sparse_segment_mean.py +++ b/model-optimizer/extensions/ops/sparse_segment_mean.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/sparse_segment_mean_test.py b/model-optimizer/extensions/ops/sparse_segment_mean_test.py index c3066457a16667..44de3a95f76beb 100644 --- a/model-optimizer/extensions/ops/sparse_segment_mean_test.py +++ b/model-optimizer/extensions/ops/sparse_segment_mean_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/sparse_segment_sqrtn.py b/model-optimizer/extensions/ops/sparse_segment_sqrtn.py index a9934851e3c0c2..7c314b89528faa 100644 --- a/model-optimizer/extensions/ops/sparse_segment_sqrtn.py +++ b/model-optimizer/extensions/ops/sparse_segment_sqrtn.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/sparse_segment_sqrtn_test.py b/model-optimizer/extensions/ops/sparse_segment_sqrtn_test.py index 3cf2f266aacfba..fd7c23577e89cf 100644 --- a/model-optimizer/extensions/ops/sparse_segment_sqrtn_test.py +++ b/model-optimizer/extensions/ops/sparse_segment_sqrtn_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/sparse_segment_sum.py b/model-optimizer/extensions/ops/sparse_segment_sum.py index 4cbf3291350485..f1d22dc0248658 100644 --- a/model-optimizer/extensions/ops/sparse_segment_sum.py +++ b/model-optimizer/extensions/ops/sparse_segment_sum.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/sparse_segment_sum_test.py b/model-optimizer/extensions/ops/sparse_segment_sum_test.py index a739a99136f52a..b28b83b12afee3 100644 --- a/model-optimizer/extensions/ops/sparse_segment_sum_test.py +++ b/model-optimizer/extensions/ops/sparse_segment_sum_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/spatial_transformer.py b/model-optimizer/extensions/ops/spatial_transformer.py index 62f3ffeb28030a..692562e6491df1 100644 --- a/model-optimizer/extensions/ops/spatial_transformer.py +++ b/model-optimizer/extensions/ops/spatial_transformer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import copy diff --git a/model-optimizer/extensions/ops/spatial_transformer_test.py b/model-optimizer/extensions/ops/spatial_transformer_test.py index 2c69e2403264da..2c48b9edb9950f 100644 --- a/model-optimizer/extensions/ops/spatial_transformer_test.py +++ b/model-optimizer/extensions/ops/spatial_transformer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/splice.py b/model-optimizer/extensions/ops/splice.py index 8935c7cf43200c..5a861e5a8a986f 100644 --- a/model-optimizer/extensions/ops/splice.py +++ b/model-optimizer/extensions/ops/splice.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph, Node from mo.ops.op import Op diff --git a/model-optimizer/extensions/ops/split.py b/model-optimizer/extensions/ops/split.py index dc6184994797cf..211adcb4d73be2 100644 --- a/model-optimizer/extensions/ops/split.py +++ b/model-optimizer/extensions/ops/split.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/extensions/ops/split_test.py b/model-optimizer/extensions/ops/split_test.py index 02ffc9e0529f77..c5673e93575b37 100644 --- a/model-optimizer/extensions/ops/split_test.py +++ b/model-optimizer/extensions/ops/split_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/stop_gradient.py b/model-optimizer/extensions/ops/stop_gradient.py index 5137887013511d..81f1d483a675c4 100644 --- a/model-optimizer/extensions/ops/stop_gradient.py +++ b/model-optimizer/extensions/ops/stop_gradient.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph diff --git a/model-optimizer/extensions/ops/swapaxis.py b/model-optimizer/extensions/ops/swapaxis.py index 49b76173b07ec6..cfbff60dc7561b 100644 --- a/model-optimizer/extensions/ops/swapaxis.py +++ b/model-optimizer/extensions/ops/swapaxis.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/switch.py b/model-optimizer/extensions/ops/switch.py index 34622c0dcff235..17a2a432b09a7d 100644 --- a/model-optimizer/extensions/ops/switch.py +++ b/model-optimizer/extensions/ops/switch.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/switch_test.py b/model-optimizer/extensions/ops/switch_test.py index 27d3660324b56c..ad7a66861b7068 100644 --- a/model-optimizer/extensions/ops/switch_test.py +++ b/model-optimizer/extensions/ops/switch_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import Mock, call diff --git a/model-optimizer/extensions/ops/tensor_iterator.py b/model-optimizer/extensions/ops/tensor_iterator.py index 6f268997cc9730..7be9107d55921d 100644 --- a/model-optimizer/extensions/ops/tensor_iterator.py +++ b/model-optimizer/extensions/ops/tensor_iterator.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from copy import copy, deepcopy from extensions.ops.parameter import Parameter diff --git a/model-optimizer/extensions/ops/topk.py b/model-optimizer/extensions/ops/topk.py index dd39d2b6b7309b..f25d8eff03a37c 100644 --- a/model-optimizer/extensions/ops/topk.py +++ b/model-optimizer/extensions/ops/topk.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/topk_test.py b/model-optimizer/extensions/ops/topk_test.py index bd3e2bdd8e43c2..a403f133e594a6 100644 --- a/model-optimizer/extensions/ops/topk_test.py +++ b/model-optimizer/extensions/ops/topk_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/topkrois_onnx.py b/model-optimizer/extensions/ops/topkrois_onnx.py index 126585efb94e9a..5f907bbffb2f23 100644 --- a/model-optimizer/extensions/ops/topkrois_onnx.py +++ b/model-optimizer/extensions/ops/topkrois_onnx.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/transpose.py b/model-optimizer/extensions/ops/transpose.py index 6cfe3a49b9747e..ea686505bce87c 100644 --- a/model-optimizer/extensions/ops/transpose.py +++ b/model-optimizer/extensions/ops/transpose.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/transpose_test.py b/model-optimizer/extensions/ops/transpose_test.py index 94eebb059157d0..dce4ec91fbf062 100644 --- a/model-optimizer/extensions/ops/transpose_test.py +++ b/model-optimizer/extensions/ops/transpose_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import itertools import unittest diff --git a/model-optimizer/extensions/ops/unique.py b/model-optimizer/extensions/ops/unique.py index 5047dca468869a..139185bdcdf6c8 100644 --- a/model-optimizer/extensions/ops/unique.py +++ b/model-optimizer/extensions/ops/unique.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/extensions/ops/unique_test.py b/model-optimizer/extensions/ops/unique_test.py index 65da100488bbfb..459bd2824f7ce6 100644 --- a/model-optimizer/extensions/ops/unique_test.py +++ b/model-optimizer/extensions/ops/unique_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/extensions/ops/upsample.py b/model-optimizer/extensions/ops/upsample.py index dc2253ec28a4fb..d5a62d02193706 100644 --- a/model-optimizer/extensions/ops/upsample.py +++ b/model-optimizer/extensions/ops/upsample.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import math import numpy as np diff --git a/model-optimizer/extensions/ops/upsample_test.py b/model-optimizer/extensions/ops/upsample_test.py index 0f29ffb2209ef8..215c3c4cd688ae 100644 --- a/model-optimizer/extensions/ops/upsample_test.py +++ b/model-optimizer/extensions/ops/upsample_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/install_prerequisites/install_prerequisites.bat b/model-optimizer/install_prerequisites/install_prerequisites.bat index 47f262b5883d32..ec6405372b3011 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites.bat +++ b/model-optimizer/install_prerequisites/install_prerequisites.bat @@ -1,17 +1,7 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. + +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 :: Check if Python is installed setlocal @@ -35,7 +25,7 @@ for /F "tokens=1,2,3 delims=. " %%a in ("%version%") do ( if "%Major%" geq "3" ( if "%Minor%" geq "5" ( - set python_ver=okay + set python_ver=okay ) ) if not "%python_ver%"=="okay" ( @@ -77,9 +67,86 @@ IF /I "%1%" EQU "" ( ) ) - pip3 install --user -r ..\requirements%postfix%.txt +:: Chek MO version +set python_command='python %~dp0..\mo\utils\extract_release_version.py' +FOR /F "delims=" %%i IN (%python_command%) DO set mo_release_version=%%i +IF "%mo_release_version%" == "None.None" ( + set mo_is_custom="true" +) ELSE ( + set mo_is_custom="false" +) + +:: Check if existing IE Python bindings satisfy requirements +set errorlevel= +python %~dp0..\mo\utils\find_ie_version.py +IF %errorlevel% EQU 0 goto ie_search_end + +:: Check if OV already installed via pip +set errorlevel= +pip3 show openvino +IF %errorlevel% EQU 0 ( + IF %mo_is_custom% == "true" ( + echo [ WARNING ] OpenVINO ^(TM^) Toolkit version installed in pip is incompatible with the Model Optimizer + echo [ WARNING ] For the custom Model Optimizer version consider building Inference Engine Python API from sources ^(preferable^) or install the highest OpenVINO ^(TM^) toolkit version using "pip install openvino" + goto ie_search_end + ) + IF %mo_is_custom% == "false" ( + echo [ WARNING ] OpenVINO ^(TM^) Toolkit version installed in pip is incompatible with the Model Optimizer + echo [ WARNING ] For the release Model Optimizer version which is %mo_release_version% please install OpenVINO ^(TM^) toolkit using pip install openvino==%mo_release_version% or build Inference Engine Python API from sources + goto ie_search_end + ) +) + +echo [ WARNING ] Could not find the Inference Engine Python API. Installing OpenVINO ^(TM^) toolkit using pip + +IF %mo_is_custom% == "true" ( + echo [ WARNING ] Detected a custom Model Optimizer version + echo [ WARNING ] The desired version of the Inference Engine can be installed only for the release Model Optimizer version + echo [ WARNING ] The highest OpenVINO ^(TM^) toolkit version will be installed ^(may be incompatible with current Model Optimizer version^) + echo [ WARNING ] It is recommended to build the Inference Engine from sources even if the current installation is successful + goto install_last_ov +) + +set errorlevel= +pip3 install openvino==%mo_release_version% +IF %errorlevel% NEQ 0 ( + echo [ WARNING ] Could not find the OpenVINO ^(TM^) toolkit version %mo_release_version% in pip + echo [ WARNING ] The highest OpenVINO ^(TM^) toolkit version will be installed ^(may be incompatible with current Model Optimizer version^) + echo [ WARNING ] It is recommended to build the Inference Engine from sources even if the current installation is successful + goto install_last_ov +) + +set errorlevel= +python %~dp0..\mo\utils\find_ie_version.py +IF %errorlevel% EQU 0 goto ie_search_end + +echo [ WARNING ] The installed OpenVINO ^(TM^) toolkit version %mo_release_version% does not work as expected. Uninstalling... +pip3 uninstall -y openvino +echo [ WARNING ] Consider building the Inference Engine Python API from sources +goto ie_search_end + +:install_last_ov +set errorlevel= +pip3 install openvino +IF %errorlevel% NEQ 0 ( + echo [ WARNING ] Could not find OpenVINO ^(TM^) toolkit version available in pip for installation + echo [ WARNING ] Consider building the Inference Engine Python API from sources + goto ie_search_end +) + +set errorlevel= +python %~dp0..\mo\utils\find_ie_version.py +IF %errorlevel% EQU 0 goto ie_search_end + +echo [ WARNING ] The installed highest OpenVINO ^(TM^) toolkit version doesn't work as expected. Uninstalling... +pip3 uninstall -y openvino +echo [ WARNING ] Consider building the Inference Engine Python API from sources +goto ie_search_end + +:ie_search_end + echo ***************************************************************************************** echo Optional: To speed up model conversion process, install protobuf-*.egg located in the echo "model-optimizer\install_prerequisites" folder or building protobuf library from sources. diff --git a/model-optimizer/install_prerequisites/install_prerequisites.sh b/model-optimizer/install_prerequisites/install_prerequisites.sh index 345dbe01cda489..5ae1d9f8986b22 100755 --- a/model-optimizer/install_prerequisites/install_prerequisites.sh +++ b/model-optimizer/install_prerequisites/install_prerequisites.sh @@ -1,18 +1,7 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 error() { local code="${3:-1}" @@ -22,7 +11,7 @@ error() { echo "Error on or near line $1; exiting with status ${code}" fi exit "${code}" -} +} trap 'error ${LINENO}' ERR @@ -83,18 +72,129 @@ elif [[ "$OSTYPE" == "darwin"* ]]; then python3 -m pip install --upgrade pip fi +install_latest_ov() { + if $2; then + sudo -E "$1" -m pip install openvino + else + "$1" -m pip install openvino + fi +} + +install_ov() { + if $2; then + sudo -E "$1" -m pip install openvino=="$3" + else + "$1" -m pip install openvino=="$3" + fi +} + +uninstall_ov() { + if $2; then + sudo -E "$1" -m pip uninstall -y openvino + else + "$1" -m pip uninstall -y openvino + fi +} + +check_ie() { + $1 "$SCRIPTDIR/../mo/utils/find_ie_version.py" +} + +check_ov_package() { + if $2; then + sudo -E "$1" -m pip show openvino + else + "$1" -m pip show openvino + fi +} + +print_warning() { + YELLOW='\033[1;33m' + NC='\033[0m' + printf "${YELLOW}[ WARNING ] %s ${NC}\n" "$1" +} + +find_ie_bindings() { + python_executable="$1" + requires_sudo="$2" + + mo_release_version="$("$python_executable" "$SCRIPTDIR"/../mo/utils/extract_release_version.py)" + if [[ $mo_release_version == "None.None" ]]; then + mo_is_custom=true + else + mo_is_custom=false + fi + + if ! check_ie "$python_executable"; then + # Check if OpenVINO version was installed using pip + if check_ov_package "$python_executable" "$requires_sudo"; then + if $mo_is_custom; then + print_warning "OpenVINO (TM) Toolkit version installed in pip is incompatible with the Model Optimizer." + print_warning "For the custom Model Optimizer version consider building Inference Engine Python API from sources (preferable) or install the highest OpenVINO (TM) toolkit version using \"pip install openvino\"" + else + print_warning "OpenVINO (TM) Toolkit version installed in pip is incompatible with the Model Optimizer." + print_warning "For the release version of the Model Optimizer, which is $mo_release_version, install the OpenVINO (TM) toolkit using \"pip install openvino==$mo_release_version\" or build the Inference Engine Python API from sources." + fi + return 0 + fi + + print_warning "Could not find the Inference Engine Python API. Installing OpenVINO (TM) toolkit using pip." + + if $mo_is_custom; then + print_warning "Detected a custom Model Optimizer version." + print_warning "The desired version of the Inference Engine can be installed only for the release Model Optimizer version." + print_warning "The highest OpenVINO (TM) toolkit version will be installed, which might be incompatible with the current Model Optimizer version." + print_warning "It is recommended to build the Inference Engine from sources even if the current installation is successful." + elif install_ov "$python_executable" "$requires_sudo" "$mo_release_version"; then + if check_ie "$python_executable"; then + return 0 + fi + + print_warning "The installed OpenVINO (TM) toolkit version $mo_release_version does not work as expected. Uninstalling..." + uninstall_ov "$python_executable" "$requires_sudo" + print_warning "Consider building the Inference Engine Python API from sources." + return 0 + else + print_warning "Could not find the OpenVINO (TM) toolkit version $mo_release_version in pip." + print_warning "The highest OpenVINO (TM) toolkit version will be installed, which might be incompatible with the current Model Optimizer version." + print_warning "It is recommended to build the Inference Engine from sources even if the current installation is successful." + fi + + # Install the highest OpenVINO pip version + if install_latest_ov "$python_executable" "$requires_sudo"; then + if check_ie "$python_executable"; then + return 0 + else + print_warning "The installed highest OpenVINO (TM) toolkit version doesn't work as expected. Uninstalling..." + uninstall_ov "$python_executable" "$requires_sudo" + print_warning "Consider building the Inference Engine Python API from sources." + return 0 + fi + else + print_warning "Could not find OpenVINO (TM) toolkit version available in pip for installation." + print_warning "Consider building the Inference Engine Python API from sources." + return 0 + fi + fi + + return 0 +} if [[ $V_ENV -eq 1 ]]; then "$python_binary" -m venv "$SCRIPTDIR/../venv${postfix}" source "$SCRIPTDIR/../venv${postfix}/bin/activate" - "$SCRIPTDIR/../venv${postfix}/bin/$python_binary" -m pip install -r "$SCRIPTDIR/../requirements${postfix}.txt" + venv_python_binary="$SCRIPTDIR/../venv${postfix}/bin/$python_binary" + $venv_python_binary -m pip install -r "$SCRIPTDIR/../requirements${postfix}.txt" + find_ie_bindings "$venv_python_binary" false echo echo "Before running the Model Optimizer, please activate virtualenv environment by running \"source ${SCRIPTDIR}/../venv${postfix}/bin/activate\"" else if [[ "$OSTYPE" == "darwin"* ]]; then python3 -m pip install -r "$SCRIPTDIR/../requirements${postfix}.txt" + find_ie_bindings python3 false else sudo -E $python_binary -m pip install -r "$SCRIPTDIR/../requirements${postfix}.txt" + find_ie_bindings $python_binary true fi echo "[WARNING] All Model Optimizer dependencies are installed globally." echo "[WARNING] If you want to keep Model Optimizer in separate sandbox" diff --git a/model-optimizer/install_prerequisites/install_prerequisites_caffe.bat b/model-optimizer/install_prerequisites/install_prerequisites_caffe.bat index 01229f33b85283..fcd0fd6a5526cd 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites_caffe.bat +++ b/model-optimizer/install_prerequisites/install_prerequisites_caffe.bat @@ -1,15 +1,6 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. + +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 + CALL install_prerequisites.bat caffe \ No newline at end of file diff --git a/model-optimizer/install_prerequisites/install_prerequisites_caffe.sh b/model-optimizer/install_prerequisites/install_prerequisites_caffe.sh index cac7b2bd4802d2..804113e03ffae4 100755 --- a/model-optimizer/install_prerequisites/install_prerequisites_caffe.sh +++ b/model-optimizer/install_prerequisites/install_prerequisites_caffe.sh @@ -1,16 +1,6 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + source install_prerequisites.sh caffe diff --git a/model-optimizer/install_prerequisites/install_prerequisites_kaldi.bat b/model-optimizer/install_prerequisites/install_prerequisites_kaldi.bat index e40de7f9045eae..82d327ae473427 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites_kaldi.bat +++ b/model-optimizer/install_prerequisites/install_prerequisites_kaldi.bat @@ -1,17 +1,7 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. + +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 :: Check if Python is installed CALL install_prerequisites.bat kaldi \ No newline at end of file diff --git a/model-optimizer/install_prerequisites/install_prerequisites_kaldi.sh b/model-optimizer/install_prerequisites/install_prerequisites_kaldi.sh index ec7a6c51563fe6..12a69d364ce542 100755 --- a/model-optimizer/install_prerequisites/install_prerequisites_kaldi.sh +++ b/model-optimizer/install_prerequisites/install_prerequisites_kaldi.sh @@ -1,16 +1,6 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + source install_prerequisites.sh kaldi diff --git a/model-optimizer/install_prerequisites/install_prerequisites_mxnet.bat b/model-optimizer/install_prerequisites/install_prerequisites_mxnet.bat index becb872ab8cfcd..6ac53329d19446 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites_mxnet.bat +++ b/model-optimizer/install_prerequisites/install_prerequisites_mxnet.bat @@ -1,17 +1,7 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. + +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 :: Check if Python is installed CALL install_prerequisites.bat mxnet \ No newline at end of file diff --git a/model-optimizer/install_prerequisites/install_prerequisites_mxnet.sh b/model-optimizer/install_prerequisites/install_prerequisites_mxnet.sh index 6c040da7d3c931..35a9043f295bb3 100755 --- a/model-optimizer/install_prerequisites/install_prerequisites_mxnet.sh +++ b/model-optimizer/install_prerequisites/install_prerequisites_mxnet.sh @@ -1,16 +1,6 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + source install_prerequisites.sh mxnet diff --git a/model-optimizer/install_prerequisites/install_prerequisites_onnx.bat b/model-optimizer/install_prerequisites/install_prerequisites_onnx.bat index 9879f71ae16634..d1c6af936fdb85 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites_onnx.bat +++ b/model-optimizer/install_prerequisites/install_prerequisites_onnx.bat @@ -1,15 +1,6 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. + +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 + CALL install_prerequisites.bat onnx diff --git a/model-optimizer/install_prerequisites/install_prerequisites_onnx.sh b/model-optimizer/install_prerequisites/install_prerequisites_onnx.sh index 0167b174ea175f..2235929e3c7b60 100755 --- a/model-optimizer/install_prerequisites/install_prerequisites_onnx.sh +++ b/model-optimizer/install_prerequisites/install_prerequisites_onnx.sh @@ -1,16 +1,6 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + source install_prerequisites.sh onnx diff --git a/model-optimizer/install_prerequisites/install_prerequisites_tf.bat b/model-optimizer/install_prerequisites/install_prerequisites_tf.bat index 8b82518fc99ad5..f251268ae86e0a 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites_tf.bat +++ b/model-optimizer/install_prerequisites/install_prerequisites_tf.bat @@ -1,17 +1,7 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. + +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 :: Check if Python is installed CALL install_prerequisites.bat tf \ No newline at end of file diff --git a/model-optimizer/install_prerequisites/install_prerequisites_tf.sh b/model-optimizer/install_prerequisites/install_prerequisites_tf.sh index 022f64e64c1aec..c4cfc7ffd1d289 100755 --- a/model-optimizer/install_prerequisites/install_prerequisites_tf.sh +++ b/model-optimizer/install_prerequisites/install_prerequisites_tf.sh @@ -1,16 +1,6 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + source install_prerequisites.sh tf diff --git a/model-optimizer/install_prerequisites/install_prerequisites_tf2.bat b/model-optimizer/install_prerequisites/install_prerequisites_tf2.bat index c6220699926870..e133b98579af50 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites_tf2.bat +++ b/model-optimizer/install_prerequisites/install_prerequisites_tf2.bat @@ -1,17 +1,7 @@ @echo off -:: Copyright (C) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. + +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 :: Check if Python is installed CALL install_prerequisites.bat tf2 diff --git a/model-optimizer/install_prerequisites/install_prerequisites_tf2.sh b/model-optimizer/install_prerequisites/install_prerequisites_tf2.sh index 3b8abcc3cc0782..6f40f495949ebf 100644 --- a/model-optimizer/install_prerequisites/install_prerequisites_tf2.sh +++ b/model-optimizer/install_prerequisites/install_prerequisites_tf2.sh @@ -1,17 +1,7 @@ #!/bin/bash -# Copyright (C) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + source install_prerequisites.sh tf2 diff --git a/model-optimizer/mo.py b/model-optimizer/mo.py index cee7365cedd764..bc8fcf9daa9e36 100755 --- a/model-optimizer/mo.py +++ b/model-optimizer/mo.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys diff --git a/model-optimizer/mo/__init__.py b/model-optimizer/mo/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/__init__.py +++ b/model-optimizer/mo/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/__main__.py b/model-optimizer/mo/__main__.py new file mode 100644 index 00000000000000..1e84a6a65a94d5 --- /dev/null +++ b/model-optimizer/mo/__main__.py @@ -0,0 +1,16 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import sys + +from mo.utils.versions_checker import check_python_version # pylint: disable=no-name-in-module + +ret_code = check_python_version() +if ret_code: + sys.exit(ret_code) + +from mo.main import main +from mo.utils.cli_parser import get_all_cli_parser # pylint: disable=no-name-in-module + +sys.exit(main(get_all_cli_parser(), None)) + diff --git a/model-optimizer/mo/back/__init__.py b/model-optimizer/mo/back/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/back/__init__.py +++ b/model-optimizer/mo/back/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/back/ie_ir_ver_2/__init__.py b/model-optimizer/mo/back/ie_ir_ver_2/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/back/ie_ir_ver_2/__init__.py +++ b/model-optimizer/mo/back/ie_ir_ver_2/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/back/ie_ir_ver_2/emitter.py b/model-optimizer/mo/back/ie_ir_ver_2/emitter.py index 1b422ad6c5cd32..0a80a1f102d410 100644 --- a/model-optimizer/mo/back/ie_ir_ver_2/emitter.py +++ b/model-optimizer/mo/back/ie_ir_ver_2/emitter.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import hashlib from xml.etree.ElementTree import Element, SubElement, tostring diff --git a/model-optimizer/mo/back/ie_ir_ver_2/emitter_test.py b/model-optimizer/mo/back/ie_ir_ver_2/emitter_test.py index 352a56229fd382..239da8fe8e54d1 100644 --- a/model-optimizer/mo/back/ie_ir_ver_2/emitter_test.py +++ b/model-optimizer/mo/back/ie_ir_ver_2/emitter_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import MagicMock diff --git a/model-optimizer/mo/back/offline_transformations.py b/model-optimizer/mo/back/offline_transformations.py new file mode 100644 index 00000000000000..3cd3b5a438a9fb --- /dev/null +++ b/model-optimizer/mo/back/offline_transformations.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +if __name__ == "__main__": + try: + from openvino.inference_engine import IECore # pylint: disable=import-error + from openvino.offline_transformations import ApplyMOCTransformations, CheckAPI # pylint: disable=import-error + except Exception as e: + print("[ WARNING ] {}".format(e)) + exit(1) + + CheckAPI() \ No newline at end of file diff --git a/model-optimizer/mo/back/replacement.py b/model-optimizer/mo/back/replacement.py index a8065bca338238..472778bdf44106 100644 --- a/model-optimizer/mo/back/replacement.py +++ b/model-optimizer/mo/back/replacement.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils import class_registration from mo.utils.replacement_pattern import ReplacementPattern diff --git a/model-optimizer/mo/bom_test.py b/model-optimizer/mo/bom_test.py index b71271ab415045..a9325edbaf58d6 100644 --- a/model-optimizer/mo/bom_test.py +++ b/model-optimizer/mo/bom_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os import platform @@ -53,21 +40,8 @@ def setUpClass(cls): cls.existing_files = [name.rstrip() for name in bom_file.readlines()] cls.expected_header = [re.compile(pattern) for pattern in [ - '^"""$', - '^Copyright \([cC]\) [0-9\-]+ Intel Corporation$', - '^$', - '^Licensed under the Apache License, Version 2.0 \(the "License"\);$', - '^you may not use this file except in compliance with the License.$', - '^You may obtain a copy of the License at$', - '^$', - '^http://www.apache.org/licenses/LICENSE-2.0$', - '^$', - '^Unless required by applicable law or agreed to in writing, software$', - '^distributed under the License is distributed on an "AS IS" BASIS,$', - '^WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.$', - '^See the License for the specific language governing permissions and$', - '^limitations under the License.$', - '^"""$' + '^# Copyright \([cC]\) [0-9\-]+ Intel Corporation$', + '^# SPDX-License-Identifier: Apache-2.0$', ]] def test_bom_file(self): diff --git a/model-optimizer/mo/front/__init__.py b/model-optimizer/mo/front/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/__init__.py +++ b/model-optimizer/mo/front/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/caffe/__init__.py b/model-optimizer/mo/front/caffe/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/caffe/__init__.py +++ b/model-optimizer/mo/front/caffe/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/caffe/collect_attributes.py b/model-optimizer/mo/front/caffe/collect_attributes.py index 2af8dd7afb86b5..cfd127e7e1d2f8 100644 --- a/model-optimizer/mo/front/caffe/collect_attributes.py +++ b/model-optimizer/mo/front/caffe/collect_attributes.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log diff --git a/model-optimizer/mo/front/caffe/custom_layers_mapping.py b/model-optimizer/mo/front/caffe/custom_layers_mapping.py index 4cb3c46b713176..ca9805eb6177eb 100644 --- a/model-optimizer/mo/front/caffe/custom_layers_mapping.py +++ b/model-optimizer/mo/front/caffe/custom_layers_mapping.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from builtins import AttributeError diff --git a/model-optimizer/mo/front/caffe/custom_layers_mapping_test.py b/model-optimizer/mo/front/caffe/custom_layers_mapping_test.py index 20253d213bcd46..e7c586018f7fe4 100644 --- a/model-optimizer/mo/front/caffe/custom_layers_mapping_test.py +++ b/model-optimizer/mo/front/caffe/custom_layers_mapping_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest from google.protobuf import text_format diff --git a/model-optimizer/mo/front/caffe/extractor.py b/model-optimizer/mo/front/caffe/extractor.py index 5570efd443206c..9be166bf174969 100644 --- a/model-optimizer/mo/front/caffe/extractor.py +++ b/model-optimizer/mo/front/caffe/extractor.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.caffe.extractors.native_caffe import native_caffe_node_extractor from mo.front.common.partial_infer.elemental import copy_shape_infer diff --git a/model-optimizer/mo/front/caffe/extractor_test.py b/model-optimizer/mo/front/caffe/extractor_test.py index 612a99f84851ca..23bff3237dcdef 100644 --- a/model-optimizer/mo/front/caffe/extractor_test.py +++ b/model-optimizer/mo/front/caffe/extractor_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/mo/front/caffe/extractors/__init__.py b/model-optimizer/mo/front/caffe/extractors/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/caffe/extractors/__init__.py +++ b/model-optimizer/mo/front/caffe/extractors/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/caffe/extractors/native_caffe.py b/model-optimizer/mo/front/caffe/extractors/native_caffe.py index 44b8c5457f5931..698c1debc7065c 100644 --- a/model-optimizer/mo/front/caffe/extractors/native_caffe.py +++ b/model-optimizer/mo/front/caffe/extractors/native_caffe.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/front/caffe/extractors/tile.py b/model-optimizer/mo/front/caffe/extractors/tile.py index bbd1d7d19b32a4..1cb3bfa4751646 100644 --- a/model-optimizer/mo/front/caffe/extractors/tile.py +++ b/model-optimizer/mo/front/caffe/extractors/tile.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.caffe.collect_attributes import merge_attrs from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/caffe/extractors/utils.py b/model-optimizer/mo/front/caffe/extractors/utils.py index e13e2acdd1c3f1..a8daab12613a20 100644 --- a/model-optimizer/mo/front/caffe/extractors/utils.py +++ b/model-optimizer/mo/front/caffe/extractors/utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/caffe/extractors/utils_test.py b/model-optimizer/mo/front/caffe/extractors/utils_test.py index b998add5e28c21..fe420f267b20ff 100644 --- a/model-optimizer/mo/front/caffe/extractors/utils_test.py +++ b/model-optimizer/mo/front/caffe/extractors/utils_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch, call diff --git a/model-optimizer/mo/front/caffe/loader.py b/model-optimizer/mo/front/caffe/loader.py index 4ac0920b01fdd0..8419acc8d9d718 100644 --- a/model-optimizer/mo/front/caffe/loader.py +++ b/model-optimizer/mo/front/caffe/loader.py @@ -1,29 +1,17 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import importlib import logging as log -import mmap import os import sys +import mmap import numpy as np from google.protobuf import text_format from google.protobuf.internal import api_implementation +from mo.front.extractor import add_outputs_identity from mo.graph.graph import Graph from mo.utils.error import Error, FrameworkError from mo.utils.utils import refer_to_faq_msg @@ -253,6 +241,7 @@ def caffe_pb_to_nx(graph, proto, model): kind='op') blob_producers[input_name] = (input_name, 0) + used_blobs = set() for i, layer in enumerate(proto_layers): model_layer = None @@ -296,20 +285,8 @@ def caffe_pb_to_nx(graph, proto, model): # connect inputs based on blob_producers dictionary for dst_port, bottom in enumerate(layer.bottom): - src_layer = blob_producers[bottom][0] - src_port = blob_producers[bottom][1] - assert (graph.has_node(src_layer)) - edge_attrs = { - 'out': src_port, - 'in': dst_port, - 'name': bottom, - # debug anchor for a framework name, out port and tensor name - 'fw_tensor_debug_info': [(src_layer, src_port, bottom)], - 'in_attrs': ['in', 'name'], - 'out_attrs': ['out', 'name'], - 'data_attrs': ['fw_tensor_debug_info'] - } - graph.add_edge(src_layer, layer.name, **edge_attrs) + add_edge_caffe(graph, bottom, layer.name, blob_producers, dst_port) + used_blobs.add(bottom) # update blob producers dictionary by output ports for src_port, top in enumerate(layer.top): @@ -317,7 +294,35 @@ def caffe_pb_to_nx(graph, proto, model): log.debug("Detected reuse of blob {} by layer {}".format(top, layer.name)) blob_producers[top] = (layer.name, src_port) + # Tensor names information corresponding to a node is stored on outgoing edges. + # As output nodes do not have outgoing edges, fake outputs are required. In the following code + # for each output Identity node is added, and tensor name for the output is kept + # on (output, fake output) edge. After Result nodes adding transformation fake outputs + # are deleted from graph. + all_blobs = set(blob_producers.keys()) + add_outputs_identity(graph, all_blobs - used_blobs, add_edge_caffe, + {'blob_producers': blob_producers, 'dst_port': 0}) + if len(input_names) <= 0: raise Error('The topology contains no "input" layers. ' + refer_to_faq_msg(79)) - return {name: shape for (name, shape) in zip(input_names, input_dims)} + return {fake_node_name: shape for (fake_node_name, shape) in zip(input_names, input_dims)} + + +def add_edge_caffe(graph: Graph, bottom: str, dst_layer: str, blob_producers: dict, dst_port: int): + """ + Creates an edge and adds it to the graph. + """ + src_layer = blob_producers[bottom][0] + src_port = blob_producers[bottom][1] + edge_attrs = { + 'out': src_port, + 'in': dst_port, + 'name': bottom, + # debug anchor for a framework name, out port and tensor name + 'fw_tensor_debug_info': [(src_layer, src_port, bottom)], + 'in_attrs': ['in', 'name'], + 'out_attrs': ['out', 'name'], + 'data_attrs': ['fw_tensor_debug_info'] + } + graph.add_edge(src_layer, dst_layer, **edge_attrs) diff --git a/model-optimizer/mo/front/caffe/loader_test.py b/model-optimizer/mo/front/caffe/loader_test.py index a6189ce6d12bbb..1c80f7985a3c0c 100644 --- a/model-optimizer/mo/front/caffe/loader_test.py +++ b/model-optimizer/mo/front/caffe/loader_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest @@ -158,5 +145,5 @@ def test_caffe_same_name_layer(self): text_format.Merge(proto_str_multi_input + proto_same_name_layers, proto) graph = Graph() caffe_pb_to_nx(graph, proto, None) - # 6 nodes because: 2 inputs + 2 convolutions - np.testing.assert_equal(len(graph.nodes()), 4) + # 6 nodes because: 2 inputs + 2 convolutions + 2 identity nodes used as fake outputs + np.testing.assert_equal(len(graph.nodes()), 6) diff --git a/model-optimizer/mo/front/caffe/proto/__init__.py b/model-optimizer/mo/front/caffe/proto/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/caffe/proto/__init__.py +++ b/model-optimizer/mo/front/caffe/proto/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/caffe/proto/generate_caffe_pb2.py b/model-optimizer/mo/front/caffe/proto/generate_caffe_pb2.py index 60e92bc8ea0cd4..dfb3c14c3f8fa9 100644 --- a/model-optimizer/mo/front/caffe/proto/generate_caffe_pb2.py +++ b/model-optimizer/mo/front/caffe/proto/generate_caffe_pb2.py @@ -1,19 +1,6 @@ -# !/usr/bin/env python -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import argparse import os import shutil diff --git a/model-optimizer/mo/front/caffe/python_layer_extractor.py b/model-optimizer/mo/front/caffe/python_layer_extractor.py index 34e654271dd6b2..a2c64de007fd2a 100644 --- a/model-optimizer/mo/front/caffe/python_layer_extractor.py +++ b/model-optimizer/mo/front/caffe/python_layer_extractor.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp, CaffePythonFrontExtractorOp diff --git a/model-optimizer/mo/front/caffe/python_layer_extractor_test.py b/model-optimizer/mo/front/caffe/python_layer_extractor_test.py index beb80d082dfdfd..78afb932afd647 100644 --- a/model-optimizer/mo/front/caffe/python_layer_extractor_test.py +++ b/model-optimizer/mo/front/caffe/python_layer_extractor_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/caffe/register_custom_ops.py b/model-optimizer/mo/front/caffe/register_custom_ops.py index 95af950de2c1dc..8af5a405973af8 100644 --- a/model-optimizer/mo/front/caffe/register_custom_ops.py +++ b/model-optimizer/mo/front/caffe/register_custom_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementOp, FrontReplacementPattern, FrontReplacementSubgraph from mo.front.extractor import FrontExtractorOp, CaffePythonFrontExtractorOp diff --git a/model-optimizer/mo/front/common/__init__.py b/model-optimizer/mo/front/common/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/common/__init__.py +++ b/model-optimizer/mo/front/common/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/common/custom_replacement_registry.py b/model-optimizer/mo/front/common/custom_replacement_registry.py index ec63ba46d7ab15..7dd62d43785aba 100644 --- a/model-optimizer/mo/front/common/custom_replacement_registry.py +++ b/model-optimizer/mo/front/common/custom_replacement_registry.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import os diff --git a/model-optimizer/mo/front/common/extractors/__init__.py b/model-optimizer/mo/front/common/extractors/__init__.py new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/model-optimizer/mo/front/common/extractors/utils.py b/model-optimizer/mo/front/common/extractors/utils.py index 39d2385c606cb7..b03dab621e1566 100644 --- a/model-optimizer/mo/front/common/extractors/utils.py +++ b/model-optimizer/mo/front/common/extractors/utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/common/find_unsupported_ops.py b/model-optimizer/mo/front/common/find_unsupported_ops.py index 79dbeead51724f..e2fa333e70af9f 100644 --- a/model-optimizer/mo/front/common/find_unsupported_ops.py +++ b/model-optimizer/mo/front/common/find_unsupported_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/front/common/layout.py b/model-optimizer/mo/front/common/layout.py index d40437c87cd29b..cfa9c1038d12b3 100644 --- a/model-optimizer/mo/front/common/layout.py +++ b/model-optimizer/mo/front/common/layout.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/common/layout_test.py b/model-optimizer/mo/front/common/layout_test.py index 7fc5a9b704773a..e69ac383427b4b 100644 --- a/model-optimizer/mo/front/common/layout_test.py +++ b/model-optimizer/mo/front/common/layout_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/common/partial_infer/__init__.py b/model-optimizer/mo/front/common/partial_infer/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/common/partial_infer/__init__.py +++ b/model-optimizer/mo/front/common/partial_infer/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/common/partial_infer/batch_norm.py b/model-optimizer/mo/front/common/partial_infer/batch_norm.py index 6b4e6522a3d28e..6e177545393b0f 100644 --- a/model-optimizer/mo/front/common/partial_infer/batch_norm.py +++ b/model-optimizer/mo/front/common/partial_infer/batch_norm.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/common/partial_infer/caffe_fallback.py b/model-optimizer/mo/front/common/partial_infer/caffe_fallback.py index 6eb896e30363f6..856a53835dece6 100644 --- a/model-optimizer/mo/front/common/partial_infer/caffe_fallback.py +++ b/model-optimizer/mo/front/common/partial_infer/caffe_fallback.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import os diff --git a/model-optimizer/mo/front/common/partial_infer/caffe_fallback_test.py b/model-optimizer/mo/front/common/partial_infer/caffe_fallback_test.py index 49630f4a6276f0..a1a9646e5488ea 100644 --- a/model-optimizer/mo/front/common/partial_infer/caffe_fallback_test.py +++ b/model-optimizer/mo/front/common/partial_infer/caffe_fallback_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import MagicMock diff --git a/model-optimizer/mo/front/common/partial_infer/concat.py b/model-optimizer/mo/front/common/partial_infer/concat.py index e68b39a01cebec..47bfd4ba51eed3 100644 --- a/model-optimizer/mo/front/common/partial_infer/concat.py +++ b/model-optimizer/mo/front/common/partial_infer/concat.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/front/common/partial_infer/concat_test.py b/model-optimizer/mo/front/common/partial_infer/concat_test.py index bf35eb6bfcc0c9..4caa598ef43bd0 100644 --- a/model-optimizer/mo/front/common/partial_infer/concat_test.py +++ b/model-optimizer/mo/front/common/partial_infer/concat_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/common/partial_infer/crop.py b/model-optimizer/mo/front/common/partial_infer/crop.py index e9d8c76ea33e1c..d60703a5f4272f 100644 --- a/model-optimizer/mo/front/common/partial_infer/crop.py +++ b/model-optimizer/mo/front/common/partial_infer/crop.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/front/common/partial_infer/crop_test.py b/model-optimizer/mo/front/common/partial_infer/crop_test.py index ca2359b3476127..4f7f902aff0d7a 100644 --- a/model-optimizer/mo/front/common/partial_infer/crop_test.py +++ b/model-optimizer/mo/front/common/partial_infer/crop_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/common/partial_infer/elemental.py b/model-optimizer/mo/front/common/partial_infer/elemental.py index 0a050adc4d016d..e1459b258244a4 100644 --- a/model-optimizer/mo/front/common/partial_infer/elemental.py +++ b/model-optimizer/mo/front/common/partial_infer/elemental.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 def single_output_infer(node, shape_infer, value_infer=None): node.out_node(0).shape = shape_infer(node) diff --git a/model-optimizer/mo/front/common/partial_infer/elemental_test.py b/model-optimizer/mo/front/common/partial_infer/elemental_test.py index bad69df322d89c..9a362d7617ce21 100644 --- a/model-optimizer/mo/front/common/partial_infer/elemental_test.py +++ b/model-optimizer/mo/front/common/partial_infer/elemental_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/mo/front/common/partial_infer/eltwise.py b/model-optimizer/mo/front/common/partial_infer/eltwise.py index f0f26e33e5f81a..47b40eb857ec93 100644 --- a/model-optimizer/mo/front/common/partial_infer/eltwise.py +++ b/model-optimizer/mo/front/common/partial_infer/eltwise.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/common/partial_infer/eltwise_test.py b/model-optimizer/mo/front/common/partial_infer/eltwise_test.py index 8685f0cc27a7a5..755509b8ec50bc 100644 --- a/model-optimizer/mo/front/common/partial_infer/eltwise_test.py +++ b/model-optimizer/mo/front/common/partial_infer/eltwise_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/common/partial_infer/multi_box_detection.py b/model-optimizer/mo/front/common/partial_infer/multi_box_detection.py index fb86a348c33363..a02dc637fd0b0a 100644 --- a/model-optimizer/mo/front/common/partial_infer/multi_box_detection.py +++ b/model-optimizer/mo/front/common/partial_infer/multi_box_detection.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/front/common/partial_infer/multi_box_detection_test.py b/model-optimizer/mo/front/common/partial_infer/multi_box_detection_test.py index 5b4df655733073..b96e1b0274485c 100644 --- a/model-optimizer/mo/front/common/partial_infer/multi_box_detection_test.py +++ b/model-optimizer/mo/front/common/partial_infer/multi_box_detection_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/common/partial_infer/multi_box_prior.py b/model-optimizer/mo/front/common/partial_infer/multi_box_prior.py index cd0abd8ac4c9a1..a731362fe0f538 100644 --- a/model-optimizer/mo/front/common/partial_infer/multi_box_prior.py +++ b/model-optimizer/mo/front/common/partial_infer/multi_box_prior.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/common/partial_infer/multi_box_prior_test.py b/model-optimizer/mo/front/common/partial_infer/multi_box_prior_test.py index 14b1db41e0ef14..10adde2eababd6 100644 --- a/model-optimizer/mo/front/common/partial_infer/multi_box_prior_test.py +++ b/model-optimizer/mo/front/common/partial_infer/multi_box_prior_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/common/partial_infer/random_uniform.py b/model-optimizer/mo/front/common/partial_infer/random_uniform.py index 781bfffaa6fbae..b31d71ed328551 100644 --- a/model-optimizer/mo/front/common/partial_infer/random_uniform.py +++ b/model-optimizer/mo/front/common/partial_infer/random_uniform.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np diff --git a/model-optimizer/mo/front/common/partial_infer/reshape.py b/model-optimizer/mo/front/common/partial_infer/reshape.py index 08bcf2a7b1e2df..f93f160b88b538 100644 --- a/model-optimizer/mo/front/common/partial_infer/reshape.py +++ b/model-optimizer/mo/front/common/partial_infer/reshape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.graph.perm_inputs import PermuteInputs diff --git a/model-optimizer/mo/front/common/partial_infer/roipooling.py b/model-optimizer/mo/front/common/partial_infer/roipooling.py index 162cb894c590b9..2b5f35e948565d 100644 --- a/model-optimizer/mo/front/common/partial_infer/roipooling.py +++ b/model-optimizer/mo/front/common/partial_infer/roipooling.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/front/common/partial_infer/roipooling_test.py b/model-optimizer/mo/front/common/partial_infer/roipooling_test.py index 02ff5949bf1b70..fc21b6c32efc0f 100644 --- a/model-optimizer/mo/front/common/partial_infer/roipooling_test.py +++ b/model-optimizer/mo/front/common/partial_infer/roipooling_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/common/partial_infer/utils.py b/model-optimizer/mo/front/common/partial_infer/utils.py index ba692dea7ba984..cb3c96652ac023 100644 --- a/model-optimizer/mo/front/common/partial_infer/utils.py +++ b/model-optimizer/mo/front/common/partial_infer/utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from typing import Iterable, List, Union @@ -20,16 +7,16 @@ import numpy as np -def int64_array(l: Iterable): - return np.array(l, dtype=np.int64) +def int64_array(value: Union[Iterable[Union[float, int]], float, int]) -> np.ndarray: + return np.array(value, dtype=np.int64) -def float_array(l: list): - return np.array(l, dtype=np.float64) +def float_array(value: Union[Iterable[Union[float, int]], float, int]) -> np.ndarray: + return np.array(value, dtype=np.float64) -def float32_array(l: list): - return np.array(l, dtype=np.float32) +def float32_array(value: Union[Iterable[Union[float, int]], float, int]) -> np.ndarray: + return np.array(value, dtype=np.float32) def mark_input_bins(node, names=('weights', 'biases'), start_port: int = 1): @@ -132,7 +119,7 @@ def get_shape_from_slice(input_shape: np.ndarray, slices: List) -> np.ndarray: in_idx += 1 elif s is np.newaxis: output_shape.append(1) - elif isinstance(s, int): # shrink_axis + elif type(s) in [int, np.int, np.int32, np.int64]: # shrink_axis in_idx += 1 elif s is Ellipsis: for idx in range(num_ellipsis_inserts): diff --git a/model-optimizer/mo/front/common/register_custom_ops.py b/model-optimizer/mo/front/common/register_custom_ops.py index 333ec0c9e825a4..a1d30193e63e1d 100644 --- a/model-optimizer/mo/front/common/register_custom_ops.py +++ b/model-optimizer/mo/front/common/register_custom_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from collections import defaultdict diff --git a/model-optimizer/mo/front/common/replacement.py b/model-optimizer/mo/front/common/replacement.py index d7f31904f3269f..a73dae34f9eab1 100644 --- a/model-optimizer/mo/front/common/replacement.py +++ b/model-optimizer/mo/front/common/replacement.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.front.subgraph_matcher import SubgraphMatch diff --git a/model-optimizer/mo/front/common/weights.py b/model-optimizer/mo/front/common/weights.py index 86681abce30f8c..abff90f28adbce 100644 --- a/model-optimizer/mo/front/common/weights.py +++ b/model-optimizer/mo/front/common/weights.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.utils.graph import Graph diff --git a/model-optimizer/mo/front/extractor.py b/model-optimizer/mo/front/extractor.py index 6f29a2a7a6b9a4..01238fdddf649d 100644 --- a/model-optimizer/mo/front/extractor.py +++ b/model-optimizer/mo/front/extractor.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import ast import logging as log import re @@ -37,6 +25,7 @@ def restore_edges(graph: Graph, get_edges: callable): n1 --> n2 edge with attributes attrs. It is possible that two nodes n1 and n2 have more than one n1 --> n2 edges, so the resulting graph is Graph. """ + used_tensors = set() for node in list(graph.nodes()): edges = get_edges(Node(graph, node)) for u, v, d in edges: @@ -49,7 +38,10 @@ def restore_edges(graph: Graph, get_edges: callable): ' and '.join(undefined) + refer_to_faq_msg(25) ) + used_tensors.add(u) + graph.add_edges_from(edges) + return used_tensors def remove_control_dependency_inputs(graph: Graph): @@ -58,6 +50,8 @@ def remove_control_dependency_inputs(graph: Graph): :param graph: graph to operate on """ for _, attrs in list(graph.nodes(data=True)): + if 'pb' not in attrs: + continue pb = attrs['pb'] ind = 0 while ind < len(pb.input): @@ -132,7 +126,7 @@ def attr_getter(node: Node, name: str): def bool_to_str(node: Node, attr: str): - # Function converts 0/1 or bool False/True values to str 'false'/'true' which need to appear in IR + # Function converts 0/1 or bool False/True or '0'/'1' values to str 'false'/'true' which need to appear in IR attribute_name = node.soft_get(attr, None) if attribute_name is None: return None @@ -140,6 +134,8 @@ def bool_to_str(node: Node, attr: str): return str(attribute_name).lower() elif attribute_name in [0, 1]: return str(bool(attribute_name)).lower() + elif attribute_name in ['0', '1']: + return str(bool(int(attribute_name))).lower() else: raise Error('Wrong value {} for boolean attribute {} in node {}'.format( attribute_name, attr, node.soft_get('name'))) @@ -796,6 +792,24 @@ def add_output_ops(graph: Graph, user_defined_outputs: dict, inputs: dict = None return sinks +def add_outputs_identity(graph: Graph, outputs: list, add_edge: callable, params: dict = {}): + """ + Adds identity nodes marked with needs_removal=True attribute after each output of the graph. + These nodes are used for storing tensor names information at the incoming edge + and are removed with the OutputCut transformation. + :param graph: graph to operate on. + :param outputs: list of output node ids. + :param add_edge: method which adds an edge to the graph with the following signature: + f(src_node_id: str, dst_node_id: str, in_port: int). + :param params: extra parameters for add_edge method. + """ + for output in outputs: + fake_node_name = graph.unique_id(output) + graph.add_node(fake_node_name, name=fake_node_name, identity=True, kind='op', op='Identity', + infer=None, needs_removal=True) + add_edge(graph, output, fake_node_name, **params) + + def set_is_input(graph: Graph, placeholders: list, is_input: bool): for placeholder in placeholders: graph.node[placeholder]['is_input'] = is_input diff --git a/model-optimizer/mo/front/extractor_test.py b/model-optimizer/mo/front/extractor_test.py index 0950ddc9e963df..463d344d991f75 100644 --- a/model-optimizer/mo/front/extractor_test.py +++ b/model-optimizer/mo/front/extractor_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/kaldi/__init__.py b/model-optimizer/mo/front/kaldi/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/kaldi/__init__.py +++ b/model-optimizer/mo/front/kaldi/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/kaldi/extractor.py b/model-optimizer/mo/front/kaldi/extractor.py index 32d2e962fef68e..995597d9317f38 100644 --- a/model-optimizer/mo/front/kaldi/extractor.py +++ b/model-optimizer/mo/front/kaldi/extractor.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node diff --git a/model-optimizer/mo/front/kaldi/extractors/__init__.py b/model-optimizer/mo/front/kaldi/extractors/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/kaldi/extractors/__init__.py +++ b/model-optimizer/mo/front/kaldi/extractors/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/kaldi/extractors/add_ext.py b/model-optimizer/mo/front/kaldi/extractors/add_ext.py index c9ab6245789de8..daf9b244058659 100644 --- a/model-optimizer/mo/front/kaldi/extractors/add_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/add_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.elementwise import Add from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/add_shift_ext.py b/model-optimizer/mo/front/kaldi/extractors/add_shift_ext.py index 85c14de1e7a952..5ee5b9cc8ce058 100644 --- a/model-optimizer/mo/front/kaldi/extractors/add_shift_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/add_shift_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.caffe.extractors.utils import embed_input diff --git a/model-optimizer/mo/front/kaldi/extractors/add_shift_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/add_shift_ext_test.py index ec3eeec1fee3f8..8e58a1095fd8e0 100644 --- a/model-optimizer/mo/front/kaldi/extractors/add_shift_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/add_shift_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/affine_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/affine_component_ext.py index c9e3198e3e90dd..d0807d0883d28c 100644 --- a/model-optimizer/mo/front/kaldi/extractors/affine_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/affine_component_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.front.kaldi.extractors.fixed_affine_component_ext import FixedAffineComponentFrontExtractor from mo.front.kaldi.utils import read_learning_info diff --git a/model-optimizer/mo/front/kaldi/extractors/affine_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/affine_component_ext_test.py index 3f6a98272fd2ac..032d22c954dff9 100644 --- a/model-optimizer/mo/front/kaldi/extractors/affine_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/affine_component_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/affine_component_preconditioned_online_ext.py b/model-optimizer/mo/front/kaldi/extractors/affine_component_preconditioned_online_ext.py index 4d76be28587c60..4f6239cc651e45 100644 --- a/model-optimizer/mo/front/kaldi/extractors/affine_component_preconditioned_online_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/affine_component_preconditioned_online_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.front.kaldi.extractors.fixed_affine_component_ext import FixedAffineComponentFrontExtractor from mo.front.kaldi.utils import read_learning_info diff --git a/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext.py b/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext.py index 21032def033961..bbc9b41a3d3e7f 100644 --- a/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.MatMul import FullyConnected from mo.front.caffe.extractors.utils import embed_input from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext_test.py index 305bfbd3ff1943..8c2cb06e955df5 100644 --- a/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/affine_transform_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/backproptruncation_ext.py b/model-optimizer/mo/front/kaldi/extractors/backproptruncation_ext.py index 099465d4888208..84f4365918420c 100644 --- a/model-optimizer/mo/front/kaldi/extractors/backproptruncation_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/backproptruncation_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.caffe.extractors.utils import embed_input diff --git a/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext.py index 09e447a0377bed..cc0fba3daf5770 100644 --- a/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext_test.py index 852d2a32453d5d..380bdd341cf779 100644 --- a/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/batchnorm_component_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/bias_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/bias_component_ext.py index 48abe92e090de0..dbd46063306e13 100644 --- a/model-optimizer/mo/front/kaldi/extractors/bias_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/bias_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.caffe.extractors.utils import embed_input from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/bias_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/bias_component_ext_test.py index 3a6d9c3c2c8978..c604dc75033a14 100644 --- a/model-optimizer/mo/front/kaldi/extractors/bias_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/bias_component_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/clip_ext.py b/model-optimizer/mo/front/kaldi/extractors/clip_ext.py index 5d07dc663f4ec1..17de251127e444 100644 --- a/model-optimizer/mo/front/kaldi/extractors/clip_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/clip_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/common_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/common_ext_test.py index 37fd22a0cebc86..188b755e38b12d 100644 --- a/model-optimizer/mo/front/kaldi/extractors/common_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/common_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/kaldi/extractors/concat_ext.py b/model-optimizer/mo/front/kaldi/extractors/concat_ext.py index 4a72de87ad9b2e..a8a3dbbf6ba6d5 100644 --- a/model-optimizer/mo/front/kaldi/extractors/concat_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/concat_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.concat import Concat diff --git a/model-optimizer/mo/front/kaldi/extractors/concat_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/concat_ext_test.py index c28c8f048e6727..52ce5fca2478c8 100644 --- a/model-optimizer/mo/front/kaldi/extractors/concat_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/concat_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.kaldi.extractors.common_ext_test import KaldiFrontExtractorTest from mo.front.kaldi.extractors.concat_ext import ConcatFrontExtractor diff --git a/model-optimizer/mo/front/kaldi/extractors/const_ext.py b/model-optimizer/mo/front/kaldi/extractors/const_ext.py index 39a0e7b13987c9..73fe04e3337d28 100644 --- a/model-optimizer/mo/front/kaldi/extractors/const_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/const_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.const import Const diff --git a/model-optimizer/mo/front/kaldi/extractors/convolutional_1d_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/convolutional_1d_component_ext.py index 3c1dc4e06ee8fb..28f53d5960800d 100644 --- a/model-optimizer/mo/front/kaldi/extractors/convolutional_1d_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/convolutional_1d_component_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.caffe.extractors.utils import embed_input diff --git a/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext.py index 00364fdfe5a36b..8344c39a3d99ae 100644 --- a/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.caffe.extractors.utils import embed_input diff --git a/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext_test.py index 251710f5974441..5bc1e5763d72b7 100644 --- a/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/convolutional_component_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.kaldi.extractors.common_ext_test import KaldiFrontExtractorTest diff --git a/model-optimizer/mo/front/kaldi/extractors/copy_ext.py b/model-optimizer/mo/front/kaldi/extractors/copy_ext.py index 9acde3a6a0c6ad..33179b16186b18 100644 --- a/model-optimizer/mo/front/kaldi/extractors/copy_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/copy_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/crop_ext.py b/model-optimizer/mo/front/kaldi/extractors/crop_ext.py index 3465079ea8ab6e..6dc05fd0fa1e7c 100644 --- a/model-optimizer/mo/front/kaldi/extractors/crop_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/crop_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.ops.crop import Crop diff --git a/model-optimizer/mo/front/kaldi/extractors/elementwise_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/elementwise_component_ext.py index f7fd97d1bbd762..7c6033320ef7e4 100644 --- a/model-optimizer/mo/front/kaldi/extractors/elementwise_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/elementwise_component_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.front.kaldi.utils import read_token_value from mo.ops.eltwise_ninputs_in_1 import EltwiseNin1 diff --git a/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext.py index 88fd19256642b1..7053f02efe5c03 100644 --- a/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.MatMul import FullyConnected from mo.front.caffe.extractors.utils import embed_input diff --git a/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext_test.py index 634f931a05557b..ec2dac8080d976 100644 --- a/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/fixed_affine_component_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/generaldropout_ext.py b/model-optimizer/mo/front/kaldi/extractors/generaldropout_ext.py index 1e4ed01343ecef..968cd7dd9d1864 100644 --- a/model-optimizer/mo/front/kaldi/extractors/generaldropout_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/generaldropout_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.front.kaldi.loader.utils import read_binary_integer32_token, collect_until_token, \ diff --git a/model-optimizer/mo/front/kaldi/extractors/linear_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/linear_component_ext.py index 6453655b5fd1ea..1b3b4462b7a903 100644 --- a/model-optimizer/mo/front/kaldi/extractors/linear_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/linear_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.MatMul import FullyConnected from mo.front.caffe.extractors.utils import embed_input diff --git a/model-optimizer/mo/front/kaldi/extractors/lstm_nonlinearity_ext.py b/model-optimizer/mo/front/kaldi/extractors/lstm_nonlinearity_ext.py index 2552c4bfaa56b1..bbd8f5bfadb9c8 100644 --- a/model-optimizer/mo/front/kaldi/extractors/lstm_nonlinearity_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/lstm_nonlinearity_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.caffe.extractors.utils import embed_input from mo.front.extractor import FrontExtractorOp from mo.front.kaldi.loader.utils import collect_until_token diff --git a/model-optimizer/mo/front/kaldi/extractors/lstm_projected_streams_ext.py b/model-optimizer/mo/front/kaldi/extractors/lstm_projected_streams_ext.py index e44c477a50d97c..afd36da910df33 100644 --- a/model-optimizer/mo/front/kaldi/extractors/lstm_projected_streams_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/lstm_projected_streams_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.lstm_cell import LSTMCell from mo.front.caffe.extractors.utils import embed_input from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext.py b/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext.py index ab153064be4f5f..bd9e3c4bf9c18f 100644 --- a/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.common.extractors.utils import layout_attrs diff --git a/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext_test.py index d4e0ba79af96c3..a139ad330f02c0 100644 --- a/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/max_pooling_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.kaldi.extractors.common_ext_test import KaldiFrontExtractorTest diff --git a/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext.py b/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext.py index 9c6e3d06686b3d..7b9da034eb17d8 100644 --- a/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.extractor import FrontExtractorOp from mo.ops.memoryoffset import MemoryOffset diff --git a/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext_test.py index 584c9c45020a3b..a95ea9b4773389 100644 --- a/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/memoryoffset_ext_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.kaldi.extractors.common_ext_test import KaldiFrontExtractorTest from mo.front.kaldi.extractors.memoryoffset_ext import MemoryOffsetFrontExtractor from mo.ops.memoryoffset import MemoryOffset diff --git a/model-optimizer/mo/front/kaldi/extractors/mul_ext.py b/model-optimizer/mo/front/kaldi/extractors/mul_ext.py index d8047d4403599c..0b795c081269a2 100644 --- a/model-optimizer/mo/front/kaldi/extractors/mul_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/mul_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Mul from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/naturalgradient_affine_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/naturalgradient_affine_component_ext.py index c2de80de882aec..4cf626c3a6c5c7 100644 --- a/model-optimizer/mo/front/kaldi/extractors/naturalgradient_affine_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/naturalgradient_affine_component_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import FrontExtractorOp from mo.front.kaldi.extractors.fixed_affine_component_ext import FixedAffineComponentFrontExtractor from mo.front.kaldi.utils import read_learning_info diff --git a/model-optimizer/mo/front/kaldi/extractors/noop_ext.py b/model-optimizer/mo/front/kaldi/extractors/noop_ext.py index 26258f58f95899..1e898481b01410 100644 --- a/model-optimizer/mo/front/kaldi/extractors/noop_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/noop_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext.py index f7250ab88692db..077b8a094251e3 100644 --- a/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext_test.py index d6041410774ec7..8f2732d9a32923 100644 --- a/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/normalize_component_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext.py index 068befe9b9be66..349e53224fdd69 100644 --- a/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.pnorm import PNormOp from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext_test.py index 6456808ab8818c..2abcda4491e450 100644 --- a/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/pnorm_component_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/rectified_linear_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/rectified_linear_component_ext.py index 53becac506332f..d06ba0bcee2d6a 100644 --- a/model-optimizer/mo/front/kaldi/extractors/rectified_linear_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/rectified_linear_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import ReLU from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/rescale_ext.py b/model-optimizer/mo/front/kaldi/extractors/rescale_ext.py index 9e08ec5259bd5f..69c2726c9f655b 100644 --- a/model-optimizer/mo/front/kaldi/extractors/rescale_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/rescale_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.caffe.extractors.utils import embed_input from mo.front.extractor import FrontExtractorOp from mo.front.kaldi.utils import read_binary_vector, read_learning_info diff --git a/model-optimizer/mo/front/kaldi/extractors/rescale_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/rescale_ext_test.py index 54602c50a405fb..28edd99b9ddf6d 100644 --- a/model-optimizer/mo/front/kaldi/extractors/rescale_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/rescale_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/scale_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/scale_component_ext.py index 7e12fe7d362407..d02ccba0eb31c3 100644 --- a/model-optimizer/mo/front/kaldi/extractors/scale_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/scale_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.caffe.extractors.utils import embed_input from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/scale_component_ext_test.py b/model-optimizer/mo/front/kaldi/extractors/scale_component_ext_test.py index f1ad98a9446c26..eb7b022c8f6e70 100644 --- a/model-optimizer/mo/front/kaldi/extractors/scale_component_ext_test.py +++ b/model-optimizer/mo/front/kaldi/extractors/scale_component_ext_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/extractors/softmax_ext.py b/model-optimizer/mo/front/kaldi/extractors/softmax_ext.py index 9bccbec7ba8ff6..a48e81ad6c2c28 100644 --- a/model-optimizer/mo/front/kaldi/extractors/softmax_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/softmax_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.front.extractor import FrontExtractorOp from mo.ops.softmax import Softmax diff --git a/model-optimizer/mo/front/kaldi/extractors/specaugment_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/specaugment_component_ext.py index 9210f9a548d08a..fb80cbb4215923 100644 --- a/model-optimizer/mo/front/kaldi/extractors/specaugment_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/specaugment_component_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.identity import Identity from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/extractors/splice_component_ext.py b/model-optimizer/mo/front/kaldi/extractors/splice_component_ext.py index 11bed8e88198ca..7b4b5352d2c5b2 100644 --- a/model-optimizer/mo/front/kaldi/extractors/splice_component_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/splice_component_ext.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from extensions.ops.splice import Splice diff --git a/model-optimizer/mo/front/kaldi/extractors/tdnncomponent_ext.py b/model-optimizer/mo/front/kaldi/extractors/tdnncomponent_ext.py index 441eac0131252c..375464c3031976 100644 --- a/model-optimizer/mo/front/kaldi/extractors/tdnncomponent_ext.py +++ b/model-optimizer/mo/front/kaldi/extractors/tdnncomponent_ext.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/kaldi/loader/__init__.py b/model-optimizer/mo/front/kaldi/loader/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/kaldi/loader/__init__.py +++ b/model-optimizer/mo/front/kaldi/loader/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/kaldi/loader/loader.py b/model-optimizer/mo/front/kaldi/loader/loader.py index 0cbf193e87a03f..3d60677e412e02 100644 --- a/model-optimizer/mo/front/kaldi/loader/loader.py +++ b/model-optimizer/mo/front/kaldi/loader/loader.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from io import IOBase @@ -22,7 +9,8 @@ from extensions.ops.elementwise import Mul from extensions.ops.split import AttributedVariadicSplit -from mo.front.common.partial_infer.utils import float_array +from mo.front.common.partial_infer.utils import float_array, int64_array +from mo.front.extractor import add_outputs_identity from mo.front.kaldi.loader.utils import find_next_tag, read_placeholder, find_next_component, get_name_from_path, \ find_end_of_component, end_of_nnet_tag, read_binary_integer32_token, get_parameters, read_token_value, \ collect_until_token, collect_until_token_and_read, create_edge_attrs, get_args_for_specifier @@ -138,6 +126,7 @@ def load_kalid_nnet1_model(graph, file_descr, name): prev_layer_id = 'Parameter' graph.add_node(prev_layer_id, name=prev_layer_id, kind='op', op='Parameter', parameters=None) + used_layers = set() while True: component_type = find_next_component(file_descr) if component_type == end_of_nnet_tag.lower()[1:-1]: @@ -169,9 +158,19 @@ def load_kalid_nnet1_model(graph, file_descr, name): prev_node.add_output_port(0) Node(graph, layer_id).add_input_port(0) graph.create_edge(prev_node, Node(graph, layer_id), 0, 0, create_edge_attrs(prev_layer_id, layer_id, prev_layer_id)) + used_layers.add(prev_layer_id) prev_layer_id = layer_id log.debug('{} (type is {}) was loaded'.format(prev_layer_id, component_type)) + # Tensor names information corresponding to a node is stored on outgoing edges. + # As output nodes do not have outgoing edges, fake outputs are required. In the following code + # for each output Identity node is added, and tensor name for the output is kept + # on (output, fake output) edge. After Result nodes adding transformation fake outputs + # are deleted from graph. + output_layers = graph.nodes - used_layers + add_outputs_identity(graph, output_layers, lambda g, output, fake_output: g.create_edge( + Node(g, output), Node(g, fake_output), 0, 0, create_edge_attrs(output, fake_output, output))) + def load_kalid_nnet2_model(graph, file_descr, nnet_name): input_name = 'Input' @@ -181,6 +180,7 @@ def load_kalid_nnet2_model(graph, file_descr, nnet_name): all_components = load_components(file_descr, graph) + used_layers = set() for layer_id in all_components: prev_node = Node(graph, prev_layer_id) if prev_node.op == 'Parameter': @@ -190,9 +190,19 @@ def load_kalid_nnet2_model(graph, file_descr, nnet_name): prev_node.add_output_port(0) Node(graph, layer_id).add_input_port(0) graph.create_edge(prev_node, Node(graph, layer_id), 0, 0, create_edge_attrs(prev_layer_id, layer_id, prev_layer_id)) + used_layers.add(prev_layer_id) prev_layer_id = layer_id log.debug('{} and {} were connected'.format(prev_layer_id, layer_id)) + # Tensor names information corresponding to a node is stored on outgoing edges. + # As output nodes do not have outgoing edges, fake outputs are required. In the following code + # for each output Identity node is added, and tensor name for the output is kept + # on (output, fake output) edge. After Result nodes adding transformation fake outputs + # are deleted from graph. + output_layers = graph.nodes - used_layers + add_outputs_identity(graph, output_layers, lambda g, output, fake_output: g.create_edge( + Node(g, output), Node(g, fake_output), 0, 0, create_edge_attrs(output, fake_output, output))) + def load_kaldi_nnet3_model(graph, file_descr, nnet_name): file_descr.read(1) @@ -204,7 +214,9 @@ def load_kaldi_nnet3_model(graph, file_descr, nnet_name): for o_n_name, params in node.get_outputs(): o_n = Node(graph, o_n_name) if o_n['op'] == 'MemoryOffset': - o_n['parameters']['element_size'] = node['shape'][1] + # don't take batch from Parameter, it will be overwritten + # take only second dimension because we have only 2 dimensions + o_n['parameters']['element_size'] = int64_array([1, node.shape[1]]) load_components(file_descr, graph, component_layer_map) @@ -234,15 +246,18 @@ def load_components(file_descr, graph, component_layer_map=None): # it is separated in 2 parts to remove cycle from graph file_descr.seek(start_index) dim = 0 - try: - collect_until_token(file_descr, b'', size_search_zone=end_index - start_index) - cur_index = file_descr.tell() - if start_index < cur_index < end_index: - dim = read_binary_integer32_token(file_descr) - else: + dim_words = {b'', b''} + for dim_word in dim_words: + try: + collect_until_token(file_descr, dim_word, size_search_zone=end_index - start_index) + cur_index = file_descr.tell() + if start_index < cur_index < end_index: + dim = read_binary_integer32_token(file_descr) + break + else: + file_descr.seek(start_index) + except Error: file_descr.seek(start_index) - except Error: - file_descr.seek(start_index) if is_nnet3: if name in component_layer_map: @@ -255,7 +270,7 @@ def load_components(file_descr, graph, component_layer_map=None): for o_n_name, params in node.get_outputs(): o_n = Node(graph, o_n_name) if o_n['op'] == 'MemoryOffset' and dim != 0: - o_n['parameters']['element_size'] = dim + o_n['parameters']['element_size'] = int64_array([1, dim]) else: raise Error("Something wrong with layer {}".format(name)) else: @@ -388,7 +403,7 @@ def read_node(file_descr, graph, component_layer_map, layer_node_map): for o_n_name, params in node.get_outputs(): o_n = Node(graph, o_n_name) if o_n['op'] == 'MemoryOffset': - o_n['parameters']['element_size'] = dim + o_n['parameters']['element_size'] = int64_array([1, dim]) else: raise Error("Unsupported node specifier {}".format(tokens[0])) return True diff --git a/model-optimizer/mo/front/kaldi/loader/loader_test.py b/model-optimizer/mo/front/kaldi/loader/loader_test.py index ff49c9c4d346f5..43b20f2ea36238 100644 --- a/model-optimizer/mo/front/kaldi/loader/loader_test.py +++ b/model-optimizer/mo/front/kaldi/loader/loader_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import io import struct import unittest diff --git a/model-optimizer/mo/front/kaldi/loader/utils.py b/model-optimizer/mo/front/kaldi/loader/utils.py index ef686221a432f2..5c9c0087a885e9 100644 --- a/model-optimizer/mo/front/kaldi/loader/utils.py +++ b/model-optimizer/mo/front/kaldi/loader/utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import io import os diff --git a/model-optimizer/mo/front/kaldi/loader/utils_test.py b/model-optimizer/mo/front/kaldi/loader/utils_test.py index 9cc6d519a5aeb3..e35fcdbf8da012 100644 --- a/model-optimizer/mo/front/kaldi/loader/utils_test.py +++ b/model-optimizer/mo/front/kaldi/loader/utils_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import io import struct diff --git a/model-optimizer/mo/front/kaldi/register_custom_ops.py b/model-optimizer/mo/front/kaldi/register_custom_ops.py index 436044f8de62fe..33280836b46243 100644 --- a/model-optimizer/mo/front/kaldi/register_custom_ops.py +++ b/model-optimizer/mo/front/kaldi/register_custom_ops.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.replacement import FrontReplacementOp, FrontReplacementSubgraph, FrontReplacementPattern from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/kaldi/utils.py b/model-optimizer/mo/front/kaldi/utils.py index 63c4a5f60900a1..bd64473fd4caf7 100644 --- a/model-optimizer/mo/front/kaldi/utils.py +++ b/model-optimizer/mo/front/kaldi/utils.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import io import logging as log import os diff --git a/model-optimizer/mo/front/mxnet/__init__.py b/model-optimizer/mo/front/mxnet/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/mxnet/__init__.py +++ b/model-optimizer/mo/front/mxnet/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/mxnet/extractor.py b/model-optimizer/mo/front/mxnet/extractor.py index 4b8d5bc50cb2a4..6dce1172a53a8c 100644 --- a/model-optimizer/mo/front/mxnet/extractor.py +++ b/model-optimizer/mo/front/mxnet/extractor.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.mxnet.extractors.batchnorm import batch_norm_ext from mo.front.mxnet.extractors.concat import concat_ext diff --git a/model-optimizer/mo/front/mxnet/extractors/__init__.py b/model-optimizer/mo/front/mxnet/extractors/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/mxnet/extractors/__init__.py +++ b/model-optimizer/mo/front/mxnet/extractors/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/mxnet/extractors/add_n.py b/model-optimizer/mo/front/mxnet/extractors/add_n.py index b6f7fae15992c2..08e50c0da5369e 100644 --- a/model-optimizer/mo/front/mxnet/extractors/add_n.py +++ b/model-optimizer/mo/front/mxnet/extractors/add_n.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 def add_n_ext(attrs): return {} diff --git a/model-optimizer/mo/front/mxnet/extractors/batchnorm.py b/model-optimizer/mo/front/mxnet/extractors/batchnorm.py index 12516ca6e49b2e..2b6952e6db9c71 100644 --- a/model-optimizer/mo/front/mxnet/extractors/batchnorm.py +++ b/model-optimizer/mo/front/mxnet/extractors/batchnorm.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.extractors.utils import layout_attrs from mo.front.common.partial_infer.batch_norm import batch_norm_4_infer diff --git a/model-optimizer/mo/front/mxnet/extractors/concat.py b/model-optimizer/mo/front/mxnet/extractors/concat.py index 6bfb8b27903029..be5be7865fee07 100644 --- a/model-optimizer/mo/front/mxnet/extractors/concat.py +++ b/model-optimizer/mo/front/mxnet/extractors/concat.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.concat import concat_infer diff --git a/model-optimizer/mo/front/mxnet/extractors/l2_normalization.py b/model-optimizer/mo/front/mxnet/extractors/l2_normalization.py index 8fe6a3993129a9..56cde10d77413c 100644 --- a/model-optimizer/mo/front/mxnet/extractors/l2_normalization.py +++ b/model-optimizer/mo/front/mxnet/extractors/l2_normalization.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.elemental import copy_shape_infer diff --git a/model-optimizer/mo/front/mxnet/extractors/multibox_prior.py b/model-optimizer/mo/front/mxnet/extractors/multibox_prior.py index af96c0b89db6e9..c0d0a9c4791233 100644 --- a/model-optimizer/mo/front/mxnet/extractors/multibox_prior.py +++ b/model-optimizer/mo/front/mxnet/extractors/multibox_prior.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.multi_box_prior import multi_box_prior_infer_mxnet diff --git a/model-optimizer/mo/front/mxnet/extractors/multibox_prior_test.py b/model-optimizer/mo/front/mxnet/extractors/multibox_prior_test.py index 0fb560dc0f2922..c6b1fcddb994b5 100644 --- a/model-optimizer/mo/front/mxnet/extractors/multibox_prior_test.py +++ b/model-optimizer/mo/front/mxnet/extractors/multibox_prior_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/mxnet/extractors/relu.py b/model-optimizer/mo/front/mxnet/extractors/relu.py index 724fdeb8a7b22e..629a13236d291f 100644 --- a/model-optimizer/mo/front/mxnet/extractors/relu.py +++ b/model-optimizer/mo/front/mxnet/extractors/relu.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.activation_ops import ReLU from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/mxnet/extractors/relu_test.py b/model-optimizer/mo/front/mxnet/extractors/relu_test.py index 752acd0da19c43..df903c894e4a51 100644 --- a/model-optimizer/mo/front/mxnet/extractors/relu_test.py +++ b/model-optimizer/mo/front/mxnet/extractors/relu_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/mxnet/extractors/scaleshift.py b/model-optimizer/mo/front/mxnet/extractors/scaleshift.py index 773a43ef26ad2a..3def22c4ba6ab1 100644 --- a/model-optimizer/mo/front/mxnet/extractors/scaleshift.py +++ b/model-optimizer/mo/front/mxnet/extractors/scaleshift.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.extractors.utils import layout_attrs from mo.front.common.partial_infer.batch_norm import batch_norm_4_infer diff --git a/model-optimizer/mo/front/mxnet/extractors/slice_axis.py b/model-optimizer/mo/front/mxnet/extractors/slice_axis.py index 3cc6f6b86f6124..5c79861c02bf03 100644 --- a/model-optimizer/mo/front/mxnet/extractors/slice_axis.py +++ b/model-optimizer/mo/front/mxnet/extractors/slice_axis.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.caffe.extractors.utils import get_canonical_axis_index import numpy as np diff --git a/model-optimizer/mo/front/mxnet/extractors/slice_axis_test.py b/model-optimizer/mo/front/mxnet/extractors/slice_axis_test.py index 73b66e9b17bb2e..78596bc7066a41 100644 --- a/model-optimizer/mo/front/mxnet/extractors/slice_axis_test.py +++ b/model-optimizer/mo/front/mxnet/extractors/slice_axis_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/front/mxnet/extractors/utils.py b/model-optimizer/mo/front/mxnet/extractors/utils.py index d1a5f7fddba0e2..b33dbdd68679fd 100644 --- a/model-optimizer/mo/front/mxnet/extractors/utils.py +++ b/model-optimizer/mo/front/mxnet/extractors/utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import mxnet as mx import numpy as np diff --git a/model-optimizer/mo/front/mxnet/extractors/utils_test.py b/model-optimizer/mo/front/mxnet/extractors/utils_test.py index 9ae3a559b3a1ae..918d833995a8d5 100644 --- a/model-optimizer/mo/front/mxnet/extractors/utils_test.py +++ b/model-optimizer/mo/front/mxnet/extractors/utils_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/mo/front/mxnet/loader.py b/model-optimizer/mo/front/mxnet/loader.py index e47d97440b6e92..76e01936d31020 100644 --- a/model-optimizer/mo/front/mxnet/loader.py +++ b/model-optimizer/mo/front/mxnet/loader.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import json import logging as log diff --git a/model-optimizer/mo/front/mxnet/loader_test.py b/model-optimizer/mo/front/mxnet/loader_test.py index b9b73e1817918f..dd59708c0ae87e 100644 --- a/model-optimizer/mo/front/mxnet/loader_test.py +++ b/model-optimizer/mo/front/mxnet/loader_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/mo/front/mxnet/nd_to_params.py b/model-optimizer/mo/front/mxnet/nd_to_params.py index a76809ca0cfe7b..127a5b4d03d945 100644 --- a/model-optimizer/mo/front/mxnet/nd_to_params.py +++ b/model-optimizer/mo/front/mxnet/nd_to_params.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os diff --git a/model-optimizer/mo/front/mxnet/register_custom_ops.py b/model-optimizer/mo/front/mxnet/register_custom_ops.py index 766dbd7e4cfec5..9032d58b508944 100644 --- a/model-optimizer/mo/front/mxnet/register_custom_ops.py +++ b/model-optimizer/mo/front/mxnet/register_custom_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementOp, FrontReplacementSubgraph, FrontReplacementPattern from mo.front.extractor import FrontExtractorOp, MXNetCustomFrontExtractorOp diff --git a/model-optimizer/mo/front/onnx/__init__.py b/model-optimizer/mo/front/onnx/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/onnx/__init__.py +++ b/model-optimizer/mo/front/onnx/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/onnx/extractor.py b/model-optimizer/mo/front/onnx/extractor.py index 48abd3e0e12958..78bcf889c305ae 100644 --- a/model-optimizer/mo/front/onnx/extractor.py +++ b/model-optimizer/mo/front/onnx/extractor.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node diff --git a/model-optimizer/mo/front/onnx/extractors/__init__.py b/model-optimizer/mo/front/onnx/extractors/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/onnx/extractors/__init__.py +++ b/model-optimizer/mo/front/onnx/extractors/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/onnx/extractors/utils.py b/model-optimizer/mo/front/onnx/extractors/utils.py index 662c3d0555f025..ceda4477cdef6d 100644 --- a/model-optimizer/mo/front/onnx/extractors/utils.py +++ b/model-optimizer/mo/front/onnx/extractors/utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/front/onnx/loader.py b/model-optimizer/mo/front/onnx/loader.py index 1550b51d17d0b2..3f8c2fd831fceb 100644 --- a/model-optimizer/mo/front/onnx/loader.py +++ b/model-optimizer/mo/front/onnx/loader.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from __future__ import absolute_import from __future__ import division from __future__ import print_function diff --git a/model-optimizer/mo/front/onnx/register_custom_ops.py b/model-optimizer/mo/front/onnx/register_custom_ops.py index f9b158e188d5b7..16c3b577d22832 100644 --- a/model-optimizer/mo/front/onnx/register_custom_ops.py +++ b/model-optimizer/mo/front/onnx/register_custom_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementOp, FrontReplacementPattern, FrontReplacementSubgraph from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/subgraph_matcher.py b/model-optimizer/mo/front/subgraph_matcher.py index f3b4369a5e996d..da64ce1218d4d2 100644 --- a/model-optimizer/mo/front/subgraph_matcher.py +++ b/model-optimizer/mo/front/subgraph_matcher.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import re diff --git a/model-optimizer/mo/front/tf/__init__.py b/model-optimizer/mo/front/tf/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/tf/__init__.py +++ b/model-optimizer/mo/front/tf/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/tf/common.py b/model-optimizer/mo/front/tf/common.py index 938d56ba0c6a64..6480f8f718e65b 100644 --- a/model-optimizer/mo/front/tf/common.py +++ b/model-optimizer/mo/front/tf/common.py @@ -1,22 +1,11 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np from tensorflow.core.framework import types_pb2 as tf_types # pylint: disable=no-name-in-module,import-error +# Suppress false positive pylint warning about function with too many arguments +# pylint: disable=E1121 # mapping between TF data type and numpy data type and function to extract data from TF tensor _tf_np_mapping = [('DT_BOOL', np.bool, lambda pb: pb.bool_val, lambda x: bool_cast(x)), ('DT_INT8', np.int8, lambda pb: pb.int_val, lambda x: np.int8(x)), @@ -27,16 +16,16 @@ ('DT_UINT16', np.uint16, lambda pb: pb.int_val, lambda x: np.uint16(x)), ('DT_UINT32', np.uint32, lambda pb: pb.uint32_val, lambda x: np.uint32(x)), ('DT_UINT64', np.uint64, lambda pb: pb.uint64_val, lambda x: np.uint64(x)), - ('DT_HALF', np.float16, lambda pb: pb.half_val, lambda x: np.float16(x)), + ('DT_HALF', np.float16, lambda pb: np.uint16(pb.half_val).view(np.float16), lambda x: np.float16(x)), ('DT_FLOAT', np.float32, lambda pb: pb.float_val, lambda x: np.float32(x)), ('DT_DOUBLE', np.double, lambda pb: pb.double_val, lambda x: np.double(x)), ('DT_STRING', np.str, lambda pb: pb.string_val, lambda x: np.str(x)), ] -tf_data_type_decode = {getattr(tf_types, tf_dt): (np_type, func) for tf_dt, np_type, func, cast in _tf_np_mapping if +tf_data_type_decode = {getattr(tf_types, tf_dt): (np_type, func) for tf_dt, np_type, func, _ in _tf_np_mapping if hasattr(tf_types, tf_dt)} -tf_data_type_cast = {np_type: cast for tf_dt, np_type, func, cast in _tf_np_mapping if hasattr(tf_types, tf_dt)} +tf_data_type_cast = {np_type: cast for tf_dt, np_type, _, cast in _tf_np_mapping if hasattr(tf_types, tf_dt)} def bool_cast(x): diff --git a/model-optimizer/mo/front/tf/custom_subgraph_call.py b/model-optimizer/mo/front/tf/custom_subgraph_call.py index e58766ab5b5dc0..53ec45a7b0cd04 100644 --- a/model-optimizer/mo/front/tf/custom_subgraph_call.py +++ b/model-optimizer/mo/front/tf/custom_subgraph_call.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from re import findall diff --git a/model-optimizer/mo/front/tf/extractor.py b/model-optimizer/mo/front/tf/extractor.py index b5f6526e425a6a..402dcc87025879 100644 --- a/model-optimizer/mo/front/tf/extractor.py +++ b/model-optimizer/mo/front/tf/extractor.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.tf.extractors.concat import tf_concat_ext from mo.front.tf.extractors.fused_bn import tf_fused_bn_extractor @@ -33,26 +20,32 @@ def get_tf_edges(node: Node): """ edge_list = [] for in_port, src_node_id in enumerate(node.pb.input): - src_node, src_port = get_tf_node_port(src_node_id) - tensor_name = src_node + ":" + str(src_port) - cf_flag = False - if src_node[0] == '^': - src_node = src_node[1:] - cf_flag = True - edge = (src_node, node.id, { - 'in': in_port, - 'out': src_port, - # debug anchor for a framework name, out port and tensor name - 'fw_tensor_debug_info': [(src_node_id, src_port, tensor_name)], - 'in_attrs': ['in', 'control_flow_edge', 'permutation'], - 'out_attrs': ['out', 'permutation'], - 'data_attrs': ['fw_tensor_debug_info'], - 'control_flow_edge': cf_flag - }) - edge_list.append(edge) + edge_list.append(create_tf_edge(src_node_id, node.id, in_port)) return edge_list +def create_tf_edge(src_node_id: str, dst_node_id: str, in_port: int): + """ + Creates an edge for given nodes and input port. + """ + src_node, src_port = get_tf_node_port(src_node_id) + tensor_name = src_node + ":" + str(src_port) + cf_flag = False + if src_node[0] == '^': + src_node = src_node[1:] + cf_flag = True + return (src_node, dst_node_id, { + 'in': in_port, + 'out': src_port, + # debug anchor for a framework name, out port and tensor name + 'fw_tensor_debug_info': [(src_node_id, src_port, tensor_name)], + 'in_attrs': ['in', 'control_flow_edge', 'permutation'], + 'out_attrs': ['out', 'permutation'], + 'data_attrs': ['fw_tensor_debug_info'], + 'control_flow_edge': cf_flag + }) + + def node_pb_arg(pb_extractor: callable): return lambda node: pb_extractor(node.pb) diff --git a/model-optimizer/mo/front/tf/extractors/__init__.py b/model-optimizer/mo/front/tf/extractors/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/tf/extractors/__init__.py +++ b/model-optimizer/mo/front/tf/extractors/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/tf/extractors/concat.py b/model-optimizer/mo/front/tf/extractors/concat.py index 16d50d21bc10f9..c90980b3dd1253 100644 --- a/model-optimizer/mo/front/tf/extractors/concat.py +++ b/model-optimizer/mo/front/tf/extractors/concat.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.concat import concat_infer diff --git a/model-optimizer/mo/front/tf/extractors/concat_test.py b/model-optimizer/mo/front/tf/extractors/concat_test.py index 6ae0b9743378a9..576de3f2dfa2c0 100644 --- a/model-optimizer/mo/front/tf/extractors/concat_test.py +++ b/model-optimizer/mo/front/tf/extractors/concat_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.tf.extractors.concat import tf_concat_ext from mo.utils.unittest.extractors import PB, BaseExtractorsTestingClass diff --git a/model-optimizer/mo/front/tf/extractors/fused_bn.py b/model-optimizer/mo/front/tf/extractors/fused_bn.py index f2205eb0a12c61..0d290ba2873f3e 100644 --- a/model-optimizer/mo/front/tf/extractors/fused_bn.py +++ b/model-optimizer/mo/front/tf/extractors/fused_bn.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/mo/front/tf/extractors/identity.py b/model-optimizer/mo/front/tf/extractors/identity.py index c8c68d06a153aa..739ee7452a489c 100644 --- a/model-optimizer/mo/front/tf/extractors/identity.py +++ b/model-optimizer/mo/front/tf/extractors/identity.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer diff --git a/model-optimizer/mo/front/tf/extractors/identity_test.py b/model-optimizer/mo/front/tf/extractors/identity_test.py index ddab33857ad7e6..022c49f2596013 100644 --- a/model-optimizer/mo/front/tf/extractors/identity_test.py +++ b/model-optimizer/mo/front/tf/extractors/identity_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.tf.extractors.identity import tf_identity_ext from mo.utils.unittest.extractors import BaseExtractorsTestingClass diff --git a/model-optimizer/mo/front/tf/extractors/native_tf.py b/model-optimizer/mo/front/tf/extractors/native_tf.py index e21d418f9dd9f5..4bda3999826641 100644 --- a/model-optimizer/mo/front/tf/extractors/native_tf.py +++ b/model-optimizer/mo/front/tf/extractors/native_tf.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.tf.partial_infer.tf import tf_native_tf_node_infer diff --git a/model-optimizer/mo/front/tf/extractors/pack.py b/model-optimizer/mo/front/tf/extractors/pack.py index 8480bd8464d060..6b7fed47bb9fb4 100644 --- a/model-optimizer/mo/front/tf/extractors/pack.py +++ b/model-optimizer/mo/front/tf/extractors/pack.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.concat import tf_pack_infer diff --git a/model-optimizer/mo/front/tf/extractors/random_uniform.py b/model-optimizer/mo/front/tf/extractors/random_uniform.py index 586ee3bd013c3b..db898c8c396b34 100644 --- a/model-optimizer/mo/front/tf/extractors/random_uniform.py +++ b/model-optimizer/mo/front/tf/extractors/random_uniform.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.random_uniform import tf_random_uniform_infer diff --git a/model-optimizer/mo/front/tf/extractors/strided_slice.py b/model-optimizer/mo/front/tf/extractors/strided_slice.py index 6f22f5089b721e..41ba6ac0cc46b8 100644 --- a/model-optimizer/mo/front/tf/extractors/strided_slice.py +++ b/model-optimizer/mo/front/tf/extractors/strided_slice.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/tf/extractors/utils.py b/model-optimizer/mo/front/tf/extractors/utils.py index 1b74a71ccb4c62..753cd0271afc77 100644 --- a/model-optimizer/mo/front/tf/extractors/utils.py +++ b/model-optimizer/mo/front/tf/extractors/utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/front/tf/extractors/utils_test.py b/model-optimizer/mo/front/tf/extractors/utils_test.py index 15306206866412..7cbd90a05717f4 100644 --- a/model-optimizer/mo/front/tf/extractors/utils_test.py +++ b/model-optimizer/mo/front/tf/extractors/utils_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import unittest diff --git a/model-optimizer/mo/front/tf/graph_utils.py b/model-optimizer/mo/front/tf/graph_utils.py index 885d82d4c2fa62..3a38938ee6eafb 100644 --- a/model-optimizer/mo/front/tf/graph_utils.py +++ b/model-optimizer/mo/front/tf/graph_utils.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import collections import logging as log diff --git a/model-optimizer/mo/front/tf/loader.py b/model-optimizer/mo/front/tf/loader.py index 7e3813a8059409..0e0b102b8ee3fb 100644 --- a/model-optimizer/mo/front/tf/loader.py +++ b/model-optimizer/mo/front/tf/loader.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import os diff --git a/model-optimizer/mo/front/tf/loader_test.py b/model-optimizer/mo/front/tf/loader_test.py index 1b926166f36ce7..01b9e8427a8064 100644 --- a/model-optimizer/mo/front/tf/loader_test.py +++ b/model-optimizer/mo/front/tf/loader_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest.mock from io import StringIO diff --git a/model-optimizer/mo/front/tf/partial_infer/__init__.py b/model-optimizer/mo/front/tf/partial_infer/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/front/tf/partial_infer/__init__.py +++ b/model-optimizer/mo/front/tf/partial_infer/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/front/tf/partial_infer/tf.py b/model-optimizer/mo/front/tf/partial_infer/tf.py index 6bf5eade059a89..cc419daf7f98dc 100644 --- a/model-optimizer/mo/front/tf/partial_infer/tf.py +++ b/model-optimizer/mo/front/tf/partial_infer/tf.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from re import match diff --git a/model-optimizer/mo/front/tf/register_custom_ops.py b/model-optimizer/mo/front/tf/register_custom_ops.py index f9b158e188d5b7..16c3b577d22832 100644 --- a/model-optimizer/mo/front/tf/register_custom_ops.py +++ b/model-optimizer/mo/front/tf/register_custom_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.replacement import FrontReplacementOp, FrontReplacementPattern, FrontReplacementSubgraph from mo.front.extractor import FrontExtractorOp diff --git a/model-optimizer/mo/front/tf/replacement.py b/model-optimizer/mo/front/tf/replacement.py index 3fb1638661b638..20b595523ed965 100644 --- a/model-optimizer/mo/front/tf/replacement.py +++ b/model-optimizer/mo/front/tf/replacement.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from mo.front.common.custom_replacement_registry import CustomReplacementRegistry diff --git a/model-optimizer/mo/graph/__init__.py b/model-optimizer/mo/graph/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/graph/__init__.py +++ b/model-optimizer/mo/graph/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/graph/connection.py b/model-optimizer/mo/graph/connection.py index eccba8b57877ac..c5d8a82aaa7cc4 100644 --- a/model-optimizer/mo/graph/connection.py +++ b/model-optimizer/mo/graph/connection.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from collections import namedtuple from copy import deepcopy diff --git a/model-optimizer/mo/graph/connection_test.py b/model-optimizer/mo/graph/connection_test.py index 44ba8b1ff603a7..067012252aa2f3 100644 --- a/model-optimizer/mo/graph/connection_test.py +++ b/model-optimizer/mo/graph/connection_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/graph/graph.py b/model-optimizer/mo/graph/graph.py index 8bc1fd8f689545..5a57cd758a2cee 100644 --- a/model-optimizer/mo/graph/graph.py +++ b/model-optimizer/mo/graph/graph.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import collections import logging as log from copy import deepcopy @@ -1065,9 +1053,13 @@ def add_opoutput(graph: Graph, node_name: str, port: int, cut: bool = True): if cut and len(node.out_edges()) != 0: opoutput_node = Result(graph).create_node_on_port(node, port, {'name': node_name + '/sink_port_' + str(port)}) else: + tensor_names = None + if node.has_valid('op') and port in node.out_ports(): + tensor_names = node.out_port(port).get_tensor_names() opoutput_node = Result(graph).create_node([(node, port)], {'name': node_name + '/sink_port_' + str(port)}) opoutput_node.in_edge()['data_attrs'] = ['fw_tensor_debug_info'] - opoutput_node.in_edge()['fw_tensor_debug_info'] = [(node_name, port)] + opoutput_node.in_edge()['fw_tensor_debug_info'] = [(node_name, port, tensor_names)] + log.debug('Sink: {} for node {}'.format(opoutput_node.id, node_name)) log.debug(str(graph.node[opoutput_node.id])) log.debug("Add edge from {} to {}".format(node_name, opoutput_node.id)) @@ -1105,6 +1097,45 @@ def rename_nodes(nodes: List[tuple]): for node, name in nodes: rename_node(node, name) + +def get_edge_attribute_between_nodes(node1: Node, node2: Node, attr_name: str): + """ + Gets edge attribute value between two nodes. + This method is introduced for implementation of manual replacing of nodes attributes + with tensor debug information. It is needed after removing of fake outputs. + Also there are cases when graph transformations lead to mismatch of tensor name + and input node, so manual attribute change is needed. + This method should only be used during the front phase. + And it is applicable only for cases when there is just one edge between two given nodes. + """ + for edge_idx in node1.out_edges(): + edge = node1.out_edge(edge_idx) + out_port = edge['out'] + out_node = node1.out_node(out_port) + if out_node.id == node2.id: + if attr_name in edge: + return edge[attr_name] + return None + + +def set_edge_attribute_between_nodes(node1: Node, node2: Node, attr_name: str, new_value): + """ + Sets edge attribute value between two nodes. + This method is introduced for implementation of manual replacing of nodes attributes + with tensor debug information. It is needed after removing of fake outputs. + Also there are cases when graph transformations lead to mismatch of tensor name + and input node, so manual attribute change is needed. + This method should only be used during the front phase. + And it is applicable only for cases when there is just one edge between two given nodes. + """ + for edge_idx in node1.out_edges(): + edge = node1.out_edge(edge_idx) + out_port = edge['out'] + out_node = node1.out_node(out_port) + if out_node.id == node2.id: + if attr_name in edge: + edge[attr_name] = new_value + # All functions below are deprecated and will be removed in next release # Please, use methods from Graph/Node classes instead diff --git a/model-optimizer/mo/graph/graph_test.py b/model-optimizer/mo/graph/graph_test.py index 46e233deca839e..8d82c0a06f1924 100644 --- a/model-optimizer/mo/graph/graph_test.py +++ b/model-optimizer/mo/graph/graph_test.py @@ -1,25 +1,12 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import numpy as np from generator import generator, generate -from mo.graph.graph import Node, Graph, add_opoutput, dict_includes_compare_attrs +from mo.graph.graph import Node, Graph, add_opoutput, dict_includes_compare_attrs, get_edge_attribute_between_nodes, set_edge_attribute_between_nodes from mo.ops.const import Const from mo.utils.error import Error from mo.utils.ir_engine.compare_graphs import compare_graphs @@ -1628,3 +1615,57 @@ def test_regular_lists(self): def test_regular_string(self): self.assertTrue(dict_includes_compare_attrs("abc", "abc")) self.assertFalse(dict_includes_compare_attrs("abc", "abd")) + + +class TestGetSetAttributeBetweenNodes(unittest.TestCase): + nodes = { + 'A': {'id': 0, 'kind': 'op'}, + 'B': {'id': 1, 'kind': 'op'}, + 'C': {'id': 2, 'kind': 'op'}, + 'D': {'id': 3, 'kind': 'op'}, + 'E': {'id': 4, 'kind': 'op'}, + 'F': {'id': 5, 'kind': 'op'}, + } + + def build_test_graph(self): + graph = build_graph(self.nodes, [ + ('A', 'D', {'in': 0, 'out': 0, 'Attr': "A-D"}), + ('A', 'E', {'in': 0, 'out': 1, 'Attr': "A-E"}), + ('A', 'F', {'in': 0, 'out': 2, 'Attr': "A-F"}), + ('B', 'D', {'in': 1, 'out': 0, 'Attr': "B-D"}), + ('B', 'F', {'in': 2, 'out': 1, 'Attr': "B-F"}), + ]) + return graph + + def test_get_attribute_between_nodes(self): + graph = self.build_test_graph() + a_node = Node(graph, 'A') + b_node = Node(graph, 'B') + d_node = Node(graph, 'D') + e_node = Node(graph, 'E') + f_node = Node(graph, 'F') + self.assertTrue(get_edge_attribute_between_nodes(a_node, d_node, 'Attr') == "A-D") + self.assertTrue(get_edge_attribute_between_nodes(a_node, e_node, 'Attr') == "A-E") + self.assertTrue(get_edge_attribute_between_nodes(a_node, f_node, 'Attr') == "A-F") + self.assertTrue(get_edge_attribute_between_nodes(b_node, d_node, 'Attr') == "B-D") + self.assertTrue(get_edge_attribute_between_nodes(b_node, f_node, 'Attr') == "B-F") + + def test_set_attribute_between_nodes(self): + graph = self.build_test_graph() + a_node = Node(graph, 'A') + b_node = Node(graph, 'B') + d_node = Node(graph, 'D') + e_node = Node(graph, 'E') + f_node = Node(graph, 'F') + + set_edge_attribute_between_nodes(a_node, d_node, 'Attr', 'new_value_1') + set_edge_attribute_between_nodes(a_node, e_node, 'Attr', 'new_value_2') + set_edge_attribute_between_nodes(a_node, f_node, 'Attr', 'new_value_3') + set_edge_attribute_between_nodes(b_node, d_node, 'Attr', 'new_value_4') + set_edge_attribute_between_nodes(b_node, f_node, 'Attr', 'new_value_5') + + self.assertTrue(get_edge_attribute_between_nodes(a_node, d_node, 'Attr') == "new_value_1") + self.assertTrue(get_edge_attribute_between_nodes(a_node, e_node, 'Attr') == "new_value_2") + self.assertTrue(get_edge_attribute_between_nodes(a_node, f_node, 'Attr') == "new_value_3") + self.assertTrue(get_edge_attribute_between_nodes(b_node, d_node, 'Attr') == "new_value_4") + self.assertTrue(get_edge_attribute_between_nodes(b_node, f_node, 'Attr') == "new_value_5") diff --git a/model-optimizer/mo/graph/perm_inputs.py b/model-optimizer/mo/graph/perm_inputs.py index 0d25644b660a58..d3f71700052c81 100644 --- a/model-optimizer/mo/graph/perm_inputs.py +++ b/model-optimizer/mo/graph/perm_inputs.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import networkx as nx from extensions.ops.gather import Gather diff --git a/model-optimizer/mo/graph/port.py b/model-optimizer/mo/graph/port.py index 163d0e5d5a262c..51f5cbe0bda0ad 100644 --- a/model-optimizer/mo/graph/port.py +++ b/model-optimizer/mo/graph/port.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log from copy import deepcopy @@ -100,10 +88,8 @@ def _get_shape(self): if self.node.graph.stage == 'front': return None else: - if self.type == 'in': - return self.node.in_node(self.idx, control_flow=self.control_flow).shape - else: - return self.node.out_node(self.idx, control_flow=self.control_flow).shape + node_caller = self.node.in_node if self.type == 'in' else self.node.out_node + return node_caller(self.idx, control_flow=self.control_flow).shape def _set_shape(self, shape): if self.node.graph.stage == 'front': @@ -114,7 +100,8 @@ def _set_shape(self, shape): self.node.in_node(self.idx, control_flow=self.control_flow).shape = int64_array(shape) else: data_node = self.node.out_node(self.idx, control_flow=self.control_flow) - assert data_node.value is None or np.array_equal(data_node.shape, int64_array(shape)) + assert data_node.value is None or \ + np.array_equal(data_node.soft_get('force_shape', data_node.shape), int64_array(shape)) self.node.out_node(self.idx, control_flow=self.control_flow).shape = int64_array(shape) def _get_value(self): @@ -135,24 +122,21 @@ def _set_value(self, value): if self.node.graph.stage == 'front': raise Error("set_value is not applicable for graph front phase") else: - if self.type == 'in': - data_node = self.node.in_node(self.idx, control_flow=self.control_flow) - const_node = data_node.in_node(control_flow=self.control_flow) + data_node_caller = self.node.in_node if self.type == 'in' else self.node.out_node + data_node = data_node_caller(self.idx, control_flow=self.control_flow) + const_node = data_node.in_node(control_flow=self.control_flow) if self.type == 'in' else self.node - # Set value to data node - data_node.value = value - data_node.shape = int64_array(value.shape) + force_shape = data_node.soft_get('force_shape', const_node.soft_get('force_shape', None)) + shape = int64_array(value.shape if force_shape is None else force_shape) - # Set value to constant producer - if const_node.soft_get('type') == 'Const': - const_node.value = value - const_node.shape = int64_array(value.shape) - else: - self.node.out_node(self.idx, control_flow=self.control_flow).value = value - self.node.out_node(self.idx, control_flow=self.control_flow).shape = int64_array(value.shape) - if self.node.soft_get('type') == 'Const': - self.node.value = value - self.node.shape = int64_array(value.shape) + # Set value to data node + data_node.value = value + data_node.shape = shape + + # Set value to constant producer + if const_node.soft_get('type') == 'Const': + const_node.value = value + const_node.shape = shape def _get_attr(self, item: str): if self.node.graph.stage == 'front': @@ -320,7 +304,12 @@ def disconnect(self): self.node.graph.remove_edge(self.node.id, port.node.id) else: for port in consumer_ports: - self.node.graph.remove_edge(port.node.in_node(port.idx).id, port.node.id) + src_node = port.node.in_node(port.idx).id + dst_node = port.node.id + for key, val in self.node.graph.get_edge_data(src_node, dst_node).items(): + if val['in'] == port.idx: + self.node.graph.remove_edge(src_node, dst_node, key=key) + break else: source_port = self.get_source() if source_port is None: diff --git a/model-optimizer/mo/graph/port_test.py b/model-optimizer/mo/graph/port_test.py index a8ef569bd2f5d4..2064eb77248ce6 100644 --- a/model-optimizer/mo/graph/port_test.py +++ b/model-optimizer/mo/graph/port_test.py @@ -1,23 +1,10 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from mo.graph.graph import Node -from mo.utils.unittest.graph import build_graph, regular_op +from mo.utils.unittest.graph import build_graph, regular_op, valued_const_with_data, result, connect nodes = { **regular_op('input', {'type': 'Parameter'}), @@ -127,3 +114,41 @@ def test_reconnect_middle_case2(self): self.assertTrue(input_node_out_port.get_tensor_names() == []) self.assertTrue(op3_node.out_port(0).get_tensor_names() == ['Op3', 'input', 'Op1\\,Op2']) + + +class TestPortMethods(unittest.TestCase): + + def test_middle_disconnect_several_edges_between_two_nodes(self): + graph = build_graph(nodes, [('input', 'input_data'), ('input_data', 'Op1'), + ('Op1', 'Op1_data'), ('Op1_data', 'Op2', {'in': 0}), ('Op1_data', 'Op2', {'in': 1}), + ('Op1_data', 'Op2', {'in': 2})], + nodes_with_edges_only=True) + op1_node = Node(graph, 'Op1') + op1_node.out_port(0).disconnect() + self.assertTrue(op1_node.out_port(0).disconnected()) + + +class TestForceShape(unittest.TestCase): + def test_set_value_and_shape_with_force_shape_attribute_in_op(self): + import numpy as np + graph = build_graph({**valued_const_with_data('const', np.array([1, 2, 3])), **result()}, + [*connect('const', 'output')]) + + node = Node(graph, 'const') + node['force_shape'] = np.array([2, 5, 7], dtype=np.int64) + node.out_port(0).data.set_value(np.zeros(35)) + self.assertTrue(np.array_equal(node.out_port(0).data.get_shape(), np.array([2, 5, 7], dtype=np.int64)), + "node.out_port(0).data.get_shape()={} != [2, 5, 7]".format(node.out_port(0).data.get_shape())) + + def test_set_value_and_shape_with_force_shape_attribute_in_data(self): + import numpy as np + graph = build_graph({**valued_const_with_data('const', np.array([1, 2, 3])), **result()}, + [*connect('const', 'output')]) + + node = Node(graph, 'const') + Node(graph, 'const_d')['force_shape'] = np.array([2, 5, 7], dtype=np.int64) + node.out_port(0).data.set_value(np.zeros(30)) + self.assertTrue(np.array_equal(node.out_port(0).data.get_shape(), np.array([2, 5, 7], dtype=np.int64)), + "node.out_port(0).data.get_shape()={} != [2, 5, 7]".format( + node.out_port(0).data.get_shape())) + diff --git a/model-optimizer/mo/main.py b/model-optimizer/mo/main.py index 3e24231bc91928..bab2aa44175521 100644 --- a/model-optimizer/mo/main.py +++ b/model-optimizer/mo/main.py @@ -1,24 +1,13 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import argparse import datetime import logging as log import os import sys +import platform +import subprocess import traceback from collections import OrderedDict @@ -34,14 +23,15 @@ from mo.utils.cli_parser import get_placeholder_shapes, get_tuple_values, get_model_name, \ get_common_cli_options, get_caffe_cli_options, get_tf_cli_options, get_mxnet_cli_options, get_kaldi_cli_options, \ get_onnx_cli_options, get_mean_scale_dictionary, parse_tuple_pairs, get_freeze_placeholder_values, get_meta_info -from mo.utils.error import Error, FrameworkError +from mo.utils.error import Error, FrameworkError, classify_error_type from mo.utils.get_ov_update_message import get_ov_update_message from mo.utils.guess_framework import deduce_framework_by_namespace from mo.utils.logger import init_logger from mo.utils.model_analysis import AnalysisResults from mo.utils.utils import refer_to_faq_msg -from mo.utils.version import get_version +from mo.utils.version import get_version, get_simplified_mo_version, get_simplified_ie_version from mo.utils.versions_checker import check_requirements +from mo.utils.find_ie_version import find_ie_version from ngraph import FrontEndManager @@ -85,14 +75,13 @@ def print_argv(argv: argparse.Namespace, is_caffe: bool, is_tf: bool, is_mxnet: if isinstance(desc, list): lines.append('\t{}: \t{}'.format(desc[0], desc[1](getattr(argv, op, 'NONE')))) else: - if op is 'k': + if op == 'k': default_path = os.path.join(os.path.dirname(sys.argv[0]), 'extensions/front/caffe/CustomLayersMapping.xml') if getattr(argv, op, 'NONE') == default_path: lines.append('\t{}: \t{}'.format(desc, 'Default')) continue lines.append('\t{}: \t{}'.format(desc, getattr(argv, op, 'NONE'))) - lines.append('Model Optimizer version: \t{}'.format(get_version())) print('\n'.join(lines), flush=True) @@ -158,6 +147,18 @@ def prepare_ir(argv: argparse.Namespace): if not argv.silent: print_argv(argv, is_caffe, is_tf, is_mxnet, is_kaldi, is_onnx, argv.model_name) + # This try-except is additional reinsurance that the IE + # dependency search does not break the MO pipeline + try: + if not find_ie_version(silent=argv.silent) and not argv.silent: + print("[ WARNING ] Could not find the Inference Engine Python API. At this moment, the Inference Engine dependency is not required, but will be required in future releases.") + print("[ WARNING ] Consider building the Inference Engine Python API from sources or try to install OpenVINO (TM) Toolkit using \"install_prerequisites.{}\"".format( + "bat" if sys.platform == "windows" else "sh")) + # If the IE was not found, it will not print the MO version, so we have to print it manually + print("{}: \t{}".format("Model Optimizer version", get_version())) + except Exception as e: + pass + ret_code = check_requirements(framework=argv.framework) if ret_code: raise Error('check_requirements exit with return code {}'.format(ret_code)) @@ -270,10 +271,38 @@ def emit_ir(graph, argv: argparse.Namespace): if not (argv.framework == 'tf' and argv.tensorflow_custom_operations_config_update): output_dir = argv.output_dir if argv.output_dir != '.' else os.getcwd() +# TODO: mnosov: frontend changes orig_model_name = os.path.join(output_dir, argv.model_name) if 'network' in graph.graph: graph.graph['network'].serialize(orig_model_name + ".xml", orig_model_name + ".bin") print('[ SUCCESS ] Converted with ONNX Importer') +#======= +# orig_model_name = os.path.normpath(os.path.join(output_dir, argv.model_name)) +# +# return_code = "not executed" +# # This try-except is additional reinsurance that the IE +# # dependency search does not break the MO pipeline +# try: +# if find_ie_version(silent=True): +# path_to_offline_transformations = os.path.join(os.path.realpath(os.path.dirname(__file__)), 'back', +# 'offline_transformations.py') +# status = subprocess.run([sys.executable, path_to_offline_transformations, orig_model_name], env=os.environ, timeout=10) +# return_code = status.returncode +# if return_code != 0 and not argv.silent: +# print("[ WARNING ] offline_transformations return code {}".format(return_code)) +# except Exception as e: +# pass + +# message = str(dict({ +# "platform": platform.system(), +# "mo_version": get_simplified_mo_version(), +# "ie_version": get_simplified_ie_version(env=os.environ), +# "python_version": sys.version, +# "return_code": return_code +# })) +# t = tm.Telemetry() +# t.send_event('mo', 'offline_transformations_status', message) +#>>>>>>> upstream/master print('[ SUCCESS ] Generated IR version {} model.'.format(get_ir_version(argv))) print('[ SUCCESS ] XML file: {}.xml'.format(orig_model_name)) @@ -308,9 +337,9 @@ def driver(argv: argparse.Namespace): def main(cli_parser: argparse.ArgumentParser, framework: str): - telemetry = tm.Telemetry(app_name='Model Optimizer', app_version=get_version()) + telemetry = tm.Telemetry(app_name='Model Optimizer', app_version=get_simplified_mo_version()) telemetry.start_session() - telemetry.send_event('mo', 'version', get_version()) + telemetry.send_event('mo', 'version', get_simplified_mo_version()) try: # Initialize logger with 'ERROR' as default level to be able to form nice messages # before arg parser deliver log_level requested by user diff --git a/model-optimizer/mo/main_test.py b/model-optimizer/mo/main_test.py index c7fbe4a615ac76..7afa4e6e6e2f3c 100644 --- a/model-optimizer/mo/main_test.py +++ b/model-optimizer/mo/main_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import argparse import unittest diff --git a/model-optimizer/mo/middle/__init__.py b/model-optimizer/mo/middle/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/middle/__init__.py +++ b/model-optimizer/mo/middle/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/middle/passes/__init__.py b/model-optimizer/mo/middle/passes/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/middle/passes/__init__.py +++ b/model-optimizer/mo/middle/passes/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/middle/passes/conv.py b/model-optimizer/mo/middle/passes/conv.py index 9955e7a8ea1580..6d9779ebae67f6 100644 --- a/model-optimizer/mo/middle/passes/conv.py +++ b/model-optimizer/mo/middle/passes/conv.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/passes/convert_data_type.py b/model-optimizer/mo/middle/passes/convert_data_type.py index 231be0bca84328..06fd2bb846b7bd 100644 --- a/model-optimizer/mo/middle/passes/convert_data_type.py +++ b/model-optimizer/mo/middle/passes/convert_data_type.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log @@ -23,11 +10,22 @@ from mo.utils.error import Error from mo.utils.utils import refer_to_faq_msg +""" +Packed data of custom types are stored in numpy uint8 data type. +To distinguish true uint8 and custom data we introduce this class not to store, +but to have unique data type in SUPPORTED_DATA_TYPES map +""" + class packed_U1(np.generic): - # packed U1 and U8 types of data are stored in numpy uint8 data type - # to distinguish true uint8 and u1 data we introduce this class not to store, - # but to have unique data type in SUPPORTED_DATA_TYPES map + pass + + +class packed_U4(np.generic): + pass + + +class packed_I4(np.generic): pass @@ -44,7 +42,13 @@ class packed_U1(np.generic): 'int32': (np.int32, 'I32', 'i32'), 'int64': (np.int64, 'I64', 'i64'), 'bool': (np.bool, 'BOOL', 'boolean'), + + # custom types 'U1': (packed_U1, 'U1', 'u1'), + 'int4': (packed_I4, 'I4', 'i4'), + 'uint4': (packed_U4, 'U4', 'u4'), + 'I4': (packed_I4, 'I4', 'i4'), + 'U4': (packed_U4, 'U4', 'u4'), } diff --git a/model-optimizer/mo/middle/passes/convert_data_type_test.py b/model-optimizer/mo/middle/passes/convert_data_type_test.py index c53cb964a897de..34ddaa1a86f11e 100644 --- a/model-optimizer/mo/middle/passes/convert_data_type_test.py +++ b/model-optimizer/mo/middle/passes/convert_data_type_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/debug.py b/model-optimizer/mo/middle/passes/debug.py index 189be05cd9f453..2c56c0a3f617cf 100644 --- a/model-optimizer/mo/middle/passes/debug.py +++ b/model-optimizer/mo/middle/passes/debug.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import * diff --git a/model-optimizer/mo/middle/passes/eliminate.py b/model-optimizer/mo/middle/passes/eliminate.py index 2aa689cf769ae8..e24fc4b444bcad 100644 --- a/model-optimizer/mo/middle/passes/eliminate.py +++ b/model-optimizer/mo/middle/passes/eliminate.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import re from collections import deque @@ -132,8 +120,13 @@ def eliminate_dead_nodes(graph): # During graph clean-up the operation node is removed and the attribute is lost. # This results in permutation of the Const shape in the IR and wrong inference results. # Here we explicitly save the 'nchw_layout' attribute in the data node to prevent permutation." - if node_attrs.get('type', None) == 'Const' and node_attrs.get('nchw_layout', False): - Node(graph, node_name).out_node()['nchw_layout'] = True + if node_attrs.get('type', None) == 'Const': + if node_attrs.get('nchw_layout', False): + Node(graph, node_name).out_node()['nchw_layout'] = True + if np.all(node_attrs.get('force_shape', False)): + Node(graph, node_name).out_node()['force_shape'] = node_attrs['force_shape'] + if node_attrs.get('force_type', False): + Node(graph, node_name).out_node()['force_type'] = node_attrs['force_type'] if not node_attrs['is_output_reachable'] or \ (node_attrs['is_const_producer'] and (not node_attrs['is_undead'] or diff --git a/model-optimizer/mo/middle/passes/eliminate_test.py b/model-optimizer/mo/middle/passes/eliminate_test.py index 3bec2184f5cc24..4d935609565ee2 100644 --- a/model-optimizer/mo/middle/passes/eliminate_test.py +++ b/model-optimizer/mo/middle/passes/eliminate_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/fusing/__init__.py b/model-optimizer/mo/middle/passes/fusing/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/middle/passes/fusing/__init__.py +++ b/model-optimizer/mo/middle/passes/fusing/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/middle/passes/fusing/decomposition.py b/model-optimizer/mo/middle/passes/fusing/decomposition.py index 36ac103b9a0520..7782186e2dd6c8 100644 --- a/model-optimizer/mo/middle/passes/fusing/decomposition.py +++ b/model-optimizer/mo/middle/passes/fusing/decomposition.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/passes/fusing/decomposition_test.py b/model-optimizer/mo/middle/passes/fusing/decomposition_test.py index 5f32105703d7cd..8217fe12a3a6b3 100644 --- a/model-optimizer/mo/middle/passes/fusing/decomposition_test.py +++ b/model-optimizer/mo/middle/passes/fusing/decomposition_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/fusing/fuse_grouped_conv.py b/model-optimizer/mo/middle/passes/fusing/fuse_grouped_conv.py index 506435b9d0deb2..afb3de7648f0d7 100644 --- a/model-optimizer/mo/middle/passes/fusing/fuse_grouped_conv.py +++ b/model-optimizer/mo/middle/passes/fusing/fuse_grouped_conv.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops.py b/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops.py index 91c4a128bce221..0c021b19e2fb91 100644 --- a/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops.py +++ b/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops_test.py b/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops_test.py index 66c6bc41964643..a85bedd9336b6a 100644 --- a/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops_test.py +++ b/model-optimizer/mo/middle/passes/fusing/fuse_linear_ops_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq.py b/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq.py index 5a7a708fb56a89..0522729705ef36 100644 --- a/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq.py +++ b/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq_test.py b/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq_test.py index e256553347dd8f..8d10884a5044b4 100644 --- a/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq_test.py +++ b/model-optimizer/mo/middle/passes/fusing/fuse_linear_seq_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/fusing/helpers.py b/model-optimizer/mo/middle/passes/fusing/helpers.py index 08888d4bece69b..14c18d1349d1b3 100644 --- a/model-optimizer/mo/middle/passes/fusing/helpers.py +++ b/model-optimizer/mo/middle/passes/fusing/helpers.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from collections import deque @@ -59,7 +46,8 @@ def get_value_in_port(node) -> Port: return None if len(value_ports) != 1 else value_ports[0] -def common_bfs(start_node: Node, allowed_ops: list, op_name: list, is_backward: bool = True, allowed_all: bool = False): +def common_bfs(start_node: Node, allowed_ops: list, op_name: list, is_backward: bool = True, allowed_all: bool = False, + attr_to_check='type', follow_multi_consumer_data_nodes=False): """ The purpose of this algorithm is to find layers with 'op_name' located in given direction. In case of branching algorithm goes into each branch, but if it can't find layer in one of them it returns @@ -70,6 +58,8 @@ def common_bfs(start_node: Node, allowed_ops: list, op_name: list, is_backward: :param op_name: The list with names of operations for searching :param is_backward: The direction of BFS algorithm :param allowed_all: Bool flag meaning we can jump over all operations + :param attr_to_check: the attribute to check when looking if the node is in "op_name" list + :param follow_multi_consumer_data_nodes: for backward traversal allow to follow data nodes with multiple consumers """ ret = [] q = deque([start_node]) @@ -83,8 +73,8 @@ def common_bfs(start_node: Node, allowed_ops: list, op_name: list, is_backward: in_nodes_size = len(node.in_nodes()) if is_backward else len(node.out_nodes()) for id in range(in_nodes_size): # in_nodes() can return either list or dict pnode = node.in_node(id) if is_backward else node.out_node(id) - if pnode.has_valid('type'): - if pnode.type in op_name: + if pnode.has_valid(attr_to_check): + if pnode[attr_to_check] in op_name: if pnode.id not in ret: ret.append(pnode.id) elif allowed_all or pnode.op in allowed_ops: @@ -93,7 +83,7 @@ def common_bfs(start_node: Node, allowed_ops: list, op_name: list, is_backward: return [] elif pnode.kind == 'data' and pnode.value is None: # If we go backward we don't use data node that have more than one consumer - if not is_backward or (is_backward and len(pnode.out_nodes()) == 1): + if not is_backward or (len(pnode.out_nodes()) == 1 or follow_multi_consumer_data_nodes): q.append(pnode) return [Node(start_node.graph, x) for x in ret] diff --git a/model-optimizer/mo/middle/passes/fusing/helpers_test.py b/model-optimizer/mo/middle/passes/fusing/helpers_test.py index ee9cdc5cead9f4..1cd97681abbee7 100644 --- a/model-optimizer/mo/middle/passes/fusing/helpers_test.py +++ b/model-optimizer/mo/middle/passes/fusing/helpers_test.py @@ -1,24 +1,13 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest +from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Node -from mo.middle.passes.fusing.helpers import forward_bfs, backward_bfs, get_next_operation -from mo.utils.unittest.graph import build_graph +from mo.middle.passes.fusing.helpers import forward_bfs, backward_bfs, get_next_operation, common_bfs +from mo.utils.unittest.graph import build_graph, regular_op_with_shaped_data, connect, const, result, \ + valued_const_with_data, connect_data nodes_attributes = { 'placeholder_1': {'shape': None, 'type': 'Parameter', 'kind': 'op', 'op': 'Parameter'}, @@ -256,6 +245,67 @@ def test_backward_bfs_cycle(self): res = backward_bfs(Node(graph, 'add_1_data'), ['Add', 'ScaleShift', 'Mul', 'Parameter'], ['Conv2D']) self.assertTrue(len(res) == 0, 'Sholdn\'t find any nodes due to cycle in graph') + def test_backward_bfs_check_op_instead_of_type(self): + # Placeholder->ScaleShift->Mul1->Add1---->Concat + # `----------->Add2->Mul2--' + graph = build_graph(nodes_attributes, + [('placeholder_1', 'placeholder_1_data'), + ('placeholder_1_data', 'add_2'), + ('scaleshift_1_w', 'scaleshift_1'), + ('scaleshift_1', 'scaleshift_1_data'), + ('scaleshift_1_data', 'mul_1'), + ('mul_1', 'mul_1_data'), + ('mul_1_data', 'add_1'), + ('add_1', 'add_1_data'), + ('add_2', 'add_2_data'), + ('add_2_data', 'mul_2'), + ('mul_2', 'mul_2_data'), + ('add_1_data', 'concat_1'), + ('mul_2_data', 'concat_1'), + ('concat_1', 'concat_1_data'), + ('concat_1_data', 'op_output') + ]) + + res = common_bfs(Node(graph, 'concat_1'), ['Mul', 'Add'], ['Parameter'], is_backward=True, attr_to_check='op') + self.assertTrue(len(res) == 0, 'Smth went wrong with bfs') + + res = common_bfs(Node(graph, 'concat_1'), ['Mul'], ['Add'], is_backward=True, attr_to_check='op') + self.assertTrue(len(res) == 2 and all([res[x].id in ['add_1', 'add_2'] for x in range(len(res))]), + 'Add operations was not found by bfs') + + res = common_bfs(Node(graph, 'concat_1'), ['ScaleShift'], ['Add'], is_backward=True, attr_to_check='op') + self.assertTrue(len(res) == 0, 'BFS shouldn\'t find any operations') + + res = common_bfs(Node(graph, 'concat_1'), [], ['Add'], allowed_all=True, is_backward=True, attr_to_check='op') + self.assertTrue(len(res) == 2 and all([res[x].id in ['add_1', 'add_2'] for x in range(len(res))]), + 'Add operations was not found by bfs') + + res = common_bfs(Node(graph, 'concat_1'), ['ScaleShift'], ['ScaleShift'], is_backward=True, attr_to_check='op') + self.assertTrue(len(res) == 0, 'No one node should be found! But bfs found {} nodes'.format(len(res))) + + def test_backward_bfs_multi_consumer_data_nodes(self): + # Placeholder-> Mul -> Result + # Const -/ \- Result2 + + graph = build_graph({**regular_op_with_shaped_data('parameter', [1], {'op': 'Parameter'}), + **valued_const_with_data('const', int64_array([5])), + **regular_op_with_shaped_data('mul', [1], {'op': 'Mul'}), + **result('result'), + **result('result2'), + }, + [*connect('parameter', '0:mul'), + *connect('const', '1:mul'), + *connect('mul:0', 'result'), + *connect_data('mul', 'result2'), + ]) + + res = common_bfs(Node(graph, 'result'), ['Mul'], ['Parameter'], is_backward=True, attr_to_check='op', + follow_multi_consumer_data_nodes=True) + self.assertTrue(len(res) == 1, 'The multi-consumer data node "mul_d" was not followed') + + res = common_bfs(Node(graph, 'result'), ['Mul'], ['Parameter'], is_backward=True, attr_to_check='op') + self.assertTrue(len(res) == 0, 'The multi-consumer data node "mul_d" was followed') + # Unit tests for get_next_operation class GetNextOperationTests(unittest.TestCase): diff --git a/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes.py b/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes.py index 67e7d701aafe23..3644c3dc3eb642 100644 --- a/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes.py +++ b/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import re diff --git a/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes_test.py b/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes_test.py index 46080e480d764a..148863bcb04161 100644 --- a/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes_test.py +++ b/model-optimizer/mo/middle/passes/fusing/mark_unfused_nodes_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/fusing/resnet_optimization.py b/model-optimizer/mo/middle/passes/fusing/resnet_optimization.py index abcd15b7117ea3..7f14db3885a911 100644 --- a/model-optimizer/mo/middle/passes/fusing/resnet_optimization.py +++ b/model-optimizer/mo/middle/passes/fusing/resnet_optimization.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/passes/fusing/resnet_optimization_test.py b/model-optimizer/mo/middle/passes/fusing/resnet_optimization_test.py index 50d6c836a917bd..db51878bb985db 100644 --- a/model-optimizer/mo/middle/passes/fusing/resnet_optimization_test.py +++ b/model-optimizer/mo/middle/passes/fusing/resnet_optimization_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/infer.py b/model-optimizer/mo/middle/passes/infer.py index af6d628e32a286..3b642ccd09b494 100644 --- a/model-optimizer/mo/middle/passes/infer.py +++ b/model-optimizer/mo/middle/passes/infer.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/passes/infer_test.py b/model-optimizer/mo/middle/passes/infer_test.py index a6f782eee38938..1745e651775d00 100644 --- a/model-optimizer/mo/middle/passes/infer_test.py +++ b/model-optimizer/mo/middle/passes/infer_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/middle/passes/tensor_names.py b/model-optimizer/mo/middle/passes/tensor_names.py index 5ec39592c943ca..4e291023679ff5 100644 --- a/model-optimizer/mo/middle/passes/tensor_names.py +++ b/model-optimizer/mo/middle/passes/tensor_names.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from xml.etree.ElementTree import Element, SubElement, tostring diff --git a/model-optimizer/mo/middle/pattern_match.py b/model-optimizer/mo/middle/pattern_match.py index f091551b286861..c287b74d522f41 100644 --- a/model-optimizer/mo/middle/pattern_match.py +++ b/model-optimizer/mo/middle/pattern_match.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/middle/replacement.py b/model-optimizer/mo/middle/replacement.py index 5d72b1d2339717..18c2a3aca6824c 100644 --- a/model-optimizer/mo/middle/replacement.py +++ b/model-optimizer/mo/middle/replacement.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils import class_registration from mo.utils.replacement_pattern import ReplacementPattern diff --git a/model-optimizer/mo/ops/__init__.py b/model-optimizer/mo/ops/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/ops/__init__.py +++ b/model-optimizer/mo/ops/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/ops/activation.py b/model-optimizer/mo/ops/activation.py index 0dd0551cec3f11..44691c503d4952 100644 --- a/model-optimizer/mo/ops/activation.py +++ b/model-optimizer/mo/ops/activation.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/assign.py b/model-optimizer/mo/ops/assign.py index 08b07ff8d0c1cf..d31464a52c7fe5 100644 --- a/model-optimizer/mo/ops/assign.py +++ b/model-optimizer/mo/ops/assign.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph, Node from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/broadcast.py b/model-optimizer/mo/ops/broadcast.py index 8320cbbf1be5d0..0edd867bb29cf5 100644 --- a/model-optimizer/mo/ops/broadcast.py +++ b/model-optimizer/mo/ops/broadcast.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Node, Graph from mo.graph.perm_inputs import PermuteInputs diff --git a/model-optimizer/mo/ops/broadcast_test.py b/model-optimizer/mo/ops/broadcast_test.py index 88e55cfaa43d6c..cbca711ebbb2b9 100644 --- a/model-optimizer/mo/ops/broadcast_test.py +++ b/model-optimizer/mo/ops/broadcast_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/clamp.py b/model-optimizer/mo/ops/clamp.py index b2942bbaba457f..bf082853716103 100644 --- a/model-optimizer/mo/ops/clamp.py +++ b/model-optimizer/mo/ops/clamp.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph diff --git a/model-optimizer/mo/ops/concat.py b/model-optimizer/mo/ops/concat.py index 10269430e7e82f..fe72efd6718977 100644 --- a/model-optimizer/mo/ops/concat.py +++ b/model-optimizer/mo/ops/concat.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.concat import concat_infer from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/concat_test.py b/model-optimizer/mo/ops/concat_test.py index 119b547b3c4c8f..db92343f10d001 100644 --- a/model-optimizer/mo/ops/concat_test.py +++ b/model-optimizer/mo/ops/concat_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/const.py b/model-optimizer/mo/ops/const.py index a39199f0cf756d..e3c4bc3b6ef70e 100644 --- a/model-optimizer/mo/ops/const.py +++ b/model-optimizer/mo/ops/const.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/constant_of_shape.py b/model-optimizer/mo/ops/constant_of_shape.py index 762cdca9c20480..2e5632e314a71a 100644 --- a/model-optimizer/mo/ops/constant_of_shape.py +++ b/model-optimizer/mo/ops/constant_of_shape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/convolution.py b/model-optimizer/mo/ops/convolution.py index 5320f14a937f22..aa884b347210cf 100644 --- a/model-optimizer/mo/ops/convolution.py +++ b/model-optimizer/mo/ops/convolution.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/ops/convolution_test.py b/model-optimizer/mo/ops/convolution_test.py index a9573cbc238a63..2f555c1d42a922 100644 --- a/model-optimizer/mo/ops/convolution_test.py +++ b/model-optimizer/mo/ops/convolution_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/crop.py b/model-optimizer/mo/ops/crop.py index ab86286e53adea..1a9141df929419 100644 --- a/model-optimizer/mo/ops/crop.py +++ b/model-optimizer/mo/ops/crop.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log diff --git a/model-optimizer/mo/ops/crop_test.py b/model-optimizer/mo/ops/crop_test.py index f1b5e06b21c904..4f87b6b5e4ffac 100644 --- a/model-optimizer/mo/ops/crop_test.py +++ b/model-optimizer/mo/ops/crop_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/deconvolution.py b/model-optimizer/mo/ops/deconvolution.py index f598fd92cde636..f338267c4db5ff 100644 --- a/model-optimizer/mo/ops/deconvolution.py +++ b/model-optimizer/mo/ops/deconvolution.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/deformable_convolution.py b/model-optimizer/mo/ops/deformable_convolution.py index 3c4860d3218cbe..f219208cbc03f4 100644 --- a/model-optimizer/mo/ops/deformable_convolution.py +++ b/model-optimizer/mo/ops/deformable_convolution.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.convolution import Convolution diff --git a/model-optimizer/mo/ops/eltwise.py b/model-optimizer/mo/ops/eltwise.py index 89fc2a667b10e3..ada8dd6a2f5bd1 100644 --- a/model-optimizer/mo/ops/eltwise.py +++ b/model-optimizer/mo/ops/eltwise.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/eltwise_n.py b/model-optimizer/mo/ops/eltwise_n.py index 5fd8c968010687..e653be29b81f12 100644 --- a/model-optimizer/mo/ops/eltwise_n.py +++ b/model-optimizer/mo/ops/eltwise_n.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/eltwise_ninputs_in_1.py b/model-optimizer/mo/ops/eltwise_ninputs_in_1.py index 83e606a942cb76..bd267aceba7789 100644 --- a/model-optimizer/mo/ops/eltwise_ninputs_in_1.py +++ b/model-optimizer/mo/ops/eltwise_ninputs_in_1.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/expand_dims.py b/model-optimizer/mo/ops/expand_dims.py index c15333a0c25608..f1252bfc0649a3 100644 --- a/model-optimizer/mo/ops/expand_dims.py +++ b/model-optimizer/mo/ops/expand_dims.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/expand_dims_test.py b/model-optimizer/mo/ops/expand_dims_test.py index ba9d23b779d375..af0de5a490e069 100644 --- a/model-optimizer/mo/ops/expand_dims_test.py +++ b/model-optimizer/mo/ops/expand_dims_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/fill.py b/model-optimizer/mo/ops/fill.py index 189f5104f5cbcf..34380f7d89bb00 100644 --- a/model-optimizer/mo/ops/fill.py +++ b/model-optimizer/mo/ops/fill.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/flatten.py b/model-optimizer/mo/ops/flatten.py index e3a9f85bce7b5b..8b1f9a56024ce4 100644 --- a/model-optimizer/mo/ops/flatten.py +++ b/model-optimizer/mo/ops/flatten.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/group_norm.py b/model-optimizer/mo/ops/group_norm.py index e0cbdd92fd3a91..d32a9dcc717288 100644 --- a/model-optimizer/mo/ops/group_norm.py +++ b/model-optimizer/mo/ops/group_norm.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph diff --git a/model-optimizer/mo/ops/log_softmax.py b/model-optimizer/mo/ops/log_softmax.py index fe6d6e9055d92f..4f66e112512629 100644 --- a/model-optimizer/mo/ops/log_softmax.py +++ b/model-optimizer/mo/ops/log_softmax.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph, Node diff --git a/model-optimizer/mo/ops/lrn.py b/model-optimizer/mo/ops/lrn.py index 7f319a5940ef6c..98d0dad48bd45e 100644 --- a/model-optimizer/mo/ops/lrn.py +++ b/model-optimizer/mo/ops/lrn.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/lstmnonlinearity.py b/model-optimizer/mo/ops/lstmnonlinearity.py index 564c6072c7cdad..b448b247b40a72 100644 --- a/model-optimizer/mo/ops/lstmnonlinearity.py +++ b/model-optimizer/mo/ops/lstmnonlinearity.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/memory.py b/model-optimizer/mo/ops/memory.py index 94b6a69077e0c7..cb90464af8c54c 100644 --- a/model-optimizer/mo/ops/memory.py +++ b/model-optimizer/mo/ops/memory.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.front.common.partial_infer.utils import int64_array diff --git a/model-optimizer/mo/ops/memoryoffset.py b/model-optimizer/mo/ops/memoryoffset.py index fe8007d9306536..bcbcdd3f28d7de 100644 --- a/model-optimizer/mo/ops/memoryoffset.py +++ b/model-optimizer/mo/ops/memoryoffset.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph, Node @@ -30,17 +17,16 @@ def __init__(self, graph: Graph, attrs: dict): 'pair_name': None, 'splitted': False, 'has_default': False, - 'infer': __class__.infer, + 'infer': self.infer, 'in_ports_count': 1, 'out_ports_count': 1, }, attrs) - @staticmethod def infer(node: Node): if node.has_valid('element_size'): - # element_size should be set by Kaldi loader or by MemoryOffsetAdjustment - node.out_port(0).data.set_shape([1, node['element_size']]) + # element_size should be set by Kaldi loader or MemoryOffsetAdjustment or SplitRecurrentMemoryOffset + node.out_port(0).data.set_shape(node.element_size) else: # for TDNN blocks copy_shape_infer(node) diff --git a/model-optimizer/mo/ops/op.py b/model-optimizer/mo/ops/op.py index 3141c996467b51..6f45fa76e6fdf6 100644 --- a/model-optimizer/mo/ops/op.py +++ b/model-optimizer/mo/ops/op.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import copy import logging as log diff --git a/model-optimizer/mo/ops/pad.py b/model-optimizer/mo/ops/pad.py index bed51a2e2e3d43..3e0810f7500dba 100644 --- a/model-optimizer/mo/ops/pad.py +++ b/model-optimizer/mo/ops/pad.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.graph.graph import Graph diff --git a/model-optimizer/mo/ops/pad_test.py b/model-optimizer/mo/ops/pad_test.py index 3dec704c04810c..3f63d509b9f702 100644 --- a/model-optimizer/mo/ops/pad_test.py +++ b/model-optimizer/mo/ops/pad_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/permute.py b/model-optimizer/mo/ops/permute.py index 8d82f30cbfd9d9..70996f6de3383d 100644 --- a/model-optimizer/mo/ops/permute.py +++ b/model-optimizer/mo/ops/permute.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.extractor import attr_getter from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/pooling.py b/model-optimizer/mo/ops/pooling.py index ecc6edf8f62468..02fa3af7738406 100644 --- a/model-optimizer/mo/ops/pooling.py +++ b/model-optimizer/mo/ops/pooling.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/pooling_test.py b/model-optimizer/mo/ops/pooling_test.py index ab365ec06fe00d..057963c8ef8562 100644 --- a/model-optimizer/mo/ops/pooling_test.py +++ b/model-optimizer/mo/ops/pooling_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/power.py b/model-optimizer/mo/ops/power.py index 2393b207e8d490..0351545ce56680 100644 --- a/model-optimizer/mo/ops/power.py +++ b/model-optimizer/mo/ops/power.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.common.partial_infer.eltwise import eltwise_infer diff --git a/model-optimizer/mo/ops/read_value.py b/model-optimizer/mo/ops/read_value.py index 6a7c2365a7334a..0a53b1eab440fc 100644 --- a/model-optimizer/mo/ops/read_value.py +++ b/model-optimizer/mo/ops/read_value.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.graph.graph import Graph, Node from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/reshape.py b/model-optimizer/mo/ops/reshape.py index 018b1d68935513..8a9b58cfef943d 100644 --- a/model-optimizer/mo/ops/reshape.py +++ b/model-optimizer/mo/ops/reshape.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import numpy as np from mo.front.extractor import bool_to_str diff --git a/model-optimizer/mo/ops/result.py b/model-optimizer/mo/ops/result.py index 32d9af09954572..5689023c469668 100644 --- a/model-optimizer/mo/ops/result.py +++ b/model-optimizer/mo/ops/result.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/roipooling.py b/model-optimizer/mo/ops/roipooling.py index 6c48639769a973..bdb2734d3b331c 100644 --- a/model-optimizer/mo/ops/roipooling.py +++ b/model-optimizer/mo/ops/roipooling.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.roipooling import roipooling_infer from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/scale_shift.py b/model-optimizer/mo/ops/scale_shift.py index 2c2ef870d8db8f..ca353821051c8b 100644 --- a/model-optimizer/mo/ops/scale_shift.py +++ b/model-optimizer/mo/ops/scale_shift.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Graph diff --git a/model-optimizer/mo/ops/shape.py b/model-optimizer/mo/ops/shape.py index 741eeef48434c4..c68882326df086 100644 --- a/model-optimizer/mo/ops/shape.py +++ b/model-optimizer/mo/ops/shape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/slice.py b/model-optimizer/mo/ops/slice.py index d9772bf43f4bf6..b7762e836a0532 100644 --- a/model-optimizer/mo/ops/slice.py +++ b/model-optimizer/mo/ops/slice.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np @@ -34,7 +21,7 @@ class AttributedSlice(Op): """ AttributedSlice is used in old versions of ONNX models (opset version < 10). - The operation is replaced with the OpenVINO Slice operation on the front phase. + Is replaced with internal Slice on the front phase. """ op = 'AttributedSlice' enabled = False @@ -53,7 +40,7 @@ class CaffeSlice(Op): """ Slice in Caffe is equivalent to Split operation in OpenVINO. https://caffe.berkeleyvision.org/tutorial/layers/slice.html - The operation is replaced with the OpenVINO Split operation on the front phase. + Is replaced with Split from opset on the front phase. """ op = 'CaffeSlice' enabled = False @@ -71,11 +58,10 @@ def __init__(self, graph: Graph, attrs: dict): class TFSlice(Op): """ - Slice operation in Tensorflow is different from Slice in ONNX, Caffe and MXNet. It has begin and size inputs while - ONNX Slice and internal MO Slice has start, end, step and axis parameters specified as inputs. + TFSlice differs from Slice in ONNX, Caffe and MXNet. + TFSlice has 'begin' and 'size' inputs while Slice has 'start', 'end', 'step', and 'axis' inputs. https://www.tensorflow.org/api_docs/python/tf/slice - The operation is replaced with the internal Slice on the front phase. - If size[i] == -1 is replaced to int32_max value for the end. + Is replaced with internal Slice op on the front phase. """ op = 'TFSlice' enabled = False @@ -94,7 +80,7 @@ class MXSlice(Op): """ Slice operation in MXNet is different from ONNX, Caffe, Tensorflow. It has begin, end & step attributes https://mxnet.apache.org/versions/1.6/api/python/docs/api/symbol/op/index.html#mxnet.symbol.op.slice - The operation is replaced with the OpenVINO StridedSlice operation on the front phase. + Is replaced with the StridedSlice from opset on the front phase. """ op = 'MXSlice' enabled = False @@ -112,9 +98,9 @@ def __init__(self, graph: Graph, attrs: dict): class Slice(Op): """ - Semantic of MO internal Slice operation is identical to Slice in ONNX opset >= 10. - It has starts, ends, steps and axes inputs. - The operation is internal (not present in the OpenVINO opset) and is replaced to StridedSlice. + Semantic of Slice is identical to Slice in ONNX opset >= 10. + It has 'starts', 'ends', 'steps', and 'axes' inputs. + SliceConverter replaces it with StridedSlice from opset. """ op = 'Slice' enabled = False diff --git a/model-optimizer/mo/ops/slice_test.py b/model-optimizer/mo/ops/slice_test.py index 759e16a1d9fbac..eb6454d7a6c612 100644 --- a/model-optimizer/mo/ops/slice_test.py +++ b/model-optimizer/mo/ops/slice_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/mo/ops/softmax.py b/model-optimizer/mo/ops/softmax.py index 333a38061d9705..52b36794f03ccf 100644 --- a/model-optimizer/mo/ops/softmax.py +++ b/model-optimizer/mo/ops/softmax.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.elemental import copy_shape_infer from mo.graph.graph import Node, Graph diff --git a/model-optimizer/mo/ops/space_to_batch.py b/model-optimizer/mo/ops/space_to_batch.py index 7e7316dbcb1276..9f8ed1acbd13d6 100644 --- a/model-optimizer/mo/ops/space_to_batch.py +++ b/model-optimizer/mo/ops/space_to_batch.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/squeeze.py b/model-optimizer/mo/ops/squeeze.py index ee7597ef88f3e7..0f4a5c65ea260d 100644 --- a/model-optimizer/mo/ops/squeeze.py +++ b/model-optimizer/mo/ops/squeeze.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/squeeze_test.py b/model-optimizer/mo/ops/squeeze_test.py index 49835d14b2efa0..4961aa6bbb7434 100644 --- a/model-optimizer/mo/ops/squeeze_test.py +++ b/model-optimizer/mo/ops/squeeze_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/mo/ops/strided_slice.py b/model-optimizer/mo/ops/strided_slice.py index 3bb67822734057..52ab2337ff4499 100644 --- a/model-optimizer/mo/ops/strided_slice.py +++ b/model-optimizer/mo/ops/strided_slice.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from typing import List, Tuple diff --git a/model-optimizer/mo/ops/strided_slice_test.py b/model-optimizer/mo/ops/strided_slice_test.py index b7b2ca078590ba..3db5e041f0cb62 100644 --- a/model-optimizer/mo/ops/strided_slice_test.py +++ b/model-optimizer/mo/ops/strided_slice_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import unittest import numpy as np diff --git a/model-optimizer/mo/ops/tdnncomponent.py b/model-optimizer/mo/ops/tdnncomponent.py index 727b3c93d5d119..c618623f3073b9 100644 --- a/model-optimizer/mo/ops/tdnncomponent.py +++ b/model-optimizer/mo/ops/tdnncomponent.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.ops.op import Op diff --git a/model-optimizer/mo/ops/tile.py b/model-optimizer/mo/ops/tile.py index e8aa123facdc02..43d45a74ca05d9 100644 --- a/model-optimizer/mo/ops/tile.py +++ b/model-optimizer/mo/ops/tile.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/tile_test.py b/model-optimizer/mo/ops/tile_test.py index f24b38b6a501ae..4e4be81d7a4f20 100644 --- a/model-optimizer/mo/ops/tile_test.py +++ b/model-optimizer/mo/ops/tile_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/ops/unsqueeze.py b/model-optimizer/mo/ops/unsqueeze.py index 6ac1ed7e5ec5c5..af1c9e3bb76001 100644 --- a/model-optimizer/mo/ops/unsqueeze.py +++ b/model-optimizer/mo/ops/unsqueeze.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/ops/unsqueeze_test.py b/model-optimizer/mo/ops/unsqueeze_test.py index 3b2c7b770da7b2..75de9de2717db6 100644 --- a/model-optimizer/mo/ops/unsqueeze_test.py +++ b/model-optimizer/mo/ops/unsqueeze_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/pipeline/__init__.py b/model-optimizer/mo/pipeline/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/pipeline/__init__.py +++ b/model-optimizer/mo/pipeline/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/pipeline/common.py b/model-optimizer/mo/pipeline/common.py index 51b8d8bc795199..02e805fb62bd6b 100644 --- a/model-optimizer/mo/pipeline/common.py +++ b/model-optimizer/mo/pipeline/common.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import argparse import logging as log @@ -40,12 +27,11 @@ def determined_sort(outputs: list): stack = list(outputs) visited = set() while len(stack) != 0: - node = stack[0] + node = stack.pop(0) node_id = node.id - stack.pop(0) visited.add(node_id) has_child = False - in_names = [n.id if isinstance(node.in_nodes(), list) else node.in_node(n).id for n in node.in_nodes()] + in_names = [n for n, d in node.get_inputs()] for in_node_name in in_names: if in_node_name not in visited: stack.insert(0, node) diff --git a/model-optimizer/mo/pipeline/common_test.py b/model-optimizer/mo/pipeline/common_test.py index e39316867c05e6..466be2a3c439ea 100644 --- a/model-optimizer/mo/pipeline/common_test.py +++ b/model-optimizer/mo/pipeline/common_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/pipeline/unified.py b/model-optimizer/mo/pipeline/unified.py index e638e7d604c994..64908f2c7816c8 100644 --- a/model-optimizer/mo/pipeline/unified.py +++ b/model-optimizer/mo/pipeline/unified.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import argparse from mo.graph.graph import Graph diff --git a/model-optimizer/mo/utils/__init__.py b/model-optimizer/mo/utils/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/utils/__init__.py +++ b/model-optimizer/mo/utils/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/utils/broadcasting.py b/model-optimizer/mo/utils/broadcasting.py index d900514f033e0b..b876f4f97b4dbd 100644 --- a/model-optimizer/mo/utils/broadcasting.py +++ b/model-optimizer/mo/utils/broadcasting.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import numpy as np diff --git a/model-optimizer/mo/utils/broadcasting_test.py b/model-optimizer/mo/utils/broadcasting_test.py index 38fcb9bd61dd13..a82bfda615c668 100644 --- a/model-optimizer/mo/utils/broadcasting_test.py +++ b/model-optimizer/mo/utils/broadcasting_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.utils import int64_array from mo.utils.broadcasting import bi_directional_broadcasting, bi_directional_shape_broadcasting, uni_directional_broadcasting, uni_directional_shape_broadcasting from generator import generator, generate diff --git a/model-optimizer/mo/utils/check_ie_bindings.py b/model-optimizer/mo/utils/check_ie_bindings.py new file mode 100644 index 00000000000000..6fee0828303c80 --- /dev/null +++ b/model-optimizer/mo/utils/check_ie_bindings.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import re +import sys +import argparse +import platform + + +try: + import mo + execution_type = "mo" +except ModuleNotFoundError: + mo_root_path = os.path.normpath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) + sys.path.insert(0, mo_root_path) + execution_type = "install_prerequisites.{}".format("bat" if platform.system() == "Windows" else "sh") + +import mo.utils.version as v +import telemetry.telemetry as tm +from mo.utils.error import classify_error_type + + +def send_telemetry(mo_version: str, message: str, event_type: str): + t = tm.Telemetry(app_name='Model Optimizer', app_version=mo_version) + t.start_session() + t.send_event(execution_type, event_type, message) + t.end_session() + t.force_shutdown(1.0) + + +def import_core_modules(silent: bool, path_to_module: str): + try: + from openvino.inference_engine import IECore, get_version # pylint: disable=import-error + from openvino.offline_transformations import ApplyMOCTransformations, CheckAPI # pylint: disable=import-error + + import openvino # pylint: disable=import-error + + if silent: + return True + + ie_version = str(get_version()) + mo_version = str(v.get_version()) # pylint: disable=no-member + + print("\t- {}: \t{}".format("Inference Engine found in", os.path.dirname(openvino.__file__))) + print("{}: \t{}".format("Inference Engine version", ie_version)) + print("{}: \t {}".format("Model Optimizer version", mo_version)) + + versions_mismatch = False + # MO and IE version have a small difference in the beginning of version because + # IE version also includes API version. For example: + # Inference Engine version: 2.1.custom_HEAD_4c8eae0ee2d403f8f5ae15b2c9ad19cfa5a9e1f9 + # Model Optimizer version: custom_HEAD_4c8eae0ee2d403f8f5ae15b2c9ad19cfa5a9e1f9 + # So to match this versions we skip IE API version. + if not re.match(r"^([0-9]+).([0-9]+).{}$".format(mo_version), ie_version): + versions_mismatch = True + extracted_mo_release_version = v.extract_release_version(mo_version) + mo_is_custom = extracted_mo_release_version == (None, None) + + print("[ WARNING ] Model Optimizer and Inference Engine versions do no match.") + print("[ WARNING ] Consider building the Inference Engine Python API from sources or reinstall OpenVINO (TM) toolkit using", end=" ") + if mo_is_custom: + print("\"pip install openvino\" (may be incompatible with the current Model Optimizer version)") + else: + print("\"pip install openvino=={}.{}\"".format(*extracted_mo_release_version)) + + simplified_mo_version = v.get_simplified_mo_version() + message = str(dict({ + "platform": platform.system(), + "mo_version": simplified_mo_version, + "ie_version": v.get_simplified_ie_version(version=ie_version), + "versions_mismatch": versions_mismatch, + })) + send_telemetry(simplified_mo_version, message, 'ie_version_check') + + return True + except Exception as e: + # Do not print a warning if module wasn't found or silent mode is on + if "No module named 'openvino'" not in str(e) and not silent: + print("[ WARNING ] Failed to import Inference Engine Python API in: {}".format(path_to_module)) + print("[ WARNING ] {}".format(e)) + + # Send telemetry message about warning + simplified_mo_version = v.get_simplified_mo_version() + message = str(dict({ + "platform": platform.system(), + "mo_version": simplified_mo_version, + "ie_version": v.get_simplified_ie_version(env=os.environ), + "python_version": sys.version, + "error_type": classify_error_type(e), + })) + send_telemetry(simplified_mo_version, message, 'ie_import_failed') + + return False + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--silent", action="store_true") + parser.add_argument("--path_to_module") + args = parser.parse_args() + + if not import_core_modules(args.silent, args.path_to_module): + exit(1) diff --git a/model-optimizer/mo/utils/class_registration.py b/model-optimizer/mo/utils/class_registration.py index 27a6bcafb60425..fdac9b4adc9034 100644 --- a/model-optimizer/mo/utils/class_registration.py +++ b/model-optimizer/mo/utils/class_registration.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import os from enum import Enum @@ -128,7 +116,7 @@ def dump_graph_for_graphviz(self, node_attrs: list = [], edge_attrs: list = [], if nodes_to_dump is None: nodes_to_dump = self.nodes() string = '\ndigraph {\n' - string += 'node [color=lightblue2, style=filled];\n' + string += 'node [color=lightblue2, style=filled, shape=box];\n' for node in nodes_to_dump: attrs = "" diff --git a/model-optimizer/mo/utils/cli_parser.py b/model-optimizer/mo/utils/cli_parser.py index 5732cf4ad88f77..531b9244fccd93 100644 --- a/model-optimizer/mo/utils/cli_parser.py +++ b/model-optimizer/mo/utils/cli_parser.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import argparse import ast import logging as log diff --git a/model-optimizer/mo/utils/cli_parser_test.py b/model-optimizer/mo/utils/cli_parser_test.py index 36ec7cbcd28a36..a4e80a274d9b7c 100644 --- a/model-optimizer/mo/utils/cli_parser_test.py +++ b/model-optimizer/mo/utils/cli_parser_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import argparse import os import shutil diff --git a/model-optimizer/mo/utils/convert.py b/model-optimizer/mo/utils/convert.py index f0ccf3e5b704e7..75233c43bf995e 100755 --- a/model-optimizer/mo/utils/convert.py +++ b/model-optimizer/mo/utils/convert.py @@ -1,19 +1,6 @@ -#!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import argparse import os import sys diff --git a/model-optimizer/mo/utils/custom_replacement_config.py b/model-optimizer/mo/utils/custom_replacement_config.py index 83ea75a3a142dd..32f7b6808f563b 100644 --- a/model-optimizer/mo/utils/custom_replacement_config.py +++ b/model-optimizer/mo/utils/custom_replacement_config.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import json import logging as log diff --git a/model-optimizer/mo/utils/dsu.py b/model-optimizer/mo/utils/dsu.py index e4a368a6fb0af6..92d57da455b07f 100644 --- a/model-optimizer/mo/utils/dsu.py +++ b/model-optimizer/mo/utils/dsu.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 class DSUElem: diff --git a/model-optimizer/mo/utils/error.py b/model-optimizer/mo/utils/error.py index 95f4e64b4222e0..7e03ae2fa857fb 100644 --- a/model-optimizer/mo/utils/error.py +++ b/model-optimizer/mo/utils/error.py @@ -1,18 +1,7 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +import re class BasicError(Exception): @@ -44,3 +33,17 @@ class InternalError(BasicError): """ Not user-friendly error: user cannot fix it and it points to the bug inside MO. """ pass + +def classify_error_type(e): + patterns = [ + # Example: No module named 'openvino.offline_transformations.offline_transformations_api' + r"No module named \'\S+\'", + # Example: cannot import name 'IECore' from 'openvino.inference_engine' (unknown location) + r"cannot import name \'\S+\'", + ] + error_message = str(e) + for pattern in patterns: + m = re.search(pattern, error_message) + if m: + return m.group(0) + return "undefined" diff --git a/model-optimizer/mo/utils/error_test.py b/model-optimizer/mo/utils/error_test.py new file mode 100644 index 00000000000000..b2ca0597440a8d --- /dev/null +++ b/model-optimizer/mo/utils/error_test.py @@ -0,0 +1,24 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest + +from mo.utils.error import classify_error_type + + +class TestingErrorClassifier(unittest.TestCase): + def test_no_module(self): + message = "No module named 'openvino.offline_transformations.offline_transformations_api'" + self.assertEqual(classify_error_type(message), message) + + def test_no_module_neg(self): + message = "No module 'openvino'" + self.assertEqual(classify_error_type(message), "undefined") + + def test_cannot_import_name(self): + message = "cannot import name 'IECore' from 'openvino.inference_engine' (unknown location)" + self.assertEqual(classify_error_type(message), "cannot import name 'IECore'") + + def test_cannot_import_name_neg(self): + message = "import name 'IECore' from 'openvino.inference_engine' (unknown location)" + self.assertEqual(classify_error_type(message), "undefined") diff --git a/model-optimizer/mo/utils/extract_release_version.py b/model-optimizer/mo/utils/extract_release_version.py new file mode 100644 index 00000000000000..66d0f5f680647a --- /dev/null +++ b/model-optimizer/mo/utils/extract_release_version.py @@ -0,0 +1,12 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +try: + # needed by install_prerequisites which call extract_release_version as python script + from version import extract_release_version, get_version +except ImportError: + from mo.utils.version import extract_release_version, get_version + + +if __name__ == "__main__": + print("{}.{}".format(*extract_release_version(get_version()))) diff --git a/model-optimizer/mo/utils/find_ie_version.py b/model-optimizer/mo/utils/find_ie_version.py new file mode 100644 index 00000000000000..9298ea4b13ad77 --- /dev/null +++ b/model-optimizer/mo/utils/find_ie_version.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import sys +import platform +import subprocess + +lib_env_key = "PATH" if platform.system() == "Windows" else "LD_LIBRARY_PATH" +if lib_env_key not in os.environ: + os.environ[lib_env_key] = "" + +python_path_key = "PYTHONPATH" +if python_path_key not in os.environ: + os.environ[python_path_key] = "" + +lib_path_orig = os.environ[lib_env_key] +python_path_orig = os.environ[python_path_key] + + +def setup_env(module="", libs=[]): + """ + Update os.environ variables with given values. + :param module: path to python module + :param libs: list with paths to libraries + """ + os.environ[python_path_key] = os.pathsep.join([os.environ[python_path_key], module]) + os.environ[lib_env_key] = os.pathsep.join([os.environ[lib_env_key], *libs]) + + +def reset_env(): + """ + Reset os.environ variables to default values + """ + os.environ[python_path_key] = python_path_orig + os.environ[lib_env_key] = lib_path_orig + + +def try_to_import_ie(module="", libs=[], silent=False): + """ + Check if Inference Engine Python API modules exists and in case of success + environment will be set with given values. + :param module: path to python module + :param libs: list with paths to libraries + :param silent: hide all output + """ + path_to_script = os.path.join(os.path.realpath(os.path.dirname(__file__)), 'check_ie_bindings.py') + # We need to execute python modules checker in subprocess to avoid issue with environment + # in case if previous import was unsuccessful it can fail further imports even if sys.path + # will be restored to initial default values. + # To pass environment to sub-process PATH/LD_LIBRARY_PATH and PYTHONPATH are used from + # os.environ that is set after setup_env() + setup_env(module=module, libs=libs) + cmd_args = [sys.executable, path_to_script, "--path_to_module", "PYTHONPATH" if module == "" else module] + if silent: + cmd_args.append("--silent") + + status = subprocess.run(cmd_args, env=os.environ) + if status.returncode == 0: + return True + else: + reset_env() + return False + + +def find_ie_version(silent=False): + """ + Tries to import Inference Engine Python API bindings. In case of successful import + PATH/LD_LIBRARY_PATH and PYTHONPATH environment variables will be set + This variables must be passed to subprocess in order to execute IE python bindings. + Example: + if find_ie_version(): + subprocess.run([sys.executable, path_to_script], env=os.environ) + + """ + if try_to_import_ie(silent=silent): + return True + + python_version = 'python{}.{}'.format(sys.version_info[0], sys.version_info[1]) + + script_path = os.path.realpath(os.path.dirname(__file__)) + bindings_paths = [ + # Windows + { + "module": os.path.join(script_path, '../../../../python/', python_version), + "libs": [ + os.path.join(script_path, '../../../inference_engine/bin/intel64/Release'), + os.path.join(script_path, '../../../inference_engine/external/tbb/bin'), + os.path.join(script_path, '../../../ngraph/lib'), + ] + }, + # Linux / Darwin + { + "module": os.path.join(script_path, '../../../../python/', python_version), + "libs": [ + os.path.join(script_path, '../../../inference_engine/lib/intel64'), + os.path.join(script_path, '../../../inference_engine/external/tbb/lib'), + os.path.join(script_path, '../../../ngraph/lib'), + ] + }, + # Local builds + { + "module": os.path.join(script_path, '../../../bin/intel64/Release/lib/python_api/', python_version), + "libs": [ + os.path.join(script_path, '../../../bin/intel64/Release/lib'), + ] + }, + { + "module": os.path.join(script_path, '../../../bin/intel64/RelWithDebInfo/lib/python_api/', python_version), + "libs": [ + os.path.join(script_path, '../../../bin/intel64/RelWithDebInfo/lib'), + ] + }, + { + "module": os.path.join(script_path, '../../../bin/intel64/Debug/lib/python_api/', python_version), + "libs": [ + os.path.join(script_path, '../../../bin/intel64/Debug/lib'), + ] + } + ] + + for item in bindings_paths: + module = item['module'] + if not os.path.exists(module): + continue + if try_to_import_ie(module=os.path.normpath(module), libs=item['libs'] if 'libs' in item else [], silent=silent): + return True + + return False + + +if __name__ == "__main__": + if not find_ie_version(): + exit(1) diff --git a/model-optimizer/mo/utils/find_inputs.py b/model-optimizer/mo/utils/find_inputs.py index 025caca3596cac..ccf57098e3dd9b 100644 --- a/model-optimizer/mo/utils/find_inputs.py +++ b/model-optimizer/mo/utils/find_inputs.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import networkx as nx diff --git a/model-optimizer/mo/utils/get_ov_update_message.py b/model-optimizer/mo/utils/get_ov_update_message.py index 9936d7d38bd905..ca8d1dfb3b1ba8 100644 --- a/model-optimizer/mo/utils/get_ov_update_message.py +++ b/model-optimizer/mo/utils/get_ov_update_message.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import datetime diff --git a/model-optimizer/mo/utils/graph.py b/model-optimizer/mo/utils/graph.py index d5c377eae9cdbd..0a7278ffcba589 100644 --- a/model-optimizer/mo/utils/graph.py +++ b/model-optimizer/mo/utils/graph.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log from collections import deque @@ -20,7 +7,7 @@ import networkx as nx -from mo.graph.graph import Node, Graph +from mo.graph.graph import Node, Graph, set_edge_attribute_between_nodes, get_edge_attribute_between_nodes from mo.utils.error import Error from mo.utils.utils import refer_to_faq_msg @@ -118,7 +105,7 @@ def is_connected_component(graph: Graph, node_names: list): def sub_graph_between_nodes(graph: Graph, start_nodes: list, end_nodes: list, detect_extra_start_node: callable=None, - include_control_flow=True): + include_control_flow=True, allow_non_reachable_end_nodes=False): """ Finds nodes of the sub-graph between 'start_nodes' and 'end_nodes'. Input nodes for the sub-graph nodes are also added to the sub-graph. Constant inputs of the 'start_nodes' are also added to the sub-graph. @@ -128,6 +115,7 @@ def sub_graph_between_nodes(graph: Graph, start_nodes: list, end_nodes: list, de :param detect_extra_start_node: callable function to add additional nodes to the list of start nodes instead of traversing the graph further. The list of additional start nodes is returned of the function is not None. :param include_control_flow: flag to specify whether to follow the control flow edges or not + :param allow_non_reachable_end_nodes: do not fail if the end nodes are not reachable from the start nodes :return: list of nodes of the identified sub-graph or None if the sub-graph cannot be extracted. """ sub_graph_nodes = list() @@ -162,7 +150,7 @@ def sub_graph_between_nodes(graph: Graph, start_nodes: list, end_nodes: list, de for start_node in start_nodes: graph.dfs(start_node, forward_visited) for end_node in end_nodes: - if end_node not in forward_visited: + if not allow_non_reachable_end_nodes and end_node not in forward_visited: raise Error('End node "{}" is not reachable from start nodes: {}. '.format(end_node, start_nodes) + refer_to_faq_msg(74)) @@ -298,3 +286,23 @@ def scope_output_nodes(graph: Graph, scope: str, scope_delimiter: str='/'): break return [Node(graph, node_id) for node_id in result] + +def clear_tensor_names_info(nodes: list): + """ + Clears tensor names information from 'fw_tensor_debug_info' attribute for all edges outgoing from + given nodes. + This method is used in cases when transformation adds postprocessing and the result does not + correspond to the original tensor. + This method should only be used during the front phase. + :param nodes: list of Node objects. + """ + for node in nodes: + for out_idx in node.out_nodes(): + out_node = node.out_node(out_idx) + fw_info_list = get_edge_attribute_between_nodes(node, out_node, 'fw_tensor_debug_info') + new_fw_info = [] + for fw_info in fw_info_list: + if fw_info is not None and len(fw_info) >= 2: + new_fw_info.append((fw_info[0], fw_info[1], None)) + set_edge_attribute_between_nodes(node, out_node, 'fw_tensor_debug_info', new_fw_info) + diff --git a/model-optimizer/mo/utils/graph_test.py b/model-optimizer/mo/utils/graph_test.py index 03c99aff62c5ba..adb753b1cc0a92 100644 --- a/model-optimizer/mo/utils/graph_test.py +++ b/model-optimizer/mo/utils/graph_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/utils/guess_framework.py b/model-optimizer/mo/utils/guess_framework.py index 068f9c140bbee7..6417ae3087a56b 100644 --- a/model-optimizer/mo/utils/guess_framework.py +++ b/model-optimizer/mo/utils/guess_framework.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import re from argparse import Namespace diff --git a/model-optimizer/mo/utils/ie_version.py b/model-optimizer/mo/utils/ie_version.py new file mode 100644 index 00000000000000..7a86c55a381aa0 --- /dev/null +++ b/model-optimizer/mo/utils/ie_version.py @@ -0,0 +1,13 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +def get_ie_version(): + try: + from openvino.inference_engine import get_version # pylint: disable=import-error + return get_version() + except: + return None + + +if __name__ == "__main__": + print(get_ie_version()) diff --git a/model-optimizer/mo/utils/import_extensions.py b/model-optimizer/mo/utils/import_extensions.py index 1fe0d82e85e730..021217fbcfa681 100644 --- a/model-optimizer/mo/utils/import_extensions.py +++ b/model-optimizer/mo/utils/import_extensions.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import importlib import logging as log diff --git a/model-optimizer/mo/utils/ir_engine/__init__.py b/model-optimizer/mo/utils/ir_engine/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/utils/ir_engine/__init__.py +++ b/model-optimizer/mo/utils/ir_engine/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/utils/ir_engine/compare_graphs.py b/model-optimizer/mo/utils/ir_engine/compare_graphs.py index d85ff3dacf0105..2b318660d0ca8c 100644 --- a/model-optimizer/mo/utils/ir_engine/compare_graphs.py +++ b/model-optimizer/mo/utils/ir_engine/compare_graphs.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from collections import deque from numbers import Number diff --git a/model-optimizer/mo/utils/ir_engine/ir_engine.py b/model-optimizer/mo/utils/ir_engine/ir_engine.py index 5424b7bcaf935e..8d080d8729aff2 100644 --- a/model-optimizer/mo/utils/ir_engine/ir_engine.py +++ b/model-optimizer/mo/utils/ir_engine/ir_engine.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import hashlib import logging as log @@ -123,7 +110,7 @@ def __load_xml(self): data_nodes = {} for port in self.graph.node[node]['ports']: data = self.graph.unique_id(prefix='data_') - self.graph.add_node(data, **{'kind': 'data', 'shape': self.graph.node[node]['ports'][port], + self.graph.add_node(data, **{'kind': 'data', 'shape': self.graph.node[node]['ports'][port][0], 'value': None}) self.graph.add_edges_from([(node, data, {'out': port})]) data_nodes.update({port: data}) @@ -232,7 +219,11 @@ def __load_layer(self, layer): for dim in port: output_shape.append(int(dim.text)) - layer_attrs['ports'].update({port_id: output_shape}) + out_tensor_names = None + if 'names' in port.attrib: + out_tensor_names = port.attrib['names'] + + layer_attrs['ports'].update({port_id: (output_shape, out_tensor_names)}) elif attr.tag == 'blobs': in_port = inputs_counter for blob_attr in attr: @@ -306,6 +297,8 @@ def __prepare_bin_attrs(xml_layer, in_port, tag, offset, size, precision): 'I8': (1, np.int8), 'U8': (1, np.uint8), 'U1': (1, np.uint8), + 'U4': (1, np.uint8), + 'I4': (1, np.uint8), 'BOOL': (1, np.bool), 'BIN': (1, np.uint8), } diff --git a/model-optimizer/mo/utils/ir_engine/ir_engine_test.py b/model-optimizer/mo/utils/ir_engine/ir_engine_test.py index 2abbf2c162005f..85d17b6fbba1dc 100644 --- a/model-optimizer/mo/utils/ir_engine/ir_engine_test.py +++ b/model-optimizer/mo/utils/ir_engine/ir_engine_test.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import os import sys diff --git a/model-optimizer/mo/utils/ir_reader/__init__.py b/model-optimizer/mo/utils/ir_reader/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/mo/utils/ir_reader/__init__.py +++ b/model-optimizer/mo/utils/ir_reader/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/mo/utils/ir_reader/extender.py b/model-optimizer/mo/utils/ir_reader/extender.py index fd6604ac018a44..5dc617f262921d 100644 --- a/model-optimizer/mo/utils/ir_reader/extender.py +++ b/model-optimizer/mo/utils/ir_reader/extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log @@ -51,5 +38,5 @@ def attr_to_list(node: Node, attribute: str): def const_shape_infer(node: Node): i = len(node.in_nodes()) for num in node.out_nodes(): - node.out_node(num).shape = int64_array(node.ports[i]) + node.out_node(num).shape = int64_array(node.ports[i][0]) i += 1 diff --git a/model-optimizer/mo/utils/ir_reader/extenders/ExtractImagePatches_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/ExtractImagePatches_extender.py index 73f590939e0a18..a656b01426ae8a 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/ExtractImagePatches_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/ExtractImagePatches_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/GRUCell_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/GRUCell_extender.py index b5ff5a148ec6ff..8ff1ae87f0f444 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/GRUCell_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/GRUCell_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import mark_input_bins from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/LSTMCell_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/LSTMCell_extender.py index 4ce8d8d41b4461..0810207c86f5a6 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/LSTMCell_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/LSTMCell_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/RNNCell_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/RNNCell_extender.py index 7fcb3ff2f10926..105393dc325699 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/RNNCell_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/RNNCell_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/binary_convolution_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/binary_convolution_extender.py index c5f64f1119e968..d071038da45ef5 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/binary_convolution_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/binary_convolution_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/bucketize_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/bucketize_extender.py index 22431735995d1d..fec15f70278e8b 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/bucketize_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/bucketize_extender.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/conv_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/conv_extender.py index 389366bb4256ae..2fede46c9f8b6e 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/conv_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/conv_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/convert_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/convert_extender.py index b5836d3adecfd1..09f680757d93ca 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/convert_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/convert_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node @@ -26,7 +13,6 @@ class Convert_extender(Extender): def extend(op: Node): op['dst_type'] = destination_type_to_np_data_type(op.destination_type) # CompressQuantizeWeights generates IR with constant sub-graph, that should not be ConstFolded: - # Const(u8) -> Convert(to fp) -> FakeQuantize + # Const(u8) -> Convert(to fp) -> (some eltwise operations) -> FakeQuantize if op.in_node().in_node().soft_get('type') == 'Const': - if op.out_node().out_node().soft_get('type') == 'FakeQuantize': - op['stop_value_propagation'] = True + op['stop_value_propagation'] = True diff --git a/model-optimizer/mo/utils/ir_reader/extenders/ctc_greedy_decoder_seq_len_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/ctc_greedy_decoder_seq_len_extender.py new file mode 100644 index 00000000000000..9978e7d00106e3 --- /dev/null +++ b/model-optimizer/mo/utils/ir_reader/extenders/ctc_greedy_decoder_seq_len_extender.py @@ -0,0 +1,17 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from mo.middle.passes.convert_data_type import destination_type_to_np_data_type +from mo.utils.graph import Node +from mo.utils.ir_reader.extender import Extender + + +class CTCGreedyDecoderSeqLenExtender(Extender): + op = 'CTCGreedyDecoderSeqLen' + + @staticmethod + def extend(op: Node): + if op.has_valid('classes_index_type'): + op['classes_index_type'] = destination_type_to_np_data_type(op.classes_index_type) + if op.has_valid('sequence_length_type'): + op['sequence_length_type'] = destination_type_to_np_data_type(op.sequence_length_type) diff --git a/model-optimizer/mo/utils/ir_reader/extenders/deconvolution_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/deconvolution_extender.py index d7b9b44ff771f0..e291afafe1a7b4 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/deconvolution_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/deconvolution_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/model-optimizer/mo/utils/ir_reader/extenders/deformable_convolution_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/deformable_convolution_extender.py index b48def2f67d6db..cf82896b4f8bd9 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/deformable_convolution_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/deformable_convolution_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/experimental_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/experimental_extender.py index c51338693c6ea5..eccaff5be024ad 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/experimental_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/experimental_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/fakequantize_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/fakequantize_extender.py index 785db350155936..3ad202d74b7415 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/fakequantize_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/fakequantize_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/interpolate_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/interpolate_extender.py index a83c293abb05f8..ca07b981826220 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/interpolate_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/interpolate_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/loop_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/loop_extender.py index 62c35b7aff14ff..0a2338051e0801 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/loop_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/loop_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/non_max_suppression_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/non_max_suppression_extender.py index 1c0d2405904306..8772e09bb54cec 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/non_max_suppression_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/non_max_suppression_extender.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/non_zero_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/non_zero_extender.py index d276cce15958e4..74f027dea4fc64 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/non_zero_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/non_zero_extender.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/pad_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/pad_extender.py index 35632b769f51cb..7f1848d5818680 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/pad_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/pad_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/parameter_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/parameter_extender.py index c7499709609465..9f16198e086cbd 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/parameter_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/parameter_extender.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.front.common.partial_infer.utils import int64_array from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/pooling_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/pooling_extender.py index e47dcca9785019..4d3f0e3a15b10a 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/pooling_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/pooling_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.graph.graph import Node @@ -40,6 +27,8 @@ def extend(op: Node): def common_pool_extender(op: Node): + for attr in ['strides', 'pads_begin', 'pads_end', 'kernel']: + Extender.attr_to_list(op, attr) op['stride'] = int64_array([1, 1] + op.strides) op['window'] = int64_array([1, 1] + op.kernel) op['kernel_spatial'] = op.kernel @@ -50,7 +39,7 @@ def common_pool_extender(op: Node): dim = len(op.pads_begin) - assert dim in (2, 3), '{}D {} not supported!'.format(dim, op.op) + assert dim in (1, 2, 3), '{}D {} not supported! Node name: {}'.format(dim, op.soft_get('type'), op.soft_get('name', op.id)) pad = [[0, 0], [0, 0]] pad.extend([[op.pads_begin[i], op.pads_end[i]] for i in range(dim)]) diff --git a/model-optimizer/mo/utils/ir_reader/extenders/priorbox_clustered_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/priorbox_clustered_extender.py index c259f98b22c05c..329fa0bf40ecdf 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/priorbox_clustered_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/priorbox_clustered_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/priorbox_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/priorbox_extender.py index 2bb34d25ec8de8..d3148933d1d546 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/priorbox_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/priorbox_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.multi_box_prior import multi_box_prior_infer_mxnet from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/range_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/range_extender.py index fc21669b28ed02..5f2fa1cb9129d7 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/range_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/range_extender.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/reorg_yolo_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/reorg_yolo_extender.py index d4a05244f726a4..83e5e05caed4b1 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/reorg_yolo_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/reorg_yolo_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/shape_of_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/shape_of_extender.py index a1099816fc5a37..df7c70c9b4de9d 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/shape_of_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/shape_of_extender.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node diff --git a/model-optimizer/mo/utils/ir_reader/extenders/strided_slice_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/strided_slice_extender.py index ec82049ad679fe..6b08f2ab7f2cf8 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/strided_slice_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/strided_slice_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.front.common.partial_infer.utils import int64_array from mo.ops.strided_slice import StridedSlice diff --git a/model-optimizer/mo/utils/ir_reader/extenders/tensoriterator_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/tensoriterator_extender.py index ef18451c8178a2..6a65d5eef93500 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/tensoriterator_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/tensoriterator_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/extenders/topk_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/topk_extender.py index a413ed5854321b..d9b96975a8152c 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/topk_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/topk_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.middle.passes.convert_data_type import destination_type_to_np_data_type from mo.utils.graph import Node @@ -24,7 +11,7 @@ class TopKExtender(Extender): @staticmethod def extend(op: Node): - if op.graph.graph['cmd_params'].framework in ('tf', 'caffe'): + if op.out_port(0).disconnected(): op['remove_values_output'] = True if op.has_valid('index_element_type'): op['index_element_type'] = destination_type_to_np_data_type(op.index_element_type) diff --git a/model-optimizer/mo/utils/ir_reader/extenders/variadic_split_extender.py b/model-optimizer/mo/utils/ir_reader/extenders/variadic_split_extender.py index cd80d0dc1a95af..8588ad71a1d17a 100644 --- a/model-optimizer/mo/utils/ir_reader/extenders/variadic_split_extender.py +++ b/model-optimizer/mo/utils/ir_reader/extenders/variadic_split_extender.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.utils.graph import Node from mo.utils.ir_reader.extender import Extender diff --git a/model-optimizer/mo/utils/ir_reader/layer_to_class.py b/model-optimizer/mo/utils/ir_reader/layer_to_class.py index b027f5fab37b5e..36bae0358e740e 100644 --- a/model-optimizer/mo/utils/ir_reader/layer_to_class.py +++ b/model-optimizer/mo/utils/ir_reader/layer_to_class.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import os @@ -169,7 +156,14 @@ def propagate_const_values(op: Node): op['shape'] = out_data_node.shape # Reshape data node value for correct shape - op['value'] = np.reshape(value, op.shape) + if op['element_type'] in ['u4', 'i4']: + # Packed data types are custom from numpy perspective. + # Shape from the IR is incompatible with numpy value we store. + op['value'] = value + op['force_type'] = op['element_type'].upper() + op['force_shape'] = op.shape.copy() + else: + op['value'] = np.reshape(value, op.shape) def groupconv_to_conv(op: Node): @@ -281,6 +275,35 @@ def copy_input_blobs(op: Node, copy_op: Node): } +def restore_tensor_names(op: Node): + for out_port in op.ports: + # op.ports is our internal attribute, dictionary, where keys are numbers of output ports + # and values are tuples with shape and tensor name: + # {out_port_idx_1: (out_port_idx_1_shape, out_port_idx_1_tensor_name), + # out_port_idx_2: (out_port_idx_2_shape, out_port_idx_2_tensor_name)} + out_tensor_names = op.ports[out_port][1] + + # handle Constant operations with old style output port numbering + if op.soft_get('type') == 'Const': + assert len(op.ports) == 1, 'Something wrong with Constant node: {}, wrong number ' \ + 'of output ports: {}!'.format(op.soft_get('name'), len(op.ports)) + out_port = 0 + + out_port = out_port - len(op.in_nodes()) + + if out_tensor_names is not None: + # handle tensor names with commas and add them to dictionary as separate items + if out_tensor_names.find(',') >= 0: + str_to_replace = '' + out_tensor_names = (out_tensor_names.replace('\\,', str_to_replace)).split(',') + op.out_node(out_port)['fw_tensor_debug_info'] = [] + for out_tensor_name in out_tensor_names: + out_tensor_name = out_tensor_name.replace(str_to_replace, ',') + op.out_node(out_port)['fw_tensor_debug_info'].append((out_tensor_name, out_port, out_tensor_name)) + else: + op.out_node(out_port)['fw_tensor_debug_info'] = [(out_tensor_names, out_port, out_tensor_names)] + + def copy_graph_with_ops(graph: Graph) -> Graph: """ Function to copy graph and apply extenders to appropriate nodes @@ -342,6 +365,9 @@ def copy_graph_with_ops(graph: Graph) -> Graph: # Nodes postprocessing stage in new graph for op in new_graph.get_op_nodes(): + restore_tensor_names(op) + + # operations postprocessing with some special types if op.soft_get('type') in postprocessing_op_nodes: postprocessing_op_nodes[op.type](op) diff --git a/model-optimizer/mo/utils/ir_reader/layer_to_class_test.py b/model-optimizer/mo/utils/ir_reader/layer_to_class_test.py index 06bcec1c596763..123b2ba2e95b9c 100644 --- a/model-optimizer/mo/utils/ir_reader/layer_to_class_test.py +++ b/model-optimizer/mo/utils/ir_reader/layer_to_class_test.py @@ -1,18 +1,5 @@ -""" - Copyright (c) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest @@ -21,7 +8,7 @@ from mo.graph.graph import Node from mo.utils.ir_engine.compare_graphs import compare_graphs -from mo.utils.ir_reader.layer_to_class import groupconv_to_conv +from mo.utils.ir_reader.layer_to_class import groupconv_to_conv, restore_tensor_names from mo.utils.unittest.graph import build_graph @@ -107,3 +94,39 @@ def test_groupconv_to_conv(self, shape, weights_shape, reshape_shape, group): (flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True) self.assertTrue(flag, resp) + + def test_restore_tensor_names(self): + + shape = [1, 3, 224, 224] + + nodes_attributes = { + 'input': {'kind': 'op', 'type': 'Parameter', 'ports': {0: (shape, 'abc,def')}}, + 'input_data': {'shape': shape, 'kind': 'data'}, + 'add': {'kind': 'op', 'type': 'Add', 'ports': {2: (shape, 'ghi\,jkl')}}, + 'add_data': {'shape': shape, 'kind': 'data'}, + 'add_const': {'kind': 'op', 'type': 'Const', 'ports': {0: (shape, 'mno,pqr\,stu')}}, + 'add_const_data': {'shape': shape, 'kind': 'data'}, + 'result': {'kind': 'op', 'type': 'Result', 'ports': {0: (shape, None)}} + } + + edges = [('input', 'input_data'), + ('input_data', 'add'), + ('add_const', 'add_const_data'), + ('add_const_data', 'add'), + ('add', 'add_data'), + ('add_data', 'result'), + ] + + graph = build_graph(nodes_attributes, edges, nodes_with_edges_only=True) + + for op in graph.get_op_nodes(): + restore_tensor_names(op) + + node_1 = Node(graph, 'input_data') + node_2 = Node(graph, 'add_data') + node_3 = Node(graph, 'add_const_data') + + assert node_1['fw_tensor_debug_info'] == [('abc', 0, 'abc'), ('def', 0, 'def')], 'Restored debug info is wrong!' + assert node_2['fw_tensor_debug_info'] == [('ghi,jkl', 0, 'ghi,jkl')], 'Restored debug info is wrong!' + assert node_3['fw_tensor_debug_info'] == [('mno', 0, 'mno'), ('pqr,stu', 0, 'pqr,stu')],\ + 'Restored debug info is wrong!' diff --git a/model-optimizer/mo/utils/ir_reader/restore_graph.py b/model-optimizer/mo/utils/ir_reader/restore_graph.py index 80ddf092ee0086..9f1c8e0e9e9eb5 100644 --- a/model-optimizer/mo/utils/ir_reader/restore_graph.py +++ b/model-optimizer/mo/utils/ir_reader/restore_graph.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from copy import copy @@ -30,6 +17,7 @@ from mo.utils.ir_engine.ir_engine import IREngine from mo.utils.ir_reader.layer_to_class import copy_graph_with_ops, collect_extenders, collect_ops from mo.utils.utils import get_mo_root_dir +from extensions.back.MarkNodesWithShapeValues import MarkNodesWithShapeValues def restore_graph_from_ir(path_to_xml: str, path_to_bin: str = None) -> (Graph, dict): @@ -77,6 +65,7 @@ def save_restored_graph(graph: Graph, path: str, meta_data, name=None): BlobNormalizer, ConvolutionNormalizer, KaldiRemoveMemoryOutputBackReplacementPattern, + MarkNodesWithShapeValues, ] # We need to run some specific passes from MO back stage. diff --git a/model-optimizer/mo/utils/logger.py b/model-optimizer/mo/utils/logger.py index d4510b2cb84964..4e740071d95bc9 100644 --- a/model-optimizer/mo/utils/logger.py +++ b/model-optimizer/mo/utils/logger.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import importlib.util import logging as log diff --git a/model-optimizer/mo/utils/model_analysis.py b/model-optimizer/mo/utils/model_analysis.py index 053c3d6bcd7060..2049f8b41ece63 100644 --- a/model-optimizer/mo/utils/model_analysis.py +++ b/model-optimizer/mo/utils/model_analysis.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import sys from extensions.front.user_data_repack import UserDataRepack diff --git a/model-optimizer/mo/utils/pipeline_config.py b/model-optimizer/mo/utils/pipeline_config.py index 536b06020b7819..4f24034175ea9b 100644 --- a/model-optimizer/mo/utils/pipeline_config.py +++ b/model-optimizer/mo/utils/pipeline_config.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import logging as log import re @@ -32,6 +20,7 @@ ('resizer_image_width', 'image_resizer/fixed_shape_resizer/width'), ('resizer_min_dimension', 'image_resizer/keep_aspect_ratio_resizer/min_dimension'), ('resizer_max_dimension', 'image_resizer/keep_aspect_ratio_resizer/max_dimension'), + ('pad_to_max_dimension', 'image_resizer/keep_aspect_ratio_resizer/pad_to_max_dimension', False), # anchor generator attributes ('anchor_generator_height', 'first_stage_anchor_generator/grid_anchor_generator/height$', 256), ('anchor_generator_width', 'first_stage_anchor_generator/grid_anchor_generator/width$', 256), diff --git a/model-optimizer/mo/utils/pipeline_config_test.py b/model-optimizer/mo/utils/pipeline_config_test.py index 4f415d4ff82190..8e525464b43c66 100644 --- a/model-optimizer/mo/utils/pipeline_config_test.py +++ b/model-optimizer/mo/utils/pipeline_config_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os import tempfile @@ -151,6 +138,7 @@ def test_pipeline_config_existing_file(self): 'use_matmul_crop_and_resize': False, 'add_background_class': True, 'share_box_across_classes': False, + 'pad_to_max_dimension': False, } os.unlink(file_name) self.assertDictEqual(pipeline_config._model_params, expected_result) diff --git a/model-optimizer/mo/utils/replacement_pattern.py b/model-optimizer/mo/utils/replacement_pattern.py index 59948f7aad9452..a38ef3f12344dd 100644 --- a/model-optimizer/mo/utils/replacement_pattern.py +++ b/model-optimizer/mo/utils/replacement_pattern.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from mo.graph.graph import Graph from mo.middle.pattern_match import apply_pattern diff --git a/model-optimizer/mo/utils/shape.py b/model-optimizer/mo/utils/shape.py index 4329eabb6af8cb..5eddacdc0fded6 100644 --- a/model-optimizer/mo/utils/shape.py +++ b/model-optimizer/mo/utils/shape.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from extensions.ops.elementwise import Add from extensions.ops.gather import Gather diff --git a/model-optimizer/mo/utils/simple_proto_parser.py b/model-optimizer/mo/utils/simple_proto_parser.py index 192d5afbdcca47..3d5d5de1da401b 100644 --- a/model-optimizer/mo/utils/simple_proto_parser.py +++ b/model-optimizer/mo/utils/simple_proto_parser.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import ast import logging as log diff --git a/model-optimizer/mo/utils/simple_proto_parser_test.py b/model-optimizer/mo/utils/simple_proto_parser_test.py index 7077621baa92d5..b68bec9f4cf31c 100644 --- a/model-optimizer/mo/utils/simple_proto_parser_test.py +++ b/model-optimizer/mo/utils/simple_proto_parser_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os import sys diff --git a/model-optimizer/mo/utils/str_to.py b/model-optimizer/mo/utils/str_to.py index ede09dc282df2d..57df16e9fed204 100644 --- a/model-optimizer/mo/utils/str_to.py +++ b/model-optimizer/mo/utils/str_to.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 class StrTo(object): diff --git a/model-optimizer/mo/utils/summarize_graph.py b/model-optimizer/mo/utils/summarize_graph.py index 3c041519042764..2a652ba3a76ad2 100644 --- a/model-optimizer/mo/utils/summarize_graph.py +++ b/model-optimizer/mo/utils/summarize_graph.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import argparse import os diff --git a/model-optimizer/mo/utils/summarize_graph_test.py b/model-optimizer/mo/utils/summarize_graph_test.py index a28a4a43ddf4e3..1901d18b4683fa 100644 --- a/model-optimizer/mo/utils/summarize_graph_test.py +++ b/model-optimizer/mo/utils/summarize_graph_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch, mock_open diff --git a/model-optimizer/mo/utils/tensorboard_util.py b/model-optimizer/mo/utils/tensorboard_util.py index a1cc43a6a2b37b..2493d14cf1a2ab 100644 --- a/model-optimizer/mo/utils/tensorboard_util.py +++ b/model-optimizer/mo/utils/tensorboard_util.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 try: import tensorflow.compat.v1 as tf_v1 diff --git a/model-optimizer/mo/utils/unittest/extractors.py b/model-optimizer/mo/utils/unittest/extractors.py index 14afd44757bf04..aeade1625b3af2 100644 --- a/model-optimizer/mo/utils/unittest/extractors.py +++ b/model-optimizer/mo/utils/unittest/extractors.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest from unittest.mock import patch diff --git a/model-optimizer/mo/utils/unittest/graph.py b/model-optimizer/mo/utils/unittest/graph.py index 21bb0a9b1606ef..c09abb0e208116 100644 --- a/model-optimizer/mo/utils/unittest/graph.py +++ b/model-optimizer/mo/utils/unittest/graph.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from argparse import Namespace from copy import deepcopy @@ -359,7 +347,7 @@ def connect(first_tensor_name, second_tensor_name, skip_data=False, front_phase= second_op_name, in_port = get_name_and_port(second_tensor_name) if skip_data: - return [(first_op_name + '_d', second_op_name, {'in': in_port})] + return [(first_op_name + '_d', second_op_name, {'out': out_port, 'in': in_port})] if front_phase: return [(first_op_name, second_op_name, {'out': out_port, 'in': in_port})] return [ diff --git a/model-optimizer/mo/utils/unsupported_ops.py b/model-optimizer/mo/utils/unsupported_ops.py index 0f2d9eaf03ce65..1f0f27a57e262c 100644 --- a/model-optimizer/mo/utils/unsupported_ops.py +++ b/model-optimizer/mo/utils/unsupported_ops.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import collections diff --git a/model-optimizer/mo/utils/utils.py b/model-optimizer/mo/utils/utils.py index 71b4c30215f42c..2a4327e32674bb 100644 --- a/model-optimizer/mo/utils/utils.py +++ b/model-optimizer/mo/utils/utils.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import functools import os import re diff --git a/model-optimizer/mo/utils/utils_test.py b/model-optimizer/mo/utils/utils_test.py index 661244b4900869..afc493adfc35f9 100644 --- a/model-optimizer/mo/utils/utils_test.py +++ b/model-optimizer/mo/utils/utils_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest diff --git a/model-optimizer/mo/utils/version.py b/model-optimizer/mo/utils/version.py index 92b8e7726f48e3..6dfbdec286f38c 100644 --- a/model-optimizer/mo/utils/version.py +++ b/model-optimizer/mo/utils/version.py @@ -1,25 +1,71 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - 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 +import os +import re +import sys +import subprocess - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" -import os +def get_version_file_path(): + return os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir, os.pardir, "version.txt") + + +def generate_mo_version(): + """ + Function generates version like in cmake + custom_{branch_name}_{commit_hash} + """ + try: + branch_name = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"]).strip().decode() + commit_hash = subprocess.check_output(["git", "rev-parse", "HEAD"]).strip().decode() + return "custom_{}_{}".format(branch_name, commit_hash) + except Exception as e: + return "unknown version" def get_version(): - version_txt = os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir, os.pardir, "version.txt") + version_txt = get_version_file_path() if not os.path.isfile(version_txt): - return "unknown version" + return generate_mo_version() with open(version_txt) as f: version = f.readline().replace('\n', '') return version + + +def extract_release_version(version: str): + patterns = [ + # captures release version set by CI for example: '2021.1.0-1028-55e4d5673a8' + r"^([0-9]+).([0-9]+)*", + # captures release version generated by MO from release branch, for example: 'custom_releases/2021/1_55e4d567' + r"_releases/([0-9]+)/([0-9]+)_*" + ] + + for pattern in patterns: + m = re.search(pattern, version) + if m and len(m.groups()) == 2: + return m.group(1), m.group(2) + return None, None + + +def simplify_version(version: str): + release_version = extract_release_version(version) + if release_version == (None, None): + return "custom" + return "{}.{}".format(*release_version) + + +def get_simplified_mo_version(): + return simplify_version(get_version()) + + +def get_simplified_ie_version(env=dict(), version=None): + if version is None: + try: + version = subprocess.check_output([sys.executable, os.path.join(os.path.dirname(__file__), "ie_version.py")], timeout=2, env=env).strip().decode() + except: + return "ie not found" + m = re.match(r"^([0-9]+).([0-9]+).(.*)", version) + if m and len(m.groups()) == 3: + return simplify_version(m.group(3)) + return "custom" diff --git a/model-optimizer/mo/utils/version_test.py b/model-optimizer/mo/utils/version_test.py index d53254c1a47ed8..cf7cdeb069a443 100644 --- a/model-optimizer/mo/utils/version_test.py +++ b/model-optimizer/mo/utils/version_test.py @@ -1,25 +1,12 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import unittest.mock as mock from unittest.mock import mock_open from unittest.mock import patch -from mo.utils.version import get_version +from mo.utils.version import get_version, extract_release_version, get_simplified_ie_version, get_simplified_mo_version class TestingVersion(unittest.TestCase): @@ -29,3 +16,47 @@ def test_get_version(self, mock_open, mock_isfile): mock_isfile.return_value = True mock_open.return_value.__enter__ = mock_open self.assertEqual(get_version(), '2021.1.0-1028-55e4d5673a8') + + @patch('os.path.isfile') + @mock.patch('builtins.open', new_callable=mock_open, create=True, read_data='2021.1.0-1028-55e4d5673a8') + def test_release_version_extractor(self, mock_open, mock_isfile): + mock_isfile.return_value = True + mock_open.return_value.__enter__ = mock_open + self.assertEqual(extract_release_version(get_version()), ('2021', '1')) + + @patch('os.path.isfile') + @mock.patch('builtins.open', new_callable=mock_open, create=True, read_data='custom_releases/2021/1_55e4d5673a8') + def test_custom_release_version_extractor(self, mock_open, mock_isfile): + mock_isfile.return_value = True + mock_open.return_value.__enter__ = mock_open + self.assertEqual(extract_release_version(get_version()), ('2021', '1')) + + @patch('os.path.isfile') + @mock.patch('builtins.open', new_callable=mock_open, create=True, read_data='custom_my_branch/fix_55e4d5673a8') + def test_release_version_extractor_neg(self, mock_open, mock_isfile): + mock_isfile.return_value = True + mock_open.return_value.__enter__ = mock_open + self.assertEqual(extract_release_version(get_version()), (None, None)) + + @patch('os.path.isfile') + @mock.patch('builtins.open', new_callable=mock_open, create=True, read_data='custom_releases/2021/1_55e4d5673a8') + def test_simplify_mo_version_release(self, mock_open, mock_isfile): + mock_isfile.return_value = True + mock_open.return_value.__enter__ = mock_open + self.assertEqual(get_simplified_mo_version(), "2021.1") + + @patch('os.path.isfile') + @mock.patch('builtins.open', new_callable=mock_open, create=True, read_data='custom_my_branch/fix_55e4d5673a8') + def test_simplify_mo_version_custom(self, mock_open, mock_isfile): + mock_isfile.return_value = True + mock_open.return_value.__enter__ = mock_open + self.assertEqual(get_simplified_mo_version(), "custom") + + def test_simplify_ie_version_release(self): + self.assertEqual(get_simplified_ie_version(version="2.1.custom_releases/2021/3_4c8eae"), "2021.3") + + def test_simplify_ie_version_release_neg(self): + self.assertEqual(get_simplified_ie_version(version="custom_releases/2021/3_4c8eae"), "custom") + + def test_simplify_ie_version_custom(self): + self.assertEqual(get_simplified_ie_version(version="2.1.custom_my/branch/3_4c8eae"), "custom") \ No newline at end of file diff --git a/model-optimizer/mo/utils/versions_checker.py b/model-optimizer/mo/utils/versions_checker.py index 03388e4c423c03..cb4768b3a6734e 100644 --- a/model-optimizer/mo/utils/versions_checker.py +++ b/model-optimizer/mo/utils/versions_checker.py @@ -1,19 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging as log import os diff --git a/model-optimizer/mo/utils/versions_checker_test.py b/model-optimizer/mo/utils/versions_checker_test.py index 35346d8fba4ac2..5c83d8ecd60b69 100644 --- a/model-optimizer/mo/utils/versions_checker_test.py +++ b/model-optimizer/mo/utils/versions_checker_test.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import unittest import unittest.mock as mock diff --git a/model-optimizer/mo_caffe.py b/model-optimizer/mo_caffe.py index dc060b23945fe9..83cfd28b96afdf 100755 --- a/model-optimizer/mo_caffe.py +++ b/model-optimizer/mo_caffe.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys diff --git a/model-optimizer/mo_kaldi.py b/model-optimizer/mo_kaldi.py index 97f024dfbd4612..f6e4ca223f4696 100755 --- a/model-optimizer/mo_kaldi.py +++ b/model-optimizer/mo_kaldi.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys diff --git a/model-optimizer/mo_mxnet.py b/model-optimizer/mo_mxnet.py index 416ed73f34531f..757debbcc06217 100755 --- a/model-optimizer/mo_mxnet.py +++ b/model-optimizer/mo_mxnet.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys diff --git a/model-optimizer/mo_onnx.py b/model-optimizer/mo_onnx.py index 1eaedf05b71e82..92701d5f2066e1 100755 --- a/model-optimizer/mo_onnx.py +++ b/model-optimizer/mo_onnx.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys diff --git a/model-optimizer/mo_tf.py b/model-optimizer/mo_tf.py index 84b72ee4b319e7..e352958f771474 100755 --- a/model-optimizer/mo_tf.py +++ b/model-optimizer/mo_tf.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import sys diff --git a/model-optimizer/setup.py b/model-optimizer/setup.py index 7ea21f04ee72aa..4589eec79ff50c 100644 --- a/model-optimizer/setup.py +++ b/model-optimizer/setup.py @@ -1,20 +1,7 @@ #!/usr/bin/env python3 -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """ Use this script to create a wheel with Model Optimizer code: @@ -28,6 +15,7 @@ from setuptools import setup, find_packages from setuptools.command.install import install from setuptools.command.build_py import build_py +from shutil import copyfile package_name = 'mo' @@ -37,7 +25,7 @@ for name in os.listdir(): if re.match('requirements(.*)\.txt', name): requirements_txt.append(name) - if re.match('mo_(.*)\.py', name): + if re.match('mo(.*)\.py', name): py_modules.append(name.split('.')[0]) # Minimal set of dependencies @@ -57,6 +45,11 @@ def run(self): path = os.path.join(self.install_purelib, package_name, name) with open(path, 'wt') as f: f.write('\n'.join(deps)) + # Add version.txt if exists + version_txt = 'version.txt' + if os.path.exists(version_txt): + copyfile(os.path.join(version_txt), + os.path.join(self.install_purelib, package_name, version_txt)) path = os.path.join(self.install_purelib, package_name, '__init__.py') with open(path, 'wt') as f: diff --git a/model-optimizer/telemetry/__init__.py b/model-optimizer/telemetry/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/telemetry/__init__.py +++ b/model-optimizer/telemetry/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/telemetry/backend/__init__.py b/model-optimizer/telemetry/backend/__init__.py index 122fe99d313a84..5c55dd8fdf24b0 100644 --- a/model-optimizer/telemetry/backend/__init__.py +++ b/model-optimizer/telemetry/backend/__init__.py @@ -1 +1,4 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from .backend_ga import * diff --git a/model-optimizer/telemetry/backend/backend.py b/model-optimizer/telemetry/backend/backend.py index 7d88595d1976f0..6761fca53d4b1c 100644 --- a/model-optimizer/telemetry/backend/backend.py +++ b/model-optimizer/telemetry/backend/backend.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import abc diff --git a/model-optimizer/telemetry/backend/backend_ga.py b/model-optimizer/telemetry/backend/backend_ga.py index 95949e07b57333..6b4c015d9dce85 100644 --- a/model-optimizer/telemetry/backend/backend_ga.py +++ b/model-optimizer/telemetry/backend/backend_ga.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import uuid from telemetry.backend.backend import TelemetryBackend diff --git a/model-optimizer/telemetry/telemetry.py b/model-optimizer/telemetry/telemetry.py index 4be718c1063766..ef882683f80359 100644 --- a/model-optimizer/telemetry/telemetry.py +++ b/model-optimizer/telemetry/telemetry.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import telemetry.utils.isip as isip from telemetry.backend.backend import BackendRegistry diff --git a/model-optimizer/telemetry/utils/__init__.py b/model-optimizer/telemetry/utils/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/model-optimizer/telemetry/utils/__init__.py +++ b/model-optimizer/telemetry/utils/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/model-optimizer/telemetry/utils/guid.py b/model-optimizer/telemetry/utils/guid.py index ba75c74baeaaf2..8bc765365ae2dd 100644 --- a/model-optimizer/telemetry/utils/guid.py +++ b/model-optimizer/telemetry/utils/guid.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os from platform import system diff --git a/model-optimizer/telemetry/utils/isip.py b/model-optimizer/telemetry/utils/isip.py index d9325493f5d84b..9475ce381face8 100644 --- a/model-optimizer/telemetry/utils/isip.py +++ b/model-optimizer/telemetry/utils/isip.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import os from enum import Enum from platform import system diff --git a/model-optimizer/telemetry/utils/message.py b/model-optimizer/telemetry/utils/message.py index ea4e7bd2f7878c..a6ea1b4f643c4b 100644 --- a/model-optimizer/telemetry/utils/message.py +++ b/model-optimizer/telemetry/utils/message.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2017-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from enum import Enum diff --git a/model-optimizer/telemetry/utils/sender.py b/model-optimizer/telemetry/utils/sender.py index d2338c6e03cec4..f3f456ce4de2eb 100644 --- a/model-optimizer/telemetry/utils/sender.py +++ b/model-optimizer/telemetry/utils/sender.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import threading from concurrent import futures from time import sleep @@ -34,13 +22,18 @@ def _future_callback(future): with self._lock: self.queue_size -= 1 + free_space = False with self._lock: if self.queue_size < MAX_QUEUE_SIZE: - fut = self.executor.submit(backend.send, message) - fut.add_done_callback(_future_callback) + free_space = True self.queue_size += 1 else: pass # dropping a message because the queue is full + # to avoid dead lock we should not add callback inside the "with self._lock" block because it will be executed + # immediately if the fut is available + if free_space: + fut = self.executor.submit(backend.send, message) + fut.add_done_callback(_future_callback) def force_shutdown(self, timeout: float): """ @@ -53,11 +46,14 @@ def force_shutdown(self, timeout: float): :return: None """ try: + need_sleep = False with self._lock: if self.queue_size > 0: - sleep(timeout) - self.executor.shutdown(wait=False) - self.executor._threads.clear() - futures.thread._threads_queues.clear() + need_sleep = True + if need_sleep: + sleep(timeout) + self.executor.shutdown(wait=False) + self.executor._threads.clear() + futures.thread._threads_queues.clear() except Exception: pass diff --git a/model-optimizer/telemetry/utils/sender_test.py b/model-optimizer/telemetry/utils/sender_test.py new file mode 100644 index 00000000000000..4dca81e3f27349 --- /dev/null +++ b/model-optimizer/telemetry/utils/sender_test.py @@ -0,0 +1,68 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import unittest +import time + +from telemetry.utils.sender import TelemetrySender + + +class FakeTelemetryBackend: + def send(self, param): + pass + + +class FakeTelemetryBackendWithSleep: + def send(self, param): + time.sleep(1) + + +class TelemetrySenderStress(unittest.TestCase): + def test_stress(self): + """ + Stress tests to schedule a lot of threads which works super fast (do nothing) with sending messages." + """ + tm = TelemetrySender() + fake_backend = FakeTelemetryBackend() + for _ in range(1000000): + tm.send(fake_backend, None) + + def test_check_shutdown(self): + """ + Stress test to schedule many threads taking 1 second and then ask to force shutdown. Make sure that the elapsed + time is small. + """ + tm = TelemetrySender() + fake_backend = FakeTelemetryBackendWithSleep() + # schedule many requests which just wait 1 second + for _ in range(100000): + tm.send(fake_backend, None) + + start_time = time.time() + # ask to shutdown with timeout of 1 second + tm.force_shutdown(1) + while len(tm.executor._threads): + pass + # check that no more than 3 seconds spent + self.assertTrue(time.time() - start_time < 3) + + def test_check_shutdown_negative(self): + """ + Test to check that without forcing shutdown total execution time is expected. + """ + tm = TelemetrySender(1) # only one worker thread + fake_backend = FakeTelemetryBackendWithSleep() + start_time = time.time() + # schedule 5 requests which totally should work more than 4 seconds + for _ in range(5): + tm.send(fake_backend, None) + + try: + # wait until all threads finish their work. We use internal ThreadPoolExecutor attribute _work_queue to make + # sure that all workers completed their work, so the whole code is wrapped to try/except to avoid exceptions + # if internal implementation is changed in the future + while tm.executor._work_queue.qsize(): + pass + self.assertTrue(time.time() - start_time > 4.0) + except: + pass diff --git a/ngraph/.clang-format b/ngraph/.clang-format index 99fc12f6fac865..e9f0ba3c121b15 100644 --- a/ngraph/.clang-format +++ b/ngraph/.clang-format @@ -50,3 +50,5 @@ IncludeCategories: - Regex: '^<.*' Priority: 2 SortIncludes: true + +FixNamespaceComments: false diff --git a/ngraph/ABOUT.md b/ngraph/ABOUT.md deleted file mode 100644 index 37c7e06db905da..00000000000000 --- a/ngraph/ABOUT.md +++ /dev/null @@ -1,46 +0,0 @@ -About nGraph Compiler stack -=========================== - -## Bridge - -Starting from the top of the stack, nGraph receives a computational graph -from a deep learning framework such as TensorFlow or MXNet. The -computational graph is converted to an nGraph internal representation -by a bridge created for the corresponding framework. - -An nGraph bridge examines the whole graph to pattern match subgraphs -which nGraph knows how to execute, and these subgraphs are encapsulated. -Parts of the graph that are not encapsulated will default to framework -implementation when executed. - - -## nGraph Core - -nGraph uses a strongly-typed and platform-neutral -`Intermediate Representation (IR)` to construct a "stateless" -computational graph. Each node, or op, in the graph corresponds to -one `step` in a computation, where each step produces zero or -more tensor outputs from zero or more tensor inputs. - -This allows nGraph to apply its state of the art optimizations instead -of having to follow how a particular framework implements op execution, -memory management, data layouts, etc. - -In addition, using nGraph IR allows faster optimization delivery -for many of the supported frameworks. For example, if nGraph optimizes -ResNet for TensorFlow, the same optimization can be readily applied -to MXNet* or ONNX* implementations of ResNet. - - -Features --------- - -nGraph performs a combination of device-specific and -non-device-specific optimizations: - -- **Fusion** -- Fuse multiple ops to to decrease memory usage. -- **Data layout abstraction** -- Make abstraction easier and faster - with nGraph translating element order to work best for a given or - available device. -- **Data reuse** -- Save results and reuse for subgraphs with the - same input. diff --git a/ngraph/CMakeLists.txt b/ngraph/CMakeLists.txt index 6163c01e4a719a..7bfba968d03ad2 100644 --- a/ngraph/CMakeLists.txt +++ b/ngraph/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** include(cmake/Modules/git_tags.cmake) @@ -87,7 +75,6 @@ if (APPLE) endif() option(NGRAPH_UNIT_TEST_ENABLE "Control the building of unit tests" ON) -option(NGRAPH_TEST_UTIL_ENABLE "Control the building of test utility" ON) option(NGRAPH_INTERPRETER_ENABLE "Control the building of the INTERPRETER backend" ON) option(NGRAPH_DEBUG_ENABLE "Enable output for NGRAPH_DEBUG statements" OFF) option(NGRAPH_ONNX_IMPORT_ENABLE "Enable ONNX importer" OFF) @@ -105,13 +92,6 @@ if (NGRAPH_ONNX_IMPORT_ENABLE) option(NGRAPH_USE_SYSTEM_PROTOBUF "Use system provided Protobuf shared object" OFF) endif() -if (NGRAPH_UNIT_TEST_ENABLE) - if (NOT NGRAPH_TEST_UTIL_ENABLE) - message(WARNING "Unit test needs test util: Turning NGRAPH_TEST_UTIL_ENABLE ON!") - set(NGRAPH_TEST_UTIL_ENABLE ON) - endif() -endif() - message(STATUS "NGRAPH_ADDRESS_SANITIZER_ENABLE: ${NGRAPH_ADDRESS_SANITIZER_ENABLE}") message(STATUS "NGRAPH_DEBUG_ENABLE: ${NGRAPH_DEBUG_ENABLE}") message(STATUS "NGRAPH_DYNAMIC_COMPONENTS_ENABLE: ${NGRAPH_DYNAMIC_COMPONENTS_ENABLE}") @@ -120,7 +100,6 @@ message(STATUS "NGRAPH_INTERPRETER_ENABLE: ${NGRAPH_INTERPRETER_ENABL message(STATUS "NGRAPH_LIB_VERSIONING_ENABLE: ${NGRAPH_LIB_VERSIONING_ENABLE}") message(STATUS "NGRAPH_ONNX_IMPORT_ENABLE: ${NGRAPH_ONNX_IMPORT_ENABLE}") message(STATUS "NGRAPH_PYTHON_BUILD_ENABLE: ${NGRAPH_PYTHON_BUILD_ENABLE}") -message(STATUS "NGRAPH_TEST_UTIL_ENABLE: ${NGRAPH_TEST_UTIL_ENABLE}") message(STATUS "NGRAPH_THREAD_SANITIZER_ENABLE: ${NGRAPH_THREAD_SANITIZER_ENABLE}") message(STATUS "NGRAPH_TOOLS_ENABLE: ${NGRAPH_TOOLS_ENABLE}") message(STATUS "NGRAPH_UB_SANITIZER_ENABLE: ${NGRAPH_UB_SANITIZER_ENABLE}") @@ -165,6 +144,14 @@ if (NOT MSVC) endif() message(STATUS "NGRAPH_FORWARD_CMAKE_ARGS ${NGRAPH_FORWARD_CMAKE_ARGS}") +#----------------------------------------------------------------------------------------------- +# Coverage +#----------------------------------------------------------------------------------------------- + +if(ENABLE_COVERAGE) + include(cmake/coverage.cmake) +endif() + #----------------------------------------------------------------------------------------------- # Installation logic... #----------------------------------------------------------------------------------------------- @@ -185,10 +172,10 @@ endif() message(STATUS "Installation directory: ${CMAKE_INSTALL_PREFIX}") # Destinations -set(NGRAPH_INSTALL_LIB "${NGRAPH_COMPONENT_PREFIX}${CMAKE_INSTALL_LIBDIR}") -set(NGRAPH_INSTALL_INCLUDE "${NGRAPH_COMPONENT_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}") -set(NGRAPH_INSTALL_DOC "${NGRAPH_COMPONENT_PREFIX}${CMAKE_INSTALL_DOCDIR}") -set(NGRAPH_INSTALL_BIN "${NGRAPH_COMPONENT_PREFIX}${CMAKE_INSTALL_BINDIR}") +set(NGRAPH_INSTALL_LIB "deployment_tools/ngraph/${CMAKE_INSTALL_LIBDIR}") +set(NGRAPH_INSTALL_INCLUDE "deployment_tools/ngraph/${CMAKE_INSTALL_INCLUDEDIR}") +set(NGRAPH_INSTALL_DOC "deployment_tools/ngraph/${CMAKE_INSTALL_DOCDIR}") +set(NGRAPH_INSTALL_BIN "deployment_tools/ngraph/${CMAKE_INSTALL_BINDIR}") if (LINUX) if (DEFINED NGRAPH_RPATH) @@ -254,45 +241,6 @@ if(NGRAPH_ADDRESS_SANITIZER_ENABLE OR NGRAPH_THREAD_SANITIZER_ENABLE OR NGRAPH_U set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -g -fno-omit-frame-pointer") endif() -# Since UNIX support Bash we can use a Bash script to do the clang-format functions -# This is much faster than the cmake method -if (UNIX) - add_custom_target(style-check COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/maint/check-code-format.sh) - add_custom_target(style-apply COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/maint/apply-code-format.sh) - add_custom_target(style COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/maint/apply-code-format.sh) -else() - add_custom_target(style-check - COMMAND ${CMAKE_COMMAND} - -DNGRAPH_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/style_check.cmake - ) - - add_custom_target(style-apply - COMMAND ${CMAKE_COMMAND} - -DNGRAPH_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/style_apply.cmake - ) - - add_custom_target(style - COMMAND ${CMAKE_COMMAND} - -DNGRAPH_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/style_apply.cmake - ) -endif() - -add_custom_target(fix-mode - COMMAND ${CMAKE_COMMAND} - -DNGRAPH_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/fix_mode.cmake -) - -#----------------------------------------------------------------------------------------------- -# enable or disable output from NGRAPH_DEBUG statements -#----------------------------------------------------------------------------------------------- -if(NGRAPH_DEBUG_ENABLE) - add_definitions(-DNGRAPH_DEBUG_ENABLE) -endif() - add_definitions(-DPROJECT_ROOT_DIR="${CMAKE_CURRENT_SOURCE_DIR}") #----------------------------------------------------------------------------------------------- @@ -313,6 +261,35 @@ if(NOT DEFINED EXTERNAL_PROJECTS_ROOT) set(EXTERNAL_PROJECTS_ROOT ${CMAKE_CURRENT_BINARY_DIR}) endif() +add_subdirectory(core) + +if (NGRAPH_EXPORT_TARGETS_ENABLE) + include(CMakePackageConfigHelpers) + set(NGRAPH_TARGETS_FILE "${CMAKE_CURRENT_BINARY_DIR}/ngraphTargets.cmake") + export(TARGETS ngraph NAMESPACE ngraph:: FILE "${NGRAPH_TARGETS_FILE}") + + if(BUILD_SHARED_LIBS) + install(EXPORT ngraphTargets + FILE ngraphTargets.cmake + NAMESPACE ngraph:: + DESTINATION "deployment_tools/ngraph/cmake" + COMPONENT ngraph) + endif() + + configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/share/ngraphConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/ngraphConfig.cmake + INSTALL_DESTINATION cmake) + + write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/ngraphConfigVersion.cmake + VERSION ${NGRAPH_VERSION} + COMPATIBILITY SameMajorVersion) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ngraphConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/ngraphConfigVersion.cmake + DESTINATION "deployment_tools/ngraph/cmake" + COMPONENT ngraph) +endif() + if (NGRAPH_ONNX_IMPORT_ENABLE) if (MSVC) # When we build dll libraries. These flags make sure onnx and protobuf build with /MD, not /MT. @@ -328,12 +305,15 @@ if (NGRAPH_ONNX_IMPORT_ENABLE) endif() set(BEFORE_ONNX_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) - set(BUILD_SHARED_LIBS OFF) + set(BUILD_SHARED_LIBS ON) + if (NOT NGRAPH_USE_SYSTEM_PROTOBUF) include(cmake/external_protobuf.cmake) else() find_package(Protobuf 2.6.1 REQUIRED) endif() + + # target onnx_proto will be shared lib, onnx static include(cmake/external_onnx.cmake) if (TARGET ext_protobuf) add_dependencies(onnx ext_protobuf) @@ -342,38 +322,9 @@ if (NGRAPH_ONNX_IMPORT_ENABLE) unset(BEFORE_ONNX_BUILD_SHARED_LIBS) endif() -add_subdirectory(core) - -if (NGRAPH_EXPORT_TARGETS_ENABLE) - include(CMakePackageConfigHelpers) - set(NGRAPH_TARGETS_FILE "${CMAKE_CURRENT_BINARY_DIR}/ngraphTargets.cmake") - export(TARGETS ngraph NAMESPACE ngraph:: FILE "${NGRAPH_TARGETS_FILE}") - - if(BUILD_SHARED_LIBS) - install(EXPORT ngraphTargets - FILE ngraphTargets.cmake - NAMESPACE ngraph:: - DESTINATION ${NGRAPH_COMPONENT_PREFIX}cmake - COMPONENT ngraph) - endif() - - configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/share/ngraphConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/ngraphConfig.cmake - INSTALL_DESTINATION cmake) - - write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/ngraphConfigVersion.cmake - VERSION ${NGRAPH_VERSION} - COMPATIBILITY SameMajorVersion) - - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ngraphConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/ngraphConfigVersion.cmake - DESTINATION ${NGRAPH_COMPONENT_PREFIX}cmake - COMPONENT ngraph) -endif() - add_subdirectory(frontend) -if (NGRAPH_TEST_UTIL_ENABLE) +if(NGRAPH_UNIT_TEST_ENABLE) set(BEFORE_GTEST_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) set(BUILD_SHARED_LIBS OFF) include(cmake/external_gtest.cmake) @@ -387,4 +338,6 @@ if (NGRAPH_PYTHON_BUILD_ENABLE) add_subdirectory(python) endif() -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/VERSION DESTINATION "${NGRAPH_COMPONENT_PREFIX}." COMPONENT ngraph) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/VERSION + DESTINATION "deployment_tools/ngraph" + COMPONENT ngraph) diff --git a/ngraph/changes.md b/ngraph/changes.md deleted file mode 100644 index f5103f20586d4b..00000000000000 --- a/ngraph/changes.md +++ /dev/null @@ -1,127 +0,0 @@ -# API Changes - -## Deprecation Notice - - - - - - - - - - -
Deprecation BeginsJune 1, 2020
Removal DateDecember 1, 2020
- -*Starting with the OpenVINO™ toolkit 2020.2 release, all of the features previously available through nGraph have been merged into the OpenVINO™ toolkit. As a result, all the features previously available through ONNX RT Execution Provider for nGraph have been merged with ONNX RT Execution Provider for OpenVINO™ toolkit.* - -*Therefore, ONNX RT Execution Provider for nGraph will be deprecated starting June 1, 2020 and will be completely removed on December 1, 2020. Users are recommended to migrate to the ONNX RT Execution Provider for OpenVINO™ toolkit as the unified solution for all AI inferencing on Intel® hardware.* - -## Op Definition -* Every Op class must declare a `static constexpr NodeTypeInfo type_info{name, version}` in the class definition and define it in the .cpp file. See any op definition for an example. -* The boolean function `is_type` is for testing if a node is the op `T`. -* `T as_type_ptr()` and `T as_type()` will upcast `Node` to an explicit op class if it is of class `T`, or `nullptr` if it is not. - -## Backend library interface -* Each backend `BACKEND` needs to define the macro `${BACKEND}_API` appropriately to import symbols - referenced from outside the library and to export them from within the library. See any - of the `${backend}_backend_visibility.hpp` files for an example. -* The `CMakeLists.txt` file for a backend defines `${BACKEND}_BACKEND_DLL_EXPORTS`. - `target_compile_definitions(${backend}_backend PRIVATE ${BACKEND}_BACKEND_DLL_EXPORTS)` -* Each backend must define a function `ngraph_register_${backend}_backend` that registers a - backend constructor function and ensures that initializations are performed. - `ngraph/src/runtime/cpu/cpu_backend.cpp` has an example that includes initializations. - Remove the old backend constructor code. - -## Passes -* `LikeReplacement` pass must be run by all transformers. -* `ngraph::pass::FusionType` is now an enum class. Constant values defined by `FusionType` are created for backward compatibility and will be removed in future releases. - -## Nodes, Parameters - -* `Nodes` is now `NodeVector` -* `Parameters` is now `ParameterVector` -* `NodeVector`, `ParameterVector`, `AxisVector`, `AxisSet`, `Shape`, `Stride`, `Coordinate`, and `CoordinateDiff` are now classes, not type aliases. -* `PrimaryTensorView` is now `TensorView` (and will merge into `Tensor`) - -## Changes to ops - -* The namespace `ngraph::op` is only for actual ops. Helpers have been moved into - `ngraph::op::util`: - + `BinaryElementwiseArithmetic` - + `BinaryElementwiseComparison` - + `BinaryElementwise` - + `RequiresTensorViewArgs` - + `UnaryElementwiseArithmetic` - + `UnaryElementwise` - Ops defined outside of nGraph core will need to get the base class from `ngraph::op::util` and - change the include file to `#include "ngraph/ops/util/requires_tensor_view_args.hpp"`, etc. - - See any of the core ops for an example. - -## Changes to convolution and pooling ops - -* Backprop ops have been added for convolution ops. -* The convolution and pooling ops have had several methods/fields renamed, to reflect a shift - in terminology from "images" to "data". Generally this just means that you will have to - `s/image_batch/data_batch/` and `s/image_dilation_strides/data_dilation_strides/`. -* The following functions have been removed: - + `AvgPool`: `get_channel_count get_input_image_physical_shape get_input_image_virtual_shape get_output_image_shape get_batch_size get_image_dimension_count` - + `MaxPool`: `get_channel_count get_input_image_shape get_output_image_shape get_batch_size get_image_dimension_count` - + `Convolution`: `get_input_channel_count get_output_channel_count get_input_image_physical_shape get_input_image_virtual_shape get_output_image_shape get_window_physical_shape get_window_virtual_shape get_batch_size get_image_dimension_count` - - All of the above information can be inferred from the shapes and parameters of the op. - -* The `AvgPool` operator has a new attribute governing whether or not padding-region values - are considered when computing a given window's average: `include_padding_in_avg_computation`. - One of the class constructors adds this to the parameter list, and the others use a default - value of `false` which matches the old behavior. - -## Negative convolution padding - -`Convolution` now allows negative padding. This means that the `padding_below` and `padding_above` -arguments now take type `CoordinateDiff` instead of `Shape`. `CoordinateDiff` is an alias for -`std::vector`, which "is like `size_t` but is allowed to be negative". Callers may -need to be adapted. - -## Changes to Concat op - -* `get_concatenation_axis` was renamed to `get_axis`. In order to provide backward compatibility `get_concatenation_axis` is now alis of `get_axis` method -* `set_concatenation_axis` was renamed to `set_axis`. In order to provide backward compatibility `set_concatenation_axis` is now alis of `set_axis` method - -## `Parameter` and `Function` no longer take a type argument. - -## Changes to Tensor read and write methods - -The `read` and `write` methods on ngraph::runtime::Tensor which take a `tensor_offset` as the -second of three arguments have been deprecated. The replacement `read` and `write` methods take -two arguments, the buffer pointer and the size. For any references to the deprecated methods -remove the second argument, the tensor offset, to update to the new API. These old read/write -methods have been decorated with deprecated warnings. - -To update, remove the passed argument. For example, -```C++ -// Old -make_shared(make_shared(element::f32, Shape{2, 4})); -// New (remove TensorViewType) -make_shared(element::f32, Shape{2, 4}); - -// Old -make_shared(results, result_type, parameters); -// New -make_shared(results, parameters); -``` - -The runtime::Tensor methods to get_tensor<> and write(std::vector&) have been removed -to the unit test directory under utils/test_tool.hpp read_vector and write_vector. - -## Changes to reshape op utils - -Utility functions from `src/ngraph/op/util/reshape.hpp`, placed at namespace `ngraph::op::util`: - - - `reshape` - - `reorder_axes` - - `transpose` - - `flatten` - -Are moved to new location: `src/ngraph/builder/reshape.hpp` to namespace `ngraph::builder`. diff --git a/ngraph/cmake/Modules/fix_mode.cmake b/ngraph/cmake/Modules/fix_mode.cmake deleted file mode 100644 index 90572cfb935258..00000000000000 --- a/ngraph/cmake/Modules/fix_mode.cmake +++ /dev/null @@ -1,36 +0,0 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -function(MODE_APPLY_FILE PATH) - execute_process(COMMAND git update-index --add --chmod=-x ${PATH} - OUTPUT_VARIABLE RESULT - ERROR_QUIET) -endfunction() - -set(DIRECTORIES_OF_INTEREST - src - doc - test - python/pyngraph -) - -foreach(DIRECTORY ${DIRECTORIES_OF_INTEREST}) - set(DIR "${NGRAPH_SOURCE_DIR}/${DIRECTORY}/*.?pp") - file(GLOB_RECURSE XPP_FILES ${DIR}) - foreach(FILE ${XPP_FILES}) - mode_apply_file(${FILE}) - endforeach(FILE) -endforeach(DIRECTORY) diff --git a/ngraph/cmake/Modules/git_tags.cmake b/ngraph/cmake/Modules/git_tags.cmake index b3fcf1b7f048db..30742eef776e74 100644 --- a/ngraph/cmake/Modules/git_tags.cmake +++ b/ngraph/cmake/Modules/git_tags.cmake @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** function(NGRAPH_GET_CURRENT_HASH) find_package(Git REQUIRED) diff --git a/ngraph/cmake/Modules/style_apply.cmake b/ngraph/cmake/Modules/style_apply.cmake deleted file mode 100644 index 9730a269a4608d..00000000000000 --- a/ngraph/cmake/Modules/style_apply.cmake +++ /dev/null @@ -1,43 +0,0 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -function(STYLE_APPLY_FILE PATH) - execute_process(COMMAND ${CLANG_FORMAT} -style=file -i ${PATH} - OUTPUT_VARIABLE STYLE_CHECK_RESULT) -endfunction() - -set(DIRECTORIES_OF_INTEREST - frontend - core - doc - test - python/pyngraph -) - -set(CLANG_FORMAT_FILENAME clang-format-3.9) -find_program(CLANG_FORMAT ${CLANG_FORMAT_FILENAME} PATHS ENV PATH) - -if (CLANG_FORMAT) - foreach(DIRECTORY ${DIRECTORIES_OF_INTEREST}) - set(DIR "${NGRAPH_SOURCE_DIR}/${DIRECTORY}/*.?pp") - file(GLOB_RECURSE XPP_FILES ${DIR}) - foreach(FILE ${XPP_FILES}) - style_apply_file(${FILE}) - endforeach(FILE) - endforeach(DIRECTORY) -else() - message(STATUS "${CLANG_FORMAT_FILENAME} not found, style not available") -endif() diff --git a/ngraph/cmake/Modules/style_check.cmake b/ngraph/cmake/Modules/style_check.cmake deleted file mode 100644 index 9a0479672fd521..00000000000000 --- a/ngraph/cmake/Modules/style_check.cmake +++ /dev/null @@ -1,53 +0,0 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -set(CLANG_FORMAT_FILENAME clang-format-3.9) -find_program(CLANG_FORMAT ${CLANG_FORMAT_FILENAME} PATHS ENV PATH) - -macro(STYLE_CHECK_FILE PATH) - execute_process(COMMAND ${CLANG_FORMAT} -style=file -output-replacements-xml ${PATH} - OUTPUT_VARIABLE STYLE_CHECK_RESULT - ) - if("${STYLE_CHECK_RESULT}" MATCHES ".*= 10.14 - ExternalProject_Add( + if(PROTOC_VERSION VERSION_GREATER_EQUAL "3.0") + FetchContent_Declare( ext_protobuf - PREFIX protobuf GIT_REPOSITORY ${NGRAPH_PROTOBUF_GIT_REPO_URL} GIT_TAG ${NGRAPH_PROTOBUF_GIT_TAG} - UPDATE_COMMAND "" - PATCH_COMMAND "" - CONFIGURE_COMMAND ./autogen.sh COMMAND ./configure --prefix=${EXTERNAL_PROJECTS_ROOT}/protobuf --disable-shared - BUILD_COMMAND ${MAKE_UTIL} "CXXFLAGS=-std=c++${CMAKE_CXX_STANDARD} -fPIC" - TMP_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/tmp" - STAMP_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/stamp" - DOWNLOAD_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/download" - SOURCE_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/src" - BINARY_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/src" - INSTALL_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf" - EXCLUDE_FROM_ALL TRUE - BUILD_BYPRODUCTS ${Protobuf_PROTOC_EXECUTABLE} ${Protobuf_LIBRARY} ) - # ----------------------------------------------------------------------------- - # Use the interface of FindProtobuf.cmake - # ----------------------------------------------------------------------------- - if (NOT TARGET protobuf::libprotobuf) - add_library(protobuf::libprotobuf UNKNOWN IMPORTED) - set_target_properties(protobuf::libprotobuf PROPERTIES - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}" - IMPORTED_LOCATION "${Protobuf_LIBRARY}") - add_dependencies(protobuf::libprotobuf ext_protobuf) - endif() - set(Protobuf_LIBRARIES protobuf::libprotobuf) - - if (NOT TARGET protobuf::protoc) - add_executable(protobuf::protoc IMPORTED) - set_target_properties(protobuf::protoc PROPERTIES - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${Protobuf_PROTOC_EXECUTABLE}" - IMPORTED_LOCATION "${Protobuf_PROTOC_EXECUTABLE}") - add_dependencies(protobuf::protoc ext_protobuf) + FetchContent_GetProperties(ext_protobuf) + if(NOT ext_protobuf_POPULATED) + FetchContent_Populate(ext_protobuf) + set(protobuf_BUILD_TESTS OFF CACHE BOOL "Build tests") + set(protobuf_WITH_ZLIB OFF CACHE BOOL "Build with zlib support") + add_subdirectory(${ext_protobuf_SOURCE_DIR}/cmake ${ext_protobuf_BINARY_DIR} EXCLUDE_FROM_ALL) endif() + else() + message(FATAL_ERROR "Minimum supported version of protobuf library is 3.0.0") + endif() - set(Protobuf_FOUND TRUE) - set(PROTOBUF_FOUND TRUE) - #add_dependencies(onnx ext_protobuf) + set(Protobuf_INCLUDE_DIRS ${ext_protobuf_SOURCE_DIR}/src) + if(NGRAPH_USE_PROTOBUF_LITE) + set(Protobuf_LIBRARIES libprotobuf-lite) else() - if(PROTOC_VERSION VERSION_GREATER_EQUAL "3.0") - FetchContent_Declare( - ext_protobuf - GIT_REPOSITORY ${NGRAPH_PROTOBUF_GIT_REPO_URL} - GIT_TAG ${NGRAPH_PROTOBUF_GIT_TAG} - ) - - FetchContent_GetProperties(ext_protobuf) - if(NOT ext_protobuf_POPULATED) - FetchContent_Populate(ext_protobuf) - set(protobuf_BUILD_TESTS OFF CACHE BOOL "Build tests") - set(protobuf_WITH_ZLIB OFF CACHE BOOL "Build with zlib support") - add_subdirectory(${ext_protobuf_SOURCE_DIR}/cmake ${ext_protobuf_BINARY_DIR} EXCLUDE_FROM_ALL) - endif() - else() - message(FATAL_ERROR "Minimum supported version of protobuf library is 3.0.0") - endif() + set(Protobuf_LIBRARIES libprotobuf) + endif() - set(Protobuf_INCLUDE_DIRS ${ext_protobuf_SOURCE_DIR}/src) - if(NGRAPH_USE_PROTOBUF_LITE) - set(Protobuf_LIBRARIES libprotobuf-lite) - else() - set(Protobuf_LIBRARIES libprotobuf) + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$") + set(_proto_libs ${Protobuf_LIBRARIES}) + if(TARGET libprotoc) + list(APPEND _proto_libs libprotoc) + set_target_properties(libprotoc PROPERTIES + COMPILE_FLAGS "-Wno-unused-variable") endif() + set_target_properties(${_proto_libs} PROPERTIES + CXX_VISIBILITY_PRESET default + C_VISIBILITY_PRESET default + VISIBILITY_INLINES_HIDDEN OFF) + set_target_properties(libprotobuf libprotobuf-lite PROPERTIES + COMPILE_FLAGS "-Wno-unused-variable -Wno-inconsistent-missing-override") + endif() - if(CMAKE_COMPILER_IS_GNUCXX) - set(_proto_libs ${Protobuf_LIBRARIES}) - if(TARGET libprotoc) - list(APPEND _proto_libs libprotoc) - endif() - set_target_properties(${_proto_libs} PROPERTIES - COMPILE_FLAGS "-Wno-unused-variable") - endif() + if(NGRAPH_USE_PROTOBUF_LITE) + # if only libprotobuf-lite is used, both libprotobuf and libprotobuf-lite are built + # libprotoc target needs symbols from libprotobuf, even in libprotobuf-lite configuration + set_target_properties(libprotobuf PROPERTIES + CXX_VISIBILITY_PRESET default + C_VISIBILITY_PRESET default + VISIBILITY_INLINES_HIDDEN OFF) endif() endif() # Now make sure we restore the original flags set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE "${PUSH_CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE}") + +install(TARGETS ${Protobuf_LIBRARIES} + RUNTIME DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph + ARCHIVE DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph + LIBRARY DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph) +if (NGRAPH_EXPORT_TARGETS_ENABLE) + export(TARGETS ${Protobuf_LIBRARIES} NAMESPACE ngraph:: APPEND FILE "${NGRAPH_TARGETS_FILE}") +endif() diff --git a/ngraph/cmake/patches/onnx_patch.diff b/ngraph/cmake/patches/onnx_patch.diff new file mode 100644 index 00000000000000..23d7a8d7b412ac --- /dev/null +++ b/ngraph/cmake/patches/onnx_patch.diff @@ -0,0 +1,30 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5254f7ee..e7a0ce2b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -380,7 +380,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "AIX") + # So, create a object library + add_library(onnx OBJECT ${ONNX_SRCS}) + else() +- add_library(onnx ${ONNX_SRCS}) ++ # onnx target doesn't export symbols ++ add_library(onnx STATIC ${ONNX_SRCS}) + endif() + + target_include_directories(onnx PUBLIC +diff --git a/onnx/onnx_pb.h b/onnx/onnx_pb.h +index 7dc68dea..c932b806 100644 +--- a/onnx/onnx_pb.h ++++ b/onnx/onnx_pb.h +@@ -40,9 +40,10 @@ + // + // This solution is similar to + // https://github.com/pytorch/pytorch/blob/master/caffe2/core/common.h +-#if defined(ONNX_BUILD_SHARED_LIBS) || defined(ONNX_BUILD_MAIN_LIB) ++#if defined(ONNX_BUILD_MAIN_LIB) + #define ONNX_API ONNX_EXPORT + #else ++// OV as user of ONNX imports symbols + #define ONNX_API ONNX_IMPORT + #endif + diff --git a/ngraph/core/CMakeLists.txt b/ngraph/core/CMakeLists.txt index 8263dd42d23ce9..911f156e59b578 100644 --- a/ngraph/core/CMakeLists.txt +++ b/ngraph/core/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** add_definitions(-DIN_NGRAPH_LIBRARY) @@ -51,7 +39,11 @@ if(COMMAND ie_add_vs_version_file) FILEDESCRIPTION "nGraph library") endif() -target_link_libraries(ngraph PRIVATE openvino::conditional_compilation openvino::itt ngraph::builder ngraph::reference) +target_link_libraries(ngraph PRIVATE ngraph::builder ngraph::reference) + +ie_mark_target_as_cc(ngraph) + +add_clang_format_target(ngraph_clang FOR_TARGETS ngraph) if(NGRAPH_ADDRESS_SANITIZER) message(STATUS "Enable Address Sanitizer") @@ -103,7 +95,7 @@ install(TARGETS ngraph EXPORT ngraphTargets ARCHIVE DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph LIBRARY DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ - DESTINATION ${NGRAPH_INSTALL_INCLUDE}/ + DESTINATION ${NGRAPH_INSTALL_INCLUDE} COMPONENT ngraph FILES_MATCHING PATTERN "*.hpp" diff --git a/ngraph/core/builder/CMakeLists.txt b/ngraph/core/builder/CMakeLists.txt index 13b31ee1779ab5..ff5c381e7751bf 100644 --- a/ngraph/core/builder/CMakeLists.txt +++ b/ngraph/core/builder/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** set(TARGET_NAME "ngraph_builders") @@ -41,6 +29,8 @@ endif() target_include_directories(${TARGET_NAME} PUBLIC ${BUILDER_INCLUDE_DIR} PRIVATE ${NGRAPH_INCLUDE_PATH}) +add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) + # Add an alias so that library can be used inside the build tree, e.g. when testing add_library(ngraph::builder ALIAS ${TARGET_NAME}) diff --git a/ngraph/core/builder/include/ngraph/builder/autobroadcast.hpp b/ngraph/core/builder/include/ngraph/builder/autobroadcast.hpp index c1ab58ebc757e5..259c784d24c7f2 100644 --- a/ngraph/core/builder/include/ngraph/builder/autobroadcast.hpp +++ b/ngraph/core/builder/include/ngraph/builder/autobroadcast.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -218,6 +206,22 @@ namespace ngraph const Shape& input_shape, std::size_t start_match_axis); + /// + /// \brief Creates Node returning the axes mapping for Broadcast operation. + /// \note Shapes' ranks need to be static. + /// + /// \param[in] output_shape The output shape of Broadcast operation. + /// \param[in] input_shape The input shape. + /// \param[in] start_match_axis The axis index at which input shape starts to be + /// identical to consecutive subset of output shape + /// dimensions. + /// + /// \return Returns the Output object pointing to node with the axes mapping. + /// + Output get_axes_mapping_output(const PartialShape& output_shape, + const PartialShape& input_shape, + std::size_t start_match_axis); + /// /// \brief Creates Node returning the axes mapping for Broadcast:v1 operation. /// diff --git a/ngraph/core/builder/include/ngraph/builder/make_constant.hpp b/ngraph/core/builder/include/ngraph/builder/make_constant.hpp index c5b0ad767bdf46..e864f8e467180b 100644 --- a/ngraph/core/builder/include/ngraph/builder/make_constant.hpp +++ b/ngraph/core/builder/include/ngraph/builder/make_constant.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -97,6 +85,10 @@ namespace ngraph throw ngraph_error("make_constant: Unsupported element type 'boolean'"); case element::Type_t::u1: throw ngraph_error("make_constant: Unsupported element type 'u1'"); + case element::Type_t::i4: + throw ngraph_error("make_constant: Unsupported element type 'i4'"); + case element::Type_t::u4: + throw ngraph_error("make_constant: Unsupported element type 'u4'"); case element::Type_t::undefined: throw ngraph_error("make_constant: Unsupported element type 'undefined'"); } diff --git a/ngraph/core/builder/include/ngraph/builder/norm.hpp b/ngraph/core/builder/include/ngraph/builder/norm.hpp index 1377ce2aa052df..85e0afe0166598 100644 --- a/ngraph/core/builder/include/ngraph/builder/norm.hpp +++ b/ngraph/core/builder/include/ngraph/builder/norm.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #pragma once #include diff --git a/ngraph/core/builder/include/ngraph/builder/reduce_ops.hpp b/ngraph/core/builder/include/ngraph/builder/reduce_ops.hpp index 92444f9234403c..57060a6e30196c 100644 --- a/ngraph/core/builder/include/ngraph/builder/reduce_ops.hpp +++ b/ngraph/core/builder/include/ngraph/builder/reduce_ops.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/builder/include/ngraph/builder/reshape.hpp b/ngraph/core/builder/include/ngraph/builder/reshape.hpp index c2eaa7f6461dae..4d1b4cd2c0dedd 100644 --- a/ngraph/core/builder/include/ngraph/builder/reshape.hpp +++ b/ngraph/core/builder/include/ngraph/builder/reshape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/builder/include/ngraph/builder/split.hpp b/ngraph/core/builder/include/ngraph/builder/split.hpp index 5c9eaff292eea1..6abfffdcda6d05 100644 --- a/ngraph/core/builder/include/ngraph/builder/split.hpp +++ b/ngraph/core/builder/include/ngraph/builder/split.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include diff --git a/ngraph/core/builder/src/builder/autobroadcast.cpp b/ngraph/core/builder/src/builder/autobroadcast.cpp index 2d1022febd9433..1465e586f0a346 100644 --- a/ngraph/core/builder/src/builder/autobroadcast.cpp +++ b/ngraph/core/builder/src/builder/autobroadcast.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/builder/autobroadcast.hpp" @@ -27,8 +15,6 @@ #include "ngraph/op/reshape.hpp" #include "ngraph/util.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; namespace ngraph @@ -437,6 +423,22 @@ namespace ngraph return op::Constant::create(element::i64, Shape{mapping.size()}, mapping); } + Output get_axes_mapping_output(const PartialShape& output_shape, + const PartialShape& input_shape, + std::size_t start_match_axis) + { + NGRAPH_CHECK((input_shape.rank().is_static() && output_shape.rank().is_static()), + "Tensor's rank has to be static."); + NGRAPH_CHECK((input_shape.rank().get_length() + start_match_axis <= + output_shape.rank().get_length()), + "Unable to figure out axes mapping."); + + vector mapping(input_shape.rank().get_length()); + iota(begin(mapping), end(mapping), start_match_axis); + + return op::Constant::create(element::i64, Shape{mapping.size()}, mapping); + } + Output get_axes_mapping_output(const Shape& output_shape, const AxisSet& broadcast_axes) { diff --git a/ngraph/core/builder/src/builder/make_constant.cpp b/ngraph/core/builder/src/builder/make_constant.cpp index 7394298b7b9651..6ab422451406e5 100644 --- a/ngraph/core/builder/src/builder/make_constant.cpp +++ b/ngraph/core/builder/src/builder/make_constant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/builder/make_constant.hpp" diff --git a/ngraph/core/builder/src/builder/norm.cpp b/ngraph/core/builder/src/builder/norm.cpp index a4ca8847ca170a..bd60f578c89307 100644 --- a/ngraph/core/builder/src/builder/norm.cpp +++ b/ngraph/core/builder/src/builder/norm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/builder/norm.hpp" #include "ngraph/op/abs.hpp" diff --git a/ngraph/core/builder/src/builder/reduce_ops.cpp b/ngraph/core/builder/src/builder/reduce_ops.cpp index 86d981973ccd35..945ab6a9fb189a 100644 --- a/ngraph/core/builder/src/builder/reduce_ops.cpp +++ b/ngraph/core/builder/src/builder/reduce_ops.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/builder/src/builder/reshape.cpp b/ngraph/core/builder/src/builder/reshape.cpp index 41aabf8f85f747..ebb6318bc53404 100644 --- a/ngraph/core/builder/src/builder/reshape.cpp +++ b/ngraph/core/builder/src/builder/reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/builder/src/builder/split.cpp b/ngraph/core/builder/src/builder/split.cpp index c5ab1f10f8ad5d..f71db83db52852 100644 --- a/ngraph/core/builder/src/builder/split.cpp +++ b/ngraph/core/builder/src/builder/split.cpp @@ -1,24 +1,10 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/builder/split.hpp" #include "ngraph/opsets/opset1.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace ngraph; OutputVector builder::opset1::split(const Output& value, diff --git a/ngraph/core/builder/src/precomp.hpp b/ngraph/core/builder/src/precomp.hpp index 82c0629eb08b34..2a4e48b3ff4a96 100644 --- a/ngraph/core/builder/src/precomp.hpp +++ b/ngraph/core/builder/src/precomp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/attribute_adapter.hpp b/ngraph/core/include/ngraph/attribute_adapter.hpp index 6df841e3dd1861..95de396bcca00e 100644 --- a/ngraph/core/include/ngraph/attribute_adapter.hpp +++ b/ngraph/core/include/ngraph/attribute_adapter.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -84,6 +72,7 @@ namespace ngraph } const AT& get() override { return m_ref; } void set(const AT& value) override { m_ref = value; } + protected: AT& m_ref; }; @@ -158,6 +147,7 @@ namespace ngraph } operator AT&() { return m_ref; } + protected: AT& m_ref; VAT m_buffer; @@ -185,6 +175,7 @@ namespace ngraph const std::string& get() override { return as_string(m_ref); } void set(const std::string& value) override { m_ref = as_enum(value); } operator AT&() { return m_ref; } + protected: AT& m_ref; }; diff --git a/ngraph/core/include/ngraph/attribute_visitor.hpp b/ngraph/core/include/ngraph/attribute_visitor.hpp index 6d314d051f5ad9..f592376e1cbe4e 100644 --- a/ngraph/core/include/ngraph/attribute_visitor.hpp +++ b/ngraph/core/include/ngraph/attribute_visitor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/axis_set.hpp b/ngraph/core/include/ngraph/axis_set.hpp index 6df906af1c09d4..ad2f96179e45bb 100644 --- a/ngraph/core/include/ngraph/axis_set.hpp +++ b/ngraph/core/include/ngraph/axis_set.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -61,6 +49,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } operator AxisSet&() { return m_ref; } + protected: AxisSet& m_ref; std::vector m_buffer; diff --git a/ngraph/core/include/ngraph/axis_vector.hpp b/ngraph/core/include/ngraph/axis_vector.hpp index 2a35be896b9430..170141d476f318 100644 --- a/ngraph/core/include/ngraph/axis_vector.hpp +++ b/ngraph/core/include/ngraph/axis_vector.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/check.hpp b/ngraph/core/include/ngraph/check.hpp index e4be446afe3344..c819812e2f31a9 100644 --- a/ngraph/core/include/ngraph/check.hpp +++ b/ngraph/core/include/ngraph/check.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/coordinate.hpp b/ngraph/core/include/ngraph/coordinate.hpp index 43041f35fc3a2d..626ce131b85445 100644 --- a/ngraph/core/include/ngraph/coordinate.hpp +++ b/ngraph/core/include/ngraph/coordinate.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/coordinate_diff.hpp b/ngraph/core/include/ngraph/coordinate_diff.hpp index c617d2779fab1a..cdad0a873e4489 100644 --- a/ngraph/core/include/ngraph/coordinate_diff.hpp +++ b/ngraph/core/include/ngraph/coordinate_diff.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/deprecated.hpp b/ngraph/core/include/ngraph/deprecated.hpp index 5773a5bd20dd13..a1b3fc1cca4537 100644 --- a/ngraph/core/include/ngraph/deprecated.hpp +++ b/ngraph/core/include/ngraph/deprecated.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/descriptor/input.hpp b/ngraph/core/include/ngraph/descriptor/input.hpp index 06d7ba6884d34a..53678520b7ed69 100644 --- a/ngraph/core/include/ngraph/descriptor/input.hpp +++ b/ngraph/core/include/ngraph/descriptor/input.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -82,6 +70,7 @@ namespace ngraph /// /// See Node::set_input_is_relevant_to_value for more details. bool get_is_relevant_to_value() const { return m_is_relevant_to_value; } + protected: /// \return the tensor for the connected output std::shared_ptr get_tensor_ptr() const; diff --git a/ngraph/core/include/ngraph/descriptor/output.hpp b/ngraph/core/include/ngraph/descriptor/output.hpp index 611961c5e3e3bc..d97846083bf768 100644 --- a/ngraph/core/include/ngraph/descriptor/output.hpp +++ b/ngraph/core/include/ngraph/descriptor/output.hpp @@ -1,21 +1,10 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once +#include #include #include #include @@ -34,6 +23,8 @@ namespace ngraph // systems (namely macOS). class Node; + class Variant; + namespace descriptor { // Describes an output tensor of an op @@ -63,6 +54,10 @@ namespace ngraph const std::vector& get_inputs() const { return m_inputs; } Tensor& get_tensor() const; + using RTMap = std::map>; + + RTMap& get_rt_info() { return m_rt_info; } + const RTMap& get_rt_info() const { return m_rt_info; } /// \return the shape of the output const Shape& get_shape() const; @@ -80,6 +75,7 @@ namespace ngraph Node* m_node; size_t m_index; std::shared_ptr m_tensor; + RTMap m_rt_info; std::vector m_inputs; }; } diff --git a/ngraph/core/include/ngraph/descriptor/tensor.hpp b/ngraph/core/include/ngraph/descriptor/tensor.hpp index 9b7fb1248c4d83..01aae03f49b76d 100644 --- a/ngraph/core/include/ngraph/descriptor/tensor.hpp +++ b/ngraph/core/include/ngraph/descriptor/tensor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/dimension.hpp b/ngraph/core/include/ngraph/dimension.hpp index d0449b02439b76..6032be872ae932 100644 --- a/ngraph/core/include/ngraph/dimension.hpp +++ b/ngraph/core/include/ngraph/dimension.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/distributed.hpp b/ngraph/core/include/ngraph/distributed.hpp index 5642b5358d8bf7..2308344b0d7f83 100644 --- a/ngraph/core/include/ngraph/distributed.hpp +++ b/ngraph/core/include/ngraph/distributed.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/enum_names.hpp b/ngraph/core/include/ngraph/enum_names.hpp index 6d5a7c8fe9c88f..2cf5dddaa84cb4 100644 --- a/ngraph/core/include/ngraph/enum_names.hpp +++ b/ngraph/core/include/ngraph/enum_names.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/env_util.hpp b/ngraph/core/include/ngraph/env_util.hpp index 6c71f5d9999a9f..3892310a64c188 100644 --- a/ngraph/core/include/ngraph/env_util.hpp +++ b/ngraph/core/include/ngraph/env_util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/evaluator.hpp b/ngraph/core/include/ngraph/evaluator.hpp index d8a3f686bd994d..6f2de07bcbcd65 100644 --- a/ngraph/core/include/ngraph/evaluator.hpp +++ b/ngraph/core/include/ngraph/evaluator.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -70,6 +58,7 @@ namespace ngraph void set_univeral_handler(const op_handler& handler) { m_universal_handler = handler; } /// \brief If set, handles all ops not in the handlers void set_default_handler(const op_handler& handler) { m_default_handler = handler; } + protected: op_handler get_handler(Node* node) { @@ -106,6 +95,7 @@ namespace ngraph virtual ~Inst() {} virtual void handle(Evaluator& evaluator, InstStack& inst_stack, Node* node) = 0; Node* get_node() { return m_node; } + protected: Node* m_node; }; diff --git a/ngraph/core/include/ngraph/except.hpp b/ngraph/core/include/ngraph/except.hpp index 2389f6fda1a5a7..dd2e9be9c51831 100644 --- a/ngraph/core/include/ngraph/except.hpp +++ b/ngraph/core/include/ngraph/except.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/factory.hpp b/ngraph/core/include/ngraph/factory.hpp index cf2d2c0d035a59..ab5c189a00d4d9 100644 --- a/ngraph/core/include/ngraph/factory.hpp +++ b/ngraph/core/include/ngraph/factory.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/factory_adapter.hpp b/ngraph/core/include/ngraph/factory_adapter.hpp index d3e09151f7b465..9a78a3d941e287 100644 --- a/ngraph/core/include/ngraph/factory_adapter.hpp +++ b/ngraph/core/include/ngraph/factory_adapter.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/file_util.hpp b/ngraph/core/include/ngraph/file_util.hpp index 9fb0fe4e874041..a8e283e85e81ea 100644 --- a/ngraph/core/include/ngraph/file_util.hpp +++ b/ngraph/core/include/ngraph/file_util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/function.hpp b/ngraph/core/include/ngraph/function.hpp index f6c84c9cef3fad..a48bc6ee665e96 100644 --- a/ngraph/core/include/ngraph/function.hpp +++ b/ngraph/core/include/ngraph/function.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/graph_util.hpp b/ngraph/core/include/ngraph/graph_util.hpp index 3c9052411bdbca..96c6a19ffb097f 100644 --- a/ngraph/core/include/ngraph/graph_util.hpp +++ b/ngraph/core/include/ngraph/graph_util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/interval.hpp b/ngraph/core/include/ngraph/interval.hpp index e0065d028b4712..b807d4bad9423f 100644 --- a/ngraph/core/include/ngraph/interval.hpp +++ b/ngraph/core/include/ngraph/interval.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/log.hpp b/ngraph/core/include/ngraph/log.hpp index ce0bbb47cbe8bc..ee369569096161 100644 --- a/ngraph/core/include/ngraph/log.hpp +++ b/ngraph/core/include/ngraph/log.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -50,6 +38,7 @@ namespace ngraph } constexpr const char* get_ptr(size_t offset) const { return &m_string[offset]; } constexpr size_t size() const { return m_size; } + private: const char* m_string; size_t m_size; @@ -57,8 +46,9 @@ namespace ngraph constexpr const char* find_last(ConstString s, size_t offset, char ch) { - return offset == 0 ? s.get_ptr(0) : (s[offset] == ch ? s.get_ptr(offset + 1) - : find_last(s, offset - 1, ch)); + return offset == 0 + ? s.get_ptr(0) + : (s[offset] == ch ? s.get_ptr(offset + 1) : find_last(s, offset - 1, ch)); } constexpr const char* find_last(ConstString s, char ch) @@ -89,6 +79,7 @@ namespace ngraph ~LogHelper(); std::ostream& stream() { return m_stream; } + private: std::function m_handler_func; std::stringstream m_stream; @@ -114,6 +105,10 @@ namespace ngraph NGRAPH_API void default_logger_handler_func(const std::string& s); +#ifndef PROJECT_ROOT_DIR +#define PROJECT_ROOT_DIR "" +#endif + #define NGRAPH_ERR \ ngraph::LogHelper(ngraph::LOG_TYPE::_LOG_TYPE_ERROR, \ ngraph::trim_file_name(PROJECT_ROOT_DIR, __FILE__), \ diff --git a/ngraph/core/include/ngraph/ngraph.hpp b/ngraph/core/include/ngraph/ngraph.hpp index cdada052e76093..1f359d5ec34866 100644 --- a/ngraph/core/include/ngraph/ngraph.hpp +++ b/ngraph/core/include/ngraph/ngraph.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // // The public API for ngraph++ diff --git a/ngraph/core/include/ngraph/ngraph_visibility.hpp b/ngraph/core/include/ngraph/ngraph_visibility.hpp index 14422566742dd8..7ebf8f2b79845f 100644 --- a/ngraph/core/include/ngraph/ngraph_visibility.hpp +++ b/ngraph/core/include/ngraph/ngraph_visibility.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/visibility.hpp" diff --git a/ngraph/core/include/ngraph/node.hpp b/ngraph/core/include/ngraph/node.hpp index a8538319754fc7..4cc0b430ad51a7 100644 --- a/ngraph/core/include/ngraph/node.hpp +++ b/ngraph/core/include/ngraph/node.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -107,20 +95,21 @@ namespace ngraph /// Alias useful for cloning using NodeMap = std::unordered_map>; -/// \brief Used in evaluator switch statement so that the case type and evaluate call -/// are guaranteed to have the types match. -/// -/// Use this in an evaluate_*() function like this -/// switch (arg0->get_element_type()) -/// { -/// TYPE_CASE(i8)(arg0, arg1, out, broadcast_spec); break; -/// TYPE_CASE(i16)(arg0, arg1, out, broadcast_spec); break; -/// -/// Each TYPE_CASE statement expands like this: -/// case element::Type_t::a: rc = evaluate(arg0, arg1, out, broadcast_spec) -/// -/// \note Don't forget to put a break after each statement or it will fall through and generate -/// a runtime error. + /// \brief Used in evaluator switch statement so that the case type and evaluate call + /// are guaranteed to have the types match. + /// + /// Use this in an evaluate_*() function like this + /// switch (arg0->get_element_type()) + /// { + /// TYPE_CASE(i8)(arg0, arg1, out, broadcast_spec); break; + /// TYPE_CASE(i16)(arg0, arg1, out, broadcast_spec); break; + /// + /// Each TYPE_CASE statement expands like this: + /// case element::Type_t::a: rc = evaluate(arg0, arg1, out, + /// broadcast_spec) + /// + /// \note Don't forget to put a break after each statement or it will fall through and generate + /// a runtime error. #define TYPE_CASE(a) \ case element::Type_t::a: rc = evaluate @@ -237,7 +226,7 @@ namespace ngraph void set_output_size(size_t output_size); void invalidate_values(); - void revalidate_and_infer_types() + virtual void revalidate_and_infer_types() { invalidate_values(); validate_and_infer_types(); @@ -649,6 +638,7 @@ namespace ngraph bool visit_attributes(AttributeVisitor& visitor) override; static constexpr DiscreteTypeInfo type_info{"AttributeAdapter>", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } + protected: std::shared_ptr& m_ref; }; @@ -663,6 +653,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } + protected: NodeVector& m_ref; }; diff --git a/ngraph/core/include/ngraph/node_input.hpp b/ngraph/core/include/ngraph/node_input.hpp index 090ed919498bea..21343bc634b310 100644 --- a/ngraph/core/include/ngraph/node_input.hpp +++ b/ngraph/core/include/ngraph/node_input.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/node_output.hpp b/ngraph/core/include/ngraph/node_output.hpp index bcaed7812d3b2e..8fd205f3e91101 100644 --- a/ngraph/core/include/ngraph/node_output.hpp +++ b/ngraph/core/include/ngraph/node_output.hpp @@ -1,22 +1,11 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include +#include #include #include "ngraph/descriptor/tensor.hpp" @@ -36,6 +25,8 @@ namespace ngraph { }; + class Variant; + /// \brief A handle for one of a node's outputs. template <> class NGRAPH_API Output @@ -88,6 +79,12 @@ namespace ngraph /// \return The partial shape of the output referred to by this output handle. const PartialShape& get_partial_shape() const; + using RTMap = std::map>; + /// \return The reference to runtime info map + RTMap& get_rt_info(); + /// \return The constant reference to runtime info map + const RTMap& get_rt_info() const; + /// \return A set containing handles for all inputs targeted by the output referenced by /// this output handle. std::set> get_target_inputs() const; @@ -164,6 +161,9 @@ namespace ngraph /// \return The partial shape of the output referred to by this output handle. const PartialShape& get_partial_shape() const; + using RTMap = std::map>; + /// \return The constant reference to runtime info map + const RTMap& get_rt_info() const; /// \return A set containing handles for all inputs targeted by the output referenced by /// this output handle. std::set> get_target_inputs() const; diff --git a/ngraph/core/include/ngraph/op/abs.hpp b/ngraph/core/include/ngraph/op/abs.hpp index d9235034322f2d..67a6c7acef4665 100644 --- a/ngraph/core/include/ngraph/op/abs.hpp +++ b/ngraph/core/include/ngraph/op/abs.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/acos.hpp b/ngraph/core/include/ngraph/op/acos.hpp index c414491e6dbfb6..7d0c29ea5d7ba5 100644 --- a/ngraph/core/include/ngraph/op/acos.hpp +++ b/ngraph/core/include/ngraph/op/acos.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/acosh.hpp b/ngraph/core/include/ngraph/op/acosh.hpp index c8a7b9e34f159b..731af0df0d95d4 100644 --- a/ngraph/core/include/ngraph/op/acosh.hpp +++ b/ngraph/core/include/ngraph/op/acosh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/add.hpp b/ngraph/core/include/ngraph/op/add.hpp index 9c015b1a16788c..b9ca97ea6d69f4 100644 --- a/ngraph/core/include/ngraph/op/add.hpp +++ b/ngraph/core/include/ngraph/op/add.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/and.hpp b/ngraph/core/include/ngraph/op/and.hpp index 792a31a2bff63d..49fe0f80a743ce 100644 --- a/ngraph/core/include/ngraph/op/and.hpp +++ b/ngraph/core/include/ngraph/op/and.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/asin.hpp b/ngraph/core/include/ngraph/op/asin.hpp index 719217f05d4792..a50e5b15d4ecad 100644 --- a/ngraph/core/include/ngraph/op/asin.hpp +++ b/ngraph/core/include/ngraph/op/asin.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/asinh.hpp b/ngraph/core/include/ngraph/op/asinh.hpp index 11821343590419..413f61d5f5fbb3 100644 --- a/ngraph/core/include/ngraph/op/asinh.hpp +++ b/ngraph/core/include/ngraph/op/asinh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/assign.hpp b/ngraph/core/include/ngraph/op/assign.hpp index 3e130f5e5bb4b8..e7ceabb2cdf765 100644 --- a/ngraph/core/include/ngraph/op/assign.hpp +++ b/ngraph/core/include/ngraph/op/assign.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/atan.hpp b/ngraph/core/include/ngraph/op/atan.hpp index 356a749c811a3b..5168158bd75cfb 100644 --- a/ngraph/core/include/ngraph/op/atan.hpp +++ b/ngraph/core/include/ngraph/op/atan.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/atanh.hpp b/ngraph/core/include/ngraph/op/atanh.hpp index f361937e0e25b1..420b35c7448104 100644 --- a/ngraph/core/include/ngraph/op/atanh.hpp +++ b/ngraph/core/include/ngraph/op/atanh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/avg_pool.hpp b/ngraph/core/include/ngraph/op/avg_pool.hpp index 3a4790e4d1fa56..8f414a6274d6c0 100644 --- a/ngraph/core/include/ngraph/op/avg_pool.hpp +++ b/ngraph/core/include/ngraph/op/avg_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/batch_norm.hpp b/ngraph/core/include/ngraph/op/batch_norm.hpp index 9e8a828d352b74..22d3db026d3171 100644 --- a/ngraph/core/include/ngraph/op/batch_norm.hpp +++ b/ngraph/core/include/ngraph/op/batch_norm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/batch_to_space.hpp b/ngraph/core/include/ngraph/op/batch_to_space.hpp index dff8af5c2fe0c2..c26be8810629c7 100644 --- a/ngraph/core/include/ngraph/op/batch_to_space.hpp +++ b/ngraph/core/include/ngraph/op/batch_to_space.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/binary_convolution.hpp b/ngraph/core/include/ngraph/op/binary_convolution.hpp index 890312aaeab5b4..d072288d88289b 100644 --- a/ngraph/core/include/ngraph/op/binary_convolution.hpp +++ b/ngraph/core/include/ngraph/op/binary_convolution.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -100,6 +88,7 @@ namespace ngraph /// \return The pad value. float get_pad_value() const { return m_pad_value; } void set_pad_value(float pad_value) { m_pad_value = pad_value; } + protected: BinaryConvolutionMode mode_from_string(const std::string& mode) const; Strides m_strides; diff --git a/ngraph/core/include/ngraph/op/broadcast.hpp b/ngraph/core/include/ngraph/op/broadcast.hpp index dc896851d15570..617a1c965f442f 100644 --- a/ngraph/core/include/ngraph/op/broadcast.hpp +++ b/ngraph/core/include/ngraph/op/broadcast.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/bucketize.hpp b/ngraph/core/include/ngraph/op/bucketize.hpp index 0f5c96884da954..0db27a0699cb58 100644 --- a/ngraph/core/include/ngraph/op/bucketize.hpp +++ b/ngraph/core/include/ngraph/op/bucketize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/ceiling.hpp b/ngraph/core/include/ngraph/op/ceiling.hpp index aeb90221c148ae..b35ecd0a32faa8 100644 --- a/ngraph/core/include/ngraph/op/ceiling.hpp +++ b/ngraph/core/include/ngraph/op/ceiling.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/clamp.hpp b/ngraph/core/include/ngraph/op/clamp.hpp index 18900094df38cf..3b92f05ddd7ade 100644 --- a/ngraph/core/include/ngraph/op/clamp.hpp +++ b/ngraph/core/include/ngraph/op/clamp.hpp @@ -1,26 +1,11 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include "ngraph/node.hpp" #include "ngraph/op/op.hpp" -#include "ngraph/op/util/fused_op.hpp" - -NGRAPH_SUPPRESS_DEPRECATED_START namespace ngraph { @@ -33,7 +18,7 @@ namespace ngraph /// All input values that are outside of the range are set to 'min' or 'max' /// depending on which side of the range they are. The values that fall into /// this range remain unchanged. - class NGRAPH_API Clamp : public ngraph::op::util::FusedOp + class NGRAPH_API Clamp : public ngraph::op::Op { public: NGRAPH_RTTI_DECLARATION; @@ -46,9 +31,7 @@ namespace ngraph /// \param max - the upper bound of the range Clamp(const Output& data, const double min, const double max); - void pre_validate_and_infer_types() override; - - virtual OutputVector decompose_op() const override; + void validate_and_infer_types() override; virtual std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; @@ -68,5 +51,3 @@ namespace ngraph using v0::Clamp; } } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/include/ngraph/op/concat.hpp b/ngraph/core/include/ngraph/op/concat.hpp index db964d3059960b..11e5daff39f0f2 100644 --- a/ngraph/core/include/ngraph/op/concat.hpp +++ b/ngraph/core/include/ngraph/op/concat.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/constant.hpp b/ngraph/core/include/ngraph/op/constant.hpp index 749f94f2de1143..3cd0d3ac09f202 100644 --- a/ngraph/core/include/ngraph/op/constant.hpp +++ b/ngraph/core/include/ngraph/op/constant.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -208,8 +196,10 @@ namespace ngraph typename element_type_traits::value_type>( value)); break; - case element::Type_t::u1: throw std::runtime_error("unsupported type"); - case element::Type_t::undefined: throw std::runtime_error("unsupported type"); + case element::Type_t::i4: + case element::Type_t::u1: + case element::Type_t::u4: + case element::Type_t::undefined: case element::Type_t::dynamic: throw std::runtime_error("unsupported type"); } #if defined(__GNUC__) && !(__GNUC__ == 4 && __GNUC_MINOR__ == 8) @@ -351,6 +341,8 @@ namespace ngraph std::vector get_vector() const { const T* p = get_data_ptr(); + if (p == nullptr) + throw std::runtime_error("Cannot create vector! Buffer is not allocated."); return std::vector(p, p + shape_size(m_shape)); } @@ -584,8 +576,10 @@ namespace ngraph case element::Type_t::u64: write_buffer(target, source, target_element_count); break; - case element::Type_t::u1: throw std::runtime_error("unsupported type"); - case element::Type_t::undefined: throw std::runtime_error("unsupported type"); + case element::Type_t::i4: + case element::Type_t::u1: + case element::Type_t::u4: + case element::Type_t::undefined: case element::Type_t::dynamic: throw std::runtime_error("unsupported type"); } #if defined(__GNUC__) && !(__GNUC__ == 4 && __GNUC_MINOR__ == 8) diff --git a/ngraph/core/include/ngraph/op/convert.hpp b/ngraph/core/include/ngraph/op/convert.hpp index 651b68e027544b..c8b0303e32735a 100644 --- a/ngraph/core/include/ngraph/op/convert.hpp +++ b/ngraph/core/include/ngraph/op/convert.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/convert_like.hpp b/ngraph/core/include/ngraph/op/convert_like.hpp index cc6e57ffbe4f71..addea41e26aad0 100644 --- a/ngraph/core/include/ngraph/op/convert_like.hpp +++ b/ngraph/core/include/ngraph/op/convert_like.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -42,6 +30,9 @@ namespace ngraph virtual std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + + bool constant_fold(OutputVector& output_values, + const OutputVector& input_values) override; }; } // namespace v1 diff --git a/ngraph/core/include/ngraph/op/convolution.hpp b/ngraph/core/include/ngraph/op/convolution.hpp index c6481e86851e9c..c6516a5572a07f 100644 --- a/ngraph/core/include/ngraph/op/convolution.hpp +++ b/ngraph/core/include/ngraph/op/convolution.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/cos.hpp b/ngraph/core/include/ngraph/op/cos.hpp index 50fcd67046d641..f5363c619308e9 100644 --- a/ngraph/core/include/ngraph/op/cos.hpp +++ b/ngraph/core/include/ngraph/op/cos.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/cosh.hpp b/ngraph/core/include/ngraph/op/cosh.hpp index 3ebd0053a7e64f..97740bb1249d6c 100644 --- a/ngraph/core/include/ngraph/op/cosh.hpp +++ b/ngraph/core/include/ngraph/op/cosh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/ctc_greedy_decoder.hpp b/ngraph/core/include/ngraph/op/ctc_greedy_decoder.hpp index 760a470dd984b0..09780c06b740c9 100644 --- a/ngraph/core/include/ngraph/op/ctc_greedy_decoder.hpp +++ b/ngraph/core/include/ngraph/op/ctc_greedy_decoder.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -45,6 +33,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; bool get_ctc_merge_repeated() const { return m_ctc_merge_repeated; } + private: bool m_ctc_merge_repeated; }; diff --git a/ngraph/core/include/ngraph/op/ctc_greedy_decoder_seq_len.hpp b/ngraph/core/include/ngraph/op/ctc_greedy_decoder_seq_len.hpp index 444c055d07ce66..a540d768043f1c 100644 --- a/ngraph/core/include/ngraph/op/ctc_greedy_decoder_seq_len.hpp +++ b/ngraph/core/include/ngraph/op/ctc_greedy_decoder_seq_len.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/ctc_loss.hpp b/ngraph/core/include/ngraph/op/ctc_loss.hpp index 9026a766c868ab..1d4fcb50c6745c 100644 --- a/ngraph/core/include/ngraph/op/ctc_loss.hpp +++ b/ngraph/core/include/ngraph/op/ctc_loss.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -74,6 +62,7 @@ namespace ngraph } bool get_ctc_merge_repeated() const { return ctc_merge_repeated_; } bool get_unique() const { return unique_; } + private: bool preprocess_collapse_repeated_; bool ctc_merge_repeated_; diff --git a/ngraph/core/include/ngraph/op/cum_sum.hpp b/ngraph/core/include/ngraph/op/cum_sum.hpp index 83efbdc37e83c5..5db877f099c8b5 100644 --- a/ngraph/core/include/ngraph/op/cum_sum.hpp +++ b/ngraph/core/include/ngraph/op/cum_sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -106,6 +94,7 @@ namespace ngraph virtual std::shared_ptr get_default_value() const override; bool is_exclusive() const { return m_exclusive; } bool is_reverse() const { return m_reverse; } + private: bool m_exclusive; bool m_reverse; diff --git a/ngraph/core/include/ngraph/op/deformable_convolution.hpp b/ngraph/core/include/ngraph/op/deformable_convolution.hpp index 1b52f154668ebd..e1a6ad9790b7c6 100644 --- a/ngraph/core/include/ngraph/op/deformable_convolution.hpp +++ b/ngraph/core/include/ngraph/op/deformable_convolution.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -38,7 +26,7 @@ namespace ngraph /// /// \param arg Node that produces the input tensor. /// \param deformable_values Node producing the deformable values tensor. - /// \param filters Node producing the filters(kernels) tensor wit OIZYX + /// \param filters Node producing the filters(kernels) tensor with OIZYX /// layout. /// \param strides Convolution strides. /// \param pads_begin Amount of padding to be added to the beginning along diff --git a/ngraph/core/include/ngraph/op/deformable_psroi_pooling.hpp b/ngraph/core/include/ngraph/op/deformable_psroi_pooling.hpp index 9a73a8f2d37dc1..88c37e817e1713 100644 --- a/ngraph/core/include/ngraph/op/deformable_psroi_pooling.hpp +++ b/ngraph/core/include/ngraph/op/deformable_psroi_pooling.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -91,6 +79,7 @@ namespace ngraph int64_t get_spatial_bins_y() const { return m_spatial_bins_y; } float get_trans_std() const { return m_trans_std; } int64_t get_part_size() const { return m_part_size; } + private: int64_t m_output_dim; float m_spatial_scale; diff --git a/ngraph/core/include/ngraph/op/depth_to_space.hpp b/ngraph/core/include/ngraph/op/depth_to_space.hpp index 9a65583c1ba8b0..57d8ba3d56a36b 100644 --- a/ngraph/core/include/ngraph/op/depth_to_space.hpp +++ b/ngraph/core/include/ngraph/op/depth_to_space.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -22,8 +10,6 @@ #include "ngraph/op/util/fused_op.hpp" #include "ngraph/runtime/host_tensor.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - namespace ngraph { namespace op @@ -106,5 +92,3 @@ namespace ngraph const DiscreteTypeInfo& get_type_info() const override { return type_info; } }; } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/include/ngraph/op/detection_output.hpp b/ngraph/core/include/ngraph/op/detection_output.hpp index da865682301c6f..fd20c5a0e5350d 100644 --- a/ngraph/core/include/ngraph/op/detection_output.hpp +++ b/ngraph/core/include/ngraph/op/detection_output.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/dft.hpp b/ngraph/core/include/ngraph/op/dft.hpp new file mode 100644 index 00000000000000..29570dee9573eb --- /dev/null +++ b/ngraph/core/include/ngraph/op/dft.hpp @@ -0,0 +1,65 @@ +//***************************************************************************** +// Copyright 2017-2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#pragma once + +#include +#include +#include "ngraph/attribute_adapter.hpp" +#include "ngraph/op/op.hpp" +#include "ngraph/op/util/attr_types.hpp" + +namespace ngraph +{ + namespace op + { + namespace v7 + { + /// \brief An operation DFT that computes the discrete Fourier transformation. + class NGRAPH_API DFT : public Op + { + public: + NGRAPH_RTTI_DECLARATION; + DFT() = default; + + /// \brief Constructs a DFT operation. DFT is performed for full size axes. + /// + /// \param data Input data + /// \param axes Axes to perform DFT + DFT(const Output& data, const Output& axes); + + /// \brief Constructs a DFT operation. + /// + /// \param data Input data + /// \param axes Axes to perform DFT + /// \param signal_size Signal sizes for 'axes' + DFT(const Output& data, + const Output& axes, + const Output& signal_size); + + bool visit_attributes(AttributeVisitor& visitor) override; + + void validate_and_infer_types() override; + + std::shared_ptr + clone_with_new_inputs(const OutputVector& new_args) const override; + + protected: + void validate(); + }; + } + } +} diff --git a/ngraph/core/include/ngraph/op/divide.hpp b/ngraph/core/include/ngraph/op/divide.hpp index 66262d890ac97e..51993eb12c4339 100644 --- a/ngraph/core/include/ngraph/op/divide.hpp +++ b/ngraph/core/include/ngraph/op/divide.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/elu.hpp b/ngraph/core/include/ngraph/op/elu.hpp index c3c9c950922a04..ab45add17f8abe 100644 --- a/ngraph/core/include/ngraph/op/elu.hpp +++ b/ngraph/core/include/ngraph/op/elu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -48,6 +36,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; double get_alpha() const { return m_alpha; } + private: double m_alpha; }; diff --git a/ngraph/core/include/ngraph/op/embedding_segments_sum.hpp b/ngraph/core/include/ngraph/op/embedding_segments_sum.hpp index d89932bbcc0172..312bac9246bca8 100644 --- a/ngraph/core/include/ngraph/op/embedding_segments_sum.hpp +++ b/ngraph/core/include/ngraph/op/embedding_segments_sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -79,6 +67,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; virtual bool visit_attributes(AttributeVisitor& visitor) override { return true; } + private: static constexpr int EMB_TABLE = 0; static constexpr int INDICES = 1; diff --git a/ngraph/core/include/ngraph/op/embeddingbag_offsets_sum.hpp b/ngraph/core/include/ngraph/op/embeddingbag_offsets_sum.hpp index 601c0acf4d6cca..8c2b86e197c50e 100644 --- a/ngraph/core/include/ngraph/op/embeddingbag_offsets_sum.hpp +++ b/ngraph/core/include/ngraph/op/embeddingbag_offsets_sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/embeddingbag_packedsum.hpp b/ngraph/core/include/ngraph/op/embeddingbag_packedsum.hpp index ae20ccb480957b..d7cbd203b3b968 100644 --- a/ngraph/core/include/ngraph/op/embeddingbag_packedsum.hpp +++ b/ngraph/core/include/ngraph/op/embeddingbag_packedsum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/equal.hpp b/ngraph/core/include/ngraph/op/equal.hpp index 571c049446fc62..e4ef0eb0a419c5 100644 --- a/ngraph/core/include/ngraph/op/equal.hpp +++ b/ngraph/core/include/ngraph/op/equal.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/erf.hpp b/ngraph/core/include/ngraph/op/erf.hpp index e687120b49c3ee..c32e2e30344404 100644 --- a/ngraph/core/include/ngraph/op/erf.hpp +++ b/ngraph/core/include/ngraph/op/erf.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/exp.hpp b/ngraph/core/include/ngraph/op/exp.hpp index 9678603b27e128..0c48b27c8ea33c 100644 --- a/ngraph/core/include/ngraph/op/exp.hpp +++ b/ngraph/core/include/ngraph/op/exp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/experimental_detectron_detection_output.hpp b/ngraph/core/include/ngraph/op/experimental_detectron_detection_output.hpp index 868b4c2c4618e1..059b16c5a3815b 100644 --- a/ngraph/core/include/ngraph/op/experimental_detectron_detection_output.hpp +++ b/ngraph/core/include/ngraph/op/experimental_detectron_detection_output.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -28,9 +16,9 @@ namespace ngraph { namespace v6 { - /// \brief An operation ExperimentalDetectronDetectionOutput, according to - /// the repository https://github.com/openvinotoolkit/training_extensions - /// (see pytorch_toolkit/instance_segmentation/segmentoly/rcnn/detection_output.py). + /// \brief An operation ExperimentalDetectronDetectionOutput performs + /// non-maximum suppression to generate the detection output using + /// information on location and score predictions. class NGRAPH_API ExperimentalDetectronDetectionOutput : public Op { public: @@ -80,6 +68,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; /// \brief Returns attributes of the operation ExperimentalDetectronDetectionOutput const Attributes& get_attrs() const { return m_attrs; } + private: Attributes m_attrs; }; diff --git a/ngraph/core/include/ngraph/op/experimental_detectron_generate_proposals.hpp b/ngraph/core/include/ngraph/op/experimental_detectron_generate_proposals.hpp index f95f1c25274f2a..4b1e9e31825538 100644 --- a/ngraph/core/include/ngraph/op/experimental_detectron_generate_proposals.hpp +++ b/ngraph/core/include/ngraph/op/experimental_detectron_generate_proposals.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -28,9 +16,8 @@ namespace ngraph { namespace v6 { - /// \brief An operation ExperimentalDetectronGenerateProposalsSingleImage, according to - /// the repository https://github.com/openvinotoolkit/training_extensions - /// (see pytorch_toolkit/instance_segmentation/segmentoly/rcnn/proposal.py). + /// \brief An operation ExperimentalDetectronGenerateProposalsSingleImage + /// computes ROIs and their scores based on input data. class NGRAPH_API ExperimentalDetectronGenerateProposalsSingleImage : public Op { public: @@ -71,6 +58,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; const Attributes& get_attrs() const { return m_attrs; } + private: Attributes m_attrs; }; diff --git a/ngraph/core/include/ngraph/op/experimental_detectron_prior_grid_generator.hpp b/ngraph/core/include/ngraph/op/experimental_detectron_prior_grid_generator.hpp index 0f7afe9cf4909e..47a953d11bd371 100644 --- a/ngraph/core/include/ngraph/op/experimental_detectron_prior_grid_generator.hpp +++ b/ngraph/core/include/ngraph/op/experimental_detectron_prior_grid_generator.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -28,9 +16,8 @@ namespace ngraph { namespace v6 { - /// \brief An operation ExperimentalDetectronPriorGridGenerator, according to - /// the repository https://github.com/openvinotoolkit/training_extensions - /// (see pytorch_toolkit/instance_segmentation/segmentoly/rcnn/prior_box.py). + /// \brief An operation ExperimentalDetectronPriorGridGenerator generates prior + /// grids of specified sizes. class NGRAPH_API ExperimentalDetectronPriorGridGenerator : public Op { public: @@ -72,6 +59,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; /// \brief Returns attributes of this operation. const Attributes& get_attrs() const { return m_attrs; } + private: Attributes m_attrs; diff --git a/ngraph/core/include/ngraph/op/experimental_detectron_roi_feature.hpp b/ngraph/core/include/ngraph/op/experimental_detectron_roi_feature.hpp index 4a74aaf33435b8..da7d3b1119bf84 100644 --- a/ngraph/core/include/ngraph/op/experimental_detectron_roi_feature.hpp +++ b/ngraph/core/include/ngraph/op/experimental_detectron_roi_feature.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -29,9 +17,8 @@ namespace ngraph { namespace v6 { - /// \brief An operation ExperimentalDetectronROIFeatureExtractor, according to - /// the repository https://github.com/openvinotoolkit/training_extensions (see the file - /// pytorch_toolkit/instance_segmentation/segmentoly/rcnn/roi_feature_extractor.py). + /// \brief An operation ExperimentalDetectronROIFeatureExtractor + /// is the ROIAlign operation applied over a feature pyramid. class NGRAPH_API ExperimentalDetectronROIFeatureExtractor : public Op { public: @@ -68,6 +55,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; /// \brief Returns attributes of the operation. const Attributes& get_attrs() const { return m_attrs; } + private: Attributes m_attrs; }; diff --git a/ngraph/core/include/ngraph/op/experimental_detectron_topkrois.hpp b/ngraph/core/include/ngraph/op/experimental_detectron_topkrois.hpp index 2d7d9b9a5eafb6..20c0ebadd63b9e 100644 --- a/ngraph/core/include/ngraph/op/experimental_detectron_topkrois.hpp +++ b/ngraph/core/include/ngraph/op/experimental_detectron_topkrois.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -29,8 +17,7 @@ namespace ngraph namespace v6 { /// \brief An operation ExperimentalDetectronTopKROIs, according to the repository - /// https://github.com/openvinotoolkit/training_extensions (see - /// pytorch_toolkit/instance_segmentation/segmentoly/rcnn/roi_feature_extractor.py). + /// is TopK operation applied to probabilities of input ROIs. class NGRAPH_API ExperimentalDetectronTopKROIs : public Op { public: @@ -53,6 +40,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; size_t get_max_rois() const { return m_max_rois; } + private: size_t m_max_rois; }; diff --git a/ngraph/core/include/ngraph/op/extractimagepatches.hpp b/ngraph/core/include/ngraph/op/extractimagepatches.hpp index f10dc37686d51e..e9c89813d06497 100644 --- a/ngraph/core/include/ngraph/op/extractimagepatches.hpp +++ b/ngraph/core/include/ngraph/op/extractimagepatches.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -59,6 +47,7 @@ namespace ngraph void set_rates(const Shape& rates) { m_patch_selection_rates = rates; } const PadType& get_auto_pad() const { return m_padding; } void set_auto_pad(PadType& padding) { m_padding = padding; } + private: Shape m_patch_sizes; Strides m_patch_movement_strides; diff --git a/ngraph/core/include/ngraph/op/fake_quantize.hpp b/ngraph/core/include/ngraph/op/fake_quantize.hpp index e6c4d7ee395583..c5479f2b7eaa09 100644 --- a/ngraph/core/include/ngraph/op/fake_quantize.hpp +++ b/ngraph/core/include/ngraph/op/fake_quantize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -20,8 +8,6 @@ #include "ngraph/op/util/attr_types.hpp" #include "ngraph/op/util/fused_op.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - namespace ngraph { namespace op @@ -90,5 +76,3 @@ namespace ngraph using v0::FakeQuantize; } } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/include/ngraph/op/floor.hpp b/ngraph/core/include/ngraph/op/floor.hpp index 9d273737fa1d82..8094f2f6764ffb 100644 --- a/ngraph/core/include/ngraph/op/floor.hpp +++ b/ngraph/core/include/ngraph/op/floor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/floor_mod.hpp b/ngraph/core/include/ngraph/op/floor_mod.hpp index a56780c6eaca51..6191af7af7b08d 100644 --- a/ngraph/core/include/ngraph/op/floor_mod.hpp +++ b/ngraph/core/include/ngraph/op/floor_mod.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/gather.hpp b/ngraph/core/include/ngraph/op/gather.hpp index dbc72643333068..ce612f0d4e4b29 100644 --- a/ngraph/core/include/ngraph/op/gather.hpp +++ b/ngraph/core/include/ngraph/op/gather.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/gather_elements.hpp b/ngraph/core/include/ngraph/op/gather_elements.hpp index 67873727a22ec5..055719578e518f 100644 --- a/ngraph/core/include/ngraph/op/gather_elements.hpp +++ b/ngraph/core/include/ngraph/op/gather_elements.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -47,6 +35,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; int64_t get_axis() const { return m_axis; } + private: int64_t m_axis; }; diff --git a/ngraph/core/include/ngraph/op/gather_nd.hpp b/ngraph/core/include/ngraph/op/gather_nd.hpp index 021173c85c9364..4614967f293c58 100644 --- a/ngraph/core/include/ngraph/op/gather_nd.hpp +++ b/ngraph/core/include/ngraph/op/gather_nd.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -48,6 +36,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; size_t get_batch_dims() const { return m_batch_dims; } + private: size_t m_batch_dims; }; diff --git a/ngraph/core/include/ngraph/op/gather_tree.hpp b/ngraph/core/include/ngraph/op/gather_tree.hpp index 4311f4ae924e5b..bd182307ca4665 100644 --- a/ngraph/core/include/ngraph/op/gather_tree.hpp +++ b/ngraph/core/include/ngraph/op/gather_tree.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/gelu.hpp b/ngraph/core/include/ngraph/op/gelu.hpp index 48f35d20216334..f18c3f24bb9b75 100644 --- a/ngraph/core/include/ngraph/op/gelu.hpp +++ b/ngraph/core/include/ngraph/op/gelu.hpp @@ -1,31 +1,19 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include "ngraph/node.hpp" #include "ngraph/op/op.hpp" #include "ngraph/op/util/fused_op.hpp" - -NGRAPH_SUPPRESS_DEPRECATED_START +#include "ngraph/op/util/unary_elementwise_arithmetic.hpp" namespace ngraph { namespace op { + NGRAPH_SUPPRESS_DEPRECATED_START namespace v0 { /// \brief Gaussian Error Linear Unit @@ -36,7 +24,7 @@ namespace ngraph static constexpr NodeTypeInfo type_info{"Gelu", 0}; const NodeTypeInfo& get_type_info() const override { return type_info; } Gelu(); - /// \brief Constructs an Gelu operation. + /// \brief Constructs a Gelu operation. /// /// \param data Input tensor Gelu(const Output& data); @@ -51,7 +39,64 @@ namespace ngraph }; } using v0::Gelu; + NGRAPH_SUPPRESS_DEPRECATED_END + + /// \brief Specifies the approximation to calculate Gelu + enum class GeluApproximationMode + { + TANH, + ERF + }; + NGRAPH_API std::ostream& operator<<(std::ostream& s, const GeluApproximationMode& type); + + namespace v7 + { + /// \brief Gaussian Error Linear Unit + /// f(x) = 0.5 * x * (1 + erf( x / sqrt(2) ) for "approximation" = "erf" + /// f(x) = 0.5 * x * (1 + tanh([sqrt(2 / pi)] * [x + 0.044715^3]) for "approximation" = + /// "tanh" + class NGRAPH_API Gelu : public util::UnaryElementwiseArithmetic + { + public: + NGRAPH_RTTI_DECLARATION; + + Gelu() = default; + /// \brief Constructs a Gelu operation. + /// + /// \param data Input tensor + /// \param mode Approximation mode + Gelu(const Output& data, + GeluApproximationMode mode = GeluApproximationMode::ERF); + + bool visit_attributes(AttributeVisitor& visitor) override; + + void validate_and_infer_types() override; + + bool evaluate(const HostTensorVector& outputs, + const HostTensorVector& inputs) const override; + + std::shared_ptr + clone_with_new_inputs(const OutputVector& new_args) const override; + + GeluApproximationMode get_approximation_mode() const; + + private: + GeluApproximationMode m_approximation_mode = GeluApproximationMode::ERF; + }; + } } -} + template <> + class NGRAPH_API AttributeAdapter + : public EnumAttributeAdapterBase + { + public: + AttributeAdapter(op::GeluApproximationMode& value) + : EnumAttributeAdapterBase(value) + { + } -NGRAPH_SUPPRESS_DEPRECATED_END + static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", + 0}; + const DiscreteTypeInfo& get_type_info() const override { return type_info; } + }; +} diff --git a/ngraph/core/include/ngraph/op/greater.hpp b/ngraph/core/include/ngraph/op/greater.hpp index 817443b12575e6..ebe0d1b1e09f0a 100644 --- a/ngraph/core/include/ngraph/op/greater.hpp +++ b/ngraph/core/include/ngraph/op/greater.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/greater_eq.hpp b/ngraph/core/include/ngraph/op/greater_eq.hpp index 2d07755582e28a..edbda8fcd8fb60 100644 --- a/ngraph/core/include/ngraph/op/greater_eq.hpp +++ b/ngraph/core/include/ngraph/op/greater_eq.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/grn.hpp b/ngraph/core/include/ngraph/op/grn.hpp index f59c78ac1f4195..09db74ac7a3382 100644 --- a/ngraph/core/include/ngraph/op/grn.hpp +++ b/ngraph/core/include/ngraph/op/grn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/group_conv.hpp b/ngraph/core/include/ngraph/op/group_conv.hpp index 8aace7f6c38e28..3c175b512976ff 100644 --- a/ngraph/core/include/ngraph/op/group_conv.hpp +++ b/ngraph/core/include/ngraph/op/group_conv.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/gru_cell.hpp b/ngraph/core/include/ngraph/op/gru_cell.hpp index 63f1335263e09e..172e7316fb70c3 100644 --- a/ngraph/core/include/ngraph/op/gru_cell.hpp +++ b/ngraph/core/include/ngraph/op/gru_cell.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -153,6 +141,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; bool get_linear_before_reset() const { return m_linear_before_reset; } + private: /// brief Add and initialize bias input to all zeros. void add_default_bias_input(); diff --git a/ngraph/core/include/ngraph/op/gru_sequence.hpp b/ngraph/core/include/ngraph/op/gru_sequence.hpp index 113a8206d646ae..b9f01f8682ba1e 100644 --- a/ngraph/core/include/ngraph/op/gru_sequence.hpp +++ b/ngraph/core/include/ngraph/op/gru_sequence.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -58,6 +46,7 @@ namespace ngraph bool visit_attributes(AttributeVisitor& visitor) override; bool get_linear_before_reset() const { return m_linear_before_reset; } op::RecurrentSequenceDirection get_direction() const { return m_direction; } + protected: op::RecurrentSequenceDirection m_direction; bool m_linear_before_reset; diff --git a/ngraph/core/include/ngraph/op/hard_sigmoid.hpp b/ngraph/core/include/ngraph/op/hard_sigmoid.hpp index 77222b2e8f44e6..f3dbcd9eaf3fbb 100644 --- a/ngraph/core/include/ngraph/op/hard_sigmoid.hpp +++ b/ngraph/core/include/ngraph/op/hard_sigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/hsigmoid.hpp b/ngraph/core/include/ngraph/op/hsigmoid.hpp index 5180fe99dc5c0e..ee0e4d1d6ab32f 100644 --- a/ngraph/core/include/ngraph/op/hsigmoid.hpp +++ b/ngraph/core/include/ngraph/op/hsigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/hswish.hpp b/ngraph/core/include/ngraph/op/hswish.hpp index 544222bc6e34cf..87deda52cffed6 100644 --- a/ngraph/core/include/ngraph/op/hswish.hpp +++ b/ngraph/core/include/ngraph/op/hswish.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/idft.hpp b/ngraph/core/include/ngraph/op/idft.hpp new file mode 100644 index 00000000000000..e8b1d2f15ebe08 --- /dev/null +++ b/ngraph/core/include/ngraph/op/idft.hpp @@ -0,0 +1,53 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include "ngraph/attribute_adapter.hpp" +#include "ngraph/op/op.hpp" +#include "ngraph/op/util/attr_types.hpp" + +namespace ngraph +{ + namespace op + { + namespace v7 + { + /// \brief An operation IDFT that computes the inverse discrete Fourier transformation. + class NGRAPH_API IDFT : public Op + { + public: + NGRAPH_RTTI_DECLARATION; + IDFT() = default; + + /// \brief Constructs a IDFT operation. IDFT is performed for full size axes. + /// + /// \param data Input data + /// \param axes Axes to perform IDFT + IDFT(const Output& data, const Output& axes); + + /// \brief Constructs a IDFT operation. + /// + /// \param data Input data + /// \param axes Axes to perform IDFT + /// \param signal_size Signal sizes for 'axes' + IDFT(const Output& data, + const Output& axes, + const Output& signal_size); + + bool visit_attributes(AttributeVisitor& visitor) override; + + void validate_and_infer_types() override; + + std::shared_ptr + clone_with_new_inputs(const OutputVector& new_args) const override; + + protected: + void validate(); + }; + } + } +} diff --git a/ngraph/core/include/ngraph/op/interpolate.hpp b/ngraph/core/include/ngraph/op/interpolate.hpp index 742576e81a71b3..6d6265ec84f988 100644 --- a/ngraph/core/include/ngraph/op/interpolate.hpp +++ b/ngraph/core/include/ngraph/op/interpolate.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -82,6 +70,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; const InterpolateAttrs& get_attrs() const { return m_attrs; } + private: InterpolateAttrs m_attrs; }; @@ -229,6 +218,7 @@ namespace ngraph const HostTensorVector& inputs) const override; const InterpolateAttrs& get_attrs() const { return m_attrs; } + protected: /// \return The interpolation axes. std::vector get_axes() const; @@ -281,10 +271,9 @@ namespace ngraph const std::vector& sizes) const; }; } // namespace v4 - NGRAPH_SUPPRESS_DEPRECATED_START - using v0::InterpolateAttrs; + using v0::Interpolate; - NGRAPH_SUPPRESS_DEPRECATED_END + using v0::InterpolateAttrs; } // namespace op //---------------------------------------- v0 -------------------------------------------------- diff --git a/ngraph/core/include/ngraph/op/less.hpp b/ngraph/core/include/ngraph/op/less.hpp index a29f4b72aa0211..9885724e31a35b 100644 --- a/ngraph/core/include/ngraph/op/less.hpp +++ b/ngraph/core/include/ngraph/op/less.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/less_eq.hpp b/ngraph/core/include/ngraph/op/less_eq.hpp index dcccce9e7f192c..ab7f8deba5349b 100644 --- a/ngraph/core/include/ngraph/op/less_eq.hpp +++ b/ngraph/core/include/ngraph/op/less_eq.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/log.hpp b/ngraph/core/include/ngraph/op/log.hpp index ab7005fce50356..f9cc666794b489 100644 --- a/ngraph/core/include/ngraph/op/log.hpp +++ b/ngraph/core/include/ngraph/op/log.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/log_softmax.hpp b/ngraph/core/include/ngraph/op/log_softmax.hpp index 24f2baa1fcf834..8bc4cec8e06694 100644 --- a/ngraph/core/include/ngraph/op/log_softmax.hpp +++ b/ngraph/core/include/ngraph/op/log_softmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -48,6 +36,7 @@ namespace ngraph int64_t get_axis() const { return m_axis; } void set_axis(const int64_t axis) { m_axis = axis; } + private: int64_t m_axis = 1; }; diff --git a/ngraph/core/include/ngraph/op/loop.hpp b/ngraph/core/include/ngraph/op/loop.hpp index 1a4fc794ede13e..3145fe91c21554 100644 --- a/ngraph/core/include/ngraph/op/loop.hpp +++ b/ngraph/core/include/ngraph/op/loop.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -64,7 +52,6 @@ namespace ngraph /// iteration or not. Loop(const Output& trip_count, const Output& execution_condition); - int64_t get_num_iterations() const { return m_num_iterations; } Output get_concatenated_slices(const Output& value, int64_t start, int64_t stride, @@ -93,7 +80,6 @@ namespace ngraph void clone_to(Loop& dst, const OutputVector& new_args) const; SpecialBodyPorts m_special_body_ports; - int64_t m_num_iterations = -1; // -1 means infinity }; } } diff --git a/ngraph/core/include/ngraph/op/lrn.hpp b/ngraph/core/include/ngraph/op/lrn.hpp index 3a99664f9842f9..2baba69c9d1872 100644 --- a/ngraph/core/include/ngraph/op/lrn.hpp +++ b/ngraph/core/include/ngraph/op/lrn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/lstm_cell.hpp b/ngraph/core/include/ngraph/op/lstm_cell.hpp index cb9ed6ca2ca386..21e82a8f0febe4 100644 --- a/ngraph/core/include/ngraph/op/lstm_cell.hpp +++ b/ngraph/core/include/ngraph/op/lstm_cell.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -219,6 +207,7 @@ namespace ngraph bool get_input_forget() const { return m_input_forget; } LSTMWeightsFormat get_weights_format() const { return m_weights_format; } + private: /// /// \brief Creates the default bias input initialized with zeros. diff --git a/ngraph/core/include/ngraph/op/lstm_sequence.hpp b/ngraph/core/include/ngraph/op/lstm_sequence.hpp index 9c0dc8c045d928..03324555857c29 100644 --- a/ngraph/core/include/ngraph/op/lstm_sequence.hpp +++ b/ngraph/core/include/ngraph/op/lstm_sequence.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -107,6 +95,7 @@ namespace ngraph std::int64_t get_hidden_size() const { return m_hidden_size; } bool get_input_forget() const { return m_input_forget; } LSTMWeightsFormat get_weights_format() const { return m_weights_format; } + private: /// /// \brief Gets the masked value according to sequence lenght in a batch. @@ -201,6 +190,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; direction get_direction() const { return m_direction; } + private: direction m_direction; }; diff --git a/ngraph/core/include/ngraph/op/matmul.hpp b/ngraph/core/include/ngraph/op/matmul.hpp index 12913cd5f71f84..d0bd86e8f93bdb 100644 --- a/ngraph/core/include/ngraph/op/matmul.hpp +++ b/ngraph/core/include/ngraph/op/matmul.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -53,6 +41,9 @@ namespace ngraph bool get_transpose_a() const { return m_transpose_a; } bool get_transpose_b() const { return m_transpose_b; } + void set_transpose_a(bool transpose_a) { m_transpose_a = transpose_a; } + void set_transpose_b(bool transpose_b) { m_transpose_b = transpose_b; } + private: bool m_transpose_a; bool m_transpose_b; diff --git a/ngraph/core/include/ngraph/op/max.hpp b/ngraph/core/include/ngraph/op/max.hpp index 995e48653df384..5d83e74f31cfe5 100644 --- a/ngraph/core/include/ngraph/op/max.hpp +++ b/ngraph/core/include/ngraph/op/max.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/max_pool.hpp b/ngraph/core/include/ngraph/op/max_pool.hpp index c73adc7905eb54..3dbd80fd864af9 100644 --- a/ngraph/core/include/ngraph/op/max_pool.hpp +++ b/ngraph/core/include/ngraph/op/max_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/maximum.hpp b/ngraph/core/include/ngraph/op/maximum.hpp index 2ec368c720f03f..b0361ec8b129be 100644 --- a/ngraph/core/include/ngraph/op/maximum.hpp +++ b/ngraph/core/include/ngraph/op/maximum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/min.hpp b/ngraph/core/include/ngraph/op/min.hpp index 59d2b2e34bb77d..78cd5edcbbb031 100644 --- a/ngraph/core/include/ngraph/op/min.hpp +++ b/ngraph/core/include/ngraph/op/min.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/minimum.hpp b/ngraph/core/include/ngraph/op/minimum.hpp index d39b3a3eff8358..5e20fece2a2cbe 100644 --- a/ngraph/core/include/ngraph/op/minimum.hpp +++ b/ngraph/core/include/ngraph/op/minimum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/mish.hpp b/ngraph/core/include/ngraph/op/mish.hpp index 6d1c004abf8432..5e2042f4864e16 100644 --- a/ngraph/core/include/ngraph/op/mish.hpp +++ b/ngraph/core/include/ngraph/op/mish.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/mod.hpp b/ngraph/core/include/ngraph/op/mod.hpp index 8b7eb381350258..73eab9f5f35198 100644 --- a/ngraph/core/include/ngraph/op/mod.hpp +++ b/ngraph/core/include/ngraph/op/mod.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -52,6 +40,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; const AutoBroadcastSpec& get_auto_broadcast() const { return m_auto_broadcast; } + private: AutoBroadcastSpec m_auto_broadcast; }; diff --git a/ngraph/core/include/ngraph/op/multiply.hpp b/ngraph/core/include/ngraph/op/multiply.hpp index b20e10959b8eeb..afae521d775ff8 100644 --- a/ngraph/core/include/ngraph/op/multiply.hpp +++ b/ngraph/core/include/ngraph/op/multiply.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/mvn.hpp b/ngraph/core/include/ngraph/op/mvn.hpp index 7d68a378ba3715..d94a2145f2db9c 100644 --- a/ngraph/core/include/ngraph/op/mvn.hpp +++ b/ngraph/core/include/ngraph/op/mvn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -79,6 +67,7 @@ namespace ngraph bool get_normalize_variance() const { return m_normalize_variance; } AxisSet get_reduction_axes() const { return m_reduction_axes; } void set_reduction_axes(AxisSet axes) { m_reduction_axes = axes; } + private: double m_eps = 1e-9; bool m_across_channels; @@ -137,6 +126,7 @@ namespace ngraph float get_eps() const { return m_eps; } bool get_normalize_variance() const { return m_normalize_variance; } MVNEpsMode get_eps_mode() const { return m_eps_mode; } + private: bool m_normalize_variance = true; float m_eps = (float)1e-6; diff --git a/ngraph/core/include/ngraph/op/negative.hpp b/ngraph/core/include/ngraph/op/negative.hpp index 09d96d1b058115..7ccfeb11b3eca8 100644 --- a/ngraph/core/include/ngraph/op/negative.hpp +++ b/ngraph/core/include/ngraph/op/negative.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/non_max_suppression.hpp b/ngraph/core/include/ngraph/op/non_max_suppression.hpp index eb459007d0d8e5..9b2136d24d582b 100644 --- a/ngraph/core/include/ngraph/op/non_max_suppression.hpp +++ b/ngraph/core/include/ngraph/op/non_max_suppression.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/non_zero.hpp b/ngraph/core/include/ngraph/op/non_zero.hpp index be4ab98c7ac86e..dffcb3015583ee 100644 --- a/ngraph/core/include/ngraph/op/non_zero.hpp +++ b/ngraph/core/include/ngraph/op/non_zero.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/normalize_l2.hpp b/ngraph/core/include/ngraph/op/normalize_l2.hpp index 814242c9a6d04e..e025af6f10bafa 100644 --- a/ngraph/core/include/ngraph/op/normalize_l2.hpp +++ b/ngraph/core/include/ngraph/op/normalize_l2.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/not.hpp b/ngraph/core/include/ngraph/op/not.hpp index 2514faea3a7dd5..8b19d7648fae4f 100644 --- a/ngraph/core/include/ngraph/op/not.hpp +++ b/ngraph/core/include/ngraph/op/not.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/not_equal.hpp b/ngraph/core/include/ngraph/op/not_equal.hpp index 600fa7dfaa541d..33e71977181717 100644 --- a/ngraph/core/include/ngraph/op/not_equal.hpp +++ b/ngraph/core/include/ngraph/op/not_equal.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/one_hot.hpp b/ngraph/core/include/ngraph/op/one_hot.hpp index f05ba26f9999ae..065e20bf25b45a 100644 --- a/ngraph/core/include/ngraph/op/one_hot.hpp +++ b/ngraph/core/include/ngraph/op/one_hot.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -58,6 +46,7 @@ namespace ngraph /// \return The index of the one-hot axis. int64_t get_axis() const { return m_axis; } void set_axis(int64_t axis) { m_axis = axis; } + protected: int64_t m_axis; }; diff --git a/ngraph/core/include/ngraph/op/op.hpp b/ngraph/core/include/ngraph/op/op.hpp index 8894b29d7b9b7d..495c3037c29f1b 100644 --- a/ngraph/core/include/ngraph/op/op.hpp +++ b/ngraph/core/include/ngraph/op/op.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/or.hpp b/ngraph/core/include/ngraph/op/or.hpp index 36d9f9ecfc4d7b..45e891f6050f7c 100644 --- a/ngraph/core/include/ngraph/op/or.hpp +++ b/ngraph/core/include/ngraph/op/or.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/pad.hpp b/ngraph/core/include/ngraph/op/pad.hpp index 2d792f81ab0683..3590241b7b0fc0 100644 --- a/ngraph/core/include/ngraph/op/pad.hpp +++ b/ngraph/core/include/ngraph/op/pad.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/parameter.hpp b/ngraph/core/include/ngraph/op/parameter.hpp index 4b0ad1b016f956..0bab533dc0e11c 100644 --- a/ngraph/core/include/ngraph/op/parameter.hpp +++ b/ngraph/core/include/ngraph/op/parameter.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -85,6 +73,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } + protected: ParameterVector& m_ref; }; diff --git a/ngraph/core/include/ngraph/op/power.hpp b/ngraph/core/include/ngraph/op/power.hpp index 6ba6cafcc4ce91..471fd36e56821e 100644 --- a/ngraph/core/include/ngraph/op/power.hpp +++ b/ngraph/core/include/ngraph/op/power.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/prelu.hpp b/ngraph/core/include/ngraph/op/prelu.hpp index 2590aba86367fe..64f322ec97a18f 100644 --- a/ngraph/core/include/ngraph/op/prelu.hpp +++ b/ngraph/core/include/ngraph/op/prelu.hpp @@ -1,26 +1,11 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include "ngraph/node.hpp" #include "ngraph/op/op.hpp" -#include "ngraph/op/util/fused_op.hpp" - -NGRAPH_SUPPRESS_DEPRECATED_START namespace ngraph { @@ -32,7 +17,7 @@ namespace ngraph /// x < 0 => f(x) = x * slope /// x >= 0 => f(x) = x /// - class NGRAPH_API PRelu : public ngraph::op::util::FusedOp + class NGRAPH_API PRelu : public ngraph::op::Op { public: NGRAPH_RTTI_DECLARATION; @@ -44,12 +29,11 @@ namespace ngraph PRelu(const Output& data, const Output& slope); bool visit_attributes(AttributeVisitor& visitor) override; - virtual OutputVector decompose_op() const override; virtual std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; - void pre_validate_and_infer_types() override; + void validate_and_infer_types() override; bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override; @@ -58,5 +42,3 @@ namespace ngraph using v0::PRelu; } } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/include/ngraph/op/prior_box.hpp b/ngraph/core/include/ngraph/op/prior_box.hpp index 38efb930b2653a..2e0318af7cc46a 100644 --- a/ngraph/core/include/ngraph/op/prior_box.hpp +++ b/ngraph/core/include/ngraph/op/prior_box.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/prior_box_clustered.hpp b/ngraph/core/include/ngraph/op/prior_box_clustered.hpp index e1920cfab000f2..c890b5335916cb 100644 --- a/ngraph/core/include/ngraph/op/prior_box_clustered.hpp +++ b/ngraph/core/include/ngraph/op/prior_box_clustered.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/proposal.hpp b/ngraph/core/include/ngraph/op/proposal.hpp index 886183f94aef53..1b9a11b1e68a27 100644 --- a/ngraph/core/include/ngraph/op/proposal.hpp +++ b/ngraph/core/include/ngraph/op/proposal.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/psroi_pooling.hpp b/ngraph/core/include/ngraph/op/psroi_pooling.hpp index 8dce8155eeba05..c664b8d56464e2 100644 --- a/ngraph/core/include/ngraph/op/psroi_pooling.hpp +++ b/ngraph/core/include/ngraph/op/psroi_pooling.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -63,6 +51,7 @@ namespace ngraph int get_spatial_bins_x() const { return m_spatial_bins_x; } int get_spatial_bins_y() const { return m_spatial_bins_y; } const std::string& get_mode() const { return m_mode; } + private: size_t m_output_dim; size_t m_group_size; diff --git a/ngraph/core/include/ngraph/op/range.hpp b/ngraph/core/include/ngraph/op/range.hpp index c86390ce8f795e..47b90ae2316560 100644 --- a/ngraph/core/include/ngraph/op/range.hpp +++ b/ngraph/core/include/ngraph/op/range.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/read_value.hpp b/ngraph/core/include/ngraph/op/read_value.hpp index b21e84981e26c9..83be3c11550890 100644 --- a/ngraph/core/include/ngraph/op/read_value.hpp +++ b/ngraph/core/include/ngraph/op/read_value.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -112,6 +100,8 @@ namespace ngraph void validate_and_infer_types() override; + void revalidate_and_infer_types() override; + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; diff --git a/ngraph/core/include/ngraph/op/reduce_l1.hpp b/ngraph/core/include/ngraph/op/reduce_l1.hpp index 5b5a67d044f88f..b09c9398be73e5 100644 --- a/ngraph/core/include/ngraph/op/reduce_l1.hpp +++ b/ngraph/core/include/ngraph/op/reduce_l1.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reduce_l2.hpp b/ngraph/core/include/ngraph/op/reduce_l2.hpp index 8e338da972d25d..3841d359141f56 100644 --- a/ngraph/core/include/ngraph/op/reduce_l2.hpp +++ b/ngraph/core/include/ngraph/op/reduce_l2.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reduce_logical_and.hpp b/ngraph/core/include/ngraph/op/reduce_logical_and.hpp index f57aa9420318ef..3f969363e921d2 100644 --- a/ngraph/core/include/ngraph/op/reduce_logical_and.hpp +++ b/ngraph/core/include/ngraph/op/reduce_logical_and.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reduce_logical_or.hpp b/ngraph/core/include/ngraph/op/reduce_logical_or.hpp index 8bea85b40470e4..ee9564f9a237c8 100644 --- a/ngraph/core/include/ngraph/op/reduce_logical_or.hpp +++ b/ngraph/core/include/ngraph/op/reduce_logical_or.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reduce_mean.hpp b/ngraph/core/include/ngraph/op/reduce_mean.hpp index 087e64284bafaf..6eca8555be3fea 100644 --- a/ngraph/core/include/ngraph/op/reduce_mean.hpp +++ b/ngraph/core/include/ngraph/op/reduce_mean.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reduce_prod.hpp b/ngraph/core/include/ngraph/op/reduce_prod.hpp index 7543b92eb50808..c54b87a64b9a03 100644 --- a/ngraph/core/include/ngraph/op/reduce_prod.hpp +++ b/ngraph/core/include/ngraph/op/reduce_prod.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reduce_sum.hpp b/ngraph/core/include/ngraph/op/reduce_sum.hpp index 89f5dce26a5250..8becb286f6387d 100644 --- a/ngraph/core/include/ngraph/op/reduce_sum.hpp +++ b/ngraph/core/include/ngraph/op/reduce_sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/region_yolo.hpp b/ngraph/core/include/ngraph/op/region_yolo.hpp index 2b4a68d446c947..feee9b41114302 100644 --- a/ngraph/core/include/ngraph/op/region_yolo.hpp +++ b/ngraph/core/include/ngraph/op/region_yolo.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -69,6 +57,7 @@ namespace ngraph const std::vector& get_anchors() const { return m_anchors; } int get_axis() const { return m_axis; } int get_end_axis() const { return m_end_axis; } + private: size_t m_num_coords; size_t m_num_classes; diff --git a/ngraph/core/include/ngraph/op/relu.hpp b/ngraph/core/include/ngraph/op/relu.hpp index e74c4a85cec6fb..91d0cc6ae8fc7a 100644 --- a/ngraph/core/include/ngraph/op/relu.hpp +++ b/ngraph/core/include/ngraph/op/relu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reorg_yolo.hpp b/ngraph/core/include/ngraph/op/reorg_yolo.hpp index a3d100c072e875..402b999a208db3 100644 --- a/ngraph/core/include/ngraph/op/reorg_yolo.hpp +++ b/ngraph/core/include/ngraph/op/reorg_yolo.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -47,6 +35,7 @@ namespace ngraph clone_with_new_inputs(const OutputVector& new_args) const override; Strides get_strides() const { return m_strides; } + private: Strides m_strides; }; diff --git a/ngraph/core/include/ngraph/op/reshape.hpp b/ngraph/core/include/ngraph/op/reshape.hpp index d0951c005bcb42..7c55fb5d507b2d 100644 --- a/ngraph/core/include/ngraph/op/reshape.hpp +++ b/ngraph/core/include/ngraph/op/reshape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/result.hpp b/ngraph/core/include/ngraph/op/result.hpp index c29c92ccbdfa70..c0c0f113b76823 100644 --- a/ngraph/core/include/ngraph/op/result.hpp +++ b/ngraph/core/include/ngraph/op/result.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -70,6 +58,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } + protected: ResultVector& m_ref; }; diff --git a/ngraph/core/include/ngraph/op/reverse.hpp b/ngraph/core/include/ngraph/op/reverse.hpp index b732dbe7c3808a..aca1ea403856a6 100644 --- a/ngraph/core/include/ngraph/op/reverse.hpp +++ b/ngraph/core/include/ngraph/op/reverse.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/reverse_sequence.hpp b/ngraph/core/include/ngraph/op/reverse_sequence.hpp index 9e86c11c03148d..765156e7343103 100644 --- a/ngraph/core/include/ngraph/op/reverse_sequence.hpp +++ b/ngraph/core/include/ngraph/op/reverse_sequence.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -54,6 +42,7 @@ namespace ngraph size_t get_sequence_axis() const { return m_normalized_seq_axis; } int64_t get_origin_sequence_axis() const { return m_seq_axis; } void set_sequence_axis(int64_t sequence_axis) { m_seq_axis = sequence_axis; } + private: int64_t m_batch_axis; int64_t m_seq_axis = 1; diff --git a/ngraph/core/include/ngraph/op/rnn_cell.hpp b/ngraph/core/include/ngraph/op/rnn_cell.hpp index 07656be116eb38..1e7b54b957bd34 100644 --- a/ngraph/core/include/ngraph/op/rnn_cell.hpp +++ b/ngraph/core/include/ngraph/op/rnn_cell.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/rnn_sequence.hpp b/ngraph/core/include/ngraph/op/rnn_sequence.hpp index 03640d2e7c4c0c..072c45ddf7517d 100644 --- a/ngraph/core/include/ngraph/op/rnn_sequence.hpp +++ b/ngraph/core/include/ngraph/op/rnn_sequence.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -58,6 +46,7 @@ namespace ngraph bool visit_attributes(AttributeVisitor& visitor) override; op::RecurrentSequenceDirection get_direction() const { return m_direction; } + protected: op::RecurrentSequenceDirection m_direction; }; diff --git a/ngraph/core/include/ngraph/op/roi_align.hpp b/ngraph/core/include/ngraph/op/roi_align.hpp index e26032d8d9a00d..a208876935b82d 100644 --- a/ngraph/core/include/ngraph/op/roi_align.hpp +++ b/ngraph/core/include/ngraph/op/roi_align.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/roi_pooling.hpp b/ngraph/core/include/ngraph/op/roi_pooling.hpp index b9b2b303cc0074..2fcf3443639bb8 100644 --- a/ngraph/core/include/ngraph/op/roi_pooling.hpp +++ b/ngraph/core/include/ngraph/op/roi_pooling.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/roll.hpp b/ngraph/core/include/ngraph/op/roll.hpp new file mode 100644 index 00000000000000..12cce8f77353f9 --- /dev/null +++ b/ngraph/core/include/ngraph/op/roll.hpp @@ -0,0 +1,44 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "ngraph/node.hpp" +#include "ngraph/op/op.hpp" + +namespace ngraph +{ + namespace op + { + namespace v7 + { + /// \brief Tensor roll operation. + class NGRAPH_API Roll : public Op + { + public: + NGRAPH_RTTI_DECLARATION; + + Roll() = default; + + /// + /// \brief Constructs a roll operation. + /// + /// \param data Node producing the tensor to be shifted. + /// \param shift Node producing the 0D or 1D tensor which specifies the + /// number of places by which the elements are shifted. + /// \param axes Node producing the 0D or 1D tensor which specifies axes + /// along which elements are shifted. + /// + Roll(const Output& data, const Output& shift, const Output& axes); + + void validate_and_infer_types() override; + + bool visit_attributes(AttributeVisitor& visitor) override; + + std::shared_ptr + clone_with_new_inputs(const OutputVector& new_args) const override; + }; + } // namespace v7 + } // namespace op +} // namespace ngraph diff --git a/ngraph/core/include/ngraph/op/round.hpp b/ngraph/core/include/ngraph/op/round.hpp index 636492c40c523c..8e9832f6c04e70 100644 --- a/ngraph/core/include/ngraph/op/round.hpp +++ b/ngraph/core/include/ngraph/op/round.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -61,6 +49,7 @@ namespace ngraph const HostTensorVector& inputs) const override; RoundMode get_mode() const { return m_mode; } + private: RoundMode m_mode; }; diff --git a/ngraph/core/include/ngraph/op/scatter_elements_update.hpp b/ngraph/core/include/ngraph/op/scatter_elements_update.hpp index 4e28536e9dd502..89de7aee85bc2f 100644 --- a/ngraph/core/include/ngraph/op/scatter_elements_update.hpp +++ b/ngraph/core/include/ngraph/op/scatter_elements_update.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/scatter_nd_update.hpp b/ngraph/core/include/ngraph/op/scatter_nd_update.hpp index 90655482c738c8..3fccbdee97ae91 100644 --- a/ngraph/core/include/ngraph/op/scatter_nd_update.hpp +++ b/ngraph/core/include/ngraph/op/scatter_nd_update.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -44,6 +32,8 @@ namespace ngraph virtual std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + bool evaluate(const HostTensorVector& outputs, + const HostTensorVector& inputs) const override; }; } using v3::ScatterNDUpdate; diff --git a/ngraph/core/include/ngraph/op/scatter_update.hpp b/ngraph/core/include/ngraph/op/scatter_update.hpp index 81510a9823d0bb..915c02eb989663 100644 --- a/ngraph/core/include/ngraph/op/scatter_update.hpp +++ b/ngraph/core/include/ngraph/op/scatter_update.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/select.hpp b/ngraph/core/include/ngraph/op/select.hpp index 83a0eb9af551b2..78cd06eb3e0d61 100644 --- a/ngraph/core/include/ngraph/op/select.hpp +++ b/ngraph/core/include/ngraph/op/select.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/selu.hpp b/ngraph/core/include/ngraph/op/selu.hpp index ba7c046872e81a..3c827872bfc2f7 100644 --- a/ngraph/core/include/ngraph/op/selu.hpp +++ b/ngraph/core/include/ngraph/op/selu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -43,7 +31,7 @@ namespace ngraph Selu(const Output& data, const Output& alpha, const Output& lambda); - + virtual void pre_validate_and_infer_types() override; bool visit_attributes(AttributeVisitor& visitor) override; virtual OutputVector decompose_op() const override; diff --git a/ngraph/core/include/ngraph/op/shape_of.hpp b/ngraph/core/include/ngraph/op/shape_of.hpp index 9eeb87768a1925..6158d3c9321b61 100644 --- a/ngraph/core/include/ngraph/op/shape_of.hpp +++ b/ngraph/core/include/ngraph/op/shape_of.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/shuffle_channels.hpp b/ngraph/core/include/ngraph/op/shuffle_channels.hpp index b4284ac552c54a..0506ce57a92968 100644 --- a/ngraph/core/include/ngraph/op/shuffle_channels.hpp +++ b/ngraph/core/include/ngraph/op/shuffle_channels.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -21,8 +9,6 @@ #include "ngraph/node.hpp" #include "ngraph/op/util/fused_op.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - namespace ngraph { namespace op @@ -79,5 +65,3 @@ namespace ngraph using v0::ShuffleChannels; } } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/include/ngraph/op/sigmoid.hpp b/ngraph/core/include/ngraph/op/sigmoid.hpp index 68d635085b0f59..3033834a5ccd8c 100644 --- a/ngraph/core/include/ngraph/op/sigmoid.hpp +++ b/ngraph/core/include/ngraph/op/sigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/sign.hpp b/ngraph/core/include/ngraph/op/sign.hpp index 0e3e2b7e064eb7..06151904d654c4 100644 --- a/ngraph/core/include/ngraph/op/sign.hpp +++ b/ngraph/core/include/ngraph/op/sign.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/sin.hpp b/ngraph/core/include/ngraph/op/sin.hpp index 5a431d398a930a..9660925ce7923d 100644 --- a/ngraph/core/include/ngraph/op/sin.hpp +++ b/ngraph/core/include/ngraph/op/sin.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/sinh.hpp b/ngraph/core/include/ngraph/op/sinh.hpp index 465a923ae7c330..d659a28b9517a4 100644 --- a/ngraph/core/include/ngraph/op/sinh.hpp +++ b/ngraph/core/include/ngraph/op/sinh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/sink.hpp b/ngraph/core/include/ngraph/op/sink.hpp index 6b491bc228d83b..4c7a39da0de5d8 100644 --- a/ngraph/core/include/ngraph/op/sink.hpp +++ b/ngraph/core/include/ngraph/op/sink.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/softmax.hpp b/ngraph/core/include/ngraph/op/softmax.hpp index e97661584daa1c..d90df0fc86476f 100644 --- a/ngraph/core/include/ngraph/op/softmax.hpp +++ b/ngraph/core/include/ngraph/op/softmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/softplus.hpp b/ngraph/core/include/ngraph/op/softplus.hpp index 021a1ffad627a2..221442b9506c0c 100644 --- a/ngraph/core/include/ngraph/op/softplus.hpp +++ b/ngraph/core/include/ngraph/op/softplus.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/space_to_batch.hpp b/ngraph/core/include/ngraph/op/space_to_batch.hpp index 561db1afd6c4f9..21ddf1c5175a0f 100644 --- a/ngraph/core/include/ngraph/op/space_to_batch.hpp +++ b/ngraph/core/include/ngraph/op/space_to_batch.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/space_to_depth.hpp b/ngraph/core/include/ngraph/op/space_to_depth.hpp index 55362b2e8c178f..51b4fe9a6312c0 100644 --- a/ngraph/core/include/ngraph/op/space_to_depth.hpp +++ b/ngraph/core/include/ngraph/op/space_to_depth.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -20,8 +8,6 @@ #include "ngraph/op/util/fused_op.hpp" #include "ngraph/runtime/host_tensor.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - namespace ngraph { namespace op @@ -103,5 +89,3 @@ namespace ngraph const DiscreteTypeInfo& get_type_info() const override { return type_info; } }; } // namespace ngraph - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/include/ngraph/op/split.hpp b/ngraph/core/include/ngraph/op/split.hpp index 0827da4d344f12..aa2efb693593b6 100644 --- a/ngraph/core/include/ngraph/op/split.hpp +++ b/ngraph/core/include/ngraph/op/split.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/sqrt.hpp b/ngraph/core/include/ngraph/op/sqrt.hpp index 8a03f883993bef..5e0d887a21ad8a 100644 --- a/ngraph/core/include/ngraph/op/sqrt.hpp +++ b/ngraph/core/include/ngraph/op/sqrt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/squared_difference.hpp b/ngraph/core/include/ngraph/op/squared_difference.hpp index 0916129f1789d2..dd8a50bcdcfd76 100644 --- a/ngraph/core/include/ngraph/op/squared_difference.hpp +++ b/ngraph/core/include/ngraph/op/squared_difference.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/squeeze.hpp b/ngraph/core/include/ngraph/op/squeeze.hpp index 6b64d46549cc56..28cd28afa340c0 100644 --- a/ngraph/core/include/ngraph/op/squeeze.hpp +++ b/ngraph/core/include/ngraph/op/squeeze.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -51,6 +39,8 @@ namespace ngraph virtual std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; + + bool is_dynamic() const override; }; } using v0::Squeeze; diff --git a/ngraph/core/include/ngraph/op/strided_slice.hpp b/ngraph/core/include/ngraph/op/strided_slice.hpp index 8611273e9255aa..b1f3624da8f1f2 100644 --- a/ngraph/core/include/ngraph/op/strided_slice.hpp +++ b/ngraph/core/include/ngraph/op/strided_slice.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/subtract.hpp b/ngraph/core/include/ngraph/op/subtract.hpp index c53d1eaa9f6fba..c3c1b43e48e4bc 100644 --- a/ngraph/core/include/ngraph/op/subtract.hpp +++ b/ngraph/core/include/ngraph/op/subtract.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/swish.hpp b/ngraph/core/include/ngraph/op/swish.hpp index d27ec535c450aa..eb03fba5edd93b 100644 --- a/ngraph/core/include/ngraph/op/swish.hpp +++ b/ngraph/core/include/ngraph/op/swish.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/tan.hpp b/ngraph/core/include/ngraph/op/tan.hpp index 510e2c2a3f74c7..386df888c85153 100644 --- a/ngraph/core/include/ngraph/op/tan.hpp +++ b/ngraph/core/include/ngraph/op/tan.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/tanh.hpp b/ngraph/core/include/ngraph/op/tanh.hpp index 87d82577e77b2d..ff5ccac39cf4ac 100644 --- a/ngraph/core/include/ngraph/op/tanh.hpp +++ b/ngraph/core/include/ngraph/op/tanh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/tensor_iterator.hpp b/ngraph/core/include/ngraph/op/tensor_iterator.hpp index 2f0284d769cbd3..b2090fdf774bc3 100644 --- a/ngraph/core/include/ngraph/op/tensor_iterator.hpp +++ b/ngraph/core/include/ngraph/op/tensor_iterator.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -50,14 +38,8 @@ namespace ngraph /// \return the body of the iteration std::shared_ptr get_function() override; - int64_t get_num_iterations() const { return m_num_iterations; } - void set_num_iterations(int64_t num_iterations) - { - m_num_iterations = num_iterations; - } - private: - int64_t m_num_iterations = -1; + void try_to_set_num_iterations_if_no_slice_inputs(); }; } using v0::TensorIterator; diff --git a/ngraph/core/include/ngraph/op/tile.hpp b/ngraph/core/include/ngraph/op/tile.hpp index d0b776afbcc134..fb65df10658d57 100644 --- a/ngraph/core/include/ngraph/op/tile.hpp +++ b/ngraph/core/include/ngraph/op/tile.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/topk.hpp b/ngraph/core/include/ngraph/op/topk.hpp index f23baa29657fda..ab63c3ca28b8f7 100644 --- a/ngraph/core/include/ngraph/op/topk.hpp +++ b/ngraph/core/include/ngraph/op/topk.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/transpose.hpp b/ngraph/core/include/ngraph/op/transpose.hpp index 6fb378dfbeca4c..e0b934c9cdf1d3 100644 --- a/ngraph/core/include/ngraph/op/transpose.hpp +++ b/ngraph/core/include/ngraph/op/transpose.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/unsqueeze.hpp b/ngraph/core/include/ngraph/op/unsqueeze.hpp index 46529757794d35..6d9587aecd6499 100644 --- a/ngraph/core/include/ngraph/op/unsqueeze.hpp +++ b/ngraph/core/include/ngraph/op/unsqueeze.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/activation_functions.hpp b/ngraph/core/include/ngraph/op/util/activation_functions.hpp index 80f269c8d7e061..2963f6c1d8b937 100644 --- a/ngraph/core/include/ngraph/op/util/activation_functions.hpp +++ b/ngraph/core/include/ngraph/op/util/activation_functions.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -93,6 +81,7 @@ namespace ngraph void set_alpha(float alpha) { m_alpha = alpha; } void set_beta(float beta) { m_beta = beta; } + private: /// \brief Activation function wrapper. ActivationFunctionType m_function; diff --git a/ngraph/core/include/ngraph/op/util/arithmetic_reduction.hpp b/ngraph/core/include/ngraph/op/util/arithmetic_reduction.hpp index de0f0e702412c9..acc5e22b9f68a9 100644 --- a/ngraph/core/include/ngraph/op/util/arithmetic_reduction.hpp +++ b/ngraph/core/include/ngraph/op/util/arithmetic_reduction.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/arithmetic_reductions_keep_dims.hpp b/ngraph/core/include/ngraph/op/util/arithmetic_reductions_keep_dims.hpp index 1694372de800a0..5398bb53394ccc 100644 --- a/ngraph/core/include/ngraph/op/util/arithmetic_reductions_keep_dims.hpp +++ b/ngraph/core/include/ngraph/op/util/arithmetic_reductions_keep_dims.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -46,6 +34,7 @@ namespace ngraph /// For each such axis, output dimension is equal to 1. bool get_keep_dims() const { return m_keep_dims; } void set_keep_dims(bool keep_dims) { m_keep_dims = keep_dims; } + private: bool m_keep_dims = false; }; diff --git a/ngraph/core/include/ngraph/op/util/attr_types.hpp b/ngraph/core/include/ngraph/op/util/attr_types.hpp index 61c169784a79a6..ea9f8516b8fb68 100644 --- a/ngraph/core/include/ngraph/op/util/attr_types.hpp +++ b/ngraph/core/include/ngraph/op/util/attr_types.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -368,6 +356,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } + protected: op::AutoBroadcastSpec& m_ref; }; @@ -419,6 +408,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } + protected: op::BroadcastModeSpec& m_ref; }; diff --git a/ngraph/core/include/ngraph/op/util/binary_elementwise_arithmetic.hpp b/ngraph/core/include/ngraph/op/util/binary_elementwise_arithmetic.hpp index 1eb0b18e33c022..34eaa0623bf4b9 100644 --- a/ngraph/core/include/ngraph/op/util/binary_elementwise_arithmetic.hpp +++ b/ngraph/core/include/ngraph/op/util/binary_elementwise_arithmetic.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/binary_elementwise_comparison.hpp b/ngraph/core/include/ngraph/op/util/binary_elementwise_comparison.hpp index 934987a977a04b..e3df7b20960fe5 100644 --- a/ngraph/core/include/ngraph/op/util/binary_elementwise_comparison.hpp +++ b/ngraph/core/include/ngraph/op/util/binary_elementwise_comparison.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/binary_elementwise_logical.hpp b/ngraph/core/include/ngraph/op/util/binary_elementwise_logical.hpp index f1377b6c2250cf..7925401be17c2f 100644 --- a/ngraph/core/include/ngraph/op/util/binary_elementwise_logical.hpp +++ b/ngraph/core/include/ngraph/op/util/binary_elementwise_logical.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/broadcast_base.hpp b/ngraph/core/include/ngraph/op/util/broadcast_base.hpp index c6c8b2eac045fc..aa2c20d3bdb9db 100644 --- a/ngraph/core/include/ngraph/op/util/broadcast_base.hpp +++ b/ngraph/core/include/ngraph/op/util/broadcast_base.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/axis_set.hpp" #include "ngraph/axis_vector.hpp" diff --git a/ngraph/core/include/ngraph/op/util/elementwise_args.hpp b/ngraph/core/include/ngraph/op/util/elementwise_args.hpp index 8f8fc8a118ec8c..a050ea74ddd4d9 100644 --- a/ngraph/core/include/ngraph/op/util/elementwise_args.hpp +++ b/ngraph/core/include/ngraph/op/util/elementwise_args.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/embeddingbag_offsets_base.hpp b/ngraph/core/include/ngraph/op/util/embeddingbag_offsets_base.hpp index 171b2ab131357b..a8990bedf1542f 100644 --- a/ngraph/core/include/ngraph/op/util/embeddingbag_offsets_base.hpp +++ b/ngraph/core/include/ngraph/op/util/embeddingbag_offsets_base.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/embeddingbag_packed_base.hpp b/ngraph/core/include/ngraph/op/util/embeddingbag_packed_base.hpp index 1e328c514e1816..9ce6e611137e88 100644 --- a/ngraph/core/include/ngraph/op/util/embeddingbag_packed_base.hpp +++ b/ngraph/core/include/ngraph/op/util/embeddingbag_packed_base.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/eval_copy.hpp b/ngraph/core/include/ngraph/op/util/eval_copy.hpp index a7e5ec89f8ad91..f0ff3d6417b31f 100644 --- a/ngraph/core/include/ngraph/op/util/eval_copy.hpp +++ b/ngraph/core/include/ngraph/op/util/eval_copy.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/fused_op.hpp b/ngraph/core/include/ngraph/op/util/fused_op.hpp index 4b3e07013dcb30..7bbdb03641585d 100644 --- a/ngraph/core/include/ngraph/op/util/fused_op.hpp +++ b/ngraph/core/include/ngraph/op/util/fused_op.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -51,6 +39,7 @@ namespace ngraph // Post-validation hook that will be invoked after op decomposition // in validate_and_infer_types(). virtual void post_validate_and_infer_types() {} + protected: FusedOp(); diff --git a/ngraph/core/include/ngraph/op/util/index_reduction.hpp b/ngraph/core/include/ngraph/op/util/index_reduction.hpp index c8822835e02498..c745139932b0c8 100644 --- a/ngraph/core/include/ngraph/op/util/index_reduction.hpp +++ b/ngraph/core/include/ngraph/op/util/index_reduction.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/logical_reduction.hpp b/ngraph/core/include/ngraph/op/util/logical_reduction.hpp index 3a7560d496bbaa..9508887e4a9d6a 100644 --- a/ngraph/core/include/ngraph/op/util/logical_reduction.hpp +++ b/ngraph/core/include/ngraph/op/util/logical_reduction.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/logical_reduction_keep_dims.hpp b/ngraph/core/include/ngraph/op/util/logical_reduction_keep_dims.hpp index 3677ace78e4885..e7a5d8ca44830f 100644 --- a/ngraph/core/include/ngraph/op/util/logical_reduction_keep_dims.hpp +++ b/ngraph/core/include/ngraph/op/util/logical_reduction_keep_dims.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -46,6 +34,7 @@ namespace ngraph /// For each such axis, output dimension is equal to 1. bool get_keep_dims() const { return m_keep_dims; } void set_keep_dims(bool keep_dims) { m_keep_dims = keep_dims; } + private: bool m_keep_dims = false; }; diff --git a/ngraph/core/include/ngraph/op/util/op_annotations.hpp b/ngraph/core/include/ngraph/op/util/op_annotations.hpp index 1734233b2a7669..cfe58a39f5e63c 100644 --- a/ngraph/core/include/ngraph/op/util/op_annotations.hpp +++ b/ngraph/core/include/ngraph/op/util/op_annotations.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -58,6 +46,7 @@ namespace ngraph } bool is_cacheable() const { return m_cacheable; } void set_cacheable(bool val) { m_cacheable = val; } + private: // map of output-input pairs for which in-place computation is valid std::vector m_in_place_oi_pairs; diff --git a/ngraph/core/include/ngraph/op/util/op_types.hpp b/ngraph/core/include/ngraph/op/util/op_types.hpp index ac197954cf151f..950c2cab0b94ff 100644 --- a/ngraph/core/include/ngraph/op/util/op_types.hpp +++ b/ngraph/core/include/ngraph/op/util/op_types.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/recurrent_sequence.hpp b/ngraph/core/include/ngraph/op/util/recurrent_sequence.hpp index bb2dadfa542809..678e83070115da 100644 --- a/ngraph/core/include/ngraph/op/util/recurrent_sequence.hpp +++ b/ngraph/core/include/ngraph/op/util/recurrent_sequence.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/rnn_cell_base.hpp b/ngraph/core/include/ngraph/op/util/rnn_cell_base.hpp index f9d6a5c003e27f..3cee5671385f1c 100644 --- a/ngraph/core/include/ngraph/op/util/rnn_cell_base.hpp +++ b/ngraph/core/include/ngraph/op/util/rnn_cell_base.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/scatter_base.hpp b/ngraph/core/include/ngraph/op/util/scatter_base.hpp index ba5438df66ed41..8a0123a88ac53e 100644 --- a/ngraph/core/include/ngraph/op/util/scatter_base.hpp +++ b/ngraph/core/include/ngraph/op/util/scatter_base.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/scatter_nd_base.hpp b/ngraph/core/include/ngraph/op/util/scatter_nd_base.hpp index b548a8430e45df..c34845fe57ac06 100644 --- a/ngraph/core/include/ngraph/op/util/scatter_nd_base.hpp +++ b/ngraph/core/include/ngraph/op/util/scatter_nd_base.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/util/sub_graph_base.hpp b/ngraph/core/include/ngraph/op/util/sub_graph_base.hpp index 50aaa2f86efd6b..7dbf9a5a887b24 100644 --- a/ngraph/core/include/ngraph/op/util/sub_graph_base.hpp +++ b/ngraph/core/include/ngraph/op/util/sub_graph_base.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -327,7 +315,12 @@ namespace ngraph SubGraphOp& operator=(const SubGraphOp&) = delete; SubGraphOp& operator=(SubGraphOp&&) = default; + int64_t get_num_iterations() const { return m_num_iterations; } + protected: + int64_t m_num_iterations = + -1; // -1 means infinity for Loop op, inconsistent for TensorIterator + // Find an input corresponding to value, adding one if necessary. Input input_for_value(const Output& value); diff --git a/ngraph/core/include/ngraph/op/util/unary_elementwise_arithmetic.hpp b/ngraph/core/include/ngraph/op/util/unary_elementwise_arithmetic.hpp index 13f2e0564d396f..4899c345d14b33 100644 --- a/ngraph/core/include/ngraph/op/util/unary_elementwise_arithmetic.hpp +++ b/ngraph/core/include/ngraph/op/util/unary_elementwise_arithmetic.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -56,6 +44,8 @@ namespace ngraph UnaryElementwiseArithmetic(const Output& arg); public: + NGRAPH_RTTI_DECLARATION; + void validate_and_infer_types() override; bool visit_attributes(AttributeVisitor& visitor) override; diff --git a/ngraph/core/include/ngraph/op/util/variable.hpp b/ngraph/core/include/ngraph/op/util/variable.hpp index 7b590eb684a142..594051400866a2 100644 --- a/ngraph/core/include/ngraph/op/util/variable.hpp +++ b/ngraph/core/include/ngraph/op/util/variable.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -41,6 +29,7 @@ namespace ngraph VariableInfo get_info() { return m_info; } void update(const VariableInfo& variable_info) { m_info = variable_info; } + private: VariableInfo m_info; }; diff --git a/ngraph/core/include/ngraph/op/variadic_split.hpp b/ngraph/core/include/ngraph/op/variadic_split.hpp index 88fea0fd508879..9c2926d1b56315 100644 --- a/ngraph/core/include/ngraph/op/variadic_split.hpp +++ b/ngraph/core/include/ngraph/op/variadic_split.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/op/xor.hpp b/ngraph/core/include/ngraph/op/xor.hpp index 35e44952f33324..b415df28fd91dd 100644 --- a/ngraph/core/include/ngraph/op/xor.hpp +++ b/ngraph/core/include/ngraph/op/xor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/ops.hpp b/ngraph/core/include/ngraph/ops.hpp index d3f5d52022d5ce..b5a9016c402b11 100644 --- a/ngraph/core/include/ngraph/ops.hpp +++ b/ngraph/core/include/ngraph/ops.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // All op headers @@ -51,6 +39,7 @@ #include "ngraph/op/deformable_psroi_pooling.hpp" #include "ngraph/op/depth_to_space.hpp" #include "ngraph/op/detection_output.hpp" +#include "ngraph/op/dft.hpp" #include "ngraph/op/divide.hpp" #include "ngraph/op/elu.hpp" #include "ngraph/op/embedding_segments_sum.hpp" @@ -82,6 +71,7 @@ #include "ngraph/op/hard_sigmoid.hpp" #include "ngraph/op/hsigmoid.hpp" #include "ngraph/op/hswish.hpp" +#include "ngraph/op/idft.hpp" #include "ngraph/op/interpolate.hpp" #include "ngraph/op/less.hpp" #include "ngraph/op/less_eq.hpp" @@ -137,6 +127,7 @@ #include "ngraph/op/rnn_sequence.hpp" #include "ngraph/op/roi_align.hpp" #include "ngraph/op/roi_pooling.hpp" +#include "ngraph/op/roll.hpp" #include "ngraph/op/round.hpp" #include "ngraph/op/scatter_elements_update.hpp" #include "ngraph/op/scatter_nd_update.hpp" diff --git a/ngraph/core/include/ngraph/opsets/opset.hpp b/ngraph/core/include/ngraph/opsets/opset.hpp index 5b4b9ef4ba9a9f..2bed2ab3baa9aa 100644 --- a/ngraph/core/include/ngraph/opsets/opset.hpp +++ b/ngraph/core/include/ngraph/opsets/opset.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -110,6 +98,7 @@ namespace ngraph const std::set& get_type_info_set() const { return m_op_types; } ngraph::FactoryRegistry& get_factory_registry() { return m_factory_registry; } + protected: static std::string to_upper_name(const std::string& name) { @@ -134,4 +123,5 @@ namespace ngraph const NGRAPH_API OpSet& get_opset4(); const NGRAPH_API OpSet& get_opset5(); const NGRAPH_API OpSet& get_opset6(); + const NGRAPH_API OpSet& get_opset7(); } diff --git a/ngraph/core/include/ngraph/opsets/opset1.hpp b/ngraph/core/include/ngraph/opsets/opset1.hpp index 96ead84b9b8ccd..0b7e9680202dbf 100644 --- a/ngraph/core/include/ngraph/opsets/opset1.hpp +++ b/ngraph/core/include/ngraph/opsets/opset1.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/opsets/opset1_tbl.hpp b/ngraph/core/include/ngraph/opsets/opset1_tbl.hpp index acb327b01be6ab..bf785e6ebf4418 100644 --- a/ngraph/core/include/ngraph/opsets/opset1_tbl.hpp +++ b/ngraph/core/include/ngraph/opsets/opset1_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // This collection contains one entry for each op. If an op is added it must be // added to this list. diff --git a/ngraph/core/include/ngraph/opsets/opset2.hpp b/ngraph/core/include/ngraph/opsets/opset2.hpp index 687cf96f760aac..50fae745925f1f 100644 --- a/ngraph/core/include/ngraph/opsets/opset2.hpp +++ b/ngraph/core/include/ngraph/opsets/opset2.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/opsets/opset2_tbl.hpp b/ngraph/core/include/ngraph/opsets/opset2_tbl.hpp index da9b6f7b347d33..2cabc5e5cd2b9f 100644 --- a/ngraph/core/include/ngraph/opsets/opset2_tbl.hpp +++ b/ngraph/core/include/ngraph/opsets/opset2_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifndef NGRAPH_OP #warning "NGRAPH_OP not defined" diff --git a/ngraph/core/include/ngraph/opsets/opset3.hpp b/ngraph/core/include/ngraph/opsets/opset3.hpp index 46e16443b9f429..3562cd8aed6a84 100644 --- a/ngraph/core/include/ngraph/opsets/opset3.hpp +++ b/ngraph/core/include/ngraph/opsets/opset3.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/opsets/opset3_tbl.hpp b/ngraph/core/include/ngraph/opsets/opset3_tbl.hpp index e0fa73807afa85..636039a158fd5d 100644 --- a/ngraph/core/include/ngraph/opsets/opset3_tbl.hpp +++ b/ngraph/core/include/ngraph/opsets/opset3_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifndef NGRAPH_OP #warning "NGRAPH_OP not defined" diff --git a/ngraph/core/include/ngraph/opsets/opset4.hpp b/ngraph/core/include/ngraph/opsets/opset4.hpp index 0442b03c47a821..027a27e19b245e 100644 --- a/ngraph/core/include/ngraph/opsets/opset4.hpp +++ b/ngraph/core/include/ngraph/opsets/opset4.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/opsets/opset4_tbl.hpp b/ngraph/core/include/ngraph/opsets/opset4_tbl.hpp index 1e884303d86f1c..75263ddf73e07c 100644 --- a/ngraph/core/include/ngraph/opsets/opset4_tbl.hpp +++ b/ngraph/core/include/ngraph/opsets/opset4_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifndef NGRAPH_OP #warning "NGRAPH_OP not defined" diff --git a/ngraph/core/include/ngraph/opsets/opset5.hpp b/ngraph/core/include/ngraph/opsets/opset5.hpp index d77e054ef72279..00f42365ca67d7 100644 --- a/ngraph/core/include/ngraph/opsets/opset5.hpp +++ b/ngraph/core/include/ngraph/opsets/opset5.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/opsets/opset5_tbl.hpp b/ngraph/core/include/ngraph/opsets/opset5_tbl.hpp index 9899b5e9066abb..017b33fb34f52e 100644 --- a/ngraph/core/include/ngraph/opsets/opset5_tbl.hpp +++ b/ngraph/core/include/ngraph/opsets/opset5_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifndef NGRAPH_OP #warning "NGRAPH_OP not defined" diff --git a/ngraph/core/include/ngraph/opsets/opset6.hpp b/ngraph/core/include/ngraph/opsets/opset6.hpp index ef4ca8ebaa3523..afc948986492f1 100644 --- a/ngraph/core/include/ngraph/opsets/opset6.hpp +++ b/ngraph/core/include/ngraph/opsets/opset6.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/opsets/opset6_tbl.hpp b/ngraph/core/include/ngraph/opsets/opset6_tbl.hpp index 51d49f44a45cbe..c2b9ba3fb3ae78 100644 --- a/ngraph/core/include/ngraph/opsets/opset6_tbl.hpp +++ b/ngraph/core/include/ngraph/opsets/opset6_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifndef NGRAPH_OP #warning "NGRAPH_OP not defined" diff --git a/ngraph/core/include/ngraph/opsets/opset7.hpp b/ngraph/core/include/ngraph/opsets/opset7.hpp new file mode 100644 index 00000000000000..13168846bbee8c --- /dev/null +++ b/ngraph/core/include/ngraph/opsets/opset7.hpp @@ -0,0 +1,17 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "ngraph/ops.hpp" + +namespace ngraph +{ + namespace opset7 + { +#define NGRAPH_OP(a, b) using b::a; +#include "ngraph/opsets/opset7_tbl.hpp" +#undef NGRAPH_OP + } // namespace opset7 +} // namespace ngraph diff --git a/ngraph/core/include/ngraph/opsets/opset7_tbl.hpp b/ngraph/core/include/ngraph/opsets/opset7_tbl.hpp new file mode 100644 index 00000000000000..ecdf62a94cf135 --- /dev/null +++ b/ngraph/core/include/ngraph/opsets/opset7_tbl.hpp @@ -0,0 +1,176 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#ifndef NGRAPH_OP +#warning "NGRAPH_OP not defined" +#define NGRAPH_OP(x, y) +#endif + +NGRAPH_OP(Abs, ngraph::op::v0) +NGRAPH_OP(Acos, ngraph::op::v0) +NGRAPH_OP(Add, ngraph::op::v1) +NGRAPH_OP(Asin, ngraph::op::v0) +NGRAPH_OP(Atan, ngraph::op::v0) +NGRAPH_OP(AvgPool, ngraph::op::v1) +NGRAPH_OP(BatchNormInference, ngraph::op::v5) +NGRAPH_OP(BinaryConvolution, ngraph::op::v1) +NGRAPH_OP(Broadcast, ngraph::op::v3) +NGRAPH_OP(Bucketize, ngraph::op::v3) +NGRAPH_OP(CTCGreedyDecoder, ngraph::op::v0) +NGRAPH_OP(Ceiling, ngraph::op::v0) +NGRAPH_OP(Clamp, ngraph::op::v0) +NGRAPH_OP(Concat, ngraph::op::v0) +NGRAPH_OP(Constant, ngraph::op) +NGRAPH_OP(Convert, ngraph::op::v0) +NGRAPH_OP(ConvertLike, ngraph::op::v1) +NGRAPH_OP(Convolution, ngraph::op::v1) +NGRAPH_OP(ConvolutionBackpropData, ngraph::op::v1) +NGRAPH_OP(Cos, ngraph::op::v0) +NGRAPH_OP(Cosh, ngraph::op::v0) +NGRAPH_OP(CumSum, ngraph::op::v0) +NGRAPH_OP(DeformableConvolution, ngraph::op::v1) +NGRAPH_OP(DeformablePSROIPooling, ngraph::op::v1) +NGRAPH_OP(DepthToSpace, ngraph::op::v0) +NGRAPH_OP(DetectionOutput, ngraph::op::v0) +NGRAPH_OP(Divide, ngraph::op::v1) +NGRAPH_OP(Elu, ngraph::op::v0) +NGRAPH_OP(Erf, ngraph::op::v0) +NGRAPH_OP(Equal, ngraph::op::v1) +NGRAPH_OP(Exp, ngraph::op::v0) +NGRAPH_OP(ExtractImagePatches, ngraph::op::v3) +NGRAPH_OP(FakeQuantize, ngraph::op::v0) +NGRAPH_OP(Floor, ngraph::op::v0) +NGRAPH_OP(FloorMod, ngraph::op::v1) +NGRAPH_OP(Gather, ngraph::op::v1) +NGRAPH_OP(GatherTree, ngraph::op::v1) +NGRAPH_OP(Greater, ngraph::op::v1) +NGRAPH_OP(GreaterEqual, ngraph::op::v1) +NGRAPH_OP(GroupConvolution, ngraph::op::v1) +NGRAPH_OP(GroupConvolutionBackpropData, ngraph::op::v1) +NGRAPH_OP(GRN, ngraph::op::v0) +NGRAPH_OP(HardSigmoid, ngraph::op::v0) +NGRAPH_OP(Less, ngraph::op::v1) +NGRAPH_OP(LessEqual, ngraph::op::v1) +NGRAPH_OP(Log, ngraph::op::v0) +NGRAPH_OP(LogicalAnd, ngraph::op::v1) +NGRAPH_OP(LogicalNot, ngraph::op::v1) +NGRAPH_OP(LogicalOr, ngraph::op::v1) +NGRAPH_OP(LogicalXor, ngraph::op::v1) +NGRAPH_OP(LRN, ngraph::op::v0) +NGRAPH_OP(LSTMCell, ngraph::op::v4) +NGRAPH_OP(MatMul, ngraph::op::v0) +NGRAPH_OP(MaxPool, ngraph::op::v1) +NGRAPH_OP(Maximum, ngraph::op::v1) +NGRAPH_OP(Minimum, ngraph::op::v1) +NGRAPH_OP(Mod, ngraph::op::v1) +NGRAPH_OP(Multiply, ngraph::op::v1) +NGRAPH_OP(Negative, ngraph::op::v0) +NGRAPH_OP(NormalizeL2, ngraph::op::v0) +NGRAPH_OP(NotEqual, ngraph::op::v1) +NGRAPH_OP(OneHot, ngraph::op::v1) +NGRAPH_OP(PRelu, ngraph::op::v0) +NGRAPH_OP(PSROIPooling, ngraph::op::v0) +NGRAPH_OP(Pad, ngraph::op::v1) +NGRAPH_OP(Parameter, ngraph::op::v0) +NGRAPH_OP(Power, ngraph::op::v1) +NGRAPH_OP(PriorBox, ngraph::op::v0) +NGRAPH_OP(PriorBoxClustered, ngraph::op::v0) +NGRAPH_OP(Proposal, ngraph::op::v4) +NGRAPH_OP(Range, ngraph::op::v4) +NGRAPH_OP(Relu, ngraph::op::v0) +NGRAPH_OP(ReduceMax, ngraph::op::v1) +NGRAPH_OP(ReduceLogicalAnd, ngraph::op::v1) +NGRAPH_OP(ReduceLogicalOr, ngraph::op::v1) +NGRAPH_OP(ReduceMean, ngraph::op::v1) +NGRAPH_OP(ReduceMin, ngraph::op::v1) +NGRAPH_OP(ReduceProd, ngraph::op::v1) +NGRAPH_OP(ReduceSum, ngraph::op::v1) +NGRAPH_OP(RegionYolo, ngraph::op::v0) +NGRAPH_OP(ReorgYolo, ngraph::op::v0) +NGRAPH_OP(Reshape, ngraph::op::v1) +NGRAPH_OP(Result, ngraph::op::v0) +NGRAPH_OP(ReverseSequence, ngraph::op::v0) +NGRAPH_OP(ROIPooling, ngraph::op::v0) +NGRAPH_OP(ScatterNDUpdate, ngraph::op::v3) +NGRAPH_OP(Select, ngraph::op::v1) +NGRAPH_OP(Selu, ngraph::op::v0) +NGRAPH_OP(Sign, ngraph::op::v0) +NGRAPH_OP(Sigmoid, ngraph::op::v0) +NGRAPH_OP(Sin, ngraph::op::v0) +NGRAPH_OP(Sinh, ngraph::op::v0) +NGRAPH_OP(Softmax, ngraph::op::v1) +NGRAPH_OP(Sqrt, ngraph::op::v0) +NGRAPH_OP(SpaceToDepth, ngraph::op::v0) +NGRAPH_OP(Split, ngraph::op::v1) +NGRAPH_OP(SquaredDifference, ngraph::op::v0) +NGRAPH_OP(Squeeze, ngraph::op::v0) +NGRAPH_OP(StridedSlice, ngraph::op::v1) +NGRAPH_OP(Subtract, ngraph::op::v1) +NGRAPH_OP(Tan, ngraph::op::v0) +NGRAPH_OP(Tanh, ngraph::op::v0) +NGRAPH_OP(TensorIterator, ngraph::op::v0) +NGRAPH_OP(Tile, ngraph::op::v0) +NGRAPH_OP(Transpose, ngraph::op::v1) +NGRAPH_OP(Unsqueeze, ngraph::op::v0) +NGRAPH_OP(VariadicSplit, ngraph::op::v1) + +// New operations added in opset2 +NGRAPH_OP(BatchToSpace, ngraph::op::v1) +NGRAPH_OP(SpaceToBatch, ngraph::op::v1) + +// New operations added in opset3 +NGRAPH_OP(EmbeddingBagPackedSum, ngraph::op::v3) +NGRAPH_OP(EmbeddingSegmentsSum, ngraph::op::v3) +NGRAPH_OP(EmbeddingBagOffsetsSum, ngraph::op::v3) +NGRAPH_OP(GRUCell, ngraph::op::v3) +NGRAPH_OP(NonZero, ngraph::op::v3) +NGRAPH_OP(RNNCell, ngraph::op::v0) +NGRAPH_OP(ROIAlign, ngraph::op::v3) +NGRAPH_OP(ScatterElementsUpdate, ngraph::op::v3) +NGRAPH_OP(ScatterUpdate, ngraph::op::v3) +NGRAPH_OP(ShuffleChannels, ngraph::op::v0) +NGRAPH_OP(ShapeOf, ngraph::op::v3) +NGRAPH_OP(TopK, ngraph::op::v3) + +// New operations added in opset4 +NGRAPH_OP(Acosh, ngraph::op::v3) +NGRAPH_OP(Asinh, ngraph::op::v3) +NGRAPH_OP(Atanh, ngraph::op::v3) +NGRAPH_OP(CTCLoss, ngraph::op::v4) +NGRAPH_OP(HSwish, ngraph::op::v4) +NGRAPH_OP(Interpolate, ngraph::op::v4) +NGRAPH_OP(Mish, ngraph::op::v4) +NGRAPH_OP(ReduceL1, ngraph::op::v4) +NGRAPH_OP(ReduceL2, ngraph::op::v4) +NGRAPH_OP(SoftPlus, ngraph::op::v4) +NGRAPH_OP(Swish, ngraph::op::v4) + +// New operations added in opset5 +NGRAPH_OP(GatherND, ngraph::op::v5) +NGRAPH_OP(GRUSequence, ngraph::op::v5) +NGRAPH_OP(HSigmoid, ngraph::op::v5) +NGRAPH_OP(LogSoftmax, ngraph::op::v5) +NGRAPH_OP(Loop, ngraph::op::v5) +NGRAPH_OP(LSTMSequence, ngraph::op::v5) +NGRAPH_OP(NonMaxSuppression, ngraph::op::v5) +NGRAPH_OP(RNNSequence, ngraph::op::v5) +NGRAPH_OP(Round, ngraph::op::v5) + +// New operations added in opset6 +NGRAPH_OP(CTCGreedyDecoderSeqLen, ngraph::op::v6) +NGRAPH_OP(ExperimentalDetectronDetectionOutput, ngraph::op::v6) +NGRAPH_OP(ExperimentalDetectronGenerateProposalsSingleImage, ngraph::op::v6) +NGRAPH_OP(ExperimentalDetectronPriorGridGenerator, ngraph::op::v6) +NGRAPH_OP(ExperimentalDetectronROIFeatureExtractor, ngraph::op::v6) +NGRAPH_OP(ExperimentalDetectronTopKROIs, ngraph::op::v6) +NGRAPH_OP(GatherElements, ngraph::op::v6) +NGRAPH_OP(MVN, ngraph::op::v6) +NGRAPH_OP(Assign, ngraph::op::v6) // new version +NGRAPH_OP(ReadValue, ngraph::op::v6) // new version + +// New operations added in opset7 +NGRAPH_OP(DFT, ngraph::op::v7) +NGRAPH_OP(Gelu, ngraph::op::v7) +NGRAPH_OP(IDFT, ngraph::op::v7) +NGRAPH_OP(Roll, ngraph::op::v7) diff --git a/ngraph/core/include/ngraph/output_vector.hpp b/ngraph/core/include/ngraph/output_vector.hpp index 8b3805c98e399c..2e366531857256 100644 --- a/ngraph/core/include/ngraph/output_vector.hpp +++ b/ngraph/core/include/ngraph/output_vector.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/partial_shape.hpp b/ngraph/core/include/ngraph/partial_shape.hpp index aeedf31123fe47..5813bf3f15ef02 100644 --- a/ngraph/core/include/ngraph/partial_shape.hpp +++ b/ngraph/core/include/ngraph/partial_shape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -278,6 +266,7 @@ namespace ngraph /// to one before the first element in the shape. Iteration /// is done in reverse element order. const_reverse_iterator crend() const noexcept { return m_dimensions.crend(); } + private: // Private constructor for PartialShape::dynamic(). PartialShape(bool rank_is_static, const std::vector& dimensions); @@ -370,6 +359,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } operator PartialShape&() { return m_ref; } + protected: PartialShape& m_ref; std::vector m_buffer; diff --git a/ngraph/core/include/ngraph/pass/constant_folding.hpp b/ngraph/core/include/ngraph/pass/constant_folding.hpp index f36874bd4e55bb..67be4db551c072 100644 --- a/ngraph/core/include/ngraph/pass/constant_folding.hpp +++ b/ngraph/core/include/ngraph/pass/constant_folding.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pass/convert_fp32_to_fp16.hpp b/ngraph/core/include/ngraph/pass/convert_fp32_to_fp16.hpp index 23c7b6527ccef5..1d540746727f7d 100644 --- a/ngraph/core/include/ngraph/pass/convert_fp32_to_fp16.hpp +++ b/ngraph/core/include/ngraph/pass/convert_fp32_to_fp16.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pass/graph_rewrite.hpp b/ngraph/core/include/ngraph/pass/graph_rewrite.hpp index 341235677362f6..9768e71336f4fb 100644 --- a/ngraph/core/include/ngraph/pass/graph_rewrite.hpp +++ b/ngraph/core/include/ngraph/pass/graph_rewrite.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -95,6 +83,7 @@ namespace ngraph } void clear_new_nodes() { m_new_nodes.clear(); } std::shared_ptr get_matcher() { return m_matcher; } + protected: void register_matcher( const std::shared_ptr& m, @@ -156,11 +145,11 @@ namespace ngraph /// anchor->add_matcher(); /// /// \return shared_ptr to the transformation instance - template < - typename T, - bool Enabled = true, - class... Args, - typename std::enable_if{}, bool>::type = true> + template ::value, + bool>::type = true> std::shared_ptr add_matcher(Args&&... args) { static_assert(std::is_base_of::value, @@ -200,7 +189,7 @@ namespace ngraph /// registered matchers. template {}, + typename std::enable_if::value, bool>::type = true> void add_matcher(Args&&... args) { diff --git a/ngraph/core/include/ngraph/pass/low_latency.hpp b/ngraph/core/include/ngraph/pass/low_latency.hpp index 17219f84eca164..86757edb800836 100644 --- a/ngraph/core/include/ngraph/pass/low_latency.hpp +++ b/ngraph/core/include/ngraph/pass/low_latency.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/ngraph/core/include/ngraph/pass/manager.hpp b/ngraph/core/include/ngraph/pass/manager.hpp index 00ddf4d5aa0940..f0cfde11fef258 100644 --- a/ngraph/core/include/ngraph/pass/manager.hpp +++ b/ngraph/core/include/ngraph/pass/manager.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -109,6 +97,7 @@ namespace ngraph /// particular /// transformation. For mo details see PassConfig class. std::shared_ptr get_pass_config() { return m_pass_config; } + protected: template std::shared_ptr push_pass(Args&&... args) diff --git a/ngraph/core/include/ngraph/pass/pass.hpp b/ngraph/core/include/ngraph/pass/pass.hpp index ac0caa97dae3a0..1b5027d8739b4b 100644 --- a/ngraph/core/include/ngraph/pass/pass.hpp +++ b/ngraph/core/include/ngraph/pass/pass.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pass/pass_config.hpp b/ngraph/core/include/ngraph/pass/pass_config.hpp index ffdb8e0934161f..98f276e9d5d0aa 100644 --- a/ngraph/core/include/ngraph/pass/pass_config.hpp +++ b/ngraph/core/include/ngraph/pass/pass_config.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pass/validate.hpp b/ngraph/core/include/ngraph/pass/validate.hpp index c764e9f99c4478..3517334e336c01 100644 --- a/ngraph/core/include/ngraph/pass/validate.hpp +++ b/ngraph/core/include/ngraph/pass/validate.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pass/visualize_tree.hpp b/ngraph/core/include/ngraph/pass/visualize_tree.hpp index f0f59488955935..3b801daaec5ef4 100644 --- a/ngraph/core/include/ngraph/pass/visualize_tree.hpp +++ b/ngraph/core/include/ngraph/pass/visualize_tree.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/matcher.hpp b/ngraph/core/include/ngraph/pattern/matcher.hpp index e7d0a36da48233..20d7b305ca3efe 100644 --- a/ngraph/core/include/ngraph/pattern/matcher.hpp +++ b/ngraph/core/include/ngraph/pattern/matcher.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -275,6 +263,7 @@ namespace ngraph std::shared_ptr get_match_root() { return m_match_root.get_node_shared_ptr(); } Output get_match_value() { return m_match_root; } + private: Output m_initial_pattern; Output m_pattern; diff --git a/ngraph/core/include/ngraph/pattern/op/any.hpp b/ngraph/core/include/ngraph/pattern/op/any.hpp index e3827adfc08de0..ae3de355935825 100644 --- a/ngraph/core/include/ngraph/pattern/op/any.hpp +++ b/ngraph/core/include/ngraph/pattern/op/any.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/op/any_of.hpp b/ngraph/core/include/ngraph/pattern/op/any_of.hpp index cad54b79e90837..37b52e75b9214f 100644 --- a/ngraph/core/include/ngraph/pattern/op/any_of.hpp +++ b/ngraph/core/include/ngraph/pattern/op/any_of.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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 AnyOf KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//***************************************************************************** #pragma once @@ -55,12 +43,13 @@ namespace ngraph const PartialShape& s, NodePredicate pred, const NodeVector& wrapped_values) - : AnyOf(type, - s, - [pred](const Output& value) { - return pred(value.get_node_shared_ptr()); - }, - as_output_vector(wrapped_values)) + : AnyOf( + type, + s, + [pred](const Output& value) { + return pred(value.get_node_shared_ptr()); + }, + as_output_vector(wrapped_values)) { } diff --git a/ngraph/core/include/ngraph/pattern/op/any_output.hpp b/ngraph/core/include/ngraph/pattern/op/any_output.hpp index f59d2d97ef0be7..cd59f66cabad04 100644 --- a/ngraph/core/include/ngraph/pattern/op/any_output.hpp +++ b/ngraph/core/include/ngraph/pattern/op/any_output.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/op/branch.hpp b/ngraph/core/include/ngraph/pattern/op/branch.hpp index 4317978b76371c..3b4c832622cda2 100644 --- a/ngraph/core/include/ngraph/pattern/op/branch.hpp +++ b/ngraph/core/include/ngraph/pattern/op/branch.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/op/capture.hpp b/ngraph/core/include/ngraph/pattern/op/capture.hpp index 68685fccb61bab..9413fc5d2785b9 100644 --- a/ngraph/core/include/ngraph/pattern/op/capture.hpp +++ b/ngraph/core/include/ngraph/pattern/op/capture.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/op/label.hpp b/ngraph/core/include/ngraph/pattern/op/label.hpp index 7985e288b9b55e..b78f9ac253b64e 100644 --- a/ngraph/core/include/ngraph/pattern/op/label.hpp +++ b/ngraph/core/include/ngraph/pattern/op/label.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -63,7 +51,8 @@ namespace ngraph explicit Label(const element::Type& type = element::dynamic, const PartialShape& s = PartialShape::dynamic()) - : Label(type, s, [](const Output&) { return true; }, OutputVector()) + : Label( + type, s, [](const Output&) { return true; }, OutputVector()) { } @@ -118,10 +107,11 @@ namespace ngraph { } Label(const Output& value) - : Label(value.get_element_type(), - value.get_partial_shape(), - [](const Output&) { return true; }, - OutputVector{}) + : Label( + value.get_element_type(), + value.get_partial_shape(), + [](const Output&) { return true; }, + OutputVector{}) { } Label(const Output& node, diff --git a/ngraph/core/include/ngraph/pattern/op/or.hpp b/ngraph/core/include/ngraph/pattern/op/or.hpp index da981b9b5e2f4d..6b4247f64d5f94 100644 --- a/ngraph/core/include/ngraph/pattern/op/or.hpp +++ b/ngraph/core/include/ngraph/pattern/op/or.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/op/pattern.hpp b/ngraph/core/include/ngraph/pattern/op/pattern.hpp index 1c9e565703b8bb..e7ce75608e6351 100644 --- a/ngraph/core/include/ngraph/pattern/op/pattern.hpp +++ b/ngraph/core/include/ngraph/pattern/op/pattern.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -64,6 +52,9 @@ namespace ngraph NGRAPH_API std::function)> has_static_rank(); + NGRAPH_API + std::function)> rank_equals(const Dimension& expected_rank); + NGRAPH_API std::function)> type_matches(const element::Type& type); diff --git a/ngraph/core/include/ngraph/pattern/op/skip.hpp b/ngraph/core/include/ngraph/pattern/op/skip.hpp index 95d928d3414422..bf90868bb3c163 100644 --- a/ngraph/core/include/ngraph/pattern/op/skip.hpp +++ b/ngraph/core/include/ngraph/pattern/op/skip.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/op/true.hpp b/ngraph/core/include/ngraph/pattern/op/true.hpp index 0121b3b4c5b222..e6d72e6fd4ff67 100644 --- a/ngraph/core/include/ngraph/pattern/op/true.hpp +++ b/ngraph/core/include/ngraph/pattern/op/true.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/pattern/op/wrap_type.hpp b/ngraph/core/include/ngraph/pattern/op/wrap_type.hpp index 77307b7ee670c4..abd9cc7b923a38 100644 --- a/ngraph/core/include/ngraph/pattern/op/wrap_type.hpp +++ b/ngraph/core/include/ngraph/pattern/op/wrap_type.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -31,20 +19,20 @@ namespace ngraph static constexpr NodeTypeInfo type_info{"patternAnyType", 0}; const NodeTypeInfo& get_type_info() const override; - explicit WrapType(NodeTypeInfo wrapped_type, - const ValuePredicate& pred = - [](const Output& output) { return true; }, - const OutputVector& input_values = {}) + explicit WrapType( + NodeTypeInfo wrapped_type, + const ValuePredicate& pred = [](const Output& output) { return true; }, + const OutputVector& input_values = {}) : Pattern(input_values, pred) , m_wrapped_types({wrapped_type}) { set_output_type(0, element::Type_t::dynamic, PartialShape::dynamic()); } - explicit WrapType(std::vector wrapped_types, - const ValuePredicate& pred = - [](const Output& output) { return true; }, - const OutputVector& input_values = {}) + explicit WrapType( + std::vector wrapped_types, + const ValuePredicate& pred = [](const Output& output) { return true; }, + const OutputVector& input_values = {}) : Pattern(input_values, pred) , m_wrapped_types(std::move(wrapped_types)) { diff --git a/ngraph/core/include/ngraph/provenance.hpp b/ngraph/core/include/ngraph/provenance.hpp index 81e2339c183ac6..fe1bf511ff4e24 100644 --- a/ngraph/core/include/ngraph/provenance.hpp +++ b/ngraph/core/include/ngraph/provenance.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/rank.hpp b/ngraph/core/include/ngraph/rank.hpp index 6ca2767984c75c..c7cbd53f0ab036 100644 --- a/ngraph/core/include/ngraph/rank.hpp +++ b/ngraph/core/include/ngraph/rank.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/rt_info.hpp b/ngraph/core/include/ngraph/rt_info.hpp index 6958850d5a2652..edd2ffd016b148 100644 --- a/ngraph/core/include/ngraph/rt_info.hpp +++ b/ngraph/core/include/ngraph/rt_info.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/runtime/aligned_buffer.hpp b/ngraph/core/include/ngraph/runtime/aligned_buffer.hpp index 35eb94f2febc4a..5f55054079327d 100644 --- a/ngraph/core/include/ngraph/runtime/aligned_buffer.hpp +++ b/ngraph/core/include/ngraph/runtime/aligned_buffer.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/runtime/host_tensor.hpp b/ngraph/core/include/ngraph/runtime/host_tensor.hpp index a597aa8f4d61ca..961630fbaa1318 100644 --- a/ngraph/core/include/ngraph/runtime/host_tensor.hpp +++ b/ngraph/core/include/ngraph/runtime/host_tensor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/runtime/shared_buffer.hpp b/ngraph/core/include/ngraph/runtime/shared_buffer.hpp index ffb6e4510439c1..e30d7b3f5c44c3 100644 --- a/ngraph/core/include/ngraph/runtime/shared_buffer.hpp +++ b/ngraph/core/include/ngraph/runtime/shared_buffer.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/runtime/tensor.hpp b/ngraph/core/include/ngraph/runtime/tensor.hpp index 9e83c3a3f61072..72e5e8248ac8df 100644 --- a/ngraph/core/include/ngraph/runtime/tensor.hpp +++ b/ngraph/core/include/ngraph/runtime/tensor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -91,6 +79,7 @@ namespace ngraph /// \brief notify tensor of new data, call may block. /// backends may use this as indication of new data in tensor. virtual void wait_for_write_ready() {} + protected: std::shared_ptr m_descriptor; bool m_stale; diff --git a/ngraph/core/include/ngraph/shape.hpp b/ngraph/core/include/ngraph/shape.hpp index ff90ca54e499ac..1d03e62ae132d4 100644 --- a/ngraph/core/include/ngraph/shape.hpp +++ b/ngraph/core/include/ngraph/shape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/shape_util.hpp b/ngraph/core/include/ngraph/shape_util.hpp index d4e86ce76a4fef..a5d08aae8fd61b 100644 --- a/ngraph/core/include/ngraph/shape_util.hpp +++ b/ngraph/core/include/ngraph/shape_util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/slice_plan.hpp b/ngraph/core/include/ngraph/slice_plan.hpp index 8921f35f1c17f1..254e09bb4d1534 100644 --- a/ngraph/core/include/ngraph/slice_plan.hpp +++ b/ngraph/core/include/ngraph/slice_plan.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/specialize_function.hpp b/ngraph/core/include/ngraph/specialize_function.hpp index 5d0411d3898417..3ca64de42021d5 100644 --- a/ngraph/core/include/ngraph/specialize_function.hpp +++ b/ngraph/core/include/ngraph/specialize_function.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/strides.hpp b/ngraph/core/include/ngraph/strides.hpp index 057ce31b13bb07..35ecc8301f83da 100644 --- a/ngraph/core/include/ngraph/strides.hpp +++ b/ngraph/core/include/ngraph/strides.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/type.hpp b/ngraph/core/include/ngraph/type.hpp index f52e3bf7e2b4f9..ade5c82f19b19a 100644 --- a/ngraph/core/include/ngraph/type.hpp +++ b/ngraph/core/include/ngraph/type.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/type/bfloat16.hpp b/ngraph/core/include/ngraph/type/bfloat16.hpp index 9bffa47982848b..251f2368798992 100644 --- a/ngraph/core/include/ngraph/type/bfloat16.hpp +++ b/ngraph/core/include/ngraph/type/bfloat16.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -117,6 +105,7 @@ namespace ngraph } static uint16_t truncate(float x) { return static_cast((cu32(x)) >> 16); } + private: constexpr bfloat16(uint16_t x, bool) : m_value{x} diff --git a/ngraph/core/include/ngraph/type/element_type.hpp b/ngraph/core/include/ngraph/type/element_type.hpp index 5a1d768c3e1995..155df054583a4b 100644 --- a/ngraph/core/include/ngraph/type/element_type.hpp +++ b/ngraph/core/include/ngraph/type/element_type.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** //================================================================================================ // ElementType @@ -46,11 +34,13 @@ namespace ngraph f16, f32, f64, + i4, i8, i16, i32, i64, u1, + u4, u8, u16, u32, @@ -120,6 +110,7 @@ namespace ngraph // \brief This allows switch(element_type) constexpr operator Type_t() const { return m_type; } + private: Type_t m_type{Type_t::undefined}; }; @@ -133,11 +124,13 @@ namespace ngraph constexpr Type f16(Type_t::f16); constexpr Type f32(Type_t::f32); constexpr Type f64(Type_t::f64); + constexpr Type i4(Type_t::i4); constexpr Type i8(Type_t::i8); constexpr Type i16(Type_t::i16); constexpr Type i32(Type_t::i32); constexpr Type i64(Type_t::i64); constexpr Type u1(Type_t::u1); + constexpr Type u4(Type_t::u4); constexpr Type u8(Type_t::u8); constexpr Type u16(Type_t::u16); constexpr Type u32(Type_t::u32); @@ -210,6 +203,7 @@ namespace ngraph static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; const DiscreteTypeInfo& get_type_info() const override { return type_info; } operator element::Type&() { return m_ref; } + protected: element::Type& m_ref; }; diff --git a/ngraph/core/include/ngraph/type/element_type_traits.hpp b/ngraph/core/include/ngraph/type/element_type_traits.hpp index 10341f4ad11e7a..8954f97172b73c 100644 --- a/ngraph/core/include/ngraph/type/element_type_traits.hpp +++ b/ngraph/core/include/ngraph/type/element_type_traits.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -55,6 +43,12 @@ namespace ngraph using value_type = double; }; + template <> + struct element_type_traits + { + using value_type = int8_t; + }; + template <> struct element_type_traits { @@ -85,6 +79,12 @@ namespace ngraph using value_type = int8_t; }; + template <> + struct element_type_traits + { + using value_type = int8_t; + }; + template <> struct element_type_traits { diff --git a/ngraph/core/include/ngraph/type/float16.hpp b/ngraph/core/include/ngraph/type/float16.hpp index 84d5e262cbae46..3549305e01b293 100644 --- a/ngraph/core/include/ngraph/type/float16.hpp +++ b/ngraph/core/include/ngraph/type/float16.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/util.hpp b/ngraph/core/include/ngraph/util.hpp index fcffc5b788a46a..3295eae9ba302f 100644 --- a/ngraph/core/include/ngraph/util.hpp +++ b/ngraph/core/include/ngraph/util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/validation_util.hpp b/ngraph/core/include/ngraph/validation_util.hpp index 59d9d9661d9875..659a190ac1e141 100644 --- a/ngraph/core/include/ngraph/validation_util.hpp +++ b/ngraph/core/include/ngraph/validation_util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/include/ngraph/variant.hpp b/ngraph/core/include/ngraph/variant.hpp index 067e16cd2c09a1..81ac7818c2a0a0 100644 --- a/ngraph/core/include/ngraph/variant.hpp +++ b/ngraph/core/include/ngraph/variant.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -50,6 +38,7 @@ namespace ngraph const value_type& get() const { return m_value; } value_type& get() { return m_value; } void set(const value_type& value) { m_value = value; } + protected: value_type m_value; }; diff --git a/ngraph/core/include/ngraph/version.in.hpp b/ngraph/core/include/ngraph/version.in.hpp index 8303ee10a9fc4d..1099a0e83f9b8e 100644 --- a/ngraph/core/include/ngraph/version.in.hpp +++ b/ngraph/core/include/ngraph/version.in.hpp @@ -1,17 +1,5 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** const char* NGRAPH_VERSION_NUMBER = "${NGRAPH_VERSION}"; diff --git a/ngraph/core/include/ngraph/visibility.hpp b/ngraph/core/include/ngraph/visibility.hpp index e9746f71e3c6a0..0a5eba3e21b4ae 100644 --- a/ngraph/core/include/ngraph/visibility.hpp +++ b/ngraph/core/include/ngraph/visibility.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // https://gcc.gnu.org/wiki/Visibility // Generic helper definitions for shared library support diff --git a/ngraph/core/reference/CMakeLists.txt b/ngraph/core/reference/CMakeLists.txt index 62749a650b4609..ef4a764ab3ba43 100644 --- a/ngraph/core/reference/CMakeLists.txt +++ b/ngraph/core/reference/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** set(TARGET_NAME "ngraph_reference") @@ -44,6 +32,8 @@ target_include_directories(${TARGET_NAME} PUBLIC ${REF_IMPL_INCLUDE_DIR} ${NGRAP target_link_libraries(${TARGET_NAME} PRIVATE xbyak) +add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) + # Add an alias so that library can be used inside the build tree, e.g. when testing add_library(ngraph::reference ALIAS ${TARGET_NAME}) diff --git a/ngraph/core/reference/include/ngraph/coordinate_index.hpp b/ngraph/core/reference/include/ngraph/coordinate_index.hpp index f82078b09f65a6..8a3752cc950b03 100644 --- a/ngraph/core/reference/include/ngraph/coordinate_index.hpp +++ b/ngraph/core/reference/include/ngraph/coordinate_index.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #pragma once #include diff --git a/ngraph/core/reference/include/ngraph/coordinate_range.hpp b/ngraph/core/reference/include/ngraph/coordinate_range.hpp index 090ff883a557ba..e38bda4e416e94 100644 --- a/ngraph/core/reference/include/ngraph/coordinate_range.hpp +++ b/ngraph/core/reference/include/ngraph/coordinate_range.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -154,6 +142,7 @@ namespace ngraph bool increment(); bool is_valid() const noexcept { return !has_zeros(m_source_shape); } + private: const Shape m_source_shape; const CoordinateBounds m_bounds; @@ -200,6 +189,7 @@ namespace ngraph bool increment(); bool is_valid() const noexcept { return !has_zeros(m_source_shape); } + private: const Shape m_source_shape; const std::vector m_memory_strides; diff --git a/ngraph/core/reference/include/ngraph/coordinate_transform.hpp b/ngraph/core/reference/include/ngraph/coordinate_transform.hpp index 634d81172ca16a..06320ce8925274 100644 --- a/ngraph/core/reference/include/ngraph/coordinate_transform.hpp +++ b/ngraph/core/reference/include/ngraph/coordinate_transform.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/opt_kernel/reshape.hpp b/ngraph/core/reference/include/ngraph/runtime/opt_kernel/reshape.hpp index b91e255e9b9444..cbaa33b27dd2a5 100644 --- a/ngraph/core/reference/include/ngraph/runtime/opt_kernel/reshape.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/opt_kernel/reshape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/abs.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/abs.hpp index e9fef2a5165582..91a52d793e0250 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/abs.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/abs.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/acos.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/acos.hpp index 169b7715d4c0af..828de4b80359ca 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/acos.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/acos.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/acosh.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/acosh.hpp index 803ad1001091a9..ca9860557dbf5c 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/acosh.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/acosh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/add.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/add.hpp index f3e1c7ec4166d5..bd5dcf2c19ad8d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/add.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/add.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/and.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/and.hpp index c77e3f8afc4910..72be8817bcde2d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/and.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/and.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/asin.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/asin.hpp index fbe81e425cd03f..38d867119641e2 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/asin.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/asin.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/asinh.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/asinh.hpp index 086f48ba58b841..96d5dd4addb396 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/asinh.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/asinh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/atan.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/atan.hpp index a7db37530334ea..84229bbf23253f 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/atan.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/atan.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/atan2.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/atan2.hpp index 4608d4b7ef6412..3cac9a743a6afe 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/atan2.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/atan2.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/atanh.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/atanh.hpp index 9b128d718909e7..d8df90c919447e 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/atanh.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/atanh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp index dc16caaa1d5994..f87adcb9852d97 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/avg_pool.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/avg_pool.hpp index 12b76c04fbd81e..7d25f712bd1b1c 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/avg_pool.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/avg_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/batch_norm.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/batch_norm.hpp index 60bbfc2dd725de..5165b41dc8f875 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/batch_norm.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/batch_norm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/binary_convolution.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/binary_convolution.hpp new file mode 100644 index 00000000000000..2b04fcf6ee1433 --- /dev/null +++ b/ngraph/core/reference/include/ngraph/runtime/reference/binary_convolution.hpp @@ -0,0 +1,212 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "ngraph/runtime/reference/convolution.hpp" +#include "ngraph/shape.hpp" + +namespace ngraph +{ + namespace runtime + { + namespace reference + { + namespace details + { + inline uint8_t extract_bit(uint8_t val, uint8_t bit) + { + return (uint8_t)((val >> bit) & 0x01); + } + + template + inline bool xnor(T a, T b) + { + return a == b; + } + + template + void binary_convolve_3D_channels(const ConvolutionParams& p, + const T_IN* batch, + const Shape& batch_shape, + const T_F* filter, + const Shape& filter_shape, + T_IN*& out, + const float pad_value) + { + const int n_bits = 8; + const int input_size_z = batch_shape[1]; + const int input_size_y = batch_shape[2]; + const int input_size_x = batch_shape[3]; + const int filter_size_z = filter_shape[1]; + const int filter_size_y = filter_shape[2]; + const int filter_size_x = filter_shape[3]; + const int dilated_filter_size_z = + filter_size_z + (filter_size_z - 1) * (p.dilation[0] - 1); + const int dilated_filter_size_y = + filter_size_y + (filter_size_y - 1) * (p.dilation[1] - 1); + const int dilated_filter_size_x = + filter_size_x + (filter_size_x - 1) * (p.dilation[2] - 1); + + const Shape input_channel_shape(++batch_shape.begin(), batch_shape.end()); + const size_t input_channel_size = shape_size(input_channel_shape); + const Shape filter_channel_shape(++filter_shape.begin(), filter_shape.end()); + const size_t filter_channel_size = shape_size(filter_channel_shape); + const T_IN bit_count = static_cast(filter_channel_size); + + for (int i_z = -p.pads_begin[0]; + i_z <= (p.pads_end[0] + input_size_z - dilated_filter_size_z); + i_z += p.strides[0]) + { + for (int i_y = -p.pads_begin[1]; + i_y <= (p.pads_end[1] + input_size_y - dilated_filter_size_y); + i_y += p.strides[1]) + { + for (int i_x = -p.pads_begin[2]; + i_x <= (p.pads_end[2] + input_size_x - dilated_filter_size_x); + i_x += p.strides[2]) + { + auto input_channel = batch; + size_t filter_channels_count = filter_shape[0]; + int filter_count = 0; + T_IN sum = 0; + while (filter_channels_count--) + { + T_IN popcount = 0; + for (int f_z = 0; f_z < filter_size_z; ++f_z) + { + for (int f_y = 0; f_y < filter_size_y; ++f_y) + { + for (int f_x = 0; f_x < filter_size_x; ++f_x) + { + int rel_i_z = i_z + (f_z * p.dilation[0]); + int rel_i_y = i_y + (f_y * p.dilation[1]); + int rel_i_x = i_x + (f_x * p.dilation[2]); + + bool padding = + !(in_range(rel_i_x, {0, input_size_x}) && + in_range(rel_i_y, {0, input_size_y}) && + in_range(rel_i_z, {0, input_size_z})); + int i_buf_idx = + (rel_i_z * input_size_y * input_size_x) + + (rel_i_y * input_size_x) + rel_i_x; + + T_IN in_val = padding + ? static_cast(pad_value) + : static_cast( + input_channel[i_buf_idx]); + + int f_buf_idx = + (f_z * filter_size_y * filter_size_x) + + (f_y * filter_size_x) + f_x; + + int f_byte_idx = + (f_buf_idx + filter_count) / n_bits; + int bit_idx = (n_bits - 1) - + ((f_buf_idx + filter_count) % n_bits); + uint8_t f_val = + extract_bit(filter[f_byte_idx], bit_idx); + + if (xnor(in_val, static_cast(f_val))) + { + popcount += static_cast(1); + } + } + } + } + input_channel += input_channel_size; + filter_count += filter_channel_size; + sum += (2 * popcount - bit_count); + } + *out = sum; + ++out; + } + } + } + } + } + + void validate_convolution_parameters(const Shape& in_shape, + const Shape& f_shape, + const Strides& strides, + const Strides& dilations, + const CoordinateDiff& pads_begin, + const CoordinateDiff& pads_end) + { + // this implementation supports 1D, 2D and 3D convolutions + NGRAPH_CHECK(in_shape.size() >= 3 && in_shape.size() <= 5, + "Unsupported input rank: ", + in_shape); + + NGRAPH_CHECK(in_shape.size() == f_shape.size(), + "Incompatible input ranks: ", + in_shape.size(), + " and ", + f_shape.size()); + + const auto spatial_dims = in_shape.size() - 2; + NGRAPH_CHECK(strides.size() == spatial_dims, + "Strides not definied for all and only spatial dimensions"); + + NGRAPH_CHECK(dilations.size() == spatial_dims, + "Dilations not defined for all and only spatial dimensions"); + + NGRAPH_CHECK((pads_begin.size() == pads_end.size()) && + (pads_begin.size() == spatial_dims), + "Pads not defined for all and only spatial dimensions"); + } + + template + void binary_convolution(const T_IN* in, + const T_F* f, + T_IN* out, + const Shape& in_shape, + const Shape& f_shape, + const Shape& out_shape, + const Strides& strides, + const Strides& dilations, + const CoordinateDiff& pads_begin, + const CoordinateDiff& pads_end, + const float pad_value) + { + validate_convolution_parameters( + in_shape, f_shape, strides, dilations, pads_begin, pads_end); + + // here we are converting all param types to int's to avoid arithmetic issues + // (e.g signed + unsigned) in indexes calculation later + ConvolutionParams params{strides, dilations, pads_begin, pads_end}; + + // here we are extending spatial dimensions to 3D, because we are going to use 3D + // convolution implementation to convolve also in 1D & 2D case + Shape input_shape{in_shape}; + Shape filters_shape{f_shape}; + if (in_shape.size() < 5) + { + extend_to_3D(params, input_shape, filters_shape); + } + + const size_t batches_count = input_shape[in_batch_axis]; + const Shape batch_shape(++input_shape.begin(), input_shape.end()); + const size_t batch_size = shape_size(batch_shape); + + const size_t filters_count = filters_shape[filter_out_ch_axis]; + const Shape filter_shape(++filters_shape.begin(), filters_shape.end()); + const size_t filter_size = shape_size(filter_shape); + + auto batch = in; + for (size_t batch_idx = 0; batch_idx < batches_count; ++batch_idx) + { + auto filter = f; + for (size_t f_idx = 0; f_idx < filters_count; ++f_idx) + { + details::binary_convolve_3D_channels( + params, batch, batch_shape, filter, filter_shape, out, pad_value); + filter += filter_size; + } + batch += batch_size; + } + } + } // namespace reference + } // namespace runtime +} // namespace ngraph diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/broadcast.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/broadcast.hpp index 7fccceae750cbb..a7d1203fd1eb70 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/broadcast.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/broadcast.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/bucketize.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/bucketize.hpp index 65194605286c4d..45da560ef92697 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/bucketize.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/bucketize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/ceiling.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/ceiling.hpp index 59316004ef5679..b5dfe161ef09d3 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/ceiling.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/ceiling.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/clamp.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/clamp.hpp index 607c3a58819f0f..43ebc3812d0fa8 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/clamp.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/clamp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/concat.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/concat.hpp index 7c31f9720646ab..3ef3e2047fe8fb 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/concat.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/concat.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/constant.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/constant.hpp index 9e131976b6eb65..aafae16a4513b2 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/constant.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/constant.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/convert.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/convert.hpp index f68daf84ceb5f7..0374cb18da0ee7 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/convert.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/convert.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/convolution.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/convolution.hpp index 6a005d9c6e2635..5643bfd6a843fa 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/convolution.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/convolution.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/convolution_backprop_data.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/convolution_backprop_data.hpp index 37a35aeabd651d..3fa325f7726e05 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/convolution_backprop_data.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/convolution_backprop_data.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/copy.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/copy.hpp index c8322a58da3546..4cea1688d942f3 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/copy.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/copy.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/cos.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/cos.hpp index 3370f316041d72..bea6d6e51825a0 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/cos.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/cos.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/cosh.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/cosh.hpp index b82fdb5975f5a2..1f4a9e0ae6b5ce 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/cosh.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/cosh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder.hpp index dc683b132ed277..8a4c39586e77a7 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder_seq_len.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder_seq_len.hpp index 267232af6f1775..443f1d986b8954 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder_seq_len.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/ctc_greedy_decoder_seq_len.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/ctc_loss.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/ctc_loss.hpp index 53a42ca5dbe463..04e242a15c4cf4 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/ctc_loss.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/ctc_loss.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -50,9 +50,9 @@ namespace ngraph std::string("Logit or label length cannot greater than max sequence" "length. Also a label length cannot be greater than a" "logit length.\nMaxSeqLen: ") + - std::to_string(maxTime) + "; Logit len: " + - std::to_string(actualLogitLen) + "; Label len: " + - std::to_string(actualTargetLen)); + std::to_string(maxTime) + + "; Logit len: " + std::to_string(actualLogitLen) + + "; Label len: " + std::to_string(actualTargetLen)); } const U* target = &labels[b * maxTime]; @@ -118,85 +118,86 @@ namespace ngraph T res = -type_inf; // Looking for aligned paths - std::function findPaths = [&]( - size_t targetIdx, size_t start, size_t end, T prevLogProb) { - if (end > actualLogitLen) - { - if (res == -type_inf) - { - res = prevLogProb; - } - else if (prevLogProb != -type_inf) + std::function findPaths = + [&](size_t targetIdx, size_t start, size_t end, T prevLogProb) { + if (end > actualLogitLen) { - if (res > prevLogProb) - res = res + std::log1pf(std::exp(prevLogProb - res)); - else - res = prevLogProb + std::log1pf(std::exp(res - prevLogProb)); + if (res == -type_inf) + { + res = prevLogProb; + } + else if (prevLogProb != -type_inf) + { + if (res > prevLogProb) + res = res + std::log1pf(std::exp(prevLogProb - res)); + else + res = + prevLogProb + std::log1pf(std::exp(res - prevLogProb)); + } + return; } - return; - } - size_t nextIdx = targetIdx + 1; - int64_t st64 = start; - T newLogProb = prevLogProb; - if (!ctcMergeRepeated) - { - for (size_t pos = start; pos < end; pos++) + size_t nextIdx = targetIdx + 1; + int64_t st64 = start; + T newLogProb = prevLogProb; + if (!ctcMergeRepeated) { - newLogProb = prevLogProb; - for (size_t bl = start; bl < pos; bl++) + for (size_t pos = start; pos < end; pos++) { - newLogProb += logProbabilities[bl].find(blankIndex)->second; - } - newLogProb += - logProbabilities[pos].find(targetD[targetIdx])->second; - if (end == actualLogitLen) - { - for (int64_t ble = pos + 1; ble < actualLogitLen; ble++) + newLogProb = prevLogProb; + for (size_t bl = start; bl < pos; bl++) { - newLogProb += - logProbabilities[ble].find(blankIndex)->second; + newLogProb += logProbabilities[bl].find(blankIndex)->second; + } + newLogProb += + logProbabilities[pos].find(targetD[targetIdx])->second; + if (end == actualLogitLen) + { + for (int64_t ble = pos + 1; ble < actualLogitLen; ble++) + { + newLogProb += + logProbabilities[ble].find(blankIndex)->second; + } } + findPaths(nextIdx, pos + 1, end + 1, newLogProb); } - findPaths(nextIdx, pos + 1, end + 1, newLogProb); } - } - else - { - for (size_t pos = start; pos < end; pos++) + else { - newLogProb = prevLogProb; - size_t next_start = pos + 1; - for (size_t bl = start; bl < pos; bl++) + for (size_t pos = start; pos < end; pos++) { - newLogProb += logProbabilities[bl].find(blankIndex)->second; - } - if (end == actualLogitLen) - { - for (int64_t ble = pos + 1; ble < actualLogitLen; ble++) + newLogProb = prevLogProb; + size_t next_start = pos + 1; + for (size_t bl = start; bl < pos; bl++) + { + newLogProb += logProbabilities[bl].find(blankIndex)->second; + } + if (end == actualLogitLen) + { + for (int64_t ble = pos + 1; ble < actualLogitLen; ble++) + { + newLogProb += + logProbabilities[ble].find(blankIndex)->second; + } + } + if (targetIdx < decodedTargetLen - 1 && + targetD[targetIdx] == targetD[targetIdx + 1]) { newLogProb += - logProbabilities[ble].find(blankIndex)->second; + logProbabilities[next_start++].find(blankIndex)->second; + } + for (int64_t bl = pos; bl >= st64; bl--) + { + newLogProb += + logProbabilities[bl].find(targetD[targetIdx])->second; + findPaths(nextIdx, next_start, end + 1, newLogProb); + if (bl > 0) + newLogProb -= + logProbabilities[bl - 1].find(blankIndex)->second; } - } - if (targetIdx < decodedTargetLen - 1 && - targetD[targetIdx] == targetD[targetIdx + 1]) - { - newLogProb += - logProbabilities[next_start++].find(blankIndex)->second; - } - for (int64_t bl = pos; bl >= st64; bl--) - { - newLogProb += - logProbabilities[bl].find(targetD[targetIdx])->second; - findPaths(nextIdx, next_start, end + 1, newLogProb); - if (bl > 0) - newLogProb -= - logProbabilities[bl - 1].find(blankIndex)->second; } } - } - }; // findPaths + }; // findPaths findPaths(0lu, 0lu, actualLogitLen - decodedTargetLen + 1lu, 0.f); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/cum_sum.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/cum_sum.hpp index 036e40aa4484d6..039cc64c011799 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/cum_sum.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/cum_sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -70,7 +58,6 @@ namespace ngraph size_t output_index, T& prev, std::vector>& tensor_vec) -> void { - tensor_vec[input_index].second = prev + tensor_vec[input_index].second; out[tensor_vec[output_index].first] = tensor_vec[input_index].second; diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/detection_output.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/detection_output.hpp index fbfc475efe685f..7704083ff09df6 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/detection_output.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/detection_output.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/divide.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/divide.hpp index b977c7f83245f2..a55515a318ec64 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/divide.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/divide.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/dot.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/dot.hpp deleted file mode 100644 index cfc212b50eb644..00000000000000 --- a/ngraph/core/reference/include/ngraph/runtime/reference/dot.hpp +++ /dev/null @@ -1,170 +0,0 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//***************************************************************************** - -#pragma once - -#include -#include - -#include -#include -#include "ngraph/coordinate_transform.hpp" -#include "ngraph/runtime/reference/helpers.hpp" -#include "ngraph/shape_util.hpp" - -namespace ngraph -{ - namespace runtime - { - namespace reference - { - template ::type> - void dot(const INPUT0* arg0, - const INPUT1* arg1, - OUTPUT* out, - const Shape& arg0_shape, - const Shape& arg1_shape, - const Shape& out_shape, - size_t reduction_axes_count, - const float* input0_scale = nullptr, - const INPUT0* input0_zero_point = nullptr, - const float* input1_scale = nullptr, - const INPUT1* input1_zero_point = nullptr, - const float* output_scale = nullptr, - const OUTPUT* output_zero_point = nullptr) - { - bool is_quantized = false; - if (input0_scale && input0_zero_point && input1_scale && input1_zero_point && - output_scale && output_zero_point) - { - is_quantized = true; - } - - auto old_mode = std::fegetround(); - std::fesetround(FE_TONEAREST); - // Get the sizes of the dot axes. It's easiest to pull them from arg1 because - // they're right up front. - Shape dot_axis_sizes(reduction_axes_count); - std::copy(arg1_shape.begin(), - arg1_shape.begin() + reduction_axes_count, - dot_axis_sizes.begin()); - - CoordinateTransform arg0_transform(arg0_shape); - CoordinateTransform arg1_transform(arg1_shape); - CoordinateTransform output_transform(out_shape); - - // Create coordinate transforms for arg0 and arg1 that throw away the dotted axes. - size_t arg0_projected_rank = arg0_shape.size() - reduction_axes_count; - size_t arg1_projected_rank = arg1_shape.size() - reduction_axes_count; - - Shape arg0_projected_shape(arg0_projected_rank); - std::copy(arg0_shape.begin(), - arg0_shape.begin() + arg0_projected_rank, - arg0_projected_shape.begin()); - - Shape arg1_projected_shape(arg1_projected_rank); - std::copy(arg1_shape.begin() + reduction_axes_count, - arg1_shape.end(), - arg1_projected_shape.begin()); - - CoordinateTransform arg0_projected_transform(arg0_projected_shape); - CoordinateTransform arg1_projected_transform(arg1_projected_shape); - - // Create a coordinate transform that allows us to iterate over all possible values - // for the dotted axes. - CoordinateTransform dot_axes_transform(dot_axis_sizes); - - for (const Coordinate& arg0_projected_coord : arg0_projected_transform) - { - for (const Coordinate& arg1_projected_coord : arg1_projected_transform) - { - // The output coordinate is just the concatenation of the projected - // coordinates. - Coordinate out_coord(arg0_projected_coord.size() + - arg1_projected_coord.size()); - - auto out_coord_it = std::copy(arg0_projected_coord.begin(), - arg0_projected_coord.end(), - out_coord.begin()); - std::copy( - arg1_projected_coord.begin(), arg1_projected_coord.end(), out_coord_it); - - // Zero out to start the sum. - ACCUMULATION sum = 0; - - size_t out_index = output_transform.index(out_coord); - - // Walk along the dotted axes. - Coordinate arg0_coord(arg0_shape.size()); - Coordinate arg1_coord(arg1_shape.size()); - auto arg0_it = std::copy(arg0_projected_coord.begin(), - arg0_projected_coord.end(), - arg0_coord.begin()); - for (const Coordinate& dot_axis_positions : dot_axes_transform) - { - // In order to find the points to multiply together, we need to inject - // our current positions along the dotted axes back into the projected - // arg0 and arg1 coordinates. - std::copy( - dot_axis_positions.begin(), dot_axis_positions.end(), arg0_it); - - auto arg1_it = std::copy(dot_axis_positions.begin(), - dot_axis_positions.end(), - arg1_coord.begin()); - std::copy( - arg1_projected_coord.begin(), arg1_projected_coord.end(), arg1_it); - - // Multiply and add to the sum. - if (is_quantized) - { - sum = sum + ((static_cast( - arg0[arg0_transform.index(arg0_coord)]) - - static_cast(*input0_zero_point)) * - (static_cast( - arg1[arg1_transform.index(arg1_coord)]) - - static_cast(*input1_zero_point))); - } - else - { - sum = sum + (static_cast( - arg0[arg0_transform.index(arg0_coord)]) * - static_cast( - arg1[arg1_transform.index(arg1_coord)])); - } - } - - if (is_quantized) - { - float scale = *input0_scale * *input1_scale / *output_scale; - // Write the sum back. - out[out_index] = - static_cast(std::round(static_cast(sum) * scale)) + - *output_zero_point; - } - else - { - out[out_index] = sum; - } - } - std::fesetround(old_mode); - } - } - } - } -} diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/elu.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/elu.hpp index 9d3d88db111031..1ea8a70ee75f9a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/elu.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/elu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_offsets_sum.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_offsets_sum.hpp index 3519be7259b9de..698826e6653d79 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_offsets_sum.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_offsets_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -45,8 +45,8 @@ namespace ngraph throw ngraph_error( std::string( "Offset value exceeds indices size in the model.\noffset: ") + - std::to_string(offsets[emb_index]) + "; indices size: " + - std::to_string(indices_count)); + std::to_string(offsets[emb_index]) + + "; indices size: " + std::to_string(indices_count)); indices_ref = nullptr; indices_num = 0lu; diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_packed_sum.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_packed_sum.hpp index ed8f005e3eafea..1d2d62a217bb52 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_packed_sum.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/embedding_bag_packed_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/embedding_segments_sum.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/embedding_segments_sum.hpp index 13479b07a44473..51b81681e2a532 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/embedding_segments_sum.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/embedding_segments_sum.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/equal.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/equal.hpp index 5cf7f11676a2a4..a63522ef5d1c5c 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/equal.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/equal.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/erf.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/erf.hpp index 5a70a69b1af7b6..439649e71f78e6 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/erf.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/erf.hpp @@ -1,23 +1,15 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include #include +#include + +#include "ngraph/type/bfloat16.hpp" +#include "ngraph/type/float16.hpp" namespace ngraph { @@ -26,13 +18,24 @@ namespace ngraph namespace reference { template - void erf(const T* arg, T* out, size_t count) + typename std::enable_if::value>::type + erf(const T* arg, T* out, size_t count) { for (size_t i = 0; i < count; i++) { out[i] = std::erf(arg[i]); } } + + template + typename std::enable_if::value>::type + erf(const T* arg, T* out, size_t count) + { + for (size_t i = 0; i < count; i++) + { + out[i] = std::round(std::erf(arg[i])); + } + } } } } diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/eval_helpers.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/eval_helpers.hpp index fa840dcd074a41..40b8c6f74ee700 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/eval_helpers.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/eval_helpers.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/exp.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/exp.hpp index 009d3cb9f00416..f0cf2efda5e97b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/exp.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/exp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp index cbd2c3318bafb1..686ae9cc5dda69 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/fake_quantize.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/fake_quantize.hpp index f9174f8f9c11e7..911a5f12bdfebb 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/fake_quantize.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/fake_quantize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/floor.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/floor.hpp index ce244b980c4ab2..04619d47ee4a21 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/floor.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/floor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/floor_mod.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/floor_mod.hpp index 24a5c0db4fd1a6..c7742e65f7f733 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/floor_mod.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/floor_mod.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/function.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/function.hpp index 36e5a437d8f9a2..7733f373dad48d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/function.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/function.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/gather.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/gather.hpp index c76fba96c20c4c..365bdf9ac2509a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/gather.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/gather.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/gather_elements.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/gather_elements.hpp index ddea6f83c8a0ec..38818bb1670e17 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/gather_elements.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/gather_elements.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/gather_nd.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/gather_nd.hpp index ec80f04666e024..a6cbd33738c10c 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/gather_nd.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/gather_nd.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/gather_tree.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/gather_tree.hpp index fdda482d2d2239..5e53a64ab225af 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/gather_tree.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/gather_tree.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/gelu.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/gelu.hpp index 757e3514df42ef..8859e36bf30595 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/gelu.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/gelu.hpp @@ -1,23 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include #include +#include namespace ngraph { @@ -26,11 +15,25 @@ namespace ngraph namespace reference { template - void gelu(const T* arg, T* out, size_t count) + void gelu(const T* arg, T* out, op::GeluApproximationMode mode, size_t count) { - for (size_t i = 0; i < count; i++) + if (mode == op::GeluApproximationMode::ERF) + { + for (size_t i = 0; i < count; i++) + { + out[i] = 0.5 * arg[i] * (1 + erf(arg[i] / std::sqrt(2.0))); + } + } + else if (mode == op::GeluApproximationMode::TANH) { - out[i] = 0.5 * arg[i] * (1 + erf(arg[i] / std::sqrt(2))); + const auto pi = atan(1.0) * 4.0; + const auto sqpi = std::sqrt(2.0 / pi); + for (size_t i = 0; i < count; i++) + { + auto& x = arg[i]; + out[i] = + 0.5 * x * (1.0 + std::tanh(sqpi * (x + 0.044715 * std::pow(x, 3)))); + } } } } diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/greater.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/greater.hpp index bc1bc351dfebaa..232b4ac9a9a2c9 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/greater.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/greater.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/greater_eq.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/greater_eq.hpp index f44fa535e3774d..e9017f5218d112 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/greater_eq.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/greater_eq.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/grn.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/grn.hpp index 7dbd8e23bb6c62..4f09355043a8c5 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/grn.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/grn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution.hpp index 60867568f13f8e..421b81ac09290b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution_backprop_data.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution_backprop_data.hpp index 88b6c151d2b141..9355c80e026640 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution_backprop_data.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/group_convolution_backprop_data.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/gru_cell.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/gru_cell.hpp index 58ca2c93d50f22..7fc91cdfc84740 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/gru_cell.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/gru_cell.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -225,7 +213,7 @@ namespace ngraph clip_activation(r_t, activation_f); // calculate h_t - vector h_t(gate_shape_size); + std::vector h_t(gate_shape_size); if (linear_before_reset) { // ht = g(Xt*(Wh^T) + (rt (.) (Ht-1*(Rh^T) + Rbh)) + Wbh) @@ -287,8 +275,8 @@ namespace ngraph } clip_activation(h_t, activation_g); // Ht = (1 - zt) (.) ht + zt (.) Ht-1 - vector mul1(gate_shape_size); - vector mul2(gate_shape_size); + std::vector mul1(gate_shape_size); + std::vector mul2(gate_shape_size); T one[] = {1}; reference::subtract( one, z_t.data(), mul1.data(), {1}, gate_shape, op::AutoBroadcastSpec::NUMPY); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/hard_sigmoid.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/hard_sigmoid.hpp index a127098d5ba02f..874a251a62b4a4 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/hard_sigmoid.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/hard_sigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/helpers.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/helpers.hpp index b5430201a7705b..30ea19afc9ba6b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/helpers.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/helpers.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/hsigmoid.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/hsigmoid.hpp index f0f6b81b7cd4f4..3c23bda26ee15d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/hsigmoid.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/hsigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/hswish.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/hswish.hpp index 5e1e83b650300d..7ed485d7f70581 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/hswish.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/hswish.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/interpolate.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/interpolate.hpp index 07f65f372d4439..7741dd413cf389 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/interpolate.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/interpolate.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -24,6 +12,7 @@ #include #include #include "ngraph/coordinate_transform.hpp" +#include "ngraph/op/interpolate.hpp" #include "ngraph/shape_util.hpp" namespace ngraph @@ -190,8 +179,10 @@ namespace ngraph }; break; case Transform_mode::align_corners: - return []( - float x_resized, float, float length_resized, float length_original) { + return [](float x_resized, + float, + float length_resized, + float length_original) { return length_resized == 1 ? 0 : x_resized * (length_original - 1) / (length_resized - 1); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/less.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/less.hpp index ca2779a4607066..261e76c8d66677 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/less.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/less.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/less_eq.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/less_eq.hpp index 2fec486cc8b479..eeace6f521e44a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/less_eq.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/less_eq.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/log.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/log.hpp index 19d6e258d030ad..a5019719322f42 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/log.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/log.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/log_softmax.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/log_softmax.hpp index 4dce73aa46532d..11b9092e6e6489 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/log_softmax.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/log_softmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/logical_reduction.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/logical_reduction.hpp index 0a61349ba65323..fe6810fa29421a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/logical_reduction.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/logical_reduction.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/loop.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/loop.hpp index c4dcebdf5dca69..01521cf7870c40 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/loop.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/loop.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/lrn.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/lrn.hpp index ae46c9c3f4c1f0..a3c653fb36c694 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/lrn.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/lrn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/lstm_cell.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/lstm_cell.hpp index 47380708a4ec06..fef490f6c52646 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/lstm_cell.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/lstm_cell.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -139,8 +127,9 @@ namespace ngraph 4, pointers.data()); - auto clip_activation = [&clip]( - std::vector& gate, const std::string& activation, bool enable_clip = true) { + auto clip_activation = [&clip](std::vector& gate, + const std::string& activation, + bool enable_clip = true) { if (clip > 0.f && enable_clip) { reference::clamp(gate.data(), @@ -177,9 +166,9 @@ namespace ngraph // ot = f(Xt*(Wo^T) + Ht-1*(Ro^T) + Wbo + Rbo) clip_activation(X_W_fico[3], activation_f); - vector mul1(gate_shape_size); - vector mul2(gate_shape_size); - vector Ct(gate_shape_size); + std::vector mul1(gate_shape_size); + std::vector mul2(gate_shape_size); + std::vector Ct(gate_shape_size); // ft (.) Ct-1 reference::multiply(X_W_fico[0].data(), C, diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/matmul.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/matmul.hpp index a158673c50ff2f..86ebcc62c832e3 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/matmul.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/matmul.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -21,23 +9,63 @@ #include #include -#include "ngraph/axis_vector.hpp" -#include "ngraph/builder/autobroadcast.hpp" #include "ngraph/runtime/opt_kernel/reshape.hpp" #include "ngraph/runtime/reference/broadcast.hpp" -#include "ngraph/runtime/reference/dot.hpp" #include "ngraph/shape_util.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - -using namespace std; - namespace ngraph { namespace runtime { namespace reference { + namespace details + { + template + void dot(const T* arg0, + const T* arg1, + T* out, + const Shape& arg0_shape, + const Shape& arg1_shape, + const Shape& out_shape) + { + std::fill(out, out + shape_size(out_shape), T{0}); + const size_t arg0_rank = arg0_shape.size(); + const size_t arg1_rank = arg1_shape.size(); + + // 2D inputs shapes are interpreted as {I, K} x {K, J} + // If first input is 1D tensor of shape {K}, it is interpreted as {1, K} + // If second input is 1D tensor of shape {K}, it is interpreted as {K, 1} + const size_t I_dim = arg0_rank == 1 ? 1 : arg0_shape[arg0_rank - 2]; + const size_t J_dim = arg1_rank == 1 ? 1 : arg1_shape[arg1_rank - 1]; + const size_t K_dim = + arg1_rank == 1 ? arg1_shape[arg1_rank - 1] : arg1_shape[arg1_rank - 2]; + + for (size_t i = 0; i < I_dim; ++i) + { + for (size_t k = 0; k < K_dim; ++k) + { + const size_t a_idx = i * K_dim + k; + for (size_t j = 0; j < J_dim; ++j) + { + const size_t b_idx = k * J_dim + j; + const size_t out_idx = i * J_dim + j; + out[out_idx] += arg0[a_idx] * arg1[b_idx]; + } + } + } + } + + std::vector get_transpose_order(const Shape& input_shape) + { + size_t rank = input_shape.size(); + NGRAPH_CHECK(rank > 1, "Invalid input for transpose"); + std::vector axes_order(rank); + std::iota(axes_order.begin(), axes_order.end(), 0); + std::swap(axes_order[rank - 1], axes_order[rank - 2]); + return axes_order; + } + } /// \brief Reference kernel for matmul computation. /// /// \tparam T Type of input and output tensors. @@ -70,89 +98,59 @@ namespace ngraph // and perform broadcast if applicable // 4) Perform dot on the args or updated args and return result - size_t arg0_rank = arg0_shape.size(); - size_t arg1_rank = arg1_shape.size(); - size_t out_rank = out_shape.size(); + // pointers to updated inputs + const T* arg0_data = arg0; + const T* arg1_data = arg1; - // vector vars to hold pontential intermediate transpose, + // vectors to hold pontential intermediate transpose, // broadcast result - vector arg0_transpose_vec; - vector arg1_transpose_vec; - vector arg0_broadcast_vec; - vector arg1_broadcast_vec; - - // pointers to updated inputs - const T* arg0_update = arg0; - const T* arg1_update = arg1; + std::vector arg0_new_data; + std::vector arg1_new_data; // vars for updated inputs shapes - Shape wip_arg0_shape = arg0_shape; - Shape wip_arg1_shape = arg1_shape; + Shape arg0_shape_tmp = arg0_shape; + Shape arg1_shape_tmp = arg1_shape; - auto get_transpose_order = [](const Shape& input_shape) { - size_t rank = input_shape.size(); - NGRAPH_CHECK(rank > 1, "Invalid input for transpose"); - vector axes_order(rank); - iota(axes_order.begin(), axes_order.end(), 0); - swap(axes_order[rank - 1], axes_order[rank - 2]); - return AxisVector{begin(axes_order), end(axes_order)}; - }; - - auto get_broadcast_axes = [](const Shape& marker_shape, const Shape& target_shape) { - NGRAPH_CHECK(marker_shape.size() == target_shape.size(), - "Incompatible input shapes"); - AxisSet broadcast_axes; - for (size_t i = 0; i < marker_shape.size(); i++) - { - if (marker_shape[i] == 1 && target_shape[i] != 1) - { - broadcast_axes.insert(i); - } - } - return broadcast_axes; - }; + size_t arg0_rank = arg0_shape.size(); + size_t arg1_rank = arg1_shape.size(); + const size_t out_rank = out_shape.size(); // Perform transpose if requested if (transpose_arg0 && arg0_rank > 1) { - arg0_transpose_vec.reserve(shape_size(arg0_shape)); - auto axis_vector = get_transpose_order(arg0_shape); - swap(wip_arg0_shape[arg0_rank - 1], wip_arg0_shape[arg0_rank - 2]); - opt_kernel::reshape(reinterpret_cast(arg0), - reinterpret_cast(arg0_transpose_vec.data()), + std::vector tmp(shape_size(arg0_shape)); + auto axis_vector = details::get_transpose_order(arg0_shape); + std::swap(arg0_shape_tmp[arg0_rank - 1], arg0_shape_tmp[arg0_rank - 2]); + opt_kernel::reshape(reinterpret_cast(arg0_data), + reinterpret_cast(tmp.data()), arg0_shape, axis_vector, - wip_arg0_shape, + arg0_shape_tmp, sizeof(T)); - - arg0_update = arg0_transpose_vec.data(); + arg0_new_data.swap(tmp); + arg0_data = arg0_new_data.data(); } if (transpose_arg1 && arg1_rank > 1) { - arg1_transpose_vec.reserve(shape_size(arg1_shape)); - auto axis_vector = get_transpose_order(arg1_shape); - swap(wip_arg1_shape[arg1_rank - 1], wip_arg1_shape[arg1_rank - 2]); - opt_kernel::reshape(reinterpret_cast(arg1), - reinterpret_cast(arg1_transpose_vec.data()), + std::vector tmp(shape_size(arg1_shape)); + auto axis_vector = details::get_transpose_order(arg1_shape); + std::swap(arg1_shape_tmp[arg1_rank - 1], arg1_shape_tmp[arg1_rank - 2]); + opt_kernel::reshape(reinterpret_cast(arg1_data), + reinterpret_cast(tmp.data()), arg1_shape, axis_vector, - wip_arg1_shape, + arg1_shape_tmp, sizeof(T)); - - arg1_update = arg1_transpose_vec.data(); + arg1_new_data.swap(tmp); + arg1_data = arg1_new_data.data(); } // Inputs are 2D and below, perform dot directly if (arg0_rank <= 2 && arg1_rank <= 2) { - dot(arg0_update, - arg1_update, - out, - wip_arg0_shape, - wip_arg1_shape, - out_shape, - 1); + details::dot( + arg0_data, arg1_data, out, arg0_shape_tmp, arg1_shape_tmp, out_shape); return; } @@ -163,80 +161,73 @@ namespace ngraph if (arg0_rank > 2 && arg1_rank > 2) { - const auto& broadcast_shapes = builder::get_numpy_broadcast_shapes( - {Shape{begin(wip_arg0_shape), next(end(wip_arg0_shape), -2)}, - Shape{begin(wip_arg1_shape), next(end(wip_arg1_shape), -2)}}); - - Shape arg0_br_target_shape = broadcast_shapes.first; - Shape arg1_br_target_shape = broadcast_shapes.first; - Shape arg0_br_marker_shape = broadcast_shapes.second.at(0); - Shape arg1_br_marker_shape = broadcast_shapes.second.at(1); + // Align input batches to the output shape + Shape arg0_br_target_shape(out_shape.begin(), out_shape.end() - 2); + Shape arg1_br_target_shape(out_shape.begin(), out_shape.end() - 2); arg0_br_target_shape.insert( - end(arg0_br_target_shape), - next(begin(wip_arg0_shape), wip_arg0_shape.size() - 2), - end(wip_arg0_shape)); + end(arg0_br_target_shape), end(arg0_shape_tmp) - 2, end(arg0_shape_tmp)); arg1_br_target_shape.insert( - end(arg1_br_target_shape), - next(begin(wip_arg1_shape), wip_arg1_shape.size() - 2), - end(wip_arg1_shape)); - - arg0_br_marker_shape.insert( - end(arg0_br_marker_shape), - next(begin(wip_arg0_shape), wip_arg0_shape.size() - 2), - end(wip_arg0_shape)); - arg1_br_marker_shape.insert( - end(arg1_br_marker_shape), - next(begin(wip_arg1_shape), wip_arg1_shape.size() - 2), - end(wip_arg1_shape)); + end(arg1_br_target_shape), end(arg1_shape_tmp) - 2, end(arg1_shape_tmp)); - if (arg0_br_target_shape != wip_arg0_shape) + std::vector broadcast_axes(out_shape.size() - 2); + std::iota(broadcast_axes.begin(), broadcast_axes.end(), 0); + if (!broadcast_axes.empty()) { - auto broadcast_axes = - get_broadcast_axes(arg0_br_marker_shape, arg0_br_target_shape); - if (!broadcast_axes.empty()) + // Usual rules of the broadcasting are applied for batch dimensions. + // If ranks of input arguments are different, + // the smaller tensor is unsqueezed from the left side of the shape + // by necessary number of axes to make both shapes of the same rank. + // Broadcast all batches (last two dimensions represent matrix), + // expand dim with value 1 to bigger dim if dimensions are not equal. + if (arg0_br_target_shape != arg0_shape_tmp) { - arg0_broadcast_vec.reserve(shape_size(arg0_br_target_shape)); - broadcast(reinterpret_cast(arg0_update), - reinterpret_cast(arg0_broadcast_vec.data()), - wip_arg0_shape, + std::vector tmp(shape_size(arg0_br_target_shape)); + broadcast(reinterpret_cast(arg0_data), + reinterpret_cast(tmp.data()), + arg0_shape_tmp, arg0_br_target_shape, broadcast_axes, sizeof(T)); - arg0_update = arg0_broadcast_vec.data(); - wip_arg0_shape = arg0_br_target_shape; - arg0_rank = wip_arg0_shape.size(); + arg0_shape_tmp = arg0_br_target_shape; + arg0_rank = arg0_shape_tmp.size(); + arg0_new_data.swap(tmp); + arg0_data = arg0_new_data.data(); } - } - if (arg1_br_target_shape != wip_arg1_shape) - { - auto broadcast_axes = - get_broadcast_axes(arg1_br_marker_shape, arg1_br_target_shape); - if (!broadcast_axes.empty()) + if (arg1_br_target_shape != arg1_shape_tmp) { - arg1_broadcast_vec.reserve(shape_size(arg1_br_target_shape)); - broadcast(reinterpret_cast(arg1_update), - reinterpret_cast(arg1_broadcast_vec.data()), - wip_arg1_shape, + std::vector tmp(shape_size(arg1_br_target_shape)); + broadcast(reinterpret_cast(arg1_data), + reinterpret_cast(tmp.data()), + arg1_shape_tmp, arg1_br_target_shape, broadcast_axes, sizeof(T)); - - arg1_update = arg1_broadcast_vec.data(); - wip_arg1_shape = arg1_br_target_shape; - arg1_rank = wip_arg1_shape.size(); + arg1_shape_tmp = arg1_br_target_shape; + arg1_rank = arg1_shape_tmp.size(); + arg1_new_data.swap(tmp); + arg1_data = arg1_new_data.data(); } } } // Perform batched dot - - size_t output_batch_size = 1; + const Shape dot_arg0_shape = (arg0_rank > 2) ? Shape{arg0_shape_tmp[arg0_rank - 2], + arg0_shape_tmp[arg0_rank - 1]} + : arg0_shape_tmp; + const Shape dot_arg1_shape = (arg1_rank > 2) ? Shape{arg1_shape_tmp[arg1_rank - 2], + arg1_shape_tmp[arg1_rank - 1]} + : arg1_shape_tmp; + const Shape dot_output_shape = + (out_rank > 2 && arg0_rank > 1 && arg1_rank > 1) + ? Shape{out_shape[out_rank - 2], out_shape[out_rank - 1]} + : Shape{out_shape[out_rank - 1]}; // Calculate number of batches - if (out_rank < 3) + size_t output_batch_size = 1; + if (out_rank <= 2) { // Output is {batch_size, dot_result}, i.e., // arg 0 shape {2}, arg1 shape {3, 2, 1}, output shape {3, 1} @@ -244,38 +235,24 @@ namespace ngraph } else { - for (size_t i = 0; i < (out_rank - 2); i++) + for (size_t i = 0; i < (out_rank - dot_output_shape.size()); i++) { output_batch_size *= out_shape[i]; } } - - Shape dot_arg0_shape = (arg0_rank > 2) ? Shape{wip_arg0_shape[arg0_rank - 2], - wip_arg0_shape[arg0_rank - 1]} - : wip_arg0_shape; - Shape dot_arg1_shape = (arg1_rank > 2) ? Shape{wip_arg1_shape[arg1_rank - 2], - wip_arg1_shape[arg1_rank - 1]} - : wip_arg1_shape; - Shape dot_output_shape = - (out_rank > 2) ? Shape{out_shape[out_rank - 2], out_shape[out_rank - 1]} - : Shape{out_shape[out_rank - 1]}; - const size_t arg0_offset = (arg0_rank > 2) ? shape_size(dot_arg0_shape) : 0; const size_t arg1_offset = (arg1_rank > 2) ? shape_size(dot_arg1_shape) : 0; const size_t output_offset = shape_size(dot_output_shape); for (size_t i = 0; i < output_batch_size; i++) { - dot(arg0_update + i * arg0_offset, - arg1_update + i * arg1_offset, - out + i * output_offset, - dot_arg0_shape, - dot_arg1_shape, - dot_output_shape, - 1); + details::dot(arg0_data + i * arg0_offset, + arg1_data + i * arg1_offset, + out + i * output_offset, + dot_arg0_shape, + dot_arg1_shape, + dot_output_shape); } } } } } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/max.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/max.hpp index ebe7ef76b7269b..bbcd2ad2a4f87b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/max.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/max.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/max_pool.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/max_pool.hpp index 0b30a90fa775c9..d1df1fd2b9029b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/max_pool.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/max_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/maximum.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/maximum.hpp index f3ed3e95808d62..aa3b2a8b768782 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/maximum.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/maximum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/mean.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/mean.hpp index 3cbc31a35afa77..0c8acd8188d7d4 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/mean.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/mean.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/min.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/min.hpp index 9150eee976c03c..9cfa7c16c4d2c9 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/min.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/min.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/minimum.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/minimum.hpp index f849147e302b65..4d4dfc72af0982 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/minimum.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/minimum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/mish.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/mish.hpp index b93e79e53b5a8b..9a1b9f7efd28de 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/mish.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/mish.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/mod.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/mod.hpp index 336b8a78301e74..b657cd54887716 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/mod.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/mod.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/multiply.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/multiply.hpp index f12d506be65790..3dfd61bd2af996 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/multiply.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/multiply.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/mvn.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/mvn.hpp index 10e297c11b3ed9..8e0dbd17afa048 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/mvn.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/mvn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/negate.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/negate.hpp index 065a588fcf9a13..c75ffc93929d44 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/negate.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/negate.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/non_max_suppression.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/non_max_suppression.hpp index 503f5b97fd1c0e..b3db42148c7553 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/non_max_suppression.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/non_max_suppression.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/non_zero.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/non_zero.hpp index 4e1ffef3779337..70742d98cacd9e 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/non_zero.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/non_zero.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/normalize_l2.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/normalize_l2.hpp index ac205acff4f335..5da76763465b9d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/normalize_l2.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/normalize_l2.hpp @@ -1,21 +1,13 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once +#include +#include +#include "ngraph/runtime/reference/autobroadcast_binop.hpp" + namespace ngraph { namespace runtime diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/not.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/not.hpp index 949faa91e6a3da..6e447292f010be 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/not.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/not.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/not_equal.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/not_equal.hpp index eedaf962728d65..22a272792a4e35 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/not_equal.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/not_equal.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/one_hot.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/one_hot.hpp index d9966ab2c8e288..25bc9dbee1cd03 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/one_hot.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/one_hot.hpp @@ -1,86 +1,52 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once - -#include - -#include "ngraph/coordinate_transform.hpp" -#include "ngraph/shape_util.hpp" - namespace ngraph { namespace runtime { namespace reference { - template - void one_hot(const INDICES_TYPE* arg, - OUTPUT_TYPE* out, - const Shape& in_shape, - const Shape& out_shape, - size_t one_hot_axis, - const OUTPUT_TYPE on_value, - const OUTPUT_TYPE off_value) + template + void one_hot(const INPUT_TYPE* indices, + const Shape& indices_shape, + char* out, + const size_t out_elem_size, + const size_t depth, + const int64_t one_hot_axis, + const char* on_value, + const char* off_value) { + const size_t num_ind = shape_size(indices_shape); // Step 1: Set off_value to the output. - CoordinateTransform output_transform(out_shape); - - for (const Coordinate& output_coord : output_transform) - { - out[output_transform.index(output_coord)] = off_value; - } - - // Step 2: Write off_value at needed positions, throwing exceptions when invalid - // conditions are encountered. - CoordinateTransform input_transform(in_shape); - - for (const Coordinate& input_coord : input_transform) + for (auto p = out; p < out + num_ind * depth * out_elem_size; p += out_elem_size) + std::copy(off_value, off_value + out_elem_size, p); + // Number of elements between one-hot values in the output memory layout + const size_t inner_block = [&] { + size_t mul = 1; + for (auto i = one_hot_axis; i < indices_shape.size(); ++i) + mul *= indices_shape[i]; + return mul; + }(); + // Step 2: Write on_value at needed positions + for (auto outer_i = 0; outer_i < num_ind; outer_i += inner_block) { - INDICES_TYPE val = arg[input_transform.index(input_coord)]; - - if (std::floor(val) < val || std::floor(val) > val) - { - continue; - } - - size_t one_hot_pos = static_cast(val); - - if (one_hot_pos >= out_shape[one_hot_axis]) + for (auto inner_i = 0; inner_i < inner_block; inner_i++) { - continue; + auto input_val = indices[outer_i + inner_i]; + // Negative indices are ignored + if ((input_val >= 0) && (input_val < depth)) + { + auto oh_index = static_cast(input_val); + size_t output_offset = out_elem_size * (outer_i * depth + inner_i + + oh_index * inner_block); + std::copy(on_value, on_value + out_elem_size, out + output_offset); + } } - - Coordinate one_hot_coord = inject(input_coord, one_hot_axis, one_hot_pos); - - out[output_transform.index(one_hot_coord)] = on_value; } } - - template - void one_hot(const T* arg, - T* out, - const Shape& in_shape, - const Shape& out_shape, - size_t one_hot_axis) - { - const T on_value = 1; - const T off_value = 0; - one_hot(arg, out, in_shape, out_shape, one_hot_axis, on_value, off_value); - } } } } diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/or.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/or.hpp index ab34b8d466e389..b9311da176507e 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/or.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/or.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/pad.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/pad.hpp index 686d3e5ca8033f..4142278501749f 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/pad.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/pad.hpp @@ -1,27 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once -#include - -#include "ngraph/axis_vector.hpp" -#include "ngraph/check.hpp" -#include "ngraph/coordinate_transform.hpp" -#include "ngraph/op/pad.hpp" // for op::PadMode +#include "ngraph/coordinate_diff.hpp" +#include "ngraph/op/util/attr_types.hpp" // for op::PadMode +#include "ngraph/shape.hpp" namespace ngraph { @@ -39,5 +24,5 @@ namespace ngraph const CoordinateDiff& padding_above, const op::PadMode pad_mode); } - } -} + } // namespace runtime +} // namespace ngraph diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/power.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/power.hpp index ab4f35804538bd..c28f735a23bf1e 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/power.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/power.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/prelu.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/prelu.hpp index 6327ff391ba86f..06d1fe91239e8a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/prelu.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/prelu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/prior_box.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/prior_box.hpp index 74880e9f63ff91..e419c274c3f0b9 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/prior_box.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/prior_box.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -107,8 +95,11 @@ namespace ngraph step_y = step; } - auto calculate_data = [&dst_data, &IWI, &IHI, &idx]( - float center_x, float center_y, float box_width, float box_height, bool clip) { + auto calculate_data = [&dst_data, &IWI, &IHI, &idx](float center_x, + float center_y, + float box_width, + float box_height, + bool clip) { if (clip) { // order: xmin, ymin, xmax, ymax diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/prior_box_clustered.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/prior_box_clustered.hpp index e8cbcbc2612409..16d30aff3e7ac0 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/prior_box_clustered.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/prior_box_clustered.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/product.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/product.hpp index 8846cfea2af85a..8466717a4b6ecd 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/product.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/product.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/proposal.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/proposal.hpp index 42a666f02ac138..38934e885335d0 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/proposal.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/proposal.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "ngraph/op/proposal.hpp" #include "ngraph/shape.hpp" namespace ngraph diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/psroi_pooling.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/psroi_pooling.hpp index 24d58245f6d69e..e7844e9937f49a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/psroi_pooling.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/psroi_pooling.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -158,10 +146,10 @@ namespace ngraph float bin_start_w = start_w + sbx * bin_width; float bin_start_h = start_h + sby * bin_height; - const T* input_offset = input + - (batch_id * channels_in + - c_in * channels_out + c_out) * - height * width; + const T* input_offset = + input + (batch_id * channels_in + + c_in * channels_out + c_out) * + height * width; float point_x = pooling_width > 1 ? (pw * width_scale + bin_start_w * (width - 1)) @@ -188,9 +176,8 @@ namespace ngraph T bottom_right = input_offset[bottom * width + right]; - T top_interp = - top_left + - (top_right - top_left) * (point_x - left); + T top_interp = top_left + (top_right - top_left) * + (point_x - left); T bottom_interp = bottom_left + (bottom_right - bottom_left) * (point_x - left); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/quantize.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/quantize.hpp index 6d9c0ccd25d76f..662e3bb2227c5f 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/quantize.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/quantize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -20,8 +8,6 @@ #include "ngraph/op/quantize.hpp" #include "ngraph/shape_util.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - namespace ngraph { namespace runtime @@ -120,5 +106,3 @@ namespace ngraph } } } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/range.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/range.hpp index b47c3cf68028b1..056deb6c6ee1b3 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/range.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/range.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l1.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l1.hpp index 15dae2ea3a1c7a..ea8be17ebd8f06 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l1.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l1.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l2.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l2.hpp index c2f81790e9c608..a1472db855f5b5 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l2.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/reduce_l2.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -50,9 +38,9 @@ namespace ngraph size_t output_index = output_transform.index(output_coord); - out[output_index] = out[output_index] + - arg[input_transform.index(input_coord)] * - arg[input_transform.index(input_coord)]; + out[output_index] = + out[output_index] + arg[input_transform.index(input_coord)] * + arg[input_transform.index(input_coord)]; } for (const Coordinate& output_coord : output_transform) { diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/region_yolo.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/region_yolo.hpp index 52252bb056a999..67435f7751173a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/region_yolo.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/region_yolo.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/relu.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/relu.hpp index f1a0cc232d3f42..99b022b97756f7 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/relu.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/relu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/reorg_yolo.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/reorg_yolo.hpp index ed609c3863eddc..77e5a717c06e04 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/reorg_yolo.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/reorg_yolo.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/reshape.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/reshape.hpp index 0762b4d853ff5d..f620379f814862 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/reshape.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/reshape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/result.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/result.hpp index 88f0958fc2537f..b5e31a11b1aee5 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/result.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/result.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/reverse.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/reverse.hpp index 080dff679b2d5c..3d5f0d79f7b451 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/reverse.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/reverse.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/reverse_sequence.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/reverse_sequence.hpp index aa2c499f66c9aa..e8897b41d83d9c 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/reverse_sequence.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/reverse_sequence.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/rnn_cell.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/rnn_cell.hpp index 5c03d4bf664f87..82a2cee2eec6d8 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/rnn_cell.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/rnn_cell.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/roi_align.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/roi_align.hpp index cdae2a0c0f7ed6..b731b1f1ebeaf8 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/roi_align.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/roi_align.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/roi_pooling.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/roi_pooling.hpp index acce80e0943e09..af7789f836f29a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/roi_pooling.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/roi_pooling.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -211,9 +199,8 @@ namespace ngraph const T bottom_left = feature_maps[bottom_left_idx]; const T bottom_right = feature_maps[bottom_right_idx]; - const T top = - top_left + - (top_right - top_left) * (in_x - left_x_index); + const T top = top_left + (top_right - top_left) * + (in_x - left_x_index); const T bottom = bottom_left + (bottom_right - bottom_left) * (in_x - left_x_index); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/round.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/round.hpp index f7e24ab2974670..caf4e5cd0773cf 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/round.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/round.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp index 5e8ecc163482b3..9cf7777b0d6254 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/scatter_elements_update.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/scatter_nd_update.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/scatter_nd_update.hpp index d8d609c362058f..725d2bf989ad4d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/scatter_nd_update.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/scatter_nd_update.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/scatter_update.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/scatter_update.hpp index 351f4bd63b44b0..a6978ff6263b9a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/scatter_update.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/scatter_update.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp index 6ff23c91d2b65c..06a91a307bfc45 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/selu.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/selu.hpp index dc25299e0fd0cd..fe1d699284a3ca 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/selu.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/selu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/sequences.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/sequences.hpp index 046097cf2b496e..40d41a713aa408 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/sequences.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/sequences.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -191,17 +179,18 @@ namespace ngraph size_t part_size_single_batch = part_shape_size / batch * sizeof(T); for (int i = 0; i < batch; ++i) { + auto shift = i * part_size_single_batch; if ((time_step + 1) > seq_len_values[i]) { continue; } - std::memcpy(h_list[time_step].data() + i * part_size_single_batch, - outputs[1] + i * part_size_single_batch, + std::memcpy(h_list[time_step].data() + shift, + outputs[1] + shift, part_size_single_batch); if (type == CellType::LSTM) { - std::memcpy(c_list[time_step].data() + i * part_size_single_batch, - outputs[2] + i * part_size_single_batch, + std::memcpy(c_list[time_step].data() + shift, + outputs[2] + shift, part_size_single_batch); } } @@ -220,16 +209,27 @@ namespace ngraph { for (int i = 0; i < batch; ++i) { - std::memcpy(outputs[1] + i * part_size_single_batch, - h_list[seq_len_values[i] - 1].data() + - i * part_size_single_batch, - part_size_single_batch); - if (type == CellType::LSTM) + auto idx = seq_len_values[i] - 1; + auto shift = i * part_size_single_batch; + if (idx >= 0 && idx < h_list.size()) { - std::memcpy(outputs[2] + i * part_size_single_batch, - c_list[seq_len_values[i] - 1].data() + - i * part_size_single_batch, + std::memcpy(outputs[1] + shift, + h_list[idx].data() + shift, part_size_single_batch); + if (type == CellType::LSTM) + { + std::memcpy(outputs[2] + shift, + c_list[idx].data() + shift, + part_size_single_batch); + } + } + else + { + std::memset(outputs[1] + shift, 0, part_size_single_batch); + if (type == CellType::LSTM) + { + std::memset(outputs[2] + shift, 0, part_size_single_batch); + } } } } diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/shape_of.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/shape_of.hpp index 6459a5ff7af428..742c0765777745 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/shape_of.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/shape_of.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/sigmoid.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/sigmoid.hpp index 49b26af70e4239..8f61d7ce970d54 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/sigmoid.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/sigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/sign.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/sign.hpp index e3f0ab7d04b413..2eb790c08ea70f 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/sign.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/sign.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/sin.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/sin.hpp index 26c1acf25a651e..a303d57360c819 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/sin.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/sin.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/sinh.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/sinh.hpp index f7775365e45723..fe8bb812f068b0 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/sinh.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/sinh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/slice.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/slice.hpp index 50f684713108c5..581eaf8e53fbfd 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/slice.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/slice.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/softmax.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/softmax.hpp index 37d85dda20e47f..78851db9e7e1a8 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/softmax.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/softmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/softplus.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/softplus.hpp index a89c2474de883f..2ff071febf4776 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/softplus.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/softplus.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/split.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/split.hpp index c8e1292855cec8..a5af5ce8478830 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/split.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/split.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/sqrt.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/sqrt.hpp index 2f03bc0b151b00..a5fa4f348af9dd 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/sqrt.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/sqrt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/squared_difference.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/squared_difference.hpp index 04a3fc528a3863..564b48579bccb2 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/squared_difference.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/squared_difference.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/strided_slice.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/strided_slice.hpp index ea0fa7328db920..1a49342b8c9a43 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/strided_slice.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/strided_slice.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/subtract.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/subtract.hpp index feeb0a202d14ce..1e8c6aca5d70b0 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/subtract.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/subtract.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/sum.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/sum.hpp index cfaa777b537fd2..33e8134780d46c 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/sum.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/swish.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/swish.hpp index d40debd047f647..018eeb7807a838 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/swish.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/swish.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/tan.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/tan.hpp index f8f3e2f4d1e539..36aba53c276ca9 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/tan.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/tan.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/tanh.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/tanh.hpp index a438370a60278a..f4df2997f00a7b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/tanh.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/tanh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/tensor_iterator.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/tensor_iterator.hpp index 654282897ca793..de5305bfd61796 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/tensor_iterator.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/tensor_iterator.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/tile.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/tile.hpp index 8d4255ad0382a6..ce9d5361ace01d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/tile.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/tile.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/topk.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/topk.hpp index 06c7698480716d..58b2732b025161 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/topk.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/topk.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -23,8 +11,6 @@ #include "ngraph/coordinate_transform.hpp" #include "ngraph/op/topk.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - namespace ngraph { namespace runtime @@ -151,5 +137,3 @@ namespace ngraph } } } - -NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/transpose.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/transpose.hpp index c28491900264f4..f87690bc9898fb 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/transpose.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/transpose.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -35,7 +23,7 @@ namespace ngraph template void transpose(const T* arg, T* out, Shape arg_size, const U* axes_order = nullptr) { - std::vector range_vector; + std::vector range_vector; if (axes_order == nullptr) { range_vector.resize(arg_size.size()); @@ -43,19 +31,29 @@ namespace ngraph std::reverse(range_vector.begin(), range_vector.end()); axes_order = range_vector.data(); } - size_t cnt = 0; - for (size_t i = 0; i < arg_size.size(); ++i) + + std::vector input_strides(arg_size.size()); + std::vector output_strides(arg_size.size()); + input_strides.back() = 1; + output_strides.back() = 1; + + for (int i = input_strides.size() - 2; i >= 0; i--) { - size_t axes = axes_order[i]; - size_t start = 0; - for (size_t j = 0; j < axes; ++j) - { - start += shape_size(arg_size[j]); - } - for (size_t j = start; j < start + shape_size(arg_size[axes]); ++j) + input_strides[i] = input_strides[i + 1] * arg_size[i + 1]; + output_strides[i] = output_strides[i + 1] * arg_size[axes_order[i + 1]]; + } + for (int i = 0; i < shape_size(arg_size); ++i) + { + size_t in_position = 0; + size_t new_position = i; + + for (int j = 0; j < arg_size.size(); ++j) { - out[cnt++] = arg[j]; + in_position += + (new_position / output_strides[j]) * input_strides[axes_order[j]]; + new_position %= output_strides[j]; } + out[i] = arg[in_position]; } } } diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/utils/span.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/utils/span.hpp index 142a1a59a0f3bf..8318c26694984f 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/utils/span.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/utils/span.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/xor.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/xor.hpp index 39a8b1700ea05b..9f841e568ca00b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/xor.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/xor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/src/coordinate_index.cpp b/ngraph/core/reference/src/coordinate_index.cpp index fcafc3ff2dccc4..326ef9d2061a1c 100644 --- a/ngraph/core/reference/src/coordinate_index.cpp +++ b/ngraph/core/reference/src/coordinate_index.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/coordinate_index.hpp" diff --git a/ngraph/core/reference/src/coordinate_range.cpp b/ngraph/core/reference/src/coordinate_range.cpp index 8eef6b3c02b0de..3de06a514fe912 100644 --- a/ngraph/core/reference/src/coordinate_range.cpp +++ b/ngraph/core/reference/src/coordinate_range.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/coordinate_range.hpp" diff --git a/ngraph/core/reference/src/coordinate_transform.cpp b/ngraph/core/reference/src/coordinate_transform.cpp index 9a7d7a851b76ba..d6004e158f011d 100644 --- a/ngraph/core/reference/src/coordinate_transform.cpp +++ b/ngraph/core/reference/src/coordinate_transform.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/coordinate_transform.hpp" diff --git a/ngraph/core/reference/src/precomp.hpp b/ngraph/core/reference/src/precomp.hpp index 15eb7d548bca16..7262916e8c0632 100644 --- a/ngraph/core/reference/src/precomp.hpp +++ b/ngraph/core/reference/src/precomp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/reference/src/runtime/opt_kernel/reshape.cpp b/ngraph/core/reference/src/runtime/opt_kernel/reshape.cpp index e1d6d25b1eceaa..564591b5584a74 100644 --- a/ngraph/core/reference/src/runtime/opt_kernel/reshape.cpp +++ b/ngraph/core/reference/src/runtime/opt_kernel/reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/reference/src/runtime/reference/broadcast.cpp b/ngraph/core/reference/src/runtime/reference/broadcast.cpp index fe551530d2949c..43a169440c426f 100644 --- a/ngraph/core/reference/src/runtime/reference/broadcast.cpp +++ b/ngraph/core/reference/src/runtime/reference/broadcast.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/runtime/reference/broadcast.hpp" #include "ngraph/runtime/reference/tile.hpp" diff --git a/ngraph/core/reference/src/runtime/reference/concat.cpp b/ngraph/core/reference/src/runtime/reference/concat.cpp index c47004905071e1..7fd8436b6e133e 100644 --- a/ngraph/core/reference/src/runtime/reference/concat.cpp +++ b/ngraph/core/reference/src/runtime/reference/concat.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/reference/src/runtime/reference/convert.cpp b/ngraph/core/reference/src/runtime/reference/convert.cpp index dd67d308a5ddad..9810cac9a6ad75 100644 --- a/ngraph/core/reference/src/runtime/reference/convert.cpp +++ b/ngraph/core/reference/src/runtime/reference/convert.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/runtime/reference/convert.hpp" #include "jit_generator.hpp" diff --git a/ngraph/core/reference/src/runtime/reference/eval_helpers.cpp b/ngraph/core/reference/src/runtime/reference/eval_helpers.cpp index 30527d4900637b..9aae80310a347f 100644 --- a/ngraph/core/reference/src/runtime/reference/eval_helpers.cpp +++ b/ngraph/core/reference/src/runtime/reference/eval_helpers.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/reference/src/runtime/reference/function.cpp b/ngraph/core/reference/src/runtime/reference/function.cpp index 97b0e0cb44f842..7cb36b760b158a 100644 --- a/ngraph/core/reference/src/runtime/reference/function.cpp +++ b/ngraph/core/reference/src/runtime/reference/function.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/reference/src/runtime/reference/gather_tree.cpp b/ngraph/core/reference/src/runtime/reference/gather_tree.cpp index 784f8ce2290c79..5ba310c1d9d043 100644 --- a/ngraph/core/reference/src/runtime/reference/gather_tree.cpp +++ b/ngraph/core/reference/src/runtime/reference/gather_tree.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -29,6 +17,12 @@ static size_t _asIndex(const char* source, const element::Type& element_type) // According to the GatherTree op specification only I32 and FP32 precisions are supported. switch (element_type) { + case element::Type_t::f16: + { + ngraph::float16 tmpBuff = 0.f; + memcpy(&tmpBuff, source, sizeof(ngraph::float16)); + return tmpBuff; + } case element::Type_t::f32: { float tmpBuff = 0.f; diff --git a/ngraph/core/reference/src/runtime/reference/interpolate.cpp b/ngraph/core/reference/src/runtime/reference/interpolate.cpp index eb98ec94199188..9057d6b440793f 100644 --- a/ngraph/core/reference/src/runtime/reference/interpolate.cpp +++ b/ngraph/core/reference/src/runtime/reference/interpolate.cpp @@ -1,22 +1,9 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** - -#include "ngraph/op/interpolate.hpp" -#include + #include "ngraph/runtime/reference/interpolate.hpp" +#include using namespace ngraph::runtime::reference; diff --git a/ngraph/core/reference/src/runtime/reference/jit_generator.cpp b/ngraph/core/reference/src/runtime/reference/jit_generator.cpp index 1b1bf9fcfa4388..adb8c7c3c7ff38 100644 --- a/ngraph/core/reference/src/runtime/reference/jit_generator.cpp +++ b/ngraph/core/reference/src/runtime/reference/jit_generator.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "jit_generator.hpp" #include "ngraph/type/float16.hpp" diff --git a/ngraph/core/reference/src/runtime/reference/jit_generator.hpp b/ngraph/core/reference/src/runtime/reference/jit_generator.hpp index a4f16b1ca824f9..b855253ed04475 100644 --- a/ngraph/core/reference/src/runtime/reference/jit_generator.hpp +++ b/ngraph/core/reference/src/runtime/reference/jit_generator.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #pragma once #include @@ -45,7 +34,8 @@ namespace ngraph public: static const Xbyak::Reg64 param; - typedef enum { + typedef enum + { isa_any, sse42, avx, diff --git a/ngraph/core/reference/src/runtime/reference/loop.cpp b/ngraph/core/reference/src/runtime/reference/loop.cpp index 64342c4284da4f..ceb83d993a08e8 100644 --- a/ngraph/core/reference/src/runtime/reference/loop.cpp +++ b/ngraph/core/reference/src/runtime/reference/loop.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/runtime/reference/loop.hpp" #include "ngraph/runtime/reference/concat.hpp" @@ -176,8 +164,9 @@ namespace ngraph // Copy new values for sliced inputs for (size_t i = 0; i < slice_inputs.size(); ++i) { - inputs_to_body[slice_inputs[i]->m_body_parameter_index] = - sliced_values[i][cur_iter]; + if (sliced_values[i].size() > cur_iter) + inputs_to_body[slice_inputs[i]->m_body_parameter_index] = + sliced_values[i][cur_iter]; } // Evaluate body @@ -193,8 +182,10 @@ namespace ngraph // Check execution condition bool body_exec_condition(false); - body_outputs[special_ports.body_condition_output_idx]->read( - &body_exec_condition, sizeof(bool)); + if (body_outputs.size() > special_ports.body_condition_output_idx && + body_outputs[special_ports.body_condition_output_idx]) + body_outputs[special_ports.body_condition_output_idx]->read( + &body_exec_condition, sizeof(bool)); if (!body_exec_condition) break; diff --git a/ngraph/core/reference/src/runtime/reference/non_max_suppression.cpp b/ngraph/core/reference/src/runtime/reference/non_max_suppression.cpp index 0ffdf92bfb12e3..ba2c3b0b3faf8e 100644 --- a/ngraph/core/reference/src/runtime/reference/non_max_suppression.cpp +++ b/ngraph/core/reference/src/runtime/reference/non_max_suppression.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/non_max_suppression.hpp" #include diff --git a/ngraph/core/reference/src/runtime/reference/pad.cpp b/ngraph/core/reference/src/runtime/reference/pad.cpp index 4cb1418672ed4a..915c55c463dfea 100644 --- a/ngraph/core/reference/src/runtime/reference/pad.cpp +++ b/ngraph/core/reference/src/runtime/reference/pad.cpp @@ -1,213 +1,296 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/runtime/reference/pad.hpp" +#include "ngraph/axis_vector.hpp" +#include "ngraph/check.hpp" +#include "ngraph/coordinate_index.hpp" +#include "ngraph/coordinate_transform.hpp" + +#include + namespace ngraph { namespace runtime { - namespace reference + namespace impl { - void pad(const char* data, - const char* pad_value, - char* out, - const size_t elem_size, - const Shape& data_shape, - const Shape& out_shape, - const CoordinateDiff& padding_below, - const CoordinateDiff& padding_above, - const op::PadMode pad_mode) + namespace { - Coordinate input_start(data_shape.size(), 0); // start at (0,0,...,0) - Coordinate input_end = out_shape; // end at (d'0,d'1,...,d'n), the outer corner of - // the post-padding shape - - Strides input_strides(data_shape.size(), 1); - - AxisVector input_axis_order(data_shape.size()); - for (size_t i = 0; i < data_shape.size(); i++) + template + T clamp(T v, T lo, T hi) { - input_axis_order[i] = i; + if (v < lo) + { + return lo; + } + if (v > hi) + { + return hi; + } + return v; } + struct PadBase + { + PadBase(const char* const data, + const char* const pad_value, + char* const out, + const size_t elem_size, + const Shape& data_shape, + const Shape& out_shape, + const CoordinateDiff& padding_begin, + const CoordinateDiff& padding_end, + const op::PadMode pad_mode) + : data(data) + , pad_value(pad_value) + , out(out) + , elem_size(elem_size) + , data_shape(data_shape) + , out_shape(out_shape) + , padding_begin(padding_begin) + , padding_end(padding_end) + , pad_mode(pad_mode) + , coord(data_shape) + { + } + + virtual ~PadBase() = default; + + void run() const + { + check_inputs(); - CoordinateTransform input_transform(data_shape, - input_start, - input_end, - input_strides, - input_axis_order, - padding_below, - padding_above); - CoordinateTransform output_transform(out_shape); + CoordinateTransformBasic out_coordinate(out_shape); + char* out_data = out; + for (const auto& out_coord : out_coordinate) + { + const auto in_coord = transform_to_input_data_coord(out_coord); - CoordinateTransform::Iterator output_it = output_transform.begin(); + if (in_coord) + { + const auto in_index = coordinate_index(*in_coord, data_shape); + const auto in_data = data + in_index * elem_size; + std::copy(in_data, in_data + elem_size, out_data); + } + else + { + std::copy(pad_value, pad_value + elem_size, out_data); + } + out_data += elem_size; + } + } + virtual const Coordinate* + transform_to_input_data_coord(const Coordinate& out_coord) const = 0; - NGRAPH_CHECK(shape_size(input_transform.get_target_shape()) == - shape_size(output_transform.get_target_shape())); + virtual void check_inputs() const {} - // depending on the data tensor element type, allocate enough bytes to fit a - // single value of this type - std::vector v(elem_size, 0); + /// + /// DATA + /// + const char* const data; + const char* const pad_value; + char* const out; + const size_t elem_size; + const Shape& data_shape; + const Shape& out_shape; + const CoordinateDiff& padding_begin; + const CoordinateDiff& padding_end; + const op::PadMode pad_mode; - for (const Coordinate& in_coord : input_transform) - { - if (output_it == output_transform.end()) - break; - const Coordinate& out_coord = *output_it; + mutable Coordinate coord; + }; - std::fill(v.begin(), v.end(), 0); + struct ConstPad : PadBase + { + using PadBase::PadBase; - switch (pad_mode) + const Coordinate* + transform_to_input_data_coord(const Coordinate& out_coord) const override { - case op::PadMode::CONSTANT: - // If the coordinate is out of bounds, substitute *pad_value. - if (input_transform.has_source_coordinate(in_coord)) - { - const auto* offset = data + input_transform.index(in_coord) * elem_size; - std::copy(offset, offset + elem_size, v.begin()); - } - else - { - std::copy(pad_value, pad_value + elem_size, v.begin()); - } - break; - case op::PadMode::EDGE: - { - Coordinate c = in_coord; // have to copy because in_coord is const + assert(out_coord.size() == coord.size()); - // Truncate each out-of-bound dimension. - for (size_t i = 0; i < c.size(); i++) + for (size_t i = 0; i != coord.size(); ++i) { - if (static_cast(c[i]) < padding_below[i]) + const auto sc = static_cast(out_coord[i]); + + const auto cc = sc - padding_begin[i]; + if (0 <= cc && cc < data_shape[i]) { - c[i] = padding_below[i]; + coord[i] = cc; } - - if (static_cast(c[i]) >= - (padding_below[i] + static_cast(data_shape[i]))) + else { - c[i] = static_cast( - padding_below[i] + static_cast(data_shape[i]) - 1); + return nullptr; } } - const auto* offset = data + input_transform.index(c) * elem_size; - std::copy(offset, offset + elem_size, v.begin()); - break; + return std::addressof(coord); } - case op::PadMode::REFLECT: + }; + + struct EdgePad : PadBase + { + using PadBase::PadBase; + + const Coordinate* + transform_to_input_data_coord(const Coordinate& out_coord) const override { - // clang-format off - // The algorithm here is a bit complicated because if the padding is - // bigger than the tensor, we may reflect multiple times. - // - // Example: - // - // Input shape: [2] - // Padding: 6 below, 6 above - // Output shape: [14] - // - // Input: a b - // Expected output: a b a b a b a b a b a b a b - // - // Computation for coordinate 13 of output: - // - // . . . . . . a b . . . . .[.] -> (oob above by 6 spaces, so reflection is at top-6) - // .[.]. . . . a b . . . . . . -> (oob below by 5 spaces, so reflection is at bottom+5) - // . . . . . . a b . . .[.]. . -> (oob above by 4 spaces, so reflection is at top-4) - // . . .[.]. . a b . . . . . . -> (oob below by 3 spaces, so reflection is at bottom+3) - // . . . . . . a b .[.]. . . . -> (oob above by 2 spaces, so reflection is at top-2) - // . . . . .[.]a b . . . . . . -> (oob below by 1 space, so reflection is at bottom+1) - // . . . . . . a[b]. . . . . . -> (no longer oob, so copy from here) - // - // Note that this algorithm works because REFLECT padding only makes sense - // if each dim is >= 2. - // clang-format on - Coordinate c = in_coord; // have to copy because in_coord is const - - for (size_t i = 0; i < c.size(); i++) - { - ptrdiff_t new_dim = c[i]; - bool done_reflecting = false; + assert(out_coord.size() == coord.size()); - while (!done_reflecting) - { - if (new_dim < padding_below[i]) - { - ptrdiff_t distance_oob = padding_below[i] - new_dim; - new_dim = padding_below[i] + distance_oob; - } - else if (new_dim >= - padding_below[i] + static_cast(data_shape[i])) - { - ptrdiff_t distance_oob = - new_dim - padding_below[i] - - (static_cast(data_shape[i]) - 1); - new_dim = padding_below[i] + - static_cast(data_shape[i]) - distance_oob - - 1; - } - else - { - done_reflecting = true; - } - } + for (size_t i = 0; i != coord.size(); ++i) + { + const auto sc = static_cast(out_coord[i]); - c[i] = static_cast(new_dim); + const auto cc = sc - padding_begin[i]; + coord[i] = clamp(cc, 0, data_shape[i] - 1); } - const auto* offset = data + input_transform.index(c) * elem_size; - std::copy(offset, offset + elem_size, v.begin()); - break; + return std::addressof(coord); } - case op::PadMode::SYMMETRIC: + }; + + struct SymmetricAndReflectPad : PadBase + { + SymmetricAndReflectPad(const char* const data, + const char* const pad_value, + char* const out, + const size_t elem_size, + const Shape& data_shape, + const Shape& out_shape, + const CoordinateDiff& padding_begin, + const CoordinateDiff& padding_end, + const op::PadMode pad_mode) + : PadBase(data, + pad_value, + out, + elem_size, + data_shape, + out_shape, + padding_begin, + padding_end, + pad_mode) + , axis_correction(pad_mode == op::PadMode::SYMMETRIC ? 1 : 0) { - Coordinate c = in_coord; // have to copy because in_coord is const - for (size_t i = 0; i < c.size(); i++) + } + + const Coordinate* + transform_to_input_data_coord(const Coordinate& out_coord) const override + { + assert(out_coord.size() == coord.size()); + + for (size_t i = 0; i != coord.size(); ++i) { - ptrdiff_t pos = padding_below[i] - (c[i] + 1); - if (pos >= 0) - { - c[i] = static_cast(pos + padding_below[i]); - } - else - { - pos = -(pos + 1); - ptrdiff_t src_dim = static_cast(data_shape[i]); - if (pos < src_dim) - { - c[i] = static_cast(pos + padding_below[i]); - } - else - { - c[i] = static_cast(2 * (padding_below[i] + src_dim) - - c[i] - 1); - } - } + const auto shape_dim = static_cast(data_shape[i]); + const auto sc = static_cast(out_coord[i]); + + const auto cc = sc - padding_begin[i]; + const auto rollfront_cc = cc >= 0 ? cc : -cc - axis_correction; + const auto rollback_cc = + shape_dim - (rollfront_cc + 2 - shape_dim) + axis_correction; + coord[i] = rollfront_cc < shape_dim ? rollfront_cc : rollback_cc; + assert(0 <= coord[i] && coord[i] < data_shape[i]); } - const auto* offset = data + input_transform.index(c) * elem_size; - std::copy(offset, offset + elem_size, v.begin()); - break; + return std::addressof(coord); } + + void check_inputs() const override + { + for (size_t i = 0; i != padding_begin.size(); ++i) + { + const auto axis_size = static_cast(data_shape[i]); + NGRAPH_CHECK(padding_begin[i] - axis_correction < axis_size, + "padding below should be less than data shape"); + NGRAPH_CHECK(padding_end[i] - axis_correction < axis_size, + "padding should be less than data shape"); + } } - std::copy( - v.begin(), v.end(), out + output_transform.index(out_coord) * elem_size); + int axis_correction{}; + }; + } - ++output_it; + void pad(const char* data, + const char* pad_value, + char* out, + const size_t elem_size, + const Shape& data_shape, + const Shape& out_shape, + const CoordinateDiff& padding_below, + const CoordinateDiff& padding_above, + const op::PadMode pad_mode) + { + switch (pad_mode) + { + case op::PadMode::CONSTANT: + { + impl::ConstPad pad{data, + pad_value, + out, + elem_size, + data_shape, + out_shape, + padding_below, + padding_above, + pad_mode}; + pad.run(); + } + break; + case op::PadMode::EDGE: + { + impl::EdgePad pad{data, + pad_value, + out, + elem_size, + data_shape, + out_shape, + padding_below, + padding_above, + pad_mode}; + pad.run(); + } + break; + case op::PadMode::REFLECT: + case op::PadMode::SYMMETRIC: + { + impl::SymmetricAndReflectPad pad{data, + pad_value, + out, + elem_size, + data_shape, + out_shape, + padding_below, + padding_above, + pad_mode}; + pad.run(); } + break; + default: break; + } + } + } // namespace impl + + namespace reference + { + void pad(const char* data, + const char* pad_value, + char* out, + const size_t elem_size, + const Shape& data_shape, + const Shape& out_shape, + const CoordinateDiff& padding_below, + const CoordinateDiff& padding_above, + const op::PadMode pad_mode) + { + impl::pad(data, + pad_value, + out, + elem_size, + data_shape, + out_shape, + padding_below, + padding_above, + pad_mode); } - } - } -} + } // namespace reference + } // namespace runtime +} // namespace ngraph diff --git a/ngraph/core/reference/src/runtime/reference/reorg_yolo.cpp b/ngraph/core/reference/src/runtime/reference/reorg_yolo.cpp index 1133cfc95c8f6c..065d6eca1b744e 100644 --- a/ngraph/core/reference/src/runtime/reference/reorg_yolo.cpp +++ b/ngraph/core/reference/src/runtime/reference/reorg_yolo.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/reference/src/runtime/reference/reshape.cpp b/ngraph/core/reference/src/runtime/reference/reshape.cpp index beab8414c76db7..f4c100b27fcabe 100644 --- a/ngraph/core/reference/src/runtime/reference/reshape.cpp +++ b/ngraph/core/reference/src/runtime/reference/reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/reference/src/runtime/reference/reverse.cpp b/ngraph/core/reference/src/runtime/reference/reverse.cpp index 5b8a7ebb23b618..7acb76b336d45a 100644 --- a/ngraph/core/reference/src/runtime/reference/reverse.cpp +++ b/ngraph/core/reference/src/runtime/reference/reverse.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/reference/src/runtime/reference/slice.cpp b/ngraph/core/reference/src/runtime/reference/slice.cpp index c5013d708158da..66a9c0898b118c 100644 --- a/ngraph/core/reference/src/runtime/reference/slice.cpp +++ b/ngraph/core/reference/src/runtime/reference/slice.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/runtime/reference/slice.hpp" diff --git a/ngraph/core/reference/src/runtime/reference/split.cpp b/ngraph/core/reference/src/runtime/reference/split.cpp index 9549bf22b5841f..89eca7fa29002b 100644 --- a/ngraph/core/reference/src/runtime/reference/split.cpp +++ b/ngraph/core/reference/src/runtime/reference/split.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/reference/src/runtime/reference/strided_slice.cpp b/ngraph/core/reference/src/runtime/reference/strided_slice.cpp index 07182987df1187..8a57f738207d88 100644 --- a/ngraph/core/reference/src/runtime/reference/strided_slice.cpp +++ b/ngraph/core/reference/src/runtime/reference/strided_slice.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/reference/src/runtime/reference/tensor_iterator.cpp b/ngraph/core/reference/src/runtime/reference/tensor_iterator.cpp index b9e39e5aefed57..19667302899e98 100644 --- a/ngraph/core/reference/src/runtime/reference/tensor_iterator.cpp +++ b/ngraph/core/reference/src/runtime/reference/tensor_iterator.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/runtime/reference/tensor_iterator.hpp" #include "ngraph/runtime/reference/concat.hpp" @@ -115,8 +103,9 @@ namespace ngraph // Copy new values for sliced inputs for (size_t i = 0; i < slice_inputs.size(); ++i) { - inputs_to_body[slice_inputs[i]->m_body_parameter_index] = - sliced_values[i][cur_iter]; + if (sliced_values[i].size() > cur_iter) + inputs_to_body[slice_inputs[i]->m_body_parameter_index] = + sliced_values[i][cur_iter]; } // Evaluate body @@ -160,6 +149,8 @@ namespace ngraph for (size_t i = 0; i < concat_outputs.size(); ++i) { const auto& concat_desc = concat_outputs[i]; + if (!concat_desc) + continue; auto shape = func->get_results().at(concat_desc->m_body_value_index)->get_shape(); std::vector shapes_to_concat(values_to_concat[i].size(), shape); @@ -169,11 +160,11 @@ namespace ngraph pointers_on_values.reserve(values_to_concat[i].size()); for (size_t j = 0; j < values_to_concat[i].size(); ++j) { - pointers_on_values.push_back( - values_to_concat[i][concat_desc->m_stride > 0 - ? j - : (values_to_concat[i].size() - j - 1)] - ->get_data_ptr()); + size_t idx = + concat_desc->m_stride > 0 ? j : (values_to_concat[i].size() - j - 1); + if (values_to_concat[i].size() > idx && values_to_concat[i][idx]) + pointers_on_values.push_back( + values_to_concat[i][idx]->get_data_ptr()); } reference::concat(pointers_on_values, out[concat_desc->m_output_index]->get_data_ptr(), diff --git a/ngraph/core/reference/src/runtime/reference/tile.cpp b/ngraph/core/reference/src/runtime/reference/tile.cpp index 8bda0a07b39e90..6884a55945c503 100644 --- a/ngraph/core/reference/src/runtime/reference/tile.cpp +++ b/ngraph/core/reference/src/runtime/reference/tile.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/attribute_adapter.cpp b/ngraph/core/src/attribute_adapter.cpp index c8bb3937e36977..36ce2864d72bea 100644 --- a/ngraph/core/src/attribute_adapter.cpp +++ b/ngraph/core/src/attribute_adapter.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/attribute_visitor.cpp b/ngraph/core/src/attribute_visitor.cpp index 6f08d0aa4a9240..8c9558cba5c5b0 100644 --- a/ngraph/core/src/attribute_visitor.cpp +++ b/ngraph/core/src/attribute_visitor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/attribute_visitor.hpp" #include "ngraph/attribute_adapter.hpp" diff --git a/ngraph/core/src/axis_set.cpp b/ngraph/core/src/axis_set.cpp index fd962f08c3fb47..3c20e77e787ceb 100644 --- a/ngraph/core/src/axis_set.cpp +++ b/ngraph/core/src/axis_set.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/axis_set.hpp" #include "ngraph/util.hpp" diff --git a/ngraph/core/src/axis_vector.cpp b/ngraph/core/src/axis_vector.cpp index 94fa2f635b837f..e9f3db1b9370e1 100644 --- a/ngraph/core/src/axis_vector.cpp +++ b/ngraph/core/src/axis_vector.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/axis_vector.hpp" #include "ngraph/util.hpp" @@ -45,13 +33,9 @@ ngraph::AxisVector::AxisVector(size_t n) { } -ngraph::AxisVector::AxisVector() -{ -} +ngraph::AxisVector::AxisVector() {} -ngraph::AxisVector::~AxisVector() -{ -} +ngraph::AxisVector::~AxisVector() {} ngraph::AxisVector& ngraph::AxisVector::operator=(const AxisVector& v) { diff --git a/ngraph/core/src/check.cpp b/ngraph/core/src/check.cpp index adea1ebf123e37..84236002dd36e8 100644 --- a/ngraph/core/src/check.cpp +++ b/ngraph/core/src/check.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/check.hpp" diff --git a/ngraph/core/src/coordinate.cpp b/ngraph/core/src/coordinate.cpp index e1e0fd73016a40..7c8c3f360c3d17 100644 --- a/ngraph/core/src/coordinate.cpp +++ b/ngraph/core/src/coordinate.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/coordinate.hpp" #include "ngraph/util.hpp" @@ -28,9 +16,7 @@ std::ostream& ngraph::operator<<(std::ostream& s, const Coordinate& coordinate) return s; } -ngraph::Coordinate::Coordinate() -{ -} +ngraph::Coordinate::Coordinate() {} ngraph::Coordinate::Coordinate(const std::initializer_list& axes) : std::vector(axes) @@ -57,9 +43,7 @@ ngraph::Coordinate::Coordinate(size_t n, size_t initial_value) { } -ngraph::Coordinate::~Coordinate() -{ -} +ngraph::Coordinate::~Coordinate() {} ngraph::Coordinate& ngraph::Coordinate::operator=(const Coordinate& v) { diff --git a/ngraph/core/src/coordinate_diff.cpp b/ngraph/core/src/coordinate_diff.cpp index cd9249cee192aa..8b6d66e4d831a5 100644 --- a/ngraph/core/src/coordinate_diff.cpp +++ b/ngraph/core/src/coordinate_diff.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/coordinate_diff.hpp" #include "ngraph/util.hpp" @@ -48,13 +36,9 @@ ngraph::CoordinateDiff::CoordinateDiff(size_t n, std::ptrdiff_t initial_value) { } -ngraph::CoordinateDiff::CoordinateDiff() -{ -} +ngraph::CoordinateDiff::CoordinateDiff() {} -ngraph::CoordinateDiff::~CoordinateDiff() -{ -} +ngraph::CoordinateDiff::~CoordinateDiff() {} ngraph::CoordinateDiff& ngraph::CoordinateDiff::operator=(const CoordinateDiff& v) { diff --git a/ngraph/core/src/descriptor/input.cpp b/ngraph/core/src/descriptor/input.cpp index 98b4c5b9145436..1a46262a0b298e 100644 --- a/ngraph/core/src/descriptor/input.cpp +++ b/ngraph/core/src/descriptor/input.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/descriptor/input.hpp" #include "ngraph/descriptor/output.hpp" diff --git a/ngraph/core/src/descriptor/output.cpp b/ngraph/core/src/descriptor/output.cpp index 33aba702ccabd4..19f845b4864d9c 100644 --- a/ngraph/core/src/descriptor/output.cpp +++ b/ngraph/core/src/descriptor/output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/descriptor/tensor.cpp b/ngraph/core/src/descriptor/tensor.cpp index 33cf3c8a8c6fab..9799bd8343530e 100644 --- a/ngraph/core/src/descriptor/tensor.cpp +++ b/ngraph/core/src/descriptor/tensor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/descriptor/tensor.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/core/src/dimension.cpp b/ngraph/core/src/dimension.cpp index 2bef584bf2ff8b..db8428bf5bd280 100644 --- a/ngraph/core/src/dimension.cpp +++ b/ngraph/core/src/dimension.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/distributed.cpp b/ngraph/core/src/distributed.cpp index aabd7bcdeb37a5..1050d5c05ffab1 100644 --- a/ngraph/core/src/distributed.cpp +++ b/ngraph/core/src/distributed.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/distributed.hpp" #include "ngraph/log.hpp" diff --git a/ngraph/core/src/env_util.cpp b/ngraph/core/src/env_util.cpp index f1563873a224fd..b1633beb06a5d5 100644 --- a/ngraph/core/src/env_util.cpp +++ b/ngraph/core/src/env_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -60,7 +48,7 @@ int32_t ngraph::getenv_int(const char* env_var, int32_t default_value) else { NGRAPH_DEBUG << "Environment variable (" << env_var << ") empty or undefined, " - << " defaulted to -1 here."; + << " defaulted to " << default_value << " here."; } return env; } diff --git a/ngraph/core/src/factory.cpp b/ngraph/core/src/factory.cpp index d9758958572e09..c5b1c2e4a7b178 100644 --- a/ngraph/core/src/factory.cpp +++ b/ngraph/core/src/factory.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/file_util.cpp b/ngraph/core/src/file_util.cpp index 69749b9d547c59..d684d2327939f9 100644 --- a/ngraph/core/src/file_util.cpp +++ b/ngraph/core/src/file_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifdef _WIN32 #include @@ -230,19 +218,20 @@ void file_util::iterate_files(const string& path, FindClose(hFind); } #else - iterate_files_worker(path, - [&files, &dirs](const string& file, bool is_dir) { - if (is_dir) - { - dirs.push_back(file); - } - else - { - files.push_back(file); - } - }, - recurse, - include_links); + iterate_files_worker( + path, + [&files, &dirs](const string& file, bool is_dir) { + if (is_dir) + { + dirs.push_back(file); + } + else + { + files.push_back(file); + } + }, + recurse, + include_links); #endif for (auto f : files) diff --git a/ngraph/core/src/function.cpp b/ngraph/core/src/function.cpp index 23144331c26eb1..9d6a87914e4fe0 100644 --- a/ngraph/core/src/function.cpp +++ b/ngraph/core/src/function.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/graph_util.cpp b/ngraph/core/src/graph_util.cpp index 3649866fb51fa6..12a439f17e32e1 100644 --- a/ngraph/core/src/graph_util.cpp +++ b/ngraph/core/src/graph_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -38,8 +26,6 @@ #include "ngraph/rt_info.hpp" #include "ngraph/util.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; @@ -319,6 +305,13 @@ std::vector> auto rt_info = node->get_rt_info(); cloned_node->get_rt_info() = rt_info; + for (auto output : node->outputs()) + { + const auto& output_rt_info = output.get_rt_info(); + auto new_output = output.for_node(cloned_node); + new_output.get_rt_info() = output_rt_info; + } + for (auto tag : node->get_provenance_tags()) { cloned_node->add_provenance_tag(tag); @@ -637,7 +630,8 @@ NodeVector ngraph::get_subgraph_outputs(const NodeVector& nodes, NodeVector ngraph::extract_subgraph(const NodeVector& results, const NodeVector& args) { NodeVector subgraph; - traverse_nodes(results, [&](std::shared_ptr n) { subgraph.push_back(n); }, args); + traverse_nodes( + results, [&](std::shared_ptr n) { subgraph.push_back(n); }, args); return subgraph; } diff --git a/ngraph/core/src/interval.cpp b/ngraph/core/src/interval.cpp index 926dbb83759f79..640b7343fee743 100644 --- a/ngraph/core/src/interval.cpp +++ b/ngraph/core/src/interval.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/interval.hpp" diff --git a/ngraph/core/src/itt.hpp b/ngraph/core/src/itt.hpp index ffbf0f0258f5d6..8670efc3cd41f2 100644 --- a/ngraph/core/src/itt.hpp +++ b/ngraph/core/src/itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines openvino domains for tracing @@ -48,8 +36,8 @@ OV_ITT_DOMAIN(SIMPLE_ngraph_pass); OV_ITT_SCOPED_TASK(SIMPLE_ngraph_pass, m_callback_handle) #elif defined(SELECTIVE_BUILD) #define NGRAPH_OP_SCOPE(region) \ - if (OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(ngraph_op, _, region)) == 0) \ - throw ngraph::ngraph_error(std::string(OV_CC_TOSTRING(OV_CC_CAT3(ngraph_op, _, region))) + \ + if (OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(ngraph_op, _, region)) == 0) \ + throw ngraph::ngraph_error(std::string(OV_PP_TOSTRING(OV_PP_CAT3(ngraph_op, _, region))) + \ " is disabled!") #define NGRAPH_PASS_CALLBACK(matcher) #else @@ -60,7 +48,7 @@ OV_ITT_DOMAIN(SIMPLE_ngraph_pass); #define NGRAPH_TYPE_CASE(region, a, ...) \ case element::Type_t::a: \ { \ - OV_SCOPE(ngraph_op, OV_CC_CAT3(region, _, a)) \ + OV_SCOPE(ngraph_op, OV_PP_CAT3(region, _, a)) \ { \ rc = evaluate(__VA_ARGS__); \ } \ @@ -70,7 +58,7 @@ OV_ITT_DOMAIN(SIMPLE_ngraph_pass); #define NGRAPH_COPY_TENSOR(region, a, ...) \ case element::Type_t::a: \ { \ - OV_SCOPE(ngraph_op, OV_CC_CAT3(region, _, a)) \ + OV_SCOPE(ngraph_op, OV_PP_CAT3(region, _, a)) \ { \ rc = copy_tensor(__VA_ARGS__); \ } \ diff --git a/ngraph/core/src/log.cpp b/ngraph/core/src/log.cpp index 52d5b49af07c18..15de411e45ef91 100644 --- a/ngraph/core/src/log.cpp +++ b/ngraph/core/src/log.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/ngraph.cpp b/ngraph/core/src/ngraph.cpp index 8865d69603e669..ee28dad721129c 100644 --- a/ngraph/core/src/ngraph.cpp +++ b/ngraph/core/src/ngraph.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/node.cpp b/ngraph/core/src/node.cpp index 752ac9b98b9c83..7c26ed61ac9643 100644 --- a/ngraph/core/src/node.cpp +++ b/ngraph/core/src/node.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -253,9 +241,7 @@ void Node::invalidate_values() output.get_tensor().invalidate_values(); } -void Node::validate_and_infer_types() -{ -} +void Node::validate_and_infer_types() {} void Node::set_input_is_relevant_to_shape(size_t i, bool relevant) { diff --git a/ngraph/core/src/node_input.cpp b/ngraph/core/src/node_input.cpp index b9cf965d56d0e4..8ab99370c11ade 100644 --- a/ngraph/core/src/node_input.cpp +++ b/ngraph/core/src/node_input.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/node_input.hpp" #include "ngraph/node.hpp" @@ -152,15 +140,15 @@ namespace ngraph bool Input::operator>=(const Input& other) const { return !(*this < other); } std::ostream& operator<<(std::ostream& out, const Input& input) { - return input.get_node()->write_description(out, 0) << ".input(" << input.get_index() - << "):" << input.get_element_type() - << input.get_partial_shape(); + return input.get_node()->write_description(out, 0) + << ".input(" << input.get_index() << "):" << input.get_element_type() + << input.get_partial_shape(); } std::ostream& operator<<(std::ostream& out, const Input& input) { - return input.get_node()->write_description(out, 0) << ".input(" << input.get_index() - << "):" << input.get_element_type() - << input.get_partial_shape(); + return input.get_node()->write_description(out, 0) + << ".input(" << input.get_index() << "):" << input.get_element_type() + << input.get_partial_shape(); } } diff --git a/ngraph/core/src/node_output.cpp b/ngraph/core/src/node_output.cpp index c59987c0068e06..695e41b2d504e6 100644 --- a/ngraph/core/src/node_output.cpp +++ b/ngraph/core/src/node_output.cpp @@ -1,22 +1,11 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/node_output.hpp" #include "ngraph/log.hpp" #include "ngraph/node.hpp" +#include "ngraph/variant.hpp" namespace ngraph { @@ -89,6 +78,20 @@ namespace ngraph } } + using RTMap = std::map>; + + RTMap& Output::get_rt_info() { return m_node->m_outputs.at(m_index).get_rt_info(); } + + const RTMap& Output::get_rt_info() const + { + return m_node->m_outputs.at(m_index).get_rt_info(); + } + + const RTMap& Output::get_rt_info() const + { + return m_node->m_outputs.at(m_index).get_rt_info(); + } + bool Output::operator==(const Output& other) const { return m_node == other.m_node && m_index == other.m_index; @@ -177,15 +180,15 @@ namespace ngraph bool Output::operator>=(const Output& other) const { return !(*this < other); } std::ostream& operator<<(std::ostream& out, const Output& output) { - return output.get_node()->write_description(out, 0) << "[" << output.get_index() - << "]:" << output.get_element_type() - << output.get_partial_shape(); + return output.get_node()->write_description(out, 0) + << "[" << output.get_index() << "]:" << output.get_element_type() + << output.get_partial_shape(); } std::ostream& operator<<(std::ostream& out, const Output& output) { - return output.get_node()->write_description(out, 0) << "[" << output.get_index() - << "]:" << output.get_element_type() - << output.get_partial_shape(); + return output.get_node()->write_description(out, 0) + << "[" << output.get_index() << "]:" << output.get_element_type() + << output.get_partial_shape(); } } diff --git a/ngraph/core/src/op/abs.cpp b/ngraph/core/src/op/abs.cpp index 22aabb6c09334c..3c0119db69e074 100644 --- a/ngraph/core/src/op/abs.cpp +++ b/ngraph/core/src/op/abs.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/acos.cpp b/ngraph/core/src/op/acos.cpp index 08051353d8b5f6..85cc887b14fd7d 100644 --- a/ngraph/core/src/op/acos.cpp +++ b/ngraph/core/src/op/acos.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/acosh.cpp b/ngraph/core/src/op/acosh.cpp index 1ca4d9bcb4614d..ce8fb0e94a58dd 100644 --- a/ngraph/core/src/op/acosh.cpp +++ b/ngraph/core/src/op/acosh.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/add.cpp b/ngraph/core/src/op/add.cpp index bc194eba135fc5..17c8f356074618 100644 --- a/ngraph/core/src/op/add.cpp +++ b/ngraph/core/src/op/add.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/add.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/add.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/and.cpp b/ngraph/core/src/op/and.cpp index 1e77f90e92f32f..4dc66f30441f0f 100644 --- a/ngraph/core/src/op/and.cpp +++ b/ngraph/core/src/op/and.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/and.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/asin.cpp b/ngraph/core/src/op/asin.cpp index e80e88b1bd88cd..f6c501fe05f16d 100644 --- a/ngraph/core/src/op/asin.cpp +++ b/ngraph/core/src/op/asin.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/asinh.cpp b/ngraph/core/src/op/asinh.cpp index b767e60962cdaa..d6da46d8a0502e 100644 --- a/ngraph/core/src/op/asinh.cpp +++ b/ngraph/core/src/op/asinh.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/assign.cpp b/ngraph/core/src/op/assign.cpp index 2ddb2e3ad6417b..4159cbe6463211 100644 --- a/ngraph/core/src/op/assign.cpp +++ b/ngraph/core/src/op/assign.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/assign.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/atan.cpp b/ngraph/core/src/op/atan.cpp index e656e63359b076..02af809e18ab1f 100644 --- a/ngraph/core/src/op/atan.cpp +++ b/ngraph/core/src/op/atan.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/atanh.cpp b/ngraph/core/src/op/atanh.cpp index c35c1d9c80bdda..3d88be2a3c2bc4 100644 --- a/ngraph/core/src/op/atanh.cpp +++ b/ngraph/core/src/op/atanh.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/avg_pool.cpp b/ngraph/core/src/op/avg_pool.cpp index fea91557417ace..702e561d17eb06 100644 --- a/ngraph/core/src/op/avg_pool.cpp +++ b/ngraph/core/src/op/avg_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/avg_pool.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/batch_norm.cpp b/ngraph/core/src/op/batch_norm.cpp index 11d42c2f4b7601..8c38a07050d9bf 100644 --- a/ngraph/core/src/op/batch_norm.cpp +++ b/ngraph/core/src/op/batch_norm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" diff --git a/ngraph/core/src/op/batch_to_space.cpp b/ngraph/core/src/op/batch_to_space.cpp index 06a1520fcee093..9cbcec70fea410 100644 --- a/ngraph/core/src/op/batch_to_space.cpp +++ b/ngraph/core/src/op/batch_to_space.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include @@ -124,7 +113,7 @@ void op::v1::BatchToSpace::validate_and_infer_types() } else { - set_output_type(0, data_type, PartialShape::dynamic()); + set_output_type(0, data_type, PartialShape::dynamic(data_pshape.rank())); } } diff --git a/ngraph/core/src/op/binary_convolution.cpp b/ngraph/core/src/op/binary_convolution.cpp index c695fb2154197e..d65deafab317fe 100644 --- a/ngraph/core/src/op/binary_convolution.cpp +++ b/ngraph/core/src/op/binary_convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/binary_convolution.hpp" #include "itt.hpp" @@ -73,80 +61,116 @@ op::v1::BinaryConvolution::BinaryConvolution(const Output& data, void op::v1::BinaryConvolution::validate_and_infer_types() { NGRAPH_OP_SCOPE(v1_BinaryConvolution_validate_and_infer_types); - const PartialShape& data_batch_shape = get_input_partial_shape(0); + const PartialShape& data_batch_pshape = get_input_partial_shape(0); element::Type data_batch_et = get_input_element_type(0); - const PartialShape& filters_shape = get_input_partial_shape(1); + const PartialShape& filters_pshape = get_input_partial_shape(1); - PartialShape result_shape = PartialShape::dynamic(); - if (data_batch_shape.rank().is_static()) - { - result_shape = - std::vector(data_batch_shape.rank().get_length(), Dimension::dynamic()); + NODE_VALIDATION_CHECK(this, + data_batch_et.is_real(), + "Data batch element type must be float point. Got: ", + data_batch_et); - if (data_batch_shape.rank().get_length() > 1) - { - result_shape[0] = data_batch_shape[0]; // batch size - } + // TODO: Add NodeValidationCheck to filters et once u1 is supported in nGraph Python API + // (#49517) - if (filters_shape.rank().is_static() && filters_shape.rank().get_length() > 1) - { - result_shape[1] = filters_shape[0]; // filter channel size - } - } + NODE_VALIDATION_CHECK(this, + data_batch_pshape.rank().compatible(filters_pshape.rank()), + "Shapes for data batch and filters must have same rank. Got: ", + data_batch_pshape, + "and ", + filters_pshape); if (m_strides.size() == 0) { - m_strides = conv_default_strides(this, data_batch_shape, filters_shape); + m_strides = conv_default_strides(this, data_batch_pshape, filters_pshape); } if (m_dilations.size() == 0) { - m_dilations = conv_default_strides(this, data_batch_shape, filters_shape); + m_dilations = conv_default_strides(this, data_batch_pshape, filters_pshape); } if (m_pads_begin.size() == 0) { - m_pads_begin = conv_default_padding(this, data_batch_shape, filters_shape); + m_pads_begin = conv_default_padding(this, data_batch_pshape, filters_pshape); } if (m_pads_end.size() == 0) { - m_pads_end = conv_default_padding(this, data_batch_shape, filters_shape); + m_pads_end = conv_default_padding(this, data_batch_pshape, filters_pshape); } - if (m_auto_pad == PadType::SAME_UPPER || m_auto_pad == PadType::SAME_LOWER) + PartialShape result_shape = PartialShape::dynamic(); + if (data_batch_pshape.rank().is_static() || filters_pshape.rank().is_static()) { - bool auto_padding_applied = false; - if (filters_shape.is_static()) + const bool is_data_batch_ps_static = data_batch_pshape.rank().is_static(); + const auto output_ps_rank = + is_data_batch_ps_static ? data_batch_pshape.rank() : filters_pshape.rank(); + const auto num_spatial_dims = output_ps_rank.get_length() - 2; + + NODE_VALIDATION_CHECK(this, + m_strides.size() == num_spatial_dims, + "Strides should be defined for all and only spatial features."); + + NODE_VALIDATION_CHECK(this, + m_dilations.size() == num_spatial_dims, + "Dilations should be defined for all and only spatial features."); + + NODE_VALIDATION_CHECK(this, + m_pads_begin.size() == num_spatial_dims && + m_pads_end.size() == num_spatial_dims, + "Pads should be defined for all and only spatial features."); + + result_shape = std::vector(output_ps_rank.get_length(), Dimension::dynamic()); + if (data_batch_pshape.rank().is_static()) { - m_pads_begin.clear(); - m_pads_end.clear(); - auto filter_shape = filters_shape.to_shape(); - filter_shape.erase(filter_shape.begin(), filter_shape.begin() + 2); // Remove {O,I} - auto_padding_applied = try_apply_auto_padding(data_batch_shape, - filter_shape, - m_strides, - m_dilations, - m_auto_pad, - m_pads_end, - m_pads_begin); + result_shape[0] = data_batch_pshape[0]; // batch size } - if (!auto_padding_applied) + if (filters_pshape.rank().is_static()) { - set_output_type(0, data_batch_et, result_shape); - return; + result_shape[1] = filters_pshape[0]; // filter channel size + } + if (m_auto_pad == PadType::SAME_UPPER || m_auto_pad == PadType::SAME_LOWER) + { + bool auto_padding_applied = false; + if (filters_pshape.rank().is_static() && filters_pshape.rank().get_length() > 2) + { + m_pads_begin.clear(); + m_pads_end.clear(); + + const PartialShape filter_spatial_shape = [filters_pshape]() { + vector filter_dims{filters_pshape}; + filter_dims.erase(filter_dims.begin(), filter_dims.begin() + 2); // Remove {O,I} + return PartialShape{filter_dims}; + }(); + + if (filter_spatial_shape.is_static()) + { + auto_padding_applied = try_apply_auto_padding(data_batch_pshape, + filter_spatial_shape.to_shape(), + m_strides, + m_dilations, + m_auto_pad, + m_pads_end, + m_pads_begin); + } + } + if (!auto_padding_applied) + { + set_output_type(0, data_batch_et, result_shape); + return; + } } - } - - result_shape = infer_convolution_forward(this, - data_batch_shape, - Strides(data_batch_shape.rank().get_length() - 2, 1), - m_pads_begin, - m_pads_end, - filters_shape, - m_strides, - m_dilations); + result_shape = infer_convolution_forward(this, + data_batch_pshape, + Strides(num_spatial_dims, 1), + m_pads_begin, + m_pads_end, + filters_pshape, + m_strides, + m_dilations); + } set_output_type(0, data_batch_et, result_shape); } diff --git a/ngraph/core/src/op/broadcast.cpp b/ngraph/core/src/op/broadcast.cpp index 8893c8229e8d9e..a9fb1175e87793 100644 --- a/ngraph/core/src/op/broadcast.cpp +++ b/ngraph/core/src/op/broadcast.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" @@ -26,8 +14,6 @@ #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/broadcast.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/bucketize.cpp b/ngraph/core/src/op/bucketize.cpp index 47a1503fee4831..4ee5270bab2942 100644 --- a/ngraph/core/src/op/bucketize.cpp +++ b/ngraph/core/src/op/bucketize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/bucketize.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/ceiling.cpp b/ngraph/core/src/op/ceiling.cpp index 2e3874277096c0..6b16608cf06256 100644 --- a/ngraph/core/src/op/ceiling.cpp +++ b/ngraph/core/src/op/ceiling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/ceiling.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/clamp.cpp b/ngraph/core/src/op/clamp.cpp index 1137bb57ebd241..441aeda9c965d8 100644 --- a/ngraph/core/src/op/clamp.cpp +++ b/ngraph/core/src/op/clamp.cpp @@ -1,32 +1,17 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "ngraph/op/clamp.hpp" +#include #include "itt.hpp" -#include "ngraph/builder/make_constant.hpp" -#include "ngraph/op/maximum.hpp" -#include "ngraph/op/minimum.hpp" #include "ngraph/runtime/reference/clamp.hpp" #include "ngraph/util.hpp" using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - namespace clamp { template @@ -37,15 +22,29 @@ namespace clamp return true; } - bool evaluate_clamp( - const HostTensorPtr& arg, const HostTensorPtr& out, double min, double max, size_t count) + bool evaluate_clamp(const HostTensorPtr& arg, const HostTensorPtr& out, double min, double max) { + size_t count = shape_size(arg->get_shape()); auto ceil_func = [](double x) { return ceil(x); }; auto floor_func = [](double x) { return floor(x); }; bool rc = true; switch (arg->get_element_type()) { + TYPE_CASE(i8) + (arg, + out, + double_to_int(min, ceil_func), + double_to_int(max, floor_func), + count); + break; + TYPE_CASE(i16) + (arg, + out, + double_to_int(min, ceil_func), + double_to_int(max, floor_func), + count); + break; TYPE_CASE(i32) (arg, out, @@ -60,6 +59,20 @@ namespace clamp double_to_int(max, floor_func), count); break; + TYPE_CASE(u8) + (arg, + out, + double_to_int(min, ceil_func), + double_to_int(max, floor_func), + count); + break; + TYPE_CASE(u16) + (arg, + out, + double_to_int(min, ceil_func), + double_to_int(max, floor_func), + count); + break; TYPE_CASE(u32) (arg, out, @@ -76,6 +89,9 @@ namespace clamp break; TYPE_CASE(f16)(arg, out, static_cast(min), static_cast(max), count); break; + TYPE_CASE(bf16) + (arg, out, static_cast(min), static_cast(max), count); + break; TYPE_CASE(f32)(arg, out, static_cast(min), static_cast(max), count); break; default: rc = false; break; @@ -87,54 +103,43 @@ namespace clamp bool op::v0::Clamp::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v0_Clamp_evaluate); - return clamp::evaluate_clamp( - inputs[0], outputs[0], get_min(), get_max(), shape_size(get_input_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return clamp::evaluate_clamp(inputs[0], outputs[0], get_min(), get_max()); } NGRAPH_RTTI_DEFINITION(op::v0::Clamp, "Clamp", 0); op::Clamp::Clamp() - : FusedOp() + : Op() , m_min() , m_max() { } op::Clamp::Clamp(const Output& data, const double min, const double max) - : FusedOp({data}) + : Op({data}) , m_min{min} , m_max{max} { constructor_validate_and_infer_types(); } -void op::Clamp::pre_validate_and_infer_types() +void op::Clamp::validate_and_infer_types() { - NODE_VALIDATION_CHECK( - this, m_min < m_max, "The 'min' parameter needs to be less than 'max' for Clamp"); - set_output_type(0, get_input_element_type(0), get_input_partial_shape(0)); -} - -OutputVector op::Clamp::decompose_op() const -{ - const auto data = input_value(0); - const auto type = data.get_element_type(); - const auto shape = data.get_shape(); - - // the clamp op is defined with doubles (attributes) for min/max - // this means the user can create a clamp op with ... - // 1. an integer type input and - // 2. non-integral min/max values - // this forces us to have a policy for dealing with this situation - // the policy is to use ceil for min, floor for max when converting - // from type double to an integer type T - // in this way we select the nearest integer value between min and max - // for both min and max - shared_ptr clamp_min = builder::make_constant_from_double(type, shape, m_min); - shared_ptr clamp_max = builder::make_constant_from_double(type, shape, m_max); - - auto max = make_shared(clamp_min, data); - return {make_shared(clamp_max, max)}; + NGRAPH_OP_SCOPE(v0_Clamp_validate_and_infer_types); + const element::Type& input_et = get_input_element_type(0); + NODE_VALIDATION_CHECK(this, + input_et.is_integral_number() || input_et.is_real(), + "Input element type must be numeric. Got: ", + input_et); + NODE_VALIDATION_CHECK(this, + m_min < m_max, + "Attribute 'min' must be less than 'max'. Got: ", + m_min, + " and ", + m_max); + set_output_type(0, input_et, get_input_partial_shape(0)); } shared_ptr op::Clamp::clone_with_new_inputs(const OutputVector& new_args) const diff --git a/ngraph/core/src/op/concat.cpp b/ngraph/core/src/op/concat.cpp index 9f3e0379d8e2f7..e7d06e830c419c 100644 --- a/ngraph/core/src/op/concat.cpp +++ b/ngraph/core/src/op/concat.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -71,10 +59,14 @@ void op::Concat::validate_and_infer_types() } auto concat_axis = get_concatenation_axis(); NODE_VALIDATION_CHECK(this, - concat_axis < this_input_rank.get_length(), + concat_axis < this_input_rank.get_length() && concat_axis >= 0, "Concatenation axis (", concat_axis, - ") is out of bounds for ", + ") is out of bounds [", + -this_input_rank.get_length(), + ", ", + this_input_rank.get_length() - 1, + "] for ", "argument ", i, ", which has shape ", diff --git a/ngraph/core/src/op/constant.cpp b/ngraph/core/src/op/constant.cpp index 58a024714696d5..0476d202b70c7e 100644 --- a/ngraph/core/src/op/constant.cpp +++ b/ngraph/core/src/op/constant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -179,7 +167,17 @@ op::Constant::Constant(const element::Type& type, { throw std::runtime_error("deserialize unsupported type dynamic"); } - case element::Type_t::u1: { throw std::runtime_error("deserialize unsupported type u1"); + case element::Type_t::i4: + { + throw std::runtime_error("deserialize unsupported type i4"); + } + case element::Type_t::u4: + { + throw std::runtime_error("deserialize unsupported type u4"); + } + case element::Type_t::u1: + { + throw std::runtime_error("deserialize unsupported type u1"); } } m_all_elements_bitwise_identical = true; @@ -289,6 +287,8 @@ op::Constant::Constant(const element::Type& type, throw std::runtime_error("deserialize unsupported type undefined"); case element::Type_t::dynamic: throw std::runtime_error("deserialize unsupported type dynamic"); + case element::Type_t::i4: throw std::runtime_error("deserialize unsupported type i4"); + case element::Type_t::u4: throw std::runtime_error("deserialize unsupported type u4"); case element::Type_t::u1: throw std::runtime_error("deserialize unsupported type u1"); } m_all_elements_bitwise_identical = are_all_data_elements_bitwise_identical(); @@ -328,9 +328,7 @@ op::Constant::Constant(const Constant& other) constructor_validate_and_infer_types(); } -op::Constant::~Constant() -{ -} +op::Constant::~Constant() {} string op::Constant::convert_value_to_string(size_t index) const { @@ -351,6 +349,21 @@ string op::Constant::convert_value_to_string(size_t index) const break; case element::Type_t::f32: rc = to_cpp_string(get_data_ptr()[index]); break; case element::Type_t::f64: rc = to_cpp_string(get_data_ptr()[index]); break; + case element::Type_t::i4: + { + uint8_t i4data = (get_data_ptr()[index / 2] >> (index % 2 ? 0 : 4)) & 0x0F; + int8_t data = i4data; + if ((i4data >> 3) & 0b1) + { + // negative number + data = (i4data & 0x7) | 0xF0; + } + rc = to_string(data); + break; + } + case element::Type_t::u4: + rc = to_string((get_data_ptr()[index / 2] >> (index % 2 ? 0 : 4)) & 0x0F); + break; case element::Type_t::i8: rc = to_string(get_data_ptr()[index]); break; case element::Type_t::i16: rc = to_string(get_data_ptr()[index]); break; case element::Type_t::i32: rc = to_string(get_data_ptr()[index]); break; @@ -460,8 +473,10 @@ vector op::Constant::get_value_strings() const rc.push_back(to_string(value)); } break; - case element::Type_t::u1: throw runtime_error("unsupported type"); - case element::Type_t::undefined: throw runtime_error("unsupported type"); + case element::Type_t::u1: + case element::Type_t::i4: + case element::Type_t::u4: + case element::Type_t::undefined: case element::Type_t::dynamic: throw runtime_error("unsupported type"); } #if defined(__GNUC__) && !(__GNUC__ == 4 && __GNUC_MINOR__ == 8) @@ -615,7 +630,9 @@ bool op::Constant::are_all_data_elements_bitwise_identical() const rc = test_bitwise_identical(this); break; } + case element::Type_t::i4: case element::Type_t::u1: + case element::Type_t::u4: case element::Type_t::undefined: case element::Type_t::dynamic: break; } diff --git a/ngraph/core/src/op/convert.cpp b/ngraph/core/src/op/convert.cpp index 45d15fbe951452..3a0a6307b287f5 100644 --- a/ngraph/core/src/op/convert.cpp +++ b/ngraph/core/src/op/convert.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -72,7 +60,7 @@ namespace convert #define TYPE_OUT_CASE(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(evaluate_covert_out, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(evaluate_covert_out, _, a)); \ rc = evaluate(__VA_ARGS__); \ } \ break @@ -96,6 +84,7 @@ namespace convert TYPE_OUT_CASE(f16, arg, out); TYPE_OUT_CASE(f32, arg, out); TYPE_OUT_CASE(f64, arg, out); + TYPE_OUT_CASE(boolean, arg, out); default: rc = false; break; } return rc; @@ -115,6 +104,7 @@ namespace convert NGRAPH_TYPE_CASE(evaluate_convert, u64, arg, out); NGRAPH_TYPE_CASE(evaluate_convert, f16, arg, out); NGRAPH_TYPE_CASE(evaluate_convert, f32, arg, out); + NGRAPH_TYPE_CASE(evaluate_convert, boolean, arg, out); default: rc = false; break; } return rc; diff --git a/ngraph/core/src/op/convert_like.cpp b/ngraph/core/src/op/convert_like.cpp index d48a71ce3f7d74..24a3a1c63cff6d 100644 --- a/ngraph/core/src/op/convert_like.cpp +++ b/ngraph/core/src/op/convert_like.cpp @@ -1,22 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" +#include "ngraph/op/constant.hpp" +#include "ngraph/op/convert.hpp" #include "ngraph/op/convert_like.hpp" using namespace std; @@ -48,3 +38,17 @@ shared_ptr op::v1::ConvertLike::clone_with_new_inputs(const OutputVector& check_new_args_count(this, new_args); return make_shared(new_args.at(0), new_args.at(1)); } + +bool op::v1::ConvertLike::constant_fold(OutputVector& output_values, + const OutputVector& input_values) +{ + OV_ITT_SCOPED_TASK(itt::domains::nGraph, "op::v1::ConvertLike::constant_fold"); + if (auto data_const = + std::dynamic_pointer_cast(input_values[0].get_node_shared_ptr())) + { + auto convert = make_shared(input_values[0], input_values[1].get_element_type()); + convert->constant_fold(output_values, OutputVector{data_const}); + return true; + } + return false; +} diff --git a/ngraph/core/src/op/convolution.cpp b/ngraph/core/src/op/convolution.cpp index 332d0f0b91e26a..e60969e331fcc1 100644 --- a/ngraph/core/src/op/convolution.cpp +++ b/ngraph/core/src/op/convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/convolution.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/cos.cpp b/ngraph/core/src/op/cos.cpp index 296500ec201f20..026f8f5e1165f3 100644 --- a/ngraph/core/src/op/cos.cpp +++ b/ngraph/core/src/op/cos.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/cosh.cpp b/ngraph/core/src/op/cosh.cpp index d78f9f8ba4395c..492ebbe386a840 100644 --- a/ngraph/core/src/op/cosh.cpp +++ b/ngraph/core/src/op/cosh.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/ctc_greedy_decoder.cpp b/ngraph/core/src/op/ctc_greedy_decoder.cpp index c9f9cec3e2a257..ca6afc6258e4d0 100644 --- a/ngraph/core/src/op/ctc_greedy_decoder.cpp +++ b/ngraph/core/src/op/ctc_greedy_decoder.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/ctc_greedy_decoder.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/ctc_greedy_decoder_seq_len.cpp b/ngraph/core/src/op/ctc_greedy_decoder_seq_len.cpp index 9bd2916df086a3..5cb1cd090e56cb 100644 --- a/ngraph/core/src/op/ctc_greedy_decoder_seq_len.cpp +++ b/ngraph/core/src/op/ctc_greedy_decoder_seq_len.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/ctc_loss.cpp b/ngraph/core/src/op/ctc_loss.cpp index ab122d366f7776..0f5fad9ab8b59b 100644 --- a/ngraph/core/src/op/ctc_loss.cpp +++ b/ngraph/core/src/op/ctc_loss.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/ctc_loss.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/cum_sum.cpp b/ngraph/core/src/op/cum_sum.cpp index 4aff98243c11b9..f8a7286eb86da6 100644 --- a/ngraph/core/src/op/cum_sum.cpp +++ b/ngraph/core/src/op/cum_sum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/cum_sum.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/deformable_convolution.cpp b/ngraph/core/src/op/deformable_convolution.cpp index e106f689b58fb2..bdfd057ce8f99a 100644 --- a/ngraph/core/src/op/deformable_convolution.cpp +++ b/ngraph/core/src/op/deformable_convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/deformable_convolution.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/deformable_psroi_pooling.cpp b/ngraph/core/src/op/deformable_psroi_pooling.cpp index 2b5346ed4ecd57..d1220c932e65c2 100644 --- a/ngraph/core/src/op/deformable_psroi_pooling.cpp +++ b/ngraph/core/src/op/deformable_psroi_pooling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/deformable_psroi_pooling.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/depth_to_space.cpp b/ngraph/core/src/op/depth_to_space.cpp index 3bc804dd1bef94..4e90fbf980e4ef 100644 --- a/ngraph/core/src/op/depth_to_space.cpp +++ b/ngraph/core/src/op/depth_to_space.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include @@ -31,8 +20,6 @@ using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - NGRAPH_RTTI_DEFINITION(op::v0::DepthToSpace, "DepthToSpace", 0); op::DepthToSpace::DepthToSpace(const Output& data, @@ -112,7 +99,7 @@ void op::DepthToSpace::validate_and_infer_types() } else { - set_output_type(0, data_type, PartialShape::dynamic()); + set_output_type(0, data_type, PartialShape::dynamic(data_pshape.rank())); } } diff --git a/ngraph/core/src/op/detection_output.cpp b/ngraph/core/src/op/detection_output.cpp index 1d4e4ec7156068..f9dc5bbcb68eba 100644 --- a/ngraph/core/src/op/detection_output.cpp +++ b/ngraph/core/src/op/detection_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/detection_output.hpp" #include "itt.hpp" @@ -163,8 +151,8 @@ void op::DetectionOutput::validate_and_infer_types() this, proposals_1st_dim == 1 || proposals_1st_dim == num_images_val, "Proposals' first dimension is must be equal to either batch size (" + - std::to_string(num_images_val) + ") or 1. Got: " + - std::to_string(proposals_1st_dim) + "."); + std::to_string(num_images_val) + + ") or 1. Got: " + std::to_string(proposals_1st_dim) + "."); } if (proposals_pshape[1].is_static()) { diff --git a/ngraph/core/src/op/dft.cpp b/ngraph/core/src/op/dft.cpp new file mode 100644 index 00000000000000..f689652b580c4c --- /dev/null +++ b/ngraph/core/src/op/dft.cpp @@ -0,0 +1,267 @@ +//***************************************************************************** +// Copyright 2017-2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include +#include +#include + +#include "itt.hpp" +#include "ngraph/attribute_visitor.hpp" +#include "ngraph/axis_set.hpp" +#include "ngraph/axis_vector.hpp" +#include "ngraph/op/constant.hpp" +#include "ngraph/op/dft.hpp" +#include "ngraph/op/util/op_types.hpp" +#include "ngraph/runtime/host_tensor.hpp" + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(op::v7::DFT, "DFT", 7); + +op::v7::DFT::DFT(const Output& data, const Output& axes) + : Op({data, axes}) +{ + constructor_validate_and_infer_types(); +} + +op::v7::DFT::DFT(const Output& data, + const Output& axes, + const Output& signal_size) + : Op({data, axes, signal_size}) +{ + constructor_validate_and_infer_types(); +} + +bool op::v7::DFT::visit_attributes(AttributeVisitor& visitor) +{ + NGRAPH_OP_SCOPE(v7_DFT_visit_attributes); + return true; +} + +std::shared_ptr op::v7::DFT::clone_with_new_inputs(const OutputVector& new_args) const +{ + NGRAPH_OP_SCOPE(v7_DFT_clone_with_new_inputs); + check_new_args_count(this, new_args); + NODE_VALIDATION_CHECK( + this, new_args.size() == 2 || new_args.size() == 3, "Number of inputs must be 2 or 3"); + + if (new_args.size() == 2) + { + return std::make_shared(new_args.at(0), new_args.at(1)); + } + + return std::make_shared(new_args.at(0), new_args.at(1), new_args.at(2)); +} + +void op::v7::DFT::validate() +{ + size_t num_of_inputs = get_input_size(); + + NODE_VALIDATION_CHECK( + this, num_of_inputs == 2 || num_of_inputs == 3, "DFT must have 2 or 3 inputs."); + + element::Type input_et = get_input_element_type(0); + NODE_VALIDATION_CHECK(this, + input_et == element::f32 || input_et == element::f16 || + input_et == element::bf16, + "DFT input element type must be f32, f16, or bf16"); + + element::Type axes_et = get_input_element_type(1); + NODE_VALIDATION_CHECK(this, + axes_et == element::i64 || axes_et == element::i32, + "DFT axes element type must be i32 or i64"); + + const auto& input_shape = PartialShape(get_input_partial_shape(0)); + if (input_shape.rank().is_static()) + { + const auto input_rank = input_shape.rank().get_length(); + NODE_VALIDATION_CHECK(this, + input_rank >= 2, + "The input rank must be greater or equal to 2. Got input rank: ", + input_rank); + + auto last_dim_with_two = input_shape[input_rank - 1] & Dimension(2); + NODE_VALIDATION_CHECK(this, + !last_dim_with_two.get_interval().empty(), + "The last dimension of input data must be 2. Got: ", + input_shape[input_rank - 1]); + } + + const auto& axes_shape = PartialShape(get_input_partial_shape(1)); + if (axes_shape.rank().is_static()) + { + NODE_VALIDATION_CHECK(this, + axes_shape.rank().get_length() == 1, + "DFT axes input must be 1D tensor. Got axes input rank: ", + axes_shape.rank().get_length()); + } + + if (input_shape.rank().is_static() && axes_shape.is_static()) + { + const auto input_rank = input_shape.rank().get_length(); + NODE_VALIDATION_CHECK(this, + input_rank >= axes_shape.to_shape()[0] + 1, + "The input rank must be greater than number of DFT axes. Got " + "input rank: ", + input_rank, + ", number of axes: ", + axes_shape.to_shape()[0]); + } + + if (input_shape.rank().is_static() && is_type(input_value(1).get_node())) + { + const auto input_rank = input_shape.rank().get_length(); + const auto& const_axes = get_constant_from_source(input_value(1)); + auto axes = const_axes->cast_vector(); + + // DFT operation supports for negative axes to transform. More precisely, according to + // the DFT operation specification, axes should be integers from -(r - 1) to (r - 2) + // inclusively, where r = rank(data). A negative axis 'a' is interpreted as an axis + //'r - 1 + a'. The reason is the following. + for (int64_t& axis : axes) + { + if (axis < 0) + { + axis += input_rank - 1; + } + } + + AxisVector axes_vector; + AxisSet axes_set; + for (const int64_t axis : axes) + { + axes_vector.push_back(static_cast(axis)); + axes_set.insert(static_cast(axis)); + } + + NODE_VALIDATION_CHECK( + this, axes.size() == axes_set.size(), "DFT axes must be unique. Got: ", axes_vector); + + NODE_VALIDATION_CHECK(this, + std::find(axes.begin(), axes.end(), input_rank - 1) == axes.end(), + "DFT axes cannot contain the last axis. Got axes: ", + axes_vector); + } + + if (num_of_inputs == 3) + { + element::Type signal_size_et = get_input_element_type(2); + NODE_VALIDATION_CHECK(this, + signal_size_et == element::i64 || signal_size_et == element::i32, + "DFT signal_size element type must be i32 or i64"); + + const auto& signal_size_shape = PartialShape(get_input_partial_shape(2)); + if (signal_size_shape.rank().is_static()) + { + NODE_VALIDATION_CHECK(this, + signal_size_shape.rank().get_length() == 1, + "DFT Signal size input must be 1D tensor. Got signal size " + "input rank: ", + signal_size_shape.rank().get_length()); + } + + if (axes_shape.is_static() && signal_size_shape.is_static()) + { + NODE_VALIDATION_CHECK(this, + axes_shape.to_shape()[0] == signal_size_shape.to_shape()[0], + "Sizes of inputs 'axes' and 'signal_size' must be equal. Got " + "size of 'axes': ", + axes_shape.to_shape()[0], + "size of 'signal_size': ", + signal_size_shape.to_shape()[0]); + } + } +} + +void op::v7::DFT::validate_and_infer_types() +{ + NGRAPH_OP_SCOPE(v7_DFT_validate_and_infer_types); + validate(); + + const auto& input_shape = PartialShape(get_input_partial_shape(0)); + const auto& axes_shape = PartialShape(get_input_partial_shape(1)); + PartialShape output_shape = input_shape; + if (input_shape.rank().is_dynamic()) + { + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto input_rank = input_shape.rank().get_length(); + + if (axes_shape.rank().is_dynamic() || !is_type(input_value(1).get_node())) + { + for (size_t i = 0; i < input_rank - 1; ++i) + { + output_shape[i] = Dimension::dynamic(); + } + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + if (input_values().size() == 2) + { + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto& signal_size_shape = PartialShape(get_input_partial_shape(2)); + if (signal_size_shape.rank().is_dynamic()) + { + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto& const_axes = get_constant_from_source(input_value(1)); + auto axes = const_axes->cast_vector(); + // DFT operation supports for negative axes to transform. More precisely, according to + // the DFT operation specification, axes should be integers from -(r - 1) to (r - 2) + // inclusively, where r = rank(data). A negative axis 'a' is interpreted as an axis + //'r - 1 + a'. The reason is the following. + for (int64_t& axis : axes) + { + if (axis < 0) + { + axis += input_rank - 1; + } + } + + if (!is_type(input_value(2).get_node())) + { + for (int64_t axis : axes) + { + output_shape[axis] = Dimension::dynamic(); + } + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto& const_signal_size = get_constant_from_source(input_value(2)); + const auto signal_size = const_signal_size->cast_vector(); + + size_t num_of_axes = axes.size(); + for (size_t i = 0; i < num_of_axes; ++i) + { + if (signal_size[i] == -1) + { + continue; + } + output_shape[axes[i]] = Dimension(signal_size[i]); + } + + set_output_type(0, get_input_element_type(0), output_shape); +} diff --git a/ngraph/core/src/op/divide.cpp b/ngraph/core/src/op/divide.cpp index 9a761f1d765fb2..0dc53b4e257118 100644 --- a/ngraph/core/src/op/divide.cpp +++ b/ngraph/core/src/op/divide.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/divide.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/divide.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/elu.cpp b/ngraph/core/src/op/elu.cpp index bb61311dd2754c..bb5cf5834de873 100644 --- a/ngraph/core/src/op/elu.cpp +++ b/ngraph/core/src/op/elu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/elu.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/embedding_segments_sum.cpp b/ngraph/core/src/op/embedding_segments_sum.cpp index fd4071b9ebdcdb..53adab6014ecc9 100644 --- a/ngraph/core/src/op/embedding_segments_sum.cpp +++ b/ngraph/core/src/op/embedding_segments_sum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/embedding_segments_sum.hpp" #include diff --git a/ngraph/core/src/op/embeddingbag_offsets_sum.cpp b/ngraph/core/src/op/embeddingbag_offsets_sum.cpp index 8d4e12d83ee8ef..fbab6154e42d3b 100644 --- a/ngraph/core/src/op/embeddingbag_offsets_sum.cpp +++ b/ngraph/core/src/op/embeddingbag_offsets_sum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/embeddingbag_offsets_sum.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/embeddingbag_packedsum.cpp b/ngraph/core/src/op/embeddingbag_packedsum.cpp index 82dc4407074fe7..7b7fe8fb26b678 100644 --- a/ngraph/core/src/op/embeddingbag_packedsum.cpp +++ b/ngraph/core/src/op/embeddingbag_packedsum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/embeddingbag_packedsum.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/equal.cpp b/ngraph/core/src/op/equal.cpp index b06848ff149059..1d6f45adf44c04 100644 --- a/ngraph/core/src/op/equal.cpp +++ b/ngraph/core/src/op/equal.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/equal.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/equal.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/erf.cpp b/ngraph/core/src/op/erf.cpp index 347f78a390dc41..b559b2becc434b 100644 --- a/ngraph/core/src/op/erf.cpp +++ b/ngraph/core/src/op/erf.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/erf.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/exp.cpp b/ngraph/core/src/op/exp.cpp index 756e4829438b20..813783807502cd 100644 --- a/ngraph/core/src/op/exp.cpp +++ b/ngraph/core/src/op/exp.cpp @@ -1,24 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" #include "ngraph/op/exp.hpp" -#include "ngraph/op/multiply.hpp" +#include #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/exp.hpp" @@ -56,9 +44,10 @@ namespace expop return true; } - bool evaluate_exp(const HostTensorPtr& arg0, const HostTensorPtr& out, const size_t count) + bool evaluate_exp(const HostTensorPtr& arg0, const HostTensorPtr& out) { bool rc = true; + size_t count = shape_size(arg0->get_shape()); out->set_unary(arg0); switch (arg0->get_element_type()) @@ -79,5 +68,7 @@ namespace expop bool op::Exp::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v0_Exp_evaluate); - return expop::evaluate_exp(inputs[0], outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return expop::evaluate_exp(inputs[0], outputs[0]); } diff --git a/ngraph/core/src/op/experimental_detectron_detection_output.cpp b/ngraph/core/src/op/experimental_detectron_detection_output.cpp index 4b1ce010c0ea5a..87f4df82c4457a 100644 --- a/ngraph/core/src/op/experimental_detectron_detection_output.cpp +++ b/ngraph/core/src/op/experimental_detectron_detection_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/op/experimental_detectron_generate_proposals.cpp b/ngraph/core/src/op/experimental_detectron_generate_proposals.cpp index d157dc3a84a1a8..90a9424cd77b71 100644 --- a/ngraph/core/src/op/experimental_detectron_generate_proposals.cpp +++ b/ngraph/core/src/op/experimental_detectron_generate_proposals.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/experimental_detectron_generate_proposals.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/experimental_detectron_prior_grid_generator.cpp b/ngraph/core/src/op/experimental_detectron_prior_grid_generator.cpp index bf656e86ab231e..97fa869f107424 100644 --- a/ngraph/core/src/op/experimental_detectron_prior_grid_generator.cpp +++ b/ngraph/core/src/op/experimental_detectron_prior_grid_generator.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/op/experimental_detectron_roi_feature.cpp b/ngraph/core/src/op/experimental_detectron_roi_feature.cpp index c0c7d69c5d506a..7b99630fc4cf4d 100644 --- a/ngraph/core/src/op/experimental_detectron_roi_feature.cpp +++ b/ngraph/core/src/op/experimental_detectron_roi_feature.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/experimental_detectron_topkrois.cpp b/ngraph/core/src/op/experimental_detectron_topkrois.cpp index aeff5f295a8dd9..0353c1757352f4 100644 --- a/ngraph/core/src/op/experimental_detectron_topkrois.cpp +++ b/ngraph/core/src/op/experimental_detectron_topkrois.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/experimental_detectron_topkrois.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/extractimagepatches.cpp b/ngraph/core/src/op/extractimagepatches.cpp index 1f656cec76eeef..0eba4645db0778 100644 --- a/ngraph/core/src/op/extractimagepatches.cpp +++ b/ngraph/core/src/op/extractimagepatches.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/extractimagepatches.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/fake_quantize.cpp b/ngraph/core/src/op/fake_quantize.cpp index e356e13dbb1d9b..55be429cd2841a 100644 --- a/ngraph/core/src/op/fake_quantize.cpp +++ b/ngraph/core/src/op/fake_quantize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" @@ -27,8 +15,6 @@ using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - NGRAPH_RTTI_DEFINITION(op::FakeQuantize, "FakeQuantize", 0); op::FakeQuantize::FakeQuantize() diff --git a/ngraph/core/src/op/floor.cpp b/ngraph/core/src/op/floor.cpp index 3433af82e3d5db..78d04e0029dace 100644 --- a/ngraph/core/src/op/floor.cpp +++ b/ngraph/core/src/op/floor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/floor.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/floor_mod.cpp b/ngraph/core/src/op/floor_mod.cpp index 3bee597419d28d..d16c7c2fd95eb1 100644 --- a/ngraph/core/src/op/floor_mod.cpp +++ b/ngraph/core/src/op/floor_mod.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/floor_mod.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/gather.cpp b/ngraph/core/src/op/gather.cpp index ec9117cb66037e..7e1c5295b79394 100644 --- a/ngraph/core/src/op/gather.cpp +++ b/ngraph/core/src/op/gather.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/gather.hpp" #include "itt.hpp" @@ -25,8 +13,6 @@ #include -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/gather_elements.cpp b/ngraph/core/src/op/gather_elements.cpp index 2267b452961fae..d86a2a97472489 100644 --- a/ngraph/core/src/op/gather_elements.cpp +++ b/ngraph/core/src/op/gather_elements.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/gather_elements.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/gather_nd.cpp b/ngraph/core/src/op/gather_nd.cpp index 34f4fd0683bba9..75b28b7b7328cb 100644 --- a/ngraph/core/src/op/gather_nd.cpp +++ b/ngraph/core/src/op/gather_nd.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/gather_nd.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/gather_tree.cpp b/ngraph/core/src/op/gather_tree.cpp index b52294057232d9..710ec6f23d745d 100644 --- a/ngraph/core/src/op/gather_tree.cpp +++ b/ngraph/core/src/op/gather_tree.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/gather_tree.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/gelu.cpp b/ngraph/core/src/op/gelu.cpp index 7b98d28ab12721..ffd342ee491a72 100644 --- a/ngraph/core/src/op/gelu.cpp +++ b/ngraph/core/src/op/gelu.cpp @@ -1,22 +1,11 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" +#include #include "ngraph/builder/make_constant.hpp" #include "ngraph/op/add.hpp" #include "ngraph/op/divide.hpp" @@ -26,6 +15,7 @@ #include "ngraph/op/multiply.hpp" #include "ngraph/op/negative.hpp" #include "ngraph/op/subtract.hpp" +#include "ngraph/runtime/reference/gelu.hpp" using namespace std; using namespace ngraph; @@ -34,18 +24,18 @@ NGRAPH_SUPPRESS_DEPRECATED_START constexpr NodeTypeInfo op::Gelu::type_info; -op::Gelu::Gelu() +op::v0::Gelu::Gelu() : FusedOp() { } -op::Gelu::Gelu(const Output& data) +op::v0::Gelu::Gelu(const Output& data) : FusedOp({data}) { constructor_validate_and_infer_types(); } -bool ngraph::op::v0::Gelu::visit_attributes(AttributeVisitor& visitor) +bool op::v0::Gelu::visit_attributes(AttributeVisitor& visitor) { NGRAPH_OP_SCOPE(v0_Gelu_visit_attributes); return true; @@ -72,17 +62,17 @@ OutputVector op::Gelu::decompose_op() const return {std::make_shared(multiply, add)}; } -shared_ptr op::Gelu::clone_with_new_inputs(const OutputVector& new_args) const +shared_ptr op::v0::Gelu::clone_with_new_inputs(const OutputVector& new_args) const { NGRAPH_OP_SCOPE(v0_Gelu_clone_with_new_inputs); if (new_args.size() != 1) { throw ngraph_error("Incorrect number of new arguments"); } - return make_shared(new_args.at(0)); + return make_shared(new_args.at(0)); } -void op::Gelu::pre_validate_and_infer_types() +void op::v0::Gelu::pre_validate_and_infer_types() { element::Type input_element_type = get_input_element_type(0); PartialShape input_pshape = get_input_partial_shape(0); @@ -93,8 +83,111 @@ void op::Gelu::pre_validate_and_infer_types() input_element_type, ")."); - if (input_pshape.is_dynamic()) + set_output_type(0, input_element_type, input_pshape); +} + +// ------------------------------ V7 ------------------------------ + +namespace ngraph +{ + template <> + NGRAPH_API EnumNames& EnumNames::get() + { + static auto enum_names = EnumNames( + "op::GeluApproximationMode", + {{"TANH", op::GeluApproximationMode::TANH}, {"ERF", op::GeluApproximationMode::ERF}}); + return enum_names; + } + + constexpr DiscreteTypeInfo AttributeAdapter::type_info; + + std::ostream& op::operator<<(std::ostream& s, const op::GeluApproximationMode& type) + { + return s << as_string(type); + } +} // namespace ngraph + +NGRAPH_RTTI_DEFINITION(op::v7::Gelu, "Gelu", 7); + +op::v7::Gelu::Gelu(const Output& data, GeluApproximationMode mode) + : UnaryElementwiseArithmetic(data) + , m_approximation_mode(mode) +{ + constructor_validate_and_infer_types(); +} + +bool op::v7::Gelu::visit_attributes(AttributeVisitor& visitor) +{ + NGRAPH_OP_SCOPE(v7_Gelu_visit_attributes); + visitor.on_attribute("approximation_mode", m_approximation_mode); + return true; +} + +shared_ptr op::v7::Gelu::clone_with_new_inputs(const OutputVector& new_args) const +{ + NGRAPH_OP_SCOPE(v7_Gelu_clone_with_new_inputs); + if (new_args.size() != 1) { - set_output_type(0, input_element_type, input_pshape); + throw ngraph_error("Incorrect number of new arguments"); } + return make_shared(new_args.at(0), m_approximation_mode); +} + +void op::v7::Gelu::validate_and_infer_types() +{ + NGRAPH_OP_SCOPE(v7_Gelu_validate_and_infer_types); + element::Type input_element_type = get_input_element_type(0); + PartialShape input_pshape = get_input_partial_shape(0); + + NODE_VALIDATION_CHECK(this, + input_element_type.is_dynamic() || input_element_type.is_real(), + "Argument element type must be f16, bf16, f32, f64 or dynamic (got ", + input_element_type, + ")."); + + set_output_type(0, input_element_type, input_pshape); +} + +op::GeluApproximationMode op::v7::Gelu::get_approximation_mode() const +{ + return m_approximation_mode; +} + +namespace gelu +{ + template + inline bool evaluate(const HostTensorPtr& arg0, + const HostTensorPtr& out, + op::GeluApproximationMode mode, + const size_t count) + { + using T = typename element_type_traits::value_type; + runtime::reference::gelu(arg0->get_data_ptr(), out->get_data_ptr(), mode, count); + return true; + } + + bool evaluate_gelu(const HostTensorPtr& arg0, + const HostTensorPtr& out, + op::GeluApproximationMode mode) + { + bool rc = true; + size_t count = shape_size(arg0->get_shape()); + out->set_unary(arg0); + + switch (arg0->get_element_type()) + { + NGRAPH_TYPE_CASE(evaluate_gelu, f16, arg0, out, mode, count); + NGRAPH_TYPE_CASE(evaluate_gelu, f32, arg0, out, mode, count); + default: rc = false; break; + } + return rc; + } +} + +bool op::v7::Gelu::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const +{ + NGRAPH_OP_SCOPE(v7_Gelu_evaluate); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return gelu::evaluate_gelu(inputs[0], outputs[0], m_approximation_mode); } diff --git a/ngraph/core/src/op/greater.cpp b/ngraph/core/src/op/greater.cpp index d9658d0dfdc670..e67a6f63b892f0 100644 --- a/ngraph/core/src/op/greater.cpp +++ b/ngraph/core/src/op/greater.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/greater.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/greater.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/greater_eq.cpp b/ngraph/core/src/op/greater_eq.cpp index 42a4d9390295e6..0ea56fc3644bed 100644 --- a/ngraph/core/src/op/greater_eq.cpp +++ b/ngraph/core/src/op/greater_eq.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/greater_eq.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/greater_eq.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/grn.cpp b/ngraph/core/src/op/grn.cpp index c25a02b9d5e904..367d5eafaa11c9 100644 --- a/ngraph/core/src/op/grn.cpp +++ b/ngraph/core/src/op/grn.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include "itt.hpp" diff --git a/ngraph/core/src/op/group_conv.cpp b/ngraph/core/src/op/group_conv.cpp index 68058c52f4ba6e..97b16c8b0b51fc 100644 --- a/ngraph/core/src/op/group_conv.cpp +++ b/ngraph/core/src/op/group_conv.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" @@ -29,8 +17,6 @@ using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - //------------------------------------------------------------------------------ // v1::GroupConvolution //------------------------------------------------------------------------------ diff --git a/ngraph/core/src/op/gru_cell.cpp b/ngraph/core/src/op/gru_cell.cpp index f9f2206c0f60a7..d1c6fb1bf391c4 100644 --- a/ngraph/core/src/op/gru_cell.cpp +++ b/ngraph/core/src/op/gru_cell.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/op/gru_sequence.cpp b/ngraph/core/src/op/gru_sequence.cpp index 9818e8e4a712cf..26179701c8b7e6 100644 --- a/ngraph/core/src/op/gru_sequence.cpp +++ b/ngraph/core/src/op/gru_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/hard_sigmoid.cpp b/ngraph/core/src/op/hard_sigmoid.cpp index 1c357618bce93c..4e2f24f6cd2825 100644 --- a/ngraph/core/src/op/hard_sigmoid.cpp +++ b/ngraph/core/src/op/hard_sigmoid.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" @@ -82,6 +70,8 @@ void op::HardSigmoid::pre_validate_and_infer_types() this, data_et == alpha_et && data_et == beta_et, "The element types of both alpha and beta inputs must match the data input type."); + + set_output_type(0, get_input_element_type(0), get_input_partial_shape(0)); } OutputVector op::HardSigmoid::decompose_op() const diff --git a/ngraph/core/src/op/hsigmoid.cpp b/ngraph/core/src/op/hsigmoid.cpp index 3ea0df5f060079..7965aae84bf3b6 100644 --- a/ngraph/core/src/op/hsigmoid.cpp +++ b/ngraph/core/src/op/hsigmoid.cpp @@ -1,20 +1,9 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/hsigmoid.hpp" +#include #include "itt.hpp" #include "ngraph/attribute_visitor.hpp" #include "ngraph/op/constant.hpp" @@ -56,9 +45,10 @@ namespace return true; } - bool evaluate_hsigmoid(const HostTensorPtr& arg, const HostTensorPtr& out, const size_t count) + bool evaluate_hsigmoid(const HostTensorPtr& arg, const HostTensorPtr& out) { bool rc = true; + size_t count = shape_size(arg->get_shape()); out->set_unary(arg); switch (arg->get_element_type()) @@ -76,5 +66,7 @@ bool op::v5::HSigmoid::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v5_HSigmoid_evaluate); - return evaluate_hsigmoid(inputs[0], outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return evaluate_hsigmoid(inputs[0], outputs[0]); } diff --git a/ngraph/core/src/op/hswish.cpp b/ngraph/core/src/op/hswish.cpp index 612a04bba60038..69d1967a397e48 100644 --- a/ngraph/core/src/op/hswish.cpp +++ b/ngraph/core/src/op/hswish.cpp @@ -1,24 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/hswish.hpp" #include "itt.hpp" #include "ngraph/attribute_visitor.hpp" -#include "ngraph/op/constant.hpp" +#include #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/hswish.hpp" @@ -56,9 +44,10 @@ namespace hswish return true; } - bool evaluate_hswish(const HostTensorPtr& arg, const HostTensorPtr& out, const size_t count) + bool evaluate_hswish(const HostTensorPtr& arg, const HostTensorPtr& out) { bool rc = true; + size_t count = shape_size(arg->get_shape()); out->set_unary(arg); switch (arg->get_element_type()) @@ -75,5 +64,7 @@ namespace hswish bool op::v4::HSwish::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v4_HSwish_evaluate); - return hswish::evaluate_hswish(inputs[0], outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return hswish::evaluate_hswish(inputs[0], outputs[0]); } diff --git a/ngraph/core/src/op/idft.cpp b/ngraph/core/src/op/idft.cpp new file mode 100644 index 00000000000000..1c310611f838e1 --- /dev/null +++ b/ngraph/core/src/op/idft.cpp @@ -0,0 +1,254 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include + +#include "itt.hpp" +#include "ngraph/attribute_visitor.hpp" +#include "ngraph/axis_set.hpp" +#include "ngraph/axis_vector.hpp" +#include "ngraph/op/constant.hpp" +#include "ngraph/op/idft.hpp" +#include "ngraph/op/util/op_types.hpp" +#include "ngraph/runtime/host_tensor.hpp" + +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(op::v7::IDFT, "IDFT", 7); + +op::v7::IDFT::IDFT(const Output& data, const Output& axes) + : Op({data, axes}) +{ + constructor_validate_and_infer_types(); +} + +op::v7::IDFT::IDFT(const Output& data, + const Output& axes, + const Output& signal_size) + : Op({data, axes, signal_size}) +{ + constructor_validate_and_infer_types(); +} + +bool op::v7::IDFT::visit_attributes(AttributeVisitor& visitor) +{ + NGRAPH_OP_SCOPE(v7_IDFT_visit_attributes); + return true; +} + +std::shared_ptr op::v7::IDFT::clone_with_new_inputs(const OutputVector& new_args) const +{ + NGRAPH_OP_SCOPE(v7_IDFT_clone_with_new_inputs); + check_new_args_count(this, new_args); + NODE_VALIDATION_CHECK( + this, new_args.size() == 2 || new_args.size() == 3, "Number of inputs must be 2 or 3"); + + if (new_args.size() == 2) + { + return std::make_shared(new_args.at(0), new_args.at(1)); + } + + return std::make_shared(new_args.at(0), new_args.at(1), new_args.at(2)); +} + +void op::v7::IDFT::validate() +{ + size_t num_of_inputs = get_input_size(); + + NODE_VALIDATION_CHECK( + this, num_of_inputs == 2 || num_of_inputs == 3, "IDFT must have 2 or 3 inputs."); + + element::Type input_et = get_input_element_type(0); + NODE_VALIDATION_CHECK(this, + input_et == element::f32 || input_et == element::f16 || + input_et == element::bf16, + "IDFT input element type must be f32, f16, or bf16"); + + element::Type axes_et = get_input_element_type(1); + NODE_VALIDATION_CHECK(this, + axes_et == element::i64 || axes_et == element::i32, + "IDFT axes element type must be i32 or i64"); + + const auto& input_shape = PartialShape(get_input_partial_shape(0)); + if (input_shape.rank().is_static()) + { + const auto input_rank = input_shape.rank().get_length(); + NODE_VALIDATION_CHECK(this, + input_rank >= 2, + "The input rank must be greater or equal to 2. Got input rank: ", + input_rank); + + auto last_dim_with_two = input_shape[input_rank - 1] & Dimension(2); + NODE_VALIDATION_CHECK(this, + !last_dim_with_two.get_interval().empty(), + "The last dimension of input data must be 2. Got: ", + input_shape[input_rank - 1]); + } + + const auto& axes_shape = PartialShape(get_input_partial_shape(1)); + if (axes_shape.rank().is_static()) + { + NODE_VALIDATION_CHECK(this, + axes_shape.rank().get_length() == 1, + "IDFT axes input must be 1D tensor. Got axes input rank: ", + axes_shape.rank().get_length()); + } + + if (input_shape.rank().is_static() && axes_shape.is_static()) + { + const auto input_rank = input_shape.rank().get_length(); + NODE_VALIDATION_CHECK(this, + input_rank >= axes_shape.to_shape()[0] + 1, + "The input rank must be greater than number of IDFT axes. Got " + "input rank: ", + input_rank, + ", number of axes: ", + axes_shape.to_shape()[0]); + } + + if (input_shape.rank().is_static() && is_type(input_value(1).get_node())) + { + const auto input_rank = input_shape.rank().get_length(); + const auto& const_axes = get_constant_from_source(input_value(1)); + auto axes = const_axes->cast_vector(); + + // IDFT operation supports for negative axes to transform. More precisely, according to + // the IDFT operation specification, axes should be integers from -(r - 1) to (r - 2) + // inclusively, where r = rank(data). A negative axis 'a' is interpreted as an axis + //'r - 1 + a'. The reason is the following. + for (int64_t& axis : axes) + { + if (axis < 0) + { + axis += input_rank - 1; + } + } + + AxisVector axes_vector; + AxisSet axes_set; + for (const int64_t axis : axes) + { + axes_vector.push_back(static_cast(axis)); + axes_set.insert(static_cast(axis)); + } + + NODE_VALIDATION_CHECK( + this, axes.size() == axes_set.size(), "IDFT axes must be unique. Got: ", axes_vector); + + NODE_VALIDATION_CHECK(this, + std::find(axes.begin(), axes.end(), input_rank - 1) == axes.end(), + "IDFT axes cannot contain the last axis. Got axes: ", + axes_vector); + } + + if (num_of_inputs == 3) + { + element::Type signal_size_et = get_input_element_type(2); + NODE_VALIDATION_CHECK(this, + signal_size_et == element::i64 || signal_size_et == element::i32, + "IDFT signal_size element type must be i32 or i64"); + + const auto& signal_size_shape = PartialShape(get_input_partial_shape(2)); + if (signal_size_shape.rank().is_static()) + { + NODE_VALIDATION_CHECK(this, + signal_size_shape.rank().get_length() == 1, + "IDFT Signal size input must be 1D tensor. Got signal size " + "input rank: ", + signal_size_shape.rank().get_length()); + } + + if (axes_shape.is_static() && signal_size_shape.is_static()) + { + NODE_VALIDATION_CHECK(this, + axes_shape.to_shape()[0] == signal_size_shape.to_shape()[0], + "Sizes of inputs 'axes' and 'signal_size' must be equal. Got " + "size of 'axes': ", + axes_shape.to_shape()[0], + "size of 'signal_size': ", + signal_size_shape.to_shape()[0]); + } + } +} + +void op::v7::IDFT::validate_and_infer_types() +{ + NGRAPH_OP_SCOPE(v7_IDFT_validate_and_infer_types); + validate(); + + const auto& input_shape = PartialShape(get_input_partial_shape(0)); + const auto& axes_shape = PartialShape(get_input_partial_shape(1)); + PartialShape output_shape = input_shape; + if (input_shape.rank().is_dynamic()) + { + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto input_rank = input_shape.rank().get_length(); + + if (axes_shape.rank().is_dynamic() || !is_type(input_value(1).get_node())) + { + for (size_t i = 0; i < input_rank - 1; ++i) + { + output_shape[i] = Dimension::dynamic(); + } + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + if (input_values().size() == 2) + { + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto& signal_size_shape = PartialShape(get_input_partial_shape(2)); + if (signal_size_shape.rank().is_dynamic()) + { + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto& const_axes = get_constant_from_source(input_value(1)); + auto axes = const_axes->cast_vector(); + // IDFT operation supports for negative axes to transform. More precisely, according to + // the IDFT operation specification, axes should be integers from -(r - 1) to (r - 2) + // inclusively, where r = rank(data). A negative axis 'a' is interpreted as an axis + //'r - 1 + a'. The reason is the following. + for (int64_t& axis : axes) + { + if (axis < 0) + { + axis += input_rank - 1; + } + } + + if (!is_type(input_value(2).get_node())) + { + for (int64_t axis : axes) + { + output_shape[axis] = Dimension::dynamic(); + } + set_output_type(0, get_input_element_type(0), output_shape); + return; + } + + const auto& const_signal_size = get_constant_from_source(input_value(2)); + const auto signal_size = const_signal_size->cast_vector(); + + size_t num_of_axes = axes.size(); + for (size_t i = 0; i < num_of_axes; ++i) + { + if (signal_size[i] == -1) + { + continue; + } + output_shape[axes[i]] = Dimension(signal_size[i]); + } + + set_output_type(0, get_input_element_type(0), output_shape); +} diff --git a/ngraph/core/src/op/interpolate.cpp b/ngraph/core/src/op/interpolate.cpp index d2184606494974..03609d6f9e25cc 100644 --- a/ngraph/core/src/op/interpolate.cpp +++ b/ngraph/core/src/op/interpolate.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/interpolate.hpp" #include @@ -175,6 +163,18 @@ std::vector op::v4::Interpolate::get_axes() const static constexpr float epsilon = 1.0e-6f; +namespace +{ + int64_t multiply_bound_and_scale(int64_t bound, float scale) + { + if (bound == -1) + { + return bound; + } + return static_cast(static_cast(bound) * scale); + } +} + void op::v4::Interpolate::infer_using_scales(PartialShape& output_shape, const std::vector& axes, const std::vector& scales, @@ -183,12 +183,15 @@ void op::v4::Interpolate::infer_using_scales(PartialShape& output_shape, size_t i = 0; for (auto axis : axes) { - if (padded_input_shape[axis].is_static()) - { - float padded_len = static_cast(padded_input_shape[axis].get_length()); - int64_t new_dim = static_cast(padded_len * (scales[i] + epsilon)); - output_shape[axis] = Dimension(new_dim); - } + const auto& current_dim = padded_input_shape[axis]; + float multiplier = scales[i] + epsilon; + + int64_t new_lower_bound = + multiply_bound_and_scale(current_dim.get_min_length(), multiplier); + int64_t new_upper_bound = + multiply_bound_and_scale(current_dim.get_max_length(), multiplier); + + output_shape[axis] = Dimension(new_lower_bound, new_upper_bound); ++i; } } diff --git a/ngraph/core/src/op/less.cpp b/ngraph/core/src/op/less.cpp index a80460b36e0a3f..5f3e0ef5526e84 100644 --- a/ngraph/core/src/op/less.cpp +++ b/ngraph/core/src/op/less.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/less.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/less.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/less_eq.cpp b/ngraph/core/src/op/less_eq.cpp index b2c6ebe2757066..0defd01d228aef 100644 --- a/ngraph/core/src/op/less_eq.cpp +++ b/ngraph/core/src/op/less_eq.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/less_eq.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/less_eq.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/log.cpp b/ngraph/core/src/op/log.cpp index bb9cb59e46a468..4e4dafbf08260f 100644 --- a/ngraph/core/src/op/log.cpp +++ b/ngraph/core/src/op/log.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/log_softmax.cpp b/ngraph/core/src/op/log_softmax.cpp index 7166c01b08535c..c44cd514ff0395 100644 --- a/ngraph/core/src/op/log_softmax.cpp +++ b/ngraph/core/src/op/log_softmax.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/log_softmax.hpp" diff --git a/ngraph/core/src/op/loop.cpp b/ngraph/core/src/op/loop.cpp index eab26e5eb907a3..1ce0179b670a85 100644 --- a/ngraph/core/src/op/loop.cpp +++ b/ngraph/core/src/op/loop.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/loop.hpp" #include @@ -185,12 +173,9 @@ void op::v5::Loop::validate_and_infer_types() "Number of inputs must be the same as number of input descriptions"); // Input - uint64_t index_it = input_offset; for (const auto& input_description : m_input_descriptions) { auto index = input_description->m_input_index; - NODE_VALIDATION_CHECK(this, index == index_it, "Input_index not in order"); - index_it++; if (auto slice_input_description = as_type_ptr(input_description)) { @@ -242,12 +227,9 @@ void op::v5::Loop::validate_and_infer_types() m_body->validate_nodes_and_infer_types(); // Output - index_it = 0; for (const auto& output_description : m_output_descriptions) { auto index = output_description->m_output_index; - NODE_VALIDATION_CHECK(this, index == index_it, "Output_index not in order"); - index_it++; auto body_value = m_body->get_results().at(output_description->m_body_value_index)->input_value(0); diff --git a/ngraph/core/src/op/lrn.cpp b/ngraph/core/src/op/lrn.cpp index 739c28148722bd..c4bf3a0b3e8fd3 100644 --- a/ngraph/core/src/op/lrn.cpp +++ b/ngraph/core/src/op/lrn.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/lrn.hpp" #include diff --git a/ngraph/core/src/op/lstm_cell.cpp b/ngraph/core/src/op/lstm_cell.cpp index 0199177a1b2f8b..47deac08939983 100644 --- a/ngraph/core/src/op/lstm_cell.cpp +++ b/ngraph/core/src/op/lstm_cell.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/lstm_sequence.cpp b/ngraph/core/src/op/lstm_sequence.cpp index 70a113335ad75c..7579281964ca6c 100644 --- a/ngraph/core/src/op/lstm_sequence.cpp +++ b/ngraph/core/src/op/lstm_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/lstm_sequence.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/matmul.cpp b/ngraph/core/src/op/matmul.cpp index 9f331f464532f5..a615c52c052953 100644 --- a/ngraph/core/src/op/matmul.cpp +++ b/ngraph/core/src/op/matmul.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include diff --git a/ngraph/core/src/op/max.cpp b/ngraph/core/src/op/max.cpp index 36bf7b886c95cc..063d55c804fe7a 100644 --- a/ngraph/core/src/op/max.cpp +++ b/ngraph/core/src/op/max.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/max.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/max_pool.cpp b/ngraph/core/src/op/max_pool.cpp index f5477852b8208d..9262415cab530e 100644 --- a/ngraph/core/src/op/max_pool.cpp +++ b/ngraph/core/src/op/max_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/max_pool.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/maximum.cpp b/ngraph/core/src/op/maximum.cpp index 8a94447b116a03..ff63e1fa3cf8c4 100644 --- a/ngraph/core/src/op/maximum.cpp +++ b/ngraph/core/src/op/maximum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -25,8 +13,6 @@ #include "ngraph/runtime/reference/maximum.hpp" #include "ngraph/type/element_type.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/min.cpp b/ngraph/core/src/op/min.cpp index 94d0a9fc07fdcf..25c41d1766cbdf 100644 --- a/ngraph/core/src/op/min.cpp +++ b/ngraph/core/src/op/min.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/min.hpp" #include @@ -21,8 +9,6 @@ #include "ngraph/runtime/reference/min.hpp" #include "ngraph/shape_util.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/minimum.cpp b/ngraph/core/src/op/minimum.cpp index 1139d15dbc8113..2ad1822f533b3a 100644 --- a/ngraph/core/src/op/minimum.cpp +++ b/ngraph/core/src/op/minimum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -25,8 +13,6 @@ #include "ngraph/runtime/reference/minimum.hpp" #include "ngraph/type/element_type.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/mish.cpp b/ngraph/core/src/op/mish.cpp index 0faebffddafbb3..d4eb1aae6b2444 100644 --- a/ngraph/core/src/op/mish.cpp +++ b/ngraph/core/src/op/mish.cpp @@ -1,19 +1,8 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** +#include #include "itt.hpp" #include "ngraph/attribute_visitor.hpp" @@ -63,9 +52,10 @@ namespace mish return true; } - bool evaluate_mish(const HostTensorPtr& arg0, const HostTensorPtr& out, const size_t count) + bool evaluate_mish(const HostTensorPtr& arg0, const HostTensorPtr& out) { bool rc = true; + size_t count = shape_size(arg0->get_shape()); out->set_unary(arg0); switch (arg0->get_element_type()) @@ -81,5 +71,7 @@ namespace mish bool op::v4::Mish::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v4_Mish_evaluate); - return mish::evaluate_mish(inputs[0], outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return mish::evaluate_mish(inputs[0], outputs[0]); } diff --git a/ngraph/core/src/op/mod.cpp b/ngraph/core/src/op/mod.cpp index 682a1b934b3fc6..da329c7789ea82 100644 --- a/ngraph/core/src/op/mod.cpp +++ b/ngraph/core/src/op/mod.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "ngraph/op/mod.hpp" #include "itt.hpp" #include "ngraph/attribute_visitor.hpp" diff --git a/ngraph/core/src/op/multiply.cpp b/ngraph/core/src/op/multiply.cpp index 13dbd192dacbf9..f34acb6b6c1609 100644 --- a/ngraph/core/src/op/multiply.cpp +++ b/ngraph/core/src/op/multiply.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/multiply.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/mvn.cpp b/ngraph/core/src/op/mvn.cpp index 9d9f4598ff5309..77bd132418d589 100644 --- a/ngraph/core/src/op/mvn.cpp +++ b/ngraph/core/src/op/mvn.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include "itt.hpp" diff --git a/ngraph/core/src/op/negative.cpp b/ngraph/core/src/op/negative.cpp index 9231c16bd9f971..44aa1d344c8256 100644 --- a/ngraph/core/src/op/negative.cpp +++ b/ngraph/core/src/op/negative.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/negative.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/non_max_suppression.cpp b/ngraph/core/src/op/non_max_suppression.cpp index dfeb4c07c12ab0..06f146de819772 100644 --- a/ngraph/core/src/op/non_max_suppression.cpp +++ b/ngraph/core/src/op/non_max_suppression.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/non_max_suppression.hpp" #include diff --git a/ngraph/core/src/op/non_zero.cpp b/ngraph/core/src/op/non_zero.cpp index 1821a0b79bab0c..ab996d89aed4e0 100644 --- a/ngraph/core/src/op/non_zero.cpp +++ b/ngraph/core/src/op/non_zero.cpp @@ -1,22 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** -#include "ngraph/op/non_zero.hpp" +#include + #include #include "itt.hpp" +#include "ngraph/op/non_zero.hpp" #include "ngraph/op/op.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/non_zero.hpp" @@ -75,7 +65,13 @@ void op::v3::NonZero::validate_and_infer_types() } else { - set_output_type(0, m_output_type, PartialShape{input_shape.rank(), Dimension::dynamic()}); + const Dimension dim = input_shape.is_static() + ? std::accumulate(begin(input_shape), + end(input_shape), + Dimension(0, 1), + std::multiplies()) + : Dimension(); + set_output_type(0, m_output_type, PartialShape{input_shape.rank(), dim}); } set_input_is_relevant_to_shape(0); @@ -133,7 +129,7 @@ namespace nonzero #define TYPE_OUT_CASE(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(evaluate_nonzero_out, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(evaluate_nonzero_out, _, a)); \ rc = evaluate_nonzero_execute(__VA_ARGS__); \ } \ break @@ -151,7 +147,7 @@ namespace nonzero return rc; } - +#undef TYPE_OUT_CASE bool evaluate_nonzero(const HostTensorPtr& input, const HostTensorPtr& output) { bool rc = true; diff --git a/ngraph/core/src/op/normalize_l2.cpp b/ngraph/core/src/op/normalize_l2.cpp index ed21e2d7c3a0a4..291351c4fe5401 100644 --- a/ngraph/core/src/op/normalize_l2.cpp +++ b/ngraph/core/src/op/normalize_l2.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include diff --git a/ngraph/core/src/op/not.cpp b/ngraph/core/src/op/not.cpp index 406540723585cf..a0dbecc4b7eb3f 100644 --- a/ngraph/core/src/op/not.cpp +++ b/ngraph/core/src/op/not.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" @@ -23,8 +11,6 @@ #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/not.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace ngraph; using namespace std; diff --git a/ngraph/core/src/op/not_equal.cpp b/ngraph/core/src/op/not_equal.cpp index 21ceaa0262d7fc..e9fc67acc461cb 100644 --- a/ngraph/core/src/op/not_equal.cpp +++ b/ngraph/core/src/op/not_equal.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/not_equal.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/not_equal.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/one_hot.cpp b/ngraph/core/src/op/one_hot.cpp index eddbe8ce2965d0..4bb9a104393b7b 100644 --- a/ngraph/core/src/op/one_hot.cpp +++ b/ngraph/core/src/op/one_hot.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/one_hot.hpp" #include "itt.hpp" @@ -105,7 +93,6 @@ void op::v1::OneHot::validate_and_infer_types() " (got ", depth_val, ")."); - out_dims.insert(out_dims.begin() + m_axis, Dimension(depth_val)); result_shape = out_dims; } @@ -128,79 +115,62 @@ shared_ptr op::v1::OneHot::clone_with_new_inputs(const OutputVector& new_a new_args.at(0), new_args.at(1), new_args.at(2), new_args.at(3), m_axis); } -namespace detail +namespace one_hot { - template + template bool evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values, const int64_t axis) { + using INPUT_TYPE = typename element_type_traits::value_type; const auto& indices = input_values[0]; const auto& on_value = input_values[2]; const auto& off_value = input_values[3]; - const auto& out = output_values[0]; - - runtime::reference::one_hot(indices->get_data_ptr(), - out->get_data_ptr(), - indices->get_shape(), - out->get_shape(), - axis, - on_value->get_data_ptr()[0], - off_value->get_data_ptr()[0]); + runtime::reference::one_hot(indices->get_data_ptr(), + indices->get_shape(), + out->get_data_ptr(), + out->get_element_type().size(), + out->get_shape()[axis], + axis, + on_value->get_data_ptr(), + off_value->get_data_ptr()); return true; } - -#define TYPE_OUT_CASE(a, ...) \ - case element::Type_t::a: \ - { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(evaluate_one_hot_out, _, a)); \ - using IT = typename element_type_traits::value_type; \ - using OT = typename element_type_traits::value_type; \ - rc = evaluate(__VA_ARGS__); \ - } \ - break - - template - bool evaluate(const HostTensorVector& output_values, - const HostTensorVector& input_values, - const int64_t axis) - { - const auto& indices = input_values[0]; - - bool rc = true; - switch (indices->get_element_type()) - { - TYPE_OUT_CASE(i32, output_values, input_values, axis); - TYPE_OUT_CASE(i64, output_values, input_values, axis); - default: rc = false; break; - } - - return rc; - } - bool evaluate_onehot(const HostTensorVector& output_values, const HostTensorVector& input_values, const int64_t axis) { - const auto& on_value = input_values[2]; - - bool rc = false; - switch (on_value->get_element_type()) + bool rc = true; + const auto& indices = input_values[0]; + switch (indices->get_element_type()) { - NGRAPH_TYPE_CASE(evaluate_onehot, boolean, output_values, input_values, axis); - NGRAPH_TYPE_CASE(evaluate_onehot, f32, output_values, input_values, axis); NGRAPH_TYPE_CASE(evaluate_onehot, i32, output_values, input_values, axis); NGRAPH_TYPE_CASE(evaluate_onehot, i64, output_values, input_values, axis); default: rc = false; } return rc; } -} // namespace detail +} // namespace one_hot bool op::v1::OneHot::evaluate(const HostTensorVector& output_values, const HostTensorVector& input_values) const { NGRAPH_OP_SCOPE(v1_OneHot_evaluate); - return detail::evaluate_onehot(output_values, input_values, get_axis()); -} + NGRAPH_CHECK(validate_host_tensor_vector(input_values, 4)); + NGRAPH_CHECK(validate_host_tensor_vector(output_values, 1)); + + const auto& ind_Pshape = input_values[0]->get_partial_shape(); + const auto& out_Pshape = output_values[0]->get_partial_shape(); + NGRAPH_CHECK(ind_Pshape.is_static() && out_Pshape.is_static(), + "Only static input/output shapes are supported"); + const auto out_shape = out_Pshape.get_shape(); + const auto axis = get_axis(); + NGRAPH_CHECK(axis >= 0 && axis < out_shape.size(), "Invalid axis value."); + const auto depth = get_constant_from_source(input_value(1))->cast_vector()[0]; + const auto ind_shape = ind_Pshape.get_shape(); + NGRAPH_CHECK(shape_size(ind_shape) * depth == shape_size(out_shape), + "Incompatible I/O shapes or wrong depth value."); + NGRAPH_CHECK(out_shape[axis] == depth, "Incompatible axis and depth values."); + return one_hot::evaluate_onehot(output_values, input_values, axis); +} \ No newline at end of file diff --git a/ngraph/core/src/op/op.cpp b/ngraph/core/src/op/op.cpp index e4f80e672326e9..21d2117521da41 100644 --- a/ngraph/core/src/op/op.cpp +++ b/ngraph/core/src/op/op.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/or.cpp b/ngraph/core/src/op/or.cpp index 507e31256e5c50..7a0269561b7175 100644 --- a/ngraph/core/src/op/or.cpp +++ b/ngraph/core/src/op/or.cpp @@ -1,26 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/or.hpp" #include "itt.hpp" #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/or.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/pad.cpp b/ngraph/core/src/op/pad.cpp index c23dcdc029b451..1dee8e3355e889 100644 --- a/ngraph/core/src/op/pad.cpp +++ b/ngraph/core/src/op/pad.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/pad.hpp" #include @@ -24,8 +12,6 @@ #include "ngraph/op/util/op_types.hpp" #include "ngraph/runtime/reference/pad.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; @@ -192,7 +178,7 @@ void op::v1::Pad::validate_and_infer_types() } else { - set_output_type(0, get_input_element_type(0), PartialShape::dynamic()); + set_output_type(0, get_input_element_type(0), PartialShape::dynamic(arg_shape_rank)); } } diff --git a/ngraph/core/src/op/parameter.cpp b/ngraph/core/src/op/parameter.cpp index 98cccc0f84171f..57e51b503e42f6 100644 --- a/ngraph/core/src/op/parameter.cpp +++ b/ngraph/core/src/op/parameter.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" diff --git a/ngraph/core/src/op/power.cpp b/ngraph/core/src/op/power.cpp index f7adb90b660a3e..cc8400edebe10a 100644 --- a/ngraph/core/src/op/power.cpp +++ b/ngraph/core/src/op/power.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/power.hpp" #include "itt.hpp" @@ -22,8 +10,6 @@ #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/power.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/prelu.cpp b/ngraph/core/src/op/prelu.cpp index 6d4dd08509583f..8e4abd68c273b3 100644 --- a/ngraph/core/src/op/prelu.cpp +++ b/ngraph/core/src/op/prelu.cpp @@ -1,46 +1,25 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/prelu.hpp" #include -#include "itt.hpp" +#include -#include "ngraph/builder/autobroadcast.hpp" -#include "ngraph/op/add.hpp" -#include "ngraph/op/broadcast.hpp" -#include "ngraph/op/constant.hpp" -#include "ngraph/op/convert.hpp" -#include "ngraph/op/greater.hpp" -#include "ngraph/op/less.hpp" -#include "ngraph/op/multiply.hpp" +#include "itt.hpp" using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - NGRAPH_RTTI_DEFINITION(op::PRelu, "PRelu", 0); op::PRelu::PRelu() - : FusedOp() + : Op() { } op::PRelu::PRelu(const Output& data, const Output& slope) - : FusedOp({data, slope}) + : Op({data, slope}) { constructor_validate_and_infer_types(); } @@ -51,47 +30,11 @@ bool ngraph::op::v0::PRelu::visit_attributes(AttributeVisitor& visitor) return true; } -void ngraph::op::v0::PRelu::pre_validate_and_infer_types() +void ngraph::op::v0::PRelu::validate_and_infer_types() { set_output_type(0, get_input_element_type(0), get_input_partial_shape(0)); } -OutputVector op::PRelu::decompose_op() const -{ - auto data = input_value(0); - auto data_shape = data.get_shape(); - auto slope = input_value(1); - slope = std::make_shared(slope, data.get_element_type()); - auto slope_shape = slope.get_shape(); - - if ((slope_shape.size() == 1) && (slope_shape.at(0) != 1)) - { - auto it = std::find(std::begin(data_shape), std::end(data_shape), slope_shape.at(0)); - auto index = std::distance(std::begin(data_shape), it); - slope = builder::make_broadcast_node(slope, data.get_shape(), index); - } - else if (data_shape != slope_shape) - { - slope = builder::numpy_broadcast(slope, data.get_shape()); - } - - // x < 0 => f(x) = x * slope - // x >= 0 => f(x) = x - - std::shared_ptr zero_node = make_zero(data.get_element_type(), data.get_shape()); - - std::shared_ptr negative_map = std::make_shared( - std::make_shared(data, zero_node), data.get_element_type()); - - std::shared_ptr positive_map = std::make_shared( - std::make_shared(data, zero_node), data.get_element_type()); - - slope = std::make_shared(negative_map, - std::make_shared(slope, positive_map)); - - return {std::make_shared(data, slope)}; -} - shared_ptr op::PRelu::clone_with_new_inputs(const OutputVector& new_args) const { NGRAPH_OP_SCOPE(v0_PRelu_clone_with_new_inputs); @@ -135,5 +78,7 @@ namespace prelu bool op::PRelu::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v0_PRelu_evaluate); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 2)); return prelu::evaluate_prelu(inputs[0], inputs[1], outputs[0]); } diff --git a/ngraph/core/src/op/prior_box.cpp b/ngraph/core/src/op/prior_box.cpp index 7738b65dd84120..13596fdfb44cd4 100644 --- a/ngraph/core/src/op/prior_box.cpp +++ b/ngraph/core/src/op/prior_box.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" diff --git a/ngraph/core/src/op/prior_box_clustered.cpp b/ngraph/core/src/op/prior_box_clustered.cpp index 5352f8005ce492..3be58c0f998efd 100644 --- a/ngraph/core/src/op/prior_box_clustered.cpp +++ b/ngraph/core/src/op/prior_box_clustered.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" diff --git a/ngraph/core/src/op/proposal.cpp b/ngraph/core/src/op/proposal.cpp index 132096502394b4..62c2bffeb2a286 100644 --- a/ngraph/core/src/op/proposal.cpp +++ b/ngraph/core/src/op/proposal.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/proposal.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/psroi_pooling.cpp b/ngraph/core/src/op/psroi_pooling.cpp index a8b1ce831eb9d9..aff236b9adb4dc 100644 --- a/ngraph/core/src/op/psroi_pooling.cpp +++ b/ngraph/core/src/op/psroi_pooling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/psroi_pooling.hpp" #include "itt.hpp" @@ -118,11 +106,11 @@ void op::PSROIPooling::validate_and_infer_types() 0, "Number of input's channels must be a multiply of " "spatial_bins_x * spatial_bins_y"); - NODE_VALIDATION_CHECK( - this, - m_output_dim == num_input_channels / (m_spatial_bins_x * m_spatial_bins_y), - "output_dim must be equal to input channels divided by " - "spatial_bins_x * spatial_bins_y"); + NODE_VALIDATION_CHECK(this, + m_output_dim == num_input_channels / + (m_spatial_bins_x * m_spatial_bins_y), + "output_dim must be equal to input channels divided by " + "spatial_bins_x * spatial_bins_y"); } } std::vector output_shape{coords_pshape[0], diff --git a/ngraph/core/src/op/range.cpp b/ngraph/core/src/op/range.cpp index b3045dc92bba5e..6e87dc645e3c2c 100644 --- a/ngraph/core/src/op/range.cpp +++ b/ngraph/core/src/op/range.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -476,6 +464,8 @@ void op::v0::Range::validate_and_infer_types() case element::Type_t::u64: result_shape = infer_output_shape(this, result_et); break; case element::Type_t::dynamic: result_shape = PartialShape::dynamic(1); break; case element::Type_t::u1: + case element::Type_t::i4: + case element::Type_t::u4: case element::Type_t::undefined: case element::Type_t::boolean: NODE_VALIDATION_CHECK( diff --git a/ngraph/core/src/op/read_value.cpp b/ngraph/core/src/op/read_value.cpp index e5037bc085f71a..4136d390b67c5e 100644 --- a/ngraph/core/src/op/read_value.cpp +++ b/ngraph/core/src/op/read_value.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/read_value.hpp" #include "itt.hpp" @@ -97,4 +85,12 @@ bool op::v6::ReadValue::visit_attributes(AttributeVisitor& visitor) NGRAPH_OP_SCOPE(v6_ReadValue_visit_attributes); visitor.on_attribute("variable_id", m_variable); return true; +} + +void op::v6::ReadValue::revalidate_and_infer_types() +{ + VariableInfo var_info{ + PartialShape::dynamic(), element::dynamic, m_variable->get_info().variable_id}; + m_variable->update(var_info); + Node::revalidate_and_infer_types(); } \ No newline at end of file diff --git a/ngraph/core/src/op/reduce_l1.cpp b/ngraph/core/src/op/reduce_l1.cpp index 1295183b753ecc..39f3b0f48af867 100644 --- a/ngraph/core/src/op/reduce_l1.cpp +++ b/ngraph/core/src/op/reduce_l1.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reduce_l1.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/reduce_l2.cpp b/ngraph/core/src/op/reduce_l2.cpp index b3de7e173872ec..567581f43168b0 100644 --- a/ngraph/core/src/op/reduce_l2.cpp +++ b/ngraph/core/src/op/reduce_l2.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reduce_l2.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/reduce_logical_and.cpp b/ngraph/core/src/op/reduce_logical_and.cpp index 64419ba3da36b6..90814b94603040 100644 --- a/ngraph/core/src/op/reduce_logical_and.cpp +++ b/ngraph/core/src/op/reduce_logical_and.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reduce_logical_and.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/reduce_logical_or.cpp b/ngraph/core/src/op/reduce_logical_or.cpp index 6297b0da401d2e..4008863580f220 100644 --- a/ngraph/core/src/op/reduce_logical_or.cpp +++ b/ngraph/core/src/op/reduce_logical_or.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reduce_logical_or.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/reduce_mean.cpp b/ngraph/core/src/op/reduce_mean.cpp index c44c53c2c51ae0..9036766527e0d8 100644 --- a/ngraph/core/src/op/reduce_mean.cpp +++ b/ngraph/core/src/op/reduce_mean.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reduce_mean.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/reduce_prod.cpp b/ngraph/core/src/op/reduce_prod.cpp index a87ecb7556f69e..7696d9a7299201 100644 --- a/ngraph/core/src/op/reduce_prod.cpp +++ b/ngraph/core/src/op/reduce_prod.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reduce_prod.hpp" #include diff --git a/ngraph/core/src/op/reduce_sum.cpp b/ngraph/core/src/op/reduce_sum.cpp index 9ddb41c20acb00..cbb64dde3b2e64 100644 --- a/ngraph/core/src/op/reduce_sum.cpp +++ b/ngraph/core/src/op/reduce_sum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reduce_sum.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/region_yolo.cpp b/ngraph/core/src/op/region_yolo.cpp index 5ed3d7dfa8c58a..315aa461de0637 100644 --- a/ngraph/core/src/op/region_yolo.cpp +++ b/ngraph/core/src/op/region_yolo.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/region_yolo.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/relu.cpp b/ngraph/core/src/op/relu.cpp index 8a97d0426e7945..29eef5bec67b3f 100644 --- a/ngraph/core/src/op/relu.cpp +++ b/ngraph/core/src/op/relu.cpp @@ -1,19 +1,8 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** +#include #include "itt.hpp" #include "ngraph/op/multiply.hpp" @@ -25,7 +14,7 @@ using namespace std; using namespace ngraph; -NGRAPH_RTTI_DEFINITION(op::Relu, "Relu", 0); +NGRAPH_RTTI_DEFINITION(op::Relu, "Relu", 0, util::UnaryElementwiseArithmetic); op::Relu::Relu(const Output& arg) : UnaryElementwiseArithmetic(arg) @@ -50,9 +39,10 @@ namespace relu return true; } - bool evaluate_relu(const HostTensorPtr& arg0, const HostTensorPtr& out, const size_t count) + bool evaluate_relu(const HostTensorPtr& arg0, const HostTensorPtr& out) { bool rc = true; + size_t count = shape_size(arg0->get_shape()); out->set_unary(arg0); switch (arg0->get_element_type()) @@ -73,7 +63,9 @@ namespace relu bool op::Relu::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v0_Relu_evaluate); - return relu::evaluate_relu(inputs[0], outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return relu::evaluate_relu(inputs[0], outputs[0]); } bool op::Relu::visit_attributes(AttributeVisitor& visitor) diff --git a/ngraph/core/src/op/reorg_yolo.cpp b/ngraph/core/src/op/reorg_yolo.cpp index ec10550dad5ed8..67cbac78d8ca0d 100644 --- a/ngraph/core/src/op/reorg_yolo.cpp +++ b/ngraph/core/src/op/reorg_yolo.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/reorg_yolo.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/reshape.cpp b/ngraph/core/src/op/reshape.cpp index b493151cad37e8..af62a16fb6af22 100644 --- a/ngraph/core/src/op/reshape.cpp +++ b/ngraph/core/src/op/reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -282,7 +270,7 @@ shared_ptr op::v1::Reshape::clone_with_new_inputs(const OutputVector& new_ #define COMPUTE_OUT_SHAPE_CASE(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(compute_reshape_out_shape, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(compute_reshape_out_shape, _, a)); \ reshapeop::compute_output_shape(__VA_ARGS__); \ } \ break; diff --git a/ngraph/core/src/op/result.cpp b/ngraph/core/src/op/result.cpp index 996978c1cb9c0a..5ea56fdd0215f5 100644 --- a/ngraph/core/src/op/result.cpp +++ b/ngraph/core/src/op/result.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/reverse.cpp b/ngraph/core/src/op/reverse.cpp index 505d88919b833c..c27d1f3cf527e3 100644 --- a/ngraph/core/src/op/reverse.cpp +++ b/ngraph/core/src/op/reverse.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -164,7 +152,7 @@ namespace reverseop #define GET_AXES(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(get_reverse_axes, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(get_reverse_axes, _, a)); \ reverseop::get_axes(__VA_ARGS__); \ } \ break; diff --git a/ngraph/core/src/op/reverse_sequence.cpp b/ngraph/core/src/op/reverse_sequence.cpp index 8d08d02d464e95..bac3ac3b4bdbd6 100644 --- a/ngraph/core/src/op/reverse_sequence.cpp +++ b/ngraph/core/src/op/reverse_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/rnn_cell.cpp b/ngraph/core/src/op/rnn_cell.cpp index 6bf4ca8972f749..4b98f22f217661 100644 --- a/ngraph/core/src/op/rnn_cell.cpp +++ b/ngraph/core/src/op/rnn_cell.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/rnn_cell.hpp" #include diff --git a/ngraph/core/src/op/rnn_sequence.cpp b/ngraph/core/src/op/rnn_sequence.cpp index ee08495f582c6a..8847f7b978b651 100644 --- a/ngraph/core/src/op/rnn_sequence.cpp +++ b/ngraph/core/src/op/rnn_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/rnn_sequence.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/roi_align.cpp b/ngraph/core/src/op/roi_align.cpp index 0727ea030b43a7..db7b257f67a88d 100644 --- a/ngraph/core/src/op/roi_align.cpp +++ b/ngraph/core/src/op/roi_align.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/roi_align.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/roi_pooling.cpp b/ngraph/core/src/op/roi_pooling.cpp index 5eb2bf7498c7d2..2aac3d9f786ffb 100644 --- a/ngraph/core/src/op/roi_pooling.cpp +++ b/ngraph/core/src/op/roi_pooling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/roi_pooling.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/roll.cpp b/ngraph/core/src/op/roll.cpp new file mode 100644 index 00000000000000..c367030322d323 --- /dev/null +++ b/ngraph/core/src/op/roll.cpp @@ -0,0 +1,106 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "itt.hpp" +#include "ngraph/op/roll.hpp" + +using namespace std; +using namespace ngraph; + +NGRAPH_RTTI_DEFINITION(op::v7::Roll, "Roll", 7); + +op::v7::Roll::Roll(const Output& data, const Output& shift, const Output& axes) + : Op({data, shift, axes}) +{ + constructor_validate_and_infer_types(); +} + +void op::v7::Roll::validate_and_infer_types() +{ + NGRAPH_OP_SCOPE(v7_Roll_validate_and_infer_types); + + const auto& shift_et = get_input_element_type(1); + NODE_VALIDATION_CHECK(this, + shift_et.is_dynamic() || shift_et == element::i32 || + shift_et == element::i64, + "Shift must have int32 or int64 element type."); + + const auto& axes_et = get_input_element_type(2); + NODE_VALIDATION_CHECK(this, + axes_et.is_dynamic() || axes_et == element::i32 || + axes_et == element::i64, + "Axes must have int32 or int64 element type."); + + const auto& data_pshape = get_input_partial_shape(0); + const auto& shift_pshape = get_input_partial_shape(1); + const auto& axes_pshape = get_input_partial_shape(2); + + if (shift_pshape.is_static()) + { + const auto& shift_rank = shift_pshape.rank().get_length(); + NODE_VALIDATION_CHECK(this, shift_rank <= 1, "Shift must be a scalar or 1D tensor."); + } + + if (axes_pshape.is_static()) + { + const auto& axes_rank = axes_pshape.rank().get_length(); + NODE_VALIDATION_CHECK(this, axes_rank <= 1, "Axes must be a scalar or 1D tensor."); + } + + // If shift is a scalar, than axes can be arbitrary 1d tensor and we don't need + // to check shift shape consistency with axes, otherwise the check is needed. + if (!(shift_pshape.is_static() && is_scalar(shift_pshape.to_shape()))) + { + NODE_VALIDATION_CHECK( + this, + shift_pshape.compatible(axes_pshape), + "If shift is a 1D vector, axes must be a 1D tensor of the same size."); + } + + if (const auto& const_axes = get_constant_from_source(input_value(2))) + { + auto axes = const_axes->cast_vector(); + + if (data_pshape.is_static()) + { + const auto& data_rank = data_pshape.rank().get_length(); + for (int64_t& axis : axes) + { + NODE_VALIDATION_CHECK(this, + axis < data_rank, + "Axes must be less than data tensor rank. Got " + "data tensor rank: ", + data_rank, + ", axis: ", + axis); + if (axis < 0) + { + axis += data_rank; + } + NODE_VALIDATION_CHECK(this, + axis >= 0, + "Axes must be positive or equal to zero. Got " + "axis: ", + axis); + } + } + } + + set_output_type(0, get_input_element_type(0), get_input_partial_shape(0)); +} + +bool op::v7::Roll::visit_attributes(AttributeVisitor& visitor) +{ + NGRAPH_OP_SCOPE(v7_Roll_visit_attributes); + return true; +} + +shared_ptr op::v7::Roll::clone_with_new_inputs(const OutputVector& new_args) const +{ + NGRAPH_OP_SCOPE(v7_Roll_clone_with_new_inputs); + check_new_args_count(this, new_args); + return make_shared(new_args[0], new_args[1], new_args[2]); +} diff --git a/ngraph/core/src/op/round.cpp b/ngraph/core/src/op/round.cpp index 54d30c41d377f5..70949858e29f49 100644 --- a/ngraph/core/src/op/round.cpp +++ b/ngraph/core/src/op/round.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/round.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/scatter_elements_update.cpp b/ngraph/core/src/op/scatter_elements_update.cpp index 32249121f262ba..dc2bfd0c11cd3a 100644 --- a/ngraph/core/src/op/scatter_elements_update.cpp +++ b/ngraph/core/src/op/scatter_elements_update.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/scatter_elements_update.hpp" #include "itt.hpp" @@ -167,7 +155,7 @@ namespace scatter_element_update #define TYPE_AXS_CASE(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(scatter_element_update_axs, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(scatter_element_update_axs, _, a)); \ rc = evaluate(__VA_ARGS__); \ } \ break; @@ -203,7 +191,7 @@ namespace scatter_element_update #define TYPE_IND_CASE(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(scatter_element_update_ind, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(scatter_element_update_ind, _, a)); \ rc = evaluate(__VA_ARGS__); \ } \ break; diff --git a/ngraph/core/src/op/scatter_nd_update.cpp b/ngraph/core/src/op/scatter_nd_update.cpp index 0a12c5d9035d9c..2c4716c9c016a8 100644 --- a/ngraph/core/src/op/scatter_nd_update.cpp +++ b/ngraph/core/src/op/scatter_nd_update.cpp @@ -1,21 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/scatter_nd_update.hpp" #include "itt.hpp" +#include "ngraph/runtime/host_tensor.hpp" +#include "ngraph/runtime/reference/scatter_nd_update.hpp" +#include "ngraph/validation_util.hpp" using namespace std; using namespace ngraph; @@ -30,3 +21,79 @@ shared_ptr op::v3::ScatterNDUpdate::clone_with_new_inputs(const OutputVect new_args.at(op::util::ScatterNDBase::INDICES), new_args.at(op::util::ScatterNDBase::UPDATES)); } + +namespace scatter +{ + template + bool evaluate(const HostTensorPtr& arg0, + const HostTensorPtr& arg1, + const HostTensorPtr& arg2, + const HostTensorPtr& out) + { + using T = typename element_type_traits::value_type; + Shape params_shape = arg0->get_shape(); + Shape indices_shape = arg1->get_shape(); + Shape updates_shape = arg1->get_shape(); + Shape out_shape(params_shape); + out->set_shape(out_shape); + + if (arg1->get_element_type() == element::i64) + { + runtime::reference::scatterNdUpdate(arg0->get_data_ptr(), + arg1->get_data_ptr(), + arg2->get_data_ptr(), + out->get_data_ptr(), + arg0->get_shape(), + arg1->get_shape(), + arg2->get_shape()); + } + else if (arg1->get_element_type() == element::i32) + { + runtime::reference::scatterNdUpdate(arg0->get_data_ptr(), + arg1->get_data_ptr(), + arg2->get_data_ptr(), + out->get_data_ptr(), + arg0->get_shape(), + arg1->get_shape(), + arg2->get_shape()); + } + else + { + throw ngraph_error("Unexpected type"); + } + + return true; + } + + bool evaluate_scatter(const HostTensorPtr& arg0, + const HostTensorPtr& arg1, + const HostTensorPtr& arg2, + const HostTensorPtr& out) + { + bool rc = true; + + switch (out->get_element_type()) + { + NGRAPH_TYPE_CASE(evaluate_scatter, i32, arg0, arg1, arg2, out); + NGRAPH_TYPE_CASE(evaluate_scatter, i64, arg0, arg1, arg2, out); + NGRAPH_TYPE_CASE(evaluate_scatter, u32, arg0, arg1, arg2, out); + NGRAPH_TYPE_CASE(evaluate_scatter, u64, arg0, arg1, arg2, out); + NGRAPH_TYPE_CASE(evaluate_scatter, f16, arg0, arg1, arg2, out); + NGRAPH_TYPE_CASE(evaluate_scatter, f32, arg0, arg1, arg2, out); + NGRAPH_TYPE_CASE(evaluate_scatter, boolean, arg0, arg1, arg2, out); + default: rc = false; break; + } + return rc; + } +} + +bool op::v3::ScatterNDUpdate::evaluate(const HostTensorVector& outputs, + const HostTensorVector& inputs) const +{ + NGRAPH_OP_SCOPE(v3_ScatterNDUpdate_evaluate); + NGRAPH_CHECK(this, !inputs.empty()); + NGRAPH_CHECK(this, validate_host_tensor_vector(inputs, 3)); + NGRAPH_CHECK(this, validate_host_tensor_vector(outputs, 1)); + + return scatter::evaluate_scatter(inputs[0], inputs[1], inputs[2], outputs[0]); +} diff --git a/ngraph/core/src/op/scatter_update.cpp b/ngraph/core/src/op/scatter_update.cpp index 08a2dd4b4127ec..347ca43587f3d9 100644 --- a/ngraph/core/src/op/scatter_update.cpp +++ b/ngraph/core/src/op/scatter_update.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/scatter_update.hpp" #include "itt.hpp" @@ -56,7 +44,7 @@ namespace scatter_update #define GET_INDICES(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(get_scatter_update_indices, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(get_scatter_update_indices, _, a)); \ indices_casted_vector = scatter_update::get_indices(__VA_ARGS__); \ } \ break; diff --git a/ngraph/core/src/op/select.cpp b/ngraph/core/src/op/select.cpp index 27f3fa9c87f9e1..ba31f8fb866fc3 100644 --- a/ngraph/core/src/op/select.cpp +++ b/ngraph/core/src/op/select.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -24,8 +12,6 @@ #include "ngraph/op/select.hpp" #include "ngraph/runtime/reference/select.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/core/src/op/selu.cpp b/ngraph/core/src/op/selu.cpp index 14e359b81462df..680b67fc012462 100644 --- a/ngraph/core/src/op/selu.cpp +++ b/ngraph/core/src/op/selu.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "ngraph/op/selu.hpp" #include "itt.hpp" @@ -42,6 +31,11 @@ op::v0::Selu::Selu(const Output& data, const Output& alpha, const Ou constructor_validate_and_infer_types(); } +void ngraph::op::v0::Selu::pre_validate_and_infer_types() +{ + set_output_type(0, get_input_element_type(0), get_input_partial_shape(0)); +} + bool ngraph::op::v0::Selu::visit_attributes(AttributeVisitor& visitor) { NGRAPH_OP_SCOPE(v0_Selu_visit_attributes); diff --git a/ngraph/core/src/op/shape_of.cpp b/ngraph/core/src/op/shape_of.cpp index 81b5e109efb350..67ff07c157ee9d 100644 --- a/ngraph/core/src/op/shape_of.cpp +++ b/ngraph/core/src/op/shape_of.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/shuffle_channels.cpp b/ngraph/core/src/op/shuffle_channels.cpp index 77e4ef2e957779..205addd4ffeae5 100644 --- a/ngraph/core/src/op/shuffle_channels.cpp +++ b/ngraph/core/src/op/shuffle_channels.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include "itt.hpp" @@ -27,8 +16,6 @@ using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - constexpr NodeTypeInfo op::ShuffleChannels::type_info; op::ShuffleChannels::ShuffleChannels(const Output& data, diff --git a/ngraph/core/src/op/sigmoid.cpp b/ngraph/core/src/op/sigmoid.cpp index 6c1ac030b8bd8d..f365c118002d5e 100644 --- a/ngraph/core/src/op/sigmoid.cpp +++ b/ngraph/core/src/op/sigmoid.cpp @@ -1,20 +1,9 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/sigmoid.hpp" +#include #include "itt.hpp" #include "ngraph/log.hpp" @@ -51,9 +40,10 @@ namespace sigmoid return true; } - bool evaluate_sigmoid(const HostTensorPtr& arg0, const HostTensorPtr& out, const size_t count) + bool evaluate_sigmoid(const HostTensorPtr& arg0, const HostTensorPtr& out) { bool rc = true; + size_t count = shape_size(arg0->get_shape()); out->set_unary(arg0); switch (arg0->get_element_type()) @@ -74,5 +64,7 @@ namespace sigmoid bool op::Sigmoid::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v0_Sigmoid_evaluate); - return sigmoid::evaluate_sigmoid(inputs[0], outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return sigmoid::evaluate_sigmoid(inputs[0], outputs[0]); } diff --git a/ngraph/core/src/op/sign.cpp b/ngraph/core/src/op/sign.cpp index 94198e2252504d..836d4db915c2fe 100644 --- a/ngraph/core/src/op/sign.cpp +++ b/ngraph/core/src/op/sign.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/sin.cpp b/ngraph/core/src/op/sin.cpp index a5acb38e91f543..0308f20b1cdcc3 100644 --- a/ngraph/core/src/op/sin.cpp +++ b/ngraph/core/src/op/sin.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/sinh.cpp b/ngraph/core/src/op/sinh.cpp index 58ae26cb431130..352f88723b5f96 100644 --- a/ngraph/core/src/op/sinh.cpp +++ b/ngraph/core/src/op/sinh.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/sink.cpp b/ngraph/core/src/op/sink.cpp index 0dd3aa36932461..a1ed861d5f6226 100644 --- a/ngraph/core/src/op/sink.cpp +++ b/ngraph/core/src/op/sink.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/sink.hpp" @@ -20,6 +8,4 @@ using namespace ngraph; NGRAPH_RTTI_DEFINITION(op::Sink, "Sink", 0); -op::Sink::~Sink() -{ -} +op::Sink::~Sink() {} diff --git a/ngraph/core/src/op/softmax.cpp b/ngraph/core/src/op/softmax.cpp index 83b256d7b3ab52..272fb33f63ccb4 100644 --- a/ngraph/core/src/op/softmax.cpp +++ b/ngraph/core/src/op/softmax.cpp @@ -1,22 +1,11 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/softmax.hpp" #include +#include #include "itt.hpp" #include "ngraph/attribute_visitor.hpp" @@ -105,6 +94,8 @@ bool op::v1::Softmax::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v1_Softmax_evaluate); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); outputs[0]->set_unary(inputs[0]); return evaluate_softmax(inputs[0], outputs[0], AxisSet{m_axis}); } diff --git a/ngraph/core/src/op/softplus.cpp b/ngraph/core/src/op/softplus.cpp index b3ee338d26caae..4d56ed71ab943c 100644 --- a/ngraph/core/src/op/softplus.cpp +++ b/ngraph/core/src/op/softplus.cpp @@ -1,20 +1,9 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/softplus.hpp" +#include #include "itt.hpp" #include "ngraph/attribute_visitor.hpp" #include "ngraph/runtime/host_tensor.hpp" @@ -61,10 +50,11 @@ namespace softplus return true; } - bool evaluate_softplus(const HostTensorPtr& arg, const HostTensorPtr& out, const size_t count) + bool evaluate_softplus(const HostTensorPtr& arg, const HostTensorPtr& out) { bool rc = true; out->set_unary(arg); + size_t count = shape_size(arg->get_shape()); switch (arg->get_element_type()) { @@ -81,5 +71,7 @@ bool op::v4::SoftPlus::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v4_SoftPlus_evaluate); - return softplus::evaluate_softplus(inputs[0], outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK(this, + validate_host_tensor_vector(outputs, 1) && validate_host_tensor_vector(inputs, 1)); + return softplus::evaluate_softplus(inputs[0], outputs[0]); } diff --git a/ngraph/core/src/op/space_to_batch.cpp b/ngraph/core/src/op/space_to_batch.cpp index 526e1bc5d5a3f9..3b918feaeda0d9 100644 --- a/ngraph/core/src/op/space_to_batch.cpp +++ b/ngraph/core/src/op/space_to_batch.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include @@ -124,7 +113,7 @@ void op::v1::SpaceToBatch::validate_and_infer_types() } else { - set_output_type(0, data_type, PartialShape::dynamic()); + set_output_type(0, data_type, PartialShape::dynamic(data_pshape.rank())); } } diff --git a/ngraph/core/src/op/space_to_depth.cpp b/ngraph/core/src/op/space_to_depth.cpp index 7df396a6b28986..9b8a5786765d5c 100644 --- a/ngraph/core/src/op/space_to_depth.cpp +++ b/ngraph/core/src/op/space_to_depth.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include @@ -29,8 +18,6 @@ using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - constexpr NodeTypeInfo op::SpaceToDepth::type_info; op::SpaceToDepth::SpaceToDepth(const Output& data, @@ -109,7 +96,7 @@ void ngraph::op::v0::SpaceToDepth::validate_and_infer_types() } else { - set_output_type(0, data_type, PartialShape::dynamic()); + set_output_type(0, data_type, PartialShape::dynamic(data_pshape.rank())); } } @@ -192,7 +179,9 @@ bool ngraph::op::v0::SpaceToDepth::evaluate_space_to_depth(const HostTensorVecto // / // block_size]) case SpaceToDepthMode::BLOCKS_FIRST: - default: { axes_order.insert(axes_order.begin() + spatial_dims + 1, 1); + default: + { + axes_order.insert(axes_order.begin() + spatial_dims + 1, 1); } } std::vector transposed_data(shape_size(data_shape) * elem_size); diff --git a/ngraph/core/src/op/split.cpp b/ngraph/core/src/op/split.cpp index d7e8c02d381a22..9202074cd7ea34 100644 --- a/ngraph/core/src/op/split.cpp +++ b/ngraph/core/src/op/split.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "ngraph/runtime/reference/split.hpp" #include #include "itt.hpp" diff --git a/ngraph/core/src/op/sqrt.cpp b/ngraph/core/src/op/sqrt.cpp index d49982768d4662..35ac4d9b74b928 100644 --- a/ngraph/core/src/op/sqrt.cpp +++ b/ngraph/core/src/op/sqrt.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/squared_difference.cpp b/ngraph/core/src/op/squared_difference.cpp index b40d08da4e2944..e2a1379a3057f4 100644 --- a/ngraph/core/src/op/squared_difference.cpp +++ b/ngraph/core/src/op/squared_difference.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/squared_difference.hpp" #include "itt.hpp" @@ -31,7 +19,7 @@ constexpr NodeTypeInfo op::SquaredDifference::type_info; op::SquaredDifference::SquaredDifference() : FusedOp() - , m_autobroadcast() + , m_autobroadcast(AutoBroadcastType::NUMPY) { } diff --git a/ngraph/core/src/op/squeeze.cpp b/ngraph/core/src/op/squeeze.cpp index 42f0bcf1c60443..f21a048b49f9ce 100644 --- a/ngraph/core/src/op/squeeze.cpp +++ b/ngraph/core/src/op/squeeze.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include @@ -53,10 +42,11 @@ void op::Squeeze::pre_validate_and_infer_types() bool data_has_dynamic_shape = data.get_partial_shape().is_dynamic(); auto axes_constant = get_constant_from_source(axes_node); - bool axes_is_empty_constant = - (axes_constant) ? axes_constant->cast_vector().empty() : false; + bool axes_is_empty_constant = (axes_constant && axes_constant->get_data_ptr() != nullptr) + ? axes_constant->cast_vector().empty() + : false; - if (data_has_dynamic_rank || !axes_constant || + if (data_has_dynamic_rank || !axes_constant || !axes_constant->get_data_ptr() || (data_has_dynamic_shape && axes_is_empty_constant)) { set_output_type(0, get_input_element_type(0), PartialShape::dynamic()); @@ -71,7 +61,7 @@ void op::Squeeze::pre_validate_and_infer_types() normalize_axes(this->description(), axes_constant->cast_vector(), data_rank); // Prepare set of unique axes marked to be removed from input data. - vector axes_to_squeeze(data_rank); + vector axes_to_squeeze(data_rank); if (axes_is_empty_constant) { auto data_shape = data.get_shape(); @@ -80,11 +70,11 @@ void op::Squeeze::pre_validate_and_infer_types() { if (data_shape.at(idx) == 1) { - axes_to_squeeze.at(idx) = 1; + axes_to_squeeze.at(idx) = true; } else { - axes_to_squeeze.at(idx) = 0; + axes_to_squeeze.at(idx) = false; } } } @@ -101,14 +91,14 @@ void op::Squeeze::pre_validate_and_infer_types() (data_shape.at(axis) == 1), "provided axis value is invalid. Only axes of size 1 may be removed."); } - axes_to_squeeze.at(axis) = 1; + axes_to_squeeze.at(axis) = true; } } vector output_data_shape; for (uint64_t idx = 0; idx < data_rank; ++idx) { - if (axes_to_squeeze.at(idx) == 0) + if (!axes_to_squeeze.at(idx)) { output_data_shape.push_back(data_partial_shape[idx]); } @@ -262,3 +252,8 @@ bool op::v0::Squeeze::constant_fold(OutputVector& output_values, const OutputVec } return false; } + +bool op::v0::Squeeze::is_dynamic() const +{ + return get_output_partial_shape(0).is_dynamic(); +} diff --git a/ngraph/core/src/op/strided_slice.cpp b/ngraph/core/src/op/strided_slice.cpp index 038688c632c4e5..e4dab49dd0441b 100644 --- a/ngraph/core/src/op/strided_slice.cpp +++ b/ngraph/core/src/op/strided_slice.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/strided_slice.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/subtract.cpp b/ngraph/core/src/op/subtract.cpp index 803e75d3b0ca4d..d513bc67fac4f3 100644 --- a/ngraph/core/src/op/subtract.cpp +++ b/ngraph/core/src/op/subtract.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/subtract.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/swish.cpp b/ngraph/core/src/op/swish.cpp index 401c9578c9085c..fa963888b2b155 100644 --- a/ngraph/core/src/op/swish.cpp +++ b/ngraph/core/src/op/swish.cpp @@ -1,20 +1,9 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/swish.hpp" +#include #include "itt.hpp" #include "ngraph/attribute_visitor.hpp" #include "ngraph/op/constant.hpp" @@ -111,10 +100,11 @@ namespace swish return true; } - bool - evaluate_swish(const HostTensorVector& inputs, const HostTensorPtr& out, const size_t count) + bool evaluate_swish(const HostTensorVector& inputs, const HostTensorPtr& out) { bool rc = true; + size_t count = shape_size(inputs[0]->get_shape()); + const HostTensorPtr arg0 = inputs[0]; const HostTensorPtr arg1 = inputs.size() == 2 ? inputs[1] : nullptr; out->set_unary(arg0); @@ -132,5 +122,9 @@ namespace swish bool op::v4::Swish::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { NGRAPH_OP_SCOPE(v4_Swish_evaluate); - return swish::evaluate_swish(inputs, outputs[0], shape_size(get_output_shape(0))); + NGRAPH_CHECK( + this, + validate_host_tensor_vector(outputs, 1) && + (validate_host_tensor_vector(inputs, 2) || validate_host_tensor_vector(inputs, 1))); + return swish::evaluate_swish(inputs, outputs[0]); } diff --git a/ngraph/core/src/op/tan.cpp b/ngraph/core/src/op/tan.cpp index 1662059fbca61d..fc5cc702d028c8 100644 --- a/ngraph/core/src/op/tan.cpp +++ b/ngraph/core/src/op/tan.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/tanh.cpp b/ngraph/core/src/op/tanh.cpp index 1f2f96a32dbbfe..acca15dd2f677f 100644 --- a/ngraph/core/src/op/tanh.cpp +++ b/ngraph/core/src/op/tanh.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "itt.hpp" diff --git a/ngraph/core/src/op/tensor_iterator.cpp b/ngraph/core/src/op/tensor_iterator.cpp index 80304406eed716..5252d2124f24c3 100644 --- a/ngraph/core/src/op/tensor_iterator.cpp +++ b/ngraph/core/src/op/tensor_iterator.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/tensor_iterator.hpp" #include "itt.hpp" @@ -37,14 +25,6 @@ bool op::v0::TensorIterator::visit_attributes(AttributeVisitor& visitor) visitor.on_attribute("input_descriptions", m_input_descriptions); visitor.on_attribute("output_descriptions", m_output_descriptions); - for (const auto& output_description : m_output_descriptions) - { - if (auto concat = as_type_ptr(output_description)) - { - m_num_iterations = ((std::abs(concat->m_end - concat->m_start)) / concat->m_part_size); - } - } - return true; } @@ -110,12 +90,9 @@ void op::v0::TensorIterator::validate_and_infer_types() }; // Input - uint64_t index_it = 0; for (const auto& input_description : m_input_descriptions) { auto index = input_description->m_input_index; - NODE_VALIDATION_CHECK(this, index == index_it, "Input_index not in order"); - index_it++; if (auto slice_input_description = as_type_ptr(input_description)) { @@ -168,9 +145,6 @@ void op::v0::TensorIterator::validate_and_infer_types() auto body_param_partial_shape = body_parameter->get_partial_shape(); auto input_partial_shape = inputs().at(index).get_source_output().get_partial_shape(); - NODE_VALIDATION_CHECK(this, - input_partial_shape.compatible(body_param_partial_shape), - "Iterator initial value is not compatible with body param"); body_parameter->set_partial_shape(input_partial_shape); } } @@ -179,12 +153,11 @@ void op::v0::TensorIterator::validate_and_infer_types() revalidate_and_infer_types_for_body_ops(); // Output - index_it = 0; + try_to_set_num_iterations_if_no_slice_inputs(); + for (const auto& output_description : m_output_descriptions) { auto index = output_description->m_output_index; - NODE_VALIDATION_CHECK(this, index == index_it, "Output_index not in order"); - index_it++; auto body_value = m_body->get_results().at(output_description->m_body_value_index)->input_value(0); @@ -244,6 +217,35 @@ std::shared_ptr op::v0::TensorIterator::get_function() return get_body(); } +namespace +{ + template + bool has_slice_input_desc(const Desc& desc) + { + const auto is_slice_input_desc = +[](typename Desc::const_reference d) { + return is_type(d); + }; + return std::any_of(begin(desc), end(desc), is_slice_input_desc); + } +} // namespace + +void op::v0::TensorIterator::try_to_set_num_iterations_if_no_slice_inputs() +{ + if (m_num_iterations != -1 || has_slice_input_desc(get_input_descriptions())) + { + return; + } + + for (const auto& output_description : m_output_descriptions) + { + if (auto concat = as_type_ptr(output_description)) + { + m_num_iterations = ((std::abs(concat->m_end - concat->m_start)) / concat->m_part_size); + break; + } + } +} + std::shared_ptr op::v0::TensorIterator::clone_with_new_inputs(const OutputVector& new_args) const { diff --git a/ngraph/core/src/op/tile.cpp b/ngraph/core/src/op/tile.cpp index 2b2945a7081bd5..a85be43025ac68 100644 --- a/ngraph/core/src/op/tile.cpp +++ b/ngraph/core/src/op/tile.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/tile.hpp" #include diff --git a/ngraph/core/src/op/topk.cpp b/ngraph/core/src/op/topk.cpp index f4cf1334e66c23..167c4475247aee 100644 --- a/ngraph/core/src/op/topk.cpp +++ b/ngraph/core/src/op/topk.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -67,7 +55,7 @@ namespace topk #define EXECUTE_EVALUATE_TOPK(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(exec_topk_eval, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(exec_topk_eval, _, a)); \ rc = evaluate_execute(__VA_ARGS__); \ } \ break @@ -189,7 +177,7 @@ namespace topk #define CASE_GET_K(a, ...) \ case element::Type_t::a: \ { \ - NGRAPH_OP_SCOPE(OV_CC_CAT3(topk_get_k, _, a)); \ + NGRAPH_OP_SCOPE(OV_PP_CAT3(topk_get_k, _, a)); \ k = get_k_from_hosttensor(__VA_ARGS__); \ } \ break diff --git a/ngraph/core/src/op/transpose.cpp b/ngraph/core/src/op/transpose.cpp index 4de38977219caf..74d24c58b7d7fe 100644 --- a/ngraph/core/src/op/transpose.cpp +++ b/ngraph/core/src/op/transpose.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/op/unsqueeze.cpp b/ngraph/core/src/op/unsqueeze.cpp index 9b73f3d8b8d4d1..b6f849ad2763c4 100644 --- a/ngraph/core/src/op/unsqueeze.cpp +++ b/ngraph/core/src/op/unsqueeze.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include #include @@ -56,14 +45,11 @@ void op::v0::Unsqueeze::validate_and_infer_types() // Get value of axes from Constant const auto axes_values = axes_constant->cast_vector(); const auto expanded_rank = data_rank_value + axes_values.size(); - auto axes = normalize_axes(this->description(), axes_values, expanded_rank); - NODE_VALIDATION_CHECK(this, !axes.empty(), "'axes' input is mandatory."); - NODE_VALIDATION_CHECK(this, - axes.size() == set(begin(axes), end(axes)).size(), - "'axes' input has a duplicate axis."); + NODE_VALIDATION_CHECK(this, !axes_values.empty(), "'axes' input is mandatory"); - sort(begin(axes), end(axes), less()); + auto normalized_axes = normalize_axes(this->description(), axes_values, expanded_rank); + set axes(begin(normalized_axes), end(normalized_axes)); vector output_shape{data_partial_shape}; for (auto axis : axes) diff --git a/ngraph/core/src/op/util/activation_functions.cpp b/ngraph/core/src/op/util/activation_functions.cpp index eb13fe9dd9911e..631a96bf1398ae 100644 --- a/ngraph/core/src/op/util/activation_functions.cpp +++ b/ngraph/core/src/op/util/activation_functions.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/util/arithmetic_reduction.cpp b/ngraph/core/src/op/util/arithmetic_reduction.cpp index 5793327b306e8b..565f78f970d5d4 100644 --- a/ngraph/core/src/op/util/arithmetic_reduction.cpp +++ b/ngraph/core/src/op/util/arithmetic_reduction.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/arithmetic_reduction.hpp" #include "itt.hpp" @@ -22,9 +10,7 @@ using namespace std; using namespace ngraph; -op::util::ArithmeticReduction::ArithmeticReduction() -{ -} +op::util::ArithmeticReduction::ArithmeticReduction() {} op::util::ArithmeticReduction::ArithmeticReduction(const Output& arg, const AxisSet& reduction_axes) diff --git a/ngraph/core/src/op/util/arithmetic_reductions_keep_dims.cpp b/ngraph/core/src/op/util/arithmetic_reductions_keep_dims.cpp index 4b2767fa129bce..97cdc05bd8101d 100644 --- a/ngraph/core/src/op/util/arithmetic_reductions_keep_dims.cpp +++ b/ngraph/core/src/op/util/arithmetic_reductions_keep_dims.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/arithmetic_reductions_keep_dims.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/util/attr_types.cpp b/ngraph/core/src/op/util/attr_types.cpp index 3d109afeaf909e..53b59138bcd295 100644 --- a/ngraph/core/src/op/util/attr_types.cpp +++ b/ngraph/core/src/op/util/attr_types.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include diff --git a/ngraph/core/src/op/util/binary_elementwise_arithmetic.cpp b/ngraph/core/src/op/util/binary_elementwise_arithmetic.cpp index 3308ec74d3d16d..22edda297b0c20 100644 --- a/ngraph/core/src/op/util/binary_elementwise_arithmetic.cpp +++ b/ngraph/core/src/op/util/binary_elementwise_arithmetic.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/binary_elementwise_arithmetic.hpp" #include diff --git a/ngraph/core/src/op/util/binary_elementwise_comparison.cpp b/ngraph/core/src/op/util/binary_elementwise_comparison.cpp index a4f4097a1f8dab..e8b878c3ed7d39 100644 --- a/ngraph/core/src/op/util/binary_elementwise_comparison.cpp +++ b/ngraph/core/src/op/util/binary_elementwise_comparison.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/binary_elementwise_comparison.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/util/binary_elementwise_logical.cpp b/ngraph/core/src/op/util/binary_elementwise_logical.cpp index 5ed1f5f9d546f7..b754df101f9cb5 100644 --- a/ngraph/core/src/op/util/binary_elementwise_logical.cpp +++ b/ngraph/core/src/op/util/binary_elementwise_logical.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/binary_elementwise_logical.hpp" #include "itt.hpp" @@ -24,9 +12,7 @@ using namespace ngraph; NGRAPH_RTTI_DEFINITION(op::util::BinaryElementwiseLogical, "BinaryElementwiseLogical", 0); -op::util::BinaryElementwiseLogical::BinaryElementwiseLogical() -{ -} +op::util::BinaryElementwiseLogical::BinaryElementwiseLogical() {} op::util::BinaryElementwiseLogical::BinaryElementwiseLogical(const Output& arg0, const Output& arg1, diff --git a/ngraph/core/src/op/util/broadcast_base.cpp b/ngraph/core/src/op/util/broadcast_base.cpp index 5c40743a3a22f2..d24aa008298e7f 100644 --- a/ngraph/core/src/op/util/broadcast_base.cpp +++ b/ngraph/core/src/op/util/broadcast_base.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/broadcast_base.hpp" #include "itt.hpp" @@ -140,7 +128,7 @@ void op::util::BroadcastBase::validate_target_shape_none(const PartialShape& arg if (arg_shape.rank().get_length() == 0 && axes_mapping_val.size() > 0) { NODE_VALIDATION_CHECK(this, - target_shape[axes_mapping_val[0]] == 1, + target_shape[axes_mapping_val[0]].compatible(1), "Broadcast target[axes_mapping[0]]. Expected 1. Got ", target_shape[axes_mapping_val[0]]); } @@ -159,7 +147,7 @@ void op::util::BroadcastBase::validate_target_shape_none(const PartialShape& arg if (arg_shape.rank().get_length() > 0) { NODE_VALIDATION_CHECK(this, - target_shape[axes_mapping_val[i]].same_scheme(arg_shape[i]), + target_shape[axes_mapping_val[i]].compatible(arg_shape[i]), "Broadcast target[axes_mapping[", i, "]]", diff --git a/ngraph/core/src/op/util/elementwise_args.cpp b/ngraph/core/src/op/util/elementwise_args.cpp index 545b8a64d97940..0c8425b7f9d4b5 100644 --- a/ngraph/core/src/op/util/elementwise_args.cpp +++ b/ngraph/core/src/op/util/elementwise_args.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/elementwise_args.hpp" #include "ngraph/op/util/binary_elementwise_arithmetic.hpp" diff --git a/ngraph/core/src/op/util/embeddingbag_offsets_base.cpp b/ngraph/core/src/op/util/embeddingbag_offsets_base.cpp index 868f5cf03ae689..a289a06dc892f2 100644 --- a/ngraph/core/src/op/util/embeddingbag_offsets_base.cpp +++ b/ngraph/core/src/op/util/embeddingbag_offsets_base.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/embeddingbag_offsets_base.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/util/embeddingbag_packed_base.cpp b/ngraph/core/src/op/util/embeddingbag_packed_base.cpp index ec9c49d60dd8c5..1fdcc8ea6781fb 100644 --- a/ngraph/core/src/op/util/embeddingbag_packed_base.cpp +++ b/ngraph/core/src/op/util/embeddingbag_packed_base.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/embeddingbag_packed_base.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/util/fused_op.cpp b/ngraph/core/src/op/util/fused_op.cpp index af80acdd36eac6..5c2bf4f1a128a3 100644 --- a/ngraph/core/src/op/util/fused_op.cpp +++ b/ngraph/core/src/op/util/fused_op.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/fused_op.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/util/index_reduction.cpp b/ngraph/core/src/op/util/index_reduction.cpp index d0aea8c7f2dd0a..d0115dc7eeb801 100644 --- a/ngraph/core/src/op/util/index_reduction.cpp +++ b/ngraph/core/src/op/util/index_reduction.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "itt.hpp" @@ -23,9 +11,7 @@ using namespace std; using namespace ngraph; -op::util::IndexReduction::IndexReduction() -{ -} +op::util::IndexReduction::IndexReduction() {} op::util::IndexReduction::IndexReduction(const Output& arg, uint64_t axis, diff --git a/ngraph/core/src/op/util/logical_reduction.cpp b/ngraph/core/src/op/util/logical_reduction.cpp index 53fb0d71fa389c..627692eea4b51c 100644 --- a/ngraph/core/src/op/util/logical_reduction.cpp +++ b/ngraph/core/src/op/util/logical_reduction.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/logical_reduction.hpp" #include "itt.hpp" @@ -22,9 +10,7 @@ using namespace std; using namespace ngraph; -op::util::LogicalReduction::LogicalReduction() -{ -} +op::util::LogicalReduction::LogicalReduction() {} op::util::LogicalReduction::LogicalReduction(const Output& arg, const AxisSet& reduction_axes) : Op({arg, diff --git a/ngraph/core/src/op/util/logical_reduction_keep_dims.cpp b/ngraph/core/src/op/util/logical_reduction_keep_dims.cpp index 8a80c596b61300..f19d87e187247a 100644 --- a/ngraph/core/src/op/util/logical_reduction_keep_dims.cpp +++ b/ngraph/core/src/op/util/logical_reduction_keep_dims.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/logical_reduction_keep_dims.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/util/op_types.cpp b/ngraph/core/src/op/util/op_types.cpp index 966da266f81e53..f0852233ec754f 100644 --- a/ngraph/core/src/op/util/op_types.cpp +++ b/ngraph/core/src/op/util/op_types.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "ngraph/op/util/op_types.hpp" #include "ngraph/op/add.hpp" #include "ngraph/op/and.hpp" @@ -27,6 +16,7 @@ #include "ngraph/op/parameter.hpp" #include "ngraph/op/result.hpp" #include "ngraph/op/select.hpp" +#include "ngraph/op/squared_difference.hpp" #include "ngraph/op/util/binary_elementwise_arithmetic.hpp" #include "ngraph/op/util/binary_elementwise_comparison.hpp" #include "ngraph/op/util/binary_elementwise_logical.hpp" @@ -35,8 +25,6 @@ #include "ngraph/op/xor.hpp" #include "ngraph/type.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - bool ngraph::op::is_unary_elementwise_arithmetic(const ngraph::Node* node) { return dynamic_cast(node) != nullptr; @@ -60,6 +48,7 @@ bool ngraph::op::is_binary_elementwise_logical(const ngraph::Node* node) bool ngraph::op::supports_auto_broadcast(const ngraph::Node* node) { return dynamic_cast(node) != nullptr || + dynamic_cast(node) != nullptr || dynamic_cast(node) != nullptr || dynamic_cast(node) != nullptr || dynamic_cast(node) != nullptr; diff --git a/ngraph/core/src/op/util/recurrent_sequence.cpp b/ngraph/core/src/op/util/recurrent_sequence.cpp index b4a5c7ac19aba3..7bbf6a7036ca1f 100644 --- a/ngraph/core/src/op/util/recurrent_sequence.cpp +++ b/ngraph/core/src/op/util/recurrent_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/recurrent_sequence.hpp" diff --git a/ngraph/core/src/op/util/rnn_cell_base.cpp b/ngraph/core/src/op/util/rnn_cell_base.cpp index 11a8cbf6d91fc3..923455a0f41590 100644 --- a/ngraph/core/src/op/util/rnn_cell_base.cpp +++ b/ngraph/core/src/op/util/rnn_cell_base.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/op/util/scatter_base.cpp b/ngraph/core/src/op/util/scatter_base.cpp index 992642737572df..3220b04efe3247 100644 --- a/ngraph/core/src/op/util/scatter_base.cpp +++ b/ngraph/core/src/op/util/scatter_base.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/scatter_base.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/op/util/scatter_nd_base.cpp b/ngraph/core/src/op/util/scatter_nd_base.cpp index eff4a8c68cdd04..9d91891c58f073 100644 --- a/ngraph/core/src/op/util/scatter_nd_base.cpp +++ b/ngraph/core/src/op/util/scatter_nd_base.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/scatter_nd_base.hpp" #include "itt.hpp" @@ -52,6 +40,10 @@ void op::util::ScatterNDBase::validate_and_infer_types() const PartialShape& indices_shape = get_input_partial_shape(INDICES); const PartialShape& updates_shape = get_input_partial_shape(UPDATES); + const auto& inputs_rank = inputs_shape.rank(); + const auto& indices_rank = indices_shape.rank(); + const auto& updates_rank = updates_shape.rank(); + NODE_VALIDATION_CHECK(this, indices_et == element::i32 || indices_et == element::i64, "Indices element type must be i64 or i32"); @@ -60,47 +52,47 @@ void op::util::ScatterNDBase::validate_and_infer_types() this, updates_et == inputs_et, "Updates element type must be the same as inputs"); NODE_VALIDATION_CHECK(this, - indices_shape.rank().is_dynamic() || - indices_shape.rank().get_length() >= 1, + indices_rank.is_dynamic() || indices_rank.get_length() >= 1, "Indices rank is expected to be at least 1"); NODE_VALIDATION_CHECK(this, - inputs_shape.rank().is_dynamic() || indices_shape.rank().is_dynamic() || - indices_shape[indices_shape.rank().get_length() - 1].get_length() <= - inputs_shape.rank().get_length(), + inputs_rank.is_dynamic() || indices_rank.is_dynamic() || + indices_shape[indices_rank.get_length() - 1].get_length() <= + inputs_rank.get_length(), "Last dimension of indices can be at most the rank of inputs"); - NODE_VALIDATION_CHECK( - this, - inputs_shape.rank().is_dynamic() || indices_shape.rank().is_dynamic() || - updates_shape.rank().is_dynamic() || - updates_shape.rank().get_length() == - indices_shape.rank().get_length() + inputs_shape.rank().get_length() - - indices_shape[indices_shape.rank().get_length() - 1].get_length() - 1, - "Rank of updates must be rank of inputs + rank of indices - last dimension of indices " - "- 1"); - - bool compatible = true; - if (inputs_shape.is_static() && indices_shape.is_static() && updates_shape.is_static()) + if (inputs_rank.is_static() && indices_rank.is_static() && updates_rank.is_static()) { - size_t indices_rank = indices_shape.rank().get_length(); - size_t updates_rank = updates_shape.rank().get_length(); - for (size_t i = 0; i < indices_rank - 1; i++) - { - compatible = compatible && updates_shape[i].same_scheme(indices_shape[i]); - NODE_VALIDATION_CHECK( - this, - compatible, - "updates_shape[0:indices_rank-1] shape must be indices_shape[:-1]"); - } - size_t j = indices_shape[indices_rank - 1].get_length(); - for (size_t i = indices_rank - 1; i < updates_rank; i++, j++) + auto expected_updates_rank = indices_rank.get_length() + inputs_rank.get_length() - + indices_shape[indices_rank.get_length() - 1].get_length() - 1; + // If expected updates rank is 0D it also can be a tensor with one element + NODE_VALIDATION_CHECK( + this, + updates_rank.get_length() == expected_updates_rank || expected_updates_rank == 0, + "Rank of updates must be rank of inputs + rank of indices - last dimension of indices " + "- 1"); + + bool compatible = true; + if (inputs_shape.is_static() && indices_shape.is_static() && updates_shape.is_static()) { - compatible = compatible && updates_shape[i].same_scheme(inputs_shape[j]); - NODE_VALIDATION_CHECK( - this, - compatible, - "updates_shape[indices_rank-1:] shape must be input_shape[indices_shape[-1]:]"); + size_t static_indices_rank = indices_rank.get_length(); + for (size_t i = 0; i < static_indices_rank - 1; i++) + { + compatible = compatible && updates_shape[i].same_scheme(indices_shape[i]); + NODE_VALIDATION_CHECK( + this, + compatible, + "updates_shape[0:indices_rank-1] shape must be indices_shape[:-1]"); + } + size_t j = indices_shape[static_indices_rank - 1].get_length(); + for (size_t i = static_indices_rank - 1; i < expected_updates_rank; i++, j++) + { + compatible = compatible && updates_shape[i].same_scheme(inputs_shape[j]); + NODE_VALIDATION_CHECK( + this, + compatible, + "updates_shape[indices_rank-1:] shape must be input_shape[indices_shape[-1]:]"); + } } } diff --git a/ngraph/core/src/op/util/sub_graph_base.cpp b/ngraph/core/src/op/util/sub_graph_base.cpp index f0c1ba086d5bb7..2f2cd0c9822cb9 100644 --- a/ngraph/core/src/op/util/sub_graph_base.cpp +++ b/ngraph/core/src/op/util/sub_graph_base.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/sub_graph_base.hpp" #include "ngraph/opsets/opset5.hpp" diff --git a/ngraph/core/src/op/util/unary_elementwise_arithmetic.cpp b/ngraph/core/src/op/util/unary_elementwise_arithmetic.cpp index dae16c3b2ce359..9ab14dddf382d9 100644 --- a/ngraph/core/src/op/util/unary_elementwise_arithmetic.cpp +++ b/ngraph/core/src/op/util/unary_elementwise_arithmetic.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/util/unary_elementwise_arithmetic.hpp" #include "itt.hpp" @@ -20,6 +8,8 @@ using namespace ngraph; +NGRAPH_RTTI_DEFINITION(op::util::UnaryElementwiseArithmetic, "UnaryElementwiseArithmetic", 0); + op::util::UnaryElementwiseArithmetic::UnaryElementwiseArithmetic() : Op() { diff --git a/ngraph/core/src/op/util/variable.cpp b/ngraph/core/src/op/util/variable.cpp index 0cc92baa6ddbdc..e7564fd9789b7c 100644 --- a/ngraph/core/src/op/util/variable.cpp +++ b/ngraph/core/src/op/util/variable.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/ngraph/core/src/op/variadic_split.cpp b/ngraph/core/src/op/variadic_split.cpp index c54f0ce6d48f02..231233c9e5efbb 100644 --- a/ngraph/core/src/op/variadic_split.cpp +++ b/ngraph/core/src/op/variadic_split.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/op/xor.cpp b/ngraph/core/src/op/xor.cpp index 261116684c1412..f38546cb532eba 100644 --- a/ngraph/core/src/op/xor.cpp +++ b/ngraph/core/src/op/xor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/xor.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/opsets/opset.cpp b/ngraph/core/src/opsets/opset.cpp index 29c135ddc76cc6..a59ca4c37262c0 100644 --- a/ngraph/core/src/opsets/opset.cpp +++ b/ngraph/core/src/opsets/opset.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/opsets/opset.hpp" #include "ngraph/log.hpp" @@ -157,3 +145,22 @@ const ngraph::OpSet& ngraph::get_opset6() } return opset; } + +const ngraph::OpSet& ngraph::get_opset7() +{ + static std::mutex init_mutex; + static bool opset_is_initialized = false; + static OpSet opset; + if (!opset_is_initialized) + { + std::lock_guard guard(init_mutex); + if (!opset_is_initialized) + { +#define NGRAPH_OP(NAME, NAMESPACE) opset.insert(); +#include "ngraph/opsets/opset7_tbl.hpp" +#undef NGRAPH_OP + opset_is_initialized = true; + } + } + return opset; +} diff --git a/ngraph/core/src/partial_shape.cpp b/ngraph/core/src/partial_shape.cpp index 6056203c859998..cb1fea2de3e4cb 100644 --- a/ngraph/core/src/partial_shape.cpp +++ b/ngraph/core/src/partial_shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/pass/constant_folding.cpp b/ngraph/core/src/pass/constant_folding.cpp index da2cfee15957eb..824df2ac26bee0 100644 --- a/ngraph/core/src/pass/constant_folding.cpp +++ b/ngraph/core/src/pass/constant_folding.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pass/constant_folding.hpp" #include diff --git a/ngraph/core/src/pass/convert_fp32_to_fp16.cpp b/ngraph/core/src/pass/convert_fp32_to_fp16.cpp index 345b27f6277979..69bee6459bd09d 100644 --- a/ngraph/core/src/pass/convert_fp32_to_fp16.cpp +++ b/ngraph/core/src/pass/convert_fp32_to_fp16.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pass/convert_fp32_to_fp16.hpp" #include "ngraph/graph_util.hpp" diff --git a/ngraph/core/src/pass/graph_rewrite.cpp b/ngraph/core/src/pass/graph_rewrite.cpp index 85a9189241b33f..f8804532bfdacb 100644 --- a/ngraph/core/src/pass/graph_rewrite.cpp +++ b/ngraph/core/src/pass/graph_rewrite.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/pass/low_latency.cpp b/ngraph/core/src/pass/low_latency.cpp index cad0a051836e18..ea5effce4abdfb 100644 --- a/ngraph/core/src/pass/low_latency.cpp +++ b/ngraph/core/src/pass/low_latency.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,6 +23,23 @@ ngraph::pass::LowLatency::LowLatency() return false; } + if (const auto& loop = std::dynamic_pointer_cast(sub_graph_op)) + { + const auto& trip_count = + std::dynamic_pointer_cast(loop->get_input_node_shared_ptr(0)); + const auto& num_iter = loop->get_num_iterations(); + if (trip_count && num_iter > 0 && trip_count->get_output_target_inputs(0).size() == 1) + { + auto single_iter = + std::make_shared(ngraph::element::i64, Shape{}, 1); + replace_node(trip_count, single_iter); + } + else + { + // count of iterations is dynamic; + return false; + } + } // Mark the TI layer to be unrolled. Enable unconditional ti unrolling for all plugins. auto& rt_info = sub_graph_op->get_rt_info(); rt_info["UNROLL_TI"] = std::make_shared>(1); diff --git a/ngraph/core/src/pass/manager.cpp b/ngraph/core/src/pass/manager.cpp index 612b7823eb6d7b..a3c376355278d1 100644 --- a/ngraph/core/src/pass/manager.cpp +++ b/ngraph/core/src/pass/manager.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -83,9 +71,7 @@ pass::Manager::Manager() { } -pass::Manager::~Manager() -{ -} +pass::Manager::~Manager() {} pass::Manager::Manager(std::shared_ptr pass_config) : m_pass_config(std::move(pass_config)) diff --git a/ngraph/core/src/pass/pass.cpp b/ngraph/core/src/pass/pass.cpp index c6e306cc009f77..e7e9a7c790fdfc 100644 --- a/ngraph/core/src/pass/pass.cpp +++ b/ngraph/core/src/pass/pass.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifdef _WIN32 #else @@ -25,12 +13,8 @@ using namespace std; using namespace ngraph; -NGRAPH_SUPPRESS_DEPRECATED_START - NGRAPH_RTTI_DEFINITION(ngraph::pass::FunctionPass, "ngraph::pass::FunctionPass", 0); -NGRAPH_RTTI_DEFINITION(ngraph::pass::NodePass, "ngraph::pass::NodePass", 0); - pass::PassBase::PassBase() : m_property{all_pass_property_off} , m_pass_config(std::make_shared()) @@ -79,10 +63,10 @@ void pass::PassBase::set_callback(const param_callback& callback) // The symbols are requiered to be in cpp file to workaround RTTI issue on Android LLVM -pass::FunctionPass::~FunctionPass() -{ -} +pass::FunctionPass::~FunctionPass() {} -pass::NodePass::~NodePass() -{ -} +NGRAPH_SUPPRESS_DEPRECATED_START + +NGRAPH_RTTI_DEFINITION(ngraph::pass::NodePass, "ngraph::pass::NodePass", 0); + +pass::NodePass::~NodePass() {} diff --git a/ngraph/core/src/pass/pass_config.cpp b/ngraph/core/src/pass/pass_config.cpp index 71d011953f901c..c86ea9ba665330 100644 --- a/ngraph/core/src/pass/pass_config.cpp +++ b/ngraph/core/src/pass/pass_config.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pass/pass_config.hpp" diff --git a/ngraph/core/src/pass/validate.cpp b/ngraph/core/src/pass/validate.cpp index b37c07c730d28f..9409f7adaafeaf 100644 --- a/ngraph/core/src/pass/validate.cpp +++ b/ngraph/core/src/pass/validate.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pass/validate.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/pass/visualize_tree.cpp b/ngraph/core/src/pass/visualize_tree.cpp index c9cbd8825db2de..dfae8f040d38bb 100644 --- a/ngraph/core/src/pass/visualize_tree.cpp +++ b/ngraph/core/src/pass/visualize_tree.cpp @@ -1,19 +1,8 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** +#include #include #include "ngraph/env_util.hpp" @@ -237,6 +226,8 @@ void pass::VisualizeTree::add_node_arguments(shared_ptr node, unordered_map& height_maps, size_t& fake_node_ctr) { + static const int const_max_elements = getenv_int("NGRAPH_VISUALIZE_TREE_CONST_MAX_ELEMENTS", 7); + size_t arg_index = 0; for (auto input_value : node->input_values()) { @@ -245,10 +236,26 @@ void pass::VisualizeTree::add_node_arguments(shared_ptr node, if (is_type(arg) || is_type(arg)) { auto clone_name = "CLONE_" + to_string(fake_node_ctr); - auto color = (arg->description() == "Parameter" ? "blue" : "black"); - m_ss << " " << clone_name << "[shape=\"box\" style=\"dashed,filled\" color=\"" - << color << "\" fillcolor=\"white\" label=\"" << get_node_name(arg) << "\n" - << get_constant_value(arg) << "\"]\n"; + auto color = string("color=\"") + + (arg->description() == "Parameter" ? "blue" : "black") + string("\""); + std::vector attributes{ + "shape=\"box\"", + "style=\"dashed\"", + color, + string("label=\"") + get_node_name(arg) + string("\n") + + get_constant_value(arg, const_max_elements) + string("\"")}; + + if (m_node_modifiers && !arg->output(0).get_rt_info().empty()) + { + m_node_modifiers(*arg, attributes); + } + m_ss << " " << clone_name << "["; + for (auto attr : attributes) + { + m_ss << " " << attr << " "; + } + m_ss << "]\n"; + m_ss << " " << clone_name << " -> " << node->get_name() << label_edge(arg, node, arg_index, jump_distance) << "\n"; fake_node_ctr++; @@ -259,11 +266,13 @@ void pass::VisualizeTree::add_node_arguments(shared_ptr node, m_ss << add_attributes(node); auto recv_node_name = "RECV_" + to_string(fake_node_ctr); auto send_node_name = "SEND_" + to_string(fake_node_ctr); - m_ss << " " << recv_node_name << "[shape=\"box\" style=\"solid,filled\" " - "fillcolor=\"#ffcccc\" label=\"Receive[" + m_ss << " " << recv_node_name + << "[shape=\"box\" style=\"solid,filled\" " + "fillcolor=\"#ffcccc\" label=\"Receive[" << arg->get_name() << "]\"]\n"; - m_ss << " " << send_node_name << "[shape=\"box\" style=\"solid,filled\" " - "fillcolor=\"#ccffcc\" label=\"Send[" + m_ss << " " << send_node_name + << "[shape=\"box\" style=\"solid,filled\" " + "fillcolor=\"#ccffcc\" label=\"Send[" << node->get_name() << "]\"]\n"; m_ss << " " << arg->get_name() << " -> " << send_node_name << label_edge(arg, node, arg_index, jump_distance) << "\n"; @@ -329,29 +338,81 @@ static std::string pretty_partial_shape(const PartialShape& shape) } template -static std::string pretty_value(const vector& values) +static std::string pretty_min_max_denormal_value(const vector& values) +{ + std::stringstream ss; + + T min_value = values[0]; + T max_value = values[0]; + size_t denormal_counts = 0ul; + std::stringstream denormal_ss; + for (size_t i = 0; i < values.size(); ++i) + { + const auto& value = values[i]; + if (min_value > value) + { + min_value = value; + } + if (max_value < value) + { + max_value = value; + } + + const auto abs_value = std::abs(static_cast(value)); + if (((abs_value > 0.) && (abs_value < 1.e-32)) || (abs_value > 1.e+32)) + { + if (denormal_counts < 3) + { + denormal_ss << (denormal_counts > 0 ? ", " : "") << i << ": " << value; + } + else if (denormal_counts == 3) + { + denormal_ss << "..."; + } + denormal_counts++; + } + } + + ss << "min: " << min_value << ", max: " << max_value; + if (denormal_counts != 0) + { + ss << ", denormals: " << denormal_counts << " [" << denormal_ss.str() << "]"; + } + + return ss.str(); +} + +template +static std::string pretty_value(const vector& values, size_t max_elements) { std::stringstream ss; - bool first = true; for (size_t i = 0; i < values.size(); ++i) { - if (i > 32) + if (i < max_elements) + { + if (i != 0 && i % 8 == 0) + { + ss << std::endl; + } + } + else { ss << "..."; break; } const auto& value = values[i]; - if (!first) + if (i > 0) ss << ", "; ss << value; + } - if (((i + 1) % 8) == 0) - { - ss << std::endl; - } - - first = false; + const std::string additional_ss = getenv_bool("NGRAPH_VISUALIZE_TREE_MIN_MAX_DENORMAL") + ? pretty_min_max_denormal_value(values) + : ""; + if (!additional_ss.empty()) + { + ss << std::endl << "(" << additional_ss << ")"; } return ss.str(); } @@ -372,24 +433,26 @@ std::string pass::VisualizeTree::get_constant_value(std::shared_ptr node, case element::Type_t::undefined: ss << "[ undefined value ]"; break; case element::Type_t::dynamic: ss << "[ dynamic value ]"; break; case element::Type_t::u1: ss << "[ u1 value ]"; break; + case element::Type_t::u4: ss << "[ u4 value ]"; break; + case element::Type_t::i4: ss << "[ i4 value ]"; break; case element::Type_t::bf16: case element::Type_t::f16: case element::Type_t::f32: case element::Type_t::f64: - ss << "[" << pretty_value(constant->cast_vector()) << "]"; + ss << "[" << pretty_value(constant->cast_vector(), max_elements) << "]"; break; case element::Type_t::i8: case element::Type_t::i16: case element::Type_t::i32: case element::Type_t::i64: - ss << "[" << pretty_value(constant->cast_vector()) << "]"; + ss << "[" << pretty_value(constant->cast_vector(), max_elements) << "]"; break; case element::Type_t::boolean: case element::Type_t::u8: case element::Type_t::u16: case element::Type_t::u32: case element::Type_t::u64: - ss << "[" << pretty_value(constant->cast_vector()) << "]"; + ss << "[" << pretty_value(constant->cast_vector(), max_elements) << "]"; break; } return ss.str(); diff --git a/ngraph/core/src/pattern/matcher.cpp b/ngraph/core/src/pattern/matcher.cpp index 03011554a5a385..b8bca92824b736 100644 --- a/ngraph/core/src/pattern/matcher.cpp +++ b/ngraph/core/src/pattern/matcher.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/pattern/op/any.cpp b/ngraph/core/src/pattern/op/any.cpp index 0cc84c94b31d55..f21bcf0da0c9f6 100644 --- a/ngraph/core/src/pattern/op/any.cpp +++ b/ngraph/core/src/pattern/op/any.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/any.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/pattern/op/any_of.cpp b/ngraph/core/src/pattern/op/any_of.cpp index 4dc71944ff32f7..68680e95bf820d 100644 --- a/ngraph/core/src/pattern/op/any_of.cpp +++ b/ngraph/core/src/pattern/op/any_of.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/any_of.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/pattern/op/any_output.cpp b/ngraph/core/src/pattern/op/any_output.cpp index 0f57cc8620ff36..d94ea8db03a8c8 100644 --- a/ngraph/core/src/pattern/op/any_output.cpp +++ b/ngraph/core/src/pattern/op/any_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/any_output.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/pattern/op/branch.cpp b/ngraph/core/src/pattern/op/branch.cpp index 45b6bec2bb2679..9ed6ee0379d66c 100644 --- a/ngraph/core/src/pattern/op/branch.cpp +++ b/ngraph/core/src/pattern/op/branch.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/branch.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/pattern/op/capture.cpp b/ngraph/core/src/pattern/op/capture.cpp index 969d91fc26f3db..b4f7f0fe0a818d 100644 --- a/ngraph/core/src/pattern/op/capture.cpp +++ b/ngraph/core/src/pattern/op/capture.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/capture.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/pattern/op/label.cpp b/ngraph/core/src/pattern/op/label.cpp index 607ffb8f26c94b..6cf281589913f8 100644 --- a/ngraph/core/src/pattern/op/label.cpp +++ b/ngraph/core/src/pattern/op/label.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/label.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/pattern/op/or.cpp b/ngraph/core/src/pattern/op/or.cpp index ffd82eba8b0e32..9ea42726e027ba 100644 --- a/ngraph/core/src/pattern/op/or.cpp +++ b/ngraph/core/src/pattern/op/or.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/or.hpp" #include "ngraph/pattern/matcher.hpp" @@ -36,6 +24,8 @@ bool pattern::op::Or::match_value(Matcher* matcher, auto saved = matcher->start_match(); if (matcher->match_value(input_value, graph_value)) { + auto& pattern_map = matcher->get_pattern_value_map(); + pattern_map[input_value.get_node_shared_ptr()] = graph_value; return saved.finish(true); } } diff --git a/ngraph/core/src/pattern/op/pattern.cpp b/ngraph/core/src/pattern/op/pattern.cpp index c61173dd6e4485..8eaadbf1fc9e7d 100644 --- a/ngraph/core/src/pattern/op/pattern.cpp +++ b/ngraph/core/src/pattern/op/pattern.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -102,6 +90,13 @@ namespace ngraph }; } + std::function)> rank_equals(const Dimension& expected_rank) + { + return [=](Output output) -> bool { + return output.get_partial_shape().rank() == expected_rank; + }; + } + std::function)> type_matches(const element::Type& type) { return [=](Output output) -> bool { return output.get_element_type() == type; }; diff --git a/ngraph/core/src/pattern/op/skip.cpp b/ngraph/core/src/pattern/op/skip.cpp index f12087581159e0..acccce0b047949 100644 --- a/ngraph/core/src/pattern/op/skip.cpp +++ b/ngraph/core/src/pattern/op/skip.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/skip.hpp" #include "ngraph/pattern/matcher.hpp" @@ -32,8 +20,7 @@ bool pattern::op::Skip::match_value(Matcher* matcher, const Output& graph_value) { matcher->add_node(graph_value); - return m_predicate(graph_value) - ? matcher->match_arguments(pattern_value.get_node(), - graph_value.get_node_shared_ptr()) - : matcher->match_value(input_value(0), graph_value); + return m_predicate(graph_value) ? matcher->match_arguments(pattern_value.get_node(), + graph_value.get_node_shared_ptr()) + : matcher->match_value(input_value(0), graph_value); } diff --git a/ngraph/core/src/pattern/op/true.cpp b/ngraph/core/src/pattern/op/true.cpp index c044b68debaad4..eac651ef512eb0 100644 --- a/ngraph/core/src/pattern/op/true.cpp +++ b/ngraph/core/src/pattern/op/true.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/true.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/pattern/op/wrap_type.cpp b/ngraph/core/src/pattern/op/wrap_type.cpp index b76403c032950f..88bfb0a388f4a1 100644 --- a/ngraph/core/src/pattern/op/wrap_type.cpp +++ b/ngraph/core/src/pattern/op/wrap_type.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/pattern/op/wrap_type.hpp" #include "ngraph/pattern/matcher.hpp" diff --git a/ngraph/core/src/precomp.hpp b/ngraph/core/src/precomp.hpp index f994321b1fa219..7744b460fa620e 100644 --- a/ngraph/core/src/precomp.hpp +++ b/ngraph/core/src/precomp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/core/src/provenance.cpp b/ngraph/core/src/provenance.cpp index 09d34c01cf7663..ff1442ce179e6f 100644 --- a/ngraph/core/src/provenance.cpp +++ b/ngraph/core/src/provenance.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/rt_info.cpp b/ngraph/core/src/rt_info.cpp index 90eca7473f64cc..c444be5d531348 100644 --- a/ngraph/core/src/rt_info.cpp +++ b/ngraph/core/src/rt_info.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/rt_info.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/core/src/runtime/aligned_buffer.cpp b/ngraph/core/src/runtime/aligned_buffer.cpp index 1daca4d01c3fbc..121c88e911c718 100644 --- a/ngraph/core/src/runtime/aligned_buffer.cpp +++ b/ngraph/core/src/runtime/aligned_buffer.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/runtime/host_tensor.cpp b/ngraph/core/src/runtime/host_tensor.cpp index da996869442eb9..e6b001559175d6 100644 --- a/ngraph/core/src/runtime/host_tensor.cpp +++ b/ngraph/core/src/runtime/host_tensor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/runtime/tensor.cpp b/ngraph/core/src/runtime/tensor.cpp index 21e9c328a24d16..55f8b3f0c3e44e 100644 --- a/ngraph/core/src/runtime/tensor.cpp +++ b/ngraph/core/src/runtime/tensor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/runtime/tensor.hpp" #include "ngraph/log.hpp" diff --git a/ngraph/core/src/shape.cpp b/ngraph/core/src/shape.cpp index bf3c0785bb692b..12823d1917b364 100644 --- a/ngraph/core/src/shape.cpp +++ b/ngraph/core/src/shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/shape.hpp" #include "ngraph/util.hpp" @@ -53,9 +41,7 @@ ngraph::Shape::Shape(size_t n, size_t initial_value) { } -ngraph::Shape::~Shape() -{ -} +ngraph::Shape::~Shape() {} ngraph::Shape& ngraph::Shape::operator=(const Shape& v) { diff --git a/ngraph/core/src/shape_util.cpp b/ngraph/core/src/shape_util.cpp index c6da187217f726..e90688fd9bf308 100644 --- a/ngraph/core/src/shape_util.cpp +++ b/ngraph/core/src/shape_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/slice_plan.cpp b/ngraph/core/src/slice_plan.cpp index 0abf183c8cd92d..746d3c4c5cad70 100644 --- a/ngraph/core/src/slice_plan.cpp +++ b/ngraph/core/src/slice_plan.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/core/src/specialize_function.cpp b/ngraph/core/src/specialize_function.cpp index 7954818c4bceeb..e63c6ebe6921d4 100644 --- a/ngraph/core/src/specialize_function.cpp +++ b/ngraph/core/src/specialize_function.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/specialize_function.hpp" #include "itt.hpp" diff --git a/ngraph/core/src/strides.cpp b/ngraph/core/src/strides.cpp index f4d7c8561a0d96..8aeb5adade4086 100644 --- a/ngraph/core/src/strides.cpp +++ b/ngraph/core/src/strides.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/strides.hpp" #include "ngraph/util.hpp" diff --git a/ngraph/core/src/type.cpp b/ngraph/core/src/type.cpp index 9c3d9d6f9255af..9e3bf3b1a48e14 100644 --- a/ngraph/core/src/type.cpp +++ b/ngraph/core/src/type.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/type.hpp" #include "ngraph/util.hpp" diff --git a/ngraph/core/src/type/bfloat16.cpp b/ngraph/core/src/type/bfloat16.cpp index 5d558da79700b1..79568d3306ed6a 100644 --- a/ngraph/core/src/type/bfloat16.cpp +++ b/ngraph/core/src/type/bfloat16.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Contains logic derived from TensorFlow’s bfloat16 implementation // https://github.com/tensorflow/tensorflow/blob/d354efc/tensorflow/core/lib/bfloat16/bfloat16.h diff --git a/ngraph/core/src/type/element_type.cpp b/ngraph/core/src/type/element_type.cpp index 7e418b8ec85ede..3ce890e3081be8 100644 --- a/ngraph/core/src/type/element_type.cpp +++ b/ngraph/core/src/type/element_type.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -72,11 +60,13 @@ static const element_types_map_t& get_type_info_map() {element::Type_t::f16, TypeInfo(16, true, true, false, "float16", "f16")}, {element::Type_t::f32, TypeInfo(32, true, true, false, "float", "f32")}, {element::Type_t::f64, TypeInfo(64, true, true, false, "double", "f64")}, + {element::Type_t::i4, TypeInfo(4, false, true, true, "int4_t", "i4")}, {element::Type_t::i8, TypeInfo(8, false, true, true, "int8_t", "i8")}, {element::Type_t::i16, TypeInfo(16, false, true, false, "int16_t", "i16")}, {element::Type_t::i32, TypeInfo(32, false, true, true, "int32_t", "i32")}, {element::Type_t::i64, TypeInfo(64, false, true, false, "int64_t", "i64")}, {element::Type_t::u1, TypeInfo(1, false, false, false, "uint1_t", "u1")}, + {element::Type_t::u4, TypeInfo(4, false, false, false, "uint4_t", "u4")}, {element::Type_t::u8, TypeInfo(8, false, false, true, "uint8_t", "u8")}, {element::Type_t::u16, TypeInfo(16, false, false, false, "uint16_t", "u16")}, {element::Type_t::u32, TypeInfo(32, false, false, false, "uint32_t", "u32")}, @@ -93,11 +83,13 @@ std::vector element::Type::get_known_types() &element::f16, &element::f32, &element::f64, + &element::i4, &element::i8, &element::i16, &element::i32, &element::i64, &element::u1, + &element::u4, &element::u8, &element::u16, &element::u32, @@ -294,11 +286,13 @@ size_t ngraph::compiler_byte_size(element::Type_t et) ET_CASE(f16); ET_CASE(f32); ET_CASE(f64); + ET_CASE(i4); ET_CASE(i8); ET_CASE(i16); ET_CASE(i32); ET_CASE(i64); ET_CASE(u1); + ET_CASE(u4); ET_CASE(u8); ET_CASE(u16); ET_CASE(u32); @@ -326,11 +320,13 @@ namespace ngraph {"f16", element::Type_t::f16}, {"f32", element::Type_t::f32}, {"f64", element::Type_t::f64}, + {"i4", element::Type_t::i4}, {"i8", element::Type_t::i8}, {"i16", element::Type_t::i16}, {"i32", element::Type_t::i32}, {"i64", element::Type_t::i64}, {"u1", element::Type_t::u1}, + {"u4", element::Type_t::u4}, {"u8", element::Type_t::u8}, {"u16", element::Type_t::u16}, {"u32", element::Type_t::u32}, diff --git a/ngraph/core/src/type/float16.cpp b/ngraph/core/src/type/float16.cpp index de7a344948bbb3..c2f0e2556b5c2e 100644 --- a/ngraph/core/src/type/float16.cpp +++ b/ngraph/core/src/type/float16.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Contains logic derived from TensorFlow’s bfloat16 implementation // https://github.com/tensorflow/tensorflow/blob/d354efc/tensorflow/core/lib/float16/float16.h diff --git a/ngraph/core/src/util.cpp b/ngraph/core/src/util.cpp index 86967f358fdda8..93d815e1ed3d14 100644 --- a/ngraph/core/src/util.cpp +++ b/ngraph/core/src/util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/core/src/validation_util.cpp b/ngraph/core/src/validation_util.cpp index 7b37ba7f042b35..3f1baf8bf7a077 100644 --- a/ngraph/core/src/validation_util.cpp +++ b/ngraph/core/src/validation_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -34,8 +22,6 @@ #include "ngraph/util.hpp" #include "ngraph/validation_util.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; @@ -1248,7 +1234,19 @@ void propagate_rt_info(Node* node, const Output& final_port) if (stop_nodes.count(in.get_node())) continue; auto consumer = in.get_node()->shared_from_this(); + // FIXME: Here we have a WA in order to save some original fields + // if we have conflicts because Variant merge doesn't work. + // We can restore original fields because we don't change the operation + auto orig_rt_info = consumer->get_rt_info(); + copy_runtime_info({curr_node, consumer}, consumer); + + auto& rt_info = consumer->get_rt_info(); + for (const auto& it : orig_rt_info) + { + if (rt_info.find(it.first) == rt_info.end()) + rt_info[it.first] = it.second; + } } } } @@ -1440,7 +1438,7 @@ HostTensorPtr equality_mask(const HostTensorPtr& tensor, const shared_ptr(element::boolean, lhs->get_shape()); + auto result = std::make_shared(); op::v1::LogicalOr(std::make_shared(lhs->get_element_type(), lhs->get_shape()), std::make_shared(rhs->get_element_type(), rhs->get_shape()), ngraph::op::AutoBroadcastSpec::NUMPY) diff --git a/ngraph/core/src/variant.cpp b/ngraph/core/src/variant.cpp index 7bed33949265f7..a4b780c41e83f7 100644 --- a/ngraph/core/src/variant.cpp +++ b/ngraph/core/src/variant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/variant.hpp" @@ -22,9 +10,7 @@ using namespace ngraph; constexpr VariantTypeInfo VariantWrapper::type_info; constexpr VariantTypeInfo VariantWrapper::type_info; -Variant::~Variant() -{ -} +Variant::~Variant() {} std::shared_ptr Variant::init(const std::shared_ptr& node) { diff --git a/ngraph/frontend/CMakeLists.txt b/ngraph/frontend/CMakeLists.txt index 6512b3f0166536..7aa7d9ae22c8ca 100644 --- a/ngraph/frontend/CMakeLists.txt +++ b/ngraph/frontend/CMakeLists.txt @@ -1,22 +1,12 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** if (NGRAPH_ONNX_IMPORT_ENABLE) add_subdirectory(generic) + add_subdirectory(onnx_common) add_subdirectory(onnx_import) + add_subdirectory(onnx_editor) add_subdirectory(tensorflow) add_subdirectory(paddlepaddle) endif() diff --git a/ngraph/frontend/generic/CMakeLists.txt b/ngraph/frontend/generic/CMakeLists.txt index 8fd8f5a83dcfea..7b52245afaee8d 100644 --- a/ngraph/frontend/generic/CMakeLists.txt +++ b/ngraph/frontend/generic/CMakeLists.txt @@ -34,6 +34,9 @@ add_library(ngraph::frontend_manager ALIAS frontend_manager) target_include_directories(frontend_manager PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../tensorflow/include + ${CMAKE_CURRENT_SOURCE_DIR}/../onnx_editor/include + ${CMAKE_CURRENT_SOURCE_DIR}/../onnx_import/include + ${CMAKE_CURRENT_SOURCE_DIR}/../onnx_common/include ${CMAKE_CURRENT_SOURCE_DIR}/../paddlepaddle/include) MESSAGE("HERE4: " ${CMAKE_CURRENT_SOURCE_DIR}) @@ -45,7 +48,7 @@ endif() # TODO: Add other frontends to the list of dependencies temporary; in the produce version they should be discovered # TODO: in runtime. -target_link_libraries(frontend_manager PRIVATE onnx_importer tensorflow_frontend paddlepaddle_frontend PUBLIC ngraph) +target_link_libraries(frontend_manager PRIVATE onnx_importer onnx_editor onnx_common tensorflow_frontend paddlepaddle_frontend PUBLIC ngraph) set(FRONTEND_INSTALL_INCLUDE "${NGRAPH_INSTALL_INCLUDE}/ngraph/frontend/generic") target_include_directories(frontend_manager SYSTEM PUBLIC $ diff --git a/ngraph/frontend/generic/src/frontend_manager.cpp b/ngraph/frontend/generic/src/frontend_manager.cpp index a97cab597a6c7c..ab819b55968a4c 100644 --- a/ngraph/frontend/generic/src/frontend_manager.cpp +++ b/ngraph/frontend/generic/src/frontend_manager.cpp @@ -16,7 +16,7 @@ #include #include "onnx_import/onnx.hpp" -#include "onnx_import/editor/editor.hpp" +#include "onnx_editor/editor.hpp" #include "tensorflow_frontend/tensorflow.hpp" #include "frontend_manager/frontend_manager.hpp" #include "paddlepaddle_frontend/frontend.hpp" @@ -226,7 +226,7 @@ namespace ngraph { public: - onnx_import::InputEdge edge; + onnx_editor::InputEdge edge; PlaceInputEdgeONNX (const std::string& _sourceTensorName, int _operationNodeIndex) : edge(_operationNodeIndex, _sourceTensorName) @@ -237,7 +237,7 @@ namespace ngraph { public: - onnx_import::OutputEdge edge; + onnx_editor::OutputEdge edge; PlaceOutputEdgeONNX (int _operationNodeIndex, const std::string& _targetTensorName) : edge(_operationNodeIndex, _targetTensorName) @@ -271,7 +271,7 @@ namespace ngraph public: // TODO: Move to private - onnx_import::ONNXModelEditor editor; + onnx_editor::ONNXModelEditor editor; InputModelONNX (const std::string& model_path) : editor(model_path) {} @@ -308,7 +308,7 @@ namespace ngraph std::cerr << "inputs.size() = " << inputs.size() << "\n"; // Current implementation is limited by tensor places only, each input tensor should be consumed by a single op only // TODO Extend to non tensor inputs/outputs and remove other limitations - std::vector onnx_inputs; + std::vector onnx_inputs; onnx_inputs.reserve(inputs.size()); for(const auto& input: inputs) { @@ -326,7 +326,7 @@ namespace ngraph } std::cerr << "{4}\n"; - std::vector onnx_outputs; + std::vector onnx_outputs; onnx_outputs.reserve(outputs.size()); for(const auto& output: outputs) { @@ -372,7 +372,7 @@ namespace ngraph virtual std::shared_ptr convert (InputModel::Ptr model) const override { - return import_onnx_model(std::dynamic_pointer_cast(model)->editor); + return onnx_import::import_onnx_model(std::dynamic_pointer_cast(model)->editor.model_path()); } }; diff --git a/ngraph/frontend/onnx_common/CMakeLists.txt b/ngraph/frontend/onnx_common/CMakeLists.txt new file mode 100644 index 00000000000000..cd40569d6b8e05 --- /dev/null +++ b/ngraph/frontend/onnx_common/CMakeLists.txt @@ -0,0 +1,39 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME "onnx_common") + +file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) +file(GLOB_RECURSE PUBLIC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp) + +# Create named folders for the sources within the .vcproj +# Empty name lists them directly under the .vcproj + +source_group("src" FILES ${LIBRARY_SRC}) +source_group("include" FILES ${PUBLIC_HEADERS} ${PUBLIC_HEADERS}) + +# Create static library + +add_library(${TARGET_NAME} STATIC ${LIBRARY_SRC} ${PUBLIC_HEADERS}) +add_library(ngraph::onnx_common ALIAS ${TARGET_NAME}) + +# TODO Add handling ie_faster_build + +set(ONNX_COMMON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) +set(ONNX_COMMON_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) +set(ONNX_COMMON_INSTALL_INCLUDE "${NGRAPH_INSTALL_INCLUDE}/ngraph/frontend") + +target_include_directories(${TARGET_NAME} PUBLIC $ + $) + +target_link_libraries(${TARGET_NAME} PRIVATE ngraph) +target_link_libraries(${TARGET_NAME} PUBLIC onnx_proto onnx ${Protobuf_LIBRARIES}) + +target_include_directories(${TARGET_NAME} PRIVATE ${ONNX_COMMON_SRC_DIR} ${NGRAPH_INCLUDE_PATH} ${Protobuf_INCLUDE_DIRS}) + +if(NGRAPH_USE_PROTOBUF_LITE) + target_compile_definitions(${TARGET_NAME} PRIVATE NGRAPH_USE_PROTOBUF_LITE) +endif() + +add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) diff --git a/ngraph/frontend/onnx_import/src/utils/parser.hpp b/ngraph/frontend/onnx_common/include/onnx_common/parser.hpp similarity index 51% rename from ngraph/frontend/onnx_import/src/utils/parser.hpp rename to ngraph/frontend/onnx_common/include/onnx_common/parser.hpp index e5e124b80937e4..677c2e0ea0eb88 100644 --- a/ngraph/frontend/onnx_import/src/utils/parser.hpp +++ b/ngraph/frontend/onnx_common/include/onnx_common/parser.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include @@ -25,7 +13,7 @@ namespace ONNX_NAMESPACE namespace ngraph { - namespace onnx_import + namespace onnx_common { /// \brief Parses an ONNX model from a file located on a storage device. /// @@ -40,6 +28,6 @@ namespace ngraph /// /// \return The parsed in-memory representation of the ONNX model ONNX_NAMESPACE::ModelProto parse_from_istream(std::istream& model_stream); - } // namespace onnx_import + } // namespace onnx_common } // namespace ngraph diff --git a/ngraph/frontend/onnx_common/include/onnx_common/utils.hpp b/ngraph/frontend/onnx_common/include/onnx_common/utils.hpp new file mode 100644 index 00000000000000..bdf0aba44689c1 --- /dev/null +++ b/ngraph/frontend/onnx_common/include/onnx_common/utils.hpp @@ -0,0 +1,12 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +namespace ngraph +{ + namespace onnx_common + { + size_t get_onnx_data_size(int32_t onnx_type); + + } // namespace onnx_editor +} // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/utils/parser.cpp b/ngraph/frontend/onnx_common/src/parser.cpp similarity index 70% rename from ngraph/frontend/onnx_import/src/utils/parser.cpp rename to ngraph/frontend/onnx_common/src/parser.cpp index eec44a4e47e295..758407e417c2ea 100644 --- a/ngraph/frontend/onnx_import/src/utils/parser.cpp +++ b/ngraph/frontend/onnx_common/src/parser.cpp @@ -1,29 +1,17 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include #include #include "ngraph/except.hpp" -#include "utils/parser.hpp" +#include "onnx_common/parser.hpp" namespace ngraph { - namespace onnx_import + namespace onnx_common { ONNX_NAMESPACE::ModelProto parse_from_file(const std::string& file_path) { @@ -73,5 +61,5 @@ namespace ngraph return model_proto; } - } // namespace onnx_import + } // namespace onnx_common } // namespace ngraph diff --git a/ngraph/frontend/onnx_common/src/utils.cpp b/ngraph/frontend/onnx_common/src/utils.cpp new file mode 100644 index 00000000000000..5c63e0430b1d14 --- /dev/null +++ b/ngraph/frontend/onnx_common/src/utils.cpp @@ -0,0 +1,42 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "ngraph/except.hpp" +#include "onnx_common/utils.hpp" + +namespace ngraph +{ + namespace onnx_common + { + size_t get_onnx_data_size(int32_t onnx_type) + { + switch (onnx_type) + { + case ONNX_NAMESPACE::TensorProto_DataType_BOOL: return sizeof(char); + case ONNX_NAMESPACE::TensorProto_DataType_COMPLEX128: return 2 * sizeof(double); + case ONNX_NAMESPACE::TensorProto_DataType_COMPLEX64: return 2 * sizeof(float); + case ONNX_NAMESPACE::TensorProto_DataType_DOUBLE: return sizeof(double); + case ONNX_NAMESPACE::TensorProto_DataType_FLOAT16: return 2; + case ONNX_NAMESPACE::TensorProto_DataType_FLOAT: return sizeof(float); + case ONNX_NAMESPACE::TensorProto_DataType_INT8: return sizeof(int8_t); + case ONNX_NAMESPACE::TensorProto_DataType_INT16: return sizeof(int16_t); + case ONNX_NAMESPACE::TensorProto_DataType_INT32: return sizeof(int32_t); + case ONNX_NAMESPACE::TensorProto_DataType_INT64: return sizeof(int64_t); + case ONNX_NAMESPACE::TensorProto_DataType_UINT8: return sizeof(uint8_t); + case ONNX_NAMESPACE::TensorProto_DataType_UINT16: return sizeof(uint16_t); + case ONNX_NAMESPACE::TensorProto_DataType_UINT32: return sizeof(uint32_t); + case ONNX_NAMESPACE::TensorProto_DataType_UINT64: return sizeof(uint64_t); + } +#ifdef NGRAPH_USE_PROTOBUF_LITE + throw ngraph_error("unsupported element type"); +#else + throw ngraph_error("unsupported element type: " + + ONNX_NAMESPACE::TensorProto_DataType_Name( + static_cast(onnx_type))); +#endif + } + } // namespace onnx_editor +} // namespace ngraph diff --git a/ngraph/frontend/onnx_editor/CMakeLists.txt b/ngraph/frontend/onnx_editor/CMakeLists.txt new file mode 100644 index 00000000000000..0714b1e02be332 --- /dev/null +++ b/ngraph/frontend/onnx_editor/CMakeLists.txt @@ -0,0 +1,41 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME "onnx_editor") + +file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) +file(GLOB_RECURSE LIBRARY_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp) +file(GLOB_RECURSE LIBRARY_PUBLIC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp) + +# Create named folders for the sources within the .vcproj +# Empty name lists them directly under the .vcproj + +source_group("src" FILES ${LIBRARY_SRC}) +source_group("include" FILES ${LIBRARY_HEADERS}) +source_group("public include" FILES ${LIBRARY_PUBLIC_HEADERS}) + +# Create static library + +add_library(${TARGET_NAME} STATIC ${LIBRARY_SRC} ${LIBRARY_HEADERS} ${LIBRARY_PUBLIC_HEADERS}) +add_library(ngraph::onnx_editor ALIAS ${TARGET_NAME}) + +# TODO Add handling ie_faster_build + +target_link_libraries(${TARGET_NAME} PRIVATE onnx_common + PUBLIC ngraph) + +set(ONNX_EDITOR_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) +set(ONNX_EDITOR_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) +set(ONNX_EDITOR_INSTALL_INCLUDE "${NGRAPH_INSTALL_INCLUDE}/ngraph/frontend") + +target_include_directories(${TARGET_NAME} PUBLIC $ + $) + +target_include_directories(${TARGET_NAME} PRIVATE ${ONNX_EDITOR_SRC_DIR} ${NGRAPH_INCLUDE_PATH} ${Protobuf_INCLUDE_DIRS}) + +if(NGRAPH_USE_PROTOBUF_LITE) + target_compile_definitions(${TARGET_NAME} PRIVATE NGRAPH_USE_PROTOBUF_LITE) +endif() + +add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) diff --git a/ngraph/frontend/onnx_import/include/onnx_import/editor/detail/subgraph_extraction.hpp b/ngraph/frontend/onnx_editor/include/onnx_editor/detail/subgraph_extraction.hpp similarity index 59% rename from ngraph/frontend/onnx_import/include/onnx_import/editor/detail/subgraph_extraction.hpp rename to ngraph/frontend/onnx_editor/include/onnx_editor/detail/subgraph_extraction.hpp index c0ffae1dfe42c2..55220d23ad1a9d 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/editor/detail/subgraph_extraction.hpp +++ b/ngraph/frontend/onnx_editor/include/onnx_editor/detail/subgraph_extraction.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -21,77 +9,20 @@ #include #include #include -#include "../../utils/onnx_importer_visibility.hpp" + +#include "onnx_editor/editor_types.hpp" namespace ONNX_NAMESPACE { - // forward declaration to avoid the necessity of include paths setting in components - // that don't directly depend on the ONNX library class GraphProto; class NodeProto; class ValueInfoProto; - class ModelProto; } // namespace ONNX_NAMESPACE namespace ngraph { - enum class EdgeType - { - INPUT, - OUTPUT - }; - - template - struct Edge + namespace onnx_editor { - Edge() = delete; - Edge(const int node_idx, std::string tensor_name) - : m_node_idx{node_idx} - , m_tensor_name{std::move(tensor_name)} - { - } - - const int m_node_idx; - const std::string m_tensor_name; - }; - namespace onnx_import - { - - ONNX_IMPORTER_API - int find_producing_node_idx(const ONNX_NAMESPACE::ModelProto& model, - const std::string& tensorName); - - /// \brief Defines an edge connected to an input of any node in the graph. - /// It consists of a node index in the processed ONNX model and the input name. - /// The index should point to a node in the topological sort of the underlying graph - /// which means it has to be in range: 0 <= node_idx < graph.node_size() - /// - /// For a node number 5, with 3 inputs: - /// - /// ----(in_A)----> +--------+ - /// ----(in_B)----> | node 5 | ----(out)----> - /// ----(in_C)----> +--------+ - /// - /// there are 3 possible valid instances of this struct: - /// InputEdge(5, "in_A") - /// InputEdge(5, "in_B") - /// InputEdge(5, "in_C") - using InputEdge = Edge; - - /// \brief Defines an edge connected to an output of any node in the graph. - /// It consists of a node index in the processed ONNX model and the output name. - /// - /// For a node number 5, with 2 outputs: - /// - /// +--------+ ----(out1)----> - /// ----(in_A)----> | node 5 | - /// +--------+ ----(out2)----> - /// - /// there are 2 possible valid instances of this struct: - /// OutputEdge(5, "out1") - /// OutputEdge(5, "out2") - using OutputEdge = Edge; - /// \brief Subgraph extraction helper structure struct SubgraphExtractor { @@ -169,5 +100,5 @@ namespace ngraph /// \param subgraph An object describing the subgraph to be extracted (elems to be kept) void extract_subgraph_from_onnx_model(const SubgraphComponents& subgraph); }; - } // namespace onnx_import + } // namespace onnx_editor } // namespace ngraph diff --git a/ngraph/frontend/onnx_import/include/onnx_import/editor/editor.hpp b/ngraph/frontend/onnx_editor/include/onnx_editor/editor.hpp similarity index 83% rename from ngraph/frontend/onnx_import/include/onnx_import/editor/editor.hpp rename to ngraph/frontend/onnx_editor/include/onnx_editor/editor.hpp index a0110376608164..54f4ab025bd658 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/editor/editor.hpp +++ b/ngraph/frontend/onnx_editor/include/onnx_editor/editor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -23,20 +11,26 @@ #include "ngraph/op/constant.hpp" #include "ngraph/partial_shape.hpp" #include "ngraph/type/element_type.hpp" -#include "onnx_import/editor/detail/subgraph_extraction.hpp" -#include "onnx_import/utils/onnx_importer_visibility.hpp" +#include "onnx_editor/editor.hpp" +#include "onnx_editor/editor_types.hpp" + +namespace ONNX_NAMESPACE +{ + // forward declaration to avoid the necessity of include paths setting in components + // that don't directly depend on the ONNX library + class ModelProto; +} // namespace ONNX_NAMESPACE namespace ngraph { - namespace onnx_import + namespace onnx_editor { /// \brief A class representing a set of utilities allowing modification of an ONNX model /// /// \note This class can be used to modify an ONNX model before it gets translated to /// an ngraph::Function by the import_onnx_model function. It lets you modify the - /// model's input types and shapes, extract a subgraph and more. An instance of this - /// class can be passed directly to the onnx_importer API. - class ONNX_IMPORTER_API ONNXModelEditor final + /// model's input types and shapes, extract a subgraph and more. + class ONNXModelEditor final { public: ONNXModelEditor() = delete; @@ -65,6 +59,19 @@ namespace ngraph /// the inputs specified in its parameter. void set_input_shapes(const std::map& input_shapes); + /// \brief Extracts a subgraph constrained by input edges and output edges. In the end + /// the underlying ModelProto is modified - obsolete inputs, initializers, nodes + /// and outputs are removed from the in-memory model. + /// + /// \node Please look at the declaration of InputEdge and OutputEdge for explanation + /// how those objects can be created. If the outputs parameter is empty + /// this method keeps all of the original outputs of the model. + /// + /// \param inputs A collection of input edges which become new inputs to the graph + /// \param outputs A collection of output edges which become new outputs of the graph + void cut_graph_fragment(const std::vector& inputs, + const std::vector& outputs); + /// \brief Modifies the in-memory representation of the model by setting custom input /// values for inputs specified in the provided map. /// @@ -78,19 +85,6 @@ namespace ngraph /// overwritten. void set_input_values( const std::map>& input_values); - - /// \brief Extracts a subgraph constrained by input edges and output edges. In the end - /// the underlying ModelProto is modified - obsolete inputs, initializers, nodes - /// and outputs are removed from the in-memory model. - /// - /// \node Please look at the declaration of InputEdge and OutputEdge for explanation - /// how those objects can be created. If the outputs parameter is empty - /// this method keeps all of the original outputs of the model. - /// - /// \param inputs A collection of input edges which become new inputs to the graph - /// \param outputs A collection of output edges which become new outputs of the graph - void cut_graph_fragment(const std::vector& inputs, - const std::vector& outputs); /// \brief Returns a non-const reference to the underlying ModelProto object, possibly /// modified by the editor's API calls @@ -98,7 +92,7 @@ namespace ngraph /// \return A reference to ONNX ModelProto object containing the in-memory model ONNX_NAMESPACE::ModelProto& model() const; - /// \brief Returns a serialized ONNX model, possiblie modified by an instance of editor. + /// \brief Returns a serialized ONNX model, possibly modified by the editor. std::string model_string() const; /// \brief Returns a list of all inputs of the in-memory model, including initializers. @@ -132,5 +126,5 @@ namespace ngraph struct Impl; std::unique_ptr m_pimpl; }; - } // namespace onnx_import + } // namespace onnx_editor } // namespace ngraph diff --git a/ngraph/frontend/onnx_editor/include/onnx_editor/editor_types.hpp b/ngraph/frontend/onnx_editor/include/onnx_editor/editor_types.hpp new file mode 100644 index 00000000000000..69a663be6173d3 --- /dev/null +++ b/ngraph/frontend/onnx_editor/include/onnx_editor/editor_types.hpp @@ -0,0 +1,64 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph +{ + enum class EdgeType + { + INPUT, + OUTPUT + }; + + template + struct Edge + { + Edge() = delete; + Edge(const int node_idx, std::string tensor_name) + : m_node_idx{node_idx} + , m_tensor_name{std::move(tensor_name)} + { + } + + const int m_node_idx; + const std::string m_tensor_name; + }; + namespace onnx_editor + { + /// \brief Defines an edge connected to an input of any node in the graph. + /// It consists of a node index in the processed ONNX model and the input name. + /// The index should point to a node in the topological sort of the underlying graph + /// which means it has to be in range: 0 <= node_idx < graph.node_size() + /// + /// For a node number 5, with 3 inputs: + /// + /// ----(in_A)----> +--------+ + /// ----(in_B)----> | node 5 | ----(out)----> + /// ----(in_C)----> +--------+ + /// + /// there are 3 possible valid instances of this struct: + /// InputEdge(5, "in_A") + /// InputEdge(5, "in_B") + /// InputEdge(5, "in_C") + using InputEdge = Edge; + + /// \brief Defines an edge connected to an output of any node in the graph. + /// It consists of a node index in the processed ONNX model and the output name. + /// + /// For a node number 5, with 2 outputs: + /// + /// +--------+ ----(out1)----> + /// ----(in_A)----> | node 5 | + /// +--------+ ----(out2)----> + /// + /// there are 2 possible valid instances of this struct: + /// OutputEdge(5, "out1") + /// OutputEdge(5, "out2") + using OutputEdge = Edge; + } +} diff --git a/ngraph/frontend/onnx_import/src/editor/detail/subgraph_extraction.cpp b/ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.cpp similarity index 77% rename from ngraph/frontend/onnx_import/src/editor/detail/subgraph_extraction.cpp rename to ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.cpp index 66df579486e5eb..079c566fd2e9e6 100644 --- a/ngraph/frontend/onnx_import/src/editor/detail/subgraph_extraction.cpp +++ b/ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.cpp @@ -1,27 +1,15 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include #include #include "ngraph/check.hpp" -#include "onnx_import/editor/detail/subgraph_extraction.hpp" +#include "onnx_editor/detail/subgraph_extraction.hpp" -using namespace ngraph::onnx_import; +using namespace ngraph::onnx_editor; namespace { @@ -45,6 +33,8 @@ namespace const auto is_equal_to = +[](const std::string& other) { return [&](const std::string& s) { return s == other; }; }; + /// \brief Checks if an item with name equal to "name" already exists in the specified + /// container. A container item is expected to have a name() method. template bool already_exists(const Container& items, const std::string& name) { @@ -54,16 +44,21 @@ namespace begin(items), end(items), name_equals(name)); } + /// \brief Checks if a tensor with name "name" is produced by an input of the graph bool is_graph_input(const ONNX_NAMESPACE::GraphProto& graph, const std::string& name) { return already_exists(graph.input(), name); } + /// \brief Checks if a tensor with name "name" is produced by an initializer of the graph bool is_graph_initializer(const ONNX_NAMESPACE::GraphProto& graph, const std::string& name) { return already_exists(graph.initializer(), name); } + /// \brief Looks up the index of a node that produces a tensor "input_name". Used to traverse + /// the graph bottom-up. Starts from a node index "current_node_idx" because it operates + /// on a topologically sorted graph. int find_source_node_idx(const ONNX_NAMESPACE::GraphProto& graph, const int current_node_idx, const std::string& input_name) @@ -80,9 +75,9 @@ namespace } } - throw ngraph::ngraph_error{"Source node not found in the graph for node: " + - std::to_string(current_node_idx) + " and input name: " + - input_name}; + throw ngraph::ngraph_error{ + "Source node not found in the graph for node: " + std::to_string(current_node_idx) + + " and input name: " + input_name}; } /// \brief Looks up a descriptor for a given tensor name. This descriptor contains inferred @@ -104,6 +99,8 @@ namespace return *it; } + /// \brief Inserts a new input to the graph and removes an initializer that produced a tensor + /// specified by an input edge passed to this function. void replace_initializer_with_new_input(ONNX_NAMESPACE::GraphProto& graph, const InputEdge& edge) { @@ -136,6 +133,10 @@ namespace graph.mutable_initializer()->erase(it); } + /// \brief Inserts a new input to the graph and connects it to the node designated by an input + /// edge passed to this function. + /// \return A new input edge (along with "true") if a new input was added to the graph, + /// false + the original edge otherwise. std::pair append_new_graph_input(ONNX_NAMESPACE::GraphProto& graph, const InputEdge& edge) { @@ -160,6 +161,8 @@ namespace const std::string new_input_name = target_node.output(0) + ":" + edge.m_tensor_name; + // if an edge is connected to an initializer, the initializer is removed and substituted + // with an input if (is_graph_initializer(graph, edge.m_tensor_name)) { replace_initializer_with_new_input(graph, edge); @@ -178,6 +181,7 @@ namespace } /// \brief Replaces a node or initializer (consumed by multiple nodes) with a new input + /// \return Returns an index of a removed node or -1 if an initializer was removed int replace_source_with_new_input(ONNX_NAMESPACE::GraphProto& graph, const InputEdge& edge) { if (already_exists(graph.input(), edge.m_tensor_name) && @@ -220,6 +224,9 @@ namespace return -1; } + /// \brief Adds new outputs to the ONNX graph for an edge specified by a user + /// The shape for this output is taken from a previously executed shape inference of the + /// original model. void append_new_graph_output(ONNX_NAMESPACE::GraphProto& graph, const OutputEdge& edge) { if (already_exists(graph.output(), edge.m_tensor_name)) @@ -292,12 +299,11 @@ namespace /* -----------------------------------------------------------------------------------------------*/ - - - SubgraphExtractor::SubgraphExtractor(ONNX_NAMESPACE::GraphProto& graph) : m_onnx_graph(graph) { + // gathers information about the graph - input edges of every node and number of "consumers" + // of all tensors in the graph for (int i = 0; i < graph.node_size(); ++i) { for (const auto& node_input : graph.node(i).input()) @@ -310,26 +316,36 @@ SubgraphExtractor::SubgraphExtractor(ONNX_NAMESPACE::GraphProto& graph) void SubgraphExtractor::add_new_inputs(const std::vector& new_inputs) { - for (const auto& edge_to_replace : new_inputs) + for (const auto& input_edge : new_inputs) { - validate_node_index(m_onnx_graph, edge_to_replace.m_node_idx); + validate_node_index(m_onnx_graph, input_edge.m_node_idx); - if (m_tensor_consumers[edge_to_replace.m_tensor_name] > 1) + // if a tensor has multiple consumers, its producer(source) should be replaced with a new + // input - this way all consumers of this tensor will now be connected to a new graph input + if (m_tensor_consumers[input_edge.m_tensor_name] > 1) { - int idx = replace_source_with_new_input(m_onnx_graph, edge_to_replace); + // remove a node or initializer from a model and insert a new input instead + int idx = replace_source_with_new_input(m_onnx_graph, input_edge); if (idx != -1) { // if a node was replaced with an input, remove input edges from a helper multimap // for this node because it won't end up in the target subgraph + // m_node_inputs stores information about existing edges in the graph, + // when a node is removed/replaced, information about its edges should also + // be removed (this way this node will be discarded from the original graph) m_node_inputs.erase(idx); } } else { - const auto& new_edge = append_new_graph_input(m_onnx_graph, edge_to_replace); + // in case an edge is connected to a single node, a new graph input should be added + // and connected to that node; the new edge is an edge between the node and new input + const auto& new_edge = append_new_graph_input(m_onnx_graph, input_edge); if (new_edge.first) { - replace_input_edge(edge_to_replace, new_edge.second); + // the original edge should be replaced with a new one in the helper multimap + // this information will later be used during the subgraph extraction stage + replace_input_edge(input_edge, new_edge.second); } } } @@ -337,30 +353,36 @@ void SubgraphExtractor::add_new_inputs(const std::vector& new_inputs) void SubgraphExtractor::add_new_outputs(const std::vector& new_outputs) { - for (const auto& new_output : new_outputs) + for (const auto& output_edge : new_outputs) { - validate_node_index(m_onnx_graph, new_output.m_node_idx); + validate_node_index(m_onnx_graph, output_edge.m_node_idx); - append_new_graph_output(m_onnx_graph, new_output); + append_new_graph_output(m_onnx_graph, output_edge); } } void SubgraphExtractor::replace_input_edge(const InputEdge& old_edge, const InputEdge& new_edge) { + // old_edge = {5, "x"}; new_edge = {5, "y"} + // for a given node index "N", find all of its inputs in the helper multimap (pair of iterators) + // using those iterators find the name of an input tensor that needs to be replaced const auto node_inputs = m_node_inputs.equal_range(old_edge.m_node_idx); auto old_input_name = node_inputs.first; + // find an iterator pointing to an input name that should while (old_input_name->second != old_edge.m_tensor_name && old_input_name != node_inputs.second) { ++old_input_name; } + // finally remove the old edge from the helper map and insert a new edge m_node_inputs.erase(old_input_name); m_node_inputs.insert({new_edge.m_node_idx, new_edge.m_tensor_name}); } void SubgraphExtractor::extract_subgraph(std::vector subgraph_outputs) { + // when the user doesn't specify any outputs, all outputs of the original graph should be kept if (subgraph_outputs.empty()) { subgraph_outputs = all_output_edges(); @@ -370,9 +392,13 @@ void SubgraphExtractor::extract_subgraph(std::vector subgraph_output for (const auto& output_edge : subgraph_outputs) { + // for each output edge find the nodes, inputs and initializers that contribute to the value + // produced by this output - "output contributors" + // a sum of all contributors of all outputs is the target subgraph subgraph += discover_output_contributors(output_edge, subgraph); } + // using the subgraph components collected above, modify the underlying GraphProto extract_subgraph_from_onnx_model(subgraph); } @@ -395,6 +421,8 @@ SubgraphExtractor::SubgraphComponents SubgraphExtractor::discover_output_contrib const auto n = nodes_to_visit.top(); nodes_to_visit.pop(); + // if a node has already been visited, return early because it's already marked as + // a node to keep in the final extracted subgraph if (already_visited(n)) { continue; @@ -404,6 +432,8 @@ SubgraphExtractor::SubgraphComponents SubgraphExtractor::discover_output_contrib // check if the visitor reached any of the graph inputs // and/or keep looking for more contributors further up in the graph + + // when an input or initializer is reached, the visitor stops the lookup const auto n_inputs = m_node_inputs.equal_range(n); for (auto input_name = n_inputs.first; input_name != n_inputs.second; ++input_name) { @@ -423,6 +453,8 @@ SubgraphExtractor::SubgraphComponents SubgraphExtractor::discover_output_contrib } else { + // if an edge points to another node (source node) it should be visited + // in one of the future iterations nodes_to_visit.push(find_source_node_idx(m_onnx_graph, n, input_name->second)); } } diff --git a/ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.hpp b/ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.hpp new file mode 100644 index 00000000000000..55220d23ad1a9d --- /dev/null +++ b/ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.hpp @@ -0,0 +1,104 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include + +#include "onnx_editor/editor_types.hpp" + +namespace ONNX_NAMESPACE +{ + class GraphProto; + class NodeProto; + class ValueInfoProto; +} // namespace ONNX_NAMESPACE + +namespace ngraph +{ + namespace onnx_editor + { + /// \brief Subgraph extraction helper structure + struct SubgraphExtractor + { + SubgraphExtractor(ONNX_NAMESPACE::GraphProto& graph); + + /// \brief Adds new inputs to the graph and connects them to the nodes indicated by + /// the provided input edges. + void add_new_inputs(const std::vector& new_inputs); + + /// \brief Adds new outputs to the graph with the same name as the nodes pointed to + /// by the input edges "new_outputs". + void add_new_outputs(const std::vector& new_outputs); + + /// \brief Extracts the final subgraph by traversing the original model bottom-up + /// starting at each of the provided output edges. The extracted subgraph + /// contains all previously added inputs and potentially a subset of original + /// model's inputs that contribute to the value calculated in the output tensors. + /// In the end the underlying GraphProto is modified and obsolete elements + /// are discarded after this method call has finished. + /// + /// \param subgraph_outputs A list of expected outputs of the extracted subgraph. + void extract_subgraph(std::vector subgraph_outputs); + + /// \brief Represents a subgraph of an ONNX model by holding a subset of nodes, inputs, + /// outputs and initializers of the original graph. Objects of this struct can be + /// merged into other instances using the += operator to build a subgraph from + /// smaller clusters. + struct SubgraphComponents + { + SubgraphComponents() = default; + SubgraphComponents(const SubgraphComponents&) = delete; + SubgraphComponents(SubgraphComponents&&) = default; + SubgraphComponents& operator=(const SubgraphComponents&) = delete; + SubgraphComponents& operator=(SubgraphComponents&&) = default; + + std::set nodes; + std::set inputs; + std::set initializers; + std::set outputs; + + SubgraphComponents& operator+=(SubgraphComponents&& other) + { + nodes.insert(other.nodes.begin(), other.nodes.end()); + inputs.insert(other.inputs.begin(), other.inputs.end()); + initializers.insert(other.initializers.begin(), other.initializers.end()); + outputs.insert(other.outputs.begin(), other.outputs.end()); + return *this; + } + }; + + private: + ONNX_NAMESPACE::GraphProto& m_onnx_graph; + + // Graph traversal helper: node index -> node inputs (one-to-many) + std::unordered_multimap m_node_inputs; + // Number of consumers of all tensors in the graph + std::map m_tensor_consumers; + + /// \brief Replaces the old input edge with a new one in the helper struct. + /// This is used by the output contributors discovery. + void replace_input_edge(const InputEdge& old_edge, const InputEdge& new_edge); + + /// \brief Returns a list of edges of each outputs of the graph "m_onnx_graph" + std::vector all_output_edges() const; + + /// \brief Traverses the graph bottom-up and collects all nodes, inputs and initializers + /// that contribute to an output designated by the provided output edge. + /// A sum of such SubgraphComponents objects forms a target extracted subgraph. + SubgraphComponents + discover_output_contributors(const OutputEdge& output_edge, + const SubgraphComponents& already_collected) const; + + /// \brief Modifies the underlying GraphProto object and discards all obsolete elements. + /// + /// \param subgraph An object describing the subgraph to be extracted (elems to be kept) + void extract_subgraph_from_onnx_model(const SubgraphComponents& subgraph); + }; + } // namespace onnx_editor +} // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/editor/editor.cpp b/ngraph/frontend/onnx_editor/src/editor.cpp similarity index 85% rename from ngraph/frontend/onnx_import/src/editor/editor.cpp rename to ngraph/frontend/onnx_editor/src/editor.cpp index 48341bead75184..a1dd02c9e9e625 100644 --- a/ngraph/frontend/onnx_import/src/editor/editor.cpp +++ b/ngraph/frontend/onnx_editor/src/editor.cpp @@ -1,27 +1,16 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include #include +#include "detail/subgraph_extraction.hpp" #include "ngraph/log.hpp" -#include "onnx_import/editor/editor.hpp" -#include "utils/common.hpp" -#include "utils/parser.hpp" +#include "onnx_common/parser.hpp" +#include "onnx_common/utils.hpp" +#include "onnx_editor/editor.hpp" using namespace ngraph; @@ -158,6 +147,12 @@ namespace } } + template + std::string extract_name(const T& input_or_initializer) + { + return input_or_initializer.name(); + }; + void modify_initializer(TensorProto& initializer, const std::string& name, const std::shared_ptr values, @@ -181,9 +176,8 @@ namespace initializer.add_dims(dim); } - const auto data_size_in_bytes = - shape_size(values->get_shape()) * - onnx_import::common::get_onnx_data_size(initializer.data_type()); + const auto data_size_in_bytes = shape_size(values->get_shape()) * + onnx_common::get_onnx_data_size(initializer.data_type()); initializer.set_raw_data(values->get_data_ptr(), data_size_in_bytes); // update input with type and shape of initializer @@ -199,23 +193,17 @@ namespace tensor_type->set_elem_type(initializer.data_type()); } } - - template - std::string extract_name(const T& input_or_initializer) - { - return input_or_initializer.name(); - }; } // namespace /// \brief A helper class used to hold the ModelProto object as its field -struct onnx_import::ONNXModelEditor::Impl +struct onnx_editor::ONNXModelEditor::Impl { ONNX_NAMESPACE::ModelProto m_model_proto; Impl() = delete; Impl(const std::string& model_path) - : m_model_proto{std::move(parse_from_file(model_path))} + : m_model_proto{std::move(onnx_common::parse_from_file(model_path))} { } @@ -223,23 +211,23 @@ struct onnx_import::ONNXModelEditor::Impl void remove_shape_inference_info() { m_model_proto.mutable_graph()->clear_value_info(); } }; -onnx_import::ONNXModelEditor::ONNXModelEditor(const std::string& model_path) +onnx_editor::ONNXModelEditor::ONNXModelEditor(const std::string& model_path) : m_pimpl{new ONNXModelEditor::Impl{model_path}, [](Impl* impl) { delete impl; }} , m_model_path{model_path} { } -ONNX_NAMESPACE::ModelProto& onnx_import::ONNXModelEditor::model() const +ONNX_NAMESPACE::ModelProto& onnx_editor::ONNXModelEditor::model() const { return m_pimpl->m_model_proto; } -const std::string& onnx_import::ONNXModelEditor::model_path() const +const std::string& onnx_editor::ONNXModelEditor::model_path() const { return m_model_path; } -void onnx_import::ONNXModelEditor::serialize(const std::string& out_file_path) const +void onnx_editor::ONNXModelEditor::serialize(const std::string& out_file_path) const { std::ofstream out_file{out_file_path, std::ios::out | std::ios::binary}; @@ -258,7 +246,7 @@ void onnx_import::ONNXModelEditor::serialize(const std::string& out_file_path) c } } -void onnx_import::ONNXModelEditor::set_input_types( +void onnx_editor::ONNXModelEditor::set_input_types( const std::map& input_types) { auto* onnx_graph = m_pimpl->m_model_proto.mutable_graph(); @@ -272,14 +260,14 @@ void onnx_import::ONNXModelEditor::set_input_types( } else { - throw ngraph_error("Could not set a custom element type for input: " + - input_desc.first + - ". Such input was not found in the original ONNX model."); + throw ngraph_error( + "Could not set a custom element type for input: " + input_desc.first + + ". Such input was not found in the original ONNX model."); } } } -void onnx_import::ONNXModelEditor::set_input_shapes( +void onnx_editor::ONNXModelEditor::set_input_shapes( const std::map& input_shapes) { auto* onnx_graph = m_pimpl->m_model_proto.mutable_graph(); @@ -299,35 +287,7 @@ void onnx_import::ONNXModelEditor::set_input_shapes( } } -void onnx_import::ONNXModelEditor::set_input_values( - const std::map>& input_values) -{ - auto onnx_graph = m_pimpl->m_model_proto.mutable_graph(); - - for (const auto& input : input_values) - { - auto& name = input.first; - auto& values = input.second; - - auto onnx_input = find_graph_input(*onnx_graph, name); - auto onnx_initializer = find_graph_initializer(*onnx_graph, name); - - if (!onnx_initializer && !onnx_input) - { - NGRAPH_INFO << "There is no input nor initializer named '" << name - << "' in original model '" << m_model_path << "'."; - } - - if (!onnx_initializer) - { - onnx_initializer = onnx_graph->add_initializer(); - } - - modify_initializer(*onnx_initializer, name, values, onnx_input); - } -} - -void onnx_import::ONNXModelEditor::cut_graph_fragment(const std::vector& inputs, +void onnx_editor::ONNXModelEditor::cut_graph_fragment(const std::vector& inputs, const std::vector& outputs) { if (inputs.empty() && outputs.empty()) @@ -345,7 +305,7 @@ void onnx_import::ONNXModelEditor::cut_graph_fragment(const std::vectorremove_shape_inference_info(); } -std::vector onnx_import::ONNXModelEditor::model_inputs() const +std::vector onnx_editor::ONNXModelEditor::model_inputs() const { const auto& graph = m_pimpl->m_model_proto.graph(); @@ -365,17 +325,45 @@ std::vector onnx_import::ONNXModelEditor::model_inputs() const return inputs_and_initializers; } -std::string onnx_import::ONNXModelEditor::model_string() const +std::string onnx_editor::ONNXModelEditor::model_string() const { return m_pimpl->m_model_proto.SerializeAsString(); } +void onnx_editor::ONNXModelEditor::set_input_values( + const std::map>& input_values) +{ + auto onnx_graph = m_pimpl->m_model_proto.mutable_graph(); + + for (const auto& input : input_values) + { + auto& name = input.first; + auto& values = input.second; + + auto onnx_input = find_graph_input(*onnx_graph, name); + auto onnx_initializer = find_graph_initializer(*onnx_graph, name); + + if (!onnx_initializer && !onnx_input) + { + NGRAPH_INFO << "There is no input nor initializer named '" << name + << "' in original model '" << m_model_path << "'."; + } + + if (!onnx_initializer) + { + onnx_initializer = onnx_graph->add_initializer(); + } + + modify_initializer(*onnx_initializer, name, values, onnx_input); + } +} + namespace { const auto is_equal_to = +[](const std::string& other) { return [&](const std::string& s) { return s == other; }; }; } -int onnx_import::ONNXModelEditor::find_producing_node_idx(const std::string& tensorName) const +int onnx_editor::ONNXModelEditor::find_producing_node_idx(const std::string& tensorName) const { const auto& graph = m_pimpl->m_model_proto.graph(); @@ -396,7 +384,7 @@ int onnx_import::ONNXModelEditor::find_producing_node_idx(const std::string& ten } -std::vector onnx_import::ONNXModelEditor::find_consumeing_node_idxs(const std::string& tensorName) const { +std::vector onnx_editor::ONNXModelEditor::find_consumeing_node_idxs(const std::string& tensorName) const { const auto &graph = m_pimpl->m_model_proto.graph(); std::vector result; for (int i = 0; i < graph.node_size(); ++i) { @@ -411,7 +399,7 @@ std::vector onnx_import::ONNXModelEditor::find_consumeing_node_idxs(const s return result; } -bool onnx_import::ONNXModelEditor::validate_tensor_name(const std::string& tensorName) const { +bool onnx_editor::ONNXModelEditor::validate_tensor_name(const std::string& tensorName) const { const auto &graph = m_pimpl->m_model_proto.graph(); for (int i = 0; i < graph.node_size(); ++i) { const auto &outputs = graph.node(i).output(); diff --git a/ngraph/frontend/onnx_import/CMakeLists.txt b/ngraph/frontend/onnx_import/CMakeLists.txt index ed7726de263d9f..9f728a3f7e808c 100644 --- a/ngraph/frontend/onnx_import/CMakeLists.txt +++ b/ngraph/frontend/onnx_import/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** set(ONNX_OPSET_VERSION 13 CACHE INTERNAL "Supported version of ONNX operator set") @@ -47,6 +35,8 @@ source_group("public include" FILES ${LIBRARY_PUBLIC_HEADERS}) add_library(onnx_importer SHARED ${LIBRARY_SRC} ${LIBRARY_HEADERS} ${LIBRARY_PUBLIC_HEADERS}) add_library(ngraph::onnx_importer ALIAS onnx_importer) +add_clang_format_target(onnx_importer_clang FOR_TARGETS onnx_importer) + if(COMMAND ie_add_vs_version_file) ie_add_vs_version_file(NAME onnx_importer FILEDESCRIPTION "nGraph ONNX importer library") @@ -59,16 +49,15 @@ if(COMMAND ie_faster_build) ) endif() -target_link_libraries(onnx_importer PRIVATE onnx onnx_proto ${Protobuf_LIBRARIES} ngraph::builder - PUBLIC ngraph) +target_link_libraries(onnx_importer PRIVATE onnx_common ngraph::builder + PUBLIC ngraph) set(ONNX_INSTALL_INCLUDE "${NGRAPH_INSTALL_INCLUDE}/ngraph/frontend") target_include_directories(onnx_importer SYSTEM PUBLIC $ $) -target_include_directories(onnx_importer SYSTEM PRIVATE ${NGRAPH_INCLUDE_PATH} - ${ONNX_INCLUDE_DIR} ${ONNX_PROTO_INCLUDE_DIR} ${Protobuf_INCLUDE_DIRS}) -target_include_directories(onnx_importer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) +target_include_directories(onnx_importer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src + ${NGRAPH_INCLUDE_PATH} ${Protobuf_INCLUDE_DIRS}) target_compile_definitions(onnx_importer PRIVATE ONNX_OPSET_VERSION=${ONNX_OPSET_VERSION}) @@ -95,7 +84,6 @@ install(DIRECTORY ${ONNX_IMPORT_INCLUDE_DIR}/onnx_import PATTERN "*.h" ) - if (NGRAPH_EXPORT_TARGETS_ENABLE) export(TARGETS onnx_importer NAMESPACE ngraph:: APPEND FILE "${NGRAPH_TARGETS_FILE}") endif() diff --git a/ngraph/frontend/onnx_import/include/onnx_import/core/node.hpp b/ngraph/frontend/onnx_import/include/onnx_import/core/node.hpp index 8f832699216b95..32913e3a411947 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/core/node.hpp +++ b/ngraph/frontend/onnx_import/include/onnx_import/core/node.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/include/onnx_import/core/operator_set.hpp b/ngraph/frontend/onnx_import/include/onnx_import/core/operator_set.hpp index b8f2af07cf1b3e..82f157e00ef9ac 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/core/operator_set.hpp +++ b/ngraph/frontend/onnx_import/include/onnx_import/core/operator_set.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/include/onnx_import/onnx.hpp b/ngraph/frontend/onnx_import/include/onnx_import/onnx.hpp index 0ab60ff37bc4a1..04e6be0cdd527a 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/onnx.hpp +++ b/ngraph/frontend/onnx_import/include/onnx_import/onnx.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -22,7 +10,6 @@ #include #include -#include "editor/editor.hpp" #include "ngraph/function.hpp" #include "utils/onnx_importer_visibility.hpp" @@ -85,16 +72,6 @@ namespace ngraph /// \return An nGraph function that represents a single output from the created graph. ONNX_IMPORTER_API std::shared_ptr import_onnx_model(const std::string& file_path); - - /// \brief Imports an ONNX model modified by the ONNXModelEditor wrapper. - /// - /// \note Refer to the ONNXModelEditor documentation for available modifications. - /// - /// \param[in] model_editor Reference to the model editor object instance. - /// - /// \return An nGraph function representing the previously modified ONNX model. - ONNX_IMPORTER_API - std::shared_ptr import_onnx_model(const ONNXModelEditor& model_editor); } // namespace onnx_import } // namespace ngraph diff --git a/ngraph/frontend/onnx_import/include/onnx_import/onnx_utils.hpp b/ngraph/frontend/onnx_import/include/onnx_import/onnx_utils.hpp index 67f0a474f16039..c3998c3c24fa01 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/onnx_utils.hpp +++ b/ngraph/frontend/onnx_import/include/onnx_import/onnx_utils.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp b/ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp index 0a45fa72ab5781..7187fc2bb088ca 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp +++ b/ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/visibility.hpp" diff --git a/ngraph/frontend/onnx_import/src/core/attribute.cpp b/ngraph/frontend/onnx_import/src/core/attribute.cpp index 13635826c1c8c5..950a8494fb751b 100644 --- a/ngraph/frontend/onnx_import/src/core/attribute.cpp +++ b/ngraph/frontend/onnx_import/src/core/attribute.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "core/attribute.hpp" #include "core/graph.hpp" diff --git a/ngraph/frontend/onnx_import/src/core/attribute.hpp b/ngraph/frontend/onnx_import/src/core/attribute.hpp index 1152405a29322d..4c86ba2ba11f5f 100644 --- a/ngraph/frontend/onnx_import/src/core/attribute.hpp +++ b/ngraph/frontend/onnx_import/src/core/attribute.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/core/graph.cpp b/ngraph/frontend/onnx_import/src/core/graph.cpp index 2d2f1e77ade374..f1e73b8a4cbc05 100644 --- a/ngraph/frontend/onnx_import/src/core/graph.cpp +++ b/ngraph/frontend/onnx_import/src/core/graph.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -277,15 +265,7 @@ namespace ngraph break; } - auto onnx_node_name = onnx_node.get_name(); - if (onnx_node_name.empty()) - { - ng_node_vector[i].get_node()->set_friendly_name(onnx_node.output(i)); - } - else - { - ng_node_vector[i].get_node()->set_friendly_name(onnx_node.get_name()); - } + ng_node_vector[i].get_node()->set_friendly_name(onnx_node.output(i)); // null node does not have tensor if (!ngraph::op::is_null(ng_node_vector[i])) diff --git a/ngraph/frontend/onnx_import/src/core/graph.hpp b/ngraph/frontend/onnx_import/src/core/graph.hpp index 599ba342ea1e63..405bfe94f31d04 100644 --- a/ngraph/frontend/onnx_import/src/core/graph.hpp +++ b/ngraph/frontend/onnx_import/src/core/graph.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/core/graph_cache.cpp b/ngraph/frontend/onnx_import/src/core/graph_cache.cpp index 579b1e68eabe4f..9a0e0b59bbc42e 100644 --- a/ngraph/frontend/onnx_import/src/core/graph_cache.cpp +++ b/ngraph/frontend/onnx_import/src/core/graph_cache.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/core/graph_cache.hpp b/ngraph/frontend/onnx_import/src/core/graph_cache.hpp index 0c383bd3f14718..bdf3a890bd482d 100644 --- a/ngraph/frontend/onnx_import/src/core/graph_cache.hpp +++ b/ngraph/frontend/onnx_import/src/core/graph_cache.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/core/model.cpp b/ngraph/frontend/onnx_import/src/core/model.cpp index 9fd122cbb6e792..0878b9c146386f 100644 --- a/ngraph/frontend/onnx_import/src/core/model.cpp +++ b/ngraph/frontend/onnx_import/src/core/model.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/core/model.hpp b/ngraph/frontend/onnx_import/src/core/model.hpp index 9efd48c53b8173..e17d9e1689c7de 100644 --- a/ngraph/frontend/onnx_import/src/core/model.hpp +++ b/ngraph/frontend/onnx_import/src/core/model.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/core/node.cpp b/ngraph/frontend/onnx_import/src/core/node.cpp index 6b8b33979e6d0b..207982ef3b1c33 100644 --- a/ngraph/frontend/onnx_import/src/core/node.cpp +++ b/ngraph/frontend/onnx_import/src/core/node.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/core/null_node.cpp b/ngraph/frontend/onnx_import/src/core/null_node.cpp index 9d72f214128277..eaaa1307b6ca2d 100644 --- a/ngraph/frontend/onnx_import/src/core/null_node.cpp +++ b/ngraph/frontend/onnx_import/src/core/null_node.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/core/null_node.hpp b/ngraph/frontend/onnx_import/src/core/null_node.hpp index a8276660c02600..cd386014fa2cac 100644 --- a/ngraph/frontend/onnx_import/src/core/null_node.hpp +++ b/ngraph/frontend/onnx_import/src/core/null_node.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/core/tensor.hpp b/ngraph/frontend/onnx_import/src/core/tensor.hpp index b429d41a4a1207..069d11a9cf88de 100644 --- a/ngraph/frontend/onnx_import/src/core/tensor.hpp +++ b/ngraph/frontend/onnx_import/src/core/tensor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -23,6 +11,7 @@ #include "ngraph/op/constant.hpp" #include "ngraph/shape.hpp" #include "ngraph/type/element_type.hpp" +#include "onnx_common/utils.hpp" #include "utils/common.hpp" #include "utils/tensor_external_data.hpp" @@ -137,8 +126,8 @@ namespace ngraph auto it = reinterpret_cast(raw_data.data()); return std::vector( it, - it + - (raw_data.size() / common::get_onnx_data_size(onnx_data_type))); + it + (raw_data.size() / + onnx_common::get_onnx_data_size(onnx_data_type))); } template diff --git a/ngraph/frontend/onnx_import/src/core/transform.cpp b/ngraph/frontend/onnx_import/src/core/transform.cpp index 10567b4a7b8d2a..119a602ef30bd4 100644 --- a/ngraph/frontend/onnx_import/src/core/transform.cpp +++ b/ngraph/frontend/onnx_import/src/core/transform.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/core/transform.hpp b/ngraph/frontend/onnx_import/src/core/transform.hpp index f2b5f579f40a58..526b0654e2b7d9 100644 --- a/ngraph/frontend/onnx_import/src/core/transform.hpp +++ b/ngraph/frontend/onnx_import/src/core/transform.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -54,9 +42,11 @@ namespace ngraph void expand_onnx_functions(ONNX_NAMESPACE::ModelProto& model_proto); static const std::vector legacy_ops_to_fixup = { + "DeformableConv2D", "DetectionOutput", "ExperimentalDetectronDetectionOutput", "ExperimentalDetectronGenerateProposalsSingleImage", + "ExperimentalDetectronGroupNorm", "ExperimentalDetectronPriorGridGenerator", "ExperimentalDetectronROIFeatureExtractor", "ExperimentalDetectronTopKROIs", diff --git a/ngraph/frontend/onnx_import/src/core/value_info.hpp b/ngraph/frontend/onnx_import/src/core/value_info.hpp index 961b4357c01b1e..67f2c5f7e2b779 100644 --- a/ngraph/frontend/onnx_import/src/core/value_info.hpp +++ b/ngraph/frontend/onnx_import/src/core/value_info.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/default_opset.hpp b/ngraph/frontend/onnx_import/src/default_opset.hpp index f6c4eb75792a80..c06c5124276a34 100644 --- a/ngraph/frontend/onnx_import/src/default_opset.hpp +++ b/ngraph/frontend/onnx_import/src/default_opset.hpp @@ -1,3 +1,7 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + #include "ngraph/opsets/opset6.hpp" namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/exceptions.cpp b/ngraph/frontend/onnx_import/src/exceptions.cpp index 7cc8bcc0e7e73f..5907ba12553a90 100644 --- a/ngraph/frontend/onnx_import/src/exceptions.cpp +++ b/ngraph/frontend/onnx_import/src/exceptions.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/exceptions.hpp b/ngraph/frontend/onnx_import/src/exceptions.hpp index 264cd35630fe3e..f9b25d09ba45e5 100644 --- a/ngraph/frontend/onnx_import/src/exceptions.hpp +++ b/ngraph/frontend/onnx_import/src/exceptions.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/onnx.cpp b/ngraph/frontend/onnx_import/src/onnx.cpp index be6c35a6301c0f..0027d99ae740a1 100644 --- a/ngraph/frontend/onnx_import/src/onnx.cpp +++ b/ngraph/frontend/onnx_import/src/onnx.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -21,9 +9,9 @@ #include "core/model.hpp" #include "core/transform.hpp" #include "ngraph/except.hpp" +#include "onnx_common/parser.hpp" #include "onnx_import/onnx.hpp" #include "ops_bridge.hpp" -#include "utils/parser.hpp" namespace ngraph { @@ -60,7 +48,7 @@ namespace ngraph std::shared_ptr import_onnx_model(std::istream& stream, const std::string& model_path) { - ONNX_NAMESPACE::ModelProto model_proto{parse_from_istream(stream)}; + ONNX_NAMESPACE::ModelProto model_proto{onnx_common::parse_from_istream(stream)}; return detail::import_onnx_model(model_proto, model_path); } @@ -78,10 +66,10 @@ namespace ngraph return import_onnx_model(model_stream, file_path); } - std::shared_ptr import_onnx_model(const ONNXModelEditor& model_editor) - { - return detail::import_onnx_model(model_editor.model(), model_editor.model_path()); - } +// std::shared_ptr import_onnx_model(const ONNXModelEditor& model_editor) +// { +// return detail::import_onnx_model(model_editor.model(), model_editor.model_path()); +// } std::set get_supported_operators(std::int64_t version, const std::string& domain) diff --git a/ngraph/frontend/onnx_import/src/onnx_utils.cpp b/ngraph/frontend/onnx_import/src/onnx_utils.cpp index bf23607b04ae4f..bdefca8ec4ba4f 100644 --- a/ngraph/frontend/onnx_import/src/onnx_utils.cpp +++ b/ngraph/frontend/onnx_import/src/onnx_utils.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "onnx_import/onnx_utils.hpp" #include "ops_bridge.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/abs.hpp b/ngraph/frontend/onnx_import/src/op/abs.hpp index ea686445f0ce3d..d37314f8d774b5 100644 --- a/ngraph/frontend/onnx_import/src/op/abs.hpp +++ b/ngraph/frontend/onnx_import/src/op/abs.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/acos.hpp b/ngraph/frontend/onnx_import/src/op/acos.hpp index b25fbda1198998..74c447bc62bde8 100644 --- a/ngraph/frontend/onnx_import/src/op/acos.hpp +++ b/ngraph/frontend/onnx_import/src/op/acos.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/acosh.hpp b/ngraph/frontend/onnx_import/src/op/acosh.hpp index 0ef88a0e425653..40fdfc8740dbee 100644 --- a/ngraph/frontend/onnx_import/src/op/acosh.hpp +++ b/ngraph/frontend/onnx_import/src/op/acosh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/add.cpp b/ngraph/frontend/onnx_import/src/op/add.cpp index ea2e2355dd4fc4..a88308956f0e23 100644 --- a/ngraph/frontend/onnx_import/src/op/add.cpp +++ b/ngraph/frontend/onnx_import/src/op/add.cpp @@ -1,21 +1,10 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/add.hpp" #include "default_opset.hpp" +#include "ngraph/builder/autobroadcast.hpp" #include "ngraph/shape.hpp" namespace ngraph @@ -30,17 +19,19 @@ namespace ngraph { const Output lhs_node = node.get_ng_inputs().at(0); Output rhs_node = node.get_ng_inputs().at(1); - bool broadcast = node.get_attribute_value("broadcast", 0); + const bool broadcast = node.get_attribute_value("broadcast", 0); if (broadcast) { if (node.has_attribute("axis")) { // Unidirectional broadcast right node to left shape. - auto axis = node.get_attribute_value("axis"); + const auto axis = node.get_attribute_value("axis"); + const auto axes_mapping = builder::opset1::get_axes_mapping_output( + lhs_node.get_partial_shape(), rhs_node.get_partial_shape(), axis); rhs_node = std::make_shared( rhs_node, std::make_shared(lhs_node), - default_opset::Constant::create(element::i64, Shape{1}, {axis})); + axes_mapping); } else { diff --git a/ngraph/frontend/onnx_import/src/op/add.hpp b/ngraph/frontend/onnx_import/src/op/add.hpp index 081c82d4fb0945..53ecac175b75cf 100644 --- a/ngraph/frontend/onnx_import/src/op/add.hpp +++ b/ngraph/frontend/onnx_import/src/op/add.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/and.hpp b/ngraph/frontend/onnx_import/src/op/and.hpp index a0cb621678e9fd..482289457b8641 100644 --- a/ngraph/frontend/onnx_import/src/op/and.hpp +++ b/ngraph/frontend/onnx_import/src/op/and.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/argmax.cpp b/ngraph/frontend/onnx_import/src/op/argmax.cpp index 3335bda9cc5a7c..e91983528e20b3 100644 --- a/ngraph/frontend/onnx_import/src/op/argmax.cpp +++ b/ngraph/frontend/onnx_import/src/op/argmax.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "exceptions.hpp" #include "onnx_import/core/node.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/argmax.hpp b/ngraph/frontend/onnx_import/src/op/argmax.hpp index 603b6ed444440d..8ca7f99e5c3140 100644 --- a/ngraph/frontend/onnx_import/src/op/argmax.hpp +++ b/ngraph/frontend/onnx_import/src/op/argmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/argmin.cpp b/ngraph/frontend/onnx_import/src/op/argmin.cpp index 1dadffbd61ec99..983a8dae8ca099 100644 --- a/ngraph/frontend/onnx_import/src/op/argmin.cpp +++ b/ngraph/frontend/onnx_import/src/op/argmin.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "exceptions.hpp" #include "onnx_import/core/node.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/argmin.hpp b/ngraph/frontend/onnx_import/src/op/argmin.hpp index 247a4e105266f3..ba4ddaa010c443 100644 --- a/ngraph/frontend/onnx_import/src/op/argmin.hpp +++ b/ngraph/frontend/onnx_import/src/op/argmin.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/asin.hpp b/ngraph/frontend/onnx_import/src/op/asin.hpp index e317abc4a48d81..afde6e9361e21e 100644 --- a/ngraph/frontend/onnx_import/src/op/asin.hpp +++ b/ngraph/frontend/onnx_import/src/op/asin.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/asinh.hpp b/ngraph/frontend/onnx_import/src/op/asinh.hpp index 3514400fb181db..278defc54b64b8 100644 --- a/ngraph/frontend/onnx_import/src/op/asinh.hpp +++ b/ngraph/frontend/onnx_import/src/op/asinh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/atan.hpp b/ngraph/frontend/onnx_import/src/op/atan.hpp index 0a46b318208ca7..450ee31ada2353 100644 --- a/ngraph/frontend/onnx_import/src/op/atan.hpp +++ b/ngraph/frontend/onnx_import/src/op/atan.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/atanh.hpp b/ngraph/frontend/onnx_import/src/op/atanh.hpp index e05905bccb466b..406ec844231fcb 100644 --- a/ngraph/frontend/onnx_import/src/op/atanh.hpp +++ b/ngraph/frontend/onnx_import/src/op/atanh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/average_pool.cpp b/ngraph/frontend/onnx_import/src/op/average_pool.cpp index 62033f176e9069..bbc0e82a0bc42c 100644 --- a/ngraph/frontend/onnx_import/src/op/average_pool.cpp +++ b/ngraph/frontend/onnx_import/src/op/average_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/average_pool.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/average_pool.hpp b/ngraph/frontend/onnx_import/src/op/average_pool.hpp index fb046f5cb0d209..746a5ce3bcc49d 100644 --- a/ngraph/frontend/onnx_import/src/op/average_pool.hpp +++ b/ngraph/frontend/onnx_import/src/op/average_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/batch_norm.cpp b/ngraph/frontend/onnx_import/src/op/batch_norm.cpp index 04c54208088857..c338e527020c78 100644 --- a/ngraph/frontend/onnx_import/src/op/batch_norm.cpp +++ b/ngraph/frontend/onnx_import/src/op/batch_norm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/batch_norm.hpp b/ngraph/frontend/onnx_import/src/op/batch_norm.hpp index 0fce240e185f5f..9fa2623d02e108 100644 --- a/ngraph/frontend/onnx_import/src/op/batch_norm.hpp +++ b/ngraph/frontend/onnx_import/src/op/batch_norm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/bitshift.cpp b/ngraph/frontend/onnx_import/src/op/bitshift.cpp new file mode 100644 index 00000000000000..fe0ff0749f7a4b --- /dev/null +++ b/ngraph/frontend/onnx_import/src/op/bitshift.cpp @@ -0,0 +1,55 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "op/bitshift.hpp" +#include "default_opset.hpp" +#include "exceptions.hpp" +#include "ngraph/shape.hpp" + +namespace ngraph +{ + namespace onnx_import + { + namespace op + { + namespace set_1 + { + OutputVector bitshift(const Node& node) + { + const Output input_x = node.get_ng_inputs().at(0); + const Output input_y = node.get_ng_inputs().at(1); + + std::string direction = node.get_attribute_value("direction", ""); + + CHECK_VALID_NODE(node, + !direction.empty(), + "Required attribute 'direction' is not specified."); + + CHECK_VALID_NODE(node, + direction == "LEFT" || direction == "RIGHT", + "Only values 'LEFT' and 'RIGHT' are supported for 'direction' " + "attribute. Given: ", + direction); + + auto shift = std::make_shared( + default_opset::Constant::create(input_y.get_element_type(), Shape{1}, {2}), + input_y); + + if (direction == "RIGHT") + { + return {std::make_shared(input_x, shift)}; + } + else + { + return {std::make_shared(input_x, shift)}; + } + } + + } // namespace set_1 + + } // namespace op + + } // namespace onnx_import + +} // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/op/bitshift.hpp b/ngraph/frontend/onnx_import/src/op/bitshift.hpp new file mode 100644 index 00000000000000..b7ecd84c1c32b2 --- /dev/null +++ b/ngraph/frontend/onnx_import/src/op/bitshift.hpp @@ -0,0 +1,28 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include "ngraph/node.hpp" +#include "onnx_import/core/node.hpp" + +namespace ngraph +{ + namespace onnx_import + { + namespace op + { + namespace set_1 + { + OutputVector bitshift(const Node& node); + + } // namespace set_1 + + } // namespace op + + } // namespace onnx_import + +} // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/op/cast.cpp b/ngraph/frontend/onnx_import/src/op/cast.cpp index 3017d1a6530618..6a3891286c8ae6 100644 --- a/ngraph/frontend/onnx_import/src/op/cast.cpp +++ b/ngraph/frontend/onnx_import/src/op/cast.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/cast.hpp b/ngraph/frontend/onnx_import/src/op/cast.hpp index 913da19c3a78c1..216174d4c2dc05 100644 --- a/ngraph/frontend/onnx_import/src/op/cast.hpp +++ b/ngraph/frontend/onnx_import/src/op/cast.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/ceil.hpp b/ngraph/frontend/onnx_import/src/op/ceil.hpp index 4fe50dadde96ef..3a0b46ee5b79b8 100644 --- a/ngraph/frontend/onnx_import/src/op/ceil.hpp +++ b/ngraph/frontend/onnx_import/src/op/ceil.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/clip.cpp b/ngraph/frontend/onnx_import/src/op/clip.cpp index 4c3d6d40614a92..819af6fc579641 100644 --- a/ngraph/frontend/onnx_import/src/op/clip.cpp +++ b/ngraph/frontend/onnx_import/src/op/clip.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/clip.hpp b/ngraph/frontend/onnx_import/src/op/clip.hpp index b4a62c2e261c98..65f2300a3139f1 100644 --- a/ngraph/frontend/onnx_import/src/op/clip.hpp +++ b/ngraph/frontend/onnx_import/src/op/clip.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/concat.cpp b/ngraph/frontend/onnx_import/src/op/concat.cpp index e2fd35ce8c3d1b..b151981e168ae3 100644 --- a/ngraph/frontend/onnx_import/src/op/concat.cpp +++ b/ngraph/frontend/onnx_import/src/op/concat.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/concat.hpp b/ngraph/frontend/onnx_import/src/op/concat.hpp index f8051bdcdc8f4e..a2445eeb1f4cdd 100644 --- a/ngraph/frontend/onnx_import/src/op/concat.hpp +++ b/ngraph/frontend/onnx_import/src/op/concat.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/constant.cpp b/ngraph/frontend/onnx_import/src/op/constant.cpp index 75c2c407bd81d7..1ae150d39a6637 100644 --- a/ngraph/frontend/onnx_import/src/op/constant.cpp +++ b/ngraph/frontend/onnx_import/src/op/constant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/constant.hpp" #include "core/tensor.hpp" @@ -42,9 +30,14 @@ namespace ngraph } catch (const ngraph::ngraph_error& exc) { - NGRAPH_WARN << "Could not create an nGraph Constant for an ONNX " - "Constant node. Detailed error:\n" - << exc.what(); + NGRAPH_WARN + << "\nCould not create an nGraph Constant for an ONNX Constant " + "node. " + << "Constant with a 0 value was created instead.\n" + << "Verify if the ONNX Constant node contains a correct number of " + "elements matching the node's shape. \n" + << "Detailed error:\n" + << exc.what(); constant = std::make_shared(type, Shape{}, 0); } diff --git a/ngraph/frontend/onnx_import/src/op/constant.hpp b/ngraph/frontend/onnx_import/src/op/constant.hpp index 71694539c6a003..530ac4400096d7 100644 --- a/ngraph/frontend/onnx_import/src/op/constant.hpp +++ b/ngraph/frontend/onnx_import/src/op/constant.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/constant_of_shape.cpp b/ngraph/frontend/onnx_import/src/op/constant_of_shape.cpp index 8213f6cc70cd1e..f2247cf3ea1a79 100644 --- a/ngraph/frontend/onnx_import/src/op/constant_of_shape.cpp +++ b/ngraph/frontend/onnx_import/src/op/constant_of_shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "core/tensor.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/constant_of_shape.hpp b/ngraph/frontend/onnx_import/src/op/constant_of_shape.hpp index 34bfb29c3afd5b..c0144cd04cfae5 100644 --- a/ngraph/frontend/onnx_import/src/op/constant_of_shape.hpp +++ b/ngraph/frontend/onnx_import/src/op/constant_of_shape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/conv.cpp b/ngraph/frontend/onnx_import/src/op/conv.cpp index 9a52dfdebb043b..4d503dc55be0ac 100644 --- a/ngraph/frontend/onnx_import/src/op/conv.cpp +++ b/ngraph/frontend/onnx_import/src/op/conv.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -80,11 +68,28 @@ namespace ngraph std::shared_ptr add_bias(const Output& ng_conv, const Output& bias) { - const auto rank_of_conv = ng_conv.get_partial_shape().rank().get_length(); - - return {std::make_shared( - ng_conv, - reshape::reshape_channel_shaped_node_to_nchw(bias, rank_of_conv))}; + const auto conv_shape = std::make_shared(ng_conv); + const auto conv_rank = std::make_shared(conv_shape); + + // Prepare tail shape (rank = conv.rank - 2): [1, 1, 1, 1, ... ] + const auto one_const = + default_opset::Constant::create(element::i64, Shape{1}, {1}); + const auto two_const = + default_opset::Constant::create(element::i64, Shape{1}, {2}); + const auto tail_shape_rank = + std::make_shared(conv_rank, two_const); + const auto tail_shape = + std::make_shared(one_const, tail_shape_rank); + + // Construct new bias shape: [1, C, 1, 1, ... ] + const auto C_dim = std::make_shared(bias); + const auto bias_shape = std::make_shared( + OutputVector{one_const, C_dim, tail_shape}, 0); + + const auto reshaped_bias = + std::make_shared(bias, bias_shape, false); + + return {std::make_shared(ng_conv, reshaped_bias)}; } } // namespace @@ -123,11 +128,11 @@ namespace ngraph } else { - const auto bias = inputs.at(2); - const auto bias_ps = bias.get_partial_shape(); + const auto& bias = inputs.at(2); + const auto& bias_ps = bias.get_partial_shape(); - NGRAPH_CHECK(bias_ps.is_static() && is_vector(bias_ps.to_shape()), - "The bias input needs to be a static 1D vector"); + NGRAPH_CHECK(bias_ps.rank().is_static() && bias_ps.rank().get_length() == 1, + "The bias input needs to be 1D vector"); return {add_bias(conv_node, bias)}; } diff --git a/ngraph/frontend/onnx_import/src/op/conv.hpp b/ngraph/frontend/onnx_import/src/op/conv.hpp index e720757fdbb28f..9834eb2be9f284 100644 --- a/ngraph/frontend/onnx_import/src/op/conv.hpp +++ b/ngraph/frontend/onnx_import/src/op/conv.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/conv_integer.cpp b/ngraph/frontend/onnx_import/src/op/conv_integer.cpp index 496bf9a6e7ad5c..bfe245fb623689 100644 --- a/ngraph/frontend/onnx_import/src/op/conv_integer.cpp +++ b/ngraph/frontend/onnx_import/src/op/conv_integer.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/conv_integer.hpp b/ngraph/frontend/onnx_import/src/op/conv_integer.hpp index acf80a4d1ebee0..8725c93accd251 100644 --- a/ngraph/frontend/onnx_import/src/op/conv_integer.hpp +++ b/ngraph/frontend/onnx_import/src/op/conv_integer.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/conv_transpose.cpp b/ngraph/frontend/onnx_import/src/op/conv_transpose.cpp index 3919aaa7043085..9f57a7dea9515b 100644 --- a/ngraph/frontend/onnx_import/src/op/conv_transpose.cpp +++ b/ngraph/frontend/onnx_import/src/op/conv_transpose.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/conv_transpose.hpp b/ngraph/frontend/onnx_import/src/op/conv_transpose.hpp index 0520b40fef817f..5b9ddb5c2a12b2 100644 --- a/ngraph/frontend/onnx_import/src/op/conv_transpose.hpp +++ b/ngraph/frontend/onnx_import/src/op/conv_transpose.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/cos.cpp b/ngraph/frontend/onnx_import/src/op/cos.cpp index 1751ccce71a3f0..7a3b704f065fd9 100644 --- a/ngraph/frontend/onnx_import/src/op/cos.cpp +++ b/ngraph/frontend/onnx_import/src/op/cos.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/cos.hpp b/ngraph/frontend/onnx_import/src/op/cos.hpp index b09225acf258fe..69d8f61605a872 100644 --- a/ngraph/frontend/onnx_import/src/op/cos.hpp +++ b/ngraph/frontend/onnx_import/src/op/cos.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/cosh.cpp b/ngraph/frontend/onnx_import/src/op/cosh.cpp index 1ee3b1d57d4bac..5ec310c91e11f8 100644 --- a/ngraph/frontend/onnx_import/src/op/cosh.cpp +++ b/ngraph/frontend/onnx_import/src/op/cosh.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/cosh.hpp b/ngraph/frontend/onnx_import/src/op/cosh.hpp index ca4fdccabd2954..aedc76f1f03bb8 100644 --- a/ngraph/frontend/onnx_import/src/op/cosh.hpp +++ b/ngraph/frontend/onnx_import/src/op/cosh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/cum_sum.cpp b/ngraph/frontend/onnx_import/src/op/cum_sum.cpp index c69430042a0d5a..ae18d50d266e47 100644 --- a/ngraph/frontend/onnx_import/src/op/cum_sum.cpp +++ b/ngraph/frontend/onnx_import/src/op/cum_sum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/cum_sum.hpp b/ngraph/frontend/onnx_import/src/op/cum_sum.hpp index c4ed1fe559b2bb..e3526ef36eb29c 100644 --- a/ngraph/frontend/onnx_import/src/op/cum_sum.hpp +++ b/ngraph/frontend/onnx_import/src/op/cum_sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/depth_to_space.cpp b/ngraph/frontend/onnx_import/src/op/depth_to_space.cpp index fdf6603882a2e5..a771c30771c428 100644 --- a/ngraph/frontend/onnx_import/src/op/depth_to_space.cpp +++ b/ngraph/frontend/onnx_import/src/op/depth_to_space.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/depth_to_space.hpp" #include "default_opset.hpp" @@ -28,7 +16,9 @@ namespace ngraph OutputVector depth_to_space(const Node& node) { auto data = node.get_ng_inputs().at(0); - NGRAPH_CHECK(data.get_shape().size() == 4, "Input must be 4-dimensional"); + const auto& shape = data.get_partial_shape(); + NGRAPH_CHECK(shape.rank().is_static() && shape.rank().get_length() == 4, + "Input must be 4-dimensional"); const auto mode = node.get_attribute_value("mode", "DCR"); default_opset::DepthToSpace::DepthToSpaceMode ngraph_mode; diff --git a/ngraph/frontend/onnx_import/src/op/depth_to_space.hpp b/ngraph/frontend/onnx_import/src/op/depth_to_space.hpp index 86f76dffde14c9..3f650fff1bcbe6 100644 --- a/ngraph/frontend/onnx_import/src/op/depth_to_space.hpp +++ b/ngraph/frontend/onnx_import/src/op/depth_to_space.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/dequantize_linear.cpp b/ngraph/frontend/onnx_import/src/op/dequantize_linear.cpp index 1cddae5581260b..297b1db4b609c8 100644 --- a/ngraph/frontend/onnx_import/src/op/dequantize_linear.cpp +++ b/ngraph/frontend/onnx_import/src/op/dequantize_linear.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/dequantize_linear.hpp b/ngraph/frontend/onnx_import/src/op/dequantize_linear.hpp index 2c063f28345e33..b18916cbf412d9 100644 --- a/ngraph/frontend/onnx_import/src/op/dequantize_linear.hpp +++ b/ngraph/frontend/onnx_import/src/op/dequantize_linear.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/div.hpp b/ngraph/frontend/onnx_import/src/op/div.hpp index 69cbb79ad7a7f3..8a55d8be3e17ab 100644 --- a/ngraph/frontend/onnx_import/src/op/div.hpp +++ b/ngraph/frontend/onnx_import/src/op/div.hpp @@ -1,24 +1,13 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include #include "default_opset.hpp" +#include "ngraph/builder/autobroadcast.hpp" #include "ngraph/node.hpp" #include "ngraph/shape.hpp" #include "onnx_import/core/node.hpp" @@ -35,17 +24,19 @@ namespace ngraph { const Output lhs_node = node.get_ng_inputs().at(0); Output rhs_node = node.get_ng_inputs().at(1); - bool broadcast = node.get_attribute_value("broadcast", 0); + const bool broadcast = node.get_attribute_value("broadcast", 0); if (broadcast) { if (node.has_attribute("axis")) { // Unidirectional broadcast right node to left shape. - auto axis = node.get_attribute_value("axis"); + const auto axis = node.get_attribute_value("axis"); + const auto axes_mapping = builder::opset1::get_axes_mapping_output( + lhs_node.get_partial_shape(), rhs_node.get_partial_shape(), axis); rhs_node = std::make_shared( rhs_node, std::make_shared(lhs_node), - default_opset::Constant::create(element::i64, Shape{1}, {axis})); + axes_mapping); } else { @@ -68,7 +59,7 @@ namespace ngraph node.get_ng_inputs().at(1))}; } - } // namespace set_1 + } // namespace set_7 } // namespace op diff --git a/ngraph/frontend/onnx_import/src/op/dropout.cpp b/ngraph/frontend/onnx_import/src/op/dropout.cpp index fd4f8f93f133ef..a2fccac1893818 100644 --- a/ngraph/frontend/onnx_import/src/op/dropout.cpp +++ b/ngraph/frontend/onnx_import/src/op/dropout.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/dropout.hpp b/ngraph/frontend/onnx_import/src/op/dropout.hpp index a1a083cb71912f..5544f0c3e073c4 100644 --- a/ngraph/frontend/onnx_import/src/op/dropout.hpp +++ b/ngraph/frontend/onnx_import/src/op/dropout.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/elu.cpp b/ngraph/frontend/onnx_import/src/op/elu.cpp index 33887ef94d4d9a..a33eecd318bce1 100644 --- a/ngraph/frontend/onnx_import/src/op/elu.cpp +++ b/ngraph/frontend/onnx_import/src/op/elu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/elu.hpp b/ngraph/frontend/onnx_import/src/op/elu.hpp index 00f4117d69d8d2..50557cfdb2838d 100644 --- a/ngraph/frontend/onnx_import/src/op/elu.hpp +++ b/ngraph/frontend/onnx_import/src/op/elu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/equal.hpp b/ngraph/frontend/onnx_import/src/op/equal.hpp index a211c7b99f5568..18d3f2caaf5663 100644 --- a/ngraph/frontend/onnx_import/src/op/equal.hpp +++ b/ngraph/frontend/onnx_import/src/op/equal.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/erf.hpp b/ngraph/frontend/onnx_import/src/op/erf.hpp index 9e904afc257e97..26ef16615aa840 100644 --- a/ngraph/frontend/onnx_import/src/op/erf.hpp +++ b/ngraph/frontend/onnx_import/src/op/erf.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/exp.hpp b/ngraph/frontend/onnx_import/src/op/exp.hpp index ba7abc7d078411..4b9fcd332a3374 100644 --- a/ngraph/frontend/onnx_import/src/op/exp.hpp +++ b/ngraph/frontend/onnx_import/src/op/exp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/expand.cpp b/ngraph/frontend/onnx_import/src/op/expand.cpp index 6cd15f2d750fe1..fbdbbc76345c84 100644 --- a/ngraph/frontend/onnx_import/src/op/expand.cpp +++ b/ngraph/frontend/onnx_import/src/op/expand.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/expand.hpp b/ngraph/frontend/onnx_import/src/op/expand.hpp index 22c969ceac84e3..ebb1ebfa19f4bc 100644 --- a/ngraph/frontend/onnx_import/src/op/expand.hpp +++ b/ngraph/frontend/onnx_import/src/op/expand.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/eye_like.cpp b/ngraph/frontend/onnx_import/src/op/eye_like.cpp index 19835c6b7b7b80..716c11362f347b 100644 --- a/ngraph/frontend/onnx_import/src/op/eye_like.cpp +++ b/ngraph/frontend/onnx_import/src/op/eye_like.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/eye_like.hpp b/ngraph/frontend/onnx_import/src/op/eye_like.hpp index 3910cf8aa7e22d..7897fe48cfd98e 100644 --- a/ngraph/frontend/onnx_import/src/op/eye_like.hpp +++ b/ngraph/frontend/onnx_import/src/op/eye_like.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/flatten.cpp b/ngraph/frontend/onnx_import/src/op/flatten.cpp index 110f80efceaa05..e16127ef3396f6 100644 --- a/ngraph/frontend/onnx_import/src/op/flatten.cpp +++ b/ngraph/frontend/onnx_import/src/op/flatten.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/flatten.hpp b/ngraph/frontend/onnx_import/src/op/flatten.hpp index a2f26f7faf5f9c..47979e128d6eef 100644 --- a/ngraph/frontend/onnx_import/src/op/flatten.hpp +++ b/ngraph/frontend/onnx_import/src/op/flatten.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/floor.hpp b/ngraph/frontend/onnx_import/src/op/floor.hpp index 5f2cb7607c8e7b..437288b006a76d 100644 --- a/ngraph/frontend/onnx_import/src/op/floor.hpp +++ b/ngraph/frontend/onnx_import/src/op/floor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/gather.hpp b/ngraph/frontend/onnx_import/src/op/gather.hpp index 423d016206ffbc..b593ccced7b540 100644 --- a/ngraph/frontend/onnx_import/src/op/gather.hpp +++ b/ngraph/frontend/onnx_import/src/op/gather.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/gather_elements.hpp b/ngraph/frontend/onnx_import/src/op/gather_elements.hpp index c23b31dd1d3ed8..3b82adf3430595 100644 --- a/ngraph/frontend/onnx_import/src/op/gather_elements.hpp +++ b/ngraph/frontend/onnx_import/src/op/gather_elements.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/gather_nd.cpp b/ngraph/frontend/onnx_import/src/op/gather_nd.cpp index 26e3cf20c4826f..9fc64e99fc7c59 100644 --- a/ngraph/frontend/onnx_import/src/op/gather_nd.cpp +++ b/ngraph/frontend/onnx_import/src/op/gather_nd.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/gather_nd.hpp b/ngraph/frontend/onnx_import/src/op/gather_nd.hpp index b403ee58796497..f484d5a6741095 100644 --- a/ngraph/frontend/onnx_import/src/op/gather_nd.hpp +++ b/ngraph/frontend/onnx_import/src/op/gather_nd.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/gemm.cpp b/ngraph/frontend/onnx_import/src/op/gemm.cpp index 54795c5e5e24c3..b78d1f49c71824 100644 --- a/ngraph/frontend/onnx_import/src/op/gemm.cpp +++ b/ngraph/frontend/onnx_import/src/op/gemm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/gemm.hpp b/ngraph/frontend/onnx_import/src/op/gemm.hpp index b084192a20f910..a9f7b30cda8ad8 100644 --- a/ngraph/frontend/onnx_import/src/op/gemm.hpp +++ b/ngraph/frontend/onnx_import/src/op/gemm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/global_average_pool.cpp b/ngraph/frontend/onnx_import/src/op/global_average_pool.cpp index cdacdbb3117791..1db380722c775a 100644 --- a/ngraph/frontend/onnx_import/src/op/global_average_pool.cpp +++ b/ngraph/frontend/onnx_import/src/op/global_average_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/global_average_pool.hpp b/ngraph/frontend/onnx_import/src/op/global_average_pool.hpp index cc261420167f92..c161132257d4bb 100644 --- a/ngraph/frontend/onnx_import/src/op/global_average_pool.hpp +++ b/ngraph/frontend/onnx_import/src/op/global_average_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/global_max_pool.cpp b/ngraph/frontend/onnx_import/src/op/global_max_pool.cpp index 89c0c1242aefbf..a3afb4cf00f7fd 100644 --- a/ngraph/frontend/onnx_import/src/op/global_max_pool.cpp +++ b/ngraph/frontend/onnx_import/src/op/global_max_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/global_max_pool.hpp b/ngraph/frontend/onnx_import/src/op/global_max_pool.hpp index dab1bc2a2cef66..d61d8eade17513 100644 --- a/ngraph/frontend/onnx_import/src/op/global_max_pool.hpp +++ b/ngraph/frontend/onnx_import/src/op/global_max_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/greater.hpp b/ngraph/frontend/onnx_import/src/op/greater.hpp index 952302c320faff..9f8b794224a44f 100644 --- a/ngraph/frontend/onnx_import/src/op/greater.hpp +++ b/ngraph/frontend/onnx_import/src/op/greater.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/gru.cpp b/ngraph/frontend/onnx_import/src/op/gru.cpp index 240d52d3b014da..d0c600c8aac400 100644 --- a/ngraph/frontend/onnx_import/src/op/gru.cpp +++ b/ngraph/frontend/onnx_import/src/op/gru.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -51,8 +39,6 @@ namespace ngraph if (ng_inputs.size() > 3 && !ngraph::op::is_null(ng_inputs.at(3))) { - NGRAPH_SUPPRESS_DEPRECATED_START - auto bias = ng_inputs.at(3); // gates_count * 2 since B is: [Wb, Rb] const int split_parts = 2 * 3; @@ -78,7 +64,6 @@ namespace ngraph split_bias.at(2), split_bias.at(5)}, 1); - NGRAPH_SUPPRESS_DEPRECATED_END } else { diff --git a/ngraph/frontend/onnx_import/src/op/gru.hpp b/ngraph/frontend/onnx_import/src/op/gru.hpp index a0f0331e212e11..8da2af5364aa42 100644 --- a/ngraph/frontend/onnx_import/src/op/gru.hpp +++ b/ngraph/frontend/onnx_import/src/op/gru.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/hard_sigmoid.cpp b/ngraph/frontend/onnx_import/src/op/hard_sigmoid.cpp index e1034751372257..e637a490a267e1 100644 --- a/ngraph/frontend/onnx_import/src/op/hard_sigmoid.cpp +++ b/ngraph/frontend/onnx_import/src/op/hard_sigmoid.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/hard_sigmoid.hpp b/ngraph/frontend/onnx_import/src/op/hard_sigmoid.hpp index ec5b25d7ecd627..84c72a4f8fe682 100644 --- a/ngraph/frontend/onnx_import/src/op/hard_sigmoid.hpp +++ b/ngraph/frontend/onnx_import/src/op/hard_sigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/hardmax.cpp b/ngraph/frontend/onnx_import/src/op/hardmax.cpp index 99da544c3f5619..9aa95d9ff550f0 100644 --- a/ngraph/frontend/onnx_import/src/op/hardmax.cpp +++ b/ngraph/frontend/onnx_import/src/op/hardmax.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/hardmax.hpp" #include "exceptions.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/hardmax.hpp b/ngraph/frontend/onnx_import/src/op/hardmax.hpp index 8e9640348bae03..bbf16ba21debb2 100644 --- a/ngraph/frontend/onnx_import/src/op/hardmax.hpp +++ b/ngraph/frontend/onnx_import/src/op/hardmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/identity.hpp b/ngraph/frontend/onnx_import/src/op/identity.hpp index 582cecf78e09d2..61f80b491d4c09 100644 --- a/ngraph/frontend/onnx_import/src/op/identity.hpp +++ b/ngraph/frontend/onnx_import/src/op/identity.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/image_scaler.cpp b/ngraph/frontend/onnx_import/src/op/image_scaler.cpp index 93e32f452634ed..f38630b3b5bf18 100644 --- a/ngraph/frontend/onnx_import/src/op/image_scaler.cpp +++ b/ngraph/frontend/onnx_import/src/op/image_scaler.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/image_scaler.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/image_scaler.hpp b/ngraph/frontend/onnx_import/src/op/image_scaler.hpp index 3539cde70a6f1e..a7787d05368f9e 100644 --- a/ngraph/frontend/onnx_import/src/op/image_scaler.hpp +++ b/ngraph/frontend/onnx_import/src/op/image_scaler.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/instance_norm.cpp b/ngraph/frontend/onnx_import/src/op/instance_norm.cpp index 1eca715526d834..069b9c3f7622f7 100644 --- a/ngraph/frontend/onnx_import/src/op/instance_norm.cpp +++ b/ngraph/frontend/onnx_import/src/op/instance_norm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -76,7 +64,7 @@ namespace ngraph scale_pshape.is_dynamic() || (scale_pshape.rank().is_static() && scale_pshape.rank().get_length() == 1 && - data_pshape[1].same_scheme(scale_pshape[0])), + data_pshape[1].compatible(scale_pshape[0])), "Scale input must be one dimensional vector of number of " "input data channels size."); @@ -84,7 +72,7 @@ namespace ngraph bias_pshape.is_dynamic() || (bias_pshape.rank().is_static() && bias_pshape.rank().get_length() == 1 && - data_pshape[1].same_scheme(bias_pshape[0])), + data_pshape[1].compatible(bias_pshape[0])), "Bias input must be one dimensional vector of number of " "input data channels size."); } @@ -96,18 +84,7 @@ namespace ngraph auto mvn = std::make_shared( data, reduction_axes, true, epsilon, ngraph::op::MVNEpsMode::INSIDE_SQRT); - std::shared_ptr data_shape_node; - if (data_pshape.is_static()) - { - data_shape_node = std::make_shared( - element::i64, - Shape{static_cast(data_pshape.rank().get_length())}, - data_pshape.to_shape()); - } - else - { - data_shape_node = std::make_shared(data); - } + const auto data_shape_node = std::make_shared(data); // Broadcast preserving channel dimension scale = std::make_shared( diff --git a/ngraph/frontend/onnx_import/src/op/instance_norm.hpp b/ngraph/frontend/onnx_import/src/op/instance_norm.hpp index d76629883d9987..55aa54b35c437a 100644 --- a/ngraph/frontend/onnx_import/src/op/instance_norm.hpp +++ b/ngraph/frontend/onnx_import/src/op/instance_norm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/leaky_relu.cpp b/ngraph/frontend/onnx_import/src/op/leaky_relu.cpp index d5217ac3259467..e40f85c4b6def1 100644 --- a/ngraph/frontend/onnx_import/src/op/leaky_relu.cpp +++ b/ngraph/frontend/onnx_import/src/op/leaky_relu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/leaky_relu.hpp b/ngraph/frontend/onnx_import/src/op/leaky_relu.hpp index eed0a61abd18c0..ee47bed1a52a70 100644 --- a/ngraph/frontend/onnx_import/src/op/leaky_relu.hpp +++ b/ngraph/frontend/onnx_import/src/op/leaky_relu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/less.hpp b/ngraph/frontend/onnx_import/src/op/less.hpp index 95558de13314f8..46821d06ce8f7f 100644 --- a/ngraph/frontend/onnx_import/src/op/less.hpp +++ b/ngraph/frontend/onnx_import/src/op/less.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/log.cpp b/ngraph/frontend/onnx_import/src/op/log.cpp index ed2a14329df471..1458fe6459c09c 100644 --- a/ngraph/frontend/onnx_import/src/op/log.cpp +++ b/ngraph/frontend/onnx_import/src/op/log.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/log.hpp b/ngraph/frontend/onnx_import/src/op/log.hpp index 90a9a81652f024..03ab4955b4afd0 100644 --- a/ngraph/frontend/onnx_import/src/op/log.hpp +++ b/ngraph/frontend/onnx_import/src/op/log.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/log_softmax.cpp b/ngraph/frontend/onnx_import/src/op/log_softmax.cpp index 07c71a5663bbf6..43a797c2441dcd 100644 --- a/ngraph/frontend/onnx_import/src/op/log_softmax.cpp +++ b/ngraph/frontend/onnx_import/src/op/log_softmax.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -40,15 +28,8 @@ namespace ngraph std::make_shared(coerced_data, max); const auto result = std::make_shared(data_minus_max, 1); - if (data.get_partial_shape().is_static()) - { - return ngraph::builder::opset1::reshape(result, data.get_shape()); - } - else - { - const auto data_shape = std::make_shared(data); - return std::make_shared(result, data_shape, false); - } + const auto data_shape = std::make_shared(data); + return std::make_shared(result, data_shape, false); } OutputVector log_softmax(const Node& node, const int64_t DEFAULT_AXIS) diff --git a/ngraph/frontend/onnx_import/src/op/log_softmax.hpp b/ngraph/frontend/onnx_import/src/op/log_softmax.hpp index 939dfa0de6b30b..56f25d7c3708f3 100644 --- a/ngraph/frontend/onnx_import/src/op/log_softmax.hpp +++ b/ngraph/frontend/onnx_import/src/op/log_softmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/loop.cpp b/ngraph/frontend/onnx_import/src/op/loop.cpp index 5c2ec6142ecfea..e51a114a1ba17e 100644 --- a/ngraph/frontend/onnx_import/src/op/loop.cpp +++ b/ngraph/frontend/onnx_import/src/op/loop.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "op/loop.hpp" #include diff --git a/ngraph/frontend/onnx_import/src/op/loop.hpp b/ngraph/frontend/onnx_import/src/op/loop.hpp index c7bb6efe7ca488..41e27df03d05e6 100644 --- a/ngraph/frontend/onnx_import/src/op/loop.hpp +++ b/ngraph/frontend/onnx_import/src/op/loop.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/lp_norm.cpp b/ngraph/frontend/onnx_import/src/op/lp_norm.cpp index 2286b978d0f43b..b8efda67bfa0d5 100644 --- a/ngraph/frontend/onnx_import/src/op/lp_norm.cpp +++ b/ngraph/frontend/onnx_import/src/op/lp_norm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -42,8 +30,6 @@ namespace ngraph const auto data_shape = data.get_partial_shape(); const auto data_rank = data_shape.rank(); - CHECK_VALID_NODE( - node, data_shape.is_static(), "Data shape must be static for lp_norm op"); const auto data_rank_value = data_rank.get_length(); const std::int64_t p_norm{node.get_attribute_value("p", 2)}; @@ -62,8 +48,7 @@ namespace ngraph std::shared_ptr norm = ngraph::builder::opset1::lp_norm( data, normalize_axis_const, static_cast(p_norm)); - const auto target_shape = default_opset::Constant::create( - element::i64, Shape{size_t(data_rank_value)}, data_shape.to_shape()); + const auto target_shape = std::make_shared(data); // Create a default axes order matching the data tensor rank and erase the // element at the 'normalize_axis' position. The erased element indicates the diff --git a/ngraph/frontend/onnx_import/src/op/lp_norm.hpp b/ngraph/frontend/onnx_import/src/op/lp_norm.hpp index 7b923bfd9d7169..d9a2e0bd510194 100644 --- a/ngraph/frontend/onnx_import/src/op/lp_norm.hpp +++ b/ngraph/frontend/onnx_import/src/op/lp_norm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/lp_pool.cpp b/ngraph/frontend/onnx_import/src/op/lp_pool.cpp index 3c791395156b2f..c0bda36283e5bd 100644 --- a/ngraph/frontend/onnx_import/src/op/lp_pool.cpp +++ b/ngraph/frontend/onnx_import/src/op/lp_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/lp_pool.hpp b/ngraph/frontend/onnx_import/src/op/lp_pool.hpp index d73ba69f595864..03bc7d8777da2f 100644 --- a/ngraph/frontend/onnx_import/src/op/lp_pool.hpp +++ b/ngraph/frontend/onnx_import/src/op/lp_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/lrn.cpp b/ngraph/frontend/onnx_import/src/op/lrn.cpp index e00399cff8f5a4..6f43ee1ffbdaa8 100644 --- a/ngraph/frontend/onnx_import/src/op/lrn.cpp +++ b/ngraph/frontend/onnx_import/src/op/lrn.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/lrn.hpp b/ngraph/frontend/onnx_import/src/op/lrn.hpp index 62f98b3231a3e4..2794f0cdb5cd86 100644 --- a/ngraph/frontend/onnx_import/src/op/lrn.hpp +++ b/ngraph/frontend/onnx_import/src/op/lrn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/lstm.cpp b/ngraph/frontend/onnx_import/src/op/lstm.cpp index f25ab909fbc0f5..8ac038e1221bfa 100644 --- a/ngraph/frontend/onnx_import/src/op/lstm.cpp +++ b/ngraph/frontend/onnx_import/src/op/lstm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -36,7 +24,6 @@ #include "ngraph/shape.hpp" #include "ngraph/type/element_type.hpp" #include "op/lstm.hpp" -#include "op/lstm.hpp" namespace ngraph { @@ -126,11 +113,9 @@ namespace ngraph { auto bias = ng_inputs.at(3); auto split_bias = builder::opset1::split(bias, 2, 1); - NGRAPH_SUPPRESS_DEPRECATED_START m_input_map[LSTMInput::LSTM_INPUT_B] = std::make_shared(split_bias.at(0), split_bias.at(1)); - NGRAPH_SUPPRESS_DEPRECATED_END m_input_map[LSTMInput::LSTM_INPUT_B] = ngraph::op::util::convert_lstm_node_format( m_input_map[LSTMInput::LSTM_INPUT_B], @@ -251,8 +236,9 @@ namespace ngraph if (m_input_forget != 0) { - NGRAPH_WARN << (node) << " Attribute `input_forget` is not supported " - "and will be ignored "; + NGRAPH_WARN << (node) + << " Attribute `input_forget` is not supported " + "and will be ignored "; } } diff --git a/ngraph/frontend/onnx_import/src/op/lstm.hpp b/ngraph/frontend/onnx_import/src/op/lstm.hpp index 547d458ededa10..cdcb390e4dca4e 100644 --- a/ngraph/frontend/onnx_import/src/op/lstm.hpp +++ b/ngraph/frontend/onnx_import/src/op/lstm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/matmul.hpp b/ngraph/frontend/onnx_import/src/op/matmul.hpp index 56d7b4df198c20..3aaad4d3ee492c 100644 --- a/ngraph/frontend/onnx_import/src/op/matmul.hpp +++ b/ngraph/frontend/onnx_import/src/op/matmul.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/matmul_integer.cpp b/ngraph/frontend/onnx_import/src/op/matmul_integer.cpp index f5350e6ff4ea52..231256950f9aba 100644 --- a/ngraph/frontend/onnx_import/src/op/matmul_integer.cpp +++ b/ngraph/frontend/onnx_import/src/op/matmul_integer.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/matmul_integer.hpp" #include "ngraph/builder/matmul_factory.hpp" @@ -28,7 +16,6 @@ namespace ngraph { OutputVector matmul_integer(const Node& node) { - NGRAPH_SUPPRESS_DEPRECATED_START auto ng_inputs = node.get_ng_inputs(); auto factory = builder::MatmulIntegerFactory( OutputVector(std::begin(ng_inputs), std::end(ng_inputs))); @@ -44,7 +31,6 @@ namespace ngraph "to conform with ONNX standard."; } return factory.make_matmul_op(); - NGRAPH_SUPPRESS_DEPRECATED_END } } // namespace set_1 diff --git a/ngraph/frontend/onnx_import/src/op/matmul_integer.hpp b/ngraph/frontend/onnx_import/src/op/matmul_integer.hpp index 58c91f8dcd197f..8e40e3b608b83b 100644 --- a/ngraph/frontend/onnx_import/src/op/matmul_integer.hpp +++ b/ngraph/frontend/onnx_import/src/op/matmul_integer.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/max.hpp b/ngraph/frontend/onnx_import/src/op/max.hpp index e8b265a4544a7e..d0cd7f2b54e37d 100644 --- a/ngraph/frontend/onnx_import/src/op/max.hpp +++ b/ngraph/frontend/onnx_import/src/op/max.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/max_pool.cpp b/ngraph/frontend/onnx_import/src/op/max_pool.cpp index 227a6cda7f6fc4..2507af1459ef01 100644 --- a/ngraph/frontend/onnx_import/src/op/max_pool.cpp +++ b/ngraph/frontend/onnx_import/src/op/max_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/max_pool.hpp b/ngraph/frontend/onnx_import/src/op/max_pool.hpp index 03706c9f9e415c..ff0c0667b33034 100644 --- a/ngraph/frontend/onnx_import/src/op/max_pool.hpp +++ b/ngraph/frontend/onnx_import/src/op/max_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/mean.cpp b/ngraph/frontend/onnx_import/src/op/mean.cpp index 42a26d32e811ab..f25dcfbe71bead 100644 --- a/ngraph/frontend/onnx_import/src/op/mean.cpp +++ b/ngraph/frontend/onnx_import/src/op/mean.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/mean.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/mean.hpp b/ngraph/frontend/onnx_import/src/op/mean.hpp index 3b89e224c7f5a7..953f8c465b4e2b 100644 --- a/ngraph/frontend/onnx_import/src/op/mean.hpp +++ b/ngraph/frontend/onnx_import/src/op/mean.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.cpp b/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.cpp index 5967a89e76ed8f..de7ffe6915ad48 100644 --- a/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.cpp +++ b/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include diff --git a/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.hpp b/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.hpp index 821343554da6b7..0684c81c8a0ea9 100644 --- a/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.hpp +++ b/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/min.hpp b/ngraph/frontend/onnx_import/src/op/min.hpp index 209b9080025275..2b28bec602055f 100644 --- a/ngraph/frontend/onnx_import/src/op/min.hpp +++ b/ngraph/frontend/onnx_import/src/op/min.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/mod.cpp b/ngraph/frontend/onnx_import/src/op/mod.cpp index 906e282e3bcd57..2ffa2283850ad1 100644 --- a/ngraph/frontend/onnx_import/src/op/mod.cpp +++ b/ngraph/frontend/onnx_import/src/op/mod.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/mod.hpp b/ngraph/frontend/onnx_import/src/op/mod.hpp index 1be4e2e36213ff..b1eaf6a40fc0c2 100644 --- a/ngraph/frontend/onnx_import/src/op/mod.hpp +++ b/ngraph/frontend/onnx_import/src/op/mod.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/mul.hpp b/ngraph/frontend/onnx_import/src/op/mul.hpp index 8934447e94a733..083bbe1b3f45b8 100644 --- a/ngraph/frontend/onnx_import/src/op/mul.hpp +++ b/ngraph/frontend/onnx_import/src/op/mul.hpp @@ -1,24 +1,13 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include #include "default_opset.hpp" +#include "ngraph/builder/autobroadcast.hpp" #include "ngraph/node.hpp" #include "ngraph/op/broadcast.hpp" #include "ngraph/op/multiply.hpp" @@ -36,17 +25,19 @@ namespace ngraph { const Output lhs_node = node.get_ng_inputs().at(0); Output rhs_node = node.get_ng_inputs().at(1); - bool broadcast = node.get_attribute_value("broadcast", 0); + const bool broadcast = node.get_attribute_value("broadcast", 0); if (broadcast) { if (node.has_attribute("axis")) { // Unidirectional broadcast right node to left shape. - auto axis = node.get_attribute_value("axis"); + const auto axis = node.get_attribute_value("axis"); + const auto axes_mapping = builder::opset1::get_axes_mapping_output( + lhs_node.get_partial_shape(), rhs_node.get_partial_shape(), axis); rhs_node = std::make_shared( rhs_node, std::make_shared(lhs_node), - default_opset::Constant::create(element::i64, Shape{1}, {axis})); + axes_mapping); } else { diff --git a/ngraph/frontend/onnx_import/src/op/neg.hpp b/ngraph/frontend/onnx_import/src/op/neg.hpp index 575da996b3a558..217fbf65441cb1 100644 --- a/ngraph/frontend/onnx_import/src/op/neg.hpp +++ b/ngraph/frontend/onnx_import/src/op/neg.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/non_max_suppression.cpp b/ngraph/frontend/onnx_import/src/op/non_max_suppression.cpp index a5d75df5cbddda..2c5da242582e1b 100644 --- a/ngraph/frontend/onnx_import/src/op/non_max_suppression.cpp +++ b/ngraph/frontend/onnx_import/src/op/non_max_suppression.cpp @@ -1,21 +1,10 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include +#include "core/null_node.hpp" #include "default_opset.hpp" #include "exceptions.hpp" #include "ngraph/op/non_max_suppression.hpp" @@ -33,6 +22,7 @@ namespace ngraph { OutputVector non_max_suppression(const Node& node) { + using ngraph::op::is_null; // TODO: this op will not be tested until at least // a reference implementation is added @@ -41,7 +31,7 @@ namespace ngraph const Output scores = ng_inputs.at(1); Output max_output_boxes_per_class; - if (ng_inputs.size() > 2) + if (ng_inputs.size() > 2 && !is_null(ng_inputs.at(2))) { max_output_boxes_per_class = ngraph::onnx_import::reshape::interpret_as_scalar(ng_inputs.at(2)); @@ -53,7 +43,7 @@ namespace ngraph } Output iou_threshold; - if (ng_inputs.size() > 3) + if (ng_inputs.size() > 3 && !is_null(ng_inputs.at(3))) { iou_threshold = ngraph::onnx_import::reshape::interpret_as_scalar(ng_inputs.at(3)); @@ -65,7 +55,7 @@ namespace ngraph } Output score_threshold; - if (ng_inputs.size() > 4) + if (ng_inputs.size() > 4 && !is_null(ng_inputs.at(4))) { score_threshold = ngraph::onnx_import::reshape::interpret_as_scalar(ng_inputs.at(4)); diff --git a/ngraph/frontend/onnx_import/src/op/non_max_suppression.hpp b/ngraph/frontend/onnx_import/src/op/non_max_suppression.hpp index 9a17d5846a1aec..02d2edb675aa46 100644 --- a/ngraph/frontend/onnx_import/src/op/non_max_suppression.hpp +++ b/ngraph/frontend/onnx_import/src/op/non_max_suppression.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/non_zero.cpp b/ngraph/frontend/onnx_import/src/op/non_zero.cpp index 660c2379bafc1b..550f24b50c37ef 100644 --- a/ngraph/frontend/onnx_import/src/op/non_zero.cpp +++ b/ngraph/frontend/onnx_import/src/op/non_zero.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/non_zero.hpp b/ngraph/frontend/onnx_import/src/op/non_zero.hpp index eee0746ca13a63..a4d37488853060 100644 --- a/ngraph/frontend/onnx_import/src/op/non_zero.hpp +++ b/ngraph/frontend/onnx_import/src/op/non_zero.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/not.hpp b/ngraph/frontend/onnx_import/src/op/not.hpp index 33411f30b2b5aa..714ab268fd2a40 100644 --- a/ngraph/frontend/onnx_import/src/op/not.hpp +++ b/ngraph/frontend/onnx_import/src/op/not.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/onehot.cpp b/ngraph/frontend/onnx_import/src/op/onehot.cpp index c61bf390047483..849bfda58d2d39 100644 --- a/ngraph/frontend/onnx_import/src/op/onehot.cpp +++ b/ngraph/frontend/onnx_import/src/op/onehot.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/onehot.hpp b/ngraph/frontend/onnx_import/src/op/onehot.hpp index 7891df6a85a7f6..dac3cdb8a4ff45 100644 --- a/ngraph/frontend/onnx_import/src/op/onehot.hpp +++ b/ngraph/frontend/onnx_import/src/op/onehot.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/or.hpp b/ngraph/frontend/onnx_import/src/op/or.hpp index 6dcb2ca42f2c43..dea15a314a32ab 100644 --- a/ngraph/frontend/onnx_import/src/op/or.hpp +++ b/ngraph/frontend/onnx_import/src/op/or.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp new file mode 100644 index 00000000000000..f8f81a11efa36a --- /dev/null +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp @@ -0,0 +1,51 @@ +//***************************************************************************** +// Copyright 2017-2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "op/org.openvinotoolkit/deformable_conv_2d.hpp" +#include "default_opset.hpp" +#include "ngraph/node.hpp" +#include "ngraph/op/deformable_convolution.hpp" +#include "utils/convpool.hpp" + +namespace ngraph +{ + namespace onnx_import + { + OutputVector op::set_1::deformable_conv_2d(const Node& node) + { + const OutputVector& inputs = node.get_ng_inputs(); + const auto strides = convpool::get_strides(node); + const auto dilations = convpool::get_dilations(node); + const auto paddings = convpool::get_pads(node); + + const auto group = node.get_attribute_value("group", 1); + const auto deformable_groups = + node.get_attribute_value("deformable_groups", 1); + const auto auto_pad_type = convpool::get_auto_pad(node); + + return {std::make_shared(inputs.at(0), + inputs.at(1), + inputs.at(2), + strides, + paddings.first, + paddings.second, + dilations, + auto_pad_type, + group, + deformable_groups)}; + } + } // namespace onnx_import +} // namespace ngraph diff --git a/openvino/itt/include/openvino/macro_overload.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp similarity index 50% rename from openvino/itt/include/openvino/macro_overload.hpp rename to ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp index 9d638cff19f358..9f0b7552cb6aac 100644 --- a/openvino/itt/include/openvino/macro_overload.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp @@ -1,5 +1,5 @@ //***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright 2017-2021 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,21 +14,25 @@ // limitations under the License. //***************************************************************************** -/** - * @brief Macro overloading feature support - * @file macro_overload.hpp - */ - #pragma once -#define OV_ITT_MACRO_EXPAND(X) X +#include "ngraph/node.hpp" +#include "onnx_import/core/node.hpp" + +namespace ngraph +{ + namespace onnx_import + { + namespace op + { + namespace set_1 + { + OutputVector deformable_conv_2d(const Node& node); + + } // namespace set_1 -#define OV_ITT_MACRO_NARG(...) OV_ITT_MACRO_EXPAND( OV_ITT_MACRO_NARG_(__VA_ARGS__, OV_ITT_MACRO_RSEQ_N()) ) -#define OV_ITT_MACRO_NARG_(...) OV_ITT_MACRO_EXPAND( OV_ITT_MACRO_ARG_N(__VA_ARGS__) ) -#define OV_ITT_MACRO_ARG_N(_1, _2, _3, _4, N, ...) N -#define OV_ITT_MACRO_RSEQ_N() 4, 3, 2, 1, 0 + } // namespace op -#define OV_ITT_MACRO_EVAL_(NAME, N) NAME ## _ ## N -#define OV_ITT_MACRO_EVAL(NAME, N) OV_ITT_MACRO_EVAL_(NAME, N) + } // namespace onnx_import -#define OV_ITT_MACRO_OVERLOAD(NAME, ...) OV_ITT_MACRO_EXPAND( OV_ITT_MACRO_EVAL(NAME, OV_ITT_MACRO_EXPAND( OV_ITT_MACRO_NARG(__VA_ARGS__) ))(__VA_ARGS__) ) +} // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp index 78dcdb881e7eca..52367f0d2a117c 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/detection_output.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp index fb9761d185577e..f95c9ddcd7c71c 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp index f9c763c4672256..4ed2ba01e12f6b 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp index 044db580202bb9..8a69bc73ad59b5 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp index ab0db4333a588d..ca18da54d161a6 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "ngraph/node.hpp" @@ -31,7 +19,12 @@ namespace ngraph using GenerateProposalsSingleImage = ngraph::op::v6::ExperimentalDetectronGenerateProposalsSingleImage; - auto inputs = node.get_ng_inputs(); + const auto inputs = node.get_ng_inputs(); + NGRAPH_CHECK(inputs.size() == 4, + "ExperimentalDetectronGenerateProposalsSingleImage expects 4 " + "inputs, received: ", + inputs.size()); + auto im_info = inputs[0]; auto anchors = inputs[1]; auto deltas = inputs[2]; diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp index 2e581a67c24204..fdd5ddebf9b0e1 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp index d26300f54044ea..7265f04488def0 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp index 5d292cd0eebc29..6763afbf591a4a 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp index 393ef060302c0b..34de2964f77ec6 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp index f8f86d9c67c56b..5e5c5ec828a3da 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp index 152a5a850ddd5f..09ae970599d9dc 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp index 897fe9b9b105d4..4c8dc3f0b2834c 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp index 1d2339d8e4dbd1..6a2db51d699e8d 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp index adf6e6e3e52020..0d012bdfbb7658 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp index 24a795bcc57727..d2ec4dc8acb1be 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/org.openvinotoolkit/group_norm.hpp" #include "default_opset.hpp" @@ -50,13 +38,14 @@ namespace ngraph auto splits = builder::opset1::split(shape, rank_size); auto num_groups_const = default_opset::Constant::create(element::i64, Shape{1}, {num_groups}); - NodeVector new_shape{ - splits[0].get_node_shared_ptr(), + ngraph::OutputVector new_shape{ + splits[0], num_groups_const, std::make_shared(splits[1], num_groups_const)}; + for (size_t i = 2; i < rank_size; i++) { - new_shape.push_back(splits[i].get_node_shared_ptr()); + new_shape.push_back(splits[i]); } return std::make_shared(new_shape, 0); } @@ -78,14 +67,20 @@ namespace ngraph size_t num_groups = static_cast(node.get_attribute_value("num_groups")); - float eps = node.get_attribute_value("eps", 1e-5); + float eps = node.get_attribute_value("eps", 1e-6); auto data_shape_node = std::make_shared(data); auto data_reshaped = std::make_shared( data, detail::create_group_norm_shape(data, num_groups), true); + const auto reduction_axes = + common::get_monotonic_range_along_node_rank(data_reshaped, 2); auto mvn = - std::make_shared(data_reshaped, false, true, eps); + std::make_shared(data_reshaped, + reduction_axes, + true, + eps, + ngraph::op::MVNEpsMode::INSIDE_SQRT); std::shared_ptr result = std::make_shared(mvn, data_shape_node, true); diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp index 7bf0719cbeffaf..b1a839a373f692 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.cpp index 72da97f838ccea..9aaaefcabc3619 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/org.openvinotoolkit/normalize.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.hpp index 498c29308f5530..44f28e98e74d5b 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp index 14a7b48e11d019..97620d4615cf1b 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/prior_box.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp index 2966ec461dea9d..051601da3d1ccb 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.cpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.cpp index b080c73ea8680e..4c9fae126771a2 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.cpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.cpp @@ -1,20 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** -#include "default_opset.hpp" #include "default_opset.hpp" #include "ngraph/op/normalize_l2.hpp" #include "op/org.openvinotoolkit/normalize.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.hpp b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.hpp index 1ca7805689d8c8..af59358817dee8 100644 --- a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.hpp +++ b/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/pad.cpp b/ngraph/frontend/onnx_import/src/op/pad.cpp index 598200d87959c4..1c01f64182b707 100644 --- a/ngraph/frontend/onnx_import/src/op/pad.cpp +++ b/ngraph/frontend/onnx_import/src/op/pad.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -131,14 +119,10 @@ namespace ngraph } else { - auto axis = - default_opset::Constant::create(element::i64, ngraph::Shape{}, {0}); OutputVector padding = builder::opset1::split(pads, 2, 0); - padding_begin = - std::make_shared(padding.at(0), element::i64); - padding_end = - std::make_shared(padding.at(1), element::i64); + padding_begin = padding.at(0); + padding_end = padding.at(1); } const std::string mode = diff --git a/ngraph/frontend/onnx_import/src/op/pad.hpp b/ngraph/frontend/onnx_import/src/op/pad.hpp index 7ce78f6c40261d..31c6fa048c19c2 100644 --- a/ngraph/frontend/onnx_import/src/op/pad.hpp +++ b/ngraph/frontend/onnx_import/src/op/pad.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/pow.cpp b/ngraph/frontend/onnx_import/src/op/pow.cpp index 11f1500f7baef7..d97726bdc50d32 100644 --- a/ngraph/frontend/onnx_import/src/op/pow.cpp +++ b/ngraph/frontend/onnx_import/src/op/pow.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/pow.hpp b/ngraph/frontend/onnx_import/src/op/pow.hpp index dfe6549839607d..aae2137961ece0 100644 --- a/ngraph/frontend/onnx_import/src/op/pow.hpp +++ b/ngraph/frontend/onnx_import/src/op/pow.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/prelu.cpp b/ngraph/frontend/onnx_import/src/op/prelu.cpp index a6fc046f54ac64..e7b214fde051d2 100644 --- a/ngraph/frontend/onnx_import/src/op/prelu.cpp +++ b/ngraph/frontend/onnx_import/src/op/prelu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/prelu.hpp b/ngraph/frontend/onnx_import/src/op/prelu.hpp index e804a1792552ab..76b0e6af152ac3 100644 --- a/ngraph/frontend/onnx_import/src/op/prelu.hpp +++ b/ngraph/frontend/onnx_import/src/op/prelu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/qlinear_matmul.cpp b/ngraph/frontend/onnx_import/src/op/qlinear_matmul.cpp index a43fae0704b910..1baafa827ca1b2 100644 --- a/ngraph/frontend/onnx_import/src/op/qlinear_matmul.cpp +++ b/ngraph/frontend/onnx_import/src/op/qlinear_matmul.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/qlinear_matmul.hpp" #include "ngraph/builder/matmul_factory.hpp" @@ -28,7 +16,6 @@ namespace ngraph { OutputVector qlinear_matmul(const Node& node) { - NGRAPH_SUPPRESS_DEPRECATED_START auto ng_inputs = node.get_ng_inputs(); auto factory = builder::QLinearMatmulFactory( (OutputVector(std::begin(ng_inputs), std::end(ng_inputs)))); @@ -44,7 +31,6 @@ namespace ngraph "to conform with ONNX standard."; } return factory.make_matmul_op(); - NGRAPH_SUPPRESS_DEPRECATED_END } } // namespace set_1 diff --git a/ngraph/frontend/onnx_import/src/op/qlinear_matmul.hpp b/ngraph/frontend/onnx_import/src/op/qlinear_matmul.hpp index c6c3e82215ec24..8e38f33683654b 100644 --- a/ngraph/frontend/onnx_import/src/op/qlinear_matmul.hpp +++ b/ngraph/frontend/onnx_import/src/op/qlinear_matmul.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/quant_conv.cpp b/ngraph/frontend/onnx_import/src/op/quant_conv.cpp index 681743068d107d..fe359f3cd911e4 100644 --- a/ngraph/frontend/onnx_import/src/op/quant_conv.cpp +++ b/ngraph/frontend/onnx_import/src/op/quant_conv.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/quant_conv.hpp b/ngraph/frontend/onnx_import/src/op/quant_conv.hpp index 9229c861cc2d02..01f2034cd32f1d 100644 --- a/ngraph/frontend/onnx_import/src/op/quant_conv.hpp +++ b/ngraph/frontend/onnx_import/src/op/quant_conv.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/quantize_linear.cpp b/ngraph/frontend/onnx_import/src/op/quantize_linear.cpp index 37c03c529c5756..dabafe1c07e4c0 100644 --- a/ngraph/frontend/onnx_import/src/op/quantize_linear.cpp +++ b/ngraph/frontend/onnx_import/src/op/quantize_linear.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -39,11 +27,11 @@ namespace ngraph { namespace { - std::shared_ptr get_zero_point(const OutputVector& inputs) + Output get_zero_point(const OutputVector& inputs) { if (inputs.size() > 2) { - return inputs.at(2).get_node_shared_ptr(); + return inputs.at(2); } else { @@ -53,9 +41,9 @@ namespace ngraph } void validate_zero_point_type(const Node& onnx_node, - const std::shared_ptr& y_zero_point) + const Output& y_zero_point) { - const auto& y_zero_point_et = y_zero_point->get_element_type(); + const auto& y_zero_point_et = y_zero_point.get_element_type(); CHECK_VALID_NODE( onnx_node, y_zero_point_et.is_static() && @@ -64,11 +52,10 @@ namespace ngraph "integer type."); } - std::shared_ptr - validate_scale(const Node& onnx_node, - const std::shared_ptr& y_scale) + Output validate_scale(const Node& onnx_node, + const Output& y_scale) { - const auto& y_scale_et = y_scale->get_element_type(); + const auto& y_scale_et = y_scale.get_element_type(); CHECK_VALID_NODE(onnx_node, y_scale_et.is_static(), "\"y_scale\" input data type must be static."); @@ -79,10 +66,10 @@ namespace ngraph return y_scale; } - std::shared_ptr validate_data(const Node& onnx_node, - std::shared_ptr& data) + Output validate_data(const Node& onnx_node, + const Output& data) { - const auto& data_et = data->get_element_type(); + const auto& data_et = data.get_element_type(); CHECK_VALID_NODE(onnx_node, data_et.is_static(), "\"x\" input data type must be static."); @@ -120,8 +107,8 @@ namespace ngraph } std::tuple, std::shared_ptr> - get_input_bands(const std::shared_ptr& y_scale, - const std::shared_ptr& y_zero_point, + get_input_bands(const Output& y_scale, + const Output& y_zero_point, const std::shared_ptr& output_low, const std::shared_ptr& output_high, const element::Type& data_type) @@ -142,12 +129,12 @@ namespace ngraph } std::shared_ptr - make_fake_quantize(const std::shared_ptr& y_scale, - const std::shared_ptr& y_zero_point, - const std::shared_ptr& data) + make_fake_quantize(const Output& y_scale, + const Output& y_zero_point, + const Output& data) { - const element::Type& destination_type = y_zero_point->get_element_type(); - const element::Type& data_type = data->get_element_type(); + const element::Type& destination_type = y_zero_point.get_element_type(); + const element::Type& data_type = data.get_element_type(); std::shared_ptr output_low; std::shared_ptr output_high; @@ -166,16 +153,16 @@ namespace ngraph data, input_low, input_high, output_low, output_high, levels), destination_type); } - } - } + } // namespace + } // namespace detail namespace set_1 { OutputVector quantize_linear(const Node& node) { OutputVector inputs{node.get_ng_inputs()}; - auto x = inputs.at(0).get_node_shared_ptr(); - auto y_scale = inputs.at(1).get_node_shared_ptr(); + auto x = inputs.at(0); + auto y_scale = inputs.at(1); auto y_zero_point = detail::get_zero_point(inputs); x = detail::validate_data(node, x); @@ -191,21 +178,21 @@ namespace ngraph OutputVector quantize_linear(const Node& node) { OutputVector inputs{node.get_ng_inputs()}; - auto x = inputs.at(0).get_node_shared_ptr(); - auto y_scale = inputs.at(1).get_node_shared_ptr(); + auto x = inputs.at(0); + auto y_scale = inputs.at(1); auto y_zero_point = detail::get_zero_point(inputs); x = detail::validate_data(node, x); detail::validate_zero_point_type(node, y_zero_point); y_scale = detail::validate_scale(node, y_scale); - const auto& x_shape = x->get_output_partial_shape(0); + const auto& x_shape = x.get_partial_shape(); int64_t axis{node.get_attribute_value("axis", 1)}; axis = normalize_axis(node.get_description(), axis, x_shape.rank()); - const auto& y_scale_shape = y_scale->get_output_partial_shape(0); - const auto& y_zero_point_shape = y_zero_point->get_output_partial_shape(0); + const auto& y_scale_shape = y_scale.get_partial_shape(); + const auto& y_zero_point_shape = y_zero_point.get_partial_shape(); if (y_scale_shape.rank().is_static() && y_scale_shape.rank().get_length() == 1 && x_shape.rank().is_static() && diff --git a/ngraph/frontend/onnx_import/src/op/quantize_linear.hpp b/ngraph/frontend/onnx_import/src/op/quantize_linear.hpp index fbb90208fc3bd4..88df990107c17c 100644 --- a/ngraph/frontend/onnx_import/src/op/quantize_linear.hpp +++ b/ngraph/frontend/onnx_import/src/op/quantize_linear.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/range.cpp b/ngraph/frontend/onnx_import/src/op/range.cpp index 1c147e23d0c370..7b97cf15d860da 100644 --- a/ngraph/frontend/onnx_import/src/op/range.cpp +++ b/ngraph/frontend/onnx_import/src/op/range.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -33,7 +21,7 @@ namespace ngraph const Output stop{node.get_ng_inputs().at(1)}; const Output step{node.get_ng_inputs().at(2)}; return {std::make_shared( - start, stop, step, node.get_ng_inputs().at(0).get_element_type())}; + start, stop, step, start.get_element_type())}; } } // namespace set_1 diff --git a/ngraph/frontend/onnx_import/src/op/range.hpp b/ngraph/frontend/onnx_import/src/op/range.hpp index 9e297ce057c255..78c4054be31ef0 100644 --- a/ngraph/frontend/onnx_import/src/op/range.hpp +++ b/ngraph/frontend/onnx_import/src/op/range.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/reciprocal.cpp b/ngraph/frontend/onnx_import/src/op/reciprocal.cpp index 1b5c94fa67379b..70104882e84450 100644 --- a/ngraph/frontend/onnx_import/src/op/reciprocal.cpp +++ b/ngraph/frontend/onnx_import/src/op/reciprocal.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/reciprocal.hpp b/ngraph/frontend/onnx_import/src/op/reciprocal.hpp index 4333a1d5e307c0..e238c3756f0108 100644 --- a/ngraph/frontend/onnx_import/src/op/reciprocal.hpp +++ b/ngraph/frontend/onnx_import/src/op/reciprocal.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/reduce.cpp b/ngraph/frontend/onnx_import/src/op/reduce.cpp index 4f9517b07c89fa..48514bba4367d7 100644 --- a/ngraph/frontend/onnx_import/src/op/reduce.cpp +++ b/ngraph/frontend/onnx_import/src/op/reduce.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/reduce.hpp b/ngraph/frontend/onnx_import/src/op/reduce.hpp index 8d8620cfb4646c..b43420518a5d0c 100644 --- a/ngraph/frontend/onnx_import/src/op/reduce.hpp +++ b/ngraph/frontend/onnx_import/src/op/reduce.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/relu.hpp b/ngraph/frontend/onnx_import/src/op/relu.hpp index 82aeb4f589a185..2e6233b6186dfe 100644 --- a/ngraph/frontend/onnx_import/src/op/relu.hpp +++ b/ngraph/frontend/onnx_import/src/op/relu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/reshape.cpp b/ngraph/frontend/onnx_import/src/op/reshape.cpp index 8999bd9a203d07..be94db877fd2de 100644 --- a/ngraph/frontend/onnx_import/src/op/reshape.cpp +++ b/ngraph/frontend/onnx_import/src/op/reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -39,7 +27,7 @@ namespace ngraph const auto data = ng_inputs.at(0); Output pattern; - + bool special_zero = true; // Since opset 5 the target shape is provided as input if (ng_inputs.size() == 2) { @@ -50,11 +38,14 @@ namespace ngraph const auto output_shape = node.get_attribute_value>("shape", {}); + // Added in onnx reshape version 14 + special_zero = !node.get_attribute_value("allowzero", 0); + pattern = default_opset::Constant::create( element::i64, Shape{output_shape.size()}, output_shape); } - return {std::make_shared(data, pattern, true)}; + return {std::make_shared(data, pattern, special_zero)}; } } // namespace set_1 diff --git a/ngraph/frontend/onnx_import/src/op/reshape.hpp b/ngraph/frontend/onnx_import/src/op/reshape.hpp index 1409dad815453d..bb3378bc96dc3b 100644 --- a/ngraph/frontend/onnx_import/src/op/reshape.hpp +++ b/ngraph/frontend/onnx_import/src/op/reshape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/resize.cpp b/ngraph/frontend/onnx_import/src/op/resize.cpp index 22d6ba9ba31bde..0ed0f5e913a5fa 100644 --- a/ngraph/frontend/onnx_import/src/op/resize.cpp +++ b/ngraph/frontend/onnx_import/src/op/resize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/resize.hpp" #include diff --git a/ngraph/frontend/onnx_import/src/op/resize.hpp b/ngraph/frontend/onnx_import/src/op/resize.hpp index 149108a96ec5b9..2482f956a2694d 100644 --- a/ngraph/frontend/onnx_import/src/op/resize.hpp +++ b/ngraph/frontend/onnx_import/src/op/resize.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/reverse_sequence.cpp b/ngraph/frontend/onnx_import/src/op/reverse_sequence.cpp index 2a2490f2cfa2dd..983f4c3ba95f25 100644 --- a/ngraph/frontend/onnx_import/src/op/reverse_sequence.cpp +++ b/ngraph/frontend/onnx_import/src/op/reverse_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/reverse_sequence.hpp b/ngraph/frontend/onnx_import/src/op/reverse_sequence.hpp index 3e3095b0f655f7..da10221cc65574 100644 --- a/ngraph/frontend/onnx_import/src/op/reverse_sequence.hpp +++ b/ngraph/frontend/onnx_import/src/op/reverse_sequence.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/rnn.cpp b/ngraph/frontend/onnx_import/src/op/rnn.cpp index 7ee7fc267aa21f..5200974d6e7ec5 100644 --- a/ngraph/frontend/onnx_import/src/op/rnn.cpp +++ b/ngraph/frontend/onnx_import/src/op/rnn.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/rnn.hpp b/ngraph/frontend/onnx_import/src/op/rnn.hpp index 7d3f14164f557f..d33a6a107333b2 100644 --- a/ngraph/frontend/onnx_import/src/op/rnn.hpp +++ b/ngraph/frontend/onnx_import/src/op/rnn.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/roi_align.cpp b/ngraph/frontend/onnx_import/src/op/roi_align.cpp index 4197dec0e96999..b30c3355e24eef 100644 --- a/ngraph/frontend/onnx_import/src/op/roi_align.cpp +++ b/ngraph/frontend/onnx_import/src/op/roi_align.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/roi_align.hpp b/ngraph/frontend/onnx_import/src/op/roi_align.hpp index ab8744b6cea6b7..8c9d7d534a4841 100644 --- a/ngraph/frontend/onnx_import/src/op/roi_align.hpp +++ b/ngraph/frontend/onnx_import/src/op/roi_align.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/round.cpp b/ngraph/frontend/onnx_import/src/op/round.cpp index 7066b1bc956f83..e1e2f76c8fe233 100644 --- a/ngraph/frontend/onnx_import/src/op/round.cpp +++ b/ngraph/frontend/onnx_import/src/op/round.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/round.hpp b/ngraph/frontend/onnx_import/src/op/round.hpp index a07bb89fc7da59..64feeaacff2890 100644 --- a/ngraph/frontend/onnx_import/src/op/round.hpp +++ b/ngraph/frontend/onnx_import/src/op/round.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/scatter_elements.cpp b/ngraph/frontend/onnx_import/src/op/scatter_elements.cpp index b1238879d8c36e..3418e2c2dba849 100644 --- a/ngraph/frontend/onnx_import/src/op/scatter_elements.cpp +++ b/ngraph/frontend/onnx_import/src/op/scatter_elements.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/scatter_elements.hpp b/ngraph/frontend/onnx_import/src/op/scatter_elements.hpp index 54f726e77c5380..8727d3c6f57fa6 100644 --- a/ngraph/frontend/onnx_import/src/op/scatter_elements.hpp +++ b/ngraph/frontend/onnx_import/src/op/scatter_elements.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/scatter_nd.cpp b/ngraph/frontend/onnx_import/src/op/scatter_nd.cpp index 6d6f77e30a4096..ccf23f20a5ae50 100644 --- a/ngraph/frontend/onnx_import/src/op/scatter_nd.cpp +++ b/ngraph/frontend/onnx_import/src/op/scatter_nd.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/scatter_nd.hpp b/ngraph/frontend/onnx_import/src/op/scatter_nd.hpp index 9ba781a495be3c..920bfbafc05800 100644 --- a/ngraph/frontend/onnx_import/src/op/scatter_nd.hpp +++ b/ngraph/frontend/onnx_import/src/op/scatter_nd.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Disabled in CMakeList // Update to higher opset required diff --git a/ngraph/frontend/onnx_import/src/op/selu.cpp b/ngraph/frontend/onnx_import/src/op/selu.cpp index 8043c77ff1160d..a4179b52113ec2 100644 --- a/ngraph/frontend/onnx_import/src/op/selu.cpp +++ b/ngraph/frontend/onnx_import/src/op/selu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/selu.hpp b/ngraph/frontend/onnx_import/src/op/selu.hpp index 6ffff715c20ca5..60018273dc48a3 100644 --- a/ngraph/frontend/onnx_import/src/op/selu.hpp +++ b/ngraph/frontend/onnx_import/src/op/selu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/shape.cpp b/ngraph/frontend/onnx_import/src/op/shape.cpp index e31e1ece80efab..dab16529978311 100644 --- a/ngraph/frontend/onnx_import/src/op/shape.cpp +++ b/ngraph/frontend/onnx_import/src/op/shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/shape.hpp b/ngraph/frontend/onnx_import/src/op/shape.hpp index 9bceddb139ec26..60303e5d0f9784 100644 --- a/ngraph/frontend/onnx_import/src/op/shape.hpp +++ b/ngraph/frontend/onnx_import/src/op/shape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/shrink.cpp b/ngraph/frontend/onnx_import/src/op/shrink.cpp index bd9e7d15a5a487..1c71995858805a 100644 --- a/ngraph/frontend/onnx_import/src/op/shrink.cpp +++ b/ngraph/frontend/onnx_import/src/op/shrink.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/shrink.hpp b/ngraph/frontend/onnx_import/src/op/shrink.hpp index 1de695bf173a56..da51ab4ec1cd6f 100644 --- a/ngraph/frontend/onnx_import/src/op/shrink.hpp +++ b/ngraph/frontend/onnx_import/src/op/shrink.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/sigmoid.hpp b/ngraph/frontend/onnx_import/src/op/sigmoid.hpp index 317e7d44794ee9..7fcf5bb51a0b9f 100644 --- a/ngraph/frontend/onnx_import/src/op/sigmoid.hpp +++ b/ngraph/frontend/onnx_import/src/op/sigmoid.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/sign.hpp b/ngraph/frontend/onnx_import/src/op/sign.hpp index 2389158838879e..e0f3571d48569f 100644 --- a/ngraph/frontend/onnx_import/src/op/sign.hpp +++ b/ngraph/frontend/onnx_import/src/op/sign.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/sin.hpp b/ngraph/frontend/onnx_import/src/op/sin.hpp index 7128fd9d098cfb..c48dc6d5d72cfb 100644 --- a/ngraph/frontend/onnx_import/src/op/sin.hpp +++ b/ngraph/frontend/onnx_import/src/op/sin.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/sinh.hpp b/ngraph/frontend/onnx_import/src/op/sinh.hpp index f98cc62ec9ea39..3fe7df4a4640bb 100644 --- a/ngraph/frontend/onnx_import/src/op/sinh.hpp +++ b/ngraph/frontend/onnx_import/src/op/sinh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/size.cpp b/ngraph/frontend/onnx_import/src/op/size.cpp index f6f7b3c487696c..55295b5873926a 100644 --- a/ngraph/frontend/onnx_import/src/op/size.cpp +++ b/ngraph/frontend/onnx_import/src/op/size.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/size.hpp b/ngraph/frontend/onnx_import/src/op/size.hpp index 5397dac7dc0dae..f6f567eb830cdb 100644 --- a/ngraph/frontend/onnx_import/src/op/size.hpp +++ b/ngraph/frontend/onnx_import/src/op/size.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/slice.cpp b/ngraph/frontend/onnx_import/src/op/slice.cpp index 1ca631e65834f2..d6570689daceb2 100644 --- a/ngraph/frontend/onnx_import/src/op/slice.cpp +++ b/ngraph/frontend/onnx_import/src/op/slice.cpp @@ -1,23 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include #include +#include "core/null_node.hpp" #include "default_opset.hpp" #include "exceptions.hpp" #include "ngraph/node.hpp" @@ -139,15 +128,16 @@ namespace ngraph // expected_output_shape: {3, 3, 1, 1} OutputVector adjusted_indices(slice_indices_length); std::vector target_axes(axes); - const auto gather_axis = default_opset::Constant::create(element::i64, {}, {0}); + const auto gather_axis = + default_opset::Constant::create(indices.get_element_type(), {}, {0}); int added_indices_number = 0; for (int i = 0; i < slice_indices_length; ++i) { if (std::find(std::begin(axes), std::end(axes), i) == axes.end()) { - adjusted_indices[i] = - default_opset::Constant::create(element::i64, {1}, {fill_in_value}); + adjusted_indices[i] = default_opset::Constant::create( + indices.get_element_type(), {1}, {fill_in_value}); target_axes.insert(std::next(target_axes.begin(), i), i); ++added_indices_number; } @@ -156,7 +146,7 @@ namespace ngraph adjusted_indices[i] = std::make_shared( indices, default_opset::Constant::create( - element::i64, {1}, {i - added_indices_number}), + indices.get_element_type(), {1}, {i - added_indices_number}), gather_axis); } } @@ -178,6 +168,8 @@ namespace ngraph { OutputVector slice(const Node& node) { + using ngraph::op::is_null; + OutputVector inputs{node.get_ng_inputs()}; const auto data = inputs.at(0); const auto data_rank = data.get_partial_shape().rank(); @@ -187,7 +179,7 @@ namespace ngraph // Slice is calculated over all axes as default Output axes; - if (inputs.size() >= 4) // axes input provided + if (inputs.size() >= 4 && !is_null(inputs.at(3))) // axes input provided { axes = inputs.at(3); CHECK_VALID_NODE(node, @@ -218,7 +210,7 @@ namespace ngraph const auto begin_end_mask = axes_to_mask(axes_vec, slice_indices_length); Output steps; - if (inputs.size() == 5) // steps input provided + if (inputs.size() == 5 && !is_null(inputs.at(4))) // steps input provided { steps = inputs.at(4); } diff --git a/ngraph/frontend/onnx_import/src/op/slice.hpp b/ngraph/frontend/onnx_import/src/op/slice.hpp index 75fd374efe2c45..91b0879c890696 100644 --- a/ngraph/frontend/onnx_import/src/op/slice.hpp +++ b/ngraph/frontend/onnx_import/src/op/slice.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/softmax.cpp b/ngraph/frontend/onnx_import/src/op/softmax.cpp index 3666e854eee775..0548e72e6746af 100644 --- a/ngraph/frontend/onnx_import/src/op/softmax.cpp +++ b/ngraph/frontend/onnx_import/src/op/softmax.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/softmax.hpp b/ngraph/frontend/onnx_import/src/op/softmax.hpp index b6ebb1f0d406fc..bf782bd91c6f3c 100644 --- a/ngraph/frontend/onnx_import/src/op/softmax.hpp +++ b/ngraph/frontend/onnx_import/src/op/softmax.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/softplus.cpp b/ngraph/frontend/onnx_import/src/op/softplus.cpp index 6d233ead61be06..a1f314799716c5 100644 --- a/ngraph/frontend/onnx_import/src/op/softplus.cpp +++ b/ngraph/frontend/onnx_import/src/op/softplus.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/softplus.hpp b/ngraph/frontend/onnx_import/src/op/softplus.hpp index c39d5306c5c14a..6b100ae0718dd8 100644 --- a/ngraph/frontend/onnx_import/src/op/softplus.hpp +++ b/ngraph/frontend/onnx_import/src/op/softplus.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/softsign.cpp b/ngraph/frontend/onnx_import/src/op/softsign.cpp index 305d289e70fc4f..b8936570a723f0 100644 --- a/ngraph/frontend/onnx_import/src/op/softsign.cpp +++ b/ngraph/frontend/onnx_import/src/op/softsign.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/softsign.hpp b/ngraph/frontend/onnx_import/src/op/softsign.hpp index 4128e40e284eb2..45511e3c3f96fa 100644 --- a/ngraph/frontend/onnx_import/src/op/softsign.hpp +++ b/ngraph/frontend/onnx_import/src/op/softsign.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/space_to_depth.cpp b/ngraph/frontend/onnx_import/src/op/space_to_depth.cpp index ace8d26fdb9c51..8ef1ed7c540f35 100644 --- a/ngraph/frontend/onnx_import/src/op/space_to_depth.cpp +++ b/ngraph/frontend/onnx_import/src/op/space_to_depth.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/space_to_depth.hpp" #include "default_opset.hpp" @@ -28,7 +16,9 @@ namespace ngraph OutputVector space_to_depth(const Node& node) { auto data = node.get_ng_inputs().at(0); - NGRAPH_CHECK(data.get_shape().size() == 4, "Input must be 4-dimensional"); + const auto& shape = data.get_partial_shape(); + NGRAPH_CHECK(shape.rank().is_static() && shape.rank().get_length() == 4, + "Input must be 4-dimensional"); std::size_t block_size = node.get_attribute_value("blocksize"); const auto mode = default_opset::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; return OutputVector{ diff --git a/ngraph/frontend/onnx_import/src/op/space_to_depth.hpp b/ngraph/frontend/onnx_import/src/op/space_to_depth.hpp index fdec505e163abe..1f9d59a0c7f454 100644 --- a/ngraph/frontend/onnx_import/src/op/space_to_depth.hpp +++ b/ngraph/frontend/onnx_import/src/op/space_to_depth.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/split.cpp b/ngraph/frontend/onnx_import/src/op/split.cpp index bbb7e9aafff463..f31a5e5a112103 100644 --- a/ngraph/frontend/onnx_import/src/op/split.cpp +++ b/ngraph/frontend/onnx_import/src/op/split.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/split.hpp b/ngraph/frontend/onnx_import/src/op/split.hpp index 93b6842a60092e..8b38213ce78c33 100644 --- a/ngraph/frontend/onnx_import/src/op/split.hpp +++ b/ngraph/frontend/onnx_import/src/op/split.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/sqrt.hpp b/ngraph/frontend/onnx_import/src/op/sqrt.hpp index b11fbc26e9f5ae..c7af75e5117e4f 100644 --- a/ngraph/frontend/onnx_import/src/op/sqrt.hpp +++ b/ngraph/frontend/onnx_import/src/op/sqrt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/squeeze.cpp b/ngraph/frontend/onnx_import/src/op/squeeze.cpp index ebb8ef9c305ee5..09bf6c591845f4 100644 --- a/ngraph/frontend/onnx_import/src/op/squeeze.cpp +++ b/ngraph/frontend/onnx_import/src/op/squeeze.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/squeeze.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/op/squeeze.hpp b/ngraph/frontend/onnx_import/src/op/squeeze.hpp index c06bf8290f3019..f548993ed7b1e5 100644 --- a/ngraph/frontend/onnx_import/src/op/squeeze.hpp +++ b/ngraph/frontend/onnx_import/src/op/squeeze.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/sub.hpp b/ngraph/frontend/onnx_import/src/op/sub.hpp index bff12590b4eacf..eba39f8c6bca99 100644 --- a/ngraph/frontend/onnx_import/src/op/sub.hpp +++ b/ngraph/frontend/onnx_import/src/op/sub.hpp @@ -1,22 +1,11 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include "default_opset.hpp" +#include "ngraph/builder/autobroadcast.hpp" #include "ngraph/node.hpp" #include "onnx_import/core/node.hpp" @@ -32,17 +21,19 @@ namespace ngraph { const Output lhs_node = node.get_ng_inputs().at(0); Output rhs_node = node.get_ng_inputs().at(1); - bool broadcast = node.get_attribute_value("broadcast", 0); + const bool broadcast = node.get_attribute_value("broadcast", 0); if (broadcast) { if (node.has_attribute("axis")) { // Unidirectional broadcast right node to left shape. - auto axis = node.get_attribute_value("axis"); + const auto axis = node.get_attribute_value("axis"); + const auto axes_mapping = builder::opset1::get_axes_mapping_output( + lhs_node.get_partial_shape(), rhs_node.get_partial_shape(), axis); rhs_node = std::make_shared( rhs_node, std::make_shared(lhs_node), - default_opset::Constant::create(element::i64, Shape{1}, {axis})); + axes_mapping); } else { @@ -65,7 +56,7 @@ namespace ngraph node.get_ng_inputs().at(1))}; } - } // namespace set_1 + } // namespace set_7 } // namespace op diff --git a/ngraph/frontend/onnx_import/src/op/sum.hpp b/ngraph/frontend/onnx_import/src/op/sum.hpp index f281e4961511b2..1c05d25e2d313c 100644 --- a/ngraph/frontend/onnx_import/src/op/sum.hpp +++ b/ngraph/frontend/onnx_import/src/op/sum.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/tan.hpp b/ngraph/frontend/onnx_import/src/op/tan.hpp index 8ccadf3de63a0c..d7d5a5a82bdcc4 100644 --- a/ngraph/frontend/onnx_import/src/op/tan.hpp +++ b/ngraph/frontend/onnx_import/src/op/tan.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/tanh.hpp b/ngraph/frontend/onnx_import/src/op/tanh.hpp index e651d1031a1712..f9e024b80345a1 100644 --- a/ngraph/frontend/onnx_import/src/op/tanh.hpp +++ b/ngraph/frontend/onnx_import/src/op/tanh.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/thresholded_relu.cpp b/ngraph/frontend/onnx_import/src/op/thresholded_relu.cpp index 01839c8580d6e4..f1d9dd718b289a 100644 --- a/ngraph/frontend/onnx_import/src/op/thresholded_relu.cpp +++ b/ngraph/frontend/onnx_import/src/op/thresholded_relu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/thresholded_relu.hpp b/ngraph/frontend/onnx_import/src/op/thresholded_relu.hpp index 61a8678740e70b..fdf1711855647c 100644 --- a/ngraph/frontend/onnx_import/src/op/thresholded_relu.hpp +++ b/ngraph/frontend/onnx_import/src/op/thresholded_relu.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/tile.cpp b/ngraph/frontend/onnx_import/src/op/tile.cpp index 87bc78b50bbde5..4246ef926b9389 100644 --- a/ngraph/frontend/onnx_import/src/op/tile.cpp +++ b/ngraph/frontend/onnx_import/src/op/tile.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/tile.hpp b/ngraph/frontend/onnx_import/src/op/tile.hpp index 19832dc3f3cdc1..e33b7e3f67488a 100644 --- a/ngraph/frontend/onnx_import/src/op/tile.hpp +++ b/ngraph/frontend/onnx_import/src/op/tile.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/topk.cpp b/ngraph/frontend/onnx_import/src/op/topk.cpp index 1bee9054647710..606c1fa3d8123a 100644 --- a/ngraph/frontend/onnx_import/src/op/topk.cpp +++ b/ngraph/frontend/onnx_import/src/op/topk.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/topk.hpp b/ngraph/frontend/onnx_import/src/op/topk.hpp index e5cdb1c75a540a..f57c512056ada5 100644 --- a/ngraph/frontend/onnx_import/src/op/topk.hpp +++ b/ngraph/frontend/onnx_import/src/op/topk.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/transpose.cpp b/ngraph/frontend/onnx_import/src/op/transpose.cpp index 93c23f0ddb534c..8878d401a3a8a5 100644 --- a/ngraph/frontend/onnx_import/src/op/transpose.cpp +++ b/ngraph/frontend/onnx_import/src/op/transpose.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/op/transpose.hpp b/ngraph/frontend/onnx_import/src/op/transpose.hpp index 510940e7574751..7540cbe0c81e8b 100644 --- a/ngraph/frontend/onnx_import/src/op/transpose.hpp +++ b/ngraph/frontend/onnx_import/src/op/transpose.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/unsqueeze.cpp b/ngraph/frontend/onnx_import/src/op/unsqueeze.cpp index e233713d402cbe..99697a6b217c18 100644 --- a/ngraph/frontend/onnx_import/src/op/unsqueeze.cpp +++ b/ngraph/frontend/onnx_import/src/op/unsqueeze.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/op/unsqueeze.hpp b/ngraph/frontend/onnx_import/src/op/unsqueeze.hpp index 02a5f03ac168d6..6d881cb50b31f9 100644 --- a/ngraph/frontend/onnx_import/src/op/unsqueeze.hpp +++ b/ngraph/frontend/onnx_import/src/op/unsqueeze.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/upsample.cpp b/ngraph/frontend/onnx_import/src/op/upsample.cpp index be5ed1ef55f9c4..5bbafbe06c2173 100644 --- a/ngraph/frontend/onnx_import/src/op/upsample.cpp +++ b/ngraph/frontend/onnx_import/src/op/upsample.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -29,14 +17,20 @@ namespace ngraph { namespace { - bool check_mode_support(const onnx_import::Node& node, const std::string& mode) + constexpr unsigned version_1{1}; + constexpr unsigned version_7{7}; + constexpr unsigned version_9{9}; + + void check_mode_support(const onnx_import::Node& node, + const std::string& mode, + const unsigned op_version) { - const std::unordered_set supported_modes = {"nearest", "linear"}; - bool is_mode_supported = - (std::find(supported_modes.begin(), supported_modes.end(), mode) != - supported_modes.end()); + const std::unordered_set modes_v1 = {"nearest", "bilinear"}; + const std::unordered_set modes_v7 = {"nearest", "linear"}; + const auto& supported_modes = op_version < version_7 ? modes_v1 : modes_v7; - if (!is_mode_supported) + if (std::find(supported_modes.cbegin(), supported_modes.cend(), mode) == + supported_modes.cend()) { std::string supported_modes_str = ""; for (const auto& mode_name : supported_modes) @@ -44,165 +38,123 @@ namespace ngraph supported_modes_str += (mode_name + ", "); } CHECK_VALID_NODE(node, - is_mode_supported, + false, mode, " - this type of interpolation mode is not supported." " Choose one of the following modes: ", supported_modes_str); } - return is_mode_supported; } - using Transform_mode = ngraph::op::v4::Interpolate::CoordinateTransformMode; - using Nearest_mode = ngraph::op::v4::Interpolate::NearestMode; - using InterpolateMode = ngraph::op::v4::Interpolate::InterpolateMode; - using ShapeCalcMode = ngraph::op::v4::Interpolate::ShapeCalcMode; + default_opset::Interpolate::InterpolateAttrs get_attributes(std::string mode) + { + using InterpolateMode = default_opset::Interpolate::InterpolateMode; + using Transform_mode = default_opset::Interpolate::CoordinateTransformMode; + using ShapeCalcMode = default_opset::Interpolate::ShapeCalcMode; + + const auto interpolate_mode = + (mode == "linear" || mode == "bilinear" ? InterpolateMode::linear_onnx + : InterpolateMode::nearest); + + std::vector pad{0}; + auto attrs = default_opset::Interpolate::InterpolateAttrs( + interpolate_mode, ShapeCalcMode::scales, pad, pad); + + if (attrs.mode == InterpolateMode::linear_onnx) + attrs.coordinate_transformation_mode = Transform_mode::asymmetric; + + return attrs; + } - InterpolateMode convert_mode(const std::string& mode_str) + OutputVector create_upsample_subgraph(const Output& data, + const Output& scales, + const std::string& mode) { - InterpolateMode result = InterpolateMode::nearest; - if (mode_str == "linear") - { - result = InterpolateMode::linear_onnx; - } - return result; + const auto shape_of_data = std::make_shared( + std::make_shared(data), ngraph::element::f32); + const auto multiply = + std::make_shared(shape_of_data, scales); + const auto output_shape = std::make_shared( + std::make_shared(multiply), ngraph::element::i64); + + return {std::make_shared( + data, output_shape, scales, get_attributes(mode))}; } - } + + } // namespace namespace set_1 { OutputVector upsample(const onnx_import::Node& node) { - const auto inputs = node.get_ng_inputs(); - const auto data = inputs.at(0); - - const auto data_shape = data.get_partial_shape(); - - const auto scales = node.get_attribute_value>("scales"); + const auto height_scale = node.get_attribute_value("height_scale"); + const auto width_scale = node.get_attribute_value("width_scale"); const auto mode = node.get_attribute_value("mode", "nearest"); - check_mode_support(node, mode); + check_mode_support(node, mode, version_1); - auto attrs = ngraph::op::v4::Interpolate::InterpolateAttrs(); - attrs.mode = convert_mode(mode); - attrs.shape_calculation_mode = ShapeCalcMode::scales; - attrs.coordinate_transformation_mode = Transform_mode::half_pixel; - attrs.nearest_mode = Nearest_mode::round_prefer_floor; - attrs.antialias = false; - attrs.cube_coeff = -0.75; + const auto data = node.get_ng_inputs().at(0); - if (attrs.mode == InterpolateMode::linear_onnx) - { - attrs.coordinate_transformation_mode = Transform_mode::asymmetric; - } + static const std::string expectation{"Input tensor is required to be 4D."}; + const auto rank = data.get_partial_shape().rank(); + CHECK_VALID_NODE(node, rank.is_static(), expectation); + const auto rank_size = rank.get_length(); + CHECK_VALID_NODE(node, rank_size == 4, expectation); - auto zero_pad = std::vector(1, 0); + std::vector scales(rank_size, 1.f); + scales[rank_size - 1] = width_scale; + scales[rank_size - 2] = height_scale; - attrs.pads_begin = zero_pad; - attrs.pads_end = zero_pad; + const auto scales_const = default_opset::Constant::create( + ngraph::element::f32, Shape({scales.size()}), scales); - if (data_shape.is_static()) - { - auto data_static_shape = data_shape.to_shape(); + return create_upsample_subgraph(data, scales_const, mode); + } - std::vector output_shape; - for (size_t i = 0; i < data_static_shape.size(); ++i) - { - output_shape.push_back( - std::floor(data_static_shape.at(i) * scales.at(i))); - } - auto output_shape_const = default_opset::Constant::create( - element::u64, Shape({output_shape.size()}), output_shape); + } // namespace set_1 + + namespace set_7 + { + OutputVector upsample(const onnx_import::Node& node) + { + const auto scales = node.get_attribute_value>("scales"); + const auto mode = node.get_attribute_value("mode", "nearest"); + check_mode_support(node, mode, version_7); - const auto scales_const = default_opset::Constant::create( - ngraph::element::f32, Shape({scales.size()}), scales); + const auto data = node.get_ng_inputs().at(0); - return {std::make_shared( - data, output_shape_const, scales_const, attrs)}; - } + const auto rank = data.get_partial_shape().rank(); + CHECK_VALID_NODE(node, + rank.is_static() && scales.size() == rank.get_length(), + "Input tensor's rank is required to be the same as number of " + "elements of 'scales' attribute."); const auto scales_const = default_opset::Constant::create( ngraph::element::f32, Shape({scales.size()}), scales); - auto shape_of_data = std::make_shared( - std::make_shared(data), ngraph::element::f32); - auto multiply = - std::make_shared(shape_of_data, scales_const); - auto output_shape = std::make_shared( - std::make_shared(multiply), ngraph::element::i64); - - return {std::make_shared( - data, output_shape, scales_const, attrs)}; + return create_upsample_subgraph(data, scales_const, mode); } - } // namespace set_1 + } // namespace set_7 namespace set_9 { OutputVector upsample(const onnx_import::Node& node) { - const auto inputs = node.get_ng_inputs(); - const auto data = inputs.at(0); - const auto scales = inputs.at(1); - - const auto data_shape = data.get_partial_shape(); - const auto scales_shape = scales.get_partial_shape(); - const auto mode = node.get_attribute_value("mode", "nearest"); - check_mode_support(node, mode); + check_mode_support(node, mode, version_9); + const auto inputs = node.get_ng_inputs(); + const auto& data = inputs.at(0); + const auto& scales = inputs.at(1); + + const auto& data_shape = data.get_partial_shape(); + const auto& scales_shape = scales.get_partial_shape(); CHECK_VALID_NODE( node, (scales_shape.is_static() || data_shape.rank().is_static()), " Data rank or shape of Scales input is required to be static."); - auto attrs = ngraph::op::v4::Interpolate::InterpolateAttrs(); - attrs.mode = convert_mode(mode); - attrs.shape_calculation_mode = ShapeCalcMode::scales; - attrs.coordinate_transformation_mode = Transform_mode::half_pixel; - attrs.nearest_mode = Nearest_mode::round_prefer_floor; - attrs.antialias = false; - attrs.cube_coeff = -0.75; - - if (attrs.mode == InterpolateMode::linear_onnx) - { - attrs.coordinate_transformation_mode = Transform_mode::asymmetric; - } - - auto zero_pad = std::vector(1, 0); - - attrs.pads_begin = zero_pad; - attrs.pads_end = zero_pad; - - if (ngraph::op::is_constant(scales.get_node()) && data_shape.is_static()) - { - const auto scales_const = - as_type_ptr(scales.get_node_shared_ptr()); - - auto scales_vector = scales_const->cast_vector(); - auto data_static_shape = data_shape.to_shape(); - - std::vector output_shape; - for (size_t i = 0; i < data_static_shape.size(); ++i) - { - output_shape.push_back( - std::floor(data_static_shape.at(i) * scales_vector.at(i))); - } - auto output_shape_const = default_opset::Constant::create( - element::u64, Shape({output_shape.size()}), output_shape); - - return {std::make_shared( - data, output_shape_const, scales, attrs)}; - } - - auto shape_of_data = std::make_shared( - std::make_shared(data), ngraph::element::f32); - auto multiply = - std::make_shared(shape_of_data, scales); - auto output_shape = std::make_shared( - std::make_shared(multiply), ngraph::element::i64); - - return {std::make_shared( - data, output_shape, scales, attrs)}; + return create_upsample_subgraph(data, scales, mode); } } // namespace set_9 diff --git a/ngraph/frontend/onnx_import/src/op/upsample.hpp b/ngraph/frontend/onnx_import/src/op/upsample.hpp index e06dff08abeee5..59b64316e6d3e1 100644 --- a/ngraph/frontend/onnx_import/src/op/upsample.hpp +++ b/ngraph/frontend/onnx_import/src/op/upsample.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -31,6 +19,12 @@ namespace ngraph } // namespace set_1 + namespace set_7 + { + OutputVector upsample(const Node& node); + + } // namespace set_7 + namespace set_9 { OutputVector upsample(const Node& node); diff --git a/ngraph/frontend/onnx_import/src/op/where.hpp b/ngraph/frontend/onnx_import/src/op/where.hpp index 1edc6f5aef45be..dd61edece90746 100644 --- a/ngraph/frontend/onnx_import/src/op/where.hpp +++ b/ngraph/frontend/onnx_import/src/op/where.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/op/xor.hpp b/ngraph/frontend/onnx_import/src/op/xor.hpp index c4ad044348d67c..124a97f07fd3f7 100644 --- a/ngraph/frontend/onnx_import/src/op/xor.hpp +++ b/ngraph/frontend/onnx_import/src/op/xor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/ops_bridge.cpp b/ngraph/frontend/onnx_import/src/ops_bridge.cpp index 12c25fddfb3bba..e2107c8ade35da 100644 --- a/ngraph/frontend/onnx_import/src/ops_bridge.cpp +++ b/ngraph/frontend/onnx_import/src/ops_bridge.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -35,6 +23,7 @@ #include "op/atanh.hpp" #include "op/average_pool.hpp" #include "op/batch_norm.hpp" +#include "op/bitshift.hpp" #include "op/cast.hpp" #include "op/ceil.hpp" #include "op/clip.hpp" @@ -144,6 +133,7 @@ #include "op/xor.hpp" #include "ops_bridge.hpp" +#include "op/org.openvinotoolkit/deformable_conv_2d.hpp" #include "op/org.openvinotoolkit/detection_output.hpp" #include "op/org.openvinotoolkit/experimental_detectron/detection_output.hpp" #include "op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp" @@ -324,6 +314,7 @@ namespace ngraph REGISTER_OPERATOR("Atanh", 1, atanh); REGISTER_OPERATOR("AveragePool", 1, average_pool); REGISTER_OPERATOR("BatchNormalization", 1, batch_norm); + REGISTER_OPERATOR("BitShift", 1, bitshift); REGISTER_OPERATOR("Cast", 1, cast); REGISTER_OPERATOR("Ceil", 1, ceil); REGISTER_OPERATOR("Clip", 1, clip); @@ -465,11 +456,14 @@ namespace ngraph REGISTER_OPERATOR("Unsqueeze", 1, unsqueeze); REGISTER_OPERATOR("Unsqueeze", 13, unsqueeze); REGISTER_OPERATOR("Upsample", 1, upsample); + REGISTER_OPERATOR("Upsample", 7, upsample); REGISTER_OPERATOR("Upsample", 9, upsample); REGISTER_OPERATOR("Where", 1, where); REGISTER_OPERATOR("Xor", 1, logical_xor); // custom OPs + REGISTER_OPERATOR_WITH_DOMAIN( + OPENVINO_ONNX_DOMAIN, "DeformableConv2D", 1, deformable_conv_2d); REGISTER_OPERATOR_WITH_DOMAIN( OPENVINO_ONNX_DOMAIN, "DetectionOutput", 1, detection_output); REGISTER_OPERATOR_WITH_DOMAIN(OPENVINO_ONNX_DOMAIN, diff --git a/ngraph/frontend/onnx_import/src/ops_bridge.hpp b/ngraph/frontend/onnx_import/src/ops_bridge.hpp index 08e80ff4a15903..341ec931179cd4 100644 --- a/ngraph/frontend/onnx_import/src/ops_bridge.hpp +++ b/ngraph/frontend/onnx_import/src/ops_bridge.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -52,9 +40,9 @@ namespace ngraph UnsupportedVersion(const std::string& name, std::int64_t version, const std::string& domain) - : ngraph_error{"Unsupported operator version: " + - (domain.empty() ? "" : domain + ".") + name + ":" + - std::to_string(version)} + : ngraph_error{ + "Unsupported operator version: " + (domain.empty() ? "" : domain + ".") + + name + ":" + std::to_string(version)} { } }; diff --git a/ngraph/frontend/onnx_import/src/precomp.hpp b/ngraph/frontend/onnx_import/src/precomp.hpp index 8663d5932be90d..bc3454cc228fb1 100644 --- a/ngraph/frontend/onnx_import/src/precomp.hpp +++ b/ngraph/frontend/onnx_import/src/precomp.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.cpp b/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.cpp index 80e967743671cf..3826bf1b080e7c 100644 --- a/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.cpp +++ b/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "utils/arg_min_max_factory.hpp" #include "default_opset.hpp" diff --git a/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.hpp b/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.hpp index 5a74e8c52be211..b87337b74af504 100644 --- a/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.hpp +++ b/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #pragma once #include diff --git a/ngraph/frontend/onnx_import/src/utils/common.cpp b/ngraph/frontend/onnx_import/src/utils/common.cpp index 23daf6b9f27232..fd3d387000d625 100644 --- a/ngraph/frontend/onnx_import/src/utils/common.cpp +++ b/ngraph/frontend/onnx_import/src/utils/common.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include // onnx types #include "default_opset.hpp" @@ -53,35 +42,6 @@ namespace ngraph #endif } - size_t get_onnx_data_size(int32_t onnx_type) - { - switch (onnx_type) - { - case ONNX_NAMESPACE::TensorProto_DataType_BOOL: return sizeof(char); - case ONNX_NAMESPACE::TensorProto_DataType_COMPLEX128: return 2 * sizeof(double); - case ONNX_NAMESPACE::TensorProto_DataType_COMPLEX64: return 2 * sizeof(float); - case ONNX_NAMESPACE::TensorProto_DataType_DOUBLE: return sizeof(double); - case ONNX_NAMESPACE::TensorProto_DataType_FLOAT16: return 2; - case ONNX_NAMESPACE::TensorProto_DataType_FLOAT: return sizeof(float); - case ONNX_NAMESPACE::TensorProto_DataType_INT8: return sizeof(int8_t); - case ONNX_NAMESPACE::TensorProto_DataType_INT16: return sizeof(int16_t); - case ONNX_NAMESPACE::TensorProto_DataType_INT32: return sizeof(int32_t); - case ONNX_NAMESPACE::TensorProto_DataType_INT64: return sizeof(int64_t); - case ONNX_NAMESPACE::TensorProto_DataType_UINT8: return sizeof(uint8_t); - case ONNX_NAMESPACE::TensorProto_DataType_UINT16: return sizeof(uint16_t); - case ONNX_NAMESPACE::TensorProto_DataType_UINT32: return sizeof(uint32_t); - case ONNX_NAMESPACE::TensorProto_DataType_UINT64: return sizeof(uint64_t); - } -#ifdef NGRAPH_USE_PROTOBUF_LITE - throw ngraph_error("unsupported element type"); -#else - throw ngraph_error( - "unsupported element type: " + - ONNX_NAMESPACE::TensorProto_DataType_Name( - static_cast(onnx_type))); -#endif - } - std::shared_ptr get_monotonic_range_along_node_rank( const Output& value, int64_t start_value, int64_t step) { diff --git a/ngraph/frontend/onnx_import/src/utils/common.hpp b/ngraph/frontend/onnx_import/src/utils/common.hpp index b8559d29ebc06e..8e9f0b0c5075de 100644 --- a/ngraph/frontend/onnx_import/src/utils/common.hpp +++ b/ngraph/frontend/onnx_import/src/utils/common.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -39,8 +27,6 @@ namespace ngraph { const ngraph::element::Type& get_ngraph_element_type(std::int64_t onnx_type); - size_t get_onnx_data_size(int32_t onnx_type); - /// \brief Return a monotonic sequence. /// /// \note Limitations: this function may not work for very large integer values diff --git a/ngraph/frontend/onnx_import/src/utils/convpool.cpp b/ngraph/frontend/onnx_import/src/utils/convpool.cpp index b44b5563125694..1afb78acbf6452 100644 --- a/ngraph/frontend/onnx_import/src/utils/convpool.cpp +++ b/ngraph/frontend/onnx_import/src/utils/convpool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/utils/convpool.hpp b/ngraph/frontend/onnx_import/src/utils/convpool.hpp index cf47545142a958..f5de4dacd4ad77 100644 --- a/ngraph/frontend/onnx_import/src/utils/convpool.hpp +++ b/ngraph/frontend/onnx_import/src/utils/convpool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/utils/onnx_test_util.hpp b/ngraph/frontend/onnx_import/src/utils/onnx_test_util.hpp deleted file mode 100644 index 6c97bd1c1fee5b..00000000000000 --- a/ngraph/frontend/onnx_import/src/utils/onnx_test_util.hpp +++ /dev/null @@ -1,54 +0,0 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//***************************************************************************** - -#pragma once - -#include - -#include "onnx_import/utils/onnx_importer_visibility.hpp" - -namespace ngraph -{ - namespace onnx_import - { - struct ONNX_IMPORTER_API ComparisonResult - { - ComparisonResult() = default; - ComparisonResult(std::string error) - : is_ok{false} - , error_message{std::move(error)} - { - } - ComparisonResult(ComparisonResult&&) = default; - ComparisonResult(const ComparisonResult&) = default; - ComparisonResult& operator=(ComparisonResult&&) = default; - ComparisonResult& operator=(const ComparisonResult&) = default; - - bool is_ok = true; - std::string error_message; - - static ComparisonResult pass() { return {}; } - static ComparisonResult fail(std::string error) - { - return ComparisonResult{std::move(error)}; - } - }; - - ONNX_IMPORTER_API ComparisonResult - compare_onnx_models(const std::string& model, const std::string& reference_model_path); - - } // namespace onnx_import -} // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/utils/pooling_factory.cpp b/ngraph/frontend/onnx_import/src/utils/pooling_factory.cpp index ea322a30b12981..89067ebe22215a 100644 --- a/ngraph/frontend/onnx_import/src/utils/pooling_factory.cpp +++ b/ngraph/frontend/onnx_import/src/utils/pooling_factory.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/frontend/onnx_import/src/utils/pooling_factory.hpp b/ngraph/frontend/onnx_import/src/utils/pooling_factory.hpp index 56423f9eafb756..aee6e4a346f035 100644 --- a/ngraph/frontend/onnx_import/src/utils/pooling_factory.hpp +++ b/ngraph/frontend/onnx_import/src/utils/pooling_factory.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #pragma once #include diff --git a/ngraph/frontend/onnx_import/src/utils/provenance_tag.cpp b/ngraph/frontend/onnx_import/src/utils/provenance_tag.cpp index 280b9913ac48f1..7df5be715159b1 100644 --- a/ngraph/frontend/onnx_import/src/utils/provenance_tag.cpp +++ b/ngraph/frontend/onnx_import/src/utils/provenance_tag.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/utils/provenance_tag.hpp b/ngraph/frontend/onnx_import/src/utils/provenance_tag.hpp index 60a32223a1f4a7..e85df9ead0f171 100644 --- a/ngraph/frontend/onnx_import/src/utils/provenance_tag.hpp +++ b/ngraph/frontend/onnx_import/src/utils/provenance_tag.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #pragma once #include diff --git a/ngraph/frontend/onnx_import/src/utils/recurrent.cpp b/ngraph/frontend/onnx_import/src/utils/recurrent.cpp index cc4a0b73d146de..3712755409219a 100644 --- a/ngraph/frontend/onnx_import/src/utils/recurrent.cpp +++ b/ngraph/frontend/onnx_import/src/utils/recurrent.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -64,10 +52,8 @@ namespace ngraph { auto bias = ng_inputs.at(3); auto split_bias = builder::opset1::split(bias, 2, 1); - NGRAPH_SUPPRESS_DEPRECATED_START m_map[OpInput::B] = std::make_shared(split_bias.at(0), split_bias.at(1)); - NGRAPH_SUPPRESS_DEPRECATED_END } else { @@ -127,10 +113,9 @@ namespace ngraph , m_clip_threshold{node.get_attribute_value("clip", 0.f)} // Recurrent Operators which have more activation functions should override // this value in constructor of respective Attributes' struct. - , m_activations{node.get_attribute_value>("activations", - {"tanh"})} - // Default values for activation functions are same as for corresponding - // ONNX operator. + , m_activations{node.get_attribute_value>( + "activations", {"tanh"})} // Default values for activation functions are same + // as for corresponding ONNX operator. , m_activations_alpha{node.get_attribute_value>( "activation_alpha", std::vector{})} , m_activations_beta{node.get_attribute_value>( diff --git a/ngraph/frontend/onnx_import/src/utils/recurrent.hpp b/ngraph/frontend/onnx_import/src/utils/recurrent.hpp index fade30ade3db4e..87aa6af5f35590 100644 --- a/ngraph/frontend/onnx_import/src/utils/recurrent.hpp +++ b/ngraph/frontend/onnx_import/src/utils/recurrent.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/utils/reshape.cpp b/ngraph/frontend/onnx_import/src/utils/reshape.cpp index a807a0a50dee9e..8a017542c9b746 100644 --- a/ngraph/frontend/onnx_import/src/utils/reshape.cpp +++ b/ngraph/frontend/onnx_import/src/utils/reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/utils/reshape.hpp b/ngraph/frontend/onnx_import/src/utils/reshape.hpp index d5f6b8dfd5bdcf..74b71d8cb9ca61 100644 --- a/ngraph/frontend/onnx_import/src/utils/reshape.hpp +++ b/ngraph/frontend/onnx_import/src/utils/reshape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/utils/tensor_external_data.cpp b/ngraph/frontend/onnx_import/src/utils/tensor_external_data.cpp index 5a6010d8def2f1..98759d922cb575 100644 --- a/ngraph/frontend/onnx_import/src/utils/tensor_external_data.cpp +++ b/ngraph/frontend/onnx_import/src/utils/tensor_external_data.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/frontend/onnx_import/src/utils/tensor_external_data.hpp b/ngraph/frontend/onnx_import/src/utils/tensor_external_data.hpp index 71f1e8254ce617..a2fd166b060a38 100644 --- a/ngraph/frontend/onnx_import/src/utils/tensor_external_data.hpp +++ b/ngraph/frontend/onnx_import/src/utils/tensor_external_data.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2019 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/onnx_import/src/utils/variadic.hpp b/ngraph/frontend/onnx_import/src/utils/variadic.hpp index e518fbec0fbb43..a1dff99af4acb8 100644 --- a/ngraph/frontend/onnx_import/src/utils/variadic.hpp +++ b/ngraph/frontend/onnx_import/src/utils/variadic.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/frontend/paddlepaddle/src/frontend.cpp b/ngraph/frontend/paddlepaddle/src/frontend.cpp index 6230049b85624f..2dd37a4282ab26 100644 --- a/ngraph/frontend/paddlepaddle/src/frontend.cpp +++ b/ngraph/frontend/paddlepaddle/src/frontend.cpp @@ -196,11 +196,19 @@ std::shared_ptr } else if (op.type() == "fetch") { auto input_node = inputs_dict["X"][0]; MY_ASSERT(nodes_dict.find(input_node) != nodes_dict.end()); - result_nodes.push_back(std::make_shared(nodes_dict[input_node])); + auto result = std::make_shared(nodes_dict[input_node]); + result->set_friendly_name(input_node); + result_nodes.push_back(result); } else { auto node = make_ng_node(inputs_dict, nodes_dict, op, block, CREATORS_MAP); - std::cerr << "Node created: " << node << "\n"; - node->set_friendly_name(op.outputs()[0].parameter()); + std::string layer_name; + for (const auto& outs : outputs_dict) { + for (const auto& fieldName : outs.second) { + layer_name += fieldName; + } + } + node->set_friendly_name(layer_name); + std::cerr << "Named with " << node->get_friendly_name() << "\n"; for (const auto &item : outputs_dict) { MY_ASSERT(item.second.size() <= 1); diff --git a/ngraph/maint/apply-code-format.sh b/ngraph/maint/apply-code-format.sh deleted file mode 100755 index 95e93f13ea8a35..00000000000000 --- a/ngraph/maint/apply-code-format.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -set -e -set -u - -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -# NOTE: The results of `clang-format` depend _both_ of the following factors: -# - The `.clang-format` file, and -# - The particular version of the `clang-format` program being used. -# -# For this reason, this script specifies the exact version of clang-format to be used. - -declare CLANG_FORMAT_BASENAME="clang-format-3.9" -declare REQUIRED_CLANG_FORMAT_VERSION=3.9 - -declare THIS_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -source "${THIS_SCRIPT_DIR}/bash_lib.sh" -source "${THIS_SCRIPT_DIR}/clang_format_lib.sh" - -declare CLANG_FORMAT_PROG -if ! CLANG_FORMAT_PROG="$(which "${CLANG_FORMAT_BASENAME}")"; then - bash_lib_die "Unable to find program ${CLANG_FORMAT_BASENAME}" >&2 -fi - -clang_format_lib_verify_version "${CLANG_FORMAT_PROG}" "${REQUIRED_CLANG_FORMAT_VERSION}" -echo "Verified that '${CLANG_FORMAT_PROG}' has version '${REQUIRED_CLANG_FORMAT_VERSION}'" - -pushd "${THIS_SCRIPT_DIR}/.." - -declare ROOT_SUBDIR -for ROOT_SUBDIR in core test frontend python/src/pyngraph; do - if ! [[ -d "${ROOT_SUBDIR}" ]]; then - echo "In directory '$(pwd)', no subdirectory named '${ROOT_SUBDIR}' was found." - else - echo "About to format C/C++ code in directory tree '$(pwd)/${ROOT_SUBDIR}' ..." - - # Note that we restrict to "-type f" to exclude symlinks. Emacs sometimes - # creates dangling symlinks with .cpp/.hpp suffixes as a sort of locking - # mechanism, and this confuses clang-format. - find "${ROOT_SUBDIR}" -type f -and \( -name '*.cpp' -or -name '*.hpp' \) | xargs "${CLANG_FORMAT_PROG}" -i -style=file - - echo "Done." - fi -done - -popd diff --git a/ngraph/maint/bash_lib.sh b/ngraph/maint/bash_lib.sh deleted file mode 100755 index 5d884c10156a2b..00000000000000 --- a/ngraph/maint/bash_lib.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash - -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -#=================================================================================================== -# A library of general-purpose Bash functions -#=================================================================================================== - -declare _intelnervana_bash_lib_SCRIPT_NAME="${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}" -declare _maint_SCRIPT_DIR="$( cd $(dirname "${_intelnervana_bash_lib_SCRIPT_NAME}") && pwd )" -declare _intelnervana_bash_lib_IS_LOADED=1 - -bash_lib_get_my_BASH_LINENO() { - echo "${BASH_LINENO[${#BASH_LINENO[@]} -1 ]}" -} - -bash_lib_get_callers_BASH_LINENO() { - echo "${BASH_LINENO[${#BASH_LINENO[@]} - 2]}" -} - -bash_lib_get_my_BASH_SOURCE() { - echo "${BASH_SOURCE[${#BASH_SOURCE[@]} ]}" -} - -bash_lib_get_callers_BASH_SOURCE() { - echo "${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}" -} - -bash_lib_status() { - local CONTEXT_STRING="$(basename $(bash_lib_get_callers_BASH_SOURCE))" - local TEXT_LINE - local IS_FIRST_LINE=1 - - for TEXT_LINE in "${@}"; do - if (( IS_FIRST_LINE == 1 )); then - IS_FIRST_LINE=0 - printf "%s STATUS: " "${CONTEXT_STRING}" >&2 - else - printf " " >&2 - fi - - printf "%s\n" "${TEXT_LINE}" >&2 - done -} - -bash_lib_print_error() { - local CONTEXT_STRING="$(basename $(bash_lib_get_callers_BASH_SOURCE)):$(bash_lib_get_callers_BASH_LINENO)" - local TEXT_LINE - local IS_FIRST_LINE=1 - - for TEXT_LINE in "${@}"; do - if (( IS_FIRST_LINE == 1 )); then - IS_FIRST_LINE=0 - printf "%s ERROR: " "${CONTEXT_STRING}" >&2 - else - printf " " >&2 - fi - - printf "%s\n" "${TEXT_LINE}" >&2 - done -} - -bash_lib_die() { - bash_lib_print_error $@ - exit 1 -} - -bash_lib_am_sudo_or_root() { - [ "$EUID" -eq 0 ] -} - -if bash_lib_am_sudo_or_root; then - bash_lib_MAYBE_SUDO='' -else - bash_lib_MAYBE_SUDO='sudo --set-home' -fi diff --git a/ngraph/maint/check-code-format.sh b/ngraph/maint/check-code-format.sh deleted file mode 100755 index bbfe54bb7482aa..00000000000000 --- a/ngraph/maint/check-code-format.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash -set -e -set -u - -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -# NOTE: The results of `clang-format` depend _both_ of the following factors: -# - The `.clang-format` file, and -# - The particular version of the `clang-format` program being used. -# -# For this reason, this script specifies the exact version of clang-format to be used. - -declare CLANG_FORMAT_BASENAME="clang-format-3.9" -declare REQUIRED_CLANG_FORMAT_VERSION=3.9 - -declare THIS_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -source "${THIS_SCRIPT_DIR}/bash_lib.sh" -source "${THIS_SCRIPT_DIR}/clang_format_lib.sh" - -declare CLANG_FORMAT_PROG -if ! CLANG_FORMAT_PROG="$(which "${CLANG_FORMAT_BASENAME}")"; then - bash_lib_die "Unable to find program ${CLANG_FORMAT_BASENAME}" >&2 -fi - -clang_format_lib_verify_version "${CLANG_FORMAT_PROG}" "${REQUIRED_CLANG_FORMAT_VERSION}" -echo "Verified that '${CLANG_FORMAT_PROG}' has version '${REQUIRED_CLANG_FORMAT_VERSION}'" - -declare -a FAILED_FILES=() -declare NUM_FILES_CHECKED=0 - -pushd "${THIS_SCRIPT_DIR}/.." - -declare PYBIND_WRAPPER="python/pyngraph" - -declare ROOT_SUBDIR -for ROOT_SUBDIR in core test frontend python/src/pyngraph; do - if ! [[ -d "${ROOT_SUBDIR}" ]]; then - echo "In directory '$(pwd)', no subdirectory named '${ROOT_SUBDIR}' was found." - else - echo "About to format C/C++ code in directory tree '$(pwd)/${ROOT_SUBDIR}' ..." - declare SRC_FILE - # Note that we restrict to "-type f" to exclude symlinks. Emacs sometimes - # creates dangling symlinks with .cpp/.hpp suffixes as a sort of locking - # mechanism, and this confuses clang-format. - for SRC_FILE in $(find "${ROOT_SUBDIR}" -type f -and \( -name '*.cpp' -or -name '*.hpp' \) ); do - if "${CLANG_FORMAT_PROG}" -style=file -output-replacements-xml "${SRC_FILE}" | grep -c "/dev/null; then - FAILED_FILES+=( "${SRC_FILE}" ) - fi - NUM_FILES_CHECKED=$((NUM_FILES_CHECKED+1)) - done - fi -done - -popd - -if [[ ${#FAILED_FILES[@]} -eq 0 ]]; then - echo "All ${NUM_FILES_CHECKED} C/C++ files pass the code-format check." -else - echo "${#FAILED_FILES[@]} of ${NUM_FILES_CHECKED} source files failed the code-format check:" - declare FAILED_SRC_FILE - for FAILED_SRC_FILE in ${FAILED_FILES[@]}; do - echo " ${FAILED_SRC_FILE}" - done - exit 1 -fi diff --git a/ngraph/maint/clang_format_lib.sh b/ngraph/maint/clang_format_lib.sh deleted file mode 100755 index 0b21f08447a981..00000000000000 --- a/ngraph/maint/clang_format_lib.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -#=================================================================================================== -# Provides Bash functions for dealing with clang-format. -#=================================================================================================== - -declare _intelnervana_clang_format_lib_SCRIPT_NAME="${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}" -declare _maint_SCRIPT_DIR="$( cd $(dirname "${_intelnervana_clang_format_lib_SCRIPT_NAME}") && pwd )" - -source "${_maint_SCRIPT_DIR}/bash_lib.sh" - -clang_format_lib_verify_version() { - if (( $# != 2 )); then - bash_lib_print_error "Usage: ${FUNCNAME[0]} " - return 1 - fi - - local PROGNAME="${1}" - local REQUIRED_VERSION_X_Y="${2}" - - if ! [[ "${REQUIRED_VERSION_X_Y}" =~ ^[0-9]+.[0-9]+$ ]]; then - bash_lib_print_error "${FUNCNAME[0]}: required-version-number must have the form (number).(number)." - return 1 - fi - - if ! [[ -f "${PROGNAME}" ]]; then - bash_lib_print_error "Unable to find clang-format program named '${PROGNAME}'" - return 1 - fi - - local VERSION_LINE - if ! VERSION_LINE=$("${PROGNAME}" --version); then - bash_lib_print_error "Failed invocation of command '${PROGNAME} --version'" - return 1 - fi - - local SED_FLAGS - if [[ "$(uname)" == 'Darwin' ]]; then - SED_FLAGS='-En' - else - SED_FLAGS='-rn' - fi - - local VERSION_X_Y - if ! VERSION_X_Y=$(echo "${VERSION_LINE}" | sed ${SED_FLAGS} 's/^clang-format version ([0-9]+.[0-9]+).*$/\1/p') - then - bash_lib_print_error "Failed invocation of sed." - return 1 - fi - - if [[ "${REQUIRED_VERSION_X_Y}" != "${VERSION_X_Y}" ]]; then - bash_lib_print_error \ - "Program '${PROGNAME}' reports version number '${VERSION_X_Y}'" \ - "but we require '${REQUIRED_VERSION_X_Y}'" - return 1 - fi -} diff --git a/ngraph/python/CMakeLists.txt b/ngraph/python/CMakeLists.txt index 1d673ecebc9b61..5ad24b2b757326 100644 --- a/ngraph/python/CMakeLists.txt +++ b/ngraph/python/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** cmake_minimum_required (VERSION 3.13) @@ -50,6 +38,19 @@ else() message(FATAL_ERROR "Python was not found!") endif() +if(OpenVINO_MAIN_SOURCE_DIR) + if(WIN32) + set(PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/$/python_api/${PYTHON_VERSION}/) + else() + set(PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/python_api/${PYTHON_VERSION}/) + endif() + + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}) + set(CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}) + set(CMAKE_PDB_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}) +endif() + # compile options if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") @@ -65,6 +66,11 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_compile_options(-Wno-error=attributes) endif() +if(CMAKE_COMPILER_IS_GNUCXX AND Python_VERSION VERSION_GREATER_EQUAL "3.9") + # for proper fix need to update pybind to version which does not use PyEval_InitThreads() + add_compile_options(-Wno-deprecated-declarations) +endif() + # create target file(GLOB_RECURSE SOURCES src/pyngraph/*.cpp) @@ -74,8 +80,21 @@ pybind11_add_module(_${PROJECT_NAME} MODULE ${SOURCES}) target_include_directories(_${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src") target_include_directories(_${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../frontend/generic/include") target_link_libraries(_${PROJECT_NAME} PRIVATE ngraph::ngraph ngraph::onnx_importer ngraph::frontend_manager ngraph::tensorflow_frontend) +if (TARGET ngraph::onnx_importer) + add_dependencies(_${PROJECT_NAME} ngraph::onnx_importer) +endif() + +# perform copy +if(OpenVINO_MAIN_SOURCE_DIR) + add_custom_command(TARGET _${PROJECT_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/ngraph ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/ngraph + ) +endif() if(OpenVINO_MAIN_SOURCE_DIR OR InferenceEngineDeveloperPackage_FOUND) + add_clang_format_target(_${PROJECT_NAME}_clang FOR_TARGETS _${PROJECT_NAME}) + ie_cpack_add_component(pyngraph_${PYTHON_VERSION}) install(TARGETS _${PROJECT_NAME} diff --git a/ngraph/python/requirements_test.txt b/ngraph/python/requirements_test.txt index 67470758d273fb..d81429ad2c45ca 100644 --- a/ngraph/python/requirements_test.txt +++ b/ngraph/python/requirements_test.txt @@ -1,10 +1,10 @@ -flake8==3.8.4 +flake8==3.9.0 flake8-comprehensions==3.3.0 -flake8-docstrings==1.5.0 +flake8-docstrings==1.6.0 flake8-quotes==3.2.0 onnx==1.8.1 pydocstyle==5.1.1 pytest==6.1.2 retrying==1.3.3 -tox==3.21.4 +tox==3.23.0 wheel==0.35.1 diff --git a/ngraph/python/setup.py b/ngraph/python/setup.py index dcc1ce44cbcf75..dfbb03fad98c00 100644 --- a/ngraph/python/setup.py +++ b/ngraph/python/setup.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os import pathlib @@ -46,6 +33,7 @@ "ngraph.opset4", "ngraph.opset5", "ngraph.opset6", + "ngraph.opset7", "ngraph.utils", "ngraph.impl", "ngraph.impl.op", diff --git a/ngraph/python/src/ngraph/__init__.py b/ngraph/python/src/ngraph/__init__.py index 860919b42931a0..d5ce11d0fa16de 100644 --- a/ngraph/python/src/ngraph/__init__.py +++ b/ngraph/python/src/ngraph/__init__.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """ngraph module namespace, exposing factory functions for all ops and other classes.""" # noqa: F401 diff --git a/ngraph/python/src/ngraph/exceptions.py b/ngraph/python/src/ngraph/exceptions.py index 704c6925e7cf7e..8685218e5fcbf3 100644 --- a/ngraph/python/src/ngraph/exceptions.py +++ b/ngraph/python/src/ngraph/exceptions.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """ngraph exceptions hierarchy. All exceptions are descendants of NgraphError.""" diff --git a/ngraph/python/src/ngraph/helpers.py b/ngraph/python/src/ngraph/helpers.py index 8c7a7ef6600bfe..d69a3b86529e32 100644 --- a/ngraph/python/src/ngraph/helpers.py +++ b/ngraph/python/src/ngraph/helpers.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """nGraph helper functions.""" from ngraph.impl import Function diff --git a/ngraph/python/src/ngraph/impl/__init__.py b/ngraph/python/src/ngraph/impl/__init__.py index 048d67b2953592..0fd393f792b0a7 100644 --- a/ngraph/python/src/ngraph/impl/__init__.py +++ b/ngraph/python/src/ngraph/impl/__init__.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """ Package: ngraph Low level wrappers for the nGraph c++ api. @@ -24,18 +12,27 @@ import sys if sys.platform == "win32": - # ngraph.dll is installed 3 directories above by default - # and this path needs to be visible to the _pyngraph module - # - ngraph_dll = os.path.join(os.path.dirname(__file__), "..", "..", "..") - - # PIP installs openvino and ngraph dlls 2 directories above in openvino.libs by default - # and this path needs to be visible to the _pyngraph modules + # Installer, yum, pip installs openvino dlls to the different directories + # and those paths need to be visible to the openvino modules # - openvino_dlls = os.path.join(os.path.dirname(__file__), "..", "..", "openvino.libs") # If you're using a custom installation of openvino, # add the location of openvino dlls to your system PATH. - os.environ["PATH"] = os.path.abspath(openvino_dlls) + ";" + os.path.abspath(ngraph_dll) + ";" + os.environ["PATH"] + # + # looking for the libs in the pip installation path by default. + openvino_libs = [os.path.join(os.path.dirname(__file__), '..', '..', '..'), + os.path.join(os.path.dirname(__file__), '..', '..', 'openvino', 'libs')] + # setupvars.bat script set all libs paths to OPENVINO_LIB_PATHS environment variable. + openvino_libs_installer = os.getenv('OPENVINO_LIB_PATHS') + if openvino_libs_installer: + openvino_libs.extend(openvino_libs_installer.split(';')) + for lib in openvino_libs: + lib_path = os.path.join(os.path.dirname(__file__), lib) + if os.path.isdir(lib_path): + # On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH. + if (3, 8) <= sys.version_info: + os.add_dll_directory(os.path.abspath(lib_path)) + else: + os.environ["PATH"] = os.path.abspath(lib_path) + ";" + os.environ["PATH"] from _pyngraph import Dimension from _pyngraph import Function diff --git a/ngraph/python/src/ngraph/impl/op/__init__.py b/ngraph/python/src/ngraph/impl/op/__init__.py index 159563c034e3e2..808d21dce48d35 100644 --- a/ngraph/python/src/ngraph/impl/op/__init__.py +++ b/ngraph/python/src/ngraph/impl/op/__init__.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """ Package: ngraph.op Low level wrappers for the nGraph c++ api in ngraph::op. diff --git a/ngraph/python/src/ngraph/impl/op/util/__init__.py b/ngraph/python/src/ngraph/impl/op/util/__init__.py index 9f4be31bc2cd61..45f4089103d92a 100644 --- a/ngraph/python/src/ngraph/impl/op/util/__init__.py +++ b/ngraph/python/src/ngraph/impl/op/util/__init__.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """ Package: ngraph.op.util Low level wrappers for the nGraph c++ api in ngraph::op::util. diff --git a/ngraph/python/src/ngraph/impl/passes/__init__.py b/ngraph/python/src/ngraph/impl/passes/__init__.py index c4d51ec1f0e445..be56112167d1df 100644 --- a/ngraph/python/src/ngraph/impl/passes/__init__.py +++ b/ngraph/python/src/ngraph/impl/passes/__init__.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # flake8: noqa from _pyngraph.passes import Manager diff --git a/ngraph/python/src/ngraph/opset1/__init__.py b/ngraph/python/src/ngraph/opset1/__init__.py index 80e31e0b55005c..6e21b398a1d81a 100644 --- a/ngraph/python/src/ngraph/opset1/__init__.py +++ b/ngraph/python/src/ngraph/opset1/__init__.py @@ -1,19 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from ngraph.opset1.ops import absolute from ngraph.opset1.ops import absolute as abs diff --git a/ngraph/python/src/ngraph/opset1/ops.py b/ngraph/python/src/ngraph/opset1/ops.py index d37d1ba840fa9e..25a2a05b639092 100644 --- a/ngraph/python/src/ngraph/opset1/ops.py +++ b/ngraph/python/src/ngraph/opset1/ops.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """Factory functions for all ngraph ops.""" from typing import Callable, Iterable, List, Optional, Set, Union @@ -1497,17 +1484,17 @@ def lstm_sequence( Shape: [batch_size]. Integer type. @param W: Tensor with weights for matrix multiplication operation with input portion of data. Shape: [num_directions, 4*hidden_size, input_size]. - :param R: The tensor with weights for matrix multiplication operation with hidden state. + @param R: The tensor with weights for matrix multiplication operation with hidden state. Shape: [num_directions, 4*hidden_size, hidden_size]. - :param B: The tensor with biases. + @param B: The tensor with biases. Shape: [num_directions, 4*hidden_size]. - :param hidden_size: Specifies hidden state size. - :param direction: Specifies if the RNN is forward, reverse, or bidirectional. - :param activations: The list of three activation functions for gates. - :param activations_alpha: The list of alpha parameters for activation functions. - :param activations_beta: The list of beta parameters for activation functions. - :param clip: Specifies bound values [-C, C] for tensor clipping performed before activations. - :param name: An optional name of the output node. + @param hidden_size: Specifies hidden state size. + @param direction: Specifies if the RNN is forward, reverse, or bidirectional. + @param activations: The list of three activation functions for gates. + @param activations_alpha: The list of alpha parameters for activation functions. + @param activations_beta: The list of beta parameters for activation functions. + @param clip: Specifies bound values [-C, C] for tensor clipping performed before activations. + @param name: An optional name of the output node. @return The new node represents LSTMSequence. Node outputs count: 3. """ @@ -2800,11 +2787,11 @@ def tensor_iterator( """ attributes = { "body": graph_body.serialize(), - "slice_input_desc": [desc.serialize() for desc in slice_input_desc], - "merged_input_desc": [desc.serialize() for desc in merged_input_desc], - "invariant_input_desc": [desc.serialize() for desc in invariant_input_desc], - "body_output_desc": [desc.serialize() for desc in body_output_desc], - "concat_output_desc": [desc.serialize() for desc in concat_output_desc], + "input_descriptions": {"slice_input_desc": [desc.serialize() for desc in slice_input_desc], + "merged_input_desc": [desc.serialize() for desc in merged_input_desc], + "invariant_input_desc": [desc.serialize() for desc in invariant_input_desc]}, + "output_descriptions": {"body_output_desc": [desc.serialize() for desc in body_output_desc], + "concat_output_desc": [desc.serialize() for desc in concat_output_desc]} } return _get_node_factory_opset1().create("TensorIterator", as_nodes(*inputs), attributes) diff --git a/ngraph/python/src/ngraph/opset2/__init__.py b/ngraph/python/src/ngraph/opset2/__init__.py index 65619929b329f6..5de3e14a5186c4 100644 --- a/ngraph/python/src/ngraph/opset2/__init__.py +++ b/ngraph/python/src/ngraph/opset2/__init__.py @@ -1,19 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from ngraph.opset1.ops import absolute from ngraph.opset1.ops import absolute as abs diff --git a/ngraph/python/src/ngraph/opset2/ops.py b/ngraph/python/src/ngraph/opset2/ops.py index 0f7317a5a157a1..a623b8b978016b 100644 --- a/ngraph/python/src/ngraph/opset2/ops.py +++ b/ngraph/python/src/ngraph/opset2/ops.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """Factory functions for all ngraph ops.""" from typing import Callable, Iterable, List, Optional, Set, Union diff --git a/ngraph/python/src/ngraph/opset3/__init__.py b/ngraph/python/src/ngraph/opset3/__init__.py index a3d7a6239e65b9..c282ad29144e7e 100644 --- a/ngraph/python/src/ngraph/opset3/__init__.py +++ b/ngraph/python/src/ngraph/opset3/__init__.py @@ -1,19 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from ngraph.opset1.ops import absolute from ngraph.opset1.ops import absolute as abs diff --git a/ngraph/python/src/ngraph/opset3/ops.py b/ngraph/python/src/ngraph/opset3/ops.py index f6bb1bd147c13c..deef87bb796059 100644 --- a/ngraph/python/src/ngraph/opset3/ops.py +++ b/ngraph/python/src/ngraph/opset3/ops.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """Factory functions for all ngraph ops.""" from typing import Callable, Iterable, List, Optional, Set, Union diff --git a/ngraph/python/src/ngraph/opset4/__init__.py b/ngraph/python/src/ngraph/opset4/__init__.py index 9eb6ffe7dde551..9fe28bac514337 100644 --- a/ngraph/python/src/ngraph/opset4/__init__.py +++ b/ngraph/python/src/ngraph/opset4/__init__.py @@ -1,19 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from ngraph.opset1.ops import absolute from ngraph.opset1.ops import absolute as abs diff --git a/ngraph/python/src/ngraph/opset4/ops.py b/ngraph/python/src/ngraph/opset4/ops.py index 7bfd213e0d3a7a..6526f17cc17410 100644 --- a/ngraph/python/src/ngraph/opset4/ops.py +++ b/ngraph/python/src/ngraph/opset4/ops.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """Factory functions for all ngraph ops.""" from typing import Callable, Iterable, List, Optional, Set, Union diff --git a/ngraph/python/src/ngraph/opset5/__init__.py b/ngraph/python/src/ngraph/opset5/__init__.py index cbffb85c4967be..a475bc9972e519 100644 --- a/ngraph/python/src/ngraph/opset5/__init__.py +++ b/ngraph/python/src/ngraph/opset5/__init__.py @@ -1,19 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from ngraph.opset1.ops import absolute from ngraph.opset1.ops import absolute as abs diff --git a/ngraph/python/src/ngraph/opset5/ops.py b/ngraph/python/src/ngraph/opset5/ops.py index 14a3b889266653..134dd3b8292340 100644 --- a/ngraph/python/src/ngraph/opset5/ops.py +++ b/ngraph/python/src/ngraph/opset5/ops.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """Factory functions for all ngraph ops.""" from typing import Callable, Iterable, List, Optional, Set, Union @@ -385,16 +372,56 @@ def rnn_sequence( def loop( trip_count: NodeInput, execution_condition: NodeInput, + inputs: List[Node], + graph_body: GraphBody, + slice_input_desc: List[TensorIteratorSliceInputDesc], + merged_input_desc: List[TensorIteratorMergedInputDesc], + invariant_input_desc: List[TensorIteratorInvariantInputDesc], + body_output_desc: List[TensorIteratorBodyOutputDesc], + concat_output_desc: List[TensorIteratorConcatOutputDesc], + body_condition_output_idx: int, + current_iteration_input_idx: int = -1, name: Optional[str] = None, ) -> Node: - """Return a node which performs Loop. + """Perform recurrent execution of the network described in the body, iterating through the data. @param trip_count: A scalar or 1D tensor with 1 element specifying maximum number of iterations. @param execution_condition: A scalar or 1D tensor with 1 element specifying whether to execute the first iteration or not. + @param inputs: The provided to TensorIterator operator. + @param graph_body: The graph representing the body we execute. + @param slice_input_desc: The descriptors describing sliced inputs, that is nodes + representing tensors we iterate through, processing single + data slice in one iteration. + @param merged_input_desc: The descriptors describing merged inputs, that is nodes + representing variables with initial value at first iteration, + which may be changing through iterations. + @param invariant_input_desc: The descriptors describing invariant inputs, that is nodes + representing variable with persistent value through all + iterations. + @param body_output_desc: The descriptors describing body outputs from specified + iteration. + @param concat_output_desc: The descriptors describing specified output values through + all the iterations concatenated into one node. + @param body_condition_output_idx: Determines the purpose of the corresponding result in + the graph_body. This result will determine the dynamic + exit condition. If the value of this result is False, + then iterations stop. + @param current_iteration_input_idx: Determines the purpose of the corresponding parameter + in the graph_body. This parameter will be used as + an iteration counter. Optional. @return: The new node which performs Loop. """ - inputs = as_nodes(trip_count, execution_condition) - - return _get_node_factory_opset5().create("Loop", inputs) + attributes = { + "body": graph_body.serialize(), + "input_descriptions": {"slice_input_desc": [desc.serialize() for desc in slice_input_desc], + "merged_input_desc": [desc.serialize() for desc in merged_input_desc], + "invariant_input_desc": [desc.serialize() for desc in invariant_input_desc]}, + "output_descriptions": {"body_output_desc": [desc.serialize() for desc in body_output_desc], + "concat_output_desc": [desc.serialize() for desc in concat_output_desc]}, + "special_body_ports": {"body_condition_output_idx": body_condition_output_idx, + "current_iteration_input_idx": current_iteration_input_idx} + } + return _get_node_factory_opset5().create("Loop", as_nodes(trip_count, execution_condition, *inputs), + attributes) diff --git a/ngraph/python/src/ngraph/opset6/__init__.py b/ngraph/python/src/ngraph/opset6/__init__.py index 7451fb403a0243..5a5a3a2c4cc73d 100644 --- a/ngraph/python/src/ngraph/opset6/__init__.py +++ b/ngraph/python/src/ngraph/opset6/__init__.py @@ -1,19 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from ngraph.opset1.ops import absolute from ngraph.opset1.ops import absolute as abs @@ -22,7 +8,7 @@ from ngraph.opset1.ops import add from ngraph.opset1.ops import asin from ngraph.opset4.ops import asinh -from ngraph.opset3.ops import assign +from ngraph.opset6.ops import assign from ngraph.opset1.ops import atan from ngraph.opset4.ops import atanh from ngraph.opset1.ops import avg_pool @@ -114,7 +100,7 @@ from ngraph.opset1.ops import psroi_pooling from ngraph.opset4.ops import proposal from ngraph.opset1.ops import range -from ngraph.opset3.ops import read_value +from ngraph.opset6.ops import read_value from ngraph.opset4.ops import reduce_l1 from ngraph.opset4.ops import reduce_l2 from ngraph.opset1.ops import reduce_logical_and diff --git a/ngraph/python/src/ngraph/opset6/ops.py b/ngraph/python/src/ngraph/opset6/ops.py index fe8ca220f7cb45..7260a6fdcf9e85 100644 --- a/ngraph/python/src/ngraph/opset6/ops.py +++ b/ngraph/python/src/ngraph/opset6/ops.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """Factory functions for all ngraph ops.""" from typing import Callable, Iterable, List, Optional, Set, Union @@ -142,3 +129,35 @@ def mvn( } return _get_node_factory_opset6().create("MVN", inputs, attributes) + + +@nameable_op +def assign(new_value: NodeInput, variable_id: str, name: Optional[str] = None) -> Node: + """Return a node which produces the Assign operation. + + @param new_value: Node producing a value to be assigned to a variable. + @param variable_id: Id of a variable to be updated. + @param name: Optional name for output node. + @return Assign node + """ + return _get_node_factory_opset6().create( + "Assign", + [as_node(new_value)], + {"variable_id": variable_id} + ) + + +@nameable_op +def read_value(init_value: NodeInput, variable_id: str, name: Optional[str] = None) -> Node: + """Return a node which produces the Assign operation. + + @param init_value: Node producing a value to be returned instead of an unassigned variable. + @param variable_id: Id of a variable to be read. + @param name: Optional name for output node. + @return ReadValue node + """ + return _get_node_factory_opset6().create( + "ReadValue", + [as_node(init_value)], + {"variable_id": variable_id} + ) diff --git a/ngraph/python/src/ngraph/opset7/__init__.py b/ngraph/python/src/ngraph/opset7/__init__.py new file mode 100644 index 00000000000000..c665b1e68efa70 --- /dev/null +++ b/ngraph/python/src/ngraph/opset7/__init__.py @@ -0,0 +1,152 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from ngraph.opset1.ops import absolute +from ngraph.opset1.ops import absolute as abs +from ngraph.opset1.ops import acos +from ngraph.opset4.ops import acosh +from ngraph.opset1.ops import add +from ngraph.opset1.ops import asin +from ngraph.opset4.ops import asinh +from ngraph.opset3.ops import assign +from ngraph.opset1.ops import atan +from ngraph.opset4.ops import atanh +from ngraph.opset1.ops import avg_pool +from ngraph.opset5.ops import batch_norm_inference +from ngraph.opset2.ops import batch_to_space +from ngraph.opset1.ops import binary_convolution +from ngraph.opset3.ops import broadcast +from ngraph.opset3.ops import bucketize +from ngraph.opset1.ops import ceiling +from ngraph.opset1.ops import ceiling as ceil +from ngraph.opset1.ops import clamp +from ngraph.opset1.ops import concat +from ngraph.opset1.ops import constant +from ngraph.opset1.ops import convert +from ngraph.opset1.ops import convert_like +from ngraph.opset1.ops import convolution +from ngraph.opset1.ops import convolution_backprop_data +from ngraph.opset1.ops import cos +from ngraph.opset1.ops import cosh +from ngraph.opset1.ops import ctc_greedy_decoder +from ngraph.opset6.ops import ctc_greedy_decoder_seq_len +from ngraph.opset4.ops import ctc_loss +from ngraph.opset3.ops import cum_sum +from ngraph.opset3.ops import cum_sum as cumsum +from ngraph.opset1.ops import deformable_convolution +from ngraph.opset1.ops import deformable_psroi_pooling +from ngraph.opset1.ops import depth_to_space +from ngraph.opset1.ops import detection_output +from ngraph.opset1.ops import divide +from ngraph.opset1.ops import elu +from ngraph.opset3.ops import embedding_bag_offsets_sum +from ngraph.opset3.ops import embedding_bag_packed_sum +from ngraph.opset3.ops import embedding_segments_sum +from ngraph.opset3.ops import extract_image_patches +from ngraph.opset1.ops import equal +from ngraph.opset1.ops import erf +from ngraph.opset1.ops import exp +from ngraph.opset1.ops import fake_quantize +from ngraph.opset1.ops import floor +from ngraph.opset1.ops import floor_mod +from ngraph.opset1.ops import gather +from ngraph.opset6.ops import gather_elements +from ngraph.opset5.ops import gather_nd +from ngraph.opset1.ops import gather_tree +from ngraph.opset7.ops import gelu +from ngraph.opset1.ops import greater +from ngraph.opset1.ops import greater_equal +from ngraph.opset1.ops import grn +from ngraph.opset1.ops import group_convolution +from ngraph.opset1.ops import group_convolution_backprop_data +from ngraph.opset3.ops import gru_cell +from ngraph.opset5.ops import gru_sequence +from ngraph.opset1.ops import hard_sigmoid +from ngraph.opset5.ops import hsigmoid +from ngraph.opset4.ops import hswish +from ngraph.opset1.ops import interpolate +from ngraph.opset1.ops import less +from ngraph.opset1.ops import less_equal +from ngraph.opset1.ops import log +from ngraph.opset1.ops import logical_and +from ngraph.opset1.ops import logical_not +from ngraph.opset1.ops import logical_or +from ngraph.opset1.ops import logical_xor +from ngraph.opset5.ops import log_softmax +from ngraph.opset5.ops import loop +from ngraph.opset1.ops import lrn +from ngraph.opset4.ops import lstm_cell +from ngraph.opset1.ops import lstm_sequence +from ngraph.opset1.ops import matmul +from ngraph.opset1.ops import max_pool +from ngraph.opset1.ops import maximum +from ngraph.opset1.ops import minimum +from ngraph.opset4.ops import mish +from ngraph.opset1.ops import mod +from ngraph.opset1.ops import multiply +from ngraph.opset6.ops import mvn +from ngraph.opset1.ops import negative +from ngraph.opset5.ops import non_max_suppression +from ngraph.opset3.ops import non_zero +from ngraph.opset1.ops import normalize_l2 +from ngraph.opset1.ops import not_equal +from ngraph.opset1.ops import one_hot +from ngraph.opset1.ops import pad +from ngraph.opset1.ops import parameter +from ngraph.opset1.ops import power +from ngraph.opset1.ops import prelu +from ngraph.opset1.ops import prior_box +from ngraph.opset1.ops import prior_box_clustered +from ngraph.opset1.ops import psroi_pooling +from ngraph.opset4.ops import proposal +from ngraph.opset1.ops import range +from ngraph.opset3.ops import read_value +from ngraph.opset4.ops import reduce_l1 +from ngraph.opset4.ops import reduce_l2 +from ngraph.opset1.ops import reduce_logical_and +from ngraph.opset1.ops import reduce_logical_or +from ngraph.opset1.ops import reduce_max +from ngraph.opset1.ops import reduce_mean +from ngraph.opset1.ops import reduce_min +from ngraph.opset1.ops import reduce_prod +from ngraph.opset1.ops import reduce_sum +from ngraph.opset1.ops import region_yolo +from ngraph.opset2.ops import reorg_yolo +from ngraph.opset1.ops import relu +from ngraph.opset1.ops import reshape +from ngraph.opset1.ops import result +from ngraph.opset1.ops import reverse_sequence +from ngraph.opset3.ops import rnn_cell +from ngraph.opset5.ops import rnn_sequence +from ngraph.opset3.ops import roi_align +from ngraph.opset2.ops import roi_pooling +from ngraph.opset5.ops import round +from ngraph.opset3.ops import scatter_elements_update +from ngraph.opset3.ops import scatter_update +from ngraph.opset1.ops import select +from ngraph.opset1.ops import selu +from ngraph.opset3.ops import shape_of +from ngraph.opset3.ops import shuffle_channels +from ngraph.opset1.ops import sigmoid +from ngraph.opset1.ops import sign +from ngraph.opset1.ops import sin +from ngraph.opset1.ops import sinh +from ngraph.opset1.ops import softmax +from ngraph.opset4.ops import softplus +from ngraph.opset2.ops import space_to_batch +from ngraph.opset1.ops import space_to_depth +from ngraph.opset1.ops import split +from ngraph.opset1.ops import sqrt +from ngraph.opset1.ops import squared_difference +from ngraph.opset1.ops import squeeze +from ngraph.opset1.ops import strided_slice +from ngraph.opset1.ops import subtract +from ngraph.opset4.ops import swish +from ngraph.opset1.ops import tan +from ngraph.opset1.ops import tanh +from ngraph.opset1.ops import tensor_iterator +from ngraph.opset1.ops import tile +from ngraph.opset3.ops import topk +from ngraph.opset1.ops import transpose +from ngraph.opset1.ops import unsqueeze +from ngraph.opset1.ops import variadic_split diff --git a/ngraph/python/src/ngraph/opset7/ops.py b/ngraph/python/src/ngraph/opset7/ops.py new file mode 100644 index 00000000000000..ef2dfc9af0b9d7 --- /dev/null +++ b/ngraph/python/src/ngraph/opset7/ops.py @@ -0,0 +1,67 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +"""Factory functions for all ngraph ops.""" +from typing import Callable, Iterable, List, Optional, Set, Union + +import numpy as np +from functools import partial + +from ngraph.impl import Node, Shape +from ngraph.impl.op import Constant, Parameter +from ngraph.opset_utils import _get_node_factory +from ngraph.utils.decorators import binary_op, nameable_op, unary_op +from ngraph.utils.input_validation import ( + assert_list_of_ints, + check_valid_attributes, + is_non_negative_value, + is_positive_value, +) +from ngraph.utils.node_factory import NodeFactory +from ngraph.utils.tensor_iterator_types import ( + GraphBody, + TensorIteratorSliceInputDesc, + TensorIteratorMergedInputDesc, + TensorIteratorInvariantInputDesc, + TensorIteratorBodyOutputDesc, + TensorIteratorConcatOutputDesc, +) +from ngraph.utils.types import ( + NodeInput, + NumericData, + NumericType, + ScalarData, + TensorShape, + as_node, + as_nodes, + get_dtype, + get_element_type, + get_element_type_str, + make_constant_node, +) + +_get_node_factory_opset7 = partial(_get_node_factory, "opset7") + +# -------------------------------------------- ops ------------------------------------------------ + + +@nameable_op +def gelu( + data: Node, + approximation_mode: str, + name: Optional[str] = None, +) -> Node: + """Return a node which performs Gelu activation function. + + @param data: The node with data tensor. + @param approximation_mode: defines which approximation to use ('tanh' or 'erf') + @param name: Optional output node name. + @return The new node performing a Gelu activation with the input tensor. + """ + inputs = as_nodes(data) + + attributes = { + "approximation_mode": approximation_mode + } + + return _get_node_factory_opset7().create("Gelu", inputs, attributes) diff --git a/ngraph/python/src/ngraph/opset_utils.py b/ngraph/python/src/ngraph/opset_utils.py index 09cb5aab9e5519..f925fdee119698 100644 --- a/ngraph/python/src/ngraph/opset_utils.py +++ b/ngraph/python/src/ngraph/opset_utils.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from typing import Optional import numpy as np diff --git a/ngraph/python/src/ngraph/utils/__init__.py b/ngraph/python/src/ngraph/utils/__init__.py index 4ec425fca3ed66..92b6b085ab8058 100644 --- a/ngraph/python/src/ngraph/utils/__init__.py +++ b/ngraph/python/src/ngraph/utils/__init__.py @@ -1,16 +1,4 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """Generic utilities. Factor related functions out to separate files.""" diff --git a/ngraph/python/src/ngraph/utils/broadcasting.py b/ngraph/python/src/ngraph/utils/broadcasting.py index a6c52f44560541..db9ab7e9b9f10f 100644 --- a/ngraph/python/src/ngraph/utils/broadcasting.py +++ b/ngraph/python/src/ngraph/utils/broadcasting.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import logging from typing import List diff --git a/ngraph/python/src/ngraph/utils/decorators.py b/ngraph/python/src/ngraph/utils/decorators.py index 6c3ca386ed6b55..276839df08c348 100644 --- a/ngraph/python/src/ngraph/utils/decorators.py +++ b/ngraph/python/src/ngraph/utils/decorators.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from functools import wraps from typing import Any, Callable diff --git a/ngraph/python/src/ngraph/utils/input_validation.py b/ngraph/python/src/ngraph/utils/input_validation.py index 2128bee88fdb7f..6a39335d16cb6c 100644 --- a/ngraph/python/src/ngraph/utils/input_validation.py +++ b/ngraph/python/src/ngraph/utils/input_validation.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """Helper functions for validating user input.""" diff --git a/ngraph/python/src/ngraph/utils/node_factory.py b/ngraph/python/src/ngraph/utils/node_factory.py index c75e516a650a74..bfac8c5bdca9a3 100644 --- a/ngraph/python/src/ngraph/utils/node_factory.py +++ b/ngraph/python/src/ngraph/utils/node_factory.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from functools import partial from typing import Any, Dict, List, Optional, Union diff --git a/ngraph/python/src/ngraph/utils/reduction.py b/ngraph/python/src/ngraph/utils/reduction.py index 48f5f83cf90337..85bbd1f20a019b 100644 --- a/ngraph/python/src/ngraph/utils/reduction.py +++ b/ngraph/python/src/ngraph/utils/reduction.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from typing import Iterable, Optional diff --git a/ngraph/python/src/ngraph/utils/tensor_iterator_types.py b/ngraph/python/src/ngraph/utils/tensor_iterator_types.py index 3e7d70b952e7bc..0d37e30f2f01c5 100644 --- a/ngraph/python/src/ngraph/utils/tensor_iterator_types.py +++ b/ngraph/python/src/ngraph/utils/tensor_iterator_types.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """Helper classes for aggregating TensorIterator input/output desciptor attributes.""" from typing import List diff --git a/ngraph/python/src/ngraph/utils/types.py b/ngraph/python/src/ngraph/utils/types.py index ab48e2b44d39e7..4e3b2f631328c8 100644 --- a/ngraph/python/src/ngraph/utils/types.py +++ b/ngraph/python/src/ngraph/utils/types.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """Functions related to converting between Python and numpy types and ngraph types.""" import logging diff --git a/ngraph/python/src/pyngraph/axis_set.cpp b/ngraph/python/src/pyngraph/axis_set.cpp index 77f9a920fb43df..50eab158fa796b 100644 --- a/ngraph/python/src/pyngraph/axis_set.cpp +++ b/ngraph/python/src/pyngraph/axis_set.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -37,9 +25,10 @@ void regclass_pyngraph_AxisSet(py::module m) axis_set.def("__len__", [](const ngraph::AxisSet& v) { return v.size(); }); - axis_set.def("__iter__", - [](ngraph::AxisSet& v) { return py::make_iterator(v.begin(), v.end()); }, - py::keep_alive<0, 1>()); /* Keep set alive while iterator is used */ + axis_set.def( + "__iter__", + [](ngraph::AxisSet& v) { return py::make_iterator(v.begin(), v.end()); }, + py::keep_alive<0, 1>()); /* Keep set alive while iterator is used */ axis_set.def("__repr__", [](const ngraph::AxisSet& self) -> std::string { std::stringstream data_ss; diff --git a/ngraph/python/src/pyngraph/axis_set.hpp b/ngraph/python/src/pyngraph/axis_set.hpp index 7b4e1cbea39f6d..9acc533ad10624 100644 --- a/ngraph/python/src/pyngraph/axis_set.hpp +++ b/ngraph/python/src/pyngraph/axis_set.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/axis_vector.cpp b/ngraph/python/src/pyngraph/axis_vector.cpp index a7ec5941bf66f6..f93ac52e74027f 100644 --- a/ngraph/python/src/pyngraph/axis_vector.cpp +++ b/ngraph/python/src/pyngraph/axis_vector.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/axis_vector.hpp b/ngraph/python/src/pyngraph/axis_vector.hpp index b4e010f8f207eb..cce69ae053a2b5 100644 --- a/ngraph/python/src/pyngraph/axis_vector.hpp +++ b/ngraph/python/src/pyngraph/axis_vector.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/coordinate.cpp b/ngraph/python/src/pyngraph/coordinate.cpp index 352ee1dfa3ad3d..a50087005dbade 100644 --- a/ngraph/python/src/pyngraph/coordinate.cpp +++ b/ngraph/python/src/pyngraph/coordinate.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/coordinate.hpp b/ngraph/python/src/pyngraph/coordinate.hpp index ef549171fe0fe7..4604f315000541 100644 --- a/ngraph/python/src/pyngraph/coordinate.hpp +++ b/ngraph/python/src/pyngraph/coordinate.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/coordinate_diff.cpp b/ngraph/python/src/pyngraph/coordinate_diff.cpp index 9e1e41d3d9c25f..51838b1e2f1ba7 100644 --- a/ngraph/python/src/pyngraph/coordinate_diff.cpp +++ b/ngraph/python/src/pyngraph/coordinate_diff.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/coordinate_diff.hpp b/ngraph/python/src/pyngraph/coordinate_diff.hpp index c3e6842c2ba18f..08f1e32d65e52a 100644 --- a/ngraph/python/src/pyngraph/coordinate_diff.hpp +++ b/ngraph/python/src/pyngraph/coordinate_diff.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/dict_attribute_visitor.cpp b/ngraph/python/src/pyngraph/dict_attribute_visitor.cpp index 3409abb4f6abe7..bc0a046a4301f0 100644 --- a/ngraph/python/src/pyngraph/dict_attribute_visitor.cpp +++ b/ngraph/python/src/pyngraph/dict_attribute_visitor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // These are not used here, but needed in order to not violate ODR, since // these are included in other translation units, and specialize some types. @@ -21,11 +9,16 @@ #include #include "dict_attribute_visitor.hpp" +#include "ngraph/op/loop.hpp" +#include "ngraph/op/util/sub_graph_base.hpp" namespace py = pybind11; -util::DictAttributeDeserializer::DictAttributeDeserializer(const py::dict& attributes) +util::DictAttributeDeserializer::DictAttributeDeserializer( + const py::dict& attributes, + std::unordered_map>& variables) : m_attributes(attributes) + , m_variables(variables) { } @@ -34,7 +27,116 @@ void util::DictAttributeDeserializer::on_adapter(const std::string& name, { if (m_attributes.contains(name)) { - NGRAPH_CHECK(false, "No AttributeVisitor support for accessing attribute named: ", name); + if (const auto& a = ngraph::as_type>>>( + &adapter)) + { + std::vector> + input_descs; + const py::dict& input_desc = m_attributes[name.c_str()].cast(); + const auto& merged_input_desc = input_desc["merged_input_desc"].cast(); + const auto& slice_input_desc = input_desc["slice_input_desc"].cast(); + const auto& invariant_input_desc = input_desc["invariant_input_desc"].cast(); + for (py::handle h : slice_input_desc) + { + const py::dict& desc = h.cast(); + auto slice_in = + std::make_shared( + desc["input_idx"].cast(), + desc["body_parameter_idx"].cast(), + desc["start"].cast(), + desc["stride"].cast(), + desc["part_size"].cast(), + desc["end"].cast(), + desc["axis"].cast()); + input_descs.push_back(slice_in); + } + + for (py::handle h : merged_input_desc) + { + const py::dict& desc = h.cast(); + auto merged_in = + std::make_shared( + desc["input_idx"].cast(), + desc["body_parameter_idx"].cast(), + desc["body_value_idx"].cast()); + input_descs.push_back(merged_in); + } + + for (py::handle h : invariant_input_desc) + { + const py::dict& desc = h.cast(); + auto invariant_in = + std::make_shared( + desc["input_idx"].cast(), + desc["body_parameter_idx"].cast()); + input_descs.push_back(invariant_in); + } + a->set(input_descs); + } + else if (const auto& a = ngraph::as_type>>>(&adapter)) + { + std::vector> + output_descs; + const py::dict& output_desc = m_attributes[name.c_str()].cast(); + const auto& body_output_desc = output_desc["body_output_desc"].cast(); + const auto& concat_output_desc = output_desc["concat_output_desc"].cast(); + for (py::handle h : body_output_desc) + { + const py::dict& desc = h.cast(); + auto body_output = + std::make_shared( + desc["body_value_idx"].cast(), + desc["output_idx"].cast(), + desc["iteration"].cast()); + output_descs.push_back(body_output); + } + + for (py::handle h : concat_output_desc) + { + const py::dict& desc = h.cast(); + auto concat_output = + std::make_shared( + desc["body_value_idx"].cast(), + desc["output_idx"].cast(), + desc["start"].cast(), + desc["stride"].cast(), + desc["part_size"].cast(), + desc["end"].cast(), + desc["axis"].cast()); + output_descs.push_back(concat_output); + } + a->set(output_descs); + } + else if (const auto& a = ngraph::as_type< + ngraph::AttributeAdapter>(&adapter)) + { + ngraph::op::v5::Loop::SpecialBodyPorts special_body_ports; + const py::dict& special_ports_dict = m_attributes[name.c_str()].cast(); + special_body_ports.body_condition_output_idx = + special_ports_dict["body_condition_output_idx"].cast(); + special_body_ports.current_iteration_input_idx = + special_ports_dict["current_iteration_input_idx"].cast(); + a->set(special_body_ports); + } + else if (const auto& a = + ngraph::as_type>>( + &adapter)) + { + std::string variable_id = m_attributes[name.c_str()].cast(); + if (!m_variables.count(variable_id)) + { + m_variables[variable_id] = std::make_shared(ngraph::VariableInfo{ + ngraph::PartialShape::dynamic(), ngraph::element::dynamic, variable_id}); + } + a->set(m_variables[variable_id]); + } + else + { + NGRAPH_CHECK( + false, "No AttributeVisitor support for accessing attribute named: ", name); + } } } void util::DictAttributeDeserializer::on_adapter(const std::string& name, @@ -222,6 +324,28 @@ void util::DictAttributeDeserializer::on_adapter( } } +void util::DictAttributeDeserializer::on_adapter( + const std::string& name, ngraph::ValueAccessor>& adapter) +{ + if (m_attributes.contains(name)) + { + if (name == "body") + { + const py::dict& body_attrs = m_attributes[name.c_str()].cast(); + const auto& body_outputs = + as_output_vector(body_attrs["results"].cast()); + const auto& body_parameters = body_attrs["parameters"].cast(); + auto body = std::make_shared(body_outputs, body_parameters); + adapter.set(body); + } + else + { + NGRAPH_CHECK( + false, "No AttributeVisitor support for accessing attribute named: ", name); + } + } +} + util::DictAttributeSerializer::DictAttributeSerializer(const std::shared_ptr& node) { node->visit_attributes(*this); diff --git a/ngraph/python/src/pyngraph/dict_attribute_visitor.hpp b/ngraph/python/src/pyngraph/dict_attribute_visitor.hpp index c011a612e5d23f..7905ff2eeb0954 100644 --- a/ngraph/python/src/pyngraph/dict_attribute_visitor.hpp +++ b/ngraph/python/src/pyngraph/dict_attribute_visitor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -22,6 +10,7 @@ #include "ngraph/attribute_visitor.hpp" #include "ngraph/node.hpp" +#include "ngraph/op/util/variable.hpp" #include @@ -32,114 +21,96 @@ namespace util class DictAttributeDeserializer : public ngraph::AttributeVisitor { public: - DictAttributeDeserializer(const py::dict& attributes); + DictAttributeDeserializer( + const py::dict& attributes, + std::unordered_map>& variables); - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; protected: const py::dict& m_attributes; + std::unordered_map>& m_variables; }; class DictAttributeSerializer : public ngraph::AttributeVisitor { public: - DictAttributeSerializer(const std::shared_ptr& node); + explicit DictAttributeSerializer(const std::shared_ptr& node); - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; - virtual void on_adapter(const std::string& name, - ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, ngraph::ValueAccessor& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; + void on_adapter(const std::string& name, + ngraph::ValueAccessor>& adapter) override; template T get_attribute(const std::string& name) @@ -152,6 +123,7 @@ namespace util } py::dict get_attributes() const { return m_attributes; } + protected: py::dict m_attributes; }; diff --git a/ngraph/python/src/pyngraph/dimension.cpp b/ngraph/python/src/pyngraph/dimension.cpp index 19fd5cbdf4b13b..8e4a105c584e57 100644 --- a/ngraph/python/src/pyngraph/dimension.cpp +++ b/ngraph/python/src/pyngraph/dimension.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -41,12 +29,14 @@ void regclass_pyngraph_Dimension(py::module m) dim.def_property_readonly("is_dynamic", &ngraph::Dimension::is_dynamic); dim.def_property_readonly("is_static", &ngraph::Dimension::is_static); - dim.def("__eq__", - [](const ngraph::Dimension& a, const ngraph::Dimension& b) { return a == b; }, - py::is_operator()); - dim.def("__eq__", - [](const ngraph::Dimension& a, const int64_t& b) { return a == b; }, - py::is_operator()); + dim.def( + "__eq__", + [](const ngraph::Dimension& a, const ngraph::Dimension& b) { return a == b; }, + py::is_operator()); + dim.def( + "__eq__", + [](const ngraph::Dimension& a, const int64_t& b) { return a == b; }, + py::is_operator()); dim.def("__len__", &ngraph::Dimension::get_length); dim.def("get_length", &ngraph::Dimension::get_length); diff --git a/ngraph/python/src/pyngraph/dimension.hpp b/ngraph/python/src/pyngraph/dimension.hpp index 2990adfdf1d35f..d374d9b69ac427 100644 --- a/ngraph/python/src/pyngraph/dimension.hpp +++ b/ngraph/python/src/pyngraph/dimension.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/function.cpp b/ngraph/python/src/pyngraph/function.cpp index 7d793ae004056a..9041208b65be5d 100644 --- a/ngraph/python/src/pyngraph/function.cpp +++ b/ngraph/python/src/pyngraph/function.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/function.hpp b/ngraph/python/src/pyngraph/function.hpp index 3ce2521417e56d..7e89a325e1a660 100644 --- a/ngraph/python/src/pyngraph/function.hpp +++ b/ngraph/python/src/pyngraph/function.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/node.cpp b/ngraph/python/src/pyngraph/node.cpp index d27bd38a760272..c0f069ff42dea7 100644 --- a/ngraph/python/src/pyngraph/node.cpp +++ b/ngraph/python/src/pyngraph/node.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -39,31 +27,36 @@ void regclass_pyngraph_Node(py::module m) { py::class_> node(m, "Node", py::dynamic_attr()); node.doc() = "ngraph.impl.Node wraps ngraph::Node"; - node.def("__add__", - [](const std::shared_ptr& a, const std::shared_ptr b) { - return std::make_shared(a, b); - }, - py::is_operator()); - node.def("__sub__", - [](const std::shared_ptr& a, const std::shared_ptr b) { - return std::make_shared(a, b); - }, - py::is_operator()); - node.def("__mul__", - [](const std::shared_ptr& a, const std::shared_ptr b) { - return std::make_shared(a, b); - }, - py::is_operator()); - node.def("__div__", - [](const std::shared_ptr& a, const std::shared_ptr b) { - return std::make_shared(a, b); - }, - py::is_operator()); - node.def("__truediv__", - [](const std::shared_ptr& a, const std::shared_ptr b) { - return std::make_shared(a, b); - }, - py::is_operator()); + node.def( + "__add__", + [](const std::shared_ptr& a, const std::shared_ptr b) { + return std::make_shared(a, b); + }, + py::is_operator()); + node.def( + "__sub__", + [](const std::shared_ptr& a, const std::shared_ptr b) { + return std::make_shared(a, b); + }, + py::is_operator()); + node.def( + "__mul__", + [](const std::shared_ptr& a, const std::shared_ptr b) { + return std::make_shared(a, b); + }, + py::is_operator()); + node.def( + "__div__", + [](const std::shared_ptr& a, const std::shared_ptr b) { + return std::make_shared(a, b); + }, + py::is_operator()); + node.def( + "__truediv__", + [](const std::shared_ptr& a, const std::shared_ptr b) { + return std::make_shared(a, b); + }, + py::is_operator()); node.def("__repr__", [](const ngraph::Node& self) { std::string type_name = self.get_type_name(); @@ -117,7 +110,8 @@ void regclass_pyngraph_Node(py::module m) [](std::shared_ptr& self, const std::string& atr_name, py::object value) { py::dict attr_dict; attr_dict[atr_name.c_str()] = value; - util::DictAttributeDeserializer dict_deserializer(attr_dict); + std::unordered_map> variables; + util::DictAttributeDeserializer dict_deserializer(attr_dict, variables); self->visit_attributes(dict_deserializer); }); } diff --git a/ngraph/python/src/pyngraph/node.hpp b/ngraph/python/src/pyngraph/node.hpp index c934fdc91af1b0..eacc3fcdead316 100644 --- a/ngraph/python/src/pyngraph/node.hpp +++ b/ngraph/python/src/pyngraph/node.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/node_factory.cpp b/ngraph/python/src/pyngraph/node_factory.cpp index a003dd75fdf0b2..0e90989dc3e7d3 100644 --- a/ngraph/python/src/pyngraph/node_factory.cpp +++ b/ngraph/python/src/pyngraph/node_factory.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -31,9 +19,9 @@ #include "ngraph/except.hpp" #include "ngraph/node.hpp" #include "ngraph/op/util/op_types.hpp" +#include "ngraph/op/util/variable.hpp" #include "ngraph/opsets/opset.hpp" #include "node_factory.hpp" -#include "tensor_iterator_builder.hpp" namespace py = pybind11; @@ -60,14 +48,7 @@ namespace "Currently NodeFactory doesn't support Constant node: ", op_type_name); - if (op_type_name == "TensorIterator") - { - // XXX: How to differentiate opsets? - return util::TensorIteratorBuilder(as_node_vector(arguments), attributes) - .configure(std::static_pointer_cast(op_node)); - } - - util::DictAttributeDeserializer visitor(attributes); + util::DictAttributeDeserializer visitor(attributes, m_variables); op_node->set_arguments(arguments); op_node->visit_attributes(visitor); @@ -93,6 +74,7 @@ namespace {"opset4", OpsetFunction(ngraph::get_opset4)}, {"opset5", OpsetFunction(ngraph::get_opset5)}, {"opset6", OpsetFunction(ngraph::get_opset6)}, + {"opset7", OpsetFunction(ngraph::get_opset7)}, }; auto it = s_opsets.find(opset_ver); @@ -103,7 +85,8 @@ namespace return it->second(); } - const ngraph::OpSet& m_opset = ngraph::get_opset6(); + const ngraph::OpSet& m_opset = ngraph::get_opset7(); + std::unordered_map> m_variables; }; } // namespace diff --git a/ngraph/python/src/pyngraph/node_factory.hpp b/ngraph/python/src/pyngraph/node_factory.hpp index 3d23e20c75c5fb..333c5659616168 100644 --- a/ngraph/python/src/pyngraph/node_factory.hpp +++ b/ngraph/python/src/pyngraph/node_factory.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/node_input.cpp b/ngraph/python/src/pyngraph/node_input.cpp index 01b2369eb7f8ab..3a4c8729ffcc71 100644 --- a/ngraph/python/src/pyngraph/node_input.cpp +++ b/ngraph/python/src/pyngraph/node_input.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/python/src/pyngraph/node_input.hpp b/ngraph/python/src/pyngraph/node_input.hpp index 2b0b3b157ac35c..e5194dd26cd432 100644 --- a/ngraph/python/src/pyngraph/node_input.hpp +++ b/ngraph/python/src/pyngraph/node_input.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/node_output.cpp b/ngraph/python/src/pyngraph/node_output.cpp index 157e05a5fd2876..21bd9cbcde154a 100644 --- a/ngraph/python/src/pyngraph/node_output.cpp +++ b/ngraph/python/src/pyngraph/node_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/python/src/pyngraph/node_output.hpp b/ngraph/python/src/pyngraph/node_output.hpp index c89e682e4b25a7..80e356a1be731a 100644 --- a/ngraph/python/src/pyngraph/node_output.hpp +++ b/ngraph/python/src/pyngraph/node_output.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/constant.cpp b/ngraph/python/src/pyngraph/ops/constant.cpp index bc1d4a3ad5d585..5f6a3e85274c80 100644 --- a/ngraph/python/src/pyngraph/ops/constant.cpp +++ b/ngraph/python/src/pyngraph/ops/constant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -51,7 +39,7 @@ py::buffer_info _get_buffer_info(const ngraph::op::Constant& c) static_cast(shape.size()), /* Number of dimensions */ std::vector{shape.begin(), shape.end()}, /* Buffer dimensions */ _get_byte_strides(shape) /* Strides (in bytes) for each index */ - ); + ); } template <> @@ -65,7 +53,7 @@ py::buffer_info _get_buffer_info(const ngraph::op::Constant& c) static_cast(shape.size()), /* Number of dimensions */ std::vector{shape.begin(), shape.end()}, /* Buffer dimensions */ _get_byte_strides(shape) /* Strides (in bytes) for each index */ - ); + ); } template diff --git a/ngraph/python/src/pyngraph/ops/constant.hpp b/ngraph/python/src/pyngraph/ops/constant.hpp index 09feda840146e7..9467dbbef5cdd4 100644 --- a/ngraph/python/src/pyngraph/ops/constant.hpp +++ b/ngraph/python/src/pyngraph/ops/constant.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/parameter.cpp b/ngraph/python/src/pyngraph/ops/parameter.cpp index f66f2bad763d67..a5826bc778a0c2 100644 --- a/ngraph/python/src/pyngraph/ops/parameter.cpp +++ b/ngraph/python/src/pyngraph/ops/parameter.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/parameter.hpp b/ngraph/python/src/pyngraph/ops/parameter.hpp index d12137f68deb4b..6d4dedee26a561 100644 --- a/ngraph/python/src/pyngraph/ops/parameter.hpp +++ b/ngraph/python/src/pyngraph/ops/parameter.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/result.cpp b/ngraph/python/src/pyngraph/ops/result.cpp index 7011d06c960447..24393fed2e4bc3 100644 --- a/ngraph/python/src/pyngraph/ops/result.cpp +++ b/ngraph/python/src/pyngraph/ops/result.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/result.hpp b/ngraph/python/src/pyngraph/ops/result.hpp index 6d40eb0f637a52..a8cdba8b0cff2a 100644 --- a/ngraph/python/src/pyngraph/ops/result.hpp +++ b/ngraph/python/src/pyngraph/ops/result.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.cpp b/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.cpp index 3ccdd57c658438..5afe6f58221236 100644 --- a/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.cpp +++ b/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.hpp b/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.hpp index 5e6c97327acc17..2cde8c68e90204 100644 --- a/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.hpp +++ b/ngraph/python/src/pyngraph/ops/util/arithmetic_reduction.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.cpp b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.cpp index 2122367ee216e5..807d83c8373694 100644 --- a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.cpp +++ b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.hpp b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.hpp index bf8826bea9c4db..60a7adc543d2e8 100644 --- a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.hpp +++ b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_arithmetic.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.cpp b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.cpp index 9a77812152c1e6..f54b85f8d87fc8 100644 --- a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.cpp +++ b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.hpp b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.hpp index 7f4a41d16d990b..e791de135ac024 100644 --- a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.hpp +++ b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_comparison.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.cpp b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.cpp index 17dd4654519a8b..7e7bf4eeb694d1 100644 --- a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.cpp +++ b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.hpp b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.hpp index 9c65eae41a2cbd..1d1ed01fb46e7b 100644 --- a/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.hpp +++ b/ngraph/python/src/pyngraph/ops/util/binary_elementwise_logical.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/index_reduction.cpp b/ngraph/python/src/pyngraph/ops/util/index_reduction.cpp index d606ca7df3bd0c..d8446e35474e57 100644 --- a/ngraph/python/src/pyngraph/ops/util/index_reduction.cpp +++ b/ngraph/python/src/pyngraph/ops/util/index_reduction.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/util/index_reduction.hpp b/ngraph/python/src/pyngraph/ops/util/index_reduction.hpp index 30ade558537592..45a9e36d74f26f 100644 --- a/ngraph/python/src/pyngraph/ops/util/index_reduction.hpp +++ b/ngraph/python/src/pyngraph/ops/util/index_reduction.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/op_annotations.cpp b/ngraph/python/src/pyngraph/ops/util/op_annotations.cpp index f7fd4643b0b75c..655abac621ba77 100644 --- a/ngraph/python/src/pyngraph/ops/util/op_annotations.cpp +++ b/ngraph/python/src/pyngraph/ops/util/op_annotations.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/util/op_annotations.hpp b/ngraph/python/src/pyngraph/ops/util/op_annotations.hpp index e077cca4a31cf6..8c25cb5082495b 100644 --- a/ngraph/python/src/pyngraph/ops/util/op_annotations.hpp +++ b/ngraph/python/src/pyngraph/ops/util/op_annotations.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.cpp b/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.cpp index 3cc6f6bad4013f..a8cda291e6243d 100644 --- a/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.cpp +++ b/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "pyngraph/ops/util/regmodule_pyngraph_op_util.hpp" #include diff --git a/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.hpp b/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.hpp index 582b50b17159a0..02e6b605d2490a 100644 --- a/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.hpp +++ b/ngraph/python/src/pyngraph/ops/util/regmodule_pyngraph_op_util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.cpp b/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.cpp index 34bd51a701bf16..a429108d3d7403 100644 --- a/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.cpp +++ b/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.hpp b/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.hpp index fbed6643dc30c2..72592315e367bf 100644 --- a/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.hpp +++ b/ngraph/python/src/pyngraph/ops/util/unary_elementwise_arithmetic.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/partial_shape.cpp b/ngraph/python/src/pyngraph/partial_shape.cpp index bcb8667fddaa87..ce8700e9817f02 100644 --- a/ngraph/python/src/pyngraph/partial_shape.cpp +++ b/ngraph/python/src/pyngraph/partial_shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -61,12 +49,14 @@ void regclass_pyngraph_PartialShape(py::module m) shape.def("get_shape", &ngraph::PartialShape::get_shape); shape.def("to_shape", &ngraph::PartialShape::to_shape); - shape.def("__eq__", - [](const ngraph::PartialShape& a, const ngraph::PartialShape& b) { return a == b; }, - py::is_operator()); - shape.def("__eq__", - [](const ngraph::PartialShape& a, const ngraph::Shape& b) { return a == b; }, - py::is_operator()); + shape.def( + "__eq__", + [](const ngraph::PartialShape& a, const ngraph::PartialShape& b) { return a == b; }, + py::is_operator()); + shape.def( + "__eq__", + [](const ngraph::PartialShape& a, const ngraph::Shape& b) { return a == b; }, + py::is_operator()); shape.def("__str__", [](const ngraph::PartialShape& self) -> std::string { std::stringstream ss; diff --git a/ngraph/python/src/pyngraph/partial_shape.hpp b/ngraph/python/src/pyngraph/partial_shape.hpp index a07d43c4028f15..b41db5f13315d3 100644 --- a/ngraph/python/src/pyngraph/partial_shape.hpp +++ b/ngraph/python/src/pyngraph/partial_shape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/passes/manager.cpp b/ngraph/python/src/pyngraph/passes/manager.cpp index 7faed4599f5158..1da2bee4df8e1b 100644 --- a/ngraph/python/src/pyngraph/passes/manager.cpp +++ b/ngraph/python/src/pyngraph/passes/manager.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/passes/manager.hpp b/ngraph/python/src/pyngraph/passes/manager.hpp index b2de417f7067f6..86e3bbb112d939 100644 --- a/ngraph/python/src/pyngraph/passes/manager.hpp +++ b/ngraph/python/src/pyngraph/passes/manager.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.cpp b/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.cpp index 4ce06eb3824dc2..cbe2709f215819 100644 --- a/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.cpp +++ b/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "pyngraph/passes/regmodule_pyngraph_passes.hpp" #include diff --git a/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.hpp b/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.hpp index d0c1e79b291af9..183af301114540 100644 --- a/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.hpp +++ b/ngraph/python/src/pyngraph/passes/regmodule_pyngraph_passes.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/pyngraph.cpp b/ngraph/python/src/pyngraph/pyngraph.cpp index 7a635df285dbdb..5bc12eb1df17b3 100644 --- a/ngraph/python/src/pyngraph/pyngraph.cpp +++ b/ngraph/python/src/pyngraph/pyngraph.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include #include "pyngraph/axis_set.hpp" diff --git a/ngraph/python/src/pyngraph/rt_map.cpp b/ngraph/python/src/pyngraph/rt_map.cpp index 4e564385309d59..3619118b2743e3 100644 --- a/ngraph/python/src/pyngraph/rt_map.cpp +++ b/ngraph/python/src/pyngraph/rt_map.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/rt_map.hpp b/ngraph/python/src/pyngraph/rt_map.hpp index 2eb76b2d80d469..7792b068a4e75b 100644 --- a/ngraph/python/src/pyngraph/rt_map.hpp +++ b/ngraph/python/src/pyngraph/rt_map.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/shape.cpp b/ngraph/python/src/pyngraph/shape.cpp index ceecd92805e58a..57e89b64c96476 100644 --- a/ngraph/python/src/pyngraph/shape.cpp +++ b/ngraph/python/src/pyngraph/shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -36,9 +24,10 @@ void regclass_pyngraph_Shape(py::module m) shape.def("__len__", [](const ngraph::Shape& v) { return v.size(); }); shape.def("__getitem__", [](const ngraph::Shape& v, int key) { return v[key]; }); - shape.def("__iter__", - [](ngraph::Shape& v) { return py::make_iterator(v.begin(), v.end()); }, - py::keep_alive<0, 1>()); /* Keep vector alive while iterator is used */ + shape.def( + "__iter__", + [](ngraph::Shape& v) { return py::make_iterator(v.begin(), v.end()); }, + py::keep_alive<0, 1>()); /* Keep vector alive while iterator is used */ shape.def("__str__", [](const ngraph::Shape& self) -> std::string { std::stringstream ss; diff --git a/ngraph/python/src/pyngraph/shape.hpp b/ngraph/python/src/pyngraph/shape.hpp index 99729ad9eed71f..36e9d545a73707 100644 --- a/ngraph/python/src/pyngraph/shape.hpp +++ b/ngraph/python/src/pyngraph/shape.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/strides.cpp b/ngraph/python/src/pyngraph/strides.cpp index 1f45b33743b7ce..21c4880d6a833f 100644 --- a/ngraph/python/src/pyngraph/strides.cpp +++ b/ngraph/python/src/pyngraph/strides.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/python/src/pyngraph/strides.hpp b/ngraph/python/src/pyngraph/strides.hpp index 8af8ee27fe3dec..889f4c970bb758 100644 --- a/ngraph/python/src/pyngraph/strides.hpp +++ b/ngraph/python/src/pyngraph/strides.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/tensor_iterator_builder.cpp b/ngraph/python/src/pyngraph/tensor_iterator_builder.cpp deleted file mode 100644 index bbb614f7151d2b..00000000000000 --- a/ngraph/python/src/pyngraph/tensor_iterator_builder.cpp +++ /dev/null @@ -1,224 +0,0 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//***************************************************************************** - -#include - -#include "ngraph/check.hpp" -#include "ngraph/except.hpp" -#include "tensor_iterator_builder.hpp" - -util::TensorIteratorBuilder::TensorIteratorBuilder(const ngraph::NodeVector& arguments, - const py::dict& attributes) - : m_arguments(arguments) - , m_attributes(attributes) -{ - get_graph_body(); - // Set-up TI inputs. - NGRAPH_CHECK(m_attributes.contains("slice_input_desc"), - "The required \"slice_input_desc\" attribute is missing. Can't build " - "TensorIterator operator."); - m_slice_input_desc = m_attributes["slice_input_desc"].cast(); - - if (m_attributes.contains("merged_input_desc")) - { - m_merged_input_desc = m_attributes["merged_input_desc"].cast(); - } - - if (m_attributes.contains("invariant_input_desc")) - { - m_invariant_input_desc = m_attributes["invariant_input_desc"].cast(); - } - - if (m_attributes.contains("body_output_desc")) - { - py::list body_output_desc = m_attributes["body_output_desc"].cast(); - for (py::handle h : body_output_desc) - { - py::dict desc = h.cast(); - desc["type"] = "BodyOutputDesc"; - check_attribute(desc, "output_idx", "BodyOutputDesc"); - m_outputs.emplace(desc["output_idx"].cast(), desc); - } - } - if (m_attributes.contains("concat_output_desc")) - { - py::list concat_output_desc = m_attributes["concat_output_desc"].cast(); - for (py::handle h : concat_output_desc) - { - py::dict desc = h.cast(); - desc["type"] = "ConcatOutputDesc"; - check_attribute(desc, "output_idx", "ConcatOutputDesc"); - m_outputs.emplace(desc["output_idx"].cast(), desc); - } - } -} - -std::shared_ptr - util::TensorIteratorBuilder::configure(std::shared_ptr&& ti_node) -{ - ti_node->set_body(m_body); - set_tensor_iterator_sliced_inputs(ti_node); - set_tensor_iterator_merged_inputs(ti_node); - set_tensor_iterator_invariant_inputs(ti_node); - set_tensor_iterator_outputs(ti_node); - ti_node->constructor_validate_and_infer_types(); - - return std::move(ti_node); -} - -void util::TensorIteratorBuilder::check_attribute(const py::dict& attrs, - std::string attr_name, - std::string desc_name) const -{ - NGRAPH_CHECK(attrs.contains(attr_name), - "The required \"", - attr_name, - "\" attribute is missing. Can't build TensorIterator's ", - desc_name, - "."); -} - -void util::TensorIteratorBuilder::get_graph_body() -{ - NGRAPH_CHECK(m_attributes.contains("body"), - "The required \"body\" attribute is missing. Can't build TensorIterator " - "operator."); - - const py::dict& body_attrs = m_attributes["body"].cast(); - - NGRAPH_CHECK(body_attrs.contains("parameters"), - "The required body's \"parameters\" " - "attribute is missing. Can't build TensorIterator's body."); - NGRAPH_CHECK(body_attrs.contains("results"), - "The required body's \"results\" " - "attribute is missing. Can't build TensorIterator's body."); - - m_body_outputs = as_output_vector(body_attrs["results"].cast()); - m_body_parameters = body_attrs["parameters"].cast(); - m_body = std::make_shared(m_body_outputs, m_body_parameters); -} - -void util::TensorIteratorBuilder::set_tensor_iterator_sliced_inputs( - std::shared_ptr& ti_node) const -{ - for (py::handle h : m_slice_input_desc) - { - const py::dict& desc = h.cast(); - check_attribute(desc, "input_idx", "SliceInputDesc"); - check_attribute(desc, "body_parameter_idx", "SliceInputDesc"); - check_attribute(desc, "start", "SliceInputDesc"); - check_attribute(desc, "stride", "SliceInputDesc"); - check_attribute(desc, "part_size", "SliceInputDesc"); - check_attribute(desc, "end", "SliceInputDesc"); - check_attribute(desc, "axis", "SliceInputDesc"); - - ti_node->set_sliced_input(m_body_parameters.at(desc["body_parameter_idx"].cast()), - m_arguments.at(desc["input_idx"].cast()), - desc["start"].cast(), - desc["stride"].cast(), - desc["part_size"].cast(), - desc["end"].cast(), - desc["axis"].cast()); - } -} - -void util::TensorIteratorBuilder::set_tensor_iterator_merged_inputs( - std::shared_ptr& ti_node) const -{ - for (py::handle h : m_merged_input_desc) - { - const py::dict& desc = h.cast(); - check_attribute(desc, "input_idx", "MergedInputDesc"); - check_attribute(desc, "body_parameter_idx", "MergedInputDesc"); - check_attribute(desc, "body_value_idx", "MergedInputDesc"); - - ti_node->set_merged_input(m_body_parameters.at(desc["body_parameter_idx"].cast()), - m_arguments.at(desc["input_idx"].cast()), - m_body_outputs.at(desc["body_value_idx"].cast())); - } -} - -void util::TensorIteratorBuilder::set_tensor_iterator_invariant_inputs( - std::shared_ptr& ti_node) const -{ - for (py::handle h : m_invariant_input_desc) - { - const py::dict& desc = h.cast(); - check_attribute(desc, "input_idx", "InvariantInputDesc"); - check_attribute(desc, "body_parameter_idx", "InvariantInputDesc"); - - ti_node->set_invariant_input( - m_body_parameters.at(desc["body_parameter_idx"].cast()), - m_arguments.at(desc["input_idx"].cast())); - } -} - -void util::TensorIteratorBuilder::set_tensor_iterator_outputs( - std::shared_ptr& ti_node) const -{ - for (const auto& elem : m_outputs) - { - const py::dict& desc = elem.second.cast(); - if (desc["type"].cast() == "BodyOutputDesc") - { - set_tensor_iterator_body_output(desc, ti_node); - } - else if (desc["type"].cast() == "ConcatOutputDesc") - { - set_tensor_iterator_concatenated_body_output(desc, ti_node); - } - else - { - throw ngraph::ngraph_error("Unrecognized TensorIterator output type."); - } - } -} - -void util::TensorIteratorBuilder::set_tensor_iterator_body_output( - const py::dict& desc, std::shared_ptr& ti_node) const -{ - check_attribute(desc, "body_value_idx", "BodyOutputDesc"); - check_attribute(desc, "iteration", "BodyOutputDesc"); - - NGRAPH_CHECK(desc["output_idx"].cast() == ti_node->get_output_size(), - "Descriptor output idx value is different from currently configured " - "TensorIterator output."); - - ti_node->get_iter_value(m_body_outputs.at(desc["body_value_idx"].cast()), - desc["iteration"].cast()); -} - -void util::TensorIteratorBuilder::set_tensor_iterator_concatenated_body_output( - const py::dict& desc, std::shared_ptr& ti_node) const -{ - check_attribute(desc, "body_value_idx", "ConcatOutputDesc"); - check_attribute(desc, "start", "ConcatOutputDesc"); - check_attribute(desc, "stride", "ConcatOutputDesc"); - check_attribute(desc, "part_size", "ConcatOutputDesc"); - check_attribute(desc, "end", "ConcatOutputDesc"); - check_attribute(desc, "axis", "ConcatOutputDesc"); - - NGRAPH_CHECK(desc["output_idx"].cast() == ti_node->get_output_size(), - "Descriptor output idx value is different from currently configured " - "TensorIterator output."); - - ti_node->get_concatenated_slices(m_body_outputs.at(desc["body_value_idx"].cast()), - desc["start"].cast(), - desc["stride"].cast(), - desc["part_size"].cast(), - desc["end"].cast(), - desc["axis"].cast()); -} diff --git a/ngraph/python/src/pyngraph/tensor_iterator_builder.hpp b/ngraph/python/src/pyngraph/tensor_iterator_builder.hpp deleted file mode 100644 index dd5be40318d188..00000000000000 --- a/ngraph/python/src/pyngraph/tensor_iterator_builder.hpp +++ /dev/null @@ -1,135 +0,0 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//***************************************************************************** - -#pragma once - -#include -#include -#include - -#include -#include - -#include "ngraph/node.hpp" -#include "ngraph/op/parameter.hpp" -#include "ngraph/op/tensor_iterator.hpp" - -namespace py = pybind11; - -namespace util -{ - class TensorIteratorBuilder - { - public: - /// - /// \brief Initialize TensorIterator node builder. - /// - /// \param[in] arguments The arguments passed to TensorIterator node. - /// \param[in] attributes The TensorIterator's attributes. This - /// py::dict contains all descriptors for - /// plethora of TensorIterator available inputs - /// and outputs. - /// - TensorIteratorBuilder(const ngraph::NodeVector& arguments, const py::dict& attributes); - - /// - /// \brief Configure instance of TensorIterator node with set-up parameters. - /// - /// \param ti_node The TensorIterator node instance to configure. - /// - /// \return TensorIterator node. - /// - std::shared_ptr - configure(std::shared_ptr&& ti_node); - - private: - /// - /// \brief Helper to conduct attribute presence. - /// - /// \param[in] attrs The attributes - /// \param[in] attr_name The attribute name - /// \param[in] desc_name The description name - /// - inline void check_attribute(const py::dict& attrs, - std::string attr_name, - std::string desc_name) const; - - /// - /// \brief Retrieve the TI graph body. - /// - void get_graph_body(); - - /// - /// \brief Sets the tensor iterator sliced inputs. - /// - /// \param ti_node The TI node we will set input to. - /// - void set_tensor_iterator_sliced_inputs( - std::shared_ptr& ti_node) const; - - /// - /// \brief Sets the tensor iterator merged inputs. - /// - /// \param ti_node The TI node we will set inputs to. - /// - void set_tensor_iterator_merged_inputs( - std::shared_ptr& ti_node) const; - - /// - /// \brief Sets the tensor iterator invariant inputs. - /// - /// \param ti_node The TI node we will set inputs to. - /// - void set_tensor_iterator_invariant_inputs( - std::shared_ptr& ti_node) const; - - /// - /// \brief Sets the tensor iterator outputs. - /// - /// \param ti_node The TI node we will set outputs to. - /// - void - set_tensor_iterator_outputs(std::shared_ptr& ti_node) const; - - /// - /// \brief Sets the tensor iterator body output. - /// - /// \param[in] desc The descriptor of the TI body output. - /// \param ti_node The TI node we will set output to. - /// - void set_tensor_iterator_body_output( - const py::dict& desc, std::shared_ptr& ti_node) const; - - /// - /// \brief Sets the tensor iterator concatenated body output. - /// - /// \param[in] desc The descriptor of the TI body output. - /// \param ti_node The TI node we will set output to. - /// - void set_tensor_iterator_concatenated_body_output( - const py::dict& desc, std::shared_ptr& ti_node) const; - - const ngraph::NodeVector& m_arguments; - const py::dict& m_attributes; - ngraph::OutputVector m_body_outputs; - ngraph::ParameterVector m_body_parameters; - std::shared_ptr m_body; - py::list m_slice_input_desc; - py::list m_merged_input_desc; - py::list m_invariant_input_desc; - std::map m_outputs; - }; -} // namespace util diff --git a/ngraph/python/src/pyngraph/types/element_type.cpp b/ngraph/python/src/pyngraph/types/element_type.cpp index dd07138fe1604f..7ae833a4fa57a5 100644 --- a/ngraph/python/src/pyngraph/types/element_type.cpp +++ b/ngraph/python/src/pyngraph/types/element_type.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -50,9 +38,10 @@ void regclass_pyngraph_Type(py::module m) return ""; }); - type.def("__eq__", - [](const ngraph::element::Type& a, const ngraph::element::Type& b) { return a == b; }, - py::is_operator()); + type.def( + "__eq__", + [](const ngraph::element::Type& a, const ngraph::element::Type& b) { return a == b; }, + py::is_operator()); type.def_property_readonly("bitwidth", &ngraph::element::Type::bitwidth); type.def_property_readonly("is_real", &ngraph::element::Type::is_real); diff --git a/ngraph/python/src/pyngraph/types/element_type.hpp b/ngraph/python/src/pyngraph/types/element_type.hpp index d190ac5d442a34..94a67165c20f14 100644 --- a/ngraph/python/src/pyngraph/types/element_type.hpp +++ b/ngraph/python/src/pyngraph/types/element_type.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.cpp b/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.cpp index 5c177041a9212f..0e41bbfb8f9bad 100644 --- a/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.cpp +++ b/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.hpp b/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.hpp index 04aa8f25c111de..3c87b4c0a3a367 100644 --- a/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.hpp +++ b/ngraph/python/src/pyngraph/types/regmodule_pyngraph_types.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/util.cpp b/ngraph/python/src/pyngraph/util.cpp index 5bf248d734340d..a2eac625babb49 100644 --- a/ngraph/python/src/pyngraph/util.cpp +++ b/ngraph/python/src/pyngraph/util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/python/src/pyngraph/util.hpp b/ngraph/python/src/pyngraph/util.hpp index 9cfb2527967fb8..e132b1d105c592 100644 --- a/ngraph/python/src/pyngraph/util.hpp +++ b/ngraph/python/src/pyngraph/util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/python/src/pyngraph/util.py b/ngraph/python/src/pyngraph/util.py index 4c5927451b00b1..9e54dd5eab2f2d 100644 --- a/ngraph/python/src/pyngraph/util.py +++ b/ngraph/python/src/pyngraph/util.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # flake8: noqa from _pyngraph import util diff --git a/ngraph/python/src/pyngraph/variant.cpp b/ngraph/python/src/pyngraph/variant.cpp index 1fb768fc98bc4e..e7a98a3d9ca7f4 100644 --- a/ngraph/python/src/pyngraph/variant.cpp +++ b/ngraph/python/src/pyngraph/variant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/python/src/pyngraph/variant.hpp b/ngraph/python/src/pyngraph/variant.hpp index c31da277119c7b..ac1b5ddb1381c6 100644 --- a/ngraph/python/src/pyngraph/variant.hpp +++ b/ngraph/python/src/pyngraph/variant.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -40,15 +28,18 @@ extern void regclass_pyngraph_VariantWrapper(py::module m, std::string typestrin variant_wrapper.def(py::init()); - variant_wrapper.def("__eq__", - [](const ngraph::VariantWrapper& a, - const ngraph::VariantWrapper& b) { return a.get() == b.get(); }, - py::is_operator()); - variant_wrapper.def("__eq__", - [](const ngraph::VariantWrapper& a, const std::string& b) { - return a.get() == b; - }, - py::is_operator()); + variant_wrapper.def( + "__eq__", + [](const ngraph::VariantWrapper& a, const ngraph::VariantWrapper& b) { + return a.get() == b.get(); + }, + py::is_operator()); + variant_wrapper.def( + "__eq__", + [](const ngraph::VariantWrapper& a, const std::string& b) { + return a.get() == b; + }, + py::is_operator()); variant_wrapper.def( "__eq__", [](const ngraph::VariantWrapper& a, const int64_t& b) { return a.get() == b; }, diff --git a/ngraph/python/tests/__init__.py b/ngraph/python/tests/__init__.py index 12292911e70b22..b76cf6a7672394 100644 --- a/ngraph/python/tests/__init__.py +++ b/ngraph/python/tests/__init__.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import pytest # test.BACKEND_NAME is a configuration variable determining which @@ -39,16 +27,12 @@ def xfail_test(reason="Mark the test as expected to fail", strict=True): "MaxUnpool") xfail_issue_33512 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" "Einsum") -xfail_issue_33515 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" - "BitShift") xfail_issue_33535 = xfail_test(reason="nGraph does not support the following ONNX operations:" "DynamicQuantizeLinear") xfail_issue_33538 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" "Scan") skip_issue_38084 = pytest.mark.skip(reason="Aborted (core dumped) Assertion " "`(layer->get_output_partial_shape(i).is_static())' failed.") -xfail_issue_33540 = xfail_test(reason="RuntimeError: GRUCell operation has a form that is not supported " - "GRUCell_ should be converted to GRUCellIE operation") xfail_issue_33589 = xfail_test(reason="nGraph does not support the following ONNX operations:" "IsNaN and isInf") xfail_issue_33595 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" @@ -62,11 +46,6 @@ def xfail_test(reason="Mark the test as expected to fail", strict=True): "Compress") xfail_issue_33651 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" "TfIdfVectorizer") -xfail_issue_34310 = xfail_test(reason="RuntimeError: Error of validate layer: LSTMSequence_ with " - "type: LSTMSequence. Layer is not instance of RNNLayer class") -xfail_issue_34314 = xfail_test(reason="RuntimeError: RNNCell operation has a form that is not " - "supported.RNNCell_ should be converted to RNNCellIE operation") -xfail_issue_40957 = xfail_test(reason="RuntimeError: MKLDNNGraph::CreateGraph: No inputs for the topology") xfail_issue_34327 = xfail_test(reason="RuntimeError: '' layer has different " "IN and OUT channels number") xfail_issue_33581 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" @@ -76,12 +55,6 @@ def xfail_test(reason="Mark the test as expected to fail", strict=True): xfail_issue_35912 = xfail_test(reason="RuntimeError: Error of validate layer: B with type: " "Pad. Cannot parse parameter pads_end from IR for layer B. " "Value -1,0 cannot be casted to int.") -xfail_issue_35916 = xfail_test(reason="RuntimeError: Unsupported input dims count for layer Z") -xfail_issue_35917 = xfail_test(reason="RuntimeError: Unsupported input dims count for " - "layer MatMul") -xfail_issue_35918 = xfail_test(reason="onnx.onnx_cpp2py_export.checker.ValidationError: " - "Mismatched attribute type in 'test_node : alpha'") -xfail_issue_35921 = xfail_test(reason="ValueError - shapes mismatch in gemm") xfail_issue_35923 = xfail_test(reason="RuntimeError: PReLU without weights is not supported") xfail_issue_35925 = xfail_test(reason="Assertion error - reduction ops results mismatch") xfail_issue_35927 = xfail_test(reason="RuntimeError: B has zero dimension that is not allowable") @@ -100,14 +73,11 @@ def xfail_test(reason="Mark the test as expected to fail", strict=True): "with index 0 contains dynamic shapes: {}. Try to use " "CNNNetwork::reshape() method in order to specialize shapes " "before the conversion.") -xfail_issue_38086 = xfail_test(reason="RuntimeError: Quantize layer input '' doesn't have blobs") xfail_issue_38091 = xfail_test(reason="AssertionError: Mismatched elements") xfail_issue_38699 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" "ai.onnx.preview.training.Gradient") xfail_issue_38701 = xfail_test(reason="RuntimeError: unsupported element type: STRING") xfail_issue_38706 = xfail_test(reason="RuntimeError: output_3.0 has zero dimension which is not allowed") -xfail_issue_38707 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" - "SoftmaxCrossEntropyLoss") xfail_issue_38708 = xfail_test(reason="RuntimeError: While validating ONNX node '': " "Axes input must be constant") xfail_issue_38710 = xfail_test(reason="RuntimeError: roi has zero dimension which is not allowed") @@ -146,8 +116,6 @@ def xfail_test(reason="Mark the test as expected to fail", strict=True): "ai.onnx.preview.training.Adam") xfail_issue_38735 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" "ai.onnx.preview.training.Adagrad") -xfail_issue_38736 = xfail_test(reason="RuntimeError: nGraph does not support the following ONNX operations:" - "NegativeLogLikelihoodLoss") xfail_issue_48052 = xfail_test(reason="Dropout op is not supported in traning mode") xfail_issue_45180 = xfail_test(reason="RuntimeError: Unsupported dynamic op: ReduceSum") xfail_issue_44839 = xfail_test(reason="Huge computation missmatch") @@ -169,12 +137,8 @@ def xfail_test(reason="Mark the test as expected to fail", strict=True): xfail_issue_47317 = xfail_test(reason="RuntimeError: While validating ONNX node '': " "Check shape_size(axes_shape) == input_rank' failed") xfail_issue_47323 = xfail_test(reason="RuntimeError: The plugin does not support FP64") -xfail_issue_47330 = xfail_test(reason="RuntimeError: Eltwise node with name `[name]` doesn't support " - "FP64 precision.") xfail_issue_47337 = xfail_test(reason="RuntimeError: Unsupported dynamic ops: v1::OneHot") xfail_issue_33593 = xfail_test(reason="Current implementation of MaxPool doesn't support indices output") -xfail_issue_49113 = xfail_test(reason="NLL Loss error: While validating ONNX node 'get_input_partial_shape(i), autob)' failed at " @@ -202,3 +164,13 @@ def xfail_test(reason="Mark the test as expected to fail", strict=True): xfail_issue_37973 = xfail_test(reason="TF Inception V2 - AssertionError: zoo models results mismatch") xfail_issue_47430 = xfail_test(reason="FCN ResNet models - AssertionError: zoo models results mismatch") xfail_issue_47495 = xfail_test(reason="BertSquad-10 from MSFT - AssertionError: zoo models results mismatch") +xfail_issue_49207 = xfail_test(reason="Function references undeclared parameters") +xfail_issue_48145 = xfail_test(reason="BertSquad-8 - AssertionError: Items are not equal: ACTUAL: 4 " + "DESIRED: 3") +xfail_issue_48190 = xfail_test(reason="RobertaBase-11 - AssertionError: Items are not equal: " + "ACTUAL: dtype('float64') DESIRED: dtype('float32')") +xfail_issue_49750 = xfail_test(reason="RuntimeError: Unsupported dynamic ops: v4::Interpolate") +xfail_issue_49752 = xfail_test(reason="RuntimeError: Unsupported dynamic ops: v1::Pad") +xfail_issue_49753 = xfail_test(reason="RuntimeError: Unsupported dynamic ops: v1::StridedSlice") +xfail_issue_49754 = xfail_test(reason="RuntimeError: Unsupported dynamic ops: v1::TopKIE") +xfail_issue_49913 = xfail_test(reason="CPU supports Gelu with tanh mode only") diff --git a/ngraph/python/tests/conftest.py b/ngraph/python/tests/conftest.py index 6f2c79f804b068..a92ba79ed8029b 100644 --- a/ngraph/python/tests/conftest.py +++ b/ngraph/python/tests/conftest.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import pytest diff --git a/ngraph/python/tests/runtime.py b/ngraph/python/tests/runtime.py index 304bce157b42fa..20035fb66b71a8 100644 --- a/ngraph/python/tests/runtime.py +++ b/ngraph/python/tests/runtime.py @@ -1,19 +1,8 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """Provide a layer of abstraction for an OpenVINO runtime environment.""" + import logging from typing import Dict, List, Union diff --git a/ngraph/python/tests/test_ngraph/__init__.py b/ngraph/python/tests/test_ngraph/__init__.py index bdc7c158696026..b274453fb17e08 100644 --- a/ngraph/python/tests/test_ngraph/__init__.py +++ b/ngraph/python/tests/test_ngraph/__init__.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # ngraph.dll directory path visibility is needed to use _pyngraph module # import below causes adding this path to os.environ["PATH"] import ngraph # noqa: F401 'imported but unused' diff --git a/ngraph/python/tests/test_ngraph/test_basic.py b/ngraph/python/tests/test_ngraph/test_basic.py index 3c234061edc80f..9eda56b5599af2 100644 --- a/ngraph/python/tests/test_ngraph/test_basic.py +++ b/ngraph/python/tests/test_ngraph/test_basic.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import json import numpy as np diff --git a/ngraph/python/tests/test_ngraph/test_convolution.py b/ngraph/python/tests/test_ngraph/test_convolution.py index 7965955d1c8d90..6e6500ee63a0fd 100644 --- a/ngraph/python/tests/test_ngraph/test_convolution.py +++ b/ngraph/python/tests/test_ngraph/test_convolution.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np diff --git a/ngraph/python/tests/test_ngraph/test_core.py b/ngraph/python/tests/test_ngraph/test_core.py index bf4f7750360854..b37752839bb2a1 100644 --- a/ngraph/python/tests/test_ngraph/test_core.py +++ b/ngraph/python/tests/test_ngraph/test_core.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng diff --git a/ngraph/python/tests/test_ngraph/test_create_op.py b/ngraph/python/tests/test_ngraph/test_create_op.py index eda402201dfb9b..a14c7fc8d36da8 100644 --- a/ngraph/python/tests/test_ngraph/test_create_op.py +++ b/ngraph/python/tests/test_ngraph/test_create_op.py @@ -1,28 +1,15 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest from _pyngraph import PartialShape import ngraph as ng import ngraph.opset1 as ng_opset1 +import ngraph.opset5 as ng_opset5 from ngraph.impl import Type -from tests import skip_segfault - np_types = [np.float32, np.int32] integral_np_types = [ np.int8, @@ -36,7 +23,7 @@ ] -@pytest.mark.parametrize("dtype", np_types) +@pytest.mark.parametrize("dtype", [np.float32, np.float64]) def test_binary_convolution(dtype): strides = np.array([1, 1]) pads_begin = np.array([0, 0]) @@ -718,14 +705,89 @@ def test_rnn_sequence(): assert list(node_param.get_output_shape(1)) == expected_shape_h -@skip_segfault def test_loop(): - trip_count = 8 - condition = True + from ngraph.utils.tensor_iterator_types import ( + GraphBody, + TensorIteratorSliceInputDesc, + TensorIteratorMergedInputDesc, + TensorIteratorInvariantInputDesc, + TensorIteratorBodyOutputDesc, + TensorIteratorConcatOutputDesc, + ) + + condition = ng.constant(True, dtype=np.bool) + trip_count = ng.constant(16, dtype=np.int32) + # Body parameters + body_timestep = ng.parameter([], np.int32, "timestep") + body_data_in = ng.parameter([1, 2, 2], np.float32, "body_in") + body_prev_cma = ng.parameter([2, 2], np.float32, "body_prev_cma") + body_const_one = ng.parameter([], np.int32, "body_const_one") + + # CMA = cumulative moving average + prev_cum_sum = ng.multiply(ng.convert(body_timestep, "f32"), body_prev_cma) + curr_cum_sum = ng.add(prev_cum_sum, ng.squeeze(body_data_in, [0])) + elem_cnt = ng.add(body_const_one, body_timestep) + curr_cma = ng.divide(curr_cum_sum, ng.convert(elem_cnt, "f32")) + cma_hist = ng.unsqueeze(curr_cma, [0]) + + # TI inputs + data = ng.parameter([16, 2, 2], np.float32, "data") + # Iterations count + zero = ng.constant(0, dtype=np.int32) + one = ng.constant(1, dtype=np.int32) + initial_cma = ng.constant(np.zeros([2, 2], dtype=np.float32), dtype=np.float32) + iter_cnt = ng.range(zero, np.int32(16), np.int32(1)) + ti_inputs = [iter_cnt, data, initial_cma, one] + body_const_condition = ng.constant(True, dtype=np.bool) + + graph_body = GraphBody([body_timestep, body_data_in, body_prev_cma, body_const_one], + [curr_cma, cma_hist, body_const_condition]) + ti_slice_input_desc = [ + # timestep + # input_idx, body_param_idx, start, stride, part_size, end, axis + TensorIteratorSliceInputDesc(2, 0, 0, 1, 1, -1, 0), + # data + TensorIteratorSliceInputDesc(3, 1, 0, 1, 1, -1, 0), + ] + ti_merged_input_desc = [ + # body prev/curr_cma + TensorIteratorMergedInputDesc(4, 2, 0), + ] + ti_invariant_input_desc = [ + # body const one + TensorIteratorInvariantInputDesc(5, 3), + ] - node_default = ng.loop(trip_count, condition) + # TI outputs + ti_body_output_desc = [ + # final average + TensorIteratorBodyOutputDesc(0, 0, -1), + ] + ti_concat_output_desc = [ + # history of cma + TensorIteratorConcatOutputDesc(1, 1, 0, 1, 1, -1, 0), + ] + + node = ng.loop( + trip_count, + condition, + ti_inputs, + graph_body, + ti_slice_input_desc, + ti_merged_input_desc, + ti_invariant_input_desc, + ti_body_output_desc, + ti_concat_output_desc, + 2, + -1, + ) - assert node_default.get_type_name() == "Loop" + assert node.get_type_name() == "Loop" + assert node.get_output_size() == 2 + # final average + assert list(node.get_output_shape(0)) == [2, 2] + # cma history + assert list(node.get_output_shape(1)) == [16, 2, 2] def test_roi_pooling(): @@ -1096,6 +1158,28 @@ def test_tensor_iterator(): assert list(node.get_output_shape(1)) == [16, 2, 2] +def test_read_value_opset5(): + init_value = ng_opset5.parameter([2, 2], name="init_value", dtype=np.int32) + + node = ng_opset5.read_value(init_value, "var_id_667") + + assert node.get_type_name() == "ReadValue" + assert node.get_output_size() == 1 + assert list(node.get_output_shape(0)) == [2, 2] + assert node.get_output_element_type(0) == Type.i32 + + +def test_assign_opset5(): + input_data = ng_opset5.parameter([5, 7], name="input_data", dtype=np.int32) + rv = ng_opset5.read_value(input_data, "var_id_667") + node = ng_opset5.assign(rv, "var_id_667") + + assert node.get_type_name() == "Assign" + assert node.get_output_size() == 1 + assert list(node.get_output_shape(0)) == [5, 7] + assert node.get_output_element_type(0) == Type.i32 + + def test_read_value(): init_value = ng.parameter([2, 2], name="init_value", dtype=np.int32) diff --git a/ngraph/python/tests/test_ngraph/test_ctc_loss.py b/ngraph/python/tests/test_ngraph/test_ctc_loss.py index a9da5c630ab17a..7c977eacb757b0 100644 --- a/ngraph/python/tests/test_ngraph/test_ctc_loss.py +++ b/ngraph/python/tests/test_ngraph/test_ctc_loss.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng diff --git a/ngraph/python/tests/test_ngraph/test_data_movement.py b/ngraph/python/tests/test_ngraph/test_data_movement.py index 0e18ed687c8404..aa1c41dbfd909c 100644 --- a/ngraph/python/tests/test_ngraph/test_data_movement.py +++ b/ngraph/python/tests/test_ngraph/test_data_movement.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng diff --git a/ngraph/python/tests/test_ngraph/test_dyn_attributes.py b/ngraph/python/tests/test_ngraph/test_dyn_attributes.py index 2c4220601cf8c5..a945ec91ef05cc 100644 --- a/ngraph/python/tests/test_ngraph/test_dyn_attributes.py +++ b/ngraph/python/tests/test_ngraph/test_dyn_attributes.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest diff --git a/ngraph/python/tests/test_ngraph/test_input_validation.py b/ngraph/python/tests/test_ngraph/test_input_validation.py index a7ac68072153d9..ca31e065b8f04e 100644 --- a/ngraph/python/tests/test_ngraph/test_input_validation.py +++ b/ngraph/python/tests/test_ngraph/test_input_validation.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest diff --git a/ngraph/python/tests/test_ngraph/test_log_softmax.py b/ngraph/python/tests/test_ngraph/test_log_softmax.py index 6dda1e707b9acd..2506c591c052c7 100644 --- a/ngraph/python/tests/test_ngraph/test_log_softmax.py +++ b/ngraph/python/tests/test_ngraph/test_log_softmax.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng from ngraph.impl import Shape, Type diff --git a/ngraph/python/tests/test_ngraph/test_manager.py b/ngraph/python/tests/test_ngraph/test_manager.py index c58ad3bf6f52c2..2c0c79e3f5a9f8 100644 --- a/ngraph/python/tests/test_ngraph/test_manager.py +++ b/ngraph/python/tests/test_ngraph/test_manager.py @@ -1,19 +1,8 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # flake8: noqa + import json import numpy as np diff --git a/ngraph/python/tests/test_ngraph/test_node_factory.py b/ngraph/python/tests/test_ngraph/test_node_factory.py index 22e7e08ee38265..e47ad8ee75d15e 100644 --- a/ngraph/python/tests/test_ngraph/test_node_factory.py +++ b/ngraph/python/tests/test_ngraph/test_node_factory.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng from ngraph.utils.node_factory import NodeFactory diff --git a/ngraph/python/tests/test_ngraph/test_normalization.py b/ngraph/python/tests/test_ngraph/test_normalization.py index 7a8d23f133a821..50d3a1c5a214be 100644 --- a/ngraph/python/tests/test_ngraph/test_normalization.py +++ b/ngraph/python/tests/test_ngraph/test_normalization.py @@ -1,28 +1,13 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np import ngraph as ng from tests.runtime import get_runtime from tests.test_ngraph.util import run_op_node -from tests import xfail_issue_40957 -@xfail_issue_40957 def test_lrn(): input_image_shape = (2, 3, 2, 1) input_image = np.arange(int(np.prod(input_image_shape))).reshape(input_image_shape).astype("f") diff --git a/ngraph/python/tests/test_ngraph/test_ops.py b/ngraph/python/tests/test_ngraph/test_ops.py index f5abfcc72c512c..bbe22553cd9d21 100644 --- a/ngraph/python/tests/test_ngraph/test_ops.py +++ b/ngraph/python/tests/test_ngraph/test_ops.py @@ -1,26 +1,14 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # flake8: noqa + import numpy as np import ngraph as ng from ngraph.impl import AxisSet, Function, Shape, Type from ngraph.impl.op import Constant, Parameter from tests.runtime import get_runtime -from tests import xfail_issue_40957 def binary_op(op_str, a, b): @@ -481,7 +469,6 @@ def test_broadcast(): assert np.allclose(result, expected) -@xfail_issue_40957 def test_constant(): element_type = Type.f32 parameter_list = [] diff --git a/ngraph/python/tests/test_ngraph/test_ops_binary.py b/ngraph/python/tests/test_ngraph/test_ops_binary.py index 4ed694cde368e7..118c06faf6abef 100644 --- a/ngraph/python/tests/test_ngraph/test_ops_binary.py +++ b/ngraph/python/tests/test_ngraph/test_ops_binary.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import operator import numpy as np diff --git a/ngraph/python/tests/test_ngraph/test_ops_fused.py b/ngraph/python/tests/test_ngraph/test_ops_fused.py index b26f80a3a10115..121cae2b157a2c 100644 --- a/ngraph/python/tests/test_ngraph/test_ops_fused.py +++ b/ngraph/python/tests/test_ngraph/test_ops_fused.py @@ -1,32 +1,18 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest import ngraph as ng from tests.runtime import get_runtime -from tests import (xfail_issue_40957, - xfail_issue_34327, +from tests import (xfail_issue_34327, xfail_issue_36485, xfail_issue_36486, xfail_issue_36487, xfail_issue_44976) -@xfail_issue_40957 def test_elu_operator_with_scalar_and_array(): runtime = get_runtime() @@ -224,37 +210,6 @@ def test_batch_to_space(): assert np.allclose(result, expected) -def test_gelu_operator_with_parameters(): - runtime = get_runtime() - - data_value = np.array([[-5, 1], [-2, 3]], dtype=np.float32) - - data_shape = [2, 2] - parameter_data = ng.parameter(data_shape, name="Data", dtype=np.float32) - - model = ng.gelu(parameter_data) - computation = runtime.computation(model, parameter_data) - - result = computation(data_value) - expected = np.array([[-1.4901161e-06, 8.4134471e-01], [-4.5500278e-02, 2.9959502]], dtype=np.float32) - assert np.allclose(result, expected, 0.007, 0.007) - - -@xfail_issue_40957 -def test_gelu_operator_with_array(): - runtime = get_runtime() - - data_value = np.array([[-5, 1], [-2, 3]], dtype=np.float32) - - model = ng.gelu(data_value) - computation = runtime.computation(model) - - result = computation() - expected = np.array([[-1.4901161e-06, 8.4134471e-01], [-4.5500278e-02, 2.9959502]], dtype=np.float32) - - assert np.allclose(result, expected, 0.007, 0.007) - - def test_clamp_operator(): runtime = get_runtime() @@ -273,7 +228,6 @@ def test_clamp_operator(): assert np.allclose(result, expected) -@xfail_issue_40957 def test_clamp_operator_with_array(): runtime = get_runtime() diff --git a/ngraph/python/tests/test_ngraph/test_ops_matmul.py b/ngraph/python/tests/test_ngraph/test_ops_matmul.py index c721c4685f0d05..330bb296758f95 100644 --- a/ngraph/python/tests/test_ngraph/test_ops_matmul.py +++ b/ngraph/python/tests/test_ngraph/test_ops_matmul.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest diff --git a/ngraph/python/tests/test_ngraph/test_ops_multioutput.py b/ngraph/python/tests/test_ngraph/test_ops_multioutput.py index 9019a04883edf1..9f0c7efd46dac0 100644 --- a/ngraph/python/tests/test_ngraph/test_ops_multioutput.py +++ b/ngraph/python/tests/test_ngraph/test_ops_multioutput.py @@ -1,26 +1,12 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng from tests.runtime import get_runtime -from tests import xfail_issue_40957 -@xfail_issue_40957 def test_split(): runtime = get_runtime() input_tensor = ng.constant(np.array([0, 1, 2, 3, 4, 5], dtype=np.int32)) @@ -34,7 +20,6 @@ def test_split(): assert np.allclose(split_results, expected_results) -@xfail_issue_40957 def test_variadic_split(): runtime = get_runtime() input_tensor = ng.constant(np.array([[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]], dtype=np.int32)) diff --git a/ngraph/python/tests/test_ngraph/test_ops_reshape.py b/ngraph/python/tests/test_ngraph/test_ops_reshape.py index b74658fcd0b086..85ec57739fb1f1 100644 --- a/ngraph/python/tests/test_ngraph/test_ops_reshape.py +++ b/ngraph/python/tests/test_ngraph/test_ops_reshape.py @@ -1,25 +1,12 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest import ngraph as ng from tests.runtime import get_runtime from tests.test_ngraph.util import run_op_node, run_op_numeric_data -from tests import xfail_issue_40957 def test_concat(): @@ -37,7 +24,6 @@ def test_concat(): assert np.allclose(result, expected) -@xfail_issue_40957 @pytest.mark.parametrize( "val_type, value", [(bool, False), (bool, np.empty((2, 2), dtype=bool))] ) @@ -50,16 +36,16 @@ def test_constant_from_bool(val_type, value): @pytest.mark.parametrize( "val_type, value", [ - pytest.param(np.float32, np.float32(0.1234), marks=xfail_issue_40957), - pytest.param(np.float64, np.float64(0.1234), marks=xfail_issue_40957), - pytest.param(np.int8, np.int8(-63), marks=xfail_issue_40957), - pytest.param(np.int16, np.int16(-12345), marks=xfail_issue_40957), - pytest.param(np.int32, np.int32(-123456), marks=xfail_issue_40957), - pytest.param(np.int64, np.int64(-1234567), marks=xfail_issue_40957), - pytest.param(np.uint8, np.uint8(63), marks=xfail_issue_40957), - pytest.param(np.uint16, np.uint16(12345), marks=xfail_issue_40957), - pytest.param(np.uint32, np.uint32(123456), marks=xfail_issue_40957), - pytest.param(np.uint64, np.uint64(1234567), marks=xfail_issue_40957), + pytest.param(np.int16, np.int16(-12345)), + pytest.param(np.int64, np.int64(-1234567)), + pytest.param(np.uint16, np.uint16(12345)), + pytest.param(np.uint32, np.uint32(123456)), + pytest.param(np.uint64, np.uint64(1234567)), + pytest.param(np.float64, np.float64(0.1234)), + pytest.param(np.float32, np.float32(0.1234)), + pytest.param(np.int8, np.int8(-63)), + pytest.param(np.int32, np.int32(-123456)), + pytest.param(np.uint8, np.uint8(63)), ], ) def test_constant_from_scalar(val_type, value): @@ -71,8 +57,8 @@ def test_constant_from_scalar(val_type, value): @pytest.mark.parametrize( "val_type", [ - pytest.param(np.float32, marks=xfail_issue_40957), - pytest.param(np.float64, marks=xfail_issue_40957), + pytest.param(np.float64), + pytest.param(np.float32), ], ) def test_constant_from_float_array(val_type): @@ -82,18 +68,17 @@ def test_constant_from_float_array(val_type): assert np.allclose(result, input_data) -@xfail_issue_40957 @pytest.mark.parametrize( "val_type, range_start, range_end", [ - (np.int8, -8, 8), - (np.int16, -64, 64), - (np.int32, -1024, 1024), - (np.int64, -16383, 16383), - (np.uint8, 0, 8), - (np.uint16, 0, 64), - (np.uint32, 0, 1024), - (np.uint64, 0, 16383), + pytest.param(np.int16, -64, 64), + pytest.param(np.int64, -16383, 16383), + pytest.param(np.uint16, 0, 64), + pytest.param(np.uint32, 0, 1024), + pytest.param(np.uint64, 0, 16383), + pytest.param(np.int8, -8, 8), + pytest.param(np.int32, -1024, 1024), + pytest.param(np.uint8, 0, 8), ], ) def test_constant_from_integer_array(val_type, range_start, range_end): diff --git a/ngraph/python/tests/test_ngraph/test_ops_scatter.py b/ngraph/python/tests/test_ngraph/test_ops_scatter.py index 8ffb41f3a49030..b762f1068a1e1a 100644 --- a/ngraph/python/tests/test_ngraph/test_ops_scatter.py +++ b/ngraph/python/tests/test_ngraph/test_ops_scatter.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng diff --git a/ngraph/python/tests/test_ngraph/test_ops_unary.py b/ngraph/python/tests/test_ngraph/test_ops_unary.py index c796da1b32b911..f10f77c9030b87 100644 --- a/ngraph/python/tests/test_ngraph/test_ops_unary.py +++ b/ngraph/python/tests/test_ngraph/test_ops_unary.py @@ -1,25 +1,14 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest import ngraph as ng from ngraph.impl import Shape, Type +from tests.runtime import get_runtime from tests.test_ngraph.util import run_op_node -from tests import xfail_issue_44970 +from tests import xfail_issue_44970, xfail_issue_49913 @pytest.mark.parametrize( @@ -185,3 +174,64 @@ def test_hsigmoid(): assert node.get_output_size() == 1 assert list(node.get_output_shape(0)) == [3, 10] assert node.get_output_element_type(0) == Type.f32 + + +@xfail_issue_49913 +def test_gelu_operator_with_parameters(): + runtime = get_runtime() + + data_value = np.array([[-5, 1], [-2, 3]], dtype=np.float32) + + data_shape = [2, 2] + parameter_data = ng.parameter(data_shape, name="Data", dtype=np.float32) + + model = ng.gelu(parameter_data, "erf") + computation = runtime.computation(model, parameter_data) + + result = computation(data_value) + expected = np.array([[-1.6391277e-06, 8.4134471e-01], [-4.5500278e-02, 2.9959502]], dtype=np.float32) + assert np.allclose(result, expected) + + +@xfail_issue_49913 +def test_gelu_operator_with_array(): + runtime = get_runtime() + + data_value = np.array([[-5, 1], [-2, 3]], dtype=np.float32) + + model = ng.gelu(data_value, "erf") + computation = runtime.computation(model) + + result = computation() + expected = np.array([[-1.6391277e-06, 8.4134471e-01], [-4.5500278e-02, 2.9959502]], dtype=np.float32) + assert np.allclose(result, expected) + + +def test_gelu_tanh_operator_with_parameters(): + runtime = get_runtime() + + data_value = np.array([[-5, 1], [-2, 3]], dtype=np.float32) + + data_shape = [2, 2] + parameter_data = ng.parameter(data_shape, name="Data", dtype=np.float32) + + model = ng.gelu(parameter_data, "tanh") + computation = runtime.computation(model, parameter_data) + + result = computation(data_value) + expected = np.array([[0.0, 0.841192], [-0.04540223, 2.9963627]], dtype=np.float32) + assert np.allclose(result, expected, 1e-6, 1e-6) + + +def test_gelu_tanh_operator_with_array(): + runtime = get_runtime() + + data_value = np.array([[-5, 1], [-2, 3]], dtype=np.float32) + + model = ng.gelu(data_value, "tanh") + computation = runtime.computation(model) + + result = computation() + expected = np.array([[0.0, 0.841192], [-0.04540223, 2.9963627]], dtype=np.float32) + + assert np.allclose(result, expected, 1e-6, 1e-6) diff --git a/ngraph/python/tests/test_ngraph/test_pooling.py b/ngraph/python/tests/test_ngraph/test_pooling.py index c522f3eaf39fdf..afee2ede43f54f 100644 --- a/ngraph/python/tests/test_ngraph/test_pooling.py +++ b/ngraph/python/tests/test_ngraph/test_pooling.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest diff --git a/ngraph/python/tests/test_ngraph/test_proposal.py b/ngraph/python/tests/test_ngraph/test_proposal.py index 9d260dad668a49..0c99934b1ba41e 100644 --- a/ngraph/python/tests/test_ngraph/test_proposal.py +++ b/ngraph/python/tests/test_ngraph/test_proposal.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng from ngraph.impl import Shape, Type diff --git a/ngraph/python/tests/test_ngraph/test_reduction.py b/ngraph/python/tests/test_ngraph/test_reduction.py index 0e6980a1130dc4..2222b98b02700f 100644 --- a/ngraph/python/tests/test_ngraph/test_reduction.py +++ b/ngraph/python/tests/test_ngraph/test_reduction.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import pytest from _pyngraph import PartialShape, Dimension @@ -21,7 +9,6 @@ from ngraph.utils.types import make_constant_node from tests.runtime import get_runtime from tests.test_ngraph.util import run_op_node -from tests import xfail_issue_40957 @pytest.mark.parametrize( @@ -162,7 +149,6 @@ def test_roi_align(): assert list(node.get_output_shape(0)) == expected_shape -@xfail_issue_40957 @pytest.mark.parametrize( "input_shape, cumsum_axis, reverse", [([5, 2], 0, False), ([5, 2], 1, False), ([5, 2, 6], 2, False), ([5, 2], 0, True)], @@ -182,7 +168,6 @@ def test_cum_sum(input_shape, cumsum_axis, reverse): assert np.allclose(result, expected) -@xfail_issue_40957 def test_normalize_l2(): input_shape = [1, 2, 3, 4] input_data = np.arange(np.prod(input_shape)).reshape(input_shape).astype(np.float32) diff --git a/ngraph/python/tests/test_ngraph/test_sequence_processing.py b/ngraph/python/tests/test_ngraph/test_sequence_processing.py index e1cb52a41be9a6..d3884763246344 100644 --- a/ngraph/python/tests/test_ngraph/test_sequence_processing.py +++ b/ngraph/python/tests/test_ngraph/test_sequence_processing.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng diff --git a/ngraph/python/tests/test_ngraph/test_swish.py b/ngraph/python/tests/test_ngraph/test_swish.py index 51b587537aada1..17b418beaca704 100644 --- a/ngraph/python/tests/test_ngraph/test_swish.py +++ b/ngraph/python/tests/test_ngraph/test_swish.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import ngraph as ng from ngraph.impl import Shape, Type diff --git a/ngraph/python/tests/test_ngraph/util.py b/ngraph/python/tests/test_ngraph/util.py index 227b41fc71b7d8..da8e6dac6ec616 100644 --- a/ngraph/python/tests/test_ngraph/util.py +++ b/ngraph/python/tests/test_ngraph/util.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from typing import Any, Callable, List diff --git a/ngraph/python/tests/test_onnx/__init__.py b/ngraph/python/tests/test_onnx/__init__.py index e69de29bb2d1d6..dc8ba3c4598ddc 100644 --- a/ngraph/python/tests/test_onnx/__init__.py +++ b/ngraph/python/tests/test_onnx/__init__.py @@ -0,0 +1,2 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 diff --git a/ngraph/python/tests/test_onnx/model_zoo_preprocess.sh b/ngraph/python/tests/test_onnx/model_zoo_preprocess.sh index ba7f598dad9dc5..0595024e1ab5f5 100755 --- a/ngraph/python/tests/test_onnx/model_zoo_preprocess.sh +++ b/ngraph/python/tests/test_onnx/model_zoo_preprocess.sh @@ -1,4 +1,8 @@ #!/bin/bash + +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + set -e # provide ONNX Model Zoo commit hash ID to update: diff --git a/ngraph/python/tests/test_onnx/models/external_data.onnx b/ngraph/python/tests/test_onnx/models/external_data.onnx new file mode 100644 index 00000000000000..9cd1ae3bb10084 --- /dev/null +++ b/ngraph/python/tests/test_onnx/models/external_data.onnx @@ -0,0 +1,22 @@ +nGraph ONNX Importer: +& +data_a +data_b +data_cresult"Meantest_mean_example*,Bdata_cj +locationdata/tensor.datapZ +data_a + + +Z +data_b + + +Z +data_c + + +b +result + + +B \ No newline at end of file diff --git a/ngraph/python/tests/test_onnx/models/external_data.prototxt b/ngraph/python/tests/test_onnx/models/external_data.prototxt deleted file mode 100644 index e5ab8d37b8ba15..00000000000000 --- a/ngraph/python/tests/test_onnx/models/external_data.prototxt +++ /dev/null @@ -1,77 +0,0 @@ -ir_version: 3 -producer_name: "nGraph ONNX Importer" -graph { - node { - input: "data_a" - input: "data_b" - input: "data_c" - output: "result" - op_type: "Mean" - } - name: "test_mean_example" - initializer { - dims: 3 - data_type: 1 - name: "data_c" - external_data { - key: "location", - value: "data/tensor.data" - } - data_location: 1 - } - input { - name: "data_a" - type { - tensor_type { - elem_type: 1 - shape { - dim { - dim_value: 3 - } - } - } - } - } - input { - name: "data_b" - type { - tensor_type { - elem_type: 1 - shape { - dim { - dim_value: 3 - } - } - } - } - } - input { - name: "data_c" - type { - tensor_type { - elem_type: 1 - shape { - dim { - dim_value: 3 - } - } - } - } - } - output { - name: "result" - type { - tensor_type { - elem_type: 1 - shape { - dim { - dim_value: 3 - } - } - } - } - } -} -opset_import { - version: 8 -} diff --git a/ngraph/python/tests/test_onnx/test_backend.py b/ngraph/python/tests/test_onnx/test_backend.py index 82a11259086efb..5a2d6543fccc23 100644 --- a/ngraph/python/tests/test_onnx/test_backend.py +++ b/ngraph/python/tests/test_onnx/test_backend.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging @@ -23,10 +10,8 @@ from tests import (BACKEND_NAME, xfail_issue_33488, xfail_issue_33512, - xfail_issue_33515, xfail_issue_33535, xfail_issue_33538, - xfail_issue_33540, xfail_issue_33581, xfail_issue_33589, xfail_issue_33593, @@ -36,17 +21,11 @@ xfail_issue_33633, xfail_issue_33644, xfail_issue_33651, - xfail_issue_34310, - xfail_issue_34314, - xfail_issue_36535, - xfail_issue_38086, xfail_issue_38091, xfail_issue_38699, xfail_issue_38701, xfail_issue_38706, - xfail_issue_38707, xfail_issue_38708, - xfail_issue_38710, xfail_issue_38712, xfail_issue_38713, xfail_issue_38714, @@ -57,12 +36,10 @@ xfail_issue_38732, xfail_issue_38734, xfail_issue_38735, - xfail_issue_38736, xfail_issue_39656, xfail_issue_39658, xfail_issue_39659, xfail_issue_39662, - xfail_issue_40957, xfail_issue_43742, xfail_issue_44839, xfail_issue_44848, @@ -82,10 +59,13 @@ xfail_issue_46765, xfail_issue_47317, xfail_issue_47323, - xfail_issue_47330, xfail_issue_47337, xfail_issue_48052, - xfail_issue_49113) + xfail_issue_49207, + xfail_issue_49750, + xfail_issue_49752, + xfail_issue_49753, + xfail_issue_49754) def expect_fail(test_case_path, xfail): # type: (str) -> None @@ -132,15 +112,17 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None globals().update(backend_test.enable_report().test_cases) tests_expected_to_fail = [ - (xfail_issue_34314, + (xfail_issue_49207, "OnnxBackendNodeModelTest.test_rnn_seq_length_cpu", "OnnxBackendNodeModelTest.test_simple_rnn_defaults_cpu", - "OnnxBackendNodeModelTest.test_simple_rnn_with_initial_bias_cpu"), - (xfail_issue_33540, + "OnnxBackendNodeModelTest.test_simple_rnn_with_initial_bias_cpu", "OnnxBackendNodeModelTest.test_gru_defaults_cpu", "OnnxBackendNodeModelTest.test_gru_seq_length_cpu", - "OnnxBackendNodeModelTest.test_gru_with_initial_bias_cpu"), - (xfail_issue_36535, + "OnnxBackendNodeModelTest.test_gru_with_initial_bias_cpu", + "OnnxBackendNodeModelTest.test_lstm_defaults_cpu", + "OnnxBackendNodeModelTest.test_lstm_with_initial_bias_cpu", + "OnnxBackendNodeModelTest.test_lstm_with_peepholes_cpu"), + (xfail_issue_49752, "OnnxBackendNodeModelTest.test_constant_pad_cpu", "OnnxBackendNodeModelTest.test_edge_pad_cpu", "OnnxBackendNodeModelTest.test_reflect_pad_cpu"), @@ -173,32 +155,16 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None "OnnxBackendNodeModelTest.test_nonmaxsuppression_two_classes_cpu"), (xfail_issue_39662, "OnnxBackendNodeModelTest.test_nonmaxsuppression_two_classes_cpu", - "OnnxBackendNodeModelTest.test_slice_default_axes_cpu", "OnnxBackendNodeModelTest.test_scatter_elements_with_negative_indices_cpu", - "OnnxBackendNodeModelTest.test_constant_pad_cpu", - "OnnxBackendNodeModelTest.test_edge_pad_cpu", - "OnnxBackendNodeModelTest.test_reflect_pad_cpu", + "OnnxBackendNodeModelTest.test_gather_negative_indices_cpu"), + (xfail_issue_49753, + "OnnxBackendNodeModelTest.test_slice_default_axes_cpu"), + (xfail_issue_49754, "OnnxBackendNodeModelTest.test_top_k_cpu", "OnnxBackendNodeModelTest.test_top_k_negative_axis_cpu", - "OnnxBackendNodeModelTest.test_top_k_smallest_cpu", - "OnnxBackendNodeModelTest.test_constantofshape_int_shape_zero_cpu", - "OnnxBackendNodeModelTest.test_gather_negative_indices_cpu"), + "OnnxBackendNodeModelTest.test_top_k_smallest_cpu"), (xfail_issue_33633, "OnnxBackendNodeModelTest.test_maxpool_2d_dilations_cpu"), - (xfail_issue_38086, - "OnnxBackendNodeModelTest.test_dynamicquantizelinear_min_adjusted_expanded_cpu", - "OnnxBackendNodeModelTest.test_dynamicquantizelinear_expanded_cpu", - "OnnxBackendNodeModelTest.test_dynamicquantizelinear_max_adjusted_expanded_cpu", - "OnnxBackendNodeModelTest.test_quantizelinear_cpu"), - (xfail_issue_40957, - "OnnxBackendNodeModelTest.test_constant_cpu", - "OnnxBackendNodeModelTest.test_eyelike_populate_off_main_diagonal_cpu", - "OnnxBackendNodeModelTest.test_eyelike_without_dtype_cpu", - "OnnxBackendNodeModelTest.test_eyelike_with_dtype_cpu"), - (xfail_issue_34310, - "OnnxBackendNodeModelTest.test_lstm_defaults_cpu", - "OnnxBackendNodeModelTest.test_lstm_with_initial_bias_cpu", - "OnnxBackendNodeModelTest.test_lstm_with_peepholes_cpu"), (xfail_issue_46762, "OnnxBackendNodeModelTest.test_min_uint8_cpu", "OnnxBackendNodeModelTest.test_min_uint16_cpu", @@ -229,10 +195,7 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None (xfail_issue_47323, "OnnxBackendPyTorchOperatorModelTest.test_operator_add_broadcast_cpu", "OnnxBackendPyTorchOperatorModelTest.test_operator_addconstant_cpu", - "OnnxBackendPyTorchOperatorModelTest.test_operator_add_size1_right_broadcast_cpu",), - (xfail_issue_47330, - "OnnxBackendNodeModelTest.test_mod_mixed_sign_float64_cpu", - "OnnxBackendNodeModelTest.test_min_float64_cpu"), + "OnnxBackendPyTorchOperatorModelTest.test_operator_add_size1_right_broadcast_cpu"), (xfail_issue_38699, "OnnxBackendSimpleModelTest.test_gradient_of_add_and_mul_cpu", "OnnxBackendSimpleModelTest.test_gradient_of_add_cpu"), @@ -276,94 +239,6 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None "OnnxBackendNodeModelTest.test_tfidfvectorizer_tf_onlybigrams_skip5_cpu"), (xfail_issue_38706, "OnnxBackendNodeModelTest.test_split_zero_size_splits_cpu"), - (xfail_issue_38736, - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_sum_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_sum_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_3d_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_4d_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1_mean_weight_negative_ignore_index_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_weights_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_weights_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1_mean_weight_negative_ignore_index_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_4d_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_4d_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_3d_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_4d_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_3d_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_3d_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_3d_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_3d_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_expanded_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight_log_prob_expanded_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_with_weight_reduction_mean_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2d3d4d5_none_no_weight_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2d3d4d5_mean_weight_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_with_weight_reduction_sum_ignore_index_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_with_weight_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_with_weight_reduction_sum_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_reduction_sum_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_reduction_mean_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_no_weight_reduction_mean_ignore_index_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1d2_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1_weight_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1_mean_weight_negative_ignore_index_cpu", # noqa - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1_ignore_index_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NCd1_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_input_shape_is_NC_cpu", - "OnnxBackendNodeModelTest.test_negative_log_likelihood_loss_iinput_shape_is_NCd1_weight_ignore_index_cpu"), # noqa - (xfail_issue_38707, - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_weights_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_sum_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_4d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_3d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_sum_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_none_weights_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_4d_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_3d_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight_log_prob_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_4d_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_weight_ignore_index_3d_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_mean_weight_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_4d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_no_weight_ignore_index_3d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight_log_prob_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_3d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1_mean_weight_negative_ignore_index_log_prob_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_none_no_weight_negative_ignore_index_log_prob_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_mean_3d_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3d4d5_none_no_weight_cpu", - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1d2d3_sum_weight_high_ignore_index_log_prob_cpu", # noqa - "OnnxBackendNodeModelTest.test_softmax_cross_entropy_input_shape_is_NCd1_mean_weight_negative_ignore_index_cpu"), # noqa (xfail_issue_38708, "OnnxBackendNodeModelTest.test_slice_default_steps_cpu", "OnnxBackendNodeModelTest.test_slice_negative_axes_cpu", @@ -375,7 +250,7 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None (xfail_issue_33538, "OnnxBackendNodeModelTest.test_scan_sum_cpu", "OnnxBackendNodeModelTest.test_scan9_sum_cpu"), - (xfail_issue_38710, + (xfail_issue_49750, "OnnxBackendNodeModelTest.test_resize_downsample_scales_linear_align_corners_cpu", "OnnxBackendNodeModelTest.test_resize_upsample_scales_cubic_cpu", "OnnxBackendNodeModelTest.test_resize_downsample_scales_cubic_cpu", @@ -388,114 +263,17 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None "OnnxBackendNodeModelTest.test_resize_upsample_scales_linear_align_corners_cpu", "OnnxBackendNodeModelTest.test_resize_upsample_scales_cubic_A_n0p5_exclude_outside_cpu", "OnnxBackendNodeModelTest.test_resize_downsample_scales_nearest_cpu", - "OnnxBackendNodeModelTest.test_resize_downsample_scales_linear_cpu"), + "OnnxBackendNodeModelTest.test_resize_downsample_scales_linear_cpu", + "OnnxBackendNodeModelTest.test_resize_downsample_sizes_cubic_cpu", + "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_round_prefer_ceil_asymmetric_cpu", + "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_floor_align_corners_cpu", + "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_cpu", + "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_ceil_half_pixel_cpu", + "OnnxBackendNodeModelTest.test_resize_upsample_sizes_cubic_cpu", + "OnnxBackendNodeModelTest.test_resize_downsample_sizes_linear_pytorch_half_pixel_cpu", + "OnnxBackendNodeModelTest.test_resize_downsample_sizes_nearest_cpu"), (xfail_issue_33581, "OnnxBackendNodeModelTest.test_gather_elements_negative_indices_cpu"), - (xfail_issue_49113, - "OnnxBackendNodeModelTest.test_nllloss_NC_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NC_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_ii_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_mean_weight_negative_ii_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_mean_weight_negative_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_weight_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_weight_ii_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1_weight_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_no_weight_reduction_mean_ii_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_no_weight_reduction_mean_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_reduction_mean_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_reduction_mean_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_reduction_sum_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_reduction_sum_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_reduction_mean_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_reduction_mean_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_reduction_sum_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_reduction_sum_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_reduction_sum_ii_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2_with_weight_reduction_sum_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3_none_no_weight_negative_ii_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3_none_no_weight_negative_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3_sum_weight_high_ii_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3_sum_weight_high_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3d4d5_mean_weight_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3d4d5_mean_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3d4d5_none_no_weight_cpu", - "OnnxBackendNodeModelTest.test_nllloss_NCd1d2d3d4d5_none_no_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1_mean_weight_negative_ii_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1_mean_weight_negative_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1_mean_weight_negative_ii_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1_mean_weight_negative_ii_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_none_no_weight_negative_ii_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_none_no_weight_negative_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_none_no_weight_negative_ii_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_none_no_weight_negative_ii_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_sum_weight_high_ii_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_sum_weight_high_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_sum_weight_high_ii_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3_sum_weight_high_ii_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_mean_weight_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_mean_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_mean_weight_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_mean_weight_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_none_no_weight_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_none_no_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_none_no_weight_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_NCd1d2d3d4d5_none_no_weight_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_3d_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_3d_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_3d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_3d_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_3d_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_3d_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_3d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_3d_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_4d_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_4d_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_4d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_4d_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_no_weight_ii_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_3d_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_3d_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_3d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_3d_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_4d_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_4d_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_4d_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_4d_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_ii_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_mean_weight_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_none_cpu", - "OnnxBackendNodeModelTest.test_sce_none_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_none_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_none_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_none_weights_cpu", - "OnnxBackendNodeModelTest.test_sce_none_weights_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_none_weights_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_none_weights_log_prob_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_sum_cpu", - "OnnxBackendNodeModelTest.test_sce_sum_expanded_cpu", - "OnnxBackendNodeModelTest.test_sce_sum_log_prob_cpu", - "OnnxBackendNodeModelTest.test_sce_sum_log_prob_expanded_cpu"), (xfail_issue_38712, "OnnxBackendNodeModelTest.test_mod_mixed_sign_int16_cpu", "OnnxBackendNodeModelTest.test_mod_uint8_cpu", @@ -511,15 +289,7 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None "OnnxBackendNodeModelTest.test_nesterov_momentum_cpu", "OnnxBackendNodeModelTest.test_momentum_multiple_cpu"), (xfail_issue_38714, - "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_ceil_half_pixel_cpu", - "OnnxBackendNodeModelTest.test_resize_downsample_sizes_nearest_tf_half_pixel_for_nn_cpu", - "OnnxBackendNodeModelTest.test_resize_upsample_sizes_cubic_cpu", - "OnnxBackendNodeModelTest.test_resize_downsample_sizes_nearest_cpu", - "OnnxBackendNodeModelTest.test_resize_downsample_sizes_linear_pytorch_half_pixel_cpu", - "OnnxBackendNodeModelTest.test_resize_downsample_sizes_cubic_cpu", - "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_round_prefer_ceil_asymmetric_cpu", # noqa - "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_floor_align_corners_cpu", - "OnnxBackendNodeModelTest.test_resize_upsample_sizes_nearest_cpu"), + "OnnxBackendNodeModelTest.test_resize_downsample_sizes_nearest_tf_half_pixel_for_nn_cpu"), (xfail_issue_47337, "OnnxBackendNodeModelTest.test_onehot_without_axis_cpu", "OnnxBackendNodeModelTest.test_onehot_with_negative_axis_cpu", @@ -562,15 +332,6 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None "OnnxBackendNodeModelTest.test_compress_default_axis_cpu", "OnnxBackendNodeModelTest.test_compress_1_cpu", "OnnxBackendNodeModelTest.test_compress_0_cpu"), - (xfail_issue_33515, - "OnnxBackendNodeModelTest.test_bitshift_left_uint8_cpu", - "OnnxBackendNodeModelTest.test_bitshift_right_uint64_cpu", - "OnnxBackendNodeModelTest.test_bitshift_right_uint16_cpu", - "OnnxBackendNodeModelTest.test_bitshift_right_uint32_cpu", - "OnnxBackendNodeModelTest.test_bitshift_right_uint8_cpu", - "OnnxBackendNodeModelTest.test_bitshift_left_uint32_cpu", - "OnnxBackendNodeModelTest.test_bitshift_left_uint16_cpu", - "OnnxBackendNodeModelTest.test_bitshift_left_uint64_cpu"), (xfail_issue_38732, "OnnxBackendNodeModelTest.test_convinteger_with_padding_cpu", "OnnxBackendNodeModelTest.test_basic_convinteger_cpu"), @@ -642,10 +403,14 @@ def expect_fail(test_case_path, xfail): # type: (str) -> None "OnnxBackendNodeModelTest.test_squeeze_cpu", "OnnxBackendNodeModelTest.test_squeeze_negative_axes_cpu",), (xfail_issue_44976, - "OnnxBackendNodeModelTest.test_quantizelinear_axis_cpu",), + "OnnxBackendNodeModelTest.test_quantizelinear_axis_cpu", + "OnnxBackendNodeModelTest.test_dynamicquantizelinear_min_adjusted_expanded_cpu", + "OnnxBackendNodeModelTest.test_dynamicquantizelinear_expanded_cpu", + "OnnxBackendNodeModelTest.test_dynamicquantizelinear_max_adjusted_expanded_cpu", + "OnnxBackendNodeModelTest.test_quantizelinear_cpu"), (xfail_issue_33593, "OnnxBackendNodeModelTest.test_maxpool_with_argmax_2d_precomputed_strides_cpu", - "OnnxBackendNodeModelTest.test_maxpool_with_argmax_2d_precomputed_pads_cpu",) + "OnnxBackendNodeModelTest.test_maxpool_with_argmax_2d_precomputed_pads_cpu",), ] for test_group in tests_expected_to_fail: diff --git a/ngraph/python/tests/test_onnx/test_onnx_external_data.py b/ngraph/python/tests/test_onnx/test_onnx_external_data.py index 7058915556b421..243119a23f79e4 100644 --- a/ngraph/python/tests/test_onnx/test_onnx_external_data.py +++ b/ngraph/python/tests/test_onnx/test_onnx_external_data.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os @@ -24,7 +11,7 @@ def test_import_onnx_with_external_data(): - model_path = os.path.join(os.path.dirname(__file__), "models/external_data.prototxt") + model_path = os.path.join(os.path.dirname(__file__), "models/external_data.onnx") ie = IECore() ie_network = ie.read_network(model=model_path) diff --git a/ngraph/python/tests/test_onnx/test_onnx_import.py b/ngraph/python/tests/test_onnx/test_onnx_import.py index df44af99fdebb4..6c2c5d4109416f 100644 --- a/ngraph/python/tests/test_onnx/test_onnx_import.py +++ b/ngraph/python/tests/test_onnx/test_onnx_import.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os diff --git a/ngraph/python/tests/test_onnx/test_ops_batchnorm.py b/ngraph/python/tests/test_onnx/test_ops_batchnorm.py index c90ce822476c69..5571c581d5c539 100644 --- a/ngraph/python/tests/test_onnx/test_ops_batchnorm.py +++ b/ngraph/python/tests/test_onnx/test_ops_batchnorm.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np import onnx diff --git a/ngraph/python/tests/test_onnx/test_ops_binary.py b/ngraph/python/tests/test_onnx/test_ops_binary.py index 6d33ac32852d5c..6f6261b6052c19 100644 --- a/ngraph/python/tests/test_onnx/test_ops_binary.py +++ b/ngraph/python/tests/test_onnx/test_ops_binary.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx import pytest diff --git a/ngraph/python/tests/test_onnx/test_ops_convpool.py b/ngraph/python/tests/test_onnx/test_ops_convpool.py index 685aed9c0a4675..720cc319cb9a63 100644 --- a/ngraph/python/tests/test_onnx/test_ops_convpool.py +++ b/ngraph/python/tests/test_onnx/test_ops_convpool.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx import pytest diff --git a/ngraph/python/tests/test_onnx/test_ops_logical.py b/ngraph/python/tests/test_onnx/test_ops_logical.py index 36006e37dea70b..150d50673586ef 100644 --- a/ngraph/python/tests/test_onnx/test_ops_logical.py +++ b/ngraph/python/tests/test_onnx/test_ops_logical.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx import pytest diff --git a/ngraph/python/tests/test_onnx/test_ops_matmul.py b/ngraph/python/tests/test_onnx/test_ops_matmul.py index 44cff44d644b62..b6ed1cd1d56608 100644 --- a/ngraph/python/tests/test_onnx/test_ops_matmul.py +++ b/ngraph/python/tests/test_onnx/test_ops_matmul.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx from onnx.helper import make_graph, make_model, make_node, make_tensor_value_info @@ -20,7 +8,6 @@ from tests.runtime import get_runtime from tests.test_onnx.utils import import_onnx_model -from tests import xfail_issue_35916, xfail_issue_35917, xfail_issue_35918, xfail_issue_35921 def make_onnx_model_for_matmul_op(input_left, input_right): @@ -104,7 +91,7 @@ def import_and_compute_gemm(input_a, input_b, input_c, **kwargs): @pytest.mark.parametrize( "data, description", [ - pytest.param(([1, 2], [1, 3]), "vector and vector 1", marks=xfail_issue_35916), + pytest.param(([1, 2], [1, 3]), "vector and vector 1"), (([1, 2, 3], [[4], [5], [6]]), "vector and vector 2"), (([[1, 2, 3]], [1, 2, 3]), "vector and vector 3"), (([1, 2, 3], [[4, 5], [6, 7], [8, 9]]), "vector and matrix"), @@ -115,7 +102,7 @@ def import_and_compute_gemm(input_a, input_b, input_c, **kwargs): ], ) def test_op_matmul(data, description): - assert np.array_equal(import_and_compute_matmul(*data), np.matmul(*data)) + assert np.allclose(import_and_compute_matmul(*data), np.matmul(*data)) def test_op_matmul_3d(): @@ -130,40 +117,39 @@ def test_op_matmul_3d(): @pytest.mark.parametrize( "data, kwargs, description", [ - pytest.param(([1, 2], [1, 3], [1, 4]), {}, "vectors", marks=xfail_issue_35917), - pytest.param(([1, 2], [1, 3], 1), {}, "vectors and scalar", marks=xfail_issue_35917), - pytest.param(([1, 2], [1, 3], [1]), {}, "vectors and identity vector", marks=xfail_issue_35917), - pytest.param(([1, 2], [1, 3], [1, 4]), {"alpha": 7, "beta": 9}, - "vectors with alpha and beta", marks=xfail_issue_35918), - pytest.param(([1, 2, 3, 4], [1, 3, 5, 7], [1, 4]), {"alpha": 7, "beta": 9}, - "longer vectors with alpha and beta", marks=xfail_issue_35918) + pytest.param(([1, 2], [1, 3], [1, 4]), {}, "vectors"), + pytest.param(([1, 2], [1, 3], 1), {}, "vectors and scalar"), + pytest.param(([1, 2], [1, 3], [1]), {}, "vectors and identity vector"), + pytest.param(([1, 2], [1, 3], [1, 4]), {"alpha": 7.0, "beta": 9.0}, + "vectors with alpha and beta"), + pytest.param(([1, 2, 3, 4], [1, 3, 5, 7], [1, 4]), {"alpha": 7.0, "beta": 9.0}, + "longer vectors with alpha and beta") ], ) def test_gemm(data, kwargs, description): - assert np.array_equal(import_and_compute_gemm(*data, **kwargs), numpy_gemm(*data)) + assert np.allclose(import_and_compute_gemm(*data, **kwargs), numpy_gemm(*data, **kwargs)) @pytest.mark.parametrize( "data, kwargs, description", [ pytest.param(([1, 2], [1, 3], [1, 4]), {"trans_a": True, "trans_b": True}, - "vectors with trans_a/trans_b", marks=xfail_issue_35917), + "vectors with trans_a/trans_b"), pytest.param(([[1, 2], [1, 2]], [[1, 3], [1, 3]], [4, 1]), - {"trans_a": True, "trans_b": True, "alpha": 7, "beta": 9}, - "matrices and vector with trans_b and alpha/beta", marks=xfail_issue_35918), - pytest.param(([[1, 2]], [[1, 3]], 1), {"trans_b": True, "alpha": 7, "beta": 9}, - "matrices and scalar with trans_b and alpha/beta", marks=xfail_issue_35918), - pytest.param(([[1], [2]], [[1], [3]], 1), {"trans_a": True, "alpha": 7, "beta": 9}, - "matrices and scalar with trans_a and alpha/beta", marks=xfail_issue_35918), + {"trans_a": True, "trans_b": True, "alpha": 7.0, "beta": 9.0}, + "matrices and vector with trans_b and alpha/beta"), + pytest.param(([[1, 2]], [[1, 3]], 1), {"trans_b": True, "alpha": 7.0, "beta": 9.0}, + "matrices and scalar with trans_b and alpha/beta"), + pytest.param(([[1], [2]], [[1], [3]], 1), {"trans_a": True, "alpha": 7.0, "beta": 9.0}, + "matrices and scalar with trans_a and alpha/beta"), ], ) def test_gemm_transpositions(data, kwargs, description): assert np.array_equal(import_and_compute_gemm(*data, **kwargs), numpy_gemm(*data, **kwargs)) -@xfail_issue_35921 def test_gemm_flatten(): - # input_a.shape is (4,1,1) - data = ([[[1]], [[2]], [[3]], [[4]]], [1, 3, 5, 7], [1, 4]) - kwargs = {"alpha": 7, "beta": 9} + # input_a.shape is (4,1) + data = ([[1], [2], [3], [4]], [1, 3, 5, 7], [1, 4]) + kwargs = {"alpha": 7.0, "beta": 9.0, "trans_a": True} assert np.array_equal(import_and_compute_gemm(*data, **kwargs), numpy_gemm(*data, **kwargs)) diff --git a/ngraph/python/tests/test_onnx/test_ops_nonlinear.py b/ngraph/python/tests/test_onnx/test_ops_nonlinear.py index d0e5e40af840f4..60562c53ecf51b 100644 --- a/ngraph/python/tests/test_onnx/test_ops_nonlinear.py +++ b/ngraph/python/tests/test_onnx/test_ops_nonlinear.py @@ -1,24 +1,11 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx import pytest from tests.test_onnx.utils import run_node -from tests import xfail_issue_35918 def import_and_compute(op_type, input_data, **node_attrs): @@ -107,10 +94,10 @@ def selu(x, alpha=1.67326319217681884765625, gamma=1.05070102214813232421875): @pytest.mark.parametrize( "data, alpha_value", [ - pytest.param([-2, -1.0, 0.0, 1.0, 2.0], 1, marks=xfail_issue_35918), - pytest.param([0.0], 1, marks=xfail_issue_35918), - pytest.param([-0.9, -0.8, -0.7, -0.4, -0.3, -0.2, -0.1], 1, marks=xfail_issue_35918), - pytest.param([[1, 2, 3], [4, 5, 6]], 1, marks=xfail_issue_35918), + pytest.param([-2, -1.0, 0.0, 1.0, 2.0], 1.0), + pytest.param([0.0], 1.0), + pytest.param([-0.9, -0.8, -0.7, -0.4, -0.3, -0.2, -0.1], 1.0), + pytest.param([[1, 2, 3], [4, 5, 6]], 1.0), pytest.param([-2, -1.0, 0.0, 1.0, 2.0], 0.5) ] ) diff --git a/ngraph/python/tests/test_onnx/test_ops_reduction.py b/ngraph/python/tests/test_onnx/test_ops_reduction.py index c46399f2e15cec..181ae73fd36787 100644 --- a/ngraph/python/tests/test_onnx/test_ops_reduction.py +++ b/ngraph/python/tests/test_onnx/test_ops_reduction.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx import pytest diff --git a/ngraph/python/tests/test_onnx/test_ops_reshape.py b/ngraph/python/tests/test_onnx/test_ops_reshape.py index b434d87b207539..e6fa1972e7ff1f 100644 --- a/ngraph/python/tests/test_onnx/test_ops_reshape.py +++ b/ngraph/python/tests/test_onnx/test_ops_reshape.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx import pytest diff --git a/ngraph/python/tests/test_onnx/test_ops_unary.py b/ngraph/python/tests/test_onnx/test_ops_unary.py index 8e5290affb737b..1dd29c56a112bf 100644 --- a/ngraph/python/tests/test_onnx/test_ops_unary.py +++ b/ngraph/python/tests/test_onnx/test_ops_unary.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx import onnx.mapping @@ -22,8 +10,7 @@ from ngraph.exceptions import NgraphTypeError from tests.runtime import get_runtime from tests.test_onnx.utils import get_node_model, import_onnx_model, run_model, run_node -from tests import (xfail_issue_40957, - xfail_issue_35930) +from tests import xfail_issue_35930 @pytest.mark.parametrize( @@ -462,8 +449,8 @@ def test_cast_errors(): @pytest.mark.parametrize("value_type", - [pytest.param(np.float32, marks=xfail_issue_40957), - pytest.param(np.float64, marks=xfail_issue_40957)]) + [pytest.param(np.float64), + pytest.param(np.float32)]) def test_constant(value_type): values = np.random.randn(5, 5).astype(value_type) node = onnx.helper.make_node( diff --git a/ngraph/python/tests/test_onnx/test_ops_variadic.py b/ngraph/python/tests/test_onnx/test_ops_variadic.py index 8c9301d9095ae9..756d2cf1d88a88 100644 --- a/ngraph/python/tests/test_onnx/test_ops_variadic.py +++ b/ngraph/python/tests/test_onnx/test_ops_variadic.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from functools import reduce import numpy as np diff --git a/ngraph/python/tests/test_onnx/test_zoo_models.py b/ngraph/python/tests/test_onnx/test_zoo_models.py index 191937bfc7a14b..449ad50457aef0 100644 --- a/ngraph/python/tests/test_onnx/test_zoo_models.py +++ b/ngraph/python/tests/test_onnx/test_zoo_models.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import pytest import tests @@ -29,7 +16,6 @@ xfail_issue_38701, xfail_issue_43742, xfail_issue_45457, - xfail_issue_40957, xfail_issue_37957, xfail_issue_38084, xfail_issue_39669, @@ -37,7 +23,9 @@ xfail_issue_40686, xfail_issue_37973, xfail_issue_47430, - xfail_issue_47495) + xfail_issue_47495, + xfail_issue_48145, + xfail_issue_48190) MODELS_ROOT_DIR = tests.MODEL_ZOO_DIR @@ -175,13 +163,13 @@ def tinyyolov3_post_processing(outputs : Sequence[Any]) -> Sequence[Any]: if tests.MODEL_ZOO_XFAIL: execution_xfail_list = [ # ONNX Model Zoo - (xfail_issue_40957, "test_onnx_model_zoo_text_machine_comprehension_roberta_model_roberta_base_11_roberta_base_11_roberta_base_11_cpu"), - (xfail_issue_40957, "test_onnx_model_zoo_text_machine_comprehension_bert_squad_model_bertsquad_8_download_sample_8_bertsquad8_cpu"), (xfail_issue_39669, "test_onnx_model_zoo_text_machine_comprehension_t5_model_t5_encoder_12_t5_encoder_cpu"), (xfail_issue_38084, "test_onnx_model_zoo_vision_object_detection_segmentation_mask_rcnn_model_MaskRCNN_10_mask_rcnn_R_50_FPN_1x_cpu"), (xfail_issue_38084, "test_onnx_model_zoo_vision_object_detection_segmentation_faster_rcnn_model_FasterRCNN_10_faster_rcnn_R_50_FPN_1x_cpu"), (xfail_issue_47430, "test_onnx_model_zoo_vision_object_detection_segmentation_fcn_model_fcn_resnet50_11_fcn_resnet50_11_model_cpu"), (xfail_issue_47430, "test_onnx_model_zoo_vision_object_detection_segmentation_fcn_model_fcn_resnet101_11_fcn_resnet101_11_model_cpu"), + (xfail_issue_48145, "test_onnx_model_zoo_text_machine_comprehension_bert_squad_model_bertsquad_8_download_sample_8_bertsquad8_cpu"), + (xfail_issue_48190, "test_onnx_model_zoo_text_machine_comprehension_roberta_model_roberta_base_11_roberta_base_11_roberta_base_11_cpu"), # Model MSFT (xfail_issue_37973, "test_MSFT_opset7_tf_inception_v2_model_cpu"), diff --git a/ngraph/python/tests/test_onnx/utils/__init__.py b/ngraph/python/tests/test_onnx/utils/__init__.py index 6bf870d2e74b29..ede685b6036db3 100644 --- a/ngraph/python/tests/test_onnx/utils/__init__.py +++ b/ngraph/python/tests/test_onnx/utils/__init__.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from string import ascii_uppercase from typing import Any, Dict, Iterable, List, Optional, Text diff --git a/ngraph/python/tests/test_onnx/utils/model_importer.py b/ngraph/python/tests/test_onnx/utils/model_importer.py index 01ad64149978a4..44e09e4860f9cd 100644 --- a/ngraph/python/tests/test_onnx/utils/model_importer.py +++ b/ngraph/python/tests/test_onnx/utils/model_importer.py @@ -1,18 +1,5 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import numpy as np import onnx diff --git a/ngraph/python/tests/test_onnx/utils/onnx_backend.py b/ngraph/python/tests/test_onnx/utils/onnx_backend.py index e1b8bdad044471..20be8c9ccefd1f 100644 --- a/ngraph/python/tests/test_onnx/utils/onnx_backend.py +++ b/ngraph/python/tests/test_onnx/utils/onnx_backend.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """ ONNX Backend implementation. diff --git a/ngraph/python/tests/test_onnx/utils/onnx_helpers.py b/ngraph/python/tests/test_onnx/utils/onnx_helpers.py index 26cf0c3ed0816f..6e4a9d99f2351e 100644 --- a/ngraph/python/tests/test_onnx/utils/onnx_helpers.py +++ b/ngraph/python/tests/test_onnx/utils/onnx_helpers.py @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2018-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import numpy as np import onnx from onnx.mapping import NP_TYPE_TO_TENSOR_TYPE diff --git a/ngraph/test/CMakeLists.txt b/ngraph/test/CMakeLists.txt index 9ae7d6a9688992..60878595b1bfde 100644 --- a/ngraph/test/CMakeLists.txt +++ b/ngraph/test/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** add_definitions("-DSERIALIZED_ZOO=\"${CMAKE_CURRENT_SOURCE_DIR}/models\"") set(NGRAPH_ONNX_NAMESPACE ngraph_onnx) @@ -21,7 +9,6 @@ add_subdirectory(runtime) if(NOT NGRAPH_UNIT_TEST_ENABLE) message(STATUS "unit tests disabled") - add_subdirectory(util) return() endif() @@ -42,7 +29,6 @@ endif() set(SRC aligned_buffer.cpp all_close_f.cpp - attributes.cpp bfloat16.cpp build_graph.cpp builder_autobroadcast.cpp @@ -64,6 +50,7 @@ set(SRC graph_rewrite.cpp includes.cpp input_output_assign.cpp + int4.cpp intervals.cpp main.cpp matcher_pass.cpp @@ -71,8 +58,11 @@ set(SRC ngraph_api.cpp node_input_output.cpp op.cpp + op_eval/binary_convolution.cpp op_eval/bucketize.cpp + op_eval/clamp.cpp op_eval/floor_mod.cpp + op_eval/gelu.cpp op_eval/hsigmoid.cpp op_eval/hswish.cpp op_eval/interpolate.cpp @@ -122,6 +112,7 @@ set(SRC type_prop/deformable_psroi_pooling.cpp type_prop/detection_output.cpp type_prop/depth_to_space.cpp + type_prop/dft.cpp type_prop/dyn_reshape.cpp type_prop/experimental_detectron_generate_proposals.cpp type_prop/experimental_detectron_roi_feature_extractor.cpp @@ -147,6 +138,7 @@ set(SRC type_prop/hard_sigmoid.cpp type_prop/hsigmoid.cpp type_prop/hswish.cpp + type_prop/idft.cpp type_prop/interpolate.cpp type_prop/lrn.cpp type_prop/lstm_cell.cpp @@ -154,6 +146,7 @@ set(SRC type_prop/loop.cpp type_prop/matmul.cpp type_prop/max_pool.cpp + type_prop/minimum.cpp type_prop/mish.cpp type_prop/mvn.cpp type_prop/non_max_suppression.cpp @@ -162,6 +155,7 @@ set(SRC type_prop/one_hot.cpp type_prop/pad.cpp type_prop/parameter.cpp + type_prop/power.cpp type_prop/prelu.cpp type_prop/proposal.cpp type_prop/psroi_pooling.cpp @@ -175,6 +169,7 @@ set(SRC type_prop/reverse_sequence.cpp type_prop/roi_align.cpp type_prop/roi_pooling.cpp + type_prop/roll.cpp type_prop/round.cpp type_prop/rnn_cell.cpp type_prop/rnn_sequence.cpp @@ -205,6 +200,57 @@ set(SRC type_prop/unsqueeze.cpp type_prop/variadic_split.cpp type_prop_layers.cpp + visitors/partial_shape.cpp + visitors/user_op.cpp + visitors/value_map.cpp + visitors/op/broadcast.cpp + visitors/op/bucketize.cpp + visitors/op/constant.cpp + visitors/op/cum_sum.cpp + visitors/op/detection_output.cpp + visitors/op/elu.cpp + visitors/op/extractimagepatches.cpp + visitors/op/fake_quantize.cpp + visitors/op/grn.cpp + visitors/op/group_conv.cpp + visitors/op/interpolate.cpp + visitors/op/logical_xor.cpp + visitors/op/lrn.cpp + visitors/op/lstm_cell.cpp + visitors/op/lstm_sequence.cpp + visitors/op/matmul.cpp + visitors/op/max_pool.cpp + visitors/op/mod.cpp + visitors/op/mvn.cpp + visitors/op/non_max_suppression.cpp + visitors/op/normalize_l2.cpp + visitors/op/one_hot.cpp + visitors/op/pad.cpp + visitors/op/prior_box.cpp + visitors/op/proposal.cpp + visitors/op/psroi_pooling.cpp + visitors/op/reduce_logical_and.cpp + visitors/op/reduce_logical_or.cpp + visitors/op/reduce_max.cpp + visitors/op/reduce_mean.cpp + visitors/op/reduce_min.cpp + visitors/op/reduce_prod.cpp + visitors/op/reduce_sum.cpp + visitors/op/region_yolo.cpp + visitors/op/reorg_yolo.cpp + visitors/op/reshape.cpp + visitors/op/reverse.cpp + visitors/op/reverse_sequence.cpp + visitors/op/rnn_cell.cpp + visitors/op/roi_pooling.cpp + visitors/op/shuffle_channels.cpp + visitors/op/softmax.cpp + visitors/op/space_to_depth.cpp + visitors/op/split.cpp + visitors/op/squared_difference.cpp + visitors/op/strided_slice.cpp + visitors/op/topk.cpp + uint4.cpp util.cpp ) @@ -267,6 +313,8 @@ set(MULTI_TEST_SRC backend/convert.in.cpp backend/convert_like.in.cpp backend/convolution.in.cpp + backend/binary_convolution.in.cpp + backend/clamp.in.cpp backend/cos.in.cpp backend/cosh.in.cpp backend/ctc_greedy_decoder.in.cpp @@ -318,6 +366,7 @@ set(MULTI_TEST_SRC backend/proposal.in.cpp backend/psroi_pooling.in.cpp backend/range.in.cpp + backend/recurrent_cells.in.cpp backend/reduce_max.in.cpp backend/reduce_mean.in.cpp backend/reduce_min.in.cpp @@ -331,6 +380,7 @@ set(MULTI_TEST_SRC backend/reverse.in.cpp backend/roi_pooling.in.cpp backend/round.in.cpp + backend/scatter_nd_update.in.cpp backend/select.in.cpp backend/shape_of.in.cpp backend/sigmoid.in.cpp @@ -372,6 +422,8 @@ if (NGRAPH_ONNX_IMPORT_ENABLE AND NOT NGRAPH_USE_PROTOBUF_LITE) onnx/onnx_tensor_names.cpp) endif() +add_clang_format_target(unit-test_clang FOR_SOURCES ${SRC} ${MULTI_TEST_SRC}) + foreach(BACKEND_NAME ${ACTIVE_BACKEND_LIST}) string(TOLOWER ${BACKEND_NAME} BACKEND_DIR) string(REGEX REPLACE "([a-z0-9]+):(.*)" "\\1" BACKEND_DIR ${BACKEND_DIR}) @@ -404,12 +456,8 @@ if(NGRAPH_ADDRESS_SANITIZER) endif() target_link_libraries(unit-test PRIVATE ngraph_test_util - openvino::conditional_compilation - openvino::itt - ngraph ngraph::builder - ngraph_backend - libgtest) + openvino::conditional_compilation) # Protobuf-lite does not support parsing files from prototxt format # Since most of the onnx models are stored in this format it have to be disabled @@ -444,16 +492,12 @@ if (MSVC) target_compile_options(unit-test PRIVATE "/bigobj") endif() -if (TARGET inference_engine) - target_link_libraries(unit-test PRIVATE inference_engine) -endif() +target_link_libraries(unit-test PRIVATE ie_backend) if (NGRAPH_ONNX_IMPORT_ENABLE) - target_link_libraries(unit-test PRIVATE onnx_importer) + target_link_libraries(unit-test PRIVATE onnx_importer onnx_editor) endif() -target_link_libraries(unit-test PRIVATE ie_backend) - if (NGRAPH_INTERPRETER_ENABLE) target_compile_definitions(unit-test PRIVATE NGRAPH_INTERPRETER_ENABLE) target_link_libraries(unit-test PRIVATE interpreter_backend) diff --git a/ngraph/test/aligned_buffer.cpp b/ngraph/test/aligned_buffer.cpp index 7d97bef2152adb..79cc1be195385a 100644 --- a/ngraph/test/aligned_buffer.cpp +++ b/ngraph/test/aligned_buffer.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/all_close_f.cpp b/ngraph/test/all_close_f.cpp index 59050a844dae31..7e0a1425c3b581 100644 --- a/ngraph/test/all_close_f.cpp +++ b/ngraph/test/all_close_f.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/attributes.cpp b/ngraph/test/attributes.cpp deleted file mode 100644 index f09917eea572f3..00000000000000 --- a/ngraph/test/attributes.cpp +++ /dev/null @@ -1,1642 +0,0 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//***************************************************************************** - -#include "gtest/gtest.h" - -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -NGRAPH_SUPPRESS_DEPRECATED_START - -TEST(attributes, value_map) -{ - ValueMap value_map; - bool a = true; - int8_t b = 2; - value_map.insert("a", a); - value_map.insert("b", b); - bool g_a = value_map.get("a"); - int8_t g_b = value_map.get("b"); - EXPECT_EQ(a, g_a); - EXPECT_EQ(b, g_b); -} - -enum class TuringModel -{ - XL400, - XL1200 -}; - -namespace ngraph -{ - template <> - EnumNames& EnumNames::get() - { - static auto enum_names = EnumNames( - "TuringModel", {{"XL400", TuringModel::XL400}, {"XL1200", TuringModel::XL1200}}); - return enum_names; - } - - template <> - class AttributeAdapter : public EnumAttributeAdapterBase - { - public: - AttributeAdapter(TuringModel& value) - : EnumAttributeAdapterBase(value) - { - } - - static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; - const DiscreteTypeInfo& get_type_info() const override { return type_info; } - }; - - constexpr DiscreteTypeInfo AttributeAdapter::type_info; - - struct Position - { - float x; - float y; - float z; - bool operator==(const Position& p) const { return x == p.x && y == p.y && z == p.z; } - Position& operator=(const Position& p) - { - x = p.x; - y = p.y; - z = p.z; - return *this; - } - }; - - template <> - class AttributeAdapter : public VisitorAdapter - { - public: - AttributeAdapter(Position& value) - : m_ref(value) - { - } - bool visit_attributes(AttributeVisitor& visitor) override - { - visitor.on_attribute("x", m_ref.x); - visitor.on_attribute("y", m_ref.y); - visitor.on_attribute("z", m_ref.z); - return true; - } - static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; - const DiscreteTypeInfo& get_type_info() const override { return type_info; } - protected: - Position& m_ref; - }; - - constexpr DiscreteTypeInfo AttributeAdapter::type_info; -} - -// Given a Turing machine program and data, return scalar 1 if the program would -// complete, 1 if it would not. -class Oracle : public op::Op -{ -public: - Oracle(const Output& program, - const Output& data, - TuringModel turing_model, - const element::Type element_type, - element::Type_t element_type_t, - const string& val_string, - bool val_bool, - float val_float, - double val_double, - uint8_t val_uint8_t, - uint16_t val_uint16_t, - uint32_t val_uint32_t, - uint64_t val_uint64_t, - int8_t val_int8_t, - int16_t val_int16_t, - int32_t val_int32_t, - int64_t val_int64_t, - size_t val_size_t, - const std::vector& vec_string, - const std::vector& vec_float, - const std::vector& vec_double, - const std::vector& vec_uint8_t, - const std::vector& vec_uint16_t, - const std::vector& vec_uint32_t, - const std::vector& vec_uint64_t, - const std::vector& vec_int8_t, - const std::vector& vec_int16_t, - const std::vector& vec_int32_t, - const std::vector& vec_int64_t, - const std::vector& vec_size_t, - const Position& position, - const shared_ptr& node, - const NodeVector& node_vector, - const ParameterVector& parameter_vector, - const ResultVector& result_vector) - : Op({program, data}) - , m_turing_model(turing_model) - , m_element_type(element_type) - , m_element_type_t(element_type_t) - , m_val_string(val_string) - , m_val_bool(val_bool) - , m_val_float(val_float) - , m_val_double(val_double) - , m_val_uint8_t(val_uint8_t) - , m_val_uint16_t(val_uint16_t) - , m_val_uint32_t(val_uint32_t) - , m_val_uint64_t(val_uint64_t) - , m_val_int8_t(val_int8_t) - , m_val_int16_t(val_int16_t) - , m_val_int32_t(val_int32_t) - , m_val_int64_t(val_int64_t) - , m_val_size_t(val_size_t) - , m_vec_string(vec_string) - , m_vec_float(vec_float) - , m_vec_double(vec_double) - , m_vec_uint8_t(vec_uint8_t) - , m_vec_uint16_t(vec_uint16_t) - , m_vec_uint32_t(vec_uint32_t) - , m_vec_uint64_t(vec_uint64_t) - , m_vec_int8_t(vec_int8_t) - , m_vec_int16_t(vec_int16_t) - , m_vec_int32_t(vec_int32_t) - , m_vec_int64_t(vec_int64_t) - , m_vec_size_t(vec_size_t) - , m_position(position) - , m_node(node) - , m_node_vector(node_vector) - , m_parameter_vector(parameter_vector) - , m_result_vector(result_vector) - { - } - - static constexpr NodeTypeInfo type_info{"Oracle", 0}; - const NodeTypeInfo& get_type_info() const override { return type_info; } - Oracle() = default; - - TuringModel get_turing_model() const { return m_turing_model; } - const element::Type get_element_type() const { return m_element_type; } - const element::Type_t get_element_type_t() const { return m_element_type_t; } - const string& get_val_string() const { return m_val_string; } - bool get_val_bool() const { return m_val_bool; } - bool get_val_float() const { return m_val_float; } - bool get_val_double() const { return m_val_double; } - uint64_t get_val_uint8_t() const { return m_val_uint8_t; } - uint64_t get_val_uint16_t() const { return m_val_uint16_t; } - uint64_t get_val_uint32_t() const { return m_val_uint32_t; } - uint64_t get_val_uint64_t() const { return m_val_uint64_t; } - int64_t get_val_int8_t() const { return m_val_int8_t; } - int64_t get_val_int16_t() const { return m_val_int16_t; } - int64_t get_val_int32_t() const { return m_val_int32_t; } - int64_t get_val_int64_t() const { return m_val_int64_t; } - size_t get_val_size_t() const { return m_val_size_t; } - const vector& get_vec_uint8_t() const { return m_vec_uint8_t; } - const vector& get_vec_uint16_t() const { return m_vec_uint16_t; } - const vector& get_vec_uint32_t() const { return m_vec_uint32_t; } - const vector& get_vec_uint64_t() const { return m_vec_uint64_t; } - const vector& get_vec_int8_t() const { return m_vec_int8_t; } - const vector& get_vec_int16_t() const { return m_vec_int16_t; } - const vector& get_vec_int32_t() const { return m_vec_int32_t; } - const vector& get_vec_int64_t() const { return m_vec_int64_t; } - const vector& get_vec_string() const { return m_vec_string; } - const vector& get_vec_float() const { return m_vec_float; } - const vector& get_vec_double() const { return m_vec_double; } - const vector& get_vec_size_t() const { return m_vec_size_t; } - const Position& get_position() const { return m_position; } - const shared_ptr& get_node() const { return m_node; } - const NodeVector& get_node_vector() const { return m_node_vector; } - const ParameterVector& get_parameter_vector() const { return m_parameter_vector; } - const ResultVector& get_result_vector() const { return m_result_vector; } - shared_ptr clone_with_new_inputs(const OutputVector& args) const override - { - return make_shared(args[0], - args[1], - m_turing_model, - m_element_type, - m_element_type_t, - m_val_string, - m_val_bool, - m_val_float, - m_val_double, - m_val_uint8_t, - m_val_uint16_t, - m_val_uint32_t, - m_val_uint64_t, - m_val_int8_t, - m_val_int16_t, - m_val_int32_t, - m_val_int64_t, - m_val_size_t, - m_vec_string, - m_vec_float, - m_vec_double, - m_vec_uint8_t, - m_vec_uint16_t, - m_vec_uint32_t, - m_vec_uint64_t, - m_vec_int8_t, - m_vec_int16_t, - m_vec_int32_t, - m_vec_int64_t, - m_vec_size_t, - m_position, - m_node, - m_node_vector, - m_parameter_vector, - m_result_vector); - } - - void validate_and_infer_types() override { set_output_type(0, element::i64, {}); } - bool visit_attributes(AttributeVisitor& visitor) override - { - visitor.on_attribute("turing_model", m_turing_model); - visitor.on_attribute("element_type", m_element_type); - visitor.on_attribute("element_type_t", m_element_type_t); - visitor.on_attribute("val_string", m_val_string); - visitor.on_attribute("val_bool", m_val_bool); - visitor.on_attribute("val_float", m_val_float); - visitor.on_attribute("val_double", m_val_double); - visitor.on_attribute("val_uint8_t", m_val_uint8_t); - visitor.on_attribute("val_uint16_t", m_val_uint16_t); - visitor.on_attribute("val_uint32_t", m_val_uint32_t); - visitor.on_attribute("val_uint64_t", m_val_uint64_t); - visitor.on_attribute("val_int8_t", m_val_int8_t); - visitor.on_attribute("val_int16_t", m_val_int16_t); - visitor.on_attribute("val_int32_t", m_val_int32_t); - visitor.on_attribute("val_int64_t", m_val_int64_t); - visitor.on_attribute("val_size_t", m_val_size_t); - visitor.on_attribute("vec_string", m_vec_string); - visitor.on_attribute("vec_float", m_vec_float); - visitor.on_attribute("vec_double", m_vec_double); - visitor.on_attribute("vec_uint8_t", m_vec_uint8_t); - visitor.on_attribute("vec_uint16_t", m_vec_uint16_t); - visitor.on_attribute("vec_uint32_t", m_vec_uint32_t); - visitor.on_attribute("vec_uint64_t", m_vec_uint64_t); - visitor.on_attribute("vec_int8_t", m_vec_int8_t); - visitor.on_attribute("vec_int16_t", m_vec_int16_t); - visitor.on_attribute("vec_int32_t", m_vec_int32_t); - visitor.on_attribute("vec_int64_t", m_vec_int64_t); - visitor.on_attribute("vec_size_t", m_vec_size_t); - visitor.on_attribute("position", m_position); - visitor.on_attribute("node", m_node); - visitor.on_attribute("node_vector", m_node_vector); - visitor.on_attribute("parameter_vector", m_parameter_vector); - visitor.on_attribute("result_vector", m_result_vector); - return true; - } - -protected: - TuringModel m_turing_model; - element::Type m_element_type; - element::Type_t m_element_type_t; - string m_val_string; - bool m_val_bool; - float m_val_float; - double m_val_double; - uint8_t m_val_uint8_t; - uint16_t m_val_uint16_t; - uint32_t m_val_uint32_t; - uint64_t m_val_uint64_t; - int8_t m_val_int8_t; - int16_t m_val_int16_t; - int32_t m_val_int32_t; - int64_t m_val_int64_t; - size_t m_val_size_t{23}; - vector m_vec_string; - vector m_vec_float; - vector m_vec_double; - vector m_vec_uint8_t; - vector m_vec_uint16_t; - vector m_vec_uint32_t; - vector m_vec_uint64_t; - vector m_vec_int8_t; - vector m_vec_int16_t; - vector m_vec_int32_t; - vector m_vec_int64_t; - vector m_vec_size_t; - Position m_position; - shared_ptr m_node; - NodeVector m_node_vector; - ParameterVector m_parameter_vector; - ResultVector m_result_vector; -}; - -constexpr NodeTypeInfo Oracle::type_info; - -TEST(attributes, user_op) -{ - NodeBuilder::get_ops().register_factory(); - auto program = make_shared(element::i32, Shape{200}); - auto data = make_shared(element::i32, Shape{200}); - auto result = make_shared(data); - auto oracle = make_shared(program, - data, - TuringModel::XL1200, - element::f32, - element::Type_t::i64, - "12AU7", - true, - 1.0f, - 1.0, - 2, - 4, - 8, - 16, - -1, - -2, - -4, - -8, - 34, - vector{"Hello", "World"}, - vector{1.0f, 2.0f}, - vector{1.0, 2.0}, - vector{1, 2, 4, 8}, - vector{1, 2, 4, 8}, - vector{1, 2, 4, 8}, - vector{1, 2, 4, 8}, - vector{1, 2, 4, 8}, - vector{1, 2, 4, 8}, - vector{1, 2, 4, 8}, - vector{1, 2, 4, 8}, - vector{1, 3, 8, 4, 2}, - Position{1.3f, 5.1f, 2.3f}, - data, - NodeVector{program, result, data}, - ParameterVector{data, data, program}, - ResultVector{result}); - NodeBuilder builder; - AttributeVisitor& saver = builder.get_node_saver(); - AttributeVisitor& loader = builder.get_node_loader(); - loader.register_node(program, "program"); - ASSERT_EQ(loader.get_registered_node("program"), program); - ASSERT_EQ(loader.get_registered_node_id(program), "program"); - loader.register_node(data, "data"); - loader.register_node(result, "result"); - saver.register_node(program, "program"); - saver.register_node(data, "data"); - saver.register_node(result, "result"); - builder.save_node(oracle); - auto g_oracle = as_type_ptr(builder.create()); - - EXPECT_EQ(g_oracle->get_turing_model(), oracle->get_turing_model()); - EXPECT_EQ(g_oracle->get_element_type(), oracle->get_element_type()); - EXPECT_EQ(g_oracle->get_element_type_t(), oracle->get_element_type_t()); - EXPECT_EQ(g_oracle->get_val_bool(), oracle->get_val_bool()); - EXPECT_EQ(g_oracle->get_val_string(), oracle->get_val_string()); - EXPECT_EQ(g_oracle->get_val_float(), oracle->get_val_float()); - EXPECT_EQ(g_oracle->get_val_double(), oracle->get_val_double()); - EXPECT_EQ(g_oracle->get_val_uint8_t(), oracle->get_val_uint8_t()); - EXPECT_EQ(g_oracle->get_val_uint16_t(), oracle->get_val_uint16_t()); - EXPECT_EQ(g_oracle->get_val_uint32_t(), oracle->get_val_uint32_t()); - EXPECT_EQ(g_oracle->get_val_uint64_t(), oracle->get_val_uint64_t()); - EXPECT_EQ(g_oracle->get_val_int8_t(), oracle->get_val_int8_t()); - EXPECT_EQ(g_oracle->get_val_int16_t(), oracle->get_val_int16_t()); - EXPECT_EQ(g_oracle->get_val_int32_t(), oracle->get_val_int32_t()); - EXPECT_EQ(g_oracle->get_val_int64_t(), oracle->get_val_int64_t()); - EXPECT_EQ(g_oracle->get_val_size_t(), oracle->get_val_size_t()); - EXPECT_EQ(g_oracle->get_vec_uint8_t(), oracle->get_vec_uint8_t()); - EXPECT_EQ(g_oracle->get_vec_uint16_t(), oracle->get_vec_uint16_t()); - EXPECT_EQ(g_oracle->get_vec_uint32_t(), oracle->get_vec_uint32_t()); - EXPECT_EQ(g_oracle->get_vec_uint64_t(), oracle->get_vec_uint64_t()); - EXPECT_EQ(g_oracle->get_vec_int8_t(), oracle->get_vec_int8_t()); - EXPECT_EQ(g_oracle->get_vec_int16_t(), oracle->get_vec_int16_t()); - EXPECT_EQ(g_oracle->get_vec_int32_t(), oracle->get_vec_int32_t()); - EXPECT_EQ(g_oracle->get_vec_int64_t(), oracle->get_vec_int64_t()); - EXPECT_EQ(g_oracle->get_vec_string(), oracle->get_vec_string()); - EXPECT_EQ(g_oracle->get_vec_float(), oracle->get_vec_float()); - EXPECT_EQ(g_oracle->get_vec_double(), oracle->get_vec_double()); - EXPECT_EQ(g_oracle->get_vec_size_t(), oracle->get_vec_size_t()); - EXPECT_EQ(g_oracle->get_position(), oracle->get_position()); - EXPECT_EQ(g_oracle->get_node(), oracle->get_node()); - EXPECT_EQ(g_oracle->get_node_vector(), oracle->get_node_vector()); - EXPECT_EQ(g_oracle->get_parameter_vector(), oracle->get_parameter_vector()); - EXPECT_EQ(g_oracle->get_result_vector(), oracle->get_result_vector()); -} - -TEST(attributes, matmul_op) -{ - NodeBuilder::get_ops().register_factory(); - auto A = make_shared(element::f32, Shape{0, 2}); - auto B = make_shared(element::f32, Shape{2, 0}); - - bool transpose_a = true; - bool transpose_b = true; - - auto matmul = make_shared(A, B, transpose_a, transpose_b); - NodeBuilder builder(matmul); - auto g_matmul = as_type_ptr(builder.create()); - - EXPECT_EQ(g_matmul->get_transpose_a(), matmul->get_transpose_a()); - EXPECT_EQ(g_matmul->get_transpose_b(), matmul->get_transpose_b()); -} - -TEST(attributes, partial_shape) -{ - NodeBuilder builder; - AttributeVisitor& loader = builder.get_node_loader(); - AttributeVisitor& saver = builder.get_node_saver(); - - PartialShape dyn = PartialShape::dynamic(); - saver.on_attribute("dyn", dyn); - PartialShape g_dyn; - loader.on_attribute("dyn", g_dyn); - EXPECT_EQ(dyn, g_dyn); - - PartialShape scalar{}; - saver.on_attribute("scalar", scalar); - PartialShape g_scalar; - loader.on_attribute("scalar", g_scalar); - EXPECT_EQ(scalar, g_scalar); - - PartialShape dyn_vector{Dimension::dynamic()}; - saver.on_attribute("dyn_vector", dyn_vector); - PartialShape g_dyn_vector; - loader.on_attribute("dyn_vector", g_dyn_vector); - EXPECT_EQ(dyn_vector, g_dyn_vector); - - PartialShape stat_vector{7}; - saver.on_attribute("stat_vector", stat_vector); - PartialShape g_stat_vector; - loader.on_attribute("stat_vector", g_stat_vector); - EXPECT_EQ(stat_vector, g_stat_vector); - - PartialShape general{7, Dimension::dynamic(), 2, Dimension::dynamic(), 4}; - saver.on_attribute("general", general); - PartialShape g_general; - loader.on_attribute("general", g_general); - EXPECT_EQ(general, g_general); -} - -TEST(attributes, max_pool_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{64, 3, 5}); - - auto strides = Strides{2}; - auto pads_begin = Shape{1}; - auto pads_end = Shape{1}; - auto kernel = Shape{1}; - auto rounding_mode = op::RoundingType::FLOOR; - auto auto_pad = op::PadType::EXPLICIT; - - auto max_pool = make_shared( - data, strides, pads_begin, pads_end, kernel, rounding_mode, auto_pad); - NodeBuilder builder(max_pool); - auto g_max_pool = as_type_ptr(builder.create()); - - EXPECT_EQ(g_max_pool->get_strides(), max_pool->get_strides()); - EXPECT_EQ(g_max_pool->get_pads_begin(), max_pool->get_pads_begin()); - EXPECT_EQ(g_max_pool->get_pads_end(), max_pool->get_pads_end()); - EXPECT_EQ(g_max_pool->get_kernel(), max_pool->get_kernel()); - EXPECT_EQ(g_max_pool->get_rounding_type(), max_pool->get_rounding_type()); - EXPECT_EQ(g_max_pool->get_auto_pad(), max_pool->get_auto_pad()); -} - -TEST(attributes, mod_op) -{ - NodeBuilder::get_ops().register_factory(); - auto A = make_shared(element::f32, Shape{1, 2}); - auto B = make_shared(element::f32, Shape{2, 1}); - - auto auto_broadcast = op::AutoBroadcastType::NUMPY; - - auto mod = make_shared(A, B, auto_broadcast); - NodeBuilder builder(mod); - auto g_mod = as_type_ptr(builder.create()); - - EXPECT_EQ(g_mod->get_auto_broadcast(), mod->get_auto_broadcast()); -} - -TEST(attributes, non_max_suppression_op_custom_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto boxes = make_shared(element::f32, Shape{1, 1, 4}); - auto scores = make_shared(element::f32, Shape{1, 1, 1}); - - auto box_encoding = opset1::NonMaxSuppression::BoxEncodingType::CENTER; - bool sort_result_descending = false; - - auto nms = - make_shared(boxes, scores, box_encoding, sort_result_descending); - NodeBuilder builder(nms); - auto g_nms = as_type_ptr(builder.create()); - - EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); - EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); -} - -TEST(attributes, non_max_suppression_op_default_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto boxes = make_shared(element::f32, Shape{1, 1, 4}); - auto scores = make_shared(element::f32, Shape{1, 1, 1}); - - auto nms = make_shared(boxes, scores); - NodeBuilder builder(nms); - auto g_nms = as_type_ptr(builder.create()); - - EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); - EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); -} - -TEST(attributes, non_max_suppression_v3_op_custom_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto boxes = make_shared(element::f32, Shape{1, 1, 4}); - auto scores = make_shared(element::f32, Shape{1, 1, 1}); - - auto box_encoding = opset3::NonMaxSuppression::BoxEncodingType::CENTER; - bool sort_result_descending = false; - element::Type output_type = element::i32; - - auto nms = make_shared( - boxes, scores, box_encoding, sort_result_descending, output_type); - NodeBuilder builder(nms); - auto g_nms = as_type_ptr(builder.create()); - - EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); - EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); - EXPECT_EQ(g_nms->get_output_type(), nms->get_output_type()); -} - -TEST(attributes, non_max_suppression_v3_op_default_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto boxes = make_shared(element::f32, Shape{1, 1, 4}); - auto scores = make_shared(element::f32, Shape{1, 1, 1}); - - auto nms = make_shared(boxes, scores); - NodeBuilder builder(nms); - auto g_nms = as_type_ptr(builder.create()); - - EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); - EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); - EXPECT_EQ(g_nms->get_output_type(), nms->get_output_type()); -} - -TEST(attributes, normalize_l2_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{1}); - const auto axes = make_shared(element::i32, Shape{}, vector{0}); - - float eps{1e-6f}; - auto eps_mode = op::EpsMode::ADD; - - auto normalize_l2 = make_shared(data, axes, eps, eps_mode); - NodeBuilder builder(normalize_l2); - auto g_normalize_l2 = as_type_ptr(builder.create()); - - EXPECT_EQ(g_normalize_l2->get_eps(), normalize_l2->get_eps()); - EXPECT_EQ(g_normalize_l2->get_eps_mode(), normalize_l2->get_eps_mode()); -} - -TEST(attributes, one_hot_op) -{ - NodeBuilder::get_ops().register_factory(); - auto indices = make_shared(element::i64, Shape{1, 3, 2, 3}); - auto depth = op::Constant::create(element::i64, Shape{}, {4}); - auto on_value = op::Constant::create(element::f32, Shape{}, {1.0f}); - auto off_value = op::Constant::create(element::f32, Shape{}, {0.0f}); - - int64_t axis = 3; - - auto one_hot = make_shared(indices, depth, on_value, off_value, axis); - NodeBuilder builder(one_hot); - auto g_one_hot = as_type_ptr(builder.create()); - - EXPECT_EQ(g_one_hot->get_axis(), one_hot->get_axis()); -} - -TEST(attributes, pad_op) -{ - NodeBuilder::get_ops().register_factory(); - auto arg = make_shared(element::f32, Shape{1, 2, 3}); - auto pads_begin = make_shared(element::i64, Shape{1}); - auto pads_end = make_shared(element::i64, Shape{1}); - - auto pad_mode = op::PadMode::EDGE; - - auto pad = make_shared(arg, pads_begin, pads_end, pad_mode); - NodeBuilder builder(pad); - auto g_pad = as_type_ptr(builder.create()); - - EXPECT_EQ(g_pad->get_pad_mode(), pad->get_pad_mode()); -} - -TEST(attributes, psroi_pooling_op) -{ - NodeBuilder::get_ops().register_factory(); - auto input = make_shared(element::f32, Shape{1, 1024, 63, 38}); - auto coords = make_shared(element::f32, Shape{300, 5}); - - const int64_t output_dim = 64; - const int64_t group_size = 4; - const float spatial_scale = 0.0625; - int spatial_bins_x = 1; - int spatial_bins_y = 1; - string mode = "average"; - - auto psroi_pool = make_shared( - input, coords, output_dim, group_size, spatial_scale, spatial_bins_x, spatial_bins_y, mode); - NodeBuilder builder(psroi_pool); - auto g_psroi_pool = as_type_ptr(builder.create()); - - EXPECT_EQ(g_psroi_pool->get_output_dim(), psroi_pool->get_output_dim()); - EXPECT_EQ(g_psroi_pool->get_group_size(), psroi_pool->get_group_size()); - EXPECT_EQ(g_psroi_pool->get_spatial_scale(), psroi_pool->get_spatial_scale()); - EXPECT_EQ(g_psroi_pool->get_spatial_bins_x(), psroi_pool->get_spatial_bins_x()); - EXPECT_EQ(g_psroi_pool->get_spatial_bins_y(), psroi_pool->get_spatial_bins_y()); - EXPECT_EQ(g_psroi_pool->get_mode(), psroi_pool->get_mode()); -} - -TEST(attributes, reduce_logical_and_op) -{ - // ReduceLogicalAnd derives visit_attributes from op::util::LogicalReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_logical_and = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_logical_and); - auto g_reduce_logical_and = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_logical_and->get_keep_dims(), reduce_logical_and->get_keep_dims()); -} - -TEST(attributes, reduce_logical_or_op) -{ - // ReduceLogicalOr derives visit_attributes from op::util::LogicalReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_logical_or = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_logical_or); - auto g_reduce_logical_or = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_logical_or->get_keep_dims(), reduce_logical_or->get_keep_dims()); -} - -TEST(attributes, reduce_max_op) -{ - // ReduceMax derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_max = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_max); - auto g_reduce_max = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_max->get_keep_dims(), reduce_max->get_keep_dims()); -} - -TEST(attributes, reduce_mean_op) -{ - // ReduceMean derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_mean = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_mean); - auto g_reduce_mean = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_mean->get_keep_dims(), reduce_mean->get_keep_dims()); -} - -TEST(attributes, reduce_min_op) -{ - // ReduceMin derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_min = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_min); - auto g_reduce_min = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_min->get_keep_dims(), reduce_min->get_keep_dims()); -} - -TEST(attributes, reduce_prod_op) -{ - // ReduceProd derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_prod = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_prod); - auto g_reduce_prod = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_prod->get_keep_dims(), reduce_prod->get_keep_dims()); -} - -TEST(attributes, reduce_sum_op) -{ - // ReduceSum derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_sum = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_sum); - auto g_reduce_sum = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_sum->get_keep_dims(), reduce_sum->get_keep_dims()); -} - -TEST(attributes, region_yolo_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{1, 255, 26, 26}); - - size_t num_coords = 4; - size_t num_classes = 1; - size_t num_regions = 6; - auto do_softmax = false; - auto mask = std::vector{0, 1}; - auto axis = 1; - auto end_axis = 3; - auto anchors = std::vector{10, 14, 23, 27, 37, 58, 81, 82, 135, 169, 344, 319}; - - auto region_yolo = make_shared( - data, num_coords, num_classes, num_regions, do_softmax, mask, axis, end_axis, anchors); - NodeBuilder builder(region_yolo); - auto g_region_yolo = as_type_ptr(builder.create()); - - EXPECT_EQ(g_region_yolo->get_num_coords(), region_yolo->get_num_coords()); - EXPECT_EQ(g_region_yolo->get_num_classes(), region_yolo->get_num_classes()); - EXPECT_EQ(g_region_yolo->get_num_regions(), region_yolo->get_num_regions()); - EXPECT_EQ(g_region_yolo->get_do_softmax(), region_yolo->get_do_softmax()); - EXPECT_EQ(g_region_yolo->get_mask(), region_yolo->get_mask()); - EXPECT_EQ(g_region_yolo->get_anchors(), region_yolo->get_anchors()); - EXPECT_EQ(g_region_yolo->get_axis(), region_yolo->get_axis()); - EXPECT_EQ(g_region_yolo->get_end_axis(), region_yolo->get_end_axis()); -} - -TEST(attributes, reshape_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{2, 3, 4}); - auto pattern = make_shared(element::i32, Shape{2}); - - bool special_zero = true; - - auto reshape = make_shared(data, pattern, special_zero); - NodeBuilder builder(reshape); - auto g_reshape = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reshape->get_special_zero(), reshape->get_special_zero()); -} - -TEST(attributes, reverse_op_enum_mode) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{200}); - auto reversed_axes = make_shared(element::i32, Shape{200}); - - auto reverse = make_shared(data, reversed_axes, opset1::Reverse::Mode::INDEX); - NodeBuilder builder(reverse); - auto g_reverse = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reverse->get_mode(), reverse->get_mode()); -} - -TEST(attributes, reverse_op_string_mode) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{200}); - auto reversed_axes = make_shared(element::i32, Shape{200}); - - std::string mode = "index"; - - auto reverse = make_shared(data, reversed_axes, mode); - NodeBuilder builder(reverse); - auto g_reverse = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reverse->get_mode(), reverse->get_mode()); -} - -TEST(attributes, reverse_sequence_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{2, 3, 4, 2}); - auto seq_indices = make_shared(element::i32, Shape{4}); - - auto batch_axis = 2; - auto seq_axis = 1; - - auto reverse_sequence = - make_shared(data, seq_indices, batch_axis, seq_axis); - NodeBuilder builder(reverse_sequence); - auto g_reverse_sequence = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reverse_sequence->get_origin_batch_axis(), - reverse_sequence->get_origin_batch_axis()); - EXPECT_EQ(g_reverse_sequence->get_origin_sequence_axis(), - reverse_sequence->get_origin_sequence_axis()); -} - -TEST(attributes, rnn_cell_op_custom_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto X = make_shared(element::f32, Shape{2, 3}); - auto H = make_shared(element::f32, Shape{2, 3}); - auto W = make_shared(element::f32, Shape{3, 3}); - auto R = make_shared(element::f32, Shape{3, 3}); - - const size_t hidden_size = 3; - auto activations = std::vector{"sigmoid", "tanh"}; - auto activations_alpha = std::vector{1.0, 1.5}; - auto activations_beta = std::vector{2.0, 1.0}; - float clip = 1.0; - - auto rnn_cell = make_shared( - X, H, W, R, hidden_size, activations, activations_alpha, activations_beta, clip); - - NodeBuilder builder(rnn_cell); - auto g_rnn_cell = as_type_ptr(builder.create()); - - EXPECT_EQ(g_rnn_cell->get_hidden_size(), rnn_cell->get_hidden_size()); - EXPECT_EQ(g_rnn_cell->get_clip(), rnn_cell->get_clip()); - EXPECT_EQ(g_rnn_cell->get_activations(), rnn_cell->get_activations()); - EXPECT_EQ(g_rnn_cell->get_activations_alpha(), rnn_cell->get_activations_alpha()); - EXPECT_EQ(g_rnn_cell->get_activations_beta(), rnn_cell->get_activations_beta()); -} - -TEST(attributes, rnn_cell_op_default_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto X = make_shared(element::f32, Shape{2, 3}); - auto H = make_shared(element::f32, Shape{2, 3}); - auto W = make_shared(element::f32, Shape{3, 3}); - auto R = make_shared(element::f32, Shape{3, 3}); - - const size_t hidden_size = 3; - - auto rnn_cell = make_shared(X, H, W, R, hidden_size); - - NodeBuilder builder(rnn_cell); - auto g_rnn_cell = as_type_ptr(builder.create()); - - EXPECT_EQ(g_rnn_cell->get_hidden_size(), rnn_cell->get_hidden_size()); - EXPECT_EQ(g_rnn_cell->get_clip(), rnn_cell->get_clip()); - EXPECT_EQ(g_rnn_cell->get_activations(), rnn_cell->get_activations()); - EXPECT_EQ(g_rnn_cell->get_activations_alpha(), rnn_cell->get_activations_alpha()); - EXPECT_EQ(g_rnn_cell->get_activations_beta(), rnn_cell->get_activations_beta()); -} - -TEST(attributes, elu_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{2, 4}); - - double alpha = 0.1; - - const auto elu = make_shared(data, alpha); - NodeBuilder builder(elu); - auto g_elu = as_type_ptr(builder.create()); - - EXPECT_EQ(g_elu->get_alpha(), elu->get_alpha()); -} - -TEST(attributes, fake_quantize_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto data = make_shared(element::f32, Shape{1, 2, 3, 4}); - const auto input_low = make_shared(element::f32, Shape{}); - const auto input_high = make_shared(element::f32, Shape{}); - const auto output_low = make_shared(element::f32, Shape{}); - const auto output_high = make_shared(element::f32, Shape{}); - - auto levels = 5; - auto auto_broadcast = op::AutoBroadcastType::NUMPY; - - const auto fake_quantize = make_shared( - data, input_low, input_high, output_low, output_high, levels, auto_broadcast); - NodeBuilder builder(fake_quantize); - auto g_fake_quantize = as_type_ptr(builder.create()); - - EXPECT_EQ(g_fake_quantize->get_levels(), fake_quantize->get_levels()); - EXPECT_EQ(g_fake_quantize->get_auto_broadcast(), fake_quantize->get_auto_broadcast()); -} - -TEST(attributes, broadcast_v3) -{ - NodeBuilder::get_ops().register_factory(); - const auto arg = make_shared(element::i64, Shape{1, 3, 1}); - const auto shape = make_shared(element::i64, Shape{3}); - const auto broadcast_spec = op::BroadcastType::BIDIRECTIONAL; - - const auto broadcast_v3 = make_shared(arg, shape, broadcast_spec); - NodeBuilder builder(broadcast_v3); - auto g_broadcast_v3 = as_type_ptr(builder.create()); - - EXPECT_EQ(g_broadcast_v3->get_broadcast_spec(), broadcast_spec); -} - -TEST(attributes, grn_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{2, 3, 4, 5}); - - float bias = 1.25f; - - auto grn = make_shared(data, bias); - NodeBuilder builder(grn); - auto g_grn = as_type_ptr(builder.create()); - - EXPECT_EQ(g_grn->get_bias(), grn->get_bias()); -} - -TEST(attributes, group_conv_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{1, 12, 224, 224}); - auto filters = make_shared(element::f32, Shape{4, 1, 3, 5, 5}); - auto strides = Strides{1, 1}; - auto pads_begin = CoordinateDiff{1, 2}; - auto pads_end = CoordinateDiff{1, 2}; - auto dilations = Strides{1, 1}; - auto group_conv = make_shared( - data, filters, strides, pads_begin, pads_end, dilations, op::PadType::VALID); - NodeBuilder builder(group_conv); - auto g_group_conv = as_type_ptr(builder.create()); - EXPECT_EQ(g_group_conv->get_strides(), group_conv->get_strides()); - EXPECT_EQ(g_group_conv->get_pads_begin(), group_conv->get_pads_begin()); - EXPECT_EQ(g_group_conv->get_pads_end(), group_conv->get_pads_end()); - EXPECT_EQ(g_group_conv->get_dilations(), group_conv->get_dilations()); - EXPECT_EQ(g_group_conv->get_auto_pad(), group_conv->get_auto_pad()); -} - -TEST(attributes, group_conv_backprop_data_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto data = make_shared(element::f32, Shape{1, 20, 224, 224}); - const auto filter = make_shared(element::f32, Shape{4, 5, 2, 3, 3}); - const auto output_shape = make_shared(element::i32, Shape{1}); - - const auto strides = Strides{2, 1}; - const auto pads_begin = CoordinateDiff{3, 4}; - const auto pads_end = CoordinateDiff{4, 6}; - const auto dilations = Strides{3, 1}; - const auto auto_pad = op::PadType::EXPLICIT; - const auto output_padding = CoordinateDiff{3, 4}; - - const auto gcbd = make_shared(data, - filter, - output_shape, - strides, - pads_begin, - pads_end, - dilations, - auto_pad, - output_padding); - NodeBuilder builder(gcbd); - const auto g_gcbd = as_type_ptr(builder.create()); - - EXPECT_EQ(g_gcbd->get_strides(), gcbd->get_strides()); - EXPECT_EQ(g_gcbd->get_pads_begin(), gcbd->get_pads_begin()); - EXPECT_EQ(g_gcbd->get_pads_end(), gcbd->get_pads_end()); - EXPECT_EQ(g_gcbd->get_dilations(), gcbd->get_dilations()); - EXPECT_EQ(g_gcbd->get_auto_pad(), gcbd->get_auto_pad()); - EXPECT_EQ(g_gcbd->get_output_padding(), gcbd->get_output_padding()); -} - -TEST(attributes, lrn_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto arg = make_shared(element::f32, Shape{1, 2, 3, 4}); - const auto axes = make_shared(element::i32, Shape{2}); - - const double alpha = 1.1; - const double beta = 2.2; - const double bias = 3.3; - const size_t size = 4; - - const auto lrn = make_shared(arg, axes, alpha, beta, bias, size); - NodeBuilder builder(lrn); - auto g_lrn = as_type_ptr(builder.create()); - - EXPECT_EQ(g_lrn->get_alpha(), lrn->get_alpha()); - EXPECT_EQ(g_lrn->get_beta(), lrn->get_beta()); - EXPECT_EQ(g_lrn->get_bias(), lrn->get_bias()); - EXPECT_EQ(g_lrn->get_nsize(), lrn->get_nsize()); -} - -TEST(attributes, lstm_cell_op) -{ - NodeBuilder::get_ops().register_factory(); - auto X = make_shared(element::f32, Shape{2, 3}); - auto H = make_shared(element::f32, Shape{2, 3}); - auto W = make_shared(element::f32, Shape{12, 3}); - auto R = make_shared(element::f32, Shape{12, 3}); - const auto initial_hidden_state = make_shared(element::f32, Shape{2, 3}); - const auto initial_cell_state = make_shared(element::f32, Shape{2, 3}); - - const auto hidden_size = 3; - const std::vector activations = {"tanh", "sigmoid", "tanh"}; - auto activations_alpha = std::vector{1.0, 1.5}; - auto activations_beta = std::vector{2.0, 1.0}; - const float clip = 0.5f; - const auto lstm_cell = make_shared(X, - initial_hidden_state, - initial_cell_state, - W, - R, - hidden_size, - activations, - activations_alpha, - activations_beta, - clip); - NodeBuilder builder(lstm_cell); - auto g_lstm_cell = as_type_ptr(builder.create()); - - EXPECT_EQ(g_lstm_cell->get_hidden_size(), lstm_cell->get_hidden_size()); - EXPECT_EQ(g_lstm_cell->get_activations(), lstm_cell->get_activations()); - EXPECT_EQ(g_lstm_cell->get_activations_alpha(), lstm_cell->get_activations_alpha()); - EXPECT_EQ(g_lstm_cell->get_activations_beta(), lstm_cell->get_activations_beta()); - EXPECT_EQ(g_lstm_cell->get_clip(), lstm_cell->get_clip()); -} - -TEST(attributes, lstm_sequence_op) -{ - NodeBuilder::get_ops().register_factory(); - - const size_t batch_size = 4; - const size_t num_directions = 2; - const size_t seq_length = 8; - const size_t input_size = 16; - const size_t hidden_size = 64; - - const auto X = - make_shared(element::f32, Shape{batch_size, seq_length, input_size}); - const auto initial_hidden_state = - make_shared(element::f32, Shape{batch_size, num_directions, hidden_size}); - const auto initial_cell_state = - make_shared(element::f32, Shape{batch_size, num_directions, hidden_size}); - const auto sequence_lengths = make_shared(element::i32, Shape{batch_size}); - const auto W = make_shared(element::f32, - Shape{num_directions, 4 * hidden_size, input_size}); - const auto R = make_shared(element::f32, - Shape{num_directions, 4 * hidden_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{num_directions, 4 * hidden_size}); - - const auto lstm_direction = op::RecurrentSequenceDirection::BIDIRECTIONAL; - const std::vector activations_alpha = {1, 2, 3}; - const std::vector activations_beta = {4, 5, 6}; - const std::vector activations = {"tanh", "sigmoid", "tanh"}; - const float clip_threshold = 0.5f; - - const auto lstm_sequence = make_shared(X, - initial_hidden_state, - initial_cell_state, - sequence_lengths, - W, - R, - B, - hidden_size, - lstm_direction, - activations_alpha, - activations_beta, - activations, - clip_threshold); - NodeBuilder builder(lstm_sequence); - auto g_lstm_sequence = as_type_ptr(builder.create()); - - EXPECT_EQ(g_lstm_sequence->get_hidden_size(), lstm_sequence->get_hidden_size()); - EXPECT_EQ(g_lstm_sequence->get_activations(), lstm_sequence->get_activations()); - EXPECT_EQ(g_lstm_sequence->get_activations_alpha(), lstm_sequence->get_activations_alpha()); - EXPECT_EQ(g_lstm_sequence->get_activations_beta(), lstm_sequence->get_activations_beta()); - EXPECT_EQ(g_lstm_sequence->get_clip(), lstm_sequence->get_clip()); - EXPECT_EQ(g_lstm_sequence->get_direction(), lstm_sequence->get_direction()); -} - -TEST(attributes, shuffle_channels_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{200}); - auto axis = 0; - auto groups = 2; - auto shuffle_channels = make_shared(data, axis, groups); - NodeBuilder builder(shuffle_channels); - auto g_shuffle_channels = as_type_ptr(builder.create()); - - EXPECT_EQ(g_shuffle_channels->get_axis(), shuffle_channels->get_axis()); - EXPECT_EQ(g_shuffle_channels->get_group(), shuffle_channels->get_group()); -} - -TEST(attributes, softmax_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{200}); - auto axis = 0; - auto softmax = make_shared(data, axis); - NodeBuilder builder(softmax); - auto g_softmax = as_type_ptr(builder.create()); - - EXPECT_EQ(g_softmax->get_axis(), softmax->get_axis()); -} - -TEST(attributes, space_to_depth_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{2, 3, 50, 50}); - auto block_size = 2; - auto mode = opset1::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; - auto space_to_depth = make_shared(data, mode, block_size); - NodeBuilder builder(space_to_depth); - auto g_space_to_depth = as_type_ptr(builder.create()); - - EXPECT_EQ(g_space_to_depth->get_block_size(), space_to_depth->get_block_size()); - EXPECT_EQ(g_space_to_depth->get_mode(), space_to_depth->get_mode()); -} - -TEST(attributes, split_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{200}); - auto axis = make_shared(element::i32, Shape{}); - auto num_splits = 2; - auto split = make_shared(data, axis, num_splits); - NodeBuilder builder(split); - auto g_split = as_type_ptr(builder.create()); - - EXPECT_EQ(g_split->get_num_splits(), split->get_num_splits()); -} - -TEST(attributes, squared_difference_op) -{ - NodeBuilder::get_ops().register_factory(); - auto x1 = make_shared(element::i32, Shape{200}); - auto x2 = make_shared(element::i32, Shape{200}); - auto auto_broadcast = op::AutoBroadcastType::NUMPY; - auto squared_difference = make_shared(x1, x2, auto_broadcast); - NodeBuilder builder(squared_difference); - auto g_squared_difference = as_type_ptr(builder.create()); - - EXPECT_EQ(g_squared_difference->get_autob(), squared_difference->get_autob()); -} - -TEST(attributes, strided_slice_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{2, 3, 4, 5}); - auto begin = make_shared(element::i32, Shape{2}); - auto end = make_shared(element::i32, Shape{2}); - auto stride = make_shared(element::i32, Shape{2}); - - auto begin_mask = std::vector{0, 0}; - auto end_mask = std::vector{0, 0}; - auto new_axis_mask = std::vector{0, 0}; - auto shrink_axis_mask = std::vector{0, 0}; - auto ellipsis_mask = std::vector{0, 0}; - - auto strided_slice = make_shared(data, - begin, - end, - stride, - begin_mask, - end_mask, - new_axis_mask, - shrink_axis_mask, - ellipsis_mask); - NodeBuilder builder(strided_slice); - auto g_strided_slice = as_type_ptr(builder.create()); - - EXPECT_EQ(g_strided_slice->get_begin_mask(), strided_slice->get_begin_mask()); - EXPECT_EQ(g_strided_slice->get_end_mask(), strided_slice->get_end_mask()); - EXPECT_EQ(g_strided_slice->get_new_axis_mask(), strided_slice->get_new_axis_mask()); - EXPECT_EQ(g_strided_slice->get_shrink_axis_mask(), strided_slice->get_shrink_axis_mask()); - EXPECT_EQ(g_strided_slice->get_ellipsis_mask(), strided_slice->get_ellipsis_mask()); -} - -TEST(attributes, topk_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{2, 3, 4, 5}); - auto k = make_shared(element::i32, Shape{}); - - auto axis = 0; - auto mode = opset1::TopK::Mode::MAX; - auto sort_type = opset1::TopK::SortType::SORT_VALUES; - - auto topk = make_shared(data, k, axis, mode, sort_type); - NodeBuilder builder(topk); - auto g_topk = as_type_ptr(builder.create()); - - EXPECT_EQ(g_topk->get_axis(), topk->get_axis()); - EXPECT_EQ(g_topk->get_mode(), topk->get_mode()); - EXPECT_EQ(g_topk->get_sort_type(), topk->get_sort_type()); -} - -TEST(attributes, logical_xor_op) -{ - NodeBuilder::get_ops().register_factory(); - auto x1 = make_shared(element::boolean, Shape{200}); - auto x2 = make_shared(element::boolean, Shape{200}); - - auto auto_broadcast = op::AutoBroadcastType::NUMPY; - - auto logical_xor = make_shared(x1, x2, auto_broadcast); - NodeBuilder builder(logical_xor); - auto g_logical_xor = as_type_ptr(builder.create()); - - EXPECT_EQ(g_logical_xor->get_autob(), logical_xor->get_autob()); -} - -TEST(attributes, extractimagepatches_op) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::i32, Shape{64, 3, 10, 10}); - - auto sizes = Shape{3, 3}; - auto strides = Strides{5, 5}; - auto rates = Shape{1, 1}; - auto padtype_padding = ngraph::op::PadType::VALID; - - auto extractimagepatches = - make_shared(data, sizes, strides, rates, padtype_padding); - NodeBuilder builder(extractimagepatches); - auto g_extractimagepatches = as_type_ptr(builder.create()); - - EXPECT_EQ(g_extractimagepatches->get_sizes(), sizes); - EXPECT_EQ(g_extractimagepatches->get_strides(), strides); - EXPECT_EQ(g_extractimagepatches->get_rates(), rates); - EXPECT_EQ(g_extractimagepatches->get_auto_pad(), padtype_padding); -} - -TEST(attributes, mvn_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto data = make_shared(element::i32, Shape{2, 3, 4, 5}); - - const auto axes = AxisSet{0, 1}; - - const auto op = make_shared(data, true, false, 0.1); - op->set_reduction_axes(axes); - NodeBuilder builder(op); - const auto g_op = as_type_ptr(builder.create()); - - EXPECT_EQ(g_op->get_reduction_axes(), op->get_reduction_axes()); - EXPECT_EQ(g_op->get_across_channels(), op->get_across_channels()); - EXPECT_EQ(g_op->get_normalize_variance(), op->get_normalize_variance()); - EXPECT_EQ(g_op->get_eps(), op->get_eps()); -} - -TEST(attributes, reorg_yolo_op_stride) -{ - NodeBuilder::get_ops().register_factory(); - const auto data = make_shared(element::i32, Shape{1, 64, 26, 26}); - - const auto op = make_shared(data, 2); - NodeBuilder builder(op); - const auto g_op = as_type_ptr(builder.create()); - - EXPECT_EQ(g_op->get_strides(), op->get_strides()); -} - -TEST(attributes, reorg_yolo_op_strides) -{ - NodeBuilder::get_ops().register_factory(); - const auto data = make_shared(element::i32, Shape{1, 64, 26, 26}); - - const auto op = make_shared(data, Strides{2}); - NodeBuilder builder(op); - const auto g_op = as_type_ptr(builder.create()); - - EXPECT_EQ(g_op->get_strides(), op->get_strides()); -} - -TEST(attributes, roi_pooling_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto data = make_shared(element::f32, Shape{2, 3, 4, 5}); - const auto coords = make_shared(element::f32, Shape{2, 5}); - - const auto op = make_shared(data, coords, Shape{5, 5}, 0.123, "bilinear"); - NodeBuilder builder(op); - const auto g_op = as_type_ptr(builder.create()); - - EXPECT_EQ(g_op->get_output_size(), op->get_output_size()); - EXPECT_EQ(g_op->get_spatial_scale(), op->get_spatial_scale()); - EXPECT_EQ(g_op->get_method(), op->get_method()); -} - -TEST(attributes, constant_op) -{ - vector data{5.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.0f}; - auto k = make_shared(element::f32, Shape{2, 3}, data); - NodeBuilder builder(k); - auto g_k = as_type_ptr(builder.create()); - g_k->validate_and_infer_types(); - ASSERT_TRUE(g_k); - EXPECT_EQ(k->get_element_type(), g_k->get_element_type()); - EXPECT_EQ(k->get_shape(), g_k->get_shape()); - vector g_data = g_k->get_vector(); - EXPECT_EQ(data, g_data); -} - -TEST(attributes, bucketize_v3_op_default_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{2, 3, 4}); - auto buckets = make_shared(element::f32, Shape{5}); - auto bucketize = make_shared(data, buckets); - NodeBuilder builder(bucketize); - - auto g_bucketize = as_type_ptr(builder.create()); - - EXPECT_EQ(g_bucketize->get_output_type(), bucketize->get_output_type()); - EXPECT_EQ(g_bucketize->get_with_right_bound(), bucketize->get_with_right_bound()); -} - -TEST(attributes, bucketize_v3_op_custom_attributes) -{ - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{2, 3, 4}); - auto buckets = make_shared(element::f32, Shape{5}); - element::Type output_type = element::i32; - bool with_right_bound = false; - - auto bucketize = make_shared(data, buckets, output_type, with_right_bound); - NodeBuilder builder(bucketize); - - auto g_bucketize = as_type_ptr(builder.create()); - - EXPECT_EQ(g_bucketize->get_output_type(), bucketize->get_output_type()); - EXPECT_EQ(g_bucketize->get_with_right_bound(), bucketize->get_with_right_bound()); -} - -TEST(attributes, cum_sum_op_default_attributes) -{ - NodeBuilder::get_ops().register_factory(); - - Shape shape{1, 4}; - auto A = make_shared(element::f32, shape); - auto axis = make_shared(element::i32, Shape{1}); - auto cs = make_shared(A, axis); - - NodeBuilder builder(cs); - auto g_cs = as_type_ptr(builder.create()); - - EXPECT_EQ(g_cs->is_exclusive(), cs->is_exclusive()); - EXPECT_EQ(g_cs->is_reverse(), cs->is_reverse()); -} - -TEST(attributes, cum_sum_op_custom_attributes) -{ - NodeBuilder::get_ops().register_factory(); - - Shape shape{1, 4}; - auto A = make_shared(element::f32, shape); - auto axis = make_shared(element::i32, Shape{1}); - bool exclusive = true; - bool reverse = true; - auto cs = make_shared(A, axis, exclusive, reverse); - - NodeBuilder builder(cs); - auto g_cs = as_type_ptr(builder.create()); - - EXPECT_EQ(g_cs->is_exclusive(), cs->is_exclusive()); - EXPECT_EQ(g_cs->is_reverse(), cs->is_reverse()); -} - -TEST(attributes, interpolate_op) -{ - NodeBuilder::get_ops().register_factory(); - auto img = make_shared(element::f32, Shape{1, 3, 32, 32}); - auto out_shape = make_shared(element::i32, Shape{2}); - - op::v0::InterpolateAttrs interp_atrs; - interp_atrs.axes = AxisSet{1, 2}; - interp_atrs.mode = "cubic"; - interp_atrs.align_corners = true; - interp_atrs.antialias = true; - interp_atrs.pads_begin = vector{0, 0}; - interp_atrs.pads_end = vector{0, 0}; - - auto interpolate = make_shared(img, out_shape, interp_atrs); - NodeBuilder builder(interpolate); - auto g_interpolate = as_type_ptr(builder.create()); - - const auto i_attrs = interpolate->get_attrs(); - const auto g_i_attrs = g_interpolate->get_attrs(); - - EXPECT_EQ(g_i_attrs.axes, i_attrs.axes); - EXPECT_EQ(g_i_attrs.mode, i_attrs.mode); - EXPECT_EQ(g_i_attrs.align_corners, i_attrs.align_corners); - EXPECT_EQ(g_i_attrs.antialias, i_attrs.antialias); - EXPECT_EQ(g_i_attrs.pads_begin, i_attrs.pads_begin); - EXPECT_EQ(g_i_attrs.pads_end, i_attrs.pads_end); -} - -TEST(attributes, detection_output_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto box_logits = make_shared(element::f32, Shape{1, 2 * 1 * 4}); - const auto class_preds = make_shared(element::f32, Shape{1, 2 * 32}); - const auto proposals = make_shared(element::f32, Shape{1, 2, 2 * 4}); - const auto aux_class_preds = make_shared(element::f32, Shape{1, 2 * 2}); - const auto aux_box_pred = make_shared(element::f32, Shape{1, 2 * 1 * 4}); - - op::DetectionOutputAttrs attrs; - attrs.num_classes = 32; - attrs.background_label_id = 0; - attrs.top_k = 1; - attrs.variance_encoded_in_target = false; - attrs.keep_top_k = {1}; - attrs.code_type = string{"caffe.PriorBoxParameter.CORNER"}; - attrs.share_location = true; - attrs.nms_threshold = 0.64f; - attrs.confidence_threshold = 1e-4f; - attrs.clip_after_nms = true; - attrs.clip_before_nms = false; - attrs.decrease_label_id = false; - attrs.normalized = true; - attrs.input_height = 32; - attrs.input_width = 32; - attrs.objectness_score = 0.73f; - - auto detection_output = make_shared( - box_logits, class_preds, proposals, aux_class_preds, aux_box_pred, attrs); - NodeBuilder builder(detection_output); - auto g_detection_output = as_type_ptr(builder.create()); - - const auto do_attrs = detection_output->get_attrs(); - const auto g_do_attrs = g_detection_output->get_attrs(); - - EXPECT_EQ(g_do_attrs.num_classes, do_attrs.num_classes); - EXPECT_EQ(g_do_attrs.background_label_id, do_attrs.background_label_id); - EXPECT_EQ(g_do_attrs.top_k, do_attrs.top_k); - EXPECT_EQ(g_do_attrs.variance_encoded_in_target, do_attrs.variance_encoded_in_target); - EXPECT_EQ(g_do_attrs.keep_top_k, do_attrs.keep_top_k); - EXPECT_EQ(g_do_attrs.code_type, do_attrs.code_type); - EXPECT_EQ(g_do_attrs.share_location, do_attrs.share_location); - EXPECT_EQ(g_do_attrs.nms_threshold, do_attrs.nms_threshold); - EXPECT_EQ(g_do_attrs.confidence_threshold, do_attrs.confidence_threshold); - EXPECT_EQ(g_do_attrs.clip_after_nms, do_attrs.clip_after_nms); - EXPECT_EQ(g_do_attrs.clip_before_nms, do_attrs.clip_before_nms); - EXPECT_EQ(g_do_attrs.decrease_label_id, do_attrs.decrease_label_id); - EXPECT_EQ(g_do_attrs.normalized, do_attrs.normalized); - EXPECT_EQ(g_do_attrs.input_height, do_attrs.input_height); - EXPECT_EQ(g_do_attrs.input_width, do_attrs.input_width); - EXPECT_EQ(g_do_attrs.objectness_score, do_attrs.objectness_score); -} - -TEST(attributes, prior_box_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto layer_shape = make_shared(element::i64, Shape{128, 128}); - const auto image_shape = make_shared(element::i64, Shape{32, 32}); - - op::PriorBoxAttrs attrs; - attrs.min_size = vector{16.f, 32.f}; - attrs.max_size = vector{256.f, 512.f}; - attrs.aspect_ratio = vector{0.66f, 1.56f}; - attrs.density = vector{0.55f}; - attrs.fixed_ratio = vector{0.88f}; - attrs.fixed_size = vector{1.25f}; - attrs.clip = true; - attrs.flip = false; - attrs.step = 1.0f; - attrs.offset = 0.0f; - attrs.variance = vector{2.22f, 3.14f}; - attrs.scale_all_sizes = true; - - auto prior_box = make_shared(layer_shape, image_shape, attrs); - NodeBuilder builder(prior_box); - auto g_prior_box = as_type_ptr(builder.create()); - - const auto prior_box_attrs = prior_box->get_attrs(); - const auto g_prior_box_attrs = g_prior_box->get_attrs(); - - EXPECT_EQ(g_prior_box_attrs.min_size, prior_box_attrs.min_size); - EXPECT_EQ(g_prior_box_attrs.max_size, prior_box_attrs.max_size); - EXPECT_EQ(g_prior_box_attrs.aspect_ratio, prior_box_attrs.aspect_ratio); - EXPECT_EQ(g_prior_box_attrs.density, prior_box_attrs.density); - EXPECT_EQ(g_prior_box_attrs.fixed_ratio, prior_box_attrs.fixed_ratio); - EXPECT_EQ(g_prior_box_attrs.fixed_size, prior_box_attrs.fixed_size); - EXPECT_EQ(g_prior_box_attrs.clip, prior_box_attrs.clip); - EXPECT_EQ(g_prior_box_attrs.flip, prior_box_attrs.flip); - EXPECT_EQ(g_prior_box_attrs.step, prior_box_attrs.step); - EXPECT_EQ(g_prior_box_attrs.offset, prior_box_attrs.offset); - EXPECT_EQ(g_prior_box_attrs.variance, prior_box_attrs.variance); - EXPECT_EQ(g_prior_box_attrs.scale_all_sizes, prior_box_attrs.scale_all_sizes); -} - -TEST(attributes, prior_box_clustered_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto layer_shape = make_shared(element::i64, Shape{128, 128}); - const auto image_shape = make_shared(element::i64, Shape{32, 32}); - - op::PriorBoxClusteredAttrs attrs; - attrs.widths = vector{128.f, 512.f, 4096.f}; - attrs.heights = vector{128.f, 512.f, 4096.f}; - attrs.clip = true; - attrs.step_widths = 0.33f; - attrs.step_heights = 1.55f; - attrs.offset = 0.77f; - attrs.variances = vector{0.33f, 1.44f}; - - auto prior_box_clust = make_shared(layer_shape, image_shape, attrs); - NodeBuilder builder(prior_box_clust); - auto g_prior_box_clust = as_type_ptr(builder.create()); - - const auto prior_box_clust_attrs = prior_box_clust->get_attrs(); - const auto g_prior_box_clust_attrs = g_prior_box_clust->get_attrs(); - - EXPECT_EQ(g_prior_box_clust_attrs.widths, prior_box_clust_attrs.widths); - EXPECT_EQ(g_prior_box_clust_attrs.heights, prior_box_clust_attrs.heights); - EXPECT_EQ(g_prior_box_clust_attrs.clip, prior_box_clust_attrs.clip); - EXPECT_EQ(g_prior_box_clust_attrs.step_widths, prior_box_clust_attrs.step_widths); - EXPECT_EQ(g_prior_box_clust_attrs.step_heights, prior_box_clust_attrs.step_heights); - EXPECT_EQ(g_prior_box_clust_attrs.offset, prior_box_clust_attrs.offset); - EXPECT_EQ(g_prior_box_clust_attrs.variances, prior_box_clust_attrs.variances); -} - -TEST(attributes, proposal_op) -{ - NodeBuilder::get_ops().register_factory(); - const auto class_probs = make_shared(element::f32, Shape{1024, 2, 128, 128}); - const auto class_logits = make_shared(element::f32, Shape{1024, 4, 128, 128}); - const auto image_shape = make_shared(element::f32, Shape{4}); - - op::ProposalAttrs attrs; - attrs.base_size = 224; - attrs.pre_nms_topn = 100; - attrs.post_nms_topn = 110; - attrs.nms_thresh = 0.12f; - attrs.feat_stride = 2; - attrs.min_size = 10; - attrs.ratio = vector{1.44f, 0.66f}; - attrs.scale = vector{2.25f, 1.83f}; - attrs.clip_before_nms = true; - attrs.clip_after_nms = true; - attrs.normalize = false; - attrs.box_size_scale = 2.f; - attrs.box_coordinate_scale = 4.55f; - attrs.framework = string{"nGraph"}; - - auto proposal = make_shared(class_probs, class_logits, image_shape, attrs); - NodeBuilder builder(proposal); - auto g_proposal = as_type_ptr(builder.create()); - - const auto proposal_attrs = proposal->get_attrs(); - const auto g_proposal_attrs = g_proposal->get_attrs(); - - EXPECT_EQ(g_proposal_attrs.base_size, proposal_attrs.base_size); - EXPECT_EQ(g_proposal_attrs.pre_nms_topn, proposal_attrs.pre_nms_topn); - EXPECT_EQ(g_proposal_attrs.post_nms_topn, proposal_attrs.post_nms_topn); - EXPECT_EQ(g_proposal_attrs.nms_thresh, proposal_attrs.nms_thresh); - EXPECT_EQ(g_proposal_attrs.feat_stride, proposal_attrs.feat_stride); - EXPECT_EQ(g_proposal_attrs.min_size, proposal_attrs.min_size); - EXPECT_EQ(g_proposal_attrs.ratio, proposal_attrs.ratio); - EXPECT_EQ(g_proposal_attrs.scale, proposal_attrs.scale); - EXPECT_EQ(g_proposal_attrs.clip_before_nms, proposal_attrs.clip_before_nms); - EXPECT_EQ(g_proposal_attrs.clip_after_nms, proposal_attrs.clip_after_nms); - EXPECT_EQ(g_proposal_attrs.normalize, proposal_attrs.normalize); - EXPECT_EQ(g_proposal_attrs.box_size_scale, proposal_attrs.box_size_scale); - EXPECT_EQ(g_proposal_attrs.box_coordinate_scale, proposal_attrs.box_coordinate_scale); - EXPECT_EQ(g_proposal_attrs.framework, proposal_attrs.framework); -} diff --git a/ngraph/test/backend/abc.in.cpp b/ngraph/test/backend/abc.in.cpp index 44b75b6d94c917..8f9eb736a30a3c 100644 --- a/ngraph/test/backend/abc.in.cpp +++ b/ngraph/test/backend/abc.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/abs.in.cpp b/ngraph/test/backend/abs.in.cpp index 6136cb124e39ad..dafed433b0895f 100644 --- a/ngraph/test/backend/abs.in.cpp +++ b/ngraph/test/backend/abs.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/acos.in.cpp b/ngraph/test/backend/acos.in.cpp index 92ce9135f4279a..cde9975502558f 100644 --- a/ngraph/test/backend/acos.in.cpp +++ b/ngraph/test/backend/acos.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/acosh.in.cpp b/ngraph/test/backend/acosh.in.cpp index af6e8d98e45abf..b3325349241fec 100644 --- a/ngraph/test/backend/acosh.in.cpp +++ b/ngraph/test/backend/acosh.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/add.in.cpp b/ngraph/test/backend/add.in.cpp index 5da6242274799b..a33f59ef8fd418 100644 --- a/ngraph/test/backend/add.in.cpp +++ b/ngraph/test/backend/add.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -95,3 +83,53 @@ NGRAPH_TEST(${BACKEND_NAME}, add_in_place) test_case.add_expected_output(shape, {48, 64, 80, 96}); test_case.run(); } + +NGRAPH_TEST(${BACKEND_NAME}, add_broadcast) +{ + Shape shape_a{1, 2}; + Shape shape_b{3, 2, 2}; + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + vector a{1, 2}; + vector b{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}; + + auto test_case = test::TestCase(f); + test_case.add_multiple_inputs({a, b}); + test_case.add_expected_output(shape_b, {6, 8, 8, 10, 3, 5, 2, 7, 7, 9, 2, 5}); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, add_scalars) +{ + Shape shape{}; + auto A = make_shared(element::f32, shape); + auto B = make_shared(element::f32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + vector a{2}; + vector b{8}; + + auto test_case = test::TestCase(f); + test_case.add_multiple_inputs({a, b}); + test_case.add_expected_output(shape, {10}); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, add_vector_and_scalar) +{ + Shape shape_a{2, 2}; + Shape shape_b{}; + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + vector a{2, 4, 7, 8}; + vector b{8}; + + auto test_case = test::TestCase(f); + test_case.add_multiple_inputs({a, b}); + test_case.add_expected_output(shape_a, {10, 12, 15, 16}); + test_case.run(); +} diff --git a/ngraph/test/backend/aliased_output.in.cpp b/ngraph/test/backend/aliased_output.in.cpp index 94766fb63fa627..31b668aaf99c79 100644 --- a/ngraph/test/backend/aliased_output.in.cpp +++ b/ngraph/test/backend/aliased_output.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/api.in.cpp b/ngraph/test/backend/api.in.cpp index 7ede0066c89982..137e6832a3232d 100644 --- a/ngraph/test/backend/api.in.cpp +++ b/ngraph/test/backend/api.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/asin.in.cpp b/ngraph/test/backend/asin.in.cpp index ac5ea37faac680..3ed74246669bf1 100644 --- a/ngraph/test/backend/asin.in.cpp +++ b/ngraph/test/backend/asin.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/asinh.in.cpp b/ngraph/test/backend/asinh.in.cpp index 559a9b6269faad..5cde50b53bbcfe 100644 --- a/ngraph/test/backend/asinh.in.cpp +++ b/ngraph/test/backend/asinh.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/atan.in.cpp b/ngraph/test/backend/atan.in.cpp index 59f90df4f96943..8a8f29bd0abbf2 100644 --- a/ngraph/test/backend/atan.in.cpp +++ b/ngraph/test/backend/atan.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/atanh.in.cpp b/ngraph/test/backend/atanh.in.cpp index 80ae6253d1afd2..fce628ed8ef36d 100644 --- a/ngraph/test/backend/atanh.in.cpp +++ b/ngraph/test/backend/atanh.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/auto_broadcast.in.cpp b/ngraph/test/backend/auto_broadcast.in.cpp index 332e4171d8bae3..e47911e5229eaa 100644 --- a/ngraph/test/backend/auto_broadcast.in.cpp +++ b/ngraph/test/backend/auto_broadcast.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/avg_pool.in.cpp b/ngraph/test/backend/avg_pool.in.cpp index ed3155cf0e5d65..a67b4cdb2c949a 100644 --- a/ngraph/test/backend/avg_pool.in.cpp +++ b/ngraph/test/backend/avg_pool.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/batch_norm.in.cpp b/ngraph/test/backend/batch_norm.in.cpp index aaa7723b953990..663935352aa5c6 100644 --- a/ngraph/test/backend/batch_norm.in.cpp +++ b/ngraph/test/backend/batch_norm.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/binary_convolution.in.cpp b/ngraph/test/backend/binary_convolution.in.cpp new file mode 100644 index 00000000000000..3103a2a95a5732 --- /dev/null +++ b/ngraph/test/backend/binary_convolution.in.cpp @@ -0,0 +1,642 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "ngraph/runtime/tensor.hpp" +#include "runtime/backend.hpp" +#include "util/all_close.hpp" +#include "util/all_close_f.hpp" +#include "util/test_control.hpp" + +using namespace std; +using namespace ngraph; + +static string s_manifest = "${MANIFEST}"; + +template +static void BinaryConvolutionTest(const std::vector& inputs, + const Shape inputs_shape, + const std::vector& filters, + const Shape filters_shape, + const std::vector& outputs, + const Shape outputs_shape, + const Strides& strides, + const CoordinateDiff& padding, + const Strides& dilations, + const float pad_value = 0.0f) +{ + const CoordinateDiff pads_begin{padding}; + const CoordinateDiff pads_end{padding}; + const op::PadType auto_pad{op::PadType::EXPLICIT}; + + auto inputs_param = make_shared(element::from(), inputs_shape); + auto filters_const = make_shared(element::u1, filters_shape, &filters[0]); + auto bin_conv = make_shared( + inputs_param, + filters_const, + strides, + pads_begin, + pads_end, + dilations, + op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT, + pad_value, + auto_pad); + auto f = make_shared(bin_conv, ParameterVector{inputs_param}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + auto input_tensor = backend->create_tensor(element::from(), inputs_shape); + copy_data(input_tensor, inputs); + auto result = backend->create_tensor(element::from(), outputs_shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {input_tensor}); + EXPECT_TRUE(test::all_close_f((outputs), read_vector(result), MIN_FLOAT_TOLERANCE_BITS)); +} + +template +static void ConvolutionTest(const std::vector& inputs, + const Shape inputs_shape, + const std::vector& filters, + const Shape filters_shape, + const std::vector& outputs, + const Shape outputs_shape, + const Strides& strides, + const CoordinateDiff& padding, + const Strides& dilations) +{ + const CoordinateDiff pads_begin{padding}; + const CoordinateDiff pads_end{padding}; + const op::PadType auto_pad{op::PadType::EXPLICIT}; + + auto inputs_param = make_shared(element::from(), inputs_shape); + auto filters_param = make_shared(element::from(), filters_shape); + auto conv = make_shared( + inputs_param, filters_param, strides, pads_begin, pads_end, dilations, auto_pad); + auto f = make_shared(conv, ParameterVector{inputs_param, filters_param}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + auto input_tensor = backend->create_tensor(element::from(), inputs_shape); + copy_data(input_tensor, inputs); + auto filters_tensor = backend->create_tensor(element::from(), filters_shape); + copy_data(filters_tensor, filters); + auto result = backend->create_tensor(element::from(), outputs_shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {input_tensor, filters_tensor}); + EXPECT_TRUE(test::all_close_f((outputs), read_vector(result), MIN_FLOAT_TOLERANCE_BITS)); +} + +// clang-format off +// --------------------- 2D convolution ------------------------------------------ +NGRAPH_TEST(${BACKEND_NAME}, bin_convolution_2D_1batch_1channel) +{ + const Strides strides{1, 1}; + const CoordinateDiff padding{0, 0}; + const Strides dilations{1, 1}; + + const Shape inputs_shape{1, 1, 4, 4}; + const std::vector inputs_conv{1.0f, -1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, 1.0f}; + + const std::vector inputs_bin_conv{1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, -1.0f, 1.0f}; + + const std::vector filters_bin_conv{0xAA, 0x80}; // 10101010 10000000 + + const Shape outputs_shape{1, 1, 2, 2}; + const std::vector outputs{1.0f, 1.0f, + 3.0f, -1.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, bin_convolution_2D_1batch_1channel_padding_pad_val_0) +{ + const Strides strides{1, 1}; + const Strides dilations{1, 1}; + + const CoordinateDiff padding_conv{0, 0}; + const Shape inputs_conv_shape{1, 1, 6, 6}; + const std::vector inputs_conv{-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, + -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, + -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f}; + + const CoordinateDiff padding_bin_conv{1, 1}; + const Shape inputs_bin_conv_shape{1, 1, 4, 4}; + const std::vector inputs_bin_conv{1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, -1.0f, 1.0f}; + + const std::vector filters_bin_conv{0xAA, 0x80}; // 10101010 10000000 + + const Shape outputs_shape{1, 1, 4, 4}; + const std::vector outputs{1.0f, -3.0f, -1.0f, 1.0f, + -3.0f, 1.0f, 1.0f, -5.0f, + -3.0f, 3.0f, -1.0f, 1.0f, + 1.0f, -5.0f, 1.0f, -3.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_bin_conv_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_bin_conv, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_conv_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_conv, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, bin_convolution_2D_1batch_1channel_padding_pad_val_1) +{ + const Strides strides{1, 1}; + const Strides dilations{1, 1}; + const float pad_value = 1.0f; + + const CoordinateDiff padding_conv{0, 0}; + const Shape inputs_conv_shape{1, 1, 6, 6}; + const std::vector inputs_conv{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}; + + const CoordinateDiff padding_bin_conv{1, 1}; + const Shape inputs_bin_conv_shape{1, 1, 4, 4}; + const std::vector inputs_bin_conv{1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, -1.0f, 1.0f}; + + const std::vector filters_bin_conv{0xAA, 0x80}; // 10101010 10000000 + + const Shape outputs_shape{1, 1, 4, 4}; + const std::vector outputs{3.0f, -1.0f, 1.0f, 3.0f, + -1.0f, 1.0f, 1.0f, -3.0f, + -1.0f, 3.0f, -1.0f, 3.0f, + 3.0f, -3.0f, 3.0f, -1.0f,}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_bin_conv_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_bin_conv, + dilations, + pad_value); + + ConvolutionTest( + inputs_conv, + inputs_conv_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_conv, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, bin_convolution_2D_1batch_1channel_stride) +{ + const Strides strides{2, 2}; + const CoordinateDiff padding{0, 0}; + const Strides dilations{1, 1}; + + const Shape inputs_shape{1, 1, 5, 5}; + const std::vector inputs_conv{-1.0f, 1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, 1.0f, 1.0f}; + + const std::vector inputs_bin_conv{0.0f, 1.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 1.0f, 1.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{-1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, 1.0f, + 1.0f, -1.0f, -1.0f}; + const std::vector filters_bin_conv{0x2E, 0x00}; // 00101110 00000000 + + const Shape outputs_shape{1, 1, 2, 2}; + const std::vector outputs{-1.0f, 3.0f, + 1.0f, 1.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, bin_convolution_2D_1batch_1channel_dilation) +{ + const Strides strides{1, 1}; + const CoordinateDiff padding{0, 0}; + const Strides dilations{2, 2}; + + const Shape inputs_shape{1, 1, 7, 7}; + const std::vector inputs_conv{1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, + -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, -1.0f, + -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, + 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f}; + + const std::vector inputs_bin_conv{1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, + 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{-1.0f, 1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, 1.0f, -1.0f}; + const std::vector filters_bin_conv{0x6B, 0x00}; // 01101011 00000000 + + const Shape outputs_shape{1, 1, 3, 3}; + const std::vector outputs{-5.0f, -3.0f, -5.0f, + 5.0f, 1.0f, 3.0f, + -1.0f, -1.0f, 3.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, + bin_convolution_2D_1batch_1channel_strides_dilation_padding_pad_val_0) +{ + const Strides strides{2, 2}; + const Strides dilations{2, 2}; + + const CoordinateDiff padding_conv{0, 0}; + const Shape inputs_conv_shape{1, 1, 11, 11}; + const std::vector inputs_conv{ + -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f,-1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f}; + + const CoordinateDiff padding_bin_conv{2, 2}; + const Shape inputs_bin_conv_shape{1, 1, 7, 7}; + const std::vector inputs_bin_conv{1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, + 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{-1.0f, 1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, 1.0f, -1.0f}; + const std::vector filters_bin_conv{0x6B, 0x00}; // 01101011 00000000 + + const Shape outputs_shape{1, 1, 4, 4}; + const std::vector outputs{1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, -5.0f, -5.0f, 5.0f, + 3.0f, -1.0f, 3.0f, 3.0f, + -1.0f, -1.0f, 3.0f, -3.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_bin_conv_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_bin_conv, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_conv_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_conv, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, + bin_convolution_2D_1batch_1channel_strides_dilation_padding_pad_val_1) +{ + const Strides strides{2, 2}; + const Strides dilations{2, 2}; + const float pad_value = 1.0f; + + const CoordinateDiff padding_conv{0, 0}; + const Shape inputs_conv_shape{1, 1, 11, 11}; + const std::vector inputs_conv{ + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}; + + const CoordinateDiff padding_bin_conv{2, 2}; + const Shape inputs_bin_conv_shape{1, 1, 7, 7}; + const std::vector inputs_bin_conv{1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, + 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{-1.0f, 1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, 1.0f, -1.0f}; + const std::vector filters_bin_conv{0x6B, 0x00}; // 01101011 00000000 + + const Shape outputs_shape{1, 1, 4, 4}; + const std::vector outputs{3.0f, 3.0f, 1.0f, -1.0f, + -1.0f, -5.0f, -5.0f, 3.0f, + 1.0f, -1.0f, 3.0f, 1.0f, + -3.0f, 1.0f, 5.0f, -1.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_bin_conv_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_bin_conv, + dilations, + pad_value); + + ConvolutionTest( + inputs_conv, + inputs_conv_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding_conv, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, bin_convolution_2D_1batch_2channel) +{ + const Strides strides{1, 1}; + const CoordinateDiff padding{0, 0}; + const Strides dilations{1, 1}; + + const Shape inputs_shape{1, 2, 4, 4}; + const std::vector inputs_conv{ + // channel 1 + 1.0f, -1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, 1.0f, + // channel 2 + -1.0f, 1.0f, 1.0f, -1.0f, + -1.0f, -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, -1.0f, + -1.0f, 1.0f, -1.0f, -1.0f}; + const std::vector inputs_bin_conv{ + // channel 1 + 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f, + // channel 2 + 0.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f}; + + const Shape filters_shape{1, 2, 3, 3}; + const std::vector filters_conv{ + // channel 1 + 1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, -1.0f, 1.0f, + // channel 2 + -1.0f, 1.0f, -1.0f, + 1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f}; + // 10101010 10101010 10000000 + const std::vector filters_bin_conv{0xAA, 0xAA, 0x80}; + + const Shape outputs_shape{1, 1, 2, 2}; + const std::vector outputs{2.0f, 2.0f, + 6.0f, -2.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); +} + +NGRAPH_TEST(${BACKEND_NAME}, bin_convolution_2D_2batch_1channel) +{ + const Strides strides{1, 1}; + const CoordinateDiff padding{0, 0}; + const Strides dilations{1, 1}; + + const Shape inputs_shape{2, 1, 4, 4}; + const std::vector inputs_conv{ + // batch 1 + 1.0f, -1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, -1.0f, + -1.0f, -1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, 1.0f, + // batch 2 + -1.0f, -1.0f, -1.0f, -1.0f, + 1.0f, 1.0f, 1.0f, -1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, -1.0f}; + const std::vector inputs_bin_conv{ + // batch 1 + 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 1.0f, + // batch 2 + 0.0f, 0.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 0.0f}; + + const Shape filters_shape{1, 1, 3, 3}; + const std::vector filters_conv{1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, -1.0f, 1.0f}; + const std::vector filters_bin_conv{0xAA, 0x80}; // 10101010 10000000 + + const Shape outputs_shape{2, 1, 2, 2}; + const std::vector outputs{ + // batch 1 + 1.0f, 1.0f, + 3.0f, -1.0f, + // batch 2 + -3.0f, 3.0f, + 5.0f, -7.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); +} +// clang-format on diff --git a/ngraph/test/backend/broadcast.in.cpp b/ngraph/test/backend/broadcast.in.cpp index 04d9c07a0df966..7c65594062f7d4 100644 --- a/ngraph/test/backend/broadcast.in.cpp +++ b/ngraph/test/backend/broadcast.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/bucketize.in.cpp b/ngraph/test/backend/bucketize.in.cpp index 658644d858eccf..d8f889e4f207c9 100644 --- a/ngraph/test/backend/bucketize.in.cpp +++ b/ngraph/test/backend/bucketize.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/builder_reduce_ops_opset1.in.cpp b/ngraph/test/backend/builder_reduce_ops_opset1.in.cpp index a5cd52a0abec7d..fda38338240df6 100644 --- a/ngraph/test/backend/builder_reduce_ops_opset1.in.cpp +++ b/ngraph/test/backend/builder_reduce_ops_opset1.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/backend/ceiling.in.cpp b/ngraph/test/backend/ceiling.in.cpp index caae962386f7d6..cfd5d71e3e1315 100644 --- a/ngraph/test/backend/ceiling.in.cpp +++ b/ngraph/test/backend/ceiling.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/clamp.in.cpp b/ngraph/test/backend/clamp.in.cpp new file mode 100644 index 00000000000000..8f985f02af1597 --- /dev/null +++ b/ngraph/test/backend/clamp.in.cpp @@ -0,0 +1,418 @@ +//***************************************************************************** +// Copyright 2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "util/engine/test_engines.hpp" +#include "util/test_case.hpp" +#include "util/test_control.hpp" + +using namespace std; +using namespace ngraph; + +static string s_manifest = "${MANIFEST}"; +using TestEngine = test::ENGINE_CLASS_NAME(${BACKEND_NAME}); + +namespace +{ + template + void clamp_test(const element::Type& type, + const PartialShape& dynamic_shape, + const Shape& static_shape, + const std::vector& input, + double min, + double max, + const std::vector& output) + { + auto data = make_shared(type, dynamic_shape); + auto clamp = make_shared(data, min, max); + auto function = make_shared(clamp, ParameterVector{data}); + + auto test_case = test::TestCase(function); + test_case.template add_input(static_shape, input); + test_case.template add_expected_output(static_shape, output); + return test_case.run(); + } +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_integral) +{ + Shape in_shape{6}; + element::Type et = element::i32; + + float min = 0.4; // ceiled to 1 + float max = 5.6; // floored to 5 + + auto input = make_shared(et, in_shape); + auto clamp = make_shared(input, min, max); + auto f = make_shared(clamp, ParameterVector{input}); + + vector in_vec{-1, 3, -10, 20, 6, 2}; + vector out_vec{1, 3, 1, 5, 5, 2}; + + auto test_case = test::TestCase(f); + test_case.add_input(in_shape, in_vec); + test_case.add_expected_output(in_shape, out_vec); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_integral_negative) +{ + Shape in_shape{6}; + element::Type et = element::i32; + + float min = -5.6; // ceiled to -5 + float max = -0.4; // floored to -1 + + auto input = make_shared(et, in_shape); + auto clamp = make_shared(input, min, max); + auto f = make_shared(clamp, ParameterVector{input}); + + vector in_vec{-6, 1, -2, 0, -1, 2}; + vector out_vec{-5, -1, -2, -1, -1, -1}; + + auto test_case = test::TestCase(f); + test_case.add_input(in_shape, in_vec); + test_case.add_expected_output(in_shape, out_vec); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_float) +{ + auto type = element::f32; + typedef float ctype; + + auto sshape = Shape{5, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; + + // static shape + clamp_test(type, + sshape, + sshape, + {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, + 0.2, + 0.6, + {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); + + clamp_test(type, + sshape, + sshape, + input, + 10.0, + 20.0, + {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); + + clamp_test(type, + sshape, + sshape, + input, + 10.0, + pinf, + {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); + + clamp_test(type, + sshape, + sshape, + input, + ninf, + 20.0, + {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_int8) +{ + auto type = element::i8; + typedef int8_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_int16) +{ + auto type = element::i16; + typedef int16_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_int32) +{ + auto type = element::i32; + typedef int32_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_int64) +{ + auto type = element::i64; + typedef int64_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_uint8) +{ + auto type = element::u8; + typedef uint8_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_uint16) +{ + auto type = element::u16; + typedef uint16_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_uint32) +{ + auto type = element::u32; + typedef uint32_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_uint64) +{ + auto type = element::u64; + typedef uint64_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (32 - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // static shape + clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_float16) +{ + auto type = element::f16; + typedef float16 ctype; + + auto sshape = Shape{5, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; + + // static shape + clamp_test(type, + sshape, + sshape, + {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, + 0.2, + 0.6, + {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); + + clamp_test(type, + sshape, + sshape, + input, + 10.0, + 20.0, + {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); + + clamp_test(type, + sshape, + sshape, + input, + 10.0, + pinf, + {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); + + clamp_test(type, + sshape, + sshape, + input, + ninf, + 20.0, + {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); +} + +NGRAPH_TEST(${BACKEND_NAME}, clamp_bfloat16) +{ + auto type = element::bf16; + typedef bfloat16 ctype; + + auto sshape = Shape{5, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; + + // static shape + clamp_test(type, + sshape, + sshape, + {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, + 0.2, + 0.6, + {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); + + clamp_test(type, + sshape, + sshape, + input, + 10.0, + 20.0, + {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); + + clamp_test(type, + sshape, + sshape, + input, + 10.0, + pinf, + {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); + + clamp_test(type, + sshape, + sshape, + input, + ninf, + 20.0, + {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); +} diff --git a/ngraph/test/backend/comparison.in.cpp b/ngraph/test/backend/comparison.in.cpp index d1a24e840ffbfe..cb0cf69c11ae06 100644 --- a/ngraph/test/backend/comparison.in.cpp +++ b/ngraph/test/backend/comparison.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/concat.in.cpp b/ngraph/test/backend/concat.in.cpp index a3e9891efc4cae..11db391c2a98b5 100644 --- a/ngraph/test/backend/concat.in.cpp +++ b/ngraph/test/backend/concat.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/constant.in.cpp b/ngraph/test/backend/constant.in.cpp index 94188047c480a5..d60dc91345d310 100644 --- a/ngraph/test/backend/constant.in.cpp +++ b/ngraph/test/backend/constant.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/convert.in.cpp b/ngraph/test/backend/convert.in.cpp index d9dc3741c6fbda..57892e37f91019 100644 --- a/ngraph/test/backend/convert.in.cpp +++ b/ngraph/test/backend/convert.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/convert_like.in.cpp b/ngraph/test/backend/convert_like.in.cpp index 3f7caf2499fa66..ef0a4326b76559 100644 --- a/ngraph/test/backend/convert_like.in.cpp +++ b/ngraph/test/backend/convert_like.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/convolution.in.cpp b/ngraph/test/backend/convolution.in.cpp index 731f91143b2001..477e8d31efef43 100644 --- a/ngraph/test/backend/convolution.in.cpp +++ b/ngraph/test/backend/convolution.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/cos.in.cpp b/ngraph/test/backend/cos.in.cpp index 9bc593eae16de2..802a138689e898 100644 --- a/ngraph/test/backend/cos.in.cpp +++ b/ngraph/test/backend/cos.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/cosh.in.cpp b/ngraph/test/backend/cosh.in.cpp index 066ea967b52657..1877b50e6beefd 100644 --- a/ngraph/test/backend/cosh.in.cpp +++ b/ngraph/test/backend/cosh.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/ctc_greedy_decoder.in.cpp b/ngraph/test/backend/ctc_greedy_decoder.in.cpp index dfd190fd480359..830d67c742f5d4 100644 --- a/ngraph/test/backend/ctc_greedy_decoder.in.cpp +++ b/ngraph/test/backend/ctc_greedy_decoder.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/ctc_greedy_decoder_seq_len.in.cpp b/ngraph/test/backend/ctc_greedy_decoder_seq_len.in.cpp index 1e6282c77bdca3..2017aa45a8b19a 100644 --- a/ngraph/test/backend/ctc_greedy_decoder_seq_len.in.cpp +++ b/ngraph/test/backend/ctc_greedy_decoder_seq_len.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/cum_sum.in.cpp b/ngraph/test/backend/cum_sum.in.cpp index 21f100cfcb6fa7..46c7a768da2a70 100644 --- a/ngraph/test/backend/cum_sum.in.cpp +++ b/ngraph/test/backend/cum_sum.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/detection_output.in.cpp b/ngraph/test/backend/detection_output.in.cpp index c55ded3a80acaa..d11f1bceb17b7e 100644 --- a/ngraph/test/backend/detection_output.in.cpp +++ b/ngraph/test/backend/detection_output.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/divide.in.cpp b/ngraph/test/backend/divide.in.cpp index 0c2ff9dd06f0a4..081cf1d516d798 100644 --- a/ngraph/test/backend/divide.in.cpp +++ b/ngraph/test/backend/divide.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -32,6 +20,7 @@ // clang-format on #include "gtest/gtest.h" +#include "util/type_prop.hpp" #include "runtime/backend.hpp" #include "ngraph/runtime/tensor.hpp" #include "ngraph/ngraph.hpp" @@ -156,6 +145,99 @@ NGRAPH_TEST(${BACKEND_NAME}, divide_overload) EXPECT_TRUE(test::all_close_f((vector{2, 2, 2, 2}), read_vector(result))); } +namespace +{ + template + void divide_broadcast() + { + const auto element_type = ngraph::element::from(); + const Shape shape_a{3, 2, 1}; + const Shape shape_b{1, 6}; + const Shape shape_o{3, 2, 6}; + std::vector in_a{12, 24, 36, 48, 60, 72}; + std::vector in_b{1, 2, 3, 4, 6, 1}; + // clang-format off + std::vector out{12, 6, 4, 3, 2, 12, + 24, 12, 8, 6, 4, 24, + + 36, 18, 12, 9, 6, 36, + 48, 24, 16, 12, 8, 48, + + 60, 30, 20, 15, 10, 60, + 72, 36, 24, 18, 12, 72}; + // clang-format on + + auto A = make_shared(element_type, shape_a); + auto B = make_shared(element_type, shape_b); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element_type, shape_a, in_a.data()); + auto b = backend->create_tensor(element_type, shape_b, in_b.data()); + auto result = backend->create_tensor(element_type, shape_o); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_EQ(out, read_vector(result)); + } +} // namespace + +NGRAPH_TEST(${BACKEND_NAME}, divide_int32_broadcast) +{ + divide_broadcast(); +} + +NGRAPH_TEST(${BACKEND_NAME}, divide_f32_broadcast) +{ + divide_broadcast(); +} + +NGRAPH_TEST(${BACKEND_NAME}, divide_int32_scalar) +{ + Shape shape{}; + + auto A = make_shared(element::i32, shape); + auto B = make_shared(element::i32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element::i32, shape); + copy_data(a, vector{18}); + auto b = backend->create_tensor(element::i32, shape); + copy_data(b, vector{8}); + auto result = backend->create_tensor(element::i32, shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_EQ(vector{2}, read_vector(result)); +} + +NGRAPH_TEST(${BACKEND_NAME}, divide_f32_scalar) +{ + Shape shape{}; + + auto A = make_shared(element::f32, shape); + auto B = make_shared(element::f32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element::f32, shape); + copy_data(a, vector{18}); + auto b = backend->create_tensor(element::f32, shape); + copy_data(b, vector{8}); + auto result = backend->create_tensor(element::f32, shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_TRUE(test::all_close_f((vector{2.25}), read_vector(result))); +} + NGRAPH_TEST(${BACKEND_NAME}, divide_by_zero_float32) { Shape shape{2, 2}; diff --git a/ngraph/test/backend/dyn_reshape.in.cpp b/ngraph/test/backend/dyn_reshape.in.cpp index d9340abed2f953..1a36dae0ff6a31 100644 --- a/ngraph/test/backend/dyn_reshape.in.cpp +++ b/ngraph/test/backend/dyn_reshape.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/dynamic.in.cpp b/ngraph/test/backend/dynamic.in.cpp index ef9a4a014f7a57..bc5bc94e7fcb7a 100644 --- a/ngraph/test/backend/dynamic.in.cpp +++ b/ngraph/test/backend/dynamic.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/erf.in.cpp b/ngraph/test/backend/erf.in.cpp index 0f63bc343dc38d..7af553ceacb284 100644 --- a/ngraph/test/backend/erf.in.cpp +++ b/ngraph/test/backend/erf.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/exp.in.cpp b/ngraph/test/backend/exp.in.cpp index 39914a26d4e629..9cdfd1c0a5f5e9 100644 --- a/ngraph/test/backend/exp.in.cpp +++ b/ngraph/test/backend/exp.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/floor.in.cpp b/ngraph/test/backend/floor.in.cpp index f46884b16550f5..beba684c2d7996 100644 --- a/ngraph/test/backend/floor.in.cpp +++ b/ngraph/test/backend/floor.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/function_name.in.cpp b/ngraph/test/backend/function_name.in.cpp index c8f33e4f32dbe9..328ab395a2fb76 100644 --- a/ngraph/test/backend/function_name.in.cpp +++ b/ngraph/test/backend/function_name.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/fused_op.in.cpp b/ngraph/test/backend/fused_op.in.cpp index 93ac5b0d5c4cc1..ff70b22e1b10d9 100644 --- a/ngraph/test/backend/fused_op.in.cpp +++ b/ngraph/test/backend/fused_op.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -35,7 +23,6 @@ #include "ngraph/ngraph.hpp" #include "ngraph/opsets/opset4.hpp" #include "ngraph/op/util/attr_types.hpp" -#include "ngraph/op/util/rnn_cell_base.hpp" #include "util/all_close.hpp" #include "util/all_close_f.hpp" #include "util/engine/test_engines.hpp" @@ -459,616 +446,6 @@ NGRAPH_TEST(${BACKEND_NAME}, DISABLED_normalize_across_chw_4d_max_bias) test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 1); } -namespace -{ - template - void clamp_test(const element::Type& type, - const PartialShape& dynamic_shape, - const Shape& static_shape, - const std::vector& input, - double min, - double max, - const std::vector& output) - { - auto data = make_shared(type, dynamic_shape); - auto clamp = make_shared(data, min, max); - auto function = make_shared(clamp, ParameterVector{data}); - - auto test_case = test::TestCase(function); - test_case.template add_input(static_shape, input); - test_case.template add_expected_output(static_shape, output); - return test_case.run(); - } -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_double) -{ - auto type = element::f64; - typedef double ctype; - - auto sshape = Shape{5, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; - - // static shape - clamp_test(type, - sshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test(type, - sshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - // dynamic shape - clamp_test( - type, - dshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test( - type, - dshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_float) -{ - auto type = element::f32; - typedef float ctype; - - auto sshape = Shape{5, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; - - // static shape - clamp_test(type, - sshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test(type, - sshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - // dynamic shape - clamp_test( - type, - dshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test( - type, - dshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_int8) -{ - auto type = element::i8; - typedef int8_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_int16) -{ - auto type = element::i16; - typedef int16_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_int32) -{ - auto type = element::i32; - typedef int32_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_int64) -{ - auto type = element::i64; - typedef int64_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_uint8) -{ - auto type = element::u8; - typedef uint8_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints - // auto max = numeric_limits::max(); - // auto pinf = numeric_limits::infinity(); - ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; - auto pinf = static_cast(max); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_uint16) -{ - auto type = element::u16; - typedef uint16_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints - // auto max = numeric_limits::max(); - // auto pinf = numeric_limits::infinity(); - ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; - auto pinf = static_cast(max); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_uint32) -{ - auto type = element::u32; - typedef uint32_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints - // auto max = numeric_limits::max(); - // auto pinf = numeric_limits::infinity(); - ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; - auto pinf = static_cast(max); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_uint64) -{ - auto type = element::u64; - typedef uint64_t ctype; - - auto sshape = Shape{4, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints - // auto max = numeric_limits::max(); - // auto pinf = numeric_limits::infinity(); - ctype max = (static_cast(1) << (32 - 1)) - 1; - auto pinf = static_cast(max); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, 9, 10, 11, 19, 20, 21}; - - // static shape - clamp_test(type, sshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test(type, sshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test(type, sshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); - - // dynamic shape - clamp_test( - type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); - clamp_test( - type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); - clamp_test( - type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_float16) -{ - auto type = element::f16; - typedef float16 ctype; - - auto sshape = Shape{5, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; - - // static shape - clamp_test(type, - sshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test(type, - sshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - // dynamic shape - clamp_test( - type, - dshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test( - type, - dshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); -} - -NGRAPH_TEST(${BACKEND_NAME}, fused_clamp_bfloat16) -{ - auto type = element::bf16; - typedef bfloat16 ctype; - - auto sshape = Shape{5, 2}; - auto dshape = PartialShape::dynamic(); - - auto min = numeric_limits::min(); - auto max = numeric_limits::max(); - auto pinf = numeric_limits::infinity(); - auto ninf = -numeric_limits::infinity(); - - vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; - - // static shape - clamp_test(type, - sshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test(type, - sshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test(type, - sshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - // dynamic shape - clamp_test( - type, - dshape, - sshape, - {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, - 0.2, - 0.6, - {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - 20.0, - {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); - - clamp_test( - type, - dshape, - sshape, - input, - 10.0, - pinf, - {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); - - clamp_test( - type, - dshape, - sshape, - input, - ninf, - 20.0, - {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); -} - NGRAPH_TEST(${BACKEND_NAME}, mvn_mean_normalization) { Shape data_shape{1, 2, 5}; @@ -1379,7 +756,17 @@ NGRAPH_TEST(${BACKEND_NAME}, squeeze_dynamic) { const auto data_param = make_shared(element::f32, Shape{1, 4, 1, 1, 2}); const auto axes_param = make_shared(element::i64, Shape{2}); - EXPECT_THROW(make_shared(data_param, axes_param), CheckFailure); + + const auto squeeze = make_shared(data_param, axes_param); + + const auto function = make_shared(NodeVector{squeeze}, ParameterVector{data_param, axes_param}); + auto test_case = test::TestCase(function); + + const auto data = vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}; + test_case.add_input(data); + test_case.add_input(vector{0, 2}); + test_case.add_expected_output(Shape{4, 1, 2}, data); + test_case.run(); } // TODO: Issue: 37534 @@ -1415,367 +802,6 @@ NGRAPH_TEST(${BACKEND_NAME}, DISABLED_squared_difference_broadcast) test_case.run(); } -NGRAPH_TEST(${BACKEND_NAME}, lstm_cell__zero_bias_peepholes) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - const size_t gates_count = 4; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto W = - make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); - const auto R = - make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto C_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); - const auto P = make_shared(element::f32, Shape{3 * hidden_size}); - - const auto lstm_cell = make_shared( - X, - H_t, - C_t, - op::util::convert_lstm_node_format(W, op::util::LSTMWeightsFormat::IOFC), - op::util::convert_lstm_node_format(R, op::util::LSTMWeightsFormat::IOFC), - op::util::convert_lstm_node_format(B, op::util::LSTMWeightsFormat::IOFC), - hidden_size); - - auto ht_function = make_shared(OutputVector{lstm_cell->output(0)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ht_test_case = test::TestCase(ht_function); - - // X - vector in_X{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f}; - // W - vector in_W{3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, - 7.3950343e-02f, 3.8063636e-01f, 9.6921772e-01f, 9.6897459e-01f, - 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, - 4.0472135e-01f, 6.8342745e-01f, 8.3432144e-01f, 4.4928190e-01f, - 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, - 2.1716513e-01f, 2.7473119e-01f, 3.3999152e-02f, 9.6835363e-01f, - 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f}; - // R - vector in_R{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f}; - // Ht - vector in_Ht{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f}; - // Ct - vector in_Ct{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f}; - // B - vector in_B(gates_count * hidden_size, 0.f); - // P - vector in_P(3 * hidden_size, 0.f); - - ht_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ht_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f}); - ht_test_case.run(); - - auto ct_function = make_shared(OutputVector{lstm_cell->output(1)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ct_test_case = test::TestCase(ct_function); - ct_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ct_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f}); - ct_test_case.run(); -} - -// Peerholes unsupported in Ngraph -NGRAPH_TEST(${BACKEND_NAME}, DISABLED_lstm_cell__bias_peepholes) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - const size_t gates_count = 4; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto W = - make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); - const auto R = - make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto C_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); - const auto P = make_shared(element::f32, Shape{3 * hidden_size}); - - const auto lstm_cell = make_shared(X, H_t, C_t, W, R, B, hidden_size); - - auto ht_function = make_shared(OutputVector{lstm_cell->output(0)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ht_test_case = test::TestCase(ht_function); - - // X - vector in_X{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f}; - // W - vector in_W{3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, - 7.3950343e-02f, 3.8063636e-01f, 9.6921772e-01f, 9.6897459e-01f, - 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, - 4.0472135e-01f, 6.8342745e-01f, 8.3432144e-01f, 4.4928190e-01f, - 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, - 2.1716513e-01f, 2.7473119e-01f, 3.3999152e-02f, 9.6835363e-01f, - 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f}; - // R - vector in_R{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f}; - // Ht - vector in_Ht{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f}; - // Ct - vector in_Ct{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f}; - // B - vector in_B{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f}; - // P - vector in_P{0.38557124f, - 0.9482306f, - 0.6808912f, - 0.93585867f, - 0.74540526f, - 0.10507805f, - 0.8180733f, - 0.13840231f, - 0.24175227f}; - - ht_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ht_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.9218244f, 0.78787273f, 0.8754273f, 0.7361462f, 0.70927656f, 0.83522964f}); - ht_test_case.run(); - - auto ct_function = make_shared(OutputVector{lstm_cell->output(1)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ct_test_case = test::TestCase(ct_function); - ct_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ct_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {1.7094649f, 1.1259761f, 1.444019f, 1.086587f, 0.9762144f, 1.3066899f}); - ct_test_case.run(); -} - -NGRAPH_TEST(${BACKEND_NAME}, DISABLED_lstm_cell__bias_peepholes_clip_input_forget) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - const size_t gates_count = 4; - const float clip_threshold = 3.5f; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto W = - make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); - const auto R = - make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto C_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); - const auto P = make_shared(element::f32, Shape{3 * hidden_size}); - - const auto lstm_cell = make_shared(X, - H_t, - C_t, - W, - R, - B, - hidden_size, - vector{"sigmoid", "tanh", "tanh"}, - vector{}, - vector{}, - clip_threshold); - auto ht_function = make_shared(OutputVector{lstm_cell->output(0)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ht_test_case = test::TestCase(ht_function); - - // X - vector in_X{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f}; - // W - vector in_W{3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, - 7.3950343e-02f, 3.8063636e-01f, 9.6921772e-01f, 9.6897459e-01f, - 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, - 4.0472135e-01f, 6.8342745e-01f, 8.3432144e-01f, 4.4928190e-01f, - 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, - 2.1716513e-01f, 2.7473119e-01f, 3.3999152e-02f, 9.6835363e-01f, - 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f}; - // R - vector in_R{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f}; - // Ht - vector in_Ht{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f}; - // Ct - vector in_Ct{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f}; - // B - vector in_B{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f}; - // P - vector in_P{0.38557124f, - 0.9482306f, - 0.6808912f, - 0.93585867f, - 0.74540526f, - 0.10507805f, - 0.8180733f, - 0.13840231f, - 0.24175227f}; - - ht_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ht_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.71485436f, 0.71844107f, 0.72704613f, 0.6235602f, 0.68306124f, 0.6978715f}); - ht_test_case.run(); - - auto ct_function = make_shared(OutputVector{lstm_cell->output(1)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ct_test_case = test::TestCase(ct_function); - ct_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ct_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.94656503f, 0.9527454f, 0.9706756f, 0.84206575f, 0.91898793f, 0.9127192f}); - ct_test_case.run(); -} - -// Hard Sigmoid is unsupprted -NGRAPH_TEST(${BACKEND_NAME}, DISABLED_lstm_cell__activaction_functions) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - const size_t gates_count = 4; - const float clip_threshold = 3.5f; - vector activations{"sigmoid", "tanh", "hardsigmoid"}; - vector activation_alpha{0.f, 0.f, 1.8345f}; - vector activation_beta{0.f, 0.f, 3.05f}; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto W = - make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); - const auto R = - make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto C_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); - const auto P = make_shared(element::f32, Shape{3 * hidden_size}); - - const auto lstm_cell = make_shared(X, - H_t, - C_t, - W, - R, - B, - hidden_size, - activations, - activation_alpha, - activation_beta, - clip_threshold); - auto ht_function = make_shared(OutputVector{lstm_cell->output(0)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ht_test_case = test::TestCase(ht_function); - - // X - vector in_X{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f}; - // W - vector in_W{3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, - 7.3950343e-02f, 3.8063636e-01f, 9.6921772e-01f, 9.6897459e-01f, - 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, - 4.0472135e-01f, 6.8342745e-01f, 8.3432144e-01f, 4.4928190e-01f, - 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, - 2.1716513e-01f, 2.7473119e-01f, 3.3999152e-02f, 9.6835363e-01f, - 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f}; - // R - vector in_R{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f}; - // Ht - vector in_Ht{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f}; - // Ct - vector in_Ct{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f}; - // B - vector in_B{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f}; - // P - vector in_P{0.38557124f, - 0.9482306f, - 0.6808912f, - 0.93585867f, - 0.74540526f, - 0.10507805f, - 0.8180733f, - 0.13840231f, - 0.24175227f}; - - ht_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ht_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.96834344f, 0.9695254f, 0.97068775f, 0.9077866f, 0.94161016f, 0.96599925f}); - ht_test_case.run(); - - auto ct_function = make_shared(OutputVector{lstm_cell->output(1)}, - ParameterVector{X, H_t, C_t, W, R, B}); - auto ct_test_case = test::TestCase(ct_function); - ct_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); - ct_test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.94656503f, 0.9527454f, 0.9706756f, 0.84206575f, 0.91898793f, 0.9127192f}); - ct_test_case.run(); -} - // TODO: Issue: 37511 NGRAPH_TEST(${BACKEND_NAME}, DISABLED_fake_quantize) { @@ -1952,397 +978,6 @@ NGRAPH_TEST(${BACKEND_NAME}, DISABLED_fake_quantize_pdpd) test_case.run(); } -NGRAPH_TEST(${BACKEND_NAME}, rnn_cell__no_bias) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto W = make_shared(element::f32, Shape{hidden_size, input_size}); - const auto R = make_shared(element::f32, Shape{hidden_size, hidden_size}); - - const auto rnn_cell = make_shared(X, H_t, W, R, hidden_size); - auto function = make_shared(rnn_cell, ParameterVector{X, H_t, W, R}); - - auto test_case = test::TestCase(function); - // X - test_case.add_input( - {0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}); - // Ht - test_case.add_input( - {0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}); - // W - test_case.add_input({0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}); - // R - test_case.add_input({0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}); - - test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.9408395f, 0.53823817f, 0.84270686f, 0.98932856f, 0.768665f, 0.90461975f}); - - test_case.run(); -} - -NGRAPH_TEST(${BACKEND_NAME}, rnn_cell__bias_clip) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - float clip = 2.88f; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto W = make_shared(element::f32, Shape{hidden_size, input_size}); - const auto R = make_shared(element::f32, Shape{hidden_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{hidden_size}); - - const auto rnn_cell = make_shared(X, - H_t, - W, - R, - B, - hidden_size, - vector{"tanh"}, - vector{}, - vector{}, - clip); - auto function = make_shared(rnn_cell, ParameterVector{X, H_t, W, R, B}); - - auto test_case = test::TestCase(function); - // X - test_case.add_input( - {0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}); - // Ht - test_case.add_input( - {0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}); - // W - test_case.add_input({0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}); - // R - test_case.add_input({0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}); - // B - test_case.add_input({1.0289404f, 1.6362579f, 0.4370661f}); - - test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.9922437f, 0.97749525f, 0.9312212f, 0.9937176f, 0.9901317f, 0.95906746f}); - - test_case.run(); -} - -NGRAPH_TEST(${BACKEND_NAME}, rnn_cell__activation_function) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - float clip = 2.88f; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto W = make_shared(element::f32, Shape{hidden_size, input_size}); - const auto R = make_shared(element::f32, Shape{hidden_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{hidden_size}); - - const auto rnn_cell = make_shared(X, - H_t, - W, - R, - B, - hidden_size, - vector{"sigmoid"}, - vector{}, - vector{}, - clip); - auto function = make_shared(rnn_cell, ParameterVector{X, H_t, W, R, B}); - - auto test_case = test::TestCase(function); - // X - test_case.add_input( - {0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}); - // Ht - test_case.add_input( - {0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}); - // W - test_case.add_input({0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}); - // R - test_case.add_input({0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}); - // B - test_case.add_input({1.0289404f, 1.6362579f, 0.4370661f}); - - test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.94126844f, 0.9036043f, 0.841243f, 0.9468489f, 0.934215f, 0.873708f}); - - test_case.run(); -} - -NGRAPH_TEST(${BACKEND_NAME}, gru_cell_bias_clip) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - const size_t gates_count = 3; - float clip = 2.88f; - bool linear_before_reset = false; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto W = - make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); - const auto R = - make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); - - const auto gru_cell = make_shared(X, - H_t, - W, - R, - B, - hidden_size, - vector{"sigmoid", "tanh"}, - vector{}, - vector{}, - clip, - linear_before_reset); - auto function = make_shared(gru_cell, ParameterVector{X, H_t, W, R, B}); - - auto test_case = test::TestCase(function); - // X - test_case.add_input( - {0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}); - - // Ht - test_case.add_input( - {0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}); - - // W - test_case.add_input( - {0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, - 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, - 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, - 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}); - - // R - test_case.add_input( - {0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, 0.99669236f, - 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, 0.40111724f, 0.37497616f, - 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, 0.791677f, - 0.76497287f, 0.9895242f, 0.7845312f, 0.51267904f, 0.49030215f, 0.08498167f}); - - // B (the sum of biases for W and R) - test_case.add_input({ - 0.8286678f + 0.9175602f, - 0.9153158f + 0.14958014f, - 0.9581612f + 0.49230585f, - 0.6639213f + 0.63162816f, - 0.84239805f + 0.4161903f, - 0.5282445f + 0.22148274f, - 0.14153397f + 0.50496656f, - 0.22404431f + 0.34798595f, - 0.6549655f + 0.6699164f, - }); - - test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.48588726f, 0.99670005f, 0.83759373f, 0.5023099f, 0.89410484f, 0.60011315f}); - - test_case.run(); -} - -NGRAPH_TEST(${BACKEND_NAME}, gru_cell_linear_before_reset) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - const size_t gates_count = 3; - float clip = 2.88f; - bool linear_before_reset = true; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto W = - make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); - const auto R = - make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{(gates_count + 1) * hidden_size}); - - const auto gru_cell = make_shared(X, - H_t, - W, - R, - B, - hidden_size, - vector{"sigmoid", "tanh"}, - vector{}, - vector{}, - clip, - linear_before_reset); - auto function = make_shared(gru_cell, ParameterVector{X, H_t, W, R, B}); - - auto test_case = test::TestCase(function); - // X - test_case.add_input( - {0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}); - // Ht - test_case.add_input( - {0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}); - - // W - test_case.add_input( - {0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, 0.5468904f, - 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, 0.56943774f, 0.7475505f, - 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, 0.53454477f, - 0.15974349f, 0.5804805f, 0.14303213f, 0.07514781f, 0.5865731f, 0.76409274f}); - // R - test_case.add_input( - {0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, 0.06308217f, - 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, 0.63143945f, 0.00277612f, - 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, 0.10751773f, - 0.18332677f, 0.1326976f, 0.9998985f, 0.19263928f, 0.10979804f, 0.52575564f}); - - // B (the sum of biases for W and R for z and r gates, and separately for W and R for h gate) - test_case.add_input({0.61395123f, // 0.09875853f + 0.5151927f, - 1.08667738f, // 0.37801138f + 0.708666f, - 1.32600244f, // 0.7729636f + 0.55303884f, - 0.81917698f, // 0.78493553f + 0.03424145f, - 1.37736335f, // 0.5662702f + 0.81109315f, - 0.42931147f, // 0.12406381f + 0.30524766f, - 0.66729516f, - 0.7752771f, - 0.78819966f, - 0.6606634f, - 0.99040645f, - 0.21112025f}); - - test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.8709214f, 0.48411977f, 0.74495184f, 0.6074972f, 0.44572943f, 0.1467715f}); - - test_case.run(); -} - -NGRAPH_TEST(${BACKEND_NAME}, gru_cell_activation_function) -{ - const size_t batch_size = 2; - const size_t input_size = 3; - const size_t hidden_size = 3; - const size_t gates_count = 3; - float clip = 2.88f; - bool linear_before_reset = true; - - const auto X = make_shared(element::f32, Shape{batch_size, input_size}); - const auto W = - make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); - const auto R = - make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); - const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); - const auto B = make_shared(element::f32, Shape{(gates_count + 1) * hidden_size}); - - const auto gru_cell = make_shared(X, - H_t, - W, - R, - B, - hidden_size, - vector{"hardsigmoid", "hardsigmoid"}, - vector{1.8345f, 1.8345f}, - vector{3.05f, 3.05f}, - clip, - linear_before_reset); - auto function = make_shared(gru_cell, ParameterVector{X, H_t, W, R, B}); - - auto test_case = test::TestCase(function); - // X - test_case.add_input( - {0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}); - - // Ht - test_case.add_input( - {0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}); - - // W - test_case.add_input( - {0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, 0.5468904f, - 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, 0.56943774f, 0.7475505f, - 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, 0.53454477f, - 0.15974349f, 0.5804805f, 0.14303213f, 0.07514781f, 0.5865731f, 0.76409274f}); - // R - test_case.add_input( - {0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, 0.06308217f, - 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, 0.63143945f, 0.00277612f, - 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, 0.10751773f, - 0.18332677f, 0.1326976f, 0.9998985f, 0.19263928f, 0.10979804f, 0.52575564f}); - - // B (the sum of biases for W and R for z and r gates, and separately for W and R for h gate) - test_case.add_input({0.09875853f + 0.5151927f, - 0.37801138f + 0.708666f, - 0.7729636f + 0.55303884f, - 0.78493553f + 0.03424145f, - 0.5662702f + 0.81109315f, - 0.12406381f + 0.30524766f, - 0.66729516f, - 0.7752771f, - 0.78819966f, - 0.6606634f, - 0.99040645f, - 0.21112025f}); - - test_case.add_expected_output( - Shape{batch_size, hidden_size}, - {0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}); - - test_case.run(); -} - NGRAPH_TEST(${BACKEND_NAME}, depth_to_space_space_to_depth_block_first) { auto backend = runtime::Backend::create("${BACKEND_NAME}"); diff --git a/ngraph/test/backend/gather.in.cpp b/ngraph/test/backend/gather.in.cpp index 107e4e735a6635..dc0f07ff07a5f8 100644 --- a/ngraph/test/backend/gather.in.cpp +++ b/ngraph/test/backend/gather.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/gather_elements.in.cpp b/ngraph/test/backend/gather_elements.in.cpp index 5c9544965e975e..53d5a3750c9c4a 100644 --- a/ngraph/test/backend/gather_elements.in.cpp +++ b/ngraph/test/backend/gather_elements.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/gather_nd.in.cpp b/ngraph/test/backend/gather_nd.in.cpp index c6d1fd7e6e0516..7888056c38f5f0 100644 --- a/ngraph/test/backend/gather_nd.in.cpp +++ b/ngraph/test/backend/gather_nd.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/gelu.in.cpp b/ngraph/test/backend/gelu.in.cpp index e71ce9e00a7067..9b4ac215abacc6 100644 --- a/ngraph/test/backend/gelu.in.cpp +++ b/ngraph/test/backend/gelu.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/group_convolution.in.cpp b/ngraph/test/backend/group_convolution.in.cpp index 99c453f3432eba..b243676fa81a58 100644 --- a/ngraph/test/backend/group_convolution.in.cpp +++ b/ngraph/test/backend/group_convolution.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/group_convolution_backprop_data.in.cpp b/ngraph/test/backend/group_convolution_backprop_data.in.cpp index cdad6ce6f8eab7..50f44de0315dbc 100644 --- a/ngraph/test/backend/group_convolution_backprop_data.in.cpp +++ b/ngraph/test/backend/group_convolution_backprop_data.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/hard_sigmoid.in.cpp b/ngraph/test/backend/hard_sigmoid.in.cpp index 81c6df98b291f3..fa735aa4721931 100644 --- a/ngraph/test/backend/hard_sigmoid.in.cpp +++ b/ngraph/test/backend/hard_sigmoid.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/backend/interpolate.in.cpp b/ngraph/test/backend/interpolate.in.cpp index ab77ee91f418c9..a7092e6cd309d3 100644 --- a/ngraph/test/backend/interpolate.in.cpp +++ b/ngraph/test/backend/interpolate.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/layer_norm.in.cpp b/ngraph/test/backend/layer_norm.in.cpp index 37b0af35473c94..5f183a22d96a55 100644 --- a/ngraph/test/backend/layer_norm.in.cpp +++ b/ngraph/test/backend/layer_norm.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/log.in.cpp b/ngraph/test/backend/log.in.cpp index 79b62458d99240..271af201aa0d35 100644 --- a/ngraph/test/backend/log.in.cpp +++ b/ngraph/test/backend/log.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/log_softmax.in.cpp b/ngraph/test/backend/log_softmax.in.cpp index 235dc52865d61b..49769c9a899374 100644 --- a/ngraph/test/backend/log_softmax.in.cpp +++ b/ngraph/test/backend/log_softmax.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/logical_and.in.cpp b/ngraph/test/backend/logical_and.in.cpp index f4837122fc5a7e..20ac74bedb2cd6 100644 --- a/ngraph/test/backend/logical_and.in.cpp +++ b/ngraph/test/backend/logical_and.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/logical_not.in.cpp b/ngraph/test/backend/logical_not.in.cpp index 06d4a3214e0e29..276cc25e52c2c5 100644 --- a/ngraph/test/backend/logical_not.in.cpp +++ b/ngraph/test/backend/logical_not.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/logical_or.in.cpp b/ngraph/test/backend/logical_or.in.cpp index 3ac42748eb6275..a91e2fd06fd61f 100644 --- a/ngraph/test/backend/logical_or.in.cpp +++ b/ngraph/test/backend/logical_or.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/logical_xor.in.cpp b/ngraph/test/backend/logical_xor.in.cpp index f5c165492733c9..35206ea8fc6670 100644 --- a/ngraph/test/backend/logical_xor.in.cpp +++ b/ngraph/test/backend/logical_xor.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/lrn.in.cpp b/ngraph/test/backend/lrn.in.cpp index a73c823764bcd1..1b6d32903d95f4 100644 --- a/ngraph/test/backend/lrn.in.cpp +++ b/ngraph/test/backend/lrn.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/matmul.in.cpp b/ngraph/test/backend/matmul.in.cpp index 3bf1f007df6002..3f3c810acacb57 100644 --- a/ngraph/test/backend/matmul.in.cpp +++ b/ngraph/test/backend/matmul.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -441,6 +429,111 @@ NGRAPH_TEST(${BACKEND_NAME}, matmul_1x2x3_1x4x3x2) 256.f})); } +// 1D x 1D +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_3_false_false_param) +{ + Shape shape_in1{3}; + Shape shape_in2{3}; + Shape shape_out{}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_3_true_true_param) +{ + Shape shape_in1{3}; + Shape shape_in2{3}; + Shape shape_out{}; + + // For 1D inputs transpose is expected to be ignored + bool transpose_a = true; + bool transpose_b = true; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_3_false_false_const) +{ + Shape shape_in1{3}; + Shape shape_in2{3}; + Shape shape_out{}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_3_true_true_const) +{ + Shape shape_in1{3}; + Shape shape_in2{3}; + Shape shape_out{}; + + // For 1D inputs transpose is expected to be ignored + bool transpose_a = true; + bool transpose_b = true; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + // 2D x 1D NGRAPH_TEST(${BACKEND_NAME}, matmul_1_3_x_3_false_false_param) { @@ -468,6 +561,31 @@ NGRAPH_TEST(${BACKEND_NAME}, matmul_1_3_x_3_false_false_param) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, matmul_1_3_x_3_false_false_const) +{ + Shape shape_in1{1, 3}; + Shape shape_in2{3}; + Shape shape_out{1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, matmul_3_1_x_3_true_false_param) { Shape shape_in1{3, 1}; @@ -494,6 +612,31 @@ NGRAPH_TEST(${BACKEND_NAME}, matmul_3_1_x_3_true_false_param) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_1_x_3_true_false_const) +{ + Shape shape_in1{3, 1}; + Shape shape_in2{3}; + Shape shape_out{1}; + + bool transpose_a = true; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + // 1D x 2D NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_3_1_false_false_param) { @@ -521,6 +664,31 @@ NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_3_1_false_false_param) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_3_1_false_false_const) +{ + Shape shape_in1{3}; + Shape shape_in2{3, 1}; + Shape shape_out{1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_3_false_true_param) { Shape shape_in1{3}; @@ -546,3 +714,403 @@ NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_3_false_true_param) test_case.add_expected_output(shape_out, expected_result); test_case.run(); } + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_3_false_true_const) +{ + Shape shape_in1{3}; + Shape shape_in2{1, 3}; + Shape shape_out{1}; + + bool transpose_a = false; + bool transpose_b = true; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_3_true_true_param) +{ + Shape shape_in1{3}; + Shape shape_in2{1, 3}; + Shape shape_out{1}; + + bool transpose_a = true; + bool transpose_b = true; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_3_true_true_const) +{ + Shape shape_in1{3}; + Shape shape_in2{1, 3}; + Shape shape_out{1}; + + bool transpose_a = true; + bool transpose_b = true; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +// 3D x 1D +NGRAPH_TEST(${BACKEND_NAME}, matmul_1_1_3_x_3_false_false_param) +{ + Shape shape_in1{1, 1, 3}; + Shape shape_in2{3}; + Shape shape_out{1, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_1_1_3_x_3_false_false_const) +{ + Shape shape_in1{1, 1, 3}; + Shape shape_in2{3}; + Shape shape_out{1, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_1_3_1_x_3_true_false_param) +{ + Shape shape_in1{1, 3, 1}; + Shape shape_in2{3}; + Shape shape_out{1, 1}; + + bool transpose_a = true; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_1_3_1_x_3_true_false_const) +{ + Shape shape_in1{1, 3, 1}; + Shape shape_in2{3}; + Shape shape_out{1, 1}; + + bool transpose_a = true; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +// 1D x 3D +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_3_1_false_false_param) +{ + Shape shape_in1{3}; + Shape shape_in2{1, 3, 1}; + Shape shape_out{1, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_1_3_false_true_param) +{ + Shape shape_in1{3}; + Shape shape_in2{1, 1, 3}; + Shape shape_out{1, 1}; + + bool transpose_a = false; + bool transpose_b = true; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_3_1_false_false_const) +{ + Shape shape_in1{3}; + Shape shape_in2{1, 3, 1}; + Shape shape_out{1, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_1_1_3_false_true_const) +{ + Shape shape_in1{3}; + Shape shape_in2{1, 1, 3}; + Shape shape_out{1, 1}; + + bool transpose_a = false; + bool transpose_b = true; + + std::vector inputs_a{1, 2, 3}; + std::vector inputs_b{1, 2, 3}; + std::vector expected_result{14.}; + + auto A = make_shared(element::f32, shape_in1); + auto B = make_shared(element::f32, shape_in2, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_2_2_1_3_x_3_false_false_param) +{ + Shape shape_a{2, 2, 1, 3}; + Shape shape_b{3}; + Shape shape_out{2, 2, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a(shape_size(shape_a)); + std::iota(inputs_a.begin(), inputs_a.end(), 0); + + std::vector inputs_b(shape_size(shape_b)); + std::iota(inputs_b.begin(), inputs_b.end(), 0); + + std::vector expected_result{5, 14, 23, 32}; + + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_2_2_1_3_x_3_false_false_const) +{ + Shape shape_a{2, 2, 1, 3}; + Shape shape_b{3}; + Shape shape_out{2, 2, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a(shape_size(shape_a)); + std::iota(inputs_a.begin(), inputs_a.end(), 0); + + std::vector inputs_b(shape_size(shape_b)); + std::iota(inputs_b.begin(), inputs_b.end(), 0); + + std::vector expected_result{5, 14, 23, 32}; + + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_2_2_3_1_false_false_param) +{ + Shape shape_a{3}; + Shape shape_b{2, 2, 3, 1}; + Shape shape_out{2, 2, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a(shape_size(shape_a)); + std::iota(inputs_a.begin(), inputs_a.end(), 0); + + std::vector inputs_b(shape_size(shape_b)); + std::iota(inputs_b.begin(), inputs_b.end(), 0); + + std::vector expected_result{5, 14, 23, 32}; + + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A, B}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + test_case.add_input(inputs_b); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, matmul_3_x_2_2_3_1_false_false_const) +{ + Shape shape_a{3}; + Shape shape_b{2, 2, 3, 1}; + Shape shape_out{2, 2, 1}; + + bool transpose_a = false; + bool transpose_b = false; + + std::vector inputs_a(shape_size(shape_a)); + std::iota(inputs_a.begin(), inputs_a.end(), 0); + + std::vector inputs_b(shape_size(shape_b)); + std::iota(inputs_b.begin(), inputs_b.end(), 0); + + std::vector expected_result{5, 14, 23, 32}; + + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b, inputs_b); + auto matmul = make_shared(A, B, transpose_a, transpose_b); + auto f = make_shared(matmul, ParameterVector{A}); + + auto test_case = test::TestCase(f); + test_case.add_input(inputs_a); + + test_case.add_expected_output(shape_out, expected_result); + test_case.run(); +} diff --git a/ngraph/test/backend/max_pool.in.cpp b/ngraph/test/backend/max_pool.in.cpp index d116e184e0de12..6260436e31aabb 100644 --- a/ngraph/test/backend/max_pool.in.cpp +++ b/ngraph/test/backend/max_pool.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/maximum.in.cpp b/ngraph/test/backend/maximum.in.cpp index 1fa2e5968208c6..1a49269f79c9ae 100644 --- a/ngraph/test/backend/maximum.in.cpp +++ b/ngraph/test/backend/maximum.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/minimum.in.cpp b/ngraph/test/backend/minimum.in.cpp index 49ffaa7db1ce22..9383c6ed74eef8 100644 --- a/ngraph/test/backend/minimum.in.cpp +++ b/ngraph/test/backend/minimum.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/multiple_backends.in.cpp b/ngraph/test/backend/multiple_backends.in.cpp index b54938e1c88a5d..7c1314cc50db09 100644 --- a/ngraph/test/backend/multiple_backends.in.cpp +++ b/ngraph/test/backend/multiple_backends.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/multiple_result.in.cpp b/ngraph/test/backend/multiple_result.in.cpp index 54cfbfd9b06941..1d8e4c8f78f882 100644 --- a/ngraph/test/backend/multiple_result.in.cpp +++ b/ngraph/test/backend/multiple_result.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/multiply.in.cpp b/ngraph/test/backend/multiply.in.cpp index d9c9999af1554e..04c88f33f91ca3 100644 --- a/ngraph/test/backend/multiply.in.cpp +++ b/ngraph/test/backend/multiply.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -76,3 +64,96 @@ NGRAPH_TEST(${BACKEND_NAME}, multiply_overload) test_case.add_expected_output(shape, {5, 12, 21, 32}); test_case.run(); } + +namespace +{ + template + void multiply_broadcst() + { + const auto element_type = ngraph::element::from(); + const Shape shape_a{3, 2, 1}; + const Shape shape_b{1, 6}; + const Shape shape_o{3, 2, 6}; + std::vector in_a{12, 24, 36, 48, 60, 72}; + std::vector in_b{1, 2, 3, 4, 6, 1}; + // clang-format off + std::vector out{12, 24, 36, 48, 72, 12, + 24, 48, 72, 96, 144, 24, + + 36, 72, 108, 144, 216, 36, + 48, 96, 144, 192, 288, 48, + + 60, 120, 180, 240, 360, 60, + 72, 144, 216, 288, 432, 72}; + // clang-format on + + auto A = make_shared(element_type, shape_a); + auto B = make_shared(element_type, shape_b); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element_type, shape_a, in_a.data()); + auto b = backend->create_tensor(element_type, shape_b, in_b.data()); + auto result = backend->create_tensor(element_type, shape_o); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_EQ(out, read_vector(result)); + } +} // namespace + +NGRAPH_TEST(${BACKEND_NAME}, multiply_int32_broadcast) +{ + multiply_broadcst(); +} + +NGRAPH_TEST(${BACKEND_NAME}, multiply_f32_broadcast) +{ + multiply_broadcst(); +} + +NGRAPH_TEST(${BACKEND_NAME}, multiply_int32_scalar) +{ + Shape shape{}; + + auto A = make_shared(element::i32, shape); + auto B = make_shared(element::i32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element::i32, shape); + copy_data(a, vector{2}); + auto b = backend->create_tensor(element::i32, shape); + copy_data(b, vector{8}); + auto result = backend->create_tensor(element::i32, shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_EQ(vector{16}, read_vector(result)); +} + +NGRAPH_TEST(${BACKEND_NAME}, multiply_f32_scalar) +{ + Shape shape{}; + + auto A = make_shared(element::f32, shape); + auto B = make_shared(element::f32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element::f32, shape); + copy_data(a, vector{3.1}); + auto b = backend->create_tensor(element::f32, shape); + copy_data(b, vector{8}); + auto result = backend->create_tensor(element::f32, shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_TRUE(test::all_close_f((vector{24.8}), read_vector(result))); +} diff --git a/ngraph/test/backend/mvn.in.cpp b/ngraph/test/backend/mvn.in.cpp index 22773568864e98..2a0dd89b218897 100644 --- a/ngraph/test/backend/mvn.in.cpp +++ b/ngraph/test/backend/mvn.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/negative.in.cpp b/ngraph/test/backend/negative.in.cpp index 7bfc5ccef7ec92..a092fe6f7607a4 100644 --- a/ngraph/test/backend/negative.in.cpp +++ b/ngraph/test/backend/negative.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/node_name.in.cpp b/ngraph/test/backend/node_name.in.cpp index 6d3adc652a2f4e..06c402a63b84a2 100644 --- a/ngraph/test/backend/node_name.in.cpp +++ b/ngraph/test/backend/node_name.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/non_max_suppression.in.cpp b/ngraph/test/backend/non_max_suppression.in.cpp index a57d2aab44fbd9..b0485d54179698 100644 --- a/ngraph/test/backend/non_max_suppression.in.cpp +++ b/ngraph/test/backend/non_max_suppression.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/non_zero.in.cpp b/ngraph/test/backend/non_zero.in.cpp index 589a73feca8af5..855f8efa4d16a0 100644 --- a/ngraph/test/backend/non_zero.in.cpp +++ b/ngraph/test/backend/non_zero.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/normalize_l2.in.cpp b/ngraph/test/backend/normalize_l2.in.cpp index 843678a075e304..863476280e6e62 100644 --- a/ngraph/test/backend/normalize_l2.in.cpp +++ b/ngraph/test/backend/normalize_l2.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/numeric.in.cpp b/ngraph/test/backend/numeric.in.cpp index e7d07c979d8be7..f85f336d16cf6d 100644 --- a/ngraph/test/backend/numeric.in.cpp +++ b/ngraph/test/backend/numeric.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/one_hot.in.cpp b/ngraph/test/backend/one_hot.in.cpp index 26c233c72b9c88..30fda245ed5571 100644 --- a/ngraph/test/backend/one_hot.in.cpp +++ b/ngraph/test/backend/one_hot.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -207,10 +195,7 @@ NGRAPH_TEST(${BACKEND_NAME}, one_hot_on_off_float) // Create some tensors for input/output auto a = backend->create_tensor(element::i32, shape_a); - copy_data(a, - vector{ - 0, 1, 1, 2, 1, 0, 0, 2, 1, - }); + copy_data(a, vector{0, 1, 1, 2, 1, 0, 0, 2, 1}); auto result = backend->create_tensor(element::f32, shape_r); auto handle = backend->compile(f); diff --git a/ngraph/test/backend/pad.in.cpp b/ngraph/test/backend/pad.in.cpp index 746cf732fcdec6..3fe822da871b0f 100644 --- a/ngraph/test/backend/pad.in.cpp +++ b/ngraph/test/backend/pad.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -30,6 +18,504 @@ using namespace ngraph; static string s_manifest = "${MANIFEST}"; +namespace +{ + template + struct Params + { + using Data = ::ngraph::test::NDArrayBase; + using Pads = ::ngraph::test::NDArrayBase; + + Params(Data input_data, + Pads pads_begin, + Pads pads_end, + Data expected_output, + op::PadMode pad_mode, + ValueType constant_value) + : input_data{std::move(input_data)} + , pads_begin{std::move(pads_begin)} + , pads_end{std::move(pads_end)} + , expected_output{std::move(expected_output)} + , pad_mode{pad_mode} + , use_const_value{true} + , constant_value{constant_value} + { + } + + Params(Data input_data, + Pads pads_begin, + Pads pads_end, + Data expected_output, + op::PadMode pad_mode) + : input_data{std::move(input_data)} + , pads_begin{std::move(pads_begin)} + , pads_end{std::move(pads_end)} + , expected_output{std::move(expected_output)} + , pad_mode{pad_mode} + { + } + + Data input_data; + Pads pads_begin; + Pads pads_end; + Data expected_output; + op::PadMode pad_mode; + bool use_const_value{false}; + ValueType constant_value{}; + }; + + class PadBackendTest : public ::testing::TestWithParam> + { + public: + static void execute_test(const Params& params) + { + const auto data = + make_shared(element::f32, params.input_data.get_shape()); + + const auto pads_begin = op::Constant::create( + element::i64, params.pads_begin.get_shape(), params.pads_begin.get_vector()); + + const auto pads_end = op::Constant::create( + element::i64, params.pads_end.get_shape(), params.pads_end.get_vector()); + + auto f = [&] { + if (params.use_const_value) + { + // pad_value should be used only in CONSTANT mode + const auto pad_val = + op::Constant::create(element::f32, Shape{}, {params.constant_value}); + + return make_shared( + make_shared( + data, pads_begin, pads_end, pad_val, params.pad_mode), + ParameterVector{data}); + } + + return make_shared( + make_shared(data, pads_begin, pads_end, params.pad_mode), + ParameterVector{data}); + }(); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element::f32, params.input_data.get_shape()); + copy_data(a, params.input_data.get_vector()); + auto result = backend->create_tensor(element::f32, params.expected_output.get_shape()); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a}); + EXPECT_TRUE(test::all_close_f(params.expected_output.get_vector(), + read_vector(result), + MIN_FLOAT_TOLERANCE_BITS)); + } + }; +} + +NGRAPH_TEST_P(${BACKEND_NAME}, PadBackendTest, PadBackendTestForSpec) +{ + execute_test(GetParam()); +} + +NGRAPH_INSTANTIATE_TEST_CASE_P( + ${BACKEND_NAME}, + pad_1d_constant_const_value_provided, + PadBackendTest, + testing::Values( + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({4}), + test::NDArray({5}), + test::NDArray( + {2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6, 2112, 2112, 2112, 2112, 2112}), + op::PadMode::CONSTANT, + 2112}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({4}), + test::NDArray({0}), + test::NDArray({2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6}), + op::PadMode::CONSTANT, + 2112}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({0}), + test::NDArray({3}), + test::NDArray({1, 2, 3, 4, 5, 6, 2112, 2112, 2112}), + op::PadMode::CONSTANT, + 2112})); + +NGRAPH_INSTANTIATE_TEST_CASE_P( + ${BACKEND_NAME}, + pad_1d_constant_use_default_const, + PadBackendTest, + testing::Values( + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({4}), + test::NDArray({5}), + test::NDArray({0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0}), + op::PadMode::CONSTANT}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({4}), + test::NDArray({0}), + test::NDArray({0, 0, 0, 0, 1, 2, 3, 4, 5, 6}), + op::PadMode::CONSTANT}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({0}), + test::NDArray({3}), + test::NDArray({1, 2, 3, 4, 5, 6, 0, 0, 0}), + op::PadMode::CONSTANT})); + +NGRAPH_INSTANTIATE_TEST_CASE_P( + ${BACKEND_NAME}, + pad_2d_constant_const_value_provided, + PadBackendTest, + testing::Values(Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({1, 2}), + test::NDArray({3, 4}), + test::NDArray({ + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112}, + {2112, 2112, 1, 2, 2112, 2112, 2112, 2112}, + {2112, 2112, 3, 4, 2112, 2112, 2112, 2112}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112}, + }), + op::PadMode::CONSTANT, + 2112}, + Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({1, 2}), + test::NDArray({0, 0}), + test::NDArray({ + {2112, 2112, 2112, 2112}, + {2112, 2112, 1, 2}, + {2112, 2112, 3, 4}, + }), + op::PadMode::CONSTANT, + 2112}, + Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({0, 0}), + test::NDArray({1, 2}), + test::NDArray({ + {1, 2, 2112, 2112}, + {3, 4, 2112, 2112}, + {2112, 2112, 2112, 2112}, + }), + op::PadMode::CONSTANT, + 2112})); + +NGRAPH_INSTANTIATE_TEST_CASE_P(${BACKEND_NAME}, + pad_2d_constant_use_default_const, + PadBackendTest, + testing::Values(Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({1, 2}), + test::NDArray({3, 4}), + test::NDArray({ + {0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 1, 2, 0, 0, 0, 0}, + {0, 0, 3, 4, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0}, + }), + op::PadMode::CONSTANT}, + Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({1, 2}), + test::NDArray({0, 0}), + test::NDArray({ + {0, 0, 0, 0}, + {0, 0, 1, 2}, + {0, 0, 3, 4}, + }), + op::PadMode::CONSTANT}, + Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({0, 0}), + test::NDArray({1, 2}), + test::NDArray({ + {1, 2, 0, 0}, + {3, 4, 0, 0}, + {0, 0, 0, 0}, + }), + op::PadMode::CONSTANT})); + +NGRAPH_INSTANTIATE_TEST_CASE_P( + ${BACKEND_NAME}, + pad_1d_edge, + PadBackendTest, + testing::Values(Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({2}), + test::NDArray({3}), + test::NDArray({1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6}), + op::PadMode::EDGE}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({1}), + test::NDArray({0}), + test::NDArray({1, 1, 2, 3, 4, 5, 6}), + op::PadMode::EDGE}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({0}), + test::NDArray({2}), + test::NDArray({1, 2, 3, 4, 5, 6, 6, 6}), + op::PadMode::EDGE})); + +NGRAPH_INSTANTIATE_TEST_CASE_P(${BACKEND_NAME}, + pad_2d_edge, + PadBackendTest, + testing::Values(Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({1, 2}), + test::NDArray({2, 1}), + test::NDArray({ + {1, 1, 1, 2, 2}, + {1, 1, 1, 2, 2}, + {3, 3, 3, 4, 4}, + {3, 3, 3, 4, 4}, + {3, 3, 3, 4, 4}, + }), + op::PadMode::EDGE}, + Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({1, 2}), + test::NDArray({0, 0}), + test::NDArray({ + {1, 1, 1, 2}, + {1, 1, 1, 2}, + {3, 3, 3, 4}, + }), + op::PadMode::EDGE}, + Params{test::NDArray({ + {1, 2}, + {3, 4}, + }), + test::NDArray({0, 0}), + test::NDArray({2, 1}), + test::NDArray({ + {1, 2, 2}, + {3, 4, 4}, + {3, 4, 4}, + {3, 4, 4}, + }), + op::PadMode::EDGE})); + +NGRAPH_INSTANTIATE_TEST_CASE_P( + ${BACKEND_NAME}, + pad_1d_reflect, + PadBackendTest, + testing::Values(Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({2}), + test::NDArray({3}), + test::NDArray({3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3}), + op::PadMode::REFLECT}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({1}), + test::NDArray({0}), + test::NDArray({2, 1, 2, 3, 4, 5, 6}), + op::PadMode::REFLECT}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({0}), + test::NDArray({2}), + test::NDArray({1, 2, 3, 4, 5, 6, 5, 4}), + op::PadMode::REFLECT})); + +NGRAPH_INSTANTIATE_TEST_CASE_P(${BACKEND_NAME}, + pad_2d_reflect, + PadBackendTest, + testing::Values(Params{test::NDArray({ + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9}, + }), + test::NDArray({1, 2}), + test::NDArray({2, 1}), + test::NDArray({ + {6, 5, 4, 5, 6, 5}, + {3, 2, 1, 2, 3, 2}, + {6, 5, 4, 5, 6, 5}, + {9, 8, 7, 8, 9, 8}, + {6, 5, 4, 5, 6, 5}, + {3, 2, 1, 2, 3, 2}, + }), + op::PadMode::REFLECT}, + Params{test::NDArray({ + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9}, + }), + test::NDArray({1, 2}), + test::NDArray({0, 0}), + test::NDArray({ + {6, 5, 4, 5, 6}, + {3, 2, 1, 2, 3}, + {6, 5, 4, 5, 6}, + {9, 8, 7, 8, 9}, + }), + op::PadMode::REFLECT}, + Params{test::NDArray({ + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9}, + }), + test::NDArray({0, 0}), + test::NDArray({2, 1}), + test::NDArray({ + {1, 2, 3, 2}, + {4, 5, 6, 5}, + {7, 8, 9, 8}, + {4, 5, 6, 5}, + {1, 2, 3, 2}, + }), + op::PadMode::REFLECT})); + +NGRAPH_INSTANTIATE_TEST_CASE_P( + ${BACKEND_NAME}, + pad_1d_symmetric, + PadBackendTest, + testing::Values(Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({2}), + test::NDArray({3}), + test::NDArray({2, 1, 1, 2, 3, 4, 5, 6, 6, 5, 4}), + op::PadMode::SYMMETRIC}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({1}), + test::NDArray({0}), + test::NDArray({1, 1, 2, 3, 4, 5, 6}), + op::PadMode::SYMMETRIC}, + Params{test::NDArray({1, 2, 3, 4, 5, 6}), + test::NDArray({0}), + test::NDArray({2}), + test::NDArray({1, 2, 3, 4, 5, 6, 6, 5}), + op::PadMode::SYMMETRIC})); + +NGRAPH_INSTANTIATE_TEST_CASE_P(${BACKEND_NAME}, + pad_2d_symmetric, + PadBackendTest, + testing::Values(Params{test::NDArray({ + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9}, + }), + test::NDArray({1, 2}), + test::NDArray({2, 1}), + test::NDArray({ + {2, 1, 1, 2, 3, 3}, + {2, 1, 1, 2, 3, 3}, + {5, 4, 4, 5, 6, 6}, + {8, 7, 7, 8, 9, 9}, + {8, 7, 7, 8, 9, 9}, + {5, 4, 4, 5, 6, 6}, + }), + op::PadMode::SYMMETRIC}, + Params{test::NDArray({ + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9}, + }), + test::NDArray({1, 2}), + test::NDArray({0, 0}), + test::NDArray({ + {2, 1, 1, 2, 3}, + {2, 1, 1, 2, 3}, + {5, 4, 4, 5, 6}, + {8, 7, 7, 8, 9}, + + }), + op::PadMode::SYMMETRIC}, + Params{test::NDArray({ + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9}, + }), + test::NDArray({0, 0}), + test::NDArray({2, 1}), + test::NDArray({ + {1, 2, 3, 3}, + {4, 5, 6, 6}, + {7, 8, 9, 9}, + {7, 8, 9, 9}, + {4, 5, 6, 6}, + }), + op::PadMode::SYMMETRIC})); + +NGRAPH_TEST(${BACKEND_NAME}, pad_to_large_symmetric_padding) +{ + const auto params_to_large = Params{test::NDArray({ + {1, 2}, + {4, 5}, + }), + test::NDArray({0, 3}), + test::NDArray({0, 0}), + test::NDArray({ + {0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0}, + }), + op::PadMode::SYMMETRIC}; + + EXPECT_ANY_THROW(PadBackendTest::execute_test(params_to_large)); + + const auto params_ok = Params{test::NDArray({ + {1, 2}, + {4, 5}, + }), + test::NDArray({0, 2}), + test::NDArray({0, 0}), + test::NDArray({ + {2, 1, 1, 2}, + {5, 4, 4, 5}, + }), + op::PadMode::SYMMETRIC}; + + EXPECT_NO_THROW(PadBackendTest::execute_test(params_ok)); +} +NGRAPH_TEST(${BACKEND_NAME}, pad_to_large_reflect_padding) +{ + const auto params_to_large = Params{test::NDArray({ + {1, 2}, + {4, 5}, + }), + test::NDArray({0, 2}), + test::NDArray({0, 0}), + test::NDArray({ + {0, 0, 0, 0}, + {0, 0, 0, 0}, + }), + op::PadMode::REFLECT}; + + EXPECT_ANY_THROW(PadBackendTest::execute_test(params_to_large)); + + const auto params_ok = Params{test::NDArray({ + {1, 2}, + {4, 5}, + }), + test::NDArray({0, 1}), + test::NDArray({0, 0}), + test::NDArray({ + {2, 1, 2}, + {5, 4, 5}, + }), + op::PadMode::REFLECT}; + + EXPECT_NO_THROW(PadBackendTest::execute_test(params_ok)); +} + NGRAPH_TEST(${BACKEND_NAME}, pad_exterior_1d) { const Shape data_shape{6}; @@ -437,7 +923,7 @@ NGRAPH_TEST(${BACKEND_NAME}, pad_reflect_1d_bottom_neg_bigger_than_tensor) std::vector({4, 3}), read_vector(result), MIN_FLOAT_TOLERANCE_BITS)); } -NGRAPH_TEST(${BACKEND_NAME}, pad_reflect_1d_multi_reflect) +NGRAPH_TEST(${BACKEND_NAME}, DISABLED_pad_reflect_1d_multi_reflect) { const Shape data_shape{3}; const auto data = make_shared(element::f32, data_shape); diff --git a/ngraph/test/backend/parameter_as_output.in.cpp b/ngraph/test/backend/parameter_as_output.in.cpp index a0d62861c75d07..c7c4db77f00b65 100644 --- a/ngraph/test/backend/parameter_as_output.in.cpp +++ b/ngraph/test/backend/parameter_as_output.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/partial_slice.in.cpp b/ngraph/test/backend/partial_slice.in.cpp index 5b7a4d8a76d1d7..f3a759d190a484 100644 --- a/ngraph/test/backend/partial_slice.in.cpp +++ b/ngraph/test/backend/partial_slice.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/power.in.cpp b/ngraph/test/backend/power.in.cpp index 11d6e9b1b9ff10..0a54b815a80b0a 100644 --- a/ngraph/test/backend/power.in.cpp +++ b/ngraph/test/backend/power.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -60,3 +48,56 @@ NGRAPH_TEST(${BACKEND_NAME}, power) test_case.add_expected_output(shape, {1, 1, 729, 125}); test_case.run(); } + +NGRAPH_TEST(${BACKEND_NAME}, power_broadcasted) +{ + Shape shape_a{2, 1, 5}; + Shape shape_b{2, 1}; + Shape shape_r{2, 2, 5}; + + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + std::vector a{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + std::vector b{1, 2}; + + auto test_case = test::TestCase(f); + test_case.add_multiple_inputs({a, b}); + test_case.add_expected_output(shape_r, {1, 2, 3, 4, 5, 1, 4, 9, 16, 25, + 6, 7, 8, 9, 10, 36, 49, 64, 81, 100}); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, power_scalars) +{ + Shape shape{}; + auto A = make_shared(element::f32, shape); + auto B = make_shared(element::f32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + std::vector a{2}; + std::vector b{3}; + + auto test_case = test::TestCase(f); + test_case.add_multiple_inputs({a, b}); + test_case.add_expected_output(shape, {8}); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, power_vector_and_scalar) +{ + Shape shape_a{2, 2}; + Shape shape_b{}; + auto A = make_shared(element::f32, shape_a); + auto B = make_shared(element::f32, shape_b); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + std::vector a{2, 3, 4, 5}; + std::vector b{2}; + + auto test_case = test::TestCase(f); + test_case.add_multiple_inputs({a, b}); + test_case.add_expected_output(shape_a, {4, 9, 16, 25}); + test_case.run(); +} \ No newline at end of file diff --git a/ngraph/test/backend/proposal.in.cpp b/ngraph/test/backend/proposal.in.cpp index e169472b5ab2fc..c8dfff87770e9d 100644 --- a/ngraph/test/backend/proposal.in.cpp +++ b/ngraph/test/backend/proposal.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/psroi_pooling.in.cpp b/ngraph/test/backend/psroi_pooling.in.cpp index 6c21c7f775cde6..eb54834a4443e5 100644 --- a/ngraph/test/backend/psroi_pooling.in.cpp +++ b/ngraph/test/backend/psroi_pooling.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/backend/quantize_dequantize.in.cpp b/ngraph/test/backend/quantize_dequantize.in.cpp index 9386b5af196795..750f2ef91d21cc 100644 --- a/ngraph/test/backend/quantize_dequantize.in.cpp +++ b/ngraph/test/backend/quantize_dequantize.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/range.in.cpp b/ngraph/test/backend/range.in.cpp index 9bcc63816e876e..3585bb3d4a4a5a 100644 --- a/ngraph/test/backend/range.in.cpp +++ b/ngraph/test/backend/range.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/recurrent_cells.in.cpp b/ngraph/test/backend/recurrent_cells.in.cpp new file mode 100644 index 00000000000000..0e732c11281095 --- /dev/null +++ b/ngraph/test/backend/recurrent_cells.in.cpp @@ -0,0 +1,671 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +// clang-format off +#ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS +#define DEFAULT_FLOAT_TOLERANCE_BITS ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS +#endif +// clang-format on + +#include "gtest/gtest.h" +#include "ngraph/check.hpp" +#include "ngraph/ngraph.hpp" +#include "ngraph/opsets/opset4.hpp" + +#include "util/engine/test_engines.hpp" +#include "util/test_case.hpp" +#include "util/test_control.hpp" +#include "util/test_tools.hpp" + +using namespace std; +using namespace ngraph; + +static string s_manifest = "${MANIFEST}"; + +using TestEngine = test::ENGINE_CLASS_NAME(${BACKEND_NAME}); + +NGRAPH_TEST(${BACKEND_NAME}, lstm_cell_zero_bias_default_attrs) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + const size_t gates_count = 4; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto W = + make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); + const auto R = + make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto C_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); + + const auto lstm_cell = make_shared( + X, + H_t, + C_t, + op::util::convert_lstm_node_format(W, op::util::LSTMWeightsFormat::IOFC), + op::util::convert_lstm_node_format(R, op::util::LSTMWeightsFormat::IOFC), + op::util::convert_lstm_node_format(B, op::util::LSTMWeightsFormat::IOFC), + hidden_size); + + auto ht_function = make_shared(OutputVector{lstm_cell->output(0)}, + ParameterVector{X, H_t, C_t, W, R, B}); + auto ht_test_case = test::TestCase(ht_function); + + // X + vector in_X{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f}; + // W + vector in_W{3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, + 7.3950343e-02f, 3.8063636e-01f, 9.6921772e-01f, 9.6897459e-01f, + 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, + 4.0472135e-01f, 6.8342745e-01f, 8.3432144e-01f, 4.4928190e-01f, + 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, + 2.1716513e-01f, 2.7473119e-01f, 3.3999152e-02f, 9.6835363e-01f, + 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f}; + // R + vector in_R{ + 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f}; + // Ht + vector in_Ht{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f}; + // Ct + vector in_Ct{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f}; + // B + vector in_B(gates_count * hidden_size, 0.f); + + ht_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); + ht_test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f}); + ht_test_case.run(); + + auto ct_function = make_shared(OutputVector{lstm_cell->output(1)}, + ParameterVector{X, H_t, C_t, W, R, B}); + auto ct_test_case = test::TestCase(ct_function); + ct_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); + ct_test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f}); + ct_test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, lstm_cell_bias_default_attrs) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + const size_t gates_count = 4; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto W = + make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); + const auto R = + make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto C_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); + + const auto lstm_cell = make_shared(X, H_t, C_t, W, R, B, hidden_size); + + auto ht_function = make_shared(OutputVector{lstm_cell->output(0)}, + ParameterVector{X, H_t, C_t, W, R, B}); + auto ht_test_case = test::TestCase(ht_function); + + // X + vector in_X{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f}; + // W + vector in_W{3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, + 7.3950343e-02f, 3.8063636e-01f, 9.6921772e-01f, 9.6897459e-01f, + 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, + 4.0472135e-01f, 6.8342745e-01f, 8.3432144e-01f, 4.4928190e-01f, + 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, + 2.1716513e-01f, 2.7473119e-01f, 3.3999152e-02f, 9.6835363e-01f, + 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f}; + // R + vector in_R{ + 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f}; + // Ht + vector in_Ht{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f}; + // Ct + vector in_Ct{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f}; + // B + vector in_B{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f}; + + ht_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); + ht_test_case.add_expected_output(Shape{batch_size, hidden_size}, + {0.81014400720596313, + 0.76665538549423218, + 0.82509011030197144, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287}); + ht_test_case.run(); + + auto ct_function = make_shared(OutputVector{lstm_cell->output(1)}, + ParameterVector{X, H_t, C_t, W, R, B}); + auto ct_test_case = test::TestCase(ct_function); + ct_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); + ct_test_case.add_expected_output(Shape{batch_size, hidden_size}, + {1.6800162792205811, + 1.1150213479995728, + 1.4578367471694946, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642}); + ct_test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, lstm_cell_bias_clip) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + const size_t gates_count = 4; + const float clip_threshold = 3.5f; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto W = + make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); + const auto R = + make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto C_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); + + const auto lstm_cell = make_shared(X, + H_t, + C_t, + W, + R, + B, + hidden_size, + vector{"sigmoid", "tanh", "tanh"}, + vector{}, + vector{}, + clip_threshold); + auto ht_function = make_shared(OutputVector{lstm_cell->output(0)}, + ParameterVector{X, H_t, C_t, W, R, B}); + auto ht_test_case = test::TestCase(ht_function); + + // X + vector in_X{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f}; + // W + vector in_W{3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, + 7.3950343e-02f, 3.8063636e-01f, 9.6921772e-01f, 9.6897459e-01f, + 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, + 4.0472135e-01f, 6.8342745e-01f, 8.3432144e-01f, 4.4928190e-01f, + 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, + 2.1716513e-01f, 2.7473119e-01f, 3.3999152e-02f, 9.6835363e-01f, + 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f}; + // R + vector in_R{ + 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f}; + // Ht + vector in_Ht{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f}; + // Ct + vector in_Ct{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f}; + // B + vector in_B{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f}; + + ht_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); + ht_test_case.add_expected_output(Shape{batch_size, hidden_size}, + {0.81014400720596313, + 0.76665538549423218, + 0.82387429475784302, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287}); + ht_test_case.run(); + + auto ct_function = make_shared(OutputVector{lstm_cell->output(1)}, + ParameterVector{X, H_t, C_t, W, R, B}); + auto ct_test_case = test::TestCase(ct_function); + ct_test_case.add_multiple_inputs(vector>{in_X, in_Ht, in_Ct, in_W, in_R, in_B}); + ct_test_case.add_expected_output(Shape{batch_size, hidden_size}, + {1.6800162792205811, + 1.1150213479995728, + 1.4510968923568726, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642}); + ct_test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, rnn_cell_zero_bias_default_attrs) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto W = make_shared(element::f32, Shape{hidden_size, input_size}); + const auto R = make_shared(element::f32, Shape{hidden_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{hidden_size}); + + const auto rnn_cell = make_shared(X, H_t, W, R, B, hidden_size); + auto function = make_shared(rnn_cell, ParameterVector{X, H_t, W, R, B}); + + auto test_case = test::TestCase(function); + // X + test_case.add_input( + {0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}); + // Ht + test_case.add_input( + {0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}); + // W + test_case.add_input({0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}); + // R + test_case.add_input({0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}); + // B + test_case.add_input({0.0f, 0.0f, 0.0f}); + + test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {0.9408395f, 0.53823817f, 0.84270686f, 0.98932856f, 0.768665f, 0.90461975f}); + + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, rnn_cell_bias_clip) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + float clip = 2.88f; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto W = make_shared(element::f32, Shape{hidden_size, input_size}); + const auto R = make_shared(element::f32, Shape{hidden_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{hidden_size}); + + const auto rnn_cell = make_shared(X, + H_t, + W, + R, + B, + hidden_size, + vector{"tanh"}, + vector{}, + vector{}, + clip); + auto function = make_shared(rnn_cell, ParameterVector{X, H_t, W, R, B}); + + auto test_case = test::TestCase(function); + // X + test_case.add_input( + {0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}); + // Ht + test_case.add_input( + {0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}); + // W + test_case.add_input({0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}); + // R + test_case.add_input({0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}); + // B + test_case.add_input({1.0289404f, 1.6362579f, 0.4370661f}); + + test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {0.9922437f, 0.97749525f, 0.9312212f, 0.9937176f, 0.9901317f, 0.95906746f}); + + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, rnn_cell_sigmoid_activation_function) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + float clip = 2.88f; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto W = make_shared(element::f32, Shape{hidden_size, input_size}); + const auto R = make_shared(element::f32, Shape{hidden_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{hidden_size}); + + const auto rnn_cell = make_shared(X, + H_t, + W, + R, + B, + hidden_size, + vector{"sigmoid"}, + vector{}, + vector{}, + clip); + auto function = make_shared(rnn_cell, ParameterVector{X, H_t, W, R, B}); + + auto test_case = test::TestCase(function); + // X + test_case.add_input( + {0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}); + // Ht + test_case.add_input( + {0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}); + // W + test_case.add_input({0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}); + // R + test_case.add_input({0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}); + // B + test_case.add_input({1.0289404f, 1.6362579f, 0.4370661f}); + + test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {0.94126844f, 0.9036043f, 0.841243f, 0.9468489f, 0.934215f, 0.873708f}); + + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, gru_cell_bias_clip) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + const size_t gates_count = 3; + float clip = 2.88f; + bool linear_before_reset = false; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto W = + make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); + const auto R = + make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{gates_count * hidden_size}); + + const auto gru_cell = make_shared(X, + H_t, + W, + R, + B, + hidden_size, + vector{"sigmoid", "tanh"}, + vector{}, + vector{}, + clip, + linear_before_reset); + auto function = make_shared(gru_cell, ParameterVector{X, H_t, W, R, B}); + + auto test_case = test::TestCase(function); + // X + test_case.add_input( + {0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}); + + // Ht + test_case.add_input( + {0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}); + + // W + test_case.add_input( + {0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, + 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, + 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, + 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}); + + // R + test_case.add_input( + {0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, 0.99669236f, + 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, 0.40111724f, 0.37497616f, + 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, 0.791677f, + 0.76497287f, 0.9895242f, 0.7845312f, 0.51267904f, 0.49030215f, 0.08498167f}); + + // B (the sum of biases for W and R) + test_case.add_input({ + 0.8286678f + 0.9175602f, + 0.9153158f + 0.14958014f, + 0.9581612f + 0.49230585f, + 0.6639213f + 0.63162816f, + 0.84239805f + 0.4161903f, + 0.5282445f + 0.22148274f, + 0.14153397f + 0.50496656f, + 0.22404431f + 0.34798595f, + 0.6549655f + 0.6699164f, + }); + + test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {0.48588726f, 0.99670005f, 0.83759373f, 0.5023099f, 0.89410484f, 0.60011315f}); + + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, gru_cell_linear_before_reset) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + const size_t gates_count = 3; + float clip = 2.88f; + bool linear_before_reset = true; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto W = + make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); + const auto R = + make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{(gates_count + 1) * hidden_size}); + + const auto gru_cell = make_shared(X, + H_t, + W, + R, + B, + hidden_size, + vector{"sigmoid", "tanh"}, + vector{}, + vector{}, + clip, + linear_before_reset); + auto function = make_shared(gru_cell, ParameterVector{X, H_t, W, R, B}); + + auto test_case = test::TestCase(function); + // X + test_case.add_input( + {0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}); + // Ht + test_case.add_input( + {0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}); + + // W + test_case.add_input( + {0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, 0.5468904f, + 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, 0.56943774f, 0.7475505f, + 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, 0.53454477f, + 0.15974349f, 0.5804805f, 0.14303213f, 0.07514781f, 0.5865731f, 0.76409274f}); + // R + test_case.add_input( + {0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, 0.06308217f, + 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, 0.63143945f, 0.00277612f, + 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, 0.10751773f, + 0.18332677f, 0.1326976f, 0.9998985f, 0.19263928f, 0.10979804f, 0.52575564f}); + + // B (the sum of biases for W and R for z and r gates, and separately for W and R for h gate) + test_case.add_input({0.61395123f, // 0.09875853f + 0.5151927f, + 1.08667738f, // 0.37801138f + 0.708666f, + 1.32600244f, // 0.7729636f + 0.55303884f, + 0.81917698f, // 0.78493553f + 0.03424145f, + 1.37736335f, // 0.5662702f + 0.81109315f, + 0.42931147f, // 0.12406381f + 0.30524766f, + 0.66729516f, + 0.7752771f, + 0.78819966f, + 0.6606634f, + 0.99040645f, + 0.21112025f}); + + test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {0.8709214f, 0.48411977f, 0.74495184f, 0.6074972f, 0.44572943f, 0.1467715f}); + + test_case.run(); +} + +// Hard Sigmoid activation function is unsupprted with v3::GRUCell +NGRAPH_TEST(${BACKEND_NAME}, gru_cell_hardsigmoid_activation_function) +{ + const size_t batch_size = 2; + const size_t input_size = 3; + const size_t hidden_size = 3; + const size_t gates_count = 3; + float clip = 2.88f; + bool linear_before_reset = true; + + const auto X = make_shared(element::f32, Shape{batch_size, input_size}); + const auto W = + make_shared(element::f32, Shape{gates_count * hidden_size, input_size}); + const auto R = + make_shared(element::f32, Shape{gates_count * hidden_size, hidden_size}); + const auto H_t = make_shared(element::f32, Shape{batch_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{(gates_count + 1) * hidden_size}); + + const auto gru_cell = make_shared(X, + H_t, + W, + R, + B, + hidden_size, + vector{"hardsigmoid", "hardsigmoid"}, + vector{1.8345f, 1.8345f}, + vector{3.05f, 3.05f}, + clip, + linear_before_reset); + auto function = make_shared(gru_cell, ParameterVector{X, H_t, W, R, B}); + + auto test_case = test::TestCase(function); + // X + test_case.add_input( + {0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}); + + // Ht + test_case.add_input( + {0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}); + + // W + test_case.add_input( + {0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, 0.5468904f, + 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, 0.56943774f, 0.7475505f, + 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, 0.53454477f, + 0.15974349f, 0.5804805f, 0.14303213f, 0.07514781f, 0.5865731f, 0.76409274f}); + // R + test_case.add_input( + {0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, 0.06308217f, + 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, 0.63143945f, 0.00277612f, + 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, 0.10751773f, + 0.18332677f, 0.1326976f, 0.9998985f, 0.19263928f, 0.10979804f, 0.52575564f}); + + // B (the sum of biases for W and R for z and r gates, and separately for W and R for h gate) + test_case.add_input({0.09875853f + 0.5151927f, + 0.37801138f + 0.708666f, + 0.7729636f + 0.55303884f, + 0.78493553f + 0.03424145f, + 0.5662702f + 0.81109315f, + 0.12406381f + 0.30524766f, + 0.66729516f, + 0.7752771f, + 0.78819966f, + 0.6606634f, + 0.99040645f, + 0.21112025f}); + + test_case.add_expected_output( + Shape{batch_size, hidden_size}, + {0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}); + + test_case.run(); +} diff --git a/ngraph/test/backend/reduce_max.in.cpp b/ngraph/test/backend/reduce_max.in.cpp index 16a5eb65c4dc67..a1288f416a8409 100644 --- a/ngraph/test/backend/reduce_max.in.cpp +++ b/ngraph/test/backend/reduce_max.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/reduce_mean.in.cpp b/ngraph/test/backend/reduce_mean.in.cpp index a2860c5963a154..ea6b437443e1cd 100644 --- a/ngraph/test/backend/reduce_mean.in.cpp +++ b/ngraph/test/backend/reduce_mean.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/reduce_min.in.cpp b/ngraph/test/backend/reduce_min.in.cpp index 025b746f2e5899..21565248d08098 100644 --- a/ngraph/test/backend/reduce_min.in.cpp +++ b/ngraph/test/backend/reduce_min.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/reduce_prod.in.cpp b/ngraph/test/backend/reduce_prod.in.cpp index 00c73ece243a06..6f63089acaa6a9 100644 --- a/ngraph/test/backend/reduce_prod.in.cpp +++ b/ngraph/test/backend/reduce_prod.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/reduce_sum.in.cpp b/ngraph/test/backend/reduce_sum.in.cpp index 58153781f0fe6c..50560a07c6ee97 100644 --- a/ngraph/test/backend/reduce_sum.in.cpp +++ b/ngraph/test/backend/reduce_sum.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/region_yolo.in.cpp b/ngraph/test/backend/region_yolo.in.cpp index 1761fd256e2013..77292e74e6332d 100644 --- a/ngraph/test/backend/region_yolo.in.cpp +++ b/ngraph/test/backend/region_yolo.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/backend/relu.in.cpp b/ngraph/test/backend/relu.in.cpp index a57fd6d1736f39..7a20567f575d98 100644 --- a/ngraph/test/backend/relu.in.cpp +++ b/ngraph/test/backend/relu.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/reorg_yolo.in.cpp b/ngraph/test/backend/reorg_yolo.in.cpp index fffed5d5d7e406..983ae8171c6f49 100644 --- a/ngraph/test/backend/reorg_yolo.in.cpp +++ b/ngraph/test/backend/reorg_yolo.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/reshape.in.cpp b/ngraph/test/backend/reshape.in.cpp index 986bc3cfe4314b..48f88a57171274 100644 --- a/ngraph/test/backend/reshape.in.cpp +++ b/ngraph/test/backend/reshape.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/reverse.in.cpp b/ngraph/test/backend/reverse.in.cpp index 3f1a7dfce79005..4450468268e221 100644 --- a/ngraph/test/backend/reverse.in.cpp +++ b/ngraph/test/backend/reverse.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/reverse_sequence.in.cpp b/ngraph/test/backend/reverse_sequence.in.cpp index cdc16c7fa97187..4dcc954e4c00f9 100644 --- a/ngraph/test/backend/reverse_sequence.in.cpp +++ b/ngraph/test/backend/reverse_sequence.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/roi_pooling.in.cpp b/ngraph/test/backend/roi_pooling.in.cpp index d895a71e1a9bd4..b37cf3c37b6d8c 100644 --- a/ngraph/test/backend/roi_pooling.in.cpp +++ b/ngraph/test/backend/roi_pooling.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/round.in.cpp b/ngraph/test/backend/round.in.cpp index 48d688f470a1fb..c58ecc7d8dcbbf 100644 --- a/ngraph/test/backend/round.in.cpp +++ b/ngraph/test/backend/round.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/scatter_nd_update.in.cpp b/ngraph/test/backend/scatter_nd_update.in.cpp new file mode 100644 index 00000000000000..e939d31c8c78e7 --- /dev/null +++ b/ngraph/test/backend/scatter_nd_update.in.cpp @@ -0,0 +1,473 @@ +//***************************************************************************** +// Copyright 2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "gtest/gtest.h" + +#include +#include + +#include "ngraph/opsets/opset7.hpp" +#include "ngraph/type/element_type.hpp" + +#include "runtime/backend.hpp" + +#include "util/all_close_f.hpp" +#include "util/ndarray.hpp" +#include "util/test_control.hpp" +#include "util/test_tools.hpp" + +static std::string s_manifest = "${MANIFEST}"; + +namespace +{ + template + struct Array + { + using StorageType = ngraph::test::NDArrayBase; + static ngraph::element::Type element_type() { return ngraph::element::from(); } + StorageType data; + }; + struct Params + { + Array input; + Array indices; + Array updates; + Array expected_output; + }; + + void execute_test(const Params& p) + { + using namespace ngraph; + using namespace opset7; + + auto inputs = std::make_shared(p.input.element_type(), p.input.data.get_shape()); + auto indices = Constant::create( + p.indices.element_type(), p.indices.data.get_shape(), p.indices.data.get_vector()); + auto updates = Constant::create( + p.updates.element_type(), p.updates.data.get_shape(), p.updates.data.get_vector()); + + auto scatter = std::make_shared(inputs, indices, updates); + + auto function = + std::make_shared(scatter, ParameterVector{inputs}, "ScatterNDUpdate"); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto inputs_tensor = + backend->create_tensor(p.input.element_type(), p.input.data.get_shape()); + copy_data(inputs_tensor, p.input.data.get_vector()); + + auto result = + backend->create_tensor(p.input.element_type(), p.expected_output.data.get_shape()); + + auto handle = backend->compile(function); + handle->call_with_validate({result}, {inputs_tensor}); + + EXPECT_TRUE(test::all_close_f(p.expected_output.data.get_vector(), + read_vector(result), + MIN_FLOAT_TOLERANCE_BITS)); + } +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_1x1) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{1}, + NDArray{{0}}, + NDArray{20}, + NDArray{20}}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_2x2_by_1) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{ + {1, 2}, + {3, 4}, + }, + NDArray{{1}, {0}}, + NDArray{{10, 20}, {30, 40}}, + NDArray{ + {30, 40}, + {10, 20}, + }}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_2x2_by_2) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{ + {1, 2}, + {3, 4}, + }, + NDArray{ + {0, 0}, + {1, 1}, + }, + NDArray{10, 40}, + NDArray{ + {10, 2}, + {3, 40}, + }}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_3x3_by_1) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{ + { + {11, 12, 13}, + {14, 15, 16}, + {17, 18, 19}, + }, + { + {21, 22, 23}, + {24, 25, 26}, + {27, 28, 29}, + }, + { + {31, 32, 33}, + {34, 35, 36}, + {37, 38, 39}, + }, + }, + NDArray{{0}, {2}}, + NDArray{ + { + {91, 92, 93}, + {94, 95, 96}, + {97, 98, 99}, + }, + { + {81, 82, 83}, + {84, 85, 86}, + {87, 88, 89}, + }, + }, + NDArray{ + { + {91, 92, 93}, + {94, 95, 96}, + {97, 98, 99}, + }, + { + {21, 22, 23}, + {24, 25, 26}, + {27, 28, 29}, + }, + { + {81, 82, 83}, + {84, 85, 86}, + {87, 88, 89}, + }, + }}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_3x3_by_2v2) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{ + { + {11, 12, 13}, + {14, 15, 16}, + {17, 18, 19}, + }, + { + {21, 22, 23}, + {24, 25, 26}, + {27, 28, 29}, + }, + { + {31, 32, 33}, + {34, 35, 36}, + {37, 38, 39}, + }, + }, + NDArray{ + { + {0, 0, 0}, + {2, 2, 2}, + }, + { + {1, 0, 0}, + {1, 2, 2}, + }, + }, + NDArray{ + {91, 92}, + {81, 82}, + }, + NDArray{ + { + {91, 12, 13}, + {14, 15, 16}, + {17, 18, 19}, + }, + { + {81, 22, 23}, + {24, 25, 26}, + {27, 28, 82}, + }, + { + {31, 32, 33}, + {34, 35, 36}, + {37, 38, 92}, + }, + }}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_3x3_by_2) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{ + { + {11, 12, 13}, + {14, 15, 16}, + {17, 18, 19}, + }, + { + {21, 22, 23}, + {24, 25, 26}, + {27, 28, 29}, + }, + { + {31, 32, 33}, + {34, 35, 36}, + {37, 38, 39}, + }, + }, + NDArray{{0, 0}, {2, 2}}, + NDArray{ + {91, 92, 93}, + {87, 88, 89}, + }, + NDArray{ + { + {91, 92, 93}, + {14, 15, 16}, + {17, 18, 19}, + }, + { + {21, 22, 23}, + {24, 25, 26}, + {27, 28, 29}, + }, + { + {31, 32, 33}, + {34, 35, 36}, + {87, 88, 89}, + }, + }}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_3x3_by_3) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{ + { + {11, 12, 13}, + {14, 15, 16}, + {17, 18, 19}, + }, + { + {21, 22, 23}, + {24, 25, 26}, + {27, 28, 29}, + }, + { + {31, 32, 33}, + {34, 35, 36}, + {37, 38, 39}, + }, + }, + NDArray{{0, 0, 0}, {2, 2, 2}}, + NDArray{91, 99}, + NDArray{ + { + {91, 12, 13}, + {14, 15, 16}, + {17, 18, 19}, + }, + { + {21, 22, 23}, + {24, 25, 26}, + {27, 28, 29}, + }, + { + {31, 32, 33}, + {34, 35, 36}, + {37, 38, 99}, + }, + }}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_1d_from_examples) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{1, 2, 3, 4, 5, 6, 7, 8}, + NDArray{{4}, {3}, {1}, {7}}, + NDArray{9, 10, 11, 12}, + NDArray{1, 11, 3, 10, 9, 6, 7, 12}}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_4x4_shape_from_examples) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{{ + {1, 2, 3, 4}, + {5, 6, 7, 8}, + {8, 7, 6, 5}, + {4, 3, 2, 1}, + }, + { + {1, 2, 3, 4}, + {5, 6, 7, 8}, + {8, 7, 6, 5}, + {4, 3, 2, 1}, + }, + { + {8, 7, 6, 5}, + {4, 3, 2, 1}, + {1, 2, 3, 4}, + {5, 6, 7, 8}, + }, + { + {8, 7, 6, 5}, + {4, 3, 2, 1}, + {1, 2, 3, 4}, + {5, 6, 7, 8}, + }}, + NDArray{{0}, {2}}, + NDArray{ + { + {5, 5, 5, 5}, + {6, 6, 6, 6}, + {7, 7, 7, 7}, + {8, 8, 8, 8}, + }, + { + {1, 1, 1, 1}, + {2, 2, 2, 2}, + {3, 3, 3, 3}, + {4, 4, 4, 4}, + }, + }, + NDArray{ + { + {5, 5, 5, 5}, + {6, 6, 6, 6}, + {7, 7, 7, 7}, + {8, 8, 8, 8}, + }, + { + {1, 2, 3, 4}, + {5, 6, 7, 8}, + {8, 7, 6, 5}, + {4, 3, 2, 1}, + }, + { + {1, 1, 1, 1}, + {2, 2, 2, 2}, + {3, 3, 3, 3}, + {4, 4, 4, 4}, + }, + { + {8, 7, 6, 5}, + {4, 3, 2, 1}, + {1, 2, 3, 4}, + {5, 6, 7, 8}, + }, + }}); +} + +NGRAPH_TEST(${BACKEND_NAME}, scatter_nd_update_4x4_v2) +{ + using namespace ngraph::test; + execute_test(Params{NDArray{ + { + {1, 2, 3, 4}, + {5, 6, 7, 8}, + {8, 7, 6, 5}, + {4, 3, 2, 1}, + }, + { + {1, 2, 3, 4}, + {5, 6, 7, 8}, + {8, 7, 6, 5}, + {4, 3, 2, 1}, + }, + { + {8, 7, 6, 5}, + {4, 3, 2, 1}, + {1, 2, 3, 4}, + {5, 6, 7, 8}, + }, + { + {8, 7, 6, 5}, + {4, 3, 2, 1}, + {1, 2, 3, 4}, + {5, 6, 7, 8}, + }, + }, + NDArray{ + { + {0, 0}, + {2, 2}, + }, + { + {1, 1}, + {3, 3}, + }, + }, + NDArray{ + { + {15, 16, 17, 18}, + {25, 26, 27, 28}, + }, + { + {35, 36, 37, 38}, + {45, 46, 47, 58}, + }, + }, + NDArray{ + { + {15, 16, 17, 18}, + {5, 6, 7, 8}, + {8, 7, 6, 5}, + {4, 3, 2, 1}, + + }, + { + {1, 2, 3, 4}, + {35, 36, 37, 38}, + {8, 7, 6, 5}, + {4, 3, 2, 1}, + }, + { + {8, 7, 6, 5}, + {4, 3, 2, 1}, + {25, 26, 27, 28}, + {5, 6, 7, 8}, + }, + { + {8, 7, 6, 5}, + {4, 3, 2, 1}, + {1, 2, 3, 4}, + {45, 46, 47, 58}, + }, + }}); +} diff --git a/ngraph/test/backend/select.in.cpp b/ngraph/test/backend/select.in.cpp index 3322c0900fd62e..9da4363e110dfb 100644 --- a/ngraph/test/backend/select.in.cpp +++ b/ngraph/test/backend/select.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/shape_of.in.cpp b/ngraph/test/backend/shape_of.in.cpp index 91d30ed6e334e0..c128330abc98c3 100644 --- a/ngraph/test/backend/shape_of.in.cpp +++ b/ngraph/test/backend/shape_of.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/sigmoid.in.cpp b/ngraph/test/backend/sigmoid.in.cpp index a26f1988f054fd..8a22779994f74d 100644 --- a/ngraph/test/backend/sigmoid.in.cpp +++ b/ngraph/test/backend/sigmoid.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/sign.in.cpp b/ngraph/test/backend/sign.in.cpp index bf1c111536c495..ae4559b4b4a272 100644 --- a/ngraph/test/backend/sign.in.cpp +++ b/ngraph/test/backend/sign.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/sin.in.cpp b/ngraph/test/backend/sin.in.cpp index 0ebb8d786537ca..f4f6fd658a30bd 100644 --- a/ngraph/test/backend/sin.in.cpp +++ b/ngraph/test/backend/sin.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/sinh.in.cpp b/ngraph/test/backend/sinh.in.cpp index c83f8c61c25b4d..903a2bf3649126 100644 --- a/ngraph/test/backend/sinh.in.cpp +++ b/ngraph/test/backend/sinh.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/slice.in.cpp b/ngraph/test/backend/slice.in.cpp index 8a517f488bf988..ccf4fcf8ef2692 100644 --- a/ngraph/test/backend/slice.in.cpp +++ b/ngraph/test/backend/slice.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/builder/reshape.hpp" diff --git a/ngraph/test/backend/softmax.in.cpp b/ngraph/test/backend/softmax.in.cpp index 2cf2d425975ecc..966afede09e6bb 100644 --- a/ngraph/test/backend/softmax.in.cpp +++ b/ngraph/test/backend/softmax.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS diff --git a/ngraph/test/backend/split.in.cpp b/ngraph/test/backend/split.in.cpp index b2ecd385e55c57..a971d22138e034 100644 --- a/ngraph/test/backend/split.in.cpp +++ b/ngraph/test/backend/split.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/sqrt.in.cpp b/ngraph/test/backend/sqrt.in.cpp index ad0bec495982aa..d1b3f0061e4735 100644 --- a/ngraph/test/backend/sqrt.in.cpp +++ b/ngraph/test/backend/sqrt.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/strided_slice.in.cpp b/ngraph/test/backend/strided_slice.in.cpp index 88e54061dd4928..8260f0eeed79cc 100644 --- a/ngraph/test/backend/strided_slice.in.cpp +++ b/ngraph/test/backend/strided_slice.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/backend/subtract.in.cpp b/ngraph/test/backend/subtract.in.cpp index 396c7cc0987342..ce42bfc3186e3d 100644 --- a/ngraph/test/backend/subtract.in.cpp +++ b/ngraph/test/backend/subtract.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -87,3 +75,96 @@ NGRAPH_TEST(${BACKEND_NAME}, subtract_overload) handle->call_with_validate({result}, {a, b}); EXPECT_TRUE(test::all_close_f((vector{1, 2, 4, 8}), read_vector(result))); } + +namespace +{ + template + void subtract_broadcst() + { + const auto element_type = ngraph::element::from(); + const Shape shape_a{3, 2, 1}; + const Shape shape_b{1, 6}; + const Shape shape_o{3, 2, 6}; + std::vector in_a{12, 24, 36, 48, 60, 72}; + std::vector in_b{1, 2, 3, 4, 6, 1}; + // clang-format off + std::vector out{11, 10, 9, 8, 6, 11, + 23, 22, 21, 20, 18, 23, + + 35, 34, 33, 32, 30, 35, + 47, 46, 45, 44, 42, 47, + + 59, 58, 57, 56, 54, 59, + 71, 70, 69, 68, 66, 71}; + // clang-format on + + auto A = make_shared(element_type, shape_a); + auto B = make_shared(element_type, shape_b); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element_type, shape_a, in_a.data()); + auto b = backend->create_tensor(element_type, shape_b, in_b.data()); + auto result = backend->create_tensor(element_type, shape_o); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_EQ(out, read_vector(result)); + } +} // namespace + +NGRAPH_TEST(${BACKEND_NAME}, subtract_int32_broadcast) +{ + subtract_broadcst(); +} + +NGRAPH_TEST(${BACKEND_NAME}, subtract_f32_broadcast) +{ + subtract_broadcst(); +} + +NGRAPH_TEST(${BACKEND_NAME}, subtract_int32_scalar) +{ + Shape shape{}; + + auto A = make_shared(element::i32, shape); + auto B = make_shared(element::i32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element::i32, shape); + copy_data(a, vector{2}); + auto b = backend->create_tensor(element::i32, shape); + copy_data(b, vector{8}); + auto result = backend->create_tensor(element::i32, shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_EQ(vector{-6}, read_vector(result)); +} + +NGRAPH_TEST(${BACKEND_NAME}, subtract_f32_scalar) +{ + Shape shape{}; + + auto A = make_shared(element::f32, shape); + auto B = make_shared(element::f32, shape); + auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); + + auto backend = runtime::Backend::create("${BACKEND_NAME}"); + + // Create some tensors for input/output + auto a = backend->create_tensor(element::f32, shape); + copy_data(a, vector{3.1}); + auto b = backend->create_tensor(element::f32, shape); + copy_data(b, vector{8}); + auto result = backend->create_tensor(element::f32, shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {a, b}); + EXPECT_TRUE(test::all_close_f((vector{-4.9}), read_vector(result))); +} diff --git a/ngraph/test/backend/tan.in.cpp b/ngraph/test/backend/tan.in.cpp index a4a8d70f1d92c7..6664006ad00c5f 100644 --- a/ngraph/test/backend/tan.in.cpp +++ b/ngraph/test/backend/tan.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/tanh.in.cpp b/ngraph/test/backend/tanh.in.cpp index e1d03ddf6b9e48..cdc65cd78dbe63 100644 --- a/ngraph/test/backend/tanh.in.cpp +++ b/ngraph/test/backend/tanh.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/tile.in.cpp b/ngraph/test/backend/tile.in.cpp index c2ea77b5036a55..1115960accad83 100644 --- a/ngraph/test/backend/tile.in.cpp +++ b/ngraph/test/backend/tile.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/topk.in.cpp b/ngraph/test/backend/topk.in.cpp index 0681f5d9bc361d..902fae9bd3956c 100644 --- a/ngraph/test/backend/topk.in.cpp +++ b/ngraph/test/backend/topk.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/backend/transpose.in.cpp b/ngraph/test/backend/transpose.in.cpp index 3eb82ae46af255..1ec0ad5e895811 100644 --- a/ngraph/test/backend/transpose.in.cpp +++ b/ngraph/test/backend/transpose.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/unhandled_op.in.cpp b/ngraph/test/backend/unhandled_op.in.cpp index 239a342facec3d..90526f0814566d 100644 --- a/ngraph/test/backend/unhandled_op.in.cpp +++ b/ngraph/test/backend/unhandled_op.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/validate_call.in.cpp b/ngraph/test/backend/validate_call.in.cpp index cbd930452c322d..dcdc93d237fefb 100644 --- a/ngraph/test/backend/validate_call.in.cpp +++ b/ngraph/test/backend/validate_call.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend/zero_sized.in.cpp b/ngraph/test/backend/zero_sized.in.cpp index df18bf0fefcee6..44ed2a8954f3e4 100644 --- a/ngraph/test/backend/zero_sized.in.cpp +++ b/ngraph/test/backend/zero_sized.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend_api.cpp b/ngraph/test/backend_api.cpp index 875873e70d7ae2..4262c62bb896a5 100644 --- a/ngraph/test/backend_api.cpp +++ b/ngraph/test/backend_api.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/backend_debug_api.cpp b/ngraph/test/backend_debug_api.cpp index 545b002b3e51ce..ee8d19775af449 100644 --- a/ngraph/test/backend_debug_api.cpp +++ b/ngraph/test/backend_debug_api.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/bfloat16.cpp b/ngraph/test/bfloat16.cpp index 5721f9e5229188..38e44295da982c 100644 --- a/ngraph/test/bfloat16.cpp +++ b/ngraph/test/bfloat16.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/build_graph.cpp b/ngraph/test/build_graph.cpp index 1236cdf06b063c..88d9947170ecf7 100644 --- a/ngraph/test/build_graph.cpp +++ b/ngraph/test/build_graph.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/builder.cpp b/ngraph/test/builder.cpp index 61dab79d4b99c1..467e855510c7d9 100644 --- a/ngraph/test/builder.cpp +++ b/ngraph/test/builder.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/builder_autobroadcast.cpp b/ngraph/test/builder_autobroadcast.cpp index be32a8b52c8708..b7de08acccf5d5 100644 --- a/ngraph/test/builder_autobroadcast.cpp +++ b/ngraph/test/builder_autobroadcast.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/check.cpp b/ngraph/test/check.cpp index 5a04172cdf50e5..50fcb8e4144a23 100644 --- a/ngraph/test/check.cpp +++ b/ngraph/test/check.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/conditional_compilation/ngraph_cc_collect.cpp b/ngraph/test/conditional_compilation/ngraph_cc_collect.cpp index fcc441542a793f..bc49b97180bdfc 100644 --- a/ngraph/test/conditional_compilation/ngraph_cc_collect.cpp +++ b/ngraph/test/conditional_compilation/ngraph_cc_collect.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/conditional_compilation/ngraph_cc_off.cpp b/ngraph/test/conditional_compilation/ngraph_cc_off.cpp index 465cd7d0354748..6cd48b7cb61ffe 100644 --- a/ngraph/test/conditional_compilation/ngraph_cc_off.cpp +++ b/ngraph/test/conditional_compilation/ngraph_cc_off.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/conditional_compilation/ngraph_cc_on.cpp b/ngraph/test/conditional_compilation/ngraph_cc_on.cpp index 662e97e020ad93..8d4c5c965a19d0 100644 --- a/ngraph/test/conditional_compilation/ngraph_cc_on.cpp +++ b/ngraph/test/conditional_compilation/ngraph_cc_on.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/constant.cpp b/ngraph/test/constant.cpp index 75cd007e50a149..81400021c6c597 100644 --- a/ngraph/test/constant.cpp +++ b/ngraph/test/constant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/constant_folding.cpp b/ngraph/test/constant_folding.cpp index d7c26acf9f3cd7..b416938ef9e64e 100644 --- a/ngraph/test/constant_folding.cpp +++ b/ngraph/test/constant_folding.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" @@ -429,13 +417,11 @@ TEST(constant_folding, constant_unary_binary) ASSERT_NO_THROW(pass_manager.run_passes(func_error)); } -TEST(constant_folding, const_convert) +template +static void test_const_convert(const vector& values_in, const vector& values_expected) { - Shape input_shape{3, 4}; - - vector values_in{1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7}; - auto constant = op::Constant::create(element::f32, input_shape, values_in); - auto convert = make_shared(constant, element::u64); + auto constant = op::Constant::create(element::from(), Shape{values_in.size()}, values_in); + auto convert = make_shared(constant, element::from()); convert->set_friendly_name("test"); auto f = make_shared(convert, ParameterVector{}); @@ -450,13 +436,31 @@ TEST(constant_folding, const_convert) as_type_ptr(f->get_results().at(0)->input_value(0).get_node_shared_ptr()); ASSERT_TRUE(new_const); ASSERT_EQ(new_const->get_friendly_name(), "test"); - ASSERT_EQ(new_const->get_output_element_type(0), element::u64); - auto values_out = new_const->get_vector(); + ASSERT_EQ(new_const->get_output_element_type(0), element::from()); + auto values_out = new_const->template get_vector(); - vector values_expected{1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7}; ASSERT_EQ(values_expected, values_out); } +TEST(constant_folding, const_convert) +{ + { + vector in{1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7}; + vector expected{1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7}; + test_const_convert(in, expected); + } + { + vector in{false, true, true, false, false, false, true}; + vector expected{0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f}; + test_const_convert(in, expected); + } + { + vector in{1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f}; + vector expected{true, false, true, false, true, false, true}; + test_const_convert(in, expected); + } +} + TEST(constant_folding, shape_of_v0) { Shape input_shape{3, 4, 0, 22, 608, 909, 3}; @@ -2421,7 +2425,7 @@ TEST(constant_folding, constant_v1_one_hot) TEST(constant_folding, constant_v1_one_hot_negative_axes) { - const vector indices{0, 2, -1, 1}; + const vector indices{0, 2, 3, 1}; const int32_t on_value = 4; const int32_t off_value = 1; @@ -2464,7 +2468,7 @@ TEST(constant_folding, constant_v1_one_hot_negative_axes) TEST(constant_folding, constant_v1_one_hot_negative_axes_2) { - vector indices{0, 2, 1, -1}; + vector indices{0, 2, 1, 3}; auto on_value = true; auto off_value = false; diff --git a/ngraph/test/control_dependencies.cpp b/ngraph/test/control_dependencies.cpp index 97b5acd3a5a612..5582c85fc889dc 100644 --- a/ngraph/test/control_dependencies.cpp +++ b/ngraph/test/control_dependencies.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/convert_u1_to_string.cpp b/ngraph/test/convert_u1_to_string.cpp index 6ed3e8d1d6407a..a2148eb1b28e73 100644 --- a/ngraph/test/convert_u1_to_string.cpp +++ b/ngraph/test/convert_u1_to_string.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/coordinate.cpp b/ngraph/test/coordinate.cpp index 39d289b922cc49..9206b54a27c857 100644 --- a/ngraph/test/coordinate.cpp +++ b/ngraph/test/coordinate.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/coordinate_range.cpp b/ngraph/test/coordinate_range.cpp index 7e3315e023fe65..52f47e99c13038 100644 --- a/ngraph/test/coordinate_range.cpp +++ b/ngraph/test/coordinate_range.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -65,9 +53,9 @@ TEST(coordinate_range, slice_range_shape1d) ++expected_val; } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, slice_range_shape2d) @@ -92,9 +80,9 @@ TEST(coordinate_range, slice_range_shape2d) ++expected_val; } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, slice_range_shape3d) @@ -203,9 +191,9 @@ TEST(coordinate_range, slice_range_corner) ++expected_val; } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, slice_range_strides) @@ -238,9 +226,9 @@ TEST(coordinate_range, slice_range_strides) ++expected_val; } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } /// @@ -282,9 +270,9 @@ TEST(coordinate_range, reverse_range_shape1d) } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, reverse_range_shape2d) @@ -311,9 +299,9 @@ TEST(coordinate_range, reverse_range_shape2d) } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, reverse_range_shape3d) @@ -344,9 +332,9 @@ TEST(coordinate_range, reverse_range_shape3d) } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, reverse_range_zero_sized_axis) @@ -390,9 +378,9 @@ TEST(coordinate_range, reverse_range_2d) } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, reverse_1_range_3d) @@ -427,9 +415,9 @@ TEST(coordinate_range, reverse_1_range_3d) } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } TEST(coordinate_range, reverse_2_range_3d) @@ -464,7 +452,7 @@ TEST(coordinate_range, reverse_2_range_3d) } } - EXPECT_TRUE(expected_val == end(expected)) << "not all expected values return, (" - << std::distance(expected_val, end(expected)) - << " is missing)"; + EXPECT_TRUE(expected_val == end(expected)) + << "not all expected values return, (" << std::distance(expected_val, end(expected)) + << " is missing)"; } diff --git a/ngraph/test/copy.cpp b/ngraph/test/copy.cpp index c4438a35c02d26..ca2a13d201b66a 100644 --- a/ngraph/test/copy.cpp +++ b/ngraph/test/copy.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/dyn_elimination.cpp b/ngraph/test/dyn_elimination.cpp index b45e5c8078a039..14a64c1d80bd5e 100644 --- a/ngraph/test/dyn_elimination.cpp +++ b/ngraph/test/dyn_elimination.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/element_type.cpp b/ngraph/test/element_type.cpp index 6715ba544b4f8e..b1456ab319e7d7 100644 --- a/ngraph/test/element_type.cpp +++ b/ngraph/test/element_type.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/eval.cpp b/ngraph/test/eval.cpp index 727bf045e1eba7..0a06de330b8a44 100644 --- a/ngraph/test/eval.cpp +++ b/ngraph/test/eval.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/file_util.cpp b/ngraph/test/file_util.cpp index 6cd3fc79d4fd60..9494f1514c20c3 100644 --- a/ngraph/test/file_util.cpp +++ b/ngraph/test/file_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/files/test.cpio b/ngraph/test/files/test.cpio deleted file mode 100644 index 3876f68145cf1e..00000000000000 Binary files a/ngraph/test/files/test.cpio and /dev/null differ diff --git a/ngraph/test/float16.cpp b/ngraph/test/float16.cpp index ebcaeee36c363e..02ac3c99607ca0 100644 --- a/ngraph/test/float16.cpp +++ b/ngraph/test/float16.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/header_standalone.in.cpp b/ngraph/test/header_standalone.in.cpp index cf8d756833c5ff..a5f264a014e1d9 100644 --- a/ngraph/test/header_standalone.in.cpp +++ b/ngraph/test/header_standalone.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /// \file This file is used to generate a series of .cpp files, one for each .hpp /// file in ngraph, so the line below `#include "${HEADER}"` is expanded out to something diff --git a/ngraph/test/includes.cpp b/ngraph/test/includes.cpp index 0fb00cdc00f38d..137dc409951b2e 100644 --- a/ngraph/test/includes.cpp +++ b/ngraph/test/includes.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/input_output_assign.cpp b/ngraph/test/input_output_assign.cpp index d8c8f5f8dd161e..a85149be7de04b 100644 --- a/ngraph/test/input_output_assign.cpp +++ b/ngraph/test/input_output_assign.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/int4.cpp b/ngraph/test/int4.cpp new file mode 100644 index 00000000000000..c1910faa0b0b3b --- /dev/null +++ b/ngraph/test/int4.cpp @@ -0,0 +1,23 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "util/all_close_f.hpp" +#include "util/test_tools.hpp" + +using namespace ngraph; +using namespace std; + +TEST(int4, convert_i4_to_string) +{ + vector values{171, 16}; + auto constant = make_shared(element::i4, Shape{3}, &values[0]); + + vector ref{"-14", "-13", "1"}; + for (size_t i = 0; i < 3; ++i) + { + ASSERT_EQ(constant->convert_value_to_string(i), ref[i]); + } +} diff --git a/ngraph/test/intervals.cpp b/ngraph/test/intervals.cpp index 2b433243741661..393005d8cfadcc 100644 --- a/ngraph/test/intervals.cpp +++ b/ngraph/test/intervals.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gmock/gmock.h" #include "gtest/gtest.h" diff --git a/ngraph/test/main.cpp b/ngraph/test/main.cpp index bfe0c42f1a2a61..84259f3064cfba 100644 --- a/ngraph/test/main.cpp +++ b/ngraph/test/main.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/matcher_pass.cpp b/ngraph/test/matcher_pass.cpp index 2c787dc4edd165..e9a260ab7edbfa 100644 --- a/ngraph/test/matcher_pass.cpp +++ b/ngraph/test/matcher_pass.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/misc.cpp b/ngraph/test/misc.cpp index 1b6f87f59a0121..c9d07344d31950 100644 --- a/ngraph/test/misc.cpp +++ b/ngraph/test/misc.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "misc.hpp" FILE* port_open(const char* command, const char* type) diff --git a/ngraph/test/misc.hpp b/ngraph/test/misc.hpp index ea42f144724a70..2c143fc73ebf34 100644 --- a/ngraph/test/misc.hpp +++ b/ngraph/test/misc.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include diff --git a/ngraph/test/mkldnn.cpp b/ngraph/test/mkldnn.cpp index a4b68deafd1f9c..64f7e26392b051 100644 --- a/ngraph/test/mkldnn.cpp +++ b/ngraph/test/mkldnn.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/models/conv_bias.json b/ngraph/test/models/conv_bias.json deleted file mode 100644 index 418ee64320d3ad..00000000000000 --- a/ngraph/test/models/conv_bias.json +++ /dev/null @@ -1,901 +0,0 @@ -[{ - "name" : "Function_4", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_747", - "op" : "Parameter", - "outputs" : ["Parameter_747_0"], - "shape" : [1000] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_746", - "op" : "Parameter", - "outputs" : ["Parameter_746_0"], - "shape" : [ 1000, 4096 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_738", - "op" : "Parameter", - "outputs" : ["Parameter_738_0"], - "shape" : [4096] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_737", - "op" : "Parameter", - "outputs" : ["Parameter_737_0"], - "shape" : [ 4096, 4096 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_729", - "op" : "Parameter", - "outputs" : ["Parameter_729_0"], - "shape" : [4096] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_728", - "op" : "Parameter", - "outputs" : ["Parameter_728_0"], - "shape" : [ 4096, 25088 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_717", - "op" : "Parameter", - "outputs" : ["Parameter_717_0"], - "shape" : [512] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_716", - "op" : "Parameter", - "outputs" : ["Parameter_716_0"], - "shape" : [ 512, 512, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_707", - "op" : "Parameter", - "outputs" : ["Parameter_707_0"], - "shape" : [512] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_706", - "op" : "Parameter", - "outputs" : ["Parameter_706_0"], - "shape" : [ 512, 512, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_696", - "op" : "Parameter", - "outputs" : ["Parameter_696_0"], - "shape" : [512] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_695", - "op" : "Parameter", - "outputs" : ["Parameter_695_0"], - "shape" : [ 512, 512, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_686", - "op" : "Parameter", - "outputs" : ["Parameter_686_0"], - "shape" : [512] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_685", - "op" : "Parameter", - "outputs" : ["Parameter_685_0"], - "shape" : [ 512, 256, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_675", - "op" : "Parameter", - "outputs" : ["Parameter_675_0"], - "shape" : [256] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_674", - "op" : "Parameter", - "outputs" : ["Parameter_674_0"], - "shape" : [ 256, 256, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_665", - "op" : "Parameter", - "outputs" : ["Parameter_665_0"], - "shape" : [256] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_664", - "op" : "Parameter", - "outputs" : ["Parameter_664_0"], - "shape" : [ 256, 128, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_654", - "op" : "Parameter", - "outputs" : ["Parameter_654_0"], - "shape" : [128] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_653", - "op" : "Parameter", - "outputs" : ["Parameter_653_0"], - "shape" : [ 128, 64, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_643", - "op" : "Parameter", - "outputs" : ["Parameter_643_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_642", - "op" : "Parameter", - "outputs" : ["Parameter_642_0"], - "shape" : [ 64, 3, 3, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_641", - "op" : "Parameter", - "outputs" : ["Parameter_641_0"], - "shape" : [ 32, 3, 224, 224 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_743", - "op" : "Constant", - "outputs" : ["Constant_743_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_734", - "op" : "Constant", - "outputs" : ["Constant_734_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_723", - "op" : "Constant", - "outputs" : ["Constant_723_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_713", - "op" : "Constant", - "outputs" : ["Constant_713_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_702", - "op" : "Constant", - "outputs" : ["Constant_702_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_692", - "op" : "Constant", - "outputs" : ["Constant_692_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_681", - "op" : "Constant", - "outputs" : ["Constant_681_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_671", - "op" : "Constant", - "outputs" : ["Constant_671_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_660", - "op" : "Constant", - "outputs" : ["Constant_660_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_649", - "op" : "Constant", - "outputs" : ["Constant_649_0"], - "shape" : [], - "value" : ["0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_747"], - "name" : "Broadcast_750", - "op" : "Broadcast", - "outputs" : ["Broadcast_750_0"], - "shape" : [ 32, 1000 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_746"], - "name" : "Reshape_748", - "op" : "Reshape", - "output_shape" : [ 4096, 1000 ], - "outputs" : ["Reshape_748_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_738"], - "name" : "Broadcast_741", - "op" : "Broadcast", - "outputs" : ["Broadcast_741_0"], - "shape" : [ 32, 4096 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_737"], - "name" : "Reshape_739", - "op" : "Reshape", - "output_shape" : [ 4096, 4096 ], - "outputs" : ["Reshape_739_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_729"], - "name" : "Broadcast_732", - "op" : "Broadcast", - "outputs" : ["Broadcast_732_0"], - "shape" : [ 32, 4096 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_728"], - "name" : "Reshape_730", - "op" : "Reshape", - "output_shape" : [ 25088, 4096 ], - "outputs" : ["Reshape_730_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_717"], - "name" : "Reshape_719", - "op" : "Reshape", - "output_shape" : [ 1, 512, 1, 1 ], - "outputs" : ["Reshape_719_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_707"], - "name" : "Reshape_709", - "op" : "Reshape", - "output_shape" : [ 1, 512, 1, 1 ], - "outputs" : ["Reshape_709_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_696"], - "name" : "Reshape_698", - "op" : "Reshape", - "output_shape" : [ 1, 512, 1, 1 ], - "outputs" : ["Reshape_698_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_686"], - "name" : "Reshape_688", - "op" : "Reshape", - "output_shape" : [ 1, 512, 1, 1 ], - "outputs" : ["Reshape_688_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_675"], - "name" : "Reshape_677", - "op" : "Reshape", - "output_shape" : [ 1, 256, 1, 1 ], - "outputs" : ["Reshape_677_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_665"], - "name" : "Reshape_667", - "op" : "Reshape", - "output_shape" : [ 1, 256, 1, 1 ], - "outputs" : ["Reshape_667_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_654"], - "name" : "Reshape_656", - "op" : "Reshape", - "output_shape" : [ 1, 128, 1, 1 ], - "outputs" : ["Reshape_656_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_643"], - "name" : "Reshape_645", - "op" : "Reshape", - "output_shape" : [ 1, 64, 1, 1 ], - "outputs" : ["Reshape_645_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Parameter_641", "Parameter_642" ], - "name" : "Convolution_644", - "op" : "Convolution", - "outputs" : ["Convolution_644_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_743"], - "name" : "Broadcast_744", - "op" : "Broadcast", - "outputs" : ["Broadcast_744_0"], - "shape" : [ 32, 4096 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_734"], - "name" : "Broadcast_735", - "op" : "Broadcast", - "outputs" : ["Broadcast_735_0"], - "shape" : [ 32, 4096 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_723"], - "name" : "Broadcast_724", - "op" : "Broadcast", - "outputs" : ["Broadcast_724_0"], - "shape" : [ 32, 512, 14, 14 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_713"], - "name" : "Broadcast_714", - "op" : "Broadcast", - "outputs" : ["Broadcast_714_0"], - "shape" : [ 32, 512, 14, 14 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_702"], - "name" : "Broadcast_703", - "op" : "Broadcast", - "outputs" : ["Broadcast_703_0"], - "shape" : [ 32, 512, 28, 28 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_692"], - "name" : "Broadcast_693", - "op" : "Broadcast", - "outputs" : ["Broadcast_693_0"], - "shape" : [ 32, 512, 28, 28 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_681"], - "name" : "Broadcast_682", - "op" : "Broadcast", - "outputs" : ["Broadcast_682_0"], - "shape" : [ 32, 256, 56, 56 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_671"], - "name" : "Broadcast_672", - "op" : "Broadcast", - "outputs" : ["Broadcast_672_0"], - "shape" : [ 32, 256, 56, 56 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_660"], - "name" : "Broadcast_661", - "op" : "Broadcast", - "outputs" : ["Broadcast_661_0"], - "shape" : [ 32, 128, 112, 112 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_649"], - "name" : "Broadcast_650", - "op" : "Broadcast", - "outputs" : ["Broadcast_650_0"], - "shape" : [ 32, 64, 224, 224 ] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_719"], - "name" : "Reshape_720", - "op" : "Reshape", - "output_shape" : [512], - "outputs" : ["Reshape_720_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_709"], - "name" : "Reshape_710", - "op" : "Reshape", - "output_shape" : [512], - "outputs" : ["Reshape_710_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_698"], - "name" : "Reshape_699", - "op" : "Reshape", - "output_shape" : [512], - "outputs" : ["Reshape_699_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_688"], - "name" : "Reshape_689", - "op" : "Reshape", - "output_shape" : [512], - "outputs" : ["Reshape_689_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_677"], - "name" : "Reshape_678", - "op" : "Reshape", - "output_shape" : [256], - "outputs" : ["Reshape_678_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_667"], - "name" : "Reshape_668", - "op" : "Reshape", - "output_shape" : [256], - "outputs" : ["Reshape_668_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_656"], - "name" : "Reshape_657", - "op" : "Reshape", - "output_shape" : [128], - "outputs" : ["Reshape_657_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_645"], - "name" : "Reshape_646", - "op" : "Reshape", - "output_shape" : [64], - "outputs" : ["Reshape_646_0"] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_720"], - "name" : "Broadcast_721", - "op" : "Broadcast", - "outputs" : ["Broadcast_721_0"], - "shape" : [ 32, 512, 14, 14 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_710"], - "name" : "Broadcast_711", - "op" : "Broadcast", - "outputs" : ["Broadcast_711_0"], - "shape" : [ 32, 512, 14, 14 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_699"], - "name" : "Broadcast_700", - "op" : "Broadcast", - "outputs" : ["Broadcast_700_0"], - "shape" : [ 32, 512, 28, 28 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_689"], - "name" : "Broadcast_690", - "op" : "Broadcast", - "outputs" : ["Broadcast_690_0"], - "shape" : [ 32, 512, 28, 28 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_678"], - "name" : "Broadcast_679", - "op" : "Broadcast", - "outputs" : ["Broadcast_679_0"], - "shape" : [ 32, 256, 56, 56 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_668"], - "name" : "Broadcast_669", - "op" : "Broadcast", - "outputs" : ["Broadcast_669_0"], - "shape" : [ 32, 256, 56, 56 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_657"], - "name" : "Broadcast_658", - "op" : "Broadcast", - "outputs" : ["Broadcast_658_0"], - "shape" : [ 32, 128, 112, 112 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_646"], - "name" : "Broadcast_647", - "op" : "Broadcast", - "outputs" : ["Broadcast_647_0"], - "shape" : [ 32, 64, 224, 224 ] - }, - { - "inputs" : [ "Convolution_644", "Broadcast_647" ], - "name" : "Add_648", - "op" : "Add", - "outputs" : ["Add_648_0"] - }, - { - "inputs" : [ "Add_648", "Broadcast_650" ], - "name" : "Maximum_651", - "op" : "Maximum", - "outputs" : ["Maximum_651_0"] - }, - { - "inputs" : ["Maximum_651"], - "name" : "MaxPool_652", - "op" : "MaxPool", - "outputs" : ["MaxPool_652_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "MaxPool_652", "Parameter_653" ], - "name" : "Convolution_655", - "op" : "Convolution", - "outputs" : ["Convolution_655_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Convolution_655", "Broadcast_658" ], - "name" : "Add_659", - "op" : "Add", - "outputs" : ["Add_659_0"] - }, - { - "inputs" : [ "Add_659", "Broadcast_661" ], - "name" : "Maximum_662", - "op" : "Maximum", - "outputs" : ["Maximum_662_0"] - }, - { - "inputs" : ["Maximum_662"], - "name" : "MaxPool_663", - "op" : "MaxPool", - "outputs" : ["MaxPool_663_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "MaxPool_663", "Parameter_664" ], - "name" : "Convolution_666", - "op" : "Convolution", - "outputs" : ["Convolution_666_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Convolution_666", "Broadcast_669" ], - "name" : "Add_670", - "op" : "Add", - "outputs" : ["Add_670_0"] - }, - { - "inputs" : [ "Add_670", "Broadcast_672" ], - "name" : "Maximum_673", - "op" : "Maximum", - "outputs" : ["Maximum_673_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Maximum_673", "Parameter_674" ], - "name" : "Convolution_676", - "op" : "Convolution", - "outputs" : ["Convolution_676_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Convolution_676", "Broadcast_679" ], - "name" : "Add_680", - "op" : "Add", - "outputs" : ["Add_680_0"] - }, - { - "inputs" : [ "Add_680", "Broadcast_682" ], - "name" : "Maximum_683", - "op" : "Maximum", - "outputs" : ["Maximum_683_0"] - }, - { - "inputs" : ["Maximum_683"], - "name" : "MaxPool_684", - "op" : "MaxPool", - "outputs" : ["MaxPool_684_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "MaxPool_684", "Parameter_685" ], - "name" : "Convolution_687", - "op" : "Convolution", - "outputs" : ["Convolution_687_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Convolution_687", "Broadcast_690" ], - "name" : "Add_691", - "op" : "Add", - "outputs" : ["Add_691_0"] - }, - { - "inputs" : [ "Add_691", "Broadcast_693" ], - "name" : "Maximum_694", - "op" : "Maximum", - "outputs" : ["Maximum_694_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Maximum_694", "Parameter_695" ], - "name" : "Convolution_697", - "op" : "Convolution", - "outputs" : ["Convolution_697_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Convolution_697", "Broadcast_700" ], - "name" : "Add_701", - "op" : "Add", - "outputs" : ["Add_701_0"] - }, - { - "inputs" : [ "Add_701", "Broadcast_703" ], - "name" : "Maximum_704", - "op" : "Maximum", - "outputs" : ["Maximum_704_0"] - }, - { - "inputs" : ["Maximum_704"], - "name" : "MaxPool_705", - "op" : "MaxPool", - "outputs" : ["MaxPool_705_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "MaxPool_705", "Parameter_706" ], - "name" : "Convolution_708", - "op" : "Convolution", - "outputs" : ["Convolution_708_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Convolution_708", "Broadcast_711" ], - "name" : "Add_712", - "op" : "Add", - "outputs" : ["Add_712_0"] - }, - { - "inputs" : [ "Add_712", "Broadcast_714" ], - "name" : "Maximum_715", - "op" : "Maximum", - "outputs" : ["Maximum_715_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Maximum_715", "Parameter_716" ], - "name" : "Convolution_718", - "op" : "Convolution", - "outputs" : ["Convolution_718_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Convolution_718", "Broadcast_721" ], - "name" : "Add_722", - "op" : "Add", - "outputs" : ["Add_722_0"] - }, - { - "inputs" : [ "Add_722", "Broadcast_724" ], - "name" : "Maximum_725", - "op" : "Maximum", - "outputs" : ["Maximum_725_0"] - }, - { - "inputs" : ["Maximum_725"], - "name" : "MaxPool_726", - "op" : "MaxPool", - "outputs" : ["MaxPool_726_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["MaxPool_726"], - "name" : "Reshape_727", - "op" : "Reshape", - "output_shape" : [ 32, 25088 ], - "outputs" : ["Reshape_727_0"] - }, - { - "inputs" : [ "Reshape_727", "Reshape_730" ], - "name" : "Dot_731", - "op" : "Dot", - "outputs" : ["Dot_731_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_731", "Broadcast_732" ], - "name" : "Add_733", - "op" : "Add", - "outputs" : ["Add_733_0"] - }, - { - "inputs" : [ "Add_733", "Broadcast_735" ], - "name" : "Maximum_736", - "op" : "Maximum", - "outputs" : ["Maximum_736_0"] - }, - { - "inputs" : [ "Maximum_736", "Reshape_739" ], - "name" : "Dot_740", - "op" : "Dot", - "outputs" : ["Dot_740_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_740", "Broadcast_741" ], - "name" : "Add_742", - "op" : "Add", - "outputs" : ["Add_742_0"] - }, - { - "inputs" : [ "Add_742", "Broadcast_744" ], - "name" : "Maximum_745", - "op" : "Maximum", - "outputs" : ["Maximum_745_0"] - }, - { - "inputs" : [ "Maximum_745", "Reshape_748" ], - "name" : "Dot_749", - "op" : "Dot", - "outputs" : ["Dot_749_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_749", "Broadcast_750" ], - "name" : "Add_751", - "op" : "Add", - "outputs" : ["Add_751_0"] - } - ], - "parameters" : [ - "Parameter_641", "Parameter_642", "Parameter_643", "Parameter_653", - "Parameter_654", "Parameter_664", "Parameter_665", "Parameter_674", - "Parameter_675", "Parameter_685", "Parameter_686", "Parameter_695", - "Parameter_696", "Parameter_706", "Parameter_707", "Parameter_716", - "Parameter_717", "Parameter_728", "Parameter_729", "Parameter_737", - "Parameter_738", "Parameter_746", "Parameter_747" - ], - "result" : ["Add_751"] -}] diff --git a/ngraph/test/models/mxnet/10_bucket_LSTM.json b/ngraph/test/models/mxnet/10_bucket_LSTM.json deleted file mode 100644 index f556e68c2958d3..00000000000000 --- a/ngraph/test/models/mxnet/10_bucket_LSTM.json +++ /dev/null @@ -1,11101 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_790", - "op" : "Parameter", - "outputs" : ["Parameter_790"], - "shape" : [10000] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_789", - "op" : "Parameter", - "outputs" : ["Parameter_789"], - "shape" : [ 10000, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_75", - "op" : "Parameter", - "outputs" : ["Parameter_75"], - "shape" : [800] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_74", - "op" : "Parameter", - "outputs" : ["Parameter_74"], - "shape" : [ 800, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_67", - "op" : "Parameter", - "outputs" : ["Parameter_67"], - "shape" : [800] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_66", - "op" : "Parameter", - "outputs" : ["Parameter_66"], - "shape" : [ 800, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_30", - "op" : "Parameter", - "outputs" : ["Parameter_30"], - "shape" : [800] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_29", - "op" : "Parameter", - "outputs" : ["Parameter_29"], - "shape" : [ 800, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_22", - "op" : "Parameter", - "outputs" : ["Parameter_22"], - "shape" : [800] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_21", - "op" : "Parameter", - "outputs" : ["Parameter_21"], - "shape" : [ 800, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0"], - "shape" : [ 1, 10, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_72", - "op" : "Constant", - "outputs" : ["Constant_72"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_27", - "op" : "Constant", - "outputs" : ["Constant_27"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_55", - "op" : "Constant", - "outputs" : ["Constant_55"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_52", - "op" : "Constant", - "outputs" : ["Constant_52"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_46", - "op" : "Constant", - "outputs" : ["Constant_46"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_40", - "op" : "Constant", - "outputs" : ["Constant_40"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_100", - "op" : "Constant", - "outputs" : ["Constant_100"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_97", - "op" : "Constant", - "outputs" : ["Constant_97"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_91", - "op" : "Constant", - "outputs" : ["Constant_91"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_85", - "op" : "Constant", - "outputs" : ["Constant_85"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_138", - "op" : "Constant", - "outputs" : ["Constant_138"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_131", - "op" : "Constant", - "outputs" : ["Constant_131"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_125", - "op" : "Constant", - "outputs" : ["Constant_125"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_175", - "op" : "Constant", - "outputs" : ["Constant_175"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_168", - "op" : "Constant", - "outputs" : ["Constant_168"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_162", - "op" : "Constant", - "outputs" : ["Constant_162"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_213", - "op" : "Constant", - "outputs" : ["Constant_213"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_206", - "op" : "Constant", - "outputs" : ["Constant_206"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_200", - "op" : "Constant", - "outputs" : ["Constant_200"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_250", - "op" : "Constant", - "outputs" : ["Constant_250"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_243", - "op" : "Constant", - "outputs" : ["Constant_243"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_237", - "op" : "Constant", - "outputs" : ["Constant_237"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_288", - "op" : "Constant", - "outputs" : ["Constant_288"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_281", - "op" : "Constant", - "outputs" : ["Constant_281"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_275", - "op" : "Constant", - "outputs" : ["Constant_275"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_325", - "op" : "Constant", - "outputs" : ["Constant_325"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_318", - "op" : "Constant", - "outputs" : ["Constant_318"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_312", - "op" : "Constant", - "outputs" : ["Constant_312"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_363", - "op" : "Constant", - "outputs" : ["Constant_363"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_356", - "op" : "Constant", - "outputs" : ["Constant_356"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_350", - "op" : "Constant", - "outputs" : ["Constant_350"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_400", - "op" : "Constant", - "outputs" : ["Constant_400"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_393", - "op" : "Constant", - "outputs" : ["Constant_393"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_387", - "op" : "Constant", - "outputs" : ["Constant_387"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_438", - "op" : "Constant", - "outputs" : ["Constant_438"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_431", - "op" : "Constant", - "outputs" : ["Constant_431"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_425", - "op" : "Constant", - "outputs" : ["Constant_425"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_475", - "op" : "Constant", - "outputs" : ["Constant_475"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_468", - "op" : "Constant", - "outputs" : ["Constant_468"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_462", - "op" : "Constant", - "outputs" : ["Constant_462"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_513", - "op" : "Constant", - "outputs" : ["Constant_513"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_506", - "op" : "Constant", - "outputs" : ["Constant_506"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_500", - "op" : "Constant", - "outputs" : ["Constant_500"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_550", - "op" : "Constant", - "outputs" : ["Constant_550"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_543", - "op" : "Constant", - "outputs" : ["Constant_543"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_537", - "op" : "Constant", - "outputs" : ["Constant_537"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_588", - "op" : "Constant", - "outputs" : ["Constant_588"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_581", - "op" : "Constant", - "outputs" : ["Constant_581"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_575", - "op" : "Constant", - "outputs" : ["Constant_575"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_625", - "op" : "Constant", - "outputs" : ["Constant_625"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_618", - "op" : "Constant", - "outputs" : ["Constant_618"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_612", - "op" : "Constant", - "outputs" : ["Constant_612"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_663", - "op" : "Constant", - "outputs" : ["Constant_663"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_656", - "op" : "Constant", - "outputs" : ["Constant_656"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_650", - "op" : "Constant", - "outputs" : ["Constant_650"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_700", - "op" : "Constant", - "outputs" : ["Constant_700"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_693", - "op" : "Constant", - "outputs" : ["Constant_693"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_687", - "op" : "Constant", - "outputs" : ["Constant_687"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_738", - "op" : "Constant", - "outputs" : ["Constant_738"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_731", - "op" : "Constant", - "outputs" : ["Constant_731"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_725", - "op" : "Constant", - "outputs" : ["Constant_725"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_775", - "op" : "Constant", - "outputs" : ["Constant_775"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_768", - "op" : "Constant", - "outputs" : ["Constant_768"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [], - "name" : "Constant_762", - "op" : "Constant", - "outputs" : ["Constant_762"], - "shape" : [], - "value" : ["1"] - }, - { - "axes" : [0], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_790"], - "name" : "Broadcast_793", - "op" : "Broadcast", - "outputs" : ["Broadcast_793"], - "shape" : [ 10, 10000 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_789"], - "name" : "Reshape_791", - "op" : "Reshape", - "output_shape" : [ 200, 10000 ], - "outputs" : ["Reshape_791"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_78", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_78"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_155", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_155"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_230", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_230"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_305", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_305"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_380", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_380"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_455", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_455"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_530", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_530"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_605", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_605"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_680", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_680"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_75"], - "name" : "Reshape_755", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_755"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_76", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_76"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_153", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_153"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_228", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_228"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_303", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_303"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_378", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_378"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_453", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_453"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_528", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_528"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_603", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_603"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_678", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_678"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_74"], - "name" : "Reshape_753", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_753"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_70", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_70"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_151", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_151"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_226", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_226"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_301", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_301"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_376", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_376"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_451", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_451"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_526", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_526"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_601", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_601"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_676", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_676"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_67"], - "name" : "Reshape_751", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_751"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_68", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_68"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_149", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_149"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_224", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_224"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_299", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_299"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_374", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_374"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_449", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_449"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_524", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_524"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_599", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_599"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_674", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_674"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_66"], - "name" : "Reshape_749", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_749"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_33", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_33"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_118", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_118"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_193", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_193"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_268", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_268"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_343", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_343"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_418", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_418"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_493", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_493"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_568", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_568"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_643", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_643"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_30"], - "name" : "Reshape_718", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_718"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_31", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_31"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_116", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_116"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_191", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_191"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_266", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_266"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_341", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_341"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_416", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_416"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_491", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_491"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_566", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_566"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_641", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_641"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_29"], - "name" : "Reshape_716", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_716"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_25", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_25"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_114", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_114"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_189", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_189"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_264", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_264"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_339", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_339"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_414", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_414"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_489", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_489"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_564", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_564"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_639", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_639"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [0], - "inputs" : ["Parameter_22"], - "name" : "Reshape_714", - "op" : "Reshape", - "output_shape" : [ 1, 800 ], - "outputs" : ["Reshape_714"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_23", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_112", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_112"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_187", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_187"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_262", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_262"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_337", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_337"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_412", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_412"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_487", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_487"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_562", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_562"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_637", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_637"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_21"], - "name" : "Reshape_712", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_712"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "Slice_3", - "op" : "Slice", - "outputs" : ["Slice_3"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 2, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "Slice_5", - "op" : "Slice", - "outputs" : ["Slice_5"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 3, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "Slice_7", - "op" : "Slice", - "outputs" : ["Slice_7"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 4, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "Slice_9", - "op" : "Slice", - "outputs" : ["Slice_9"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 5, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "Slice_11", - "op" : "Slice", - "outputs" : ["Slice_11"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 6, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "Slice_13", - "op" : "Slice", - "outputs" : ["Slice_13"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 7, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "Slice_15", - "op" : "Slice", - "outputs" : ["Slice_15"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 8, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "Slice_17", - "op" : "Slice", - "outputs" : ["Slice_17"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 9, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "Slice_19", - "op" : "Slice", - "outputs" : ["Slice_19"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 10, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_1", - "op" : "Slice", - "outputs" : ["Slice_1"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_72"], - "name" : "Broadcast_73", - "op" : "Broadcast", - "outputs" : ["Broadcast_73"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_27"], - "name" : "Broadcast_28", - "op" : "Broadcast", - "outputs" : ["Broadcast_28"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_55"], - "name" : "Broadcast_56", - "op" : "Broadcast", - "outputs" : ["Broadcast_56"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_52"], - "name" : "Broadcast_53", - "op" : "Broadcast", - "outputs" : ["Broadcast_53"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_46"], - "name" : "Broadcast_47", - "op" : "Broadcast", - "outputs" : ["Broadcast_47"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_40"], - "name" : "Broadcast_41", - "op" : "Broadcast", - "outputs" : ["Broadcast_41"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_100"], - "name" : "Broadcast_101", - "op" : "Broadcast", - "outputs" : ["Broadcast_101"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_97"], - "name" : "Broadcast_98", - "op" : "Broadcast", - "outputs" : ["Broadcast_98"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_91"], - "name" : "Broadcast_92", - "op" : "Broadcast", - "outputs" : ["Broadcast_92"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_85"], - "name" : "Broadcast_86", - "op" : "Broadcast", - "outputs" : ["Broadcast_86"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_138"], - "name" : "Broadcast_139", - "op" : "Broadcast", - "outputs" : ["Broadcast_139"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_131"], - "name" : "Broadcast_132", - "op" : "Broadcast", - "outputs" : ["Broadcast_132"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_125"], - "name" : "Broadcast_126", - "op" : "Broadcast", - "outputs" : ["Broadcast_126"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_175"], - "name" : "Broadcast_176", - "op" : "Broadcast", - "outputs" : ["Broadcast_176"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_168"], - "name" : "Broadcast_169", - "op" : "Broadcast", - "outputs" : ["Broadcast_169"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_162"], - "name" : "Broadcast_163", - "op" : "Broadcast", - "outputs" : ["Broadcast_163"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_213"], - "name" : "Broadcast_214", - "op" : "Broadcast", - "outputs" : ["Broadcast_214"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_206"], - "name" : "Broadcast_207", - "op" : "Broadcast", - "outputs" : ["Broadcast_207"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_200"], - "name" : "Broadcast_201", - "op" : "Broadcast", - "outputs" : ["Broadcast_201"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_250"], - "name" : "Broadcast_251", - "op" : "Broadcast", - "outputs" : ["Broadcast_251"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_243"], - "name" : "Broadcast_244", - "op" : "Broadcast", - "outputs" : ["Broadcast_244"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_237"], - "name" : "Broadcast_238", - "op" : "Broadcast", - "outputs" : ["Broadcast_238"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_288"], - "name" : "Broadcast_289", - "op" : "Broadcast", - "outputs" : ["Broadcast_289"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_281"], - "name" : "Broadcast_282", - "op" : "Broadcast", - "outputs" : ["Broadcast_282"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_275"], - "name" : "Broadcast_276", - "op" : "Broadcast", - "outputs" : ["Broadcast_276"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_325"], - "name" : "Broadcast_326", - "op" : "Broadcast", - "outputs" : ["Broadcast_326"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_318"], - "name" : "Broadcast_319", - "op" : "Broadcast", - "outputs" : ["Broadcast_319"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_312"], - "name" : "Broadcast_313", - "op" : "Broadcast", - "outputs" : ["Broadcast_313"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_363"], - "name" : "Broadcast_364", - "op" : "Broadcast", - "outputs" : ["Broadcast_364"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_356"], - "name" : "Broadcast_357", - "op" : "Broadcast", - "outputs" : ["Broadcast_357"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_350"], - "name" : "Broadcast_351", - "op" : "Broadcast", - "outputs" : ["Broadcast_351"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_400"], - "name" : "Broadcast_401", - "op" : "Broadcast", - "outputs" : ["Broadcast_401"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_393"], - "name" : "Broadcast_394", - "op" : "Broadcast", - "outputs" : ["Broadcast_394"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_387"], - "name" : "Broadcast_388", - "op" : "Broadcast", - "outputs" : ["Broadcast_388"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_438"], - "name" : "Broadcast_439", - "op" : "Broadcast", - "outputs" : ["Broadcast_439"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_431"], - "name" : "Broadcast_432", - "op" : "Broadcast", - "outputs" : ["Broadcast_432"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_425"], - "name" : "Broadcast_426", - "op" : "Broadcast", - "outputs" : ["Broadcast_426"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_475"], - "name" : "Broadcast_476", - "op" : "Broadcast", - "outputs" : ["Broadcast_476"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_468"], - "name" : "Broadcast_469", - "op" : "Broadcast", - "outputs" : ["Broadcast_469"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_462"], - "name" : "Broadcast_463", - "op" : "Broadcast", - "outputs" : ["Broadcast_463"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_513"], - "name" : "Broadcast_514", - "op" : "Broadcast", - "outputs" : ["Broadcast_514"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_506"], - "name" : "Broadcast_507", - "op" : "Broadcast", - "outputs" : ["Broadcast_507"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_500"], - "name" : "Broadcast_501", - "op" : "Broadcast", - "outputs" : ["Broadcast_501"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_550"], - "name" : "Broadcast_551", - "op" : "Broadcast", - "outputs" : ["Broadcast_551"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_543"], - "name" : "Broadcast_544", - "op" : "Broadcast", - "outputs" : ["Broadcast_544"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_537"], - "name" : "Broadcast_538", - "op" : "Broadcast", - "outputs" : ["Broadcast_538"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_588"], - "name" : "Broadcast_589", - "op" : "Broadcast", - "outputs" : ["Broadcast_589"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_581"], - "name" : "Broadcast_582", - "op" : "Broadcast", - "outputs" : ["Broadcast_582"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_575"], - "name" : "Broadcast_576", - "op" : "Broadcast", - "outputs" : ["Broadcast_576"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_625"], - "name" : "Broadcast_626", - "op" : "Broadcast", - "outputs" : ["Broadcast_626"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_618"], - "name" : "Broadcast_619", - "op" : "Broadcast", - "outputs" : ["Broadcast_619"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_612"], - "name" : "Broadcast_613", - "op" : "Broadcast", - "outputs" : ["Broadcast_613"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_663"], - "name" : "Broadcast_664", - "op" : "Broadcast", - "outputs" : ["Broadcast_664"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_656"], - "name" : "Broadcast_657", - "op" : "Broadcast", - "outputs" : ["Broadcast_657"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_650"], - "name" : "Broadcast_651", - "op" : "Broadcast", - "outputs" : ["Broadcast_651"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_700"], - "name" : "Broadcast_701", - "op" : "Broadcast", - "outputs" : ["Broadcast_701"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_693"], - "name" : "Broadcast_694", - "op" : "Broadcast", - "outputs" : ["Broadcast_694"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_687"], - "name" : "Broadcast_688", - "op" : "Broadcast", - "outputs" : ["Broadcast_688"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_738"], - "name" : "Broadcast_739", - "op" : "Broadcast", - "outputs" : ["Broadcast_739"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_731"], - "name" : "Broadcast_732", - "op" : "Broadcast", - "outputs" : ["Broadcast_732"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_725"], - "name" : "Broadcast_726", - "op" : "Broadcast", - "outputs" : ["Broadcast_726"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_775"], - "name" : "Broadcast_776", - "op" : "Broadcast", - "outputs" : ["Broadcast_776"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_768"], - "name" : "Broadcast_769", - "op" : "Broadcast", - "outputs" : ["Broadcast_769"], - "shape" : [ 1, 200 ] - }, - { - "axes" : [ 0, 1 ], - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Constant_762"], - "name" : "Broadcast_763", - "op" : "Broadcast", - "outputs" : ["Broadcast_763"], - "shape" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_3"], - "name" : "Reshape_4", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_4"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_5"], - "name" : "Reshape_6", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_6"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_7"], - "name" : "Reshape_8", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_8"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_9"], - "name" : "Reshape_10", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_10"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_11"], - "name" : "Reshape_12", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_12"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_13"], - "name" : "Reshape_14", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_14"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_15"], - "name" : "Reshape_16", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_16"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_17"], - "name" : "Reshape_18", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_18"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_19"], - "name" : "Reshape_20", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_20"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_1"], - "name" : "Reshape_2", - "op" : "Reshape", - "output_shape" : [ 1, 200 ], - "outputs" : ["Reshape_2"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_73", "Reshape_76" ], - "name" : "Dot_77", - "op" : "Dot", - "outputs" : ["Dot_77"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_28", "Reshape_31" ], - "name" : "Dot_32", - "op" : "Dot", - "outputs" : ["Dot_32"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_4", "Reshape_112" ], - "name" : "Dot_113", - "op" : "Dot", - "outputs" : ["Dot_113"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_6", "Reshape_187" ], - "name" : "Dot_188", - "op" : "Dot", - "outputs" : ["Dot_188"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_8", "Reshape_262" ], - "name" : "Dot_263", - "op" : "Dot", - "outputs" : ["Dot_263"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_10", "Reshape_337" ], - "name" : "Dot_338", - "op" : "Dot", - "outputs" : ["Dot_338"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_12", "Reshape_412" ], - "name" : "Dot_413", - "op" : "Dot", - "outputs" : ["Dot_413"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_14", "Reshape_487" ], - "name" : "Dot_488", - "op" : "Dot", - "outputs" : ["Dot_488"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_16", "Reshape_562" ], - "name" : "Dot_563", - "op" : "Dot", - "outputs" : ["Dot_563"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_18", "Reshape_637" ], - "name" : "Dot_638", - "op" : "Dot", - "outputs" : ["Dot_638"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_20", "Reshape_712" ], - "name" : "Dot_713", - "op" : "Dot", - "outputs" : ["Dot_713"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_2", "Reshape_23" ], - "name" : "Dot_24", - "op" : "Dot", - "outputs" : ["Dot_24"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_77", "Reshape_78" ], - "name" : "Add_79", - "op" : "Add", - "outputs" : ["Add_79"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_32", "Reshape_33" ], - "name" : "Add_34", - "op" : "Add", - "outputs" : ["Add_34"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_113", "Reshape_114" ], - "name" : "Add_115", - "op" : "Add", - "outputs" : ["Add_115"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_188", "Reshape_189" ], - "name" : "Add_190", - "op" : "Add", - "outputs" : ["Add_190"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_263", "Reshape_264" ], - "name" : "Add_265", - "op" : "Add", - "outputs" : ["Add_265"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_338", "Reshape_339" ], - "name" : "Add_340", - "op" : "Add", - "outputs" : ["Add_340"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_413", "Reshape_414" ], - "name" : "Add_415", - "op" : "Add", - "outputs" : ["Add_415"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_488", "Reshape_489" ], - "name" : "Add_490", - "op" : "Add", - "outputs" : ["Add_490"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_563", "Reshape_564" ], - "name" : "Add_565", - "op" : "Add", - "outputs" : ["Add_565"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_638", "Reshape_639" ], - "name" : "Add_640", - "op" : "Add", - "outputs" : ["Add_640"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_713", "Reshape_714" ], - "name" : "Add_715", - "op" : "Add", - "outputs" : ["Add_715"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_24", "Reshape_25" ], - "name" : "Add_26", - "op" : "Add", - "outputs" : ["Add_26"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_26", "Add_34" ], - "name" : "Add_35", - "op" : "Add", - "outputs" : ["Add_35"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_35"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_36", - "op" : "Slice", - "outputs" : ["Slice_36"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_35"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_37", - "op" : "Slice", - "outputs" : ["Slice_37"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_35"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_38", - "op" : "Slice", - "outputs" : ["Slice_38"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_35"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_39", - "op" : "Slice", - "outputs" : ["Slice_39"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_36"], - "name" : "Negative_57", - "op" : "Negative", - "outputs" : ["Negative_57"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_37"], - "name" : "Negative_48", - "op" : "Negative", - "outputs" : ["Negative_48"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_38"], - "name" : "Tanh_61", - "op" : "Tanh", - "outputs" : ["Tanh_61"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_39"], - "name" : "Negative_42", - "op" : "Negative", - "outputs" : ["Negative_42"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_57"], - "name" : "Exp_58", - "op" : "Exp", - "outputs" : ["Exp_58"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_48"], - "name" : "Exp_49", - "op" : "Exp", - "outputs" : ["Exp_49"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_42"], - "name" : "Exp_43", - "op" : "Exp", - "outputs" : ["Exp_43"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_56", "Exp_58" ], - "name" : "Add_59", - "op" : "Add", - "outputs" : ["Add_59"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_47", "Exp_49" ], - "name" : "Add_50", - "op" : "Add", - "outputs" : ["Add_50"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_41", "Exp_43" ], - "name" : "Add_44", - "op" : "Add", - "outputs" : ["Add_44"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_56", "Add_59" ], - "name" : "Divide_60", - "op" : "Divide", - "outputs" : ["Divide_60"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_47", "Add_50" ], - "name" : "Divide_51", - "op" : "Divide", - "outputs" : ["Divide_51"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_41", "Add_44" ], - "name" : "Divide_45", - "op" : "Divide", - "outputs" : ["Divide_45"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_60", "Tanh_61" ], - "name" : "Multiply_62", - "op" : "Multiply", - "outputs" : ["Multiply_62"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_51", "Broadcast_53" ], - "name" : "Multiply_54", - "op" : "Multiply", - "outputs" : ["Multiply_54"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_54", "Multiply_62" ], - "name" : "Add_63", - "op" : "Add", - "outputs" : ["Add_63"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_63"], - "name" : "Tanh_64", - "op" : "Tanh", - "outputs" : ["Tanh_64"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_45", "Tanh_64" ], - "name" : "Multiply_65", - "op" : "Multiply", - "outputs" : ["Multiply_65"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_65", "Reshape_68" ], - "name" : "Dot_69", - "op" : "Dot", - "outputs" : ["Dot_69"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_65", "Reshape_116" ], - "name" : "Dot_117", - "op" : "Dot", - "outputs" : ["Dot_117"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_69", "Reshape_70" ], - "name" : "Add_71", - "op" : "Add", - "outputs" : ["Add_71"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_117", "Reshape_118" ], - "name" : "Add_119", - "op" : "Add", - "outputs" : ["Add_119"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_71", "Add_79" ], - "name" : "Add_80", - "op" : "Add", - "outputs" : ["Add_80"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_115", "Add_119" ], - "name" : "Add_120", - "op" : "Add", - "outputs" : ["Add_120"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_80"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_81", - "op" : "Slice", - "outputs" : ["Slice_81"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_80"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_82", - "op" : "Slice", - "outputs" : ["Slice_82"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_80"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_83", - "op" : "Slice", - "outputs" : ["Slice_83"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_80"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_84", - "op" : "Slice", - "outputs" : ["Slice_84"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_120"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_121", - "op" : "Slice", - "outputs" : ["Slice_121"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_120"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_122", - "op" : "Slice", - "outputs" : ["Slice_122"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_120"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_123", - "op" : "Slice", - "outputs" : ["Slice_123"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_120"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_124", - "op" : "Slice", - "outputs" : ["Slice_124"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_81"], - "name" : "Negative_102", - "op" : "Negative", - "outputs" : ["Negative_102"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_82"], - "name" : "Negative_93", - "op" : "Negative", - "outputs" : ["Negative_93"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_83"], - "name" : "Tanh_106", - "op" : "Tanh", - "outputs" : ["Tanh_106"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_84"], - "name" : "Negative_87", - "op" : "Negative", - "outputs" : ["Negative_87"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_121"], - "name" : "Negative_140", - "op" : "Negative", - "outputs" : ["Negative_140"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_122"], - "name" : "Negative_133", - "op" : "Negative", - "outputs" : ["Negative_133"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_123"], - "name" : "Tanh_144", - "op" : "Tanh", - "outputs" : ["Tanh_144"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_124"], - "name" : "Negative_127", - "op" : "Negative", - "outputs" : ["Negative_127"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_102"], - "name" : "Exp_103", - "op" : "Exp", - "outputs" : ["Exp_103"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_93"], - "name" : "Exp_94", - "op" : "Exp", - "outputs" : ["Exp_94"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_87"], - "name" : "Exp_88", - "op" : "Exp", - "outputs" : ["Exp_88"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_140"], - "name" : "Exp_141", - "op" : "Exp", - "outputs" : ["Exp_141"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_133"], - "name" : "Exp_134", - "op" : "Exp", - "outputs" : ["Exp_134"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_127"], - "name" : "Exp_128", - "op" : "Exp", - "outputs" : ["Exp_128"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_101", "Exp_103" ], - "name" : "Add_104", - "op" : "Add", - "outputs" : ["Add_104"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_92", "Exp_94" ], - "name" : "Add_95", - "op" : "Add", - "outputs" : ["Add_95"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_86", "Exp_88" ], - "name" : "Add_89", - "op" : "Add", - "outputs" : ["Add_89"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_139", "Exp_141" ], - "name" : "Add_142", - "op" : "Add", - "outputs" : ["Add_142"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_132", "Exp_134" ], - "name" : "Add_135", - "op" : "Add", - "outputs" : ["Add_135"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_126", "Exp_128" ], - "name" : "Add_129", - "op" : "Add", - "outputs" : ["Add_129"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_101", "Add_104" ], - "name" : "Divide_105", - "op" : "Divide", - "outputs" : ["Divide_105"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_92", "Add_95" ], - "name" : "Divide_96", - "op" : "Divide", - "outputs" : ["Divide_96"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_86", "Add_89" ], - "name" : "Divide_90", - "op" : "Divide", - "outputs" : ["Divide_90"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_139", "Add_142" ], - "name" : "Divide_143", - "op" : "Divide", - "outputs" : ["Divide_143"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_132", "Add_135" ], - "name" : "Divide_136", - "op" : "Divide", - "outputs" : ["Divide_136"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_126", "Add_129" ], - "name" : "Divide_130", - "op" : "Divide", - "outputs" : ["Divide_130"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_105", "Tanh_106" ], - "name" : "Multiply_107", - "op" : "Multiply", - "outputs" : ["Multiply_107"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_96", "Broadcast_98" ], - "name" : "Multiply_99", - "op" : "Multiply", - "outputs" : ["Multiply_99"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_143", "Tanh_144" ], - "name" : "Multiply_145", - "op" : "Multiply", - "outputs" : ["Multiply_145"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_136", "Add_63" ], - "name" : "Multiply_137", - "op" : "Multiply", - "outputs" : ["Multiply_137"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_99", "Multiply_107" ], - "name" : "Add_108", - "op" : "Add", - "outputs" : ["Add_108"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_137", "Multiply_145" ], - "name" : "Add_146", - "op" : "Add", - "outputs" : ["Add_146"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_108"], - "name" : "Tanh_109", - "op" : "Tanh", - "outputs" : ["Tanh_109"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_146"], - "name" : "Tanh_147", - "op" : "Tanh", - "outputs" : ["Tanh_147"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_90", "Tanh_109" ], - "name" : "Multiply_110", - "op" : "Multiply", - "outputs" : ["Multiply_110"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_130", "Tanh_147" ], - "name" : "Multiply_148", - "op" : "Multiply", - "outputs" : ["Multiply_148"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_110"], - "name" : "Reshape_111", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_111"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_110", "Reshape_153" ], - "name" : "Dot_154", - "op" : "Dot", - "outputs" : ["Dot_154"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_148", "Reshape_149" ], - "name" : "Dot_150", - "op" : "Dot", - "outputs" : ["Dot_150"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_148", "Reshape_191" ], - "name" : "Dot_192", - "op" : "Dot", - "outputs" : ["Dot_192"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_154", "Reshape_155" ], - "name" : "Add_156", - "op" : "Add", - "outputs" : ["Add_156"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_150", "Reshape_151" ], - "name" : "Add_152", - "op" : "Add", - "outputs" : ["Add_152"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_192", "Reshape_193" ], - "name" : "Add_194", - "op" : "Add", - "outputs" : ["Add_194"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_152", "Add_156" ], - "name" : "Add_157", - "op" : "Add", - "outputs" : ["Add_157"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_190", "Add_194" ], - "name" : "Add_195", - "op" : "Add", - "outputs" : ["Add_195"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_157"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_158", - "op" : "Slice", - "outputs" : ["Slice_158"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_157"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_159", - "op" : "Slice", - "outputs" : ["Slice_159"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_157"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_160", - "op" : "Slice", - "outputs" : ["Slice_160"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_157"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_161", - "op" : "Slice", - "outputs" : ["Slice_161"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_195"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_196", - "op" : "Slice", - "outputs" : ["Slice_196"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_195"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_197", - "op" : "Slice", - "outputs" : ["Slice_197"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_195"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_198", - "op" : "Slice", - "outputs" : ["Slice_198"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_195"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_199", - "op" : "Slice", - "outputs" : ["Slice_199"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_158"], - "name" : "Negative_177", - "op" : "Negative", - "outputs" : ["Negative_177"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_159"], - "name" : "Negative_170", - "op" : "Negative", - "outputs" : ["Negative_170"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_160"], - "name" : "Tanh_181", - "op" : "Tanh", - "outputs" : ["Tanh_181"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_161"], - "name" : "Negative_164", - "op" : "Negative", - "outputs" : ["Negative_164"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_196"], - "name" : "Negative_215", - "op" : "Negative", - "outputs" : ["Negative_215"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_197"], - "name" : "Negative_208", - "op" : "Negative", - "outputs" : ["Negative_208"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_198"], - "name" : "Tanh_219", - "op" : "Tanh", - "outputs" : ["Tanh_219"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_199"], - "name" : "Negative_202", - "op" : "Negative", - "outputs" : ["Negative_202"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_177"], - "name" : "Exp_178", - "op" : "Exp", - "outputs" : ["Exp_178"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_170"], - "name" : "Exp_171", - "op" : "Exp", - "outputs" : ["Exp_171"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_164"], - "name" : "Exp_165", - "op" : "Exp", - "outputs" : ["Exp_165"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_215"], - "name" : "Exp_216", - "op" : "Exp", - "outputs" : ["Exp_216"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_208"], - "name" : "Exp_209", - "op" : "Exp", - "outputs" : ["Exp_209"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_202"], - "name" : "Exp_203", - "op" : "Exp", - "outputs" : ["Exp_203"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_176", "Exp_178" ], - "name" : "Add_179", - "op" : "Add", - "outputs" : ["Add_179"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_169", "Exp_171" ], - "name" : "Add_172", - "op" : "Add", - "outputs" : ["Add_172"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_163", "Exp_165" ], - "name" : "Add_166", - "op" : "Add", - "outputs" : ["Add_166"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_214", "Exp_216" ], - "name" : "Add_217", - "op" : "Add", - "outputs" : ["Add_217"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_207", "Exp_209" ], - "name" : "Add_210", - "op" : "Add", - "outputs" : ["Add_210"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_201", "Exp_203" ], - "name" : "Add_204", - "op" : "Add", - "outputs" : ["Add_204"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_176", "Add_179" ], - "name" : "Divide_180", - "op" : "Divide", - "outputs" : ["Divide_180"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_169", "Add_172" ], - "name" : "Divide_173", - "op" : "Divide", - "outputs" : ["Divide_173"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_163", "Add_166" ], - "name" : "Divide_167", - "op" : "Divide", - "outputs" : ["Divide_167"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_214", "Add_217" ], - "name" : "Divide_218", - "op" : "Divide", - "outputs" : ["Divide_218"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_207", "Add_210" ], - "name" : "Divide_211", - "op" : "Divide", - "outputs" : ["Divide_211"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_201", "Add_204" ], - "name" : "Divide_205", - "op" : "Divide", - "outputs" : ["Divide_205"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_180", "Tanh_181" ], - "name" : "Multiply_182", - "op" : "Multiply", - "outputs" : ["Multiply_182"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_173", "Add_108" ], - "name" : "Multiply_174", - "op" : "Multiply", - "outputs" : ["Multiply_174"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_218", "Tanh_219" ], - "name" : "Multiply_220", - "op" : "Multiply", - "outputs" : ["Multiply_220"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_211", "Add_146" ], - "name" : "Multiply_212", - "op" : "Multiply", - "outputs" : ["Multiply_212"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_174", "Multiply_182" ], - "name" : "Add_183", - "op" : "Add", - "outputs" : ["Add_183"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_212", "Multiply_220" ], - "name" : "Add_221", - "op" : "Add", - "outputs" : ["Add_221"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_183"], - "name" : "Tanh_184", - "op" : "Tanh", - "outputs" : ["Tanh_184"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_221"], - "name" : "Tanh_222", - "op" : "Tanh", - "outputs" : ["Tanh_222"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_167", "Tanh_184" ], - "name" : "Multiply_185", - "op" : "Multiply", - "outputs" : ["Multiply_185"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_205", "Tanh_222" ], - "name" : "Multiply_223", - "op" : "Multiply", - "outputs" : ["Multiply_223"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_185"], - "name" : "Reshape_186", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_186"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_185", "Reshape_228" ], - "name" : "Dot_229", - "op" : "Dot", - "outputs" : ["Dot_229"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_223", "Reshape_224" ], - "name" : "Dot_225", - "op" : "Dot", - "outputs" : ["Dot_225"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_223", "Reshape_266" ], - "name" : "Dot_267", - "op" : "Dot", - "outputs" : ["Dot_267"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_229", "Reshape_230" ], - "name" : "Add_231", - "op" : "Add", - "outputs" : ["Add_231"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_225", "Reshape_226" ], - "name" : "Add_227", - "op" : "Add", - "outputs" : ["Add_227"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_267", "Reshape_268" ], - "name" : "Add_269", - "op" : "Add", - "outputs" : ["Add_269"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_227", "Add_231" ], - "name" : "Add_232", - "op" : "Add", - "outputs" : ["Add_232"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_265", "Add_269" ], - "name" : "Add_270", - "op" : "Add", - "outputs" : ["Add_270"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_232"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_233", - "op" : "Slice", - "outputs" : ["Slice_233"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_232"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_234", - "op" : "Slice", - "outputs" : ["Slice_234"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_232"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_235", - "op" : "Slice", - "outputs" : ["Slice_235"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_232"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_236", - "op" : "Slice", - "outputs" : ["Slice_236"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_270"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_271", - "op" : "Slice", - "outputs" : ["Slice_271"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_270"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_272", - "op" : "Slice", - "outputs" : ["Slice_272"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_270"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_273", - "op" : "Slice", - "outputs" : ["Slice_273"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_270"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_274", - "op" : "Slice", - "outputs" : ["Slice_274"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_233"], - "name" : "Negative_252", - "op" : "Negative", - "outputs" : ["Negative_252"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_234"], - "name" : "Negative_245", - "op" : "Negative", - "outputs" : ["Negative_245"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_235"], - "name" : "Tanh_256", - "op" : "Tanh", - "outputs" : ["Tanh_256"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_236"], - "name" : "Negative_239", - "op" : "Negative", - "outputs" : ["Negative_239"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_271"], - "name" : "Negative_290", - "op" : "Negative", - "outputs" : ["Negative_290"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_272"], - "name" : "Negative_283", - "op" : "Negative", - "outputs" : ["Negative_283"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_273"], - "name" : "Tanh_294", - "op" : "Tanh", - "outputs" : ["Tanh_294"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_274"], - "name" : "Negative_277", - "op" : "Negative", - "outputs" : ["Negative_277"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_252"], - "name" : "Exp_253", - "op" : "Exp", - "outputs" : ["Exp_253"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_245"], - "name" : "Exp_246", - "op" : "Exp", - "outputs" : ["Exp_246"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_239"], - "name" : "Exp_240", - "op" : "Exp", - "outputs" : ["Exp_240"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_290"], - "name" : "Exp_291", - "op" : "Exp", - "outputs" : ["Exp_291"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_283"], - "name" : "Exp_284", - "op" : "Exp", - "outputs" : ["Exp_284"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_277"], - "name" : "Exp_278", - "op" : "Exp", - "outputs" : ["Exp_278"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_251", "Exp_253" ], - "name" : "Add_254", - "op" : "Add", - "outputs" : ["Add_254"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_244", "Exp_246" ], - "name" : "Add_247", - "op" : "Add", - "outputs" : ["Add_247"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_238", "Exp_240" ], - "name" : "Add_241", - "op" : "Add", - "outputs" : ["Add_241"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_289", "Exp_291" ], - "name" : "Add_292", - "op" : "Add", - "outputs" : ["Add_292"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_282", "Exp_284" ], - "name" : "Add_285", - "op" : "Add", - "outputs" : ["Add_285"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_276", "Exp_278" ], - "name" : "Add_279", - "op" : "Add", - "outputs" : ["Add_279"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_251", "Add_254" ], - "name" : "Divide_255", - "op" : "Divide", - "outputs" : ["Divide_255"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_244", "Add_247" ], - "name" : "Divide_248", - "op" : "Divide", - "outputs" : ["Divide_248"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_238", "Add_241" ], - "name" : "Divide_242", - "op" : "Divide", - "outputs" : ["Divide_242"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_289", "Add_292" ], - "name" : "Divide_293", - "op" : "Divide", - "outputs" : ["Divide_293"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_282", "Add_285" ], - "name" : "Divide_286", - "op" : "Divide", - "outputs" : ["Divide_286"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_276", "Add_279" ], - "name" : "Divide_280", - "op" : "Divide", - "outputs" : ["Divide_280"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_255", "Tanh_256" ], - "name" : "Multiply_257", - "op" : "Multiply", - "outputs" : ["Multiply_257"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_248", "Add_183" ], - "name" : "Multiply_249", - "op" : "Multiply", - "outputs" : ["Multiply_249"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_293", "Tanh_294" ], - "name" : "Multiply_295", - "op" : "Multiply", - "outputs" : ["Multiply_295"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_286", "Add_221" ], - "name" : "Multiply_287", - "op" : "Multiply", - "outputs" : ["Multiply_287"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_249", "Multiply_257" ], - "name" : "Add_258", - "op" : "Add", - "outputs" : ["Add_258"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_287", "Multiply_295" ], - "name" : "Add_296", - "op" : "Add", - "outputs" : ["Add_296"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_258"], - "name" : "Tanh_259", - "op" : "Tanh", - "outputs" : ["Tanh_259"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_296"], - "name" : "Tanh_297", - "op" : "Tanh", - "outputs" : ["Tanh_297"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_242", "Tanh_259" ], - "name" : "Multiply_260", - "op" : "Multiply", - "outputs" : ["Multiply_260"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_280", "Tanh_297" ], - "name" : "Multiply_298", - "op" : "Multiply", - "outputs" : ["Multiply_298"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_260"], - "name" : "Reshape_261", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_261"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_260", "Reshape_303" ], - "name" : "Dot_304", - "op" : "Dot", - "outputs" : ["Dot_304"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_298", "Reshape_299" ], - "name" : "Dot_300", - "op" : "Dot", - "outputs" : ["Dot_300"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_298", "Reshape_341" ], - "name" : "Dot_342", - "op" : "Dot", - "outputs" : ["Dot_342"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_304", "Reshape_305" ], - "name" : "Add_306", - "op" : "Add", - "outputs" : ["Add_306"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_300", "Reshape_301" ], - "name" : "Add_302", - "op" : "Add", - "outputs" : ["Add_302"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_342", "Reshape_343" ], - "name" : "Add_344", - "op" : "Add", - "outputs" : ["Add_344"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_302", "Add_306" ], - "name" : "Add_307", - "op" : "Add", - "outputs" : ["Add_307"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_340", "Add_344" ], - "name" : "Add_345", - "op" : "Add", - "outputs" : ["Add_345"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_307"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_308", - "op" : "Slice", - "outputs" : ["Slice_308"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_307"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_309", - "op" : "Slice", - "outputs" : ["Slice_309"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_307"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_310", - "op" : "Slice", - "outputs" : ["Slice_310"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_307"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_311", - "op" : "Slice", - "outputs" : ["Slice_311"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_345"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_346", - "op" : "Slice", - "outputs" : ["Slice_346"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_345"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_347", - "op" : "Slice", - "outputs" : ["Slice_347"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_345"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_348", - "op" : "Slice", - "outputs" : ["Slice_348"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_345"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_349", - "op" : "Slice", - "outputs" : ["Slice_349"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_308"], - "name" : "Negative_327", - "op" : "Negative", - "outputs" : ["Negative_327"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_309"], - "name" : "Negative_320", - "op" : "Negative", - "outputs" : ["Negative_320"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_310"], - "name" : "Tanh_331", - "op" : "Tanh", - "outputs" : ["Tanh_331"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_311"], - "name" : "Negative_314", - "op" : "Negative", - "outputs" : ["Negative_314"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_346"], - "name" : "Negative_365", - "op" : "Negative", - "outputs" : ["Negative_365"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_347"], - "name" : "Negative_358", - "op" : "Negative", - "outputs" : ["Negative_358"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_348"], - "name" : "Tanh_369", - "op" : "Tanh", - "outputs" : ["Tanh_369"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_349"], - "name" : "Negative_352", - "op" : "Negative", - "outputs" : ["Negative_352"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_327"], - "name" : "Exp_328", - "op" : "Exp", - "outputs" : ["Exp_328"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_320"], - "name" : "Exp_321", - "op" : "Exp", - "outputs" : ["Exp_321"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_314"], - "name" : "Exp_315", - "op" : "Exp", - "outputs" : ["Exp_315"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_365"], - "name" : "Exp_366", - "op" : "Exp", - "outputs" : ["Exp_366"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_358"], - "name" : "Exp_359", - "op" : "Exp", - "outputs" : ["Exp_359"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_352"], - "name" : "Exp_353", - "op" : "Exp", - "outputs" : ["Exp_353"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_326", "Exp_328" ], - "name" : "Add_329", - "op" : "Add", - "outputs" : ["Add_329"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_319", "Exp_321" ], - "name" : "Add_322", - "op" : "Add", - "outputs" : ["Add_322"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_313", "Exp_315" ], - "name" : "Add_316", - "op" : "Add", - "outputs" : ["Add_316"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_364", "Exp_366" ], - "name" : "Add_367", - "op" : "Add", - "outputs" : ["Add_367"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_357", "Exp_359" ], - "name" : "Add_360", - "op" : "Add", - "outputs" : ["Add_360"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_351", "Exp_353" ], - "name" : "Add_354", - "op" : "Add", - "outputs" : ["Add_354"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_326", "Add_329" ], - "name" : "Divide_330", - "op" : "Divide", - "outputs" : ["Divide_330"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_319", "Add_322" ], - "name" : "Divide_323", - "op" : "Divide", - "outputs" : ["Divide_323"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_313", "Add_316" ], - "name" : "Divide_317", - "op" : "Divide", - "outputs" : ["Divide_317"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_364", "Add_367" ], - "name" : "Divide_368", - "op" : "Divide", - "outputs" : ["Divide_368"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_357", "Add_360" ], - "name" : "Divide_361", - "op" : "Divide", - "outputs" : ["Divide_361"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_351", "Add_354" ], - "name" : "Divide_355", - "op" : "Divide", - "outputs" : ["Divide_355"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_330", "Tanh_331" ], - "name" : "Multiply_332", - "op" : "Multiply", - "outputs" : ["Multiply_332"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_323", "Add_258" ], - "name" : "Multiply_324", - "op" : "Multiply", - "outputs" : ["Multiply_324"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_368", "Tanh_369" ], - "name" : "Multiply_370", - "op" : "Multiply", - "outputs" : ["Multiply_370"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_361", "Add_296" ], - "name" : "Multiply_362", - "op" : "Multiply", - "outputs" : ["Multiply_362"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_324", "Multiply_332" ], - "name" : "Add_333", - "op" : "Add", - "outputs" : ["Add_333"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_362", "Multiply_370" ], - "name" : "Add_371", - "op" : "Add", - "outputs" : ["Add_371"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_333"], - "name" : "Tanh_334", - "op" : "Tanh", - "outputs" : ["Tanh_334"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_371"], - "name" : "Tanh_372", - "op" : "Tanh", - "outputs" : ["Tanh_372"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_317", "Tanh_334" ], - "name" : "Multiply_335", - "op" : "Multiply", - "outputs" : ["Multiply_335"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_355", "Tanh_372" ], - "name" : "Multiply_373", - "op" : "Multiply", - "outputs" : ["Multiply_373"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_335"], - "name" : "Reshape_336", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_336"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_335", "Reshape_378" ], - "name" : "Dot_379", - "op" : "Dot", - "outputs" : ["Dot_379"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_373", "Reshape_374" ], - "name" : "Dot_375", - "op" : "Dot", - "outputs" : ["Dot_375"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_373", "Reshape_416" ], - "name" : "Dot_417", - "op" : "Dot", - "outputs" : ["Dot_417"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_379", "Reshape_380" ], - "name" : "Add_381", - "op" : "Add", - "outputs" : ["Add_381"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_375", "Reshape_376" ], - "name" : "Add_377", - "op" : "Add", - "outputs" : ["Add_377"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_417", "Reshape_418" ], - "name" : "Add_419", - "op" : "Add", - "outputs" : ["Add_419"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_377", "Add_381" ], - "name" : "Add_382", - "op" : "Add", - "outputs" : ["Add_382"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_415", "Add_419" ], - "name" : "Add_420", - "op" : "Add", - "outputs" : ["Add_420"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_382"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_383", - "op" : "Slice", - "outputs" : ["Slice_383"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_382"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_384", - "op" : "Slice", - "outputs" : ["Slice_384"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_382"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_385", - "op" : "Slice", - "outputs" : ["Slice_385"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_382"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_386", - "op" : "Slice", - "outputs" : ["Slice_386"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_420"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_421", - "op" : "Slice", - "outputs" : ["Slice_421"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_420"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_422", - "op" : "Slice", - "outputs" : ["Slice_422"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_420"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_423", - "op" : "Slice", - "outputs" : ["Slice_423"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_420"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_424", - "op" : "Slice", - "outputs" : ["Slice_424"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_383"], - "name" : "Negative_402", - "op" : "Negative", - "outputs" : ["Negative_402"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_384"], - "name" : "Negative_395", - "op" : "Negative", - "outputs" : ["Negative_395"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_385"], - "name" : "Tanh_406", - "op" : "Tanh", - "outputs" : ["Tanh_406"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_386"], - "name" : "Negative_389", - "op" : "Negative", - "outputs" : ["Negative_389"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_421"], - "name" : "Negative_440", - "op" : "Negative", - "outputs" : ["Negative_440"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_422"], - "name" : "Negative_433", - "op" : "Negative", - "outputs" : ["Negative_433"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_423"], - "name" : "Tanh_444", - "op" : "Tanh", - "outputs" : ["Tanh_444"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_424"], - "name" : "Negative_427", - "op" : "Negative", - "outputs" : ["Negative_427"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_402"], - "name" : "Exp_403", - "op" : "Exp", - "outputs" : ["Exp_403"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_395"], - "name" : "Exp_396", - "op" : "Exp", - "outputs" : ["Exp_396"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_389"], - "name" : "Exp_390", - "op" : "Exp", - "outputs" : ["Exp_390"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_440"], - "name" : "Exp_441", - "op" : "Exp", - "outputs" : ["Exp_441"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_433"], - "name" : "Exp_434", - "op" : "Exp", - "outputs" : ["Exp_434"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_427"], - "name" : "Exp_428", - "op" : "Exp", - "outputs" : ["Exp_428"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_401", "Exp_403" ], - "name" : "Add_404", - "op" : "Add", - "outputs" : ["Add_404"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_394", "Exp_396" ], - "name" : "Add_397", - "op" : "Add", - "outputs" : ["Add_397"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_388", "Exp_390" ], - "name" : "Add_391", - "op" : "Add", - "outputs" : ["Add_391"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_439", "Exp_441" ], - "name" : "Add_442", - "op" : "Add", - "outputs" : ["Add_442"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_432", "Exp_434" ], - "name" : "Add_435", - "op" : "Add", - "outputs" : ["Add_435"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_426", "Exp_428" ], - "name" : "Add_429", - "op" : "Add", - "outputs" : ["Add_429"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_401", "Add_404" ], - "name" : "Divide_405", - "op" : "Divide", - "outputs" : ["Divide_405"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_394", "Add_397" ], - "name" : "Divide_398", - "op" : "Divide", - "outputs" : ["Divide_398"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_388", "Add_391" ], - "name" : "Divide_392", - "op" : "Divide", - "outputs" : ["Divide_392"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_439", "Add_442" ], - "name" : "Divide_443", - "op" : "Divide", - "outputs" : ["Divide_443"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_432", "Add_435" ], - "name" : "Divide_436", - "op" : "Divide", - "outputs" : ["Divide_436"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_426", "Add_429" ], - "name" : "Divide_430", - "op" : "Divide", - "outputs" : ["Divide_430"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_405", "Tanh_406" ], - "name" : "Multiply_407", - "op" : "Multiply", - "outputs" : ["Multiply_407"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_398", "Add_333" ], - "name" : "Multiply_399", - "op" : "Multiply", - "outputs" : ["Multiply_399"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_443", "Tanh_444" ], - "name" : "Multiply_445", - "op" : "Multiply", - "outputs" : ["Multiply_445"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_436", "Add_371" ], - "name" : "Multiply_437", - "op" : "Multiply", - "outputs" : ["Multiply_437"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_399", "Multiply_407" ], - "name" : "Add_408", - "op" : "Add", - "outputs" : ["Add_408"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_437", "Multiply_445" ], - "name" : "Add_446", - "op" : "Add", - "outputs" : ["Add_446"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_408"], - "name" : "Tanh_409", - "op" : "Tanh", - "outputs" : ["Tanh_409"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_446"], - "name" : "Tanh_447", - "op" : "Tanh", - "outputs" : ["Tanh_447"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_392", "Tanh_409" ], - "name" : "Multiply_410", - "op" : "Multiply", - "outputs" : ["Multiply_410"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_430", "Tanh_447" ], - "name" : "Multiply_448", - "op" : "Multiply", - "outputs" : ["Multiply_448"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_410"], - "name" : "Reshape_411", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_411"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_410", "Reshape_453" ], - "name" : "Dot_454", - "op" : "Dot", - "outputs" : ["Dot_454"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_448", "Reshape_449" ], - "name" : "Dot_450", - "op" : "Dot", - "outputs" : ["Dot_450"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_448", "Reshape_491" ], - "name" : "Dot_492", - "op" : "Dot", - "outputs" : ["Dot_492"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_454", "Reshape_455" ], - "name" : "Add_456", - "op" : "Add", - "outputs" : ["Add_456"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_450", "Reshape_451" ], - "name" : "Add_452", - "op" : "Add", - "outputs" : ["Add_452"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_492", "Reshape_493" ], - "name" : "Add_494", - "op" : "Add", - "outputs" : ["Add_494"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_452", "Add_456" ], - "name" : "Add_457", - "op" : "Add", - "outputs" : ["Add_457"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_490", "Add_494" ], - "name" : "Add_495", - "op" : "Add", - "outputs" : ["Add_495"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_457"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_458", - "op" : "Slice", - "outputs" : ["Slice_458"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_457"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_459", - "op" : "Slice", - "outputs" : ["Slice_459"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_457"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_460", - "op" : "Slice", - "outputs" : ["Slice_460"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_457"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_461", - "op" : "Slice", - "outputs" : ["Slice_461"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_495"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_496", - "op" : "Slice", - "outputs" : ["Slice_496"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_495"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_497", - "op" : "Slice", - "outputs" : ["Slice_497"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_495"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_498", - "op" : "Slice", - "outputs" : ["Slice_498"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_495"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_499", - "op" : "Slice", - "outputs" : ["Slice_499"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_458"], - "name" : "Negative_477", - "op" : "Negative", - "outputs" : ["Negative_477"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_459"], - "name" : "Negative_470", - "op" : "Negative", - "outputs" : ["Negative_470"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_460"], - "name" : "Tanh_481", - "op" : "Tanh", - "outputs" : ["Tanh_481"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_461"], - "name" : "Negative_464", - "op" : "Negative", - "outputs" : ["Negative_464"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_496"], - "name" : "Negative_515", - "op" : "Negative", - "outputs" : ["Negative_515"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_497"], - "name" : "Negative_508", - "op" : "Negative", - "outputs" : ["Negative_508"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_498"], - "name" : "Tanh_519", - "op" : "Tanh", - "outputs" : ["Tanh_519"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_499"], - "name" : "Negative_502", - "op" : "Negative", - "outputs" : ["Negative_502"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_477"], - "name" : "Exp_478", - "op" : "Exp", - "outputs" : ["Exp_478"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_470"], - "name" : "Exp_471", - "op" : "Exp", - "outputs" : ["Exp_471"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_464"], - "name" : "Exp_465", - "op" : "Exp", - "outputs" : ["Exp_465"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_515"], - "name" : "Exp_516", - "op" : "Exp", - "outputs" : ["Exp_516"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_508"], - "name" : "Exp_509", - "op" : "Exp", - "outputs" : ["Exp_509"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_502"], - "name" : "Exp_503", - "op" : "Exp", - "outputs" : ["Exp_503"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_476", "Exp_478" ], - "name" : "Add_479", - "op" : "Add", - "outputs" : ["Add_479"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_469", "Exp_471" ], - "name" : "Add_472", - "op" : "Add", - "outputs" : ["Add_472"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_463", "Exp_465" ], - "name" : "Add_466", - "op" : "Add", - "outputs" : ["Add_466"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_514", "Exp_516" ], - "name" : "Add_517", - "op" : "Add", - "outputs" : ["Add_517"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_507", "Exp_509" ], - "name" : "Add_510", - "op" : "Add", - "outputs" : ["Add_510"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_501", "Exp_503" ], - "name" : "Add_504", - "op" : "Add", - "outputs" : ["Add_504"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_476", "Add_479" ], - "name" : "Divide_480", - "op" : "Divide", - "outputs" : ["Divide_480"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_469", "Add_472" ], - "name" : "Divide_473", - "op" : "Divide", - "outputs" : ["Divide_473"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_463", "Add_466" ], - "name" : "Divide_467", - "op" : "Divide", - "outputs" : ["Divide_467"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_514", "Add_517" ], - "name" : "Divide_518", - "op" : "Divide", - "outputs" : ["Divide_518"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_507", "Add_510" ], - "name" : "Divide_511", - "op" : "Divide", - "outputs" : ["Divide_511"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_501", "Add_504" ], - "name" : "Divide_505", - "op" : "Divide", - "outputs" : ["Divide_505"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_480", "Tanh_481" ], - "name" : "Multiply_482", - "op" : "Multiply", - "outputs" : ["Multiply_482"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_473", "Add_408" ], - "name" : "Multiply_474", - "op" : "Multiply", - "outputs" : ["Multiply_474"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_518", "Tanh_519" ], - "name" : "Multiply_520", - "op" : "Multiply", - "outputs" : ["Multiply_520"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_511", "Add_446" ], - "name" : "Multiply_512", - "op" : "Multiply", - "outputs" : ["Multiply_512"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_474", "Multiply_482" ], - "name" : "Add_483", - "op" : "Add", - "outputs" : ["Add_483"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_512", "Multiply_520" ], - "name" : "Add_521", - "op" : "Add", - "outputs" : ["Add_521"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_483"], - "name" : "Tanh_484", - "op" : "Tanh", - "outputs" : ["Tanh_484"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_521"], - "name" : "Tanh_522", - "op" : "Tanh", - "outputs" : ["Tanh_522"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_467", "Tanh_484" ], - "name" : "Multiply_485", - "op" : "Multiply", - "outputs" : ["Multiply_485"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_505", "Tanh_522" ], - "name" : "Multiply_523", - "op" : "Multiply", - "outputs" : ["Multiply_523"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_485"], - "name" : "Reshape_486", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_486"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_485", "Reshape_528" ], - "name" : "Dot_529", - "op" : "Dot", - "outputs" : ["Dot_529"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_523", "Reshape_524" ], - "name" : "Dot_525", - "op" : "Dot", - "outputs" : ["Dot_525"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_523", "Reshape_566" ], - "name" : "Dot_567", - "op" : "Dot", - "outputs" : ["Dot_567"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_529", "Reshape_530" ], - "name" : "Add_531", - "op" : "Add", - "outputs" : ["Add_531"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_525", "Reshape_526" ], - "name" : "Add_527", - "op" : "Add", - "outputs" : ["Add_527"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_567", "Reshape_568" ], - "name" : "Add_569", - "op" : "Add", - "outputs" : ["Add_569"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_527", "Add_531" ], - "name" : "Add_532", - "op" : "Add", - "outputs" : ["Add_532"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_565", "Add_569" ], - "name" : "Add_570", - "op" : "Add", - "outputs" : ["Add_570"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_532"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_533", - "op" : "Slice", - "outputs" : ["Slice_533"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_532"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_534", - "op" : "Slice", - "outputs" : ["Slice_534"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_532"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_535", - "op" : "Slice", - "outputs" : ["Slice_535"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_532"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_536", - "op" : "Slice", - "outputs" : ["Slice_536"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_570"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_571", - "op" : "Slice", - "outputs" : ["Slice_571"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_570"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_572", - "op" : "Slice", - "outputs" : ["Slice_572"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_570"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_573", - "op" : "Slice", - "outputs" : ["Slice_573"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_570"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_574", - "op" : "Slice", - "outputs" : ["Slice_574"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_533"], - "name" : "Negative_552", - "op" : "Negative", - "outputs" : ["Negative_552"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_534"], - "name" : "Negative_545", - "op" : "Negative", - "outputs" : ["Negative_545"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_535"], - "name" : "Tanh_556", - "op" : "Tanh", - "outputs" : ["Tanh_556"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_536"], - "name" : "Negative_539", - "op" : "Negative", - "outputs" : ["Negative_539"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_571"], - "name" : "Negative_590", - "op" : "Negative", - "outputs" : ["Negative_590"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_572"], - "name" : "Negative_583", - "op" : "Negative", - "outputs" : ["Negative_583"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_573"], - "name" : "Tanh_594", - "op" : "Tanh", - "outputs" : ["Tanh_594"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_574"], - "name" : "Negative_577", - "op" : "Negative", - "outputs" : ["Negative_577"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_552"], - "name" : "Exp_553", - "op" : "Exp", - "outputs" : ["Exp_553"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_545"], - "name" : "Exp_546", - "op" : "Exp", - "outputs" : ["Exp_546"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_539"], - "name" : "Exp_540", - "op" : "Exp", - "outputs" : ["Exp_540"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_590"], - "name" : "Exp_591", - "op" : "Exp", - "outputs" : ["Exp_591"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_583"], - "name" : "Exp_584", - "op" : "Exp", - "outputs" : ["Exp_584"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_577"], - "name" : "Exp_578", - "op" : "Exp", - "outputs" : ["Exp_578"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_551", "Exp_553" ], - "name" : "Add_554", - "op" : "Add", - "outputs" : ["Add_554"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_544", "Exp_546" ], - "name" : "Add_547", - "op" : "Add", - "outputs" : ["Add_547"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_538", "Exp_540" ], - "name" : "Add_541", - "op" : "Add", - "outputs" : ["Add_541"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_589", "Exp_591" ], - "name" : "Add_592", - "op" : "Add", - "outputs" : ["Add_592"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_582", "Exp_584" ], - "name" : "Add_585", - "op" : "Add", - "outputs" : ["Add_585"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_576", "Exp_578" ], - "name" : "Add_579", - "op" : "Add", - "outputs" : ["Add_579"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_551", "Add_554" ], - "name" : "Divide_555", - "op" : "Divide", - "outputs" : ["Divide_555"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_544", "Add_547" ], - "name" : "Divide_548", - "op" : "Divide", - "outputs" : ["Divide_548"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_538", "Add_541" ], - "name" : "Divide_542", - "op" : "Divide", - "outputs" : ["Divide_542"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_589", "Add_592" ], - "name" : "Divide_593", - "op" : "Divide", - "outputs" : ["Divide_593"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_582", "Add_585" ], - "name" : "Divide_586", - "op" : "Divide", - "outputs" : ["Divide_586"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_576", "Add_579" ], - "name" : "Divide_580", - "op" : "Divide", - "outputs" : ["Divide_580"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_555", "Tanh_556" ], - "name" : "Multiply_557", - "op" : "Multiply", - "outputs" : ["Multiply_557"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_548", "Add_483" ], - "name" : "Multiply_549", - "op" : "Multiply", - "outputs" : ["Multiply_549"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_593", "Tanh_594" ], - "name" : "Multiply_595", - "op" : "Multiply", - "outputs" : ["Multiply_595"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_586", "Add_521" ], - "name" : "Multiply_587", - "op" : "Multiply", - "outputs" : ["Multiply_587"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_549", "Multiply_557" ], - "name" : "Add_558", - "op" : "Add", - "outputs" : ["Add_558"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_587", "Multiply_595" ], - "name" : "Add_596", - "op" : "Add", - "outputs" : ["Add_596"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_558"], - "name" : "Tanh_559", - "op" : "Tanh", - "outputs" : ["Tanh_559"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_596"], - "name" : "Tanh_597", - "op" : "Tanh", - "outputs" : ["Tanh_597"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_542", "Tanh_559" ], - "name" : "Multiply_560", - "op" : "Multiply", - "outputs" : ["Multiply_560"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_580", "Tanh_597" ], - "name" : "Multiply_598", - "op" : "Multiply", - "outputs" : ["Multiply_598"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_560"], - "name" : "Reshape_561", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_561"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_560", "Reshape_603" ], - "name" : "Dot_604", - "op" : "Dot", - "outputs" : ["Dot_604"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_598", "Reshape_599" ], - "name" : "Dot_600", - "op" : "Dot", - "outputs" : ["Dot_600"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_598", "Reshape_641" ], - "name" : "Dot_642", - "op" : "Dot", - "outputs" : ["Dot_642"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_604", "Reshape_605" ], - "name" : "Add_606", - "op" : "Add", - "outputs" : ["Add_606"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_600", "Reshape_601" ], - "name" : "Add_602", - "op" : "Add", - "outputs" : ["Add_602"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_642", "Reshape_643" ], - "name" : "Add_644", - "op" : "Add", - "outputs" : ["Add_644"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_602", "Add_606" ], - "name" : "Add_607", - "op" : "Add", - "outputs" : ["Add_607"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_640", "Add_644" ], - "name" : "Add_645", - "op" : "Add", - "outputs" : ["Add_645"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_607"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_608", - "op" : "Slice", - "outputs" : ["Slice_608"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_607"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_609", - "op" : "Slice", - "outputs" : ["Slice_609"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_607"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_610", - "op" : "Slice", - "outputs" : ["Slice_610"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_607"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_611", - "op" : "Slice", - "outputs" : ["Slice_611"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_645"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_646", - "op" : "Slice", - "outputs" : ["Slice_646"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_645"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_647", - "op" : "Slice", - "outputs" : ["Slice_647"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_645"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_648", - "op" : "Slice", - "outputs" : ["Slice_648"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_645"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_649", - "op" : "Slice", - "outputs" : ["Slice_649"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_608"], - "name" : "Negative_627", - "op" : "Negative", - "outputs" : ["Negative_627"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_609"], - "name" : "Negative_620", - "op" : "Negative", - "outputs" : ["Negative_620"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_610"], - "name" : "Tanh_631", - "op" : "Tanh", - "outputs" : ["Tanh_631"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_611"], - "name" : "Negative_614", - "op" : "Negative", - "outputs" : ["Negative_614"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_646"], - "name" : "Negative_665", - "op" : "Negative", - "outputs" : ["Negative_665"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_647"], - "name" : "Negative_658", - "op" : "Negative", - "outputs" : ["Negative_658"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_648"], - "name" : "Tanh_669", - "op" : "Tanh", - "outputs" : ["Tanh_669"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_649"], - "name" : "Negative_652", - "op" : "Negative", - "outputs" : ["Negative_652"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_627"], - "name" : "Exp_628", - "op" : "Exp", - "outputs" : ["Exp_628"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_620"], - "name" : "Exp_621", - "op" : "Exp", - "outputs" : ["Exp_621"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_614"], - "name" : "Exp_615", - "op" : "Exp", - "outputs" : ["Exp_615"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_665"], - "name" : "Exp_666", - "op" : "Exp", - "outputs" : ["Exp_666"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_658"], - "name" : "Exp_659", - "op" : "Exp", - "outputs" : ["Exp_659"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_652"], - "name" : "Exp_653", - "op" : "Exp", - "outputs" : ["Exp_653"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_626", "Exp_628" ], - "name" : "Add_629", - "op" : "Add", - "outputs" : ["Add_629"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_619", "Exp_621" ], - "name" : "Add_622", - "op" : "Add", - "outputs" : ["Add_622"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_613", "Exp_615" ], - "name" : "Add_616", - "op" : "Add", - "outputs" : ["Add_616"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_664", "Exp_666" ], - "name" : "Add_667", - "op" : "Add", - "outputs" : ["Add_667"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_657", "Exp_659" ], - "name" : "Add_660", - "op" : "Add", - "outputs" : ["Add_660"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_651", "Exp_653" ], - "name" : "Add_654", - "op" : "Add", - "outputs" : ["Add_654"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_626", "Add_629" ], - "name" : "Divide_630", - "op" : "Divide", - "outputs" : ["Divide_630"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_619", "Add_622" ], - "name" : "Divide_623", - "op" : "Divide", - "outputs" : ["Divide_623"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_613", "Add_616" ], - "name" : "Divide_617", - "op" : "Divide", - "outputs" : ["Divide_617"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_664", "Add_667" ], - "name" : "Divide_668", - "op" : "Divide", - "outputs" : ["Divide_668"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_657", "Add_660" ], - "name" : "Divide_661", - "op" : "Divide", - "outputs" : ["Divide_661"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_651", "Add_654" ], - "name" : "Divide_655", - "op" : "Divide", - "outputs" : ["Divide_655"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_630", "Tanh_631" ], - "name" : "Multiply_632", - "op" : "Multiply", - "outputs" : ["Multiply_632"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_623", "Add_558" ], - "name" : "Multiply_624", - "op" : "Multiply", - "outputs" : ["Multiply_624"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_668", "Tanh_669" ], - "name" : "Multiply_670", - "op" : "Multiply", - "outputs" : ["Multiply_670"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_661", "Add_596" ], - "name" : "Multiply_662", - "op" : "Multiply", - "outputs" : ["Multiply_662"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_624", "Multiply_632" ], - "name" : "Add_633", - "op" : "Add", - "outputs" : ["Add_633"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_662", "Multiply_670" ], - "name" : "Add_671", - "op" : "Add", - "outputs" : ["Add_671"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_633"], - "name" : "Tanh_634", - "op" : "Tanh", - "outputs" : ["Tanh_634"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_671"], - "name" : "Tanh_672", - "op" : "Tanh", - "outputs" : ["Tanh_672"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_617", "Tanh_634" ], - "name" : "Multiply_635", - "op" : "Multiply", - "outputs" : ["Multiply_635"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_655", "Tanh_672" ], - "name" : "Multiply_673", - "op" : "Multiply", - "outputs" : ["Multiply_673"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_635"], - "name" : "Reshape_636", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_636"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_635", "Reshape_678" ], - "name" : "Dot_679", - "op" : "Dot", - "outputs" : ["Dot_679"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_673", "Reshape_674" ], - "name" : "Dot_675", - "op" : "Dot", - "outputs" : ["Dot_675"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_673", "Reshape_716" ], - "name" : "Dot_717", - "op" : "Dot", - "outputs" : ["Dot_717"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_679", "Reshape_680" ], - "name" : "Add_681", - "op" : "Add", - "outputs" : ["Add_681"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_675", "Reshape_676" ], - "name" : "Add_677", - "op" : "Add", - "outputs" : ["Add_677"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_717", "Reshape_718" ], - "name" : "Add_719", - "op" : "Add", - "outputs" : ["Add_719"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_677", "Add_681" ], - "name" : "Add_682", - "op" : "Add", - "outputs" : ["Add_682"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_715", "Add_719" ], - "name" : "Add_720", - "op" : "Add", - "outputs" : ["Add_720"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_682"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_683", - "op" : "Slice", - "outputs" : ["Slice_683"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_682"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_684", - "op" : "Slice", - "outputs" : ["Slice_684"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_682"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_685", - "op" : "Slice", - "outputs" : ["Slice_685"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_682"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_686", - "op" : "Slice", - "outputs" : ["Slice_686"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_720"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_721", - "op" : "Slice", - "outputs" : ["Slice_721"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_720"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_722", - "op" : "Slice", - "outputs" : ["Slice_722"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_720"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_723", - "op" : "Slice", - "outputs" : ["Slice_723"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_720"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_724", - "op" : "Slice", - "outputs" : ["Slice_724"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_683"], - "name" : "Negative_702", - "op" : "Negative", - "outputs" : ["Negative_702"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_684"], - "name" : "Negative_695", - "op" : "Negative", - "outputs" : ["Negative_695"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_685"], - "name" : "Tanh_706", - "op" : "Tanh", - "outputs" : ["Tanh_706"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_686"], - "name" : "Negative_689", - "op" : "Negative", - "outputs" : ["Negative_689"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_721"], - "name" : "Negative_740", - "op" : "Negative", - "outputs" : ["Negative_740"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_722"], - "name" : "Negative_733", - "op" : "Negative", - "outputs" : ["Negative_733"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_723"], - "name" : "Tanh_744", - "op" : "Tanh", - "outputs" : ["Tanh_744"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_724"], - "name" : "Negative_727", - "op" : "Negative", - "outputs" : ["Negative_727"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_702"], - "name" : "Exp_703", - "op" : "Exp", - "outputs" : ["Exp_703"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_695"], - "name" : "Exp_696", - "op" : "Exp", - "outputs" : ["Exp_696"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_689"], - "name" : "Exp_690", - "op" : "Exp", - "outputs" : ["Exp_690"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_740"], - "name" : "Exp_741", - "op" : "Exp", - "outputs" : ["Exp_741"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_733"], - "name" : "Exp_734", - "op" : "Exp", - "outputs" : ["Exp_734"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_727"], - "name" : "Exp_728", - "op" : "Exp", - "outputs" : ["Exp_728"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_701", "Exp_703" ], - "name" : "Add_704", - "op" : "Add", - "outputs" : ["Add_704"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_694", "Exp_696" ], - "name" : "Add_697", - "op" : "Add", - "outputs" : ["Add_697"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_688", "Exp_690" ], - "name" : "Add_691", - "op" : "Add", - "outputs" : ["Add_691"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_739", "Exp_741" ], - "name" : "Add_742", - "op" : "Add", - "outputs" : ["Add_742"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_732", "Exp_734" ], - "name" : "Add_735", - "op" : "Add", - "outputs" : ["Add_735"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_726", "Exp_728" ], - "name" : "Add_729", - "op" : "Add", - "outputs" : ["Add_729"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_701", "Add_704" ], - "name" : "Divide_705", - "op" : "Divide", - "outputs" : ["Divide_705"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_694", "Add_697" ], - "name" : "Divide_698", - "op" : "Divide", - "outputs" : ["Divide_698"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_688", "Add_691" ], - "name" : "Divide_692", - "op" : "Divide", - "outputs" : ["Divide_692"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_739", "Add_742" ], - "name" : "Divide_743", - "op" : "Divide", - "outputs" : ["Divide_743"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_732", "Add_735" ], - "name" : "Divide_736", - "op" : "Divide", - "outputs" : ["Divide_736"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_726", "Add_729" ], - "name" : "Divide_730", - "op" : "Divide", - "outputs" : ["Divide_730"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_705", "Tanh_706" ], - "name" : "Multiply_707", - "op" : "Multiply", - "outputs" : ["Multiply_707"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_698", "Add_633" ], - "name" : "Multiply_699", - "op" : "Multiply", - "outputs" : ["Multiply_699"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_743", "Tanh_744" ], - "name" : "Multiply_745", - "op" : "Multiply", - "outputs" : ["Multiply_745"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_736", "Add_671" ], - "name" : "Multiply_737", - "op" : "Multiply", - "outputs" : ["Multiply_737"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_699", "Multiply_707" ], - "name" : "Add_708", - "op" : "Add", - "outputs" : ["Add_708"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_737", "Multiply_745" ], - "name" : "Add_746", - "op" : "Add", - "outputs" : ["Add_746"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_708"], - "name" : "Tanh_709", - "op" : "Tanh", - "outputs" : ["Tanh_709"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_746"], - "name" : "Tanh_747", - "op" : "Tanh", - "outputs" : ["Tanh_747"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_692", "Tanh_709" ], - "name" : "Multiply_710", - "op" : "Multiply", - "outputs" : ["Multiply_710"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_730", "Tanh_747" ], - "name" : "Multiply_748", - "op" : "Multiply", - "outputs" : ["Multiply_748"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_710"], - "name" : "Reshape_711", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_711"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_710", "Reshape_753" ], - "name" : "Dot_754", - "op" : "Dot", - "outputs" : ["Dot_754"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_748", "Reshape_749" ], - "name" : "Dot_750", - "op" : "Dot", - "outputs" : ["Dot_750"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_754", "Reshape_755" ], - "name" : "Add_756", - "op" : "Add", - "outputs" : ["Add_756"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_750", "Reshape_751" ], - "name" : "Add_752", - "op" : "Add", - "outputs" : ["Add_752"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Add_752", "Add_756" ], - "name" : "Add_757", - "op" : "Add", - "outputs" : ["Add_757"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_757"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_758", - "op" : "Slice", - "outputs" : ["Slice_758"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 200 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_757"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_759", - "op" : "Slice", - "outputs" : ["Slice_759"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 400 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_757"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_760", - "op" : "Slice", - "outputs" : ["Slice_760"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 600 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_757"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_761", - "op" : "Slice", - "outputs" : ["Slice_761"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 1, 800 ] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_758"], - "name" : "Negative_777", - "op" : "Negative", - "outputs" : ["Negative_777"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_759"], - "name" : "Negative_770", - "op" : "Negative", - "outputs" : ["Negative_770"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_760"], - "name" : "Tanh_781", - "op" : "Tanh", - "outputs" : ["Tanh_781"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Slice_761"], - "name" : "Negative_764", - "op" : "Negative", - "outputs" : ["Negative_764"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_777"], - "name" : "Exp_778", - "op" : "Exp", - "outputs" : ["Exp_778"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_770"], - "name" : "Exp_771", - "op" : "Exp", - "outputs" : ["Exp_771"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Negative_764"], - "name" : "Exp_765", - "op" : "Exp", - "outputs" : ["Exp_765"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_776", "Exp_778" ], - "name" : "Add_779", - "op" : "Add", - "outputs" : ["Add_779"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_769", "Exp_771" ], - "name" : "Add_772", - "op" : "Add", - "outputs" : ["Add_772"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_763", "Exp_765" ], - "name" : "Add_766", - "op" : "Add", - "outputs" : ["Add_766"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_776", "Add_779" ], - "name" : "Divide_780", - "op" : "Divide", - "outputs" : ["Divide_780"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_769", "Add_772" ], - "name" : "Divide_773", - "op" : "Divide", - "outputs" : ["Divide_773"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Broadcast_763", "Add_766" ], - "name" : "Divide_767", - "op" : "Divide", - "outputs" : ["Divide_767"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_780", "Tanh_781" ], - "name" : "Multiply_782", - "op" : "Multiply", - "outputs" : ["Multiply_782"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_773", "Add_708" ], - "name" : "Multiply_774", - "op" : "Multiply", - "outputs" : ["Multiply_774"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Multiply_774", "Multiply_782" ], - "name" : "Add_783", - "op" : "Add", - "outputs" : ["Add_783"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : ["Add_783"], - "name" : "Tanh_784", - "op" : "Tanh", - "outputs" : ["Tanh_784"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Divide_767", "Tanh_784" ], - "name" : "Multiply_785", - "op" : "Multiply", - "outputs" : ["Multiply_785"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_785"], - "name" : "Reshape_786", - "op" : "Reshape", - "output_shape" : [ 1, 1, 200 ], - "outputs" : ["Reshape_786"] - }, - { - "axis" : 1, - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ - "Reshape_111", "Reshape_186", "Reshape_261", "Reshape_336", - "Reshape_411", "Reshape_486", "Reshape_561", "Reshape_636", - "Reshape_711", "Reshape_786" - ], - "name" : "Concat_787", - "op" : "Concat", - "outputs" : ["Concat_787"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Concat_787"], - "name" : "Reshape_788", - "op" : "Reshape", - "output_shape" : [ 10, 200 ], - "outputs" : ["Reshape_788"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Reshape_788", "Reshape_791" ], - "name" : "Dot_792", - "op" : "Dot", - "outputs" : ["Dot_792"] - }, - { - "element_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true, - "is_quantized" : false - }, - "inputs" : [ "Dot_792", "Broadcast_793" ], - "name" : "Add_794", - "op" : "Add", - "outputs" : ["Add_794"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_21", "Parameter_22", "Parameter_29", - "Parameter_30", "Parameter_66", "Parameter_67", "Parameter_74", - "Parameter_75", "Parameter_789", "Parameter_790" - ], - "result" : ["Add_794"], - "result_shape" : [ 10, 10000 ], - "result_type" : { - "bitwidth" : 32, - "c_type_string" : "float", - "is_real" : true, - "is_signed" : true - } -}] diff --git a/ngraph/test/models/mxnet/1_lstm_cell_forward.json b/ngraph/test/models/mxnet/1_lstm_cell_forward.json deleted file mode 100644 index 737763f3af39ba..00000000000000 --- a/ngraph/test/models/mxnet/1_lstm_cell_forward.json +++ /dev/null @@ -1,349 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_10", - "op" : "Parameter", - "outputs" : ["Parameter_10_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_9", - "op" : "Parameter", - "outputs" : ["Parameter_9_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 10, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_7", - "op" : "Constant", - "outputs" : ["Constant_7_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_34", - "op" : "Constant", - "outputs" : ["Constant_34_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_30", - "op" : "Constant", - "outputs" : ["Constant_30_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_24", - "op" : "Constant", - "outputs" : ["Constant_24_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_17", - "op" : "Constant", - "outputs" : ["Constant_17_0"], - "shape" : [], - "value" : ["1"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_10"], - "name" : "Broadcast_13", - "op" : "Broadcast", - "outputs" : ["Broadcast_13_0"], - "shape" : [ 10, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_9"], - "name" : "Reshape_11", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_11_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_5", - "op" : "Broadcast", - "outputs" : ["Broadcast_5_0"], - "shape" : [ 10, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_3", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_3_0"] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_7"], - "name" : "Broadcast_8", - "op" : "Broadcast", - "outputs" : ["Broadcast_8_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_34"], - "name" : "Broadcast_35", - "op" : "Broadcast", - "outputs" : ["Broadcast_35_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_30"], - "name" : "Broadcast_31", - "op" : "Broadcast", - "outputs" : ["Broadcast_31_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_24"], - "name" : "Broadcast_25", - "op" : "Broadcast", - "outputs" : ["Broadcast_25_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_17"], - "name" : "Broadcast_18", - "op" : "Broadcast", - "outputs" : ["Broadcast_18_0"], - "shape" : [ 10, 100 ] - }, - { - "inputs" : [ "Parameter_0", "Reshape_3" ], - "name" : "Dot_4", - "op" : "Dot", - "outputs" : ["Dot_4_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_8", "Reshape_11" ], - "name" : "Dot_12", - "op" : "Dot", - "outputs" : ["Dot_12_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_4", "Broadcast_5" ], - "name" : "Add_6", - "op" : "Add", - "outputs" : ["Add_6_0"] - }, - { - "inputs" : [ "Dot_12", "Broadcast_13" ], - "name" : "Add_14", - "op" : "Add", - "outputs" : ["Add_14_0"] - }, - { - "inputs" : [ "Add_6", "Add_14" ], - "name" : "Add_15", - "op" : "Add", - "outputs" : ["Add_15_0"] - }, - { - "inputs" : ["Add_15"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_16", - "op" : "Slice", - "outputs" : ["Slice_16_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 400 ] - }, - { - "inputs" : ["Add_15"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_23", - "op" : "Slice", - "outputs" : ["Slice_23_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 200 ] - }, - { - "inputs" : ["Add_15"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_33", - "op" : "Slice", - "outputs" : ["Slice_33_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 100 ] - }, - { - "inputs" : ["Add_15"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_40", - "op" : "Slice", - "outputs" : ["Slice_40_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_16"], - "name" : "Negative_19", - "op" : "Negative", - "outputs" : ["Negative_19_0"] - }, - { - "inputs" : ["Slice_23"], - "name" : "Negative_26", - "op" : "Negative", - "outputs" : ["Negative_26_0"] - }, - { - "inputs" : ["Slice_33"], - "name" : "Negative_36", - "op" : "Negative", - "outputs" : ["Negative_36_0"] - }, - { - "inputs" : ["Slice_40"], - "name" : "Tanh_41", - "op" : "Tanh", - "outputs" : ["Tanh_41_0"] - }, - { - "inputs" : ["Negative_19"], - "name" : "Exp_20", - "op" : "Exp", - "outputs" : ["Exp_20_0"] - }, - { - "inputs" : ["Negative_26"], - "name" : "Exp_27", - "op" : "Exp", - "outputs" : ["Exp_27_0"] - }, - { - "inputs" : ["Negative_36"], - "name" : "Exp_37", - "op" : "Exp", - "outputs" : ["Exp_37_0"] - }, - { - "inputs" : [ "Broadcast_18", "Exp_20" ], - "name" : "Add_21", - "op" : "Add", - "outputs" : ["Add_21_0"] - }, - { - "inputs" : [ "Broadcast_25", "Exp_27" ], - "name" : "Add_28", - "op" : "Add", - "outputs" : ["Add_28_0"] - }, - { - "inputs" : [ "Broadcast_35", "Exp_37" ], - "name" : "Add_38", - "op" : "Add", - "outputs" : ["Add_38_0"] - }, - { - "inputs" : [ "Broadcast_18", "Add_21" ], - "name" : "Divide_22", - "op" : "Divide", - "outputs" : ["Divide_22_0"] - }, - { - "inputs" : [ "Broadcast_25", "Add_28" ], - "name" : "Divide_29", - "op" : "Divide", - "outputs" : ["Divide_29_0"] - }, - { - "inputs" : [ "Broadcast_35", "Add_38" ], - "name" : "Divide_39", - "op" : "Divide", - "outputs" : ["Divide_39_0"] - }, - { - "inputs" : [ "Divide_29", "Broadcast_31" ], - "name" : "Multiply_32", - "op" : "Multiply", - "outputs" : ["Multiply_32_0"] - }, - { - "inputs" : [ "Divide_39", "Tanh_41" ], - "name" : "Multiply_42", - "op" : "Multiply", - "outputs" : ["Multiply_42_0"] - }, - { - "inputs" : [ "Multiply_32", "Multiply_42" ], - "name" : "Add_43", - "op" : "Add", - "outputs" : ["Add_43_0"] - }, - { - "inputs" : ["Add_43"], - "name" : "Tanh_44", - "op" : "Tanh", - "outputs" : ["Tanh_44_0"] - }, - { - "inputs" : [ "Divide_22", "Tanh_44" ], - "name" : "Multiply_45", - "op" : "Multiply", - "outputs" : ["Multiply_45_0"] - }, - { - "inputs" : ["Multiply_45"], - "name" : "Result_46", - "op" : "Result", - "outputs" : ["Result_46_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_9", - "Parameter_10" - ], - "result" : ["Result_46"] -}] diff --git a/ngraph/test/models/mxnet/1rnn_layer_3lstm_cell.json b/ngraph/test/models/mxnet/1rnn_layer_3lstm_cell.json deleted file mode 100644 index e4a0838ee4736b..00000000000000 --- a/ngraph/test/models/mxnet/1rnn_layer_3lstm_cell.json +++ /dev/null @@ -1,889 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 10, 50 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_7", - "op" : "Parameter", - "outputs" : ["Parameter_7_0"], - "shape" : [ 10, 50 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_20", - "op" : "Parameter", - "outputs" : ["Parameter_20_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_19", - "op" : "Parameter", - "outputs" : ["Parameter_19_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [ 400, 50 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_12", - "op" : "Parameter", - "outputs" : ["Parameter_12_0"], - "shape" : [ 10, 50 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_17", - "op" : "Constant", - "outputs" : ["Constant_17_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_44", - "op" : "Constant", - "outputs" : ["Constant_44_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_40", - "op" : "Constant", - "outputs" : ["Constant_40_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_34", - "op" : "Constant", - "outputs" : ["Constant_34_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27", - "op" : "Constant", - "outputs" : ["Constant_27_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_77", - "op" : "Constant", - "outputs" : ["Constant_77_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_69", - "op" : "Constant", - "outputs" : ["Constant_69_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_62", - "op" : "Constant", - "outputs" : ["Constant_62_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_110", - "op" : "Constant", - "outputs" : ["Constant_110_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_102", - "op" : "Constant", - "outputs" : ["Constant_102_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_95", - "op" : "Constant", - "outputs" : ["Constant_95_0"], - "shape" : [], - "value" : ["1"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_20"], - "name" : "Broadcast_23", - "op" : "Broadcast", - "outputs" : ["Broadcast_23_0"], - "shape" : [ 10, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_20"], - "name" : "Broadcast_58", - "op" : "Broadcast", - "outputs" : ["Broadcast_58_0"], - "shape" : [ 10, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_20"], - "name" : "Broadcast_91", - "op" : "Broadcast", - "outputs" : ["Broadcast_91_0"], - "shape" : [ 10, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_19"], - "name" : "Reshape_21", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_21_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_19"], - "name" : "Reshape_56", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_56_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_19"], - "name" : "Reshape_89", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_89_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_5", - "op" : "Broadcast", - "outputs" : ["Broadcast_5_0"], - "shape" : [ 10, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_10", - "op" : "Broadcast", - "outputs" : ["Broadcast_10_0"], - "shape" : [ 10, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_15", - "op" : "Broadcast", - "outputs" : ["Broadcast_15_0"], - "shape" : [ 10, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_3", - "op" : "Reshape", - "output_shape" : [ 50, 400 ], - "outputs" : ["Reshape_3_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_8", - "op" : "Reshape", - "output_shape" : [ 50, 400 ], - "outputs" : ["Reshape_8_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_13", - "op" : "Reshape", - "output_shape" : [ 50, 400 ], - "outputs" : ["Reshape_13_0"] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_17"], - "name" : "Broadcast_18", - "op" : "Broadcast", - "outputs" : ["Broadcast_18_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_44"], - "name" : "Broadcast_45", - "op" : "Broadcast", - "outputs" : ["Broadcast_45_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_40"], - "name" : "Broadcast_41", - "op" : "Broadcast", - "outputs" : ["Broadcast_41_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_34"], - "name" : "Broadcast_35", - "op" : "Broadcast", - "outputs" : ["Broadcast_35_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27"], - "name" : "Broadcast_28", - "op" : "Broadcast", - "outputs" : ["Broadcast_28_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_77"], - "name" : "Broadcast_78", - "op" : "Broadcast", - "outputs" : ["Broadcast_78_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_69"], - "name" : "Broadcast_70", - "op" : "Broadcast", - "outputs" : ["Broadcast_70_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_62"], - "name" : "Broadcast_63", - "op" : "Broadcast", - "outputs" : ["Broadcast_63_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_110"], - "name" : "Broadcast_111", - "op" : "Broadcast", - "outputs" : ["Broadcast_111_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_102"], - "name" : "Broadcast_103", - "op" : "Broadcast", - "outputs" : ["Broadcast_103_0"], - "shape" : [ 10, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_95"], - "name" : "Broadcast_96", - "op" : "Broadcast", - "outputs" : ["Broadcast_96_0"], - "shape" : [ 10, 100 ] - }, - { - "inputs" : [ "Parameter_0", "Reshape_3" ], - "name" : "Dot_4", - "op" : "Dot", - "outputs" : ["Dot_4_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Parameter_7", "Reshape_8" ], - "name" : "Dot_9", - "op" : "Dot", - "outputs" : ["Dot_9_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Parameter_12", "Reshape_13" ], - "name" : "Dot_14", - "op" : "Dot", - "outputs" : ["Dot_14_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_18", "Reshape_21" ], - "name" : "Dot_22", - "op" : "Dot", - "outputs" : ["Dot_22_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_4", "Broadcast_5" ], - "name" : "Add_6", - "op" : "Add", - "outputs" : ["Add_6_0"] - }, - { - "inputs" : [ "Dot_9", "Broadcast_10" ], - "name" : "Add_11", - "op" : "Add", - "outputs" : ["Add_11_0"] - }, - { - "inputs" : [ "Dot_14", "Broadcast_15" ], - "name" : "Add_16", - "op" : "Add", - "outputs" : ["Add_16_0"] - }, - { - "inputs" : [ "Dot_22", "Broadcast_23" ], - "name" : "Add_24", - "op" : "Add", - "outputs" : ["Add_24_0"] - }, - { - "inputs" : [ "Add_16", "Add_24" ], - "name" : "Add_25", - "op" : "Add", - "outputs" : ["Add_25_0"] - }, - { - "inputs" : ["Add_25"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_26", - "op" : "Slice", - "outputs" : ["Slice_26_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 400 ] - }, - { - "inputs" : ["Add_25"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_33", - "op" : "Slice", - "outputs" : ["Slice_33_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 200 ] - }, - { - "inputs" : ["Add_25"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_43", - "op" : "Slice", - "outputs" : ["Slice_43_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 100 ] - }, - { - "inputs" : ["Add_25"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_50", - "op" : "Slice", - "outputs" : ["Slice_50_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_26"], - "name" : "Negative_29", - "op" : "Negative", - "outputs" : ["Negative_29_0"] - }, - { - "inputs" : ["Slice_33"], - "name" : "Negative_36", - "op" : "Negative", - "outputs" : ["Negative_36_0"] - }, - { - "inputs" : ["Slice_43"], - "name" : "Negative_46", - "op" : "Negative", - "outputs" : ["Negative_46_0"] - }, - { - "inputs" : ["Slice_50"], - "name" : "Tanh_51", - "op" : "Tanh", - "outputs" : ["Tanh_51_0"] - }, - { - "inputs" : ["Negative_29"], - "name" : "Exp_30", - "op" : "Exp", - "outputs" : ["Exp_30_0"] - }, - { - "inputs" : ["Negative_36"], - "name" : "Exp_37", - "op" : "Exp", - "outputs" : ["Exp_37_0"] - }, - { - "inputs" : ["Negative_46"], - "name" : "Exp_47", - "op" : "Exp", - "outputs" : ["Exp_47_0"] - }, - { - "inputs" : [ "Broadcast_28", "Exp_30" ], - "name" : "Add_31", - "op" : "Add", - "outputs" : ["Add_31_0"] - }, - { - "inputs" : [ "Broadcast_35", "Exp_37" ], - "name" : "Add_38", - "op" : "Add", - "outputs" : ["Add_38_0"] - }, - { - "inputs" : [ "Broadcast_45", "Exp_47" ], - "name" : "Add_48", - "op" : "Add", - "outputs" : ["Add_48_0"] - }, - { - "inputs" : [ "Broadcast_28", "Add_31" ], - "name" : "Divide_32", - "op" : "Divide", - "outputs" : ["Divide_32_0"] - }, - { - "inputs" : [ "Broadcast_35", "Add_38" ], - "name" : "Divide_39", - "op" : "Divide", - "outputs" : ["Divide_39_0"] - }, - { - "inputs" : [ "Broadcast_45", "Add_48" ], - "name" : "Divide_49", - "op" : "Divide", - "outputs" : ["Divide_49_0"] - }, - { - "inputs" : [ "Divide_39", "Broadcast_41" ], - "name" : "Multiply_42", - "op" : "Multiply", - "outputs" : ["Multiply_42_0"] - }, - { - "inputs" : [ "Divide_49", "Tanh_51" ], - "name" : "Multiply_52", - "op" : "Multiply", - "outputs" : ["Multiply_52_0"] - }, - { - "inputs" : [ "Multiply_42", "Multiply_52" ], - "name" : "Add_53", - "op" : "Add", - "outputs" : ["Add_53_0"] - }, - { - "inputs" : ["Add_53"], - "name" : "Tanh_54", - "op" : "Tanh", - "outputs" : ["Tanh_54_0"] - }, - { - "inputs" : [ "Divide_32", "Tanh_54" ], - "name" : "Multiply_55", - "op" : "Multiply", - "outputs" : ["Multiply_55_0"] - }, - { - "inputs" : [ "Multiply_55", "Reshape_56" ], - "name" : "Dot_57", - "op" : "Dot", - "outputs" : ["Dot_57_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_57", "Broadcast_58" ], - "name" : "Add_59", - "op" : "Add", - "outputs" : ["Add_59_0"] - }, - { - "inputs" : [ "Add_11", "Add_59" ], - "name" : "Add_60", - "op" : "Add", - "outputs" : ["Add_60_0"] - }, - { - "inputs" : ["Add_60"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_61", - "op" : "Slice", - "outputs" : ["Slice_61_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 400 ] - }, - { - "inputs" : ["Add_60"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_68", - "op" : "Slice", - "outputs" : ["Slice_68_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 200 ] - }, - { - "inputs" : ["Add_60"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_76", - "op" : "Slice", - "outputs" : ["Slice_76_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 100 ] - }, - { - "inputs" : ["Add_60"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_83", - "op" : "Slice", - "outputs" : ["Slice_83_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_61"], - "name" : "Negative_64", - "op" : "Negative", - "outputs" : ["Negative_64_0"] - }, - { - "inputs" : ["Slice_68"], - "name" : "Negative_71", - "op" : "Negative", - "outputs" : ["Negative_71_0"] - }, - { - "inputs" : ["Slice_76"], - "name" : "Negative_79", - "op" : "Negative", - "outputs" : ["Negative_79_0"] - }, - { - "inputs" : ["Slice_83"], - "name" : "Tanh_84", - "op" : "Tanh", - "outputs" : ["Tanh_84_0"] - }, - { - "inputs" : ["Negative_64"], - "name" : "Exp_65", - "op" : "Exp", - "outputs" : ["Exp_65_0"] - }, - { - "inputs" : ["Negative_71"], - "name" : "Exp_72", - "op" : "Exp", - "outputs" : ["Exp_72_0"] - }, - { - "inputs" : ["Negative_79"], - "name" : "Exp_80", - "op" : "Exp", - "outputs" : ["Exp_80_0"] - }, - { - "inputs" : [ "Broadcast_63", "Exp_65" ], - "name" : "Add_66", - "op" : "Add", - "outputs" : ["Add_66_0"] - }, - { - "inputs" : [ "Broadcast_70", "Exp_72" ], - "name" : "Add_73", - "op" : "Add", - "outputs" : ["Add_73_0"] - }, - { - "inputs" : [ "Broadcast_78", "Exp_80" ], - "name" : "Add_81", - "op" : "Add", - "outputs" : ["Add_81_0"] - }, - { - "inputs" : [ "Broadcast_63", "Add_66" ], - "name" : "Divide_67", - "op" : "Divide", - "outputs" : ["Divide_67_0"] - }, - { - "inputs" : [ "Broadcast_70", "Add_73" ], - "name" : "Divide_74", - "op" : "Divide", - "outputs" : ["Divide_74_0"] - }, - { - "inputs" : [ "Broadcast_78", "Add_81" ], - "name" : "Divide_82", - "op" : "Divide", - "outputs" : ["Divide_82_0"] - }, - { - "inputs" : [ "Divide_74", "Add_53" ], - "name" : "Multiply_75", - "op" : "Multiply", - "outputs" : ["Multiply_75_0"] - }, - { - "inputs" : [ "Divide_82", "Tanh_84" ], - "name" : "Multiply_85", - "op" : "Multiply", - "outputs" : ["Multiply_85_0"] - }, - { - "inputs" : [ "Multiply_75", "Multiply_85" ], - "name" : "Add_86", - "op" : "Add", - "outputs" : ["Add_86_0"] - }, - { - "inputs" : ["Add_86"], - "name" : "Tanh_87", - "op" : "Tanh", - "outputs" : ["Tanh_87_0"] - }, - { - "inputs" : [ "Divide_67", "Tanh_87" ], - "name" : "Multiply_88", - "op" : "Multiply", - "outputs" : ["Multiply_88_0"] - }, - { - "inputs" : [ "Multiply_88", "Reshape_89" ], - "name" : "Dot_90", - "op" : "Dot", - "outputs" : ["Dot_90_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_90", "Broadcast_91" ], - "name" : "Add_92", - "op" : "Add", - "outputs" : ["Add_92_0"] - }, - { - "inputs" : [ "Add_6", "Add_92" ], - "name" : "Add_93", - "op" : "Add", - "outputs" : ["Add_93_0"] - }, - { - "inputs" : ["Add_93"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_94", - "op" : "Slice", - "outputs" : ["Slice_94_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 400 ] - }, - { - "inputs" : ["Add_93"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_101", - "op" : "Slice", - "outputs" : ["Slice_101_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 200 ] - }, - { - "inputs" : ["Add_93"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_109", - "op" : "Slice", - "outputs" : ["Slice_109_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 100 ] - }, - { - "inputs" : ["Add_93"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_116", - "op" : "Slice", - "outputs" : ["Slice_116_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_94"], - "name" : "Negative_97", - "op" : "Negative", - "outputs" : ["Negative_97_0"] - }, - { - "inputs" : ["Slice_101"], - "name" : "Negative_104", - "op" : "Negative", - "outputs" : ["Negative_104_0"] - }, - { - "inputs" : ["Slice_109"], - "name" : "Negative_112", - "op" : "Negative", - "outputs" : ["Negative_112_0"] - }, - { - "inputs" : ["Slice_116"], - "name" : "Tanh_117", - "op" : "Tanh", - "outputs" : ["Tanh_117_0"] - }, - { - "inputs" : ["Negative_97"], - "name" : "Exp_98", - "op" : "Exp", - "outputs" : ["Exp_98_0"] - }, - { - "inputs" : ["Negative_104"], - "name" : "Exp_105", - "op" : "Exp", - "outputs" : ["Exp_105_0"] - }, - { - "inputs" : ["Negative_112"], - "name" : "Exp_113", - "op" : "Exp", - "outputs" : ["Exp_113_0"] - }, - { - "inputs" : [ "Broadcast_96", "Exp_98" ], - "name" : "Add_99", - "op" : "Add", - "outputs" : ["Add_99_0"] - }, - { - "inputs" : [ "Broadcast_103", "Exp_105" ], - "name" : "Add_106", - "op" : "Add", - "outputs" : ["Add_106_0"] - }, - { - "inputs" : [ "Broadcast_111", "Exp_113" ], - "name" : "Add_114", - "op" : "Add", - "outputs" : ["Add_114_0"] - }, - { - "inputs" : [ "Broadcast_96", "Add_99" ], - "name" : "Divide_100", - "op" : "Divide", - "outputs" : ["Divide_100_0"] - }, - { - "inputs" : [ "Broadcast_103", "Add_106" ], - "name" : "Divide_107", - "op" : "Divide", - "outputs" : ["Divide_107_0"] - }, - { - "inputs" : [ "Broadcast_111", "Add_114" ], - "name" : "Divide_115", - "op" : "Divide", - "outputs" : ["Divide_115_0"] - }, - { - "inputs" : [ "Divide_107", "Add_86" ], - "name" : "Multiply_108", - "op" : "Multiply", - "outputs" : ["Multiply_108_0"] - }, - { - "inputs" : [ "Divide_115", "Tanh_117" ], - "name" : "Multiply_118", - "op" : "Multiply", - "outputs" : ["Multiply_118_0"] - }, - { - "inputs" : [ "Multiply_108", "Multiply_118" ], - "name" : "Add_119", - "op" : "Add", - "outputs" : ["Add_119_0"] - }, - { - "inputs" : ["Add_119"], - "name" : "Tanh_120", - "op" : "Tanh", - "outputs" : ["Tanh_120_0"] - }, - { - "inputs" : [ "Divide_100", "Tanh_120" ], - "name" : "Multiply_121", - "op" : "Multiply", - "outputs" : ["Multiply_121_0"] - }, - { - "inputs" : ["Multiply_121"], - "name" : "Result_122", - "op" : "Result", - "outputs" : ["Result_122_0"] - }, - { - "inputs" : ["Add_86"], - "name" : "Result_123", - "op" : "Result", - "outputs" : ["Result_123_0"] - } - ], - "parameters" : [ - "Parameter_12", "Parameter_1", "Parameter_2", "Parameter_19", - "Parameter_20", "Parameter_7", "Parameter_0" - ], - "result" : ["Result_122", "Result_123"] -}] diff --git a/ngraph/test/models/mxnet/2layer_3timestep_ic100oc100.json b/ngraph/test/models/mxnet/2layer_3timestep_ic100oc100.json deleted file mode 100644 index 7942870ad816a2..00000000000000 --- a/ngraph/test/models/mxnet/2layer_3timestep_ic100oc100.json +++ /dev/null @@ -1,1782 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_170", - "op" : "Parameter", - "outputs" : ["Parameter_170_0"], - "shape" : [ 32, 1, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_93", - "op" : "Parameter", - "outputs" : ["Parameter_93_0"], - "shape" : [ 32, 1, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_56", - "op" : "Parameter", - "outputs" : ["Parameter_56_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_55", - "op" : "Parameter", - "outputs" : ["Parameter_55_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_48", - "op" : "Parameter", - "outputs" : ["Parameter_48_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_47", - "op" : "Parameter", - "outputs" : ["Parameter_47_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_11", - "op" : "Parameter", - "outputs" : ["Parameter_11_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_10", - "op" : "Parameter", - "outputs" : ["Parameter_10_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 32, 1, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_53", - "op" : "Constant", - "outputs" : ["Constant_53_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_8", - "op" : "Constant", - "outputs" : ["Constant_8_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_35", - "op" : "Constant", - "outputs" : ["Constant_35_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_31", - "op" : "Constant", - "outputs" : ["Constant_31_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_25", - "op" : "Constant", - "outputs" : ["Constant_25_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_18", - "op" : "Constant", - "outputs" : ["Constant_18_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_80", - "op" : "Constant", - "outputs" : ["Constant_80_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_76", - "op" : "Constant", - "outputs" : ["Constant_76_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_70", - "op" : "Constant", - "outputs" : ["Constant_70_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_63", - "op" : "Constant", - "outputs" : ["Constant_63_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_120", - "op" : "Constant", - "outputs" : ["Constant_120_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_112", - "op" : "Constant", - "outputs" : ["Constant_112_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_105", - "op" : "Constant", - "outputs" : ["Constant_105_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_157", - "op" : "Constant", - "outputs" : ["Constant_157_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_149", - "op" : "Constant", - "outputs" : ["Constant_149_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_142", - "op" : "Constant", - "outputs" : ["Constant_142_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_197", - "op" : "Constant", - "outputs" : ["Constant_197_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_189", - "op" : "Constant", - "outputs" : ["Constant_189_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_182", - "op" : "Constant", - "outputs" : ["Constant_182_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_234", - "op" : "Constant", - "outputs" : ["Constant_234_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_226", - "op" : "Constant", - "outputs" : ["Constant_226_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_219", - "op" : "Constant", - "outputs" : ["Constant_219_0"], - "shape" : [], - "value" : ["1"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_170"], - "name" : "Reshape_171", - "op" : "Reshape", - "output_shape" : [ 32, 100 ], - "outputs" : ["Reshape_171_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_93"], - "name" : "Reshape_94", - "op" : "Reshape", - "output_shape" : [ 32, 100 ], - "outputs" : ["Reshape_94_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_59", - "op" : "Broadcast", - "outputs" : ["Broadcast_59_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_138", - "op" : "Broadcast", - "outputs" : ["Broadcast_138_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_215", - "op" : "Broadcast", - "outputs" : ["Broadcast_215_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_57", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_57_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_136", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_136_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_213", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_213_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_51", - "op" : "Broadcast", - "outputs" : ["Broadcast_51_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_134", - "op" : "Broadcast", - "outputs" : ["Broadcast_134_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_211", - "op" : "Broadcast", - "outputs" : ["Broadcast_211_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_49", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_49_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_132", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_132_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_209", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_209_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_14", - "op" : "Broadcast", - "outputs" : ["Broadcast_14_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_101", - "op" : "Broadcast", - "outputs" : ["Broadcast_101_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_178", - "op" : "Broadcast", - "outputs" : ["Broadcast_178_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_12", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_12_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_99", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_99_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_176", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_176_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_6", - "op" : "Broadcast", - "outputs" : ["Broadcast_6_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_97", - "op" : "Broadcast", - "outputs" : ["Broadcast_97_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_174", - "op" : "Broadcast", - "outputs" : ["Broadcast_174_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_4", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_4_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_95", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_95_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_172", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_172_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_0"], - "name" : "Reshape_3", - "op" : "Reshape", - "output_shape" : [ 32, 100 ], - "outputs" : ["Reshape_3_0"] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_53"], - "name" : "Broadcast_54", - "op" : "Broadcast", - "outputs" : ["Broadcast_54_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_8"], - "name" : "Broadcast_9", - "op" : "Broadcast", - "outputs" : ["Broadcast_9_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_35"], - "name" : "Broadcast_36", - "op" : "Broadcast", - "outputs" : ["Broadcast_36_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_31"], - "name" : "Broadcast_32", - "op" : "Broadcast", - "outputs" : ["Broadcast_32_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_25"], - "name" : "Broadcast_26", - "op" : "Broadcast", - "outputs" : ["Broadcast_26_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_80"], - "name" : "Broadcast_81", - "op" : "Broadcast", - "outputs" : ["Broadcast_81_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_76"], - "name" : "Broadcast_77", - "op" : "Broadcast", - "outputs" : ["Broadcast_77_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_70"], - "name" : "Broadcast_71", - "op" : "Broadcast", - "outputs" : ["Broadcast_71_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_63"], - "name" : "Broadcast_64", - "op" : "Broadcast", - "outputs" : ["Broadcast_64_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_120"], - "name" : "Broadcast_121", - "op" : "Broadcast", - "outputs" : ["Broadcast_121_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_112"], - "name" : "Broadcast_113", - "op" : "Broadcast", - "outputs" : ["Broadcast_113_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_105"], - "name" : "Broadcast_106", - "op" : "Broadcast", - "outputs" : ["Broadcast_106_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_157"], - "name" : "Broadcast_158", - "op" : "Broadcast", - "outputs" : ["Broadcast_158_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_149"], - "name" : "Broadcast_150", - "op" : "Broadcast", - "outputs" : ["Broadcast_150_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_142"], - "name" : "Broadcast_143", - "op" : "Broadcast", - "outputs" : ["Broadcast_143_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_197"], - "name" : "Broadcast_198", - "op" : "Broadcast", - "outputs" : ["Broadcast_198_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_189"], - "name" : "Broadcast_190", - "op" : "Broadcast", - "outputs" : ["Broadcast_190_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_182"], - "name" : "Broadcast_183", - "op" : "Broadcast", - "outputs" : ["Broadcast_183_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_234"], - "name" : "Broadcast_235", - "op" : "Broadcast", - "outputs" : ["Broadcast_235_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_226"], - "name" : "Broadcast_227", - "op" : "Broadcast", - "outputs" : ["Broadcast_227_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_219"], - "name" : "Broadcast_220", - "op" : "Broadcast", - "outputs" : ["Broadcast_220_0"], - "shape" : [ 32, 100 ] - }, - { - "inputs" : [ "Reshape_94", "Reshape_95" ], - "name" : "Dot_96", - "op" : "Dot", - "outputs" : ["Dot_96_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_171", "Reshape_172" ], - "name" : "Dot_173", - "op" : "Dot", - "outputs" : ["Dot_173_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_3", "Reshape_4" ], - "name" : "Dot_5", - "op" : "Dot", - "outputs" : ["Dot_5_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_54", "Reshape_57" ], - "name" : "Dot_58", - "op" : "Dot", - "outputs" : ["Dot_58_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_9", "Reshape_12" ], - "name" : "Dot_13", - "op" : "Dot", - "outputs" : ["Dot_13_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_96", "Broadcast_97" ], - "name" : "Add_98", - "op" : "Add", - "outputs" : ["Add_98_0"] - }, - { - "inputs" : [ "Dot_173", "Broadcast_174" ], - "name" : "Add_175", - "op" : "Add", - "outputs" : ["Add_175_0"] - }, - { - "inputs" : [ "Dot_5", "Broadcast_6" ], - "name" : "Add_7", - "op" : "Add", - "outputs" : ["Add_7_0"] - }, - { - "inputs" : [ "Dot_58", "Broadcast_59" ], - "name" : "Add_60", - "op" : "Add", - "outputs" : ["Add_60_0"] - }, - { - "inputs" : [ "Dot_13", "Broadcast_14" ], - "name" : "Add_15", - "op" : "Add", - "outputs" : ["Add_15_0"] - }, - { - "inputs" : [ "Add_7", "Add_15" ], - "name" : "Add_16", - "op" : "Add", - "outputs" : ["Add_16_0"] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_17", - "op" : "Slice", - "outputs" : ["Slice_17_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_24", - "op" : "Slice", - "outputs" : ["Slice_24_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_34", - "op" : "Slice", - "outputs" : ["Slice_34_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_41", - "op" : "Slice", - "outputs" : ["Slice_41_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_17"], - "name" : "Negative_20", - "op" : "Negative", - "outputs" : ["Negative_20_0"] - }, - { - "inputs" : ["Slice_24"], - "name" : "Negative_27", - "op" : "Negative", - "outputs" : ["Negative_27_0"] - }, - { - "inputs" : ["Slice_34"], - "name" : "Negative_37", - "op" : "Negative", - "outputs" : ["Negative_37_0"] - }, - { - "inputs" : ["Slice_41"], - "name" : "Tanh_42", - "op" : "Tanh", - "outputs" : ["Tanh_42_0"] - }, - { - "inputs" : ["Negative_20"], - "name" : "Exp_21", - "op" : "Exp", - "outputs" : ["Exp_21_0"] - }, - { - "inputs" : ["Negative_27"], - "name" : "Exp_28", - "op" : "Exp", - "outputs" : ["Exp_28_0"] - }, - { - "inputs" : ["Negative_37"], - "name" : "Exp_38", - "op" : "Exp", - "outputs" : ["Exp_38_0"] - }, - { - "inputs" : [ "Broadcast_19", "Exp_21" ], - "name" : "Add_22", - "op" : "Add", - "outputs" : ["Add_22_0"] - }, - { - "inputs" : [ "Broadcast_26", "Exp_28" ], - "name" : "Add_29", - "op" : "Add", - "outputs" : ["Add_29_0"] - }, - { - "inputs" : [ "Broadcast_36", "Exp_38" ], - "name" : "Add_39", - "op" : "Add", - "outputs" : ["Add_39_0"] - }, - { - "inputs" : [ "Broadcast_19", "Add_22" ], - "name" : "Divide_23", - "op" : "Divide", - "outputs" : ["Divide_23_0"] - }, - { - "inputs" : [ "Broadcast_26", "Add_29" ], - "name" : "Divide_30", - "op" : "Divide", - "outputs" : ["Divide_30_0"] - }, - { - "inputs" : [ "Broadcast_36", "Add_39" ], - "name" : "Divide_40", - "op" : "Divide", - "outputs" : ["Divide_40_0"] - }, - { - "inputs" : [ "Divide_30", "Broadcast_32" ], - "name" : "Multiply_33", - "op" : "Multiply", - "outputs" : ["Multiply_33_0"] - }, - { - "inputs" : [ "Divide_40", "Tanh_42" ], - "name" : "Multiply_43", - "op" : "Multiply", - "outputs" : ["Multiply_43_0"] - }, - { - "inputs" : [ "Multiply_33", "Multiply_43" ], - "name" : "Add_44", - "op" : "Add", - "outputs" : ["Add_44_0"] - }, - { - "inputs" : ["Add_44"], - "name" : "Tanh_45", - "op" : "Tanh", - "outputs" : ["Tanh_45_0"] - }, - { - "inputs" : [ "Divide_23", "Tanh_45" ], - "name" : "Multiply_46", - "op" : "Multiply", - "outputs" : ["Multiply_46_0"] - }, - { - "inputs" : [ "Multiply_46", "Reshape_49" ], - "name" : "Dot_50", - "op" : "Dot", - "outputs" : ["Dot_50_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_46", "Reshape_99" ], - "name" : "Dot_100", - "op" : "Dot", - "outputs" : ["Dot_100_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_50", "Broadcast_51" ], - "name" : "Add_52", - "op" : "Add", - "outputs" : ["Add_52_0"] - }, - { - "inputs" : [ "Dot_100", "Broadcast_101" ], - "name" : "Add_102", - "op" : "Add", - "outputs" : ["Add_102_0"] - }, - { - "inputs" : [ "Add_52", "Add_60" ], - "name" : "Add_61", - "op" : "Add", - "outputs" : ["Add_61_0"] - }, - { - "inputs" : [ "Add_98", "Add_102" ], - "name" : "Add_103", - "op" : "Add", - "outputs" : ["Add_103_0"] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_62", - "op" : "Slice", - "outputs" : ["Slice_62_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_69", - "op" : "Slice", - "outputs" : ["Slice_69_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_79", - "op" : "Slice", - "outputs" : ["Slice_79_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_86", - "op" : "Slice", - "outputs" : ["Slice_86_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_104", - "op" : "Slice", - "outputs" : ["Slice_104_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_111", - "op" : "Slice", - "outputs" : ["Slice_111_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_119", - "op" : "Slice", - "outputs" : ["Slice_119_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_126", - "op" : "Slice", - "outputs" : ["Slice_126_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_62"], - "name" : "Negative_65", - "op" : "Negative", - "outputs" : ["Negative_65_0"] - }, - { - "inputs" : ["Slice_69"], - "name" : "Negative_72", - "op" : "Negative", - "outputs" : ["Negative_72_0"] - }, - { - "inputs" : ["Slice_79"], - "name" : "Negative_82", - "op" : "Negative", - "outputs" : ["Negative_82_0"] - }, - { - "inputs" : ["Slice_86"], - "name" : "Tanh_87", - "op" : "Tanh", - "outputs" : ["Tanh_87_0"] - }, - { - "inputs" : ["Slice_104"], - "name" : "Negative_107", - "op" : "Negative", - "outputs" : ["Negative_107_0"] - }, - { - "inputs" : ["Slice_111"], - "name" : "Negative_114", - "op" : "Negative", - "outputs" : ["Negative_114_0"] - }, - { - "inputs" : ["Slice_119"], - "name" : "Negative_122", - "op" : "Negative", - "outputs" : ["Negative_122_0"] - }, - { - "inputs" : ["Slice_126"], - "name" : "Tanh_127", - "op" : "Tanh", - "outputs" : ["Tanh_127_0"] - }, - { - "inputs" : ["Negative_65"], - "name" : "Exp_66", - "op" : "Exp", - "outputs" : ["Exp_66_0"] - }, - { - "inputs" : ["Negative_72"], - "name" : "Exp_73", - "op" : "Exp", - "outputs" : ["Exp_73_0"] - }, - { - "inputs" : ["Negative_82"], - "name" : "Exp_83", - "op" : "Exp", - "outputs" : ["Exp_83_0"] - }, - { - "inputs" : ["Negative_107"], - "name" : "Exp_108", - "op" : "Exp", - "outputs" : ["Exp_108_0"] - }, - { - "inputs" : ["Negative_114"], - "name" : "Exp_115", - "op" : "Exp", - "outputs" : ["Exp_115_0"] - }, - { - "inputs" : ["Negative_122"], - "name" : "Exp_123", - "op" : "Exp", - "outputs" : ["Exp_123_0"] - }, - { - "inputs" : [ "Broadcast_64", "Exp_66" ], - "name" : "Add_67", - "op" : "Add", - "outputs" : ["Add_67_0"] - }, - { - "inputs" : [ "Broadcast_71", "Exp_73" ], - "name" : "Add_74", - "op" : "Add", - "outputs" : ["Add_74_0"] - }, - { - "inputs" : [ "Broadcast_81", "Exp_83" ], - "name" : "Add_84", - "op" : "Add", - "outputs" : ["Add_84_0"] - }, - { - "inputs" : [ "Broadcast_106", "Exp_108" ], - "name" : "Add_109", - "op" : "Add", - "outputs" : ["Add_109_0"] - }, - { - "inputs" : [ "Broadcast_113", "Exp_115" ], - "name" : "Add_116", - "op" : "Add", - "outputs" : ["Add_116_0"] - }, - { - "inputs" : [ "Broadcast_121", "Exp_123" ], - "name" : "Add_124", - "op" : "Add", - "outputs" : ["Add_124_0"] - }, - { - "inputs" : [ "Broadcast_64", "Add_67" ], - "name" : "Divide_68", - "op" : "Divide", - "outputs" : ["Divide_68_0"] - }, - { - "inputs" : [ "Broadcast_71", "Add_74" ], - "name" : "Divide_75", - "op" : "Divide", - "outputs" : ["Divide_75_0"] - }, - { - "inputs" : [ "Broadcast_81", "Add_84" ], - "name" : "Divide_85", - "op" : "Divide", - "outputs" : ["Divide_85_0"] - }, - { - "inputs" : [ "Broadcast_106", "Add_109" ], - "name" : "Divide_110", - "op" : "Divide", - "outputs" : ["Divide_110_0"] - }, - { - "inputs" : [ "Broadcast_113", "Add_116" ], - "name" : "Divide_117", - "op" : "Divide", - "outputs" : ["Divide_117_0"] - }, - { - "inputs" : [ "Broadcast_121", "Add_124" ], - "name" : "Divide_125", - "op" : "Divide", - "outputs" : ["Divide_125_0"] - }, - { - "inputs" : [ "Divide_75", "Broadcast_77" ], - "name" : "Multiply_78", - "op" : "Multiply", - "outputs" : ["Multiply_78_0"] - }, - { - "inputs" : [ "Divide_85", "Tanh_87" ], - "name" : "Multiply_88", - "op" : "Multiply", - "outputs" : ["Multiply_88_0"] - }, - { - "inputs" : [ "Divide_117", "Add_44" ], - "name" : "Multiply_118", - "op" : "Multiply", - "outputs" : ["Multiply_118_0"] - }, - { - "inputs" : [ "Divide_125", "Tanh_127" ], - "name" : "Multiply_128", - "op" : "Multiply", - "outputs" : ["Multiply_128_0"] - }, - { - "inputs" : [ "Multiply_78", "Multiply_88" ], - "name" : "Add_89", - "op" : "Add", - "outputs" : ["Add_89_0"] - }, - { - "inputs" : [ "Multiply_118", "Multiply_128" ], - "name" : "Add_129", - "op" : "Add", - "outputs" : ["Add_129_0"] - }, - { - "inputs" : ["Add_89"], - "name" : "Tanh_90", - "op" : "Tanh", - "outputs" : ["Tanh_90_0"] - }, - { - "inputs" : ["Add_129"], - "name" : "Tanh_130", - "op" : "Tanh", - "outputs" : ["Tanh_130_0"] - }, - { - "inputs" : [ "Divide_68", "Tanh_90" ], - "name" : "Multiply_91", - "op" : "Multiply", - "outputs" : ["Multiply_91_0"] - }, - { - "inputs" : [ "Divide_110", "Tanh_130" ], - "name" : "Multiply_131", - "op" : "Multiply", - "outputs" : ["Multiply_131_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_91"], - "name" : "Reshape_92", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_92_0"] - }, - { - "inputs" : [ "Multiply_91", "Reshape_136" ], - "name" : "Dot_137", - "op" : "Dot", - "outputs" : ["Dot_137_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_131", "Reshape_132" ], - "name" : "Dot_133", - "op" : "Dot", - "outputs" : ["Dot_133_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_131", "Reshape_176" ], - "name" : "Dot_177", - "op" : "Dot", - "outputs" : ["Dot_177_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_137", "Broadcast_138" ], - "name" : "Add_139", - "op" : "Add", - "outputs" : ["Add_139_0"] - }, - { - "inputs" : [ "Dot_133", "Broadcast_134" ], - "name" : "Add_135", - "op" : "Add", - "outputs" : ["Add_135_0"] - }, - { - "inputs" : [ "Dot_177", "Broadcast_178" ], - "name" : "Add_179", - "op" : "Add", - "outputs" : ["Add_179_0"] - }, - { - "inputs" : [ "Add_135", "Add_139" ], - "name" : "Add_140", - "op" : "Add", - "outputs" : ["Add_140_0"] - }, - { - "inputs" : [ "Add_175", "Add_179" ], - "name" : "Add_180", - "op" : "Add", - "outputs" : ["Add_180_0"] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_141", - "op" : "Slice", - "outputs" : ["Slice_141_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_148", - "op" : "Slice", - "outputs" : ["Slice_148_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_156", - "op" : "Slice", - "outputs" : ["Slice_156_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_163", - "op" : "Slice", - "outputs" : ["Slice_163_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_181", - "op" : "Slice", - "outputs" : ["Slice_181_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_188", - "op" : "Slice", - "outputs" : ["Slice_188_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_196", - "op" : "Slice", - "outputs" : ["Slice_196_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_203", - "op" : "Slice", - "outputs" : ["Slice_203_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_141"], - "name" : "Negative_144", - "op" : "Negative", - "outputs" : ["Negative_144_0"] - }, - { - "inputs" : ["Slice_148"], - "name" : "Negative_151", - "op" : "Negative", - "outputs" : ["Negative_151_0"] - }, - { - "inputs" : ["Slice_156"], - "name" : "Negative_159", - "op" : "Negative", - "outputs" : ["Negative_159_0"] - }, - { - "inputs" : ["Slice_163"], - "name" : "Tanh_164", - "op" : "Tanh", - "outputs" : ["Tanh_164_0"] - }, - { - "inputs" : ["Slice_181"], - "name" : "Negative_184", - "op" : "Negative", - "outputs" : ["Negative_184_0"] - }, - { - "inputs" : ["Slice_188"], - "name" : "Negative_191", - "op" : "Negative", - "outputs" : ["Negative_191_0"] - }, - { - "inputs" : ["Slice_196"], - "name" : "Negative_199", - "op" : "Negative", - "outputs" : ["Negative_199_0"] - }, - { - "inputs" : ["Slice_203"], - "name" : "Tanh_204", - "op" : "Tanh", - "outputs" : ["Tanh_204_0"] - }, - { - "inputs" : ["Negative_144"], - "name" : "Exp_145", - "op" : "Exp", - "outputs" : ["Exp_145_0"] - }, - { - "inputs" : ["Negative_151"], - "name" : "Exp_152", - "op" : "Exp", - "outputs" : ["Exp_152_0"] - }, - { - "inputs" : ["Negative_159"], - "name" : "Exp_160", - "op" : "Exp", - "outputs" : ["Exp_160_0"] - }, - { - "inputs" : ["Negative_184"], - "name" : "Exp_185", - "op" : "Exp", - "outputs" : ["Exp_185_0"] - }, - { - "inputs" : ["Negative_191"], - "name" : "Exp_192", - "op" : "Exp", - "outputs" : ["Exp_192_0"] - }, - { - "inputs" : ["Negative_199"], - "name" : "Exp_200", - "op" : "Exp", - "outputs" : ["Exp_200_0"] - }, - { - "inputs" : [ "Broadcast_143", "Exp_145" ], - "name" : "Add_146", - "op" : "Add", - "outputs" : ["Add_146_0"] - }, - { - "inputs" : [ "Broadcast_150", "Exp_152" ], - "name" : "Add_153", - "op" : "Add", - "outputs" : ["Add_153_0"] - }, - { - "inputs" : [ "Broadcast_158", "Exp_160" ], - "name" : "Add_161", - "op" : "Add", - "outputs" : ["Add_161_0"] - }, - { - "inputs" : [ "Broadcast_183", "Exp_185" ], - "name" : "Add_186", - "op" : "Add", - "outputs" : ["Add_186_0"] - }, - { - "inputs" : [ "Broadcast_190", "Exp_192" ], - "name" : "Add_193", - "op" : "Add", - "outputs" : ["Add_193_0"] - }, - { - "inputs" : [ "Broadcast_198", "Exp_200" ], - "name" : "Add_201", - "op" : "Add", - "outputs" : ["Add_201_0"] - }, - { - "inputs" : [ "Broadcast_143", "Add_146" ], - "name" : "Divide_147", - "op" : "Divide", - "outputs" : ["Divide_147_0"] - }, - { - "inputs" : [ "Broadcast_150", "Add_153" ], - "name" : "Divide_154", - "op" : "Divide", - "outputs" : ["Divide_154_0"] - }, - { - "inputs" : [ "Broadcast_158", "Add_161" ], - "name" : "Divide_162", - "op" : "Divide", - "outputs" : ["Divide_162_0"] - }, - { - "inputs" : [ "Broadcast_183", "Add_186" ], - "name" : "Divide_187", - "op" : "Divide", - "outputs" : ["Divide_187_0"] - }, - { - "inputs" : [ "Broadcast_190", "Add_193" ], - "name" : "Divide_194", - "op" : "Divide", - "outputs" : ["Divide_194_0"] - }, - { - "inputs" : [ "Broadcast_198", "Add_201" ], - "name" : "Divide_202", - "op" : "Divide", - "outputs" : ["Divide_202_0"] - }, - { - "inputs" : [ "Divide_154", "Add_89" ], - "name" : "Multiply_155", - "op" : "Multiply", - "outputs" : ["Multiply_155_0"] - }, - { - "inputs" : [ "Divide_162", "Tanh_164" ], - "name" : "Multiply_165", - "op" : "Multiply", - "outputs" : ["Multiply_165_0"] - }, - { - "inputs" : [ "Divide_194", "Add_129" ], - "name" : "Multiply_195", - "op" : "Multiply", - "outputs" : ["Multiply_195_0"] - }, - { - "inputs" : [ "Divide_202", "Tanh_204" ], - "name" : "Multiply_205", - "op" : "Multiply", - "outputs" : ["Multiply_205_0"] - }, - { - "inputs" : [ "Multiply_155", "Multiply_165" ], - "name" : "Add_166", - "op" : "Add", - "outputs" : ["Add_166_0"] - }, - { - "inputs" : [ "Multiply_195", "Multiply_205" ], - "name" : "Add_206", - "op" : "Add", - "outputs" : ["Add_206_0"] - }, - { - "inputs" : ["Add_166"], - "name" : "Tanh_167", - "op" : "Tanh", - "outputs" : ["Tanh_167_0"] - }, - { - "inputs" : ["Add_206"], - "name" : "Tanh_207", - "op" : "Tanh", - "outputs" : ["Tanh_207_0"] - }, - { - "inputs" : [ "Divide_147", "Tanh_167" ], - "name" : "Multiply_168", - "op" : "Multiply", - "outputs" : ["Multiply_168_0"] - }, - { - "inputs" : [ "Divide_187", "Tanh_207" ], - "name" : "Multiply_208", - "op" : "Multiply", - "outputs" : ["Multiply_208_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_168"], - "name" : "Reshape_169", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_169_0"] - }, - { - "inputs" : [ "Multiply_168", "Reshape_213" ], - "name" : "Dot_214", - "op" : "Dot", - "outputs" : ["Dot_214_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_208", "Reshape_209" ], - "name" : "Dot_210", - "op" : "Dot", - "outputs" : ["Dot_210_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_214", "Broadcast_215" ], - "name" : "Add_216", - "op" : "Add", - "outputs" : ["Add_216_0"] - }, - { - "inputs" : [ "Dot_210", "Broadcast_211" ], - "name" : "Add_212", - "op" : "Add", - "outputs" : ["Add_212_0"] - }, - { - "inputs" : [ "Add_212", "Add_216" ], - "name" : "Add_217", - "op" : "Add", - "outputs" : ["Add_217_0"] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_218", - "op" : "Slice", - "outputs" : ["Slice_218_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_225", - "op" : "Slice", - "outputs" : ["Slice_225_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_233", - "op" : "Slice", - "outputs" : ["Slice_233_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_240", - "op" : "Slice", - "outputs" : ["Slice_240_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_218"], - "name" : "Negative_221", - "op" : "Negative", - "outputs" : ["Negative_221_0"] - }, - { - "inputs" : ["Slice_225"], - "name" : "Negative_228", - "op" : "Negative", - "outputs" : ["Negative_228_0"] - }, - { - "inputs" : ["Slice_233"], - "name" : "Negative_236", - "op" : "Negative", - "outputs" : ["Negative_236_0"] - }, - { - "inputs" : ["Slice_240"], - "name" : "Tanh_241", - "op" : "Tanh", - "outputs" : ["Tanh_241_0"] - }, - { - "inputs" : ["Negative_221"], - "name" : "Exp_222", - "op" : "Exp", - "outputs" : ["Exp_222_0"] - }, - { - "inputs" : ["Negative_228"], - "name" : "Exp_229", - "op" : "Exp", - "outputs" : ["Exp_229_0"] - }, - { - "inputs" : ["Negative_236"], - "name" : "Exp_237", - "op" : "Exp", - "outputs" : ["Exp_237_0"] - }, - { - "inputs" : [ "Broadcast_220", "Exp_222" ], - "name" : "Add_223", - "op" : "Add", - "outputs" : ["Add_223_0"] - }, - { - "inputs" : [ "Broadcast_227", "Exp_229" ], - "name" : "Add_230", - "op" : "Add", - "outputs" : ["Add_230_0"] - }, - { - "inputs" : [ "Broadcast_235", "Exp_237" ], - "name" : "Add_238", - "op" : "Add", - "outputs" : ["Add_238_0"] - }, - { - "inputs" : [ "Broadcast_220", "Add_223" ], - "name" : "Divide_224", - "op" : "Divide", - "outputs" : ["Divide_224_0"] - }, - { - "inputs" : [ "Broadcast_227", "Add_230" ], - "name" : "Divide_231", - "op" : "Divide", - "outputs" : ["Divide_231_0"] - }, - { - "inputs" : [ "Broadcast_235", "Add_238" ], - "name" : "Divide_239", - "op" : "Divide", - "outputs" : ["Divide_239_0"] - }, - { - "inputs" : [ "Divide_231", "Add_166" ], - "name" : "Multiply_232", - "op" : "Multiply", - "outputs" : ["Multiply_232_0"] - }, - { - "inputs" : [ "Divide_239", "Tanh_241" ], - "name" : "Multiply_242", - "op" : "Multiply", - "outputs" : ["Multiply_242_0"] - }, - { - "inputs" : [ "Multiply_232", "Multiply_242" ], - "name" : "Add_243", - "op" : "Add", - "outputs" : ["Add_243_0"] - }, - { - "inputs" : ["Add_243"], - "name" : "Tanh_244", - "op" : "Tanh", - "outputs" : ["Tanh_244_0"] - }, - { - "inputs" : [ "Divide_224", "Tanh_244" ], - "name" : "Multiply_245", - "op" : "Multiply", - "outputs" : ["Multiply_245_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_245"], - "name" : "Reshape_246", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_246_0"] - }, - { - "axis" : 1, - "inputs" : [ "Reshape_92", "Reshape_169", "Reshape_246" ], - "name" : "Concat_247", - "op" : "Concat", - "outputs" : ["Concat_247_0"] - }, - { - "inputs" : ["Concat_247"], - "name" : "Result_248", - "op" : "Result", - "outputs" : ["Result_248_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_10", "Parameter_11", - "Parameter_47", "Parameter_48", "Parameter_55", "Parameter_56", - "Parameter_93", "Parameter_170" - ], - "result" : ["Result_248"] -}] diff --git a/ngraph/test/models/mxnet/2rnn_layer_1timestep.json b/ngraph/test/models/mxnet/2rnn_layer_1timestep.json deleted file mode 100644 index b24e76ec1d350c..00000000000000 --- a/ngraph/test/models/mxnet/2rnn_layer_1timestep.json +++ /dev/null @@ -1,1286 +0,0 @@ -[ - { - "name": "Function_0", - "ops": [ - { - "element_type": "float", - "inputs": [], - "name": "Parameter_55", - "op": "Parameter", - "outputs": [ - "Parameter_55_0" - ], - "shape": [ - 400 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_54", - "op": "Parameter", - "outputs": [ - "Parameter_54_0" - ], - "shape": [ - 400, - 100 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_47", - "op": "Parameter", - "outputs": [ - "Parameter_47_0" - ], - "shape": [ - 400 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_46", - "op": "Parameter", - "outputs": [ - "Parameter_46_0" - ], - "shape": [ - 400, - 100 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_10", - "op": "Parameter", - "outputs": [ - "Parameter_10_0" - ], - "shape": [ - 400 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_9", - "op": "Parameter", - "outputs": [ - "Parameter_9_0" - ], - "shape": [ - 400, - 100 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_2", - "op": "Parameter", - "outputs": [ - "Parameter_2_0" - ], - "shape": [ - 400 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_1", - "op": "Parameter", - "outputs": [ - "Parameter_1_0" - ], - "shape": [ - 400, - 100 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_0", - "op": "Parameter", - "outputs": [ - "Parameter_0_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_52", - "op": "Constant", - "outputs": [ - "Constant_52_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_7", - "op": "Constant", - "outputs": [ - "Constant_7_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_34", - "op": "Constant", - "outputs": [ - "Constant_34_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_30", - "op": "Constant", - "outputs": [ - "Constant_30_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_24", - "op": "Constant", - "outputs": [ - "Constant_24_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_17", - "op": "Constant", - "outputs": [ - "Constant_17_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_79", - "op": "Constant", - "outputs": [ - "Constant_79_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_75", - "op": "Constant", - "outputs": [ - "Constant_75_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_69", - "op": "Constant", - "outputs": [ - "Constant_69_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_62", - "op": "Constant", - "outputs": [ - "Constant_62_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_55" - ], - "name": "Broadcast_58", - "op": "Broadcast", - "outputs": [ - "Broadcast_58_0" - ], - "shape": [ - 10, - 400 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_54" - ], - "name": "Reshape_56", - "op": "Reshape", - "output_shape": [ - 100, - 400 - ], - "outputs": [ - "Reshape_56_0" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_47" - ], - "name": "Broadcast_50", - "op": "Broadcast", - "outputs": [ - "Broadcast_50_0" - ], - "shape": [ - 10, - 400 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_46" - ], - "name": "Reshape_48", - "op": "Reshape", - "output_shape": [ - 100, - 400 - ], - "outputs": [ - "Reshape_48_0" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_10" - ], - "name": "Broadcast_13", - "op": "Broadcast", - "outputs": [ - "Broadcast_13_0" - ], - "shape": [ - 10, - 400 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_9" - ], - "name": "Reshape_11", - "op": "Reshape", - "output_shape": [ - 100, - 400 - ], - "outputs": [ - "Reshape_11_0" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_2" - ], - "name": "Broadcast_5", - "op": "Broadcast", - "outputs": [ - "Broadcast_5_0" - ], - "shape": [ - 10, - 400 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_1" - ], - "name": "Reshape_3", - "op": "Reshape", - "output_shape": [ - 100, - 400 - ], - "outputs": [ - "Reshape_3_0" - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_52" - ], - "name": "Broadcast_53", - "op": "Broadcast", - "outputs": [ - "Broadcast_53_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_7" - ], - "name": "Broadcast_8", - "op": "Broadcast", - "outputs": [ - "Broadcast_8_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_34" - ], - "name": "Broadcast_35", - "op": "Broadcast", - "outputs": [ - "Broadcast_35_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_30" - ], - "name": "Broadcast_31", - "op": "Broadcast", - "outputs": [ - "Broadcast_31_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_24" - ], - "name": "Broadcast_25", - "op": "Broadcast", - "outputs": [ - "Broadcast_25_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_17" - ], - "name": "Broadcast_18", - "op": "Broadcast", - "outputs": [ - "Broadcast_18_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_79" - ], - "name": "Broadcast_80", - "op": "Broadcast", - "outputs": [ - "Broadcast_80_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_75" - ], - "name": "Broadcast_76", - "op": "Broadcast", - "outputs": [ - "Broadcast_76_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_69" - ], - "name": "Broadcast_70", - "op": "Broadcast", - "outputs": [ - "Broadcast_70_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_62" - ], - "name": "Broadcast_63", - "op": "Broadcast", - "outputs": [ - "Broadcast_63_0" - ], - "shape": [ - 10, - 100 - ] - }, - { - "inputs": [ - "Parameter_0", - "Reshape_3" - ], - "name": "Dot_4", - "op": "Dot", - "outputs": [ - "Dot_4_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Broadcast_53", - "Reshape_56" - ], - "name": "Dot_57", - "op": "Dot", - "outputs": [ - "Dot_57_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Broadcast_8", - "Reshape_11" - ], - "name": "Dot_12", - "op": "Dot", - "outputs": [ - "Dot_12_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_4", - "Broadcast_5" - ], - "name": "Add_6", - "op": "Add", - "outputs": [ - "Add_6_0" - ] - }, - { - "inputs": [ - "Dot_57", - "Broadcast_58" - ], - "name": "Add_59", - "op": "Add", - "outputs": [ - "Add_59_0" - ] - }, - { - "inputs": [ - "Dot_12", - "Broadcast_13" - ], - "name": "Add_14", - "op": "Add", - "outputs": [ - "Add_14_0" - ] - }, - { - "inputs": [ - "Add_6", - "Add_14" - ], - "name": "Add_15", - "op": "Add", - "outputs": [ - "Add_15_0" - ] - }, - { - "inputs": [ - "Add_15" - ], - "lower_bounds": [ - 0, - 300 - ], - "name": "Slice_16", - "op": "Slice", - "outputs": [ - "Slice_16_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 400 - ] - }, - { - "inputs": [ - "Add_15" - ], - "lower_bounds": [ - 0, - 100 - ], - "name": "Slice_23", - "op": "Slice", - "outputs": [ - "Slice_23_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 200 - ] - }, - { - "inputs": [ - "Add_15" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_33", - "op": "Slice", - "outputs": [ - "Slice_33_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 100 - ] - }, - { - "inputs": [ - "Add_15" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_40", - "op": "Slice", - "outputs": [ - "Slice_40_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 300 - ] - }, - { - "inputs": [ - "Slice_16" - ], - "name": "Negative_19", - "op": "Negative", - "outputs": [ - "Negative_19_0" - ] - }, - { - "inputs": [ - "Slice_23" - ], - "name": "Negative_26", - "op": "Negative", - "outputs": [ - "Negative_26_0" - ] - }, - { - "inputs": [ - "Slice_33" - ], - "name": "Negative_36", - "op": "Negative", - "outputs": [ - "Negative_36_0" - ] - }, - { - "inputs": [ - "Slice_40" - ], - "name": "Tanh_41", - "op": "Tanh", - "outputs": [ - "Tanh_41_0" - ] - }, - { - "inputs": [ - "Negative_19" - ], - "name": "Exp_20", - "op": "Exp", - "outputs": [ - "Exp_20_0" - ] - }, - { - "inputs": [ - "Negative_26" - ], - "name": "Exp_27", - "op": "Exp", - "outputs": [ - "Exp_27_0" - ] - }, - { - "inputs": [ - "Negative_36" - ], - "name": "Exp_37", - "op": "Exp", - "outputs": [ - "Exp_37_0" - ] - }, - { - "inputs": [ - "Broadcast_18", - "Exp_20" - ], - "name": "Add_21", - "op": "Add", - "outputs": [ - "Add_21_0" - ] - }, - { - "inputs": [ - "Broadcast_25", - "Exp_27" - ], - "name": "Add_28", - "op": "Add", - "outputs": [ - "Add_28_0" - ] - }, - { - "inputs": [ - "Broadcast_35", - "Exp_37" - ], - "name": "Add_38", - "op": "Add", - "outputs": [ - "Add_38_0" - ] - }, - { - "inputs": [ - "Broadcast_18", - "Add_21" - ], - "name": "Divide_22", - "op": "Divide", - "outputs": [ - "Divide_22_0" - ] - }, - { - "inputs": [ - "Broadcast_25", - "Add_28" - ], - "name": "Divide_29", - "op": "Divide", - "outputs": [ - "Divide_29_0" - ] - }, - { - "inputs": [ - "Broadcast_35", - "Add_38" - ], - "name": "Divide_39", - "op": "Divide", - "outputs": [ - "Divide_39_0" - ] - }, - { - "inputs": [ - "Divide_29", - "Broadcast_31" - ], - "name": "Multiply_32", - "op": "Multiply", - "outputs": [ - "Multiply_32_0" - ] - }, - { - "inputs": [ - "Divide_39", - "Tanh_41" - ], - "name": "Multiply_42", - "op": "Multiply", - "outputs": [ - "Multiply_42_0" - ] - }, - { - "inputs": [ - "Multiply_32", - "Multiply_42" - ], - "name": "Add_43", - "op": "Add", - "outputs": [ - "Add_43_0" - ] - }, - { - "inputs": [ - "Add_43" - ], - "name": "Result_96", - "op": "Result", - "outputs": [ - "Result_96_0" - ] - }, - { - "inputs": [ - "Add_43" - ], - "name": "Tanh_44", - "op": "Tanh", - "outputs": [ - "Tanh_44_0" - ] - }, - { - "inputs": [ - "Divide_22", - "Tanh_44" - ], - "name": "Multiply_45", - "op": "Multiply", - "outputs": [ - "Multiply_45_0" - ] - }, - { - "inputs": [ - "Multiply_45", - "Reshape_48" - ], - "name": "Dot_49", - "op": "Dot", - "outputs": [ - "Dot_49_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_49", - "Broadcast_50" - ], - "name": "Add_51", - "op": "Add", - "outputs": [ - "Add_51_0" - ] - }, - { - "inputs": [ - "Add_51", - "Add_59" - ], - "name": "Add_60", - "op": "Add", - "outputs": [ - "Add_60_0" - ] - }, - { - "inputs": [ - "Add_60" - ], - "lower_bounds": [ - 0, - 300 - ], - "name": "Slice_61", - "op": "Slice", - "outputs": [ - "Slice_61_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 400 - ] - }, - { - "inputs": [ - "Add_60" - ], - "lower_bounds": [ - 0, - 100 - ], - "name": "Slice_68", - "op": "Slice", - "outputs": [ - "Slice_68_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 200 - ] - }, - { - "inputs": [ - "Add_60" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_78", - "op": "Slice", - "outputs": [ - "Slice_78_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 100 - ] - }, - { - "inputs": [ - "Add_60" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_85", - "op": "Slice", - "outputs": [ - "Slice_85_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 10, - 300 - ] - }, - { - "inputs": [ - "Slice_61" - ], - "name": "Negative_64", - "op": "Negative", - "outputs": [ - "Negative_64_0" - ] - }, - { - "inputs": [ - "Slice_68" - ], - "name": "Negative_71", - "op": "Negative", - "outputs": [ - "Negative_71_0" - ] - }, - { - "inputs": [ - "Slice_78" - ], - "name": "Negative_81", - "op": "Negative", - "outputs": [ - "Negative_81_0" - ] - }, - { - "inputs": [ - "Slice_85" - ], - "name": "Tanh_86", - "op": "Tanh", - "outputs": [ - "Tanh_86_0" - ] - }, - { - "inputs": [ - "Negative_64" - ], - "name": "Exp_65", - "op": "Exp", - "outputs": [ - "Exp_65_0" - ] - }, - { - "inputs": [ - "Negative_71" - ], - "name": "Exp_72", - "op": "Exp", - "outputs": [ - "Exp_72_0" - ] - }, - { - "inputs": [ - "Negative_81" - ], - "name": "Exp_82", - "op": "Exp", - "outputs": [ - "Exp_82_0" - ] - }, - { - "inputs": [ - "Broadcast_63", - "Exp_65" - ], - "name": "Add_66", - "op": "Add", - "outputs": [ - "Add_66_0" - ] - }, - { - "inputs": [ - "Broadcast_70", - "Exp_72" - ], - "name": "Add_73", - "op": "Add", - "outputs": [ - "Add_73_0" - ] - }, - { - "inputs": [ - "Broadcast_80", - "Exp_82" - ], - "name": "Add_83", - "op": "Add", - "outputs": [ - "Add_83_0" - ] - }, - { - "inputs": [ - "Broadcast_63", - "Add_66" - ], - "name": "Divide_67", - "op": "Divide", - "outputs": [ - "Divide_67_0" - ] - }, - { - "inputs": [ - "Broadcast_70", - "Add_73" - ], - "name": "Divide_74", - "op": "Divide", - "outputs": [ - "Divide_74_0" - ] - }, - { - "inputs": [ - "Broadcast_80", - "Add_83" - ], - "name": "Divide_84", - "op": "Divide", - "outputs": [ - "Divide_84_0" - ] - }, - { - "inputs": [ - "Divide_74", - "Broadcast_76" - ], - "name": "Multiply_77", - "op": "Multiply", - "outputs": [ - "Multiply_77_0" - ] - }, - { - "inputs": [ - "Divide_84", - "Tanh_86" - ], - "name": "Multiply_87", - "op": "Multiply", - "outputs": [ - "Multiply_87_0" - ] - }, - { - "inputs": [ - "Multiply_77", - "Multiply_87" - ], - "name": "Add_88", - "op": "Add", - "outputs": [ - "Add_88_0" - ] - }, - { - "inputs": [ - "Add_88" - ], - "name": "Tanh_89", - "op": "Tanh", - "outputs": [ - "Tanh_89_0" - ] - }, - { - "inputs": [ - "Add_88" - ], - "name": "Result_94", - "op": "Result", - "outputs": [ - "Result_94_0" - ] - }, - { - "inputs": [ - "Divide_67", - "Tanh_89" - ], - "name": "Multiply_90", - "op": "Multiply", - "outputs": [ - "Multiply_90_0" - ] - }, - { - "inputs": [ - "Multiply_90" - ], - "name": "Result_93", - "op": "Result", - "outputs": [ - "Result_93_0" - ] - } - ], - "parameters": [ - "Parameter_0", - "Parameter_1", - "Parameter_2", - "Parameter_9", - "Parameter_10", - "Parameter_46", - "Parameter_47", - "Parameter_54", - "Parameter_55" - ], - "result": [ - "Result_93", - "Result_94", - "Result_96" - ] - } -] diff --git a/ngraph/test/models/mxnet/2rnn_layer_3lstm_cell.json b/ngraph/test/models/mxnet/2rnn_layer_3lstm_cell.json deleted file mode 100644 index 27e8efe98f35a0..00000000000000 --- a/ngraph/test/models/mxnet/2rnn_layer_3lstm_cell.json +++ /dev/null @@ -1,1782 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_170", - "op" : "Parameter", - "outputs" : ["Parameter_170_0"], - "shape" : [ 32, 1, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_93", - "op" : "Parameter", - "outputs" : ["Parameter_93_0"], - "shape" : [ 32, 1, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_56", - "op" : "Parameter", - "outputs" : ["Parameter_56_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_55", - "op" : "Parameter", - "outputs" : ["Parameter_55_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_48", - "op" : "Parameter", - "outputs" : ["Parameter_48_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_47", - "op" : "Parameter", - "outputs" : ["Parameter_47_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_11", - "op" : "Parameter", - "outputs" : ["Parameter_11_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_10", - "op" : "Parameter", - "outputs" : ["Parameter_10_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [ 400, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 32, 1, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_53", - "op" : "Constant", - "outputs" : ["Constant_53_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_8", - "op" : "Constant", - "outputs" : ["Constant_8_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_35", - "op" : "Constant", - "outputs" : ["Constant_35_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_31", - "op" : "Constant", - "outputs" : ["Constant_31_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_25", - "op" : "Constant", - "outputs" : ["Constant_25_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_18", - "op" : "Constant", - "outputs" : ["Constant_18_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_80", - "op" : "Constant", - "outputs" : ["Constant_80_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_76", - "op" : "Constant", - "outputs" : ["Constant_76_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_70", - "op" : "Constant", - "outputs" : ["Constant_70_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_63", - "op" : "Constant", - "outputs" : ["Constant_63_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_120", - "op" : "Constant", - "outputs" : ["Constant_120_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_112", - "op" : "Constant", - "outputs" : ["Constant_112_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_105", - "op" : "Constant", - "outputs" : ["Constant_105_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_157", - "op" : "Constant", - "outputs" : ["Constant_157_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_149", - "op" : "Constant", - "outputs" : ["Constant_149_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_142", - "op" : "Constant", - "outputs" : ["Constant_142_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_197", - "op" : "Constant", - "outputs" : ["Constant_197_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_189", - "op" : "Constant", - "outputs" : ["Constant_189_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_182", - "op" : "Constant", - "outputs" : ["Constant_182_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_234", - "op" : "Constant", - "outputs" : ["Constant_234_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_226", - "op" : "Constant", - "outputs" : ["Constant_226_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_219", - "op" : "Constant", - "outputs" : ["Constant_219_0"], - "shape" : [], - "value" : ["1"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_170"], - "name" : "Reshape_171", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_171_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_93"], - "name" : "Reshape_94", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_94_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_59", - "op" : "Broadcast", - "outputs" : ["Broadcast_59_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_138", - "op" : "Broadcast", - "outputs" : ["Broadcast_138_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_215", - "op" : "Broadcast", - "outputs" : ["Broadcast_215_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_57", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_57_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_136", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_136_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_213", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_213_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_51", - "op" : "Broadcast", - "outputs" : ["Broadcast_51_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_134", - "op" : "Broadcast", - "outputs" : ["Broadcast_134_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_211", - "op" : "Broadcast", - "outputs" : ["Broadcast_211_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_49", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_49_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_132", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_132_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_209", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_209_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_14", - "op" : "Broadcast", - "outputs" : ["Broadcast_14_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_101", - "op" : "Broadcast", - "outputs" : ["Broadcast_101_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_178", - "op" : "Broadcast", - "outputs" : ["Broadcast_178_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_12", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_12_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_99", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_99_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_176", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_176_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_6", - "op" : "Broadcast", - "outputs" : ["Broadcast_6_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_97", - "op" : "Broadcast", - "outputs" : ["Broadcast_97_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_174", - "op" : "Broadcast", - "outputs" : ["Broadcast_174_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_4", - "op" : "Reshape", - "output_shape" : [ 200, 400 ], - "outputs" : ["Reshape_4_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_95", - "op" : "Reshape", - "output_shape" : [ 200, 400 ], - "outputs" : ["Reshape_95_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_172", - "op" : "Reshape", - "output_shape" : [ 200, 400 ], - "outputs" : ["Reshape_172_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_0"], - "name" : "Reshape_3", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_3_0"] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_53"], - "name" : "Broadcast_54", - "op" : "Broadcast", - "outputs" : ["Broadcast_54_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_8"], - "name" : "Broadcast_9", - "op" : "Broadcast", - "outputs" : ["Broadcast_9_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_35"], - "name" : "Broadcast_36", - "op" : "Broadcast", - "outputs" : ["Broadcast_36_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_31"], - "name" : "Broadcast_32", - "op" : "Broadcast", - "outputs" : ["Broadcast_32_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_25"], - "name" : "Broadcast_26", - "op" : "Broadcast", - "outputs" : ["Broadcast_26_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_80"], - "name" : "Broadcast_81", - "op" : "Broadcast", - "outputs" : ["Broadcast_81_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_76"], - "name" : "Broadcast_77", - "op" : "Broadcast", - "outputs" : ["Broadcast_77_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_70"], - "name" : "Broadcast_71", - "op" : "Broadcast", - "outputs" : ["Broadcast_71_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_63"], - "name" : "Broadcast_64", - "op" : "Broadcast", - "outputs" : ["Broadcast_64_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_120"], - "name" : "Broadcast_121", - "op" : "Broadcast", - "outputs" : ["Broadcast_121_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_112"], - "name" : "Broadcast_113", - "op" : "Broadcast", - "outputs" : ["Broadcast_113_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_105"], - "name" : "Broadcast_106", - "op" : "Broadcast", - "outputs" : ["Broadcast_106_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_157"], - "name" : "Broadcast_158", - "op" : "Broadcast", - "outputs" : ["Broadcast_158_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_149"], - "name" : "Broadcast_150", - "op" : "Broadcast", - "outputs" : ["Broadcast_150_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_142"], - "name" : "Broadcast_143", - "op" : "Broadcast", - "outputs" : ["Broadcast_143_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_197"], - "name" : "Broadcast_198", - "op" : "Broadcast", - "outputs" : ["Broadcast_198_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_189"], - "name" : "Broadcast_190", - "op" : "Broadcast", - "outputs" : ["Broadcast_190_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_182"], - "name" : "Broadcast_183", - "op" : "Broadcast", - "outputs" : ["Broadcast_183_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_234"], - "name" : "Broadcast_235", - "op" : "Broadcast", - "outputs" : ["Broadcast_235_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_226"], - "name" : "Broadcast_227", - "op" : "Broadcast", - "outputs" : ["Broadcast_227_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_219"], - "name" : "Broadcast_220", - "op" : "Broadcast", - "outputs" : ["Broadcast_220_0"], - "shape" : [ 32, 100 ] - }, - { - "inputs" : [ "Reshape_94", "Reshape_95" ], - "name" : "Dot_96", - "op" : "Dot", - "outputs" : ["Dot_96_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_171", "Reshape_172" ], - "name" : "Dot_173", - "op" : "Dot", - "outputs" : ["Dot_173_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_3", "Reshape_4" ], - "name" : "Dot_5", - "op" : "Dot", - "outputs" : ["Dot_5_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_54", "Reshape_57" ], - "name" : "Dot_58", - "op" : "Dot", - "outputs" : ["Dot_58_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_9", "Reshape_12" ], - "name" : "Dot_13", - "op" : "Dot", - "outputs" : ["Dot_13_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_96", "Broadcast_97" ], - "name" : "Add_98", - "op" : "Add", - "outputs" : ["Add_98_0"] - }, - { - "inputs" : [ "Dot_173", "Broadcast_174" ], - "name" : "Add_175", - "op" : "Add", - "outputs" : ["Add_175_0"] - }, - { - "inputs" : [ "Dot_5", "Broadcast_6" ], - "name" : "Add_7", - "op" : "Add", - "outputs" : ["Add_7_0"] - }, - { - "inputs" : [ "Dot_58", "Broadcast_59" ], - "name" : "Add_60", - "op" : "Add", - "outputs" : ["Add_60_0"] - }, - { - "inputs" : [ "Dot_13", "Broadcast_14" ], - "name" : "Add_15", - "op" : "Add", - "outputs" : ["Add_15_0"] - }, - { - "inputs" : [ "Add_7", "Add_15" ], - "name" : "Add_16", - "op" : "Add", - "outputs" : ["Add_16_0"] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_17", - "op" : "Slice", - "outputs" : ["Slice_17_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_24", - "op" : "Slice", - "outputs" : ["Slice_24_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_34", - "op" : "Slice", - "outputs" : ["Slice_34_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_41", - "op" : "Slice", - "outputs" : ["Slice_41_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_17"], - "name" : "Negative_20", - "op" : "Negative", - "outputs" : ["Negative_20_0"] - }, - { - "inputs" : ["Slice_24"], - "name" : "Negative_27", - "op" : "Negative", - "outputs" : ["Negative_27_0"] - }, - { - "inputs" : ["Slice_34"], - "name" : "Negative_37", - "op" : "Negative", - "outputs" : ["Negative_37_0"] - }, - { - "inputs" : ["Slice_41"], - "name" : "Tanh_42", - "op" : "Tanh", - "outputs" : ["Tanh_42_0"] - }, - { - "inputs" : ["Negative_20"], - "name" : "Exp_21", - "op" : "Exp", - "outputs" : ["Exp_21_0"] - }, - { - "inputs" : ["Negative_27"], - "name" : "Exp_28", - "op" : "Exp", - "outputs" : ["Exp_28_0"] - }, - { - "inputs" : ["Negative_37"], - "name" : "Exp_38", - "op" : "Exp", - "outputs" : ["Exp_38_0"] - }, - { - "inputs" : [ "Broadcast_19", "Exp_21" ], - "name" : "Add_22", - "op" : "Add", - "outputs" : ["Add_22_0"] - }, - { - "inputs" : [ "Broadcast_26", "Exp_28" ], - "name" : "Add_29", - "op" : "Add", - "outputs" : ["Add_29_0"] - }, - { - "inputs" : [ "Broadcast_36", "Exp_38" ], - "name" : "Add_39", - "op" : "Add", - "outputs" : ["Add_39_0"] - }, - { - "inputs" : [ "Broadcast_19", "Add_22" ], - "name" : "Divide_23", - "op" : "Divide", - "outputs" : ["Divide_23_0"] - }, - { - "inputs" : [ "Broadcast_26", "Add_29" ], - "name" : "Divide_30", - "op" : "Divide", - "outputs" : ["Divide_30_0"] - }, - { - "inputs" : [ "Broadcast_36", "Add_39" ], - "name" : "Divide_40", - "op" : "Divide", - "outputs" : ["Divide_40_0"] - }, - { - "inputs" : [ "Divide_30", "Broadcast_32" ], - "name" : "Multiply_33", - "op" : "Multiply", - "outputs" : ["Multiply_33_0"] - }, - { - "inputs" : [ "Divide_40", "Tanh_42" ], - "name" : "Multiply_43", - "op" : "Multiply", - "outputs" : ["Multiply_43_0"] - }, - { - "inputs" : [ "Multiply_33", "Multiply_43" ], - "name" : "Add_44", - "op" : "Add", - "outputs" : ["Add_44_0"] - }, - { - "inputs" : ["Add_44"], - "name" : "Tanh_45", - "op" : "Tanh", - "outputs" : ["Tanh_45_0"] - }, - { - "inputs" : [ "Divide_23", "Tanh_45" ], - "name" : "Multiply_46", - "op" : "Multiply", - "outputs" : ["Multiply_46_0"] - }, - { - "inputs" : [ "Multiply_46", "Reshape_49" ], - "name" : "Dot_50", - "op" : "Dot", - "outputs" : ["Dot_50_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_46", "Reshape_99" ], - "name" : "Dot_100", - "op" : "Dot", - "outputs" : ["Dot_100_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_50", "Broadcast_51" ], - "name" : "Add_52", - "op" : "Add", - "outputs" : ["Add_52_0"] - }, - { - "inputs" : [ "Dot_100", "Broadcast_101" ], - "name" : "Add_102", - "op" : "Add", - "outputs" : ["Add_102_0"] - }, - { - "inputs" : [ "Add_52", "Add_60" ], - "name" : "Add_61", - "op" : "Add", - "outputs" : ["Add_61_0"] - }, - { - "inputs" : [ "Add_98", "Add_102" ], - "name" : "Add_103", - "op" : "Add", - "outputs" : ["Add_103_0"] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_62", - "op" : "Slice", - "outputs" : ["Slice_62_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_69", - "op" : "Slice", - "outputs" : ["Slice_69_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_79", - "op" : "Slice", - "outputs" : ["Slice_79_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_86", - "op" : "Slice", - "outputs" : ["Slice_86_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_104", - "op" : "Slice", - "outputs" : ["Slice_104_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_111", - "op" : "Slice", - "outputs" : ["Slice_111_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_119", - "op" : "Slice", - "outputs" : ["Slice_119_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_126", - "op" : "Slice", - "outputs" : ["Slice_126_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_62"], - "name" : "Negative_65", - "op" : "Negative", - "outputs" : ["Negative_65_0"] - }, - { - "inputs" : ["Slice_69"], - "name" : "Negative_72", - "op" : "Negative", - "outputs" : ["Negative_72_0"] - }, - { - "inputs" : ["Slice_79"], - "name" : "Negative_82", - "op" : "Negative", - "outputs" : ["Negative_82_0"] - }, - { - "inputs" : ["Slice_86"], - "name" : "Tanh_87", - "op" : "Tanh", - "outputs" : ["Tanh_87_0"] - }, - { - "inputs" : ["Slice_104"], - "name" : "Negative_107", - "op" : "Negative", - "outputs" : ["Negative_107_0"] - }, - { - "inputs" : ["Slice_111"], - "name" : "Negative_114", - "op" : "Negative", - "outputs" : ["Negative_114_0"] - }, - { - "inputs" : ["Slice_119"], - "name" : "Negative_122", - "op" : "Negative", - "outputs" : ["Negative_122_0"] - }, - { - "inputs" : ["Slice_126"], - "name" : "Tanh_127", - "op" : "Tanh", - "outputs" : ["Tanh_127_0"] - }, - { - "inputs" : ["Negative_65"], - "name" : "Exp_66", - "op" : "Exp", - "outputs" : ["Exp_66_0"] - }, - { - "inputs" : ["Negative_72"], - "name" : "Exp_73", - "op" : "Exp", - "outputs" : ["Exp_73_0"] - }, - { - "inputs" : ["Negative_82"], - "name" : "Exp_83", - "op" : "Exp", - "outputs" : ["Exp_83_0"] - }, - { - "inputs" : ["Negative_107"], - "name" : "Exp_108", - "op" : "Exp", - "outputs" : ["Exp_108_0"] - }, - { - "inputs" : ["Negative_114"], - "name" : "Exp_115", - "op" : "Exp", - "outputs" : ["Exp_115_0"] - }, - { - "inputs" : ["Negative_122"], - "name" : "Exp_123", - "op" : "Exp", - "outputs" : ["Exp_123_0"] - }, - { - "inputs" : [ "Broadcast_64", "Exp_66" ], - "name" : "Add_67", - "op" : "Add", - "outputs" : ["Add_67_0"] - }, - { - "inputs" : [ "Broadcast_71", "Exp_73" ], - "name" : "Add_74", - "op" : "Add", - "outputs" : ["Add_74_0"] - }, - { - "inputs" : [ "Broadcast_81", "Exp_83" ], - "name" : "Add_84", - "op" : "Add", - "outputs" : ["Add_84_0"] - }, - { - "inputs" : [ "Broadcast_106", "Exp_108" ], - "name" : "Add_109", - "op" : "Add", - "outputs" : ["Add_109_0"] - }, - { - "inputs" : [ "Broadcast_113", "Exp_115" ], - "name" : "Add_116", - "op" : "Add", - "outputs" : ["Add_116_0"] - }, - { - "inputs" : [ "Broadcast_121", "Exp_123" ], - "name" : "Add_124", - "op" : "Add", - "outputs" : ["Add_124_0"] - }, - { - "inputs" : [ "Broadcast_64", "Add_67" ], - "name" : "Divide_68", - "op" : "Divide", - "outputs" : ["Divide_68_0"] - }, - { - "inputs" : [ "Broadcast_71", "Add_74" ], - "name" : "Divide_75", - "op" : "Divide", - "outputs" : ["Divide_75_0"] - }, - { - "inputs" : [ "Broadcast_81", "Add_84" ], - "name" : "Divide_85", - "op" : "Divide", - "outputs" : ["Divide_85_0"] - }, - { - "inputs" : [ "Broadcast_106", "Add_109" ], - "name" : "Divide_110", - "op" : "Divide", - "outputs" : ["Divide_110_0"] - }, - { - "inputs" : [ "Broadcast_113", "Add_116" ], - "name" : "Divide_117", - "op" : "Divide", - "outputs" : ["Divide_117_0"] - }, - { - "inputs" : [ "Broadcast_121", "Add_124" ], - "name" : "Divide_125", - "op" : "Divide", - "outputs" : ["Divide_125_0"] - }, - { - "inputs" : [ "Divide_75", "Broadcast_77" ], - "name" : "Multiply_78", - "op" : "Multiply", - "outputs" : ["Multiply_78_0"] - }, - { - "inputs" : [ "Divide_85", "Tanh_87" ], - "name" : "Multiply_88", - "op" : "Multiply", - "outputs" : ["Multiply_88_0"] - }, - { - "inputs" : [ "Divide_117", "Add_44" ], - "name" : "Multiply_118", - "op" : "Multiply", - "outputs" : ["Multiply_118_0"] - }, - { - "inputs" : [ "Divide_125", "Tanh_127" ], - "name" : "Multiply_128", - "op" : "Multiply", - "outputs" : ["Multiply_128_0"] - }, - { - "inputs" : [ "Multiply_78", "Multiply_88" ], - "name" : "Add_89", - "op" : "Add", - "outputs" : ["Add_89_0"] - }, - { - "inputs" : [ "Multiply_118", "Multiply_128" ], - "name" : "Add_129", - "op" : "Add", - "outputs" : ["Add_129_0"] - }, - { - "inputs" : ["Add_89"], - "name" : "Tanh_90", - "op" : "Tanh", - "outputs" : ["Tanh_90_0"] - }, - { - "inputs" : ["Add_129"], - "name" : "Tanh_130", - "op" : "Tanh", - "outputs" : ["Tanh_130_0"] - }, - { - "inputs" : [ "Divide_68", "Tanh_90" ], - "name" : "Multiply_91", - "op" : "Multiply", - "outputs" : ["Multiply_91_0"] - }, - { - "inputs" : [ "Divide_110", "Tanh_130" ], - "name" : "Multiply_131", - "op" : "Multiply", - "outputs" : ["Multiply_131_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_91"], - "name" : "Reshape_92", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_92_0"] - }, - { - "inputs" : [ "Multiply_91", "Reshape_136" ], - "name" : "Dot_137", - "op" : "Dot", - "outputs" : ["Dot_137_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_131", "Reshape_132" ], - "name" : "Dot_133", - "op" : "Dot", - "outputs" : ["Dot_133_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_131", "Reshape_176" ], - "name" : "Dot_177", - "op" : "Dot", - "outputs" : ["Dot_177_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_137", "Broadcast_138" ], - "name" : "Add_139", - "op" : "Add", - "outputs" : ["Add_139_0"] - }, - { - "inputs" : [ "Dot_133", "Broadcast_134" ], - "name" : "Add_135", - "op" : "Add", - "outputs" : ["Add_135_0"] - }, - { - "inputs" : [ "Dot_177", "Broadcast_178" ], - "name" : "Add_179", - "op" : "Add", - "outputs" : ["Add_179_0"] - }, - { - "inputs" : [ "Add_135", "Add_139" ], - "name" : "Add_140", - "op" : "Add", - "outputs" : ["Add_140_0"] - }, - { - "inputs" : [ "Add_175", "Add_179" ], - "name" : "Add_180", - "op" : "Add", - "outputs" : ["Add_180_0"] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_141", - "op" : "Slice", - "outputs" : ["Slice_141_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_148", - "op" : "Slice", - "outputs" : ["Slice_148_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_156", - "op" : "Slice", - "outputs" : ["Slice_156_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_163", - "op" : "Slice", - "outputs" : ["Slice_163_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_181", - "op" : "Slice", - "outputs" : ["Slice_181_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_188", - "op" : "Slice", - "outputs" : ["Slice_188_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_196", - "op" : "Slice", - "outputs" : ["Slice_196_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_203", - "op" : "Slice", - "outputs" : ["Slice_203_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_141"], - "name" : "Negative_144", - "op" : "Negative", - "outputs" : ["Negative_144_0"] - }, - { - "inputs" : ["Slice_148"], - "name" : "Negative_151", - "op" : "Negative", - "outputs" : ["Negative_151_0"] - }, - { - "inputs" : ["Slice_156"], - "name" : "Negative_159", - "op" : "Negative", - "outputs" : ["Negative_159_0"] - }, - { - "inputs" : ["Slice_163"], - "name" : "Tanh_164", - "op" : "Tanh", - "outputs" : ["Tanh_164_0"] - }, - { - "inputs" : ["Slice_181"], - "name" : "Negative_184", - "op" : "Negative", - "outputs" : ["Negative_184_0"] - }, - { - "inputs" : ["Slice_188"], - "name" : "Negative_191", - "op" : "Negative", - "outputs" : ["Negative_191_0"] - }, - { - "inputs" : ["Slice_196"], - "name" : "Negative_199", - "op" : "Negative", - "outputs" : ["Negative_199_0"] - }, - { - "inputs" : ["Slice_203"], - "name" : "Tanh_204", - "op" : "Tanh", - "outputs" : ["Tanh_204_0"] - }, - { - "inputs" : ["Negative_144"], - "name" : "Exp_145", - "op" : "Exp", - "outputs" : ["Exp_145_0"] - }, - { - "inputs" : ["Negative_151"], - "name" : "Exp_152", - "op" : "Exp", - "outputs" : ["Exp_152_0"] - }, - { - "inputs" : ["Negative_159"], - "name" : "Exp_160", - "op" : "Exp", - "outputs" : ["Exp_160_0"] - }, - { - "inputs" : ["Negative_184"], - "name" : "Exp_185", - "op" : "Exp", - "outputs" : ["Exp_185_0"] - }, - { - "inputs" : ["Negative_191"], - "name" : "Exp_192", - "op" : "Exp", - "outputs" : ["Exp_192_0"] - }, - { - "inputs" : ["Negative_199"], - "name" : "Exp_200", - "op" : "Exp", - "outputs" : ["Exp_200_0"] - }, - { - "inputs" : [ "Broadcast_143", "Exp_145" ], - "name" : "Add_146", - "op" : "Add", - "outputs" : ["Add_146_0"] - }, - { - "inputs" : [ "Broadcast_150", "Exp_152" ], - "name" : "Add_153", - "op" : "Add", - "outputs" : ["Add_153_0"] - }, - { - "inputs" : [ "Broadcast_158", "Exp_160" ], - "name" : "Add_161", - "op" : "Add", - "outputs" : ["Add_161_0"] - }, - { - "inputs" : [ "Broadcast_183", "Exp_185" ], - "name" : "Add_186", - "op" : "Add", - "outputs" : ["Add_186_0"] - }, - { - "inputs" : [ "Broadcast_190", "Exp_192" ], - "name" : "Add_193", - "op" : "Add", - "outputs" : ["Add_193_0"] - }, - { - "inputs" : [ "Broadcast_198", "Exp_200" ], - "name" : "Add_201", - "op" : "Add", - "outputs" : ["Add_201_0"] - }, - { - "inputs" : [ "Broadcast_143", "Add_146" ], - "name" : "Divide_147", - "op" : "Divide", - "outputs" : ["Divide_147_0"] - }, - { - "inputs" : [ "Broadcast_150", "Add_153" ], - "name" : "Divide_154", - "op" : "Divide", - "outputs" : ["Divide_154_0"] - }, - { - "inputs" : [ "Broadcast_158", "Add_161" ], - "name" : "Divide_162", - "op" : "Divide", - "outputs" : ["Divide_162_0"] - }, - { - "inputs" : [ "Broadcast_183", "Add_186" ], - "name" : "Divide_187", - "op" : "Divide", - "outputs" : ["Divide_187_0"] - }, - { - "inputs" : [ "Broadcast_190", "Add_193" ], - "name" : "Divide_194", - "op" : "Divide", - "outputs" : ["Divide_194_0"] - }, - { - "inputs" : [ "Broadcast_198", "Add_201" ], - "name" : "Divide_202", - "op" : "Divide", - "outputs" : ["Divide_202_0"] - }, - { - "inputs" : [ "Divide_154", "Add_89" ], - "name" : "Multiply_155", - "op" : "Multiply", - "outputs" : ["Multiply_155_0"] - }, - { - "inputs" : [ "Divide_162", "Tanh_164" ], - "name" : "Multiply_165", - "op" : "Multiply", - "outputs" : ["Multiply_165_0"] - }, - { - "inputs" : [ "Divide_194", "Add_129" ], - "name" : "Multiply_195", - "op" : "Multiply", - "outputs" : ["Multiply_195_0"] - }, - { - "inputs" : [ "Divide_202", "Tanh_204" ], - "name" : "Multiply_205", - "op" : "Multiply", - "outputs" : ["Multiply_205_0"] - }, - { - "inputs" : [ "Multiply_155", "Multiply_165" ], - "name" : "Add_166", - "op" : "Add", - "outputs" : ["Add_166_0"] - }, - { - "inputs" : [ "Multiply_195", "Multiply_205" ], - "name" : "Add_206", - "op" : "Add", - "outputs" : ["Add_206_0"] - }, - { - "inputs" : ["Add_166"], - "name" : "Tanh_167", - "op" : "Tanh", - "outputs" : ["Tanh_167_0"] - }, - { - "inputs" : ["Add_206"], - "name" : "Tanh_207", - "op" : "Tanh", - "outputs" : ["Tanh_207_0"] - }, - { - "inputs" : [ "Divide_147", "Tanh_167" ], - "name" : "Multiply_168", - "op" : "Multiply", - "outputs" : ["Multiply_168_0"] - }, - { - "inputs" : [ "Divide_187", "Tanh_207" ], - "name" : "Multiply_208", - "op" : "Multiply", - "outputs" : ["Multiply_208_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_168"], - "name" : "Reshape_169", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_169_0"] - }, - { - "inputs" : [ "Multiply_168", "Reshape_213" ], - "name" : "Dot_214", - "op" : "Dot", - "outputs" : ["Dot_214_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_208", "Reshape_209" ], - "name" : "Dot_210", - "op" : "Dot", - "outputs" : ["Dot_210_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_214", "Broadcast_215" ], - "name" : "Add_216", - "op" : "Add", - "outputs" : ["Add_216_0"] - }, - { - "inputs" : [ "Dot_210", "Broadcast_211" ], - "name" : "Add_212", - "op" : "Add", - "outputs" : ["Add_212_0"] - }, - { - "inputs" : [ "Add_212", "Add_216" ], - "name" : "Add_217", - "op" : "Add", - "outputs" : ["Add_217_0"] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_218", - "op" : "Slice", - "outputs" : ["Slice_218_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_225", - "op" : "Slice", - "outputs" : ["Slice_225_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_233", - "op" : "Slice", - "outputs" : ["Slice_233_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_240", - "op" : "Slice", - "outputs" : ["Slice_240_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_218"], - "name" : "Negative_221", - "op" : "Negative", - "outputs" : ["Negative_221_0"] - }, - { - "inputs" : ["Slice_225"], - "name" : "Negative_228", - "op" : "Negative", - "outputs" : ["Negative_228_0"] - }, - { - "inputs" : ["Slice_233"], - "name" : "Negative_236", - "op" : "Negative", - "outputs" : ["Negative_236_0"] - }, - { - "inputs" : ["Slice_240"], - "name" : "Tanh_241", - "op" : "Tanh", - "outputs" : ["Tanh_241_0"] - }, - { - "inputs" : ["Negative_221"], - "name" : "Exp_222", - "op" : "Exp", - "outputs" : ["Exp_222_0"] - }, - { - "inputs" : ["Negative_228"], - "name" : "Exp_229", - "op" : "Exp", - "outputs" : ["Exp_229_0"] - }, - { - "inputs" : ["Negative_236"], - "name" : "Exp_237", - "op" : "Exp", - "outputs" : ["Exp_237_0"] - }, - { - "inputs" : [ "Broadcast_220", "Exp_222" ], - "name" : "Add_223", - "op" : "Add", - "outputs" : ["Add_223_0"] - }, - { - "inputs" : [ "Broadcast_227", "Exp_229" ], - "name" : "Add_230", - "op" : "Add", - "outputs" : ["Add_230_0"] - }, - { - "inputs" : [ "Broadcast_235", "Exp_237" ], - "name" : "Add_238", - "op" : "Add", - "outputs" : ["Add_238_0"] - }, - { - "inputs" : [ "Broadcast_220", "Add_223" ], - "name" : "Divide_224", - "op" : "Divide", - "outputs" : ["Divide_224_0"] - }, - { - "inputs" : [ "Broadcast_227", "Add_230" ], - "name" : "Divide_231", - "op" : "Divide", - "outputs" : ["Divide_231_0"] - }, - { - "inputs" : [ "Broadcast_235", "Add_238" ], - "name" : "Divide_239", - "op" : "Divide", - "outputs" : ["Divide_239_0"] - }, - { - "inputs" : [ "Divide_231", "Add_166" ], - "name" : "Multiply_232", - "op" : "Multiply", - "outputs" : ["Multiply_232_0"] - }, - { - "inputs" : [ "Divide_239", "Tanh_241" ], - "name" : "Multiply_242", - "op" : "Multiply", - "outputs" : ["Multiply_242_0"] - }, - { - "inputs" : [ "Multiply_232", "Multiply_242" ], - "name" : "Add_243", - "op" : "Add", - "outputs" : ["Add_243_0"] - }, - { - "inputs" : ["Add_243"], - "name" : "Tanh_244", - "op" : "Tanh", - "outputs" : ["Tanh_244_0"] - }, - { - "inputs" : [ "Divide_224", "Tanh_244" ], - "name" : "Multiply_245", - "op" : "Multiply", - "outputs" : ["Multiply_245_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_245"], - "name" : "Reshape_246", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_246_0"] - }, - { - "axis" : 1, - "inputs" : [ "Reshape_92", "Reshape_169", "Reshape_246" ], - "name" : "Concat_247", - "op" : "Concat", - "outputs" : ["Concat_247_0"] - }, - { - "inputs" : ["Concat_247"], - "name" : "Result_248", - "op" : "Result", - "outputs" : ["Result_248_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_10", "Parameter_11", - "Parameter_47", "Parameter_48", "Parameter_55", "Parameter_56", - "Parameter_93", "Parameter_170" - ], - "result" : ["Result_248"] -}] diff --git a/ngraph/test/models/mxnet/3_lstm_cell_forward.json b/ngraph/test/models/mxnet/3_lstm_cell_forward.json deleted file mode 100644 index 90ff3d83e87912..00000000000000 --- a/ngraph/test/models/mxnet/3_lstm_cell_forward.json +++ /dev/null @@ -1,1782 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_170", - "op" : "Parameter", - "outputs" : ["Parameter_170_0"], - "shape" : [ 32, 1, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_93", - "op" : "Parameter", - "outputs" : ["Parameter_93_0"], - "shape" : [ 32, 1, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_56", - "op" : "Parameter", - "outputs" : ["Parameter_56_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_55", - "op" : "Parameter", - "outputs" : ["Parameter_55_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_48", - "op" : "Parameter", - "outputs" : ["Parameter_48_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_47", - "op" : "Parameter", - "outputs" : ["Parameter_47_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_11", - "op" : "Parameter", - "outputs" : ["Parameter_11_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_10", - "op" : "Parameter", - "outputs" : ["Parameter_10_0"], - "shape" : [ 400, 100 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [400] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [ 400, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 32, 1, 200 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_53", - "op" : "Constant", - "outputs" : ["Constant_53_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_8", - "op" : "Constant", - "outputs" : ["Constant_8_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_35", - "op" : "Constant", - "outputs" : ["Constant_35_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_31", - "op" : "Constant", - "outputs" : ["Constant_31_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_25", - "op" : "Constant", - "outputs" : ["Constant_25_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_18", - "op" : "Constant", - "outputs" : ["Constant_18_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_80", - "op" : "Constant", - "outputs" : ["Constant_80_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_76", - "op" : "Constant", - "outputs" : ["Constant_76_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_70", - "op" : "Constant", - "outputs" : ["Constant_70_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_63", - "op" : "Constant", - "outputs" : ["Constant_63_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_120", - "op" : "Constant", - "outputs" : ["Constant_120_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_112", - "op" : "Constant", - "outputs" : ["Constant_112_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_105", - "op" : "Constant", - "outputs" : ["Constant_105_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_157", - "op" : "Constant", - "outputs" : ["Constant_157_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_149", - "op" : "Constant", - "outputs" : ["Constant_149_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_142", - "op" : "Constant", - "outputs" : ["Constant_142_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_197", - "op" : "Constant", - "outputs" : ["Constant_197_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_189", - "op" : "Constant", - "outputs" : ["Constant_189_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_182", - "op" : "Constant", - "outputs" : ["Constant_182_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_234", - "op" : "Constant", - "outputs" : ["Constant_234_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_226", - "op" : "Constant", - "outputs" : ["Constant_226_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_219", - "op" : "Constant", - "outputs" : ["Constant_219_0"], - "shape" : [], - "value" : ["1"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_170"], - "name" : "Reshape_171", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_171_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_93"], - "name" : "Reshape_94", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_94_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_59", - "op" : "Broadcast", - "outputs" : ["Broadcast_59_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_138", - "op" : "Broadcast", - "outputs" : ["Broadcast_138_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_56"], - "name" : "Broadcast_215", - "op" : "Broadcast", - "outputs" : ["Broadcast_215_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_57", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_57_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_136", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_136_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_55"], - "name" : "Reshape_213", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_213_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_51", - "op" : "Broadcast", - "outputs" : ["Broadcast_51_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_134", - "op" : "Broadcast", - "outputs" : ["Broadcast_134_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_48"], - "name" : "Broadcast_211", - "op" : "Broadcast", - "outputs" : ["Broadcast_211_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_49", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_49_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_132", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_132_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_47"], - "name" : "Reshape_209", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_209_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_14", - "op" : "Broadcast", - "outputs" : ["Broadcast_14_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_101", - "op" : "Broadcast", - "outputs" : ["Broadcast_101_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_178", - "op" : "Broadcast", - "outputs" : ["Broadcast_178_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_12", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_12_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_99", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_99_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_10"], - "name" : "Reshape_176", - "op" : "Reshape", - "output_shape" : [ 100, 400 ], - "outputs" : ["Reshape_176_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_6", - "op" : "Broadcast", - "outputs" : ["Broadcast_6_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_97", - "op" : "Broadcast", - "outputs" : ["Broadcast_97_0"], - "shape" : [ 32, 400 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_2"], - "name" : "Broadcast_174", - "op" : "Broadcast", - "outputs" : ["Broadcast_174_0"], - "shape" : [ 32, 400 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_4", - "op" : "Reshape", - "output_shape" : [ 200, 400 ], - "outputs" : ["Reshape_4_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_95", - "op" : "Reshape", - "output_shape" : [ 200, 400 ], - "outputs" : ["Reshape_95_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1"], - "name" : "Reshape_172", - "op" : "Reshape", - "output_shape" : [ 200, 400 ], - "outputs" : ["Reshape_172_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Parameter_0"], - "name" : "Reshape_3", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_3_0"] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_53"], - "name" : "Broadcast_54", - "op" : "Broadcast", - "outputs" : ["Broadcast_54_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_8"], - "name" : "Broadcast_9", - "op" : "Broadcast", - "outputs" : ["Broadcast_9_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_35"], - "name" : "Broadcast_36", - "op" : "Broadcast", - "outputs" : ["Broadcast_36_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_31"], - "name" : "Broadcast_32", - "op" : "Broadcast", - "outputs" : ["Broadcast_32_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_25"], - "name" : "Broadcast_26", - "op" : "Broadcast", - "outputs" : ["Broadcast_26_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_80"], - "name" : "Broadcast_81", - "op" : "Broadcast", - "outputs" : ["Broadcast_81_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_76"], - "name" : "Broadcast_77", - "op" : "Broadcast", - "outputs" : ["Broadcast_77_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_70"], - "name" : "Broadcast_71", - "op" : "Broadcast", - "outputs" : ["Broadcast_71_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_63"], - "name" : "Broadcast_64", - "op" : "Broadcast", - "outputs" : ["Broadcast_64_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_120"], - "name" : "Broadcast_121", - "op" : "Broadcast", - "outputs" : ["Broadcast_121_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_112"], - "name" : "Broadcast_113", - "op" : "Broadcast", - "outputs" : ["Broadcast_113_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_105"], - "name" : "Broadcast_106", - "op" : "Broadcast", - "outputs" : ["Broadcast_106_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_157"], - "name" : "Broadcast_158", - "op" : "Broadcast", - "outputs" : ["Broadcast_158_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_149"], - "name" : "Broadcast_150", - "op" : "Broadcast", - "outputs" : ["Broadcast_150_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_142"], - "name" : "Broadcast_143", - "op" : "Broadcast", - "outputs" : ["Broadcast_143_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_197"], - "name" : "Broadcast_198", - "op" : "Broadcast", - "outputs" : ["Broadcast_198_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_189"], - "name" : "Broadcast_190", - "op" : "Broadcast", - "outputs" : ["Broadcast_190_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_182"], - "name" : "Broadcast_183", - "op" : "Broadcast", - "outputs" : ["Broadcast_183_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_234"], - "name" : "Broadcast_235", - "op" : "Broadcast", - "outputs" : ["Broadcast_235_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_226"], - "name" : "Broadcast_227", - "op" : "Broadcast", - "outputs" : ["Broadcast_227_0"], - "shape" : [ 32, 100 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_219"], - "name" : "Broadcast_220", - "op" : "Broadcast", - "outputs" : ["Broadcast_220_0"], - "shape" : [ 32, 100 ] - }, - { - "inputs" : [ "Reshape_94", "Reshape_95" ], - "name" : "Dot_96", - "op" : "Dot", - "outputs" : ["Dot_96_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_171", "Reshape_172" ], - "name" : "Dot_173", - "op" : "Dot", - "outputs" : ["Dot_173_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_3", "Reshape_4" ], - "name" : "Dot_5", - "op" : "Dot", - "outputs" : ["Dot_5_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_54", "Reshape_57" ], - "name" : "Dot_58", - "op" : "Dot", - "outputs" : ["Dot_58_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Broadcast_9", "Reshape_12" ], - "name" : "Dot_13", - "op" : "Dot", - "outputs" : ["Dot_13_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_96", "Broadcast_97" ], - "name" : "Add_98", - "op" : "Add", - "outputs" : ["Add_98_0"] - }, - { - "inputs" : [ "Dot_173", "Broadcast_174" ], - "name" : "Add_175", - "op" : "Add", - "outputs" : ["Add_175_0"] - }, - { - "inputs" : [ "Dot_5", "Broadcast_6" ], - "name" : "Add_7", - "op" : "Add", - "outputs" : ["Add_7_0"] - }, - { - "inputs" : [ "Dot_58", "Broadcast_59" ], - "name" : "Add_60", - "op" : "Add", - "outputs" : ["Add_60_0"] - }, - { - "inputs" : [ "Dot_13", "Broadcast_14" ], - "name" : "Add_15", - "op" : "Add", - "outputs" : ["Add_15_0"] - }, - { - "inputs" : [ "Add_7", "Add_15" ], - "name" : "Add_16", - "op" : "Add", - "outputs" : ["Add_16_0"] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_17", - "op" : "Slice", - "outputs" : ["Slice_17_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_24", - "op" : "Slice", - "outputs" : ["Slice_24_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_34", - "op" : "Slice", - "outputs" : ["Slice_34_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_16"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_41", - "op" : "Slice", - "outputs" : ["Slice_41_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_17"], - "name" : "Negative_20", - "op" : "Negative", - "outputs" : ["Negative_20_0"] - }, - { - "inputs" : ["Slice_24"], - "name" : "Negative_27", - "op" : "Negative", - "outputs" : ["Negative_27_0"] - }, - { - "inputs" : ["Slice_34"], - "name" : "Negative_37", - "op" : "Negative", - "outputs" : ["Negative_37_0"] - }, - { - "inputs" : ["Slice_41"], - "name" : "Tanh_42", - "op" : "Tanh", - "outputs" : ["Tanh_42_0"] - }, - { - "inputs" : ["Negative_20"], - "name" : "Exp_21", - "op" : "Exp", - "outputs" : ["Exp_21_0"] - }, - { - "inputs" : ["Negative_27"], - "name" : "Exp_28", - "op" : "Exp", - "outputs" : ["Exp_28_0"] - }, - { - "inputs" : ["Negative_37"], - "name" : "Exp_38", - "op" : "Exp", - "outputs" : ["Exp_38_0"] - }, - { - "inputs" : [ "Broadcast_19", "Exp_21" ], - "name" : "Add_22", - "op" : "Add", - "outputs" : ["Add_22_0"] - }, - { - "inputs" : [ "Broadcast_26", "Exp_28" ], - "name" : "Add_29", - "op" : "Add", - "outputs" : ["Add_29_0"] - }, - { - "inputs" : [ "Broadcast_36", "Exp_38" ], - "name" : "Add_39", - "op" : "Add", - "outputs" : ["Add_39_0"] - }, - { - "inputs" : [ "Broadcast_19", "Add_22" ], - "name" : "Divide_23", - "op" : "Divide", - "outputs" : ["Divide_23_0"] - }, - { - "inputs" : [ "Broadcast_26", "Add_29" ], - "name" : "Divide_30", - "op" : "Divide", - "outputs" : ["Divide_30_0"] - }, - { - "inputs" : [ "Broadcast_36", "Add_39" ], - "name" : "Divide_40", - "op" : "Divide", - "outputs" : ["Divide_40_0"] - }, - { - "inputs" : [ "Divide_30", "Broadcast_32" ], - "name" : "Multiply_33", - "op" : "Multiply", - "outputs" : ["Multiply_33_0"] - }, - { - "inputs" : [ "Divide_40", "Tanh_42" ], - "name" : "Multiply_43", - "op" : "Multiply", - "outputs" : ["Multiply_43_0"] - }, - { - "inputs" : [ "Multiply_33", "Multiply_43" ], - "name" : "Add_44", - "op" : "Add", - "outputs" : ["Add_44_0"] - }, - { - "inputs" : ["Add_44"], - "name" : "Tanh_45", - "op" : "Tanh", - "outputs" : ["Tanh_45_0"] - }, - { - "inputs" : [ "Divide_23", "Tanh_45" ], - "name" : "Multiply_46", - "op" : "Multiply", - "outputs" : ["Multiply_46_0"] - }, - { - "inputs" : [ "Multiply_46", "Reshape_49" ], - "name" : "Dot_50", - "op" : "Dot", - "outputs" : ["Dot_50_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_46", "Reshape_99" ], - "name" : "Dot_100", - "op" : "Dot", - "outputs" : ["Dot_100_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_50", "Broadcast_51" ], - "name" : "Add_52", - "op" : "Add", - "outputs" : ["Add_52_0"] - }, - { - "inputs" : [ "Dot_100", "Broadcast_101" ], - "name" : "Add_102", - "op" : "Add", - "outputs" : ["Add_102_0"] - }, - { - "inputs" : [ "Add_52", "Add_60" ], - "name" : "Add_61", - "op" : "Add", - "outputs" : ["Add_61_0"] - }, - { - "inputs" : [ "Add_98", "Add_102" ], - "name" : "Add_103", - "op" : "Add", - "outputs" : ["Add_103_0"] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_62", - "op" : "Slice", - "outputs" : ["Slice_62_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_69", - "op" : "Slice", - "outputs" : ["Slice_69_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_79", - "op" : "Slice", - "outputs" : ["Slice_79_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_61"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_86", - "op" : "Slice", - "outputs" : ["Slice_86_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_104", - "op" : "Slice", - "outputs" : ["Slice_104_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_111", - "op" : "Slice", - "outputs" : ["Slice_111_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_119", - "op" : "Slice", - "outputs" : ["Slice_119_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_103"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_126", - "op" : "Slice", - "outputs" : ["Slice_126_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_62"], - "name" : "Negative_65", - "op" : "Negative", - "outputs" : ["Negative_65_0"] - }, - { - "inputs" : ["Slice_69"], - "name" : "Negative_72", - "op" : "Negative", - "outputs" : ["Negative_72_0"] - }, - { - "inputs" : ["Slice_79"], - "name" : "Negative_82", - "op" : "Negative", - "outputs" : ["Negative_82_0"] - }, - { - "inputs" : ["Slice_86"], - "name" : "Tanh_87", - "op" : "Tanh", - "outputs" : ["Tanh_87_0"] - }, - { - "inputs" : ["Slice_104"], - "name" : "Negative_107", - "op" : "Negative", - "outputs" : ["Negative_107_0"] - }, - { - "inputs" : ["Slice_111"], - "name" : "Negative_114", - "op" : "Negative", - "outputs" : ["Negative_114_0"] - }, - { - "inputs" : ["Slice_119"], - "name" : "Negative_122", - "op" : "Negative", - "outputs" : ["Negative_122_0"] - }, - { - "inputs" : ["Slice_126"], - "name" : "Tanh_127", - "op" : "Tanh", - "outputs" : ["Tanh_127_0"] - }, - { - "inputs" : ["Negative_65"], - "name" : "Exp_66", - "op" : "Exp", - "outputs" : ["Exp_66_0"] - }, - { - "inputs" : ["Negative_72"], - "name" : "Exp_73", - "op" : "Exp", - "outputs" : ["Exp_73_0"] - }, - { - "inputs" : ["Negative_82"], - "name" : "Exp_83", - "op" : "Exp", - "outputs" : ["Exp_83_0"] - }, - { - "inputs" : ["Negative_107"], - "name" : "Exp_108", - "op" : "Exp", - "outputs" : ["Exp_108_0"] - }, - { - "inputs" : ["Negative_114"], - "name" : "Exp_115", - "op" : "Exp", - "outputs" : ["Exp_115_0"] - }, - { - "inputs" : ["Negative_122"], - "name" : "Exp_123", - "op" : "Exp", - "outputs" : ["Exp_123_0"] - }, - { - "inputs" : [ "Broadcast_64", "Exp_66" ], - "name" : "Add_67", - "op" : "Add", - "outputs" : ["Add_67_0"] - }, - { - "inputs" : [ "Broadcast_71", "Exp_73" ], - "name" : "Add_74", - "op" : "Add", - "outputs" : ["Add_74_0"] - }, - { - "inputs" : [ "Broadcast_81", "Exp_83" ], - "name" : "Add_84", - "op" : "Add", - "outputs" : ["Add_84_0"] - }, - { - "inputs" : [ "Broadcast_106", "Exp_108" ], - "name" : "Add_109", - "op" : "Add", - "outputs" : ["Add_109_0"] - }, - { - "inputs" : [ "Broadcast_113", "Exp_115" ], - "name" : "Add_116", - "op" : "Add", - "outputs" : ["Add_116_0"] - }, - { - "inputs" : [ "Broadcast_121", "Exp_123" ], - "name" : "Add_124", - "op" : "Add", - "outputs" : ["Add_124_0"] - }, - { - "inputs" : [ "Broadcast_64", "Add_67" ], - "name" : "Divide_68", - "op" : "Divide", - "outputs" : ["Divide_68_0"] - }, - { - "inputs" : [ "Broadcast_71", "Add_74" ], - "name" : "Divide_75", - "op" : "Divide", - "outputs" : ["Divide_75_0"] - }, - { - "inputs" : [ "Broadcast_81", "Add_84" ], - "name" : "Divide_85", - "op" : "Divide", - "outputs" : ["Divide_85_0"] - }, - { - "inputs" : [ "Broadcast_106", "Add_109" ], - "name" : "Divide_110", - "op" : "Divide", - "outputs" : ["Divide_110_0"] - }, - { - "inputs" : [ "Broadcast_113", "Add_116" ], - "name" : "Divide_117", - "op" : "Divide", - "outputs" : ["Divide_117_0"] - }, - { - "inputs" : [ "Broadcast_121", "Add_124" ], - "name" : "Divide_125", - "op" : "Divide", - "outputs" : ["Divide_125_0"] - }, - { - "inputs" : [ "Divide_75", "Broadcast_77" ], - "name" : "Multiply_78", - "op" : "Multiply", - "outputs" : ["Multiply_78_0"] - }, - { - "inputs" : [ "Divide_85", "Tanh_87" ], - "name" : "Multiply_88", - "op" : "Multiply", - "outputs" : ["Multiply_88_0"] - }, - { - "inputs" : [ "Divide_117", "Add_44" ], - "name" : "Multiply_118", - "op" : "Multiply", - "outputs" : ["Multiply_118_0"] - }, - { - "inputs" : [ "Divide_125", "Tanh_127" ], - "name" : "Multiply_128", - "op" : "Multiply", - "outputs" : ["Multiply_128_0"] - }, - { - "inputs" : [ "Multiply_78", "Multiply_88" ], - "name" : "Add_89", - "op" : "Add", - "outputs" : ["Add_89_0"] - }, - { - "inputs" : [ "Multiply_118", "Multiply_128" ], - "name" : "Add_129", - "op" : "Add", - "outputs" : ["Add_129_0"] - }, - { - "inputs" : ["Add_89"], - "name" : "Tanh_90", - "op" : "Tanh", - "outputs" : ["Tanh_90_0"] - }, - { - "inputs" : ["Add_129"], - "name" : "Tanh_130", - "op" : "Tanh", - "outputs" : ["Tanh_130_0"] - }, - { - "inputs" : [ "Divide_68", "Tanh_90" ], - "name" : "Multiply_91", - "op" : "Multiply", - "outputs" : ["Multiply_91_0"] - }, - { - "inputs" : [ "Divide_110", "Tanh_130" ], - "name" : "Multiply_131", - "op" : "Multiply", - "outputs" : ["Multiply_131_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_91"], - "name" : "Reshape_92", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_92_0"] - }, - { - "inputs" : [ "Multiply_91", "Reshape_136" ], - "name" : "Dot_137", - "op" : "Dot", - "outputs" : ["Dot_137_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_131", "Reshape_132" ], - "name" : "Dot_133", - "op" : "Dot", - "outputs" : ["Dot_133_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_131", "Reshape_176" ], - "name" : "Dot_177", - "op" : "Dot", - "outputs" : ["Dot_177_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_137", "Broadcast_138" ], - "name" : "Add_139", - "op" : "Add", - "outputs" : ["Add_139_0"] - }, - { - "inputs" : [ "Dot_133", "Broadcast_134" ], - "name" : "Add_135", - "op" : "Add", - "outputs" : ["Add_135_0"] - }, - { - "inputs" : [ "Dot_177", "Broadcast_178" ], - "name" : "Add_179", - "op" : "Add", - "outputs" : ["Add_179_0"] - }, - { - "inputs" : [ "Add_135", "Add_139" ], - "name" : "Add_140", - "op" : "Add", - "outputs" : ["Add_140_0"] - }, - { - "inputs" : [ "Add_175", "Add_179" ], - "name" : "Add_180", - "op" : "Add", - "outputs" : ["Add_180_0"] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_141", - "op" : "Slice", - "outputs" : ["Slice_141_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_148", - "op" : "Slice", - "outputs" : ["Slice_148_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_156", - "op" : "Slice", - "outputs" : ["Slice_156_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_140"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_163", - "op" : "Slice", - "outputs" : ["Slice_163_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_181", - "op" : "Slice", - "outputs" : ["Slice_181_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_188", - "op" : "Slice", - "outputs" : ["Slice_188_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_196", - "op" : "Slice", - "outputs" : ["Slice_196_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_203", - "op" : "Slice", - "outputs" : ["Slice_203_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_141"], - "name" : "Negative_144", - "op" : "Negative", - "outputs" : ["Negative_144_0"] - }, - { - "inputs" : ["Slice_148"], - "name" : "Negative_151", - "op" : "Negative", - "outputs" : ["Negative_151_0"] - }, - { - "inputs" : ["Slice_156"], - "name" : "Negative_159", - "op" : "Negative", - "outputs" : ["Negative_159_0"] - }, - { - "inputs" : ["Slice_163"], - "name" : "Tanh_164", - "op" : "Tanh", - "outputs" : ["Tanh_164_0"] - }, - { - "inputs" : ["Slice_181"], - "name" : "Negative_184", - "op" : "Negative", - "outputs" : ["Negative_184_0"] - }, - { - "inputs" : ["Slice_188"], - "name" : "Negative_191", - "op" : "Negative", - "outputs" : ["Negative_191_0"] - }, - { - "inputs" : ["Slice_196"], - "name" : "Negative_199", - "op" : "Negative", - "outputs" : ["Negative_199_0"] - }, - { - "inputs" : ["Slice_203"], - "name" : "Tanh_204", - "op" : "Tanh", - "outputs" : ["Tanh_204_0"] - }, - { - "inputs" : ["Negative_144"], - "name" : "Exp_145", - "op" : "Exp", - "outputs" : ["Exp_145_0"] - }, - { - "inputs" : ["Negative_151"], - "name" : "Exp_152", - "op" : "Exp", - "outputs" : ["Exp_152_0"] - }, - { - "inputs" : ["Negative_159"], - "name" : "Exp_160", - "op" : "Exp", - "outputs" : ["Exp_160_0"] - }, - { - "inputs" : ["Negative_184"], - "name" : "Exp_185", - "op" : "Exp", - "outputs" : ["Exp_185_0"] - }, - { - "inputs" : ["Negative_191"], - "name" : "Exp_192", - "op" : "Exp", - "outputs" : ["Exp_192_0"] - }, - { - "inputs" : ["Negative_199"], - "name" : "Exp_200", - "op" : "Exp", - "outputs" : ["Exp_200_0"] - }, - { - "inputs" : [ "Broadcast_143", "Exp_145" ], - "name" : "Add_146", - "op" : "Add", - "outputs" : ["Add_146_0"] - }, - { - "inputs" : [ "Broadcast_150", "Exp_152" ], - "name" : "Add_153", - "op" : "Add", - "outputs" : ["Add_153_0"] - }, - { - "inputs" : [ "Broadcast_158", "Exp_160" ], - "name" : "Add_161", - "op" : "Add", - "outputs" : ["Add_161_0"] - }, - { - "inputs" : [ "Broadcast_183", "Exp_185" ], - "name" : "Add_186", - "op" : "Add", - "outputs" : ["Add_186_0"] - }, - { - "inputs" : [ "Broadcast_190", "Exp_192" ], - "name" : "Add_193", - "op" : "Add", - "outputs" : ["Add_193_0"] - }, - { - "inputs" : [ "Broadcast_198", "Exp_200" ], - "name" : "Add_201", - "op" : "Add", - "outputs" : ["Add_201_0"] - }, - { - "inputs" : [ "Broadcast_143", "Add_146" ], - "name" : "Divide_147", - "op" : "Divide", - "outputs" : ["Divide_147_0"] - }, - { - "inputs" : [ "Broadcast_150", "Add_153" ], - "name" : "Divide_154", - "op" : "Divide", - "outputs" : ["Divide_154_0"] - }, - { - "inputs" : [ "Broadcast_158", "Add_161" ], - "name" : "Divide_162", - "op" : "Divide", - "outputs" : ["Divide_162_0"] - }, - { - "inputs" : [ "Broadcast_183", "Add_186" ], - "name" : "Divide_187", - "op" : "Divide", - "outputs" : ["Divide_187_0"] - }, - { - "inputs" : [ "Broadcast_190", "Add_193" ], - "name" : "Divide_194", - "op" : "Divide", - "outputs" : ["Divide_194_0"] - }, - { - "inputs" : [ "Broadcast_198", "Add_201" ], - "name" : "Divide_202", - "op" : "Divide", - "outputs" : ["Divide_202_0"] - }, - { - "inputs" : [ "Divide_154", "Add_89" ], - "name" : "Multiply_155", - "op" : "Multiply", - "outputs" : ["Multiply_155_0"] - }, - { - "inputs" : [ "Divide_162", "Tanh_164" ], - "name" : "Multiply_165", - "op" : "Multiply", - "outputs" : ["Multiply_165_0"] - }, - { - "inputs" : [ "Divide_194", "Add_129" ], - "name" : "Multiply_195", - "op" : "Multiply", - "outputs" : ["Multiply_195_0"] - }, - { - "inputs" : [ "Divide_202", "Tanh_204" ], - "name" : "Multiply_205", - "op" : "Multiply", - "outputs" : ["Multiply_205_0"] - }, - { - "inputs" : [ "Multiply_155", "Multiply_165" ], - "name" : "Add_166", - "op" : "Add", - "outputs" : ["Add_166_0"] - }, - { - "inputs" : [ "Multiply_195", "Multiply_205" ], - "name" : "Add_206", - "op" : "Add", - "outputs" : ["Add_206_0"] - }, - { - "inputs" : ["Add_166"], - "name" : "Tanh_167", - "op" : "Tanh", - "outputs" : ["Tanh_167_0"] - }, - { - "inputs" : ["Add_206"], - "name" : "Tanh_207", - "op" : "Tanh", - "outputs" : ["Tanh_207_0"] - }, - { - "inputs" : [ "Divide_147", "Tanh_167" ], - "name" : "Multiply_168", - "op" : "Multiply", - "outputs" : ["Multiply_168_0"] - }, - { - "inputs" : [ "Divide_187", "Tanh_207" ], - "name" : "Multiply_208", - "op" : "Multiply", - "outputs" : ["Multiply_208_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_168"], - "name" : "Reshape_169", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_169_0"] - }, - { - "inputs" : [ "Multiply_168", "Reshape_213" ], - "name" : "Dot_214", - "op" : "Dot", - "outputs" : ["Dot_214_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Multiply_208", "Reshape_209" ], - "name" : "Dot_210", - "op" : "Dot", - "outputs" : ["Dot_210_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_214", "Broadcast_215" ], - "name" : "Add_216", - "op" : "Add", - "outputs" : ["Add_216_0"] - }, - { - "inputs" : [ "Dot_210", "Broadcast_211" ], - "name" : "Add_212", - "op" : "Add", - "outputs" : ["Add_212_0"] - }, - { - "inputs" : [ "Add_212", "Add_216" ], - "name" : "Add_217", - "op" : "Add", - "outputs" : ["Add_217_0"] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_218", - "op" : "Slice", - "outputs" : ["Slice_218_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 100 ], - "name" : "Slice_225", - "op" : "Slice", - "outputs" : ["Slice_225_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_233", - "op" : "Slice", - "outputs" : ["Slice_233_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 100 ] - }, - { - "inputs" : ["Add_217"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_240", - "op" : "Slice", - "outputs" : ["Slice_240_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 300 ] - }, - { - "inputs" : ["Slice_218"], - "name" : "Negative_221", - "op" : "Negative", - "outputs" : ["Negative_221_0"] - }, - { - "inputs" : ["Slice_225"], - "name" : "Negative_228", - "op" : "Negative", - "outputs" : ["Negative_228_0"] - }, - { - "inputs" : ["Slice_233"], - "name" : "Negative_236", - "op" : "Negative", - "outputs" : ["Negative_236_0"] - }, - { - "inputs" : ["Slice_240"], - "name" : "Tanh_241", - "op" : "Tanh", - "outputs" : ["Tanh_241_0"] - }, - { - "inputs" : ["Negative_221"], - "name" : "Exp_222", - "op" : "Exp", - "outputs" : ["Exp_222_0"] - }, - { - "inputs" : ["Negative_228"], - "name" : "Exp_229", - "op" : "Exp", - "outputs" : ["Exp_229_0"] - }, - { - "inputs" : ["Negative_236"], - "name" : "Exp_237", - "op" : "Exp", - "outputs" : ["Exp_237_0"] - }, - { - "inputs" : [ "Broadcast_220", "Exp_222" ], - "name" : "Add_223", - "op" : "Add", - "outputs" : ["Add_223_0"] - }, - { - "inputs" : [ "Broadcast_227", "Exp_229" ], - "name" : "Add_230", - "op" : "Add", - "outputs" : ["Add_230_0"] - }, - { - "inputs" : [ "Broadcast_235", "Exp_237" ], - "name" : "Add_238", - "op" : "Add", - "outputs" : ["Add_238_0"] - }, - { - "inputs" : [ "Broadcast_220", "Add_223" ], - "name" : "Divide_224", - "op" : "Divide", - "outputs" : ["Divide_224_0"] - }, - { - "inputs" : [ "Broadcast_227", "Add_230" ], - "name" : "Divide_231", - "op" : "Divide", - "outputs" : ["Divide_231_0"] - }, - { - "inputs" : [ "Broadcast_235", "Add_238" ], - "name" : "Divide_239", - "op" : "Divide", - "outputs" : ["Divide_239_0"] - }, - { - "inputs" : [ "Divide_231", "Add_166" ], - "name" : "Multiply_232", - "op" : "Multiply", - "outputs" : ["Multiply_232_0"] - }, - { - "inputs" : [ "Divide_239", "Tanh_241" ], - "name" : "Multiply_242", - "op" : "Multiply", - "outputs" : ["Multiply_242_0"] - }, - { - "inputs" : [ "Multiply_232", "Multiply_242" ], - "name" : "Add_243", - "op" : "Add", - "outputs" : ["Add_243_0"] - }, - { - "inputs" : ["Add_243"], - "name" : "Tanh_244", - "op" : "Tanh", - "outputs" : ["Tanh_244_0"] - }, - { - "inputs" : [ "Divide_224", "Tanh_244" ], - "name" : "Multiply_245", - "op" : "Multiply", - "outputs" : ["Multiply_245_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_245"], - "name" : "Reshape_246", - "op" : "Reshape", - "output_shape" : [ 32, 1, 100 ], - "outputs" : ["Reshape_246_0"] - }, - { - "axis" : 1, - "inputs" : [ "Reshape_92", "Reshape_169", "Reshape_246" ], - "name" : "Concat_247", - "op" : "Concat", - "outputs" : ["Concat_247_0"] - }, - { - "inputs" : ["Concat_247"], - "name" : "Result_248", - "op" : "Result", - "outputs" : ["Result_248_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_10", "Parameter_11", - "Parameter_47", "Parameter_48", "Parameter_55", "Parameter_56", - "Parameter_93", "Parameter_170" - ], - "result" : ["Result_248"] -}] diff --git a/ngraph/test/models/mxnet/Graph_fprop_sigmoid.json b/ngraph/test/models/mxnet/Graph_fprop_sigmoid.json deleted file mode 100644 index 45e5d059d74c55..00000000000000 --- a/ngraph/test/models/mxnet/Graph_fprop_sigmoid.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"Function_0","ops":[{"element_type":"float","inputs":[],"name":"Parameter_0","op":"Parameter","outputs":["Parameter_0_0"],"shape":[3,4]},{"element_type":"float","inputs":[],"name":"Constant_1","op":"Constant","outputs":["Constant_1_0"],"shape":[],"value":["1"]},{"inputs":["Parameter_0"],"name":"Negative_3","op":"Negative","outputs":["Negative_3_0"]},{"axes":[0,1],"inputs":["Constant_1"],"name":"Broadcast_2","op":"Broadcast","outputs":["Broadcast_2_0"],"shape":[3,4]},{"inputs":["Negative_3"],"name":"Exp_4","op":"Exp","outputs":["Exp_4_0"]},{"inputs":["Broadcast_2","Exp_4"],"name":"Add_5","op":"Add","outputs":["Add_5_0"]},{"inputs":["Broadcast_2","Add_5"],"name":"Divide_6","op":"Divide","outputs":["Divide_6_0"]}],"parameters":["Parameter_0"],"result":["Divide_6"]}] diff --git a/ngraph/test/models/mxnet/LSTM_backward.json b/ngraph/test/models/mxnet/LSTM_backward.json deleted file mode 100644 index 4f7e81892abcfc..00000000000000 --- a/ngraph/test/models/mxnet/LSTM_backward.json +++ /dev/null @@ -1,98445 +0,0 @@ -[{ - "name" : "Function_3", - "ops" : [ - { - "inputs" : [], - "name" : "Parameter_17505", - "op" : "Parameter", - "outputs" : ["Parameter_17505"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17503", - "op" : "Parameter", - "outputs" : ["Parameter_17503"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17502", - "op" : "Parameter", - "outputs" : ["Parameter_17502"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15724", - "op" : "Parameter", - "outputs" : ["Parameter_15724"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17499", - "op" : "Parameter", - "outputs" : ["Parameter_17499"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15445", - "op" : "Parameter", - "outputs" : ["Parameter_15445"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18254", - "op" : "Parameter", - "outputs" : ["Parameter_18254"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17497", - "op" : "Parameter", - "outputs" : ["Parameter_17497"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17491", - "op" : "Parameter", - "outputs" : ["Parameter_17491"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16683", - "op" : "Parameter", - "outputs" : ["Parameter_16683"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15722", - "op" : "Parameter", - "outputs" : ["Parameter_15722"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17489", - "op" : "Parameter", - "outputs" : ["Parameter_17489"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17398", - "op" : "Parameter", - "outputs" : ["Parameter_17398"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17485", - "op" : "Parameter", - "outputs" : ["Parameter_17485"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17694", - "op" : "Parameter", - "outputs" : ["Parameter_17694"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17482", - "op" : "Parameter", - "outputs" : ["Parameter_17482"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17481", - "op" : "Parameter", - "outputs" : ["Parameter_17481"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17479", - "op" : "Parameter", - "outputs" : ["Parameter_17479"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15678", - "op" : "Parameter", - "outputs" : ["Parameter_15678"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17472", - "op" : "Parameter", - "outputs" : ["Parameter_17472"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17467", - "op" : "Parameter", - "outputs" : ["Parameter_17467"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17466", - "op" : "Parameter", - "outputs" : ["Parameter_17466"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17464", - "op" : "Parameter", - "outputs" : ["Parameter_17464"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17488", - "op" : "Parameter", - "outputs" : ["Parameter_17488"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17462", - "op" : "Parameter", - "outputs" : ["Parameter_17462"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17461", - "op" : "Parameter", - "outputs" : ["Parameter_17461"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15624", - "op" : "Parameter", - "outputs" : ["Parameter_15624"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15946", - "op" : "Parameter", - "outputs" : ["Parameter_15946"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17459", - "op" : "Parameter", - "outputs" : ["Parameter_17459"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17458", - "op" : "Parameter", - "outputs" : ["Parameter_17458"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17457", - "op" : "Parameter", - "outputs" : ["Parameter_17457"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14244", - "op" : "Parameter", - "outputs" : ["Parameter_14244"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13986", - "op" : "Parameter", - "outputs" : ["Parameter_13986"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17454", - "op" : "Parameter", - "outputs" : ["Parameter_17454"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15366", - "op" : "Parameter", - "outputs" : ["Parameter_15366"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17453", - "op" : "Parameter", - "outputs" : ["Parameter_17453"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16902", - "op" : "Parameter", - "outputs" : ["Parameter_16902"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17449", - "op" : "Parameter", - "outputs" : ["Parameter_17449"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16717", - "op" : "Parameter", - "outputs" : ["Parameter_16717"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17448", - "op" : "Parameter", - "outputs" : ["Parameter_17448"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17447", - "op" : "Parameter", - "outputs" : ["Parameter_17447"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17444", - "op" : "Parameter", - "outputs" : ["Parameter_17444"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17437", - "op" : "Parameter", - "outputs" : ["Parameter_17437"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15659", - "op" : "Parameter", - "outputs" : ["Parameter_15659"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17687", - "op" : "Parameter", - "outputs" : ["Parameter_17687"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17434", - "op" : "Parameter", - "outputs" : ["Parameter_17434"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15380", - "op" : "Parameter", - "outputs" : ["Parameter_15380"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18189", - "op" : "Parameter", - "outputs" : ["Parameter_18189"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17432", - "op" : "Parameter", - "outputs" : ["Parameter_17432"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17424", - "op" : "Parameter", - "outputs" : ["Parameter_17424"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14861", - "op" : "Parameter", - "outputs" : ["Parameter_14861"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17423", - "op" : "Parameter", - "outputs" : ["Parameter_17423"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17420", - "op" : "Parameter", - "outputs" : ["Parameter_17420"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17629", - "op" : "Parameter", - "outputs" : ["Parameter_17629"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17416", - "op" : "Parameter", - "outputs" : ["Parameter_17416"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17414", - "op" : "Parameter", - "outputs" : ["Parameter_17414"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17408", - "op" : "Parameter", - "outputs" : ["Parameter_17408"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15608", - "op" : "Parameter", - "outputs" : ["Parameter_15608"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17407", - "op" : "Parameter", - "outputs" : ["Parameter_17407"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17404", - "op" : "Parameter", - "outputs" : ["Parameter_17404"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15300", - "op" : "Parameter", - "outputs" : ["Parameter_15300"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18037", - "op" : "Parameter", - "outputs" : ["Parameter_18037"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18146", - "op" : "Parameter", - "outputs" : ["Parameter_18146"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17403", - "op" : "Parameter", - "outputs" : ["Parameter_17403"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13866", - "op" : "Parameter", - "outputs" : ["Parameter_13866"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17402", - "op" : "Parameter", - "outputs" : ["Parameter_17402"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17401", - "op" : "Parameter", - "outputs" : ["Parameter_17401"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18215", - "op" : "Parameter", - "outputs" : ["Parameter_18215"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17399", - "op" : "Parameter", - "outputs" : ["Parameter_17399"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16482", - "op" : "Parameter", - "outputs" : ["Parameter_16482"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14504", - "op" : "Parameter", - "outputs" : ["Parameter_14504"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17394", - "op" : "Parameter", - "outputs" : ["Parameter_17394"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17392", - "op" : "Parameter", - "outputs" : ["Parameter_17392"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13997", - "op" : "Parameter", - "outputs" : ["Parameter_13997"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17388", - "op" : "Parameter", - "outputs" : ["Parameter_17388"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17386", - "op" : "Parameter", - "outputs" : ["Parameter_17386"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14249", - "op" : "Parameter", - "outputs" : ["Parameter_14249"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17384", - "op" : "Parameter", - "outputs" : ["Parameter_17384"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16652", - "op" : "Parameter", - "outputs" : ["Parameter_16652"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17383", - "op" : "Parameter", - "outputs" : ["Parameter_17383"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17382", - "op" : "Parameter", - "outputs" : ["Parameter_17382"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17380", - "op" : "Parameter", - "outputs" : ["Parameter_17380"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17373", - "op" : "Parameter", - "outputs" : ["Parameter_17373"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17370", - "op" : "Parameter", - "outputs" : ["Parameter_17370"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14248", - "op" : "Parameter", - "outputs" : ["Parameter_14248"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15339", - "op" : "Parameter", - "outputs" : ["Parameter_15339"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17367", - "op" : "Parameter", - "outputs" : ["Parameter_17367"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16777", - "op" : "Parameter", - "outputs" : ["Parameter_16777"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14751", - "op" : "Parameter", - "outputs" : ["Parameter_14751"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17363", - "op" : "Parameter", - "outputs" : ["Parameter_17363"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17361", - "op" : "Parameter", - "outputs" : ["Parameter_17361"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13845", - "op" : "Parameter", - "outputs" : ["Parameter_13845"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17360", - "op" : "Parameter", - "outputs" : ["Parameter_17360"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17358", - "op" : "Parameter", - "outputs" : ["Parameter_17358"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16984", - "op" : "Parameter", - "outputs" : ["Parameter_16984"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17355", - "op" : "Parameter", - "outputs" : ["Parameter_17355"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15510", - "op" : "Parameter", - "outputs" : ["Parameter_15510"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17564", - "op" : "Parameter", - "outputs" : ["Parameter_17564"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17352", - "op" : "Parameter", - "outputs" : ["Parameter_17352"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17351", - "op" : "Parameter", - "outputs" : ["Parameter_17351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17349", - "op" : "Parameter", - "outputs" : ["Parameter_17349"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17345", - "op" : "Parameter", - "outputs" : ["Parameter_17345"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17344", - "op" : "Parameter", - "outputs" : ["Parameter_17344"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17343", - "op" : "Parameter", - "outputs" : ["Parameter_17343"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15543", - "op" : "Parameter", - "outputs" : ["Parameter_15543"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14537", - "op" : "Parameter", - "outputs" : ["Parameter_14537"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17340", - "op" : "Parameter", - "outputs" : ["Parameter_17340"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14378", - "op" : "Parameter", - "outputs" : ["Parameter_14378"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17338", - "op" : "Parameter", - "outputs" : ["Parameter_17338"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17337", - "op" : "Parameter", - "outputs" : ["Parameter_17337"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17323", - "op" : "Parameter", - "outputs" : ["Parameter_17323"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17320", - "op" : "Parameter", - "outputs" : ["Parameter_17320"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17319", - "op" : "Parameter", - "outputs" : ["Parameter_17319"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16587", - "op" : "Parameter", - "outputs" : ["Parameter_16587"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17318", - "op" : "Parameter", - "outputs" : ["Parameter_17318"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17317", - "op" : "Parameter", - "outputs" : ["Parameter_17317"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15278", - "op" : "Parameter", - "outputs" : ["Parameter_15278"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17309", - "op" : "Parameter", - "outputs" : ["Parameter_17309"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15244", - "op" : "Parameter", - "outputs" : ["Parameter_15244"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17308", - "op" : "Parameter", - "outputs" : ["Parameter_17308"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17305", - "op" : "Parameter", - "outputs" : ["Parameter_17305"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14259", - "op" : "Parameter", - "outputs" : ["Parameter_14259"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15274", - "op" : "Parameter", - "outputs" : ["Parameter_15274"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17302", - "op" : "Parameter", - "outputs" : ["Parameter_17302"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17301", - "op" : "Parameter", - "outputs" : ["Parameter_17301"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17296", - "op" : "Parameter", - "outputs" : ["Parameter_17296"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15527", - "op" : "Parameter", - "outputs" : ["Parameter_15527"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13856", - "op" : "Parameter", - "outputs" : ["Parameter_13856"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17295", - "op" : "Parameter", - "outputs" : ["Parameter_17295"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17294", - "op" : "Parameter", - "outputs" : ["Parameter_17294"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17293", - "op" : "Parameter", - "outputs" : ["Parameter_17293"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16919", - "op" : "Parameter", - "outputs" : ["Parameter_16919"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17289", - "op" : "Parameter", - "outputs" : ["Parameter_17289"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15042", - "op" : "Parameter", - "outputs" : ["Parameter_15042"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17288", - "op" : "Parameter", - "outputs" : ["Parameter_17288"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17867", - "op" : "Parameter", - "outputs" : ["Parameter_17867"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17280", - "op" : "Parameter", - "outputs" : ["Parameter_17280"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16690", - "op" : "Parameter", - "outputs" : ["Parameter_16690"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14886", - "op" : "Parameter", - "outputs" : ["Parameter_14886"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17274", - "op" : "Parameter", - "outputs" : ["Parameter_17274"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17907", - "op" : "Parameter", - "outputs" : ["Parameter_17907"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17265", - "op" : "Parameter", - "outputs" : ["Parameter_17265"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17258", - "op" : "Parameter", - "outputs" : ["Parameter_17258"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14903", - "op" : "Parameter", - "outputs" : ["Parameter_14903"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17256", - "op" : "Parameter", - "outputs" : ["Parameter_17256"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13927", - "op" : "Parameter", - "outputs" : ["Parameter_13927"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17255", - "op" : "Parameter", - "outputs" : ["Parameter_17255"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17254", - "op" : "Parameter", - "outputs" : ["Parameter_17254"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15682", - "op" : "Parameter", - "outputs" : ["Parameter_15682"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15049", - "op" : "Parameter", - "outputs" : ["Parameter_15049"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16522", - "op" : "Parameter", - "outputs" : ["Parameter_16522"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17252", - "op" : "Parameter", - "outputs" : ["Parameter_17252"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15213", - "op" : "Parameter", - "outputs" : ["Parameter_15213"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15072", - "op" : "Parameter", - "outputs" : ["Parameter_15072"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17250", - "op" : "Parameter", - "outputs" : ["Parameter_17250"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14318", - "op" : "Parameter", - "outputs" : ["Parameter_14318"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17240", - "op" : "Parameter", - "outputs" : ["Parameter_17240"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17237", - "op" : "Parameter", - "outputs" : ["Parameter_17237"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13804", - "op" : "Parameter", - "outputs" : ["Parameter_13804"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17236", - "op" : "Parameter", - "outputs" : ["Parameter_17236"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17235", - "op" : "Parameter", - "outputs" : ["Parameter_17235"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14980", - "op" : "Parameter", - "outputs" : ["Parameter_14980"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17231", - "op" : "Parameter", - "outputs" : ["Parameter_17231"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15462", - "op" : "Parameter", - "outputs" : ["Parameter_15462"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13867", - "op" : "Parameter", - "outputs" : ["Parameter_13867"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17230", - "op" : "Parameter", - "outputs" : ["Parameter_17230"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17228", - "op" : "Parameter", - "outputs" : ["Parameter_17228"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17221", - "op" : "Parameter", - "outputs" : ["Parameter_17221"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14218", - "op" : "Parameter", - "outputs" : ["Parameter_14218"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17377", - "op" : "Parameter", - "outputs" : ["Parameter_17377"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17074", - "op" : "Parameter", - "outputs" : ["Parameter_17074"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18232", - "op" : "Parameter", - "outputs" : ["Parameter_18232"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17215", - "op" : "Parameter", - "outputs" : ["Parameter_17215"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14361", - "op" : "Parameter", - "outputs" : ["Parameter_14361"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17212", - "op" : "Parameter", - "outputs" : ["Parameter_17212"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17210", - "op" : "Parameter", - "outputs" : ["Parameter_17210"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17209", - "op" : "Parameter", - "outputs" : ["Parameter_17209"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17842", - "op" : "Parameter", - "outputs" : ["Parameter_17842"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17208", - "op" : "Parameter", - "outputs" : ["Parameter_17208"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17205", - "op" : "Parameter", - "outputs" : ["Parameter_17205"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17203", - "op" : "Parameter", - "outputs" : ["Parameter_17203"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15056", - "op" : "Parameter", - "outputs" : ["Parameter_15056"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17200", - "op" : "Parameter", - "outputs" : ["Parameter_17200"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17199", - "op" : "Parameter", - "outputs" : ["Parameter_17199"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17191", - "op" : "Parameter", - "outputs" : ["Parameter_17191"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13938", - "op" : "Parameter", - "outputs" : ["Parameter_13938"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14769", - "op" : "Parameter", - "outputs" : ["Parameter_14769"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14282", - "op" : "Parameter", - "outputs" : ["Parameter_14282"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17190", - "op" : "Parameter", - "outputs" : ["Parameter_17190"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14396", - "op" : "Parameter", - "outputs" : ["Parameter_14396"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17189", - "op" : "Parameter", - "outputs" : ["Parameter_17189"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16457", - "op" : "Parameter", - "outputs" : ["Parameter_16457"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14776", - "op" : "Parameter", - "outputs" : ["Parameter_14776"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17188", - "op" : "Parameter", - "outputs" : ["Parameter_17188"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18137", - "op" : "Parameter", - "outputs" : ["Parameter_18137"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17185", - "op" : "Parameter", - "outputs" : ["Parameter_17185"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17181", - "op" : "Parameter", - "outputs" : ["Parameter_17181"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16859", - "op" : "Parameter", - "outputs" : ["Parameter_16859"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17174", - "op" : "Parameter", - "outputs" : ["Parameter_17174"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17168", - "op" : "Parameter", - "outputs" : ["Parameter_17168"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17166", - "op" : "Parameter", - "outputs" : ["Parameter_17166"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13878", - "op" : "Parameter", - "outputs" : ["Parameter_13878"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17154", - "op" : "Parameter", - "outputs" : ["Parameter_17154"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17151", - "op" : "Parameter", - "outputs" : ["Parameter_17151"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15471", - "op" : "Parameter", - "outputs" : ["Parameter_15471"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17312", - "op" : "Parameter", - "outputs" : ["Parameter_17312"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18167", - "op" : "Parameter", - "outputs" : ["Parameter_18167"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17150", - "op" : "Parameter", - "outputs" : ["Parameter_17150"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16310", - "op" : "Parameter", - "outputs" : ["Parameter_16310"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17148", - "op" : "Parameter", - "outputs" : ["Parameter_17148"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15348", - "op" : "Parameter", - "outputs" : ["Parameter_15348"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17144", - "op" : "Parameter", - "outputs" : ["Parameter_17144"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15148", - "op" : "Parameter", - "outputs" : ["Parameter_15148"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17777", - "op" : "Parameter", - "outputs" : ["Parameter_17777"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17141", - "op" : "Parameter", - "outputs" : ["Parameter_17141"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17133", - "op" : "Parameter", - "outputs" : ["Parameter_17133"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17127", - "op" : "Parameter", - "outputs" : ["Parameter_17127"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17123", - "op" : "Parameter", - "outputs" : ["Parameter_17123"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17117", - "op" : "Parameter", - "outputs" : ["Parameter_17117"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15449", - "op" : "Parameter", - "outputs" : ["Parameter_15449"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17110", - "op" : "Parameter", - "outputs" : ["Parameter_17110"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14292", - "op" : "Parameter", - "outputs" : ["Parameter_14292"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17108", - "op" : "Parameter", - "outputs" : ["Parameter_17108"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14414", - "op" : "Parameter", - "outputs" : ["Parameter_14414"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15428", - "op" : "Parameter", - "outputs" : ["Parameter_15428"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17103", - "op" : "Parameter", - "outputs" : ["Parameter_17103"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17102", - "op" : "Parameter", - "outputs" : ["Parameter_17102"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18061", - "op" : "Parameter", - "outputs" : ["Parameter_18061"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17092", - "op" : "Parameter", - "outputs" : ["Parameter_17092"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16249", - "op" : "Parameter", - "outputs" : ["Parameter_16249"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17375", - "op" : "Parameter", - "outputs" : ["Parameter_17375"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17954", - "op" : "Parameter", - "outputs" : ["Parameter_17954"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17089", - "op" : "Parameter", - "outputs" : ["Parameter_17089"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15288", - "op" : "Parameter", - "outputs" : ["Parameter_15288"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17088", - "op" : "Parameter", - "outputs" : ["Parameter_17088"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17086", - "op" : "Parameter", - "outputs" : ["Parameter_17086"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14573", - "op" : "Parameter", - "outputs" : ["Parameter_14573"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15406", - "op" : "Parameter", - "outputs" : ["Parameter_15406"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17247", - "op" : "Parameter", - "outputs" : ["Parameter_17247"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15365", - "op" : "Parameter", - "outputs" : ["Parameter_15365"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17469", - "op" : "Parameter", - "outputs" : ["Parameter_17469"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18211", - "op" : "Parameter", - "outputs" : ["Parameter_18211"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17085", - "op" : "Parameter", - "outputs" : ["Parameter_17085"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16245", - "op" : "Parameter", - "outputs" : ["Parameter_16245"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18105", - "op" : "Parameter", - "outputs" : ["Parameter_18105"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17083", - "op" : "Parameter", - "outputs" : ["Parameter_17083"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18270", - "op" : "Parameter", - "outputs" : ["Parameter_18270"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17082", - "op" : "Parameter", - "outputs" : ["Parameter_17082"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17078", - "op" : "Parameter", - "outputs" : ["Parameter_17078"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17138", - "op" : "Parameter", - "outputs" : ["Parameter_17138"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17077", - "op" : "Parameter", - "outputs" : ["Parameter_17077"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17204", - "op" : "Parameter", - "outputs" : ["Parameter_17204"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17076", - "op" : "Parameter", - "outputs" : ["Parameter_17076"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17339", - "op" : "Parameter", - "outputs" : ["Parameter_17339"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14970", - "op" : "Parameter", - "outputs" : ["Parameter_14970"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17972", - "op" : "Parameter", - "outputs" : ["Parameter_17972"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18081", - "op" : "Parameter", - "outputs" : ["Parameter_18081"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17073", - "op" : "Parameter", - "outputs" : ["Parameter_17073"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17072", - "op" : "Parameter", - "outputs" : ["Parameter_17072"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17070", - "op" : "Parameter", - "outputs" : ["Parameter_17070"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17068", - "op" : "Parameter", - "outputs" : ["Parameter_17068"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17064", - "op" : "Parameter", - "outputs" : ["Parameter_17064"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17964", - "op" : "Parameter", - "outputs" : ["Parameter_17964"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17063", - "op" : "Parameter", - "outputs" : ["Parameter_17063"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16512", - "op" : "Parameter", - "outputs" : ["Parameter_16512"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17062", - "op" : "Parameter", - "outputs" : ["Parameter_17062"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17171", - "op" : "Parameter", - "outputs" : ["Parameter_17171"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17061", - "op" : "Parameter", - "outputs" : ["Parameter_17061"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17059", - "op" : "Parameter", - "outputs" : ["Parameter_17059"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15737", - "op" : "Parameter", - "outputs" : ["Parameter_15737"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17058", - "op" : "Parameter", - "outputs" : ["Parameter_17058"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18305", - "op" : "Parameter", - "outputs" : ["Parameter_18305"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17052", - "op" : "Parameter", - "outputs" : ["Parameter_17052"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18016", - "op" : "Parameter", - "outputs" : ["Parameter_18016"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17051", - "op" : "Parameter", - "outputs" : ["Parameter_17051"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16729", - "op" : "Parameter", - "outputs" : ["Parameter_16729"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17046", - "op" : "Parameter", - "outputs" : ["Parameter_17046"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18353", - "op" : "Parameter", - "outputs" : ["Parameter_18353"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17045", - "op" : "Parameter", - "outputs" : ["Parameter_17045"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17044", - "op" : "Parameter", - "outputs" : ["Parameter_17044"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14450", - "op" : "Parameter", - "outputs" : ["Parameter_14450"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17799", - "op" : "Parameter", - "outputs" : ["Parameter_17799"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17042", - "op" : "Parameter", - "outputs" : ["Parameter_17042"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13837", - "op" : "Parameter", - "outputs" : ["Parameter_13837"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17041", - "op" : "Parameter", - "outputs" : ["Parameter_17041"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16932", - "op" : "Parameter", - "outputs" : ["Parameter_16932"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17039", - "op" : "Parameter", - "outputs" : ["Parameter_17039"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15358", - "op" : "Parameter", - "outputs" : ["Parameter_15358"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17346", - "op" : "Parameter", - "outputs" : ["Parameter_17346"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15666", - "op" : "Parameter", - "outputs" : ["Parameter_15666"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17038", - "op" : "Parameter", - "outputs" : ["Parameter_17038"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17037", - "op" : "Parameter", - "outputs" : ["Parameter_17037"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17033", - "op" : "Parameter", - "outputs" : ["Parameter_17033"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16659", - "op" : "Parameter", - "outputs" : ["Parameter_16659"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17032", - "op" : "Parameter", - "outputs" : ["Parameter_17032"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14638", - "op" : "Parameter", - "outputs" : ["Parameter_14638"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17027", - "op" : "Parameter", - "outputs" : ["Parameter_17027"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17023", - "op" : "Parameter", - "outputs" : ["Parameter_17023"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15238", - "op" : "Parameter", - "outputs" : ["Parameter_15238"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17022", - "op" : "Parameter", - "outputs" : ["Parameter_17022"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17018", - "op" : "Parameter", - "outputs" : ["Parameter_17018"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17017", - "op" : "Parameter", - "outputs" : ["Parameter_17017"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14392", - "op" : "Parameter", - "outputs" : ["Parameter_14392"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17015", - "op" : "Parameter", - "outputs" : ["Parameter_17015"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17014", - "op" : "Parameter", - "outputs" : ["Parameter_17014"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17756", - "op" : "Parameter", - "outputs" : ["Parameter_17756"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17013", - "op" : "Parameter", - "outputs" : ["Parameter_17013"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17012", - "op" : "Parameter", - "outputs" : ["Parameter_17012"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17011", - "op" : "Parameter", - "outputs" : ["Parameter_17011"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16637", - "op" : "Parameter", - "outputs" : ["Parameter_16637"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17825", - "op" : "Parameter", - "outputs" : ["Parameter_17825"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17010", - "op" : "Parameter", - "outputs" : ["Parameter_17010"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17145", - "op" : "Parameter", - "outputs" : ["Parameter_17145"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17008", - "op" : "Parameter", - "outputs" : ["Parameter_17008"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14125", - "op" : "Parameter", - "outputs" : ["Parameter_14125"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17007", - "op" : "Parameter", - "outputs" : ["Parameter_17007"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15045", - "op" : "Parameter", - "outputs" : ["Parameter_15045"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14179", - "op" : "Parameter", - "outputs" : ["Parameter_14179"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17006", - "op" : "Parameter", - "outputs" : ["Parameter_17006"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15169", - "op" : "Parameter", - "outputs" : ["Parameter_15169"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17005", - "op" : "Parameter", - "outputs" : ["Parameter_17005"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17000", - "op" : "Parameter", - "outputs" : ["Parameter_17000"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16998", - "op" : "Parameter", - "outputs" : ["Parameter_16998"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16447", - "op" : "Parameter", - "outputs" : ["Parameter_16447"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16997", - "op" : "Parameter", - "outputs" : ["Parameter_16997"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17106", - "op" : "Parameter", - "outputs" : ["Parameter_17106"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16996", - "op" : "Parameter", - "outputs" : ["Parameter_16996"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16994", - "op" : "Parameter", - "outputs" : ["Parameter_16994"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15672", - "op" : "Parameter", - "outputs" : ["Parameter_15672"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16993", - "op" : "Parameter", - "outputs" : ["Parameter_16993"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17942", - "op" : "Parameter", - "outputs" : ["Parameter_17942"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16987", - "op" : "Parameter", - "outputs" : ["Parameter_16987"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14620", - "op" : "Parameter", - "outputs" : ["Parameter_14620"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17951", - "op" : "Parameter", - "outputs" : ["Parameter_17951"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16980", - "op" : "Parameter", - "outputs" : ["Parameter_16980"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15082", - "op" : "Parameter", - "outputs" : ["Parameter_15082"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16977", - "op" : "Parameter", - "outputs" : ["Parameter_16977"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13848", - "op" : "Parameter", - "outputs" : ["Parameter_13848"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16973", - "op" : "Parameter", - "outputs" : ["Parameter_16973"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16971", - "op" : "Parameter", - "outputs" : ["Parameter_16971"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16969", - "op" : "Parameter", - "outputs" : ["Parameter_16969"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17276", - "op" : "Parameter", - "outputs" : ["Parameter_17276"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15475", - "op" : "Parameter", - "outputs" : ["Parameter_15475"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16967", - "op" : "Parameter", - "outputs" : ["Parameter_16967"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16965", - "op" : "Parameter", - "outputs" : ["Parameter_16965"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14352", - "op" : "Parameter", - "outputs" : ["Parameter_14352"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16964", - "op" : "Parameter", - "outputs" : ["Parameter_16964"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16961", - "op" : "Parameter", - "outputs" : ["Parameter_16961"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16960", - "op" : "Parameter", - "outputs" : ["Parameter_16960"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16959", - "op" : "Parameter", - "outputs" : ["Parameter_16959"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16953", - "op" : "Parameter", - "outputs" : ["Parameter_16953"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17132", - "op" : "Parameter", - "outputs" : ["Parameter_17132"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18260", - "op" : "Parameter", - "outputs" : ["Parameter_18260"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16952", - "op" : "Parameter", - "outputs" : ["Parameter_16952"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15271", - "op" : "Parameter", - "outputs" : ["Parameter_15271"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16948", - "op" : "Parameter", - "outputs" : ["Parameter_16948"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15007", - "op" : "Parameter", - "outputs" : ["Parameter_15007"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16943", - "op" : "Parameter", - "outputs" : ["Parameter_16943"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16939", - "op" : "Parameter", - "outputs" : ["Parameter_16939"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17224", - "op" : "Parameter", - "outputs" : ["Parameter_17224"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13929", - "op" : "Parameter", - "outputs" : ["Parameter_13929"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16938", - "op" : "Parameter", - "outputs" : ["Parameter_16938"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15799", - "op" : "Parameter", - "outputs" : ["Parameter_15799"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16936", - "op" : "Parameter", - "outputs" : ["Parameter_16936"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16933", - "op" : "Parameter", - "outputs" : ["Parameter_16933"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16382", - "op" : "Parameter", - "outputs" : ["Parameter_16382"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16931", - "op" : "Parameter", - "outputs" : ["Parameter_16931"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16930", - "op" : "Parameter", - "outputs" : ["Parameter_16930"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16929", - "op" : "Parameter", - "outputs" : ["Parameter_16929"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16197", - "op" : "Parameter", - "outputs" : ["Parameter_16197"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16928", - "op" : "Parameter", - "outputs" : ["Parameter_16928"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17877", - "op" : "Parameter", - "outputs" : ["Parameter_17877"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16923", - "op" : "Parameter", - "outputs" : ["Parameter_16923"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16918", - "op" : "Parameter", - "outputs" : ["Parameter_16918"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16917", - "op" : "Parameter", - "outputs" : ["Parameter_16917"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16916", - "op" : "Parameter", - "outputs" : ["Parameter_16916"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16915", - "op" : "Parameter", - "outputs" : ["Parameter_16915"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16912", - "op" : "Parameter", - "outputs" : ["Parameter_16912"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13859", - "op" : "Parameter", - "outputs" : ["Parameter_13859"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17644", - "op" : "Parameter", - "outputs" : ["Parameter_17644"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16906", - "op" : "Parameter", - "outputs" : ["Parameter_16906"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16905", - "op" : "Parameter", - "outputs" : ["Parameter_16905"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16904", - "op" : "Parameter", - "outputs" : ["Parameter_16904"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14759", - "op" : "Parameter", - "outputs" : ["Parameter_14759"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16903", - "op" : "Parameter", - "outputs" : ["Parameter_16903"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16901", - "op" : "Parameter", - "outputs" : ["Parameter_16901"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16900", - "op" : "Parameter", - "outputs" : ["Parameter_16900"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16899", - "op" : "Parameter", - "outputs" : ["Parameter_16899"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17183", - "op" : "Parameter", - "outputs" : ["Parameter_17183"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15063", - "op" : "Parameter", - "outputs" : ["Parameter_15063"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16896", - "op" : "Parameter", - "outputs" : ["Parameter_16896"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16894", - "op" : "Parameter", - "outputs" : ["Parameter_16894"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16892", - "op" : "Parameter", - "outputs" : ["Parameter_16892"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16885", - "op" : "Parameter", - "outputs" : ["Parameter_16885"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17162", - "op" : "Parameter", - "outputs" : ["Parameter_17162"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16884", - "op" : "Parameter", - "outputs" : ["Parameter_16884"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16662", - "op" : "Parameter", - "outputs" : ["Parameter_16662"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16883", - "op" : "Parameter", - "outputs" : ["Parameter_16883"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16881", - "op" : "Parameter", - "outputs" : ["Parameter_16881"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16879", - "op" : "Parameter", - "outputs" : ["Parameter_16879"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16875", - "op" : "Parameter", - "outputs" : ["Parameter_16875"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16874", - "op" : "Parameter", - "outputs" : ["Parameter_16874"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13940", - "op" : "Parameter", - "outputs" : ["Parameter_13940"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17159", - "op" : "Parameter", - "outputs" : ["Parameter_17159"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16873", - "op" : "Parameter", - "outputs" : ["Parameter_16873"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16872", - "op" : "Parameter", - "outputs" : ["Parameter_16872"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16868", - "op" : "Parameter", - "outputs" : ["Parameter_16868"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16317", - "op" : "Parameter", - "outputs" : ["Parameter_16317"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16867", - "op" : "Parameter", - "outputs" : ["Parameter_16867"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16976", - "op" : "Parameter", - "outputs" : ["Parameter_16976"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16856", - "op" : "Parameter", - "outputs" : ["Parameter_16856"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17186", - "op" : "Parameter", - "outputs" : ["Parameter_17186"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15983", - "op" : "Parameter", - "outputs" : ["Parameter_15983"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14775", - "op" : "Parameter", - "outputs" : ["Parameter_14775"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16855", - "op" : "Parameter", - "outputs" : ["Parameter_16855"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15633", - "op" : "Parameter", - "outputs" : ["Parameter_15633"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16853", - "op" : "Parameter", - "outputs" : ["Parameter_16853"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16852", - "op" : "Parameter", - "outputs" : ["Parameter_16852"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14435", - "op" : "Parameter", - "outputs" : ["Parameter_14435"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17222", - "op" : "Parameter", - "outputs" : ["Parameter_17222"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16851", - "op" : "Parameter", - "outputs" : ["Parameter_16851"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14663", - "op" : "Parameter", - "outputs" : ["Parameter_14663"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17140", - "op" : "Parameter", - "outputs" : ["Parameter_17140"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16849", - "op" : "Parameter", - "outputs" : ["Parameter_16849"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17095", - "op" : "Parameter", - "outputs" : ["Parameter_17095"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17304", - "op" : "Parameter", - "outputs" : ["Parameter_17304"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16848", - "op" : "Parameter", - "outputs" : ["Parameter_16848"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16847", - "op" : "Parameter", - "outputs" : ["Parameter_16847"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17579", - "op" : "Parameter", - "outputs" : ["Parameter_17579"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16843", - "op" : "Parameter", - "outputs" : ["Parameter_16843"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16841", - "op" : "Parameter", - "outputs" : ["Parameter_16841"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16839", - "op" : "Parameter", - "outputs" : ["Parameter_16839"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16838", - "op" : "Parameter", - "outputs" : ["Parameter_16838"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16837", - "op" : "Parameter", - "outputs" : ["Parameter_16837"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16836", - "op" : "Parameter", - "outputs" : ["Parameter_16836"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16835", - "op" : "Parameter", - "outputs" : ["Parameter_16835"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16832", - "op" : "Parameter", - "outputs" : ["Parameter_16832"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18020", - "op" : "Parameter", - "outputs" : ["Parameter_18020"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17179", - "op" : "Parameter", - "outputs" : ["Parameter_17179"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16423", - "op" : "Parameter", - "outputs" : ["Parameter_16423"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16336", - "op" : "Parameter", - "outputs" : ["Parameter_16336"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16830", - "op" : "Parameter", - "outputs" : ["Parameter_16830"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16829", - "op" : "Parameter", - "outputs" : ["Parameter_16829"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16827", - "op" : "Parameter", - "outputs" : ["Parameter_16827"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14591", - "op" : "Parameter", - "outputs" : ["Parameter_14591"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16826", - "op" : "Parameter", - "outputs" : ["Parameter_16826"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17418", - "op" : "Parameter", - "outputs" : ["Parameter_17418"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17997", - "op" : "Parameter", - "outputs" : ["Parameter_17997"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17172", - "op" : "Parameter", - "outputs" : ["Parameter_17172"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16332", - "op" : "Parameter", - "outputs" : ["Parameter_16332"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16582", - "op" : "Parameter", - "outputs" : ["Parameter_16582"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16823", - "op" : "Parameter", - "outputs" : ["Parameter_16823"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17097", - "op" : "Parameter", - "outputs" : ["Parameter_17097"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16819", - "op" : "Parameter", - "outputs" : ["Parameter_16819"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16597", - "op" : "Parameter", - "outputs" : ["Parameter_16597"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14717", - "op" : "Parameter", - "outputs" : ["Parameter_14717"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16818", - "op" : "Parameter", - "outputs" : ["Parameter_16818"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15609", - "op" : "Parameter", - "outputs" : ["Parameter_15609"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16816", - "op" : "Parameter", - "outputs" : ["Parameter_16816"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14601", - "op" : "Parameter", - "outputs" : ["Parameter_14601"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17438", - "op" : "Parameter", - "outputs" : ["Parameter_17438"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16814", - "op" : "Parameter", - "outputs" : ["Parameter_16814"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16444", - "op" : "Parameter", - "outputs" : ["Parameter_16444"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14061", - "op" : "Parameter", - "outputs" : ["Parameter_14061"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16812", - "op" : "Parameter", - "outputs" : ["Parameter_16812"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18288", - "op" : "Parameter", - "outputs" : ["Parameter_18288"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16809", - "op" : "Parameter", - "outputs" : ["Parameter_16809"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17094", - "op" : "Parameter", - "outputs" : ["Parameter_17094"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13951", - "op" : "Parameter", - "outputs" : ["Parameter_13951"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17040", - "op" : "Parameter", - "outputs" : ["Parameter_17040"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16808", - "op" : "Parameter", - "outputs" : ["Parameter_16808"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16807", - "op" : "Parameter", - "outputs" : ["Parameter_16807"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14096", - "op" : "Parameter", - "outputs" : ["Parameter_14096"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16806", - "op" : "Parameter", - "outputs" : ["Parameter_16806"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16802", - "op" : "Parameter", - "outputs" : ["Parameter_16802"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16911", - "op" : "Parameter", - "outputs" : ["Parameter_16911"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14599", - "op" : "Parameter", - "outputs" : ["Parameter_14599"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16800", - "op" : "Parameter", - "outputs" : ["Parameter_16800"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14597", - "op" : "Parameter", - "outputs" : ["Parameter_14597"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16798", - "op" : "Parameter", - "outputs" : ["Parameter_16798"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14001", - "op" : "Parameter", - "outputs" : ["Parameter_14001"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18298", - "op" : "Parameter", - "outputs" : ["Parameter_18298"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16796", - "op" : "Parameter", - "outputs" : ["Parameter_16796"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15593", - "op" : "Parameter", - "outputs" : ["Parameter_15593"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16794", - "op" : "Parameter", - "outputs" : ["Parameter_16794"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18328", - "op" : "Parameter", - "outputs" : ["Parameter_18328"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16792", - "op" : "Parameter", - "outputs" : ["Parameter_16792"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16791", - "op" : "Parameter", - "outputs" : ["Parameter_16791"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16788", - "op" : "Parameter", - "outputs" : ["Parameter_16788"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17157", - "op" : "Parameter", - "outputs" : ["Parameter_17157"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16314", - "op" : "Parameter", - "outputs" : ["Parameter_16314"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16786", - "op" : "Parameter", - "outputs" : ["Parameter_16786"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16785", - "op" : "Parameter", - "outputs" : ["Parameter_16785"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15971", - "op" : "Parameter", - "outputs" : ["Parameter_15971"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14747", - "op" : "Parameter", - "outputs" : ["Parameter_14747"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17075", - "op" : "Parameter", - "outputs" : ["Parameter_17075"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16784", - "op" : "Parameter", - "outputs" : ["Parameter_16784"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17030", - "op" : "Parameter", - "outputs" : ["Parameter_17030"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17239", - "op" : "Parameter", - "outputs" : ["Parameter_17239"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16783", - "op" : "Parameter", - "outputs" : ["Parameter_16783"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16780", - "op" : "Parameter", - "outputs" : ["Parameter_16780"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16778", - "op" : "Parameter", - "outputs" : ["Parameter_16778"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15179", - "op" : "Parameter", - "outputs" : ["Parameter_15179"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16776", - "op" : "Parameter", - "outputs" : ["Parameter_16776"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16774", - "op" : "Parameter", - "outputs" : ["Parameter_16774"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17913", - "op" : "Parameter", - "outputs" : ["Parameter_17913"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16771", - "op" : "Parameter", - "outputs" : ["Parameter_16771"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16770", - "op" : "Parameter", - "outputs" : ["Parameter_16770"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14522", - "op" : "Parameter", - "outputs" : ["Parameter_14522"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16769", - "op" : "Parameter", - "outputs" : ["Parameter_16769"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16764", - "op" : "Parameter", - "outputs" : ["Parameter_16764"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15105", - "op" : "Parameter", - "outputs" : ["Parameter_15105"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16762", - "op" : "Parameter", - "outputs" : ["Parameter_16762"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16761", - "op" : "Parameter", - "outputs" : ["Parameter_16761"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17353", - "op" : "Parameter", - "outputs" : ["Parameter_17353"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14432", - "op" : "Parameter", - "outputs" : ["Parameter_14432"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17107", - "op" : "Parameter", - "outputs" : ["Parameter_17107"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16267", - "op" : "Parameter", - "outputs" : ["Parameter_16267"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16758", - "op" : "Parameter", - "outputs" : ["Parameter_16758"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16751", - "op" : "Parameter", - "outputs" : ["Parameter_16751"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16749", - "op" : "Parameter", - "outputs" : ["Parameter_16749"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16747", - "op" : "Parameter", - "outputs" : ["Parameter_16747"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16744", - "op" : "Parameter", - "outputs" : ["Parameter_16744"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13962", - "op" : "Parameter", - "outputs" : ["Parameter_13962"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17029", - "op" : "Parameter", - "outputs" : ["Parameter_17029"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17284", - "op" : "Parameter", - "outputs" : ["Parameter_17284"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15483", - "op" : "Parameter", - "outputs" : ["Parameter_15483"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16975", - "op" : "Parameter", - "outputs" : ["Parameter_16975"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15197", - "op" : "Parameter", - "outputs" : ["Parameter_15197"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16743", - "op" : "Parameter", - "outputs" : ["Parameter_16743"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15604", - "op" : "Parameter", - "outputs" : ["Parameter_15604"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16741", - "op" : "Parameter", - "outputs" : ["Parameter_16741"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16068", - "op" : "Parameter", - "outputs" : ["Parameter_16068"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16740", - "op" : "Parameter", - "outputs" : ["Parameter_16740"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16739", - "op" : "Parameter", - "outputs" : ["Parameter_16739"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17961", - "op" : "Parameter", - "outputs" : ["Parameter_17961"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16738", - "op" : "Parameter", - "outputs" : ["Parameter_16738"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16187", - "op" : "Parameter", - "outputs" : ["Parameter_16187"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18330", - "op" : "Parameter", - "outputs" : ["Parameter_18330"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16737", - "op" : "Parameter", - "outputs" : ["Parameter_16737"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16735", - "op" : "Parameter", - "outputs" : ["Parameter_16735"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16732", - "op" : "Parameter", - "outputs" : ["Parameter_16732"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16726", - "op" : "Parameter", - "outputs" : ["Parameter_16726"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16723", - "op" : "Parameter", - "outputs" : ["Parameter_16723"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14606", - "op" : "Parameter", - "outputs" : ["Parameter_14606"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18295", - "op" : "Parameter", - "outputs" : ["Parameter_18295"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16721", - "op" : "Parameter", - "outputs" : ["Parameter_16721"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16718", - "op" : "Parameter", - "outputs" : ["Parameter_16718"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14575", - "op" : "Parameter", - "outputs" : ["Parameter_14575"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16716", - "op" : "Parameter", - "outputs" : ["Parameter_16716"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17389", - "op" : "Parameter", - "outputs" : ["Parameter_17389"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16359", - "op" : "Parameter", - "outputs" : ["Parameter_16359"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15301", - "op" : "Parameter", - "outputs" : ["Parameter_15301"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16712", - "op" : "Parameter", - "outputs" : ["Parameter_16712"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16710", - "op" : "Parameter", - "outputs" : ["Parameter_16710"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17429", - "op" : "Parameter", - "outputs" : ["Parameter_17429"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16708", - "op" : "Parameter", - "outputs" : ["Parameter_16708"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16334", - "op" : "Parameter", - "outputs" : ["Parameter_16334"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16705", - "op" : "Parameter", - "outputs" : ["Parameter_16705"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16704", - "op" : "Parameter", - "outputs" : ["Parameter_16704"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14528", - "op" : "Parameter", - "outputs" : ["Parameter_14528"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16702", - "op" : "Parameter", - "outputs" : ["Parameter_16702"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17890", - "op" : "Parameter", - "outputs" : ["Parameter_17890"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16942", - "op" : "Parameter", - "outputs" : ["Parameter_16942"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17111", - "op" : "Parameter", - "outputs" : ["Parameter_17111"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16700", - "op" : "Parameter", - "outputs" : ["Parameter_16700"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16950", - "op" : "Parameter", - "outputs" : ["Parameter_16950"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14556", - "op" : "Parameter", - "outputs" : ["Parameter_14556"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17316", - "op" : "Parameter", - "outputs" : ["Parameter_17316"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16699", - "op" : "Parameter", - "outputs" : ["Parameter_16699"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16697", - "op" : "Parameter", - "outputs" : ["Parameter_16697"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15158", - "op" : "Parameter", - "outputs" : ["Parameter_15158"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16857", - "op" : "Parameter", - "outputs" : ["Parameter_16857"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16695", - "op" : "Parameter", - "outputs" : ["Parameter_16695"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16694", - "op" : "Parameter", - "outputs" : ["Parameter_16694"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16692", - "op" : "Parameter", - "outputs" : ["Parameter_16692"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16689", - "op" : "Parameter", - "outputs" : ["Parameter_16689"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16688", - "op" : "Parameter", - "outputs" : ["Parameter_16688"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15479", - "op" : "Parameter", - "outputs" : ["Parameter_15479"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16686", - "op" : "Parameter", - "outputs" : ["Parameter_16686"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16312", - "op" : "Parameter", - "outputs" : ["Parameter_16312"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16989", - "op" : "Parameter", - "outputs" : ["Parameter_16989"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16682", - "op" : "Parameter", - "outputs" : ["Parameter_16682"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14234", - "op" : "Parameter", - "outputs" : ["Parameter_14234"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16681", - "op" : "Parameter", - "outputs" : ["Parameter_16681"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16679", - "op" : "Parameter", - "outputs" : ["Parameter_16679"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17219", - "op" : "Parameter", - "outputs" : ["Parameter_17219"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16910", - "op" : "Parameter", - "outputs" : ["Parameter_16910"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14598", - "op" : "Parameter", - "outputs" : ["Parameter_14598"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16678", - "op" : "Parameter", - "outputs" : ["Parameter_16678"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15539", - "op" : "Parameter", - "outputs" : ["Parameter_15539"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14821", - "op" : "Parameter", - "outputs" : ["Parameter_14821"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16675", - "op" : "Parameter", - "outputs" : ["Parameter_16675"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16674", - "op" : "Parameter", - "outputs" : ["Parameter_16674"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17896", - "op" : "Parameter", - "outputs" : ["Parameter_17896"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16673", - "op" : "Parameter", - "outputs" : ["Parameter_16673"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16122", - "op" : "Parameter", - "outputs" : ["Parameter_16122"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16668", - "op" : "Parameter", - "outputs" : ["Parameter_16668"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18168", - "op" : "Parameter", - "outputs" : ["Parameter_18168"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16944", - "op" : "Parameter", - "outputs" : ["Parameter_16944"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14084", - "op" : "Parameter", - "outputs" : ["Parameter_14084"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16667", - "op" : "Parameter", - "outputs" : ["Parameter_16667"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16665", - "op" : "Parameter", - "outputs" : ["Parameter_16665"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16661", - "op" : "Parameter", - "outputs" : ["Parameter_16661"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14460", - "op" : "Parameter", - "outputs" : ["Parameter_14460"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16658", - "op" : "Parameter", - "outputs" : ["Parameter_16658"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15103", - "op" : "Parameter", - "outputs" : ["Parameter_15103"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16655", - "op" : "Parameter", - "outputs" : ["Parameter_16655"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17245", - "op" : "Parameter", - "outputs" : ["Parameter_17245"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16650", - "op" : "Parameter", - "outputs" : ["Parameter_16650"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16646", - "op" : "Parameter", - "outputs" : ["Parameter_16646"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16644", - "op" : "Parameter", - "outputs" : ["Parameter_16644"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16640", - "op" : "Parameter", - "outputs" : ["Parameter_16640"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16635", - "op" : "Parameter", - "outputs" : ["Parameter_16635"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16633", - "op" : "Parameter", - "outputs" : ["Parameter_16633"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17390", - "op" : "Parameter", - "outputs" : ["Parameter_17390"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14669", - "op" : "Parameter", - "outputs" : ["Parameter_14669"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15530", - "op" : "Parameter", - "outputs" : ["Parameter_15530"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16632", - "op" : "Parameter", - "outputs" : ["Parameter_16632"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16630", - "op" : "Parameter", - "outputs" : ["Parameter_16630"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14581", - "op" : "Parameter", - "outputs" : ["Parameter_14581"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16629", - "op" : "Parameter", - "outputs" : ["Parameter_16629"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17435", - "op" : "Parameter", - "outputs" : ["Parameter_17435"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16624", - "op" : "Parameter", - "outputs" : ["Parameter_16624"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15052", - "op" : "Parameter", - "outputs" : ["Parameter_15052"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16623", - "op" : "Parameter", - "outputs" : ["Parameter_16623"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15414", - "op" : "Parameter", - "outputs" : ["Parameter_15414"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16622", - "op" : "Parameter", - "outputs" : ["Parameter_16622"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17342", - "op" : "Parameter", - "outputs" : ["Parameter_17342"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16621", - "op" : "Parameter", - "outputs" : ["Parameter_16621"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16620", - "op" : "Parameter", - "outputs" : ["Parameter_16620"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16619", - "op" : "Parameter", - "outputs" : ["Parameter_16619"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16615", - "op" : "Parameter", - "outputs" : ["Parameter_16615"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16608", - "op" : "Parameter", - "outputs" : ["Parameter_16608"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16057", - "op" : "Parameter", - "outputs" : ["Parameter_16057"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18200", - "op" : "Parameter", - "outputs" : ["Parameter_18200"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16607", - "op" : "Parameter", - "outputs" : ["Parameter_16607"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14697", - "op" : "Parameter", - "outputs" : ["Parameter_14697"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16606", - "op" : "Parameter", - "outputs" : ["Parameter_16606"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16603", - "op" : "Parameter", - "outputs" : ["Parameter_16603"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16602", - "op" : "Parameter", - "outputs" : ["Parameter_16602"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16601", - "op" : "Parameter", - "outputs" : ["Parameter_16601"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15398", - "op" : "Parameter", - "outputs" : ["Parameter_15398"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16600", - "op" : "Parameter", - "outputs" : ["Parameter_16600"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16596", - "op" : "Parameter", - "outputs" : ["Parameter_16596"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16593", - "op" : "Parameter", - "outputs" : ["Parameter_16593"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16591", - "op" : "Parameter", - "outputs" : ["Parameter_16591"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16590", - "op" : "Parameter", - "outputs" : ["Parameter_16590"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16586", - "op" : "Parameter", - "outputs" : ["Parameter_16586"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16585", - "op" : "Parameter", - "outputs" : ["Parameter_16585"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16891", - "op" : "Parameter", - "outputs" : ["Parameter_16891"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16583", - "op" : "Parameter", - "outputs" : ["Parameter_16583"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16581", - "op" : "Parameter", - "outputs" : ["Parameter_16581"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16578", - "op" : "Parameter", - "outputs" : ["Parameter_16578"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16204", - "op" : "Parameter", - "outputs" : ["Parameter_16204"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16576", - "op" : "Parameter", - "outputs" : ["Parameter_16576"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16575", - "op" : "Parameter", - "outputs" : ["Parameter_16575"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16573", - "op" : "Parameter", - "outputs" : ["Parameter_16573"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16570", - "op" : "Parameter", - "outputs" : ["Parameter_16570"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16566", - "op" : "Parameter", - "outputs" : ["Parameter_16566"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14671", - "op" : "Parameter", - "outputs" : ["Parameter_14671"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16564", - "op" : "Parameter", - "outputs" : ["Parameter_16564"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17158", - "op" : "Parameter", - "outputs" : ["Parameter_17158"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16563", - "op" : "Parameter", - "outputs" : ["Parameter_16563"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16562", - "op" : "Parameter", - "outputs" : ["Parameter_16562"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18231", - "op" : "Parameter", - "outputs" : ["Parameter_18231"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16560", - "op" : "Parameter", - "outputs" : ["Parameter_16560"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16559", - "op" : "Parameter", - "outputs" : ["Parameter_16559"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16558", - "op" : "Parameter", - "outputs" : ["Parameter_16558"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15349", - "op" : "Parameter", - "outputs" : ["Parameter_15349"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16555", - "op" : "Parameter", - "outputs" : ["Parameter_16555"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16552", - "op" : "Parameter", - "outputs" : ["Parameter_16552"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14256", - "op" : "Parameter", - "outputs" : ["Parameter_14256"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18028", - "op" : "Parameter", - "outputs" : ["Parameter_18028"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16550", - "op" : "Parameter", - "outputs" : ["Parameter_16550"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14590", - "op" : "Parameter", - "outputs" : ["Parameter_14590"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16548", - "op" : "Parameter", - "outputs" : ["Parameter_16548"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15409", - "op" : "Parameter", - "outputs" : ["Parameter_15409"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16545", - "op" : "Parameter", - "outputs" : ["Parameter_16545"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13794", - "op" : "Parameter", - "outputs" : ["Parameter_13794"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16543", - "op" : "Parameter", - "outputs" : ["Parameter_16543"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15992", - "op" : "Parameter", - "outputs" : ["Parameter_15992"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16542", - "op" : "Parameter", - "outputs" : ["Parameter_16542"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16541", - "op" : "Parameter", - "outputs" : ["Parameter_16541"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14048", - "op" : "Parameter", - "outputs" : ["Parameter_14048"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17335", - "op" : "Parameter", - "outputs" : ["Parameter_17335"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16540", - "op" : "Parameter", - "outputs" : ["Parameter_16540"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16539", - "op" : "Parameter", - "outputs" : ["Parameter_16539"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15807", - "op" : "Parameter", - "outputs" : ["Parameter_15807"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16538", - "op" : "Parameter", - "outputs" : ["Parameter_16538"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18038", - "op" : "Parameter", - "outputs" : ["Parameter_18038"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16536", - "op" : "Parameter", - "outputs" : ["Parameter_16536"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14482", - "op" : "Parameter", - "outputs" : ["Parameter_14482"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15333", - "op" : "Parameter", - "outputs" : ["Parameter_15333"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17421", - "op" : "Parameter", - "outputs" : ["Parameter_17421"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18363", - "op" : "Parameter", - "outputs" : ["Parameter_18363"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16534", - "op" : "Parameter", - "outputs" : ["Parameter_16534"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18068", - "op" : "Parameter", - "outputs" : ["Parameter_18068"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16532", - "op" : "Parameter", - "outputs" : ["Parameter_16532"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16529", - "op" : "Parameter", - "outputs" : ["Parameter_16529"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15686", - "op" : "Parameter", - "outputs" : ["Parameter_15686"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16525", - "op" : "Parameter", - "outputs" : ["Parameter_16525"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16523", - "op" : "Parameter", - "outputs" : ["Parameter_16523"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16521", - "op" : "Parameter", - "outputs" : ["Parameter_16521"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16412", - "op" : "Parameter", - "outputs" : ["Parameter_16412"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17115", - "op" : "Parameter", - "outputs" : ["Parameter_17115"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15640", - "op" : "Parameter", - "outputs" : ["Parameter_15640"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15109", - "op" : "Parameter", - "outputs" : ["Parameter_15109"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16520", - "op" : "Parameter", - "outputs" : ["Parameter_16520"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14744", - "op" : "Parameter", - "outputs" : ["Parameter_14744"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16519", - "op" : "Parameter", - "outputs" : ["Parameter_16519"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13811", - "op" : "Parameter", - "outputs" : ["Parameter_13811"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17194", - "op" : "Parameter", - "outputs" : ["Parameter_17194"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18094", - "op" : "Parameter", - "outputs" : ["Parameter_18094"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16517", - "op" : "Parameter", - "outputs" : ["Parameter_16517"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16516", - "op" : "Parameter", - "outputs" : ["Parameter_16516"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16515", - "op" : "Parameter", - "outputs" : ["Parameter_16515"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16514", - "op" : "Parameter", - "outputs" : ["Parameter_16514"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17653", - "op" : "Parameter", - "outputs" : ["Parameter_17653"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16510", - "op" : "Parameter", - "outputs" : ["Parameter_16510"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16719", - "op" : "Parameter", - "outputs" : ["Parameter_16719"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17427", - "op" : "Parameter", - "outputs" : ["Parameter_17427"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16509", - "op" : "Parameter", - "outputs" : ["Parameter_16509"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16224", - "op" : "Parameter", - "outputs" : ["Parameter_16224"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13802", - "op" : "Parameter", - "outputs" : ["Parameter_13802"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14050", - "op" : "Parameter", - "outputs" : ["Parameter_14050"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16508", - "op" : "Parameter", - "outputs" : ["Parameter_16508"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16506", - "op" : "Parameter", - "outputs" : ["Parameter_16506"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16505", - "op" : "Parameter", - "outputs" : ["Parameter_16505"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16500", - "op" : "Parameter", - "outputs" : ["Parameter_16500"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17093", - "op" : "Parameter", - "outputs" : ["Parameter_17093"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16498", - "op" : "Parameter", - "outputs" : ["Parameter_16498"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16229", - "op" : "Parameter", - "outputs" : ["Parameter_16229"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16495", - "op" : "Parameter", - "outputs" : ["Parameter_16495"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16494", - "op" : "Parameter", - "outputs" : ["Parameter_16494"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16493", - "op" : "Parameter", - "outputs" : ["Parameter_16493"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14691", - "op" : "Parameter", - "outputs" : ["Parameter_14691"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16491", - "op" : "Parameter", - "outputs" : ["Parameter_16491"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16117", - "op" : "Parameter", - "outputs" : ["Parameter_16117"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14381", - "op" : "Parameter", - "outputs" : ["Parameter_14381"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16490", - "op" : "Parameter", - "outputs" : ["Parameter_16490"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16488", - "op" : "Parameter", - "outputs" : ["Parameter_16488"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16483", - "op" : "Parameter", - "outputs" : ["Parameter_16483"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15344", - "op" : "Parameter", - "outputs" : ["Parameter_15344"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16480", - "op" : "Parameter", - "outputs" : ["Parameter_16480"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16478", - "op" : "Parameter", - "outputs" : ["Parameter_16478"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15927", - "op" : "Parameter", - "outputs" : ["Parameter_15927"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17700", - "op" : "Parameter", - "outputs" : ["Parameter_17700"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18070", - "op" : "Parameter", - "outputs" : ["Parameter_18070"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18279", - "op" : "Parameter", - "outputs" : ["Parameter_18279"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16477", - "op" : "Parameter", - "outputs" : ["Parameter_16477"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16476", - "op" : "Parameter", - "outputs" : ["Parameter_16476"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14059", - "op" : "Parameter", - "outputs" : ["Parameter_14059"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16475", - "op" : "Parameter", - "outputs" : ["Parameter_16475"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16474", - "op" : "Parameter", - "outputs" : ["Parameter_16474"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16470", - "op" : "Parameter", - "outputs" : ["Parameter_16470"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16466", - "op" : "Parameter", - "outputs" : ["Parameter_16466"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16144", - "op" : "Parameter", - "outputs" : ["Parameter_16144"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16460", - "op" : "Parameter", - "outputs" : ["Parameter_16460"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16458", - "op" : "Parameter", - "outputs" : ["Parameter_16458"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17071", - "op" : "Parameter", - "outputs" : ["Parameter_17071"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15234", - "op" : "Parameter", - "outputs" : ["Parameter_15234"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14385", - "op" : "Parameter", - "outputs" : ["Parameter_14385"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16703", - "op" : "Parameter", - "outputs" : ["Parameter_16703"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16456", - "op" : "Parameter", - "outputs" : ["Parameter_16456"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16347", - "op" : "Parameter", - "outputs" : ["Parameter_16347"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16455", - "op" : "Parameter", - "outputs" : ["Parameter_16455"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16454", - "op" : "Parameter", - "outputs" : ["Parameter_16454"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13822", - "op" : "Parameter", - "outputs" : ["Parameter_13822"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17663", - "op" : "Parameter", - "outputs" : ["Parameter_17663"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17129", - "op" : "Parameter", - "outputs" : ["Parameter_17129"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18029", - "op" : "Parameter", - "outputs" : ["Parameter_18029"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16452", - "op" : "Parameter", - "outputs" : ["Parameter_16452"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16450", - "op" : "Parameter", - "outputs" : ["Parameter_16450"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16449", - "op" : "Parameter", - "outputs" : ["Parameter_16449"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16448", - "op" : "Parameter", - "outputs" : ["Parameter_16448"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16074", - "op" : "Parameter", - "outputs" : ["Parameter_16074"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16445", - "op" : "Parameter", - "outputs" : ["Parameter_16445"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16654", - "op" : "Parameter", - "outputs" : ["Parameter_16654"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16442", - "op" : "Parameter", - "outputs" : ["Parameter_16442"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16440", - "op" : "Parameter", - "outputs" : ["Parameter_16440"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16438", - "op" : "Parameter", - "outputs" : ["Parameter_16438"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17641", - "op" : "Parameter", - "outputs" : ["Parameter_17641"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17028", - "op" : "Parameter", - "outputs" : ["Parameter_17028"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16433", - "op" : "Parameter", - "outputs" : ["Parameter_16433"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17395", - "op" : "Parameter", - "outputs" : ["Parameter_17395"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16432", - "op" : "Parameter", - "outputs" : ["Parameter_16432"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16428", - "op" : "Parameter", - "outputs" : ["Parameter_16428"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14394", - "op" : "Parameter", - "outputs" : ["Parameter_14394"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14927", - "op" : "Parameter", - "outputs" : ["Parameter_14927"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16426", - "op" : "Parameter", - "outputs" : ["Parameter_16426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16052", - "op" : "Parameter", - "outputs" : ["Parameter_16052"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17079", - "op" : "Parameter", - "outputs" : ["Parameter_17079"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17821", - "op" : "Parameter", - "outputs" : ["Parameter_17821"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17372", - "op" : "Parameter", - "outputs" : ["Parameter_17372"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16419", - "op" : "Parameter", - "outputs" : ["Parameter_16419"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14017", - "op" : "Parameter", - "outputs" : ["Parameter_14017"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16418", - "op" : "Parameter", - "outputs" : ["Parameter_16418"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16416", - "op" : "Parameter", - "outputs" : ["Parameter_16416"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16414", - "op" : "Parameter", - "outputs" : ["Parameter_16414"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16413", - "op" : "Parameter", - "outputs" : ["Parameter_16413"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15862", - "op" : "Parameter", - "outputs" : ["Parameter_15862"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17635", - "op" : "Parameter", - "outputs" : ["Parameter_17635"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18005", - "op" : "Parameter", - "outputs" : ["Parameter_18005"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16411", - "op" : "Parameter", - "outputs" : ["Parameter_16411"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16410", - "op" : "Parameter", - "outputs" : ["Parameter_16410"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14743", - "op" : "Parameter", - "outputs" : ["Parameter_14743"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17490", - "op" : "Parameter", - "outputs" : ["Parameter_17490"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16409", - "op" : "Parameter", - "outputs" : ["Parameter_16409"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16408", - "op" : "Parameter", - "outputs" : ["Parameter_16408"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17908", - "op" : "Parameter", - "outputs" : ["Parameter_17908"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16405", - "op" : "Parameter", - "outputs" : ["Parameter_16405"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16403", - "op" : "Parameter", - "outputs" : ["Parameter_16403"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16402", - "op" : "Parameter", - "outputs" : ["Parameter_16402"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16401", - "op" : "Parameter", - "outputs" : ["Parameter_16401"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16399", - "op" : "Parameter", - "outputs" : ["Parameter_16399"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16398", - "op" : "Parameter", - "outputs" : ["Parameter_16398"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16396", - "op" : "Parameter", - "outputs" : ["Parameter_16396"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16395", - "op" : "Parameter", - "outputs" : ["Parameter_16395"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16394", - "op" : "Parameter", - "outputs" : ["Parameter_16394"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16185", - "op" : "Parameter", - "outputs" : ["Parameter_16185"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15003", - "op" : "Parameter", - "outputs" : ["Parameter_15003"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16393", - "op" : "Parameter", - "outputs" : ["Parameter_16393"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16392", - "op" : "Parameter", - "outputs" : ["Parameter_16392"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16391", - "op" : "Parameter", - "outputs" : ["Parameter_16391"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16282", - "op" : "Parameter", - "outputs" : ["Parameter_16282"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16985", - "op" : "Parameter", - "outputs" : ["Parameter_16985"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16390", - "op" : "Parameter", - "outputs" : ["Parameter_16390"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16389", - "op" : "Parameter", - "outputs" : ["Parameter_16389"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14477", - "op" : "Parameter", - "outputs" : ["Parameter_14477"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17598", - "op" : "Parameter", - "outputs" : ["Parameter_17598"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17314", - "op" : "Parameter", - "outputs" : ["Parameter_17314"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16696", - "op" : "Parameter", - "outputs" : ["Parameter_16696"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14730", - "op" : "Parameter", - "outputs" : ["Parameter_14730"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16388", - "op" : "Parameter", - "outputs" : ["Parameter_16388"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16380", - "op" : "Parameter", - "outputs" : ["Parameter_16380"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16589", - "op" : "Parameter", - "outputs" : ["Parameter_16589"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16379", - "op" : "Parameter", - "outputs" : ["Parameter_16379"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14072", - "op" : "Parameter", - "outputs" : ["Parameter_14072"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16377", - "op" : "Parameter", - "outputs" : ["Parameter_16377"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16617", - "op" : "Parameter", - "outputs" : ["Parameter_16617"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18093", - "op" : "Parameter", - "outputs" : ["Parameter_18093"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16375", - "op" : "Parameter", - "outputs" : ["Parameter_16375"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16625", - "op" : "Parameter", - "outputs" : ["Parameter_16625"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16372", - "op" : "Parameter", - "outputs" : ["Parameter_16372"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16369", - "op" : "Parameter", - "outputs" : ["Parameter_16369"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16368", - "op" : "Parameter", - "outputs" : ["Parameter_16368"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16365", - "op" : "Parameter", - "outputs" : ["Parameter_16365"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16115", - "op" : "Parameter", - "outputs" : ["Parameter_16115"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16363", - "op" : "Parameter", - "outputs" : ["Parameter_16363"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17262", - "op" : "Parameter", - "outputs" : ["Parameter_17262"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14277", - "op" : "Parameter", - "outputs" : ["Parameter_14277"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16361", - "op" : "Parameter", - "outputs" : ["Parameter_16361"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16878", - "op" : "Parameter", - "outputs" : ["Parameter_16878"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16356", - "op" : "Parameter", - "outputs" : ["Parameter_16356"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17307", - "op" : "Parameter", - "outputs" : ["Parameter_17307"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15529", - "op" : "Parameter", - "outputs" : ["Parameter_15529"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16354", - "op" : "Parameter", - "outputs" : ["Parameter_16354"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16352", - "op" : "Parameter", - "outputs" : ["Parameter_16352"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16350", - "op" : "Parameter", - "outputs" : ["Parameter_16350"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14920", - "op" : "Parameter", - "outputs" : ["Parameter_14920"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16348", - "op" : "Parameter", - "outputs" : ["Parameter_16348"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15797", - "op" : "Parameter", - "outputs" : ["Parameter_15797"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14918", - "op" : "Parameter", - "outputs" : ["Parameter_14918"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17570", - "op" : "Parameter", - "outputs" : ["Parameter_17570"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16346", - "op" : "Parameter", - "outputs" : ["Parameter_16346"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16345", - "op" : "Parameter", - "outputs" : ["Parameter_16345"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14900", - "op" : "Parameter", - "outputs" : ["Parameter_14900"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17425", - "op" : "Parameter", - "outputs" : ["Parameter_17425"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16344", - "op" : "Parameter", - "outputs" : ["Parameter_16344"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14801", - "op" : "Parameter", - "outputs" : ["Parameter_14801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15612", - "op" : "Parameter", - "outputs" : ["Parameter_15612"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16343", - "op" : "Parameter", - "outputs" : ["Parameter_16343"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16341", - "op" : "Parameter", - "outputs" : ["Parameter_16341"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16340", - "op" : "Parameter", - "outputs" : ["Parameter_16340"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16339", - "op" : "Parameter", - "outputs" : ["Parameter_16339"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14644", - "op" : "Parameter", - "outputs" : ["Parameter_14644"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16338", - "op" : "Parameter", - "outputs" : ["Parameter_16338"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16333", - "op" : "Parameter", - "outputs" : ["Parameter_16333"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16331", - "op" : "Parameter", - "outputs" : ["Parameter_16331"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16329", - "op" : "Parameter", - "outputs" : ["Parameter_16329"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16120", - "op" : "Parameter", - "outputs" : ["Parameter_16120"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16328", - "op" : "Parameter", - "outputs" : ["Parameter_16328"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16941", - "op" : "Parameter", - "outputs" : ["Parameter_16941"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16327", - "op" : "Parameter", - "outputs" : ["Parameter_16327"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16326", - "op" : "Parameter", - "outputs" : ["Parameter_16326"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16217", - "op" : "Parameter", - "outputs" : ["Parameter_16217"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14551", - "op" : "Parameter", - "outputs" : ["Parameter_14551"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16920", - "op" : "Parameter", - "outputs" : ["Parameter_16920"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14802", - "op" : "Parameter", - "outputs" : ["Parameter_14802"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16634", - "op" : "Parameter", - "outputs" : ["Parameter_16634"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14614", - "op" : "Parameter", - "outputs" : ["Parameter_14614"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16325", - "op" : "Parameter", - "outputs" : ["Parameter_16325"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17249", - "op" : "Parameter", - "outputs" : ["Parameter_17249"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16323", - "op" : "Parameter", - "outputs" : ["Parameter_16323"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16321", - "op" : "Parameter", - "outputs" : ["Parameter_16321"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16319", - "op" : "Parameter", - "outputs" : ["Parameter_16319"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16316", - "op" : "Parameter", - "outputs" : ["Parameter_16316"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16926", - "op" : "Parameter", - "outputs" : ["Parameter_16926"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16309", - "op" : "Parameter", - "outputs" : ["Parameter_16309"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16307", - "op" : "Parameter", - "outputs" : ["Parameter_16307"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16924", - "op" : "Parameter", - "outputs" : ["Parameter_16924"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16306", - "op" : "Parameter", - "outputs" : ["Parameter_16306"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17268", - "op" : "Parameter", - "outputs" : ["Parameter_17268"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16305", - "op" : "Parameter", - "outputs" : ["Parameter_16305"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16304", - "op" : "Parameter", - "outputs" : ["Parameter_16304"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17266", - "op" : "Parameter", - "outputs" : ["Parameter_17266"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15429", - "op" : "Parameter", - "outputs" : ["Parameter_15429"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16898", - "op" : "Parameter", - "outputs" : ["Parameter_16898"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16303", - "op" : "Parameter", - "outputs" : ["Parameter_16303"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16301", - "op" : "Parameter", - "outputs" : ["Parameter_16301"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17271", - "op" : "Parameter", - "outputs" : ["Parameter_17271"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16300", - "op" : "Parameter", - "outputs" : ["Parameter_16300"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17910", - "op" : "Parameter", - "outputs" : ["Parameter_17910"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16299", - "op" : "Parameter", - "outputs" : ["Parameter_16299"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15139", - "op" : "Parameter", - "outputs" : ["Parameter_15139"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16298", - "op" : "Parameter", - "outputs" : ["Parameter_16298"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18196", - "op" : "Parameter", - "outputs" : ["Parameter_18196"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16297", - "op" : "Parameter", - "outputs" : ["Parameter_16297"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14498", - "op" : "Parameter", - "outputs" : ["Parameter_14498"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16295", - "op" : "Parameter", - "outputs" : ["Parameter_16295"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16407", - "op" : "Parameter", - "outputs" : ["Parameter_16407"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16294", - "op" : "Parameter", - "outputs" : ["Parameter_16294"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14013", - "op" : "Parameter", - "outputs" : ["Parameter_14013"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15412", - "op" : "Parameter", - "outputs" : ["Parameter_15412"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16292", - "op" : "Parameter", - "outputs" : ["Parameter_16292"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16461", - "op" : "Parameter", - "outputs" : ["Parameter_16461"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16289", - "op" : "Parameter", - "outputs" : ["Parameter_16289"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16574", - "op" : "Parameter", - "outputs" : ["Parameter_16574"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14039", - "op" : "Parameter", - "outputs" : ["Parameter_14039"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16288", - "op" : "Parameter", - "outputs" : ["Parameter_16288"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16287", - "op" : "Parameter", - "outputs" : ["Parameter_16287"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14184", - "op" : "Parameter", - "outputs" : ["Parameter_14184"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18255", - "op" : "Parameter", - "outputs" : ["Parameter_18255"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16286", - "op" : "Parameter", - "outputs" : ["Parameter_16286"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15613", - "op" : "Parameter", - "outputs" : ["Parameter_15613"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16285", - "op" : "Parameter", - "outputs" : ["Parameter_16285"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17299", - "op" : "Parameter", - "outputs" : ["Parameter_17299"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16284", - "op" : "Parameter", - "outputs" : ["Parameter_16284"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14499", - "op" : "Parameter", - "outputs" : ["Parameter_14499"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14646", - "op" : "Parameter", - "outputs" : ["Parameter_14646"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16283", - "op" : "Parameter", - "outputs" : ["Parameter_16283"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15732", - "op" : "Parameter", - "outputs" : ["Parameter_15732"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16280", - "op" : "Parameter", - "outputs" : ["Parameter_16280"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16274", - "op" : "Parameter", - "outputs" : ["Parameter_16274"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16273", - "op" : "Parameter", - "outputs" : ["Parameter_16273"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16269", - "op" : "Parameter", - "outputs" : ["Parameter_16269"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16643", - "op" : "Parameter", - "outputs" : ["Parameter_16643"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16268", - "op" : "Parameter", - "outputs" : ["Parameter_16268"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16266", - "op" : "Parameter", - "outputs" : ["Parameter_16266"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16264", - "op" : "Parameter", - "outputs" : ["Parameter_16264"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16055", - "op" : "Parameter", - "outputs" : ["Parameter_16055"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16263", - "op" : "Parameter", - "outputs" : ["Parameter_16263"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16261", - "op" : "Parameter", - "outputs" : ["Parameter_16261"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16569", - "op" : "Parameter", - "outputs" : ["Parameter_16569"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16260", - "op" : "Parameter", - "outputs" : ["Parameter_16260"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17853", - "op" : "Parameter", - "outputs" : ["Parameter_17853"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16256", - "op" : "Parameter", - "outputs" : ["Parameter_16256"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16255", - "op" : "Parameter", - "outputs" : ["Parameter_16255"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18153", - "op" : "Parameter", - "outputs" : ["Parameter_18153"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16254", - "op" : "Parameter", - "outputs" : ["Parameter_16254"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16618", - "op" : "Parameter", - "outputs" : ["Parameter_16618"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16253", - "op" : "Parameter", - "outputs" : ["Parameter_16253"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16251", - "op" : "Parameter", - "outputs" : ["Parameter_16251"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16247", - "op" : "Parameter", - "outputs" : ["Parameter_16247"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17201", - "op" : "Parameter", - "outputs" : ["Parameter_17201"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16833", - "op" : "Parameter", - "outputs" : ["Parameter_16833"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16238", - "op" : "Parameter", - "outputs" : ["Parameter_16238"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16234", - "op" : "Parameter", - "outputs" : ["Parameter_16234"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16232", - "op" : "Parameter", - "outputs" : ["Parameter_16232"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16230", - "op" : "Parameter", - "outputs" : ["Parameter_16230"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16469", - "op" : "Parameter", - "outputs" : ["Parameter_16469"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16227", - "op" : "Parameter", - "outputs" : ["Parameter_16227"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17050", - "op" : "Parameter", - "outputs" : ["Parameter_17050"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16223", - "op" : "Parameter", - "outputs" : ["Parameter_16223"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16222", - "op" : "Parameter", - "outputs" : ["Parameter_16222"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14195", - "op" : "Parameter", - "outputs" : ["Parameter_14195"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18190", - "op" : "Parameter", - "outputs" : ["Parameter_18190"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16221", - "op" : "Parameter", - "outputs" : ["Parameter_16221"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15548", - "op" : "Parameter", - "outputs" : ["Parameter_15548"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17234", - "op" : "Parameter", - "outputs" : ["Parameter_17234"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16513", - "op" : "Parameter", - "outputs" : ["Parameter_16513"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16219", - "op" : "Parameter", - "outputs" : ["Parameter_16219"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16218", - "op" : "Parameter", - "outputs" : ["Parameter_16218"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15667", - "op" : "Parameter", - "outputs" : ["Parameter_15667"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17359", - "op" : "Parameter", - "outputs" : ["Parameter_17359"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16215", - "op" : "Parameter", - "outputs" : ["Parameter_16215"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16213", - "op" : "Parameter", - "outputs" : ["Parameter_16213"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16211", - "op" : "Parameter", - "outputs" : ["Parameter_16211"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16209", - "op" : "Parameter", - "outputs" : ["Parameter_16209"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16531", - "op" : "Parameter", - "outputs" : ["Parameter_16531"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16639", - "op" : "Parameter", - "outputs" : ["Parameter_16639"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14028", - "op" : "Parameter", - "outputs" : ["Parameter_14028"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14924", - "op" : "Parameter", - "outputs" : ["Parameter_14924"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15091", - "op" : "Parameter", - "outputs" : ["Parameter_15091"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16208", - "op" : "Parameter", - "outputs" : ["Parameter_16208"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16205", - "op" : "Parameter", - "outputs" : ["Parameter_16205"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16202", - "op" : "Parameter", - "outputs" : ["Parameter_16202"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16201", - "op" : "Parameter", - "outputs" : ["Parameter_16201"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16199", - "op" : "Parameter", - "outputs" : ["Parameter_16199"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16198", - "op" : "Parameter", - "outputs" : ["Parameter_16198"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16196", - "op" : "Parameter", - "outputs" : ["Parameter_16196"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17121", - "op" : "Parameter", - "outputs" : ["Parameter_17121"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16504", - "op" : "Parameter", - "outputs" : ["Parameter_16504"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16195", - "op" : "Parameter", - "outputs" : ["Parameter_16195"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16193", - "op" : "Parameter", - "outputs" : ["Parameter_16193"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16191", - "op" : "Parameter", - "outputs" : ["Parameter_16191"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16190", - "op" : "Parameter", - "outputs" : ["Parameter_16190"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18088", - "op" : "Parameter", - "outputs" : ["Parameter_18088"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16189", - "op" : "Parameter", - "outputs" : ["Parameter_16189"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14389", - "op" : "Parameter", - "outputs" : ["Parameter_14389"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16188", - "op" : "Parameter", - "outputs" : ["Parameter_16188"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16496", - "op" : "Parameter", - "outputs" : ["Parameter_16496"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18274", - "op" : "Parameter", - "outputs" : ["Parameter_18274"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16186", - "op" : "Parameter", - "outputs" : ["Parameter_16186"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18382", - "op" : "Parameter", - "outputs" : ["Parameter_18382"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16182", - "op" : "Parameter", - "outputs" : ["Parameter_16182"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16556", - "op" : "Parameter", - "outputs" : ["Parameter_16556"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16181", - "op" : "Parameter", - "outputs" : ["Parameter_16181"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16422", - "op" : "Parameter", - "outputs" : ["Parameter_16422"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14278", - "op" : "Parameter", - "outputs" : ["Parameter_14278"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14529", - "op" : "Parameter", - "outputs" : ["Parameter_14529"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17898", - "op" : "Parameter", - "outputs" : ["Parameter_17898"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16180", - "op" : "Parameter", - "outputs" : ["Parameter_16180"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16430", - "op" : "Parameter", - "outputs" : ["Parameter_16430"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16935", - "op" : "Parameter", - "outputs" : ["Parameter_16935"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15325", - "op" : "Parameter", - "outputs" : ["Parameter_15325"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16177", - "op" : "Parameter", - "outputs" : ["Parameter_16177"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16337", - "op" : "Parameter", - "outputs" : ["Parameter_16337"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16175", - "op" : "Parameter", - "outputs" : ["Parameter_16175"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17463", - "op" : "Parameter", - "outputs" : ["Parameter_17463"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16173", - "op" : "Parameter", - "outputs" : ["Parameter_16173"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14922", - "op" : "Parameter", - "outputs" : ["Parameter_14922"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17134", - "op" : "Parameter", - "outputs" : ["Parameter_17134"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16171", - "op" : "Parameter", - "outputs" : ["Parameter_16171"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16170", - "op" : "Parameter", - "outputs" : ["Parameter_16170"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16169", - "op" : "Parameter", - "outputs" : ["Parameter_16169"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15947", - "op" : "Parameter", - "outputs" : ["Parameter_15947"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17067", - "op" : "Parameter", - "outputs" : ["Parameter_17067"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14310", - "op" : "Parameter", - "outputs" : ["Parameter_14310"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18195", - "op" : "Parameter", - "outputs" : ["Parameter_18195"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16887", - "op" : "Parameter", - "outputs" : ["Parameter_16887"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16166", - "op" : "Parameter", - "outputs" : ["Parameter_16166"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15792", - "op" : "Parameter", - "outputs" : ["Parameter_15792"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14613", - "op" : "Parameter", - "outputs" : ["Parameter_14613"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16164", - "op" : "Parameter", - "outputs" : ["Parameter_16164"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15021", - "op" : "Parameter", - "outputs" : ["Parameter_15021"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16163", - "op" : "Parameter", - "outputs" : ["Parameter_16163"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16966", - "op" : "Parameter", - "outputs" : ["Parameter_16966"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16160", - "op" : "Parameter", - "outputs" : ["Parameter_16160"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16159", - "op" : "Parameter", - "outputs" : ["Parameter_16159"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13813", - "op" : "Parameter", - "outputs" : ["Parameter_13813"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18128", - "op" : "Parameter", - "outputs" : ["Parameter_18128"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16158", - "op" : "Parameter", - "outputs" : ["Parameter_16158"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16157", - "op" : "Parameter", - "outputs" : ["Parameter_16157"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18125", - "op" : "Parameter", - "outputs" : ["Parameter_18125"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16153", - "op" : "Parameter", - "outputs" : ["Parameter_16153"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15602", - "op" : "Parameter", - "outputs" : ["Parameter_15602"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16152", - "op" : "Parameter", - "outputs" : ["Parameter_16152"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16148", - "op" : "Parameter", - "outputs" : ["Parameter_16148"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16146", - "op" : "Parameter", - "outputs" : ["Parameter_16146"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16142", - "op" : "Parameter", - "outputs" : ["Parameter_16142"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16138", - "op" : "Parameter", - "outputs" : ["Parameter_16138"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17819", - "op" : "Parameter", - "outputs" : ["Parameter_17819"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16137", - "op" : "Parameter", - "outputs" : ["Parameter_16137"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16387", - "op" : "Parameter", - "outputs" : ["Parameter_16387"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16134", - "op" : "Parameter", - "outputs" : ["Parameter_16134"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16746", - "op" : "Parameter", - "outputs" : ["Parameter_16746"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15231", - "op" : "Parameter", - "outputs" : ["Parameter_15231"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16132", - "op" : "Parameter", - "outputs" : ["Parameter_16132"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16864", - "op" : "Parameter", - "outputs" : ["Parameter_16864"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16131", - "op" : "Parameter", - "outputs" : ["Parameter_16131"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16128", - "op" : "Parameter", - "outputs" : ["Parameter_16128"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17098", - "op" : "Parameter", - "outputs" : ["Parameter_17098"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16804", - "op" : "Parameter", - "outputs" : ["Parameter_16804"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18026", - "op" : "Parameter", - "outputs" : ["Parameter_18026"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16127", - "op" : "Parameter", - "outputs" : ["Parameter_16127"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13892", - "op" : "Parameter", - "outputs" : ["Parameter_13892"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16126", - "op" : "Parameter", - "outputs" : ["Parameter_16126"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16125", - "op" : "Parameter", - "outputs" : ["Parameter_16125"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18023", - "op" : "Parameter", - "outputs" : ["Parameter_18023"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16124", - "op" : "Parameter", - "outputs" : ["Parameter_16124"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16118", - "op" : "Parameter", - "outputs" : ["Parameter_16118"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16116", - "op" : "Parameter", - "outputs" : ["Parameter_16116"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16357", - "op" : "Parameter", - "outputs" : ["Parameter_16357"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16870", - "op" : "Parameter", - "outputs" : ["Parameter_16870"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14351", - "op" : "Parameter", - "outputs" : ["Parameter_14351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15260", - "op" : "Parameter", - "outputs" : ["Parameter_15260"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16112", - "op" : "Parameter", - "outputs" : ["Parameter_16112"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16272", - "op" : "Parameter", - "outputs" : ["Parameter_16272"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16110", - "op" : "Parameter", - "outputs" : ["Parameter_16110"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16109", - "op" : "Parameter", - "outputs" : ["Parameter_16109"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16105", - "op" : "Parameter", - "outputs" : ["Parameter_16105"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15855", - "op" : "Parameter", - "outputs" : ["Parameter_15855"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16103", - "op" : "Parameter", - "outputs" : ["Parameter_16103"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16102", - "op" : "Parameter", - "outputs" : ["Parameter_16102"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17002", - "op" : "Parameter", - "outputs" : ["Parameter_17002"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14321", - "op" : "Parameter", - "outputs" : ["Parameter_14321"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16822", - "op" : "Parameter", - "outputs" : ["Parameter_16822"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16101", - "op" : "Parameter", - "outputs" : ["Parameter_16101"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15727", - "op" : "Parameter", - "outputs" : ["Parameter_15727"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16099", - "op" : "Parameter", - "outputs" : ["Parameter_16099"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16095", - "op" : "Parameter", - "outputs" : ["Parameter_16095"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16093", - "op" : "Parameter", - "outputs" : ["Parameter_16093"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17104", - "op" : "Parameter", - "outputs" : ["Parameter_17104"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16089", - "op" : "Parameter", - "outputs" : ["Parameter_16089"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16088", - "op" : "Parameter", - "outputs" : ["Parameter_16088"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15537", - "op" : "Parameter", - "outputs" : ["Parameter_15537"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16880", - "op" : "Parameter", - "outputs" : ["Parameter_16880"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17119", - "op" : "Parameter", - "outputs" : ["Parameter_17119"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15199", - "op" : "Parameter", - "outputs" : ["Parameter_15199"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16085", - "op" : "Parameter", - "outputs" : ["Parameter_16085"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16084", - "op" : "Parameter", - "outputs" : ["Parameter_16084"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16083", - "op" : "Parameter", - "outputs" : ["Parameter_16083"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16082", - "op" : "Parameter", - "outputs" : ["Parameter_16082"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15102", - "op" : "Parameter", - "outputs" : ["Parameter_15102"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16081", - "op" : "Parameter", - "outputs" : ["Parameter_16081"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16079", - "op" : "Parameter", - "outputs" : ["Parameter_16079"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16078", - "op" : "Parameter", - "outputs" : ["Parameter_16078"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16071", - "op" : "Parameter", - "outputs" : ["Parameter_16071"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16070", - "op" : "Parameter", - "outputs" : ["Parameter_16070"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15132", - "op" : "Parameter", - "outputs" : ["Parameter_15132"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16893", - "op" : "Parameter", - "outputs" : ["Parameter_16893"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14287", - "op" : "Parameter", - "outputs" : ["Parameter_14287"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16069", - "op" : "Parameter", - "outputs" : ["Parameter_16069"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15041", - "op" : "Parameter", - "outputs" : ["Parameter_15041"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16313", - "op" : "Parameter", - "outputs" : ["Parameter_16313"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14348", - "op" : "Parameter", - "outputs" : ["Parameter_14348"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16067", - "op" : "Parameter", - "outputs" : ["Parameter_16067"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16992", - "op" : "Parameter", - "outputs" : ["Parameter_16992"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16066", - "op" : "Parameter", - "outputs" : ["Parameter_16066"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16371", - "op" : "Parameter", - "outputs" : ["Parameter_16371"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16063", - "op" : "Parameter", - "outputs" : ["Parameter_16063"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16062", - "op" : "Parameter", - "outputs" : ["Parameter_16062"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13903", - "op" : "Parameter", - "outputs" : ["Parameter_13903"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15812", - "op" : "Parameter", - "outputs" : ["Parameter_15812"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16061", - "op" : "Parameter", - "outputs" : ["Parameter_16061"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16060", - "op" : "Parameter", - "outputs" : ["Parameter_16060"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16059", - "op" : "Parameter", - "outputs" : ["Parameter_16059"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16054", - "op" : "Parameter", - "outputs" : ["Parameter_16054"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16053", - "op" : "Parameter", - "outputs" : ["Parameter_16053"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16051", - "op" : "Parameter", - "outputs" : ["Parameter_16051"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17732", - "op" : "Parameter", - "outputs" : ["Parameter_17732"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16050", - "op" : "Parameter", - "outputs" : ["Parameter_16050"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16046", - "op" : "Parameter", - "outputs" : ["Parameter_16046"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16207", - "op" : "Parameter", - "outputs" : ["Parameter_16207"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16045", - "op" : "Parameter", - "outputs" : ["Parameter_16045"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16044", - "op" : "Parameter", - "outputs" : ["Parameter_16044"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16638", - "op" : "Parameter", - "outputs" : ["Parameter_16638"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16043", - "op" : "Parameter", - "outputs" : ["Parameter_16043"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16040", - "op" : "Parameter", - "outputs" : ["Parameter_16040"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15790", - "op" : "Parameter", - "outputs" : ["Parameter_15790"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16038", - "op" : "Parameter", - "outputs" : ["Parameter_16038"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14722", - "op" : "Parameter", - "outputs" : ["Parameter_14722"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17936", - "op" : "Parameter", - "outputs" : ["Parameter_17936"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16037", - "op" : "Parameter", - "outputs" : ["Parameter_16037"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16757", - "op" : "Parameter", - "outputs" : ["Parameter_16757"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16036", - "op" : "Parameter", - "outputs" : ["Parameter_16036"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15662", - "op" : "Parameter", - "outputs" : ["Parameter_15662"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16031", - "op" : "Parameter", - "outputs" : ["Parameter_16031"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14440", - "op" : "Parameter", - "outputs" : ["Parameter_14440"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16030", - "op" : "Parameter", - "outputs" : ["Parameter_16030"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16028", - "op" : "Parameter", - "outputs" : ["Parameter_16028"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16027", - "op" : "Parameter", - "outputs" : ["Parameter_16027"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16026", - "op" : "Parameter", - "outputs" : ["Parameter_16026"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15353", - "op" : "Parameter", - "outputs" : ["Parameter_15353"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16024", - "op" : "Parameter", - "outputs" : ["Parameter_16024"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16022", - "op" : "Parameter", - "outputs" : ["Parameter_16022"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17411", - "op" : "Parameter", - "outputs" : ["Parameter_17411"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15731", - "op" : "Parameter", - "outputs" : ["Parameter_15731"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18389", - "op" : "Parameter", - "outputs" : ["Parameter_18389"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16021", - "op" : "Parameter", - "outputs" : ["Parameter_16021"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18277", - "op" : "Parameter", - "outputs" : ["Parameter_18277"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17164", - "op" : "Parameter", - "outputs" : ["Parameter_17164"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16815", - "op" : "Parameter", - "outputs" : ["Parameter_16815"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14600", - "op" : "Parameter", - "outputs" : ["Parameter_14600"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17054", - "op" : "Parameter", - "outputs" : ["Parameter_17054"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16020", - "op" : "Parameter", - "outputs" : ["Parameter_16020"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16015", - "op" : "Parameter", - "outputs" : ["Parameter_16015"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16014", - "op" : "Parameter", - "outputs" : ["Parameter_16014"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17362", - "op" : "Parameter", - "outputs" : ["Parameter_17362"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15334", - "op" : "Parameter", - "outputs" : ["Parameter_15334"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18321", - "op" : "Parameter", - "outputs" : ["Parameter_18321"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16013", - "op" : "Parameter", - "outputs" : ["Parameter_16013"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16012", - "op" : "Parameter", - "outputs" : ["Parameter_16012"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16010", - "op" : "Parameter", - "outputs" : ["Parameter_16010"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16009", - "op" : "Parameter", - "outputs" : ["Parameter_16009"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16008", - "op" : "Parameter", - "outputs" : ["Parameter_16008"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17689", - "op" : "Parameter", - "outputs" : ["Parameter_17689"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16007", - "op" : "Parameter", - "outputs" : ["Parameter_16007"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16006", - "op" : "Parameter", - "outputs" : ["Parameter_16006"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16005", - "op" : "Parameter", - "outputs" : ["Parameter_16005"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16828", - "op" : "Parameter", - "outputs" : ["Parameter_16828"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14298", - "op" : "Parameter", - "outputs" : ["Parameter_14298"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16004", - "op" : "Parameter", - "outputs" : ["Parameter_16004"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15080", - "op" : "Parameter", - "outputs" : ["Parameter_15080"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16616", - "op" : "Parameter", - "outputs" : ["Parameter_16616"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16248", - "op" : "Parameter", - "outputs" : ["Parameter_16248"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16002", - "op" : "Parameter", - "outputs" : ["Parameter_16002"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16927", - "op" : "Parameter", - "outputs" : ["Parameter_16927"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16001", - "op" : "Parameter", - "outputs" : ["Parameter_16001"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16925", - "op" : "Parameter", - "outputs" : ["Parameter_16925"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15999", - "op" : "Parameter", - "outputs" : ["Parameter_15999"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15998", - "op" : "Parameter", - "outputs" : ["Parameter_15998"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15997", - "op" : "Parameter", - "outputs" : ["Parameter_15997"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13914", - "op" : "Parameter", - "outputs" : ["Parameter_13914"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14687", - "op" : "Parameter", - "outputs" : ["Parameter_14687"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15996", - "op" : "Parameter", - "outputs" : ["Parameter_15996"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15995", - "op" : "Parameter", - "outputs" : ["Parameter_15995"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17496", - "op" : "Parameter", - "outputs" : ["Parameter_17496"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16733", - "op" : "Parameter", - "outputs" : ["Parameter_16733"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15991", - "op" : "Parameter", - "outputs" : ["Parameter_15991"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14584", - "op" : "Parameter", - "outputs" : ["Parameter_14584"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15987", - "op" : "Parameter", - "outputs" : ["Parameter_15987"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15985", - "op" : "Parameter", - "outputs" : ["Parameter_15985"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15984", - "op" : "Parameter", - "outputs" : ["Parameter_15984"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15981", - "op" : "Parameter", - "outputs" : ["Parameter_15981"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15980", - "op" : "Parameter", - "outputs" : ["Parameter_15980"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14346", - "op" : "Parameter", - "outputs" : ["Parameter_14346"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15979", - "op" : "Parameter", - "outputs" : ["Parameter_15979"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15978", - "op" : "Parameter", - "outputs" : ["Parameter_15978"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15976", - "op" : "Parameter", - "outputs" : ["Parameter_15976"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15974", - "op" : "Parameter", - "outputs" : ["Parameter_15974"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15973", - "op" : "Parameter", - "outputs" : ["Parameter_15973"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15972", - "op" : "Parameter", - "outputs" : ["Parameter_15972"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15969", - "op" : "Parameter", - "outputs" : ["Parameter_15969"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16714", - "op" : "Parameter", - "outputs" : ["Parameter_16714"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15993", - "op" : "Parameter", - "outputs" : ["Parameter_15993"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15619", - "op" : "Parameter", - "outputs" : ["Parameter_15619"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15968", - "op" : "Parameter", - "outputs" : ["Parameter_15968"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14611", - "op" : "Parameter", - "outputs" : ["Parameter_14611"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15967", - "op" : "Parameter", - "outputs" : ["Parameter_15967"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15965", - "op" : "Parameter", - "outputs" : ["Parameter_15965"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14845", - "op" : "Parameter", - "outputs" : ["Parameter_14845"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15961", - "op" : "Parameter", - "outputs" : ["Parameter_15961"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15959", - "op" : "Parameter", - "outputs" : ["Parameter_15959"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16553", - "op" : "Parameter", - "outputs" : ["Parameter_16553"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15957", - "op" : "Parameter", - "outputs" : ["Parameter_15957"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15956", - "op" : "Parameter", - "outputs" : ["Parameter_15956"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14147", - "op" : "Parameter", - "outputs" : ["Parameter_14147"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18212", - "op" : "Parameter", - "outputs" : ["Parameter_18212"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15955", - "op" : "Parameter", - "outputs" : ["Parameter_15955"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17035", - "op" : "Parameter", - "outputs" : ["Parameter_17035"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15954", - "op" : "Parameter", - "outputs" : ["Parameter_15954"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16736", - "op" : "Parameter", - "outputs" : ["Parameter_16736"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15953", - "op" : "Parameter", - "outputs" : ["Parameter_15953"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14757", - "op" : "Parameter", - "outputs" : ["Parameter_14757"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15952", - "op" : "Parameter", - "outputs" : ["Parameter_15952"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18327", - "op" : "Parameter", - "outputs" : ["Parameter_18327"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15951", - "op" : "Parameter", - "outputs" : ["Parameter_15951"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15949", - "op" : "Parameter", - "outputs" : ["Parameter_15949"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17297", - "op" : "Parameter", - "outputs" : ["Parameter_17297"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17047", - "op" : "Parameter", - "outputs" : ["Parameter_17047"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15269", - "op" : "Parameter", - "outputs" : ["Parameter_15269"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15948", - "op" : "Parameter", - "outputs" : ["Parameter_15948"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15945", - "op" : "Parameter", - "outputs" : ["Parameter_15945"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15944", - "op" : "Parameter", - "outputs" : ["Parameter_15944"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15943", - "op" : "Parameter", - "outputs" : ["Parameter_15943"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14347", - "op" : "Parameter", - "outputs" : ["Parameter_14347"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17624", - "op" : "Parameter", - "outputs" : ["Parameter_17624"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15941", - "op" : "Parameter", - "outputs" : ["Parameter_15941"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15940", - "op" : "Parameter", - "outputs" : ["Parameter_15940"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15938", - "op" : "Parameter", - "outputs" : ["Parameter_15938"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14493", - "op" : "Parameter", - "outputs" : ["Parameter_14493"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16862", - "op" : "Parameter", - "outputs" : ["Parameter_16862"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15936", - "op" : "Parameter", - "outputs" : ["Parameter_15936"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15827", - "op" : "Parameter", - "outputs" : ["Parameter_15827"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16860", - "op" : "Parameter", - "outputs" : ["Parameter_16860"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15036", - "op" : "Parameter", - "outputs" : ["Parameter_15036"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15934", - "op" : "Parameter", - "outputs" : ["Parameter_15934"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15933", - "op" : "Parameter", - "outputs" : ["Parameter_15933"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15931", - "op" : "Parameter", - "outputs" : ["Parameter_15931"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15930", - "op" : "Parameter", - "outputs" : ["Parameter_15930"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17828", - "op" : "Parameter", - "outputs" : ["Parameter_17828"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15929", - "op" : "Parameter", - "outputs" : ["Parameter_15929"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16649", - "op" : "Parameter", - "outputs" : ["Parameter_16649"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15928", - "op" : "Parameter", - "outputs" : ["Parameter_15928"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15554", - "op" : "Parameter", - "outputs" : ["Parameter_15554"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17431", - "op" : "Parameter", - "outputs" : ["Parameter_17431"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17275", - "op" : "Parameter", - "outputs" : ["Parameter_17275"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17025", - "op" : "Parameter", - "outputs" : ["Parameter_17025"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15926", - "op" : "Parameter", - "outputs" : ["Parameter_15926"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15920", - "op" : "Parameter", - "outputs" : ["Parameter_15920"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15918", - "op" : "Parameter", - "outputs" : ["Parameter_15918"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15916", - "op" : "Parameter", - "outputs" : ["Parameter_15916"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15914", - "op" : "Parameter", - "outputs" : ["Parameter_15914"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15912", - "op" : "Parameter", - "outputs" : ["Parameter_15912"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15910", - "op" : "Parameter", - "outputs" : ["Parameter_15910"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15908", - "op" : "Parameter", - "outputs" : ["Parameter_15908"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15907", - "op" : "Parameter", - "outputs" : ["Parameter_15907"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16845", - "op" : "Parameter", - "outputs" : ["Parameter_16845"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16627", - "op" : "Parameter", - "outputs" : ["Parameter_16627"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15906", - "op" : "Parameter", - "outputs" : ["Parameter_15906"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15532", - "op" : "Parameter", - "outputs" : ["Parameter_15532"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17409", - "op" : "Parameter", - "outputs" : ["Parameter_17409"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15905", - "op" : "Parameter", - "outputs" : ["Parameter_15905"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14358", - "op" : "Parameter", - "outputs" : ["Parameter_14358"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17678", - "op" : "Parameter", - "outputs" : ["Parameter_17678"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18257", - "op" : "Parameter", - "outputs" : ["Parameter_18257"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15904", - "op" : "Parameter", - "outputs" : ["Parameter_15904"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15903", - "op" : "Parameter", - "outputs" : ["Parameter_15903"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15900", - "op" : "Parameter", - "outputs" : ["Parameter_15900"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15898", - "op" : "Parameter", - "outputs" : ["Parameter_15898"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15896", - "op" : "Parameter", - "outputs" : ["Parameter_15896"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15895", - "op" : "Parameter", - "outputs" : ["Parameter_15895"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15893", - "op" : "Parameter", - "outputs" : ["Parameter_15893"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15342", - "op" : "Parameter", - "outputs" : ["Parameter_15342"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15892", - "op" : "Parameter", - "outputs" : ["Parameter_15892"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17281", - "op" : "Parameter", - "outputs" : ["Parameter_17281"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18391", - "op" : "Parameter", - "outputs" : ["Parameter_18391"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15891", - "op" : "Parameter", - "outputs" : ["Parameter_15891"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14158", - "op" : "Parameter", - "outputs" : ["Parameter_14158"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18147", - "op" : "Parameter", - "outputs" : ["Parameter_18147"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15890", - "op" : "Parameter", - "outputs" : ["Parameter_15890"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16970", - "op" : "Parameter", - "outputs" : ["Parameter_16970"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14577", - "op" : "Parameter", - "outputs" : ["Parameter_14577"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15889", - "op" : "Parameter", - "outputs" : ["Parameter_15889"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16671", - "op" : "Parameter", - "outputs" : ["Parameter_16671"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15888", - "op" : "Parameter", - "outputs" : ["Parameter_15888"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15887", - "op" : "Parameter", - "outputs" : ["Parameter_15887"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15886", - "op" : "Parameter", - "outputs" : ["Parameter_15886"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15884", - "op" : "Parameter", - "outputs" : ["Parameter_15884"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17232", - "op" : "Parameter", - "outputs" : ["Parameter_17232"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16982", - "op" : "Parameter", - "outputs" : ["Parameter_16982"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15883", - "op" : "Parameter", - "outputs" : ["Parameter_15883"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15882", - "op" : "Parameter", - "outputs" : ["Parameter_15882"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16104", - "op" : "Parameter", - "outputs" : ["Parameter_16104"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15879", - "op" : "Parameter", - "outputs" : ["Parameter_15879"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15878", - "op" : "Parameter", - "outputs" : ["Parameter_15878"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17559", - "op" : "Parameter", - "outputs" : ["Parameter_17559"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15877", - "op" : "Parameter", - "outputs" : ["Parameter_15877"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17504", - "op" : "Parameter", - "outputs" : ["Parameter_17504"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15875", - "op" : "Parameter", - "outputs" : ["Parameter_15875"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15873", - "op" : "Parameter", - "outputs" : ["Parameter_15873"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15871", - "op" : "Parameter", - "outputs" : ["Parameter_15871"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15762", - "op" : "Parameter", - "outputs" : ["Parameter_15762"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15869", - "op" : "Parameter", - "outputs" : ["Parameter_15869"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16176", - "op" : "Parameter", - "outputs" : ["Parameter_16176"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15868", - "op" : "Parameter", - "outputs" : ["Parameter_15868"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17668", - "op" : "Parameter", - "outputs" : ["Parameter_17668"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16544", - "op" : "Parameter", - "outputs" : ["Parameter_16544"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17766", - "op" : "Parameter", - "outputs" : ["Parameter_17766"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15867", - "op" : "Parameter", - "outputs" : ["Parameter_15867"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15617", - "op" : "Parameter", - "outputs" : ["Parameter_15617"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14993", - "op" : "Parameter", - "outputs" : ["Parameter_14993"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13936", - "op" : "Parameter", - "outputs" : ["Parameter_13936"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15866", - "op" : "Parameter", - "outputs" : ["Parameter_15866"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17263", - "op" : "Parameter", - "outputs" : ["Parameter_17263"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15865", - "op" : "Parameter", - "outputs" : ["Parameter_15865"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17763", - "op" : "Parameter", - "outputs" : ["Parameter_17763"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15864", - "op" : "Parameter", - "outputs" : ["Parameter_15864"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14901", - "op" : "Parameter", - "outputs" : ["Parameter_14901"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16584", - "op" : "Parameter", - "outputs" : ["Parameter_16584"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14928", - "op" : "Parameter", - "outputs" : ["Parameter_14928"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13800", - "op" : "Parameter", - "outputs" : ["Parameter_13800"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15863", - "op" : "Parameter", - "outputs" : ["Parameter_15863"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15489", - "op" : "Parameter", - "outputs" : ["Parameter_15489"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15860", - "op" : "Parameter", - "outputs" : ["Parameter_15860"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15859", - "op" : "Parameter", - "outputs" : ["Parameter_15859"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15858", - "op" : "Parameter", - "outputs" : ["Parameter_15858"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15857", - "op" : "Parameter", - "outputs" : ["Parameter_15857"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16097", - "op" : "Parameter", - "outputs" : ["Parameter_16097"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16471", - "op" : "Parameter", - "outputs" : ["Parameter_16471"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16140", - "op" : "Parameter", - "outputs" : ["Parameter_16140"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15838", - "op" : "Parameter", - "outputs" : ["Parameter_15838"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15854", - "op" : "Parameter", - "outputs" : ["Parameter_15854"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14869", - "op" : "Parameter", - "outputs" : ["Parameter_14869"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17632", - "op" : "Parameter", - "outputs" : ["Parameter_17632"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15852", - "op" : "Parameter", - "outputs" : ["Parameter_15852"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13801", - "op" : "Parameter", - "outputs" : ["Parameter_13801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17621", - "op" : "Parameter", - "outputs" : ["Parameter_17621"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15850", - "op" : "Parameter", - "outputs" : ["Parameter_15850"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15849", - "op" : "Parameter", - "outputs" : ["Parameter_15849"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16443", - "op" : "Parameter", - "outputs" : ["Parameter_16443"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15848", - "op" : "Parameter", - "outputs" : ["Parameter_15848"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16810", - "op" : "Parameter", - "outputs" : ["Parameter_16810"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15847", - "op" : "Parameter", - "outputs" : ["Parameter_15847"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15846", - "op" : "Parameter", - "outputs" : ["Parameter_15846"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16554", - "op" : "Parameter", - "outputs" : ["Parameter_16554"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15845", - "op" : "Parameter", - "outputs" : ["Parameter_15845"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15595", - "op" : "Parameter", - "outputs" : ["Parameter_15595"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15844", - "op" : "Parameter", - "outputs" : ["Parameter_15844"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15622", - "op" : "Parameter", - "outputs" : ["Parameter_15622"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15843", - "op" : "Parameter", - "outputs" : ["Parameter_15843"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15841", - "op" : "Parameter", - "outputs" : ["Parameter_15841"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15840", - "op" : "Parameter", - "outputs" : ["Parameter_15840"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17613", - "op" : "Parameter", - "outputs" : ["Parameter_17613"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16797", - "op" : "Parameter", - "outputs" : ["Parameter_16797"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16065", - "op" : "Parameter", - "outputs" : ["Parameter_16065"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15833", - "op" : "Parameter", - "outputs" : ["Parameter_15833"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17156", - "op" : "Parameter", - "outputs" : ["Parameter_17156"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15832", - "op" : "Parameter", - "outputs" : ["Parameter_15832"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17800", - "op" : "Parameter", - "outputs" : ["Parameter_17800"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17155", - "op" : "Parameter", - "outputs" : ["Parameter_17155"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15831", - "op" : "Parameter", - "outputs" : ["Parameter_15831"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18266", - "op" : "Parameter", - "outputs" : ["Parameter_18266"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15830", - "op" : "Parameter", - "outputs" : ["Parameter_15830"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15828", - "op" : "Parameter", - "outputs" : ["Parameter_15828"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15277", - "op" : "Parameter", - "outputs" : ["Parameter_15277"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16908", - "op" : "Parameter", - "outputs" : ["Parameter_16908"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15826", - "op" : "Parameter", - "outputs" : ["Parameter_15826"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15825", - "op" : "Parameter", - "outputs" : ["Parameter_15825"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14411", - "op" : "Parameter", - "outputs" : ["Parameter_14411"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13910", - "op" : "Parameter", - "outputs" : ["Parameter_13910"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15823", - "op" : "Parameter", - "outputs" : ["Parameter_15823"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14841", - "op" : "Parameter", - "outputs" : ["Parameter_14841"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15821", - "op" : "Parameter", - "outputs" : ["Parameter_15821"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15820", - "op" : "Parameter", - "outputs" : ["Parameter_15820"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17702", - "op" : "Parameter", - "outputs" : ["Parameter_17702"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15819", - "op" : "Parameter", - "outputs" : ["Parameter_15819"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15817", - "op" : "Parameter", - "outputs" : ["Parameter_15817"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16039", - "op" : "Parameter", - "outputs" : ["Parameter_16039"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15813", - "op" : "Parameter", - "outputs" : ["Parameter_15813"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17494", - "op" : "Parameter", - "outputs" : ["Parameter_17494"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17439", - "op" : "Parameter", - "outputs" : ["Parameter_17439"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14353", - "op" : "Parameter", - "outputs" : ["Parameter_14353"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16748", - "op" : "Parameter", - "outputs" : ["Parameter_16748"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15810", - "op" : "Parameter", - "outputs" : ["Parameter_15810"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15806", - "op" : "Parameter", - "outputs" : ["Parameter_15806"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15697", - "op" : "Parameter", - "outputs" : ["Parameter_15697"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15804", - "op" : "Parameter", - "outputs" : ["Parameter_15804"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16111", - "op" : "Parameter", - "outputs" : ["Parameter_16111"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16033", - "op" : "Parameter", - "outputs" : ["Parameter_16033"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15803", - "op" : "Parameter", - "outputs" : ["Parameter_15803"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16479", - "op" : "Parameter", - "outputs" : ["Parameter_16479"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15802", - "op" : "Parameter", - "outputs" : ["Parameter_15802"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15552", - "op" : "Parameter", - "outputs" : ["Parameter_15552"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13947", - "op" : "Parameter", - "outputs" : ["Parameter_13947"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15801", - "op" : "Parameter", - "outputs" : ["Parameter_15801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15796", - "op" : "Parameter", - "outputs" : ["Parameter_15796"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17476", - "op" : "Parameter", - "outputs" : ["Parameter_17476"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18388", - "op" : "Parameter", - "outputs" : ["Parameter_18388"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15794", - "op" : "Parameter", - "outputs" : ["Parameter_15794"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15793", - "op" : "Parameter", - "outputs" : ["Parameter_15793"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14942", - "op" : "Parameter", - "outputs" : ["Parameter_14942"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16032", - "op" : "Parameter", - "outputs" : ["Parameter_16032"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16406", - "op" : "Parameter", - "outputs" : ["Parameter_16406"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15789", - "op" : "Parameter", - "outputs" : ["Parameter_15789"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17567", - "op" : "Parameter", - "outputs" : ["Parameter_17567"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15788", - "op" : "Parameter", - "outputs" : ["Parameter_15788"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15787", - "op" : "Parameter", - "outputs" : ["Parameter_15787"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17556", - "op" : "Parameter", - "outputs" : ["Parameter_17556"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15785", - "op" : "Parameter", - "outputs" : ["Parameter_15785"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15784", - "op" : "Parameter", - "outputs" : ["Parameter_15784"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16378", - "op" : "Parameter", - "outputs" : ["Parameter_16378"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15783", - "op" : "Parameter", - "outputs" : ["Parameter_15783"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16745", - "op" : "Parameter", - "outputs" : ["Parameter_16745"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15962", - "op" : "Parameter", - "outputs" : ["Parameter_15962"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15782", - "op" : "Parameter", - "outputs" : ["Parameter_15782"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15778", - "op" : "Parameter", - "outputs" : ["Parameter_15778"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16684", - "op" : "Parameter", - "outputs" : ["Parameter_16684"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15777", - "op" : "Parameter", - "outputs" : ["Parameter_15777"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15776", - "op" : "Parameter", - "outputs" : ["Parameter_15776"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15775", - "op" : "Parameter", - "outputs" : ["Parameter_15775"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17548", - "op" : "Parameter", - "outputs" : ["Parameter_17548"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15774", - "op" : "Parameter", - "outputs" : ["Parameter_15774"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15772", - "op" : "Parameter", - "outputs" : ["Parameter_15772"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15771", - "op" : "Parameter", - "outputs" : ["Parameter_15771"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16722", - "op" : "Parameter", - "outputs" : ["Parameter_16722"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16972", - "op" : "Parameter", - "outputs" : ["Parameter_16972"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14605", - "op" : "Parameter", - "outputs" : ["Parameter_14605"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17562", - "op" : "Parameter", - "outputs" : ["Parameter_17562"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15769", - "op" : "Parameter", - "outputs" : ["Parameter_15769"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14127", - "op" : "Parameter", - "outputs" : ["Parameter_14127"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16000", - "op" : "Parameter", - "outputs" : ["Parameter_16000"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15768", - "op" : "Parameter", - "outputs" : ["Parameter_15768"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15765", - "op" : "Parameter", - "outputs" : ["Parameter_15765"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15209", - "op" : "Parameter", - "outputs" : ["Parameter_15209"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15764", - "op" : "Parameter", - "outputs" : ["Parameter_15764"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15761", - "op" : "Parameter", - "outputs" : ["Parameter_15761"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17456", - "op" : "Parameter", - "outputs" : ["Parameter_17456"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15760", - "op" : "Parameter", - "outputs" : ["Parameter_15760"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13921", - "op" : "Parameter", - "outputs" : ["Parameter_13921"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16840", - "op" : "Parameter", - "outputs" : ["Parameter_16840"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15759", - "op" : "Parameter", - "outputs" : ["Parameter_15759"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13920", - "op" : "Parameter", - "outputs" : ["Parameter_13920"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17847", - "op" : "Parameter", - "outputs" : ["Parameter_17847"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15758", - "op" : "Parameter", - "outputs" : ["Parameter_15758"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15756", - "op" : "Parameter", - "outputs" : ["Parameter_15756"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14916", - "op" : "Parameter", - "outputs" : ["Parameter_14916"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15755", - "op" : "Parameter", - "outputs" : ["Parameter_15755"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17637", - "op" : "Parameter", - "outputs" : ["Parameter_17637"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16641", - "op" : "Parameter", - "outputs" : ["Parameter_16641"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15754", - "op" : "Parameter", - "outputs" : ["Parameter_15754"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16184", - "op" : "Parameter", - "outputs" : ["Parameter_16184"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15753", - "op" : "Parameter", - "outputs" : ["Parameter_15753"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17433", - "op" : "Parameter", - "outputs" : ["Parameter_17433"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18106", - "op" : "Parameter", - "outputs" : ["Parameter_18106"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15751", - "op" : "Parameter", - "outputs" : ["Parameter_15751"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15750", - "op" : "Parameter", - "outputs" : ["Parameter_15750"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15748", - "op" : "Parameter", - "outputs" : ["Parameter_15748"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15747", - "op" : "Parameter", - "outputs" : ["Parameter_15747"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15746", - "op" : "Parameter", - "outputs" : ["Parameter_15746"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15745", - "op" : "Parameter", - "outputs" : ["Parameter_15745"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14561", - "op" : "Parameter", - "outputs" : ["Parameter_14561"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15744", - "op" : "Parameter", - "outputs" : ["Parameter_15744"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17248", - "op" : "Parameter", - "outputs" : ["Parameter_17248"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15990", - "op" : "Parameter", - "outputs" : ["Parameter_15990"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15743", - "op" : "Parameter", - "outputs" : ["Parameter_15743"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15742", - "op" : "Parameter", - "outputs" : ["Parameter_15742"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15741", - "op" : "Parameter", - "outputs" : ["Parameter_15741"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15146", - "op" : "Parameter", - "outputs" : ["Parameter_15146"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16664", - "op" : "Parameter", - "outputs" : ["Parameter_16664"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18198", - "op" : "Parameter", - "outputs" : ["Parameter_18198"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15738", - "op" : "Parameter", - "outputs" : ["Parameter_15738"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17538", - "op" : "Parameter", - "outputs" : ["Parameter_17538"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15736", - "op" : "Parameter", - "outputs" : ["Parameter_15736"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15734", - "op" : "Parameter", - "outputs" : ["Parameter_15734"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17419", - "op" : "Parameter", - "outputs" : ["Parameter_17419"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14935", - "op" : "Parameter", - "outputs" : ["Parameter_14935"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15730", - "op" : "Parameter", - "outputs" : ["Parameter_15730"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15729", - "op" : "Parameter", - "outputs" : ["Parameter_15729"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16228", - "op" : "Parameter", - "outputs" : ["Parameter_16228"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17310", - "op" : "Parameter", - "outputs" : ["Parameter_17310"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17889", - "op" : "Parameter", - "outputs" : ["Parameter_17889"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15728", - "op" : "Parameter", - "outputs" : ["Parameter_15728"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15725", - "op" : "Parameter", - "outputs" : ["Parameter_15725"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15134", - "op" : "Parameter", - "outputs" : ["Parameter_15134"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17585", - "op" : "Parameter", - "outputs" : ["Parameter_17585"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15720", - "op" : "Parameter", - "outputs" : ["Parameter_15720"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15719", - "op" : "Parameter", - "outputs" : ["Parameter_15719"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16680", - "op" : "Parameter", - "outputs" : ["Parameter_16680"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15897", - "op" : "Parameter", - "outputs" : ["Parameter_15897"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15717", - "op" : "Parameter", - "outputs" : ["Parameter_15717"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15715", - "op" : "Parameter", - "outputs" : ["Parameter_15715"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15714", - "op" : "Parameter", - "outputs" : ["Parameter_15714"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15492", - "op" : "Parameter", - "outputs" : ["Parameter_15492"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15713", - "op" : "Parameter", - "outputs" : ["Parameter_15713"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15712", - "op" : "Parameter", - "outputs" : ["Parameter_15712"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16612", - "op" : "Parameter", - "outputs" : ["Parameter_16612"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14879", - "op" : "Parameter", - "outputs" : ["Parameter_14879"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17990", - "op" : "Parameter", - "outputs" : ["Parameter_17990"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15711", - "op" : "Parameter", - "outputs" : ["Parameter_15711"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16611", - "op" : "Parameter", - "outputs" : ["Parameter_16611"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15710", - "op" : "Parameter", - "outputs" : ["Parameter_15710"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15709", - "op" : "Parameter", - "outputs" : ["Parameter_15709"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15708", - "op" : "Parameter", - "outputs" : ["Parameter_15708"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16518", - "op" : "Parameter", - "outputs" : ["Parameter_16518"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15707", - "op" : "Parameter", - "outputs" : ["Parameter_15707"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14401", - "op" : "Parameter", - "outputs" : ["Parameter_14401"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15706", - "op" : "Parameter", - "outputs" : ["Parameter_15706"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15705", - "op" : "Parameter", - "outputs" : ["Parameter_15705"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17180", - "op" : "Parameter", - "outputs" : ["Parameter_17180"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17550", - "op" : "Parameter", - "outputs" : ["Parameter_17550"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17759", - "op" : "Parameter", - "outputs" : ["Parameter_17759"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16657", - "op" : "Parameter", - "outputs" : ["Parameter_16657"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16907", - "op" : "Parameter", - "outputs" : ["Parameter_16907"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15704", - "op" : "Parameter", - "outputs" : ["Parameter_15704"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15989", - "op" : "Parameter", - "outputs" : ["Parameter_15989"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17026", - "op" : "Parameter", - "outputs" : ["Parameter_17026"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14251", - "op" : "Parameter", - "outputs" : ["Parameter_14251"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15702", - "op" : "Parameter", - "outputs" : ["Parameter_15702"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14283", - "op" : "Parameter", - "outputs" : ["Parameter_14283"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14761", - "op" : "Parameter", - "outputs" : ["Parameter_14761"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17267", - "op" : "Parameter", - "outputs" : ["Parameter_17267"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15701", - "op" : "Parameter", - "outputs" : ["Parameter_15701"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15700", - "op" : "Parameter", - "outputs" : ["Parameter_15700"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15699", - "op" : "Parameter", - "outputs" : ["Parameter_15699"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15698", - "op" : "Parameter", - "outputs" : ["Parameter_15698"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15696", - "op" : "Parameter", - "outputs" : ["Parameter_15696"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17391", - "op" : "Parameter", - "outputs" : ["Parameter_17391"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15695", - "op" : "Parameter", - "outputs" : ["Parameter_15695"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13932", - "op" : "Parameter", - "outputs" : ["Parameter_13932"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16775", - "op" : "Parameter", - "outputs" : ["Parameter_16775"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15694", - "op" : "Parameter", - "outputs" : ["Parameter_15694"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13931", - "op" : "Parameter", - "outputs" : ["Parameter_13931"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17782", - "op" : "Parameter", - "outputs" : ["Parameter_17782"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15692", - "op" : "Parameter", - "outputs" : ["Parameter_15692"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17412", - "op" : "Parameter", - "outputs" : ["Parameter_17412"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15691", - "op" : "Parameter", - "outputs" : ["Parameter_15691"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17779", - "op" : "Parameter", - "outputs" : ["Parameter_17779"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15690", - "op" : "Parameter", - "outputs" : ["Parameter_15690"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17794", - "op" : "Parameter", - "outputs" : ["Parameter_17794"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15689", - "op" : "Parameter", - "outputs" : ["Parameter_15689"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16011", - "op" : "Parameter", - "outputs" : ["Parameter_16011"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16119", - "op" : "Parameter", - "outputs" : ["Parameter_16119"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15688", - "op" : "Parameter", - "outputs" : ["Parameter_15688"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15687", - "op" : "Parameter", - "outputs" : ["Parameter_15687"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15111", - "op" : "Parameter", - "outputs" : ["Parameter_15111"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16016", - "op" : "Parameter", - "outputs" : ["Parameter_16016"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15685", - "op" : "Parameter", - "outputs" : ["Parameter_15685"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15683", - "op" : "Parameter", - "outputs" : ["Parameter_15683"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15050", - "op" : "Parameter", - "outputs" : ["Parameter_15050"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15681", - "op" : "Parameter", - "outputs" : ["Parameter_15681"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14870", - "op" : "Parameter", - "outputs" : ["Parameter_14870"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15680", - "op" : "Parameter", - "outputs" : ["Parameter_15680"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17474", - "op" : "Parameter", - "outputs" : ["Parameter_17474"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15970", - "op" : "Parameter", - "outputs" : ["Parameter_15970"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15679", - "op" : "Parameter", - "outputs" : ["Parameter_15679"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16291", - "op" : "Parameter", - "outputs" : ["Parameter_16291"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15677", - "op" : "Parameter", - "outputs" : ["Parameter_15677"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17486", - "op" : "Parameter", - "outputs" : ["Parameter_17486"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16599", - "op" : "Parameter", - "outputs" : ["Parameter_16599"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15673", - "op" : "Parameter", - "outputs" : ["Parameter_15673"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17364", - "op" : "Parameter", - "outputs" : ["Parameter_17364"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17300", - "op" : "Parameter", - "outputs" : ["Parameter_17300"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15670", - "op" : "Parameter", - "outputs" : ["Parameter_15670"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14339", - "op" : "Parameter", - "outputs" : ["Parameter_14339"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17471", - "op" : "Parameter", - "outputs" : ["Parameter_17471"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15669", - "op" : "Parameter", - "outputs" : ["Parameter_15669"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15664", - "op" : "Parameter", - "outputs" : ["Parameter_15664"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17695", - "op" : "Parameter", - "outputs" : ["Parameter_17695"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15660", - "op" : "Parameter", - "outputs" : ["Parameter_15660"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17520", - "op" : "Parameter", - "outputs" : ["Parameter_17520"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15657", - "op" : "Parameter", - "outputs" : ["Parameter_15657"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17426", - "op" : "Parameter", - "outputs" : ["Parameter_17426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17161", - "op" : "Parameter", - "outputs" : ["Parameter_17161"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15019", - "op" : "Parameter", - "outputs" : ["Parameter_15019"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15656", - "op" : "Parameter", - "outputs" : ["Parameter_15656"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15655", - "op" : "Parameter", - "outputs" : ["Parameter_15655"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15654", - "op" : "Parameter", - "outputs" : ["Parameter_15654"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15653", - "op" : "Parameter", - "outputs" : ["Parameter_15653"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15652", - "op" : "Parameter", - "outputs" : ["Parameter_15652"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15650", - "op" : "Parameter", - "outputs" : ["Parameter_15650"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15649", - "op" : "Parameter", - "outputs" : ["Parameter_15649"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17278", - "op" : "Parameter", - "outputs" : ["Parameter_17278"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15648", - "op" : "Parameter", - "outputs" : ["Parameter_15648"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17501", - "op" : "Parameter", - "outputs" : ["Parameter_17501"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15647", - "op" : "Parameter", - "outputs" : ["Parameter_15647"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15641", - "op" : "Parameter", - "outputs" : ["Parameter_15641"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16592", - "op" : "Parameter", - "outputs" : ["Parameter_16592"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15639", - "op" : "Parameter", - "outputs" : ["Parameter_15639"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15924", - "op" : "Parameter", - "outputs" : ["Parameter_15924"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16465", - "op" : "Parameter", - "outputs" : ["Parameter_16465"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15870", - "op" : "Parameter", - "outputs" : ["Parameter_15870"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15638", - "op" : "Parameter", - "outputs" : ["Parameter_15638"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17202", - "op" : "Parameter", - "outputs" : ["Parameter_17202"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15636", - "op" : "Parameter", - "outputs" : ["Parameter_15636"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18071", - "op" : "Parameter", - "outputs" : ["Parameter_18071"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15635", - "op" : "Parameter", - "outputs" : ["Parameter_15635"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15634", - "op" : "Parameter", - "outputs" : ["Parameter_15634"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17699", - "op" : "Parameter", - "outputs" : ["Parameter_17699"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16713", - "op" : "Parameter", - "outputs" : ["Parameter_16713"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15631", - "op" : "Parameter", - "outputs" : ["Parameter_15631"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15629", - "op" : "Parameter", - "outputs" : ["Parameter_15629"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13942", - "op" : "Parameter", - "outputs" : ["Parameter_13942"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15628", - "op" : "Parameter", - "outputs" : ["Parameter_15628"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17413", - "op" : "Parameter", - "outputs" : ["Parameter_17413"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18350", - "op" : "Parameter", - "outputs" : ["Parameter_18350"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15616", - "op" : "Parameter", - "outputs" : ["Parameter_15616"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14419", - "op" : "Parameter", - "outputs" : ["Parameter_14419"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15615", - "op" : "Parameter", - "outputs" : ["Parameter_15615"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17118", - "op" : "Parameter", - "outputs" : ["Parameter_17118"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16831", - "op" : "Parameter", - "outputs" : ["Parameter_16831"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16537", - "op" : "Parameter", - "outputs" : ["Parameter_16537"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15611", - "op" : "Parameter", - "outputs" : ["Parameter_15611"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16535", - "op" : "Parameter", - "outputs" : ["Parameter_16535"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14481", - "op" : "Parameter", - "outputs" : ["Parameter_14481"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15607", - "op" : "Parameter", - "outputs" : ["Parameter_15607"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17003", - "op" : "Parameter", - "outputs" : ["Parameter_17003"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15605", - "op" : "Parameter", - "outputs" : ["Parameter_15605"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17480", - "op" : "Parameter", - "outputs" : ["Parameter_17480"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15601", - "op" : "Parameter", - "outputs" : ["Parameter_15601"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15599", - "op" : "Parameter", - "outputs" : ["Parameter_15599"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17630", - "op" : "Parameter", - "outputs" : ["Parameter_17630"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15597", - "op" : "Parameter", - "outputs" : ["Parameter_15597"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15594", - "op" : "Parameter", - "outputs" : ["Parameter_15594"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17622", - "op" : "Parameter", - "outputs" : ["Parameter_17622"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15592", - "op" : "Parameter", - "outputs" : ["Parameter_15592"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15589", - "op" : "Parameter", - "outputs" : ["Parameter_15589"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16183", - "op" : "Parameter", - "outputs" : ["Parameter_16183"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15588", - "op" : "Parameter", - "outputs" : ["Parameter_15588"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15587", - "op" : "Parameter", - "outputs" : ["Parameter_15587"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17277", - "op" : "Parameter", - "outputs" : ["Parameter_17277"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15585", - "op" : "Parameter", - "outputs" : ["Parameter_15585"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17366", - "op" : "Parameter", - "outputs" : ["Parameter_17366"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15584", - "op" : "Parameter", - "outputs" : ["Parameter_15584"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15020", - "op" : "Parameter", - "outputs" : ["Parameter_15020"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17213", - "op" : "Parameter", - "outputs" : ["Parameter_17213"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15413", - "op" : "Parameter", - "outputs" : ["Parameter_15413"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15583", - "op" : "Parameter", - "outputs" : ["Parameter_15583"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17436", - "op" : "Parameter", - "outputs" : ["Parameter_17436"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15582", - "op" : "Parameter", - "outputs" : ["Parameter_15582"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16302", - "op" : "Parameter", - "outputs" : ["Parameter_16302"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15581", - "op" : "Parameter", - "outputs" : ["Parameter_15581"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16481", - "op" : "Parameter", - "outputs" : ["Parameter_16481"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15580", - "op" : "Parameter", - "outputs" : ["Parameter_15580"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17056", - "op" : "Parameter", - "outputs" : ["Parameter_17056"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16725", - "op" : "Parameter", - "outputs" : ["Parameter_16725"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15503", - "op" : "Parameter", - "outputs" : ["Parameter_15503"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16439", - "op" : "Parameter", - "outputs" : ["Parameter_16439"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16130", - "op" : "Parameter", - "outputs" : ["Parameter_16130"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15192", - "op" : "Parameter", - "outputs" : ["Parameter_15192"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15579", - "op" : "Parameter", - "outputs" : ["Parameter_15579"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15578", - "op" : "Parameter", - "outputs" : ["Parameter_15578"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15577", - "op" : "Parameter", - "outputs" : ["Parameter_15577"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15575", - "op" : "Parameter", - "outputs" : ["Parameter_15575"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15574", - "op" : "Parameter", - "outputs" : ["Parameter_15574"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14160", - "op" : "Parameter", - "outputs" : ["Parameter_14160"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15805", - "op" : "Parameter", - "outputs" : ["Parameter_15805"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15573", - "op" : "Parameter", - "outputs" : ["Parameter_15573"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15572", - "op" : "Parameter", - "outputs" : ["Parameter_15572"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17137", - "op" : "Parameter", - "outputs" : ["Parameter_17137"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15571", - "op" : "Parameter", - "outputs" : ["Parameter_15571"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18006", - "op" : "Parameter", - "outputs" : ["Parameter_18006"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15570", - "op" : "Parameter", - "outputs" : ["Parameter_15570"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15568", - "op" : "Parameter", - "outputs" : ["Parameter_15568"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16790", - "op" : "Parameter", - "outputs" : ["Parameter_16790"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15567", - "op" : "Parameter", - "outputs" : ["Parameter_15567"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17655", - "op" : "Parameter", - "outputs" : ["Parameter_17655"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16956", - "op" : "Parameter", - "outputs" : ["Parameter_16956"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18396", - "op" : "Parameter", - "outputs" : ["Parameter_18396"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16648", - "op" : "Parameter", - "outputs" : ["Parameter_16648"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15566", - "op" : "Parameter", - "outputs" : ["Parameter_15566"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15204", - "op" : "Parameter", - "outputs" : ["Parameter_15204"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15565", - "op" : "Parameter", - "outputs" : ["Parameter_15565"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17428", - "op" : "Parameter", - "outputs" : ["Parameter_17428"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15563", - "op" : "Parameter", - "outputs" : ["Parameter_15563"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18285", - "op" : "Parameter", - "outputs" : ["Parameter_18285"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16293", - "op" : "Parameter", - "outputs" : ["Parameter_16293"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15560", - "op" : "Parameter", - "outputs" : ["Parameter_15560"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17442", - "op" : "Parameter", - "outputs" : ["Parameter_17442"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18297", - "op" : "Parameter", - "outputs" : ["Parameter_18297"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16446", - "op" : "Parameter", - "outputs" : ["Parameter_16446"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14345", - "op" : "Parameter", - "outputs" : ["Parameter_14345"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15559", - "op" : "Parameter", - "outputs" : ["Parameter_15559"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15558", - "op" : "Parameter", - "outputs" : ["Parameter_15558"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17238", - "op" : "Parameter", - "outputs" : ["Parameter_17238"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15556", - "op" : "Parameter", - "outputs" : ["Parameter_15556"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15553", - "op" : "Parameter", - "outputs" : ["Parameter_15553"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15550", - "op" : "Parameter", - "outputs" : ["Parameter_15550"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16766", - "op" : "Parameter", - "outputs" : ["Parameter_16766"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13787", - "op" : "Parameter", - "outputs" : ["Parameter_13787"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16161", - "op" : "Parameter", - "outputs" : ["Parameter_16161"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15547", - "op" : "Parameter", - "outputs" : ["Parameter_15547"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15544", - "op" : "Parameter", - "outputs" : ["Parameter_15544"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16753", - "op" : "Parameter", - "outputs" : ["Parameter_16753"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15851", - "op" : "Parameter", - "outputs" : ["Parameter_15851"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15542", - "op" : "Parameter", - "outputs" : ["Parameter_15542"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15292", - "op" : "Parameter", - "outputs" : ["Parameter_15292"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17170", - "op" : "Parameter", - "outputs" : ["Parameter_17170"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15540", - "op" : "Parameter", - "outputs" : ["Parameter_15540"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17415", - "op" : "Parameter", - "outputs" : ["Parameter_17415"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17665", - "op" : "Parameter", - "outputs" : ["Parameter_17665"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15536", - "op" : "Parameter", - "outputs" : ["Parameter_15536"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17216", - "op" : "Parameter", - "outputs" : ["Parameter_17216"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15535", - "op" : "Parameter", - "outputs" : ["Parameter_15535"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15534", - "op" : "Parameter", - "outputs" : ["Parameter_15534"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14215", - "op" : "Parameter", - "outputs" : ["Parameter_14215"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15533", - "op" : "Parameter", - "outputs" : ["Parameter_15533"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17881", - "op" : "Parameter", - "outputs" : ["Parameter_17881"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15526", - "op" : "Parameter", - "outputs" : ["Parameter_15526"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17376", - "op" : "Parameter", - "outputs" : ["Parameter_17376"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15525", - "op" : "Parameter", - "outputs" : ["Parameter_15525"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15524", - "op" : "Parameter", - "outputs" : ["Parameter_15524"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16485", - "op" : "Parameter", - "outputs" : ["Parameter_16485"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15522", - "op" : "Parameter", - "outputs" : ["Parameter_15522"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16330", - "op" : "Parameter", - "outputs" : ["Parameter_16330"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15519", - "op" : "Parameter", - "outputs" : ["Parameter_15519"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15518", - "op" : "Parameter", - "outputs" : ["Parameter_15518"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15516", - "op" : "Parameter", - "outputs" : ["Parameter_15516"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17229", - "op" : "Parameter", - "outputs" : ["Parameter_17229"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15514", - "op" : "Parameter", - "outputs" : ["Parameter_15514"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15513", - "op" : "Parameter", - "outputs" : ["Parameter_15513"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14166", - "op" : "Parameter", - "outputs" : ["Parameter_14166"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17452", - "op" : "Parameter", - "outputs" : ["Parameter_17452"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15511", - "op" : "Parameter", - "outputs" : ["Parameter_15511"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15508", - "op" : "Parameter", - "outputs" : ["Parameter_15508"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15770", - "op" : "Parameter", - "outputs" : ["Parameter_15770"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17615", - "op" : "Parameter", - "outputs" : ["Parameter_17615"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17824", - "op" : "Parameter", - "outputs" : ["Parameter_17824"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13783", - "op" : "Parameter", - "outputs" : ["Parameter_13783"], - "shape" : [ 1920, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 1920, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17207", - "op" : "Parameter", - "outputs" : ["Parameter_17207"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14582", - "op" : "Parameter", - "outputs" : ["Parameter_14582"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13775", - "op" : "Parameter", - "outputs" : ["Parameter_13775"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16092", - "op" : "Parameter", - "outputs" : ["Parameter_16092"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15191", - "op" : "Parameter", - "outputs" : ["Parameter_15191"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17261", - "op" : "Parameter", - "outputs" : ["Parameter_17261"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15033", - "op" : "Parameter", - "outputs" : ["Parameter_15033"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16360", - "op" : "Parameter", - "outputs" : ["Parameter_16360"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14580", - "op" : "Parameter", - "outputs" : ["Parameter_14580"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15881", - "op" : "Parameter", - "outputs" : ["Parameter_15881"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17396", - "op" : "Parameter", - "outputs" : ["Parameter_17396"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14607", - "op" : "Parameter", - "outputs" : ["Parameter_14607"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17197", - "op" : "Parameter", - "outputs" : ["Parameter_17197"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14579", - "op" : "Parameter", - "outputs" : ["Parameter_14579"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14325", - "op" : "Parameter", - "outputs" : ["Parameter_14325"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14645", - "op" : "Parameter", - "outputs" : ["Parameter_14645"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14672", - "op" : "Parameter", - "outputs" : ["Parameter_14672"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17879", - "op" : "Parameter", - "outputs" : ["Parameter_17879"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16526", - "op" : "Parameter", - "outputs" : ["Parameter_16526"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13853", - "op" : "Parameter", - "outputs" : ["Parameter_13853"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14576", - "op" : "Parameter", - "outputs" : ["Parameter_14576"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14344", - "op" : "Parameter", - "outputs" : ["Parameter_14344"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16168", - "op" : "Parameter", - "outputs" : ["Parameter_16168"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14718", - "op" : "Parameter", - "outputs" : ["Parameter_14718"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14578", - "op" : "Parameter", - "outputs" : ["Parameter_14578"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16945", - "op" : "Parameter", - "outputs" : ["Parameter_16945"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15140", - "op" : "Parameter", - "outputs" : ["Parameter_15140"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16150", - "op" : "Parameter", - "outputs" : ["Parameter_16150"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14570", - "op" : "Parameter", - "outputs" : ["Parameter_14570"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15034", - "op" : "Parameter", - "outputs" : ["Parameter_15034"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16579", - "op" : "Parameter", - "outputs" : ["Parameter_16579"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14452", - "op" : "Parameter", - "outputs" : ["Parameter_14452"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16421", - "op" : "Parameter", - "outputs" : ["Parameter_16421"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14566", - "op" : "Parameter", - "outputs" : ["Parameter_14566"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13954", - "op" : "Parameter", - "outputs" : ["Parameter_13954"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14564", - "op" : "Parameter", - "outputs" : ["Parameter_14564"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15028", - "op" : "Parameter", - "outputs" : ["Parameter_15028"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18015", - "op" : "Parameter", - "outputs" : ["Parameter_18015"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15814", - "op" : "Parameter", - "outputs" : ["Parameter_15814"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14560", - "op" : "Parameter", - "outputs" : ["Parameter_14560"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16691", - "op" : "Parameter", - "outputs" : ["Parameter_16691"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14559", - "op" : "Parameter", - "outputs" : ["Parameter_14559"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17259", - "op" : "Parameter", - "outputs" : ["Parameter_17259"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18159", - "op" : "Parameter", - "outputs" : ["Parameter_18159"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14558", - "op" : "Parameter", - "outputs" : ["Parameter_14558"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16669", - "op" : "Parameter", - "outputs" : ["Parameter_16669"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16614", - "op" : "Parameter", - "outputs" : ["Parameter_16614"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13984", - "op" : "Parameter", - "outputs" : ["Parameter_13984"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15651", - "op" : "Parameter", - "outputs" : ["Parameter_15651"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14146", - "op" : "Parameter", - "outputs" : ["Parameter_14146"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14121", - "op" : "Parameter", - "outputs" : ["Parameter_14121"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15469", - "op" : "Parameter", - "outputs" : ["Parameter_15469"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14226", - "op" : "Parameter", - "outputs" : ["Parameter_14226"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13911", - "op" : "Parameter", - "outputs" : ["Parameter_13911"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16472", - "op" : "Parameter", - "outputs" : ["Parameter_16472"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14947", - "op" : "Parameter", - "outputs" : ["Parameter_14947"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14952", - "op" : "Parameter", - "outputs" : ["Parameter_14952"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14546", - "op" : "Parameter", - "outputs" : ["Parameter_14546"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16787", - "op" : "Parameter", - "outputs" : ["Parameter_16787"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14543", - "op" : "Parameter", - "outputs" : ["Parameter_14543"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15439", - "op" : "Parameter", - "outputs" : ["Parameter_15439"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18176", - "op" : "Parameter", - "outputs" : ["Parameter_18176"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16459", - "op" : "Parameter", - "outputs" : ["Parameter_16459"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13980", - "op" : "Parameter", - "outputs" : ["Parameter_13980"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15357", - "op" : "Parameter", - "outputs" : ["Parameter_15357"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17143", - "op" : "Parameter", - "outputs" : ["Parameter_17143"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14536", - "op" : "Parameter", - "outputs" : ["Parameter_14536"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13974", - "op" : "Parameter", - "outputs" : ["Parameter_13974"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17009", - "op" : "Parameter", - "outputs" : ["Parameter_17009"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15551", - "op" : "Parameter", - "outputs" : ["Parameter_15551"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14547", - "op" : "Parameter", - "outputs" : ["Parameter_14547"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16473", - "op" : "Parameter", - "outputs" : ["Parameter_16473"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14535", - "op" : "Parameter", - "outputs" : ["Parameter_14535"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14533", - "op" : "Parameter", - "outputs" : ["Parameter_14533"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17253", - "op" : "Parameter", - "outputs" : ["Parameter_17253"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18202", - "op" : "Parameter", - "outputs" : ["Parameter_18202"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14532", - "op" : "Parameter", - "outputs" : ["Parameter_14532"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14530", - "op" : "Parameter", - "outputs" : ["Parameter_14530"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14689", - "op" : "Parameter", - "outputs" : ["Parameter_14689"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14279", - "op" : "Parameter", - "outputs" : ["Parameter_14279"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14527", - "op" : "Parameter", - "outputs" : ["Parameter_14527"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14525", - "op" : "Parameter", - "outputs" : ["Parameter_14525"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14491", - "op" : "Parameter", - "outputs" : ["Parameter_14491"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17333", - "op" : "Parameter", - "outputs" : ["Parameter_17333"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17985", - "op" : "Parameter", - "outputs" : ["Parameter_17985"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14524", - "op" : "Parameter", - "outputs" : ["Parameter_14524"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14569", - "op" : "Parameter", - "outputs" : ["Parameter_14569"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14203", - "op" : "Parameter", - "outputs" : ["Parameter_14203"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16179", - "op" : "Parameter", - "outputs" : ["Parameter_16179"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13835", - "op" : "Parameter", - "outputs" : ["Parameter_13835"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16029", - "op" : "Parameter", - "outputs" : ["Parameter_16029"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14083", - "op" : "Parameter", - "outputs" : ["Parameter_14083"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17100", - "op" : "Parameter", - "outputs" : ["Parameter_17100"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14519", - "op" : "Parameter", - "outputs" : ["Parameter_14519"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16863", - "op" : "Parameter", - "outputs" : ["Parameter_16863"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15310", - "op" : "Parameter", - "outputs" : ["Parameter_15310"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18216", - "op" : "Parameter", - "outputs" : ["Parameter_18216"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17321", - "op" : "Parameter", - "outputs" : ["Parameter_17321"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14260", - "op" : "Parameter", - "outputs" : ["Parameter_14260"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14517", - "op" : "Parameter", - "outputs" : ["Parameter_14517"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15491", - "op" : "Parameter", - "outputs" : ["Parameter_15491"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14511", - "op" : "Parameter", - "outputs" : ["Parameter_14511"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16358", - "op" : "Parameter", - "outputs" : ["Parameter_16358"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16278", - "op" : "Parameter", - "outputs" : ["Parameter_16278"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14507", - "op" : "Parameter", - "outputs" : ["Parameter_14507"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16435", - "op" : "Parameter", - "outputs" : ["Parameter_16435"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14126", - "op" : "Parameter", - "outputs" : ["Parameter_14126"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17096", - "op" : "Parameter", - "outputs" : ["Parameter_17096"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15591", - "op" : "Parameter", - "outputs" : ["Parameter_15591"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15283", - "op" : "Parameter", - "outputs" : ["Parameter_15283"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17470", - "op" : "Parameter", - "outputs" : ["Parameter_17470"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16121", - "op" : "Parameter", - "outputs" : ["Parameter_16121"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18383", - "op" : "Parameter", - "outputs" : ["Parameter_18383"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14494", - "op" : "Parameter", - "outputs" : ["Parameter_14494"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15346", - "op" : "Parameter", - "outputs" : ["Parameter_15346"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14445", - "op" : "Parameter", - "outputs" : ["Parameter_14445"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14420", - "op" : "Parameter", - "outputs" : ["Parameter_14420"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15093", - "op" : "Parameter", - "outputs" : ["Parameter_15093"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14047", - "op" : "Parameter", - "outputs" : ["Parameter_14047"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15448", - "op" : "Parameter", - "outputs" : ["Parameter_15448"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13803", - "op" : "Parameter", - "outputs" : ["Parameter_13803"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17968", - "op" : "Parameter", - "outputs" : ["Parameter_17968"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17251", - "op" : "Parameter", - "outputs" : ["Parameter_17251"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14526", - "op" : "Parameter", - "outputs" : ["Parameter_14526"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14651", - "op" : "Parameter", - "outputs" : ["Parameter_14651"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15779", - "op" : "Parameter", - "outputs" : ["Parameter_15779"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15557", - "op" : "Parameter", - "outputs" : ["Parameter_15557"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14476", - "op" : "Parameter", - "outputs" : ["Parameter_14476"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17446", - "op" : "Parameter", - "outputs" : ["Parameter_17446"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14475", - "op" : "Parameter", - "outputs" : ["Parameter_14475"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16194", - "op" : "Parameter", - "outputs" : ["Parameter_16194"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14472", - "op" : "Parameter", - "outputs" : ["Parameter_14472"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16353", - "op" : "Parameter", - "outputs" : ["Parameter_16353"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14471", - "op" : "Parameter", - "outputs" : ["Parameter_14471"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14469", - "op" : "Parameter", - "outputs" : ["Parameter_14469"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17440", - "op" : "Parameter", - "outputs" : ["Parameter_17440"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14464", - "op" : "Parameter", - "outputs" : ["Parameter_14464"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14678", - "op" : "Parameter", - "outputs" : ["Parameter_14678"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17152", - "op" : "Parameter", - "outputs" : ["Parameter_17152"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14594", - "op" : "Parameter", - "outputs" : ["Parameter_14594"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14541", - "op" : "Parameter", - "outputs" : ["Parameter_14541"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17243", - "op" : "Parameter", - "outputs" : ["Parameter_17243"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14459", - "op" : "Parameter", - "outputs" : ["Parameter_14459"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15232", - "op" : "Parameter", - "outputs" : ["Parameter_15232"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16231", - "op" : "Parameter", - "outputs" : ["Parameter_16231"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14554", - "op" : "Parameter", - "outputs" : ["Parameter_14554"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14885", - "op" : "Parameter", - "outputs" : ["Parameter_14885"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15901", - "op" : "Parameter", - "outputs" : ["Parameter_15901"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16420", - "op" : "Parameter", - "outputs" : ["Parameter_16420"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15457", - "op" : "Parameter", - "outputs" : ["Parameter_15457"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14503", - "op" : "Parameter", - "outputs" : ["Parameter_14503"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16773", - "op" : "Parameter", - "outputs" : ["Parameter_16773"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15307", - "op" : "Parameter", - "outputs" : ["Parameter_15307"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15416", - "op" : "Parameter", - "outputs" : ["Parameter_15416"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14453", - "op" : "Parameter", - "outputs" : ["Parameter_14453"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17080", - "op" : "Parameter", - "outputs" : ["Parameter_17080"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14338", - "op" : "Parameter", - "outputs" : ["Parameter_14338"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14451", - "op" : "Parameter", - "outputs" : ["Parameter_14451"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14449", - "op" : "Parameter", - "outputs" : ["Parameter_14449"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17798", - "op" : "Parameter", - "outputs" : ["Parameter_17798"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14508", - "op" : "Parameter", - "outputs" : ["Parameter_14508"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15291", - "op" : "Parameter", - "outputs" : ["Parameter_15291"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14447", - "op" : "Parameter", - "outputs" : ["Parameter_14447"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15718", - "op" : "Parameter", - "outputs" : ["Parameter_15718"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14636", - "op" : "Parameter", - "outputs" : ["Parameter_14636"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14567", - "op" : "Parameter", - "outputs" : ["Parameter_14567"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14446", - "op" : "Parameter", - "outputs" : ["Parameter_14446"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16594", - "op" : "Parameter", - "outputs" : ["Parameter_16594"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16968", - "op" : "Parameter", - "outputs" : ["Parameter_16968"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14443", - "op" : "Parameter", - "outputs" : ["Parameter_14443"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14172", - "op" : "Parameter", - "outputs" : ["Parameter_14172"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14433", - "op" : "Parameter", - "outputs" : ["Parameter_14433"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15313", - "op" : "Parameter", - "outputs" : ["Parameter_15313"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14474", - "op" : "Parameter", - "outputs" : ["Parameter_14474"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14009", - "op" : "Parameter", - "outputs" : ["Parameter_14009"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15240", - "op" : "Parameter", - "outputs" : ["Parameter_15240"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14427", - "op" : "Parameter", - "outputs" : ["Parameter_14427"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15392", - "op" : "Parameter", - "outputs" : ["Parameter_15392"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14478", - "op" : "Parameter", - "outputs" : ["Parameter_14478"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14426", - "op" : "Parameter", - "outputs" : ["Parameter_14426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17374", - "op" : "Parameter", - "outputs" : ["Parameter_17374"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14723", - "op" : "Parameter", - "outputs" : ["Parameter_14723"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15309", - "op" : "Parameter", - "outputs" : ["Parameter_15309"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14425", - "op" : "Parameter", - "outputs" : ["Parameter_14425"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14583", - "op" : "Parameter", - "outputs" : ["Parameter_14583"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16151", - "op" : "Parameter", - "outputs" : ["Parameter_16151"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15351", - "op" : "Parameter", - "outputs" : ["Parameter_15351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15242", - "op" : "Parameter", - "outputs" : ["Parameter_15242"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14424", - "op" : "Parameter", - "outputs" : ["Parameter_14424"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14421", - "op" : "Parameter", - "outputs" : ["Parameter_14421"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14413", - "op" : "Parameter", - "outputs" : ["Parameter_14413"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14794", - "op" : "Parameter", - "outputs" : ["Parameter_14794"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14961", - "op" : "Parameter", - "outputs" : ["Parameter_14961"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14254", - "op" : "Parameter", - "outputs" : ["Parameter_14254"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14501", - "op" : "Parameter", - "outputs" : ["Parameter_14501"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14685", - "op" : "Parameter", - "outputs" : ["Parameter_14685"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16281", - "op" : "Parameter", - "outputs" : ["Parameter_16281"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15498", - "op" : "Parameter", - "outputs" : ["Parameter_15498"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17283", - "op" : "Parameter", - "outputs" : ["Parameter_17283"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15606", - "op" : "Parameter", - "outputs" : ["Parameter_15606"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14410", - "op" : "Parameter", - "outputs" : ["Parameter_14410"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14269", - "op" : "Parameter", - "outputs" : ["Parameter_14269"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16756", - "op" : "Parameter", - "outputs" : ["Parameter_16756"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15126", - "op" : "Parameter", - "outputs" : ["Parameter_15126"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14239", - "op" : "Parameter", - "outputs" : ["Parameter_14239"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15068", - "op" : "Parameter", - "outputs" : ["Parameter_15068"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14393", - "op" : "Parameter", - "outputs" : ["Parameter_14393"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14382", - "op" : "Parameter", - "outputs" : ["Parameter_14382"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14136", - "op" : "Parameter", - "outputs" : ["Parameter_14136"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17483", - "op" : "Parameter", - "outputs" : ["Parameter_17483"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14748", - "op" : "Parameter", - "outputs" : ["Parameter_14748"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18062", - "op" : "Parameter", - "outputs" : ["Parameter_18062"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16888", - "op" : "Parameter", - "outputs" : ["Parameter_16888"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14840", - "op" : "Parameter", - "outputs" : ["Parameter_14840"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14379", - "op" : "Parameter", - "outputs" : ["Parameter_14379"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17379", - "op" : "Parameter", - "outputs" : ["Parameter_17379"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14982", - "op" : "Parameter", - "outputs" : ["Parameter_14982"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14377", - "op" : "Parameter", - "outputs" : ["Parameter_14377"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16373", - "op" : "Parameter", - "outputs" : ["Parameter_16373"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17576", - "op" : "Parameter", - "outputs" : ["Parameter_17576"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14932", - "op" : "Parameter", - "outputs" : ["Parameter_14932"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14905", - "op" : "Parameter", - "outputs" : ["Parameter_14905"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18136", - "op" : "Parameter", - "outputs" : ["Parameter_18136"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16825", - "op" : "Parameter", - "outputs" : ["Parameter_16825"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14917", - "op" : "Parameter", - "outputs" : ["Parameter_14917"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14210", - "op" : "Parameter", - "outputs" : ["Parameter_14210"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14849", - "op" : "Parameter", - "outputs" : ["Parameter_14849"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16220", - "op" : "Parameter", - "outputs" : ["Parameter_16220"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16820", - "op" : "Parameter", - "outputs" : ["Parameter_16820"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14370", - "op" : "Parameter", - "outputs" : ["Parameter_14370"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18210", - "op" : "Parameter", - "outputs" : ["Parameter_18210"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14369", - "op" : "Parameter", - "outputs" : ["Parameter_14369"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15054", - "op" : "Parameter", - "outputs" : ["Parameter_15054"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14364", - "op" : "Parameter", - "outputs" : ["Parameter_14364"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17187", - "op" : "Parameter", - "outputs" : ["Parameter_17187"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14631", - "op" : "Parameter", - "outputs" : ["Parameter_14631"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14588", - "op" : "Parameter", - "outputs" : ["Parameter_14588"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15977", - "op" : "Parameter", - "outputs" : ["Parameter_15977"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13836", - "op" : "Parameter", - "outputs" : ["Parameter_13836"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15002", - "op" : "Parameter", - "outputs" : ["Parameter_15002"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17327", - "op" : "Parameter", - "outputs" : ["Parameter_17327"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13858", - "op" : "Parameter", - "outputs" : ["Parameter_13858"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14342", - "op" : "Parameter", - "outputs" : ["Parameter_14342"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14337", - "op" : "Parameter", - "outputs" : ["Parameter_14337"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16259", - "op" : "Parameter", - "outputs" : ["Parameter_16259"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14416", - "op" : "Parameter", - "outputs" : ["Parameter_14416"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14190", - "op" : "Parameter", - "outputs" : ["Parameter_14190"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14335", - "op" : "Parameter", - "outputs" : ["Parameter_14335"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14334", - "op" : "Parameter", - "outputs" : ["Parameter_14334"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13953", - "op" : "Parameter", - "outputs" : ["Parameter_13953"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14574", - "op" : "Parameter", - "outputs" : ["Parameter_14574"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13828", - "op" : "Parameter", - "outputs" : ["Parameter_13828"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14921", - "op" : "Parameter", - "outputs" : ["Parameter_14921"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14562", - "op" : "Parameter", - "outputs" : ["Parameter_14562"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14332", - "op" : "Parameter", - "outputs" : ["Parameter_14332"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13833", - "op" : "Parameter", - "outputs" : ["Parameter_13833"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17055", - "op" : "Parameter", - "outputs" : ["Parameter_17055"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16250", - "op" : "Parameter", - "outputs" : ["Parameter_16250"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13797", - "op" : "Parameter", - "outputs" : ["Parameter_13797"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18004", - "op" : "Parameter", - "outputs" : ["Parameter_18004"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14327", - "op" : "Parameter", - "outputs" : ["Parameter_14327"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14648", - "op" : "Parameter", - "outputs" : ["Parameter_14648"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14343", - "op" : "Parameter", - "outputs" : ["Parameter_14343"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14596", - "op" : "Parameter", - "outputs" : ["Parameter_14596"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14363", - "op" : "Parameter", - "outputs" : ["Parameter_14363"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15127", - "op" : "Parameter", - "outputs" : ["Parameter_15127"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15100", - "op" : "Parameter", - "outputs" : ["Parameter_15100"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15225", - "op" : "Parameter", - "outputs" : ["Parameter_15225"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14324", - "op" : "Parameter", - "outputs" : ["Parameter_14324"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16528", - "op" : "Parameter", - "outputs" : ["Parameter_16528"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14323", - "op" : "Parameter", - "outputs" : ["Parameter_14323"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17904", - "op" : "Parameter", - "outputs" : ["Parameter_17904"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16914", - "op" : "Parameter", - "outputs" : ["Parameter_16914"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16527", - "op" : "Parameter", - "outputs" : ["Parameter_16527"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13854", - "op" : "Parameter", - "outputs" : ["Parameter_13854"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14322", - "op" : "Parameter", - "outputs" : ["Parameter_14322"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16162", - "op" : "Parameter", - "outputs" : ["Parameter_16162"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14750", - "op" : "Parameter", - "outputs" : ["Parameter_14750"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17430", - "op" : "Parameter", - "outputs" : ["Parameter_17430"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14319", - "op" : "Parameter", - "outputs" : ["Parameter_14319"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15485", - "op" : "Parameter", - "outputs" : ["Parameter_15485"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14313", - "op" : "Parameter", - "outputs" : ["Parameter_14313"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14312", - "op" : "Parameter", - "outputs" : ["Parameter_14312"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15466", - "op" : "Parameter", - "outputs" : ["Parameter_15466"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14094", - "op" : "Parameter", - "outputs" : ["Parameter_14094"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13846", - "op" : "Parameter", - "outputs" : ["Parameter_13846"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14304", - "op" : "Parameter", - "outputs" : ["Parameter_14304"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14302", - "op" : "Parameter", - "outputs" : ["Parameter_14302"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16080", - "op" : "Parameter", - "outputs" : ["Parameter_16080"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14301", - "op" : "Parameter", - "outputs" : ["Parameter_14301"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15880", - "op" : "Parameter", - "outputs" : ["Parameter_15880"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15285", - "op" : "Parameter", - "outputs" : ["Parameter_15285"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18273", - "op" : "Parameter", - "outputs" : ["Parameter_18273"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14303", - "op" : "Parameter", - "outputs" : ["Parameter_14303"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16533", - "op" : "Parameter", - "outputs" : ["Parameter_16533"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16246", - "op" : "Parameter", - "outputs" : ["Parameter_16246"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17927", - "op" : "Parameter", - "outputs" : ["Parameter_17927"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14300", - "op" : "Parameter", - "outputs" : ["Parameter_14300"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17768", - "op" : "Parameter", - "outputs" : ["Parameter_17768"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14950", - "op" : "Parameter", - "outputs" : ["Parameter_14950"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16990", - "op" : "Parameter", - "outputs" : ["Parameter_16990"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16064", - "op" : "Parameter", - "outputs" : ["Parameter_16064"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15343", - "op" : "Parameter", - "outputs" : ["Parameter_15343"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17493", - "op" : "Parameter", - "outputs" : ["Parameter_17493"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14506", - "op" : "Parameter", - "outputs" : ["Parameter_14506"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15318", - "op" : "Parameter", - "outputs" : ["Parameter_15318"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14326", - "op" : "Parameter", - "outputs" : ["Parameter_14326"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15733", - "op" : "Parameter", - "outputs" : ["Parameter_15733"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17328", - "op" : "Parameter", - "outputs" : ["Parameter_17328"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14297", - "op" : "Parameter", - "outputs" : ["Parameter_14297"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14390", - "op" : "Parameter", - "outputs" : ["Parameter_14390"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16386", - "op" : "Parameter", - "outputs" : ["Parameter_16386"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14296", - "op" : "Parameter", - "outputs" : ["Parameter_14296"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16986", - "op" : "Parameter", - "outputs" : ["Parameter_16986"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15297", - "op" : "Parameter", - "outputs" : ["Parameter_15297"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18240", - "op" : "Parameter", - "outputs" : ["Parameter_18240"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16946", - "op" : "Parameter", - "outputs" : ["Parameter_16946"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14418", - "op" : "Parameter", - "outputs" : ["Parameter_14418"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15141", - "op" : "Parameter", - "outputs" : ["Parameter_15141"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14571", - "op" : "Parameter", - "outputs" : ["Parameter_14571"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14553", - "op" : "Parameter", - "outputs" : ["Parameter_14553"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14291", - "op" : "Parameter", - "outputs" : ["Parameter_14291"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16311", - "op" : "Parameter", - "outputs" : ["Parameter_16311"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14654", - "op" : "Parameter", - "outputs" : ["Parameter_14654"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15809", - "op" : "Parameter", - "outputs" : ["Parameter_15809"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14090", - "op" : "Parameter", - "outputs" : ["Parameter_14090"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14289", - "op" : "Parameter", - "outputs" : ["Parameter_14289"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17833", - "op" : "Parameter", - "outputs" : ["Parameter_17833"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17273", - "op" : "Parameter", - "outputs" : ["Parameter_17273"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13888", - "op" : "Parameter", - "outputs" : ["Parameter_13888"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13869", - "op" : "Parameter", - "outputs" : ["Parameter_13869"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14740", - "op" : "Parameter", - "outputs" : ["Parameter_14740"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15408", - "op" : "Parameter", - "outputs" : ["Parameter_15408"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14400", - "op" : "Parameter", - "outputs" : ["Parameter_14400"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17393", - "op" : "Parameter", - "outputs" : ["Parameter_17393"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14286", - "op" : "Parameter", - "outputs" : ["Parameter_14286"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14280", - "op" : "Parameter", - "outputs" : ["Parameter_14280"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14293", - "op" : "Parameter", - "outputs" : ["Parameter_14293"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13949", - "op" : "Parameter", - "outputs" : ["Parameter_13949"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17126", - "op" : "Parameter", - "outputs" : ["Parameter_17126"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14253", - "op" : "Parameter", - "outputs" : ["Parameter_14253"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15473", - "op" : "Parameter", - "outputs" : ["Parameter_15473"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13832", - "op" : "Parameter", - "outputs" : ["Parameter_13832"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15443", - "op" : "Parameter", - "outputs" : ["Parameter_15443"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15960", - "op" : "Parameter", - "outputs" : ["Parameter_15960"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14274", - "op" : "Parameter", - "outputs" : ["Parameter_14274"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13806", - "op" : "Parameter", - "outputs" : ["Parameter_13806"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14150", - "op" : "Parameter", - "outputs" : ["Parameter_14150"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16561", - "op" : "Parameter", - "outputs" : ["Parameter_16561"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16252", - "op" : "Parameter", - "outputs" : ["Parameter_16252"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16803", - "op" : "Parameter", - "outputs" : ["Parameter_16803"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14272", - "op" : "Parameter", - "outputs" : ["Parameter_14272"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16763", - "op" : "Parameter", - "outputs" : ["Parameter_16763"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14866", - "op" : "Parameter", - "outputs" : ["Parameter_14866"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15939", - "op" : "Parameter", - "outputs" : ["Parameter_15939"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14068", - "op" : "Parameter", - "outputs" : ["Parameter_14068"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14711", - "op" : "Parameter", - "outputs" : ["Parameter_14711"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14214", - "op" : "Parameter", - "outputs" : ["Parameter_14214"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14264", - "op" : "Parameter", - "outputs" : ["Parameter_14264"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14057", - "op" : "Parameter", - "outputs" : ["Parameter_14057"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16727", - "op" : "Parameter", - "outputs" : ["Parameter_16727"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16949", - "op" : "Parameter", - "outputs" : ["Parameter_16949"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16565", - "op" : "Parameter", - "outputs" : ["Parameter_16565"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15160", - "op" : "Parameter", - "outputs" : ["Parameter_15160"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15228", - "op" : "Parameter", - "outputs" : ["Parameter_15228"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18118", - "op" : "Parameter", - "outputs" : ["Parameter_18118"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15964", - "op" : "Parameter", - "outputs" : ["Parameter_15964"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15658", - "op" : "Parameter", - "outputs" : ["Parameter_15658"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14255", - "op" : "Parameter", - "outputs" : ["Parameter_14255"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14987", - "op" : "Parameter", - "outputs" : ["Parameter_14987"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14046", - "op" : "Parameter", - "outputs" : ["Parameter_14046"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14623", - "op" : "Parameter", - "outputs" : ["Parameter_14623"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15217", - "op" : "Parameter", - "outputs" : ["Parameter_15217"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15293", - "op" : "Parameter", - "outputs" : ["Parameter_15293"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14062", - "op" : "Parameter", - "outputs" : ["Parameter_14062"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13774", - "op" : "Parameter", - "outputs" : ["Parameter_13774"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_16077", - "op" : "Parameter", - "outputs" : ["Parameter_16077"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14531", - "op" : "Parameter", - "outputs" : ["Parameter_14531"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14247", - "op" : "Parameter", - "outputs" : ["Parameter_14247"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15182", - "op" : "Parameter", - "outputs" : ["Parameter_15182"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16983", - "op" : "Parameter", - "outputs" : ["Parameter_16983"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15205", - "op" : "Parameter", - "outputs" : ["Parameter_15205"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14246", - "op" : "Parameter", - "outputs" : ["Parameter_14246"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15371", - "op" : "Parameter", - "outputs" : ["Parameter_15371"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15856", - "op" : "Parameter", - "outputs" : ["Parameter_15856"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17537", - "op" : "Parameter", - "outputs" : ["Parameter_17537"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16178", - "op" : "Parameter", - "outputs" : ["Parameter_16178"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17381", - "op" : "Parameter", - "outputs" : ["Parameter_17381"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15354", - "op" : "Parameter", - "outputs" : ["Parameter_15354"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14245", - "op" : "Parameter", - "outputs" : ["Parameter_14245"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14242", - "op" : "Parameter", - "outputs" : ["Parameter_14242"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14238", - "op" : "Parameter", - "outputs" : ["Parameter_14238"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14270", - "op" : "Parameter", - "outputs" : ["Parameter_14270"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14141", - "op" : "Parameter", - "outputs" : ["Parameter_14141"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14939", - "op" : "Parameter", - "outputs" : ["Parameter_14939"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17676", - "op" : "Parameter", - "outputs" : ["Parameter_17676"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14320", - "op" : "Parameter", - "outputs" : ["Parameter_14320"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17901", - "op" : "Parameter", - "outputs" : ["Parameter_17901"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14725", - "op" : "Parameter", - "outputs" : ["Parameter_14725"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13842", - "op" : "Parameter", - "outputs" : ["Parameter_13842"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14237", - "op" : "Parameter", - "outputs" : ["Parameter_14237"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14376", - "op" : "Parameter", - "outputs" : ["Parameter_14376"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15404", - "op" : "Parameter", - "outputs" : ["Parameter_15404"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14236", - "op" : "Parameter", - "outputs" : ["Parameter_14236"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17048", - "op" : "Parameter", - "outputs" : ["Parameter_17048"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14235", - "op" : "Parameter", - "outputs" : ["Parameter_14235"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15436", - "op" : "Parameter", - "outputs" : ["Parameter_15436"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15419", - "op" : "Parameter", - "outputs" : ["Parameter_15419"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16094", - "op" : "Parameter", - "outputs" : ["Parameter_16094"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13824", - "op" : "Parameter", - "outputs" : ["Parameter_13824"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14231", - "op" : "Parameter", - "outputs" : ["Parameter_14231"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17495", - "op" : "Parameter", - "outputs" : ["Parameter_17495"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14308", - "op" : "Parameter", - "outputs" : ["Parameter_14308"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14328", - "op" : "Parameter", - "outputs" : ["Parameter_14328"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18349", - "op" : "Parameter", - "outputs" : ["Parameter_18349"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13989", - "op" : "Parameter", - "outputs" : ["Parameter_13989"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14227", - "op" : "Parameter", - "outputs" : ["Parameter_14227"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17516", - "op" : "Parameter", - "outputs" : ["Parameter_17516"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16240", - "op" : "Parameter", - "outputs" : ["Parameter_16240"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14309", - "op" : "Parameter", - "outputs" : ["Parameter_14309"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17966", - "op" : "Parameter", - "outputs" : ["Parameter_17966"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14350", - "op" : "Parameter", - "outputs" : ["Parameter_14350"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15187", - "op" : "Parameter", - "outputs" : ["Parameter_15187"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17769", - "op" : "Parameter", - "outputs" : ["Parameter_17769"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17112", - "op" : "Parameter", - "outputs" : ["Parameter_17112"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14223", - "op" : "Parameter", - "outputs" : ["Parameter_14223"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18223", - "op" : "Parameter", - "outputs" : ["Parameter_18223"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14198", - "op" : "Parameter", - "outputs" : ["Parameter_14198"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15853", - "op" : "Parameter", - "outputs" : ["Parameter_15853"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14222", - "op" : "Parameter", - "outputs" : ["Parameter_14222"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16760", - "op" : "Parameter", - "outputs" : ["Parameter_16760"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15773", - "op" : "Parameter", - "outputs" : ["Parameter_15773"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14221", - "op" : "Parameter", - "outputs" : ["Parameter_14221"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17365", - "op" : "Parameter", - "outputs" : ["Parameter_17365"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15735", - "op" : "Parameter", - "outputs" : ["Parameter_15735"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15016", - "op" : "Parameter", - "outputs" : ["Parameter_15016"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14454", - "op" : "Parameter", - "outputs" : ["Parameter_14454"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17269", - "op" : "Parameter", - "outputs" : ["Parameter_17269"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16577", - "op" : "Parameter", - "outputs" : ["Parameter_16577"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14217", - "op" : "Parameter", - "outputs" : ["Parameter_14217"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18060", - "op" : "Parameter", - "outputs" : ["Parameter_18060"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17053", - "op" : "Parameter", - "outputs" : ["Parameter_17053"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14406", - "op" : "Parameter", - "outputs" : ["Parameter_14406"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13874", - "op" : "Parameter", - "outputs" : ["Parameter_13874"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17549", - "op" : "Parameter", - "outputs" : ["Parameter_17549"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14693", - "op" : "Parameter", - "outputs" : ["Parameter_14693"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14813", - "op" : "Parameter", - "outputs" : ["Parameter_14813"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15308", - "op" : "Parameter", - "outputs" : ["Parameter_15308"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17332", - "op" : "Parameter", - "outputs" : ["Parameter_17332"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14124", - "op" : "Parameter", - "outputs" : ["Parameter_14124"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15839", - "op" : "Parameter", - "outputs" : ["Parameter_15839"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15214", - "op" : "Parameter", - "outputs" : ["Parameter_15214"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14479", - "op" : "Parameter", - "outputs" : ["Parameter_14479"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13871", - "op" : "Parameter", - "outputs" : ["Parameter_13871"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16400", - "op" : "Parameter", - "outputs" : ["Parameter_16400"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16114", - "op" : "Parameter", - "outputs" : ["Parameter_16114"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15154", - "op" : "Parameter", - "outputs" : ["Parameter_15154"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14105", - "op" : "Parameter", - "outputs" : ["Parameter_14105"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13857", - "op" : "Parameter", - "outputs" : ["Parameter_13857"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15401", - "op" : "Parameter", - "outputs" : ["Parameter_15401"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15488", - "op" : "Parameter", - "outputs" : ["Parameter_15488"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14187", - "op" : "Parameter", - "outputs" : ["Parameter_14187"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14211", - "op" : "Parameter", - "outputs" : ["Parameter_14211"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14710", - "op" : "Parameter", - "outputs" : ["Parameter_14710"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14737", - "op" : "Parameter", - "outputs" : ["Parameter_14737"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15407", - "op" : "Parameter", - "outputs" : ["Parameter_15407"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14399", - "op" : "Parameter", - "outputs" : ["Parameter_14399"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15958", - "op" : "Parameter", - "outputs" : ["Parameter_15958"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14209", - "op" : "Parameter", - "outputs" : ["Parameter_14209"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14208", - "op" : "Parameter", - "outputs" : ["Parameter_14208"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17109", - "op" : "Parameter", - "outputs" : ["Parameter_17109"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13782", - "op" : "Parameter", - "outputs" : ["Parameter_13782"], - "shape" : [ 200, 10000 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 10000 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14207", - "op" : "Parameter", - "outputs" : ["Parameter_14207"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17286", - "op" : "Parameter", - "outputs" : ["Parameter_17286"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17246", - "op" : "Parameter", - "outputs" : ["Parameter_17246"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15395", - "op" : "Parameter", - "outputs" : ["Parameter_15395"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16642", - "op" : "Parameter", - "outputs" : ["Parameter_16642"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14206", - "op" : "Parameter", - "outputs" : ["Parameter_14206"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13863", - "op" : "Parameter", - "outputs" : ["Parameter_13863"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17614", - "op" : "Parameter", - "outputs" : ["Parameter_17614"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15246", - "op" : "Parameter", - "outputs" : ["Parameter_15246"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16940", - "op" : "Parameter", - "outputs" : ["Parameter_16940"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15256", - "op" : "Parameter", - "outputs" : ["Parameter_15256"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15373", - "op" : "Parameter", - "outputs" : ["Parameter_15373"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16595", - "op" : "Parameter", - "outputs" : ["Parameter_16595"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14200", - "op" : "Parameter", - "outputs" : ["Parameter_14200"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16666", - "op" : "Parameter", - "outputs" : ["Parameter_16666"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15463", - "op" : "Parameter", - "outputs" : ["Parameter_15463"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14550", - "op" : "Parameter", - "outputs" : ["Parameter_14550"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15626", - "op" : "Parameter", - "outputs" : ["Parameter_15626"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14197", - "op" : "Parameter", - "outputs" : ["Parameter_14197"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17303", - "op" : "Parameter", - "outputs" : ["Parameter_17303"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15623", - "op" : "Parameter", - "outputs" : ["Parameter_15623"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14196", - "op" : "Parameter", - "outputs" : ["Parameter_14196"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16897", - "op" : "Parameter", - "outputs" : ["Parameter_16897"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14876", - "op" : "Parameter", - "outputs" : ["Parameter_14876"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18085", - "op" : "Parameter", - "outputs" : ["Parameter_18085"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15268", - "op" : "Parameter", - "outputs" : ["Parameter_15268"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15124", - "op" : "Parameter", - "outputs" : ["Parameter_15124"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17016", - "op" : "Parameter", - "outputs" : ["Parameter_17016"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15215", - "op" : "Parameter", - "outputs" : ["Parameter_15215"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16707", - "op" : "Parameter", - "outputs" : ["Parameter_16707"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14951", - "op" : "Parameter", - "outputs" : ["Parameter_14951"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15311", - "op" : "Parameter", - "outputs" : ["Parameter_15311"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16042", - "op" : "Parameter", - "outputs" : ["Parameter_16042"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15321", - "op" : "Parameter", - "outputs" : ["Parameter_15321"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15438", - "op" : "Parameter", - "outputs" : ["Parameter_15438"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14514", - "op" : "Parameter", - "outputs" : ["Parameter_14514"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16660", - "op" : "Parameter", - "outputs" : ["Parameter_16660"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14192", - "op" : "Parameter", - "outputs" : ["Parameter_14192"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14627", - "op" : "Parameter", - "outputs" : ["Parameter_14627"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13849", - "op" : "Parameter", - "outputs" : ["Parameter_13849"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16730", - "op" : "Parameter", - "outputs" : ["Parameter_16730"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14191", - "op" : "Parameter", - "outputs" : ["Parameter_14191"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14431", - "op" : "Parameter", - "outputs" : ["Parameter_14431"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13973", - "op" : "Parameter", - "outputs" : ["Parameter_13973"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14276", - "op" : "Parameter", - "outputs" : ["Parameter_14276"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14688", - "op" : "Parameter", - "outputs" : ["Parameter_14688"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18161", - "op" : "Parameter", - "outputs" : ["Parameter_18161"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14632", - "op" : "Parameter", - "outputs" : ["Parameter_14632"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18373", - "op" : "Parameter", - "outputs" : ["Parameter_18373"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15876", - "op" : "Parameter", - "outputs" : ["Parameter_15876"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14745", - "op" : "Parameter", - "outputs" : ["Parameter_14745"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16048", - "op" : "Parameter", - "outputs" : ["Parameter_16048"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14189", - "op" : "Parameter", - "outputs" : ["Parameter_14189"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14186", - "op" : "Parameter", - "outputs" : ["Parameter_14186"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15376", - "op" : "Parameter", - "outputs" : ["Parameter_15376"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17811", - "op" : "Parameter", - "outputs" : ["Parameter_17811"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18357", - "op" : "Parameter", - "outputs" : ["Parameter_18357"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16107", - "op" : "Parameter", - "outputs" : ["Parameter_16107"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15386", - "op" : "Parameter", - "outputs" : ["Parameter_15386"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16813", - "op" : "Parameter", - "outputs" : ["Parameter_16813"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14181", - "op" : "Parameter", - "outputs" : ["Parameter_14181"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14265", - "op" : "Parameter", - "outputs" : ["Parameter_14265"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18226", - "op" : "Parameter", - "outputs" : ["Parameter_18226"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14053", - "op" : "Parameter", - "outputs" : ["Parameter_14053"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14182", - "op" : "Parameter", - "outputs" : ["Parameter_14182"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16073", - "op" : "Parameter", - "outputs" : ["Parameter_16073"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14714", - "op" : "Parameter", - "outputs" : ["Parameter_14714"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16113", - "op" : "Parameter", - "outputs" : ["Parameter_16113"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14178", - "op" : "Parameter", - "outputs" : ["Parameter_14178"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13998", - "op" : "Parameter", - "outputs" : ["Parameter_13998"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16995", - "op" : "Parameter", - "outputs" : ["Parameter_16995"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14940", - "op" : "Parameter", - "outputs" : ["Parameter_14940"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14220", - "op" : "Parameter", - "outputs" : ["Parameter_14220"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16437", - "op" : "Parameter", - "outputs" : ["Parameter_16437"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14512", - "op" : "Parameter", - "outputs" : ["Parameter_14512"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14659", - "op" : "Parameter", - "outputs" : ["Parameter_14659"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16979", - "op" : "Parameter", - "outputs" : ["Parameter_16979"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17211", - "op" : "Parameter", - "outputs" : ["Parameter_17211"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14976", - "op" : "Parameter", - "outputs" : ["Parameter_14976"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16842", - "op" : "Parameter", - "outputs" : ["Parameter_16842"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15024", - "op" : "Parameter", - "outputs" : ["Parameter_15024"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13950", - "op" : "Parameter", - "outputs" : ["Parameter_13950"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16742", - "op" : "Parameter", - "outputs" : ["Parameter_16742"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14107", - "op" : "Parameter", - "outputs" : ["Parameter_14107"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14391", - "op" : "Parameter", - "outputs" : ["Parameter_14391"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14500", - "op" : "Parameter", - "outputs" : ["Parameter_14500"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16844", - "op" : "Parameter", - "outputs" : ["Parameter_16844"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16123", - "op" : "Parameter", - "outputs" : ["Parameter_16123"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15749", - "op" : "Parameter", - "outputs" : ["Parameter_15749"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14015", - "op" : "Parameter", - "outputs" : ["Parameter_14015"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17324", - "op" : "Parameter", - "outputs" : ["Parameter_17324"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14826", - "op" : "Parameter", - "outputs" : ["Parameter_14826"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16647", - "op" : "Parameter", - "outputs" : ["Parameter_16647"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16397", - "op" : "Parameter", - "outputs" : ["Parameter_16397"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15298", - "op" : "Parameter", - "outputs" : ["Parameter_15298"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16978", - "op" : "Parameter", - "outputs" : ["Parameter_16978"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16385", - "op" : "Parameter", - "outputs" : ["Parameter_16385"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15304", - "op" : "Parameter", - "outputs" : ["Parameter_15304"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16279", - "op" : "Parameter", - "outputs" : ["Parameter_16279"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14756", - "op" : "Parameter", - "outputs" : ["Parameter_14756"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13957", - "op" : "Parameter", - "outputs" : ["Parameter_13957"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14360", - "op" : "Parameter", - "outputs" : ["Parameter_14360"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17455", - "op" : "Parameter", - "outputs" : ["Parameter_17455"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14914", - "op" : "Parameter", - "outputs" : ["Parameter_14914"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16076", - "op" : "Parameter", - "outputs" : ["Parameter_16076"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14854", - "op" : "Parameter", - "outputs" : ["Parameter_14854"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17633", - "op" : "Parameter", - "outputs" : ["Parameter_17633"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17195", - "op" : "Parameter", - "outputs" : ["Parameter_17195"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14065", - "op" : "Parameter", - "outputs" : ["Parameter_14065"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13939", - "op" : "Parameter", - "outputs" : ["Parameter_13939"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17326", - "op" : "Parameter", - "outputs" : ["Parameter_17326"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14971", - "op" : "Parameter", - "outputs" : ["Parameter_14971"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15630", - "op" : "Parameter", - "outputs" : ["Parameter_15630"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13943", - "op" : "Parameter", - "outputs" : ["Parameter_13943"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14468", - "op" : "Parameter", - "outputs" : ["Parameter_14468"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14994", - "op" : "Parameter", - "outputs" : ["Parameter_14994"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13770", - "op" : "Parameter", - "outputs" : ["Parameter_13770"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_16886", - "op" : "Parameter", - "outputs" : ["Parameter_16886"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13937", - "op" : "Parameter", - "outputs" : ["Parameter_13937"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16963", - "op" : "Parameter", - "outputs" : ["Parameter_16963"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15915", - "op" : "Parameter", - "outputs" : ["Parameter_15915"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14540", - "op" : "Parameter", - "outputs" : ["Parameter_14540"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17242", - "op" : "Parameter", - "outputs" : ["Parameter_17242"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15464", - "op" : "Parameter", - "outputs" : ["Parameter_15464"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14458", - "op" : "Parameter", - "outputs" : ["Parameter_14458"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14850", - "op" : "Parameter", - "outputs" : ["Parameter_14850"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17445", - "op" : "Parameter", - "outputs" : ["Parameter_17445"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15798", - "op" : "Parameter", - "outputs" : ["Parameter_15798"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14641", - "op" : "Parameter", - "outputs" : ["Parameter_14641"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14230", - "op" : "Parameter", - "outputs" : ["Parameter_14230"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14926", - "op" : "Parameter", - "outputs" : ["Parameter_14926"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14937", - "op" : "Parameter", - "outputs" : ["Parameter_14937"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13945", - "op" : "Parameter", - "outputs" : ["Parameter_13945"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14974", - "op" : "Parameter", - "outputs" : ["Parameter_14974"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16568", - "op" : "Parameter", - "outputs" : ["Parameter_16568"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14516", - "op" : "Parameter", - "outputs" : ["Parameter_14516"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14101", - "op" : "Parameter", - "outputs" : ["Parameter_14101"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17214", - "op" : "Parameter", - "outputs" : ["Parameter_17214"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16243", - "op" : "Parameter", - "outputs" : ["Parameter_16243"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14156", - "op" : "Parameter", - "outputs" : ["Parameter_14156"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16951", - "op" : "Parameter", - "outputs" : ["Parameter_16951"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13926", - "op" : "Parameter", - "outputs" : ["Parameter_13926"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16834", - "op" : "Parameter", - "outputs" : ["Parameter_16834"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16370", - "op" : "Parameter", - "outputs" : ["Parameter_16370"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14981", - "op" : "Parameter", - "outputs" : ["Parameter_14981"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15458", - "op" : "Parameter", - "outputs" : ["Parameter_15458"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13934", - "op" : "Parameter", - "outputs" : ["Parameter_13934"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13964", - "op" : "Parameter", - "outputs" : ["Parameter_13964"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15499", - "op" : "Parameter", - "outputs" : ["Parameter_15499"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17587", - "op" : "Parameter", - "outputs" : ["Parameter_17587"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14307", - "op" : "Parameter", - "outputs" : ["Parameter_14307"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17315", - "op" : "Parameter", - "outputs" : ["Parameter_17315"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13821", - "op" : "Parameter", - "outputs" : ["Parameter_13821"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16417", - "op" : "Parameter", - "outputs" : ["Parameter_16417"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16237", - "op" : "Parameter", - "outputs" : ["Parameter_16237"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14735", - "op" : "Parameter", - "outputs" : ["Parameter_14735"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16530", - "op" : "Parameter", - "outputs" : ["Parameter_16530"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15935", - "op" : "Parameter", - "outputs" : ["Parameter_15935"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15703", - "op" : "Parameter", - "outputs" : ["Parameter_15703"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14442", - "op" : "Parameter", - "outputs" : ["Parameter_14442"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13839", - "op" : "Parameter", - "outputs" : ["Parameter_13839"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14823", - "op" : "Parameter", - "outputs" : ["Parameter_14823"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14943", - "op" : "Parameter", - "outputs" : ["Parameter_14943"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13776", - "op" : "Parameter", - "outputs" : ["Parameter_13776"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_17989", - "op" : "Parameter", - "outputs" : ["Parameter_17989"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17019", - "op" : "Parameter", - "outputs" : ["Parameter_17019"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15224", - "op" : "Parameter", - "outputs" : ["Parameter_15224"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17660", - "op" : "Parameter", - "outputs" : ["Parameter_17660"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13915", - "op" : "Parameter", - "outputs" : ["Parameter_13915"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15739", - "op" : "Parameter", - "outputs" : ["Parameter_15739"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14202", - "op" : "Parameter", - "outputs" : ["Parameter_14202"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17120", - "op" : "Parameter", - "outputs" : ["Parameter_17120"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14833", - "op" : "Parameter", - "outputs" : ["Parameter_14833"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16315", - "op" : "Parameter", - "outputs" : ["Parameter_16315"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13786", - "op" : "Parameter", - "outputs" : ["Parameter_13786"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18069", - "op" : "Parameter", - "outputs" : ["Parameter_18069"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14268", - "op" : "Parameter", - "outputs" : ["Parameter_14268"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17400", - "op" : "Parameter", - "outputs" : ["Parameter_17400"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16605", - "op" : "Parameter", - "outputs" : ["Parameter_16605"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13870", - "op" : "Parameter", - "outputs" : ["Parameter_13870"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15842", - "op" : "Parameter", - "outputs" : ["Parameter_15842"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14409", - "op" : "Parameter", - "outputs" : ["Parameter_14409"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16772", - "op" : "Parameter", - "outputs" : ["Parameter_16772"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13904", - "op" : "Parameter", - "outputs" : ["Parameter_13904"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16546", - "op" : "Parameter", - "outputs" : ["Parameter_16546"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15645", - "op" : "Parameter", - "outputs" : ["Parameter_15645"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14985", - "op" : "Parameter", - "outputs" : ["Parameter_14985"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15040", - "op" : "Parameter", - "outputs" : ["Parameter_15040"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13955", - "op" : "Parameter", - "outputs" : ["Parameter_13955"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14713", - "op" : "Parameter", - "outputs" : ["Parameter_14713"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15391", - "op" : "Parameter", - "outputs" : ["Parameter_15391"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16210", - "op" : "Parameter", - "outputs" : ["Parameter_16210"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15284", - "op" : "Parameter", - "outputs" : ["Parameter_15284"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14486", - "op" : "Parameter", - "outputs" : ["Parameter_14486"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17272", - "op" : "Parameter", - "outputs" : ["Parameter_17272"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14161", - "op" : "Parameter", - "outputs" : ["Parameter_14161"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13817", - "op" : "Parameter", - "outputs" : ["Parameter_13817"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13894", - "op" : "Parameter", - "outputs" : ["Parameter_13894"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17451", - "op" : "Parameter", - "outputs" : ["Parameter_17451"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14250", - "op" : "Parameter", - "outputs" : ["Parameter_14250"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13970", - "op" : "Parameter", - "outputs" : ["Parameter_13970"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13893", - "op" : "Parameter", - "outputs" : ["Parameter_13893"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13905", - "op" : "Parameter", - "outputs" : ["Parameter_13905"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14165", - "op" : "Parameter", - "outputs" : ["Parameter_14165"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14800", - "op" : "Parameter", - "outputs" : ["Parameter_14800"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16277", - "op" : "Parameter", - "outputs" : ["Parameter_16277"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15515", - "op" : "Parameter", - "outputs" : ["Parameter_15515"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15076", - "op" : "Parameter", - "outputs" : ["Parameter_15076"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16141", - "op" : "Parameter", - "outputs" : ["Parameter_16141"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13891", - "op" : "Parameter", - "outputs" : ["Parameter_13891"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14439", - "op" : "Parameter", - "outputs" : ["Parameter_14439"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17226", - "op" : "Parameter", - "outputs" : ["Parameter_17226"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15555", - "op" : "Parameter", - "outputs" : ["Parameter_15555"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14822", - "op" : "Parameter", - "outputs" : ["Parameter_14822"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15379", - "op" : "Parameter", - "outputs" : ["Parameter_15379"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14193", - "op" : "Parameter", - "outputs" : ["Parameter_14193"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16492", - "op" : "Parameter", - "outputs" : ["Parameter_16492"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13884", - "op" : "Parameter", - "outputs" : ["Parameter_13884"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15121", - "op" : "Parameter", - "outputs" : ["Parameter_15121"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17681", - "op" : "Parameter", - "outputs" : ["Parameter_17681"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13883", - "op" : "Parameter", - "outputs" : ["Parameter_13883"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13900", - "op" : "Parameter", - "outputs" : ["Parameter_13900"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13959", - "op" : "Parameter", - "outputs" : ["Parameter_13959"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15023", - "op" : "Parameter", - "outputs" : ["Parameter_15023"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14565", - "op" : "Parameter", - "outputs" : ["Parameter_14565"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13823", - "op" : "Parameter", - "outputs" : ["Parameter_13823"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15081", - "op" : "Parameter", - "outputs" : ["Parameter_15081"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14466", - "op" : "Parameter", - "outputs" : ["Parameter_14466"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18351", - "op" : "Parameter", - "outputs" : ["Parameter_18351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15137", - "op" : "Parameter", - "outputs" : ["Parameter_15137"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16954", - "op" : "Parameter", - "outputs" : ["Parameter_16954"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15151", - "op" : "Parameter", - "outputs" : ["Parameter_15151"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14975", - "op" : "Parameter", - "outputs" : ["Parameter_14975"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14154", - "op" : "Parameter", - "outputs" : ["Parameter_14154"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17163", - "op" : "Parameter", - "outputs" : ["Parameter_17163"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16869", - "op" : "Parameter", - "outputs" : ["Parameter_16869"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18091", - "op" : "Parameter", - "outputs" : ["Parameter_18091"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16192", - "op" : "Parameter", - "outputs" : ["Parameter_16192"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13881", - "op" : "Parameter", - "outputs" : ["Parameter_13881"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14865", - "op" : "Parameter", - "outputs" : ["Parameter_14865"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16342", - "op" : "Parameter", - "outputs" : ["Parameter_16342"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16206", - "op" : "Parameter", - "outputs" : ["Parameter_16206"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13880", - "op" : "Parameter", - "outputs" : ["Parameter_13880"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15620", - "op" : "Parameter", - "outputs" : ["Parameter_15620"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15919", - "op" : "Parameter", - "outputs" : ["Parameter_15919"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15610", - "op" : "Parameter", - "outputs" : ["Parameter_15610"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13879", - "op" : "Parameter", - "outputs" : ["Parameter_13879"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16958", - "op" : "Parameter", - "outputs" : ["Parameter_16958"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14552", - "op" : "Parameter", - "outputs" : ["Parameter_14552"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14035", - "op" : "Parameter", - "outputs" : ["Parameter_14035"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13877", - "op" : "Parameter", - "outputs" : ["Parameter_13877"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17290", - "op" : "Parameter", - "outputs" : ["Parameter_17290"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14240", - "op" : "Parameter", - "outputs" : ["Parameter_14240"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15200", - "op" : "Parameter", - "outputs" : ["Parameter_15200"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17710", - "op" : "Parameter", - "outputs" : ["Parameter_17710"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15444", - "op" : "Parameter", - "outputs" : ["Parameter_15444"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15975", - "op" : "Parameter", - "outputs" : ["Parameter_15975"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14783", - "op" : "Parameter", - "outputs" : ["Parameter_14783"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14375", - "op" : "Parameter", - "outputs" : ["Parameter_14375"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15236", - "op" : "Parameter", - "outputs" : ["Parameter_15236"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14515", - "op" : "Parameter", - "outputs" : ["Parameter_14515"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14042", - "op" : "Parameter", - "outputs" : ["Parameter_14042"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14171", - "op" : "Parameter", - "outputs" : ["Parameter_14171"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15885", - "op" : "Parameter", - "outputs" : ["Parameter_15885"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14462", - "op" : "Parameter", - "outputs" : ["Parameter_14462"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13810", - "op" : "Parameter", - "outputs" : ["Parameter_13810"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16588", - "op" : "Parameter", - "outputs" : ["Parameter_16588"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14317", - "op" : "Parameter", - "outputs" : ["Parameter_14317"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16636", - "op" : "Parameter", - "outputs" : ["Parameter_16636"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13873", - "op" : "Parameter", - "outputs" : ["Parameter_13873"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14263", - "op" : "Parameter", - "outputs" : ["Parameter_14263"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14675", - "op" : "Parameter", - "outputs" : ["Parameter_14675"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14395", - "op" : "Parameter", - "outputs" : ["Parameter_14395"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16734", - "op" : "Parameter", - "outputs" : ["Parameter_16734"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14603", - "op" : "Parameter", - "outputs" : ["Parameter_14603"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13978", - "op" : "Parameter", - "outputs" : ["Parameter_13978"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14502", - "op" : "Parameter", - "outputs" : ["Parameter_14502"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13805", - "op" : "Parameter", - "outputs" : ["Parameter_13805"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14686", - "op" : "Parameter", - "outputs" : ["Parameter_14686"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16276", - "op" : "Parameter", - "outputs" : ["Parameter_16276"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14330", - "op" : "Parameter", - "outputs" : ["Parameter_14330"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15545", - "op" : "Parameter", - "outputs" : ["Parameter_15545"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13890", - "op" : "Parameter", - "outputs" : ["Parameter_13890"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14073", - "op" : "Parameter", - "outputs" : ["Parameter_14073"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15170", - "op" : "Parameter", - "outputs" : ["Parameter_15170"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14285", - "op" : "Parameter", - "outputs" : ["Parameter_14285"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14398", - "op" : "Parameter", - "outputs" : ["Parameter_14398"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16604", - "op" : "Parameter", - "outputs" : ["Parameter_16604"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15872", - "op" : "Parameter", - "outputs" : ["Parameter_15872"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14000", - "op" : "Parameter", - "outputs" : ["Parameter_14000"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16795", - "op" : "Parameter", - "outputs" : ["Parameter_16795"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16486", - "op" : "Parameter", - "outputs" : ["Parameter_16486"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14902", - "op" : "Parameter", - "outputs" : ["Parameter_14902"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15950", - "op" : "Parameter", - "outputs" : ["Parameter_15950"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13899", - "op" : "Parameter", - "outputs" : ["Parameter_13899"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14371", - "op" : "Parameter", - "outputs" : ["Parameter_14371"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13935", - "op" : "Parameter", - "outputs" : ["Parameter_13935"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15642", - "op" : "Parameter", - "outputs" : ["Parameter_15642"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15108", - "op" : "Parameter", - "outputs" : ["Parameter_15108"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13864", - "op" : "Parameter", - "outputs" : ["Parameter_13864"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13785", - "op" : "Parameter", - "outputs" : ["Parameter_13785"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14860", - "op" : "Parameter", - "outputs" : ["Parameter_14860"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13799", - "op" : "Parameter", - "outputs" : ["Parameter_13799"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13812", - "op" : "Parameter", - "outputs" : ["Parameter_13812"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17057", - "op" : "Parameter", - "outputs" : ["Parameter_17057"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16789", - "op" : "Parameter", - "outputs" : ["Parameter_16789"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14851", - "op" : "Parameter", - "outputs" : ["Parameter_14851"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14143", - "op" : "Parameter", - "outputs" : ["Parameter_14143"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16484", - "op" : "Parameter", - "outputs" : ["Parameter_16484"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14006", - "op" : "Parameter", - "outputs" : ["Parameter_14006"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14168", - "op" : "Parameter", - "outputs" : ["Parameter_14168"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16811", - "op" : "Parameter", - "outputs" : ["Parameter_16811"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15296", - "op" : "Parameter", - "outputs" : ["Parameter_15296"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14593", - "op" : "Parameter", - "outputs" : ["Parameter_14593"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16934", - "op" : "Parameter", - "outputs" : ["Parameter_16934"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18156", - "op" : "Parameter", - "outputs" : ["Parameter_18156"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16257", - "op" : "Parameter", - "outputs" : ["Parameter_16257"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16698", - "op" : "Parameter", - "outputs" : ["Parameter_16698"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15874", - "op" : "Parameter", - "outputs" : ["Parameter_15874"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14079", - "op" : "Parameter", - "outputs" : ["Parameter_14079"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14604", - "op" : "Parameter", - "outputs" : ["Parameter_14604"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16497", - "op" : "Parameter", - "outputs" : ["Parameter_16497"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18166", - "op" : "Parameter", - "outputs" : ["Parameter_18166"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15314", - "op" : "Parameter", - "outputs" : ["Parameter_15314"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14204", - "op" : "Parameter", - "outputs" : ["Parameter_14204"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14365", - "op" : "Parameter", - "outputs" : ["Parameter_14365"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14968", - "op" : "Parameter", - "outputs" : ["Parameter_14968"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13788", - "op" : "Parameter", - "outputs" : ["Parameter_13788"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14257", - "op" : "Parameter", - "outputs" : ["Parameter_14257"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17465", - "op" : "Parameter", - "outputs" : ["Parameter_17465"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15089", - "op" : "Parameter", - "outputs" : ["Parameter_15089"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17443", - "op" : "Parameter", - "outputs" : ["Parameter_17443"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13808", - "op" : "Parameter", - "outputs" : ["Parameter_13808"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17939", - "op" : "Parameter", - "outputs" : ["Parameter_17939"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13834", - "op" : "Parameter", - "outputs" : ["Parameter_13834"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16653", - "op" : "Parameter", - "outputs" : ["Parameter_16653"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15149", - "op" : "Parameter", - "outputs" : ["Parameter_15149"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14306", - "op" : "Parameter", - "outputs" : ["Parameter_14306"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13798", - "op" : "Parameter", - "outputs" : ["Parameter_13798"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17043", - "op" : "Parameter", - "outputs" : ["Parameter_17043"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15383", - "op" : "Parameter", - "outputs" : ["Parameter_15383"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15767", - "op" : "Parameter", - "outputs" : ["Parameter_15767"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13862", - "op" : "Parameter", - "outputs" : ["Parameter_13862"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14523", - "op" : "Parameter", - "outputs" : ["Parameter_14523"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14252", - "op" : "Parameter", - "outputs" : ["Parameter_14252"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14070", - "op" : "Parameter", - "outputs" : ["Parameter_14070"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16489", - "op" : "Parameter", - "outputs" : ["Parameter_16489"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17178", - "op" : "Parameter", - "outputs" : ["Parameter_17178"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15902", - "op" : "Parameter", - "outputs" : ["Parameter_15902"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14753", - "op" : "Parameter", - "outputs" : ["Parameter_14753"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14384", - "op" : "Parameter", - "outputs" : ["Parameter_14384"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14262", - "op" : "Parameter", - "outputs" : ["Parameter_14262"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16017", - "op" : "Parameter", - "outputs" : ["Parameter_16017"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13975", - "op" : "Parameter", - "outputs" : ["Parameter_13975"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15434", - "op" : "Parameter", - "outputs" : ["Parameter_15434"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17522", - "op" : "Parameter", - "outputs" : ["Parameter_17522"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13850", - "op" : "Parameter", - "outputs" : ["Parameter_13850"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17711", - "op" : "Parameter", - "outputs" : ["Parameter_17711"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14098", - "op" : "Parameter", - "outputs" : ["Parameter_14098"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16991", - "op" : "Parameter", - "outputs" : ["Parameter_16991"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13831", - "op" : "Parameter", - "outputs" : ["Parameter_13831"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14170", - "op" : "Parameter", - "outputs" : ["Parameter_14170"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13772", - "op" : "Parameter", - "outputs" : ["Parameter_13772"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_14534", - "op" : "Parameter", - "outputs" : ["Parameter_14534"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14629", - "op" : "Parameter", - "outputs" : ["Parameter_14629"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17116", - "op" : "Parameter", - "outputs" : ["Parameter_17116"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15427", - "op" : "Parameter", - "outputs" : ["Parameter_15427"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17225", - "op" : "Parameter", - "outputs" : ["Parameter_17225"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14509", - "op" : "Parameter", - "outputs" : ["Parameter_14509"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14120", - "op" : "Parameter", - "outputs" : ["Parameter_14120"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14266", - "op" : "Parameter", - "outputs" : ["Parameter_14266"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15211", - "op" : "Parameter", - "outputs" : ["Parameter_15211"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14097", - "op" : "Parameter", - "outputs" : ["Parameter_14097"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17478", - "op" : "Parameter", - "outputs" : ["Parameter_17478"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15693", - "op" : "Parameter", - "outputs" : ["Parameter_15693"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14891", - "op" : "Parameter", - "outputs" : ["Parameter_14891"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15235", - "op" : "Parameter", - "outputs" : ["Parameter_15235"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14520", - "op" : "Parameter", - "outputs" : ["Parameter_14520"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15465", - "op" : "Parameter", - "outputs" : ["Parameter_15465"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17325", - "op" : "Parameter", - "outputs" : ["Parameter_17325"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14341", - "op" : "Parameter", - "outputs" : ["Parameter_14341"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13963", - "op" : "Parameter", - "outputs" : ["Parameter_13963"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13917", - "op" : "Parameter", - "outputs" : ["Parameter_13917"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17241", - "op" : "Parameter", - "outputs" : ["Parameter_17241"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15387", - "op" : "Parameter", - "outputs" : ["Parameter_15387"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13827", - "op" : "Parameter", - "outputs" : ["Parameter_13827"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14029", - "op" : "Parameter", - "outputs" : ["Parameter_14029"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15206", - "op" : "Parameter", - "outputs" : ["Parameter_15206"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17727", - "op" : "Parameter", - "outputs" : ["Parameter_17727"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14030", - "op" : "Parameter", - "outputs" : ["Parameter_14030"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14357", - "op" : "Parameter", - "outputs" : ["Parameter_14357"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15316", - "op" : "Parameter", - "outputs" : ["Parameter_15316"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18304", - "op" : "Parameter", - "outputs" : ["Parameter_18304"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16427", - "op" : "Parameter", - "outputs" : ["Parameter_16427"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15051", - "op" : "Parameter", - "outputs" : ["Parameter_15051"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15014", - "op" : "Parameter", - "outputs" : ["Parameter_15014"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14463", - "op" : "Parameter", - "outputs" : ["Parameter_14463"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13895", - "op" : "Parameter", - "outputs" : ["Parameter_13895"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13941", - "op" : "Parameter", - "outputs" : ["Parameter_13941"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17468", - "op" : "Parameter", - "outputs" : ["Parameter_17468"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13855", - "op" : "Parameter", - "outputs" : ["Parameter_13855"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14415", - "op" : "Parameter", - "outputs" : ["Parameter_14415"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14465", - "op" : "Parameter", - "outputs" : ["Parameter_14465"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14679", - "op" : "Parameter", - "outputs" : ["Parameter_14679"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14434", - "op" : "Parameter", - "outputs" : ["Parameter_14434"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13976", - "op" : "Parameter", - "outputs" : ["Parameter_13976"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15435", - "op" : "Parameter", - "outputs" : ["Parameter_15435"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17149", - "op" : "Parameter", - "outputs" : ["Parameter_17149"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14167", - "op" : "Parameter", - "outputs" : ["Parameter_14167"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14674", - "op" : "Parameter", - "outputs" : ["Parameter_14674"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15273", - "op" : "Parameter", - "outputs" : ["Parameter_15273"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15113", - "op" : "Parameter", - "outputs" : ["Parameter_15113"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16023", - "op" : "Parameter", - "outputs" : ["Parameter_16023"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15472", - "op" : "Parameter", - "outputs" : ["Parameter_15472"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17165", - "op" : "Parameter", - "outputs" : ["Parameter_17165"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13777", - "op" : "Parameter", - "outputs" : ["Parameter_13777"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14989", - "op" : "Parameter", - "outputs" : ["Parameter_14989"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14380", - "op" : "Parameter", - "outputs" : ["Parameter_14380"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14589", - "op" : "Parameter", - "outputs" : ["Parameter_14589"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14142", - "op" : "Parameter", - "outputs" : ["Parameter_14142"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16203", - "op" : "Parameter", - "outputs" : ["Parameter_16203"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14329", - "op" : "Parameter", - "outputs" : ["Parameter_14329"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14592", - "op" : "Parameter", - "outputs" : ["Parameter_14592"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13793", - "op" : "Parameter", - "outputs" : ["Parameter_13793"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15355", - "op" : "Parameter", - "outputs" : ["Parameter_15355"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14428", - "op" : "Parameter", - "outputs" : ["Parameter_14428"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16429", - "op" : "Parameter", - "outputs" : ["Parameter_16429"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15986", - "op" : "Parameter", - "outputs" : ["Parameter_15986"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17667", - "op" : "Parameter", - "outputs" : ["Parameter_17667"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17113", - "op" : "Parameter", - "outputs" : ["Parameter_17113"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14224", - "op" : "Parameter", - "outputs" : ["Parameter_14224"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17757", - "op" : "Parameter", - "outputs" : ["Parameter_17757"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15097", - "op" : "Parameter", - "outputs" : ["Parameter_15097"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14003", - "op" : "Parameter", - "outputs" : ["Parameter_14003"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14595", - "op" : "Parameter", - "outputs" : ["Parameter_14595"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14051", - "op" : "Parameter", - "outputs" : ["Parameter_14051"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14572", - "op" : "Parameter", - "outputs" : ["Parameter_14572"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14216", - "op" : "Parameter", - "outputs" : ["Parameter_14216"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15632", - "op" : "Parameter", - "outputs" : ["Parameter_15632"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17720", - "op" : "Parameter", - "outputs" : ["Parameter_17720"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15039", - "op" : "Parameter", - "outputs" : ["Parameter_15039"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16909", - "op" : "Parameter", - "outputs" : ["Parameter_16909"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14004", - "op" : "Parameter", - "outputs" : ["Parameter_14004"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18217", - "op" : "Parameter", - "outputs" : ["Parameter_18217"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16598", - "op" : "Parameter", - "outputs" : ["Parameter_16598"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15340", - "op" : "Parameter", - "outputs" : ["Parameter_15340"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15549", - "op" : "Parameter", - "outputs" : ["Parameter_15549"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15363", - "op" : "Parameter", - "outputs" : ["Parameter_15363"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17716", - "op" : "Parameter", - "outputs" : ["Parameter_17716"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16821", - "op" : "Parameter", - "outputs" : ["Parameter_16821"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13948", - "op" : "Parameter", - "outputs" : ["Parameter_13948"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14228", - "op" : "Parameter", - "outputs" : ["Parameter_14228"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16335", - "op" : "Parameter", - "outputs" : ["Parameter_16335"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16049", - "op" : "Parameter", - "outputs" : ["Parameter_16049"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15644", - "op" : "Parameter", - "outputs" : ["Parameter_15644"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14868", - "op" : "Parameter", - "outputs" : ["Parameter_14868"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15740", - "op" : "Parameter", - "outputs" : ["Parameter_15740"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14116", - "op" : "Parameter", - "outputs" : ["Parameter_14116"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15834", - "op" : "Parameter", - "outputs" : ["Parameter_15834"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13868", - "op" : "Parameter", - "outputs" : ["Parameter_13868"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15336", - "op" : "Parameter", - "outputs" : ["Parameter_15336"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15092", - "op" : "Parameter", - "outputs" : ["Parameter_15092"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16895", - "op" : "Parameter", - "outputs" : ["Parameter_16895"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15203", - "op" : "Parameter", - "outputs" : ["Parameter_15203"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15506", - "op" : "Parameter", - "outputs" : ["Parameter_15506"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15083", - "op" : "Parameter", - "outputs" : ["Parameter_15083"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17941", - "op" : "Parameter", - "outputs" : ["Parameter_17941"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15247", - "op" : "Parameter", - "outputs" : ["Parameter_15247"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13768", - "op" : "Parameter", - "outputs" : ["Parameter_13768"], - "shape" : [10000], - "value_type" : {"element_type" : "float", "shape" : [10000]} - }, - { - "inputs" : [], - "name" : "Parameter_14664", - "op" : "Parameter", - "outputs" : ["Parameter_14664"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15249", - "op" : "Parameter", - "outputs" : ["Parameter_15249"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13952", - "op" : "Parameter", - "outputs" : ["Parameter_13952"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14429", - "op" : "Parameter", - "outputs" : ["Parameter_14429"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13916", - "op" : "Parameter", - "outputs" : ["Parameter_13916"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14661", - "op" : "Parameter", - "outputs" : ["Parameter_14661"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18155", - "op" : "Parameter", - "outputs" : ["Parameter_18155"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15721", - "op" : "Parameter", - "outputs" : ["Parameter_15721"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14649", - "op" : "Parameter", - "outputs" : ["Parameter_14649"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16858", - "op" : "Parameter", - "outputs" : ["Parameter_16858"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15600", - "op" : "Parameter", - "outputs" : ["Parameter_15600"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15184", - "op" : "Parameter", - "outputs" : ["Parameter_15184"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14174", - "op" : "Parameter", - "outputs" : ["Parameter_14174"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14299", - "op" : "Parameter", - "outputs" : ["Parameter_14299"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14548", - "op" : "Parameter", - "outputs" : ["Parameter_14548"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15012", - "op" : "Parameter", - "outputs" : ["Parameter_15012"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14383", - "op" : "Parameter", - "outputs" : ["Parameter_14383"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13778", - "op" : "Parameter", - "outputs" : ["Parameter_13778"], - "shape" : [ 32, 60, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15923", - "op" : "Parameter", - "outputs" : ["Parameter_15923"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14089", - "op" : "Parameter", - "outputs" : ["Parameter_14089"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14832", - "op" : "Parameter", - "outputs" : ["Parameter_14832"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14470", - "op" : "Parameter", - "outputs" : ["Parameter_14470"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17492", - "op" : "Parameter", - "outputs" : ["Parameter_17492"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16143", - "op" : "Parameter", - "outputs" : ["Parameter_16143"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14355", - "op" : "Parameter", - "outputs" : ["Parameter_14355"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18282", - "op" : "Parameter", - "outputs" : ["Parameter_18282"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14032", - "op" : "Parameter", - "outputs" : ["Parameter_14032"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13771", - "op" : "Parameter", - "outputs" : ["Parameter_13771"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15272", - "op" : "Parameter", - "outputs" : ["Parameter_15272"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14064", - "op" : "Parameter", - "outputs" : ["Parameter_14064"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16793", - "op" : "Parameter", - "outputs" : ["Parameter_16793"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13789", - "op" : "Parameter", - "outputs" : ["Parameter_13789"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17858", - "op" : "Parameter", - "outputs" : ["Parameter_17858"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14752", - "op" : "Parameter", - "outputs" : ["Parameter_14752"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15084", - "op" : "Parameter", - "outputs" : ["Parameter_15084"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13882", - "op" : "Parameter", - "outputs" : ["Parameter_13882"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16988", - "op" : "Parameter", - "outputs" : ["Parameter_16988"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15064", - "op" : "Parameter", - "outputs" : ["Parameter_15064"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14542", - "op" : "Parameter", - "outputs" : ["Parameter_14542"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15006", - "op" : "Parameter", - "outputs" : ["Parameter_15006"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13885", - "op" : "Parameter", - "outputs" : ["Parameter_13885"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17473", - "op" : "Parameter", - "outputs" : ["Parameter_17473"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15243", - "op" : "Parameter", - "outputs" : ["Parameter_15243"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14991", - "op" : "Parameter", - "outputs" : ["Parameter_14991"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13816", - "op" : "Parameter", - "outputs" : ["Parameter_13816"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14018", - "op" : "Parameter", - "outputs" : ["Parameter_14018"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14490", - "op" : "Parameter", - "outputs" : ["Parameter_14490"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15523", - "op" : "Parameter", - "outputs" : ["Parameter_15523"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16865", - "op" : "Parameter", - "outputs" : ["Parameter_16865"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14483", - "op" : "Parameter", - "outputs" : ["Parameter_14483"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17329", - "op" : "Parameter", - "outputs" : ["Parameter_17329"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14983", - "op" : "Parameter", - "outputs" : ["Parameter_14983"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14139", - "op" : "Parameter", - "outputs" : ["Parameter_14139"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16850", - "op" : "Parameter", - "outputs" : ["Parameter_16850"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14405", - "op" : "Parameter", - "outputs" : ["Parameter_14405"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13784", - "op" : "Parameter", - "outputs" : ["Parameter_13784"], - "shape" : [ 32, 60, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14660", - "op" : "Parameter", - "outputs" : ["Parameter_14660"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14132", - "op" : "Parameter", - "outputs" : ["Parameter_14132"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14894", - "op" : "Parameter", - "outputs" : ["Parameter_14894"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17160", - "op" : "Parameter", - "outputs" : ["Parameter_17160"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17369", - "op" : "Parameter", - "outputs" : ["Parameter_17369"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18124", - "op" : "Parameter", - "outputs" : ["Parameter_18124"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15257", - "op" : "Parameter", - "outputs" : ["Parameter_15257"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15614", - "op" : "Parameter", - "outputs" : ["Parameter_15614"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15405", - "op" : "Parameter", - "outputs" : ["Parameter_15405"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14123", - "op" : "Parameter", - "outputs" : ["Parameter_14123"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14513", - "op" : "Parameter", - "outputs" : ["Parameter_14513"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17313", - "op" : "Parameter", - "outputs" : ["Parameter_17313"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13830", - "op" : "Parameter", - "outputs" : ["Parameter_13830"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17146", - "op" : "Parameter", - "outputs" : ["Parameter_17146"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14518", - "op" : "Parameter", - "outputs" : ["Parameter_14518"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17531", - "op" : "Parameter", - "outputs" : ["Parameter_17531"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14173", - "op" : "Parameter", - "outputs" : ["Parameter_14173"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14997", - "op" : "Parameter", - "outputs" : ["Parameter_14997"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14538", - "op" : "Parameter", - "outputs" : ["Parameter_14538"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15441", - "op" : "Parameter", - "outputs" : ["Parameter_15441"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17876", - "op" : "Parameter", - "outputs" : ["Parameter_17876"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18356", - "op" : "Parameter", - "outputs" : ["Parameter_18356"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16172", - "op" : "Parameter", - "outputs" : ["Parameter_16172"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14955", - "op" : "Parameter", - "outputs" : ["Parameter_14955"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15451", - "op" : "Parameter", - "outputs" : ["Parameter_15451"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16216", - "op" : "Parameter", - "outputs" : ["Parameter_16216"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15433", - "op" : "Parameter", - "outputs" : ["Parameter_15433"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17218", - "op" : "Parameter", - "outputs" : ["Parameter_17218"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16271", - "op" : "Parameter", - "outputs" : ["Parameter_16271"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17114", - "op" : "Parameter", - "outputs" : ["Parameter_17114"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14549", - "op" : "Parameter", - "outputs" : ["Parameter_14549"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17880", - "op" : "Parameter", - "outputs" : ["Parameter_17880"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14705", - "op" : "Parameter", - "outputs" : ["Parameter_14705"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16098", - "op" : "Parameter", - "outputs" : ["Parameter_16098"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14643", - "op" : "Parameter", - "outputs" : ["Parameter_14643"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17198", - "op" : "Parameter", - "outputs" : ["Parameter_17198"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15800", - "op" : "Parameter", - "outputs" : ["Parameter_15800"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14893", - "op" : "Parameter", - "outputs" : ["Parameter_14893"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13956", - "op" : "Parameter", - "outputs" : ["Parameter_13956"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14294", - "op" : "Parameter", - "outputs" : ["Parameter_14294"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15637", - "op" : "Parameter", - "outputs" : ["Parameter_15637"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16383", - "op" : "Parameter", - "outputs" : ["Parameter_16383"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13971", - "op" : "Parameter", - "outputs" : ["Parameter_13971"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17500", - "op" : "Parameter", - "outputs" : ["Parameter_17500"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14915", - "op" : "Parameter", - "outputs" : ["Parameter_14915"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15676", - "op" : "Parameter", - "outputs" : ["Parameter_15676"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14770", - "op" : "Parameter", - "outputs" : ["Parameter_14770"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13876", - "op" : "Parameter", - "outputs" : ["Parameter_13876"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13796", - "op" : "Parameter", - "outputs" : ["Parameter_13796"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14473", - "op" : "Parameter", - "outputs" : ["Parameter_14473"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14423", - "op" : "Parameter", - "outputs" : ["Parameter_14423"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14117", - "op" : "Parameter", - "outputs" : ["Parameter_14117"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16677", - "op" : "Parameter", - "outputs" : ["Parameter_16677"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14284", - "op" : "Parameter", - "outputs" : ["Parameter_14284"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14311", - "op" : "Parameter", - "outputs" : ["Parameter_14311"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13843", - "op" : "Parameter", - "outputs" : ["Parameter_13843"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18302", - "op" : "Parameter", - "outputs" : ["Parameter_18302"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16145", - "op" : "Parameter", - "outputs" : ["Parameter_16145"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14290", - "op" : "Parameter", - "outputs" : ["Parameter_14290"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15219", - "op" : "Parameter", - "outputs" : ["Parameter_15219"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17128", - "op" : "Parameter", - "outputs" : ["Parameter_17128"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13792", - "op" : "Parameter", - "outputs" : ["Parameter_13792"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13919", - "op" : "Parameter", - "outputs" : ["Parameter_13919"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13790", - "op" : "Parameter", - "outputs" : ["Parameter_13790"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15110", - "op" : "Parameter", - "outputs" : ["Parameter_15110"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15330", - "op" : "Parameter", - "outputs" : ["Parameter_15330"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13972", - "op" : "Parameter", - "outputs" : ["Parameter_13972"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18316", - "op" : "Parameter", - "outputs" : ["Parameter_18316"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15808", - "op" : "Parameter", - "outputs" : ["Parameter_15808"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15048", - "op" : "Parameter", - "outputs" : ["Parameter_15048"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15861", - "op" : "Parameter", - "outputs" : ["Parameter_15861"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18387", - "op" : "Parameter", - "outputs" : ["Parameter_18387"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14708", - "op" : "Parameter", - "outputs" : ["Parameter_14708"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17441", - "op" : "Parameter", - "outputs" : ["Parameter_17441"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16685", - "op" : "Parameter", - "outputs" : ["Parameter_16685"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16805", - "op" : "Parameter", - "outputs" : ["Parameter_16805"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16047", - "op" : "Parameter", - "outputs" : ["Parameter_16047"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14404", - "op" : "Parameter", - "outputs" : ["Parameter_14404"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14086", - "op" : "Parameter", - "outputs" : ["Parameter_14086"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13814", - "op" : "Parameter", - "outputs" : ["Parameter_13814"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16913", - "op" : "Parameter", - "outputs" : ["Parameter_16913"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15233", - "op" : "Parameter", - "outputs" : ["Parameter_15233"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17586", - "op" : "Parameter", - "outputs" : ["Parameter_17586"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16882", - "op" : "Parameter", - "outputs" : ["Parameter_16882"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14489", - "op" : "Parameter", - "outputs" : ["Parameter_14489"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13818", - "op" : "Parameter", - "outputs" : ["Parameter_13818"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14762", - "op" : "Parameter", - "outputs" : ["Parameter_14762"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15241", - "op" : "Parameter", - "outputs" : ["Parameter_15241"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18229", - "op" : "Parameter", - "outputs" : ["Parameter_18229"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17378", - "op" : "Parameter", - "outputs" : ["Parameter_17378"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13819", - "op" : "Parameter", - "outputs" : ["Parameter_13819"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17020", - "op" : "Parameter", - "outputs" : ["Parameter_17020"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15674", - "op" : "Parameter", - "outputs" : ["Parameter_15674"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14213", - "op" : "Parameter", - "outputs" : ["Parameter_14213"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17822", - "op" : "Parameter", - "outputs" : ["Parameter_17822"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13995", - "op" : "Parameter", - "outputs" : ["Parameter_13995"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16549", - "op" : "Parameter", - "outputs" : ["Parameter_16549"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18290", - "op" : "Parameter", - "outputs" : ["Parameter_18290"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13815", - "op" : "Parameter", - "outputs" : ["Parameter_13815"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13825", - "op" : "Parameter", - "outputs" : ["Parameter_13825"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16441", - "op" : "Parameter", - "outputs" : ["Parameter_16441"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15161", - "op" : "Parameter", - "outputs" : ["Parameter_15161"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15384", - "op" : "Parameter", - "outputs" : ["Parameter_15384"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17484", - "op" : "Parameter", - "outputs" : ["Parameter_17484"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14194", - "op" : "Parameter", - "outputs" : ["Parameter_14194"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14973", - "op" : "Parameter", - "outputs" : ["Parameter_14973"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13826", - "op" : "Parameter", - "outputs" : ["Parameter_13826"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14273", - "op" : "Parameter", - "outputs" : ["Parameter_14273"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13875", - "op" : "Parameter", - "outputs" : ["Parameter_13875"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15114", - "op" : "Parameter", - "outputs" : ["Parameter_15114"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17673", - "op" : "Parameter", - "outputs" : ["Parameter_17673"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16817", - "op" : "Parameter", - "outputs" : ["Parameter_16817"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13829", - "op" : "Parameter", - "outputs" : ["Parameter_13829"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14229", - "op" : "Parameter", - "outputs" : ["Parameter_14229"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14133", - "op" : "Parameter", - "outputs" : ["Parameter_14133"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17803", - "op" : "Parameter", - "outputs" : ["Parameter_17803"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14683", - "op" : "Parameter", - "outputs" : ["Parameter_14683"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15668", - "op" : "Parameter", - "outputs" : ["Parameter_15668"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14092", - "op" : "Parameter", - "outputs" : ["Parameter_14092"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13979", - "op" : "Parameter", - "outputs" : ["Parameter_13979"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14670", - "op" : "Parameter", - "outputs" : ["Parameter_14670"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17417", - "op" : "Parameter", - "outputs" : ["Parameter_17417"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14880", - "op" : "Parameter", - "outputs" : ["Parameter_14880"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14733", - "op" : "Parameter", - "outputs" : ["Parameter_14733"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14544", - "op" : "Parameter", - "outputs" : ["Parameter_14544"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14031", - "op" : "Parameter", - "outputs" : ["Parameter_14031"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16149", - "op" : "Parameter", - "outputs" : ["Parameter_16149"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14992", - "op" : "Parameter", - "outputs" : ["Parameter_14992"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17084", - "op" : "Parameter", - "outputs" : ["Parameter_17084"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15289", - "op" : "Parameter", - "outputs" : ["Parameter_15289"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14368", - "op" : "Parameter", - "outputs" : ["Parameter_14368"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18246", - "op" : "Parameter", - "outputs" : ["Parameter_18246"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14225", - "op" : "Parameter", - "outputs" : ["Parameter_14225"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14773", - "op" : "Parameter", - "outputs" : ["Parameter_14773"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13886", - "op" : "Parameter", - "outputs" : ["Parameter_13886"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14911", - "op" : "Parameter", - "outputs" : ["Parameter_14911"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15447", - "op" : "Parameter", - "outputs" : ["Parameter_15447"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16752", - "op" : "Parameter", - "outputs" : ["Parameter_16752"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13840", - "op" : "Parameter", - "outputs" : ["Parameter_13840"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15671", - "op" : "Parameter", - "outputs" : ["Parameter_15671"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14626", - "op" : "Parameter", - "outputs" : ["Parameter_14626"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16755", - "op" : "Parameter", - "outputs" : ["Parameter_16755"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14487", - "op" : "Parameter", - "outputs" : ["Parameter_14487"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16687", - "op" : "Parameter", - "outputs" : ["Parameter_16687"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13851", - "op" : "Parameter", - "outputs" : ["Parameter_13851"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15994", - "op" : "Parameter", - "outputs" : ["Parameter_15994"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14437", - "op" : "Parameter", - "outputs" : ["Parameter_14437"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13913", - "op" : "Parameter", - "outputs" : ["Parameter_13913"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14106", - "op" : "Parameter", - "outputs" : ["Parameter_14106"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13795", - "op" : "Parameter", - "outputs" : ["Parameter_13795"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16367", - "op" : "Parameter", - "outputs" : ["Parameter_16367"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18036", - "op" : "Parameter", - "outputs" : ["Parameter_18036"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14366", - "op" : "Parameter", - "outputs" : ["Parameter_14366"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14138", - "op" : "Parameter", - "outputs" : ["Parameter_14138"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16270", - "op" : "Parameter", - "outputs" : ["Parameter_16270"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15675", - "op" : "Parameter", - "outputs" : ["Parameter_15675"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15716", - "op" : "Parameter", - "outputs" : ["Parameter_15716"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14135", - "op" : "Parameter", - "outputs" : ["Parameter_14135"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17034", - "op" : "Parameter", - "outputs" : ["Parameter_17034"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14797", - "op" : "Parameter", - "outputs" : ["Parameter_14797"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14839", - "op" : "Parameter", - "outputs" : ["Parameter_14839"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16225", - "op" : "Parameter", - "outputs" : ["Parameter_16225"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14295", - "op" : "Parameter", - "outputs" : ["Parameter_14295"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15116", - "op" : "Parameter", - "outputs" : ["Parameter_15116"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16609", - "op" : "Parameter", - "outputs" : ["Parameter_16609"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17831", - "op" : "Parameter", - "outputs" : ["Parameter_17831"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15932", - "op" : "Parameter", - "outputs" : ["Parameter_15932"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13925", - "op" : "Parameter", - "outputs" : ["Parameter_13925"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14977", - "op" : "Parameter", - "outputs" : ["Parameter_14977"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15824", - "op" : "Parameter", - "outputs" : ["Parameter_15824"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13909", - "op" : "Parameter", - "outputs" : ["Parameter_13909"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17912", - "op" : "Parameter", - "outputs" : ["Parameter_17912"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15025", - "op" : "Parameter", - "outputs" : ["Parameter_15025"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13961", - "op" : "Parameter", - "outputs" : ["Parameter_13961"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15586", - "op" : "Parameter", - "outputs" : ["Parameter_15586"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14157", - "op" : "Parameter", - "outputs" : ["Parameter_14157"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14040", - "op" : "Parameter", - "outputs" : ["Parameter_14040"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13992", - "op" : "Parameter", - "outputs" : ["Parameter_13992"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17460", - "op" : "Parameter", - "outputs" : ["Parameter_17460"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15481", - "op" : "Parameter", - "outputs" : ["Parameter_15481"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14681", - "op" : "Parameter", - "outputs" : ["Parameter_14681"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14075", - "op" : "Parameter", - "outputs" : ["Parameter_14075"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14314", - "op" : "Parameter", - "outputs" : ["Parameter_14314"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15077", - "op" : "Parameter", - "outputs" : ["Parameter_15077"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13887", - "op" : "Parameter", - "outputs" : ["Parameter_13887"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18042", - "op" : "Parameter", - "outputs" : ["Parameter_18042"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13847", - "op" : "Parameter", - "outputs" : ["Parameter_13847"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14128", - "op" : "Parameter", - "outputs" : ["Parameter_14128"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13852", - "op" : "Parameter", - "outputs" : ["Parameter_13852"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14945", - "op" : "Parameter", - "outputs" : ["Parameter_14945"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17147", - "op" : "Parameter", - "outputs" : ["Parameter_17147"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16072", - "op" : "Parameter", - "outputs" : ["Parameter_16072"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13872", - "op" : "Parameter", - "outputs" : ["Parameter_13872"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17581", - "op" : "Parameter", - "outputs" : ["Parameter_17581"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15254", - "op" : "Parameter", - "outputs" : ["Parameter_15254"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15099", - "op" : "Parameter", - "outputs" : ["Parameter_15099"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14754", - "op" : "Parameter", - "outputs" : ["Parameter_14754"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13958", - "op" : "Parameter", - "outputs" : ["Parameter_13958"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13924", - "op" : "Parameter", - "outputs" : ["Parameter_13924"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16462", - "op" : "Parameter", - "outputs" : ["Parameter_16462"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15509", - "op" : "Parameter", - "outputs" : ["Parameter_15509"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14461", - "op" : "Parameter", - "outputs" : ["Parameter_14461"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13981", - "op" : "Parameter", - "outputs" : ["Parameter_13981"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13865", - "op" : "Parameter", - "outputs" : ["Parameter_13865"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13901", - "op" : "Parameter", - "outputs" : ["Parameter_13901"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15248", - "op" : "Parameter", - "outputs" : ["Parameter_15248"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14362", - "op" : "Parameter", - "outputs" : ["Parameter_14362"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13908", - "op" : "Parameter", - "outputs" : ["Parameter_13908"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13965", - "op" : "Parameter", - "outputs" : ["Parameter_13965"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15500", - "op" : "Parameter", - "outputs" : ["Parameter_15500"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15757", - "op" : "Parameter", - "outputs" : ["Parameter_15757"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14019", - "op" : "Parameter", - "outputs" : ["Parameter_14019"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15531", - "op" : "Parameter", - "outputs" : ["Parameter_15531"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14436", - "op" : "Parameter", - "outputs" : ["Parameter_14436"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15684", - "op" : "Parameter", - "outputs" : ["Parameter_15684"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16241", - "op" : "Parameter", - "outputs" : ["Parameter_16241"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14438", - "op" : "Parameter", - "outputs" : ["Parameter_14438"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13968", - "op" : "Parameter", - "outputs" : ["Parameter_13968"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14962", - "op" : "Parameter", - "outputs" : ["Parameter_14962"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15018", - "op" : "Parameter", - "outputs" : ["Parameter_15018"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16693", - "op" : "Parameter", - "outputs" : ["Parameter_16693"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15138", - "op" : "Parameter", - "outputs" : ["Parameter_15138"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13928", - "op" : "Parameter", - "outputs" : ["Parameter_13928"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14044", - "op" : "Parameter", - "outputs" : ["Parameter_14044"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14497", - "op" : "Parameter", - "outputs" : ["Parameter_14497"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13977", - "op" : "Parameter", - "outputs" : ["Parameter_13977"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16226", - "op" : "Parameter", - "outputs" : ["Parameter_16226"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14965", - "op" : "Parameter", - "outputs" : ["Parameter_14965"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14706", - "op" : "Parameter", - "outputs" : ["Parameter_14706"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16318", - "op" : "Parameter", - "outputs" : ["Parameter_16318"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13982", - "op" : "Parameter", - "outputs" : ["Parameter_13982"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16937", - "op" : "Parameter", - "outputs" : ["Parameter_16937"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18315", - "op" : "Parameter", - "outputs" : ["Parameter_18315"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14695", - "op" : "Parameter", - "outputs" : ["Parameter_14695"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15493", - "op" : "Parameter", - "outputs" : ["Parameter_15493"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13983", - "op" : "Parameter", - "outputs" : ["Parameter_13983"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13985", - "op" : "Parameter", - "outputs" : ["Parameter_13985"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15546", - "op" : "Parameter", - "outputs" : ["Parameter_15546"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13898", - "op" : "Parameter", - "outputs" : ["Parameter_13898"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14354", - "op" : "Parameter", - "outputs" : ["Parameter_14354"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18112", - "op" : "Parameter", - "outputs" : ["Parameter_18112"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13988", - "op" : "Parameter", - "outputs" : ["Parameter_13988"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17282", - "op" : "Parameter", - "outputs" : ["Parameter_17282"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15561", - "op" : "Parameter", - "outputs" : ["Parameter_15561"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13922", - "op" : "Parameter", - "outputs" : ["Parameter_13922"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16129", - "op" : "Parameter", - "outputs" : ["Parameter_16129"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13990", - "op" : "Parameter", - "outputs" : ["Parameter_13990"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15456", - "op" : "Parameter", - "outputs" : ["Parameter_15456"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14979", - "op" : "Parameter", - "outputs" : ["Parameter_14979"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14010", - "op" : "Parameter", - "outputs" : ["Parameter_14010"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15123", - "op" : "Parameter", - "outputs" : ["Parameter_15123"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14081", - "op" : "Parameter", - "outputs" : ["Parameter_14081"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15133", - "op" : "Parameter", - "outputs" : ["Parameter_15133"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17031", - "op" : "Parameter", - "outputs" : ["Parameter_17031"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13991", - "op" : "Parameter", - "outputs" : ["Parameter_13991"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17347", - "op" : "Parameter", - "outputs" : ["Parameter_17347"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14205", - "op" : "Parameter", - "outputs" : ["Parameter_14205"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17646", - "op" : "Parameter", - "outputs" : ["Parameter_17646"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16974", - "op" : "Parameter", - "outputs" : ["Parameter_16974"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13993", - "op" : "Parameter", - "outputs" : ["Parameter_13993"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15060", - "op" : "Parameter", - "outputs" : ["Parameter_15060"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17922", - "op" : "Parameter", - "outputs" : ["Parameter_17922"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16663", - "op" : "Parameter", - "outputs" : ["Parameter_16663"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17287", - "op" : "Parameter", - "outputs" : ["Parameter_17287"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14412", - "op" : "Parameter", - "outputs" : ["Parameter_14412"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14799", - "op" : "Parameter", - "outputs" : ["Parameter_14799"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15290", - "op" : "Parameter", - "outputs" : ["Parameter_15290"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18293", - "op" : "Parameter", - "outputs" : ["Parameter_18293"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15183", - "op" : "Parameter", - "outputs" : ["Parameter_15183"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16214", - "op" : "Parameter", - "outputs" : ["Parameter_16214"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14066", - "op" : "Parameter", - "outputs" : ["Parameter_14066"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18287", - "op" : "Parameter", - "outputs" : ["Parameter_18287"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14091", - "op" : "Parameter", - "outputs" : ["Parameter_14091"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17527", - "op" : "Parameter", - "outputs" : ["Parameter_17527"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17723", - "op" : "Parameter", - "outputs" : ["Parameter_17723"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14637", - "op" : "Parameter", - "outputs" : ["Parameter_14637"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17260", - "op" : "Parameter", - "outputs" : ["Parameter_17260"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14657", - "op" : "Parameter", - "outputs" : ["Parameter_14657"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13999", - "op" : "Parameter", - "outputs" : ["Parameter_13999"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17153", - "op" : "Parameter", - "outputs" : ["Parameter_17153"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14002", - "op" : "Parameter", - "outputs" : ["Parameter_14002"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15822", - "op" : "Parameter", - "outputs" : ["Parameter_15822"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14008", - "op" : "Parameter", - "outputs" : ["Parameter_14008"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15239", - "op" : "Parameter", - "outputs" : ["Parameter_15239"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14585", - "op" : "Parameter", - "outputs" : ["Parameter_14585"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14021", - "op" : "Parameter", - "outputs" : ["Parameter_14021"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15085", - "op" : "Parameter", - "outputs" : ["Parameter_15085"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14005", - "op" : "Parameter", - "outputs" : ["Parameter_14005"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16670", - "op" : "Parameter", - "outputs" : ["Parameter_16670"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14448", - "op" : "Parameter", - "outputs" : ["Parameter_14448"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17797", - "op" : "Parameter", - "outputs" : ["Parameter_17797"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15030", - "op" : "Parameter", - "outputs" : ["Parameter_15030"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17848", - "op" : "Parameter", - "outputs" : ["Parameter_17848"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15198", - "op" : "Parameter", - "outputs" : ["Parameter_15198"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14011", - "op" : "Parameter", - "outputs" : ["Parameter_14011"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17264", - "op" : "Parameter", - "outputs" : ["Parameter_17264"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14316", - "op" : "Parameter", - "outputs" : ["Parameter_14316"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14647", - "op" : "Parameter", - "outputs" : ["Parameter_14647"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14036", - "op" : "Parameter", - "outputs" : ["Parameter_14036"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15156", - "op" : "Parameter", - "outputs" : ["Parameter_15156"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14016", - "op" : "Parameter", - "outputs" : ["Parameter_14016"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14130", - "op" : "Parameter", - "outputs" : ["Parameter_14130"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14022", - "op" : "Parameter", - "outputs" : ["Parameter_14022"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16376", - "op" : "Parameter", - "outputs" : ["Parameter_16376"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14024", - "op" : "Parameter", - "outputs" : ["Parameter_14024"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15347", - "op" : "Parameter", - "outputs" : ["Parameter_15347"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15423", - "op" : "Parameter", - "outputs" : ["Parameter_15423"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16366", - "op" : "Parameter", - "outputs" : ["Parameter_16366"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14305", - "op" : "Parameter", - "outputs" : ["Parameter_14305"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14025", - "op" : "Parameter", - "outputs" : ["Parameter_14025"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14855", - "op" : "Parameter", - "outputs" : ["Parameter_14855"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16779", - "op" : "Parameter", - "outputs" : ["Parameter_16779"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14026", - "op" : "Parameter", - "outputs" : ["Parameter_14026"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14027", - "op" : "Parameter", - "outputs" : ["Parameter_14027"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17356", - "op" : "Parameter", - "outputs" : ["Parameter_17356"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18364", - "op" : "Parameter", - "outputs" : ["Parameter_18364"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14881", - "op" : "Parameter", - "outputs" : ["Parameter_14881"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17623", - "op" : "Parameter", - "outputs" : ["Parameter_17623"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14033", - "op" : "Parameter", - "outputs" : ["Parameter_14033"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14988", - "op" : "Parameter", - "outputs" : ["Parameter_14988"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14169", - "op" : "Parameter", - "outputs" : ["Parameter_14169"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18082", - "op" : "Parameter", - "outputs" : ["Parameter_18082"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14034", - "op" : "Parameter", - "outputs" : ["Parameter_14034"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15171", - "op" : "Parameter", - "outputs" : ["Parameter_15171"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15818", - "op" : "Parameter", - "outputs" : ["Parameter_15818"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14374", - "op" : "Parameter", - "outputs" : ["Parameter_14374"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15795", - "op" : "Parameter", - "outputs" : ["Parameter_15795"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14884", - "op" : "Parameter", - "outputs" : ["Parameter_14884"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16502", - "op" : "Parameter", - "outputs" : ["Parameter_16502"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18271", - "op" : "Parameter", - "outputs" : ["Parameter_18271"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14054", - "op" : "Parameter", - "outputs" : ["Parameter_14054"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14037", - "op" : "Parameter", - "outputs" : ["Parameter_14037"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15062", - "op" : "Parameter", - "outputs" : ["Parameter_15062"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18272", - "op" : "Parameter", - "outputs" : ["Parameter_18272"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14403", - "op" : "Parameter", - "outputs" : ["Parameter_14403"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14978", - "op" : "Parameter", - "outputs" : ["Parameter_14978"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14155", - "op" : "Parameter", - "outputs" : ["Parameter_14155"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17069", - "op" : "Parameter", - "outputs" : ["Parameter_17069"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16106", - "op" : "Parameter", - "outputs" : ["Parameter_16106"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14069", - "op" : "Parameter", - "outputs" : ["Parameter_14069"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17657", - "op" : "Parameter", - "outputs" : ["Parameter_17657"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16981", - "op" : "Parameter", - "outputs" : ["Parameter_16981"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14134", - "op" : "Parameter", - "outputs" : ["Parameter_14134"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16767", - "op" : "Parameter", - "outputs" : ["Parameter_16767"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14995", - "op" : "Parameter", - "outputs" : ["Parameter_14995"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17955", - "op" : "Parameter", - "outputs" : ["Parameter_17955"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14847", - "op" : "Parameter", - "outputs" : ["Parameter_14847"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14804", - "op" : "Parameter", - "outputs" : ["Parameter_14804"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14836", - "op" : "Parameter", - "outputs" : ["Parameter_14836"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17122", - "op" : "Parameter", - "outputs" : ["Parameter_17122"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14857", - "op" : "Parameter", - "outputs" : ["Parameter_14857"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14738", - "op" : "Parameter", - "outputs" : ["Parameter_14738"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14038", - "op" : "Parameter", - "outputs" : ["Parameter_14038"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16610", - "op" : "Parameter", - "outputs" : ["Parameter_16610"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14164", - "op" : "Parameter", - "outputs" : ["Parameter_14164"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14680", - "op" : "Parameter", - "outputs" : ["Parameter_14680"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13930", - "op" : "Parameter", - "outputs" : ["Parameter_13930"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15065", - "op" : "Parameter", - "outputs" : ["Parameter_15065"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15078", - "op" : "Parameter", - "outputs" : ["Parameter_15078"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16890", - "op" : "Parameter", - "outputs" : ["Parameter_16890"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14485", - "op" : "Parameter", - "outputs" : ["Parameter_14485"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14199", - "op" : "Parameter", - "outputs" : ["Parameter_14199"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14113", - "op" : "Parameter", - "outputs" : ["Parameter_14113"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17371", - "op" : "Parameter", - "outputs" : ["Parameter_17371"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16034", - "op" : "Parameter", - "outputs" : ["Parameter_16034"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15517", - "op" : "Parameter", - "outputs" : ["Parameter_15517"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14333", - "op" : "Parameter", - "outputs" : ["Parameter_14333"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14049", - "op" : "Parameter", - "outputs" : ["Parameter_14049"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14624", - "op" : "Parameter", - "outputs" : ["Parameter_14624"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14095", - "op" : "Parameter", - "outputs" : ["Parameter_14095"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14052", - "op" : "Parameter", - "outputs" : ["Parameter_14052"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14055", - "op" : "Parameter", - "outputs" : ["Parameter_14055"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18352", - "op" : "Parameter", - "outputs" : ["Parameter_18352"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14056", - "op" : "Parameter", - "outputs" : ["Parameter_14056"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15150", - "op" : "Parameter", - "outputs" : ["Parameter_15150"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18258", - "op" : "Parameter", - "outputs" : ["Parameter_18258"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15315", - "op" : "Parameter", - "outputs" : ["Parameter_15315"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14058", - "op" : "Parameter", - "outputs" : ["Parameter_14058"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14539", - "op" : "Parameter", - "outputs" : ["Parameter_14539"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17348", - "op" : "Parameter", - "outputs" : ["Parameter_17348"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16524", - "op" : "Parameter", - "outputs" : ["Parameter_16524"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13969", - "op" : "Parameter", - "outputs" : ["Parameter_13969"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15422", - "op" : "Parameter", - "outputs" : ["Parameter_15422"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14628", - "op" : "Parameter", - "outputs" : ["Parameter_14628"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14233", - "op" : "Parameter", - "outputs" : ["Parameter_14233"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16781", - "op" : "Parameter", - "outputs" : ["Parameter_16781"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15069", - "op" : "Parameter", - "outputs" : ["Parameter_15069"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15963", - "op" : "Parameter", - "outputs" : ["Parameter_15963"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14887", - "op" : "Parameter", - "outputs" : ["Parameter_14887"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14882", - "op" : "Parameter", - "outputs" : ["Parameter_14882"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14067", - "op" : "Parameter", - "outputs" : ["Parameter_14067"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14232", - "op" : "Parameter", - "outputs" : ["Parameter_14232"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14912", - "op" : "Parameter", - "outputs" : ["Parameter_14912"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14149", - "op" : "Parameter", - "outputs" : ["Parameter_14149"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14545", - "op" : "Parameter", - "outputs" : ["Parameter_14545"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14739", - "op" : "Parameter", - "outputs" : ["Parameter_14739"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14071", - "op" : "Parameter", - "outputs" : ["Parameter_14071"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14811", - "op" : "Parameter", - "outputs" : ["Parameter_14811"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17130", - "op" : "Parameter", - "outputs" : ["Parameter_17130"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14467", - "op" : "Parameter", - "outputs" : ["Parameter_14467"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13773", - "op" : "Parameter", - "outputs" : ["Parameter_13773"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17575", - "op" : "Parameter", - "outputs" : ["Parameter_17575"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14076", - "op" : "Parameter", - "outputs" : ["Parameter_14076"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16058", - "op" : "Parameter", - "outputs" : ["Parameter_16058"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14837", - "op" : "Parameter", - "outputs" : ["Parameter_14837"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14077", - "op" : "Parameter", - "outputs" : ["Parameter_14077"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14359", - "op" : "Parameter", - "outputs" : ["Parameter_14359"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17982", - "op" : "Parameter", - "outputs" : ["Parameter_17982"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14078", - "op" : "Parameter", - "outputs" : ["Parameter_14078"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14243", - "op" : "Parameter", - "outputs" : ["Parameter_14243"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17004", - "op" : "Parameter", - "outputs" : ["Parameter_17004"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16041", - "op" : "Parameter", - "outputs" : ["Parameter_16041"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14709", - "op" : "Parameter", - "outputs" : ["Parameter_14709"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14080", - "op" : "Parameter", - "outputs" : ["Parameter_14080"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17176", - "op" : "Parameter", - "outputs" : ["Parameter_17176"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14082", - "op" : "Parameter", - "outputs" : ["Parameter_14082"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17139", - "op" : "Parameter", - "outputs" : ["Parameter_17139"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14828", - "op" : "Parameter", - "outputs" : ["Parameter_14828"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14085", - "op" : "Parameter", - "outputs" : ["Parameter_14085"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15131", - "op" : "Parameter", - "outputs" : ["Parameter_15131"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17065", - "op" : "Parameter", - "outputs" : ["Parameter_17065"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14372", - "op" : "Parameter", - "outputs" : ["Parameter_14372"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15474", - "op" : "Parameter", - "outputs" : ["Parameter_15474"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14087", - "op" : "Parameter", - "outputs" : ["Parameter_14087"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14331", - "op" : "Parameter", - "outputs" : ["Parameter_14331"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14088", - "op" : "Parameter", - "outputs" : ["Parameter_14088"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14480", - "op" : "Parameter", - "outputs" : ["Parameter_14480"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14093", - "op" : "Parameter", - "outputs" : ["Parameter_14093"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17291", - "op" : "Parameter", - "outputs" : ["Parameter_17291"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16404", - "op" : "Parameter", - "outputs" : ["Parameter_16404"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17938", - "op" : "Parameter", - "outputs" : ["Parameter_17938"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15786", - "op" : "Parameter", - "outputs" : ["Parameter_15786"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15478", - "op" : "Parameter", - "outputs" : ["Parameter_15478"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17292", - "op" : "Parameter", - "outputs" : ["Parameter_17292"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15302", - "op" : "Parameter", - "outputs" : ["Parameter_15302"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18051", - "op" : "Parameter", - "outputs" : ["Parameter_18051"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16019", - "op" : "Parameter", - "outputs" : ["Parameter_16019"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15287", - "op" : "Parameter", - "outputs" : ["Parameter_15287"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18107", - "op" : "Parameter", - "outputs" : ["Parameter_18107"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14099", - "op" : "Parameter", - "outputs" : ["Parameter_14099"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14883", - "op" : "Parameter", - "outputs" : ["Parameter_14883"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18092", - "op" : "Parameter", - "outputs" : ["Parameter_18092"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13841", - "op" : "Parameter", - "outputs" : ["Parameter_13841"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15982", - "op" : "Parameter", - "outputs" : ["Parameter_15982"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15921", - "op" : "Parameter", - "outputs" : ["Parameter_15921"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17475", - "op" : "Parameter", - "outputs" : ["Parameter_17475"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14100", - "op" : "Parameter", - "outputs" : ["Parameter_14100"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15829", - "op" : "Parameter", - "outputs" : ["Parameter_15829"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14635", - "op" : "Parameter", - "outputs" : ["Parameter_14635"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15088", - "op" : "Parameter", - "outputs" : ["Parameter_15088"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16645", - "op" : "Parameter", - "outputs" : ["Parameter_16645"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16324", - "op" : "Parameter", - "outputs" : ["Parameter_16324"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17533", - "op" : "Parameter", - "outputs" : ["Parameter_17533"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15603", - "op" : "Parameter", - "outputs" : ["Parameter_15603"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15229", - "op" : "Parameter", - "outputs" : ["Parameter_15229"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14103", - "op" : "Parameter", - "outputs" : ["Parameter_14103"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17882", - "op" : "Parameter", - "outputs" : ["Parameter_17882"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14104", - "op" : "Parameter", - "outputs" : ["Parameter_14104"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16955", - "op" : "Parameter", - "outputs" : ["Parameter_16955"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17975", - "op" : "Parameter", - "outputs" : ["Parameter_17975"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14188", - "op" : "Parameter", - "outputs" : ["Parameter_14188"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15911", - "op" : "Parameter", - "outputs" : ["Parameter_15911"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14102", - "op" : "Parameter", - "outputs" : ["Parameter_14102"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13769", - "op" : "Parameter", - "outputs" : ["Parameter_13769"], - "shape" : [ 10000, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 10000, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17227", - "op" : "Parameter", - "outputs" : ["Parameter_17227"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16464", - "op" : "Parameter", - "outputs" : ["Parameter_16464"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14110", - "op" : "Parameter", - "outputs" : ["Parameter_14110"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18027", - "op" : "Parameter", - "outputs" : ["Parameter_18027"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18249", - "op" : "Parameter", - "outputs" : ["Parameter_18249"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16567", - "op" : "Parameter", - "outputs" : ["Parameter_16567"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14043", - "op" : "Parameter", - "outputs" : ["Parameter_14043"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15129", - "op" : "Parameter", - "outputs" : ["Parameter_15129"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17410", - "op" : "Parameter", - "outputs" : ["Parameter_17410"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14111", - "op" : "Parameter", - "outputs" : ["Parameter_14111"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15627", - "op" : "Parameter", - "outputs" : ["Parameter_15627"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14041", - "op" : "Parameter", - "outputs" : ["Parameter_14041"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14766", - "op" : "Parameter", - "outputs" : ["Parameter_14766"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14131", - "op" : "Parameter", - "outputs" : ["Parameter_14131"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15621", - "op" : "Parameter", - "outputs" : ["Parameter_15621"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14557", - "op" : "Parameter", - "outputs" : ["Parameter_14557"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14315", - "op" : "Parameter", - "outputs" : ["Parameter_14315"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14712", - "op" : "Parameter", - "outputs" : ["Parameter_14712"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13906", - "op" : "Parameter", - "outputs" : ["Parameter_13906"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17036", - "op" : "Parameter", - "outputs" : ["Parameter_17036"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15267", - "op" : "Parameter", - "outputs" : ["Parameter_15267"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14612", - "op" : "Parameter", - "outputs" : ["Parameter_14612"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16503", - "op" : "Parameter", - "outputs" : ["Parameter_16503"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14112", - "op" : "Parameter", - "outputs" : ["Parameter_14112"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15538", - "op" : "Parameter", - "outputs" : ["Parameter_15538"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14114", - "op" : "Parameter", - "outputs" : ["Parameter_14114"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14115", - "op" : "Parameter", - "outputs" : ["Parameter_14115"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14119", - "op" : "Parameter", - "outputs" : ["Parameter_14119"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14408", - "op" : "Parameter", - "outputs" : ["Parameter_14408"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13907", - "op" : "Parameter", - "outputs" : ["Parameter_13907"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14122", - "op" : "Parameter", - "outputs" : ["Parameter_14122"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14779", - "op" : "Parameter", - "outputs" : ["Parameter_14779"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17868", - "op" : "Parameter", - "outputs" : ["Parameter_17868"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15781", - "op" : "Parameter", - "outputs" : ["Parameter_15781"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15096", - "op" : "Parameter", - "outputs" : ["Parameter_15096"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17958", - "op" : "Parameter", - "outputs" : ["Parameter_17958"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15569", - "op" : "Parameter", - "outputs" : ["Parameter_15569"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17634", - "op" : "Parameter", - "outputs" : ["Parameter_17634"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14456", - "op" : "Parameter", - "outputs" : ["Parameter_14456"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17406", - "op" : "Parameter", - "outputs" : ["Parameter_17406"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14129", - "op" : "Parameter", - "outputs" : ["Parameter_14129"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15327", - "op" : "Parameter", - "outputs" : ["Parameter_15327"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15726", - "op" : "Parameter", - "outputs" : ["Parameter_15726"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14367", - "op" : "Parameter", - "outputs" : ["Parameter_14367"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17422", - "op" : "Parameter", - "outputs" : ["Parameter_17422"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15432", - "op" : "Parameter", - "outputs" : ["Parameter_15432"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14074", - "op" : "Parameter", - "outputs" : ["Parameter_14074"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14183", - "op" : "Parameter", - "outputs" : ["Parameter_14183"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14137", - "op" : "Parameter", - "outputs" : ["Parameter_14137"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15218", - "op" : "Parameter", - "outputs" : ["Parameter_15218"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17341", - "op" : "Parameter", - "outputs" : ["Parameter_17341"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14140", - "op" : "Parameter", - "outputs" : ["Parameter_14140"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14281", - "op" : "Parameter", - "outputs" : ["Parameter_14281"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17175", - "op" : "Parameter", - "outputs" : ["Parameter_17175"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14152", - "op" : "Parameter", - "outputs" : ["Parameter_14152"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14615", - "op" : "Parameter", - "outputs" : ["Parameter_14615"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14402", - "op" : "Parameter", - "outputs" : ["Parameter_14402"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14859", - "op" : "Parameter", - "outputs" : ["Parameter_14859"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15173", - "op" : "Parameter", - "outputs" : ["Parameter_15173"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15661", - "op" : "Parameter", - "outputs" : ["Parameter_15661"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14568", - "op" : "Parameter", - "outputs" : ["Parameter_14568"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14144", - "op" : "Parameter", - "outputs" : ["Parameter_14144"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13809", - "op" : "Parameter", - "outputs" : ["Parameter_13809"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14148", - "op" : "Parameter", - "outputs" : ["Parameter_14148"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15075", - "op" : "Parameter", - "outputs" : ["Parameter_15075"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14430", - "op" : "Parameter", - "outputs" : ["Parameter_14430"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14963", - "op" : "Parameter", - "outputs" : ["Parameter_14963"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15917", - "op" : "Parameter", - "outputs" : ["Parameter_15917"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14153", - "op" : "Parameter", - "outputs" : ["Parameter_14153"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14162", - "op" : "Parameter", - "outputs" : ["Parameter_14162"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17498", - "op" : "Parameter", - "outputs" : ["Parameter_17498"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14163", - "op" : "Parameter", - "outputs" : ["Parameter_14163"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16947", - "op" : "Parameter", - "outputs" : ["Parameter_16947"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15142", - "op" : "Parameter", - "outputs" : ["Parameter_15142"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17885", - "op" : "Parameter", - "outputs" : ["Parameter_17885"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13807", - "op" : "Parameter", - "outputs" : ["Parameter_13807"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15067", - "op" : "Parameter", - "outputs" : ["Parameter_15067"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14175", - "op" : "Parameter", - "outputs" : ["Parameter_14175"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17142", - "op" : "Parameter", - "outputs" : ["Parameter_17142"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15461", - "op" : "Parameter", - "outputs" : ["Parameter_15461"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17021", - "op" : "Parameter", - "outputs" : ["Parameter_17021"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15341", - "op" : "Parameter", - "outputs" : ["Parameter_15341"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18333", - "op" : "Parameter", - "outputs" : ["Parameter_18333"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14602", - "op" : "Parameter", - "outputs" : ["Parameter_14602"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16547", - "op" : "Parameter", - "outputs" : ["Parameter_16547"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15646", - "op" : "Parameter", - "outputs" : ["Parameter_15646"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14608", - "op" : "Parameter", - "outputs" : ["Parameter_14608"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14610", - "op" : "Parameter", - "outputs" : ["Parameter_14610"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17582", - "op" : "Parameter", - "outputs" : ["Parameter_17582"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17691", - "op" : "Parameter", - "outputs" : ["Parameter_17691"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14873", - "op" : "Parameter", - "outputs" : ["Parameter_14873"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14616", - "op" : "Parameter", - "outputs" : ["Parameter_14616"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16507", - "op" : "Parameter", - "outputs" : ["Parameter_16507"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14617", - "op" : "Parameter", - "outputs" : ["Parameter_14617"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15098", - "op" : "Parameter", - "outputs" : ["Parameter_15098"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14618", - "op" : "Parameter", - "outputs" : ["Parameter_14618"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14619", - "op" : "Parameter", - "outputs" : ["Parameter_14619"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14621", - "op" : "Parameter", - "outputs" : ["Parameter_14621"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15335", - "op" : "Parameter", - "outputs" : ["Parameter_15335"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13994", - "op" : "Parameter", - "outputs" : ["Parameter_13994"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18186", - "op" : "Parameter", - "outputs" : ["Parameter_18186"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14622", - "op" : "Parameter", - "outputs" : ["Parameter_14622"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14666", - "op" : "Parameter", - "outputs" : ["Parameter_14666"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14677", - "op" : "Parameter", - "outputs" : ["Parameter_14677"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14521", - "op" : "Parameter", - "outputs" : ["Parameter_14521"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14108", - "op" : "Parameter", - "outputs" : ["Parameter_14108"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14625", - "op" : "Parameter", - "outputs" : ["Parameter_14625"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14771", - "op" : "Parameter", - "outputs" : ["Parameter_14771"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14792", - "op" : "Parameter", - "outputs" : ["Parameter_14792"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18065", - "op" : "Parameter", - "outputs" : ["Parameter_18065"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16236", - "op" : "Parameter", - "outputs" : ["Parameter_16236"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14957", - "op" : "Parameter", - "outputs" : ["Parameter_14957"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14630", - "op" : "Parameter", - "outputs" : ["Parameter_14630"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16962", - "op" : "Parameter", - "outputs" : ["Parameter_16962"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17336", - "op" : "Parameter", - "outputs" : ["Parameter_17336"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18150", - "op" : "Parameter", - "outputs" : ["Parameter_18150"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15104", - "op" : "Parameter", - "outputs" : ["Parameter_15104"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14633", - "op" : "Parameter", - "outputs" : ["Parameter_14633"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15008", - "op" : "Parameter", - "outputs" : ["Parameter_15008"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14888", - "op" : "Parameter", - "outputs" : ["Parameter_14888"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15106", - "op" : "Parameter", - "outputs" : ["Parameter_15106"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14219", - "op" : "Parameter", - "outputs" : ["Parameter_14219"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14639", - "op" : "Parameter", - "outputs" : ["Parameter_14639"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15101", - "op" : "Parameter", - "outputs" : ["Parameter_15101"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17105", - "op" : "Parameter", - "outputs" : ["Parameter_17105"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14640", - "op" : "Parameter", - "outputs" : ["Parameter_14640"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16571", - "op" : "Parameter", - "outputs" : ["Parameter_16571"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14642", - "op" : "Parameter", - "outputs" : ["Parameter_14642"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16239", - "op" : "Parameter", - "outputs" : ["Parameter_16239"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14650", - "op" : "Parameter", - "outputs" : ["Parameter_14650"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14510", - "op" : "Parameter", - "outputs" : ["Parameter_14510"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17816", - "op" : "Parameter", - "outputs" : ["Parameter_17816"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15185", - "op" : "Parameter", - "outputs" : ["Parameter_15185"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16136", - "op" : "Parameter", - "outputs" : ["Parameter_16136"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16139", - "op" : "Parameter", - "outputs" : ["Parameter_16139"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15188", - "op" : "Parameter", - "outputs" : ["Parameter_15188"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15815", - "op" : "Parameter", - "outputs" : ["Parameter_15815"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15186", - "op" : "Parameter", - "outputs" : ["Parameter_15186"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17220", - "op" : "Parameter", - "outputs" : ["Parameter_17220"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14652", - "op" : "Parameter", - "outputs" : ["Parameter_14652"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14653", - "op" : "Parameter", - "outputs" : ["Parameter_14653"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16871", - "op" : "Parameter", - "outputs" : ["Parameter_16871"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15175", - "op" : "Parameter", - "outputs" : ["Parameter_15175"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15486", - "op" : "Parameter", - "outputs" : ["Parameter_15486"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17184", - "op" : "Parameter", - "outputs" : ["Parameter_17184"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16258", - "op" : "Parameter", - "outputs" : ["Parameter_16258"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15176", - "op" : "Parameter", - "outputs" : ["Parameter_15176"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15487", - "op" : "Parameter", - "outputs" : ["Parameter_15487"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14656", - "op" : "Parameter", - "outputs" : ["Parameter_14656"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17125", - "op" : "Parameter", - "outputs" : ["Parameter_17125"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14658", - "op" : "Parameter", - "outputs" : ["Parameter_14658"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16626", - "op" : "Parameter", - "outputs" : ["Parameter_16626"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14261", - "op" : "Parameter", - "outputs" : ["Parameter_14261"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15202", - "op" : "Parameter", - "outputs" : ["Parameter_15202"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17735", - "op" : "Parameter", - "outputs" : ["Parameter_17735"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16351", - "op" : "Parameter", - "outputs" : ["Parameter_16351"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14455", - "op" : "Parameter", - "outputs" : ["Parameter_14455"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15136", - "op" : "Parameter", - "outputs" : ["Parameter_15136"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15261", - "op" : "Parameter", - "outputs" : ["Parameter_15261"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17136", - "op" : "Parameter", - "outputs" : ["Parameter_17136"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16768", - "op" : "Parameter", - "outputs" : ["Parameter_16768"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15331", - "op" : "Parameter", - "outputs" : ["Parameter_15331"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17182", - "op" : "Parameter", - "outputs" : ["Parameter_17182"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14665", - "op" : "Parameter", - "outputs" : ["Parameter_14665"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15128", - "op" : "Parameter", - "outputs" : ["Parameter_15128"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14667", - "op" : "Parameter", - "outputs" : ["Parameter_14667"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14668", - "op" : "Parameter", - "outputs" : ["Parameter_14668"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13896", - "op" : "Parameter", - "outputs" : ["Parameter_13896"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15418", - "op" : "Parameter", - "outputs" : ["Parameter_15418"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16091", - "op" : "Parameter", - "outputs" : ["Parameter_16091"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17081", - "op" : "Parameter", - "outputs" : ["Parameter_17081"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15280", - "op" : "Parameter", - "outputs" : ["Parameter_15280"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16425", - "op" : "Parameter", - "outputs" : ["Parameter_16425"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15763", - "op" : "Parameter", - "outputs" : ["Parameter_15763"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15212", - "op" : "Parameter", - "outputs" : ["Parameter_15212"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14673", - "op" : "Parameter", - "outputs" : ["Parameter_14673"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15520", - "op" : "Parameter", - "outputs" : ["Parameter_15520"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15270", - "op" : "Parameter", - "outputs" : ["Parameter_15270"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14676", - "op" : "Parameter", - "outputs" : ["Parameter_14676"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14682", - "op" : "Parameter", - "outputs" : ["Parameter_14682"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14696", - "op" : "Parameter", - "outputs" : ["Parameter_14696"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16468", - "op" : "Parameter", - "outputs" : ["Parameter_16468"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13844", - "op" : "Parameter", - "outputs" : ["Parameter_13844"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15144", - "op" : "Parameter", - "outputs" : ["Parameter_15144"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16499", - "op" : "Parameter", - "outputs" : ["Parameter_16499"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14684", - "op" : "Parameter", - "outputs" : ["Parameter_14684"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17793", - "op" : "Parameter", - "outputs" : ["Parameter_17793"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15899", - "op" : "Parameter", - "outputs" : ["Parameter_15899"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14267", - "op" : "Parameter", - "outputs" : ["Parameter_14267"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16487", - "op" : "Parameter", - "outputs" : ["Parameter_16487"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14964", - "op" : "Parameter", - "outputs" : ["Parameter_14964"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17963", - "op" : "Parameter", - "outputs" : ["Parameter_17963"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15356", - "op" : "Parameter", - "outputs" : ["Parameter_15356"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17124", - "op" : "Parameter", - "outputs" : ["Parameter_17124"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15178", - "op" : "Parameter", - "outputs" : ["Parameter_15178"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14586", - "op" : "Parameter", - "outputs" : ["Parameter_14586"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14690", - "op" : "Parameter", - "outputs" : ["Parameter_14690"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15135", - "op" : "Parameter", - "outputs" : ["Parameter_15135"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16156", - "op" : "Parameter", - "outputs" : ["Parameter_16156"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14698", - "op" : "Parameter", - "outputs" : ["Parameter_14698"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13902", - "op" : "Parameter", - "outputs" : ["Parameter_13902"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15073", - "op" : "Parameter", - "outputs" : ["Parameter_15073"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14700", - "op" : "Parameter", - "outputs" : ["Parameter_14700"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16782", - "op" : "Parameter", - "outputs" : ["Parameter_16782"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17514", - "op" : "Parameter", - "outputs" : ["Parameter_17514"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15153", - "op" : "Parameter", - "outputs" : ["Parameter_15153"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_13897", - "op" : "Parameter", - "outputs" : ["Parameter_13897"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14701", - "op" : "Parameter", - "outputs" : ["Parameter_14701"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16765", - "op" : "Parameter", - "outputs" : ["Parameter_16765"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14966", - "op" : "Parameter", - "outputs" : ["Parameter_14966"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14703", - "op" : "Parameter", - "outputs" : ["Parameter_14703"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14704", - "op" : "Parameter", - "outputs" : ["Parameter_14704"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15562", - "op" : "Parameter", - "outputs" : ["Parameter_15562"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18311", - "op" : "Parameter", - "outputs" : ["Parameter_18311"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14655", - "op" : "Parameter", - "outputs" : ["Parameter_14655"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15166", - "op" : "Parameter", - "outputs" : ["Parameter_15166"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15382", - "op" : "Parameter", - "outputs" : ["Parameter_15382"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14707", - "op" : "Parameter", - "outputs" : ["Parameter_14707"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14007", - "op" : "Parameter", - "outputs" : ["Parameter_14007"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14387", - "op" : "Parameter", - "outputs" : ["Parameter_14387"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15541", - "op" : "Parameter", - "outputs" : ["Parameter_15541"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18225", - "op" : "Parameter", - "outputs" : ["Parameter_18225"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17217", - "op" : "Parameter", - "outputs" : ["Parameter_17217"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13933", - "op" : "Parameter", - "outputs" : ["Parameter_13933"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15496", - "op" : "Parameter", - "outputs" : ["Parameter_15496"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17584", - "op" : "Parameter", - "outputs" : ["Parameter_17584"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14715", - "op" : "Parameter", - "outputs" : ["Parameter_14715"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14716", - "op" : "Parameter", - "outputs" : ["Parameter_14716"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15625", - "op" : "Parameter", - "outputs" : ["Parameter_15625"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14764", - "op" : "Parameter", - "outputs" : ["Parameter_14764"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17749", - "op" : "Parameter", - "outputs" : ["Parameter_17749"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15295", - "op" : "Parameter", - "outputs" : ["Parameter_15295"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14765", - "op" : "Parameter", - "outputs" : ["Parameter_14765"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14719", - "op" : "Parameter", - "outputs" : ["Parameter_14719"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16296", - "op" : "Parameter", - "outputs" : ["Parameter_16296"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14720", - "op" : "Parameter", - "outputs" : ["Parameter_14720"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14724", - "op" : "Parameter", - "outputs" : ["Parameter_14724"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15216", - "op" : "Parameter", - "outputs" : ["Parameter_15216"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17900", - "op" : "Parameter", - "outputs" : ["Parameter_17900"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14726", - "op" : "Parameter", - "outputs" : ["Parameter_14726"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17244", - "op" : "Parameter", - "outputs" : ["Parameter_17244"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17916", - "op" : "Parameter", - "outputs" : ["Parameter_17916"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14727", - "op" : "Parameter", - "outputs" : ["Parameter_14727"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18303", - "op" : "Parameter", - "outputs" : ["Parameter_18303"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17487", - "op" : "Parameter", - "outputs" : ["Parameter_17487"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14063", - "op" : "Parameter", - "outputs" : ["Parameter_14063"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15497", - "op" : "Parameter", - "outputs" : ["Parameter_15497"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14729", - "op" : "Parameter", - "outputs" : ["Parameter_14729"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14896", - "op" : "Parameter", - "outputs" : ["Parameter_14896"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14731", - "op" : "Parameter", - "outputs" : ["Parameter_14731"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14742", - "op" : "Parameter", - "outputs" : ["Parameter_14742"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14732", - "op" : "Parameter", - "outputs" : ["Parameter_14732"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14734", - "op" : "Parameter", - "outputs" : ["Parameter_14734"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14736", - "op" : "Parameter", - "outputs" : ["Parameter_14736"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16467", - "op" : "Parameter", - "outputs" : ["Parameter_16467"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14741", - "op" : "Parameter", - "outputs" : ["Parameter_14741"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15752", - "op" : "Parameter", - "outputs" : ["Parameter_15752"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15590", - "op" : "Parameter", - "outputs" : ["Parameter_15590"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14746", - "op" : "Parameter", - "outputs" : ["Parameter_14746"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15411", - "op" : "Parameter", - "outputs" : ["Parameter_15411"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16355", - "op" : "Parameter", - "outputs" : ["Parameter_16355"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16003", - "op" : "Parameter", - "outputs" : ["Parameter_16003"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16676", - "op" : "Parameter", - "outputs" : ["Parameter_16676"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17099", - "op" : "Parameter", - "outputs" : ["Parameter_17099"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16750", - "op" : "Parameter", - "outputs" : ["Parameter_16750"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14871", - "op" : "Parameter", - "outputs" : ["Parameter_14871"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14749", - "op" : "Parameter", - "outputs" : ["Parameter_14749"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15394", - "op" : "Parameter", - "outputs" : ["Parameter_15394"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17087", - "op" : "Parameter", - "outputs" : ["Parameter_17087"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16453", - "op" : "Parameter", - "outputs" : ["Parameter_16453"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14258", - "op" : "Parameter", - "outputs" : ["Parameter_14258"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14755", - "op" : "Parameter", - "outputs" : ["Parameter_14755"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15913", - "op" : "Parameter", - "outputs" : ["Parameter_15913"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14760", - "op" : "Parameter", - "outputs" : ["Parameter_14760"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17865", - "op" : "Parameter", - "outputs" : ["Parameter_17865"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15058", - "op" : "Parameter", - "outputs" : ["Parameter_15058"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16200", - "op" : "Parameter", - "outputs" : ["Parameter_16200"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15389", - "op" : "Parameter", - "outputs" : ["Parameter_15389"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18110", - "op" : "Parameter", - "outputs" : ["Parameter_18110"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16511", - "op" : "Parameter", - "outputs" : ["Parameter_16511"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14763", - "op" : "Parameter", - "outputs" : ["Parameter_14763"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16415", - "op" : "Parameter", - "outputs" : ["Parameter_16415"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14662", - "op" : "Parameter", - "outputs" : ["Parameter_14662"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17257", - "op" : "Parameter", - "outputs" : ["Parameter_17257"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14767", - "op" : "Parameter", - "outputs" : ["Parameter_14767"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15152", - "op" : "Parameter", - "outputs" : ["Parameter_15152"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14609", - "op" : "Parameter", - "outputs" : ["Parameter_14609"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15165", - "op" : "Parameter", - "outputs" : ["Parameter_15165"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14768", - "op" : "Parameter", - "outputs" : ["Parameter_14768"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14772", - "op" : "Parameter", - "outputs" : ["Parameter_14772"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16381", - "op" : "Parameter", - "outputs" : ["Parameter_16381"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15494", - "op" : "Parameter", - "outputs" : ["Parameter_15494"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14151", - "op" : "Parameter", - "outputs" : ["Parameter_14151"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14774", - "op" : "Parameter", - "outputs" : ["Parameter_14774"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14777", - "op" : "Parameter", - "outputs" : ["Parameter_14777"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13861", - "op" : "Parameter", - "outputs" : ["Parameter_13861"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14778", - "op" : "Parameter", - "outputs" : ["Parameter_14778"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14185", - "op" : "Parameter", - "outputs" : ["Parameter_14185"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15262", - "op" : "Parameter", - "outputs" : ["Parameter_15262"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14492", - "op" : "Parameter", - "outputs" : ["Parameter_14492"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14780", - "op" : "Parameter", - "outputs" : ["Parameter_14780"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14781", - "op" : "Parameter", - "outputs" : ["Parameter_14781"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14829", - "op" : "Parameter", - "outputs" : ["Parameter_14829"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14782", - "op" : "Parameter", - "outputs" : ["Parameter_14782"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18342", - "op" : "Parameter", - "outputs" : ["Parameter_18342"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16709", - "op" : "Parameter", - "outputs" : ["Parameter_16709"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14830", - "op" : "Parameter", - "outputs" : ["Parameter_14830"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17135", - "op" : "Parameter", - "outputs" : ["Parameter_17135"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14784", - "op" : "Parameter", - "outputs" : ["Parameter_14784"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18247", - "op" : "Parameter", - "outputs" : ["Parameter_18247"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14785", - "op" : "Parameter", - "outputs" : ["Parameter_14785"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14786", - "op" : "Parameter", - "outputs" : ["Parameter_14786"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15220", - "op" : "Parameter", - "outputs" : ["Parameter_15220"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16706", - "op" : "Parameter", - "outputs" : ["Parameter_16706"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14789", - "op" : "Parameter", - "outputs" : ["Parameter_14789"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14791", - "op" : "Parameter", - "outputs" : ["Parameter_14791"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14793", - "op" : "Parameter", - "outputs" : ["Parameter_14793"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14960", - "op" : "Parameter", - "outputs" : ["Parameter_14960"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14795", - "op" : "Parameter", - "outputs" : ["Parameter_14795"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17193", - "op" : "Parameter", - "outputs" : ["Parameter_17193"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14555", - "op" : "Parameter", - "outputs" : ["Parameter_14555"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14796", - "op" : "Parameter", - "outputs" : ["Parameter_14796"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14798", - "op" : "Parameter", - "outputs" : ["Parameter_14798"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14803", - "op" : "Parameter", - "outputs" : ["Parameter_14803"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16656", - "op" : "Parameter", - "outputs" : ["Parameter_16656"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14805", - "op" : "Parameter", - "outputs" : ["Parameter_14805"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17298", - "op" : "Parameter", - "outputs" : ["Parameter_17298"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14373", - "op" : "Parameter", - "outputs" : ["Parameter_14373"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14818", - "op" : "Parameter", - "outputs" : ["Parameter_14818"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16799", - "op" : "Parameter", - "outputs" : ["Parameter_16799"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13967", - "op" : "Parameter", - "outputs" : ["Parameter_13967"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14806", - "op" : "Parameter", - "outputs" : ["Parameter_14806"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16801", - "op" : "Parameter", - "outputs" : ["Parameter_16801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16018", - "op" : "Parameter", - "outputs" : ["Parameter_16018"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14808", - "op" : "Parameter", - "outputs" : ["Parameter_14808"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14809", - "op" : "Parameter", - "outputs" : ["Parameter_14809"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14954", - "op" : "Parameter", - "outputs" : ["Parameter_14954"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14812", - "op" : "Parameter", - "outputs" : ["Parameter_14812"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16322", - "op" : "Parameter", - "outputs" : ["Parameter_16322"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14814", - "op" : "Parameter", - "outputs" : ["Parameter_14814"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17978", - "op" : "Parameter", - "outputs" : ["Parameter_17978"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16087", - "op" : "Parameter", - "outputs" : ["Parameter_16087"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14815", - "op" : "Parameter", - "outputs" : ["Parameter_14815"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14816", - "op" : "Parameter", - "outputs" : ["Parameter_14816"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14817", - "op" : "Parameter", - "outputs" : ["Parameter_14817"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14819", - "op" : "Parameter", - "outputs" : ["Parameter_14819"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14820", - "op" : "Parameter", - "outputs" : ["Parameter_14820"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14824", - "op" : "Parameter", - "outputs" : ["Parameter_14824"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14825", - "op" : "Parameter", - "outputs" : ["Parameter_14825"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15223", - "op" : "Parameter", - "outputs" : ["Parameter_15223"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17024", - "op" : "Parameter", - "outputs" : ["Parameter_17024"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18331", - "op" : "Parameter", - "outputs" : ["Parameter_18331"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16096", - "op" : "Parameter", - "outputs" : ["Parameter_16096"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15482", - "op" : "Parameter", - "outputs" : ["Parameter_15482"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14827", - "op" : "Parameter", - "outputs" : ["Parameter_14827"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17983", - "op" : "Parameter", - "outputs" : ["Parameter_17983"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17368", - "op" : "Parameter", - "outputs" : ["Parameter_17368"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14831", - "op" : "Parameter", - "outputs" : ["Parameter_14831"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16362", - "op" : "Parameter", - "outputs" : ["Parameter_16362"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15400", - "op" : "Parameter", - "outputs" : ["Parameter_15400"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14834", - "op" : "Parameter", - "outputs" : ["Parameter_14834"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14020", - "op" : "Parameter", - "outputs" : ["Parameter_14020"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14835", - "op" : "Parameter", - "outputs" : ["Parameter_14835"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16174", - "op" : "Parameter", - "outputs" : ["Parameter_16174"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14923", - "op" : "Parameter", - "outputs" : ["Parameter_14923"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15090", - "op" : "Parameter", - "outputs" : ["Parameter_15090"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17529", - "op" : "Parameter", - "outputs" : ["Parameter_17529"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14958", - "op" : "Parameter", - "outputs" : ["Parameter_14958"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14838", - "op" : "Parameter", - "outputs" : ["Parameter_14838"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15528", - "op" : "Parameter", - "outputs" : ["Parameter_15528"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15922", - "op" : "Parameter", - "outputs" : ["Parameter_15922"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14877", - "op" : "Parameter", - "outputs" : ["Parameter_14877"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17631", - "op" : "Parameter", - "outputs" : ["Parameter_17631"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14271", - "op" : "Parameter", - "outputs" : ["Parameter_14271"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14842", - "op" : "Parameter", - "outputs" : ["Parameter_14842"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16108", - "op" : "Parameter", - "outputs" : ["Parameter_16108"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14846", - "op" : "Parameter", - "outputs" : ["Parameter_14846"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15966", - "op" : "Parameter", - "outputs" : ["Parameter_15966"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14848", - "op" : "Parameter", - "outputs" : ["Parameter_14848"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15618", - "op" : "Parameter", - "outputs" : ["Parameter_15618"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14852", - "op" : "Parameter", - "outputs" : ["Parameter_14852"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14853", - "op" : "Parameter", - "outputs" : ["Parameter_14853"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14899", - "op" : "Parameter", - "outputs" : ["Parameter_14899"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17101", - "op" : "Parameter", - "outputs" : ["Parameter_17101"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13889", - "op" : "Parameter", - "outputs" : ["Parameter_13889"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14856", - "op" : "Parameter", - "outputs" : ["Parameter_14856"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16557", - "op" : "Parameter", - "outputs" : ["Parameter_16557"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14858", - "op" : "Parameter", - "outputs" : ["Parameter_14858"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16436", - "op" : "Parameter", - "outputs" : ["Parameter_16436"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14862", - "op" : "Parameter", - "outputs" : ["Parameter_14862"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15816", - "op" : "Parameter", - "outputs" : ["Parameter_15816"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17331", - "op" : "Parameter", - "outputs" : ["Parameter_17331"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14488", - "op" : "Parameter", - "outputs" : ["Parameter_14488"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13946", - "op" : "Parameter", - "outputs" : ["Parameter_13946"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14863", - "op" : "Parameter", - "outputs" : ["Parameter_14863"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15596", - "op" : "Parameter", - "outputs" : ["Parameter_15596"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14505", - "op" : "Parameter", - "outputs" : ["Parameter_14505"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14864", - "op" : "Parameter", - "outputs" : ["Parameter_14864"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14484", - "op" : "Parameter", - "outputs" : ["Parameter_14484"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15403", - "op" : "Parameter", - "outputs" : ["Parameter_15403"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13860", - "op" : "Parameter", - "outputs" : ["Parameter_13860"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16672", - "op" : "Parameter", - "outputs" : ["Parameter_16672"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14407", - "op" : "Parameter", - "outputs" : ["Parameter_14407"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14867", - "op" : "Parameter", - "outputs" : ["Parameter_14867"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18075", - "op" : "Parameter", - "outputs" : ["Parameter_18075"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14045", - "op" : "Parameter", - "outputs" : ["Parameter_14045"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13987", - "op" : "Parameter", - "outputs" : ["Parameter_13987"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16451", - "op" : "Parameter", - "outputs" : ["Parameter_16451"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14872", - "op" : "Parameter", - "outputs" : ["Parameter_14872"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14874", - "op" : "Parameter", - "outputs" : ["Parameter_14874"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14875", - "op" : "Parameter", - "outputs" : ["Parameter_14875"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16384", - "op" : "Parameter", - "outputs" : ["Parameter_16384"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17523", - "op" : "Parameter", - "outputs" : ["Parameter_17523"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16242", - "op" : "Parameter", - "outputs" : ["Parameter_16242"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14878", - "op" : "Parameter", - "outputs" : ["Parameter_14878"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16275", - "op" : "Parameter", - "outputs" : ["Parameter_16275"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15001", - "op" : "Parameter", - "outputs" : ["Parameter_15001"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15437", - "op" : "Parameter", - "outputs" : ["Parameter_15437"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16167", - "op" : "Parameter", - "outputs" : ["Parameter_16167"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16349", - "op" : "Parameter", - "outputs" : ["Parameter_16349"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14889", - "op" : "Parameter", - "outputs" : ["Parameter_14889"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14890", - "op" : "Parameter", - "outputs" : ["Parameter_14890"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18121", - "op" : "Parameter", - "outputs" : ["Parameter_18121"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14892", - "op" : "Parameter", - "outputs" : ["Parameter_14892"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14895", - "op" : "Parameter", - "outputs" : ["Parameter_14895"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14728", - "op" : "Parameter", - "outputs" : ["Parameter_14728"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16651", - "op" : "Parameter", - "outputs" : ["Parameter_16651"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14897", - "op" : "Parameter", - "outputs" : ["Parameter_14897"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14275", - "op" : "Parameter", - "outputs" : ["Parameter_14275"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16715", - "op" : "Parameter", - "outputs" : ["Parameter_16715"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14898", - "op" : "Parameter", - "outputs" : ["Parameter_14898"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14441", - "op" : "Parameter", - "outputs" : ["Parameter_14441"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13838", - "op" : "Parameter", - "outputs" : ["Parameter_13838"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14904", - "op" : "Parameter", - "outputs" : ["Parameter_14904"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15942", - "op" : "Parameter", - "outputs" : ["Parameter_15942"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14906", - "op" : "Parameter", - "outputs" : ["Parameter_14906"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14907", - "op" : "Parameter", - "outputs" : ["Parameter_14907"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15476", - "op" : "Parameter", - "outputs" : ["Parameter_15476"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18160", - "op" : "Parameter", - "outputs" : ["Parameter_18160"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14908", - "op" : "Parameter", - "outputs" : ["Parameter_14908"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14909", - "op" : "Parameter", - "outputs" : ["Parameter_14909"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15410", - "op" : "Parameter", - "outputs" : ["Parameter_15410"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15424", - "op" : "Parameter", - "outputs" : ["Parameter_15424"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14913", - "op" : "Parameter", - "outputs" : ["Parameter_14913"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17334", - "op" : "Parameter", - "outputs" : ["Parameter_17334"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16265", - "op" : "Parameter", - "outputs" : ["Parameter_16265"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15454", - "op" : "Parameter", - "outputs" : ["Parameter_15454"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18175", - "op" : "Parameter", - "outputs" : ["Parameter_18175"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14919", - "op" : "Parameter", - "outputs" : ["Parameter_14919"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16431", - "op" : "Parameter", - "outputs" : ["Parameter_16431"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14014", - "op" : "Parameter", - "outputs" : ["Parameter_14014"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16846", - "op" : "Parameter", - "outputs" : ["Parameter_16846"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16374", - "op" : "Parameter", - "outputs" : ["Parameter_16374"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14925", - "op" : "Parameter", - "outputs" : ["Parameter_14925"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14929", - "op" : "Parameter", - "outputs" : ["Parameter_14929"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16720", - "op" : "Parameter", - "outputs" : ["Parameter_16720"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15909", - "op" : "Parameter", - "outputs" : ["Parameter_15909"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14930", - "op" : "Parameter", - "outputs" : ["Parameter_14930"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15059", - "op" : "Parameter", - "outputs" : ["Parameter_15059"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15894", - "op" : "Parameter", - "outputs" : ["Parameter_15894"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14931", - "op" : "Parameter", - "outputs" : ["Parameter_14931"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14933", - "op" : "Parameter", - "outputs" : ["Parameter_14933"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14934", - "op" : "Parameter", - "outputs" : ["Parameter_14934"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15378", - "op" : "Parameter", - "outputs" : ["Parameter_15378"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14948", - "op" : "Parameter", - "outputs" : ["Parameter_14948"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16501", - "op" : "Parameter", - "outputs" : ["Parameter_16501"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14936", - "op" : "Parameter", - "outputs" : ["Parameter_14936"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14938", - "op" : "Parameter", - "outputs" : ["Parameter_14938"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17675", - "op" : "Parameter", - "outputs" : ["Parameter_17675"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14941", - "op" : "Parameter", - "outputs" : ["Parameter_14941"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18052", - "op" : "Parameter", - "outputs" : ["Parameter_18052"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14956", - "op" : "Parameter", - "outputs" : ["Parameter_14956"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17866", - "op" : "Parameter", - "outputs" : ["Parameter_17866"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16572", - "op" : "Parameter", - "outputs" : ["Parameter_16572"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17760", - "op" : "Parameter", - "outputs" : ["Parameter_17760"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14944", - "op" : "Parameter", - "outputs" : ["Parameter_14944"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14967", - "op" : "Parameter", - "outputs" : ["Parameter_14967"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14946", - "op" : "Parameter", - "outputs" : ["Parameter_14946"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17563", - "op" : "Parameter", - "outputs" : ["Parameter_17563"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14953", - "op" : "Parameter", - "outputs" : ["Parameter_14953"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14959", - "op" : "Parameter", - "outputs" : ["Parameter_14959"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16463", - "op" : "Parameter", - "outputs" : ["Parameter_16463"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18035", - "op" : "Parameter", - "outputs" : ["Parameter_18035"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13996", - "op" : "Parameter", - "outputs" : ["Parameter_13996"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16957", - "op" : "Parameter", - "outputs" : ["Parameter_16957"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14969", - "op" : "Parameter", - "outputs" : ["Parameter_14969"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16999", - "op" : "Parameter", - "outputs" : ["Parameter_16999"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17899", - "op" : "Parameter", - "outputs" : ["Parameter_17899"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15835", - "op" : "Parameter", - "outputs" : ["Parameter_15835"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14972", - "op" : "Parameter", - "outputs" : ["Parameter_14972"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16434", - "op" : "Parameter", - "outputs" : ["Parameter_16434"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17090", - "op" : "Parameter", - "outputs" : ["Parameter_17090"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15766", - "op" : "Parameter", - "outputs" : ["Parameter_15766"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18201", - "op" : "Parameter", - "outputs" : ["Parameter_18201"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14495", - "op" : "Parameter", - "outputs" : ["Parameter_14495"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14984", - "op" : "Parameter", - "outputs" : ["Parameter_14984"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17091", - "op" : "Parameter", - "outputs" : ["Parameter_17091"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14496", - "op" : "Parameter", - "outputs" : ["Parameter_14496"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16551", - "op" : "Parameter", - "outputs" : ["Parameter_16551"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15937", - "op" : "Parameter", - "outputs" : ["Parameter_15937"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14986", - "op" : "Parameter", - "outputs" : ["Parameter_14986"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14990", - "op" : "Parameter", - "outputs" : ["Parameter_14990"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17285", - "op" : "Parameter", - "outputs" : ["Parameter_17285"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18411", - "op" : "Parameter", - "outputs" : ["Parameter_18411"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14996", - "op" : "Parameter", - "outputs" : ["Parameter_14996"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13791", - "op" : "Parameter", - "outputs" : ["Parameter_13791"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14397", - "op" : "Parameter", - "outputs" : ["Parameter_14397"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14998", - "op" : "Parameter", - "outputs" : ["Parameter_14998"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15317", - "op" : "Parameter", - "outputs" : ["Parameter_15317"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14999", - "op" : "Parameter", - "outputs" : ["Parameter_14999"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17223", - "op" : "Parameter", - "outputs" : ["Parameter_17223"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17802", - "op" : "Parameter", - "outputs" : ["Parameter_17802"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16628", - "op" : "Parameter", - "outputs" : ["Parameter_16628"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15000", - "op" : "Parameter", - "outputs" : ["Parameter_15000"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17270", - "op" : "Parameter", - "outputs" : ["Parameter_17270"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14340", - "op" : "Parameter", - "outputs" : ["Parameter_14340"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16165", - "op" : "Parameter", - "outputs" : ["Parameter_16165"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15013", - "op" : "Parameter", - "outputs" : ["Parameter_15013"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15004", - "op" : "Parameter", - "outputs" : ["Parameter_15004"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15281", - "op" : "Parameter", - "outputs" : ["Parameter_15281"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17965", - "op" : "Parameter", - "outputs" : ["Parameter_17965"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15005", - "op" : "Parameter", - "outputs" : ["Parameter_15005"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17992", - "op" : "Parameter", - "outputs" : ["Parameter_17992"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15009", - "op" : "Parameter", - "outputs" : ["Parameter_15009"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15010", - "op" : "Parameter", - "outputs" : ["Parameter_15010"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15564", - "op" : "Parameter", - "outputs" : ["Parameter_15564"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14176", - "op" : "Parameter", - "outputs" : ["Parameter_14176"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15011", - "op" : "Parameter", - "outputs" : ["Parameter_15011"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17206", - "op" : "Parameter", - "outputs" : ["Parameter_17206"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16235", - "op" : "Parameter", - "outputs" : ["Parameter_16235"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17845", - "op" : "Parameter", - "outputs" : ["Parameter_17845"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17477", - "op" : "Parameter", - "outputs" : ["Parameter_17477"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15015", - "op" : "Parameter", - "outputs" : ["Parameter_15015"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17192", - "op" : "Parameter", - "outputs" : ["Parameter_17192"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15086", - "op" : "Parameter", - "outputs" : ["Parameter_15086"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15017", - "op" : "Parameter", - "outputs" : ["Parameter_15017"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17354", - "op" : "Parameter", - "outputs" : ["Parameter_17354"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15665", - "op" : "Parameter", - "outputs" : ["Parameter_15665"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15925", - "op" : "Parameter", - "outputs" : ["Parameter_15925"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15022", - "op" : "Parameter", - "outputs" : ["Parameter_15022"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16320", - "op" : "Parameter", - "outputs" : ["Parameter_16320"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18218", - "op" : "Parameter", - "outputs" : ["Parameter_18218"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15035", - "op" : "Parameter", - "outputs" : ["Parameter_15035"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15190", - "op" : "Parameter", - "outputs" : ["Parameter_15190"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14699", - "op" : "Parameter", - "outputs" : ["Parameter_14699"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16754", - "op" : "Parameter", - "outputs" : ["Parameter_16754"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15026", - "op" : "Parameter", - "outputs" : ["Parameter_15026"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15027", - "op" : "Parameter", - "outputs" : ["Parameter_15027"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13912", - "op" : "Parameter", - "outputs" : ["Parameter_13912"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15029", - "op" : "Parameter", - "outputs" : ["Parameter_15029"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15031", - "op" : "Parameter", - "outputs" : ["Parameter_15031"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16866", - "op" : "Parameter", - "outputs" : ["Parameter_16866"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15032", - "op" : "Parameter", - "outputs" : ["Parameter_15032"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15037", - "op" : "Parameter", - "outputs" : ["Parameter_15037"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17169", - "op" : "Parameter", - "outputs" : ["Parameter_17169"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16154", - "op" : "Parameter", - "outputs" : ["Parameter_16154"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15477", - "op" : "Parameter", - "outputs" : ["Parameter_15477"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15227", - "op" : "Parameter", - "outputs" : ["Parameter_15227"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13960", - "op" : "Parameter", - "outputs" : ["Parameter_13960"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15038", - "op" : "Parameter", - "outputs" : ["Parameter_15038"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15468", - "op" : "Parameter", - "outputs" : ["Parameter_15468"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15181", - "op" : "Parameter", - "outputs" : ["Parameter_15181"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16861", - "op" : "Parameter", - "outputs" : ["Parameter_16861"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16244", - "op" : "Parameter", - "outputs" : ["Parameter_16244"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15043", - "op" : "Parameter", - "outputs" : ["Parameter_15043"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15044", - "op" : "Parameter", - "outputs" : ["Parameter_15044"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15430", - "op" : "Parameter", - "outputs" : ["Parameter_15430"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17534", - "op" : "Parameter", - "outputs" : ["Parameter_17534"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18276", - "op" : "Parameter", - "outputs" : ["Parameter_18276"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15047", - "op" : "Parameter", - "outputs" : ["Parameter_15047"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15053", - "op" : "Parameter", - "outputs" : ["Parameter_15053"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15055", - "op" : "Parameter", - "outputs" : ["Parameter_15055"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14634", - "op" : "Parameter", - "outputs" : ["Parameter_14634"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15057", - "op" : "Parameter", - "outputs" : ["Parameter_15057"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15061", - "op" : "Parameter", - "outputs" : ["Parameter_15061"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18119", - "op" : "Parameter", - "outputs" : ["Parameter_18119"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17167", - "op" : "Parameter", - "outputs" : ["Parameter_17167"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15837", - "op" : "Parameter", - "outputs" : ["Parameter_15837"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14386", - "op" : "Parameter", - "outputs" : ["Parameter_14386"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16424", - "op" : "Parameter", - "outputs" : ["Parameter_16424"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14388", - "op" : "Parameter", - "outputs" : ["Parameter_14388"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15066", - "op" : "Parameter", - "outputs" : ["Parameter_15066"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_16711", - "op" : "Parameter", - "outputs" : ["Parameter_16711"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16364", - "op" : "Parameter", - "outputs" : ["Parameter_16364"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15070", - "op" : "Parameter", - "outputs" : ["Parameter_15070"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16580", - "op" : "Parameter", - "outputs" : ["Parameter_16580"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15145", - "op" : "Parameter", - "outputs" : ["Parameter_15145"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15071", - "op" : "Parameter", - "outputs" : ["Parameter_15071"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15320", - "op" : "Parameter", - "outputs" : ["Parameter_15320"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15074", - "op" : "Parameter", - "outputs" : ["Parameter_15074"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14177", - "op" : "Parameter", - "outputs" : ["Parameter_14177"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17543", - "op" : "Parameter", - "outputs" : ["Parameter_17543"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15521", - "op" : "Parameter", - "outputs" : ["Parameter_15521"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15079", - "op" : "Parameter", - "outputs" : ["Parameter_15079"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15087", - "op" : "Parameter", - "outputs" : ["Parameter_15087"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17602", - "op" : "Parameter", - "outputs" : ["Parameter_17602"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15723", - "op" : "Parameter", - "outputs" : ["Parameter_15723"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14587", - "op" : "Parameter", - "outputs" : ["Parameter_14587"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17279", - "op" : "Parameter", - "outputs" : ["Parameter_17279"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16308", - "op" : "Parameter", - "outputs" : ["Parameter_16308"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15484", - "op" : "Parameter", - "outputs" : ["Parameter_15484"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15275", - "op" : "Parameter", - "outputs" : ["Parameter_15275"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14145", - "op" : "Parameter", - "outputs" : ["Parameter_14145"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15112", - "op" : "Parameter", - "outputs" : ["Parameter_15112"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15791", - "op" : "Parameter", - "outputs" : ["Parameter_15791"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15094", - "op" : "Parameter", - "outputs" : ["Parameter_15094"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15780", - "op" : "Parameter", - "outputs" : ["Parameter_15780"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14422", - "op" : "Parameter", - "outputs" : ["Parameter_14422"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15095", - "op" : "Parameter", - "outputs" : ["Parameter_15095"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16876", - "op" : "Parameter", - "outputs" : ["Parameter_16876"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16262", - "op" : "Parameter", - "outputs" : ["Parameter_16262"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15811", - "op" : "Parameter", - "outputs" : ["Parameter_15811"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15107", - "op" : "Parameter", - "outputs" : ["Parameter_15107"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17450", - "op" : "Parameter", - "outputs" : ["Parameter_17450"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15329", - "op" : "Parameter", - "outputs" : ["Parameter_15329"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15453", - "op" : "Parameter", - "outputs" : ["Parameter_15453"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17658", - "op" : "Parameter", - "outputs" : ["Parameter_17658"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15467", - "op" : "Parameter", - "outputs" : ["Parameter_15467"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15115", - "op" : "Parameter", - "outputs" : ["Parameter_15115"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15117", - "op" : "Parameter", - "outputs" : ["Parameter_15117"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15118", - "op" : "Parameter", - "outputs" : ["Parameter_15118"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15119", - "op" : "Parameter", - "outputs" : ["Parameter_15119"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15120", - "op" : "Parameter", - "outputs" : ["Parameter_15120"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15122", - "op" : "Parameter", - "outputs" : ["Parameter_15122"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18235", - "op" : "Parameter", - "outputs" : ["Parameter_18235"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13966", - "op" : "Parameter", - "outputs" : ["Parameter_13966"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14201", - "op" : "Parameter", - "outputs" : ["Parameter_14201"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15326", - "op" : "Parameter", - "outputs" : ["Parameter_15326"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18313", - "op" : "Parameter", - "outputs" : ["Parameter_18313"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14109", - "op" : "Parameter", - "outputs" : ["Parameter_14109"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15125", - "op" : "Parameter", - "outputs" : ["Parameter_15125"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15130", - "op" : "Parameter", - "outputs" : ["Parameter_15130"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14180", - "op" : "Parameter", - "outputs" : ["Parameter_14180"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15143", - "op" : "Parameter", - "outputs" : ["Parameter_15143"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15345", - "op" : "Parameter", - "outputs" : ["Parameter_15345"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15359", - "op" : "Parameter", - "outputs" : ["Parameter_15359"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15440", - "op" : "Parameter", - "outputs" : ["Parameter_15440"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15643", - "op" : "Parameter", - "outputs" : ["Parameter_15643"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15282", - "op" : "Parameter", - "outputs" : ["Parameter_15282"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17350", - "op" : "Parameter", - "outputs" : ["Parameter_17350"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16731", - "op" : "Parameter", - "outputs" : ["Parameter_16731"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14118", - "op" : "Parameter", - "outputs" : ["Parameter_14118"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15172", - "op" : "Parameter", - "outputs" : ["Parameter_15172"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15502", - "op" : "Parameter", - "outputs" : ["Parameter_15502"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17330", - "op" : "Parameter", - "outputs" : ["Parameter_17330"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15147", - "op" : "Parameter", - "outputs" : ["Parameter_15147"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15501", - "op" : "Parameter", - "outputs" : ["Parameter_15501"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13820", - "op" : "Parameter", - "outputs" : ["Parameter_13820"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14159", - "op" : "Parameter", - "outputs" : ["Parameter_14159"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15155", - "op" : "Parameter", - "outputs" : ["Parameter_15155"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16724", - "op" : "Parameter", - "outputs" : ["Parameter_16724"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15157", - "op" : "Parameter", - "outputs" : ["Parameter_15157"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16233", - "op" : "Parameter", - "outputs" : ["Parameter_16233"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15159", - "op" : "Parameter", - "outputs" : ["Parameter_15159"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15162", - "op" : "Parameter", - "outputs" : ["Parameter_15162"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17060", - "op" : "Parameter", - "outputs" : ["Parameter_17060"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15163", - "op" : "Parameter", - "outputs" : ["Parameter_15163"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15164", - "op" : "Parameter", - "outputs" : ["Parameter_15164"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15189", - "op" : "Parameter", - "outputs" : ["Parameter_15189"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17741", - "op" : "Parameter", - "outputs" : ["Parameter_17741"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15196", - "op" : "Parameter", - "outputs" : ["Parameter_15196"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17814", - "op" : "Parameter", - "outputs" : ["Parameter_17814"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16877", - "op" : "Parameter", - "outputs" : ["Parameter_16877"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15167", - "op" : "Parameter", - "outputs" : ["Parameter_15167"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15168", - "op" : "Parameter", - "outputs" : ["Parameter_15168"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17813", - "op" : "Parameter", - "outputs" : ["Parameter_17813"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17405", - "op" : "Parameter", - "outputs" : ["Parameter_17405"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16056", - "op" : "Parameter", - "outputs" : ["Parameter_16056"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18384", - "op" : "Parameter", - "outputs" : ["Parameter_18384"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15174", - "op" : "Parameter", - "outputs" : ["Parameter_15174"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14694", - "op" : "Parameter", - "outputs" : ["Parameter_14694"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15177", - "op" : "Parameter", - "outputs" : ["Parameter_15177"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15286", - "op" : "Parameter", - "outputs" : ["Parameter_15286"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15259", - "op" : "Parameter", - "outputs" : ["Parameter_15259"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15180", - "op" : "Parameter", - "outputs" : ["Parameter_15180"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16133", - "op" : "Parameter", - "outputs" : ["Parameter_16133"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15598", - "op" : "Parameter", - "outputs" : ["Parameter_15598"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15352", - "op" : "Parameter", - "outputs" : ["Parameter_15352"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16922", - "op" : "Parameter", - "outputs" : ["Parameter_16922"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17886", - "op" : "Parameter", - "outputs" : ["Parameter_17886"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15193", - "op" : "Parameter", - "outputs" : ["Parameter_15193"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15194", - "op" : "Parameter", - "outputs" : ["Parameter_15194"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17173", - "op" : "Parameter", - "outputs" : ["Parameter_17173"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15195", - "op" : "Parameter", - "outputs" : ["Parameter_15195"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15576", - "op" : "Parameter", - "outputs" : ["Parameter_15576"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15208", - "op" : "Parameter", - "outputs" : ["Parameter_15208"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15201", - "op" : "Parameter", - "outputs" : ["Parameter_15201"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17311", - "op" : "Parameter", - "outputs" : ["Parameter_17311"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15460", - "op" : "Parameter", - "outputs" : ["Parameter_15460"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15210", - "op" : "Parameter", - "outputs" : ["Parameter_15210"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16613", - "op" : "Parameter", - "outputs" : ["Parameter_16613"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16147", - "op" : "Parameter", - "outputs" : ["Parameter_16147"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15221", - "op" : "Parameter", - "outputs" : ["Parameter_15221"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15836", - "op" : "Parameter", - "outputs" : ["Parameter_15836"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15222", - "op" : "Parameter", - "outputs" : ["Parameter_15222"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16854", - "op" : "Parameter", - "outputs" : ["Parameter_16854"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15226", - "op" : "Parameter", - "outputs" : ["Parameter_15226"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15230", - "op" : "Parameter", - "outputs" : ["Parameter_15230"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18245", - "op" : "Parameter", - "outputs" : ["Parameter_18245"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16921", - "op" : "Parameter", - "outputs" : ["Parameter_16921"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14336", - "op" : "Parameter", - "outputs" : ["Parameter_14336"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14810", - "op" : "Parameter", - "outputs" : ["Parameter_14810"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15237", - "op" : "Parameter", - "outputs" : ["Parameter_15237"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16035", - "op" : "Parameter", - "outputs" : ["Parameter_16035"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16631", - "op" : "Parameter", - "outputs" : ["Parameter_16631"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18401", - "op" : "Parameter", - "outputs" : ["Parameter_18401"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15245", - "op" : "Parameter", - "outputs" : ["Parameter_15245"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18151", - "op" : "Parameter", - "outputs" : ["Parameter_18151"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15250", - "op" : "Parameter", - "outputs" : ["Parameter_15250"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18059", - "op" : "Parameter", - "outputs" : ["Parameter_18059"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15251", - "op" : "Parameter", - "outputs" : ["Parameter_15251"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15252", - "op" : "Parameter", - "outputs" : ["Parameter_15252"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15253", - "op" : "Parameter", - "outputs" : ["Parameter_15253"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16759", - "op" : "Parameter", - "outputs" : ["Parameter_16759"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15255", - "op" : "Parameter", - "outputs" : ["Parameter_15255"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15258", - "op" : "Parameter", - "outputs" : ["Parameter_15258"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14457", - "op" : "Parameter", - "outputs" : ["Parameter_14457"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17306", - "op" : "Parameter", - "outputs" : ["Parameter_17306"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14060", - "op" : "Parameter", - "outputs" : ["Parameter_14060"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15452", - "op" : "Parameter", - "outputs" : ["Parameter_15452"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17177", - "op" : "Parameter", - "outputs" : ["Parameter_17177"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14212", - "op" : "Parameter", - "outputs" : ["Parameter_14212"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15263", - "op" : "Parameter", - "outputs" : ["Parameter_15263"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18251", - "op" : "Parameter", - "outputs" : ["Parameter_18251"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17385", - "op" : "Parameter", - "outputs" : ["Parameter_17385"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15264", - "op" : "Parameter", - "outputs" : ["Parameter_15264"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15364", - "op" : "Parameter", - "outputs" : ["Parameter_15364"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14721", - "op" : "Parameter", - "outputs" : ["Parameter_14721"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17707", - "op" : "Parameter", - "outputs" : ["Parameter_17707"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15388", - "op" : "Parameter", - "outputs" : ["Parameter_15388"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15402", - "op" : "Parameter", - "outputs" : ["Parameter_15402"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15265", - "op" : "Parameter", - "outputs" : ["Parameter_15265"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14787", - "op" : "Parameter", - "outputs" : ["Parameter_14787"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15266", - "op" : "Parameter", - "outputs" : ["Parameter_15266"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16025", - "op" : "Parameter", - "outputs" : ["Parameter_16025"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14692", - "op" : "Parameter", - "outputs" : ["Parameter_14692"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15512", - "op" : "Parameter", - "outputs" : ["Parameter_15512"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15207", - "op" : "Parameter", - "outputs" : ["Parameter_15207"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14444", - "op" : "Parameter", - "outputs" : ["Parameter_14444"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14417", - "op" : "Parameter", - "outputs" : ["Parameter_14417"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15276", - "op" : "Parameter", - "outputs" : ["Parameter_15276"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17397", - "op" : "Parameter", - "outputs" : ["Parameter_17397"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15279", - "op" : "Parameter", - "outputs" : ["Parameter_15279"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14843", - "op" : "Parameter", - "outputs" : ["Parameter_14843"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15294", - "op" : "Parameter", - "outputs" : ["Parameter_15294"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16212", - "op" : "Parameter", - "outputs" : ["Parameter_16212"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13918", - "op" : "Parameter", - "outputs" : ["Parameter_13918"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15299", - "op" : "Parameter", - "outputs" : ["Parameter_15299"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15323", - "op" : "Parameter", - "outputs" : ["Parameter_15323"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14807", - "op" : "Parameter", - "outputs" : ["Parameter_14807"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16290", - "op" : "Parameter", - "outputs" : ["Parameter_16290"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18135", - "op" : "Parameter", - "outputs" : ["Parameter_18135"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15337", - "op" : "Parameter", - "outputs" : ["Parameter_15337"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16086", - "op" : "Parameter", - "outputs" : ["Parameter_16086"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15303", - "op" : "Parameter", - "outputs" : ["Parameter_15303"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18025", - "op" : "Parameter", - "outputs" : ["Parameter_18025"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17001", - "op" : "Parameter", - "outputs" : ["Parameter_17001"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16100", - "op" : "Parameter", - "outputs" : ["Parameter_16100"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15305", - "op" : "Parameter", - "outputs" : ["Parameter_15305"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15306", - "op" : "Parameter", - "outputs" : ["Parameter_15306"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15312", - "op" : "Parameter", - "outputs" : ["Parameter_15312"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18300", - "op" : "Parameter", - "outputs" : ["Parameter_18300"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15319", - "op" : "Parameter", - "outputs" : ["Parameter_15319"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16824", - "op" : "Parameter", - "outputs" : ["Parameter_16824"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15322", - "op" : "Parameter", - "outputs" : ["Parameter_15322"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16135", - "op" : "Parameter", - "outputs" : ["Parameter_16135"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17919", - "op" : "Parameter", - "outputs" : ["Parameter_17919"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15324", - "op" : "Parameter", - "outputs" : ["Parameter_15324"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14790", - "op" : "Parameter", - "outputs" : ["Parameter_14790"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15328", - "op" : "Parameter", - "outputs" : ["Parameter_15328"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16090", - "op" : "Parameter", - "outputs" : ["Parameter_16090"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15332", - "op" : "Parameter", - "outputs" : ["Parameter_15332"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14563", - "op" : "Parameter", - "outputs" : ["Parameter_14563"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15338", - "op" : "Parameter", - "outputs" : ["Parameter_15338"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13923", - "op" : "Parameter", - "outputs" : ["Parameter_13923"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15350", - "op" : "Parameter", - "outputs" : ["Parameter_15350"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14356", - "op" : "Parameter", - "outputs" : ["Parameter_14356"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18283", - "op" : "Parameter", - "outputs" : ["Parameter_18283"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15360", - "op" : "Parameter", - "outputs" : ["Parameter_15360"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14023", - "op" : "Parameter", - "outputs" : ["Parameter_14023"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15361", - "op" : "Parameter", - "outputs" : ["Parameter_15361"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14910", - "op" : "Parameter", - "outputs" : ["Parameter_14910"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15362", - "op" : "Parameter", - "outputs" : ["Parameter_15362"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17357", - "op" : "Parameter", - "outputs" : ["Parameter_17357"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15367", - "op" : "Parameter", - "outputs" : ["Parameter_15367"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17233", - "op" : "Parameter", - "outputs" : ["Parameter_17233"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15368", - "op" : "Parameter", - "outputs" : ["Parameter_15368"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18090", - "op" : "Parameter", - "outputs" : ["Parameter_18090"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15369", - "op" : "Parameter", - "outputs" : ["Parameter_15369"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17066", - "op" : "Parameter", - "outputs" : ["Parameter_17066"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15370", - "op" : "Parameter", - "outputs" : ["Parameter_15370"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15372", - "op" : "Parameter", - "outputs" : ["Parameter_15372"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15374", - "op" : "Parameter", - "outputs" : ["Parameter_15374"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18111", - "op" : "Parameter", - "outputs" : ["Parameter_18111"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15375", - "op" : "Parameter", - "outputs" : ["Parameter_15375"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15377", - "op" : "Parameter", - "outputs" : ["Parameter_15377"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17322", - "op" : "Parameter", - "outputs" : ["Parameter_17322"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14949", - "op" : "Parameter", - "outputs" : ["Parameter_14949"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17835", - "op" : "Parameter", - "outputs" : ["Parameter_17835"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15381", - "op" : "Parameter", - "outputs" : ["Parameter_15381"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16889", - "op" : "Parameter", - "outputs" : ["Parameter_16889"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14844", - "op" : "Parameter", - "outputs" : ["Parameter_14844"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15385", - "op" : "Parameter", - "outputs" : ["Parameter_15385"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15390", - "op" : "Parameter", - "outputs" : ["Parameter_15390"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15988", - "op" : "Parameter", - "outputs" : ["Parameter_15988"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15393", - "op" : "Parameter", - "outputs" : ["Parameter_15393"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15396", - "op" : "Parameter", - "outputs" : ["Parameter_15396"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16155", - "op" : "Parameter", - "outputs" : ["Parameter_16155"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14241", - "op" : "Parameter", - "outputs" : ["Parameter_14241"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15397", - "op" : "Parameter", - "outputs" : ["Parameter_15397"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15399", - "op" : "Parameter", - "outputs" : ["Parameter_15399"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_14758", - "op" : "Parameter", - "outputs" : ["Parameter_14758"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15415", - "op" : "Parameter", - "outputs" : ["Parameter_15415"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15663", - "op" : "Parameter", - "outputs" : ["Parameter_15663"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15417", - "op" : "Parameter", - "outputs" : ["Parameter_15417"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17049", - "op" : "Parameter", - "outputs" : ["Parameter_17049"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14349", - "op" : "Parameter", - "outputs" : ["Parameter_14349"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15420", - "op" : "Parameter", - "outputs" : ["Parameter_15420"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15421", - "op" : "Parameter", - "outputs" : ["Parameter_15421"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15425", - "op" : "Parameter", - "outputs" : ["Parameter_15425"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14012", - "op" : "Parameter", - "outputs" : ["Parameter_14012"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15426", - "op" : "Parameter", - "outputs" : ["Parameter_15426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_13944", - "op" : "Parameter", - "outputs" : ["Parameter_13944"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15431", - "op" : "Parameter", - "outputs" : ["Parameter_15431"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17519", - "op" : "Parameter", - "outputs" : ["Parameter_17519"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17131", - "op" : "Parameter", - "outputs" : ["Parameter_17131"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15442", - "op" : "Parameter", - "outputs" : ["Parameter_15442"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17387", - "op" : "Parameter", - "outputs" : ["Parameter_17387"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15446", - "op" : "Parameter", - "outputs" : ["Parameter_15446"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15450", - "op" : "Parameter", - "outputs" : ["Parameter_15450"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15455", - "op" : "Parameter", - "outputs" : ["Parameter_15455"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15459", - "op" : "Parameter", - "outputs" : ["Parameter_15459"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14288", - "op" : "Parameter", - "outputs" : ["Parameter_14288"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15046", - "op" : "Parameter", - "outputs" : ["Parameter_15046"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16728", - "op" : "Parameter", - "outputs" : ["Parameter_16728"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_15470", - "op" : "Parameter", - "outputs" : ["Parameter_15470"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16075", - "op" : "Parameter", - "outputs" : ["Parameter_16075"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15480", - "op" : "Parameter", - "outputs" : ["Parameter_15480"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_16701", - "op" : "Parameter", - "outputs" : ["Parameter_16701"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14702", - "op" : "Parameter", - "outputs" : ["Parameter_14702"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15490", - "op" : "Parameter", - "outputs" : ["Parameter_15490"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15495", - "op" : "Parameter", - "outputs" : ["Parameter_15495"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17599", - "op" : "Parameter", - "outputs" : ["Parameter_17599"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17196", - "op" : "Parameter", - "outputs" : ["Parameter_17196"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_14788", - "op" : "Parameter", - "outputs" : ["Parameter_14788"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15504", - "op" : "Parameter", - "outputs" : ["Parameter_15504"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15505", - "op" : "Parameter", - "outputs" : ["Parameter_15505"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_15507", - "op" : "Parameter", - "outputs" : ["Parameter_15507"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17506", - "op" : "Parameter", - "outputs" : ["Parameter_17506"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17507", - "op" : "Parameter", - "outputs" : ["Parameter_17507"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17508", - "op" : "Parameter", - "outputs" : ["Parameter_17508"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17509", - "op" : "Parameter", - "outputs" : ["Parameter_17509"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17510", - "op" : "Parameter", - "outputs" : ["Parameter_17510"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17511", - "op" : "Parameter", - "outputs" : ["Parameter_17511"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17512", - "op" : "Parameter", - "outputs" : ["Parameter_17512"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17513", - "op" : "Parameter", - "outputs" : ["Parameter_17513"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17515", - "op" : "Parameter", - "outputs" : ["Parameter_17515"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17517", - "op" : "Parameter", - "outputs" : ["Parameter_17517"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17626", - "op" : "Parameter", - "outputs" : ["Parameter_17626"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17518", - "op" : "Parameter", - "outputs" : ["Parameter_17518"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17521", - "op" : "Parameter", - "outputs" : ["Parameter_17521"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17524", - "op" : "Parameter", - "outputs" : ["Parameter_17524"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17525", - "op" : "Parameter", - "outputs" : ["Parameter_17525"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17526", - "op" : "Parameter", - "outputs" : ["Parameter_17526"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17528", - "op" : "Parameter", - "outputs" : ["Parameter_17528"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17530", - "op" : "Parameter", - "outputs" : ["Parameter_17530"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17532", - "op" : "Parameter", - "outputs" : ["Parameter_17532"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17535", - "op" : "Parameter", - "outputs" : ["Parameter_17535"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17536", - "op" : "Parameter", - "outputs" : ["Parameter_17536"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17539", - "op" : "Parameter", - "outputs" : ["Parameter_17539"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17540", - "op" : "Parameter", - "outputs" : ["Parameter_17540"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17541", - "op" : "Parameter", - "outputs" : ["Parameter_17541"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17542", - "op" : "Parameter", - "outputs" : ["Parameter_17542"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17544", - "op" : "Parameter", - "outputs" : ["Parameter_17544"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17545", - "op" : "Parameter", - "outputs" : ["Parameter_17545"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17546", - "op" : "Parameter", - "outputs" : ["Parameter_17546"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17547", - "op" : "Parameter", - "outputs" : ["Parameter_17547"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17551", - "op" : "Parameter", - "outputs" : ["Parameter_17551"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17552", - "op" : "Parameter", - "outputs" : ["Parameter_17552"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17553", - "op" : "Parameter", - "outputs" : ["Parameter_17553"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17554", - "op" : "Parameter", - "outputs" : ["Parameter_17554"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17555", - "op" : "Parameter", - "outputs" : ["Parameter_17555"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17557", - "op" : "Parameter", - "outputs" : ["Parameter_17557"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17558", - "op" : "Parameter", - "outputs" : ["Parameter_17558"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17560", - "op" : "Parameter", - "outputs" : ["Parameter_17560"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17561", - "op" : "Parameter", - "outputs" : ["Parameter_17561"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17565", - "op" : "Parameter", - "outputs" : ["Parameter_17565"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17566", - "op" : "Parameter", - "outputs" : ["Parameter_17566"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17568", - "op" : "Parameter", - "outputs" : ["Parameter_17568"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17569", - "op" : "Parameter", - "outputs" : ["Parameter_17569"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18241", - "op" : "Parameter", - "outputs" : ["Parameter_18241"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17571", - "op" : "Parameter", - "outputs" : ["Parameter_17571"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17572", - "op" : "Parameter", - "outputs" : ["Parameter_17572"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17573", - "op" : "Parameter", - "outputs" : ["Parameter_17573"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17574", - "op" : "Parameter", - "outputs" : ["Parameter_17574"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17577", - "op" : "Parameter", - "outputs" : ["Parameter_17577"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17578", - "op" : "Parameter", - "outputs" : ["Parameter_17578"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17580", - "op" : "Parameter", - "outputs" : ["Parameter_17580"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17583", - "op" : "Parameter", - "outputs" : ["Parameter_17583"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17588", - "op" : "Parameter", - "outputs" : ["Parameter_17588"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17589", - "op" : "Parameter", - "outputs" : ["Parameter_17589"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17590", - "op" : "Parameter", - "outputs" : ["Parameter_17590"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17591", - "op" : "Parameter", - "outputs" : ["Parameter_17591"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17592", - "op" : "Parameter", - "outputs" : ["Parameter_17592"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17593", - "op" : "Parameter", - "outputs" : ["Parameter_17593"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17594", - "op" : "Parameter", - "outputs" : ["Parameter_17594"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17728", - "op" : "Parameter", - "outputs" : ["Parameter_17728"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17595", - "op" : "Parameter", - "outputs" : ["Parameter_17595"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17596", - "op" : "Parameter", - "outputs" : ["Parameter_17596"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17597", - "op" : "Parameter", - "outputs" : ["Parameter_17597"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17600", - "op" : "Parameter", - "outputs" : ["Parameter_17600"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17601", - "op" : "Parameter", - "outputs" : ["Parameter_17601"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17603", - "op" : "Parameter", - "outputs" : ["Parameter_17603"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17604", - "op" : "Parameter", - "outputs" : ["Parameter_17604"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17605", - "op" : "Parameter", - "outputs" : ["Parameter_17605"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17606", - "op" : "Parameter", - "outputs" : ["Parameter_17606"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18386", - "op" : "Parameter", - "outputs" : ["Parameter_18386"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17607", - "op" : "Parameter", - "outputs" : ["Parameter_17607"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17608", - "op" : "Parameter", - "outputs" : ["Parameter_17608"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17609", - "op" : "Parameter", - "outputs" : ["Parameter_17609"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17610", - "op" : "Parameter", - "outputs" : ["Parameter_17610"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17611", - "op" : "Parameter", - "outputs" : ["Parameter_17611"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17612", - "op" : "Parameter", - "outputs" : ["Parameter_17612"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17616", - "op" : "Parameter", - "outputs" : ["Parameter_17616"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17617", - "op" : "Parameter", - "outputs" : ["Parameter_17617"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17618", - "op" : "Parameter", - "outputs" : ["Parameter_17618"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17619", - "op" : "Parameter", - "outputs" : ["Parameter_17619"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17620", - "op" : "Parameter", - "outputs" : ["Parameter_17620"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17625", - "op" : "Parameter", - "outputs" : ["Parameter_17625"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17627", - "op" : "Parameter", - "outputs" : ["Parameter_17627"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17628", - "op" : "Parameter", - "outputs" : ["Parameter_17628"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17636", - "op" : "Parameter", - "outputs" : ["Parameter_17636"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17638", - "op" : "Parameter", - "outputs" : ["Parameter_17638"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17639", - "op" : "Parameter", - "outputs" : ["Parameter_17639"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17640", - "op" : "Parameter", - "outputs" : ["Parameter_17640"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17642", - "op" : "Parameter", - "outputs" : ["Parameter_17642"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17643", - "op" : "Parameter", - "outputs" : ["Parameter_17643"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17645", - "op" : "Parameter", - "outputs" : ["Parameter_17645"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17647", - "op" : "Parameter", - "outputs" : ["Parameter_17647"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17648", - "op" : "Parameter", - "outputs" : ["Parameter_17648"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17649", - "op" : "Parameter", - "outputs" : ["Parameter_17649"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17650", - "op" : "Parameter", - "outputs" : ["Parameter_17650"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17651", - "op" : "Parameter", - "outputs" : ["Parameter_17651"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17652", - "op" : "Parameter", - "outputs" : ["Parameter_17652"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17654", - "op" : "Parameter", - "outputs" : ["Parameter_17654"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17656", - "op" : "Parameter", - "outputs" : ["Parameter_17656"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17659", - "op" : "Parameter", - "outputs" : ["Parameter_17659"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17661", - "op" : "Parameter", - "outputs" : ["Parameter_17661"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17662", - "op" : "Parameter", - "outputs" : ["Parameter_17662"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17664", - "op" : "Parameter", - "outputs" : ["Parameter_17664"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17666", - "op" : "Parameter", - "outputs" : ["Parameter_17666"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17669", - "op" : "Parameter", - "outputs" : ["Parameter_17669"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17670", - "op" : "Parameter", - "outputs" : ["Parameter_17670"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17671", - "op" : "Parameter", - "outputs" : ["Parameter_17671"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17672", - "op" : "Parameter", - "outputs" : ["Parameter_17672"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17674", - "op" : "Parameter", - "outputs" : ["Parameter_17674"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17677", - "op" : "Parameter", - "outputs" : ["Parameter_17677"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17679", - "op" : "Parameter", - "outputs" : ["Parameter_17679"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17680", - "op" : "Parameter", - "outputs" : ["Parameter_17680"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17682", - "op" : "Parameter", - "outputs" : ["Parameter_17682"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17980", - "op" : "Parameter", - "outputs" : ["Parameter_17980"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17683", - "op" : "Parameter", - "outputs" : ["Parameter_17683"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17981", - "op" : "Parameter", - "outputs" : ["Parameter_17981"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17684", - "op" : "Parameter", - "outputs" : ["Parameter_17684"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17685", - "op" : "Parameter", - "outputs" : ["Parameter_17685"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17686", - "op" : "Parameter", - "outputs" : ["Parameter_17686"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17688", - "op" : "Parameter", - "outputs" : ["Parameter_17688"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17690", - "op" : "Parameter", - "outputs" : ["Parameter_17690"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17692", - "op" : "Parameter", - "outputs" : ["Parameter_17692"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17693", - "op" : "Parameter", - "outputs" : ["Parameter_17693"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17696", - "op" : "Parameter", - "outputs" : ["Parameter_17696"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17697", - "op" : "Parameter", - "outputs" : ["Parameter_17697"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17698", - "op" : "Parameter", - "outputs" : ["Parameter_17698"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17701", - "op" : "Parameter", - "outputs" : ["Parameter_17701"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17703", - "op" : "Parameter", - "outputs" : ["Parameter_17703"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17704", - "op" : "Parameter", - "outputs" : ["Parameter_17704"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17705", - "op" : "Parameter", - "outputs" : ["Parameter_17705"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17706", - "op" : "Parameter", - "outputs" : ["Parameter_17706"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17708", - "op" : "Parameter", - "outputs" : ["Parameter_17708"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17709", - "op" : "Parameter", - "outputs" : ["Parameter_17709"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17712", - "op" : "Parameter", - "outputs" : ["Parameter_17712"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17713", - "op" : "Parameter", - "outputs" : ["Parameter_17713"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17714", - "op" : "Parameter", - "outputs" : ["Parameter_17714"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17715", - "op" : "Parameter", - "outputs" : ["Parameter_17715"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17717", - "op" : "Parameter", - "outputs" : ["Parameter_17717"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17718", - "op" : "Parameter", - "outputs" : ["Parameter_17718"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17719", - "op" : "Parameter", - "outputs" : ["Parameter_17719"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17721", - "op" : "Parameter", - "outputs" : ["Parameter_17721"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17722", - "op" : "Parameter", - "outputs" : ["Parameter_17722"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17724", - "op" : "Parameter", - "outputs" : ["Parameter_17724"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17725", - "op" : "Parameter", - "outputs" : ["Parameter_17725"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17726", - "op" : "Parameter", - "outputs" : ["Parameter_17726"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17729", - "op" : "Parameter", - "outputs" : ["Parameter_17729"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17730", - "op" : "Parameter", - "outputs" : ["Parameter_17730"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17731", - "op" : "Parameter", - "outputs" : ["Parameter_17731"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17733", - "op" : "Parameter", - "outputs" : ["Parameter_17733"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17734", - "op" : "Parameter", - "outputs" : ["Parameter_17734"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17736", - "op" : "Parameter", - "outputs" : ["Parameter_17736"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17737", - "op" : "Parameter", - "outputs" : ["Parameter_17737"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17738", - "op" : "Parameter", - "outputs" : ["Parameter_17738"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17739", - "op" : "Parameter", - "outputs" : ["Parameter_17739"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17740", - "op" : "Parameter", - "outputs" : ["Parameter_17740"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17742", - "op" : "Parameter", - "outputs" : ["Parameter_17742"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17743", - "op" : "Parameter", - "outputs" : ["Parameter_17743"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18322", - "op" : "Parameter", - "outputs" : ["Parameter_18322"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17744", - "op" : "Parameter", - "outputs" : ["Parameter_17744"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17745", - "op" : "Parameter", - "outputs" : ["Parameter_17745"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17746", - "op" : "Parameter", - "outputs" : ["Parameter_17746"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17747", - "op" : "Parameter", - "outputs" : ["Parameter_17747"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17748", - "op" : "Parameter", - "outputs" : ["Parameter_17748"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17750", - "op" : "Parameter", - "outputs" : ["Parameter_17750"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17751", - "op" : "Parameter", - "outputs" : ["Parameter_17751"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17752", - "op" : "Parameter", - "outputs" : ["Parameter_17752"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17753", - "op" : "Parameter", - "outputs" : ["Parameter_17753"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17754", - "op" : "Parameter", - "outputs" : ["Parameter_17754"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17755", - "op" : "Parameter", - "outputs" : ["Parameter_17755"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17758", - "op" : "Parameter", - "outputs" : ["Parameter_17758"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17761", - "op" : "Parameter", - "outputs" : ["Parameter_17761"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17762", - "op" : "Parameter", - "outputs" : ["Parameter_17762"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17764", - "op" : "Parameter", - "outputs" : ["Parameter_17764"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17765", - "op" : "Parameter", - "outputs" : ["Parameter_17765"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18344", - "op" : "Parameter", - "outputs" : ["Parameter_18344"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17767", - "op" : "Parameter", - "outputs" : ["Parameter_17767"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17770", - "op" : "Parameter", - "outputs" : ["Parameter_17770"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17771", - "op" : "Parameter", - "outputs" : ["Parameter_17771"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17772", - "op" : "Parameter", - "outputs" : ["Parameter_17772"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17773", - "op" : "Parameter", - "outputs" : ["Parameter_17773"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17774", - "op" : "Parameter", - "outputs" : ["Parameter_17774"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17775", - "op" : "Parameter", - "outputs" : ["Parameter_17775"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17776", - "op" : "Parameter", - "outputs" : ["Parameter_17776"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17778", - "op" : "Parameter", - "outputs" : ["Parameter_17778"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17780", - "op" : "Parameter", - "outputs" : ["Parameter_17780"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17781", - "op" : "Parameter", - "outputs" : ["Parameter_17781"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17783", - "op" : "Parameter", - "outputs" : ["Parameter_17783"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17784", - "op" : "Parameter", - "outputs" : ["Parameter_17784"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17785", - "op" : "Parameter", - "outputs" : ["Parameter_17785"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17786", - "op" : "Parameter", - "outputs" : ["Parameter_17786"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17787", - "op" : "Parameter", - "outputs" : ["Parameter_17787"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17788", - "op" : "Parameter", - "outputs" : ["Parameter_17788"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17789", - "op" : "Parameter", - "outputs" : ["Parameter_17789"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17790", - "op" : "Parameter", - "outputs" : ["Parameter_17790"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17791", - "op" : "Parameter", - "outputs" : ["Parameter_17791"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17792", - "op" : "Parameter", - "outputs" : ["Parameter_17792"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17795", - "op" : "Parameter", - "outputs" : ["Parameter_17795"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17796", - "op" : "Parameter", - "outputs" : ["Parameter_17796"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17801", - "op" : "Parameter", - "outputs" : ["Parameter_17801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17804", - "op" : "Parameter", - "outputs" : ["Parameter_17804"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17805", - "op" : "Parameter", - "outputs" : ["Parameter_17805"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17806", - "op" : "Parameter", - "outputs" : ["Parameter_17806"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17807", - "op" : "Parameter", - "outputs" : ["Parameter_17807"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17808", - "op" : "Parameter", - "outputs" : ["Parameter_17808"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17809", - "op" : "Parameter", - "outputs" : ["Parameter_17809"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17810", - "op" : "Parameter", - "outputs" : ["Parameter_17810"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18019", - "op" : "Parameter", - "outputs" : ["Parameter_18019"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17812", - "op" : "Parameter", - "outputs" : ["Parameter_17812"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17815", - "op" : "Parameter", - "outputs" : ["Parameter_17815"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17817", - "op" : "Parameter", - "outputs" : ["Parameter_17817"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17818", - "op" : "Parameter", - "outputs" : ["Parameter_17818"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17820", - "op" : "Parameter", - "outputs" : ["Parameter_17820"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17823", - "op" : "Parameter", - "outputs" : ["Parameter_17823"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17826", - "op" : "Parameter", - "outputs" : ["Parameter_17826"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17827", - "op" : "Parameter", - "outputs" : ["Parameter_17827"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17829", - "op" : "Parameter", - "outputs" : ["Parameter_17829"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17830", - "op" : "Parameter", - "outputs" : ["Parameter_17830"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17832", - "op" : "Parameter", - "outputs" : ["Parameter_17832"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17834", - "op" : "Parameter", - "outputs" : ["Parameter_17834"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17836", - "op" : "Parameter", - "outputs" : ["Parameter_17836"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17837", - "op" : "Parameter", - "outputs" : ["Parameter_17837"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17838", - "op" : "Parameter", - "outputs" : ["Parameter_17838"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17839", - "op" : "Parameter", - "outputs" : ["Parameter_17839"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17840", - "op" : "Parameter", - "outputs" : ["Parameter_17840"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17841", - "op" : "Parameter", - "outputs" : ["Parameter_17841"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17843", - "op" : "Parameter", - "outputs" : ["Parameter_17843"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17844", - "op" : "Parameter", - "outputs" : ["Parameter_17844"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17846", - "op" : "Parameter", - "outputs" : ["Parameter_17846"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17849", - "op" : "Parameter", - "outputs" : ["Parameter_17849"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17850", - "op" : "Parameter", - "outputs" : ["Parameter_17850"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17851", - "op" : "Parameter", - "outputs" : ["Parameter_17851"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17852", - "op" : "Parameter", - "outputs" : ["Parameter_17852"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17854", - "op" : "Parameter", - "outputs" : ["Parameter_17854"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17855", - "op" : "Parameter", - "outputs" : ["Parameter_17855"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17856", - "op" : "Parameter", - "outputs" : ["Parameter_17856"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17857", - "op" : "Parameter", - "outputs" : ["Parameter_17857"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17859", - "op" : "Parameter", - "outputs" : ["Parameter_17859"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17860", - "op" : "Parameter", - "outputs" : ["Parameter_17860"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17861", - "op" : "Parameter", - "outputs" : ["Parameter_17861"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17862", - "op" : "Parameter", - "outputs" : ["Parameter_17862"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17863", - "op" : "Parameter", - "outputs" : ["Parameter_17863"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17864", - "op" : "Parameter", - "outputs" : ["Parameter_17864"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17869", - "op" : "Parameter", - "outputs" : ["Parameter_17869"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17870", - "op" : "Parameter", - "outputs" : ["Parameter_17870"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18120", - "op" : "Parameter", - "outputs" : ["Parameter_18120"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17871", - "op" : "Parameter", - "outputs" : ["Parameter_17871"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17872", - "op" : "Parameter", - "outputs" : ["Parameter_17872"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17873", - "op" : "Parameter", - "outputs" : ["Parameter_17873"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17874", - "op" : "Parameter", - "outputs" : ["Parameter_17874"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17875", - "op" : "Parameter", - "outputs" : ["Parameter_17875"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18084", - "op" : "Parameter", - "outputs" : ["Parameter_18084"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17878", - "op" : "Parameter", - "outputs" : ["Parameter_17878"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17883", - "op" : "Parameter", - "outputs" : ["Parameter_17883"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17884", - "op" : "Parameter", - "outputs" : ["Parameter_17884"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17887", - "op" : "Parameter", - "outputs" : ["Parameter_17887"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17888", - "op" : "Parameter", - "outputs" : ["Parameter_17888"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17891", - "op" : "Parameter", - "outputs" : ["Parameter_17891"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17892", - "op" : "Parameter", - "outputs" : ["Parameter_17892"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18142", - "op" : "Parameter", - "outputs" : ["Parameter_18142"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17893", - "op" : "Parameter", - "outputs" : ["Parameter_17893"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17894", - "op" : "Parameter", - "outputs" : ["Parameter_17894"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17895", - "op" : "Parameter", - "outputs" : ["Parameter_17895"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17897", - "op" : "Parameter", - "outputs" : ["Parameter_17897"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17902", - "op" : "Parameter", - "outputs" : ["Parameter_17902"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17903", - "op" : "Parameter", - "outputs" : ["Parameter_17903"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17905", - "op" : "Parameter", - "outputs" : ["Parameter_17905"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17906", - "op" : "Parameter", - "outputs" : ["Parameter_17906"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17909", - "op" : "Parameter", - "outputs" : ["Parameter_17909"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17911", - "op" : "Parameter", - "outputs" : ["Parameter_17911"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17914", - "op" : "Parameter", - "outputs" : ["Parameter_17914"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17915", - "op" : "Parameter", - "outputs" : ["Parameter_17915"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17917", - "op" : "Parameter", - "outputs" : ["Parameter_17917"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17918", - "op" : "Parameter", - "outputs" : ["Parameter_17918"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17920", - "op" : "Parameter", - "outputs" : ["Parameter_17920"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17921", - "op" : "Parameter", - "outputs" : ["Parameter_17921"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17923", - "op" : "Parameter", - "outputs" : ["Parameter_17923"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17924", - "op" : "Parameter", - "outputs" : ["Parameter_17924"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17925", - "op" : "Parameter", - "outputs" : ["Parameter_17925"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17926", - "op" : "Parameter", - "outputs" : ["Parameter_17926"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17928", - "op" : "Parameter", - "outputs" : ["Parameter_17928"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17929", - "op" : "Parameter", - "outputs" : ["Parameter_17929"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17930", - "op" : "Parameter", - "outputs" : ["Parameter_17930"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17931", - "op" : "Parameter", - "outputs" : ["Parameter_17931"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17932", - "op" : "Parameter", - "outputs" : ["Parameter_17932"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17933", - "op" : "Parameter", - "outputs" : ["Parameter_17933"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17934", - "op" : "Parameter", - "outputs" : ["Parameter_17934"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17935", - "op" : "Parameter", - "outputs" : ["Parameter_17935"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17937", - "op" : "Parameter", - "outputs" : ["Parameter_17937"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17940", - "op" : "Parameter", - "outputs" : ["Parameter_17940"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18149", - "op" : "Parameter", - "outputs" : ["Parameter_18149"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17943", - "op" : "Parameter", - "outputs" : ["Parameter_17943"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17944", - "op" : "Parameter", - "outputs" : ["Parameter_17944"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17945", - "op" : "Parameter", - "outputs" : ["Parameter_17945"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17946", - "op" : "Parameter", - "outputs" : ["Parameter_17946"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17947", - "op" : "Parameter", - "outputs" : ["Parameter_17947"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17948", - "op" : "Parameter", - "outputs" : ["Parameter_17948"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17949", - "op" : "Parameter", - "outputs" : ["Parameter_17949"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17950", - "op" : "Parameter", - "outputs" : ["Parameter_17950"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17952", - "op" : "Parameter", - "outputs" : ["Parameter_17952"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17953", - "op" : "Parameter", - "outputs" : ["Parameter_17953"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17956", - "op" : "Parameter", - "outputs" : ["Parameter_17956"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17957", - "op" : "Parameter", - "outputs" : ["Parameter_17957"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18207", - "op" : "Parameter", - "outputs" : ["Parameter_18207"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17959", - "op" : "Parameter", - "outputs" : ["Parameter_17959"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17960", - "op" : "Parameter", - "outputs" : ["Parameter_17960"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17962", - "op" : "Parameter", - "outputs" : ["Parameter_17962"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18184", - "op" : "Parameter", - "outputs" : ["Parameter_18184"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17967", - "op" : "Parameter", - "outputs" : ["Parameter_17967"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17969", - "op" : "Parameter", - "outputs" : ["Parameter_17969"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17970", - "op" : "Parameter", - "outputs" : ["Parameter_17970"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17971", - "op" : "Parameter", - "outputs" : ["Parameter_17971"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17973", - "op" : "Parameter", - "outputs" : ["Parameter_17973"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17974", - "op" : "Parameter", - "outputs" : ["Parameter_17974"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17976", - "op" : "Parameter", - "outputs" : ["Parameter_17976"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17977", - "op" : "Parameter", - "outputs" : ["Parameter_17977"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17979", - "op" : "Parameter", - "outputs" : ["Parameter_17979"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17984", - "op" : "Parameter", - "outputs" : ["Parameter_17984"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17986", - "op" : "Parameter", - "outputs" : ["Parameter_17986"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17987", - "op" : "Parameter", - "outputs" : ["Parameter_17987"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17988", - "op" : "Parameter", - "outputs" : ["Parameter_17988"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17991", - "op" : "Parameter", - "outputs" : ["Parameter_17991"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_17993", - "op" : "Parameter", - "outputs" : ["Parameter_17993"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17994", - "op" : "Parameter", - "outputs" : ["Parameter_17994"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17995", - "op" : "Parameter", - "outputs" : ["Parameter_17995"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17996", - "op" : "Parameter", - "outputs" : ["Parameter_17996"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17998", - "op" : "Parameter", - "outputs" : ["Parameter_17998"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_17999", - "op" : "Parameter", - "outputs" : ["Parameter_17999"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18000", - "op" : "Parameter", - "outputs" : ["Parameter_18000"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18250", - "op" : "Parameter", - "outputs" : ["Parameter_18250"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18001", - "op" : "Parameter", - "outputs" : ["Parameter_18001"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18002", - "op" : "Parameter", - "outputs" : ["Parameter_18002"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18003", - "op" : "Parameter", - "outputs" : ["Parameter_18003"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18007", - "op" : "Parameter", - "outputs" : ["Parameter_18007"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18008", - "op" : "Parameter", - "outputs" : ["Parameter_18008"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18009", - "op" : "Parameter", - "outputs" : ["Parameter_18009"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18010", - "op" : "Parameter", - "outputs" : ["Parameter_18010"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18011", - "op" : "Parameter", - "outputs" : ["Parameter_18011"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18012", - "op" : "Parameter", - "outputs" : ["Parameter_18012"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18013", - "op" : "Parameter", - "outputs" : ["Parameter_18013"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18014", - "op" : "Parameter", - "outputs" : ["Parameter_18014"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18017", - "op" : "Parameter", - "outputs" : ["Parameter_18017"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18018", - "op" : "Parameter", - "outputs" : ["Parameter_18018"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18021", - "op" : "Parameter", - "outputs" : ["Parameter_18021"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18022", - "op" : "Parameter", - "outputs" : ["Parameter_18022"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18024", - "op" : "Parameter", - "outputs" : ["Parameter_18024"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18030", - "op" : "Parameter", - "outputs" : ["Parameter_18030"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18031", - "op" : "Parameter", - "outputs" : ["Parameter_18031"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18032", - "op" : "Parameter", - "outputs" : ["Parameter_18032"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18033", - "op" : "Parameter", - "outputs" : ["Parameter_18033"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18034", - "op" : "Parameter", - "outputs" : ["Parameter_18034"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18039", - "op" : "Parameter", - "outputs" : ["Parameter_18039"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18040", - "op" : "Parameter", - "outputs" : ["Parameter_18040"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18041", - "op" : "Parameter", - "outputs" : ["Parameter_18041"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18043", - "op" : "Parameter", - "outputs" : ["Parameter_18043"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18044", - "op" : "Parameter", - "outputs" : ["Parameter_18044"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18045", - "op" : "Parameter", - "outputs" : ["Parameter_18045"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18046", - "op" : "Parameter", - "outputs" : ["Parameter_18046"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18047", - "op" : "Parameter", - "outputs" : ["Parameter_18047"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18048", - "op" : "Parameter", - "outputs" : ["Parameter_18048"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18049", - "op" : "Parameter", - "outputs" : ["Parameter_18049"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18050", - "op" : "Parameter", - "outputs" : ["Parameter_18050"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18053", - "op" : "Parameter", - "outputs" : ["Parameter_18053"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18054", - "op" : "Parameter", - "outputs" : ["Parameter_18054"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18055", - "op" : "Parameter", - "outputs" : ["Parameter_18055"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18056", - "op" : "Parameter", - "outputs" : ["Parameter_18056"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18057", - "op" : "Parameter", - "outputs" : ["Parameter_18057"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18058", - "op" : "Parameter", - "outputs" : ["Parameter_18058"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18063", - "op" : "Parameter", - "outputs" : ["Parameter_18063"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18064", - "op" : "Parameter", - "outputs" : ["Parameter_18064"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18066", - "op" : "Parameter", - "outputs" : ["Parameter_18066"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18067", - "op" : "Parameter", - "outputs" : ["Parameter_18067"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18072", - "op" : "Parameter", - "outputs" : ["Parameter_18072"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18073", - "op" : "Parameter", - "outputs" : ["Parameter_18073"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18074", - "op" : "Parameter", - "outputs" : ["Parameter_18074"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18076", - "op" : "Parameter", - "outputs" : ["Parameter_18076"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18077", - "op" : "Parameter", - "outputs" : ["Parameter_18077"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18078", - "op" : "Parameter", - "outputs" : ["Parameter_18078"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18079", - "op" : "Parameter", - "outputs" : ["Parameter_18079"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18080", - "op" : "Parameter", - "outputs" : ["Parameter_18080"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18083", - "op" : "Parameter", - "outputs" : ["Parameter_18083"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18086", - "op" : "Parameter", - "outputs" : ["Parameter_18086"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18087", - "op" : "Parameter", - "outputs" : ["Parameter_18087"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18089", - "op" : "Parameter", - "outputs" : ["Parameter_18089"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18095", - "op" : "Parameter", - "outputs" : ["Parameter_18095"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18096", - "op" : "Parameter", - "outputs" : ["Parameter_18096"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18097", - "op" : "Parameter", - "outputs" : ["Parameter_18097"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18098", - "op" : "Parameter", - "outputs" : ["Parameter_18098"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18099", - "op" : "Parameter", - "outputs" : ["Parameter_18099"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18100", - "op" : "Parameter", - "outputs" : ["Parameter_18100"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18101", - "op" : "Parameter", - "outputs" : ["Parameter_18101"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18102", - "op" : "Parameter", - "outputs" : ["Parameter_18102"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18103", - "op" : "Parameter", - "outputs" : ["Parameter_18103"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18104", - "op" : "Parameter", - "outputs" : ["Parameter_18104"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18108", - "op" : "Parameter", - "outputs" : ["Parameter_18108"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18109", - "op" : "Parameter", - "outputs" : ["Parameter_18109"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18113", - "op" : "Parameter", - "outputs" : ["Parameter_18113"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18114", - "op" : "Parameter", - "outputs" : ["Parameter_18114"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18115", - "op" : "Parameter", - "outputs" : ["Parameter_18115"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18116", - "op" : "Parameter", - "outputs" : ["Parameter_18116"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18117", - "op" : "Parameter", - "outputs" : ["Parameter_18117"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18122", - "op" : "Parameter", - "outputs" : ["Parameter_18122"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18123", - "op" : "Parameter", - "outputs" : ["Parameter_18123"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18126", - "op" : "Parameter", - "outputs" : ["Parameter_18126"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18127", - "op" : "Parameter", - "outputs" : ["Parameter_18127"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18129", - "op" : "Parameter", - "outputs" : ["Parameter_18129"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18130", - "op" : "Parameter", - "outputs" : ["Parameter_18130"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18131", - "op" : "Parameter", - "outputs" : ["Parameter_18131"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18132", - "op" : "Parameter", - "outputs" : ["Parameter_18132"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18133", - "op" : "Parameter", - "outputs" : ["Parameter_18133"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18134", - "op" : "Parameter", - "outputs" : ["Parameter_18134"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18138", - "op" : "Parameter", - "outputs" : ["Parameter_18138"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18139", - "op" : "Parameter", - "outputs" : ["Parameter_18139"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18140", - "op" : "Parameter", - "outputs" : ["Parameter_18140"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18141", - "op" : "Parameter", - "outputs" : ["Parameter_18141"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18143", - "op" : "Parameter", - "outputs" : ["Parameter_18143"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18144", - "op" : "Parameter", - "outputs" : ["Parameter_18144"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18145", - "op" : "Parameter", - "outputs" : ["Parameter_18145"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18148", - "op" : "Parameter", - "outputs" : ["Parameter_18148"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18152", - "op" : "Parameter", - "outputs" : ["Parameter_18152"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18154", - "op" : "Parameter", - "outputs" : ["Parameter_18154"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18157", - "op" : "Parameter", - "outputs" : ["Parameter_18157"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18158", - "op" : "Parameter", - "outputs" : ["Parameter_18158"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18162", - "op" : "Parameter", - "outputs" : ["Parameter_18162"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18163", - "op" : "Parameter", - "outputs" : ["Parameter_18163"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18164", - "op" : "Parameter", - "outputs" : ["Parameter_18164"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18165", - "op" : "Parameter", - "outputs" : ["Parameter_18165"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18169", - "op" : "Parameter", - "outputs" : ["Parameter_18169"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18170", - "op" : "Parameter", - "outputs" : ["Parameter_18170"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18171", - "op" : "Parameter", - "outputs" : ["Parameter_18171"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18172", - "op" : "Parameter", - "outputs" : ["Parameter_18172"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18173", - "op" : "Parameter", - "outputs" : ["Parameter_18173"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18174", - "op" : "Parameter", - "outputs" : ["Parameter_18174"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18177", - "op" : "Parameter", - "outputs" : ["Parameter_18177"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18178", - "op" : "Parameter", - "outputs" : ["Parameter_18178"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18179", - "op" : "Parameter", - "outputs" : ["Parameter_18179"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18180", - "op" : "Parameter", - "outputs" : ["Parameter_18180"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18181", - "op" : "Parameter", - "outputs" : ["Parameter_18181"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18182", - "op" : "Parameter", - "outputs" : ["Parameter_18182"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18183", - "op" : "Parameter", - "outputs" : ["Parameter_18183"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18185", - "op" : "Parameter", - "outputs" : ["Parameter_18185"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18187", - "op" : "Parameter", - "outputs" : ["Parameter_18187"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18188", - "op" : "Parameter", - "outputs" : ["Parameter_18188"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18191", - "op" : "Parameter", - "outputs" : ["Parameter_18191"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18192", - "op" : "Parameter", - "outputs" : ["Parameter_18192"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18193", - "op" : "Parameter", - "outputs" : ["Parameter_18193"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18194", - "op" : "Parameter", - "outputs" : ["Parameter_18194"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18197", - "op" : "Parameter", - "outputs" : ["Parameter_18197"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18199", - "op" : "Parameter", - "outputs" : ["Parameter_18199"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18203", - "op" : "Parameter", - "outputs" : ["Parameter_18203"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18204", - "op" : "Parameter", - "outputs" : ["Parameter_18204"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18205", - "op" : "Parameter", - "outputs" : ["Parameter_18205"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18206", - "op" : "Parameter", - "outputs" : ["Parameter_18206"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18208", - "op" : "Parameter", - "outputs" : ["Parameter_18208"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18209", - "op" : "Parameter", - "outputs" : ["Parameter_18209"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18213", - "op" : "Parameter", - "outputs" : ["Parameter_18213"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18214", - "op" : "Parameter", - "outputs" : ["Parameter_18214"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18219", - "op" : "Parameter", - "outputs" : ["Parameter_18219"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18220", - "op" : "Parameter", - "outputs" : ["Parameter_18220"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18221", - "op" : "Parameter", - "outputs" : ["Parameter_18221"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18222", - "op" : "Parameter", - "outputs" : ["Parameter_18222"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18224", - "op" : "Parameter", - "outputs" : ["Parameter_18224"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18227", - "op" : "Parameter", - "outputs" : ["Parameter_18227"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18228", - "op" : "Parameter", - "outputs" : ["Parameter_18228"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18230", - "op" : "Parameter", - "outputs" : ["Parameter_18230"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18233", - "op" : "Parameter", - "outputs" : ["Parameter_18233"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18234", - "op" : "Parameter", - "outputs" : ["Parameter_18234"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18236", - "op" : "Parameter", - "outputs" : ["Parameter_18236"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18237", - "op" : "Parameter", - "outputs" : ["Parameter_18237"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18238", - "op" : "Parameter", - "outputs" : ["Parameter_18238"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18239", - "op" : "Parameter", - "outputs" : ["Parameter_18239"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18242", - "op" : "Parameter", - "outputs" : ["Parameter_18242"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18243", - "op" : "Parameter", - "outputs" : ["Parameter_18243"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18244", - "op" : "Parameter", - "outputs" : ["Parameter_18244"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18248", - "op" : "Parameter", - "outputs" : ["Parameter_18248"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18252", - "op" : "Parameter", - "outputs" : ["Parameter_18252"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18253", - "op" : "Parameter", - "outputs" : ["Parameter_18253"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18256", - "op" : "Parameter", - "outputs" : ["Parameter_18256"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18259", - "op" : "Parameter", - "outputs" : ["Parameter_18259"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18261", - "op" : "Parameter", - "outputs" : ["Parameter_18261"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18262", - "op" : "Parameter", - "outputs" : ["Parameter_18262"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18263", - "op" : "Parameter", - "outputs" : ["Parameter_18263"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18264", - "op" : "Parameter", - "outputs" : ["Parameter_18264"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18265", - "op" : "Parameter", - "outputs" : ["Parameter_18265"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18267", - "op" : "Parameter", - "outputs" : ["Parameter_18267"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18268", - "op" : "Parameter", - "outputs" : ["Parameter_18268"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18269", - "op" : "Parameter", - "outputs" : ["Parameter_18269"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18275", - "op" : "Parameter", - "outputs" : ["Parameter_18275"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18278", - "op" : "Parameter", - "outputs" : ["Parameter_18278"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18280", - "op" : "Parameter", - "outputs" : ["Parameter_18280"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18281", - "op" : "Parameter", - "outputs" : ["Parameter_18281"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18284", - "op" : "Parameter", - "outputs" : ["Parameter_18284"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18286", - "op" : "Parameter", - "outputs" : ["Parameter_18286"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18289", - "op" : "Parameter", - "outputs" : ["Parameter_18289"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18291", - "op" : "Parameter", - "outputs" : ["Parameter_18291"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18292", - "op" : "Parameter", - "outputs" : ["Parameter_18292"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18294", - "op" : "Parameter", - "outputs" : ["Parameter_18294"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18296", - "op" : "Parameter", - "outputs" : ["Parameter_18296"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18299", - "op" : "Parameter", - "outputs" : ["Parameter_18299"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18301", - "op" : "Parameter", - "outputs" : ["Parameter_18301"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18306", - "op" : "Parameter", - "outputs" : ["Parameter_18306"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18307", - "op" : "Parameter", - "outputs" : ["Parameter_18307"], - "shape" : [ 200, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18308", - "op" : "Parameter", - "outputs" : ["Parameter_18308"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18309", - "op" : "Parameter", - "outputs" : ["Parameter_18309"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18310", - "op" : "Parameter", - "outputs" : ["Parameter_18310"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18312", - "op" : "Parameter", - "outputs" : ["Parameter_18312"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18314", - "op" : "Parameter", - "outputs" : ["Parameter_18314"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18317", - "op" : "Parameter", - "outputs" : ["Parameter_18317"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18318", - "op" : "Parameter", - "outputs" : ["Parameter_18318"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18319", - "op" : "Parameter", - "outputs" : ["Parameter_18319"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18320", - "op" : "Parameter", - "outputs" : ["Parameter_18320"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18323", - "op" : "Parameter", - "outputs" : ["Parameter_18323"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18324", - "op" : "Parameter", - "outputs" : ["Parameter_18324"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18325", - "op" : "Parameter", - "outputs" : ["Parameter_18325"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18326", - "op" : "Parameter", - "outputs" : ["Parameter_18326"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18329", - "op" : "Parameter", - "outputs" : ["Parameter_18329"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18332", - "op" : "Parameter", - "outputs" : ["Parameter_18332"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18334", - "op" : "Parameter", - "outputs" : ["Parameter_18334"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18335", - "op" : "Parameter", - "outputs" : ["Parameter_18335"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18336", - "op" : "Parameter", - "outputs" : ["Parameter_18336"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18337", - "op" : "Parameter", - "outputs" : ["Parameter_18337"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18338", - "op" : "Parameter", - "outputs" : ["Parameter_18338"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18339", - "op" : "Parameter", - "outputs" : ["Parameter_18339"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18340", - "op" : "Parameter", - "outputs" : ["Parameter_18340"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18341", - "op" : "Parameter", - "outputs" : ["Parameter_18341"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18343", - "op" : "Parameter", - "outputs" : ["Parameter_18343"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18345", - "op" : "Parameter", - "outputs" : ["Parameter_18345"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18346", - "op" : "Parameter", - "outputs" : ["Parameter_18346"], - "shape" : [], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Parameter_18347", - "op" : "Parameter", - "outputs" : ["Parameter_18347"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18348", - "op" : "Parameter", - "outputs" : ["Parameter_18348"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18354", - "op" : "Parameter", - "outputs" : ["Parameter_18354"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18355", - "op" : "Parameter", - "outputs" : ["Parameter_18355"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18358", - "op" : "Parameter", - "outputs" : ["Parameter_18358"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18359", - "op" : "Parameter", - "outputs" : ["Parameter_18359"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18360", - "op" : "Parameter", - "outputs" : ["Parameter_18360"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18361", - "op" : "Parameter", - "outputs" : ["Parameter_18361"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18362", - "op" : "Parameter", - "outputs" : ["Parameter_18362"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18365", - "op" : "Parameter", - "outputs" : ["Parameter_18365"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18366", - "op" : "Parameter", - "outputs" : ["Parameter_18366"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18367", - "op" : "Parameter", - "outputs" : ["Parameter_18367"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18368", - "op" : "Parameter", - "outputs" : ["Parameter_18368"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18369", - "op" : "Parameter", - "outputs" : ["Parameter_18369"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18370", - "op" : "Parameter", - "outputs" : ["Parameter_18370"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18371", - "op" : "Parameter", - "outputs" : ["Parameter_18371"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18372", - "op" : "Parameter", - "outputs" : ["Parameter_18372"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18374", - "op" : "Parameter", - "outputs" : ["Parameter_18374"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18375", - "op" : "Parameter", - "outputs" : ["Parameter_18375"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18376", - "op" : "Parameter", - "outputs" : ["Parameter_18376"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18377", - "op" : "Parameter", - "outputs" : ["Parameter_18377"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18378", - "op" : "Parameter", - "outputs" : ["Parameter_18378"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18379", - "op" : "Parameter", - "outputs" : ["Parameter_18379"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18380", - "op" : "Parameter", - "outputs" : ["Parameter_18380"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18381", - "op" : "Parameter", - "outputs" : ["Parameter_18381"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18385", - "op" : "Parameter", - "outputs" : ["Parameter_18385"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18390", - "op" : "Parameter", - "outputs" : ["Parameter_18390"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18392", - "op" : "Parameter", - "outputs" : ["Parameter_18392"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18393", - "op" : "Parameter", - "outputs" : ["Parameter_18393"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18394", - "op" : "Parameter", - "outputs" : ["Parameter_18394"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18395", - "op" : "Parameter", - "outputs" : ["Parameter_18395"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18397", - "op" : "Parameter", - "outputs" : ["Parameter_18397"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18398", - "op" : "Parameter", - "outputs" : ["Parameter_18398"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18399", - "op" : "Parameter", - "outputs" : ["Parameter_18399"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18400", - "op" : "Parameter", - "outputs" : ["Parameter_18400"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18402", - "op" : "Parameter", - "outputs" : ["Parameter_18402"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18403", - "op" : "Parameter", - "outputs" : ["Parameter_18403"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18404", - "op" : "Parameter", - "outputs" : ["Parameter_18404"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18405", - "op" : "Parameter", - "outputs" : ["Parameter_18405"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18406", - "op" : "Parameter", - "outputs" : ["Parameter_18406"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18407", - "op" : "Parameter", - "outputs" : ["Parameter_18407"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18408", - "op" : "Parameter", - "outputs" : ["Parameter_18408"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18409", - "op" : "Parameter", - "outputs" : ["Parameter_18409"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18410", - "op" : "Parameter", - "outputs" : ["Parameter_18410"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18412", - "op" : "Parameter", - "outputs" : ["Parameter_18412"], - "shape" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_18414", - "op" : "Parameter", - "outputs" : ["Parameter_18414"], - "shape" : [ 1920, 10000 ], - "value_type" : {"element_type" : "float", "shape" : [ 1920, 10000 ]} - }, - { - "inputs" : [], - "name" : "Constant_18415", - "op" : "Constant", - "outputs" : ["Constant_18415"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18416", - "op" : "Constant", - "outputs" : ["Constant_18416"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18417", - "op" : "Constant", - "outputs" : ["Constant_18417"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18418", - "op" : "Constant", - "outputs" : ["Constant_18418"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18419", - "op" : "Constant", - "outputs" : ["Constant_18419"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18420", - "op" : "Constant", - "outputs" : ["Constant_18420"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18421", - "op" : "Constant", - "outputs" : ["Constant_18421"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18422", - "op" : "Constant", - "outputs" : ["Constant_18422"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18423", - "op" : "Constant", - "outputs" : ["Constant_18423"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18424", - "op" : "Constant", - "outputs" : ["Constant_18424"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18425", - "op" : "Constant", - "outputs" : ["Constant_18425"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18426", - "op" : "Constant", - "outputs" : ["Constant_18426"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18427", - "op" : "Constant", - "outputs" : ["Constant_18427"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18428", - "op" : "Constant", - "outputs" : ["Constant_18428"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18429", - "op" : "Constant", - "outputs" : ["Constant_18429"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18430", - "op" : "Constant", - "outputs" : ["Constant_18430"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18431", - "op" : "Constant", - "outputs" : ["Constant_18431"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18432", - "op" : "Constant", - "outputs" : ["Constant_18432"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18433", - "op" : "Constant", - "outputs" : ["Constant_18433"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18434", - "op" : "Constant", - "outputs" : ["Constant_18434"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18435", - "op" : "Constant", - "outputs" : ["Constant_18435"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18436", - "op" : "Constant", - "outputs" : ["Constant_18436"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18437", - "op" : "Constant", - "outputs" : ["Constant_18437"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18438", - "op" : "Constant", - "outputs" : ["Constant_18438"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18439", - "op" : "Constant", - "outputs" : ["Constant_18439"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18440", - "op" : "Constant", - "outputs" : ["Constant_18440"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18441", - "op" : "Constant", - "outputs" : ["Constant_18441"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18442", - "op" : "Constant", - "outputs" : ["Constant_18442"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18443", - "op" : "Constant", - "outputs" : ["Constant_18443"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18444", - "op" : "Constant", - "outputs" : ["Constant_18444"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18445", - "op" : "Constant", - "outputs" : ["Constant_18445"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18446", - "op" : "Constant", - "outputs" : ["Constant_18446"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18447", - "op" : "Constant", - "outputs" : ["Constant_18447"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18448", - "op" : "Constant", - "outputs" : ["Constant_18448"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18449", - "op" : "Constant", - "outputs" : ["Constant_18449"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18450", - "op" : "Constant", - "outputs" : ["Constant_18450"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18451", - "op" : "Constant", - "outputs" : ["Constant_18451"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18452", - "op" : "Constant", - "outputs" : ["Constant_18452"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18453", - "op" : "Constant", - "outputs" : ["Constant_18453"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18454", - "op" : "Constant", - "outputs" : ["Constant_18454"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18455", - "op" : "Constant", - "outputs" : ["Constant_18455"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18456", - "op" : "Constant", - "outputs" : ["Constant_18456"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18457", - "op" : "Constant", - "outputs" : ["Constant_18457"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18458", - "op" : "Constant", - "outputs" : ["Constant_18458"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18459", - "op" : "Constant", - "outputs" : ["Constant_18459"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18460", - "op" : "Constant", - "outputs" : ["Constant_18460"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18461", - "op" : "Constant", - "outputs" : ["Constant_18461"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18462", - "op" : "Constant", - "outputs" : ["Constant_18462"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18463", - "op" : "Constant", - "outputs" : ["Constant_18463"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18464", - "op" : "Constant", - "outputs" : ["Constant_18464"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18465", - "op" : "Constant", - "outputs" : ["Constant_18465"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18466", - "op" : "Constant", - "outputs" : ["Constant_18466"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18467", - "op" : "Constant", - "outputs" : ["Constant_18467"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18468", - "op" : "Constant", - "outputs" : ["Constant_18468"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18469", - "op" : "Constant", - "outputs" : ["Constant_18469"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18470", - "op" : "Constant", - "outputs" : ["Constant_18470"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18471", - "op" : "Constant", - "outputs" : ["Constant_18471"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18472", - "op" : "Constant", - "outputs" : ["Constant_18472"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18473", - "op" : "Constant", - "outputs" : ["Constant_18473"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18474", - "op" : "Constant", - "outputs" : ["Constant_18474"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18475", - "op" : "Constant", - "outputs" : ["Constant_18475"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18476", - "op" : "Constant", - "outputs" : ["Constant_18476"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18477", - "op" : "Constant", - "outputs" : ["Constant_18477"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18478", - "op" : "Constant", - "outputs" : ["Constant_18478"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18479", - "op" : "Constant", - "outputs" : ["Constant_18479"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18480", - "op" : "Constant", - "outputs" : ["Constant_18480"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18481", - "op" : "Constant", - "outputs" : ["Constant_18481"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18482", - "op" : "Constant", - "outputs" : ["Constant_18482"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18483", - "op" : "Constant", - "outputs" : ["Constant_18483"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18484", - "op" : "Constant", - "outputs" : ["Constant_18484"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18485", - "op" : "Constant", - "outputs" : ["Constant_18485"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18486", - "op" : "Constant", - "outputs" : ["Constant_18486"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18487", - "op" : "Constant", - "outputs" : ["Constant_18487"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18488", - "op" : "Constant", - "outputs" : ["Constant_18488"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18489", - "op" : "Constant", - "outputs" : ["Constant_18489"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18490", - "op" : "Constant", - "outputs" : ["Constant_18490"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18491", - "op" : "Constant", - "outputs" : ["Constant_18491"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18492", - "op" : "Constant", - "outputs" : ["Constant_18492"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18493", - "op" : "Constant", - "outputs" : ["Constant_18493"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18494", - "op" : "Constant", - "outputs" : ["Constant_18494"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18495", - "op" : "Constant", - "outputs" : ["Constant_18495"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18496", - "op" : "Constant", - "outputs" : ["Constant_18496"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18497", - "op" : "Constant", - "outputs" : ["Constant_18497"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18498", - "op" : "Constant", - "outputs" : ["Constant_18498"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18499", - "op" : "Constant", - "outputs" : ["Constant_18499"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18500", - "op" : "Constant", - "outputs" : ["Constant_18500"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18501", - "op" : "Constant", - "outputs" : ["Constant_18501"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18502", - "op" : "Constant", - "outputs" : ["Constant_18502"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18503", - "op" : "Constant", - "outputs" : ["Constant_18503"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18504", - "op" : "Constant", - "outputs" : ["Constant_18504"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18505", - "op" : "Constant", - "outputs" : ["Constant_18505"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18506", - "op" : "Constant", - "outputs" : ["Constant_18506"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18507", - "op" : "Constant", - "outputs" : ["Constant_18507"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18508", - "op" : "Constant", - "outputs" : ["Constant_18508"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18509", - "op" : "Constant", - "outputs" : ["Constant_18509"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18510", - "op" : "Constant", - "outputs" : ["Constant_18510"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18511", - "op" : "Constant", - "outputs" : ["Constant_18511"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18512", - "op" : "Constant", - "outputs" : ["Constant_18512"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18513", - "op" : "Constant", - "outputs" : ["Constant_18513"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18514", - "op" : "Constant", - "outputs" : ["Constant_18514"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18515", - "op" : "Constant", - "outputs" : ["Constant_18515"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18516", - "op" : "Constant", - "outputs" : ["Constant_18516"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18517", - "op" : "Constant", - "outputs" : ["Constant_18517"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18518", - "op" : "Constant", - "outputs" : ["Constant_18518"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18519", - "op" : "Constant", - "outputs" : ["Constant_18519"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18520", - "op" : "Constant", - "outputs" : ["Constant_18520"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18521", - "op" : "Constant", - "outputs" : ["Constant_18521"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18522", - "op" : "Constant", - "outputs" : ["Constant_18522"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18523", - "op" : "Constant", - "outputs" : ["Constant_18523"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18524", - "op" : "Constant", - "outputs" : ["Constant_18524"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18525", - "op" : "Constant", - "outputs" : ["Constant_18525"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18526", - "op" : "Constant", - "outputs" : ["Constant_18526"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18527", - "op" : "Constant", - "outputs" : ["Constant_18527"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18528", - "op" : "Constant", - "outputs" : ["Constant_18528"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18529", - "op" : "Constant", - "outputs" : ["Constant_18529"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18530", - "op" : "Constant", - "outputs" : ["Constant_18530"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18531", - "op" : "Constant", - "outputs" : ["Constant_18531"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18532", - "op" : "Constant", - "outputs" : ["Constant_18532"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18533", - "op" : "Constant", - "outputs" : ["Constant_18533"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18534", - "op" : "Constant", - "outputs" : ["Constant_18534"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_18535", - "op" : "Constant", - "outputs" : ["Constant_18535"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16683"], - "name" : "Reshape_18696", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18696"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17398"], - "name" : "Reshape_18707", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18707"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13986"], - "name" : "Cosh_19305", - "op" : "Cosh", - "outputs" : ["Cosh_19305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17453"], - "name" : "Cosh_19346", - "op" : "Cosh", - "outputs" : ["Cosh_19346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17448"], - "name" : "Reshape_19354", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19354"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17448"], - "name" : "Reshape_19355", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19355"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13997"], - "name" : "Cosh_19294", - "op" : "Cosh", - "outputs" : ["Cosh_19294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17388"], - "name" : "Cosh_19335", - "op" : "Cosh", - "outputs" : ["Cosh_19335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17383"], - "name" : "Reshape_19343", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19343"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17383"], - "name" : "Reshape_19344", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19344"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14248"], - "name" : "Reshape_19045", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19045"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17323"], - "name" : "Cosh_19324", - "op" : "Cosh", - "outputs" : ["Cosh_19324"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17320"], - "name" : "Cosh_19328", - "op" : "Cosh", - "outputs" : ["Cosh_19328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17318"], - "name" : "Reshape_19332", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19332"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17318"], - "name" : "Reshape_19333", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19333"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14259"], - "name" : "Reshape_19034", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19034"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17258"], - "name" : "Cosh_19313", - "op" : "Cosh", - "outputs" : ["Cosh_19313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17255"], - "name" : "Cosh_19317", - "op" : "Cosh", - "outputs" : ["Cosh_19317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14980"], - "name" : "Cosh_18932", - "op" : "Cosh", - "outputs" : ["Cosh_18932"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17203"], - "name" : "Reshape_18704", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18704"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17190"], - "name" : "Cosh_19306", - "op" : "Cosh", - "outputs" : ["Cosh_19306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14396"], - "name" : "Cosh_18894", - "op" : "Cosh", - "outputs" : ["Cosh_18894"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17188"], - "name" : "Reshape_19310", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19310"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17188"], - "name" : "Reshape_19311", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19311"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17123"], - "name" : "Reshape_19299", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19299"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17123"], - "name" : "Reshape_19300", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19300"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14292"], - "name" : "Reshape_19001", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19001"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17138"], - "name" : "Reshape_18703", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18703"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17073"], - "name" : "Reshape_18702", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18702"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17063"], - "name" : "Cosh_19280", - "op" : "Cosh", - "outputs" : ["Cosh_19280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17058"], - "name" : "Reshape_19288", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19288"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17058"], - "name" : "Reshape_19289", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19289"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15238"], - "name" : "Reshape_18980", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18980"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15238"], - "name" : "Reshape_18981", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18981"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17008"], - "name" : "Reshape_18701", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18701"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15045"], - "name" : "Cosh_18943", - "op" : "Cosh", - "outputs" : ["Cosh_18943"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16998"], - "name" : "Cosh_19269", - "op" : "Cosh", - "outputs" : ["Cosh_19269"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16993"], - "name" : "Reshape_19277", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19277"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16993"], - "name" : "Reshape_19278", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19278"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14352"], - "name" : "Cosh_18938", - "op" : "Cosh", - "outputs" : ["Cosh_18938"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16943"], - "name" : "Reshape_18700", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18700"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13929"], - "name" : "Reshape_19364", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19364"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16933"], - "name" : "Cosh_19258", - "op" : "Cosh", - "outputs" : ["Cosh_19258"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16930"], - "name" : "Cosh_19262", - "op" : "Cosh", - "outputs" : ["Cosh_19262"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16928"], - "name" : "Reshape_19266", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19266"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16928"], - "name" : "Reshape_19267", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19267"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13940"], - "name" : "Reshape_19353", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19353"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16868"], - "name" : "Cosh_19247", - "op" : "Cosh", - "outputs" : ["Cosh_19247"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15633"], - "name" : "Cosh_19038", - "op" : "Cosh", - "outputs" : ["Cosh_19038"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14435"], - "name" : "Reshape_18858", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18858"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16423"], - "name" : "Reshape_18692", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18692"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14061"], - "name" : "Reshape_19232", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19232"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13951"], - "name" : "Reshape_19342", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19342"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14096"], - "name" : "Cosh_19195", - "op" : "Cosh", - "outputs" : ["Cosh_19195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16800"], - "name" : "Cosh_19240", - "op" : "Cosh", - "outputs" : ["Cosh_19240"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16798"], - "name" : "Reshape_19244", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19244"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16798"], - "name" : "Reshape_19245", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19245"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18298"], - "name" : "Cosh_19489", - "op" : "Cosh", - "outputs" : ["Cosh_19489"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13962"], - "name" : "Reshape_19331", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19331"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16738"], - "name" : "Cosh_19225", - "op" : "Cosh", - "outputs" : ["Cosh_19225"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16735"], - "name" : "Cosh_19229", - "op" : "Cosh", - "outputs" : ["Cosh_19229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_18295"], - "name" : "Cosh_19493", - "op" : "Cosh", - "outputs" : ["Cosh_19493"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14528"], - "name" : "Cosh_18851", - "op" : "Cosh", - "outputs" : ["Cosh_18851"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16673"], - "name" : "Cosh_19214", - "op" : "Cosh", - "outputs" : ["Cosh_19214"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16668"], - "name" : "Reshape_19222", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19222"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16668"], - "name" : "Reshape_19223", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19223"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18168"], - "name" : "Cosh_19467", - "op" : "Cosh", - "outputs" : ["Cosh_19467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16608"], - "name" : "Cosh_19203", - "op" : "Cosh", - "outputs" : ["Cosh_19203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16603"], - "name" : "Reshape_19211", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19211"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16603"], - "name" : "Reshape_19212", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19212"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14590"], - "name" : "Cosh_18866", - "op" : "Cosh", - "outputs" : ["Cosh_18866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16543"], - "name" : "Cosh_19192", - "op" : "Cosh", - "outputs" : ["Cosh_19192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16540"], - "name" : "Cosh_19196", - "op" : "Cosh", - "outputs" : ["Cosh_19196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16538"], - "name" : "Reshape_19200", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19200"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16538"], - "name" : "Reshape_19201", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19201"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18038"], - "name" : "Cosh_19445", - "op" : "Cosh", - "outputs" : ["Cosh_19445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13802"], - "name" : "Cosh_19488", - "op" : "Cosh", - "outputs" : ["Cosh_19488"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14050"], - "name" : "Reshape_19243", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19243"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16488"], - "name" : "Reshape_18693", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18693"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16478"], - "name" : "Cosh_19181", - "op" : "Cosh", - "outputs" : ["Cosh_19181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16475"], - "name" : "Cosh_19185", - "op" : "Cosh", - "outputs" : ["Cosh_19185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14385"], - "name" : "Cosh_18905", - "op" : "Cosh", - "outputs" : ["Cosh_18905"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14017"], - "name" : "Reshape_19276", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19276"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16413"], - "name" : "Cosh_19170", - "op" : "Cosh", - "outputs" : ["Cosh_19170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16410"], - "name" : "Cosh_19174", - "op" : "Cosh", - "outputs" : ["Cosh_19174"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16408"], - "name" : "Reshape_19178", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19178"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16408"], - "name" : "Reshape_19179", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19179"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17908"], - "name" : "Cosh_19423", - "op" : "Cosh", - "outputs" : ["Cosh_19423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14072"], - "name" : "Reshape_19221", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19221"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16878"], - "name" : "Reshape_18699", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18699"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16348"], - "name" : "Cosh_19159", - "op" : "Cosh", - "outputs" : ["Cosh_19159"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14918"], - "name" : "Cosh_18917", - "op" : "Cosh", - "outputs" : ["Cosh_18917"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16345"], - "name" : "Cosh_19163", - "op" : "Cosh", - "outputs" : ["Cosh_19163"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16343"], - "name" : "Reshape_19167", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19167"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16343"], - "name" : "Reshape_19168", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19168"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17268"], - "name" : "Reshape_18705", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18705"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14039"], - "name" : "Reshape_19254", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19254"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14184"], - "name" : "Cosh_19107", - "op" : "Cosh", - "outputs" : ["Cosh_19107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16283"], - "name" : "Cosh_19148", - "op" : "Cosh", - "outputs" : ["Cosh_19148"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16280"], - "name" : "Cosh_19152", - "op" : "Cosh", - "outputs" : ["Cosh_19152"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17853"], - "name" : "Reshape_18714", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18714"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16618"], - "name" : "Reshape_18695", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18695"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14195"], - "name" : "Cosh_19096", - "op" : "Cosh", - "outputs" : ["Cosh_19096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16218"], - "name" : "Cosh_19137", - "op" : "Cosh", - "outputs" : ["Cosh_19137"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16215"], - "name" : "Cosh_19141", - "op" : "Cosh", - "outputs" : ["Cosh_19141"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16213"], - "name" : "Reshape_19145", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19145"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16213"], - "name" : "Reshape_19146", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19146"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14028"], - "name" : "Reshape_19265", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19265"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17463"], - "name" : "Reshape_18708", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18708"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16163"], - "name" : "Reshape_18688", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18688"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13813"], - "name" : "Cosh_19477", - "op" : "Cosh", - "outputs" : ["Cosh_19477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16153"], - "name" : "Cosh_19126", - "op" : "Cosh", - "outputs" : ["Cosh_19126"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16148"], - "name" : "Reshape_19134", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19134"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16148"], - "name" : "Reshape_19135", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19135"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16088"], - "name" : "Cosh_19115", - "op" : "Cosh", - "outputs" : ["Cosh_19115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16085"], - "name" : "Cosh_19119", - "op" : "Cosh", - "outputs" : ["Cosh_19119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16083"], - "name" : "Reshape_19123", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19123"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16083"], - "name" : "Reshape_19124", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19124"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14440"], - "name" : "Cosh_18850", - "op" : "Cosh", - "outputs" : ["Cosh_18850"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16020"], - "name" : "Cosh_19108", - "op" : "Cosh", - "outputs" : ["Cosh_19108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16733"], - "name" : "Reshape_19233", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19233"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16733"], - "name" : "Reshape_19234", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19234"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15968"], - "name" : "Reshape_18685", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18685"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16553"], - "name" : "Reshape_18694", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18694"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15955"], - "name" : "Cosh_19097", - "op" : "Cosh", - "outputs" : ["Cosh_19097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15953"], - "name" : "Reshape_19101", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19101"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15953"], - "name" : "Reshape_19102", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19102"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14347"], - "name" : "Reshape_18946", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18946"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14358"], - "name" : "Reshape_18935", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18935"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15903"], - "name" : "Reshape_18684", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18684"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15893"], - "name" : "Cosh_19082", - "op" : "Cosh", - "outputs" : ["Cosh_19082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15890"], - "name" : "Cosh_19086", - "op" : "Cosh", - "outputs" : ["Cosh_19086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15888"], - "name" : "Reshape_19090", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19090"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15888"], - "name" : "Reshape_19091", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19091"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14993"], - "name" : "Reshape_18670", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18670"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14928"], - "name" : "Reshape_18669", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18669"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15838"], - "name" : "Reshape_18683", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18683"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15828"], - "name" : "Cosh_19071", - "op" : "Cosh", - "outputs" : ["Cosh_19071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15825"], - "name" : "Cosh_19075", - "op" : "Cosh", - "outputs" : ["Cosh_19075"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15823"], - "name" : "Reshape_19079", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19079"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15823"], - "name" : "Reshape_19080", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19080"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16748"], - "name" : "Reshape_18697", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18697"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16033"], - "name" : "Reshape_18686", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18686"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14127"], - "name" : "Reshape_19166", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19166"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15760"], - "name" : "Cosh_19064", - "op" : "Cosh", - "outputs" : ["Cosh_19064"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13920"], - "name" : "Cosh_19371", - "op" : "Cosh", - "outputs" : ["Cosh_19371"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15758"], - "name" : "Reshape_19068", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19068"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15758"], - "name" : "Reshape_19069", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19069"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16228"], - "name" : "Reshape_18689", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18689"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15708"], - "name" : "Reshape_18681", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18681"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14283"], - "name" : "Cosh_19008", - "op" : "Cosh", - "outputs" : ["Cosh_19008"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15698"], - "name" : "Cosh_19049", - "op" : "Cosh", - "outputs" : ["Cosh_19049"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15695"], - "name" : "Cosh_19053", - "op" : "Cosh", - "outputs" : ["Cosh_19053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13931"], - "name" : "Cosh_19360", - "op" : "Cosh", - "outputs" : ["Cosh_19360"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13942"], - "name" : "Cosh_19349", - "op" : "Cosh", - "outputs" : ["Cosh_19349"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15628"], - "name" : "Reshape_19046", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19046"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15628"], - "name" : "Reshape_19047", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19047"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15503"], - "name" : "Cosh_19016", - "op" : "Cosh", - "outputs" : ["Cosh_19016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15578"], - "name" : "Reshape_18679", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18679"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14160"], - "name" : "Reshape_19133", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19133"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15568"], - "name" : "Cosh_19027", - "op" : "Cosh", - "outputs" : ["Cosh_19027"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15565"], - "name" : "Cosh_19031", - "op" : "Cosh", - "outputs" : ["Cosh_19031"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15563"], - "name" : "Reshape_19035", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19035"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15563"], - "name" : "Reshape_19036", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19036"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16293"], - "name" : "Reshape_18690", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18690"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14215"], - "name" : "Reshape_19078", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19078"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15513"], - "name" : "Reshape_18678", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18678"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13783"], - "name" : "Reshape_19515", - "op" : "Reshape", - "output_shape" : [ 200, 1920 ], - "outputs" : ["Reshape_19515"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 1920 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14325"], - "name" : "Reshape_18968", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18968"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14718"], - "name" : "Reshape_18892", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18892"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14718"], - "name" : "Reshape_18893", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18893"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16150"], - "name" : "Cosh_19130", - "op" : "Cosh", - "outputs" : ["Cosh_19130"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14452"], - "name" : "Reshape_18848", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18848"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14452"], - "name" : "Reshape_18849", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18849"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13984"], - "name" : "Reshape_19309", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19309"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14121"], - "name" : "Cosh_19169", - "op" : "Cosh", - "outputs" : ["Cosh_19169"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14226"], - "name" : "Reshape_19067", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19067"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16473"], - "name" : "Reshape_19189", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19189"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16473"], - "name" : "Reshape_19190", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19190"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17253"], - "name" : "Reshape_19321", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19321"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17253"], - "name" : "Reshape_19322", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19322"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14525"], - "name" : "Cosh_18855", - "op" : "Cosh", - "outputs" : ["Cosh_18855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17333"], - "name" : "Reshape_18706", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18706"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13835"], - "name" : "Cosh_19455", - "op" : "Cosh", - "outputs" : ["Cosh_19455"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14083"], - "name" : "Reshape_19210", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19210"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16863"], - "name" : "Reshape_19255", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19255"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16863"], - "name" : "Reshape_19256", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19256"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16358"], - "name" : "Reshape_18691", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18691"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16278"], - "name" : "Reshape_19156", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19156"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16278"], - "name" : "Reshape_19157", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19157"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15448"], - "name" : "Reshape_18677", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18677"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17968"], - "name" : "Reshape_19442", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19442"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17968"], - "name" : "Reshape_19443", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19443"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14469"], - "name" : "Reshape_18662", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18662"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14338"], - "name" : "Cosh_18953", - "op" : "Cosh", - "outputs" : ["Cosh_18953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14446"], - "name" : "Reshape_18660", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18660"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15240"], - "name" : "Cosh_18976", - "op" : "Cosh", - "outputs" : ["Cosh_18976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14426"], - "name" : "Cosh_18865", - "op" : "Cosh", - "outputs" : ["Cosh_18865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14723"], - "name" : "Cosh_18884", - "op" : "Cosh", - "outputs" : ["Cosh_18884"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14424"], - "name" : "Reshape_18869", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18869"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14413"], - "name" : "Reshape_18880", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18880"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15498"], - "name" : "Reshape_19024", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19024"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15498"], - "name" : "Reshape_19025", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19025"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14239"], - "name" : "Cosh_19052", - "op" : "Cosh", - "outputs" : ["Cosh_19052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14393"], - "name" : "Cosh_18898", - "op" : "Cosh", - "outputs" : ["Cosh_18898"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14382"], - "name" : "Cosh_18909", - "op" : "Cosh", - "outputs" : ["Cosh_18909"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14369"], - "name" : "Reshape_18924", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18924"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14588"], - "name" : "Reshape_18870", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18870"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14588"], - "name" : "Reshape_18871", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18871"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13953"], - "name" : "Cosh_19338", - "op" : "Cosh", - "outputs" : ["Cosh_19338"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13797"], - "name" : "Reshape_19496", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19496"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14327"], - "name" : "Cosh_18964", - "op" : "Cosh", - "outputs" : ["Cosh_18964"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14363"], - "name" : "Cosh_18927", - "op" : "Cosh", - "outputs" : ["Cosh_18927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13854"], - "name" : "Cosh_19437", - "op" : "Cosh", - "outputs" : ["Cosh_19437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14319"], - "name" : "Cosh_18971", - "op" : "Cosh", - "outputs" : ["Cosh_18971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14094"], - "name" : "Reshape_19199", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19199"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13846"], - "name" : "Cosh_19444", - "op" : "Cosh", - "outputs" : ["Cosh_19444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14303"], - "name" : "Reshape_18990", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18990"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15318"], - "name" : "Reshape_18675", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18675"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14297"], - "name" : "Cosh_18993", - "op" : "Cosh", - "outputs" : ["Cosh_18993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14418"], - "name" : "Cosh_18872", - "op" : "Cosh", - "outputs" : ["Cosh_18872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14286"], - "name" : "Cosh_19004", - "op" : "Cosh", - "outputs" : ["Cosh_19004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14253"], - "name" : "Cosh_19037", - "op" : "Cosh", - "outputs" : ["Cosh_19037"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13832"], - "name" : "Cosh_19459", - "op" : "Cosh", - "outputs" : ["Cosh_19459"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16803"], - "name" : "Cosh_19236", - "op" : "Cosh", - "outputs" : ["Cosh_19236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14272"], - "name" : "Cosh_19019", - "op" : "Cosh", - "outputs" : ["Cosh_19019"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14264"], - "name" : "Cosh_19026", - "op" : "Cosh", - "outputs" : ["Cosh_19026"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14242"], - "name" : "Cosh_19048", - "op" : "Cosh", - "outputs" : ["Cosh_19048"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14270"], - "name" : "Reshape_19023", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19023"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14237"], - "name" : "Reshape_19056", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19056"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13824"], - "name" : "Cosh_19466", - "op" : "Cosh", - "outputs" : ["Cosh_19466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14231"], - "name" : "Cosh_19059", - "op" : "Cosh", - "outputs" : ["Cosh_19059"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14308"], - "name" : "Cosh_18982", - "op" : "Cosh", - "outputs" : ["Cosh_18982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13989"], - "name" : "Cosh_19301", - "op" : "Cosh", - "outputs" : ["Cosh_19301"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14198"], - "name" : "Cosh_19092", - "op" : "Cosh", - "outputs" : ["Cosh_19092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15773"], - "name" : "Reshape_18682", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18682"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14454"], - "name" : "Cosh_18846", - "op" : "Cosh", - "outputs" : ["Cosh_18846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14217"], - "name" : "Cosh_19074", - "op" : "Cosh", - "outputs" : ["Cosh_19074"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13874"], - "name" : "Reshape_19419", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19419"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15308"], - "name" : "Cosh_18983", - "op" : "Cosh", - "outputs" : ["Cosh_18983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14105"], - "name" : "Reshape_19188", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19188"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13857"], - "name" : "Cosh_19433", - "op" : "Cosh", - "outputs" : ["Cosh_19433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14187"], - "name" : "Cosh_19103", - "op" : "Cosh", - "outputs" : ["Cosh_19103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15958"], - "name" : "Cosh_19093", - "op" : "Cosh", - "outputs" : ["Cosh_19093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14209"], - "name" : "Cosh_19081", - "op" : "Cosh", - "outputs" : ["Cosh_19081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14206"], - "name" : "Cosh_19085", - "op" : "Cosh", - "outputs" : ["Cosh_19085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13863"], - "name" : "Reshape_19430", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19430"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15373"], - "name" : "Cosh_18994", - "op" : "Cosh", - "outputs" : ["Cosh_18994"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15438"], - "name" : "Cosh_19005", - "op" : "Cosh", - "outputs" : ["Cosh_19005"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13973"], - "name" : "Reshape_19320", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19320"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16813"], - "name" : "Reshape_18698", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18698"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14182"], - "name" : "Reshape_19111", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19111"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_16995"], - "name" : "Cosh_19273", - "op" : "Cosh", - "outputs" : ["Cosh_19273"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14220"], - "name" : "Cosh_19070", - "op" : "Cosh", - "outputs" : ["Cosh_19070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14107"], - "name" : "Cosh_19184", - "op" : "Cosh", - "outputs" : ["Cosh_19184"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14391"], - "name" : "Reshape_18902", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18902"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14360"], - "name" : "Cosh_18931", - "op" : "Cosh", - "outputs" : ["Cosh_18931"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15630"], - "name" : "Cosh_19042", - "op" : "Cosh", - "outputs" : ["Cosh_19042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14850"], - "name" : "Cosh_18910", - "op" : "Cosh", - "outputs" : ["Cosh_18910"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13945"], - "name" : "Cosh_19345", - "op" : "Cosh", - "outputs" : ["Cosh_19345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13934"], - "name" : "Cosh_19356", - "op" : "Cosh", - "outputs" : ["Cosh_19356"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13964"], - "name" : "Cosh_19327", - "op" : "Cosh", - "outputs" : ["Cosh_19327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13821"], - "name" : "Cosh_19470", - "op" : "Cosh", - "outputs" : ["Cosh_19470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16605"], - "name" : "Cosh_19207", - "op" : "Cosh", - "outputs" : ["Cosh_19207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14250"], - "name" : "Cosh_19041", - "op" : "Cosh", - "outputs" : ["Cosh_19041"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14165"], - "name" : "Cosh_19125", - "op" : "Cosh", - "outputs" : ["Cosh_19125"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14193"], - "name" : "Reshape_19100", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19100"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14154"], - "name" : "Cosh_19136", - "op" : "Cosh", - "outputs" : ["Cosh_19136"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13879"], - "name" : "Cosh_19411", - "op" : "Cosh", - "outputs" : ["Cosh_19411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17710"], - "name" : "Cosh_19394", - "op" : "Cosh", - "outputs" : ["Cosh_19394"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14783"], - "name" : "Reshape_18903", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18903"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14783"], - "name" : "Reshape_18904", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18904"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14171"], - "name" : "Reshape_19122", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19122"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13810"], - "name" : "Cosh_19481", - "op" : "Cosh", - "outputs" : ["Cosh_19481"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14603"], - "name" : "Reshape_18664", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18664"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13978"], - "name" : "Cosh_19312", - "op" : "Cosh", - "outputs" : ["Cosh_19312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14330"], - "name" : "Cosh_18960", - "op" : "Cosh", - "outputs" : ["Cosh_18960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13890"], - "name" : "Cosh_19400", - "op" : "Cosh", - "outputs" : ["Cosh_19400"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14000"], - "name" : "Cosh_19290", - "op" : "Cosh", - "outputs" : ["Cosh_19290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14371"], - "name" : "Cosh_18920", - "op" : "Cosh", - "outputs" : ["Cosh_18920"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15108"], - "name" : "Reshape_18958", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18958"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15108"], - "name" : "Reshape_18959", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18959"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13799"], - "name" : "Cosh_19492", - "op" : "Cosh", - "outputs" : ["Cosh_19492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14143"], - "name" : "Cosh_19147", - "op" : "Cosh", - "outputs" : ["Cosh_19147"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14006"], - "name" : "Reshape_19287", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19287"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14593"], - "name" : "Cosh_18862", - "op" : "Cosh", - "outputs" : ["Cosh_18862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14204"], - "name" : "Reshape_19089", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19089"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13788"], - "name" : "Cosh_19501", - "op" : "Cosh", - "outputs" : ["Cosh_19501"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13808"], - "name" : "Reshape_19485", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19485"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15383"], - "name" : "Reshape_18676", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18676"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14523"], - "name" : "Reshape_18859", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18859"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14523"], - "name" : "Reshape_18860", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18860"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13975"], - "name" : "Cosh_19316", - "op" : "Cosh", - "outputs" : ["Cosh_19316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15693"], - "name" : "Reshape_19057", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19057"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15693"], - "name" : "Reshape_19058", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19058"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14341"], - "name" : "Cosh_18949", - "op" : "Cosh", - "outputs" : ["Cosh_18949"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14030"], - "name" : "Cosh_19261", - "op" : "Cosh", - "outputs" : ["Cosh_19261"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14463"], - "name" : "Reshape_18661", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18661"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14415"], - "name" : "Cosh_18876", - "op" : "Cosh", - "outputs" : ["Cosh_18876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15435"], - "name" : "Cosh_19009", - "op" : "Cosh", - "outputs" : ["Cosh_19009"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15113"], - "name" : "Cosh_18950", - "op" : "Cosh", - "outputs" : ["Cosh_18950"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16023"], - "name" : "Cosh_19104", - "op" : "Cosh", - "outputs" : ["Cosh_19104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14380"], - "name" : "Reshape_18913", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18913"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14228"], - "name" : "Cosh_19063", - "op" : "Cosh", - "outputs" : ["Cosh_19063"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14116"], - "name" : "Reshape_19177", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19177"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13868"], - "name" : "Cosh_19422", - "op" : "Cosh", - "outputs" : ["Cosh_19422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14429"], - "name" : "Cosh_18861", - "op" : "Cosh", - "outputs" : ["Cosh_18861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13885"], - "name" : "Reshape_19408", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19408"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15243"], - "name" : "Cosh_18972", - "op" : "Cosh", - "outputs" : ["Cosh_18972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16865"], - "name" : "Cosh_19251", - "op" : "Cosh", - "outputs" : ["Cosh_19251"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14983"], - "name" : "Cosh_18928", - "op" : "Cosh", - "outputs" : ["Cosh_18928"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14132"], - "name" : "Cosh_19158", - "op" : "Cosh", - "outputs" : ["Cosh_19158"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13830"], - "name" : "Reshape_19463", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19463"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14173"], - "name" : "Cosh_19118", - "op" : "Cosh", - "outputs" : ["Cosh_19118"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14538"], - "name" : "Reshape_18663", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18663"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15433"], - "name" : "Reshape_19013", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19013"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15433"], - "name" : "Reshape_19014", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19014"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16098"], - "name" : "Reshape_18687", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18687"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13956"], - "name" : "Cosh_19334", - "op" : "Cosh", - "outputs" : ["Cosh_19334"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14294"], - "name" : "Cosh_18997", - "op" : "Cosh", - "outputs" : ["Cosh_18997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14915"], - "name" : "Cosh_18921", - "op" : "Cosh", - "outputs" : ["Cosh_18921"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13876"], - "name" : "Cosh_19415", - "op" : "Cosh", - "outputs" : ["Cosh_19415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13843"], - "name" : "Cosh_19448", - "op" : "Cosh", - "outputs" : ["Cosh_19448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17128"], - "name" : "Cosh_19291", - "op" : "Cosh", - "outputs" : ["Cosh_19291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15110"], - "name" : "Cosh_18954", - "op" : "Cosh", - "outputs" : ["Cosh_18954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15048"], - "name" : "Cosh_18939", - "op" : "Cosh", - "outputs" : ["Cosh_18939"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14404"], - "name" : "Cosh_18887", - "op" : "Cosh", - "outputs" : ["Cosh_18887"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13819"], - "name" : "Reshape_19474", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19474"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13995"], - "name" : "Reshape_19298", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19298"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14733"], - "name" : "Reshape_18666", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18666"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14437"], - "name" : "Cosh_18854", - "op" : "Cosh", - "outputs" : ["Cosh_18854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14138"], - "name" : "Reshape_19155", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19155"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13909"], - "name" : "Cosh_19382", - "op" : "Cosh", - "outputs" : ["Cosh_19382"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14314"], - "name" : "Reshape_18979", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18979"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13887"], - "name" : "Cosh_19404", - "op" : "Cosh", - "outputs" : ["Cosh_19404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13852"], - "name" : "Reshape_19441", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19441"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13865"], - "name" : "Cosh_19426", - "op" : "Cosh", - "outputs" : ["Cosh_19426"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13901"], - "name" : "Cosh_19389", - "op" : "Cosh", - "outputs" : ["Cosh_19389"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15500"], - "name" : "Cosh_19020", - "op" : "Cosh", - "outputs" : ["Cosh_19020"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14019"], - "name" : "Cosh_19272", - "op" : "Cosh", - "outputs" : ["Cosh_19272"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14044"], - "name" : "Cosh_19246", - "op" : "Cosh", - "outputs" : ["Cosh_19246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13898"], - "name" : "Cosh_19393", - "op" : "Cosh", - "outputs" : ["Cosh_19393"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15123"], - "name" : "Reshape_18672", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18672"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18293"], - "name" : "Reshape_19497", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19497"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14066"], - "name" : "Cosh_19224", - "op" : "Cosh", - "outputs" : ["Cosh_19224"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17723"], - "name" : "Reshape_18712", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18712"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14008"], - "name" : "Cosh_19283", - "op" : "Cosh", - "outputs" : ["Cosh_19283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_16670"], - "name" : "Cosh_19218", - "op" : "Cosh", - "outputs" : ["Cosh_19218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14011"], - "name" : "Cosh_19279", - "op" : "Cosh", - "outputs" : ["Cosh_19279"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14316"], - "name" : "Cosh_18975", - "op" : "Cosh", - "outputs" : ["Cosh_18975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14022"], - "name" : "Cosh_19268", - "op" : "Cosh", - "outputs" : ["Cosh_19268"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14305"], - "name" : "Cosh_18986", - "op" : "Cosh", - "outputs" : ["Cosh_18986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14033"], - "name" : "Cosh_19257", - "op" : "Cosh", - "outputs" : ["Cosh_19257"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14374"], - "name" : "Cosh_18916", - "op" : "Cosh", - "outputs" : ["Cosh_18916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14978"], - "name" : "Reshape_18936", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18936"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14978"], - "name" : "Reshape_18937", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18937"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14052"], - "name" : "Cosh_19239", - "op" : "Cosh", - "outputs" : ["Cosh_19239"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14055"], - "name" : "Cosh_19235", - "op" : "Cosh", - "outputs" : ["Cosh_19235"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14149"], - "name" : "Reshape_19144", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19144"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14077"], - "name" : "Cosh_19213", - "op" : "Cosh", - "outputs" : ["Cosh_19213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14085"], - "name" : "Cosh_19206", - "op" : "Cosh", - "outputs" : ["Cosh_19206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14088"], - "name" : "Cosh_19202", - "op" : "Cosh", - "outputs" : ["Cosh_19202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14099"], - "name" : "Cosh_19191", - "op" : "Cosh", - "outputs" : ["Cosh_19191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13841"], - "name" : "Reshape_19452", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19452"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14110"], - "name" : "Cosh_19180", - "op" : "Cosh", - "outputs" : ["Cosh_19180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14041"], - "name" : "Cosh_19250", - "op" : "Cosh", - "outputs" : ["Cosh_19250"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13907"], - "name" : "Reshape_19386", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19386"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14129"], - "name" : "Cosh_19162", - "op" : "Cosh", - "outputs" : ["Cosh_19162"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14074"], - "name" : "Cosh_19217", - "op" : "Cosh", - "outputs" : ["Cosh_19217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14140"], - "name" : "Cosh_19151", - "op" : "Cosh", - "outputs" : ["Cosh_19151"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14281"], - "name" : "Reshape_19012", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19012"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14402"], - "name" : "Reshape_18891", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18891"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15173"], - "name" : "Reshape_18969", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18969"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15173"], - "name" : "Reshape_18970", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18970"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14162"], - "name" : "Cosh_19129", - "op" : "Cosh", - "outputs" : ["Cosh_19129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15188"], - "name" : "Reshape_18673", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18673"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14653"], - "name" : "Reshape_18881", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18881"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14653"], - "name" : "Reshape_18882", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18882"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15175"], - "name" : "Cosh_18965", - "op" : "Cosh", - "outputs" : ["Cosh_18965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17125"], - "name" : "Cosh_19295", - "op" : "Cosh", - "outputs" : ["Cosh_19295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14658"], - "name" : "Cosh_18873", - "op" : "Cosh", - "outputs" : ["Cosh_18873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14261"], - "name" : "Cosh_19030", - "op" : "Cosh", - "outputs" : ["Cosh_19030"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14668"], - "name" : "Reshape_18665", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18665"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13896"], - "name" : "Reshape_19397", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19397"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15763"], - "name" : "Cosh_19060", - "op" : "Cosh", - "outputs" : ["Cosh_19060"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_15178"], - "name" : "Cosh_18961", - "op" : "Cosh", - "outputs" : ["Cosh_18961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14655"], - "name" : "Cosh_18877", - "op" : "Cosh", - "outputs" : ["Cosh_18877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14720"], - "name" : "Cosh_18888", - "op" : "Cosh", - "outputs" : ["Cosh_18888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14063"], - "name" : "Cosh_19228", - "op" : "Cosh", - "outputs" : ["Cosh_19228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15058"], - "name" : "Reshape_18671", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18671"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14151"], - "name" : "Cosh_19140", - "op" : "Cosh", - "outputs" : ["Cosh_19140"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14785"], - "name" : "Cosh_18899", - "op" : "Cosh", - "outputs" : ["Cosh_18899"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17193"], - "name" : "Cosh_19302", - "op" : "Cosh", - "outputs" : ["Cosh_19302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14798"], - "name" : "Reshape_18667", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18667"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_13967"], - "name" : "Cosh_19323", - "op" : "Cosh", - "outputs" : ["Cosh_19323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16018"], - "name" : "Reshape_19112", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19112"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_16018"], - "name" : "Reshape_19113", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19113"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17983"], - "name" : "Reshape_18716", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18716"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14848"], - "name" : "Reshape_18914", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18914"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14848"], - "name" : "Reshape_18915", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18915"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14853"], - "name" : "Cosh_18906", - "op" : "Cosh", - "outputs" : ["Cosh_18906"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14863"], - "name" : "Reshape_18668", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18668"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14407"], - "name" : "Cosh_18883", - "op" : "Cosh", - "outputs" : ["Cosh_18883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14275"], - "name" : "Cosh_19015", - "op" : "Cosh", - "outputs" : ["Cosh_19015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14913"], - "name" : "Reshape_18925", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18925"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14913"], - "name" : "Reshape_18926", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18926"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18035"], - "name" : "Cosh_19449", - "op" : "Cosh", - "outputs" : ["Cosh_19449"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13791"], - "name" : "Cosh_19498", - "op" : "Cosh", - "outputs" : ["Cosh_19498"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14176"], - "name" : "Cosh_19114", - "op" : "Cosh", - "outputs" : ["Cosh_19114"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13912"], - "name" : "Cosh_19378", - "op" : "Cosh", - "outputs" : ["Cosh_19378"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15043"], - "name" : "Reshape_18947", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18947"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15043"], - "name" : "Reshape_18948", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18948"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17450"], - "name" : "Cosh_19350", - "op" : "Cosh", - "outputs" : ["Cosh_19350"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17658"], - "name" : "Reshape_18711", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18711"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15643"], - "name" : "Reshape_18680", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18680"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14118"], - "name" : "Cosh_19173", - "op" : "Cosh", - "outputs" : ["Cosh_19173"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17060"], - "name" : "Cosh_19284", - "op" : "Cosh", - "outputs" : ["Cosh_19284"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_14336"], - "name" : "Reshape_18957", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18957"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15253"], - "name" : "Reshape_18674", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18674"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_14457"], - "name" : "Cosh_18844", - "op" : "Cosh", - "outputs" : ["Cosh_18844"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17385"], - "name" : "Cosh_19339", - "op" : "Cosh", - "outputs" : ["Cosh_19339"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_13918"], - "name" : "Reshape_19375", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19375"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15303"], - "name" : "Reshape_18991", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18991"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15303"], - "name" : "Reshape_18992", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18992"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15305"], - "name" : "Cosh_18987", - "op" : "Cosh", - "outputs" : ["Cosh_18987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_13923"], - "name" : "Cosh_19367", - "op" : "Cosh", - "outputs" : ["Cosh_19367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15368"], - "name" : "Reshape_19002", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19002"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_15368"], - "name" : "Reshape_19003", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19003"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_15370"], - "name" : "Cosh_18998", - "op" : "Cosh", - "outputs" : ["Cosh_18998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14349"], - "name" : "Cosh_18942", - "op" : "Cosh", - "outputs" : ["Cosh_18942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_14788"], - "name" : "Cosh_18895", - "op" : "Cosh", - "outputs" : ["Cosh_18895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17513"], - "name" : "Reshape_19365", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19365"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17513"], - "name" : "Reshape_19366", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19366"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17515"], - "name" : "Cosh_19361", - "op" : "Cosh", - "outputs" : ["Cosh_19361"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17518"], - "name" : "Cosh_19357", - "op" : "Cosh", - "outputs" : ["Cosh_19357"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17528"], - "name" : "Reshape_18709", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18709"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17578"], - "name" : "Reshape_19376", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19376"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17578"], - "name" : "Reshape_19377", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19377"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17580"], - "name" : "Cosh_19372", - "op" : "Cosh", - "outputs" : ["Cosh_19372"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17583"], - "name" : "Cosh_19368", - "op" : "Cosh", - "outputs" : ["Cosh_19368"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17593"], - "name" : "Reshape_18710", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18710"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17643"], - "name" : "Reshape_19387", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19387"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17643"], - "name" : "Reshape_19388", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19388"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17645"], - "name" : "Cosh_19383", - "op" : "Cosh", - "outputs" : ["Cosh_19383"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17648"], - "name" : "Cosh_19379", - "op" : "Cosh", - "outputs" : ["Cosh_19379"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17708"], - "name" : "Reshape_19398", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19398"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17708"], - "name" : "Reshape_19399", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19399"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17713"], - "name" : "Cosh_19390", - "op" : "Cosh", - "outputs" : ["Cosh_19390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17773"], - "name" : "Reshape_19409", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19409"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17773"], - "name" : "Reshape_19410", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19410"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17775"], - "name" : "Cosh_19405", - "op" : "Cosh", - "outputs" : ["Cosh_19405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17778"], - "name" : "Cosh_19401", - "op" : "Cosh", - "outputs" : ["Cosh_19401"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17788"], - "name" : "Reshape_18713", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18713"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17838"], - "name" : "Reshape_19420", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19420"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17838"], - "name" : "Reshape_19421", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19421"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17840"], - "name" : "Cosh_19416", - "op" : "Cosh", - "outputs" : ["Cosh_19416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17843"], - "name" : "Cosh_19412", - "op" : "Cosh", - "outputs" : ["Cosh_19412"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17903"], - "name" : "Reshape_19431", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19431"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17903"], - "name" : "Reshape_19432", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19432"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17905"], - "name" : "Cosh_19427", - "op" : "Cosh", - "outputs" : ["Cosh_19427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_17918"], - "name" : "Reshape_18715", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18715"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_17970"], - "name" : "Cosh_19438", - "op" : "Cosh", - "outputs" : ["Cosh_19438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_17973"], - "name" : "Cosh_19434", - "op" : "Cosh", - "outputs" : ["Cosh_19434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18033"], - "name" : "Reshape_19453", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19453"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18033"], - "name" : "Reshape_19454", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19454"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18048"], - "name" : "Reshape_18717", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18717"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18098"], - "name" : "Reshape_19464", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19464"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18098"], - "name" : "Reshape_19465", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19465"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18100"], - "name" : "Cosh_19460", - "op" : "Cosh", - "outputs" : ["Cosh_19460"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_18103"], - "name" : "Cosh_19456", - "op" : "Cosh", - "outputs" : ["Cosh_19456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18113"], - "name" : "Reshape_18718", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18718"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18163"], - "name" : "Reshape_19475", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19475"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18163"], - "name" : "Reshape_19476", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19476"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18165"], - "name" : "Cosh_19471", - "op" : "Cosh", - "outputs" : ["Cosh_19471"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18178"], - "name" : "Reshape_18719", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18719"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18228"], - "name" : "Reshape_19486", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19486"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18228"], - "name" : "Reshape_19487", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_19487"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18230"], - "name" : "Cosh_19482", - "op" : "Cosh", - "outputs" : ["Cosh_19482"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Parameter_18233"], - "name" : "Cosh_19478", - "op" : "Cosh", - "outputs" : ["Cosh_19478"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18243"], - "name" : "Reshape_18720", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18720"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18308"], - "name" : "Reshape_18721", - "op" : "Reshape", - "output_shape" : [ 200, 32 ], - "outputs" : ["Reshape_18721"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "inputs" : ["Parameter_18414"], - "name" : "Sum_18536", - "op" : "Sum", - "outputs" : ["Sum_18536"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [10000]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_18414"], - "name" : "Reshape_18537", - "op" : "Reshape", - "output_shape" : [ 10000, 1920 ], - "outputs" : ["Reshape_18537"], - "value_type" : {"element_type" : "float", "shape" : [ 10000, 1920 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18415"], - "name" : "Broadcast_18538", - "op" : "Broadcast", - "outputs" : ["Broadcast_18538"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18416"], - "name" : "Broadcast_18539", - "op" : "Broadcast", - "outputs" : ["Broadcast_18539"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18417"], - "name" : "Broadcast_18540", - "op" : "Broadcast", - "outputs" : ["Broadcast_18540"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18418"], - "name" : "Broadcast_18541", - "op" : "Broadcast", - "outputs" : ["Broadcast_18541"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18419"], - "name" : "Broadcast_18542", - "op" : "Broadcast", - "outputs" : ["Broadcast_18542"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18420"], - "name" : "Broadcast_18543", - "op" : "Broadcast", - "outputs" : ["Broadcast_18543"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18421"], - "name" : "Broadcast_18544", - "op" : "Broadcast", - "outputs" : ["Broadcast_18544"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18422"], - "name" : "Broadcast_18545", - "op" : "Broadcast", - "outputs" : ["Broadcast_18545"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18423"], - "name" : "Broadcast_18546", - "op" : "Broadcast", - "outputs" : ["Broadcast_18546"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18424"], - "name" : "Broadcast_18547", - "op" : "Broadcast", - "outputs" : ["Broadcast_18547"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18425"], - "name" : "Broadcast_18548", - "op" : "Broadcast", - "outputs" : ["Broadcast_18548"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18426"], - "name" : "Broadcast_18549", - "op" : "Broadcast", - "outputs" : ["Broadcast_18549"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18427"], - "name" : "Broadcast_18550", - "op" : "Broadcast", - "outputs" : ["Broadcast_18550"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18428"], - "name" : "Broadcast_18551", - "op" : "Broadcast", - "outputs" : ["Broadcast_18551"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18429"], - "name" : "Broadcast_18552", - "op" : "Broadcast", - "outputs" : ["Broadcast_18552"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18430"], - "name" : "Broadcast_18553", - "op" : "Broadcast", - "outputs" : ["Broadcast_18553"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18431"], - "name" : "Broadcast_18554", - "op" : "Broadcast", - "outputs" : ["Broadcast_18554"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18432"], - "name" : "Broadcast_18555", - "op" : "Broadcast", - "outputs" : ["Broadcast_18555"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18433"], - "name" : "Broadcast_18556", - "op" : "Broadcast", - "outputs" : ["Broadcast_18556"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18434"], - "name" : "Broadcast_18557", - "op" : "Broadcast", - "outputs" : ["Broadcast_18557"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18435"], - "name" : "Broadcast_18558", - "op" : "Broadcast", - "outputs" : ["Broadcast_18558"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18436"], - "name" : "Broadcast_18559", - "op" : "Broadcast", - "outputs" : ["Broadcast_18559"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18437"], - "name" : "Broadcast_18560", - "op" : "Broadcast", - "outputs" : ["Broadcast_18560"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18438"], - "name" : "Broadcast_18561", - "op" : "Broadcast", - "outputs" : ["Broadcast_18561"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18439"], - "name" : "Broadcast_18562", - "op" : "Broadcast", - "outputs" : ["Broadcast_18562"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18440"], - "name" : "Broadcast_18563", - "op" : "Broadcast", - "outputs" : ["Broadcast_18563"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18441"], - "name" : "Broadcast_18564", - "op" : "Broadcast", - "outputs" : ["Broadcast_18564"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18442"], - "name" : "Broadcast_18565", - "op" : "Broadcast", - "outputs" : ["Broadcast_18565"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18443"], - "name" : "Broadcast_18566", - "op" : "Broadcast", - "outputs" : ["Broadcast_18566"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18444"], - "name" : "Broadcast_18567", - "op" : "Broadcast", - "outputs" : ["Broadcast_18567"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18445"], - "name" : "Broadcast_18568", - "op" : "Broadcast", - "outputs" : ["Broadcast_18568"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18446"], - "name" : "Broadcast_18569", - "op" : "Broadcast", - "outputs" : ["Broadcast_18569"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18447"], - "name" : "Broadcast_18570", - "op" : "Broadcast", - "outputs" : ["Broadcast_18570"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18448"], - "name" : "Broadcast_18571", - "op" : "Broadcast", - "outputs" : ["Broadcast_18571"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18449"], - "name" : "Broadcast_18572", - "op" : "Broadcast", - "outputs" : ["Broadcast_18572"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18450"], - "name" : "Broadcast_18573", - "op" : "Broadcast", - "outputs" : ["Broadcast_18573"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18451"], - "name" : "Broadcast_18574", - "op" : "Broadcast", - "outputs" : ["Broadcast_18574"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18452"], - "name" : "Broadcast_18575", - "op" : "Broadcast", - "outputs" : ["Broadcast_18575"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18453"], - "name" : "Broadcast_18576", - "op" : "Broadcast", - "outputs" : ["Broadcast_18576"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18454"], - "name" : "Broadcast_18577", - "op" : "Broadcast", - "outputs" : ["Broadcast_18577"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18455"], - "name" : "Broadcast_18578", - "op" : "Broadcast", - "outputs" : ["Broadcast_18578"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18456"], - "name" : "Broadcast_18579", - "op" : "Broadcast", - "outputs" : ["Broadcast_18579"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18457"], - "name" : "Broadcast_18580", - "op" : "Broadcast", - "outputs" : ["Broadcast_18580"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18458"], - "name" : "Broadcast_18581", - "op" : "Broadcast", - "outputs" : ["Broadcast_18581"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18459"], - "name" : "Broadcast_18582", - "op" : "Broadcast", - "outputs" : ["Broadcast_18582"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18460"], - "name" : "Broadcast_18583", - "op" : "Broadcast", - "outputs" : ["Broadcast_18583"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18461"], - "name" : "Broadcast_18584", - "op" : "Broadcast", - "outputs" : ["Broadcast_18584"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18462"], - "name" : "Broadcast_18585", - "op" : "Broadcast", - "outputs" : ["Broadcast_18585"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18463"], - "name" : "Broadcast_18586", - "op" : "Broadcast", - "outputs" : ["Broadcast_18586"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18464"], - "name" : "Broadcast_18587", - "op" : "Broadcast", - "outputs" : ["Broadcast_18587"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18465"], - "name" : "Broadcast_18588", - "op" : "Broadcast", - "outputs" : ["Broadcast_18588"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18466"], - "name" : "Broadcast_18589", - "op" : "Broadcast", - "outputs" : ["Broadcast_18589"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18467"], - "name" : "Broadcast_18590", - "op" : "Broadcast", - "outputs" : ["Broadcast_18590"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18468"], - "name" : "Broadcast_18591", - "op" : "Broadcast", - "outputs" : ["Broadcast_18591"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18469"], - "name" : "Broadcast_18592", - "op" : "Broadcast", - "outputs" : ["Broadcast_18592"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18470"], - "name" : "Broadcast_18593", - "op" : "Broadcast", - "outputs" : ["Broadcast_18593"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18471"], - "name" : "Broadcast_18594", - "op" : "Broadcast", - "outputs" : ["Broadcast_18594"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18472"], - "name" : "Broadcast_18595", - "op" : "Broadcast", - "outputs" : ["Broadcast_18595"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18473"], - "name" : "Broadcast_18596", - "op" : "Broadcast", - "outputs" : ["Broadcast_18596"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18474"], - "name" : "Broadcast_18597", - "op" : "Broadcast", - "outputs" : ["Broadcast_18597"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18475"], - "name" : "Broadcast_18598", - "op" : "Broadcast", - "outputs" : ["Broadcast_18598"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18476"], - "name" : "Broadcast_18599", - "op" : "Broadcast", - "outputs" : ["Broadcast_18599"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18477"], - "name" : "Broadcast_18600", - "op" : "Broadcast", - "outputs" : ["Broadcast_18600"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18478"], - "name" : "Broadcast_18601", - "op" : "Broadcast", - "outputs" : ["Broadcast_18601"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18479"], - "name" : "Broadcast_18602", - "op" : "Broadcast", - "outputs" : ["Broadcast_18602"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18480"], - "name" : "Broadcast_18603", - "op" : "Broadcast", - "outputs" : ["Broadcast_18603"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18481"], - "name" : "Broadcast_18604", - "op" : "Broadcast", - "outputs" : ["Broadcast_18604"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18482"], - "name" : "Broadcast_18605", - "op" : "Broadcast", - "outputs" : ["Broadcast_18605"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18483"], - "name" : "Broadcast_18606", - "op" : "Broadcast", - "outputs" : ["Broadcast_18606"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18484"], - "name" : "Broadcast_18607", - "op" : "Broadcast", - "outputs" : ["Broadcast_18607"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18485"], - "name" : "Broadcast_18608", - "op" : "Broadcast", - "outputs" : ["Broadcast_18608"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18486"], - "name" : "Broadcast_18609", - "op" : "Broadcast", - "outputs" : ["Broadcast_18609"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18487"], - "name" : "Broadcast_18610", - "op" : "Broadcast", - "outputs" : ["Broadcast_18610"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18488"], - "name" : "Broadcast_18611", - "op" : "Broadcast", - "outputs" : ["Broadcast_18611"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18489"], - "name" : "Broadcast_18612", - "op" : "Broadcast", - "outputs" : ["Broadcast_18612"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18490"], - "name" : "Broadcast_18613", - "op" : "Broadcast", - "outputs" : ["Broadcast_18613"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18491"], - "name" : "Broadcast_18614", - "op" : "Broadcast", - "outputs" : ["Broadcast_18614"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18492"], - "name" : "Broadcast_18615", - "op" : "Broadcast", - "outputs" : ["Broadcast_18615"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18493"], - "name" : "Broadcast_18616", - "op" : "Broadcast", - "outputs" : ["Broadcast_18616"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18494"], - "name" : "Broadcast_18617", - "op" : "Broadcast", - "outputs" : ["Broadcast_18617"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18495"], - "name" : "Broadcast_18618", - "op" : "Broadcast", - "outputs" : ["Broadcast_18618"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18496"], - "name" : "Broadcast_18619", - "op" : "Broadcast", - "outputs" : ["Broadcast_18619"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18497"], - "name" : "Broadcast_18620", - "op" : "Broadcast", - "outputs" : ["Broadcast_18620"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18498"], - "name" : "Broadcast_18621", - "op" : "Broadcast", - "outputs" : ["Broadcast_18621"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18499"], - "name" : "Broadcast_18622", - "op" : "Broadcast", - "outputs" : ["Broadcast_18622"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18500"], - "name" : "Broadcast_18623", - "op" : "Broadcast", - "outputs" : ["Broadcast_18623"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18501"], - "name" : "Broadcast_18624", - "op" : "Broadcast", - "outputs" : ["Broadcast_18624"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18502"], - "name" : "Broadcast_18625", - "op" : "Broadcast", - "outputs" : ["Broadcast_18625"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18503"], - "name" : "Broadcast_18626", - "op" : "Broadcast", - "outputs" : ["Broadcast_18626"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18504"], - "name" : "Broadcast_18627", - "op" : "Broadcast", - "outputs" : ["Broadcast_18627"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18505"], - "name" : "Broadcast_18628", - "op" : "Broadcast", - "outputs" : ["Broadcast_18628"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18506"], - "name" : "Broadcast_18629", - "op" : "Broadcast", - "outputs" : ["Broadcast_18629"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18507"], - "name" : "Broadcast_18630", - "op" : "Broadcast", - "outputs" : ["Broadcast_18630"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18508"], - "name" : "Broadcast_18631", - "op" : "Broadcast", - "outputs" : ["Broadcast_18631"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18509"], - "name" : "Broadcast_18632", - "op" : "Broadcast", - "outputs" : ["Broadcast_18632"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18510"], - "name" : "Broadcast_18633", - "op" : "Broadcast", - "outputs" : ["Broadcast_18633"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18511"], - "name" : "Broadcast_18634", - "op" : "Broadcast", - "outputs" : ["Broadcast_18634"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18512"], - "name" : "Broadcast_18635", - "op" : "Broadcast", - "outputs" : ["Broadcast_18635"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18513"], - "name" : "Broadcast_18636", - "op" : "Broadcast", - "outputs" : ["Broadcast_18636"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18514"], - "name" : "Broadcast_18637", - "op" : "Broadcast", - "outputs" : ["Broadcast_18637"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18515"], - "name" : "Broadcast_18638", - "op" : "Broadcast", - "outputs" : ["Broadcast_18638"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18516"], - "name" : "Broadcast_18639", - "op" : "Broadcast", - "outputs" : ["Broadcast_18639"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18517"], - "name" : "Broadcast_18640", - "op" : "Broadcast", - "outputs" : ["Broadcast_18640"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18518"], - "name" : "Broadcast_18641", - "op" : "Broadcast", - "outputs" : ["Broadcast_18641"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18519"], - "name" : "Broadcast_18642", - "op" : "Broadcast", - "outputs" : ["Broadcast_18642"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18520"], - "name" : "Broadcast_18643", - "op" : "Broadcast", - "outputs" : ["Broadcast_18643"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18521"], - "name" : "Broadcast_18644", - "op" : "Broadcast", - "outputs" : ["Broadcast_18644"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18522"], - "name" : "Broadcast_18645", - "op" : "Broadcast", - "outputs" : ["Broadcast_18645"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18523"], - "name" : "Broadcast_18646", - "op" : "Broadcast", - "outputs" : ["Broadcast_18646"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18524"], - "name" : "Broadcast_18647", - "op" : "Broadcast", - "outputs" : ["Broadcast_18647"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18525"], - "name" : "Broadcast_18648", - "op" : "Broadcast", - "outputs" : ["Broadcast_18648"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18526"], - "name" : "Broadcast_18649", - "op" : "Broadcast", - "outputs" : ["Broadcast_18649"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18527"], - "name" : "Broadcast_18650", - "op" : "Broadcast", - "outputs" : ["Broadcast_18650"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18528"], - "name" : "Broadcast_18651", - "op" : "Broadcast", - "outputs" : ["Broadcast_18651"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18529"], - "name" : "Broadcast_18652", - "op" : "Broadcast", - "outputs" : ["Broadcast_18652"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18530"], - "name" : "Broadcast_18653", - "op" : "Broadcast", - "outputs" : ["Broadcast_18653"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18531"], - "name" : "Broadcast_18654", - "op" : "Broadcast", - "outputs" : ["Broadcast_18654"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18532"], - "name" : "Broadcast_18655", - "op" : "Broadcast", - "outputs" : ["Broadcast_18655"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18533"], - "name" : "Broadcast_18656", - "op" : "Broadcast", - "outputs" : ["Broadcast_18656"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18534"], - "name" : "Broadcast_18657", - "op" : "Broadcast", - "outputs" : ["Broadcast_18657"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [ 0, 1, 2 ], - "inputs" : ["Constant_18535"], - "name" : "Broadcast_18658", - "op" : "Broadcast", - "outputs" : ["Broadcast_18658"], - "shape" : [ 32, 60, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Cosh_19305", "Cosh_19305" ], - "name" : "Multiply_19307", - "op" : "Multiply", - "outputs" : ["Multiply_19307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19346", "Cosh_19346" ], - "name" : "Multiply_19348", - "op" : "Multiply", - "outputs" : ["Multiply_19348"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19294", "Cosh_19294" ], - "name" : "Multiply_19296", - "op" : "Multiply", - "outputs" : ["Multiply_19296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19335", "Cosh_19335" ], - "name" : "Multiply_19337", - "op" : "Multiply", - "outputs" : ["Multiply_19337"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19324", "Cosh_19324" ], - "name" : "Multiply_19326", - "op" : "Multiply", - "outputs" : ["Multiply_19326"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19328", "Cosh_19328" ], - "name" : "Multiply_19330", - "op" : "Multiply", - "outputs" : ["Multiply_19330"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19313", "Cosh_19313" ], - "name" : "Multiply_19315", - "op" : "Multiply", - "outputs" : ["Multiply_19315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19317", "Cosh_19317" ], - "name" : "Multiply_19319", - "op" : "Multiply", - "outputs" : ["Multiply_19319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18932", "Cosh_18932" ], - "name" : "Multiply_18934", - "op" : "Multiply", - "outputs" : ["Multiply_18934"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19306", "Cosh_19306" ], - "name" : "Multiply_19308", - "op" : "Multiply", - "outputs" : ["Multiply_19308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18894", "Cosh_18894" ], - "name" : "Multiply_18896", - "op" : "Multiply", - "outputs" : ["Multiply_18896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19280", "Cosh_19280" ], - "name" : "Multiply_19282", - "op" : "Multiply", - "outputs" : ["Multiply_19282"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18943", "Cosh_18943" ], - "name" : "Multiply_18945", - "op" : "Multiply", - "outputs" : ["Multiply_18945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19269", "Cosh_19269" ], - "name" : "Multiply_19271", - "op" : "Multiply", - "outputs" : ["Multiply_19271"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18938", "Cosh_18938" ], - "name" : "Multiply_18940", - "op" : "Multiply", - "outputs" : ["Multiply_18940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19258", "Cosh_19258" ], - "name" : "Multiply_19260", - "op" : "Multiply", - "outputs" : ["Multiply_19260"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19262", "Cosh_19262" ], - "name" : "Multiply_19264", - "op" : "Multiply", - "outputs" : ["Multiply_19264"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19247", "Cosh_19247" ], - "name" : "Multiply_19249", - "op" : "Multiply", - "outputs" : ["Multiply_19249"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19038", "Cosh_19038" ], - "name" : "Multiply_19040", - "op" : "Multiply", - "outputs" : ["Multiply_19040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19195", "Cosh_19195" ], - "name" : "Multiply_19197", - "op" : "Multiply", - "outputs" : ["Multiply_19197"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19240", "Cosh_19240" ], - "name" : "Multiply_19242", - "op" : "Multiply", - "outputs" : ["Multiply_19242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19489", "Cosh_19489" ], - "name" : "Multiply_19491", - "op" : "Multiply", - "outputs" : ["Multiply_19491"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19225", "Cosh_19225" ], - "name" : "Multiply_19227", - "op" : "Multiply", - "outputs" : ["Multiply_19227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19229", "Cosh_19229" ], - "name" : "Multiply_19231", - "op" : "Multiply", - "outputs" : ["Multiply_19231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19493", "Cosh_19493" ], - "name" : "Multiply_19495", - "op" : "Multiply", - "outputs" : ["Multiply_19495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18851", "Cosh_18851" ], - "name" : "Multiply_18853", - "op" : "Multiply", - "outputs" : ["Multiply_18853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19214", "Cosh_19214" ], - "name" : "Multiply_19216", - "op" : "Multiply", - "outputs" : ["Multiply_19216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19467", "Cosh_19467" ], - "name" : "Multiply_19469", - "op" : "Multiply", - "outputs" : ["Multiply_19469"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19203", "Cosh_19203" ], - "name" : "Multiply_19205", - "op" : "Multiply", - "outputs" : ["Multiply_19205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18866", "Cosh_18866" ], - "name" : "Multiply_18868", - "op" : "Multiply", - "outputs" : ["Multiply_18868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19192", "Cosh_19192" ], - "name" : "Multiply_19194", - "op" : "Multiply", - "outputs" : ["Multiply_19194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19196", "Cosh_19196" ], - "name" : "Multiply_19198", - "op" : "Multiply", - "outputs" : ["Multiply_19198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19445", "Cosh_19445" ], - "name" : "Multiply_19447", - "op" : "Multiply", - "outputs" : ["Multiply_19447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19488", "Cosh_19488" ], - "name" : "Multiply_19490", - "op" : "Multiply", - "outputs" : ["Multiply_19490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19181", "Cosh_19181" ], - "name" : "Multiply_19183", - "op" : "Multiply", - "outputs" : ["Multiply_19183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19185", "Cosh_19185" ], - "name" : "Multiply_19187", - "op" : "Multiply", - "outputs" : ["Multiply_19187"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18905", "Cosh_18905" ], - "name" : "Multiply_18907", - "op" : "Multiply", - "outputs" : ["Multiply_18907"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19170", "Cosh_19170" ], - "name" : "Multiply_19172", - "op" : "Multiply", - "outputs" : ["Multiply_19172"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19174", "Cosh_19174" ], - "name" : "Multiply_19176", - "op" : "Multiply", - "outputs" : ["Multiply_19176"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19423", "Cosh_19423" ], - "name" : "Multiply_19425", - "op" : "Multiply", - "outputs" : ["Multiply_19425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19159", "Cosh_19159" ], - "name" : "Multiply_19161", - "op" : "Multiply", - "outputs" : ["Multiply_19161"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18917", "Cosh_18917" ], - "name" : "Multiply_18919", - "op" : "Multiply", - "outputs" : ["Multiply_18919"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19163", "Cosh_19163" ], - "name" : "Multiply_19165", - "op" : "Multiply", - "outputs" : ["Multiply_19165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19107", "Cosh_19107" ], - "name" : "Multiply_19109", - "op" : "Multiply", - "outputs" : ["Multiply_19109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19148", "Cosh_19148" ], - "name" : "Multiply_19150", - "op" : "Multiply", - "outputs" : ["Multiply_19150"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19152", "Cosh_19152" ], - "name" : "Multiply_19154", - "op" : "Multiply", - "outputs" : ["Multiply_19154"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19096", "Cosh_19096" ], - "name" : "Multiply_19098", - "op" : "Multiply", - "outputs" : ["Multiply_19098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19137", "Cosh_19137" ], - "name" : "Multiply_19139", - "op" : "Multiply", - "outputs" : ["Multiply_19139"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19141", "Cosh_19141" ], - "name" : "Multiply_19143", - "op" : "Multiply", - "outputs" : ["Multiply_19143"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19477", "Cosh_19477" ], - "name" : "Multiply_19479", - "op" : "Multiply", - "outputs" : ["Multiply_19479"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19126", "Cosh_19126" ], - "name" : "Multiply_19128", - "op" : "Multiply", - "outputs" : ["Multiply_19128"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19115", "Cosh_19115" ], - "name" : "Multiply_19117", - "op" : "Multiply", - "outputs" : ["Multiply_19117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19119", "Cosh_19119" ], - "name" : "Multiply_19121", - "op" : "Multiply", - "outputs" : ["Multiply_19121"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18850", "Cosh_18850" ], - "name" : "Multiply_18852", - "op" : "Multiply", - "outputs" : ["Multiply_18852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19108", "Cosh_19108" ], - "name" : "Multiply_19110", - "op" : "Multiply", - "outputs" : ["Multiply_19110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19097", "Cosh_19097" ], - "name" : "Multiply_19099", - "op" : "Multiply", - "outputs" : ["Multiply_19099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19082", "Cosh_19082" ], - "name" : "Multiply_19084", - "op" : "Multiply", - "outputs" : ["Multiply_19084"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19086", "Cosh_19086" ], - "name" : "Multiply_19088", - "op" : "Multiply", - "outputs" : ["Multiply_19088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19071", "Cosh_19071" ], - "name" : "Multiply_19073", - "op" : "Multiply", - "outputs" : ["Multiply_19073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19075", "Cosh_19075" ], - "name" : "Multiply_19077", - "op" : "Multiply", - "outputs" : ["Multiply_19077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19064", "Cosh_19064" ], - "name" : "Multiply_19066", - "op" : "Multiply", - "outputs" : ["Multiply_19066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19371", "Cosh_19371" ], - "name" : "Multiply_19373", - "op" : "Multiply", - "outputs" : ["Multiply_19373"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19008", "Cosh_19008" ], - "name" : "Multiply_19010", - "op" : "Multiply", - "outputs" : ["Multiply_19010"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19049", "Cosh_19049" ], - "name" : "Multiply_19051", - "op" : "Multiply", - "outputs" : ["Multiply_19051"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19053", "Cosh_19053" ], - "name" : "Multiply_19055", - "op" : "Multiply", - "outputs" : ["Multiply_19055"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19360", "Cosh_19360" ], - "name" : "Multiply_19362", - "op" : "Multiply", - "outputs" : ["Multiply_19362"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19349", "Cosh_19349" ], - "name" : "Multiply_19351", - "op" : "Multiply", - "outputs" : ["Multiply_19351"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19016", "Cosh_19016" ], - "name" : "Multiply_19018", - "op" : "Multiply", - "outputs" : ["Multiply_19018"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19027", "Cosh_19027" ], - "name" : "Multiply_19029", - "op" : "Multiply", - "outputs" : ["Multiply_19029"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19031", "Cosh_19031" ], - "name" : "Multiply_19033", - "op" : "Multiply", - "outputs" : ["Multiply_19033"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Reshape_19515", "Parameter_18414" ], - "name" : "Dot_19520", - "op" : "Dot", - "outputs" : ["Dot_19520"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 10000 ]} - }, - { - "inputs" : [ "Cosh_19130", "Cosh_19130" ], - "name" : "Multiply_19132", - "op" : "Multiply", - "outputs" : ["Multiply_19132"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19169", "Cosh_19169" ], - "name" : "Multiply_19171", - "op" : "Multiply", - "outputs" : ["Multiply_19171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18855", "Cosh_18855" ], - "name" : "Multiply_18857", - "op" : "Multiply", - "outputs" : ["Multiply_18857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19455", "Cosh_19455" ], - "name" : "Multiply_19457", - "op" : "Multiply", - "outputs" : ["Multiply_19457"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18953", "Cosh_18953" ], - "name" : "Multiply_18955", - "op" : "Multiply", - "outputs" : ["Multiply_18955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18976", "Cosh_18976" ], - "name" : "Multiply_18978", - "op" : "Multiply", - "outputs" : ["Multiply_18978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18865", "Cosh_18865" ], - "name" : "Multiply_18867", - "op" : "Multiply", - "outputs" : ["Multiply_18867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18884", "Cosh_18884" ], - "name" : "Multiply_18886", - "op" : "Multiply", - "outputs" : ["Multiply_18886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19052", "Cosh_19052" ], - "name" : "Multiply_19054", - "op" : "Multiply", - "outputs" : ["Multiply_19054"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18898", "Cosh_18898" ], - "name" : "Multiply_18900", - "op" : "Multiply", - "outputs" : ["Multiply_18900"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18909", "Cosh_18909" ], - "name" : "Multiply_18911", - "op" : "Multiply", - "outputs" : ["Multiply_18911"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19338", "Cosh_19338" ], - "name" : "Multiply_19340", - "op" : "Multiply", - "outputs" : ["Multiply_19340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18964", "Cosh_18964" ], - "name" : "Multiply_18966", - "op" : "Multiply", - "outputs" : ["Multiply_18966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18927", "Cosh_18927" ], - "name" : "Multiply_18929", - "op" : "Multiply", - "outputs" : ["Multiply_18929"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19437", "Cosh_19437" ], - "name" : "Multiply_19439", - "op" : "Multiply", - "outputs" : ["Multiply_19439"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18971", "Cosh_18971" ], - "name" : "Multiply_18973", - "op" : "Multiply", - "outputs" : ["Multiply_18973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19444", "Cosh_19444" ], - "name" : "Multiply_19446", - "op" : "Multiply", - "outputs" : ["Multiply_19446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18993", "Cosh_18993" ], - "name" : "Multiply_18995", - "op" : "Multiply", - "outputs" : ["Multiply_18995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18872", "Cosh_18872" ], - "name" : "Multiply_18874", - "op" : "Multiply", - "outputs" : ["Multiply_18874"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19004", "Cosh_19004" ], - "name" : "Multiply_19006", - "op" : "Multiply", - "outputs" : ["Multiply_19006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19037", "Cosh_19037" ], - "name" : "Multiply_19039", - "op" : "Multiply", - "outputs" : ["Multiply_19039"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19459", "Cosh_19459" ], - "name" : "Multiply_19461", - "op" : "Multiply", - "outputs" : ["Multiply_19461"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19236", "Cosh_19236" ], - "name" : "Multiply_19238", - "op" : "Multiply", - "outputs" : ["Multiply_19238"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19019", "Cosh_19019" ], - "name" : "Multiply_19021", - "op" : "Multiply", - "outputs" : ["Multiply_19021"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19026", "Cosh_19026" ], - "name" : "Multiply_19028", - "op" : "Multiply", - "outputs" : ["Multiply_19028"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19048", "Cosh_19048" ], - "name" : "Multiply_19050", - "op" : "Multiply", - "outputs" : ["Multiply_19050"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19466", "Cosh_19466" ], - "name" : "Multiply_19468", - "op" : "Multiply", - "outputs" : ["Multiply_19468"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19059", "Cosh_19059" ], - "name" : "Multiply_19061", - "op" : "Multiply", - "outputs" : ["Multiply_19061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18982", "Cosh_18982" ], - "name" : "Multiply_18984", - "op" : "Multiply", - "outputs" : ["Multiply_18984"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19301", "Cosh_19301" ], - "name" : "Multiply_19303", - "op" : "Multiply", - "outputs" : ["Multiply_19303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19092", "Cosh_19092" ], - "name" : "Multiply_19094", - "op" : "Multiply", - "outputs" : ["Multiply_19094"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18846", "Cosh_18846" ], - "name" : "Multiply_18847", - "op" : "Multiply", - "outputs" : ["Multiply_18847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19074", "Cosh_19074" ], - "name" : "Multiply_19076", - "op" : "Multiply", - "outputs" : ["Multiply_19076"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18983", "Cosh_18983" ], - "name" : "Multiply_18985", - "op" : "Multiply", - "outputs" : ["Multiply_18985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19433", "Cosh_19433" ], - "name" : "Multiply_19435", - "op" : "Multiply", - "outputs" : ["Multiply_19435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19103", "Cosh_19103" ], - "name" : "Multiply_19105", - "op" : "Multiply", - "outputs" : ["Multiply_19105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19093", "Cosh_19093" ], - "name" : "Multiply_19095", - "op" : "Multiply", - "outputs" : ["Multiply_19095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19081", "Cosh_19081" ], - "name" : "Multiply_19083", - "op" : "Multiply", - "outputs" : ["Multiply_19083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19085", "Cosh_19085" ], - "name" : "Multiply_19087", - "op" : "Multiply", - "outputs" : ["Multiply_19087"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18994", "Cosh_18994" ], - "name" : "Multiply_18996", - "op" : "Multiply", - "outputs" : ["Multiply_18996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19005", "Cosh_19005" ], - "name" : "Multiply_19007", - "op" : "Multiply", - "outputs" : ["Multiply_19007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19273", "Cosh_19273" ], - "name" : "Multiply_19275", - "op" : "Multiply", - "outputs" : ["Multiply_19275"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19070", "Cosh_19070" ], - "name" : "Multiply_19072", - "op" : "Multiply", - "outputs" : ["Multiply_19072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19184", "Cosh_19184" ], - "name" : "Multiply_19186", - "op" : "Multiply", - "outputs" : ["Multiply_19186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18931", "Cosh_18931" ], - "name" : "Multiply_18933", - "op" : "Multiply", - "outputs" : ["Multiply_18933"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19042", "Cosh_19042" ], - "name" : "Multiply_19044", - "op" : "Multiply", - "outputs" : ["Multiply_19044"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18910", "Cosh_18910" ], - "name" : "Multiply_18912", - "op" : "Multiply", - "outputs" : ["Multiply_18912"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19345", "Cosh_19345" ], - "name" : "Multiply_19347", - "op" : "Multiply", - "outputs" : ["Multiply_19347"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19356", "Cosh_19356" ], - "name" : "Multiply_19358", - "op" : "Multiply", - "outputs" : ["Multiply_19358"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19327", "Cosh_19327" ], - "name" : "Multiply_19329", - "op" : "Multiply", - "outputs" : ["Multiply_19329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19470", "Cosh_19470" ], - "name" : "Multiply_19472", - "op" : "Multiply", - "outputs" : ["Multiply_19472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19207", "Cosh_19207" ], - "name" : "Multiply_19209", - "op" : "Multiply", - "outputs" : ["Multiply_19209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19041", "Cosh_19041" ], - "name" : "Multiply_19043", - "op" : "Multiply", - "outputs" : ["Multiply_19043"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19125", "Cosh_19125" ], - "name" : "Multiply_19127", - "op" : "Multiply", - "outputs" : ["Multiply_19127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19136", "Cosh_19136" ], - "name" : "Multiply_19138", - "op" : "Multiply", - "outputs" : ["Multiply_19138"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19411", "Cosh_19411" ], - "name" : "Multiply_19413", - "op" : "Multiply", - "outputs" : ["Multiply_19413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19394", "Cosh_19394" ], - "name" : "Multiply_19396", - "op" : "Multiply", - "outputs" : ["Multiply_19396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19481", "Cosh_19481" ], - "name" : "Multiply_19483", - "op" : "Multiply", - "outputs" : ["Multiply_19483"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19312", "Cosh_19312" ], - "name" : "Multiply_19314", - "op" : "Multiply", - "outputs" : ["Multiply_19314"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18960", "Cosh_18960" ], - "name" : "Multiply_18962", - "op" : "Multiply", - "outputs" : ["Multiply_18962"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19400", "Cosh_19400" ], - "name" : "Multiply_19402", - "op" : "Multiply", - "outputs" : ["Multiply_19402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19290", "Cosh_19290" ], - "name" : "Multiply_19292", - "op" : "Multiply", - "outputs" : ["Multiply_19292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18920", "Cosh_18920" ], - "name" : "Multiply_18922", - "op" : "Multiply", - "outputs" : ["Multiply_18922"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19492", "Cosh_19492" ], - "name" : "Multiply_19494", - "op" : "Multiply", - "outputs" : ["Multiply_19494"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19147", "Cosh_19147" ], - "name" : "Multiply_19149", - "op" : "Multiply", - "outputs" : ["Multiply_19149"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18862", "Cosh_18862" ], - "name" : "Multiply_18864", - "op" : "Multiply", - "outputs" : ["Multiply_18864"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19501", "Cosh_19501" ], - "name" : "Multiply_19503", - "op" : "Multiply", - "outputs" : ["Multiply_19503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19316", "Cosh_19316" ], - "name" : "Multiply_19318", - "op" : "Multiply", - "outputs" : ["Multiply_19318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18949", "Cosh_18949" ], - "name" : "Multiply_18951", - "op" : "Multiply", - "outputs" : ["Multiply_18951"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19261", "Cosh_19261" ], - "name" : "Multiply_19263", - "op" : "Multiply", - "outputs" : ["Multiply_19263"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18876", "Cosh_18876" ], - "name" : "Multiply_18878", - "op" : "Multiply", - "outputs" : ["Multiply_18878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19009", "Cosh_19009" ], - "name" : "Multiply_19011", - "op" : "Multiply", - "outputs" : ["Multiply_19011"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18950", "Cosh_18950" ], - "name" : "Multiply_18952", - "op" : "Multiply", - "outputs" : ["Multiply_18952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19104", "Cosh_19104" ], - "name" : "Multiply_19106", - "op" : "Multiply", - "outputs" : ["Multiply_19106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19063", "Cosh_19063" ], - "name" : "Multiply_19065", - "op" : "Multiply", - "outputs" : ["Multiply_19065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19422", "Cosh_19422" ], - "name" : "Multiply_19424", - "op" : "Multiply", - "outputs" : ["Multiply_19424"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18861", "Cosh_18861" ], - "name" : "Multiply_18863", - "op" : "Multiply", - "outputs" : ["Multiply_18863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18972", "Cosh_18972" ], - "name" : "Multiply_18974", - "op" : "Multiply", - "outputs" : ["Multiply_18974"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19251", "Cosh_19251" ], - "name" : "Multiply_19253", - "op" : "Multiply", - "outputs" : ["Multiply_19253"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18928", "Cosh_18928" ], - "name" : "Multiply_18930", - "op" : "Multiply", - "outputs" : ["Multiply_18930"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19158", "Cosh_19158" ], - "name" : "Multiply_19160", - "op" : "Multiply", - "outputs" : ["Multiply_19160"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19118", "Cosh_19118" ], - "name" : "Multiply_19120", - "op" : "Multiply", - "outputs" : ["Multiply_19120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19334", "Cosh_19334" ], - "name" : "Multiply_19336", - "op" : "Multiply", - "outputs" : ["Multiply_19336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18997", "Cosh_18997" ], - "name" : "Multiply_18999", - "op" : "Multiply", - "outputs" : ["Multiply_18999"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18921", "Cosh_18921" ], - "name" : "Multiply_18923", - "op" : "Multiply", - "outputs" : ["Multiply_18923"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19415", "Cosh_19415" ], - "name" : "Multiply_19417", - "op" : "Multiply", - "outputs" : ["Multiply_19417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19448", "Cosh_19448" ], - "name" : "Multiply_19450", - "op" : "Multiply", - "outputs" : ["Multiply_19450"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19291", "Cosh_19291" ], - "name" : "Multiply_19293", - "op" : "Multiply", - "outputs" : ["Multiply_19293"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18954", "Cosh_18954" ], - "name" : "Multiply_18956", - "op" : "Multiply", - "outputs" : ["Multiply_18956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18939", "Cosh_18939" ], - "name" : "Multiply_18941", - "op" : "Multiply", - "outputs" : ["Multiply_18941"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18887", "Cosh_18887" ], - "name" : "Multiply_18889", - "op" : "Multiply", - "outputs" : ["Multiply_18889"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18854", "Cosh_18854" ], - "name" : "Multiply_18856", - "op" : "Multiply", - "outputs" : ["Multiply_18856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19382", "Cosh_19382" ], - "name" : "Multiply_19384", - "op" : "Multiply", - "outputs" : ["Multiply_19384"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19404", "Cosh_19404" ], - "name" : "Multiply_19406", - "op" : "Multiply", - "outputs" : ["Multiply_19406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19426", "Cosh_19426" ], - "name" : "Multiply_19428", - "op" : "Multiply", - "outputs" : ["Multiply_19428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19389", "Cosh_19389" ], - "name" : "Multiply_19391", - "op" : "Multiply", - "outputs" : ["Multiply_19391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19020", "Cosh_19020" ], - "name" : "Multiply_19022", - "op" : "Multiply", - "outputs" : ["Multiply_19022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19272", "Cosh_19272" ], - "name" : "Multiply_19274", - "op" : "Multiply", - "outputs" : ["Multiply_19274"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19246", "Cosh_19246" ], - "name" : "Multiply_19248", - "op" : "Multiply", - "outputs" : ["Multiply_19248"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19393", "Cosh_19393" ], - "name" : "Multiply_19395", - "op" : "Multiply", - "outputs" : ["Multiply_19395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19224", "Cosh_19224" ], - "name" : "Multiply_19226", - "op" : "Multiply", - "outputs" : ["Multiply_19226"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19283", "Cosh_19283" ], - "name" : "Multiply_19285", - "op" : "Multiply", - "outputs" : ["Multiply_19285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19218", "Cosh_19218" ], - "name" : "Multiply_19220", - "op" : "Multiply", - "outputs" : ["Multiply_19220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19279", "Cosh_19279" ], - "name" : "Multiply_19281", - "op" : "Multiply", - "outputs" : ["Multiply_19281"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18975", "Cosh_18975" ], - "name" : "Multiply_18977", - "op" : "Multiply", - "outputs" : ["Multiply_18977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19268", "Cosh_19268" ], - "name" : "Multiply_19270", - "op" : "Multiply", - "outputs" : ["Multiply_19270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18986", "Cosh_18986" ], - "name" : "Multiply_18988", - "op" : "Multiply", - "outputs" : ["Multiply_18988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19257", "Cosh_19257" ], - "name" : "Multiply_19259", - "op" : "Multiply", - "outputs" : ["Multiply_19259"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18916", "Cosh_18916" ], - "name" : "Multiply_18918", - "op" : "Multiply", - "outputs" : ["Multiply_18918"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19239", "Cosh_19239" ], - "name" : "Multiply_19241", - "op" : "Multiply", - "outputs" : ["Multiply_19241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19235", "Cosh_19235" ], - "name" : "Multiply_19237", - "op" : "Multiply", - "outputs" : ["Multiply_19237"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19213", "Cosh_19213" ], - "name" : "Multiply_19215", - "op" : "Multiply", - "outputs" : ["Multiply_19215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19206", "Cosh_19206" ], - "name" : "Multiply_19208", - "op" : "Multiply", - "outputs" : ["Multiply_19208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19202", "Cosh_19202" ], - "name" : "Multiply_19204", - "op" : "Multiply", - "outputs" : ["Multiply_19204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19191", "Cosh_19191" ], - "name" : "Multiply_19193", - "op" : "Multiply", - "outputs" : ["Multiply_19193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19180", "Cosh_19180" ], - "name" : "Multiply_19182", - "op" : "Multiply", - "outputs" : ["Multiply_19182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19250", "Cosh_19250" ], - "name" : "Multiply_19252", - "op" : "Multiply", - "outputs" : ["Multiply_19252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19162", "Cosh_19162" ], - "name" : "Multiply_19164", - "op" : "Multiply", - "outputs" : ["Multiply_19164"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19217", "Cosh_19217" ], - "name" : "Multiply_19219", - "op" : "Multiply", - "outputs" : ["Multiply_19219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19151", "Cosh_19151" ], - "name" : "Multiply_19153", - "op" : "Multiply", - "outputs" : ["Multiply_19153"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19129", "Cosh_19129" ], - "name" : "Multiply_19131", - "op" : "Multiply", - "outputs" : ["Multiply_19131"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18965", "Cosh_18965" ], - "name" : "Multiply_18967", - "op" : "Multiply", - "outputs" : ["Multiply_18967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19295", "Cosh_19295" ], - "name" : "Multiply_19297", - "op" : "Multiply", - "outputs" : ["Multiply_19297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18873", "Cosh_18873" ], - "name" : "Multiply_18875", - "op" : "Multiply", - "outputs" : ["Multiply_18875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19030", "Cosh_19030" ], - "name" : "Multiply_19032", - "op" : "Multiply", - "outputs" : ["Multiply_19032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19060", "Cosh_19060" ], - "name" : "Multiply_19062", - "op" : "Multiply", - "outputs" : ["Multiply_19062"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18961", "Cosh_18961" ], - "name" : "Multiply_18963", - "op" : "Multiply", - "outputs" : ["Multiply_18963"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18877", "Cosh_18877" ], - "name" : "Multiply_18879", - "op" : "Multiply", - "outputs" : ["Multiply_18879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18888", "Cosh_18888" ], - "name" : "Multiply_18890", - "op" : "Multiply", - "outputs" : ["Multiply_18890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19228", "Cosh_19228" ], - "name" : "Multiply_19230", - "op" : "Multiply", - "outputs" : ["Multiply_19230"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19140", "Cosh_19140" ], - "name" : "Multiply_19142", - "op" : "Multiply", - "outputs" : ["Multiply_19142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18899", "Cosh_18899" ], - "name" : "Multiply_18901", - "op" : "Multiply", - "outputs" : ["Multiply_18901"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19302", "Cosh_19302" ], - "name" : "Multiply_19304", - "op" : "Multiply", - "outputs" : ["Multiply_19304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19323", "Cosh_19323" ], - "name" : "Multiply_19325", - "op" : "Multiply", - "outputs" : ["Multiply_19325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18906", "Cosh_18906" ], - "name" : "Multiply_18908", - "op" : "Multiply", - "outputs" : ["Multiply_18908"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18883", "Cosh_18883" ], - "name" : "Multiply_18885", - "op" : "Multiply", - "outputs" : ["Multiply_18885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19015", "Cosh_19015" ], - "name" : "Multiply_19017", - "op" : "Multiply", - "outputs" : ["Multiply_19017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19449", "Cosh_19449" ], - "name" : "Multiply_19451", - "op" : "Multiply", - "outputs" : ["Multiply_19451"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19498", "Cosh_19498" ], - "name" : "Multiply_19499", - "op" : "Multiply", - "outputs" : ["Multiply_19499"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19114", "Cosh_19114" ], - "name" : "Multiply_19116", - "op" : "Multiply", - "outputs" : ["Multiply_19116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19378", "Cosh_19378" ], - "name" : "Multiply_19380", - "op" : "Multiply", - "outputs" : ["Multiply_19380"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19350", "Cosh_19350" ], - "name" : "Multiply_19352", - "op" : "Multiply", - "outputs" : ["Multiply_19352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19173", "Cosh_19173" ], - "name" : "Multiply_19175", - "op" : "Multiply", - "outputs" : ["Multiply_19175"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19284", "Cosh_19284" ], - "name" : "Multiply_19286", - "op" : "Multiply", - "outputs" : ["Multiply_19286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18844", "Cosh_18844" ], - "name" : "Multiply_18845", - "op" : "Multiply", - "outputs" : ["Multiply_18845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19339", "Cosh_19339" ], - "name" : "Multiply_19341", - "op" : "Multiply", - "outputs" : ["Multiply_19341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18987", "Cosh_18987" ], - "name" : "Multiply_18989", - "op" : "Multiply", - "outputs" : ["Multiply_18989"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19367", "Cosh_19367" ], - "name" : "Multiply_19369", - "op" : "Multiply", - "outputs" : ["Multiply_19369"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18998", "Cosh_18998" ], - "name" : "Multiply_19000", - "op" : "Multiply", - "outputs" : ["Multiply_19000"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18942", "Cosh_18942" ], - "name" : "Multiply_18944", - "op" : "Multiply", - "outputs" : ["Multiply_18944"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_18895", "Cosh_18895" ], - "name" : "Multiply_18897", - "op" : "Multiply", - "outputs" : ["Multiply_18897"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19361", "Cosh_19361" ], - "name" : "Multiply_19363", - "op" : "Multiply", - "outputs" : ["Multiply_19363"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19357", "Cosh_19357" ], - "name" : "Multiply_19359", - "op" : "Multiply", - "outputs" : ["Multiply_19359"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19372", "Cosh_19372" ], - "name" : "Multiply_19374", - "op" : "Multiply", - "outputs" : ["Multiply_19374"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19368", "Cosh_19368" ], - "name" : "Multiply_19370", - "op" : "Multiply", - "outputs" : ["Multiply_19370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19383", "Cosh_19383" ], - "name" : "Multiply_19385", - "op" : "Multiply", - "outputs" : ["Multiply_19385"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19379", "Cosh_19379" ], - "name" : "Multiply_19381", - "op" : "Multiply", - "outputs" : ["Multiply_19381"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19390", "Cosh_19390" ], - "name" : "Multiply_19392", - "op" : "Multiply", - "outputs" : ["Multiply_19392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19405", "Cosh_19405" ], - "name" : "Multiply_19407", - "op" : "Multiply", - "outputs" : ["Multiply_19407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19401", "Cosh_19401" ], - "name" : "Multiply_19403", - "op" : "Multiply", - "outputs" : ["Multiply_19403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19416", "Cosh_19416" ], - "name" : "Multiply_19418", - "op" : "Multiply", - "outputs" : ["Multiply_19418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19412", "Cosh_19412" ], - "name" : "Multiply_19414", - "op" : "Multiply", - "outputs" : ["Multiply_19414"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19427", "Cosh_19427" ], - "name" : "Multiply_19429", - "op" : "Multiply", - "outputs" : ["Multiply_19429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19438", "Cosh_19438" ], - "name" : "Multiply_19440", - "op" : "Multiply", - "outputs" : ["Multiply_19440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19434", "Cosh_19434" ], - "name" : "Multiply_19436", - "op" : "Multiply", - "outputs" : ["Multiply_19436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19460", "Cosh_19460" ], - "name" : "Multiply_19462", - "op" : "Multiply", - "outputs" : ["Multiply_19462"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19456", "Cosh_19456" ], - "name" : "Multiply_19458", - "op" : "Multiply", - "outputs" : ["Multiply_19458"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19471", "Cosh_19471" ], - "name" : "Multiply_19473", - "op" : "Multiply", - "outputs" : ["Multiply_19473"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19482", "Cosh_19482" ], - "name" : "Multiply_19484", - "op" : "Multiply", - "outputs" : ["Multiply_19484"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Cosh_19478", "Cosh_19478" ], - "name" : "Multiply_19480", - "op" : "Multiply", - "outputs" : ["Multiply_19480"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_13782", "Reshape_18537" ], - "name" : "Dot_18659", - "op" : "Dot", - "outputs" : ["Dot_18659"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 1920 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19520"], - "name" : "Reshape_19525", - "op" : "Reshape", - "output_shape" : [ 200, 10000 ], - "outputs" : ["Reshape_19525"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 10000 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_18659"], - "name" : "Reshape_18722", - "op" : "Reshape", - "output_shape" : [ 1920, 200 ], - "outputs" : ["Reshape_18722"], - "value_type" : {"element_type" : "float", "shape" : [ 1920, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19525"], - "name" : "Reshape_19528", - "op" : "Reshape", - "output_shape" : [ 10000, 200 ], - "outputs" : ["Reshape_19528"], - "value_type" : {"element_type" : "float", "shape" : [ 10000, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_18722"], - "name" : "Reshape_18723", - "op" : "Reshape", - "output_shape" : [ 32, 60, 200 ], - "outputs" : ["Reshape_18723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_18724", - "op" : "Slice", - "outputs" : ["Slice_18724"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "Slice_18725", - "op" : "Slice", - "outputs" : ["Slice_18725"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 2, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "Slice_18726", - "op" : "Slice", - "outputs" : ["Slice_18726"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 3, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "Slice_18727", - "op" : "Slice", - "outputs" : ["Slice_18727"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 4, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "Slice_18728", - "op" : "Slice", - "outputs" : ["Slice_18728"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 5, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "Slice_18729", - "op" : "Slice", - "outputs" : ["Slice_18729"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 6, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "Slice_18730", - "op" : "Slice", - "outputs" : ["Slice_18730"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 7, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "Slice_18731", - "op" : "Slice", - "outputs" : ["Slice_18731"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 8, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "Slice_18732", - "op" : "Slice", - "outputs" : ["Slice_18732"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 9, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "Slice_18733", - "op" : "Slice", - "outputs" : ["Slice_18733"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 10, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "Slice_18734", - "op" : "Slice", - "outputs" : ["Slice_18734"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 11, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "Slice_18735", - "op" : "Slice", - "outputs" : ["Slice_18735"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 12, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "Slice_18736", - "op" : "Slice", - "outputs" : ["Slice_18736"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 13, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "Slice_18737", - "op" : "Slice", - "outputs" : ["Slice_18737"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 14, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "Slice_18738", - "op" : "Slice", - "outputs" : ["Slice_18738"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 15, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "Slice_18739", - "op" : "Slice", - "outputs" : ["Slice_18739"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 16, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "Slice_18740", - "op" : "Slice", - "outputs" : ["Slice_18740"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 17, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "Slice_18741", - "op" : "Slice", - "outputs" : ["Slice_18741"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 18, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "Slice_18742", - "op" : "Slice", - "outputs" : ["Slice_18742"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 19, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "Slice_18743", - "op" : "Slice", - "outputs" : ["Slice_18743"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 20, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "Slice_18744", - "op" : "Slice", - "outputs" : ["Slice_18744"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 21, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "Slice_18745", - "op" : "Slice", - "outputs" : ["Slice_18745"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 22, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "Slice_18746", - "op" : "Slice", - "outputs" : ["Slice_18746"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 23, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "Slice_18747", - "op" : "Slice", - "outputs" : ["Slice_18747"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 24, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "Slice_18748", - "op" : "Slice", - "outputs" : ["Slice_18748"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 25, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 25, 0 ], - "name" : "Slice_18749", - "op" : "Slice", - "outputs" : ["Slice_18749"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 26, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 26, 0 ], - "name" : "Slice_18750", - "op" : "Slice", - "outputs" : ["Slice_18750"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 27, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 27, 0 ], - "name" : "Slice_18751", - "op" : "Slice", - "outputs" : ["Slice_18751"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 28, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 28, 0 ], - "name" : "Slice_18752", - "op" : "Slice", - "outputs" : ["Slice_18752"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 29, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 29, 0 ], - "name" : "Slice_18753", - "op" : "Slice", - "outputs" : ["Slice_18753"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 30, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 30, 0 ], - "name" : "Slice_18754", - "op" : "Slice", - "outputs" : ["Slice_18754"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 31, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 31, 0 ], - "name" : "Slice_18755", - "op" : "Slice", - "outputs" : ["Slice_18755"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 32, 0 ], - "name" : "Slice_18756", - "op" : "Slice", - "outputs" : ["Slice_18756"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 33, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 33, 0 ], - "name" : "Slice_18757", - "op" : "Slice", - "outputs" : ["Slice_18757"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 34, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 34, 0 ], - "name" : "Slice_18758", - "op" : "Slice", - "outputs" : ["Slice_18758"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 35, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 35, 0 ], - "name" : "Slice_18759", - "op" : "Slice", - "outputs" : ["Slice_18759"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 36, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 36, 0 ], - "name" : "Slice_18760", - "op" : "Slice", - "outputs" : ["Slice_18760"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 37, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 37, 0 ], - "name" : "Slice_18761", - "op" : "Slice", - "outputs" : ["Slice_18761"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 38, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 38, 0 ], - "name" : "Slice_18762", - "op" : "Slice", - "outputs" : ["Slice_18762"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 39, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 39, 0 ], - "name" : "Slice_18763", - "op" : "Slice", - "outputs" : ["Slice_18763"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 40, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 40, 0 ], - "name" : "Slice_18764", - "op" : "Slice", - "outputs" : ["Slice_18764"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 41, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 41, 0 ], - "name" : "Slice_18765", - "op" : "Slice", - "outputs" : ["Slice_18765"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 42, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 42, 0 ], - "name" : "Slice_18766", - "op" : "Slice", - "outputs" : ["Slice_18766"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 43, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 43, 0 ], - "name" : "Slice_18767", - "op" : "Slice", - "outputs" : ["Slice_18767"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 44, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 44, 0 ], - "name" : "Slice_18768", - "op" : "Slice", - "outputs" : ["Slice_18768"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 45, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 45, 0 ], - "name" : "Slice_18769", - "op" : "Slice", - "outputs" : ["Slice_18769"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 46, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 46, 0 ], - "name" : "Slice_18770", - "op" : "Slice", - "outputs" : ["Slice_18770"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 47, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 47, 0 ], - "name" : "Slice_18771", - "op" : "Slice", - "outputs" : ["Slice_18771"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 48, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 48, 0 ], - "name" : "Slice_18772", - "op" : "Slice", - "outputs" : ["Slice_18772"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 49, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 49, 0 ], - "name" : "Slice_18773", - "op" : "Slice", - "outputs" : ["Slice_18773"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 50, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 50, 0 ], - "name" : "Slice_18774", - "op" : "Slice", - "outputs" : ["Slice_18774"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 51, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 51, 0 ], - "name" : "Slice_18775", - "op" : "Slice", - "outputs" : ["Slice_18775"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 52, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 52, 0 ], - "name" : "Slice_18776", - "op" : "Slice", - "outputs" : ["Slice_18776"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 53, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 53, 0 ], - "name" : "Slice_18777", - "op" : "Slice", - "outputs" : ["Slice_18777"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 54, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 54, 0 ], - "name" : "Slice_18778", - "op" : "Slice", - "outputs" : ["Slice_18778"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 55, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 55, 0 ], - "name" : "Slice_18779", - "op" : "Slice", - "outputs" : ["Slice_18779"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 56, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 56, 0 ], - "name" : "Slice_18780", - "op" : "Slice", - "outputs" : ["Slice_18780"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 57, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 57, 0 ], - "name" : "Slice_18781", - "op" : "Slice", - "outputs" : ["Slice_18781"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 58, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 58, 0 ], - "name" : "Slice_18782", - "op" : "Slice", - "outputs" : ["Slice_18782"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 59, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Reshape_18723"], - "lower_bounds" : [ 0, 59, 0 ], - "name" : "Slice_18783", - "op" : "Slice", - "outputs" : ["Slice_18783"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 60, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18724"], - "name" : "Reshape_18784", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18784"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18725"], - "name" : "Reshape_18785", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18785"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18726"], - "name" : "Reshape_18786", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18727"], - "name" : "Reshape_18787", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18787"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18728"], - "name" : "Reshape_18788", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18788"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18729"], - "name" : "Reshape_18789", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18789"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18730"], - "name" : "Reshape_18790", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18790"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18731"], - "name" : "Reshape_18791", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18732"], - "name" : "Reshape_18792", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18733"], - "name" : "Reshape_18793", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18793"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18734"], - "name" : "Reshape_18794", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18794"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18735"], - "name" : "Reshape_18795", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18736"], - "name" : "Reshape_18796", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18737"], - "name" : "Reshape_18797", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18797"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18738"], - "name" : "Reshape_18798", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18798"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18739"], - "name" : "Reshape_18799", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18799"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18740"], - "name" : "Reshape_18800", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18800"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18741"], - "name" : "Reshape_18801", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18801"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18742"], - "name" : "Reshape_18802", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18743"], - "name" : "Reshape_18803", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18803"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18744"], - "name" : "Reshape_18804", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18804"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18745"], - "name" : "Reshape_18805", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18805"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18746"], - "name" : "Reshape_18806", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18747"], - "name" : "Reshape_18807", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18807"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18748"], - "name" : "Reshape_18808", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18808"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18749"], - "name" : "Reshape_18809", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18809"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18750"], - "name" : "Reshape_18810", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18810"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18751"], - "name" : "Reshape_18811", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18811"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18752"], - "name" : "Reshape_18812", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18812"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18753"], - "name" : "Reshape_18813", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18813"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18754"], - "name" : "Reshape_18814", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18814"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18755"], - "name" : "Reshape_18815", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18815"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18756"], - "name" : "Reshape_18816", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18816"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18757"], - "name" : "Reshape_18817", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18758"], - "name" : "Reshape_18818", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18818"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18759"], - "name" : "Reshape_18819", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18819"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18760"], - "name" : "Reshape_18820", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18761"], - "name" : "Reshape_18821", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18821"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18762"], - "name" : "Reshape_18822", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18822"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18763"], - "name" : "Reshape_18823", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18823"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18764"], - "name" : "Reshape_18824", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18824"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18765"], - "name" : "Reshape_18825", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18825"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18766"], - "name" : "Reshape_18826", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18826"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18767"], - "name" : "Reshape_18827", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18768"], - "name" : "Reshape_18828", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18828"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18769"], - "name" : "Reshape_18829", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18829"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18770"], - "name" : "Reshape_18830", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18830"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18771"], - "name" : "Reshape_18831", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18831"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18772"], - "name" : "Reshape_18832", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18832"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18773"], - "name" : "Reshape_18833", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18774"], - "name" : "Reshape_18834", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18834"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18775"], - "name" : "Reshape_18835", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18835"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18776"], - "name" : "Reshape_18836", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18777"], - "name" : "Reshape_18837", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18837"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18778"], - "name" : "Reshape_18838", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18838"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18779"], - "name" : "Reshape_18839", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18839"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18780"], - "name" : "Reshape_18840", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18781"], - "name" : "Reshape_18841", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18782"], - "name" : "Reshape_18842", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18783"], - "name" : "Reshape_18843", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18843"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18347", "Reshape_18843" ], - "name" : "Multiply_19500", - "op" : "Multiply", - "outputs" : ["Multiply_19500"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Reshape_18843", "Parameter_13787" ], - "name" : "Multiply_19502", - "op" : "Multiply", - "outputs" : ["Multiply_19502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19500", "Multiply_19503" ], - "name" : "Divide_19505", - "op" : "Divide", - "outputs" : ["Divide_19505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19502"], - "name" : "Negative_19504", - "op" : "Negative", - "outputs" : ["Negative_19504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19505", "Parameter_13790" ], - "name" : "Multiply_19507", - "op" : "Multiply", - "outputs" : ["Multiply_19507"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18332", "Divide_19505" ], - "name" : "Multiply_19508", - "op" : "Multiply", - "outputs" : ["Multiply_19508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19505", "Parameter_13799" ], - "name" : "Multiply_19509", - "op" : "Multiply", - "outputs" : ["Multiply_19509"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18340", "Divide_19505" ], - "name" : "Multiply_19510", - "op" : "Multiply", - "outputs" : ["Multiply_19510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19504", "Parameter_18347" ], - "name" : "Multiply_19506", - "op" : "Multiply", - "outputs" : ["Multiply_19506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19507"], - "name" : "Negative_19512", - "op" : "Negative", - "outputs" : ["Negative_19512"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19508", "Multiply_19499" ], - "name" : "Divide_19513", - "op" : "Divide", - "outputs" : ["Divide_19513"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19509"], - "name" : "Negative_19514", - "op" : "Negative", - "outputs" : ["Negative_19514"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19506", "Parameter_18348" ], - "name" : "Divide_19511", - "op" : "Divide", - "outputs" : ["Divide_19511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19512", "Parameter_18332" ], - "name" : "Multiply_19517", - "op" : "Multiply", - "outputs" : ["Multiply_19517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18538", "Divide_19513" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19518", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19518"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19514", "Parameter_18340" ], - "name" : "Multiply_19519", - "op" : "Multiply", - "outputs" : ["Multiply_19519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19511", "Parameter_18349" ], - "name" : "Multiply_19516", - "op" : "Multiply", - "outputs" : ["Multiply_19516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19517", "Parameter_18333" ], - "name" : "Divide_19522", - "op" : "Divide", - "outputs" : ["Divide_19522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19518"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19523", - "op" : "Slice", - "outputs" : ["Slice_19523"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19519", "Parameter_18341" ], - "name" : "Divide_19524", - "op" : "Divide", - "outputs" : ["Divide_19524"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19516"], - "name" : "Negative_19521", - "op" : "Negative", - "outputs" : ["Negative_19521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19522", "Parameter_18334" ], - "name" : "Multiply_19526", - "op" : "Multiply", - "outputs" : ["Multiply_19526"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19524", "Parameter_18342" ], - "name" : "Multiply_19527", - "op" : "Multiply", - "outputs" : ["Multiply_19527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19526"], - "name" : "Negative_19529", - "op" : "Negative", - "outputs" : ["Negative_19529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19527"], - "name" : "Negative_19530", - "op" : "Negative", - "outputs" : ["Negative_19530"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19523", "Negative_19529" ], - "name" : "Add_19531", - "op" : "Add", - "outputs" : ["Add_19531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19518", "Add_19531" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19532", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19532"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19532"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19533", - "op" : "Slice", - "outputs" : ["Slice_19533"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19533", "Negative_19530" ], - "name" : "Add_19534", - "op" : "Add", - "outputs" : ["Add_19534"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19532", "Add_19534" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19535", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19535"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19535"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19536", - "op" : "Slice", - "outputs" : ["Slice_19536"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19536", "Negative_19521" ], - "name" : "Add_19537", - "op" : "Add", - "outputs" : ["Add_19537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19535", "Add_19537" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19538", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19538"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19538"], - "name" : "Sum_19539", - "op" : "Sum", - "outputs" : ["Sum_19539"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19538"], - "name" : "Reshape_19540", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19540"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19496", "ReplaceSlice_19538" ], - "name" : "Dot_19541", - "op" : "Dot", - "outputs" : ["Dot_19541"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19538"], - "name" : "Sum_19542", - "op" : "Sum", - "outputs" : ["Sum_19542"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19538"], - "name" : "Reshape_19543", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19543"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19497", "ReplaceSlice_19538" ], - "name" : "Dot_19544", - "op" : "Dot", - "outputs" : ["Dot_19544"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Parameter_13796", "Reshape_19540" ], - "name" : "Dot_19545", - "op" : "Dot", - "outputs" : ["Dot_19545"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19541"], - "name" : "Reshape_19546", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19546"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Parameter_18292", "Reshape_19543" ], - "name" : "Dot_19547", - "op" : "Dot", - "outputs" : ["Dot_19547"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19544"], - "name" : "Reshape_19548", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19548"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19545"], - "name" : "Reshape_19549", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19549"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19546"], - "name" : "Reshape_19550", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19550"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19547"], - "name" : "Reshape_19551", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19551"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19548"], - "name" : "Reshape_19552", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19552"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19549", "Reshape_18842" ], - "name" : "Add_19553", - "op" : "Add", - "outputs" : ["Add_19553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Reshape_19551", "Parameter_18294" ], - "name" : "Multiply_19554", - "op" : "Multiply", - "outputs" : ["Multiply_19554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18325", "Reshape_19551" ], - "name" : "Multiply_19555", - "op" : "Multiply", - "outputs" : ["Multiply_19555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19553", "Parameter_13798" ], - "name" : "Multiply_19556", - "op" : "Multiply", - "outputs" : ["Multiply_19556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18282", "Add_19553" ], - "name" : "Multiply_19557", - "op" : "Multiply", - "outputs" : ["Multiply_19557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19554"], - "name" : "Negative_19558", - "op" : "Negative", - "outputs" : ["Negative_19558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19555", "Multiply_19495" ], - "name" : "Divide_19559", - "op" : "Divide", - "outputs" : ["Divide_19559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19556"], - "name" : "Negative_19560", - "op" : "Negative", - "outputs" : ["Negative_19560"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19557", "Multiply_19494" ], - "name" : "Divide_19561", - "op" : "Divide", - "outputs" : ["Divide_19561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19558", "Parameter_18325" ], - "name" : "Multiply_19562", - "op" : "Multiply", - "outputs" : ["Multiply_19562"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19559", "Parameter_18297" ], - "name" : "Multiply_19563", - "op" : "Multiply", - "outputs" : ["Multiply_19563"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18310", "Divide_19559" ], - "name" : "Multiply_19564", - "op" : "Multiply", - "outputs" : ["Multiply_19564"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19559", "Parameter_18230" ], - "name" : "Multiply_19565", - "op" : "Multiply", - "outputs" : ["Multiply_19565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18318", "Divide_19559" ], - "name" : "Multiply_19566", - "op" : "Multiply", - "outputs" : ["Multiply_19566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19560", "Parameter_18282" ], - "name" : "Multiply_19567", - "op" : "Multiply", - "outputs" : ["Multiply_19567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19510", "Divide_19561" ], - "name" : "Add_19568", - "op" : "Add", - "outputs" : ["Add_19568"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19562", "Parameter_18326" ], - "name" : "Divide_19569", - "op" : "Divide", - "outputs" : ["Divide_19569"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19563"], - "name" : "Negative_19570", - "op" : "Negative", - "outputs" : ["Negative_19570"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19564", "Multiply_19491" ], - "name" : "Divide_19571", - "op" : "Divide", - "outputs" : ["Divide_19571"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19565"], - "name" : "Negative_19572", - "op" : "Negative", - "outputs" : ["Negative_19572"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19567", "Parameter_18283" ], - "name" : "Divide_19573", - "op" : "Divide", - "outputs" : ["Divide_19573"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19568", "Parameter_13801" ], - "name" : "Multiply_19574", - "op" : "Multiply", - "outputs" : ["Multiply_19574"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18267", "Add_19568" ], - "name" : "Multiply_19575", - "op" : "Multiply", - "outputs" : ["Multiply_19575"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19568", "Parameter_13810" ], - "name" : "Multiply_19576", - "op" : "Multiply", - "outputs" : ["Multiply_19576"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18275", "Add_19568" ], - "name" : "Multiply_19577", - "op" : "Multiply", - "outputs" : ["Multiply_19577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19569", "Parameter_18327" ], - "name" : "Multiply_19578", - "op" : "Multiply", - "outputs" : ["Multiply_19578"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19570", "Parameter_18310" ], - "name" : "Multiply_19579", - "op" : "Multiply", - "outputs" : ["Multiply_19579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18598", "Divide_19571" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19580", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19580"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19572", "Parameter_18318" ], - "name" : "Multiply_19581", - "op" : "Multiply", - "outputs" : ["Multiply_19581"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19573", "Parameter_18284" ], - "name" : "Multiply_19582", - "op" : "Multiply", - "outputs" : ["Multiply_19582"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19574"], - "name" : "Negative_19583", - "op" : "Negative", - "outputs" : ["Negative_19583"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19575", "Multiply_19490" ], - "name" : "Divide_19584", - "op" : "Divide", - "outputs" : ["Divide_19584"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19576"], - "name" : "Negative_19585", - "op" : "Negative", - "outputs" : ["Negative_19585"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19578"], - "name" : "Negative_19586", - "op" : "Negative", - "outputs" : ["Negative_19586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19579", "Parameter_18311" ], - "name" : "Divide_19587", - "op" : "Divide", - "outputs" : ["Divide_19587"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19580"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19588", - "op" : "Slice", - "outputs" : ["Slice_19588"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19581", "Parameter_18319" ], - "name" : "Divide_19589", - "op" : "Divide", - "outputs" : ["Divide_19589"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19582"], - "name" : "Negative_19590", - "op" : "Negative", - "outputs" : ["Negative_19590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19583", "Parameter_18267" ], - "name" : "Multiply_19591", - "op" : "Multiply", - "outputs" : ["Multiply_19591"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18539", "Divide_19584" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19592", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19592"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19585", "Parameter_18275" ], - "name" : "Multiply_19593", - "op" : "Multiply", - "outputs" : ["Multiply_19593"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19587", "Parameter_18312" ], - "name" : "Multiply_19594", - "op" : "Multiply", - "outputs" : ["Multiply_19594"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19589", "Parameter_18320" ], - "name" : "Multiply_19595", - "op" : "Multiply", - "outputs" : ["Multiply_19595"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19591", "Parameter_18268" ], - "name" : "Divide_19596", - "op" : "Divide", - "outputs" : ["Divide_19596"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19592"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19597", - "op" : "Slice", - "outputs" : ["Slice_19597"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19593", "Parameter_18276" ], - "name" : "Divide_19598", - "op" : "Divide", - "outputs" : ["Divide_19598"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19594"], - "name" : "Negative_19599", - "op" : "Negative", - "outputs" : ["Negative_19599"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19595"], - "name" : "Negative_19600", - "op" : "Negative", - "outputs" : ["Negative_19600"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19596", "Parameter_18269" ], - "name" : "Multiply_19601", - "op" : "Multiply", - "outputs" : ["Multiply_19601"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19598", "Parameter_18277" ], - "name" : "Multiply_19602", - "op" : "Multiply", - "outputs" : ["Multiply_19602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19588", "Negative_19599" ], - "name" : "Add_19603", - "op" : "Add", - "outputs" : ["Add_19603"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19601"], - "name" : "Negative_19604", - "op" : "Negative", - "outputs" : ["Negative_19604"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19602"], - "name" : "Negative_19605", - "op" : "Negative", - "outputs" : ["Negative_19605"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19580", "Add_19603" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19606", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19606"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Slice_19597", "Negative_19604" ], - "name" : "Add_19607", - "op" : "Add", - "outputs" : ["Add_19607"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19606"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19608", - "op" : "Slice", - "outputs" : ["Slice_19608"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19592", "Add_19607" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19609", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19609"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Slice_19608", "Negative_19600" ], - "name" : "Add_19610", - "op" : "Add", - "outputs" : ["Add_19610"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19609"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19611", - "op" : "Slice", - "outputs" : ["Slice_19611"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19606", "Add_19610" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19612", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19612"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Slice_19611", "Negative_19605" ], - "name" : "Add_19613", - "op" : "Add", - "outputs" : ["Add_19613"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19612"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19614", - "op" : "Slice", - "outputs" : ["Slice_19614"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19609", "Add_19613" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19615", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19615"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Slice_19614", "Negative_19586" ], - "name" : "Add_19616", - "op" : "Add", - "outputs" : ["Add_19616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19615"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19617", - "op" : "Slice", - "outputs" : ["Slice_19617"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19612", "Add_19616" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19618", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19618"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Slice_19617", "Negative_19590" ], - "name" : "Add_19619", - "op" : "Add", - "outputs" : ["Add_19619"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19618"], - "name" : "Sum_19620", - "op" : "Sum", - "outputs" : ["Sum_19620"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19618"], - "name" : "Reshape_19621", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19621"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19486", "ReplaceSlice_19618" ], - "name" : "Dot_19622", - "op" : "Dot", - "outputs" : ["Dot_19622"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19618"], - "name" : "Sum_19623", - "op" : "Sum", - "outputs" : ["Sum_19623"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19618"], - "name" : "Reshape_19624", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19624"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18721", "ReplaceSlice_19618" ], - "name" : "Dot_19625", - "op" : "Dot", - "outputs" : ["Dot_19625"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19615", "Add_19619" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19626", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19626"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Parameter_18303", "Reshape_19621" ], - "name" : "Dot_19627", - "op" : "Dot", - "outputs" : ["Dot_19627"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19622"], - "name" : "Reshape_19628", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19628"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Parameter_18307", "Reshape_19624" ], - "name" : "Dot_19629", - "op" : "Dot", - "outputs" : ["Dot_19629"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19625"], - "name" : "Reshape_19630", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19630"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19626"], - "name" : "Sum_19631", - "op" : "Sum", - "outputs" : ["Sum_19631"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19626"], - "name" : "Reshape_19632", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19632"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19485", "ReplaceSlice_19626" ], - "name" : "Dot_19633", - "op" : "Dot", - "outputs" : ["Dot_19633"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19626"], - "name" : "Sum_19634", - "op" : "Sum", - "outputs" : ["Sum_19634"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19626"], - "name" : "Reshape_19635", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19635"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19487", "ReplaceSlice_19626" ], - "name" : "Dot_19636", - "op" : "Dot", - "outputs" : ["Dot_19636"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19627"], - "name" : "Reshape_19637", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19637"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19628"], - "name" : "Reshape_19638", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19638"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19629"], - "name" : "Reshape_19639", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19639"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19630"], - "name" : "Reshape_19640", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19640"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Sum_19539", "Sum_19631" ], - "name" : "Add_19641", - "op" : "Add", - "outputs" : ["Add_19641"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13807", "Reshape_19632" ], - "name" : "Dot_19642", - "op" : "Dot", - "outputs" : ["Dot_19642"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19633"], - "name" : "Reshape_19643", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19643"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Sum_19542", "Sum_19634" ], - "name" : "Add_19644", - "op" : "Add", - "outputs" : ["Add_19644"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18227", "Reshape_19635" ], - "name" : "Dot_19645", - "op" : "Dot", - "outputs" : ["Dot_19645"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19636"], - "name" : "Reshape_19646", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19646"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_19639"], - "name" : "Reshape_19647", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_19647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19642"], - "name" : "Reshape_19648", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19643"], - "name" : "Reshape_19649", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19649"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19645"], - "name" : "Reshape_19650", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19650"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19646"], - "name" : "Reshape_19651", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19651"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Broadcast_18658", "Reshape_19647" ], - "lower_bounds" : [ 0, 59, 0 ], - "name" : "ReplaceSlice_19652", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19652"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 60, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Reshape_19648", "Reshape_18841" ], - "name" : "Add_19653", - "op" : "Add", - "outputs" : ["Add_19653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Reshape_19550", "Reshape_19649" ], - "name" : "Add_19654", - "op" : "Add", - "outputs" : ["Add_19654"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19637", "Reshape_19650" ], - "name" : "Add_19655", - "op" : "Add", - "outputs" : ["Add_19655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Reshape_19552", "Reshape_19651" ], - "name" : "Add_19656", - "op" : "Add", - "outputs" : ["Add_19656"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19652"], - "lower_bounds" : [ 0, 58, 0 ], - "name" : "Slice_19657", - "op" : "Slice", - "outputs" : ["Slice_19657"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 59, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_19653", "Parameter_13809" ], - "name" : "Multiply_19658", - "op" : "Multiply", - "outputs" : ["Multiply_19658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18217", "Add_19653" ], - "name" : "Multiply_19659", - "op" : "Multiply", - "outputs" : ["Multiply_19659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19655", "Parameter_18229" ], - "name" : "Multiply_19660", - "op" : "Multiply", - "outputs" : ["Multiply_19660"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18260", "Add_19655" ], - "name" : "Multiply_19661", - "op" : "Multiply", - "outputs" : ["Multiply_19661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19658"], - "name" : "Negative_19662", - "op" : "Negative", - "outputs" : ["Negative_19662"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19659", "Multiply_19483" ], - "name" : "Divide_19663", - "op" : "Divide", - "outputs" : ["Divide_19663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19660"], - "name" : "Negative_19664", - "op" : "Negative", - "outputs" : ["Negative_19664"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19661", "Multiply_19484" ], - "name" : "Divide_19665", - "op" : "Divide", - "outputs" : ["Divide_19665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19662", "Parameter_18217" ], - "name" : "Multiply_19666", - "op" : "Multiply", - "outputs" : ["Multiply_19666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19577", "Divide_19663" ], - "name" : "Add_19667", - "op" : "Add", - "outputs" : ["Add_19667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19664", "Parameter_18260" ], - "name" : "Multiply_19668", - "op" : "Multiply", - "outputs" : ["Multiply_19668"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19566", "Divide_19665" ], - "name" : "Add_19669", - "op" : "Add", - "outputs" : ["Add_19669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19666", "Parameter_18218" ], - "name" : "Divide_19670", - "op" : "Divide", - "outputs" : ["Divide_19670"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19667", "Parameter_13812" ], - "name" : "Multiply_19671", - "op" : "Multiply", - "outputs" : ["Multiply_19671"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18202", "Add_19667" ], - "name" : "Multiply_19672", - "op" : "Multiply", - "outputs" : ["Multiply_19672"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19667", "Parameter_13821" ], - "name" : "Multiply_19673", - "op" : "Multiply", - "outputs" : ["Multiply_19673"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18210", "Add_19667" ], - "name" : "Multiply_19674", - "op" : "Multiply", - "outputs" : ["Multiply_19674"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19668", "Parameter_18261" ], - "name" : "Divide_19675", - "op" : "Divide", - "outputs" : ["Divide_19675"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19669", "Parameter_18232" ], - "name" : "Multiply_19676", - "op" : "Multiply", - "outputs" : ["Multiply_19676"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18245", "Add_19669" ], - "name" : "Multiply_19677", - "op" : "Multiply", - "outputs" : ["Multiply_19677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19669", "Parameter_18165" ], - "name" : "Multiply_19678", - "op" : "Multiply", - "outputs" : ["Multiply_19678"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18253", "Add_19669" ], - "name" : "Multiply_19679", - "op" : "Multiply", - "outputs" : ["Multiply_19679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19670", "Parameter_18219" ], - "name" : "Multiply_19680", - "op" : "Multiply", - "outputs" : ["Multiply_19680"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19671"], - "name" : "Negative_19681", - "op" : "Negative", - "outputs" : ["Negative_19681"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19672", "Multiply_19479" ], - "name" : "Divide_19682", - "op" : "Divide", - "outputs" : ["Divide_19682"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19673"], - "name" : "Negative_19683", - "op" : "Negative", - "outputs" : ["Negative_19683"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19675", "Parameter_18262" ], - "name" : "Multiply_19684", - "op" : "Multiply", - "outputs" : ["Multiply_19684"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19676"], - "name" : "Negative_19685", - "op" : "Negative", - "outputs" : ["Negative_19685"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19677", "Multiply_19480" ], - "name" : "Divide_19686", - "op" : "Divide", - "outputs" : ["Divide_19686"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19678"], - "name" : "Negative_19687", - "op" : "Negative", - "outputs" : ["Negative_19687"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19680"], - "name" : "Negative_19688", - "op" : "Negative", - "outputs" : ["Negative_19688"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19681", "Parameter_18202" ], - "name" : "Multiply_19689", - "op" : "Multiply", - "outputs" : ["Multiply_19689"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18540", "Divide_19682" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19690", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19690"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19683", "Parameter_18210" ], - "name" : "Multiply_19691", - "op" : "Multiply", - "outputs" : ["Multiply_19691"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19684"], - "name" : "Negative_19692", - "op" : "Negative", - "outputs" : ["Negative_19692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19685", "Parameter_18245" ], - "name" : "Multiply_19693", - "op" : "Multiply", - "outputs" : ["Multiply_19693"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18599", "Divide_19686" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19694", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19694"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19687", "Parameter_18253" ], - "name" : "Multiply_19695", - "op" : "Multiply", - "outputs" : ["Multiply_19695"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19689", "Parameter_18203" ], - "name" : "Divide_19696", - "op" : "Divide", - "outputs" : ["Divide_19696"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19690"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19697", - "op" : "Slice", - "outputs" : ["Slice_19697"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19691", "Parameter_18211" ], - "name" : "Divide_19698", - "op" : "Divide", - "outputs" : ["Divide_19698"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19693", "Parameter_18246" ], - "name" : "Divide_19699", - "op" : "Divide", - "outputs" : ["Divide_19699"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19694"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19700", - "op" : "Slice", - "outputs" : ["Slice_19700"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19695", "Parameter_18254" ], - "name" : "Divide_19701", - "op" : "Divide", - "outputs" : ["Divide_19701"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19696", "Parameter_18204" ], - "name" : "Multiply_19702", - "op" : "Multiply", - "outputs" : ["Multiply_19702"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19698", "Parameter_18212" ], - "name" : "Multiply_19703", - "op" : "Multiply", - "outputs" : ["Multiply_19703"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19699", "Parameter_18247" ], - "name" : "Multiply_19704", - "op" : "Multiply", - "outputs" : ["Multiply_19704"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19701", "Parameter_18255" ], - "name" : "Multiply_19705", - "op" : "Multiply", - "outputs" : ["Multiply_19705"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19702"], - "name" : "Negative_19706", - "op" : "Negative", - "outputs" : ["Negative_19706"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19703"], - "name" : "Negative_19707", - "op" : "Negative", - "outputs" : ["Negative_19707"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19704"], - "name" : "Negative_19708", - "op" : "Negative", - "outputs" : ["Negative_19708"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19705"], - "name" : "Negative_19709", - "op" : "Negative", - "outputs" : ["Negative_19709"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19697", "Negative_19706" ], - "name" : "Add_19710", - "op" : "Add", - "outputs" : ["Add_19710"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19700", "Negative_19708" ], - "name" : "Add_19711", - "op" : "Add", - "outputs" : ["Add_19711"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19690", "Add_19710" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19712", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19712"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19694", "Add_19711" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19713", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19713"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19712"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19714", - "op" : "Slice", - "outputs" : ["Slice_19714"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19713"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19715", - "op" : "Slice", - "outputs" : ["Slice_19715"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19714", "Negative_19707" ], - "name" : "Add_19716", - "op" : "Add", - "outputs" : ["Add_19716"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19715", "Negative_19709" ], - "name" : "Add_19717", - "op" : "Add", - "outputs" : ["Add_19717"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19712", "Add_19716" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19718", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19718"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19713", "Add_19717" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19719", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19719"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19718"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19720", - "op" : "Slice", - "outputs" : ["Slice_19720"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19719"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19721", - "op" : "Slice", - "outputs" : ["Slice_19721"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19720", "Negative_19688" ], - "name" : "Add_19722", - "op" : "Add", - "outputs" : ["Add_19722"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19721", "Negative_19692" ], - "name" : "Add_19723", - "op" : "Add", - "outputs" : ["Add_19723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19718", "Add_19722" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19724", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19724"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19719", "Add_19723" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19725", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19725"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19724"], - "name" : "Sum_19726", - "op" : "Sum", - "outputs" : ["Sum_19726"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19724"], - "name" : "Reshape_19727", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19727"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19474", "ReplaceSlice_19724" ], - "name" : "Dot_19728", - "op" : "Dot", - "outputs" : ["Dot_19728"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19724"], - "name" : "Sum_19729", - "op" : "Sum", - "outputs" : ["Sum_19729"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19724"], - "name" : "Reshape_19730", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19730"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19476", "ReplaceSlice_19724" ], - "name" : "Dot_19731", - "op" : "Dot", - "outputs" : ["Dot_19731"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19725"], - "name" : "Sum_19732", - "op" : "Sum", - "outputs" : ["Sum_19732"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19725"], - "name" : "Reshape_19733", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19733"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19475", "ReplaceSlice_19725" ], - "name" : "Dot_19734", - "op" : "Dot", - "outputs" : ["Dot_19734"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19725"], - "name" : "Sum_19735", - "op" : "Sum", - "outputs" : ["Sum_19735"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19725"], - "name" : "Reshape_19736", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19736"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18720", "ReplaceSlice_19725" ], - "name" : "Dot_19737", - "op" : "Dot", - "outputs" : ["Dot_19737"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19641", "Sum_19726" ], - "name" : "Add_19738", - "op" : "Add", - "outputs" : ["Add_19738"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13818", "Reshape_19727" ], - "name" : "Dot_19739", - "op" : "Dot", - "outputs" : ["Dot_19739"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19728"], - "name" : "Reshape_19740", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19740"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19644", "Sum_19729" ], - "name" : "Add_19741", - "op" : "Add", - "outputs" : ["Add_19741"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18162", "Reshape_19730" ], - "name" : "Dot_19742", - "op" : "Dot", - "outputs" : ["Dot_19742"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19731"], - "name" : "Reshape_19743", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19743"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Sum_19620", "Sum_19732" ], - "name" : "Add_19744", - "op" : "Add", - "outputs" : ["Add_19744"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18238", "Reshape_19733" ], - "name" : "Dot_19745", - "op" : "Dot", - "outputs" : ["Dot_19745"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19734"], - "name" : "Reshape_19746", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19746"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Sum_19623", "Sum_19735" ], - "name" : "Add_19747", - "op" : "Add", - "outputs" : ["Add_19747"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18242", "Reshape_19736" ], - "name" : "Dot_19748", - "op" : "Dot", - "outputs" : ["Dot_19748"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19737"], - "name" : "Reshape_19749", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19749"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19739"], - "name" : "Reshape_19750", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19750"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19740"], - "name" : "Reshape_19751", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19751"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19742"], - "name" : "Reshape_19752", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19743"], - "name" : "Reshape_19753", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19753"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19745"], - "name" : "Reshape_19754", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19746"], - "name" : "Reshape_19755", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19755"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19748"], - "name" : "Reshape_19756", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19749"], - "name" : "Reshape_19757", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19757"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19750", "Reshape_18840" ], - "name" : "Add_19758", - "op" : "Add", - "outputs" : ["Add_19758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19654", "Reshape_19751" ], - "name" : "Add_19759", - "op" : "Add", - "outputs" : ["Add_19759"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_19656", "Reshape_19753" ], - "name" : "Add_19760", - "op" : "Add", - "outputs" : ["Add_19760"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19754", "Reshape_19752" ], - "name" : "Add_19761", - "op" : "Add", - "outputs" : ["Add_19761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Reshape_19638", "Reshape_19755" ], - "name" : "Add_19762", - "op" : "Add", - "outputs" : ["Add_19762"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_19756"], - "name" : "Reshape_19763", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_19763"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Reshape_19640", "Reshape_19757" ], - "name" : "Add_19764", - "op" : "Add", - "outputs" : ["Add_19764"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_19758", "Parameter_13820" ], - "name" : "Multiply_19765", - "op" : "Multiply", - "outputs" : ["Multiply_19765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18152", "Add_19758" ], - "name" : "Multiply_19766", - "op" : "Multiply", - "outputs" : ["Multiply_19766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19761", "Parameter_18164" ], - "name" : "Multiply_19767", - "op" : "Multiply", - "outputs" : ["Multiply_19767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18195", "Add_19761" ], - "name" : "Multiply_19768", - "op" : "Multiply", - "outputs" : ["Multiply_19768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19657", "Reshape_19763" ], - "name" : "Add_19769", - "op" : "Add", - "outputs" : ["Add_19769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_19765"], - "name" : "Negative_19770", - "op" : "Negative", - "outputs" : ["Negative_19770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19766", "Multiply_19472" ], - "name" : "Divide_19771", - "op" : "Divide", - "outputs" : ["Divide_19771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19767"], - "name" : "Negative_19772", - "op" : "Negative", - "outputs" : ["Negative_19772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19768", "Multiply_19473" ], - "name" : "Divide_19773", - "op" : "Divide", - "outputs" : ["Divide_19773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19652", "Add_19769" ], - "lower_bounds" : [ 0, 58, 0 ], - "name" : "ReplaceSlice_19774", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19774"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 59, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_19770", "Parameter_18152" ], - "name" : "Multiply_19775", - "op" : "Multiply", - "outputs" : ["Multiply_19775"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19674", "Divide_19771" ], - "name" : "Add_19776", - "op" : "Add", - "outputs" : ["Add_19776"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19772", "Parameter_18195" ], - "name" : "Multiply_19777", - "op" : "Multiply", - "outputs" : ["Multiply_19777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19679", "Divide_19773" ], - "name" : "Add_19778", - "op" : "Add", - "outputs" : ["Add_19778"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19774"], - "lower_bounds" : [ 0, 57, 0 ], - "name" : "Slice_19779", - "op" : "Slice", - "outputs" : ["Slice_19779"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 58, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_19775", "Parameter_18153" ], - "name" : "Divide_19780", - "op" : "Divide", - "outputs" : ["Divide_19780"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19776", "Parameter_13823" ], - "name" : "Multiply_19781", - "op" : "Multiply", - "outputs" : ["Multiply_19781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18137", "Add_19776" ], - "name" : "Multiply_19782", - "op" : "Multiply", - "outputs" : ["Multiply_19782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19776", "Parameter_13832" ], - "name" : "Multiply_19783", - "op" : "Multiply", - "outputs" : ["Multiply_19783"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18145", "Add_19776" ], - "name" : "Multiply_19784", - "op" : "Multiply", - "outputs" : ["Multiply_19784"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19777", "Parameter_18196" ], - "name" : "Divide_19785", - "op" : "Divide", - "outputs" : ["Divide_19785"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19778", "Parameter_18167" ], - "name" : "Multiply_19786", - "op" : "Multiply", - "outputs" : ["Multiply_19786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18180", "Add_19778" ], - "name" : "Multiply_19787", - "op" : "Multiply", - "outputs" : ["Multiply_19787"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19778", "Parameter_18100" ], - "name" : "Multiply_19788", - "op" : "Multiply", - "outputs" : ["Multiply_19788"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18188", "Add_19778" ], - "name" : "Multiply_19789", - "op" : "Multiply", - "outputs" : ["Multiply_19789"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19780", "Parameter_18154" ], - "name" : "Multiply_19790", - "op" : "Multiply", - "outputs" : ["Multiply_19790"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19781"], - "name" : "Negative_19791", - "op" : "Negative", - "outputs" : ["Negative_19791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19782", "Multiply_19468" ], - "name" : "Divide_19792", - "op" : "Divide", - "outputs" : ["Divide_19792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19783"], - "name" : "Negative_19793", - "op" : "Negative", - "outputs" : ["Negative_19793"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19785", "Parameter_18197" ], - "name" : "Multiply_19794", - "op" : "Multiply", - "outputs" : ["Multiply_19794"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19786"], - "name" : "Negative_19795", - "op" : "Negative", - "outputs" : ["Negative_19795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19787", "Multiply_19469" ], - "name" : "Divide_19796", - "op" : "Divide", - "outputs" : ["Divide_19796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19788"], - "name" : "Negative_19797", - "op" : "Negative", - "outputs" : ["Negative_19797"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19790"], - "name" : "Negative_19798", - "op" : "Negative", - "outputs" : ["Negative_19798"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19791", "Parameter_18137" ], - "name" : "Multiply_19799", - "op" : "Multiply", - "outputs" : ["Multiply_19799"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18541", "Divide_19792" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19800", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19800"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19793", "Parameter_18145" ], - "name" : "Multiply_19801", - "op" : "Multiply", - "outputs" : ["Multiply_19801"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19794"], - "name" : "Negative_19802", - "op" : "Negative", - "outputs" : ["Negative_19802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19795", "Parameter_18180" ], - "name" : "Multiply_19803", - "op" : "Multiply", - "outputs" : ["Multiply_19803"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18600", "Divide_19796" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19804", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19804"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19797", "Parameter_18188" ], - "name" : "Multiply_19805", - "op" : "Multiply", - "outputs" : ["Multiply_19805"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19799", "Parameter_18138" ], - "name" : "Divide_19806", - "op" : "Divide", - "outputs" : ["Divide_19806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19800"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19807", - "op" : "Slice", - "outputs" : ["Slice_19807"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19801", "Parameter_18146" ], - "name" : "Divide_19808", - "op" : "Divide", - "outputs" : ["Divide_19808"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19803", "Parameter_18181" ], - "name" : "Divide_19809", - "op" : "Divide", - "outputs" : ["Divide_19809"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19804"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19810", - "op" : "Slice", - "outputs" : ["Slice_19810"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19805", "Parameter_18189" ], - "name" : "Divide_19811", - "op" : "Divide", - "outputs" : ["Divide_19811"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19806", "Parameter_18139" ], - "name" : "Multiply_19812", - "op" : "Multiply", - "outputs" : ["Multiply_19812"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19808", "Parameter_18147" ], - "name" : "Multiply_19813", - "op" : "Multiply", - "outputs" : ["Multiply_19813"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19809", "Parameter_18182" ], - "name" : "Multiply_19814", - "op" : "Multiply", - "outputs" : ["Multiply_19814"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19811", "Parameter_18190" ], - "name" : "Multiply_19815", - "op" : "Multiply", - "outputs" : ["Multiply_19815"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19812"], - "name" : "Negative_19816", - "op" : "Negative", - "outputs" : ["Negative_19816"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19813"], - "name" : "Negative_19817", - "op" : "Negative", - "outputs" : ["Negative_19817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19814"], - "name" : "Negative_19818", - "op" : "Negative", - "outputs" : ["Negative_19818"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19815"], - "name" : "Negative_19819", - "op" : "Negative", - "outputs" : ["Negative_19819"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19807", "Negative_19816" ], - "name" : "Add_19820", - "op" : "Add", - "outputs" : ["Add_19820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19810", "Negative_19818" ], - "name" : "Add_19821", - "op" : "Add", - "outputs" : ["Add_19821"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19800", "Add_19820" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19822", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19822"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19804", "Add_19821" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19823", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19823"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19822"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19824", - "op" : "Slice", - "outputs" : ["Slice_19824"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19823"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19825", - "op" : "Slice", - "outputs" : ["Slice_19825"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19824", "Negative_19817" ], - "name" : "Add_19826", - "op" : "Add", - "outputs" : ["Add_19826"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19825", "Negative_19819" ], - "name" : "Add_19827", - "op" : "Add", - "outputs" : ["Add_19827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19822", "Add_19826" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19828", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19828"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19823", "Add_19827" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19829", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19829"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19828"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19830", - "op" : "Slice", - "outputs" : ["Slice_19830"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19829"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19831", - "op" : "Slice", - "outputs" : ["Slice_19831"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19830", "Negative_19798" ], - "name" : "Add_19832", - "op" : "Add", - "outputs" : ["Add_19832"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19831", "Negative_19802" ], - "name" : "Add_19833", - "op" : "Add", - "outputs" : ["Add_19833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19828", "Add_19832" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19834", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19834"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19829", "Add_19833" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19835", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19835"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19834"], - "name" : "Sum_19836", - "op" : "Sum", - "outputs" : ["Sum_19836"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19834"], - "name" : "Reshape_19837", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19837"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19463", "ReplaceSlice_19834" ], - "name" : "Dot_19838", - "op" : "Dot", - "outputs" : ["Dot_19838"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19834"], - "name" : "Sum_19839", - "op" : "Sum", - "outputs" : ["Sum_19839"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19834"], - "name" : "Reshape_19840", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19840"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19465", "ReplaceSlice_19834" ], - "name" : "Dot_19841", - "op" : "Dot", - "outputs" : ["Dot_19841"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19835"], - "name" : "Sum_19842", - "op" : "Sum", - "outputs" : ["Sum_19842"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19835"], - "name" : "Reshape_19843", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19843"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19464", "ReplaceSlice_19835" ], - "name" : "Dot_19844", - "op" : "Dot", - "outputs" : ["Dot_19844"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19835"], - "name" : "Sum_19845", - "op" : "Sum", - "outputs" : ["Sum_19845"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19835"], - "name" : "Reshape_19846", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19846"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18719", "ReplaceSlice_19835" ], - "name" : "Dot_19847", - "op" : "Dot", - "outputs" : ["Dot_19847"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19738", "Sum_19836" ], - "name" : "Add_19848", - "op" : "Add", - "outputs" : ["Add_19848"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13829", "Reshape_19837" ], - "name" : "Dot_19849", - "op" : "Dot", - "outputs" : ["Dot_19849"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19838"], - "name" : "Reshape_19850", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19850"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19741", "Sum_19839" ], - "name" : "Add_19851", - "op" : "Add", - "outputs" : ["Add_19851"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18097", "Reshape_19840" ], - "name" : "Dot_19852", - "op" : "Dot", - "outputs" : ["Dot_19852"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19841"], - "name" : "Reshape_19853", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19853"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19744", "Sum_19842" ], - "name" : "Add_19854", - "op" : "Add", - "outputs" : ["Add_19854"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18173", "Reshape_19843" ], - "name" : "Dot_19855", - "op" : "Dot", - "outputs" : ["Dot_19855"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19844"], - "name" : "Reshape_19856", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19856"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19747", "Sum_19845" ], - "name" : "Add_19857", - "op" : "Add", - "outputs" : ["Add_19857"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18177", "Reshape_19846" ], - "name" : "Dot_19858", - "op" : "Dot", - "outputs" : ["Dot_19858"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19847"], - "name" : "Reshape_19859", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19859"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19849"], - "name" : "Reshape_19860", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19860"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19850"], - "name" : "Reshape_19861", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19861"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19852"], - "name" : "Reshape_19862", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19853"], - "name" : "Reshape_19863", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19863"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19855"], - "name" : "Reshape_19864", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19864"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19856"], - "name" : "Reshape_19865", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19865"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19858"], - "name" : "Reshape_19866", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19859"], - "name" : "Reshape_19867", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19867"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19860", "Reshape_18839" ], - "name" : "Add_19868", - "op" : "Add", - "outputs" : ["Add_19868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19759", "Reshape_19861" ], - "name" : "Add_19869", - "op" : "Add", - "outputs" : ["Add_19869"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_19760", "Reshape_19863" ], - "name" : "Add_19870", - "op" : "Add", - "outputs" : ["Add_19870"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19864", "Reshape_19862" ], - "name" : "Add_19871", - "op" : "Add", - "outputs" : ["Add_19871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19762", "Reshape_19865" ], - "name" : "Add_19872", - "op" : "Add", - "outputs" : ["Add_19872"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_19866"], - "name" : "Reshape_19873", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_19873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_19764", "Reshape_19867" ], - "name" : "Add_19874", - "op" : "Add", - "outputs" : ["Add_19874"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_19868", "Parameter_13831" ], - "name" : "Multiply_19875", - "op" : "Multiply", - "outputs" : ["Multiply_19875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18087", "Add_19868" ], - "name" : "Multiply_19876", - "op" : "Multiply", - "outputs" : ["Multiply_19876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19871", "Parameter_18099" ], - "name" : "Multiply_19877", - "op" : "Multiply", - "outputs" : ["Multiply_19877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18130", "Add_19871" ], - "name" : "Multiply_19878", - "op" : "Multiply", - "outputs" : ["Multiply_19878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19779", "Reshape_19873" ], - "name" : "Add_19879", - "op" : "Add", - "outputs" : ["Add_19879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_19875"], - "name" : "Negative_19880", - "op" : "Negative", - "outputs" : ["Negative_19880"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19876", "Multiply_19461" ], - "name" : "Divide_19881", - "op" : "Divide", - "outputs" : ["Divide_19881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19877"], - "name" : "Negative_19882", - "op" : "Negative", - "outputs" : ["Negative_19882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19878", "Multiply_19462" ], - "name" : "Divide_19883", - "op" : "Divide", - "outputs" : ["Divide_19883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19774", "Add_19879" ], - "lower_bounds" : [ 0, 57, 0 ], - "name" : "ReplaceSlice_19884", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19884"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 58, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_19880", "Parameter_18087" ], - "name" : "Multiply_19885", - "op" : "Multiply", - "outputs" : ["Multiply_19885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19784", "Divide_19881" ], - "name" : "Add_19886", - "op" : "Add", - "outputs" : ["Add_19886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19882", "Parameter_18130" ], - "name" : "Multiply_19887", - "op" : "Multiply", - "outputs" : ["Multiply_19887"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19789", "Divide_19883" ], - "name" : "Add_19888", - "op" : "Add", - "outputs" : ["Add_19888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19884"], - "lower_bounds" : [ 0, 56, 0 ], - "name" : "Slice_19889", - "op" : "Slice", - "outputs" : ["Slice_19889"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 57, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_19885", "Parameter_18088" ], - "name" : "Divide_19890", - "op" : "Divide", - "outputs" : ["Divide_19890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19886", "Parameter_13834" ], - "name" : "Multiply_19891", - "op" : "Multiply", - "outputs" : ["Multiply_19891"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18072", "Add_19886" ], - "name" : "Multiply_19892", - "op" : "Multiply", - "outputs" : ["Multiply_19892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19886", "Parameter_13843" ], - "name" : "Multiply_19893", - "op" : "Multiply", - "outputs" : ["Multiply_19893"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18080", "Add_19886" ], - "name" : "Multiply_19894", - "op" : "Multiply", - "outputs" : ["Multiply_19894"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19887", "Parameter_18131" ], - "name" : "Divide_19895", - "op" : "Divide", - "outputs" : ["Divide_19895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19888", "Parameter_18102" ], - "name" : "Multiply_19896", - "op" : "Multiply", - "outputs" : ["Multiply_19896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18115", "Add_19888" ], - "name" : "Multiply_19897", - "op" : "Multiply", - "outputs" : ["Multiply_19897"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19888", "Parameter_18035" ], - "name" : "Multiply_19898", - "op" : "Multiply", - "outputs" : ["Multiply_19898"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18123", "Add_19888" ], - "name" : "Multiply_19899", - "op" : "Multiply", - "outputs" : ["Multiply_19899"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19890", "Parameter_18089" ], - "name" : "Multiply_19900", - "op" : "Multiply", - "outputs" : ["Multiply_19900"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19891"], - "name" : "Negative_19901", - "op" : "Negative", - "outputs" : ["Negative_19901"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19892", "Multiply_19457" ], - "name" : "Divide_19902", - "op" : "Divide", - "outputs" : ["Divide_19902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19893"], - "name" : "Negative_19903", - "op" : "Negative", - "outputs" : ["Negative_19903"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19895", "Parameter_18132" ], - "name" : "Multiply_19904", - "op" : "Multiply", - "outputs" : ["Multiply_19904"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19896"], - "name" : "Negative_19905", - "op" : "Negative", - "outputs" : ["Negative_19905"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19897", "Multiply_19458" ], - "name" : "Divide_19906", - "op" : "Divide", - "outputs" : ["Divide_19906"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19898"], - "name" : "Negative_19907", - "op" : "Negative", - "outputs" : ["Negative_19907"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19900"], - "name" : "Negative_19908", - "op" : "Negative", - "outputs" : ["Negative_19908"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19901", "Parameter_18072" ], - "name" : "Multiply_19909", - "op" : "Multiply", - "outputs" : ["Multiply_19909"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18542", "Divide_19902" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19910", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19910"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19903", "Parameter_18080" ], - "name" : "Multiply_19911", - "op" : "Multiply", - "outputs" : ["Multiply_19911"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19904"], - "name" : "Negative_19912", - "op" : "Negative", - "outputs" : ["Negative_19912"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19905", "Parameter_18115" ], - "name" : "Multiply_19913", - "op" : "Multiply", - "outputs" : ["Multiply_19913"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18601", "Divide_19906" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_19914", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19914"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_19907", "Parameter_18123" ], - "name" : "Multiply_19915", - "op" : "Multiply", - "outputs" : ["Multiply_19915"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19909", "Parameter_18073" ], - "name" : "Divide_19916", - "op" : "Divide", - "outputs" : ["Divide_19916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19910"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19917", - "op" : "Slice", - "outputs" : ["Slice_19917"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19911", "Parameter_18081" ], - "name" : "Divide_19918", - "op" : "Divide", - "outputs" : ["Divide_19918"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19913", "Parameter_18116" ], - "name" : "Divide_19919", - "op" : "Divide", - "outputs" : ["Divide_19919"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19914"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_19920", - "op" : "Slice", - "outputs" : ["Slice_19920"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19915", "Parameter_18124" ], - "name" : "Divide_19921", - "op" : "Divide", - "outputs" : ["Divide_19921"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19916", "Parameter_18074" ], - "name" : "Multiply_19922", - "op" : "Multiply", - "outputs" : ["Multiply_19922"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19918", "Parameter_18082" ], - "name" : "Multiply_19923", - "op" : "Multiply", - "outputs" : ["Multiply_19923"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19919", "Parameter_18117" ], - "name" : "Multiply_19924", - "op" : "Multiply", - "outputs" : ["Multiply_19924"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_19921", "Parameter_18125" ], - "name" : "Multiply_19925", - "op" : "Multiply", - "outputs" : ["Multiply_19925"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19922"], - "name" : "Negative_19926", - "op" : "Negative", - "outputs" : ["Negative_19926"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19923"], - "name" : "Negative_19927", - "op" : "Negative", - "outputs" : ["Negative_19927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19924"], - "name" : "Negative_19928", - "op" : "Negative", - "outputs" : ["Negative_19928"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19925"], - "name" : "Negative_19929", - "op" : "Negative", - "outputs" : ["Negative_19929"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19917", "Negative_19926" ], - "name" : "Add_19930", - "op" : "Add", - "outputs" : ["Add_19930"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19920", "Negative_19928" ], - "name" : "Add_19931", - "op" : "Add", - "outputs" : ["Add_19931"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19910", "Add_19930" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19932", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19932"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19914", "Add_19931" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_19933", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19933"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19932"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19934", - "op" : "Slice", - "outputs" : ["Slice_19934"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19933"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_19935", - "op" : "Slice", - "outputs" : ["Slice_19935"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19934", "Negative_19927" ], - "name" : "Add_19936", - "op" : "Add", - "outputs" : ["Add_19936"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19935", "Negative_19929" ], - "name" : "Add_19937", - "op" : "Add", - "outputs" : ["Add_19937"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19932", "Add_19936" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19938", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19938"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19933", "Add_19937" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_19939", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19939"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19938"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19940", - "op" : "Slice", - "outputs" : ["Slice_19940"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19939"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_19941", - "op" : "Slice", - "outputs" : ["Slice_19941"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19940", "Negative_19908" ], - "name" : "Add_19942", - "op" : "Add", - "outputs" : ["Add_19942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19941", "Negative_19912" ], - "name" : "Add_19943", - "op" : "Add", - "outputs" : ["Add_19943"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19938", "Add_19942" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19944", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19944"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_19939", "Add_19943" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_19945", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19945"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19944"], - "name" : "Sum_19946", - "op" : "Sum", - "outputs" : ["Sum_19946"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19944"], - "name" : "Reshape_19947", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19947"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19452", "ReplaceSlice_19944" ], - "name" : "Dot_19948", - "op" : "Dot", - "outputs" : ["Dot_19948"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19944"], - "name" : "Sum_19949", - "op" : "Sum", - "outputs" : ["Sum_19949"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19944"], - "name" : "Reshape_19950", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19950"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19454", "ReplaceSlice_19944" ], - "name" : "Dot_19951", - "op" : "Dot", - "outputs" : ["Dot_19951"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19945"], - "name" : "Sum_19952", - "op" : "Sum", - "outputs" : ["Sum_19952"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19945"], - "name" : "Reshape_19953", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19953"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19453", "ReplaceSlice_19945" ], - "name" : "Dot_19954", - "op" : "Dot", - "outputs" : ["Dot_19954"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_19945"], - "name" : "Sum_19955", - "op" : "Sum", - "outputs" : ["Sum_19955"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_19945"], - "name" : "Reshape_19956", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_19956"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18718", "ReplaceSlice_19945" ], - "name" : "Dot_19957", - "op" : "Dot", - "outputs" : ["Dot_19957"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19848", "Sum_19946" ], - "name" : "Add_19958", - "op" : "Add", - "outputs" : ["Add_19958"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13840", "Reshape_19947" ], - "name" : "Dot_19959", - "op" : "Dot", - "outputs" : ["Dot_19959"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19948"], - "name" : "Reshape_19960", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19960"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19851", "Sum_19949" ], - "name" : "Add_19961", - "op" : "Add", - "outputs" : ["Add_19961"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18032", "Reshape_19950" ], - "name" : "Dot_19962", - "op" : "Dot", - "outputs" : ["Dot_19962"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19951"], - "name" : "Reshape_19963", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19963"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19854", "Sum_19952" ], - "name" : "Add_19964", - "op" : "Add", - "outputs" : ["Add_19964"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18108", "Reshape_19953" ], - "name" : "Dot_19965", - "op" : "Dot", - "outputs" : ["Dot_19965"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19954"], - "name" : "Reshape_19966", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19966"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19857", "Sum_19955" ], - "name" : "Add_19967", - "op" : "Add", - "outputs" : ["Add_19967"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18112", "Reshape_19956" ], - "name" : "Dot_19968", - "op" : "Dot", - "outputs" : ["Dot_19968"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_19957"], - "name" : "Reshape_19969", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_19969"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19959"], - "name" : "Reshape_19970", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19960"], - "name" : "Reshape_19971", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19971"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19962"], - "name" : "Reshape_19972", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19963"], - "name" : "Reshape_19973", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19973"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19965"], - "name" : "Reshape_19974", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19974"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19966"], - "name" : "Reshape_19975", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19975"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_19968"], - "name" : "Reshape_19976", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_19976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19969"], - "name" : "Reshape_19977", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_19977"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19970", "Reshape_18838" ], - "name" : "Add_19978", - "op" : "Add", - "outputs" : ["Add_19978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19869", "Reshape_19971" ], - "name" : "Add_19979", - "op" : "Add", - "outputs" : ["Add_19979"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_19870", "Reshape_19973" ], - "name" : "Add_19980", - "op" : "Add", - "outputs" : ["Add_19980"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_19974", "Reshape_19972" ], - "name" : "Add_19981", - "op" : "Add", - "outputs" : ["Add_19981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19872", "Reshape_19975" ], - "name" : "Add_19982", - "op" : "Add", - "outputs" : ["Add_19982"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_19976"], - "name" : "Reshape_19983", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_19983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_19874", "Reshape_19977" ], - "name" : "Add_19984", - "op" : "Add", - "outputs" : ["Add_19984"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_19978", "Parameter_13842" ], - "name" : "Multiply_19985", - "op" : "Multiply", - "outputs" : ["Multiply_19985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18022", "Add_19978" ], - "name" : "Multiply_19986", - "op" : "Multiply", - "outputs" : ["Multiply_19986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19981", "Parameter_18034" ], - "name" : "Multiply_19987", - "op" : "Multiply", - "outputs" : ["Multiply_19987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18065", "Add_19981" ], - "name" : "Multiply_19988", - "op" : "Multiply", - "outputs" : ["Multiply_19988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19889", "Reshape_19983" ], - "name" : "Add_19989", - "op" : "Add", - "outputs" : ["Add_19989"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_19985"], - "name" : "Negative_19990", - "op" : "Negative", - "outputs" : ["Negative_19990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19986", "Multiply_19450" ], - "name" : "Divide_19991", - "op" : "Divide", - "outputs" : ["Divide_19991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_19987"], - "name" : "Negative_19992", - "op" : "Negative", - "outputs" : ["Negative_19992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19988", "Multiply_19451" ], - "name" : "Divide_19993", - "op" : "Divide", - "outputs" : ["Divide_19993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19884", "Add_19989" ], - "lower_bounds" : [ 0, 56, 0 ], - "name" : "ReplaceSlice_19994", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_19994"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 57, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_19990", "Parameter_18022" ], - "name" : "Multiply_19995", - "op" : "Multiply", - "outputs" : ["Multiply_19995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19894", "Divide_19991" ], - "name" : "Add_19996", - "op" : "Add", - "outputs" : ["Add_19996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_19992", "Parameter_18065" ], - "name" : "Multiply_19997", - "op" : "Multiply", - "outputs" : ["Multiply_19997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19899", "Divide_19993" ], - "name" : "Add_19998", - "op" : "Add", - "outputs" : ["Add_19998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_19994"], - "lower_bounds" : [ 0, 55, 0 ], - "name" : "Slice_19999", - "op" : "Slice", - "outputs" : ["Slice_19999"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 56, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_19995", "Parameter_18023" ], - "name" : "Divide_20000", - "op" : "Divide", - "outputs" : ["Divide_20000"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19996", "Parameter_13845" ], - "name" : "Multiply_20001", - "op" : "Multiply", - "outputs" : ["Multiply_20001"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18007", "Add_19996" ], - "name" : "Multiply_20002", - "op" : "Multiply", - "outputs" : ["Multiply_20002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19996", "Parameter_13854" ], - "name" : "Multiply_20003", - "op" : "Multiply", - "outputs" : ["Multiply_20003"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18015", "Add_19996" ], - "name" : "Multiply_20004", - "op" : "Multiply", - "outputs" : ["Multiply_20004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_19997", "Parameter_18066" ], - "name" : "Divide_20005", - "op" : "Divide", - "outputs" : ["Divide_20005"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19998", "Parameter_18037" ], - "name" : "Multiply_20006", - "op" : "Multiply", - "outputs" : ["Multiply_20006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18050", "Add_19998" ], - "name" : "Multiply_20007", - "op" : "Multiply", - "outputs" : ["Multiply_20007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19998", "Parameter_17970" ], - "name" : "Multiply_20008", - "op" : "Multiply", - "outputs" : ["Multiply_20008"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18058", "Add_19998" ], - "name" : "Multiply_20009", - "op" : "Multiply", - "outputs" : ["Multiply_20009"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20000", "Parameter_18024" ], - "name" : "Multiply_20010", - "op" : "Multiply", - "outputs" : ["Multiply_20010"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20001"], - "name" : "Negative_20011", - "op" : "Negative", - "outputs" : ["Negative_20011"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20002", "Multiply_19446" ], - "name" : "Divide_20012", - "op" : "Divide", - "outputs" : ["Divide_20012"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20003"], - "name" : "Negative_20013", - "op" : "Negative", - "outputs" : ["Negative_20013"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20005", "Parameter_18067" ], - "name" : "Multiply_20014", - "op" : "Multiply", - "outputs" : ["Multiply_20014"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20006"], - "name" : "Negative_20015", - "op" : "Negative", - "outputs" : ["Negative_20015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20007", "Multiply_19447" ], - "name" : "Divide_20016", - "op" : "Divide", - "outputs" : ["Divide_20016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20008"], - "name" : "Negative_20017", - "op" : "Negative", - "outputs" : ["Negative_20017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20010"], - "name" : "Negative_20018", - "op" : "Negative", - "outputs" : ["Negative_20018"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20011", "Parameter_18007" ], - "name" : "Multiply_20019", - "op" : "Multiply", - "outputs" : ["Multiply_20019"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18543", "Divide_20012" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20020", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20020"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20013", "Parameter_18015" ], - "name" : "Multiply_20021", - "op" : "Multiply", - "outputs" : ["Multiply_20021"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20014"], - "name" : "Negative_20022", - "op" : "Negative", - "outputs" : ["Negative_20022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20015", "Parameter_18050" ], - "name" : "Multiply_20023", - "op" : "Multiply", - "outputs" : ["Multiply_20023"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18602", "Divide_20016" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20024", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20024"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20017", "Parameter_18058" ], - "name" : "Multiply_20025", - "op" : "Multiply", - "outputs" : ["Multiply_20025"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20019", "Parameter_18008" ], - "name" : "Divide_20026", - "op" : "Divide", - "outputs" : ["Divide_20026"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20020"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20027", - "op" : "Slice", - "outputs" : ["Slice_20027"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20021", "Parameter_18016" ], - "name" : "Divide_20028", - "op" : "Divide", - "outputs" : ["Divide_20028"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20023", "Parameter_18051" ], - "name" : "Divide_20029", - "op" : "Divide", - "outputs" : ["Divide_20029"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20024"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20030", - "op" : "Slice", - "outputs" : ["Slice_20030"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20025", "Parameter_18059" ], - "name" : "Divide_20031", - "op" : "Divide", - "outputs" : ["Divide_20031"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20026", "Parameter_18009" ], - "name" : "Multiply_20032", - "op" : "Multiply", - "outputs" : ["Multiply_20032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20028", "Parameter_18017" ], - "name" : "Multiply_20033", - "op" : "Multiply", - "outputs" : ["Multiply_20033"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20029", "Parameter_18052" ], - "name" : "Multiply_20034", - "op" : "Multiply", - "outputs" : ["Multiply_20034"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20031", "Parameter_18060" ], - "name" : "Multiply_20035", - "op" : "Multiply", - "outputs" : ["Multiply_20035"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20032"], - "name" : "Negative_20036", - "op" : "Negative", - "outputs" : ["Negative_20036"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20033"], - "name" : "Negative_20037", - "op" : "Negative", - "outputs" : ["Negative_20037"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20034"], - "name" : "Negative_20038", - "op" : "Negative", - "outputs" : ["Negative_20038"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20035"], - "name" : "Negative_20039", - "op" : "Negative", - "outputs" : ["Negative_20039"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20027", "Negative_20036" ], - "name" : "Add_20040", - "op" : "Add", - "outputs" : ["Add_20040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20030", "Negative_20038" ], - "name" : "Add_20041", - "op" : "Add", - "outputs" : ["Add_20041"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20020", "Add_20040" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20042", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20042"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20024", "Add_20041" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20043", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20043"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20042"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20044", - "op" : "Slice", - "outputs" : ["Slice_20044"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20043"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20045", - "op" : "Slice", - "outputs" : ["Slice_20045"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20044", "Negative_20037" ], - "name" : "Add_20046", - "op" : "Add", - "outputs" : ["Add_20046"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20045", "Negative_20039" ], - "name" : "Add_20047", - "op" : "Add", - "outputs" : ["Add_20047"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20042", "Add_20046" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20048", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20048"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20043", "Add_20047" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20049", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20049"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20048"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20050", - "op" : "Slice", - "outputs" : ["Slice_20050"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20049"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20051", - "op" : "Slice", - "outputs" : ["Slice_20051"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20050", "Negative_20018" ], - "name" : "Add_20052", - "op" : "Add", - "outputs" : ["Add_20052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20051", "Negative_20022" ], - "name" : "Add_20053", - "op" : "Add", - "outputs" : ["Add_20053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20048", "Add_20052" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20054", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20054"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20049", "Add_20053" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20055", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20055"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20054"], - "name" : "Sum_20056", - "op" : "Sum", - "outputs" : ["Sum_20056"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20054"], - "name" : "Reshape_20057", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20057"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19441", "ReplaceSlice_20054" ], - "name" : "Dot_20058", - "op" : "Dot", - "outputs" : ["Dot_20058"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20054"], - "name" : "Sum_20059", - "op" : "Sum", - "outputs" : ["Sum_20059"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20054"], - "name" : "Reshape_20060", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20060"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19443", "ReplaceSlice_20054" ], - "name" : "Dot_20061", - "op" : "Dot", - "outputs" : ["Dot_20061"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20055"], - "name" : "Sum_20062", - "op" : "Sum", - "outputs" : ["Sum_20062"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20055"], - "name" : "Reshape_20063", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20063"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19442", "ReplaceSlice_20055" ], - "name" : "Dot_20064", - "op" : "Dot", - "outputs" : ["Dot_20064"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20055"], - "name" : "Sum_20065", - "op" : "Sum", - "outputs" : ["Sum_20065"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20055"], - "name" : "Reshape_20066", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20066"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18717", "ReplaceSlice_20055" ], - "name" : "Dot_20067", - "op" : "Dot", - "outputs" : ["Dot_20067"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19958", "Sum_20056" ], - "name" : "Add_20068", - "op" : "Add", - "outputs" : ["Add_20068"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13851", "Reshape_20057" ], - "name" : "Dot_20069", - "op" : "Dot", - "outputs" : ["Dot_20069"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20058"], - "name" : "Reshape_20070", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20070"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19961", "Sum_20059" ], - "name" : "Add_20071", - "op" : "Add", - "outputs" : ["Add_20071"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17967", "Reshape_20060" ], - "name" : "Dot_20072", - "op" : "Dot", - "outputs" : ["Dot_20072"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20061"], - "name" : "Reshape_20073", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20073"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19964", "Sum_20062" ], - "name" : "Add_20074", - "op" : "Add", - "outputs" : ["Add_20074"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18043", "Reshape_20063" ], - "name" : "Dot_20075", - "op" : "Dot", - "outputs" : ["Dot_20075"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20064"], - "name" : "Reshape_20076", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20076"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_19967", "Sum_20065" ], - "name" : "Add_20077", - "op" : "Add", - "outputs" : ["Add_20077"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_18047", "Reshape_20066" ], - "name" : "Dot_20078", - "op" : "Dot", - "outputs" : ["Dot_20078"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20067"], - "name" : "Reshape_20079", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20079"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20069"], - "name" : "Reshape_20080", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20080"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20070"], - "name" : "Reshape_20081", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20081"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20072"], - "name" : "Reshape_20082", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20073"], - "name" : "Reshape_20083", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20083"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20075"], - "name" : "Reshape_20084", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20084"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20076"], - "name" : "Reshape_20085", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20085"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20078"], - "name" : "Reshape_20086", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20079"], - "name" : "Reshape_20087", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20087"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20080", "Reshape_18837" ], - "name" : "Add_20088", - "op" : "Add", - "outputs" : ["Add_20088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19979", "Reshape_20081" ], - "name" : "Add_20089", - "op" : "Add", - "outputs" : ["Add_20089"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_19980", "Reshape_20083" ], - "name" : "Add_20090", - "op" : "Add", - "outputs" : ["Add_20090"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20084", "Reshape_20082" ], - "name" : "Add_20091", - "op" : "Add", - "outputs" : ["Add_20091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_19982", "Reshape_20085" ], - "name" : "Add_20092", - "op" : "Add", - "outputs" : ["Add_20092"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20086"], - "name" : "Reshape_20093", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_19984", "Reshape_20087" ], - "name" : "Add_20094", - "op" : "Add", - "outputs" : ["Add_20094"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20088", "Parameter_13853" ], - "name" : "Multiply_20095", - "op" : "Multiply", - "outputs" : ["Multiply_20095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17957", "Add_20088" ], - "name" : "Multiply_20096", - "op" : "Multiply", - "outputs" : ["Multiply_20096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20091", "Parameter_17969" ], - "name" : "Multiply_20097", - "op" : "Multiply", - "outputs" : ["Multiply_20097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_18000", "Add_20091" ], - "name" : "Multiply_20098", - "op" : "Multiply", - "outputs" : ["Multiply_20098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_19999", "Reshape_20093" ], - "name" : "Add_20099", - "op" : "Add", - "outputs" : ["Add_20099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20095"], - "name" : "Negative_20100", - "op" : "Negative", - "outputs" : ["Negative_20100"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20096", "Multiply_19439" ], - "name" : "Divide_20101", - "op" : "Divide", - "outputs" : ["Divide_20101"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20097"], - "name" : "Negative_20102", - "op" : "Negative", - "outputs" : ["Negative_20102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20098", "Multiply_19440" ], - "name" : "Divide_20103", - "op" : "Divide", - "outputs" : ["Divide_20103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_19994", "Add_20099" ], - "lower_bounds" : [ 0, 55, 0 ], - "name" : "ReplaceSlice_20104", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20104"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 56, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20100", "Parameter_17957" ], - "name" : "Multiply_20105", - "op" : "Multiply", - "outputs" : ["Multiply_20105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20004", "Divide_20101" ], - "name" : "Add_20106", - "op" : "Add", - "outputs" : ["Add_20106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20102", "Parameter_18000" ], - "name" : "Multiply_20107", - "op" : "Multiply", - "outputs" : ["Multiply_20107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20009", "Divide_20103" ], - "name" : "Add_20108", - "op" : "Add", - "outputs" : ["Add_20108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20104"], - "lower_bounds" : [ 0, 54, 0 ], - "name" : "Slice_20109", - "op" : "Slice", - "outputs" : ["Slice_20109"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 55, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20105", "Parameter_17958" ], - "name" : "Divide_20110", - "op" : "Divide", - "outputs" : ["Divide_20110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20106", "Parameter_13856" ], - "name" : "Multiply_20111", - "op" : "Multiply", - "outputs" : ["Multiply_20111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17942", "Add_20106" ], - "name" : "Multiply_20112", - "op" : "Multiply", - "outputs" : ["Multiply_20112"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20106", "Parameter_13865" ], - "name" : "Multiply_20113", - "op" : "Multiply", - "outputs" : ["Multiply_20113"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17950", "Add_20106" ], - "name" : "Multiply_20114", - "op" : "Multiply", - "outputs" : ["Multiply_20114"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20107", "Parameter_18001" ], - "name" : "Divide_20115", - "op" : "Divide", - "outputs" : ["Divide_20115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20108", "Parameter_17972" ], - "name" : "Multiply_20116", - "op" : "Multiply", - "outputs" : ["Multiply_20116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17985", "Add_20108" ], - "name" : "Multiply_20117", - "op" : "Multiply", - "outputs" : ["Multiply_20117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20108", "Parameter_17905" ], - "name" : "Multiply_20118", - "op" : "Multiply", - "outputs" : ["Multiply_20118"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17993", "Add_20108" ], - "name" : "Multiply_20119", - "op" : "Multiply", - "outputs" : ["Multiply_20119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20110", "Parameter_17959" ], - "name" : "Multiply_20120", - "op" : "Multiply", - "outputs" : ["Multiply_20120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20111"], - "name" : "Negative_20121", - "op" : "Negative", - "outputs" : ["Negative_20121"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20112", "Multiply_19435" ], - "name" : "Divide_20122", - "op" : "Divide", - "outputs" : ["Divide_20122"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20113"], - "name" : "Negative_20123", - "op" : "Negative", - "outputs" : ["Negative_20123"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20115", "Parameter_18002" ], - "name" : "Multiply_20124", - "op" : "Multiply", - "outputs" : ["Multiply_20124"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20116"], - "name" : "Negative_20125", - "op" : "Negative", - "outputs" : ["Negative_20125"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20117", "Multiply_19436" ], - "name" : "Divide_20126", - "op" : "Divide", - "outputs" : ["Divide_20126"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20118"], - "name" : "Negative_20127", - "op" : "Negative", - "outputs" : ["Negative_20127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20120"], - "name" : "Negative_20128", - "op" : "Negative", - "outputs" : ["Negative_20128"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20121", "Parameter_17942" ], - "name" : "Multiply_20129", - "op" : "Multiply", - "outputs" : ["Multiply_20129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18544", "Divide_20122" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20130", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20130"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20123", "Parameter_17950" ], - "name" : "Multiply_20131", - "op" : "Multiply", - "outputs" : ["Multiply_20131"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20124"], - "name" : "Negative_20132", - "op" : "Negative", - "outputs" : ["Negative_20132"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20125", "Parameter_17985" ], - "name" : "Multiply_20133", - "op" : "Multiply", - "outputs" : ["Multiply_20133"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18603", "Divide_20126" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20134", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20134"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20127", "Parameter_17993" ], - "name" : "Multiply_20135", - "op" : "Multiply", - "outputs" : ["Multiply_20135"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20129", "Parameter_17943" ], - "name" : "Divide_20136", - "op" : "Divide", - "outputs" : ["Divide_20136"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20130"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20137", - "op" : "Slice", - "outputs" : ["Slice_20137"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20131", "Parameter_17951" ], - "name" : "Divide_20138", - "op" : "Divide", - "outputs" : ["Divide_20138"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20133", "Parameter_17986" ], - "name" : "Divide_20139", - "op" : "Divide", - "outputs" : ["Divide_20139"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20134"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20140", - "op" : "Slice", - "outputs" : ["Slice_20140"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20135", "Parameter_17994" ], - "name" : "Divide_20141", - "op" : "Divide", - "outputs" : ["Divide_20141"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20136", "Parameter_17944" ], - "name" : "Multiply_20142", - "op" : "Multiply", - "outputs" : ["Multiply_20142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20138", "Parameter_17952" ], - "name" : "Multiply_20143", - "op" : "Multiply", - "outputs" : ["Multiply_20143"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20139", "Parameter_17987" ], - "name" : "Multiply_20144", - "op" : "Multiply", - "outputs" : ["Multiply_20144"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20141", "Parameter_17995" ], - "name" : "Multiply_20145", - "op" : "Multiply", - "outputs" : ["Multiply_20145"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20142"], - "name" : "Negative_20146", - "op" : "Negative", - "outputs" : ["Negative_20146"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20143"], - "name" : "Negative_20147", - "op" : "Negative", - "outputs" : ["Negative_20147"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20144"], - "name" : "Negative_20148", - "op" : "Negative", - "outputs" : ["Negative_20148"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20145"], - "name" : "Negative_20149", - "op" : "Negative", - "outputs" : ["Negative_20149"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20137", "Negative_20146" ], - "name" : "Add_20150", - "op" : "Add", - "outputs" : ["Add_20150"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20140", "Negative_20148" ], - "name" : "Add_20151", - "op" : "Add", - "outputs" : ["Add_20151"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20130", "Add_20150" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20152", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20152"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20134", "Add_20151" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20153", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20153"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20152"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20154", - "op" : "Slice", - "outputs" : ["Slice_20154"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20153"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20155", - "op" : "Slice", - "outputs" : ["Slice_20155"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20154", "Negative_20147" ], - "name" : "Add_20156", - "op" : "Add", - "outputs" : ["Add_20156"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20155", "Negative_20149" ], - "name" : "Add_20157", - "op" : "Add", - "outputs" : ["Add_20157"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20152", "Add_20156" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20158", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20158"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20153", "Add_20157" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20159", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20159"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20158"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20160", - "op" : "Slice", - "outputs" : ["Slice_20160"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20159"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20161", - "op" : "Slice", - "outputs" : ["Slice_20161"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20160", "Negative_20128" ], - "name" : "Add_20162", - "op" : "Add", - "outputs" : ["Add_20162"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20161", "Negative_20132" ], - "name" : "Add_20163", - "op" : "Add", - "outputs" : ["Add_20163"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20158", "Add_20162" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20164", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20164"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20159", "Add_20163" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20165", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20165"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20164"], - "name" : "Sum_20166", - "op" : "Sum", - "outputs" : ["Sum_20166"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20164"], - "name" : "Reshape_20167", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20167"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19430", "ReplaceSlice_20164" ], - "name" : "Dot_20168", - "op" : "Dot", - "outputs" : ["Dot_20168"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20164"], - "name" : "Sum_20169", - "op" : "Sum", - "outputs" : ["Sum_20169"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20164"], - "name" : "Reshape_20170", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20170"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19432", "ReplaceSlice_20164" ], - "name" : "Dot_20171", - "op" : "Dot", - "outputs" : ["Dot_20171"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20165"], - "name" : "Sum_20172", - "op" : "Sum", - "outputs" : ["Sum_20172"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20165"], - "name" : "Reshape_20173", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20173"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19431", "ReplaceSlice_20165" ], - "name" : "Dot_20174", - "op" : "Dot", - "outputs" : ["Dot_20174"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20165"], - "name" : "Sum_20175", - "op" : "Sum", - "outputs" : ["Sum_20175"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20165"], - "name" : "Reshape_20176", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20176"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18716", "ReplaceSlice_20165" ], - "name" : "Dot_20177", - "op" : "Dot", - "outputs" : ["Dot_20177"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20068", "Sum_20166" ], - "name" : "Add_20178", - "op" : "Add", - "outputs" : ["Add_20178"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13862", "Reshape_20167" ], - "name" : "Dot_20179", - "op" : "Dot", - "outputs" : ["Dot_20179"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20168"], - "name" : "Reshape_20180", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20180"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20071", "Sum_20169" ], - "name" : "Add_20181", - "op" : "Add", - "outputs" : ["Add_20181"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17902", "Reshape_20170" ], - "name" : "Dot_20182", - "op" : "Dot", - "outputs" : ["Dot_20182"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20171"], - "name" : "Reshape_20183", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20183"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20074", "Sum_20172" ], - "name" : "Add_20184", - "op" : "Add", - "outputs" : ["Add_20184"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17978", "Reshape_20173" ], - "name" : "Dot_20185", - "op" : "Dot", - "outputs" : ["Dot_20185"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20174"], - "name" : "Reshape_20186", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20186"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20077", "Sum_20175" ], - "name" : "Add_20187", - "op" : "Add", - "outputs" : ["Add_20187"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17982", "Reshape_20176" ], - "name" : "Dot_20188", - "op" : "Dot", - "outputs" : ["Dot_20188"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20177"], - "name" : "Reshape_20189", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20189"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20179"], - "name" : "Reshape_20190", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20180"], - "name" : "Reshape_20191", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20191"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20182"], - "name" : "Reshape_20192", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20183"], - "name" : "Reshape_20193", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20193"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20185"], - "name" : "Reshape_20194", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20186"], - "name" : "Reshape_20195", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20195"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20188"], - "name" : "Reshape_20196", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20189"], - "name" : "Reshape_20197", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20197"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20190", "Reshape_18836" ], - "name" : "Add_20198", - "op" : "Add", - "outputs" : ["Add_20198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20089", "Reshape_20191" ], - "name" : "Add_20199", - "op" : "Add", - "outputs" : ["Add_20199"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20090", "Reshape_20193" ], - "name" : "Add_20200", - "op" : "Add", - "outputs" : ["Add_20200"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20194", "Reshape_20192" ], - "name" : "Add_20201", - "op" : "Add", - "outputs" : ["Add_20201"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20092", "Reshape_20195" ], - "name" : "Add_20202", - "op" : "Add", - "outputs" : ["Add_20202"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20196"], - "name" : "Reshape_20203", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20094", "Reshape_20197" ], - "name" : "Add_20204", - "op" : "Add", - "outputs" : ["Add_20204"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20198", "Parameter_13864" ], - "name" : "Multiply_20205", - "op" : "Multiply", - "outputs" : ["Multiply_20205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17892", "Add_20198" ], - "name" : "Multiply_20206", - "op" : "Multiply", - "outputs" : ["Multiply_20206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20201", "Parameter_17904" ], - "name" : "Multiply_20207", - "op" : "Multiply", - "outputs" : ["Multiply_20207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17935", "Add_20201" ], - "name" : "Multiply_20208", - "op" : "Multiply", - "outputs" : ["Multiply_20208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20109", "Reshape_20203" ], - "name" : "Add_20209", - "op" : "Add", - "outputs" : ["Add_20209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20205"], - "name" : "Negative_20210", - "op" : "Negative", - "outputs" : ["Negative_20210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20206", "Multiply_19428" ], - "name" : "Divide_20211", - "op" : "Divide", - "outputs" : ["Divide_20211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20207"], - "name" : "Negative_20212", - "op" : "Negative", - "outputs" : ["Negative_20212"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20208", "Multiply_19429" ], - "name" : "Divide_20213", - "op" : "Divide", - "outputs" : ["Divide_20213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20104", "Add_20209" ], - "lower_bounds" : [ 0, 54, 0 ], - "name" : "ReplaceSlice_20214", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20214"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 55, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20210", "Parameter_17892" ], - "name" : "Multiply_20215", - "op" : "Multiply", - "outputs" : ["Multiply_20215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20114", "Divide_20211" ], - "name" : "Add_20216", - "op" : "Add", - "outputs" : ["Add_20216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20212", "Parameter_17935" ], - "name" : "Multiply_20217", - "op" : "Multiply", - "outputs" : ["Multiply_20217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20119", "Divide_20213" ], - "name" : "Add_20218", - "op" : "Add", - "outputs" : ["Add_20218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20214"], - "lower_bounds" : [ 0, 53, 0 ], - "name" : "Slice_20219", - "op" : "Slice", - "outputs" : ["Slice_20219"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 54, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20215", "Parameter_17893" ], - "name" : "Divide_20220", - "op" : "Divide", - "outputs" : ["Divide_20220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20216", "Parameter_13867" ], - "name" : "Multiply_20221", - "op" : "Multiply", - "outputs" : ["Multiply_20221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17877", "Add_20216" ], - "name" : "Multiply_20222", - "op" : "Multiply", - "outputs" : ["Multiply_20222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20216", "Parameter_13876" ], - "name" : "Multiply_20223", - "op" : "Multiply", - "outputs" : ["Multiply_20223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17885", "Add_20216" ], - "name" : "Multiply_20224", - "op" : "Multiply", - "outputs" : ["Multiply_20224"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20217", "Parameter_17936" ], - "name" : "Divide_20225", - "op" : "Divide", - "outputs" : ["Divide_20225"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20218", "Parameter_17907" ], - "name" : "Multiply_20226", - "op" : "Multiply", - "outputs" : ["Multiply_20226"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17920", "Add_20218" ], - "name" : "Multiply_20227", - "op" : "Multiply", - "outputs" : ["Multiply_20227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20218", "Parameter_17840" ], - "name" : "Multiply_20228", - "op" : "Multiply", - "outputs" : ["Multiply_20228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17928", "Add_20218" ], - "name" : "Multiply_20229", - "op" : "Multiply", - "outputs" : ["Multiply_20229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20220", "Parameter_17894" ], - "name" : "Multiply_20230", - "op" : "Multiply", - "outputs" : ["Multiply_20230"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20221"], - "name" : "Negative_20231", - "op" : "Negative", - "outputs" : ["Negative_20231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20222", "Multiply_19424" ], - "name" : "Divide_20232", - "op" : "Divide", - "outputs" : ["Divide_20232"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20223"], - "name" : "Negative_20233", - "op" : "Negative", - "outputs" : ["Negative_20233"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20225", "Parameter_17937" ], - "name" : "Multiply_20234", - "op" : "Multiply", - "outputs" : ["Multiply_20234"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20226"], - "name" : "Negative_20235", - "op" : "Negative", - "outputs" : ["Negative_20235"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20227", "Multiply_19425" ], - "name" : "Divide_20236", - "op" : "Divide", - "outputs" : ["Divide_20236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20228"], - "name" : "Negative_20237", - "op" : "Negative", - "outputs" : ["Negative_20237"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20230"], - "name" : "Negative_20238", - "op" : "Negative", - "outputs" : ["Negative_20238"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20231", "Parameter_17877" ], - "name" : "Multiply_20239", - "op" : "Multiply", - "outputs" : ["Multiply_20239"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18545", "Divide_20232" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20240", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20240"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20233", "Parameter_17885" ], - "name" : "Multiply_20241", - "op" : "Multiply", - "outputs" : ["Multiply_20241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20234"], - "name" : "Negative_20242", - "op" : "Negative", - "outputs" : ["Negative_20242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20235", "Parameter_17920" ], - "name" : "Multiply_20243", - "op" : "Multiply", - "outputs" : ["Multiply_20243"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18604", "Divide_20236" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20244", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20244"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20237", "Parameter_17928" ], - "name" : "Multiply_20245", - "op" : "Multiply", - "outputs" : ["Multiply_20245"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20239", "Parameter_17878" ], - "name" : "Divide_20246", - "op" : "Divide", - "outputs" : ["Divide_20246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20240"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20247", - "op" : "Slice", - "outputs" : ["Slice_20247"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20241", "Parameter_17886" ], - "name" : "Divide_20248", - "op" : "Divide", - "outputs" : ["Divide_20248"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20243", "Parameter_17921" ], - "name" : "Divide_20249", - "op" : "Divide", - "outputs" : ["Divide_20249"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20244"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20250", - "op" : "Slice", - "outputs" : ["Slice_20250"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20245", "Parameter_17929" ], - "name" : "Divide_20251", - "op" : "Divide", - "outputs" : ["Divide_20251"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20246", "Parameter_17879" ], - "name" : "Multiply_20252", - "op" : "Multiply", - "outputs" : ["Multiply_20252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20248", "Parameter_17887" ], - "name" : "Multiply_20253", - "op" : "Multiply", - "outputs" : ["Multiply_20253"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20249", "Parameter_17922" ], - "name" : "Multiply_20254", - "op" : "Multiply", - "outputs" : ["Multiply_20254"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20251", "Parameter_17930" ], - "name" : "Multiply_20255", - "op" : "Multiply", - "outputs" : ["Multiply_20255"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20252"], - "name" : "Negative_20256", - "op" : "Negative", - "outputs" : ["Negative_20256"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20253"], - "name" : "Negative_20257", - "op" : "Negative", - "outputs" : ["Negative_20257"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20254"], - "name" : "Negative_20258", - "op" : "Negative", - "outputs" : ["Negative_20258"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20255"], - "name" : "Negative_20259", - "op" : "Negative", - "outputs" : ["Negative_20259"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20247", "Negative_20256" ], - "name" : "Add_20260", - "op" : "Add", - "outputs" : ["Add_20260"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20250", "Negative_20258" ], - "name" : "Add_20261", - "op" : "Add", - "outputs" : ["Add_20261"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20240", "Add_20260" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20262", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20262"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20244", "Add_20261" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20263", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20263"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20262"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20264", - "op" : "Slice", - "outputs" : ["Slice_20264"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20263"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20265", - "op" : "Slice", - "outputs" : ["Slice_20265"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20264", "Negative_20257" ], - "name" : "Add_20266", - "op" : "Add", - "outputs" : ["Add_20266"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20265", "Negative_20259" ], - "name" : "Add_20267", - "op" : "Add", - "outputs" : ["Add_20267"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20262", "Add_20266" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20268", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20268"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20263", "Add_20267" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20269", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20269"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20268"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20270", - "op" : "Slice", - "outputs" : ["Slice_20270"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20269"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20271", - "op" : "Slice", - "outputs" : ["Slice_20271"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20270", "Negative_20238" ], - "name" : "Add_20272", - "op" : "Add", - "outputs" : ["Add_20272"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20271", "Negative_20242" ], - "name" : "Add_20273", - "op" : "Add", - "outputs" : ["Add_20273"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20268", "Add_20272" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20274", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20274"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20269", "Add_20273" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20275", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20275"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20274"], - "name" : "Sum_20276", - "op" : "Sum", - "outputs" : ["Sum_20276"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20274"], - "name" : "Reshape_20277", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20277"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19419", "ReplaceSlice_20274" ], - "name" : "Dot_20278", - "op" : "Dot", - "outputs" : ["Dot_20278"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20274"], - "name" : "Sum_20279", - "op" : "Sum", - "outputs" : ["Sum_20279"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20274"], - "name" : "Reshape_20280", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20280"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19421", "ReplaceSlice_20274" ], - "name" : "Dot_20281", - "op" : "Dot", - "outputs" : ["Dot_20281"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20275"], - "name" : "Sum_20282", - "op" : "Sum", - "outputs" : ["Sum_20282"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20275"], - "name" : "Reshape_20283", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20283"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19420", "ReplaceSlice_20275" ], - "name" : "Dot_20284", - "op" : "Dot", - "outputs" : ["Dot_20284"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20275"], - "name" : "Sum_20285", - "op" : "Sum", - "outputs" : ["Sum_20285"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20275"], - "name" : "Reshape_20286", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20286"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18715", "ReplaceSlice_20275" ], - "name" : "Dot_20287", - "op" : "Dot", - "outputs" : ["Dot_20287"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20178", "Sum_20276" ], - "name" : "Add_20288", - "op" : "Add", - "outputs" : ["Add_20288"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13873", "Reshape_20277" ], - "name" : "Dot_20289", - "op" : "Dot", - "outputs" : ["Dot_20289"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20278"], - "name" : "Reshape_20290", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20290"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20181", "Sum_20279" ], - "name" : "Add_20291", - "op" : "Add", - "outputs" : ["Add_20291"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17837", "Reshape_20280" ], - "name" : "Dot_20292", - "op" : "Dot", - "outputs" : ["Dot_20292"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20281"], - "name" : "Reshape_20293", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20293"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20184", "Sum_20282" ], - "name" : "Add_20294", - "op" : "Add", - "outputs" : ["Add_20294"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17913", "Reshape_20283" ], - "name" : "Dot_20295", - "op" : "Dot", - "outputs" : ["Dot_20295"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20284"], - "name" : "Reshape_20296", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20296"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20187", "Sum_20285" ], - "name" : "Add_20297", - "op" : "Add", - "outputs" : ["Add_20297"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17917", "Reshape_20286" ], - "name" : "Dot_20298", - "op" : "Dot", - "outputs" : ["Dot_20298"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20287"], - "name" : "Reshape_20299", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20299"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20289"], - "name" : "Reshape_20300", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20300"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20290"], - "name" : "Reshape_20301", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20301"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20292"], - "name" : "Reshape_20302", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20293"], - "name" : "Reshape_20303", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20303"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20295"], - "name" : "Reshape_20304", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20296"], - "name" : "Reshape_20305", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20305"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20298"], - "name" : "Reshape_20306", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20299"], - "name" : "Reshape_20307", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20307"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20300", "Reshape_18835" ], - "name" : "Add_20308", - "op" : "Add", - "outputs" : ["Add_20308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20199", "Reshape_20301" ], - "name" : "Add_20309", - "op" : "Add", - "outputs" : ["Add_20309"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20200", "Reshape_20303" ], - "name" : "Add_20310", - "op" : "Add", - "outputs" : ["Add_20310"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20304", "Reshape_20302" ], - "name" : "Add_20311", - "op" : "Add", - "outputs" : ["Add_20311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20202", "Reshape_20305" ], - "name" : "Add_20312", - "op" : "Add", - "outputs" : ["Add_20312"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20306"], - "name" : "Reshape_20313", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20204", "Reshape_20307" ], - "name" : "Add_20314", - "op" : "Add", - "outputs" : ["Add_20314"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20308", "Parameter_13875" ], - "name" : "Multiply_20315", - "op" : "Multiply", - "outputs" : ["Multiply_20315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17827", "Add_20308" ], - "name" : "Multiply_20316", - "op" : "Multiply", - "outputs" : ["Multiply_20316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20311", "Parameter_17839" ], - "name" : "Multiply_20317", - "op" : "Multiply", - "outputs" : ["Multiply_20317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17870", "Add_20311" ], - "name" : "Multiply_20318", - "op" : "Multiply", - "outputs" : ["Multiply_20318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20219", "Reshape_20313" ], - "name" : "Add_20319", - "op" : "Add", - "outputs" : ["Add_20319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20315"], - "name" : "Negative_20320", - "op" : "Negative", - "outputs" : ["Negative_20320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20316", "Multiply_19417" ], - "name" : "Divide_20321", - "op" : "Divide", - "outputs" : ["Divide_20321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20317"], - "name" : "Negative_20322", - "op" : "Negative", - "outputs" : ["Negative_20322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20318", "Multiply_19418" ], - "name" : "Divide_20323", - "op" : "Divide", - "outputs" : ["Divide_20323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20214", "Add_20319" ], - "lower_bounds" : [ 0, 53, 0 ], - "name" : "ReplaceSlice_20324", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20324"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 54, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20320", "Parameter_17827" ], - "name" : "Multiply_20325", - "op" : "Multiply", - "outputs" : ["Multiply_20325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20224", "Divide_20321" ], - "name" : "Add_20326", - "op" : "Add", - "outputs" : ["Add_20326"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20322", "Parameter_17870" ], - "name" : "Multiply_20327", - "op" : "Multiply", - "outputs" : ["Multiply_20327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20229", "Divide_20323" ], - "name" : "Add_20328", - "op" : "Add", - "outputs" : ["Add_20328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20324"], - "lower_bounds" : [ 0, 52, 0 ], - "name" : "Slice_20329", - "op" : "Slice", - "outputs" : ["Slice_20329"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 53, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20325", "Parameter_17828" ], - "name" : "Divide_20330", - "op" : "Divide", - "outputs" : ["Divide_20330"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20326", "Parameter_13878" ], - "name" : "Multiply_20331", - "op" : "Multiply", - "outputs" : ["Multiply_20331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17812", "Add_20326" ], - "name" : "Multiply_20332", - "op" : "Multiply", - "outputs" : ["Multiply_20332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20326", "Parameter_13887" ], - "name" : "Multiply_20333", - "op" : "Multiply", - "outputs" : ["Multiply_20333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17820", "Add_20326" ], - "name" : "Multiply_20334", - "op" : "Multiply", - "outputs" : ["Multiply_20334"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20327", "Parameter_17871" ], - "name" : "Divide_20335", - "op" : "Divide", - "outputs" : ["Divide_20335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20328", "Parameter_17842" ], - "name" : "Multiply_20336", - "op" : "Multiply", - "outputs" : ["Multiply_20336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17855", "Add_20328" ], - "name" : "Multiply_20337", - "op" : "Multiply", - "outputs" : ["Multiply_20337"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20328", "Parameter_17775" ], - "name" : "Multiply_20338", - "op" : "Multiply", - "outputs" : ["Multiply_20338"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17863", "Add_20328" ], - "name" : "Multiply_20339", - "op" : "Multiply", - "outputs" : ["Multiply_20339"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20330", "Parameter_17829" ], - "name" : "Multiply_20340", - "op" : "Multiply", - "outputs" : ["Multiply_20340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20331"], - "name" : "Negative_20341", - "op" : "Negative", - "outputs" : ["Negative_20341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20332", "Multiply_19413" ], - "name" : "Divide_20342", - "op" : "Divide", - "outputs" : ["Divide_20342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20333"], - "name" : "Negative_20343", - "op" : "Negative", - "outputs" : ["Negative_20343"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20335", "Parameter_17872" ], - "name" : "Multiply_20344", - "op" : "Multiply", - "outputs" : ["Multiply_20344"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20336"], - "name" : "Negative_20345", - "op" : "Negative", - "outputs" : ["Negative_20345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20337", "Multiply_19414" ], - "name" : "Divide_20346", - "op" : "Divide", - "outputs" : ["Divide_20346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20338"], - "name" : "Negative_20347", - "op" : "Negative", - "outputs" : ["Negative_20347"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20340"], - "name" : "Negative_20348", - "op" : "Negative", - "outputs" : ["Negative_20348"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20341", "Parameter_17812" ], - "name" : "Multiply_20349", - "op" : "Multiply", - "outputs" : ["Multiply_20349"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18546", "Divide_20342" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20350", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20350"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20343", "Parameter_17820" ], - "name" : "Multiply_20351", - "op" : "Multiply", - "outputs" : ["Multiply_20351"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20344"], - "name" : "Negative_20352", - "op" : "Negative", - "outputs" : ["Negative_20352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20345", "Parameter_17855" ], - "name" : "Multiply_20353", - "op" : "Multiply", - "outputs" : ["Multiply_20353"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18605", "Divide_20346" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20354", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20354"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20347", "Parameter_17863" ], - "name" : "Multiply_20355", - "op" : "Multiply", - "outputs" : ["Multiply_20355"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20349", "Parameter_17813" ], - "name" : "Divide_20356", - "op" : "Divide", - "outputs" : ["Divide_20356"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20350"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20357", - "op" : "Slice", - "outputs" : ["Slice_20357"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20351", "Parameter_17821" ], - "name" : "Divide_20358", - "op" : "Divide", - "outputs" : ["Divide_20358"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20353", "Parameter_17856" ], - "name" : "Divide_20359", - "op" : "Divide", - "outputs" : ["Divide_20359"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20354"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20360", - "op" : "Slice", - "outputs" : ["Slice_20360"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20355", "Parameter_17864" ], - "name" : "Divide_20361", - "op" : "Divide", - "outputs" : ["Divide_20361"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20356", "Parameter_17814" ], - "name" : "Multiply_20362", - "op" : "Multiply", - "outputs" : ["Multiply_20362"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20358", "Parameter_17822" ], - "name" : "Multiply_20363", - "op" : "Multiply", - "outputs" : ["Multiply_20363"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20359", "Parameter_17857" ], - "name" : "Multiply_20364", - "op" : "Multiply", - "outputs" : ["Multiply_20364"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20361", "Parameter_17865" ], - "name" : "Multiply_20365", - "op" : "Multiply", - "outputs" : ["Multiply_20365"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20362"], - "name" : "Negative_20366", - "op" : "Negative", - "outputs" : ["Negative_20366"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20363"], - "name" : "Negative_20367", - "op" : "Negative", - "outputs" : ["Negative_20367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20364"], - "name" : "Negative_20368", - "op" : "Negative", - "outputs" : ["Negative_20368"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20365"], - "name" : "Negative_20369", - "op" : "Negative", - "outputs" : ["Negative_20369"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20357", "Negative_20366" ], - "name" : "Add_20370", - "op" : "Add", - "outputs" : ["Add_20370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20360", "Negative_20368" ], - "name" : "Add_20371", - "op" : "Add", - "outputs" : ["Add_20371"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20350", "Add_20370" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20372", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20372"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20354", "Add_20371" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20373", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20373"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20372"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20374", - "op" : "Slice", - "outputs" : ["Slice_20374"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20373"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20375", - "op" : "Slice", - "outputs" : ["Slice_20375"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20374", "Negative_20367" ], - "name" : "Add_20376", - "op" : "Add", - "outputs" : ["Add_20376"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20375", "Negative_20369" ], - "name" : "Add_20377", - "op" : "Add", - "outputs" : ["Add_20377"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20372", "Add_20376" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20378", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20378"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20373", "Add_20377" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20379", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20379"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20378"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20380", - "op" : "Slice", - "outputs" : ["Slice_20380"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20379"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20381", - "op" : "Slice", - "outputs" : ["Slice_20381"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20380", "Negative_20348" ], - "name" : "Add_20382", - "op" : "Add", - "outputs" : ["Add_20382"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20381", "Negative_20352" ], - "name" : "Add_20383", - "op" : "Add", - "outputs" : ["Add_20383"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20378", "Add_20382" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20384", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20384"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20379", "Add_20383" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20385", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20385"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20384"], - "name" : "Sum_20386", - "op" : "Sum", - "outputs" : ["Sum_20386"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20384"], - "name" : "Reshape_20387", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20387"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19408", "ReplaceSlice_20384" ], - "name" : "Dot_20388", - "op" : "Dot", - "outputs" : ["Dot_20388"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20384"], - "name" : "Sum_20389", - "op" : "Sum", - "outputs" : ["Sum_20389"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20384"], - "name" : "Reshape_20390", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20390"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19410", "ReplaceSlice_20384" ], - "name" : "Dot_20391", - "op" : "Dot", - "outputs" : ["Dot_20391"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20385"], - "name" : "Sum_20392", - "op" : "Sum", - "outputs" : ["Sum_20392"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20385"], - "name" : "Reshape_20393", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20393"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19409", "ReplaceSlice_20385" ], - "name" : "Dot_20394", - "op" : "Dot", - "outputs" : ["Dot_20394"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20385"], - "name" : "Sum_20395", - "op" : "Sum", - "outputs" : ["Sum_20395"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20385"], - "name" : "Reshape_20396", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20396"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18714", "ReplaceSlice_20385" ], - "name" : "Dot_20397", - "op" : "Dot", - "outputs" : ["Dot_20397"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20288", "Sum_20386" ], - "name" : "Add_20398", - "op" : "Add", - "outputs" : ["Add_20398"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13884", "Reshape_20387" ], - "name" : "Dot_20399", - "op" : "Dot", - "outputs" : ["Dot_20399"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20388"], - "name" : "Reshape_20400", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20400"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20291", "Sum_20389" ], - "name" : "Add_20401", - "op" : "Add", - "outputs" : ["Add_20401"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17772", "Reshape_20390" ], - "name" : "Dot_20402", - "op" : "Dot", - "outputs" : ["Dot_20402"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20391"], - "name" : "Reshape_20403", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20403"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20294", "Sum_20392" ], - "name" : "Add_20404", - "op" : "Add", - "outputs" : ["Add_20404"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17848", "Reshape_20393" ], - "name" : "Dot_20405", - "op" : "Dot", - "outputs" : ["Dot_20405"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20394"], - "name" : "Reshape_20406", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20406"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20297", "Sum_20395" ], - "name" : "Add_20407", - "op" : "Add", - "outputs" : ["Add_20407"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17852", "Reshape_20396" ], - "name" : "Dot_20408", - "op" : "Dot", - "outputs" : ["Dot_20408"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20397"], - "name" : "Reshape_20409", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20409"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20399"], - "name" : "Reshape_20410", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20410"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20400"], - "name" : "Reshape_20411", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20411"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20402"], - "name" : "Reshape_20412", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20412"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20403"], - "name" : "Reshape_20413", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20413"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20405"], - "name" : "Reshape_20414", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20414"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20406"], - "name" : "Reshape_20415", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20415"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20408"], - "name" : "Reshape_20416", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20409"], - "name" : "Reshape_20417", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20417"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20410", "Reshape_18834" ], - "name" : "Add_20418", - "op" : "Add", - "outputs" : ["Add_20418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20309", "Reshape_20411" ], - "name" : "Add_20419", - "op" : "Add", - "outputs" : ["Add_20419"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20310", "Reshape_20413" ], - "name" : "Add_20420", - "op" : "Add", - "outputs" : ["Add_20420"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20414", "Reshape_20412" ], - "name" : "Add_20421", - "op" : "Add", - "outputs" : ["Add_20421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20312", "Reshape_20415" ], - "name" : "Add_20422", - "op" : "Add", - "outputs" : ["Add_20422"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20416"], - "name" : "Reshape_20423", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20314", "Reshape_20417" ], - "name" : "Add_20424", - "op" : "Add", - "outputs" : ["Add_20424"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20418", "Parameter_13886" ], - "name" : "Multiply_20425", - "op" : "Multiply", - "outputs" : ["Multiply_20425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17762", "Add_20418" ], - "name" : "Multiply_20426", - "op" : "Multiply", - "outputs" : ["Multiply_20426"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20421", "Parameter_17774" ], - "name" : "Multiply_20427", - "op" : "Multiply", - "outputs" : ["Multiply_20427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17805", "Add_20421" ], - "name" : "Multiply_20428", - "op" : "Multiply", - "outputs" : ["Multiply_20428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20329", "Reshape_20423" ], - "name" : "Add_20429", - "op" : "Add", - "outputs" : ["Add_20429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20425"], - "name" : "Negative_20430", - "op" : "Negative", - "outputs" : ["Negative_20430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20426", "Multiply_19406" ], - "name" : "Divide_20431", - "op" : "Divide", - "outputs" : ["Divide_20431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20427"], - "name" : "Negative_20432", - "op" : "Negative", - "outputs" : ["Negative_20432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20428", "Multiply_19407" ], - "name" : "Divide_20433", - "op" : "Divide", - "outputs" : ["Divide_20433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20324", "Add_20429" ], - "lower_bounds" : [ 0, 52, 0 ], - "name" : "ReplaceSlice_20434", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20434"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 53, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20430", "Parameter_17762" ], - "name" : "Multiply_20435", - "op" : "Multiply", - "outputs" : ["Multiply_20435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20334", "Divide_20431" ], - "name" : "Add_20436", - "op" : "Add", - "outputs" : ["Add_20436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20432", "Parameter_17805" ], - "name" : "Multiply_20437", - "op" : "Multiply", - "outputs" : ["Multiply_20437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20339", "Divide_20433" ], - "name" : "Add_20438", - "op" : "Add", - "outputs" : ["Add_20438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20434"], - "lower_bounds" : [ 0, 51, 0 ], - "name" : "Slice_20439", - "op" : "Slice", - "outputs" : ["Slice_20439"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 52, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20435", "Parameter_17763" ], - "name" : "Divide_20440", - "op" : "Divide", - "outputs" : ["Divide_20440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20436", "Parameter_13889" ], - "name" : "Multiply_20441", - "op" : "Multiply", - "outputs" : ["Multiply_20441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17747", "Add_20436" ], - "name" : "Multiply_20442", - "op" : "Multiply", - "outputs" : ["Multiply_20442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20436", "Parameter_13898" ], - "name" : "Multiply_20443", - "op" : "Multiply", - "outputs" : ["Multiply_20443"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17755", "Add_20436" ], - "name" : "Multiply_20444", - "op" : "Multiply", - "outputs" : ["Multiply_20444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20437", "Parameter_17806" ], - "name" : "Divide_20445", - "op" : "Divide", - "outputs" : ["Divide_20445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20438", "Parameter_17777" ], - "name" : "Multiply_20446", - "op" : "Multiply", - "outputs" : ["Multiply_20446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17790", "Add_20438" ], - "name" : "Multiply_20447", - "op" : "Multiply", - "outputs" : ["Multiply_20447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20438", "Parameter_17710" ], - "name" : "Multiply_20448", - "op" : "Multiply", - "outputs" : ["Multiply_20448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17798", "Add_20438" ], - "name" : "Multiply_20449", - "op" : "Multiply", - "outputs" : ["Multiply_20449"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20440", "Parameter_17764" ], - "name" : "Multiply_20450", - "op" : "Multiply", - "outputs" : ["Multiply_20450"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20441"], - "name" : "Negative_20451", - "op" : "Negative", - "outputs" : ["Negative_20451"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20442", "Multiply_19402" ], - "name" : "Divide_20452", - "op" : "Divide", - "outputs" : ["Divide_20452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20443"], - "name" : "Negative_20453", - "op" : "Negative", - "outputs" : ["Negative_20453"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20445", "Parameter_17807" ], - "name" : "Multiply_20454", - "op" : "Multiply", - "outputs" : ["Multiply_20454"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20446"], - "name" : "Negative_20455", - "op" : "Negative", - "outputs" : ["Negative_20455"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20447", "Multiply_19403" ], - "name" : "Divide_20456", - "op" : "Divide", - "outputs" : ["Divide_20456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20448"], - "name" : "Negative_20457", - "op" : "Negative", - "outputs" : ["Negative_20457"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20450"], - "name" : "Negative_20458", - "op" : "Negative", - "outputs" : ["Negative_20458"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20451", "Parameter_17747" ], - "name" : "Multiply_20459", - "op" : "Multiply", - "outputs" : ["Multiply_20459"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18547", "Divide_20452" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20460", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20460"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20453", "Parameter_17755" ], - "name" : "Multiply_20461", - "op" : "Multiply", - "outputs" : ["Multiply_20461"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20454"], - "name" : "Negative_20462", - "op" : "Negative", - "outputs" : ["Negative_20462"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20455", "Parameter_17790" ], - "name" : "Multiply_20463", - "op" : "Multiply", - "outputs" : ["Multiply_20463"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18606", "Divide_20456" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20464", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20464"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20457", "Parameter_17798" ], - "name" : "Multiply_20465", - "op" : "Multiply", - "outputs" : ["Multiply_20465"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20459", "Parameter_17748" ], - "name" : "Divide_20466", - "op" : "Divide", - "outputs" : ["Divide_20466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20460"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20467", - "op" : "Slice", - "outputs" : ["Slice_20467"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20461", "Parameter_17756" ], - "name" : "Divide_20468", - "op" : "Divide", - "outputs" : ["Divide_20468"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20463", "Parameter_17791" ], - "name" : "Divide_20469", - "op" : "Divide", - "outputs" : ["Divide_20469"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20464"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20470", - "op" : "Slice", - "outputs" : ["Slice_20470"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20465", "Parameter_17799" ], - "name" : "Divide_20471", - "op" : "Divide", - "outputs" : ["Divide_20471"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20466", "Parameter_17749" ], - "name" : "Multiply_20472", - "op" : "Multiply", - "outputs" : ["Multiply_20472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20468", "Parameter_17757" ], - "name" : "Multiply_20473", - "op" : "Multiply", - "outputs" : ["Multiply_20473"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20469", "Parameter_17792" ], - "name" : "Multiply_20474", - "op" : "Multiply", - "outputs" : ["Multiply_20474"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20471", "Parameter_17800" ], - "name" : "Multiply_20475", - "op" : "Multiply", - "outputs" : ["Multiply_20475"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20472"], - "name" : "Negative_20476", - "op" : "Negative", - "outputs" : ["Negative_20476"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20473"], - "name" : "Negative_20477", - "op" : "Negative", - "outputs" : ["Negative_20477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20474"], - "name" : "Negative_20478", - "op" : "Negative", - "outputs" : ["Negative_20478"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20475"], - "name" : "Negative_20479", - "op" : "Negative", - "outputs" : ["Negative_20479"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20467", "Negative_20476" ], - "name" : "Add_20480", - "op" : "Add", - "outputs" : ["Add_20480"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20470", "Negative_20478" ], - "name" : "Add_20481", - "op" : "Add", - "outputs" : ["Add_20481"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20460", "Add_20480" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20482", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20482"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20464", "Add_20481" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20483", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20483"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20482"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20484", - "op" : "Slice", - "outputs" : ["Slice_20484"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20483"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20485", - "op" : "Slice", - "outputs" : ["Slice_20485"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20484", "Negative_20477" ], - "name" : "Add_20486", - "op" : "Add", - "outputs" : ["Add_20486"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20485", "Negative_20479" ], - "name" : "Add_20487", - "op" : "Add", - "outputs" : ["Add_20487"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20482", "Add_20486" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20488", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20488"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20483", "Add_20487" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20489", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20489"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20488"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20490", - "op" : "Slice", - "outputs" : ["Slice_20490"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20489"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20491", - "op" : "Slice", - "outputs" : ["Slice_20491"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20490", "Negative_20458" ], - "name" : "Add_20492", - "op" : "Add", - "outputs" : ["Add_20492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20491", "Negative_20462" ], - "name" : "Add_20493", - "op" : "Add", - "outputs" : ["Add_20493"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20488", "Add_20492" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20494", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20494"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20489", "Add_20493" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20495", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20495"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20494"], - "name" : "Sum_20496", - "op" : "Sum", - "outputs" : ["Sum_20496"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20494"], - "name" : "Reshape_20497", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20497"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19397", "ReplaceSlice_20494" ], - "name" : "Dot_20498", - "op" : "Dot", - "outputs" : ["Dot_20498"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20494"], - "name" : "Sum_20499", - "op" : "Sum", - "outputs" : ["Sum_20499"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20494"], - "name" : "Reshape_20500", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20500"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19399", "ReplaceSlice_20494" ], - "name" : "Dot_20501", - "op" : "Dot", - "outputs" : ["Dot_20501"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20495"], - "name" : "Sum_20502", - "op" : "Sum", - "outputs" : ["Sum_20502"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20495"], - "name" : "Reshape_20503", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20503"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19398", "ReplaceSlice_20495" ], - "name" : "Dot_20504", - "op" : "Dot", - "outputs" : ["Dot_20504"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20495"], - "name" : "Sum_20505", - "op" : "Sum", - "outputs" : ["Sum_20505"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20495"], - "name" : "Reshape_20506", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20506"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18713", "ReplaceSlice_20495" ], - "name" : "Dot_20507", - "op" : "Dot", - "outputs" : ["Dot_20507"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20398", "Sum_20496" ], - "name" : "Add_20508", - "op" : "Add", - "outputs" : ["Add_20508"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13895", "Reshape_20497" ], - "name" : "Dot_20509", - "op" : "Dot", - "outputs" : ["Dot_20509"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20498"], - "name" : "Reshape_20510", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20510"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20401", "Sum_20499" ], - "name" : "Add_20511", - "op" : "Add", - "outputs" : ["Add_20511"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17707", "Reshape_20500" ], - "name" : "Dot_20512", - "op" : "Dot", - "outputs" : ["Dot_20512"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20501"], - "name" : "Reshape_20513", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20513"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20404", "Sum_20502" ], - "name" : "Add_20514", - "op" : "Add", - "outputs" : ["Add_20514"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17783", "Reshape_20503" ], - "name" : "Dot_20515", - "op" : "Dot", - "outputs" : ["Dot_20515"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20504"], - "name" : "Reshape_20516", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20516"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20407", "Sum_20505" ], - "name" : "Add_20517", - "op" : "Add", - "outputs" : ["Add_20517"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17787", "Reshape_20506" ], - "name" : "Dot_20518", - "op" : "Dot", - "outputs" : ["Dot_20518"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20507"], - "name" : "Reshape_20519", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20519"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20509"], - "name" : "Reshape_20520", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20510"], - "name" : "Reshape_20521", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20521"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20512"], - "name" : "Reshape_20522", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20513"], - "name" : "Reshape_20523", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20523"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20515"], - "name" : "Reshape_20524", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20524"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20516"], - "name" : "Reshape_20525", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20525"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20518"], - "name" : "Reshape_20526", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20526"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20519"], - "name" : "Reshape_20527", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20527"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20520", "Reshape_18833" ], - "name" : "Add_20528", - "op" : "Add", - "outputs" : ["Add_20528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20419", "Reshape_20521" ], - "name" : "Add_20529", - "op" : "Add", - "outputs" : ["Add_20529"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20420", "Reshape_20523" ], - "name" : "Add_20530", - "op" : "Add", - "outputs" : ["Add_20530"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20524", "Reshape_20522" ], - "name" : "Add_20531", - "op" : "Add", - "outputs" : ["Add_20531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20422", "Reshape_20525" ], - "name" : "Add_20532", - "op" : "Add", - "outputs" : ["Add_20532"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20526"], - "name" : "Reshape_20533", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20424", "Reshape_20527" ], - "name" : "Add_20534", - "op" : "Add", - "outputs" : ["Add_20534"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20528", "Parameter_13897" ], - "name" : "Multiply_20535", - "op" : "Multiply", - "outputs" : ["Multiply_20535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17697", "Add_20528" ], - "name" : "Multiply_20536", - "op" : "Multiply", - "outputs" : ["Multiply_20536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20531", "Parameter_17709" ], - "name" : "Multiply_20537", - "op" : "Multiply", - "outputs" : ["Multiply_20537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17740", "Add_20531" ], - "name" : "Multiply_20538", - "op" : "Multiply", - "outputs" : ["Multiply_20538"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20439", "Reshape_20533" ], - "name" : "Add_20539", - "op" : "Add", - "outputs" : ["Add_20539"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20535"], - "name" : "Negative_20540", - "op" : "Negative", - "outputs" : ["Negative_20540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20536", "Multiply_19395" ], - "name" : "Divide_20541", - "op" : "Divide", - "outputs" : ["Divide_20541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20537"], - "name" : "Negative_20542", - "op" : "Negative", - "outputs" : ["Negative_20542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20538", "Multiply_19396" ], - "name" : "Divide_20543", - "op" : "Divide", - "outputs" : ["Divide_20543"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20434", "Add_20539" ], - "lower_bounds" : [ 0, 51, 0 ], - "name" : "ReplaceSlice_20544", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20544"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 52, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20540", "Parameter_17697" ], - "name" : "Multiply_20545", - "op" : "Multiply", - "outputs" : ["Multiply_20545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20444", "Divide_20541" ], - "name" : "Add_20546", - "op" : "Add", - "outputs" : ["Add_20546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20542", "Parameter_17740" ], - "name" : "Multiply_20547", - "op" : "Multiply", - "outputs" : ["Multiply_20547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20449", "Divide_20543" ], - "name" : "Add_20548", - "op" : "Add", - "outputs" : ["Add_20548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20544"], - "lower_bounds" : [ 0, 50, 0 ], - "name" : "Slice_20549", - "op" : "Slice", - "outputs" : ["Slice_20549"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 51, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20545", "Parameter_17698" ], - "name" : "Divide_20550", - "op" : "Divide", - "outputs" : ["Divide_20550"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20546", "Parameter_13900" ], - "name" : "Multiply_20551", - "op" : "Multiply", - "outputs" : ["Multiply_20551"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17682", "Add_20546" ], - "name" : "Multiply_20552", - "op" : "Multiply", - "outputs" : ["Multiply_20552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20546", "Parameter_13909" ], - "name" : "Multiply_20553", - "op" : "Multiply", - "outputs" : ["Multiply_20553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17690", "Add_20546" ], - "name" : "Multiply_20554", - "op" : "Multiply", - "outputs" : ["Multiply_20554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20547", "Parameter_17741" ], - "name" : "Divide_20555", - "op" : "Divide", - "outputs" : ["Divide_20555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20548", "Parameter_17712" ], - "name" : "Multiply_20556", - "op" : "Multiply", - "outputs" : ["Multiply_20556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17725", "Add_20548" ], - "name" : "Multiply_20557", - "op" : "Multiply", - "outputs" : ["Multiply_20557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20548", "Parameter_17645" ], - "name" : "Multiply_20558", - "op" : "Multiply", - "outputs" : ["Multiply_20558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17733", "Add_20548" ], - "name" : "Multiply_20559", - "op" : "Multiply", - "outputs" : ["Multiply_20559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20550", "Parameter_17699" ], - "name" : "Multiply_20560", - "op" : "Multiply", - "outputs" : ["Multiply_20560"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20551"], - "name" : "Negative_20561", - "op" : "Negative", - "outputs" : ["Negative_20561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20552", "Multiply_19391" ], - "name" : "Divide_20562", - "op" : "Divide", - "outputs" : ["Divide_20562"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20553"], - "name" : "Negative_20563", - "op" : "Negative", - "outputs" : ["Negative_20563"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20555", "Parameter_17742" ], - "name" : "Multiply_20564", - "op" : "Multiply", - "outputs" : ["Multiply_20564"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20556"], - "name" : "Negative_20565", - "op" : "Negative", - "outputs" : ["Negative_20565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20557", "Multiply_19392" ], - "name" : "Divide_20566", - "op" : "Divide", - "outputs" : ["Divide_20566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20558"], - "name" : "Negative_20567", - "op" : "Negative", - "outputs" : ["Negative_20567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20560"], - "name" : "Negative_20568", - "op" : "Negative", - "outputs" : ["Negative_20568"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20561", "Parameter_17682" ], - "name" : "Multiply_20569", - "op" : "Multiply", - "outputs" : ["Multiply_20569"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18548", "Divide_20562" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20570", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20570"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20563", "Parameter_17690" ], - "name" : "Multiply_20571", - "op" : "Multiply", - "outputs" : ["Multiply_20571"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20564"], - "name" : "Negative_20572", - "op" : "Negative", - "outputs" : ["Negative_20572"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20565", "Parameter_17725" ], - "name" : "Multiply_20573", - "op" : "Multiply", - "outputs" : ["Multiply_20573"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18607", "Divide_20566" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20574", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20574"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20567", "Parameter_17733" ], - "name" : "Multiply_20575", - "op" : "Multiply", - "outputs" : ["Multiply_20575"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20569", "Parameter_17683" ], - "name" : "Divide_20576", - "op" : "Divide", - "outputs" : ["Divide_20576"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20570"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20577", - "op" : "Slice", - "outputs" : ["Slice_20577"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20571", "Parameter_17691" ], - "name" : "Divide_20578", - "op" : "Divide", - "outputs" : ["Divide_20578"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20573", "Parameter_17726" ], - "name" : "Divide_20579", - "op" : "Divide", - "outputs" : ["Divide_20579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20574"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20580", - "op" : "Slice", - "outputs" : ["Slice_20580"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20575", "Parameter_17734" ], - "name" : "Divide_20581", - "op" : "Divide", - "outputs" : ["Divide_20581"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20576", "Parameter_17684" ], - "name" : "Multiply_20582", - "op" : "Multiply", - "outputs" : ["Multiply_20582"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20578", "Parameter_17692" ], - "name" : "Multiply_20583", - "op" : "Multiply", - "outputs" : ["Multiply_20583"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20579", "Parameter_17727" ], - "name" : "Multiply_20584", - "op" : "Multiply", - "outputs" : ["Multiply_20584"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20581", "Parameter_17735" ], - "name" : "Multiply_20585", - "op" : "Multiply", - "outputs" : ["Multiply_20585"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20582"], - "name" : "Negative_20586", - "op" : "Negative", - "outputs" : ["Negative_20586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20583"], - "name" : "Negative_20587", - "op" : "Negative", - "outputs" : ["Negative_20587"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20584"], - "name" : "Negative_20588", - "op" : "Negative", - "outputs" : ["Negative_20588"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20585"], - "name" : "Negative_20589", - "op" : "Negative", - "outputs" : ["Negative_20589"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20577", "Negative_20586" ], - "name" : "Add_20590", - "op" : "Add", - "outputs" : ["Add_20590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20580", "Negative_20588" ], - "name" : "Add_20591", - "op" : "Add", - "outputs" : ["Add_20591"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20570", "Add_20590" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20592", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20592"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20574", "Add_20591" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20593", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20593"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20592"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20594", - "op" : "Slice", - "outputs" : ["Slice_20594"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20593"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20595", - "op" : "Slice", - "outputs" : ["Slice_20595"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20594", "Negative_20587" ], - "name" : "Add_20596", - "op" : "Add", - "outputs" : ["Add_20596"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20595", "Negative_20589" ], - "name" : "Add_20597", - "op" : "Add", - "outputs" : ["Add_20597"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20592", "Add_20596" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20598", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20598"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20593", "Add_20597" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20599", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20599"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20598"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20600", - "op" : "Slice", - "outputs" : ["Slice_20600"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20599"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20601", - "op" : "Slice", - "outputs" : ["Slice_20601"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20600", "Negative_20568" ], - "name" : "Add_20602", - "op" : "Add", - "outputs" : ["Add_20602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20601", "Negative_20572" ], - "name" : "Add_20603", - "op" : "Add", - "outputs" : ["Add_20603"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20598", "Add_20602" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20604", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20604"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20599", "Add_20603" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20605", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20605"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20604"], - "name" : "Sum_20606", - "op" : "Sum", - "outputs" : ["Sum_20606"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20604"], - "name" : "Reshape_20607", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20607"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19386", "ReplaceSlice_20604" ], - "name" : "Dot_20608", - "op" : "Dot", - "outputs" : ["Dot_20608"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20604"], - "name" : "Sum_20609", - "op" : "Sum", - "outputs" : ["Sum_20609"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20604"], - "name" : "Reshape_20610", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20610"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19388", "ReplaceSlice_20604" ], - "name" : "Dot_20611", - "op" : "Dot", - "outputs" : ["Dot_20611"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20605"], - "name" : "Sum_20612", - "op" : "Sum", - "outputs" : ["Sum_20612"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20605"], - "name" : "Reshape_20613", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20613"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19387", "ReplaceSlice_20605" ], - "name" : "Dot_20614", - "op" : "Dot", - "outputs" : ["Dot_20614"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20605"], - "name" : "Sum_20615", - "op" : "Sum", - "outputs" : ["Sum_20615"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20605"], - "name" : "Reshape_20616", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20616"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18712", "ReplaceSlice_20605" ], - "name" : "Dot_20617", - "op" : "Dot", - "outputs" : ["Dot_20617"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20508", "Sum_20606" ], - "name" : "Add_20618", - "op" : "Add", - "outputs" : ["Add_20618"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13906", "Reshape_20607" ], - "name" : "Dot_20619", - "op" : "Dot", - "outputs" : ["Dot_20619"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20608"], - "name" : "Reshape_20620", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20620"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20511", "Sum_20609" ], - "name" : "Add_20621", - "op" : "Add", - "outputs" : ["Add_20621"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17642", "Reshape_20610" ], - "name" : "Dot_20622", - "op" : "Dot", - "outputs" : ["Dot_20622"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20611"], - "name" : "Reshape_20623", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20623"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20514", "Sum_20612" ], - "name" : "Add_20624", - "op" : "Add", - "outputs" : ["Add_20624"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17718", "Reshape_20613" ], - "name" : "Dot_20625", - "op" : "Dot", - "outputs" : ["Dot_20625"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20614"], - "name" : "Reshape_20626", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20626"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20517", "Sum_20615" ], - "name" : "Add_20627", - "op" : "Add", - "outputs" : ["Add_20627"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17722", "Reshape_20616" ], - "name" : "Dot_20628", - "op" : "Dot", - "outputs" : ["Dot_20628"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20617"], - "name" : "Reshape_20629", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20629"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20619"], - "name" : "Reshape_20630", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20630"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20620"], - "name" : "Reshape_20631", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20631"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20622"], - "name" : "Reshape_20632", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20623"], - "name" : "Reshape_20633", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20633"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20625"], - "name" : "Reshape_20634", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20634"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20626"], - "name" : "Reshape_20635", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20635"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20628"], - "name" : "Reshape_20636", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20629"], - "name" : "Reshape_20637", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20637"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20630", "Reshape_18832" ], - "name" : "Add_20638", - "op" : "Add", - "outputs" : ["Add_20638"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20529", "Reshape_20631" ], - "name" : "Add_20639", - "op" : "Add", - "outputs" : ["Add_20639"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20530", "Reshape_20633" ], - "name" : "Add_20640", - "op" : "Add", - "outputs" : ["Add_20640"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20634", "Reshape_20632" ], - "name" : "Add_20641", - "op" : "Add", - "outputs" : ["Add_20641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20532", "Reshape_20635" ], - "name" : "Add_20642", - "op" : "Add", - "outputs" : ["Add_20642"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20636"], - "name" : "Reshape_20643", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20643"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20534", "Reshape_20637" ], - "name" : "Add_20644", - "op" : "Add", - "outputs" : ["Add_20644"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20638", "Parameter_13908" ], - "name" : "Multiply_20645", - "op" : "Multiply", - "outputs" : ["Multiply_20645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17632", "Add_20638" ], - "name" : "Multiply_20646", - "op" : "Multiply", - "outputs" : ["Multiply_20646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20641", "Parameter_17644" ], - "name" : "Multiply_20647", - "op" : "Multiply", - "outputs" : ["Multiply_20647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17675", "Add_20641" ], - "name" : "Multiply_20648", - "op" : "Multiply", - "outputs" : ["Multiply_20648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20549", "Reshape_20643" ], - "name" : "Add_20649", - "op" : "Add", - "outputs" : ["Add_20649"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20645"], - "name" : "Negative_20650", - "op" : "Negative", - "outputs" : ["Negative_20650"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20646", "Multiply_19384" ], - "name" : "Divide_20651", - "op" : "Divide", - "outputs" : ["Divide_20651"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20647"], - "name" : "Negative_20652", - "op" : "Negative", - "outputs" : ["Negative_20652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20648", "Multiply_19385" ], - "name" : "Divide_20653", - "op" : "Divide", - "outputs" : ["Divide_20653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20544", "Add_20649" ], - "lower_bounds" : [ 0, 50, 0 ], - "name" : "ReplaceSlice_20654", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20654"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 51, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20650", "Parameter_17632" ], - "name" : "Multiply_20655", - "op" : "Multiply", - "outputs" : ["Multiply_20655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20554", "Divide_20651" ], - "name" : "Add_20656", - "op" : "Add", - "outputs" : ["Add_20656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20652", "Parameter_17675" ], - "name" : "Multiply_20657", - "op" : "Multiply", - "outputs" : ["Multiply_20657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20559", "Divide_20653" ], - "name" : "Add_20658", - "op" : "Add", - "outputs" : ["Add_20658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20654"], - "lower_bounds" : [ 0, 49, 0 ], - "name" : "Slice_20659", - "op" : "Slice", - "outputs" : ["Slice_20659"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 50, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20655", "Parameter_17633" ], - "name" : "Divide_20660", - "op" : "Divide", - "outputs" : ["Divide_20660"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20656", "Parameter_13911" ], - "name" : "Multiply_20661", - "op" : "Multiply", - "outputs" : ["Multiply_20661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17617", "Add_20656" ], - "name" : "Multiply_20662", - "op" : "Multiply", - "outputs" : ["Multiply_20662"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20656", "Parameter_13920" ], - "name" : "Multiply_20663", - "op" : "Multiply", - "outputs" : ["Multiply_20663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17625", "Add_20656" ], - "name" : "Multiply_20664", - "op" : "Multiply", - "outputs" : ["Multiply_20664"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20657", "Parameter_17676" ], - "name" : "Divide_20665", - "op" : "Divide", - "outputs" : ["Divide_20665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20658", "Parameter_17647" ], - "name" : "Multiply_20666", - "op" : "Multiply", - "outputs" : ["Multiply_20666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17660", "Add_20658" ], - "name" : "Multiply_20667", - "op" : "Multiply", - "outputs" : ["Multiply_20667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20658", "Parameter_17580" ], - "name" : "Multiply_20668", - "op" : "Multiply", - "outputs" : ["Multiply_20668"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17668", "Add_20658" ], - "name" : "Multiply_20669", - "op" : "Multiply", - "outputs" : ["Multiply_20669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20660", "Parameter_17634" ], - "name" : "Multiply_20670", - "op" : "Multiply", - "outputs" : ["Multiply_20670"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20661"], - "name" : "Negative_20671", - "op" : "Negative", - "outputs" : ["Negative_20671"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20662", "Multiply_19380" ], - "name" : "Divide_20672", - "op" : "Divide", - "outputs" : ["Divide_20672"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20663"], - "name" : "Negative_20673", - "op" : "Negative", - "outputs" : ["Negative_20673"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20665", "Parameter_17677" ], - "name" : "Multiply_20674", - "op" : "Multiply", - "outputs" : ["Multiply_20674"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20666"], - "name" : "Negative_20675", - "op" : "Negative", - "outputs" : ["Negative_20675"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20667", "Multiply_19381" ], - "name" : "Divide_20676", - "op" : "Divide", - "outputs" : ["Divide_20676"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20668"], - "name" : "Negative_20677", - "op" : "Negative", - "outputs" : ["Negative_20677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20670"], - "name" : "Negative_20678", - "op" : "Negative", - "outputs" : ["Negative_20678"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20671", "Parameter_17617" ], - "name" : "Multiply_20679", - "op" : "Multiply", - "outputs" : ["Multiply_20679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18549", "Divide_20672" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20680", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20680"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20673", "Parameter_17625" ], - "name" : "Multiply_20681", - "op" : "Multiply", - "outputs" : ["Multiply_20681"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20674"], - "name" : "Negative_20682", - "op" : "Negative", - "outputs" : ["Negative_20682"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20675", "Parameter_17660" ], - "name" : "Multiply_20683", - "op" : "Multiply", - "outputs" : ["Multiply_20683"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18608", "Divide_20676" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20684", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20684"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20677", "Parameter_17668" ], - "name" : "Multiply_20685", - "op" : "Multiply", - "outputs" : ["Multiply_20685"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20679", "Parameter_17618" ], - "name" : "Divide_20686", - "op" : "Divide", - "outputs" : ["Divide_20686"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20680"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20687", - "op" : "Slice", - "outputs" : ["Slice_20687"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20681", "Parameter_17626" ], - "name" : "Divide_20688", - "op" : "Divide", - "outputs" : ["Divide_20688"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20683", "Parameter_17661" ], - "name" : "Divide_20689", - "op" : "Divide", - "outputs" : ["Divide_20689"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20684"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20690", - "op" : "Slice", - "outputs" : ["Slice_20690"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20685", "Parameter_17669" ], - "name" : "Divide_20691", - "op" : "Divide", - "outputs" : ["Divide_20691"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20686", "Parameter_17619" ], - "name" : "Multiply_20692", - "op" : "Multiply", - "outputs" : ["Multiply_20692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20688", "Parameter_17627" ], - "name" : "Multiply_20693", - "op" : "Multiply", - "outputs" : ["Multiply_20693"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20689", "Parameter_17662" ], - "name" : "Multiply_20694", - "op" : "Multiply", - "outputs" : ["Multiply_20694"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20691", "Parameter_17670" ], - "name" : "Multiply_20695", - "op" : "Multiply", - "outputs" : ["Multiply_20695"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20692"], - "name" : "Negative_20696", - "op" : "Negative", - "outputs" : ["Negative_20696"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20693"], - "name" : "Negative_20697", - "op" : "Negative", - "outputs" : ["Negative_20697"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20694"], - "name" : "Negative_20698", - "op" : "Negative", - "outputs" : ["Negative_20698"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20695"], - "name" : "Negative_20699", - "op" : "Negative", - "outputs" : ["Negative_20699"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20687", "Negative_20696" ], - "name" : "Add_20700", - "op" : "Add", - "outputs" : ["Add_20700"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20690", "Negative_20698" ], - "name" : "Add_20701", - "op" : "Add", - "outputs" : ["Add_20701"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20680", "Add_20700" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20702", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20702"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20684", "Add_20701" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20703", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20703"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20702"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20704", - "op" : "Slice", - "outputs" : ["Slice_20704"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20703"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20705", - "op" : "Slice", - "outputs" : ["Slice_20705"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20704", "Negative_20697" ], - "name" : "Add_20706", - "op" : "Add", - "outputs" : ["Add_20706"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20705", "Negative_20699" ], - "name" : "Add_20707", - "op" : "Add", - "outputs" : ["Add_20707"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20702", "Add_20706" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20708", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20708"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20703", "Add_20707" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20709", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20709"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20708"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20710", - "op" : "Slice", - "outputs" : ["Slice_20710"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20709"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20711", - "op" : "Slice", - "outputs" : ["Slice_20711"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20710", "Negative_20678" ], - "name" : "Add_20712", - "op" : "Add", - "outputs" : ["Add_20712"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20711", "Negative_20682" ], - "name" : "Add_20713", - "op" : "Add", - "outputs" : ["Add_20713"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20708", "Add_20712" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20714", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20714"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20709", "Add_20713" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20715", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20715"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20714"], - "name" : "Sum_20716", - "op" : "Sum", - "outputs" : ["Sum_20716"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20714"], - "name" : "Reshape_20717", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20717"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19375", "ReplaceSlice_20714" ], - "name" : "Dot_20718", - "op" : "Dot", - "outputs" : ["Dot_20718"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20714"], - "name" : "Sum_20719", - "op" : "Sum", - "outputs" : ["Sum_20719"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20714"], - "name" : "Reshape_20720", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20720"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19377", "ReplaceSlice_20714" ], - "name" : "Dot_20721", - "op" : "Dot", - "outputs" : ["Dot_20721"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20715"], - "name" : "Sum_20722", - "op" : "Sum", - "outputs" : ["Sum_20722"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20715"], - "name" : "Reshape_20723", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20723"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19376", "ReplaceSlice_20715" ], - "name" : "Dot_20724", - "op" : "Dot", - "outputs" : ["Dot_20724"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20715"], - "name" : "Sum_20725", - "op" : "Sum", - "outputs" : ["Sum_20725"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20715"], - "name" : "Reshape_20726", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20726"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18711", "ReplaceSlice_20715" ], - "name" : "Dot_20727", - "op" : "Dot", - "outputs" : ["Dot_20727"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20618", "Sum_20716" ], - "name" : "Add_20728", - "op" : "Add", - "outputs" : ["Add_20728"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13917", "Reshape_20717" ], - "name" : "Dot_20729", - "op" : "Dot", - "outputs" : ["Dot_20729"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20718"], - "name" : "Reshape_20730", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20730"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20621", "Sum_20719" ], - "name" : "Add_20731", - "op" : "Add", - "outputs" : ["Add_20731"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17577", "Reshape_20720" ], - "name" : "Dot_20732", - "op" : "Dot", - "outputs" : ["Dot_20732"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20721"], - "name" : "Reshape_20733", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20733"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20624", "Sum_20722" ], - "name" : "Add_20734", - "op" : "Add", - "outputs" : ["Add_20734"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17653", "Reshape_20723" ], - "name" : "Dot_20735", - "op" : "Dot", - "outputs" : ["Dot_20735"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20724"], - "name" : "Reshape_20736", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20736"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20627", "Sum_20725" ], - "name" : "Add_20737", - "op" : "Add", - "outputs" : ["Add_20737"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17657", "Reshape_20726" ], - "name" : "Dot_20738", - "op" : "Dot", - "outputs" : ["Dot_20738"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20727"], - "name" : "Reshape_20739", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20739"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20729"], - "name" : "Reshape_20740", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20730"], - "name" : "Reshape_20741", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20741"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20732"], - "name" : "Reshape_20742", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20733"], - "name" : "Reshape_20743", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20743"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20735"], - "name" : "Reshape_20744", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20744"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20736"], - "name" : "Reshape_20745", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20745"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20738"], - "name" : "Reshape_20746", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20739"], - "name" : "Reshape_20747", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20747"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20740", "Reshape_18831" ], - "name" : "Add_20748", - "op" : "Add", - "outputs" : ["Add_20748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20639", "Reshape_20741" ], - "name" : "Add_20749", - "op" : "Add", - "outputs" : ["Add_20749"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20640", "Reshape_20743" ], - "name" : "Add_20750", - "op" : "Add", - "outputs" : ["Add_20750"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20744", "Reshape_20742" ], - "name" : "Add_20751", - "op" : "Add", - "outputs" : ["Add_20751"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20642", "Reshape_20745" ], - "name" : "Add_20752", - "op" : "Add", - "outputs" : ["Add_20752"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20746"], - "name" : "Reshape_20753", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20644", "Reshape_20747" ], - "name" : "Add_20754", - "op" : "Add", - "outputs" : ["Add_20754"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20748", "Parameter_13919" ], - "name" : "Multiply_20755", - "op" : "Multiply", - "outputs" : ["Multiply_20755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17567", "Add_20748" ], - "name" : "Multiply_20756", - "op" : "Multiply", - "outputs" : ["Multiply_20756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20751", "Parameter_17579" ], - "name" : "Multiply_20757", - "op" : "Multiply", - "outputs" : ["Multiply_20757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17610", "Add_20751" ], - "name" : "Multiply_20758", - "op" : "Multiply", - "outputs" : ["Multiply_20758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20659", "Reshape_20753" ], - "name" : "Add_20759", - "op" : "Add", - "outputs" : ["Add_20759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20755"], - "name" : "Negative_20760", - "op" : "Negative", - "outputs" : ["Negative_20760"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20756", "Multiply_19373" ], - "name" : "Divide_20761", - "op" : "Divide", - "outputs" : ["Divide_20761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20757"], - "name" : "Negative_20762", - "op" : "Negative", - "outputs" : ["Negative_20762"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20758", "Multiply_19374" ], - "name" : "Divide_20763", - "op" : "Divide", - "outputs" : ["Divide_20763"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20654", "Add_20759" ], - "lower_bounds" : [ 0, 49, 0 ], - "name" : "ReplaceSlice_20764", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20764"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 50, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20760", "Parameter_17567" ], - "name" : "Multiply_20765", - "op" : "Multiply", - "outputs" : ["Multiply_20765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20664", "Divide_20761" ], - "name" : "Add_20766", - "op" : "Add", - "outputs" : ["Add_20766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20762", "Parameter_17610" ], - "name" : "Multiply_20767", - "op" : "Multiply", - "outputs" : ["Multiply_20767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20669", "Divide_20763" ], - "name" : "Add_20768", - "op" : "Add", - "outputs" : ["Add_20768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20764"], - "lower_bounds" : [ 0, 48, 0 ], - "name" : "Slice_20769", - "op" : "Slice", - "outputs" : ["Slice_20769"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 49, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20765", "Parameter_17568" ], - "name" : "Divide_20770", - "op" : "Divide", - "outputs" : ["Divide_20770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20766", "Parameter_13922" ], - "name" : "Multiply_20771", - "op" : "Multiply", - "outputs" : ["Multiply_20771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17552", "Add_20766" ], - "name" : "Multiply_20772", - "op" : "Multiply", - "outputs" : ["Multiply_20772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20766", "Parameter_13931" ], - "name" : "Multiply_20773", - "op" : "Multiply", - "outputs" : ["Multiply_20773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17560", "Add_20766" ], - "name" : "Multiply_20774", - "op" : "Multiply", - "outputs" : ["Multiply_20774"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20767", "Parameter_17611" ], - "name" : "Divide_20775", - "op" : "Divide", - "outputs" : ["Divide_20775"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20768", "Parameter_17582" ], - "name" : "Multiply_20776", - "op" : "Multiply", - "outputs" : ["Multiply_20776"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17595", "Add_20768" ], - "name" : "Multiply_20777", - "op" : "Multiply", - "outputs" : ["Multiply_20777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20768", "Parameter_17515" ], - "name" : "Multiply_20778", - "op" : "Multiply", - "outputs" : ["Multiply_20778"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17603", "Add_20768" ], - "name" : "Multiply_20779", - "op" : "Multiply", - "outputs" : ["Multiply_20779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20770", "Parameter_17569" ], - "name" : "Multiply_20780", - "op" : "Multiply", - "outputs" : ["Multiply_20780"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20771"], - "name" : "Negative_20781", - "op" : "Negative", - "outputs" : ["Negative_20781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20772", "Multiply_19369" ], - "name" : "Divide_20782", - "op" : "Divide", - "outputs" : ["Divide_20782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20773"], - "name" : "Negative_20783", - "op" : "Negative", - "outputs" : ["Negative_20783"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20775", "Parameter_17612" ], - "name" : "Multiply_20784", - "op" : "Multiply", - "outputs" : ["Multiply_20784"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20776"], - "name" : "Negative_20785", - "op" : "Negative", - "outputs" : ["Negative_20785"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20777", "Multiply_19370" ], - "name" : "Divide_20786", - "op" : "Divide", - "outputs" : ["Divide_20786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20778"], - "name" : "Negative_20787", - "op" : "Negative", - "outputs" : ["Negative_20787"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20780"], - "name" : "Negative_20788", - "op" : "Negative", - "outputs" : ["Negative_20788"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20781", "Parameter_17552" ], - "name" : "Multiply_20789", - "op" : "Multiply", - "outputs" : ["Multiply_20789"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18550", "Divide_20782" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20790", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20790"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20783", "Parameter_17560" ], - "name" : "Multiply_20791", - "op" : "Multiply", - "outputs" : ["Multiply_20791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20784"], - "name" : "Negative_20792", - "op" : "Negative", - "outputs" : ["Negative_20792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20785", "Parameter_17595" ], - "name" : "Multiply_20793", - "op" : "Multiply", - "outputs" : ["Multiply_20793"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18609", "Divide_20786" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20794", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20794"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20787", "Parameter_17603" ], - "name" : "Multiply_20795", - "op" : "Multiply", - "outputs" : ["Multiply_20795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20789", "Parameter_17553" ], - "name" : "Divide_20796", - "op" : "Divide", - "outputs" : ["Divide_20796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20790"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20797", - "op" : "Slice", - "outputs" : ["Slice_20797"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20791", "Parameter_17561" ], - "name" : "Divide_20798", - "op" : "Divide", - "outputs" : ["Divide_20798"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20793", "Parameter_17596" ], - "name" : "Divide_20799", - "op" : "Divide", - "outputs" : ["Divide_20799"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20794"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20800", - "op" : "Slice", - "outputs" : ["Slice_20800"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20795", "Parameter_17604" ], - "name" : "Divide_20801", - "op" : "Divide", - "outputs" : ["Divide_20801"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20796", "Parameter_17554" ], - "name" : "Multiply_20802", - "op" : "Multiply", - "outputs" : ["Multiply_20802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20798", "Parameter_17562" ], - "name" : "Multiply_20803", - "op" : "Multiply", - "outputs" : ["Multiply_20803"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20799", "Parameter_17597" ], - "name" : "Multiply_20804", - "op" : "Multiply", - "outputs" : ["Multiply_20804"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20801", "Parameter_17605" ], - "name" : "Multiply_20805", - "op" : "Multiply", - "outputs" : ["Multiply_20805"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20802"], - "name" : "Negative_20806", - "op" : "Negative", - "outputs" : ["Negative_20806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20803"], - "name" : "Negative_20807", - "op" : "Negative", - "outputs" : ["Negative_20807"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20804"], - "name" : "Negative_20808", - "op" : "Negative", - "outputs" : ["Negative_20808"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20805"], - "name" : "Negative_20809", - "op" : "Negative", - "outputs" : ["Negative_20809"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20797", "Negative_20806" ], - "name" : "Add_20810", - "op" : "Add", - "outputs" : ["Add_20810"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20800", "Negative_20808" ], - "name" : "Add_20811", - "op" : "Add", - "outputs" : ["Add_20811"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20790", "Add_20810" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20812", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20812"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20794", "Add_20811" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20813", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20813"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20812"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20814", - "op" : "Slice", - "outputs" : ["Slice_20814"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20813"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20815", - "op" : "Slice", - "outputs" : ["Slice_20815"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20814", "Negative_20807" ], - "name" : "Add_20816", - "op" : "Add", - "outputs" : ["Add_20816"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20815", "Negative_20809" ], - "name" : "Add_20817", - "op" : "Add", - "outputs" : ["Add_20817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20812", "Add_20816" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20818", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20818"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20813", "Add_20817" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20819", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20819"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20818"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20820", - "op" : "Slice", - "outputs" : ["Slice_20820"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20819"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20821", - "op" : "Slice", - "outputs" : ["Slice_20821"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20820", "Negative_20788" ], - "name" : "Add_20822", - "op" : "Add", - "outputs" : ["Add_20822"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20821", "Negative_20792" ], - "name" : "Add_20823", - "op" : "Add", - "outputs" : ["Add_20823"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20818", "Add_20822" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20824", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20824"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20819", "Add_20823" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20825", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20825"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20824"], - "name" : "Sum_20826", - "op" : "Sum", - "outputs" : ["Sum_20826"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20824"], - "name" : "Reshape_20827", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20827"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19364", "ReplaceSlice_20824" ], - "name" : "Dot_20828", - "op" : "Dot", - "outputs" : ["Dot_20828"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20824"], - "name" : "Sum_20829", - "op" : "Sum", - "outputs" : ["Sum_20829"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20824"], - "name" : "Reshape_20830", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20830"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19366", "ReplaceSlice_20824" ], - "name" : "Dot_20831", - "op" : "Dot", - "outputs" : ["Dot_20831"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20825"], - "name" : "Sum_20832", - "op" : "Sum", - "outputs" : ["Sum_20832"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20825"], - "name" : "Reshape_20833", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20833"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19365", "ReplaceSlice_20825" ], - "name" : "Dot_20834", - "op" : "Dot", - "outputs" : ["Dot_20834"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20825"], - "name" : "Sum_20835", - "op" : "Sum", - "outputs" : ["Sum_20835"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20825"], - "name" : "Reshape_20836", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20836"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18710", "ReplaceSlice_20825" ], - "name" : "Dot_20837", - "op" : "Dot", - "outputs" : ["Dot_20837"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20728", "Sum_20826" ], - "name" : "Add_20838", - "op" : "Add", - "outputs" : ["Add_20838"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13928", "Reshape_20827" ], - "name" : "Dot_20839", - "op" : "Dot", - "outputs" : ["Dot_20839"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20828"], - "name" : "Reshape_20840", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20840"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20731", "Sum_20829" ], - "name" : "Add_20841", - "op" : "Add", - "outputs" : ["Add_20841"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17512", "Reshape_20830" ], - "name" : "Dot_20842", - "op" : "Dot", - "outputs" : ["Dot_20842"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20831"], - "name" : "Reshape_20843", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20843"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20734", "Sum_20832" ], - "name" : "Add_20844", - "op" : "Add", - "outputs" : ["Add_20844"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17588", "Reshape_20833" ], - "name" : "Dot_20845", - "op" : "Dot", - "outputs" : ["Dot_20845"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20834"], - "name" : "Reshape_20846", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20846"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20737", "Sum_20835" ], - "name" : "Add_20847", - "op" : "Add", - "outputs" : ["Add_20847"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17592", "Reshape_20836" ], - "name" : "Dot_20848", - "op" : "Dot", - "outputs" : ["Dot_20848"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20837"], - "name" : "Reshape_20849", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20849"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20839"], - "name" : "Reshape_20850", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20850"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20840"], - "name" : "Reshape_20851", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20851"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20842"], - "name" : "Reshape_20852", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20843"], - "name" : "Reshape_20853", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20853"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20845"], - "name" : "Reshape_20854", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20846"], - "name" : "Reshape_20855", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20855"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20848"], - "name" : "Reshape_20856", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20849"], - "name" : "Reshape_20857", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20857"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20850", "Reshape_18830" ], - "name" : "Add_20858", - "op" : "Add", - "outputs" : ["Add_20858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20749", "Reshape_20851" ], - "name" : "Add_20859", - "op" : "Add", - "outputs" : ["Add_20859"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20750", "Reshape_20853" ], - "name" : "Add_20860", - "op" : "Add", - "outputs" : ["Add_20860"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20854", "Reshape_20852" ], - "name" : "Add_20861", - "op" : "Add", - "outputs" : ["Add_20861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20752", "Reshape_20855" ], - "name" : "Add_20862", - "op" : "Add", - "outputs" : ["Add_20862"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20856"], - "name" : "Reshape_20863", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20754", "Reshape_20857" ], - "name" : "Add_20864", - "op" : "Add", - "outputs" : ["Add_20864"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20858", "Parameter_13930" ], - "name" : "Multiply_20865", - "op" : "Multiply", - "outputs" : ["Multiply_20865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17502", "Add_20858" ], - "name" : "Multiply_20866", - "op" : "Multiply", - "outputs" : ["Multiply_20866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20861", "Parameter_17514" ], - "name" : "Multiply_20867", - "op" : "Multiply", - "outputs" : ["Multiply_20867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17545", "Add_20861" ], - "name" : "Multiply_20868", - "op" : "Multiply", - "outputs" : ["Multiply_20868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20769", "Reshape_20863" ], - "name" : "Add_20869", - "op" : "Add", - "outputs" : ["Add_20869"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20865"], - "name" : "Negative_20870", - "op" : "Negative", - "outputs" : ["Negative_20870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20866", "Multiply_19362" ], - "name" : "Divide_20871", - "op" : "Divide", - "outputs" : ["Divide_20871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20867"], - "name" : "Negative_20872", - "op" : "Negative", - "outputs" : ["Negative_20872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20868", "Multiply_19363" ], - "name" : "Divide_20873", - "op" : "Divide", - "outputs" : ["Divide_20873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20764", "Add_20869" ], - "lower_bounds" : [ 0, 48, 0 ], - "name" : "ReplaceSlice_20874", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20874"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 49, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20870", "Parameter_17502" ], - "name" : "Multiply_20875", - "op" : "Multiply", - "outputs" : ["Multiply_20875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20774", "Divide_20871" ], - "name" : "Add_20876", - "op" : "Add", - "outputs" : ["Add_20876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20872", "Parameter_17545" ], - "name" : "Multiply_20877", - "op" : "Multiply", - "outputs" : ["Multiply_20877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20779", "Divide_20873" ], - "name" : "Add_20878", - "op" : "Add", - "outputs" : ["Add_20878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20874"], - "lower_bounds" : [ 0, 47, 0 ], - "name" : "Slice_20879", - "op" : "Slice", - "outputs" : ["Slice_20879"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 48, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20875", "Parameter_17503" ], - "name" : "Divide_20880", - "op" : "Divide", - "outputs" : ["Divide_20880"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20876", "Parameter_13933" ], - "name" : "Multiply_20881", - "op" : "Multiply", - "outputs" : ["Multiply_20881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17487", "Add_20876" ], - "name" : "Multiply_20882", - "op" : "Multiply", - "outputs" : ["Multiply_20882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20876", "Parameter_13942" ], - "name" : "Multiply_20883", - "op" : "Multiply", - "outputs" : ["Multiply_20883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17495", "Add_20876" ], - "name" : "Multiply_20884", - "op" : "Multiply", - "outputs" : ["Multiply_20884"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20877", "Parameter_17546" ], - "name" : "Divide_20885", - "op" : "Divide", - "outputs" : ["Divide_20885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20878", "Parameter_17517" ], - "name" : "Multiply_20886", - "op" : "Multiply", - "outputs" : ["Multiply_20886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17530", "Add_20878" ], - "name" : "Multiply_20887", - "op" : "Multiply", - "outputs" : ["Multiply_20887"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20878", "Parameter_17450" ], - "name" : "Multiply_20888", - "op" : "Multiply", - "outputs" : ["Multiply_20888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17538", "Add_20878" ], - "name" : "Multiply_20889", - "op" : "Multiply", - "outputs" : ["Multiply_20889"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20880", "Parameter_17504" ], - "name" : "Multiply_20890", - "op" : "Multiply", - "outputs" : ["Multiply_20890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20881"], - "name" : "Negative_20891", - "op" : "Negative", - "outputs" : ["Negative_20891"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20882", "Multiply_19358" ], - "name" : "Divide_20892", - "op" : "Divide", - "outputs" : ["Divide_20892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20883"], - "name" : "Negative_20893", - "op" : "Negative", - "outputs" : ["Negative_20893"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20885", "Parameter_17547" ], - "name" : "Multiply_20894", - "op" : "Multiply", - "outputs" : ["Multiply_20894"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20886"], - "name" : "Negative_20895", - "op" : "Negative", - "outputs" : ["Negative_20895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20887", "Multiply_19359" ], - "name" : "Divide_20896", - "op" : "Divide", - "outputs" : ["Divide_20896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20888"], - "name" : "Negative_20897", - "op" : "Negative", - "outputs" : ["Negative_20897"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20890"], - "name" : "Negative_20898", - "op" : "Negative", - "outputs" : ["Negative_20898"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20891", "Parameter_17487" ], - "name" : "Multiply_20899", - "op" : "Multiply", - "outputs" : ["Multiply_20899"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18551", "Divide_20892" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20900", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20900"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20893", "Parameter_17495" ], - "name" : "Multiply_20901", - "op" : "Multiply", - "outputs" : ["Multiply_20901"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20894"], - "name" : "Negative_20902", - "op" : "Negative", - "outputs" : ["Negative_20902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20895", "Parameter_17530" ], - "name" : "Multiply_20903", - "op" : "Multiply", - "outputs" : ["Multiply_20903"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18610", "Divide_20896" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_20904", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20904"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_20897", "Parameter_17538" ], - "name" : "Multiply_20905", - "op" : "Multiply", - "outputs" : ["Multiply_20905"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20899", "Parameter_17488" ], - "name" : "Divide_20906", - "op" : "Divide", - "outputs" : ["Divide_20906"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20900"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20907", - "op" : "Slice", - "outputs" : ["Slice_20907"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20901", "Parameter_17496" ], - "name" : "Divide_20908", - "op" : "Divide", - "outputs" : ["Divide_20908"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20903", "Parameter_17531" ], - "name" : "Divide_20909", - "op" : "Divide", - "outputs" : ["Divide_20909"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20904"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_20910", - "op" : "Slice", - "outputs" : ["Slice_20910"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20905", "Parameter_17539" ], - "name" : "Divide_20911", - "op" : "Divide", - "outputs" : ["Divide_20911"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20906", "Parameter_17489" ], - "name" : "Multiply_20912", - "op" : "Multiply", - "outputs" : ["Multiply_20912"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20908", "Parameter_17497" ], - "name" : "Multiply_20913", - "op" : "Multiply", - "outputs" : ["Multiply_20913"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20909", "Parameter_17532" ], - "name" : "Multiply_20914", - "op" : "Multiply", - "outputs" : ["Multiply_20914"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20911", "Parameter_17540" ], - "name" : "Multiply_20915", - "op" : "Multiply", - "outputs" : ["Multiply_20915"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20912"], - "name" : "Negative_20916", - "op" : "Negative", - "outputs" : ["Negative_20916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20913"], - "name" : "Negative_20917", - "op" : "Negative", - "outputs" : ["Negative_20917"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20914"], - "name" : "Negative_20918", - "op" : "Negative", - "outputs" : ["Negative_20918"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20915"], - "name" : "Negative_20919", - "op" : "Negative", - "outputs" : ["Negative_20919"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20907", "Negative_20916" ], - "name" : "Add_20920", - "op" : "Add", - "outputs" : ["Add_20920"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20910", "Negative_20918" ], - "name" : "Add_20921", - "op" : "Add", - "outputs" : ["Add_20921"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20900", "Add_20920" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20922", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20922"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20904", "Add_20921" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_20923", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20923"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20922"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20924", - "op" : "Slice", - "outputs" : ["Slice_20924"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20923"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_20925", - "op" : "Slice", - "outputs" : ["Slice_20925"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20924", "Negative_20917" ], - "name" : "Add_20926", - "op" : "Add", - "outputs" : ["Add_20926"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20925", "Negative_20919" ], - "name" : "Add_20927", - "op" : "Add", - "outputs" : ["Add_20927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20922", "Add_20926" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20928", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20928"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20923", "Add_20927" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_20929", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20929"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20928"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20930", - "op" : "Slice", - "outputs" : ["Slice_20930"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20929"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_20931", - "op" : "Slice", - "outputs" : ["Slice_20931"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20930", "Negative_20898" ], - "name" : "Add_20932", - "op" : "Add", - "outputs" : ["Add_20932"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20931", "Negative_20902" ], - "name" : "Add_20933", - "op" : "Add", - "outputs" : ["Add_20933"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20928", "Add_20932" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20934", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20934"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_20929", "Add_20933" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_20935", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20935"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20934"], - "name" : "Sum_20936", - "op" : "Sum", - "outputs" : ["Sum_20936"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20934"], - "name" : "Reshape_20937", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20937"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19353", "ReplaceSlice_20934" ], - "name" : "Dot_20938", - "op" : "Dot", - "outputs" : ["Dot_20938"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20934"], - "name" : "Sum_20939", - "op" : "Sum", - "outputs" : ["Sum_20939"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20934"], - "name" : "Reshape_20940", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20940"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19355", "ReplaceSlice_20934" ], - "name" : "Dot_20941", - "op" : "Dot", - "outputs" : ["Dot_20941"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20935"], - "name" : "Sum_20942", - "op" : "Sum", - "outputs" : ["Sum_20942"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20935"], - "name" : "Reshape_20943", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20943"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19354", "ReplaceSlice_20935" ], - "name" : "Dot_20944", - "op" : "Dot", - "outputs" : ["Dot_20944"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_20935"], - "name" : "Sum_20945", - "op" : "Sum", - "outputs" : ["Sum_20945"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_20935"], - "name" : "Reshape_20946", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_20946"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18709", "ReplaceSlice_20935" ], - "name" : "Dot_20947", - "op" : "Dot", - "outputs" : ["Dot_20947"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20838", "Sum_20936" ], - "name" : "Add_20948", - "op" : "Add", - "outputs" : ["Add_20948"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13939", "Reshape_20937" ], - "name" : "Dot_20949", - "op" : "Dot", - "outputs" : ["Dot_20949"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20938"], - "name" : "Reshape_20950", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20950"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20841", "Sum_20939" ], - "name" : "Add_20951", - "op" : "Add", - "outputs" : ["Add_20951"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17447", "Reshape_20940" ], - "name" : "Dot_20952", - "op" : "Dot", - "outputs" : ["Dot_20952"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20941"], - "name" : "Reshape_20953", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20953"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20844", "Sum_20942" ], - "name" : "Add_20954", - "op" : "Add", - "outputs" : ["Add_20954"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17523", "Reshape_20943" ], - "name" : "Dot_20955", - "op" : "Dot", - "outputs" : ["Dot_20955"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20944"], - "name" : "Reshape_20956", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20956"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20847", "Sum_20945" ], - "name" : "Add_20957", - "op" : "Add", - "outputs" : ["Add_20957"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17527", "Reshape_20946" ], - "name" : "Dot_20958", - "op" : "Dot", - "outputs" : ["Dot_20958"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_20947"], - "name" : "Reshape_20959", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_20959"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20949"], - "name" : "Reshape_20960", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20950"], - "name" : "Reshape_20961", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20961"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20952"], - "name" : "Reshape_20962", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20962"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20953"], - "name" : "Reshape_20963", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20963"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20955"], - "name" : "Reshape_20964", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20964"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20956"], - "name" : "Reshape_20965", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20965"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_20958"], - "name" : "Reshape_20966", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_20959"], - "name" : "Reshape_20967", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_20967"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20960", "Reshape_18829" ], - "name" : "Add_20968", - "op" : "Add", - "outputs" : ["Add_20968"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20859", "Reshape_20961" ], - "name" : "Add_20969", - "op" : "Add", - "outputs" : ["Add_20969"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20860", "Reshape_20963" ], - "name" : "Add_20970", - "op" : "Add", - "outputs" : ["Add_20970"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_20964", "Reshape_20962" ], - "name" : "Add_20971", - "op" : "Add", - "outputs" : ["Add_20971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20862", "Reshape_20965" ], - "name" : "Add_20972", - "op" : "Add", - "outputs" : ["Add_20972"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_20966"], - "name" : "Reshape_20973", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_20973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20864", "Reshape_20967" ], - "name" : "Add_20974", - "op" : "Add", - "outputs" : ["Add_20974"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20968", "Parameter_13941" ], - "name" : "Multiply_20975", - "op" : "Multiply", - "outputs" : ["Multiply_20975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17437", "Add_20968" ], - "name" : "Multiply_20976", - "op" : "Multiply", - "outputs" : ["Multiply_20976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20971", "Parameter_17449" ], - "name" : "Multiply_20977", - "op" : "Multiply", - "outputs" : ["Multiply_20977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17480", "Add_20971" ], - "name" : "Multiply_20978", - "op" : "Multiply", - "outputs" : ["Multiply_20978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20879", "Reshape_20973" ], - "name" : "Add_20979", - "op" : "Add", - "outputs" : ["Add_20979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_20975"], - "name" : "Negative_20980", - "op" : "Negative", - "outputs" : ["Negative_20980"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20976", "Multiply_19351" ], - "name" : "Divide_20981", - "op" : "Divide", - "outputs" : ["Divide_20981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20977"], - "name" : "Negative_20982", - "op" : "Negative", - "outputs" : ["Negative_20982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20978", "Multiply_19352" ], - "name" : "Divide_20983", - "op" : "Divide", - "outputs" : ["Divide_20983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20874", "Add_20979" ], - "lower_bounds" : [ 0, 47, 0 ], - "name" : "ReplaceSlice_20984", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_20984"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 48, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_20980", "Parameter_17437" ], - "name" : "Multiply_20985", - "op" : "Multiply", - "outputs" : ["Multiply_20985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20884", "Divide_20981" ], - "name" : "Add_20986", - "op" : "Add", - "outputs" : ["Add_20986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_20982", "Parameter_17480" ], - "name" : "Multiply_20987", - "op" : "Multiply", - "outputs" : ["Multiply_20987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20889", "Divide_20983" ], - "name" : "Add_20988", - "op" : "Add", - "outputs" : ["Add_20988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_20984"], - "lower_bounds" : [ 0, 46, 0 ], - "name" : "Slice_20989", - "op" : "Slice", - "outputs" : ["Slice_20989"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 47, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_20985", "Parameter_17438" ], - "name" : "Divide_20990", - "op" : "Divide", - "outputs" : ["Divide_20990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20986", "Parameter_13944" ], - "name" : "Multiply_20991", - "op" : "Multiply", - "outputs" : ["Multiply_20991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17422", "Add_20986" ], - "name" : "Multiply_20992", - "op" : "Multiply", - "outputs" : ["Multiply_20992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20986", "Parameter_13953" ], - "name" : "Multiply_20993", - "op" : "Multiply", - "outputs" : ["Multiply_20993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17430", "Add_20986" ], - "name" : "Multiply_20994", - "op" : "Multiply", - "outputs" : ["Multiply_20994"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20987", "Parameter_17481" ], - "name" : "Divide_20995", - "op" : "Divide", - "outputs" : ["Divide_20995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20988", "Parameter_17452" ], - "name" : "Multiply_20996", - "op" : "Multiply", - "outputs" : ["Multiply_20996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17465", "Add_20988" ], - "name" : "Multiply_20997", - "op" : "Multiply", - "outputs" : ["Multiply_20997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20988", "Parameter_17385" ], - "name" : "Multiply_20998", - "op" : "Multiply", - "outputs" : ["Multiply_20998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17473", "Add_20988" ], - "name" : "Multiply_20999", - "op" : "Multiply", - "outputs" : ["Multiply_20999"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20990", "Parameter_17439" ], - "name" : "Multiply_21000", - "op" : "Multiply", - "outputs" : ["Multiply_21000"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20991"], - "name" : "Negative_21001", - "op" : "Negative", - "outputs" : ["Negative_21001"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20992", "Multiply_19347" ], - "name" : "Divide_21002", - "op" : "Divide", - "outputs" : ["Divide_21002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20993"], - "name" : "Negative_21003", - "op" : "Negative", - "outputs" : ["Negative_21003"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_20995", "Parameter_17482" ], - "name" : "Multiply_21004", - "op" : "Multiply", - "outputs" : ["Multiply_21004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20996"], - "name" : "Negative_21005", - "op" : "Negative", - "outputs" : ["Negative_21005"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20997", "Multiply_19348" ], - "name" : "Divide_21006", - "op" : "Divide", - "outputs" : ["Divide_21006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_20998"], - "name" : "Negative_21007", - "op" : "Negative", - "outputs" : ["Negative_21007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21000"], - "name" : "Negative_21008", - "op" : "Negative", - "outputs" : ["Negative_21008"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21001", "Parameter_17422" ], - "name" : "Multiply_21009", - "op" : "Multiply", - "outputs" : ["Multiply_21009"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18552", "Divide_21002" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21010", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21010"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21003", "Parameter_17430" ], - "name" : "Multiply_21011", - "op" : "Multiply", - "outputs" : ["Multiply_21011"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21004"], - "name" : "Negative_21012", - "op" : "Negative", - "outputs" : ["Negative_21012"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21005", "Parameter_17465" ], - "name" : "Multiply_21013", - "op" : "Multiply", - "outputs" : ["Multiply_21013"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18611", "Divide_21006" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21014", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21014"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21007", "Parameter_17473" ], - "name" : "Multiply_21015", - "op" : "Multiply", - "outputs" : ["Multiply_21015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21009", "Parameter_17423" ], - "name" : "Divide_21016", - "op" : "Divide", - "outputs" : ["Divide_21016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21010"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21017", - "op" : "Slice", - "outputs" : ["Slice_21017"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21011", "Parameter_17431" ], - "name" : "Divide_21018", - "op" : "Divide", - "outputs" : ["Divide_21018"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21013", "Parameter_17466" ], - "name" : "Divide_21019", - "op" : "Divide", - "outputs" : ["Divide_21019"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21014"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21020", - "op" : "Slice", - "outputs" : ["Slice_21020"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21015", "Parameter_17474" ], - "name" : "Divide_21021", - "op" : "Divide", - "outputs" : ["Divide_21021"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21016", "Parameter_17424" ], - "name" : "Multiply_21022", - "op" : "Multiply", - "outputs" : ["Multiply_21022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21018", "Parameter_17432" ], - "name" : "Multiply_21023", - "op" : "Multiply", - "outputs" : ["Multiply_21023"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21019", "Parameter_17467" ], - "name" : "Multiply_21024", - "op" : "Multiply", - "outputs" : ["Multiply_21024"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21021", "Parameter_17475" ], - "name" : "Multiply_21025", - "op" : "Multiply", - "outputs" : ["Multiply_21025"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21022"], - "name" : "Negative_21026", - "op" : "Negative", - "outputs" : ["Negative_21026"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21023"], - "name" : "Negative_21027", - "op" : "Negative", - "outputs" : ["Negative_21027"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21024"], - "name" : "Negative_21028", - "op" : "Negative", - "outputs" : ["Negative_21028"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21025"], - "name" : "Negative_21029", - "op" : "Negative", - "outputs" : ["Negative_21029"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21017", "Negative_21026" ], - "name" : "Add_21030", - "op" : "Add", - "outputs" : ["Add_21030"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21020", "Negative_21028" ], - "name" : "Add_21031", - "op" : "Add", - "outputs" : ["Add_21031"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21010", "Add_21030" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21032", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21032"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21014", "Add_21031" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21033", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21033"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21032"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21034", - "op" : "Slice", - "outputs" : ["Slice_21034"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21033"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21035", - "op" : "Slice", - "outputs" : ["Slice_21035"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21034", "Negative_21027" ], - "name" : "Add_21036", - "op" : "Add", - "outputs" : ["Add_21036"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21035", "Negative_21029" ], - "name" : "Add_21037", - "op" : "Add", - "outputs" : ["Add_21037"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21032", "Add_21036" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21038", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21038"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21033", "Add_21037" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21039", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21039"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21038"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21040", - "op" : "Slice", - "outputs" : ["Slice_21040"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21039"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21041", - "op" : "Slice", - "outputs" : ["Slice_21041"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21040", "Negative_21008" ], - "name" : "Add_21042", - "op" : "Add", - "outputs" : ["Add_21042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21041", "Negative_21012" ], - "name" : "Add_21043", - "op" : "Add", - "outputs" : ["Add_21043"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21038", "Add_21042" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21044", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21044"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21039", "Add_21043" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21045", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21045"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21044"], - "name" : "Sum_21046", - "op" : "Sum", - "outputs" : ["Sum_21046"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21044"], - "name" : "Reshape_21047", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21047"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19342", "ReplaceSlice_21044" ], - "name" : "Dot_21048", - "op" : "Dot", - "outputs" : ["Dot_21048"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21044"], - "name" : "Sum_21049", - "op" : "Sum", - "outputs" : ["Sum_21049"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21044"], - "name" : "Reshape_21050", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21050"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19344", "ReplaceSlice_21044" ], - "name" : "Dot_21051", - "op" : "Dot", - "outputs" : ["Dot_21051"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21045"], - "name" : "Sum_21052", - "op" : "Sum", - "outputs" : ["Sum_21052"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21045"], - "name" : "Reshape_21053", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21053"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19343", "ReplaceSlice_21045" ], - "name" : "Dot_21054", - "op" : "Dot", - "outputs" : ["Dot_21054"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21045"], - "name" : "Sum_21055", - "op" : "Sum", - "outputs" : ["Sum_21055"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21045"], - "name" : "Reshape_21056", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21056"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18708", "ReplaceSlice_21045" ], - "name" : "Dot_21057", - "op" : "Dot", - "outputs" : ["Dot_21057"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20948", "Sum_21046" ], - "name" : "Add_21058", - "op" : "Add", - "outputs" : ["Add_21058"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13950", "Reshape_21047" ], - "name" : "Dot_21059", - "op" : "Dot", - "outputs" : ["Dot_21059"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21048"], - "name" : "Reshape_21060", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21060"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20951", "Sum_21049" ], - "name" : "Add_21061", - "op" : "Add", - "outputs" : ["Add_21061"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17382", "Reshape_21050" ], - "name" : "Dot_21062", - "op" : "Dot", - "outputs" : ["Dot_21062"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21051"], - "name" : "Reshape_21063", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21063"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20954", "Sum_21052" ], - "name" : "Add_21064", - "op" : "Add", - "outputs" : ["Add_21064"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17458", "Reshape_21053" ], - "name" : "Dot_21065", - "op" : "Dot", - "outputs" : ["Dot_21065"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21054"], - "name" : "Reshape_21066", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21066"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_20957", "Sum_21055" ], - "name" : "Add_21067", - "op" : "Add", - "outputs" : ["Add_21067"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17462", "Reshape_21056" ], - "name" : "Dot_21068", - "op" : "Dot", - "outputs" : ["Dot_21068"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21057"], - "name" : "Reshape_21069", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21069"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21059"], - "name" : "Reshape_21070", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21060"], - "name" : "Reshape_21071", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21071"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21062"], - "name" : "Reshape_21072", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21063"], - "name" : "Reshape_21073", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21073"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21065"], - "name" : "Reshape_21074", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21074"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21066"], - "name" : "Reshape_21075", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21075"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21068"], - "name" : "Reshape_21076", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21076"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21069"], - "name" : "Reshape_21077", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21077"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21070", "Reshape_18828" ], - "name" : "Add_21078", - "op" : "Add", - "outputs" : ["Add_21078"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20969", "Reshape_21071" ], - "name" : "Add_21079", - "op" : "Add", - "outputs" : ["Add_21079"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_20970", "Reshape_21073" ], - "name" : "Add_21080", - "op" : "Add", - "outputs" : ["Add_21080"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21074", "Reshape_21072" ], - "name" : "Add_21081", - "op" : "Add", - "outputs" : ["Add_21081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_20972", "Reshape_21075" ], - "name" : "Add_21082", - "op" : "Add", - "outputs" : ["Add_21082"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21076"], - "name" : "Reshape_21083", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_20974", "Reshape_21077" ], - "name" : "Add_21084", - "op" : "Add", - "outputs" : ["Add_21084"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21078", "Parameter_13952" ], - "name" : "Multiply_21085", - "op" : "Multiply", - "outputs" : ["Multiply_21085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17372", "Add_21078" ], - "name" : "Multiply_21086", - "op" : "Multiply", - "outputs" : ["Multiply_21086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21081", "Parameter_17384" ], - "name" : "Multiply_21087", - "op" : "Multiply", - "outputs" : ["Multiply_21087"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17415", "Add_21081" ], - "name" : "Multiply_21088", - "op" : "Multiply", - "outputs" : ["Multiply_21088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_20989", "Reshape_21083" ], - "name" : "Add_21089", - "op" : "Add", - "outputs" : ["Add_21089"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21085"], - "name" : "Negative_21090", - "op" : "Negative", - "outputs" : ["Negative_21090"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21086", "Multiply_19340" ], - "name" : "Divide_21091", - "op" : "Divide", - "outputs" : ["Divide_21091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21087"], - "name" : "Negative_21092", - "op" : "Negative", - "outputs" : ["Negative_21092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21088", "Multiply_19341" ], - "name" : "Divide_21093", - "op" : "Divide", - "outputs" : ["Divide_21093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_20984", "Add_21089" ], - "lower_bounds" : [ 0, 46, 0 ], - "name" : "ReplaceSlice_21094", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21094"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 47, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21090", "Parameter_17372" ], - "name" : "Multiply_21095", - "op" : "Multiply", - "outputs" : ["Multiply_21095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20994", "Divide_21091" ], - "name" : "Add_21096", - "op" : "Add", - "outputs" : ["Add_21096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21092", "Parameter_17415" ], - "name" : "Multiply_21097", - "op" : "Multiply", - "outputs" : ["Multiply_21097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_20999", "Divide_21093" ], - "name" : "Add_21098", - "op" : "Add", - "outputs" : ["Add_21098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21094"], - "lower_bounds" : [ 0, 45, 0 ], - "name" : "Slice_21099", - "op" : "Slice", - "outputs" : ["Slice_21099"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 46, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21095", "Parameter_17373" ], - "name" : "Divide_21100", - "op" : "Divide", - "outputs" : ["Divide_21100"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21096", "Parameter_13955" ], - "name" : "Multiply_21101", - "op" : "Multiply", - "outputs" : ["Multiply_21101"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17357", "Add_21096" ], - "name" : "Multiply_21102", - "op" : "Multiply", - "outputs" : ["Multiply_21102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21096", "Parameter_13964" ], - "name" : "Multiply_21103", - "op" : "Multiply", - "outputs" : ["Multiply_21103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17365", "Add_21096" ], - "name" : "Multiply_21104", - "op" : "Multiply", - "outputs" : ["Multiply_21104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21097", "Parameter_17416" ], - "name" : "Divide_21105", - "op" : "Divide", - "outputs" : ["Divide_21105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21098", "Parameter_17387" ], - "name" : "Multiply_21106", - "op" : "Multiply", - "outputs" : ["Multiply_21106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17400", "Add_21098" ], - "name" : "Multiply_21107", - "op" : "Multiply", - "outputs" : ["Multiply_21107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21098", "Parameter_17320" ], - "name" : "Multiply_21108", - "op" : "Multiply", - "outputs" : ["Multiply_21108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17408", "Add_21098" ], - "name" : "Multiply_21109", - "op" : "Multiply", - "outputs" : ["Multiply_21109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21100", "Parameter_17374" ], - "name" : "Multiply_21110", - "op" : "Multiply", - "outputs" : ["Multiply_21110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21101"], - "name" : "Negative_21111", - "op" : "Negative", - "outputs" : ["Negative_21111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21102", "Multiply_19336" ], - "name" : "Divide_21112", - "op" : "Divide", - "outputs" : ["Divide_21112"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21103"], - "name" : "Negative_21113", - "op" : "Negative", - "outputs" : ["Negative_21113"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21105", "Parameter_17417" ], - "name" : "Multiply_21114", - "op" : "Multiply", - "outputs" : ["Multiply_21114"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21106"], - "name" : "Negative_21115", - "op" : "Negative", - "outputs" : ["Negative_21115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21107", "Multiply_19337" ], - "name" : "Divide_21116", - "op" : "Divide", - "outputs" : ["Divide_21116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21108"], - "name" : "Negative_21117", - "op" : "Negative", - "outputs" : ["Negative_21117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21110"], - "name" : "Negative_21118", - "op" : "Negative", - "outputs" : ["Negative_21118"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21111", "Parameter_17357" ], - "name" : "Multiply_21119", - "op" : "Multiply", - "outputs" : ["Multiply_21119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18553", "Divide_21112" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21120", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21120"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21113", "Parameter_17365" ], - "name" : "Multiply_21121", - "op" : "Multiply", - "outputs" : ["Multiply_21121"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21114"], - "name" : "Negative_21122", - "op" : "Negative", - "outputs" : ["Negative_21122"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21115", "Parameter_17400" ], - "name" : "Multiply_21123", - "op" : "Multiply", - "outputs" : ["Multiply_21123"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18612", "Divide_21116" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21124", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21124"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21117", "Parameter_17408" ], - "name" : "Multiply_21125", - "op" : "Multiply", - "outputs" : ["Multiply_21125"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21119", "Parameter_17358" ], - "name" : "Divide_21126", - "op" : "Divide", - "outputs" : ["Divide_21126"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21120"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21127", - "op" : "Slice", - "outputs" : ["Slice_21127"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21121", "Parameter_17366" ], - "name" : "Divide_21128", - "op" : "Divide", - "outputs" : ["Divide_21128"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21123", "Parameter_17401" ], - "name" : "Divide_21129", - "op" : "Divide", - "outputs" : ["Divide_21129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21124"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21130", - "op" : "Slice", - "outputs" : ["Slice_21130"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21125", "Parameter_17409" ], - "name" : "Divide_21131", - "op" : "Divide", - "outputs" : ["Divide_21131"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21126", "Parameter_17359" ], - "name" : "Multiply_21132", - "op" : "Multiply", - "outputs" : ["Multiply_21132"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21128", "Parameter_17367" ], - "name" : "Multiply_21133", - "op" : "Multiply", - "outputs" : ["Multiply_21133"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21129", "Parameter_17402" ], - "name" : "Multiply_21134", - "op" : "Multiply", - "outputs" : ["Multiply_21134"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21131", "Parameter_17410" ], - "name" : "Multiply_21135", - "op" : "Multiply", - "outputs" : ["Multiply_21135"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21132"], - "name" : "Negative_21136", - "op" : "Negative", - "outputs" : ["Negative_21136"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21133"], - "name" : "Negative_21137", - "op" : "Negative", - "outputs" : ["Negative_21137"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21134"], - "name" : "Negative_21138", - "op" : "Negative", - "outputs" : ["Negative_21138"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21135"], - "name" : "Negative_21139", - "op" : "Negative", - "outputs" : ["Negative_21139"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21127", "Negative_21136" ], - "name" : "Add_21140", - "op" : "Add", - "outputs" : ["Add_21140"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21130", "Negative_21138" ], - "name" : "Add_21141", - "op" : "Add", - "outputs" : ["Add_21141"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21120", "Add_21140" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21142", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21142"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21124", "Add_21141" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21143", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21143"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21142"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21144", - "op" : "Slice", - "outputs" : ["Slice_21144"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21143"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21145", - "op" : "Slice", - "outputs" : ["Slice_21145"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21144", "Negative_21137" ], - "name" : "Add_21146", - "op" : "Add", - "outputs" : ["Add_21146"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21145", "Negative_21139" ], - "name" : "Add_21147", - "op" : "Add", - "outputs" : ["Add_21147"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21142", "Add_21146" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21148", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21148"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21143", "Add_21147" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21149", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21149"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21148"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21150", - "op" : "Slice", - "outputs" : ["Slice_21150"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21149"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21151", - "op" : "Slice", - "outputs" : ["Slice_21151"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21150", "Negative_21118" ], - "name" : "Add_21152", - "op" : "Add", - "outputs" : ["Add_21152"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21151", "Negative_21122" ], - "name" : "Add_21153", - "op" : "Add", - "outputs" : ["Add_21153"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21148", "Add_21152" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21154", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21154"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21149", "Add_21153" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21155", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21155"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21154"], - "name" : "Sum_21156", - "op" : "Sum", - "outputs" : ["Sum_21156"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21154"], - "name" : "Reshape_21157", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21157"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19331", "ReplaceSlice_21154" ], - "name" : "Dot_21158", - "op" : "Dot", - "outputs" : ["Dot_21158"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21154"], - "name" : "Sum_21159", - "op" : "Sum", - "outputs" : ["Sum_21159"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21154"], - "name" : "Reshape_21160", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21160"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19333", "ReplaceSlice_21154" ], - "name" : "Dot_21161", - "op" : "Dot", - "outputs" : ["Dot_21161"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21155"], - "name" : "Sum_21162", - "op" : "Sum", - "outputs" : ["Sum_21162"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21155"], - "name" : "Reshape_21163", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21163"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19332", "ReplaceSlice_21155" ], - "name" : "Dot_21164", - "op" : "Dot", - "outputs" : ["Dot_21164"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21155"], - "name" : "Sum_21165", - "op" : "Sum", - "outputs" : ["Sum_21165"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21155"], - "name" : "Reshape_21166", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21166"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18707", "ReplaceSlice_21155" ], - "name" : "Dot_21167", - "op" : "Dot", - "outputs" : ["Dot_21167"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21058", "Sum_21156" ], - "name" : "Add_21168", - "op" : "Add", - "outputs" : ["Add_21168"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13961", "Reshape_21157" ], - "name" : "Dot_21169", - "op" : "Dot", - "outputs" : ["Dot_21169"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21158"], - "name" : "Reshape_21170", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21170"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21061", "Sum_21159" ], - "name" : "Add_21171", - "op" : "Add", - "outputs" : ["Add_21171"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17317", "Reshape_21160" ], - "name" : "Dot_21172", - "op" : "Dot", - "outputs" : ["Dot_21172"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21161"], - "name" : "Reshape_21173", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21173"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21064", "Sum_21162" ], - "name" : "Add_21174", - "op" : "Add", - "outputs" : ["Add_21174"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17393", "Reshape_21163" ], - "name" : "Dot_21175", - "op" : "Dot", - "outputs" : ["Dot_21175"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21164"], - "name" : "Reshape_21176", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21176"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21067", "Sum_21165" ], - "name" : "Add_21177", - "op" : "Add", - "outputs" : ["Add_21177"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17397", "Reshape_21166" ], - "name" : "Dot_21178", - "op" : "Dot", - "outputs" : ["Dot_21178"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21167"], - "name" : "Reshape_21179", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21179"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21169"], - "name" : "Reshape_21180", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21170"], - "name" : "Reshape_21181", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21181"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21172"], - "name" : "Reshape_21182", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21173"], - "name" : "Reshape_21183", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21183"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21175"], - "name" : "Reshape_21184", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21184"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21176"], - "name" : "Reshape_21185", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21185"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21178"], - "name" : "Reshape_21186", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21179"], - "name" : "Reshape_21187", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21187"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21180", "Reshape_18827" ], - "name" : "Add_21188", - "op" : "Add", - "outputs" : ["Add_21188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21079", "Reshape_21181" ], - "name" : "Add_21189", - "op" : "Add", - "outputs" : ["Add_21189"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21080", "Reshape_21183" ], - "name" : "Add_21190", - "op" : "Add", - "outputs" : ["Add_21190"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21184", "Reshape_21182" ], - "name" : "Add_21191", - "op" : "Add", - "outputs" : ["Add_21191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21082", "Reshape_21185" ], - "name" : "Add_21192", - "op" : "Add", - "outputs" : ["Add_21192"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21186"], - "name" : "Reshape_21193", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21084", "Reshape_21187" ], - "name" : "Add_21194", - "op" : "Add", - "outputs" : ["Add_21194"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21188", "Parameter_13963" ], - "name" : "Multiply_21195", - "op" : "Multiply", - "outputs" : ["Multiply_21195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17307", "Add_21188" ], - "name" : "Multiply_21196", - "op" : "Multiply", - "outputs" : ["Multiply_21196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21191", "Parameter_17319" ], - "name" : "Multiply_21197", - "op" : "Multiply", - "outputs" : ["Multiply_21197"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17350", "Add_21191" ], - "name" : "Multiply_21198", - "op" : "Multiply", - "outputs" : ["Multiply_21198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21099", "Reshape_21193" ], - "name" : "Add_21199", - "op" : "Add", - "outputs" : ["Add_21199"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21195"], - "name" : "Negative_21200", - "op" : "Negative", - "outputs" : ["Negative_21200"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21196", "Multiply_19329" ], - "name" : "Divide_21201", - "op" : "Divide", - "outputs" : ["Divide_21201"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21197"], - "name" : "Negative_21202", - "op" : "Negative", - "outputs" : ["Negative_21202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21198", "Multiply_19330" ], - "name" : "Divide_21203", - "op" : "Divide", - "outputs" : ["Divide_21203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21094", "Add_21199" ], - "lower_bounds" : [ 0, 45, 0 ], - "name" : "ReplaceSlice_21204", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21204"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 46, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21200", "Parameter_17307" ], - "name" : "Multiply_21205", - "op" : "Multiply", - "outputs" : ["Multiply_21205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21104", "Divide_21201" ], - "name" : "Add_21206", - "op" : "Add", - "outputs" : ["Add_21206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21202", "Parameter_17350" ], - "name" : "Multiply_21207", - "op" : "Multiply", - "outputs" : ["Multiply_21207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21109", "Divide_21203" ], - "name" : "Add_21208", - "op" : "Add", - "outputs" : ["Add_21208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21204"], - "lower_bounds" : [ 0, 44, 0 ], - "name" : "Slice_21209", - "op" : "Slice", - "outputs" : ["Slice_21209"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 45, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21205", "Parameter_17308" ], - "name" : "Divide_21210", - "op" : "Divide", - "outputs" : ["Divide_21210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21206", "Parameter_13966" ], - "name" : "Multiply_21211", - "op" : "Multiply", - "outputs" : ["Multiply_21211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17292", "Add_21206" ], - "name" : "Multiply_21212", - "op" : "Multiply", - "outputs" : ["Multiply_21212"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21206", "Parameter_13975" ], - "name" : "Multiply_21213", - "op" : "Multiply", - "outputs" : ["Multiply_21213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17300", "Add_21206" ], - "name" : "Multiply_21214", - "op" : "Multiply", - "outputs" : ["Multiply_21214"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21207", "Parameter_17351" ], - "name" : "Divide_21215", - "op" : "Divide", - "outputs" : ["Divide_21215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21208", "Parameter_17322" ], - "name" : "Multiply_21216", - "op" : "Multiply", - "outputs" : ["Multiply_21216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17335", "Add_21208" ], - "name" : "Multiply_21217", - "op" : "Multiply", - "outputs" : ["Multiply_21217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21208", "Parameter_17255" ], - "name" : "Multiply_21218", - "op" : "Multiply", - "outputs" : ["Multiply_21218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17343", "Add_21208" ], - "name" : "Multiply_21219", - "op" : "Multiply", - "outputs" : ["Multiply_21219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21210", "Parameter_17309" ], - "name" : "Multiply_21220", - "op" : "Multiply", - "outputs" : ["Multiply_21220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21211"], - "name" : "Negative_21221", - "op" : "Negative", - "outputs" : ["Negative_21221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21212", "Multiply_19325" ], - "name" : "Divide_21222", - "op" : "Divide", - "outputs" : ["Divide_21222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21213"], - "name" : "Negative_21223", - "op" : "Negative", - "outputs" : ["Negative_21223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21215", "Parameter_17352" ], - "name" : "Multiply_21224", - "op" : "Multiply", - "outputs" : ["Multiply_21224"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21216"], - "name" : "Negative_21225", - "op" : "Negative", - "outputs" : ["Negative_21225"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21217", "Multiply_19326" ], - "name" : "Divide_21226", - "op" : "Divide", - "outputs" : ["Divide_21226"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21218"], - "name" : "Negative_21227", - "op" : "Negative", - "outputs" : ["Negative_21227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21220"], - "name" : "Negative_21228", - "op" : "Negative", - "outputs" : ["Negative_21228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21221", "Parameter_17292" ], - "name" : "Multiply_21229", - "op" : "Multiply", - "outputs" : ["Multiply_21229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18554", "Divide_21222" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21230", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21230"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21223", "Parameter_17300" ], - "name" : "Multiply_21231", - "op" : "Multiply", - "outputs" : ["Multiply_21231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21224"], - "name" : "Negative_21232", - "op" : "Negative", - "outputs" : ["Negative_21232"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21225", "Parameter_17335" ], - "name" : "Multiply_21233", - "op" : "Multiply", - "outputs" : ["Multiply_21233"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18613", "Divide_21226" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21234", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21234"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21227", "Parameter_17343" ], - "name" : "Multiply_21235", - "op" : "Multiply", - "outputs" : ["Multiply_21235"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21229", "Parameter_17293" ], - "name" : "Divide_21236", - "op" : "Divide", - "outputs" : ["Divide_21236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21230"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21237", - "op" : "Slice", - "outputs" : ["Slice_21237"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21231", "Parameter_17301" ], - "name" : "Divide_21238", - "op" : "Divide", - "outputs" : ["Divide_21238"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21233", "Parameter_17336" ], - "name" : "Divide_21239", - "op" : "Divide", - "outputs" : ["Divide_21239"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21234"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21240", - "op" : "Slice", - "outputs" : ["Slice_21240"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21235", "Parameter_17344" ], - "name" : "Divide_21241", - "op" : "Divide", - "outputs" : ["Divide_21241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21236", "Parameter_17294" ], - "name" : "Multiply_21242", - "op" : "Multiply", - "outputs" : ["Multiply_21242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21238", "Parameter_17302" ], - "name" : "Multiply_21243", - "op" : "Multiply", - "outputs" : ["Multiply_21243"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21239", "Parameter_17337" ], - "name" : "Multiply_21244", - "op" : "Multiply", - "outputs" : ["Multiply_21244"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21241", "Parameter_17345" ], - "name" : "Multiply_21245", - "op" : "Multiply", - "outputs" : ["Multiply_21245"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21242"], - "name" : "Negative_21246", - "op" : "Negative", - "outputs" : ["Negative_21246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21243"], - "name" : "Negative_21247", - "op" : "Negative", - "outputs" : ["Negative_21247"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21244"], - "name" : "Negative_21248", - "op" : "Negative", - "outputs" : ["Negative_21248"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21245"], - "name" : "Negative_21249", - "op" : "Negative", - "outputs" : ["Negative_21249"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21237", "Negative_21246" ], - "name" : "Add_21250", - "op" : "Add", - "outputs" : ["Add_21250"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21240", "Negative_21248" ], - "name" : "Add_21251", - "op" : "Add", - "outputs" : ["Add_21251"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21230", "Add_21250" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21252", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21252"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21234", "Add_21251" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21253", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21253"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21252"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21254", - "op" : "Slice", - "outputs" : ["Slice_21254"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21253"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21255", - "op" : "Slice", - "outputs" : ["Slice_21255"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21254", "Negative_21247" ], - "name" : "Add_21256", - "op" : "Add", - "outputs" : ["Add_21256"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21255", "Negative_21249" ], - "name" : "Add_21257", - "op" : "Add", - "outputs" : ["Add_21257"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21252", "Add_21256" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21258", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21258"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21253", "Add_21257" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21259", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21259"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21258"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21260", - "op" : "Slice", - "outputs" : ["Slice_21260"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21259"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21261", - "op" : "Slice", - "outputs" : ["Slice_21261"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21260", "Negative_21228" ], - "name" : "Add_21262", - "op" : "Add", - "outputs" : ["Add_21262"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21261", "Negative_21232" ], - "name" : "Add_21263", - "op" : "Add", - "outputs" : ["Add_21263"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21258", "Add_21262" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21264", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21264"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21259", "Add_21263" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21265", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21265"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21264"], - "name" : "Sum_21266", - "op" : "Sum", - "outputs" : ["Sum_21266"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21264"], - "name" : "Reshape_21267", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21267"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19320", "ReplaceSlice_21264" ], - "name" : "Dot_21268", - "op" : "Dot", - "outputs" : ["Dot_21268"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21264"], - "name" : "Sum_21269", - "op" : "Sum", - "outputs" : ["Sum_21269"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21264"], - "name" : "Reshape_21270", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21270"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19322", "ReplaceSlice_21264" ], - "name" : "Dot_21271", - "op" : "Dot", - "outputs" : ["Dot_21271"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21265"], - "name" : "Sum_21272", - "op" : "Sum", - "outputs" : ["Sum_21272"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21265"], - "name" : "Reshape_21273", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21273"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19321", "ReplaceSlice_21265" ], - "name" : "Dot_21274", - "op" : "Dot", - "outputs" : ["Dot_21274"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21265"], - "name" : "Sum_21275", - "op" : "Sum", - "outputs" : ["Sum_21275"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21265"], - "name" : "Reshape_21276", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21276"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18706", "ReplaceSlice_21265" ], - "name" : "Dot_21277", - "op" : "Dot", - "outputs" : ["Dot_21277"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21168", "Sum_21266" ], - "name" : "Add_21278", - "op" : "Add", - "outputs" : ["Add_21278"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13972", "Reshape_21267" ], - "name" : "Dot_21279", - "op" : "Dot", - "outputs" : ["Dot_21279"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21268"], - "name" : "Reshape_21280", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21280"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21171", "Sum_21269" ], - "name" : "Add_21281", - "op" : "Add", - "outputs" : ["Add_21281"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17252", "Reshape_21270" ], - "name" : "Dot_21282", - "op" : "Dot", - "outputs" : ["Dot_21282"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21271"], - "name" : "Reshape_21283", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21283"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21174", "Sum_21272" ], - "name" : "Add_21284", - "op" : "Add", - "outputs" : ["Add_21284"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17328", "Reshape_21273" ], - "name" : "Dot_21285", - "op" : "Dot", - "outputs" : ["Dot_21285"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21274"], - "name" : "Reshape_21286", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21286"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21177", "Sum_21275" ], - "name" : "Add_21287", - "op" : "Add", - "outputs" : ["Add_21287"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17332", "Reshape_21276" ], - "name" : "Dot_21288", - "op" : "Dot", - "outputs" : ["Dot_21288"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21277"], - "name" : "Reshape_21289", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21289"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21279"], - "name" : "Reshape_21290", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21280"], - "name" : "Reshape_21291", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21291"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21282"], - "name" : "Reshape_21292", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21283"], - "name" : "Reshape_21293", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21293"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21285"], - "name" : "Reshape_21294", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21286"], - "name" : "Reshape_21295", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21295"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21288"], - "name" : "Reshape_21296", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21289"], - "name" : "Reshape_21297", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21297"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21290", "Reshape_18826" ], - "name" : "Add_21298", - "op" : "Add", - "outputs" : ["Add_21298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21189", "Reshape_21291" ], - "name" : "Add_21299", - "op" : "Add", - "outputs" : ["Add_21299"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21190", "Reshape_21293" ], - "name" : "Add_21300", - "op" : "Add", - "outputs" : ["Add_21300"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21294", "Reshape_21292" ], - "name" : "Add_21301", - "op" : "Add", - "outputs" : ["Add_21301"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21192", "Reshape_21295" ], - "name" : "Add_21302", - "op" : "Add", - "outputs" : ["Add_21302"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21296"], - "name" : "Reshape_21303", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21194", "Reshape_21297" ], - "name" : "Add_21304", - "op" : "Add", - "outputs" : ["Add_21304"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21298", "Parameter_13974" ], - "name" : "Multiply_21305", - "op" : "Multiply", - "outputs" : ["Multiply_21305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17242", "Add_21298" ], - "name" : "Multiply_21306", - "op" : "Multiply", - "outputs" : ["Multiply_21306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21301", "Parameter_17254" ], - "name" : "Multiply_21307", - "op" : "Multiply", - "outputs" : ["Multiply_21307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17285", "Add_21301" ], - "name" : "Multiply_21308", - "op" : "Multiply", - "outputs" : ["Multiply_21308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21209", "Reshape_21303" ], - "name" : "Add_21309", - "op" : "Add", - "outputs" : ["Add_21309"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21305"], - "name" : "Negative_21310", - "op" : "Negative", - "outputs" : ["Negative_21310"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21306", "Multiply_19318" ], - "name" : "Divide_21311", - "op" : "Divide", - "outputs" : ["Divide_21311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21307"], - "name" : "Negative_21312", - "op" : "Negative", - "outputs" : ["Negative_21312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21308", "Multiply_19319" ], - "name" : "Divide_21313", - "op" : "Divide", - "outputs" : ["Divide_21313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21204", "Add_21309" ], - "lower_bounds" : [ 0, 44, 0 ], - "name" : "ReplaceSlice_21314", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21314"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 45, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21310", "Parameter_17242" ], - "name" : "Multiply_21315", - "op" : "Multiply", - "outputs" : ["Multiply_21315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21214", "Divide_21311" ], - "name" : "Add_21316", - "op" : "Add", - "outputs" : ["Add_21316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21312", "Parameter_17285" ], - "name" : "Multiply_21317", - "op" : "Multiply", - "outputs" : ["Multiply_21317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21219", "Divide_21313" ], - "name" : "Add_21318", - "op" : "Add", - "outputs" : ["Add_21318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21314"], - "lower_bounds" : [ 0, 43, 0 ], - "name" : "Slice_21319", - "op" : "Slice", - "outputs" : ["Slice_21319"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 44, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21315", "Parameter_17243" ], - "name" : "Divide_21320", - "op" : "Divide", - "outputs" : ["Divide_21320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21316", "Parameter_13977" ], - "name" : "Multiply_21321", - "op" : "Multiply", - "outputs" : ["Multiply_21321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17227", "Add_21316" ], - "name" : "Multiply_21322", - "op" : "Multiply", - "outputs" : ["Multiply_21322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21316", "Parameter_13986" ], - "name" : "Multiply_21323", - "op" : "Multiply", - "outputs" : ["Multiply_21323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17235", "Add_21316" ], - "name" : "Multiply_21324", - "op" : "Multiply", - "outputs" : ["Multiply_21324"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21317", "Parameter_17286" ], - "name" : "Divide_21325", - "op" : "Divide", - "outputs" : ["Divide_21325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21318", "Parameter_17257" ], - "name" : "Multiply_21326", - "op" : "Multiply", - "outputs" : ["Multiply_21326"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17270", "Add_21318" ], - "name" : "Multiply_21327", - "op" : "Multiply", - "outputs" : ["Multiply_21327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21318", "Parameter_17190" ], - "name" : "Multiply_21328", - "op" : "Multiply", - "outputs" : ["Multiply_21328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17278", "Add_21318" ], - "name" : "Multiply_21329", - "op" : "Multiply", - "outputs" : ["Multiply_21329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21320", "Parameter_17244" ], - "name" : "Multiply_21330", - "op" : "Multiply", - "outputs" : ["Multiply_21330"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21321"], - "name" : "Negative_21331", - "op" : "Negative", - "outputs" : ["Negative_21331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21322", "Multiply_19314" ], - "name" : "Divide_21332", - "op" : "Divide", - "outputs" : ["Divide_21332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21323"], - "name" : "Negative_21333", - "op" : "Negative", - "outputs" : ["Negative_21333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21325", "Parameter_17287" ], - "name" : "Multiply_21334", - "op" : "Multiply", - "outputs" : ["Multiply_21334"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21326"], - "name" : "Negative_21335", - "op" : "Negative", - "outputs" : ["Negative_21335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21327", "Multiply_19315" ], - "name" : "Divide_21336", - "op" : "Divide", - "outputs" : ["Divide_21336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21328"], - "name" : "Negative_21337", - "op" : "Negative", - "outputs" : ["Negative_21337"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21330"], - "name" : "Negative_21338", - "op" : "Negative", - "outputs" : ["Negative_21338"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21331", "Parameter_17227" ], - "name" : "Multiply_21339", - "op" : "Multiply", - "outputs" : ["Multiply_21339"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18555", "Divide_21332" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21340", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21340"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21333", "Parameter_17235" ], - "name" : "Multiply_21341", - "op" : "Multiply", - "outputs" : ["Multiply_21341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21334"], - "name" : "Negative_21342", - "op" : "Negative", - "outputs" : ["Negative_21342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21335", "Parameter_17270" ], - "name" : "Multiply_21343", - "op" : "Multiply", - "outputs" : ["Multiply_21343"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18614", "Divide_21336" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21344", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21344"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21337", "Parameter_17278" ], - "name" : "Multiply_21345", - "op" : "Multiply", - "outputs" : ["Multiply_21345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21339", "Parameter_17228" ], - "name" : "Divide_21346", - "op" : "Divide", - "outputs" : ["Divide_21346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21340"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21347", - "op" : "Slice", - "outputs" : ["Slice_21347"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21341", "Parameter_17236" ], - "name" : "Divide_21348", - "op" : "Divide", - "outputs" : ["Divide_21348"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21343", "Parameter_17271" ], - "name" : "Divide_21349", - "op" : "Divide", - "outputs" : ["Divide_21349"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21344"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21350", - "op" : "Slice", - "outputs" : ["Slice_21350"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21345", "Parameter_17279" ], - "name" : "Divide_21351", - "op" : "Divide", - "outputs" : ["Divide_21351"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21346", "Parameter_17229" ], - "name" : "Multiply_21352", - "op" : "Multiply", - "outputs" : ["Multiply_21352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21348", "Parameter_17237" ], - "name" : "Multiply_21353", - "op" : "Multiply", - "outputs" : ["Multiply_21353"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21349", "Parameter_17272" ], - "name" : "Multiply_21354", - "op" : "Multiply", - "outputs" : ["Multiply_21354"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21351", "Parameter_17280" ], - "name" : "Multiply_21355", - "op" : "Multiply", - "outputs" : ["Multiply_21355"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21352"], - "name" : "Negative_21356", - "op" : "Negative", - "outputs" : ["Negative_21356"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21353"], - "name" : "Negative_21357", - "op" : "Negative", - "outputs" : ["Negative_21357"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21354"], - "name" : "Negative_21358", - "op" : "Negative", - "outputs" : ["Negative_21358"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21355"], - "name" : "Negative_21359", - "op" : "Negative", - "outputs" : ["Negative_21359"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21347", "Negative_21356" ], - "name" : "Add_21360", - "op" : "Add", - "outputs" : ["Add_21360"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21350", "Negative_21358" ], - "name" : "Add_21361", - "op" : "Add", - "outputs" : ["Add_21361"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21340", "Add_21360" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21362", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21362"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21344", "Add_21361" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21363", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21363"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21362"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21364", - "op" : "Slice", - "outputs" : ["Slice_21364"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21363"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21365", - "op" : "Slice", - "outputs" : ["Slice_21365"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21364", "Negative_21357" ], - "name" : "Add_21366", - "op" : "Add", - "outputs" : ["Add_21366"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21365", "Negative_21359" ], - "name" : "Add_21367", - "op" : "Add", - "outputs" : ["Add_21367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21362", "Add_21366" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21368", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21368"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21363", "Add_21367" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21369", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21369"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21368"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21370", - "op" : "Slice", - "outputs" : ["Slice_21370"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21369"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21371", - "op" : "Slice", - "outputs" : ["Slice_21371"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21370", "Negative_21338" ], - "name" : "Add_21372", - "op" : "Add", - "outputs" : ["Add_21372"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21371", "Negative_21342" ], - "name" : "Add_21373", - "op" : "Add", - "outputs" : ["Add_21373"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21368", "Add_21372" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21374", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21374"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21369", "Add_21373" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21375", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21375"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21374"], - "name" : "Sum_21376", - "op" : "Sum", - "outputs" : ["Sum_21376"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21374"], - "name" : "Reshape_21377", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21377"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19309", "ReplaceSlice_21374" ], - "name" : "Dot_21378", - "op" : "Dot", - "outputs" : ["Dot_21378"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21374"], - "name" : "Sum_21379", - "op" : "Sum", - "outputs" : ["Sum_21379"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21374"], - "name" : "Reshape_21380", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21380"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19311", "ReplaceSlice_21374" ], - "name" : "Dot_21381", - "op" : "Dot", - "outputs" : ["Dot_21381"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21375"], - "name" : "Sum_21382", - "op" : "Sum", - "outputs" : ["Sum_21382"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21375"], - "name" : "Reshape_21383", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21383"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19310", "ReplaceSlice_21375" ], - "name" : "Dot_21384", - "op" : "Dot", - "outputs" : ["Dot_21384"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21375"], - "name" : "Sum_21385", - "op" : "Sum", - "outputs" : ["Sum_21385"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21375"], - "name" : "Reshape_21386", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21386"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18705", "ReplaceSlice_21375" ], - "name" : "Dot_21387", - "op" : "Dot", - "outputs" : ["Dot_21387"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21278", "Sum_21376" ], - "name" : "Add_21388", - "op" : "Add", - "outputs" : ["Add_21388"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13983", "Reshape_21377" ], - "name" : "Dot_21389", - "op" : "Dot", - "outputs" : ["Dot_21389"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21378"], - "name" : "Reshape_21390", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21390"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21281", "Sum_21379" ], - "name" : "Add_21391", - "op" : "Add", - "outputs" : ["Add_21391"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17187", "Reshape_21380" ], - "name" : "Dot_21392", - "op" : "Dot", - "outputs" : ["Dot_21392"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21381"], - "name" : "Reshape_21393", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21393"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21284", "Sum_21382" ], - "name" : "Add_21394", - "op" : "Add", - "outputs" : ["Add_21394"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17263", "Reshape_21383" ], - "name" : "Dot_21395", - "op" : "Dot", - "outputs" : ["Dot_21395"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21384"], - "name" : "Reshape_21396", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21396"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21287", "Sum_21385" ], - "name" : "Add_21397", - "op" : "Add", - "outputs" : ["Add_21397"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17267", "Reshape_21386" ], - "name" : "Dot_21398", - "op" : "Dot", - "outputs" : ["Dot_21398"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21387"], - "name" : "Reshape_21399", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21399"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21389"], - "name" : "Reshape_21400", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21400"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21390"], - "name" : "Reshape_21401", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21401"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21392"], - "name" : "Reshape_21402", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21393"], - "name" : "Reshape_21403", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21403"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21395"], - "name" : "Reshape_21404", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21396"], - "name" : "Reshape_21405", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21405"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21398"], - "name" : "Reshape_21406", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21399"], - "name" : "Reshape_21407", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21407"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21400", "Reshape_18825" ], - "name" : "Add_21408", - "op" : "Add", - "outputs" : ["Add_21408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21299", "Reshape_21401" ], - "name" : "Add_21409", - "op" : "Add", - "outputs" : ["Add_21409"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21300", "Reshape_21403" ], - "name" : "Add_21410", - "op" : "Add", - "outputs" : ["Add_21410"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21404", "Reshape_21402" ], - "name" : "Add_21411", - "op" : "Add", - "outputs" : ["Add_21411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21302", "Reshape_21405" ], - "name" : "Add_21412", - "op" : "Add", - "outputs" : ["Add_21412"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21406"], - "name" : "Reshape_21413", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21304", "Reshape_21407" ], - "name" : "Add_21414", - "op" : "Add", - "outputs" : ["Add_21414"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21408", "Parameter_13985" ], - "name" : "Multiply_21415", - "op" : "Multiply", - "outputs" : ["Multiply_21415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17177", "Add_21408" ], - "name" : "Multiply_21416", - "op" : "Multiply", - "outputs" : ["Multiply_21416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21411", "Parameter_17189" ], - "name" : "Multiply_21417", - "op" : "Multiply", - "outputs" : ["Multiply_21417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17220", "Add_21411" ], - "name" : "Multiply_21418", - "op" : "Multiply", - "outputs" : ["Multiply_21418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21319", "Reshape_21413" ], - "name" : "Add_21419", - "op" : "Add", - "outputs" : ["Add_21419"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21415"], - "name" : "Negative_21420", - "op" : "Negative", - "outputs" : ["Negative_21420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21416", "Multiply_19307" ], - "name" : "Divide_21421", - "op" : "Divide", - "outputs" : ["Divide_21421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21417"], - "name" : "Negative_21422", - "op" : "Negative", - "outputs" : ["Negative_21422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21418", "Multiply_19308" ], - "name" : "Divide_21423", - "op" : "Divide", - "outputs" : ["Divide_21423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21314", "Add_21419" ], - "lower_bounds" : [ 0, 43, 0 ], - "name" : "ReplaceSlice_21424", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21424"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 44, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21420", "Parameter_17177" ], - "name" : "Multiply_21425", - "op" : "Multiply", - "outputs" : ["Multiply_21425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21324", "Divide_21421" ], - "name" : "Add_21426", - "op" : "Add", - "outputs" : ["Add_21426"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21422", "Parameter_17220" ], - "name" : "Multiply_21427", - "op" : "Multiply", - "outputs" : ["Multiply_21427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21329", "Divide_21423" ], - "name" : "Add_21428", - "op" : "Add", - "outputs" : ["Add_21428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21424"], - "lower_bounds" : [ 0, 42, 0 ], - "name" : "Slice_21429", - "op" : "Slice", - "outputs" : ["Slice_21429"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 43, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21425", "Parameter_17178" ], - "name" : "Divide_21430", - "op" : "Divide", - "outputs" : ["Divide_21430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21426", "Parameter_13988" ], - "name" : "Multiply_21431", - "op" : "Multiply", - "outputs" : ["Multiply_21431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17162", "Add_21426" ], - "name" : "Multiply_21432", - "op" : "Multiply", - "outputs" : ["Multiply_21432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21426", "Parameter_13997" ], - "name" : "Multiply_21433", - "op" : "Multiply", - "outputs" : ["Multiply_21433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17170", "Add_21426" ], - "name" : "Multiply_21434", - "op" : "Multiply", - "outputs" : ["Multiply_21434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21427", "Parameter_17221" ], - "name" : "Divide_21435", - "op" : "Divide", - "outputs" : ["Divide_21435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21428", "Parameter_17192" ], - "name" : "Multiply_21436", - "op" : "Multiply", - "outputs" : ["Multiply_21436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17205", "Add_21428" ], - "name" : "Multiply_21437", - "op" : "Multiply", - "outputs" : ["Multiply_21437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21428", "Parameter_17125" ], - "name" : "Multiply_21438", - "op" : "Multiply", - "outputs" : ["Multiply_21438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17213", "Add_21428" ], - "name" : "Multiply_21439", - "op" : "Multiply", - "outputs" : ["Multiply_21439"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21430", "Parameter_17179" ], - "name" : "Multiply_21440", - "op" : "Multiply", - "outputs" : ["Multiply_21440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21431"], - "name" : "Negative_21441", - "op" : "Negative", - "outputs" : ["Negative_21441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21432", "Multiply_19303" ], - "name" : "Divide_21442", - "op" : "Divide", - "outputs" : ["Divide_21442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21433"], - "name" : "Negative_21443", - "op" : "Negative", - "outputs" : ["Negative_21443"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21435", "Parameter_17222" ], - "name" : "Multiply_21444", - "op" : "Multiply", - "outputs" : ["Multiply_21444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21436"], - "name" : "Negative_21445", - "op" : "Negative", - "outputs" : ["Negative_21445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21437", "Multiply_19304" ], - "name" : "Divide_21446", - "op" : "Divide", - "outputs" : ["Divide_21446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21438"], - "name" : "Negative_21447", - "op" : "Negative", - "outputs" : ["Negative_21447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21440"], - "name" : "Negative_21448", - "op" : "Negative", - "outputs" : ["Negative_21448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21441", "Parameter_17162" ], - "name" : "Multiply_21449", - "op" : "Multiply", - "outputs" : ["Multiply_21449"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18556", "Divide_21442" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21450", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21450"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21443", "Parameter_17170" ], - "name" : "Multiply_21451", - "op" : "Multiply", - "outputs" : ["Multiply_21451"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21444"], - "name" : "Negative_21452", - "op" : "Negative", - "outputs" : ["Negative_21452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21445", "Parameter_17205" ], - "name" : "Multiply_21453", - "op" : "Multiply", - "outputs" : ["Multiply_21453"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18615", "Divide_21446" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21454", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21454"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21447", "Parameter_17213" ], - "name" : "Multiply_21455", - "op" : "Multiply", - "outputs" : ["Multiply_21455"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21449", "Parameter_17163" ], - "name" : "Divide_21456", - "op" : "Divide", - "outputs" : ["Divide_21456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21450"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21457", - "op" : "Slice", - "outputs" : ["Slice_21457"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21451", "Parameter_17171" ], - "name" : "Divide_21458", - "op" : "Divide", - "outputs" : ["Divide_21458"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21453", "Parameter_17206" ], - "name" : "Divide_21459", - "op" : "Divide", - "outputs" : ["Divide_21459"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21454"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21460", - "op" : "Slice", - "outputs" : ["Slice_21460"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21455", "Parameter_17214" ], - "name" : "Divide_21461", - "op" : "Divide", - "outputs" : ["Divide_21461"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21456", "Parameter_17164" ], - "name" : "Multiply_21462", - "op" : "Multiply", - "outputs" : ["Multiply_21462"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21458", "Parameter_17172" ], - "name" : "Multiply_21463", - "op" : "Multiply", - "outputs" : ["Multiply_21463"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21459", "Parameter_17207" ], - "name" : "Multiply_21464", - "op" : "Multiply", - "outputs" : ["Multiply_21464"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21461", "Parameter_17215" ], - "name" : "Multiply_21465", - "op" : "Multiply", - "outputs" : ["Multiply_21465"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21462"], - "name" : "Negative_21466", - "op" : "Negative", - "outputs" : ["Negative_21466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21463"], - "name" : "Negative_21467", - "op" : "Negative", - "outputs" : ["Negative_21467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21464"], - "name" : "Negative_21468", - "op" : "Negative", - "outputs" : ["Negative_21468"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21465"], - "name" : "Negative_21469", - "op" : "Negative", - "outputs" : ["Negative_21469"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21457", "Negative_21466" ], - "name" : "Add_21470", - "op" : "Add", - "outputs" : ["Add_21470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21460", "Negative_21468" ], - "name" : "Add_21471", - "op" : "Add", - "outputs" : ["Add_21471"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21450", "Add_21470" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21472", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21472"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21454", "Add_21471" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21473", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21473"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21472"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21474", - "op" : "Slice", - "outputs" : ["Slice_21474"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21473"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21475", - "op" : "Slice", - "outputs" : ["Slice_21475"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21474", "Negative_21467" ], - "name" : "Add_21476", - "op" : "Add", - "outputs" : ["Add_21476"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21475", "Negative_21469" ], - "name" : "Add_21477", - "op" : "Add", - "outputs" : ["Add_21477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21472", "Add_21476" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21478", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21478"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21473", "Add_21477" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21479", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21479"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21478"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21480", - "op" : "Slice", - "outputs" : ["Slice_21480"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21479"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21481", - "op" : "Slice", - "outputs" : ["Slice_21481"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21480", "Negative_21448" ], - "name" : "Add_21482", - "op" : "Add", - "outputs" : ["Add_21482"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21481", "Negative_21452" ], - "name" : "Add_21483", - "op" : "Add", - "outputs" : ["Add_21483"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21478", "Add_21482" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21484", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21484"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21479", "Add_21483" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21485", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21485"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21484"], - "name" : "Sum_21486", - "op" : "Sum", - "outputs" : ["Sum_21486"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21484"], - "name" : "Reshape_21487", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21487"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19298", "ReplaceSlice_21484" ], - "name" : "Dot_21488", - "op" : "Dot", - "outputs" : ["Dot_21488"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21484"], - "name" : "Sum_21489", - "op" : "Sum", - "outputs" : ["Sum_21489"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21484"], - "name" : "Reshape_21490", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21490"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19300", "ReplaceSlice_21484" ], - "name" : "Dot_21491", - "op" : "Dot", - "outputs" : ["Dot_21491"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21485"], - "name" : "Sum_21492", - "op" : "Sum", - "outputs" : ["Sum_21492"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21485"], - "name" : "Reshape_21493", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21493"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19299", "ReplaceSlice_21485" ], - "name" : "Dot_21494", - "op" : "Dot", - "outputs" : ["Dot_21494"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21485"], - "name" : "Sum_21495", - "op" : "Sum", - "outputs" : ["Sum_21495"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21485"], - "name" : "Reshape_21496", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21496"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18704", "ReplaceSlice_21485" ], - "name" : "Dot_21497", - "op" : "Dot", - "outputs" : ["Dot_21497"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21388", "Sum_21486" ], - "name" : "Add_21498", - "op" : "Add", - "outputs" : ["Add_21498"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_13994", "Reshape_21487" ], - "name" : "Dot_21499", - "op" : "Dot", - "outputs" : ["Dot_21499"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21488"], - "name" : "Reshape_21500", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21500"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21391", "Sum_21489" ], - "name" : "Add_21501", - "op" : "Add", - "outputs" : ["Add_21501"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17122", "Reshape_21490" ], - "name" : "Dot_21502", - "op" : "Dot", - "outputs" : ["Dot_21502"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21491"], - "name" : "Reshape_21503", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21503"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21394", "Sum_21492" ], - "name" : "Add_21504", - "op" : "Add", - "outputs" : ["Add_21504"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17198", "Reshape_21493" ], - "name" : "Dot_21505", - "op" : "Dot", - "outputs" : ["Dot_21505"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21494"], - "name" : "Reshape_21506", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21506"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21397", "Sum_21495" ], - "name" : "Add_21507", - "op" : "Add", - "outputs" : ["Add_21507"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17202", "Reshape_21496" ], - "name" : "Dot_21508", - "op" : "Dot", - "outputs" : ["Dot_21508"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21497"], - "name" : "Reshape_21509", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21509"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21499"], - "name" : "Reshape_21510", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21500"], - "name" : "Reshape_21511", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21511"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21502"], - "name" : "Reshape_21512", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21512"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21503"], - "name" : "Reshape_21513", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21513"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21505"], - "name" : "Reshape_21514", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21514"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21506"], - "name" : "Reshape_21515", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21515"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21508"], - "name" : "Reshape_21516", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21509"], - "name" : "Reshape_21517", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21517"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21510", "Reshape_18824" ], - "name" : "Add_21518", - "op" : "Add", - "outputs" : ["Add_21518"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21409", "Reshape_21511" ], - "name" : "Add_21519", - "op" : "Add", - "outputs" : ["Add_21519"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21410", "Reshape_21513" ], - "name" : "Add_21520", - "op" : "Add", - "outputs" : ["Add_21520"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21514", "Reshape_21512" ], - "name" : "Add_21521", - "op" : "Add", - "outputs" : ["Add_21521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21412", "Reshape_21515" ], - "name" : "Add_21522", - "op" : "Add", - "outputs" : ["Add_21522"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21516"], - "name" : "Reshape_21523", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21414", "Reshape_21517" ], - "name" : "Add_21524", - "op" : "Add", - "outputs" : ["Add_21524"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21518", "Parameter_13996" ], - "name" : "Multiply_21525", - "op" : "Multiply", - "outputs" : ["Multiply_21525"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17112", "Add_21518" ], - "name" : "Multiply_21526", - "op" : "Multiply", - "outputs" : ["Multiply_21526"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21521", "Parameter_17124" ], - "name" : "Multiply_21527", - "op" : "Multiply", - "outputs" : ["Multiply_21527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17155", "Add_21521" ], - "name" : "Multiply_21528", - "op" : "Multiply", - "outputs" : ["Multiply_21528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21429", "Reshape_21523" ], - "name" : "Add_21529", - "op" : "Add", - "outputs" : ["Add_21529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21525"], - "name" : "Negative_21530", - "op" : "Negative", - "outputs" : ["Negative_21530"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21526", "Multiply_19296" ], - "name" : "Divide_21531", - "op" : "Divide", - "outputs" : ["Divide_21531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21527"], - "name" : "Negative_21532", - "op" : "Negative", - "outputs" : ["Negative_21532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21528", "Multiply_19297" ], - "name" : "Divide_21533", - "op" : "Divide", - "outputs" : ["Divide_21533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21424", "Add_21529" ], - "lower_bounds" : [ 0, 42, 0 ], - "name" : "ReplaceSlice_21534", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21534"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 43, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21530", "Parameter_17112" ], - "name" : "Multiply_21535", - "op" : "Multiply", - "outputs" : ["Multiply_21535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21434", "Divide_21531" ], - "name" : "Add_21536", - "op" : "Add", - "outputs" : ["Add_21536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21532", "Parameter_17155" ], - "name" : "Multiply_21537", - "op" : "Multiply", - "outputs" : ["Multiply_21537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21439", "Divide_21533" ], - "name" : "Add_21538", - "op" : "Add", - "outputs" : ["Add_21538"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21534"], - "lower_bounds" : [ 0, 41, 0 ], - "name" : "Slice_21539", - "op" : "Slice", - "outputs" : ["Slice_21539"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 42, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21535", "Parameter_17113" ], - "name" : "Divide_21540", - "op" : "Divide", - "outputs" : ["Divide_21540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21536", "Parameter_13999" ], - "name" : "Multiply_21541", - "op" : "Multiply", - "outputs" : ["Multiply_21541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17097", "Add_21536" ], - "name" : "Multiply_21542", - "op" : "Multiply", - "outputs" : ["Multiply_21542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21536", "Parameter_14008" ], - "name" : "Multiply_21543", - "op" : "Multiply", - "outputs" : ["Multiply_21543"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17105", "Add_21536" ], - "name" : "Multiply_21544", - "op" : "Multiply", - "outputs" : ["Multiply_21544"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21537", "Parameter_17156" ], - "name" : "Divide_21545", - "op" : "Divide", - "outputs" : ["Divide_21545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21538", "Parameter_17127" ], - "name" : "Multiply_21546", - "op" : "Multiply", - "outputs" : ["Multiply_21546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17140", "Add_21538" ], - "name" : "Multiply_21547", - "op" : "Multiply", - "outputs" : ["Multiply_21547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21538", "Parameter_17060" ], - "name" : "Multiply_21548", - "op" : "Multiply", - "outputs" : ["Multiply_21548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17148", "Add_21538" ], - "name" : "Multiply_21549", - "op" : "Multiply", - "outputs" : ["Multiply_21549"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21540", "Parameter_17114" ], - "name" : "Multiply_21550", - "op" : "Multiply", - "outputs" : ["Multiply_21550"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21541"], - "name" : "Negative_21551", - "op" : "Negative", - "outputs" : ["Negative_21551"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21542", "Multiply_19292" ], - "name" : "Divide_21552", - "op" : "Divide", - "outputs" : ["Divide_21552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21543"], - "name" : "Negative_21553", - "op" : "Negative", - "outputs" : ["Negative_21553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21545", "Parameter_17157" ], - "name" : "Multiply_21554", - "op" : "Multiply", - "outputs" : ["Multiply_21554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21546"], - "name" : "Negative_21555", - "op" : "Negative", - "outputs" : ["Negative_21555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21547", "Multiply_19293" ], - "name" : "Divide_21556", - "op" : "Divide", - "outputs" : ["Divide_21556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21548"], - "name" : "Negative_21557", - "op" : "Negative", - "outputs" : ["Negative_21557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21550"], - "name" : "Negative_21558", - "op" : "Negative", - "outputs" : ["Negative_21558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21551", "Parameter_17097" ], - "name" : "Multiply_21559", - "op" : "Multiply", - "outputs" : ["Multiply_21559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18557", "Divide_21552" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21560", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21560"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21553", "Parameter_17105" ], - "name" : "Multiply_21561", - "op" : "Multiply", - "outputs" : ["Multiply_21561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21554"], - "name" : "Negative_21562", - "op" : "Negative", - "outputs" : ["Negative_21562"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21555", "Parameter_17140" ], - "name" : "Multiply_21563", - "op" : "Multiply", - "outputs" : ["Multiply_21563"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18616", "Divide_21556" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21564", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21564"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21557", "Parameter_17148" ], - "name" : "Multiply_21565", - "op" : "Multiply", - "outputs" : ["Multiply_21565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21559", "Parameter_17098" ], - "name" : "Divide_21566", - "op" : "Divide", - "outputs" : ["Divide_21566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21560"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21567", - "op" : "Slice", - "outputs" : ["Slice_21567"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21561", "Parameter_17106" ], - "name" : "Divide_21568", - "op" : "Divide", - "outputs" : ["Divide_21568"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21563", "Parameter_17141" ], - "name" : "Divide_21569", - "op" : "Divide", - "outputs" : ["Divide_21569"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21564"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21570", - "op" : "Slice", - "outputs" : ["Slice_21570"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21565", "Parameter_17149" ], - "name" : "Divide_21571", - "op" : "Divide", - "outputs" : ["Divide_21571"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21566", "Parameter_17099" ], - "name" : "Multiply_21572", - "op" : "Multiply", - "outputs" : ["Multiply_21572"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21568", "Parameter_17107" ], - "name" : "Multiply_21573", - "op" : "Multiply", - "outputs" : ["Multiply_21573"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21569", "Parameter_17142" ], - "name" : "Multiply_21574", - "op" : "Multiply", - "outputs" : ["Multiply_21574"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21571", "Parameter_17150" ], - "name" : "Multiply_21575", - "op" : "Multiply", - "outputs" : ["Multiply_21575"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21572"], - "name" : "Negative_21576", - "op" : "Negative", - "outputs" : ["Negative_21576"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21573"], - "name" : "Negative_21577", - "op" : "Negative", - "outputs" : ["Negative_21577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21574"], - "name" : "Negative_21578", - "op" : "Negative", - "outputs" : ["Negative_21578"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21575"], - "name" : "Negative_21579", - "op" : "Negative", - "outputs" : ["Negative_21579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21567", "Negative_21576" ], - "name" : "Add_21580", - "op" : "Add", - "outputs" : ["Add_21580"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21570", "Negative_21578" ], - "name" : "Add_21581", - "op" : "Add", - "outputs" : ["Add_21581"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21560", "Add_21580" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21582", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21582"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21564", "Add_21581" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21583", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21583"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21582"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21584", - "op" : "Slice", - "outputs" : ["Slice_21584"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21583"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21585", - "op" : "Slice", - "outputs" : ["Slice_21585"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21584", "Negative_21577" ], - "name" : "Add_21586", - "op" : "Add", - "outputs" : ["Add_21586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21585", "Negative_21579" ], - "name" : "Add_21587", - "op" : "Add", - "outputs" : ["Add_21587"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21582", "Add_21586" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21588", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21588"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21583", "Add_21587" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21589", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21589"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21588"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21590", - "op" : "Slice", - "outputs" : ["Slice_21590"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21589"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21591", - "op" : "Slice", - "outputs" : ["Slice_21591"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21590", "Negative_21558" ], - "name" : "Add_21592", - "op" : "Add", - "outputs" : ["Add_21592"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21591", "Negative_21562" ], - "name" : "Add_21593", - "op" : "Add", - "outputs" : ["Add_21593"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21588", "Add_21592" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21594", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21594"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21589", "Add_21593" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21595", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21595"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21594"], - "name" : "Sum_21596", - "op" : "Sum", - "outputs" : ["Sum_21596"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21594"], - "name" : "Reshape_21597", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21597"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19287", "ReplaceSlice_21594" ], - "name" : "Dot_21598", - "op" : "Dot", - "outputs" : ["Dot_21598"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21594"], - "name" : "Sum_21599", - "op" : "Sum", - "outputs" : ["Sum_21599"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21594"], - "name" : "Reshape_21600", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21600"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19289", "ReplaceSlice_21594" ], - "name" : "Dot_21601", - "op" : "Dot", - "outputs" : ["Dot_21601"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21595"], - "name" : "Sum_21602", - "op" : "Sum", - "outputs" : ["Sum_21602"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21595"], - "name" : "Reshape_21603", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21603"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19288", "ReplaceSlice_21595" ], - "name" : "Dot_21604", - "op" : "Dot", - "outputs" : ["Dot_21604"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21595"], - "name" : "Sum_21605", - "op" : "Sum", - "outputs" : ["Sum_21605"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21595"], - "name" : "Reshape_21606", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21606"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18703", "ReplaceSlice_21595" ], - "name" : "Dot_21607", - "op" : "Dot", - "outputs" : ["Dot_21607"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21498", "Sum_21596" ], - "name" : "Add_21608", - "op" : "Add", - "outputs" : ["Add_21608"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14005", "Reshape_21597" ], - "name" : "Dot_21609", - "op" : "Dot", - "outputs" : ["Dot_21609"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21598"], - "name" : "Reshape_21610", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21610"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21501", "Sum_21599" ], - "name" : "Add_21611", - "op" : "Add", - "outputs" : ["Add_21611"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17057", "Reshape_21600" ], - "name" : "Dot_21612", - "op" : "Dot", - "outputs" : ["Dot_21612"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21601"], - "name" : "Reshape_21613", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21613"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21504", "Sum_21602" ], - "name" : "Add_21614", - "op" : "Add", - "outputs" : ["Add_21614"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17133", "Reshape_21603" ], - "name" : "Dot_21615", - "op" : "Dot", - "outputs" : ["Dot_21615"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21604"], - "name" : "Reshape_21616", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21616"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21507", "Sum_21605" ], - "name" : "Add_21617", - "op" : "Add", - "outputs" : ["Add_21617"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17137", "Reshape_21606" ], - "name" : "Dot_21618", - "op" : "Dot", - "outputs" : ["Dot_21618"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21607"], - "name" : "Reshape_21619", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21619"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21609"], - "name" : "Reshape_21620", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21610"], - "name" : "Reshape_21621", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21621"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21612"], - "name" : "Reshape_21622", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21613"], - "name" : "Reshape_21623", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21623"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21615"], - "name" : "Reshape_21624", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21624"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21616"], - "name" : "Reshape_21625", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21625"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21618"], - "name" : "Reshape_21626", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21626"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21619"], - "name" : "Reshape_21627", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21627"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21620", "Reshape_18823" ], - "name" : "Add_21628", - "op" : "Add", - "outputs" : ["Add_21628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21519", "Reshape_21621" ], - "name" : "Add_21629", - "op" : "Add", - "outputs" : ["Add_21629"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21520", "Reshape_21623" ], - "name" : "Add_21630", - "op" : "Add", - "outputs" : ["Add_21630"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21624", "Reshape_21622" ], - "name" : "Add_21631", - "op" : "Add", - "outputs" : ["Add_21631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21522", "Reshape_21625" ], - "name" : "Add_21632", - "op" : "Add", - "outputs" : ["Add_21632"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21626"], - "name" : "Reshape_21633", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21524", "Reshape_21627" ], - "name" : "Add_21634", - "op" : "Add", - "outputs" : ["Add_21634"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21628", "Parameter_14007" ], - "name" : "Multiply_21635", - "op" : "Multiply", - "outputs" : ["Multiply_21635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17047", "Add_21628" ], - "name" : "Multiply_21636", - "op" : "Multiply", - "outputs" : ["Multiply_21636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21631", "Parameter_17059" ], - "name" : "Multiply_21637", - "op" : "Multiply", - "outputs" : ["Multiply_21637"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17090", "Add_21631" ], - "name" : "Multiply_21638", - "op" : "Multiply", - "outputs" : ["Multiply_21638"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21539", "Reshape_21633" ], - "name" : "Add_21639", - "op" : "Add", - "outputs" : ["Add_21639"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21635"], - "name" : "Negative_21640", - "op" : "Negative", - "outputs" : ["Negative_21640"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21636", "Multiply_19285" ], - "name" : "Divide_21641", - "op" : "Divide", - "outputs" : ["Divide_21641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21637"], - "name" : "Negative_21642", - "op" : "Negative", - "outputs" : ["Negative_21642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21638", "Multiply_19286" ], - "name" : "Divide_21643", - "op" : "Divide", - "outputs" : ["Divide_21643"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21534", "Add_21639" ], - "lower_bounds" : [ 0, 41, 0 ], - "name" : "ReplaceSlice_21644", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21644"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 42, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21640", "Parameter_17047" ], - "name" : "Multiply_21645", - "op" : "Multiply", - "outputs" : ["Multiply_21645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21544", "Divide_21641" ], - "name" : "Add_21646", - "op" : "Add", - "outputs" : ["Add_21646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21642", "Parameter_17090" ], - "name" : "Multiply_21647", - "op" : "Multiply", - "outputs" : ["Multiply_21647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21549", "Divide_21643" ], - "name" : "Add_21648", - "op" : "Add", - "outputs" : ["Add_21648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21644"], - "lower_bounds" : [ 0, 40, 0 ], - "name" : "Slice_21649", - "op" : "Slice", - "outputs" : ["Slice_21649"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 41, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21645", "Parameter_17048" ], - "name" : "Divide_21650", - "op" : "Divide", - "outputs" : ["Divide_21650"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21646", "Parameter_14010" ], - "name" : "Multiply_21651", - "op" : "Multiply", - "outputs" : ["Multiply_21651"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17032", "Add_21646" ], - "name" : "Multiply_21652", - "op" : "Multiply", - "outputs" : ["Multiply_21652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21646", "Parameter_14019" ], - "name" : "Multiply_21653", - "op" : "Multiply", - "outputs" : ["Multiply_21653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17040", "Add_21646" ], - "name" : "Multiply_21654", - "op" : "Multiply", - "outputs" : ["Multiply_21654"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21647", "Parameter_17091" ], - "name" : "Divide_21655", - "op" : "Divide", - "outputs" : ["Divide_21655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21648", "Parameter_17062" ], - "name" : "Multiply_21656", - "op" : "Multiply", - "outputs" : ["Multiply_21656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17075", "Add_21648" ], - "name" : "Multiply_21657", - "op" : "Multiply", - "outputs" : ["Multiply_21657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21648", "Parameter_16995" ], - "name" : "Multiply_21658", - "op" : "Multiply", - "outputs" : ["Multiply_21658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17083", "Add_21648" ], - "name" : "Multiply_21659", - "op" : "Multiply", - "outputs" : ["Multiply_21659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21650", "Parameter_17049" ], - "name" : "Multiply_21660", - "op" : "Multiply", - "outputs" : ["Multiply_21660"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21651"], - "name" : "Negative_21661", - "op" : "Negative", - "outputs" : ["Negative_21661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21652", "Multiply_19281" ], - "name" : "Divide_21662", - "op" : "Divide", - "outputs" : ["Divide_21662"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21653"], - "name" : "Negative_21663", - "op" : "Negative", - "outputs" : ["Negative_21663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21655", "Parameter_17092" ], - "name" : "Multiply_21664", - "op" : "Multiply", - "outputs" : ["Multiply_21664"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21656"], - "name" : "Negative_21665", - "op" : "Negative", - "outputs" : ["Negative_21665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21657", "Multiply_19282" ], - "name" : "Divide_21666", - "op" : "Divide", - "outputs" : ["Divide_21666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21658"], - "name" : "Negative_21667", - "op" : "Negative", - "outputs" : ["Negative_21667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21660"], - "name" : "Negative_21668", - "op" : "Negative", - "outputs" : ["Negative_21668"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21661", "Parameter_17032" ], - "name" : "Multiply_21669", - "op" : "Multiply", - "outputs" : ["Multiply_21669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18558", "Divide_21662" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21670", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21670"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21663", "Parameter_17040" ], - "name" : "Multiply_21671", - "op" : "Multiply", - "outputs" : ["Multiply_21671"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21664"], - "name" : "Negative_21672", - "op" : "Negative", - "outputs" : ["Negative_21672"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21665", "Parameter_17075" ], - "name" : "Multiply_21673", - "op" : "Multiply", - "outputs" : ["Multiply_21673"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18617", "Divide_21666" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21674", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21674"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21667", "Parameter_17083" ], - "name" : "Multiply_21675", - "op" : "Multiply", - "outputs" : ["Multiply_21675"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21669", "Parameter_17033" ], - "name" : "Divide_21676", - "op" : "Divide", - "outputs" : ["Divide_21676"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21670"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21677", - "op" : "Slice", - "outputs" : ["Slice_21677"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21671", "Parameter_17041" ], - "name" : "Divide_21678", - "op" : "Divide", - "outputs" : ["Divide_21678"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21673", "Parameter_17076" ], - "name" : "Divide_21679", - "op" : "Divide", - "outputs" : ["Divide_21679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21674"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21680", - "op" : "Slice", - "outputs" : ["Slice_21680"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21675", "Parameter_17084" ], - "name" : "Divide_21681", - "op" : "Divide", - "outputs" : ["Divide_21681"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21676", "Parameter_17034" ], - "name" : "Multiply_21682", - "op" : "Multiply", - "outputs" : ["Multiply_21682"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21678", "Parameter_17042" ], - "name" : "Multiply_21683", - "op" : "Multiply", - "outputs" : ["Multiply_21683"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21679", "Parameter_17077" ], - "name" : "Multiply_21684", - "op" : "Multiply", - "outputs" : ["Multiply_21684"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21681", "Parameter_17085" ], - "name" : "Multiply_21685", - "op" : "Multiply", - "outputs" : ["Multiply_21685"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21682"], - "name" : "Negative_21686", - "op" : "Negative", - "outputs" : ["Negative_21686"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21683"], - "name" : "Negative_21687", - "op" : "Negative", - "outputs" : ["Negative_21687"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21684"], - "name" : "Negative_21688", - "op" : "Negative", - "outputs" : ["Negative_21688"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21685"], - "name" : "Negative_21689", - "op" : "Negative", - "outputs" : ["Negative_21689"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21677", "Negative_21686" ], - "name" : "Add_21690", - "op" : "Add", - "outputs" : ["Add_21690"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21680", "Negative_21688" ], - "name" : "Add_21691", - "op" : "Add", - "outputs" : ["Add_21691"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21670", "Add_21690" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21692", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21692"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21674", "Add_21691" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21693", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21693"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21692"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21694", - "op" : "Slice", - "outputs" : ["Slice_21694"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21693"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21695", - "op" : "Slice", - "outputs" : ["Slice_21695"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21694", "Negative_21687" ], - "name" : "Add_21696", - "op" : "Add", - "outputs" : ["Add_21696"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21695", "Negative_21689" ], - "name" : "Add_21697", - "op" : "Add", - "outputs" : ["Add_21697"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21692", "Add_21696" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21698", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21698"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21693", "Add_21697" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21699", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21699"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21698"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21700", - "op" : "Slice", - "outputs" : ["Slice_21700"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21699"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21701", - "op" : "Slice", - "outputs" : ["Slice_21701"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21700", "Negative_21668" ], - "name" : "Add_21702", - "op" : "Add", - "outputs" : ["Add_21702"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21701", "Negative_21672" ], - "name" : "Add_21703", - "op" : "Add", - "outputs" : ["Add_21703"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21698", "Add_21702" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21704", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21704"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21699", "Add_21703" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21705", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21705"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21704"], - "name" : "Sum_21706", - "op" : "Sum", - "outputs" : ["Sum_21706"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21704"], - "name" : "Reshape_21707", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21707"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19276", "ReplaceSlice_21704" ], - "name" : "Dot_21708", - "op" : "Dot", - "outputs" : ["Dot_21708"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21704"], - "name" : "Sum_21709", - "op" : "Sum", - "outputs" : ["Sum_21709"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21704"], - "name" : "Reshape_21710", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21710"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19278", "ReplaceSlice_21704" ], - "name" : "Dot_21711", - "op" : "Dot", - "outputs" : ["Dot_21711"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21705"], - "name" : "Sum_21712", - "op" : "Sum", - "outputs" : ["Sum_21712"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21705"], - "name" : "Reshape_21713", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21713"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19277", "ReplaceSlice_21705" ], - "name" : "Dot_21714", - "op" : "Dot", - "outputs" : ["Dot_21714"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21705"], - "name" : "Sum_21715", - "op" : "Sum", - "outputs" : ["Sum_21715"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21705"], - "name" : "Reshape_21716", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21716"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18702", "ReplaceSlice_21705" ], - "name" : "Dot_21717", - "op" : "Dot", - "outputs" : ["Dot_21717"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21608", "Sum_21706" ], - "name" : "Add_21718", - "op" : "Add", - "outputs" : ["Add_21718"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14016", "Reshape_21707" ], - "name" : "Dot_21719", - "op" : "Dot", - "outputs" : ["Dot_21719"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21708"], - "name" : "Reshape_21720", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21720"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21611", "Sum_21709" ], - "name" : "Add_21721", - "op" : "Add", - "outputs" : ["Add_21721"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16992", "Reshape_21710" ], - "name" : "Dot_21722", - "op" : "Dot", - "outputs" : ["Dot_21722"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21711"], - "name" : "Reshape_21723", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21723"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21614", "Sum_21712" ], - "name" : "Add_21724", - "op" : "Add", - "outputs" : ["Add_21724"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17068", "Reshape_21713" ], - "name" : "Dot_21725", - "op" : "Dot", - "outputs" : ["Dot_21725"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21714"], - "name" : "Reshape_21726", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21726"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21617", "Sum_21715" ], - "name" : "Add_21727", - "op" : "Add", - "outputs" : ["Add_21727"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17072", "Reshape_21716" ], - "name" : "Dot_21728", - "op" : "Dot", - "outputs" : ["Dot_21728"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21717"], - "name" : "Reshape_21729", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21729"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21719"], - "name" : "Reshape_21730", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21730"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21720"], - "name" : "Reshape_21731", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21731"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21722"], - "name" : "Reshape_21732", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21732"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21723"], - "name" : "Reshape_21733", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21733"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21725"], - "name" : "Reshape_21734", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21734"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21726"], - "name" : "Reshape_21735", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21735"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21728"], - "name" : "Reshape_21736", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21729"], - "name" : "Reshape_21737", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21737"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21730", "Reshape_18822" ], - "name" : "Add_21738", - "op" : "Add", - "outputs" : ["Add_21738"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21629", "Reshape_21731" ], - "name" : "Add_21739", - "op" : "Add", - "outputs" : ["Add_21739"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21630", "Reshape_21733" ], - "name" : "Add_21740", - "op" : "Add", - "outputs" : ["Add_21740"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21734", "Reshape_21732" ], - "name" : "Add_21741", - "op" : "Add", - "outputs" : ["Add_21741"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21632", "Reshape_21735" ], - "name" : "Add_21742", - "op" : "Add", - "outputs" : ["Add_21742"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21736"], - "name" : "Reshape_21743", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21743"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21634", "Reshape_21737" ], - "name" : "Add_21744", - "op" : "Add", - "outputs" : ["Add_21744"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21738", "Parameter_14018" ], - "name" : "Multiply_21745", - "op" : "Multiply", - "outputs" : ["Multiply_21745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16982", "Add_21738" ], - "name" : "Multiply_21746", - "op" : "Multiply", - "outputs" : ["Multiply_21746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21741", "Parameter_16994" ], - "name" : "Multiply_21747", - "op" : "Multiply", - "outputs" : ["Multiply_21747"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17025", "Add_21741" ], - "name" : "Multiply_21748", - "op" : "Multiply", - "outputs" : ["Multiply_21748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21649", "Reshape_21743" ], - "name" : "Add_21749", - "op" : "Add", - "outputs" : ["Add_21749"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21745"], - "name" : "Negative_21750", - "op" : "Negative", - "outputs" : ["Negative_21750"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21746", "Multiply_19274" ], - "name" : "Divide_21751", - "op" : "Divide", - "outputs" : ["Divide_21751"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21747"], - "name" : "Negative_21752", - "op" : "Negative", - "outputs" : ["Negative_21752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21748", "Multiply_19275" ], - "name" : "Divide_21753", - "op" : "Divide", - "outputs" : ["Divide_21753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21644", "Add_21749" ], - "lower_bounds" : [ 0, 40, 0 ], - "name" : "ReplaceSlice_21754", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21754"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 41, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21750", "Parameter_16982" ], - "name" : "Multiply_21755", - "op" : "Multiply", - "outputs" : ["Multiply_21755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21654", "Divide_21751" ], - "name" : "Add_21756", - "op" : "Add", - "outputs" : ["Add_21756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21752", "Parameter_17025" ], - "name" : "Multiply_21757", - "op" : "Multiply", - "outputs" : ["Multiply_21757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21659", "Divide_21753" ], - "name" : "Add_21758", - "op" : "Add", - "outputs" : ["Add_21758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21754"], - "lower_bounds" : [ 0, 39, 0 ], - "name" : "Slice_21759", - "op" : "Slice", - "outputs" : ["Slice_21759"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 40, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21755", "Parameter_16983" ], - "name" : "Divide_21760", - "op" : "Divide", - "outputs" : ["Divide_21760"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21756", "Parameter_14021" ], - "name" : "Multiply_21761", - "op" : "Multiply", - "outputs" : ["Multiply_21761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16967", "Add_21756" ], - "name" : "Multiply_21762", - "op" : "Multiply", - "outputs" : ["Multiply_21762"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21756", "Parameter_14030" ], - "name" : "Multiply_21763", - "op" : "Multiply", - "outputs" : ["Multiply_21763"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16975", "Add_21756" ], - "name" : "Multiply_21764", - "op" : "Multiply", - "outputs" : ["Multiply_21764"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21757", "Parameter_17026" ], - "name" : "Divide_21765", - "op" : "Divide", - "outputs" : ["Divide_21765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21758", "Parameter_16997" ], - "name" : "Multiply_21766", - "op" : "Multiply", - "outputs" : ["Multiply_21766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17010", "Add_21758" ], - "name" : "Multiply_21767", - "op" : "Multiply", - "outputs" : ["Multiply_21767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21758", "Parameter_16930" ], - "name" : "Multiply_21768", - "op" : "Multiply", - "outputs" : ["Multiply_21768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_17018", "Add_21758" ], - "name" : "Multiply_21769", - "op" : "Multiply", - "outputs" : ["Multiply_21769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21760", "Parameter_16984" ], - "name" : "Multiply_21770", - "op" : "Multiply", - "outputs" : ["Multiply_21770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21761"], - "name" : "Negative_21771", - "op" : "Negative", - "outputs" : ["Negative_21771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21762", "Multiply_19270" ], - "name" : "Divide_21772", - "op" : "Divide", - "outputs" : ["Divide_21772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21763"], - "name" : "Negative_21773", - "op" : "Negative", - "outputs" : ["Negative_21773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21765", "Parameter_17027" ], - "name" : "Multiply_21774", - "op" : "Multiply", - "outputs" : ["Multiply_21774"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21766"], - "name" : "Negative_21775", - "op" : "Negative", - "outputs" : ["Negative_21775"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21767", "Multiply_19271" ], - "name" : "Divide_21776", - "op" : "Divide", - "outputs" : ["Divide_21776"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21768"], - "name" : "Negative_21777", - "op" : "Negative", - "outputs" : ["Negative_21777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21770"], - "name" : "Negative_21778", - "op" : "Negative", - "outputs" : ["Negative_21778"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21771", "Parameter_16967" ], - "name" : "Multiply_21779", - "op" : "Multiply", - "outputs" : ["Multiply_21779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18559", "Divide_21772" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21780", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21780"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21773", "Parameter_16975" ], - "name" : "Multiply_21781", - "op" : "Multiply", - "outputs" : ["Multiply_21781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21774"], - "name" : "Negative_21782", - "op" : "Negative", - "outputs" : ["Negative_21782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21775", "Parameter_17010" ], - "name" : "Multiply_21783", - "op" : "Multiply", - "outputs" : ["Multiply_21783"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18618", "Divide_21776" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21784", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21784"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21777", "Parameter_17018" ], - "name" : "Multiply_21785", - "op" : "Multiply", - "outputs" : ["Multiply_21785"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21779", "Parameter_16968" ], - "name" : "Divide_21786", - "op" : "Divide", - "outputs" : ["Divide_21786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21780"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21787", - "op" : "Slice", - "outputs" : ["Slice_21787"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21781", "Parameter_16976" ], - "name" : "Divide_21788", - "op" : "Divide", - "outputs" : ["Divide_21788"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21783", "Parameter_17011" ], - "name" : "Divide_21789", - "op" : "Divide", - "outputs" : ["Divide_21789"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21784"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21790", - "op" : "Slice", - "outputs" : ["Slice_21790"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21785", "Parameter_17019" ], - "name" : "Divide_21791", - "op" : "Divide", - "outputs" : ["Divide_21791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21786", "Parameter_16969" ], - "name" : "Multiply_21792", - "op" : "Multiply", - "outputs" : ["Multiply_21792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21788", "Parameter_16977" ], - "name" : "Multiply_21793", - "op" : "Multiply", - "outputs" : ["Multiply_21793"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21789", "Parameter_17012" ], - "name" : "Multiply_21794", - "op" : "Multiply", - "outputs" : ["Multiply_21794"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21791", "Parameter_17020" ], - "name" : "Multiply_21795", - "op" : "Multiply", - "outputs" : ["Multiply_21795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21792"], - "name" : "Negative_21796", - "op" : "Negative", - "outputs" : ["Negative_21796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21793"], - "name" : "Negative_21797", - "op" : "Negative", - "outputs" : ["Negative_21797"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21794"], - "name" : "Negative_21798", - "op" : "Negative", - "outputs" : ["Negative_21798"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21795"], - "name" : "Negative_21799", - "op" : "Negative", - "outputs" : ["Negative_21799"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21787", "Negative_21796" ], - "name" : "Add_21800", - "op" : "Add", - "outputs" : ["Add_21800"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21790", "Negative_21798" ], - "name" : "Add_21801", - "op" : "Add", - "outputs" : ["Add_21801"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21780", "Add_21800" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21802", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21802"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21784", "Add_21801" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21803", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21803"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21802"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21804", - "op" : "Slice", - "outputs" : ["Slice_21804"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21803"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21805", - "op" : "Slice", - "outputs" : ["Slice_21805"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21804", "Negative_21797" ], - "name" : "Add_21806", - "op" : "Add", - "outputs" : ["Add_21806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21805", "Negative_21799" ], - "name" : "Add_21807", - "op" : "Add", - "outputs" : ["Add_21807"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21802", "Add_21806" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21808", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21808"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21803", "Add_21807" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21809", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21809"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21808"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21810", - "op" : "Slice", - "outputs" : ["Slice_21810"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21809"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21811", - "op" : "Slice", - "outputs" : ["Slice_21811"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21810", "Negative_21778" ], - "name" : "Add_21812", - "op" : "Add", - "outputs" : ["Add_21812"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21811", "Negative_21782" ], - "name" : "Add_21813", - "op" : "Add", - "outputs" : ["Add_21813"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21808", "Add_21812" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21814", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21814"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21809", "Add_21813" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21815", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21815"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21814"], - "name" : "Sum_21816", - "op" : "Sum", - "outputs" : ["Sum_21816"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21814"], - "name" : "Reshape_21817", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21817"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19265", "ReplaceSlice_21814" ], - "name" : "Dot_21818", - "op" : "Dot", - "outputs" : ["Dot_21818"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21814"], - "name" : "Sum_21819", - "op" : "Sum", - "outputs" : ["Sum_21819"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21814"], - "name" : "Reshape_21820", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21820"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19267", "ReplaceSlice_21814" ], - "name" : "Dot_21821", - "op" : "Dot", - "outputs" : ["Dot_21821"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21815"], - "name" : "Sum_21822", - "op" : "Sum", - "outputs" : ["Sum_21822"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21815"], - "name" : "Reshape_21823", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21823"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19266", "ReplaceSlice_21815" ], - "name" : "Dot_21824", - "op" : "Dot", - "outputs" : ["Dot_21824"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21815"], - "name" : "Sum_21825", - "op" : "Sum", - "outputs" : ["Sum_21825"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21815"], - "name" : "Reshape_21826", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21826"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18701", "ReplaceSlice_21815" ], - "name" : "Dot_21827", - "op" : "Dot", - "outputs" : ["Dot_21827"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21718", "Sum_21816" ], - "name" : "Add_21828", - "op" : "Add", - "outputs" : ["Add_21828"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14027", "Reshape_21817" ], - "name" : "Dot_21829", - "op" : "Dot", - "outputs" : ["Dot_21829"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21818"], - "name" : "Reshape_21830", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21830"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21721", "Sum_21819" ], - "name" : "Add_21831", - "op" : "Add", - "outputs" : ["Add_21831"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16927", "Reshape_21820" ], - "name" : "Dot_21832", - "op" : "Dot", - "outputs" : ["Dot_21832"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21821"], - "name" : "Reshape_21833", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21833"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21724", "Sum_21822" ], - "name" : "Add_21834", - "op" : "Add", - "outputs" : ["Add_21834"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17003", "Reshape_21823" ], - "name" : "Dot_21835", - "op" : "Dot", - "outputs" : ["Dot_21835"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21824"], - "name" : "Reshape_21836", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21836"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21727", "Sum_21825" ], - "name" : "Add_21837", - "op" : "Add", - "outputs" : ["Add_21837"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_17007", "Reshape_21826" ], - "name" : "Dot_21838", - "op" : "Dot", - "outputs" : ["Dot_21838"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21827"], - "name" : "Reshape_21839", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21839"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21829"], - "name" : "Reshape_21840", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21830"], - "name" : "Reshape_21841", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21841"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21832"], - "name" : "Reshape_21842", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21833"], - "name" : "Reshape_21843", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21843"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21835"], - "name" : "Reshape_21844", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21844"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21836"], - "name" : "Reshape_21845", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21845"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21838"], - "name" : "Reshape_21846", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21839"], - "name" : "Reshape_21847", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21847"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21840", "Reshape_18821" ], - "name" : "Add_21848", - "op" : "Add", - "outputs" : ["Add_21848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21739", "Reshape_21841" ], - "name" : "Add_21849", - "op" : "Add", - "outputs" : ["Add_21849"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21740", "Reshape_21843" ], - "name" : "Add_21850", - "op" : "Add", - "outputs" : ["Add_21850"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21844", "Reshape_21842" ], - "name" : "Add_21851", - "op" : "Add", - "outputs" : ["Add_21851"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21742", "Reshape_21845" ], - "name" : "Add_21852", - "op" : "Add", - "outputs" : ["Add_21852"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21846"], - "name" : "Reshape_21853", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21744", "Reshape_21847" ], - "name" : "Add_21854", - "op" : "Add", - "outputs" : ["Add_21854"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21848", "Parameter_14029" ], - "name" : "Multiply_21855", - "op" : "Multiply", - "outputs" : ["Multiply_21855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16917", "Add_21848" ], - "name" : "Multiply_21856", - "op" : "Multiply", - "outputs" : ["Multiply_21856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21851", "Parameter_16929" ], - "name" : "Multiply_21857", - "op" : "Multiply", - "outputs" : ["Multiply_21857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16960", "Add_21851" ], - "name" : "Multiply_21858", - "op" : "Multiply", - "outputs" : ["Multiply_21858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21759", "Reshape_21853" ], - "name" : "Add_21859", - "op" : "Add", - "outputs" : ["Add_21859"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21855"], - "name" : "Negative_21860", - "op" : "Negative", - "outputs" : ["Negative_21860"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21856", "Multiply_19263" ], - "name" : "Divide_21861", - "op" : "Divide", - "outputs" : ["Divide_21861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21857"], - "name" : "Negative_21862", - "op" : "Negative", - "outputs" : ["Negative_21862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21858", "Multiply_19264" ], - "name" : "Divide_21863", - "op" : "Divide", - "outputs" : ["Divide_21863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21754", "Add_21859" ], - "lower_bounds" : [ 0, 39, 0 ], - "name" : "ReplaceSlice_21864", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21864"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 40, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21860", "Parameter_16917" ], - "name" : "Multiply_21865", - "op" : "Multiply", - "outputs" : ["Multiply_21865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21764", "Divide_21861" ], - "name" : "Add_21866", - "op" : "Add", - "outputs" : ["Add_21866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21862", "Parameter_16960" ], - "name" : "Multiply_21867", - "op" : "Multiply", - "outputs" : ["Multiply_21867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21769", "Divide_21863" ], - "name" : "Add_21868", - "op" : "Add", - "outputs" : ["Add_21868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21864"], - "lower_bounds" : [ 0, 38, 0 ], - "name" : "Slice_21869", - "op" : "Slice", - "outputs" : ["Slice_21869"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 39, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21865", "Parameter_16918" ], - "name" : "Divide_21870", - "op" : "Divide", - "outputs" : ["Divide_21870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21866", "Parameter_14032" ], - "name" : "Multiply_21871", - "op" : "Multiply", - "outputs" : ["Multiply_21871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16902", "Add_21866" ], - "name" : "Multiply_21872", - "op" : "Multiply", - "outputs" : ["Multiply_21872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21866", "Parameter_14041" ], - "name" : "Multiply_21873", - "op" : "Multiply", - "outputs" : ["Multiply_21873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16910", "Add_21866" ], - "name" : "Multiply_21874", - "op" : "Multiply", - "outputs" : ["Multiply_21874"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21867", "Parameter_16961" ], - "name" : "Divide_21875", - "op" : "Divide", - "outputs" : ["Divide_21875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21868", "Parameter_16932" ], - "name" : "Multiply_21876", - "op" : "Multiply", - "outputs" : ["Multiply_21876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16945", "Add_21868" ], - "name" : "Multiply_21877", - "op" : "Multiply", - "outputs" : ["Multiply_21877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21868", "Parameter_16865" ], - "name" : "Multiply_21878", - "op" : "Multiply", - "outputs" : ["Multiply_21878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16953", "Add_21868" ], - "name" : "Multiply_21879", - "op" : "Multiply", - "outputs" : ["Multiply_21879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21870", "Parameter_16919" ], - "name" : "Multiply_21880", - "op" : "Multiply", - "outputs" : ["Multiply_21880"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21871"], - "name" : "Negative_21881", - "op" : "Negative", - "outputs" : ["Negative_21881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21872", "Multiply_19259" ], - "name" : "Divide_21882", - "op" : "Divide", - "outputs" : ["Divide_21882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21873"], - "name" : "Negative_21883", - "op" : "Negative", - "outputs" : ["Negative_21883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21875", "Parameter_16962" ], - "name" : "Multiply_21884", - "op" : "Multiply", - "outputs" : ["Multiply_21884"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21876"], - "name" : "Negative_21885", - "op" : "Negative", - "outputs" : ["Negative_21885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21877", "Multiply_19260" ], - "name" : "Divide_21886", - "op" : "Divide", - "outputs" : ["Divide_21886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21878"], - "name" : "Negative_21887", - "op" : "Negative", - "outputs" : ["Negative_21887"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21880"], - "name" : "Negative_21888", - "op" : "Negative", - "outputs" : ["Negative_21888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21881", "Parameter_16902" ], - "name" : "Multiply_21889", - "op" : "Multiply", - "outputs" : ["Multiply_21889"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18560", "Divide_21882" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21890", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21890"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21883", "Parameter_16910" ], - "name" : "Multiply_21891", - "op" : "Multiply", - "outputs" : ["Multiply_21891"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21884"], - "name" : "Negative_21892", - "op" : "Negative", - "outputs" : ["Negative_21892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21885", "Parameter_16945" ], - "name" : "Multiply_21893", - "op" : "Multiply", - "outputs" : ["Multiply_21893"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18619", "Divide_21886" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_21894", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21894"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21887", "Parameter_16953" ], - "name" : "Multiply_21895", - "op" : "Multiply", - "outputs" : ["Multiply_21895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21889", "Parameter_16903" ], - "name" : "Divide_21896", - "op" : "Divide", - "outputs" : ["Divide_21896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21890"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21897", - "op" : "Slice", - "outputs" : ["Slice_21897"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21891", "Parameter_16911" ], - "name" : "Divide_21898", - "op" : "Divide", - "outputs" : ["Divide_21898"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21893", "Parameter_16946" ], - "name" : "Divide_21899", - "op" : "Divide", - "outputs" : ["Divide_21899"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21894"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_21900", - "op" : "Slice", - "outputs" : ["Slice_21900"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21895", "Parameter_16954" ], - "name" : "Divide_21901", - "op" : "Divide", - "outputs" : ["Divide_21901"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21896", "Parameter_16904" ], - "name" : "Multiply_21902", - "op" : "Multiply", - "outputs" : ["Multiply_21902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21898", "Parameter_16912" ], - "name" : "Multiply_21903", - "op" : "Multiply", - "outputs" : ["Multiply_21903"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21899", "Parameter_16947" ], - "name" : "Multiply_21904", - "op" : "Multiply", - "outputs" : ["Multiply_21904"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21901", "Parameter_16955" ], - "name" : "Multiply_21905", - "op" : "Multiply", - "outputs" : ["Multiply_21905"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21902"], - "name" : "Negative_21906", - "op" : "Negative", - "outputs" : ["Negative_21906"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21903"], - "name" : "Negative_21907", - "op" : "Negative", - "outputs" : ["Negative_21907"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21904"], - "name" : "Negative_21908", - "op" : "Negative", - "outputs" : ["Negative_21908"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21905"], - "name" : "Negative_21909", - "op" : "Negative", - "outputs" : ["Negative_21909"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21897", "Negative_21906" ], - "name" : "Add_21910", - "op" : "Add", - "outputs" : ["Add_21910"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21900", "Negative_21908" ], - "name" : "Add_21911", - "op" : "Add", - "outputs" : ["Add_21911"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21890", "Add_21910" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21912", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21912"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21894", "Add_21911" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_21913", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21913"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21912"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21914", - "op" : "Slice", - "outputs" : ["Slice_21914"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21913"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_21915", - "op" : "Slice", - "outputs" : ["Slice_21915"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21914", "Negative_21907" ], - "name" : "Add_21916", - "op" : "Add", - "outputs" : ["Add_21916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21915", "Negative_21909" ], - "name" : "Add_21917", - "op" : "Add", - "outputs" : ["Add_21917"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21912", "Add_21916" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21918", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21918"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21913", "Add_21917" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_21919", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21919"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21918"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21920", - "op" : "Slice", - "outputs" : ["Slice_21920"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21919"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_21921", - "op" : "Slice", - "outputs" : ["Slice_21921"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21920", "Negative_21888" ], - "name" : "Add_21922", - "op" : "Add", - "outputs" : ["Add_21922"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21921", "Negative_21892" ], - "name" : "Add_21923", - "op" : "Add", - "outputs" : ["Add_21923"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21918", "Add_21922" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21924", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21924"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_21919", "Add_21923" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_21925", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21925"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21924"], - "name" : "Sum_21926", - "op" : "Sum", - "outputs" : ["Sum_21926"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21924"], - "name" : "Reshape_21927", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21927"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19254", "ReplaceSlice_21924" ], - "name" : "Dot_21928", - "op" : "Dot", - "outputs" : ["Dot_21928"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21924"], - "name" : "Sum_21929", - "op" : "Sum", - "outputs" : ["Sum_21929"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21924"], - "name" : "Reshape_21930", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21930"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19256", "ReplaceSlice_21924" ], - "name" : "Dot_21931", - "op" : "Dot", - "outputs" : ["Dot_21931"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21925"], - "name" : "Sum_21932", - "op" : "Sum", - "outputs" : ["Sum_21932"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21925"], - "name" : "Reshape_21933", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21933"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19255", "ReplaceSlice_21925" ], - "name" : "Dot_21934", - "op" : "Dot", - "outputs" : ["Dot_21934"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_21925"], - "name" : "Sum_21935", - "op" : "Sum", - "outputs" : ["Sum_21935"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_21925"], - "name" : "Reshape_21936", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_21936"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18700", "ReplaceSlice_21925" ], - "name" : "Dot_21937", - "op" : "Dot", - "outputs" : ["Dot_21937"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21828", "Sum_21926" ], - "name" : "Add_21938", - "op" : "Add", - "outputs" : ["Add_21938"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14038", "Reshape_21927" ], - "name" : "Dot_21939", - "op" : "Dot", - "outputs" : ["Dot_21939"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21928"], - "name" : "Reshape_21940", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21940"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21831", "Sum_21929" ], - "name" : "Add_21941", - "op" : "Add", - "outputs" : ["Add_21941"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16862", "Reshape_21930" ], - "name" : "Dot_21942", - "op" : "Dot", - "outputs" : ["Dot_21942"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21931"], - "name" : "Reshape_21943", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21943"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21834", "Sum_21932" ], - "name" : "Add_21944", - "op" : "Add", - "outputs" : ["Add_21944"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16938", "Reshape_21933" ], - "name" : "Dot_21945", - "op" : "Dot", - "outputs" : ["Dot_21945"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21934"], - "name" : "Reshape_21946", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21946"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21837", "Sum_21935" ], - "name" : "Add_21947", - "op" : "Add", - "outputs" : ["Add_21947"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16942", "Reshape_21936" ], - "name" : "Dot_21948", - "op" : "Dot", - "outputs" : ["Dot_21948"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21937"], - "name" : "Reshape_21949", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_21949"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21939"], - "name" : "Reshape_21950", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21950"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21940"], - "name" : "Reshape_21951", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21951"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21942"], - "name" : "Reshape_21952", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21943"], - "name" : "Reshape_21953", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21953"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21945"], - "name" : "Reshape_21954", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21946"], - "name" : "Reshape_21955", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21955"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_21948"], - "name" : "Reshape_21956", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_21956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_21949"], - "name" : "Reshape_21957", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_21957"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21950", "Reshape_18820" ], - "name" : "Add_21958", - "op" : "Add", - "outputs" : ["Add_21958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21849", "Reshape_21951" ], - "name" : "Add_21959", - "op" : "Add", - "outputs" : ["Add_21959"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21850", "Reshape_21953" ], - "name" : "Add_21960", - "op" : "Add", - "outputs" : ["Add_21960"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_21954", "Reshape_21952" ], - "name" : "Add_21961", - "op" : "Add", - "outputs" : ["Add_21961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21852", "Reshape_21955" ], - "name" : "Add_21962", - "op" : "Add", - "outputs" : ["Add_21962"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_21956"], - "name" : "Reshape_21963", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_21963"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21854", "Reshape_21957" ], - "name" : "Add_21964", - "op" : "Add", - "outputs" : ["Add_21964"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21958", "Parameter_14040" ], - "name" : "Multiply_21965", - "op" : "Multiply", - "outputs" : ["Multiply_21965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16852", "Add_21958" ], - "name" : "Multiply_21966", - "op" : "Multiply", - "outputs" : ["Multiply_21966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21961", "Parameter_16864" ], - "name" : "Multiply_21967", - "op" : "Multiply", - "outputs" : ["Multiply_21967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16895", "Add_21961" ], - "name" : "Multiply_21968", - "op" : "Multiply", - "outputs" : ["Multiply_21968"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21869", "Reshape_21963" ], - "name" : "Add_21969", - "op" : "Add", - "outputs" : ["Add_21969"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_21965"], - "name" : "Negative_21970", - "op" : "Negative", - "outputs" : ["Negative_21970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21966", "Multiply_19252" ], - "name" : "Divide_21971", - "op" : "Divide", - "outputs" : ["Divide_21971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21967"], - "name" : "Negative_21972", - "op" : "Negative", - "outputs" : ["Negative_21972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21968", "Multiply_19253" ], - "name" : "Divide_21973", - "op" : "Divide", - "outputs" : ["Divide_21973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21864", "Add_21969" ], - "lower_bounds" : [ 0, 38, 0 ], - "name" : "ReplaceSlice_21974", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_21974"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 39, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_21970", "Parameter_16852" ], - "name" : "Multiply_21975", - "op" : "Multiply", - "outputs" : ["Multiply_21975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21874", "Divide_21971" ], - "name" : "Add_21976", - "op" : "Add", - "outputs" : ["Add_21976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21972", "Parameter_16895" ], - "name" : "Multiply_21977", - "op" : "Multiply", - "outputs" : ["Multiply_21977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21879", "Divide_21973" ], - "name" : "Add_21978", - "op" : "Add", - "outputs" : ["Add_21978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_21974"], - "lower_bounds" : [ 0, 37, 0 ], - "name" : "Slice_21979", - "op" : "Slice", - "outputs" : ["Slice_21979"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 38, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_21975", "Parameter_16853" ], - "name" : "Divide_21980", - "op" : "Divide", - "outputs" : ["Divide_21980"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21976", "Parameter_14043" ], - "name" : "Multiply_21981", - "op" : "Multiply", - "outputs" : ["Multiply_21981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16837", "Add_21976" ], - "name" : "Multiply_21982", - "op" : "Multiply", - "outputs" : ["Multiply_21982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21976", "Parameter_14052" ], - "name" : "Multiply_21983", - "op" : "Multiply", - "outputs" : ["Multiply_21983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16845", "Add_21976" ], - "name" : "Multiply_21984", - "op" : "Multiply", - "outputs" : ["Multiply_21984"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21977", "Parameter_16896" ], - "name" : "Divide_21985", - "op" : "Divide", - "outputs" : ["Divide_21985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21978", "Parameter_16867" ], - "name" : "Multiply_21986", - "op" : "Multiply", - "outputs" : ["Multiply_21986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16880", "Add_21978" ], - "name" : "Multiply_21987", - "op" : "Multiply", - "outputs" : ["Multiply_21987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21978", "Parameter_16800" ], - "name" : "Multiply_21988", - "op" : "Multiply", - "outputs" : ["Multiply_21988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16888", "Add_21978" ], - "name" : "Multiply_21989", - "op" : "Multiply", - "outputs" : ["Multiply_21989"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21980", "Parameter_16854" ], - "name" : "Multiply_21990", - "op" : "Multiply", - "outputs" : ["Multiply_21990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21981"], - "name" : "Negative_21991", - "op" : "Negative", - "outputs" : ["Negative_21991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21982", "Multiply_19248" ], - "name" : "Divide_21992", - "op" : "Divide", - "outputs" : ["Divide_21992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21983"], - "name" : "Negative_21993", - "op" : "Negative", - "outputs" : ["Negative_21993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_21985", "Parameter_16897" ], - "name" : "Multiply_21994", - "op" : "Multiply", - "outputs" : ["Multiply_21994"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21986"], - "name" : "Negative_21995", - "op" : "Negative", - "outputs" : ["Negative_21995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21987", "Multiply_19249" ], - "name" : "Divide_21996", - "op" : "Divide", - "outputs" : ["Divide_21996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21988"], - "name" : "Negative_21997", - "op" : "Negative", - "outputs" : ["Negative_21997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21990"], - "name" : "Negative_21998", - "op" : "Negative", - "outputs" : ["Negative_21998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21991", "Parameter_16837" ], - "name" : "Multiply_21999", - "op" : "Multiply", - "outputs" : ["Multiply_21999"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18561", "Divide_21992" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22000", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22000"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21993", "Parameter_16845" ], - "name" : "Multiply_22001", - "op" : "Multiply", - "outputs" : ["Multiply_22001"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_21994"], - "name" : "Negative_22002", - "op" : "Negative", - "outputs" : ["Negative_22002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_21995", "Parameter_16880" ], - "name" : "Multiply_22003", - "op" : "Multiply", - "outputs" : ["Multiply_22003"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18620", "Divide_21996" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22004", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22004"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_21997", "Parameter_16888" ], - "name" : "Multiply_22005", - "op" : "Multiply", - "outputs" : ["Multiply_22005"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21999", "Parameter_16838" ], - "name" : "Divide_22006", - "op" : "Divide", - "outputs" : ["Divide_22006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22000"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22007", - "op" : "Slice", - "outputs" : ["Slice_22007"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22001", "Parameter_16846" ], - "name" : "Divide_22008", - "op" : "Divide", - "outputs" : ["Divide_22008"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22003", "Parameter_16881" ], - "name" : "Divide_22009", - "op" : "Divide", - "outputs" : ["Divide_22009"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22004"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22010", - "op" : "Slice", - "outputs" : ["Slice_22010"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22005", "Parameter_16889" ], - "name" : "Divide_22011", - "op" : "Divide", - "outputs" : ["Divide_22011"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22006", "Parameter_16839" ], - "name" : "Multiply_22012", - "op" : "Multiply", - "outputs" : ["Multiply_22012"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22008", "Parameter_16847" ], - "name" : "Multiply_22013", - "op" : "Multiply", - "outputs" : ["Multiply_22013"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22009", "Parameter_16882" ], - "name" : "Multiply_22014", - "op" : "Multiply", - "outputs" : ["Multiply_22014"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22011", "Parameter_16890" ], - "name" : "Multiply_22015", - "op" : "Multiply", - "outputs" : ["Multiply_22015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22012"], - "name" : "Negative_22016", - "op" : "Negative", - "outputs" : ["Negative_22016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22013"], - "name" : "Negative_22017", - "op" : "Negative", - "outputs" : ["Negative_22017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22014"], - "name" : "Negative_22018", - "op" : "Negative", - "outputs" : ["Negative_22018"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22015"], - "name" : "Negative_22019", - "op" : "Negative", - "outputs" : ["Negative_22019"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22007", "Negative_22016" ], - "name" : "Add_22020", - "op" : "Add", - "outputs" : ["Add_22020"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22010", "Negative_22018" ], - "name" : "Add_22021", - "op" : "Add", - "outputs" : ["Add_22021"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22000", "Add_22020" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22022", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22022"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22004", "Add_22021" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22023", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22023"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22022"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22024", - "op" : "Slice", - "outputs" : ["Slice_22024"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22023"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22025", - "op" : "Slice", - "outputs" : ["Slice_22025"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22024", "Negative_22017" ], - "name" : "Add_22026", - "op" : "Add", - "outputs" : ["Add_22026"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22025", "Negative_22019" ], - "name" : "Add_22027", - "op" : "Add", - "outputs" : ["Add_22027"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22022", "Add_22026" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22028", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22028"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22023", "Add_22027" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22029", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22029"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22028"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22030", - "op" : "Slice", - "outputs" : ["Slice_22030"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22029"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22031", - "op" : "Slice", - "outputs" : ["Slice_22031"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22030", "Negative_21998" ], - "name" : "Add_22032", - "op" : "Add", - "outputs" : ["Add_22032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22031", "Negative_22002" ], - "name" : "Add_22033", - "op" : "Add", - "outputs" : ["Add_22033"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22028", "Add_22032" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22034", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22034"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22029", "Add_22033" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22035", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22035"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22034"], - "name" : "Sum_22036", - "op" : "Sum", - "outputs" : ["Sum_22036"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22034"], - "name" : "Reshape_22037", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22037"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19243", "ReplaceSlice_22034" ], - "name" : "Dot_22038", - "op" : "Dot", - "outputs" : ["Dot_22038"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22034"], - "name" : "Sum_22039", - "op" : "Sum", - "outputs" : ["Sum_22039"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22034"], - "name" : "Reshape_22040", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22040"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19245", "ReplaceSlice_22034" ], - "name" : "Dot_22041", - "op" : "Dot", - "outputs" : ["Dot_22041"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22035"], - "name" : "Sum_22042", - "op" : "Sum", - "outputs" : ["Sum_22042"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22035"], - "name" : "Reshape_22043", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22043"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19244", "ReplaceSlice_22035" ], - "name" : "Dot_22044", - "op" : "Dot", - "outputs" : ["Dot_22044"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22035"], - "name" : "Sum_22045", - "op" : "Sum", - "outputs" : ["Sum_22045"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22035"], - "name" : "Reshape_22046", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22046"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18699", "ReplaceSlice_22035" ], - "name" : "Dot_22047", - "op" : "Dot", - "outputs" : ["Dot_22047"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21938", "Sum_22036" ], - "name" : "Add_22048", - "op" : "Add", - "outputs" : ["Add_22048"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14049", "Reshape_22037" ], - "name" : "Dot_22049", - "op" : "Dot", - "outputs" : ["Dot_22049"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22038"], - "name" : "Reshape_22050", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22050"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21941", "Sum_22039" ], - "name" : "Add_22051", - "op" : "Add", - "outputs" : ["Add_22051"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16797", "Reshape_22040" ], - "name" : "Dot_22052", - "op" : "Dot", - "outputs" : ["Dot_22052"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22041"], - "name" : "Reshape_22053", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22053"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21944", "Sum_22042" ], - "name" : "Add_22054", - "op" : "Add", - "outputs" : ["Add_22054"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16873", "Reshape_22043" ], - "name" : "Dot_22055", - "op" : "Dot", - "outputs" : ["Dot_22055"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22044"], - "name" : "Reshape_22056", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22056"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_21947", "Sum_22045" ], - "name" : "Add_22057", - "op" : "Add", - "outputs" : ["Add_22057"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16877", "Reshape_22046" ], - "name" : "Dot_22058", - "op" : "Dot", - "outputs" : ["Dot_22058"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22047"], - "name" : "Reshape_22059", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22059"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22049"], - "name" : "Reshape_22060", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22060"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22050"], - "name" : "Reshape_22061", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22061"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22052"], - "name" : "Reshape_22062", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22062"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22053"], - "name" : "Reshape_22063", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22063"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22055"], - "name" : "Reshape_22064", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22064"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22056"], - "name" : "Reshape_22065", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22065"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22058"], - "name" : "Reshape_22066", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22059"], - "name" : "Reshape_22067", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22067"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22060", "Reshape_18819" ], - "name" : "Add_22068", - "op" : "Add", - "outputs" : ["Add_22068"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21959", "Reshape_22061" ], - "name" : "Add_22069", - "op" : "Add", - "outputs" : ["Add_22069"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_21960", "Reshape_22063" ], - "name" : "Add_22070", - "op" : "Add", - "outputs" : ["Add_22070"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22064", "Reshape_22062" ], - "name" : "Add_22071", - "op" : "Add", - "outputs" : ["Add_22071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_21962", "Reshape_22065" ], - "name" : "Add_22072", - "op" : "Add", - "outputs" : ["Add_22072"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22066"], - "name" : "Reshape_22073", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_21964", "Reshape_22067" ], - "name" : "Add_22074", - "op" : "Add", - "outputs" : ["Add_22074"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22068", "Parameter_14051" ], - "name" : "Multiply_22075", - "op" : "Multiply", - "outputs" : ["Multiply_22075"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16787", "Add_22068" ], - "name" : "Multiply_22076", - "op" : "Multiply", - "outputs" : ["Multiply_22076"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22071", "Parameter_16799" ], - "name" : "Multiply_22077", - "op" : "Multiply", - "outputs" : ["Multiply_22077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16830", "Add_22071" ], - "name" : "Multiply_22078", - "op" : "Multiply", - "outputs" : ["Multiply_22078"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_21979", "Reshape_22073" ], - "name" : "Add_22079", - "op" : "Add", - "outputs" : ["Add_22079"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22075"], - "name" : "Negative_22080", - "op" : "Negative", - "outputs" : ["Negative_22080"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22076", "Multiply_19241" ], - "name" : "Divide_22081", - "op" : "Divide", - "outputs" : ["Divide_22081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22077"], - "name" : "Negative_22082", - "op" : "Negative", - "outputs" : ["Negative_22082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22078", "Multiply_19242" ], - "name" : "Divide_22083", - "op" : "Divide", - "outputs" : ["Divide_22083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_21974", "Add_22079" ], - "lower_bounds" : [ 0, 37, 0 ], - "name" : "ReplaceSlice_22084", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22084"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 38, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22080", "Parameter_16787" ], - "name" : "Multiply_22085", - "op" : "Multiply", - "outputs" : ["Multiply_22085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21984", "Divide_22081" ], - "name" : "Add_22086", - "op" : "Add", - "outputs" : ["Add_22086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22082", "Parameter_16830" ], - "name" : "Multiply_22087", - "op" : "Multiply", - "outputs" : ["Multiply_22087"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_21989", "Divide_22083" ], - "name" : "Add_22088", - "op" : "Add", - "outputs" : ["Add_22088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22084"], - "lower_bounds" : [ 0, 36, 0 ], - "name" : "Slice_22089", - "op" : "Slice", - "outputs" : ["Slice_22089"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 37, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22085", "Parameter_16788" ], - "name" : "Divide_22090", - "op" : "Divide", - "outputs" : ["Divide_22090"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22086", "Parameter_14054" ], - "name" : "Multiply_22091", - "op" : "Multiply", - "outputs" : ["Multiply_22091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16772", "Add_22086" ], - "name" : "Multiply_22092", - "op" : "Multiply", - "outputs" : ["Multiply_22092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22086", "Parameter_14063" ], - "name" : "Multiply_22093", - "op" : "Multiply", - "outputs" : ["Multiply_22093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16780", "Add_22086" ], - "name" : "Multiply_22094", - "op" : "Multiply", - "outputs" : ["Multiply_22094"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22087", "Parameter_16831" ], - "name" : "Divide_22095", - "op" : "Divide", - "outputs" : ["Divide_22095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22088", "Parameter_16802" ], - "name" : "Multiply_22096", - "op" : "Multiply", - "outputs" : ["Multiply_22096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16815", "Add_22088" ], - "name" : "Multiply_22097", - "op" : "Multiply", - "outputs" : ["Multiply_22097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22088", "Parameter_16735" ], - "name" : "Multiply_22098", - "op" : "Multiply", - "outputs" : ["Multiply_22098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16823", "Add_22088" ], - "name" : "Multiply_22099", - "op" : "Multiply", - "outputs" : ["Multiply_22099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22090", "Parameter_16789" ], - "name" : "Multiply_22100", - "op" : "Multiply", - "outputs" : ["Multiply_22100"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22091"], - "name" : "Negative_22101", - "op" : "Negative", - "outputs" : ["Negative_22101"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22092", "Multiply_19237" ], - "name" : "Divide_22102", - "op" : "Divide", - "outputs" : ["Divide_22102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22093"], - "name" : "Negative_22103", - "op" : "Negative", - "outputs" : ["Negative_22103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22095", "Parameter_16832" ], - "name" : "Multiply_22104", - "op" : "Multiply", - "outputs" : ["Multiply_22104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22096"], - "name" : "Negative_22105", - "op" : "Negative", - "outputs" : ["Negative_22105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22097", "Multiply_19238" ], - "name" : "Divide_22106", - "op" : "Divide", - "outputs" : ["Divide_22106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22098"], - "name" : "Negative_22107", - "op" : "Negative", - "outputs" : ["Negative_22107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22100"], - "name" : "Negative_22108", - "op" : "Negative", - "outputs" : ["Negative_22108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22101", "Parameter_16772" ], - "name" : "Multiply_22109", - "op" : "Multiply", - "outputs" : ["Multiply_22109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18562", "Divide_22102" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22110", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22110"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22103", "Parameter_16780" ], - "name" : "Multiply_22111", - "op" : "Multiply", - "outputs" : ["Multiply_22111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22104"], - "name" : "Negative_22112", - "op" : "Negative", - "outputs" : ["Negative_22112"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22105", "Parameter_16815" ], - "name" : "Multiply_22113", - "op" : "Multiply", - "outputs" : ["Multiply_22113"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18621", "Divide_22106" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22114", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22114"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22107", "Parameter_16823" ], - "name" : "Multiply_22115", - "op" : "Multiply", - "outputs" : ["Multiply_22115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22109", "Parameter_16773" ], - "name" : "Divide_22116", - "op" : "Divide", - "outputs" : ["Divide_22116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22110"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22117", - "op" : "Slice", - "outputs" : ["Slice_22117"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22111", "Parameter_16781" ], - "name" : "Divide_22118", - "op" : "Divide", - "outputs" : ["Divide_22118"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22113", "Parameter_16816" ], - "name" : "Divide_22119", - "op" : "Divide", - "outputs" : ["Divide_22119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22114"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22120", - "op" : "Slice", - "outputs" : ["Slice_22120"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22115", "Parameter_16824" ], - "name" : "Divide_22121", - "op" : "Divide", - "outputs" : ["Divide_22121"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22116", "Parameter_16774" ], - "name" : "Multiply_22122", - "op" : "Multiply", - "outputs" : ["Multiply_22122"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22118", "Parameter_16782" ], - "name" : "Multiply_22123", - "op" : "Multiply", - "outputs" : ["Multiply_22123"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22119", "Parameter_16817" ], - "name" : "Multiply_22124", - "op" : "Multiply", - "outputs" : ["Multiply_22124"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22121", "Parameter_16825" ], - "name" : "Multiply_22125", - "op" : "Multiply", - "outputs" : ["Multiply_22125"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22122"], - "name" : "Negative_22126", - "op" : "Negative", - "outputs" : ["Negative_22126"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22123"], - "name" : "Negative_22127", - "op" : "Negative", - "outputs" : ["Negative_22127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22124"], - "name" : "Negative_22128", - "op" : "Negative", - "outputs" : ["Negative_22128"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22125"], - "name" : "Negative_22129", - "op" : "Negative", - "outputs" : ["Negative_22129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22117", "Negative_22126" ], - "name" : "Add_22130", - "op" : "Add", - "outputs" : ["Add_22130"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22120", "Negative_22128" ], - "name" : "Add_22131", - "op" : "Add", - "outputs" : ["Add_22131"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22110", "Add_22130" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22132", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22132"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22114", "Add_22131" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22133", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22133"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22132"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22134", - "op" : "Slice", - "outputs" : ["Slice_22134"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22133"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22135", - "op" : "Slice", - "outputs" : ["Slice_22135"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22134", "Negative_22127" ], - "name" : "Add_22136", - "op" : "Add", - "outputs" : ["Add_22136"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22135", "Negative_22129" ], - "name" : "Add_22137", - "op" : "Add", - "outputs" : ["Add_22137"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22132", "Add_22136" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22138", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22138"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22133", "Add_22137" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22139", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22139"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22138"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22140", - "op" : "Slice", - "outputs" : ["Slice_22140"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22139"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22141", - "op" : "Slice", - "outputs" : ["Slice_22141"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22140", "Negative_22108" ], - "name" : "Add_22142", - "op" : "Add", - "outputs" : ["Add_22142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22141", "Negative_22112" ], - "name" : "Add_22143", - "op" : "Add", - "outputs" : ["Add_22143"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22138", "Add_22142" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22144", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22144"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22139", "Add_22143" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22145", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22145"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22144"], - "name" : "Sum_22146", - "op" : "Sum", - "outputs" : ["Sum_22146"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22144"], - "name" : "Reshape_22147", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22147"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19232", "ReplaceSlice_22144" ], - "name" : "Dot_22148", - "op" : "Dot", - "outputs" : ["Dot_22148"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22144"], - "name" : "Sum_22149", - "op" : "Sum", - "outputs" : ["Sum_22149"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22144"], - "name" : "Reshape_22150", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22150"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19234", "ReplaceSlice_22144" ], - "name" : "Dot_22151", - "op" : "Dot", - "outputs" : ["Dot_22151"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22145"], - "name" : "Sum_22152", - "op" : "Sum", - "outputs" : ["Sum_22152"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22145"], - "name" : "Reshape_22153", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22153"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19233", "ReplaceSlice_22145" ], - "name" : "Dot_22154", - "op" : "Dot", - "outputs" : ["Dot_22154"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22145"], - "name" : "Sum_22155", - "op" : "Sum", - "outputs" : ["Sum_22155"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22145"], - "name" : "Reshape_22156", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22156"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18698", "ReplaceSlice_22145" ], - "name" : "Dot_22157", - "op" : "Dot", - "outputs" : ["Dot_22157"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22048", "Sum_22146" ], - "name" : "Add_22158", - "op" : "Add", - "outputs" : ["Add_22158"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14060", "Reshape_22147" ], - "name" : "Dot_22159", - "op" : "Dot", - "outputs" : ["Dot_22159"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22148"], - "name" : "Reshape_22160", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22160"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22051", "Sum_22149" ], - "name" : "Add_22161", - "op" : "Add", - "outputs" : ["Add_22161"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16732", "Reshape_22150" ], - "name" : "Dot_22162", - "op" : "Dot", - "outputs" : ["Dot_22162"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22151"], - "name" : "Reshape_22163", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22163"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22054", "Sum_22152" ], - "name" : "Add_22164", - "op" : "Add", - "outputs" : ["Add_22164"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16808", "Reshape_22153" ], - "name" : "Dot_22165", - "op" : "Dot", - "outputs" : ["Dot_22165"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22154"], - "name" : "Reshape_22166", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22166"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22057", "Sum_22155" ], - "name" : "Add_22167", - "op" : "Add", - "outputs" : ["Add_22167"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16812", "Reshape_22156" ], - "name" : "Dot_22168", - "op" : "Dot", - "outputs" : ["Dot_22168"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22157"], - "name" : "Reshape_22169", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22169"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22159"], - "name" : "Reshape_22170", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22160"], - "name" : "Reshape_22171", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22171"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22162"], - "name" : "Reshape_22172", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22172"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22163"], - "name" : "Reshape_22173", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22173"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22165"], - "name" : "Reshape_22174", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22174"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22166"], - "name" : "Reshape_22175", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22175"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22168"], - "name" : "Reshape_22176", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22176"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22169"], - "name" : "Reshape_22177", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22177"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22170", "Reshape_18818" ], - "name" : "Add_22178", - "op" : "Add", - "outputs" : ["Add_22178"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22069", "Reshape_22171" ], - "name" : "Add_22179", - "op" : "Add", - "outputs" : ["Add_22179"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22070", "Reshape_22173" ], - "name" : "Add_22180", - "op" : "Add", - "outputs" : ["Add_22180"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22174", "Reshape_22172" ], - "name" : "Add_22181", - "op" : "Add", - "outputs" : ["Add_22181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22072", "Reshape_22175" ], - "name" : "Add_22182", - "op" : "Add", - "outputs" : ["Add_22182"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22176"], - "name" : "Reshape_22183", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22074", "Reshape_22177" ], - "name" : "Add_22184", - "op" : "Add", - "outputs" : ["Add_22184"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22178", "Parameter_14062" ], - "name" : "Multiply_22185", - "op" : "Multiply", - "outputs" : ["Multiply_22185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16722", "Add_22178" ], - "name" : "Multiply_22186", - "op" : "Multiply", - "outputs" : ["Multiply_22186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22181", "Parameter_16734" ], - "name" : "Multiply_22187", - "op" : "Multiply", - "outputs" : ["Multiply_22187"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16765", "Add_22181" ], - "name" : "Multiply_22188", - "op" : "Multiply", - "outputs" : ["Multiply_22188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22089", "Reshape_22183" ], - "name" : "Add_22189", - "op" : "Add", - "outputs" : ["Add_22189"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22185"], - "name" : "Negative_22190", - "op" : "Negative", - "outputs" : ["Negative_22190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22186", "Multiply_19230" ], - "name" : "Divide_22191", - "op" : "Divide", - "outputs" : ["Divide_22191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22187"], - "name" : "Negative_22192", - "op" : "Negative", - "outputs" : ["Negative_22192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22188", "Multiply_19231" ], - "name" : "Divide_22193", - "op" : "Divide", - "outputs" : ["Divide_22193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22084", "Add_22189" ], - "lower_bounds" : [ 0, 36, 0 ], - "name" : "ReplaceSlice_22194", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22194"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 37, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22190", "Parameter_16722" ], - "name" : "Multiply_22195", - "op" : "Multiply", - "outputs" : ["Multiply_22195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22094", "Divide_22191" ], - "name" : "Add_22196", - "op" : "Add", - "outputs" : ["Add_22196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22192", "Parameter_16765" ], - "name" : "Multiply_22197", - "op" : "Multiply", - "outputs" : ["Multiply_22197"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22099", "Divide_22193" ], - "name" : "Add_22198", - "op" : "Add", - "outputs" : ["Add_22198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22194"], - "lower_bounds" : [ 0, 35, 0 ], - "name" : "Slice_22199", - "op" : "Slice", - "outputs" : ["Slice_22199"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 36, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22195", "Parameter_16723" ], - "name" : "Divide_22200", - "op" : "Divide", - "outputs" : ["Divide_22200"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22196", "Parameter_14065" ], - "name" : "Multiply_22201", - "op" : "Multiply", - "outputs" : ["Multiply_22201"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16707", "Add_22196" ], - "name" : "Multiply_22202", - "op" : "Multiply", - "outputs" : ["Multiply_22202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22196", "Parameter_14074" ], - "name" : "Multiply_22203", - "op" : "Multiply", - "outputs" : ["Multiply_22203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16715", "Add_22196" ], - "name" : "Multiply_22204", - "op" : "Multiply", - "outputs" : ["Multiply_22204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22197", "Parameter_16766" ], - "name" : "Divide_22205", - "op" : "Divide", - "outputs" : ["Divide_22205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22198", "Parameter_16737" ], - "name" : "Multiply_22206", - "op" : "Multiply", - "outputs" : ["Multiply_22206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16750", "Add_22198" ], - "name" : "Multiply_22207", - "op" : "Multiply", - "outputs" : ["Multiply_22207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22198", "Parameter_16670" ], - "name" : "Multiply_22208", - "op" : "Multiply", - "outputs" : ["Multiply_22208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16758", "Add_22198" ], - "name" : "Multiply_22209", - "op" : "Multiply", - "outputs" : ["Multiply_22209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22200", "Parameter_16724" ], - "name" : "Multiply_22210", - "op" : "Multiply", - "outputs" : ["Multiply_22210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22201"], - "name" : "Negative_22211", - "op" : "Negative", - "outputs" : ["Negative_22211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22202", "Multiply_19226" ], - "name" : "Divide_22212", - "op" : "Divide", - "outputs" : ["Divide_22212"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22203"], - "name" : "Negative_22213", - "op" : "Negative", - "outputs" : ["Negative_22213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22205", "Parameter_16767" ], - "name" : "Multiply_22214", - "op" : "Multiply", - "outputs" : ["Multiply_22214"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22206"], - "name" : "Negative_22215", - "op" : "Negative", - "outputs" : ["Negative_22215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22207", "Multiply_19227" ], - "name" : "Divide_22216", - "op" : "Divide", - "outputs" : ["Divide_22216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22208"], - "name" : "Negative_22217", - "op" : "Negative", - "outputs" : ["Negative_22217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22210"], - "name" : "Negative_22218", - "op" : "Negative", - "outputs" : ["Negative_22218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22211", "Parameter_16707" ], - "name" : "Multiply_22219", - "op" : "Multiply", - "outputs" : ["Multiply_22219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18563", "Divide_22212" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22220", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22220"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22213", "Parameter_16715" ], - "name" : "Multiply_22221", - "op" : "Multiply", - "outputs" : ["Multiply_22221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22214"], - "name" : "Negative_22222", - "op" : "Negative", - "outputs" : ["Negative_22222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22215", "Parameter_16750" ], - "name" : "Multiply_22223", - "op" : "Multiply", - "outputs" : ["Multiply_22223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18622", "Divide_22216" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22224", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22224"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22217", "Parameter_16758" ], - "name" : "Multiply_22225", - "op" : "Multiply", - "outputs" : ["Multiply_22225"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22219", "Parameter_16708" ], - "name" : "Divide_22226", - "op" : "Divide", - "outputs" : ["Divide_22226"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22220"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22227", - "op" : "Slice", - "outputs" : ["Slice_22227"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22221", "Parameter_16716" ], - "name" : "Divide_22228", - "op" : "Divide", - "outputs" : ["Divide_22228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22223", "Parameter_16751" ], - "name" : "Divide_22229", - "op" : "Divide", - "outputs" : ["Divide_22229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22224"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22230", - "op" : "Slice", - "outputs" : ["Slice_22230"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22225", "Parameter_16759" ], - "name" : "Divide_22231", - "op" : "Divide", - "outputs" : ["Divide_22231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22226", "Parameter_16709" ], - "name" : "Multiply_22232", - "op" : "Multiply", - "outputs" : ["Multiply_22232"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22228", "Parameter_16717" ], - "name" : "Multiply_22233", - "op" : "Multiply", - "outputs" : ["Multiply_22233"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22229", "Parameter_16752" ], - "name" : "Multiply_22234", - "op" : "Multiply", - "outputs" : ["Multiply_22234"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22231", "Parameter_16760" ], - "name" : "Multiply_22235", - "op" : "Multiply", - "outputs" : ["Multiply_22235"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22232"], - "name" : "Negative_22236", - "op" : "Negative", - "outputs" : ["Negative_22236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22233"], - "name" : "Negative_22237", - "op" : "Negative", - "outputs" : ["Negative_22237"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22234"], - "name" : "Negative_22238", - "op" : "Negative", - "outputs" : ["Negative_22238"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22235"], - "name" : "Negative_22239", - "op" : "Negative", - "outputs" : ["Negative_22239"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22227", "Negative_22236" ], - "name" : "Add_22240", - "op" : "Add", - "outputs" : ["Add_22240"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22230", "Negative_22238" ], - "name" : "Add_22241", - "op" : "Add", - "outputs" : ["Add_22241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22220", "Add_22240" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22242", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22242"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22224", "Add_22241" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22243", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22243"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22242"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22244", - "op" : "Slice", - "outputs" : ["Slice_22244"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22243"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22245", - "op" : "Slice", - "outputs" : ["Slice_22245"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22244", "Negative_22237" ], - "name" : "Add_22246", - "op" : "Add", - "outputs" : ["Add_22246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22245", "Negative_22239" ], - "name" : "Add_22247", - "op" : "Add", - "outputs" : ["Add_22247"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22242", "Add_22246" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22248", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22248"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22243", "Add_22247" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22249", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22249"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22248"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22250", - "op" : "Slice", - "outputs" : ["Slice_22250"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22249"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22251", - "op" : "Slice", - "outputs" : ["Slice_22251"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22250", "Negative_22218" ], - "name" : "Add_22252", - "op" : "Add", - "outputs" : ["Add_22252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22251", "Negative_22222" ], - "name" : "Add_22253", - "op" : "Add", - "outputs" : ["Add_22253"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22248", "Add_22252" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22254", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22254"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22249", "Add_22253" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22255", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22255"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22254"], - "name" : "Sum_22256", - "op" : "Sum", - "outputs" : ["Sum_22256"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22254"], - "name" : "Reshape_22257", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22257"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19221", "ReplaceSlice_22254" ], - "name" : "Dot_22258", - "op" : "Dot", - "outputs" : ["Dot_22258"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22254"], - "name" : "Sum_22259", - "op" : "Sum", - "outputs" : ["Sum_22259"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22254"], - "name" : "Reshape_22260", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22260"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19223", "ReplaceSlice_22254" ], - "name" : "Dot_22261", - "op" : "Dot", - "outputs" : ["Dot_22261"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22255"], - "name" : "Sum_22262", - "op" : "Sum", - "outputs" : ["Sum_22262"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22255"], - "name" : "Reshape_22263", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22263"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19222", "ReplaceSlice_22255" ], - "name" : "Dot_22264", - "op" : "Dot", - "outputs" : ["Dot_22264"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22255"], - "name" : "Sum_22265", - "op" : "Sum", - "outputs" : ["Sum_22265"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22255"], - "name" : "Reshape_22266", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22266"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18697", "ReplaceSlice_22255" ], - "name" : "Dot_22267", - "op" : "Dot", - "outputs" : ["Dot_22267"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22158", "Sum_22256" ], - "name" : "Add_22268", - "op" : "Add", - "outputs" : ["Add_22268"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14071", "Reshape_22257" ], - "name" : "Dot_22269", - "op" : "Dot", - "outputs" : ["Dot_22269"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22258"], - "name" : "Reshape_22270", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22270"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22161", "Sum_22259" ], - "name" : "Add_22271", - "op" : "Add", - "outputs" : ["Add_22271"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16667", "Reshape_22260" ], - "name" : "Dot_22272", - "op" : "Dot", - "outputs" : ["Dot_22272"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22261"], - "name" : "Reshape_22273", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22273"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22164", "Sum_22262" ], - "name" : "Add_22274", - "op" : "Add", - "outputs" : ["Add_22274"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16743", "Reshape_22263" ], - "name" : "Dot_22275", - "op" : "Dot", - "outputs" : ["Dot_22275"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22264"], - "name" : "Reshape_22276", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22276"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22167", "Sum_22265" ], - "name" : "Add_22277", - "op" : "Add", - "outputs" : ["Add_22277"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16747", "Reshape_22266" ], - "name" : "Dot_22278", - "op" : "Dot", - "outputs" : ["Dot_22278"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22267"], - "name" : "Reshape_22279", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22279"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22269"], - "name" : "Reshape_22280", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22270"], - "name" : "Reshape_22281", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22281"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22272"], - "name" : "Reshape_22282", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22282"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22273"], - "name" : "Reshape_22283", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22283"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22275"], - "name" : "Reshape_22284", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22284"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22276"], - "name" : "Reshape_22285", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22285"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22278"], - "name" : "Reshape_22286", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22279"], - "name" : "Reshape_22287", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22287"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22280", "Reshape_18817" ], - "name" : "Add_22288", - "op" : "Add", - "outputs" : ["Add_22288"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22179", "Reshape_22281" ], - "name" : "Add_22289", - "op" : "Add", - "outputs" : ["Add_22289"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22180", "Reshape_22283" ], - "name" : "Add_22290", - "op" : "Add", - "outputs" : ["Add_22290"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22284", "Reshape_22282" ], - "name" : "Add_22291", - "op" : "Add", - "outputs" : ["Add_22291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22182", "Reshape_22285" ], - "name" : "Add_22292", - "op" : "Add", - "outputs" : ["Add_22292"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22286"], - "name" : "Reshape_22293", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22293"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22184", "Reshape_22287" ], - "name" : "Add_22294", - "op" : "Add", - "outputs" : ["Add_22294"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22288", "Parameter_14073" ], - "name" : "Multiply_22295", - "op" : "Multiply", - "outputs" : ["Multiply_22295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16657", "Add_22288" ], - "name" : "Multiply_22296", - "op" : "Multiply", - "outputs" : ["Multiply_22296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22291", "Parameter_16669" ], - "name" : "Multiply_22297", - "op" : "Multiply", - "outputs" : ["Multiply_22297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16700", "Add_22291" ], - "name" : "Multiply_22298", - "op" : "Multiply", - "outputs" : ["Multiply_22298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22199", "Reshape_22293" ], - "name" : "Add_22299", - "op" : "Add", - "outputs" : ["Add_22299"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22295"], - "name" : "Negative_22300", - "op" : "Negative", - "outputs" : ["Negative_22300"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22296", "Multiply_19219" ], - "name" : "Divide_22301", - "op" : "Divide", - "outputs" : ["Divide_22301"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22297"], - "name" : "Negative_22302", - "op" : "Negative", - "outputs" : ["Negative_22302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22298", "Multiply_19220" ], - "name" : "Divide_22303", - "op" : "Divide", - "outputs" : ["Divide_22303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22194", "Add_22299" ], - "lower_bounds" : [ 0, 35, 0 ], - "name" : "ReplaceSlice_22304", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22304"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 36, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22300", "Parameter_16657" ], - "name" : "Multiply_22305", - "op" : "Multiply", - "outputs" : ["Multiply_22305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22204", "Divide_22301" ], - "name" : "Add_22306", - "op" : "Add", - "outputs" : ["Add_22306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22302", "Parameter_16700" ], - "name" : "Multiply_22307", - "op" : "Multiply", - "outputs" : ["Multiply_22307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22209", "Divide_22303" ], - "name" : "Add_22308", - "op" : "Add", - "outputs" : ["Add_22308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22304"], - "lower_bounds" : [ 0, 34, 0 ], - "name" : "Slice_22309", - "op" : "Slice", - "outputs" : ["Slice_22309"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 35, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22305", "Parameter_16658" ], - "name" : "Divide_22310", - "op" : "Divide", - "outputs" : ["Divide_22310"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22306", "Parameter_14076" ], - "name" : "Multiply_22311", - "op" : "Multiply", - "outputs" : ["Multiply_22311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16642", "Add_22306" ], - "name" : "Multiply_22312", - "op" : "Multiply", - "outputs" : ["Multiply_22312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22306", "Parameter_14085" ], - "name" : "Multiply_22313", - "op" : "Multiply", - "outputs" : ["Multiply_22313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16650", "Add_22306" ], - "name" : "Multiply_22314", - "op" : "Multiply", - "outputs" : ["Multiply_22314"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22307", "Parameter_16701" ], - "name" : "Divide_22315", - "op" : "Divide", - "outputs" : ["Divide_22315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22308", "Parameter_16672" ], - "name" : "Multiply_22316", - "op" : "Multiply", - "outputs" : ["Multiply_22316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16685", "Add_22308" ], - "name" : "Multiply_22317", - "op" : "Multiply", - "outputs" : ["Multiply_22317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22308", "Parameter_16605" ], - "name" : "Multiply_22318", - "op" : "Multiply", - "outputs" : ["Multiply_22318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16693", "Add_22308" ], - "name" : "Multiply_22319", - "op" : "Multiply", - "outputs" : ["Multiply_22319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22310", "Parameter_16659" ], - "name" : "Multiply_22320", - "op" : "Multiply", - "outputs" : ["Multiply_22320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22311"], - "name" : "Negative_22321", - "op" : "Negative", - "outputs" : ["Negative_22321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22312", "Multiply_19215" ], - "name" : "Divide_22322", - "op" : "Divide", - "outputs" : ["Divide_22322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22313"], - "name" : "Negative_22323", - "op" : "Negative", - "outputs" : ["Negative_22323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22315", "Parameter_16702" ], - "name" : "Multiply_22324", - "op" : "Multiply", - "outputs" : ["Multiply_22324"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22316"], - "name" : "Negative_22325", - "op" : "Negative", - "outputs" : ["Negative_22325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22317", "Multiply_19216" ], - "name" : "Divide_22326", - "op" : "Divide", - "outputs" : ["Divide_22326"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22318"], - "name" : "Negative_22327", - "op" : "Negative", - "outputs" : ["Negative_22327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22320"], - "name" : "Negative_22328", - "op" : "Negative", - "outputs" : ["Negative_22328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22321", "Parameter_16642" ], - "name" : "Multiply_22329", - "op" : "Multiply", - "outputs" : ["Multiply_22329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18564", "Divide_22322" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22330", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22330"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22323", "Parameter_16650" ], - "name" : "Multiply_22331", - "op" : "Multiply", - "outputs" : ["Multiply_22331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22324"], - "name" : "Negative_22332", - "op" : "Negative", - "outputs" : ["Negative_22332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22325", "Parameter_16685" ], - "name" : "Multiply_22333", - "op" : "Multiply", - "outputs" : ["Multiply_22333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18623", "Divide_22326" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22334", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22334"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22327", "Parameter_16693" ], - "name" : "Multiply_22335", - "op" : "Multiply", - "outputs" : ["Multiply_22335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22329", "Parameter_16643" ], - "name" : "Divide_22336", - "op" : "Divide", - "outputs" : ["Divide_22336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22330"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22337", - "op" : "Slice", - "outputs" : ["Slice_22337"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22331", "Parameter_16651" ], - "name" : "Divide_22338", - "op" : "Divide", - "outputs" : ["Divide_22338"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22333", "Parameter_16686" ], - "name" : "Divide_22339", - "op" : "Divide", - "outputs" : ["Divide_22339"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22334"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22340", - "op" : "Slice", - "outputs" : ["Slice_22340"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22335", "Parameter_16694" ], - "name" : "Divide_22341", - "op" : "Divide", - "outputs" : ["Divide_22341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22336", "Parameter_16644" ], - "name" : "Multiply_22342", - "op" : "Multiply", - "outputs" : ["Multiply_22342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22338", "Parameter_16652" ], - "name" : "Multiply_22343", - "op" : "Multiply", - "outputs" : ["Multiply_22343"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22339", "Parameter_16687" ], - "name" : "Multiply_22344", - "op" : "Multiply", - "outputs" : ["Multiply_22344"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22341", "Parameter_16695" ], - "name" : "Multiply_22345", - "op" : "Multiply", - "outputs" : ["Multiply_22345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22342"], - "name" : "Negative_22346", - "op" : "Negative", - "outputs" : ["Negative_22346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22343"], - "name" : "Negative_22347", - "op" : "Negative", - "outputs" : ["Negative_22347"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22344"], - "name" : "Negative_22348", - "op" : "Negative", - "outputs" : ["Negative_22348"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22345"], - "name" : "Negative_22349", - "op" : "Negative", - "outputs" : ["Negative_22349"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22337", "Negative_22346" ], - "name" : "Add_22350", - "op" : "Add", - "outputs" : ["Add_22350"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22340", "Negative_22348" ], - "name" : "Add_22351", - "op" : "Add", - "outputs" : ["Add_22351"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22330", "Add_22350" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22352", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22352"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22334", "Add_22351" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22353", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22353"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22352"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22354", - "op" : "Slice", - "outputs" : ["Slice_22354"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22353"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22355", - "op" : "Slice", - "outputs" : ["Slice_22355"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22354", "Negative_22347" ], - "name" : "Add_22356", - "op" : "Add", - "outputs" : ["Add_22356"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22355", "Negative_22349" ], - "name" : "Add_22357", - "op" : "Add", - "outputs" : ["Add_22357"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22352", "Add_22356" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22358", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22358"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22353", "Add_22357" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22359", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22359"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22358"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22360", - "op" : "Slice", - "outputs" : ["Slice_22360"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22359"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22361", - "op" : "Slice", - "outputs" : ["Slice_22361"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22360", "Negative_22328" ], - "name" : "Add_22362", - "op" : "Add", - "outputs" : ["Add_22362"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22361", "Negative_22332" ], - "name" : "Add_22363", - "op" : "Add", - "outputs" : ["Add_22363"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22358", "Add_22362" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22364", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22364"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22359", "Add_22363" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22365", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22365"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22364"], - "name" : "Sum_22366", - "op" : "Sum", - "outputs" : ["Sum_22366"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22364"], - "name" : "Reshape_22367", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22367"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19210", "ReplaceSlice_22364" ], - "name" : "Dot_22368", - "op" : "Dot", - "outputs" : ["Dot_22368"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22364"], - "name" : "Sum_22369", - "op" : "Sum", - "outputs" : ["Sum_22369"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22364"], - "name" : "Reshape_22370", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22370"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19212", "ReplaceSlice_22364" ], - "name" : "Dot_22371", - "op" : "Dot", - "outputs" : ["Dot_22371"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22365"], - "name" : "Sum_22372", - "op" : "Sum", - "outputs" : ["Sum_22372"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22365"], - "name" : "Reshape_22373", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22373"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19211", "ReplaceSlice_22365" ], - "name" : "Dot_22374", - "op" : "Dot", - "outputs" : ["Dot_22374"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22365"], - "name" : "Sum_22375", - "op" : "Sum", - "outputs" : ["Sum_22375"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22365"], - "name" : "Reshape_22376", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22376"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18696", "ReplaceSlice_22365" ], - "name" : "Dot_22377", - "op" : "Dot", - "outputs" : ["Dot_22377"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22268", "Sum_22366" ], - "name" : "Add_22378", - "op" : "Add", - "outputs" : ["Add_22378"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14082", "Reshape_22367" ], - "name" : "Dot_22379", - "op" : "Dot", - "outputs" : ["Dot_22379"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22368"], - "name" : "Reshape_22380", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22380"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22271", "Sum_22369" ], - "name" : "Add_22381", - "op" : "Add", - "outputs" : ["Add_22381"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16602", "Reshape_22370" ], - "name" : "Dot_22382", - "op" : "Dot", - "outputs" : ["Dot_22382"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22371"], - "name" : "Reshape_22383", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22383"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22274", "Sum_22372" ], - "name" : "Add_22384", - "op" : "Add", - "outputs" : ["Add_22384"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16678", "Reshape_22373" ], - "name" : "Dot_22385", - "op" : "Dot", - "outputs" : ["Dot_22385"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22374"], - "name" : "Reshape_22386", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22386"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22277", "Sum_22375" ], - "name" : "Add_22387", - "op" : "Add", - "outputs" : ["Add_22387"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16682", "Reshape_22376" ], - "name" : "Dot_22388", - "op" : "Dot", - "outputs" : ["Dot_22388"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22377"], - "name" : "Reshape_22389", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22389"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22379"], - "name" : "Reshape_22390", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22380"], - "name" : "Reshape_22391", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22391"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22382"], - "name" : "Reshape_22392", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22383"], - "name" : "Reshape_22393", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22393"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22385"], - "name" : "Reshape_22394", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22394"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22386"], - "name" : "Reshape_22395", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22395"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22388"], - "name" : "Reshape_22396", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22389"], - "name" : "Reshape_22397", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22397"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22390", "Reshape_18816" ], - "name" : "Add_22398", - "op" : "Add", - "outputs" : ["Add_22398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22289", "Reshape_22391" ], - "name" : "Add_22399", - "op" : "Add", - "outputs" : ["Add_22399"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22290", "Reshape_22393" ], - "name" : "Add_22400", - "op" : "Add", - "outputs" : ["Add_22400"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22394", "Reshape_22392" ], - "name" : "Add_22401", - "op" : "Add", - "outputs" : ["Add_22401"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22292", "Reshape_22395" ], - "name" : "Add_22402", - "op" : "Add", - "outputs" : ["Add_22402"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22396"], - "name" : "Reshape_22403", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22294", "Reshape_22397" ], - "name" : "Add_22404", - "op" : "Add", - "outputs" : ["Add_22404"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22398", "Parameter_14084" ], - "name" : "Multiply_22405", - "op" : "Multiply", - "outputs" : ["Multiply_22405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16592", "Add_22398" ], - "name" : "Multiply_22406", - "op" : "Multiply", - "outputs" : ["Multiply_22406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22401", "Parameter_16604" ], - "name" : "Multiply_22407", - "op" : "Multiply", - "outputs" : ["Multiply_22407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16635", "Add_22401" ], - "name" : "Multiply_22408", - "op" : "Multiply", - "outputs" : ["Multiply_22408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22309", "Reshape_22403" ], - "name" : "Add_22409", - "op" : "Add", - "outputs" : ["Add_22409"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22405"], - "name" : "Negative_22410", - "op" : "Negative", - "outputs" : ["Negative_22410"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22406", "Multiply_19208" ], - "name" : "Divide_22411", - "op" : "Divide", - "outputs" : ["Divide_22411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22407"], - "name" : "Negative_22412", - "op" : "Negative", - "outputs" : ["Negative_22412"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22408", "Multiply_19209" ], - "name" : "Divide_22413", - "op" : "Divide", - "outputs" : ["Divide_22413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22304", "Add_22409" ], - "lower_bounds" : [ 0, 34, 0 ], - "name" : "ReplaceSlice_22414", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22414"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 35, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22410", "Parameter_16592" ], - "name" : "Multiply_22415", - "op" : "Multiply", - "outputs" : ["Multiply_22415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22314", "Divide_22411" ], - "name" : "Add_22416", - "op" : "Add", - "outputs" : ["Add_22416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22412", "Parameter_16635" ], - "name" : "Multiply_22417", - "op" : "Multiply", - "outputs" : ["Multiply_22417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22319", "Divide_22413" ], - "name" : "Add_22418", - "op" : "Add", - "outputs" : ["Add_22418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22414"], - "lower_bounds" : [ 0, 33, 0 ], - "name" : "Slice_22419", - "op" : "Slice", - "outputs" : ["Slice_22419"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 34, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22415", "Parameter_16593" ], - "name" : "Divide_22420", - "op" : "Divide", - "outputs" : ["Divide_22420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22416", "Parameter_14087" ], - "name" : "Multiply_22421", - "op" : "Multiply", - "outputs" : ["Multiply_22421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16577", "Add_22416" ], - "name" : "Multiply_22422", - "op" : "Multiply", - "outputs" : ["Multiply_22422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22416", "Parameter_14096" ], - "name" : "Multiply_22423", - "op" : "Multiply", - "outputs" : ["Multiply_22423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16585", "Add_22416" ], - "name" : "Multiply_22424", - "op" : "Multiply", - "outputs" : ["Multiply_22424"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22417", "Parameter_16636" ], - "name" : "Divide_22425", - "op" : "Divide", - "outputs" : ["Divide_22425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22418", "Parameter_16607" ], - "name" : "Multiply_22426", - "op" : "Multiply", - "outputs" : ["Multiply_22426"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16620", "Add_22418" ], - "name" : "Multiply_22427", - "op" : "Multiply", - "outputs" : ["Multiply_22427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22418", "Parameter_16540" ], - "name" : "Multiply_22428", - "op" : "Multiply", - "outputs" : ["Multiply_22428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16628", "Add_22418" ], - "name" : "Multiply_22429", - "op" : "Multiply", - "outputs" : ["Multiply_22429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22420", "Parameter_16594" ], - "name" : "Multiply_22430", - "op" : "Multiply", - "outputs" : ["Multiply_22430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22421"], - "name" : "Negative_22431", - "op" : "Negative", - "outputs" : ["Negative_22431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22422", "Multiply_19204" ], - "name" : "Divide_22432", - "op" : "Divide", - "outputs" : ["Divide_22432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22423"], - "name" : "Negative_22433", - "op" : "Negative", - "outputs" : ["Negative_22433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22425", "Parameter_16637" ], - "name" : "Multiply_22434", - "op" : "Multiply", - "outputs" : ["Multiply_22434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22426"], - "name" : "Negative_22435", - "op" : "Negative", - "outputs" : ["Negative_22435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22427", "Multiply_19205" ], - "name" : "Divide_22436", - "op" : "Divide", - "outputs" : ["Divide_22436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22428"], - "name" : "Negative_22437", - "op" : "Negative", - "outputs" : ["Negative_22437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22430"], - "name" : "Negative_22438", - "op" : "Negative", - "outputs" : ["Negative_22438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22431", "Parameter_16577" ], - "name" : "Multiply_22439", - "op" : "Multiply", - "outputs" : ["Multiply_22439"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18565", "Divide_22432" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22440", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22440"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22433", "Parameter_16585" ], - "name" : "Multiply_22441", - "op" : "Multiply", - "outputs" : ["Multiply_22441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22434"], - "name" : "Negative_22442", - "op" : "Negative", - "outputs" : ["Negative_22442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22435", "Parameter_16620" ], - "name" : "Multiply_22443", - "op" : "Multiply", - "outputs" : ["Multiply_22443"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18624", "Divide_22436" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22444", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22444"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22437", "Parameter_16628" ], - "name" : "Multiply_22445", - "op" : "Multiply", - "outputs" : ["Multiply_22445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22439", "Parameter_16578" ], - "name" : "Divide_22446", - "op" : "Divide", - "outputs" : ["Divide_22446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22440"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22447", - "op" : "Slice", - "outputs" : ["Slice_22447"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22441", "Parameter_16586" ], - "name" : "Divide_22448", - "op" : "Divide", - "outputs" : ["Divide_22448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22443", "Parameter_16621" ], - "name" : "Divide_22449", - "op" : "Divide", - "outputs" : ["Divide_22449"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22444"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22450", - "op" : "Slice", - "outputs" : ["Slice_22450"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22445", "Parameter_16629" ], - "name" : "Divide_22451", - "op" : "Divide", - "outputs" : ["Divide_22451"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22446", "Parameter_16579" ], - "name" : "Multiply_22452", - "op" : "Multiply", - "outputs" : ["Multiply_22452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22448", "Parameter_16587" ], - "name" : "Multiply_22453", - "op" : "Multiply", - "outputs" : ["Multiply_22453"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22449", "Parameter_16622" ], - "name" : "Multiply_22454", - "op" : "Multiply", - "outputs" : ["Multiply_22454"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22451", "Parameter_16630" ], - "name" : "Multiply_22455", - "op" : "Multiply", - "outputs" : ["Multiply_22455"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22452"], - "name" : "Negative_22456", - "op" : "Negative", - "outputs" : ["Negative_22456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22453"], - "name" : "Negative_22457", - "op" : "Negative", - "outputs" : ["Negative_22457"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22454"], - "name" : "Negative_22458", - "op" : "Negative", - "outputs" : ["Negative_22458"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22455"], - "name" : "Negative_22459", - "op" : "Negative", - "outputs" : ["Negative_22459"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22447", "Negative_22456" ], - "name" : "Add_22460", - "op" : "Add", - "outputs" : ["Add_22460"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22450", "Negative_22458" ], - "name" : "Add_22461", - "op" : "Add", - "outputs" : ["Add_22461"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22440", "Add_22460" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22462", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22462"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22444", "Add_22461" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22463", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22463"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22462"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22464", - "op" : "Slice", - "outputs" : ["Slice_22464"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22463"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22465", - "op" : "Slice", - "outputs" : ["Slice_22465"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22464", "Negative_22457" ], - "name" : "Add_22466", - "op" : "Add", - "outputs" : ["Add_22466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22465", "Negative_22459" ], - "name" : "Add_22467", - "op" : "Add", - "outputs" : ["Add_22467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22462", "Add_22466" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22468", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22468"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22463", "Add_22467" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22469", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22469"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22468"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22470", - "op" : "Slice", - "outputs" : ["Slice_22470"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22469"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22471", - "op" : "Slice", - "outputs" : ["Slice_22471"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22470", "Negative_22438" ], - "name" : "Add_22472", - "op" : "Add", - "outputs" : ["Add_22472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22471", "Negative_22442" ], - "name" : "Add_22473", - "op" : "Add", - "outputs" : ["Add_22473"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22468", "Add_22472" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22474", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22474"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22469", "Add_22473" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22475", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22475"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22474"], - "name" : "Sum_22476", - "op" : "Sum", - "outputs" : ["Sum_22476"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22474"], - "name" : "Reshape_22477", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22477"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19199", "ReplaceSlice_22474" ], - "name" : "Dot_22478", - "op" : "Dot", - "outputs" : ["Dot_22478"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22474"], - "name" : "Sum_22479", - "op" : "Sum", - "outputs" : ["Sum_22479"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22474"], - "name" : "Reshape_22480", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22480"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19201", "ReplaceSlice_22474" ], - "name" : "Dot_22481", - "op" : "Dot", - "outputs" : ["Dot_22481"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22475"], - "name" : "Sum_22482", - "op" : "Sum", - "outputs" : ["Sum_22482"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22475"], - "name" : "Reshape_22483", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22483"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19200", "ReplaceSlice_22475" ], - "name" : "Dot_22484", - "op" : "Dot", - "outputs" : ["Dot_22484"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22475"], - "name" : "Sum_22485", - "op" : "Sum", - "outputs" : ["Sum_22485"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22475"], - "name" : "Reshape_22486", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22486"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18695", "ReplaceSlice_22475" ], - "name" : "Dot_22487", - "op" : "Dot", - "outputs" : ["Dot_22487"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22378", "Sum_22476" ], - "name" : "Add_22488", - "op" : "Add", - "outputs" : ["Add_22488"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14093", "Reshape_22477" ], - "name" : "Dot_22489", - "op" : "Dot", - "outputs" : ["Dot_22489"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22478"], - "name" : "Reshape_22490", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22490"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22381", "Sum_22479" ], - "name" : "Add_22491", - "op" : "Add", - "outputs" : ["Add_22491"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16537", "Reshape_22480" ], - "name" : "Dot_22492", - "op" : "Dot", - "outputs" : ["Dot_22492"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22481"], - "name" : "Reshape_22493", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22493"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22384", "Sum_22482" ], - "name" : "Add_22494", - "op" : "Add", - "outputs" : ["Add_22494"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16613", "Reshape_22483" ], - "name" : "Dot_22495", - "op" : "Dot", - "outputs" : ["Dot_22495"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22484"], - "name" : "Reshape_22496", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22496"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22387", "Sum_22485" ], - "name" : "Add_22497", - "op" : "Add", - "outputs" : ["Add_22497"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16617", "Reshape_22486" ], - "name" : "Dot_22498", - "op" : "Dot", - "outputs" : ["Dot_22498"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22487"], - "name" : "Reshape_22499", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22499"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22489"], - "name" : "Reshape_22500", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22500"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22490"], - "name" : "Reshape_22501", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22501"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22492"], - "name" : "Reshape_22502", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22493"], - "name" : "Reshape_22503", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22503"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22495"], - "name" : "Reshape_22504", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22496"], - "name" : "Reshape_22505", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22505"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22498"], - "name" : "Reshape_22506", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22499"], - "name" : "Reshape_22507", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22507"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22500", "Reshape_18815" ], - "name" : "Add_22508", - "op" : "Add", - "outputs" : ["Add_22508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22399", "Reshape_22501" ], - "name" : "Add_22509", - "op" : "Add", - "outputs" : ["Add_22509"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22400", "Reshape_22503" ], - "name" : "Add_22510", - "op" : "Add", - "outputs" : ["Add_22510"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22504", "Reshape_22502" ], - "name" : "Add_22511", - "op" : "Add", - "outputs" : ["Add_22511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22402", "Reshape_22505" ], - "name" : "Add_22512", - "op" : "Add", - "outputs" : ["Add_22512"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22506"], - "name" : "Reshape_22513", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22513"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22404", "Reshape_22507" ], - "name" : "Add_22514", - "op" : "Add", - "outputs" : ["Add_22514"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22508", "Parameter_14095" ], - "name" : "Multiply_22515", - "op" : "Multiply", - "outputs" : ["Multiply_22515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16527", "Add_22508" ], - "name" : "Multiply_22516", - "op" : "Multiply", - "outputs" : ["Multiply_22516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22511", "Parameter_16539" ], - "name" : "Multiply_22517", - "op" : "Multiply", - "outputs" : ["Multiply_22517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16570", "Add_22511" ], - "name" : "Multiply_22518", - "op" : "Multiply", - "outputs" : ["Multiply_22518"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22419", "Reshape_22513" ], - "name" : "Add_22519", - "op" : "Add", - "outputs" : ["Add_22519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22515"], - "name" : "Negative_22520", - "op" : "Negative", - "outputs" : ["Negative_22520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22516", "Multiply_19197" ], - "name" : "Divide_22521", - "op" : "Divide", - "outputs" : ["Divide_22521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22517"], - "name" : "Negative_22522", - "op" : "Negative", - "outputs" : ["Negative_22522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22518", "Multiply_19198" ], - "name" : "Divide_22523", - "op" : "Divide", - "outputs" : ["Divide_22523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22414", "Add_22519" ], - "lower_bounds" : [ 0, 33, 0 ], - "name" : "ReplaceSlice_22524", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22524"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 34, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22520", "Parameter_16527" ], - "name" : "Multiply_22525", - "op" : "Multiply", - "outputs" : ["Multiply_22525"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22424", "Divide_22521" ], - "name" : "Add_22526", - "op" : "Add", - "outputs" : ["Add_22526"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22522", "Parameter_16570" ], - "name" : "Multiply_22527", - "op" : "Multiply", - "outputs" : ["Multiply_22527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22429", "Divide_22523" ], - "name" : "Add_22528", - "op" : "Add", - "outputs" : ["Add_22528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22524"], - "lower_bounds" : [ 0, 32, 0 ], - "name" : "Slice_22529", - "op" : "Slice", - "outputs" : ["Slice_22529"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 33, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22525", "Parameter_16528" ], - "name" : "Divide_22530", - "op" : "Divide", - "outputs" : ["Divide_22530"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22526", "Parameter_14098" ], - "name" : "Multiply_22531", - "op" : "Multiply", - "outputs" : ["Multiply_22531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16512", "Add_22526" ], - "name" : "Multiply_22532", - "op" : "Multiply", - "outputs" : ["Multiply_22532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22526", "Parameter_14107" ], - "name" : "Multiply_22533", - "op" : "Multiply", - "outputs" : ["Multiply_22533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16520", "Add_22526" ], - "name" : "Multiply_22534", - "op" : "Multiply", - "outputs" : ["Multiply_22534"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22527", "Parameter_16571" ], - "name" : "Divide_22535", - "op" : "Divide", - "outputs" : ["Divide_22535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22528", "Parameter_16542" ], - "name" : "Multiply_22536", - "op" : "Multiply", - "outputs" : ["Multiply_22536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16555", "Add_22528" ], - "name" : "Multiply_22537", - "op" : "Multiply", - "outputs" : ["Multiply_22537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22528", "Parameter_16475" ], - "name" : "Multiply_22538", - "op" : "Multiply", - "outputs" : ["Multiply_22538"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16563", "Add_22528" ], - "name" : "Multiply_22539", - "op" : "Multiply", - "outputs" : ["Multiply_22539"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22530", "Parameter_16529" ], - "name" : "Multiply_22540", - "op" : "Multiply", - "outputs" : ["Multiply_22540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22531"], - "name" : "Negative_22541", - "op" : "Negative", - "outputs" : ["Negative_22541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22532", "Multiply_19193" ], - "name" : "Divide_22542", - "op" : "Divide", - "outputs" : ["Divide_22542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22533"], - "name" : "Negative_22543", - "op" : "Negative", - "outputs" : ["Negative_22543"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22535", "Parameter_16572" ], - "name" : "Multiply_22544", - "op" : "Multiply", - "outputs" : ["Multiply_22544"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22536"], - "name" : "Negative_22545", - "op" : "Negative", - "outputs" : ["Negative_22545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22537", "Multiply_19194" ], - "name" : "Divide_22546", - "op" : "Divide", - "outputs" : ["Divide_22546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22538"], - "name" : "Negative_22547", - "op" : "Negative", - "outputs" : ["Negative_22547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22540"], - "name" : "Negative_22548", - "op" : "Negative", - "outputs" : ["Negative_22548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22541", "Parameter_16512" ], - "name" : "Multiply_22549", - "op" : "Multiply", - "outputs" : ["Multiply_22549"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18566", "Divide_22542" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22550", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22550"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22543", "Parameter_16520" ], - "name" : "Multiply_22551", - "op" : "Multiply", - "outputs" : ["Multiply_22551"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22544"], - "name" : "Negative_22552", - "op" : "Negative", - "outputs" : ["Negative_22552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22545", "Parameter_16555" ], - "name" : "Multiply_22553", - "op" : "Multiply", - "outputs" : ["Multiply_22553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18625", "Divide_22546" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22554", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22554"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22547", "Parameter_16563" ], - "name" : "Multiply_22555", - "op" : "Multiply", - "outputs" : ["Multiply_22555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22549", "Parameter_16513" ], - "name" : "Divide_22556", - "op" : "Divide", - "outputs" : ["Divide_22556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22550"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22557", - "op" : "Slice", - "outputs" : ["Slice_22557"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22551", "Parameter_16521" ], - "name" : "Divide_22558", - "op" : "Divide", - "outputs" : ["Divide_22558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22553", "Parameter_16556" ], - "name" : "Divide_22559", - "op" : "Divide", - "outputs" : ["Divide_22559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22554"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22560", - "op" : "Slice", - "outputs" : ["Slice_22560"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22555", "Parameter_16564" ], - "name" : "Divide_22561", - "op" : "Divide", - "outputs" : ["Divide_22561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22556", "Parameter_16514" ], - "name" : "Multiply_22562", - "op" : "Multiply", - "outputs" : ["Multiply_22562"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22558", "Parameter_16522" ], - "name" : "Multiply_22563", - "op" : "Multiply", - "outputs" : ["Multiply_22563"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22559", "Parameter_16557" ], - "name" : "Multiply_22564", - "op" : "Multiply", - "outputs" : ["Multiply_22564"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22561", "Parameter_16565" ], - "name" : "Multiply_22565", - "op" : "Multiply", - "outputs" : ["Multiply_22565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22562"], - "name" : "Negative_22566", - "op" : "Negative", - "outputs" : ["Negative_22566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22563"], - "name" : "Negative_22567", - "op" : "Negative", - "outputs" : ["Negative_22567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22564"], - "name" : "Negative_22568", - "op" : "Negative", - "outputs" : ["Negative_22568"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22565"], - "name" : "Negative_22569", - "op" : "Negative", - "outputs" : ["Negative_22569"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22557", "Negative_22566" ], - "name" : "Add_22570", - "op" : "Add", - "outputs" : ["Add_22570"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22560", "Negative_22568" ], - "name" : "Add_22571", - "op" : "Add", - "outputs" : ["Add_22571"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22550", "Add_22570" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22572", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22572"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22554", "Add_22571" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22573", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22573"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22572"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22574", - "op" : "Slice", - "outputs" : ["Slice_22574"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22573"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22575", - "op" : "Slice", - "outputs" : ["Slice_22575"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22574", "Negative_22567" ], - "name" : "Add_22576", - "op" : "Add", - "outputs" : ["Add_22576"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22575", "Negative_22569" ], - "name" : "Add_22577", - "op" : "Add", - "outputs" : ["Add_22577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22572", "Add_22576" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22578", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22578"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22573", "Add_22577" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22579", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22579"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22578"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22580", - "op" : "Slice", - "outputs" : ["Slice_22580"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22579"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22581", - "op" : "Slice", - "outputs" : ["Slice_22581"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22580", "Negative_22548" ], - "name" : "Add_22582", - "op" : "Add", - "outputs" : ["Add_22582"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22581", "Negative_22552" ], - "name" : "Add_22583", - "op" : "Add", - "outputs" : ["Add_22583"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22578", "Add_22582" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22584", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22584"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22579", "Add_22583" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22585", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22585"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22584"], - "name" : "Sum_22586", - "op" : "Sum", - "outputs" : ["Sum_22586"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22584"], - "name" : "Reshape_22587", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22587"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19188", "ReplaceSlice_22584" ], - "name" : "Dot_22588", - "op" : "Dot", - "outputs" : ["Dot_22588"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22584"], - "name" : "Sum_22589", - "op" : "Sum", - "outputs" : ["Sum_22589"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22584"], - "name" : "Reshape_22590", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22590"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19190", "ReplaceSlice_22584" ], - "name" : "Dot_22591", - "op" : "Dot", - "outputs" : ["Dot_22591"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22585"], - "name" : "Sum_22592", - "op" : "Sum", - "outputs" : ["Sum_22592"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22585"], - "name" : "Reshape_22593", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22593"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19189", "ReplaceSlice_22585" ], - "name" : "Dot_22594", - "op" : "Dot", - "outputs" : ["Dot_22594"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22585"], - "name" : "Sum_22595", - "op" : "Sum", - "outputs" : ["Sum_22595"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22585"], - "name" : "Reshape_22596", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22596"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18694", "ReplaceSlice_22585" ], - "name" : "Dot_22597", - "op" : "Dot", - "outputs" : ["Dot_22597"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22488", "Sum_22586" ], - "name" : "Add_22598", - "op" : "Add", - "outputs" : ["Add_22598"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14104", "Reshape_22587" ], - "name" : "Dot_22599", - "op" : "Dot", - "outputs" : ["Dot_22599"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22588"], - "name" : "Reshape_22600", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22600"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22491", "Sum_22589" ], - "name" : "Add_22601", - "op" : "Add", - "outputs" : ["Add_22601"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16472", "Reshape_22590" ], - "name" : "Dot_22602", - "op" : "Dot", - "outputs" : ["Dot_22602"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22591"], - "name" : "Reshape_22603", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22603"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22494", "Sum_22592" ], - "name" : "Add_22604", - "op" : "Add", - "outputs" : ["Add_22604"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16548", "Reshape_22593" ], - "name" : "Dot_22605", - "op" : "Dot", - "outputs" : ["Dot_22605"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22594"], - "name" : "Reshape_22606", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22606"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22497", "Sum_22595" ], - "name" : "Add_22607", - "op" : "Add", - "outputs" : ["Add_22607"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16552", "Reshape_22596" ], - "name" : "Dot_22608", - "op" : "Dot", - "outputs" : ["Dot_22608"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22597"], - "name" : "Reshape_22609", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22609"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22599"], - "name" : "Reshape_22610", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22610"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22600"], - "name" : "Reshape_22611", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22611"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22602"], - "name" : "Reshape_22612", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22612"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22603"], - "name" : "Reshape_22613", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22613"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22605"], - "name" : "Reshape_22614", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22614"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22606"], - "name" : "Reshape_22615", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22615"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22608"], - "name" : "Reshape_22616", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22609"], - "name" : "Reshape_22617", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22617"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22610", "Reshape_18814" ], - "name" : "Add_22618", - "op" : "Add", - "outputs" : ["Add_22618"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22509", "Reshape_22611" ], - "name" : "Add_22619", - "op" : "Add", - "outputs" : ["Add_22619"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22510", "Reshape_22613" ], - "name" : "Add_22620", - "op" : "Add", - "outputs" : ["Add_22620"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22614", "Reshape_22612" ], - "name" : "Add_22621", - "op" : "Add", - "outputs" : ["Add_22621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22512", "Reshape_22615" ], - "name" : "Add_22622", - "op" : "Add", - "outputs" : ["Add_22622"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22616"], - "name" : "Reshape_22623", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22514", "Reshape_22617" ], - "name" : "Add_22624", - "op" : "Add", - "outputs" : ["Add_22624"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22618", "Parameter_14106" ], - "name" : "Multiply_22625", - "op" : "Multiply", - "outputs" : ["Multiply_22625"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16462", "Add_22618" ], - "name" : "Multiply_22626", - "op" : "Multiply", - "outputs" : ["Multiply_22626"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22621", "Parameter_16474" ], - "name" : "Multiply_22627", - "op" : "Multiply", - "outputs" : ["Multiply_22627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16505", "Add_22621" ], - "name" : "Multiply_22628", - "op" : "Multiply", - "outputs" : ["Multiply_22628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22529", "Reshape_22623" ], - "name" : "Add_22629", - "op" : "Add", - "outputs" : ["Add_22629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22625"], - "name" : "Negative_22630", - "op" : "Negative", - "outputs" : ["Negative_22630"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22626", "Multiply_19186" ], - "name" : "Divide_22631", - "op" : "Divide", - "outputs" : ["Divide_22631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22627"], - "name" : "Negative_22632", - "op" : "Negative", - "outputs" : ["Negative_22632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22628", "Multiply_19187" ], - "name" : "Divide_22633", - "op" : "Divide", - "outputs" : ["Divide_22633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22524", "Add_22629" ], - "lower_bounds" : [ 0, 32, 0 ], - "name" : "ReplaceSlice_22634", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22634"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 33, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22630", "Parameter_16462" ], - "name" : "Multiply_22635", - "op" : "Multiply", - "outputs" : ["Multiply_22635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22534", "Divide_22631" ], - "name" : "Add_22636", - "op" : "Add", - "outputs" : ["Add_22636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22632", "Parameter_16505" ], - "name" : "Multiply_22637", - "op" : "Multiply", - "outputs" : ["Multiply_22637"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22539", "Divide_22633" ], - "name" : "Add_22638", - "op" : "Add", - "outputs" : ["Add_22638"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22634"], - "lower_bounds" : [ 0, 31, 0 ], - "name" : "Slice_22639", - "op" : "Slice", - "outputs" : ["Slice_22639"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22635", "Parameter_16463" ], - "name" : "Divide_22640", - "op" : "Divide", - "outputs" : ["Divide_22640"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22636", "Parameter_14109" ], - "name" : "Multiply_22641", - "op" : "Multiply", - "outputs" : ["Multiply_22641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16447", "Add_22636" ], - "name" : "Multiply_22642", - "op" : "Multiply", - "outputs" : ["Multiply_22642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22636", "Parameter_14118" ], - "name" : "Multiply_22643", - "op" : "Multiply", - "outputs" : ["Multiply_22643"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16455", "Add_22636" ], - "name" : "Multiply_22644", - "op" : "Multiply", - "outputs" : ["Multiply_22644"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22637", "Parameter_16506" ], - "name" : "Divide_22645", - "op" : "Divide", - "outputs" : ["Divide_22645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22638", "Parameter_16477" ], - "name" : "Multiply_22646", - "op" : "Multiply", - "outputs" : ["Multiply_22646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16490", "Add_22638" ], - "name" : "Multiply_22647", - "op" : "Multiply", - "outputs" : ["Multiply_22647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22638", "Parameter_16410" ], - "name" : "Multiply_22648", - "op" : "Multiply", - "outputs" : ["Multiply_22648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16498", "Add_22638" ], - "name" : "Multiply_22649", - "op" : "Multiply", - "outputs" : ["Multiply_22649"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22640", "Parameter_16464" ], - "name" : "Multiply_22650", - "op" : "Multiply", - "outputs" : ["Multiply_22650"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22641"], - "name" : "Negative_22651", - "op" : "Negative", - "outputs" : ["Negative_22651"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22642", "Multiply_19182" ], - "name" : "Divide_22652", - "op" : "Divide", - "outputs" : ["Divide_22652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22643"], - "name" : "Negative_22653", - "op" : "Negative", - "outputs" : ["Negative_22653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22645", "Parameter_16507" ], - "name" : "Multiply_22654", - "op" : "Multiply", - "outputs" : ["Multiply_22654"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22646"], - "name" : "Negative_22655", - "op" : "Negative", - "outputs" : ["Negative_22655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22647", "Multiply_19183" ], - "name" : "Divide_22656", - "op" : "Divide", - "outputs" : ["Divide_22656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22648"], - "name" : "Negative_22657", - "op" : "Negative", - "outputs" : ["Negative_22657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22650"], - "name" : "Negative_22658", - "op" : "Negative", - "outputs" : ["Negative_22658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22651", "Parameter_16447" ], - "name" : "Multiply_22659", - "op" : "Multiply", - "outputs" : ["Multiply_22659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18567", "Divide_22652" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22660", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22660"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22653", "Parameter_16455" ], - "name" : "Multiply_22661", - "op" : "Multiply", - "outputs" : ["Multiply_22661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22654"], - "name" : "Negative_22662", - "op" : "Negative", - "outputs" : ["Negative_22662"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22655", "Parameter_16490" ], - "name" : "Multiply_22663", - "op" : "Multiply", - "outputs" : ["Multiply_22663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18626", "Divide_22656" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22664", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22664"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22657", "Parameter_16498" ], - "name" : "Multiply_22665", - "op" : "Multiply", - "outputs" : ["Multiply_22665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22659", "Parameter_16448" ], - "name" : "Divide_22666", - "op" : "Divide", - "outputs" : ["Divide_22666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22660"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22667", - "op" : "Slice", - "outputs" : ["Slice_22667"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22661", "Parameter_16456" ], - "name" : "Divide_22668", - "op" : "Divide", - "outputs" : ["Divide_22668"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22663", "Parameter_16491" ], - "name" : "Divide_22669", - "op" : "Divide", - "outputs" : ["Divide_22669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22664"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22670", - "op" : "Slice", - "outputs" : ["Slice_22670"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22665", "Parameter_16499" ], - "name" : "Divide_22671", - "op" : "Divide", - "outputs" : ["Divide_22671"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22666", "Parameter_16449" ], - "name" : "Multiply_22672", - "op" : "Multiply", - "outputs" : ["Multiply_22672"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22668", "Parameter_16457" ], - "name" : "Multiply_22673", - "op" : "Multiply", - "outputs" : ["Multiply_22673"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22669", "Parameter_16492" ], - "name" : "Multiply_22674", - "op" : "Multiply", - "outputs" : ["Multiply_22674"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22671", "Parameter_16500" ], - "name" : "Multiply_22675", - "op" : "Multiply", - "outputs" : ["Multiply_22675"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22672"], - "name" : "Negative_22676", - "op" : "Negative", - "outputs" : ["Negative_22676"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22673"], - "name" : "Negative_22677", - "op" : "Negative", - "outputs" : ["Negative_22677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22674"], - "name" : "Negative_22678", - "op" : "Negative", - "outputs" : ["Negative_22678"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22675"], - "name" : "Negative_22679", - "op" : "Negative", - "outputs" : ["Negative_22679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22667", "Negative_22676" ], - "name" : "Add_22680", - "op" : "Add", - "outputs" : ["Add_22680"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22670", "Negative_22678" ], - "name" : "Add_22681", - "op" : "Add", - "outputs" : ["Add_22681"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22660", "Add_22680" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22682", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22682"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22664", "Add_22681" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22683", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22683"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22682"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22684", - "op" : "Slice", - "outputs" : ["Slice_22684"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22683"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22685", - "op" : "Slice", - "outputs" : ["Slice_22685"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22684", "Negative_22677" ], - "name" : "Add_22686", - "op" : "Add", - "outputs" : ["Add_22686"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22685", "Negative_22679" ], - "name" : "Add_22687", - "op" : "Add", - "outputs" : ["Add_22687"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22682", "Add_22686" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22688", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22688"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22683", "Add_22687" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22689", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22689"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22688"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22690", - "op" : "Slice", - "outputs" : ["Slice_22690"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22689"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22691", - "op" : "Slice", - "outputs" : ["Slice_22691"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22690", "Negative_22658" ], - "name" : "Add_22692", - "op" : "Add", - "outputs" : ["Add_22692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22691", "Negative_22662" ], - "name" : "Add_22693", - "op" : "Add", - "outputs" : ["Add_22693"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22688", "Add_22692" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22694", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22694"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22689", "Add_22693" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22695", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22695"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22694"], - "name" : "Sum_22696", - "op" : "Sum", - "outputs" : ["Sum_22696"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22694"], - "name" : "Reshape_22697", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22697"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19177", "ReplaceSlice_22694" ], - "name" : "Dot_22698", - "op" : "Dot", - "outputs" : ["Dot_22698"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22694"], - "name" : "Sum_22699", - "op" : "Sum", - "outputs" : ["Sum_22699"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22694"], - "name" : "Reshape_22700", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22700"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19179", "ReplaceSlice_22694" ], - "name" : "Dot_22701", - "op" : "Dot", - "outputs" : ["Dot_22701"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22695"], - "name" : "Sum_22702", - "op" : "Sum", - "outputs" : ["Sum_22702"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22695"], - "name" : "Reshape_22703", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22703"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19178", "ReplaceSlice_22695" ], - "name" : "Dot_22704", - "op" : "Dot", - "outputs" : ["Dot_22704"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22695"], - "name" : "Sum_22705", - "op" : "Sum", - "outputs" : ["Sum_22705"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22695"], - "name" : "Reshape_22706", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22706"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18693", "ReplaceSlice_22695" ], - "name" : "Dot_22707", - "op" : "Dot", - "outputs" : ["Dot_22707"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22598", "Sum_22696" ], - "name" : "Add_22708", - "op" : "Add", - "outputs" : ["Add_22708"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14115", "Reshape_22697" ], - "name" : "Dot_22709", - "op" : "Dot", - "outputs" : ["Dot_22709"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22698"], - "name" : "Reshape_22710", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22710"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22601", "Sum_22699" ], - "name" : "Add_22711", - "op" : "Add", - "outputs" : ["Add_22711"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16407", "Reshape_22700" ], - "name" : "Dot_22712", - "op" : "Dot", - "outputs" : ["Dot_22712"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22701"], - "name" : "Reshape_22713", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22713"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22604", "Sum_22702" ], - "name" : "Add_22714", - "op" : "Add", - "outputs" : ["Add_22714"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16483", "Reshape_22703" ], - "name" : "Dot_22715", - "op" : "Dot", - "outputs" : ["Dot_22715"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22704"], - "name" : "Reshape_22716", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22716"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22607", "Sum_22705" ], - "name" : "Add_22717", - "op" : "Add", - "outputs" : ["Add_22717"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16487", "Reshape_22706" ], - "name" : "Dot_22718", - "op" : "Dot", - "outputs" : ["Dot_22718"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22707"], - "name" : "Reshape_22719", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22719"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22709"], - "name" : "Reshape_22720", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22720"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22710"], - "name" : "Reshape_22721", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22721"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22712"], - "name" : "Reshape_22722", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22722"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22713"], - "name" : "Reshape_22723", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22723"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22715"], - "name" : "Reshape_22724", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22724"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22716"], - "name" : "Reshape_22725", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22725"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22718"], - "name" : "Reshape_22726", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22726"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22719"], - "name" : "Reshape_22727", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22727"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22720", "Reshape_18813" ], - "name" : "Add_22728", - "op" : "Add", - "outputs" : ["Add_22728"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22619", "Reshape_22721" ], - "name" : "Add_22729", - "op" : "Add", - "outputs" : ["Add_22729"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22620", "Reshape_22723" ], - "name" : "Add_22730", - "op" : "Add", - "outputs" : ["Add_22730"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22724", "Reshape_22722" ], - "name" : "Add_22731", - "op" : "Add", - "outputs" : ["Add_22731"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22622", "Reshape_22725" ], - "name" : "Add_22732", - "op" : "Add", - "outputs" : ["Add_22732"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22726"], - "name" : "Reshape_22733", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22733"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22624", "Reshape_22727" ], - "name" : "Add_22734", - "op" : "Add", - "outputs" : ["Add_22734"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22728", "Parameter_14117" ], - "name" : "Multiply_22735", - "op" : "Multiply", - "outputs" : ["Multiply_22735"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16397", "Add_22728" ], - "name" : "Multiply_22736", - "op" : "Multiply", - "outputs" : ["Multiply_22736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22731", "Parameter_16409" ], - "name" : "Multiply_22737", - "op" : "Multiply", - "outputs" : ["Multiply_22737"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16440", "Add_22731" ], - "name" : "Multiply_22738", - "op" : "Multiply", - "outputs" : ["Multiply_22738"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22639", "Reshape_22733" ], - "name" : "Add_22739", - "op" : "Add", - "outputs" : ["Add_22739"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22735"], - "name" : "Negative_22740", - "op" : "Negative", - "outputs" : ["Negative_22740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22736", "Multiply_19175" ], - "name" : "Divide_22741", - "op" : "Divide", - "outputs" : ["Divide_22741"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22737"], - "name" : "Negative_22742", - "op" : "Negative", - "outputs" : ["Negative_22742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22738", "Multiply_19176" ], - "name" : "Divide_22743", - "op" : "Divide", - "outputs" : ["Divide_22743"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22634", "Add_22739" ], - "lower_bounds" : [ 0, 31, 0 ], - "name" : "ReplaceSlice_22744", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22744"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22740", "Parameter_16397" ], - "name" : "Multiply_22745", - "op" : "Multiply", - "outputs" : ["Multiply_22745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22644", "Divide_22741" ], - "name" : "Add_22746", - "op" : "Add", - "outputs" : ["Add_22746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22742", "Parameter_16440" ], - "name" : "Multiply_22747", - "op" : "Multiply", - "outputs" : ["Multiply_22747"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22649", "Divide_22743" ], - "name" : "Add_22748", - "op" : "Add", - "outputs" : ["Add_22748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22744"], - "lower_bounds" : [ 0, 30, 0 ], - "name" : "Slice_22749", - "op" : "Slice", - "outputs" : ["Slice_22749"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 31, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22745", "Parameter_16398" ], - "name" : "Divide_22750", - "op" : "Divide", - "outputs" : ["Divide_22750"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22746", "Parameter_14120" ], - "name" : "Multiply_22751", - "op" : "Multiply", - "outputs" : ["Multiply_22751"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16382", "Add_22746" ], - "name" : "Multiply_22752", - "op" : "Multiply", - "outputs" : ["Multiply_22752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22746", "Parameter_14129" ], - "name" : "Multiply_22753", - "op" : "Multiply", - "outputs" : ["Multiply_22753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16390", "Add_22746" ], - "name" : "Multiply_22754", - "op" : "Multiply", - "outputs" : ["Multiply_22754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22747", "Parameter_16441" ], - "name" : "Divide_22755", - "op" : "Divide", - "outputs" : ["Divide_22755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22748", "Parameter_16412" ], - "name" : "Multiply_22756", - "op" : "Multiply", - "outputs" : ["Multiply_22756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16425", "Add_22748" ], - "name" : "Multiply_22757", - "op" : "Multiply", - "outputs" : ["Multiply_22757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22748", "Parameter_16345" ], - "name" : "Multiply_22758", - "op" : "Multiply", - "outputs" : ["Multiply_22758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16433", "Add_22748" ], - "name" : "Multiply_22759", - "op" : "Multiply", - "outputs" : ["Multiply_22759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22750", "Parameter_16399" ], - "name" : "Multiply_22760", - "op" : "Multiply", - "outputs" : ["Multiply_22760"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22751"], - "name" : "Negative_22761", - "op" : "Negative", - "outputs" : ["Negative_22761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22752", "Multiply_19171" ], - "name" : "Divide_22762", - "op" : "Divide", - "outputs" : ["Divide_22762"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22753"], - "name" : "Negative_22763", - "op" : "Negative", - "outputs" : ["Negative_22763"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22755", "Parameter_16442" ], - "name" : "Multiply_22764", - "op" : "Multiply", - "outputs" : ["Multiply_22764"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22756"], - "name" : "Negative_22765", - "op" : "Negative", - "outputs" : ["Negative_22765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22757", "Multiply_19172" ], - "name" : "Divide_22766", - "op" : "Divide", - "outputs" : ["Divide_22766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22758"], - "name" : "Negative_22767", - "op" : "Negative", - "outputs" : ["Negative_22767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22760"], - "name" : "Negative_22768", - "op" : "Negative", - "outputs" : ["Negative_22768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22761", "Parameter_16382" ], - "name" : "Multiply_22769", - "op" : "Multiply", - "outputs" : ["Multiply_22769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18568", "Divide_22762" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22770", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22770"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22763", "Parameter_16390" ], - "name" : "Multiply_22771", - "op" : "Multiply", - "outputs" : ["Multiply_22771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22764"], - "name" : "Negative_22772", - "op" : "Negative", - "outputs" : ["Negative_22772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22765", "Parameter_16425" ], - "name" : "Multiply_22773", - "op" : "Multiply", - "outputs" : ["Multiply_22773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18627", "Divide_22766" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22774", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22774"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22767", "Parameter_16433" ], - "name" : "Multiply_22775", - "op" : "Multiply", - "outputs" : ["Multiply_22775"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22769", "Parameter_16383" ], - "name" : "Divide_22776", - "op" : "Divide", - "outputs" : ["Divide_22776"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22770"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22777", - "op" : "Slice", - "outputs" : ["Slice_22777"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22771", "Parameter_16391" ], - "name" : "Divide_22778", - "op" : "Divide", - "outputs" : ["Divide_22778"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22773", "Parameter_16426" ], - "name" : "Divide_22779", - "op" : "Divide", - "outputs" : ["Divide_22779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22774"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22780", - "op" : "Slice", - "outputs" : ["Slice_22780"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22775", "Parameter_16434" ], - "name" : "Divide_22781", - "op" : "Divide", - "outputs" : ["Divide_22781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22776", "Parameter_16384" ], - "name" : "Multiply_22782", - "op" : "Multiply", - "outputs" : ["Multiply_22782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22778", "Parameter_16392" ], - "name" : "Multiply_22783", - "op" : "Multiply", - "outputs" : ["Multiply_22783"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22779", "Parameter_16427" ], - "name" : "Multiply_22784", - "op" : "Multiply", - "outputs" : ["Multiply_22784"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22781", "Parameter_16435" ], - "name" : "Multiply_22785", - "op" : "Multiply", - "outputs" : ["Multiply_22785"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22782"], - "name" : "Negative_22786", - "op" : "Negative", - "outputs" : ["Negative_22786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22783"], - "name" : "Negative_22787", - "op" : "Negative", - "outputs" : ["Negative_22787"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22784"], - "name" : "Negative_22788", - "op" : "Negative", - "outputs" : ["Negative_22788"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22785"], - "name" : "Negative_22789", - "op" : "Negative", - "outputs" : ["Negative_22789"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22777", "Negative_22786" ], - "name" : "Add_22790", - "op" : "Add", - "outputs" : ["Add_22790"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22780", "Negative_22788" ], - "name" : "Add_22791", - "op" : "Add", - "outputs" : ["Add_22791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22770", "Add_22790" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22792", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22792"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22774", "Add_22791" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22793", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22793"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22792"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22794", - "op" : "Slice", - "outputs" : ["Slice_22794"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22793"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22795", - "op" : "Slice", - "outputs" : ["Slice_22795"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22794", "Negative_22787" ], - "name" : "Add_22796", - "op" : "Add", - "outputs" : ["Add_22796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22795", "Negative_22789" ], - "name" : "Add_22797", - "op" : "Add", - "outputs" : ["Add_22797"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22792", "Add_22796" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22798", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22798"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22793", "Add_22797" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22799", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22799"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22798"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22800", - "op" : "Slice", - "outputs" : ["Slice_22800"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22799"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22801", - "op" : "Slice", - "outputs" : ["Slice_22801"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22800", "Negative_22768" ], - "name" : "Add_22802", - "op" : "Add", - "outputs" : ["Add_22802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22801", "Negative_22772" ], - "name" : "Add_22803", - "op" : "Add", - "outputs" : ["Add_22803"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22798", "Add_22802" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22804", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22804"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22799", "Add_22803" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22805", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22805"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22804"], - "name" : "Sum_22806", - "op" : "Sum", - "outputs" : ["Sum_22806"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22804"], - "name" : "Reshape_22807", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22807"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19166", "ReplaceSlice_22804" ], - "name" : "Dot_22808", - "op" : "Dot", - "outputs" : ["Dot_22808"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22804"], - "name" : "Sum_22809", - "op" : "Sum", - "outputs" : ["Sum_22809"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22804"], - "name" : "Reshape_22810", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22810"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19168", "ReplaceSlice_22804" ], - "name" : "Dot_22811", - "op" : "Dot", - "outputs" : ["Dot_22811"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22805"], - "name" : "Sum_22812", - "op" : "Sum", - "outputs" : ["Sum_22812"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22805"], - "name" : "Reshape_22813", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22813"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19167", "ReplaceSlice_22805" ], - "name" : "Dot_22814", - "op" : "Dot", - "outputs" : ["Dot_22814"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22805"], - "name" : "Sum_22815", - "op" : "Sum", - "outputs" : ["Sum_22815"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22805"], - "name" : "Reshape_22816", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22816"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18692", "ReplaceSlice_22805" ], - "name" : "Dot_22817", - "op" : "Dot", - "outputs" : ["Dot_22817"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22708", "Sum_22806" ], - "name" : "Add_22818", - "op" : "Add", - "outputs" : ["Add_22818"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14126", "Reshape_22807" ], - "name" : "Dot_22819", - "op" : "Dot", - "outputs" : ["Dot_22819"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22808"], - "name" : "Reshape_22820", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22820"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22711", "Sum_22809" ], - "name" : "Add_22821", - "op" : "Add", - "outputs" : ["Add_22821"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16342", "Reshape_22810" ], - "name" : "Dot_22822", - "op" : "Dot", - "outputs" : ["Dot_22822"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22811"], - "name" : "Reshape_22823", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22823"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22714", "Sum_22812" ], - "name" : "Add_22824", - "op" : "Add", - "outputs" : ["Add_22824"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16418", "Reshape_22813" ], - "name" : "Dot_22825", - "op" : "Dot", - "outputs" : ["Dot_22825"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22814"], - "name" : "Reshape_22826", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22826"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22717", "Sum_22815" ], - "name" : "Add_22827", - "op" : "Add", - "outputs" : ["Add_22827"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16422", "Reshape_22816" ], - "name" : "Dot_22828", - "op" : "Dot", - "outputs" : ["Dot_22828"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22817"], - "name" : "Reshape_22829", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22829"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22819"], - "name" : "Reshape_22830", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22830"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22820"], - "name" : "Reshape_22831", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22831"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22822"], - "name" : "Reshape_22832", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22832"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22823"], - "name" : "Reshape_22833", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22833"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22825"], - "name" : "Reshape_22834", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22834"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22826"], - "name" : "Reshape_22835", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22835"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22828"], - "name" : "Reshape_22836", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22829"], - "name" : "Reshape_22837", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22837"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22830", "Reshape_18812" ], - "name" : "Add_22838", - "op" : "Add", - "outputs" : ["Add_22838"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22729", "Reshape_22831" ], - "name" : "Add_22839", - "op" : "Add", - "outputs" : ["Add_22839"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22730", "Reshape_22833" ], - "name" : "Add_22840", - "op" : "Add", - "outputs" : ["Add_22840"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22834", "Reshape_22832" ], - "name" : "Add_22841", - "op" : "Add", - "outputs" : ["Add_22841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22732", "Reshape_22835" ], - "name" : "Add_22842", - "op" : "Add", - "outputs" : ["Add_22842"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22836"], - "name" : "Reshape_22843", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22843"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22734", "Reshape_22837" ], - "name" : "Add_22844", - "op" : "Add", - "outputs" : ["Add_22844"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22838", "Parameter_14128" ], - "name" : "Multiply_22845", - "op" : "Multiply", - "outputs" : ["Multiply_22845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16332", "Add_22838" ], - "name" : "Multiply_22846", - "op" : "Multiply", - "outputs" : ["Multiply_22846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22841", "Parameter_16344" ], - "name" : "Multiply_22847", - "op" : "Multiply", - "outputs" : ["Multiply_22847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16375", "Add_22841" ], - "name" : "Multiply_22848", - "op" : "Multiply", - "outputs" : ["Multiply_22848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22749", "Reshape_22843" ], - "name" : "Add_22849", - "op" : "Add", - "outputs" : ["Add_22849"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22845"], - "name" : "Negative_22850", - "op" : "Negative", - "outputs" : ["Negative_22850"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22846", "Multiply_19164" ], - "name" : "Divide_22851", - "op" : "Divide", - "outputs" : ["Divide_22851"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22847"], - "name" : "Negative_22852", - "op" : "Negative", - "outputs" : ["Negative_22852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22848", "Multiply_19165" ], - "name" : "Divide_22853", - "op" : "Divide", - "outputs" : ["Divide_22853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22744", "Add_22849" ], - "lower_bounds" : [ 0, 30, 0 ], - "name" : "ReplaceSlice_22854", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22854"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 31, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22850", "Parameter_16332" ], - "name" : "Multiply_22855", - "op" : "Multiply", - "outputs" : ["Multiply_22855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22754", "Divide_22851" ], - "name" : "Add_22856", - "op" : "Add", - "outputs" : ["Add_22856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22852", "Parameter_16375" ], - "name" : "Multiply_22857", - "op" : "Multiply", - "outputs" : ["Multiply_22857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22759", "Divide_22853" ], - "name" : "Add_22858", - "op" : "Add", - "outputs" : ["Add_22858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22854"], - "lower_bounds" : [ 0, 29, 0 ], - "name" : "Slice_22859", - "op" : "Slice", - "outputs" : ["Slice_22859"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 30, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22855", "Parameter_16333" ], - "name" : "Divide_22860", - "op" : "Divide", - "outputs" : ["Divide_22860"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22856", "Parameter_14131" ], - "name" : "Multiply_22861", - "op" : "Multiply", - "outputs" : ["Multiply_22861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16317", "Add_22856" ], - "name" : "Multiply_22862", - "op" : "Multiply", - "outputs" : ["Multiply_22862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22856", "Parameter_14140" ], - "name" : "Multiply_22863", - "op" : "Multiply", - "outputs" : ["Multiply_22863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16325", "Add_22856" ], - "name" : "Multiply_22864", - "op" : "Multiply", - "outputs" : ["Multiply_22864"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22857", "Parameter_16376" ], - "name" : "Divide_22865", - "op" : "Divide", - "outputs" : ["Divide_22865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22858", "Parameter_16347" ], - "name" : "Multiply_22866", - "op" : "Multiply", - "outputs" : ["Multiply_22866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16360", "Add_22858" ], - "name" : "Multiply_22867", - "op" : "Multiply", - "outputs" : ["Multiply_22867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22858", "Parameter_16280" ], - "name" : "Multiply_22868", - "op" : "Multiply", - "outputs" : ["Multiply_22868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16368", "Add_22858" ], - "name" : "Multiply_22869", - "op" : "Multiply", - "outputs" : ["Multiply_22869"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22860", "Parameter_16334" ], - "name" : "Multiply_22870", - "op" : "Multiply", - "outputs" : ["Multiply_22870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22861"], - "name" : "Negative_22871", - "op" : "Negative", - "outputs" : ["Negative_22871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22862", "Multiply_19160" ], - "name" : "Divide_22872", - "op" : "Divide", - "outputs" : ["Divide_22872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22863"], - "name" : "Negative_22873", - "op" : "Negative", - "outputs" : ["Negative_22873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22865", "Parameter_16377" ], - "name" : "Multiply_22874", - "op" : "Multiply", - "outputs" : ["Multiply_22874"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22866"], - "name" : "Negative_22875", - "op" : "Negative", - "outputs" : ["Negative_22875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22867", "Multiply_19161" ], - "name" : "Divide_22876", - "op" : "Divide", - "outputs" : ["Divide_22876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22868"], - "name" : "Negative_22877", - "op" : "Negative", - "outputs" : ["Negative_22877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22870"], - "name" : "Negative_22878", - "op" : "Negative", - "outputs" : ["Negative_22878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22871", "Parameter_16317" ], - "name" : "Multiply_22879", - "op" : "Multiply", - "outputs" : ["Multiply_22879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18569", "Divide_22872" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22880", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22880"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22873", "Parameter_16325" ], - "name" : "Multiply_22881", - "op" : "Multiply", - "outputs" : ["Multiply_22881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22874"], - "name" : "Negative_22882", - "op" : "Negative", - "outputs" : ["Negative_22882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22875", "Parameter_16360" ], - "name" : "Multiply_22883", - "op" : "Multiply", - "outputs" : ["Multiply_22883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18628", "Divide_22876" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22884", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22884"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22877", "Parameter_16368" ], - "name" : "Multiply_22885", - "op" : "Multiply", - "outputs" : ["Multiply_22885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22879", "Parameter_16318" ], - "name" : "Divide_22886", - "op" : "Divide", - "outputs" : ["Divide_22886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22880"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22887", - "op" : "Slice", - "outputs" : ["Slice_22887"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22881", "Parameter_16326" ], - "name" : "Divide_22888", - "op" : "Divide", - "outputs" : ["Divide_22888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22883", "Parameter_16361" ], - "name" : "Divide_22889", - "op" : "Divide", - "outputs" : ["Divide_22889"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22884"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22890", - "op" : "Slice", - "outputs" : ["Slice_22890"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22885", "Parameter_16369" ], - "name" : "Divide_22891", - "op" : "Divide", - "outputs" : ["Divide_22891"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22886", "Parameter_16319" ], - "name" : "Multiply_22892", - "op" : "Multiply", - "outputs" : ["Multiply_22892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22888", "Parameter_16327" ], - "name" : "Multiply_22893", - "op" : "Multiply", - "outputs" : ["Multiply_22893"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22889", "Parameter_16362" ], - "name" : "Multiply_22894", - "op" : "Multiply", - "outputs" : ["Multiply_22894"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22891", "Parameter_16370" ], - "name" : "Multiply_22895", - "op" : "Multiply", - "outputs" : ["Multiply_22895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22892"], - "name" : "Negative_22896", - "op" : "Negative", - "outputs" : ["Negative_22896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22893"], - "name" : "Negative_22897", - "op" : "Negative", - "outputs" : ["Negative_22897"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22894"], - "name" : "Negative_22898", - "op" : "Negative", - "outputs" : ["Negative_22898"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22895"], - "name" : "Negative_22899", - "op" : "Negative", - "outputs" : ["Negative_22899"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22887", "Negative_22896" ], - "name" : "Add_22900", - "op" : "Add", - "outputs" : ["Add_22900"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22890", "Negative_22898" ], - "name" : "Add_22901", - "op" : "Add", - "outputs" : ["Add_22901"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22880", "Add_22900" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22902", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22902"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22884", "Add_22901" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_22903", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22903"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22902"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22904", - "op" : "Slice", - "outputs" : ["Slice_22904"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22903"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_22905", - "op" : "Slice", - "outputs" : ["Slice_22905"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22904", "Negative_22897" ], - "name" : "Add_22906", - "op" : "Add", - "outputs" : ["Add_22906"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22905", "Negative_22899" ], - "name" : "Add_22907", - "op" : "Add", - "outputs" : ["Add_22907"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22902", "Add_22906" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22908", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22908"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22903", "Add_22907" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_22909", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22909"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22908"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22910", - "op" : "Slice", - "outputs" : ["Slice_22910"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22909"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_22911", - "op" : "Slice", - "outputs" : ["Slice_22911"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22910", "Negative_22878" ], - "name" : "Add_22912", - "op" : "Add", - "outputs" : ["Add_22912"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22911", "Negative_22882" ], - "name" : "Add_22913", - "op" : "Add", - "outputs" : ["Add_22913"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22908", "Add_22912" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22914", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22914"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22909", "Add_22913" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_22915", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22915"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22914"], - "name" : "Sum_22916", - "op" : "Sum", - "outputs" : ["Sum_22916"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22914"], - "name" : "Reshape_22917", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22917"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19155", "ReplaceSlice_22914" ], - "name" : "Dot_22918", - "op" : "Dot", - "outputs" : ["Dot_22918"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22914"], - "name" : "Sum_22919", - "op" : "Sum", - "outputs" : ["Sum_22919"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22914"], - "name" : "Reshape_22920", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22920"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19157", "ReplaceSlice_22914" ], - "name" : "Dot_22921", - "op" : "Dot", - "outputs" : ["Dot_22921"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22915"], - "name" : "Sum_22922", - "op" : "Sum", - "outputs" : ["Sum_22922"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22915"], - "name" : "Reshape_22923", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22923"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19156", "ReplaceSlice_22915" ], - "name" : "Dot_22924", - "op" : "Dot", - "outputs" : ["Dot_22924"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_22915"], - "name" : "Sum_22925", - "op" : "Sum", - "outputs" : ["Sum_22925"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_22915"], - "name" : "Reshape_22926", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_22926"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18691", "ReplaceSlice_22915" ], - "name" : "Dot_22927", - "op" : "Dot", - "outputs" : ["Dot_22927"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22818", "Sum_22916" ], - "name" : "Add_22928", - "op" : "Add", - "outputs" : ["Add_22928"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14137", "Reshape_22917" ], - "name" : "Dot_22929", - "op" : "Dot", - "outputs" : ["Dot_22929"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22918"], - "name" : "Reshape_22930", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22930"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22821", "Sum_22919" ], - "name" : "Add_22931", - "op" : "Add", - "outputs" : ["Add_22931"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16277", "Reshape_22920" ], - "name" : "Dot_22932", - "op" : "Dot", - "outputs" : ["Dot_22932"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22921"], - "name" : "Reshape_22933", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22933"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22824", "Sum_22922" ], - "name" : "Add_22934", - "op" : "Add", - "outputs" : ["Add_22934"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16353", "Reshape_22923" ], - "name" : "Dot_22935", - "op" : "Dot", - "outputs" : ["Dot_22935"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22924"], - "name" : "Reshape_22936", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22936"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22827", "Sum_22925" ], - "name" : "Add_22937", - "op" : "Add", - "outputs" : ["Add_22937"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16357", "Reshape_22926" ], - "name" : "Dot_22938", - "op" : "Dot", - "outputs" : ["Dot_22938"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_22927"], - "name" : "Reshape_22939", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_22939"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22929"], - "name" : "Reshape_22940", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22930"], - "name" : "Reshape_22941", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22941"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22932"], - "name" : "Reshape_22942", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22933"], - "name" : "Reshape_22943", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22943"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22935"], - "name" : "Reshape_22944", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22944"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22936"], - "name" : "Reshape_22945", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22945"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_22938"], - "name" : "Reshape_22946", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22946"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22939"], - "name" : "Reshape_22947", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_22947"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22940", "Reshape_18811" ], - "name" : "Add_22948", - "op" : "Add", - "outputs" : ["Add_22948"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22839", "Reshape_22941" ], - "name" : "Add_22949", - "op" : "Add", - "outputs" : ["Add_22949"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22840", "Reshape_22943" ], - "name" : "Add_22950", - "op" : "Add", - "outputs" : ["Add_22950"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_22944", "Reshape_22942" ], - "name" : "Add_22951", - "op" : "Add", - "outputs" : ["Add_22951"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22842", "Reshape_22945" ], - "name" : "Add_22952", - "op" : "Add", - "outputs" : ["Add_22952"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_22946"], - "name" : "Reshape_22953", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_22953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22844", "Reshape_22947" ], - "name" : "Add_22954", - "op" : "Add", - "outputs" : ["Add_22954"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22948", "Parameter_14139" ], - "name" : "Multiply_22955", - "op" : "Multiply", - "outputs" : ["Multiply_22955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16267", "Add_22948" ], - "name" : "Multiply_22956", - "op" : "Multiply", - "outputs" : ["Multiply_22956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22951", "Parameter_16279" ], - "name" : "Multiply_22957", - "op" : "Multiply", - "outputs" : ["Multiply_22957"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16310", "Add_22951" ], - "name" : "Multiply_22958", - "op" : "Multiply", - "outputs" : ["Multiply_22958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22859", "Reshape_22953" ], - "name" : "Add_22959", - "op" : "Add", - "outputs" : ["Add_22959"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_22955"], - "name" : "Negative_22960", - "op" : "Negative", - "outputs" : ["Negative_22960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22956", "Multiply_19153" ], - "name" : "Divide_22961", - "op" : "Divide", - "outputs" : ["Divide_22961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22957"], - "name" : "Negative_22962", - "op" : "Negative", - "outputs" : ["Negative_22962"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22958", "Multiply_19154" ], - "name" : "Divide_22963", - "op" : "Divide", - "outputs" : ["Divide_22963"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22854", "Add_22959" ], - "lower_bounds" : [ 0, 29, 0 ], - "name" : "ReplaceSlice_22964", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22964"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 30, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_22960", "Parameter_16267" ], - "name" : "Multiply_22965", - "op" : "Multiply", - "outputs" : ["Multiply_22965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22864", "Divide_22961" ], - "name" : "Add_22966", - "op" : "Add", - "outputs" : ["Add_22966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22962", "Parameter_16310" ], - "name" : "Multiply_22967", - "op" : "Multiply", - "outputs" : ["Multiply_22967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22869", "Divide_22963" ], - "name" : "Add_22968", - "op" : "Add", - "outputs" : ["Add_22968"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22964"], - "lower_bounds" : [ 0, 28, 0 ], - "name" : "Slice_22969", - "op" : "Slice", - "outputs" : ["Slice_22969"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 29, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_22965", "Parameter_16268" ], - "name" : "Divide_22970", - "op" : "Divide", - "outputs" : ["Divide_22970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22966", "Parameter_14142" ], - "name" : "Multiply_22971", - "op" : "Multiply", - "outputs" : ["Multiply_22971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16252", "Add_22966" ], - "name" : "Multiply_22972", - "op" : "Multiply", - "outputs" : ["Multiply_22972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22966", "Parameter_14151" ], - "name" : "Multiply_22973", - "op" : "Multiply", - "outputs" : ["Multiply_22973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16260", "Add_22966" ], - "name" : "Multiply_22974", - "op" : "Multiply", - "outputs" : ["Multiply_22974"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22967", "Parameter_16311" ], - "name" : "Divide_22975", - "op" : "Divide", - "outputs" : ["Divide_22975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22968", "Parameter_16282" ], - "name" : "Multiply_22976", - "op" : "Multiply", - "outputs" : ["Multiply_22976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16295", "Add_22968" ], - "name" : "Multiply_22977", - "op" : "Multiply", - "outputs" : ["Multiply_22977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22968", "Parameter_16215" ], - "name" : "Multiply_22978", - "op" : "Multiply", - "outputs" : ["Multiply_22978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16303", "Add_22968" ], - "name" : "Multiply_22979", - "op" : "Multiply", - "outputs" : ["Multiply_22979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22970", "Parameter_16269" ], - "name" : "Multiply_22980", - "op" : "Multiply", - "outputs" : ["Multiply_22980"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22971"], - "name" : "Negative_22981", - "op" : "Negative", - "outputs" : ["Negative_22981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22972", "Multiply_19149" ], - "name" : "Divide_22982", - "op" : "Divide", - "outputs" : ["Divide_22982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22973"], - "name" : "Negative_22983", - "op" : "Negative", - "outputs" : ["Negative_22983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22975", "Parameter_16312" ], - "name" : "Multiply_22984", - "op" : "Multiply", - "outputs" : ["Multiply_22984"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22976"], - "name" : "Negative_22985", - "op" : "Negative", - "outputs" : ["Negative_22985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22977", "Multiply_19150" ], - "name" : "Divide_22986", - "op" : "Divide", - "outputs" : ["Divide_22986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22978"], - "name" : "Negative_22987", - "op" : "Negative", - "outputs" : ["Negative_22987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22980"], - "name" : "Negative_22988", - "op" : "Negative", - "outputs" : ["Negative_22988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22981", "Parameter_16252" ], - "name" : "Multiply_22989", - "op" : "Multiply", - "outputs" : ["Multiply_22989"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18570", "Divide_22982" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22990", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22990"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22983", "Parameter_16260" ], - "name" : "Multiply_22991", - "op" : "Multiply", - "outputs" : ["Multiply_22991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_22984"], - "name" : "Negative_22992", - "op" : "Negative", - "outputs" : ["Negative_22992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_22985", "Parameter_16295" ], - "name" : "Multiply_22993", - "op" : "Multiply", - "outputs" : ["Multiply_22993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18629", "Divide_22986" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_22994", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_22994"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_22987", "Parameter_16303" ], - "name" : "Multiply_22995", - "op" : "Multiply", - "outputs" : ["Multiply_22995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22989", "Parameter_16253" ], - "name" : "Divide_22996", - "op" : "Divide", - "outputs" : ["Divide_22996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22990"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_22997", - "op" : "Slice", - "outputs" : ["Slice_22997"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22991", "Parameter_16261" ], - "name" : "Divide_22998", - "op" : "Divide", - "outputs" : ["Divide_22998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22993", "Parameter_16296" ], - "name" : "Divide_22999", - "op" : "Divide", - "outputs" : ["Divide_22999"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_22994"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23000", - "op" : "Slice", - "outputs" : ["Slice_23000"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22995", "Parameter_16304" ], - "name" : "Divide_23001", - "op" : "Divide", - "outputs" : ["Divide_23001"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22996", "Parameter_16254" ], - "name" : "Multiply_23002", - "op" : "Multiply", - "outputs" : ["Multiply_23002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22998", "Parameter_16262" ], - "name" : "Multiply_23003", - "op" : "Multiply", - "outputs" : ["Multiply_23003"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_22999", "Parameter_16297" ], - "name" : "Multiply_23004", - "op" : "Multiply", - "outputs" : ["Multiply_23004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23001", "Parameter_16305" ], - "name" : "Multiply_23005", - "op" : "Multiply", - "outputs" : ["Multiply_23005"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23002"], - "name" : "Negative_23006", - "op" : "Negative", - "outputs" : ["Negative_23006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23003"], - "name" : "Negative_23007", - "op" : "Negative", - "outputs" : ["Negative_23007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23004"], - "name" : "Negative_23008", - "op" : "Negative", - "outputs" : ["Negative_23008"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23005"], - "name" : "Negative_23009", - "op" : "Negative", - "outputs" : ["Negative_23009"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22997", "Negative_23006" ], - "name" : "Add_23010", - "op" : "Add", - "outputs" : ["Add_23010"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23000", "Negative_23008" ], - "name" : "Add_23011", - "op" : "Add", - "outputs" : ["Add_23011"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22990", "Add_23010" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23012", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23012"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_22994", "Add_23011" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23013", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23013"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23012"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23014", - "op" : "Slice", - "outputs" : ["Slice_23014"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23013"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23015", - "op" : "Slice", - "outputs" : ["Slice_23015"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23014", "Negative_23007" ], - "name" : "Add_23016", - "op" : "Add", - "outputs" : ["Add_23016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23015", "Negative_23009" ], - "name" : "Add_23017", - "op" : "Add", - "outputs" : ["Add_23017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23012", "Add_23016" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23018", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23018"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23013", "Add_23017" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23019", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23019"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23018"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23020", - "op" : "Slice", - "outputs" : ["Slice_23020"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23019"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23021", - "op" : "Slice", - "outputs" : ["Slice_23021"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23020", "Negative_22988" ], - "name" : "Add_23022", - "op" : "Add", - "outputs" : ["Add_23022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23021", "Negative_22992" ], - "name" : "Add_23023", - "op" : "Add", - "outputs" : ["Add_23023"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23018", "Add_23022" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23024", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23024"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23019", "Add_23023" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23025", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23025"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23024"], - "name" : "Sum_23026", - "op" : "Sum", - "outputs" : ["Sum_23026"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23024"], - "name" : "Reshape_23027", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23027"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19144", "ReplaceSlice_23024" ], - "name" : "Dot_23028", - "op" : "Dot", - "outputs" : ["Dot_23028"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23024"], - "name" : "Sum_23029", - "op" : "Sum", - "outputs" : ["Sum_23029"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23024"], - "name" : "Reshape_23030", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23030"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19146", "ReplaceSlice_23024" ], - "name" : "Dot_23031", - "op" : "Dot", - "outputs" : ["Dot_23031"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23025"], - "name" : "Sum_23032", - "op" : "Sum", - "outputs" : ["Sum_23032"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23025"], - "name" : "Reshape_23033", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23033"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19145", "ReplaceSlice_23025" ], - "name" : "Dot_23034", - "op" : "Dot", - "outputs" : ["Dot_23034"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23025"], - "name" : "Sum_23035", - "op" : "Sum", - "outputs" : ["Sum_23035"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23025"], - "name" : "Reshape_23036", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23036"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18690", "ReplaceSlice_23025" ], - "name" : "Dot_23037", - "op" : "Dot", - "outputs" : ["Dot_23037"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22928", "Sum_23026" ], - "name" : "Add_23038", - "op" : "Add", - "outputs" : ["Add_23038"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14148", "Reshape_23027" ], - "name" : "Dot_23039", - "op" : "Dot", - "outputs" : ["Dot_23039"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23028"], - "name" : "Reshape_23040", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23040"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22931", "Sum_23029" ], - "name" : "Add_23041", - "op" : "Add", - "outputs" : ["Add_23041"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16212", "Reshape_23030" ], - "name" : "Dot_23042", - "op" : "Dot", - "outputs" : ["Dot_23042"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23031"], - "name" : "Reshape_23043", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23043"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22934", "Sum_23032" ], - "name" : "Add_23044", - "op" : "Add", - "outputs" : ["Add_23044"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16288", "Reshape_23033" ], - "name" : "Dot_23045", - "op" : "Dot", - "outputs" : ["Dot_23045"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23034"], - "name" : "Reshape_23046", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23046"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_22937", "Sum_23035" ], - "name" : "Add_23047", - "op" : "Add", - "outputs" : ["Add_23047"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16292", "Reshape_23036" ], - "name" : "Dot_23048", - "op" : "Dot", - "outputs" : ["Dot_23048"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23037"], - "name" : "Reshape_23049", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23049"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23039"], - "name" : "Reshape_23050", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23050"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23040"], - "name" : "Reshape_23051", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23051"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23042"], - "name" : "Reshape_23052", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23043"], - "name" : "Reshape_23053", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23053"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23045"], - "name" : "Reshape_23054", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23054"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23046"], - "name" : "Reshape_23055", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23055"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23048"], - "name" : "Reshape_23056", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23056"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23049"], - "name" : "Reshape_23057", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23057"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23050", "Reshape_18810" ], - "name" : "Add_23058", - "op" : "Add", - "outputs" : ["Add_23058"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22949", "Reshape_23051" ], - "name" : "Add_23059", - "op" : "Add", - "outputs" : ["Add_23059"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_22950", "Reshape_23053" ], - "name" : "Add_23060", - "op" : "Add", - "outputs" : ["Add_23060"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23054", "Reshape_23052" ], - "name" : "Add_23061", - "op" : "Add", - "outputs" : ["Add_23061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_22952", "Reshape_23055" ], - "name" : "Add_23062", - "op" : "Add", - "outputs" : ["Add_23062"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23056"], - "name" : "Reshape_23063", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23063"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_22954", "Reshape_23057" ], - "name" : "Add_23064", - "op" : "Add", - "outputs" : ["Add_23064"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23058", "Parameter_14150" ], - "name" : "Multiply_23065", - "op" : "Multiply", - "outputs" : ["Multiply_23065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16202", "Add_23058" ], - "name" : "Multiply_23066", - "op" : "Multiply", - "outputs" : ["Multiply_23066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23061", "Parameter_16214" ], - "name" : "Multiply_23067", - "op" : "Multiply", - "outputs" : ["Multiply_23067"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16245", "Add_23061" ], - "name" : "Multiply_23068", - "op" : "Multiply", - "outputs" : ["Multiply_23068"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_22969", "Reshape_23063" ], - "name" : "Add_23069", - "op" : "Add", - "outputs" : ["Add_23069"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23065"], - "name" : "Negative_23070", - "op" : "Negative", - "outputs" : ["Negative_23070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23066", "Multiply_19142" ], - "name" : "Divide_23071", - "op" : "Divide", - "outputs" : ["Divide_23071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23067"], - "name" : "Negative_23072", - "op" : "Negative", - "outputs" : ["Negative_23072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23068", "Multiply_19143" ], - "name" : "Divide_23073", - "op" : "Divide", - "outputs" : ["Divide_23073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_22964", "Add_23069" ], - "lower_bounds" : [ 0, 28, 0 ], - "name" : "ReplaceSlice_23074", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23074"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 29, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23070", "Parameter_16202" ], - "name" : "Multiply_23075", - "op" : "Multiply", - "outputs" : ["Multiply_23075"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22974", "Divide_23071" ], - "name" : "Add_23076", - "op" : "Add", - "outputs" : ["Add_23076"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23072", "Parameter_16245" ], - "name" : "Multiply_23077", - "op" : "Multiply", - "outputs" : ["Multiply_23077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_22979", "Divide_23073" ], - "name" : "Add_23078", - "op" : "Add", - "outputs" : ["Add_23078"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23074"], - "lower_bounds" : [ 0, 27, 0 ], - "name" : "Slice_23079", - "op" : "Slice", - "outputs" : ["Slice_23079"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 28, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23075", "Parameter_16203" ], - "name" : "Divide_23080", - "op" : "Divide", - "outputs" : ["Divide_23080"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23076", "Parameter_14153" ], - "name" : "Multiply_23081", - "op" : "Multiply", - "outputs" : ["Multiply_23081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16187", "Add_23076" ], - "name" : "Multiply_23082", - "op" : "Multiply", - "outputs" : ["Multiply_23082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23076", "Parameter_14162" ], - "name" : "Multiply_23083", - "op" : "Multiply", - "outputs" : ["Multiply_23083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16195", "Add_23076" ], - "name" : "Multiply_23084", - "op" : "Multiply", - "outputs" : ["Multiply_23084"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23077", "Parameter_16246" ], - "name" : "Divide_23085", - "op" : "Divide", - "outputs" : ["Divide_23085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23078", "Parameter_16217" ], - "name" : "Multiply_23086", - "op" : "Multiply", - "outputs" : ["Multiply_23086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16230", "Add_23078" ], - "name" : "Multiply_23087", - "op" : "Multiply", - "outputs" : ["Multiply_23087"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23078", "Parameter_16150" ], - "name" : "Multiply_23088", - "op" : "Multiply", - "outputs" : ["Multiply_23088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16238", "Add_23078" ], - "name" : "Multiply_23089", - "op" : "Multiply", - "outputs" : ["Multiply_23089"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23080", "Parameter_16204" ], - "name" : "Multiply_23090", - "op" : "Multiply", - "outputs" : ["Multiply_23090"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23081"], - "name" : "Negative_23091", - "op" : "Negative", - "outputs" : ["Negative_23091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23082", "Multiply_19138" ], - "name" : "Divide_23092", - "op" : "Divide", - "outputs" : ["Divide_23092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23083"], - "name" : "Negative_23093", - "op" : "Negative", - "outputs" : ["Negative_23093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23085", "Parameter_16247" ], - "name" : "Multiply_23094", - "op" : "Multiply", - "outputs" : ["Multiply_23094"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23086"], - "name" : "Negative_23095", - "op" : "Negative", - "outputs" : ["Negative_23095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23087", "Multiply_19139" ], - "name" : "Divide_23096", - "op" : "Divide", - "outputs" : ["Divide_23096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23088"], - "name" : "Negative_23097", - "op" : "Negative", - "outputs" : ["Negative_23097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23090"], - "name" : "Negative_23098", - "op" : "Negative", - "outputs" : ["Negative_23098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23091", "Parameter_16187" ], - "name" : "Multiply_23099", - "op" : "Multiply", - "outputs" : ["Multiply_23099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18571", "Divide_23092" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23100", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23100"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23093", "Parameter_16195" ], - "name" : "Multiply_23101", - "op" : "Multiply", - "outputs" : ["Multiply_23101"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23094"], - "name" : "Negative_23102", - "op" : "Negative", - "outputs" : ["Negative_23102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23095", "Parameter_16230" ], - "name" : "Multiply_23103", - "op" : "Multiply", - "outputs" : ["Multiply_23103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18630", "Divide_23096" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23104", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23104"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23097", "Parameter_16238" ], - "name" : "Multiply_23105", - "op" : "Multiply", - "outputs" : ["Multiply_23105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23099", "Parameter_16188" ], - "name" : "Divide_23106", - "op" : "Divide", - "outputs" : ["Divide_23106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23100"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23107", - "op" : "Slice", - "outputs" : ["Slice_23107"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23101", "Parameter_16196" ], - "name" : "Divide_23108", - "op" : "Divide", - "outputs" : ["Divide_23108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23103", "Parameter_16231" ], - "name" : "Divide_23109", - "op" : "Divide", - "outputs" : ["Divide_23109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23104"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23110", - "op" : "Slice", - "outputs" : ["Slice_23110"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23105", "Parameter_16239" ], - "name" : "Divide_23111", - "op" : "Divide", - "outputs" : ["Divide_23111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23106", "Parameter_16189" ], - "name" : "Multiply_23112", - "op" : "Multiply", - "outputs" : ["Multiply_23112"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23108", "Parameter_16197" ], - "name" : "Multiply_23113", - "op" : "Multiply", - "outputs" : ["Multiply_23113"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23109", "Parameter_16232" ], - "name" : "Multiply_23114", - "op" : "Multiply", - "outputs" : ["Multiply_23114"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23111", "Parameter_16240" ], - "name" : "Multiply_23115", - "op" : "Multiply", - "outputs" : ["Multiply_23115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23112"], - "name" : "Negative_23116", - "op" : "Negative", - "outputs" : ["Negative_23116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23113"], - "name" : "Negative_23117", - "op" : "Negative", - "outputs" : ["Negative_23117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23114"], - "name" : "Negative_23118", - "op" : "Negative", - "outputs" : ["Negative_23118"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23115"], - "name" : "Negative_23119", - "op" : "Negative", - "outputs" : ["Negative_23119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23107", "Negative_23116" ], - "name" : "Add_23120", - "op" : "Add", - "outputs" : ["Add_23120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23110", "Negative_23118" ], - "name" : "Add_23121", - "op" : "Add", - "outputs" : ["Add_23121"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23100", "Add_23120" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23122", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23122"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23104", "Add_23121" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23123", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23123"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23122"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23124", - "op" : "Slice", - "outputs" : ["Slice_23124"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23123"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23125", - "op" : "Slice", - "outputs" : ["Slice_23125"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23124", "Negative_23117" ], - "name" : "Add_23126", - "op" : "Add", - "outputs" : ["Add_23126"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23125", "Negative_23119" ], - "name" : "Add_23127", - "op" : "Add", - "outputs" : ["Add_23127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23122", "Add_23126" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23128", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23128"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23123", "Add_23127" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23129", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23129"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23128"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23130", - "op" : "Slice", - "outputs" : ["Slice_23130"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23129"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23131", - "op" : "Slice", - "outputs" : ["Slice_23131"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23130", "Negative_23098" ], - "name" : "Add_23132", - "op" : "Add", - "outputs" : ["Add_23132"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23131", "Negative_23102" ], - "name" : "Add_23133", - "op" : "Add", - "outputs" : ["Add_23133"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23128", "Add_23132" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23134", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23134"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23129", "Add_23133" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23135", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23135"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23134"], - "name" : "Sum_23136", - "op" : "Sum", - "outputs" : ["Sum_23136"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23134"], - "name" : "Reshape_23137", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23137"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19133", "ReplaceSlice_23134" ], - "name" : "Dot_23138", - "op" : "Dot", - "outputs" : ["Dot_23138"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23134"], - "name" : "Sum_23139", - "op" : "Sum", - "outputs" : ["Sum_23139"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23134"], - "name" : "Reshape_23140", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23140"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19135", "ReplaceSlice_23134" ], - "name" : "Dot_23141", - "op" : "Dot", - "outputs" : ["Dot_23141"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23135"], - "name" : "Sum_23142", - "op" : "Sum", - "outputs" : ["Sum_23142"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23135"], - "name" : "Reshape_23143", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23143"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19134", "ReplaceSlice_23135" ], - "name" : "Dot_23144", - "op" : "Dot", - "outputs" : ["Dot_23144"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23135"], - "name" : "Sum_23145", - "op" : "Sum", - "outputs" : ["Sum_23145"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23135"], - "name" : "Reshape_23146", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23146"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18689", "ReplaceSlice_23135" ], - "name" : "Dot_23147", - "op" : "Dot", - "outputs" : ["Dot_23147"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23038", "Sum_23136" ], - "name" : "Add_23148", - "op" : "Add", - "outputs" : ["Add_23148"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14159", "Reshape_23137" ], - "name" : "Dot_23149", - "op" : "Dot", - "outputs" : ["Dot_23149"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23138"], - "name" : "Reshape_23150", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23150"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23041", "Sum_23139" ], - "name" : "Add_23151", - "op" : "Add", - "outputs" : ["Add_23151"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16147", "Reshape_23140" ], - "name" : "Dot_23152", - "op" : "Dot", - "outputs" : ["Dot_23152"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23141"], - "name" : "Reshape_23153", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23153"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23044", "Sum_23142" ], - "name" : "Add_23154", - "op" : "Add", - "outputs" : ["Add_23154"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16223", "Reshape_23143" ], - "name" : "Dot_23155", - "op" : "Dot", - "outputs" : ["Dot_23155"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23144"], - "name" : "Reshape_23156", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23156"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23047", "Sum_23145" ], - "name" : "Add_23157", - "op" : "Add", - "outputs" : ["Add_23157"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16227", "Reshape_23146" ], - "name" : "Dot_23158", - "op" : "Dot", - "outputs" : ["Dot_23158"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23147"], - "name" : "Reshape_23159", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23159"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23149"], - "name" : "Reshape_23160", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23160"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23150"], - "name" : "Reshape_23161", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23161"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23152"], - "name" : "Reshape_23162", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23162"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23153"], - "name" : "Reshape_23163", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23163"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23155"], - "name" : "Reshape_23164", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23164"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23156"], - "name" : "Reshape_23165", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23165"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23158"], - "name" : "Reshape_23166", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23166"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23159"], - "name" : "Reshape_23167", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23167"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23160", "Reshape_18809" ], - "name" : "Add_23168", - "op" : "Add", - "outputs" : ["Add_23168"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23059", "Reshape_23161" ], - "name" : "Add_23169", - "op" : "Add", - "outputs" : ["Add_23169"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23060", "Reshape_23163" ], - "name" : "Add_23170", - "op" : "Add", - "outputs" : ["Add_23170"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23164", "Reshape_23162" ], - "name" : "Add_23171", - "op" : "Add", - "outputs" : ["Add_23171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23062", "Reshape_23165" ], - "name" : "Add_23172", - "op" : "Add", - "outputs" : ["Add_23172"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23166"], - "name" : "Reshape_23173", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23173"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23064", "Reshape_23167" ], - "name" : "Add_23174", - "op" : "Add", - "outputs" : ["Add_23174"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23168", "Parameter_14161" ], - "name" : "Multiply_23175", - "op" : "Multiply", - "outputs" : ["Multiply_23175"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16137", "Add_23168" ], - "name" : "Multiply_23176", - "op" : "Multiply", - "outputs" : ["Multiply_23176"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23171", "Parameter_16149" ], - "name" : "Multiply_23177", - "op" : "Multiply", - "outputs" : ["Multiply_23177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16180", "Add_23171" ], - "name" : "Multiply_23178", - "op" : "Multiply", - "outputs" : ["Multiply_23178"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23079", "Reshape_23173" ], - "name" : "Add_23179", - "op" : "Add", - "outputs" : ["Add_23179"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23175"], - "name" : "Negative_23180", - "op" : "Negative", - "outputs" : ["Negative_23180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23176", "Multiply_19131" ], - "name" : "Divide_23181", - "op" : "Divide", - "outputs" : ["Divide_23181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23177"], - "name" : "Negative_23182", - "op" : "Negative", - "outputs" : ["Negative_23182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23178", "Multiply_19132" ], - "name" : "Divide_23183", - "op" : "Divide", - "outputs" : ["Divide_23183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23074", "Add_23179" ], - "lower_bounds" : [ 0, 27, 0 ], - "name" : "ReplaceSlice_23184", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23184"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 28, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23180", "Parameter_16137" ], - "name" : "Multiply_23185", - "op" : "Multiply", - "outputs" : ["Multiply_23185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23084", "Divide_23181" ], - "name" : "Add_23186", - "op" : "Add", - "outputs" : ["Add_23186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23182", "Parameter_16180" ], - "name" : "Multiply_23187", - "op" : "Multiply", - "outputs" : ["Multiply_23187"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23089", "Divide_23183" ], - "name" : "Add_23188", - "op" : "Add", - "outputs" : ["Add_23188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23184"], - "lower_bounds" : [ 0, 26, 0 ], - "name" : "Slice_23189", - "op" : "Slice", - "outputs" : ["Slice_23189"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 27, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23185", "Parameter_16138" ], - "name" : "Divide_23190", - "op" : "Divide", - "outputs" : ["Divide_23190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23186", "Parameter_14164" ], - "name" : "Multiply_23191", - "op" : "Multiply", - "outputs" : ["Multiply_23191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16122", "Add_23186" ], - "name" : "Multiply_23192", - "op" : "Multiply", - "outputs" : ["Multiply_23192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23186", "Parameter_14173" ], - "name" : "Multiply_23193", - "op" : "Multiply", - "outputs" : ["Multiply_23193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16130", "Add_23186" ], - "name" : "Multiply_23194", - "op" : "Multiply", - "outputs" : ["Multiply_23194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23187", "Parameter_16181" ], - "name" : "Divide_23195", - "op" : "Divide", - "outputs" : ["Divide_23195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23188", "Parameter_16152" ], - "name" : "Multiply_23196", - "op" : "Multiply", - "outputs" : ["Multiply_23196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16165", "Add_23188" ], - "name" : "Multiply_23197", - "op" : "Multiply", - "outputs" : ["Multiply_23197"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23188", "Parameter_16085" ], - "name" : "Multiply_23198", - "op" : "Multiply", - "outputs" : ["Multiply_23198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16173", "Add_23188" ], - "name" : "Multiply_23199", - "op" : "Multiply", - "outputs" : ["Multiply_23199"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23190", "Parameter_16139" ], - "name" : "Multiply_23200", - "op" : "Multiply", - "outputs" : ["Multiply_23200"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23191"], - "name" : "Negative_23201", - "op" : "Negative", - "outputs" : ["Negative_23201"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23192", "Multiply_19127" ], - "name" : "Divide_23202", - "op" : "Divide", - "outputs" : ["Divide_23202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23193"], - "name" : "Negative_23203", - "op" : "Negative", - "outputs" : ["Negative_23203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23195", "Parameter_16182" ], - "name" : "Multiply_23204", - "op" : "Multiply", - "outputs" : ["Multiply_23204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23196"], - "name" : "Negative_23205", - "op" : "Negative", - "outputs" : ["Negative_23205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23197", "Multiply_19128" ], - "name" : "Divide_23206", - "op" : "Divide", - "outputs" : ["Divide_23206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23198"], - "name" : "Negative_23207", - "op" : "Negative", - "outputs" : ["Negative_23207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23200"], - "name" : "Negative_23208", - "op" : "Negative", - "outputs" : ["Negative_23208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23201", "Parameter_16122" ], - "name" : "Multiply_23209", - "op" : "Multiply", - "outputs" : ["Multiply_23209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18572", "Divide_23202" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23210", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23210"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23203", "Parameter_16130" ], - "name" : "Multiply_23211", - "op" : "Multiply", - "outputs" : ["Multiply_23211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23204"], - "name" : "Negative_23212", - "op" : "Negative", - "outputs" : ["Negative_23212"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23205", "Parameter_16165" ], - "name" : "Multiply_23213", - "op" : "Multiply", - "outputs" : ["Multiply_23213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18631", "Divide_23206" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23214", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23214"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23207", "Parameter_16173" ], - "name" : "Multiply_23215", - "op" : "Multiply", - "outputs" : ["Multiply_23215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23209", "Parameter_16123" ], - "name" : "Divide_23216", - "op" : "Divide", - "outputs" : ["Divide_23216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23210"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23217", - "op" : "Slice", - "outputs" : ["Slice_23217"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23211", "Parameter_16131" ], - "name" : "Divide_23218", - "op" : "Divide", - "outputs" : ["Divide_23218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23213", "Parameter_16166" ], - "name" : "Divide_23219", - "op" : "Divide", - "outputs" : ["Divide_23219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23214"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23220", - "op" : "Slice", - "outputs" : ["Slice_23220"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23215", "Parameter_16174" ], - "name" : "Divide_23221", - "op" : "Divide", - "outputs" : ["Divide_23221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23216", "Parameter_16124" ], - "name" : "Multiply_23222", - "op" : "Multiply", - "outputs" : ["Multiply_23222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23218", "Parameter_16132" ], - "name" : "Multiply_23223", - "op" : "Multiply", - "outputs" : ["Multiply_23223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23219", "Parameter_16167" ], - "name" : "Multiply_23224", - "op" : "Multiply", - "outputs" : ["Multiply_23224"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23221", "Parameter_16175" ], - "name" : "Multiply_23225", - "op" : "Multiply", - "outputs" : ["Multiply_23225"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23222"], - "name" : "Negative_23226", - "op" : "Negative", - "outputs" : ["Negative_23226"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23223"], - "name" : "Negative_23227", - "op" : "Negative", - "outputs" : ["Negative_23227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23224"], - "name" : "Negative_23228", - "op" : "Negative", - "outputs" : ["Negative_23228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23225"], - "name" : "Negative_23229", - "op" : "Negative", - "outputs" : ["Negative_23229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23217", "Negative_23226" ], - "name" : "Add_23230", - "op" : "Add", - "outputs" : ["Add_23230"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23220", "Negative_23228" ], - "name" : "Add_23231", - "op" : "Add", - "outputs" : ["Add_23231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23210", "Add_23230" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23232", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23232"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23214", "Add_23231" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23233", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23233"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23232"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23234", - "op" : "Slice", - "outputs" : ["Slice_23234"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23233"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23235", - "op" : "Slice", - "outputs" : ["Slice_23235"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23234", "Negative_23227" ], - "name" : "Add_23236", - "op" : "Add", - "outputs" : ["Add_23236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23235", "Negative_23229" ], - "name" : "Add_23237", - "op" : "Add", - "outputs" : ["Add_23237"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23232", "Add_23236" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23238", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23238"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23233", "Add_23237" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23239", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23239"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23238"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23240", - "op" : "Slice", - "outputs" : ["Slice_23240"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23239"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23241", - "op" : "Slice", - "outputs" : ["Slice_23241"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23240", "Negative_23208" ], - "name" : "Add_23242", - "op" : "Add", - "outputs" : ["Add_23242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23241", "Negative_23212" ], - "name" : "Add_23243", - "op" : "Add", - "outputs" : ["Add_23243"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23238", "Add_23242" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23244", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23244"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23239", "Add_23243" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23245", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23245"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23244"], - "name" : "Sum_23246", - "op" : "Sum", - "outputs" : ["Sum_23246"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23244"], - "name" : "Reshape_23247", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23247"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19122", "ReplaceSlice_23244" ], - "name" : "Dot_23248", - "op" : "Dot", - "outputs" : ["Dot_23248"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23244"], - "name" : "Sum_23249", - "op" : "Sum", - "outputs" : ["Sum_23249"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23244"], - "name" : "Reshape_23250", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23250"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19124", "ReplaceSlice_23244" ], - "name" : "Dot_23251", - "op" : "Dot", - "outputs" : ["Dot_23251"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23245"], - "name" : "Sum_23252", - "op" : "Sum", - "outputs" : ["Sum_23252"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23245"], - "name" : "Reshape_23253", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23253"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19123", "ReplaceSlice_23245" ], - "name" : "Dot_23254", - "op" : "Dot", - "outputs" : ["Dot_23254"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23245"], - "name" : "Sum_23255", - "op" : "Sum", - "outputs" : ["Sum_23255"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23245"], - "name" : "Reshape_23256", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23256"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18688", "ReplaceSlice_23245" ], - "name" : "Dot_23257", - "op" : "Dot", - "outputs" : ["Dot_23257"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23148", "Sum_23246" ], - "name" : "Add_23258", - "op" : "Add", - "outputs" : ["Add_23258"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14170", "Reshape_23247" ], - "name" : "Dot_23259", - "op" : "Dot", - "outputs" : ["Dot_23259"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23248"], - "name" : "Reshape_23260", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23260"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23151", "Sum_23249" ], - "name" : "Add_23261", - "op" : "Add", - "outputs" : ["Add_23261"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16082", "Reshape_23250" ], - "name" : "Dot_23262", - "op" : "Dot", - "outputs" : ["Dot_23262"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23251"], - "name" : "Reshape_23263", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23263"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23154", "Sum_23252" ], - "name" : "Add_23264", - "op" : "Add", - "outputs" : ["Add_23264"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16158", "Reshape_23253" ], - "name" : "Dot_23265", - "op" : "Dot", - "outputs" : ["Dot_23265"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23254"], - "name" : "Reshape_23266", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23266"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23157", "Sum_23255" ], - "name" : "Add_23267", - "op" : "Add", - "outputs" : ["Add_23267"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16162", "Reshape_23256" ], - "name" : "Dot_23268", - "op" : "Dot", - "outputs" : ["Dot_23268"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23257"], - "name" : "Reshape_23269", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23269"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23259"], - "name" : "Reshape_23270", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23260"], - "name" : "Reshape_23271", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23271"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23262"], - "name" : "Reshape_23272", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23272"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23263"], - "name" : "Reshape_23273", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23273"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23265"], - "name" : "Reshape_23274", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23274"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23266"], - "name" : "Reshape_23275", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23275"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23268"], - "name" : "Reshape_23276", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23276"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23269"], - "name" : "Reshape_23277", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23277"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23270", "Reshape_18808" ], - "name" : "Add_23278", - "op" : "Add", - "outputs" : ["Add_23278"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23169", "Reshape_23271" ], - "name" : "Add_23279", - "op" : "Add", - "outputs" : ["Add_23279"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23170", "Reshape_23273" ], - "name" : "Add_23280", - "op" : "Add", - "outputs" : ["Add_23280"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23274", "Reshape_23272" ], - "name" : "Add_23281", - "op" : "Add", - "outputs" : ["Add_23281"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23172", "Reshape_23275" ], - "name" : "Add_23282", - "op" : "Add", - "outputs" : ["Add_23282"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23276"], - "name" : "Reshape_23283", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23174", "Reshape_23277" ], - "name" : "Add_23284", - "op" : "Add", - "outputs" : ["Add_23284"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23278", "Parameter_14172" ], - "name" : "Multiply_23285", - "op" : "Multiply", - "outputs" : ["Multiply_23285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16072", "Add_23278" ], - "name" : "Multiply_23286", - "op" : "Multiply", - "outputs" : ["Multiply_23286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23281", "Parameter_16084" ], - "name" : "Multiply_23287", - "op" : "Multiply", - "outputs" : ["Multiply_23287"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16115", "Add_23281" ], - "name" : "Multiply_23288", - "op" : "Multiply", - "outputs" : ["Multiply_23288"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23189", "Reshape_23283" ], - "name" : "Add_23289", - "op" : "Add", - "outputs" : ["Add_23289"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23285"], - "name" : "Negative_23290", - "op" : "Negative", - "outputs" : ["Negative_23290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23286", "Multiply_19120" ], - "name" : "Divide_23291", - "op" : "Divide", - "outputs" : ["Divide_23291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23287"], - "name" : "Negative_23292", - "op" : "Negative", - "outputs" : ["Negative_23292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23288", "Multiply_19121" ], - "name" : "Divide_23293", - "op" : "Divide", - "outputs" : ["Divide_23293"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23184", "Add_23289" ], - "lower_bounds" : [ 0, 26, 0 ], - "name" : "ReplaceSlice_23294", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23294"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 27, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23290", "Parameter_16072" ], - "name" : "Multiply_23295", - "op" : "Multiply", - "outputs" : ["Multiply_23295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23194", "Divide_23291" ], - "name" : "Add_23296", - "op" : "Add", - "outputs" : ["Add_23296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23292", "Parameter_16115" ], - "name" : "Multiply_23297", - "op" : "Multiply", - "outputs" : ["Multiply_23297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23199", "Divide_23293" ], - "name" : "Add_23298", - "op" : "Add", - "outputs" : ["Add_23298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23294"], - "lower_bounds" : [ 0, 25, 0 ], - "name" : "Slice_23299", - "op" : "Slice", - "outputs" : ["Slice_23299"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 26, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23295", "Parameter_16073" ], - "name" : "Divide_23300", - "op" : "Divide", - "outputs" : ["Divide_23300"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23296", "Parameter_14175" ], - "name" : "Multiply_23301", - "op" : "Multiply", - "outputs" : ["Multiply_23301"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16057", "Add_23296" ], - "name" : "Multiply_23302", - "op" : "Multiply", - "outputs" : ["Multiply_23302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23296", "Parameter_14184" ], - "name" : "Multiply_23303", - "op" : "Multiply", - "outputs" : ["Multiply_23303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16065", "Add_23296" ], - "name" : "Multiply_23304", - "op" : "Multiply", - "outputs" : ["Multiply_23304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23297", "Parameter_16116" ], - "name" : "Divide_23305", - "op" : "Divide", - "outputs" : ["Divide_23305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23298", "Parameter_16087" ], - "name" : "Multiply_23306", - "op" : "Multiply", - "outputs" : ["Multiply_23306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16100", "Add_23298" ], - "name" : "Multiply_23307", - "op" : "Multiply", - "outputs" : ["Multiply_23307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23298", "Parameter_16020" ], - "name" : "Multiply_23308", - "op" : "Multiply", - "outputs" : ["Multiply_23308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16108", "Add_23298" ], - "name" : "Multiply_23309", - "op" : "Multiply", - "outputs" : ["Multiply_23309"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23300", "Parameter_16074" ], - "name" : "Multiply_23310", - "op" : "Multiply", - "outputs" : ["Multiply_23310"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23301"], - "name" : "Negative_23311", - "op" : "Negative", - "outputs" : ["Negative_23311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23302", "Multiply_19116" ], - "name" : "Divide_23312", - "op" : "Divide", - "outputs" : ["Divide_23312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23303"], - "name" : "Negative_23313", - "op" : "Negative", - "outputs" : ["Negative_23313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23305", "Parameter_16117" ], - "name" : "Multiply_23314", - "op" : "Multiply", - "outputs" : ["Multiply_23314"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23306"], - "name" : "Negative_23315", - "op" : "Negative", - "outputs" : ["Negative_23315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23307", "Multiply_19117" ], - "name" : "Divide_23316", - "op" : "Divide", - "outputs" : ["Divide_23316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23308"], - "name" : "Negative_23317", - "op" : "Negative", - "outputs" : ["Negative_23317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23310"], - "name" : "Negative_23318", - "op" : "Negative", - "outputs" : ["Negative_23318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23311", "Parameter_16057" ], - "name" : "Multiply_23319", - "op" : "Multiply", - "outputs" : ["Multiply_23319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18573", "Divide_23312" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23320", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23320"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23313", "Parameter_16065" ], - "name" : "Multiply_23321", - "op" : "Multiply", - "outputs" : ["Multiply_23321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23314"], - "name" : "Negative_23322", - "op" : "Negative", - "outputs" : ["Negative_23322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23315", "Parameter_16100" ], - "name" : "Multiply_23323", - "op" : "Multiply", - "outputs" : ["Multiply_23323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18632", "Divide_23316" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23324", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23324"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23317", "Parameter_16108" ], - "name" : "Multiply_23325", - "op" : "Multiply", - "outputs" : ["Multiply_23325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23319", "Parameter_16058" ], - "name" : "Divide_23326", - "op" : "Divide", - "outputs" : ["Divide_23326"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23320"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23327", - "op" : "Slice", - "outputs" : ["Slice_23327"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23321", "Parameter_16066" ], - "name" : "Divide_23328", - "op" : "Divide", - "outputs" : ["Divide_23328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23323", "Parameter_16101" ], - "name" : "Divide_23329", - "op" : "Divide", - "outputs" : ["Divide_23329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23324"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23330", - "op" : "Slice", - "outputs" : ["Slice_23330"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23325", "Parameter_16109" ], - "name" : "Divide_23331", - "op" : "Divide", - "outputs" : ["Divide_23331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23326", "Parameter_16059" ], - "name" : "Multiply_23332", - "op" : "Multiply", - "outputs" : ["Multiply_23332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23328", "Parameter_16067" ], - "name" : "Multiply_23333", - "op" : "Multiply", - "outputs" : ["Multiply_23333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23329", "Parameter_16102" ], - "name" : "Multiply_23334", - "op" : "Multiply", - "outputs" : ["Multiply_23334"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23331", "Parameter_16110" ], - "name" : "Multiply_23335", - "op" : "Multiply", - "outputs" : ["Multiply_23335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23332"], - "name" : "Negative_23336", - "op" : "Negative", - "outputs" : ["Negative_23336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23333"], - "name" : "Negative_23337", - "op" : "Negative", - "outputs" : ["Negative_23337"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23334"], - "name" : "Negative_23338", - "op" : "Negative", - "outputs" : ["Negative_23338"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23335"], - "name" : "Negative_23339", - "op" : "Negative", - "outputs" : ["Negative_23339"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23327", "Negative_23336" ], - "name" : "Add_23340", - "op" : "Add", - "outputs" : ["Add_23340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23330", "Negative_23338" ], - "name" : "Add_23341", - "op" : "Add", - "outputs" : ["Add_23341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23320", "Add_23340" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23342", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23342"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23324", "Add_23341" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23343", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23343"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23342"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23344", - "op" : "Slice", - "outputs" : ["Slice_23344"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23343"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23345", - "op" : "Slice", - "outputs" : ["Slice_23345"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23344", "Negative_23337" ], - "name" : "Add_23346", - "op" : "Add", - "outputs" : ["Add_23346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23345", "Negative_23339" ], - "name" : "Add_23347", - "op" : "Add", - "outputs" : ["Add_23347"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23342", "Add_23346" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23348", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23348"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23343", "Add_23347" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23349", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23349"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23348"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23350", - "op" : "Slice", - "outputs" : ["Slice_23350"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23349"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23351", - "op" : "Slice", - "outputs" : ["Slice_23351"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23350", "Negative_23318" ], - "name" : "Add_23352", - "op" : "Add", - "outputs" : ["Add_23352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23351", "Negative_23322" ], - "name" : "Add_23353", - "op" : "Add", - "outputs" : ["Add_23353"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23348", "Add_23352" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23354", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23354"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23349", "Add_23353" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23355", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23355"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23354"], - "name" : "Sum_23356", - "op" : "Sum", - "outputs" : ["Sum_23356"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23354"], - "name" : "Reshape_23357", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23357"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19111", "ReplaceSlice_23354" ], - "name" : "Dot_23358", - "op" : "Dot", - "outputs" : ["Dot_23358"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23354"], - "name" : "Sum_23359", - "op" : "Sum", - "outputs" : ["Sum_23359"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23354"], - "name" : "Reshape_23360", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23360"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19113", "ReplaceSlice_23354" ], - "name" : "Dot_23361", - "op" : "Dot", - "outputs" : ["Dot_23361"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23355"], - "name" : "Sum_23362", - "op" : "Sum", - "outputs" : ["Sum_23362"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23355"], - "name" : "Reshape_23363", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23363"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19112", "ReplaceSlice_23355" ], - "name" : "Dot_23364", - "op" : "Dot", - "outputs" : ["Dot_23364"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23355"], - "name" : "Sum_23365", - "op" : "Sum", - "outputs" : ["Sum_23365"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23355"], - "name" : "Reshape_23366", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23366"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18687", "ReplaceSlice_23355" ], - "name" : "Dot_23367", - "op" : "Dot", - "outputs" : ["Dot_23367"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23258", "Sum_23356" ], - "name" : "Add_23368", - "op" : "Add", - "outputs" : ["Add_23368"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14181", "Reshape_23357" ], - "name" : "Dot_23369", - "op" : "Dot", - "outputs" : ["Dot_23369"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23358"], - "name" : "Reshape_23370", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23370"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23261", "Sum_23359" ], - "name" : "Add_23371", - "op" : "Add", - "outputs" : ["Add_23371"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16017", "Reshape_23360" ], - "name" : "Dot_23372", - "op" : "Dot", - "outputs" : ["Dot_23372"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23361"], - "name" : "Reshape_23373", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23373"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23264", "Sum_23362" ], - "name" : "Add_23374", - "op" : "Add", - "outputs" : ["Add_23374"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16093", "Reshape_23363" ], - "name" : "Dot_23375", - "op" : "Dot", - "outputs" : ["Dot_23375"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23364"], - "name" : "Reshape_23376", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23376"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23267", "Sum_23365" ], - "name" : "Add_23377", - "op" : "Add", - "outputs" : ["Add_23377"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16097", "Reshape_23366" ], - "name" : "Dot_23378", - "op" : "Dot", - "outputs" : ["Dot_23378"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23367"], - "name" : "Reshape_23379", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23379"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23369"], - "name" : "Reshape_23380", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23380"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23370"], - "name" : "Reshape_23381", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23381"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23372"], - "name" : "Reshape_23382", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23382"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23373"], - "name" : "Reshape_23383", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23383"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23375"], - "name" : "Reshape_23384", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23384"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23376"], - "name" : "Reshape_23385", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23385"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23378"], - "name" : "Reshape_23386", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23386"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23379"], - "name" : "Reshape_23387", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23387"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23380", "Reshape_18807" ], - "name" : "Add_23388", - "op" : "Add", - "outputs" : ["Add_23388"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23279", "Reshape_23381" ], - "name" : "Add_23389", - "op" : "Add", - "outputs" : ["Add_23389"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23280", "Reshape_23383" ], - "name" : "Add_23390", - "op" : "Add", - "outputs" : ["Add_23390"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23384", "Reshape_23382" ], - "name" : "Add_23391", - "op" : "Add", - "outputs" : ["Add_23391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23282", "Reshape_23385" ], - "name" : "Add_23392", - "op" : "Add", - "outputs" : ["Add_23392"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23386"], - "name" : "Reshape_23393", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23393"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23284", "Reshape_23387" ], - "name" : "Add_23394", - "op" : "Add", - "outputs" : ["Add_23394"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23388", "Parameter_14183" ], - "name" : "Multiply_23395", - "op" : "Multiply", - "outputs" : ["Multiply_23395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16007", "Add_23388" ], - "name" : "Multiply_23396", - "op" : "Multiply", - "outputs" : ["Multiply_23396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23391", "Parameter_16019" ], - "name" : "Multiply_23397", - "op" : "Multiply", - "outputs" : ["Multiply_23397"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16050", "Add_23391" ], - "name" : "Multiply_23398", - "op" : "Multiply", - "outputs" : ["Multiply_23398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23299", "Reshape_23393" ], - "name" : "Add_23399", - "op" : "Add", - "outputs" : ["Add_23399"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23395"], - "name" : "Negative_23400", - "op" : "Negative", - "outputs" : ["Negative_23400"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23396", "Multiply_19109" ], - "name" : "Divide_23401", - "op" : "Divide", - "outputs" : ["Divide_23401"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23397"], - "name" : "Negative_23402", - "op" : "Negative", - "outputs" : ["Negative_23402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23398", "Multiply_19110" ], - "name" : "Divide_23403", - "op" : "Divide", - "outputs" : ["Divide_23403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23294", "Add_23399" ], - "lower_bounds" : [ 0, 25, 0 ], - "name" : "ReplaceSlice_23404", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23404"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 26, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23400", "Parameter_16007" ], - "name" : "Multiply_23405", - "op" : "Multiply", - "outputs" : ["Multiply_23405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23304", "Divide_23401" ], - "name" : "Add_23406", - "op" : "Add", - "outputs" : ["Add_23406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23402", "Parameter_16050" ], - "name" : "Multiply_23407", - "op" : "Multiply", - "outputs" : ["Multiply_23407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23309", "Divide_23403" ], - "name" : "Add_23408", - "op" : "Add", - "outputs" : ["Add_23408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23404"], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "Slice_23409", - "op" : "Slice", - "outputs" : ["Slice_23409"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 25, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23405", "Parameter_16008" ], - "name" : "Divide_23410", - "op" : "Divide", - "outputs" : ["Divide_23410"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23406", "Parameter_14186" ], - "name" : "Multiply_23411", - "op" : "Multiply", - "outputs" : ["Multiply_23411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15992", "Add_23406" ], - "name" : "Multiply_23412", - "op" : "Multiply", - "outputs" : ["Multiply_23412"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23406", "Parameter_14195" ], - "name" : "Multiply_23413", - "op" : "Multiply", - "outputs" : ["Multiply_23413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16000", "Add_23406" ], - "name" : "Multiply_23414", - "op" : "Multiply", - "outputs" : ["Multiply_23414"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23407", "Parameter_16051" ], - "name" : "Divide_23415", - "op" : "Divide", - "outputs" : ["Divide_23415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23408", "Parameter_16022" ], - "name" : "Multiply_23416", - "op" : "Multiply", - "outputs" : ["Multiply_23416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16035", "Add_23408" ], - "name" : "Multiply_23417", - "op" : "Multiply", - "outputs" : ["Multiply_23417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23408", "Parameter_15955" ], - "name" : "Multiply_23418", - "op" : "Multiply", - "outputs" : ["Multiply_23418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_16043", "Add_23408" ], - "name" : "Multiply_23419", - "op" : "Multiply", - "outputs" : ["Multiply_23419"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23410", "Parameter_16009" ], - "name" : "Multiply_23420", - "op" : "Multiply", - "outputs" : ["Multiply_23420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23411"], - "name" : "Negative_23421", - "op" : "Negative", - "outputs" : ["Negative_23421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23412", "Multiply_19105" ], - "name" : "Divide_23422", - "op" : "Divide", - "outputs" : ["Divide_23422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23413"], - "name" : "Negative_23423", - "op" : "Negative", - "outputs" : ["Negative_23423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23415", "Parameter_16052" ], - "name" : "Multiply_23424", - "op" : "Multiply", - "outputs" : ["Multiply_23424"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23416"], - "name" : "Negative_23425", - "op" : "Negative", - "outputs" : ["Negative_23425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23417", "Multiply_19106" ], - "name" : "Divide_23426", - "op" : "Divide", - "outputs" : ["Divide_23426"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23418"], - "name" : "Negative_23427", - "op" : "Negative", - "outputs" : ["Negative_23427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23420"], - "name" : "Negative_23428", - "op" : "Negative", - "outputs" : ["Negative_23428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23421", "Parameter_15992" ], - "name" : "Multiply_23429", - "op" : "Multiply", - "outputs" : ["Multiply_23429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18574", "Divide_23422" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23430", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23430"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23423", "Parameter_16000" ], - "name" : "Multiply_23431", - "op" : "Multiply", - "outputs" : ["Multiply_23431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23424"], - "name" : "Negative_23432", - "op" : "Negative", - "outputs" : ["Negative_23432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23425", "Parameter_16035" ], - "name" : "Multiply_23433", - "op" : "Multiply", - "outputs" : ["Multiply_23433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18633", "Divide_23426" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23434", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23434"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23427", "Parameter_16043" ], - "name" : "Multiply_23435", - "op" : "Multiply", - "outputs" : ["Multiply_23435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23429", "Parameter_15993" ], - "name" : "Divide_23436", - "op" : "Divide", - "outputs" : ["Divide_23436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23430"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23437", - "op" : "Slice", - "outputs" : ["Slice_23437"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23431", "Parameter_16001" ], - "name" : "Divide_23438", - "op" : "Divide", - "outputs" : ["Divide_23438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23433", "Parameter_16036" ], - "name" : "Divide_23439", - "op" : "Divide", - "outputs" : ["Divide_23439"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23434"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23440", - "op" : "Slice", - "outputs" : ["Slice_23440"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23435", "Parameter_16044" ], - "name" : "Divide_23441", - "op" : "Divide", - "outputs" : ["Divide_23441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23436", "Parameter_15994" ], - "name" : "Multiply_23442", - "op" : "Multiply", - "outputs" : ["Multiply_23442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23438", "Parameter_16002" ], - "name" : "Multiply_23443", - "op" : "Multiply", - "outputs" : ["Multiply_23443"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23439", "Parameter_16037" ], - "name" : "Multiply_23444", - "op" : "Multiply", - "outputs" : ["Multiply_23444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23441", "Parameter_16045" ], - "name" : "Multiply_23445", - "op" : "Multiply", - "outputs" : ["Multiply_23445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23442"], - "name" : "Negative_23446", - "op" : "Negative", - "outputs" : ["Negative_23446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23443"], - "name" : "Negative_23447", - "op" : "Negative", - "outputs" : ["Negative_23447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23444"], - "name" : "Negative_23448", - "op" : "Negative", - "outputs" : ["Negative_23448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23445"], - "name" : "Negative_23449", - "op" : "Negative", - "outputs" : ["Negative_23449"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23437", "Negative_23446" ], - "name" : "Add_23450", - "op" : "Add", - "outputs" : ["Add_23450"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23440", "Negative_23448" ], - "name" : "Add_23451", - "op" : "Add", - "outputs" : ["Add_23451"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23430", "Add_23450" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23452", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23452"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23434", "Add_23451" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23453", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23453"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23452"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23454", - "op" : "Slice", - "outputs" : ["Slice_23454"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23453"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23455", - "op" : "Slice", - "outputs" : ["Slice_23455"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23454", "Negative_23447" ], - "name" : "Add_23456", - "op" : "Add", - "outputs" : ["Add_23456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23455", "Negative_23449" ], - "name" : "Add_23457", - "op" : "Add", - "outputs" : ["Add_23457"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23452", "Add_23456" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23458", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23458"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23453", "Add_23457" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23459", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23459"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23458"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23460", - "op" : "Slice", - "outputs" : ["Slice_23460"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23459"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23461", - "op" : "Slice", - "outputs" : ["Slice_23461"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23460", "Negative_23428" ], - "name" : "Add_23462", - "op" : "Add", - "outputs" : ["Add_23462"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23461", "Negative_23432" ], - "name" : "Add_23463", - "op" : "Add", - "outputs" : ["Add_23463"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23458", "Add_23462" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23464", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23464"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23459", "Add_23463" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23465", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23465"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23464"], - "name" : "Sum_23466", - "op" : "Sum", - "outputs" : ["Sum_23466"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23464"], - "name" : "Reshape_23467", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23467"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19100", "ReplaceSlice_23464" ], - "name" : "Dot_23468", - "op" : "Dot", - "outputs" : ["Dot_23468"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23464"], - "name" : "Sum_23469", - "op" : "Sum", - "outputs" : ["Sum_23469"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23464"], - "name" : "Reshape_23470", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23470"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19102", "ReplaceSlice_23464" ], - "name" : "Dot_23471", - "op" : "Dot", - "outputs" : ["Dot_23471"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23465"], - "name" : "Sum_23472", - "op" : "Sum", - "outputs" : ["Sum_23472"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23465"], - "name" : "Reshape_23473", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23473"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19101", "ReplaceSlice_23465" ], - "name" : "Dot_23474", - "op" : "Dot", - "outputs" : ["Dot_23474"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23465"], - "name" : "Sum_23475", - "op" : "Sum", - "outputs" : ["Sum_23475"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23465"], - "name" : "Reshape_23476", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23476"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18686", "ReplaceSlice_23465" ], - "name" : "Dot_23477", - "op" : "Dot", - "outputs" : ["Dot_23477"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23368", "Sum_23466" ], - "name" : "Add_23478", - "op" : "Add", - "outputs" : ["Add_23478"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14192", "Reshape_23467" ], - "name" : "Dot_23479", - "op" : "Dot", - "outputs" : ["Dot_23479"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23468"], - "name" : "Reshape_23480", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23480"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23371", "Sum_23469" ], - "name" : "Add_23481", - "op" : "Add", - "outputs" : ["Add_23481"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15952", "Reshape_23470" ], - "name" : "Dot_23482", - "op" : "Dot", - "outputs" : ["Dot_23482"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23471"], - "name" : "Reshape_23483", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23483"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23374", "Sum_23472" ], - "name" : "Add_23484", - "op" : "Add", - "outputs" : ["Add_23484"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16028", "Reshape_23473" ], - "name" : "Dot_23485", - "op" : "Dot", - "outputs" : ["Dot_23485"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23474"], - "name" : "Reshape_23486", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23486"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23377", "Sum_23475" ], - "name" : "Add_23487", - "op" : "Add", - "outputs" : ["Add_23487"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_16032", "Reshape_23476" ], - "name" : "Dot_23488", - "op" : "Dot", - "outputs" : ["Dot_23488"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23477"], - "name" : "Reshape_23489", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23489"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23479"], - "name" : "Reshape_23490", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23480"], - "name" : "Reshape_23491", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23491"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23482"], - "name" : "Reshape_23492", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23483"], - "name" : "Reshape_23493", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23493"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23485"], - "name" : "Reshape_23494", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23494"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23486"], - "name" : "Reshape_23495", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23495"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23488"], - "name" : "Reshape_23496", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23496"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23489"], - "name" : "Reshape_23497", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23497"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23490", "Reshape_18806" ], - "name" : "Add_23498", - "op" : "Add", - "outputs" : ["Add_23498"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23389", "Reshape_23491" ], - "name" : "Add_23499", - "op" : "Add", - "outputs" : ["Add_23499"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23390", "Reshape_23493" ], - "name" : "Add_23500", - "op" : "Add", - "outputs" : ["Add_23500"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23494", "Reshape_23492" ], - "name" : "Add_23501", - "op" : "Add", - "outputs" : ["Add_23501"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23392", "Reshape_23495" ], - "name" : "Add_23502", - "op" : "Add", - "outputs" : ["Add_23502"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23496"], - "name" : "Reshape_23503", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23394", "Reshape_23497" ], - "name" : "Add_23504", - "op" : "Add", - "outputs" : ["Add_23504"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23498", "Parameter_14194" ], - "name" : "Multiply_23505", - "op" : "Multiply", - "outputs" : ["Multiply_23505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15942", "Add_23498" ], - "name" : "Multiply_23506", - "op" : "Multiply", - "outputs" : ["Multiply_23506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23501", "Parameter_15954" ], - "name" : "Multiply_23507", - "op" : "Multiply", - "outputs" : ["Multiply_23507"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15985", "Add_23501" ], - "name" : "Multiply_23508", - "op" : "Multiply", - "outputs" : ["Multiply_23508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23409", "Reshape_23503" ], - "name" : "Add_23509", - "op" : "Add", - "outputs" : ["Add_23509"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23505"], - "name" : "Negative_23510", - "op" : "Negative", - "outputs" : ["Negative_23510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23506", "Multiply_19098" ], - "name" : "Divide_23511", - "op" : "Divide", - "outputs" : ["Divide_23511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23507"], - "name" : "Negative_23512", - "op" : "Negative", - "outputs" : ["Negative_23512"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23508", "Multiply_19099" ], - "name" : "Divide_23513", - "op" : "Divide", - "outputs" : ["Divide_23513"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23404", "Add_23509" ], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "ReplaceSlice_23514", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23514"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 25, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23510", "Parameter_15942" ], - "name" : "Multiply_23515", - "op" : "Multiply", - "outputs" : ["Multiply_23515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23414", "Divide_23511" ], - "name" : "Add_23516", - "op" : "Add", - "outputs" : ["Add_23516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23512", "Parameter_15985" ], - "name" : "Multiply_23517", - "op" : "Multiply", - "outputs" : ["Multiply_23517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23419", "Divide_23513" ], - "name" : "Add_23518", - "op" : "Add", - "outputs" : ["Add_23518"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23514"], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "Slice_23519", - "op" : "Slice", - "outputs" : ["Slice_23519"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 24, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23515", "Parameter_15943" ], - "name" : "Divide_23520", - "op" : "Divide", - "outputs" : ["Divide_23520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23516", "Parameter_14197" ], - "name" : "Multiply_23521", - "op" : "Multiply", - "outputs" : ["Multiply_23521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15927", "Add_23516" ], - "name" : "Multiply_23522", - "op" : "Multiply", - "outputs" : ["Multiply_23522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23516", "Parameter_14206" ], - "name" : "Multiply_23523", - "op" : "Multiply", - "outputs" : ["Multiply_23523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15935", "Add_23516" ], - "name" : "Multiply_23524", - "op" : "Multiply", - "outputs" : ["Multiply_23524"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23517", "Parameter_15986" ], - "name" : "Divide_23525", - "op" : "Divide", - "outputs" : ["Divide_23525"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23518", "Parameter_15957" ], - "name" : "Multiply_23526", - "op" : "Multiply", - "outputs" : ["Multiply_23526"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15970", "Add_23518" ], - "name" : "Multiply_23527", - "op" : "Multiply", - "outputs" : ["Multiply_23527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23518", "Parameter_15890" ], - "name" : "Multiply_23528", - "op" : "Multiply", - "outputs" : ["Multiply_23528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15978", "Add_23518" ], - "name" : "Multiply_23529", - "op" : "Multiply", - "outputs" : ["Multiply_23529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23520", "Parameter_15944" ], - "name" : "Multiply_23530", - "op" : "Multiply", - "outputs" : ["Multiply_23530"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23521"], - "name" : "Negative_23531", - "op" : "Negative", - "outputs" : ["Negative_23531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23522", "Multiply_19094" ], - "name" : "Divide_23532", - "op" : "Divide", - "outputs" : ["Divide_23532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23523"], - "name" : "Negative_23533", - "op" : "Negative", - "outputs" : ["Negative_23533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23525", "Parameter_15987" ], - "name" : "Multiply_23534", - "op" : "Multiply", - "outputs" : ["Multiply_23534"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23526"], - "name" : "Negative_23535", - "op" : "Negative", - "outputs" : ["Negative_23535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23527", "Multiply_19095" ], - "name" : "Divide_23536", - "op" : "Divide", - "outputs" : ["Divide_23536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23528"], - "name" : "Negative_23537", - "op" : "Negative", - "outputs" : ["Negative_23537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23530"], - "name" : "Negative_23538", - "op" : "Negative", - "outputs" : ["Negative_23538"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23531", "Parameter_15927" ], - "name" : "Multiply_23539", - "op" : "Multiply", - "outputs" : ["Multiply_23539"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18575", "Divide_23532" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23540", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23540"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23533", "Parameter_15935" ], - "name" : "Multiply_23541", - "op" : "Multiply", - "outputs" : ["Multiply_23541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23534"], - "name" : "Negative_23542", - "op" : "Negative", - "outputs" : ["Negative_23542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23535", "Parameter_15970" ], - "name" : "Multiply_23543", - "op" : "Multiply", - "outputs" : ["Multiply_23543"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18634", "Divide_23536" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23544", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23544"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23537", "Parameter_15978" ], - "name" : "Multiply_23545", - "op" : "Multiply", - "outputs" : ["Multiply_23545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23539", "Parameter_15928" ], - "name" : "Divide_23546", - "op" : "Divide", - "outputs" : ["Divide_23546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23540"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23547", - "op" : "Slice", - "outputs" : ["Slice_23547"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23541", "Parameter_15936" ], - "name" : "Divide_23548", - "op" : "Divide", - "outputs" : ["Divide_23548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23543", "Parameter_15971" ], - "name" : "Divide_23549", - "op" : "Divide", - "outputs" : ["Divide_23549"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23544"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23550", - "op" : "Slice", - "outputs" : ["Slice_23550"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23545", "Parameter_15979" ], - "name" : "Divide_23551", - "op" : "Divide", - "outputs" : ["Divide_23551"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23546", "Parameter_15929" ], - "name" : "Multiply_23552", - "op" : "Multiply", - "outputs" : ["Multiply_23552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23548", "Parameter_15937" ], - "name" : "Multiply_23553", - "op" : "Multiply", - "outputs" : ["Multiply_23553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23549", "Parameter_15972" ], - "name" : "Multiply_23554", - "op" : "Multiply", - "outputs" : ["Multiply_23554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23551", "Parameter_15980" ], - "name" : "Multiply_23555", - "op" : "Multiply", - "outputs" : ["Multiply_23555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23552"], - "name" : "Negative_23556", - "op" : "Negative", - "outputs" : ["Negative_23556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23553"], - "name" : "Negative_23557", - "op" : "Negative", - "outputs" : ["Negative_23557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23554"], - "name" : "Negative_23558", - "op" : "Negative", - "outputs" : ["Negative_23558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23555"], - "name" : "Negative_23559", - "op" : "Negative", - "outputs" : ["Negative_23559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23547", "Negative_23556" ], - "name" : "Add_23560", - "op" : "Add", - "outputs" : ["Add_23560"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23550", "Negative_23558" ], - "name" : "Add_23561", - "op" : "Add", - "outputs" : ["Add_23561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23540", "Add_23560" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23562", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23562"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23544", "Add_23561" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23563", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23563"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23562"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23564", - "op" : "Slice", - "outputs" : ["Slice_23564"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23563"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23565", - "op" : "Slice", - "outputs" : ["Slice_23565"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23564", "Negative_23557" ], - "name" : "Add_23566", - "op" : "Add", - "outputs" : ["Add_23566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23565", "Negative_23559" ], - "name" : "Add_23567", - "op" : "Add", - "outputs" : ["Add_23567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23562", "Add_23566" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23568", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23568"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23563", "Add_23567" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23569", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23569"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23568"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23570", - "op" : "Slice", - "outputs" : ["Slice_23570"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23569"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23571", - "op" : "Slice", - "outputs" : ["Slice_23571"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23570", "Negative_23538" ], - "name" : "Add_23572", - "op" : "Add", - "outputs" : ["Add_23572"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23571", "Negative_23542" ], - "name" : "Add_23573", - "op" : "Add", - "outputs" : ["Add_23573"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23568", "Add_23572" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23574", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23574"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23569", "Add_23573" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23575", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23575"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23574"], - "name" : "Sum_23576", - "op" : "Sum", - "outputs" : ["Sum_23576"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23574"], - "name" : "Reshape_23577", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23577"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19089", "ReplaceSlice_23574" ], - "name" : "Dot_23578", - "op" : "Dot", - "outputs" : ["Dot_23578"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23574"], - "name" : "Sum_23579", - "op" : "Sum", - "outputs" : ["Sum_23579"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23574"], - "name" : "Reshape_23580", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23580"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19091", "ReplaceSlice_23574" ], - "name" : "Dot_23581", - "op" : "Dot", - "outputs" : ["Dot_23581"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23575"], - "name" : "Sum_23582", - "op" : "Sum", - "outputs" : ["Sum_23582"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23575"], - "name" : "Reshape_23583", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23583"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19090", "ReplaceSlice_23575" ], - "name" : "Dot_23584", - "op" : "Dot", - "outputs" : ["Dot_23584"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23575"], - "name" : "Sum_23585", - "op" : "Sum", - "outputs" : ["Sum_23585"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23575"], - "name" : "Reshape_23586", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23586"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18685", "ReplaceSlice_23575" ], - "name" : "Dot_23587", - "op" : "Dot", - "outputs" : ["Dot_23587"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23478", "Sum_23576" ], - "name" : "Add_23588", - "op" : "Add", - "outputs" : ["Add_23588"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14203", "Reshape_23577" ], - "name" : "Dot_23589", - "op" : "Dot", - "outputs" : ["Dot_23589"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23578"], - "name" : "Reshape_23590", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23590"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23481", "Sum_23579" ], - "name" : "Add_23591", - "op" : "Add", - "outputs" : ["Add_23591"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15887", "Reshape_23580" ], - "name" : "Dot_23592", - "op" : "Dot", - "outputs" : ["Dot_23592"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23581"], - "name" : "Reshape_23593", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23593"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23484", "Sum_23582" ], - "name" : "Add_23594", - "op" : "Add", - "outputs" : ["Add_23594"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15963", "Reshape_23583" ], - "name" : "Dot_23595", - "op" : "Dot", - "outputs" : ["Dot_23595"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23584"], - "name" : "Reshape_23596", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23596"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23487", "Sum_23585" ], - "name" : "Add_23597", - "op" : "Add", - "outputs" : ["Add_23597"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15967", "Reshape_23586" ], - "name" : "Dot_23598", - "op" : "Dot", - "outputs" : ["Dot_23598"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23587"], - "name" : "Reshape_23599", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23599"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23589"], - "name" : "Reshape_23600", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23600"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23590"], - "name" : "Reshape_23601", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23601"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23592"], - "name" : "Reshape_23602", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23593"], - "name" : "Reshape_23603", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23603"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23595"], - "name" : "Reshape_23604", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23604"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23596"], - "name" : "Reshape_23605", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23605"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23598"], - "name" : "Reshape_23606", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23606"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23599"], - "name" : "Reshape_23607", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23607"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23600", "Reshape_18805" ], - "name" : "Add_23608", - "op" : "Add", - "outputs" : ["Add_23608"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23499", "Reshape_23601" ], - "name" : "Add_23609", - "op" : "Add", - "outputs" : ["Add_23609"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23500", "Reshape_23603" ], - "name" : "Add_23610", - "op" : "Add", - "outputs" : ["Add_23610"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23604", "Reshape_23602" ], - "name" : "Add_23611", - "op" : "Add", - "outputs" : ["Add_23611"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23502", "Reshape_23605" ], - "name" : "Add_23612", - "op" : "Add", - "outputs" : ["Add_23612"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23606"], - "name" : "Reshape_23613", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23613"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23504", "Reshape_23607" ], - "name" : "Add_23614", - "op" : "Add", - "outputs" : ["Add_23614"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23608", "Parameter_14205" ], - "name" : "Multiply_23615", - "op" : "Multiply", - "outputs" : ["Multiply_23615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15877", "Add_23608" ], - "name" : "Multiply_23616", - "op" : "Multiply", - "outputs" : ["Multiply_23616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23611", "Parameter_15889" ], - "name" : "Multiply_23617", - "op" : "Multiply", - "outputs" : ["Multiply_23617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15920", "Add_23611" ], - "name" : "Multiply_23618", - "op" : "Multiply", - "outputs" : ["Multiply_23618"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23519", "Reshape_23613" ], - "name" : "Add_23619", - "op" : "Add", - "outputs" : ["Add_23619"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23615"], - "name" : "Negative_23620", - "op" : "Negative", - "outputs" : ["Negative_23620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23616", "Multiply_19087" ], - "name" : "Divide_23621", - "op" : "Divide", - "outputs" : ["Divide_23621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23617"], - "name" : "Negative_23622", - "op" : "Negative", - "outputs" : ["Negative_23622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23618", "Multiply_19088" ], - "name" : "Divide_23623", - "op" : "Divide", - "outputs" : ["Divide_23623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23514", "Add_23619" ], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "ReplaceSlice_23624", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23624"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 24, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23620", "Parameter_15877" ], - "name" : "Multiply_23625", - "op" : "Multiply", - "outputs" : ["Multiply_23625"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23524", "Divide_23621" ], - "name" : "Add_23626", - "op" : "Add", - "outputs" : ["Add_23626"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23622", "Parameter_15920" ], - "name" : "Multiply_23627", - "op" : "Multiply", - "outputs" : ["Multiply_23627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23529", "Divide_23623" ], - "name" : "Add_23628", - "op" : "Add", - "outputs" : ["Add_23628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23624"], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "Slice_23629", - "op" : "Slice", - "outputs" : ["Slice_23629"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 23, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23625", "Parameter_15878" ], - "name" : "Divide_23630", - "op" : "Divide", - "outputs" : ["Divide_23630"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23626", "Parameter_14208" ], - "name" : "Multiply_23631", - "op" : "Multiply", - "outputs" : ["Multiply_23631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15862", "Add_23626" ], - "name" : "Multiply_23632", - "op" : "Multiply", - "outputs" : ["Multiply_23632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23626", "Parameter_14217" ], - "name" : "Multiply_23633", - "op" : "Multiply", - "outputs" : ["Multiply_23633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15870", "Add_23626" ], - "name" : "Multiply_23634", - "op" : "Multiply", - "outputs" : ["Multiply_23634"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23627", "Parameter_15921" ], - "name" : "Divide_23635", - "op" : "Divide", - "outputs" : ["Divide_23635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23628", "Parameter_15892" ], - "name" : "Multiply_23636", - "op" : "Multiply", - "outputs" : ["Multiply_23636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15905", "Add_23628" ], - "name" : "Multiply_23637", - "op" : "Multiply", - "outputs" : ["Multiply_23637"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23628", "Parameter_15825" ], - "name" : "Multiply_23638", - "op" : "Multiply", - "outputs" : ["Multiply_23638"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15913", "Add_23628" ], - "name" : "Multiply_23639", - "op" : "Multiply", - "outputs" : ["Multiply_23639"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23630", "Parameter_15879" ], - "name" : "Multiply_23640", - "op" : "Multiply", - "outputs" : ["Multiply_23640"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23631"], - "name" : "Negative_23641", - "op" : "Negative", - "outputs" : ["Negative_23641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23632", "Multiply_19083" ], - "name" : "Divide_23642", - "op" : "Divide", - "outputs" : ["Divide_23642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23633"], - "name" : "Negative_23643", - "op" : "Negative", - "outputs" : ["Negative_23643"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23635", "Parameter_15922" ], - "name" : "Multiply_23644", - "op" : "Multiply", - "outputs" : ["Multiply_23644"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23636"], - "name" : "Negative_23645", - "op" : "Negative", - "outputs" : ["Negative_23645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23637", "Multiply_19084" ], - "name" : "Divide_23646", - "op" : "Divide", - "outputs" : ["Divide_23646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23638"], - "name" : "Negative_23647", - "op" : "Negative", - "outputs" : ["Negative_23647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23640"], - "name" : "Negative_23648", - "op" : "Negative", - "outputs" : ["Negative_23648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23641", "Parameter_15862" ], - "name" : "Multiply_23649", - "op" : "Multiply", - "outputs" : ["Multiply_23649"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18576", "Divide_23642" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23650", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23650"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23643", "Parameter_15870" ], - "name" : "Multiply_23651", - "op" : "Multiply", - "outputs" : ["Multiply_23651"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23644"], - "name" : "Negative_23652", - "op" : "Negative", - "outputs" : ["Negative_23652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23645", "Parameter_15905" ], - "name" : "Multiply_23653", - "op" : "Multiply", - "outputs" : ["Multiply_23653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18635", "Divide_23646" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23654", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23654"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23647", "Parameter_15913" ], - "name" : "Multiply_23655", - "op" : "Multiply", - "outputs" : ["Multiply_23655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23649", "Parameter_15863" ], - "name" : "Divide_23656", - "op" : "Divide", - "outputs" : ["Divide_23656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23650"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23657", - "op" : "Slice", - "outputs" : ["Slice_23657"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23651", "Parameter_15871" ], - "name" : "Divide_23658", - "op" : "Divide", - "outputs" : ["Divide_23658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23653", "Parameter_15906" ], - "name" : "Divide_23659", - "op" : "Divide", - "outputs" : ["Divide_23659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23654"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23660", - "op" : "Slice", - "outputs" : ["Slice_23660"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23655", "Parameter_15914" ], - "name" : "Divide_23661", - "op" : "Divide", - "outputs" : ["Divide_23661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23656", "Parameter_15864" ], - "name" : "Multiply_23662", - "op" : "Multiply", - "outputs" : ["Multiply_23662"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23658", "Parameter_15872" ], - "name" : "Multiply_23663", - "op" : "Multiply", - "outputs" : ["Multiply_23663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23659", "Parameter_15907" ], - "name" : "Multiply_23664", - "op" : "Multiply", - "outputs" : ["Multiply_23664"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23661", "Parameter_15915" ], - "name" : "Multiply_23665", - "op" : "Multiply", - "outputs" : ["Multiply_23665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23662"], - "name" : "Negative_23666", - "op" : "Negative", - "outputs" : ["Negative_23666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23663"], - "name" : "Negative_23667", - "op" : "Negative", - "outputs" : ["Negative_23667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23664"], - "name" : "Negative_23668", - "op" : "Negative", - "outputs" : ["Negative_23668"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23665"], - "name" : "Negative_23669", - "op" : "Negative", - "outputs" : ["Negative_23669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23657", "Negative_23666" ], - "name" : "Add_23670", - "op" : "Add", - "outputs" : ["Add_23670"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23660", "Negative_23668" ], - "name" : "Add_23671", - "op" : "Add", - "outputs" : ["Add_23671"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23650", "Add_23670" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23672", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23672"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23654", "Add_23671" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23673", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23673"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23672"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23674", - "op" : "Slice", - "outputs" : ["Slice_23674"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23673"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23675", - "op" : "Slice", - "outputs" : ["Slice_23675"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23674", "Negative_23667" ], - "name" : "Add_23676", - "op" : "Add", - "outputs" : ["Add_23676"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23675", "Negative_23669" ], - "name" : "Add_23677", - "op" : "Add", - "outputs" : ["Add_23677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23672", "Add_23676" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23678", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23678"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23673", "Add_23677" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23679", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23679"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23678"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23680", - "op" : "Slice", - "outputs" : ["Slice_23680"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23679"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23681", - "op" : "Slice", - "outputs" : ["Slice_23681"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23680", "Negative_23648" ], - "name" : "Add_23682", - "op" : "Add", - "outputs" : ["Add_23682"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23681", "Negative_23652" ], - "name" : "Add_23683", - "op" : "Add", - "outputs" : ["Add_23683"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23678", "Add_23682" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23684", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23684"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23679", "Add_23683" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23685", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23685"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23684"], - "name" : "Sum_23686", - "op" : "Sum", - "outputs" : ["Sum_23686"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23684"], - "name" : "Reshape_23687", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23687"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19078", "ReplaceSlice_23684" ], - "name" : "Dot_23688", - "op" : "Dot", - "outputs" : ["Dot_23688"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23684"], - "name" : "Sum_23689", - "op" : "Sum", - "outputs" : ["Sum_23689"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23684"], - "name" : "Reshape_23690", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23690"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19080", "ReplaceSlice_23684" ], - "name" : "Dot_23691", - "op" : "Dot", - "outputs" : ["Dot_23691"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23685"], - "name" : "Sum_23692", - "op" : "Sum", - "outputs" : ["Sum_23692"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23685"], - "name" : "Reshape_23693", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23693"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19079", "ReplaceSlice_23685" ], - "name" : "Dot_23694", - "op" : "Dot", - "outputs" : ["Dot_23694"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23685"], - "name" : "Sum_23695", - "op" : "Sum", - "outputs" : ["Sum_23695"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23685"], - "name" : "Reshape_23696", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23696"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18684", "ReplaceSlice_23685" ], - "name" : "Dot_23697", - "op" : "Dot", - "outputs" : ["Dot_23697"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23588", "Sum_23686" ], - "name" : "Add_23698", - "op" : "Add", - "outputs" : ["Add_23698"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14214", "Reshape_23687" ], - "name" : "Dot_23699", - "op" : "Dot", - "outputs" : ["Dot_23699"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23688"], - "name" : "Reshape_23700", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23700"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23591", "Sum_23689" ], - "name" : "Add_23701", - "op" : "Add", - "outputs" : ["Add_23701"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15822", "Reshape_23690" ], - "name" : "Dot_23702", - "op" : "Dot", - "outputs" : ["Dot_23702"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23691"], - "name" : "Reshape_23703", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23703"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23594", "Sum_23692" ], - "name" : "Add_23704", - "op" : "Add", - "outputs" : ["Add_23704"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15898", "Reshape_23693" ], - "name" : "Dot_23705", - "op" : "Dot", - "outputs" : ["Dot_23705"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23694"], - "name" : "Reshape_23706", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23706"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23597", "Sum_23695" ], - "name" : "Add_23707", - "op" : "Add", - "outputs" : ["Add_23707"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15902", "Reshape_23696" ], - "name" : "Dot_23708", - "op" : "Dot", - "outputs" : ["Dot_23708"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23697"], - "name" : "Reshape_23709", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23709"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23699"], - "name" : "Reshape_23710", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23710"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23700"], - "name" : "Reshape_23711", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23711"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23702"], - "name" : "Reshape_23712", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23712"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23703"], - "name" : "Reshape_23713", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23713"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23705"], - "name" : "Reshape_23714", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23714"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23706"], - "name" : "Reshape_23715", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23715"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23708"], - "name" : "Reshape_23716", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23716"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23709"], - "name" : "Reshape_23717", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23717"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23710", "Reshape_18804" ], - "name" : "Add_23718", - "op" : "Add", - "outputs" : ["Add_23718"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23609", "Reshape_23711" ], - "name" : "Add_23719", - "op" : "Add", - "outputs" : ["Add_23719"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23610", "Reshape_23713" ], - "name" : "Add_23720", - "op" : "Add", - "outputs" : ["Add_23720"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23714", "Reshape_23712" ], - "name" : "Add_23721", - "op" : "Add", - "outputs" : ["Add_23721"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23612", "Reshape_23715" ], - "name" : "Add_23722", - "op" : "Add", - "outputs" : ["Add_23722"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23716"], - "name" : "Reshape_23723", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23614", "Reshape_23717" ], - "name" : "Add_23724", - "op" : "Add", - "outputs" : ["Add_23724"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23718", "Parameter_14216" ], - "name" : "Multiply_23725", - "op" : "Multiply", - "outputs" : ["Multiply_23725"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15812", "Add_23718" ], - "name" : "Multiply_23726", - "op" : "Multiply", - "outputs" : ["Multiply_23726"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23721", "Parameter_15824" ], - "name" : "Multiply_23727", - "op" : "Multiply", - "outputs" : ["Multiply_23727"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15855", "Add_23721" ], - "name" : "Multiply_23728", - "op" : "Multiply", - "outputs" : ["Multiply_23728"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23629", "Reshape_23723" ], - "name" : "Add_23729", - "op" : "Add", - "outputs" : ["Add_23729"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23725"], - "name" : "Negative_23730", - "op" : "Negative", - "outputs" : ["Negative_23730"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23726", "Multiply_19076" ], - "name" : "Divide_23731", - "op" : "Divide", - "outputs" : ["Divide_23731"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23727"], - "name" : "Negative_23732", - "op" : "Negative", - "outputs" : ["Negative_23732"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23728", "Multiply_19077" ], - "name" : "Divide_23733", - "op" : "Divide", - "outputs" : ["Divide_23733"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23624", "Add_23729" ], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "ReplaceSlice_23734", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23734"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 23, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23730", "Parameter_15812" ], - "name" : "Multiply_23735", - "op" : "Multiply", - "outputs" : ["Multiply_23735"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23634", "Divide_23731" ], - "name" : "Add_23736", - "op" : "Add", - "outputs" : ["Add_23736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23732", "Parameter_15855" ], - "name" : "Multiply_23737", - "op" : "Multiply", - "outputs" : ["Multiply_23737"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23639", "Divide_23733" ], - "name" : "Add_23738", - "op" : "Add", - "outputs" : ["Add_23738"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23734"], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "Slice_23739", - "op" : "Slice", - "outputs" : ["Slice_23739"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 22, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23735", "Parameter_15813" ], - "name" : "Divide_23740", - "op" : "Divide", - "outputs" : ["Divide_23740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23736", "Parameter_14219" ], - "name" : "Multiply_23741", - "op" : "Multiply", - "outputs" : ["Multiply_23741"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15797", "Add_23736" ], - "name" : "Multiply_23742", - "op" : "Multiply", - "outputs" : ["Multiply_23742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23736", "Parameter_14228" ], - "name" : "Multiply_23743", - "op" : "Multiply", - "outputs" : ["Multiply_23743"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15805", "Add_23736" ], - "name" : "Multiply_23744", - "op" : "Multiply", - "outputs" : ["Multiply_23744"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23737", "Parameter_15856" ], - "name" : "Divide_23745", - "op" : "Divide", - "outputs" : ["Divide_23745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23738", "Parameter_15827" ], - "name" : "Multiply_23746", - "op" : "Multiply", - "outputs" : ["Multiply_23746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15840", "Add_23738" ], - "name" : "Multiply_23747", - "op" : "Multiply", - "outputs" : ["Multiply_23747"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23738", "Parameter_15760" ], - "name" : "Multiply_23748", - "op" : "Multiply", - "outputs" : ["Multiply_23748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15848", "Add_23738" ], - "name" : "Multiply_23749", - "op" : "Multiply", - "outputs" : ["Multiply_23749"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23740", "Parameter_15814" ], - "name" : "Multiply_23750", - "op" : "Multiply", - "outputs" : ["Multiply_23750"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23741"], - "name" : "Negative_23751", - "op" : "Negative", - "outputs" : ["Negative_23751"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23742", "Multiply_19072" ], - "name" : "Divide_23752", - "op" : "Divide", - "outputs" : ["Divide_23752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23743"], - "name" : "Negative_23753", - "op" : "Negative", - "outputs" : ["Negative_23753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23745", "Parameter_15857" ], - "name" : "Multiply_23754", - "op" : "Multiply", - "outputs" : ["Multiply_23754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23746"], - "name" : "Negative_23755", - "op" : "Negative", - "outputs" : ["Negative_23755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23747", "Multiply_19073" ], - "name" : "Divide_23756", - "op" : "Divide", - "outputs" : ["Divide_23756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23748"], - "name" : "Negative_23757", - "op" : "Negative", - "outputs" : ["Negative_23757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23750"], - "name" : "Negative_23758", - "op" : "Negative", - "outputs" : ["Negative_23758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23751", "Parameter_15797" ], - "name" : "Multiply_23759", - "op" : "Multiply", - "outputs" : ["Multiply_23759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18577", "Divide_23752" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23760", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23760"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23753", "Parameter_15805" ], - "name" : "Multiply_23761", - "op" : "Multiply", - "outputs" : ["Multiply_23761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23754"], - "name" : "Negative_23762", - "op" : "Negative", - "outputs" : ["Negative_23762"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23755", "Parameter_15840" ], - "name" : "Multiply_23763", - "op" : "Multiply", - "outputs" : ["Multiply_23763"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18636", "Divide_23756" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23764", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23764"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23757", "Parameter_15848" ], - "name" : "Multiply_23765", - "op" : "Multiply", - "outputs" : ["Multiply_23765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23759", "Parameter_15798" ], - "name" : "Divide_23766", - "op" : "Divide", - "outputs" : ["Divide_23766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23760"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23767", - "op" : "Slice", - "outputs" : ["Slice_23767"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23761", "Parameter_15806" ], - "name" : "Divide_23768", - "op" : "Divide", - "outputs" : ["Divide_23768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23763", "Parameter_15841" ], - "name" : "Divide_23769", - "op" : "Divide", - "outputs" : ["Divide_23769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23764"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23770", - "op" : "Slice", - "outputs" : ["Slice_23770"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23765", "Parameter_15849" ], - "name" : "Divide_23771", - "op" : "Divide", - "outputs" : ["Divide_23771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23766", "Parameter_15799" ], - "name" : "Multiply_23772", - "op" : "Multiply", - "outputs" : ["Multiply_23772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23768", "Parameter_15807" ], - "name" : "Multiply_23773", - "op" : "Multiply", - "outputs" : ["Multiply_23773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23769", "Parameter_15842" ], - "name" : "Multiply_23774", - "op" : "Multiply", - "outputs" : ["Multiply_23774"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23771", "Parameter_15850" ], - "name" : "Multiply_23775", - "op" : "Multiply", - "outputs" : ["Multiply_23775"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23772"], - "name" : "Negative_23776", - "op" : "Negative", - "outputs" : ["Negative_23776"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23773"], - "name" : "Negative_23777", - "op" : "Negative", - "outputs" : ["Negative_23777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23774"], - "name" : "Negative_23778", - "op" : "Negative", - "outputs" : ["Negative_23778"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23775"], - "name" : "Negative_23779", - "op" : "Negative", - "outputs" : ["Negative_23779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23767", "Negative_23776" ], - "name" : "Add_23780", - "op" : "Add", - "outputs" : ["Add_23780"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23770", "Negative_23778" ], - "name" : "Add_23781", - "op" : "Add", - "outputs" : ["Add_23781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23760", "Add_23780" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23782", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23782"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23764", "Add_23781" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23783", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23783"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23782"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23784", - "op" : "Slice", - "outputs" : ["Slice_23784"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23783"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23785", - "op" : "Slice", - "outputs" : ["Slice_23785"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23784", "Negative_23777" ], - "name" : "Add_23786", - "op" : "Add", - "outputs" : ["Add_23786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23785", "Negative_23779" ], - "name" : "Add_23787", - "op" : "Add", - "outputs" : ["Add_23787"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23782", "Add_23786" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23788", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23788"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23783", "Add_23787" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23789", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23789"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23788"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23790", - "op" : "Slice", - "outputs" : ["Slice_23790"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23789"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23791", - "op" : "Slice", - "outputs" : ["Slice_23791"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23790", "Negative_23758" ], - "name" : "Add_23792", - "op" : "Add", - "outputs" : ["Add_23792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23791", "Negative_23762" ], - "name" : "Add_23793", - "op" : "Add", - "outputs" : ["Add_23793"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23788", "Add_23792" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23794", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23794"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23789", "Add_23793" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23795", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23795"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23794"], - "name" : "Sum_23796", - "op" : "Sum", - "outputs" : ["Sum_23796"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23794"], - "name" : "Reshape_23797", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23797"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19067", "ReplaceSlice_23794" ], - "name" : "Dot_23798", - "op" : "Dot", - "outputs" : ["Dot_23798"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23794"], - "name" : "Sum_23799", - "op" : "Sum", - "outputs" : ["Sum_23799"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23794"], - "name" : "Reshape_23800", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23800"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19069", "ReplaceSlice_23794" ], - "name" : "Dot_23801", - "op" : "Dot", - "outputs" : ["Dot_23801"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23795"], - "name" : "Sum_23802", - "op" : "Sum", - "outputs" : ["Sum_23802"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23795"], - "name" : "Reshape_23803", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23803"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19068", "ReplaceSlice_23795" ], - "name" : "Dot_23804", - "op" : "Dot", - "outputs" : ["Dot_23804"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23795"], - "name" : "Sum_23805", - "op" : "Sum", - "outputs" : ["Sum_23805"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23795"], - "name" : "Reshape_23806", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23806"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18683", "ReplaceSlice_23795" ], - "name" : "Dot_23807", - "op" : "Dot", - "outputs" : ["Dot_23807"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23698", "Sum_23796" ], - "name" : "Add_23808", - "op" : "Add", - "outputs" : ["Add_23808"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14225", "Reshape_23797" ], - "name" : "Dot_23809", - "op" : "Dot", - "outputs" : ["Dot_23809"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23798"], - "name" : "Reshape_23810", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23810"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23701", "Sum_23799" ], - "name" : "Add_23811", - "op" : "Add", - "outputs" : ["Add_23811"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15757", "Reshape_23800" ], - "name" : "Dot_23812", - "op" : "Dot", - "outputs" : ["Dot_23812"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23801"], - "name" : "Reshape_23813", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23813"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23704", "Sum_23802" ], - "name" : "Add_23814", - "op" : "Add", - "outputs" : ["Add_23814"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15833", "Reshape_23803" ], - "name" : "Dot_23815", - "op" : "Dot", - "outputs" : ["Dot_23815"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23804"], - "name" : "Reshape_23816", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23816"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23707", "Sum_23805" ], - "name" : "Add_23817", - "op" : "Add", - "outputs" : ["Add_23817"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15837", "Reshape_23806" ], - "name" : "Dot_23818", - "op" : "Dot", - "outputs" : ["Dot_23818"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23807"], - "name" : "Reshape_23819", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23819"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23809"], - "name" : "Reshape_23820", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23810"], - "name" : "Reshape_23821", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23821"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23812"], - "name" : "Reshape_23822", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23822"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23813"], - "name" : "Reshape_23823", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23823"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23815"], - "name" : "Reshape_23824", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23824"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23816"], - "name" : "Reshape_23825", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23825"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23818"], - "name" : "Reshape_23826", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23826"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23819"], - "name" : "Reshape_23827", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23827"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23820", "Reshape_18803" ], - "name" : "Add_23828", - "op" : "Add", - "outputs" : ["Add_23828"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23719", "Reshape_23821" ], - "name" : "Add_23829", - "op" : "Add", - "outputs" : ["Add_23829"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23720", "Reshape_23823" ], - "name" : "Add_23830", - "op" : "Add", - "outputs" : ["Add_23830"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23824", "Reshape_23822" ], - "name" : "Add_23831", - "op" : "Add", - "outputs" : ["Add_23831"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23722", "Reshape_23825" ], - "name" : "Add_23832", - "op" : "Add", - "outputs" : ["Add_23832"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23826"], - "name" : "Reshape_23833", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23724", "Reshape_23827" ], - "name" : "Add_23834", - "op" : "Add", - "outputs" : ["Add_23834"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23828", "Parameter_14227" ], - "name" : "Multiply_23835", - "op" : "Multiply", - "outputs" : ["Multiply_23835"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15747", "Add_23828" ], - "name" : "Multiply_23836", - "op" : "Multiply", - "outputs" : ["Multiply_23836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23831", "Parameter_15759" ], - "name" : "Multiply_23837", - "op" : "Multiply", - "outputs" : ["Multiply_23837"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15790", "Add_23831" ], - "name" : "Multiply_23838", - "op" : "Multiply", - "outputs" : ["Multiply_23838"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23739", "Reshape_23833" ], - "name" : "Add_23839", - "op" : "Add", - "outputs" : ["Add_23839"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23835"], - "name" : "Negative_23840", - "op" : "Negative", - "outputs" : ["Negative_23840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23836", "Multiply_19065" ], - "name" : "Divide_23841", - "op" : "Divide", - "outputs" : ["Divide_23841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23837"], - "name" : "Negative_23842", - "op" : "Negative", - "outputs" : ["Negative_23842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23838", "Multiply_19066" ], - "name" : "Divide_23843", - "op" : "Divide", - "outputs" : ["Divide_23843"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23734", "Add_23839" ], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "ReplaceSlice_23844", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23844"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 22, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23840", "Parameter_15747" ], - "name" : "Multiply_23845", - "op" : "Multiply", - "outputs" : ["Multiply_23845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23744", "Divide_23841" ], - "name" : "Add_23846", - "op" : "Add", - "outputs" : ["Add_23846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23842", "Parameter_15790" ], - "name" : "Multiply_23847", - "op" : "Multiply", - "outputs" : ["Multiply_23847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23749", "Divide_23843" ], - "name" : "Add_23848", - "op" : "Add", - "outputs" : ["Add_23848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23844"], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "Slice_23849", - "op" : "Slice", - "outputs" : ["Slice_23849"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 21, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23845", "Parameter_15748" ], - "name" : "Divide_23850", - "op" : "Divide", - "outputs" : ["Divide_23850"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23846", "Parameter_14230" ], - "name" : "Multiply_23851", - "op" : "Multiply", - "outputs" : ["Multiply_23851"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15732", "Add_23846" ], - "name" : "Multiply_23852", - "op" : "Multiply", - "outputs" : ["Multiply_23852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23846", "Parameter_14239" ], - "name" : "Multiply_23853", - "op" : "Multiply", - "outputs" : ["Multiply_23853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15740", "Add_23846" ], - "name" : "Multiply_23854", - "op" : "Multiply", - "outputs" : ["Multiply_23854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23847", "Parameter_15791" ], - "name" : "Divide_23855", - "op" : "Divide", - "outputs" : ["Divide_23855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23848", "Parameter_15762" ], - "name" : "Multiply_23856", - "op" : "Multiply", - "outputs" : ["Multiply_23856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15775", "Add_23848" ], - "name" : "Multiply_23857", - "op" : "Multiply", - "outputs" : ["Multiply_23857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23848", "Parameter_15695" ], - "name" : "Multiply_23858", - "op" : "Multiply", - "outputs" : ["Multiply_23858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15783", "Add_23848" ], - "name" : "Multiply_23859", - "op" : "Multiply", - "outputs" : ["Multiply_23859"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23850", "Parameter_15749" ], - "name" : "Multiply_23860", - "op" : "Multiply", - "outputs" : ["Multiply_23860"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23851"], - "name" : "Negative_23861", - "op" : "Negative", - "outputs" : ["Negative_23861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23852", "Multiply_19061" ], - "name" : "Divide_23862", - "op" : "Divide", - "outputs" : ["Divide_23862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23853"], - "name" : "Negative_23863", - "op" : "Negative", - "outputs" : ["Negative_23863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23855", "Parameter_15792" ], - "name" : "Multiply_23864", - "op" : "Multiply", - "outputs" : ["Multiply_23864"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23856"], - "name" : "Negative_23865", - "op" : "Negative", - "outputs" : ["Negative_23865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23857", "Multiply_19062" ], - "name" : "Divide_23866", - "op" : "Divide", - "outputs" : ["Divide_23866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23858"], - "name" : "Negative_23867", - "op" : "Negative", - "outputs" : ["Negative_23867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23860"], - "name" : "Negative_23868", - "op" : "Negative", - "outputs" : ["Negative_23868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23861", "Parameter_15732" ], - "name" : "Multiply_23869", - "op" : "Multiply", - "outputs" : ["Multiply_23869"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18578", "Divide_23862" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23870", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23870"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23863", "Parameter_15740" ], - "name" : "Multiply_23871", - "op" : "Multiply", - "outputs" : ["Multiply_23871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23864"], - "name" : "Negative_23872", - "op" : "Negative", - "outputs" : ["Negative_23872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23865", "Parameter_15775" ], - "name" : "Multiply_23873", - "op" : "Multiply", - "outputs" : ["Multiply_23873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18637", "Divide_23866" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23874", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23874"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23867", "Parameter_15783" ], - "name" : "Multiply_23875", - "op" : "Multiply", - "outputs" : ["Multiply_23875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23869", "Parameter_15733" ], - "name" : "Divide_23876", - "op" : "Divide", - "outputs" : ["Divide_23876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23870"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23877", - "op" : "Slice", - "outputs" : ["Slice_23877"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23871", "Parameter_15741" ], - "name" : "Divide_23878", - "op" : "Divide", - "outputs" : ["Divide_23878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23873", "Parameter_15776" ], - "name" : "Divide_23879", - "op" : "Divide", - "outputs" : ["Divide_23879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23874"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23880", - "op" : "Slice", - "outputs" : ["Slice_23880"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23875", "Parameter_15784" ], - "name" : "Divide_23881", - "op" : "Divide", - "outputs" : ["Divide_23881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23876", "Parameter_15734" ], - "name" : "Multiply_23882", - "op" : "Multiply", - "outputs" : ["Multiply_23882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23878", "Parameter_15742" ], - "name" : "Multiply_23883", - "op" : "Multiply", - "outputs" : ["Multiply_23883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23879", "Parameter_15777" ], - "name" : "Multiply_23884", - "op" : "Multiply", - "outputs" : ["Multiply_23884"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23881", "Parameter_15785" ], - "name" : "Multiply_23885", - "op" : "Multiply", - "outputs" : ["Multiply_23885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23882"], - "name" : "Negative_23886", - "op" : "Negative", - "outputs" : ["Negative_23886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23883"], - "name" : "Negative_23887", - "op" : "Negative", - "outputs" : ["Negative_23887"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23884"], - "name" : "Negative_23888", - "op" : "Negative", - "outputs" : ["Negative_23888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23885"], - "name" : "Negative_23889", - "op" : "Negative", - "outputs" : ["Negative_23889"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23877", "Negative_23886" ], - "name" : "Add_23890", - "op" : "Add", - "outputs" : ["Add_23890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23880", "Negative_23888" ], - "name" : "Add_23891", - "op" : "Add", - "outputs" : ["Add_23891"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23870", "Add_23890" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23892", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23892"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23874", "Add_23891" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_23893", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23893"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23892"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23894", - "op" : "Slice", - "outputs" : ["Slice_23894"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23893"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_23895", - "op" : "Slice", - "outputs" : ["Slice_23895"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23894", "Negative_23887" ], - "name" : "Add_23896", - "op" : "Add", - "outputs" : ["Add_23896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23895", "Negative_23889" ], - "name" : "Add_23897", - "op" : "Add", - "outputs" : ["Add_23897"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23892", "Add_23896" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23898", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23898"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23893", "Add_23897" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_23899", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23899"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23898"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23900", - "op" : "Slice", - "outputs" : ["Slice_23900"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23899"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_23901", - "op" : "Slice", - "outputs" : ["Slice_23901"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23900", "Negative_23868" ], - "name" : "Add_23902", - "op" : "Add", - "outputs" : ["Add_23902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23901", "Negative_23872" ], - "name" : "Add_23903", - "op" : "Add", - "outputs" : ["Add_23903"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23898", "Add_23902" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23904", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23904"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23899", "Add_23903" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_23905", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23905"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23904"], - "name" : "Sum_23906", - "op" : "Sum", - "outputs" : ["Sum_23906"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23904"], - "name" : "Reshape_23907", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23907"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19056", "ReplaceSlice_23904" ], - "name" : "Dot_23908", - "op" : "Dot", - "outputs" : ["Dot_23908"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23904"], - "name" : "Sum_23909", - "op" : "Sum", - "outputs" : ["Sum_23909"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23904"], - "name" : "Reshape_23910", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23910"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19058", "ReplaceSlice_23904" ], - "name" : "Dot_23911", - "op" : "Dot", - "outputs" : ["Dot_23911"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23905"], - "name" : "Sum_23912", - "op" : "Sum", - "outputs" : ["Sum_23912"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23905"], - "name" : "Reshape_23913", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23913"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19057", "ReplaceSlice_23905" ], - "name" : "Dot_23914", - "op" : "Dot", - "outputs" : ["Dot_23914"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_23905"], - "name" : "Sum_23915", - "op" : "Sum", - "outputs" : ["Sum_23915"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_23905"], - "name" : "Reshape_23916", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_23916"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18682", "ReplaceSlice_23905" ], - "name" : "Dot_23917", - "op" : "Dot", - "outputs" : ["Dot_23917"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23808", "Sum_23906" ], - "name" : "Add_23918", - "op" : "Add", - "outputs" : ["Add_23918"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14236", "Reshape_23907" ], - "name" : "Dot_23919", - "op" : "Dot", - "outputs" : ["Dot_23919"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23908"], - "name" : "Reshape_23920", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23920"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23811", "Sum_23909" ], - "name" : "Add_23921", - "op" : "Add", - "outputs" : ["Add_23921"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15692", "Reshape_23910" ], - "name" : "Dot_23922", - "op" : "Dot", - "outputs" : ["Dot_23922"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23911"], - "name" : "Reshape_23923", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23923"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23814", "Sum_23912" ], - "name" : "Add_23924", - "op" : "Add", - "outputs" : ["Add_23924"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15768", "Reshape_23913" ], - "name" : "Dot_23925", - "op" : "Dot", - "outputs" : ["Dot_23925"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23914"], - "name" : "Reshape_23926", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23926"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23817", "Sum_23915" ], - "name" : "Add_23927", - "op" : "Add", - "outputs" : ["Add_23927"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15772", "Reshape_23916" ], - "name" : "Dot_23928", - "op" : "Dot", - "outputs" : ["Dot_23928"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_23917"], - "name" : "Reshape_23929", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_23929"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23919"], - "name" : "Reshape_23930", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23930"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23920"], - "name" : "Reshape_23931", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23931"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23922"], - "name" : "Reshape_23932", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23932"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23923"], - "name" : "Reshape_23933", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23933"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23925"], - "name" : "Reshape_23934", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23934"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23926"], - "name" : "Reshape_23935", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23935"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_23928"], - "name" : "Reshape_23936", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_23936"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_23929"], - "name" : "Reshape_23937", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_23937"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23930", "Reshape_18802" ], - "name" : "Add_23938", - "op" : "Add", - "outputs" : ["Add_23938"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23829", "Reshape_23931" ], - "name" : "Add_23939", - "op" : "Add", - "outputs" : ["Add_23939"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23830", "Reshape_23933" ], - "name" : "Add_23940", - "op" : "Add", - "outputs" : ["Add_23940"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_23934", "Reshape_23932" ], - "name" : "Add_23941", - "op" : "Add", - "outputs" : ["Add_23941"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23832", "Reshape_23935" ], - "name" : "Add_23942", - "op" : "Add", - "outputs" : ["Add_23942"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_23936"], - "name" : "Reshape_23943", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_23943"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23834", "Reshape_23937" ], - "name" : "Add_23944", - "op" : "Add", - "outputs" : ["Add_23944"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23938", "Parameter_14238" ], - "name" : "Multiply_23945", - "op" : "Multiply", - "outputs" : ["Multiply_23945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15682", "Add_23938" ], - "name" : "Multiply_23946", - "op" : "Multiply", - "outputs" : ["Multiply_23946"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23941", "Parameter_15694" ], - "name" : "Multiply_23947", - "op" : "Multiply", - "outputs" : ["Multiply_23947"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15725", "Add_23941" ], - "name" : "Multiply_23948", - "op" : "Multiply", - "outputs" : ["Multiply_23948"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23849", "Reshape_23943" ], - "name" : "Add_23949", - "op" : "Add", - "outputs" : ["Add_23949"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_23945"], - "name" : "Negative_23950", - "op" : "Negative", - "outputs" : ["Negative_23950"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23946", "Multiply_19054" ], - "name" : "Divide_23951", - "op" : "Divide", - "outputs" : ["Divide_23951"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23947"], - "name" : "Negative_23952", - "op" : "Negative", - "outputs" : ["Negative_23952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23948", "Multiply_19055" ], - "name" : "Divide_23953", - "op" : "Divide", - "outputs" : ["Divide_23953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23844", "Add_23949" ], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "ReplaceSlice_23954", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23954"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 21, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_23950", "Parameter_15682" ], - "name" : "Multiply_23955", - "op" : "Multiply", - "outputs" : ["Multiply_23955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23854", "Divide_23951" ], - "name" : "Add_23956", - "op" : "Add", - "outputs" : ["Add_23956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23952", "Parameter_15725" ], - "name" : "Multiply_23957", - "op" : "Multiply", - "outputs" : ["Multiply_23957"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23859", "Divide_23953" ], - "name" : "Add_23958", - "op" : "Add", - "outputs" : ["Add_23958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23954"], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "Slice_23959", - "op" : "Slice", - "outputs" : ["Slice_23959"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 20, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_23955", "Parameter_15683" ], - "name" : "Divide_23960", - "op" : "Divide", - "outputs" : ["Divide_23960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23956", "Parameter_14241" ], - "name" : "Multiply_23961", - "op" : "Multiply", - "outputs" : ["Multiply_23961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15667", "Add_23956" ], - "name" : "Multiply_23962", - "op" : "Multiply", - "outputs" : ["Multiply_23962"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23956", "Parameter_14250" ], - "name" : "Multiply_23963", - "op" : "Multiply", - "outputs" : ["Multiply_23963"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15675", "Add_23956" ], - "name" : "Multiply_23964", - "op" : "Multiply", - "outputs" : ["Multiply_23964"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23957", "Parameter_15726" ], - "name" : "Divide_23965", - "op" : "Divide", - "outputs" : ["Divide_23965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23958", "Parameter_15697" ], - "name" : "Multiply_23966", - "op" : "Multiply", - "outputs" : ["Multiply_23966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15710", "Add_23958" ], - "name" : "Multiply_23967", - "op" : "Multiply", - "outputs" : ["Multiply_23967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23958", "Parameter_15630" ], - "name" : "Multiply_23968", - "op" : "Multiply", - "outputs" : ["Multiply_23968"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15718", "Add_23958" ], - "name" : "Multiply_23969", - "op" : "Multiply", - "outputs" : ["Multiply_23969"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23960", "Parameter_15684" ], - "name" : "Multiply_23970", - "op" : "Multiply", - "outputs" : ["Multiply_23970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23961"], - "name" : "Negative_23971", - "op" : "Negative", - "outputs" : ["Negative_23971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23962", "Multiply_19050" ], - "name" : "Divide_23972", - "op" : "Divide", - "outputs" : ["Divide_23972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23963"], - "name" : "Negative_23973", - "op" : "Negative", - "outputs" : ["Negative_23973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23965", "Parameter_15727" ], - "name" : "Multiply_23974", - "op" : "Multiply", - "outputs" : ["Multiply_23974"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23966"], - "name" : "Negative_23975", - "op" : "Negative", - "outputs" : ["Negative_23975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23967", "Multiply_19051" ], - "name" : "Divide_23976", - "op" : "Divide", - "outputs" : ["Divide_23976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23968"], - "name" : "Negative_23977", - "op" : "Negative", - "outputs" : ["Negative_23977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23970"], - "name" : "Negative_23978", - "op" : "Negative", - "outputs" : ["Negative_23978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23971", "Parameter_15667" ], - "name" : "Multiply_23979", - "op" : "Multiply", - "outputs" : ["Multiply_23979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18579", "Divide_23972" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23980", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23980"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23973", "Parameter_15675" ], - "name" : "Multiply_23981", - "op" : "Multiply", - "outputs" : ["Multiply_23981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23974"], - "name" : "Negative_23982", - "op" : "Negative", - "outputs" : ["Negative_23982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_23975", "Parameter_15710" ], - "name" : "Multiply_23983", - "op" : "Multiply", - "outputs" : ["Multiply_23983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18638", "Divide_23976" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_23984", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_23984"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_23977", "Parameter_15718" ], - "name" : "Multiply_23985", - "op" : "Multiply", - "outputs" : ["Multiply_23985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23979", "Parameter_15668" ], - "name" : "Divide_23986", - "op" : "Divide", - "outputs" : ["Divide_23986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23980"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23987", - "op" : "Slice", - "outputs" : ["Slice_23987"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23981", "Parameter_15676" ], - "name" : "Divide_23988", - "op" : "Divide", - "outputs" : ["Divide_23988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23983", "Parameter_15711" ], - "name" : "Divide_23989", - "op" : "Divide", - "outputs" : ["Divide_23989"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_23984"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_23990", - "op" : "Slice", - "outputs" : ["Slice_23990"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23985", "Parameter_15719" ], - "name" : "Divide_23991", - "op" : "Divide", - "outputs" : ["Divide_23991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23986", "Parameter_15669" ], - "name" : "Multiply_23992", - "op" : "Multiply", - "outputs" : ["Multiply_23992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23988", "Parameter_15677" ], - "name" : "Multiply_23993", - "op" : "Multiply", - "outputs" : ["Multiply_23993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23989", "Parameter_15712" ], - "name" : "Multiply_23994", - "op" : "Multiply", - "outputs" : ["Multiply_23994"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_23991", "Parameter_15720" ], - "name" : "Multiply_23995", - "op" : "Multiply", - "outputs" : ["Multiply_23995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23992"], - "name" : "Negative_23996", - "op" : "Negative", - "outputs" : ["Negative_23996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23993"], - "name" : "Negative_23997", - "op" : "Negative", - "outputs" : ["Negative_23997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23994"], - "name" : "Negative_23998", - "op" : "Negative", - "outputs" : ["Negative_23998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_23995"], - "name" : "Negative_23999", - "op" : "Negative", - "outputs" : ["Negative_23999"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23987", "Negative_23996" ], - "name" : "Add_24000", - "op" : "Add", - "outputs" : ["Add_24000"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23990", "Negative_23998" ], - "name" : "Add_24001", - "op" : "Add", - "outputs" : ["Add_24001"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23980", "Add_24000" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24002", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24002"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_23984", "Add_24001" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24003", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24003"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24002"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24004", - "op" : "Slice", - "outputs" : ["Slice_24004"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24003"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24005", - "op" : "Slice", - "outputs" : ["Slice_24005"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24004", "Negative_23997" ], - "name" : "Add_24006", - "op" : "Add", - "outputs" : ["Add_24006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24005", "Negative_23999" ], - "name" : "Add_24007", - "op" : "Add", - "outputs" : ["Add_24007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24002", "Add_24006" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24008", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24008"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24003", "Add_24007" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24009", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24009"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24008"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24010", - "op" : "Slice", - "outputs" : ["Slice_24010"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24009"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24011", - "op" : "Slice", - "outputs" : ["Slice_24011"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24010", "Negative_23978" ], - "name" : "Add_24012", - "op" : "Add", - "outputs" : ["Add_24012"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24011", "Negative_23982" ], - "name" : "Add_24013", - "op" : "Add", - "outputs" : ["Add_24013"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24008", "Add_24012" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24014", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24014"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24009", "Add_24013" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24015", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24015"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24014"], - "name" : "Sum_24016", - "op" : "Sum", - "outputs" : ["Sum_24016"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24014"], - "name" : "Reshape_24017", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24017"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19045", "ReplaceSlice_24014" ], - "name" : "Dot_24018", - "op" : "Dot", - "outputs" : ["Dot_24018"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24014"], - "name" : "Sum_24019", - "op" : "Sum", - "outputs" : ["Sum_24019"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24014"], - "name" : "Reshape_24020", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24020"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19047", "ReplaceSlice_24014" ], - "name" : "Dot_24021", - "op" : "Dot", - "outputs" : ["Dot_24021"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24015"], - "name" : "Sum_24022", - "op" : "Sum", - "outputs" : ["Sum_24022"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24015"], - "name" : "Reshape_24023", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24023"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19046", "ReplaceSlice_24015" ], - "name" : "Dot_24024", - "op" : "Dot", - "outputs" : ["Dot_24024"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24015"], - "name" : "Sum_24025", - "op" : "Sum", - "outputs" : ["Sum_24025"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24015"], - "name" : "Reshape_24026", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24026"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18681", "ReplaceSlice_24015" ], - "name" : "Dot_24027", - "op" : "Dot", - "outputs" : ["Dot_24027"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23918", "Sum_24016" ], - "name" : "Add_24028", - "op" : "Add", - "outputs" : ["Add_24028"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14247", "Reshape_24017" ], - "name" : "Dot_24029", - "op" : "Dot", - "outputs" : ["Dot_24029"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24018"], - "name" : "Reshape_24030", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24030"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23921", "Sum_24019" ], - "name" : "Add_24031", - "op" : "Add", - "outputs" : ["Add_24031"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15627", "Reshape_24020" ], - "name" : "Dot_24032", - "op" : "Dot", - "outputs" : ["Dot_24032"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24021"], - "name" : "Reshape_24033", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24033"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23924", "Sum_24022" ], - "name" : "Add_24034", - "op" : "Add", - "outputs" : ["Add_24034"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15703", "Reshape_24023" ], - "name" : "Dot_24035", - "op" : "Dot", - "outputs" : ["Dot_24035"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24024"], - "name" : "Reshape_24036", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24036"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_23927", "Sum_24025" ], - "name" : "Add_24037", - "op" : "Add", - "outputs" : ["Add_24037"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15707", "Reshape_24026" ], - "name" : "Dot_24038", - "op" : "Dot", - "outputs" : ["Dot_24038"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24027"], - "name" : "Reshape_24039", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24039"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24029"], - "name" : "Reshape_24040", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24030"], - "name" : "Reshape_24041", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24041"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24032"], - "name" : "Reshape_24042", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24033"], - "name" : "Reshape_24043", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24043"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24035"], - "name" : "Reshape_24044", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24044"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24036"], - "name" : "Reshape_24045", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24045"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24038"], - "name" : "Reshape_24046", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24046"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24039"], - "name" : "Reshape_24047", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24047"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24040", "Reshape_18801" ], - "name" : "Add_24048", - "op" : "Add", - "outputs" : ["Add_24048"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23939", "Reshape_24041" ], - "name" : "Add_24049", - "op" : "Add", - "outputs" : ["Add_24049"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_23940", "Reshape_24043" ], - "name" : "Add_24050", - "op" : "Add", - "outputs" : ["Add_24050"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24044", "Reshape_24042" ], - "name" : "Add_24051", - "op" : "Add", - "outputs" : ["Add_24051"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_23942", "Reshape_24045" ], - "name" : "Add_24052", - "op" : "Add", - "outputs" : ["Add_24052"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24046"], - "name" : "Reshape_24053", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_23944", "Reshape_24047" ], - "name" : "Add_24054", - "op" : "Add", - "outputs" : ["Add_24054"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24048", "Parameter_14249" ], - "name" : "Multiply_24055", - "op" : "Multiply", - "outputs" : ["Multiply_24055"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15617", "Add_24048" ], - "name" : "Multiply_24056", - "op" : "Multiply", - "outputs" : ["Multiply_24056"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24051", "Parameter_15629" ], - "name" : "Multiply_24057", - "op" : "Multiply", - "outputs" : ["Multiply_24057"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15660", "Add_24051" ], - "name" : "Multiply_24058", - "op" : "Multiply", - "outputs" : ["Multiply_24058"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_23959", "Reshape_24053" ], - "name" : "Add_24059", - "op" : "Add", - "outputs" : ["Add_24059"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24055"], - "name" : "Negative_24060", - "op" : "Negative", - "outputs" : ["Negative_24060"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24056", "Multiply_19043" ], - "name" : "Divide_24061", - "op" : "Divide", - "outputs" : ["Divide_24061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24057"], - "name" : "Negative_24062", - "op" : "Negative", - "outputs" : ["Negative_24062"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24058", "Multiply_19044" ], - "name" : "Divide_24063", - "op" : "Divide", - "outputs" : ["Divide_24063"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_23954", "Add_24059" ], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "ReplaceSlice_24064", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24064"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 20, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24060", "Parameter_15617" ], - "name" : "Multiply_24065", - "op" : "Multiply", - "outputs" : ["Multiply_24065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23964", "Divide_24061" ], - "name" : "Add_24066", - "op" : "Add", - "outputs" : ["Add_24066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24062", "Parameter_15660" ], - "name" : "Multiply_24067", - "op" : "Multiply", - "outputs" : ["Multiply_24067"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_23969", "Divide_24063" ], - "name" : "Add_24068", - "op" : "Add", - "outputs" : ["Add_24068"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24064"], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "Slice_24069", - "op" : "Slice", - "outputs" : ["Slice_24069"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 19, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24065", "Parameter_15618" ], - "name" : "Divide_24070", - "op" : "Divide", - "outputs" : ["Divide_24070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24066", "Parameter_14252" ], - "name" : "Multiply_24071", - "op" : "Multiply", - "outputs" : ["Multiply_24071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15602", "Add_24066" ], - "name" : "Multiply_24072", - "op" : "Multiply", - "outputs" : ["Multiply_24072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24066", "Parameter_14261" ], - "name" : "Multiply_24073", - "op" : "Multiply", - "outputs" : ["Multiply_24073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15610", "Add_24066" ], - "name" : "Multiply_24074", - "op" : "Multiply", - "outputs" : ["Multiply_24074"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24067", "Parameter_15661" ], - "name" : "Divide_24075", - "op" : "Divide", - "outputs" : ["Divide_24075"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24068", "Parameter_15632" ], - "name" : "Multiply_24076", - "op" : "Multiply", - "outputs" : ["Multiply_24076"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15645", "Add_24068" ], - "name" : "Multiply_24077", - "op" : "Multiply", - "outputs" : ["Multiply_24077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24068", "Parameter_15565" ], - "name" : "Multiply_24078", - "op" : "Multiply", - "outputs" : ["Multiply_24078"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15653", "Add_24068" ], - "name" : "Multiply_24079", - "op" : "Multiply", - "outputs" : ["Multiply_24079"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24070", "Parameter_15619" ], - "name" : "Multiply_24080", - "op" : "Multiply", - "outputs" : ["Multiply_24080"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24071"], - "name" : "Negative_24081", - "op" : "Negative", - "outputs" : ["Negative_24081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24072", "Multiply_19039" ], - "name" : "Divide_24082", - "op" : "Divide", - "outputs" : ["Divide_24082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24073"], - "name" : "Negative_24083", - "op" : "Negative", - "outputs" : ["Negative_24083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24075", "Parameter_15662" ], - "name" : "Multiply_24084", - "op" : "Multiply", - "outputs" : ["Multiply_24084"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24076"], - "name" : "Negative_24085", - "op" : "Negative", - "outputs" : ["Negative_24085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24077", "Multiply_19040" ], - "name" : "Divide_24086", - "op" : "Divide", - "outputs" : ["Divide_24086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24078"], - "name" : "Negative_24087", - "op" : "Negative", - "outputs" : ["Negative_24087"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24080"], - "name" : "Negative_24088", - "op" : "Negative", - "outputs" : ["Negative_24088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24081", "Parameter_15602" ], - "name" : "Multiply_24089", - "op" : "Multiply", - "outputs" : ["Multiply_24089"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18580", "Divide_24082" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24090", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24090"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24083", "Parameter_15610" ], - "name" : "Multiply_24091", - "op" : "Multiply", - "outputs" : ["Multiply_24091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24084"], - "name" : "Negative_24092", - "op" : "Negative", - "outputs" : ["Negative_24092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24085", "Parameter_15645" ], - "name" : "Multiply_24093", - "op" : "Multiply", - "outputs" : ["Multiply_24093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18639", "Divide_24086" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24094", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24094"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24087", "Parameter_15653" ], - "name" : "Multiply_24095", - "op" : "Multiply", - "outputs" : ["Multiply_24095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24089", "Parameter_15603" ], - "name" : "Divide_24096", - "op" : "Divide", - "outputs" : ["Divide_24096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24090"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24097", - "op" : "Slice", - "outputs" : ["Slice_24097"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24091", "Parameter_15611" ], - "name" : "Divide_24098", - "op" : "Divide", - "outputs" : ["Divide_24098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24093", "Parameter_15646" ], - "name" : "Divide_24099", - "op" : "Divide", - "outputs" : ["Divide_24099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24094"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24100", - "op" : "Slice", - "outputs" : ["Slice_24100"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24095", "Parameter_15654" ], - "name" : "Divide_24101", - "op" : "Divide", - "outputs" : ["Divide_24101"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24096", "Parameter_15604" ], - "name" : "Multiply_24102", - "op" : "Multiply", - "outputs" : ["Multiply_24102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24098", "Parameter_15612" ], - "name" : "Multiply_24103", - "op" : "Multiply", - "outputs" : ["Multiply_24103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24099", "Parameter_15647" ], - "name" : "Multiply_24104", - "op" : "Multiply", - "outputs" : ["Multiply_24104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24101", "Parameter_15655" ], - "name" : "Multiply_24105", - "op" : "Multiply", - "outputs" : ["Multiply_24105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24102"], - "name" : "Negative_24106", - "op" : "Negative", - "outputs" : ["Negative_24106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24103"], - "name" : "Negative_24107", - "op" : "Negative", - "outputs" : ["Negative_24107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24104"], - "name" : "Negative_24108", - "op" : "Negative", - "outputs" : ["Negative_24108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24105"], - "name" : "Negative_24109", - "op" : "Negative", - "outputs" : ["Negative_24109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24097", "Negative_24106" ], - "name" : "Add_24110", - "op" : "Add", - "outputs" : ["Add_24110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24100", "Negative_24108" ], - "name" : "Add_24111", - "op" : "Add", - "outputs" : ["Add_24111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24090", "Add_24110" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24112", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24112"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24094", "Add_24111" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24113", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24113"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24112"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24114", - "op" : "Slice", - "outputs" : ["Slice_24114"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24113"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24115", - "op" : "Slice", - "outputs" : ["Slice_24115"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24114", "Negative_24107" ], - "name" : "Add_24116", - "op" : "Add", - "outputs" : ["Add_24116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24115", "Negative_24109" ], - "name" : "Add_24117", - "op" : "Add", - "outputs" : ["Add_24117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24112", "Add_24116" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24118", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24118"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24113", "Add_24117" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24119", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24119"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24118"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24120", - "op" : "Slice", - "outputs" : ["Slice_24120"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24119"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24121", - "op" : "Slice", - "outputs" : ["Slice_24121"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24120", "Negative_24088" ], - "name" : "Add_24122", - "op" : "Add", - "outputs" : ["Add_24122"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24121", "Negative_24092" ], - "name" : "Add_24123", - "op" : "Add", - "outputs" : ["Add_24123"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24118", "Add_24122" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24124", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24124"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24119", "Add_24123" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24125", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24125"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24124"], - "name" : "Sum_24126", - "op" : "Sum", - "outputs" : ["Sum_24126"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24124"], - "name" : "Reshape_24127", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24127"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19034", "ReplaceSlice_24124" ], - "name" : "Dot_24128", - "op" : "Dot", - "outputs" : ["Dot_24128"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24124"], - "name" : "Sum_24129", - "op" : "Sum", - "outputs" : ["Sum_24129"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24124"], - "name" : "Reshape_24130", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24130"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19036", "ReplaceSlice_24124" ], - "name" : "Dot_24131", - "op" : "Dot", - "outputs" : ["Dot_24131"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24125"], - "name" : "Sum_24132", - "op" : "Sum", - "outputs" : ["Sum_24132"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24125"], - "name" : "Reshape_24133", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24133"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19035", "ReplaceSlice_24125" ], - "name" : "Dot_24134", - "op" : "Dot", - "outputs" : ["Dot_24134"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24125"], - "name" : "Sum_24135", - "op" : "Sum", - "outputs" : ["Sum_24135"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24125"], - "name" : "Reshape_24136", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24136"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18680", "ReplaceSlice_24125" ], - "name" : "Dot_24137", - "op" : "Dot", - "outputs" : ["Dot_24137"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24028", "Sum_24126" ], - "name" : "Add_24138", - "op" : "Add", - "outputs" : ["Add_24138"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14258", "Reshape_24127" ], - "name" : "Dot_24139", - "op" : "Dot", - "outputs" : ["Dot_24139"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24128"], - "name" : "Reshape_24140", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24140"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24031", "Sum_24129" ], - "name" : "Add_24141", - "op" : "Add", - "outputs" : ["Add_24141"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15562", "Reshape_24130" ], - "name" : "Dot_24142", - "op" : "Dot", - "outputs" : ["Dot_24142"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24131"], - "name" : "Reshape_24143", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24143"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24034", "Sum_24132" ], - "name" : "Add_24144", - "op" : "Add", - "outputs" : ["Add_24144"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15638", "Reshape_24133" ], - "name" : "Dot_24145", - "op" : "Dot", - "outputs" : ["Dot_24145"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24134"], - "name" : "Reshape_24146", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24146"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24037", "Sum_24135" ], - "name" : "Add_24147", - "op" : "Add", - "outputs" : ["Add_24147"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15642", "Reshape_24136" ], - "name" : "Dot_24148", - "op" : "Dot", - "outputs" : ["Dot_24148"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24137"], - "name" : "Reshape_24149", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24149"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24139"], - "name" : "Reshape_24150", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24150"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24140"], - "name" : "Reshape_24151", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24151"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24142"], - "name" : "Reshape_24152", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24152"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24143"], - "name" : "Reshape_24153", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24153"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24145"], - "name" : "Reshape_24154", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24154"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24146"], - "name" : "Reshape_24155", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24155"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24148"], - "name" : "Reshape_24156", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24156"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24149"], - "name" : "Reshape_24157", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24157"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24150", "Reshape_18800" ], - "name" : "Add_24158", - "op" : "Add", - "outputs" : ["Add_24158"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24049", "Reshape_24151" ], - "name" : "Add_24159", - "op" : "Add", - "outputs" : ["Add_24159"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24050", "Reshape_24153" ], - "name" : "Add_24160", - "op" : "Add", - "outputs" : ["Add_24160"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24154", "Reshape_24152" ], - "name" : "Add_24161", - "op" : "Add", - "outputs" : ["Add_24161"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24052", "Reshape_24155" ], - "name" : "Add_24162", - "op" : "Add", - "outputs" : ["Add_24162"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24156"], - "name" : "Reshape_24163", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24163"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24054", "Reshape_24157" ], - "name" : "Add_24164", - "op" : "Add", - "outputs" : ["Add_24164"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24158", "Parameter_14260" ], - "name" : "Multiply_24165", - "op" : "Multiply", - "outputs" : ["Multiply_24165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15552", "Add_24158" ], - "name" : "Multiply_24166", - "op" : "Multiply", - "outputs" : ["Multiply_24166"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24161", "Parameter_15564" ], - "name" : "Multiply_24167", - "op" : "Multiply", - "outputs" : ["Multiply_24167"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15595", "Add_24161" ], - "name" : "Multiply_24168", - "op" : "Multiply", - "outputs" : ["Multiply_24168"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24069", "Reshape_24163" ], - "name" : "Add_24169", - "op" : "Add", - "outputs" : ["Add_24169"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24165"], - "name" : "Negative_24170", - "op" : "Negative", - "outputs" : ["Negative_24170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24166", "Multiply_19032" ], - "name" : "Divide_24171", - "op" : "Divide", - "outputs" : ["Divide_24171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24167"], - "name" : "Negative_24172", - "op" : "Negative", - "outputs" : ["Negative_24172"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24168", "Multiply_19033" ], - "name" : "Divide_24173", - "op" : "Divide", - "outputs" : ["Divide_24173"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24064", "Add_24169" ], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "ReplaceSlice_24174", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24174"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 19, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24170", "Parameter_15552" ], - "name" : "Multiply_24175", - "op" : "Multiply", - "outputs" : ["Multiply_24175"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24074", "Divide_24171" ], - "name" : "Add_24176", - "op" : "Add", - "outputs" : ["Add_24176"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24172", "Parameter_15595" ], - "name" : "Multiply_24177", - "op" : "Multiply", - "outputs" : ["Multiply_24177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24079", "Divide_24173" ], - "name" : "Add_24178", - "op" : "Add", - "outputs" : ["Add_24178"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24174"], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "Slice_24179", - "op" : "Slice", - "outputs" : ["Slice_24179"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 18, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24175", "Parameter_15553" ], - "name" : "Divide_24180", - "op" : "Divide", - "outputs" : ["Divide_24180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24176", "Parameter_14263" ], - "name" : "Multiply_24181", - "op" : "Multiply", - "outputs" : ["Multiply_24181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15537", "Add_24176" ], - "name" : "Multiply_24182", - "op" : "Multiply", - "outputs" : ["Multiply_24182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24176", "Parameter_14272" ], - "name" : "Multiply_24183", - "op" : "Multiply", - "outputs" : ["Multiply_24183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15545", "Add_24176" ], - "name" : "Multiply_24184", - "op" : "Multiply", - "outputs" : ["Multiply_24184"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24177", "Parameter_15596" ], - "name" : "Divide_24185", - "op" : "Divide", - "outputs" : ["Divide_24185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24178", "Parameter_15567" ], - "name" : "Multiply_24186", - "op" : "Multiply", - "outputs" : ["Multiply_24186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15580", "Add_24178" ], - "name" : "Multiply_24187", - "op" : "Multiply", - "outputs" : ["Multiply_24187"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24178", "Parameter_15500" ], - "name" : "Multiply_24188", - "op" : "Multiply", - "outputs" : ["Multiply_24188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15588", "Add_24178" ], - "name" : "Multiply_24189", - "op" : "Multiply", - "outputs" : ["Multiply_24189"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24180", "Parameter_15554" ], - "name" : "Multiply_24190", - "op" : "Multiply", - "outputs" : ["Multiply_24190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24181"], - "name" : "Negative_24191", - "op" : "Negative", - "outputs" : ["Negative_24191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24182", "Multiply_19028" ], - "name" : "Divide_24192", - "op" : "Divide", - "outputs" : ["Divide_24192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24183"], - "name" : "Negative_24193", - "op" : "Negative", - "outputs" : ["Negative_24193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24185", "Parameter_15597" ], - "name" : "Multiply_24194", - "op" : "Multiply", - "outputs" : ["Multiply_24194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24186"], - "name" : "Negative_24195", - "op" : "Negative", - "outputs" : ["Negative_24195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24187", "Multiply_19029" ], - "name" : "Divide_24196", - "op" : "Divide", - "outputs" : ["Divide_24196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24188"], - "name" : "Negative_24197", - "op" : "Negative", - "outputs" : ["Negative_24197"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24190"], - "name" : "Negative_24198", - "op" : "Negative", - "outputs" : ["Negative_24198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24191", "Parameter_15537" ], - "name" : "Multiply_24199", - "op" : "Multiply", - "outputs" : ["Multiply_24199"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18581", "Divide_24192" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24200", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24200"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24193", "Parameter_15545" ], - "name" : "Multiply_24201", - "op" : "Multiply", - "outputs" : ["Multiply_24201"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24194"], - "name" : "Negative_24202", - "op" : "Negative", - "outputs" : ["Negative_24202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24195", "Parameter_15580" ], - "name" : "Multiply_24203", - "op" : "Multiply", - "outputs" : ["Multiply_24203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18640", "Divide_24196" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24204", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24204"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24197", "Parameter_15588" ], - "name" : "Multiply_24205", - "op" : "Multiply", - "outputs" : ["Multiply_24205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24199", "Parameter_15538" ], - "name" : "Divide_24206", - "op" : "Divide", - "outputs" : ["Divide_24206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24200"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24207", - "op" : "Slice", - "outputs" : ["Slice_24207"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24201", "Parameter_15546" ], - "name" : "Divide_24208", - "op" : "Divide", - "outputs" : ["Divide_24208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24203", "Parameter_15581" ], - "name" : "Divide_24209", - "op" : "Divide", - "outputs" : ["Divide_24209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24204"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24210", - "op" : "Slice", - "outputs" : ["Slice_24210"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24205", "Parameter_15589" ], - "name" : "Divide_24211", - "op" : "Divide", - "outputs" : ["Divide_24211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24206", "Parameter_15539" ], - "name" : "Multiply_24212", - "op" : "Multiply", - "outputs" : ["Multiply_24212"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24208", "Parameter_15547" ], - "name" : "Multiply_24213", - "op" : "Multiply", - "outputs" : ["Multiply_24213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24209", "Parameter_15582" ], - "name" : "Multiply_24214", - "op" : "Multiply", - "outputs" : ["Multiply_24214"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24211", "Parameter_15590" ], - "name" : "Multiply_24215", - "op" : "Multiply", - "outputs" : ["Multiply_24215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24212"], - "name" : "Negative_24216", - "op" : "Negative", - "outputs" : ["Negative_24216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24213"], - "name" : "Negative_24217", - "op" : "Negative", - "outputs" : ["Negative_24217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24214"], - "name" : "Negative_24218", - "op" : "Negative", - "outputs" : ["Negative_24218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24215"], - "name" : "Negative_24219", - "op" : "Negative", - "outputs" : ["Negative_24219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24207", "Negative_24216" ], - "name" : "Add_24220", - "op" : "Add", - "outputs" : ["Add_24220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24210", "Negative_24218" ], - "name" : "Add_24221", - "op" : "Add", - "outputs" : ["Add_24221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24200", "Add_24220" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24222", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24222"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24204", "Add_24221" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24223", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24223"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24222"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24224", - "op" : "Slice", - "outputs" : ["Slice_24224"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24223"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24225", - "op" : "Slice", - "outputs" : ["Slice_24225"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24224", "Negative_24217" ], - "name" : "Add_24226", - "op" : "Add", - "outputs" : ["Add_24226"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24225", "Negative_24219" ], - "name" : "Add_24227", - "op" : "Add", - "outputs" : ["Add_24227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24222", "Add_24226" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24228", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24228"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24223", "Add_24227" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24229", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24229"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24228"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24230", - "op" : "Slice", - "outputs" : ["Slice_24230"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24229"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24231", - "op" : "Slice", - "outputs" : ["Slice_24231"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24230", "Negative_24198" ], - "name" : "Add_24232", - "op" : "Add", - "outputs" : ["Add_24232"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24231", "Negative_24202" ], - "name" : "Add_24233", - "op" : "Add", - "outputs" : ["Add_24233"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24228", "Add_24232" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24234", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24234"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24229", "Add_24233" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24235", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24235"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24234"], - "name" : "Sum_24236", - "op" : "Sum", - "outputs" : ["Sum_24236"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24234"], - "name" : "Reshape_24237", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24237"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19023", "ReplaceSlice_24234" ], - "name" : "Dot_24238", - "op" : "Dot", - "outputs" : ["Dot_24238"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24234"], - "name" : "Sum_24239", - "op" : "Sum", - "outputs" : ["Sum_24239"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24234"], - "name" : "Reshape_24240", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24240"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19025", "ReplaceSlice_24234" ], - "name" : "Dot_24241", - "op" : "Dot", - "outputs" : ["Dot_24241"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24235"], - "name" : "Sum_24242", - "op" : "Sum", - "outputs" : ["Sum_24242"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24235"], - "name" : "Reshape_24243", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24243"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19024", "ReplaceSlice_24235" ], - "name" : "Dot_24244", - "op" : "Dot", - "outputs" : ["Dot_24244"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24235"], - "name" : "Sum_24245", - "op" : "Sum", - "outputs" : ["Sum_24245"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24235"], - "name" : "Reshape_24246", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24246"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18679", "ReplaceSlice_24235" ], - "name" : "Dot_24247", - "op" : "Dot", - "outputs" : ["Dot_24247"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24138", "Sum_24236" ], - "name" : "Add_24248", - "op" : "Add", - "outputs" : ["Add_24248"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14269", "Reshape_24237" ], - "name" : "Dot_24249", - "op" : "Dot", - "outputs" : ["Dot_24249"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24238"], - "name" : "Reshape_24250", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24250"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24141", "Sum_24239" ], - "name" : "Add_24251", - "op" : "Add", - "outputs" : ["Add_24251"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15497", "Reshape_24240" ], - "name" : "Dot_24252", - "op" : "Dot", - "outputs" : ["Dot_24252"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24241"], - "name" : "Reshape_24253", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24253"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24144", "Sum_24242" ], - "name" : "Add_24254", - "op" : "Add", - "outputs" : ["Add_24254"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15573", "Reshape_24243" ], - "name" : "Dot_24255", - "op" : "Dot", - "outputs" : ["Dot_24255"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24244"], - "name" : "Reshape_24256", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24256"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24147", "Sum_24245" ], - "name" : "Add_24257", - "op" : "Add", - "outputs" : ["Add_24257"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15577", "Reshape_24246" ], - "name" : "Dot_24258", - "op" : "Dot", - "outputs" : ["Dot_24258"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24247"], - "name" : "Reshape_24259", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24259"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24249"], - "name" : "Reshape_24260", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24260"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24250"], - "name" : "Reshape_24261", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24261"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24252"], - "name" : "Reshape_24262", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24262"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24253"], - "name" : "Reshape_24263", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24263"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24255"], - "name" : "Reshape_24264", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24264"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24256"], - "name" : "Reshape_24265", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24265"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24258"], - "name" : "Reshape_24266", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24266"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24259"], - "name" : "Reshape_24267", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24267"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24260", "Reshape_18799" ], - "name" : "Add_24268", - "op" : "Add", - "outputs" : ["Add_24268"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24159", "Reshape_24261" ], - "name" : "Add_24269", - "op" : "Add", - "outputs" : ["Add_24269"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24160", "Reshape_24263" ], - "name" : "Add_24270", - "op" : "Add", - "outputs" : ["Add_24270"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24264", "Reshape_24262" ], - "name" : "Add_24271", - "op" : "Add", - "outputs" : ["Add_24271"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24162", "Reshape_24265" ], - "name" : "Add_24272", - "op" : "Add", - "outputs" : ["Add_24272"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24266"], - "name" : "Reshape_24273", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24273"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24164", "Reshape_24267" ], - "name" : "Add_24274", - "op" : "Add", - "outputs" : ["Add_24274"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24268", "Parameter_14271" ], - "name" : "Multiply_24275", - "op" : "Multiply", - "outputs" : ["Multiply_24275"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15487", "Add_24268" ], - "name" : "Multiply_24276", - "op" : "Multiply", - "outputs" : ["Multiply_24276"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24271", "Parameter_15499" ], - "name" : "Multiply_24277", - "op" : "Multiply", - "outputs" : ["Multiply_24277"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15530", "Add_24271" ], - "name" : "Multiply_24278", - "op" : "Multiply", - "outputs" : ["Multiply_24278"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24179", "Reshape_24273" ], - "name" : "Add_24279", - "op" : "Add", - "outputs" : ["Add_24279"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24275"], - "name" : "Negative_24280", - "op" : "Negative", - "outputs" : ["Negative_24280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24276", "Multiply_19021" ], - "name" : "Divide_24281", - "op" : "Divide", - "outputs" : ["Divide_24281"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24277"], - "name" : "Negative_24282", - "op" : "Negative", - "outputs" : ["Negative_24282"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24278", "Multiply_19022" ], - "name" : "Divide_24283", - "op" : "Divide", - "outputs" : ["Divide_24283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24174", "Add_24279" ], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "ReplaceSlice_24284", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24284"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 18, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24280", "Parameter_15487" ], - "name" : "Multiply_24285", - "op" : "Multiply", - "outputs" : ["Multiply_24285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24184", "Divide_24281" ], - "name" : "Add_24286", - "op" : "Add", - "outputs" : ["Add_24286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24282", "Parameter_15530" ], - "name" : "Multiply_24287", - "op" : "Multiply", - "outputs" : ["Multiply_24287"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24189", "Divide_24283" ], - "name" : "Add_24288", - "op" : "Add", - "outputs" : ["Add_24288"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24284"], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "Slice_24289", - "op" : "Slice", - "outputs" : ["Slice_24289"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 17, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24285", "Parameter_15488" ], - "name" : "Divide_24290", - "op" : "Divide", - "outputs" : ["Divide_24290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24286", "Parameter_14274" ], - "name" : "Multiply_24291", - "op" : "Multiply", - "outputs" : ["Multiply_24291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15472", "Add_24286" ], - "name" : "Multiply_24292", - "op" : "Multiply", - "outputs" : ["Multiply_24292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24286", "Parameter_14283" ], - "name" : "Multiply_24293", - "op" : "Multiply", - "outputs" : ["Multiply_24293"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15480", "Add_24286" ], - "name" : "Multiply_24294", - "op" : "Multiply", - "outputs" : ["Multiply_24294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24287", "Parameter_15531" ], - "name" : "Divide_24295", - "op" : "Divide", - "outputs" : ["Divide_24295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24288", "Parameter_15502" ], - "name" : "Multiply_24296", - "op" : "Multiply", - "outputs" : ["Multiply_24296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15515", "Add_24288" ], - "name" : "Multiply_24297", - "op" : "Multiply", - "outputs" : ["Multiply_24297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24288", "Parameter_15435" ], - "name" : "Multiply_24298", - "op" : "Multiply", - "outputs" : ["Multiply_24298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15523", "Add_24288" ], - "name" : "Multiply_24299", - "op" : "Multiply", - "outputs" : ["Multiply_24299"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24290", "Parameter_15489" ], - "name" : "Multiply_24300", - "op" : "Multiply", - "outputs" : ["Multiply_24300"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24291"], - "name" : "Negative_24301", - "op" : "Negative", - "outputs" : ["Negative_24301"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24292", "Multiply_19017" ], - "name" : "Divide_24302", - "op" : "Divide", - "outputs" : ["Divide_24302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24293"], - "name" : "Negative_24303", - "op" : "Negative", - "outputs" : ["Negative_24303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24295", "Parameter_15532" ], - "name" : "Multiply_24304", - "op" : "Multiply", - "outputs" : ["Multiply_24304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24296"], - "name" : "Negative_24305", - "op" : "Negative", - "outputs" : ["Negative_24305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24297", "Multiply_19018" ], - "name" : "Divide_24306", - "op" : "Divide", - "outputs" : ["Divide_24306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24298"], - "name" : "Negative_24307", - "op" : "Negative", - "outputs" : ["Negative_24307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24300"], - "name" : "Negative_24308", - "op" : "Negative", - "outputs" : ["Negative_24308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24301", "Parameter_15472" ], - "name" : "Multiply_24309", - "op" : "Multiply", - "outputs" : ["Multiply_24309"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18582", "Divide_24302" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24310", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24310"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24303", "Parameter_15480" ], - "name" : "Multiply_24311", - "op" : "Multiply", - "outputs" : ["Multiply_24311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24304"], - "name" : "Negative_24312", - "op" : "Negative", - "outputs" : ["Negative_24312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24305", "Parameter_15515" ], - "name" : "Multiply_24313", - "op" : "Multiply", - "outputs" : ["Multiply_24313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18641", "Divide_24306" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24314", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24314"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24307", "Parameter_15523" ], - "name" : "Multiply_24315", - "op" : "Multiply", - "outputs" : ["Multiply_24315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24309", "Parameter_15473" ], - "name" : "Divide_24316", - "op" : "Divide", - "outputs" : ["Divide_24316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24310"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24317", - "op" : "Slice", - "outputs" : ["Slice_24317"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24311", "Parameter_15481" ], - "name" : "Divide_24318", - "op" : "Divide", - "outputs" : ["Divide_24318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24313", "Parameter_15516" ], - "name" : "Divide_24319", - "op" : "Divide", - "outputs" : ["Divide_24319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24314"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24320", - "op" : "Slice", - "outputs" : ["Slice_24320"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24315", "Parameter_15524" ], - "name" : "Divide_24321", - "op" : "Divide", - "outputs" : ["Divide_24321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24316", "Parameter_15474" ], - "name" : "Multiply_24322", - "op" : "Multiply", - "outputs" : ["Multiply_24322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24318", "Parameter_15482" ], - "name" : "Multiply_24323", - "op" : "Multiply", - "outputs" : ["Multiply_24323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24319", "Parameter_15517" ], - "name" : "Multiply_24324", - "op" : "Multiply", - "outputs" : ["Multiply_24324"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24321", "Parameter_15525" ], - "name" : "Multiply_24325", - "op" : "Multiply", - "outputs" : ["Multiply_24325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24322"], - "name" : "Negative_24326", - "op" : "Negative", - "outputs" : ["Negative_24326"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24323"], - "name" : "Negative_24327", - "op" : "Negative", - "outputs" : ["Negative_24327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24324"], - "name" : "Negative_24328", - "op" : "Negative", - "outputs" : ["Negative_24328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24325"], - "name" : "Negative_24329", - "op" : "Negative", - "outputs" : ["Negative_24329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24317", "Negative_24326" ], - "name" : "Add_24330", - "op" : "Add", - "outputs" : ["Add_24330"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24320", "Negative_24328" ], - "name" : "Add_24331", - "op" : "Add", - "outputs" : ["Add_24331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24310", "Add_24330" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24332", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24332"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24314", "Add_24331" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24333", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24333"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24332"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24334", - "op" : "Slice", - "outputs" : ["Slice_24334"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24333"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24335", - "op" : "Slice", - "outputs" : ["Slice_24335"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24334", "Negative_24327" ], - "name" : "Add_24336", - "op" : "Add", - "outputs" : ["Add_24336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24335", "Negative_24329" ], - "name" : "Add_24337", - "op" : "Add", - "outputs" : ["Add_24337"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24332", "Add_24336" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24338", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24338"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24333", "Add_24337" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24339", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24339"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24338"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24340", - "op" : "Slice", - "outputs" : ["Slice_24340"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24339"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24341", - "op" : "Slice", - "outputs" : ["Slice_24341"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24340", "Negative_24308" ], - "name" : "Add_24342", - "op" : "Add", - "outputs" : ["Add_24342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24341", "Negative_24312" ], - "name" : "Add_24343", - "op" : "Add", - "outputs" : ["Add_24343"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24338", "Add_24342" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24344", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24344"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24339", "Add_24343" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24345", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24345"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24344"], - "name" : "Sum_24346", - "op" : "Sum", - "outputs" : ["Sum_24346"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24344"], - "name" : "Reshape_24347", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24347"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19012", "ReplaceSlice_24344" ], - "name" : "Dot_24348", - "op" : "Dot", - "outputs" : ["Dot_24348"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24344"], - "name" : "Sum_24349", - "op" : "Sum", - "outputs" : ["Sum_24349"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24344"], - "name" : "Reshape_24350", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24350"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19014", "ReplaceSlice_24344" ], - "name" : "Dot_24351", - "op" : "Dot", - "outputs" : ["Dot_24351"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24345"], - "name" : "Sum_24352", - "op" : "Sum", - "outputs" : ["Sum_24352"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24345"], - "name" : "Reshape_24353", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24353"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19013", "ReplaceSlice_24345" ], - "name" : "Dot_24354", - "op" : "Dot", - "outputs" : ["Dot_24354"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24345"], - "name" : "Sum_24355", - "op" : "Sum", - "outputs" : ["Sum_24355"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24345"], - "name" : "Reshape_24356", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24356"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18678", "ReplaceSlice_24345" ], - "name" : "Dot_24357", - "op" : "Dot", - "outputs" : ["Dot_24357"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24248", "Sum_24346" ], - "name" : "Add_24358", - "op" : "Add", - "outputs" : ["Add_24358"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14280", "Reshape_24347" ], - "name" : "Dot_24359", - "op" : "Dot", - "outputs" : ["Dot_24359"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24348"], - "name" : "Reshape_24360", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24360"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24251", "Sum_24349" ], - "name" : "Add_24361", - "op" : "Add", - "outputs" : ["Add_24361"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15432", "Reshape_24350" ], - "name" : "Dot_24362", - "op" : "Dot", - "outputs" : ["Dot_24362"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24351"], - "name" : "Reshape_24363", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24363"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24254", "Sum_24352" ], - "name" : "Add_24364", - "op" : "Add", - "outputs" : ["Add_24364"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15508", "Reshape_24353" ], - "name" : "Dot_24365", - "op" : "Dot", - "outputs" : ["Dot_24365"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24354"], - "name" : "Reshape_24366", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24366"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24257", "Sum_24355" ], - "name" : "Add_24367", - "op" : "Add", - "outputs" : ["Add_24367"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15512", "Reshape_24356" ], - "name" : "Dot_24368", - "op" : "Dot", - "outputs" : ["Dot_24368"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24357"], - "name" : "Reshape_24369", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24369"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24359"], - "name" : "Reshape_24370", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24360"], - "name" : "Reshape_24371", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24371"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24362"], - "name" : "Reshape_24372", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24372"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24363"], - "name" : "Reshape_24373", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24373"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24365"], - "name" : "Reshape_24374", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24374"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24366"], - "name" : "Reshape_24375", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24375"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24368"], - "name" : "Reshape_24376", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24376"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24369"], - "name" : "Reshape_24377", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24377"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24370", "Reshape_18798" ], - "name" : "Add_24378", - "op" : "Add", - "outputs" : ["Add_24378"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24269", "Reshape_24371" ], - "name" : "Add_24379", - "op" : "Add", - "outputs" : ["Add_24379"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24270", "Reshape_24373" ], - "name" : "Add_24380", - "op" : "Add", - "outputs" : ["Add_24380"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24374", "Reshape_24372" ], - "name" : "Add_24381", - "op" : "Add", - "outputs" : ["Add_24381"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24272", "Reshape_24375" ], - "name" : "Add_24382", - "op" : "Add", - "outputs" : ["Add_24382"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24376"], - "name" : "Reshape_24383", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24383"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24274", "Reshape_24377" ], - "name" : "Add_24384", - "op" : "Add", - "outputs" : ["Add_24384"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24378", "Parameter_14282" ], - "name" : "Multiply_24385", - "op" : "Multiply", - "outputs" : ["Multiply_24385"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15422", "Add_24378" ], - "name" : "Multiply_24386", - "op" : "Multiply", - "outputs" : ["Multiply_24386"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24381", "Parameter_15434" ], - "name" : "Multiply_24387", - "op" : "Multiply", - "outputs" : ["Multiply_24387"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15465", "Add_24381" ], - "name" : "Multiply_24388", - "op" : "Multiply", - "outputs" : ["Multiply_24388"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24289", "Reshape_24383" ], - "name" : "Add_24389", - "op" : "Add", - "outputs" : ["Add_24389"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24385"], - "name" : "Negative_24390", - "op" : "Negative", - "outputs" : ["Negative_24390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24386", "Multiply_19010" ], - "name" : "Divide_24391", - "op" : "Divide", - "outputs" : ["Divide_24391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24387"], - "name" : "Negative_24392", - "op" : "Negative", - "outputs" : ["Negative_24392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24388", "Multiply_19011" ], - "name" : "Divide_24393", - "op" : "Divide", - "outputs" : ["Divide_24393"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24284", "Add_24389" ], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "ReplaceSlice_24394", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24394"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 17, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24390", "Parameter_15422" ], - "name" : "Multiply_24395", - "op" : "Multiply", - "outputs" : ["Multiply_24395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24294", "Divide_24391" ], - "name" : "Add_24396", - "op" : "Add", - "outputs" : ["Add_24396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24392", "Parameter_15465" ], - "name" : "Multiply_24397", - "op" : "Multiply", - "outputs" : ["Multiply_24397"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24299", "Divide_24393" ], - "name" : "Add_24398", - "op" : "Add", - "outputs" : ["Add_24398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24394"], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "Slice_24399", - "op" : "Slice", - "outputs" : ["Slice_24399"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 16, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24395", "Parameter_15423" ], - "name" : "Divide_24400", - "op" : "Divide", - "outputs" : ["Divide_24400"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24396", "Parameter_14285" ], - "name" : "Multiply_24401", - "op" : "Multiply", - "outputs" : ["Multiply_24401"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15407", "Add_24396" ], - "name" : "Multiply_24402", - "op" : "Multiply", - "outputs" : ["Multiply_24402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24396", "Parameter_14294" ], - "name" : "Multiply_24403", - "op" : "Multiply", - "outputs" : ["Multiply_24403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15415", "Add_24396" ], - "name" : "Multiply_24404", - "op" : "Multiply", - "outputs" : ["Multiply_24404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24397", "Parameter_15466" ], - "name" : "Divide_24405", - "op" : "Divide", - "outputs" : ["Divide_24405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24398", "Parameter_15437" ], - "name" : "Multiply_24406", - "op" : "Multiply", - "outputs" : ["Multiply_24406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15450", "Add_24398" ], - "name" : "Multiply_24407", - "op" : "Multiply", - "outputs" : ["Multiply_24407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24398", "Parameter_15370" ], - "name" : "Multiply_24408", - "op" : "Multiply", - "outputs" : ["Multiply_24408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15458", "Add_24398" ], - "name" : "Multiply_24409", - "op" : "Multiply", - "outputs" : ["Multiply_24409"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24400", "Parameter_15424" ], - "name" : "Multiply_24410", - "op" : "Multiply", - "outputs" : ["Multiply_24410"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24401"], - "name" : "Negative_24411", - "op" : "Negative", - "outputs" : ["Negative_24411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24402", "Multiply_19006" ], - "name" : "Divide_24412", - "op" : "Divide", - "outputs" : ["Divide_24412"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24403"], - "name" : "Negative_24413", - "op" : "Negative", - "outputs" : ["Negative_24413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24405", "Parameter_15467" ], - "name" : "Multiply_24414", - "op" : "Multiply", - "outputs" : ["Multiply_24414"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24406"], - "name" : "Negative_24415", - "op" : "Negative", - "outputs" : ["Negative_24415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24407", "Multiply_19007" ], - "name" : "Divide_24416", - "op" : "Divide", - "outputs" : ["Divide_24416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24408"], - "name" : "Negative_24417", - "op" : "Negative", - "outputs" : ["Negative_24417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24410"], - "name" : "Negative_24418", - "op" : "Negative", - "outputs" : ["Negative_24418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24411", "Parameter_15407" ], - "name" : "Multiply_24419", - "op" : "Multiply", - "outputs" : ["Multiply_24419"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18583", "Divide_24412" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24420", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24420"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24413", "Parameter_15415" ], - "name" : "Multiply_24421", - "op" : "Multiply", - "outputs" : ["Multiply_24421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24414"], - "name" : "Negative_24422", - "op" : "Negative", - "outputs" : ["Negative_24422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24415", "Parameter_15450" ], - "name" : "Multiply_24423", - "op" : "Multiply", - "outputs" : ["Multiply_24423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18642", "Divide_24416" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24424", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24424"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24417", "Parameter_15458" ], - "name" : "Multiply_24425", - "op" : "Multiply", - "outputs" : ["Multiply_24425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24419", "Parameter_15408" ], - "name" : "Divide_24426", - "op" : "Divide", - "outputs" : ["Divide_24426"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24420"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24427", - "op" : "Slice", - "outputs" : ["Slice_24427"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24421", "Parameter_15416" ], - "name" : "Divide_24428", - "op" : "Divide", - "outputs" : ["Divide_24428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24423", "Parameter_15451" ], - "name" : "Divide_24429", - "op" : "Divide", - "outputs" : ["Divide_24429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24424"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24430", - "op" : "Slice", - "outputs" : ["Slice_24430"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24425", "Parameter_15459" ], - "name" : "Divide_24431", - "op" : "Divide", - "outputs" : ["Divide_24431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24426", "Parameter_15409" ], - "name" : "Multiply_24432", - "op" : "Multiply", - "outputs" : ["Multiply_24432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24428", "Parameter_15417" ], - "name" : "Multiply_24433", - "op" : "Multiply", - "outputs" : ["Multiply_24433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24429", "Parameter_15452" ], - "name" : "Multiply_24434", - "op" : "Multiply", - "outputs" : ["Multiply_24434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24431", "Parameter_15460" ], - "name" : "Multiply_24435", - "op" : "Multiply", - "outputs" : ["Multiply_24435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24432"], - "name" : "Negative_24436", - "op" : "Negative", - "outputs" : ["Negative_24436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24433"], - "name" : "Negative_24437", - "op" : "Negative", - "outputs" : ["Negative_24437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24434"], - "name" : "Negative_24438", - "op" : "Negative", - "outputs" : ["Negative_24438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24435"], - "name" : "Negative_24439", - "op" : "Negative", - "outputs" : ["Negative_24439"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24427", "Negative_24436" ], - "name" : "Add_24440", - "op" : "Add", - "outputs" : ["Add_24440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24430", "Negative_24438" ], - "name" : "Add_24441", - "op" : "Add", - "outputs" : ["Add_24441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24420", "Add_24440" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24442", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24442"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24424", "Add_24441" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24443", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24443"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24442"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24444", - "op" : "Slice", - "outputs" : ["Slice_24444"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24443"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24445", - "op" : "Slice", - "outputs" : ["Slice_24445"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24444", "Negative_24437" ], - "name" : "Add_24446", - "op" : "Add", - "outputs" : ["Add_24446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24445", "Negative_24439" ], - "name" : "Add_24447", - "op" : "Add", - "outputs" : ["Add_24447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24442", "Add_24446" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24448", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24448"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24443", "Add_24447" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24449", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24449"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24448"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24450", - "op" : "Slice", - "outputs" : ["Slice_24450"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24449"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24451", - "op" : "Slice", - "outputs" : ["Slice_24451"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24450", "Negative_24418" ], - "name" : "Add_24452", - "op" : "Add", - "outputs" : ["Add_24452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24451", "Negative_24422" ], - "name" : "Add_24453", - "op" : "Add", - "outputs" : ["Add_24453"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24448", "Add_24452" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24454", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24454"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24449", "Add_24453" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24455", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24455"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24454"], - "name" : "Sum_24456", - "op" : "Sum", - "outputs" : ["Sum_24456"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24454"], - "name" : "Reshape_24457", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24457"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19001", "ReplaceSlice_24454" ], - "name" : "Dot_24458", - "op" : "Dot", - "outputs" : ["Dot_24458"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24454"], - "name" : "Sum_24459", - "op" : "Sum", - "outputs" : ["Sum_24459"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24454"], - "name" : "Reshape_24460", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24460"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19003", "ReplaceSlice_24454" ], - "name" : "Dot_24461", - "op" : "Dot", - "outputs" : ["Dot_24461"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24455"], - "name" : "Sum_24462", - "op" : "Sum", - "outputs" : ["Sum_24462"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24455"], - "name" : "Reshape_24463", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24463"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_19002", "ReplaceSlice_24455" ], - "name" : "Dot_24464", - "op" : "Dot", - "outputs" : ["Dot_24464"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24455"], - "name" : "Sum_24465", - "op" : "Sum", - "outputs" : ["Sum_24465"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24455"], - "name" : "Reshape_24466", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24466"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18677", "ReplaceSlice_24455" ], - "name" : "Dot_24467", - "op" : "Dot", - "outputs" : ["Dot_24467"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24358", "Sum_24456" ], - "name" : "Add_24468", - "op" : "Add", - "outputs" : ["Add_24468"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14291", "Reshape_24457" ], - "name" : "Dot_24469", - "op" : "Dot", - "outputs" : ["Dot_24469"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24458"], - "name" : "Reshape_24470", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24470"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24361", "Sum_24459" ], - "name" : "Add_24471", - "op" : "Add", - "outputs" : ["Add_24471"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15367", "Reshape_24460" ], - "name" : "Dot_24472", - "op" : "Dot", - "outputs" : ["Dot_24472"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24461"], - "name" : "Reshape_24473", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24473"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24364", "Sum_24462" ], - "name" : "Add_24474", - "op" : "Add", - "outputs" : ["Add_24474"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15443", "Reshape_24463" ], - "name" : "Dot_24475", - "op" : "Dot", - "outputs" : ["Dot_24475"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24464"], - "name" : "Reshape_24476", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24476"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24367", "Sum_24465" ], - "name" : "Add_24477", - "op" : "Add", - "outputs" : ["Add_24477"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15447", "Reshape_24466" ], - "name" : "Dot_24478", - "op" : "Dot", - "outputs" : ["Dot_24478"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24467"], - "name" : "Reshape_24479", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24479"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24469"], - "name" : "Reshape_24480", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24480"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24470"], - "name" : "Reshape_24481", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24481"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24472"], - "name" : "Reshape_24482", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24482"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24473"], - "name" : "Reshape_24483", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24483"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24475"], - "name" : "Reshape_24484", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24484"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24476"], - "name" : "Reshape_24485", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24485"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24478"], - "name" : "Reshape_24486", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24486"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24479"], - "name" : "Reshape_24487", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24487"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24480", "Reshape_18797" ], - "name" : "Add_24488", - "op" : "Add", - "outputs" : ["Add_24488"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24379", "Reshape_24481" ], - "name" : "Add_24489", - "op" : "Add", - "outputs" : ["Add_24489"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24380", "Reshape_24483" ], - "name" : "Add_24490", - "op" : "Add", - "outputs" : ["Add_24490"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24484", "Reshape_24482" ], - "name" : "Add_24491", - "op" : "Add", - "outputs" : ["Add_24491"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24382", "Reshape_24485" ], - "name" : "Add_24492", - "op" : "Add", - "outputs" : ["Add_24492"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24486"], - "name" : "Reshape_24493", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24493"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24384", "Reshape_24487" ], - "name" : "Add_24494", - "op" : "Add", - "outputs" : ["Add_24494"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24488", "Parameter_14293" ], - "name" : "Multiply_24495", - "op" : "Multiply", - "outputs" : ["Multiply_24495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15357", "Add_24488" ], - "name" : "Multiply_24496", - "op" : "Multiply", - "outputs" : ["Multiply_24496"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24491", "Parameter_15369" ], - "name" : "Multiply_24497", - "op" : "Multiply", - "outputs" : ["Multiply_24497"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15400", "Add_24491" ], - "name" : "Multiply_24498", - "op" : "Multiply", - "outputs" : ["Multiply_24498"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24399", "Reshape_24493" ], - "name" : "Add_24499", - "op" : "Add", - "outputs" : ["Add_24499"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24495"], - "name" : "Negative_24500", - "op" : "Negative", - "outputs" : ["Negative_24500"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24496", "Multiply_18999" ], - "name" : "Divide_24501", - "op" : "Divide", - "outputs" : ["Divide_24501"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24497"], - "name" : "Negative_24502", - "op" : "Negative", - "outputs" : ["Negative_24502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24498", "Multiply_19000" ], - "name" : "Divide_24503", - "op" : "Divide", - "outputs" : ["Divide_24503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24394", "Add_24499" ], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "ReplaceSlice_24504", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24504"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 16, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24500", "Parameter_15357" ], - "name" : "Multiply_24505", - "op" : "Multiply", - "outputs" : ["Multiply_24505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24404", "Divide_24501" ], - "name" : "Add_24506", - "op" : "Add", - "outputs" : ["Add_24506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24502", "Parameter_15400" ], - "name" : "Multiply_24507", - "op" : "Multiply", - "outputs" : ["Multiply_24507"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24409", "Divide_24503" ], - "name" : "Add_24508", - "op" : "Add", - "outputs" : ["Add_24508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24504"], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "Slice_24509", - "op" : "Slice", - "outputs" : ["Slice_24509"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 15, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24505", "Parameter_15358" ], - "name" : "Divide_24510", - "op" : "Divide", - "outputs" : ["Divide_24510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24506", "Parameter_14296" ], - "name" : "Multiply_24511", - "op" : "Multiply", - "outputs" : ["Multiply_24511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15342", "Add_24506" ], - "name" : "Multiply_24512", - "op" : "Multiply", - "outputs" : ["Multiply_24512"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24506", "Parameter_14305" ], - "name" : "Multiply_24513", - "op" : "Multiply", - "outputs" : ["Multiply_24513"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15350", "Add_24506" ], - "name" : "Multiply_24514", - "op" : "Multiply", - "outputs" : ["Multiply_24514"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24507", "Parameter_15401" ], - "name" : "Divide_24515", - "op" : "Divide", - "outputs" : ["Divide_24515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24508", "Parameter_15372" ], - "name" : "Multiply_24516", - "op" : "Multiply", - "outputs" : ["Multiply_24516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15385", "Add_24508" ], - "name" : "Multiply_24517", - "op" : "Multiply", - "outputs" : ["Multiply_24517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24508", "Parameter_15305" ], - "name" : "Multiply_24518", - "op" : "Multiply", - "outputs" : ["Multiply_24518"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15393", "Add_24508" ], - "name" : "Multiply_24519", - "op" : "Multiply", - "outputs" : ["Multiply_24519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24510", "Parameter_15359" ], - "name" : "Multiply_24520", - "op" : "Multiply", - "outputs" : ["Multiply_24520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24511"], - "name" : "Negative_24521", - "op" : "Negative", - "outputs" : ["Negative_24521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24512", "Multiply_18995" ], - "name" : "Divide_24522", - "op" : "Divide", - "outputs" : ["Divide_24522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24513"], - "name" : "Negative_24523", - "op" : "Negative", - "outputs" : ["Negative_24523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24515", "Parameter_15402" ], - "name" : "Multiply_24524", - "op" : "Multiply", - "outputs" : ["Multiply_24524"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24516"], - "name" : "Negative_24525", - "op" : "Negative", - "outputs" : ["Negative_24525"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24517", "Multiply_18996" ], - "name" : "Divide_24526", - "op" : "Divide", - "outputs" : ["Divide_24526"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24518"], - "name" : "Negative_24527", - "op" : "Negative", - "outputs" : ["Negative_24527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24520"], - "name" : "Negative_24528", - "op" : "Negative", - "outputs" : ["Negative_24528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24521", "Parameter_15342" ], - "name" : "Multiply_24529", - "op" : "Multiply", - "outputs" : ["Multiply_24529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18584", "Divide_24522" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24530", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24530"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24523", "Parameter_15350" ], - "name" : "Multiply_24531", - "op" : "Multiply", - "outputs" : ["Multiply_24531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24524"], - "name" : "Negative_24532", - "op" : "Negative", - "outputs" : ["Negative_24532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24525", "Parameter_15385" ], - "name" : "Multiply_24533", - "op" : "Multiply", - "outputs" : ["Multiply_24533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18643", "Divide_24526" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24534", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24534"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24527", "Parameter_15393" ], - "name" : "Multiply_24535", - "op" : "Multiply", - "outputs" : ["Multiply_24535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24529", "Parameter_15343" ], - "name" : "Divide_24536", - "op" : "Divide", - "outputs" : ["Divide_24536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24530"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24537", - "op" : "Slice", - "outputs" : ["Slice_24537"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24531", "Parameter_15351" ], - "name" : "Divide_24538", - "op" : "Divide", - "outputs" : ["Divide_24538"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24533", "Parameter_15386" ], - "name" : "Divide_24539", - "op" : "Divide", - "outputs" : ["Divide_24539"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24534"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24540", - "op" : "Slice", - "outputs" : ["Slice_24540"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24535", "Parameter_15394" ], - "name" : "Divide_24541", - "op" : "Divide", - "outputs" : ["Divide_24541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24536", "Parameter_15344" ], - "name" : "Multiply_24542", - "op" : "Multiply", - "outputs" : ["Multiply_24542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24538", "Parameter_15352" ], - "name" : "Multiply_24543", - "op" : "Multiply", - "outputs" : ["Multiply_24543"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24539", "Parameter_15387" ], - "name" : "Multiply_24544", - "op" : "Multiply", - "outputs" : ["Multiply_24544"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24541", "Parameter_15395" ], - "name" : "Multiply_24545", - "op" : "Multiply", - "outputs" : ["Multiply_24545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24542"], - "name" : "Negative_24546", - "op" : "Negative", - "outputs" : ["Negative_24546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24543"], - "name" : "Negative_24547", - "op" : "Negative", - "outputs" : ["Negative_24547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24544"], - "name" : "Negative_24548", - "op" : "Negative", - "outputs" : ["Negative_24548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24545"], - "name" : "Negative_24549", - "op" : "Negative", - "outputs" : ["Negative_24549"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24537", "Negative_24546" ], - "name" : "Add_24550", - "op" : "Add", - "outputs" : ["Add_24550"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24540", "Negative_24548" ], - "name" : "Add_24551", - "op" : "Add", - "outputs" : ["Add_24551"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24530", "Add_24550" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24552", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24552"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24534", "Add_24551" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24553", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24553"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24552"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24554", - "op" : "Slice", - "outputs" : ["Slice_24554"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24553"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24555", - "op" : "Slice", - "outputs" : ["Slice_24555"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24554", "Negative_24547" ], - "name" : "Add_24556", - "op" : "Add", - "outputs" : ["Add_24556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24555", "Negative_24549" ], - "name" : "Add_24557", - "op" : "Add", - "outputs" : ["Add_24557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24552", "Add_24556" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24558", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24558"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24553", "Add_24557" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24559", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24559"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24558"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24560", - "op" : "Slice", - "outputs" : ["Slice_24560"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24559"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24561", - "op" : "Slice", - "outputs" : ["Slice_24561"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24560", "Negative_24528" ], - "name" : "Add_24562", - "op" : "Add", - "outputs" : ["Add_24562"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24561", "Negative_24532" ], - "name" : "Add_24563", - "op" : "Add", - "outputs" : ["Add_24563"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24558", "Add_24562" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24564", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24564"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24559", "Add_24563" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24565", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24565"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24564"], - "name" : "Sum_24566", - "op" : "Sum", - "outputs" : ["Sum_24566"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24564"], - "name" : "Reshape_24567", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24567"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18990", "ReplaceSlice_24564" ], - "name" : "Dot_24568", - "op" : "Dot", - "outputs" : ["Dot_24568"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24564"], - "name" : "Sum_24569", - "op" : "Sum", - "outputs" : ["Sum_24569"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24564"], - "name" : "Reshape_24570", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24570"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18992", "ReplaceSlice_24564" ], - "name" : "Dot_24571", - "op" : "Dot", - "outputs" : ["Dot_24571"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24565"], - "name" : "Sum_24572", - "op" : "Sum", - "outputs" : ["Sum_24572"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24565"], - "name" : "Reshape_24573", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24573"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18991", "ReplaceSlice_24565" ], - "name" : "Dot_24574", - "op" : "Dot", - "outputs" : ["Dot_24574"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24565"], - "name" : "Sum_24575", - "op" : "Sum", - "outputs" : ["Sum_24575"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24565"], - "name" : "Reshape_24576", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24576"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18676", "ReplaceSlice_24565" ], - "name" : "Dot_24577", - "op" : "Dot", - "outputs" : ["Dot_24577"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24468", "Sum_24566" ], - "name" : "Add_24578", - "op" : "Add", - "outputs" : ["Add_24578"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14302", "Reshape_24567" ], - "name" : "Dot_24579", - "op" : "Dot", - "outputs" : ["Dot_24579"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24568"], - "name" : "Reshape_24580", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24580"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24471", "Sum_24569" ], - "name" : "Add_24581", - "op" : "Add", - "outputs" : ["Add_24581"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15302", "Reshape_24570" ], - "name" : "Dot_24582", - "op" : "Dot", - "outputs" : ["Dot_24582"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24571"], - "name" : "Reshape_24583", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24583"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24474", "Sum_24572" ], - "name" : "Add_24584", - "op" : "Add", - "outputs" : ["Add_24584"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15378", "Reshape_24573" ], - "name" : "Dot_24585", - "op" : "Dot", - "outputs" : ["Dot_24585"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24574"], - "name" : "Reshape_24586", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24586"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24477", "Sum_24575" ], - "name" : "Add_24587", - "op" : "Add", - "outputs" : ["Add_24587"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15382", "Reshape_24576" ], - "name" : "Dot_24588", - "op" : "Dot", - "outputs" : ["Dot_24588"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24577"], - "name" : "Reshape_24589", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24589"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24579"], - "name" : "Reshape_24590", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24580"], - "name" : "Reshape_24591", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24591"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24582"], - "name" : "Reshape_24592", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24592"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24583"], - "name" : "Reshape_24593", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24593"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24585"], - "name" : "Reshape_24594", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24594"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24586"], - "name" : "Reshape_24595", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24595"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24588"], - "name" : "Reshape_24596", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24596"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24589"], - "name" : "Reshape_24597", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24597"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24590", "Reshape_18796" ], - "name" : "Add_24598", - "op" : "Add", - "outputs" : ["Add_24598"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24489", "Reshape_24591" ], - "name" : "Add_24599", - "op" : "Add", - "outputs" : ["Add_24599"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24490", "Reshape_24593" ], - "name" : "Add_24600", - "op" : "Add", - "outputs" : ["Add_24600"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24594", "Reshape_24592" ], - "name" : "Add_24601", - "op" : "Add", - "outputs" : ["Add_24601"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24492", "Reshape_24595" ], - "name" : "Add_24602", - "op" : "Add", - "outputs" : ["Add_24602"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24596"], - "name" : "Reshape_24603", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24603"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24494", "Reshape_24597" ], - "name" : "Add_24604", - "op" : "Add", - "outputs" : ["Add_24604"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24598", "Parameter_14304" ], - "name" : "Multiply_24605", - "op" : "Multiply", - "outputs" : ["Multiply_24605"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15292", "Add_24598" ], - "name" : "Multiply_24606", - "op" : "Multiply", - "outputs" : ["Multiply_24606"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24601", "Parameter_15304" ], - "name" : "Multiply_24607", - "op" : "Multiply", - "outputs" : ["Multiply_24607"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15335", "Add_24601" ], - "name" : "Multiply_24608", - "op" : "Multiply", - "outputs" : ["Multiply_24608"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24509", "Reshape_24603" ], - "name" : "Add_24609", - "op" : "Add", - "outputs" : ["Add_24609"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24605"], - "name" : "Negative_24610", - "op" : "Negative", - "outputs" : ["Negative_24610"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24606", "Multiply_18988" ], - "name" : "Divide_24611", - "op" : "Divide", - "outputs" : ["Divide_24611"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24607"], - "name" : "Negative_24612", - "op" : "Negative", - "outputs" : ["Negative_24612"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24608", "Multiply_18989" ], - "name" : "Divide_24613", - "op" : "Divide", - "outputs" : ["Divide_24613"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24504", "Add_24609" ], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "ReplaceSlice_24614", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24614"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 15, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24610", "Parameter_15292" ], - "name" : "Multiply_24615", - "op" : "Multiply", - "outputs" : ["Multiply_24615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24514", "Divide_24611" ], - "name" : "Add_24616", - "op" : "Add", - "outputs" : ["Add_24616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24612", "Parameter_15335" ], - "name" : "Multiply_24617", - "op" : "Multiply", - "outputs" : ["Multiply_24617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24519", "Divide_24613" ], - "name" : "Add_24618", - "op" : "Add", - "outputs" : ["Add_24618"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24614"], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "Slice_24619", - "op" : "Slice", - "outputs" : ["Slice_24619"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 14, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24615", "Parameter_15293" ], - "name" : "Divide_24620", - "op" : "Divide", - "outputs" : ["Divide_24620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24616", "Parameter_14307" ], - "name" : "Multiply_24621", - "op" : "Multiply", - "outputs" : ["Multiply_24621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15277", "Add_24616" ], - "name" : "Multiply_24622", - "op" : "Multiply", - "outputs" : ["Multiply_24622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24616", "Parameter_14316" ], - "name" : "Multiply_24623", - "op" : "Multiply", - "outputs" : ["Multiply_24623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15285", "Add_24616" ], - "name" : "Multiply_24624", - "op" : "Multiply", - "outputs" : ["Multiply_24624"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24617", "Parameter_15336" ], - "name" : "Divide_24625", - "op" : "Divide", - "outputs" : ["Divide_24625"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24618", "Parameter_15307" ], - "name" : "Multiply_24626", - "op" : "Multiply", - "outputs" : ["Multiply_24626"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15320", "Add_24618" ], - "name" : "Multiply_24627", - "op" : "Multiply", - "outputs" : ["Multiply_24627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24618", "Parameter_15240" ], - "name" : "Multiply_24628", - "op" : "Multiply", - "outputs" : ["Multiply_24628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15328", "Add_24618" ], - "name" : "Multiply_24629", - "op" : "Multiply", - "outputs" : ["Multiply_24629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24620", "Parameter_15294" ], - "name" : "Multiply_24630", - "op" : "Multiply", - "outputs" : ["Multiply_24630"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24621"], - "name" : "Negative_24631", - "op" : "Negative", - "outputs" : ["Negative_24631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24622", "Multiply_18984" ], - "name" : "Divide_24632", - "op" : "Divide", - "outputs" : ["Divide_24632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24623"], - "name" : "Negative_24633", - "op" : "Negative", - "outputs" : ["Negative_24633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24625", "Parameter_15337" ], - "name" : "Multiply_24634", - "op" : "Multiply", - "outputs" : ["Multiply_24634"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24626"], - "name" : "Negative_24635", - "op" : "Negative", - "outputs" : ["Negative_24635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24627", "Multiply_18985" ], - "name" : "Divide_24636", - "op" : "Divide", - "outputs" : ["Divide_24636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24628"], - "name" : "Negative_24637", - "op" : "Negative", - "outputs" : ["Negative_24637"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24630"], - "name" : "Negative_24638", - "op" : "Negative", - "outputs" : ["Negative_24638"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24631", "Parameter_15277" ], - "name" : "Multiply_24639", - "op" : "Multiply", - "outputs" : ["Multiply_24639"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18585", "Divide_24632" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24640", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24640"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24633", "Parameter_15285" ], - "name" : "Multiply_24641", - "op" : "Multiply", - "outputs" : ["Multiply_24641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24634"], - "name" : "Negative_24642", - "op" : "Negative", - "outputs" : ["Negative_24642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24635", "Parameter_15320" ], - "name" : "Multiply_24643", - "op" : "Multiply", - "outputs" : ["Multiply_24643"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18644", "Divide_24636" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24644", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24644"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24637", "Parameter_15328" ], - "name" : "Multiply_24645", - "op" : "Multiply", - "outputs" : ["Multiply_24645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24639", "Parameter_15278" ], - "name" : "Divide_24646", - "op" : "Divide", - "outputs" : ["Divide_24646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24640"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24647", - "op" : "Slice", - "outputs" : ["Slice_24647"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24641", "Parameter_15286" ], - "name" : "Divide_24648", - "op" : "Divide", - "outputs" : ["Divide_24648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24643", "Parameter_15321" ], - "name" : "Divide_24649", - "op" : "Divide", - "outputs" : ["Divide_24649"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24644"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24650", - "op" : "Slice", - "outputs" : ["Slice_24650"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24645", "Parameter_15329" ], - "name" : "Divide_24651", - "op" : "Divide", - "outputs" : ["Divide_24651"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24646", "Parameter_15279" ], - "name" : "Multiply_24652", - "op" : "Multiply", - "outputs" : ["Multiply_24652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24648", "Parameter_15287" ], - "name" : "Multiply_24653", - "op" : "Multiply", - "outputs" : ["Multiply_24653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24649", "Parameter_15322" ], - "name" : "Multiply_24654", - "op" : "Multiply", - "outputs" : ["Multiply_24654"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24651", "Parameter_15330" ], - "name" : "Multiply_24655", - "op" : "Multiply", - "outputs" : ["Multiply_24655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24652"], - "name" : "Negative_24656", - "op" : "Negative", - "outputs" : ["Negative_24656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24653"], - "name" : "Negative_24657", - "op" : "Negative", - "outputs" : ["Negative_24657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24654"], - "name" : "Negative_24658", - "op" : "Negative", - "outputs" : ["Negative_24658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24655"], - "name" : "Negative_24659", - "op" : "Negative", - "outputs" : ["Negative_24659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24647", "Negative_24656" ], - "name" : "Add_24660", - "op" : "Add", - "outputs" : ["Add_24660"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24650", "Negative_24658" ], - "name" : "Add_24661", - "op" : "Add", - "outputs" : ["Add_24661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24640", "Add_24660" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24662", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24662"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24644", "Add_24661" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24663", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24663"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24662"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24664", - "op" : "Slice", - "outputs" : ["Slice_24664"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24663"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24665", - "op" : "Slice", - "outputs" : ["Slice_24665"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24664", "Negative_24657" ], - "name" : "Add_24666", - "op" : "Add", - "outputs" : ["Add_24666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24665", "Negative_24659" ], - "name" : "Add_24667", - "op" : "Add", - "outputs" : ["Add_24667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24662", "Add_24666" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24668", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24668"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24663", "Add_24667" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24669", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24669"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24668"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24670", - "op" : "Slice", - "outputs" : ["Slice_24670"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24669"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24671", - "op" : "Slice", - "outputs" : ["Slice_24671"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24670", "Negative_24638" ], - "name" : "Add_24672", - "op" : "Add", - "outputs" : ["Add_24672"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24671", "Negative_24642" ], - "name" : "Add_24673", - "op" : "Add", - "outputs" : ["Add_24673"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24668", "Add_24672" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24674", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24674"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24669", "Add_24673" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24675", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24675"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24674"], - "name" : "Sum_24676", - "op" : "Sum", - "outputs" : ["Sum_24676"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24674"], - "name" : "Reshape_24677", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24677"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18979", "ReplaceSlice_24674" ], - "name" : "Dot_24678", - "op" : "Dot", - "outputs" : ["Dot_24678"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24674"], - "name" : "Sum_24679", - "op" : "Sum", - "outputs" : ["Sum_24679"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24674"], - "name" : "Reshape_24680", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24680"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18981", "ReplaceSlice_24674" ], - "name" : "Dot_24681", - "op" : "Dot", - "outputs" : ["Dot_24681"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24675"], - "name" : "Sum_24682", - "op" : "Sum", - "outputs" : ["Sum_24682"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24675"], - "name" : "Reshape_24683", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24683"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18980", "ReplaceSlice_24675" ], - "name" : "Dot_24684", - "op" : "Dot", - "outputs" : ["Dot_24684"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24675"], - "name" : "Sum_24685", - "op" : "Sum", - "outputs" : ["Sum_24685"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24675"], - "name" : "Reshape_24686", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24686"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18675", "ReplaceSlice_24675" ], - "name" : "Dot_24687", - "op" : "Dot", - "outputs" : ["Dot_24687"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24578", "Sum_24676" ], - "name" : "Add_24688", - "op" : "Add", - "outputs" : ["Add_24688"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14313", "Reshape_24677" ], - "name" : "Dot_24689", - "op" : "Dot", - "outputs" : ["Dot_24689"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24678"], - "name" : "Reshape_24690", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24690"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24581", "Sum_24679" ], - "name" : "Add_24691", - "op" : "Add", - "outputs" : ["Add_24691"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15237", "Reshape_24680" ], - "name" : "Dot_24692", - "op" : "Dot", - "outputs" : ["Dot_24692"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24681"], - "name" : "Reshape_24693", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24693"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24584", "Sum_24682" ], - "name" : "Add_24694", - "op" : "Add", - "outputs" : ["Add_24694"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15313", "Reshape_24683" ], - "name" : "Dot_24695", - "op" : "Dot", - "outputs" : ["Dot_24695"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24684"], - "name" : "Reshape_24696", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24696"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24587", "Sum_24685" ], - "name" : "Add_24697", - "op" : "Add", - "outputs" : ["Add_24697"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15317", "Reshape_24686" ], - "name" : "Dot_24698", - "op" : "Dot", - "outputs" : ["Dot_24698"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24687"], - "name" : "Reshape_24699", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24699"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24689"], - "name" : "Reshape_24700", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24700"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24690"], - "name" : "Reshape_24701", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24701"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24692"], - "name" : "Reshape_24702", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24702"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24693"], - "name" : "Reshape_24703", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24703"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24695"], - "name" : "Reshape_24704", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24704"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24696"], - "name" : "Reshape_24705", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24705"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24698"], - "name" : "Reshape_24706", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24706"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24699"], - "name" : "Reshape_24707", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24707"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24700", "Reshape_18795" ], - "name" : "Add_24708", - "op" : "Add", - "outputs" : ["Add_24708"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24599", "Reshape_24701" ], - "name" : "Add_24709", - "op" : "Add", - "outputs" : ["Add_24709"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24600", "Reshape_24703" ], - "name" : "Add_24710", - "op" : "Add", - "outputs" : ["Add_24710"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24704", "Reshape_24702" ], - "name" : "Add_24711", - "op" : "Add", - "outputs" : ["Add_24711"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24602", "Reshape_24705" ], - "name" : "Add_24712", - "op" : "Add", - "outputs" : ["Add_24712"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24706"], - "name" : "Reshape_24713", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24713"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24604", "Reshape_24707" ], - "name" : "Add_24714", - "op" : "Add", - "outputs" : ["Add_24714"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24708", "Parameter_14315" ], - "name" : "Multiply_24715", - "op" : "Multiply", - "outputs" : ["Multiply_24715"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15227", "Add_24708" ], - "name" : "Multiply_24716", - "op" : "Multiply", - "outputs" : ["Multiply_24716"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24711", "Parameter_15239" ], - "name" : "Multiply_24717", - "op" : "Multiply", - "outputs" : ["Multiply_24717"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15270", "Add_24711" ], - "name" : "Multiply_24718", - "op" : "Multiply", - "outputs" : ["Multiply_24718"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24619", "Reshape_24713" ], - "name" : "Add_24719", - "op" : "Add", - "outputs" : ["Add_24719"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24715"], - "name" : "Negative_24720", - "op" : "Negative", - "outputs" : ["Negative_24720"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24716", "Multiply_18977" ], - "name" : "Divide_24721", - "op" : "Divide", - "outputs" : ["Divide_24721"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24717"], - "name" : "Negative_24722", - "op" : "Negative", - "outputs" : ["Negative_24722"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24718", "Multiply_18978" ], - "name" : "Divide_24723", - "op" : "Divide", - "outputs" : ["Divide_24723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24614", "Add_24719" ], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "ReplaceSlice_24724", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24724"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 14, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24720", "Parameter_15227" ], - "name" : "Multiply_24725", - "op" : "Multiply", - "outputs" : ["Multiply_24725"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24624", "Divide_24721" ], - "name" : "Add_24726", - "op" : "Add", - "outputs" : ["Add_24726"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24722", "Parameter_15270" ], - "name" : "Multiply_24727", - "op" : "Multiply", - "outputs" : ["Multiply_24727"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24629", "Divide_24723" ], - "name" : "Add_24728", - "op" : "Add", - "outputs" : ["Add_24728"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24724"], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "Slice_24729", - "op" : "Slice", - "outputs" : ["Slice_24729"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 13, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24725", "Parameter_15228" ], - "name" : "Divide_24730", - "op" : "Divide", - "outputs" : ["Divide_24730"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24726", "Parameter_14327" ], - "name" : "Multiply_24731", - "op" : "Multiply", - "outputs" : ["Multiply_24731"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15220", "Add_24726" ], - "name" : "Multiply_24732", - "op" : "Multiply", - "outputs" : ["Multiply_24732"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24726", "Parameter_14318" ], - "name" : "Multiply_24733", - "op" : "Multiply", - "outputs" : ["Multiply_24733"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15212", "Add_24726" ], - "name" : "Multiply_24734", - "op" : "Multiply", - "outputs" : ["Multiply_24734"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24727", "Parameter_15271" ], - "name" : "Divide_24735", - "op" : "Divide", - "outputs" : ["Divide_24735"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24728", "Parameter_15242" ], - "name" : "Multiply_24736", - "op" : "Multiply", - "outputs" : ["Multiply_24736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15255", "Add_24728" ], - "name" : "Multiply_24737", - "op" : "Multiply", - "outputs" : ["Multiply_24737"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24728", "Parameter_15175" ], - "name" : "Multiply_24738", - "op" : "Multiply", - "outputs" : ["Multiply_24738"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15263", "Add_24728" ], - "name" : "Multiply_24739", - "op" : "Multiply", - "outputs" : ["Multiply_24739"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24730", "Parameter_15229" ], - "name" : "Multiply_24740", - "op" : "Multiply", - "outputs" : ["Multiply_24740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24731"], - "name" : "Negative_24741", - "op" : "Negative", - "outputs" : ["Negative_24741"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24733"], - "name" : "Negative_24742", - "op" : "Negative", - "outputs" : ["Negative_24742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24734", "Multiply_18973" ], - "name" : "Divide_24743", - "op" : "Divide", - "outputs" : ["Divide_24743"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24735", "Parameter_15272" ], - "name" : "Multiply_24744", - "op" : "Multiply", - "outputs" : ["Multiply_24744"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24736"], - "name" : "Negative_24745", - "op" : "Negative", - "outputs" : ["Negative_24745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24737", "Multiply_18974" ], - "name" : "Divide_24746", - "op" : "Divide", - "outputs" : ["Divide_24746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24738"], - "name" : "Negative_24747", - "op" : "Negative", - "outputs" : ["Negative_24747"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24740"], - "name" : "Negative_24748", - "op" : "Negative", - "outputs" : ["Negative_24748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24741", "Parameter_15220" ], - "name" : "Multiply_24749", - "op" : "Multiply", - "outputs" : ["Multiply_24749"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24742", "Parameter_15212" ], - "name" : "Multiply_24750", - "op" : "Multiply", - "outputs" : ["Multiply_24750"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18586", "Divide_24743" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24751", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24751"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Multiply_24744"], - "name" : "Negative_24752", - "op" : "Negative", - "outputs" : ["Negative_24752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24745", "Parameter_15255" ], - "name" : "Multiply_24753", - "op" : "Multiply", - "outputs" : ["Multiply_24753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18645", "Divide_24746" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24754", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24754"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24747", "Parameter_15263" ], - "name" : "Multiply_24755", - "op" : "Multiply", - "outputs" : ["Multiply_24755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24749", "Parameter_15221" ], - "name" : "Divide_24756", - "op" : "Divide", - "outputs" : ["Divide_24756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24750", "Parameter_15213" ], - "name" : "Divide_24757", - "op" : "Divide", - "outputs" : ["Divide_24757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24751"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24758", - "op" : "Slice", - "outputs" : ["Slice_24758"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24753", "Parameter_15256" ], - "name" : "Divide_24759", - "op" : "Divide", - "outputs" : ["Divide_24759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24754"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24760", - "op" : "Slice", - "outputs" : ["Slice_24760"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24755", "Parameter_15264" ], - "name" : "Divide_24761", - "op" : "Divide", - "outputs" : ["Divide_24761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24756", "Parameter_15222" ], - "name" : "Multiply_24762", - "op" : "Multiply", - "outputs" : ["Multiply_24762"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24757", "Parameter_15214" ], - "name" : "Multiply_24763", - "op" : "Multiply", - "outputs" : ["Multiply_24763"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24759", "Parameter_15257" ], - "name" : "Multiply_24764", - "op" : "Multiply", - "outputs" : ["Multiply_24764"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24761", "Parameter_15265" ], - "name" : "Multiply_24765", - "op" : "Multiply", - "outputs" : ["Multiply_24765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24762"], - "name" : "Negative_24766", - "op" : "Negative", - "outputs" : ["Negative_24766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24763"], - "name" : "Negative_24767", - "op" : "Negative", - "outputs" : ["Negative_24767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24764"], - "name" : "Negative_24768", - "op" : "Negative", - "outputs" : ["Negative_24768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24765"], - "name" : "Negative_24769", - "op" : "Negative", - "outputs" : ["Negative_24769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24758", "Negative_24767" ], - "name" : "Add_24770", - "op" : "Add", - "outputs" : ["Add_24770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24760", "Negative_24768" ], - "name" : "Add_24771", - "op" : "Add", - "outputs" : ["Add_24771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24751", "Add_24770" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24772", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24772"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24754", "Add_24771" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24773", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24773"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24772"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24774", - "op" : "Slice", - "outputs" : ["Slice_24774"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24773"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24775", - "op" : "Slice", - "outputs" : ["Slice_24775"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24774", "Negative_24766" ], - "name" : "Add_24776", - "op" : "Add", - "outputs" : ["Add_24776"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24775", "Negative_24769" ], - "name" : "Add_24777", - "op" : "Add", - "outputs" : ["Add_24777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24772", "Add_24776" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24778", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24778"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24773", "Add_24777" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24779", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24779"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24778"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24780", - "op" : "Slice", - "outputs" : ["Slice_24780"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24779"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24781", - "op" : "Slice", - "outputs" : ["Slice_24781"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24780", "Negative_24748" ], - "name" : "Add_24782", - "op" : "Add", - "outputs" : ["Add_24782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24781", "Negative_24752" ], - "name" : "Add_24783", - "op" : "Add", - "outputs" : ["Add_24783"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24778", "Add_24782" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24784", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24784"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24779", "Add_24783" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24785", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24785"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24784"], - "name" : "Sum_24786", - "op" : "Sum", - "outputs" : ["Sum_24786"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24784"], - "name" : "Reshape_24787", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24787"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18968", "ReplaceSlice_24784" ], - "name" : "Dot_24788", - "op" : "Dot", - "outputs" : ["Dot_24788"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24784"], - "name" : "Sum_24789", - "op" : "Sum", - "outputs" : ["Sum_24789"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24784"], - "name" : "Reshape_24790", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24790"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18970", "ReplaceSlice_24784" ], - "name" : "Dot_24791", - "op" : "Dot", - "outputs" : ["Dot_24791"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24785"], - "name" : "Sum_24792", - "op" : "Sum", - "outputs" : ["Sum_24792"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24785"], - "name" : "Reshape_24793", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24793"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18969", "ReplaceSlice_24785" ], - "name" : "Dot_24794", - "op" : "Dot", - "outputs" : ["Dot_24794"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24785"], - "name" : "Sum_24795", - "op" : "Sum", - "outputs" : ["Sum_24795"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24785"], - "name" : "Reshape_24796", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24796"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18674", "ReplaceSlice_24785" ], - "name" : "Dot_24797", - "op" : "Dot", - "outputs" : ["Dot_24797"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24688", "Sum_24786" ], - "name" : "Add_24798", - "op" : "Add", - "outputs" : ["Add_24798"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14324", "Reshape_24787" ], - "name" : "Dot_24799", - "op" : "Dot", - "outputs" : ["Dot_24799"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24788"], - "name" : "Reshape_24800", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24800"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24691", "Sum_24789" ], - "name" : "Add_24801", - "op" : "Add", - "outputs" : ["Add_24801"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15172", "Reshape_24790" ], - "name" : "Dot_24802", - "op" : "Dot", - "outputs" : ["Dot_24802"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24791"], - "name" : "Reshape_24803", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24803"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24694", "Sum_24792" ], - "name" : "Add_24804", - "op" : "Add", - "outputs" : ["Add_24804"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15248", "Reshape_24793" ], - "name" : "Dot_24805", - "op" : "Dot", - "outputs" : ["Dot_24805"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24794"], - "name" : "Reshape_24806", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24806"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24697", "Sum_24795" ], - "name" : "Add_24807", - "op" : "Add", - "outputs" : ["Add_24807"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15252", "Reshape_24796" ], - "name" : "Dot_24808", - "op" : "Dot", - "outputs" : ["Dot_24808"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24797"], - "name" : "Reshape_24809", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24809"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24799"], - "name" : "Reshape_24810", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24810"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24800"], - "name" : "Reshape_24811", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24811"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24802"], - "name" : "Reshape_24812", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24812"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24803"], - "name" : "Reshape_24813", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24813"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24805"], - "name" : "Reshape_24814", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24814"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24806"], - "name" : "Reshape_24815", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24815"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24808"], - "name" : "Reshape_24816", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24816"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24809"], - "name" : "Reshape_24817", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24817"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24810", "Reshape_18794" ], - "name" : "Add_24818", - "op" : "Add", - "outputs" : ["Add_24818"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24709", "Reshape_24811" ], - "name" : "Add_24819", - "op" : "Add", - "outputs" : ["Add_24819"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24710", "Reshape_24813" ], - "name" : "Add_24820", - "op" : "Add", - "outputs" : ["Add_24820"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24814", "Reshape_24812" ], - "name" : "Add_24821", - "op" : "Add", - "outputs" : ["Add_24821"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24712", "Reshape_24815" ], - "name" : "Add_24822", - "op" : "Add", - "outputs" : ["Add_24822"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24816"], - "name" : "Reshape_24823", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24823"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24714", "Reshape_24817" ], - "name" : "Add_24824", - "op" : "Add", - "outputs" : ["Add_24824"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24818", "Parameter_14326" ], - "name" : "Multiply_24825", - "op" : "Multiply", - "outputs" : ["Multiply_24825"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15162", "Add_24818" ], - "name" : "Multiply_24826", - "op" : "Multiply", - "outputs" : ["Multiply_24826"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24821", "Parameter_15174" ], - "name" : "Multiply_24827", - "op" : "Multiply", - "outputs" : ["Multiply_24827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15205", "Add_24821" ], - "name" : "Multiply_24828", - "op" : "Multiply", - "outputs" : ["Multiply_24828"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24729", "Reshape_24823" ], - "name" : "Add_24829", - "op" : "Add", - "outputs" : ["Add_24829"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24825"], - "name" : "Negative_24830", - "op" : "Negative", - "outputs" : ["Negative_24830"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24826", "Multiply_18966" ], - "name" : "Divide_24831", - "op" : "Divide", - "outputs" : ["Divide_24831"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24827"], - "name" : "Negative_24832", - "op" : "Negative", - "outputs" : ["Negative_24832"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24828", "Multiply_18967" ], - "name" : "Divide_24833", - "op" : "Divide", - "outputs" : ["Divide_24833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24724", "Add_24829" ], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "ReplaceSlice_24834", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24834"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 13, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24830", "Parameter_15162" ], - "name" : "Multiply_24835", - "op" : "Multiply", - "outputs" : ["Multiply_24835"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24732", "Divide_24831" ], - "name" : "Add_24836", - "op" : "Add", - "outputs" : ["Add_24836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24832", "Parameter_15205" ], - "name" : "Multiply_24837", - "op" : "Multiply", - "outputs" : ["Multiply_24837"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24739", "Divide_24833" ], - "name" : "Add_24838", - "op" : "Add", - "outputs" : ["Add_24838"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24834"], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "Slice_24839", - "op" : "Slice", - "outputs" : ["Slice_24839"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 12, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24835", "Parameter_15163" ], - "name" : "Divide_24840", - "op" : "Divide", - "outputs" : ["Divide_24840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24836", "Parameter_14329" ], - "name" : "Multiply_24841", - "op" : "Multiply", - "outputs" : ["Multiply_24841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15147", "Add_24836" ], - "name" : "Multiply_24842", - "op" : "Multiply", - "outputs" : ["Multiply_24842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24836", "Parameter_14338" ], - "name" : "Multiply_24843", - "op" : "Multiply", - "outputs" : ["Multiply_24843"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15155", "Add_24836" ], - "name" : "Multiply_24844", - "op" : "Multiply", - "outputs" : ["Multiply_24844"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24837", "Parameter_15206" ], - "name" : "Divide_24845", - "op" : "Divide", - "outputs" : ["Divide_24845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24838", "Parameter_15177" ], - "name" : "Multiply_24846", - "op" : "Multiply", - "outputs" : ["Multiply_24846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15190", "Add_24838" ], - "name" : "Multiply_24847", - "op" : "Multiply", - "outputs" : ["Multiply_24847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24838", "Parameter_15110" ], - "name" : "Multiply_24848", - "op" : "Multiply", - "outputs" : ["Multiply_24848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15198", "Add_24838" ], - "name" : "Multiply_24849", - "op" : "Multiply", - "outputs" : ["Multiply_24849"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24840", "Parameter_15164" ], - "name" : "Multiply_24850", - "op" : "Multiply", - "outputs" : ["Multiply_24850"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24841"], - "name" : "Negative_24851", - "op" : "Negative", - "outputs" : ["Negative_24851"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24842", "Multiply_18962" ], - "name" : "Divide_24852", - "op" : "Divide", - "outputs" : ["Divide_24852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24843"], - "name" : "Negative_24853", - "op" : "Negative", - "outputs" : ["Negative_24853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24845", "Parameter_15207" ], - "name" : "Multiply_24854", - "op" : "Multiply", - "outputs" : ["Multiply_24854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24846"], - "name" : "Negative_24855", - "op" : "Negative", - "outputs" : ["Negative_24855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24847", "Multiply_18963" ], - "name" : "Divide_24856", - "op" : "Divide", - "outputs" : ["Divide_24856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24848"], - "name" : "Negative_24857", - "op" : "Negative", - "outputs" : ["Negative_24857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24850"], - "name" : "Negative_24858", - "op" : "Negative", - "outputs" : ["Negative_24858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24851", "Parameter_15147" ], - "name" : "Multiply_24859", - "op" : "Multiply", - "outputs" : ["Multiply_24859"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18587", "Divide_24852" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24860", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24860"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24853", "Parameter_15155" ], - "name" : "Multiply_24861", - "op" : "Multiply", - "outputs" : ["Multiply_24861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24854"], - "name" : "Negative_24862", - "op" : "Negative", - "outputs" : ["Negative_24862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24855", "Parameter_15190" ], - "name" : "Multiply_24863", - "op" : "Multiply", - "outputs" : ["Multiply_24863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18646", "Divide_24856" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24864", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24864"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24857", "Parameter_15198" ], - "name" : "Multiply_24865", - "op" : "Multiply", - "outputs" : ["Multiply_24865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24859", "Parameter_15148" ], - "name" : "Divide_24866", - "op" : "Divide", - "outputs" : ["Divide_24866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24860"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24867", - "op" : "Slice", - "outputs" : ["Slice_24867"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24861", "Parameter_15156" ], - "name" : "Divide_24868", - "op" : "Divide", - "outputs" : ["Divide_24868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24863", "Parameter_15191" ], - "name" : "Divide_24869", - "op" : "Divide", - "outputs" : ["Divide_24869"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24864"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24870", - "op" : "Slice", - "outputs" : ["Slice_24870"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24865", "Parameter_15199" ], - "name" : "Divide_24871", - "op" : "Divide", - "outputs" : ["Divide_24871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24866", "Parameter_15149" ], - "name" : "Multiply_24872", - "op" : "Multiply", - "outputs" : ["Multiply_24872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24868", "Parameter_15157" ], - "name" : "Multiply_24873", - "op" : "Multiply", - "outputs" : ["Multiply_24873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24869", "Parameter_15192" ], - "name" : "Multiply_24874", - "op" : "Multiply", - "outputs" : ["Multiply_24874"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24871", "Parameter_15200" ], - "name" : "Multiply_24875", - "op" : "Multiply", - "outputs" : ["Multiply_24875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24872"], - "name" : "Negative_24876", - "op" : "Negative", - "outputs" : ["Negative_24876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24873"], - "name" : "Negative_24877", - "op" : "Negative", - "outputs" : ["Negative_24877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24874"], - "name" : "Negative_24878", - "op" : "Negative", - "outputs" : ["Negative_24878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24875"], - "name" : "Negative_24879", - "op" : "Negative", - "outputs" : ["Negative_24879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24867", "Negative_24876" ], - "name" : "Add_24880", - "op" : "Add", - "outputs" : ["Add_24880"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24870", "Negative_24878" ], - "name" : "Add_24881", - "op" : "Add", - "outputs" : ["Add_24881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24860", "Add_24880" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24882", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24882"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24864", "Add_24881" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24883", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24883"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24882"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24884", - "op" : "Slice", - "outputs" : ["Slice_24884"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24883"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24885", - "op" : "Slice", - "outputs" : ["Slice_24885"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24884", "Negative_24877" ], - "name" : "Add_24886", - "op" : "Add", - "outputs" : ["Add_24886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24885", "Negative_24879" ], - "name" : "Add_24887", - "op" : "Add", - "outputs" : ["Add_24887"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24882", "Add_24886" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24888", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24888"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24883", "Add_24887" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24889", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24889"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24888"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24890", - "op" : "Slice", - "outputs" : ["Slice_24890"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24889"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_24891", - "op" : "Slice", - "outputs" : ["Slice_24891"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24890", "Negative_24858" ], - "name" : "Add_24892", - "op" : "Add", - "outputs" : ["Add_24892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24891", "Negative_24862" ], - "name" : "Add_24893", - "op" : "Add", - "outputs" : ["Add_24893"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24888", "Add_24892" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24894", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24894"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24889", "Add_24893" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_24895", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24895"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24894"], - "name" : "Sum_24896", - "op" : "Sum", - "outputs" : ["Sum_24896"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24894"], - "name" : "Reshape_24897", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24897"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18957", "ReplaceSlice_24894" ], - "name" : "Dot_24898", - "op" : "Dot", - "outputs" : ["Dot_24898"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24894"], - "name" : "Sum_24899", - "op" : "Sum", - "outputs" : ["Sum_24899"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24894"], - "name" : "Reshape_24900", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24900"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18959", "ReplaceSlice_24894" ], - "name" : "Dot_24901", - "op" : "Dot", - "outputs" : ["Dot_24901"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24895"], - "name" : "Sum_24902", - "op" : "Sum", - "outputs" : ["Sum_24902"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24895"], - "name" : "Reshape_24903", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24903"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18958", "ReplaceSlice_24895" ], - "name" : "Dot_24904", - "op" : "Dot", - "outputs" : ["Dot_24904"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24895"], - "name" : "Sum_24905", - "op" : "Sum", - "outputs" : ["Sum_24905"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_24895"], - "name" : "Reshape_24906", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_24906"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18673", "ReplaceSlice_24895" ], - "name" : "Dot_24907", - "op" : "Dot", - "outputs" : ["Dot_24907"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24798", "Sum_24896" ], - "name" : "Add_24908", - "op" : "Add", - "outputs" : ["Add_24908"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14335", "Reshape_24897" ], - "name" : "Dot_24909", - "op" : "Dot", - "outputs" : ["Dot_24909"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24898"], - "name" : "Reshape_24910", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24910"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24801", "Sum_24899" ], - "name" : "Add_24911", - "op" : "Add", - "outputs" : ["Add_24911"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15107", "Reshape_24900" ], - "name" : "Dot_24912", - "op" : "Dot", - "outputs" : ["Dot_24912"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24901"], - "name" : "Reshape_24913", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24913"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24804", "Sum_24902" ], - "name" : "Add_24914", - "op" : "Add", - "outputs" : ["Add_24914"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15183", "Reshape_24903" ], - "name" : "Dot_24915", - "op" : "Dot", - "outputs" : ["Dot_24915"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24904"], - "name" : "Reshape_24916", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24916"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24807", "Sum_24905" ], - "name" : "Add_24917", - "op" : "Add", - "outputs" : ["Add_24917"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15187", "Reshape_24906" ], - "name" : "Dot_24918", - "op" : "Dot", - "outputs" : ["Dot_24918"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_24907"], - "name" : "Reshape_24919", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_24919"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24909"], - "name" : "Reshape_24920", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24920"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24910"], - "name" : "Reshape_24921", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24921"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24912"], - "name" : "Reshape_24922", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24922"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24913"], - "name" : "Reshape_24923", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24923"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24915"], - "name" : "Reshape_24924", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24924"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24916"], - "name" : "Reshape_24925", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24925"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_24918"], - "name" : "Reshape_24926", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24926"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_24919"], - "name" : "Reshape_24927", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_24927"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24920", "Reshape_18793" ], - "name" : "Add_24928", - "op" : "Add", - "outputs" : ["Add_24928"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24819", "Reshape_24921" ], - "name" : "Add_24929", - "op" : "Add", - "outputs" : ["Add_24929"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24820", "Reshape_24923" ], - "name" : "Add_24930", - "op" : "Add", - "outputs" : ["Add_24930"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_24924", "Reshape_24922" ], - "name" : "Add_24931", - "op" : "Add", - "outputs" : ["Add_24931"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24822", "Reshape_24925" ], - "name" : "Add_24932", - "op" : "Add", - "outputs" : ["Add_24932"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_24926"], - "name" : "Reshape_24933", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_24933"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24824", "Reshape_24927" ], - "name" : "Add_24934", - "op" : "Add", - "outputs" : ["Add_24934"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24928", "Parameter_14337" ], - "name" : "Multiply_24935", - "op" : "Multiply", - "outputs" : ["Multiply_24935"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15097", "Add_24928" ], - "name" : "Multiply_24936", - "op" : "Multiply", - "outputs" : ["Multiply_24936"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24931", "Parameter_15109" ], - "name" : "Multiply_24937", - "op" : "Multiply", - "outputs" : ["Multiply_24937"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15140", "Add_24931" ], - "name" : "Multiply_24938", - "op" : "Multiply", - "outputs" : ["Multiply_24938"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24839", "Reshape_24933" ], - "name" : "Add_24939", - "op" : "Add", - "outputs" : ["Add_24939"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_24935"], - "name" : "Negative_24940", - "op" : "Negative", - "outputs" : ["Negative_24940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24936", "Multiply_18955" ], - "name" : "Divide_24941", - "op" : "Divide", - "outputs" : ["Divide_24941"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24937"], - "name" : "Negative_24942", - "op" : "Negative", - "outputs" : ["Negative_24942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24938", "Multiply_18956" ], - "name" : "Divide_24943", - "op" : "Divide", - "outputs" : ["Divide_24943"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24834", "Add_24939" ], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "ReplaceSlice_24944", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24944"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 12, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_24940", "Parameter_15097" ], - "name" : "Multiply_24945", - "op" : "Multiply", - "outputs" : ["Multiply_24945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24844", "Divide_24941" ], - "name" : "Add_24946", - "op" : "Add", - "outputs" : ["Add_24946"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24942", "Parameter_15140" ], - "name" : "Multiply_24947", - "op" : "Multiply", - "outputs" : ["Multiply_24947"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24849", "Divide_24943" ], - "name" : "Add_24948", - "op" : "Add", - "outputs" : ["Add_24948"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24944"], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "Slice_24949", - "op" : "Slice", - "outputs" : ["Slice_24949"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 11, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_24945", "Parameter_15098" ], - "name" : "Divide_24950", - "op" : "Divide", - "outputs" : ["Divide_24950"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24946", "Parameter_14340" ], - "name" : "Multiply_24951", - "op" : "Multiply", - "outputs" : ["Multiply_24951"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15082", "Add_24946" ], - "name" : "Multiply_24952", - "op" : "Multiply", - "outputs" : ["Multiply_24952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24946", "Parameter_14349" ], - "name" : "Multiply_24953", - "op" : "Multiply", - "outputs" : ["Multiply_24953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15090", "Add_24946" ], - "name" : "Multiply_24954", - "op" : "Multiply", - "outputs" : ["Multiply_24954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24947", "Parameter_15141" ], - "name" : "Divide_24955", - "op" : "Divide", - "outputs" : ["Divide_24955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24948", "Parameter_15112" ], - "name" : "Multiply_24956", - "op" : "Multiply", - "outputs" : ["Multiply_24956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15125", "Add_24948" ], - "name" : "Multiply_24957", - "op" : "Multiply", - "outputs" : ["Multiply_24957"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24948", "Parameter_15045" ], - "name" : "Multiply_24958", - "op" : "Multiply", - "outputs" : ["Multiply_24958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15133", "Add_24948" ], - "name" : "Multiply_24959", - "op" : "Multiply", - "outputs" : ["Multiply_24959"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24950", "Parameter_15099" ], - "name" : "Multiply_24960", - "op" : "Multiply", - "outputs" : ["Multiply_24960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24951"], - "name" : "Negative_24961", - "op" : "Negative", - "outputs" : ["Negative_24961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24952", "Multiply_18951" ], - "name" : "Divide_24962", - "op" : "Divide", - "outputs" : ["Divide_24962"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24953"], - "name" : "Negative_24963", - "op" : "Negative", - "outputs" : ["Negative_24963"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24955", "Parameter_15142" ], - "name" : "Multiply_24964", - "op" : "Multiply", - "outputs" : ["Multiply_24964"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24956"], - "name" : "Negative_24965", - "op" : "Negative", - "outputs" : ["Negative_24965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24957", "Multiply_18952" ], - "name" : "Divide_24966", - "op" : "Divide", - "outputs" : ["Divide_24966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24958"], - "name" : "Negative_24967", - "op" : "Negative", - "outputs" : ["Negative_24967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24960"], - "name" : "Negative_24968", - "op" : "Negative", - "outputs" : ["Negative_24968"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24961", "Parameter_15082" ], - "name" : "Multiply_24969", - "op" : "Multiply", - "outputs" : ["Multiply_24969"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18588", "Divide_24962" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24970", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24970"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24963", "Parameter_15090" ], - "name" : "Multiply_24971", - "op" : "Multiply", - "outputs" : ["Multiply_24971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24964"], - "name" : "Negative_24972", - "op" : "Negative", - "outputs" : ["Negative_24972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_24965", "Parameter_15125" ], - "name" : "Multiply_24973", - "op" : "Multiply", - "outputs" : ["Multiply_24973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18647", "Divide_24966" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_24974", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24974"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_24967", "Parameter_15133" ], - "name" : "Multiply_24975", - "op" : "Multiply", - "outputs" : ["Multiply_24975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24969", "Parameter_15083" ], - "name" : "Divide_24976", - "op" : "Divide", - "outputs" : ["Divide_24976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24970"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24977", - "op" : "Slice", - "outputs" : ["Slice_24977"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24971", "Parameter_15091" ], - "name" : "Divide_24978", - "op" : "Divide", - "outputs" : ["Divide_24978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24973", "Parameter_15126" ], - "name" : "Divide_24979", - "op" : "Divide", - "outputs" : ["Divide_24979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24974"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_24980", - "op" : "Slice", - "outputs" : ["Slice_24980"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24975", "Parameter_15134" ], - "name" : "Divide_24981", - "op" : "Divide", - "outputs" : ["Divide_24981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24976", "Parameter_15084" ], - "name" : "Multiply_24982", - "op" : "Multiply", - "outputs" : ["Multiply_24982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24978", "Parameter_15092" ], - "name" : "Multiply_24983", - "op" : "Multiply", - "outputs" : ["Multiply_24983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24979", "Parameter_15127" ], - "name" : "Multiply_24984", - "op" : "Multiply", - "outputs" : ["Multiply_24984"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_24981", "Parameter_15135" ], - "name" : "Multiply_24985", - "op" : "Multiply", - "outputs" : ["Multiply_24985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24982"], - "name" : "Negative_24986", - "op" : "Negative", - "outputs" : ["Negative_24986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24983"], - "name" : "Negative_24987", - "op" : "Negative", - "outputs" : ["Negative_24987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24984"], - "name" : "Negative_24988", - "op" : "Negative", - "outputs" : ["Negative_24988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_24985"], - "name" : "Negative_24989", - "op" : "Negative", - "outputs" : ["Negative_24989"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24977", "Negative_24986" ], - "name" : "Add_24990", - "op" : "Add", - "outputs" : ["Add_24990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24980", "Negative_24988" ], - "name" : "Add_24991", - "op" : "Add", - "outputs" : ["Add_24991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24970", "Add_24990" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24992", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24992"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24974", "Add_24991" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_24993", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24993"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24992"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24994", - "op" : "Slice", - "outputs" : ["Slice_24994"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24993"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_24995", - "op" : "Slice", - "outputs" : ["Slice_24995"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24994", "Negative_24987" ], - "name" : "Add_24996", - "op" : "Add", - "outputs" : ["Add_24996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24995", "Negative_24989" ], - "name" : "Add_24997", - "op" : "Add", - "outputs" : ["Add_24997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24992", "Add_24996" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24998", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24998"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24993", "Add_24997" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_24999", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_24999"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_24998"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25000", - "op" : "Slice", - "outputs" : ["Slice_25000"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_24999"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25001", - "op" : "Slice", - "outputs" : ["Slice_25001"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25000", "Negative_24968" ], - "name" : "Add_25002", - "op" : "Add", - "outputs" : ["Add_25002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25001", "Negative_24972" ], - "name" : "Add_25003", - "op" : "Add", - "outputs" : ["Add_25003"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24998", "Add_25002" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25004", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25004"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_24999", "Add_25003" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25005", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25005"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25004"], - "name" : "Sum_25006", - "op" : "Sum", - "outputs" : ["Sum_25006"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25004"], - "name" : "Reshape_25007", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25007"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18946", "ReplaceSlice_25004" ], - "name" : "Dot_25008", - "op" : "Dot", - "outputs" : ["Dot_25008"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25004"], - "name" : "Sum_25009", - "op" : "Sum", - "outputs" : ["Sum_25009"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25004"], - "name" : "Reshape_25010", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25010"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18948", "ReplaceSlice_25004" ], - "name" : "Dot_25011", - "op" : "Dot", - "outputs" : ["Dot_25011"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25005"], - "name" : "Sum_25012", - "op" : "Sum", - "outputs" : ["Sum_25012"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25005"], - "name" : "Reshape_25013", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25013"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18947", "ReplaceSlice_25005" ], - "name" : "Dot_25014", - "op" : "Dot", - "outputs" : ["Dot_25014"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25005"], - "name" : "Sum_25015", - "op" : "Sum", - "outputs" : ["Sum_25015"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25005"], - "name" : "Reshape_25016", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25016"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18672", "ReplaceSlice_25005" ], - "name" : "Dot_25017", - "op" : "Dot", - "outputs" : ["Dot_25017"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24908", "Sum_25006" ], - "name" : "Add_25018", - "op" : "Add", - "outputs" : ["Add_25018"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14346", "Reshape_25007" ], - "name" : "Dot_25019", - "op" : "Dot", - "outputs" : ["Dot_25019"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25008"], - "name" : "Reshape_25020", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25020"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24911", "Sum_25009" ], - "name" : "Add_25021", - "op" : "Add", - "outputs" : ["Add_25021"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15042", "Reshape_25010" ], - "name" : "Dot_25022", - "op" : "Dot", - "outputs" : ["Dot_25022"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25011"], - "name" : "Reshape_25023", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25023"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24914", "Sum_25012" ], - "name" : "Add_25024", - "op" : "Add", - "outputs" : ["Add_25024"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15118", "Reshape_25013" ], - "name" : "Dot_25025", - "op" : "Dot", - "outputs" : ["Dot_25025"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25014"], - "name" : "Reshape_25026", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25026"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_24917", "Sum_25015" ], - "name" : "Add_25027", - "op" : "Add", - "outputs" : ["Add_25027"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15122", "Reshape_25016" ], - "name" : "Dot_25028", - "op" : "Dot", - "outputs" : ["Dot_25028"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25017"], - "name" : "Reshape_25029", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25029"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25019"], - "name" : "Reshape_25030", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25030"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25020"], - "name" : "Reshape_25031", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25031"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25022"], - "name" : "Reshape_25032", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25023"], - "name" : "Reshape_25033", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25033"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25025"], - "name" : "Reshape_25034", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25034"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25026"], - "name" : "Reshape_25035", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25035"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25028"], - "name" : "Reshape_25036", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25036"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25029"], - "name" : "Reshape_25037", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25037"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25030", "Reshape_18792" ], - "name" : "Add_25038", - "op" : "Add", - "outputs" : ["Add_25038"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24929", "Reshape_25031" ], - "name" : "Add_25039", - "op" : "Add", - "outputs" : ["Add_25039"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_24930", "Reshape_25033" ], - "name" : "Add_25040", - "op" : "Add", - "outputs" : ["Add_25040"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25034", "Reshape_25032" ], - "name" : "Add_25041", - "op" : "Add", - "outputs" : ["Add_25041"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_24932", "Reshape_25035" ], - "name" : "Add_25042", - "op" : "Add", - "outputs" : ["Add_25042"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25036"], - "name" : "Reshape_25043", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25043"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_24934", "Reshape_25037" ], - "name" : "Add_25044", - "op" : "Add", - "outputs" : ["Add_25044"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25038", "Parameter_14348" ], - "name" : "Multiply_25045", - "op" : "Multiply", - "outputs" : ["Multiply_25045"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15032", "Add_25038" ], - "name" : "Multiply_25046", - "op" : "Multiply", - "outputs" : ["Multiply_25046"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25041", "Parameter_15044" ], - "name" : "Multiply_25047", - "op" : "Multiply", - "outputs" : ["Multiply_25047"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15075", "Add_25041" ], - "name" : "Multiply_25048", - "op" : "Multiply", - "outputs" : ["Multiply_25048"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_24949", "Reshape_25043" ], - "name" : "Add_25049", - "op" : "Add", - "outputs" : ["Add_25049"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25045"], - "name" : "Negative_25050", - "op" : "Negative", - "outputs" : ["Negative_25050"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25046", "Multiply_18944" ], - "name" : "Divide_25051", - "op" : "Divide", - "outputs" : ["Divide_25051"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25047"], - "name" : "Negative_25052", - "op" : "Negative", - "outputs" : ["Negative_25052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25048", "Multiply_18945" ], - "name" : "Divide_25053", - "op" : "Divide", - "outputs" : ["Divide_25053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_24944", "Add_25049" ], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "ReplaceSlice_25054", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25054"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 11, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25050", "Parameter_15032" ], - "name" : "Multiply_25055", - "op" : "Multiply", - "outputs" : ["Multiply_25055"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24954", "Divide_25051" ], - "name" : "Add_25056", - "op" : "Add", - "outputs" : ["Add_25056"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25052", "Parameter_15075" ], - "name" : "Multiply_25057", - "op" : "Multiply", - "outputs" : ["Multiply_25057"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_24959", "Divide_25053" ], - "name" : "Add_25058", - "op" : "Add", - "outputs" : ["Add_25058"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25054"], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "Slice_25059", - "op" : "Slice", - "outputs" : ["Slice_25059"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 10, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25055", "Parameter_15033" ], - "name" : "Divide_25060", - "op" : "Divide", - "outputs" : ["Divide_25060"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25056", "Parameter_14351" ], - "name" : "Multiply_25061", - "op" : "Multiply", - "outputs" : ["Multiply_25061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15017", "Add_25056" ], - "name" : "Multiply_25062", - "op" : "Multiply", - "outputs" : ["Multiply_25062"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25056", "Parameter_14360" ], - "name" : "Multiply_25063", - "op" : "Multiply", - "outputs" : ["Multiply_25063"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15025", "Add_25056" ], - "name" : "Multiply_25064", - "op" : "Multiply", - "outputs" : ["Multiply_25064"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25057", "Parameter_15076" ], - "name" : "Divide_25065", - "op" : "Divide", - "outputs" : ["Divide_25065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25058", "Parameter_15047" ], - "name" : "Multiply_25066", - "op" : "Multiply", - "outputs" : ["Multiply_25066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15060", "Add_25058" ], - "name" : "Multiply_25067", - "op" : "Multiply", - "outputs" : ["Multiply_25067"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25058", "Parameter_14980" ], - "name" : "Multiply_25068", - "op" : "Multiply", - "outputs" : ["Multiply_25068"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15068", "Add_25058" ], - "name" : "Multiply_25069", - "op" : "Multiply", - "outputs" : ["Multiply_25069"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25060", "Parameter_15034" ], - "name" : "Multiply_25070", - "op" : "Multiply", - "outputs" : ["Multiply_25070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25061"], - "name" : "Negative_25071", - "op" : "Negative", - "outputs" : ["Negative_25071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25062", "Multiply_18940" ], - "name" : "Divide_25072", - "op" : "Divide", - "outputs" : ["Divide_25072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25063"], - "name" : "Negative_25073", - "op" : "Negative", - "outputs" : ["Negative_25073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25065", "Parameter_15077" ], - "name" : "Multiply_25074", - "op" : "Multiply", - "outputs" : ["Multiply_25074"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25066"], - "name" : "Negative_25075", - "op" : "Negative", - "outputs" : ["Negative_25075"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25067", "Multiply_18941" ], - "name" : "Divide_25076", - "op" : "Divide", - "outputs" : ["Divide_25076"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25068"], - "name" : "Negative_25077", - "op" : "Negative", - "outputs" : ["Negative_25077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25070"], - "name" : "Negative_25078", - "op" : "Negative", - "outputs" : ["Negative_25078"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25071", "Parameter_15017" ], - "name" : "Multiply_25079", - "op" : "Multiply", - "outputs" : ["Multiply_25079"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18589", "Divide_25072" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25080", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25080"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25073", "Parameter_15025" ], - "name" : "Multiply_25081", - "op" : "Multiply", - "outputs" : ["Multiply_25081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25074"], - "name" : "Negative_25082", - "op" : "Negative", - "outputs" : ["Negative_25082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25075", "Parameter_15060" ], - "name" : "Multiply_25083", - "op" : "Multiply", - "outputs" : ["Multiply_25083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18648", "Divide_25076" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25084", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25084"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25077", "Parameter_15068" ], - "name" : "Multiply_25085", - "op" : "Multiply", - "outputs" : ["Multiply_25085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25079", "Parameter_15018" ], - "name" : "Divide_25086", - "op" : "Divide", - "outputs" : ["Divide_25086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25080"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25087", - "op" : "Slice", - "outputs" : ["Slice_25087"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25081", "Parameter_15026" ], - "name" : "Divide_25088", - "op" : "Divide", - "outputs" : ["Divide_25088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25083", "Parameter_15061" ], - "name" : "Divide_25089", - "op" : "Divide", - "outputs" : ["Divide_25089"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25084"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25090", - "op" : "Slice", - "outputs" : ["Slice_25090"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25085", "Parameter_15069" ], - "name" : "Divide_25091", - "op" : "Divide", - "outputs" : ["Divide_25091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25086", "Parameter_15019" ], - "name" : "Multiply_25092", - "op" : "Multiply", - "outputs" : ["Multiply_25092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25088", "Parameter_15027" ], - "name" : "Multiply_25093", - "op" : "Multiply", - "outputs" : ["Multiply_25093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25089", "Parameter_15062" ], - "name" : "Multiply_25094", - "op" : "Multiply", - "outputs" : ["Multiply_25094"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25091", "Parameter_15070" ], - "name" : "Multiply_25095", - "op" : "Multiply", - "outputs" : ["Multiply_25095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25092"], - "name" : "Negative_25096", - "op" : "Negative", - "outputs" : ["Negative_25096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25093"], - "name" : "Negative_25097", - "op" : "Negative", - "outputs" : ["Negative_25097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25094"], - "name" : "Negative_25098", - "op" : "Negative", - "outputs" : ["Negative_25098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25095"], - "name" : "Negative_25099", - "op" : "Negative", - "outputs" : ["Negative_25099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25087", "Negative_25096" ], - "name" : "Add_25100", - "op" : "Add", - "outputs" : ["Add_25100"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25090", "Negative_25098" ], - "name" : "Add_25101", - "op" : "Add", - "outputs" : ["Add_25101"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25080", "Add_25100" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25102", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25102"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25084", "Add_25101" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25103", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25103"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25102"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25104", - "op" : "Slice", - "outputs" : ["Slice_25104"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25103"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25105", - "op" : "Slice", - "outputs" : ["Slice_25105"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25104", "Negative_25097" ], - "name" : "Add_25106", - "op" : "Add", - "outputs" : ["Add_25106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25105", "Negative_25099" ], - "name" : "Add_25107", - "op" : "Add", - "outputs" : ["Add_25107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25102", "Add_25106" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25108", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25108"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25103", "Add_25107" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25109", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25109"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25108"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25110", - "op" : "Slice", - "outputs" : ["Slice_25110"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25109"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25111", - "op" : "Slice", - "outputs" : ["Slice_25111"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25110", "Negative_25078" ], - "name" : "Add_25112", - "op" : "Add", - "outputs" : ["Add_25112"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25111", "Negative_25082" ], - "name" : "Add_25113", - "op" : "Add", - "outputs" : ["Add_25113"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25108", "Add_25112" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25114", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25114"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25109", "Add_25113" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25115", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25115"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25114"], - "name" : "Sum_25116", - "op" : "Sum", - "outputs" : ["Sum_25116"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25114"], - "name" : "Reshape_25117", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25117"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18935", "ReplaceSlice_25114" ], - "name" : "Dot_25118", - "op" : "Dot", - "outputs" : ["Dot_25118"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25114"], - "name" : "Sum_25119", - "op" : "Sum", - "outputs" : ["Sum_25119"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25114"], - "name" : "Reshape_25120", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25120"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18937", "ReplaceSlice_25114" ], - "name" : "Dot_25121", - "op" : "Dot", - "outputs" : ["Dot_25121"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25115"], - "name" : "Sum_25122", - "op" : "Sum", - "outputs" : ["Sum_25122"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25115"], - "name" : "Reshape_25123", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25123"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18936", "ReplaceSlice_25115" ], - "name" : "Dot_25124", - "op" : "Dot", - "outputs" : ["Dot_25124"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25115"], - "name" : "Sum_25125", - "op" : "Sum", - "outputs" : ["Sum_25125"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25115"], - "name" : "Reshape_25126", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25126"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18671", "ReplaceSlice_25115" ], - "name" : "Dot_25127", - "op" : "Dot", - "outputs" : ["Dot_25127"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25018", "Sum_25116" ], - "name" : "Add_25128", - "op" : "Add", - "outputs" : ["Add_25128"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14357", "Reshape_25117" ], - "name" : "Dot_25129", - "op" : "Dot", - "outputs" : ["Dot_25129"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25118"], - "name" : "Reshape_25130", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25130"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25021", "Sum_25119" ], - "name" : "Add_25131", - "op" : "Add", - "outputs" : ["Add_25131"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14977", "Reshape_25120" ], - "name" : "Dot_25132", - "op" : "Dot", - "outputs" : ["Dot_25132"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25121"], - "name" : "Reshape_25133", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25133"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25024", "Sum_25122" ], - "name" : "Add_25134", - "op" : "Add", - "outputs" : ["Add_25134"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15053", "Reshape_25123" ], - "name" : "Dot_25135", - "op" : "Dot", - "outputs" : ["Dot_25135"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25124"], - "name" : "Reshape_25136", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25136"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25027", "Sum_25125" ], - "name" : "Add_25137", - "op" : "Add", - "outputs" : ["Add_25137"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_15057", "Reshape_25126" ], - "name" : "Dot_25138", - "op" : "Dot", - "outputs" : ["Dot_25138"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25127"], - "name" : "Reshape_25139", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25139"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25129"], - "name" : "Reshape_25140", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25140"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25130"], - "name" : "Reshape_25141", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25141"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25132"], - "name" : "Reshape_25142", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25133"], - "name" : "Reshape_25143", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25143"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25135"], - "name" : "Reshape_25144", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25144"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25136"], - "name" : "Reshape_25145", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25145"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25138"], - "name" : "Reshape_25146", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25146"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25139"], - "name" : "Reshape_25147", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25147"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25140", "Reshape_18791" ], - "name" : "Add_25148", - "op" : "Add", - "outputs" : ["Add_25148"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25039", "Reshape_25141" ], - "name" : "Add_25149", - "op" : "Add", - "outputs" : ["Add_25149"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25040", "Reshape_25143" ], - "name" : "Add_25150", - "op" : "Add", - "outputs" : ["Add_25150"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25144", "Reshape_25142" ], - "name" : "Add_25151", - "op" : "Add", - "outputs" : ["Add_25151"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25042", "Reshape_25145" ], - "name" : "Add_25152", - "op" : "Add", - "outputs" : ["Add_25152"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25146"], - "name" : "Reshape_25153", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25153"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25044", "Reshape_25147" ], - "name" : "Add_25154", - "op" : "Add", - "outputs" : ["Add_25154"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25148", "Parameter_14359" ], - "name" : "Multiply_25155", - "op" : "Multiply", - "outputs" : ["Multiply_25155"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14967", "Add_25148" ], - "name" : "Multiply_25156", - "op" : "Multiply", - "outputs" : ["Multiply_25156"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25151", "Parameter_14979" ], - "name" : "Multiply_25157", - "op" : "Multiply", - "outputs" : ["Multiply_25157"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15010", "Add_25151" ], - "name" : "Multiply_25158", - "op" : "Multiply", - "outputs" : ["Multiply_25158"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25059", "Reshape_25153" ], - "name" : "Add_25159", - "op" : "Add", - "outputs" : ["Add_25159"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25155"], - "name" : "Negative_25160", - "op" : "Negative", - "outputs" : ["Negative_25160"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25156", "Multiply_18933" ], - "name" : "Divide_25161", - "op" : "Divide", - "outputs" : ["Divide_25161"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25157"], - "name" : "Negative_25162", - "op" : "Negative", - "outputs" : ["Negative_25162"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25158", "Multiply_18934" ], - "name" : "Divide_25163", - "op" : "Divide", - "outputs" : ["Divide_25163"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25054", "Add_25159" ], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "ReplaceSlice_25164", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25164"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 10, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25160", "Parameter_14967" ], - "name" : "Multiply_25165", - "op" : "Multiply", - "outputs" : ["Multiply_25165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25064", "Divide_25161" ], - "name" : "Add_25166", - "op" : "Add", - "outputs" : ["Add_25166"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25162", "Parameter_15010" ], - "name" : "Multiply_25167", - "op" : "Multiply", - "outputs" : ["Multiply_25167"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25069", "Divide_25163" ], - "name" : "Add_25168", - "op" : "Add", - "outputs" : ["Add_25168"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25164"], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "Slice_25169", - "op" : "Slice", - "outputs" : ["Slice_25169"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 9, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25165", "Parameter_14968" ], - "name" : "Divide_25170", - "op" : "Divide", - "outputs" : ["Divide_25170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25166", "Parameter_14362" ], - "name" : "Multiply_25171", - "op" : "Multiply", - "outputs" : ["Multiply_25171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14952", "Add_25166" ], - "name" : "Multiply_25172", - "op" : "Multiply", - "outputs" : ["Multiply_25172"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25166", "Parameter_14371" ], - "name" : "Multiply_25173", - "op" : "Multiply", - "outputs" : ["Multiply_25173"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14960", "Add_25166" ], - "name" : "Multiply_25174", - "op" : "Multiply", - "outputs" : ["Multiply_25174"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25167", "Parameter_15011" ], - "name" : "Divide_25175", - "op" : "Divide", - "outputs" : ["Divide_25175"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25168", "Parameter_14982" ], - "name" : "Multiply_25176", - "op" : "Multiply", - "outputs" : ["Multiply_25176"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14995", "Add_25168" ], - "name" : "Multiply_25177", - "op" : "Multiply", - "outputs" : ["Multiply_25177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25168", "Parameter_14915" ], - "name" : "Multiply_25178", - "op" : "Multiply", - "outputs" : ["Multiply_25178"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_15003", "Add_25168" ], - "name" : "Multiply_25179", - "op" : "Multiply", - "outputs" : ["Multiply_25179"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25170", "Parameter_14969" ], - "name" : "Multiply_25180", - "op" : "Multiply", - "outputs" : ["Multiply_25180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25171"], - "name" : "Negative_25181", - "op" : "Negative", - "outputs" : ["Negative_25181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25172", "Multiply_18929" ], - "name" : "Divide_25182", - "op" : "Divide", - "outputs" : ["Divide_25182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25173"], - "name" : "Negative_25183", - "op" : "Negative", - "outputs" : ["Negative_25183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25175", "Parameter_15012" ], - "name" : "Multiply_25184", - "op" : "Multiply", - "outputs" : ["Multiply_25184"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25176"], - "name" : "Negative_25185", - "op" : "Negative", - "outputs" : ["Negative_25185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25177", "Multiply_18930" ], - "name" : "Divide_25186", - "op" : "Divide", - "outputs" : ["Divide_25186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25178"], - "name" : "Negative_25187", - "op" : "Negative", - "outputs" : ["Negative_25187"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25180"], - "name" : "Negative_25188", - "op" : "Negative", - "outputs" : ["Negative_25188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25181", "Parameter_14952" ], - "name" : "Multiply_25189", - "op" : "Multiply", - "outputs" : ["Multiply_25189"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18590", "Divide_25182" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25190", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25190"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25183", "Parameter_14960" ], - "name" : "Multiply_25191", - "op" : "Multiply", - "outputs" : ["Multiply_25191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25184"], - "name" : "Negative_25192", - "op" : "Negative", - "outputs" : ["Negative_25192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25185", "Parameter_14995" ], - "name" : "Multiply_25193", - "op" : "Multiply", - "outputs" : ["Multiply_25193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18649", "Divide_25186" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25194", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25194"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25187", "Parameter_15003" ], - "name" : "Multiply_25195", - "op" : "Multiply", - "outputs" : ["Multiply_25195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25189", "Parameter_14953" ], - "name" : "Divide_25196", - "op" : "Divide", - "outputs" : ["Divide_25196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25190"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25197", - "op" : "Slice", - "outputs" : ["Slice_25197"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25191", "Parameter_14961" ], - "name" : "Divide_25198", - "op" : "Divide", - "outputs" : ["Divide_25198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25193", "Parameter_14996" ], - "name" : "Divide_25199", - "op" : "Divide", - "outputs" : ["Divide_25199"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25194"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25200", - "op" : "Slice", - "outputs" : ["Slice_25200"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25195", "Parameter_15004" ], - "name" : "Divide_25201", - "op" : "Divide", - "outputs" : ["Divide_25201"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25196", "Parameter_14954" ], - "name" : "Multiply_25202", - "op" : "Multiply", - "outputs" : ["Multiply_25202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25198", "Parameter_14962" ], - "name" : "Multiply_25203", - "op" : "Multiply", - "outputs" : ["Multiply_25203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25199", "Parameter_14997" ], - "name" : "Multiply_25204", - "op" : "Multiply", - "outputs" : ["Multiply_25204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25201", "Parameter_15005" ], - "name" : "Multiply_25205", - "op" : "Multiply", - "outputs" : ["Multiply_25205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25202"], - "name" : "Negative_25206", - "op" : "Negative", - "outputs" : ["Negative_25206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25203"], - "name" : "Negative_25207", - "op" : "Negative", - "outputs" : ["Negative_25207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25204"], - "name" : "Negative_25208", - "op" : "Negative", - "outputs" : ["Negative_25208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25205"], - "name" : "Negative_25209", - "op" : "Negative", - "outputs" : ["Negative_25209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25197", "Negative_25206" ], - "name" : "Add_25210", - "op" : "Add", - "outputs" : ["Add_25210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25200", "Negative_25208" ], - "name" : "Add_25211", - "op" : "Add", - "outputs" : ["Add_25211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25190", "Add_25210" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25212", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25212"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25194", "Add_25211" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25213", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25213"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25212"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25214", - "op" : "Slice", - "outputs" : ["Slice_25214"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25213"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25215", - "op" : "Slice", - "outputs" : ["Slice_25215"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25214", "Negative_25207" ], - "name" : "Add_25216", - "op" : "Add", - "outputs" : ["Add_25216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25215", "Negative_25209" ], - "name" : "Add_25217", - "op" : "Add", - "outputs" : ["Add_25217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25212", "Add_25216" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25218", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25218"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25213", "Add_25217" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25219", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25219"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25218"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25220", - "op" : "Slice", - "outputs" : ["Slice_25220"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25219"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25221", - "op" : "Slice", - "outputs" : ["Slice_25221"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25220", "Negative_25188" ], - "name" : "Add_25222", - "op" : "Add", - "outputs" : ["Add_25222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25221", "Negative_25192" ], - "name" : "Add_25223", - "op" : "Add", - "outputs" : ["Add_25223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25218", "Add_25222" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25224", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25224"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25219", "Add_25223" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25225", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25225"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25224"], - "name" : "Sum_25226", - "op" : "Sum", - "outputs" : ["Sum_25226"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25224"], - "name" : "Reshape_25227", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25227"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18924", "ReplaceSlice_25224" ], - "name" : "Dot_25228", - "op" : "Dot", - "outputs" : ["Dot_25228"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25224"], - "name" : "Sum_25229", - "op" : "Sum", - "outputs" : ["Sum_25229"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25224"], - "name" : "Reshape_25230", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25230"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18926", "ReplaceSlice_25224" ], - "name" : "Dot_25231", - "op" : "Dot", - "outputs" : ["Dot_25231"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25225"], - "name" : "Sum_25232", - "op" : "Sum", - "outputs" : ["Sum_25232"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25225"], - "name" : "Reshape_25233", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25233"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18925", "ReplaceSlice_25225" ], - "name" : "Dot_25234", - "op" : "Dot", - "outputs" : ["Dot_25234"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25225"], - "name" : "Sum_25235", - "op" : "Sum", - "outputs" : ["Sum_25235"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25225"], - "name" : "Reshape_25236", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25236"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18670", "ReplaceSlice_25225" ], - "name" : "Dot_25237", - "op" : "Dot", - "outputs" : ["Dot_25237"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25128", "Sum_25226" ], - "name" : "Add_25238", - "op" : "Add", - "outputs" : ["Add_25238"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14368", "Reshape_25227" ], - "name" : "Dot_25239", - "op" : "Dot", - "outputs" : ["Dot_25239"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25228"], - "name" : "Reshape_25240", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25240"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25131", "Sum_25229" ], - "name" : "Add_25241", - "op" : "Add", - "outputs" : ["Add_25241"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14912", "Reshape_25230" ], - "name" : "Dot_25242", - "op" : "Dot", - "outputs" : ["Dot_25242"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25231"], - "name" : "Reshape_25243", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25243"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25134", "Sum_25232" ], - "name" : "Add_25244", - "op" : "Add", - "outputs" : ["Add_25244"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14988", "Reshape_25233" ], - "name" : "Dot_25245", - "op" : "Dot", - "outputs" : ["Dot_25245"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25234"], - "name" : "Reshape_25246", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25246"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25137", "Sum_25235" ], - "name" : "Add_25247", - "op" : "Add", - "outputs" : ["Add_25247"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14992", "Reshape_25236" ], - "name" : "Dot_25248", - "op" : "Dot", - "outputs" : ["Dot_25248"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25237"], - "name" : "Reshape_25249", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25249"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25239"], - "name" : "Reshape_25250", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25250"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25240"], - "name" : "Reshape_25251", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25251"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25242"], - "name" : "Reshape_25252", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25243"], - "name" : "Reshape_25253", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25253"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25245"], - "name" : "Reshape_25254", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25254"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25246"], - "name" : "Reshape_25255", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25255"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25248"], - "name" : "Reshape_25256", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25256"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25249"], - "name" : "Reshape_25257", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25257"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25250", "Reshape_18790" ], - "name" : "Add_25258", - "op" : "Add", - "outputs" : ["Add_25258"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25149", "Reshape_25251" ], - "name" : "Add_25259", - "op" : "Add", - "outputs" : ["Add_25259"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25150", "Reshape_25253" ], - "name" : "Add_25260", - "op" : "Add", - "outputs" : ["Add_25260"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25254", "Reshape_25252" ], - "name" : "Add_25261", - "op" : "Add", - "outputs" : ["Add_25261"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25152", "Reshape_25255" ], - "name" : "Add_25262", - "op" : "Add", - "outputs" : ["Add_25262"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25256"], - "name" : "Reshape_25263", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25263"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25154", "Reshape_25257" ], - "name" : "Add_25264", - "op" : "Add", - "outputs" : ["Add_25264"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25258", "Parameter_14370" ], - "name" : "Multiply_25265", - "op" : "Multiply", - "outputs" : ["Multiply_25265"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14902", "Add_25258" ], - "name" : "Multiply_25266", - "op" : "Multiply", - "outputs" : ["Multiply_25266"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25261", "Parameter_14914" ], - "name" : "Multiply_25267", - "op" : "Multiply", - "outputs" : ["Multiply_25267"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14945", "Add_25261" ], - "name" : "Multiply_25268", - "op" : "Multiply", - "outputs" : ["Multiply_25268"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25169", "Reshape_25263" ], - "name" : "Add_25269", - "op" : "Add", - "outputs" : ["Add_25269"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25265"], - "name" : "Negative_25270", - "op" : "Negative", - "outputs" : ["Negative_25270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25266", "Multiply_18922" ], - "name" : "Divide_25271", - "op" : "Divide", - "outputs" : ["Divide_25271"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25267"], - "name" : "Negative_25272", - "op" : "Negative", - "outputs" : ["Negative_25272"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25268", "Multiply_18923" ], - "name" : "Divide_25273", - "op" : "Divide", - "outputs" : ["Divide_25273"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25164", "Add_25269" ], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "ReplaceSlice_25274", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25274"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 9, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25270", "Parameter_14902" ], - "name" : "Multiply_25275", - "op" : "Multiply", - "outputs" : ["Multiply_25275"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25174", "Divide_25271" ], - "name" : "Add_25276", - "op" : "Add", - "outputs" : ["Add_25276"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25272", "Parameter_14945" ], - "name" : "Multiply_25277", - "op" : "Multiply", - "outputs" : ["Multiply_25277"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25179", "Divide_25273" ], - "name" : "Add_25278", - "op" : "Add", - "outputs" : ["Add_25278"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25274"], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "Slice_25279", - "op" : "Slice", - "outputs" : ["Slice_25279"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 8, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25275", "Parameter_14903" ], - "name" : "Divide_25280", - "op" : "Divide", - "outputs" : ["Divide_25280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25276", "Parameter_14373" ], - "name" : "Multiply_25281", - "op" : "Multiply", - "outputs" : ["Multiply_25281"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14887", "Add_25276" ], - "name" : "Multiply_25282", - "op" : "Multiply", - "outputs" : ["Multiply_25282"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25276", "Parameter_14382" ], - "name" : "Multiply_25283", - "op" : "Multiply", - "outputs" : ["Multiply_25283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14895", "Add_25276" ], - "name" : "Multiply_25284", - "op" : "Multiply", - "outputs" : ["Multiply_25284"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25277", "Parameter_14946" ], - "name" : "Divide_25285", - "op" : "Divide", - "outputs" : ["Divide_25285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25278", "Parameter_14917" ], - "name" : "Multiply_25286", - "op" : "Multiply", - "outputs" : ["Multiply_25286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14930", "Add_25278" ], - "name" : "Multiply_25287", - "op" : "Multiply", - "outputs" : ["Multiply_25287"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25278", "Parameter_14850" ], - "name" : "Multiply_25288", - "op" : "Multiply", - "outputs" : ["Multiply_25288"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14938", "Add_25278" ], - "name" : "Multiply_25289", - "op" : "Multiply", - "outputs" : ["Multiply_25289"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25280", "Parameter_14904" ], - "name" : "Multiply_25290", - "op" : "Multiply", - "outputs" : ["Multiply_25290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25281"], - "name" : "Negative_25291", - "op" : "Negative", - "outputs" : ["Negative_25291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25282", "Multiply_18918" ], - "name" : "Divide_25292", - "op" : "Divide", - "outputs" : ["Divide_25292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25283"], - "name" : "Negative_25293", - "op" : "Negative", - "outputs" : ["Negative_25293"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25285", "Parameter_14947" ], - "name" : "Multiply_25294", - "op" : "Multiply", - "outputs" : ["Multiply_25294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25286"], - "name" : "Negative_25295", - "op" : "Negative", - "outputs" : ["Negative_25295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25287", "Multiply_18919" ], - "name" : "Divide_25296", - "op" : "Divide", - "outputs" : ["Divide_25296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25288"], - "name" : "Negative_25297", - "op" : "Negative", - "outputs" : ["Negative_25297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25290"], - "name" : "Negative_25298", - "op" : "Negative", - "outputs" : ["Negative_25298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25291", "Parameter_14887" ], - "name" : "Multiply_25299", - "op" : "Multiply", - "outputs" : ["Multiply_25299"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18591", "Divide_25292" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25300", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25300"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25293", "Parameter_14895" ], - "name" : "Multiply_25301", - "op" : "Multiply", - "outputs" : ["Multiply_25301"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25294"], - "name" : "Negative_25302", - "op" : "Negative", - "outputs" : ["Negative_25302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25295", "Parameter_14930" ], - "name" : "Multiply_25303", - "op" : "Multiply", - "outputs" : ["Multiply_25303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18650", "Divide_25296" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25304", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25304"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25297", "Parameter_14938" ], - "name" : "Multiply_25305", - "op" : "Multiply", - "outputs" : ["Multiply_25305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25299", "Parameter_14888" ], - "name" : "Divide_25306", - "op" : "Divide", - "outputs" : ["Divide_25306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25300"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25307", - "op" : "Slice", - "outputs" : ["Slice_25307"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25301", "Parameter_14896" ], - "name" : "Divide_25308", - "op" : "Divide", - "outputs" : ["Divide_25308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25303", "Parameter_14931" ], - "name" : "Divide_25309", - "op" : "Divide", - "outputs" : ["Divide_25309"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25304"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25310", - "op" : "Slice", - "outputs" : ["Slice_25310"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25305", "Parameter_14939" ], - "name" : "Divide_25311", - "op" : "Divide", - "outputs" : ["Divide_25311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25306", "Parameter_14889" ], - "name" : "Multiply_25312", - "op" : "Multiply", - "outputs" : ["Multiply_25312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25308", "Parameter_14897" ], - "name" : "Multiply_25313", - "op" : "Multiply", - "outputs" : ["Multiply_25313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25309", "Parameter_14932" ], - "name" : "Multiply_25314", - "op" : "Multiply", - "outputs" : ["Multiply_25314"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25311", "Parameter_14940" ], - "name" : "Multiply_25315", - "op" : "Multiply", - "outputs" : ["Multiply_25315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25312"], - "name" : "Negative_25316", - "op" : "Negative", - "outputs" : ["Negative_25316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25313"], - "name" : "Negative_25317", - "op" : "Negative", - "outputs" : ["Negative_25317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25314"], - "name" : "Negative_25318", - "op" : "Negative", - "outputs" : ["Negative_25318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25315"], - "name" : "Negative_25319", - "op" : "Negative", - "outputs" : ["Negative_25319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25307", "Negative_25316" ], - "name" : "Add_25320", - "op" : "Add", - "outputs" : ["Add_25320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25310", "Negative_25318" ], - "name" : "Add_25321", - "op" : "Add", - "outputs" : ["Add_25321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25300", "Add_25320" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25322", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25322"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25304", "Add_25321" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25323", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25323"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25322"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25324", - "op" : "Slice", - "outputs" : ["Slice_25324"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25323"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25325", - "op" : "Slice", - "outputs" : ["Slice_25325"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25324", "Negative_25317" ], - "name" : "Add_25326", - "op" : "Add", - "outputs" : ["Add_25326"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25325", "Negative_25319" ], - "name" : "Add_25327", - "op" : "Add", - "outputs" : ["Add_25327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25322", "Add_25326" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25328", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25328"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25323", "Add_25327" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25329", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25329"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25328"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25330", - "op" : "Slice", - "outputs" : ["Slice_25330"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25329"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25331", - "op" : "Slice", - "outputs" : ["Slice_25331"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25330", "Negative_25298" ], - "name" : "Add_25332", - "op" : "Add", - "outputs" : ["Add_25332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25331", "Negative_25302" ], - "name" : "Add_25333", - "op" : "Add", - "outputs" : ["Add_25333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25328", "Add_25332" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25334", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25334"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25329", "Add_25333" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25335", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25335"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25334"], - "name" : "Sum_25336", - "op" : "Sum", - "outputs" : ["Sum_25336"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25334"], - "name" : "Reshape_25337", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25337"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18913", "ReplaceSlice_25334" ], - "name" : "Dot_25338", - "op" : "Dot", - "outputs" : ["Dot_25338"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25334"], - "name" : "Sum_25339", - "op" : "Sum", - "outputs" : ["Sum_25339"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25334"], - "name" : "Reshape_25340", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25340"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18915", "ReplaceSlice_25334" ], - "name" : "Dot_25341", - "op" : "Dot", - "outputs" : ["Dot_25341"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25335"], - "name" : "Sum_25342", - "op" : "Sum", - "outputs" : ["Sum_25342"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25335"], - "name" : "Reshape_25343", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25343"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18914", "ReplaceSlice_25335" ], - "name" : "Dot_25344", - "op" : "Dot", - "outputs" : ["Dot_25344"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25335"], - "name" : "Sum_25345", - "op" : "Sum", - "outputs" : ["Sum_25345"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25335"], - "name" : "Reshape_25346", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25346"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18669", "ReplaceSlice_25335" ], - "name" : "Dot_25347", - "op" : "Dot", - "outputs" : ["Dot_25347"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25238", "Sum_25336" ], - "name" : "Add_25348", - "op" : "Add", - "outputs" : ["Add_25348"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14379", "Reshape_25337" ], - "name" : "Dot_25349", - "op" : "Dot", - "outputs" : ["Dot_25349"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25338"], - "name" : "Reshape_25350", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25350"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25241", "Sum_25339" ], - "name" : "Add_25351", - "op" : "Add", - "outputs" : ["Add_25351"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14847", "Reshape_25340" ], - "name" : "Dot_25352", - "op" : "Dot", - "outputs" : ["Dot_25352"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25341"], - "name" : "Reshape_25353", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25353"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25244", "Sum_25342" ], - "name" : "Add_25354", - "op" : "Add", - "outputs" : ["Add_25354"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14923", "Reshape_25343" ], - "name" : "Dot_25355", - "op" : "Dot", - "outputs" : ["Dot_25355"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25344"], - "name" : "Reshape_25356", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25356"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25247", "Sum_25345" ], - "name" : "Add_25357", - "op" : "Add", - "outputs" : ["Add_25357"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14927", "Reshape_25346" ], - "name" : "Dot_25358", - "op" : "Dot", - "outputs" : ["Dot_25358"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25347"], - "name" : "Reshape_25359", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25359"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25349"], - "name" : "Reshape_25360", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25360"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25350"], - "name" : "Reshape_25361", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25361"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25352"], - "name" : "Reshape_25362", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25362"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25353"], - "name" : "Reshape_25363", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25363"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25355"], - "name" : "Reshape_25364", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25364"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25356"], - "name" : "Reshape_25365", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25365"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25358"], - "name" : "Reshape_25366", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25366"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25359"], - "name" : "Reshape_25367", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25367"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25360", "Reshape_18789" ], - "name" : "Add_25368", - "op" : "Add", - "outputs" : ["Add_25368"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25259", "Reshape_25361" ], - "name" : "Add_25369", - "op" : "Add", - "outputs" : ["Add_25369"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25260", "Reshape_25363" ], - "name" : "Add_25370", - "op" : "Add", - "outputs" : ["Add_25370"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25364", "Reshape_25362" ], - "name" : "Add_25371", - "op" : "Add", - "outputs" : ["Add_25371"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25262", "Reshape_25365" ], - "name" : "Add_25372", - "op" : "Add", - "outputs" : ["Add_25372"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25366"], - "name" : "Reshape_25373", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25373"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25264", "Reshape_25367" ], - "name" : "Add_25374", - "op" : "Add", - "outputs" : ["Add_25374"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25368", "Parameter_14381" ], - "name" : "Multiply_25375", - "op" : "Multiply", - "outputs" : ["Multiply_25375"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14837", "Add_25368" ], - "name" : "Multiply_25376", - "op" : "Multiply", - "outputs" : ["Multiply_25376"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25371", "Parameter_14849" ], - "name" : "Multiply_25377", - "op" : "Multiply", - "outputs" : ["Multiply_25377"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14880", "Add_25371" ], - "name" : "Multiply_25378", - "op" : "Multiply", - "outputs" : ["Multiply_25378"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25279", "Reshape_25373" ], - "name" : "Add_25379", - "op" : "Add", - "outputs" : ["Add_25379"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25375"], - "name" : "Negative_25380", - "op" : "Negative", - "outputs" : ["Negative_25380"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25376", "Multiply_18911" ], - "name" : "Divide_25381", - "op" : "Divide", - "outputs" : ["Divide_25381"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25377"], - "name" : "Negative_25382", - "op" : "Negative", - "outputs" : ["Negative_25382"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25378", "Multiply_18912" ], - "name" : "Divide_25383", - "op" : "Divide", - "outputs" : ["Divide_25383"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25274", "Add_25379" ], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "ReplaceSlice_25384", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25384"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 8, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25380", "Parameter_14837" ], - "name" : "Multiply_25385", - "op" : "Multiply", - "outputs" : ["Multiply_25385"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25284", "Divide_25381" ], - "name" : "Add_25386", - "op" : "Add", - "outputs" : ["Add_25386"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25382", "Parameter_14880" ], - "name" : "Multiply_25387", - "op" : "Multiply", - "outputs" : ["Multiply_25387"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25289", "Divide_25383" ], - "name" : "Add_25388", - "op" : "Add", - "outputs" : ["Add_25388"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25384"], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "Slice_25389", - "op" : "Slice", - "outputs" : ["Slice_25389"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 7, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25385", "Parameter_14838" ], - "name" : "Divide_25390", - "op" : "Divide", - "outputs" : ["Divide_25390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25386", "Parameter_14384" ], - "name" : "Multiply_25391", - "op" : "Multiply", - "outputs" : ["Multiply_25391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14822", "Add_25386" ], - "name" : "Multiply_25392", - "op" : "Multiply", - "outputs" : ["Multiply_25392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25386", "Parameter_14393" ], - "name" : "Multiply_25393", - "op" : "Multiply", - "outputs" : ["Multiply_25393"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14830", "Add_25386" ], - "name" : "Multiply_25394", - "op" : "Multiply", - "outputs" : ["Multiply_25394"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25387", "Parameter_14881" ], - "name" : "Divide_25395", - "op" : "Divide", - "outputs" : ["Divide_25395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25388", "Parameter_14852" ], - "name" : "Multiply_25396", - "op" : "Multiply", - "outputs" : ["Multiply_25396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14865", "Add_25388" ], - "name" : "Multiply_25397", - "op" : "Multiply", - "outputs" : ["Multiply_25397"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25388", "Parameter_14785" ], - "name" : "Multiply_25398", - "op" : "Multiply", - "outputs" : ["Multiply_25398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14873", "Add_25388" ], - "name" : "Multiply_25399", - "op" : "Multiply", - "outputs" : ["Multiply_25399"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25390", "Parameter_14839" ], - "name" : "Multiply_25400", - "op" : "Multiply", - "outputs" : ["Multiply_25400"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25391"], - "name" : "Negative_25401", - "op" : "Negative", - "outputs" : ["Negative_25401"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25392", "Multiply_18907" ], - "name" : "Divide_25402", - "op" : "Divide", - "outputs" : ["Divide_25402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25393"], - "name" : "Negative_25403", - "op" : "Negative", - "outputs" : ["Negative_25403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25395", "Parameter_14882" ], - "name" : "Multiply_25404", - "op" : "Multiply", - "outputs" : ["Multiply_25404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25396"], - "name" : "Negative_25405", - "op" : "Negative", - "outputs" : ["Negative_25405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25397", "Multiply_18908" ], - "name" : "Divide_25406", - "op" : "Divide", - "outputs" : ["Divide_25406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25398"], - "name" : "Negative_25407", - "op" : "Negative", - "outputs" : ["Negative_25407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25400"], - "name" : "Negative_25408", - "op" : "Negative", - "outputs" : ["Negative_25408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25401", "Parameter_14822" ], - "name" : "Multiply_25409", - "op" : "Multiply", - "outputs" : ["Multiply_25409"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18592", "Divide_25402" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25410", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25410"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25403", "Parameter_14830" ], - "name" : "Multiply_25411", - "op" : "Multiply", - "outputs" : ["Multiply_25411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25404"], - "name" : "Negative_25412", - "op" : "Negative", - "outputs" : ["Negative_25412"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25405", "Parameter_14865" ], - "name" : "Multiply_25413", - "op" : "Multiply", - "outputs" : ["Multiply_25413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18651", "Divide_25406" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25414", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25414"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25407", "Parameter_14873" ], - "name" : "Multiply_25415", - "op" : "Multiply", - "outputs" : ["Multiply_25415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25409", "Parameter_14823" ], - "name" : "Divide_25416", - "op" : "Divide", - "outputs" : ["Divide_25416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25410"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25417", - "op" : "Slice", - "outputs" : ["Slice_25417"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25411", "Parameter_14831" ], - "name" : "Divide_25418", - "op" : "Divide", - "outputs" : ["Divide_25418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25413", "Parameter_14866" ], - "name" : "Divide_25419", - "op" : "Divide", - "outputs" : ["Divide_25419"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25414"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25420", - "op" : "Slice", - "outputs" : ["Slice_25420"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25415", "Parameter_14874" ], - "name" : "Divide_25421", - "op" : "Divide", - "outputs" : ["Divide_25421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25416", "Parameter_14824" ], - "name" : "Multiply_25422", - "op" : "Multiply", - "outputs" : ["Multiply_25422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25418", "Parameter_14832" ], - "name" : "Multiply_25423", - "op" : "Multiply", - "outputs" : ["Multiply_25423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25419", "Parameter_14867" ], - "name" : "Multiply_25424", - "op" : "Multiply", - "outputs" : ["Multiply_25424"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25421", "Parameter_14875" ], - "name" : "Multiply_25425", - "op" : "Multiply", - "outputs" : ["Multiply_25425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25422"], - "name" : "Negative_25426", - "op" : "Negative", - "outputs" : ["Negative_25426"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25423"], - "name" : "Negative_25427", - "op" : "Negative", - "outputs" : ["Negative_25427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25424"], - "name" : "Negative_25428", - "op" : "Negative", - "outputs" : ["Negative_25428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25425"], - "name" : "Negative_25429", - "op" : "Negative", - "outputs" : ["Negative_25429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25417", "Negative_25426" ], - "name" : "Add_25430", - "op" : "Add", - "outputs" : ["Add_25430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25420", "Negative_25428" ], - "name" : "Add_25431", - "op" : "Add", - "outputs" : ["Add_25431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25410", "Add_25430" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25432", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25432"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25414", "Add_25431" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25433", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25433"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25432"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25434", - "op" : "Slice", - "outputs" : ["Slice_25434"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25433"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25435", - "op" : "Slice", - "outputs" : ["Slice_25435"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25434", "Negative_25427" ], - "name" : "Add_25436", - "op" : "Add", - "outputs" : ["Add_25436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25435", "Negative_25429" ], - "name" : "Add_25437", - "op" : "Add", - "outputs" : ["Add_25437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25432", "Add_25436" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25438", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25438"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25433", "Add_25437" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25439", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25439"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25438"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25440", - "op" : "Slice", - "outputs" : ["Slice_25440"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25439"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25441", - "op" : "Slice", - "outputs" : ["Slice_25441"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25440", "Negative_25408" ], - "name" : "Add_25442", - "op" : "Add", - "outputs" : ["Add_25442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25441", "Negative_25412" ], - "name" : "Add_25443", - "op" : "Add", - "outputs" : ["Add_25443"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25438", "Add_25442" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25444", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25444"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25439", "Add_25443" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25445", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25445"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25444"], - "name" : "Sum_25446", - "op" : "Sum", - "outputs" : ["Sum_25446"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25444"], - "name" : "Reshape_25447", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25447"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18902", "ReplaceSlice_25444" ], - "name" : "Dot_25448", - "op" : "Dot", - "outputs" : ["Dot_25448"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25444"], - "name" : "Sum_25449", - "op" : "Sum", - "outputs" : ["Sum_25449"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25444"], - "name" : "Reshape_25450", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25450"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18904", "ReplaceSlice_25444" ], - "name" : "Dot_25451", - "op" : "Dot", - "outputs" : ["Dot_25451"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25445"], - "name" : "Sum_25452", - "op" : "Sum", - "outputs" : ["Sum_25452"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25445"], - "name" : "Reshape_25453", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25453"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18903", "ReplaceSlice_25445" ], - "name" : "Dot_25454", - "op" : "Dot", - "outputs" : ["Dot_25454"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25445"], - "name" : "Sum_25455", - "op" : "Sum", - "outputs" : ["Sum_25455"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25445"], - "name" : "Reshape_25456", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25456"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18668", "ReplaceSlice_25445" ], - "name" : "Dot_25457", - "op" : "Dot", - "outputs" : ["Dot_25457"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25348", "Sum_25446" ], - "name" : "Add_25458", - "op" : "Add", - "outputs" : ["Add_25458"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14390", "Reshape_25447" ], - "name" : "Dot_25459", - "op" : "Dot", - "outputs" : ["Dot_25459"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25448"], - "name" : "Reshape_25460", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25460"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25351", "Sum_25449" ], - "name" : "Add_25461", - "op" : "Add", - "outputs" : ["Add_25461"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14782", "Reshape_25450" ], - "name" : "Dot_25462", - "op" : "Dot", - "outputs" : ["Dot_25462"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25451"], - "name" : "Reshape_25463", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25463"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25354", "Sum_25452" ], - "name" : "Add_25464", - "op" : "Add", - "outputs" : ["Add_25464"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14858", "Reshape_25453" ], - "name" : "Dot_25465", - "op" : "Dot", - "outputs" : ["Dot_25465"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25454"], - "name" : "Reshape_25466", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25466"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25357", "Sum_25455" ], - "name" : "Add_25467", - "op" : "Add", - "outputs" : ["Add_25467"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14862", "Reshape_25456" ], - "name" : "Dot_25468", - "op" : "Dot", - "outputs" : ["Dot_25468"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25457"], - "name" : "Reshape_25469", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25469"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25459"], - "name" : "Reshape_25470", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25460"], - "name" : "Reshape_25471", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25471"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25462"], - "name" : "Reshape_25472", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25463"], - "name" : "Reshape_25473", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25473"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25465"], - "name" : "Reshape_25474", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25474"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25466"], - "name" : "Reshape_25475", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25475"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25468"], - "name" : "Reshape_25476", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25476"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25469"], - "name" : "Reshape_25477", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25477"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25470", "Reshape_18788" ], - "name" : "Add_25478", - "op" : "Add", - "outputs" : ["Add_25478"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25369", "Reshape_25471" ], - "name" : "Add_25479", - "op" : "Add", - "outputs" : ["Add_25479"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25370", "Reshape_25473" ], - "name" : "Add_25480", - "op" : "Add", - "outputs" : ["Add_25480"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25474", "Reshape_25472" ], - "name" : "Add_25481", - "op" : "Add", - "outputs" : ["Add_25481"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25372", "Reshape_25475" ], - "name" : "Add_25482", - "op" : "Add", - "outputs" : ["Add_25482"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25476"], - "name" : "Reshape_25483", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25483"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25374", "Reshape_25477" ], - "name" : "Add_25484", - "op" : "Add", - "outputs" : ["Add_25484"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25478", "Parameter_14392" ], - "name" : "Multiply_25485", - "op" : "Multiply", - "outputs" : ["Multiply_25485"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14772", "Add_25478" ], - "name" : "Multiply_25486", - "op" : "Multiply", - "outputs" : ["Multiply_25486"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25481", "Parameter_14784" ], - "name" : "Multiply_25487", - "op" : "Multiply", - "outputs" : ["Multiply_25487"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14815", "Add_25481" ], - "name" : "Multiply_25488", - "op" : "Multiply", - "outputs" : ["Multiply_25488"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25389", "Reshape_25483" ], - "name" : "Add_25489", - "op" : "Add", - "outputs" : ["Add_25489"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25485"], - "name" : "Negative_25490", - "op" : "Negative", - "outputs" : ["Negative_25490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25486", "Multiply_18900" ], - "name" : "Divide_25491", - "op" : "Divide", - "outputs" : ["Divide_25491"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25487"], - "name" : "Negative_25492", - "op" : "Negative", - "outputs" : ["Negative_25492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25488", "Multiply_18901" ], - "name" : "Divide_25493", - "op" : "Divide", - "outputs" : ["Divide_25493"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25384", "Add_25489" ], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "ReplaceSlice_25494", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25494"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 7, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25490", "Parameter_14772" ], - "name" : "Multiply_25495", - "op" : "Multiply", - "outputs" : ["Multiply_25495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25394", "Divide_25491" ], - "name" : "Add_25496", - "op" : "Add", - "outputs" : ["Add_25496"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25492", "Parameter_14815" ], - "name" : "Multiply_25497", - "op" : "Multiply", - "outputs" : ["Multiply_25497"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25399", "Divide_25493" ], - "name" : "Add_25498", - "op" : "Add", - "outputs" : ["Add_25498"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25494"], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "Slice_25499", - "op" : "Slice", - "outputs" : ["Slice_25499"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 6, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25495", "Parameter_14773" ], - "name" : "Divide_25500", - "op" : "Divide", - "outputs" : ["Divide_25500"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25496", "Parameter_14395" ], - "name" : "Multiply_25501", - "op" : "Multiply", - "outputs" : ["Multiply_25501"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14757", "Add_25496" ], - "name" : "Multiply_25502", - "op" : "Multiply", - "outputs" : ["Multiply_25502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25496", "Parameter_14404" ], - "name" : "Multiply_25503", - "op" : "Multiply", - "outputs" : ["Multiply_25503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14765", "Add_25496" ], - "name" : "Multiply_25504", - "op" : "Multiply", - "outputs" : ["Multiply_25504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25497", "Parameter_14816" ], - "name" : "Divide_25505", - "op" : "Divide", - "outputs" : ["Divide_25505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25498", "Parameter_14787" ], - "name" : "Multiply_25506", - "op" : "Multiply", - "outputs" : ["Multiply_25506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14800", "Add_25498" ], - "name" : "Multiply_25507", - "op" : "Multiply", - "outputs" : ["Multiply_25507"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25498", "Parameter_14720" ], - "name" : "Multiply_25508", - "op" : "Multiply", - "outputs" : ["Multiply_25508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14808", "Add_25498" ], - "name" : "Multiply_25509", - "op" : "Multiply", - "outputs" : ["Multiply_25509"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25500", "Parameter_14774" ], - "name" : "Multiply_25510", - "op" : "Multiply", - "outputs" : ["Multiply_25510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25501"], - "name" : "Negative_25511", - "op" : "Negative", - "outputs" : ["Negative_25511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25502", "Multiply_18896" ], - "name" : "Divide_25512", - "op" : "Divide", - "outputs" : ["Divide_25512"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25503"], - "name" : "Negative_25513", - "op" : "Negative", - "outputs" : ["Negative_25513"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25505", "Parameter_14817" ], - "name" : "Multiply_25514", - "op" : "Multiply", - "outputs" : ["Multiply_25514"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25506"], - "name" : "Negative_25515", - "op" : "Negative", - "outputs" : ["Negative_25515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25507", "Multiply_18897" ], - "name" : "Divide_25516", - "op" : "Divide", - "outputs" : ["Divide_25516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25508"], - "name" : "Negative_25517", - "op" : "Negative", - "outputs" : ["Negative_25517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25510"], - "name" : "Negative_25518", - "op" : "Negative", - "outputs" : ["Negative_25518"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25511", "Parameter_14757" ], - "name" : "Multiply_25519", - "op" : "Multiply", - "outputs" : ["Multiply_25519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18593", "Divide_25512" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25520", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25520"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25513", "Parameter_14765" ], - "name" : "Multiply_25521", - "op" : "Multiply", - "outputs" : ["Multiply_25521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25514"], - "name" : "Negative_25522", - "op" : "Negative", - "outputs" : ["Negative_25522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25515", "Parameter_14800" ], - "name" : "Multiply_25523", - "op" : "Multiply", - "outputs" : ["Multiply_25523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18652", "Divide_25516" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25524", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25524"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25517", "Parameter_14808" ], - "name" : "Multiply_25525", - "op" : "Multiply", - "outputs" : ["Multiply_25525"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25519", "Parameter_14758" ], - "name" : "Divide_25526", - "op" : "Divide", - "outputs" : ["Divide_25526"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25520"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25527", - "op" : "Slice", - "outputs" : ["Slice_25527"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25521", "Parameter_14766" ], - "name" : "Divide_25528", - "op" : "Divide", - "outputs" : ["Divide_25528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25523", "Parameter_14801" ], - "name" : "Divide_25529", - "op" : "Divide", - "outputs" : ["Divide_25529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25524"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25530", - "op" : "Slice", - "outputs" : ["Slice_25530"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25525", "Parameter_14809" ], - "name" : "Divide_25531", - "op" : "Divide", - "outputs" : ["Divide_25531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25526", "Parameter_14759" ], - "name" : "Multiply_25532", - "op" : "Multiply", - "outputs" : ["Multiply_25532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25528", "Parameter_14767" ], - "name" : "Multiply_25533", - "op" : "Multiply", - "outputs" : ["Multiply_25533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25529", "Parameter_14802" ], - "name" : "Multiply_25534", - "op" : "Multiply", - "outputs" : ["Multiply_25534"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25531", "Parameter_14810" ], - "name" : "Multiply_25535", - "op" : "Multiply", - "outputs" : ["Multiply_25535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25532"], - "name" : "Negative_25536", - "op" : "Negative", - "outputs" : ["Negative_25536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25533"], - "name" : "Negative_25537", - "op" : "Negative", - "outputs" : ["Negative_25537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25534"], - "name" : "Negative_25538", - "op" : "Negative", - "outputs" : ["Negative_25538"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25535"], - "name" : "Negative_25539", - "op" : "Negative", - "outputs" : ["Negative_25539"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25527", "Negative_25536" ], - "name" : "Add_25540", - "op" : "Add", - "outputs" : ["Add_25540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25530", "Negative_25538" ], - "name" : "Add_25541", - "op" : "Add", - "outputs" : ["Add_25541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25520", "Add_25540" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25542", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25542"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25524", "Add_25541" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25543", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25543"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25542"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25544", - "op" : "Slice", - "outputs" : ["Slice_25544"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25543"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25545", - "op" : "Slice", - "outputs" : ["Slice_25545"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25544", "Negative_25537" ], - "name" : "Add_25546", - "op" : "Add", - "outputs" : ["Add_25546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25545", "Negative_25539" ], - "name" : "Add_25547", - "op" : "Add", - "outputs" : ["Add_25547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25542", "Add_25546" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25548", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25548"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25543", "Add_25547" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25549", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25549"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25548"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25550", - "op" : "Slice", - "outputs" : ["Slice_25550"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25549"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25551", - "op" : "Slice", - "outputs" : ["Slice_25551"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25550", "Negative_25518" ], - "name" : "Add_25552", - "op" : "Add", - "outputs" : ["Add_25552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25551", "Negative_25522" ], - "name" : "Add_25553", - "op" : "Add", - "outputs" : ["Add_25553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25548", "Add_25552" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25554", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25554"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25549", "Add_25553" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25555", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25555"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25554"], - "name" : "Sum_25556", - "op" : "Sum", - "outputs" : ["Sum_25556"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25554"], - "name" : "Reshape_25557", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25557"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18891", "ReplaceSlice_25554" ], - "name" : "Dot_25558", - "op" : "Dot", - "outputs" : ["Dot_25558"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25554"], - "name" : "Sum_25559", - "op" : "Sum", - "outputs" : ["Sum_25559"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25554"], - "name" : "Reshape_25560", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25560"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18893", "ReplaceSlice_25554" ], - "name" : "Dot_25561", - "op" : "Dot", - "outputs" : ["Dot_25561"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25555"], - "name" : "Sum_25562", - "op" : "Sum", - "outputs" : ["Sum_25562"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25555"], - "name" : "Reshape_25563", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25563"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18892", "ReplaceSlice_25555" ], - "name" : "Dot_25564", - "op" : "Dot", - "outputs" : ["Dot_25564"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25555"], - "name" : "Sum_25565", - "op" : "Sum", - "outputs" : ["Sum_25565"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25555"], - "name" : "Reshape_25566", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25566"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18667", "ReplaceSlice_25555" ], - "name" : "Dot_25567", - "op" : "Dot", - "outputs" : ["Dot_25567"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25458", "Sum_25556" ], - "name" : "Add_25568", - "op" : "Add", - "outputs" : ["Add_25568"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14401", "Reshape_25557" ], - "name" : "Dot_25569", - "op" : "Dot", - "outputs" : ["Dot_25569"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25558"], - "name" : "Reshape_25570", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25570"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25461", "Sum_25559" ], - "name" : "Add_25571", - "op" : "Add", - "outputs" : ["Add_25571"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14717", "Reshape_25560" ], - "name" : "Dot_25572", - "op" : "Dot", - "outputs" : ["Dot_25572"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25561"], - "name" : "Reshape_25573", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25573"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25464", "Sum_25562" ], - "name" : "Add_25574", - "op" : "Add", - "outputs" : ["Add_25574"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14793", "Reshape_25563" ], - "name" : "Dot_25575", - "op" : "Dot", - "outputs" : ["Dot_25575"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25564"], - "name" : "Reshape_25576", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25576"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25467", "Sum_25565" ], - "name" : "Add_25577", - "op" : "Add", - "outputs" : ["Add_25577"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14797", "Reshape_25566" ], - "name" : "Dot_25578", - "op" : "Dot", - "outputs" : ["Dot_25578"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25567"], - "name" : "Reshape_25579", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25579"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25569"], - "name" : "Reshape_25580", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25580"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25570"], - "name" : "Reshape_25581", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25581"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25572"], - "name" : "Reshape_25582", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25582"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25573"], - "name" : "Reshape_25583", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25583"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25575"], - "name" : "Reshape_25584", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25584"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25576"], - "name" : "Reshape_25585", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25585"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25578"], - "name" : "Reshape_25586", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25579"], - "name" : "Reshape_25587", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25587"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25580", "Reshape_18787" ], - "name" : "Add_25588", - "op" : "Add", - "outputs" : ["Add_25588"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25479", "Reshape_25581" ], - "name" : "Add_25589", - "op" : "Add", - "outputs" : ["Add_25589"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25480", "Reshape_25583" ], - "name" : "Add_25590", - "op" : "Add", - "outputs" : ["Add_25590"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25584", "Reshape_25582" ], - "name" : "Add_25591", - "op" : "Add", - "outputs" : ["Add_25591"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25482", "Reshape_25585" ], - "name" : "Add_25592", - "op" : "Add", - "outputs" : ["Add_25592"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25586"], - "name" : "Reshape_25593", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25593"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25484", "Reshape_25587" ], - "name" : "Add_25594", - "op" : "Add", - "outputs" : ["Add_25594"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25588", "Parameter_14403" ], - "name" : "Multiply_25595", - "op" : "Multiply", - "outputs" : ["Multiply_25595"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14707", "Add_25588" ], - "name" : "Multiply_25596", - "op" : "Multiply", - "outputs" : ["Multiply_25596"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25591", "Parameter_14719" ], - "name" : "Multiply_25597", - "op" : "Multiply", - "outputs" : ["Multiply_25597"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14750", "Add_25591" ], - "name" : "Multiply_25598", - "op" : "Multiply", - "outputs" : ["Multiply_25598"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25499", "Reshape_25593" ], - "name" : "Add_25599", - "op" : "Add", - "outputs" : ["Add_25599"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25595"], - "name" : "Negative_25600", - "op" : "Negative", - "outputs" : ["Negative_25600"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25596", "Multiply_18889" ], - "name" : "Divide_25601", - "op" : "Divide", - "outputs" : ["Divide_25601"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25597"], - "name" : "Negative_25602", - "op" : "Negative", - "outputs" : ["Negative_25602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25598", "Multiply_18890" ], - "name" : "Divide_25603", - "op" : "Divide", - "outputs" : ["Divide_25603"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25494", "Add_25599" ], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "ReplaceSlice_25604", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25604"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 6, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25600", "Parameter_14707" ], - "name" : "Multiply_25605", - "op" : "Multiply", - "outputs" : ["Multiply_25605"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25504", "Divide_25601" ], - "name" : "Add_25606", - "op" : "Add", - "outputs" : ["Add_25606"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25602", "Parameter_14750" ], - "name" : "Multiply_25607", - "op" : "Multiply", - "outputs" : ["Multiply_25607"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25509", "Divide_25603" ], - "name" : "Add_25608", - "op" : "Add", - "outputs" : ["Add_25608"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25604"], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "Slice_25609", - "op" : "Slice", - "outputs" : ["Slice_25609"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 5, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25605", "Parameter_14708" ], - "name" : "Divide_25610", - "op" : "Divide", - "outputs" : ["Divide_25610"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25606", "Parameter_14406" ], - "name" : "Multiply_25611", - "op" : "Multiply", - "outputs" : ["Multiply_25611"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14692", "Add_25606" ], - "name" : "Multiply_25612", - "op" : "Multiply", - "outputs" : ["Multiply_25612"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25606", "Parameter_14415" ], - "name" : "Multiply_25613", - "op" : "Multiply", - "outputs" : ["Multiply_25613"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14700", "Add_25606" ], - "name" : "Multiply_25614", - "op" : "Multiply", - "outputs" : ["Multiply_25614"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25607", "Parameter_14751" ], - "name" : "Divide_25615", - "op" : "Divide", - "outputs" : ["Divide_25615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25608", "Parameter_14722" ], - "name" : "Multiply_25616", - "op" : "Multiply", - "outputs" : ["Multiply_25616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14735", "Add_25608" ], - "name" : "Multiply_25617", - "op" : "Multiply", - "outputs" : ["Multiply_25617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25608", "Parameter_14655" ], - "name" : "Multiply_25618", - "op" : "Multiply", - "outputs" : ["Multiply_25618"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14743", "Add_25608" ], - "name" : "Multiply_25619", - "op" : "Multiply", - "outputs" : ["Multiply_25619"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25610", "Parameter_14709" ], - "name" : "Multiply_25620", - "op" : "Multiply", - "outputs" : ["Multiply_25620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25611"], - "name" : "Negative_25621", - "op" : "Negative", - "outputs" : ["Negative_25621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25612", "Multiply_18885" ], - "name" : "Divide_25622", - "op" : "Divide", - "outputs" : ["Divide_25622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25613"], - "name" : "Negative_25623", - "op" : "Negative", - "outputs" : ["Negative_25623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25615", "Parameter_14752" ], - "name" : "Multiply_25624", - "op" : "Multiply", - "outputs" : ["Multiply_25624"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25616"], - "name" : "Negative_25625", - "op" : "Negative", - "outputs" : ["Negative_25625"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25617", "Multiply_18886" ], - "name" : "Divide_25626", - "op" : "Divide", - "outputs" : ["Divide_25626"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25618"], - "name" : "Negative_25627", - "op" : "Negative", - "outputs" : ["Negative_25627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25620"], - "name" : "Negative_25628", - "op" : "Negative", - "outputs" : ["Negative_25628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25621", "Parameter_14692" ], - "name" : "Multiply_25629", - "op" : "Multiply", - "outputs" : ["Multiply_25629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18594", "Divide_25622" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25630", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25630"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25623", "Parameter_14700" ], - "name" : "Multiply_25631", - "op" : "Multiply", - "outputs" : ["Multiply_25631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25624"], - "name" : "Negative_25632", - "op" : "Negative", - "outputs" : ["Negative_25632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25625", "Parameter_14735" ], - "name" : "Multiply_25633", - "op" : "Multiply", - "outputs" : ["Multiply_25633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18653", "Divide_25626" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25634", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25634"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25627", "Parameter_14743" ], - "name" : "Multiply_25635", - "op" : "Multiply", - "outputs" : ["Multiply_25635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25629", "Parameter_14693" ], - "name" : "Divide_25636", - "op" : "Divide", - "outputs" : ["Divide_25636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25630"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25637", - "op" : "Slice", - "outputs" : ["Slice_25637"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25631", "Parameter_14701" ], - "name" : "Divide_25638", - "op" : "Divide", - "outputs" : ["Divide_25638"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25633", "Parameter_14736" ], - "name" : "Divide_25639", - "op" : "Divide", - "outputs" : ["Divide_25639"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25634"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25640", - "op" : "Slice", - "outputs" : ["Slice_25640"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25635", "Parameter_14744" ], - "name" : "Divide_25641", - "op" : "Divide", - "outputs" : ["Divide_25641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25636", "Parameter_14694" ], - "name" : "Multiply_25642", - "op" : "Multiply", - "outputs" : ["Multiply_25642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25638", "Parameter_14702" ], - "name" : "Multiply_25643", - "op" : "Multiply", - "outputs" : ["Multiply_25643"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25639", "Parameter_14737" ], - "name" : "Multiply_25644", - "op" : "Multiply", - "outputs" : ["Multiply_25644"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25641", "Parameter_14745" ], - "name" : "Multiply_25645", - "op" : "Multiply", - "outputs" : ["Multiply_25645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25642"], - "name" : "Negative_25646", - "op" : "Negative", - "outputs" : ["Negative_25646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25643"], - "name" : "Negative_25647", - "op" : "Negative", - "outputs" : ["Negative_25647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25644"], - "name" : "Negative_25648", - "op" : "Negative", - "outputs" : ["Negative_25648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25645"], - "name" : "Negative_25649", - "op" : "Negative", - "outputs" : ["Negative_25649"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25637", "Negative_25646" ], - "name" : "Add_25650", - "op" : "Add", - "outputs" : ["Add_25650"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25640", "Negative_25648" ], - "name" : "Add_25651", - "op" : "Add", - "outputs" : ["Add_25651"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25630", "Add_25650" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25652", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25652"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25634", "Add_25651" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25653", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25653"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25652"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25654", - "op" : "Slice", - "outputs" : ["Slice_25654"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25653"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25655", - "op" : "Slice", - "outputs" : ["Slice_25655"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25654", "Negative_25647" ], - "name" : "Add_25656", - "op" : "Add", - "outputs" : ["Add_25656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25655", "Negative_25649" ], - "name" : "Add_25657", - "op" : "Add", - "outputs" : ["Add_25657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25652", "Add_25656" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25658", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25658"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25653", "Add_25657" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25659", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25659"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25658"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25660", - "op" : "Slice", - "outputs" : ["Slice_25660"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25659"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25661", - "op" : "Slice", - "outputs" : ["Slice_25661"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25660", "Negative_25628" ], - "name" : "Add_25662", - "op" : "Add", - "outputs" : ["Add_25662"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25661", "Negative_25632" ], - "name" : "Add_25663", - "op" : "Add", - "outputs" : ["Add_25663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25658", "Add_25662" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25664", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25664"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25659", "Add_25663" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25665", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25665"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25664"], - "name" : "Sum_25666", - "op" : "Sum", - "outputs" : ["Sum_25666"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25664"], - "name" : "Reshape_25667", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25667"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18880", "ReplaceSlice_25664" ], - "name" : "Dot_25668", - "op" : "Dot", - "outputs" : ["Dot_25668"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25664"], - "name" : "Sum_25669", - "op" : "Sum", - "outputs" : ["Sum_25669"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25664"], - "name" : "Reshape_25670", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25670"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18882", "ReplaceSlice_25664" ], - "name" : "Dot_25671", - "op" : "Dot", - "outputs" : ["Dot_25671"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25665"], - "name" : "Sum_25672", - "op" : "Sum", - "outputs" : ["Sum_25672"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25665"], - "name" : "Reshape_25673", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25673"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18881", "ReplaceSlice_25665" ], - "name" : "Dot_25674", - "op" : "Dot", - "outputs" : ["Dot_25674"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25665"], - "name" : "Sum_25675", - "op" : "Sum", - "outputs" : ["Sum_25675"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25665"], - "name" : "Reshape_25676", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25676"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18666", "ReplaceSlice_25665" ], - "name" : "Dot_25677", - "op" : "Dot", - "outputs" : ["Dot_25677"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25568", "Sum_25666" ], - "name" : "Add_25678", - "op" : "Add", - "outputs" : ["Add_25678"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14412", "Reshape_25667" ], - "name" : "Dot_25679", - "op" : "Dot", - "outputs" : ["Dot_25679"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25668"], - "name" : "Reshape_25680", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25680"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25571", "Sum_25669" ], - "name" : "Add_25681", - "op" : "Add", - "outputs" : ["Add_25681"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14652", "Reshape_25670" ], - "name" : "Dot_25682", - "op" : "Dot", - "outputs" : ["Dot_25682"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25671"], - "name" : "Reshape_25683", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25683"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25574", "Sum_25672" ], - "name" : "Add_25684", - "op" : "Add", - "outputs" : ["Add_25684"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14728", "Reshape_25673" ], - "name" : "Dot_25685", - "op" : "Dot", - "outputs" : ["Dot_25685"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25674"], - "name" : "Reshape_25686", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25686"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25577", "Sum_25675" ], - "name" : "Add_25687", - "op" : "Add", - "outputs" : ["Add_25687"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14732", "Reshape_25676" ], - "name" : "Dot_25688", - "op" : "Dot", - "outputs" : ["Dot_25688"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25677"], - "name" : "Reshape_25689", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25689"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25679"], - "name" : "Reshape_25690", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25690"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25680"], - "name" : "Reshape_25691", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25691"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25682"], - "name" : "Reshape_25692", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25683"], - "name" : "Reshape_25693", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25693"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25685"], - "name" : "Reshape_25694", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25694"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25686"], - "name" : "Reshape_25695", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25695"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25688"], - "name" : "Reshape_25696", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25696"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25689"], - "name" : "Reshape_25697", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25697"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25690", "Reshape_18786" ], - "name" : "Add_25698", - "op" : "Add", - "outputs" : ["Add_25698"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25589", "Reshape_25691" ], - "name" : "Add_25699", - "op" : "Add", - "outputs" : ["Add_25699"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25590", "Reshape_25693" ], - "name" : "Add_25700", - "op" : "Add", - "outputs" : ["Add_25700"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25694", "Reshape_25692" ], - "name" : "Add_25701", - "op" : "Add", - "outputs" : ["Add_25701"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25592", "Reshape_25695" ], - "name" : "Add_25702", - "op" : "Add", - "outputs" : ["Add_25702"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25696"], - "name" : "Reshape_25703", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25703"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25594", "Reshape_25697" ], - "name" : "Add_25704", - "op" : "Add", - "outputs" : ["Add_25704"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25698", "Parameter_14414" ], - "name" : "Multiply_25705", - "op" : "Multiply", - "outputs" : ["Multiply_25705"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14642", "Add_25698" ], - "name" : "Multiply_25706", - "op" : "Multiply", - "outputs" : ["Multiply_25706"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25701", "Parameter_14654" ], - "name" : "Multiply_25707", - "op" : "Multiply", - "outputs" : ["Multiply_25707"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14685", "Add_25701" ], - "name" : "Multiply_25708", - "op" : "Multiply", - "outputs" : ["Multiply_25708"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25609", "Reshape_25703" ], - "name" : "Add_25709", - "op" : "Add", - "outputs" : ["Add_25709"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25705"], - "name" : "Negative_25710", - "op" : "Negative", - "outputs" : ["Negative_25710"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25706", "Multiply_18878" ], - "name" : "Divide_25711", - "op" : "Divide", - "outputs" : ["Divide_25711"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25707"], - "name" : "Negative_25712", - "op" : "Negative", - "outputs" : ["Negative_25712"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25708", "Multiply_18879" ], - "name" : "Divide_25713", - "op" : "Divide", - "outputs" : ["Divide_25713"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25604", "Add_25709" ], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "ReplaceSlice_25714", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25714"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 5, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25710", "Parameter_14642" ], - "name" : "Multiply_25715", - "op" : "Multiply", - "outputs" : ["Multiply_25715"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25614", "Divide_25711" ], - "name" : "Add_25716", - "op" : "Add", - "outputs" : ["Add_25716"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25712", "Parameter_14685" ], - "name" : "Multiply_25717", - "op" : "Multiply", - "outputs" : ["Multiply_25717"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25619", "Divide_25713" ], - "name" : "Add_25718", - "op" : "Add", - "outputs" : ["Add_25718"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25714"], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "Slice_25719", - "op" : "Slice", - "outputs" : ["Slice_25719"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 4, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25715", "Parameter_14643" ], - "name" : "Divide_25720", - "op" : "Divide", - "outputs" : ["Divide_25720"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25716", "Parameter_14417" ], - "name" : "Multiply_25721", - "op" : "Multiply", - "outputs" : ["Multiply_25721"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14627", "Add_25716" ], - "name" : "Multiply_25722", - "op" : "Multiply", - "outputs" : ["Multiply_25722"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25716", "Parameter_14426" ], - "name" : "Multiply_25723", - "op" : "Multiply", - "outputs" : ["Multiply_25723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14635", "Add_25716" ], - "name" : "Multiply_25724", - "op" : "Multiply", - "outputs" : ["Multiply_25724"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25717", "Parameter_14686" ], - "name" : "Divide_25725", - "op" : "Divide", - "outputs" : ["Divide_25725"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25718", "Parameter_14657" ], - "name" : "Multiply_25726", - "op" : "Multiply", - "outputs" : ["Multiply_25726"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14670", "Add_25718" ], - "name" : "Multiply_25727", - "op" : "Multiply", - "outputs" : ["Multiply_25727"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25718", "Parameter_14590" ], - "name" : "Multiply_25728", - "op" : "Multiply", - "outputs" : ["Multiply_25728"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14678", "Add_25718" ], - "name" : "Multiply_25729", - "op" : "Multiply", - "outputs" : ["Multiply_25729"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25720", "Parameter_14644" ], - "name" : "Multiply_25730", - "op" : "Multiply", - "outputs" : ["Multiply_25730"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25721"], - "name" : "Negative_25731", - "op" : "Negative", - "outputs" : ["Negative_25731"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25722", "Multiply_18874" ], - "name" : "Divide_25732", - "op" : "Divide", - "outputs" : ["Divide_25732"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25723"], - "name" : "Negative_25733", - "op" : "Negative", - "outputs" : ["Negative_25733"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25725", "Parameter_14687" ], - "name" : "Multiply_25734", - "op" : "Multiply", - "outputs" : ["Multiply_25734"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25726"], - "name" : "Negative_25735", - "op" : "Negative", - "outputs" : ["Negative_25735"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25727", "Multiply_18875" ], - "name" : "Divide_25736", - "op" : "Divide", - "outputs" : ["Divide_25736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25728"], - "name" : "Negative_25737", - "op" : "Negative", - "outputs" : ["Negative_25737"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25730"], - "name" : "Negative_25738", - "op" : "Negative", - "outputs" : ["Negative_25738"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25731", "Parameter_14627" ], - "name" : "Multiply_25739", - "op" : "Multiply", - "outputs" : ["Multiply_25739"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18595", "Divide_25732" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25740", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25740"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25733", "Parameter_14635" ], - "name" : "Multiply_25741", - "op" : "Multiply", - "outputs" : ["Multiply_25741"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25734"], - "name" : "Negative_25742", - "op" : "Negative", - "outputs" : ["Negative_25742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25735", "Parameter_14670" ], - "name" : "Multiply_25743", - "op" : "Multiply", - "outputs" : ["Multiply_25743"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18654", "Divide_25736" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25744", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25744"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25737", "Parameter_14678" ], - "name" : "Multiply_25745", - "op" : "Multiply", - "outputs" : ["Multiply_25745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25739", "Parameter_14628" ], - "name" : "Divide_25746", - "op" : "Divide", - "outputs" : ["Divide_25746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25740"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25747", - "op" : "Slice", - "outputs" : ["Slice_25747"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25741", "Parameter_14636" ], - "name" : "Divide_25748", - "op" : "Divide", - "outputs" : ["Divide_25748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25743", "Parameter_14671" ], - "name" : "Divide_25749", - "op" : "Divide", - "outputs" : ["Divide_25749"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25744"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25750", - "op" : "Slice", - "outputs" : ["Slice_25750"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25745", "Parameter_14679" ], - "name" : "Divide_25751", - "op" : "Divide", - "outputs" : ["Divide_25751"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25746", "Parameter_14629" ], - "name" : "Multiply_25752", - "op" : "Multiply", - "outputs" : ["Multiply_25752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25748", "Parameter_14637" ], - "name" : "Multiply_25753", - "op" : "Multiply", - "outputs" : ["Multiply_25753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25749", "Parameter_14672" ], - "name" : "Multiply_25754", - "op" : "Multiply", - "outputs" : ["Multiply_25754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25751", "Parameter_14680" ], - "name" : "Multiply_25755", - "op" : "Multiply", - "outputs" : ["Multiply_25755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25752"], - "name" : "Negative_25756", - "op" : "Negative", - "outputs" : ["Negative_25756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25753"], - "name" : "Negative_25757", - "op" : "Negative", - "outputs" : ["Negative_25757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25754"], - "name" : "Negative_25758", - "op" : "Negative", - "outputs" : ["Negative_25758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25755"], - "name" : "Negative_25759", - "op" : "Negative", - "outputs" : ["Negative_25759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25747", "Negative_25756" ], - "name" : "Add_25760", - "op" : "Add", - "outputs" : ["Add_25760"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25750", "Negative_25758" ], - "name" : "Add_25761", - "op" : "Add", - "outputs" : ["Add_25761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25740", "Add_25760" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25762", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25762"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25744", "Add_25761" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25763", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25763"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25762"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25764", - "op" : "Slice", - "outputs" : ["Slice_25764"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25763"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25765", - "op" : "Slice", - "outputs" : ["Slice_25765"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25764", "Negative_25757" ], - "name" : "Add_25766", - "op" : "Add", - "outputs" : ["Add_25766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25765", "Negative_25759" ], - "name" : "Add_25767", - "op" : "Add", - "outputs" : ["Add_25767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25762", "Add_25766" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25768", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25768"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25763", "Add_25767" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25769", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25769"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25768"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25770", - "op" : "Slice", - "outputs" : ["Slice_25770"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25769"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25771", - "op" : "Slice", - "outputs" : ["Slice_25771"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25770", "Negative_25738" ], - "name" : "Add_25772", - "op" : "Add", - "outputs" : ["Add_25772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25771", "Negative_25742" ], - "name" : "Add_25773", - "op" : "Add", - "outputs" : ["Add_25773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25768", "Add_25772" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25774", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25774"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25769", "Add_25773" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25775", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25775"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25774"], - "name" : "Sum_25776", - "op" : "Sum", - "outputs" : ["Sum_25776"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25774"], - "name" : "Reshape_25777", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25777"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18869", "ReplaceSlice_25774" ], - "name" : "Dot_25778", - "op" : "Dot", - "outputs" : ["Dot_25778"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25774"], - "name" : "Sum_25779", - "op" : "Sum", - "outputs" : ["Sum_25779"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25774"], - "name" : "Reshape_25780", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25780"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18871", "ReplaceSlice_25774" ], - "name" : "Dot_25781", - "op" : "Dot", - "outputs" : ["Dot_25781"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25775"], - "name" : "Sum_25782", - "op" : "Sum", - "outputs" : ["Sum_25782"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25775"], - "name" : "Reshape_25783", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25783"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18870", "ReplaceSlice_25775" ], - "name" : "Dot_25784", - "op" : "Dot", - "outputs" : ["Dot_25784"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25775"], - "name" : "Sum_25785", - "op" : "Sum", - "outputs" : ["Sum_25785"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25775"], - "name" : "Reshape_25786", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25786"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18665", "ReplaceSlice_25775" ], - "name" : "Dot_25787", - "op" : "Dot", - "outputs" : ["Dot_25787"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25678", "Sum_25776" ], - "name" : "Add_25788", - "op" : "Add", - "outputs" : ["Add_25788"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14423", "Reshape_25777" ], - "name" : "Dot_25789", - "op" : "Dot", - "outputs" : ["Dot_25789"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25778"], - "name" : "Reshape_25790", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25790"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25681", "Sum_25779" ], - "name" : "Add_25791", - "op" : "Add", - "outputs" : ["Add_25791"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14587", "Reshape_25780" ], - "name" : "Dot_25792", - "op" : "Dot", - "outputs" : ["Dot_25792"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25781"], - "name" : "Reshape_25793", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25793"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25684", "Sum_25782" ], - "name" : "Add_25794", - "op" : "Add", - "outputs" : ["Add_25794"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14663", "Reshape_25783" ], - "name" : "Dot_25795", - "op" : "Dot", - "outputs" : ["Dot_25795"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25784"], - "name" : "Reshape_25796", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25796"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25687", "Sum_25785" ], - "name" : "Add_25797", - "op" : "Add", - "outputs" : ["Add_25797"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14667", "Reshape_25786" ], - "name" : "Dot_25798", - "op" : "Dot", - "outputs" : ["Dot_25798"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25787"], - "name" : "Reshape_25799", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25799"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25789"], - "name" : "Reshape_25800", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25800"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25790"], - "name" : "Reshape_25801", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25801"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25792"], - "name" : "Reshape_25802", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25793"], - "name" : "Reshape_25803", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25803"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25795"], - "name" : "Reshape_25804", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25804"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25796"], - "name" : "Reshape_25805", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25805"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25798"], - "name" : "Reshape_25806", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25799"], - "name" : "Reshape_25807", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25807"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25800", "Reshape_18785" ], - "name" : "Add_25808", - "op" : "Add", - "outputs" : ["Add_25808"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25699", "Reshape_25801" ], - "name" : "Add_25809", - "op" : "Add", - "outputs" : ["Add_25809"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25700", "Reshape_25803" ], - "name" : "Add_25810", - "op" : "Add", - "outputs" : ["Add_25810"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25804", "Reshape_25802" ], - "name" : "Add_25811", - "op" : "Add", - "outputs" : ["Add_25811"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25702", "Reshape_25805" ], - "name" : "Add_25812", - "op" : "Add", - "outputs" : ["Add_25812"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25806"], - "name" : "Reshape_25813", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25813"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25704", "Reshape_25807" ], - "name" : "Add_25814", - "op" : "Add", - "outputs" : ["Add_25814"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25808", "Parameter_14425" ], - "name" : "Multiply_25815", - "op" : "Multiply", - "outputs" : ["Multiply_25815"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14577", "Add_25808" ], - "name" : "Multiply_25816", - "op" : "Multiply", - "outputs" : ["Multiply_25816"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25811", "Parameter_14589" ], - "name" : "Multiply_25817", - "op" : "Multiply", - "outputs" : ["Multiply_25817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14620", "Add_25811" ], - "name" : "Multiply_25818", - "op" : "Multiply", - "outputs" : ["Multiply_25818"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25719", "Reshape_25813" ], - "name" : "Add_25819", - "op" : "Add", - "outputs" : ["Add_25819"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25815"], - "name" : "Negative_25820", - "op" : "Negative", - "outputs" : ["Negative_25820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25816", "Multiply_18867" ], - "name" : "Divide_25821", - "op" : "Divide", - "outputs" : ["Divide_25821"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25817"], - "name" : "Negative_25822", - "op" : "Negative", - "outputs" : ["Negative_25822"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25818", "Multiply_18868" ], - "name" : "Divide_25823", - "op" : "Divide", - "outputs" : ["Divide_25823"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25714", "Add_25819" ], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "ReplaceSlice_25824", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25824"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 4, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25820", "Parameter_14577" ], - "name" : "Multiply_25825", - "op" : "Multiply", - "outputs" : ["Multiply_25825"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25724", "Divide_25821" ], - "name" : "Add_25826", - "op" : "Add", - "outputs" : ["Add_25826"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25822", "Parameter_14620" ], - "name" : "Multiply_25827", - "op" : "Multiply", - "outputs" : ["Multiply_25827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25729", "Divide_25823" ], - "name" : "Add_25828", - "op" : "Add", - "outputs" : ["Add_25828"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25824"], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "Slice_25829", - "op" : "Slice", - "outputs" : ["Slice_25829"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 3, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25825", "Parameter_14578" ], - "name" : "Divide_25830", - "op" : "Divide", - "outputs" : ["Divide_25830"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25826", "Parameter_14428" ], - "name" : "Multiply_25831", - "op" : "Multiply", - "outputs" : ["Multiply_25831"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14562", "Add_25826" ], - "name" : "Multiply_25832", - "op" : "Multiply", - "outputs" : ["Multiply_25832"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25826", "Parameter_14437" ], - "name" : "Multiply_25833", - "op" : "Multiply", - "outputs" : ["Multiply_25833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14570", "Add_25826" ], - "name" : "Multiply_25834", - "op" : "Multiply", - "outputs" : ["Multiply_25834"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25827", "Parameter_14621" ], - "name" : "Divide_25835", - "op" : "Divide", - "outputs" : ["Divide_25835"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25828", "Parameter_14592" ], - "name" : "Multiply_25836", - "op" : "Multiply", - "outputs" : ["Multiply_25836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14605", "Add_25828" ], - "name" : "Multiply_25837", - "op" : "Multiply", - "outputs" : ["Multiply_25837"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25828", "Parameter_14525" ], - "name" : "Multiply_25838", - "op" : "Multiply", - "outputs" : ["Multiply_25838"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14613", "Add_25828" ], - "name" : "Multiply_25839", - "op" : "Multiply", - "outputs" : ["Multiply_25839"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25830", "Parameter_14579" ], - "name" : "Multiply_25840", - "op" : "Multiply", - "outputs" : ["Multiply_25840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25831"], - "name" : "Negative_25841", - "op" : "Negative", - "outputs" : ["Negative_25841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25832", "Multiply_18863" ], - "name" : "Divide_25842", - "op" : "Divide", - "outputs" : ["Divide_25842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25833"], - "name" : "Negative_25843", - "op" : "Negative", - "outputs" : ["Negative_25843"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25835", "Parameter_14622" ], - "name" : "Multiply_25844", - "op" : "Multiply", - "outputs" : ["Multiply_25844"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25836"], - "name" : "Negative_25845", - "op" : "Negative", - "outputs" : ["Negative_25845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25837", "Multiply_18864" ], - "name" : "Divide_25846", - "op" : "Divide", - "outputs" : ["Divide_25846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25838"], - "name" : "Negative_25847", - "op" : "Negative", - "outputs" : ["Negative_25847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25840"], - "name" : "Negative_25848", - "op" : "Negative", - "outputs" : ["Negative_25848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25841", "Parameter_14562" ], - "name" : "Multiply_25849", - "op" : "Multiply", - "outputs" : ["Multiply_25849"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18596", "Divide_25842" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25850", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25850"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25843", "Parameter_14570" ], - "name" : "Multiply_25851", - "op" : "Multiply", - "outputs" : ["Multiply_25851"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25844"], - "name" : "Negative_25852", - "op" : "Negative", - "outputs" : ["Negative_25852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25845", "Parameter_14605" ], - "name" : "Multiply_25853", - "op" : "Multiply", - "outputs" : ["Multiply_25853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18655", "Divide_25846" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25854", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25854"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25847", "Parameter_14613" ], - "name" : "Multiply_25855", - "op" : "Multiply", - "outputs" : ["Multiply_25855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25849", "Parameter_14563" ], - "name" : "Divide_25856", - "op" : "Divide", - "outputs" : ["Divide_25856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25850"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25857", - "op" : "Slice", - "outputs" : ["Slice_25857"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25851", "Parameter_14571" ], - "name" : "Divide_25858", - "op" : "Divide", - "outputs" : ["Divide_25858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25853", "Parameter_14606" ], - "name" : "Divide_25859", - "op" : "Divide", - "outputs" : ["Divide_25859"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25854"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25860", - "op" : "Slice", - "outputs" : ["Slice_25860"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25855", "Parameter_14614" ], - "name" : "Divide_25861", - "op" : "Divide", - "outputs" : ["Divide_25861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25856", "Parameter_14564" ], - "name" : "Multiply_25862", - "op" : "Multiply", - "outputs" : ["Multiply_25862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25858", "Parameter_14572" ], - "name" : "Multiply_25863", - "op" : "Multiply", - "outputs" : ["Multiply_25863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25859", "Parameter_14607" ], - "name" : "Multiply_25864", - "op" : "Multiply", - "outputs" : ["Multiply_25864"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25861", "Parameter_14615" ], - "name" : "Multiply_25865", - "op" : "Multiply", - "outputs" : ["Multiply_25865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25862"], - "name" : "Negative_25866", - "op" : "Negative", - "outputs" : ["Negative_25866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25863"], - "name" : "Negative_25867", - "op" : "Negative", - "outputs" : ["Negative_25867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25864"], - "name" : "Negative_25868", - "op" : "Negative", - "outputs" : ["Negative_25868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25865"], - "name" : "Negative_25869", - "op" : "Negative", - "outputs" : ["Negative_25869"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25857", "Negative_25866" ], - "name" : "Add_25870", - "op" : "Add", - "outputs" : ["Add_25870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25860", "Negative_25868" ], - "name" : "Add_25871", - "op" : "Add", - "outputs" : ["Add_25871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25850", "Add_25870" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25872", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25872"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25854", "Add_25871" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25873", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25873"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25872"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25874", - "op" : "Slice", - "outputs" : ["Slice_25874"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25873"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25875", - "op" : "Slice", - "outputs" : ["Slice_25875"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25874", "Negative_25867" ], - "name" : "Add_25876", - "op" : "Add", - "outputs" : ["Add_25876"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25875", "Negative_25869" ], - "name" : "Add_25877", - "op" : "Add", - "outputs" : ["Add_25877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25872", "Add_25876" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25878", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25878"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25873", "Add_25877" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25879", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25879"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25878"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25880", - "op" : "Slice", - "outputs" : ["Slice_25880"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25879"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25881", - "op" : "Slice", - "outputs" : ["Slice_25881"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25880", "Negative_25848" ], - "name" : "Add_25882", - "op" : "Add", - "outputs" : ["Add_25882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25881", "Negative_25852" ], - "name" : "Add_25883", - "op" : "Add", - "outputs" : ["Add_25883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25878", "Add_25882" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25884", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25884"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25879", "Add_25883" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25885", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25885"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25884"], - "name" : "Sum_25886", - "op" : "Sum", - "outputs" : ["Sum_25886"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25884"], - "name" : "Reshape_25887", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25887"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18858", "ReplaceSlice_25884" ], - "name" : "Dot_25888", - "op" : "Dot", - "outputs" : ["Dot_25888"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25884"], - "name" : "Sum_25889", - "op" : "Sum", - "outputs" : ["Sum_25889"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25884"], - "name" : "Reshape_25890", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25890"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18860", "ReplaceSlice_25884" ], - "name" : "Dot_25891", - "op" : "Dot", - "outputs" : ["Dot_25891"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25885"], - "name" : "Sum_25892", - "op" : "Sum", - "outputs" : ["Sum_25892"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25885"], - "name" : "Reshape_25893", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25893"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18859", "ReplaceSlice_25885" ], - "name" : "Dot_25894", - "op" : "Dot", - "outputs" : ["Dot_25894"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25885"], - "name" : "Sum_25895", - "op" : "Sum", - "outputs" : ["Sum_25895"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25885"], - "name" : "Reshape_25896", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25896"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18664", "ReplaceSlice_25885" ], - "name" : "Dot_25897", - "op" : "Dot", - "outputs" : ["Dot_25897"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25788", "Sum_25886" ], - "name" : "Add_25898", - "op" : "Add", - "outputs" : ["Add_25898"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14434", "Reshape_25887" ], - "name" : "Dot_25899", - "op" : "Dot", - "outputs" : ["Dot_25899"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25888"], - "name" : "Reshape_25900", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25900"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25791", "Sum_25889" ], - "name" : "Add_25901", - "op" : "Add", - "outputs" : ["Add_25901"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14522", "Reshape_25890" ], - "name" : "Dot_25902", - "op" : "Dot", - "outputs" : ["Dot_25902"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25891"], - "name" : "Reshape_25903", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25903"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25794", "Sum_25892" ], - "name" : "Add_25904", - "op" : "Add", - "outputs" : ["Add_25904"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14598", "Reshape_25893" ], - "name" : "Dot_25905", - "op" : "Dot", - "outputs" : ["Dot_25905"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25894"], - "name" : "Reshape_25906", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25906"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25797", "Sum_25895" ], - "name" : "Add_25907", - "op" : "Add", - "outputs" : ["Add_25907"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14602", "Reshape_25896" ], - "name" : "Dot_25908", - "op" : "Dot", - "outputs" : ["Dot_25908"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25897"], - "name" : "Reshape_25909", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_25909"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25899"], - "name" : "Reshape_25910", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25910"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25900"], - "name" : "Reshape_25911", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25911"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25902"], - "name" : "Reshape_25912", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25912"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25903"], - "name" : "Reshape_25913", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25913"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25905"], - "name" : "Reshape_25914", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25914"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25906"], - "name" : "Reshape_25915", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25915"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_25908"], - "name" : "Reshape_25916", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_25916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_25909"], - "name" : "Reshape_25917", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_25917"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25910", "Reshape_18784" ], - "name" : "Add_25918", - "op" : "Add", - "outputs" : ["Add_25918"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25809", "Reshape_25911" ], - "name" : "Add_25919", - "op" : "Add", - "outputs" : ["Add_25919"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25810", "Reshape_25913" ], - "name" : "Add_25920", - "op" : "Add", - "outputs" : ["Add_25920"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_25914", "Reshape_25912" ], - "name" : "Add_25921", - "op" : "Add", - "outputs" : ["Add_25921"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25812", "Reshape_25915" ], - "name" : "Add_25922", - "op" : "Add", - "outputs" : ["Add_25922"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_25916"], - "name" : "Reshape_25923", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_25923"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25814", "Reshape_25917" ], - "name" : "Add_25924", - "op" : "Add", - "outputs" : ["Add_25924"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25918", "Parameter_14436" ], - "name" : "Multiply_25925", - "op" : "Multiply", - "outputs" : ["Multiply_25925"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14512", "Add_25918" ], - "name" : "Multiply_25926", - "op" : "Multiply", - "outputs" : ["Multiply_25926"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25921", "Parameter_14524" ], - "name" : "Multiply_25927", - "op" : "Multiply", - "outputs" : ["Multiply_25927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14555", "Add_25921" ], - "name" : "Multiply_25928", - "op" : "Multiply", - "outputs" : ["Multiply_25928"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25829", "Reshape_25923" ], - "name" : "Add_25929", - "op" : "Add", - "outputs" : ["Add_25929"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_25925"], - "name" : "Negative_25930", - "op" : "Negative", - "outputs" : ["Negative_25930"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25926", "Multiply_18856" ], - "name" : "Divide_25931", - "op" : "Divide", - "outputs" : ["Divide_25931"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25927"], - "name" : "Negative_25932", - "op" : "Negative", - "outputs" : ["Negative_25932"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25928", "Multiply_18857" ], - "name" : "Divide_25933", - "op" : "Divide", - "outputs" : ["Divide_25933"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25824", "Add_25929" ], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "ReplaceSlice_25934", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25934"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 3, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_25930", "Parameter_14512" ], - "name" : "Multiply_25935", - "op" : "Multiply", - "outputs" : ["Multiply_25935"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25834", "Divide_25931" ], - "name" : "Add_25936", - "op" : "Add", - "outputs" : ["Add_25936"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25932", "Parameter_14555" ], - "name" : "Multiply_25937", - "op" : "Multiply", - "outputs" : ["Multiply_25937"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25839", "Divide_25933" ], - "name" : "Add_25938", - "op" : "Add", - "outputs" : ["Add_25938"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25934"], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "Slice_25939", - "op" : "Slice", - "outputs" : ["Slice_25939"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 2, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_25935", "Parameter_14513" ], - "name" : "Divide_25940", - "op" : "Divide", - "outputs" : ["Divide_25940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25936", "Parameter_14439" ], - "name" : "Multiply_25941", - "op" : "Multiply", - "outputs" : ["Multiply_25941"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14495", "Add_25936" ], - "name" : "Multiply_25942", - "op" : "Multiply", - "outputs" : ["Multiply_25942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25936", "Parameter_14503" ], - "name" : "Multiply_25943", - "op" : "Multiply", - "outputs" : ["Multiply_25943"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25937", "Parameter_14556" ], - "name" : "Divide_25944", - "op" : "Divide", - "outputs" : ["Divide_25944"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25938", "Parameter_14527" ], - "name" : "Multiply_25945", - "op" : "Multiply", - "outputs" : ["Multiply_25945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14540", "Add_25938" ], - "name" : "Multiply_25946", - "op" : "Multiply", - "outputs" : ["Multiply_25946"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25938", "Parameter_14454" ], - "name" : "Multiply_25947", - "op" : "Multiply", - "outputs" : ["Multiply_25947"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14548", "Add_25938" ], - "name" : "Multiply_25948", - "op" : "Multiply", - "outputs" : ["Multiply_25948"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25940", "Parameter_14514" ], - "name" : "Multiply_25949", - "op" : "Multiply", - "outputs" : ["Multiply_25949"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25941"], - "name" : "Negative_25950", - "op" : "Negative", - "outputs" : ["Negative_25950"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25942", "Multiply_18852" ], - "name" : "Divide_25951", - "op" : "Divide", - "outputs" : ["Divide_25951"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25943"], - "name" : "Negative_25952", - "op" : "Negative", - "outputs" : ["Negative_25952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25944", "Parameter_14557" ], - "name" : "Multiply_25953", - "op" : "Multiply", - "outputs" : ["Multiply_25953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25945"], - "name" : "Negative_25954", - "op" : "Negative", - "outputs" : ["Negative_25954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25946", "Multiply_18853" ], - "name" : "Divide_25955", - "op" : "Divide", - "outputs" : ["Divide_25955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25947"], - "name" : "Negative_25956", - "op" : "Negative", - "outputs" : ["Negative_25956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25949"], - "name" : "Negative_25957", - "op" : "Negative", - "outputs" : ["Negative_25957"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25950", "Parameter_14495" ], - "name" : "Multiply_25958", - "op" : "Multiply", - "outputs" : ["Multiply_25958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18597", "Divide_25951" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25959", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25959"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25952", "Parameter_14505" ], - "name" : "Multiply_25960", - "op" : "Multiply", - "outputs" : ["Multiply_25960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25953"], - "name" : "Negative_25961", - "op" : "Negative", - "outputs" : ["Negative_25961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_25954", "Parameter_14540" ], - "name" : "Multiply_25962", - "op" : "Multiply", - "outputs" : ["Multiply_25962"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18656", "Divide_25955" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_25963", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25963"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_25956", "Parameter_14548" ], - "name" : "Multiply_25964", - "op" : "Multiply", - "outputs" : ["Multiply_25964"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25958", "Parameter_14496" ], - "name" : "Divide_25965", - "op" : "Divide", - "outputs" : ["Divide_25965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25959"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25966", - "op" : "Slice", - "outputs" : ["Slice_25966"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25960", "Parameter_14506" ], - "name" : "Divide_25967", - "op" : "Divide", - "outputs" : ["Divide_25967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25962", "Parameter_14541" ], - "name" : "Divide_25968", - "op" : "Divide", - "outputs" : ["Divide_25968"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25963"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_25969", - "op" : "Slice", - "outputs" : ["Slice_25969"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25964", "Parameter_14549" ], - "name" : "Divide_25970", - "op" : "Divide", - "outputs" : ["Divide_25970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25965", "Parameter_14497" ], - "name" : "Multiply_25971", - "op" : "Multiply", - "outputs" : ["Multiply_25971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25967", "Parameter_14507" ], - "name" : "Multiply_25972", - "op" : "Multiply", - "outputs" : ["Multiply_25972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25968", "Parameter_14542" ], - "name" : "Multiply_25973", - "op" : "Multiply", - "outputs" : ["Multiply_25973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_25970", "Parameter_14550" ], - "name" : "Multiply_25974", - "op" : "Multiply", - "outputs" : ["Multiply_25974"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25971"], - "name" : "Negative_25975", - "op" : "Negative", - "outputs" : ["Negative_25975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25972"], - "name" : "Negative_25976", - "op" : "Negative", - "outputs" : ["Negative_25976"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25973"], - "name" : "Negative_25977", - "op" : "Negative", - "outputs" : ["Negative_25977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_25974"], - "name" : "Negative_25978", - "op" : "Negative", - "outputs" : ["Negative_25978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25966", "Negative_25975" ], - "name" : "Add_25979", - "op" : "Add", - "outputs" : ["Add_25979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25969", "Negative_25977" ], - "name" : "Add_25980", - "op" : "Add", - "outputs" : ["Add_25980"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25959", "Add_25979" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25981", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25981"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25963", "Add_25980" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_25982", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25982"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25981"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25983", - "op" : "Slice", - "outputs" : ["Slice_25983"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25982"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_25984", - "op" : "Slice", - "outputs" : ["Slice_25984"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25983", "Negative_25976" ], - "name" : "Add_25985", - "op" : "Add", - "outputs" : ["Add_25985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25984", "Negative_25978" ], - "name" : "Add_25986", - "op" : "Add", - "outputs" : ["Add_25986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25981", "Add_25985" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25987", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25987"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25982", "Add_25986" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_25988", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25988"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25987"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25989", - "op" : "Slice", - "outputs" : ["Slice_25989"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_25988"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_25990", - "op" : "Slice", - "outputs" : ["Slice_25990"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25989", "Negative_25957" ], - "name" : "Add_25991", - "op" : "Add", - "outputs" : ["Add_25991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25990", "Negative_25961" ], - "name" : "Add_25992", - "op" : "Add", - "outputs" : ["Add_25992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25987", "Add_25991" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25993", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25993"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "ReplaceSlice_25988", "Add_25992" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_25994", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_25994"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25993"], - "name" : "Sum_25995", - "op" : "Sum", - "outputs" : ["Sum_25995"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Reshape_18660", "ReplaceSlice_25993" ], - "name" : "Dot_25996", - "op" : "Dot", - "outputs" : ["Dot_25996"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25993"], - "name" : "Sum_25997", - "op" : "Sum", - "outputs" : ["Sum_25997"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25993"], - "name" : "Reshape_25998", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_25998"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18849", "ReplaceSlice_25993" ], - "name" : "Dot_25999", - "op" : "Dot", - "outputs" : ["Dot_25999"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25994"], - "name" : "Sum_26000", - "op" : "Sum", - "outputs" : ["Sum_26000"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25994"], - "name" : "Reshape_26001", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_26001"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18848", "ReplaceSlice_25994" ], - "name" : "Dot_26002", - "op" : "Dot", - "outputs" : ["Dot_26002"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_25994"], - "name" : "Sum_26003", - "op" : "Sum", - "outputs" : ["Sum_26003"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_25994"], - "name" : "Reshape_26004", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_26004"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18663", "ReplaceSlice_25994" ], - "name" : "Dot_26005", - "op" : "Dot", - "outputs" : ["Dot_26005"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25898", "Sum_25995" ], - "name" : "Add_26006", - "op" : "Add", - "outputs" : ["Add_26006"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25996"], - "name" : "Reshape_26007", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_26007"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25901", "Sum_25997" ], - "name" : "Add_26008", - "op" : "Add", - "outputs" : ["Add_26008"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14451", "Reshape_25998" ], - "name" : "Dot_26009", - "op" : "Dot", - "outputs" : ["Dot_26009"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_25999"], - "name" : "Reshape_26010", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_26010"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25904", "Sum_26000" ], - "name" : "Add_26011", - "op" : "Add", - "outputs" : ["Add_26011"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14533", "Reshape_26001" ], - "name" : "Dot_26012", - "op" : "Dot", - "outputs" : ["Dot_26012"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_26002"], - "name" : "Reshape_26013", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_26013"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_25907", "Sum_26003" ], - "name" : "Add_26014", - "op" : "Add", - "outputs" : ["Add_26014"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14537", "Reshape_26004" ], - "name" : "Dot_26015", - "op" : "Dot", - "outputs" : ["Dot_26015"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_26005"], - "name" : "Reshape_26016", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_26016"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_26007"], - "name" : "Reshape_26017", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_26017"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_26009"], - "name" : "Reshape_26018", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_26018"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_26010"], - "name" : "Reshape_26019", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_26019"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_26012"], - "name" : "Reshape_26020", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_26020"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_26013"], - "name" : "Reshape_26021", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_26021"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_26015"], - "name" : "Reshape_26022", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_26022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_26016"], - "name" : "Reshape_26023", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_26023"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25919", "Reshape_26017" ], - "name" : "Add_26024", - "op" : "Add", - "outputs" : ["Add_26024"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_25920", "Reshape_26019" ], - "name" : "Add_26025", - "op" : "Add", - "outputs" : ["Add_26025"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Reshape_26020", "Reshape_26018" ], - "name" : "Add_26026", - "op" : "Add", - "outputs" : ["Add_26026"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_25922", "Reshape_26021" ], - "name" : "Add_26027", - "op" : "Add", - "outputs" : ["Add_26027"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_26022"], - "name" : "Reshape_26028", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_26028"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_25924", "Reshape_26023" ], - "name" : "Add_26029", - "op" : "Add", - "outputs" : ["Add_26029"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_26026", "Parameter_14453" ], - "name" : "Multiply_26030", - "op" : "Multiply", - "outputs" : ["Multiply_26030"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14488", "Add_26026" ], - "name" : "Multiply_26031", - "op" : "Multiply", - "outputs" : ["Multiply_26031"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_25939", "Reshape_26028" ], - "name" : "Add_26032", - "op" : "Add", - "outputs" : ["Add_26032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Multiply_26030"], - "name" : "Negative_26033", - "op" : "Negative", - "outputs" : ["Negative_26033"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_26031", "Multiply_18847" ], - "name" : "Divide_26034", - "op" : "Divide", - "outputs" : ["Divide_26034"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_25934", "Add_26032" ], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "ReplaceSlice_26035", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_26035"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 2, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [ "Negative_26033", "Parameter_14488" ], - "name" : "Multiply_26036", - "op" : "Multiply", - "outputs" : ["Multiply_26036"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_25948", "Divide_26034" ], - "name" : "Add_26037", - "op" : "Add", - "outputs" : ["Add_26037"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_26035"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_26038", - "op" : "Slice", - "outputs" : ["Slice_26038"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_26036", "Parameter_14489" ], - "name" : "Divide_26039", - "op" : "Divide", - "outputs" : ["Divide_26039"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_26037", "Parameter_14456" ], - "name" : "Multiply_26040", - "op" : "Multiply", - "outputs" : ["Multiply_26040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Parameter_14471", "Add_26037" ], - "name" : "Multiply_26041", - "op" : "Multiply", - "outputs" : ["Multiply_26041"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Add_26037", "Parameter_14479" ], - "name" : "Multiply_26042", - "op" : "Multiply", - "outputs" : ["Multiply_26042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_26039", "Parameter_14490" ], - "name" : "Multiply_26043", - "op" : "Multiply", - "outputs" : ["Multiply_26043"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_26040"], - "name" : "Negative_26044", - "op" : "Negative", - "outputs" : ["Negative_26044"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_26041", "Multiply_18845" ], - "name" : "Divide_26045", - "op" : "Divide", - "outputs" : ["Divide_26045"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_26042"], - "name" : "Negative_26046", - "op" : "Negative", - "outputs" : ["Negative_26046"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_26043"], - "name" : "Negative_26047", - "op" : "Negative", - "outputs" : ["Negative_26047"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Negative_26044", "Parameter_14471" ], - "name" : "Multiply_26048", - "op" : "Multiply", - "outputs" : ["Multiply_26048"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_18657", "Divide_26045" ], - "lower_bounds" : [ 0, 400 ], - "name" : "ReplaceSlice_26049", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_26049"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Negative_26046", "Parameter_14481" ], - "name" : "Multiply_26050", - "op" : "Multiply", - "outputs" : ["Multiply_26050"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_26048", "Parameter_14472" ], - "name" : "Divide_26051", - "op" : "Divide", - "outputs" : ["Divide_26051"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["ReplaceSlice_26049"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_26052", - "op" : "Slice", - "outputs" : ["Slice_26052"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_26050", "Parameter_14482" ], - "name" : "Divide_26053", - "op" : "Divide", - "outputs" : ["Divide_26053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_26051", "Parameter_14473" ], - "name" : "Multiply_26054", - "op" : "Multiply", - "outputs" : ["Multiply_26054"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_26053", "Parameter_14483" ], - "name" : "Multiply_26055", - "op" : "Multiply", - "outputs" : ["Multiply_26055"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_26054"], - "name" : "Negative_26056", - "op" : "Negative", - "outputs" : ["Negative_26056"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Multiply_26055"], - "name" : "Negative_26057", - "op" : "Negative", - "outputs" : ["Negative_26057"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_26052", "Negative_26056" ], - "name" : "Add_26058", - "op" : "Add", - "outputs" : ["Add_26058"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_26049", "Add_26058" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_26059", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_26059"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_26059"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_26060", - "op" : "Slice", - "outputs" : ["Slice_26060"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_26060", "Negative_26057" ], - "name" : "Add_26061", - "op" : "Add", - "outputs" : ["Add_26061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_26059", "Add_26061" ], - "lower_bounds" : [ 0, 200 ], - "name" : "ReplaceSlice_26062", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_26062"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_26062"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_26063", - "op" : "Slice", - "outputs" : ["Slice_26063"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Slice_26063", "Negative_26047" ], - "name" : "Add_26064", - "op" : "Add", - "outputs" : ["Add_26064"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_26062", "Add_26064" ], - "lower_bounds" : [ 0, 600 ], - "name" : "ReplaceSlice_26065", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_26065"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_26065"], - "name" : "Sum_26066", - "op" : "Sum", - "outputs" : ["Sum_26066"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Reshape_18661", "ReplaceSlice_26065" ], - "name" : "Dot_26067", - "op" : "Dot", - "outputs" : ["Dot_26067"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["ReplaceSlice_26065"], - "name" : "Sum_26068", - "op" : "Sum", - "outputs" : ["Sum_26068"], - "reduction_axes" : [0], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_26065"], - "name" : "Reshape_26069", - "op" : "Reshape", - "output_shape" : [ 800, 32 ], - "outputs" : ["Reshape_26069"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 32 ]} - }, - { - "inputs" : [ "Reshape_18662", "ReplaceSlice_26065" ], - "name" : "Dot_26070", - "op" : "Dot", - "outputs" : ["Dot_26070"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_26011", "Sum_26066" ], - "name" : "Add_26071", - "op" : "Add", - "outputs" : ["Add_26071"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_26067"], - "name" : "Reshape_26072", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_26072"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : [ "Add_26014", "Sum_26068" ], - "name" : "Add_26073", - "op" : "Add", - "outputs" : ["Add_26073"], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [ "Parameter_14468", "Reshape_26069" ], - "name" : "Dot_26074", - "op" : "Dot", - "outputs" : ["Dot_26074"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 32 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_26070"], - "name" : "Reshape_26075", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_26075"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_26072"], - "name" : "Reshape_26076", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_26076"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_26074"], - "name" : "Reshape_26077", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_26077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_26075"], - "name" : "Reshape_26078", - "op" : "Reshape", - "output_shape" : [ 800, 200 ], - "outputs" : ["Reshape_26078"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Add_26027", "Reshape_26076" ], - "name" : "Add_26079", - "op" : "Add", - "outputs" : ["Add_26079"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_26077"], - "name" : "Reshape_26080", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_26080"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Add_26029", "Reshape_26078" ], - "name" : "Add_26081", - "op" : "Add", - "outputs" : ["Add_26081"], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [ "Slice_26038", "Reshape_26080" ], - "name" : "Add_26082", - "op" : "Add", - "outputs" : ["Add_26082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "ReplaceSlice_26035", "Add_26082" ], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "ReplaceSlice_26083", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_26083"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - } - ], - "parameters" : [ - "Parameter_18414", "Parameter_18412", "Parameter_18410", "Parameter_18409", - "Parameter_18408", "Parameter_18407", "Parameter_18406", "Parameter_18405", - "Parameter_18404", "Parameter_18403", "Parameter_18402", "Parameter_18400", - "Parameter_18399", "Parameter_18398", "Parameter_18397", "Parameter_18395", - "Parameter_18394", "Parameter_18393", "Parameter_18392", "Parameter_18390", - "Parameter_18385", "Parameter_18381", "Parameter_18380", "Parameter_18379", - "Parameter_18378", "Parameter_18377", "Parameter_18376", "Parameter_18375", - "Parameter_18374", "Parameter_18372", "Parameter_18371", "Parameter_18370", - "Parameter_18369", "Parameter_18368", "Parameter_18367", "Parameter_18366", - "Parameter_18365", "Parameter_18362", "Parameter_18361", "Parameter_18360", - "Parameter_18359", "Parameter_18358", "Parameter_18355", "Parameter_18354", - "Parameter_18348", "Parameter_18347", "Parameter_18346", "Parameter_18345", - "Parameter_18343", "Parameter_18341", "Parameter_18340", "Parameter_18339", - "Parameter_18338", "Parameter_18337", "Parameter_18336", "Parameter_18335", - "Parameter_18334", "Parameter_18332", "Parameter_18329", "Parameter_18326", - "Parameter_18325", "Parameter_18324", "Parameter_18323", "Parameter_18320", - "Parameter_18319", "Parameter_18318", "Parameter_18317", "Parameter_18314", - "Parameter_18312", "Parameter_18310", "Parameter_18309", "Parameter_18308", - "Parameter_18307", "Parameter_18306", "Parameter_18301", "Parameter_18299", - "Parameter_18296", "Parameter_18294", "Parameter_18292", "Parameter_18291", - "Parameter_18289", "Parameter_18286", "Parameter_18284", "Parameter_18281", - "Parameter_18280", "Parameter_18278", "Parameter_18275", "Parameter_18269", - "Parameter_18268", "Parameter_18267", "Parameter_18265", "Parameter_18264", - "Parameter_18263", "Parameter_18262", "Parameter_18261", "Parameter_18259", - "Parameter_18256", "Parameter_18253", "Parameter_18252", "Parameter_18248", - "Parameter_18244", "Parameter_18243", "Parameter_18242", "Parameter_18239", - "Parameter_18238", "Parameter_18237", "Parameter_18236", "Parameter_18234", - "Parameter_18233", "Parameter_18230", "Parameter_18228", "Parameter_18227", - "Parameter_18224", "Parameter_18222", "Parameter_18221", "Parameter_18220", - "Parameter_18219", "Parameter_18214", "Parameter_18213", "Parameter_18209", - "Parameter_18208", "Parameter_18206", "Parameter_18205", "Parameter_18204", - "Parameter_18203", "Parameter_18199", "Parameter_18197", "Parameter_18194", - "Parameter_18193", "Parameter_18192", "Parameter_18191", "Parameter_18188", - "Parameter_18187", "Parameter_18185", "Parameter_18183", "Parameter_18182", - "Parameter_18181", "Parameter_18180", "Parameter_18179", "Parameter_18178", - "Parameter_18177", "Parameter_18174", "Parameter_18173", "Parameter_18172", - "Parameter_18171", "Parameter_18170", "Parameter_18169", "Parameter_18165", - "Parameter_18164", "Parameter_18163", "Parameter_18162", "Parameter_18158", - "Parameter_18157", "Parameter_18154", "Parameter_18152", "Parameter_18148", - "Parameter_18145", "Parameter_18144", "Parameter_18143", "Parameter_18141", - "Parameter_18140", "Parameter_18139", "Parameter_18138", "Parameter_18134", - "Parameter_18133", "Parameter_18132", "Parameter_18131", "Parameter_18130", - "Parameter_18129", "Parameter_18127", "Parameter_18126", "Parameter_18123", - "Parameter_18122", "Parameter_18117", "Parameter_18116", "Parameter_18115", - "Parameter_18114", "Parameter_18113", "Parameter_18109", "Parameter_18108", - "Parameter_18104", "Parameter_18103", "Parameter_18102", "Parameter_18101", - "Parameter_18100", "Parameter_18099", "Parameter_18098", "Parameter_18097", - "Parameter_18096", "Parameter_18095", "Parameter_18089", "Parameter_18087", - "Parameter_18086", "Parameter_18083", "Parameter_18080", "Parameter_18079", - "Parameter_18078", "Parameter_18077", "Parameter_18076", "Parameter_18074", - "Parameter_18073", "Parameter_18072", "Parameter_18067", "Parameter_18066", - "Parameter_18064", "Parameter_18063", "Parameter_18058", "Parameter_18057", - "Parameter_18056", "Parameter_18055", "Parameter_18054", "Parameter_18053", - "Parameter_18050", "Parameter_18049", "Parameter_18048", "Parameter_18047", - "Parameter_18046", "Parameter_18045", "Parameter_18044", "Parameter_18043", - "Parameter_18041", "Parameter_18040", "Parameter_18039", "Parameter_18034", - "Parameter_18033", "Parameter_18032", "Parameter_18031", "Parameter_18030", - "Parameter_18024", "Parameter_18022", "Parameter_18021", "Parameter_18018", - "Parameter_18017", "Parameter_18014", "Parameter_18013", "Parameter_18012", - "Parameter_18011", "Parameter_18010", "Parameter_18009", "Parameter_18008", - "Parameter_18007", "Parameter_18003", "Parameter_18002", "Parameter_18001", - "Parameter_18250", "Parameter_18000", "Parameter_17999", "Parameter_17998", - "Parameter_17996", "Parameter_17995", "Parameter_17994", "Parameter_17993", - "Parameter_17991", "Parameter_17988", "Parameter_17987", "Parameter_17986", - "Parameter_17984", "Parameter_17979", "Parameter_17977", "Parameter_17976", - "Parameter_17974", "Parameter_17973", "Parameter_17971", "Parameter_17970", - "Parameter_17969", "Parameter_17967", "Parameter_18184", "Parameter_17962", - "Parameter_17960", "Parameter_17959", "Parameter_18207", "Parameter_17957", - "Parameter_17956", "Parameter_17953", "Parameter_17952", "Parameter_17950", - "Parameter_17949", "Parameter_17948", "Parameter_17947", "Parameter_17946", - "Parameter_17945", "Parameter_17944", "Parameter_17943", "Parameter_18149", - "Parameter_17940", "Parameter_17937", "Parameter_17935", "Parameter_17934", - "Parameter_17933", "Parameter_17932", "Parameter_17931", "Parameter_17930", - "Parameter_17929", "Parameter_17928", "Parameter_17926", "Parameter_17925", - "Parameter_17924", "Parameter_17923", "Parameter_17921", "Parameter_17920", - "Parameter_17918", "Parameter_17917", "Parameter_17915", "Parameter_17914", - "Parameter_17911", "Parameter_17909", "Parameter_17906", "Parameter_17905", - "Parameter_17903", "Parameter_17902", "Parameter_17897", "Parameter_17895", - "Parameter_17894", "Parameter_17893", "Parameter_18142", "Parameter_17892", - "Parameter_17891", "Parameter_17888", "Parameter_17887", "Parameter_17884", - "Parameter_17883", "Parameter_17878", "Parameter_18084", "Parameter_17875", - "Parameter_17874", "Parameter_17873", "Parameter_17872", "Parameter_17871", - "Parameter_18120", "Parameter_17870", "Parameter_17869", "Parameter_17864", - "Parameter_17863", "Parameter_17862", "Parameter_17861", "Parameter_17860", - "Parameter_17859", "Parameter_17857", "Parameter_17856", "Parameter_17855", - "Parameter_17854", "Parameter_17852", "Parameter_17851", "Parameter_17850", - "Parameter_17849", "Parameter_17846", "Parameter_17844", "Parameter_17843", - "Parameter_17841", "Parameter_17840", "Parameter_17839", "Parameter_17838", - "Parameter_17837", "Parameter_17836", "Parameter_17834", "Parameter_17832", - "Parameter_17830", "Parameter_17829", "Parameter_17827", "Parameter_17826", - "Parameter_17823", "Parameter_17820", "Parameter_17818", "Parameter_17817", - "Parameter_17815", "Parameter_17812", "Parameter_18019", "Parameter_17810", - "Parameter_17809", "Parameter_17808", "Parameter_17807", "Parameter_17806", - "Parameter_17805", "Parameter_17804", "Parameter_17801", "Parameter_17796", - "Parameter_17795", "Parameter_17792", "Parameter_17791", "Parameter_17790", - "Parameter_17789", "Parameter_17788", "Parameter_17787", "Parameter_17786", - "Parameter_17785", "Parameter_17784", "Parameter_17783", "Parameter_17781", - "Parameter_17780", "Parameter_17778", "Parameter_17776", "Parameter_17775", - "Parameter_17774", "Parameter_17773", "Parameter_17772", "Parameter_17771", - "Parameter_17770", "Parameter_17767", "Parameter_18344", "Parameter_17765", - "Parameter_17764", "Parameter_17762", "Parameter_17761", "Parameter_17758", - "Parameter_17755", "Parameter_17754", "Parameter_17753", "Parameter_17752", - "Parameter_17751", "Parameter_17750", "Parameter_17748", "Parameter_17747", - "Parameter_17746", "Parameter_17745", "Parameter_17744", "Parameter_18322", - "Parameter_17743", "Parameter_17742", "Parameter_17740", "Parameter_17739", - "Parameter_17738", "Parameter_17737", "Parameter_17736", "Parameter_17734", - "Parameter_17733", "Parameter_17731", "Parameter_17730", "Parameter_17729", - "Parameter_17726", "Parameter_17725", "Parameter_17724", "Parameter_17722", - "Parameter_17721", "Parameter_17719", "Parameter_17718", "Parameter_17717", - "Parameter_17715", "Parameter_17714", "Parameter_17713", "Parameter_17712", - "Parameter_17709", "Parameter_17708", "Parameter_17706", "Parameter_17705", - "Parameter_17704", "Parameter_17703", "Parameter_17701", "Parameter_17698", - "Parameter_17697", "Parameter_17696", "Parameter_17693", "Parameter_17692", - "Parameter_17690", "Parameter_17688", "Parameter_17686", "Parameter_17685", - "Parameter_17684", "Parameter_17981", "Parameter_17683", "Parameter_17980", - "Parameter_17682", "Parameter_17680", "Parameter_17679", "Parameter_17677", - "Parameter_17674", "Parameter_17672", "Parameter_17671", "Parameter_17670", - "Parameter_17669", "Parameter_17666", "Parameter_17664", "Parameter_17662", - "Parameter_17661", "Parameter_17659", "Parameter_17656", "Parameter_17654", - "Parameter_17652", "Parameter_17651", "Parameter_17650", "Parameter_17649", - "Parameter_17648", "Parameter_17647", "Parameter_17645", "Parameter_17643", - "Parameter_17642", "Parameter_17640", "Parameter_17639", "Parameter_17638", - "Parameter_17636", "Parameter_17628", "Parameter_17627", "Parameter_17625", - "Parameter_17620", "Parameter_17619", "Parameter_17618", "Parameter_17617", - "Parameter_17616", "Parameter_17612", "Parameter_17611", "Parameter_17610", - "Parameter_17609", "Parameter_17608", "Parameter_17607", "Parameter_18386", - "Parameter_17606", "Parameter_17605", "Parameter_17604", "Parameter_17603", - "Parameter_17601", "Parameter_17600", "Parameter_17597", "Parameter_17596", - "Parameter_17595", "Parameter_17728", "Parameter_17594", "Parameter_17593", - "Parameter_17592", "Parameter_17591", "Parameter_17590", "Parameter_17589", - "Parameter_17588", "Parameter_17583", "Parameter_17580", "Parameter_17578", - "Parameter_17577", "Parameter_17574", "Parameter_17573", "Parameter_17572", - "Parameter_17571", "Parameter_18241", "Parameter_17569", "Parameter_17568", - "Parameter_17566", "Parameter_17565", "Parameter_17561", "Parameter_17560", - "Parameter_17558", "Parameter_17557", "Parameter_17555", "Parameter_17554", - "Parameter_17553", "Parameter_17552", "Parameter_17551", "Parameter_17547", - "Parameter_17546", "Parameter_17545", "Parameter_17544", "Parameter_17542", - "Parameter_17541", "Parameter_17540", "Parameter_17539", "Parameter_17536", - "Parameter_17535", "Parameter_17532", "Parameter_17530", "Parameter_17528", - "Parameter_17526", "Parameter_17525", "Parameter_17524", "Parameter_17521", - "Parameter_17518", "Parameter_17626", "Parameter_17517", "Parameter_17515", - "Parameter_17513", "Parameter_17512", "Parameter_17511", "Parameter_17510", - "Parameter_17509", "Parameter_17508", "Parameter_17507", "Parameter_17506", - "Parameter_15507", "Parameter_15505", "Parameter_15504", "Parameter_14788", - "Parameter_17196", "Parameter_17599", "Parameter_15495", "Parameter_15490", - "Parameter_14702", "Parameter_16701", "Parameter_15480", "Parameter_16075", - "Parameter_15470", "Parameter_16728", "Parameter_15046", "Parameter_14288", - "Parameter_15459", "Parameter_15455", "Parameter_15450", "Parameter_15446", - "Parameter_17387", "Parameter_15442", "Parameter_17131", "Parameter_17519", - "Parameter_15431", "Parameter_13944", "Parameter_15426", "Parameter_14012", - "Parameter_15425", "Parameter_15421", "Parameter_15420", "Parameter_14349", - "Parameter_17049", "Parameter_15417", "Parameter_15663", "Parameter_15415", - "Parameter_14758", "Parameter_15399", "Parameter_15397", "Parameter_14241", - "Parameter_16155", "Parameter_15396", "Parameter_15393", "Parameter_15988", - "Parameter_15390", "Parameter_15385", "Parameter_14844", "Parameter_16889", - "Parameter_15381", "Parameter_17835", "Parameter_14949", "Parameter_17322", - "Parameter_15377", "Parameter_15375", "Parameter_18111", "Parameter_15374", - "Parameter_15372", "Parameter_15370", "Parameter_17066", "Parameter_15369", - "Parameter_18090", "Parameter_15368", "Parameter_17233", "Parameter_15367", - "Parameter_17357", "Parameter_15362", "Parameter_14910", "Parameter_15361", - "Parameter_14023", "Parameter_15360", "Parameter_18283", "Parameter_14356", - "Parameter_15350", "Parameter_13923", "Parameter_15338", "Parameter_14563", - "Parameter_15332", "Parameter_16090", "Parameter_15328", "Parameter_14790", - "Parameter_15324", "Parameter_17919", "Parameter_16135", "Parameter_15322", - "Parameter_16824", "Parameter_15319", "Parameter_18300", "Parameter_15312", - "Parameter_15306", "Parameter_15305", "Parameter_16100", "Parameter_17001", - "Parameter_18025", "Parameter_15303", "Parameter_16086", "Parameter_15337", - "Parameter_18135", "Parameter_16290", "Parameter_14807", "Parameter_15323", - "Parameter_15299", "Parameter_13918", "Parameter_16212", "Parameter_15294", - "Parameter_14843", "Parameter_15279", "Parameter_17397", "Parameter_15276", - "Parameter_14417", "Parameter_14444", "Parameter_15207", "Parameter_15512", - "Parameter_14692", "Parameter_16025", "Parameter_15266", "Parameter_14787", - "Parameter_15265", "Parameter_15402", "Parameter_15388", "Parameter_17707", - "Parameter_14721", "Parameter_15364", "Parameter_15264", "Parameter_17385", - "Parameter_18251", "Parameter_15263", "Parameter_14212", "Parameter_17177", - "Parameter_15452", "Parameter_14060", "Parameter_17306", "Parameter_14457", - "Parameter_15258", "Parameter_15255", "Parameter_16759", "Parameter_15253", - "Parameter_15252", "Parameter_15251", "Parameter_18059", "Parameter_15250", - "Parameter_18151", "Parameter_15245", "Parameter_18401", "Parameter_16631", - "Parameter_16035", "Parameter_15237", "Parameter_14810", "Parameter_14336", - "Parameter_16921", "Parameter_18245", "Parameter_15230", "Parameter_15226", - "Parameter_16854", "Parameter_15222", "Parameter_15836", "Parameter_15221", - "Parameter_16147", "Parameter_16613", "Parameter_15210", "Parameter_15460", - "Parameter_17311", "Parameter_15201", "Parameter_15208", "Parameter_15576", - "Parameter_15195", "Parameter_17173", "Parameter_15194", "Parameter_15193", - "Parameter_17886", "Parameter_16922", "Parameter_15352", "Parameter_15598", - "Parameter_16133", "Parameter_15180", "Parameter_15259", "Parameter_15286", - "Parameter_15177", "Parameter_14694", "Parameter_15174", "Parameter_18384", - "Parameter_16056", "Parameter_17405", "Parameter_17813", "Parameter_15168", - "Parameter_15167", "Parameter_16877", "Parameter_17814", "Parameter_15196", - "Parameter_17741", "Parameter_15189", "Parameter_15164", "Parameter_15163", - "Parameter_17060", "Parameter_15162", "Parameter_15159", "Parameter_16233", - "Parameter_15157", "Parameter_16724", "Parameter_15155", "Parameter_14159", - "Parameter_13820", "Parameter_15501", "Parameter_15147", "Parameter_17330", - "Parameter_15502", "Parameter_15172", "Parameter_14118", "Parameter_16731", - "Parameter_17350", "Parameter_15282", "Parameter_15643", "Parameter_15440", - "Parameter_15359", "Parameter_15345", "Parameter_15143", "Parameter_14180", - "Parameter_15130", "Parameter_15125", "Parameter_14109", "Parameter_18313", - "Parameter_15326", "Parameter_14201", "Parameter_13966", "Parameter_18235", - "Parameter_15122", "Parameter_15120", "Parameter_15119", "Parameter_15118", - "Parameter_15117", "Parameter_15115", "Parameter_15467", "Parameter_17658", - "Parameter_15453", "Parameter_15329", "Parameter_17450", "Parameter_15107", - "Parameter_15811", "Parameter_16262", "Parameter_16876", "Parameter_15095", - "Parameter_14422", "Parameter_15780", "Parameter_15094", "Parameter_15791", - "Parameter_15112", "Parameter_14145", "Parameter_15275", "Parameter_15484", - "Parameter_16308", "Parameter_17279", "Parameter_14587", "Parameter_15723", - "Parameter_17602", "Parameter_15087", "Parameter_15079", "Parameter_15521", - "Parameter_17543", "Parameter_14177", "Parameter_15074", "Parameter_15320", - "Parameter_15071", "Parameter_15145", "Parameter_16580", "Parameter_15070", - "Parameter_16364", "Parameter_16711", "Parameter_15066", "Parameter_14388", - "Parameter_16424", "Parameter_14386", "Parameter_15837", "Parameter_17167", - "Parameter_18119", "Parameter_15061", "Parameter_15057", "Parameter_14634", - "Parameter_15055", "Parameter_15053", "Parameter_15047", "Parameter_18276", - "Parameter_17534", "Parameter_15430", "Parameter_15044", "Parameter_15043", - "Parameter_16244", "Parameter_16861", "Parameter_15181", "Parameter_15468", - "Parameter_15038", "Parameter_13960", "Parameter_15227", "Parameter_15477", - "Parameter_16154", "Parameter_17169", "Parameter_15037", "Parameter_15032", - "Parameter_16866", "Parameter_15031", "Parameter_15029", "Parameter_13912", - "Parameter_15027", "Parameter_15026", "Parameter_16754", "Parameter_14699", - "Parameter_15190", "Parameter_15035", "Parameter_18218", "Parameter_16320", - "Parameter_15022", "Parameter_15925", "Parameter_15665", "Parameter_17354", - "Parameter_15017", "Parameter_15086", "Parameter_17192", "Parameter_15015", - "Parameter_17477", "Parameter_17845", "Parameter_16235", "Parameter_17206", - "Parameter_15011", "Parameter_14176", "Parameter_15564", "Parameter_15010", - "Parameter_15009", "Parameter_17992", "Parameter_15005", "Parameter_17965", - "Parameter_15281", "Parameter_15004", "Parameter_15013", "Parameter_16165", - "Parameter_14340", "Parameter_17270", "Parameter_15000", "Parameter_16628", - "Parameter_17802", "Parameter_17223", "Parameter_14999", "Parameter_15317", - "Parameter_14998", "Parameter_14397", "Parameter_13791", "Parameter_14996", - "Parameter_18411", "Parameter_17285", "Parameter_14990", "Parameter_14986", - "Parameter_15937", "Parameter_16551", "Parameter_14496", "Parameter_17091", - "Parameter_14984", "Parameter_14495", "Parameter_18201", "Parameter_15766", - "Parameter_17090", "Parameter_16434", "Parameter_14972", "Parameter_15835", - "Parameter_17899", "Parameter_16999", "Parameter_14969", "Parameter_16957", - "Parameter_13996", "Parameter_18035", "Parameter_16463", "Parameter_14959", - "Parameter_14953", "Parameter_17563", "Parameter_14946", "Parameter_14967", - "Parameter_14944", "Parameter_17760", "Parameter_16572", "Parameter_17866", - "Parameter_14956", "Parameter_18052", "Parameter_14941", "Parameter_17675", - "Parameter_14938", "Parameter_14936", "Parameter_16501", "Parameter_14948", - "Parameter_15378", "Parameter_14934", "Parameter_14933", "Parameter_14931", - "Parameter_15894", "Parameter_15059", "Parameter_14930", "Parameter_15909", - "Parameter_16720", "Parameter_14929", "Parameter_14925", "Parameter_16374", - "Parameter_16846", "Parameter_14014", "Parameter_16431", "Parameter_14919", - "Parameter_18175", "Parameter_15454", "Parameter_16265", "Parameter_17334", - "Parameter_14913", "Parameter_15424", "Parameter_15410", "Parameter_14909", - "Parameter_14908", "Parameter_18160", "Parameter_15476", "Parameter_14907", - "Parameter_14906", "Parameter_15942", "Parameter_14904", "Parameter_13838", - "Parameter_14441", "Parameter_14898", "Parameter_16715", "Parameter_14275", - "Parameter_14897", "Parameter_16651", "Parameter_14728", "Parameter_14895", - "Parameter_14892", "Parameter_18121", "Parameter_14890", "Parameter_14889", - "Parameter_16349", "Parameter_16167", "Parameter_15437", "Parameter_15001", - "Parameter_16275", "Parameter_14878", "Parameter_16242", "Parameter_17523", - "Parameter_16384", "Parameter_14875", "Parameter_14874", "Parameter_14872", - "Parameter_16451", "Parameter_13987", "Parameter_14045", "Parameter_18075", - "Parameter_14867", "Parameter_14407", "Parameter_16672", "Parameter_13860", - "Parameter_15403", "Parameter_14484", "Parameter_14864", "Parameter_14505", - "Parameter_15596", "Parameter_14863", "Parameter_13946", "Parameter_14488", - "Parameter_17331", "Parameter_15816", "Parameter_14862", "Parameter_16436", - "Parameter_14858", "Parameter_16557", "Parameter_14856", "Parameter_13889", - "Parameter_17101", "Parameter_14899", "Parameter_14853", "Parameter_14852", - "Parameter_15618", "Parameter_14848", "Parameter_15966", "Parameter_14846", - "Parameter_16108", "Parameter_14842", "Parameter_14271", "Parameter_17631", - "Parameter_14877", "Parameter_15922", "Parameter_15528", "Parameter_14838", - "Parameter_14958", "Parameter_17529", "Parameter_15090", "Parameter_14923", - "Parameter_16174", "Parameter_14835", "Parameter_14020", "Parameter_14834", - "Parameter_15400", "Parameter_16362", "Parameter_14831", "Parameter_17368", - "Parameter_17983", "Parameter_14827", "Parameter_15482", "Parameter_16096", - "Parameter_18331", "Parameter_17024", "Parameter_15223", "Parameter_14825", - "Parameter_14824", "Parameter_14820", "Parameter_14819", "Parameter_14817", - "Parameter_14816", "Parameter_14815", "Parameter_16087", "Parameter_17978", - "Parameter_14814", "Parameter_16322", "Parameter_14812", "Parameter_14954", - "Parameter_14809", "Parameter_14808", "Parameter_16018", "Parameter_16801", - "Parameter_14806", "Parameter_13967", "Parameter_16799", "Parameter_14818", - "Parameter_14373", "Parameter_17298", "Parameter_14805", "Parameter_16656", - "Parameter_14803", "Parameter_14798", "Parameter_14796", "Parameter_14555", - "Parameter_17193", "Parameter_14795", "Parameter_14960", "Parameter_14793", - "Parameter_14791", "Parameter_14789", "Parameter_16706", "Parameter_15220", - "Parameter_14786", "Parameter_14785", "Parameter_18247", "Parameter_14784", - "Parameter_17135", "Parameter_14830", "Parameter_16709", "Parameter_18342", - "Parameter_14782", "Parameter_14829", "Parameter_14781", "Parameter_14780", - "Parameter_14492", "Parameter_15262", "Parameter_14185", "Parameter_14778", - "Parameter_13861", "Parameter_14777", "Parameter_14774", "Parameter_14151", - "Parameter_15494", "Parameter_16381", "Parameter_14772", "Parameter_14768", - "Parameter_15165", "Parameter_14609", "Parameter_15152", "Parameter_14767", - "Parameter_17257", "Parameter_14662", "Parameter_16415", "Parameter_14763", - "Parameter_16511", "Parameter_18110", "Parameter_15389", "Parameter_16200", - "Parameter_15058", "Parameter_17865", "Parameter_14760", "Parameter_15913", - "Parameter_14755", "Parameter_14258", "Parameter_16453", "Parameter_17087", - "Parameter_15394", "Parameter_14749", "Parameter_14871", "Parameter_16750", - "Parameter_17099", "Parameter_16676", "Parameter_16003", "Parameter_16355", - "Parameter_15411", "Parameter_14746", "Parameter_15590", "Parameter_15752", - "Parameter_14741", "Parameter_16467", "Parameter_14736", "Parameter_14734", - "Parameter_14732", "Parameter_14742", "Parameter_14731", "Parameter_14896", - "Parameter_14729", "Parameter_15497", "Parameter_14063", "Parameter_17487", - "Parameter_18303", "Parameter_14727", "Parameter_17916", "Parameter_17244", - "Parameter_14726", "Parameter_17900", "Parameter_15216", "Parameter_14724", - "Parameter_14720", "Parameter_16296", "Parameter_14719", "Parameter_14765", - "Parameter_15295", "Parameter_17749", "Parameter_14764", "Parameter_15625", - "Parameter_14716", "Parameter_14715", "Parameter_17584", "Parameter_15496", - "Parameter_13933", "Parameter_17217", "Parameter_18225", "Parameter_15541", - "Parameter_14387", "Parameter_14007", "Parameter_14707", "Parameter_15382", - "Parameter_15166", "Parameter_14655", "Parameter_18311", "Parameter_15562", - "Parameter_14704", "Parameter_14703", "Parameter_14966", "Parameter_16765", - "Parameter_14701", "Parameter_13897", "Parameter_15153", "Parameter_17514", - "Parameter_16782", "Parameter_14700", "Parameter_15073", "Parameter_13902", - "Parameter_14698", "Parameter_16156", "Parameter_15135", "Parameter_14690", - "Parameter_14586", "Parameter_15178", "Parameter_17124", "Parameter_15356", - "Parameter_17963", "Parameter_14964", "Parameter_16487", "Parameter_14267", - "Parameter_15899", "Parameter_17793", "Parameter_14684", "Parameter_16499", - "Parameter_15144", "Parameter_13844", "Parameter_16468", "Parameter_14696", - "Parameter_14682", "Parameter_14676", "Parameter_15270", "Parameter_15520", - "Parameter_14673", "Parameter_15212", "Parameter_15763", "Parameter_16425", - "Parameter_15280", "Parameter_17081", "Parameter_16091", "Parameter_15418", - "Parameter_13896", "Parameter_14668", "Parameter_14667", "Parameter_15128", - "Parameter_14665", "Parameter_17182", "Parameter_15331", "Parameter_16768", - "Parameter_17136", "Parameter_15261", "Parameter_15136", "Parameter_14455", - "Parameter_16351", "Parameter_17735", "Parameter_15202", "Parameter_14261", - "Parameter_16626", "Parameter_14658", "Parameter_17125", "Parameter_14656", - "Parameter_15487", "Parameter_15176", "Parameter_16258", "Parameter_17184", - "Parameter_15486", "Parameter_15175", "Parameter_16871", "Parameter_14653", - "Parameter_14652", "Parameter_17220", "Parameter_15186", "Parameter_15815", - "Parameter_15188", "Parameter_16139", "Parameter_16136", "Parameter_15185", - "Parameter_17816", "Parameter_14510", "Parameter_14650", "Parameter_16239", - "Parameter_14642", "Parameter_16571", "Parameter_14640", "Parameter_17105", - "Parameter_15101", "Parameter_14639", "Parameter_14219", "Parameter_15106", - "Parameter_14888", "Parameter_15008", "Parameter_14633", "Parameter_15104", - "Parameter_18150", "Parameter_17336", "Parameter_16962", "Parameter_14630", - "Parameter_14957", "Parameter_16236", "Parameter_18065", "Parameter_14792", - "Parameter_14771", "Parameter_14625", "Parameter_14108", "Parameter_14521", - "Parameter_14677", "Parameter_14666", "Parameter_14622", "Parameter_18186", - "Parameter_13994", "Parameter_15335", "Parameter_14621", "Parameter_14619", - "Parameter_14618", "Parameter_15098", "Parameter_14617", "Parameter_16507", - "Parameter_14616", "Parameter_14873", "Parameter_17691", "Parameter_17582", - "Parameter_14610", "Parameter_14608", "Parameter_15646", "Parameter_16547", - "Parameter_14602", "Parameter_18333", "Parameter_15341", "Parameter_17021", - "Parameter_15461", "Parameter_17142", "Parameter_14175", "Parameter_15067", - "Parameter_13807", "Parameter_17885", "Parameter_15142", "Parameter_16947", - "Parameter_14163", "Parameter_17498", "Parameter_14162", "Parameter_14153", - "Parameter_15917", "Parameter_14963", "Parameter_14430", "Parameter_15075", - "Parameter_14148", "Parameter_13809", "Parameter_14144", "Parameter_14568", - "Parameter_15661", "Parameter_15173", "Parameter_14859", "Parameter_14402", - "Parameter_14615", "Parameter_14152", "Parameter_17175", "Parameter_14281", - "Parameter_14140", "Parameter_17341", "Parameter_15218", "Parameter_14137", - "Parameter_14183", "Parameter_14074", "Parameter_15432", "Parameter_17422", - "Parameter_14367", "Parameter_15726", "Parameter_15327", "Parameter_14129", - "Parameter_17406", "Parameter_14456", "Parameter_17634", "Parameter_15569", - "Parameter_17958", "Parameter_15096", "Parameter_15781", "Parameter_17868", - "Parameter_14779", "Parameter_14122", "Parameter_13907", "Parameter_14408", - "Parameter_14119", "Parameter_14115", "Parameter_14114", "Parameter_15538", - "Parameter_14112", "Parameter_16503", "Parameter_14612", "Parameter_15267", - "Parameter_17036", "Parameter_13906", "Parameter_14712", "Parameter_14315", - "Parameter_14557", "Parameter_15621", "Parameter_14131", "Parameter_14766", - "Parameter_14041", "Parameter_15627", "Parameter_14111", "Parameter_17410", - "Parameter_15129", "Parameter_14043", "Parameter_16567", "Parameter_18249", - "Parameter_18027", "Parameter_14110", "Parameter_16464", "Parameter_17227", - "Parameter_13769", "Parameter_14102", "Parameter_15911", "Parameter_14188", - "Parameter_17975", "Parameter_16955", "Parameter_14104", "Parameter_17882", - "Parameter_14103", "Parameter_15229", "Parameter_15603", "Parameter_17533", - "Parameter_16324", "Parameter_16645", "Parameter_15088", "Parameter_14635", - "Parameter_15829", "Parameter_14100", "Parameter_17475", "Parameter_15921", - "Parameter_15982", "Parameter_13841", "Parameter_18092", "Parameter_14883", - "Parameter_14099", "Parameter_18107", "Parameter_15287", "Parameter_16019", - "Parameter_18051", "Parameter_15302", "Parameter_17292", "Parameter_15478", - "Parameter_15786", "Parameter_17938", "Parameter_16404", "Parameter_17291", - "Parameter_14093", "Parameter_14480", "Parameter_14088", "Parameter_14331", - "Parameter_14087", "Parameter_15474", "Parameter_14372", "Parameter_17065", - "Parameter_15131", "Parameter_14085", "Parameter_14828", "Parameter_17139", - "Parameter_14082", "Parameter_17176", "Parameter_14080", "Parameter_14709", - "Parameter_16041", "Parameter_17004", "Parameter_14243", "Parameter_14078", - "Parameter_17982", "Parameter_14359", "Parameter_14077", "Parameter_14837", - "Parameter_16058", "Parameter_14076", "Parameter_17575", "Parameter_13773", - "Parameter_14467", "Parameter_17130", "Parameter_14811", "Parameter_14071", - "Parameter_14739", "Parameter_14545", "Parameter_14149", "Parameter_14912", - "Parameter_14232", "Parameter_14067", "Parameter_14882", "Parameter_14887", - "Parameter_15963", "Parameter_15069", "Parameter_16781", "Parameter_14233", - "Parameter_14628", "Parameter_15422", "Parameter_13969", "Parameter_16524", - "Parameter_17348", "Parameter_14539", "Parameter_14058", "Parameter_15315", - "Parameter_18258", "Parameter_15150", "Parameter_14056", "Parameter_18352", - "Parameter_14055", "Parameter_14052", "Parameter_14095", "Parameter_14624", - "Parameter_14049", "Parameter_14333", "Parameter_15517", "Parameter_16034", - "Parameter_17371", "Parameter_14113", "Parameter_14199", "Parameter_14485", - "Parameter_16890", "Parameter_15078", "Parameter_15065", "Parameter_13930", - "Parameter_14680", "Parameter_14164", "Parameter_16610", "Parameter_14038", - "Parameter_14738", "Parameter_14857", "Parameter_17122", "Parameter_14836", - "Parameter_14804", "Parameter_14847", "Parameter_17955", "Parameter_14995", - "Parameter_16767", "Parameter_14134", "Parameter_16981", "Parameter_17657", - "Parameter_14069", "Parameter_16106", "Parameter_17069", "Parameter_14155", - "Parameter_14978", "Parameter_14403", "Parameter_18272", "Parameter_15062", - "Parameter_14037", "Parameter_14054", "Parameter_18271", "Parameter_16502", - "Parameter_14884", "Parameter_15795", "Parameter_14374", "Parameter_15818", - "Parameter_15171", "Parameter_14034", "Parameter_18082", "Parameter_14169", - "Parameter_14988", "Parameter_14033", "Parameter_17623", "Parameter_14881", - "Parameter_18364", "Parameter_17356", "Parameter_14027", "Parameter_14026", - "Parameter_16779", "Parameter_14855", "Parameter_14025", "Parameter_14305", - "Parameter_16366", "Parameter_15423", "Parameter_15347", "Parameter_14024", - "Parameter_16376", "Parameter_14022", "Parameter_14130", "Parameter_14016", - "Parameter_15156", "Parameter_14036", "Parameter_14647", "Parameter_14316", - "Parameter_17264", "Parameter_14011", "Parameter_15198", "Parameter_17848", - "Parameter_15030", "Parameter_17797", "Parameter_14448", "Parameter_16670", - "Parameter_14005", "Parameter_15085", "Parameter_14021", "Parameter_14585", - "Parameter_15239", "Parameter_14008", "Parameter_15822", "Parameter_14002", - "Parameter_17153", "Parameter_13999", "Parameter_14657", "Parameter_17260", - "Parameter_14637", "Parameter_17723", "Parameter_17527", "Parameter_14091", - "Parameter_18287", "Parameter_14066", "Parameter_16214", "Parameter_15183", - "Parameter_18293", "Parameter_15290", "Parameter_14799", "Parameter_14412", - "Parameter_17287", "Parameter_16663", "Parameter_17922", "Parameter_15060", - "Parameter_13993", "Parameter_16974", "Parameter_17646", "Parameter_14205", - "Parameter_17347", "Parameter_13991", "Parameter_17031", "Parameter_15133", - "Parameter_14081", "Parameter_15123", "Parameter_14010", "Parameter_14979", - "Parameter_15456", "Parameter_13990", "Parameter_16129", "Parameter_13922", - "Parameter_15561", "Parameter_17282", "Parameter_13988", "Parameter_18112", - "Parameter_14354", "Parameter_13898", "Parameter_15546", "Parameter_13985", - "Parameter_13983", "Parameter_15493", "Parameter_14695", "Parameter_18315", - "Parameter_16937", "Parameter_13982", "Parameter_16318", "Parameter_14706", - "Parameter_14965", "Parameter_16226", "Parameter_13977", "Parameter_14497", - "Parameter_14044", "Parameter_13928", "Parameter_15138", "Parameter_16693", - "Parameter_15018", "Parameter_14962", "Parameter_13968", "Parameter_14438", - "Parameter_16241", "Parameter_15684", "Parameter_14436", "Parameter_15531", - "Parameter_14019", "Parameter_15757", "Parameter_15500", "Parameter_13965", - "Parameter_13908", "Parameter_14362", "Parameter_15248", "Parameter_13901", - "Parameter_13865", "Parameter_13981", "Parameter_14461", "Parameter_15509", - "Parameter_16462", "Parameter_13924", "Parameter_13958", "Parameter_14754", - "Parameter_15099", "Parameter_15254", "Parameter_17581", "Parameter_13872", - "Parameter_16072", "Parameter_17147", "Parameter_14945", "Parameter_13852", - "Parameter_14128", "Parameter_13847", "Parameter_18042", "Parameter_13887", - "Parameter_15077", "Parameter_14314", "Parameter_14075", "Parameter_14681", - "Parameter_15481", "Parameter_17460", "Parameter_13992", "Parameter_14040", - "Parameter_14157", "Parameter_15586", "Parameter_13961", "Parameter_15025", - "Parameter_17912", "Parameter_13909", "Parameter_15824", "Parameter_14977", - "Parameter_13925", "Parameter_15932", "Parameter_17831", "Parameter_16609", - "Parameter_15116", "Parameter_14295", "Parameter_16225", "Parameter_14839", - "Parameter_14797", "Parameter_17034", "Parameter_14135", "Parameter_15716", - "Parameter_15675", "Parameter_16270", "Parameter_14138", "Parameter_14366", - "Parameter_18036", "Parameter_16367", "Parameter_13795", "Parameter_14106", - "Parameter_13913", "Parameter_14437", "Parameter_15994", "Parameter_13851", - "Parameter_16687", "Parameter_14487", "Parameter_16755", "Parameter_14626", - "Parameter_15671", "Parameter_13840", "Parameter_16752", "Parameter_15447", - "Parameter_14911", "Parameter_13886", "Parameter_14773", "Parameter_14225", - "Parameter_18246", "Parameter_14368", "Parameter_15289", "Parameter_17084", - "Parameter_14992", "Parameter_16149", "Parameter_14031", "Parameter_14544", - "Parameter_14733", "Parameter_14880", "Parameter_17417", "Parameter_14670", - "Parameter_13979", "Parameter_14092", "Parameter_15668", "Parameter_14683", - "Parameter_17803", "Parameter_14133", "Parameter_14229", "Parameter_13829", - "Parameter_16817", "Parameter_17673", "Parameter_15114", "Parameter_13875", - "Parameter_14273", "Parameter_13826", "Parameter_14973", "Parameter_14194", - "Parameter_17484", "Parameter_15384", "Parameter_15161", "Parameter_16441", - "Parameter_13825", "Parameter_13815", "Parameter_18290", "Parameter_16549", - "Parameter_13995", "Parameter_17822", "Parameter_14213", "Parameter_15674", - "Parameter_17020", "Parameter_13819", "Parameter_17378", "Parameter_18229", - "Parameter_15241", "Parameter_14762", "Parameter_13818", "Parameter_14489", - "Parameter_16882", "Parameter_17586", "Parameter_15233", "Parameter_16913", - "Parameter_13814", "Parameter_14086", "Parameter_14404", "Parameter_16047", - "Parameter_16805", "Parameter_16685", "Parameter_17441", "Parameter_14708", - "Parameter_18387", "Parameter_15861", "Parameter_15048", "Parameter_15808", - "Parameter_18316", "Parameter_13972", "Parameter_15330", "Parameter_15110", - "Parameter_13790", "Parameter_13919", "Parameter_13792", "Parameter_17128", - "Parameter_15219", "Parameter_14290", "Parameter_16145", "Parameter_18302", - "Parameter_13843", "Parameter_14311", "Parameter_14284", "Parameter_16677", - "Parameter_14117", "Parameter_14423", "Parameter_14473", "Parameter_13796", - "Parameter_13876", "Parameter_14770", "Parameter_15676", "Parameter_14915", - "Parameter_17500", "Parameter_13971", "Parameter_16383", "Parameter_15637", - "Parameter_14294", "Parameter_13956", "Parameter_14893", "Parameter_15800", - "Parameter_17198", "Parameter_14643", "Parameter_16098", "Parameter_14705", - "Parameter_17880", "Parameter_14549", "Parameter_17114", "Parameter_16271", - "Parameter_17218", "Parameter_15433", "Parameter_16216", "Parameter_15451", - "Parameter_14955", "Parameter_16172", "Parameter_18356", "Parameter_17876", - "Parameter_15441", "Parameter_14538", "Parameter_14997", "Parameter_14173", - "Parameter_17531", "Parameter_14518", "Parameter_17146", "Parameter_13830", - "Parameter_17313", "Parameter_14513", "Parameter_14123", "Parameter_15405", - "Parameter_15614", "Parameter_15257", "Parameter_18124", "Parameter_17369", - "Parameter_17160", "Parameter_14894", "Parameter_14132", "Parameter_14660", - "Parameter_13784", "Parameter_14405", "Parameter_16850", "Parameter_14139", - "Parameter_14983", "Parameter_17329", "Parameter_14483", "Parameter_16865", - "Parameter_15523", "Parameter_14490", "Parameter_14018", "Parameter_13816", - "Parameter_14991", "Parameter_15243", "Parameter_17473", "Parameter_13885", - "Parameter_15006", "Parameter_14542", "Parameter_15064", "Parameter_16988", - "Parameter_13882", "Parameter_15084", "Parameter_14752", "Parameter_17858", - "Parameter_13789", "Parameter_16793", "Parameter_14064", "Parameter_15272", - "Parameter_13771", "Parameter_14032", "Parameter_18282", "Parameter_14355", - "Parameter_16143", "Parameter_17492", "Parameter_14470", "Parameter_14832", - "Parameter_14089", "Parameter_15923", "Parameter_13778", "Parameter_14383", - "Parameter_15012", "Parameter_14548", "Parameter_14299", "Parameter_14174", - "Parameter_15184", "Parameter_15600", "Parameter_16858", "Parameter_14649", - "Parameter_15721", "Parameter_18155", "Parameter_14661", "Parameter_13916", - "Parameter_14429", "Parameter_13952", "Parameter_15249", "Parameter_14664", - "Parameter_13768", "Parameter_15247", "Parameter_17941", "Parameter_15083", - "Parameter_15506", "Parameter_15203", "Parameter_16895", "Parameter_15092", - "Parameter_15336", "Parameter_13868", "Parameter_15834", "Parameter_14116", - "Parameter_15740", "Parameter_14868", "Parameter_15644", "Parameter_16049", - "Parameter_16335", "Parameter_14228", "Parameter_13948", "Parameter_16821", - "Parameter_17716", "Parameter_15363", "Parameter_15549", "Parameter_15340", - "Parameter_16598", "Parameter_18217", "Parameter_14004", "Parameter_16909", - "Parameter_15039", "Parameter_17720", "Parameter_15632", "Parameter_14216", - "Parameter_14572", "Parameter_14051", "Parameter_14595", "Parameter_14003", - "Parameter_15097", "Parameter_17757", "Parameter_14224", "Parameter_17113", - "Parameter_17667", "Parameter_15986", "Parameter_16429", "Parameter_14428", - "Parameter_15355", "Parameter_13793", "Parameter_14592", "Parameter_14329", - "Parameter_16203", "Parameter_14142", "Parameter_14589", "Parameter_14380", - "Parameter_14989", "Parameter_13777", "Parameter_17165", "Parameter_15472", - "Parameter_16023", "Parameter_15113", "Parameter_15273", "Parameter_14674", - "Parameter_14167", "Parameter_17149", "Parameter_15435", "Parameter_13976", - "Parameter_14434", "Parameter_14679", "Parameter_14465", "Parameter_14415", - "Parameter_13855", "Parameter_17468", "Parameter_13941", "Parameter_13895", - "Parameter_14463", "Parameter_15014", "Parameter_15051", "Parameter_16427", - "Parameter_18304", "Parameter_15316", "Parameter_14357", "Parameter_14030", - "Parameter_17727", "Parameter_15206", "Parameter_14029", "Parameter_13827", - "Parameter_15387", "Parameter_17241", "Parameter_13917", "Parameter_13963", - "Parameter_14341", "Parameter_17325", "Parameter_15465", "Parameter_14520", - "Parameter_15235", "Parameter_14891", "Parameter_15693", "Parameter_17478", - "Parameter_14097", "Parameter_15211", "Parameter_14266", "Parameter_14120", - "Parameter_14509", "Parameter_17225", "Parameter_15427", "Parameter_17116", - "Parameter_14629", "Parameter_14534", "Parameter_13772", "Parameter_14170", - "Parameter_13831", "Parameter_16991", "Parameter_14098", "Parameter_17711", - "Parameter_13850", "Parameter_17522", "Parameter_15434", "Parameter_13975", - "Parameter_16017", "Parameter_14262", "Parameter_14384", "Parameter_14753", - "Parameter_15902", "Parameter_17178", "Parameter_16489", "Parameter_14070", - "Parameter_14252", "Parameter_14523", "Parameter_13862", "Parameter_15767", - "Parameter_15383", "Parameter_17043", "Parameter_13798", "Parameter_14306", - "Parameter_15149", "Parameter_16653", "Parameter_13834", "Parameter_17939", - "Parameter_13808", "Parameter_17443", "Parameter_15089", "Parameter_17465", - "Parameter_14257", "Parameter_13788", "Parameter_14968", "Parameter_14365", - "Parameter_14204", "Parameter_15314", "Parameter_18166", "Parameter_16497", - "Parameter_14604", "Parameter_14079", "Parameter_15874", "Parameter_16698", - "Parameter_16257", "Parameter_18156", "Parameter_16934", "Parameter_14593", - "Parameter_15296", "Parameter_16811", "Parameter_14168", "Parameter_14006", - "Parameter_16484", "Parameter_14143", "Parameter_14851", "Parameter_16789", - "Parameter_17057", "Parameter_13812", "Parameter_13799", "Parameter_14860", - "Parameter_13785", "Parameter_13864", "Parameter_15108", "Parameter_15642", - "Parameter_13935", "Parameter_14371", "Parameter_13899", "Parameter_15950", - "Parameter_14902", "Parameter_16486", "Parameter_16795", "Parameter_14000", - "Parameter_15872", "Parameter_16604", "Parameter_14398", "Parameter_14285", - "Parameter_15170", "Parameter_14073", "Parameter_13890", "Parameter_15545", - "Parameter_14330", "Parameter_16276", "Parameter_14686", "Parameter_13805", - "Parameter_14502", "Parameter_13978", "Parameter_14603", "Parameter_16734", - "Parameter_14395", "Parameter_14675", "Parameter_14263", "Parameter_13873", - "Parameter_16636", "Parameter_14317", "Parameter_16588", "Parameter_13810", - "Parameter_14462", "Parameter_15885", "Parameter_14171", "Parameter_14042", - "Parameter_14515", "Parameter_15236", "Parameter_14375", "Parameter_14783", - "Parameter_15975", "Parameter_15444", "Parameter_17710", "Parameter_15200", - "Parameter_14240", "Parameter_17290", "Parameter_13877", "Parameter_14035", - "Parameter_14552", "Parameter_16958", "Parameter_13879", "Parameter_15610", - "Parameter_15919", "Parameter_15620", "Parameter_13880", "Parameter_16206", - "Parameter_16342", "Parameter_14865", "Parameter_13881", "Parameter_16192", - "Parameter_18091", "Parameter_16869", "Parameter_17163", "Parameter_14154", - "Parameter_14975", "Parameter_15151", "Parameter_16954", "Parameter_15137", - "Parameter_18351", "Parameter_14466", "Parameter_15081", "Parameter_13823", - "Parameter_14565", "Parameter_15023", "Parameter_13959", "Parameter_13900", - "Parameter_13883", "Parameter_17681", "Parameter_15121", "Parameter_13884", - "Parameter_16492", "Parameter_14193", "Parameter_15379", "Parameter_14822", - "Parameter_15555", "Parameter_17226", "Parameter_14439", "Parameter_13891", - "Parameter_16141", "Parameter_15076", "Parameter_15515", "Parameter_16277", - "Parameter_14800", "Parameter_14165", "Parameter_13905", "Parameter_13893", - "Parameter_13970", "Parameter_14250", "Parameter_17451", "Parameter_13894", - "Parameter_13817", "Parameter_14161", "Parameter_17272", "Parameter_14486", - "Parameter_15284", "Parameter_16210", "Parameter_15391", "Parameter_14713", - "Parameter_13955", "Parameter_15040", "Parameter_14985", "Parameter_15645", - "Parameter_16546", "Parameter_13904", "Parameter_16772", "Parameter_14409", - "Parameter_15842", "Parameter_13870", "Parameter_16605", "Parameter_17400", - "Parameter_14268", "Parameter_18069", "Parameter_13786", "Parameter_16315", - "Parameter_14833", "Parameter_17120", "Parameter_14202", "Parameter_15739", - "Parameter_13915", "Parameter_17660", "Parameter_15224", "Parameter_17019", - "Parameter_17989", "Parameter_13776", "Parameter_14943", "Parameter_14823", - "Parameter_13839", "Parameter_14442", "Parameter_15703", "Parameter_15935", - "Parameter_16530", "Parameter_14735", "Parameter_16237", "Parameter_16417", - "Parameter_13821", "Parameter_17315", "Parameter_14307", "Parameter_17587", - "Parameter_15499", "Parameter_13964", "Parameter_13934", "Parameter_15458", - "Parameter_14981", "Parameter_16370", "Parameter_16834", "Parameter_13926", - "Parameter_16951", "Parameter_14156", "Parameter_16243", "Parameter_17214", - "Parameter_14101", "Parameter_14516", "Parameter_16568", "Parameter_14974", - "Parameter_13945", "Parameter_14937", "Parameter_14926", "Parameter_14230", - "Parameter_14641", "Parameter_15798", "Parameter_17445", "Parameter_14850", - "Parameter_14458", "Parameter_15464", "Parameter_17242", "Parameter_14540", - "Parameter_15915", "Parameter_16963", "Parameter_13937", "Parameter_16886", - "Parameter_13770", "Parameter_14994", "Parameter_14468", "Parameter_13943", - "Parameter_15630", "Parameter_14971", "Parameter_17326", "Parameter_13939", - "Parameter_14065", "Parameter_17195", "Parameter_17633", "Parameter_14854", - "Parameter_16076", "Parameter_14914", "Parameter_17455", "Parameter_14360", - "Parameter_13957", "Parameter_14756", "Parameter_16279", "Parameter_15304", - "Parameter_16385", "Parameter_16978", "Parameter_15298", "Parameter_16397", - "Parameter_16647", "Parameter_14826", "Parameter_17324", "Parameter_14015", - "Parameter_15749", "Parameter_16123", "Parameter_16844", "Parameter_14500", - "Parameter_14391", "Parameter_14107", "Parameter_16742", "Parameter_13950", - "Parameter_15024", "Parameter_16842", "Parameter_14976", "Parameter_17211", - "Parameter_16979", "Parameter_14659", "Parameter_14512", "Parameter_16437", - "Parameter_14220", "Parameter_14940", "Parameter_16995", "Parameter_13998", - "Parameter_14178", "Parameter_16113", "Parameter_14714", "Parameter_16073", - "Parameter_14182", "Parameter_14053", "Parameter_18226", "Parameter_14265", - "Parameter_14181", "Parameter_16813", "Parameter_15386", "Parameter_16107", - "Parameter_18357", "Parameter_17811", "Parameter_15376", "Parameter_14186", - "Parameter_14189", "Parameter_16048", "Parameter_14745", "Parameter_15876", - "Parameter_18373", "Parameter_14632", "Parameter_18161", "Parameter_14688", - "Parameter_14276", "Parameter_13973", "Parameter_14431", "Parameter_14191", - "Parameter_16730", "Parameter_13849", "Parameter_14627", "Parameter_14192", - "Parameter_16660", "Parameter_14514", "Parameter_15438", "Parameter_15321", - "Parameter_16042", "Parameter_15311", "Parameter_14951", "Parameter_16707", - "Parameter_15215", "Parameter_17016", "Parameter_15124", "Parameter_15268", - "Parameter_18085", "Parameter_14876", "Parameter_16897", "Parameter_14196", - "Parameter_15623", "Parameter_17303", "Parameter_14197", "Parameter_15626", - "Parameter_14550", "Parameter_15463", "Parameter_16666", "Parameter_14200", - "Parameter_16595", "Parameter_15373", "Parameter_15256", "Parameter_16940", - "Parameter_15246", "Parameter_17614", "Parameter_13863", "Parameter_14206", - "Parameter_16642", "Parameter_15395", "Parameter_17246", "Parameter_17286", - "Parameter_14207", "Parameter_13782", "Parameter_17109", "Parameter_14208", - "Parameter_14209", "Parameter_15958", "Parameter_14399", "Parameter_15407", - "Parameter_14737", "Parameter_14710", "Parameter_14211", "Parameter_14187", - "Parameter_15488", "Parameter_15401", "Parameter_13857", "Parameter_14105", - "Parameter_15154", "Parameter_16114", "Parameter_16400", "Parameter_13871", - "Parameter_14479", "Parameter_15214", "Parameter_15839", "Parameter_14124", - "Parameter_17332", "Parameter_15308", "Parameter_14813", "Parameter_14693", - "Parameter_17549", "Parameter_13874", "Parameter_14406", "Parameter_17053", - "Parameter_18060", "Parameter_14217", "Parameter_16577", "Parameter_17269", - "Parameter_14454", "Parameter_15016", "Parameter_15735", "Parameter_17365", - "Parameter_14221", "Parameter_15773", "Parameter_16760", "Parameter_14222", - "Parameter_15853", "Parameter_14198", "Parameter_18223", "Parameter_14223", - "Parameter_17112", "Parameter_17769", "Parameter_15187", "Parameter_14350", - "Parameter_17966", "Parameter_14309", "Parameter_16240", "Parameter_17516", - "Parameter_14227", "Parameter_13989", "Parameter_18349", "Parameter_14328", - "Parameter_14308", "Parameter_17495", "Parameter_14231", "Parameter_13824", - "Parameter_16094", "Parameter_15419", "Parameter_15436", "Parameter_14235", - "Parameter_17048", "Parameter_14236", "Parameter_15404", "Parameter_14376", - "Parameter_14237", "Parameter_13842", "Parameter_14725", "Parameter_17901", - "Parameter_14320", "Parameter_17676", "Parameter_14939", "Parameter_14141", - "Parameter_14270", "Parameter_14238", "Parameter_14242", "Parameter_14245", - "Parameter_15354", "Parameter_17381", "Parameter_16178", "Parameter_17537", - "Parameter_15856", "Parameter_15371", "Parameter_14246", "Parameter_15205", - "Parameter_16983", "Parameter_15182", "Parameter_14247", "Parameter_14531", - "Parameter_16077", "Parameter_13774", "Parameter_14062", "Parameter_15293", - "Parameter_15217", "Parameter_14623", "Parameter_14046", "Parameter_14987", - "Parameter_14255", "Parameter_15658", "Parameter_15964", "Parameter_18118", - "Parameter_15228", "Parameter_15160", "Parameter_16565", "Parameter_16949", - "Parameter_16727", "Parameter_14057", "Parameter_14264", "Parameter_14214", - "Parameter_14711", "Parameter_14068", "Parameter_15939", "Parameter_14866", - "Parameter_16763", "Parameter_14272", "Parameter_16803", "Parameter_16252", - "Parameter_16561", "Parameter_14150", "Parameter_13806", "Parameter_14274", - "Parameter_15960", "Parameter_15443", "Parameter_13832", "Parameter_15473", - "Parameter_14253", "Parameter_17126", "Parameter_13949", "Parameter_14293", - "Parameter_14280", "Parameter_14286", "Parameter_17393", "Parameter_14400", - "Parameter_15408", "Parameter_14740", "Parameter_13869", "Parameter_13888", - "Parameter_17273", "Parameter_17833", "Parameter_14289", "Parameter_14090", - "Parameter_15809", "Parameter_14654", "Parameter_16311", "Parameter_14291", - "Parameter_14553", "Parameter_14571", "Parameter_15141", "Parameter_14418", - "Parameter_16946", "Parameter_18240", "Parameter_15297", "Parameter_16986", - "Parameter_14296", "Parameter_16386", "Parameter_14390", "Parameter_14297", - "Parameter_17328", "Parameter_15733", "Parameter_14326", "Parameter_15318", - "Parameter_14506", "Parameter_17493", "Parameter_15343", "Parameter_16064", - "Parameter_16990", "Parameter_14950", "Parameter_17768", "Parameter_14300", - "Parameter_17927", "Parameter_16246", "Parameter_16533", "Parameter_14303", - "Parameter_18273", "Parameter_15285", "Parameter_15880", "Parameter_14301", - "Parameter_16080", "Parameter_14302", "Parameter_14304", "Parameter_13846", - "Parameter_14094", "Parameter_15466", "Parameter_14312", "Parameter_14313", - "Parameter_15485", "Parameter_14319", "Parameter_17430", "Parameter_14750", - "Parameter_16162", "Parameter_14322", "Parameter_13854", "Parameter_16527", - "Parameter_16914", "Parameter_17904", "Parameter_14323", "Parameter_16528", - "Parameter_14324", "Parameter_15225", "Parameter_15100", "Parameter_15127", - "Parameter_14363", "Parameter_14596", "Parameter_14343", "Parameter_14648", - "Parameter_14327", "Parameter_18004", "Parameter_13797", "Parameter_16250", - "Parameter_17055", "Parameter_13833", "Parameter_14332", "Parameter_14562", - "Parameter_14921", "Parameter_13828", "Parameter_14574", "Parameter_13953", - "Parameter_14334", "Parameter_14335", "Parameter_14190", "Parameter_14416", - "Parameter_16259", "Parameter_14337", "Parameter_14342", "Parameter_13858", - "Parameter_17327", "Parameter_15002", "Parameter_13836", "Parameter_15977", - "Parameter_14588", "Parameter_14631", "Parameter_17187", "Parameter_14364", - "Parameter_15054", "Parameter_14369", "Parameter_18210", "Parameter_14370", - "Parameter_16820", "Parameter_16220", "Parameter_14849", "Parameter_14210", - "Parameter_14917", "Parameter_16825", "Parameter_18136", "Parameter_14905", - "Parameter_14932", "Parameter_17576", "Parameter_16373", "Parameter_14377", - "Parameter_14982", "Parameter_17379", "Parameter_14379", "Parameter_14840", - "Parameter_16888", "Parameter_18062", "Parameter_14748", "Parameter_17483", - "Parameter_14136", "Parameter_14382", "Parameter_14393", "Parameter_15068", - "Parameter_14239", "Parameter_15126", "Parameter_16756", "Parameter_14269", - "Parameter_14410", "Parameter_15606", "Parameter_17283", "Parameter_15498", - "Parameter_16281", "Parameter_14685", "Parameter_14501", "Parameter_14254", - "Parameter_14961", "Parameter_14794", "Parameter_14413", "Parameter_14421", - "Parameter_14424", "Parameter_15242", "Parameter_15351", "Parameter_16151", - "Parameter_14583", "Parameter_14425", "Parameter_15309", "Parameter_14723", - "Parameter_17374", "Parameter_14426", "Parameter_14478", "Parameter_15392", - "Parameter_14427", "Parameter_15240", "Parameter_14009", "Parameter_14474", - "Parameter_15313", "Parameter_14433", "Parameter_14172", "Parameter_14443", - "Parameter_16968", "Parameter_16594", "Parameter_14446", "Parameter_14567", - "Parameter_14636", "Parameter_15718", "Parameter_14447", "Parameter_15291", - "Parameter_14508", "Parameter_17798", "Parameter_14449", "Parameter_14451", - "Parameter_14338", "Parameter_17080", "Parameter_14453", "Parameter_15416", - "Parameter_15307", "Parameter_16773", "Parameter_14503", "Parameter_15457", - "Parameter_16420", "Parameter_15901", "Parameter_14885", "Parameter_14554", - "Parameter_16231", "Parameter_15232", "Parameter_14459", "Parameter_17243", - "Parameter_14541", "Parameter_14594", "Parameter_17152", "Parameter_14678", - "Parameter_14464", "Parameter_17440", "Parameter_14469", "Parameter_14471", - "Parameter_16353", "Parameter_14472", "Parameter_16194", "Parameter_14475", - "Parameter_17446", "Parameter_14476", "Parameter_15557", "Parameter_15779", - "Parameter_14651", "Parameter_14526", "Parameter_17251", "Parameter_17968", - "Parameter_13803", "Parameter_15448", "Parameter_14047", "Parameter_15093", - "Parameter_14420", "Parameter_14445", "Parameter_15346", "Parameter_14494", - "Parameter_18383", "Parameter_16121", "Parameter_17470", "Parameter_15283", - "Parameter_15591", "Parameter_17096", "Parameter_14126", "Parameter_16435", - "Parameter_14507", "Parameter_16278", "Parameter_16358", "Parameter_14511", - "Parameter_15491", "Parameter_14517", "Parameter_14260", "Parameter_17321", - "Parameter_18216", "Parameter_15310", "Parameter_16863", "Parameter_14519", - "Parameter_17100", "Parameter_14083", "Parameter_16029", "Parameter_13835", - "Parameter_16179", "Parameter_14203", "Parameter_14569", "Parameter_14524", - "Parameter_17985", "Parameter_17333", "Parameter_14491", "Parameter_14525", - "Parameter_14527", "Parameter_14279", "Parameter_14689", "Parameter_14530", - "Parameter_14532", "Parameter_18202", "Parameter_17253", "Parameter_14533", - "Parameter_14535", "Parameter_16473", "Parameter_14547", "Parameter_15551", - "Parameter_17009", "Parameter_13974", "Parameter_14536", "Parameter_17143", - "Parameter_15357", "Parameter_13980", "Parameter_16459", "Parameter_18176", - "Parameter_15439", "Parameter_14543", "Parameter_16787", "Parameter_14546", - "Parameter_14952", "Parameter_14947", "Parameter_16472", "Parameter_13911", - "Parameter_14226", "Parameter_15469", "Parameter_14121", "Parameter_14146", - "Parameter_15651", "Parameter_13984", "Parameter_16614", "Parameter_16669", - "Parameter_14558", "Parameter_18159", "Parameter_17259", "Parameter_14559", - "Parameter_16691", "Parameter_14560", "Parameter_15814", "Parameter_18015", - "Parameter_15028", "Parameter_14564", "Parameter_13954", "Parameter_14566", - "Parameter_16421", "Parameter_14452", "Parameter_16579", "Parameter_15034", - "Parameter_14570", "Parameter_16150", "Parameter_15140", "Parameter_16945", - "Parameter_14578", "Parameter_14718", "Parameter_16168", "Parameter_14344", - "Parameter_14576", "Parameter_13853", "Parameter_16526", "Parameter_17879", - "Parameter_14672", "Parameter_14645", "Parameter_14325", "Parameter_14579", - "Parameter_17197", "Parameter_14607", "Parameter_17396", "Parameter_15881", - "Parameter_14580", "Parameter_16360", "Parameter_15033", "Parameter_17261", - "Parameter_15191", "Parameter_16092", "Parameter_13775", "Parameter_14582", - "Parameter_17207", "Parameter_13783", "Parameter_17824", "Parameter_17615", - "Parameter_15770", "Parameter_15508", "Parameter_15511", "Parameter_17452", - "Parameter_14166", "Parameter_15513", "Parameter_15514", "Parameter_17229", - "Parameter_15516", "Parameter_15518", "Parameter_15519", "Parameter_16330", - "Parameter_15522", "Parameter_16485", "Parameter_15524", "Parameter_15525", - "Parameter_17376", "Parameter_15526", "Parameter_17881", "Parameter_15533", - "Parameter_14215", "Parameter_15534", "Parameter_15535", "Parameter_17216", - "Parameter_15536", "Parameter_17665", "Parameter_17415", "Parameter_15540", - "Parameter_17170", "Parameter_15292", "Parameter_15542", "Parameter_15851", - "Parameter_16753", "Parameter_15544", "Parameter_15547", "Parameter_16161", - "Parameter_13787", "Parameter_16766", "Parameter_15550", "Parameter_15553", - "Parameter_15556", "Parameter_17238", "Parameter_15558", "Parameter_15559", - "Parameter_14345", "Parameter_16446", "Parameter_18297", "Parameter_17442", - "Parameter_15560", "Parameter_16293", "Parameter_18285", "Parameter_15563", - "Parameter_17428", "Parameter_15565", "Parameter_15204", "Parameter_15566", - "Parameter_16648", "Parameter_18396", "Parameter_16956", "Parameter_17655", - "Parameter_15567", "Parameter_16790", "Parameter_15568", "Parameter_15570", - "Parameter_18006", "Parameter_15571", "Parameter_17137", "Parameter_15572", - "Parameter_15573", "Parameter_15805", "Parameter_14160", "Parameter_15574", - "Parameter_15575", "Parameter_15577", "Parameter_15578", "Parameter_15579", - "Parameter_15192", "Parameter_16130", "Parameter_16439", "Parameter_15503", - "Parameter_16725", "Parameter_17056", "Parameter_15580", "Parameter_16481", - "Parameter_15581", "Parameter_16302", "Parameter_15582", "Parameter_17436", - "Parameter_15583", "Parameter_15413", "Parameter_17213", "Parameter_15020", - "Parameter_15584", "Parameter_17366", "Parameter_15585", "Parameter_17277", - "Parameter_15587", "Parameter_15588", "Parameter_16183", "Parameter_15589", - "Parameter_15592", "Parameter_17622", "Parameter_15594", "Parameter_15597", - "Parameter_17630", "Parameter_15599", "Parameter_15601", "Parameter_17480", - "Parameter_15605", "Parameter_17003", "Parameter_15607", "Parameter_14481", - "Parameter_16535", "Parameter_15611", "Parameter_16537", "Parameter_16831", - "Parameter_17118", "Parameter_15615", "Parameter_14419", "Parameter_15616", - "Parameter_18350", "Parameter_17413", "Parameter_15628", "Parameter_13942", - "Parameter_15629", "Parameter_15631", "Parameter_16713", "Parameter_17699", - "Parameter_15634", "Parameter_15635", "Parameter_18071", "Parameter_15636", - "Parameter_17202", "Parameter_15638", "Parameter_15870", "Parameter_16465", - "Parameter_15924", "Parameter_15639", "Parameter_16592", "Parameter_15641", - "Parameter_15647", "Parameter_17501", "Parameter_15648", "Parameter_17278", - "Parameter_15649", "Parameter_15650", "Parameter_15652", "Parameter_15653", - "Parameter_15654", "Parameter_15655", "Parameter_15656", "Parameter_15019", - "Parameter_17161", "Parameter_17426", "Parameter_15657", "Parameter_17520", - "Parameter_15660", "Parameter_17695", "Parameter_15664", "Parameter_15669", - "Parameter_17471", "Parameter_14339", "Parameter_15670", "Parameter_17300", - "Parameter_17364", "Parameter_15673", "Parameter_16599", "Parameter_17486", - "Parameter_15677", "Parameter_16291", "Parameter_15679", "Parameter_15970", - "Parameter_17474", "Parameter_15680", "Parameter_14870", "Parameter_15681", - "Parameter_15050", "Parameter_15683", "Parameter_15685", "Parameter_16016", - "Parameter_15111", "Parameter_15687", "Parameter_15688", "Parameter_16119", - "Parameter_16011", "Parameter_15689", "Parameter_17794", "Parameter_15690", - "Parameter_17779", "Parameter_15691", "Parameter_17412", "Parameter_15692", - "Parameter_17782", "Parameter_13931", "Parameter_15694", "Parameter_16775", - "Parameter_13932", "Parameter_15695", "Parameter_17391", "Parameter_15696", - "Parameter_15698", "Parameter_15699", "Parameter_15700", "Parameter_15701", - "Parameter_17267", "Parameter_14761", "Parameter_14283", "Parameter_15702", - "Parameter_14251", "Parameter_17026", "Parameter_15989", "Parameter_15704", - "Parameter_16907", "Parameter_16657", "Parameter_17759", "Parameter_17550", - "Parameter_17180", "Parameter_15705", "Parameter_15706", "Parameter_14401", - "Parameter_15707", "Parameter_16518", "Parameter_15708", "Parameter_15709", - "Parameter_15710", "Parameter_16611", "Parameter_15711", "Parameter_17990", - "Parameter_14879", "Parameter_16612", "Parameter_15712", "Parameter_15713", - "Parameter_15492", "Parameter_15714", "Parameter_15715", "Parameter_15717", - "Parameter_15897", "Parameter_16680", "Parameter_15719", "Parameter_15720", - "Parameter_17585", "Parameter_15134", "Parameter_15725", "Parameter_15728", - "Parameter_17889", "Parameter_17310", "Parameter_16228", "Parameter_15729", - "Parameter_15730", "Parameter_14935", "Parameter_17419", "Parameter_15734", - "Parameter_15736", "Parameter_17538", "Parameter_15738", "Parameter_18198", - "Parameter_16664", "Parameter_15146", "Parameter_15741", "Parameter_15742", - "Parameter_15743", "Parameter_15990", "Parameter_17248", "Parameter_15744", - "Parameter_14561", "Parameter_15745", "Parameter_15746", "Parameter_15747", - "Parameter_15748", "Parameter_15750", "Parameter_15751", "Parameter_18106", - "Parameter_17433", "Parameter_15753", "Parameter_16184", "Parameter_15754", - "Parameter_16641", "Parameter_17637", "Parameter_15755", "Parameter_14916", - "Parameter_15756", "Parameter_15758", "Parameter_17847", "Parameter_13920", - "Parameter_15759", "Parameter_16840", "Parameter_13921", "Parameter_15760", - "Parameter_17456", "Parameter_15761", "Parameter_15764", "Parameter_15209", - "Parameter_15765", "Parameter_15768", "Parameter_16000", "Parameter_14127", - "Parameter_15769", "Parameter_17562", "Parameter_14605", "Parameter_16972", - "Parameter_16722", "Parameter_15771", "Parameter_15772", "Parameter_15774", - "Parameter_17548", "Parameter_15775", "Parameter_15776", "Parameter_15777", - "Parameter_16684", "Parameter_15778", "Parameter_15782", "Parameter_15962", - "Parameter_16745", "Parameter_15783", "Parameter_16378", "Parameter_15784", - "Parameter_15785", "Parameter_17556", "Parameter_15787", "Parameter_15788", - "Parameter_17567", "Parameter_15789", "Parameter_16406", "Parameter_16032", - "Parameter_14942", "Parameter_15793", "Parameter_15794", "Parameter_18388", - "Parameter_17476", "Parameter_15796", "Parameter_15801", "Parameter_13947", - "Parameter_15552", "Parameter_15802", "Parameter_16479", "Parameter_15803", - "Parameter_16033", "Parameter_16111", "Parameter_15804", "Parameter_15697", - "Parameter_15806", "Parameter_15810", "Parameter_16748", "Parameter_14353", - "Parameter_17439", "Parameter_17494", "Parameter_15813", "Parameter_16039", - "Parameter_15817", "Parameter_15819", "Parameter_17702", "Parameter_15820", - "Parameter_15821", "Parameter_14841", "Parameter_15823", "Parameter_13910", - "Parameter_14411", "Parameter_15825", "Parameter_15826", "Parameter_16908", - "Parameter_15277", "Parameter_15828", "Parameter_15830", "Parameter_18266", - "Parameter_15831", "Parameter_17155", "Parameter_17800", "Parameter_15832", - "Parameter_17156", "Parameter_15833", "Parameter_16065", "Parameter_16797", - "Parameter_17613", "Parameter_15840", "Parameter_15841", "Parameter_15843", - "Parameter_15622", "Parameter_15844", "Parameter_15595", "Parameter_15845", - "Parameter_16554", "Parameter_15846", "Parameter_15847", "Parameter_16810", - "Parameter_15848", "Parameter_16443", "Parameter_15849", "Parameter_15850", - "Parameter_17621", "Parameter_13801", "Parameter_15852", "Parameter_17632", - "Parameter_14869", "Parameter_15854", "Parameter_15838", "Parameter_16140", - "Parameter_16471", "Parameter_16097", "Parameter_15857", "Parameter_15858", - "Parameter_15859", "Parameter_15860", "Parameter_15489", "Parameter_15863", - "Parameter_13800", "Parameter_14928", "Parameter_16584", "Parameter_14901", - "Parameter_15864", "Parameter_17763", "Parameter_15865", "Parameter_17263", - "Parameter_15866", "Parameter_13936", "Parameter_14993", "Parameter_15617", - "Parameter_15867", "Parameter_17766", "Parameter_16544", "Parameter_17668", - "Parameter_15868", "Parameter_16176", "Parameter_15869", "Parameter_15762", - "Parameter_15871", "Parameter_15873", "Parameter_15875", "Parameter_17504", - "Parameter_15877", "Parameter_17559", "Parameter_15878", "Parameter_15879", - "Parameter_16104", "Parameter_15882", "Parameter_15883", "Parameter_16982", - "Parameter_17232", "Parameter_15884", "Parameter_15886", "Parameter_15887", - "Parameter_15888", "Parameter_16671", "Parameter_15889", "Parameter_14577", - "Parameter_16970", "Parameter_15890", "Parameter_18147", "Parameter_14158", - "Parameter_15891", "Parameter_18391", "Parameter_17281", "Parameter_15892", - "Parameter_15342", "Parameter_15893", "Parameter_15895", "Parameter_15896", - "Parameter_15898", "Parameter_15900", "Parameter_15903", "Parameter_15904", - "Parameter_18257", "Parameter_17678", "Parameter_14358", "Parameter_15905", - "Parameter_17409", "Parameter_15532", "Parameter_15906", "Parameter_16627", - "Parameter_16845", "Parameter_15907", "Parameter_15908", "Parameter_15910", - "Parameter_15912", "Parameter_15914", "Parameter_15916", "Parameter_15918", - "Parameter_15920", "Parameter_15926", "Parameter_17025", "Parameter_17275", - "Parameter_17431", "Parameter_15554", "Parameter_15928", "Parameter_16649", - "Parameter_15929", "Parameter_17828", "Parameter_15930", "Parameter_15931", - "Parameter_15933", "Parameter_15934", "Parameter_15036", "Parameter_16860", - "Parameter_15827", "Parameter_15936", "Parameter_16862", "Parameter_14493", - "Parameter_15938", "Parameter_15940", "Parameter_15941", "Parameter_17624", - "Parameter_14347", "Parameter_15943", "Parameter_15944", "Parameter_15945", - "Parameter_15948", "Parameter_15269", "Parameter_17047", "Parameter_17297", - "Parameter_15949", "Parameter_15951", "Parameter_18327", "Parameter_15952", - "Parameter_14757", "Parameter_15953", "Parameter_16736", "Parameter_15954", - "Parameter_17035", "Parameter_15955", "Parameter_18212", "Parameter_14147", - "Parameter_15956", "Parameter_15957", "Parameter_16553", "Parameter_15959", - "Parameter_15961", "Parameter_14845", "Parameter_15965", "Parameter_15967", - "Parameter_14611", "Parameter_15968", "Parameter_15619", "Parameter_15993", - "Parameter_16714", "Parameter_15969", "Parameter_15972", "Parameter_15973", - "Parameter_15974", "Parameter_15976", "Parameter_15978", "Parameter_15979", - "Parameter_14346", "Parameter_15980", "Parameter_15981", "Parameter_15984", - "Parameter_15985", "Parameter_15987", "Parameter_14584", "Parameter_15991", - "Parameter_16733", "Parameter_17496", "Parameter_15995", "Parameter_15996", - "Parameter_14687", "Parameter_13914", "Parameter_15997", "Parameter_15998", - "Parameter_15999", "Parameter_16925", "Parameter_16001", "Parameter_16927", - "Parameter_16002", "Parameter_16248", "Parameter_16616", "Parameter_15080", - "Parameter_16004", "Parameter_14298", "Parameter_16828", "Parameter_16005", - "Parameter_16006", "Parameter_16007", "Parameter_17689", "Parameter_16008", - "Parameter_16009", "Parameter_16010", "Parameter_16012", "Parameter_16013", - "Parameter_18321", "Parameter_15334", "Parameter_17362", "Parameter_16014", - "Parameter_16015", "Parameter_16020", "Parameter_17054", "Parameter_14600", - "Parameter_16815", "Parameter_17164", "Parameter_18277", "Parameter_16021", - "Parameter_18389", "Parameter_15731", "Parameter_17411", "Parameter_16022", - "Parameter_16024", "Parameter_15353", "Parameter_16026", "Parameter_16027", - "Parameter_16028", "Parameter_16030", "Parameter_14440", "Parameter_16031", - "Parameter_15662", "Parameter_16036", "Parameter_16757", "Parameter_16037", - "Parameter_17936", "Parameter_14722", "Parameter_16038", "Parameter_15790", - "Parameter_16040", "Parameter_16043", "Parameter_16638", "Parameter_16044", - "Parameter_16045", "Parameter_16207", "Parameter_16046", "Parameter_16050", - "Parameter_17732", "Parameter_16051", "Parameter_16053", "Parameter_16054", - "Parameter_16059", "Parameter_16060", "Parameter_16061", "Parameter_15812", - "Parameter_13903", "Parameter_16062", "Parameter_16063", "Parameter_16371", - "Parameter_16066", "Parameter_16992", "Parameter_16067", "Parameter_14348", - "Parameter_16313", "Parameter_15041", "Parameter_16069", "Parameter_14287", - "Parameter_16893", "Parameter_15132", "Parameter_16070", "Parameter_16071", - "Parameter_16078", "Parameter_16079", "Parameter_16081", "Parameter_15102", - "Parameter_16082", "Parameter_16083", "Parameter_16084", "Parameter_16085", - "Parameter_15199", "Parameter_17119", "Parameter_16880", "Parameter_15537", - "Parameter_16088", "Parameter_16089", "Parameter_17104", "Parameter_16093", - "Parameter_16095", "Parameter_16099", "Parameter_15727", "Parameter_16101", - "Parameter_16822", "Parameter_14321", "Parameter_17002", "Parameter_16102", - "Parameter_16103", "Parameter_15855", "Parameter_16105", "Parameter_16109", - "Parameter_16110", "Parameter_16272", "Parameter_16112", "Parameter_15260", - "Parameter_14351", "Parameter_16870", "Parameter_16357", "Parameter_16116", - "Parameter_16118", "Parameter_16124", "Parameter_18023", "Parameter_16125", - "Parameter_16126", "Parameter_13892", "Parameter_16127", "Parameter_18026", - "Parameter_16804", "Parameter_17098", "Parameter_16128", "Parameter_16131", - "Parameter_16864", "Parameter_16132", "Parameter_15231", "Parameter_16746", - "Parameter_16134", "Parameter_16387", "Parameter_16137", "Parameter_17819", - "Parameter_16138", "Parameter_16142", "Parameter_16146", "Parameter_16148", - "Parameter_16152", "Parameter_15602", "Parameter_16153", "Parameter_18125", - "Parameter_16157", "Parameter_16158", "Parameter_18128", "Parameter_13813", - "Parameter_16159", "Parameter_16160", "Parameter_16966", "Parameter_16163", - "Parameter_15021", "Parameter_16164", "Parameter_14613", "Parameter_15792", - "Parameter_16166", "Parameter_16887", "Parameter_18195", "Parameter_14310", - "Parameter_17067", "Parameter_15947", "Parameter_16169", "Parameter_16170", - "Parameter_16171", "Parameter_17134", "Parameter_14922", "Parameter_16173", - "Parameter_17463", "Parameter_16175", "Parameter_16337", "Parameter_16177", - "Parameter_15325", "Parameter_16935", "Parameter_16430", "Parameter_16180", - "Parameter_17898", "Parameter_14529", "Parameter_14278", "Parameter_16422", - "Parameter_16181", "Parameter_16556", "Parameter_16182", "Parameter_18382", - "Parameter_16186", "Parameter_18274", "Parameter_16496", "Parameter_16188", - "Parameter_14389", "Parameter_16189", "Parameter_18088", "Parameter_16190", - "Parameter_16191", "Parameter_16193", "Parameter_16195", "Parameter_16504", - "Parameter_17121", "Parameter_16196", "Parameter_16198", "Parameter_16199", - "Parameter_16201", "Parameter_16202", "Parameter_16205", "Parameter_16208", - "Parameter_15091", "Parameter_14924", "Parameter_14028", "Parameter_16639", - "Parameter_16531", "Parameter_16209", "Parameter_16211", "Parameter_16213", - "Parameter_16215", "Parameter_17359", "Parameter_15667", "Parameter_16218", - "Parameter_16219", "Parameter_16513", "Parameter_17234", "Parameter_15548", - "Parameter_16221", "Parameter_18190", "Parameter_14195", "Parameter_16222", - "Parameter_16223", "Parameter_17050", "Parameter_16227", "Parameter_16469", - "Parameter_16230", "Parameter_16232", "Parameter_16234", "Parameter_16238", - "Parameter_16833", "Parameter_17201", "Parameter_16247", "Parameter_16251", - "Parameter_16253", "Parameter_16618", "Parameter_16254", "Parameter_18153", - "Parameter_16255", "Parameter_16256", "Parameter_17853", "Parameter_16260", - "Parameter_16569", "Parameter_16261", "Parameter_16263", "Parameter_16055", - "Parameter_16264", "Parameter_16266", "Parameter_16268", "Parameter_16643", - "Parameter_16269", "Parameter_16273", "Parameter_16274", "Parameter_16280", - "Parameter_15732", "Parameter_16283", "Parameter_14646", "Parameter_14499", - "Parameter_16284", "Parameter_17299", "Parameter_16285", "Parameter_15613", - "Parameter_16286", "Parameter_18255", "Parameter_14184", "Parameter_16287", - "Parameter_16288", "Parameter_14039", "Parameter_16574", "Parameter_16289", - "Parameter_16461", "Parameter_16292", "Parameter_15412", "Parameter_14013", - "Parameter_16294", "Parameter_16407", "Parameter_16295", "Parameter_14498", - "Parameter_16297", "Parameter_18196", "Parameter_16298", "Parameter_15139", - "Parameter_16299", "Parameter_17910", "Parameter_16300", "Parameter_17271", - "Parameter_16301", "Parameter_16303", "Parameter_16898", "Parameter_15429", - "Parameter_17266", "Parameter_16304", "Parameter_16305", "Parameter_17268", - "Parameter_16306", "Parameter_16924", "Parameter_16307", "Parameter_16309", - "Parameter_16926", "Parameter_16316", "Parameter_16319", "Parameter_16321", - "Parameter_16323", "Parameter_17249", "Parameter_16325", "Parameter_14614", - "Parameter_16634", "Parameter_14802", "Parameter_16920", "Parameter_14551", - "Parameter_16217", "Parameter_16326", "Parameter_16327", "Parameter_16941", - "Parameter_16328", "Parameter_16120", "Parameter_16329", "Parameter_16331", - "Parameter_16333", "Parameter_16338", "Parameter_14644", "Parameter_16339", - "Parameter_16340", "Parameter_16341", "Parameter_16343", "Parameter_15612", - "Parameter_14801", "Parameter_16344", "Parameter_17425", "Parameter_14900", - "Parameter_16345", "Parameter_16346", "Parameter_17570", "Parameter_14918", - "Parameter_15797", "Parameter_16348", "Parameter_14920", "Parameter_16350", - "Parameter_16352", "Parameter_16354", "Parameter_15529", "Parameter_17307", - "Parameter_16356", "Parameter_16878", "Parameter_16361", "Parameter_14277", - "Parameter_17262", "Parameter_16363", "Parameter_16115", "Parameter_16365", - "Parameter_16368", "Parameter_16369", "Parameter_16372", "Parameter_16625", - "Parameter_16375", "Parameter_18093", "Parameter_16617", "Parameter_16377", - "Parameter_14072", "Parameter_16379", "Parameter_16589", "Parameter_16380", - "Parameter_16388", "Parameter_14730", "Parameter_16696", "Parameter_17314", - "Parameter_17598", "Parameter_14477", "Parameter_16389", "Parameter_16390", - "Parameter_16985", "Parameter_16282", "Parameter_16391", "Parameter_16392", - "Parameter_16393", "Parameter_15003", "Parameter_16185", "Parameter_16394", - "Parameter_16395", "Parameter_16396", "Parameter_16398", "Parameter_16399", - "Parameter_16401", "Parameter_16402", "Parameter_16403", "Parameter_16405", - "Parameter_17908", "Parameter_16408", "Parameter_16409", "Parameter_17490", - "Parameter_14743", "Parameter_16410", "Parameter_16411", "Parameter_18005", - "Parameter_17635", "Parameter_15862", "Parameter_16413", "Parameter_16414", - "Parameter_16416", "Parameter_16418", "Parameter_14017", "Parameter_16419", - "Parameter_17372", "Parameter_17821", "Parameter_17079", "Parameter_16052", - "Parameter_16426", "Parameter_14927", "Parameter_14394", "Parameter_16428", - "Parameter_16432", "Parameter_17395", "Parameter_16433", "Parameter_17028", - "Parameter_17641", "Parameter_16438", "Parameter_16440", "Parameter_16442", - "Parameter_16654", "Parameter_16445", "Parameter_16074", "Parameter_16448", - "Parameter_16449", "Parameter_16450", "Parameter_16452", "Parameter_18029", - "Parameter_17129", "Parameter_17663", "Parameter_13822", "Parameter_16454", - "Parameter_16455", "Parameter_16347", "Parameter_16456", "Parameter_16703", - "Parameter_14385", "Parameter_15234", "Parameter_17071", "Parameter_16458", - "Parameter_16460", "Parameter_16144", "Parameter_16466", "Parameter_16470", - "Parameter_16474", "Parameter_16475", "Parameter_14059", "Parameter_16476", - "Parameter_16477", "Parameter_18279", "Parameter_18070", "Parameter_17700", - "Parameter_15927", "Parameter_16478", "Parameter_16480", "Parameter_15344", - "Parameter_16483", "Parameter_16488", "Parameter_16490", "Parameter_14381", - "Parameter_16117", "Parameter_16491", "Parameter_14691", "Parameter_16493", - "Parameter_16494", "Parameter_16495", "Parameter_16229", "Parameter_16498", - "Parameter_17093", "Parameter_16500", "Parameter_16505", "Parameter_16506", - "Parameter_16508", "Parameter_14050", "Parameter_13802", "Parameter_16224", - "Parameter_16509", "Parameter_17427", "Parameter_16719", "Parameter_16510", - "Parameter_17653", "Parameter_16514", "Parameter_16515", "Parameter_16516", - "Parameter_16517", "Parameter_18094", "Parameter_17194", "Parameter_13811", - "Parameter_16519", "Parameter_14744", "Parameter_16520", "Parameter_15109", - "Parameter_15640", "Parameter_17115", "Parameter_16412", "Parameter_16521", - "Parameter_16523", "Parameter_16525", "Parameter_15686", "Parameter_16529", - "Parameter_16532", "Parameter_18068", "Parameter_16534", "Parameter_18363", - "Parameter_17421", "Parameter_15333", "Parameter_14482", "Parameter_16536", - "Parameter_18038", "Parameter_16538", "Parameter_15807", "Parameter_16539", - "Parameter_16540", "Parameter_17335", "Parameter_14048", "Parameter_16541", - "Parameter_16542", "Parameter_15992", "Parameter_16543", "Parameter_13794", - "Parameter_16545", "Parameter_15409", "Parameter_16548", "Parameter_14590", - "Parameter_16550", "Parameter_18028", "Parameter_14256", "Parameter_16552", - "Parameter_16555", "Parameter_15349", "Parameter_16558", "Parameter_16559", - "Parameter_16560", "Parameter_18231", "Parameter_16562", "Parameter_16563", - "Parameter_17158", "Parameter_16564", "Parameter_14671", "Parameter_16566", - "Parameter_16570", "Parameter_16573", "Parameter_16575", "Parameter_16576", - "Parameter_16204", "Parameter_16578", "Parameter_16581", "Parameter_16583", - "Parameter_16891", "Parameter_16585", "Parameter_16586", "Parameter_16590", - "Parameter_16591", "Parameter_16593", "Parameter_16596", "Parameter_16600", - "Parameter_15398", "Parameter_16601", "Parameter_16602", "Parameter_16603", - "Parameter_16606", "Parameter_14697", "Parameter_16607", "Parameter_18200", - "Parameter_16057", "Parameter_16608", "Parameter_16615", "Parameter_16619", - "Parameter_16620", "Parameter_16621", "Parameter_17342", "Parameter_16622", - "Parameter_15414", "Parameter_16623", "Parameter_15052", "Parameter_16624", - "Parameter_17435", "Parameter_16629", "Parameter_14581", "Parameter_16630", - "Parameter_16632", "Parameter_15530", "Parameter_14669", "Parameter_17390", - "Parameter_16633", "Parameter_16635", "Parameter_16640", "Parameter_16644", - "Parameter_16646", "Parameter_16650", "Parameter_17245", "Parameter_16655", - "Parameter_15103", "Parameter_16658", "Parameter_14460", "Parameter_16661", - "Parameter_16665", "Parameter_16667", "Parameter_14084", "Parameter_16944", - "Parameter_18168", "Parameter_16668", "Parameter_16122", "Parameter_16673", - "Parameter_17896", "Parameter_16674", "Parameter_16675", "Parameter_14821", - "Parameter_15539", "Parameter_16678", "Parameter_14598", "Parameter_16910", - "Parameter_17219", "Parameter_16679", "Parameter_16681", "Parameter_14234", - "Parameter_16682", "Parameter_16989", "Parameter_16312", "Parameter_16686", - "Parameter_15479", "Parameter_16688", "Parameter_16689", "Parameter_16692", - "Parameter_16694", "Parameter_16695", "Parameter_16857", "Parameter_15158", - "Parameter_16697", "Parameter_16699", "Parameter_17316", "Parameter_14556", - "Parameter_16950", "Parameter_16700", "Parameter_17111", "Parameter_16942", - "Parameter_17890", "Parameter_16702", "Parameter_14528", "Parameter_16704", - "Parameter_16705", "Parameter_16334", "Parameter_16708", "Parameter_17429", - "Parameter_16710", "Parameter_16712", "Parameter_15301", "Parameter_16359", - "Parameter_17389", "Parameter_16716", "Parameter_14575", "Parameter_16718", - "Parameter_16721", "Parameter_18295", "Parameter_14606", "Parameter_16723", - "Parameter_16726", "Parameter_16732", "Parameter_16735", "Parameter_16737", - "Parameter_18330", "Parameter_16187", "Parameter_16738", "Parameter_17961", - "Parameter_16739", "Parameter_16740", "Parameter_16068", "Parameter_16741", - "Parameter_15604", "Parameter_16743", "Parameter_15197", "Parameter_16975", - "Parameter_15483", "Parameter_17284", "Parameter_17029", "Parameter_13962", - "Parameter_16744", "Parameter_16747", "Parameter_16749", "Parameter_16751", - "Parameter_16758", "Parameter_16267", "Parameter_17107", "Parameter_14432", - "Parameter_17353", "Parameter_16761", "Parameter_16762", "Parameter_15105", - "Parameter_16764", "Parameter_16769", "Parameter_14522", "Parameter_16770", - "Parameter_16771", "Parameter_17913", "Parameter_16774", "Parameter_16776", - "Parameter_15179", "Parameter_16778", "Parameter_16780", "Parameter_16783", - "Parameter_17239", "Parameter_17030", "Parameter_16784", "Parameter_17075", - "Parameter_14747", "Parameter_15971", "Parameter_16785", "Parameter_16786", - "Parameter_16314", "Parameter_17157", "Parameter_16788", "Parameter_16791", - "Parameter_16792", "Parameter_18328", "Parameter_16794", "Parameter_15593", - "Parameter_16796", "Parameter_18298", "Parameter_14001", "Parameter_16798", - "Parameter_14597", "Parameter_16800", "Parameter_14599", "Parameter_16911", - "Parameter_16802", "Parameter_16806", "Parameter_14096", "Parameter_16807", - "Parameter_16808", "Parameter_17040", "Parameter_13951", "Parameter_17094", - "Parameter_16809", "Parameter_18288", "Parameter_16812", "Parameter_14061", - "Parameter_16444", "Parameter_16814", "Parameter_17438", "Parameter_14601", - "Parameter_16816", "Parameter_15609", "Parameter_16818", "Parameter_14717", - "Parameter_16597", "Parameter_16819", "Parameter_17097", "Parameter_16823", - "Parameter_16582", "Parameter_16332", "Parameter_17172", "Parameter_17997", - "Parameter_17418", "Parameter_16826", "Parameter_14591", "Parameter_16827", - "Parameter_16829", "Parameter_16830", "Parameter_16336", "Parameter_16423", - "Parameter_17179", "Parameter_18020", "Parameter_16832", "Parameter_16835", - "Parameter_16836", "Parameter_16837", "Parameter_16838", "Parameter_16839", - "Parameter_16841", "Parameter_16843", "Parameter_17579", "Parameter_16847", - "Parameter_16848", "Parameter_17304", "Parameter_17095", "Parameter_16849", - "Parameter_17140", "Parameter_14663", "Parameter_16851", "Parameter_17222", - "Parameter_14435", "Parameter_16852", "Parameter_16853", "Parameter_15633", - "Parameter_16855", "Parameter_14775", "Parameter_15983", "Parameter_17186", - "Parameter_16856", "Parameter_16976", "Parameter_16867", "Parameter_16317", - "Parameter_16868", "Parameter_16872", "Parameter_16873", "Parameter_17159", - "Parameter_13940", "Parameter_16874", "Parameter_16875", "Parameter_16879", - "Parameter_16881", "Parameter_16883", "Parameter_16662", "Parameter_16884", - "Parameter_17162", "Parameter_16885", "Parameter_16892", "Parameter_16894", - "Parameter_16896", "Parameter_15063", "Parameter_17183", "Parameter_16899", - "Parameter_16900", "Parameter_16901", "Parameter_16903", "Parameter_14759", - "Parameter_16904", "Parameter_16905", "Parameter_16906", "Parameter_17644", - "Parameter_13859", "Parameter_16912", "Parameter_16915", "Parameter_16916", - "Parameter_16917", "Parameter_16918", "Parameter_16923", "Parameter_17877", - "Parameter_16928", "Parameter_16197", "Parameter_16929", "Parameter_16930", - "Parameter_16931", "Parameter_16382", "Parameter_16933", "Parameter_16936", - "Parameter_15799", "Parameter_16938", "Parameter_13929", "Parameter_17224", - "Parameter_16939", "Parameter_16943", "Parameter_15007", "Parameter_16948", - "Parameter_15271", "Parameter_16952", "Parameter_18260", "Parameter_17132", - "Parameter_16953", "Parameter_16959", "Parameter_16960", "Parameter_16961", - "Parameter_16964", "Parameter_14352", "Parameter_16965", "Parameter_16967", - "Parameter_15475", "Parameter_17276", "Parameter_16969", "Parameter_16971", - "Parameter_16973", "Parameter_13848", "Parameter_16977", "Parameter_15082", - "Parameter_16980", "Parameter_17951", "Parameter_14620", "Parameter_16987", - "Parameter_17942", "Parameter_16993", "Parameter_15672", "Parameter_16994", - "Parameter_16996", "Parameter_17106", "Parameter_16997", "Parameter_16447", - "Parameter_16998", "Parameter_17000", "Parameter_17005", "Parameter_15169", - "Parameter_17006", "Parameter_14179", "Parameter_15045", "Parameter_17007", - "Parameter_14125", "Parameter_17008", "Parameter_17145", "Parameter_17010", - "Parameter_17825", "Parameter_16637", "Parameter_17011", "Parameter_17012", - "Parameter_17013", "Parameter_17756", "Parameter_17014", "Parameter_17015", - "Parameter_14392", "Parameter_17017", "Parameter_17018", "Parameter_17022", - "Parameter_15238", "Parameter_17023", "Parameter_17027", "Parameter_14638", - "Parameter_17032", "Parameter_16659", "Parameter_17033", "Parameter_17037", - "Parameter_17038", "Parameter_15666", "Parameter_17346", "Parameter_15358", - "Parameter_17039", "Parameter_16932", "Parameter_17041", "Parameter_13837", - "Parameter_17042", "Parameter_17799", "Parameter_14450", "Parameter_17044", - "Parameter_17045", "Parameter_18353", "Parameter_17046", "Parameter_16729", - "Parameter_17051", "Parameter_18016", "Parameter_17052", "Parameter_18305", - "Parameter_17058", "Parameter_15737", "Parameter_17059", "Parameter_17061", - "Parameter_17171", "Parameter_17062", "Parameter_16512", "Parameter_17063", - "Parameter_17964", "Parameter_17064", "Parameter_17068", "Parameter_17070", - "Parameter_17072", "Parameter_17073", "Parameter_18081", "Parameter_17972", - "Parameter_14970", "Parameter_17339", "Parameter_17076", "Parameter_17204", - "Parameter_17077", "Parameter_17138", "Parameter_17078", "Parameter_17082", - "Parameter_18270", "Parameter_17083", "Parameter_18105", "Parameter_16245", - "Parameter_17085", "Parameter_18211", "Parameter_17469", "Parameter_15365", - "Parameter_17247", "Parameter_15406", "Parameter_14573", "Parameter_17086", - "Parameter_17088", "Parameter_15288", "Parameter_17089", "Parameter_17954", - "Parameter_17375", "Parameter_16249", "Parameter_17092", "Parameter_18061", - "Parameter_17102", "Parameter_17103", "Parameter_15428", "Parameter_14414", - "Parameter_17108", "Parameter_14292", "Parameter_17110", "Parameter_15449", - "Parameter_17117", "Parameter_17123", "Parameter_17127", "Parameter_17133", - "Parameter_17141", "Parameter_17777", "Parameter_15148", "Parameter_17144", - "Parameter_15348", "Parameter_17148", "Parameter_16310", "Parameter_17150", - "Parameter_18167", "Parameter_17312", "Parameter_15471", "Parameter_17151", - "Parameter_17154", "Parameter_13878", "Parameter_17166", "Parameter_17168", - "Parameter_17174", "Parameter_16859", "Parameter_17181", "Parameter_17185", - "Parameter_18137", "Parameter_17188", "Parameter_14776", "Parameter_16457", - "Parameter_17189", "Parameter_14396", "Parameter_17190", "Parameter_14282", - "Parameter_14769", "Parameter_13938", "Parameter_17191", "Parameter_17199", - "Parameter_17200", "Parameter_15056", "Parameter_17203", "Parameter_17205", - "Parameter_17208", "Parameter_17842", "Parameter_17209", "Parameter_17210", - "Parameter_17212", "Parameter_14361", "Parameter_17215", "Parameter_18232", - "Parameter_17074", "Parameter_17377", "Parameter_14218", "Parameter_17221", - "Parameter_17228", "Parameter_17230", "Parameter_13867", "Parameter_15462", - "Parameter_17231", "Parameter_14980", "Parameter_17235", "Parameter_17236", - "Parameter_13804", "Parameter_17237", "Parameter_17240", "Parameter_14318", - "Parameter_17250", "Parameter_15072", "Parameter_15213", "Parameter_17252", - "Parameter_16522", "Parameter_15049", "Parameter_15682", "Parameter_17254", - "Parameter_17255", "Parameter_13927", "Parameter_17256", "Parameter_14903", - "Parameter_17258", "Parameter_17265", "Parameter_17907", "Parameter_17274", - "Parameter_14886", "Parameter_16690", "Parameter_17280", "Parameter_17867", - "Parameter_17288", "Parameter_15042", "Parameter_17289", "Parameter_16919", - "Parameter_17293", "Parameter_17294", "Parameter_17295", "Parameter_13856", - "Parameter_15527", "Parameter_17296", "Parameter_17301", "Parameter_17302", - "Parameter_15274", "Parameter_14259", "Parameter_17305", "Parameter_17308", - "Parameter_15244", "Parameter_17309", "Parameter_15278", "Parameter_17317", - "Parameter_17318", "Parameter_16587", "Parameter_17319", "Parameter_17320", - "Parameter_17323", "Parameter_17337", "Parameter_17338", "Parameter_14378", - "Parameter_17340", "Parameter_14537", "Parameter_15543", "Parameter_17343", - "Parameter_17344", "Parameter_17345", "Parameter_17349", "Parameter_17351", - "Parameter_17352", "Parameter_17564", "Parameter_15510", "Parameter_17355", - "Parameter_16984", "Parameter_17358", "Parameter_17360", "Parameter_13845", - "Parameter_17361", "Parameter_17363", "Parameter_14751", "Parameter_16777", - "Parameter_17367", "Parameter_15339", "Parameter_14248", "Parameter_17370", - "Parameter_17373", "Parameter_17380", "Parameter_17382", "Parameter_17383", - "Parameter_16652", "Parameter_17384", "Parameter_14249", "Parameter_17386", - "Parameter_17388", "Parameter_13997", "Parameter_17392", "Parameter_17394", - "Parameter_14504", "Parameter_16482", "Parameter_17399", "Parameter_18215", - "Parameter_17401", "Parameter_17402", "Parameter_13866", "Parameter_17403", - "Parameter_18146", "Parameter_18037", "Parameter_15300", "Parameter_17404", - "Parameter_17407", "Parameter_15608", "Parameter_17408", "Parameter_17414", - "Parameter_17416", "Parameter_17629", "Parameter_17420", "Parameter_17423", - "Parameter_14861", "Parameter_17424", "Parameter_17432", "Parameter_18189", - "Parameter_15380", "Parameter_17434", "Parameter_17687", "Parameter_15659", - "Parameter_17437", "Parameter_17444", "Parameter_17447", "Parameter_17448", - "Parameter_16717", "Parameter_17449", "Parameter_16902", "Parameter_17453", - "Parameter_15366", "Parameter_17454", "Parameter_13986", "Parameter_14244", - "Parameter_17457", "Parameter_17458", "Parameter_17459", "Parameter_15946", - "Parameter_15624", "Parameter_17461", "Parameter_17462", "Parameter_17488", - "Parameter_17464", "Parameter_17466", "Parameter_17467", "Parameter_17472", - "Parameter_15678", "Parameter_17479", "Parameter_17481", "Parameter_17482", - "Parameter_17694", "Parameter_17485", "Parameter_17398", "Parameter_17489", - "Parameter_15722", "Parameter_16683", "Parameter_17491", "Parameter_17497", - "Parameter_18254", "Parameter_15445", "Parameter_17499", "Parameter_15724", - "Parameter_17502", "Parameter_17503", "Parameter_17505" - ], - "result" : ["ReplaceSlice_26083", - "Add_26081", - "Add_26073", - "Add_26079", - "Add_26071", - "Add_26025", - "Add_26008", - "Add_26024", - "Add_26006", - "Reshape_19528", - "Sum_18536"], - "value_type" : [ - {"element_type" : "float", "shape" : [ 32, 60, 200 ]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 10000, 200 ]}, - {"element_type" : "float", "shape" : [10000]} - ] -}] diff --git a/ngraph/test/models/mxnet/LSTM_forward.json b/ngraph/test/models/mxnet/LSTM_forward.json deleted file mode 100644 index 3c8ab2f5205711..00000000000000 --- a/ngraph/test/models/mxnet/LSTM_forward.json +++ /dev/null @@ -1,46125 +0,0 @@ -[{ - "name" : "Function_2", - "ops" : [ - { - "inputs" : [], - "name" : "Parameter_4640", - "op" : "Parameter", - "outputs" : ["Parameter_4640"], - "shape" : [10000], - "value_type" : {"element_type" : "float", "shape" : [10000]} - }, - { - "inputs" : [], - "name" : "Parameter_4639", - "op" : "Parameter", - "outputs" : ["Parameter_4639"], - "shape" : [ 10000, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 10000, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_175", - "op" : "Parameter", - "outputs" : ["Parameter_175"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_174", - "op" : "Parameter", - "outputs" : ["Parameter_174"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_167", - "op" : "Parameter", - "outputs" : ["Parameter_167"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_166", - "op" : "Parameter", - "outputs" : ["Parameter_166"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_130", - "op" : "Parameter", - "outputs" : ["Parameter_130"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_129", - "op" : "Parameter", - "outputs" : ["Parameter_129"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_122", - "op" : "Parameter", - "outputs" : ["Parameter_122"], - "shape" : [800], - "value_type" : {"element_type" : "float", "shape" : [800]} - }, - { - "inputs" : [], - "name" : "Parameter_121", - "op" : "Parameter", - "outputs" : ["Parameter_121"], - "shape" : [ 800, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 800, 200 ]} - }, - { - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0"], - "shape" : [ 32, 60, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "inputs" : [], - "name" : "Constant_172", - "op" : "Constant", - "outputs" : ["Constant_172"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_127", - "op" : "Constant", - "outputs" : ["Constant_127"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_155", - "op" : "Constant", - "outputs" : ["Constant_155"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_152", - "op" : "Constant", - "outputs" : ["Constant_152"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_146", - "op" : "Constant", - "outputs" : ["Constant_146"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_140", - "op" : "Constant", - "outputs" : ["Constant_140"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_200", - "op" : "Constant", - "outputs" : ["Constant_200"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_197", - "op" : "Constant", - "outputs" : ["Constant_197"], - "shape" : [], - "value" : ["0.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_191", - "op" : "Constant", - "outputs" : ["Constant_191"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_185", - "op" : "Constant", - "outputs" : ["Constant_185"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_238", - "op" : "Constant", - "outputs" : ["Constant_238"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_231", - "op" : "Constant", - "outputs" : ["Constant_231"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_225", - "op" : "Constant", - "outputs" : ["Constant_225"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_275", - "op" : "Constant", - "outputs" : ["Constant_275"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_268", - "op" : "Constant", - "outputs" : ["Constant_268"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_262", - "op" : "Constant", - "outputs" : ["Constant_262"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_313", - "op" : "Constant", - "outputs" : ["Constant_313"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_306", - "op" : "Constant", - "outputs" : ["Constant_306"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_300", - "op" : "Constant", - "outputs" : ["Constant_300"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_350", - "op" : "Constant", - "outputs" : ["Constant_350"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_343", - "op" : "Constant", - "outputs" : ["Constant_343"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_337", - "op" : "Constant", - "outputs" : ["Constant_337"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_388", - "op" : "Constant", - "outputs" : ["Constant_388"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_381", - "op" : "Constant", - "outputs" : ["Constant_381"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_375", - "op" : "Constant", - "outputs" : ["Constant_375"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_425", - "op" : "Constant", - "outputs" : ["Constant_425"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_418", - "op" : "Constant", - "outputs" : ["Constant_418"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_412", - "op" : "Constant", - "outputs" : ["Constant_412"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_463", - "op" : "Constant", - "outputs" : ["Constant_463"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_456", - "op" : "Constant", - "outputs" : ["Constant_456"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_450", - "op" : "Constant", - "outputs" : ["Constant_450"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_500", - "op" : "Constant", - "outputs" : ["Constant_500"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_493", - "op" : "Constant", - "outputs" : ["Constant_493"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_487", - "op" : "Constant", - "outputs" : ["Constant_487"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_538", - "op" : "Constant", - "outputs" : ["Constant_538"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_531", - "op" : "Constant", - "outputs" : ["Constant_531"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_525", - "op" : "Constant", - "outputs" : ["Constant_525"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_575", - "op" : "Constant", - "outputs" : ["Constant_575"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_568", - "op" : "Constant", - "outputs" : ["Constant_568"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_562", - "op" : "Constant", - "outputs" : ["Constant_562"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_613", - "op" : "Constant", - "outputs" : ["Constant_613"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_606", - "op" : "Constant", - "outputs" : ["Constant_606"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_600", - "op" : "Constant", - "outputs" : ["Constant_600"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_650", - "op" : "Constant", - "outputs" : ["Constant_650"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_643", - "op" : "Constant", - "outputs" : ["Constant_643"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_637", - "op" : "Constant", - "outputs" : ["Constant_637"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_688", - "op" : "Constant", - "outputs" : ["Constant_688"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_681", - "op" : "Constant", - "outputs" : ["Constant_681"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_675", - "op" : "Constant", - "outputs" : ["Constant_675"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_725", - "op" : "Constant", - "outputs" : ["Constant_725"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_718", - "op" : "Constant", - "outputs" : ["Constant_718"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_712", - "op" : "Constant", - "outputs" : ["Constant_712"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_763", - "op" : "Constant", - "outputs" : ["Constant_763"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_756", - "op" : "Constant", - "outputs" : ["Constant_756"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_750", - "op" : "Constant", - "outputs" : ["Constant_750"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_800", - "op" : "Constant", - "outputs" : ["Constant_800"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_793", - "op" : "Constant", - "outputs" : ["Constant_793"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_787", - "op" : "Constant", - "outputs" : ["Constant_787"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_838", - "op" : "Constant", - "outputs" : ["Constant_838"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_831", - "op" : "Constant", - "outputs" : ["Constant_831"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_825", - "op" : "Constant", - "outputs" : ["Constant_825"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_875", - "op" : "Constant", - "outputs" : ["Constant_875"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_868", - "op" : "Constant", - "outputs" : ["Constant_868"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_862", - "op" : "Constant", - "outputs" : ["Constant_862"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_913", - "op" : "Constant", - "outputs" : ["Constant_913"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_906", - "op" : "Constant", - "outputs" : ["Constant_906"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_900", - "op" : "Constant", - "outputs" : ["Constant_900"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_950", - "op" : "Constant", - "outputs" : ["Constant_950"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_943", - "op" : "Constant", - "outputs" : ["Constant_943"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_937", - "op" : "Constant", - "outputs" : ["Constant_937"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_988", - "op" : "Constant", - "outputs" : ["Constant_988"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_981", - "op" : "Constant", - "outputs" : ["Constant_981"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_975", - "op" : "Constant", - "outputs" : ["Constant_975"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1025", - "op" : "Constant", - "outputs" : ["Constant_1025"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1018", - "op" : "Constant", - "outputs" : ["Constant_1018"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1012", - "op" : "Constant", - "outputs" : ["Constant_1012"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1063", - "op" : "Constant", - "outputs" : ["Constant_1063"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1056", - "op" : "Constant", - "outputs" : ["Constant_1056"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1050", - "op" : "Constant", - "outputs" : ["Constant_1050"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1100", - "op" : "Constant", - "outputs" : ["Constant_1100"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1093", - "op" : "Constant", - "outputs" : ["Constant_1093"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1087", - "op" : "Constant", - "outputs" : ["Constant_1087"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1138", - "op" : "Constant", - "outputs" : ["Constant_1138"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1131", - "op" : "Constant", - "outputs" : ["Constant_1131"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1125", - "op" : "Constant", - "outputs" : ["Constant_1125"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1175", - "op" : "Constant", - "outputs" : ["Constant_1175"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1168", - "op" : "Constant", - "outputs" : ["Constant_1168"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1162", - "op" : "Constant", - "outputs" : ["Constant_1162"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1213", - "op" : "Constant", - "outputs" : ["Constant_1213"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1206", - "op" : "Constant", - "outputs" : ["Constant_1206"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1200", - "op" : "Constant", - "outputs" : ["Constant_1200"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1250", - "op" : "Constant", - "outputs" : ["Constant_1250"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1243", - "op" : "Constant", - "outputs" : ["Constant_1243"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1237", - "op" : "Constant", - "outputs" : ["Constant_1237"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1288", - "op" : "Constant", - "outputs" : ["Constant_1288"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1281", - "op" : "Constant", - "outputs" : ["Constant_1281"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1275", - "op" : "Constant", - "outputs" : ["Constant_1275"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1325", - "op" : "Constant", - "outputs" : ["Constant_1325"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1318", - "op" : "Constant", - "outputs" : ["Constant_1318"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1312", - "op" : "Constant", - "outputs" : ["Constant_1312"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1363", - "op" : "Constant", - "outputs" : ["Constant_1363"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1356", - "op" : "Constant", - "outputs" : ["Constant_1356"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1350", - "op" : "Constant", - "outputs" : ["Constant_1350"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1400", - "op" : "Constant", - "outputs" : ["Constant_1400"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1393", - "op" : "Constant", - "outputs" : ["Constant_1393"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1387", - "op" : "Constant", - "outputs" : ["Constant_1387"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1438", - "op" : "Constant", - "outputs" : ["Constant_1438"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1431", - "op" : "Constant", - "outputs" : ["Constant_1431"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1425", - "op" : "Constant", - "outputs" : ["Constant_1425"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1475", - "op" : "Constant", - "outputs" : ["Constant_1475"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1468", - "op" : "Constant", - "outputs" : ["Constant_1468"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1462", - "op" : "Constant", - "outputs" : ["Constant_1462"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1513", - "op" : "Constant", - "outputs" : ["Constant_1513"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1506", - "op" : "Constant", - "outputs" : ["Constant_1506"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1500", - "op" : "Constant", - "outputs" : ["Constant_1500"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1550", - "op" : "Constant", - "outputs" : ["Constant_1550"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1543", - "op" : "Constant", - "outputs" : ["Constant_1543"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1537", - "op" : "Constant", - "outputs" : ["Constant_1537"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1588", - "op" : "Constant", - "outputs" : ["Constant_1588"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1581", - "op" : "Constant", - "outputs" : ["Constant_1581"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1575", - "op" : "Constant", - "outputs" : ["Constant_1575"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1625", - "op" : "Constant", - "outputs" : ["Constant_1625"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1618", - "op" : "Constant", - "outputs" : ["Constant_1618"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1612", - "op" : "Constant", - "outputs" : ["Constant_1612"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1663", - "op" : "Constant", - "outputs" : ["Constant_1663"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1656", - "op" : "Constant", - "outputs" : ["Constant_1656"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1650", - "op" : "Constant", - "outputs" : ["Constant_1650"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1700", - "op" : "Constant", - "outputs" : ["Constant_1700"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1693", - "op" : "Constant", - "outputs" : ["Constant_1693"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1687", - "op" : "Constant", - "outputs" : ["Constant_1687"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1738", - "op" : "Constant", - "outputs" : ["Constant_1738"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1731", - "op" : "Constant", - "outputs" : ["Constant_1731"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1725", - "op" : "Constant", - "outputs" : ["Constant_1725"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1775", - "op" : "Constant", - "outputs" : ["Constant_1775"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1768", - "op" : "Constant", - "outputs" : ["Constant_1768"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1762", - "op" : "Constant", - "outputs" : ["Constant_1762"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1813", - "op" : "Constant", - "outputs" : ["Constant_1813"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1806", - "op" : "Constant", - "outputs" : ["Constant_1806"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1800", - "op" : "Constant", - "outputs" : ["Constant_1800"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1850", - "op" : "Constant", - "outputs" : ["Constant_1850"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1843", - "op" : "Constant", - "outputs" : ["Constant_1843"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1837", - "op" : "Constant", - "outputs" : ["Constant_1837"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1888", - "op" : "Constant", - "outputs" : ["Constant_1888"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1881", - "op" : "Constant", - "outputs" : ["Constant_1881"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1875", - "op" : "Constant", - "outputs" : ["Constant_1875"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1925", - "op" : "Constant", - "outputs" : ["Constant_1925"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1918", - "op" : "Constant", - "outputs" : ["Constant_1918"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1912", - "op" : "Constant", - "outputs" : ["Constant_1912"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1963", - "op" : "Constant", - "outputs" : ["Constant_1963"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1956", - "op" : "Constant", - "outputs" : ["Constant_1956"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1950", - "op" : "Constant", - "outputs" : ["Constant_1950"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2000", - "op" : "Constant", - "outputs" : ["Constant_2000"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1993", - "op" : "Constant", - "outputs" : ["Constant_1993"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_1987", - "op" : "Constant", - "outputs" : ["Constant_1987"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2038", - "op" : "Constant", - "outputs" : ["Constant_2038"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2031", - "op" : "Constant", - "outputs" : ["Constant_2031"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2025", - "op" : "Constant", - "outputs" : ["Constant_2025"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2075", - "op" : "Constant", - "outputs" : ["Constant_2075"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2068", - "op" : "Constant", - "outputs" : ["Constant_2068"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2062", - "op" : "Constant", - "outputs" : ["Constant_2062"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2113", - "op" : "Constant", - "outputs" : ["Constant_2113"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2106", - "op" : "Constant", - "outputs" : ["Constant_2106"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2100", - "op" : "Constant", - "outputs" : ["Constant_2100"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2150", - "op" : "Constant", - "outputs" : ["Constant_2150"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2143", - "op" : "Constant", - "outputs" : ["Constant_2143"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2137", - "op" : "Constant", - "outputs" : ["Constant_2137"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2188", - "op" : "Constant", - "outputs" : ["Constant_2188"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2181", - "op" : "Constant", - "outputs" : ["Constant_2181"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2175", - "op" : "Constant", - "outputs" : ["Constant_2175"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2225", - "op" : "Constant", - "outputs" : ["Constant_2225"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2218", - "op" : "Constant", - "outputs" : ["Constant_2218"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2212", - "op" : "Constant", - "outputs" : ["Constant_2212"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2263", - "op" : "Constant", - "outputs" : ["Constant_2263"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2256", - "op" : "Constant", - "outputs" : ["Constant_2256"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2250", - "op" : "Constant", - "outputs" : ["Constant_2250"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2300", - "op" : "Constant", - "outputs" : ["Constant_2300"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2293", - "op" : "Constant", - "outputs" : ["Constant_2293"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2287", - "op" : "Constant", - "outputs" : ["Constant_2287"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2338", - "op" : "Constant", - "outputs" : ["Constant_2338"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2331", - "op" : "Constant", - "outputs" : ["Constant_2331"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2325", - "op" : "Constant", - "outputs" : ["Constant_2325"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2375", - "op" : "Constant", - "outputs" : ["Constant_2375"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2368", - "op" : "Constant", - "outputs" : ["Constant_2368"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2362", - "op" : "Constant", - "outputs" : ["Constant_2362"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2413", - "op" : "Constant", - "outputs" : ["Constant_2413"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2406", - "op" : "Constant", - "outputs" : ["Constant_2406"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2400", - "op" : "Constant", - "outputs" : ["Constant_2400"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2450", - "op" : "Constant", - "outputs" : ["Constant_2450"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2443", - "op" : "Constant", - "outputs" : ["Constant_2443"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2437", - "op" : "Constant", - "outputs" : ["Constant_2437"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2488", - "op" : "Constant", - "outputs" : ["Constant_2488"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2481", - "op" : "Constant", - "outputs" : ["Constant_2481"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2475", - "op" : "Constant", - "outputs" : ["Constant_2475"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2525", - "op" : "Constant", - "outputs" : ["Constant_2525"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2518", - "op" : "Constant", - "outputs" : ["Constant_2518"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2512", - "op" : "Constant", - "outputs" : ["Constant_2512"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2563", - "op" : "Constant", - "outputs" : ["Constant_2563"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2556", - "op" : "Constant", - "outputs" : ["Constant_2556"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2550", - "op" : "Constant", - "outputs" : ["Constant_2550"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2600", - "op" : "Constant", - "outputs" : ["Constant_2600"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2593", - "op" : "Constant", - "outputs" : ["Constant_2593"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2587", - "op" : "Constant", - "outputs" : ["Constant_2587"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2638", - "op" : "Constant", - "outputs" : ["Constant_2638"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2631", - "op" : "Constant", - "outputs" : ["Constant_2631"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2625", - "op" : "Constant", - "outputs" : ["Constant_2625"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2675", - "op" : "Constant", - "outputs" : ["Constant_2675"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2668", - "op" : "Constant", - "outputs" : ["Constant_2668"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2662", - "op" : "Constant", - "outputs" : ["Constant_2662"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2713", - "op" : "Constant", - "outputs" : ["Constant_2713"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2706", - "op" : "Constant", - "outputs" : ["Constant_2706"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2700", - "op" : "Constant", - "outputs" : ["Constant_2700"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2750", - "op" : "Constant", - "outputs" : ["Constant_2750"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2743", - "op" : "Constant", - "outputs" : ["Constant_2743"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2737", - "op" : "Constant", - "outputs" : ["Constant_2737"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2788", - "op" : "Constant", - "outputs" : ["Constant_2788"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2781", - "op" : "Constant", - "outputs" : ["Constant_2781"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2775", - "op" : "Constant", - "outputs" : ["Constant_2775"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2825", - "op" : "Constant", - "outputs" : ["Constant_2825"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2818", - "op" : "Constant", - "outputs" : ["Constant_2818"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2812", - "op" : "Constant", - "outputs" : ["Constant_2812"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2863", - "op" : "Constant", - "outputs" : ["Constant_2863"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2856", - "op" : "Constant", - "outputs" : ["Constant_2856"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2850", - "op" : "Constant", - "outputs" : ["Constant_2850"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2900", - "op" : "Constant", - "outputs" : ["Constant_2900"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2893", - "op" : "Constant", - "outputs" : ["Constant_2893"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2887", - "op" : "Constant", - "outputs" : ["Constant_2887"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2938", - "op" : "Constant", - "outputs" : ["Constant_2938"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2931", - "op" : "Constant", - "outputs" : ["Constant_2931"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2925", - "op" : "Constant", - "outputs" : ["Constant_2925"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2975", - "op" : "Constant", - "outputs" : ["Constant_2975"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2968", - "op" : "Constant", - "outputs" : ["Constant_2968"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_2962", - "op" : "Constant", - "outputs" : ["Constant_2962"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3013", - "op" : "Constant", - "outputs" : ["Constant_3013"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3006", - "op" : "Constant", - "outputs" : ["Constant_3006"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3000", - "op" : "Constant", - "outputs" : ["Constant_3000"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3050", - "op" : "Constant", - "outputs" : ["Constant_3050"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3043", - "op" : "Constant", - "outputs" : ["Constant_3043"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3037", - "op" : "Constant", - "outputs" : ["Constant_3037"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3088", - "op" : "Constant", - "outputs" : ["Constant_3088"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3081", - "op" : "Constant", - "outputs" : ["Constant_3081"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3075", - "op" : "Constant", - "outputs" : ["Constant_3075"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3125", - "op" : "Constant", - "outputs" : ["Constant_3125"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3118", - "op" : "Constant", - "outputs" : ["Constant_3118"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3112", - "op" : "Constant", - "outputs" : ["Constant_3112"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3163", - "op" : "Constant", - "outputs" : ["Constant_3163"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3156", - "op" : "Constant", - "outputs" : ["Constant_3156"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3150", - "op" : "Constant", - "outputs" : ["Constant_3150"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3200", - "op" : "Constant", - "outputs" : ["Constant_3200"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3193", - "op" : "Constant", - "outputs" : ["Constant_3193"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3187", - "op" : "Constant", - "outputs" : ["Constant_3187"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3238", - "op" : "Constant", - "outputs" : ["Constant_3238"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3231", - "op" : "Constant", - "outputs" : ["Constant_3231"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3225", - "op" : "Constant", - "outputs" : ["Constant_3225"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3275", - "op" : "Constant", - "outputs" : ["Constant_3275"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3268", - "op" : "Constant", - "outputs" : ["Constant_3268"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3262", - "op" : "Constant", - "outputs" : ["Constant_3262"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3313", - "op" : "Constant", - "outputs" : ["Constant_3313"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3306", - "op" : "Constant", - "outputs" : ["Constant_3306"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3300", - "op" : "Constant", - "outputs" : ["Constant_3300"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3350", - "op" : "Constant", - "outputs" : ["Constant_3350"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3343", - "op" : "Constant", - "outputs" : ["Constant_3343"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3337", - "op" : "Constant", - "outputs" : ["Constant_3337"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3388", - "op" : "Constant", - "outputs" : ["Constant_3388"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3381", - "op" : "Constant", - "outputs" : ["Constant_3381"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3375", - "op" : "Constant", - "outputs" : ["Constant_3375"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3425", - "op" : "Constant", - "outputs" : ["Constant_3425"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3418", - "op" : "Constant", - "outputs" : ["Constant_3418"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3412", - "op" : "Constant", - "outputs" : ["Constant_3412"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3463", - "op" : "Constant", - "outputs" : ["Constant_3463"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3456", - "op" : "Constant", - "outputs" : ["Constant_3456"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3450", - "op" : "Constant", - "outputs" : ["Constant_3450"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3500", - "op" : "Constant", - "outputs" : ["Constant_3500"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3493", - "op" : "Constant", - "outputs" : ["Constant_3493"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3487", - "op" : "Constant", - "outputs" : ["Constant_3487"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3538", - "op" : "Constant", - "outputs" : ["Constant_3538"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3531", - "op" : "Constant", - "outputs" : ["Constant_3531"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3525", - "op" : "Constant", - "outputs" : ["Constant_3525"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3575", - "op" : "Constant", - "outputs" : ["Constant_3575"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3568", - "op" : "Constant", - "outputs" : ["Constant_3568"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3562", - "op" : "Constant", - "outputs" : ["Constant_3562"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3613", - "op" : "Constant", - "outputs" : ["Constant_3613"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3606", - "op" : "Constant", - "outputs" : ["Constant_3606"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3600", - "op" : "Constant", - "outputs" : ["Constant_3600"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3637", - "op" : "Constant", - "outputs" : ["Constant_3637"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3688", - "op" : "Constant", - "outputs" : ["Constant_3688"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3681", - "op" : "Constant", - "outputs" : ["Constant_3681"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3675", - "op" : "Constant", - "outputs" : ["Constant_3675"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3763", - "op" : "Constant", - "outputs" : ["Constant_3763"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3756", - "op" : "Constant", - "outputs" : ["Constant_3756"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3750", - "op" : "Constant", - "outputs" : ["Constant_3750"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3838", - "op" : "Constant", - "outputs" : ["Constant_3838"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3831", - "op" : "Constant", - "outputs" : ["Constant_3831"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3825", - "op" : "Constant", - "outputs" : ["Constant_3825"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3913", - "op" : "Constant", - "outputs" : ["Constant_3913"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3906", - "op" : "Constant", - "outputs" : ["Constant_3906"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3900", - "op" : "Constant", - "outputs" : ["Constant_3900"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3988", - "op" : "Constant", - "outputs" : ["Constant_3988"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3981", - "op" : "Constant", - "outputs" : ["Constant_3981"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3975", - "op" : "Constant", - "outputs" : ["Constant_3975"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4063", - "op" : "Constant", - "outputs" : ["Constant_4063"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4056", - "op" : "Constant", - "outputs" : ["Constant_4056"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4050", - "op" : "Constant", - "outputs" : ["Constant_4050"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4138", - "op" : "Constant", - "outputs" : ["Constant_4138"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4131", - "op" : "Constant", - "outputs" : ["Constant_4131"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4125", - "op" : "Constant", - "outputs" : ["Constant_4125"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4213", - "op" : "Constant", - "outputs" : ["Constant_4213"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4206", - "op" : "Constant", - "outputs" : ["Constant_4206"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4200", - "op" : "Constant", - "outputs" : ["Constant_4200"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4288", - "op" : "Constant", - "outputs" : ["Constant_4288"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4281", - "op" : "Constant", - "outputs" : ["Constant_4281"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4275", - "op" : "Constant", - "outputs" : ["Constant_4275"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4363", - "op" : "Constant", - "outputs" : ["Constant_4363"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4356", - "op" : "Constant", - "outputs" : ["Constant_4356"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4350", - "op" : "Constant", - "outputs" : ["Constant_4350"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4438", - "op" : "Constant", - "outputs" : ["Constant_4438"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4431", - "op" : "Constant", - "outputs" : ["Constant_4431"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4425", - "op" : "Constant", - "outputs" : ["Constant_4425"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4506", - "op" : "Constant", - "outputs" : ["Constant_4506"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3650", - "op" : "Constant", - "outputs" : ["Constant_3650"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3643", - "op" : "Constant", - "outputs" : ["Constant_3643"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3725", - "op" : "Constant", - "outputs" : ["Constant_3725"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3718", - "op" : "Constant", - "outputs" : ["Constant_3718"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3712", - "op" : "Constant", - "outputs" : ["Constant_3712"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3800", - "op" : "Constant", - "outputs" : ["Constant_3800"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3793", - "op" : "Constant", - "outputs" : ["Constant_3793"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3787", - "op" : "Constant", - "outputs" : ["Constant_3787"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3875", - "op" : "Constant", - "outputs" : ["Constant_3875"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3868", - "op" : "Constant", - "outputs" : ["Constant_3868"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3862", - "op" : "Constant", - "outputs" : ["Constant_3862"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3950", - "op" : "Constant", - "outputs" : ["Constant_3950"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3943", - "op" : "Constant", - "outputs" : ["Constant_3943"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_3937", - "op" : "Constant", - "outputs" : ["Constant_3937"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4025", - "op" : "Constant", - "outputs" : ["Constant_4025"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4018", - "op" : "Constant", - "outputs" : ["Constant_4018"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4012", - "op" : "Constant", - "outputs" : ["Constant_4012"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4100", - "op" : "Constant", - "outputs" : ["Constant_4100"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4093", - "op" : "Constant", - "outputs" : ["Constant_4093"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4087", - "op" : "Constant", - "outputs" : ["Constant_4087"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4175", - "op" : "Constant", - "outputs" : ["Constant_4175"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4168", - "op" : "Constant", - "outputs" : ["Constant_4168"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4162", - "op" : "Constant", - "outputs" : ["Constant_4162"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4250", - "op" : "Constant", - "outputs" : ["Constant_4250"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4243", - "op" : "Constant", - "outputs" : ["Constant_4243"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4237", - "op" : "Constant", - "outputs" : ["Constant_4237"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4325", - "op" : "Constant", - "outputs" : ["Constant_4325"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4318", - "op" : "Constant", - "outputs" : ["Constant_4318"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4312", - "op" : "Constant", - "outputs" : ["Constant_4312"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4393", - "op" : "Constant", - "outputs" : ["Constant_4393"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4468", - "op" : "Constant", - "outputs" : ["Constant_4468"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4400", - "op" : "Constant", - "outputs" : ["Constant_4400"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4387", - "op" : "Constant", - "outputs" : ["Constant_4387"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4475", - "op" : "Constant", - "outputs" : ["Constant_4475"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4462", - "op" : "Constant", - "outputs" : ["Constant_4462"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4513", - "op" : "Constant", - "outputs" : ["Constant_4513"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4500", - "op" : "Constant", - "outputs" : ["Constant_4500"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4612", - "op" : "Constant", - "outputs" : ["Constant_4612"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4537", - "op" : "Constant", - "outputs" : ["Constant_4537"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4575", - "op" : "Constant", - "outputs" : ["Constant_4575"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4588", - "op" : "Constant", - "outputs" : ["Constant_4588"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4581", - "op" : "Constant", - "outputs" : ["Constant_4581"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4543", - "op" : "Constant", - "outputs" : ["Constant_4543"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4550", - "op" : "Constant", - "outputs" : ["Constant_4550"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4625", - "op" : "Constant", - "outputs" : ["Constant_4625"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "inputs" : [], - "name" : "Constant_4618", - "op" : "Constant", - "outputs" : ["Constant_4618"], - "shape" : [], - "value" : ["1.000000"], - "value_type" : {"element_type" : "float", "shape" : []} - }, - { - "axes" : [0], - "inputs" : ["Parameter_4640"], - "name" : "Broadcast_4643", - "op" : "Broadcast", - "outputs" : ["Broadcast_4643"], - "shape" : [ 1920, 10000 ], - "value_type" : {"element_type" : "float", "shape" : [ 1920, 10000 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_4639"], - "name" : "Reshape_4641", - "op" : "Reshape", - "output_shape" : [ 200, 10000 ], - "outputs" : ["Reshape_4641"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 10000 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_178", - "op" : "Broadcast", - "outputs" : ["Broadcast_178"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_255", - "op" : "Broadcast", - "outputs" : ["Broadcast_255"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_330", - "op" : "Broadcast", - "outputs" : ["Broadcast_330"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_405", - "op" : "Broadcast", - "outputs" : ["Broadcast_405"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_480", - "op" : "Broadcast", - "outputs" : ["Broadcast_480"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_555", - "op" : "Broadcast", - "outputs" : ["Broadcast_555"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_630", - "op" : "Broadcast", - "outputs" : ["Broadcast_630"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_705", - "op" : "Broadcast", - "outputs" : ["Broadcast_705"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_780", - "op" : "Broadcast", - "outputs" : ["Broadcast_780"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_855", - "op" : "Broadcast", - "outputs" : ["Broadcast_855"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_930", - "op" : "Broadcast", - "outputs" : ["Broadcast_930"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1005", - "op" : "Broadcast", - "outputs" : ["Broadcast_1005"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1080", - "op" : "Broadcast", - "outputs" : ["Broadcast_1080"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1155", - "op" : "Broadcast", - "outputs" : ["Broadcast_1155"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1230", - "op" : "Broadcast", - "outputs" : ["Broadcast_1230"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1305", - "op" : "Broadcast", - "outputs" : ["Broadcast_1305"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1380", - "op" : "Broadcast", - "outputs" : ["Broadcast_1380"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1455", - "op" : "Broadcast", - "outputs" : ["Broadcast_1455"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1530", - "op" : "Broadcast", - "outputs" : ["Broadcast_1530"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1605", - "op" : "Broadcast", - "outputs" : ["Broadcast_1605"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1680", - "op" : "Broadcast", - "outputs" : ["Broadcast_1680"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1755", - "op" : "Broadcast", - "outputs" : ["Broadcast_1755"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1830", - "op" : "Broadcast", - "outputs" : ["Broadcast_1830"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1905", - "op" : "Broadcast", - "outputs" : ["Broadcast_1905"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_1980", - "op" : "Broadcast", - "outputs" : ["Broadcast_1980"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2055", - "op" : "Broadcast", - "outputs" : ["Broadcast_2055"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2130", - "op" : "Broadcast", - "outputs" : ["Broadcast_2130"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2205", - "op" : "Broadcast", - "outputs" : ["Broadcast_2205"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2280", - "op" : "Broadcast", - "outputs" : ["Broadcast_2280"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2355", - "op" : "Broadcast", - "outputs" : ["Broadcast_2355"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2430", - "op" : "Broadcast", - "outputs" : ["Broadcast_2430"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2505", - "op" : "Broadcast", - "outputs" : ["Broadcast_2505"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2580", - "op" : "Broadcast", - "outputs" : ["Broadcast_2580"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2655", - "op" : "Broadcast", - "outputs" : ["Broadcast_2655"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2730", - "op" : "Broadcast", - "outputs" : ["Broadcast_2730"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2805", - "op" : "Broadcast", - "outputs" : ["Broadcast_2805"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2880", - "op" : "Broadcast", - "outputs" : ["Broadcast_2880"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_2955", - "op" : "Broadcast", - "outputs" : ["Broadcast_2955"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3030", - "op" : "Broadcast", - "outputs" : ["Broadcast_3030"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3105", - "op" : "Broadcast", - "outputs" : ["Broadcast_3105"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3180", - "op" : "Broadcast", - "outputs" : ["Broadcast_3180"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3255", - "op" : "Broadcast", - "outputs" : ["Broadcast_3255"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3330", - "op" : "Broadcast", - "outputs" : ["Broadcast_3330"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3405", - "op" : "Broadcast", - "outputs" : ["Broadcast_3405"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3480", - "op" : "Broadcast", - "outputs" : ["Broadcast_3480"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3555", - "op" : "Broadcast", - "outputs" : ["Broadcast_3555"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3630", - "op" : "Broadcast", - "outputs" : ["Broadcast_3630"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3705", - "op" : "Broadcast", - "outputs" : ["Broadcast_3705"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3780", - "op" : "Broadcast", - "outputs" : ["Broadcast_3780"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3855", - "op" : "Broadcast", - "outputs" : ["Broadcast_3855"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_3930", - "op" : "Broadcast", - "outputs" : ["Broadcast_3930"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4005", - "op" : "Broadcast", - "outputs" : ["Broadcast_4005"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4080", - "op" : "Broadcast", - "outputs" : ["Broadcast_4080"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4155", - "op" : "Broadcast", - "outputs" : ["Broadcast_4155"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4230", - "op" : "Broadcast", - "outputs" : ["Broadcast_4230"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4305", - "op" : "Broadcast", - "outputs" : ["Broadcast_4305"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4380", - "op" : "Broadcast", - "outputs" : ["Broadcast_4380"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4455", - "op" : "Broadcast", - "outputs" : ["Broadcast_4455"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4530", - "op" : "Broadcast", - "outputs" : ["Broadcast_4530"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_4605", - "op" : "Broadcast", - "outputs" : ["Broadcast_4605"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_176", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_176"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_253", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_253"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_328", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_328"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_403", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_403"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_478", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_478"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_553", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_553"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_628", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_628"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_703", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_703"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_778", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_778"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_853", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_853"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_928", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_928"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1003", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1003"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1078", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1078"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1153", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1153"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1228", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1228"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1303", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1303"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1378", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1378"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1453", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1453"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1528", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1528"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1603", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1603"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1678", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1678"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1753", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1753"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1828", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1828"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1903", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1903"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_1978", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1978"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2053", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2053"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2128", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2128"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2203", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2203"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2278", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2278"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2353", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2353"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2428", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2428"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2503", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2503"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2578", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2578"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2653", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2653"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2728", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2728"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2803", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2803"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2878", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2878"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_2953", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2953"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3028", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3028"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3103", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3103"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3178", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3178"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3253", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3253"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3328", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3328"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3403", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3403"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3478", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3478"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3553", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3553"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3628", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3628"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3703", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3703"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3778", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3778"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3853", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3853"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_3928", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3928"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4003", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4003"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4078", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4078"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4153", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4153"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4228", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4228"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4303", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4303"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4378", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4378"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4453", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4453"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4528", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4528"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_174"], - "name" : "Reshape_4603", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4603"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_170", - "op" : "Broadcast", - "outputs" : ["Broadcast_170"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_251", - "op" : "Broadcast", - "outputs" : ["Broadcast_251"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_326", - "op" : "Broadcast", - "outputs" : ["Broadcast_326"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_401", - "op" : "Broadcast", - "outputs" : ["Broadcast_401"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_476", - "op" : "Broadcast", - "outputs" : ["Broadcast_476"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_551", - "op" : "Broadcast", - "outputs" : ["Broadcast_551"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_626", - "op" : "Broadcast", - "outputs" : ["Broadcast_626"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_701", - "op" : "Broadcast", - "outputs" : ["Broadcast_701"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_776", - "op" : "Broadcast", - "outputs" : ["Broadcast_776"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_851", - "op" : "Broadcast", - "outputs" : ["Broadcast_851"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_926", - "op" : "Broadcast", - "outputs" : ["Broadcast_926"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1001", - "op" : "Broadcast", - "outputs" : ["Broadcast_1001"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1076", - "op" : "Broadcast", - "outputs" : ["Broadcast_1076"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1151", - "op" : "Broadcast", - "outputs" : ["Broadcast_1151"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1226", - "op" : "Broadcast", - "outputs" : ["Broadcast_1226"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1301", - "op" : "Broadcast", - "outputs" : ["Broadcast_1301"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1376", - "op" : "Broadcast", - "outputs" : ["Broadcast_1376"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1451", - "op" : "Broadcast", - "outputs" : ["Broadcast_1451"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1526", - "op" : "Broadcast", - "outputs" : ["Broadcast_1526"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1601", - "op" : "Broadcast", - "outputs" : ["Broadcast_1601"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1676", - "op" : "Broadcast", - "outputs" : ["Broadcast_1676"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1751", - "op" : "Broadcast", - "outputs" : ["Broadcast_1751"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1826", - "op" : "Broadcast", - "outputs" : ["Broadcast_1826"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1901", - "op" : "Broadcast", - "outputs" : ["Broadcast_1901"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_1976", - "op" : "Broadcast", - "outputs" : ["Broadcast_1976"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2051", - "op" : "Broadcast", - "outputs" : ["Broadcast_2051"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2126", - "op" : "Broadcast", - "outputs" : ["Broadcast_2126"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2201", - "op" : "Broadcast", - "outputs" : ["Broadcast_2201"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2276", - "op" : "Broadcast", - "outputs" : ["Broadcast_2276"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2351", - "op" : "Broadcast", - "outputs" : ["Broadcast_2351"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2426", - "op" : "Broadcast", - "outputs" : ["Broadcast_2426"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2501", - "op" : "Broadcast", - "outputs" : ["Broadcast_2501"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2576", - "op" : "Broadcast", - "outputs" : ["Broadcast_2576"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2651", - "op" : "Broadcast", - "outputs" : ["Broadcast_2651"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2726", - "op" : "Broadcast", - "outputs" : ["Broadcast_2726"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2801", - "op" : "Broadcast", - "outputs" : ["Broadcast_2801"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2876", - "op" : "Broadcast", - "outputs" : ["Broadcast_2876"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_2951", - "op" : "Broadcast", - "outputs" : ["Broadcast_2951"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3026", - "op" : "Broadcast", - "outputs" : ["Broadcast_3026"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3101", - "op" : "Broadcast", - "outputs" : ["Broadcast_3101"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3176", - "op" : "Broadcast", - "outputs" : ["Broadcast_3176"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3251", - "op" : "Broadcast", - "outputs" : ["Broadcast_3251"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3326", - "op" : "Broadcast", - "outputs" : ["Broadcast_3326"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3401", - "op" : "Broadcast", - "outputs" : ["Broadcast_3401"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3476", - "op" : "Broadcast", - "outputs" : ["Broadcast_3476"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3551", - "op" : "Broadcast", - "outputs" : ["Broadcast_3551"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3626", - "op" : "Broadcast", - "outputs" : ["Broadcast_3626"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3701", - "op" : "Broadcast", - "outputs" : ["Broadcast_3701"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3776", - "op" : "Broadcast", - "outputs" : ["Broadcast_3776"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3851", - "op" : "Broadcast", - "outputs" : ["Broadcast_3851"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_3926", - "op" : "Broadcast", - "outputs" : ["Broadcast_3926"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4001", - "op" : "Broadcast", - "outputs" : ["Broadcast_4001"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4076", - "op" : "Broadcast", - "outputs" : ["Broadcast_4076"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4151", - "op" : "Broadcast", - "outputs" : ["Broadcast_4151"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4226", - "op" : "Broadcast", - "outputs" : ["Broadcast_4226"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4301", - "op" : "Broadcast", - "outputs" : ["Broadcast_4301"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4376", - "op" : "Broadcast", - "outputs" : ["Broadcast_4376"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4451", - "op" : "Broadcast", - "outputs" : ["Broadcast_4451"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4526", - "op" : "Broadcast", - "outputs" : ["Broadcast_4526"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_167"], - "name" : "Broadcast_4601", - "op" : "Broadcast", - "outputs" : ["Broadcast_4601"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_168", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_168"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_249", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_249"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_324", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_324"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_399", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_399"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_474", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_474"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_549", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_549"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_624", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_624"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_699", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_699"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_774", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_774"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_849", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_849"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_924", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_924"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_999", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_999"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1074", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1074"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1149", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1149"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1224", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1224"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1299", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1299"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1374", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1374"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1449", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1449"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1524", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1524"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1599", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1599"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1674", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1674"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1749", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1749"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1824", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1824"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1899", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1899"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_1974", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1974"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2049", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2049"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2124", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2124"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2199", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2199"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2274", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2274"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2349", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2349"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2424", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2424"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2499", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2499"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2574", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2574"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2649", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2649"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2724", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2724"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2799", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2799"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2874", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2874"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_2949", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2949"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3024", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3024"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3099", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3099"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3174", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3174"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3249", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3249"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3324", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3324"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3399", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3399"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3474", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3474"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3549", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3549"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3624", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3624"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3699", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3699"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3774", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3774"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3849", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3849"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3924", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3924"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_3999", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3999"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4074", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4074"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4149", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4149"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4224", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4224"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4299", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4299"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4374", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4374"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4449", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4449"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4524", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4524"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_166"], - "name" : "Reshape_4599", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4599"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_133", - "op" : "Broadcast", - "outputs" : ["Broadcast_133"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_218", - "op" : "Broadcast", - "outputs" : ["Broadcast_218"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_293", - "op" : "Broadcast", - "outputs" : ["Broadcast_293"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_368", - "op" : "Broadcast", - "outputs" : ["Broadcast_368"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_443", - "op" : "Broadcast", - "outputs" : ["Broadcast_443"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_518", - "op" : "Broadcast", - "outputs" : ["Broadcast_518"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_593", - "op" : "Broadcast", - "outputs" : ["Broadcast_593"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_668", - "op" : "Broadcast", - "outputs" : ["Broadcast_668"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_743", - "op" : "Broadcast", - "outputs" : ["Broadcast_743"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_818", - "op" : "Broadcast", - "outputs" : ["Broadcast_818"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_893", - "op" : "Broadcast", - "outputs" : ["Broadcast_893"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_968", - "op" : "Broadcast", - "outputs" : ["Broadcast_968"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1043", - "op" : "Broadcast", - "outputs" : ["Broadcast_1043"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1118", - "op" : "Broadcast", - "outputs" : ["Broadcast_1118"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1193", - "op" : "Broadcast", - "outputs" : ["Broadcast_1193"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1268", - "op" : "Broadcast", - "outputs" : ["Broadcast_1268"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1343", - "op" : "Broadcast", - "outputs" : ["Broadcast_1343"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1418", - "op" : "Broadcast", - "outputs" : ["Broadcast_1418"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1493", - "op" : "Broadcast", - "outputs" : ["Broadcast_1493"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1568", - "op" : "Broadcast", - "outputs" : ["Broadcast_1568"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1643", - "op" : "Broadcast", - "outputs" : ["Broadcast_1643"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1718", - "op" : "Broadcast", - "outputs" : ["Broadcast_1718"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1793", - "op" : "Broadcast", - "outputs" : ["Broadcast_1793"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1868", - "op" : "Broadcast", - "outputs" : ["Broadcast_1868"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_1943", - "op" : "Broadcast", - "outputs" : ["Broadcast_1943"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2018", - "op" : "Broadcast", - "outputs" : ["Broadcast_2018"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2093", - "op" : "Broadcast", - "outputs" : ["Broadcast_2093"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2168", - "op" : "Broadcast", - "outputs" : ["Broadcast_2168"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2243", - "op" : "Broadcast", - "outputs" : ["Broadcast_2243"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2318", - "op" : "Broadcast", - "outputs" : ["Broadcast_2318"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2393", - "op" : "Broadcast", - "outputs" : ["Broadcast_2393"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2468", - "op" : "Broadcast", - "outputs" : ["Broadcast_2468"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2543", - "op" : "Broadcast", - "outputs" : ["Broadcast_2543"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2618", - "op" : "Broadcast", - "outputs" : ["Broadcast_2618"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2693", - "op" : "Broadcast", - "outputs" : ["Broadcast_2693"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2768", - "op" : "Broadcast", - "outputs" : ["Broadcast_2768"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2843", - "op" : "Broadcast", - "outputs" : ["Broadcast_2843"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2918", - "op" : "Broadcast", - "outputs" : ["Broadcast_2918"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_2993", - "op" : "Broadcast", - "outputs" : ["Broadcast_2993"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3068", - "op" : "Broadcast", - "outputs" : ["Broadcast_3068"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3143", - "op" : "Broadcast", - "outputs" : ["Broadcast_3143"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3218", - "op" : "Broadcast", - "outputs" : ["Broadcast_3218"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3293", - "op" : "Broadcast", - "outputs" : ["Broadcast_3293"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3368", - "op" : "Broadcast", - "outputs" : ["Broadcast_3368"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3443", - "op" : "Broadcast", - "outputs" : ["Broadcast_3443"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3518", - "op" : "Broadcast", - "outputs" : ["Broadcast_3518"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3593", - "op" : "Broadcast", - "outputs" : ["Broadcast_3593"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3668", - "op" : "Broadcast", - "outputs" : ["Broadcast_3668"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3743", - "op" : "Broadcast", - "outputs" : ["Broadcast_3743"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3818", - "op" : "Broadcast", - "outputs" : ["Broadcast_3818"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3893", - "op" : "Broadcast", - "outputs" : ["Broadcast_3893"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_3968", - "op" : "Broadcast", - "outputs" : ["Broadcast_3968"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4043", - "op" : "Broadcast", - "outputs" : ["Broadcast_4043"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4118", - "op" : "Broadcast", - "outputs" : ["Broadcast_4118"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4193", - "op" : "Broadcast", - "outputs" : ["Broadcast_4193"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4268", - "op" : "Broadcast", - "outputs" : ["Broadcast_4268"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4343", - "op" : "Broadcast", - "outputs" : ["Broadcast_4343"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4418", - "op" : "Broadcast", - "outputs" : ["Broadcast_4418"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4493", - "op" : "Broadcast", - "outputs" : ["Broadcast_4493"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_130"], - "name" : "Broadcast_4568", - "op" : "Broadcast", - "outputs" : ["Broadcast_4568"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_131", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_131"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_216", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_216"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_291", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_291"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_366", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_366"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_441", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_441"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_516", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_516"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_591", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_591"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_666", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_666"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_741", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_741"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_816", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_816"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_891", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_891"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_966", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_966"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1041", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1041"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1116", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1116"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1191", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1191"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1266", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1266"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1341", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1341"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1416", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1416"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1491", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1491"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1566", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1566"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1641", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1641"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1716", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1716"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1791", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1791"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1866", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1866"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_1941", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1941"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2016", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2016"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2091", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2091"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2166", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2166"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2241", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2241"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2316", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2316"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2391", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2391"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2466", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2466"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2541", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2541"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2616", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2616"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2691", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2691"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2766", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2766"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2841", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2841"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2916", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2916"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_2991", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2991"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3066", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3066"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3141", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3141"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3216", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3216"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3291", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3291"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3366", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3366"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3441", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3441"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3516", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3516"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3591", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3591"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3666", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3666"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3741", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3741"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3816", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3816"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3891", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3891"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_3966", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3966"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4041", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4041"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4116", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4116"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4191", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4191"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4266", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4266"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4341", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4341"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4416", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4416"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4491", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4491"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_129"], - "name" : "Reshape_4566", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4566"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_125", - "op" : "Broadcast", - "outputs" : ["Broadcast_125"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_214", - "op" : "Broadcast", - "outputs" : ["Broadcast_214"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_289", - "op" : "Broadcast", - "outputs" : ["Broadcast_289"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_364", - "op" : "Broadcast", - "outputs" : ["Broadcast_364"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_439", - "op" : "Broadcast", - "outputs" : ["Broadcast_439"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_514", - "op" : "Broadcast", - "outputs" : ["Broadcast_514"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_589", - "op" : "Broadcast", - "outputs" : ["Broadcast_589"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_664", - "op" : "Broadcast", - "outputs" : ["Broadcast_664"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_739", - "op" : "Broadcast", - "outputs" : ["Broadcast_739"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_814", - "op" : "Broadcast", - "outputs" : ["Broadcast_814"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_889", - "op" : "Broadcast", - "outputs" : ["Broadcast_889"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_964", - "op" : "Broadcast", - "outputs" : ["Broadcast_964"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1039", - "op" : "Broadcast", - "outputs" : ["Broadcast_1039"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1114", - "op" : "Broadcast", - "outputs" : ["Broadcast_1114"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1189", - "op" : "Broadcast", - "outputs" : ["Broadcast_1189"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1264", - "op" : "Broadcast", - "outputs" : ["Broadcast_1264"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1339", - "op" : "Broadcast", - "outputs" : ["Broadcast_1339"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1414", - "op" : "Broadcast", - "outputs" : ["Broadcast_1414"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1489", - "op" : "Broadcast", - "outputs" : ["Broadcast_1489"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1564", - "op" : "Broadcast", - "outputs" : ["Broadcast_1564"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1639", - "op" : "Broadcast", - "outputs" : ["Broadcast_1639"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1714", - "op" : "Broadcast", - "outputs" : ["Broadcast_1714"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1789", - "op" : "Broadcast", - "outputs" : ["Broadcast_1789"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1864", - "op" : "Broadcast", - "outputs" : ["Broadcast_1864"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_1939", - "op" : "Broadcast", - "outputs" : ["Broadcast_1939"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2014", - "op" : "Broadcast", - "outputs" : ["Broadcast_2014"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2089", - "op" : "Broadcast", - "outputs" : ["Broadcast_2089"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2164", - "op" : "Broadcast", - "outputs" : ["Broadcast_2164"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2239", - "op" : "Broadcast", - "outputs" : ["Broadcast_2239"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2314", - "op" : "Broadcast", - "outputs" : ["Broadcast_2314"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2389", - "op" : "Broadcast", - "outputs" : ["Broadcast_2389"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2464", - "op" : "Broadcast", - "outputs" : ["Broadcast_2464"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2539", - "op" : "Broadcast", - "outputs" : ["Broadcast_2539"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2614", - "op" : "Broadcast", - "outputs" : ["Broadcast_2614"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2689", - "op" : "Broadcast", - "outputs" : ["Broadcast_2689"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2764", - "op" : "Broadcast", - "outputs" : ["Broadcast_2764"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2839", - "op" : "Broadcast", - "outputs" : ["Broadcast_2839"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2914", - "op" : "Broadcast", - "outputs" : ["Broadcast_2914"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_2989", - "op" : "Broadcast", - "outputs" : ["Broadcast_2989"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3064", - "op" : "Broadcast", - "outputs" : ["Broadcast_3064"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3139", - "op" : "Broadcast", - "outputs" : ["Broadcast_3139"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3214", - "op" : "Broadcast", - "outputs" : ["Broadcast_3214"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3289", - "op" : "Broadcast", - "outputs" : ["Broadcast_3289"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3364", - "op" : "Broadcast", - "outputs" : ["Broadcast_3364"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3439", - "op" : "Broadcast", - "outputs" : ["Broadcast_3439"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3514", - "op" : "Broadcast", - "outputs" : ["Broadcast_3514"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3589", - "op" : "Broadcast", - "outputs" : ["Broadcast_3589"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3664", - "op" : "Broadcast", - "outputs" : ["Broadcast_3664"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3739", - "op" : "Broadcast", - "outputs" : ["Broadcast_3739"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3814", - "op" : "Broadcast", - "outputs" : ["Broadcast_3814"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3889", - "op" : "Broadcast", - "outputs" : ["Broadcast_3889"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_3964", - "op" : "Broadcast", - "outputs" : ["Broadcast_3964"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4039", - "op" : "Broadcast", - "outputs" : ["Broadcast_4039"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4114", - "op" : "Broadcast", - "outputs" : ["Broadcast_4114"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4189", - "op" : "Broadcast", - "outputs" : ["Broadcast_4189"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4264", - "op" : "Broadcast", - "outputs" : ["Broadcast_4264"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4339", - "op" : "Broadcast", - "outputs" : ["Broadcast_4339"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4414", - "op" : "Broadcast", - "outputs" : ["Broadcast_4414"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4489", - "op" : "Broadcast", - "outputs" : ["Broadcast_4489"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "axes" : [0], - "inputs" : ["Parameter_122"], - "name" : "Broadcast_4564", - "op" : "Broadcast", - "outputs" : ["Broadcast_4564"], - "shape" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_123", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_123"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_212", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_212"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_287", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_287"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_362", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_362"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_437", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_437"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_512", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_512"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_587", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_587"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_662", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_662"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_737", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_737"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_812", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_812"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_887", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_887"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_962", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_962"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1037", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1037"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1112", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1112"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1187", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1187"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1262", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1262"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1337", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1337"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1412", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1412"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1487", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1487"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1562", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1562"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1637", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1637"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1712", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1712"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1787", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1787"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1862", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1862"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_1937", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_1937"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2012", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2012"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2087", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2087"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2162", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2162"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2237", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2237"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2312", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2312"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2387", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2387"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2462", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2462"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2537", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2537"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2612", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2612"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2687", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2687"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2762", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2762"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2837", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2837"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2912", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2912"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_2987", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_2987"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3062", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3062"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3137", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3137"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3212", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3212"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3287", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3287"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3362", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3362"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3437", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3437"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3512", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3512"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3587", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3587"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3662", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3662"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3737", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3737"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3812", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3812"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3887", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3887"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_3962", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_3962"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4037", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4037"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4112", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4112"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4187", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4187"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4262", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4262"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4337", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4337"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4412", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4412"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4487", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4487"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_121"], - "name" : "Reshape_4562", - "op" : "Reshape", - "output_shape" : [ 200, 800 ], - "outputs" : ["Reshape_4562"], - "value_type" : {"element_type" : "float", "shape" : [ 200, 800 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_1", - "op" : "Slice", - "outputs" : ["Slice_1"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 1, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "Slice_3", - "op" : "Slice", - "outputs" : ["Slice_3"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 2, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "Slice_5", - "op" : "Slice", - "outputs" : ["Slice_5"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 3, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "Slice_7", - "op" : "Slice", - "outputs" : ["Slice_7"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 4, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "Slice_9", - "op" : "Slice", - "outputs" : ["Slice_9"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 5, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "Slice_11", - "op" : "Slice", - "outputs" : ["Slice_11"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 6, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "Slice_13", - "op" : "Slice", - "outputs" : ["Slice_13"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 7, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "Slice_15", - "op" : "Slice", - "outputs" : ["Slice_15"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 8, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "Slice_17", - "op" : "Slice", - "outputs" : ["Slice_17"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 9, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "Slice_19", - "op" : "Slice", - "outputs" : ["Slice_19"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 10, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "Slice_21", - "op" : "Slice", - "outputs" : ["Slice_21"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 11, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "Slice_23", - "op" : "Slice", - "outputs" : ["Slice_23"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 12, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "Slice_25", - "op" : "Slice", - "outputs" : ["Slice_25"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 13, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "Slice_27", - "op" : "Slice", - "outputs" : ["Slice_27"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 14, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "Slice_29", - "op" : "Slice", - "outputs" : ["Slice_29"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 15, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "Slice_31", - "op" : "Slice", - "outputs" : ["Slice_31"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 16, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "Slice_33", - "op" : "Slice", - "outputs" : ["Slice_33"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 17, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "Slice_35", - "op" : "Slice", - "outputs" : ["Slice_35"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 18, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "Slice_37", - "op" : "Slice", - "outputs" : ["Slice_37"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 19, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "Slice_39", - "op" : "Slice", - "outputs" : ["Slice_39"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 20, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "Slice_41", - "op" : "Slice", - "outputs" : ["Slice_41"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 21, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "Slice_43", - "op" : "Slice", - "outputs" : ["Slice_43"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 22, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "Slice_45", - "op" : "Slice", - "outputs" : ["Slice_45"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 23, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "Slice_47", - "op" : "Slice", - "outputs" : ["Slice_47"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 24, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "Slice_49", - "op" : "Slice", - "outputs" : ["Slice_49"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 25, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 25, 0 ], - "name" : "Slice_51", - "op" : "Slice", - "outputs" : ["Slice_51"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 26, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 26, 0 ], - "name" : "Slice_53", - "op" : "Slice", - "outputs" : ["Slice_53"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 27, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 27, 0 ], - "name" : "Slice_55", - "op" : "Slice", - "outputs" : ["Slice_55"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 28, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 28, 0 ], - "name" : "Slice_57", - "op" : "Slice", - "outputs" : ["Slice_57"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 29, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 29, 0 ], - "name" : "Slice_59", - "op" : "Slice", - "outputs" : ["Slice_59"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 30, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 30, 0 ], - "name" : "Slice_61", - "op" : "Slice", - "outputs" : ["Slice_61"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 31, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 31, 0 ], - "name" : "Slice_63", - "op" : "Slice", - "outputs" : ["Slice_63"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 32, 0 ], - "name" : "Slice_65", - "op" : "Slice", - "outputs" : ["Slice_65"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 33, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 33, 0 ], - "name" : "Slice_67", - "op" : "Slice", - "outputs" : ["Slice_67"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 34, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 34, 0 ], - "name" : "Slice_69", - "op" : "Slice", - "outputs" : ["Slice_69"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 35, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 35, 0 ], - "name" : "Slice_71", - "op" : "Slice", - "outputs" : ["Slice_71"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 36, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 36, 0 ], - "name" : "Slice_73", - "op" : "Slice", - "outputs" : ["Slice_73"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 37, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 37, 0 ], - "name" : "Slice_75", - "op" : "Slice", - "outputs" : ["Slice_75"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 38, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 38, 0 ], - "name" : "Slice_77", - "op" : "Slice", - "outputs" : ["Slice_77"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 39, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 39, 0 ], - "name" : "Slice_79", - "op" : "Slice", - "outputs" : ["Slice_79"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 40, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 40, 0 ], - "name" : "Slice_81", - "op" : "Slice", - "outputs" : ["Slice_81"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 41, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 41, 0 ], - "name" : "Slice_83", - "op" : "Slice", - "outputs" : ["Slice_83"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 42, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 42, 0 ], - "name" : "Slice_85", - "op" : "Slice", - "outputs" : ["Slice_85"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 43, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 43, 0 ], - "name" : "Slice_87", - "op" : "Slice", - "outputs" : ["Slice_87"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 44, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 44, 0 ], - "name" : "Slice_89", - "op" : "Slice", - "outputs" : ["Slice_89"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 45, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 45, 0 ], - "name" : "Slice_91", - "op" : "Slice", - "outputs" : ["Slice_91"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 46, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 46, 0 ], - "name" : "Slice_93", - "op" : "Slice", - "outputs" : ["Slice_93"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 47, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 47, 0 ], - "name" : "Slice_95", - "op" : "Slice", - "outputs" : ["Slice_95"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 48, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 48, 0 ], - "name" : "Slice_97", - "op" : "Slice", - "outputs" : ["Slice_97"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 49, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 49, 0 ], - "name" : "Slice_99", - "op" : "Slice", - "outputs" : ["Slice_99"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 50, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 50, 0 ], - "name" : "Slice_101", - "op" : "Slice", - "outputs" : ["Slice_101"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 51, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 51, 0 ], - "name" : "Slice_103", - "op" : "Slice", - "outputs" : ["Slice_103"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 52, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 52, 0 ], - "name" : "Slice_105", - "op" : "Slice", - "outputs" : ["Slice_105"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 53, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 53, 0 ], - "name" : "Slice_107", - "op" : "Slice", - "outputs" : ["Slice_107"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 54, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 54, 0 ], - "name" : "Slice_109", - "op" : "Slice", - "outputs" : ["Slice_109"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 55, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 55, 0 ], - "name" : "Slice_111", - "op" : "Slice", - "outputs" : ["Slice_111"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 56, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 56, 0 ], - "name" : "Slice_113", - "op" : "Slice", - "outputs" : ["Slice_113"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 57, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 57, 0 ], - "name" : "Slice_115", - "op" : "Slice", - "outputs" : ["Slice_115"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 58, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 58, 0 ], - "name" : "Slice_117", - "op" : "Slice", - "outputs" : ["Slice_117"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 59, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 59, 0 ], - "name" : "Slice_119", - "op" : "Slice", - "outputs" : ["Slice_119"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 60, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_172"], - "name" : "Broadcast_173", - "op" : "Broadcast", - "outputs" : ["Broadcast_173"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_127"], - "name" : "Broadcast_128", - "op" : "Broadcast", - "outputs" : ["Broadcast_128"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_155"], - "name" : "Broadcast_156", - "op" : "Broadcast", - "outputs" : ["Broadcast_156"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_152"], - "name" : "Broadcast_153", - "op" : "Broadcast", - "outputs" : ["Broadcast_153"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_146"], - "name" : "Broadcast_147", - "op" : "Broadcast", - "outputs" : ["Broadcast_147"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_140"], - "name" : "Broadcast_141", - "op" : "Broadcast", - "outputs" : ["Broadcast_141"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_200"], - "name" : "Broadcast_201", - "op" : "Broadcast", - "outputs" : ["Broadcast_201"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_197"], - "name" : "Broadcast_198", - "op" : "Broadcast", - "outputs" : ["Broadcast_198"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_191"], - "name" : "Broadcast_192", - "op" : "Broadcast", - "outputs" : ["Broadcast_192"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_185"], - "name" : "Broadcast_186", - "op" : "Broadcast", - "outputs" : ["Broadcast_186"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_238"], - "name" : "Broadcast_239", - "op" : "Broadcast", - "outputs" : ["Broadcast_239"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_231"], - "name" : "Broadcast_232", - "op" : "Broadcast", - "outputs" : ["Broadcast_232"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_225"], - "name" : "Broadcast_226", - "op" : "Broadcast", - "outputs" : ["Broadcast_226"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_275"], - "name" : "Broadcast_276", - "op" : "Broadcast", - "outputs" : ["Broadcast_276"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_268"], - "name" : "Broadcast_269", - "op" : "Broadcast", - "outputs" : ["Broadcast_269"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_262"], - "name" : "Broadcast_263", - "op" : "Broadcast", - "outputs" : ["Broadcast_263"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_313"], - "name" : "Broadcast_314", - "op" : "Broadcast", - "outputs" : ["Broadcast_314"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_306"], - "name" : "Broadcast_307", - "op" : "Broadcast", - "outputs" : ["Broadcast_307"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_300"], - "name" : "Broadcast_301", - "op" : "Broadcast", - "outputs" : ["Broadcast_301"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_350"], - "name" : "Broadcast_351", - "op" : "Broadcast", - "outputs" : ["Broadcast_351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_343"], - "name" : "Broadcast_344", - "op" : "Broadcast", - "outputs" : ["Broadcast_344"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_337"], - "name" : "Broadcast_338", - "op" : "Broadcast", - "outputs" : ["Broadcast_338"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_388"], - "name" : "Broadcast_389", - "op" : "Broadcast", - "outputs" : ["Broadcast_389"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_381"], - "name" : "Broadcast_382", - "op" : "Broadcast", - "outputs" : ["Broadcast_382"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_375"], - "name" : "Broadcast_376", - "op" : "Broadcast", - "outputs" : ["Broadcast_376"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_425"], - "name" : "Broadcast_426", - "op" : "Broadcast", - "outputs" : ["Broadcast_426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_418"], - "name" : "Broadcast_419", - "op" : "Broadcast", - "outputs" : ["Broadcast_419"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_412"], - "name" : "Broadcast_413", - "op" : "Broadcast", - "outputs" : ["Broadcast_413"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_463"], - "name" : "Broadcast_464", - "op" : "Broadcast", - "outputs" : ["Broadcast_464"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_456"], - "name" : "Broadcast_457", - "op" : "Broadcast", - "outputs" : ["Broadcast_457"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_450"], - "name" : "Broadcast_451", - "op" : "Broadcast", - "outputs" : ["Broadcast_451"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_500"], - "name" : "Broadcast_501", - "op" : "Broadcast", - "outputs" : ["Broadcast_501"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_493"], - "name" : "Broadcast_494", - "op" : "Broadcast", - "outputs" : ["Broadcast_494"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_487"], - "name" : "Broadcast_488", - "op" : "Broadcast", - "outputs" : ["Broadcast_488"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_538"], - "name" : "Broadcast_539", - "op" : "Broadcast", - "outputs" : ["Broadcast_539"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_531"], - "name" : "Broadcast_532", - "op" : "Broadcast", - "outputs" : ["Broadcast_532"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_525"], - "name" : "Broadcast_526", - "op" : "Broadcast", - "outputs" : ["Broadcast_526"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_575"], - "name" : "Broadcast_576", - "op" : "Broadcast", - "outputs" : ["Broadcast_576"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_568"], - "name" : "Broadcast_569", - "op" : "Broadcast", - "outputs" : ["Broadcast_569"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_562"], - "name" : "Broadcast_563", - "op" : "Broadcast", - "outputs" : ["Broadcast_563"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_613"], - "name" : "Broadcast_614", - "op" : "Broadcast", - "outputs" : ["Broadcast_614"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_606"], - "name" : "Broadcast_607", - "op" : "Broadcast", - "outputs" : ["Broadcast_607"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_600"], - "name" : "Broadcast_601", - "op" : "Broadcast", - "outputs" : ["Broadcast_601"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_650"], - "name" : "Broadcast_651", - "op" : "Broadcast", - "outputs" : ["Broadcast_651"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_643"], - "name" : "Broadcast_644", - "op" : "Broadcast", - "outputs" : ["Broadcast_644"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_637"], - "name" : "Broadcast_638", - "op" : "Broadcast", - "outputs" : ["Broadcast_638"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_688"], - "name" : "Broadcast_689", - "op" : "Broadcast", - "outputs" : ["Broadcast_689"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_681"], - "name" : "Broadcast_682", - "op" : "Broadcast", - "outputs" : ["Broadcast_682"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_675"], - "name" : "Broadcast_676", - "op" : "Broadcast", - "outputs" : ["Broadcast_676"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_725"], - "name" : "Broadcast_726", - "op" : "Broadcast", - "outputs" : ["Broadcast_726"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_718"], - "name" : "Broadcast_719", - "op" : "Broadcast", - "outputs" : ["Broadcast_719"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_712"], - "name" : "Broadcast_713", - "op" : "Broadcast", - "outputs" : ["Broadcast_713"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_763"], - "name" : "Broadcast_764", - "op" : "Broadcast", - "outputs" : ["Broadcast_764"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_756"], - "name" : "Broadcast_757", - "op" : "Broadcast", - "outputs" : ["Broadcast_757"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_750"], - "name" : "Broadcast_751", - "op" : "Broadcast", - "outputs" : ["Broadcast_751"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_800"], - "name" : "Broadcast_801", - "op" : "Broadcast", - "outputs" : ["Broadcast_801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_793"], - "name" : "Broadcast_794", - "op" : "Broadcast", - "outputs" : ["Broadcast_794"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_787"], - "name" : "Broadcast_788", - "op" : "Broadcast", - "outputs" : ["Broadcast_788"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_838"], - "name" : "Broadcast_839", - "op" : "Broadcast", - "outputs" : ["Broadcast_839"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_831"], - "name" : "Broadcast_832", - "op" : "Broadcast", - "outputs" : ["Broadcast_832"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_825"], - "name" : "Broadcast_826", - "op" : "Broadcast", - "outputs" : ["Broadcast_826"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_875"], - "name" : "Broadcast_876", - "op" : "Broadcast", - "outputs" : ["Broadcast_876"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_868"], - "name" : "Broadcast_869", - "op" : "Broadcast", - "outputs" : ["Broadcast_869"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_862"], - "name" : "Broadcast_863", - "op" : "Broadcast", - "outputs" : ["Broadcast_863"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_913"], - "name" : "Broadcast_914", - "op" : "Broadcast", - "outputs" : ["Broadcast_914"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_906"], - "name" : "Broadcast_907", - "op" : "Broadcast", - "outputs" : ["Broadcast_907"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_900"], - "name" : "Broadcast_901", - "op" : "Broadcast", - "outputs" : ["Broadcast_901"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_950"], - "name" : "Broadcast_951", - "op" : "Broadcast", - "outputs" : ["Broadcast_951"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_943"], - "name" : "Broadcast_944", - "op" : "Broadcast", - "outputs" : ["Broadcast_944"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_937"], - "name" : "Broadcast_938", - "op" : "Broadcast", - "outputs" : ["Broadcast_938"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_988"], - "name" : "Broadcast_989", - "op" : "Broadcast", - "outputs" : ["Broadcast_989"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_981"], - "name" : "Broadcast_982", - "op" : "Broadcast", - "outputs" : ["Broadcast_982"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_975"], - "name" : "Broadcast_976", - "op" : "Broadcast", - "outputs" : ["Broadcast_976"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1025"], - "name" : "Broadcast_1026", - "op" : "Broadcast", - "outputs" : ["Broadcast_1026"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1018"], - "name" : "Broadcast_1019", - "op" : "Broadcast", - "outputs" : ["Broadcast_1019"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1012"], - "name" : "Broadcast_1013", - "op" : "Broadcast", - "outputs" : ["Broadcast_1013"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1063"], - "name" : "Broadcast_1064", - "op" : "Broadcast", - "outputs" : ["Broadcast_1064"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1056"], - "name" : "Broadcast_1057", - "op" : "Broadcast", - "outputs" : ["Broadcast_1057"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1050"], - "name" : "Broadcast_1051", - "op" : "Broadcast", - "outputs" : ["Broadcast_1051"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1100"], - "name" : "Broadcast_1101", - "op" : "Broadcast", - "outputs" : ["Broadcast_1101"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1093"], - "name" : "Broadcast_1094", - "op" : "Broadcast", - "outputs" : ["Broadcast_1094"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1087"], - "name" : "Broadcast_1088", - "op" : "Broadcast", - "outputs" : ["Broadcast_1088"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1138"], - "name" : "Broadcast_1139", - "op" : "Broadcast", - "outputs" : ["Broadcast_1139"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1131"], - "name" : "Broadcast_1132", - "op" : "Broadcast", - "outputs" : ["Broadcast_1132"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1125"], - "name" : "Broadcast_1126", - "op" : "Broadcast", - "outputs" : ["Broadcast_1126"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1175"], - "name" : "Broadcast_1176", - "op" : "Broadcast", - "outputs" : ["Broadcast_1176"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1168"], - "name" : "Broadcast_1169", - "op" : "Broadcast", - "outputs" : ["Broadcast_1169"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1162"], - "name" : "Broadcast_1163", - "op" : "Broadcast", - "outputs" : ["Broadcast_1163"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1213"], - "name" : "Broadcast_1214", - "op" : "Broadcast", - "outputs" : ["Broadcast_1214"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1206"], - "name" : "Broadcast_1207", - "op" : "Broadcast", - "outputs" : ["Broadcast_1207"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1200"], - "name" : "Broadcast_1201", - "op" : "Broadcast", - "outputs" : ["Broadcast_1201"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1250"], - "name" : "Broadcast_1251", - "op" : "Broadcast", - "outputs" : ["Broadcast_1251"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1243"], - "name" : "Broadcast_1244", - "op" : "Broadcast", - "outputs" : ["Broadcast_1244"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1237"], - "name" : "Broadcast_1238", - "op" : "Broadcast", - "outputs" : ["Broadcast_1238"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1288"], - "name" : "Broadcast_1289", - "op" : "Broadcast", - "outputs" : ["Broadcast_1289"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1281"], - "name" : "Broadcast_1282", - "op" : "Broadcast", - "outputs" : ["Broadcast_1282"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1275"], - "name" : "Broadcast_1276", - "op" : "Broadcast", - "outputs" : ["Broadcast_1276"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1325"], - "name" : "Broadcast_1326", - "op" : "Broadcast", - "outputs" : ["Broadcast_1326"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1318"], - "name" : "Broadcast_1319", - "op" : "Broadcast", - "outputs" : ["Broadcast_1319"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1312"], - "name" : "Broadcast_1313", - "op" : "Broadcast", - "outputs" : ["Broadcast_1313"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1363"], - "name" : "Broadcast_1364", - "op" : "Broadcast", - "outputs" : ["Broadcast_1364"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1356"], - "name" : "Broadcast_1357", - "op" : "Broadcast", - "outputs" : ["Broadcast_1357"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1350"], - "name" : "Broadcast_1351", - "op" : "Broadcast", - "outputs" : ["Broadcast_1351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1400"], - "name" : "Broadcast_1401", - "op" : "Broadcast", - "outputs" : ["Broadcast_1401"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1393"], - "name" : "Broadcast_1394", - "op" : "Broadcast", - "outputs" : ["Broadcast_1394"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1387"], - "name" : "Broadcast_1388", - "op" : "Broadcast", - "outputs" : ["Broadcast_1388"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1438"], - "name" : "Broadcast_1439", - "op" : "Broadcast", - "outputs" : ["Broadcast_1439"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1431"], - "name" : "Broadcast_1432", - "op" : "Broadcast", - "outputs" : ["Broadcast_1432"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1425"], - "name" : "Broadcast_1426", - "op" : "Broadcast", - "outputs" : ["Broadcast_1426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1475"], - "name" : "Broadcast_1476", - "op" : "Broadcast", - "outputs" : ["Broadcast_1476"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1468"], - "name" : "Broadcast_1469", - "op" : "Broadcast", - "outputs" : ["Broadcast_1469"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1462"], - "name" : "Broadcast_1463", - "op" : "Broadcast", - "outputs" : ["Broadcast_1463"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1513"], - "name" : "Broadcast_1514", - "op" : "Broadcast", - "outputs" : ["Broadcast_1514"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1506"], - "name" : "Broadcast_1507", - "op" : "Broadcast", - "outputs" : ["Broadcast_1507"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1500"], - "name" : "Broadcast_1501", - "op" : "Broadcast", - "outputs" : ["Broadcast_1501"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1550"], - "name" : "Broadcast_1551", - "op" : "Broadcast", - "outputs" : ["Broadcast_1551"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1543"], - "name" : "Broadcast_1544", - "op" : "Broadcast", - "outputs" : ["Broadcast_1544"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1537"], - "name" : "Broadcast_1538", - "op" : "Broadcast", - "outputs" : ["Broadcast_1538"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1588"], - "name" : "Broadcast_1589", - "op" : "Broadcast", - "outputs" : ["Broadcast_1589"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1581"], - "name" : "Broadcast_1582", - "op" : "Broadcast", - "outputs" : ["Broadcast_1582"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1575"], - "name" : "Broadcast_1576", - "op" : "Broadcast", - "outputs" : ["Broadcast_1576"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1625"], - "name" : "Broadcast_1626", - "op" : "Broadcast", - "outputs" : ["Broadcast_1626"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1618"], - "name" : "Broadcast_1619", - "op" : "Broadcast", - "outputs" : ["Broadcast_1619"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1612"], - "name" : "Broadcast_1613", - "op" : "Broadcast", - "outputs" : ["Broadcast_1613"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1663"], - "name" : "Broadcast_1664", - "op" : "Broadcast", - "outputs" : ["Broadcast_1664"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1656"], - "name" : "Broadcast_1657", - "op" : "Broadcast", - "outputs" : ["Broadcast_1657"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1650"], - "name" : "Broadcast_1651", - "op" : "Broadcast", - "outputs" : ["Broadcast_1651"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1700"], - "name" : "Broadcast_1701", - "op" : "Broadcast", - "outputs" : ["Broadcast_1701"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1693"], - "name" : "Broadcast_1694", - "op" : "Broadcast", - "outputs" : ["Broadcast_1694"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1687"], - "name" : "Broadcast_1688", - "op" : "Broadcast", - "outputs" : ["Broadcast_1688"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1738"], - "name" : "Broadcast_1739", - "op" : "Broadcast", - "outputs" : ["Broadcast_1739"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1731"], - "name" : "Broadcast_1732", - "op" : "Broadcast", - "outputs" : ["Broadcast_1732"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1725"], - "name" : "Broadcast_1726", - "op" : "Broadcast", - "outputs" : ["Broadcast_1726"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1775"], - "name" : "Broadcast_1776", - "op" : "Broadcast", - "outputs" : ["Broadcast_1776"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1768"], - "name" : "Broadcast_1769", - "op" : "Broadcast", - "outputs" : ["Broadcast_1769"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1762"], - "name" : "Broadcast_1763", - "op" : "Broadcast", - "outputs" : ["Broadcast_1763"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1813"], - "name" : "Broadcast_1814", - "op" : "Broadcast", - "outputs" : ["Broadcast_1814"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1806"], - "name" : "Broadcast_1807", - "op" : "Broadcast", - "outputs" : ["Broadcast_1807"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1800"], - "name" : "Broadcast_1801", - "op" : "Broadcast", - "outputs" : ["Broadcast_1801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1850"], - "name" : "Broadcast_1851", - "op" : "Broadcast", - "outputs" : ["Broadcast_1851"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1843"], - "name" : "Broadcast_1844", - "op" : "Broadcast", - "outputs" : ["Broadcast_1844"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1837"], - "name" : "Broadcast_1838", - "op" : "Broadcast", - "outputs" : ["Broadcast_1838"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1888"], - "name" : "Broadcast_1889", - "op" : "Broadcast", - "outputs" : ["Broadcast_1889"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1881"], - "name" : "Broadcast_1882", - "op" : "Broadcast", - "outputs" : ["Broadcast_1882"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1875"], - "name" : "Broadcast_1876", - "op" : "Broadcast", - "outputs" : ["Broadcast_1876"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1925"], - "name" : "Broadcast_1926", - "op" : "Broadcast", - "outputs" : ["Broadcast_1926"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1918"], - "name" : "Broadcast_1919", - "op" : "Broadcast", - "outputs" : ["Broadcast_1919"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1912"], - "name" : "Broadcast_1913", - "op" : "Broadcast", - "outputs" : ["Broadcast_1913"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1963"], - "name" : "Broadcast_1964", - "op" : "Broadcast", - "outputs" : ["Broadcast_1964"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1956"], - "name" : "Broadcast_1957", - "op" : "Broadcast", - "outputs" : ["Broadcast_1957"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1950"], - "name" : "Broadcast_1951", - "op" : "Broadcast", - "outputs" : ["Broadcast_1951"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2000"], - "name" : "Broadcast_2001", - "op" : "Broadcast", - "outputs" : ["Broadcast_2001"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1993"], - "name" : "Broadcast_1994", - "op" : "Broadcast", - "outputs" : ["Broadcast_1994"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1987"], - "name" : "Broadcast_1988", - "op" : "Broadcast", - "outputs" : ["Broadcast_1988"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2038"], - "name" : "Broadcast_2039", - "op" : "Broadcast", - "outputs" : ["Broadcast_2039"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2031"], - "name" : "Broadcast_2032", - "op" : "Broadcast", - "outputs" : ["Broadcast_2032"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2025"], - "name" : "Broadcast_2026", - "op" : "Broadcast", - "outputs" : ["Broadcast_2026"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2075"], - "name" : "Broadcast_2076", - "op" : "Broadcast", - "outputs" : ["Broadcast_2076"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2068"], - "name" : "Broadcast_2069", - "op" : "Broadcast", - "outputs" : ["Broadcast_2069"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2062"], - "name" : "Broadcast_2063", - "op" : "Broadcast", - "outputs" : ["Broadcast_2063"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2113"], - "name" : "Broadcast_2114", - "op" : "Broadcast", - "outputs" : ["Broadcast_2114"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2106"], - "name" : "Broadcast_2107", - "op" : "Broadcast", - "outputs" : ["Broadcast_2107"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2100"], - "name" : "Broadcast_2101", - "op" : "Broadcast", - "outputs" : ["Broadcast_2101"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2150"], - "name" : "Broadcast_2151", - "op" : "Broadcast", - "outputs" : ["Broadcast_2151"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2143"], - "name" : "Broadcast_2144", - "op" : "Broadcast", - "outputs" : ["Broadcast_2144"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2137"], - "name" : "Broadcast_2138", - "op" : "Broadcast", - "outputs" : ["Broadcast_2138"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2188"], - "name" : "Broadcast_2189", - "op" : "Broadcast", - "outputs" : ["Broadcast_2189"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2181"], - "name" : "Broadcast_2182", - "op" : "Broadcast", - "outputs" : ["Broadcast_2182"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2175"], - "name" : "Broadcast_2176", - "op" : "Broadcast", - "outputs" : ["Broadcast_2176"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2225"], - "name" : "Broadcast_2226", - "op" : "Broadcast", - "outputs" : ["Broadcast_2226"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2218"], - "name" : "Broadcast_2219", - "op" : "Broadcast", - "outputs" : ["Broadcast_2219"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2212"], - "name" : "Broadcast_2213", - "op" : "Broadcast", - "outputs" : ["Broadcast_2213"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2263"], - "name" : "Broadcast_2264", - "op" : "Broadcast", - "outputs" : ["Broadcast_2264"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2256"], - "name" : "Broadcast_2257", - "op" : "Broadcast", - "outputs" : ["Broadcast_2257"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2250"], - "name" : "Broadcast_2251", - "op" : "Broadcast", - "outputs" : ["Broadcast_2251"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2300"], - "name" : "Broadcast_2301", - "op" : "Broadcast", - "outputs" : ["Broadcast_2301"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2293"], - "name" : "Broadcast_2294", - "op" : "Broadcast", - "outputs" : ["Broadcast_2294"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2287"], - "name" : "Broadcast_2288", - "op" : "Broadcast", - "outputs" : ["Broadcast_2288"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2338"], - "name" : "Broadcast_2339", - "op" : "Broadcast", - "outputs" : ["Broadcast_2339"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2331"], - "name" : "Broadcast_2332", - "op" : "Broadcast", - "outputs" : ["Broadcast_2332"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2325"], - "name" : "Broadcast_2326", - "op" : "Broadcast", - "outputs" : ["Broadcast_2326"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2375"], - "name" : "Broadcast_2376", - "op" : "Broadcast", - "outputs" : ["Broadcast_2376"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2368"], - "name" : "Broadcast_2369", - "op" : "Broadcast", - "outputs" : ["Broadcast_2369"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2362"], - "name" : "Broadcast_2363", - "op" : "Broadcast", - "outputs" : ["Broadcast_2363"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2413"], - "name" : "Broadcast_2414", - "op" : "Broadcast", - "outputs" : ["Broadcast_2414"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2406"], - "name" : "Broadcast_2407", - "op" : "Broadcast", - "outputs" : ["Broadcast_2407"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2400"], - "name" : "Broadcast_2401", - "op" : "Broadcast", - "outputs" : ["Broadcast_2401"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2450"], - "name" : "Broadcast_2451", - "op" : "Broadcast", - "outputs" : ["Broadcast_2451"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2443"], - "name" : "Broadcast_2444", - "op" : "Broadcast", - "outputs" : ["Broadcast_2444"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2437"], - "name" : "Broadcast_2438", - "op" : "Broadcast", - "outputs" : ["Broadcast_2438"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2488"], - "name" : "Broadcast_2489", - "op" : "Broadcast", - "outputs" : ["Broadcast_2489"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2481"], - "name" : "Broadcast_2482", - "op" : "Broadcast", - "outputs" : ["Broadcast_2482"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2475"], - "name" : "Broadcast_2476", - "op" : "Broadcast", - "outputs" : ["Broadcast_2476"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2525"], - "name" : "Broadcast_2526", - "op" : "Broadcast", - "outputs" : ["Broadcast_2526"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2518"], - "name" : "Broadcast_2519", - "op" : "Broadcast", - "outputs" : ["Broadcast_2519"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2512"], - "name" : "Broadcast_2513", - "op" : "Broadcast", - "outputs" : ["Broadcast_2513"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2563"], - "name" : "Broadcast_2564", - "op" : "Broadcast", - "outputs" : ["Broadcast_2564"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2556"], - "name" : "Broadcast_2557", - "op" : "Broadcast", - "outputs" : ["Broadcast_2557"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2550"], - "name" : "Broadcast_2551", - "op" : "Broadcast", - "outputs" : ["Broadcast_2551"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2600"], - "name" : "Broadcast_2601", - "op" : "Broadcast", - "outputs" : ["Broadcast_2601"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2593"], - "name" : "Broadcast_2594", - "op" : "Broadcast", - "outputs" : ["Broadcast_2594"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2587"], - "name" : "Broadcast_2588", - "op" : "Broadcast", - "outputs" : ["Broadcast_2588"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2638"], - "name" : "Broadcast_2639", - "op" : "Broadcast", - "outputs" : ["Broadcast_2639"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2631"], - "name" : "Broadcast_2632", - "op" : "Broadcast", - "outputs" : ["Broadcast_2632"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2625"], - "name" : "Broadcast_2626", - "op" : "Broadcast", - "outputs" : ["Broadcast_2626"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2675"], - "name" : "Broadcast_2676", - "op" : "Broadcast", - "outputs" : ["Broadcast_2676"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2668"], - "name" : "Broadcast_2669", - "op" : "Broadcast", - "outputs" : ["Broadcast_2669"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2662"], - "name" : "Broadcast_2663", - "op" : "Broadcast", - "outputs" : ["Broadcast_2663"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2713"], - "name" : "Broadcast_2714", - "op" : "Broadcast", - "outputs" : ["Broadcast_2714"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2706"], - "name" : "Broadcast_2707", - "op" : "Broadcast", - "outputs" : ["Broadcast_2707"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2700"], - "name" : "Broadcast_2701", - "op" : "Broadcast", - "outputs" : ["Broadcast_2701"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2750"], - "name" : "Broadcast_2751", - "op" : "Broadcast", - "outputs" : ["Broadcast_2751"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2743"], - "name" : "Broadcast_2744", - "op" : "Broadcast", - "outputs" : ["Broadcast_2744"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2737"], - "name" : "Broadcast_2738", - "op" : "Broadcast", - "outputs" : ["Broadcast_2738"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2788"], - "name" : "Broadcast_2789", - "op" : "Broadcast", - "outputs" : ["Broadcast_2789"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2781"], - "name" : "Broadcast_2782", - "op" : "Broadcast", - "outputs" : ["Broadcast_2782"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2775"], - "name" : "Broadcast_2776", - "op" : "Broadcast", - "outputs" : ["Broadcast_2776"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2825"], - "name" : "Broadcast_2826", - "op" : "Broadcast", - "outputs" : ["Broadcast_2826"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2818"], - "name" : "Broadcast_2819", - "op" : "Broadcast", - "outputs" : ["Broadcast_2819"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2812"], - "name" : "Broadcast_2813", - "op" : "Broadcast", - "outputs" : ["Broadcast_2813"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2863"], - "name" : "Broadcast_2864", - "op" : "Broadcast", - "outputs" : ["Broadcast_2864"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2856"], - "name" : "Broadcast_2857", - "op" : "Broadcast", - "outputs" : ["Broadcast_2857"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2850"], - "name" : "Broadcast_2851", - "op" : "Broadcast", - "outputs" : ["Broadcast_2851"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2900"], - "name" : "Broadcast_2901", - "op" : "Broadcast", - "outputs" : ["Broadcast_2901"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2893"], - "name" : "Broadcast_2894", - "op" : "Broadcast", - "outputs" : ["Broadcast_2894"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2887"], - "name" : "Broadcast_2888", - "op" : "Broadcast", - "outputs" : ["Broadcast_2888"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2938"], - "name" : "Broadcast_2939", - "op" : "Broadcast", - "outputs" : ["Broadcast_2939"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2931"], - "name" : "Broadcast_2932", - "op" : "Broadcast", - "outputs" : ["Broadcast_2932"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2925"], - "name" : "Broadcast_2926", - "op" : "Broadcast", - "outputs" : ["Broadcast_2926"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2975"], - "name" : "Broadcast_2976", - "op" : "Broadcast", - "outputs" : ["Broadcast_2976"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2968"], - "name" : "Broadcast_2969", - "op" : "Broadcast", - "outputs" : ["Broadcast_2969"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2962"], - "name" : "Broadcast_2963", - "op" : "Broadcast", - "outputs" : ["Broadcast_2963"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3013"], - "name" : "Broadcast_3014", - "op" : "Broadcast", - "outputs" : ["Broadcast_3014"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3006"], - "name" : "Broadcast_3007", - "op" : "Broadcast", - "outputs" : ["Broadcast_3007"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3000"], - "name" : "Broadcast_3001", - "op" : "Broadcast", - "outputs" : ["Broadcast_3001"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3050"], - "name" : "Broadcast_3051", - "op" : "Broadcast", - "outputs" : ["Broadcast_3051"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3043"], - "name" : "Broadcast_3044", - "op" : "Broadcast", - "outputs" : ["Broadcast_3044"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3037"], - "name" : "Broadcast_3038", - "op" : "Broadcast", - "outputs" : ["Broadcast_3038"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3088"], - "name" : "Broadcast_3089", - "op" : "Broadcast", - "outputs" : ["Broadcast_3089"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3081"], - "name" : "Broadcast_3082", - "op" : "Broadcast", - "outputs" : ["Broadcast_3082"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3075"], - "name" : "Broadcast_3076", - "op" : "Broadcast", - "outputs" : ["Broadcast_3076"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3125"], - "name" : "Broadcast_3126", - "op" : "Broadcast", - "outputs" : ["Broadcast_3126"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3118"], - "name" : "Broadcast_3119", - "op" : "Broadcast", - "outputs" : ["Broadcast_3119"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3112"], - "name" : "Broadcast_3113", - "op" : "Broadcast", - "outputs" : ["Broadcast_3113"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3163"], - "name" : "Broadcast_3164", - "op" : "Broadcast", - "outputs" : ["Broadcast_3164"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3156"], - "name" : "Broadcast_3157", - "op" : "Broadcast", - "outputs" : ["Broadcast_3157"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3150"], - "name" : "Broadcast_3151", - "op" : "Broadcast", - "outputs" : ["Broadcast_3151"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3200"], - "name" : "Broadcast_3201", - "op" : "Broadcast", - "outputs" : ["Broadcast_3201"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3193"], - "name" : "Broadcast_3194", - "op" : "Broadcast", - "outputs" : ["Broadcast_3194"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3187"], - "name" : "Broadcast_3188", - "op" : "Broadcast", - "outputs" : ["Broadcast_3188"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3238"], - "name" : "Broadcast_3239", - "op" : "Broadcast", - "outputs" : ["Broadcast_3239"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3231"], - "name" : "Broadcast_3232", - "op" : "Broadcast", - "outputs" : ["Broadcast_3232"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3225"], - "name" : "Broadcast_3226", - "op" : "Broadcast", - "outputs" : ["Broadcast_3226"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3275"], - "name" : "Broadcast_3276", - "op" : "Broadcast", - "outputs" : ["Broadcast_3276"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3268"], - "name" : "Broadcast_3269", - "op" : "Broadcast", - "outputs" : ["Broadcast_3269"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3262"], - "name" : "Broadcast_3263", - "op" : "Broadcast", - "outputs" : ["Broadcast_3263"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3313"], - "name" : "Broadcast_3314", - "op" : "Broadcast", - "outputs" : ["Broadcast_3314"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3306"], - "name" : "Broadcast_3307", - "op" : "Broadcast", - "outputs" : ["Broadcast_3307"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3300"], - "name" : "Broadcast_3301", - "op" : "Broadcast", - "outputs" : ["Broadcast_3301"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3350"], - "name" : "Broadcast_3351", - "op" : "Broadcast", - "outputs" : ["Broadcast_3351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3343"], - "name" : "Broadcast_3344", - "op" : "Broadcast", - "outputs" : ["Broadcast_3344"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3337"], - "name" : "Broadcast_3338", - "op" : "Broadcast", - "outputs" : ["Broadcast_3338"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3388"], - "name" : "Broadcast_3389", - "op" : "Broadcast", - "outputs" : ["Broadcast_3389"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3381"], - "name" : "Broadcast_3382", - "op" : "Broadcast", - "outputs" : ["Broadcast_3382"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3375"], - "name" : "Broadcast_3376", - "op" : "Broadcast", - "outputs" : ["Broadcast_3376"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3425"], - "name" : "Broadcast_3426", - "op" : "Broadcast", - "outputs" : ["Broadcast_3426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3418"], - "name" : "Broadcast_3419", - "op" : "Broadcast", - "outputs" : ["Broadcast_3419"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3412"], - "name" : "Broadcast_3413", - "op" : "Broadcast", - "outputs" : ["Broadcast_3413"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3463"], - "name" : "Broadcast_3464", - "op" : "Broadcast", - "outputs" : ["Broadcast_3464"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3456"], - "name" : "Broadcast_3457", - "op" : "Broadcast", - "outputs" : ["Broadcast_3457"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3450"], - "name" : "Broadcast_3451", - "op" : "Broadcast", - "outputs" : ["Broadcast_3451"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3500"], - "name" : "Broadcast_3501", - "op" : "Broadcast", - "outputs" : ["Broadcast_3501"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3493"], - "name" : "Broadcast_3494", - "op" : "Broadcast", - "outputs" : ["Broadcast_3494"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3487"], - "name" : "Broadcast_3488", - "op" : "Broadcast", - "outputs" : ["Broadcast_3488"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3538"], - "name" : "Broadcast_3539", - "op" : "Broadcast", - "outputs" : ["Broadcast_3539"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3531"], - "name" : "Broadcast_3532", - "op" : "Broadcast", - "outputs" : ["Broadcast_3532"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3525"], - "name" : "Broadcast_3526", - "op" : "Broadcast", - "outputs" : ["Broadcast_3526"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3575"], - "name" : "Broadcast_3576", - "op" : "Broadcast", - "outputs" : ["Broadcast_3576"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3568"], - "name" : "Broadcast_3569", - "op" : "Broadcast", - "outputs" : ["Broadcast_3569"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3562"], - "name" : "Broadcast_3563", - "op" : "Broadcast", - "outputs" : ["Broadcast_3563"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3613"], - "name" : "Broadcast_3614", - "op" : "Broadcast", - "outputs" : ["Broadcast_3614"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3606"], - "name" : "Broadcast_3607", - "op" : "Broadcast", - "outputs" : ["Broadcast_3607"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3600"], - "name" : "Broadcast_3601", - "op" : "Broadcast", - "outputs" : ["Broadcast_3601"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3637"], - "name" : "Broadcast_3638", - "op" : "Broadcast", - "outputs" : ["Broadcast_3638"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3688"], - "name" : "Broadcast_3689", - "op" : "Broadcast", - "outputs" : ["Broadcast_3689"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3681"], - "name" : "Broadcast_3682", - "op" : "Broadcast", - "outputs" : ["Broadcast_3682"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3675"], - "name" : "Broadcast_3676", - "op" : "Broadcast", - "outputs" : ["Broadcast_3676"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3763"], - "name" : "Broadcast_3764", - "op" : "Broadcast", - "outputs" : ["Broadcast_3764"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3756"], - "name" : "Broadcast_3757", - "op" : "Broadcast", - "outputs" : ["Broadcast_3757"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3750"], - "name" : "Broadcast_3751", - "op" : "Broadcast", - "outputs" : ["Broadcast_3751"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3838"], - "name" : "Broadcast_3839", - "op" : "Broadcast", - "outputs" : ["Broadcast_3839"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3831"], - "name" : "Broadcast_3832", - "op" : "Broadcast", - "outputs" : ["Broadcast_3832"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3825"], - "name" : "Broadcast_3826", - "op" : "Broadcast", - "outputs" : ["Broadcast_3826"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3913"], - "name" : "Broadcast_3914", - "op" : "Broadcast", - "outputs" : ["Broadcast_3914"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3906"], - "name" : "Broadcast_3907", - "op" : "Broadcast", - "outputs" : ["Broadcast_3907"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3900"], - "name" : "Broadcast_3901", - "op" : "Broadcast", - "outputs" : ["Broadcast_3901"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3988"], - "name" : "Broadcast_3989", - "op" : "Broadcast", - "outputs" : ["Broadcast_3989"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3981"], - "name" : "Broadcast_3982", - "op" : "Broadcast", - "outputs" : ["Broadcast_3982"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3975"], - "name" : "Broadcast_3976", - "op" : "Broadcast", - "outputs" : ["Broadcast_3976"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4063"], - "name" : "Broadcast_4064", - "op" : "Broadcast", - "outputs" : ["Broadcast_4064"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4056"], - "name" : "Broadcast_4057", - "op" : "Broadcast", - "outputs" : ["Broadcast_4057"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4050"], - "name" : "Broadcast_4051", - "op" : "Broadcast", - "outputs" : ["Broadcast_4051"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4138"], - "name" : "Broadcast_4139", - "op" : "Broadcast", - "outputs" : ["Broadcast_4139"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4131"], - "name" : "Broadcast_4132", - "op" : "Broadcast", - "outputs" : ["Broadcast_4132"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4125"], - "name" : "Broadcast_4126", - "op" : "Broadcast", - "outputs" : ["Broadcast_4126"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4213"], - "name" : "Broadcast_4214", - "op" : "Broadcast", - "outputs" : ["Broadcast_4214"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4206"], - "name" : "Broadcast_4207", - "op" : "Broadcast", - "outputs" : ["Broadcast_4207"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4200"], - "name" : "Broadcast_4201", - "op" : "Broadcast", - "outputs" : ["Broadcast_4201"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4288"], - "name" : "Broadcast_4289", - "op" : "Broadcast", - "outputs" : ["Broadcast_4289"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4281"], - "name" : "Broadcast_4282", - "op" : "Broadcast", - "outputs" : ["Broadcast_4282"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4275"], - "name" : "Broadcast_4276", - "op" : "Broadcast", - "outputs" : ["Broadcast_4276"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4363"], - "name" : "Broadcast_4364", - "op" : "Broadcast", - "outputs" : ["Broadcast_4364"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4356"], - "name" : "Broadcast_4357", - "op" : "Broadcast", - "outputs" : ["Broadcast_4357"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4350"], - "name" : "Broadcast_4351", - "op" : "Broadcast", - "outputs" : ["Broadcast_4351"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4438"], - "name" : "Broadcast_4439", - "op" : "Broadcast", - "outputs" : ["Broadcast_4439"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4431"], - "name" : "Broadcast_4432", - "op" : "Broadcast", - "outputs" : ["Broadcast_4432"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4425"], - "name" : "Broadcast_4426", - "op" : "Broadcast", - "outputs" : ["Broadcast_4426"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4506"], - "name" : "Broadcast_4507", - "op" : "Broadcast", - "outputs" : ["Broadcast_4507"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3650"], - "name" : "Broadcast_3651", - "op" : "Broadcast", - "outputs" : ["Broadcast_3651"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3643"], - "name" : "Broadcast_3644", - "op" : "Broadcast", - "outputs" : ["Broadcast_3644"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3725"], - "name" : "Broadcast_3726", - "op" : "Broadcast", - "outputs" : ["Broadcast_3726"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3718"], - "name" : "Broadcast_3719", - "op" : "Broadcast", - "outputs" : ["Broadcast_3719"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3712"], - "name" : "Broadcast_3713", - "op" : "Broadcast", - "outputs" : ["Broadcast_3713"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3800"], - "name" : "Broadcast_3801", - "op" : "Broadcast", - "outputs" : ["Broadcast_3801"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3793"], - "name" : "Broadcast_3794", - "op" : "Broadcast", - "outputs" : ["Broadcast_3794"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3787"], - "name" : "Broadcast_3788", - "op" : "Broadcast", - "outputs" : ["Broadcast_3788"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3875"], - "name" : "Broadcast_3876", - "op" : "Broadcast", - "outputs" : ["Broadcast_3876"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3868"], - "name" : "Broadcast_3869", - "op" : "Broadcast", - "outputs" : ["Broadcast_3869"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3862"], - "name" : "Broadcast_3863", - "op" : "Broadcast", - "outputs" : ["Broadcast_3863"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3950"], - "name" : "Broadcast_3951", - "op" : "Broadcast", - "outputs" : ["Broadcast_3951"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3943"], - "name" : "Broadcast_3944", - "op" : "Broadcast", - "outputs" : ["Broadcast_3944"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_3937"], - "name" : "Broadcast_3938", - "op" : "Broadcast", - "outputs" : ["Broadcast_3938"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4025"], - "name" : "Broadcast_4026", - "op" : "Broadcast", - "outputs" : ["Broadcast_4026"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4018"], - "name" : "Broadcast_4019", - "op" : "Broadcast", - "outputs" : ["Broadcast_4019"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4012"], - "name" : "Broadcast_4013", - "op" : "Broadcast", - "outputs" : ["Broadcast_4013"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4100"], - "name" : "Broadcast_4101", - "op" : "Broadcast", - "outputs" : ["Broadcast_4101"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4093"], - "name" : "Broadcast_4094", - "op" : "Broadcast", - "outputs" : ["Broadcast_4094"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4087"], - "name" : "Broadcast_4088", - "op" : "Broadcast", - "outputs" : ["Broadcast_4088"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4175"], - "name" : "Broadcast_4176", - "op" : "Broadcast", - "outputs" : ["Broadcast_4176"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4168"], - "name" : "Broadcast_4169", - "op" : "Broadcast", - "outputs" : ["Broadcast_4169"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4162"], - "name" : "Broadcast_4163", - "op" : "Broadcast", - "outputs" : ["Broadcast_4163"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4250"], - "name" : "Broadcast_4251", - "op" : "Broadcast", - "outputs" : ["Broadcast_4251"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4243"], - "name" : "Broadcast_4244", - "op" : "Broadcast", - "outputs" : ["Broadcast_4244"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4237"], - "name" : "Broadcast_4238", - "op" : "Broadcast", - "outputs" : ["Broadcast_4238"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4325"], - "name" : "Broadcast_4326", - "op" : "Broadcast", - "outputs" : ["Broadcast_4326"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4318"], - "name" : "Broadcast_4319", - "op" : "Broadcast", - "outputs" : ["Broadcast_4319"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4312"], - "name" : "Broadcast_4313", - "op" : "Broadcast", - "outputs" : ["Broadcast_4313"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4393"], - "name" : "Broadcast_4394", - "op" : "Broadcast", - "outputs" : ["Broadcast_4394"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4468"], - "name" : "Broadcast_4469", - "op" : "Broadcast", - "outputs" : ["Broadcast_4469"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4400"], - "name" : "Broadcast_4401", - "op" : "Broadcast", - "outputs" : ["Broadcast_4401"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4387"], - "name" : "Broadcast_4388", - "op" : "Broadcast", - "outputs" : ["Broadcast_4388"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4475"], - "name" : "Broadcast_4476", - "op" : "Broadcast", - "outputs" : ["Broadcast_4476"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4462"], - "name" : "Broadcast_4463", - "op" : "Broadcast", - "outputs" : ["Broadcast_4463"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4513"], - "name" : "Broadcast_4514", - "op" : "Broadcast", - "outputs" : ["Broadcast_4514"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4500"], - "name" : "Broadcast_4501", - "op" : "Broadcast", - "outputs" : ["Broadcast_4501"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4612"], - "name" : "Broadcast_4613", - "op" : "Broadcast", - "outputs" : ["Broadcast_4613"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4537"], - "name" : "Broadcast_4538", - "op" : "Broadcast", - "outputs" : ["Broadcast_4538"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4575"], - "name" : "Broadcast_4576", - "op" : "Broadcast", - "outputs" : ["Broadcast_4576"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4588"], - "name" : "Broadcast_4589", - "op" : "Broadcast", - "outputs" : ["Broadcast_4589"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4581"], - "name" : "Broadcast_4582", - "op" : "Broadcast", - "outputs" : ["Broadcast_4582"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4543"], - "name" : "Broadcast_4544", - "op" : "Broadcast", - "outputs" : ["Broadcast_4544"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4550"], - "name" : "Broadcast_4551", - "op" : "Broadcast", - "outputs" : ["Broadcast_4551"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4625"], - "name" : "Broadcast_4626", - "op" : "Broadcast", - "outputs" : ["Broadcast_4626"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_4618"], - "name" : "Broadcast_4619", - "op" : "Broadcast", - "outputs" : ["Broadcast_4619"], - "shape" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_1"], - "name" : "Reshape_2", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_2"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_3"], - "name" : "Reshape_4", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_4"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_5"], - "name" : "Reshape_6", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_6"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_7"], - "name" : "Reshape_8", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_8"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_9"], - "name" : "Reshape_10", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_10"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_11"], - "name" : "Reshape_12", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_12"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_13"], - "name" : "Reshape_14", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_14"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_15"], - "name" : "Reshape_16", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_16"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_17"], - "name" : "Reshape_18", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_18"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_19"], - "name" : "Reshape_20", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_20"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_21"], - "name" : "Reshape_22", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_22"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_23"], - "name" : "Reshape_24", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_24"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_25"], - "name" : "Reshape_26", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_26"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27"], - "name" : "Reshape_28", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_28"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_29"], - "name" : "Reshape_30", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_30"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_31"], - "name" : "Reshape_32", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_32"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_33"], - "name" : "Reshape_34", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_34"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_35"], - "name" : "Reshape_36", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_36"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_37"], - "name" : "Reshape_38", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_38"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_39"], - "name" : "Reshape_40", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_40"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_41"], - "name" : "Reshape_42", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_42"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_43"], - "name" : "Reshape_44", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_44"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_45"], - "name" : "Reshape_46", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_46"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_47"], - "name" : "Reshape_48", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_48"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_49"], - "name" : "Reshape_50", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_50"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_51"], - "name" : "Reshape_52", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_52"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_53"], - "name" : "Reshape_54", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_54"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_55"], - "name" : "Reshape_56", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_56"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_57"], - "name" : "Reshape_58", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_58"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_59"], - "name" : "Reshape_60", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_60"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_61"], - "name" : "Reshape_62", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_62"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_63"], - "name" : "Reshape_64", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_64"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_65"], - "name" : "Reshape_66", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_66"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_67"], - "name" : "Reshape_68", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_68"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_69"], - "name" : "Reshape_70", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_70"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_71"], - "name" : "Reshape_72", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_72"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_73"], - "name" : "Reshape_74", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_74"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_75"], - "name" : "Reshape_76", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_76"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_77"], - "name" : "Reshape_78", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_78"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_79"], - "name" : "Reshape_80", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_80"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_81"], - "name" : "Reshape_82", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_82"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_83"], - "name" : "Reshape_84", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_84"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_85"], - "name" : "Reshape_86", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_86"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_87"], - "name" : "Reshape_88", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_88"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_89"], - "name" : "Reshape_90", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_90"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_91"], - "name" : "Reshape_92", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_92"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_93"], - "name" : "Reshape_94", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_94"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_95"], - "name" : "Reshape_96", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_96"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_97"], - "name" : "Reshape_98", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_98"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_99"], - "name" : "Reshape_100", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_100"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_101"], - "name" : "Reshape_102", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_103"], - "name" : "Reshape_104", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_105"], - "name" : "Reshape_106", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_107"], - "name" : "Reshape_108", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_109"], - "name" : "Reshape_110", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_111"], - "name" : "Reshape_112", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_112"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_113"], - "name" : "Reshape_114", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_114"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_115"], - "name" : "Reshape_116", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_117"], - "name" : "Reshape_118", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_118"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_119"], - "name" : "Reshape_120", - "op" : "Reshape", - "output_shape" : [ 32, 200 ], - "outputs" : ["Reshape_120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_173", "Reshape_176" ], - "name" : "Dot_177", - "op" : "Dot", - "outputs" : ["Dot_177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Broadcast_128", "Reshape_131" ], - "name" : "Dot_132", - "op" : "Dot", - "outputs" : ["Dot_132"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_2", "Reshape_123" ], - "name" : "Dot_124", - "op" : "Dot", - "outputs" : ["Dot_124"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_4", "Reshape_212" ], - "name" : "Dot_213", - "op" : "Dot", - "outputs" : ["Dot_213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_6", "Reshape_287" ], - "name" : "Dot_288", - "op" : "Dot", - "outputs" : ["Dot_288"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_8", "Reshape_362" ], - "name" : "Dot_363", - "op" : "Dot", - "outputs" : ["Dot_363"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_10", "Reshape_437" ], - "name" : "Dot_438", - "op" : "Dot", - "outputs" : ["Dot_438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_12", "Reshape_512" ], - "name" : "Dot_513", - "op" : "Dot", - "outputs" : ["Dot_513"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_14", "Reshape_587" ], - "name" : "Dot_588", - "op" : "Dot", - "outputs" : ["Dot_588"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_16", "Reshape_662" ], - "name" : "Dot_663", - "op" : "Dot", - "outputs" : ["Dot_663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_18", "Reshape_737" ], - "name" : "Dot_738", - "op" : "Dot", - "outputs" : ["Dot_738"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_20", "Reshape_812" ], - "name" : "Dot_813", - "op" : "Dot", - "outputs" : ["Dot_813"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_22", "Reshape_887" ], - "name" : "Dot_888", - "op" : "Dot", - "outputs" : ["Dot_888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_24", "Reshape_962" ], - "name" : "Dot_963", - "op" : "Dot", - "outputs" : ["Dot_963"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_26", "Reshape_1037" ], - "name" : "Dot_1038", - "op" : "Dot", - "outputs" : ["Dot_1038"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_28", "Reshape_1112" ], - "name" : "Dot_1113", - "op" : "Dot", - "outputs" : ["Dot_1113"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_30", "Reshape_1187" ], - "name" : "Dot_1188", - "op" : "Dot", - "outputs" : ["Dot_1188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_32", "Reshape_1262" ], - "name" : "Dot_1263", - "op" : "Dot", - "outputs" : ["Dot_1263"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_34", "Reshape_1337" ], - "name" : "Dot_1338", - "op" : "Dot", - "outputs" : ["Dot_1338"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_36", "Reshape_1412" ], - "name" : "Dot_1413", - "op" : "Dot", - "outputs" : ["Dot_1413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_38", "Reshape_1487" ], - "name" : "Dot_1488", - "op" : "Dot", - "outputs" : ["Dot_1488"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_40", "Reshape_1562" ], - "name" : "Dot_1563", - "op" : "Dot", - "outputs" : ["Dot_1563"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_42", "Reshape_1637" ], - "name" : "Dot_1638", - "op" : "Dot", - "outputs" : ["Dot_1638"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_44", "Reshape_1712" ], - "name" : "Dot_1713", - "op" : "Dot", - "outputs" : ["Dot_1713"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_46", "Reshape_1787" ], - "name" : "Dot_1788", - "op" : "Dot", - "outputs" : ["Dot_1788"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_48", "Reshape_1862" ], - "name" : "Dot_1863", - "op" : "Dot", - "outputs" : ["Dot_1863"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_50", "Reshape_1937" ], - "name" : "Dot_1938", - "op" : "Dot", - "outputs" : ["Dot_1938"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_52", "Reshape_2012" ], - "name" : "Dot_2013", - "op" : "Dot", - "outputs" : ["Dot_2013"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_54", "Reshape_2087" ], - "name" : "Dot_2088", - "op" : "Dot", - "outputs" : ["Dot_2088"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_56", "Reshape_2162" ], - "name" : "Dot_2163", - "op" : "Dot", - "outputs" : ["Dot_2163"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_58", "Reshape_2237" ], - "name" : "Dot_2238", - "op" : "Dot", - "outputs" : ["Dot_2238"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_60", "Reshape_2312" ], - "name" : "Dot_2313", - "op" : "Dot", - "outputs" : ["Dot_2313"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_62", "Reshape_2387" ], - "name" : "Dot_2388", - "op" : "Dot", - "outputs" : ["Dot_2388"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_64", "Reshape_2462" ], - "name" : "Dot_2463", - "op" : "Dot", - "outputs" : ["Dot_2463"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_66", "Reshape_2537" ], - "name" : "Dot_2538", - "op" : "Dot", - "outputs" : ["Dot_2538"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_68", "Reshape_2612" ], - "name" : "Dot_2613", - "op" : "Dot", - "outputs" : ["Dot_2613"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_70", "Reshape_2687" ], - "name" : "Dot_2688", - "op" : "Dot", - "outputs" : ["Dot_2688"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_72", "Reshape_2762" ], - "name" : "Dot_2763", - "op" : "Dot", - "outputs" : ["Dot_2763"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_74", "Reshape_2837" ], - "name" : "Dot_2838", - "op" : "Dot", - "outputs" : ["Dot_2838"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_76", "Reshape_2912" ], - "name" : "Dot_2913", - "op" : "Dot", - "outputs" : ["Dot_2913"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_78", "Reshape_2987" ], - "name" : "Dot_2988", - "op" : "Dot", - "outputs" : ["Dot_2988"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_80", "Reshape_3062" ], - "name" : "Dot_3063", - "op" : "Dot", - "outputs" : ["Dot_3063"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_82", "Reshape_3137" ], - "name" : "Dot_3138", - "op" : "Dot", - "outputs" : ["Dot_3138"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_84", "Reshape_3212" ], - "name" : "Dot_3213", - "op" : "Dot", - "outputs" : ["Dot_3213"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_86", "Reshape_3287" ], - "name" : "Dot_3288", - "op" : "Dot", - "outputs" : ["Dot_3288"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_88", "Reshape_3362" ], - "name" : "Dot_3363", - "op" : "Dot", - "outputs" : ["Dot_3363"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_90", "Reshape_3437" ], - "name" : "Dot_3438", - "op" : "Dot", - "outputs" : ["Dot_3438"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_92", "Reshape_3512" ], - "name" : "Dot_3513", - "op" : "Dot", - "outputs" : ["Dot_3513"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_94", "Reshape_3587" ], - "name" : "Dot_3588", - "op" : "Dot", - "outputs" : ["Dot_3588"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_96", "Reshape_3662" ], - "name" : "Dot_3663", - "op" : "Dot", - "outputs" : ["Dot_3663"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_98", "Reshape_3737" ], - "name" : "Dot_3738", - "op" : "Dot", - "outputs" : ["Dot_3738"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_100", "Reshape_3812" ], - "name" : "Dot_3813", - "op" : "Dot", - "outputs" : ["Dot_3813"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_102", "Reshape_3887" ], - "name" : "Dot_3888", - "op" : "Dot", - "outputs" : ["Dot_3888"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_104", "Reshape_3962" ], - "name" : "Dot_3963", - "op" : "Dot", - "outputs" : ["Dot_3963"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_106", "Reshape_4037" ], - "name" : "Dot_4038", - "op" : "Dot", - "outputs" : ["Dot_4038"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_108", "Reshape_4112" ], - "name" : "Dot_4113", - "op" : "Dot", - "outputs" : ["Dot_4113"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_110", "Reshape_4187" ], - "name" : "Dot_4188", - "op" : "Dot", - "outputs" : ["Dot_4188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_112", "Reshape_4262" ], - "name" : "Dot_4263", - "op" : "Dot", - "outputs" : ["Dot_4263"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_114", "Reshape_4337" ], - "name" : "Dot_4338", - "op" : "Dot", - "outputs" : ["Dot_4338"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_116", "Reshape_4412" ], - "name" : "Dot_4413", - "op" : "Dot", - "outputs" : ["Dot_4413"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_118", "Reshape_4487" ], - "name" : "Dot_4488", - "op" : "Dot", - "outputs" : ["Dot_4488"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Reshape_120", "Reshape_4562" ], - "name" : "Dot_4563", - "op" : "Dot", - "outputs" : ["Dot_4563"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_177", "Broadcast_178" ], - "name" : "Add_179", - "op" : "Add", - "outputs" : ["Add_179"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_132", "Broadcast_133" ], - "name" : "Add_134", - "op" : "Add", - "outputs" : ["Add_134"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_124", "Broadcast_125" ], - "name" : "Add_126", - "op" : "Add", - "outputs" : ["Add_126"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_213", "Broadcast_214" ], - "name" : "Add_215", - "op" : "Add", - "outputs" : ["Add_215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_288", "Broadcast_289" ], - "name" : "Add_290", - "op" : "Add", - "outputs" : ["Add_290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_363", "Broadcast_364" ], - "name" : "Add_365", - "op" : "Add", - "outputs" : ["Add_365"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_438", "Broadcast_439" ], - "name" : "Add_440", - "op" : "Add", - "outputs" : ["Add_440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_513", "Broadcast_514" ], - "name" : "Add_515", - "op" : "Add", - "outputs" : ["Add_515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_588", "Broadcast_589" ], - "name" : "Add_590", - "op" : "Add", - "outputs" : ["Add_590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_663", "Broadcast_664" ], - "name" : "Add_665", - "op" : "Add", - "outputs" : ["Add_665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_738", "Broadcast_739" ], - "name" : "Add_740", - "op" : "Add", - "outputs" : ["Add_740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_813", "Broadcast_814" ], - "name" : "Add_815", - "op" : "Add", - "outputs" : ["Add_815"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_888", "Broadcast_889" ], - "name" : "Add_890", - "op" : "Add", - "outputs" : ["Add_890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_963", "Broadcast_964" ], - "name" : "Add_965", - "op" : "Add", - "outputs" : ["Add_965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1038", "Broadcast_1039" ], - "name" : "Add_1040", - "op" : "Add", - "outputs" : ["Add_1040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1113", "Broadcast_1114" ], - "name" : "Add_1115", - "op" : "Add", - "outputs" : ["Add_1115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1188", "Broadcast_1189" ], - "name" : "Add_1190", - "op" : "Add", - "outputs" : ["Add_1190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1263", "Broadcast_1264" ], - "name" : "Add_1265", - "op" : "Add", - "outputs" : ["Add_1265"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1338", "Broadcast_1339" ], - "name" : "Add_1340", - "op" : "Add", - "outputs" : ["Add_1340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1413", "Broadcast_1414" ], - "name" : "Add_1415", - "op" : "Add", - "outputs" : ["Add_1415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1488", "Broadcast_1489" ], - "name" : "Add_1490", - "op" : "Add", - "outputs" : ["Add_1490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1563", "Broadcast_1564" ], - "name" : "Add_1565", - "op" : "Add", - "outputs" : ["Add_1565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1638", "Broadcast_1639" ], - "name" : "Add_1640", - "op" : "Add", - "outputs" : ["Add_1640"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1713", "Broadcast_1714" ], - "name" : "Add_1715", - "op" : "Add", - "outputs" : ["Add_1715"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1788", "Broadcast_1789" ], - "name" : "Add_1790", - "op" : "Add", - "outputs" : ["Add_1790"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1863", "Broadcast_1864" ], - "name" : "Add_1865", - "op" : "Add", - "outputs" : ["Add_1865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1938", "Broadcast_1939" ], - "name" : "Add_1940", - "op" : "Add", - "outputs" : ["Add_1940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2013", "Broadcast_2014" ], - "name" : "Add_2015", - "op" : "Add", - "outputs" : ["Add_2015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2088", "Broadcast_2089" ], - "name" : "Add_2090", - "op" : "Add", - "outputs" : ["Add_2090"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2163", "Broadcast_2164" ], - "name" : "Add_2165", - "op" : "Add", - "outputs" : ["Add_2165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2238", "Broadcast_2239" ], - "name" : "Add_2240", - "op" : "Add", - "outputs" : ["Add_2240"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2313", "Broadcast_2314" ], - "name" : "Add_2315", - "op" : "Add", - "outputs" : ["Add_2315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2388", "Broadcast_2389" ], - "name" : "Add_2390", - "op" : "Add", - "outputs" : ["Add_2390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2463", "Broadcast_2464" ], - "name" : "Add_2465", - "op" : "Add", - "outputs" : ["Add_2465"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2538", "Broadcast_2539" ], - "name" : "Add_2540", - "op" : "Add", - "outputs" : ["Add_2540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2613", "Broadcast_2614" ], - "name" : "Add_2615", - "op" : "Add", - "outputs" : ["Add_2615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2688", "Broadcast_2689" ], - "name" : "Add_2690", - "op" : "Add", - "outputs" : ["Add_2690"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2763", "Broadcast_2764" ], - "name" : "Add_2765", - "op" : "Add", - "outputs" : ["Add_2765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2838", "Broadcast_2839" ], - "name" : "Add_2840", - "op" : "Add", - "outputs" : ["Add_2840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2913", "Broadcast_2914" ], - "name" : "Add_2915", - "op" : "Add", - "outputs" : ["Add_2915"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2988", "Broadcast_2989" ], - "name" : "Add_2990", - "op" : "Add", - "outputs" : ["Add_2990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3063", "Broadcast_3064" ], - "name" : "Add_3065", - "op" : "Add", - "outputs" : ["Add_3065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3138", "Broadcast_3139" ], - "name" : "Add_3140", - "op" : "Add", - "outputs" : ["Add_3140"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3213", "Broadcast_3214" ], - "name" : "Add_3215", - "op" : "Add", - "outputs" : ["Add_3215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3288", "Broadcast_3289" ], - "name" : "Add_3290", - "op" : "Add", - "outputs" : ["Add_3290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3363", "Broadcast_3364" ], - "name" : "Add_3365", - "op" : "Add", - "outputs" : ["Add_3365"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3438", "Broadcast_3439" ], - "name" : "Add_3440", - "op" : "Add", - "outputs" : ["Add_3440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3513", "Broadcast_3514" ], - "name" : "Add_3515", - "op" : "Add", - "outputs" : ["Add_3515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3588", "Broadcast_3589" ], - "name" : "Add_3590", - "op" : "Add", - "outputs" : ["Add_3590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3663", "Broadcast_3664" ], - "name" : "Add_3665", - "op" : "Add", - "outputs" : ["Add_3665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3738", "Broadcast_3739" ], - "name" : "Add_3740", - "op" : "Add", - "outputs" : ["Add_3740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3813", "Broadcast_3814" ], - "name" : "Add_3815", - "op" : "Add", - "outputs" : ["Add_3815"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3888", "Broadcast_3889" ], - "name" : "Add_3890", - "op" : "Add", - "outputs" : ["Add_3890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3963", "Broadcast_3964" ], - "name" : "Add_3965", - "op" : "Add", - "outputs" : ["Add_3965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4038", "Broadcast_4039" ], - "name" : "Add_4040", - "op" : "Add", - "outputs" : ["Add_4040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4113", "Broadcast_4114" ], - "name" : "Add_4115", - "op" : "Add", - "outputs" : ["Add_4115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4188", "Broadcast_4189" ], - "name" : "Add_4190", - "op" : "Add", - "outputs" : ["Add_4190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4263", "Broadcast_4264" ], - "name" : "Add_4265", - "op" : "Add", - "outputs" : ["Add_4265"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4338", "Broadcast_4339" ], - "name" : "Add_4340", - "op" : "Add", - "outputs" : ["Add_4340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4413", "Broadcast_4414" ], - "name" : "Add_4415", - "op" : "Add", - "outputs" : ["Add_4415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4488", "Broadcast_4489" ], - "name" : "Add_4490", - "op" : "Add", - "outputs" : ["Add_4490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4563", "Broadcast_4564" ], - "name" : "Add_4565", - "op" : "Add", - "outputs" : ["Add_4565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_126", "Add_134" ], - "name" : "Add_135", - "op" : "Add", - "outputs" : ["Add_135"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_135"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_136", - "op" : "Slice", - "outputs" : ["Slice_136"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_135"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_137", - "op" : "Slice", - "outputs" : ["Slice_137"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_135"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_138", - "op" : "Slice", - "outputs" : ["Slice_138"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_135"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_139", - "op" : "Slice", - "outputs" : ["Slice_139"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_136"], - "name" : "Negative_157", - "op" : "Negative", - "outputs" : ["Negative_157"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_137"], - "name" : "Negative_148", - "op" : "Negative", - "outputs" : ["Negative_148"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_138"], - "name" : "Tanh_161", - "op" : "Tanh", - "outputs" : ["Tanh_161"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_139"], - "name" : "Negative_142", - "op" : "Negative", - "outputs" : ["Negative_142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_157"], - "name" : "Exp_158", - "op" : "Exp", - "outputs" : ["Exp_158"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_148"], - "name" : "Exp_149", - "op" : "Exp", - "outputs" : ["Exp_149"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_142"], - "name" : "Exp_143", - "op" : "Exp", - "outputs" : ["Exp_143"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_156", "Exp_158" ], - "name" : "Add_159", - "op" : "Add", - "outputs" : ["Add_159"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_147", "Exp_149" ], - "name" : "Add_150", - "op" : "Add", - "outputs" : ["Add_150"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_141", "Exp_143" ], - "name" : "Add_144", - "op" : "Add", - "outputs" : ["Add_144"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_156", "Add_159" ], - "name" : "Divide_160", - "op" : "Divide", - "outputs" : ["Divide_160"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_147", "Add_150" ], - "name" : "Divide_151", - "op" : "Divide", - "outputs" : ["Divide_151"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_141", "Add_144" ], - "name" : "Divide_145", - "op" : "Divide", - "outputs" : ["Divide_145"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_160", "Tanh_161" ], - "name" : "Multiply_162", - "op" : "Multiply", - "outputs" : ["Multiply_162"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_151", "Broadcast_153" ], - "name" : "Multiply_154", - "op" : "Multiply", - "outputs" : ["Multiply_154"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_154", "Multiply_162" ], - "name" : "Add_163", - "op" : "Add", - "outputs" : ["Add_163"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_163"], - "name" : "Tanh_164", - "op" : "Tanh", - "outputs" : ["Tanh_164"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_145", "Tanh_164" ], - "name" : "Multiply_165", - "op" : "Multiply", - "outputs" : ["Multiply_165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_165", "Reshape_168" ], - "name" : "Dot_169", - "op" : "Dot", - "outputs" : ["Dot_169"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_165", "Reshape_216" ], - "name" : "Dot_217", - "op" : "Dot", - "outputs" : ["Dot_217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_169", "Broadcast_170" ], - "name" : "Add_171", - "op" : "Add", - "outputs" : ["Add_171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_217", "Broadcast_218" ], - "name" : "Add_219", - "op" : "Add", - "outputs" : ["Add_219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_171", "Add_179" ], - "name" : "Add_180", - "op" : "Add", - "outputs" : ["Add_180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_215", "Add_219" ], - "name" : "Add_220", - "op" : "Add", - "outputs" : ["Add_220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_181", - "op" : "Slice", - "outputs" : ["Slice_181"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_182", - "op" : "Slice", - "outputs" : ["Slice_182"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_183", - "op" : "Slice", - "outputs" : ["Slice_183"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_180"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_184", - "op" : "Slice", - "outputs" : ["Slice_184"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_220"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_221", - "op" : "Slice", - "outputs" : ["Slice_221"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_220"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_222", - "op" : "Slice", - "outputs" : ["Slice_222"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_220"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_223", - "op" : "Slice", - "outputs" : ["Slice_223"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_220"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_224", - "op" : "Slice", - "outputs" : ["Slice_224"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_181"], - "name" : "Negative_202", - "op" : "Negative", - "outputs" : ["Negative_202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_182"], - "name" : "Negative_193", - "op" : "Negative", - "outputs" : ["Negative_193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_183"], - "name" : "Tanh_206", - "op" : "Tanh", - "outputs" : ["Tanh_206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_184"], - "name" : "Negative_187", - "op" : "Negative", - "outputs" : ["Negative_187"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_221"], - "name" : "Negative_240", - "op" : "Negative", - "outputs" : ["Negative_240"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_222"], - "name" : "Negative_233", - "op" : "Negative", - "outputs" : ["Negative_233"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_223"], - "name" : "Tanh_244", - "op" : "Tanh", - "outputs" : ["Tanh_244"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_224"], - "name" : "Negative_227", - "op" : "Negative", - "outputs" : ["Negative_227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_202"], - "name" : "Exp_203", - "op" : "Exp", - "outputs" : ["Exp_203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_193"], - "name" : "Exp_194", - "op" : "Exp", - "outputs" : ["Exp_194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_187"], - "name" : "Exp_188", - "op" : "Exp", - "outputs" : ["Exp_188"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_240"], - "name" : "Exp_241", - "op" : "Exp", - "outputs" : ["Exp_241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_233"], - "name" : "Exp_234", - "op" : "Exp", - "outputs" : ["Exp_234"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_227"], - "name" : "Exp_228", - "op" : "Exp", - "outputs" : ["Exp_228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_201", "Exp_203" ], - "name" : "Add_204", - "op" : "Add", - "outputs" : ["Add_204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_192", "Exp_194" ], - "name" : "Add_195", - "op" : "Add", - "outputs" : ["Add_195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_186", "Exp_188" ], - "name" : "Add_189", - "op" : "Add", - "outputs" : ["Add_189"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_239", "Exp_241" ], - "name" : "Add_242", - "op" : "Add", - "outputs" : ["Add_242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_232", "Exp_234" ], - "name" : "Add_235", - "op" : "Add", - "outputs" : ["Add_235"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_226", "Exp_228" ], - "name" : "Add_229", - "op" : "Add", - "outputs" : ["Add_229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_201", "Add_204" ], - "name" : "Divide_205", - "op" : "Divide", - "outputs" : ["Divide_205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_192", "Add_195" ], - "name" : "Divide_196", - "op" : "Divide", - "outputs" : ["Divide_196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_186", "Add_189" ], - "name" : "Divide_190", - "op" : "Divide", - "outputs" : ["Divide_190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_239", "Add_242" ], - "name" : "Divide_243", - "op" : "Divide", - "outputs" : ["Divide_243"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_232", "Add_235" ], - "name" : "Divide_236", - "op" : "Divide", - "outputs" : ["Divide_236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_226", "Add_229" ], - "name" : "Divide_230", - "op" : "Divide", - "outputs" : ["Divide_230"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_205", "Tanh_206" ], - "name" : "Multiply_207", - "op" : "Multiply", - "outputs" : ["Multiply_207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_196", "Broadcast_198" ], - "name" : "Multiply_199", - "op" : "Multiply", - "outputs" : ["Multiply_199"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_243", "Tanh_244" ], - "name" : "Multiply_245", - "op" : "Multiply", - "outputs" : ["Multiply_245"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_236", "Add_163" ], - "name" : "Multiply_237", - "op" : "Multiply", - "outputs" : ["Multiply_237"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_199", "Multiply_207" ], - "name" : "Add_208", - "op" : "Add", - "outputs" : ["Add_208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_237", "Multiply_245" ], - "name" : "Add_246", - "op" : "Add", - "outputs" : ["Add_246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_208"], - "name" : "Tanh_209", - "op" : "Tanh", - "outputs" : ["Tanh_209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_246"], - "name" : "Tanh_247", - "op" : "Tanh", - "outputs" : ["Tanh_247"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_190", "Tanh_209" ], - "name" : "Multiply_210", - "op" : "Multiply", - "outputs" : ["Multiply_210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_230", "Tanh_247" ], - "name" : "Multiply_248", - "op" : "Multiply", - "outputs" : ["Multiply_248"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_210"], - "name" : "Reshape_211", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_210", "Reshape_253" ], - "name" : "Dot_254", - "op" : "Dot", - "outputs" : ["Dot_254"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_248", "Reshape_249" ], - "name" : "Dot_250", - "op" : "Dot", - "outputs" : ["Dot_250"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_248", "Reshape_291" ], - "name" : "Dot_292", - "op" : "Dot", - "outputs" : ["Dot_292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_254", "Broadcast_255" ], - "name" : "Add_256", - "op" : "Add", - "outputs" : ["Add_256"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_250", "Broadcast_251" ], - "name" : "Add_252", - "op" : "Add", - "outputs" : ["Add_252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_292", "Broadcast_293" ], - "name" : "Add_294", - "op" : "Add", - "outputs" : ["Add_294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_252", "Add_256" ], - "name" : "Add_257", - "op" : "Add", - "outputs" : ["Add_257"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_290", "Add_294" ], - "name" : "Add_295", - "op" : "Add", - "outputs" : ["Add_295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_257"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_258", - "op" : "Slice", - "outputs" : ["Slice_258"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_257"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_259", - "op" : "Slice", - "outputs" : ["Slice_259"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_257"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_260", - "op" : "Slice", - "outputs" : ["Slice_260"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_257"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_261", - "op" : "Slice", - "outputs" : ["Slice_261"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_295"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_296", - "op" : "Slice", - "outputs" : ["Slice_296"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_295"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_297", - "op" : "Slice", - "outputs" : ["Slice_297"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_295"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_298", - "op" : "Slice", - "outputs" : ["Slice_298"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_295"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_299", - "op" : "Slice", - "outputs" : ["Slice_299"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_258"], - "name" : "Negative_277", - "op" : "Negative", - "outputs" : ["Negative_277"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_259"], - "name" : "Negative_270", - "op" : "Negative", - "outputs" : ["Negative_270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_260"], - "name" : "Tanh_281", - "op" : "Tanh", - "outputs" : ["Tanh_281"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_261"], - "name" : "Negative_264", - "op" : "Negative", - "outputs" : ["Negative_264"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_296"], - "name" : "Negative_315", - "op" : "Negative", - "outputs" : ["Negative_315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_297"], - "name" : "Negative_308", - "op" : "Negative", - "outputs" : ["Negative_308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_298"], - "name" : "Tanh_319", - "op" : "Tanh", - "outputs" : ["Tanh_319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_299"], - "name" : "Negative_302", - "op" : "Negative", - "outputs" : ["Negative_302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_277"], - "name" : "Exp_278", - "op" : "Exp", - "outputs" : ["Exp_278"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_270"], - "name" : "Exp_271", - "op" : "Exp", - "outputs" : ["Exp_271"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_264"], - "name" : "Exp_265", - "op" : "Exp", - "outputs" : ["Exp_265"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_315"], - "name" : "Exp_316", - "op" : "Exp", - "outputs" : ["Exp_316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_308"], - "name" : "Exp_309", - "op" : "Exp", - "outputs" : ["Exp_309"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_302"], - "name" : "Exp_303", - "op" : "Exp", - "outputs" : ["Exp_303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_276", "Exp_278" ], - "name" : "Add_279", - "op" : "Add", - "outputs" : ["Add_279"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_269", "Exp_271" ], - "name" : "Add_272", - "op" : "Add", - "outputs" : ["Add_272"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_263", "Exp_265" ], - "name" : "Add_266", - "op" : "Add", - "outputs" : ["Add_266"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_314", "Exp_316" ], - "name" : "Add_317", - "op" : "Add", - "outputs" : ["Add_317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_307", "Exp_309" ], - "name" : "Add_310", - "op" : "Add", - "outputs" : ["Add_310"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_301", "Exp_303" ], - "name" : "Add_304", - "op" : "Add", - "outputs" : ["Add_304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_276", "Add_279" ], - "name" : "Divide_280", - "op" : "Divide", - "outputs" : ["Divide_280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_269", "Add_272" ], - "name" : "Divide_273", - "op" : "Divide", - "outputs" : ["Divide_273"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_263", "Add_266" ], - "name" : "Divide_267", - "op" : "Divide", - "outputs" : ["Divide_267"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_314", "Add_317" ], - "name" : "Divide_318", - "op" : "Divide", - "outputs" : ["Divide_318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_307", "Add_310" ], - "name" : "Divide_311", - "op" : "Divide", - "outputs" : ["Divide_311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_301", "Add_304" ], - "name" : "Divide_305", - "op" : "Divide", - "outputs" : ["Divide_305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_280", "Tanh_281" ], - "name" : "Multiply_282", - "op" : "Multiply", - "outputs" : ["Multiply_282"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_273", "Add_208" ], - "name" : "Multiply_274", - "op" : "Multiply", - "outputs" : ["Multiply_274"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_318", "Tanh_319" ], - "name" : "Multiply_320", - "op" : "Multiply", - "outputs" : ["Multiply_320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_311", "Add_246" ], - "name" : "Multiply_312", - "op" : "Multiply", - "outputs" : ["Multiply_312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_274", "Multiply_282" ], - "name" : "Add_283", - "op" : "Add", - "outputs" : ["Add_283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_312", "Multiply_320" ], - "name" : "Add_321", - "op" : "Add", - "outputs" : ["Add_321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_283"], - "name" : "Tanh_284", - "op" : "Tanh", - "outputs" : ["Tanh_284"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_321"], - "name" : "Tanh_322", - "op" : "Tanh", - "outputs" : ["Tanh_322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_267", "Tanh_284" ], - "name" : "Multiply_285", - "op" : "Multiply", - "outputs" : ["Multiply_285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_305", "Tanh_322" ], - "name" : "Multiply_323", - "op" : "Multiply", - "outputs" : ["Multiply_323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_285"], - "name" : "Reshape_286", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_285", "Reshape_328" ], - "name" : "Dot_329", - "op" : "Dot", - "outputs" : ["Dot_329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_323", "Reshape_324" ], - "name" : "Dot_325", - "op" : "Dot", - "outputs" : ["Dot_325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_323", "Reshape_366" ], - "name" : "Dot_367", - "op" : "Dot", - "outputs" : ["Dot_367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_329", "Broadcast_330" ], - "name" : "Add_331", - "op" : "Add", - "outputs" : ["Add_331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_325", "Broadcast_326" ], - "name" : "Add_327", - "op" : "Add", - "outputs" : ["Add_327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_367", "Broadcast_368" ], - "name" : "Add_369", - "op" : "Add", - "outputs" : ["Add_369"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_327", "Add_331" ], - "name" : "Add_332", - "op" : "Add", - "outputs" : ["Add_332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_365", "Add_369" ], - "name" : "Add_370", - "op" : "Add", - "outputs" : ["Add_370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_332"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_333", - "op" : "Slice", - "outputs" : ["Slice_333"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_332"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_334", - "op" : "Slice", - "outputs" : ["Slice_334"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_332"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_335", - "op" : "Slice", - "outputs" : ["Slice_335"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_332"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_336", - "op" : "Slice", - "outputs" : ["Slice_336"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_370"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_371", - "op" : "Slice", - "outputs" : ["Slice_371"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_370"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_372", - "op" : "Slice", - "outputs" : ["Slice_372"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_370"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_373", - "op" : "Slice", - "outputs" : ["Slice_373"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_370"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_374", - "op" : "Slice", - "outputs" : ["Slice_374"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_333"], - "name" : "Negative_352", - "op" : "Negative", - "outputs" : ["Negative_352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_334"], - "name" : "Negative_345", - "op" : "Negative", - "outputs" : ["Negative_345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_335"], - "name" : "Tanh_356", - "op" : "Tanh", - "outputs" : ["Tanh_356"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_336"], - "name" : "Negative_339", - "op" : "Negative", - "outputs" : ["Negative_339"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_371"], - "name" : "Negative_390", - "op" : "Negative", - "outputs" : ["Negative_390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_372"], - "name" : "Negative_383", - "op" : "Negative", - "outputs" : ["Negative_383"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_373"], - "name" : "Tanh_394", - "op" : "Tanh", - "outputs" : ["Tanh_394"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_374"], - "name" : "Negative_377", - "op" : "Negative", - "outputs" : ["Negative_377"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_352"], - "name" : "Exp_353", - "op" : "Exp", - "outputs" : ["Exp_353"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_345"], - "name" : "Exp_346", - "op" : "Exp", - "outputs" : ["Exp_346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_339"], - "name" : "Exp_340", - "op" : "Exp", - "outputs" : ["Exp_340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_390"], - "name" : "Exp_391", - "op" : "Exp", - "outputs" : ["Exp_391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_383"], - "name" : "Exp_384", - "op" : "Exp", - "outputs" : ["Exp_384"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_377"], - "name" : "Exp_378", - "op" : "Exp", - "outputs" : ["Exp_378"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_351", "Exp_353" ], - "name" : "Add_354", - "op" : "Add", - "outputs" : ["Add_354"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_344", "Exp_346" ], - "name" : "Add_347", - "op" : "Add", - "outputs" : ["Add_347"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_338", "Exp_340" ], - "name" : "Add_341", - "op" : "Add", - "outputs" : ["Add_341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_389", "Exp_391" ], - "name" : "Add_392", - "op" : "Add", - "outputs" : ["Add_392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_382", "Exp_384" ], - "name" : "Add_385", - "op" : "Add", - "outputs" : ["Add_385"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_376", "Exp_378" ], - "name" : "Add_379", - "op" : "Add", - "outputs" : ["Add_379"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_351", "Add_354" ], - "name" : "Divide_355", - "op" : "Divide", - "outputs" : ["Divide_355"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_344", "Add_347" ], - "name" : "Divide_348", - "op" : "Divide", - "outputs" : ["Divide_348"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_338", "Add_341" ], - "name" : "Divide_342", - "op" : "Divide", - "outputs" : ["Divide_342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_389", "Add_392" ], - "name" : "Divide_393", - "op" : "Divide", - "outputs" : ["Divide_393"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_382", "Add_385" ], - "name" : "Divide_386", - "op" : "Divide", - "outputs" : ["Divide_386"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_376", "Add_379" ], - "name" : "Divide_380", - "op" : "Divide", - "outputs" : ["Divide_380"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_355", "Tanh_356" ], - "name" : "Multiply_357", - "op" : "Multiply", - "outputs" : ["Multiply_357"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_348", "Add_283" ], - "name" : "Multiply_349", - "op" : "Multiply", - "outputs" : ["Multiply_349"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_393", "Tanh_394" ], - "name" : "Multiply_395", - "op" : "Multiply", - "outputs" : ["Multiply_395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_386", "Add_321" ], - "name" : "Multiply_387", - "op" : "Multiply", - "outputs" : ["Multiply_387"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_349", "Multiply_357" ], - "name" : "Add_358", - "op" : "Add", - "outputs" : ["Add_358"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_387", "Multiply_395" ], - "name" : "Add_396", - "op" : "Add", - "outputs" : ["Add_396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_358"], - "name" : "Tanh_359", - "op" : "Tanh", - "outputs" : ["Tanh_359"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_396"], - "name" : "Tanh_397", - "op" : "Tanh", - "outputs" : ["Tanh_397"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_342", "Tanh_359" ], - "name" : "Multiply_360", - "op" : "Multiply", - "outputs" : ["Multiply_360"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_380", "Tanh_397" ], - "name" : "Multiply_398", - "op" : "Multiply", - "outputs" : ["Multiply_398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_360"], - "name" : "Reshape_361", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_361"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_360", "Reshape_403" ], - "name" : "Dot_404", - "op" : "Dot", - "outputs" : ["Dot_404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_398", "Reshape_399" ], - "name" : "Dot_400", - "op" : "Dot", - "outputs" : ["Dot_400"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_398", "Reshape_441" ], - "name" : "Dot_442", - "op" : "Dot", - "outputs" : ["Dot_442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_404", "Broadcast_405" ], - "name" : "Add_406", - "op" : "Add", - "outputs" : ["Add_406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_400", "Broadcast_401" ], - "name" : "Add_402", - "op" : "Add", - "outputs" : ["Add_402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_442", "Broadcast_443" ], - "name" : "Add_444", - "op" : "Add", - "outputs" : ["Add_444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_402", "Add_406" ], - "name" : "Add_407", - "op" : "Add", - "outputs" : ["Add_407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_440", "Add_444" ], - "name" : "Add_445", - "op" : "Add", - "outputs" : ["Add_445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_407"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_408", - "op" : "Slice", - "outputs" : ["Slice_408"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_407"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_409", - "op" : "Slice", - "outputs" : ["Slice_409"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_407"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_410", - "op" : "Slice", - "outputs" : ["Slice_410"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_407"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_411", - "op" : "Slice", - "outputs" : ["Slice_411"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_445"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_446", - "op" : "Slice", - "outputs" : ["Slice_446"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_445"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_447", - "op" : "Slice", - "outputs" : ["Slice_447"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_445"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_448", - "op" : "Slice", - "outputs" : ["Slice_448"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_445"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_449", - "op" : "Slice", - "outputs" : ["Slice_449"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_408"], - "name" : "Negative_427", - "op" : "Negative", - "outputs" : ["Negative_427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_409"], - "name" : "Negative_420", - "op" : "Negative", - "outputs" : ["Negative_420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_410"], - "name" : "Tanh_431", - "op" : "Tanh", - "outputs" : ["Tanh_431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_411"], - "name" : "Negative_414", - "op" : "Negative", - "outputs" : ["Negative_414"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_446"], - "name" : "Negative_465", - "op" : "Negative", - "outputs" : ["Negative_465"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_447"], - "name" : "Negative_458", - "op" : "Negative", - "outputs" : ["Negative_458"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_448"], - "name" : "Tanh_469", - "op" : "Tanh", - "outputs" : ["Tanh_469"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_449"], - "name" : "Negative_452", - "op" : "Negative", - "outputs" : ["Negative_452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_427"], - "name" : "Exp_428", - "op" : "Exp", - "outputs" : ["Exp_428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_420"], - "name" : "Exp_421", - "op" : "Exp", - "outputs" : ["Exp_421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_414"], - "name" : "Exp_415", - "op" : "Exp", - "outputs" : ["Exp_415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_465"], - "name" : "Exp_466", - "op" : "Exp", - "outputs" : ["Exp_466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_458"], - "name" : "Exp_459", - "op" : "Exp", - "outputs" : ["Exp_459"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_452"], - "name" : "Exp_453", - "op" : "Exp", - "outputs" : ["Exp_453"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_426", "Exp_428" ], - "name" : "Add_429", - "op" : "Add", - "outputs" : ["Add_429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_419", "Exp_421" ], - "name" : "Add_422", - "op" : "Add", - "outputs" : ["Add_422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_413", "Exp_415" ], - "name" : "Add_416", - "op" : "Add", - "outputs" : ["Add_416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_464", "Exp_466" ], - "name" : "Add_467", - "op" : "Add", - "outputs" : ["Add_467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_457", "Exp_459" ], - "name" : "Add_460", - "op" : "Add", - "outputs" : ["Add_460"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_451", "Exp_453" ], - "name" : "Add_454", - "op" : "Add", - "outputs" : ["Add_454"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_426", "Add_429" ], - "name" : "Divide_430", - "op" : "Divide", - "outputs" : ["Divide_430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_419", "Add_422" ], - "name" : "Divide_423", - "op" : "Divide", - "outputs" : ["Divide_423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_413", "Add_416" ], - "name" : "Divide_417", - "op" : "Divide", - "outputs" : ["Divide_417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_464", "Add_467" ], - "name" : "Divide_468", - "op" : "Divide", - "outputs" : ["Divide_468"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_457", "Add_460" ], - "name" : "Divide_461", - "op" : "Divide", - "outputs" : ["Divide_461"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_451", "Add_454" ], - "name" : "Divide_455", - "op" : "Divide", - "outputs" : ["Divide_455"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_430", "Tanh_431" ], - "name" : "Multiply_432", - "op" : "Multiply", - "outputs" : ["Multiply_432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_423", "Add_358" ], - "name" : "Multiply_424", - "op" : "Multiply", - "outputs" : ["Multiply_424"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_468", "Tanh_469" ], - "name" : "Multiply_470", - "op" : "Multiply", - "outputs" : ["Multiply_470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_461", "Add_396" ], - "name" : "Multiply_462", - "op" : "Multiply", - "outputs" : ["Multiply_462"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_424", "Multiply_432" ], - "name" : "Add_433", - "op" : "Add", - "outputs" : ["Add_433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_462", "Multiply_470" ], - "name" : "Add_471", - "op" : "Add", - "outputs" : ["Add_471"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_433"], - "name" : "Tanh_434", - "op" : "Tanh", - "outputs" : ["Tanh_434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_471"], - "name" : "Tanh_472", - "op" : "Tanh", - "outputs" : ["Tanh_472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_417", "Tanh_434" ], - "name" : "Multiply_435", - "op" : "Multiply", - "outputs" : ["Multiply_435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_455", "Tanh_472" ], - "name" : "Multiply_473", - "op" : "Multiply", - "outputs" : ["Multiply_473"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_435"], - "name" : "Reshape_436", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_435", "Reshape_478" ], - "name" : "Dot_479", - "op" : "Dot", - "outputs" : ["Dot_479"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_473", "Reshape_474" ], - "name" : "Dot_475", - "op" : "Dot", - "outputs" : ["Dot_475"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_473", "Reshape_516" ], - "name" : "Dot_517", - "op" : "Dot", - "outputs" : ["Dot_517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_479", "Broadcast_480" ], - "name" : "Add_481", - "op" : "Add", - "outputs" : ["Add_481"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_475", "Broadcast_476" ], - "name" : "Add_477", - "op" : "Add", - "outputs" : ["Add_477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_517", "Broadcast_518" ], - "name" : "Add_519", - "op" : "Add", - "outputs" : ["Add_519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_477", "Add_481" ], - "name" : "Add_482", - "op" : "Add", - "outputs" : ["Add_482"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_515", "Add_519" ], - "name" : "Add_520", - "op" : "Add", - "outputs" : ["Add_520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_482"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_483", - "op" : "Slice", - "outputs" : ["Slice_483"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_482"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_484", - "op" : "Slice", - "outputs" : ["Slice_484"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_482"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_485", - "op" : "Slice", - "outputs" : ["Slice_485"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_482"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_486", - "op" : "Slice", - "outputs" : ["Slice_486"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_520"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_521", - "op" : "Slice", - "outputs" : ["Slice_521"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_520"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_522", - "op" : "Slice", - "outputs" : ["Slice_522"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_520"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_523", - "op" : "Slice", - "outputs" : ["Slice_523"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_520"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_524", - "op" : "Slice", - "outputs" : ["Slice_524"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_483"], - "name" : "Negative_502", - "op" : "Negative", - "outputs" : ["Negative_502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_484"], - "name" : "Negative_495", - "op" : "Negative", - "outputs" : ["Negative_495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_485"], - "name" : "Tanh_506", - "op" : "Tanh", - "outputs" : ["Tanh_506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_486"], - "name" : "Negative_489", - "op" : "Negative", - "outputs" : ["Negative_489"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_521"], - "name" : "Negative_540", - "op" : "Negative", - "outputs" : ["Negative_540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_522"], - "name" : "Negative_533", - "op" : "Negative", - "outputs" : ["Negative_533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_523"], - "name" : "Tanh_544", - "op" : "Tanh", - "outputs" : ["Tanh_544"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_524"], - "name" : "Negative_527", - "op" : "Negative", - "outputs" : ["Negative_527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_502"], - "name" : "Exp_503", - "op" : "Exp", - "outputs" : ["Exp_503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_495"], - "name" : "Exp_496", - "op" : "Exp", - "outputs" : ["Exp_496"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_489"], - "name" : "Exp_490", - "op" : "Exp", - "outputs" : ["Exp_490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_540"], - "name" : "Exp_541", - "op" : "Exp", - "outputs" : ["Exp_541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_533"], - "name" : "Exp_534", - "op" : "Exp", - "outputs" : ["Exp_534"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_527"], - "name" : "Exp_528", - "op" : "Exp", - "outputs" : ["Exp_528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_501", "Exp_503" ], - "name" : "Add_504", - "op" : "Add", - "outputs" : ["Add_504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_494", "Exp_496" ], - "name" : "Add_497", - "op" : "Add", - "outputs" : ["Add_497"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_488", "Exp_490" ], - "name" : "Add_491", - "op" : "Add", - "outputs" : ["Add_491"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_539", "Exp_541" ], - "name" : "Add_542", - "op" : "Add", - "outputs" : ["Add_542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_532", "Exp_534" ], - "name" : "Add_535", - "op" : "Add", - "outputs" : ["Add_535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_526", "Exp_528" ], - "name" : "Add_529", - "op" : "Add", - "outputs" : ["Add_529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_501", "Add_504" ], - "name" : "Divide_505", - "op" : "Divide", - "outputs" : ["Divide_505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_494", "Add_497" ], - "name" : "Divide_498", - "op" : "Divide", - "outputs" : ["Divide_498"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_488", "Add_491" ], - "name" : "Divide_492", - "op" : "Divide", - "outputs" : ["Divide_492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_539", "Add_542" ], - "name" : "Divide_543", - "op" : "Divide", - "outputs" : ["Divide_543"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_532", "Add_535" ], - "name" : "Divide_536", - "op" : "Divide", - "outputs" : ["Divide_536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_526", "Add_529" ], - "name" : "Divide_530", - "op" : "Divide", - "outputs" : ["Divide_530"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_505", "Tanh_506" ], - "name" : "Multiply_507", - "op" : "Multiply", - "outputs" : ["Multiply_507"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_498", "Add_433" ], - "name" : "Multiply_499", - "op" : "Multiply", - "outputs" : ["Multiply_499"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_543", "Tanh_544" ], - "name" : "Multiply_545", - "op" : "Multiply", - "outputs" : ["Multiply_545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_536", "Add_471" ], - "name" : "Multiply_537", - "op" : "Multiply", - "outputs" : ["Multiply_537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_499", "Multiply_507" ], - "name" : "Add_508", - "op" : "Add", - "outputs" : ["Add_508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_537", "Multiply_545" ], - "name" : "Add_546", - "op" : "Add", - "outputs" : ["Add_546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_508"], - "name" : "Tanh_509", - "op" : "Tanh", - "outputs" : ["Tanh_509"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_546"], - "name" : "Tanh_547", - "op" : "Tanh", - "outputs" : ["Tanh_547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_492", "Tanh_509" ], - "name" : "Multiply_510", - "op" : "Multiply", - "outputs" : ["Multiply_510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_530", "Tanh_547" ], - "name" : "Multiply_548", - "op" : "Multiply", - "outputs" : ["Multiply_548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_510"], - "name" : "Reshape_511", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_510", "Reshape_553" ], - "name" : "Dot_554", - "op" : "Dot", - "outputs" : ["Dot_554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_548", "Reshape_549" ], - "name" : "Dot_550", - "op" : "Dot", - "outputs" : ["Dot_550"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_548", "Reshape_591" ], - "name" : "Dot_592", - "op" : "Dot", - "outputs" : ["Dot_592"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_554", "Broadcast_555" ], - "name" : "Add_556", - "op" : "Add", - "outputs" : ["Add_556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_550", "Broadcast_551" ], - "name" : "Add_552", - "op" : "Add", - "outputs" : ["Add_552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_592", "Broadcast_593" ], - "name" : "Add_594", - "op" : "Add", - "outputs" : ["Add_594"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_552", "Add_556" ], - "name" : "Add_557", - "op" : "Add", - "outputs" : ["Add_557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_590", "Add_594" ], - "name" : "Add_595", - "op" : "Add", - "outputs" : ["Add_595"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_558", - "op" : "Slice", - "outputs" : ["Slice_558"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_559", - "op" : "Slice", - "outputs" : ["Slice_559"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_560", - "op" : "Slice", - "outputs" : ["Slice_560"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_561", - "op" : "Slice", - "outputs" : ["Slice_561"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_595"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_596", - "op" : "Slice", - "outputs" : ["Slice_596"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_595"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_597", - "op" : "Slice", - "outputs" : ["Slice_597"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_595"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_598", - "op" : "Slice", - "outputs" : ["Slice_598"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_595"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_599", - "op" : "Slice", - "outputs" : ["Slice_599"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_558"], - "name" : "Negative_577", - "op" : "Negative", - "outputs" : ["Negative_577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_559"], - "name" : "Negative_570", - "op" : "Negative", - "outputs" : ["Negative_570"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_560"], - "name" : "Tanh_581", - "op" : "Tanh", - "outputs" : ["Tanh_581"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_561"], - "name" : "Negative_564", - "op" : "Negative", - "outputs" : ["Negative_564"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_596"], - "name" : "Negative_615", - "op" : "Negative", - "outputs" : ["Negative_615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_597"], - "name" : "Negative_608", - "op" : "Negative", - "outputs" : ["Negative_608"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_598"], - "name" : "Tanh_619", - "op" : "Tanh", - "outputs" : ["Tanh_619"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_599"], - "name" : "Negative_602", - "op" : "Negative", - "outputs" : ["Negative_602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_577"], - "name" : "Exp_578", - "op" : "Exp", - "outputs" : ["Exp_578"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_570"], - "name" : "Exp_571", - "op" : "Exp", - "outputs" : ["Exp_571"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_564"], - "name" : "Exp_565", - "op" : "Exp", - "outputs" : ["Exp_565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_615"], - "name" : "Exp_616", - "op" : "Exp", - "outputs" : ["Exp_616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_608"], - "name" : "Exp_609", - "op" : "Exp", - "outputs" : ["Exp_609"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_602"], - "name" : "Exp_603", - "op" : "Exp", - "outputs" : ["Exp_603"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_576", "Exp_578" ], - "name" : "Add_579", - "op" : "Add", - "outputs" : ["Add_579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_569", "Exp_571" ], - "name" : "Add_572", - "op" : "Add", - "outputs" : ["Add_572"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_563", "Exp_565" ], - "name" : "Add_566", - "op" : "Add", - "outputs" : ["Add_566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_614", "Exp_616" ], - "name" : "Add_617", - "op" : "Add", - "outputs" : ["Add_617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_607", "Exp_609" ], - "name" : "Add_610", - "op" : "Add", - "outputs" : ["Add_610"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_601", "Exp_603" ], - "name" : "Add_604", - "op" : "Add", - "outputs" : ["Add_604"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_576", "Add_579" ], - "name" : "Divide_580", - "op" : "Divide", - "outputs" : ["Divide_580"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_569", "Add_572" ], - "name" : "Divide_573", - "op" : "Divide", - "outputs" : ["Divide_573"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_563", "Add_566" ], - "name" : "Divide_567", - "op" : "Divide", - "outputs" : ["Divide_567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_614", "Add_617" ], - "name" : "Divide_618", - "op" : "Divide", - "outputs" : ["Divide_618"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_607", "Add_610" ], - "name" : "Divide_611", - "op" : "Divide", - "outputs" : ["Divide_611"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_601", "Add_604" ], - "name" : "Divide_605", - "op" : "Divide", - "outputs" : ["Divide_605"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_580", "Tanh_581" ], - "name" : "Multiply_582", - "op" : "Multiply", - "outputs" : ["Multiply_582"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_573", "Add_508" ], - "name" : "Multiply_574", - "op" : "Multiply", - "outputs" : ["Multiply_574"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_618", "Tanh_619" ], - "name" : "Multiply_620", - "op" : "Multiply", - "outputs" : ["Multiply_620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_611", "Add_546" ], - "name" : "Multiply_612", - "op" : "Multiply", - "outputs" : ["Multiply_612"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_574", "Multiply_582" ], - "name" : "Add_583", - "op" : "Add", - "outputs" : ["Add_583"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_612", "Multiply_620" ], - "name" : "Add_621", - "op" : "Add", - "outputs" : ["Add_621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_583"], - "name" : "Tanh_584", - "op" : "Tanh", - "outputs" : ["Tanh_584"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_621"], - "name" : "Tanh_622", - "op" : "Tanh", - "outputs" : ["Tanh_622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_567", "Tanh_584" ], - "name" : "Multiply_585", - "op" : "Multiply", - "outputs" : ["Multiply_585"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_605", "Tanh_622" ], - "name" : "Multiply_623", - "op" : "Multiply", - "outputs" : ["Multiply_623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_585"], - "name" : "Reshape_586", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_585", "Reshape_628" ], - "name" : "Dot_629", - "op" : "Dot", - "outputs" : ["Dot_629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_623", "Reshape_624" ], - "name" : "Dot_625", - "op" : "Dot", - "outputs" : ["Dot_625"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_623", "Reshape_666" ], - "name" : "Dot_667", - "op" : "Dot", - "outputs" : ["Dot_667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_629", "Broadcast_630" ], - "name" : "Add_631", - "op" : "Add", - "outputs" : ["Add_631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_625", "Broadcast_626" ], - "name" : "Add_627", - "op" : "Add", - "outputs" : ["Add_627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_667", "Broadcast_668" ], - "name" : "Add_669", - "op" : "Add", - "outputs" : ["Add_669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_627", "Add_631" ], - "name" : "Add_632", - "op" : "Add", - "outputs" : ["Add_632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_665", "Add_669" ], - "name" : "Add_670", - "op" : "Add", - "outputs" : ["Add_670"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_632"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_633", - "op" : "Slice", - "outputs" : ["Slice_633"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_632"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_634", - "op" : "Slice", - "outputs" : ["Slice_634"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_632"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_635", - "op" : "Slice", - "outputs" : ["Slice_635"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_632"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_636", - "op" : "Slice", - "outputs" : ["Slice_636"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_670"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_671", - "op" : "Slice", - "outputs" : ["Slice_671"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_670"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_672", - "op" : "Slice", - "outputs" : ["Slice_672"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_670"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_673", - "op" : "Slice", - "outputs" : ["Slice_673"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_670"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_674", - "op" : "Slice", - "outputs" : ["Slice_674"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_633"], - "name" : "Negative_652", - "op" : "Negative", - "outputs" : ["Negative_652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_634"], - "name" : "Negative_645", - "op" : "Negative", - "outputs" : ["Negative_645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_635"], - "name" : "Tanh_656", - "op" : "Tanh", - "outputs" : ["Tanh_656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_636"], - "name" : "Negative_639", - "op" : "Negative", - "outputs" : ["Negative_639"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_671"], - "name" : "Negative_690", - "op" : "Negative", - "outputs" : ["Negative_690"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_672"], - "name" : "Negative_683", - "op" : "Negative", - "outputs" : ["Negative_683"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_673"], - "name" : "Tanh_694", - "op" : "Tanh", - "outputs" : ["Tanh_694"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_674"], - "name" : "Negative_677", - "op" : "Negative", - "outputs" : ["Negative_677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_652"], - "name" : "Exp_653", - "op" : "Exp", - "outputs" : ["Exp_653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_645"], - "name" : "Exp_646", - "op" : "Exp", - "outputs" : ["Exp_646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_639"], - "name" : "Exp_640", - "op" : "Exp", - "outputs" : ["Exp_640"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_690"], - "name" : "Exp_691", - "op" : "Exp", - "outputs" : ["Exp_691"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_683"], - "name" : "Exp_684", - "op" : "Exp", - "outputs" : ["Exp_684"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_677"], - "name" : "Exp_678", - "op" : "Exp", - "outputs" : ["Exp_678"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_651", "Exp_653" ], - "name" : "Add_654", - "op" : "Add", - "outputs" : ["Add_654"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_644", "Exp_646" ], - "name" : "Add_647", - "op" : "Add", - "outputs" : ["Add_647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_638", "Exp_640" ], - "name" : "Add_641", - "op" : "Add", - "outputs" : ["Add_641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_689", "Exp_691" ], - "name" : "Add_692", - "op" : "Add", - "outputs" : ["Add_692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_682", "Exp_684" ], - "name" : "Add_685", - "op" : "Add", - "outputs" : ["Add_685"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_676", "Exp_678" ], - "name" : "Add_679", - "op" : "Add", - "outputs" : ["Add_679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_651", "Add_654" ], - "name" : "Divide_655", - "op" : "Divide", - "outputs" : ["Divide_655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_644", "Add_647" ], - "name" : "Divide_648", - "op" : "Divide", - "outputs" : ["Divide_648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_638", "Add_641" ], - "name" : "Divide_642", - "op" : "Divide", - "outputs" : ["Divide_642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_689", "Add_692" ], - "name" : "Divide_693", - "op" : "Divide", - "outputs" : ["Divide_693"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_682", "Add_685" ], - "name" : "Divide_686", - "op" : "Divide", - "outputs" : ["Divide_686"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_676", "Add_679" ], - "name" : "Divide_680", - "op" : "Divide", - "outputs" : ["Divide_680"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_655", "Tanh_656" ], - "name" : "Multiply_657", - "op" : "Multiply", - "outputs" : ["Multiply_657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_648", "Add_583" ], - "name" : "Multiply_649", - "op" : "Multiply", - "outputs" : ["Multiply_649"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_693", "Tanh_694" ], - "name" : "Multiply_695", - "op" : "Multiply", - "outputs" : ["Multiply_695"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_686", "Add_621" ], - "name" : "Multiply_687", - "op" : "Multiply", - "outputs" : ["Multiply_687"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_649", "Multiply_657" ], - "name" : "Add_658", - "op" : "Add", - "outputs" : ["Add_658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_687", "Multiply_695" ], - "name" : "Add_696", - "op" : "Add", - "outputs" : ["Add_696"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_658"], - "name" : "Tanh_659", - "op" : "Tanh", - "outputs" : ["Tanh_659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_696"], - "name" : "Tanh_697", - "op" : "Tanh", - "outputs" : ["Tanh_697"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_642", "Tanh_659" ], - "name" : "Multiply_660", - "op" : "Multiply", - "outputs" : ["Multiply_660"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_680", "Tanh_697" ], - "name" : "Multiply_698", - "op" : "Multiply", - "outputs" : ["Multiply_698"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_660"], - "name" : "Reshape_661", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_660", "Reshape_703" ], - "name" : "Dot_704", - "op" : "Dot", - "outputs" : ["Dot_704"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_698", "Reshape_699" ], - "name" : "Dot_700", - "op" : "Dot", - "outputs" : ["Dot_700"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_698", "Reshape_741" ], - "name" : "Dot_742", - "op" : "Dot", - "outputs" : ["Dot_742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_704", "Broadcast_705" ], - "name" : "Add_706", - "op" : "Add", - "outputs" : ["Add_706"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_700", "Broadcast_701" ], - "name" : "Add_702", - "op" : "Add", - "outputs" : ["Add_702"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_742", "Broadcast_743" ], - "name" : "Add_744", - "op" : "Add", - "outputs" : ["Add_744"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_702", "Add_706" ], - "name" : "Add_707", - "op" : "Add", - "outputs" : ["Add_707"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_740", "Add_744" ], - "name" : "Add_745", - "op" : "Add", - "outputs" : ["Add_745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_707"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_708", - "op" : "Slice", - "outputs" : ["Slice_708"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_707"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_709", - "op" : "Slice", - "outputs" : ["Slice_709"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_707"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_710", - "op" : "Slice", - "outputs" : ["Slice_710"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_707"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_711", - "op" : "Slice", - "outputs" : ["Slice_711"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_745"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_746", - "op" : "Slice", - "outputs" : ["Slice_746"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_745"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_747", - "op" : "Slice", - "outputs" : ["Slice_747"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_745"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_748", - "op" : "Slice", - "outputs" : ["Slice_748"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_745"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_749", - "op" : "Slice", - "outputs" : ["Slice_749"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_708"], - "name" : "Negative_727", - "op" : "Negative", - "outputs" : ["Negative_727"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_709"], - "name" : "Negative_720", - "op" : "Negative", - "outputs" : ["Negative_720"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_710"], - "name" : "Tanh_731", - "op" : "Tanh", - "outputs" : ["Tanh_731"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_711"], - "name" : "Negative_714", - "op" : "Negative", - "outputs" : ["Negative_714"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_746"], - "name" : "Negative_765", - "op" : "Negative", - "outputs" : ["Negative_765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_747"], - "name" : "Negative_758", - "op" : "Negative", - "outputs" : ["Negative_758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_748"], - "name" : "Tanh_769", - "op" : "Tanh", - "outputs" : ["Tanh_769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_749"], - "name" : "Negative_752", - "op" : "Negative", - "outputs" : ["Negative_752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_727"], - "name" : "Exp_728", - "op" : "Exp", - "outputs" : ["Exp_728"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_720"], - "name" : "Exp_721", - "op" : "Exp", - "outputs" : ["Exp_721"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_714"], - "name" : "Exp_715", - "op" : "Exp", - "outputs" : ["Exp_715"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_765"], - "name" : "Exp_766", - "op" : "Exp", - "outputs" : ["Exp_766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_758"], - "name" : "Exp_759", - "op" : "Exp", - "outputs" : ["Exp_759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_752"], - "name" : "Exp_753", - "op" : "Exp", - "outputs" : ["Exp_753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_726", "Exp_728" ], - "name" : "Add_729", - "op" : "Add", - "outputs" : ["Add_729"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_719", "Exp_721" ], - "name" : "Add_722", - "op" : "Add", - "outputs" : ["Add_722"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_713", "Exp_715" ], - "name" : "Add_716", - "op" : "Add", - "outputs" : ["Add_716"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_764", "Exp_766" ], - "name" : "Add_767", - "op" : "Add", - "outputs" : ["Add_767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_757", "Exp_759" ], - "name" : "Add_760", - "op" : "Add", - "outputs" : ["Add_760"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_751", "Exp_753" ], - "name" : "Add_754", - "op" : "Add", - "outputs" : ["Add_754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_726", "Add_729" ], - "name" : "Divide_730", - "op" : "Divide", - "outputs" : ["Divide_730"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_719", "Add_722" ], - "name" : "Divide_723", - "op" : "Divide", - "outputs" : ["Divide_723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_713", "Add_716" ], - "name" : "Divide_717", - "op" : "Divide", - "outputs" : ["Divide_717"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_764", "Add_767" ], - "name" : "Divide_768", - "op" : "Divide", - "outputs" : ["Divide_768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_757", "Add_760" ], - "name" : "Divide_761", - "op" : "Divide", - "outputs" : ["Divide_761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_751", "Add_754" ], - "name" : "Divide_755", - "op" : "Divide", - "outputs" : ["Divide_755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_730", "Tanh_731" ], - "name" : "Multiply_732", - "op" : "Multiply", - "outputs" : ["Multiply_732"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_723", "Add_658" ], - "name" : "Multiply_724", - "op" : "Multiply", - "outputs" : ["Multiply_724"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_768", "Tanh_769" ], - "name" : "Multiply_770", - "op" : "Multiply", - "outputs" : ["Multiply_770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_761", "Add_696" ], - "name" : "Multiply_762", - "op" : "Multiply", - "outputs" : ["Multiply_762"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_724", "Multiply_732" ], - "name" : "Add_733", - "op" : "Add", - "outputs" : ["Add_733"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_762", "Multiply_770" ], - "name" : "Add_771", - "op" : "Add", - "outputs" : ["Add_771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_733"], - "name" : "Tanh_734", - "op" : "Tanh", - "outputs" : ["Tanh_734"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_771"], - "name" : "Tanh_772", - "op" : "Tanh", - "outputs" : ["Tanh_772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_717", "Tanh_734" ], - "name" : "Multiply_735", - "op" : "Multiply", - "outputs" : ["Multiply_735"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_755", "Tanh_772" ], - "name" : "Multiply_773", - "op" : "Multiply", - "outputs" : ["Multiply_773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_735"], - "name" : "Reshape_736", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_735", "Reshape_778" ], - "name" : "Dot_779", - "op" : "Dot", - "outputs" : ["Dot_779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_773", "Reshape_774" ], - "name" : "Dot_775", - "op" : "Dot", - "outputs" : ["Dot_775"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_773", "Reshape_816" ], - "name" : "Dot_817", - "op" : "Dot", - "outputs" : ["Dot_817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_779", "Broadcast_780" ], - "name" : "Add_781", - "op" : "Add", - "outputs" : ["Add_781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_775", "Broadcast_776" ], - "name" : "Add_777", - "op" : "Add", - "outputs" : ["Add_777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_817", "Broadcast_818" ], - "name" : "Add_819", - "op" : "Add", - "outputs" : ["Add_819"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_777", "Add_781" ], - "name" : "Add_782", - "op" : "Add", - "outputs" : ["Add_782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_815", "Add_819" ], - "name" : "Add_820", - "op" : "Add", - "outputs" : ["Add_820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_782"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_783", - "op" : "Slice", - "outputs" : ["Slice_783"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_782"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_784", - "op" : "Slice", - "outputs" : ["Slice_784"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_782"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_785", - "op" : "Slice", - "outputs" : ["Slice_785"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_782"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_786", - "op" : "Slice", - "outputs" : ["Slice_786"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_820"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_821", - "op" : "Slice", - "outputs" : ["Slice_821"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_820"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_822", - "op" : "Slice", - "outputs" : ["Slice_822"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_820"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_823", - "op" : "Slice", - "outputs" : ["Slice_823"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_820"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_824", - "op" : "Slice", - "outputs" : ["Slice_824"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_783"], - "name" : "Negative_802", - "op" : "Negative", - "outputs" : ["Negative_802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_784"], - "name" : "Negative_795", - "op" : "Negative", - "outputs" : ["Negative_795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_785"], - "name" : "Tanh_806", - "op" : "Tanh", - "outputs" : ["Tanh_806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_786"], - "name" : "Negative_789", - "op" : "Negative", - "outputs" : ["Negative_789"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_821"], - "name" : "Negative_840", - "op" : "Negative", - "outputs" : ["Negative_840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_822"], - "name" : "Negative_833", - "op" : "Negative", - "outputs" : ["Negative_833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_823"], - "name" : "Tanh_844", - "op" : "Tanh", - "outputs" : ["Tanh_844"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_824"], - "name" : "Negative_827", - "op" : "Negative", - "outputs" : ["Negative_827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_802"], - "name" : "Exp_803", - "op" : "Exp", - "outputs" : ["Exp_803"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_795"], - "name" : "Exp_796", - "op" : "Exp", - "outputs" : ["Exp_796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_789"], - "name" : "Exp_790", - "op" : "Exp", - "outputs" : ["Exp_790"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_840"], - "name" : "Exp_841", - "op" : "Exp", - "outputs" : ["Exp_841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_833"], - "name" : "Exp_834", - "op" : "Exp", - "outputs" : ["Exp_834"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_827"], - "name" : "Exp_828", - "op" : "Exp", - "outputs" : ["Exp_828"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_801", "Exp_803" ], - "name" : "Add_804", - "op" : "Add", - "outputs" : ["Add_804"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_794", "Exp_796" ], - "name" : "Add_797", - "op" : "Add", - "outputs" : ["Add_797"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_788", "Exp_790" ], - "name" : "Add_791", - "op" : "Add", - "outputs" : ["Add_791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_839", "Exp_841" ], - "name" : "Add_842", - "op" : "Add", - "outputs" : ["Add_842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_832", "Exp_834" ], - "name" : "Add_835", - "op" : "Add", - "outputs" : ["Add_835"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_826", "Exp_828" ], - "name" : "Add_829", - "op" : "Add", - "outputs" : ["Add_829"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_801", "Add_804" ], - "name" : "Divide_805", - "op" : "Divide", - "outputs" : ["Divide_805"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_794", "Add_797" ], - "name" : "Divide_798", - "op" : "Divide", - "outputs" : ["Divide_798"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_788", "Add_791" ], - "name" : "Divide_792", - "op" : "Divide", - "outputs" : ["Divide_792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_839", "Add_842" ], - "name" : "Divide_843", - "op" : "Divide", - "outputs" : ["Divide_843"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_832", "Add_835" ], - "name" : "Divide_836", - "op" : "Divide", - "outputs" : ["Divide_836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_826", "Add_829" ], - "name" : "Divide_830", - "op" : "Divide", - "outputs" : ["Divide_830"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_805", "Tanh_806" ], - "name" : "Multiply_807", - "op" : "Multiply", - "outputs" : ["Multiply_807"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_798", "Add_733" ], - "name" : "Multiply_799", - "op" : "Multiply", - "outputs" : ["Multiply_799"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_843", "Tanh_844" ], - "name" : "Multiply_845", - "op" : "Multiply", - "outputs" : ["Multiply_845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_836", "Add_771" ], - "name" : "Multiply_837", - "op" : "Multiply", - "outputs" : ["Multiply_837"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_799", "Multiply_807" ], - "name" : "Add_808", - "op" : "Add", - "outputs" : ["Add_808"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_837", "Multiply_845" ], - "name" : "Add_846", - "op" : "Add", - "outputs" : ["Add_846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_808"], - "name" : "Tanh_809", - "op" : "Tanh", - "outputs" : ["Tanh_809"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_846"], - "name" : "Tanh_847", - "op" : "Tanh", - "outputs" : ["Tanh_847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_792", "Tanh_809" ], - "name" : "Multiply_810", - "op" : "Multiply", - "outputs" : ["Multiply_810"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_830", "Tanh_847" ], - "name" : "Multiply_848", - "op" : "Multiply", - "outputs" : ["Multiply_848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_810"], - "name" : "Reshape_811", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_811"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_810", "Reshape_853" ], - "name" : "Dot_854", - "op" : "Dot", - "outputs" : ["Dot_854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_848", "Reshape_849" ], - "name" : "Dot_850", - "op" : "Dot", - "outputs" : ["Dot_850"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_848", "Reshape_891" ], - "name" : "Dot_892", - "op" : "Dot", - "outputs" : ["Dot_892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_854", "Broadcast_855" ], - "name" : "Add_856", - "op" : "Add", - "outputs" : ["Add_856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_850", "Broadcast_851" ], - "name" : "Add_852", - "op" : "Add", - "outputs" : ["Add_852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_892", "Broadcast_893" ], - "name" : "Add_894", - "op" : "Add", - "outputs" : ["Add_894"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_852", "Add_856" ], - "name" : "Add_857", - "op" : "Add", - "outputs" : ["Add_857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_890", "Add_894" ], - "name" : "Add_895", - "op" : "Add", - "outputs" : ["Add_895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_857"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_858", - "op" : "Slice", - "outputs" : ["Slice_858"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_857"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_859", - "op" : "Slice", - "outputs" : ["Slice_859"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_857"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_860", - "op" : "Slice", - "outputs" : ["Slice_860"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_857"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_861", - "op" : "Slice", - "outputs" : ["Slice_861"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_895"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_896", - "op" : "Slice", - "outputs" : ["Slice_896"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_895"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_897", - "op" : "Slice", - "outputs" : ["Slice_897"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_895"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_898", - "op" : "Slice", - "outputs" : ["Slice_898"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_895"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_899", - "op" : "Slice", - "outputs" : ["Slice_899"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_858"], - "name" : "Negative_877", - "op" : "Negative", - "outputs" : ["Negative_877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_859"], - "name" : "Negative_870", - "op" : "Negative", - "outputs" : ["Negative_870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_860"], - "name" : "Tanh_881", - "op" : "Tanh", - "outputs" : ["Tanh_881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_861"], - "name" : "Negative_864", - "op" : "Negative", - "outputs" : ["Negative_864"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_896"], - "name" : "Negative_915", - "op" : "Negative", - "outputs" : ["Negative_915"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_897"], - "name" : "Negative_908", - "op" : "Negative", - "outputs" : ["Negative_908"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_898"], - "name" : "Tanh_919", - "op" : "Tanh", - "outputs" : ["Tanh_919"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_899"], - "name" : "Negative_902", - "op" : "Negative", - "outputs" : ["Negative_902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_877"], - "name" : "Exp_878", - "op" : "Exp", - "outputs" : ["Exp_878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_870"], - "name" : "Exp_871", - "op" : "Exp", - "outputs" : ["Exp_871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_864"], - "name" : "Exp_865", - "op" : "Exp", - "outputs" : ["Exp_865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_915"], - "name" : "Exp_916", - "op" : "Exp", - "outputs" : ["Exp_916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_908"], - "name" : "Exp_909", - "op" : "Exp", - "outputs" : ["Exp_909"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_902"], - "name" : "Exp_903", - "op" : "Exp", - "outputs" : ["Exp_903"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_876", "Exp_878" ], - "name" : "Add_879", - "op" : "Add", - "outputs" : ["Add_879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_869", "Exp_871" ], - "name" : "Add_872", - "op" : "Add", - "outputs" : ["Add_872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_863", "Exp_865" ], - "name" : "Add_866", - "op" : "Add", - "outputs" : ["Add_866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_914", "Exp_916" ], - "name" : "Add_917", - "op" : "Add", - "outputs" : ["Add_917"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_907", "Exp_909" ], - "name" : "Add_910", - "op" : "Add", - "outputs" : ["Add_910"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_901", "Exp_903" ], - "name" : "Add_904", - "op" : "Add", - "outputs" : ["Add_904"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_876", "Add_879" ], - "name" : "Divide_880", - "op" : "Divide", - "outputs" : ["Divide_880"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_869", "Add_872" ], - "name" : "Divide_873", - "op" : "Divide", - "outputs" : ["Divide_873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_863", "Add_866" ], - "name" : "Divide_867", - "op" : "Divide", - "outputs" : ["Divide_867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_914", "Add_917" ], - "name" : "Divide_918", - "op" : "Divide", - "outputs" : ["Divide_918"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_907", "Add_910" ], - "name" : "Divide_911", - "op" : "Divide", - "outputs" : ["Divide_911"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_901", "Add_904" ], - "name" : "Divide_905", - "op" : "Divide", - "outputs" : ["Divide_905"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_880", "Tanh_881" ], - "name" : "Multiply_882", - "op" : "Multiply", - "outputs" : ["Multiply_882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_873", "Add_808" ], - "name" : "Multiply_874", - "op" : "Multiply", - "outputs" : ["Multiply_874"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_918", "Tanh_919" ], - "name" : "Multiply_920", - "op" : "Multiply", - "outputs" : ["Multiply_920"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_911", "Add_846" ], - "name" : "Multiply_912", - "op" : "Multiply", - "outputs" : ["Multiply_912"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_874", "Multiply_882" ], - "name" : "Add_883", - "op" : "Add", - "outputs" : ["Add_883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_912", "Multiply_920" ], - "name" : "Add_921", - "op" : "Add", - "outputs" : ["Add_921"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_883"], - "name" : "Tanh_884", - "op" : "Tanh", - "outputs" : ["Tanh_884"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_921"], - "name" : "Tanh_922", - "op" : "Tanh", - "outputs" : ["Tanh_922"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_867", "Tanh_884" ], - "name" : "Multiply_885", - "op" : "Multiply", - "outputs" : ["Multiply_885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_905", "Tanh_922" ], - "name" : "Multiply_923", - "op" : "Multiply", - "outputs" : ["Multiply_923"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_885"], - "name" : "Reshape_886", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_885", "Reshape_928" ], - "name" : "Dot_929", - "op" : "Dot", - "outputs" : ["Dot_929"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_923", "Reshape_924" ], - "name" : "Dot_925", - "op" : "Dot", - "outputs" : ["Dot_925"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_923", "Reshape_966" ], - "name" : "Dot_967", - "op" : "Dot", - "outputs" : ["Dot_967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_929", "Broadcast_930" ], - "name" : "Add_931", - "op" : "Add", - "outputs" : ["Add_931"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_925", "Broadcast_926" ], - "name" : "Add_927", - "op" : "Add", - "outputs" : ["Add_927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_967", "Broadcast_968" ], - "name" : "Add_969", - "op" : "Add", - "outputs" : ["Add_969"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_927", "Add_931" ], - "name" : "Add_932", - "op" : "Add", - "outputs" : ["Add_932"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_965", "Add_969" ], - "name" : "Add_970", - "op" : "Add", - "outputs" : ["Add_970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_932"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_933", - "op" : "Slice", - "outputs" : ["Slice_933"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_932"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_934", - "op" : "Slice", - "outputs" : ["Slice_934"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_932"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_935", - "op" : "Slice", - "outputs" : ["Slice_935"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_932"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_936", - "op" : "Slice", - "outputs" : ["Slice_936"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_970"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_971", - "op" : "Slice", - "outputs" : ["Slice_971"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_970"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_972", - "op" : "Slice", - "outputs" : ["Slice_972"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_970"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_973", - "op" : "Slice", - "outputs" : ["Slice_973"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_970"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_974", - "op" : "Slice", - "outputs" : ["Slice_974"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_933"], - "name" : "Negative_952", - "op" : "Negative", - "outputs" : ["Negative_952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_934"], - "name" : "Negative_945", - "op" : "Negative", - "outputs" : ["Negative_945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_935"], - "name" : "Tanh_956", - "op" : "Tanh", - "outputs" : ["Tanh_956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_936"], - "name" : "Negative_939", - "op" : "Negative", - "outputs" : ["Negative_939"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_971"], - "name" : "Negative_990", - "op" : "Negative", - "outputs" : ["Negative_990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_972"], - "name" : "Negative_983", - "op" : "Negative", - "outputs" : ["Negative_983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_973"], - "name" : "Tanh_994", - "op" : "Tanh", - "outputs" : ["Tanh_994"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_974"], - "name" : "Negative_977", - "op" : "Negative", - "outputs" : ["Negative_977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_952"], - "name" : "Exp_953", - "op" : "Exp", - "outputs" : ["Exp_953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_945"], - "name" : "Exp_946", - "op" : "Exp", - "outputs" : ["Exp_946"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_939"], - "name" : "Exp_940", - "op" : "Exp", - "outputs" : ["Exp_940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_990"], - "name" : "Exp_991", - "op" : "Exp", - "outputs" : ["Exp_991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_983"], - "name" : "Exp_984", - "op" : "Exp", - "outputs" : ["Exp_984"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_977"], - "name" : "Exp_978", - "op" : "Exp", - "outputs" : ["Exp_978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_951", "Exp_953" ], - "name" : "Add_954", - "op" : "Add", - "outputs" : ["Add_954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_944", "Exp_946" ], - "name" : "Add_947", - "op" : "Add", - "outputs" : ["Add_947"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_938", "Exp_940" ], - "name" : "Add_941", - "op" : "Add", - "outputs" : ["Add_941"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_989", "Exp_991" ], - "name" : "Add_992", - "op" : "Add", - "outputs" : ["Add_992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_982", "Exp_984" ], - "name" : "Add_985", - "op" : "Add", - "outputs" : ["Add_985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_976", "Exp_978" ], - "name" : "Add_979", - "op" : "Add", - "outputs" : ["Add_979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_951", "Add_954" ], - "name" : "Divide_955", - "op" : "Divide", - "outputs" : ["Divide_955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_944", "Add_947" ], - "name" : "Divide_948", - "op" : "Divide", - "outputs" : ["Divide_948"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_938", "Add_941" ], - "name" : "Divide_942", - "op" : "Divide", - "outputs" : ["Divide_942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_989", "Add_992" ], - "name" : "Divide_993", - "op" : "Divide", - "outputs" : ["Divide_993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_982", "Add_985" ], - "name" : "Divide_986", - "op" : "Divide", - "outputs" : ["Divide_986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_976", "Add_979" ], - "name" : "Divide_980", - "op" : "Divide", - "outputs" : ["Divide_980"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_955", "Tanh_956" ], - "name" : "Multiply_957", - "op" : "Multiply", - "outputs" : ["Multiply_957"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_948", "Add_883" ], - "name" : "Multiply_949", - "op" : "Multiply", - "outputs" : ["Multiply_949"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_993", "Tanh_994" ], - "name" : "Multiply_995", - "op" : "Multiply", - "outputs" : ["Multiply_995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_986", "Add_921" ], - "name" : "Multiply_987", - "op" : "Multiply", - "outputs" : ["Multiply_987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_949", "Multiply_957" ], - "name" : "Add_958", - "op" : "Add", - "outputs" : ["Add_958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_987", "Multiply_995" ], - "name" : "Add_996", - "op" : "Add", - "outputs" : ["Add_996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_958"], - "name" : "Tanh_959", - "op" : "Tanh", - "outputs" : ["Tanh_959"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_996"], - "name" : "Tanh_997", - "op" : "Tanh", - "outputs" : ["Tanh_997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_942", "Tanh_959" ], - "name" : "Multiply_960", - "op" : "Multiply", - "outputs" : ["Multiply_960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_980", "Tanh_997" ], - "name" : "Multiply_998", - "op" : "Multiply", - "outputs" : ["Multiply_998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_960"], - "name" : "Reshape_961", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_960", "Reshape_1003" ], - "name" : "Dot_1004", - "op" : "Dot", - "outputs" : ["Dot_1004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_998", "Reshape_999" ], - "name" : "Dot_1000", - "op" : "Dot", - "outputs" : ["Dot_1000"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_998", "Reshape_1041" ], - "name" : "Dot_1042", - "op" : "Dot", - "outputs" : ["Dot_1042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1004", "Broadcast_1005" ], - "name" : "Add_1006", - "op" : "Add", - "outputs" : ["Add_1006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1000", "Broadcast_1001" ], - "name" : "Add_1002", - "op" : "Add", - "outputs" : ["Add_1002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1042", "Broadcast_1043" ], - "name" : "Add_1044", - "op" : "Add", - "outputs" : ["Add_1044"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1002", "Add_1006" ], - "name" : "Add_1007", - "op" : "Add", - "outputs" : ["Add_1007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1040", "Add_1044" ], - "name" : "Add_1045", - "op" : "Add", - "outputs" : ["Add_1045"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1007"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1008", - "op" : "Slice", - "outputs" : ["Slice_1008"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1007"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1009", - "op" : "Slice", - "outputs" : ["Slice_1009"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1007"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1010", - "op" : "Slice", - "outputs" : ["Slice_1010"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1007"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1011", - "op" : "Slice", - "outputs" : ["Slice_1011"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1045"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1046", - "op" : "Slice", - "outputs" : ["Slice_1046"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1045"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1047", - "op" : "Slice", - "outputs" : ["Slice_1047"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1045"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1048", - "op" : "Slice", - "outputs" : ["Slice_1048"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1045"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1049", - "op" : "Slice", - "outputs" : ["Slice_1049"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1008"], - "name" : "Negative_1027", - "op" : "Negative", - "outputs" : ["Negative_1027"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1009"], - "name" : "Negative_1020", - "op" : "Negative", - "outputs" : ["Negative_1020"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1010"], - "name" : "Tanh_1031", - "op" : "Tanh", - "outputs" : ["Tanh_1031"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1011"], - "name" : "Negative_1014", - "op" : "Negative", - "outputs" : ["Negative_1014"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1046"], - "name" : "Negative_1065", - "op" : "Negative", - "outputs" : ["Negative_1065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1047"], - "name" : "Negative_1058", - "op" : "Negative", - "outputs" : ["Negative_1058"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1048"], - "name" : "Tanh_1069", - "op" : "Tanh", - "outputs" : ["Tanh_1069"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1049"], - "name" : "Negative_1052", - "op" : "Negative", - "outputs" : ["Negative_1052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1027"], - "name" : "Exp_1028", - "op" : "Exp", - "outputs" : ["Exp_1028"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1020"], - "name" : "Exp_1021", - "op" : "Exp", - "outputs" : ["Exp_1021"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1014"], - "name" : "Exp_1015", - "op" : "Exp", - "outputs" : ["Exp_1015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1065"], - "name" : "Exp_1066", - "op" : "Exp", - "outputs" : ["Exp_1066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1058"], - "name" : "Exp_1059", - "op" : "Exp", - "outputs" : ["Exp_1059"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1052"], - "name" : "Exp_1053", - "op" : "Exp", - "outputs" : ["Exp_1053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1026", "Exp_1028" ], - "name" : "Add_1029", - "op" : "Add", - "outputs" : ["Add_1029"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1019", "Exp_1021" ], - "name" : "Add_1022", - "op" : "Add", - "outputs" : ["Add_1022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1013", "Exp_1015" ], - "name" : "Add_1016", - "op" : "Add", - "outputs" : ["Add_1016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1064", "Exp_1066" ], - "name" : "Add_1067", - "op" : "Add", - "outputs" : ["Add_1067"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1057", "Exp_1059" ], - "name" : "Add_1060", - "op" : "Add", - "outputs" : ["Add_1060"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1051", "Exp_1053" ], - "name" : "Add_1054", - "op" : "Add", - "outputs" : ["Add_1054"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1026", "Add_1029" ], - "name" : "Divide_1030", - "op" : "Divide", - "outputs" : ["Divide_1030"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1019", "Add_1022" ], - "name" : "Divide_1023", - "op" : "Divide", - "outputs" : ["Divide_1023"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1013", "Add_1016" ], - "name" : "Divide_1017", - "op" : "Divide", - "outputs" : ["Divide_1017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1064", "Add_1067" ], - "name" : "Divide_1068", - "op" : "Divide", - "outputs" : ["Divide_1068"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1057", "Add_1060" ], - "name" : "Divide_1061", - "op" : "Divide", - "outputs" : ["Divide_1061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1051", "Add_1054" ], - "name" : "Divide_1055", - "op" : "Divide", - "outputs" : ["Divide_1055"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1030", "Tanh_1031" ], - "name" : "Multiply_1032", - "op" : "Multiply", - "outputs" : ["Multiply_1032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1023", "Add_958" ], - "name" : "Multiply_1024", - "op" : "Multiply", - "outputs" : ["Multiply_1024"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1068", "Tanh_1069" ], - "name" : "Multiply_1070", - "op" : "Multiply", - "outputs" : ["Multiply_1070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1061", "Add_996" ], - "name" : "Multiply_1062", - "op" : "Multiply", - "outputs" : ["Multiply_1062"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1024", "Multiply_1032" ], - "name" : "Add_1033", - "op" : "Add", - "outputs" : ["Add_1033"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1062", "Multiply_1070" ], - "name" : "Add_1071", - "op" : "Add", - "outputs" : ["Add_1071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1033"], - "name" : "Tanh_1034", - "op" : "Tanh", - "outputs" : ["Tanh_1034"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1071"], - "name" : "Tanh_1072", - "op" : "Tanh", - "outputs" : ["Tanh_1072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1017", "Tanh_1034" ], - "name" : "Multiply_1035", - "op" : "Multiply", - "outputs" : ["Multiply_1035"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1055", "Tanh_1072" ], - "name" : "Multiply_1073", - "op" : "Multiply", - "outputs" : ["Multiply_1073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1035"], - "name" : "Reshape_1036", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1036"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1035", "Reshape_1078" ], - "name" : "Dot_1079", - "op" : "Dot", - "outputs" : ["Dot_1079"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1073", "Reshape_1074" ], - "name" : "Dot_1075", - "op" : "Dot", - "outputs" : ["Dot_1075"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1073", "Reshape_1116" ], - "name" : "Dot_1117", - "op" : "Dot", - "outputs" : ["Dot_1117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1079", "Broadcast_1080" ], - "name" : "Add_1081", - "op" : "Add", - "outputs" : ["Add_1081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1075", "Broadcast_1076" ], - "name" : "Add_1077", - "op" : "Add", - "outputs" : ["Add_1077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1117", "Broadcast_1118" ], - "name" : "Add_1119", - "op" : "Add", - "outputs" : ["Add_1119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1077", "Add_1081" ], - "name" : "Add_1082", - "op" : "Add", - "outputs" : ["Add_1082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1115", "Add_1119" ], - "name" : "Add_1120", - "op" : "Add", - "outputs" : ["Add_1120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1082"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1083", - "op" : "Slice", - "outputs" : ["Slice_1083"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1082"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1084", - "op" : "Slice", - "outputs" : ["Slice_1084"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1082"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1085", - "op" : "Slice", - "outputs" : ["Slice_1085"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1082"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1086", - "op" : "Slice", - "outputs" : ["Slice_1086"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1120"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1121", - "op" : "Slice", - "outputs" : ["Slice_1121"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1120"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1122", - "op" : "Slice", - "outputs" : ["Slice_1122"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1120"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1123", - "op" : "Slice", - "outputs" : ["Slice_1123"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1120"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1124", - "op" : "Slice", - "outputs" : ["Slice_1124"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1083"], - "name" : "Negative_1102", - "op" : "Negative", - "outputs" : ["Negative_1102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1084"], - "name" : "Negative_1095", - "op" : "Negative", - "outputs" : ["Negative_1095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1085"], - "name" : "Tanh_1106", - "op" : "Tanh", - "outputs" : ["Tanh_1106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1086"], - "name" : "Negative_1089", - "op" : "Negative", - "outputs" : ["Negative_1089"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1121"], - "name" : "Negative_1140", - "op" : "Negative", - "outputs" : ["Negative_1140"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1122"], - "name" : "Negative_1133", - "op" : "Negative", - "outputs" : ["Negative_1133"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1123"], - "name" : "Tanh_1144", - "op" : "Tanh", - "outputs" : ["Tanh_1144"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1124"], - "name" : "Negative_1127", - "op" : "Negative", - "outputs" : ["Negative_1127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1102"], - "name" : "Exp_1103", - "op" : "Exp", - "outputs" : ["Exp_1103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1095"], - "name" : "Exp_1096", - "op" : "Exp", - "outputs" : ["Exp_1096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1089"], - "name" : "Exp_1090", - "op" : "Exp", - "outputs" : ["Exp_1090"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1140"], - "name" : "Exp_1141", - "op" : "Exp", - "outputs" : ["Exp_1141"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1133"], - "name" : "Exp_1134", - "op" : "Exp", - "outputs" : ["Exp_1134"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1127"], - "name" : "Exp_1128", - "op" : "Exp", - "outputs" : ["Exp_1128"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1101", "Exp_1103" ], - "name" : "Add_1104", - "op" : "Add", - "outputs" : ["Add_1104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1094", "Exp_1096" ], - "name" : "Add_1097", - "op" : "Add", - "outputs" : ["Add_1097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1088", "Exp_1090" ], - "name" : "Add_1091", - "op" : "Add", - "outputs" : ["Add_1091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1139", "Exp_1141" ], - "name" : "Add_1142", - "op" : "Add", - "outputs" : ["Add_1142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1132", "Exp_1134" ], - "name" : "Add_1135", - "op" : "Add", - "outputs" : ["Add_1135"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1126", "Exp_1128" ], - "name" : "Add_1129", - "op" : "Add", - "outputs" : ["Add_1129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1101", "Add_1104" ], - "name" : "Divide_1105", - "op" : "Divide", - "outputs" : ["Divide_1105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1094", "Add_1097" ], - "name" : "Divide_1098", - "op" : "Divide", - "outputs" : ["Divide_1098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1088", "Add_1091" ], - "name" : "Divide_1092", - "op" : "Divide", - "outputs" : ["Divide_1092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1139", "Add_1142" ], - "name" : "Divide_1143", - "op" : "Divide", - "outputs" : ["Divide_1143"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1132", "Add_1135" ], - "name" : "Divide_1136", - "op" : "Divide", - "outputs" : ["Divide_1136"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1126", "Add_1129" ], - "name" : "Divide_1130", - "op" : "Divide", - "outputs" : ["Divide_1130"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1105", "Tanh_1106" ], - "name" : "Multiply_1107", - "op" : "Multiply", - "outputs" : ["Multiply_1107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1098", "Add_1033" ], - "name" : "Multiply_1099", - "op" : "Multiply", - "outputs" : ["Multiply_1099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1143", "Tanh_1144" ], - "name" : "Multiply_1145", - "op" : "Multiply", - "outputs" : ["Multiply_1145"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1136", "Add_1071" ], - "name" : "Multiply_1137", - "op" : "Multiply", - "outputs" : ["Multiply_1137"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1099", "Multiply_1107" ], - "name" : "Add_1108", - "op" : "Add", - "outputs" : ["Add_1108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1137", "Multiply_1145" ], - "name" : "Add_1146", - "op" : "Add", - "outputs" : ["Add_1146"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1108"], - "name" : "Tanh_1109", - "op" : "Tanh", - "outputs" : ["Tanh_1109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1146"], - "name" : "Tanh_1147", - "op" : "Tanh", - "outputs" : ["Tanh_1147"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1092", "Tanh_1109" ], - "name" : "Multiply_1110", - "op" : "Multiply", - "outputs" : ["Multiply_1110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1130", "Tanh_1147" ], - "name" : "Multiply_1148", - "op" : "Multiply", - "outputs" : ["Multiply_1148"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1110"], - "name" : "Reshape_1111", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1110", "Reshape_1153" ], - "name" : "Dot_1154", - "op" : "Dot", - "outputs" : ["Dot_1154"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1148", "Reshape_1149" ], - "name" : "Dot_1150", - "op" : "Dot", - "outputs" : ["Dot_1150"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1148", "Reshape_1191" ], - "name" : "Dot_1192", - "op" : "Dot", - "outputs" : ["Dot_1192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1154", "Broadcast_1155" ], - "name" : "Add_1156", - "op" : "Add", - "outputs" : ["Add_1156"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1150", "Broadcast_1151" ], - "name" : "Add_1152", - "op" : "Add", - "outputs" : ["Add_1152"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1192", "Broadcast_1193" ], - "name" : "Add_1194", - "op" : "Add", - "outputs" : ["Add_1194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1152", "Add_1156" ], - "name" : "Add_1157", - "op" : "Add", - "outputs" : ["Add_1157"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1190", "Add_1194" ], - "name" : "Add_1195", - "op" : "Add", - "outputs" : ["Add_1195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1157"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1158", - "op" : "Slice", - "outputs" : ["Slice_1158"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1157"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1159", - "op" : "Slice", - "outputs" : ["Slice_1159"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1157"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1160", - "op" : "Slice", - "outputs" : ["Slice_1160"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1157"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1161", - "op" : "Slice", - "outputs" : ["Slice_1161"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1195"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1196", - "op" : "Slice", - "outputs" : ["Slice_1196"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1195"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1197", - "op" : "Slice", - "outputs" : ["Slice_1197"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1195"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1198", - "op" : "Slice", - "outputs" : ["Slice_1198"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1195"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1199", - "op" : "Slice", - "outputs" : ["Slice_1199"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1158"], - "name" : "Negative_1177", - "op" : "Negative", - "outputs" : ["Negative_1177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1159"], - "name" : "Negative_1170", - "op" : "Negative", - "outputs" : ["Negative_1170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1160"], - "name" : "Tanh_1181", - "op" : "Tanh", - "outputs" : ["Tanh_1181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1161"], - "name" : "Negative_1164", - "op" : "Negative", - "outputs" : ["Negative_1164"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1196"], - "name" : "Negative_1215", - "op" : "Negative", - "outputs" : ["Negative_1215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1197"], - "name" : "Negative_1208", - "op" : "Negative", - "outputs" : ["Negative_1208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1198"], - "name" : "Tanh_1219", - "op" : "Tanh", - "outputs" : ["Tanh_1219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1199"], - "name" : "Negative_1202", - "op" : "Negative", - "outputs" : ["Negative_1202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1177"], - "name" : "Exp_1178", - "op" : "Exp", - "outputs" : ["Exp_1178"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1170"], - "name" : "Exp_1171", - "op" : "Exp", - "outputs" : ["Exp_1171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1164"], - "name" : "Exp_1165", - "op" : "Exp", - "outputs" : ["Exp_1165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1215"], - "name" : "Exp_1216", - "op" : "Exp", - "outputs" : ["Exp_1216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1208"], - "name" : "Exp_1209", - "op" : "Exp", - "outputs" : ["Exp_1209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1202"], - "name" : "Exp_1203", - "op" : "Exp", - "outputs" : ["Exp_1203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1176", "Exp_1178" ], - "name" : "Add_1179", - "op" : "Add", - "outputs" : ["Add_1179"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1169", "Exp_1171" ], - "name" : "Add_1172", - "op" : "Add", - "outputs" : ["Add_1172"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1163", "Exp_1165" ], - "name" : "Add_1166", - "op" : "Add", - "outputs" : ["Add_1166"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1214", "Exp_1216" ], - "name" : "Add_1217", - "op" : "Add", - "outputs" : ["Add_1217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1207", "Exp_1209" ], - "name" : "Add_1210", - "op" : "Add", - "outputs" : ["Add_1210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1201", "Exp_1203" ], - "name" : "Add_1204", - "op" : "Add", - "outputs" : ["Add_1204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1176", "Add_1179" ], - "name" : "Divide_1180", - "op" : "Divide", - "outputs" : ["Divide_1180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1169", "Add_1172" ], - "name" : "Divide_1173", - "op" : "Divide", - "outputs" : ["Divide_1173"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1163", "Add_1166" ], - "name" : "Divide_1167", - "op" : "Divide", - "outputs" : ["Divide_1167"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1214", "Add_1217" ], - "name" : "Divide_1218", - "op" : "Divide", - "outputs" : ["Divide_1218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1207", "Add_1210" ], - "name" : "Divide_1211", - "op" : "Divide", - "outputs" : ["Divide_1211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1201", "Add_1204" ], - "name" : "Divide_1205", - "op" : "Divide", - "outputs" : ["Divide_1205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1180", "Tanh_1181" ], - "name" : "Multiply_1182", - "op" : "Multiply", - "outputs" : ["Multiply_1182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1173", "Add_1108" ], - "name" : "Multiply_1174", - "op" : "Multiply", - "outputs" : ["Multiply_1174"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1218", "Tanh_1219" ], - "name" : "Multiply_1220", - "op" : "Multiply", - "outputs" : ["Multiply_1220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1211", "Add_1146" ], - "name" : "Multiply_1212", - "op" : "Multiply", - "outputs" : ["Multiply_1212"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1174", "Multiply_1182" ], - "name" : "Add_1183", - "op" : "Add", - "outputs" : ["Add_1183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1212", "Multiply_1220" ], - "name" : "Add_1221", - "op" : "Add", - "outputs" : ["Add_1221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1183"], - "name" : "Tanh_1184", - "op" : "Tanh", - "outputs" : ["Tanh_1184"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1221"], - "name" : "Tanh_1222", - "op" : "Tanh", - "outputs" : ["Tanh_1222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1167", "Tanh_1184" ], - "name" : "Multiply_1185", - "op" : "Multiply", - "outputs" : ["Multiply_1185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1205", "Tanh_1222" ], - "name" : "Multiply_1223", - "op" : "Multiply", - "outputs" : ["Multiply_1223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1185"], - "name" : "Reshape_1186", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1185", "Reshape_1228" ], - "name" : "Dot_1229", - "op" : "Dot", - "outputs" : ["Dot_1229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1223", "Reshape_1224" ], - "name" : "Dot_1225", - "op" : "Dot", - "outputs" : ["Dot_1225"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1223", "Reshape_1266" ], - "name" : "Dot_1267", - "op" : "Dot", - "outputs" : ["Dot_1267"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1229", "Broadcast_1230" ], - "name" : "Add_1231", - "op" : "Add", - "outputs" : ["Add_1231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1225", "Broadcast_1226" ], - "name" : "Add_1227", - "op" : "Add", - "outputs" : ["Add_1227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1267", "Broadcast_1268" ], - "name" : "Add_1269", - "op" : "Add", - "outputs" : ["Add_1269"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1227", "Add_1231" ], - "name" : "Add_1232", - "op" : "Add", - "outputs" : ["Add_1232"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1265", "Add_1269" ], - "name" : "Add_1270", - "op" : "Add", - "outputs" : ["Add_1270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1232"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1233", - "op" : "Slice", - "outputs" : ["Slice_1233"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1232"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1234", - "op" : "Slice", - "outputs" : ["Slice_1234"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1232"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1235", - "op" : "Slice", - "outputs" : ["Slice_1235"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1232"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1236", - "op" : "Slice", - "outputs" : ["Slice_1236"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1270"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1271", - "op" : "Slice", - "outputs" : ["Slice_1271"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1270"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1272", - "op" : "Slice", - "outputs" : ["Slice_1272"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1270"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1273", - "op" : "Slice", - "outputs" : ["Slice_1273"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1270"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1274", - "op" : "Slice", - "outputs" : ["Slice_1274"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1233"], - "name" : "Negative_1252", - "op" : "Negative", - "outputs" : ["Negative_1252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1234"], - "name" : "Negative_1245", - "op" : "Negative", - "outputs" : ["Negative_1245"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1235"], - "name" : "Tanh_1256", - "op" : "Tanh", - "outputs" : ["Tanh_1256"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1236"], - "name" : "Negative_1239", - "op" : "Negative", - "outputs" : ["Negative_1239"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1271"], - "name" : "Negative_1290", - "op" : "Negative", - "outputs" : ["Negative_1290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1272"], - "name" : "Negative_1283", - "op" : "Negative", - "outputs" : ["Negative_1283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1273"], - "name" : "Tanh_1294", - "op" : "Tanh", - "outputs" : ["Tanh_1294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1274"], - "name" : "Negative_1277", - "op" : "Negative", - "outputs" : ["Negative_1277"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1252"], - "name" : "Exp_1253", - "op" : "Exp", - "outputs" : ["Exp_1253"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1245"], - "name" : "Exp_1246", - "op" : "Exp", - "outputs" : ["Exp_1246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1239"], - "name" : "Exp_1240", - "op" : "Exp", - "outputs" : ["Exp_1240"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1290"], - "name" : "Exp_1291", - "op" : "Exp", - "outputs" : ["Exp_1291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1283"], - "name" : "Exp_1284", - "op" : "Exp", - "outputs" : ["Exp_1284"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1277"], - "name" : "Exp_1278", - "op" : "Exp", - "outputs" : ["Exp_1278"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1251", "Exp_1253" ], - "name" : "Add_1254", - "op" : "Add", - "outputs" : ["Add_1254"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1244", "Exp_1246" ], - "name" : "Add_1247", - "op" : "Add", - "outputs" : ["Add_1247"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1238", "Exp_1240" ], - "name" : "Add_1241", - "op" : "Add", - "outputs" : ["Add_1241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1289", "Exp_1291" ], - "name" : "Add_1292", - "op" : "Add", - "outputs" : ["Add_1292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1282", "Exp_1284" ], - "name" : "Add_1285", - "op" : "Add", - "outputs" : ["Add_1285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1276", "Exp_1278" ], - "name" : "Add_1279", - "op" : "Add", - "outputs" : ["Add_1279"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1251", "Add_1254" ], - "name" : "Divide_1255", - "op" : "Divide", - "outputs" : ["Divide_1255"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1244", "Add_1247" ], - "name" : "Divide_1248", - "op" : "Divide", - "outputs" : ["Divide_1248"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1238", "Add_1241" ], - "name" : "Divide_1242", - "op" : "Divide", - "outputs" : ["Divide_1242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1289", "Add_1292" ], - "name" : "Divide_1293", - "op" : "Divide", - "outputs" : ["Divide_1293"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1282", "Add_1285" ], - "name" : "Divide_1286", - "op" : "Divide", - "outputs" : ["Divide_1286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1276", "Add_1279" ], - "name" : "Divide_1280", - "op" : "Divide", - "outputs" : ["Divide_1280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1255", "Tanh_1256" ], - "name" : "Multiply_1257", - "op" : "Multiply", - "outputs" : ["Multiply_1257"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1248", "Add_1183" ], - "name" : "Multiply_1249", - "op" : "Multiply", - "outputs" : ["Multiply_1249"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1293", "Tanh_1294" ], - "name" : "Multiply_1295", - "op" : "Multiply", - "outputs" : ["Multiply_1295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1286", "Add_1221" ], - "name" : "Multiply_1287", - "op" : "Multiply", - "outputs" : ["Multiply_1287"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1249", "Multiply_1257" ], - "name" : "Add_1258", - "op" : "Add", - "outputs" : ["Add_1258"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1287", "Multiply_1295" ], - "name" : "Add_1296", - "op" : "Add", - "outputs" : ["Add_1296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1258"], - "name" : "Tanh_1259", - "op" : "Tanh", - "outputs" : ["Tanh_1259"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1296"], - "name" : "Tanh_1297", - "op" : "Tanh", - "outputs" : ["Tanh_1297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1242", "Tanh_1259" ], - "name" : "Multiply_1260", - "op" : "Multiply", - "outputs" : ["Multiply_1260"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1280", "Tanh_1297" ], - "name" : "Multiply_1298", - "op" : "Multiply", - "outputs" : ["Multiply_1298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1260"], - "name" : "Reshape_1261", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1261"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1260", "Reshape_1303" ], - "name" : "Dot_1304", - "op" : "Dot", - "outputs" : ["Dot_1304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1298", "Reshape_1299" ], - "name" : "Dot_1300", - "op" : "Dot", - "outputs" : ["Dot_1300"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1298", "Reshape_1341" ], - "name" : "Dot_1342", - "op" : "Dot", - "outputs" : ["Dot_1342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1304", "Broadcast_1305" ], - "name" : "Add_1306", - "op" : "Add", - "outputs" : ["Add_1306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1300", "Broadcast_1301" ], - "name" : "Add_1302", - "op" : "Add", - "outputs" : ["Add_1302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1342", "Broadcast_1343" ], - "name" : "Add_1344", - "op" : "Add", - "outputs" : ["Add_1344"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1302", "Add_1306" ], - "name" : "Add_1307", - "op" : "Add", - "outputs" : ["Add_1307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1340", "Add_1344" ], - "name" : "Add_1345", - "op" : "Add", - "outputs" : ["Add_1345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1307"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1308", - "op" : "Slice", - "outputs" : ["Slice_1308"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1307"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1309", - "op" : "Slice", - "outputs" : ["Slice_1309"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1307"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1310", - "op" : "Slice", - "outputs" : ["Slice_1310"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1307"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1311", - "op" : "Slice", - "outputs" : ["Slice_1311"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1345"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1346", - "op" : "Slice", - "outputs" : ["Slice_1346"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1345"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1347", - "op" : "Slice", - "outputs" : ["Slice_1347"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1345"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1348", - "op" : "Slice", - "outputs" : ["Slice_1348"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1345"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1349", - "op" : "Slice", - "outputs" : ["Slice_1349"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1308"], - "name" : "Negative_1327", - "op" : "Negative", - "outputs" : ["Negative_1327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1309"], - "name" : "Negative_1320", - "op" : "Negative", - "outputs" : ["Negative_1320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1310"], - "name" : "Tanh_1331", - "op" : "Tanh", - "outputs" : ["Tanh_1331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1311"], - "name" : "Negative_1314", - "op" : "Negative", - "outputs" : ["Negative_1314"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1346"], - "name" : "Negative_1365", - "op" : "Negative", - "outputs" : ["Negative_1365"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1347"], - "name" : "Negative_1358", - "op" : "Negative", - "outputs" : ["Negative_1358"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1348"], - "name" : "Tanh_1369", - "op" : "Tanh", - "outputs" : ["Tanh_1369"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1349"], - "name" : "Negative_1352", - "op" : "Negative", - "outputs" : ["Negative_1352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1327"], - "name" : "Exp_1328", - "op" : "Exp", - "outputs" : ["Exp_1328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1320"], - "name" : "Exp_1321", - "op" : "Exp", - "outputs" : ["Exp_1321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1314"], - "name" : "Exp_1315", - "op" : "Exp", - "outputs" : ["Exp_1315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1365"], - "name" : "Exp_1366", - "op" : "Exp", - "outputs" : ["Exp_1366"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1358"], - "name" : "Exp_1359", - "op" : "Exp", - "outputs" : ["Exp_1359"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1352"], - "name" : "Exp_1353", - "op" : "Exp", - "outputs" : ["Exp_1353"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1326", "Exp_1328" ], - "name" : "Add_1329", - "op" : "Add", - "outputs" : ["Add_1329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1319", "Exp_1321" ], - "name" : "Add_1322", - "op" : "Add", - "outputs" : ["Add_1322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1313", "Exp_1315" ], - "name" : "Add_1316", - "op" : "Add", - "outputs" : ["Add_1316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1364", "Exp_1366" ], - "name" : "Add_1367", - "op" : "Add", - "outputs" : ["Add_1367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1357", "Exp_1359" ], - "name" : "Add_1360", - "op" : "Add", - "outputs" : ["Add_1360"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1351", "Exp_1353" ], - "name" : "Add_1354", - "op" : "Add", - "outputs" : ["Add_1354"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1326", "Add_1329" ], - "name" : "Divide_1330", - "op" : "Divide", - "outputs" : ["Divide_1330"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1319", "Add_1322" ], - "name" : "Divide_1323", - "op" : "Divide", - "outputs" : ["Divide_1323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1313", "Add_1316" ], - "name" : "Divide_1317", - "op" : "Divide", - "outputs" : ["Divide_1317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1364", "Add_1367" ], - "name" : "Divide_1368", - "op" : "Divide", - "outputs" : ["Divide_1368"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1357", "Add_1360" ], - "name" : "Divide_1361", - "op" : "Divide", - "outputs" : ["Divide_1361"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1351", "Add_1354" ], - "name" : "Divide_1355", - "op" : "Divide", - "outputs" : ["Divide_1355"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1330", "Tanh_1331" ], - "name" : "Multiply_1332", - "op" : "Multiply", - "outputs" : ["Multiply_1332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1323", "Add_1258" ], - "name" : "Multiply_1324", - "op" : "Multiply", - "outputs" : ["Multiply_1324"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1368", "Tanh_1369" ], - "name" : "Multiply_1370", - "op" : "Multiply", - "outputs" : ["Multiply_1370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1361", "Add_1296" ], - "name" : "Multiply_1362", - "op" : "Multiply", - "outputs" : ["Multiply_1362"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1324", "Multiply_1332" ], - "name" : "Add_1333", - "op" : "Add", - "outputs" : ["Add_1333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1362", "Multiply_1370" ], - "name" : "Add_1371", - "op" : "Add", - "outputs" : ["Add_1371"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1333"], - "name" : "Tanh_1334", - "op" : "Tanh", - "outputs" : ["Tanh_1334"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1371"], - "name" : "Tanh_1372", - "op" : "Tanh", - "outputs" : ["Tanh_1372"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1317", "Tanh_1334" ], - "name" : "Multiply_1335", - "op" : "Multiply", - "outputs" : ["Multiply_1335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1355", "Tanh_1372" ], - "name" : "Multiply_1373", - "op" : "Multiply", - "outputs" : ["Multiply_1373"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1335"], - "name" : "Reshape_1336", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1335", "Reshape_1378" ], - "name" : "Dot_1379", - "op" : "Dot", - "outputs" : ["Dot_1379"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1373", "Reshape_1374" ], - "name" : "Dot_1375", - "op" : "Dot", - "outputs" : ["Dot_1375"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1373", "Reshape_1416" ], - "name" : "Dot_1417", - "op" : "Dot", - "outputs" : ["Dot_1417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1379", "Broadcast_1380" ], - "name" : "Add_1381", - "op" : "Add", - "outputs" : ["Add_1381"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1375", "Broadcast_1376" ], - "name" : "Add_1377", - "op" : "Add", - "outputs" : ["Add_1377"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1417", "Broadcast_1418" ], - "name" : "Add_1419", - "op" : "Add", - "outputs" : ["Add_1419"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1377", "Add_1381" ], - "name" : "Add_1382", - "op" : "Add", - "outputs" : ["Add_1382"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1415", "Add_1419" ], - "name" : "Add_1420", - "op" : "Add", - "outputs" : ["Add_1420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1382"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1383", - "op" : "Slice", - "outputs" : ["Slice_1383"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1382"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1384", - "op" : "Slice", - "outputs" : ["Slice_1384"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1382"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1385", - "op" : "Slice", - "outputs" : ["Slice_1385"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1382"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1386", - "op" : "Slice", - "outputs" : ["Slice_1386"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1420"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1421", - "op" : "Slice", - "outputs" : ["Slice_1421"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1420"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1422", - "op" : "Slice", - "outputs" : ["Slice_1422"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1420"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1423", - "op" : "Slice", - "outputs" : ["Slice_1423"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1420"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1424", - "op" : "Slice", - "outputs" : ["Slice_1424"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1383"], - "name" : "Negative_1402", - "op" : "Negative", - "outputs" : ["Negative_1402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1384"], - "name" : "Negative_1395", - "op" : "Negative", - "outputs" : ["Negative_1395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1385"], - "name" : "Tanh_1406", - "op" : "Tanh", - "outputs" : ["Tanh_1406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1386"], - "name" : "Negative_1389", - "op" : "Negative", - "outputs" : ["Negative_1389"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1421"], - "name" : "Negative_1440", - "op" : "Negative", - "outputs" : ["Negative_1440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1422"], - "name" : "Negative_1433", - "op" : "Negative", - "outputs" : ["Negative_1433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1423"], - "name" : "Tanh_1444", - "op" : "Tanh", - "outputs" : ["Tanh_1444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1424"], - "name" : "Negative_1427", - "op" : "Negative", - "outputs" : ["Negative_1427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1402"], - "name" : "Exp_1403", - "op" : "Exp", - "outputs" : ["Exp_1403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1395"], - "name" : "Exp_1396", - "op" : "Exp", - "outputs" : ["Exp_1396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1389"], - "name" : "Exp_1390", - "op" : "Exp", - "outputs" : ["Exp_1390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1440"], - "name" : "Exp_1441", - "op" : "Exp", - "outputs" : ["Exp_1441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1433"], - "name" : "Exp_1434", - "op" : "Exp", - "outputs" : ["Exp_1434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1427"], - "name" : "Exp_1428", - "op" : "Exp", - "outputs" : ["Exp_1428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1401", "Exp_1403" ], - "name" : "Add_1404", - "op" : "Add", - "outputs" : ["Add_1404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1394", "Exp_1396" ], - "name" : "Add_1397", - "op" : "Add", - "outputs" : ["Add_1397"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1388", "Exp_1390" ], - "name" : "Add_1391", - "op" : "Add", - "outputs" : ["Add_1391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1439", "Exp_1441" ], - "name" : "Add_1442", - "op" : "Add", - "outputs" : ["Add_1442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1432", "Exp_1434" ], - "name" : "Add_1435", - "op" : "Add", - "outputs" : ["Add_1435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1426", "Exp_1428" ], - "name" : "Add_1429", - "op" : "Add", - "outputs" : ["Add_1429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1401", "Add_1404" ], - "name" : "Divide_1405", - "op" : "Divide", - "outputs" : ["Divide_1405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1394", "Add_1397" ], - "name" : "Divide_1398", - "op" : "Divide", - "outputs" : ["Divide_1398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1388", "Add_1391" ], - "name" : "Divide_1392", - "op" : "Divide", - "outputs" : ["Divide_1392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1439", "Add_1442" ], - "name" : "Divide_1443", - "op" : "Divide", - "outputs" : ["Divide_1443"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1432", "Add_1435" ], - "name" : "Divide_1436", - "op" : "Divide", - "outputs" : ["Divide_1436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1426", "Add_1429" ], - "name" : "Divide_1430", - "op" : "Divide", - "outputs" : ["Divide_1430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1405", "Tanh_1406" ], - "name" : "Multiply_1407", - "op" : "Multiply", - "outputs" : ["Multiply_1407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1398", "Add_1333" ], - "name" : "Multiply_1399", - "op" : "Multiply", - "outputs" : ["Multiply_1399"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1443", "Tanh_1444" ], - "name" : "Multiply_1445", - "op" : "Multiply", - "outputs" : ["Multiply_1445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1436", "Add_1371" ], - "name" : "Multiply_1437", - "op" : "Multiply", - "outputs" : ["Multiply_1437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1399", "Multiply_1407" ], - "name" : "Add_1408", - "op" : "Add", - "outputs" : ["Add_1408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1437", "Multiply_1445" ], - "name" : "Add_1446", - "op" : "Add", - "outputs" : ["Add_1446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1408"], - "name" : "Tanh_1409", - "op" : "Tanh", - "outputs" : ["Tanh_1409"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1446"], - "name" : "Tanh_1447", - "op" : "Tanh", - "outputs" : ["Tanh_1447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1392", "Tanh_1409" ], - "name" : "Multiply_1410", - "op" : "Multiply", - "outputs" : ["Multiply_1410"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1430", "Tanh_1447" ], - "name" : "Multiply_1448", - "op" : "Multiply", - "outputs" : ["Multiply_1448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1410"], - "name" : "Reshape_1411", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1410", "Reshape_1453" ], - "name" : "Dot_1454", - "op" : "Dot", - "outputs" : ["Dot_1454"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1448", "Reshape_1449" ], - "name" : "Dot_1450", - "op" : "Dot", - "outputs" : ["Dot_1450"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1448", "Reshape_1491" ], - "name" : "Dot_1492", - "op" : "Dot", - "outputs" : ["Dot_1492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1454", "Broadcast_1455" ], - "name" : "Add_1456", - "op" : "Add", - "outputs" : ["Add_1456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1450", "Broadcast_1451" ], - "name" : "Add_1452", - "op" : "Add", - "outputs" : ["Add_1452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1492", "Broadcast_1493" ], - "name" : "Add_1494", - "op" : "Add", - "outputs" : ["Add_1494"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1452", "Add_1456" ], - "name" : "Add_1457", - "op" : "Add", - "outputs" : ["Add_1457"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1490", "Add_1494" ], - "name" : "Add_1495", - "op" : "Add", - "outputs" : ["Add_1495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1457"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1458", - "op" : "Slice", - "outputs" : ["Slice_1458"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1457"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1459", - "op" : "Slice", - "outputs" : ["Slice_1459"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1457"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1460", - "op" : "Slice", - "outputs" : ["Slice_1460"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1457"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1461", - "op" : "Slice", - "outputs" : ["Slice_1461"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1495"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1496", - "op" : "Slice", - "outputs" : ["Slice_1496"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1495"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1497", - "op" : "Slice", - "outputs" : ["Slice_1497"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1495"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1498", - "op" : "Slice", - "outputs" : ["Slice_1498"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1495"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1499", - "op" : "Slice", - "outputs" : ["Slice_1499"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1458"], - "name" : "Negative_1477", - "op" : "Negative", - "outputs" : ["Negative_1477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1459"], - "name" : "Negative_1470", - "op" : "Negative", - "outputs" : ["Negative_1470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1460"], - "name" : "Tanh_1481", - "op" : "Tanh", - "outputs" : ["Tanh_1481"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1461"], - "name" : "Negative_1464", - "op" : "Negative", - "outputs" : ["Negative_1464"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1496"], - "name" : "Negative_1515", - "op" : "Negative", - "outputs" : ["Negative_1515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1497"], - "name" : "Negative_1508", - "op" : "Negative", - "outputs" : ["Negative_1508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1498"], - "name" : "Tanh_1519", - "op" : "Tanh", - "outputs" : ["Tanh_1519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1499"], - "name" : "Negative_1502", - "op" : "Negative", - "outputs" : ["Negative_1502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1477"], - "name" : "Exp_1478", - "op" : "Exp", - "outputs" : ["Exp_1478"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1470"], - "name" : "Exp_1471", - "op" : "Exp", - "outputs" : ["Exp_1471"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1464"], - "name" : "Exp_1465", - "op" : "Exp", - "outputs" : ["Exp_1465"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1515"], - "name" : "Exp_1516", - "op" : "Exp", - "outputs" : ["Exp_1516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1508"], - "name" : "Exp_1509", - "op" : "Exp", - "outputs" : ["Exp_1509"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1502"], - "name" : "Exp_1503", - "op" : "Exp", - "outputs" : ["Exp_1503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1476", "Exp_1478" ], - "name" : "Add_1479", - "op" : "Add", - "outputs" : ["Add_1479"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1469", "Exp_1471" ], - "name" : "Add_1472", - "op" : "Add", - "outputs" : ["Add_1472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1463", "Exp_1465" ], - "name" : "Add_1466", - "op" : "Add", - "outputs" : ["Add_1466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1514", "Exp_1516" ], - "name" : "Add_1517", - "op" : "Add", - "outputs" : ["Add_1517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1507", "Exp_1509" ], - "name" : "Add_1510", - "op" : "Add", - "outputs" : ["Add_1510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1501", "Exp_1503" ], - "name" : "Add_1504", - "op" : "Add", - "outputs" : ["Add_1504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1476", "Add_1479" ], - "name" : "Divide_1480", - "op" : "Divide", - "outputs" : ["Divide_1480"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1469", "Add_1472" ], - "name" : "Divide_1473", - "op" : "Divide", - "outputs" : ["Divide_1473"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1463", "Add_1466" ], - "name" : "Divide_1467", - "op" : "Divide", - "outputs" : ["Divide_1467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1514", "Add_1517" ], - "name" : "Divide_1518", - "op" : "Divide", - "outputs" : ["Divide_1518"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1507", "Add_1510" ], - "name" : "Divide_1511", - "op" : "Divide", - "outputs" : ["Divide_1511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1501", "Add_1504" ], - "name" : "Divide_1505", - "op" : "Divide", - "outputs" : ["Divide_1505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1480", "Tanh_1481" ], - "name" : "Multiply_1482", - "op" : "Multiply", - "outputs" : ["Multiply_1482"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1473", "Add_1408" ], - "name" : "Multiply_1474", - "op" : "Multiply", - "outputs" : ["Multiply_1474"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1518", "Tanh_1519" ], - "name" : "Multiply_1520", - "op" : "Multiply", - "outputs" : ["Multiply_1520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1511", "Add_1446" ], - "name" : "Multiply_1512", - "op" : "Multiply", - "outputs" : ["Multiply_1512"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1474", "Multiply_1482" ], - "name" : "Add_1483", - "op" : "Add", - "outputs" : ["Add_1483"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1512", "Multiply_1520" ], - "name" : "Add_1521", - "op" : "Add", - "outputs" : ["Add_1521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1483"], - "name" : "Tanh_1484", - "op" : "Tanh", - "outputs" : ["Tanh_1484"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1521"], - "name" : "Tanh_1522", - "op" : "Tanh", - "outputs" : ["Tanh_1522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1467", "Tanh_1484" ], - "name" : "Multiply_1485", - "op" : "Multiply", - "outputs" : ["Multiply_1485"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1505", "Tanh_1522" ], - "name" : "Multiply_1523", - "op" : "Multiply", - "outputs" : ["Multiply_1523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1485"], - "name" : "Reshape_1486", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1486"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1485", "Reshape_1528" ], - "name" : "Dot_1529", - "op" : "Dot", - "outputs" : ["Dot_1529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1523", "Reshape_1524" ], - "name" : "Dot_1525", - "op" : "Dot", - "outputs" : ["Dot_1525"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1523", "Reshape_1566" ], - "name" : "Dot_1567", - "op" : "Dot", - "outputs" : ["Dot_1567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1529", "Broadcast_1530" ], - "name" : "Add_1531", - "op" : "Add", - "outputs" : ["Add_1531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1525", "Broadcast_1526" ], - "name" : "Add_1527", - "op" : "Add", - "outputs" : ["Add_1527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1567", "Broadcast_1568" ], - "name" : "Add_1569", - "op" : "Add", - "outputs" : ["Add_1569"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1527", "Add_1531" ], - "name" : "Add_1532", - "op" : "Add", - "outputs" : ["Add_1532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1565", "Add_1569" ], - "name" : "Add_1570", - "op" : "Add", - "outputs" : ["Add_1570"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1532"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1533", - "op" : "Slice", - "outputs" : ["Slice_1533"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1532"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1534", - "op" : "Slice", - "outputs" : ["Slice_1534"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1532"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1535", - "op" : "Slice", - "outputs" : ["Slice_1535"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1532"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1536", - "op" : "Slice", - "outputs" : ["Slice_1536"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1570"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1571", - "op" : "Slice", - "outputs" : ["Slice_1571"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1570"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1572", - "op" : "Slice", - "outputs" : ["Slice_1572"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1570"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1573", - "op" : "Slice", - "outputs" : ["Slice_1573"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1570"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1574", - "op" : "Slice", - "outputs" : ["Slice_1574"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1533"], - "name" : "Negative_1552", - "op" : "Negative", - "outputs" : ["Negative_1552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1534"], - "name" : "Negative_1545", - "op" : "Negative", - "outputs" : ["Negative_1545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1535"], - "name" : "Tanh_1556", - "op" : "Tanh", - "outputs" : ["Tanh_1556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1536"], - "name" : "Negative_1539", - "op" : "Negative", - "outputs" : ["Negative_1539"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1571"], - "name" : "Negative_1590", - "op" : "Negative", - "outputs" : ["Negative_1590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1572"], - "name" : "Negative_1583", - "op" : "Negative", - "outputs" : ["Negative_1583"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1573"], - "name" : "Tanh_1594", - "op" : "Tanh", - "outputs" : ["Tanh_1594"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1574"], - "name" : "Negative_1577", - "op" : "Negative", - "outputs" : ["Negative_1577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1552"], - "name" : "Exp_1553", - "op" : "Exp", - "outputs" : ["Exp_1553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1545"], - "name" : "Exp_1546", - "op" : "Exp", - "outputs" : ["Exp_1546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1539"], - "name" : "Exp_1540", - "op" : "Exp", - "outputs" : ["Exp_1540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1590"], - "name" : "Exp_1591", - "op" : "Exp", - "outputs" : ["Exp_1591"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1583"], - "name" : "Exp_1584", - "op" : "Exp", - "outputs" : ["Exp_1584"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1577"], - "name" : "Exp_1578", - "op" : "Exp", - "outputs" : ["Exp_1578"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1551", "Exp_1553" ], - "name" : "Add_1554", - "op" : "Add", - "outputs" : ["Add_1554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1544", "Exp_1546" ], - "name" : "Add_1547", - "op" : "Add", - "outputs" : ["Add_1547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1538", "Exp_1540" ], - "name" : "Add_1541", - "op" : "Add", - "outputs" : ["Add_1541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1589", "Exp_1591" ], - "name" : "Add_1592", - "op" : "Add", - "outputs" : ["Add_1592"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1582", "Exp_1584" ], - "name" : "Add_1585", - "op" : "Add", - "outputs" : ["Add_1585"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1576", "Exp_1578" ], - "name" : "Add_1579", - "op" : "Add", - "outputs" : ["Add_1579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1551", "Add_1554" ], - "name" : "Divide_1555", - "op" : "Divide", - "outputs" : ["Divide_1555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1544", "Add_1547" ], - "name" : "Divide_1548", - "op" : "Divide", - "outputs" : ["Divide_1548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1538", "Add_1541" ], - "name" : "Divide_1542", - "op" : "Divide", - "outputs" : ["Divide_1542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1589", "Add_1592" ], - "name" : "Divide_1593", - "op" : "Divide", - "outputs" : ["Divide_1593"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1582", "Add_1585" ], - "name" : "Divide_1586", - "op" : "Divide", - "outputs" : ["Divide_1586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1576", "Add_1579" ], - "name" : "Divide_1580", - "op" : "Divide", - "outputs" : ["Divide_1580"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1555", "Tanh_1556" ], - "name" : "Multiply_1557", - "op" : "Multiply", - "outputs" : ["Multiply_1557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1548", "Add_1483" ], - "name" : "Multiply_1549", - "op" : "Multiply", - "outputs" : ["Multiply_1549"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1593", "Tanh_1594" ], - "name" : "Multiply_1595", - "op" : "Multiply", - "outputs" : ["Multiply_1595"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1586", "Add_1521" ], - "name" : "Multiply_1587", - "op" : "Multiply", - "outputs" : ["Multiply_1587"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1549", "Multiply_1557" ], - "name" : "Add_1558", - "op" : "Add", - "outputs" : ["Add_1558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1587", "Multiply_1595" ], - "name" : "Add_1596", - "op" : "Add", - "outputs" : ["Add_1596"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1558"], - "name" : "Tanh_1559", - "op" : "Tanh", - "outputs" : ["Tanh_1559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1596"], - "name" : "Tanh_1597", - "op" : "Tanh", - "outputs" : ["Tanh_1597"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1542", "Tanh_1559" ], - "name" : "Multiply_1560", - "op" : "Multiply", - "outputs" : ["Multiply_1560"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1580", "Tanh_1597" ], - "name" : "Multiply_1598", - "op" : "Multiply", - "outputs" : ["Multiply_1598"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1560"], - "name" : "Reshape_1561", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1560", "Reshape_1603" ], - "name" : "Dot_1604", - "op" : "Dot", - "outputs" : ["Dot_1604"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1598", "Reshape_1599" ], - "name" : "Dot_1600", - "op" : "Dot", - "outputs" : ["Dot_1600"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1598", "Reshape_1641" ], - "name" : "Dot_1642", - "op" : "Dot", - "outputs" : ["Dot_1642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1604", "Broadcast_1605" ], - "name" : "Add_1606", - "op" : "Add", - "outputs" : ["Add_1606"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1600", "Broadcast_1601" ], - "name" : "Add_1602", - "op" : "Add", - "outputs" : ["Add_1602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1642", "Broadcast_1643" ], - "name" : "Add_1644", - "op" : "Add", - "outputs" : ["Add_1644"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1602", "Add_1606" ], - "name" : "Add_1607", - "op" : "Add", - "outputs" : ["Add_1607"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1640", "Add_1644" ], - "name" : "Add_1645", - "op" : "Add", - "outputs" : ["Add_1645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1607"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1608", - "op" : "Slice", - "outputs" : ["Slice_1608"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1607"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1609", - "op" : "Slice", - "outputs" : ["Slice_1609"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1607"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1610", - "op" : "Slice", - "outputs" : ["Slice_1610"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1607"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1611", - "op" : "Slice", - "outputs" : ["Slice_1611"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1645"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1646", - "op" : "Slice", - "outputs" : ["Slice_1646"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1645"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1647", - "op" : "Slice", - "outputs" : ["Slice_1647"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1645"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1648", - "op" : "Slice", - "outputs" : ["Slice_1648"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1645"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1649", - "op" : "Slice", - "outputs" : ["Slice_1649"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1608"], - "name" : "Negative_1627", - "op" : "Negative", - "outputs" : ["Negative_1627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1609"], - "name" : "Negative_1620", - "op" : "Negative", - "outputs" : ["Negative_1620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1610"], - "name" : "Tanh_1631", - "op" : "Tanh", - "outputs" : ["Tanh_1631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1611"], - "name" : "Negative_1614", - "op" : "Negative", - "outputs" : ["Negative_1614"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1646"], - "name" : "Negative_1665", - "op" : "Negative", - "outputs" : ["Negative_1665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1647"], - "name" : "Negative_1658", - "op" : "Negative", - "outputs" : ["Negative_1658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1648"], - "name" : "Tanh_1669", - "op" : "Tanh", - "outputs" : ["Tanh_1669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1649"], - "name" : "Negative_1652", - "op" : "Negative", - "outputs" : ["Negative_1652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1627"], - "name" : "Exp_1628", - "op" : "Exp", - "outputs" : ["Exp_1628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1620"], - "name" : "Exp_1621", - "op" : "Exp", - "outputs" : ["Exp_1621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1614"], - "name" : "Exp_1615", - "op" : "Exp", - "outputs" : ["Exp_1615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1665"], - "name" : "Exp_1666", - "op" : "Exp", - "outputs" : ["Exp_1666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1658"], - "name" : "Exp_1659", - "op" : "Exp", - "outputs" : ["Exp_1659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1652"], - "name" : "Exp_1653", - "op" : "Exp", - "outputs" : ["Exp_1653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1626", "Exp_1628" ], - "name" : "Add_1629", - "op" : "Add", - "outputs" : ["Add_1629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1619", "Exp_1621" ], - "name" : "Add_1622", - "op" : "Add", - "outputs" : ["Add_1622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1613", "Exp_1615" ], - "name" : "Add_1616", - "op" : "Add", - "outputs" : ["Add_1616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1664", "Exp_1666" ], - "name" : "Add_1667", - "op" : "Add", - "outputs" : ["Add_1667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1657", "Exp_1659" ], - "name" : "Add_1660", - "op" : "Add", - "outputs" : ["Add_1660"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1651", "Exp_1653" ], - "name" : "Add_1654", - "op" : "Add", - "outputs" : ["Add_1654"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1626", "Add_1629" ], - "name" : "Divide_1630", - "op" : "Divide", - "outputs" : ["Divide_1630"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1619", "Add_1622" ], - "name" : "Divide_1623", - "op" : "Divide", - "outputs" : ["Divide_1623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1613", "Add_1616" ], - "name" : "Divide_1617", - "op" : "Divide", - "outputs" : ["Divide_1617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1664", "Add_1667" ], - "name" : "Divide_1668", - "op" : "Divide", - "outputs" : ["Divide_1668"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1657", "Add_1660" ], - "name" : "Divide_1661", - "op" : "Divide", - "outputs" : ["Divide_1661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1651", "Add_1654" ], - "name" : "Divide_1655", - "op" : "Divide", - "outputs" : ["Divide_1655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1630", "Tanh_1631" ], - "name" : "Multiply_1632", - "op" : "Multiply", - "outputs" : ["Multiply_1632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1623", "Add_1558" ], - "name" : "Multiply_1624", - "op" : "Multiply", - "outputs" : ["Multiply_1624"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1668", "Tanh_1669" ], - "name" : "Multiply_1670", - "op" : "Multiply", - "outputs" : ["Multiply_1670"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1661", "Add_1596" ], - "name" : "Multiply_1662", - "op" : "Multiply", - "outputs" : ["Multiply_1662"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1624", "Multiply_1632" ], - "name" : "Add_1633", - "op" : "Add", - "outputs" : ["Add_1633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1662", "Multiply_1670" ], - "name" : "Add_1671", - "op" : "Add", - "outputs" : ["Add_1671"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1633"], - "name" : "Tanh_1634", - "op" : "Tanh", - "outputs" : ["Tanh_1634"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1671"], - "name" : "Tanh_1672", - "op" : "Tanh", - "outputs" : ["Tanh_1672"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1617", "Tanh_1634" ], - "name" : "Multiply_1635", - "op" : "Multiply", - "outputs" : ["Multiply_1635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1655", "Tanh_1672" ], - "name" : "Multiply_1673", - "op" : "Multiply", - "outputs" : ["Multiply_1673"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1635"], - "name" : "Reshape_1636", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1635", "Reshape_1678" ], - "name" : "Dot_1679", - "op" : "Dot", - "outputs" : ["Dot_1679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1673", "Reshape_1674" ], - "name" : "Dot_1675", - "op" : "Dot", - "outputs" : ["Dot_1675"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1673", "Reshape_1716" ], - "name" : "Dot_1717", - "op" : "Dot", - "outputs" : ["Dot_1717"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1679", "Broadcast_1680" ], - "name" : "Add_1681", - "op" : "Add", - "outputs" : ["Add_1681"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1675", "Broadcast_1676" ], - "name" : "Add_1677", - "op" : "Add", - "outputs" : ["Add_1677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1717", "Broadcast_1718" ], - "name" : "Add_1719", - "op" : "Add", - "outputs" : ["Add_1719"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1677", "Add_1681" ], - "name" : "Add_1682", - "op" : "Add", - "outputs" : ["Add_1682"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1715", "Add_1719" ], - "name" : "Add_1720", - "op" : "Add", - "outputs" : ["Add_1720"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1682"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1683", - "op" : "Slice", - "outputs" : ["Slice_1683"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1682"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1684", - "op" : "Slice", - "outputs" : ["Slice_1684"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1682"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1685", - "op" : "Slice", - "outputs" : ["Slice_1685"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1682"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1686", - "op" : "Slice", - "outputs" : ["Slice_1686"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1720"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1721", - "op" : "Slice", - "outputs" : ["Slice_1721"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1720"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1722", - "op" : "Slice", - "outputs" : ["Slice_1722"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1720"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1723", - "op" : "Slice", - "outputs" : ["Slice_1723"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1720"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1724", - "op" : "Slice", - "outputs" : ["Slice_1724"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1683"], - "name" : "Negative_1702", - "op" : "Negative", - "outputs" : ["Negative_1702"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1684"], - "name" : "Negative_1695", - "op" : "Negative", - "outputs" : ["Negative_1695"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1685"], - "name" : "Tanh_1706", - "op" : "Tanh", - "outputs" : ["Tanh_1706"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1686"], - "name" : "Negative_1689", - "op" : "Negative", - "outputs" : ["Negative_1689"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1721"], - "name" : "Negative_1740", - "op" : "Negative", - "outputs" : ["Negative_1740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1722"], - "name" : "Negative_1733", - "op" : "Negative", - "outputs" : ["Negative_1733"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1723"], - "name" : "Tanh_1744", - "op" : "Tanh", - "outputs" : ["Tanh_1744"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1724"], - "name" : "Negative_1727", - "op" : "Negative", - "outputs" : ["Negative_1727"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1702"], - "name" : "Exp_1703", - "op" : "Exp", - "outputs" : ["Exp_1703"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1695"], - "name" : "Exp_1696", - "op" : "Exp", - "outputs" : ["Exp_1696"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1689"], - "name" : "Exp_1690", - "op" : "Exp", - "outputs" : ["Exp_1690"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1740"], - "name" : "Exp_1741", - "op" : "Exp", - "outputs" : ["Exp_1741"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1733"], - "name" : "Exp_1734", - "op" : "Exp", - "outputs" : ["Exp_1734"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1727"], - "name" : "Exp_1728", - "op" : "Exp", - "outputs" : ["Exp_1728"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1701", "Exp_1703" ], - "name" : "Add_1704", - "op" : "Add", - "outputs" : ["Add_1704"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1694", "Exp_1696" ], - "name" : "Add_1697", - "op" : "Add", - "outputs" : ["Add_1697"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1688", "Exp_1690" ], - "name" : "Add_1691", - "op" : "Add", - "outputs" : ["Add_1691"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1739", "Exp_1741" ], - "name" : "Add_1742", - "op" : "Add", - "outputs" : ["Add_1742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1732", "Exp_1734" ], - "name" : "Add_1735", - "op" : "Add", - "outputs" : ["Add_1735"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1726", "Exp_1728" ], - "name" : "Add_1729", - "op" : "Add", - "outputs" : ["Add_1729"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1701", "Add_1704" ], - "name" : "Divide_1705", - "op" : "Divide", - "outputs" : ["Divide_1705"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1694", "Add_1697" ], - "name" : "Divide_1698", - "op" : "Divide", - "outputs" : ["Divide_1698"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1688", "Add_1691" ], - "name" : "Divide_1692", - "op" : "Divide", - "outputs" : ["Divide_1692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1739", "Add_1742" ], - "name" : "Divide_1743", - "op" : "Divide", - "outputs" : ["Divide_1743"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1732", "Add_1735" ], - "name" : "Divide_1736", - "op" : "Divide", - "outputs" : ["Divide_1736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1726", "Add_1729" ], - "name" : "Divide_1730", - "op" : "Divide", - "outputs" : ["Divide_1730"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1705", "Tanh_1706" ], - "name" : "Multiply_1707", - "op" : "Multiply", - "outputs" : ["Multiply_1707"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1698", "Add_1633" ], - "name" : "Multiply_1699", - "op" : "Multiply", - "outputs" : ["Multiply_1699"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1743", "Tanh_1744" ], - "name" : "Multiply_1745", - "op" : "Multiply", - "outputs" : ["Multiply_1745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1736", "Add_1671" ], - "name" : "Multiply_1737", - "op" : "Multiply", - "outputs" : ["Multiply_1737"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1699", "Multiply_1707" ], - "name" : "Add_1708", - "op" : "Add", - "outputs" : ["Add_1708"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1737", "Multiply_1745" ], - "name" : "Add_1746", - "op" : "Add", - "outputs" : ["Add_1746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1708"], - "name" : "Tanh_1709", - "op" : "Tanh", - "outputs" : ["Tanh_1709"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1746"], - "name" : "Tanh_1747", - "op" : "Tanh", - "outputs" : ["Tanh_1747"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1692", "Tanh_1709" ], - "name" : "Multiply_1710", - "op" : "Multiply", - "outputs" : ["Multiply_1710"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1730", "Tanh_1747" ], - "name" : "Multiply_1748", - "op" : "Multiply", - "outputs" : ["Multiply_1748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1710"], - "name" : "Reshape_1711", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1711"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1710", "Reshape_1753" ], - "name" : "Dot_1754", - "op" : "Dot", - "outputs" : ["Dot_1754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1748", "Reshape_1749" ], - "name" : "Dot_1750", - "op" : "Dot", - "outputs" : ["Dot_1750"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1748", "Reshape_1791" ], - "name" : "Dot_1792", - "op" : "Dot", - "outputs" : ["Dot_1792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1754", "Broadcast_1755" ], - "name" : "Add_1756", - "op" : "Add", - "outputs" : ["Add_1756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1750", "Broadcast_1751" ], - "name" : "Add_1752", - "op" : "Add", - "outputs" : ["Add_1752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1792", "Broadcast_1793" ], - "name" : "Add_1794", - "op" : "Add", - "outputs" : ["Add_1794"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1752", "Add_1756" ], - "name" : "Add_1757", - "op" : "Add", - "outputs" : ["Add_1757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1790", "Add_1794" ], - "name" : "Add_1795", - "op" : "Add", - "outputs" : ["Add_1795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1757"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1758", - "op" : "Slice", - "outputs" : ["Slice_1758"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1757"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1759", - "op" : "Slice", - "outputs" : ["Slice_1759"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1757"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1760", - "op" : "Slice", - "outputs" : ["Slice_1760"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1757"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1761", - "op" : "Slice", - "outputs" : ["Slice_1761"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1795"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1796", - "op" : "Slice", - "outputs" : ["Slice_1796"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1795"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1797", - "op" : "Slice", - "outputs" : ["Slice_1797"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1795"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1798", - "op" : "Slice", - "outputs" : ["Slice_1798"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1795"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1799", - "op" : "Slice", - "outputs" : ["Slice_1799"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1758"], - "name" : "Negative_1777", - "op" : "Negative", - "outputs" : ["Negative_1777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1759"], - "name" : "Negative_1770", - "op" : "Negative", - "outputs" : ["Negative_1770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1760"], - "name" : "Tanh_1781", - "op" : "Tanh", - "outputs" : ["Tanh_1781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1761"], - "name" : "Negative_1764", - "op" : "Negative", - "outputs" : ["Negative_1764"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1796"], - "name" : "Negative_1815", - "op" : "Negative", - "outputs" : ["Negative_1815"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1797"], - "name" : "Negative_1808", - "op" : "Negative", - "outputs" : ["Negative_1808"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1798"], - "name" : "Tanh_1819", - "op" : "Tanh", - "outputs" : ["Tanh_1819"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1799"], - "name" : "Negative_1802", - "op" : "Negative", - "outputs" : ["Negative_1802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1777"], - "name" : "Exp_1778", - "op" : "Exp", - "outputs" : ["Exp_1778"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1770"], - "name" : "Exp_1771", - "op" : "Exp", - "outputs" : ["Exp_1771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1764"], - "name" : "Exp_1765", - "op" : "Exp", - "outputs" : ["Exp_1765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1815"], - "name" : "Exp_1816", - "op" : "Exp", - "outputs" : ["Exp_1816"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1808"], - "name" : "Exp_1809", - "op" : "Exp", - "outputs" : ["Exp_1809"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1802"], - "name" : "Exp_1803", - "op" : "Exp", - "outputs" : ["Exp_1803"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1776", "Exp_1778" ], - "name" : "Add_1779", - "op" : "Add", - "outputs" : ["Add_1779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1769", "Exp_1771" ], - "name" : "Add_1772", - "op" : "Add", - "outputs" : ["Add_1772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1763", "Exp_1765" ], - "name" : "Add_1766", - "op" : "Add", - "outputs" : ["Add_1766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1814", "Exp_1816" ], - "name" : "Add_1817", - "op" : "Add", - "outputs" : ["Add_1817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1807", "Exp_1809" ], - "name" : "Add_1810", - "op" : "Add", - "outputs" : ["Add_1810"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1801", "Exp_1803" ], - "name" : "Add_1804", - "op" : "Add", - "outputs" : ["Add_1804"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1776", "Add_1779" ], - "name" : "Divide_1780", - "op" : "Divide", - "outputs" : ["Divide_1780"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1769", "Add_1772" ], - "name" : "Divide_1773", - "op" : "Divide", - "outputs" : ["Divide_1773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1763", "Add_1766" ], - "name" : "Divide_1767", - "op" : "Divide", - "outputs" : ["Divide_1767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1814", "Add_1817" ], - "name" : "Divide_1818", - "op" : "Divide", - "outputs" : ["Divide_1818"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1807", "Add_1810" ], - "name" : "Divide_1811", - "op" : "Divide", - "outputs" : ["Divide_1811"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1801", "Add_1804" ], - "name" : "Divide_1805", - "op" : "Divide", - "outputs" : ["Divide_1805"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1780", "Tanh_1781" ], - "name" : "Multiply_1782", - "op" : "Multiply", - "outputs" : ["Multiply_1782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1773", "Add_1708" ], - "name" : "Multiply_1774", - "op" : "Multiply", - "outputs" : ["Multiply_1774"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1818", "Tanh_1819" ], - "name" : "Multiply_1820", - "op" : "Multiply", - "outputs" : ["Multiply_1820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1811", "Add_1746" ], - "name" : "Multiply_1812", - "op" : "Multiply", - "outputs" : ["Multiply_1812"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1774", "Multiply_1782" ], - "name" : "Add_1783", - "op" : "Add", - "outputs" : ["Add_1783"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1812", "Multiply_1820" ], - "name" : "Add_1821", - "op" : "Add", - "outputs" : ["Add_1821"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1783"], - "name" : "Tanh_1784", - "op" : "Tanh", - "outputs" : ["Tanh_1784"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1821"], - "name" : "Tanh_1822", - "op" : "Tanh", - "outputs" : ["Tanh_1822"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1767", "Tanh_1784" ], - "name" : "Multiply_1785", - "op" : "Multiply", - "outputs" : ["Multiply_1785"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1805", "Tanh_1822" ], - "name" : "Multiply_1823", - "op" : "Multiply", - "outputs" : ["Multiply_1823"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1785"], - "name" : "Reshape_1786", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1785", "Reshape_1828" ], - "name" : "Dot_1829", - "op" : "Dot", - "outputs" : ["Dot_1829"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1823", "Reshape_1824" ], - "name" : "Dot_1825", - "op" : "Dot", - "outputs" : ["Dot_1825"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1823", "Reshape_1866" ], - "name" : "Dot_1867", - "op" : "Dot", - "outputs" : ["Dot_1867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1829", "Broadcast_1830" ], - "name" : "Add_1831", - "op" : "Add", - "outputs" : ["Add_1831"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1825", "Broadcast_1826" ], - "name" : "Add_1827", - "op" : "Add", - "outputs" : ["Add_1827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1867", "Broadcast_1868" ], - "name" : "Add_1869", - "op" : "Add", - "outputs" : ["Add_1869"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1827", "Add_1831" ], - "name" : "Add_1832", - "op" : "Add", - "outputs" : ["Add_1832"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1865", "Add_1869" ], - "name" : "Add_1870", - "op" : "Add", - "outputs" : ["Add_1870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1832"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1833", - "op" : "Slice", - "outputs" : ["Slice_1833"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1832"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1834", - "op" : "Slice", - "outputs" : ["Slice_1834"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1832"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1835", - "op" : "Slice", - "outputs" : ["Slice_1835"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1832"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1836", - "op" : "Slice", - "outputs" : ["Slice_1836"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1870"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1871", - "op" : "Slice", - "outputs" : ["Slice_1871"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1870"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1872", - "op" : "Slice", - "outputs" : ["Slice_1872"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1870"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1873", - "op" : "Slice", - "outputs" : ["Slice_1873"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1870"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1874", - "op" : "Slice", - "outputs" : ["Slice_1874"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1833"], - "name" : "Negative_1852", - "op" : "Negative", - "outputs" : ["Negative_1852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1834"], - "name" : "Negative_1845", - "op" : "Negative", - "outputs" : ["Negative_1845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1835"], - "name" : "Tanh_1856", - "op" : "Tanh", - "outputs" : ["Tanh_1856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1836"], - "name" : "Negative_1839", - "op" : "Negative", - "outputs" : ["Negative_1839"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1871"], - "name" : "Negative_1890", - "op" : "Negative", - "outputs" : ["Negative_1890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1872"], - "name" : "Negative_1883", - "op" : "Negative", - "outputs" : ["Negative_1883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1873"], - "name" : "Tanh_1894", - "op" : "Tanh", - "outputs" : ["Tanh_1894"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1874"], - "name" : "Negative_1877", - "op" : "Negative", - "outputs" : ["Negative_1877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1852"], - "name" : "Exp_1853", - "op" : "Exp", - "outputs" : ["Exp_1853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1845"], - "name" : "Exp_1846", - "op" : "Exp", - "outputs" : ["Exp_1846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1839"], - "name" : "Exp_1840", - "op" : "Exp", - "outputs" : ["Exp_1840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1890"], - "name" : "Exp_1891", - "op" : "Exp", - "outputs" : ["Exp_1891"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1883"], - "name" : "Exp_1884", - "op" : "Exp", - "outputs" : ["Exp_1884"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1877"], - "name" : "Exp_1878", - "op" : "Exp", - "outputs" : ["Exp_1878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1851", "Exp_1853" ], - "name" : "Add_1854", - "op" : "Add", - "outputs" : ["Add_1854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1844", "Exp_1846" ], - "name" : "Add_1847", - "op" : "Add", - "outputs" : ["Add_1847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1838", "Exp_1840" ], - "name" : "Add_1841", - "op" : "Add", - "outputs" : ["Add_1841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1889", "Exp_1891" ], - "name" : "Add_1892", - "op" : "Add", - "outputs" : ["Add_1892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1882", "Exp_1884" ], - "name" : "Add_1885", - "op" : "Add", - "outputs" : ["Add_1885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1876", "Exp_1878" ], - "name" : "Add_1879", - "op" : "Add", - "outputs" : ["Add_1879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1851", "Add_1854" ], - "name" : "Divide_1855", - "op" : "Divide", - "outputs" : ["Divide_1855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1844", "Add_1847" ], - "name" : "Divide_1848", - "op" : "Divide", - "outputs" : ["Divide_1848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1838", "Add_1841" ], - "name" : "Divide_1842", - "op" : "Divide", - "outputs" : ["Divide_1842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1889", "Add_1892" ], - "name" : "Divide_1893", - "op" : "Divide", - "outputs" : ["Divide_1893"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1882", "Add_1885" ], - "name" : "Divide_1886", - "op" : "Divide", - "outputs" : ["Divide_1886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1876", "Add_1879" ], - "name" : "Divide_1880", - "op" : "Divide", - "outputs" : ["Divide_1880"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1855", "Tanh_1856" ], - "name" : "Multiply_1857", - "op" : "Multiply", - "outputs" : ["Multiply_1857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1848", "Add_1783" ], - "name" : "Multiply_1849", - "op" : "Multiply", - "outputs" : ["Multiply_1849"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1893", "Tanh_1894" ], - "name" : "Multiply_1895", - "op" : "Multiply", - "outputs" : ["Multiply_1895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1886", "Add_1821" ], - "name" : "Multiply_1887", - "op" : "Multiply", - "outputs" : ["Multiply_1887"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1849", "Multiply_1857" ], - "name" : "Add_1858", - "op" : "Add", - "outputs" : ["Add_1858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1887", "Multiply_1895" ], - "name" : "Add_1896", - "op" : "Add", - "outputs" : ["Add_1896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1858"], - "name" : "Tanh_1859", - "op" : "Tanh", - "outputs" : ["Tanh_1859"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1896"], - "name" : "Tanh_1897", - "op" : "Tanh", - "outputs" : ["Tanh_1897"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1842", "Tanh_1859" ], - "name" : "Multiply_1860", - "op" : "Multiply", - "outputs" : ["Multiply_1860"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1880", "Tanh_1897" ], - "name" : "Multiply_1898", - "op" : "Multiply", - "outputs" : ["Multiply_1898"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1860"], - "name" : "Reshape_1861", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1860", "Reshape_1903" ], - "name" : "Dot_1904", - "op" : "Dot", - "outputs" : ["Dot_1904"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1898", "Reshape_1899" ], - "name" : "Dot_1900", - "op" : "Dot", - "outputs" : ["Dot_1900"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1898", "Reshape_1941" ], - "name" : "Dot_1942", - "op" : "Dot", - "outputs" : ["Dot_1942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1904", "Broadcast_1905" ], - "name" : "Add_1906", - "op" : "Add", - "outputs" : ["Add_1906"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1900", "Broadcast_1901" ], - "name" : "Add_1902", - "op" : "Add", - "outputs" : ["Add_1902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1942", "Broadcast_1943" ], - "name" : "Add_1944", - "op" : "Add", - "outputs" : ["Add_1944"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1902", "Add_1906" ], - "name" : "Add_1907", - "op" : "Add", - "outputs" : ["Add_1907"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1940", "Add_1944" ], - "name" : "Add_1945", - "op" : "Add", - "outputs" : ["Add_1945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1907"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1908", - "op" : "Slice", - "outputs" : ["Slice_1908"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1907"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1909", - "op" : "Slice", - "outputs" : ["Slice_1909"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1907"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1910", - "op" : "Slice", - "outputs" : ["Slice_1910"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1907"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1911", - "op" : "Slice", - "outputs" : ["Slice_1911"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1945"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1946", - "op" : "Slice", - "outputs" : ["Slice_1946"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1945"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1947", - "op" : "Slice", - "outputs" : ["Slice_1947"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1945"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1948", - "op" : "Slice", - "outputs" : ["Slice_1948"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1945"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1949", - "op" : "Slice", - "outputs" : ["Slice_1949"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1908"], - "name" : "Negative_1927", - "op" : "Negative", - "outputs" : ["Negative_1927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1909"], - "name" : "Negative_1920", - "op" : "Negative", - "outputs" : ["Negative_1920"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1910"], - "name" : "Tanh_1931", - "op" : "Tanh", - "outputs" : ["Tanh_1931"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1911"], - "name" : "Negative_1914", - "op" : "Negative", - "outputs" : ["Negative_1914"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1946"], - "name" : "Negative_1965", - "op" : "Negative", - "outputs" : ["Negative_1965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1947"], - "name" : "Negative_1958", - "op" : "Negative", - "outputs" : ["Negative_1958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1948"], - "name" : "Tanh_1969", - "op" : "Tanh", - "outputs" : ["Tanh_1969"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1949"], - "name" : "Negative_1952", - "op" : "Negative", - "outputs" : ["Negative_1952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1927"], - "name" : "Exp_1928", - "op" : "Exp", - "outputs" : ["Exp_1928"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1920"], - "name" : "Exp_1921", - "op" : "Exp", - "outputs" : ["Exp_1921"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1914"], - "name" : "Exp_1915", - "op" : "Exp", - "outputs" : ["Exp_1915"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1965"], - "name" : "Exp_1966", - "op" : "Exp", - "outputs" : ["Exp_1966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1958"], - "name" : "Exp_1959", - "op" : "Exp", - "outputs" : ["Exp_1959"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1952"], - "name" : "Exp_1953", - "op" : "Exp", - "outputs" : ["Exp_1953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1926", "Exp_1928" ], - "name" : "Add_1929", - "op" : "Add", - "outputs" : ["Add_1929"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1919", "Exp_1921" ], - "name" : "Add_1922", - "op" : "Add", - "outputs" : ["Add_1922"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1913", "Exp_1915" ], - "name" : "Add_1916", - "op" : "Add", - "outputs" : ["Add_1916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1964", "Exp_1966" ], - "name" : "Add_1967", - "op" : "Add", - "outputs" : ["Add_1967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1957", "Exp_1959" ], - "name" : "Add_1960", - "op" : "Add", - "outputs" : ["Add_1960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1951", "Exp_1953" ], - "name" : "Add_1954", - "op" : "Add", - "outputs" : ["Add_1954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1926", "Add_1929" ], - "name" : "Divide_1930", - "op" : "Divide", - "outputs" : ["Divide_1930"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1919", "Add_1922" ], - "name" : "Divide_1923", - "op" : "Divide", - "outputs" : ["Divide_1923"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1913", "Add_1916" ], - "name" : "Divide_1917", - "op" : "Divide", - "outputs" : ["Divide_1917"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1964", "Add_1967" ], - "name" : "Divide_1968", - "op" : "Divide", - "outputs" : ["Divide_1968"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1957", "Add_1960" ], - "name" : "Divide_1961", - "op" : "Divide", - "outputs" : ["Divide_1961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1951", "Add_1954" ], - "name" : "Divide_1955", - "op" : "Divide", - "outputs" : ["Divide_1955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1930", "Tanh_1931" ], - "name" : "Multiply_1932", - "op" : "Multiply", - "outputs" : ["Multiply_1932"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1923", "Add_1858" ], - "name" : "Multiply_1924", - "op" : "Multiply", - "outputs" : ["Multiply_1924"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1968", "Tanh_1969" ], - "name" : "Multiply_1970", - "op" : "Multiply", - "outputs" : ["Multiply_1970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1961", "Add_1896" ], - "name" : "Multiply_1962", - "op" : "Multiply", - "outputs" : ["Multiply_1962"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1924", "Multiply_1932" ], - "name" : "Add_1933", - "op" : "Add", - "outputs" : ["Add_1933"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1962", "Multiply_1970" ], - "name" : "Add_1971", - "op" : "Add", - "outputs" : ["Add_1971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1933"], - "name" : "Tanh_1934", - "op" : "Tanh", - "outputs" : ["Tanh_1934"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1971"], - "name" : "Tanh_1972", - "op" : "Tanh", - "outputs" : ["Tanh_1972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1917", "Tanh_1934" ], - "name" : "Multiply_1935", - "op" : "Multiply", - "outputs" : ["Multiply_1935"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1955", "Tanh_1972" ], - "name" : "Multiply_1973", - "op" : "Multiply", - "outputs" : ["Multiply_1973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_1935"], - "name" : "Reshape_1936", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_1936"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_1935", "Reshape_1978" ], - "name" : "Dot_1979", - "op" : "Dot", - "outputs" : ["Dot_1979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1973", "Reshape_1974" ], - "name" : "Dot_1975", - "op" : "Dot", - "outputs" : ["Dot_1975"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_1973", "Reshape_2016" ], - "name" : "Dot_2017", - "op" : "Dot", - "outputs" : ["Dot_2017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1979", "Broadcast_1980" ], - "name" : "Add_1981", - "op" : "Add", - "outputs" : ["Add_1981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_1975", "Broadcast_1976" ], - "name" : "Add_1977", - "op" : "Add", - "outputs" : ["Add_1977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2017", "Broadcast_2018" ], - "name" : "Add_2019", - "op" : "Add", - "outputs" : ["Add_2019"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_1977", "Add_1981" ], - "name" : "Add_1982", - "op" : "Add", - "outputs" : ["Add_1982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2015", "Add_2019" ], - "name" : "Add_2020", - "op" : "Add", - "outputs" : ["Add_2020"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_1982"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1983", - "op" : "Slice", - "outputs" : ["Slice_1983"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1982"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_1984", - "op" : "Slice", - "outputs" : ["Slice_1984"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1982"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_1985", - "op" : "Slice", - "outputs" : ["Slice_1985"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_1982"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_1986", - "op" : "Slice", - "outputs" : ["Slice_1986"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2020"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2021", - "op" : "Slice", - "outputs" : ["Slice_2021"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2020"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2022", - "op" : "Slice", - "outputs" : ["Slice_2022"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2020"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2023", - "op" : "Slice", - "outputs" : ["Slice_2023"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2020"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2024", - "op" : "Slice", - "outputs" : ["Slice_2024"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1983"], - "name" : "Negative_2002", - "op" : "Negative", - "outputs" : ["Negative_2002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1984"], - "name" : "Negative_1995", - "op" : "Negative", - "outputs" : ["Negative_1995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1985"], - "name" : "Tanh_2006", - "op" : "Tanh", - "outputs" : ["Tanh_2006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_1986"], - "name" : "Negative_1989", - "op" : "Negative", - "outputs" : ["Negative_1989"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2021"], - "name" : "Negative_2040", - "op" : "Negative", - "outputs" : ["Negative_2040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2022"], - "name" : "Negative_2033", - "op" : "Negative", - "outputs" : ["Negative_2033"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2023"], - "name" : "Tanh_2044", - "op" : "Tanh", - "outputs" : ["Tanh_2044"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2024"], - "name" : "Negative_2027", - "op" : "Negative", - "outputs" : ["Negative_2027"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2002"], - "name" : "Exp_2003", - "op" : "Exp", - "outputs" : ["Exp_2003"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1995"], - "name" : "Exp_1996", - "op" : "Exp", - "outputs" : ["Exp_1996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_1989"], - "name" : "Exp_1990", - "op" : "Exp", - "outputs" : ["Exp_1990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2040"], - "name" : "Exp_2041", - "op" : "Exp", - "outputs" : ["Exp_2041"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2033"], - "name" : "Exp_2034", - "op" : "Exp", - "outputs" : ["Exp_2034"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2027"], - "name" : "Exp_2028", - "op" : "Exp", - "outputs" : ["Exp_2028"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2001", "Exp_2003" ], - "name" : "Add_2004", - "op" : "Add", - "outputs" : ["Add_2004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1994", "Exp_1996" ], - "name" : "Add_1997", - "op" : "Add", - "outputs" : ["Add_1997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1988", "Exp_1990" ], - "name" : "Add_1991", - "op" : "Add", - "outputs" : ["Add_1991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2039", "Exp_2041" ], - "name" : "Add_2042", - "op" : "Add", - "outputs" : ["Add_2042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2032", "Exp_2034" ], - "name" : "Add_2035", - "op" : "Add", - "outputs" : ["Add_2035"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2026", "Exp_2028" ], - "name" : "Add_2029", - "op" : "Add", - "outputs" : ["Add_2029"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2001", "Add_2004" ], - "name" : "Divide_2005", - "op" : "Divide", - "outputs" : ["Divide_2005"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1994", "Add_1997" ], - "name" : "Divide_1998", - "op" : "Divide", - "outputs" : ["Divide_1998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_1988", "Add_1991" ], - "name" : "Divide_1992", - "op" : "Divide", - "outputs" : ["Divide_1992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2039", "Add_2042" ], - "name" : "Divide_2043", - "op" : "Divide", - "outputs" : ["Divide_2043"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2032", "Add_2035" ], - "name" : "Divide_2036", - "op" : "Divide", - "outputs" : ["Divide_2036"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2026", "Add_2029" ], - "name" : "Divide_2030", - "op" : "Divide", - "outputs" : ["Divide_2030"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2005", "Tanh_2006" ], - "name" : "Multiply_2007", - "op" : "Multiply", - "outputs" : ["Multiply_2007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1998", "Add_1933" ], - "name" : "Multiply_1999", - "op" : "Multiply", - "outputs" : ["Multiply_1999"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2043", "Tanh_2044" ], - "name" : "Multiply_2045", - "op" : "Multiply", - "outputs" : ["Multiply_2045"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2036", "Add_1971" ], - "name" : "Multiply_2037", - "op" : "Multiply", - "outputs" : ["Multiply_2037"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_1999", "Multiply_2007" ], - "name" : "Add_2008", - "op" : "Add", - "outputs" : ["Add_2008"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2037", "Multiply_2045" ], - "name" : "Add_2046", - "op" : "Add", - "outputs" : ["Add_2046"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2008"], - "name" : "Tanh_2009", - "op" : "Tanh", - "outputs" : ["Tanh_2009"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2046"], - "name" : "Tanh_2047", - "op" : "Tanh", - "outputs" : ["Tanh_2047"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_1992", "Tanh_2009" ], - "name" : "Multiply_2010", - "op" : "Multiply", - "outputs" : ["Multiply_2010"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2030", "Tanh_2047" ], - "name" : "Multiply_2048", - "op" : "Multiply", - "outputs" : ["Multiply_2048"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2010"], - "name" : "Reshape_2011", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2011"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2010", "Reshape_2053" ], - "name" : "Dot_2054", - "op" : "Dot", - "outputs" : ["Dot_2054"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2048", "Reshape_2049" ], - "name" : "Dot_2050", - "op" : "Dot", - "outputs" : ["Dot_2050"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2048", "Reshape_2091" ], - "name" : "Dot_2092", - "op" : "Dot", - "outputs" : ["Dot_2092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2054", "Broadcast_2055" ], - "name" : "Add_2056", - "op" : "Add", - "outputs" : ["Add_2056"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2050", "Broadcast_2051" ], - "name" : "Add_2052", - "op" : "Add", - "outputs" : ["Add_2052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2092", "Broadcast_2093" ], - "name" : "Add_2094", - "op" : "Add", - "outputs" : ["Add_2094"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2052", "Add_2056" ], - "name" : "Add_2057", - "op" : "Add", - "outputs" : ["Add_2057"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2090", "Add_2094" ], - "name" : "Add_2095", - "op" : "Add", - "outputs" : ["Add_2095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2057"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2058", - "op" : "Slice", - "outputs" : ["Slice_2058"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2057"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2059", - "op" : "Slice", - "outputs" : ["Slice_2059"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2057"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2060", - "op" : "Slice", - "outputs" : ["Slice_2060"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2057"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2061", - "op" : "Slice", - "outputs" : ["Slice_2061"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2095"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2096", - "op" : "Slice", - "outputs" : ["Slice_2096"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2095"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2097", - "op" : "Slice", - "outputs" : ["Slice_2097"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2095"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2098", - "op" : "Slice", - "outputs" : ["Slice_2098"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2095"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2099", - "op" : "Slice", - "outputs" : ["Slice_2099"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2058"], - "name" : "Negative_2077", - "op" : "Negative", - "outputs" : ["Negative_2077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2059"], - "name" : "Negative_2070", - "op" : "Negative", - "outputs" : ["Negative_2070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2060"], - "name" : "Tanh_2081", - "op" : "Tanh", - "outputs" : ["Tanh_2081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2061"], - "name" : "Negative_2064", - "op" : "Negative", - "outputs" : ["Negative_2064"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2096"], - "name" : "Negative_2115", - "op" : "Negative", - "outputs" : ["Negative_2115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2097"], - "name" : "Negative_2108", - "op" : "Negative", - "outputs" : ["Negative_2108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2098"], - "name" : "Tanh_2119", - "op" : "Tanh", - "outputs" : ["Tanh_2119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2099"], - "name" : "Negative_2102", - "op" : "Negative", - "outputs" : ["Negative_2102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2077"], - "name" : "Exp_2078", - "op" : "Exp", - "outputs" : ["Exp_2078"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2070"], - "name" : "Exp_2071", - "op" : "Exp", - "outputs" : ["Exp_2071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2064"], - "name" : "Exp_2065", - "op" : "Exp", - "outputs" : ["Exp_2065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2115"], - "name" : "Exp_2116", - "op" : "Exp", - "outputs" : ["Exp_2116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2108"], - "name" : "Exp_2109", - "op" : "Exp", - "outputs" : ["Exp_2109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2102"], - "name" : "Exp_2103", - "op" : "Exp", - "outputs" : ["Exp_2103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2076", "Exp_2078" ], - "name" : "Add_2079", - "op" : "Add", - "outputs" : ["Add_2079"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2069", "Exp_2071" ], - "name" : "Add_2072", - "op" : "Add", - "outputs" : ["Add_2072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2063", "Exp_2065" ], - "name" : "Add_2066", - "op" : "Add", - "outputs" : ["Add_2066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2114", "Exp_2116" ], - "name" : "Add_2117", - "op" : "Add", - "outputs" : ["Add_2117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2107", "Exp_2109" ], - "name" : "Add_2110", - "op" : "Add", - "outputs" : ["Add_2110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2101", "Exp_2103" ], - "name" : "Add_2104", - "op" : "Add", - "outputs" : ["Add_2104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2076", "Add_2079" ], - "name" : "Divide_2080", - "op" : "Divide", - "outputs" : ["Divide_2080"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2069", "Add_2072" ], - "name" : "Divide_2073", - "op" : "Divide", - "outputs" : ["Divide_2073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2063", "Add_2066" ], - "name" : "Divide_2067", - "op" : "Divide", - "outputs" : ["Divide_2067"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2114", "Add_2117" ], - "name" : "Divide_2118", - "op" : "Divide", - "outputs" : ["Divide_2118"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2107", "Add_2110" ], - "name" : "Divide_2111", - "op" : "Divide", - "outputs" : ["Divide_2111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2101", "Add_2104" ], - "name" : "Divide_2105", - "op" : "Divide", - "outputs" : ["Divide_2105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2080", "Tanh_2081" ], - "name" : "Multiply_2082", - "op" : "Multiply", - "outputs" : ["Multiply_2082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2073", "Add_2008" ], - "name" : "Multiply_2074", - "op" : "Multiply", - "outputs" : ["Multiply_2074"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2118", "Tanh_2119" ], - "name" : "Multiply_2120", - "op" : "Multiply", - "outputs" : ["Multiply_2120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2111", "Add_2046" ], - "name" : "Multiply_2112", - "op" : "Multiply", - "outputs" : ["Multiply_2112"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2074", "Multiply_2082" ], - "name" : "Add_2083", - "op" : "Add", - "outputs" : ["Add_2083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2112", "Multiply_2120" ], - "name" : "Add_2121", - "op" : "Add", - "outputs" : ["Add_2121"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2083"], - "name" : "Tanh_2084", - "op" : "Tanh", - "outputs" : ["Tanh_2084"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2121"], - "name" : "Tanh_2122", - "op" : "Tanh", - "outputs" : ["Tanh_2122"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2067", "Tanh_2084" ], - "name" : "Multiply_2085", - "op" : "Multiply", - "outputs" : ["Multiply_2085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2105", "Tanh_2122" ], - "name" : "Multiply_2123", - "op" : "Multiply", - "outputs" : ["Multiply_2123"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2085"], - "name" : "Reshape_2086", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2085", "Reshape_2128" ], - "name" : "Dot_2129", - "op" : "Dot", - "outputs" : ["Dot_2129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2123", "Reshape_2124" ], - "name" : "Dot_2125", - "op" : "Dot", - "outputs" : ["Dot_2125"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2123", "Reshape_2166" ], - "name" : "Dot_2167", - "op" : "Dot", - "outputs" : ["Dot_2167"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2129", "Broadcast_2130" ], - "name" : "Add_2131", - "op" : "Add", - "outputs" : ["Add_2131"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2125", "Broadcast_2126" ], - "name" : "Add_2127", - "op" : "Add", - "outputs" : ["Add_2127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2167", "Broadcast_2168" ], - "name" : "Add_2169", - "op" : "Add", - "outputs" : ["Add_2169"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2127", "Add_2131" ], - "name" : "Add_2132", - "op" : "Add", - "outputs" : ["Add_2132"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2165", "Add_2169" ], - "name" : "Add_2170", - "op" : "Add", - "outputs" : ["Add_2170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2132"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2133", - "op" : "Slice", - "outputs" : ["Slice_2133"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2132"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2134", - "op" : "Slice", - "outputs" : ["Slice_2134"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2132"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2135", - "op" : "Slice", - "outputs" : ["Slice_2135"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2132"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2136", - "op" : "Slice", - "outputs" : ["Slice_2136"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2170"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2171", - "op" : "Slice", - "outputs" : ["Slice_2171"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2170"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2172", - "op" : "Slice", - "outputs" : ["Slice_2172"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2170"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2173", - "op" : "Slice", - "outputs" : ["Slice_2173"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2170"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2174", - "op" : "Slice", - "outputs" : ["Slice_2174"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2133"], - "name" : "Negative_2152", - "op" : "Negative", - "outputs" : ["Negative_2152"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2134"], - "name" : "Negative_2145", - "op" : "Negative", - "outputs" : ["Negative_2145"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2135"], - "name" : "Tanh_2156", - "op" : "Tanh", - "outputs" : ["Tanh_2156"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2136"], - "name" : "Negative_2139", - "op" : "Negative", - "outputs" : ["Negative_2139"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2171"], - "name" : "Negative_2190", - "op" : "Negative", - "outputs" : ["Negative_2190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2172"], - "name" : "Negative_2183", - "op" : "Negative", - "outputs" : ["Negative_2183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2173"], - "name" : "Tanh_2194", - "op" : "Tanh", - "outputs" : ["Tanh_2194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2174"], - "name" : "Negative_2177", - "op" : "Negative", - "outputs" : ["Negative_2177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2152"], - "name" : "Exp_2153", - "op" : "Exp", - "outputs" : ["Exp_2153"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2145"], - "name" : "Exp_2146", - "op" : "Exp", - "outputs" : ["Exp_2146"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2139"], - "name" : "Exp_2140", - "op" : "Exp", - "outputs" : ["Exp_2140"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2190"], - "name" : "Exp_2191", - "op" : "Exp", - "outputs" : ["Exp_2191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2183"], - "name" : "Exp_2184", - "op" : "Exp", - "outputs" : ["Exp_2184"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2177"], - "name" : "Exp_2178", - "op" : "Exp", - "outputs" : ["Exp_2178"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2151", "Exp_2153" ], - "name" : "Add_2154", - "op" : "Add", - "outputs" : ["Add_2154"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2144", "Exp_2146" ], - "name" : "Add_2147", - "op" : "Add", - "outputs" : ["Add_2147"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2138", "Exp_2140" ], - "name" : "Add_2141", - "op" : "Add", - "outputs" : ["Add_2141"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2189", "Exp_2191" ], - "name" : "Add_2192", - "op" : "Add", - "outputs" : ["Add_2192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2182", "Exp_2184" ], - "name" : "Add_2185", - "op" : "Add", - "outputs" : ["Add_2185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2176", "Exp_2178" ], - "name" : "Add_2179", - "op" : "Add", - "outputs" : ["Add_2179"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2151", "Add_2154" ], - "name" : "Divide_2155", - "op" : "Divide", - "outputs" : ["Divide_2155"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2144", "Add_2147" ], - "name" : "Divide_2148", - "op" : "Divide", - "outputs" : ["Divide_2148"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2138", "Add_2141" ], - "name" : "Divide_2142", - "op" : "Divide", - "outputs" : ["Divide_2142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2189", "Add_2192" ], - "name" : "Divide_2193", - "op" : "Divide", - "outputs" : ["Divide_2193"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2182", "Add_2185" ], - "name" : "Divide_2186", - "op" : "Divide", - "outputs" : ["Divide_2186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2176", "Add_2179" ], - "name" : "Divide_2180", - "op" : "Divide", - "outputs" : ["Divide_2180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2155", "Tanh_2156" ], - "name" : "Multiply_2157", - "op" : "Multiply", - "outputs" : ["Multiply_2157"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2148", "Add_2083" ], - "name" : "Multiply_2149", - "op" : "Multiply", - "outputs" : ["Multiply_2149"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2193", "Tanh_2194" ], - "name" : "Multiply_2195", - "op" : "Multiply", - "outputs" : ["Multiply_2195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2186", "Add_2121" ], - "name" : "Multiply_2187", - "op" : "Multiply", - "outputs" : ["Multiply_2187"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2149", "Multiply_2157" ], - "name" : "Add_2158", - "op" : "Add", - "outputs" : ["Add_2158"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2187", "Multiply_2195" ], - "name" : "Add_2196", - "op" : "Add", - "outputs" : ["Add_2196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2158"], - "name" : "Tanh_2159", - "op" : "Tanh", - "outputs" : ["Tanh_2159"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2196"], - "name" : "Tanh_2197", - "op" : "Tanh", - "outputs" : ["Tanh_2197"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2142", "Tanh_2159" ], - "name" : "Multiply_2160", - "op" : "Multiply", - "outputs" : ["Multiply_2160"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2180", "Tanh_2197" ], - "name" : "Multiply_2198", - "op" : "Multiply", - "outputs" : ["Multiply_2198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2160"], - "name" : "Reshape_2161", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2161"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2160", "Reshape_2203" ], - "name" : "Dot_2204", - "op" : "Dot", - "outputs" : ["Dot_2204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2198", "Reshape_2199" ], - "name" : "Dot_2200", - "op" : "Dot", - "outputs" : ["Dot_2200"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2198", "Reshape_2241" ], - "name" : "Dot_2242", - "op" : "Dot", - "outputs" : ["Dot_2242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2204", "Broadcast_2205" ], - "name" : "Add_2206", - "op" : "Add", - "outputs" : ["Add_2206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2200", "Broadcast_2201" ], - "name" : "Add_2202", - "op" : "Add", - "outputs" : ["Add_2202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2242", "Broadcast_2243" ], - "name" : "Add_2244", - "op" : "Add", - "outputs" : ["Add_2244"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2202", "Add_2206" ], - "name" : "Add_2207", - "op" : "Add", - "outputs" : ["Add_2207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2240", "Add_2244" ], - "name" : "Add_2245", - "op" : "Add", - "outputs" : ["Add_2245"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2207"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2208", - "op" : "Slice", - "outputs" : ["Slice_2208"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2207"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2209", - "op" : "Slice", - "outputs" : ["Slice_2209"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2207"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2210", - "op" : "Slice", - "outputs" : ["Slice_2210"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2207"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2211", - "op" : "Slice", - "outputs" : ["Slice_2211"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2245"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2246", - "op" : "Slice", - "outputs" : ["Slice_2246"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2245"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2247", - "op" : "Slice", - "outputs" : ["Slice_2247"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2245"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2248", - "op" : "Slice", - "outputs" : ["Slice_2248"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2245"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2249", - "op" : "Slice", - "outputs" : ["Slice_2249"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2208"], - "name" : "Negative_2227", - "op" : "Negative", - "outputs" : ["Negative_2227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2209"], - "name" : "Negative_2220", - "op" : "Negative", - "outputs" : ["Negative_2220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2210"], - "name" : "Tanh_2231", - "op" : "Tanh", - "outputs" : ["Tanh_2231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2211"], - "name" : "Negative_2214", - "op" : "Negative", - "outputs" : ["Negative_2214"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2246"], - "name" : "Negative_2265", - "op" : "Negative", - "outputs" : ["Negative_2265"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2247"], - "name" : "Negative_2258", - "op" : "Negative", - "outputs" : ["Negative_2258"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2248"], - "name" : "Tanh_2269", - "op" : "Tanh", - "outputs" : ["Tanh_2269"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2249"], - "name" : "Negative_2252", - "op" : "Negative", - "outputs" : ["Negative_2252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2227"], - "name" : "Exp_2228", - "op" : "Exp", - "outputs" : ["Exp_2228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2220"], - "name" : "Exp_2221", - "op" : "Exp", - "outputs" : ["Exp_2221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2214"], - "name" : "Exp_2215", - "op" : "Exp", - "outputs" : ["Exp_2215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2265"], - "name" : "Exp_2266", - "op" : "Exp", - "outputs" : ["Exp_2266"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2258"], - "name" : "Exp_2259", - "op" : "Exp", - "outputs" : ["Exp_2259"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2252"], - "name" : "Exp_2253", - "op" : "Exp", - "outputs" : ["Exp_2253"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2226", "Exp_2228" ], - "name" : "Add_2229", - "op" : "Add", - "outputs" : ["Add_2229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2219", "Exp_2221" ], - "name" : "Add_2222", - "op" : "Add", - "outputs" : ["Add_2222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2213", "Exp_2215" ], - "name" : "Add_2216", - "op" : "Add", - "outputs" : ["Add_2216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2264", "Exp_2266" ], - "name" : "Add_2267", - "op" : "Add", - "outputs" : ["Add_2267"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2257", "Exp_2259" ], - "name" : "Add_2260", - "op" : "Add", - "outputs" : ["Add_2260"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2251", "Exp_2253" ], - "name" : "Add_2254", - "op" : "Add", - "outputs" : ["Add_2254"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2226", "Add_2229" ], - "name" : "Divide_2230", - "op" : "Divide", - "outputs" : ["Divide_2230"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2219", "Add_2222" ], - "name" : "Divide_2223", - "op" : "Divide", - "outputs" : ["Divide_2223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2213", "Add_2216" ], - "name" : "Divide_2217", - "op" : "Divide", - "outputs" : ["Divide_2217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2264", "Add_2267" ], - "name" : "Divide_2268", - "op" : "Divide", - "outputs" : ["Divide_2268"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2257", "Add_2260" ], - "name" : "Divide_2261", - "op" : "Divide", - "outputs" : ["Divide_2261"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2251", "Add_2254" ], - "name" : "Divide_2255", - "op" : "Divide", - "outputs" : ["Divide_2255"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2230", "Tanh_2231" ], - "name" : "Multiply_2232", - "op" : "Multiply", - "outputs" : ["Multiply_2232"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2223", "Add_2158" ], - "name" : "Multiply_2224", - "op" : "Multiply", - "outputs" : ["Multiply_2224"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2268", "Tanh_2269" ], - "name" : "Multiply_2270", - "op" : "Multiply", - "outputs" : ["Multiply_2270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2261", "Add_2196" ], - "name" : "Multiply_2262", - "op" : "Multiply", - "outputs" : ["Multiply_2262"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2224", "Multiply_2232" ], - "name" : "Add_2233", - "op" : "Add", - "outputs" : ["Add_2233"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2262", "Multiply_2270" ], - "name" : "Add_2271", - "op" : "Add", - "outputs" : ["Add_2271"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2233"], - "name" : "Tanh_2234", - "op" : "Tanh", - "outputs" : ["Tanh_2234"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2271"], - "name" : "Tanh_2272", - "op" : "Tanh", - "outputs" : ["Tanh_2272"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2217", "Tanh_2234" ], - "name" : "Multiply_2235", - "op" : "Multiply", - "outputs" : ["Multiply_2235"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2255", "Tanh_2272" ], - "name" : "Multiply_2273", - "op" : "Multiply", - "outputs" : ["Multiply_2273"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2235"], - "name" : "Reshape_2236", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2235", "Reshape_2278" ], - "name" : "Dot_2279", - "op" : "Dot", - "outputs" : ["Dot_2279"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2273", "Reshape_2274" ], - "name" : "Dot_2275", - "op" : "Dot", - "outputs" : ["Dot_2275"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2273", "Reshape_2316" ], - "name" : "Dot_2317", - "op" : "Dot", - "outputs" : ["Dot_2317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2279", "Broadcast_2280" ], - "name" : "Add_2281", - "op" : "Add", - "outputs" : ["Add_2281"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2275", "Broadcast_2276" ], - "name" : "Add_2277", - "op" : "Add", - "outputs" : ["Add_2277"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2317", "Broadcast_2318" ], - "name" : "Add_2319", - "op" : "Add", - "outputs" : ["Add_2319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2277", "Add_2281" ], - "name" : "Add_2282", - "op" : "Add", - "outputs" : ["Add_2282"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2315", "Add_2319" ], - "name" : "Add_2320", - "op" : "Add", - "outputs" : ["Add_2320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2282"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2283", - "op" : "Slice", - "outputs" : ["Slice_2283"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2282"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2284", - "op" : "Slice", - "outputs" : ["Slice_2284"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2282"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2285", - "op" : "Slice", - "outputs" : ["Slice_2285"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2282"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2286", - "op" : "Slice", - "outputs" : ["Slice_2286"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2320"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2321", - "op" : "Slice", - "outputs" : ["Slice_2321"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2320"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2322", - "op" : "Slice", - "outputs" : ["Slice_2322"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2320"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2323", - "op" : "Slice", - "outputs" : ["Slice_2323"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2320"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2324", - "op" : "Slice", - "outputs" : ["Slice_2324"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2283"], - "name" : "Negative_2302", - "op" : "Negative", - "outputs" : ["Negative_2302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2284"], - "name" : "Negative_2295", - "op" : "Negative", - "outputs" : ["Negative_2295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2285"], - "name" : "Tanh_2306", - "op" : "Tanh", - "outputs" : ["Tanh_2306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2286"], - "name" : "Negative_2289", - "op" : "Negative", - "outputs" : ["Negative_2289"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2321"], - "name" : "Negative_2340", - "op" : "Negative", - "outputs" : ["Negative_2340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2322"], - "name" : "Negative_2333", - "op" : "Negative", - "outputs" : ["Negative_2333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2323"], - "name" : "Tanh_2344", - "op" : "Tanh", - "outputs" : ["Tanh_2344"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2324"], - "name" : "Negative_2327", - "op" : "Negative", - "outputs" : ["Negative_2327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2302"], - "name" : "Exp_2303", - "op" : "Exp", - "outputs" : ["Exp_2303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2295"], - "name" : "Exp_2296", - "op" : "Exp", - "outputs" : ["Exp_2296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2289"], - "name" : "Exp_2290", - "op" : "Exp", - "outputs" : ["Exp_2290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2340"], - "name" : "Exp_2341", - "op" : "Exp", - "outputs" : ["Exp_2341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2333"], - "name" : "Exp_2334", - "op" : "Exp", - "outputs" : ["Exp_2334"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2327"], - "name" : "Exp_2328", - "op" : "Exp", - "outputs" : ["Exp_2328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2301", "Exp_2303" ], - "name" : "Add_2304", - "op" : "Add", - "outputs" : ["Add_2304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2294", "Exp_2296" ], - "name" : "Add_2297", - "op" : "Add", - "outputs" : ["Add_2297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2288", "Exp_2290" ], - "name" : "Add_2291", - "op" : "Add", - "outputs" : ["Add_2291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2339", "Exp_2341" ], - "name" : "Add_2342", - "op" : "Add", - "outputs" : ["Add_2342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2332", "Exp_2334" ], - "name" : "Add_2335", - "op" : "Add", - "outputs" : ["Add_2335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2326", "Exp_2328" ], - "name" : "Add_2329", - "op" : "Add", - "outputs" : ["Add_2329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2301", "Add_2304" ], - "name" : "Divide_2305", - "op" : "Divide", - "outputs" : ["Divide_2305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2294", "Add_2297" ], - "name" : "Divide_2298", - "op" : "Divide", - "outputs" : ["Divide_2298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2288", "Add_2291" ], - "name" : "Divide_2292", - "op" : "Divide", - "outputs" : ["Divide_2292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2339", "Add_2342" ], - "name" : "Divide_2343", - "op" : "Divide", - "outputs" : ["Divide_2343"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2332", "Add_2335" ], - "name" : "Divide_2336", - "op" : "Divide", - "outputs" : ["Divide_2336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2326", "Add_2329" ], - "name" : "Divide_2330", - "op" : "Divide", - "outputs" : ["Divide_2330"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2305", "Tanh_2306" ], - "name" : "Multiply_2307", - "op" : "Multiply", - "outputs" : ["Multiply_2307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2298", "Add_2233" ], - "name" : "Multiply_2299", - "op" : "Multiply", - "outputs" : ["Multiply_2299"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2343", "Tanh_2344" ], - "name" : "Multiply_2345", - "op" : "Multiply", - "outputs" : ["Multiply_2345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2336", "Add_2271" ], - "name" : "Multiply_2337", - "op" : "Multiply", - "outputs" : ["Multiply_2337"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2299", "Multiply_2307" ], - "name" : "Add_2308", - "op" : "Add", - "outputs" : ["Add_2308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2337", "Multiply_2345" ], - "name" : "Add_2346", - "op" : "Add", - "outputs" : ["Add_2346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2308"], - "name" : "Tanh_2309", - "op" : "Tanh", - "outputs" : ["Tanh_2309"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2346"], - "name" : "Tanh_2347", - "op" : "Tanh", - "outputs" : ["Tanh_2347"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2292", "Tanh_2309" ], - "name" : "Multiply_2310", - "op" : "Multiply", - "outputs" : ["Multiply_2310"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2330", "Tanh_2347" ], - "name" : "Multiply_2348", - "op" : "Multiply", - "outputs" : ["Multiply_2348"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2310"], - "name" : "Reshape_2311", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2310", "Reshape_2353" ], - "name" : "Dot_2354", - "op" : "Dot", - "outputs" : ["Dot_2354"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2348", "Reshape_2349" ], - "name" : "Dot_2350", - "op" : "Dot", - "outputs" : ["Dot_2350"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2348", "Reshape_2391" ], - "name" : "Dot_2392", - "op" : "Dot", - "outputs" : ["Dot_2392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2354", "Broadcast_2355" ], - "name" : "Add_2356", - "op" : "Add", - "outputs" : ["Add_2356"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2350", "Broadcast_2351" ], - "name" : "Add_2352", - "op" : "Add", - "outputs" : ["Add_2352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2392", "Broadcast_2393" ], - "name" : "Add_2394", - "op" : "Add", - "outputs" : ["Add_2394"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2352", "Add_2356" ], - "name" : "Add_2357", - "op" : "Add", - "outputs" : ["Add_2357"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2390", "Add_2394" ], - "name" : "Add_2395", - "op" : "Add", - "outputs" : ["Add_2395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2357"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2358", - "op" : "Slice", - "outputs" : ["Slice_2358"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2357"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2359", - "op" : "Slice", - "outputs" : ["Slice_2359"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2357"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2360", - "op" : "Slice", - "outputs" : ["Slice_2360"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2357"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2361", - "op" : "Slice", - "outputs" : ["Slice_2361"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2395"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2396", - "op" : "Slice", - "outputs" : ["Slice_2396"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2395"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2397", - "op" : "Slice", - "outputs" : ["Slice_2397"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2395"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2398", - "op" : "Slice", - "outputs" : ["Slice_2398"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2395"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2399", - "op" : "Slice", - "outputs" : ["Slice_2399"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2358"], - "name" : "Negative_2377", - "op" : "Negative", - "outputs" : ["Negative_2377"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2359"], - "name" : "Negative_2370", - "op" : "Negative", - "outputs" : ["Negative_2370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2360"], - "name" : "Tanh_2381", - "op" : "Tanh", - "outputs" : ["Tanh_2381"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2361"], - "name" : "Negative_2364", - "op" : "Negative", - "outputs" : ["Negative_2364"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2396"], - "name" : "Negative_2415", - "op" : "Negative", - "outputs" : ["Negative_2415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2397"], - "name" : "Negative_2408", - "op" : "Negative", - "outputs" : ["Negative_2408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2398"], - "name" : "Tanh_2419", - "op" : "Tanh", - "outputs" : ["Tanh_2419"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2399"], - "name" : "Negative_2402", - "op" : "Negative", - "outputs" : ["Negative_2402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2377"], - "name" : "Exp_2378", - "op" : "Exp", - "outputs" : ["Exp_2378"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2370"], - "name" : "Exp_2371", - "op" : "Exp", - "outputs" : ["Exp_2371"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2364"], - "name" : "Exp_2365", - "op" : "Exp", - "outputs" : ["Exp_2365"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2415"], - "name" : "Exp_2416", - "op" : "Exp", - "outputs" : ["Exp_2416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2408"], - "name" : "Exp_2409", - "op" : "Exp", - "outputs" : ["Exp_2409"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2402"], - "name" : "Exp_2403", - "op" : "Exp", - "outputs" : ["Exp_2403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2376", "Exp_2378" ], - "name" : "Add_2379", - "op" : "Add", - "outputs" : ["Add_2379"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2369", "Exp_2371" ], - "name" : "Add_2372", - "op" : "Add", - "outputs" : ["Add_2372"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2363", "Exp_2365" ], - "name" : "Add_2366", - "op" : "Add", - "outputs" : ["Add_2366"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2414", "Exp_2416" ], - "name" : "Add_2417", - "op" : "Add", - "outputs" : ["Add_2417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2407", "Exp_2409" ], - "name" : "Add_2410", - "op" : "Add", - "outputs" : ["Add_2410"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2401", "Exp_2403" ], - "name" : "Add_2404", - "op" : "Add", - "outputs" : ["Add_2404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2376", "Add_2379" ], - "name" : "Divide_2380", - "op" : "Divide", - "outputs" : ["Divide_2380"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2369", "Add_2372" ], - "name" : "Divide_2373", - "op" : "Divide", - "outputs" : ["Divide_2373"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2363", "Add_2366" ], - "name" : "Divide_2367", - "op" : "Divide", - "outputs" : ["Divide_2367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2414", "Add_2417" ], - "name" : "Divide_2418", - "op" : "Divide", - "outputs" : ["Divide_2418"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2407", "Add_2410" ], - "name" : "Divide_2411", - "op" : "Divide", - "outputs" : ["Divide_2411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2401", "Add_2404" ], - "name" : "Divide_2405", - "op" : "Divide", - "outputs" : ["Divide_2405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2380", "Tanh_2381" ], - "name" : "Multiply_2382", - "op" : "Multiply", - "outputs" : ["Multiply_2382"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2373", "Add_2308" ], - "name" : "Multiply_2374", - "op" : "Multiply", - "outputs" : ["Multiply_2374"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2418", "Tanh_2419" ], - "name" : "Multiply_2420", - "op" : "Multiply", - "outputs" : ["Multiply_2420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2411", "Add_2346" ], - "name" : "Multiply_2412", - "op" : "Multiply", - "outputs" : ["Multiply_2412"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2374", "Multiply_2382" ], - "name" : "Add_2383", - "op" : "Add", - "outputs" : ["Add_2383"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2412", "Multiply_2420" ], - "name" : "Add_2421", - "op" : "Add", - "outputs" : ["Add_2421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2383"], - "name" : "Tanh_2384", - "op" : "Tanh", - "outputs" : ["Tanh_2384"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2421"], - "name" : "Tanh_2422", - "op" : "Tanh", - "outputs" : ["Tanh_2422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2367", "Tanh_2384" ], - "name" : "Multiply_2385", - "op" : "Multiply", - "outputs" : ["Multiply_2385"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2405", "Tanh_2422" ], - "name" : "Multiply_2423", - "op" : "Multiply", - "outputs" : ["Multiply_2423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2385"], - "name" : "Reshape_2386", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2386"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2385", "Reshape_2428" ], - "name" : "Dot_2429", - "op" : "Dot", - "outputs" : ["Dot_2429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2423", "Reshape_2424" ], - "name" : "Dot_2425", - "op" : "Dot", - "outputs" : ["Dot_2425"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2423", "Reshape_2466" ], - "name" : "Dot_2467", - "op" : "Dot", - "outputs" : ["Dot_2467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2429", "Broadcast_2430" ], - "name" : "Add_2431", - "op" : "Add", - "outputs" : ["Add_2431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2425", "Broadcast_2426" ], - "name" : "Add_2427", - "op" : "Add", - "outputs" : ["Add_2427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2467", "Broadcast_2468" ], - "name" : "Add_2469", - "op" : "Add", - "outputs" : ["Add_2469"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2427", "Add_2431" ], - "name" : "Add_2432", - "op" : "Add", - "outputs" : ["Add_2432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2465", "Add_2469" ], - "name" : "Add_2470", - "op" : "Add", - "outputs" : ["Add_2470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2432"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2433", - "op" : "Slice", - "outputs" : ["Slice_2433"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2432"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2434", - "op" : "Slice", - "outputs" : ["Slice_2434"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2432"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2435", - "op" : "Slice", - "outputs" : ["Slice_2435"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2432"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2436", - "op" : "Slice", - "outputs" : ["Slice_2436"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2470"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2471", - "op" : "Slice", - "outputs" : ["Slice_2471"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2470"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2472", - "op" : "Slice", - "outputs" : ["Slice_2472"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2470"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2473", - "op" : "Slice", - "outputs" : ["Slice_2473"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2470"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2474", - "op" : "Slice", - "outputs" : ["Slice_2474"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2433"], - "name" : "Negative_2452", - "op" : "Negative", - "outputs" : ["Negative_2452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2434"], - "name" : "Negative_2445", - "op" : "Negative", - "outputs" : ["Negative_2445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2435"], - "name" : "Tanh_2456", - "op" : "Tanh", - "outputs" : ["Tanh_2456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2436"], - "name" : "Negative_2439", - "op" : "Negative", - "outputs" : ["Negative_2439"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2471"], - "name" : "Negative_2490", - "op" : "Negative", - "outputs" : ["Negative_2490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2472"], - "name" : "Negative_2483", - "op" : "Negative", - "outputs" : ["Negative_2483"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2473"], - "name" : "Tanh_2494", - "op" : "Tanh", - "outputs" : ["Tanh_2494"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2474"], - "name" : "Negative_2477", - "op" : "Negative", - "outputs" : ["Negative_2477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2452"], - "name" : "Exp_2453", - "op" : "Exp", - "outputs" : ["Exp_2453"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2445"], - "name" : "Exp_2446", - "op" : "Exp", - "outputs" : ["Exp_2446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2439"], - "name" : "Exp_2440", - "op" : "Exp", - "outputs" : ["Exp_2440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2490"], - "name" : "Exp_2491", - "op" : "Exp", - "outputs" : ["Exp_2491"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2483"], - "name" : "Exp_2484", - "op" : "Exp", - "outputs" : ["Exp_2484"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2477"], - "name" : "Exp_2478", - "op" : "Exp", - "outputs" : ["Exp_2478"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2451", "Exp_2453" ], - "name" : "Add_2454", - "op" : "Add", - "outputs" : ["Add_2454"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2444", "Exp_2446" ], - "name" : "Add_2447", - "op" : "Add", - "outputs" : ["Add_2447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2438", "Exp_2440" ], - "name" : "Add_2441", - "op" : "Add", - "outputs" : ["Add_2441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2489", "Exp_2491" ], - "name" : "Add_2492", - "op" : "Add", - "outputs" : ["Add_2492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2482", "Exp_2484" ], - "name" : "Add_2485", - "op" : "Add", - "outputs" : ["Add_2485"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2476", "Exp_2478" ], - "name" : "Add_2479", - "op" : "Add", - "outputs" : ["Add_2479"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2451", "Add_2454" ], - "name" : "Divide_2455", - "op" : "Divide", - "outputs" : ["Divide_2455"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2444", "Add_2447" ], - "name" : "Divide_2448", - "op" : "Divide", - "outputs" : ["Divide_2448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2438", "Add_2441" ], - "name" : "Divide_2442", - "op" : "Divide", - "outputs" : ["Divide_2442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2489", "Add_2492" ], - "name" : "Divide_2493", - "op" : "Divide", - "outputs" : ["Divide_2493"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2482", "Add_2485" ], - "name" : "Divide_2486", - "op" : "Divide", - "outputs" : ["Divide_2486"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2476", "Add_2479" ], - "name" : "Divide_2480", - "op" : "Divide", - "outputs" : ["Divide_2480"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2455", "Tanh_2456" ], - "name" : "Multiply_2457", - "op" : "Multiply", - "outputs" : ["Multiply_2457"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2448", "Add_2383" ], - "name" : "Multiply_2449", - "op" : "Multiply", - "outputs" : ["Multiply_2449"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2493", "Tanh_2494" ], - "name" : "Multiply_2495", - "op" : "Multiply", - "outputs" : ["Multiply_2495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2486", "Add_2421" ], - "name" : "Multiply_2487", - "op" : "Multiply", - "outputs" : ["Multiply_2487"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2449", "Multiply_2457" ], - "name" : "Add_2458", - "op" : "Add", - "outputs" : ["Add_2458"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2487", "Multiply_2495" ], - "name" : "Add_2496", - "op" : "Add", - "outputs" : ["Add_2496"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2458"], - "name" : "Tanh_2459", - "op" : "Tanh", - "outputs" : ["Tanh_2459"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2496"], - "name" : "Tanh_2497", - "op" : "Tanh", - "outputs" : ["Tanh_2497"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2442", "Tanh_2459" ], - "name" : "Multiply_2460", - "op" : "Multiply", - "outputs" : ["Multiply_2460"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2480", "Tanh_2497" ], - "name" : "Multiply_2498", - "op" : "Multiply", - "outputs" : ["Multiply_2498"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2460"], - "name" : "Reshape_2461", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2461"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2460", "Reshape_2503" ], - "name" : "Dot_2504", - "op" : "Dot", - "outputs" : ["Dot_2504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2498", "Reshape_2499" ], - "name" : "Dot_2500", - "op" : "Dot", - "outputs" : ["Dot_2500"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2498", "Reshape_2541" ], - "name" : "Dot_2542", - "op" : "Dot", - "outputs" : ["Dot_2542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2504", "Broadcast_2505" ], - "name" : "Add_2506", - "op" : "Add", - "outputs" : ["Add_2506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2500", "Broadcast_2501" ], - "name" : "Add_2502", - "op" : "Add", - "outputs" : ["Add_2502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2542", "Broadcast_2543" ], - "name" : "Add_2544", - "op" : "Add", - "outputs" : ["Add_2544"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2502", "Add_2506" ], - "name" : "Add_2507", - "op" : "Add", - "outputs" : ["Add_2507"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2540", "Add_2544" ], - "name" : "Add_2545", - "op" : "Add", - "outputs" : ["Add_2545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2507"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2508", - "op" : "Slice", - "outputs" : ["Slice_2508"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2507"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2509", - "op" : "Slice", - "outputs" : ["Slice_2509"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2507"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2510", - "op" : "Slice", - "outputs" : ["Slice_2510"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2507"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2511", - "op" : "Slice", - "outputs" : ["Slice_2511"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2545"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2546", - "op" : "Slice", - "outputs" : ["Slice_2546"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2545"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2547", - "op" : "Slice", - "outputs" : ["Slice_2547"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2545"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2548", - "op" : "Slice", - "outputs" : ["Slice_2548"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2545"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2549", - "op" : "Slice", - "outputs" : ["Slice_2549"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2508"], - "name" : "Negative_2527", - "op" : "Negative", - "outputs" : ["Negative_2527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2509"], - "name" : "Negative_2520", - "op" : "Negative", - "outputs" : ["Negative_2520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2510"], - "name" : "Tanh_2531", - "op" : "Tanh", - "outputs" : ["Tanh_2531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2511"], - "name" : "Negative_2514", - "op" : "Negative", - "outputs" : ["Negative_2514"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2546"], - "name" : "Negative_2565", - "op" : "Negative", - "outputs" : ["Negative_2565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2547"], - "name" : "Negative_2558", - "op" : "Negative", - "outputs" : ["Negative_2558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2548"], - "name" : "Tanh_2569", - "op" : "Tanh", - "outputs" : ["Tanh_2569"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2549"], - "name" : "Negative_2552", - "op" : "Negative", - "outputs" : ["Negative_2552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2527"], - "name" : "Exp_2528", - "op" : "Exp", - "outputs" : ["Exp_2528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2520"], - "name" : "Exp_2521", - "op" : "Exp", - "outputs" : ["Exp_2521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2514"], - "name" : "Exp_2515", - "op" : "Exp", - "outputs" : ["Exp_2515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2565"], - "name" : "Exp_2566", - "op" : "Exp", - "outputs" : ["Exp_2566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2558"], - "name" : "Exp_2559", - "op" : "Exp", - "outputs" : ["Exp_2559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2552"], - "name" : "Exp_2553", - "op" : "Exp", - "outputs" : ["Exp_2553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2526", "Exp_2528" ], - "name" : "Add_2529", - "op" : "Add", - "outputs" : ["Add_2529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2519", "Exp_2521" ], - "name" : "Add_2522", - "op" : "Add", - "outputs" : ["Add_2522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2513", "Exp_2515" ], - "name" : "Add_2516", - "op" : "Add", - "outputs" : ["Add_2516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2564", "Exp_2566" ], - "name" : "Add_2567", - "op" : "Add", - "outputs" : ["Add_2567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2557", "Exp_2559" ], - "name" : "Add_2560", - "op" : "Add", - "outputs" : ["Add_2560"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2551", "Exp_2553" ], - "name" : "Add_2554", - "op" : "Add", - "outputs" : ["Add_2554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2526", "Add_2529" ], - "name" : "Divide_2530", - "op" : "Divide", - "outputs" : ["Divide_2530"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2519", "Add_2522" ], - "name" : "Divide_2523", - "op" : "Divide", - "outputs" : ["Divide_2523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2513", "Add_2516" ], - "name" : "Divide_2517", - "op" : "Divide", - "outputs" : ["Divide_2517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2564", "Add_2567" ], - "name" : "Divide_2568", - "op" : "Divide", - "outputs" : ["Divide_2568"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2557", "Add_2560" ], - "name" : "Divide_2561", - "op" : "Divide", - "outputs" : ["Divide_2561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2551", "Add_2554" ], - "name" : "Divide_2555", - "op" : "Divide", - "outputs" : ["Divide_2555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2530", "Tanh_2531" ], - "name" : "Multiply_2532", - "op" : "Multiply", - "outputs" : ["Multiply_2532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2523", "Add_2458" ], - "name" : "Multiply_2524", - "op" : "Multiply", - "outputs" : ["Multiply_2524"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2568", "Tanh_2569" ], - "name" : "Multiply_2570", - "op" : "Multiply", - "outputs" : ["Multiply_2570"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2561", "Add_2496" ], - "name" : "Multiply_2562", - "op" : "Multiply", - "outputs" : ["Multiply_2562"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2524", "Multiply_2532" ], - "name" : "Add_2533", - "op" : "Add", - "outputs" : ["Add_2533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2562", "Multiply_2570" ], - "name" : "Add_2571", - "op" : "Add", - "outputs" : ["Add_2571"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2533"], - "name" : "Tanh_2534", - "op" : "Tanh", - "outputs" : ["Tanh_2534"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2571"], - "name" : "Tanh_2572", - "op" : "Tanh", - "outputs" : ["Tanh_2572"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2517", "Tanh_2534" ], - "name" : "Multiply_2535", - "op" : "Multiply", - "outputs" : ["Multiply_2535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2555", "Tanh_2572" ], - "name" : "Multiply_2573", - "op" : "Multiply", - "outputs" : ["Multiply_2573"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2535"], - "name" : "Reshape_2536", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2535", "Reshape_2578" ], - "name" : "Dot_2579", - "op" : "Dot", - "outputs" : ["Dot_2579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2573", "Reshape_2574" ], - "name" : "Dot_2575", - "op" : "Dot", - "outputs" : ["Dot_2575"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2573", "Reshape_2616" ], - "name" : "Dot_2617", - "op" : "Dot", - "outputs" : ["Dot_2617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2579", "Broadcast_2580" ], - "name" : "Add_2581", - "op" : "Add", - "outputs" : ["Add_2581"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2575", "Broadcast_2576" ], - "name" : "Add_2577", - "op" : "Add", - "outputs" : ["Add_2577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2617", "Broadcast_2618" ], - "name" : "Add_2619", - "op" : "Add", - "outputs" : ["Add_2619"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2577", "Add_2581" ], - "name" : "Add_2582", - "op" : "Add", - "outputs" : ["Add_2582"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2615", "Add_2619" ], - "name" : "Add_2620", - "op" : "Add", - "outputs" : ["Add_2620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2582"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2583", - "op" : "Slice", - "outputs" : ["Slice_2583"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2582"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2584", - "op" : "Slice", - "outputs" : ["Slice_2584"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2582"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2585", - "op" : "Slice", - "outputs" : ["Slice_2585"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2582"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2586", - "op" : "Slice", - "outputs" : ["Slice_2586"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2620"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2621", - "op" : "Slice", - "outputs" : ["Slice_2621"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2620"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2622", - "op" : "Slice", - "outputs" : ["Slice_2622"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2620"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2623", - "op" : "Slice", - "outputs" : ["Slice_2623"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2620"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2624", - "op" : "Slice", - "outputs" : ["Slice_2624"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2583"], - "name" : "Negative_2602", - "op" : "Negative", - "outputs" : ["Negative_2602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2584"], - "name" : "Negative_2595", - "op" : "Negative", - "outputs" : ["Negative_2595"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2585"], - "name" : "Tanh_2606", - "op" : "Tanh", - "outputs" : ["Tanh_2606"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2586"], - "name" : "Negative_2589", - "op" : "Negative", - "outputs" : ["Negative_2589"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2621"], - "name" : "Negative_2640", - "op" : "Negative", - "outputs" : ["Negative_2640"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2622"], - "name" : "Negative_2633", - "op" : "Negative", - "outputs" : ["Negative_2633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2623"], - "name" : "Tanh_2644", - "op" : "Tanh", - "outputs" : ["Tanh_2644"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2624"], - "name" : "Negative_2627", - "op" : "Negative", - "outputs" : ["Negative_2627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2602"], - "name" : "Exp_2603", - "op" : "Exp", - "outputs" : ["Exp_2603"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2595"], - "name" : "Exp_2596", - "op" : "Exp", - "outputs" : ["Exp_2596"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2589"], - "name" : "Exp_2590", - "op" : "Exp", - "outputs" : ["Exp_2590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2640"], - "name" : "Exp_2641", - "op" : "Exp", - "outputs" : ["Exp_2641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2633"], - "name" : "Exp_2634", - "op" : "Exp", - "outputs" : ["Exp_2634"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2627"], - "name" : "Exp_2628", - "op" : "Exp", - "outputs" : ["Exp_2628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2601", "Exp_2603" ], - "name" : "Add_2604", - "op" : "Add", - "outputs" : ["Add_2604"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2594", "Exp_2596" ], - "name" : "Add_2597", - "op" : "Add", - "outputs" : ["Add_2597"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2588", "Exp_2590" ], - "name" : "Add_2591", - "op" : "Add", - "outputs" : ["Add_2591"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2639", "Exp_2641" ], - "name" : "Add_2642", - "op" : "Add", - "outputs" : ["Add_2642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2632", "Exp_2634" ], - "name" : "Add_2635", - "op" : "Add", - "outputs" : ["Add_2635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2626", "Exp_2628" ], - "name" : "Add_2629", - "op" : "Add", - "outputs" : ["Add_2629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2601", "Add_2604" ], - "name" : "Divide_2605", - "op" : "Divide", - "outputs" : ["Divide_2605"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2594", "Add_2597" ], - "name" : "Divide_2598", - "op" : "Divide", - "outputs" : ["Divide_2598"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2588", "Add_2591" ], - "name" : "Divide_2592", - "op" : "Divide", - "outputs" : ["Divide_2592"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2639", "Add_2642" ], - "name" : "Divide_2643", - "op" : "Divide", - "outputs" : ["Divide_2643"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2632", "Add_2635" ], - "name" : "Divide_2636", - "op" : "Divide", - "outputs" : ["Divide_2636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2626", "Add_2629" ], - "name" : "Divide_2630", - "op" : "Divide", - "outputs" : ["Divide_2630"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2605", "Tanh_2606" ], - "name" : "Multiply_2607", - "op" : "Multiply", - "outputs" : ["Multiply_2607"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2598", "Add_2533" ], - "name" : "Multiply_2599", - "op" : "Multiply", - "outputs" : ["Multiply_2599"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2643", "Tanh_2644" ], - "name" : "Multiply_2645", - "op" : "Multiply", - "outputs" : ["Multiply_2645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2636", "Add_2571" ], - "name" : "Multiply_2637", - "op" : "Multiply", - "outputs" : ["Multiply_2637"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2599", "Multiply_2607" ], - "name" : "Add_2608", - "op" : "Add", - "outputs" : ["Add_2608"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2637", "Multiply_2645" ], - "name" : "Add_2646", - "op" : "Add", - "outputs" : ["Add_2646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2608"], - "name" : "Tanh_2609", - "op" : "Tanh", - "outputs" : ["Tanh_2609"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2646"], - "name" : "Tanh_2647", - "op" : "Tanh", - "outputs" : ["Tanh_2647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2592", "Tanh_2609" ], - "name" : "Multiply_2610", - "op" : "Multiply", - "outputs" : ["Multiply_2610"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2630", "Tanh_2647" ], - "name" : "Multiply_2648", - "op" : "Multiply", - "outputs" : ["Multiply_2648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2610"], - "name" : "Reshape_2611", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2611"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2610", "Reshape_2653" ], - "name" : "Dot_2654", - "op" : "Dot", - "outputs" : ["Dot_2654"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2648", "Reshape_2649" ], - "name" : "Dot_2650", - "op" : "Dot", - "outputs" : ["Dot_2650"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2648", "Reshape_2691" ], - "name" : "Dot_2692", - "op" : "Dot", - "outputs" : ["Dot_2692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2654", "Broadcast_2655" ], - "name" : "Add_2656", - "op" : "Add", - "outputs" : ["Add_2656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2650", "Broadcast_2651" ], - "name" : "Add_2652", - "op" : "Add", - "outputs" : ["Add_2652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2692", "Broadcast_2693" ], - "name" : "Add_2694", - "op" : "Add", - "outputs" : ["Add_2694"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2652", "Add_2656" ], - "name" : "Add_2657", - "op" : "Add", - "outputs" : ["Add_2657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2690", "Add_2694" ], - "name" : "Add_2695", - "op" : "Add", - "outputs" : ["Add_2695"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2657"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2658", - "op" : "Slice", - "outputs" : ["Slice_2658"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2657"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2659", - "op" : "Slice", - "outputs" : ["Slice_2659"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2657"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2660", - "op" : "Slice", - "outputs" : ["Slice_2660"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2657"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2661", - "op" : "Slice", - "outputs" : ["Slice_2661"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2695"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2696", - "op" : "Slice", - "outputs" : ["Slice_2696"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2695"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2697", - "op" : "Slice", - "outputs" : ["Slice_2697"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2695"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2698", - "op" : "Slice", - "outputs" : ["Slice_2698"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2695"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2699", - "op" : "Slice", - "outputs" : ["Slice_2699"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2658"], - "name" : "Negative_2677", - "op" : "Negative", - "outputs" : ["Negative_2677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2659"], - "name" : "Negative_2670", - "op" : "Negative", - "outputs" : ["Negative_2670"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2660"], - "name" : "Tanh_2681", - "op" : "Tanh", - "outputs" : ["Tanh_2681"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2661"], - "name" : "Negative_2664", - "op" : "Negative", - "outputs" : ["Negative_2664"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2696"], - "name" : "Negative_2715", - "op" : "Negative", - "outputs" : ["Negative_2715"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2697"], - "name" : "Negative_2708", - "op" : "Negative", - "outputs" : ["Negative_2708"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2698"], - "name" : "Tanh_2719", - "op" : "Tanh", - "outputs" : ["Tanh_2719"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2699"], - "name" : "Negative_2702", - "op" : "Negative", - "outputs" : ["Negative_2702"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2677"], - "name" : "Exp_2678", - "op" : "Exp", - "outputs" : ["Exp_2678"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2670"], - "name" : "Exp_2671", - "op" : "Exp", - "outputs" : ["Exp_2671"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2664"], - "name" : "Exp_2665", - "op" : "Exp", - "outputs" : ["Exp_2665"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2715"], - "name" : "Exp_2716", - "op" : "Exp", - "outputs" : ["Exp_2716"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2708"], - "name" : "Exp_2709", - "op" : "Exp", - "outputs" : ["Exp_2709"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2702"], - "name" : "Exp_2703", - "op" : "Exp", - "outputs" : ["Exp_2703"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2676", "Exp_2678" ], - "name" : "Add_2679", - "op" : "Add", - "outputs" : ["Add_2679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2669", "Exp_2671" ], - "name" : "Add_2672", - "op" : "Add", - "outputs" : ["Add_2672"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2663", "Exp_2665" ], - "name" : "Add_2666", - "op" : "Add", - "outputs" : ["Add_2666"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2714", "Exp_2716" ], - "name" : "Add_2717", - "op" : "Add", - "outputs" : ["Add_2717"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2707", "Exp_2709" ], - "name" : "Add_2710", - "op" : "Add", - "outputs" : ["Add_2710"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2701", "Exp_2703" ], - "name" : "Add_2704", - "op" : "Add", - "outputs" : ["Add_2704"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2676", "Add_2679" ], - "name" : "Divide_2680", - "op" : "Divide", - "outputs" : ["Divide_2680"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2669", "Add_2672" ], - "name" : "Divide_2673", - "op" : "Divide", - "outputs" : ["Divide_2673"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2663", "Add_2666" ], - "name" : "Divide_2667", - "op" : "Divide", - "outputs" : ["Divide_2667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2714", "Add_2717" ], - "name" : "Divide_2718", - "op" : "Divide", - "outputs" : ["Divide_2718"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2707", "Add_2710" ], - "name" : "Divide_2711", - "op" : "Divide", - "outputs" : ["Divide_2711"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2701", "Add_2704" ], - "name" : "Divide_2705", - "op" : "Divide", - "outputs" : ["Divide_2705"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2680", "Tanh_2681" ], - "name" : "Multiply_2682", - "op" : "Multiply", - "outputs" : ["Multiply_2682"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2673", "Add_2608" ], - "name" : "Multiply_2674", - "op" : "Multiply", - "outputs" : ["Multiply_2674"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2718", "Tanh_2719" ], - "name" : "Multiply_2720", - "op" : "Multiply", - "outputs" : ["Multiply_2720"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2711", "Add_2646" ], - "name" : "Multiply_2712", - "op" : "Multiply", - "outputs" : ["Multiply_2712"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2674", "Multiply_2682" ], - "name" : "Add_2683", - "op" : "Add", - "outputs" : ["Add_2683"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2712", "Multiply_2720" ], - "name" : "Add_2721", - "op" : "Add", - "outputs" : ["Add_2721"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2683"], - "name" : "Tanh_2684", - "op" : "Tanh", - "outputs" : ["Tanh_2684"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2721"], - "name" : "Tanh_2722", - "op" : "Tanh", - "outputs" : ["Tanh_2722"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2667", "Tanh_2684" ], - "name" : "Multiply_2685", - "op" : "Multiply", - "outputs" : ["Multiply_2685"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2705", "Tanh_2722" ], - "name" : "Multiply_2723", - "op" : "Multiply", - "outputs" : ["Multiply_2723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2685"], - "name" : "Reshape_2686", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2686"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2685", "Reshape_2728" ], - "name" : "Dot_2729", - "op" : "Dot", - "outputs" : ["Dot_2729"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2723", "Reshape_2724" ], - "name" : "Dot_2725", - "op" : "Dot", - "outputs" : ["Dot_2725"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2723", "Reshape_2766" ], - "name" : "Dot_2767", - "op" : "Dot", - "outputs" : ["Dot_2767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2729", "Broadcast_2730" ], - "name" : "Add_2731", - "op" : "Add", - "outputs" : ["Add_2731"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2725", "Broadcast_2726" ], - "name" : "Add_2727", - "op" : "Add", - "outputs" : ["Add_2727"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2767", "Broadcast_2768" ], - "name" : "Add_2769", - "op" : "Add", - "outputs" : ["Add_2769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2727", "Add_2731" ], - "name" : "Add_2732", - "op" : "Add", - "outputs" : ["Add_2732"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2765", "Add_2769" ], - "name" : "Add_2770", - "op" : "Add", - "outputs" : ["Add_2770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2732"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2733", - "op" : "Slice", - "outputs" : ["Slice_2733"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2732"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2734", - "op" : "Slice", - "outputs" : ["Slice_2734"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2732"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2735", - "op" : "Slice", - "outputs" : ["Slice_2735"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2732"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2736", - "op" : "Slice", - "outputs" : ["Slice_2736"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2770"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2771", - "op" : "Slice", - "outputs" : ["Slice_2771"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2770"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2772", - "op" : "Slice", - "outputs" : ["Slice_2772"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2770"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2773", - "op" : "Slice", - "outputs" : ["Slice_2773"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2770"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2774", - "op" : "Slice", - "outputs" : ["Slice_2774"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2733"], - "name" : "Negative_2752", - "op" : "Negative", - "outputs" : ["Negative_2752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2734"], - "name" : "Negative_2745", - "op" : "Negative", - "outputs" : ["Negative_2745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2735"], - "name" : "Tanh_2756", - "op" : "Tanh", - "outputs" : ["Tanh_2756"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2736"], - "name" : "Negative_2739", - "op" : "Negative", - "outputs" : ["Negative_2739"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2771"], - "name" : "Negative_2790", - "op" : "Negative", - "outputs" : ["Negative_2790"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2772"], - "name" : "Negative_2783", - "op" : "Negative", - "outputs" : ["Negative_2783"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2773"], - "name" : "Tanh_2794", - "op" : "Tanh", - "outputs" : ["Tanh_2794"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2774"], - "name" : "Negative_2777", - "op" : "Negative", - "outputs" : ["Negative_2777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2752"], - "name" : "Exp_2753", - "op" : "Exp", - "outputs" : ["Exp_2753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2745"], - "name" : "Exp_2746", - "op" : "Exp", - "outputs" : ["Exp_2746"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2739"], - "name" : "Exp_2740", - "op" : "Exp", - "outputs" : ["Exp_2740"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2790"], - "name" : "Exp_2791", - "op" : "Exp", - "outputs" : ["Exp_2791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2783"], - "name" : "Exp_2784", - "op" : "Exp", - "outputs" : ["Exp_2784"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2777"], - "name" : "Exp_2778", - "op" : "Exp", - "outputs" : ["Exp_2778"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2751", "Exp_2753" ], - "name" : "Add_2754", - "op" : "Add", - "outputs" : ["Add_2754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2744", "Exp_2746" ], - "name" : "Add_2747", - "op" : "Add", - "outputs" : ["Add_2747"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2738", "Exp_2740" ], - "name" : "Add_2741", - "op" : "Add", - "outputs" : ["Add_2741"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2789", "Exp_2791" ], - "name" : "Add_2792", - "op" : "Add", - "outputs" : ["Add_2792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2782", "Exp_2784" ], - "name" : "Add_2785", - "op" : "Add", - "outputs" : ["Add_2785"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2776", "Exp_2778" ], - "name" : "Add_2779", - "op" : "Add", - "outputs" : ["Add_2779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2751", "Add_2754" ], - "name" : "Divide_2755", - "op" : "Divide", - "outputs" : ["Divide_2755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2744", "Add_2747" ], - "name" : "Divide_2748", - "op" : "Divide", - "outputs" : ["Divide_2748"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2738", "Add_2741" ], - "name" : "Divide_2742", - "op" : "Divide", - "outputs" : ["Divide_2742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2789", "Add_2792" ], - "name" : "Divide_2793", - "op" : "Divide", - "outputs" : ["Divide_2793"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2782", "Add_2785" ], - "name" : "Divide_2786", - "op" : "Divide", - "outputs" : ["Divide_2786"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2776", "Add_2779" ], - "name" : "Divide_2780", - "op" : "Divide", - "outputs" : ["Divide_2780"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2755", "Tanh_2756" ], - "name" : "Multiply_2757", - "op" : "Multiply", - "outputs" : ["Multiply_2757"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2748", "Add_2683" ], - "name" : "Multiply_2749", - "op" : "Multiply", - "outputs" : ["Multiply_2749"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2793", "Tanh_2794" ], - "name" : "Multiply_2795", - "op" : "Multiply", - "outputs" : ["Multiply_2795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2786", "Add_2721" ], - "name" : "Multiply_2787", - "op" : "Multiply", - "outputs" : ["Multiply_2787"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2749", "Multiply_2757" ], - "name" : "Add_2758", - "op" : "Add", - "outputs" : ["Add_2758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2787", "Multiply_2795" ], - "name" : "Add_2796", - "op" : "Add", - "outputs" : ["Add_2796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2758"], - "name" : "Tanh_2759", - "op" : "Tanh", - "outputs" : ["Tanh_2759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2796"], - "name" : "Tanh_2797", - "op" : "Tanh", - "outputs" : ["Tanh_2797"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2742", "Tanh_2759" ], - "name" : "Multiply_2760", - "op" : "Multiply", - "outputs" : ["Multiply_2760"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2780", "Tanh_2797" ], - "name" : "Multiply_2798", - "op" : "Multiply", - "outputs" : ["Multiply_2798"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2760"], - "name" : "Reshape_2761", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2760", "Reshape_2803" ], - "name" : "Dot_2804", - "op" : "Dot", - "outputs" : ["Dot_2804"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2798", "Reshape_2799" ], - "name" : "Dot_2800", - "op" : "Dot", - "outputs" : ["Dot_2800"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2798", "Reshape_2841" ], - "name" : "Dot_2842", - "op" : "Dot", - "outputs" : ["Dot_2842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2804", "Broadcast_2805" ], - "name" : "Add_2806", - "op" : "Add", - "outputs" : ["Add_2806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2800", "Broadcast_2801" ], - "name" : "Add_2802", - "op" : "Add", - "outputs" : ["Add_2802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2842", "Broadcast_2843" ], - "name" : "Add_2844", - "op" : "Add", - "outputs" : ["Add_2844"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2802", "Add_2806" ], - "name" : "Add_2807", - "op" : "Add", - "outputs" : ["Add_2807"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2840", "Add_2844" ], - "name" : "Add_2845", - "op" : "Add", - "outputs" : ["Add_2845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2807"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2808", - "op" : "Slice", - "outputs" : ["Slice_2808"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2807"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2809", - "op" : "Slice", - "outputs" : ["Slice_2809"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2807"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2810", - "op" : "Slice", - "outputs" : ["Slice_2810"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2807"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2811", - "op" : "Slice", - "outputs" : ["Slice_2811"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2845"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2846", - "op" : "Slice", - "outputs" : ["Slice_2846"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2845"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2847", - "op" : "Slice", - "outputs" : ["Slice_2847"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2845"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2848", - "op" : "Slice", - "outputs" : ["Slice_2848"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2845"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2849", - "op" : "Slice", - "outputs" : ["Slice_2849"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2808"], - "name" : "Negative_2827", - "op" : "Negative", - "outputs" : ["Negative_2827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2809"], - "name" : "Negative_2820", - "op" : "Negative", - "outputs" : ["Negative_2820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2810"], - "name" : "Tanh_2831", - "op" : "Tanh", - "outputs" : ["Tanh_2831"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2811"], - "name" : "Negative_2814", - "op" : "Negative", - "outputs" : ["Negative_2814"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2846"], - "name" : "Negative_2865", - "op" : "Negative", - "outputs" : ["Negative_2865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2847"], - "name" : "Negative_2858", - "op" : "Negative", - "outputs" : ["Negative_2858"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2848"], - "name" : "Tanh_2869", - "op" : "Tanh", - "outputs" : ["Tanh_2869"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2849"], - "name" : "Negative_2852", - "op" : "Negative", - "outputs" : ["Negative_2852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2827"], - "name" : "Exp_2828", - "op" : "Exp", - "outputs" : ["Exp_2828"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2820"], - "name" : "Exp_2821", - "op" : "Exp", - "outputs" : ["Exp_2821"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2814"], - "name" : "Exp_2815", - "op" : "Exp", - "outputs" : ["Exp_2815"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2865"], - "name" : "Exp_2866", - "op" : "Exp", - "outputs" : ["Exp_2866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2858"], - "name" : "Exp_2859", - "op" : "Exp", - "outputs" : ["Exp_2859"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2852"], - "name" : "Exp_2853", - "op" : "Exp", - "outputs" : ["Exp_2853"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2826", "Exp_2828" ], - "name" : "Add_2829", - "op" : "Add", - "outputs" : ["Add_2829"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2819", "Exp_2821" ], - "name" : "Add_2822", - "op" : "Add", - "outputs" : ["Add_2822"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2813", "Exp_2815" ], - "name" : "Add_2816", - "op" : "Add", - "outputs" : ["Add_2816"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2864", "Exp_2866" ], - "name" : "Add_2867", - "op" : "Add", - "outputs" : ["Add_2867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2857", "Exp_2859" ], - "name" : "Add_2860", - "op" : "Add", - "outputs" : ["Add_2860"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2851", "Exp_2853" ], - "name" : "Add_2854", - "op" : "Add", - "outputs" : ["Add_2854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2826", "Add_2829" ], - "name" : "Divide_2830", - "op" : "Divide", - "outputs" : ["Divide_2830"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2819", "Add_2822" ], - "name" : "Divide_2823", - "op" : "Divide", - "outputs" : ["Divide_2823"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2813", "Add_2816" ], - "name" : "Divide_2817", - "op" : "Divide", - "outputs" : ["Divide_2817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2864", "Add_2867" ], - "name" : "Divide_2868", - "op" : "Divide", - "outputs" : ["Divide_2868"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2857", "Add_2860" ], - "name" : "Divide_2861", - "op" : "Divide", - "outputs" : ["Divide_2861"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2851", "Add_2854" ], - "name" : "Divide_2855", - "op" : "Divide", - "outputs" : ["Divide_2855"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2830", "Tanh_2831" ], - "name" : "Multiply_2832", - "op" : "Multiply", - "outputs" : ["Multiply_2832"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2823", "Add_2758" ], - "name" : "Multiply_2824", - "op" : "Multiply", - "outputs" : ["Multiply_2824"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2868", "Tanh_2869" ], - "name" : "Multiply_2870", - "op" : "Multiply", - "outputs" : ["Multiply_2870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2861", "Add_2796" ], - "name" : "Multiply_2862", - "op" : "Multiply", - "outputs" : ["Multiply_2862"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2824", "Multiply_2832" ], - "name" : "Add_2833", - "op" : "Add", - "outputs" : ["Add_2833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2862", "Multiply_2870" ], - "name" : "Add_2871", - "op" : "Add", - "outputs" : ["Add_2871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2833"], - "name" : "Tanh_2834", - "op" : "Tanh", - "outputs" : ["Tanh_2834"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2871"], - "name" : "Tanh_2872", - "op" : "Tanh", - "outputs" : ["Tanh_2872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2817", "Tanh_2834" ], - "name" : "Multiply_2835", - "op" : "Multiply", - "outputs" : ["Multiply_2835"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2855", "Tanh_2872" ], - "name" : "Multiply_2873", - "op" : "Multiply", - "outputs" : ["Multiply_2873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2835"], - "name" : "Reshape_2836", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2835", "Reshape_2878" ], - "name" : "Dot_2879", - "op" : "Dot", - "outputs" : ["Dot_2879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2873", "Reshape_2874" ], - "name" : "Dot_2875", - "op" : "Dot", - "outputs" : ["Dot_2875"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2873", "Reshape_2916" ], - "name" : "Dot_2917", - "op" : "Dot", - "outputs" : ["Dot_2917"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2879", "Broadcast_2880" ], - "name" : "Add_2881", - "op" : "Add", - "outputs" : ["Add_2881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2875", "Broadcast_2876" ], - "name" : "Add_2877", - "op" : "Add", - "outputs" : ["Add_2877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2917", "Broadcast_2918" ], - "name" : "Add_2919", - "op" : "Add", - "outputs" : ["Add_2919"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2877", "Add_2881" ], - "name" : "Add_2882", - "op" : "Add", - "outputs" : ["Add_2882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2915", "Add_2919" ], - "name" : "Add_2920", - "op" : "Add", - "outputs" : ["Add_2920"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2882"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2883", - "op" : "Slice", - "outputs" : ["Slice_2883"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2882"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2884", - "op" : "Slice", - "outputs" : ["Slice_2884"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2882"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2885", - "op" : "Slice", - "outputs" : ["Slice_2885"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2882"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2886", - "op" : "Slice", - "outputs" : ["Slice_2886"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2920"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2921", - "op" : "Slice", - "outputs" : ["Slice_2921"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2920"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2922", - "op" : "Slice", - "outputs" : ["Slice_2922"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2920"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2923", - "op" : "Slice", - "outputs" : ["Slice_2923"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2920"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2924", - "op" : "Slice", - "outputs" : ["Slice_2924"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2883"], - "name" : "Negative_2902", - "op" : "Negative", - "outputs" : ["Negative_2902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2884"], - "name" : "Negative_2895", - "op" : "Negative", - "outputs" : ["Negative_2895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2885"], - "name" : "Tanh_2906", - "op" : "Tanh", - "outputs" : ["Tanh_2906"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2886"], - "name" : "Negative_2889", - "op" : "Negative", - "outputs" : ["Negative_2889"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2921"], - "name" : "Negative_2940", - "op" : "Negative", - "outputs" : ["Negative_2940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2922"], - "name" : "Negative_2933", - "op" : "Negative", - "outputs" : ["Negative_2933"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2923"], - "name" : "Tanh_2944", - "op" : "Tanh", - "outputs" : ["Tanh_2944"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2924"], - "name" : "Negative_2927", - "op" : "Negative", - "outputs" : ["Negative_2927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2902"], - "name" : "Exp_2903", - "op" : "Exp", - "outputs" : ["Exp_2903"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2895"], - "name" : "Exp_2896", - "op" : "Exp", - "outputs" : ["Exp_2896"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2889"], - "name" : "Exp_2890", - "op" : "Exp", - "outputs" : ["Exp_2890"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2940"], - "name" : "Exp_2941", - "op" : "Exp", - "outputs" : ["Exp_2941"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2933"], - "name" : "Exp_2934", - "op" : "Exp", - "outputs" : ["Exp_2934"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2927"], - "name" : "Exp_2928", - "op" : "Exp", - "outputs" : ["Exp_2928"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2901", "Exp_2903" ], - "name" : "Add_2904", - "op" : "Add", - "outputs" : ["Add_2904"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2894", "Exp_2896" ], - "name" : "Add_2897", - "op" : "Add", - "outputs" : ["Add_2897"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2888", "Exp_2890" ], - "name" : "Add_2891", - "op" : "Add", - "outputs" : ["Add_2891"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2939", "Exp_2941" ], - "name" : "Add_2942", - "op" : "Add", - "outputs" : ["Add_2942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2932", "Exp_2934" ], - "name" : "Add_2935", - "op" : "Add", - "outputs" : ["Add_2935"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2926", "Exp_2928" ], - "name" : "Add_2929", - "op" : "Add", - "outputs" : ["Add_2929"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2901", "Add_2904" ], - "name" : "Divide_2905", - "op" : "Divide", - "outputs" : ["Divide_2905"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2894", "Add_2897" ], - "name" : "Divide_2898", - "op" : "Divide", - "outputs" : ["Divide_2898"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2888", "Add_2891" ], - "name" : "Divide_2892", - "op" : "Divide", - "outputs" : ["Divide_2892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2939", "Add_2942" ], - "name" : "Divide_2943", - "op" : "Divide", - "outputs" : ["Divide_2943"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2932", "Add_2935" ], - "name" : "Divide_2936", - "op" : "Divide", - "outputs" : ["Divide_2936"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2926", "Add_2929" ], - "name" : "Divide_2930", - "op" : "Divide", - "outputs" : ["Divide_2930"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2905", "Tanh_2906" ], - "name" : "Multiply_2907", - "op" : "Multiply", - "outputs" : ["Multiply_2907"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2898", "Add_2833" ], - "name" : "Multiply_2899", - "op" : "Multiply", - "outputs" : ["Multiply_2899"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2943", "Tanh_2944" ], - "name" : "Multiply_2945", - "op" : "Multiply", - "outputs" : ["Multiply_2945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2936", "Add_2871" ], - "name" : "Multiply_2937", - "op" : "Multiply", - "outputs" : ["Multiply_2937"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2899", "Multiply_2907" ], - "name" : "Add_2908", - "op" : "Add", - "outputs" : ["Add_2908"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2937", "Multiply_2945" ], - "name" : "Add_2946", - "op" : "Add", - "outputs" : ["Add_2946"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2908"], - "name" : "Tanh_2909", - "op" : "Tanh", - "outputs" : ["Tanh_2909"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2946"], - "name" : "Tanh_2947", - "op" : "Tanh", - "outputs" : ["Tanh_2947"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2892", "Tanh_2909" ], - "name" : "Multiply_2910", - "op" : "Multiply", - "outputs" : ["Multiply_2910"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2930", "Tanh_2947" ], - "name" : "Multiply_2948", - "op" : "Multiply", - "outputs" : ["Multiply_2948"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2910"], - "name" : "Reshape_2911", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2911"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2910", "Reshape_2953" ], - "name" : "Dot_2954", - "op" : "Dot", - "outputs" : ["Dot_2954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2948", "Reshape_2949" ], - "name" : "Dot_2950", - "op" : "Dot", - "outputs" : ["Dot_2950"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_2948", "Reshape_2991" ], - "name" : "Dot_2992", - "op" : "Dot", - "outputs" : ["Dot_2992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2954", "Broadcast_2955" ], - "name" : "Add_2956", - "op" : "Add", - "outputs" : ["Add_2956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2950", "Broadcast_2951" ], - "name" : "Add_2952", - "op" : "Add", - "outputs" : ["Add_2952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_2992", "Broadcast_2993" ], - "name" : "Add_2994", - "op" : "Add", - "outputs" : ["Add_2994"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2952", "Add_2956" ], - "name" : "Add_2957", - "op" : "Add", - "outputs" : ["Add_2957"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_2990", "Add_2994" ], - "name" : "Add_2995", - "op" : "Add", - "outputs" : ["Add_2995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_2957"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2958", - "op" : "Slice", - "outputs" : ["Slice_2958"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2957"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2959", - "op" : "Slice", - "outputs" : ["Slice_2959"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2957"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2960", - "op" : "Slice", - "outputs" : ["Slice_2960"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2957"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2961", - "op" : "Slice", - "outputs" : ["Slice_2961"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2995"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2996", - "op" : "Slice", - "outputs" : ["Slice_2996"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2995"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_2997", - "op" : "Slice", - "outputs" : ["Slice_2997"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2995"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_2998", - "op" : "Slice", - "outputs" : ["Slice_2998"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2995"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_2999", - "op" : "Slice", - "outputs" : ["Slice_2999"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2958"], - "name" : "Negative_2977", - "op" : "Negative", - "outputs" : ["Negative_2977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2959"], - "name" : "Negative_2970", - "op" : "Negative", - "outputs" : ["Negative_2970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2960"], - "name" : "Tanh_2981", - "op" : "Tanh", - "outputs" : ["Tanh_2981"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2961"], - "name" : "Negative_2964", - "op" : "Negative", - "outputs" : ["Negative_2964"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2996"], - "name" : "Negative_3015", - "op" : "Negative", - "outputs" : ["Negative_3015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2997"], - "name" : "Negative_3008", - "op" : "Negative", - "outputs" : ["Negative_3008"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2998"], - "name" : "Tanh_3019", - "op" : "Tanh", - "outputs" : ["Tanh_3019"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_2999"], - "name" : "Negative_3002", - "op" : "Negative", - "outputs" : ["Negative_3002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2977"], - "name" : "Exp_2978", - "op" : "Exp", - "outputs" : ["Exp_2978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2970"], - "name" : "Exp_2971", - "op" : "Exp", - "outputs" : ["Exp_2971"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_2964"], - "name" : "Exp_2965", - "op" : "Exp", - "outputs" : ["Exp_2965"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3015"], - "name" : "Exp_3016", - "op" : "Exp", - "outputs" : ["Exp_3016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3008"], - "name" : "Exp_3009", - "op" : "Exp", - "outputs" : ["Exp_3009"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3002"], - "name" : "Exp_3003", - "op" : "Exp", - "outputs" : ["Exp_3003"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2976", "Exp_2978" ], - "name" : "Add_2979", - "op" : "Add", - "outputs" : ["Add_2979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2969", "Exp_2971" ], - "name" : "Add_2972", - "op" : "Add", - "outputs" : ["Add_2972"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2963", "Exp_2965" ], - "name" : "Add_2966", - "op" : "Add", - "outputs" : ["Add_2966"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3014", "Exp_3016" ], - "name" : "Add_3017", - "op" : "Add", - "outputs" : ["Add_3017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3007", "Exp_3009" ], - "name" : "Add_3010", - "op" : "Add", - "outputs" : ["Add_3010"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3001", "Exp_3003" ], - "name" : "Add_3004", - "op" : "Add", - "outputs" : ["Add_3004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2976", "Add_2979" ], - "name" : "Divide_2980", - "op" : "Divide", - "outputs" : ["Divide_2980"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2969", "Add_2972" ], - "name" : "Divide_2973", - "op" : "Divide", - "outputs" : ["Divide_2973"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_2963", "Add_2966" ], - "name" : "Divide_2967", - "op" : "Divide", - "outputs" : ["Divide_2967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3014", "Add_3017" ], - "name" : "Divide_3018", - "op" : "Divide", - "outputs" : ["Divide_3018"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3007", "Add_3010" ], - "name" : "Divide_3011", - "op" : "Divide", - "outputs" : ["Divide_3011"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3001", "Add_3004" ], - "name" : "Divide_3005", - "op" : "Divide", - "outputs" : ["Divide_3005"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2980", "Tanh_2981" ], - "name" : "Multiply_2982", - "op" : "Multiply", - "outputs" : ["Multiply_2982"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2973", "Add_2908" ], - "name" : "Multiply_2974", - "op" : "Multiply", - "outputs" : ["Multiply_2974"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3018", "Tanh_3019" ], - "name" : "Multiply_3020", - "op" : "Multiply", - "outputs" : ["Multiply_3020"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3011", "Add_2946" ], - "name" : "Multiply_3012", - "op" : "Multiply", - "outputs" : ["Multiply_3012"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_2974", "Multiply_2982" ], - "name" : "Add_2983", - "op" : "Add", - "outputs" : ["Add_2983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3012", "Multiply_3020" ], - "name" : "Add_3021", - "op" : "Add", - "outputs" : ["Add_3021"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_2983"], - "name" : "Tanh_2984", - "op" : "Tanh", - "outputs" : ["Tanh_2984"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3021"], - "name" : "Tanh_3022", - "op" : "Tanh", - "outputs" : ["Tanh_3022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_2967", "Tanh_2984" ], - "name" : "Multiply_2985", - "op" : "Multiply", - "outputs" : ["Multiply_2985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3005", "Tanh_3022" ], - "name" : "Multiply_3023", - "op" : "Multiply", - "outputs" : ["Multiply_3023"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_2985"], - "name" : "Reshape_2986", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_2986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_2985", "Reshape_3028" ], - "name" : "Dot_3029", - "op" : "Dot", - "outputs" : ["Dot_3029"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3023", "Reshape_3024" ], - "name" : "Dot_3025", - "op" : "Dot", - "outputs" : ["Dot_3025"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3023", "Reshape_3066" ], - "name" : "Dot_3067", - "op" : "Dot", - "outputs" : ["Dot_3067"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3029", "Broadcast_3030" ], - "name" : "Add_3031", - "op" : "Add", - "outputs" : ["Add_3031"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3025", "Broadcast_3026" ], - "name" : "Add_3027", - "op" : "Add", - "outputs" : ["Add_3027"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3067", "Broadcast_3068" ], - "name" : "Add_3069", - "op" : "Add", - "outputs" : ["Add_3069"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3027", "Add_3031" ], - "name" : "Add_3032", - "op" : "Add", - "outputs" : ["Add_3032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3065", "Add_3069" ], - "name" : "Add_3070", - "op" : "Add", - "outputs" : ["Add_3070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3032"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3033", - "op" : "Slice", - "outputs" : ["Slice_3033"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3032"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3034", - "op" : "Slice", - "outputs" : ["Slice_3034"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3032"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3035", - "op" : "Slice", - "outputs" : ["Slice_3035"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3032"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3036", - "op" : "Slice", - "outputs" : ["Slice_3036"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3070"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3071", - "op" : "Slice", - "outputs" : ["Slice_3071"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3070"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3072", - "op" : "Slice", - "outputs" : ["Slice_3072"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3070"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3073", - "op" : "Slice", - "outputs" : ["Slice_3073"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3070"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3074", - "op" : "Slice", - "outputs" : ["Slice_3074"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3033"], - "name" : "Negative_3052", - "op" : "Negative", - "outputs" : ["Negative_3052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3034"], - "name" : "Negative_3045", - "op" : "Negative", - "outputs" : ["Negative_3045"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3035"], - "name" : "Tanh_3056", - "op" : "Tanh", - "outputs" : ["Tanh_3056"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3036"], - "name" : "Negative_3039", - "op" : "Negative", - "outputs" : ["Negative_3039"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3071"], - "name" : "Negative_3090", - "op" : "Negative", - "outputs" : ["Negative_3090"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3072"], - "name" : "Negative_3083", - "op" : "Negative", - "outputs" : ["Negative_3083"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3073"], - "name" : "Tanh_3094", - "op" : "Tanh", - "outputs" : ["Tanh_3094"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3074"], - "name" : "Negative_3077", - "op" : "Negative", - "outputs" : ["Negative_3077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3052"], - "name" : "Exp_3053", - "op" : "Exp", - "outputs" : ["Exp_3053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3045"], - "name" : "Exp_3046", - "op" : "Exp", - "outputs" : ["Exp_3046"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3039"], - "name" : "Exp_3040", - "op" : "Exp", - "outputs" : ["Exp_3040"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3090"], - "name" : "Exp_3091", - "op" : "Exp", - "outputs" : ["Exp_3091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3083"], - "name" : "Exp_3084", - "op" : "Exp", - "outputs" : ["Exp_3084"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3077"], - "name" : "Exp_3078", - "op" : "Exp", - "outputs" : ["Exp_3078"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3051", "Exp_3053" ], - "name" : "Add_3054", - "op" : "Add", - "outputs" : ["Add_3054"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3044", "Exp_3046" ], - "name" : "Add_3047", - "op" : "Add", - "outputs" : ["Add_3047"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3038", "Exp_3040" ], - "name" : "Add_3041", - "op" : "Add", - "outputs" : ["Add_3041"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3089", "Exp_3091" ], - "name" : "Add_3092", - "op" : "Add", - "outputs" : ["Add_3092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3082", "Exp_3084" ], - "name" : "Add_3085", - "op" : "Add", - "outputs" : ["Add_3085"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3076", "Exp_3078" ], - "name" : "Add_3079", - "op" : "Add", - "outputs" : ["Add_3079"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3051", "Add_3054" ], - "name" : "Divide_3055", - "op" : "Divide", - "outputs" : ["Divide_3055"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3044", "Add_3047" ], - "name" : "Divide_3048", - "op" : "Divide", - "outputs" : ["Divide_3048"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3038", "Add_3041" ], - "name" : "Divide_3042", - "op" : "Divide", - "outputs" : ["Divide_3042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3089", "Add_3092" ], - "name" : "Divide_3093", - "op" : "Divide", - "outputs" : ["Divide_3093"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3082", "Add_3085" ], - "name" : "Divide_3086", - "op" : "Divide", - "outputs" : ["Divide_3086"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3076", "Add_3079" ], - "name" : "Divide_3080", - "op" : "Divide", - "outputs" : ["Divide_3080"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3055", "Tanh_3056" ], - "name" : "Multiply_3057", - "op" : "Multiply", - "outputs" : ["Multiply_3057"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3048", "Add_2983" ], - "name" : "Multiply_3049", - "op" : "Multiply", - "outputs" : ["Multiply_3049"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3093", "Tanh_3094" ], - "name" : "Multiply_3095", - "op" : "Multiply", - "outputs" : ["Multiply_3095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3086", "Add_3021" ], - "name" : "Multiply_3087", - "op" : "Multiply", - "outputs" : ["Multiply_3087"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3049", "Multiply_3057" ], - "name" : "Add_3058", - "op" : "Add", - "outputs" : ["Add_3058"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3087", "Multiply_3095" ], - "name" : "Add_3096", - "op" : "Add", - "outputs" : ["Add_3096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3058"], - "name" : "Tanh_3059", - "op" : "Tanh", - "outputs" : ["Tanh_3059"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3096"], - "name" : "Tanh_3097", - "op" : "Tanh", - "outputs" : ["Tanh_3097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3042", "Tanh_3059" ], - "name" : "Multiply_3060", - "op" : "Multiply", - "outputs" : ["Multiply_3060"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3080", "Tanh_3097" ], - "name" : "Multiply_3098", - "op" : "Multiply", - "outputs" : ["Multiply_3098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3060"], - "name" : "Reshape_3061", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3060", "Reshape_3103" ], - "name" : "Dot_3104", - "op" : "Dot", - "outputs" : ["Dot_3104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3098", "Reshape_3099" ], - "name" : "Dot_3100", - "op" : "Dot", - "outputs" : ["Dot_3100"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3098", "Reshape_3141" ], - "name" : "Dot_3142", - "op" : "Dot", - "outputs" : ["Dot_3142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3104", "Broadcast_3105" ], - "name" : "Add_3106", - "op" : "Add", - "outputs" : ["Add_3106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3100", "Broadcast_3101" ], - "name" : "Add_3102", - "op" : "Add", - "outputs" : ["Add_3102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3142", "Broadcast_3143" ], - "name" : "Add_3144", - "op" : "Add", - "outputs" : ["Add_3144"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3102", "Add_3106" ], - "name" : "Add_3107", - "op" : "Add", - "outputs" : ["Add_3107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3140", "Add_3144" ], - "name" : "Add_3145", - "op" : "Add", - "outputs" : ["Add_3145"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3107"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3108", - "op" : "Slice", - "outputs" : ["Slice_3108"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3107"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3109", - "op" : "Slice", - "outputs" : ["Slice_3109"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3107"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3110", - "op" : "Slice", - "outputs" : ["Slice_3110"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3107"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3111", - "op" : "Slice", - "outputs" : ["Slice_3111"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3145"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3146", - "op" : "Slice", - "outputs" : ["Slice_3146"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3145"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3147", - "op" : "Slice", - "outputs" : ["Slice_3147"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3145"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3148", - "op" : "Slice", - "outputs" : ["Slice_3148"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3145"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3149", - "op" : "Slice", - "outputs" : ["Slice_3149"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3108"], - "name" : "Negative_3127", - "op" : "Negative", - "outputs" : ["Negative_3127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3109"], - "name" : "Negative_3120", - "op" : "Negative", - "outputs" : ["Negative_3120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3110"], - "name" : "Tanh_3131", - "op" : "Tanh", - "outputs" : ["Tanh_3131"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3111"], - "name" : "Negative_3114", - "op" : "Negative", - "outputs" : ["Negative_3114"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3146"], - "name" : "Negative_3165", - "op" : "Negative", - "outputs" : ["Negative_3165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3147"], - "name" : "Negative_3158", - "op" : "Negative", - "outputs" : ["Negative_3158"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3148"], - "name" : "Tanh_3169", - "op" : "Tanh", - "outputs" : ["Tanh_3169"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3149"], - "name" : "Negative_3152", - "op" : "Negative", - "outputs" : ["Negative_3152"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3127"], - "name" : "Exp_3128", - "op" : "Exp", - "outputs" : ["Exp_3128"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3120"], - "name" : "Exp_3121", - "op" : "Exp", - "outputs" : ["Exp_3121"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3114"], - "name" : "Exp_3115", - "op" : "Exp", - "outputs" : ["Exp_3115"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3165"], - "name" : "Exp_3166", - "op" : "Exp", - "outputs" : ["Exp_3166"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3158"], - "name" : "Exp_3159", - "op" : "Exp", - "outputs" : ["Exp_3159"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3152"], - "name" : "Exp_3153", - "op" : "Exp", - "outputs" : ["Exp_3153"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3126", "Exp_3128" ], - "name" : "Add_3129", - "op" : "Add", - "outputs" : ["Add_3129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3119", "Exp_3121" ], - "name" : "Add_3122", - "op" : "Add", - "outputs" : ["Add_3122"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3113", "Exp_3115" ], - "name" : "Add_3116", - "op" : "Add", - "outputs" : ["Add_3116"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3164", "Exp_3166" ], - "name" : "Add_3167", - "op" : "Add", - "outputs" : ["Add_3167"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3157", "Exp_3159" ], - "name" : "Add_3160", - "op" : "Add", - "outputs" : ["Add_3160"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3151", "Exp_3153" ], - "name" : "Add_3154", - "op" : "Add", - "outputs" : ["Add_3154"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3126", "Add_3129" ], - "name" : "Divide_3130", - "op" : "Divide", - "outputs" : ["Divide_3130"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3119", "Add_3122" ], - "name" : "Divide_3123", - "op" : "Divide", - "outputs" : ["Divide_3123"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3113", "Add_3116" ], - "name" : "Divide_3117", - "op" : "Divide", - "outputs" : ["Divide_3117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3164", "Add_3167" ], - "name" : "Divide_3168", - "op" : "Divide", - "outputs" : ["Divide_3168"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3157", "Add_3160" ], - "name" : "Divide_3161", - "op" : "Divide", - "outputs" : ["Divide_3161"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3151", "Add_3154" ], - "name" : "Divide_3155", - "op" : "Divide", - "outputs" : ["Divide_3155"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3130", "Tanh_3131" ], - "name" : "Multiply_3132", - "op" : "Multiply", - "outputs" : ["Multiply_3132"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3123", "Add_3058" ], - "name" : "Multiply_3124", - "op" : "Multiply", - "outputs" : ["Multiply_3124"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3168", "Tanh_3169" ], - "name" : "Multiply_3170", - "op" : "Multiply", - "outputs" : ["Multiply_3170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3161", "Add_3096" ], - "name" : "Multiply_3162", - "op" : "Multiply", - "outputs" : ["Multiply_3162"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3124", "Multiply_3132" ], - "name" : "Add_3133", - "op" : "Add", - "outputs" : ["Add_3133"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3162", "Multiply_3170" ], - "name" : "Add_3171", - "op" : "Add", - "outputs" : ["Add_3171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3133"], - "name" : "Tanh_3134", - "op" : "Tanh", - "outputs" : ["Tanh_3134"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3171"], - "name" : "Tanh_3172", - "op" : "Tanh", - "outputs" : ["Tanh_3172"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3117", "Tanh_3134" ], - "name" : "Multiply_3135", - "op" : "Multiply", - "outputs" : ["Multiply_3135"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3155", "Tanh_3172" ], - "name" : "Multiply_3173", - "op" : "Multiply", - "outputs" : ["Multiply_3173"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3135"], - "name" : "Reshape_3136", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3136"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3135", "Reshape_3178" ], - "name" : "Dot_3179", - "op" : "Dot", - "outputs" : ["Dot_3179"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3173", "Reshape_3174" ], - "name" : "Dot_3175", - "op" : "Dot", - "outputs" : ["Dot_3175"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3173", "Reshape_3216" ], - "name" : "Dot_3217", - "op" : "Dot", - "outputs" : ["Dot_3217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3179", "Broadcast_3180" ], - "name" : "Add_3181", - "op" : "Add", - "outputs" : ["Add_3181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3175", "Broadcast_3176" ], - "name" : "Add_3177", - "op" : "Add", - "outputs" : ["Add_3177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3217", "Broadcast_3218" ], - "name" : "Add_3219", - "op" : "Add", - "outputs" : ["Add_3219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3177", "Add_3181" ], - "name" : "Add_3182", - "op" : "Add", - "outputs" : ["Add_3182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3215", "Add_3219" ], - "name" : "Add_3220", - "op" : "Add", - "outputs" : ["Add_3220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3182"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3183", - "op" : "Slice", - "outputs" : ["Slice_3183"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3182"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3184", - "op" : "Slice", - "outputs" : ["Slice_3184"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3182"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3185", - "op" : "Slice", - "outputs" : ["Slice_3185"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3182"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3186", - "op" : "Slice", - "outputs" : ["Slice_3186"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3220"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3221", - "op" : "Slice", - "outputs" : ["Slice_3221"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3220"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3222", - "op" : "Slice", - "outputs" : ["Slice_3222"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3220"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3223", - "op" : "Slice", - "outputs" : ["Slice_3223"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3220"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3224", - "op" : "Slice", - "outputs" : ["Slice_3224"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3183"], - "name" : "Negative_3202", - "op" : "Negative", - "outputs" : ["Negative_3202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3184"], - "name" : "Negative_3195", - "op" : "Negative", - "outputs" : ["Negative_3195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3185"], - "name" : "Tanh_3206", - "op" : "Tanh", - "outputs" : ["Tanh_3206"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3186"], - "name" : "Negative_3189", - "op" : "Negative", - "outputs" : ["Negative_3189"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3221"], - "name" : "Negative_3240", - "op" : "Negative", - "outputs" : ["Negative_3240"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3222"], - "name" : "Negative_3233", - "op" : "Negative", - "outputs" : ["Negative_3233"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3223"], - "name" : "Tanh_3244", - "op" : "Tanh", - "outputs" : ["Tanh_3244"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3224"], - "name" : "Negative_3227", - "op" : "Negative", - "outputs" : ["Negative_3227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3202"], - "name" : "Exp_3203", - "op" : "Exp", - "outputs" : ["Exp_3203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3195"], - "name" : "Exp_3196", - "op" : "Exp", - "outputs" : ["Exp_3196"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3189"], - "name" : "Exp_3190", - "op" : "Exp", - "outputs" : ["Exp_3190"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3240"], - "name" : "Exp_3241", - "op" : "Exp", - "outputs" : ["Exp_3241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3233"], - "name" : "Exp_3234", - "op" : "Exp", - "outputs" : ["Exp_3234"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3227"], - "name" : "Exp_3228", - "op" : "Exp", - "outputs" : ["Exp_3228"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3201", "Exp_3203" ], - "name" : "Add_3204", - "op" : "Add", - "outputs" : ["Add_3204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3194", "Exp_3196" ], - "name" : "Add_3197", - "op" : "Add", - "outputs" : ["Add_3197"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3188", "Exp_3190" ], - "name" : "Add_3191", - "op" : "Add", - "outputs" : ["Add_3191"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3239", "Exp_3241" ], - "name" : "Add_3242", - "op" : "Add", - "outputs" : ["Add_3242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3232", "Exp_3234" ], - "name" : "Add_3235", - "op" : "Add", - "outputs" : ["Add_3235"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3226", "Exp_3228" ], - "name" : "Add_3229", - "op" : "Add", - "outputs" : ["Add_3229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3201", "Add_3204" ], - "name" : "Divide_3205", - "op" : "Divide", - "outputs" : ["Divide_3205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3194", "Add_3197" ], - "name" : "Divide_3198", - "op" : "Divide", - "outputs" : ["Divide_3198"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3188", "Add_3191" ], - "name" : "Divide_3192", - "op" : "Divide", - "outputs" : ["Divide_3192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3239", "Add_3242" ], - "name" : "Divide_3243", - "op" : "Divide", - "outputs" : ["Divide_3243"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3232", "Add_3235" ], - "name" : "Divide_3236", - "op" : "Divide", - "outputs" : ["Divide_3236"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3226", "Add_3229" ], - "name" : "Divide_3230", - "op" : "Divide", - "outputs" : ["Divide_3230"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3205", "Tanh_3206" ], - "name" : "Multiply_3207", - "op" : "Multiply", - "outputs" : ["Multiply_3207"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3198", "Add_3133" ], - "name" : "Multiply_3199", - "op" : "Multiply", - "outputs" : ["Multiply_3199"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3243", "Tanh_3244" ], - "name" : "Multiply_3245", - "op" : "Multiply", - "outputs" : ["Multiply_3245"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3236", "Add_3171" ], - "name" : "Multiply_3237", - "op" : "Multiply", - "outputs" : ["Multiply_3237"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3199", "Multiply_3207" ], - "name" : "Add_3208", - "op" : "Add", - "outputs" : ["Add_3208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3237", "Multiply_3245" ], - "name" : "Add_3246", - "op" : "Add", - "outputs" : ["Add_3246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3208"], - "name" : "Tanh_3209", - "op" : "Tanh", - "outputs" : ["Tanh_3209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3246"], - "name" : "Tanh_3247", - "op" : "Tanh", - "outputs" : ["Tanh_3247"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3192", "Tanh_3209" ], - "name" : "Multiply_3210", - "op" : "Multiply", - "outputs" : ["Multiply_3210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3230", "Tanh_3247" ], - "name" : "Multiply_3248", - "op" : "Multiply", - "outputs" : ["Multiply_3248"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3210"], - "name" : "Reshape_3211", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3210", "Reshape_3253" ], - "name" : "Dot_3254", - "op" : "Dot", - "outputs" : ["Dot_3254"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3248", "Reshape_3249" ], - "name" : "Dot_3250", - "op" : "Dot", - "outputs" : ["Dot_3250"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3248", "Reshape_3291" ], - "name" : "Dot_3292", - "op" : "Dot", - "outputs" : ["Dot_3292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3254", "Broadcast_3255" ], - "name" : "Add_3256", - "op" : "Add", - "outputs" : ["Add_3256"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3250", "Broadcast_3251" ], - "name" : "Add_3252", - "op" : "Add", - "outputs" : ["Add_3252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3292", "Broadcast_3293" ], - "name" : "Add_3294", - "op" : "Add", - "outputs" : ["Add_3294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3252", "Add_3256" ], - "name" : "Add_3257", - "op" : "Add", - "outputs" : ["Add_3257"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3290", "Add_3294" ], - "name" : "Add_3295", - "op" : "Add", - "outputs" : ["Add_3295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3257"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3258", - "op" : "Slice", - "outputs" : ["Slice_3258"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3257"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3259", - "op" : "Slice", - "outputs" : ["Slice_3259"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3257"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3260", - "op" : "Slice", - "outputs" : ["Slice_3260"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3257"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3261", - "op" : "Slice", - "outputs" : ["Slice_3261"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3295"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3296", - "op" : "Slice", - "outputs" : ["Slice_3296"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3295"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3297", - "op" : "Slice", - "outputs" : ["Slice_3297"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3295"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3298", - "op" : "Slice", - "outputs" : ["Slice_3298"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3295"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3299", - "op" : "Slice", - "outputs" : ["Slice_3299"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3258"], - "name" : "Negative_3277", - "op" : "Negative", - "outputs" : ["Negative_3277"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3259"], - "name" : "Negative_3270", - "op" : "Negative", - "outputs" : ["Negative_3270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3260"], - "name" : "Tanh_3281", - "op" : "Tanh", - "outputs" : ["Tanh_3281"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3261"], - "name" : "Negative_3264", - "op" : "Negative", - "outputs" : ["Negative_3264"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3296"], - "name" : "Negative_3315", - "op" : "Negative", - "outputs" : ["Negative_3315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3297"], - "name" : "Negative_3308", - "op" : "Negative", - "outputs" : ["Negative_3308"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3298"], - "name" : "Tanh_3319", - "op" : "Tanh", - "outputs" : ["Tanh_3319"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3299"], - "name" : "Negative_3302", - "op" : "Negative", - "outputs" : ["Negative_3302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3277"], - "name" : "Exp_3278", - "op" : "Exp", - "outputs" : ["Exp_3278"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3270"], - "name" : "Exp_3271", - "op" : "Exp", - "outputs" : ["Exp_3271"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3264"], - "name" : "Exp_3265", - "op" : "Exp", - "outputs" : ["Exp_3265"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3315"], - "name" : "Exp_3316", - "op" : "Exp", - "outputs" : ["Exp_3316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3308"], - "name" : "Exp_3309", - "op" : "Exp", - "outputs" : ["Exp_3309"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3302"], - "name" : "Exp_3303", - "op" : "Exp", - "outputs" : ["Exp_3303"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3276", "Exp_3278" ], - "name" : "Add_3279", - "op" : "Add", - "outputs" : ["Add_3279"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3269", "Exp_3271" ], - "name" : "Add_3272", - "op" : "Add", - "outputs" : ["Add_3272"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3263", "Exp_3265" ], - "name" : "Add_3266", - "op" : "Add", - "outputs" : ["Add_3266"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3314", "Exp_3316" ], - "name" : "Add_3317", - "op" : "Add", - "outputs" : ["Add_3317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3307", "Exp_3309" ], - "name" : "Add_3310", - "op" : "Add", - "outputs" : ["Add_3310"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3301", "Exp_3303" ], - "name" : "Add_3304", - "op" : "Add", - "outputs" : ["Add_3304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3276", "Add_3279" ], - "name" : "Divide_3280", - "op" : "Divide", - "outputs" : ["Divide_3280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3269", "Add_3272" ], - "name" : "Divide_3273", - "op" : "Divide", - "outputs" : ["Divide_3273"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3263", "Add_3266" ], - "name" : "Divide_3267", - "op" : "Divide", - "outputs" : ["Divide_3267"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3314", "Add_3317" ], - "name" : "Divide_3318", - "op" : "Divide", - "outputs" : ["Divide_3318"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3307", "Add_3310" ], - "name" : "Divide_3311", - "op" : "Divide", - "outputs" : ["Divide_3311"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3301", "Add_3304" ], - "name" : "Divide_3305", - "op" : "Divide", - "outputs" : ["Divide_3305"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3280", "Tanh_3281" ], - "name" : "Multiply_3282", - "op" : "Multiply", - "outputs" : ["Multiply_3282"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3273", "Add_3208" ], - "name" : "Multiply_3274", - "op" : "Multiply", - "outputs" : ["Multiply_3274"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3318", "Tanh_3319" ], - "name" : "Multiply_3320", - "op" : "Multiply", - "outputs" : ["Multiply_3320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3311", "Add_3246" ], - "name" : "Multiply_3312", - "op" : "Multiply", - "outputs" : ["Multiply_3312"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3274", "Multiply_3282" ], - "name" : "Add_3283", - "op" : "Add", - "outputs" : ["Add_3283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3312", "Multiply_3320" ], - "name" : "Add_3321", - "op" : "Add", - "outputs" : ["Add_3321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3283"], - "name" : "Tanh_3284", - "op" : "Tanh", - "outputs" : ["Tanh_3284"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3321"], - "name" : "Tanh_3322", - "op" : "Tanh", - "outputs" : ["Tanh_3322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3267", "Tanh_3284" ], - "name" : "Multiply_3285", - "op" : "Multiply", - "outputs" : ["Multiply_3285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3305", "Tanh_3322" ], - "name" : "Multiply_3323", - "op" : "Multiply", - "outputs" : ["Multiply_3323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3285"], - "name" : "Reshape_3286", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3285", "Reshape_3328" ], - "name" : "Dot_3329", - "op" : "Dot", - "outputs" : ["Dot_3329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3323", "Reshape_3324" ], - "name" : "Dot_3325", - "op" : "Dot", - "outputs" : ["Dot_3325"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3323", "Reshape_3366" ], - "name" : "Dot_3367", - "op" : "Dot", - "outputs" : ["Dot_3367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3329", "Broadcast_3330" ], - "name" : "Add_3331", - "op" : "Add", - "outputs" : ["Add_3331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3325", "Broadcast_3326" ], - "name" : "Add_3327", - "op" : "Add", - "outputs" : ["Add_3327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3367", "Broadcast_3368" ], - "name" : "Add_3369", - "op" : "Add", - "outputs" : ["Add_3369"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3327", "Add_3331" ], - "name" : "Add_3332", - "op" : "Add", - "outputs" : ["Add_3332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3365", "Add_3369" ], - "name" : "Add_3370", - "op" : "Add", - "outputs" : ["Add_3370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3332"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3333", - "op" : "Slice", - "outputs" : ["Slice_3333"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3332"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3334", - "op" : "Slice", - "outputs" : ["Slice_3334"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3332"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3335", - "op" : "Slice", - "outputs" : ["Slice_3335"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3332"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3336", - "op" : "Slice", - "outputs" : ["Slice_3336"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3370"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3371", - "op" : "Slice", - "outputs" : ["Slice_3371"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3370"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3372", - "op" : "Slice", - "outputs" : ["Slice_3372"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3370"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3373", - "op" : "Slice", - "outputs" : ["Slice_3373"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3370"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3374", - "op" : "Slice", - "outputs" : ["Slice_3374"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3333"], - "name" : "Negative_3352", - "op" : "Negative", - "outputs" : ["Negative_3352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3334"], - "name" : "Negative_3345", - "op" : "Negative", - "outputs" : ["Negative_3345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3335"], - "name" : "Tanh_3356", - "op" : "Tanh", - "outputs" : ["Tanh_3356"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3336"], - "name" : "Negative_3339", - "op" : "Negative", - "outputs" : ["Negative_3339"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3371"], - "name" : "Negative_3390", - "op" : "Negative", - "outputs" : ["Negative_3390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3372"], - "name" : "Negative_3383", - "op" : "Negative", - "outputs" : ["Negative_3383"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3373"], - "name" : "Tanh_3394", - "op" : "Tanh", - "outputs" : ["Tanh_3394"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3374"], - "name" : "Negative_3377", - "op" : "Negative", - "outputs" : ["Negative_3377"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3352"], - "name" : "Exp_3353", - "op" : "Exp", - "outputs" : ["Exp_3353"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3345"], - "name" : "Exp_3346", - "op" : "Exp", - "outputs" : ["Exp_3346"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3339"], - "name" : "Exp_3340", - "op" : "Exp", - "outputs" : ["Exp_3340"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3390"], - "name" : "Exp_3391", - "op" : "Exp", - "outputs" : ["Exp_3391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3383"], - "name" : "Exp_3384", - "op" : "Exp", - "outputs" : ["Exp_3384"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3377"], - "name" : "Exp_3378", - "op" : "Exp", - "outputs" : ["Exp_3378"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3351", "Exp_3353" ], - "name" : "Add_3354", - "op" : "Add", - "outputs" : ["Add_3354"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3344", "Exp_3346" ], - "name" : "Add_3347", - "op" : "Add", - "outputs" : ["Add_3347"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3338", "Exp_3340" ], - "name" : "Add_3341", - "op" : "Add", - "outputs" : ["Add_3341"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3389", "Exp_3391" ], - "name" : "Add_3392", - "op" : "Add", - "outputs" : ["Add_3392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3382", "Exp_3384" ], - "name" : "Add_3385", - "op" : "Add", - "outputs" : ["Add_3385"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3376", "Exp_3378" ], - "name" : "Add_3379", - "op" : "Add", - "outputs" : ["Add_3379"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3351", "Add_3354" ], - "name" : "Divide_3355", - "op" : "Divide", - "outputs" : ["Divide_3355"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3344", "Add_3347" ], - "name" : "Divide_3348", - "op" : "Divide", - "outputs" : ["Divide_3348"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3338", "Add_3341" ], - "name" : "Divide_3342", - "op" : "Divide", - "outputs" : ["Divide_3342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3389", "Add_3392" ], - "name" : "Divide_3393", - "op" : "Divide", - "outputs" : ["Divide_3393"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3382", "Add_3385" ], - "name" : "Divide_3386", - "op" : "Divide", - "outputs" : ["Divide_3386"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3376", "Add_3379" ], - "name" : "Divide_3380", - "op" : "Divide", - "outputs" : ["Divide_3380"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3355", "Tanh_3356" ], - "name" : "Multiply_3357", - "op" : "Multiply", - "outputs" : ["Multiply_3357"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3348", "Add_3283" ], - "name" : "Multiply_3349", - "op" : "Multiply", - "outputs" : ["Multiply_3349"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3393", "Tanh_3394" ], - "name" : "Multiply_3395", - "op" : "Multiply", - "outputs" : ["Multiply_3395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3386", "Add_3321" ], - "name" : "Multiply_3387", - "op" : "Multiply", - "outputs" : ["Multiply_3387"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3349", "Multiply_3357" ], - "name" : "Add_3358", - "op" : "Add", - "outputs" : ["Add_3358"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3387", "Multiply_3395" ], - "name" : "Add_3396", - "op" : "Add", - "outputs" : ["Add_3396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3358"], - "name" : "Tanh_3359", - "op" : "Tanh", - "outputs" : ["Tanh_3359"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3396"], - "name" : "Tanh_3397", - "op" : "Tanh", - "outputs" : ["Tanh_3397"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3342", "Tanh_3359" ], - "name" : "Multiply_3360", - "op" : "Multiply", - "outputs" : ["Multiply_3360"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3380", "Tanh_3397" ], - "name" : "Multiply_3398", - "op" : "Multiply", - "outputs" : ["Multiply_3398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3360"], - "name" : "Reshape_3361", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3361"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3360", "Reshape_3403" ], - "name" : "Dot_3404", - "op" : "Dot", - "outputs" : ["Dot_3404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3398", "Reshape_3399" ], - "name" : "Dot_3400", - "op" : "Dot", - "outputs" : ["Dot_3400"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3398", "Reshape_3441" ], - "name" : "Dot_3442", - "op" : "Dot", - "outputs" : ["Dot_3442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3404", "Broadcast_3405" ], - "name" : "Add_3406", - "op" : "Add", - "outputs" : ["Add_3406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3400", "Broadcast_3401" ], - "name" : "Add_3402", - "op" : "Add", - "outputs" : ["Add_3402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3442", "Broadcast_3443" ], - "name" : "Add_3444", - "op" : "Add", - "outputs" : ["Add_3444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3402", "Add_3406" ], - "name" : "Add_3407", - "op" : "Add", - "outputs" : ["Add_3407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3440", "Add_3444" ], - "name" : "Add_3445", - "op" : "Add", - "outputs" : ["Add_3445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3407"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3408", - "op" : "Slice", - "outputs" : ["Slice_3408"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3407"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3409", - "op" : "Slice", - "outputs" : ["Slice_3409"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3407"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3410", - "op" : "Slice", - "outputs" : ["Slice_3410"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3407"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3411", - "op" : "Slice", - "outputs" : ["Slice_3411"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3445"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3446", - "op" : "Slice", - "outputs" : ["Slice_3446"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3445"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3447", - "op" : "Slice", - "outputs" : ["Slice_3447"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3445"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3448", - "op" : "Slice", - "outputs" : ["Slice_3448"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3445"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3449", - "op" : "Slice", - "outputs" : ["Slice_3449"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3408"], - "name" : "Negative_3427", - "op" : "Negative", - "outputs" : ["Negative_3427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3409"], - "name" : "Negative_3420", - "op" : "Negative", - "outputs" : ["Negative_3420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3410"], - "name" : "Tanh_3431", - "op" : "Tanh", - "outputs" : ["Tanh_3431"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3411"], - "name" : "Negative_3414", - "op" : "Negative", - "outputs" : ["Negative_3414"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3446"], - "name" : "Negative_3465", - "op" : "Negative", - "outputs" : ["Negative_3465"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3447"], - "name" : "Negative_3458", - "op" : "Negative", - "outputs" : ["Negative_3458"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3448"], - "name" : "Tanh_3469", - "op" : "Tanh", - "outputs" : ["Tanh_3469"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3449"], - "name" : "Negative_3452", - "op" : "Negative", - "outputs" : ["Negative_3452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3427"], - "name" : "Exp_3428", - "op" : "Exp", - "outputs" : ["Exp_3428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3420"], - "name" : "Exp_3421", - "op" : "Exp", - "outputs" : ["Exp_3421"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3414"], - "name" : "Exp_3415", - "op" : "Exp", - "outputs" : ["Exp_3415"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3465"], - "name" : "Exp_3466", - "op" : "Exp", - "outputs" : ["Exp_3466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3458"], - "name" : "Exp_3459", - "op" : "Exp", - "outputs" : ["Exp_3459"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3452"], - "name" : "Exp_3453", - "op" : "Exp", - "outputs" : ["Exp_3453"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3426", "Exp_3428" ], - "name" : "Add_3429", - "op" : "Add", - "outputs" : ["Add_3429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3419", "Exp_3421" ], - "name" : "Add_3422", - "op" : "Add", - "outputs" : ["Add_3422"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3413", "Exp_3415" ], - "name" : "Add_3416", - "op" : "Add", - "outputs" : ["Add_3416"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3464", "Exp_3466" ], - "name" : "Add_3467", - "op" : "Add", - "outputs" : ["Add_3467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3457", "Exp_3459" ], - "name" : "Add_3460", - "op" : "Add", - "outputs" : ["Add_3460"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3451", "Exp_3453" ], - "name" : "Add_3454", - "op" : "Add", - "outputs" : ["Add_3454"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3426", "Add_3429" ], - "name" : "Divide_3430", - "op" : "Divide", - "outputs" : ["Divide_3430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3419", "Add_3422" ], - "name" : "Divide_3423", - "op" : "Divide", - "outputs" : ["Divide_3423"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3413", "Add_3416" ], - "name" : "Divide_3417", - "op" : "Divide", - "outputs" : ["Divide_3417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3464", "Add_3467" ], - "name" : "Divide_3468", - "op" : "Divide", - "outputs" : ["Divide_3468"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3457", "Add_3460" ], - "name" : "Divide_3461", - "op" : "Divide", - "outputs" : ["Divide_3461"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3451", "Add_3454" ], - "name" : "Divide_3455", - "op" : "Divide", - "outputs" : ["Divide_3455"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3430", "Tanh_3431" ], - "name" : "Multiply_3432", - "op" : "Multiply", - "outputs" : ["Multiply_3432"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3423", "Add_3358" ], - "name" : "Multiply_3424", - "op" : "Multiply", - "outputs" : ["Multiply_3424"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3468", "Tanh_3469" ], - "name" : "Multiply_3470", - "op" : "Multiply", - "outputs" : ["Multiply_3470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3461", "Add_3396" ], - "name" : "Multiply_3462", - "op" : "Multiply", - "outputs" : ["Multiply_3462"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3424", "Multiply_3432" ], - "name" : "Add_3433", - "op" : "Add", - "outputs" : ["Add_3433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3462", "Multiply_3470" ], - "name" : "Add_3471", - "op" : "Add", - "outputs" : ["Add_3471"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3433"], - "name" : "Tanh_3434", - "op" : "Tanh", - "outputs" : ["Tanh_3434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3471"], - "name" : "Tanh_3472", - "op" : "Tanh", - "outputs" : ["Tanh_3472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3417", "Tanh_3434" ], - "name" : "Multiply_3435", - "op" : "Multiply", - "outputs" : ["Multiply_3435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3455", "Tanh_3472" ], - "name" : "Multiply_3473", - "op" : "Multiply", - "outputs" : ["Multiply_3473"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3435"], - "name" : "Reshape_3436", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3435", "Reshape_3478" ], - "name" : "Dot_3479", - "op" : "Dot", - "outputs" : ["Dot_3479"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3473", "Reshape_3474" ], - "name" : "Dot_3475", - "op" : "Dot", - "outputs" : ["Dot_3475"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3473", "Reshape_3516" ], - "name" : "Dot_3517", - "op" : "Dot", - "outputs" : ["Dot_3517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3479", "Broadcast_3480" ], - "name" : "Add_3481", - "op" : "Add", - "outputs" : ["Add_3481"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3475", "Broadcast_3476" ], - "name" : "Add_3477", - "op" : "Add", - "outputs" : ["Add_3477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3517", "Broadcast_3518" ], - "name" : "Add_3519", - "op" : "Add", - "outputs" : ["Add_3519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3477", "Add_3481" ], - "name" : "Add_3482", - "op" : "Add", - "outputs" : ["Add_3482"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3515", "Add_3519" ], - "name" : "Add_3520", - "op" : "Add", - "outputs" : ["Add_3520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3482"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3483", - "op" : "Slice", - "outputs" : ["Slice_3483"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3482"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3484", - "op" : "Slice", - "outputs" : ["Slice_3484"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3482"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3485", - "op" : "Slice", - "outputs" : ["Slice_3485"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3482"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3486", - "op" : "Slice", - "outputs" : ["Slice_3486"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3520"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3521", - "op" : "Slice", - "outputs" : ["Slice_3521"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3520"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3522", - "op" : "Slice", - "outputs" : ["Slice_3522"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3520"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3523", - "op" : "Slice", - "outputs" : ["Slice_3523"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3520"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3524", - "op" : "Slice", - "outputs" : ["Slice_3524"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3483"], - "name" : "Negative_3502", - "op" : "Negative", - "outputs" : ["Negative_3502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3484"], - "name" : "Negative_3495", - "op" : "Negative", - "outputs" : ["Negative_3495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3485"], - "name" : "Tanh_3506", - "op" : "Tanh", - "outputs" : ["Tanh_3506"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3486"], - "name" : "Negative_3489", - "op" : "Negative", - "outputs" : ["Negative_3489"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3521"], - "name" : "Negative_3540", - "op" : "Negative", - "outputs" : ["Negative_3540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3522"], - "name" : "Negative_3533", - "op" : "Negative", - "outputs" : ["Negative_3533"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3523"], - "name" : "Tanh_3544", - "op" : "Tanh", - "outputs" : ["Tanh_3544"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3524"], - "name" : "Negative_3527", - "op" : "Negative", - "outputs" : ["Negative_3527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3502"], - "name" : "Exp_3503", - "op" : "Exp", - "outputs" : ["Exp_3503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3495"], - "name" : "Exp_3496", - "op" : "Exp", - "outputs" : ["Exp_3496"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3489"], - "name" : "Exp_3490", - "op" : "Exp", - "outputs" : ["Exp_3490"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3540"], - "name" : "Exp_3541", - "op" : "Exp", - "outputs" : ["Exp_3541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3533"], - "name" : "Exp_3534", - "op" : "Exp", - "outputs" : ["Exp_3534"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3527"], - "name" : "Exp_3528", - "op" : "Exp", - "outputs" : ["Exp_3528"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3501", "Exp_3503" ], - "name" : "Add_3504", - "op" : "Add", - "outputs" : ["Add_3504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3494", "Exp_3496" ], - "name" : "Add_3497", - "op" : "Add", - "outputs" : ["Add_3497"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3488", "Exp_3490" ], - "name" : "Add_3491", - "op" : "Add", - "outputs" : ["Add_3491"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3539", "Exp_3541" ], - "name" : "Add_3542", - "op" : "Add", - "outputs" : ["Add_3542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3532", "Exp_3534" ], - "name" : "Add_3535", - "op" : "Add", - "outputs" : ["Add_3535"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3526", "Exp_3528" ], - "name" : "Add_3529", - "op" : "Add", - "outputs" : ["Add_3529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3501", "Add_3504" ], - "name" : "Divide_3505", - "op" : "Divide", - "outputs" : ["Divide_3505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3494", "Add_3497" ], - "name" : "Divide_3498", - "op" : "Divide", - "outputs" : ["Divide_3498"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3488", "Add_3491" ], - "name" : "Divide_3492", - "op" : "Divide", - "outputs" : ["Divide_3492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3539", "Add_3542" ], - "name" : "Divide_3543", - "op" : "Divide", - "outputs" : ["Divide_3543"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3532", "Add_3535" ], - "name" : "Divide_3536", - "op" : "Divide", - "outputs" : ["Divide_3536"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3526", "Add_3529" ], - "name" : "Divide_3530", - "op" : "Divide", - "outputs" : ["Divide_3530"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3505", "Tanh_3506" ], - "name" : "Multiply_3507", - "op" : "Multiply", - "outputs" : ["Multiply_3507"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3498", "Add_3433" ], - "name" : "Multiply_3499", - "op" : "Multiply", - "outputs" : ["Multiply_3499"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3543", "Tanh_3544" ], - "name" : "Multiply_3545", - "op" : "Multiply", - "outputs" : ["Multiply_3545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3536", "Add_3471" ], - "name" : "Multiply_3537", - "op" : "Multiply", - "outputs" : ["Multiply_3537"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3499", "Multiply_3507" ], - "name" : "Add_3508", - "op" : "Add", - "outputs" : ["Add_3508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3537", "Multiply_3545" ], - "name" : "Add_3546", - "op" : "Add", - "outputs" : ["Add_3546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3508"], - "name" : "Tanh_3509", - "op" : "Tanh", - "outputs" : ["Tanh_3509"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3546"], - "name" : "Tanh_3547", - "op" : "Tanh", - "outputs" : ["Tanh_3547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3492", "Tanh_3509" ], - "name" : "Multiply_3510", - "op" : "Multiply", - "outputs" : ["Multiply_3510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3530", "Tanh_3547" ], - "name" : "Multiply_3548", - "op" : "Multiply", - "outputs" : ["Multiply_3548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3510"], - "name" : "Reshape_3511", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3510", "Reshape_3553" ], - "name" : "Dot_3554", - "op" : "Dot", - "outputs" : ["Dot_3554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3548", "Reshape_3549" ], - "name" : "Dot_3550", - "op" : "Dot", - "outputs" : ["Dot_3550"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3548", "Reshape_3591" ], - "name" : "Dot_3592", - "op" : "Dot", - "outputs" : ["Dot_3592"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3554", "Broadcast_3555" ], - "name" : "Add_3556", - "op" : "Add", - "outputs" : ["Add_3556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3550", "Broadcast_3551" ], - "name" : "Add_3552", - "op" : "Add", - "outputs" : ["Add_3552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3592", "Broadcast_3593" ], - "name" : "Add_3594", - "op" : "Add", - "outputs" : ["Add_3594"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3552", "Add_3556" ], - "name" : "Add_3557", - "op" : "Add", - "outputs" : ["Add_3557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3590", "Add_3594" ], - "name" : "Add_3595", - "op" : "Add", - "outputs" : ["Add_3595"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3557"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3558", - "op" : "Slice", - "outputs" : ["Slice_3558"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3557"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3559", - "op" : "Slice", - "outputs" : ["Slice_3559"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3557"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3560", - "op" : "Slice", - "outputs" : ["Slice_3560"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3557"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3561", - "op" : "Slice", - "outputs" : ["Slice_3561"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3595"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3596", - "op" : "Slice", - "outputs" : ["Slice_3596"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3595"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3597", - "op" : "Slice", - "outputs" : ["Slice_3597"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3595"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3598", - "op" : "Slice", - "outputs" : ["Slice_3598"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3595"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3599", - "op" : "Slice", - "outputs" : ["Slice_3599"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3558"], - "name" : "Negative_3577", - "op" : "Negative", - "outputs" : ["Negative_3577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3559"], - "name" : "Negative_3570", - "op" : "Negative", - "outputs" : ["Negative_3570"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3560"], - "name" : "Tanh_3581", - "op" : "Tanh", - "outputs" : ["Tanh_3581"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3561"], - "name" : "Negative_3564", - "op" : "Negative", - "outputs" : ["Negative_3564"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3596"], - "name" : "Negative_3615", - "op" : "Negative", - "outputs" : ["Negative_3615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3597"], - "name" : "Negative_3608", - "op" : "Negative", - "outputs" : ["Negative_3608"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3598"], - "name" : "Tanh_3619", - "op" : "Tanh", - "outputs" : ["Tanh_3619"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3599"], - "name" : "Negative_3602", - "op" : "Negative", - "outputs" : ["Negative_3602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3577"], - "name" : "Exp_3578", - "op" : "Exp", - "outputs" : ["Exp_3578"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3570"], - "name" : "Exp_3571", - "op" : "Exp", - "outputs" : ["Exp_3571"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3564"], - "name" : "Exp_3565", - "op" : "Exp", - "outputs" : ["Exp_3565"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3615"], - "name" : "Exp_3616", - "op" : "Exp", - "outputs" : ["Exp_3616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3608"], - "name" : "Exp_3609", - "op" : "Exp", - "outputs" : ["Exp_3609"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3602"], - "name" : "Exp_3603", - "op" : "Exp", - "outputs" : ["Exp_3603"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3576", "Exp_3578" ], - "name" : "Add_3579", - "op" : "Add", - "outputs" : ["Add_3579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3569", "Exp_3571" ], - "name" : "Add_3572", - "op" : "Add", - "outputs" : ["Add_3572"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3563", "Exp_3565" ], - "name" : "Add_3566", - "op" : "Add", - "outputs" : ["Add_3566"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3614", "Exp_3616" ], - "name" : "Add_3617", - "op" : "Add", - "outputs" : ["Add_3617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3607", "Exp_3609" ], - "name" : "Add_3610", - "op" : "Add", - "outputs" : ["Add_3610"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3601", "Exp_3603" ], - "name" : "Add_3604", - "op" : "Add", - "outputs" : ["Add_3604"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3576", "Add_3579" ], - "name" : "Divide_3580", - "op" : "Divide", - "outputs" : ["Divide_3580"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3569", "Add_3572" ], - "name" : "Divide_3573", - "op" : "Divide", - "outputs" : ["Divide_3573"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3563", "Add_3566" ], - "name" : "Divide_3567", - "op" : "Divide", - "outputs" : ["Divide_3567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3614", "Add_3617" ], - "name" : "Divide_3618", - "op" : "Divide", - "outputs" : ["Divide_3618"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3607", "Add_3610" ], - "name" : "Divide_3611", - "op" : "Divide", - "outputs" : ["Divide_3611"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3601", "Add_3604" ], - "name" : "Divide_3605", - "op" : "Divide", - "outputs" : ["Divide_3605"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3580", "Tanh_3581" ], - "name" : "Multiply_3582", - "op" : "Multiply", - "outputs" : ["Multiply_3582"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3573", "Add_3508" ], - "name" : "Multiply_3574", - "op" : "Multiply", - "outputs" : ["Multiply_3574"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3618", "Tanh_3619" ], - "name" : "Multiply_3620", - "op" : "Multiply", - "outputs" : ["Multiply_3620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3611", "Add_3546" ], - "name" : "Multiply_3612", - "op" : "Multiply", - "outputs" : ["Multiply_3612"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3574", "Multiply_3582" ], - "name" : "Add_3583", - "op" : "Add", - "outputs" : ["Add_3583"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3612", "Multiply_3620" ], - "name" : "Add_3621", - "op" : "Add", - "outputs" : ["Add_3621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3583"], - "name" : "Tanh_3584", - "op" : "Tanh", - "outputs" : ["Tanh_3584"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3621"], - "name" : "Tanh_3622", - "op" : "Tanh", - "outputs" : ["Tanh_3622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3567", "Tanh_3584" ], - "name" : "Multiply_3585", - "op" : "Multiply", - "outputs" : ["Multiply_3585"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3605", "Tanh_3622" ], - "name" : "Multiply_3623", - "op" : "Multiply", - "outputs" : ["Multiply_3623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3585"], - "name" : "Reshape_3586", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3585", "Reshape_3628" ], - "name" : "Dot_3629", - "op" : "Dot", - "outputs" : ["Dot_3629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3623", "Reshape_3624" ], - "name" : "Dot_3625", - "op" : "Dot", - "outputs" : ["Dot_3625"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3623", "Reshape_3666" ], - "name" : "Dot_3667", - "op" : "Dot", - "outputs" : ["Dot_3667"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3629", "Broadcast_3630" ], - "name" : "Add_3631", - "op" : "Add", - "outputs" : ["Add_3631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3625", "Broadcast_3626" ], - "name" : "Add_3627", - "op" : "Add", - "outputs" : ["Add_3627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3667", "Broadcast_3668" ], - "name" : "Add_3669", - "op" : "Add", - "outputs" : ["Add_3669"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3627", "Add_3631" ], - "name" : "Add_3632", - "op" : "Add", - "outputs" : ["Add_3632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3665", "Add_3669" ], - "name" : "Add_3670", - "op" : "Add", - "outputs" : ["Add_3670"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3632"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3633", - "op" : "Slice", - "outputs" : ["Slice_3633"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3632"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3634", - "op" : "Slice", - "outputs" : ["Slice_3634"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3632"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3635", - "op" : "Slice", - "outputs" : ["Slice_3635"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3632"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3636", - "op" : "Slice", - "outputs" : ["Slice_3636"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3670"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3671", - "op" : "Slice", - "outputs" : ["Slice_3671"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3670"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3672", - "op" : "Slice", - "outputs" : ["Slice_3672"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3670"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3673", - "op" : "Slice", - "outputs" : ["Slice_3673"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3670"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3674", - "op" : "Slice", - "outputs" : ["Slice_3674"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3633"], - "name" : "Negative_3652", - "op" : "Negative", - "outputs" : ["Negative_3652"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3634"], - "name" : "Negative_3645", - "op" : "Negative", - "outputs" : ["Negative_3645"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3635"], - "name" : "Tanh_3656", - "op" : "Tanh", - "outputs" : ["Tanh_3656"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3636"], - "name" : "Negative_3639", - "op" : "Negative", - "outputs" : ["Negative_3639"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3671"], - "name" : "Negative_3690", - "op" : "Negative", - "outputs" : ["Negative_3690"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3672"], - "name" : "Negative_3683", - "op" : "Negative", - "outputs" : ["Negative_3683"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3673"], - "name" : "Tanh_3694", - "op" : "Tanh", - "outputs" : ["Tanh_3694"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3674"], - "name" : "Negative_3677", - "op" : "Negative", - "outputs" : ["Negative_3677"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3652"], - "name" : "Exp_3653", - "op" : "Exp", - "outputs" : ["Exp_3653"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3645"], - "name" : "Exp_3646", - "op" : "Exp", - "outputs" : ["Exp_3646"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3639"], - "name" : "Exp_3640", - "op" : "Exp", - "outputs" : ["Exp_3640"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3690"], - "name" : "Exp_3691", - "op" : "Exp", - "outputs" : ["Exp_3691"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3683"], - "name" : "Exp_3684", - "op" : "Exp", - "outputs" : ["Exp_3684"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3677"], - "name" : "Exp_3678", - "op" : "Exp", - "outputs" : ["Exp_3678"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3651", "Exp_3653" ], - "name" : "Add_3654", - "op" : "Add", - "outputs" : ["Add_3654"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3644", "Exp_3646" ], - "name" : "Add_3647", - "op" : "Add", - "outputs" : ["Add_3647"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3638", "Exp_3640" ], - "name" : "Add_3641", - "op" : "Add", - "outputs" : ["Add_3641"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3689", "Exp_3691" ], - "name" : "Add_3692", - "op" : "Add", - "outputs" : ["Add_3692"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3682", "Exp_3684" ], - "name" : "Add_3685", - "op" : "Add", - "outputs" : ["Add_3685"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3676", "Exp_3678" ], - "name" : "Add_3679", - "op" : "Add", - "outputs" : ["Add_3679"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3651", "Add_3654" ], - "name" : "Divide_3655", - "op" : "Divide", - "outputs" : ["Divide_3655"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3644", "Add_3647" ], - "name" : "Divide_3648", - "op" : "Divide", - "outputs" : ["Divide_3648"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3638", "Add_3641" ], - "name" : "Divide_3642", - "op" : "Divide", - "outputs" : ["Divide_3642"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3689", "Add_3692" ], - "name" : "Divide_3693", - "op" : "Divide", - "outputs" : ["Divide_3693"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3682", "Add_3685" ], - "name" : "Divide_3686", - "op" : "Divide", - "outputs" : ["Divide_3686"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3676", "Add_3679" ], - "name" : "Divide_3680", - "op" : "Divide", - "outputs" : ["Divide_3680"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3655", "Tanh_3656" ], - "name" : "Multiply_3657", - "op" : "Multiply", - "outputs" : ["Multiply_3657"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3648", "Add_3583" ], - "name" : "Multiply_3649", - "op" : "Multiply", - "outputs" : ["Multiply_3649"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3693", "Tanh_3694" ], - "name" : "Multiply_3695", - "op" : "Multiply", - "outputs" : ["Multiply_3695"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3686", "Add_3621" ], - "name" : "Multiply_3687", - "op" : "Multiply", - "outputs" : ["Multiply_3687"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3649", "Multiply_3657" ], - "name" : "Add_3658", - "op" : "Add", - "outputs" : ["Add_3658"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3687", "Multiply_3695" ], - "name" : "Add_3696", - "op" : "Add", - "outputs" : ["Add_3696"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3658"], - "name" : "Tanh_3659", - "op" : "Tanh", - "outputs" : ["Tanh_3659"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3696"], - "name" : "Tanh_3697", - "op" : "Tanh", - "outputs" : ["Tanh_3697"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3642", "Tanh_3659" ], - "name" : "Multiply_3660", - "op" : "Multiply", - "outputs" : ["Multiply_3660"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3680", "Tanh_3697" ], - "name" : "Multiply_3698", - "op" : "Multiply", - "outputs" : ["Multiply_3698"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3660"], - "name" : "Reshape_3661", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3661"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3660", "Reshape_3703" ], - "name" : "Dot_3704", - "op" : "Dot", - "outputs" : ["Dot_3704"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3698", "Reshape_3699" ], - "name" : "Dot_3700", - "op" : "Dot", - "outputs" : ["Dot_3700"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3698", "Reshape_3741" ], - "name" : "Dot_3742", - "op" : "Dot", - "outputs" : ["Dot_3742"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3704", "Broadcast_3705" ], - "name" : "Add_3706", - "op" : "Add", - "outputs" : ["Add_3706"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3700", "Broadcast_3701" ], - "name" : "Add_3702", - "op" : "Add", - "outputs" : ["Add_3702"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3742", "Broadcast_3743" ], - "name" : "Add_3744", - "op" : "Add", - "outputs" : ["Add_3744"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3702", "Add_3706" ], - "name" : "Add_3707", - "op" : "Add", - "outputs" : ["Add_3707"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3740", "Add_3744" ], - "name" : "Add_3745", - "op" : "Add", - "outputs" : ["Add_3745"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3707"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3708", - "op" : "Slice", - "outputs" : ["Slice_3708"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3707"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3709", - "op" : "Slice", - "outputs" : ["Slice_3709"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3707"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3710", - "op" : "Slice", - "outputs" : ["Slice_3710"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3707"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3711", - "op" : "Slice", - "outputs" : ["Slice_3711"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3745"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3746", - "op" : "Slice", - "outputs" : ["Slice_3746"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3745"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3747", - "op" : "Slice", - "outputs" : ["Slice_3747"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3745"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3748", - "op" : "Slice", - "outputs" : ["Slice_3748"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3745"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3749", - "op" : "Slice", - "outputs" : ["Slice_3749"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3708"], - "name" : "Negative_3727", - "op" : "Negative", - "outputs" : ["Negative_3727"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3709"], - "name" : "Negative_3720", - "op" : "Negative", - "outputs" : ["Negative_3720"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3710"], - "name" : "Tanh_3731", - "op" : "Tanh", - "outputs" : ["Tanh_3731"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3711"], - "name" : "Negative_3714", - "op" : "Negative", - "outputs" : ["Negative_3714"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3746"], - "name" : "Negative_3765", - "op" : "Negative", - "outputs" : ["Negative_3765"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3747"], - "name" : "Negative_3758", - "op" : "Negative", - "outputs" : ["Negative_3758"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3748"], - "name" : "Tanh_3769", - "op" : "Tanh", - "outputs" : ["Tanh_3769"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3749"], - "name" : "Negative_3752", - "op" : "Negative", - "outputs" : ["Negative_3752"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3727"], - "name" : "Exp_3728", - "op" : "Exp", - "outputs" : ["Exp_3728"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3720"], - "name" : "Exp_3721", - "op" : "Exp", - "outputs" : ["Exp_3721"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3714"], - "name" : "Exp_3715", - "op" : "Exp", - "outputs" : ["Exp_3715"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3765"], - "name" : "Exp_3766", - "op" : "Exp", - "outputs" : ["Exp_3766"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3758"], - "name" : "Exp_3759", - "op" : "Exp", - "outputs" : ["Exp_3759"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3752"], - "name" : "Exp_3753", - "op" : "Exp", - "outputs" : ["Exp_3753"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3726", "Exp_3728" ], - "name" : "Add_3729", - "op" : "Add", - "outputs" : ["Add_3729"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3719", "Exp_3721" ], - "name" : "Add_3722", - "op" : "Add", - "outputs" : ["Add_3722"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3713", "Exp_3715" ], - "name" : "Add_3716", - "op" : "Add", - "outputs" : ["Add_3716"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3764", "Exp_3766" ], - "name" : "Add_3767", - "op" : "Add", - "outputs" : ["Add_3767"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3757", "Exp_3759" ], - "name" : "Add_3760", - "op" : "Add", - "outputs" : ["Add_3760"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3751", "Exp_3753" ], - "name" : "Add_3754", - "op" : "Add", - "outputs" : ["Add_3754"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3726", "Add_3729" ], - "name" : "Divide_3730", - "op" : "Divide", - "outputs" : ["Divide_3730"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3719", "Add_3722" ], - "name" : "Divide_3723", - "op" : "Divide", - "outputs" : ["Divide_3723"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3713", "Add_3716" ], - "name" : "Divide_3717", - "op" : "Divide", - "outputs" : ["Divide_3717"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3764", "Add_3767" ], - "name" : "Divide_3768", - "op" : "Divide", - "outputs" : ["Divide_3768"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3757", "Add_3760" ], - "name" : "Divide_3761", - "op" : "Divide", - "outputs" : ["Divide_3761"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3751", "Add_3754" ], - "name" : "Divide_3755", - "op" : "Divide", - "outputs" : ["Divide_3755"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3730", "Tanh_3731" ], - "name" : "Multiply_3732", - "op" : "Multiply", - "outputs" : ["Multiply_3732"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3723", "Add_3658" ], - "name" : "Multiply_3724", - "op" : "Multiply", - "outputs" : ["Multiply_3724"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3768", "Tanh_3769" ], - "name" : "Multiply_3770", - "op" : "Multiply", - "outputs" : ["Multiply_3770"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3761", "Add_3696" ], - "name" : "Multiply_3762", - "op" : "Multiply", - "outputs" : ["Multiply_3762"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3724", "Multiply_3732" ], - "name" : "Add_3733", - "op" : "Add", - "outputs" : ["Add_3733"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3762", "Multiply_3770" ], - "name" : "Add_3771", - "op" : "Add", - "outputs" : ["Add_3771"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3733"], - "name" : "Tanh_3734", - "op" : "Tanh", - "outputs" : ["Tanh_3734"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3771"], - "name" : "Tanh_3772", - "op" : "Tanh", - "outputs" : ["Tanh_3772"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3717", "Tanh_3734" ], - "name" : "Multiply_3735", - "op" : "Multiply", - "outputs" : ["Multiply_3735"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3755", "Tanh_3772" ], - "name" : "Multiply_3773", - "op" : "Multiply", - "outputs" : ["Multiply_3773"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3735"], - "name" : "Reshape_3736", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3736"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3735", "Reshape_3778" ], - "name" : "Dot_3779", - "op" : "Dot", - "outputs" : ["Dot_3779"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3773", "Reshape_3774" ], - "name" : "Dot_3775", - "op" : "Dot", - "outputs" : ["Dot_3775"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3773", "Reshape_3816" ], - "name" : "Dot_3817", - "op" : "Dot", - "outputs" : ["Dot_3817"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3779", "Broadcast_3780" ], - "name" : "Add_3781", - "op" : "Add", - "outputs" : ["Add_3781"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3775", "Broadcast_3776" ], - "name" : "Add_3777", - "op" : "Add", - "outputs" : ["Add_3777"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3817", "Broadcast_3818" ], - "name" : "Add_3819", - "op" : "Add", - "outputs" : ["Add_3819"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3777", "Add_3781" ], - "name" : "Add_3782", - "op" : "Add", - "outputs" : ["Add_3782"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3815", "Add_3819" ], - "name" : "Add_3820", - "op" : "Add", - "outputs" : ["Add_3820"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3782"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3783", - "op" : "Slice", - "outputs" : ["Slice_3783"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3782"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3784", - "op" : "Slice", - "outputs" : ["Slice_3784"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3782"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3785", - "op" : "Slice", - "outputs" : ["Slice_3785"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3782"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3786", - "op" : "Slice", - "outputs" : ["Slice_3786"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3820"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3821", - "op" : "Slice", - "outputs" : ["Slice_3821"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3820"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3822", - "op" : "Slice", - "outputs" : ["Slice_3822"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3820"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3823", - "op" : "Slice", - "outputs" : ["Slice_3823"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3820"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3824", - "op" : "Slice", - "outputs" : ["Slice_3824"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3783"], - "name" : "Negative_3802", - "op" : "Negative", - "outputs" : ["Negative_3802"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3784"], - "name" : "Negative_3795", - "op" : "Negative", - "outputs" : ["Negative_3795"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3785"], - "name" : "Tanh_3806", - "op" : "Tanh", - "outputs" : ["Tanh_3806"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3786"], - "name" : "Negative_3789", - "op" : "Negative", - "outputs" : ["Negative_3789"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3821"], - "name" : "Negative_3840", - "op" : "Negative", - "outputs" : ["Negative_3840"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3822"], - "name" : "Negative_3833", - "op" : "Negative", - "outputs" : ["Negative_3833"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3823"], - "name" : "Tanh_3844", - "op" : "Tanh", - "outputs" : ["Tanh_3844"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3824"], - "name" : "Negative_3827", - "op" : "Negative", - "outputs" : ["Negative_3827"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3802"], - "name" : "Exp_3803", - "op" : "Exp", - "outputs" : ["Exp_3803"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3795"], - "name" : "Exp_3796", - "op" : "Exp", - "outputs" : ["Exp_3796"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3789"], - "name" : "Exp_3790", - "op" : "Exp", - "outputs" : ["Exp_3790"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3840"], - "name" : "Exp_3841", - "op" : "Exp", - "outputs" : ["Exp_3841"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3833"], - "name" : "Exp_3834", - "op" : "Exp", - "outputs" : ["Exp_3834"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3827"], - "name" : "Exp_3828", - "op" : "Exp", - "outputs" : ["Exp_3828"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3801", "Exp_3803" ], - "name" : "Add_3804", - "op" : "Add", - "outputs" : ["Add_3804"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3794", "Exp_3796" ], - "name" : "Add_3797", - "op" : "Add", - "outputs" : ["Add_3797"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3788", "Exp_3790" ], - "name" : "Add_3791", - "op" : "Add", - "outputs" : ["Add_3791"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3839", "Exp_3841" ], - "name" : "Add_3842", - "op" : "Add", - "outputs" : ["Add_3842"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3832", "Exp_3834" ], - "name" : "Add_3835", - "op" : "Add", - "outputs" : ["Add_3835"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3826", "Exp_3828" ], - "name" : "Add_3829", - "op" : "Add", - "outputs" : ["Add_3829"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3801", "Add_3804" ], - "name" : "Divide_3805", - "op" : "Divide", - "outputs" : ["Divide_3805"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3794", "Add_3797" ], - "name" : "Divide_3798", - "op" : "Divide", - "outputs" : ["Divide_3798"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3788", "Add_3791" ], - "name" : "Divide_3792", - "op" : "Divide", - "outputs" : ["Divide_3792"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3839", "Add_3842" ], - "name" : "Divide_3843", - "op" : "Divide", - "outputs" : ["Divide_3843"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3832", "Add_3835" ], - "name" : "Divide_3836", - "op" : "Divide", - "outputs" : ["Divide_3836"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3826", "Add_3829" ], - "name" : "Divide_3830", - "op" : "Divide", - "outputs" : ["Divide_3830"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3805", "Tanh_3806" ], - "name" : "Multiply_3807", - "op" : "Multiply", - "outputs" : ["Multiply_3807"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3798", "Add_3733" ], - "name" : "Multiply_3799", - "op" : "Multiply", - "outputs" : ["Multiply_3799"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3843", "Tanh_3844" ], - "name" : "Multiply_3845", - "op" : "Multiply", - "outputs" : ["Multiply_3845"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3836", "Add_3771" ], - "name" : "Multiply_3837", - "op" : "Multiply", - "outputs" : ["Multiply_3837"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3799", "Multiply_3807" ], - "name" : "Add_3808", - "op" : "Add", - "outputs" : ["Add_3808"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3837", "Multiply_3845" ], - "name" : "Add_3846", - "op" : "Add", - "outputs" : ["Add_3846"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3808"], - "name" : "Tanh_3809", - "op" : "Tanh", - "outputs" : ["Tanh_3809"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3846"], - "name" : "Tanh_3847", - "op" : "Tanh", - "outputs" : ["Tanh_3847"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3792", "Tanh_3809" ], - "name" : "Multiply_3810", - "op" : "Multiply", - "outputs" : ["Multiply_3810"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3830", "Tanh_3847" ], - "name" : "Multiply_3848", - "op" : "Multiply", - "outputs" : ["Multiply_3848"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3810"], - "name" : "Reshape_3811", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3811"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3810", "Reshape_3853" ], - "name" : "Dot_3854", - "op" : "Dot", - "outputs" : ["Dot_3854"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3848", "Reshape_3849" ], - "name" : "Dot_3850", - "op" : "Dot", - "outputs" : ["Dot_3850"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3848", "Reshape_3891" ], - "name" : "Dot_3892", - "op" : "Dot", - "outputs" : ["Dot_3892"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3854", "Broadcast_3855" ], - "name" : "Add_3856", - "op" : "Add", - "outputs" : ["Add_3856"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3850", "Broadcast_3851" ], - "name" : "Add_3852", - "op" : "Add", - "outputs" : ["Add_3852"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3892", "Broadcast_3893" ], - "name" : "Add_3894", - "op" : "Add", - "outputs" : ["Add_3894"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3852", "Add_3856" ], - "name" : "Add_3857", - "op" : "Add", - "outputs" : ["Add_3857"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3890", "Add_3894" ], - "name" : "Add_3895", - "op" : "Add", - "outputs" : ["Add_3895"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3857"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3858", - "op" : "Slice", - "outputs" : ["Slice_3858"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3857"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3859", - "op" : "Slice", - "outputs" : ["Slice_3859"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3857"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3860", - "op" : "Slice", - "outputs" : ["Slice_3860"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3857"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3861", - "op" : "Slice", - "outputs" : ["Slice_3861"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3895"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3896", - "op" : "Slice", - "outputs" : ["Slice_3896"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3895"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3897", - "op" : "Slice", - "outputs" : ["Slice_3897"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3895"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3898", - "op" : "Slice", - "outputs" : ["Slice_3898"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3895"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3899", - "op" : "Slice", - "outputs" : ["Slice_3899"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3858"], - "name" : "Negative_3877", - "op" : "Negative", - "outputs" : ["Negative_3877"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3859"], - "name" : "Negative_3870", - "op" : "Negative", - "outputs" : ["Negative_3870"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3860"], - "name" : "Tanh_3881", - "op" : "Tanh", - "outputs" : ["Tanh_3881"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3861"], - "name" : "Negative_3864", - "op" : "Negative", - "outputs" : ["Negative_3864"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3896"], - "name" : "Negative_3915", - "op" : "Negative", - "outputs" : ["Negative_3915"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3897"], - "name" : "Negative_3908", - "op" : "Negative", - "outputs" : ["Negative_3908"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3898"], - "name" : "Tanh_3919", - "op" : "Tanh", - "outputs" : ["Tanh_3919"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3899"], - "name" : "Negative_3902", - "op" : "Negative", - "outputs" : ["Negative_3902"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3877"], - "name" : "Exp_3878", - "op" : "Exp", - "outputs" : ["Exp_3878"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3870"], - "name" : "Exp_3871", - "op" : "Exp", - "outputs" : ["Exp_3871"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3864"], - "name" : "Exp_3865", - "op" : "Exp", - "outputs" : ["Exp_3865"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3915"], - "name" : "Exp_3916", - "op" : "Exp", - "outputs" : ["Exp_3916"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3908"], - "name" : "Exp_3909", - "op" : "Exp", - "outputs" : ["Exp_3909"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3902"], - "name" : "Exp_3903", - "op" : "Exp", - "outputs" : ["Exp_3903"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3876", "Exp_3878" ], - "name" : "Add_3879", - "op" : "Add", - "outputs" : ["Add_3879"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3869", "Exp_3871" ], - "name" : "Add_3872", - "op" : "Add", - "outputs" : ["Add_3872"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3863", "Exp_3865" ], - "name" : "Add_3866", - "op" : "Add", - "outputs" : ["Add_3866"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3914", "Exp_3916" ], - "name" : "Add_3917", - "op" : "Add", - "outputs" : ["Add_3917"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3907", "Exp_3909" ], - "name" : "Add_3910", - "op" : "Add", - "outputs" : ["Add_3910"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3901", "Exp_3903" ], - "name" : "Add_3904", - "op" : "Add", - "outputs" : ["Add_3904"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3876", "Add_3879" ], - "name" : "Divide_3880", - "op" : "Divide", - "outputs" : ["Divide_3880"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3869", "Add_3872" ], - "name" : "Divide_3873", - "op" : "Divide", - "outputs" : ["Divide_3873"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3863", "Add_3866" ], - "name" : "Divide_3867", - "op" : "Divide", - "outputs" : ["Divide_3867"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3914", "Add_3917" ], - "name" : "Divide_3918", - "op" : "Divide", - "outputs" : ["Divide_3918"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3907", "Add_3910" ], - "name" : "Divide_3911", - "op" : "Divide", - "outputs" : ["Divide_3911"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3901", "Add_3904" ], - "name" : "Divide_3905", - "op" : "Divide", - "outputs" : ["Divide_3905"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3880", "Tanh_3881" ], - "name" : "Multiply_3882", - "op" : "Multiply", - "outputs" : ["Multiply_3882"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3873", "Add_3808" ], - "name" : "Multiply_3874", - "op" : "Multiply", - "outputs" : ["Multiply_3874"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3918", "Tanh_3919" ], - "name" : "Multiply_3920", - "op" : "Multiply", - "outputs" : ["Multiply_3920"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3911", "Add_3846" ], - "name" : "Multiply_3912", - "op" : "Multiply", - "outputs" : ["Multiply_3912"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3874", "Multiply_3882" ], - "name" : "Add_3883", - "op" : "Add", - "outputs" : ["Add_3883"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3912", "Multiply_3920" ], - "name" : "Add_3921", - "op" : "Add", - "outputs" : ["Add_3921"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3883"], - "name" : "Tanh_3884", - "op" : "Tanh", - "outputs" : ["Tanh_3884"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3921"], - "name" : "Tanh_3922", - "op" : "Tanh", - "outputs" : ["Tanh_3922"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3867", "Tanh_3884" ], - "name" : "Multiply_3885", - "op" : "Multiply", - "outputs" : ["Multiply_3885"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3905", "Tanh_3922" ], - "name" : "Multiply_3923", - "op" : "Multiply", - "outputs" : ["Multiply_3923"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3885"], - "name" : "Reshape_3886", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3886"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3885", "Reshape_3928" ], - "name" : "Dot_3929", - "op" : "Dot", - "outputs" : ["Dot_3929"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3923", "Reshape_3924" ], - "name" : "Dot_3925", - "op" : "Dot", - "outputs" : ["Dot_3925"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3923", "Reshape_3966" ], - "name" : "Dot_3967", - "op" : "Dot", - "outputs" : ["Dot_3967"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3929", "Broadcast_3930" ], - "name" : "Add_3931", - "op" : "Add", - "outputs" : ["Add_3931"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3925", "Broadcast_3926" ], - "name" : "Add_3927", - "op" : "Add", - "outputs" : ["Add_3927"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_3967", "Broadcast_3968" ], - "name" : "Add_3969", - "op" : "Add", - "outputs" : ["Add_3969"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3927", "Add_3931" ], - "name" : "Add_3932", - "op" : "Add", - "outputs" : ["Add_3932"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_3965", "Add_3969" ], - "name" : "Add_3970", - "op" : "Add", - "outputs" : ["Add_3970"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_3932"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3933", - "op" : "Slice", - "outputs" : ["Slice_3933"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3932"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3934", - "op" : "Slice", - "outputs" : ["Slice_3934"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3932"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3935", - "op" : "Slice", - "outputs" : ["Slice_3935"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3932"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3936", - "op" : "Slice", - "outputs" : ["Slice_3936"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3970"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_3971", - "op" : "Slice", - "outputs" : ["Slice_3971"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3970"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_3972", - "op" : "Slice", - "outputs" : ["Slice_3972"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3970"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_3973", - "op" : "Slice", - "outputs" : ["Slice_3973"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3970"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_3974", - "op" : "Slice", - "outputs" : ["Slice_3974"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3933"], - "name" : "Negative_3952", - "op" : "Negative", - "outputs" : ["Negative_3952"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3934"], - "name" : "Negative_3945", - "op" : "Negative", - "outputs" : ["Negative_3945"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3935"], - "name" : "Tanh_3956", - "op" : "Tanh", - "outputs" : ["Tanh_3956"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3936"], - "name" : "Negative_3939", - "op" : "Negative", - "outputs" : ["Negative_3939"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3971"], - "name" : "Negative_3990", - "op" : "Negative", - "outputs" : ["Negative_3990"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3972"], - "name" : "Negative_3983", - "op" : "Negative", - "outputs" : ["Negative_3983"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3973"], - "name" : "Tanh_3994", - "op" : "Tanh", - "outputs" : ["Tanh_3994"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_3974"], - "name" : "Negative_3977", - "op" : "Negative", - "outputs" : ["Negative_3977"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3952"], - "name" : "Exp_3953", - "op" : "Exp", - "outputs" : ["Exp_3953"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3945"], - "name" : "Exp_3946", - "op" : "Exp", - "outputs" : ["Exp_3946"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3939"], - "name" : "Exp_3940", - "op" : "Exp", - "outputs" : ["Exp_3940"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3990"], - "name" : "Exp_3991", - "op" : "Exp", - "outputs" : ["Exp_3991"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3983"], - "name" : "Exp_3984", - "op" : "Exp", - "outputs" : ["Exp_3984"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_3977"], - "name" : "Exp_3978", - "op" : "Exp", - "outputs" : ["Exp_3978"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3951", "Exp_3953" ], - "name" : "Add_3954", - "op" : "Add", - "outputs" : ["Add_3954"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3944", "Exp_3946" ], - "name" : "Add_3947", - "op" : "Add", - "outputs" : ["Add_3947"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3938", "Exp_3940" ], - "name" : "Add_3941", - "op" : "Add", - "outputs" : ["Add_3941"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3989", "Exp_3991" ], - "name" : "Add_3992", - "op" : "Add", - "outputs" : ["Add_3992"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3982", "Exp_3984" ], - "name" : "Add_3985", - "op" : "Add", - "outputs" : ["Add_3985"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3976", "Exp_3978" ], - "name" : "Add_3979", - "op" : "Add", - "outputs" : ["Add_3979"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3951", "Add_3954" ], - "name" : "Divide_3955", - "op" : "Divide", - "outputs" : ["Divide_3955"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3944", "Add_3947" ], - "name" : "Divide_3948", - "op" : "Divide", - "outputs" : ["Divide_3948"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3938", "Add_3941" ], - "name" : "Divide_3942", - "op" : "Divide", - "outputs" : ["Divide_3942"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3989", "Add_3992" ], - "name" : "Divide_3993", - "op" : "Divide", - "outputs" : ["Divide_3993"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3982", "Add_3985" ], - "name" : "Divide_3986", - "op" : "Divide", - "outputs" : ["Divide_3986"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_3976", "Add_3979" ], - "name" : "Divide_3980", - "op" : "Divide", - "outputs" : ["Divide_3980"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3955", "Tanh_3956" ], - "name" : "Multiply_3957", - "op" : "Multiply", - "outputs" : ["Multiply_3957"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3948", "Add_3883" ], - "name" : "Multiply_3949", - "op" : "Multiply", - "outputs" : ["Multiply_3949"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3993", "Tanh_3994" ], - "name" : "Multiply_3995", - "op" : "Multiply", - "outputs" : ["Multiply_3995"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3986", "Add_3921" ], - "name" : "Multiply_3987", - "op" : "Multiply", - "outputs" : ["Multiply_3987"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3949", "Multiply_3957" ], - "name" : "Add_3958", - "op" : "Add", - "outputs" : ["Add_3958"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_3987", "Multiply_3995" ], - "name" : "Add_3996", - "op" : "Add", - "outputs" : ["Add_3996"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3958"], - "name" : "Tanh_3959", - "op" : "Tanh", - "outputs" : ["Tanh_3959"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_3996"], - "name" : "Tanh_3997", - "op" : "Tanh", - "outputs" : ["Tanh_3997"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3942", "Tanh_3959" ], - "name" : "Multiply_3960", - "op" : "Multiply", - "outputs" : ["Multiply_3960"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_3980", "Tanh_3997" ], - "name" : "Multiply_3998", - "op" : "Multiply", - "outputs" : ["Multiply_3998"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_3960"], - "name" : "Reshape_3961", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_3961"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_3960", "Reshape_4003" ], - "name" : "Dot_4004", - "op" : "Dot", - "outputs" : ["Dot_4004"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3998", "Reshape_3999" ], - "name" : "Dot_4000", - "op" : "Dot", - "outputs" : ["Dot_4000"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_3998", "Reshape_4041" ], - "name" : "Dot_4042", - "op" : "Dot", - "outputs" : ["Dot_4042"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4004", "Broadcast_4005" ], - "name" : "Add_4006", - "op" : "Add", - "outputs" : ["Add_4006"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4000", "Broadcast_4001" ], - "name" : "Add_4002", - "op" : "Add", - "outputs" : ["Add_4002"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4042", "Broadcast_4043" ], - "name" : "Add_4044", - "op" : "Add", - "outputs" : ["Add_4044"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4002", "Add_4006" ], - "name" : "Add_4007", - "op" : "Add", - "outputs" : ["Add_4007"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4040", "Add_4044" ], - "name" : "Add_4045", - "op" : "Add", - "outputs" : ["Add_4045"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4007"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4008", - "op" : "Slice", - "outputs" : ["Slice_4008"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4007"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4009", - "op" : "Slice", - "outputs" : ["Slice_4009"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4007"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4010", - "op" : "Slice", - "outputs" : ["Slice_4010"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4007"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4011", - "op" : "Slice", - "outputs" : ["Slice_4011"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4045"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4046", - "op" : "Slice", - "outputs" : ["Slice_4046"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4045"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4047", - "op" : "Slice", - "outputs" : ["Slice_4047"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4045"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4048", - "op" : "Slice", - "outputs" : ["Slice_4048"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4045"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4049", - "op" : "Slice", - "outputs" : ["Slice_4049"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4008"], - "name" : "Negative_4027", - "op" : "Negative", - "outputs" : ["Negative_4027"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4009"], - "name" : "Negative_4020", - "op" : "Negative", - "outputs" : ["Negative_4020"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4010"], - "name" : "Tanh_4031", - "op" : "Tanh", - "outputs" : ["Tanh_4031"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4011"], - "name" : "Negative_4014", - "op" : "Negative", - "outputs" : ["Negative_4014"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4046"], - "name" : "Negative_4065", - "op" : "Negative", - "outputs" : ["Negative_4065"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4047"], - "name" : "Negative_4058", - "op" : "Negative", - "outputs" : ["Negative_4058"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4048"], - "name" : "Tanh_4069", - "op" : "Tanh", - "outputs" : ["Tanh_4069"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4049"], - "name" : "Negative_4052", - "op" : "Negative", - "outputs" : ["Negative_4052"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4027"], - "name" : "Exp_4028", - "op" : "Exp", - "outputs" : ["Exp_4028"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4020"], - "name" : "Exp_4021", - "op" : "Exp", - "outputs" : ["Exp_4021"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4014"], - "name" : "Exp_4015", - "op" : "Exp", - "outputs" : ["Exp_4015"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4065"], - "name" : "Exp_4066", - "op" : "Exp", - "outputs" : ["Exp_4066"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4058"], - "name" : "Exp_4059", - "op" : "Exp", - "outputs" : ["Exp_4059"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4052"], - "name" : "Exp_4053", - "op" : "Exp", - "outputs" : ["Exp_4053"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4026", "Exp_4028" ], - "name" : "Add_4029", - "op" : "Add", - "outputs" : ["Add_4029"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4019", "Exp_4021" ], - "name" : "Add_4022", - "op" : "Add", - "outputs" : ["Add_4022"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4013", "Exp_4015" ], - "name" : "Add_4016", - "op" : "Add", - "outputs" : ["Add_4016"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4064", "Exp_4066" ], - "name" : "Add_4067", - "op" : "Add", - "outputs" : ["Add_4067"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4057", "Exp_4059" ], - "name" : "Add_4060", - "op" : "Add", - "outputs" : ["Add_4060"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4051", "Exp_4053" ], - "name" : "Add_4054", - "op" : "Add", - "outputs" : ["Add_4054"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4026", "Add_4029" ], - "name" : "Divide_4030", - "op" : "Divide", - "outputs" : ["Divide_4030"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4019", "Add_4022" ], - "name" : "Divide_4023", - "op" : "Divide", - "outputs" : ["Divide_4023"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4013", "Add_4016" ], - "name" : "Divide_4017", - "op" : "Divide", - "outputs" : ["Divide_4017"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4064", "Add_4067" ], - "name" : "Divide_4068", - "op" : "Divide", - "outputs" : ["Divide_4068"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4057", "Add_4060" ], - "name" : "Divide_4061", - "op" : "Divide", - "outputs" : ["Divide_4061"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4051", "Add_4054" ], - "name" : "Divide_4055", - "op" : "Divide", - "outputs" : ["Divide_4055"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4030", "Tanh_4031" ], - "name" : "Multiply_4032", - "op" : "Multiply", - "outputs" : ["Multiply_4032"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4023", "Add_3958" ], - "name" : "Multiply_4024", - "op" : "Multiply", - "outputs" : ["Multiply_4024"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4068", "Tanh_4069" ], - "name" : "Multiply_4070", - "op" : "Multiply", - "outputs" : ["Multiply_4070"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4061", "Add_3996" ], - "name" : "Multiply_4062", - "op" : "Multiply", - "outputs" : ["Multiply_4062"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4024", "Multiply_4032" ], - "name" : "Add_4033", - "op" : "Add", - "outputs" : ["Add_4033"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4062", "Multiply_4070" ], - "name" : "Add_4071", - "op" : "Add", - "outputs" : ["Add_4071"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4033"], - "name" : "Tanh_4034", - "op" : "Tanh", - "outputs" : ["Tanh_4034"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4071"], - "name" : "Tanh_4072", - "op" : "Tanh", - "outputs" : ["Tanh_4072"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4017", "Tanh_4034" ], - "name" : "Multiply_4035", - "op" : "Multiply", - "outputs" : ["Multiply_4035"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4055", "Tanh_4072" ], - "name" : "Multiply_4073", - "op" : "Multiply", - "outputs" : ["Multiply_4073"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4035"], - "name" : "Reshape_4036", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4036"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4035", "Reshape_4078" ], - "name" : "Dot_4079", - "op" : "Dot", - "outputs" : ["Dot_4079"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4073", "Reshape_4074" ], - "name" : "Dot_4075", - "op" : "Dot", - "outputs" : ["Dot_4075"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4073", "Reshape_4116" ], - "name" : "Dot_4117", - "op" : "Dot", - "outputs" : ["Dot_4117"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4079", "Broadcast_4080" ], - "name" : "Add_4081", - "op" : "Add", - "outputs" : ["Add_4081"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4075", "Broadcast_4076" ], - "name" : "Add_4077", - "op" : "Add", - "outputs" : ["Add_4077"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4117", "Broadcast_4118" ], - "name" : "Add_4119", - "op" : "Add", - "outputs" : ["Add_4119"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4077", "Add_4081" ], - "name" : "Add_4082", - "op" : "Add", - "outputs" : ["Add_4082"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4115", "Add_4119" ], - "name" : "Add_4120", - "op" : "Add", - "outputs" : ["Add_4120"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4082"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4083", - "op" : "Slice", - "outputs" : ["Slice_4083"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4082"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4084", - "op" : "Slice", - "outputs" : ["Slice_4084"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4082"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4085", - "op" : "Slice", - "outputs" : ["Slice_4085"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4082"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4086", - "op" : "Slice", - "outputs" : ["Slice_4086"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4120"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4121", - "op" : "Slice", - "outputs" : ["Slice_4121"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4120"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4122", - "op" : "Slice", - "outputs" : ["Slice_4122"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4120"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4123", - "op" : "Slice", - "outputs" : ["Slice_4123"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4120"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4124", - "op" : "Slice", - "outputs" : ["Slice_4124"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4083"], - "name" : "Negative_4102", - "op" : "Negative", - "outputs" : ["Negative_4102"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4084"], - "name" : "Negative_4095", - "op" : "Negative", - "outputs" : ["Negative_4095"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4085"], - "name" : "Tanh_4106", - "op" : "Tanh", - "outputs" : ["Tanh_4106"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4086"], - "name" : "Negative_4089", - "op" : "Negative", - "outputs" : ["Negative_4089"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4121"], - "name" : "Negative_4140", - "op" : "Negative", - "outputs" : ["Negative_4140"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4122"], - "name" : "Negative_4133", - "op" : "Negative", - "outputs" : ["Negative_4133"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4123"], - "name" : "Tanh_4144", - "op" : "Tanh", - "outputs" : ["Tanh_4144"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4124"], - "name" : "Negative_4127", - "op" : "Negative", - "outputs" : ["Negative_4127"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4102"], - "name" : "Exp_4103", - "op" : "Exp", - "outputs" : ["Exp_4103"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4095"], - "name" : "Exp_4096", - "op" : "Exp", - "outputs" : ["Exp_4096"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4089"], - "name" : "Exp_4090", - "op" : "Exp", - "outputs" : ["Exp_4090"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4140"], - "name" : "Exp_4141", - "op" : "Exp", - "outputs" : ["Exp_4141"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4133"], - "name" : "Exp_4134", - "op" : "Exp", - "outputs" : ["Exp_4134"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4127"], - "name" : "Exp_4128", - "op" : "Exp", - "outputs" : ["Exp_4128"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4101", "Exp_4103" ], - "name" : "Add_4104", - "op" : "Add", - "outputs" : ["Add_4104"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4094", "Exp_4096" ], - "name" : "Add_4097", - "op" : "Add", - "outputs" : ["Add_4097"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4088", "Exp_4090" ], - "name" : "Add_4091", - "op" : "Add", - "outputs" : ["Add_4091"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4139", "Exp_4141" ], - "name" : "Add_4142", - "op" : "Add", - "outputs" : ["Add_4142"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4132", "Exp_4134" ], - "name" : "Add_4135", - "op" : "Add", - "outputs" : ["Add_4135"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4126", "Exp_4128" ], - "name" : "Add_4129", - "op" : "Add", - "outputs" : ["Add_4129"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4101", "Add_4104" ], - "name" : "Divide_4105", - "op" : "Divide", - "outputs" : ["Divide_4105"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4094", "Add_4097" ], - "name" : "Divide_4098", - "op" : "Divide", - "outputs" : ["Divide_4098"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4088", "Add_4091" ], - "name" : "Divide_4092", - "op" : "Divide", - "outputs" : ["Divide_4092"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4139", "Add_4142" ], - "name" : "Divide_4143", - "op" : "Divide", - "outputs" : ["Divide_4143"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4132", "Add_4135" ], - "name" : "Divide_4136", - "op" : "Divide", - "outputs" : ["Divide_4136"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4126", "Add_4129" ], - "name" : "Divide_4130", - "op" : "Divide", - "outputs" : ["Divide_4130"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4105", "Tanh_4106" ], - "name" : "Multiply_4107", - "op" : "Multiply", - "outputs" : ["Multiply_4107"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4098", "Add_4033" ], - "name" : "Multiply_4099", - "op" : "Multiply", - "outputs" : ["Multiply_4099"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4143", "Tanh_4144" ], - "name" : "Multiply_4145", - "op" : "Multiply", - "outputs" : ["Multiply_4145"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4136", "Add_4071" ], - "name" : "Multiply_4137", - "op" : "Multiply", - "outputs" : ["Multiply_4137"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4099", "Multiply_4107" ], - "name" : "Add_4108", - "op" : "Add", - "outputs" : ["Add_4108"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4137", "Multiply_4145" ], - "name" : "Add_4146", - "op" : "Add", - "outputs" : ["Add_4146"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4108"], - "name" : "Tanh_4109", - "op" : "Tanh", - "outputs" : ["Tanh_4109"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4146"], - "name" : "Tanh_4147", - "op" : "Tanh", - "outputs" : ["Tanh_4147"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4092", "Tanh_4109" ], - "name" : "Multiply_4110", - "op" : "Multiply", - "outputs" : ["Multiply_4110"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4130", "Tanh_4147" ], - "name" : "Multiply_4148", - "op" : "Multiply", - "outputs" : ["Multiply_4148"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4110"], - "name" : "Reshape_4111", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4111"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4110", "Reshape_4153" ], - "name" : "Dot_4154", - "op" : "Dot", - "outputs" : ["Dot_4154"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4148", "Reshape_4149" ], - "name" : "Dot_4150", - "op" : "Dot", - "outputs" : ["Dot_4150"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4148", "Reshape_4191" ], - "name" : "Dot_4192", - "op" : "Dot", - "outputs" : ["Dot_4192"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4154", "Broadcast_4155" ], - "name" : "Add_4156", - "op" : "Add", - "outputs" : ["Add_4156"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4150", "Broadcast_4151" ], - "name" : "Add_4152", - "op" : "Add", - "outputs" : ["Add_4152"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4192", "Broadcast_4193" ], - "name" : "Add_4194", - "op" : "Add", - "outputs" : ["Add_4194"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4152", "Add_4156" ], - "name" : "Add_4157", - "op" : "Add", - "outputs" : ["Add_4157"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4190", "Add_4194" ], - "name" : "Add_4195", - "op" : "Add", - "outputs" : ["Add_4195"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4157"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4158", - "op" : "Slice", - "outputs" : ["Slice_4158"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4157"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4159", - "op" : "Slice", - "outputs" : ["Slice_4159"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4157"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4160", - "op" : "Slice", - "outputs" : ["Slice_4160"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4157"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4161", - "op" : "Slice", - "outputs" : ["Slice_4161"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4195"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4196", - "op" : "Slice", - "outputs" : ["Slice_4196"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4195"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4197", - "op" : "Slice", - "outputs" : ["Slice_4197"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4195"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4198", - "op" : "Slice", - "outputs" : ["Slice_4198"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4195"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4199", - "op" : "Slice", - "outputs" : ["Slice_4199"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4158"], - "name" : "Negative_4177", - "op" : "Negative", - "outputs" : ["Negative_4177"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4159"], - "name" : "Negative_4170", - "op" : "Negative", - "outputs" : ["Negative_4170"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4160"], - "name" : "Tanh_4181", - "op" : "Tanh", - "outputs" : ["Tanh_4181"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4161"], - "name" : "Negative_4164", - "op" : "Negative", - "outputs" : ["Negative_4164"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4196"], - "name" : "Negative_4215", - "op" : "Negative", - "outputs" : ["Negative_4215"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4197"], - "name" : "Negative_4208", - "op" : "Negative", - "outputs" : ["Negative_4208"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4198"], - "name" : "Tanh_4219", - "op" : "Tanh", - "outputs" : ["Tanh_4219"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4199"], - "name" : "Negative_4202", - "op" : "Negative", - "outputs" : ["Negative_4202"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4177"], - "name" : "Exp_4178", - "op" : "Exp", - "outputs" : ["Exp_4178"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4170"], - "name" : "Exp_4171", - "op" : "Exp", - "outputs" : ["Exp_4171"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4164"], - "name" : "Exp_4165", - "op" : "Exp", - "outputs" : ["Exp_4165"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4215"], - "name" : "Exp_4216", - "op" : "Exp", - "outputs" : ["Exp_4216"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4208"], - "name" : "Exp_4209", - "op" : "Exp", - "outputs" : ["Exp_4209"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4202"], - "name" : "Exp_4203", - "op" : "Exp", - "outputs" : ["Exp_4203"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4176", "Exp_4178" ], - "name" : "Add_4179", - "op" : "Add", - "outputs" : ["Add_4179"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4169", "Exp_4171" ], - "name" : "Add_4172", - "op" : "Add", - "outputs" : ["Add_4172"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4163", "Exp_4165" ], - "name" : "Add_4166", - "op" : "Add", - "outputs" : ["Add_4166"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4214", "Exp_4216" ], - "name" : "Add_4217", - "op" : "Add", - "outputs" : ["Add_4217"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4207", "Exp_4209" ], - "name" : "Add_4210", - "op" : "Add", - "outputs" : ["Add_4210"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4201", "Exp_4203" ], - "name" : "Add_4204", - "op" : "Add", - "outputs" : ["Add_4204"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4176", "Add_4179" ], - "name" : "Divide_4180", - "op" : "Divide", - "outputs" : ["Divide_4180"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4169", "Add_4172" ], - "name" : "Divide_4173", - "op" : "Divide", - "outputs" : ["Divide_4173"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4163", "Add_4166" ], - "name" : "Divide_4167", - "op" : "Divide", - "outputs" : ["Divide_4167"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4214", "Add_4217" ], - "name" : "Divide_4218", - "op" : "Divide", - "outputs" : ["Divide_4218"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4207", "Add_4210" ], - "name" : "Divide_4211", - "op" : "Divide", - "outputs" : ["Divide_4211"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4201", "Add_4204" ], - "name" : "Divide_4205", - "op" : "Divide", - "outputs" : ["Divide_4205"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4180", "Tanh_4181" ], - "name" : "Multiply_4182", - "op" : "Multiply", - "outputs" : ["Multiply_4182"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4173", "Add_4108" ], - "name" : "Multiply_4174", - "op" : "Multiply", - "outputs" : ["Multiply_4174"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4218", "Tanh_4219" ], - "name" : "Multiply_4220", - "op" : "Multiply", - "outputs" : ["Multiply_4220"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4211", "Add_4146" ], - "name" : "Multiply_4212", - "op" : "Multiply", - "outputs" : ["Multiply_4212"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4174", "Multiply_4182" ], - "name" : "Add_4183", - "op" : "Add", - "outputs" : ["Add_4183"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4212", "Multiply_4220" ], - "name" : "Add_4221", - "op" : "Add", - "outputs" : ["Add_4221"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4183"], - "name" : "Tanh_4184", - "op" : "Tanh", - "outputs" : ["Tanh_4184"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4221"], - "name" : "Tanh_4222", - "op" : "Tanh", - "outputs" : ["Tanh_4222"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4167", "Tanh_4184" ], - "name" : "Multiply_4185", - "op" : "Multiply", - "outputs" : ["Multiply_4185"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4205", "Tanh_4222" ], - "name" : "Multiply_4223", - "op" : "Multiply", - "outputs" : ["Multiply_4223"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4185"], - "name" : "Reshape_4186", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4186"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4185", "Reshape_4228" ], - "name" : "Dot_4229", - "op" : "Dot", - "outputs" : ["Dot_4229"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4223", "Reshape_4224" ], - "name" : "Dot_4225", - "op" : "Dot", - "outputs" : ["Dot_4225"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4223", "Reshape_4266" ], - "name" : "Dot_4267", - "op" : "Dot", - "outputs" : ["Dot_4267"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4229", "Broadcast_4230" ], - "name" : "Add_4231", - "op" : "Add", - "outputs" : ["Add_4231"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4225", "Broadcast_4226" ], - "name" : "Add_4227", - "op" : "Add", - "outputs" : ["Add_4227"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4267", "Broadcast_4268" ], - "name" : "Add_4269", - "op" : "Add", - "outputs" : ["Add_4269"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4227", "Add_4231" ], - "name" : "Add_4232", - "op" : "Add", - "outputs" : ["Add_4232"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4265", "Add_4269" ], - "name" : "Add_4270", - "op" : "Add", - "outputs" : ["Add_4270"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4232"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4233", - "op" : "Slice", - "outputs" : ["Slice_4233"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4232"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4234", - "op" : "Slice", - "outputs" : ["Slice_4234"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4232"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4235", - "op" : "Slice", - "outputs" : ["Slice_4235"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4232"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4236", - "op" : "Slice", - "outputs" : ["Slice_4236"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4270"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4271", - "op" : "Slice", - "outputs" : ["Slice_4271"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4270"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4272", - "op" : "Slice", - "outputs" : ["Slice_4272"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4270"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4273", - "op" : "Slice", - "outputs" : ["Slice_4273"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4270"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4274", - "op" : "Slice", - "outputs" : ["Slice_4274"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4233"], - "name" : "Negative_4252", - "op" : "Negative", - "outputs" : ["Negative_4252"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4234"], - "name" : "Negative_4245", - "op" : "Negative", - "outputs" : ["Negative_4245"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4235"], - "name" : "Tanh_4256", - "op" : "Tanh", - "outputs" : ["Tanh_4256"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4236"], - "name" : "Negative_4239", - "op" : "Negative", - "outputs" : ["Negative_4239"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4271"], - "name" : "Negative_4290", - "op" : "Negative", - "outputs" : ["Negative_4290"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4272"], - "name" : "Negative_4283", - "op" : "Negative", - "outputs" : ["Negative_4283"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4273"], - "name" : "Tanh_4294", - "op" : "Tanh", - "outputs" : ["Tanh_4294"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4274"], - "name" : "Negative_4277", - "op" : "Negative", - "outputs" : ["Negative_4277"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4252"], - "name" : "Exp_4253", - "op" : "Exp", - "outputs" : ["Exp_4253"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4245"], - "name" : "Exp_4246", - "op" : "Exp", - "outputs" : ["Exp_4246"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4239"], - "name" : "Exp_4240", - "op" : "Exp", - "outputs" : ["Exp_4240"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4290"], - "name" : "Exp_4291", - "op" : "Exp", - "outputs" : ["Exp_4291"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4283"], - "name" : "Exp_4284", - "op" : "Exp", - "outputs" : ["Exp_4284"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4277"], - "name" : "Exp_4278", - "op" : "Exp", - "outputs" : ["Exp_4278"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4251", "Exp_4253" ], - "name" : "Add_4254", - "op" : "Add", - "outputs" : ["Add_4254"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4244", "Exp_4246" ], - "name" : "Add_4247", - "op" : "Add", - "outputs" : ["Add_4247"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4238", "Exp_4240" ], - "name" : "Add_4241", - "op" : "Add", - "outputs" : ["Add_4241"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4289", "Exp_4291" ], - "name" : "Add_4292", - "op" : "Add", - "outputs" : ["Add_4292"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4282", "Exp_4284" ], - "name" : "Add_4285", - "op" : "Add", - "outputs" : ["Add_4285"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4276", "Exp_4278" ], - "name" : "Add_4279", - "op" : "Add", - "outputs" : ["Add_4279"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4251", "Add_4254" ], - "name" : "Divide_4255", - "op" : "Divide", - "outputs" : ["Divide_4255"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4244", "Add_4247" ], - "name" : "Divide_4248", - "op" : "Divide", - "outputs" : ["Divide_4248"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4238", "Add_4241" ], - "name" : "Divide_4242", - "op" : "Divide", - "outputs" : ["Divide_4242"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4289", "Add_4292" ], - "name" : "Divide_4293", - "op" : "Divide", - "outputs" : ["Divide_4293"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4282", "Add_4285" ], - "name" : "Divide_4286", - "op" : "Divide", - "outputs" : ["Divide_4286"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4276", "Add_4279" ], - "name" : "Divide_4280", - "op" : "Divide", - "outputs" : ["Divide_4280"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4255", "Tanh_4256" ], - "name" : "Multiply_4257", - "op" : "Multiply", - "outputs" : ["Multiply_4257"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4248", "Add_4183" ], - "name" : "Multiply_4249", - "op" : "Multiply", - "outputs" : ["Multiply_4249"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4293", "Tanh_4294" ], - "name" : "Multiply_4295", - "op" : "Multiply", - "outputs" : ["Multiply_4295"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4286", "Add_4221" ], - "name" : "Multiply_4287", - "op" : "Multiply", - "outputs" : ["Multiply_4287"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4249", "Multiply_4257" ], - "name" : "Add_4258", - "op" : "Add", - "outputs" : ["Add_4258"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4287", "Multiply_4295" ], - "name" : "Add_4296", - "op" : "Add", - "outputs" : ["Add_4296"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4258"], - "name" : "Tanh_4259", - "op" : "Tanh", - "outputs" : ["Tanh_4259"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4296"], - "name" : "Tanh_4297", - "op" : "Tanh", - "outputs" : ["Tanh_4297"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4242", "Tanh_4259" ], - "name" : "Multiply_4260", - "op" : "Multiply", - "outputs" : ["Multiply_4260"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4280", "Tanh_4297" ], - "name" : "Multiply_4298", - "op" : "Multiply", - "outputs" : ["Multiply_4298"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4260"], - "name" : "Reshape_4261", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4261"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4260", "Reshape_4303" ], - "name" : "Dot_4304", - "op" : "Dot", - "outputs" : ["Dot_4304"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4298", "Reshape_4299" ], - "name" : "Dot_4300", - "op" : "Dot", - "outputs" : ["Dot_4300"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4298", "Reshape_4341" ], - "name" : "Dot_4342", - "op" : "Dot", - "outputs" : ["Dot_4342"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4304", "Broadcast_4305" ], - "name" : "Add_4306", - "op" : "Add", - "outputs" : ["Add_4306"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4300", "Broadcast_4301" ], - "name" : "Add_4302", - "op" : "Add", - "outputs" : ["Add_4302"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4342", "Broadcast_4343" ], - "name" : "Add_4344", - "op" : "Add", - "outputs" : ["Add_4344"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4302", "Add_4306" ], - "name" : "Add_4307", - "op" : "Add", - "outputs" : ["Add_4307"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4340", "Add_4344" ], - "name" : "Add_4345", - "op" : "Add", - "outputs" : ["Add_4345"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4307"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4308", - "op" : "Slice", - "outputs" : ["Slice_4308"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4307"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4309", - "op" : "Slice", - "outputs" : ["Slice_4309"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4307"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4310", - "op" : "Slice", - "outputs" : ["Slice_4310"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4307"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4311", - "op" : "Slice", - "outputs" : ["Slice_4311"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4345"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4346", - "op" : "Slice", - "outputs" : ["Slice_4346"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4345"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4347", - "op" : "Slice", - "outputs" : ["Slice_4347"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4345"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4348", - "op" : "Slice", - "outputs" : ["Slice_4348"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4345"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4349", - "op" : "Slice", - "outputs" : ["Slice_4349"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4308"], - "name" : "Negative_4327", - "op" : "Negative", - "outputs" : ["Negative_4327"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4309"], - "name" : "Negative_4320", - "op" : "Negative", - "outputs" : ["Negative_4320"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4310"], - "name" : "Tanh_4331", - "op" : "Tanh", - "outputs" : ["Tanh_4331"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4311"], - "name" : "Negative_4314", - "op" : "Negative", - "outputs" : ["Negative_4314"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4346"], - "name" : "Negative_4365", - "op" : "Negative", - "outputs" : ["Negative_4365"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4347"], - "name" : "Negative_4358", - "op" : "Negative", - "outputs" : ["Negative_4358"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4348"], - "name" : "Tanh_4369", - "op" : "Tanh", - "outputs" : ["Tanh_4369"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4349"], - "name" : "Negative_4352", - "op" : "Negative", - "outputs" : ["Negative_4352"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4327"], - "name" : "Exp_4328", - "op" : "Exp", - "outputs" : ["Exp_4328"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4320"], - "name" : "Exp_4321", - "op" : "Exp", - "outputs" : ["Exp_4321"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4314"], - "name" : "Exp_4315", - "op" : "Exp", - "outputs" : ["Exp_4315"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4365"], - "name" : "Exp_4366", - "op" : "Exp", - "outputs" : ["Exp_4366"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4358"], - "name" : "Exp_4359", - "op" : "Exp", - "outputs" : ["Exp_4359"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4352"], - "name" : "Exp_4353", - "op" : "Exp", - "outputs" : ["Exp_4353"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4326", "Exp_4328" ], - "name" : "Add_4329", - "op" : "Add", - "outputs" : ["Add_4329"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4319", "Exp_4321" ], - "name" : "Add_4322", - "op" : "Add", - "outputs" : ["Add_4322"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4313", "Exp_4315" ], - "name" : "Add_4316", - "op" : "Add", - "outputs" : ["Add_4316"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4364", "Exp_4366" ], - "name" : "Add_4367", - "op" : "Add", - "outputs" : ["Add_4367"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4357", "Exp_4359" ], - "name" : "Add_4360", - "op" : "Add", - "outputs" : ["Add_4360"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4351", "Exp_4353" ], - "name" : "Add_4354", - "op" : "Add", - "outputs" : ["Add_4354"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4326", "Add_4329" ], - "name" : "Divide_4330", - "op" : "Divide", - "outputs" : ["Divide_4330"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4319", "Add_4322" ], - "name" : "Divide_4323", - "op" : "Divide", - "outputs" : ["Divide_4323"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4313", "Add_4316" ], - "name" : "Divide_4317", - "op" : "Divide", - "outputs" : ["Divide_4317"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4364", "Add_4367" ], - "name" : "Divide_4368", - "op" : "Divide", - "outputs" : ["Divide_4368"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4357", "Add_4360" ], - "name" : "Divide_4361", - "op" : "Divide", - "outputs" : ["Divide_4361"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4351", "Add_4354" ], - "name" : "Divide_4355", - "op" : "Divide", - "outputs" : ["Divide_4355"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4330", "Tanh_4331" ], - "name" : "Multiply_4332", - "op" : "Multiply", - "outputs" : ["Multiply_4332"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4323", "Add_4258" ], - "name" : "Multiply_4324", - "op" : "Multiply", - "outputs" : ["Multiply_4324"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4368", "Tanh_4369" ], - "name" : "Multiply_4370", - "op" : "Multiply", - "outputs" : ["Multiply_4370"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4361", "Add_4296" ], - "name" : "Multiply_4362", - "op" : "Multiply", - "outputs" : ["Multiply_4362"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4324", "Multiply_4332" ], - "name" : "Add_4333", - "op" : "Add", - "outputs" : ["Add_4333"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4362", "Multiply_4370" ], - "name" : "Add_4371", - "op" : "Add", - "outputs" : ["Add_4371"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4333"], - "name" : "Tanh_4334", - "op" : "Tanh", - "outputs" : ["Tanh_4334"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4371"], - "name" : "Tanh_4372", - "op" : "Tanh", - "outputs" : ["Tanh_4372"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4317", "Tanh_4334" ], - "name" : "Multiply_4335", - "op" : "Multiply", - "outputs" : ["Multiply_4335"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4355", "Tanh_4372" ], - "name" : "Multiply_4373", - "op" : "Multiply", - "outputs" : ["Multiply_4373"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4335"], - "name" : "Reshape_4336", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4336"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4335", "Reshape_4378" ], - "name" : "Dot_4379", - "op" : "Dot", - "outputs" : ["Dot_4379"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4373", "Reshape_4374" ], - "name" : "Dot_4375", - "op" : "Dot", - "outputs" : ["Dot_4375"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4373", "Reshape_4416" ], - "name" : "Dot_4417", - "op" : "Dot", - "outputs" : ["Dot_4417"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4379", "Broadcast_4380" ], - "name" : "Add_4381", - "op" : "Add", - "outputs" : ["Add_4381"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4375", "Broadcast_4376" ], - "name" : "Add_4377", - "op" : "Add", - "outputs" : ["Add_4377"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4417", "Broadcast_4418" ], - "name" : "Add_4419", - "op" : "Add", - "outputs" : ["Add_4419"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4377", "Add_4381" ], - "name" : "Add_4382", - "op" : "Add", - "outputs" : ["Add_4382"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4415", "Add_4419" ], - "name" : "Add_4420", - "op" : "Add", - "outputs" : ["Add_4420"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4382"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4383", - "op" : "Slice", - "outputs" : ["Slice_4383"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4382"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4384", - "op" : "Slice", - "outputs" : ["Slice_4384"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4382"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4385", - "op" : "Slice", - "outputs" : ["Slice_4385"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4382"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4386", - "op" : "Slice", - "outputs" : ["Slice_4386"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4420"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4421", - "op" : "Slice", - "outputs" : ["Slice_4421"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4420"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4422", - "op" : "Slice", - "outputs" : ["Slice_4422"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4420"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4423", - "op" : "Slice", - "outputs" : ["Slice_4423"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4420"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4424", - "op" : "Slice", - "outputs" : ["Slice_4424"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4383"], - "name" : "Negative_4402", - "op" : "Negative", - "outputs" : ["Negative_4402"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4384"], - "name" : "Negative_4395", - "op" : "Negative", - "outputs" : ["Negative_4395"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4385"], - "name" : "Tanh_4406", - "op" : "Tanh", - "outputs" : ["Tanh_4406"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4386"], - "name" : "Negative_4389", - "op" : "Negative", - "outputs" : ["Negative_4389"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4421"], - "name" : "Negative_4440", - "op" : "Negative", - "outputs" : ["Negative_4440"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4422"], - "name" : "Negative_4433", - "op" : "Negative", - "outputs" : ["Negative_4433"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4423"], - "name" : "Tanh_4444", - "op" : "Tanh", - "outputs" : ["Tanh_4444"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4424"], - "name" : "Negative_4427", - "op" : "Negative", - "outputs" : ["Negative_4427"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4402"], - "name" : "Exp_4403", - "op" : "Exp", - "outputs" : ["Exp_4403"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4395"], - "name" : "Exp_4396", - "op" : "Exp", - "outputs" : ["Exp_4396"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4389"], - "name" : "Exp_4390", - "op" : "Exp", - "outputs" : ["Exp_4390"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4440"], - "name" : "Exp_4441", - "op" : "Exp", - "outputs" : ["Exp_4441"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4433"], - "name" : "Exp_4434", - "op" : "Exp", - "outputs" : ["Exp_4434"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4427"], - "name" : "Exp_4428", - "op" : "Exp", - "outputs" : ["Exp_4428"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4401", "Exp_4403" ], - "name" : "Add_4404", - "op" : "Add", - "outputs" : ["Add_4404"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4394", "Exp_4396" ], - "name" : "Add_4397", - "op" : "Add", - "outputs" : ["Add_4397"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4388", "Exp_4390" ], - "name" : "Add_4391", - "op" : "Add", - "outputs" : ["Add_4391"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4439", "Exp_4441" ], - "name" : "Add_4442", - "op" : "Add", - "outputs" : ["Add_4442"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4432", "Exp_4434" ], - "name" : "Add_4435", - "op" : "Add", - "outputs" : ["Add_4435"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4426", "Exp_4428" ], - "name" : "Add_4429", - "op" : "Add", - "outputs" : ["Add_4429"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4401", "Add_4404" ], - "name" : "Divide_4405", - "op" : "Divide", - "outputs" : ["Divide_4405"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4394", "Add_4397" ], - "name" : "Divide_4398", - "op" : "Divide", - "outputs" : ["Divide_4398"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4388", "Add_4391" ], - "name" : "Divide_4392", - "op" : "Divide", - "outputs" : ["Divide_4392"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4439", "Add_4442" ], - "name" : "Divide_4443", - "op" : "Divide", - "outputs" : ["Divide_4443"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4432", "Add_4435" ], - "name" : "Divide_4436", - "op" : "Divide", - "outputs" : ["Divide_4436"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4426", "Add_4429" ], - "name" : "Divide_4430", - "op" : "Divide", - "outputs" : ["Divide_4430"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4405", "Tanh_4406" ], - "name" : "Multiply_4407", - "op" : "Multiply", - "outputs" : ["Multiply_4407"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4398", "Add_4333" ], - "name" : "Multiply_4399", - "op" : "Multiply", - "outputs" : ["Multiply_4399"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4443", "Tanh_4444" ], - "name" : "Multiply_4445", - "op" : "Multiply", - "outputs" : ["Multiply_4445"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4436", "Add_4371" ], - "name" : "Multiply_4437", - "op" : "Multiply", - "outputs" : ["Multiply_4437"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4399", "Multiply_4407" ], - "name" : "Add_4408", - "op" : "Add", - "outputs" : ["Add_4408"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4437", "Multiply_4445" ], - "name" : "Add_4446", - "op" : "Add", - "outputs" : ["Add_4446"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4408"], - "name" : "Tanh_4409", - "op" : "Tanh", - "outputs" : ["Tanh_4409"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4446"], - "name" : "Tanh_4447", - "op" : "Tanh", - "outputs" : ["Tanh_4447"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4392", "Tanh_4409" ], - "name" : "Multiply_4410", - "op" : "Multiply", - "outputs" : ["Multiply_4410"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4430", "Tanh_4447" ], - "name" : "Multiply_4448", - "op" : "Multiply", - "outputs" : ["Multiply_4448"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4410"], - "name" : "Reshape_4411", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4411"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4410", "Reshape_4453" ], - "name" : "Dot_4454", - "op" : "Dot", - "outputs" : ["Dot_4454"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4448", "Reshape_4449" ], - "name" : "Dot_4450", - "op" : "Dot", - "outputs" : ["Dot_4450"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4448", "Reshape_4491" ], - "name" : "Dot_4492", - "op" : "Dot", - "outputs" : ["Dot_4492"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4454", "Broadcast_4455" ], - "name" : "Add_4456", - "op" : "Add", - "outputs" : ["Add_4456"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4450", "Broadcast_4451" ], - "name" : "Add_4452", - "op" : "Add", - "outputs" : ["Add_4452"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4492", "Broadcast_4493" ], - "name" : "Add_4494", - "op" : "Add", - "outputs" : ["Add_4494"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4452", "Add_4456" ], - "name" : "Add_4457", - "op" : "Add", - "outputs" : ["Add_4457"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4490", "Add_4494" ], - "name" : "Add_4495", - "op" : "Add", - "outputs" : ["Add_4495"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4457"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4458", - "op" : "Slice", - "outputs" : ["Slice_4458"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4457"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4459", - "op" : "Slice", - "outputs" : ["Slice_4459"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4457"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4460", - "op" : "Slice", - "outputs" : ["Slice_4460"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4457"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4461", - "op" : "Slice", - "outputs" : ["Slice_4461"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4495"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4496", - "op" : "Slice", - "outputs" : ["Slice_4496"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4495"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4497", - "op" : "Slice", - "outputs" : ["Slice_4497"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4495"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4498", - "op" : "Slice", - "outputs" : ["Slice_4498"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4495"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4499", - "op" : "Slice", - "outputs" : ["Slice_4499"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4458"], - "name" : "Negative_4477", - "op" : "Negative", - "outputs" : ["Negative_4477"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4459"], - "name" : "Negative_4470", - "op" : "Negative", - "outputs" : ["Negative_4470"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4460"], - "name" : "Tanh_4481", - "op" : "Tanh", - "outputs" : ["Tanh_4481"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4461"], - "name" : "Negative_4464", - "op" : "Negative", - "outputs" : ["Negative_4464"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4496"], - "name" : "Negative_4515", - "op" : "Negative", - "outputs" : ["Negative_4515"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4497"], - "name" : "Negative_4508", - "op" : "Negative", - "outputs" : ["Negative_4508"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4498"], - "name" : "Tanh_4519", - "op" : "Tanh", - "outputs" : ["Tanh_4519"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4499"], - "name" : "Negative_4502", - "op" : "Negative", - "outputs" : ["Negative_4502"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4477"], - "name" : "Exp_4478", - "op" : "Exp", - "outputs" : ["Exp_4478"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4470"], - "name" : "Exp_4471", - "op" : "Exp", - "outputs" : ["Exp_4471"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4464"], - "name" : "Exp_4465", - "op" : "Exp", - "outputs" : ["Exp_4465"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4515"], - "name" : "Exp_4516", - "op" : "Exp", - "outputs" : ["Exp_4516"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4508"], - "name" : "Exp_4509", - "op" : "Exp", - "outputs" : ["Exp_4509"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4502"], - "name" : "Exp_4503", - "op" : "Exp", - "outputs" : ["Exp_4503"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4476", "Exp_4478" ], - "name" : "Add_4479", - "op" : "Add", - "outputs" : ["Add_4479"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4469", "Exp_4471" ], - "name" : "Add_4472", - "op" : "Add", - "outputs" : ["Add_4472"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4463", "Exp_4465" ], - "name" : "Add_4466", - "op" : "Add", - "outputs" : ["Add_4466"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4514", "Exp_4516" ], - "name" : "Add_4517", - "op" : "Add", - "outputs" : ["Add_4517"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4507", "Exp_4509" ], - "name" : "Add_4510", - "op" : "Add", - "outputs" : ["Add_4510"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4501", "Exp_4503" ], - "name" : "Add_4504", - "op" : "Add", - "outputs" : ["Add_4504"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4476", "Add_4479" ], - "name" : "Divide_4480", - "op" : "Divide", - "outputs" : ["Divide_4480"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4469", "Add_4472" ], - "name" : "Divide_4473", - "op" : "Divide", - "outputs" : ["Divide_4473"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4463", "Add_4466" ], - "name" : "Divide_4467", - "op" : "Divide", - "outputs" : ["Divide_4467"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4514", "Add_4517" ], - "name" : "Divide_4518", - "op" : "Divide", - "outputs" : ["Divide_4518"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4507", "Add_4510" ], - "name" : "Divide_4511", - "op" : "Divide", - "outputs" : ["Divide_4511"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4501", "Add_4504" ], - "name" : "Divide_4505", - "op" : "Divide", - "outputs" : ["Divide_4505"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4480", "Tanh_4481" ], - "name" : "Multiply_4482", - "op" : "Multiply", - "outputs" : ["Multiply_4482"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4473", "Add_4408" ], - "name" : "Multiply_4474", - "op" : "Multiply", - "outputs" : ["Multiply_4474"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4518", "Tanh_4519" ], - "name" : "Multiply_4520", - "op" : "Multiply", - "outputs" : ["Multiply_4520"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4511", "Add_4446" ], - "name" : "Multiply_4512", - "op" : "Multiply", - "outputs" : ["Multiply_4512"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4474", "Multiply_4482" ], - "name" : "Add_4483", - "op" : "Add", - "outputs" : ["Add_4483"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4512", "Multiply_4520" ], - "name" : "Add_4521", - "op" : "Add", - "outputs" : ["Add_4521"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4483"], - "name" : "Tanh_4484", - "op" : "Tanh", - "outputs" : ["Tanh_4484"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4521"], - "name" : "Tanh_4522", - "op" : "Tanh", - "outputs" : ["Tanh_4522"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4467", "Tanh_4484" ], - "name" : "Multiply_4485", - "op" : "Multiply", - "outputs" : ["Multiply_4485"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4505", "Tanh_4522" ], - "name" : "Multiply_4523", - "op" : "Multiply", - "outputs" : ["Multiply_4523"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4485"], - "name" : "Reshape_4486", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4486"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4485", "Reshape_4528" ], - "name" : "Dot_4529", - "op" : "Dot", - "outputs" : ["Dot_4529"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4523", "Reshape_4524" ], - "name" : "Dot_4525", - "op" : "Dot", - "outputs" : ["Dot_4525"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4523", "Reshape_4566" ], - "name" : "Dot_4567", - "op" : "Dot", - "outputs" : ["Dot_4567"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4529", "Broadcast_4530" ], - "name" : "Add_4531", - "op" : "Add", - "outputs" : ["Add_4531"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4525", "Broadcast_4526" ], - "name" : "Add_4527", - "op" : "Add", - "outputs" : ["Add_4527"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4567", "Broadcast_4568" ], - "name" : "Add_4569", - "op" : "Add", - "outputs" : ["Add_4569"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4527", "Add_4531" ], - "name" : "Add_4532", - "op" : "Add", - "outputs" : ["Add_4532"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4565", "Add_4569" ], - "name" : "Add_4570", - "op" : "Add", - "outputs" : ["Add_4570"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4532"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4533", - "op" : "Slice", - "outputs" : ["Slice_4533"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4532"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4534", - "op" : "Slice", - "outputs" : ["Slice_4534"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4532"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4535", - "op" : "Slice", - "outputs" : ["Slice_4535"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4532"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4536", - "op" : "Slice", - "outputs" : ["Slice_4536"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4570"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4571", - "op" : "Slice", - "outputs" : ["Slice_4571"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4570"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4572", - "op" : "Slice", - "outputs" : ["Slice_4572"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4570"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4573", - "op" : "Slice", - "outputs" : ["Slice_4573"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4570"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4574", - "op" : "Slice", - "outputs" : ["Slice_4574"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4533"], - "name" : "Negative_4552", - "op" : "Negative", - "outputs" : ["Negative_4552"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4534"], - "name" : "Negative_4545", - "op" : "Negative", - "outputs" : ["Negative_4545"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4535"], - "name" : "Tanh_4556", - "op" : "Tanh", - "outputs" : ["Tanh_4556"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4536"], - "name" : "Negative_4539", - "op" : "Negative", - "outputs" : ["Negative_4539"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4571"], - "name" : "Negative_4590", - "op" : "Negative", - "outputs" : ["Negative_4590"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4572"], - "name" : "Negative_4583", - "op" : "Negative", - "outputs" : ["Negative_4583"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4573"], - "name" : "Tanh_4594", - "op" : "Tanh", - "outputs" : ["Tanh_4594"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4574"], - "name" : "Negative_4577", - "op" : "Negative", - "outputs" : ["Negative_4577"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4552"], - "name" : "Exp_4553", - "op" : "Exp", - "outputs" : ["Exp_4553"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4545"], - "name" : "Exp_4546", - "op" : "Exp", - "outputs" : ["Exp_4546"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4539"], - "name" : "Exp_4540", - "op" : "Exp", - "outputs" : ["Exp_4540"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4590"], - "name" : "Exp_4591", - "op" : "Exp", - "outputs" : ["Exp_4591"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4583"], - "name" : "Exp_4584", - "op" : "Exp", - "outputs" : ["Exp_4584"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4577"], - "name" : "Exp_4578", - "op" : "Exp", - "outputs" : ["Exp_4578"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4551", "Exp_4553" ], - "name" : "Add_4554", - "op" : "Add", - "outputs" : ["Add_4554"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4544", "Exp_4546" ], - "name" : "Add_4547", - "op" : "Add", - "outputs" : ["Add_4547"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4538", "Exp_4540" ], - "name" : "Add_4541", - "op" : "Add", - "outputs" : ["Add_4541"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4589", "Exp_4591" ], - "name" : "Add_4592", - "op" : "Add", - "outputs" : ["Add_4592"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4582", "Exp_4584" ], - "name" : "Add_4585", - "op" : "Add", - "outputs" : ["Add_4585"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4576", "Exp_4578" ], - "name" : "Add_4579", - "op" : "Add", - "outputs" : ["Add_4579"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4551", "Add_4554" ], - "name" : "Divide_4555", - "op" : "Divide", - "outputs" : ["Divide_4555"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4544", "Add_4547" ], - "name" : "Divide_4548", - "op" : "Divide", - "outputs" : ["Divide_4548"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4538", "Add_4541" ], - "name" : "Divide_4542", - "op" : "Divide", - "outputs" : ["Divide_4542"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4589", "Add_4592" ], - "name" : "Divide_4593", - "op" : "Divide", - "outputs" : ["Divide_4593"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4582", "Add_4585" ], - "name" : "Divide_4586", - "op" : "Divide", - "outputs" : ["Divide_4586"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4576", "Add_4579" ], - "name" : "Divide_4580", - "op" : "Divide", - "outputs" : ["Divide_4580"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4555", "Tanh_4556" ], - "name" : "Multiply_4557", - "op" : "Multiply", - "outputs" : ["Multiply_4557"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4548", "Add_4483" ], - "name" : "Multiply_4549", - "op" : "Multiply", - "outputs" : ["Multiply_4549"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4593", "Tanh_4594" ], - "name" : "Multiply_4595", - "op" : "Multiply", - "outputs" : ["Multiply_4595"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4586", "Add_4521" ], - "name" : "Multiply_4587", - "op" : "Multiply", - "outputs" : ["Multiply_4587"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4549", "Multiply_4557" ], - "name" : "Add_4558", - "op" : "Add", - "outputs" : ["Add_4558"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4587", "Multiply_4595" ], - "name" : "Add_4596", - "op" : "Add", - "outputs" : ["Add_4596"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4558"], - "name" : "Tanh_4559", - "op" : "Tanh", - "outputs" : ["Tanh_4559"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4596"], - "name" : "Tanh_4597", - "op" : "Tanh", - "outputs" : ["Tanh_4597"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4542", "Tanh_4559" ], - "name" : "Multiply_4560", - "op" : "Multiply", - "outputs" : ["Multiply_4560"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4580", "Tanh_4597" ], - "name" : "Multiply_4598", - "op" : "Multiply", - "outputs" : ["Multiply_4598"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4560"], - "name" : "Reshape_4561", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4561"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "inputs" : [ "Multiply_4560", "Reshape_4603" ], - "name" : "Dot_4604", - "op" : "Dot", - "outputs" : ["Dot_4604"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Multiply_4598", "Reshape_4599" ], - "name" : "Dot_4600", - "op" : "Dot", - "outputs" : ["Dot_4600"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4604", "Broadcast_4605" ], - "name" : "Add_4606", - "op" : "Add", - "outputs" : ["Add_4606"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Dot_4600", "Broadcast_4601" ], - "name" : "Add_4602", - "op" : "Add", - "outputs" : ["Add_4602"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : [ "Add_4602", "Add_4606" ], - "name" : "Add_4607", - "op" : "Add", - "outputs" : ["Add_4607"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 800 ]} - }, - { - "inputs" : ["Add_4607"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_4608", - "op" : "Slice", - "outputs" : ["Slice_4608"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 200 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4607"], - "lower_bounds" : [ 0, 200 ], - "name" : "Slice_4609", - "op" : "Slice", - "outputs" : ["Slice_4609"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 400 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4607"], - "lower_bounds" : [ 0, 400 ], - "name" : "Slice_4610", - "op" : "Slice", - "outputs" : ["Slice_4610"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 600 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4607"], - "lower_bounds" : [ 0, 600 ], - "name" : "Slice_4611", - "op" : "Slice", - "outputs" : ["Slice_4611"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 32, 800 ], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4608"], - "name" : "Negative_4627", - "op" : "Negative", - "outputs" : ["Negative_4627"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4609"], - "name" : "Negative_4620", - "op" : "Negative", - "outputs" : ["Negative_4620"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4610"], - "name" : "Tanh_4631", - "op" : "Tanh", - "outputs" : ["Tanh_4631"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Slice_4611"], - "name" : "Negative_4614", - "op" : "Negative", - "outputs" : ["Negative_4614"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4627"], - "name" : "Exp_4628", - "op" : "Exp", - "outputs" : ["Exp_4628"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4620"], - "name" : "Exp_4621", - "op" : "Exp", - "outputs" : ["Exp_4621"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Negative_4614"], - "name" : "Exp_4615", - "op" : "Exp", - "outputs" : ["Exp_4615"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4626", "Exp_4628" ], - "name" : "Add_4629", - "op" : "Add", - "outputs" : ["Add_4629"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4619", "Exp_4621" ], - "name" : "Add_4622", - "op" : "Add", - "outputs" : ["Add_4622"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4613", "Exp_4615" ], - "name" : "Add_4616", - "op" : "Add", - "outputs" : ["Add_4616"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4626", "Add_4629" ], - "name" : "Divide_4630", - "op" : "Divide", - "outputs" : ["Divide_4630"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4619", "Add_4622" ], - "name" : "Divide_4623", - "op" : "Divide", - "outputs" : ["Divide_4623"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Broadcast_4613", "Add_4616" ], - "name" : "Divide_4617", - "op" : "Divide", - "outputs" : ["Divide_4617"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4630", "Tanh_4631" ], - "name" : "Multiply_4632", - "op" : "Multiply", - "outputs" : ["Multiply_4632"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4623", "Add_4558" ], - "name" : "Multiply_4624", - "op" : "Multiply", - "outputs" : ["Multiply_4624"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Multiply_4624", "Multiply_4632" ], - "name" : "Add_4633", - "op" : "Add", - "outputs" : ["Add_4633"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : ["Add_4633"], - "name" : "Tanh_4634", - "op" : "Tanh", - "outputs" : ["Tanh_4634"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "inputs" : [ "Divide_4617", "Tanh_4634" ], - "name" : "Multiply_4635", - "op" : "Multiply", - "outputs" : ["Multiply_4635"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 200 ]} - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_4635"], - "name" : "Reshape_4636", - "op" : "Reshape", - "output_shape" : [ 32, 1, 200 ], - "outputs" : ["Reshape_4636"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 1, 200 ]} - }, - { - "axis" : 1, - "inputs" : [ - "Reshape_211", "Reshape_286", "Reshape_361", "Reshape_436", - "Reshape_511", "Reshape_586", "Reshape_661", "Reshape_736", - "Reshape_811", "Reshape_886", "Reshape_961", "Reshape_1036", - "Reshape_1111", "Reshape_1186", "Reshape_1261", "Reshape_1336", - "Reshape_1411", "Reshape_1486", "Reshape_1561", "Reshape_1636", - "Reshape_1711", "Reshape_1786", "Reshape_1861", "Reshape_1936", - "Reshape_2011", "Reshape_2086", "Reshape_2161", "Reshape_2236", - "Reshape_2311", "Reshape_2386", "Reshape_2461", "Reshape_2536", - "Reshape_2611", "Reshape_2686", "Reshape_2761", "Reshape_2836", - "Reshape_2911", "Reshape_2986", "Reshape_3061", "Reshape_3136", - "Reshape_3211", "Reshape_3286", "Reshape_3361", "Reshape_3436", - "Reshape_3511", "Reshape_3586", "Reshape_3661", "Reshape_3736", - "Reshape_3811", "Reshape_3886", "Reshape_3961", "Reshape_4036", - "Reshape_4111", "Reshape_4186", "Reshape_4261", "Reshape_4336", - "Reshape_4411", "Reshape_4486", "Reshape_4561", "Reshape_4636" - ], - "name" : "Concat_4637", - "op" : "Concat", - "outputs" : ["Concat_4637"], - "value_type" : {"element_type" : "float", "shape" : [ 32, 60, 200 ]} - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Concat_4637"], - "name" : "Reshape_4638", - "op" : "Reshape", - "output_shape" : [ 1920, 200 ], - "outputs" : ["Reshape_4638"], - "value_type" : {"element_type" : "float", "shape" : [ 1920, 200 ]} - }, - { - "inputs" : [ "Reshape_4638", "Reshape_4641" ], - "name" : "Dot_4642", - "op" : "Dot", - "outputs" : ["Dot_4642"], - "value_type" : {"element_type" : "float", "shape" : [ 1920, 10000 ]} - }, - { - "inputs" : [ "Dot_4642", "Broadcast_4643" ], - "name" : "Add_4644", - "op" : "Add", - "outputs" : ["Add_4644"], - "value_type" : {"element_type" : "float", "shape" : [ 1920, 10000 ]} - } - ], - "parameters" : [ - "Parameter_0", "Parameter_121", "Parameter_122", "Parameter_129", - "Parameter_130", "Parameter_166", "Parameter_167", "Parameter_174", - "Parameter_175", "Parameter_4639", "Parameter_4640" - ], - "result" : [ - "Add_4644", - "Reshape_211", - "Reshape_361", - "Reshape_436", - "Reshape_511", - "Reshape_586", - "Reshape_661", - "Reshape_736", - "Reshape_811", - "Reshape_886", - "Reshape_961", - "Reshape_1111", - "Reshape_1186", - "Reshape_1261", - "Reshape_1336", - "Reshape_1486", - "Reshape_1561", - "Reshape_1636", - "Reshape_1711", - "Reshape_1861", - "Reshape_2236", - "Reshape_2536", - "Reshape_2611", - "Reshape_2686", - "Reshape_2761", - "Reshape_2836", - "Reshape_2911", - "Reshape_2986", - "Reshape_3061", - "Reshape_3211", - "Reshape_3286", - "Reshape_3361", - "Reshape_3436", - "Reshape_3511", - "Reshape_3586", - "Reshape_3661", - "Reshape_3736", - "Reshape_3961", - "Reshape_4036", - "Reshape_4111", - "Reshape_4186", - "Reshape_4261", - "Reshape_4486", - "Reshape_4561", - "Add_4616", - "Divide_4617", - "Constant_4618", - "Broadcast_4619", - "Negative_4620", - "Add_4622", - "Divide_4623", - "Multiply_4624", - "Constant_4625", - "Broadcast_4626", - "Slice_4608", - "Negative_4627", - "Exp_4628", - "Divide_4630", - "Slice_4574", - "Add_4579", - "Divide_4580", - "Constant_4581", - "Broadcast_4582", - "Exp_4584", - "Add_4585", - "Divide_4586", - "Multiply_4587", - "Slice_4571", - "Exp_4591", - "Divide_4593", - "Slice_119", - "Reshape_120", - "Reshape_4562", - "Dot_4563", - "Broadcast_4568", - "Add_4570", - "Multiply_4595", - "Tanh_4597", - "Reshape_4599", - "Dot_4600", - "Add_4602", - "Slice_4536", - "Exp_4540", - "Constant_4543", - "Broadcast_4544", - "Negative_4545", - "Divide_4548", - "Exp_4553", - "Add_4554", - "Divide_4555", - "Broadcast_4501", - "Slice_4499", - "Negative_4502", - "Exp_4503", - "Add_4504", - "Constant_4506", - "Negative_4508", - "Divide_4511", - "Multiply_4512", - "Negative_4515", - "Slice_117", - "Reshape_118", - "Reshape_4487", - "Add_4490", - "Reshape_4491", - "Dot_4492", - "Broadcast_4493", - "Add_4495", - "Slice_4498", - "Add_4521", - "Multiply_4523", - "Reshape_4524", - "Add_4527", - "Broadcast_4463", - "Slice_4461", - "Negative_4464", - "Exp_4465", - "Slice_4459", - "Negative_4470", - "Multiply_4474", - "Constant_4475", - "Slice_4458", - "Negative_4477", - "Exp_4478", - "Add_4479", - "Slice_4424", - "Exp_4428", - "Constant_4431", - "Broadcast_4432", - "Slice_4422", - "Negative_4433", - "Divide_4436", - "Multiply_4437", - "Broadcast_4439", - "Negative_4440", - "Exp_4441", - "Add_4442", - "Divide_4443", - "Slice_115", - "Reshape_116", - "Reshape_4412", - "Add_4415", - "Reshape_4416", - "Dot_4417", - "Broadcast_4418", - "Add_4419", - "Add_4420", - "Add_4446", - "Tanh_4447", - "Multiply_4448", - "Reshape_4449", - "Constant_4387", - "Broadcast_4388", - "Exp_4390", - "Divide_4392", - "Negative_4395", - "Divide_4398", - "Multiply_4399", - "Constant_4400", - "Slice_4383", - "Negative_4402", - "Exp_4403", - "Add_4404", - "Slice_4349", - "Negative_4352", - "Exp_4353", - "Add_4354", - "Divide_4355", - "Constant_4356", - "Slice_4347", - "Negative_4358", - "Divide_4361", - "Multiply_4362", - "Exp_4366", - "Add_4367", - "Divide_4368", - "Slice_113", - "Reshape_114", - "Add_4340", - "Reshape_4341", - "Add_4345", - "Slice_4348", - "Tanh_4369", - "Multiply_4370", - "Add_4371", - "Tanh_4372", - "Multiply_4373", - "Reshape_4374", - "Dot_4375", - "Broadcast_4376", - "Exp_4315", - "Divide_4317", - "Constant_4318", - "Negative_4320", - "Divide_4323", - "Multiply_4324", - "Constant_4325", - "Broadcast_4326", - "Slice_4308", - "Exp_4328", - "Add_4329", - "Divide_4330", - "Exp_4278", - "Add_4279", - "Constant_4281", - "Broadcast_4282", - "Divide_4286", - "Multiply_4287", - "Constant_4288", - "Broadcast_4289", - "Slice_4271", - "Negative_4290", - "Divide_4293", - "Slice_111", - "Reshape_112", - "Reshape_4262", - "Dot_4263", - "Broadcast_4264", - "Add_4265", - "Reshape_4266", - "Broadcast_4268", - "Add_4269", - "Add_4270", - "Tanh_4297", - "Multiply_4298", - "Reshape_4299", - "Dot_4300", - "Broadcast_4301", - "Exp_4240", - "Divide_4242", - "Constant_4243", - "Negative_4245", - "Exp_4246", - "Multiply_4249", - "Constant_4250", - "Broadcast_4251", - "Slice_4233", - "Negative_4252", - "Exp_4253", - "Add_4254", - "Divide_4255", - "Negative_4202", - "Exp_4203", - "Add_4204", - "Broadcast_4514", - "Divide_4205", - "Constant_4206", - "Broadcast_4207", - "Negative_4208", - "Exp_4209", - "Add_4210", - "Divide_4211", - "Constant_4213", - "Negative_4215", - "Exp_4216", - "Add_4217", - "Slice_109", - "Add_4190", - "Dot_4192", - "Broadcast_4193", - "Add_4195", - "Slice_4198", - "Multiply_4220", - "Add_4221", - "Tanh_4222", - "Reshape_4224", - "Slice_4421", - "Broadcast_4163", - "Negative_4164", - "Exp_4165", - "Broadcast_4476", - "Divide_4167", - "Constant_4168", - "Negative_4170", - "Exp_4171", - "Divide_4173", - "Multiply_4174", - "Constant_4175", - "Broadcast_4176", - "Slice_4158", - "Negative_4177", - "Exp_4178", - "Add_4179", - "Slice_4384", - "Broadcast_4126", - "Exp_4128", - "Divide_4130", - "Constant_4131", - "Broadcast_4132", - "Slice_4122", - "Negative_4133", - "Exp_4134", - "Add_4135", - "Divide_4136", - "Constant_4138", - "Broadcast_4139", - "Slice_4121", - "Negative_4140", - "Add_4142", - "Divide_4143", - "Reshape_108", - "Reshape_4112", - "Broadcast_4114", - "Add_4115", - "Broadcast_4118", - "Add_4120", - "Multiply_4145", - "Add_4146", - "Multiply_4148", - "Reshape_4149", - "Broadcast_4088", - "Negative_4089", - "Exp_4090", - "Add_4091", - "Broadcast_4401", - "Divide_4092", - "Constant_4093", - "Negative_4095", - "Exp_4096", - "Multiply_4099", - "Constant_4100", - "Add_4104", - "Slice_4309", - "Broadcast_4051", - "Slice_4049", - "Negative_4052", - "Exp_4053", - "Add_4054", - "Broadcast_4364", - "Divide_4055", - "Constant_4056", - "Add_4060", - "Divide_4061", - "Multiply_4062", - "Constant_4063", - "Broadcast_4064", - "Slice_4046", - "Exp_4066", - "Add_4067", - "Divide_4068", - "Slice_105", - "Reshape_4037", - "Dot_4038", - "Broadcast_4039", - "Add_4040", - "Broadcast_4043", - "Add_4045", - "Slice_4048", - "Multiply_4070", - "Add_4071", - "Tanh_4072", - "Multiply_4073", - "Reshape_4074", - "Dot_4075", - "Add_4077", - "Broadcast_4013", - "Negative_4014", - "Exp_4015", - "Divide_4017", - "Constant_4018", - "Negative_4020", - "Divide_4023", - "Constant_4025", - "Broadcast_4026", - "Negative_4027", - "Divide_4030", - "Slice_4234", - "Broadcast_3976", - "Slice_3974", - "Negative_3977", - "Exp_3978", - "Add_3979", - "Divide_3980", - "Constant_3981", - "Negative_3983", - "Constant_3988", - "Broadcast_3989", - "Exp_3991", - "Add_3992", - "Divide_3993", - "Slice_103", - "Reshape_104", - "Reshape_3962", - "Dot_3963", - "Broadcast_3964", - "Add_3965", - "Reshape_3966", - "Broadcast_3968", - "Add_3969", - "Slice_3973", - "Multiply_3995", - "Add_3996", - "Tanh_3997", - "Multiply_3998", - "Reshape_3999", - "Dot_4000", - "Broadcast_4001", - "Broadcast_3938", - "Slice_4609", - "Negative_3939", - "Exp_3940", - "Divide_3942", - "Constant_3943", - "Negative_3945", - "Divide_3948", - "Multiply_3949", - "Constant_3950", - "Broadcast_3951", - "Slice_3933", - "Negative_3952", - "Add_3954", - "Divide_3955", - "Constant_3900", - "Broadcast_3901", - "Slice_3899", - "Slice_4572", - "Negative_3902", - "Exp_3903", - "Divide_3905", - "Constant_3906", - "Broadcast_3907", - "Slice_3897", - "Negative_3908", - "Add_3910", - "Divide_3911", - "Constant_3913", - "Broadcast_3914", - "Slice_3896", - "Add_3917", - "Divide_3918", - "Slice_101", - "Reshape_3887", - "Dot_3888", - "Add_3890", - "Reshape_3891", - "Dot_3892", - "Add_3894", - "Add_3895", - "Slice_3898", - "Tanh_3919", - "Tanh_3922", - "Multiply_3923", - "Dot_3925", - "Broadcast_3926", - "Add_3927", - "Constant_3862", - "Slice_3861", - "Add_3866", - "Divide_3867", - "Constant_3868", - "Negative_3870", - "Exp_3871", - "Divide_3873", - "Constant_3875", - "Slice_3858", - "Negative_3877", - "Exp_3878", - "Dot_4188", - "Add_3879", - "Broadcast_4189", - "Divide_3880", - "Broadcast_3826", - "Slice_3824", - "Exp_3828", - "Constant_3831", - "Slice_3822", - "Negative_3833", - "Exp_3834", - "Add_3835", - "Constant_3838", - "Slice_3821", - "Exp_3841", - "Add_3842", - "Slice_99", - "Dot_3813", - "Add_3815", - "Dot_3817", - "Broadcast_3818", - "Add_3819", - "Add_3820", - "Slice_3823", - "Tanh_3844", - "Add_3846", - "Multiply_3848", - "Reshape_3849", - "Broadcast_3851", - "Add_3852", - "Constant_3787", - "Slice_3786", - "Negative_3795", - "Exp_3796", - "Divide_3798", - "Negative_3802", - "Exp_3803", - "Add_3804", - "Divide_3805", - "Constant_3750", - "Exp_3753", - "Add_3754", - "Divide_3755", - "Constant_3756", - "Broadcast_3757", - "Slice_3747", - "Reshape_2161", - "Negative_3758", - "Exp_3759", - "Add_3760", - "Divide_3761", - "Constant_3763", - "Broadcast_3764", - "Exp_3766", - "Add_3767", - "Divide_3768", - "Negative_3915", - "Slice_97", - "Reshape_98", - "Reshape_3737", - "Dot_3738", - "Broadcast_3739", - "Add_3740", - "Reshape_3741", - "Slice_3748", - "Add_3771", - "Multiply_3773", - "Reshape_3774", - "Add_3777", - "Constant_3712", - "Broadcast_3713", - "Slice_3711", - "Dot_4488", - "Exp_3715", - "Add_3716", - "Constant_3718", - "Broadcast_3719", - "Add_3722", - "Divide_3723", - "Constant_3725", - "Broadcast_3726", - "Negative_3727", - "Exp_3728", - "Add_3729", - "Divide_3730", - "Constant_3675", - "Exp_3678", - "Add_3679", - "Divide_3680", - "Constant_3681", - "Slice_3672", - "Negative_3683", - "Exp_3684", - "Add_3685", - "Constant_3688", - "Broadcast_3689", - "Exp_3691", - "Divide_3693", - "Reshape_96", - "Dot_3663", - "Broadcast_3664", - "Add_3665", - "Broadcast_3668", - "Slice_3673", - "Add_3797", - "Tanh_3694", - "Add_3696", - "Multiply_3698", - "Reshape_3699", - "Dot_3700", - "Broadcast_3701", - "Add_3702", - "Constant_3637", - "Broadcast_3638", - "Slice_3636", - "Dot_1342", - "Add_1344", - "Add_1345", - "Slice_523", - "Broadcast_3293", - "Slice_3746", - "Broadcast_1376", - "Negative_1314", - "Exp_421", - "Add_2704", - "Divide_1323", - "Negative_1989", - "Broadcast_1276", - "Constant_2737", - "Multiply_845", - "Add_1231", - "Add_1285", - "Broadcast_1289", - "Divide_1293", - "Dot_1263", - "Tanh_3544", - "Dot_1267", - "Broadcast_3218", - "Add_3670", - "Dot_1300", - "Tanh_3581", - "Slice_1236", - "Add_3107", - "Negative_1239", - "Constant_1243", - "Broadcast_1244", - "Add_808", - "Exp_3115", - "Exp_1246", - "Negative_1502", - "Divide_1248", - "Add_504", - "Constant_1206", - "Slice_1197", - "Tanh_1556", - "Add_2094", - "Negative_1208", - "Divide_1211", - "Negative_1877", - "Broadcast_1214", - "Divide_1218", - "Add_627", - "Add_2935", - "Dot_1188", - "Broadcast_4076", - "Slice_674", - "Tanh_3469", - "Dot_1192", - "Add_1194", - "Dot_4338", - "Add_1195", - "Tanh_1219", - "Add_1221", - "Broadcast_3143", - "Tanh_1222", - "Negative_4314", - "Multiply_1223", - "Constant_3350", - "Reshape_1224", - "Divide_3505", - "Broadcast_1163", - "Broadcast_701", - "Slice_1161", - "Add_3032", - "Negative_1164", - "Add_4541", - "Dot_779", - "Divide_1173", - "Slice_3710", - "Negative_1127", - "Add_279", - "Slice_1122", - "Add_2019", - "Divide_1136", - "Add_519", - "Slice_1121", - "Slice_107", - "Broadcast_2069", - "Exp_1141", - "Add_2860", - "Slice_27", - "Add_4569", - "Dot_1117", - "Multiply_1145", - "Add_1146", - "Divide_2043", - "Broadcast_3068", - "Negative_4239", - "Multiply_1148", - "Multiply_2045", - "Exp_1128", - "Broadcast_4351", - "Broadcast_2239", - "Multiply_537", - "Negative_1140", - "Add_1152", - "Multiply_3735", - "Reshape_2199", - "Exp_1090", - "Constant_562", - "Exp_1103", - "Reshape_3512", - "Constant_1050", - "Tanh_356", - "Dot_177", - "Exp_978", - "Reshape_1337", - "Divide_430", - "Add_1944", - "Negative_1058", - "Tanh_544", - "Exp_1059", - "Exp_1203", - "Negative_1215", - "Reshape_3924", - "Multiply_470", - "Add_1227", - "Add_1060", - "Add_3546", - "Constant_4513", - "Divide_1061", - "Broadcast_1755", - "Divide_3267", - "Exp_1291", - "Reshape_2803", - "Constant_3418", - "Slice_138", - "Negative_1065", - "Divide_1068", - "Add_2785", - "Reshape_26", - "Reshape_1037", - "Dot_1038", - "Add_4285", - "Broadcast_1039", - "Constant_4393", - "Add_1044", - "Reshape_1036", - "Negative_2633", - "Divide_1968", - "Reshape_1074", - "Exp_534", - "Multiply_885", - "Slice_2961", - "Divide_4518", - "Negative_1014", - "Constant_1018", - "Exp_2890", - "Exp_1021", - "Dot_1713", - "Add_1022", - "Reshape_2124", - "Reshape_2616", - "Broadcast_976", - "Exp_1284", - "Slice_3411", - "Negative_983", - "Negative_977", - "Dot_1413", - "Broadcast_989", - "Negative_3270", - "Slice_971", - "Negative_990", - "Add_4097", - "Broadcast_2963", - "Exp_1171", - "Negative_1427", - "Negative_2070", - "Add_969", - "Slice_1046", - "Add_1097", - "Tanh_994", - "Exp_428", - "Tanh_997", - "Reshape_2311", - "Constant_1950", - "Broadcast_3539", - "Add_4029", - "Constant_937", - "Broadcast_938", - "Reshape_2912", - "Exp_4028", - "Constant_988", - "Add_3904", - "Slice_23", - "Exp_940", - "Add_941", - "Add_3171", - "Divide_942", - "Slice_934", - "Negative_2190", - "Exp_946", - "Exp_2740", - "Divide_948", - "Reshape_2128", - "Tanh_4409", - "Multiply_1370", - "Divide_955", - "Broadcast_3439", - "Tanh_1369", - "Reshape_999", - "Add_2383", - "Dot_2800", - "Divide_3455", - "Broadcast_1101", - "Reshape_38", - "Add_1269", - "Exp_1165", - "Negative_1177", - "Negative_902", - "Dot_1979", - "Broadcast_914", - "Divide_918", - "Tanh_2456", - "Negative_4590", - "Constant_1138", - "Broadcast_1830", - "Tanh_3431", - "Add_4494", - "Reshape_887", - "Broadcast_889", - "Add_890", - "Reshape_891", - "Dot_892", - "Add_894", - "Exp_1278", - "Reshape_100", - "Negative_1290", - "Add_1135", - "Add_3621", - "Reshape_924", - "Constant_1693", - "Exp_2221", - "Dot_2913", - "Broadcast_869", - "Dot_329", - "Broadcast_1664", - "Slice_859", - "Add_1654", - "Tanh_919", - "Add_2206", - "Broadcast_1051", - "Slice_1309", - "Broadcast_2257", - "Add_3385", - "Reshape_324", - "Broadcast_1582", - "Multiply_3762", - "Broadcast_876", - "Slice_824", - "Constant_1363", - "Broadcast_3682", - "Add_1982", - "Constant_831", - "Divide_1143", - "Negative_833", - "Broadcast_901", - "Negative_2602", - "Exp_834", - "Slice_2321", - "Slice_2733", - "Constant_838", - "Broadcast_555", - "Slice_61", - "Add_557", - "Reshape_1712", - "Broadcast_3276", - "Slice_4346", - "Add_842", - "Reshape_812", - "Multiply_349", - "Broadcast_814", - "Reshape_816", - "Tanh_844", - "Add_4547", - "Slice_3671", - "Broadcast_1301", - "Tanh_847", - "Multiply_848", - "Constant_2181", - "Dot_2950", - "Broadcast_968", - "Negative_1277", - "Constant_787", - "Dot_3479", - "Divide_1017", - "Broadcast_1326", - "Add_2095", - "Multiply_3274", - "Broadcast_788", - "Divide_792", - "Multiply_2945", - "Constant_793", - "Slice_784", - "Slice_3785", - "Exp_796", - "Add_797", - "Slice_2771", - "Multiply_424", - "Divide_993", - "Negative_789", - "Add_4466", - "Negative_2302", - "Broadcast_801", - "Broadcast_1801", - "Broadcast_1501", - "Slice_3449", - "Divide_805", - "Slice_858", - "Tanh_3319", - "Broadcast_751", - "Slice_3597", - "Add_4044", - "Broadcast_2189", - "Add_3317", - "Add_754", - "Slice_1985", - "Tanh_1447", - "Divide_755", - "Constant_756", - "Multiply_4212", - "Exp_759", - "Broadcast_4226", - "Slice_1083", - "Add_760", - "Negative_752", - "Divide_2118", - "Tanh_881", - "Divide_3393", - "Broadcast_764", - "Divide_2636", - "Slice_3972", - "Negative_3302", - "Slice_746", - "Reshape_1112", - "Negative_765", - "Add_482", - "Slice_4610", - "Add_767", - "Reshape_286", - "Divide_3380", - "Broadcast_739", - "Broadcast_743", - "Exp_1846", - "Dot_2538", - "Add_204", - "Add_3154", - "Add_745", - "Divide_205", - "Constant_4425", - "Broadcast_1643", - "Divide_3155", - "Add_2410", - "Broadcast_713", - "Broadcast_1714", - "Add_4152", - "Add_3070", - "Exp_715", - "Slice_2997", - "Tanh_3209", - "Add_4296", - "Add_2441", - "Multiply_724", - "Add_729", - "Negative_3720", - "Add_679", - "Divide_717", - "Constant_681", - "Broadcast_3944", - "Exp_2553", - "Negative_4058", - "Slice_708", - "Exp_4291", - "Negative_683", - "Divide_3830", - "Divide_686", - "Constant_688", - "Negative_2483", - "Negative_677", - "Reshape_1191", - "Slice_671", - "Negative_690", - "Add_692", - "Add_1795", - "Slice_19", - "Divide_693", - "Slice_1796", - "Broadcast_2744", - "Slice_15", - "Broadcast_664", - "Constant_2331", - "Add_2897", - "Broadcast_3105", - "Constant_2413", - "Add_670", - "Broadcast_4414", - "Slice_1271", - "Broadcast_2219", - "Slice_89", - "Multiply_698", - "Exp_1240", - "Negative_1252", - "Add_702", - "Constant_637", - "Broadcast_4451", - "Slice_1308", - "Broadcast_638", - "Slice_636", - "Divide_1842", - "Exp_640", - "Broadcast_4305", - "Add_180", - "Negative_645", - "Divide_2748", - "Slice_1310", - "Exp_646", - "Add_2672", - "Reshape_441", - "Divide_648", - "Broadcast_651", - "Constant_4363", - "Negative_652", - "Exp_653", - "Add_2320", - "Exp_2116", - "Tanh_1294", - "Constant_763", - "Broadcast_2276", - "Broadcast_607", - "Slice_2172", - "Reshape_3666", - "Exp_2378", - "Exp_609", - "Add_610", - "Multiply_612", - "Slice_2433", - "Multiply_3282", - "Add_2882", - "Negative_4327", - "Exp_616", - "Slice_410", - "Tanh_2719", - "Broadcast_4155", - "Negative_1202", - "Negative_148", - "Slice_13", - "Divide_196", - "Add_1429", - "Reshape_14", - "Add_3557", - "Divide_145", - "Dot_3438", - "Slice_1686", - "Reshape_587", - "Negative_2408", - "Reshape_591", - "Exp_2566", - "Broadcast_593", - "Tanh_3956", - "Slice_3183", - "Slice_634", - "Slice_598", - "Tanh_619", - "Add_1466", - "Multiply_623", - "Dot_1863", - "Dot_625", - "Divide_2036", - "Broadcast_563", - "Tanh_1334", - "Constant_3793", - "Slice_597", - "Exp_1803", - "Broadcast_1357", - "Add_566", - "Constant_725", - "Slice_95", - "Divide_873", - "Reshape_666", - "Add_2110", - "Broadcast_569", - "Multiply_3057", - "Slice_559", - "Divide_1205", - "Exp_2341", - "Add_572", - "Negative_3495", - "Reshape_110", - "Broadcast_576", - "Exp_1321", - "Dot_2013", - "Constant_4575", - "Constant_3081", - "Negative_1020", - "Negative_577", - "Exp_578", - "Broadcast_526", - "Slice_524", - "Exp_528", - "Add_529", - "Divide_530", - "Tanh_2044", - "Reshape_4191", - "Constant_531", - "Broadcast_2301", - "Slice_522", - "Exp_728", - "Add_535", - "Divide_536", - "Multiply_1973", - "Multiply_2870", - "Constant_538", - "Slice_3410", - "Tanh_2872", - "Negative_527", - "Tanh_656", - "Constant_3425", - "Broadcast_539", - "Constant_2668", - "Negative_540", - "Reshape_12", - "Dot_513", - "Divide_230", - "Slice_3298", - "Broadcast_514", - "Divide_723", - "Reshape_516", - "Broadcast_518", - "Add_520", - "Constant_2700", - "Divide_1023", - "Multiply_545", - "Add_546", - "Exp_4516", - "Tanh_547", - "Broadcast_3214", - "Divide_573", - "Exp_2753", - "Exp_4621", - "Reshape_549", - "Multiply_574", - "Dot_550", - "Broadcast_551", - "Slice_139", - "Multiply_1062", - "Multiply_1932", - "Constant_487", - "Dot_4154", - "Broadcast_488", - "Exp_490", - "Add_2158", - "Add_1377", - "Constant_2325", - "Divide_492", - "Negative_495", - "Negative_939", - "Slice_296", - "Broadcast_951", - "Exp_496", - "Tanh_3394", - "Dot_367", - "Add_2394", - "Constant_500", - "Constant_2475", - "Broadcast_4339", - "Slice_1196", - "Broadcast_2144", - "Reshape_20", - "Exp_4059", - "Negative_502", - "Divide_1811", - "Broadcast_451", - "Reshape_1453", - "Constant_2450", - "Slice_3147", - "Add_1210", - "Constant_456", - "Constant_613", - "Divide_2793", - "Exp_3203", - "Broadcast_2693", - "Negative_1920", - "Broadcast_2314", - "Slice_1233", - "Negative_458", - "Exp_1434", - "Broadcast_1613", - "Constant_463", - "Broadcast_2438", - "Add_467", - "Slice_9", - "Reshape_437", - "Multiply_462", - "Dot_438", - "Add_647", - "Add_440", - "Reshape_1374", - "Add_2758", - "Divide_3655", - "Reshape_4566", - "Dot_442", - "Dot_4113", - "Exp_3340", - "Broadcast_443", - "Broadcast_4151", - "Slice_1008", - "Add_445", - "Add_471", - "Add_2267", - "Tanh_472", - "Divide_498", - "Negative_1089", - "Exp_3953", - "Multiply_499", - "Broadcast_1526", - "Dot_475", - "Broadcast_476", - "Add_3745", - "Dot_1375", - "Tanh_3656", - "Slice_3297", - "Broadcast_4526", - "Slice_1383", - "Add_556", - "Tanh_3134", - "Divide_417", - "Reshape_1187", - "Slice_936", - "Add_396", - "Add_4592", - "Reshape_1449", - "Slice_409", - "Negative_420", - "Constant_718", - "Divide_2780", - "Add_422", - "Tanh_3884", - "Constant_950", - "Tanh_3697", - "Exp_2821", - "Divide_423", - "Broadcast_832", - "Add_3857", - "Constant_425", - "Broadcast_2093", - "Exp_909", - "Broadcast_376", - "Dot_325", - "Slice_973", - "Tanh_3247", - "Constant_1168", - "Constant_4162", - "Slice_709", - "Reshape_2462", - "Broadcast_1380", - "Add_1790", - "Negative_3990", - "Constant_381", - "Add_2485", - "Slice_899", - "Multiply_4257", - "Constant_2437", - "Slice_408", - "Slice_372", - "Constant_388", - "Divide_1055", - "Broadcast_1364", - "Negative_390", - "Divide_1030", - "Slice_1648", - "Divide_2418", - "Negative_1102", - "Constant_3163", - "Broadcast_2018", - "Negative_1245", - "Multiply_3885", - "Reshape_8", - "Reshape_362", - "Negative_915", - "Broadcast_364", - "Broadcast_3263", - "Negative_1133", - "Negative_2777", - "Dot_3213", - "Constant_1063", - "Negative_908", - "Multiply_162", - "Broadcast_2318", - "Exp_3909", - "Slice_972", - "Add_1408", - "Constant_2638", - "Slice_373", - "Add_3246", - "Multiply_395", - "Divide_1317", - "Multiply_995", - "Constant_2225", - "Add_3327", - "Constant_1318", - "Add_996", - "Broadcast_2918", - "Multiply_398", - "Reshape_399", - "Divide_3305", - "Dot_963", - "Negative_1689", - "Reshape_24", - "Exp_2065", - "Constant_2068", - "Broadcast_964", - "Slice_4008", - "Broadcast_192", - "Broadcast_401", - "Add_2185", - "Divide_342", - "Add_2554", - "Broadcast_344", - "Divide_3198", - "Slice_861", - "Slice_334", - "Tanh_1706", - "Dot_925", - "Add_654", - "Broadcast_757", - "Constant_350", - "Add_927", - "Broadcast_4394", - "Add_3467", - "Exp_3003", - "Negative_352", - "Broadcast_726", - "Constant_2188", - "Divide_4280", - "Dot_517", - "Constant_493", - "Broadcast_301", - "Multiply_2457", - "Dot_250", - "Multiply_387", - "Dot_363", - "Exp_303", - "Constant_4438", - "Reshape_3253", - "Divide_1130", - "Add_304", - "Constant_306", - "Broadcast_307", - "Add_866", - "Slice_297", - "Exp_2478", - "Negative_308", - "Divide_611", - "Add_3872", - "Tanh_3769", - "Broadcast_314", - "Negative_315", - "Add_1517", - "Dot_2542", - "Reshape_287", - "Add_4629", - "Constant_1125", - "Negative_3083", - "Negative_1283", - "Exp_3241", - "Tanh_2006", - "Multiply_837", - "Reshape_4528", - "Divide_4098", - "Exp_903", - "Exp_3016", - "Multiply_2082", - "Negative_3645", - "Add_2083", - "Tanh_2156", - "Slice_1797", - "Negative_720", - "Add_257", - "Divide_830", - "Reshape_2203", - "Tanh_4484", - "Add_2207", - "Constant_275", - "Add_1504", - "Multiply_998", - "Add_590", - "Multiply_435", - "Exp_309", - "Multiply_2157", - "Broadcast_3269", - "Multiply_1260", - "Add_2233", - "Constant_3463", - "Constant_1025", - "Reshape_2278", - "Tanh_1934", - "Add_2683", - "Reshape_1299", - "Divide_3580", - "Dot_704", - "Add_1579", - "Multiply_1137", - "Add_2308", - "Constant_3538", - "Tanh_161", - "Exp_3790", - "Add_1420", - "Add_4166", - "Constant_868", - "Constant_1663", - "Broadcast_4057", - "Add_552", - "Add_2357", - "Multiply_3810", - "Add_407", - "Multiply_2382", - "Reshape_2428", - "Dot_2429", - "Add_1404", - "Add_2431", - "Broadcast_2482", - "Multiply_312", - "Slice_1047", - "Slice_3108", - "Reshape_3853", - "Broadcast_413", - "Tanh_1034", - "Exp_228", - "Slice_1461", - "Tanh_2306", - "Add_497", - "Add_2908", - "Reshape_1524", - "Add_2432", - "Exp_3534", - "Slice_896", - "Tanh_2906", - "Slice_2547", - "Slice_4496", - "Broadcast_4238", - "Slice_2435", - "Exp_2440", - "Divide_3355", - "Parameter_4639", - "Broadcast_2505", - "Constant_1813", - "Add_1907", - "Add_4194", - "Exp_3009", - "Reshape_2503", - "Broadcast_4101", - "Dot_2504", - "Exp_1015", - "Add_1479", - "Negative_3690", - "Multiply_2299", - "Negative_2677", - "Constant_875", - "Divide_348", - "Add_1720", - "Add_2507", - "Exp_3609", - "Add_1804", - "Slice_1872", - "Multiply_4260", - "Broadcast_4313", - "Negative_602", - "Slice_2510", - "Dot_4342", - "Exp_1096", - "Tanh_1972", - "Add_4292", - "Reshape_1149", - "Divide_3430", - "Constant_1325", - "Negative_1658", - "Negative_4127", - "Add_2427", - "Constant_3375", - "Reshape_2578", - "Constant_152", - "Slice_2585", - "Add_932", - "Tanh_2606", - "Exp_1328", - "Multiply_657", - "Add_3144", - "Constant_913", - "Add_2608", - "Constant_575", - "Slice_83", - "Reshape_2653", - "Constant_3268", - "Broadcast_2655", - "Exp_415", - "Constant_1963", - "Add_3065", - "Add_1532", - "Add_2657", - "Reshape_4187", - "Tanh_734", - "Slice_2660", - "Divide_567", - "Add_2004", - "Tanh_2681", - "Broadcast_3776", - "Parameter_166", - "Dot_124", - "Add_3219", - "Negative_533", - "Reshape_2728", - "Slice_446", - "Broadcast_239", - "Multiply_2160", - "Reshape_699", - "Add_1607", - "Add_2732", - "Exp_603", - "Divide_655", - "Reshape_1866", - "Add_835", - "Add_2822", - "Add_1606", - "Add_354", - "Divide_1242", - "Add_3406", - "Slice_2509", - "Broadcast_3457", - "Slice_3", - "Broadcast_2805", - "Broadcast_1114", - "Broadcast_4507", - "Negative_952", - "Add_2807", - "Broadcast_4613", - "Slice_2810", - "Add_2833", - "Tanh_2534", - "Slice_299", - "Reshape_2878", - "Broadcast_930", - "Exp_1366", - "Slice_49", - "Constant_3493", - "Broadcast_2430", - "Add_1832", - "Slice_137", - "Exp_2934", - "Negative_827", - "Broadcast_839", - "Tanh_3659", - "Exp_384", - "Tanh_2081", - "Add_2619", - "Reshape_2953", - "Negative_465", - "Dot_592", - "Reshape_3249", - "Constant_568", - "Slice_521", - "Reshape_624", - "Broadcast_4169", - "Divide_768", - "Exp_2778", - "Add_2281", - "Constant_3043", - "Reshape_3812", - "Broadcast_2730", - "Constant_2038", - "Add_3140", - "Add_2132", - "Multiply_773", - "Tanh_434", - "Broadcast_4551", - "Exp_841", - "Dot_2954", - "Tanh_2831", - "Slice_4533", - "Slice_2472", - "Slice_599", - "Broadcast_1651", - "Slice_635", - "Constant_1687", - "Dot_1000", - "Add_2957", - "Exp_4321", - "Dot_2054", - "Reshape_741", - "Slice_2960", - "Constant_3800", - "Add_604", - "Reshape_3811", - "Constant_3450", - "Reshape_3028", - "Dot_3029", - "Multiply_2824", - "Add_594", - "Broadcast_3030", - "Add_1108", - "Constant_2338", - "Add_1241", - "Broadcast_1176", - "Add_3031", - "Add_2329", - "Slice_3035", - "Multiply_2307", - "Reshape_3103", - "Add_947", - "Broadcast_2955", - "Broadcast_338", - "Add_1033", - "Add_3365", - "Slice_3110", - "Divide_986", - "Reshape_4041", - "Broadcast_794", - "Multiply_3987", - "Add_171", - "Add_2721", - "Reshape_3178", - "Negative_877", - "Tanh_3056", - "Broadcast_326", - "Tanh_1072", - "Add_3133", - "Reshape_1749", - "Add_3181", - "Broadcast_3232", - "Tanh_3206", - "Tanh_394", - "Add_3369", - "Exp_346", - "Reshape_102", - "Reshape_3662", - "Broadcast_2580", - "Broadcast_4538", - "Slice_2735", - "Tanh_2197", - "Reshape_966", - "Multiply_4598", - "Broadcast_1094", - "Slice_11", - "Reshape_403", - "Exp_3378", - "Constant_2662", - "Exp_4141", - "Divide_843", - "Dot_3254", - "Multiply_3049", - "Multiply_3845", - "Tanh_1784", - "Slice_3447", - "Add_3256", - "Constant_3075", - "Divide_911", - "Dot_2654", - "Reshape_22", - "Tanh_3131", - "Tanh_772", - "Constant_1288", - "Add_3257", - "Multiply_2074", - "Tanh_3731", - "Dot_1450", - "Slice_3372", - "Tanh_3281", - "Reshape_4337", - "Add_781", - "Add_3883", - "Add_1397", - "Tanh_3284", - "Reshape_3328", - "Constant_1312", - "Negative_427", - "Broadcast_4589", - "Dot_2992", - "Dot_3329", - "Add_2304", - "Constant_418", - "Broadcast_719", - "Dot_2163", - "Tanh_3356", - "Exp_203", - "Slice_2885", - "Reshape_3703", - "Broadcast_907", - "Divide_2711", - "Add_804", - "Exp_721", - "Add_3407", - "Multiply_207", - "Negative_2183", - "Exp_1540", - "Tanh_209", - "Add_1354", - "Add_3058", - "Reshape_1674", - "Add_1371", - "Multiply_3432", - "Tanh_3809", - "Tanh_731", - "Reshape_1041", - "Slice_3860", - "Add_4108", - "Broadcast_3330", - "Dot_132", - "Add_1340", - "Divide_2442", - "Add_3707", - "Add_3481", - "Slice_449", - "Exp_865", - "Slice_25", - "Multiply_3770", - "Dot_4079", - "Divide_1992", - "Multiply_3237", - "Divide_680", - "Multiply_4185", - "Tanh_2309", - "Add_4232", - "Dot_4267", - "Add_3958", - "Exp_828", - "Multiply_1035", - "Multiply_2682", - "Negative_383", - "Add_1322", - "Broadcast_3589", - "Broadcast_3255", - "Tanh_2909", - "Broadcast_2130", - "Constant_1438", - "Reshape_3478", - "Divide_798", - "Dot_4117", - "Add_3808", - "Tanh_1747", - "Reshape_774", - "Add_3706", - "Broadcast_1851", - "Slice_4011", - "Add_2620", - "Broadcast_893", - "Multiply_1182", - "Broadcast_2164", - "Exp_565", - "Reshape_512", - "Exp_3128", - "Broadcast_2280", - "Constant_1588", - "Divide_1548", - "Negative_2214", - "Multiply_2235", - "Broadcast_705", - "Multiply_4295", - "Multiply_2337", - "Dot_4604", - "Tanh_2459", - "Add_3782", - "Add_208", - "Exp_1928", - "Reshape_4228", - "Exp_2716", - "Constant_146", - "Broadcast_2789", - "Constant_300", - "Slice_1533", - "Reshape_4303", - "Exp_2791", - "Reshape_1262", - "Dot_700", - "Tanh_3959", - "Add_491", - "Reshape_1678", - "Add_4517", - "Reshape_703", - "Slice_1084", - "Add_3160", - "Reshape_737", - "Tanh_2122", - "Multiply_2982", - "Slice_221", - "Reshape_10", - "Divide_605", - "Exp_3528", - "Divide_393", - "Add_3332", - "Dot_2579", - "Add_1554", - "Broadcast_382", - "Broadcast_3982", - "Add_2282", - "Multiply_1632", - "Reshape_4378", - "Exp_2866", - "Broadcast_3832", - "Add_895", - "Tanh_4034", - "Multiply_1332", - "Add_4381", - "Constant_712", - "Tanh_1859", - "Slice_3599", - "Slice_29", - "Constant_943", - "Add_2404", - "Add_4382", - "Add_4456", - "Broadcast_4601", - "Add_2540", - "Multiply_3210", - "Exp_4021", - "Dot_1754", - "Multiply_1549", - "Exp_3084", - "Multiply_4410", - "Constant_3487", - "Tanh_4522", - "Multiply_1070", - "Broadcast_501", - "Reshape_4453", - "Add_144", - "Exp_2941", - "Broadcast_3743", - "Constant_1012", - "Negative_2970", - "Add_4457", - "Multiply_2607", - "Add_433", - "Slice_1947", - "Add_2844", - "Divide_2718", - "Slice_3561", - "Add_416", - "Reshape_2086", - "Constant_1725", - "Slice_823", - "Negative_1695", - "Constant_4588", - "Reshape_3403", - "Exp_1134", - "Add_921", - "Tanh_4631", - "Tanh_3734", - "Add_4607", - "Slice_3223", - "Multiply_1024", - "Dot_1229", - "Broadcast_2126", - "Dot_4567", - "Add_4258", - "Broadcast_1080", - "Multiply_1257", - "Dot_2692", - "Tanh_2384", - "Reshape_328", - "Exp_158", - "Reshape_4603", - "Add_4033", - "Broadcast_494", - "Add_1547", - "Add_696", - "Broadcast_3644", - "Dot_3404", - "Add_2379", - "Dot_1492", - "Add_1183", - "Slice_3485", - "Constant_650", - "Negative_1702", - "Reshape_3291", - "Add_341", - "Reshape_52", - "Broadcast_419", - "Negative_4102", - "Add_235", - "Exp_3190", - "Slice_2211", - "Broadcast_3307", - "Multiply_1298", - "Multiply_2195", - "Add_1292", - "Negative_727", - "Multiply_2112", - "Reshape_4411", - "Constant_4050", - "Broadcast_1268", - "Reshape_4", - "Exp_766", - "Add_2008", - "Add_3692", - "Constant_185", - "Constant_3238", - "Multiply_4335", - "Constant_3412", - "Add_189", - "Add_2356", - "Broadcast_1201", - "Slice_1459", - "Exp_1066", - "Add_4360", - "Slice_3484", - "Broadcast_3226", - "Multiply_649", - "Slice_2285", - "Add_369", - "Concat_4637", - "Multiply_432", - "Broadcast_2894", - "Tanh_2234", - "Slice_748", - "Add_3440", - "Exp_149", - "Add_2946", - "Divide_1361", - "Exp_143", - "Tanh_3059", - "Broadcast_4455", - "Dot_738", - "Slice_1048", - "Divide_3611", - "Multiply_3960", - "Negative_758", - "Exp_241", - "Slice_821", - "Constant_3037", - "Broadcast_4005", - "Exp_878", - "Exp_453", - "Negative_4065", - "Multiply_4632", - "Constant_2812", - "Multiply_2757", - "Exp_1053", - "Parameter_174", - "Tanh_2981", - "Divide_4542", - "Broadcast_780", - "Constant_2062", - "Broadcast_3651", - "Slice_1", - "Exp_571", - "Add_2582", - "Negative_1802", - "Parameter_0", - "Multiply_582", - "Exp_753", - "Divide_236", - "Add_1156", - "Multiply_2007", - "Add_965", - "Broadcast_1426", - "Constant_2887", - "Add_402", - "Negative_1583", - "Negative_4389", - "Broadcast_368", - "Dot_3779", - "Slice_260", - "Tanh_3509", - "Add_1040", - "Add_365", - "Parameter_4640", - "Dot_1042", - "Constant_4125", - "Add_879", - "Broadcast_1343", - "Broadcast_982", - "Divide_2930", - "Exp_871", - "Add_1129", - "Slice_4085", - "Add_1715", - "Multiply_2385", - "Divide_1623", - "Negative_615", - "Slice_37", - "Constant_1956", - "Negative_2289", - "Add_1633", - "Broadcast_3555", - "Constant_2863", - "Broadcast_3893", - "Constant_1162", - "Slice_1384", - "Broadcast_1126", - "Constant_2587", - "Divide_4467", - "Dot_3179", - "Multiply_2974", - "Add_852", - "Broadcast_3889", - "Tanh_1519", - "Tanh_1709", - "Exp_271", - "Tanh_2834", - "Add_294", - "Broadcast_3180", - "Divide_867", - "Exp_3946", - "Dot_1679", - "Add_3191", - "Multiply_3837", - "Add_1879", - "Slice_2396", - "Tanh_281", - "Broadcast_1169", - "Add_4606", - "Tanh_319", - "Tanh_956", - "Add_2141", - "Tanh_2231", - "Tanh_322", - "Multiply_585", - "Add_740", - "Parameter_121", - "Negative_3277", - "Divide_1330", - "Slice_1948", - "Slice_898", - "Negative_1052", - "Slice_371", - "Add_2056", - "Add_3235", - "Add_1296", - "Multiply_3357", - "Reshape_253", - "Add_385", - "Add_126", - "Add_358", - "Multiply_4182", - "Negative_3615", - "Tanh_3584", - "Reshape_3928", - "Broadcast_128", - "Slice_749", - "Broadcast_818", - "Exp_2416", - "Add_4565", - "Dot_1113", - "Reshape_778", - "Add_2983", - "Exp_3916", - "Add_979", - "Tanh_2984", - "Broadcast_4380", - "Exp_1216", - "Constant_3343", - "Reshape_3778", - "Tanh_3434", - "Slice_860", - "Add_3444", - "Divide_1280", - "Broadcast_251", - "Broadcast_1076", - "Slice_633", - "Multiply_1598", - "Broadcast_3607", - "Multiply_2532", - "Constant_975", - "Add_1381", - "Tanh_2381", - "Slice_182", - "Broadcast_3301", - "Broadcast_1238", - "Slice_3186", - "Exp_353", - "Add_215", - "Parameter_167", - "Reshape_2053", - "Tanh_4334", - "Dot_3100", - "Tanh_2531", - "Multiply_3920", - "Dot_4229", - "Dot_3667", - "Tanh_1297", - "Add_3358", - "Reshape_1974", - "Multiply_1407", - "Tanh_581", - "Negative_452", - "Reshape_1787", - "Add_3266", - "Slice_63", - "Dot_2729", - "Tanh_1481", - "Multiply_248", - "Reshape_4153", - "Dot_1642", - "Reshape_30", - "Negative_3120", - "Tanh_4559", - "Multiply_1107", - "Exp_953", - "Negative_2670", - "Tanh_4331", - "Slice_4124", - "Multiply_4485", - "Constant_3562", - "Multiply_874", - "Divide_3618", - "Dot_1454", - "Add_4633", - "Add_716", - "Add_706", - "Multiply_1785", - "Add_1115", - "Multiply_4445", - "Multiply_2487", - "Slice_5", - "Add_2656", - "Slice_1759", - "Broadcast_2707", - "Broadcast_2226", - "Slice_4386", - "Add_2995", - "Slice_298", - "Slice_1086", - "Dot_2838", - "Broadcast_2055", - "Multiply_3135", - "Add_2465", - "Slice_2210", - "Multiply_620", - "Exp_2815", - "Reshape_3174", - "Tanh_4481", - "Add_4558", - "Broadcast_589", - "Reshape_4636", - "Tanh_4109", - "Multiply_923", - "Reshape_1487", - "Add_3632", - "Add_658", - "Multiply_3882", - "Broadcast_1901", - "Divide_642", - "Dot_2463", - "Broadcast_2876", - "Slice_3185", - "Exp_1771", - "Tanh_2647", - "Add_481", - "Tanh_1256", - "Broadcast_1001", - "Tanh_2684", - "Slice_3935", - "Divide_1398", - "Slice_935", - "Dot_2275", - "Add_379", - "Broadcast_4530", - "Multiply_199", - "Slice_3335", - "Reshape_6", - "Tanh_2797", - "Tanh_506", - "Broadcast_389", - "Tanh_1406", - "Reshape_4078", - "Add_2629", - "Multiply_1032", - "Negative_2595", - "Add_4483", - "Reshape_131", - "Broadcast_1826", - "Multiply_2010", - "Multiply_2907", - "Negative_187", - "Dot_1075", - "Add_632", - "Multiply_548", - "Broadcast_1889", - "Add_1265", - "Add_3921", - "Exp_984", - "Multiply_1557", - "Broadcast_3376", - "Multiply_4032", - "Add_2956", - "Slice_222", - "Broadcast_3007", - "Slice_4010", - "Divide_1473", - "Constant_1806", - "Negative_1464", - "Add_4007", - "Slice_2136", - "Reshape_2349", - "Divide_618", - "Add_4006", - "Broadcast_2151", - "Slice_4311", - "Add_2920", - "Add_3279", - "Slice_2135", - "Broadcast_776", - "Slice_933", - "Add_3010", - "Slice_897", - "Slice_4611", - "Broadcast_125", - "Constant_825", - "Tanh_4406", - "Negative_277", - "Constant_800", - "Broadcast_3480", - "Tanh_3881", - "Dot_4004", - "Constant_3825", - "Dot_888", - "Reshape_4003", - "Exp_2491", - "Multiply_1860", - "Add_1190", - "Divide_580", - "Negative_1389", - "Constant_3300", - "Tanh_206", - "Add_3932", - "Slice_2061", - "Add_829", - "Divide_1368", - "Reshape_2274", - "Divide_543", - "Slice_2060", - "Dot_3854", - "Broadcast_3930", - "Broadcast_3405", - "Add_1483", - "Multiply_3620", - "Dot_3929", - "Dot_4454", - "Tanh_2084", - "Exp_3391", - "Broadcast_147", - "Multiply_1099", - "Broadcast_2201", - "Constant_1213", - "Constant_412", - "Tanh_3506", - "Broadcast_851", - "Add_744", - "Divide_1518", - "Broadcast_2543", - "Broadcast_3855", - "Divide_2830", - "Add_406", - "Exp_1741", - "Add_4081", - "Add_2646", - "Divide_3543", - "Dot_1379", - "Slice_4274", - "Multiply_4635", - "Broadcast_2251", - "Negative_570", - "Broadcast_3251", - "Dot_1829", - "Multiply_1624", - "Broadcast_3780", - "Divide_3843", - "Slice_1009", - "Add_3085", - "Slice_4196", - "Parameter_122", - "Broadcast_682", - "Add_579", - "Dot_4304", - "Add_179", - "Reshape_1566", - "Divide_1848", - "Negative_2514", - "Divide_468", - "Multiply_2187", - "Dot_2392", - "Add_4408", - "Broadcast_3476", - "Tanh_1106", - "Dot_3742", - "Tanh_1372", - "Add_3433", - "Slice_3635", - "Divide_1286", - "Multiply_770", - "Exp_2334", - "Slice_2849", - "Broadcast_3705", - "Constant_3013", - "Add_2131", - "Broadcast_2182", - "Add_3310", - "Add_2506", - "Slice_184", - "Broadcast_2557", - "Add_777", - "Slice_3560", - "Multiply_687", - "Dot_663", - "Tanh_1631", - "Constant_343", - "Add_1704", - "Broadcast_3626", - "Add_621", - "Add_135", - "Constant_1281", - "Divide_3342", - "Divide_243", - "Exp_1809", - "Negative_3002", - "Broadcast_3630", - "Constant_2938", - "Parameter_175", - "Slice_17", - "Reshape_123", - "Multiply_3582", - "Add_1521", - "Slice_711", - "Broadcast_3443", - "Reshape_3628", - "Tanh_2756", - "Add_3294", - "Add_3791", - "Add_595", - "Slice_1986", - "Tanh_697", - "Add_3594", - "Add_733", - "Add_3482", - "Constant_450", - "Tanh_2272", - "Tanh_1147", - "Negative_2377", - "Negative_3045", - "Constant_1087", - "Divide_2367", - "Broadcast_2676", - "Slice_558", - "Add_3445", - "Dot_3104", - "Exp_1615", - "Add_2079", - "Multiply_2899", - "Broadcast_201", - "Multiply_510", - "Add_2458", - "Dot_2767", - "Reshape_3553", - "Multiply_799", - "Broadcast_2901", - "Dot_775", - "Constant_3313", - "Slice_3034", - "Add_370", - "Divide_190", - "Slice_2397", - "Slice_1685", - "Exp_684", - "Add_3096", - "Multiply_3207", - "Add_1981", - "Broadcast_2032", - "Add_477", - "Add_1991", - "Multiply_1935", - "Multiply_2832", - "Dot_4525", - "Add_1382", - "Reshape_1978", - "Reshape_74", - "Add_1217", - "Multiply_2037", - "Reshape_4336", - "Constant_3975", - "Broadcast_1193", - "Tanh_1931", - "Add_1906", - "Broadcast_1957", - "Exp_459", - "Constant_1768", - "Reshape_3136", - "Broadcast_351", - "Dot_4450", - "Negative_377", - "Add_1307", - "Multiply_3360", - "Add_256", - "Dot_1904", - "Broadcast_2801", - "Broadcast_4230", - "Divide_355", - "Reshape_1903", - "Negative_2664", - "Exp_188", - "Slice_1273", - "Add_1142", - "Multiply_1962", - "Broadcast_1118", - "Constant_675", - "Divide_2755", - "Negative_1027", - "Constant_3088", - "Slice_21", - "Broadcast_1057", - "Broadcast_4319", - "Negative_608", - "Exp_2928", - "Multiply_1857", - "Constant_1462", - "Negative_3420", - "Tanh_1856", - "Dot_1525", - "Exp_234", - "Broadcast_1282", - "Dot_2725", - "Add_1831", - "Negative_2589", - "Slice_1198", - "Add_1067", - "Broadcast_2989", - "Broadcast_1043", - "Slice_3749", - "Multiply_4110", - "Add_1783", - "Divide_2680", - "Exp_1209", - "Slice_3336", - "Add_3379", - "Multiply_1782", - "Reshape_4641", - "Slice_3184", - "Tanh_1781", - "Slice_1760", - "Slice_1873", - "Broadcast_480", - "Divide_1255", - "Exp_466", - "Negative_414", - "Add_1756", - "Slice_1910", - "Add_1316", - "Add_1204", - "Slice_4160", - "Multiply_2460", - "Multiply_949", - "Constant_2031", - "Negative_2364", - "Broadcast_4080", - "Broadcast_153", - "Exp_1028", - "Slice_43", - "Broadcast_2355", - "Reshape_3437", - "Slice_1123", - "Broadcast_532", - "Add_429", - "Slice_3674", - "Multiply_4035", - "Tanh_431", - "Constant_3112", - "Exp_4284", - "Add_1708", - "Divide_2605", - "Slice_87", - "Add_163", - "Constant_750", - "Negative_1627", - "Divide_3498", - "Add_1682", - "Reshape_42", - "Exp_2784", - "Add_1681", - "Broadcast_1732", - "Slice_1835", - "Constant_4462", - "Broadcast_1680", - "Divide_3192", - "Add_4002", - "Reshape_962", - "Multiply_807", - "Dot_4225", - "Add_1082", - "Exp_2184", - "Multiply_3695", - "Tanh_1634", - "Slice_3260", - "Exp_4615", - "Multiply_957", - "Slice_1085", - "Divide_3648", - "Slice_1610", - "Slice_4385", - "Add_2015", - "Slice_1234", - "Multiply_1295", - "Dot_1604", - "Add_3116", - "Reshape_1603", - "Slice_1199", - "Add_631", - "Multiply_1560", - "Tanh_4259", - "Add_444", - "Dot_4150", - "Add_1007", - "Add_3829", - "Add_685", - "Multiply_2232", - "Multiply_1335", - "Tanh_1559", - "Slice_1535", - "Broadcast_1530", - "Slice_1159", - "Dot_3550", - "Broadcast_2107", - "Multiply_3687", - "Add_1729", - "Multiply_1220", - "Dot_1529", - "Divide_980", - "Add_3041", - "Dot_967", - "Reshape_1528", - "Broadcast_218", - "Broadcast_1988", - "Parameter_130", - "Tanh_2759", - "Add_1091", - "Broadcast_1026", - "Negative_302", - "Add_2881", - "Dot_742", - "Add_1456", - "Broadcast_1507", - "Add_1865", - "Negative_4365", - "Add_1016", - "Broadcast_944", - "Exp_2559", - "Slice_2996", - "Broadcast_2738", - "Add_2806", - "Slice_1385", - "Reshape_1753", - "Slice_411", - "Add_2731", - "Slice_1834", - "Add_617", - "Broadcast_2782", - "Add_1333", - "Slice_2848", - "Divide_2230", - "Constant_2563", - "Tanh_2159", - "Dot_4529", - "Tanh_1331", - "Add_1869", - "Reshape_1266", - "Add_4333", - "Add_1329", - "Slice_1460", - "Multiply_3245", - "Dot_3554", - "Tanh_1184", - "Reshape_1303", - "Slice_1235", - "Reshape_3516", - "Dot_479", - "Add_1254", - "Broadcast_464", - "Add_4082", - "Multiply_3957", - "Negative_3390", - "Constant_4012", - "Broadcast_1230", - "Add_2581", - "Slice_1684", - "Tanh_397", - "Add_2254", - "Reshape_1228", - "Broadcast_232", - "Add_272", - "Add_904", - "Slice_335", - "Add_3017", - "Broadcast_4489", - "Broadcast_1088", - "Slice_3036", - "Tanh_1181", - "Slice_2358", - "Reshape_553", - "Slice_1160", - "Reshape_3441", - "Add_1629", - "Tanh_959", - "Reshape_28", - "Add_195", - "Constant_3650", - "Add_1179", - "Multiply_1999", - "Broadcast_3101", - "Broadcast_676", - "Constant_3937", - "Broadcast_1155", - "Multiply_4137", - "Add_2179", - "Constant_2512", - "Multiply_1110", - "Constant_4550", - "Divide_1098", - "Negative_1764", - "Dot_1154", - "Broadcast_2051", - "Reshape_1153", - "Tanh_1109", - "Slice_4235", - "Multiply_2535", - "Add_1279", - "Dot_1079", - "Reshape_1078", - "Broadcast_1319", - "Slice_1010", - "Divide_3573", - "Divide_455", - "Reshape_2087", - "Broadcast_1005", - "Add_4183", - "Divide_2517", - "Slice_2959", - "Tanh_4147", - "Dot_1004", - "Add_2516", - "Reshape_1003", - "Broadcast_1019", - "Negative_864", - "Exp_916", - "Slice_710", - "Broadcast_293", - "Add_856", - "Constant_337", - "Add_958", - "Slice_4199", - "Multiply_4560", - "Broadcast_2176", - "Broadcast_3176", - "Multiply_4332", - "Add_931", - "Divide_280", - "Broadcast_668", - "Dot_4379", - "Slice_259", - "Add_3508", - "Dot_929", - "Reshape_928", - "Broadcast_1905", - "Multiply_357", - "Multiply_2224", - "Tanh_884", - "Add_857", - "Add_4157", - "Dot_3442", - "Multiply_762", - "Add_4307", - "Multiply_1887", - "Multiply_323", - "Slice_333", - "Reshape_3324", - "Add_707", - "Add_815", - "Multiply_660", - "Divide_4473", - "Tanh_659", - "Broadcast_2864", - "Add_2169", - "Tanh_622", - "Add_1757", - "Tanh_694", - "Exp_2859", - "Constant_4350", - "Negative_639", - "Exp_691", - "Dot_3775", - "Broadcast_2332", - "Broadcast_630", - "Tanh_769", - "Add_3552", - "Reshape_628", - "Negative_564", - "Divide_2936", - "Slice_4272", - "Broadcast_457", - "Negative_3602", - "Dot_2279", - "Add_583", - "Add_508", - "Divide_836", - "Add_1558", - "Add_917", - "Constant_2788", - "Reshape_1378", - "Broadcast_405", - "Slice_1458", - "Broadcast_3382", - "Multiply_1373", - "Multiply_2270", - "Divide_380", - "Constant_200", - "Add_1457", - "Add_722", - "Add_515", - "Multiply_360", - "Broadcast_330", - "Multiply_285", - "Tanh_1069", - "Add_1172", - "Multiply_2120", - "Constant_262", - "Tanh_284", - "Add_1120", - "Slice_448", - "Exp_3490", - "Add_283", - "Multiply_154", - "Multiply_1212", - "Multiply_282", - "Add_1071", - "Multiply_3132", - "Negative_157", - "Reshape_1116", - "Dot_254", - "Tanh_2009", - "Broadcast_178", - "Add_3054", - "Exp_2590", - "Broadcast_173", - "Broadcast_276", - "Add_347", - "Divide_1586", - "Constant_172", - "Constant_1093", - "Negative_193", - "Divide_3986", - "Broadcast_170", - "Reshape_168", - "Add_883", - "Broadcast_3164", - "Tanh_164", - "Add_1247", - "Tanh_1144", - "Add_2829", - "Broadcast_198", - "Multiply_1287", - "Broadcast_2389", - "Dot_1788", - "Broadcast_601", - "Constant_231", - "Add_2192", - "Broadcast_1013", - "Add_134", - "Add_3341", - "Add_242", - "Add_295", - "Slice_3222", - "Divide_386", - "Constant_127", - "Negative_3564", - "Reshape_2", - "Divide_160", - "Reshape_2316", - "Add_159", - "Multiply_2149", - "Slice_136", - "Dot_3625", - "Broadcast_156", - "Broadcast_1388", - "Slice_1646", - "Dot_400", - "Multiply_245", - "Dot_3400", - "Multiply_4223", - "Add_4532", - "Reshape_32", - "Broadcast_2880", - "Negative_870", - "Add_331", - "Reshape_176", - "Slice_1158", - "Constant_140", - "Reshape_2386", - "Constant_2025", - "Broadcast_3614", - "Constant_1100", - "Negative_1433", - "Constant_3150", - "Reshape_2353", - "Exp_2409", - "Exp_194", - "Multiply_2273", - "Reshape_60", - "Constant_191", - "Slice_1311", - "Broadcast_186", - "Tanh_1409", - "Multiply_3470", - "Constant_4468", - "Add_1119", - "Multiply_2948", - "Add_252", - "Negative_3202", - "Multiply_2610", - "Add_1940", - "Slice_4310", - "Constant_2106", - "Reshape_1828", - "Multiply_274", - "Tanh_247", - "Divide_4218", - "Reshape_90", - "Negative_142", - "Add_246", - "Tanh_244", - "Dot_1304", - "Slice_374", - "Add_219", - "Dot_217", - "Divide_4480", - "Multiply_3398", - "Reshape_216", - "Broadcast_214", - "Multiply_2498", - "Multiply_237", - "Constant_1393", - "Slice_79", - "Tanh_3359", - "Dot_213", - "Negative_3240", - "Divide_1167", - "Add_3331", - "Slice_2434", - "Dot_4413", - "Add_1270", - "Negative_240", - "Divide_2817", - "Constant_238", - "Divide_730", - "Exp_678", - "Reshape_2499", - "Tanh_3806", - "Multiply_1635", - "Slice_1274", - "Slice_2360", - "Broadcast_2205", - "Constant_1513", - "Multiply_3285", - "Add_2615", - "Tanh_2722", - "Negative_227", - "Add_4452", - "Add_3370", - "Slice_224", - "Constant_2713", - "Broadcast_226", - "Exp_1690", - "Divide_4248", - "Negative_795", - "Exp_278", - "Multiply_3507", - "Slice_258", - "Dot_2388", - "Multiply_165", - "Exp_2603", - "Exp_790", - "Divide_273", - "Add_2121", - "Divide_905", - "Divide_3018", - "Add_266", - "Multiply_473", - "Negative_2115", - "Broadcast_855", - "Constant_268", - "Tanh_4184", - "Constant_2518", - "Exp_4103", - "Exp_391", - "Negative_339", - "Multiply_960", - "Exp_265", - "Dot_3292", - "Exp_316", - "Dot_3513", - "Slice_1761", - "Negative_264", - "Divide_2343", - "Add_791", - "Broadcast_3368", - "Add_992", - "Dot_2017", - "Parameter_129", - "Broadcast_263", - "Exp_3316", - "Reshape_4638", - "Slice_4009", - "Broadcast_3751", - "Broadcast_1639", - "Reshape_1341", - "Dot_1338", - "Tanh_3619", - "Add_2057", - "Reshape_34", - "Slice_33", - "Exp_3353", - "Add_1367", - "Negative_1365", - "Slice_1346", - "Broadcast_2294", - "Multiply_1362", - "Broadcast_2464", - "Add_1360", - "Exp_1359", - "Slice_3486", - "Negative_1358", - "Slice_4083", - "Negative_1352", - "Multiply_1710", - "Slice_1349", - "Broadcast_1351", - "Negative_3308", - "Constant_1350", - "Broadcast_3839", - "Divide_3530", - "Negative_1402", - "Divide_3273", - "Divide_1092", - "Broadcast_1401", - "Negative_1733", - "Negative_2790", - "Multiply_1399", - "Exp_1396", - "Dot_2088", - "Tanh_4634", - "Add_2779", - "Broadcast_1394", - "Add_1391", - "Slice_1386", - "Negative_3345", - "Constant_1387", - "Add_1452", - "Dot_854", - "Constant_2400", - "Tanh_4594", - "Broadcast_3563", - "Broadcast_1451", - "Reshape_58", - "Negative_4539", - "Multiply_1448", - "Constant_3575", - "Add_1446", - "Constant_981", - "Multiply_1445", - "Constant_2675", - "Reshape_1411", - "Negative_3008", - "Broadcast_3814", - "Tanh_1444", - "Negative_2814", - "Slice_1423", - "Add_1419", - "Constant_4200", - "Broadcast_1418", - "Reshape_3212", - "Dot_1417", - "Reshape_1416", - "Divide_1698", - "Multiply_2085", - "Add_1415", - "Broadcast_1414", - "Reshape_1412", - "Reshape_36", - "Slice_35", - "Exp_991", - "Divide_2073", - "Constant_2406", - "Slice_1348", - "Negative_2739", - "Dot_3175", - "Divide_1443", - "Broadcast_2468", - "Add_1442", - "Multiply_2262", - "Exp_1441", - "Constant_3568", - "Negative_1440", - "Constant_1250", - "Divide_3311", - "Negative_802", - "Slice_1421", - "Add_3497", - "Broadcast_1439", - "Multiply_3387", - "Multiply_1437", - "Divide_1436", - "Negative_2102", - "Add_1435", - "Slice_1422", - "Broadcast_3801", - "Constant_1431", - "Exp_1428", - "Broadcast_3794", - "Slice_1424", - "Constant_1425", - "Divide_3605", - "Negative_1477", - "Reshape_3066", - "Broadcast_1476", - "Divide_151", - "Broadcast_2576", - "Add_1472", - "Reshape_2574", - "Add_2854", - "Constant_3187", - "Broadcast_1469", - "Add_332", - "Constant_1468", - "Negative_4614", - "Broadcast_3532", - "Multiply_1523", - "Add_3583", - "Tanh_1522", - "Multiply_1520", - "Constant_2750", - "Exp_3865", - "Add_1495", - "Add_1494", - "Constant_4275", - "Broadcast_1493", - "Reshape_3287", - "Reshape_1491", - "Divide_1773", - "Negative_2439", - "Slice_1799", - "Add_1490", - "Divide_2592", - "Dot_1488", - "Exp_1516", - "Constant_3643", - "Negative_1515", - "Divide_3386", - "Slice_1496", - "Broadcast_1514", - "Multiply_1512", - "Divide_1511", - "Add_1510", - "Exp_1509", - "Negative_1508", - "Exp_803", - "Constant_3225", - "Slice_3558", - "Slice_1497", - "Add_3669", - "Divide_1505", - "Broadcast_3869", - "Slice_1499", - "Exp_1553", - "Constant_3613", - "Multiply_882", - "Negative_1552", - "Divide_3423", - "Multiply_3499", - "Constant_1550", - "Add_2652", - "Constant_3600", - "Exp_1546", - "Dot_2238", - "Slice_1534", - "Divide_1893", - "Add_3610", - "Broadcast_1544", - "Broadcast_614", - "Constant_1543", - "Add_819", - "Add_1541", - "Negative_1539", - "Dot_1975", - "Multiply_920", - "Broadcast_1538", - "Constant_1537", - "Slice_2024", - "Slice_1911", - "Add_1602", - "Slice_3971", - "Broadcast_1601", - "Add_3970", - "Dot_1600", - "Slice_3522", - "Reshape_1599", - "Dot_3967", - "Add_3658", - "Tanh_1597", - "Negative_2827", - "Multiply_3657", - "Add_1596", - "Broadcast_3518", - "Multiply_1595", - "Slice_1573", - "Add_1570", - "Add_1569", - "Broadcast_1568", - "Reshape_3362", - "Slice_483", - "Add_1258", - "Dot_1567", - "Multiply_1482", - "Add_3079", - "Slice_1874", - "Add_1565", - "Broadcast_2976", - "Divide_2667", - "Slice_3934", - "Broadcast_3676", - "Negative_3264", - "Broadcast_1564", - "Dot_1563", - "Reshape_478", - "Reshape_1562", - "Constant_2525", - "Reshape_40", - "Slice_39", - "Divide_1593", - "Broadcast_2618", - "Add_1592", - "Broadcast_4214", - "Constant_606", - "Dot_2617", - "Exp_1591", - "Negative_1590", - "Broadcast_1313", - "Slice_1571", - "Broadcast_1589", - "Multiply_1587", - "Dot_1792", - "Broadcast_2689", - "Add_1585", - "Exp_1584", - "Add_3744", - "Add_910", - "Divide_1580", - "Negative_1577", - "Slice_4084", - "Negative_3414", - "Reshape_56", - "Slice_1574", - "Broadcast_1576", - "Broadcast_689", - "Slice_3524", - "Exp_1628", - "Slice_1608", - "Divide_3686", - "Constant_1625", - "Negative_4427", - "Add_2727", - "Constant_900", - "Add_1622", - "Exp_1621", - "Negative_1620", - "Broadcast_1876", - "Constant_3337", - "Slice_1609", - "Constant_225", - "Broadcast_1619", - "Constant_1618", - "Divide_1617", - "Add_1616", - "Negative_1614", - "Slice_1611", - "Broadcast_4343", - "Negative_3570", - "Constant_1612", - "Slice_2099", - "Add_1677", - "Constant_2625", - "Broadcast_3788", - "Broadcast_1676", - "Multiply_695", - "Dot_1675", - "Multiply_1673", - "Dot_4042", - "Add_3733", - "Tanh_1672", - "Negative_2902", - "Multiply_3732", - "Add_1671", - "Broadcast_3593", - "Multiply_1670", - "Add_1645", - "Slice_974", - "Add_1644", - "Reshape_1641", - "Divide_1923", - "Multiply_2310", - "Add_1640", - "Exp_3721", - "Divide_318", - "Broadcast_3051", - "Divide_2742", - "Dot_1638", - "Reshape_1637", - "Slice_41", - "Negative_3677", - "Divide_1668", - "Add_1667", - "Exp_1666", - "Slice_69", - "Negative_1665", - "Multiply_1662", - "Dot_1867", - "Broadcast_2764", - "Divide_1661", - "Negative_2327", - "Add_1660", - "Exp_1659", - "Slice_3708", - "Slice_1647", - "Broadcast_1657", - "Divide_3717", - "Constant_1656", - "Dot_2425", - "Reshape_1937", - "Slice_672", - "Negative_1652", - "Slice_1649", - "Reshape_2011", - "Negative_3608", - "Constant_1650", - "Slice_1683", - "Add_3556", - "Divide_1392", - "Broadcast_1701", - "Add_2470", - "Constant_1700", - "Reshape_50", - "Negative_2033", - "Multiply_1699", - "Tanh_1594", - "Add_1697", - "Broadcast_1694", - "Reshape_72", - "Add_782", - "Exp_3565", - "Multiply_3649", - "Add_1691", - "Slice_1946", - "Broadcast_1688", - "Add_1752", - "Broadcast_3863", - "Broadcast_1751", - "Dot_1750", - "Slice_561", - "Multiply_1748", - "Multiply_3807", - "Dot_404", - "Add_1746", - "Multiply_1745", - "Constant_2975", - "Divide_1105", - "Slice_1723", - "Add_1719", - "Constant_4500", - "Broadcast_1718", - "Divide_3230", - "Exp_3984", - "Dot_1717", - "Add_3229", - "Reshape_1716", - "Divide_1998", - "Reshape_2874", - "Negative_3752", - "Divide_1743", - "Add_1742", - "Negative_1740", - "Broadcast_1463", - "Slice_1721", - "Divide_1430", - "Broadcast_1739", - "Slice_65", - "Constant_1738", - "Multiply_1737", - "Broadcast_2839", - "Divide_1736", - "Negative_2402", - "Add_1735", - "Exp_1734", - "Slice_3783", - "Tanh_4556", - "Slice_1722", - "Divide_3792", - "Slice_596", - "Constant_1731", - "Reshape_44", - "Negative_2064", - "Dot_2500", - "Reshape_2012", - "Exp_1728", - "Negative_1727", - "Slice_1724", - "Broadcast_1726", - "Exp_1315", - "Add_1779", - "Multiply_4557", - "Reshape_16", - "Multiply_2599", - "Constant_643", - "Exp_1778", - "Add_3941", - "Negative_1777", - "Reshape_3366", - "Slice_1758", - "Add_3631", - "Reshape_18", - "Divide_1467", - "Broadcast_1776", - "Slice_3936", - "Add_2545", - "Divide_3836", - "Constant_1775", - "Negative_2108", - "Multiply_1774", - "Tanh_1669", - "Add_1772", - "Negative_1770", - "Broadcast_1769", - "Exp_3640", - "Divide_1767", - "Multiply_3724", - "Add_1766", - "Exp_1765", - "Slice_2021", - "Broadcast_1763", - "Constant_1762", - "Divide_3042", - "Broadcast_3351", - "Add_1827", - "Dot_1825", - "Reshape_1824", - "Multiply_1823", - "Multiply_2720", - "Tanh_1822", - "Divide_267", - "Negative_3052", - "Add_1821", - "Exp_4396", - "Dot_2129", - "Multiply_1820", - "Reshape_1786", - "Negative_3383", - "Tanh_1819", - "Divide_1180", - "Slice_1798", - "Add_1794", - "Broadcast_1793", - "Reshape_1791", - "Broadcast_1789", - "Reshape_46", - "Slice_45", - "Slice_4497", - "Negative_3827", - "Multiply_735", - "Divide_1818", - "Add_3535", - "Exp_1353", - "Add_1817", - "Multiply_2637", - "Divide_2898", - "Exp_1816", - "Negative_1815", - "Broadcast_1814", - "Multiply_1812", - "Add_1810", - "Negative_1808", - "Broadcast_1807", - "Divide_1805", - "Constant_1800", - "Divide_3080", - "Broadcast_3389", - "Add_3572", - "Exp_1390", - "Add_1854", - "Multiply_2674", - "Exp_1853", - "Add_4016", - "Negative_1852", - "Slice_1833", - "Constant_1850", - "Multiply_1849", - "Slice_786", - "Broadcast_2951", - "Tanh_1744", - "Add_1847", - "Reshape_2949", - "Broadcast_141", - "Negative_1845", - "Broadcast_1844", - "Constant_1843", - "Multiply_3799", - "Multiply_810", - "Add_1841", - "Exp_1840", - "Negative_1839", - "Constant_1837", - "Constant_1056", - "Divide_3117", - "Broadcast_3426", - "Add_1902", - "Dot_1900", - "Exp_4578", - "Reshape_1899", - "Divide_505", - "Multiply_1898", - "Multiply_2795", - "Tanh_1897", - "Negative_3127", - "Add_1896", - "Exp_4471", - "Dot_2204", - "Multiply_1895", - "Tanh_1894", - "Reshape_66", - "Add_1870", - "Broadcast_1868", - "Broadcast_626", - "Broadcast_1864", - "Reshape_1862", - "Constant_313", - "Reshape_48", - "Exp_1465", - "Add_1929", - "Multiply_2749", - "Slice_47", - "Exp_1891", - "Negative_1890", - "Slice_1871", - "Constant_1888", - "Divide_1886", - "Add_1885", - "Reshape_853", - "Exp_1884", - "Negative_1883", - "Constant_1881", - "Divide_1880", - "Exp_1878", - "Add_327", - "Constant_1875", - "Multiply_2798", - "Add_3647", - "Negative_1927", - "Slice_1908", - "Exp_378", - "Add_3781", - "Broadcast_1926", - "Constant_1925", - "Multiply_1924", - "Broadcast_3026", - "Add_1922", - "Reshape_3024", - "Exp_1921", - "Negative_2177", - "Dot_2613", - "Broadcast_826", - "Slice_1909", - "Add_1157", - "Broadcast_2857", - "Broadcast_1919", - "Constant_1918", - "Divide_1917", - "Multiply_3874", - "Add_1916", - "Exp_1915", - "Negative_1914", - "Broadcast_1913", - "Constant_1912", - "Negative_4583", - "Constant_1131", - "Broadcast_3501", - "Add_1977", - "Broadcast_1976", - "Add_1971", - "Add_3177", - "Broadcast_289", - "Divide_2868", - "Exp_3278", - "Exp_4546", - "Multiply_1970", - "Reshape_1936", - "Constant_1575", - "Negative_3533", - "Tanh_1969", - "Add_1945", - "Negative_1170", - "Broadcast_1943", - "Dot_1942", - "Reshape_1941", - "Broadcast_1939", - "Slice_183", - "Dot_1938", - "Exp_1503", - "Add_1967", - "Multiply_2787", - "Exp_1966", - "Add_4129", - "Tanh_469", - "Negative_1965", - "Divide_1655", - "Broadcast_1964", - "Divide_1961", - "Negative_2627", - "Add_1960", - "Exp_1959", - "Broadcast_2138", - "Negative_1958", - "Divide_1955", - "Multiply_3912", - "Add_1954", - "Negative_1952", - "Slice_1949", - "Exp_2003", - "Negative_2002", - "Slice_1983", - "Divide_1692", - "Add_3856", - "Broadcast_2001", - "Constant_2000", - "Negative_2333", - "Add_1997", - "Reshape_3099", - "Exp_1996", - "Tanh_809", - "Negative_2252", - "Dot_850", - "Slice_1984", - "Add_1232", - "Broadcast_2932", - "Multiply_912", - "Broadcast_1994", - "Constant_1993", - "Constant_1987", - "Add_2052", - "Dot_2050", - "Broadcast_863", - "Reshape_2049", - "Multiply_2048", - "Tanh_2047", - "Add_2046", - "Add_985", - "Add_3252", - "Divide_2943", - "Divide_1405", - "Slice_2023", - "Add_2020", - "Multiply_3199", - "Reshape_2016", - "Broadcast_2014", - "Slice_51", - "Exp_1578", - "Add_2042", - "Multiply_2862", - "Add_1006", - "Dot_3067", - "Exp_2041", - "Negative_2040", - "Divide_1730", - "Broadcast_2039", - "Add_2035", - "Exp_2034", - "Broadcast_2213", - "Slice_2022", - "Broadcast_1064", - "Tanh_806", - "Add_2919", - "Reshape_2312", - "Add_2029", - "Negative_2027", - "Exp_2078", - "Add_4241", - "Negative_2077", - "Slice_2058", - "Add_3931", - "Broadcast_2076", - "Slice_4236", - "Add_2845", - "Add_3204", - "Constant_2075", - "Add_2072", - "Tanh_2947", - "Exp_2071", - "Slice_1011", - "Dot_2763", - "Slice_2059", - "Broadcast_2376", - "Divide_2067", - "Multiply_4024", - "Add_2066", - "Broadcast_2063", - "Dot_2125", - "Multiply_2123", - "Tanh_2119", - "Divide_1480", - "Slice_2098", - "Exp_4359", - "Dot_2092", - "Reshape_2091", - "Broadcast_4357", - "Slice_4460", - "Add_2090", - "Broadcast_2089", - "Constant_3000", - "Reshape_54", - "Slice_783", - "Slice_53", - "Divide_311", - "Exp_1653", - "Add_2117", - "Multiply_2937", - "Divide_4430", - "Add_1081", - "Dot_3142", - "Broadcast_1838", - "Slice_2096", - "Broadcast_2114", - "Constant_2113", - "Add_3215", - "Dot_667", - "Divide_2111", - "Reshape_94", - "Exp_2109", - "Broadcast_2288", - "Slice_2097", - "Broadcast_1139", - "Add_2994", - "Broadcast_2414", - "Divide_2105", - "Constant_4087", - "Add_220", - "Broadcast_1305", - "Reshape_2387", - "Add_2104", - "Add_2567", - "Exp_2103", - "Reshape_2461", - "Constant_2100", - "Multiply_4549", - "Constant_2488", - "Add_2154", - "Dot_554", - "Exp_2153", - "Add_4316", - "Negative_2152", - "Slice_2133", - "Constant_2150", - "Divide_2148", - "Constant_2481", - "Dot_3250", - "Add_2147", - "Negative_2145", - "Slice_2134", - "Constant_2143", - "Divide_2142", - "Negative_2139", - "Constant_2137", - "Add_872", - "Add_665", - "Multiply_2985", - "Slice_2624", - "Slice_2511", - "Add_2202", - "Dot_2200", - "Multiply_2198", - "Add_2196", - "Exp_3503", - "Divide_1555", - "Slice_2173", - "Add_2170", - "Add_2529", - "Multiply_3349", - "Negative_1395", - "Broadcast_2168", - "Exp_4434", - "Add_1858", - "Dot_2167", - "Reshape_2166", - "Negative_3114", - "Reshape_2162", - "Add_2502", - "Divide_2193", - "Exp_2191", - "Slice_2171", - "Divide_2186", - "Negative_2852", - "Dot_3288", - "Exp_2178", - "Constant_2175", - "Add_2229", - "Reshape_68", - "Exp_2228", - "Add_4391", - "Negative_2227", - "Slice_2208", - "Reshape_106", - "Divide_2223", - "Constant_2556", - "Add_2222", - "Negative_2220", - "Broadcast_1951", - "Slice_2209", - "Constant_2218", - "Add_2216", - "Add_2679", - "Exp_2215", - "Constant_2212", - "Add_2277", - "Add_2271", - "Divide_1630", - "Slice_2248", - "Slice_336", - "Slice_181", - "Add_2245", - "Multiply_3424", - "Add_2244", - "Negative_1470", - "Broadcast_2243", - "Exp_4509", - "Add_1933", - "Dot_2242", - "Reshape_2241", - "Multiply_2910", - "Slice_2549", - "Add_2240", - "Constant_2443", - "Reshape_2237", - "Broadcast_1251", - "Add_3106", - "Slice_57", - "Reshape_2424", - "Divide_2268", - "Negative_202", - "Exp_2266", - "Add_4429", - "Negative_2265", - "Constant_906", - "Slice_2246", - "Add_4119", - "Broadcast_2264", - "Add_3392", - "Constant_2263", - "Divide_2261", - "Negative_2927", - "Add_1302", - "Dot_3363", - "Add_2260", - "Exp_2259", - "Reshape_88", - "Negative_2258", - "Add_3027", - "Slice_2247", - "Constant_2256", - "Dot_3025", - "Constant_2250", - "Exp_2303", - "Slice_2283", - "Constant_2300", - "Add_3402", - "Divide_2298", - "Add_310", - "Constant_2631", - "Exp_541", - "Negative_2964", - "Negative_233", - "Tanh_2194", - "Add_2297", - "Exp_2296", - "Dot_2988", - "Negative_2295", - "Broadcast_2026", - "Slice_2284", - "Constant_2293", - "Add_2291", - "Constant_2287", - "Exp_340", - "Add_2352", - "Broadcast_2351", - "Dot_2350", - "Multiply_2348", - "Exp_1471", - "Add_542", - "Tanh_2347", - "Negative_3577", - "Broadcast_644", - "Add_2346", - "Multiply_2345", - "Negative_3714", - "Slice_673", - "Divide_1705", - "Slice_2323", - "Add_669", - "Add_2319", - "Dot_2317", - "Add_2315", - "Constant_1356", - "Divide_3417", - "Dot_2313", - "Reshape_76", - "Add_2342", - "Add_1306", - "Dot_3367", - "Negative_2340", - "Divide_2030", - "Broadcast_2339", - "Divide_2336", - "Add_2335", - "Slice_2322", - "Broadcast_2639", - "Divide_2330", - "Constant_4312", - "Reshape_2612", - "Exp_2328", - "Multiply_2685", - "Slice_2324", - "Slice_2584", - "Broadcast_2326", - "Constant_2375", - "Broadcast_439", - "Negative_2708", - "Add_3477", - "Negative_3765", - "Constant_155", - "Multiply_2374", - "Divide_2373", - "Negative_3039", - "Tanh_2269", - "Add_2372", - "Exp_2371", - "Negative_2370", - "Divide_761", - "Broadcast_2101", - "Slice_2359", - "Broadcast_2369", - "Constant_2368", - "Add_2366", - "Exp_2365", - "Slice_2361", - "Broadcast_2363", - "Constant_2362", - "Broadcast_2426", - "Slice_4123", - "Multiply_2423", - "Tanh_2422", - "Negative_3652", - "Divide_461", - "Add_2421", - "Multiply_2420", - "Broadcast_4201", - "Negative_3789", - "Divide_1780", - "Slice_2398", - "Add_2395", - "Broadcast_2393", - "Reshape_2391", - "Multiply_3060", - "Add_2390", - "Divide_3492", - "Add_4022", - "Slice_3146", - "Exp_1953", - "Add_2417", - "Reshape_662", - "Multiply_507", - "Negative_2415", - "Multiply_2412", - "Broadcast_3514", - "Divide_2411", - "Negative_3077", - "Dot_3850", - "Broadcast_2407", - "Divide_2405", - "Exp_2403", - "Slice_2659", - "Broadcast_2401", - "Exp_1990", - "Add_2454", - "Exp_2453", - "Negative_2452", - "Broadcast_2451", - "Add_4302", - "Add_3220", - "Negative_3840", - "Multiply_4407", - "Multiply_2449", - "Divide_2448", - "Tanh_2344", - "Add_2447", - "Negative_2702", - "Slice_560", - "Add_1077", - "Dot_3138", - "Negative_2445", - "Broadcast_2444", - "Add_2127", - "Slice_2436", - "Broadcast_2501", - "Tanh_2497", - "Add_2496", - "Dot_2804", - "Multiply_2495", - "Tanh_2494", - "Slice_4534", - "Broadcast_4276", - "Negative_3864", - "Divide_1855", - "Slice_2473", - "Add_2469", - "Exp_1178", - "Reshape_2466", - "Reshape_64", - "Divide_2493", - "Tanh_584", - "Exp_2028", - "Add_2492", - "Constant_375", - "Negative_2490", - "Slice_2471", - "Broadcast_2489", - "Slice_55", - "Divide_2486", - "Negative_3152", - "Exp_2484", - "Divide_2480", - "Add_2479", - "Negative_2477", - "Multiply_2835", - "Slice_4535", - "Add_2165", - "Slice_2474", - "Broadcast_3576", - "Slice_2734", - "Broadcast_2476", - "Reshape_3816", - "Exp_2528", - "Negative_2527", - "Slice_2508", - "Broadcast_2526", - "Add_4377", - "Add_3295", - "Multiply_4482", - "Multiply_2524", - "Add_460", - "Divide_2523", - "Tanh_922", - "Broadcast_1489", - "Negative_3189", - "Tanh_2419", - "Add_2522", - "Negative_2520", - "Broadcast_2519", - "Slice_1536", - "Exp_2515", - "Broadcast_2513", - "Negative_4277", - "Add_2577", - "Reshape_3886", - "Constant_3525", - "Broadcast_1132", - "Add_150", - "Dot_2575", - "Slice_4273", - "Multiply_2573", - "Exp_1696", - "Tanh_2572", - "Add_2571", - "Divide_3468", - "Dot_2879", - "Multiply_2570", - "Tanh_2569", - "Divide_1930", - "Slice_2548", - "Broadcast_4605", - "Add_2544", - "Exp_1253", - "Reshape_2541", - "Add_321", - "Broadcast_2539", - "Constant_4237", - "Broadcast_1455", - "Reshape_2537", - "Divide_2568", - "Multiply_1174", - "Negative_2565", - "Slice_2546", - "Broadcast_2564", - "Multiply_4520", - "Multiply_2562", - "Divide_2561", - "Negative_3227", - "Add_2560", - "Add_392", - "Negative_2558", - "Divide_2555", - "Negative_2552", - "Broadcast_2551", - "Constant_2550", - "Exp_2140", - "Add_2604", - "Slice_2583", - "Constant_2600", - "Negative_2933", - "Divide_2598", - "Add_2597", - "Broadcast_2594", - "Constant_2593", - "Add_2591", - "Slice_2586", - "Broadcast_2651", - "Broadcast_1207", - "Dot_2650", - "Reshape_2649", - "Multiply_2648", - "Multiply_2645", - "Broadcast_426", - "Tanh_2644", - "Broadcast_4426", - "Divide_2005", - "Slice_2623", - "Broadcast_2614", - "Slice_67", - "Divide_2643", - "Add_2642", - "Multiply_3462", - "Exp_2641", - "Multiply_1249", - "Negative_2640", - "Dot_817", - "Slice_2621", - "Broadcast_3569", - "Add_2635", - "Slice_261", - "Exp_2634", - "Slice_2622", - "Divide_1355", - "Slice_7", - "Add_3519", - "Broadcast_2632", - "Divide_2630", - "Broadcast_2626", - "Exp_2678", - "Slice_2658", - "Divide_2673", - "Negative_3339", - "Broadcast_2669", - "Constant_862", - "Add_2666", - "Broadcast_133", - "Slice_2661", - "Broadcast_2726", - "Reshape_2724", - "Tanh_2609", - "Slice_77", - "Slice_4423", - "Multiply_2723", - "Divide_2080", - "Slice_2698", - "Slice_4086", - "Add_2695", - "Add_2694", - "Constant_525", - "Exp_1403", - "Reshape_2691", - "Reshape_291", - "Divide_2973", - "Constant_3306", - "Add_2690", - "Dot_2688", - "Broadcast_1605", - "Reshape_2687", - "Add_3102", - "Exp_2253", - "Add_2717", - "Multiply_1324", - "Negative_2715", - "Slice_2696", - "Multiply_2712", - "Add_2710", - "Exp_2709", - "Broadcast_2888", - "Negative_945", - "Slice_2697", - "Constant_2706", - "Dot_3475", - "Add_229", - "Broadcast_3014", - "Divide_2705", - "Constant_3193", - "Reshape_2987", - "Broadcast_4094", - "Exp_2703", - "Slice_223", - "Slice_2699", - "Broadcast_2701", - "Exp_2290", - "Add_2754", - "Multiply_3574", - "Negative_2752", - "Broadcast_2751", - "Dot_1150", - "Slice_59", - "Add_3520", - "Add_2747", - "Broadcast_269", - "Negative_2745", - "Constant_2743", - "Add_4596", - "Add_317", - "Add_2741", - "Slice_2736", - "Reshape_2799", - "Add_2796", - "Tanh_2794", - "Broadcast_4576", - "Divide_2155", - "Slice_2773", - "Slice_4161", - "Add_2770", - "Add_2769", - "Negative_1995", - "Broadcast_2768", - "Exp_1478", - "Reshape_2766", - "Multiply_987", - "Divide_3048", - "Negative_1320", - "Constant_3381", - "Slice_3074", - "Multiply_3435", - "Add_2765", - "Reshape_2762", - "Slice_71", - "Add_2792", - "Divide_2786", - "Divide_2217", - "Exp_3196", - "Broadcast_255", - "Negative_3452", - "Negative_2783", - "Slice_2772", - "Broadcast_926", - "Constant_2781", - "Slice_2774", - "Reshape_249", - "Broadcast_2776", - "Constant_2775", - "Reshape_4116", - "Exp_2828", - "Slice_2808", - "Add_970", - "Constant_2825", - "Divide_2823", - "Negative_2820", - "Slice_3334", - "Broadcast_3076", - "Slice_2809", - "Divide_3168", - "Slice_447", - "Add_1892", - "Broadcast_2819", - "Constant_2818", - "Slice_2249", - "Exp_3228", - "Add_2816", - "Slice_2811", - "Broadcast_2813", - "Negative_4577", - "Add_2877", - "Broadcast_1432", - "Dot_2875", - "Slice_4573", - "Add_3182", - "Multiply_2873", - "Dot_292", - "Add_2871", - "Add_290", - "Add_2972", - "Tanh_2869", - "Broadcast_2843", - "Add_2533", - "Dot_2842", - "Reshape_2841", - "Divide_3123", - "Multiply_3510", - "Slice_3149", - "Add_2840", - "Constant_4537", - "Reshape_2837", - "Multiply_2760", - "Slice_2399", - "Slice_73", - "Add_3566", - "Dot_288", - "Add_2867", - "Multiply_1474", - "Negative_2865", - "Reshape_474", - "Broadcast_2588", - "Slice_2846", - "Divide_3205", - "Divide_2861", - "Broadcast_2601", - "Divide_2292", - "Exp_3271", - "Slice_4197", - "Negative_3527", - "Negative_2858", - "Multiply_320", - "Slice_2847", - "Constant_2856", - "Divide_2855", - "Slice_2286", - "Reshape_62", - "Exp_3265", - "Broadcast_4244", - "Exp_2853", - "Broadcast_2851", - "Constant_2850", - "Divide_2905", - "Add_2904", - "Exp_2903", - "Slice_2883", - "Constant_2900", - "Tanh_3772", - "Exp_2896", - "Negative_2895", - "Slice_3409", - "Broadcast_3151", - "Slice_2884", - "Divide_3243", - "Reshape_366", - "Constant_2893", - "Exp_3303", - "Multiply_210", - "Divide_2892", - "Add_2891", - "Slice_1498", - "Negative_2889", - "Negative_489", - "Broadcast_1882", - "Dot_3325", - "Slice_2886", - "Add_3047", - "Tanh_2944", - "Divide_2305", - "Slice_2923", - "Dot_2917", - "Reshape_2916", - "Slice_3224", - "Multiply_3585", - "Add_2915", - "Broadcast_2914", - "Slice_75", - "Add_2942", - "Negative_2940", - "Broadcast_2663", - "Slice_2921", - "Divide_3280", - "Broadcast_2939", - "Slice_2922", - "Constant_2931", - "Add_2929", - "Negative_840", - "Constant_3262", - "Slice_2924", - "Broadcast_2926", - "Constant_2925", - "Add_2979", - "Exp_503", - "Exp_2978", - "Negative_2977", - "Slice_2958", - "Tanh_3847", - "Add_4156", - "Exp_2971", - "Broadcast_2969", - "Constant_2968", - "Divide_2967", - "Add_2966", - "Constant_2962", - "Divide_4105", - "Multiply_3023", - "Exp_2146", - "Tanh_3022", - "Add_3021", - "Multiply_3020", - "Divide_2380", - "Slice_2998", - "Broadcast_2993", - "Exp_1703", - "Reshape_2991", - "Multiply_3660", - "Slice_3299", - "Add_2990", - "Reshape_78", - "Slice_747", - "Negative_3015", - "Add_1054", - "Multiply_3012", - "Divide_4505", - "Dot_3217", - "Divide_3011", - "Constant_3006", - "Divide_3005", - "Add_3004", - "Slice_2999", - "Slice_785", - "Broadcast_3001", - "Divide_3055", - "Negative_1327", - "Constant_3388", - "Exp_3053", - "Slice_3033", - "Constant_3050", - "Add_4231", - "Exp_3046", - "Divide_880", - "Broadcast_3044", - "Add_4172", - "Divide_305", - "Broadcast_3038", - "Divide_4180", - "Multiply_3098", - "Broadcast_1551", - "Tanh_3097", - "Multiply_3095", - "Add_3197", - "Tanh_3094", - "Divide_2455", - "Slice_3073", - "Add_3069", - "Broadcast_3064", - "Add_1002", - "Dot_3063", - "Broadcast_1980", - "Add_846", - "Reshape_3062", - "Dot_2354", - "Reshape_80", - "Broadcast_3239", - "Divide_3093", - "Broadcast_4019", - "Exp_2628", - "Add_3092", - "Exp_3091", - "Negative_3090", - "Add_3947", - "Slice_3071", - "Broadcast_3089", - "Tanh_509", - "Multiply_3087", - "Divide_3086", - "Slice_3072", - "Multiply_1073", - "Broadcast_3082", - "Exp_3078", - "Negative_345", - "Divide_3130", - "Exp_2665", - "Add_3129", - "Broadcast_3126", - "Constant_3125", - "Constant_1500", - "Negative_3458", - "Add_1166", - "Multiply_3124", - "Tanh_3019", - "Add_3122", - "Add_4306", - "Exp_3121", - "Add_3985", - "Dot_169", - "Slice_3109", - "Broadcast_3119", - "Constant_4612", - "Constant_3118", - "Add_2802", - "Slice_3111", - "Add_4247", - "Broadcast_3113", - "Broadcast_4564", - "Multiply_3173", - "Broadcast_1626", - "Tanh_3172", - "Multiply_3170", - "Add_3272", - "Tanh_3169", - "Divide_2530", - "Slice_3148", - "Add_4227", - "Add_3145", - "Reshape_3141", - "Broadcast_3139", - "Reshape_3137", - "Reshape_82", - "Add_4322", - "Tanh_4219", - "Negative_714", - "Slice_3446", - "Add_3167", - "Slice_85", - "Exp_3166", - "Reshape_84", - "Negative_3165", - "Multiply_3162", - "Negative_4552", - "Divide_3161", - "Add_4344", - "Divide_2180", - "Exp_3159", - "Add_4472", - "Slice_3596", - "Broadcast_1226", - "Broadcast_3338", - "Constant_1200", - "Negative_270", - "Negative_3158", - "Broadcast_3157", - "Negative_1095", - "Constant_3156", - "Slice_4159", - "Negative_3489", - "Slice_2174", - "Exp_3153", - "Negative_4283", - "Broadcast_3201", - "Constant_3200", - "Constant_1237", - "Tanh_359", - "Negative_3195", - "Multiply_1185", - "Broadcast_3194", - "Slice_31", - "Broadcast_3188", - "Multiply_3248", - "Tanh_3244", - "Reshape_3216", - "Add_3242", - "Tanh_3994", - "Add_954", - "Slice_3221", - "Constant_1175", - "Divide_3236", - "Divide_2255", - "Exp_3234", - "Tanh_4444", - "Broadcast_3413", - "Constant_1275", - "Negative_3233", - "Constant_3231", - "Tanh_4031", - "Slice_3258", - "Constant_3275", - "Slice_3259", - "Add_2952", - "Slice_3261", - "Broadcast_3326", - "Divide_4405", - "Multiply_3323", - "Slice_486", - "Exp_2446", - "Tanh_3322", - "Slice_485", - "Add_3321", - "Tanh_1259", - "Slice_484", - "Dot_3629", - "Multiply_3320", - "Add_3290", - "Broadcast_3289", - "Dot_813", - "Reshape_86", - "Divide_3318", - "Negative_3315", - "Tanh_4069", - "Slice_3296", - "Broadcast_3314", - "Multiply_3312", - "Multiply_732", - "Exp_3309", - "Tanh_4519", - "Slice_81", - "Broadcast_3488", - "Multiply_1707", - "Add_3304", - "Add_3354", - "Negative_3352", - "Tanh_4106", - "Slice_1272", - "Slice_3333", - "Add_771", - "Divide_3348", - "Add_3347", - "Add_4531", - "Exp_3346", - "Broadcast_3344", - "Tanh_1031", - "Broadcast_3401", - "Slice_822", - "Add_1029", - "Reshape_3399", - "Exp_2521", - "Add_820", - "Divide_1542", - "Tanh_3397", - "Add_3396", - "Dot_3704", - "Multiply_3395", - "Add_641", - "Slice_3373", - "Broadcast_3364", - "Tanh_4144", - "Slice_3371", - "Constant_600", - "Broadcast_2714", - "Exp_3384", - "Slice_4047", - "Negative_3377", - "Reshape_849", - "Slice_3374", - "Exp_2965", - "Add_3429", - "Exp_3428", - "Negative_3427", - "Tanh_4181", - "Slice_1347", - "Slice_3408", - "Add_3422", - "Exp_3421", - "Slice_1049", - "Multiply_1410", - "Broadcast_3419", - "Add_3416", - "Add_1045", - "Exp_3415", - "Add_1104", - "Reshape_3474", - "Multiply_3473", - "Exp_2596", - "Tanh_3472", - "Add_3471", - "Slice_3448", - "Exp_3466", - "Negative_3465", - "Dot_629", - "Broadcast_3464", - "Reshape_212", - "Constant_1400", - "Divide_3461", - "Add_3460", - "Exp_3459", - "Constant_3456", - "Add_3454", - "Exp_3453", - "Slice_3709", - "Broadcast_1339", - "Broadcast_3451", - "Exp_3040", - "Add_3504", - "Negative_3502", - "Tanh_4256", - "Slice_3483", - "Constant_3500", - "Add_454", - "Broadcast_2826", - "Exp_3496", - "Slice_1124", - "Multiply_1485", - "Broadcast_3494", - "Add_3491", - "Broadcast_3551", - "Reshape_3549", - "Multiply_3548", - "Exp_2671", - "Tanh_3547", - "Tanh_1484", - "Multiply_3545", - "Slice_3523", - "Add_3208", - "Dot_3517", - "Add_3515", - "Constant_197", - "Dot_2467", - "Slice_91", - "Broadcast_4469", - "Add_3542", - "Exp_3541", - "Multiply_4107", - "Negative_3540", - "Add_4397", - "Tanh_4294", - "Broadcast_1151", - "Slice_3521", - "Multiply_3537", - "Constant_1475", - "Divide_3536", - "Constant_3531", - "Add_3529", - "Slice_3784", - "Broadcast_3526", - "Add_3579", - "Dot_588", - "Exp_3578", - "Exp_3571", - "Add_4435", - "Broadcast_1189", - "Slice_3559", - "Broadcast_3876", - "Constant_1506", - "Divide_3567", - "Add_3627", - "Reshape_3624", - "Multiply_3623", - "Exp_2746", - "Tanh_3622", - "Divide_2980", - "Slice_3598", - "Dot_1225", - "Add_3595", - "Add_3283", - "Add_1531", - "Dot_3592", - "Reshape_3591", - "Add_3590", - "Slice_1836", - "Add_1527", - "Dot_3588", - "Reshape_3587", - "Add_3654", - "Slice_93", - "Add_3617", - "Exp_3616", - "Multiply_3612", - "Negative_1545", - "Constant_3606", - "Add_3604", - "Exp_3603", - "Slice_3859", - "Broadcast_3601", - "Reshape_92", - "Exp_3653", - "Slice_1572", - "Reshape_70", - "Slice_3633", - "Exp_3646", - "Add_4510", - "Broadcast_1264", - "Slice_3634", - "Constant_1581", - "Divide_3642", - "Add_3641", - "Negative_3639" - ], - "value_type" : [ - {"element_type" : "float", "shape" : [ 1920, 10000 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 10000, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 60, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 60, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [10000]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 10000 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [800]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 800, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 1920, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 200, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 1, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 800 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : []}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]}, - {"element_type" : "float", "shape" : [ 32, 200 ]} - ] -}] diff --git a/ngraph/test/models/mxnet/Seq2Seq_backward.json b/ngraph/test/models/mxnet/Seq2Seq_backward.json deleted file mode 100644 index 94b0700e2b9c97..00000000000000 --- a/ngraph/test/models/mxnet/Seq2Seq_backward.json +++ /dev/null @@ -1,17893 +0,0 @@ -[{ - "name" : "Function_1", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_175", - "op" : "Parameter", - "outputs" : ["Parameter_175_0"], - "shape" : [ 10, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_155", - "op" : "Parameter", - "outputs" : ["Parameter_155_0"], - "shape" : [600] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_154", - "op" : "Parameter", - "outputs" : ["Parameter_154_0"], - "shape" : [ 600, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_153", - "op" : "Parameter", - "outputs" : ["Parameter_153_0"], - "shape" : [ 10, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_4", - "op" : "Parameter", - "outputs" : ["Parameter_4_0"], - "shape" : [600] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [ 600, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 10, 25, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_982", - "op" : "Parameter", - "outputs" : ["Parameter_982_0"], - "shape" : [ 10, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_178", - "op" : "Constant", - "outputs" : ["Constant_178_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_169", - "op" : "Constant", - "outputs" : ["Constant_169_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_162", - "op" : "Constant", - "outputs" : ["Constant_162_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_196", - "op" : "Constant", - "outputs" : ["Constant_196_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_211", - "op" : "Constant", - "outputs" : ["Constant_211_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_203", - "op" : "Constant", - "outputs" : ["Constant_203_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_229", - "op" : "Constant", - "outputs" : ["Constant_229_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_244", - "op" : "Constant", - "outputs" : ["Constant_244_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_236", - "op" : "Constant", - "outputs" : ["Constant_236_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_262", - "op" : "Constant", - "outputs" : ["Constant_262_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_277", - "op" : "Constant", - "outputs" : ["Constant_277_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_269", - "op" : "Constant", - "outputs" : ["Constant_269_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_295", - "op" : "Constant", - "outputs" : ["Constant_295_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_310", - "op" : "Constant", - "outputs" : ["Constant_310_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_302", - "op" : "Constant", - "outputs" : ["Constant_302_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_328", - "op" : "Constant", - "outputs" : ["Constant_328_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_343", - "op" : "Constant", - "outputs" : ["Constant_343_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_335", - "op" : "Constant", - "outputs" : ["Constant_335_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_361", - "op" : "Constant", - "outputs" : ["Constant_361_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_376", - "op" : "Constant", - "outputs" : ["Constant_376_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_368", - "op" : "Constant", - "outputs" : ["Constant_368_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_394", - "op" : "Constant", - "outputs" : ["Constant_394_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_409", - "op" : "Constant", - "outputs" : ["Constant_409_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_401", - "op" : "Constant", - "outputs" : ["Constant_401_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_427", - "op" : "Constant", - "outputs" : ["Constant_427_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_442", - "op" : "Constant", - "outputs" : ["Constant_442_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_434", - "op" : "Constant", - "outputs" : ["Constant_434_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_460", - "op" : "Constant", - "outputs" : ["Constant_460_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_475", - "op" : "Constant", - "outputs" : ["Constant_475_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_467", - "op" : "Constant", - "outputs" : ["Constant_467_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_493", - "op" : "Constant", - "outputs" : ["Constant_493_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_508", - "op" : "Constant", - "outputs" : ["Constant_508_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_500", - "op" : "Constant", - "outputs" : ["Constant_500_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_526", - "op" : "Constant", - "outputs" : ["Constant_526_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_541", - "op" : "Constant", - "outputs" : ["Constant_541_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_533", - "op" : "Constant", - "outputs" : ["Constant_533_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_559", - "op" : "Constant", - "outputs" : ["Constant_559_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_574", - "op" : "Constant", - "outputs" : ["Constant_574_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_566", - "op" : "Constant", - "outputs" : ["Constant_566_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_592", - "op" : "Constant", - "outputs" : ["Constant_592_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_607", - "op" : "Constant", - "outputs" : ["Constant_607_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_599", - "op" : "Constant", - "outputs" : ["Constant_599_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_625", - "op" : "Constant", - "outputs" : ["Constant_625_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_640", - "op" : "Constant", - "outputs" : ["Constant_640_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_632", - "op" : "Constant", - "outputs" : ["Constant_632_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_658", - "op" : "Constant", - "outputs" : ["Constant_658_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_673", - "op" : "Constant", - "outputs" : ["Constant_673_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_665", - "op" : "Constant", - "outputs" : ["Constant_665_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_691", - "op" : "Constant", - "outputs" : ["Constant_691_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_706", - "op" : "Constant", - "outputs" : ["Constant_706_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_698", - "op" : "Constant", - "outputs" : ["Constant_698_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_724", - "op" : "Constant", - "outputs" : ["Constant_724_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_739", - "op" : "Constant", - "outputs" : ["Constant_739_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_731", - "op" : "Constant", - "outputs" : ["Constant_731_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_757", - "op" : "Constant", - "outputs" : ["Constant_757_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_772", - "op" : "Constant", - "outputs" : ["Constant_772_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_764", - "op" : "Constant", - "outputs" : ["Constant_764_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_790", - "op" : "Constant", - "outputs" : ["Constant_790_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_805", - "op" : "Constant", - "outputs" : ["Constant_805_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_797", - "op" : "Constant", - "outputs" : ["Constant_797_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_823", - "op" : "Constant", - "outputs" : ["Constant_823_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_838", - "op" : "Constant", - "outputs" : ["Constant_838_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_830", - "op" : "Constant", - "outputs" : ["Constant_830_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_856", - "op" : "Constant", - "outputs" : ["Constant_856_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_871", - "op" : "Constant", - "outputs" : ["Constant_871_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_863", - "op" : "Constant", - "outputs" : ["Constant_863_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_889", - "op" : "Constant", - "outputs" : ["Constant_889_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_904", - "op" : "Constant", - "outputs" : ["Constant_904_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_896", - "op" : "Constant", - "outputs" : ["Constant_896_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_922", - "op" : "Constant", - "outputs" : ["Constant_922_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_937", - "op" : "Constant", - "outputs" : ["Constant_937_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_929", - "op" : "Constant", - "outputs" : ["Constant_929_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_955", - "op" : "Constant", - "outputs" : ["Constant_955_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_970", - "op" : "Constant", - "outputs" : ["Constant_970_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_962", - "op" : "Constant", - "outputs" : ["Constant_962_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_993", - "op" : "Constant", - "outputs" : ["Constant_993_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1052", - "op" : "Constant", - "outputs" : ["Constant_1052_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1113", - "op" : "Constant", - "outputs" : ["Constant_1113_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1174", - "op" : "Constant", - "outputs" : ["Constant_1174_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1235", - "op" : "Constant", - "outputs" : ["Constant_1235_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1296", - "op" : "Constant", - "outputs" : ["Constant_1296_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1357", - "op" : "Constant", - "outputs" : ["Constant_1357_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1418", - "op" : "Constant", - "outputs" : ["Constant_1418_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1479", - "op" : "Constant", - "outputs" : ["Constant_1479_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1540", - "op" : "Constant", - "outputs" : ["Constant_1540_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1601", - "op" : "Constant", - "outputs" : ["Constant_1601_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1662", - "op" : "Constant", - "outputs" : ["Constant_1662_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1723", - "op" : "Constant", - "outputs" : ["Constant_1723_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1784", - "op" : "Constant", - "outputs" : ["Constant_1784_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1845", - "op" : "Constant", - "outputs" : ["Constant_1845_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1906", - "op" : "Constant", - "outputs" : ["Constant_1906_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1967", - "op" : "Constant", - "outputs" : ["Constant_1967_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2028", - "op" : "Constant", - "outputs" : ["Constant_2028_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2089", - "op" : "Constant", - "outputs" : ["Constant_2089_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2150", - "op" : "Constant", - "outputs" : ["Constant_2150_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2211", - "op" : "Constant", - "outputs" : ["Constant_2211_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2272", - "op" : "Constant", - "outputs" : ["Constant_2272_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2333", - "op" : "Constant", - "outputs" : ["Constant_2333_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2394", - "op" : "Constant", - "outputs" : ["Constant_2394_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2455", - "op" : "Constant", - "outputs" : ["Constant_2455_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_2514", - "op" : "Constant", - "outputs" : ["Constant_2514_0"], - "shape" : [], - "value" : ["0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_158", - "op" : "Broadcast", - "outputs" : ["Broadcast_158_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_192", - "op" : "Broadcast", - "outputs" : ["Broadcast_192_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_225", - "op" : "Broadcast", - "outputs" : ["Broadcast_225_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_258", - "op" : "Broadcast", - "outputs" : ["Broadcast_258_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_291", - "op" : "Broadcast", - "outputs" : ["Broadcast_291_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_324", - "op" : "Broadcast", - "outputs" : ["Broadcast_324_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_357", - "op" : "Broadcast", - "outputs" : ["Broadcast_357_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_390", - "op" : "Broadcast", - "outputs" : ["Broadcast_390_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_423", - "op" : "Broadcast", - "outputs" : ["Broadcast_423_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_456", - "op" : "Broadcast", - "outputs" : ["Broadcast_456_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_489", - "op" : "Broadcast", - "outputs" : ["Broadcast_489_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_522", - "op" : "Broadcast", - "outputs" : ["Broadcast_522_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_555", - "op" : "Broadcast", - "outputs" : ["Broadcast_555_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_588", - "op" : "Broadcast", - "outputs" : ["Broadcast_588_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_621", - "op" : "Broadcast", - "outputs" : ["Broadcast_621_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_654", - "op" : "Broadcast", - "outputs" : ["Broadcast_654_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_687", - "op" : "Broadcast", - "outputs" : ["Broadcast_687_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_720", - "op" : "Broadcast", - "outputs" : ["Broadcast_720_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_753", - "op" : "Broadcast", - "outputs" : ["Broadcast_753_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_786", - "op" : "Broadcast", - "outputs" : ["Broadcast_786_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_819", - "op" : "Broadcast", - "outputs" : ["Broadcast_819_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_852", - "op" : "Broadcast", - "outputs" : ["Broadcast_852_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_885", - "op" : "Broadcast", - "outputs" : ["Broadcast_885_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_918", - "op" : "Broadcast", - "outputs" : ["Broadcast_918_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_951", - "op" : "Broadcast", - "outputs" : ["Broadcast_951_0"], - "shape" : [ 10, 600 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_156", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_156_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_190", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_190_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_223", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_223_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_256", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_256_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_289", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_289_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_322", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_322_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_355", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_355_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_388", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_388_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_421", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_421_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_454", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_454_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_487", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_487_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_520", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_520_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_553", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_553_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_586", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_586_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_619", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_619_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_652", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_652_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_685", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_685_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_718", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_718_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_751", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_751_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_784", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_784_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_817", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_817_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_850", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_850_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_883", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_883_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_916", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_916_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_949", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_949_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_153"], - "name" : "Reshape_2500", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2500_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_7", - "op" : "Broadcast", - "outputs" : ["Broadcast_7_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_13", - "op" : "Broadcast", - "outputs" : ["Broadcast_13_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_25", - "op" : "Broadcast", - "outputs" : ["Broadcast_25_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_31", - "op" : "Broadcast", - "outputs" : ["Broadcast_31_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_37", - "op" : "Broadcast", - "outputs" : ["Broadcast_37_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_43", - "op" : "Broadcast", - "outputs" : ["Broadcast_43_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_49", - "op" : "Broadcast", - "outputs" : ["Broadcast_49_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_55", - "op" : "Broadcast", - "outputs" : ["Broadcast_55_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_61", - "op" : "Broadcast", - "outputs" : ["Broadcast_61_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_67", - "op" : "Broadcast", - "outputs" : ["Broadcast_67_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_73", - "op" : "Broadcast", - "outputs" : ["Broadcast_73_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_79", - "op" : "Broadcast", - "outputs" : ["Broadcast_79_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_85", - "op" : "Broadcast", - "outputs" : ["Broadcast_85_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_91", - "op" : "Broadcast", - "outputs" : ["Broadcast_91_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_97", - "op" : "Broadcast", - "outputs" : ["Broadcast_97_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_103", - "op" : "Broadcast", - "outputs" : ["Broadcast_103_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_109", - "op" : "Broadcast", - "outputs" : ["Broadcast_109_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_115", - "op" : "Broadcast", - "outputs" : ["Broadcast_115_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_121", - "op" : "Broadcast", - "outputs" : ["Broadcast_121_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_127", - "op" : "Broadcast", - "outputs" : ["Broadcast_127_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_133", - "op" : "Broadcast", - "outputs" : ["Broadcast_133_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_139", - "op" : "Broadcast", - "outputs" : ["Broadcast_139_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_145", - "op" : "Broadcast", - "outputs" : ["Broadcast_145_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_151", - "op" : "Broadcast", - "outputs" : ["Broadcast_151_0"], - "shape" : [ 10, 600 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_5", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_5_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_11", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_11_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_17", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_17_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_23", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_23_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_29", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_29_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_35", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_35_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_41", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_41_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_47", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_47_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_53", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_53_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_59", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_59_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_65", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_65_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_71", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_71_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_77", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_77_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_83", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_83_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_89", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_89_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_95", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_95_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_101", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_101_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_107", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_107_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_113", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_113_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_119", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_119_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_125", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_125_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_131", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_131_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_137", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_137_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_143", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_143_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_149", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_149_0"] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "Slice_1", - "op" : "Slice", - "outputs" : ["Slice_1_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 25, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "Slice_9", - "op" : "Slice", - "outputs" : ["Slice_9_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 24, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "Slice_15", - "op" : "Slice", - "outputs" : ["Slice_15_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 23, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "Slice_21", - "op" : "Slice", - "outputs" : ["Slice_21_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 22, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "Slice_27", - "op" : "Slice", - "outputs" : ["Slice_27_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 21, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "Slice_33", - "op" : "Slice", - "outputs" : ["Slice_33_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 20, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "Slice_39", - "op" : "Slice", - "outputs" : ["Slice_39_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 19, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "Slice_45", - "op" : "Slice", - "outputs" : ["Slice_45_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 18, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "Slice_51", - "op" : "Slice", - "outputs" : ["Slice_51_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 17, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "Slice_57", - "op" : "Slice", - "outputs" : ["Slice_57_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 16, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "Slice_63", - "op" : "Slice", - "outputs" : ["Slice_63_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 15, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "Slice_69", - "op" : "Slice", - "outputs" : ["Slice_69_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 14, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "Slice_75", - "op" : "Slice", - "outputs" : ["Slice_75_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 13, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "Slice_81", - "op" : "Slice", - "outputs" : ["Slice_81_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 12, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "Slice_87", - "op" : "Slice", - "outputs" : ["Slice_87_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 11, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "Slice_93", - "op" : "Slice", - "outputs" : ["Slice_93_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 10, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "Slice_99", - "op" : "Slice", - "outputs" : ["Slice_99_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 9, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "Slice_105", - "op" : "Slice", - "outputs" : ["Slice_105_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 8, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "Slice_111", - "op" : "Slice", - "outputs" : ["Slice_111_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 7, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "Slice_117", - "op" : "Slice", - "outputs" : ["Slice_117_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 6, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "Slice_123", - "op" : "Slice", - "outputs" : ["Slice_123_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 5, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "Slice_129", - "op" : "Slice", - "outputs" : ["Slice_129_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 4, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "Slice_135", - "op" : "Slice", - "outputs" : ["Slice_135_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 3, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "Slice_141", - "op" : "Slice", - "outputs" : ["Slice_141_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 2, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_147", - "op" : "Slice", - "outputs" : ["Slice_147_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 1, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_178"], - "name" : "Broadcast_179", - "op" : "Broadcast", - "outputs" : ["Broadcast_179_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_169"], - "name" : "Broadcast_170", - "op" : "Broadcast", - "outputs" : ["Broadcast_170_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_162"], - "name" : "Broadcast_163", - "op" : "Broadcast", - "outputs" : ["Broadcast_163_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_196"], - "name" : "Broadcast_197", - "op" : "Broadcast", - "outputs" : ["Broadcast_197_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_211"], - "name" : "Broadcast_212", - "op" : "Broadcast", - "outputs" : ["Broadcast_212_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_203"], - "name" : "Broadcast_204", - "op" : "Broadcast", - "outputs" : ["Broadcast_204_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_229"], - "name" : "Broadcast_230", - "op" : "Broadcast", - "outputs" : ["Broadcast_230_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_244"], - "name" : "Broadcast_245", - "op" : "Broadcast", - "outputs" : ["Broadcast_245_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_236"], - "name" : "Broadcast_237", - "op" : "Broadcast", - "outputs" : ["Broadcast_237_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_262"], - "name" : "Broadcast_263", - "op" : "Broadcast", - "outputs" : ["Broadcast_263_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_277"], - "name" : "Broadcast_278", - "op" : "Broadcast", - "outputs" : ["Broadcast_278_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_269"], - "name" : "Broadcast_270", - "op" : "Broadcast", - "outputs" : ["Broadcast_270_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_295"], - "name" : "Broadcast_296", - "op" : "Broadcast", - "outputs" : ["Broadcast_296_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_310"], - "name" : "Broadcast_311", - "op" : "Broadcast", - "outputs" : ["Broadcast_311_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_302"], - "name" : "Broadcast_303", - "op" : "Broadcast", - "outputs" : ["Broadcast_303_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_328"], - "name" : "Broadcast_329", - "op" : "Broadcast", - "outputs" : ["Broadcast_329_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_343"], - "name" : "Broadcast_344", - "op" : "Broadcast", - "outputs" : ["Broadcast_344_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_335"], - "name" : "Broadcast_336", - "op" : "Broadcast", - "outputs" : ["Broadcast_336_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_361"], - "name" : "Broadcast_362", - "op" : "Broadcast", - "outputs" : ["Broadcast_362_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_376"], - "name" : "Broadcast_377", - "op" : "Broadcast", - "outputs" : ["Broadcast_377_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_368"], - "name" : "Broadcast_369", - "op" : "Broadcast", - "outputs" : ["Broadcast_369_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_394"], - "name" : "Broadcast_395", - "op" : "Broadcast", - "outputs" : ["Broadcast_395_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_409"], - "name" : "Broadcast_410", - "op" : "Broadcast", - "outputs" : ["Broadcast_410_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_401"], - "name" : "Broadcast_402", - "op" : "Broadcast", - "outputs" : ["Broadcast_402_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_427"], - "name" : "Broadcast_428", - "op" : "Broadcast", - "outputs" : ["Broadcast_428_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_442"], - "name" : "Broadcast_443", - "op" : "Broadcast", - "outputs" : ["Broadcast_443_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_434"], - "name" : "Broadcast_435", - "op" : "Broadcast", - "outputs" : ["Broadcast_435_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_460"], - "name" : "Broadcast_461", - "op" : "Broadcast", - "outputs" : ["Broadcast_461_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_475"], - "name" : "Broadcast_476", - "op" : "Broadcast", - "outputs" : ["Broadcast_476_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_467"], - "name" : "Broadcast_468", - "op" : "Broadcast", - "outputs" : ["Broadcast_468_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_493"], - "name" : "Broadcast_494", - "op" : "Broadcast", - "outputs" : ["Broadcast_494_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_508"], - "name" : "Broadcast_509", - "op" : "Broadcast", - "outputs" : ["Broadcast_509_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_500"], - "name" : "Broadcast_501", - "op" : "Broadcast", - "outputs" : ["Broadcast_501_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_526"], - "name" : "Broadcast_527", - "op" : "Broadcast", - "outputs" : ["Broadcast_527_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_541"], - "name" : "Broadcast_542", - "op" : "Broadcast", - "outputs" : ["Broadcast_542_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_533"], - "name" : "Broadcast_534", - "op" : "Broadcast", - "outputs" : ["Broadcast_534_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_559"], - "name" : "Broadcast_560", - "op" : "Broadcast", - "outputs" : ["Broadcast_560_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_574"], - "name" : "Broadcast_575", - "op" : "Broadcast", - "outputs" : ["Broadcast_575_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_566"], - "name" : "Broadcast_567", - "op" : "Broadcast", - "outputs" : ["Broadcast_567_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_592"], - "name" : "Broadcast_593", - "op" : "Broadcast", - "outputs" : ["Broadcast_593_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_607"], - "name" : "Broadcast_608", - "op" : "Broadcast", - "outputs" : ["Broadcast_608_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_599"], - "name" : "Broadcast_600", - "op" : "Broadcast", - "outputs" : ["Broadcast_600_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_625"], - "name" : "Broadcast_626", - "op" : "Broadcast", - "outputs" : ["Broadcast_626_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_640"], - "name" : "Broadcast_641", - "op" : "Broadcast", - "outputs" : ["Broadcast_641_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_632"], - "name" : "Broadcast_633", - "op" : "Broadcast", - "outputs" : ["Broadcast_633_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_658"], - "name" : "Broadcast_659", - "op" : "Broadcast", - "outputs" : ["Broadcast_659_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_673"], - "name" : "Broadcast_674", - "op" : "Broadcast", - "outputs" : ["Broadcast_674_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_665"], - "name" : "Broadcast_666", - "op" : "Broadcast", - "outputs" : ["Broadcast_666_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_691"], - "name" : "Broadcast_692", - "op" : "Broadcast", - "outputs" : ["Broadcast_692_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_706"], - "name" : "Broadcast_707", - "op" : "Broadcast", - "outputs" : ["Broadcast_707_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_698"], - "name" : "Broadcast_699", - "op" : "Broadcast", - "outputs" : ["Broadcast_699_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_724"], - "name" : "Broadcast_725", - "op" : "Broadcast", - "outputs" : ["Broadcast_725_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_739"], - "name" : "Broadcast_740", - "op" : "Broadcast", - "outputs" : ["Broadcast_740_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_731"], - "name" : "Broadcast_732", - "op" : "Broadcast", - "outputs" : ["Broadcast_732_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_757"], - "name" : "Broadcast_758", - "op" : "Broadcast", - "outputs" : ["Broadcast_758_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_772"], - "name" : "Broadcast_773", - "op" : "Broadcast", - "outputs" : ["Broadcast_773_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_764"], - "name" : "Broadcast_765", - "op" : "Broadcast", - "outputs" : ["Broadcast_765_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_790"], - "name" : "Broadcast_791", - "op" : "Broadcast", - "outputs" : ["Broadcast_791_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_805"], - "name" : "Broadcast_806", - "op" : "Broadcast", - "outputs" : ["Broadcast_806_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_797"], - "name" : "Broadcast_798", - "op" : "Broadcast", - "outputs" : ["Broadcast_798_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_823"], - "name" : "Broadcast_824", - "op" : "Broadcast", - "outputs" : ["Broadcast_824_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_838"], - "name" : "Broadcast_839", - "op" : "Broadcast", - "outputs" : ["Broadcast_839_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_830"], - "name" : "Broadcast_831", - "op" : "Broadcast", - "outputs" : ["Broadcast_831_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_856"], - "name" : "Broadcast_857", - "op" : "Broadcast", - "outputs" : ["Broadcast_857_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_871"], - "name" : "Broadcast_872", - "op" : "Broadcast", - "outputs" : ["Broadcast_872_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_863"], - "name" : "Broadcast_864", - "op" : "Broadcast", - "outputs" : ["Broadcast_864_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_889"], - "name" : "Broadcast_890", - "op" : "Broadcast", - "outputs" : ["Broadcast_890_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_904"], - "name" : "Broadcast_905", - "op" : "Broadcast", - "outputs" : ["Broadcast_905_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_896"], - "name" : "Broadcast_897", - "op" : "Broadcast", - "outputs" : ["Broadcast_897_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_922"], - "name" : "Broadcast_923", - "op" : "Broadcast", - "outputs" : ["Broadcast_923_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_937"], - "name" : "Broadcast_938", - "op" : "Broadcast", - "outputs" : ["Broadcast_938_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_929"], - "name" : "Broadcast_930", - "op" : "Broadcast", - "outputs" : ["Broadcast_930_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_955"], - "name" : "Broadcast_956", - "op" : "Broadcast", - "outputs" : ["Broadcast_956_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_970"], - "name" : "Broadcast_971", - "op" : "Broadcast", - "outputs" : ["Broadcast_971_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_962"], - "name" : "Broadcast_963", - "op" : "Broadcast", - "outputs" : ["Broadcast_963_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_993"], - "name" : "Broadcast_994", - "op" : "Broadcast", - "outputs" : ["Broadcast_994_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1052"], - "name" : "Broadcast_1053", - "op" : "Broadcast", - "outputs" : ["Broadcast_1053_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1113"], - "name" : "Broadcast_1114", - "op" : "Broadcast", - "outputs" : ["Broadcast_1114_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1174"], - "name" : "Broadcast_1175", - "op" : "Broadcast", - "outputs" : ["Broadcast_1175_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1235"], - "name" : "Broadcast_1236", - "op" : "Broadcast", - "outputs" : ["Broadcast_1236_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1296"], - "name" : "Broadcast_1297", - "op" : "Broadcast", - "outputs" : ["Broadcast_1297_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1357"], - "name" : "Broadcast_1358", - "op" : "Broadcast", - "outputs" : ["Broadcast_1358_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1418"], - "name" : "Broadcast_1419", - "op" : "Broadcast", - "outputs" : ["Broadcast_1419_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1479"], - "name" : "Broadcast_1480", - "op" : "Broadcast", - "outputs" : ["Broadcast_1480_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1540"], - "name" : "Broadcast_1541", - "op" : "Broadcast", - "outputs" : ["Broadcast_1541_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1601"], - "name" : "Broadcast_1602", - "op" : "Broadcast", - "outputs" : ["Broadcast_1602_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1662"], - "name" : "Broadcast_1663", - "op" : "Broadcast", - "outputs" : ["Broadcast_1663_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1723"], - "name" : "Broadcast_1724", - "op" : "Broadcast", - "outputs" : ["Broadcast_1724_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1784"], - "name" : "Broadcast_1785", - "op" : "Broadcast", - "outputs" : ["Broadcast_1785_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1845"], - "name" : "Broadcast_1846", - "op" : "Broadcast", - "outputs" : ["Broadcast_1846_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1906"], - "name" : "Broadcast_1907", - "op" : "Broadcast", - "outputs" : ["Broadcast_1907_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_1967"], - "name" : "Broadcast_1968", - "op" : "Broadcast", - "outputs" : ["Broadcast_1968_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2028"], - "name" : "Broadcast_2029", - "op" : "Broadcast", - "outputs" : ["Broadcast_2029_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2089"], - "name" : "Broadcast_2090", - "op" : "Broadcast", - "outputs" : ["Broadcast_2090_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2150"], - "name" : "Broadcast_2151", - "op" : "Broadcast", - "outputs" : ["Broadcast_2151_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2211"], - "name" : "Broadcast_2212", - "op" : "Broadcast", - "outputs" : ["Broadcast_2212_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2272"], - "name" : "Broadcast_2273", - "op" : "Broadcast", - "outputs" : ["Broadcast_2273_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2333"], - "name" : "Broadcast_2334", - "op" : "Broadcast", - "outputs" : ["Broadcast_2334_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2394"], - "name" : "Broadcast_2395", - "op" : "Broadcast", - "outputs" : ["Broadcast_2395_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_2455"], - "name" : "Broadcast_2456", - "op" : "Broadcast", - "outputs" : ["Broadcast_2456_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [ 0, 1, 2 ], - "inputs" : ["Constant_2514"], - "name" : "Broadcast_2515", - "op" : "Broadcast", - "outputs" : ["Broadcast_2515_0"], - "shape" : [ 10, 25, 150 ] - }, - { - "inputs" : [ "Parameter_153", "Reshape_156" ], - "name" : "Dot_157", - "op" : "Dot", - "outputs" : ["Dot_157_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_1"], - "name" : "Reshape_2", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_9"], - "name" : "Reshape_10", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_10_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_15"], - "name" : "Reshape_16", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_16_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_21"], - "name" : "Reshape_22", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_22_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27"], - "name" : "Reshape_28", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_28_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_33"], - "name" : "Reshape_34", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_34_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_39"], - "name" : "Reshape_40", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_40_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_45"], - "name" : "Reshape_46", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_46_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_51"], - "name" : "Reshape_52", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_52_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_57"], - "name" : "Reshape_58", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_58_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_63"], - "name" : "Reshape_64", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_64_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_69"], - "name" : "Reshape_70", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_70_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_75"], - "name" : "Reshape_76", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_76_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_81"], - "name" : "Reshape_82", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_82_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_87"], - "name" : "Reshape_88", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_88_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_93"], - "name" : "Reshape_94", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_94_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_99"], - "name" : "Reshape_100", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_100_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_105"], - "name" : "Reshape_106", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_106_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_111"], - "name" : "Reshape_112", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_112_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_117"], - "name" : "Reshape_118", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_118_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_123"], - "name" : "Reshape_124", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_124_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_129"], - "name" : "Reshape_130", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_130_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_135"], - "name" : "Reshape_136", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_136_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_141"], - "name" : "Reshape_142", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_142_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_147"], - "name" : "Reshape_148", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_148_0"] - }, - { - "inputs" : [ "Dot_157", "Broadcast_158" ], - "name" : "Add_159", - "op" : "Add", - "outputs" : ["Add_159_0"] - }, - { - "inputs" : [ "Reshape_2", "Reshape_5" ], - "name" : "Dot_6", - "op" : "Dot", - "outputs" : ["Dot_6_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2"], - "name" : "Reshape_2868", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2868_0"] - }, - { - "inputs" : [ "Reshape_10", "Reshape_11" ], - "name" : "Dot_12", - "op" : "Dot", - "outputs" : ["Dot_12_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_10"], - "name" : "Reshape_2853", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2853_0"] - }, - { - "inputs" : [ "Reshape_16", "Reshape_17" ], - "name" : "Dot_18", - "op" : "Dot", - "outputs" : ["Dot_18_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_16"], - "name" : "Reshape_2838", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2838_0"] - }, - { - "inputs" : [ "Reshape_22", "Reshape_23" ], - "name" : "Dot_24", - "op" : "Dot", - "outputs" : ["Dot_24_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22"], - "name" : "Reshape_2823", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2823_0"] - }, - { - "inputs" : [ "Reshape_28", "Reshape_29" ], - "name" : "Dot_30", - "op" : "Dot", - "outputs" : ["Dot_30_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_28"], - "name" : "Reshape_2808", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2808_0"] - }, - { - "inputs" : [ "Reshape_34", "Reshape_35" ], - "name" : "Dot_36", - "op" : "Dot", - "outputs" : ["Dot_36_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_34"], - "name" : "Reshape_2793", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2793_0"] - }, - { - "inputs" : [ "Reshape_40", "Reshape_41" ], - "name" : "Dot_42", - "op" : "Dot", - "outputs" : ["Dot_42_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_40"], - "name" : "Reshape_2778", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2778_0"] - }, - { - "inputs" : [ "Reshape_46", "Reshape_47" ], - "name" : "Dot_48", - "op" : "Dot", - "outputs" : ["Dot_48_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_46"], - "name" : "Reshape_2763", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2763_0"] - }, - { - "inputs" : [ "Reshape_52", "Reshape_53" ], - "name" : "Dot_54", - "op" : "Dot", - "outputs" : ["Dot_54_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_52"], - "name" : "Reshape_2748", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2748_0"] - }, - { - "inputs" : [ "Reshape_58", "Reshape_59" ], - "name" : "Dot_60", - "op" : "Dot", - "outputs" : ["Dot_60_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_58"], - "name" : "Reshape_2733", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2733_0"] - }, - { - "inputs" : [ "Reshape_64", "Reshape_65" ], - "name" : "Dot_66", - "op" : "Dot", - "outputs" : ["Dot_66_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_64"], - "name" : "Reshape_2718", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2718_0"] - }, - { - "inputs" : [ "Reshape_70", "Reshape_71" ], - "name" : "Dot_72", - "op" : "Dot", - "outputs" : ["Dot_72_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_70"], - "name" : "Reshape_2703", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2703_0"] - }, - { - "inputs" : [ "Reshape_76", "Reshape_77" ], - "name" : "Dot_78", - "op" : "Dot", - "outputs" : ["Dot_78_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_76"], - "name" : "Reshape_2688", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2688_0"] - }, - { - "inputs" : [ "Reshape_82", "Reshape_83" ], - "name" : "Dot_84", - "op" : "Dot", - "outputs" : ["Dot_84_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_82"], - "name" : "Reshape_2673", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2673_0"] - }, - { - "inputs" : [ "Reshape_88", "Reshape_89" ], - "name" : "Dot_90", - "op" : "Dot", - "outputs" : ["Dot_90_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_88"], - "name" : "Reshape_2658", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2658_0"] - }, - { - "inputs" : [ "Reshape_94", "Reshape_95" ], - "name" : "Dot_96", - "op" : "Dot", - "outputs" : ["Dot_96_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_94"], - "name" : "Reshape_2643", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2643_0"] - }, - { - "inputs" : [ "Reshape_100", "Reshape_101" ], - "name" : "Dot_102", - "op" : "Dot", - "outputs" : ["Dot_102_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_100"], - "name" : "Reshape_2628", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2628_0"] - }, - { - "inputs" : [ "Reshape_106", "Reshape_107" ], - "name" : "Dot_108", - "op" : "Dot", - "outputs" : ["Dot_108_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_106"], - "name" : "Reshape_2613", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2613_0"] - }, - { - "inputs" : [ "Reshape_112", "Reshape_113" ], - "name" : "Dot_114", - "op" : "Dot", - "outputs" : ["Dot_114_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_112"], - "name" : "Reshape_2598", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2598_0"] - }, - { - "inputs" : [ "Reshape_118", "Reshape_119" ], - "name" : "Dot_120", - "op" : "Dot", - "outputs" : ["Dot_120_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_118"], - "name" : "Reshape_2583", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2583_0"] - }, - { - "inputs" : [ "Reshape_124", "Reshape_125" ], - "name" : "Dot_126", - "op" : "Dot", - "outputs" : ["Dot_126_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_124"], - "name" : "Reshape_2568", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2568_0"] - }, - { - "inputs" : [ "Reshape_130", "Reshape_131" ], - "name" : "Dot_132", - "op" : "Dot", - "outputs" : ["Dot_132_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_130"], - "name" : "Reshape_2553", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2553_0"] - }, - { - "inputs" : [ "Reshape_136", "Reshape_137" ], - "name" : "Dot_138", - "op" : "Dot", - "outputs" : ["Dot_138_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_136"], - "name" : "Reshape_2538", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2538_0"] - }, - { - "inputs" : [ "Reshape_142", "Reshape_143" ], - "name" : "Dot_144", - "op" : "Dot", - "outputs" : ["Dot_144_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_142"], - "name" : "Reshape_2523", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2523_0"] - }, - { - "inputs" : [ "Reshape_148", "Reshape_149" ], - "name" : "Dot_150", - "op" : "Dot", - "outputs" : ["Dot_150_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_148"], - "name" : "Reshape_2509", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2509_0"] - }, - { - "inputs" : [ "Dot_6", "Broadcast_7" ], - "name" : "Add_8", - "op" : "Add", - "outputs" : ["Add_8_0"] - }, - { - "inputs" : [ "Dot_12", "Broadcast_13" ], - "name" : "Add_14", - "op" : "Add", - "outputs" : ["Add_14_0"] - }, - { - "inputs" : [ "Dot_18", "Broadcast_19" ], - "name" : "Add_20", - "op" : "Add", - "outputs" : ["Add_20_0"] - }, - { - "inputs" : [ "Dot_24", "Broadcast_25" ], - "name" : "Add_26", - "op" : "Add", - "outputs" : ["Add_26_0"] - }, - { - "inputs" : [ "Dot_30", "Broadcast_31" ], - "name" : "Add_32", - "op" : "Add", - "outputs" : ["Add_32_0"] - }, - { - "inputs" : [ "Dot_36", "Broadcast_37" ], - "name" : "Add_38", - "op" : "Add", - "outputs" : ["Add_38_0"] - }, - { - "inputs" : [ "Dot_42", "Broadcast_43" ], - "name" : "Add_44", - "op" : "Add", - "outputs" : ["Add_44_0"] - }, - { - "inputs" : [ "Dot_48", "Broadcast_49" ], - "name" : "Add_50", - "op" : "Add", - "outputs" : ["Add_50_0"] - }, - { - "inputs" : [ "Dot_54", "Broadcast_55" ], - "name" : "Add_56", - "op" : "Add", - "outputs" : ["Add_56_0"] - }, - { - "inputs" : [ "Dot_60", "Broadcast_61" ], - "name" : "Add_62", - "op" : "Add", - "outputs" : ["Add_62_0"] - }, - { - "inputs" : [ "Dot_66", "Broadcast_67" ], - "name" : "Add_68", - "op" : "Add", - "outputs" : ["Add_68_0"] - }, - { - "inputs" : [ "Dot_72", "Broadcast_73" ], - "name" : "Add_74", - "op" : "Add", - "outputs" : ["Add_74_0"] - }, - { - "inputs" : [ "Dot_78", "Broadcast_79" ], - "name" : "Add_80", - "op" : "Add", - "outputs" : ["Add_80_0"] - }, - { - "inputs" : [ "Dot_84", "Broadcast_85" ], - "name" : "Add_86", - "op" : "Add", - "outputs" : ["Add_86_0"] - }, - { - "inputs" : [ "Dot_90", "Broadcast_91" ], - "name" : "Add_92", - "op" : "Add", - "outputs" : ["Add_92_0"] - }, - { - "inputs" : [ "Dot_96", "Broadcast_97" ], - "name" : "Add_98", - "op" : "Add", - "outputs" : ["Add_98_0"] - }, - { - "inputs" : [ "Dot_102", "Broadcast_103" ], - "name" : "Add_104", - "op" : "Add", - "outputs" : ["Add_104_0"] - }, - { - "inputs" : [ "Dot_108", "Broadcast_109" ], - "name" : "Add_110", - "op" : "Add", - "outputs" : ["Add_110_0"] - }, - { - "inputs" : [ "Dot_114", "Broadcast_115" ], - "name" : "Add_116", - "op" : "Add", - "outputs" : ["Add_116_0"] - }, - { - "inputs" : [ "Dot_120", "Broadcast_121" ], - "name" : "Add_122", - "op" : "Add", - "outputs" : ["Add_122_0"] - }, - { - "inputs" : [ "Dot_126", "Broadcast_127" ], - "name" : "Add_128", - "op" : "Add", - "outputs" : ["Add_128_0"] - }, - { - "inputs" : [ "Dot_132", "Broadcast_133" ], - "name" : "Add_134", - "op" : "Add", - "outputs" : ["Add_134_0"] - }, - { - "inputs" : [ "Dot_138", "Broadcast_139" ], - "name" : "Add_140", - "op" : "Add", - "outputs" : ["Add_140_0"] - }, - { - "inputs" : [ "Dot_144", "Broadcast_145" ], - "name" : "Add_146", - "op" : "Add", - "outputs" : ["Add_146_0"] - }, - { - "inputs" : [ "Dot_150", "Broadcast_151" ], - "name" : "Add_152", - "op" : "Add", - "outputs" : ["Add_152_0"] - }, - { - "inputs" : [ "Add_152", "Add_159" ], - "name" : "Add_160", - "op" : "Add", - "outputs" : ["Add_160_0"] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_161", - "op" : "Slice", - "outputs" : ["Slice_161_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_168", - "op" : "Slice", - "outputs" : ["Slice_168_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_177", - "op" : "Slice", - "outputs" : ["Slice_177_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_184", - "op" : "Slice", - "outputs" : ["Slice_184_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_161"], - "name" : "Negative_164", - "op" : "Negative", - "outputs" : ["Negative_164_0"] - }, - { - "inputs" : ["Slice_168"], - "name" : "Negative_171", - "op" : "Negative", - "outputs" : ["Negative_171_0"] - }, - { - "inputs" : ["Slice_177"], - "name" : "Negative_180", - "op" : "Negative", - "outputs" : ["Negative_180_0"] - }, - { - "inputs" : ["Slice_184"], - "name" : "Tanh_185", - "op" : "Tanh", - "outputs" : ["Tanh_185_0"] - }, - { - "inputs" : ["Slice_184"], - "name" : "Cosh_2452", - "op" : "Cosh", - "outputs" : ["Cosh_2452_0"] - }, - { - "inputs" : ["Negative_164"], - "name" : "Exp_165", - "op" : "Exp", - "outputs" : ["Exp_165_0"] - }, - { - "inputs" : ["Negative_171"], - "name" : "Exp_172", - "op" : "Exp", - "outputs" : ["Exp_172_0"] - }, - { - "inputs" : ["Negative_180"], - "name" : "Exp_181", - "op" : "Exp", - "outputs" : ["Exp_181_0"] - }, - { - "inputs" : [ "Cosh_2452", "Cosh_2452" ], - "name" : "Multiply_2453", - "op" : "Multiply", - "outputs" : ["Multiply_2453_0"] - }, - { - "inputs" : [ "Broadcast_163", "Exp_165" ], - "name" : "Add_166", - "op" : "Add", - "outputs" : ["Add_166_0"] - }, - { - "inputs" : [ "Broadcast_170", "Exp_172" ], - "name" : "Add_173", - "op" : "Add", - "outputs" : ["Add_173_0"] - }, - { - "inputs" : [ "Broadcast_179", "Exp_181" ], - "name" : "Add_182", - "op" : "Add", - "outputs" : ["Add_182_0"] - }, - { - "inputs" : [ "Broadcast_163", "Add_166" ], - "name" : "Divide_167", - "op" : "Divide", - "outputs" : ["Divide_167_0"] - }, - { - "inputs" : [ "Broadcast_170", "Add_173" ], - "name" : "Divide_174", - "op" : "Divide", - "outputs" : ["Divide_174_0"] - }, - { - "inputs" : [ "Broadcast_179", "Add_182" ], - "name" : "Divide_183", - "op" : "Divide", - "outputs" : ["Divide_183_0"] - }, - { - "inputs" : [ "Divide_174", "Parameter_175" ], - "name" : "Multiply_176", - "op" : "Multiply", - "outputs" : ["Multiply_176_0"] - }, - { - "inputs" : [ "Divide_183", "Tanh_185" ], - "name" : "Multiply_186", - "op" : "Multiply", - "outputs" : ["Multiply_186_0"] - }, - { - "inputs" : [ "Multiply_176", "Multiply_186" ], - "name" : "Add_187", - "op" : "Add", - "outputs" : ["Add_187_0"] - }, - { - "inputs" : ["Add_187"], - "name" : "Tanh_188", - "op" : "Tanh", - "outputs" : ["Tanh_188_0"] - }, - { - "inputs" : ["Add_187"], - "name" : "Cosh_2446", - "op" : "Cosh", - "outputs" : ["Cosh_2446_0"] - }, - { - "inputs" : [ "Divide_167", "Tanh_188" ], - "name" : "Multiply_189", - "op" : "Multiply", - "outputs" : ["Multiply_189_0"] - }, - { - "inputs" : [ "Cosh_2446", "Cosh_2446" ], - "name" : "Multiply_2447", - "op" : "Multiply", - "outputs" : ["Multiply_2447_0"] - }, - { - "inputs" : [ "Multiply_189", "Reshape_190" ], - "name" : "Dot_191", - "op" : "Dot", - "outputs" : ["Dot_191_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_189"], - "name" : "Reshape_2439", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2439_0"] - }, - { - "inputs" : [ "Dot_191", "Broadcast_192" ], - "name" : "Add_193", - "op" : "Add", - "outputs" : ["Add_193_0"] - }, - { - "inputs" : [ "Add_146", "Add_193" ], - "name" : "Add_194", - "op" : "Add", - "outputs" : ["Add_194_0"] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_195", - "op" : "Slice", - "outputs" : ["Slice_195_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_202", - "op" : "Slice", - "outputs" : ["Slice_202_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_210", - "op" : "Slice", - "outputs" : ["Slice_210_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_217", - "op" : "Slice", - "outputs" : ["Slice_217_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_195"], - "name" : "Negative_198", - "op" : "Negative", - "outputs" : ["Negative_198_0"] - }, - { - "inputs" : ["Slice_202"], - "name" : "Negative_205", - "op" : "Negative", - "outputs" : ["Negative_205_0"] - }, - { - "inputs" : ["Slice_210"], - "name" : "Negative_213", - "op" : "Negative", - "outputs" : ["Negative_213_0"] - }, - { - "inputs" : ["Slice_217"], - "name" : "Tanh_218", - "op" : "Tanh", - "outputs" : ["Tanh_218_0"] - }, - { - "inputs" : ["Slice_217"], - "name" : "Cosh_2391", - "op" : "Cosh", - "outputs" : ["Cosh_2391_0"] - }, - { - "inputs" : ["Negative_198"], - "name" : "Exp_199", - "op" : "Exp", - "outputs" : ["Exp_199_0"] - }, - { - "inputs" : ["Negative_205"], - "name" : "Exp_206", - "op" : "Exp", - "outputs" : ["Exp_206_0"] - }, - { - "inputs" : ["Negative_213"], - "name" : "Exp_214", - "op" : "Exp", - "outputs" : ["Exp_214_0"] - }, - { - "inputs" : [ "Cosh_2391", "Cosh_2391" ], - "name" : "Multiply_2392", - "op" : "Multiply", - "outputs" : ["Multiply_2392_0"] - }, - { - "inputs" : [ "Broadcast_197", "Exp_199" ], - "name" : "Add_200", - "op" : "Add", - "outputs" : ["Add_200_0"] - }, - { - "inputs" : [ "Broadcast_204", "Exp_206" ], - "name" : "Add_207", - "op" : "Add", - "outputs" : ["Add_207_0"] - }, - { - "inputs" : [ "Broadcast_212", "Exp_214" ], - "name" : "Add_215", - "op" : "Add", - "outputs" : ["Add_215_0"] - }, - { - "inputs" : [ "Broadcast_197", "Add_200" ], - "name" : "Divide_201", - "op" : "Divide", - "outputs" : ["Divide_201_0"] - }, - { - "inputs" : [ "Broadcast_204", "Add_207" ], - "name" : "Divide_208", - "op" : "Divide", - "outputs" : ["Divide_208_0"] - }, - { - "inputs" : [ "Broadcast_212", "Add_215" ], - "name" : "Divide_216", - "op" : "Divide", - "outputs" : ["Divide_216_0"] - }, - { - "inputs" : [ "Divide_208", "Add_187" ], - "name" : "Multiply_209", - "op" : "Multiply", - "outputs" : ["Multiply_209_0"] - }, - { - "inputs" : [ "Divide_216", "Tanh_218" ], - "name" : "Multiply_219", - "op" : "Multiply", - "outputs" : ["Multiply_219_0"] - }, - { - "inputs" : [ "Multiply_209", "Multiply_219" ], - "name" : "Add_220", - "op" : "Add", - "outputs" : ["Add_220_0"] - }, - { - "inputs" : ["Add_220"], - "name" : "Tanh_221", - "op" : "Tanh", - "outputs" : ["Tanh_221_0"] - }, - { - "inputs" : ["Add_220"], - "name" : "Cosh_2385", - "op" : "Cosh", - "outputs" : ["Cosh_2385_0"] - }, - { - "inputs" : [ "Divide_201", "Tanh_221" ], - "name" : "Multiply_222", - "op" : "Multiply", - "outputs" : ["Multiply_222_0"] - }, - { - "inputs" : [ "Cosh_2385", "Cosh_2385" ], - "name" : "Multiply_2386", - "op" : "Multiply", - "outputs" : ["Multiply_2386_0"] - }, - { - "inputs" : [ "Multiply_222", "Reshape_223" ], - "name" : "Dot_224", - "op" : "Dot", - "outputs" : ["Dot_224_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_222"], - "name" : "Reshape_2378", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2378_0"] - }, - { - "inputs" : [ "Dot_224", "Broadcast_225" ], - "name" : "Add_226", - "op" : "Add", - "outputs" : ["Add_226_0"] - }, - { - "inputs" : [ "Add_140", "Add_226" ], - "name" : "Add_227", - "op" : "Add", - "outputs" : ["Add_227_0"] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_228", - "op" : "Slice", - "outputs" : ["Slice_228_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_235", - "op" : "Slice", - "outputs" : ["Slice_235_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_243", - "op" : "Slice", - "outputs" : ["Slice_243_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_250", - "op" : "Slice", - "outputs" : ["Slice_250_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_228"], - "name" : "Negative_231", - "op" : "Negative", - "outputs" : ["Negative_231_0"] - }, - { - "inputs" : ["Slice_235"], - "name" : "Negative_238", - "op" : "Negative", - "outputs" : ["Negative_238_0"] - }, - { - "inputs" : ["Slice_243"], - "name" : "Negative_246", - "op" : "Negative", - "outputs" : ["Negative_246_0"] - }, - { - "inputs" : ["Slice_250"], - "name" : "Tanh_251", - "op" : "Tanh", - "outputs" : ["Tanh_251_0"] - }, - { - "inputs" : ["Slice_250"], - "name" : "Cosh_2330", - "op" : "Cosh", - "outputs" : ["Cosh_2330_0"] - }, - { - "inputs" : ["Negative_231"], - "name" : "Exp_232", - "op" : "Exp", - "outputs" : ["Exp_232_0"] - }, - { - "inputs" : ["Negative_238"], - "name" : "Exp_239", - "op" : "Exp", - "outputs" : ["Exp_239_0"] - }, - { - "inputs" : ["Negative_246"], - "name" : "Exp_247", - "op" : "Exp", - "outputs" : ["Exp_247_0"] - }, - { - "inputs" : [ "Cosh_2330", "Cosh_2330" ], - "name" : "Multiply_2331", - "op" : "Multiply", - "outputs" : ["Multiply_2331_0"] - }, - { - "inputs" : [ "Broadcast_230", "Exp_232" ], - "name" : "Add_233", - "op" : "Add", - "outputs" : ["Add_233_0"] - }, - { - "inputs" : [ "Broadcast_237", "Exp_239" ], - "name" : "Add_240", - "op" : "Add", - "outputs" : ["Add_240_0"] - }, - { - "inputs" : [ "Broadcast_245", "Exp_247" ], - "name" : "Add_248", - "op" : "Add", - "outputs" : ["Add_248_0"] - }, - { - "inputs" : [ "Broadcast_230", "Add_233" ], - "name" : "Divide_234", - "op" : "Divide", - "outputs" : ["Divide_234_0"] - }, - { - "inputs" : [ "Broadcast_237", "Add_240" ], - "name" : "Divide_241", - "op" : "Divide", - "outputs" : ["Divide_241_0"] - }, - { - "inputs" : [ "Broadcast_245", "Add_248" ], - "name" : "Divide_249", - "op" : "Divide", - "outputs" : ["Divide_249_0"] - }, - { - "inputs" : [ "Divide_241", "Add_220" ], - "name" : "Multiply_242", - "op" : "Multiply", - "outputs" : ["Multiply_242_0"] - }, - { - "inputs" : [ "Divide_249", "Tanh_251" ], - "name" : "Multiply_252", - "op" : "Multiply", - "outputs" : ["Multiply_252_0"] - }, - { - "inputs" : [ "Multiply_242", "Multiply_252" ], - "name" : "Add_253", - "op" : "Add", - "outputs" : ["Add_253_0"] - }, - { - "inputs" : ["Add_253"], - "name" : "Tanh_254", - "op" : "Tanh", - "outputs" : ["Tanh_254_0"] - }, - { - "inputs" : ["Add_253"], - "name" : "Cosh_2324", - "op" : "Cosh", - "outputs" : ["Cosh_2324_0"] - }, - { - "inputs" : [ "Divide_234", "Tanh_254" ], - "name" : "Multiply_255", - "op" : "Multiply", - "outputs" : ["Multiply_255_0"] - }, - { - "inputs" : [ "Cosh_2324", "Cosh_2324" ], - "name" : "Multiply_2325", - "op" : "Multiply", - "outputs" : ["Multiply_2325_0"] - }, - { - "inputs" : [ "Multiply_255", "Reshape_256" ], - "name" : "Dot_257", - "op" : "Dot", - "outputs" : ["Dot_257_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_255"], - "name" : "Reshape_2317", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2317_0"] - }, - { - "inputs" : [ "Dot_257", "Broadcast_258" ], - "name" : "Add_259", - "op" : "Add", - "outputs" : ["Add_259_0"] - }, - { - "inputs" : [ "Add_134", "Add_259" ], - "name" : "Add_260", - "op" : "Add", - "outputs" : ["Add_260_0"] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_261", - "op" : "Slice", - "outputs" : ["Slice_261_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_268", - "op" : "Slice", - "outputs" : ["Slice_268_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_276", - "op" : "Slice", - "outputs" : ["Slice_276_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_283", - "op" : "Slice", - "outputs" : ["Slice_283_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_261"], - "name" : "Negative_264", - "op" : "Negative", - "outputs" : ["Negative_264_0"] - }, - { - "inputs" : ["Slice_268"], - "name" : "Negative_271", - "op" : "Negative", - "outputs" : ["Negative_271_0"] - }, - { - "inputs" : ["Slice_276"], - "name" : "Negative_279", - "op" : "Negative", - "outputs" : ["Negative_279_0"] - }, - { - "inputs" : ["Slice_283"], - "name" : "Tanh_284", - "op" : "Tanh", - "outputs" : ["Tanh_284_0"] - }, - { - "inputs" : ["Slice_283"], - "name" : "Cosh_2269", - "op" : "Cosh", - "outputs" : ["Cosh_2269_0"] - }, - { - "inputs" : ["Negative_264"], - "name" : "Exp_265", - "op" : "Exp", - "outputs" : ["Exp_265_0"] - }, - { - "inputs" : ["Negative_271"], - "name" : "Exp_272", - "op" : "Exp", - "outputs" : ["Exp_272_0"] - }, - { - "inputs" : ["Negative_279"], - "name" : "Exp_280", - "op" : "Exp", - "outputs" : ["Exp_280_0"] - }, - { - "inputs" : [ "Cosh_2269", "Cosh_2269" ], - "name" : "Multiply_2270", - "op" : "Multiply", - "outputs" : ["Multiply_2270_0"] - }, - { - "inputs" : [ "Broadcast_263", "Exp_265" ], - "name" : "Add_266", - "op" : "Add", - "outputs" : ["Add_266_0"] - }, - { - "inputs" : [ "Broadcast_270", "Exp_272" ], - "name" : "Add_273", - "op" : "Add", - "outputs" : ["Add_273_0"] - }, - { - "inputs" : [ "Broadcast_278", "Exp_280" ], - "name" : "Add_281", - "op" : "Add", - "outputs" : ["Add_281_0"] - }, - { - "inputs" : [ "Broadcast_263", "Add_266" ], - "name" : "Divide_267", - "op" : "Divide", - "outputs" : ["Divide_267_0"] - }, - { - "inputs" : [ "Broadcast_270", "Add_273" ], - "name" : "Divide_274", - "op" : "Divide", - "outputs" : ["Divide_274_0"] - }, - { - "inputs" : [ "Broadcast_278", "Add_281" ], - "name" : "Divide_282", - "op" : "Divide", - "outputs" : ["Divide_282_0"] - }, - { - "inputs" : [ "Divide_274", "Add_253" ], - "name" : "Multiply_275", - "op" : "Multiply", - "outputs" : ["Multiply_275_0"] - }, - { - "inputs" : [ "Divide_282", "Tanh_284" ], - "name" : "Multiply_285", - "op" : "Multiply", - "outputs" : ["Multiply_285_0"] - }, - { - "inputs" : [ "Multiply_275", "Multiply_285" ], - "name" : "Add_286", - "op" : "Add", - "outputs" : ["Add_286_0"] - }, - { - "inputs" : ["Add_286"], - "name" : "Tanh_287", - "op" : "Tanh", - "outputs" : ["Tanh_287_0"] - }, - { - "inputs" : ["Add_286"], - "name" : "Cosh_2263", - "op" : "Cosh", - "outputs" : ["Cosh_2263_0"] - }, - { - "inputs" : [ "Divide_267", "Tanh_287" ], - "name" : "Multiply_288", - "op" : "Multiply", - "outputs" : ["Multiply_288_0"] - }, - { - "inputs" : [ "Cosh_2263", "Cosh_2263" ], - "name" : "Multiply_2264", - "op" : "Multiply", - "outputs" : ["Multiply_2264_0"] - }, - { - "inputs" : [ "Multiply_288", "Reshape_289" ], - "name" : "Dot_290", - "op" : "Dot", - "outputs" : ["Dot_290_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_288"], - "name" : "Reshape_2256", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2256_0"] - }, - { - "inputs" : [ "Dot_290", "Broadcast_291" ], - "name" : "Add_292", - "op" : "Add", - "outputs" : ["Add_292_0"] - }, - { - "inputs" : [ "Add_128", "Add_292" ], - "name" : "Add_293", - "op" : "Add", - "outputs" : ["Add_293_0"] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_294", - "op" : "Slice", - "outputs" : ["Slice_294_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_301", - "op" : "Slice", - "outputs" : ["Slice_301_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_309", - "op" : "Slice", - "outputs" : ["Slice_309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_316", - "op" : "Slice", - "outputs" : ["Slice_316_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_294"], - "name" : "Negative_297", - "op" : "Negative", - "outputs" : ["Negative_297_0"] - }, - { - "inputs" : ["Slice_301"], - "name" : "Negative_304", - "op" : "Negative", - "outputs" : ["Negative_304_0"] - }, - { - "inputs" : ["Slice_309"], - "name" : "Negative_312", - "op" : "Negative", - "outputs" : ["Negative_312_0"] - }, - { - "inputs" : ["Slice_316"], - "name" : "Tanh_317", - "op" : "Tanh", - "outputs" : ["Tanh_317_0"] - }, - { - "inputs" : ["Slice_316"], - "name" : "Cosh_2208", - "op" : "Cosh", - "outputs" : ["Cosh_2208_0"] - }, - { - "inputs" : ["Negative_297"], - "name" : "Exp_298", - "op" : "Exp", - "outputs" : ["Exp_298_0"] - }, - { - "inputs" : ["Negative_304"], - "name" : "Exp_305", - "op" : "Exp", - "outputs" : ["Exp_305_0"] - }, - { - "inputs" : ["Negative_312"], - "name" : "Exp_313", - "op" : "Exp", - "outputs" : ["Exp_313_0"] - }, - { - "inputs" : [ "Cosh_2208", "Cosh_2208" ], - "name" : "Multiply_2209", - "op" : "Multiply", - "outputs" : ["Multiply_2209_0"] - }, - { - "inputs" : [ "Broadcast_296", "Exp_298" ], - "name" : "Add_299", - "op" : "Add", - "outputs" : ["Add_299_0"] - }, - { - "inputs" : [ "Broadcast_303", "Exp_305" ], - "name" : "Add_306", - "op" : "Add", - "outputs" : ["Add_306_0"] - }, - { - "inputs" : [ "Broadcast_311", "Exp_313" ], - "name" : "Add_314", - "op" : "Add", - "outputs" : ["Add_314_0"] - }, - { - "inputs" : [ "Broadcast_296", "Add_299" ], - "name" : "Divide_300", - "op" : "Divide", - "outputs" : ["Divide_300_0"] - }, - { - "inputs" : [ "Broadcast_303", "Add_306" ], - "name" : "Divide_307", - "op" : "Divide", - "outputs" : ["Divide_307_0"] - }, - { - "inputs" : [ "Broadcast_311", "Add_314" ], - "name" : "Divide_315", - "op" : "Divide", - "outputs" : ["Divide_315_0"] - }, - { - "inputs" : [ "Divide_307", "Add_286" ], - "name" : "Multiply_308", - "op" : "Multiply", - "outputs" : ["Multiply_308_0"] - }, - { - "inputs" : [ "Divide_315", "Tanh_317" ], - "name" : "Multiply_318", - "op" : "Multiply", - "outputs" : ["Multiply_318_0"] - }, - { - "inputs" : [ "Multiply_308", "Multiply_318" ], - "name" : "Add_319", - "op" : "Add", - "outputs" : ["Add_319_0"] - }, - { - "inputs" : ["Add_319"], - "name" : "Tanh_320", - "op" : "Tanh", - "outputs" : ["Tanh_320_0"] - }, - { - "inputs" : ["Add_319"], - "name" : "Cosh_2202", - "op" : "Cosh", - "outputs" : ["Cosh_2202_0"] - }, - { - "inputs" : [ "Divide_300", "Tanh_320" ], - "name" : "Multiply_321", - "op" : "Multiply", - "outputs" : ["Multiply_321_0"] - }, - { - "inputs" : [ "Cosh_2202", "Cosh_2202" ], - "name" : "Multiply_2203", - "op" : "Multiply", - "outputs" : ["Multiply_2203_0"] - }, - { - "inputs" : [ "Multiply_321", "Reshape_322" ], - "name" : "Dot_323", - "op" : "Dot", - "outputs" : ["Dot_323_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_321"], - "name" : "Reshape_2195", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2195_0"] - }, - { - "inputs" : [ "Dot_323", "Broadcast_324" ], - "name" : "Add_325", - "op" : "Add", - "outputs" : ["Add_325_0"] - }, - { - "inputs" : [ "Add_122", "Add_325" ], - "name" : "Add_326", - "op" : "Add", - "outputs" : ["Add_326_0"] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_327", - "op" : "Slice", - "outputs" : ["Slice_327_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_334", - "op" : "Slice", - "outputs" : ["Slice_334_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_342", - "op" : "Slice", - "outputs" : ["Slice_342_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_349", - "op" : "Slice", - "outputs" : ["Slice_349_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_327"], - "name" : "Negative_330", - "op" : "Negative", - "outputs" : ["Negative_330_0"] - }, - { - "inputs" : ["Slice_334"], - "name" : "Negative_337", - "op" : "Negative", - "outputs" : ["Negative_337_0"] - }, - { - "inputs" : ["Slice_342"], - "name" : "Negative_345", - "op" : "Negative", - "outputs" : ["Negative_345_0"] - }, - { - "inputs" : ["Slice_349"], - "name" : "Tanh_350", - "op" : "Tanh", - "outputs" : ["Tanh_350_0"] - }, - { - "inputs" : ["Slice_349"], - "name" : "Cosh_2147", - "op" : "Cosh", - "outputs" : ["Cosh_2147_0"] - }, - { - "inputs" : ["Negative_330"], - "name" : "Exp_331", - "op" : "Exp", - "outputs" : ["Exp_331_0"] - }, - { - "inputs" : ["Negative_337"], - "name" : "Exp_338", - "op" : "Exp", - "outputs" : ["Exp_338_0"] - }, - { - "inputs" : ["Negative_345"], - "name" : "Exp_346", - "op" : "Exp", - "outputs" : ["Exp_346_0"] - }, - { - "inputs" : [ "Cosh_2147", "Cosh_2147" ], - "name" : "Multiply_2148", - "op" : "Multiply", - "outputs" : ["Multiply_2148_0"] - }, - { - "inputs" : [ "Broadcast_329", "Exp_331" ], - "name" : "Add_332", - "op" : "Add", - "outputs" : ["Add_332_0"] - }, - { - "inputs" : [ "Broadcast_336", "Exp_338" ], - "name" : "Add_339", - "op" : "Add", - "outputs" : ["Add_339_0"] - }, - { - "inputs" : [ "Broadcast_344", "Exp_346" ], - "name" : "Add_347", - "op" : "Add", - "outputs" : ["Add_347_0"] - }, - { - "inputs" : [ "Broadcast_329", "Add_332" ], - "name" : "Divide_333", - "op" : "Divide", - "outputs" : ["Divide_333_0"] - }, - { - "inputs" : [ "Broadcast_336", "Add_339" ], - "name" : "Divide_340", - "op" : "Divide", - "outputs" : ["Divide_340_0"] - }, - { - "inputs" : [ "Broadcast_344", "Add_347" ], - "name" : "Divide_348", - "op" : "Divide", - "outputs" : ["Divide_348_0"] - }, - { - "inputs" : [ "Divide_340", "Add_319" ], - "name" : "Multiply_341", - "op" : "Multiply", - "outputs" : ["Multiply_341_0"] - }, - { - "inputs" : [ "Divide_348", "Tanh_350" ], - "name" : "Multiply_351", - "op" : "Multiply", - "outputs" : ["Multiply_351_0"] - }, - { - "inputs" : [ "Multiply_341", "Multiply_351" ], - "name" : "Add_352", - "op" : "Add", - "outputs" : ["Add_352_0"] - }, - { - "inputs" : ["Add_352"], - "name" : "Tanh_353", - "op" : "Tanh", - "outputs" : ["Tanh_353_0"] - }, - { - "inputs" : ["Add_352"], - "name" : "Cosh_2141", - "op" : "Cosh", - "outputs" : ["Cosh_2141_0"] - }, - { - "inputs" : [ "Divide_333", "Tanh_353" ], - "name" : "Multiply_354", - "op" : "Multiply", - "outputs" : ["Multiply_354_0"] - }, - { - "inputs" : [ "Cosh_2141", "Cosh_2141" ], - "name" : "Multiply_2142", - "op" : "Multiply", - "outputs" : ["Multiply_2142_0"] - }, - { - "inputs" : [ "Multiply_354", "Reshape_355" ], - "name" : "Dot_356", - "op" : "Dot", - "outputs" : ["Dot_356_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_354"], - "name" : "Reshape_2134", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2134_0"] - }, - { - "inputs" : [ "Dot_356", "Broadcast_357" ], - "name" : "Add_358", - "op" : "Add", - "outputs" : ["Add_358_0"] - }, - { - "inputs" : [ "Add_116", "Add_358" ], - "name" : "Add_359", - "op" : "Add", - "outputs" : ["Add_359_0"] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_360", - "op" : "Slice", - "outputs" : ["Slice_360_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_367", - "op" : "Slice", - "outputs" : ["Slice_367_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_375", - "op" : "Slice", - "outputs" : ["Slice_375_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_382", - "op" : "Slice", - "outputs" : ["Slice_382_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_360"], - "name" : "Negative_363", - "op" : "Negative", - "outputs" : ["Negative_363_0"] - }, - { - "inputs" : ["Slice_367"], - "name" : "Negative_370", - "op" : "Negative", - "outputs" : ["Negative_370_0"] - }, - { - "inputs" : ["Slice_375"], - "name" : "Negative_378", - "op" : "Negative", - "outputs" : ["Negative_378_0"] - }, - { - "inputs" : ["Slice_382"], - "name" : "Tanh_383", - "op" : "Tanh", - "outputs" : ["Tanh_383_0"] - }, - { - "inputs" : ["Slice_382"], - "name" : "Cosh_2086", - "op" : "Cosh", - "outputs" : ["Cosh_2086_0"] - }, - { - "inputs" : ["Negative_363"], - "name" : "Exp_364", - "op" : "Exp", - "outputs" : ["Exp_364_0"] - }, - { - "inputs" : ["Negative_370"], - "name" : "Exp_371", - "op" : "Exp", - "outputs" : ["Exp_371_0"] - }, - { - "inputs" : ["Negative_378"], - "name" : "Exp_379", - "op" : "Exp", - "outputs" : ["Exp_379_0"] - }, - { - "inputs" : [ "Cosh_2086", "Cosh_2086" ], - "name" : "Multiply_2087", - "op" : "Multiply", - "outputs" : ["Multiply_2087_0"] - }, - { - "inputs" : [ "Broadcast_362", "Exp_364" ], - "name" : "Add_365", - "op" : "Add", - "outputs" : ["Add_365_0"] - }, - { - "inputs" : [ "Broadcast_369", "Exp_371" ], - "name" : "Add_372", - "op" : "Add", - "outputs" : ["Add_372_0"] - }, - { - "inputs" : [ "Broadcast_377", "Exp_379" ], - "name" : "Add_380", - "op" : "Add", - "outputs" : ["Add_380_0"] - }, - { - "inputs" : [ "Broadcast_362", "Add_365" ], - "name" : "Divide_366", - "op" : "Divide", - "outputs" : ["Divide_366_0"] - }, - { - "inputs" : [ "Broadcast_369", "Add_372" ], - "name" : "Divide_373", - "op" : "Divide", - "outputs" : ["Divide_373_0"] - }, - { - "inputs" : [ "Broadcast_377", "Add_380" ], - "name" : "Divide_381", - "op" : "Divide", - "outputs" : ["Divide_381_0"] - }, - { - "inputs" : [ "Divide_373", "Add_352" ], - "name" : "Multiply_374", - "op" : "Multiply", - "outputs" : ["Multiply_374_0"] - }, - { - "inputs" : [ "Divide_381", "Tanh_383" ], - "name" : "Multiply_384", - "op" : "Multiply", - "outputs" : ["Multiply_384_0"] - }, - { - "inputs" : [ "Multiply_374", "Multiply_384" ], - "name" : "Add_385", - "op" : "Add", - "outputs" : ["Add_385_0"] - }, - { - "inputs" : ["Add_385"], - "name" : "Tanh_386", - "op" : "Tanh", - "outputs" : ["Tanh_386_0"] - }, - { - "inputs" : ["Add_385"], - "name" : "Cosh_2080", - "op" : "Cosh", - "outputs" : ["Cosh_2080_0"] - }, - { - "inputs" : [ "Divide_366", "Tanh_386" ], - "name" : "Multiply_387", - "op" : "Multiply", - "outputs" : ["Multiply_387_0"] - }, - { - "inputs" : [ "Cosh_2080", "Cosh_2080" ], - "name" : "Multiply_2081", - "op" : "Multiply", - "outputs" : ["Multiply_2081_0"] - }, - { - "inputs" : [ "Multiply_387", "Reshape_388" ], - "name" : "Dot_389", - "op" : "Dot", - "outputs" : ["Dot_389_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_387"], - "name" : "Reshape_2073", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2073_0"] - }, - { - "inputs" : [ "Dot_389", "Broadcast_390" ], - "name" : "Add_391", - "op" : "Add", - "outputs" : ["Add_391_0"] - }, - { - "inputs" : [ "Add_110", "Add_391" ], - "name" : "Add_392", - "op" : "Add", - "outputs" : ["Add_392_0"] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_393", - "op" : "Slice", - "outputs" : ["Slice_393_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_400", - "op" : "Slice", - "outputs" : ["Slice_400_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_408", - "op" : "Slice", - "outputs" : ["Slice_408_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_415", - "op" : "Slice", - "outputs" : ["Slice_415_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_393"], - "name" : "Negative_396", - "op" : "Negative", - "outputs" : ["Negative_396_0"] - }, - { - "inputs" : ["Slice_400"], - "name" : "Negative_403", - "op" : "Negative", - "outputs" : ["Negative_403_0"] - }, - { - "inputs" : ["Slice_408"], - "name" : "Negative_411", - "op" : "Negative", - "outputs" : ["Negative_411_0"] - }, - { - "inputs" : ["Slice_415"], - "name" : "Tanh_416", - "op" : "Tanh", - "outputs" : ["Tanh_416_0"] - }, - { - "inputs" : ["Slice_415"], - "name" : "Cosh_2025", - "op" : "Cosh", - "outputs" : ["Cosh_2025_0"] - }, - { - "inputs" : ["Negative_396"], - "name" : "Exp_397", - "op" : "Exp", - "outputs" : ["Exp_397_0"] - }, - { - "inputs" : ["Negative_403"], - "name" : "Exp_404", - "op" : "Exp", - "outputs" : ["Exp_404_0"] - }, - { - "inputs" : ["Negative_411"], - "name" : "Exp_412", - "op" : "Exp", - "outputs" : ["Exp_412_0"] - }, - { - "inputs" : [ "Cosh_2025", "Cosh_2025" ], - "name" : "Multiply_2026", - "op" : "Multiply", - "outputs" : ["Multiply_2026_0"] - }, - { - "inputs" : [ "Broadcast_395", "Exp_397" ], - "name" : "Add_398", - "op" : "Add", - "outputs" : ["Add_398_0"] - }, - { - "inputs" : [ "Broadcast_402", "Exp_404" ], - "name" : "Add_405", - "op" : "Add", - "outputs" : ["Add_405_0"] - }, - { - "inputs" : [ "Broadcast_410", "Exp_412" ], - "name" : "Add_413", - "op" : "Add", - "outputs" : ["Add_413_0"] - }, - { - "inputs" : [ "Broadcast_395", "Add_398" ], - "name" : "Divide_399", - "op" : "Divide", - "outputs" : ["Divide_399_0"] - }, - { - "inputs" : [ "Broadcast_402", "Add_405" ], - "name" : "Divide_406", - "op" : "Divide", - "outputs" : ["Divide_406_0"] - }, - { - "inputs" : [ "Broadcast_410", "Add_413" ], - "name" : "Divide_414", - "op" : "Divide", - "outputs" : ["Divide_414_0"] - }, - { - "inputs" : [ "Divide_406", "Add_385" ], - "name" : "Multiply_407", - "op" : "Multiply", - "outputs" : ["Multiply_407_0"] - }, - { - "inputs" : [ "Divide_414", "Tanh_416" ], - "name" : "Multiply_417", - "op" : "Multiply", - "outputs" : ["Multiply_417_0"] - }, - { - "inputs" : [ "Multiply_407", "Multiply_417" ], - "name" : "Add_418", - "op" : "Add", - "outputs" : ["Add_418_0"] - }, - { - "inputs" : ["Add_418"], - "name" : "Tanh_419", - "op" : "Tanh", - "outputs" : ["Tanh_419_0"] - }, - { - "inputs" : ["Add_418"], - "name" : "Cosh_2019", - "op" : "Cosh", - "outputs" : ["Cosh_2019_0"] - }, - { - "inputs" : [ "Divide_399", "Tanh_419" ], - "name" : "Multiply_420", - "op" : "Multiply", - "outputs" : ["Multiply_420_0"] - }, - { - "inputs" : [ "Cosh_2019", "Cosh_2019" ], - "name" : "Multiply_2020", - "op" : "Multiply", - "outputs" : ["Multiply_2020_0"] - }, - { - "inputs" : [ "Multiply_420", "Reshape_421" ], - "name" : "Dot_422", - "op" : "Dot", - "outputs" : ["Dot_422_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_420"], - "name" : "Reshape_2012", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_2012_0"] - }, - { - "inputs" : [ "Dot_422", "Broadcast_423" ], - "name" : "Add_424", - "op" : "Add", - "outputs" : ["Add_424_0"] - }, - { - "inputs" : [ "Add_104", "Add_424" ], - "name" : "Add_425", - "op" : "Add", - "outputs" : ["Add_425_0"] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_426", - "op" : "Slice", - "outputs" : ["Slice_426_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_433", - "op" : "Slice", - "outputs" : ["Slice_433_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_441", - "op" : "Slice", - "outputs" : ["Slice_441_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_448", - "op" : "Slice", - "outputs" : ["Slice_448_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_426"], - "name" : "Negative_429", - "op" : "Negative", - "outputs" : ["Negative_429_0"] - }, - { - "inputs" : ["Slice_433"], - "name" : "Negative_436", - "op" : "Negative", - "outputs" : ["Negative_436_0"] - }, - { - "inputs" : ["Slice_441"], - "name" : "Negative_444", - "op" : "Negative", - "outputs" : ["Negative_444_0"] - }, - { - "inputs" : ["Slice_448"], - "name" : "Tanh_449", - "op" : "Tanh", - "outputs" : ["Tanh_449_0"] - }, - { - "inputs" : ["Slice_448"], - "name" : "Cosh_1964", - "op" : "Cosh", - "outputs" : ["Cosh_1964_0"] - }, - { - "inputs" : ["Negative_429"], - "name" : "Exp_430", - "op" : "Exp", - "outputs" : ["Exp_430_0"] - }, - { - "inputs" : ["Negative_436"], - "name" : "Exp_437", - "op" : "Exp", - "outputs" : ["Exp_437_0"] - }, - { - "inputs" : ["Negative_444"], - "name" : "Exp_445", - "op" : "Exp", - "outputs" : ["Exp_445_0"] - }, - { - "inputs" : [ "Cosh_1964", "Cosh_1964" ], - "name" : "Multiply_1965", - "op" : "Multiply", - "outputs" : ["Multiply_1965_0"] - }, - { - "inputs" : [ "Broadcast_428", "Exp_430" ], - "name" : "Add_431", - "op" : "Add", - "outputs" : ["Add_431_0"] - }, - { - "inputs" : [ "Broadcast_435", "Exp_437" ], - "name" : "Add_438", - "op" : "Add", - "outputs" : ["Add_438_0"] - }, - { - "inputs" : [ "Broadcast_443", "Exp_445" ], - "name" : "Add_446", - "op" : "Add", - "outputs" : ["Add_446_0"] - }, - { - "inputs" : [ "Broadcast_428", "Add_431" ], - "name" : "Divide_432", - "op" : "Divide", - "outputs" : ["Divide_432_0"] - }, - { - "inputs" : [ "Broadcast_435", "Add_438" ], - "name" : "Divide_439", - "op" : "Divide", - "outputs" : ["Divide_439_0"] - }, - { - "inputs" : [ "Broadcast_443", "Add_446" ], - "name" : "Divide_447", - "op" : "Divide", - "outputs" : ["Divide_447_0"] - }, - { - "inputs" : [ "Divide_439", "Add_418" ], - "name" : "Multiply_440", - "op" : "Multiply", - "outputs" : ["Multiply_440_0"] - }, - { - "inputs" : [ "Divide_447", "Tanh_449" ], - "name" : "Multiply_450", - "op" : "Multiply", - "outputs" : ["Multiply_450_0"] - }, - { - "inputs" : [ "Multiply_440", "Multiply_450" ], - "name" : "Add_451", - "op" : "Add", - "outputs" : ["Add_451_0"] - }, - { - "inputs" : ["Add_451"], - "name" : "Tanh_452", - "op" : "Tanh", - "outputs" : ["Tanh_452_0"] - }, - { - "inputs" : ["Add_451"], - "name" : "Cosh_1958", - "op" : "Cosh", - "outputs" : ["Cosh_1958_0"] - }, - { - "inputs" : [ "Divide_432", "Tanh_452" ], - "name" : "Multiply_453", - "op" : "Multiply", - "outputs" : ["Multiply_453_0"] - }, - { - "inputs" : [ "Cosh_1958", "Cosh_1958" ], - "name" : "Multiply_1959", - "op" : "Multiply", - "outputs" : ["Multiply_1959_0"] - }, - { - "inputs" : [ "Multiply_453", "Reshape_454" ], - "name" : "Dot_455", - "op" : "Dot", - "outputs" : ["Dot_455_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_453"], - "name" : "Reshape_1951", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1951_0"] - }, - { - "inputs" : [ "Dot_455", "Broadcast_456" ], - "name" : "Add_457", - "op" : "Add", - "outputs" : ["Add_457_0"] - }, - { - "inputs" : [ "Add_98", "Add_457" ], - "name" : "Add_458", - "op" : "Add", - "outputs" : ["Add_458_0"] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_459", - "op" : "Slice", - "outputs" : ["Slice_459_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_466", - "op" : "Slice", - "outputs" : ["Slice_466_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_474", - "op" : "Slice", - "outputs" : ["Slice_474_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_481", - "op" : "Slice", - "outputs" : ["Slice_481_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_459"], - "name" : "Negative_462", - "op" : "Negative", - "outputs" : ["Negative_462_0"] - }, - { - "inputs" : ["Slice_466"], - "name" : "Negative_469", - "op" : "Negative", - "outputs" : ["Negative_469_0"] - }, - { - "inputs" : ["Slice_474"], - "name" : "Negative_477", - "op" : "Negative", - "outputs" : ["Negative_477_0"] - }, - { - "inputs" : ["Slice_481"], - "name" : "Tanh_482", - "op" : "Tanh", - "outputs" : ["Tanh_482_0"] - }, - { - "inputs" : ["Slice_481"], - "name" : "Cosh_1903", - "op" : "Cosh", - "outputs" : ["Cosh_1903_0"] - }, - { - "inputs" : ["Negative_462"], - "name" : "Exp_463", - "op" : "Exp", - "outputs" : ["Exp_463_0"] - }, - { - "inputs" : ["Negative_469"], - "name" : "Exp_470", - "op" : "Exp", - "outputs" : ["Exp_470_0"] - }, - { - "inputs" : ["Negative_477"], - "name" : "Exp_478", - "op" : "Exp", - "outputs" : ["Exp_478_0"] - }, - { - "inputs" : [ "Cosh_1903", "Cosh_1903" ], - "name" : "Multiply_1904", - "op" : "Multiply", - "outputs" : ["Multiply_1904_0"] - }, - { - "inputs" : [ "Broadcast_461", "Exp_463" ], - "name" : "Add_464", - "op" : "Add", - "outputs" : ["Add_464_0"] - }, - { - "inputs" : [ "Broadcast_468", "Exp_470" ], - "name" : "Add_471", - "op" : "Add", - "outputs" : ["Add_471_0"] - }, - { - "inputs" : [ "Broadcast_476", "Exp_478" ], - "name" : "Add_479", - "op" : "Add", - "outputs" : ["Add_479_0"] - }, - { - "inputs" : [ "Broadcast_461", "Add_464" ], - "name" : "Divide_465", - "op" : "Divide", - "outputs" : ["Divide_465_0"] - }, - { - "inputs" : [ "Broadcast_468", "Add_471" ], - "name" : "Divide_472", - "op" : "Divide", - "outputs" : ["Divide_472_0"] - }, - { - "inputs" : [ "Broadcast_476", "Add_479" ], - "name" : "Divide_480", - "op" : "Divide", - "outputs" : ["Divide_480_0"] - }, - { - "inputs" : [ "Divide_472", "Add_451" ], - "name" : "Multiply_473", - "op" : "Multiply", - "outputs" : ["Multiply_473_0"] - }, - { - "inputs" : [ "Divide_480", "Tanh_482" ], - "name" : "Multiply_483", - "op" : "Multiply", - "outputs" : ["Multiply_483_0"] - }, - { - "inputs" : [ "Multiply_473", "Multiply_483" ], - "name" : "Add_484", - "op" : "Add", - "outputs" : ["Add_484_0"] - }, - { - "inputs" : ["Add_484"], - "name" : "Tanh_485", - "op" : "Tanh", - "outputs" : ["Tanh_485_0"] - }, - { - "inputs" : ["Add_484"], - "name" : "Cosh_1897", - "op" : "Cosh", - "outputs" : ["Cosh_1897_0"] - }, - { - "inputs" : [ "Divide_465", "Tanh_485" ], - "name" : "Multiply_486", - "op" : "Multiply", - "outputs" : ["Multiply_486_0"] - }, - { - "inputs" : [ "Cosh_1897", "Cosh_1897" ], - "name" : "Multiply_1898", - "op" : "Multiply", - "outputs" : ["Multiply_1898_0"] - }, - { - "inputs" : [ "Multiply_486", "Reshape_487" ], - "name" : "Dot_488", - "op" : "Dot", - "outputs" : ["Dot_488_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_486"], - "name" : "Reshape_1890", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1890_0"] - }, - { - "inputs" : [ "Dot_488", "Broadcast_489" ], - "name" : "Add_490", - "op" : "Add", - "outputs" : ["Add_490_0"] - }, - { - "inputs" : [ "Add_92", "Add_490" ], - "name" : "Add_491", - "op" : "Add", - "outputs" : ["Add_491_0"] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_492", - "op" : "Slice", - "outputs" : ["Slice_492_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_499", - "op" : "Slice", - "outputs" : ["Slice_499_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_507", - "op" : "Slice", - "outputs" : ["Slice_507_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_514", - "op" : "Slice", - "outputs" : ["Slice_514_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_492"], - "name" : "Negative_495", - "op" : "Negative", - "outputs" : ["Negative_495_0"] - }, - { - "inputs" : ["Slice_499"], - "name" : "Negative_502", - "op" : "Negative", - "outputs" : ["Negative_502_0"] - }, - { - "inputs" : ["Slice_507"], - "name" : "Negative_510", - "op" : "Negative", - "outputs" : ["Negative_510_0"] - }, - { - "inputs" : ["Slice_514"], - "name" : "Tanh_515", - "op" : "Tanh", - "outputs" : ["Tanh_515_0"] - }, - { - "inputs" : ["Slice_514"], - "name" : "Cosh_1842", - "op" : "Cosh", - "outputs" : ["Cosh_1842_0"] - }, - { - "inputs" : ["Negative_495"], - "name" : "Exp_496", - "op" : "Exp", - "outputs" : ["Exp_496_0"] - }, - { - "inputs" : ["Negative_502"], - "name" : "Exp_503", - "op" : "Exp", - "outputs" : ["Exp_503_0"] - }, - { - "inputs" : ["Negative_510"], - "name" : "Exp_511", - "op" : "Exp", - "outputs" : ["Exp_511_0"] - }, - { - "inputs" : [ "Cosh_1842", "Cosh_1842" ], - "name" : "Multiply_1843", - "op" : "Multiply", - "outputs" : ["Multiply_1843_0"] - }, - { - "inputs" : [ "Broadcast_494", "Exp_496" ], - "name" : "Add_497", - "op" : "Add", - "outputs" : ["Add_497_0"] - }, - { - "inputs" : [ "Broadcast_501", "Exp_503" ], - "name" : "Add_504", - "op" : "Add", - "outputs" : ["Add_504_0"] - }, - { - "inputs" : [ "Broadcast_509", "Exp_511" ], - "name" : "Add_512", - "op" : "Add", - "outputs" : ["Add_512_0"] - }, - { - "inputs" : [ "Broadcast_494", "Add_497" ], - "name" : "Divide_498", - "op" : "Divide", - "outputs" : ["Divide_498_0"] - }, - { - "inputs" : [ "Broadcast_501", "Add_504" ], - "name" : "Divide_505", - "op" : "Divide", - "outputs" : ["Divide_505_0"] - }, - { - "inputs" : [ "Broadcast_509", "Add_512" ], - "name" : "Divide_513", - "op" : "Divide", - "outputs" : ["Divide_513_0"] - }, - { - "inputs" : [ "Divide_505", "Add_484" ], - "name" : "Multiply_506", - "op" : "Multiply", - "outputs" : ["Multiply_506_0"] - }, - { - "inputs" : [ "Divide_513", "Tanh_515" ], - "name" : "Multiply_516", - "op" : "Multiply", - "outputs" : ["Multiply_516_0"] - }, - { - "inputs" : [ "Multiply_506", "Multiply_516" ], - "name" : "Add_517", - "op" : "Add", - "outputs" : ["Add_517_0"] - }, - { - "inputs" : ["Add_517"], - "name" : "Tanh_518", - "op" : "Tanh", - "outputs" : ["Tanh_518_0"] - }, - { - "inputs" : ["Add_517"], - "name" : "Cosh_1836", - "op" : "Cosh", - "outputs" : ["Cosh_1836_0"] - }, - { - "inputs" : [ "Divide_498", "Tanh_518" ], - "name" : "Multiply_519", - "op" : "Multiply", - "outputs" : ["Multiply_519_0"] - }, - { - "inputs" : [ "Cosh_1836", "Cosh_1836" ], - "name" : "Multiply_1837", - "op" : "Multiply", - "outputs" : ["Multiply_1837_0"] - }, - { - "inputs" : [ "Multiply_519", "Reshape_520" ], - "name" : "Dot_521", - "op" : "Dot", - "outputs" : ["Dot_521_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_519"], - "name" : "Reshape_1829", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1829_0"] - }, - { - "inputs" : [ "Dot_521", "Broadcast_522" ], - "name" : "Add_523", - "op" : "Add", - "outputs" : ["Add_523_0"] - }, - { - "inputs" : [ "Add_86", "Add_523" ], - "name" : "Add_524", - "op" : "Add", - "outputs" : ["Add_524_0"] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_525", - "op" : "Slice", - "outputs" : ["Slice_525_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_532", - "op" : "Slice", - "outputs" : ["Slice_532_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_540", - "op" : "Slice", - "outputs" : ["Slice_540_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_547", - "op" : "Slice", - "outputs" : ["Slice_547_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_525"], - "name" : "Negative_528", - "op" : "Negative", - "outputs" : ["Negative_528_0"] - }, - { - "inputs" : ["Slice_532"], - "name" : "Negative_535", - "op" : "Negative", - "outputs" : ["Negative_535_0"] - }, - { - "inputs" : ["Slice_540"], - "name" : "Negative_543", - "op" : "Negative", - "outputs" : ["Negative_543_0"] - }, - { - "inputs" : ["Slice_547"], - "name" : "Tanh_548", - "op" : "Tanh", - "outputs" : ["Tanh_548_0"] - }, - { - "inputs" : ["Slice_547"], - "name" : "Cosh_1781", - "op" : "Cosh", - "outputs" : ["Cosh_1781_0"] - }, - { - "inputs" : ["Negative_528"], - "name" : "Exp_529", - "op" : "Exp", - "outputs" : ["Exp_529_0"] - }, - { - "inputs" : ["Negative_535"], - "name" : "Exp_536", - "op" : "Exp", - "outputs" : ["Exp_536_0"] - }, - { - "inputs" : ["Negative_543"], - "name" : "Exp_544", - "op" : "Exp", - "outputs" : ["Exp_544_0"] - }, - { - "inputs" : [ "Cosh_1781", "Cosh_1781" ], - "name" : "Multiply_1782", - "op" : "Multiply", - "outputs" : ["Multiply_1782_0"] - }, - { - "inputs" : [ "Broadcast_527", "Exp_529" ], - "name" : "Add_530", - "op" : "Add", - "outputs" : ["Add_530_0"] - }, - { - "inputs" : [ "Broadcast_534", "Exp_536" ], - "name" : "Add_537", - "op" : "Add", - "outputs" : ["Add_537_0"] - }, - { - "inputs" : [ "Broadcast_542", "Exp_544" ], - "name" : "Add_545", - "op" : "Add", - "outputs" : ["Add_545_0"] - }, - { - "inputs" : [ "Broadcast_527", "Add_530" ], - "name" : "Divide_531", - "op" : "Divide", - "outputs" : ["Divide_531_0"] - }, - { - "inputs" : [ "Broadcast_534", "Add_537" ], - "name" : "Divide_538", - "op" : "Divide", - "outputs" : ["Divide_538_0"] - }, - { - "inputs" : [ "Broadcast_542", "Add_545" ], - "name" : "Divide_546", - "op" : "Divide", - "outputs" : ["Divide_546_0"] - }, - { - "inputs" : [ "Divide_538", "Add_517" ], - "name" : "Multiply_539", - "op" : "Multiply", - "outputs" : ["Multiply_539_0"] - }, - { - "inputs" : [ "Divide_546", "Tanh_548" ], - "name" : "Multiply_549", - "op" : "Multiply", - "outputs" : ["Multiply_549_0"] - }, - { - "inputs" : [ "Multiply_539", "Multiply_549" ], - "name" : "Add_550", - "op" : "Add", - "outputs" : ["Add_550_0"] - }, - { - "inputs" : ["Add_550"], - "name" : "Tanh_551", - "op" : "Tanh", - "outputs" : ["Tanh_551_0"] - }, - { - "inputs" : ["Add_550"], - "name" : "Cosh_1775", - "op" : "Cosh", - "outputs" : ["Cosh_1775_0"] - }, - { - "inputs" : [ "Divide_531", "Tanh_551" ], - "name" : "Multiply_552", - "op" : "Multiply", - "outputs" : ["Multiply_552_0"] - }, - { - "inputs" : [ "Cosh_1775", "Cosh_1775" ], - "name" : "Multiply_1776", - "op" : "Multiply", - "outputs" : ["Multiply_1776_0"] - }, - { - "inputs" : [ "Multiply_552", "Reshape_553" ], - "name" : "Dot_554", - "op" : "Dot", - "outputs" : ["Dot_554_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_552"], - "name" : "Reshape_1768", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1768_0"] - }, - { - "inputs" : [ "Dot_554", "Broadcast_555" ], - "name" : "Add_556", - "op" : "Add", - "outputs" : ["Add_556_0"] - }, - { - "inputs" : [ "Add_80", "Add_556" ], - "name" : "Add_557", - "op" : "Add", - "outputs" : ["Add_557_0"] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_558", - "op" : "Slice", - "outputs" : ["Slice_558_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_565", - "op" : "Slice", - "outputs" : ["Slice_565_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_573", - "op" : "Slice", - "outputs" : ["Slice_573_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_580", - "op" : "Slice", - "outputs" : ["Slice_580_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_558"], - "name" : "Negative_561", - "op" : "Negative", - "outputs" : ["Negative_561_0"] - }, - { - "inputs" : ["Slice_565"], - "name" : "Negative_568", - "op" : "Negative", - "outputs" : ["Negative_568_0"] - }, - { - "inputs" : ["Slice_573"], - "name" : "Negative_576", - "op" : "Negative", - "outputs" : ["Negative_576_0"] - }, - { - "inputs" : ["Slice_580"], - "name" : "Tanh_581", - "op" : "Tanh", - "outputs" : ["Tanh_581_0"] - }, - { - "inputs" : ["Slice_580"], - "name" : "Cosh_1720", - "op" : "Cosh", - "outputs" : ["Cosh_1720_0"] - }, - { - "inputs" : ["Negative_561"], - "name" : "Exp_562", - "op" : "Exp", - "outputs" : ["Exp_562_0"] - }, - { - "inputs" : ["Negative_568"], - "name" : "Exp_569", - "op" : "Exp", - "outputs" : ["Exp_569_0"] - }, - { - "inputs" : ["Negative_576"], - "name" : "Exp_577", - "op" : "Exp", - "outputs" : ["Exp_577_0"] - }, - { - "inputs" : [ "Cosh_1720", "Cosh_1720" ], - "name" : "Multiply_1721", - "op" : "Multiply", - "outputs" : ["Multiply_1721_0"] - }, - { - "inputs" : [ "Broadcast_560", "Exp_562" ], - "name" : "Add_563", - "op" : "Add", - "outputs" : ["Add_563_0"] - }, - { - "inputs" : [ "Broadcast_567", "Exp_569" ], - "name" : "Add_570", - "op" : "Add", - "outputs" : ["Add_570_0"] - }, - { - "inputs" : [ "Broadcast_575", "Exp_577" ], - "name" : "Add_578", - "op" : "Add", - "outputs" : ["Add_578_0"] - }, - { - "inputs" : [ "Broadcast_560", "Add_563" ], - "name" : "Divide_564", - "op" : "Divide", - "outputs" : ["Divide_564_0"] - }, - { - "inputs" : [ "Broadcast_567", "Add_570" ], - "name" : "Divide_571", - "op" : "Divide", - "outputs" : ["Divide_571_0"] - }, - { - "inputs" : [ "Broadcast_575", "Add_578" ], - "name" : "Divide_579", - "op" : "Divide", - "outputs" : ["Divide_579_0"] - }, - { - "inputs" : [ "Divide_571", "Add_550" ], - "name" : "Multiply_572", - "op" : "Multiply", - "outputs" : ["Multiply_572_0"] - }, - { - "inputs" : [ "Divide_579", "Tanh_581" ], - "name" : "Multiply_582", - "op" : "Multiply", - "outputs" : ["Multiply_582_0"] - }, - { - "inputs" : [ "Multiply_572", "Multiply_582" ], - "name" : "Add_583", - "op" : "Add", - "outputs" : ["Add_583_0"] - }, - { - "inputs" : ["Add_583"], - "name" : "Tanh_584", - "op" : "Tanh", - "outputs" : ["Tanh_584_0"] - }, - { - "inputs" : ["Add_583"], - "name" : "Cosh_1714", - "op" : "Cosh", - "outputs" : ["Cosh_1714_0"] - }, - { - "inputs" : [ "Divide_564", "Tanh_584" ], - "name" : "Multiply_585", - "op" : "Multiply", - "outputs" : ["Multiply_585_0"] - }, - { - "inputs" : [ "Cosh_1714", "Cosh_1714" ], - "name" : "Multiply_1715", - "op" : "Multiply", - "outputs" : ["Multiply_1715_0"] - }, - { - "inputs" : [ "Multiply_585", "Reshape_586" ], - "name" : "Dot_587", - "op" : "Dot", - "outputs" : ["Dot_587_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_585"], - "name" : "Reshape_1707", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1707_0"] - }, - { - "inputs" : [ "Dot_587", "Broadcast_588" ], - "name" : "Add_589", - "op" : "Add", - "outputs" : ["Add_589_0"] - }, - { - "inputs" : [ "Add_74", "Add_589" ], - "name" : "Add_590", - "op" : "Add", - "outputs" : ["Add_590_0"] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_591", - "op" : "Slice", - "outputs" : ["Slice_591_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_598", - "op" : "Slice", - "outputs" : ["Slice_598_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_606", - "op" : "Slice", - "outputs" : ["Slice_606_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_613", - "op" : "Slice", - "outputs" : ["Slice_613_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_591"], - "name" : "Negative_594", - "op" : "Negative", - "outputs" : ["Negative_594_0"] - }, - { - "inputs" : ["Slice_598"], - "name" : "Negative_601", - "op" : "Negative", - "outputs" : ["Negative_601_0"] - }, - { - "inputs" : ["Slice_606"], - "name" : "Negative_609", - "op" : "Negative", - "outputs" : ["Negative_609_0"] - }, - { - "inputs" : ["Slice_613"], - "name" : "Tanh_614", - "op" : "Tanh", - "outputs" : ["Tanh_614_0"] - }, - { - "inputs" : ["Slice_613"], - "name" : "Cosh_1659", - "op" : "Cosh", - "outputs" : ["Cosh_1659_0"] - }, - { - "inputs" : ["Negative_594"], - "name" : "Exp_595", - "op" : "Exp", - "outputs" : ["Exp_595_0"] - }, - { - "inputs" : ["Negative_601"], - "name" : "Exp_602", - "op" : "Exp", - "outputs" : ["Exp_602_0"] - }, - { - "inputs" : ["Negative_609"], - "name" : "Exp_610", - "op" : "Exp", - "outputs" : ["Exp_610_0"] - }, - { - "inputs" : [ "Cosh_1659", "Cosh_1659" ], - "name" : "Multiply_1660", - "op" : "Multiply", - "outputs" : ["Multiply_1660_0"] - }, - { - "inputs" : [ "Broadcast_593", "Exp_595" ], - "name" : "Add_596", - "op" : "Add", - "outputs" : ["Add_596_0"] - }, - { - "inputs" : [ "Broadcast_600", "Exp_602" ], - "name" : "Add_603", - "op" : "Add", - "outputs" : ["Add_603_0"] - }, - { - "inputs" : [ "Broadcast_608", "Exp_610" ], - "name" : "Add_611", - "op" : "Add", - "outputs" : ["Add_611_0"] - }, - { - "inputs" : [ "Broadcast_593", "Add_596" ], - "name" : "Divide_597", - "op" : "Divide", - "outputs" : ["Divide_597_0"] - }, - { - "inputs" : [ "Broadcast_600", "Add_603" ], - "name" : "Divide_604", - "op" : "Divide", - "outputs" : ["Divide_604_0"] - }, - { - "inputs" : [ "Broadcast_608", "Add_611" ], - "name" : "Divide_612", - "op" : "Divide", - "outputs" : ["Divide_612_0"] - }, - { - "inputs" : [ "Divide_604", "Add_583" ], - "name" : "Multiply_605", - "op" : "Multiply", - "outputs" : ["Multiply_605_0"] - }, - { - "inputs" : [ "Divide_612", "Tanh_614" ], - "name" : "Multiply_615", - "op" : "Multiply", - "outputs" : ["Multiply_615_0"] - }, - { - "inputs" : [ "Multiply_605", "Multiply_615" ], - "name" : "Add_616", - "op" : "Add", - "outputs" : ["Add_616_0"] - }, - { - "inputs" : ["Add_616"], - "name" : "Tanh_617", - "op" : "Tanh", - "outputs" : ["Tanh_617_0"] - }, - { - "inputs" : ["Add_616"], - "name" : "Cosh_1653", - "op" : "Cosh", - "outputs" : ["Cosh_1653_0"] - }, - { - "inputs" : [ "Divide_597", "Tanh_617" ], - "name" : "Multiply_618", - "op" : "Multiply", - "outputs" : ["Multiply_618_0"] - }, - { - "inputs" : [ "Cosh_1653", "Cosh_1653" ], - "name" : "Multiply_1654", - "op" : "Multiply", - "outputs" : ["Multiply_1654_0"] - }, - { - "inputs" : [ "Multiply_618", "Reshape_619" ], - "name" : "Dot_620", - "op" : "Dot", - "outputs" : ["Dot_620_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_618"], - "name" : "Reshape_1646", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1646_0"] - }, - { - "inputs" : [ "Dot_620", "Broadcast_621" ], - "name" : "Add_622", - "op" : "Add", - "outputs" : ["Add_622_0"] - }, - { - "inputs" : [ "Add_68", "Add_622" ], - "name" : "Add_623", - "op" : "Add", - "outputs" : ["Add_623_0"] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_624", - "op" : "Slice", - "outputs" : ["Slice_624_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_631", - "op" : "Slice", - "outputs" : ["Slice_631_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_639", - "op" : "Slice", - "outputs" : ["Slice_639_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_646", - "op" : "Slice", - "outputs" : ["Slice_646_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_624"], - "name" : "Negative_627", - "op" : "Negative", - "outputs" : ["Negative_627_0"] - }, - { - "inputs" : ["Slice_631"], - "name" : "Negative_634", - "op" : "Negative", - "outputs" : ["Negative_634_0"] - }, - { - "inputs" : ["Slice_639"], - "name" : "Negative_642", - "op" : "Negative", - "outputs" : ["Negative_642_0"] - }, - { - "inputs" : ["Slice_646"], - "name" : "Tanh_647", - "op" : "Tanh", - "outputs" : ["Tanh_647_0"] - }, - { - "inputs" : ["Slice_646"], - "name" : "Cosh_1598", - "op" : "Cosh", - "outputs" : ["Cosh_1598_0"] - }, - { - "inputs" : ["Negative_627"], - "name" : "Exp_628", - "op" : "Exp", - "outputs" : ["Exp_628_0"] - }, - { - "inputs" : ["Negative_634"], - "name" : "Exp_635", - "op" : "Exp", - "outputs" : ["Exp_635_0"] - }, - { - "inputs" : ["Negative_642"], - "name" : "Exp_643", - "op" : "Exp", - "outputs" : ["Exp_643_0"] - }, - { - "inputs" : [ "Cosh_1598", "Cosh_1598" ], - "name" : "Multiply_1599", - "op" : "Multiply", - "outputs" : ["Multiply_1599_0"] - }, - { - "inputs" : [ "Broadcast_626", "Exp_628" ], - "name" : "Add_629", - "op" : "Add", - "outputs" : ["Add_629_0"] - }, - { - "inputs" : [ "Broadcast_633", "Exp_635" ], - "name" : "Add_636", - "op" : "Add", - "outputs" : ["Add_636_0"] - }, - { - "inputs" : [ "Broadcast_641", "Exp_643" ], - "name" : "Add_644", - "op" : "Add", - "outputs" : ["Add_644_0"] - }, - { - "inputs" : [ "Broadcast_626", "Add_629" ], - "name" : "Divide_630", - "op" : "Divide", - "outputs" : ["Divide_630_0"] - }, - { - "inputs" : [ "Broadcast_633", "Add_636" ], - "name" : "Divide_637", - "op" : "Divide", - "outputs" : ["Divide_637_0"] - }, - { - "inputs" : [ "Broadcast_641", "Add_644" ], - "name" : "Divide_645", - "op" : "Divide", - "outputs" : ["Divide_645_0"] - }, - { - "inputs" : [ "Divide_637", "Add_616" ], - "name" : "Multiply_638", - "op" : "Multiply", - "outputs" : ["Multiply_638_0"] - }, - { - "inputs" : [ "Divide_645", "Tanh_647" ], - "name" : "Multiply_648", - "op" : "Multiply", - "outputs" : ["Multiply_648_0"] - }, - { - "inputs" : [ "Multiply_638", "Multiply_648" ], - "name" : "Add_649", - "op" : "Add", - "outputs" : ["Add_649_0"] - }, - { - "inputs" : ["Add_649"], - "name" : "Tanh_650", - "op" : "Tanh", - "outputs" : ["Tanh_650_0"] - }, - { - "inputs" : ["Add_649"], - "name" : "Cosh_1592", - "op" : "Cosh", - "outputs" : ["Cosh_1592_0"] - }, - { - "inputs" : [ "Divide_630", "Tanh_650" ], - "name" : "Multiply_651", - "op" : "Multiply", - "outputs" : ["Multiply_651_0"] - }, - { - "inputs" : [ "Cosh_1592", "Cosh_1592" ], - "name" : "Multiply_1593", - "op" : "Multiply", - "outputs" : ["Multiply_1593_0"] - }, - { - "inputs" : [ "Multiply_651", "Reshape_652" ], - "name" : "Dot_653", - "op" : "Dot", - "outputs" : ["Dot_653_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_651"], - "name" : "Reshape_1585", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1585_0"] - }, - { - "inputs" : [ "Dot_653", "Broadcast_654" ], - "name" : "Add_655", - "op" : "Add", - "outputs" : ["Add_655_0"] - }, - { - "inputs" : [ "Add_62", "Add_655" ], - "name" : "Add_656", - "op" : "Add", - "outputs" : ["Add_656_0"] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_657", - "op" : "Slice", - "outputs" : ["Slice_657_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_664", - "op" : "Slice", - "outputs" : ["Slice_664_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_672", - "op" : "Slice", - "outputs" : ["Slice_672_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_679", - "op" : "Slice", - "outputs" : ["Slice_679_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_657"], - "name" : "Negative_660", - "op" : "Negative", - "outputs" : ["Negative_660_0"] - }, - { - "inputs" : ["Slice_664"], - "name" : "Negative_667", - "op" : "Negative", - "outputs" : ["Negative_667_0"] - }, - { - "inputs" : ["Slice_672"], - "name" : "Negative_675", - "op" : "Negative", - "outputs" : ["Negative_675_0"] - }, - { - "inputs" : ["Slice_679"], - "name" : "Tanh_680", - "op" : "Tanh", - "outputs" : ["Tanh_680_0"] - }, - { - "inputs" : ["Slice_679"], - "name" : "Cosh_1537", - "op" : "Cosh", - "outputs" : ["Cosh_1537_0"] - }, - { - "inputs" : ["Negative_660"], - "name" : "Exp_661", - "op" : "Exp", - "outputs" : ["Exp_661_0"] - }, - { - "inputs" : ["Negative_667"], - "name" : "Exp_668", - "op" : "Exp", - "outputs" : ["Exp_668_0"] - }, - { - "inputs" : ["Negative_675"], - "name" : "Exp_676", - "op" : "Exp", - "outputs" : ["Exp_676_0"] - }, - { - "inputs" : [ "Cosh_1537", "Cosh_1537" ], - "name" : "Multiply_1538", - "op" : "Multiply", - "outputs" : ["Multiply_1538_0"] - }, - { - "inputs" : [ "Broadcast_659", "Exp_661" ], - "name" : "Add_662", - "op" : "Add", - "outputs" : ["Add_662_0"] - }, - { - "inputs" : [ "Broadcast_666", "Exp_668" ], - "name" : "Add_669", - "op" : "Add", - "outputs" : ["Add_669_0"] - }, - { - "inputs" : [ "Broadcast_674", "Exp_676" ], - "name" : "Add_677", - "op" : "Add", - "outputs" : ["Add_677_0"] - }, - { - "inputs" : [ "Broadcast_659", "Add_662" ], - "name" : "Divide_663", - "op" : "Divide", - "outputs" : ["Divide_663_0"] - }, - { - "inputs" : [ "Broadcast_666", "Add_669" ], - "name" : "Divide_670", - "op" : "Divide", - "outputs" : ["Divide_670_0"] - }, - { - "inputs" : [ "Broadcast_674", "Add_677" ], - "name" : "Divide_678", - "op" : "Divide", - "outputs" : ["Divide_678_0"] - }, - { - "inputs" : [ "Divide_670", "Add_649" ], - "name" : "Multiply_671", - "op" : "Multiply", - "outputs" : ["Multiply_671_0"] - }, - { - "inputs" : [ "Divide_678", "Tanh_680" ], - "name" : "Multiply_681", - "op" : "Multiply", - "outputs" : ["Multiply_681_0"] - }, - { - "inputs" : [ "Multiply_671", "Multiply_681" ], - "name" : "Add_682", - "op" : "Add", - "outputs" : ["Add_682_0"] - }, - { - "inputs" : ["Add_682"], - "name" : "Tanh_683", - "op" : "Tanh", - "outputs" : ["Tanh_683_0"] - }, - { - "inputs" : ["Add_682"], - "name" : "Cosh_1531", - "op" : "Cosh", - "outputs" : ["Cosh_1531_0"] - }, - { - "inputs" : [ "Divide_663", "Tanh_683" ], - "name" : "Multiply_684", - "op" : "Multiply", - "outputs" : ["Multiply_684_0"] - }, - { - "inputs" : [ "Cosh_1531", "Cosh_1531" ], - "name" : "Multiply_1532", - "op" : "Multiply", - "outputs" : ["Multiply_1532_0"] - }, - { - "inputs" : [ "Multiply_684", "Reshape_685" ], - "name" : "Dot_686", - "op" : "Dot", - "outputs" : ["Dot_686_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_684"], - "name" : "Reshape_1524", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1524_0"] - }, - { - "inputs" : [ "Dot_686", "Broadcast_687" ], - "name" : "Add_688", - "op" : "Add", - "outputs" : ["Add_688_0"] - }, - { - "inputs" : [ "Add_56", "Add_688" ], - "name" : "Add_689", - "op" : "Add", - "outputs" : ["Add_689_0"] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_690", - "op" : "Slice", - "outputs" : ["Slice_690_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_697", - "op" : "Slice", - "outputs" : ["Slice_697_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_705", - "op" : "Slice", - "outputs" : ["Slice_705_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_712", - "op" : "Slice", - "outputs" : ["Slice_712_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_690"], - "name" : "Negative_693", - "op" : "Negative", - "outputs" : ["Negative_693_0"] - }, - { - "inputs" : ["Slice_697"], - "name" : "Negative_700", - "op" : "Negative", - "outputs" : ["Negative_700_0"] - }, - { - "inputs" : ["Slice_705"], - "name" : "Negative_708", - "op" : "Negative", - "outputs" : ["Negative_708_0"] - }, - { - "inputs" : ["Slice_712"], - "name" : "Tanh_713", - "op" : "Tanh", - "outputs" : ["Tanh_713_0"] - }, - { - "inputs" : ["Slice_712"], - "name" : "Cosh_1476", - "op" : "Cosh", - "outputs" : ["Cosh_1476_0"] - }, - { - "inputs" : ["Negative_693"], - "name" : "Exp_694", - "op" : "Exp", - "outputs" : ["Exp_694_0"] - }, - { - "inputs" : ["Negative_700"], - "name" : "Exp_701", - "op" : "Exp", - "outputs" : ["Exp_701_0"] - }, - { - "inputs" : ["Negative_708"], - "name" : "Exp_709", - "op" : "Exp", - "outputs" : ["Exp_709_0"] - }, - { - "inputs" : [ "Cosh_1476", "Cosh_1476" ], - "name" : "Multiply_1477", - "op" : "Multiply", - "outputs" : ["Multiply_1477_0"] - }, - { - "inputs" : [ "Broadcast_692", "Exp_694" ], - "name" : "Add_695", - "op" : "Add", - "outputs" : ["Add_695_0"] - }, - { - "inputs" : [ "Broadcast_699", "Exp_701" ], - "name" : "Add_702", - "op" : "Add", - "outputs" : ["Add_702_0"] - }, - { - "inputs" : [ "Broadcast_707", "Exp_709" ], - "name" : "Add_710", - "op" : "Add", - "outputs" : ["Add_710_0"] - }, - { - "inputs" : [ "Broadcast_692", "Add_695" ], - "name" : "Divide_696", - "op" : "Divide", - "outputs" : ["Divide_696_0"] - }, - { - "inputs" : [ "Broadcast_699", "Add_702" ], - "name" : "Divide_703", - "op" : "Divide", - "outputs" : ["Divide_703_0"] - }, - { - "inputs" : [ "Broadcast_707", "Add_710" ], - "name" : "Divide_711", - "op" : "Divide", - "outputs" : ["Divide_711_0"] - }, - { - "inputs" : [ "Divide_703", "Add_682" ], - "name" : "Multiply_704", - "op" : "Multiply", - "outputs" : ["Multiply_704_0"] - }, - { - "inputs" : [ "Divide_711", "Tanh_713" ], - "name" : "Multiply_714", - "op" : "Multiply", - "outputs" : ["Multiply_714_0"] - }, - { - "inputs" : [ "Multiply_704", "Multiply_714" ], - "name" : "Add_715", - "op" : "Add", - "outputs" : ["Add_715_0"] - }, - { - "inputs" : ["Add_715"], - "name" : "Tanh_716", - "op" : "Tanh", - "outputs" : ["Tanh_716_0"] - }, - { - "inputs" : ["Add_715"], - "name" : "Cosh_1470", - "op" : "Cosh", - "outputs" : ["Cosh_1470_0"] - }, - { - "inputs" : [ "Divide_696", "Tanh_716" ], - "name" : "Multiply_717", - "op" : "Multiply", - "outputs" : ["Multiply_717_0"] - }, - { - "inputs" : [ "Cosh_1470", "Cosh_1470" ], - "name" : "Multiply_1471", - "op" : "Multiply", - "outputs" : ["Multiply_1471_0"] - }, - { - "inputs" : [ "Multiply_717", "Reshape_718" ], - "name" : "Dot_719", - "op" : "Dot", - "outputs" : ["Dot_719_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_717"], - "name" : "Reshape_1463", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1463_0"] - }, - { - "inputs" : [ "Dot_719", "Broadcast_720" ], - "name" : "Add_721", - "op" : "Add", - "outputs" : ["Add_721_0"] - }, - { - "inputs" : [ "Add_50", "Add_721" ], - "name" : "Add_722", - "op" : "Add", - "outputs" : ["Add_722_0"] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_723", - "op" : "Slice", - "outputs" : ["Slice_723_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_730", - "op" : "Slice", - "outputs" : ["Slice_730_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_738", - "op" : "Slice", - "outputs" : ["Slice_738_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_745", - "op" : "Slice", - "outputs" : ["Slice_745_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_723"], - "name" : "Negative_726", - "op" : "Negative", - "outputs" : ["Negative_726_0"] - }, - { - "inputs" : ["Slice_730"], - "name" : "Negative_733", - "op" : "Negative", - "outputs" : ["Negative_733_0"] - }, - { - "inputs" : ["Slice_738"], - "name" : "Negative_741", - "op" : "Negative", - "outputs" : ["Negative_741_0"] - }, - { - "inputs" : ["Slice_745"], - "name" : "Tanh_746", - "op" : "Tanh", - "outputs" : ["Tanh_746_0"] - }, - { - "inputs" : ["Slice_745"], - "name" : "Cosh_1415", - "op" : "Cosh", - "outputs" : ["Cosh_1415_0"] - }, - { - "inputs" : ["Negative_726"], - "name" : "Exp_727", - "op" : "Exp", - "outputs" : ["Exp_727_0"] - }, - { - "inputs" : ["Negative_733"], - "name" : "Exp_734", - "op" : "Exp", - "outputs" : ["Exp_734_0"] - }, - { - "inputs" : ["Negative_741"], - "name" : "Exp_742", - "op" : "Exp", - "outputs" : ["Exp_742_0"] - }, - { - "inputs" : [ "Cosh_1415", "Cosh_1415" ], - "name" : "Multiply_1416", - "op" : "Multiply", - "outputs" : ["Multiply_1416_0"] - }, - { - "inputs" : [ "Broadcast_725", "Exp_727" ], - "name" : "Add_728", - "op" : "Add", - "outputs" : ["Add_728_0"] - }, - { - "inputs" : [ "Broadcast_732", "Exp_734" ], - "name" : "Add_735", - "op" : "Add", - "outputs" : ["Add_735_0"] - }, - { - "inputs" : [ "Broadcast_740", "Exp_742" ], - "name" : "Add_743", - "op" : "Add", - "outputs" : ["Add_743_0"] - }, - { - "inputs" : [ "Broadcast_725", "Add_728" ], - "name" : "Divide_729", - "op" : "Divide", - "outputs" : ["Divide_729_0"] - }, - { - "inputs" : [ "Broadcast_732", "Add_735" ], - "name" : "Divide_736", - "op" : "Divide", - "outputs" : ["Divide_736_0"] - }, - { - "inputs" : [ "Broadcast_740", "Add_743" ], - "name" : "Divide_744", - "op" : "Divide", - "outputs" : ["Divide_744_0"] - }, - { - "inputs" : [ "Divide_736", "Add_715" ], - "name" : "Multiply_737", - "op" : "Multiply", - "outputs" : ["Multiply_737_0"] - }, - { - "inputs" : [ "Divide_744", "Tanh_746" ], - "name" : "Multiply_747", - "op" : "Multiply", - "outputs" : ["Multiply_747_0"] - }, - { - "inputs" : [ "Multiply_737", "Multiply_747" ], - "name" : "Add_748", - "op" : "Add", - "outputs" : ["Add_748_0"] - }, - { - "inputs" : ["Add_748"], - "name" : "Tanh_749", - "op" : "Tanh", - "outputs" : ["Tanh_749_0"] - }, - { - "inputs" : ["Add_748"], - "name" : "Cosh_1409", - "op" : "Cosh", - "outputs" : ["Cosh_1409_0"] - }, - { - "inputs" : [ "Divide_729", "Tanh_749" ], - "name" : "Multiply_750", - "op" : "Multiply", - "outputs" : ["Multiply_750_0"] - }, - { - "inputs" : [ "Cosh_1409", "Cosh_1409" ], - "name" : "Multiply_1410", - "op" : "Multiply", - "outputs" : ["Multiply_1410_0"] - }, - { - "inputs" : [ "Multiply_750", "Reshape_751" ], - "name" : "Dot_752", - "op" : "Dot", - "outputs" : ["Dot_752_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_750"], - "name" : "Reshape_1402", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1402_0"] - }, - { - "inputs" : [ "Dot_752", "Broadcast_753" ], - "name" : "Add_754", - "op" : "Add", - "outputs" : ["Add_754_0"] - }, - { - "inputs" : [ "Add_44", "Add_754" ], - "name" : "Add_755", - "op" : "Add", - "outputs" : ["Add_755_0"] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_756", - "op" : "Slice", - "outputs" : ["Slice_756_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_763", - "op" : "Slice", - "outputs" : ["Slice_763_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_771", - "op" : "Slice", - "outputs" : ["Slice_771_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_778", - "op" : "Slice", - "outputs" : ["Slice_778_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_756"], - "name" : "Negative_759", - "op" : "Negative", - "outputs" : ["Negative_759_0"] - }, - { - "inputs" : ["Slice_763"], - "name" : "Negative_766", - "op" : "Negative", - "outputs" : ["Negative_766_0"] - }, - { - "inputs" : ["Slice_771"], - "name" : "Negative_774", - "op" : "Negative", - "outputs" : ["Negative_774_0"] - }, - { - "inputs" : ["Slice_778"], - "name" : "Tanh_779", - "op" : "Tanh", - "outputs" : ["Tanh_779_0"] - }, - { - "inputs" : ["Slice_778"], - "name" : "Cosh_1354", - "op" : "Cosh", - "outputs" : ["Cosh_1354_0"] - }, - { - "inputs" : ["Negative_759"], - "name" : "Exp_760", - "op" : "Exp", - "outputs" : ["Exp_760_0"] - }, - { - "inputs" : ["Negative_766"], - "name" : "Exp_767", - "op" : "Exp", - "outputs" : ["Exp_767_0"] - }, - { - "inputs" : ["Negative_774"], - "name" : "Exp_775", - "op" : "Exp", - "outputs" : ["Exp_775_0"] - }, - { - "inputs" : [ "Cosh_1354", "Cosh_1354" ], - "name" : "Multiply_1355", - "op" : "Multiply", - "outputs" : ["Multiply_1355_0"] - }, - { - "inputs" : [ "Broadcast_758", "Exp_760" ], - "name" : "Add_761", - "op" : "Add", - "outputs" : ["Add_761_0"] - }, - { - "inputs" : [ "Broadcast_765", "Exp_767" ], - "name" : "Add_768", - "op" : "Add", - "outputs" : ["Add_768_0"] - }, - { - "inputs" : [ "Broadcast_773", "Exp_775" ], - "name" : "Add_776", - "op" : "Add", - "outputs" : ["Add_776_0"] - }, - { - "inputs" : [ "Broadcast_758", "Add_761" ], - "name" : "Divide_762", - "op" : "Divide", - "outputs" : ["Divide_762_0"] - }, - { - "inputs" : [ "Broadcast_765", "Add_768" ], - "name" : "Divide_769", - "op" : "Divide", - "outputs" : ["Divide_769_0"] - }, - { - "inputs" : [ "Broadcast_773", "Add_776" ], - "name" : "Divide_777", - "op" : "Divide", - "outputs" : ["Divide_777_0"] - }, - { - "inputs" : [ "Divide_769", "Add_748" ], - "name" : "Multiply_770", - "op" : "Multiply", - "outputs" : ["Multiply_770_0"] - }, - { - "inputs" : [ "Divide_777", "Tanh_779" ], - "name" : "Multiply_780", - "op" : "Multiply", - "outputs" : ["Multiply_780_0"] - }, - { - "inputs" : [ "Multiply_770", "Multiply_780" ], - "name" : "Add_781", - "op" : "Add", - "outputs" : ["Add_781_0"] - }, - { - "inputs" : ["Add_781"], - "name" : "Tanh_782", - "op" : "Tanh", - "outputs" : ["Tanh_782_0"] - }, - { - "inputs" : ["Add_781"], - "name" : "Cosh_1348", - "op" : "Cosh", - "outputs" : ["Cosh_1348_0"] - }, - { - "inputs" : [ "Divide_762", "Tanh_782" ], - "name" : "Multiply_783", - "op" : "Multiply", - "outputs" : ["Multiply_783_0"] - }, - { - "inputs" : [ "Cosh_1348", "Cosh_1348" ], - "name" : "Multiply_1349", - "op" : "Multiply", - "outputs" : ["Multiply_1349_0"] - }, - { - "inputs" : [ "Multiply_783", "Reshape_784" ], - "name" : "Dot_785", - "op" : "Dot", - "outputs" : ["Dot_785_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_783"], - "name" : "Reshape_1341", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1341_0"] - }, - { - "inputs" : [ "Dot_785", "Broadcast_786" ], - "name" : "Add_787", - "op" : "Add", - "outputs" : ["Add_787_0"] - }, - { - "inputs" : [ "Add_38", "Add_787" ], - "name" : "Add_788", - "op" : "Add", - "outputs" : ["Add_788_0"] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_789", - "op" : "Slice", - "outputs" : ["Slice_789_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_796", - "op" : "Slice", - "outputs" : ["Slice_796_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_804", - "op" : "Slice", - "outputs" : ["Slice_804_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_811", - "op" : "Slice", - "outputs" : ["Slice_811_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_789"], - "name" : "Negative_792", - "op" : "Negative", - "outputs" : ["Negative_792_0"] - }, - { - "inputs" : ["Slice_796"], - "name" : "Negative_799", - "op" : "Negative", - "outputs" : ["Negative_799_0"] - }, - { - "inputs" : ["Slice_804"], - "name" : "Negative_807", - "op" : "Negative", - "outputs" : ["Negative_807_0"] - }, - { - "inputs" : ["Slice_811"], - "name" : "Tanh_812", - "op" : "Tanh", - "outputs" : ["Tanh_812_0"] - }, - { - "inputs" : ["Slice_811"], - "name" : "Cosh_1293", - "op" : "Cosh", - "outputs" : ["Cosh_1293_0"] - }, - { - "inputs" : ["Negative_792"], - "name" : "Exp_793", - "op" : "Exp", - "outputs" : ["Exp_793_0"] - }, - { - "inputs" : ["Negative_799"], - "name" : "Exp_800", - "op" : "Exp", - "outputs" : ["Exp_800_0"] - }, - { - "inputs" : ["Negative_807"], - "name" : "Exp_808", - "op" : "Exp", - "outputs" : ["Exp_808_0"] - }, - { - "inputs" : [ "Cosh_1293", "Cosh_1293" ], - "name" : "Multiply_1294", - "op" : "Multiply", - "outputs" : ["Multiply_1294_0"] - }, - { - "inputs" : [ "Broadcast_791", "Exp_793" ], - "name" : "Add_794", - "op" : "Add", - "outputs" : ["Add_794_0"] - }, - { - "inputs" : [ "Broadcast_798", "Exp_800" ], - "name" : "Add_801", - "op" : "Add", - "outputs" : ["Add_801_0"] - }, - { - "inputs" : [ "Broadcast_806", "Exp_808" ], - "name" : "Add_809", - "op" : "Add", - "outputs" : ["Add_809_0"] - }, - { - "inputs" : [ "Broadcast_791", "Add_794" ], - "name" : "Divide_795", - "op" : "Divide", - "outputs" : ["Divide_795_0"] - }, - { - "inputs" : [ "Broadcast_798", "Add_801" ], - "name" : "Divide_802", - "op" : "Divide", - "outputs" : ["Divide_802_0"] - }, - { - "inputs" : [ "Broadcast_806", "Add_809" ], - "name" : "Divide_810", - "op" : "Divide", - "outputs" : ["Divide_810_0"] - }, - { - "inputs" : [ "Divide_802", "Add_781" ], - "name" : "Multiply_803", - "op" : "Multiply", - "outputs" : ["Multiply_803_0"] - }, - { - "inputs" : [ "Divide_810", "Tanh_812" ], - "name" : "Multiply_813", - "op" : "Multiply", - "outputs" : ["Multiply_813_0"] - }, - { - "inputs" : [ "Multiply_803", "Multiply_813" ], - "name" : "Add_814", - "op" : "Add", - "outputs" : ["Add_814_0"] - }, - { - "inputs" : ["Add_814"], - "name" : "Tanh_815", - "op" : "Tanh", - "outputs" : ["Tanh_815_0"] - }, - { - "inputs" : ["Add_814"], - "name" : "Cosh_1287", - "op" : "Cosh", - "outputs" : ["Cosh_1287_0"] - }, - { - "inputs" : [ "Divide_795", "Tanh_815" ], - "name" : "Multiply_816", - "op" : "Multiply", - "outputs" : ["Multiply_816_0"] - }, - { - "inputs" : [ "Cosh_1287", "Cosh_1287" ], - "name" : "Multiply_1288", - "op" : "Multiply", - "outputs" : ["Multiply_1288_0"] - }, - { - "inputs" : [ "Multiply_816", "Reshape_817" ], - "name" : "Dot_818", - "op" : "Dot", - "outputs" : ["Dot_818_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_816"], - "name" : "Reshape_1280", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1280_0"] - }, - { - "inputs" : [ "Dot_818", "Broadcast_819" ], - "name" : "Add_820", - "op" : "Add", - "outputs" : ["Add_820_0"] - }, - { - "inputs" : [ "Add_32", "Add_820" ], - "name" : "Add_821", - "op" : "Add", - "outputs" : ["Add_821_0"] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_822", - "op" : "Slice", - "outputs" : ["Slice_822_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_829", - "op" : "Slice", - "outputs" : ["Slice_829_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_837", - "op" : "Slice", - "outputs" : ["Slice_837_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_844", - "op" : "Slice", - "outputs" : ["Slice_844_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_822"], - "name" : "Negative_825", - "op" : "Negative", - "outputs" : ["Negative_825_0"] - }, - { - "inputs" : ["Slice_829"], - "name" : "Negative_832", - "op" : "Negative", - "outputs" : ["Negative_832_0"] - }, - { - "inputs" : ["Slice_837"], - "name" : "Negative_840", - "op" : "Negative", - "outputs" : ["Negative_840_0"] - }, - { - "inputs" : ["Slice_844"], - "name" : "Tanh_845", - "op" : "Tanh", - "outputs" : ["Tanh_845_0"] - }, - { - "inputs" : ["Slice_844"], - "name" : "Cosh_1232", - "op" : "Cosh", - "outputs" : ["Cosh_1232_0"] - }, - { - "inputs" : ["Negative_825"], - "name" : "Exp_826", - "op" : "Exp", - "outputs" : ["Exp_826_0"] - }, - { - "inputs" : ["Negative_832"], - "name" : "Exp_833", - "op" : "Exp", - "outputs" : ["Exp_833_0"] - }, - { - "inputs" : ["Negative_840"], - "name" : "Exp_841", - "op" : "Exp", - "outputs" : ["Exp_841_0"] - }, - { - "inputs" : [ "Cosh_1232", "Cosh_1232" ], - "name" : "Multiply_1233", - "op" : "Multiply", - "outputs" : ["Multiply_1233_0"] - }, - { - "inputs" : [ "Broadcast_824", "Exp_826" ], - "name" : "Add_827", - "op" : "Add", - "outputs" : ["Add_827_0"] - }, - { - "inputs" : [ "Broadcast_831", "Exp_833" ], - "name" : "Add_834", - "op" : "Add", - "outputs" : ["Add_834_0"] - }, - { - "inputs" : [ "Broadcast_839", "Exp_841" ], - "name" : "Add_842", - "op" : "Add", - "outputs" : ["Add_842_0"] - }, - { - "inputs" : [ "Broadcast_824", "Add_827" ], - "name" : "Divide_828", - "op" : "Divide", - "outputs" : ["Divide_828_0"] - }, - { - "inputs" : [ "Broadcast_831", "Add_834" ], - "name" : "Divide_835", - "op" : "Divide", - "outputs" : ["Divide_835_0"] - }, - { - "inputs" : [ "Broadcast_839", "Add_842" ], - "name" : "Divide_843", - "op" : "Divide", - "outputs" : ["Divide_843_0"] - }, - { - "inputs" : [ "Divide_835", "Add_814" ], - "name" : "Multiply_836", - "op" : "Multiply", - "outputs" : ["Multiply_836_0"] - }, - { - "inputs" : [ "Divide_843", "Tanh_845" ], - "name" : "Multiply_846", - "op" : "Multiply", - "outputs" : ["Multiply_846_0"] - }, - { - "inputs" : [ "Multiply_836", "Multiply_846" ], - "name" : "Add_847", - "op" : "Add", - "outputs" : ["Add_847_0"] - }, - { - "inputs" : ["Add_847"], - "name" : "Tanh_848", - "op" : "Tanh", - "outputs" : ["Tanh_848_0"] - }, - { - "inputs" : ["Add_847"], - "name" : "Cosh_1226", - "op" : "Cosh", - "outputs" : ["Cosh_1226_0"] - }, - { - "inputs" : [ "Divide_828", "Tanh_848" ], - "name" : "Multiply_849", - "op" : "Multiply", - "outputs" : ["Multiply_849_0"] - }, - { - "inputs" : [ "Cosh_1226", "Cosh_1226" ], - "name" : "Multiply_1227", - "op" : "Multiply", - "outputs" : ["Multiply_1227_0"] - }, - { - "inputs" : [ "Multiply_849", "Reshape_850" ], - "name" : "Dot_851", - "op" : "Dot", - "outputs" : ["Dot_851_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_849"], - "name" : "Reshape_1219", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1219_0"] - }, - { - "inputs" : [ "Dot_851", "Broadcast_852" ], - "name" : "Add_853", - "op" : "Add", - "outputs" : ["Add_853_0"] - }, - { - "inputs" : [ "Add_26", "Add_853" ], - "name" : "Add_854", - "op" : "Add", - "outputs" : ["Add_854_0"] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_855", - "op" : "Slice", - "outputs" : ["Slice_855_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_862", - "op" : "Slice", - "outputs" : ["Slice_862_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_870", - "op" : "Slice", - "outputs" : ["Slice_870_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_877", - "op" : "Slice", - "outputs" : ["Slice_877_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_855"], - "name" : "Negative_858", - "op" : "Negative", - "outputs" : ["Negative_858_0"] - }, - { - "inputs" : ["Slice_862"], - "name" : "Negative_865", - "op" : "Negative", - "outputs" : ["Negative_865_0"] - }, - { - "inputs" : ["Slice_870"], - "name" : "Negative_873", - "op" : "Negative", - "outputs" : ["Negative_873_0"] - }, - { - "inputs" : ["Slice_877"], - "name" : "Tanh_878", - "op" : "Tanh", - "outputs" : ["Tanh_878_0"] - }, - { - "inputs" : ["Slice_877"], - "name" : "Cosh_1171", - "op" : "Cosh", - "outputs" : ["Cosh_1171_0"] - }, - { - "inputs" : ["Negative_858"], - "name" : "Exp_859", - "op" : "Exp", - "outputs" : ["Exp_859_0"] - }, - { - "inputs" : ["Negative_865"], - "name" : "Exp_866", - "op" : "Exp", - "outputs" : ["Exp_866_0"] - }, - { - "inputs" : ["Negative_873"], - "name" : "Exp_874", - "op" : "Exp", - "outputs" : ["Exp_874_0"] - }, - { - "inputs" : [ "Cosh_1171", "Cosh_1171" ], - "name" : "Multiply_1172", - "op" : "Multiply", - "outputs" : ["Multiply_1172_0"] - }, - { - "inputs" : [ "Broadcast_857", "Exp_859" ], - "name" : "Add_860", - "op" : "Add", - "outputs" : ["Add_860_0"] - }, - { - "inputs" : [ "Broadcast_864", "Exp_866" ], - "name" : "Add_867", - "op" : "Add", - "outputs" : ["Add_867_0"] - }, - { - "inputs" : [ "Broadcast_872", "Exp_874" ], - "name" : "Add_875", - "op" : "Add", - "outputs" : ["Add_875_0"] - }, - { - "inputs" : [ "Broadcast_857", "Add_860" ], - "name" : "Divide_861", - "op" : "Divide", - "outputs" : ["Divide_861_0"] - }, - { - "inputs" : [ "Broadcast_864", "Add_867" ], - "name" : "Divide_868", - "op" : "Divide", - "outputs" : ["Divide_868_0"] - }, - { - "inputs" : [ "Broadcast_872", "Add_875" ], - "name" : "Divide_876", - "op" : "Divide", - "outputs" : ["Divide_876_0"] - }, - { - "inputs" : [ "Divide_868", "Add_847" ], - "name" : "Multiply_869", - "op" : "Multiply", - "outputs" : ["Multiply_869_0"] - }, - { - "inputs" : [ "Divide_876", "Tanh_878" ], - "name" : "Multiply_879", - "op" : "Multiply", - "outputs" : ["Multiply_879_0"] - }, - { - "inputs" : [ "Multiply_869", "Multiply_879" ], - "name" : "Add_880", - "op" : "Add", - "outputs" : ["Add_880_0"] - }, - { - "inputs" : ["Add_880"], - "name" : "Tanh_881", - "op" : "Tanh", - "outputs" : ["Tanh_881_0"] - }, - { - "inputs" : ["Add_880"], - "name" : "Cosh_1165", - "op" : "Cosh", - "outputs" : ["Cosh_1165_0"] - }, - { - "inputs" : [ "Divide_861", "Tanh_881" ], - "name" : "Multiply_882", - "op" : "Multiply", - "outputs" : ["Multiply_882_0"] - }, - { - "inputs" : [ "Cosh_1165", "Cosh_1165" ], - "name" : "Multiply_1166", - "op" : "Multiply", - "outputs" : ["Multiply_1166_0"] - }, - { - "inputs" : [ "Multiply_882", "Reshape_883" ], - "name" : "Dot_884", - "op" : "Dot", - "outputs" : ["Dot_884_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_882"], - "name" : "Reshape_1158", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1158_0"] - }, - { - "inputs" : [ "Dot_884", "Broadcast_885" ], - "name" : "Add_886", - "op" : "Add", - "outputs" : ["Add_886_0"] - }, - { - "inputs" : [ "Add_20", "Add_886" ], - "name" : "Add_887", - "op" : "Add", - "outputs" : ["Add_887_0"] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_888", - "op" : "Slice", - "outputs" : ["Slice_888_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_895", - "op" : "Slice", - "outputs" : ["Slice_895_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_903", - "op" : "Slice", - "outputs" : ["Slice_903_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_910", - "op" : "Slice", - "outputs" : ["Slice_910_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_888"], - "name" : "Negative_891", - "op" : "Negative", - "outputs" : ["Negative_891_0"] - }, - { - "inputs" : ["Slice_895"], - "name" : "Negative_898", - "op" : "Negative", - "outputs" : ["Negative_898_0"] - }, - { - "inputs" : ["Slice_903"], - "name" : "Negative_906", - "op" : "Negative", - "outputs" : ["Negative_906_0"] - }, - { - "inputs" : ["Slice_910"], - "name" : "Tanh_911", - "op" : "Tanh", - "outputs" : ["Tanh_911_0"] - }, - { - "inputs" : ["Slice_910"], - "name" : "Cosh_1110", - "op" : "Cosh", - "outputs" : ["Cosh_1110_0"] - }, - { - "inputs" : ["Negative_891"], - "name" : "Exp_892", - "op" : "Exp", - "outputs" : ["Exp_892_0"] - }, - { - "inputs" : ["Negative_898"], - "name" : "Exp_899", - "op" : "Exp", - "outputs" : ["Exp_899_0"] - }, - { - "inputs" : ["Negative_906"], - "name" : "Exp_907", - "op" : "Exp", - "outputs" : ["Exp_907_0"] - }, - { - "inputs" : [ "Cosh_1110", "Cosh_1110" ], - "name" : "Multiply_1111", - "op" : "Multiply", - "outputs" : ["Multiply_1111_0"] - }, - { - "inputs" : [ "Broadcast_890", "Exp_892" ], - "name" : "Add_893", - "op" : "Add", - "outputs" : ["Add_893_0"] - }, - { - "inputs" : [ "Broadcast_897", "Exp_899" ], - "name" : "Add_900", - "op" : "Add", - "outputs" : ["Add_900_0"] - }, - { - "inputs" : [ "Broadcast_905", "Exp_907" ], - "name" : "Add_908", - "op" : "Add", - "outputs" : ["Add_908_0"] - }, - { - "inputs" : [ "Broadcast_890", "Add_893" ], - "name" : "Divide_894", - "op" : "Divide", - "outputs" : ["Divide_894_0"] - }, - { - "inputs" : [ "Broadcast_897", "Add_900" ], - "name" : "Divide_901", - "op" : "Divide", - "outputs" : ["Divide_901_0"] - }, - { - "inputs" : [ "Broadcast_905", "Add_908" ], - "name" : "Divide_909", - "op" : "Divide", - "outputs" : ["Divide_909_0"] - }, - { - "inputs" : [ "Divide_901", "Add_880" ], - "name" : "Multiply_902", - "op" : "Multiply", - "outputs" : ["Multiply_902_0"] - }, - { - "inputs" : [ "Divide_909", "Tanh_911" ], - "name" : "Multiply_912", - "op" : "Multiply", - "outputs" : ["Multiply_912_0"] - }, - { - "inputs" : [ "Multiply_902", "Multiply_912" ], - "name" : "Add_913", - "op" : "Add", - "outputs" : ["Add_913_0"] - }, - { - "inputs" : ["Add_913"], - "name" : "Tanh_914", - "op" : "Tanh", - "outputs" : ["Tanh_914_0"] - }, - { - "inputs" : ["Add_913"], - "name" : "Cosh_1104", - "op" : "Cosh", - "outputs" : ["Cosh_1104_0"] - }, - { - "inputs" : [ "Divide_894", "Tanh_914" ], - "name" : "Multiply_915", - "op" : "Multiply", - "outputs" : ["Multiply_915_0"] - }, - { - "inputs" : [ "Cosh_1104", "Cosh_1104" ], - "name" : "Multiply_1105", - "op" : "Multiply", - "outputs" : ["Multiply_1105_0"] - }, - { - "inputs" : [ "Multiply_915", "Reshape_916" ], - "name" : "Dot_917", - "op" : "Dot", - "outputs" : ["Dot_917_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_915"], - "name" : "Reshape_1097", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1097_0"] - }, - { - "inputs" : [ "Dot_917", "Broadcast_918" ], - "name" : "Add_919", - "op" : "Add", - "outputs" : ["Add_919_0"] - }, - { - "inputs" : [ "Add_14", "Add_919" ], - "name" : "Add_920", - "op" : "Add", - "outputs" : ["Add_920_0"] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_921", - "op" : "Slice", - "outputs" : ["Slice_921_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_928", - "op" : "Slice", - "outputs" : ["Slice_928_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_936", - "op" : "Slice", - "outputs" : ["Slice_936_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_943", - "op" : "Slice", - "outputs" : ["Slice_943_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_921"], - "name" : "Negative_924", - "op" : "Negative", - "outputs" : ["Negative_924_0"] - }, - { - "inputs" : ["Slice_928"], - "name" : "Negative_931", - "op" : "Negative", - "outputs" : ["Negative_931_0"] - }, - { - "inputs" : ["Slice_936"], - "name" : "Negative_939", - "op" : "Negative", - "outputs" : ["Negative_939_0"] - }, - { - "inputs" : ["Slice_943"], - "name" : "Tanh_944", - "op" : "Tanh", - "outputs" : ["Tanh_944_0"] - }, - { - "inputs" : ["Slice_943"], - "name" : "Cosh_1049", - "op" : "Cosh", - "outputs" : ["Cosh_1049_0"] - }, - { - "inputs" : ["Negative_924"], - "name" : "Exp_925", - "op" : "Exp", - "outputs" : ["Exp_925_0"] - }, - { - "inputs" : ["Negative_931"], - "name" : "Exp_932", - "op" : "Exp", - "outputs" : ["Exp_932_0"] - }, - { - "inputs" : ["Negative_939"], - "name" : "Exp_940", - "op" : "Exp", - "outputs" : ["Exp_940_0"] - }, - { - "inputs" : [ "Cosh_1049", "Cosh_1049" ], - "name" : "Multiply_1050", - "op" : "Multiply", - "outputs" : ["Multiply_1050_0"] - }, - { - "inputs" : [ "Broadcast_923", "Exp_925" ], - "name" : "Add_926", - "op" : "Add", - "outputs" : ["Add_926_0"] - }, - { - "inputs" : [ "Broadcast_930", "Exp_932" ], - "name" : "Add_933", - "op" : "Add", - "outputs" : ["Add_933_0"] - }, - { - "inputs" : [ "Broadcast_938", "Exp_940" ], - "name" : "Add_941", - "op" : "Add", - "outputs" : ["Add_941_0"] - }, - { - "inputs" : [ "Broadcast_923", "Add_926" ], - "name" : "Divide_927", - "op" : "Divide", - "outputs" : ["Divide_927_0"] - }, - { - "inputs" : [ "Broadcast_930", "Add_933" ], - "name" : "Divide_934", - "op" : "Divide", - "outputs" : ["Divide_934_0"] - }, - { - "inputs" : [ "Broadcast_938", "Add_941" ], - "name" : "Divide_942", - "op" : "Divide", - "outputs" : ["Divide_942_0"] - }, - { - "inputs" : [ "Divide_934", "Add_913" ], - "name" : "Multiply_935", - "op" : "Multiply", - "outputs" : ["Multiply_935_0"] - }, - { - "inputs" : [ "Divide_942", "Tanh_944" ], - "name" : "Multiply_945", - "op" : "Multiply", - "outputs" : ["Multiply_945_0"] - }, - { - "inputs" : [ "Multiply_935", "Multiply_945" ], - "name" : "Add_946", - "op" : "Add", - "outputs" : ["Add_946_0"] - }, - { - "inputs" : ["Add_946"], - "name" : "Tanh_947", - "op" : "Tanh", - "outputs" : ["Tanh_947_0"] - }, - { - "inputs" : ["Add_946"], - "name" : "Cosh_1043", - "op" : "Cosh", - "outputs" : ["Cosh_1043_0"] - }, - { - "inputs" : [ "Divide_927", "Tanh_947" ], - "name" : "Multiply_948", - "op" : "Multiply", - "outputs" : ["Multiply_948_0"] - }, - { - "inputs" : [ "Cosh_1043", "Cosh_1043" ], - "name" : "Multiply_1044", - "op" : "Multiply", - "outputs" : ["Multiply_1044_0"] - }, - { - "inputs" : [ "Multiply_948", "Reshape_949" ], - "name" : "Dot_950", - "op" : "Dot", - "outputs" : ["Dot_950_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Multiply_948"], - "name" : "Reshape_1037", - "op" : "Reshape", - "output_shape" : [ 150, 10 ], - "outputs" : ["Reshape_1037_0"] - }, - { - "inputs" : [ "Dot_950", "Broadcast_951" ], - "name" : "Add_952", - "op" : "Add", - "outputs" : ["Add_952_0"] - }, - { - "inputs" : [ "Add_8", "Add_952" ], - "name" : "Add_953", - "op" : "Add", - "outputs" : ["Add_953_0"] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_954", - "op" : "Slice", - "outputs" : ["Slice_954_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_961", - "op" : "Slice", - "outputs" : ["Slice_961_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_969", - "op" : "Slice", - "outputs" : ["Slice_969_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_976", - "op" : "Slice", - "outputs" : ["Slice_976_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_954"], - "name" : "Negative_957", - "op" : "Negative", - "outputs" : ["Negative_957_0"] - }, - { - "inputs" : ["Slice_961"], - "name" : "Negative_964", - "op" : "Negative", - "outputs" : ["Negative_964_0"] - }, - { - "inputs" : ["Slice_969"], - "name" : "Negative_972", - "op" : "Negative", - "outputs" : ["Negative_972_0"] - }, - { - "inputs" : ["Slice_976"], - "name" : "Tanh_977", - "op" : "Tanh", - "outputs" : ["Tanh_977_0"] - }, - { - "inputs" : ["Slice_976"], - "name" : "Cosh_990", - "op" : "Cosh", - "outputs" : ["Cosh_990_0"] - }, - { - "inputs" : ["Negative_957"], - "name" : "Exp_958", - "op" : "Exp", - "outputs" : ["Exp_958_0"] - }, - { - "inputs" : ["Negative_964"], - "name" : "Exp_965", - "op" : "Exp", - "outputs" : ["Exp_965_0"] - }, - { - "inputs" : ["Negative_972"], - "name" : "Exp_973", - "op" : "Exp", - "outputs" : ["Exp_973_0"] - }, - { - "inputs" : [ "Cosh_990", "Cosh_990" ], - "name" : "Multiply_991", - "op" : "Multiply", - "outputs" : ["Multiply_991_0"] - }, - { - "inputs" : [ "Broadcast_956", "Exp_958" ], - "name" : "Add_959", - "op" : "Add", - "outputs" : ["Add_959_0"] - }, - { - "inputs" : [ "Broadcast_963", "Exp_965" ], - "name" : "Add_966", - "op" : "Add", - "outputs" : ["Add_966_0"] - }, - { - "inputs" : [ "Broadcast_971", "Exp_973" ], - "name" : "Add_974", - "op" : "Add", - "outputs" : ["Add_974_0"] - }, - { - "inputs" : [ "Broadcast_956", "Add_959" ], - "name" : "Divide_960", - "op" : "Divide", - "outputs" : ["Divide_960_0"] - }, - { - "inputs" : [ "Broadcast_963", "Add_966" ], - "name" : "Divide_967", - "op" : "Divide", - "outputs" : ["Divide_967_0"] - }, - { - "inputs" : [ "Broadcast_971", "Add_974" ], - "name" : "Divide_975", - "op" : "Divide", - "outputs" : ["Divide_975_0"] - }, - { - "inputs" : [ "Divide_960", "Parameter_982" ], - "name" : "Multiply_984", - "op" : "Multiply", - "outputs" : ["Multiply_984_0"] - }, - { - "inputs" : [ "Divide_967", "Add_946" ], - "name" : "Multiply_968", - "op" : "Multiply", - "outputs" : ["Multiply_968_0"] - }, - { - "inputs" : [ "Divide_975", "Tanh_977" ], - "name" : "Multiply_978", - "op" : "Multiply", - "outputs" : ["Multiply_978_0"] - }, - { - "inputs" : [ "Multiply_968", "Multiply_978" ], - "name" : "Add_979", - "op" : "Add", - "outputs" : ["Add_979_0"] - }, - { - "inputs" : ["Add_979"], - "name" : "Tanh_980", - "op" : "Tanh", - "outputs" : ["Tanh_980_0"] - }, - { - "inputs" : ["Add_979"], - "name" : "Cosh_985", - "op" : "Cosh", - "outputs" : ["Cosh_985_0"] - }, - { - "inputs" : [ "Parameter_982", "Tanh_980" ], - "name" : "Multiply_983", - "op" : "Multiply", - "outputs" : ["Multiply_983_0"] - }, - { - "inputs" : [ "Cosh_985", "Cosh_985" ], - "name" : "Multiply_986", - "op" : "Multiply", - "outputs" : ["Multiply_986_0"] - }, - { - "inputs" : ["Multiply_983"], - "name" : "Negative_1024", - "op" : "Negative", - "outputs" : ["Negative_1024_0"] - }, - { - "inputs" : [ "Multiply_984", "Multiply_986" ], - "name" : "Divide_987", - "op" : "Divide", - "outputs" : ["Divide_987_0"] - }, - { - "inputs" : [ "Negative_1024", "Divide_960" ], - "name" : "Multiply_1025", - "op" : "Multiply", - "outputs" : ["Multiply_1025_0"] - }, - { - "inputs" : [ "Divide_987", "Tanh_977" ], - "name" : "Multiply_988", - "op" : "Multiply", - "outputs" : ["Multiply_988_0"] - }, - { - "inputs" : [ "Divide_975", "Divide_987" ], - "name" : "Multiply_989", - "op" : "Multiply", - "outputs" : ["Multiply_989_0"] - }, - { - "inputs" : [ "Divide_987", "Add_946" ], - "name" : "Multiply_1008", - "op" : "Multiply", - "outputs" : ["Multiply_1008_0"] - }, - { - "inputs" : [ "Divide_967", "Divide_987" ], - "name" : "Multiply_1009", - "op" : "Multiply", - "outputs" : ["Multiply_1009_0"] - }, - { - "inputs" : [ "Multiply_1025", "Add_959" ], - "name" : "Divide_1026", - "op" : "Divide", - "outputs" : ["Divide_1026_0"] - }, - { - "inputs" : ["Multiply_988"], - "name" : "Negative_998", - "op" : "Negative", - "outputs" : ["Negative_998_0"] - }, - { - "inputs" : [ "Multiply_989", "Multiply_991" ], - "name" : "Divide_992", - "op" : "Divide", - "outputs" : ["Divide_992_0"] - }, - { - "inputs" : ["Multiply_1008"], - "name" : "Negative_1012", - "op" : "Negative", - "outputs" : ["Negative_1012_0"] - }, - { - "inputs" : [ "Divide_1026", "Exp_958" ], - "name" : "Multiply_1028", - "op" : "Multiply", - "outputs" : ["Multiply_1028_0"] - }, - { - "inputs" : [ "Negative_998", "Divide_975" ], - "name" : "Multiply_999", - "op" : "Multiply", - "outputs" : ["Multiply_999_0"] - }, - { - "inputs" : [ "Broadcast_994", "Divide_992" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_995", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_995_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1012", "Divide_967" ], - "name" : "Multiply_1013", - "op" : "Multiply", - "outputs" : ["Multiply_1013_0"] - }, - { - "inputs" : ["Multiply_1028"], - "name" : "Negative_1029", - "op" : "Negative", - "outputs" : ["Negative_1029_0"] - }, - { - "inputs" : [ "Multiply_999", "Add_974" ], - "name" : "Divide_1000", - "op" : "Divide", - "outputs" : ["Divide_1000_0"] - }, - { - "inputs" : ["ReplaceSlice_995"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1004", - "op" : "Slice", - "outputs" : ["Slice_1004_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1013", "Add_966" ], - "name" : "Divide_1014", - "op" : "Divide", - "outputs" : ["Divide_1014_0"] - }, - { - "inputs" : [ "Divide_1000", "Exp_973" ], - "name" : "Multiply_1002", - "op" : "Multiply", - "outputs" : ["Multiply_1002_0"] - }, - { - "inputs" : [ "Divide_1014", "Exp_965" ], - "name" : "Multiply_1016", - "op" : "Multiply", - "outputs" : ["Multiply_1016_0"] - }, - { - "inputs" : ["Multiply_1002"], - "name" : "Negative_1003", - "op" : "Negative", - "outputs" : ["Negative_1003_0"] - }, - { - "inputs" : ["Multiply_1016"], - "name" : "Negative_1017", - "op" : "Negative", - "outputs" : ["Negative_1017_0"] - }, - { - "inputs" : [ "Slice_1004", "Negative_1003" ], - "name" : "Add_1005", - "op" : "Add", - "outputs" : ["Add_1005_0"] - }, - { - "inputs" : [ "ReplaceSlice_995", "Add_1005" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1006", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1006_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1006"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1018", - "op" : "Slice", - "outputs" : ["Slice_1018_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1018", "Negative_1017" ], - "name" : "Add_1019", - "op" : "Add", - "outputs" : ["Add_1019_0"] - }, - { - "inputs" : [ "ReplaceSlice_1006", "Add_1019" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1020", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1020_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1020"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1030", - "op" : "Slice", - "outputs" : ["Slice_1030_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1030", "Negative_1029" ], - "name" : "Add_1031", - "op" : "Add", - "outputs" : ["Add_1031_0"] - }, - { - "inputs" : [ "ReplaceSlice_1020", "Add_1031" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1032", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1032_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1032"], - "name" : "Sum_1033", - "op" : "Sum", - "outputs" : ["Sum_1033_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1032"], - "name" : "Reshape_1034", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1034_0"] - }, - { - "inputs" : [ "Reshape_1037", "ReplaceSlice_1032" ], - "name" : "Dot_1038", - "op" : "Dot", - "outputs" : ["Dot_1038_0"] - }, - { - "inputs" : ["ReplaceSlice_1032"], - "name" : "Sum_2863", - "op" : "Sum", - "outputs" : ["Sum_2863_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1032"], - "name" : "Reshape_2865", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2865_0"] - }, - { - "inputs" : [ "Reshape_2868", "ReplaceSlice_1032" ], - "name" : "Dot_2869", - "op" : "Dot", - "outputs" : ["Dot_2869_0"] - }, - { - "inputs" : [ "Reshape_949", "Reshape_1034" ], - "name" : "Dot_1035", - "op" : "Dot", - "outputs" : ["Dot_1035_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1038"], - "name" : "Reshape_1039", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1039_0"] - }, - { - "inputs" : [ "Reshape_5", "Reshape_2865" ], - "name" : "Dot_2866", - "op" : "Dot", - "outputs" : ["Dot_2866_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2869"], - "name" : "Reshape_2870", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2870_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1035"], - "name" : "Reshape_1036", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1036_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1039"], - "name" : "Reshape_1040", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1040_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2866"], - "name" : "Reshape_2867", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2867_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2870"], - "name" : "Reshape_2871", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2871_0"] - }, - { - "inputs" : [ "Reshape_1036", "Tanh_947" ], - "name" : "Multiply_1041", - "op" : "Multiply", - "outputs" : ["Multiply_1041_0"] - }, - { - "inputs" : [ "Divide_927", "Reshape_1036" ], - "name" : "Multiply_1042", - "op" : "Multiply", - "outputs" : ["Multiply_1042_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2867"], - "name" : "Reshape_2873", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2873_0"] - }, - { - "inputs" : ["Multiply_1041"], - "name" : "Negative_1083", - "op" : "Negative", - "outputs" : ["Negative_1083_0"] - }, - { - "inputs" : [ "Multiply_1042", "Multiply_1044" ], - "name" : "Divide_1045", - "op" : "Divide", - "outputs" : ["Divide_1045_0"] - }, - { - "inputs" : [ "Negative_1083", "Divide_927" ], - "name" : "Multiply_1084", - "op" : "Multiply", - "outputs" : ["Multiply_1084_0"] - }, - { - "inputs" : [ "Multiply_1009", "Divide_1045" ], - "name" : "Add_1046", - "op" : "Add", - "outputs" : ["Add_1046_0"] - }, - { - "inputs" : [ "Multiply_1084", "Add_926" ], - "name" : "Divide_1085", - "op" : "Divide", - "outputs" : ["Divide_1085_0"] - }, - { - "inputs" : [ "Add_1046", "Tanh_944" ], - "name" : "Multiply_1047", - "op" : "Multiply", - "outputs" : ["Multiply_1047_0"] - }, - { - "inputs" : [ "Divide_942", "Add_1046" ], - "name" : "Multiply_1048", - "op" : "Multiply", - "outputs" : ["Multiply_1048_0"] - }, - { - "inputs" : [ "Add_1046", "Add_913" ], - "name" : "Multiply_1067", - "op" : "Multiply", - "outputs" : ["Multiply_1067_0"] - }, - { - "inputs" : [ "Divide_934", "Add_1046" ], - "name" : "Multiply_1068", - "op" : "Multiply", - "outputs" : ["Multiply_1068_0"] - }, - { - "inputs" : [ "Divide_1085", "Exp_925" ], - "name" : "Multiply_1087", - "op" : "Multiply", - "outputs" : ["Multiply_1087_0"] - }, - { - "inputs" : ["Multiply_1047"], - "name" : "Negative_1057", - "op" : "Negative", - "outputs" : ["Negative_1057_0"] - }, - { - "inputs" : [ "Multiply_1048", "Multiply_1050" ], - "name" : "Divide_1051", - "op" : "Divide", - "outputs" : ["Divide_1051_0"] - }, - { - "inputs" : ["Multiply_1067"], - "name" : "Negative_1071", - "op" : "Negative", - "outputs" : ["Negative_1071_0"] - }, - { - "inputs" : ["Multiply_1087"], - "name" : "Negative_1088", - "op" : "Negative", - "outputs" : ["Negative_1088_0"] - }, - { - "inputs" : [ "Negative_1057", "Divide_942" ], - "name" : "Multiply_1058", - "op" : "Multiply", - "outputs" : ["Multiply_1058_0"] - }, - { - "inputs" : [ "Broadcast_1053", "Divide_1051" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1054", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1054_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1071", "Divide_934" ], - "name" : "Multiply_1072", - "op" : "Multiply", - "outputs" : ["Multiply_1072_0"] - }, - { - "inputs" : [ "Multiply_1058", "Add_941" ], - "name" : "Divide_1059", - "op" : "Divide", - "outputs" : ["Divide_1059_0"] - }, - { - "inputs" : ["ReplaceSlice_1054"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1063", - "op" : "Slice", - "outputs" : ["Slice_1063_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1072", "Add_933" ], - "name" : "Divide_1073", - "op" : "Divide", - "outputs" : ["Divide_1073_0"] - }, - { - "inputs" : [ "Divide_1059", "Exp_940" ], - "name" : "Multiply_1061", - "op" : "Multiply", - "outputs" : ["Multiply_1061_0"] - }, - { - "inputs" : [ "Divide_1073", "Exp_932" ], - "name" : "Multiply_1075", - "op" : "Multiply", - "outputs" : ["Multiply_1075_0"] - }, - { - "inputs" : ["Multiply_1061"], - "name" : "Negative_1062", - "op" : "Negative", - "outputs" : ["Negative_1062_0"] - }, - { - "inputs" : ["Multiply_1075"], - "name" : "Negative_1076", - "op" : "Negative", - "outputs" : ["Negative_1076_0"] - }, - { - "inputs" : [ "Slice_1063", "Negative_1062" ], - "name" : "Add_1064", - "op" : "Add", - "outputs" : ["Add_1064_0"] - }, - { - "inputs" : [ "ReplaceSlice_1054", "Add_1064" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1065", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1065_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1065"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1077", - "op" : "Slice", - "outputs" : ["Slice_1077_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1077", "Negative_1076" ], - "name" : "Add_1078", - "op" : "Add", - "outputs" : ["Add_1078_0"] - }, - { - "inputs" : [ "ReplaceSlice_1065", "Add_1078" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1079", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1079_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1079"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1089", - "op" : "Slice", - "outputs" : ["Slice_1089_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1089", "Negative_1088" ], - "name" : "Add_1090", - "op" : "Add", - "outputs" : ["Add_1090_0"] - }, - { - "inputs" : [ "ReplaceSlice_1079", "Add_1090" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1091", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1091_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1091"], - "name" : "Sum_1092", - "op" : "Sum", - "outputs" : ["Sum_1092_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1091"], - "name" : "Reshape_1094", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1094_0"] - }, - { - "inputs" : [ "Reshape_1097", "ReplaceSlice_1091" ], - "name" : "Dot_1098", - "op" : "Dot", - "outputs" : ["Dot_1098_0"] - }, - { - "inputs" : ["ReplaceSlice_1091"], - "name" : "Sum_2848", - "op" : "Sum", - "outputs" : ["Sum_2848_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1091"], - "name" : "Reshape_2850", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2850_0"] - }, - { - "inputs" : [ "Reshape_2853", "ReplaceSlice_1091" ], - "name" : "Dot_2854", - "op" : "Dot", - "outputs" : ["Dot_2854_0"] - }, - { - "inputs" : [ "Sum_1033", "Sum_1092" ], - "name" : "Add_1093", - "op" : "Add", - "outputs" : ["Add_1093_0"] - }, - { - "inputs" : [ "Reshape_916", "Reshape_1094" ], - "name" : "Dot_1095", - "op" : "Dot", - "outputs" : ["Dot_1095_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1098"], - "name" : "Reshape_1099", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1099_0"] - }, - { - "inputs" : [ "Reshape_11", "Reshape_2850" ], - "name" : "Dot_2851", - "op" : "Dot", - "outputs" : ["Dot_2851_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2854"], - "name" : "Reshape_2855", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2855_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1095"], - "name" : "Reshape_1096", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1096_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1099"], - "name" : "Reshape_1100", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1100_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2851"], - "name" : "Reshape_2852", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2852_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2855"], - "name" : "Reshape_2856", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2856_0"] - }, - { - "inputs" : [ "Reshape_1096", "Tanh_914" ], - "name" : "Multiply_1102", - "op" : "Multiply", - "outputs" : ["Multiply_1102_0"] - }, - { - "inputs" : [ "Divide_894", "Reshape_1096" ], - "name" : "Multiply_1103", - "op" : "Multiply", - "outputs" : ["Multiply_1103_0"] - }, - { - "inputs" : [ "Reshape_1040", "Reshape_1100" ], - "name" : "Add_1101", - "op" : "Add", - "outputs" : ["Add_1101_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2852"], - "name" : "Reshape_2858", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2858_0"] - }, - { - "inputs" : ["Multiply_1102"], - "name" : "Negative_1144", - "op" : "Negative", - "outputs" : ["Negative_1144_0"] - }, - { - "inputs" : [ "Multiply_1103", "Multiply_1105" ], - "name" : "Divide_1106", - "op" : "Divide", - "outputs" : ["Divide_1106_0"] - }, - { - "inputs" : [ "Negative_1144", "Divide_894" ], - "name" : "Multiply_1145", - "op" : "Multiply", - "outputs" : ["Multiply_1145_0"] - }, - { - "inputs" : [ "Multiply_1068", "Divide_1106" ], - "name" : "Add_1107", - "op" : "Add", - "outputs" : ["Add_1107_0"] - }, - { - "inputs" : [ "Multiply_1145", "Add_893" ], - "name" : "Divide_1146", - "op" : "Divide", - "outputs" : ["Divide_1146_0"] - }, - { - "inputs" : [ "Add_1107", "Tanh_911" ], - "name" : "Multiply_1108", - "op" : "Multiply", - "outputs" : ["Multiply_1108_0"] - }, - { - "inputs" : [ "Divide_909", "Add_1107" ], - "name" : "Multiply_1109", - "op" : "Multiply", - "outputs" : ["Multiply_1109_0"] - }, - { - "inputs" : [ "Add_1107", "Add_880" ], - "name" : "Multiply_1128", - "op" : "Multiply", - "outputs" : ["Multiply_1128_0"] - }, - { - "inputs" : [ "Divide_901", "Add_1107" ], - "name" : "Multiply_1129", - "op" : "Multiply", - "outputs" : ["Multiply_1129_0"] - }, - { - "inputs" : [ "Divide_1146", "Exp_892" ], - "name" : "Multiply_1148", - "op" : "Multiply", - "outputs" : ["Multiply_1148_0"] - }, - { - "inputs" : ["Multiply_1108"], - "name" : "Negative_1118", - "op" : "Negative", - "outputs" : ["Negative_1118_0"] - }, - { - "inputs" : [ "Multiply_1109", "Multiply_1111" ], - "name" : "Divide_1112", - "op" : "Divide", - "outputs" : ["Divide_1112_0"] - }, - { - "inputs" : ["Multiply_1128"], - "name" : "Negative_1132", - "op" : "Negative", - "outputs" : ["Negative_1132_0"] - }, - { - "inputs" : ["Multiply_1148"], - "name" : "Negative_1149", - "op" : "Negative", - "outputs" : ["Negative_1149_0"] - }, - { - "inputs" : [ "Negative_1118", "Divide_909" ], - "name" : "Multiply_1119", - "op" : "Multiply", - "outputs" : ["Multiply_1119_0"] - }, - { - "inputs" : [ "Broadcast_1114", "Divide_1112" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1115", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1115_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1132", "Divide_901" ], - "name" : "Multiply_1133", - "op" : "Multiply", - "outputs" : ["Multiply_1133_0"] - }, - { - "inputs" : [ "Multiply_1119", "Add_908" ], - "name" : "Divide_1120", - "op" : "Divide", - "outputs" : ["Divide_1120_0"] - }, - { - "inputs" : ["ReplaceSlice_1115"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1124", - "op" : "Slice", - "outputs" : ["Slice_1124_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1133", "Add_900" ], - "name" : "Divide_1134", - "op" : "Divide", - "outputs" : ["Divide_1134_0"] - }, - { - "inputs" : [ "Divide_1120", "Exp_907" ], - "name" : "Multiply_1122", - "op" : "Multiply", - "outputs" : ["Multiply_1122_0"] - }, - { - "inputs" : [ "Divide_1134", "Exp_899" ], - "name" : "Multiply_1136", - "op" : "Multiply", - "outputs" : ["Multiply_1136_0"] - }, - { - "inputs" : ["Multiply_1122"], - "name" : "Negative_1123", - "op" : "Negative", - "outputs" : ["Negative_1123_0"] - }, - { - "inputs" : ["Multiply_1136"], - "name" : "Negative_1137", - "op" : "Negative", - "outputs" : ["Negative_1137_0"] - }, - { - "inputs" : [ "Slice_1124", "Negative_1123" ], - "name" : "Add_1125", - "op" : "Add", - "outputs" : ["Add_1125_0"] - }, - { - "inputs" : [ "ReplaceSlice_1115", "Add_1125" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1126", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1126_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1126"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1138", - "op" : "Slice", - "outputs" : ["Slice_1138_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1138", "Negative_1137" ], - "name" : "Add_1139", - "op" : "Add", - "outputs" : ["Add_1139_0"] - }, - { - "inputs" : [ "ReplaceSlice_1126", "Add_1139" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1140", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1140_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1140"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1150", - "op" : "Slice", - "outputs" : ["Slice_1150_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1150", "Negative_1149" ], - "name" : "Add_1151", - "op" : "Add", - "outputs" : ["Add_1151_0"] - }, - { - "inputs" : [ "ReplaceSlice_1140", "Add_1151" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1152", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1152_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1152"], - "name" : "Sum_1153", - "op" : "Sum", - "outputs" : ["Sum_1153_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1152"], - "name" : "Reshape_1155", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1155_0"] - }, - { - "inputs" : [ "Reshape_1158", "ReplaceSlice_1152" ], - "name" : "Dot_1159", - "op" : "Dot", - "outputs" : ["Dot_1159_0"] - }, - { - "inputs" : ["ReplaceSlice_1152"], - "name" : "Sum_2833", - "op" : "Sum", - "outputs" : ["Sum_2833_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1152"], - "name" : "Reshape_2835", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2835_0"] - }, - { - "inputs" : [ "Reshape_2838", "ReplaceSlice_1152" ], - "name" : "Dot_2839", - "op" : "Dot", - "outputs" : ["Dot_2839_0"] - }, - { - "inputs" : [ "Add_1093", "Sum_1153" ], - "name" : "Add_1154", - "op" : "Add", - "outputs" : ["Add_1154_0"] - }, - { - "inputs" : [ "Reshape_883", "Reshape_1155" ], - "name" : "Dot_1156", - "op" : "Dot", - "outputs" : ["Dot_1156_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1159"], - "name" : "Reshape_1160", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1160_0"] - }, - { - "inputs" : [ "Reshape_17", "Reshape_2835" ], - "name" : "Dot_2836", - "op" : "Dot", - "outputs" : ["Dot_2836_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2839"], - "name" : "Reshape_2840", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2840_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1156"], - "name" : "Reshape_1157", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1157_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1160"], - "name" : "Reshape_1161", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1161_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2836"], - "name" : "Reshape_2837", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2837_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2840"], - "name" : "Reshape_2841", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2841_0"] - }, - { - "inputs" : [ "Reshape_1157", "Tanh_881" ], - "name" : "Multiply_1163", - "op" : "Multiply", - "outputs" : ["Multiply_1163_0"] - }, - { - "inputs" : [ "Divide_861", "Reshape_1157" ], - "name" : "Multiply_1164", - "op" : "Multiply", - "outputs" : ["Multiply_1164_0"] - }, - { - "inputs" : [ "Add_1101", "Reshape_1161" ], - "name" : "Add_1162", - "op" : "Add", - "outputs" : ["Add_1162_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2837"], - "name" : "Reshape_2843", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2843_0"] - }, - { - "inputs" : ["Multiply_1163"], - "name" : "Negative_1205", - "op" : "Negative", - "outputs" : ["Negative_1205_0"] - }, - { - "inputs" : [ "Multiply_1164", "Multiply_1166" ], - "name" : "Divide_1167", - "op" : "Divide", - "outputs" : ["Divide_1167_0"] - }, - { - "inputs" : [ "Negative_1205", "Divide_861" ], - "name" : "Multiply_1206", - "op" : "Multiply", - "outputs" : ["Multiply_1206_0"] - }, - { - "inputs" : [ "Multiply_1129", "Divide_1167" ], - "name" : "Add_1168", - "op" : "Add", - "outputs" : ["Add_1168_0"] - }, - { - "inputs" : [ "Multiply_1206", "Add_860" ], - "name" : "Divide_1207", - "op" : "Divide", - "outputs" : ["Divide_1207_0"] - }, - { - "inputs" : [ "Add_1168", "Tanh_878" ], - "name" : "Multiply_1169", - "op" : "Multiply", - "outputs" : ["Multiply_1169_0"] - }, - { - "inputs" : [ "Divide_876", "Add_1168" ], - "name" : "Multiply_1170", - "op" : "Multiply", - "outputs" : ["Multiply_1170_0"] - }, - { - "inputs" : [ "Add_1168", "Add_847" ], - "name" : "Multiply_1189", - "op" : "Multiply", - "outputs" : ["Multiply_1189_0"] - }, - { - "inputs" : [ "Divide_868", "Add_1168" ], - "name" : "Multiply_1190", - "op" : "Multiply", - "outputs" : ["Multiply_1190_0"] - }, - { - "inputs" : [ "Divide_1207", "Exp_859" ], - "name" : "Multiply_1209", - "op" : "Multiply", - "outputs" : ["Multiply_1209_0"] - }, - { - "inputs" : ["Multiply_1169"], - "name" : "Negative_1179", - "op" : "Negative", - "outputs" : ["Negative_1179_0"] - }, - { - "inputs" : [ "Multiply_1170", "Multiply_1172" ], - "name" : "Divide_1173", - "op" : "Divide", - "outputs" : ["Divide_1173_0"] - }, - { - "inputs" : ["Multiply_1189"], - "name" : "Negative_1193", - "op" : "Negative", - "outputs" : ["Negative_1193_0"] - }, - { - "inputs" : ["Multiply_1209"], - "name" : "Negative_1210", - "op" : "Negative", - "outputs" : ["Negative_1210_0"] - }, - { - "inputs" : [ "Negative_1179", "Divide_876" ], - "name" : "Multiply_1180", - "op" : "Multiply", - "outputs" : ["Multiply_1180_0"] - }, - { - "inputs" : [ "Broadcast_1175", "Divide_1173" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1176", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1176_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1193", "Divide_868" ], - "name" : "Multiply_1194", - "op" : "Multiply", - "outputs" : ["Multiply_1194_0"] - }, - { - "inputs" : [ "Multiply_1180", "Add_875" ], - "name" : "Divide_1181", - "op" : "Divide", - "outputs" : ["Divide_1181_0"] - }, - { - "inputs" : ["ReplaceSlice_1176"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1185", - "op" : "Slice", - "outputs" : ["Slice_1185_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1194", "Add_867" ], - "name" : "Divide_1195", - "op" : "Divide", - "outputs" : ["Divide_1195_0"] - }, - { - "inputs" : [ "Divide_1181", "Exp_874" ], - "name" : "Multiply_1183", - "op" : "Multiply", - "outputs" : ["Multiply_1183_0"] - }, - { - "inputs" : [ "Divide_1195", "Exp_866" ], - "name" : "Multiply_1197", - "op" : "Multiply", - "outputs" : ["Multiply_1197_0"] - }, - { - "inputs" : ["Multiply_1183"], - "name" : "Negative_1184", - "op" : "Negative", - "outputs" : ["Negative_1184_0"] - }, - { - "inputs" : ["Multiply_1197"], - "name" : "Negative_1198", - "op" : "Negative", - "outputs" : ["Negative_1198_0"] - }, - { - "inputs" : [ "Slice_1185", "Negative_1184" ], - "name" : "Add_1186", - "op" : "Add", - "outputs" : ["Add_1186_0"] - }, - { - "inputs" : [ "ReplaceSlice_1176", "Add_1186" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1187", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1187_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1187"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1199", - "op" : "Slice", - "outputs" : ["Slice_1199_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1199", "Negative_1198" ], - "name" : "Add_1200", - "op" : "Add", - "outputs" : ["Add_1200_0"] - }, - { - "inputs" : [ "ReplaceSlice_1187", "Add_1200" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1201", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1201_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1201"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1211", - "op" : "Slice", - "outputs" : ["Slice_1211_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1211", "Negative_1210" ], - "name" : "Add_1212", - "op" : "Add", - "outputs" : ["Add_1212_0"] - }, - { - "inputs" : [ "ReplaceSlice_1201", "Add_1212" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1213", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1213_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1213"], - "name" : "Sum_1214", - "op" : "Sum", - "outputs" : ["Sum_1214_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1213"], - "name" : "Reshape_1216", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1216_0"] - }, - { - "inputs" : [ "Reshape_1219", "ReplaceSlice_1213" ], - "name" : "Dot_1220", - "op" : "Dot", - "outputs" : ["Dot_1220_0"] - }, - { - "inputs" : ["ReplaceSlice_1213"], - "name" : "Sum_2818", - "op" : "Sum", - "outputs" : ["Sum_2818_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1213"], - "name" : "Reshape_2820", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2820_0"] - }, - { - "inputs" : [ "Reshape_2823", "ReplaceSlice_1213" ], - "name" : "Dot_2824", - "op" : "Dot", - "outputs" : ["Dot_2824_0"] - }, - { - "inputs" : [ "Add_1154", "Sum_1214" ], - "name" : "Add_1215", - "op" : "Add", - "outputs" : ["Add_1215_0"] - }, - { - "inputs" : [ "Reshape_850", "Reshape_1216" ], - "name" : "Dot_1217", - "op" : "Dot", - "outputs" : ["Dot_1217_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1220"], - "name" : "Reshape_1221", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1221_0"] - }, - { - "inputs" : [ "Reshape_23", "Reshape_2820" ], - "name" : "Dot_2821", - "op" : "Dot", - "outputs" : ["Dot_2821_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2824"], - "name" : "Reshape_2825", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2825_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1217"], - "name" : "Reshape_1218", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1218_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1221"], - "name" : "Reshape_1222", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1222_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2821"], - "name" : "Reshape_2822", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2822_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2825"], - "name" : "Reshape_2826", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2826_0"] - }, - { - "inputs" : [ "Reshape_1218", "Tanh_848" ], - "name" : "Multiply_1224", - "op" : "Multiply", - "outputs" : ["Multiply_1224_0"] - }, - { - "inputs" : [ "Divide_828", "Reshape_1218" ], - "name" : "Multiply_1225", - "op" : "Multiply", - "outputs" : ["Multiply_1225_0"] - }, - { - "inputs" : [ "Add_1162", "Reshape_1222" ], - "name" : "Add_1223", - "op" : "Add", - "outputs" : ["Add_1223_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2822"], - "name" : "Reshape_2828", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2828_0"] - }, - { - "inputs" : ["Multiply_1224"], - "name" : "Negative_1266", - "op" : "Negative", - "outputs" : ["Negative_1266_0"] - }, - { - "inputs" : [ "Multiply_1225", "Multiply_1227" ], - "name" : "Divide_1228", - "op" : "Divide", - "outputs" : ["Divide_1228_0"] - }, - { - "inputs" : [ "Negative_1266", "Divide_828" ], - "name" : "Multiply_1267", - "op" : "Multiply", - "outputs" : ["Multiply_1267_0"] - }, - { - "inputs" : [ "Multiply_1190", "Divide_1228" ], - "name" : "Add_1229", - "op" : "Add", - "outputs" : ["Add_1229_0"] - }, - { - "inputs" : [ "Multiply_1267", "Add_827" ], - "name" : "Divide_1268", - "op" : "Divide", - "outputs" : ["Divide_1268_0"] - }, - { - "inputs" : [ "Add_1229", "Tanh_845" ], - "name" : "Multiply_1230", - "op" : "Multiply", - "outputs" : ["Multiply_1230_0"] - }, - { - "inputs" : [ "Divide_843", "Add_1229" ], - "name" : "Multiply_1231", - "op" : "Multiply", - "outputs" : ["Multiply_1231_0"] - }, - { - "inputs" : [ "Add_1229", "Add_814" ], - "name" : "Multiply_1250", - "op" : "Multiply", - "outputs" : ["Multiply_1250_0"] - }, - { - "inputs" : [ "Divide_835", "Add_1229" ], - "name" : "Multiply_1251", - "op" : "Multiply", - "outputs" : ["Multiply_1251_0"] - }, - { - "inputs" : [ "Divide_1268", "Exp_826" ], - "name" : "Multiply_1270", - "op" : "Multiply", - "outputs" : ["Multiply_1270_0"] - }, - { - "inputs" : ["Multiply_1230"], - "name" : "Negative_1240", - "op" : "Negative", - "outputs" : ["Negative_1240_0"] - }, - { - "inputs" : [ "Multiply_1231", "Multiply_1233" ], - "name" : "Divide_1234", - "op" : "Divide", - "outputs" : ["Divide_1234_0"] - }, - { - "inputs" : ["Multiply_1250"], - "name" : "Negative_1254", - "op" : "Negative", - "outputs" : ["Negative_1254_0"] - }, - { - "inputs" : ["Multiply_1270"], - "name" : "Negative_1271", - "op" : "Negative", - "outputs" : ["Negative_1271_0"] - }, - { - "inputs" : [ "Negative_1240", "Divide_843" ], - "name" : "Multiply_1241", - "op" : "Multiply", - "outputs" : ["Multiply_1241_0"] - }, - { - "inputs" : [ "Broadcast_1236", "Divide_1234" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1237", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1237_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1254", "Divide_835" ], - "name" : "Multiply_1255", - "op" : "Multiply", - "outputs" : ["Multiply_1255_0"] - }, - { - "inputs" : [ "Multiply_1241", "Add_842" ], - "name" : "Divide_1242", - "op" : "Divide", - "outputs" : ["Divide_1242_0"] - }, - { - "inputs" : ["ReplaceSlice_1237"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1246", - "op" : "Slice", - "outputs" : ["Slice_1246_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1255", "Add_834" ], - "name" : "Divide_1256", - "op" : "Divide", - "outputs" : ["Divide_1256_0"] - }, - { - "inputs" : [ "Divide_1242", "Exp_841" ], - "name" : "Multiply_1244", - "op" : "Multiply", - "outputs" : ["Multiply_1244_0"] - }, - { - "inputs" : [ "Divide_1256", "Exp_833" ], - "name" : "Multiply_1258", - "op" : "Multiply", - "outputs" : ["Multiply_1258_0"] - }, - { - "inputs" : ["Multiply_1244"], - "name" : "Negative_1245", - "op" : "Negative", - "outputs" : ["Negative_1245_0"] - }, - { - "inputs" : ["Multiply_1258"], - "name" : "Negative_1259", - "op" : "Negative", - "outputs" : ["Negative_1259_0"] - }, - { - "inputs" : [ "Slice_1246", "Negative_1245" ], - "name" : "Add_1247", - "op" : "Add", - "outputs" : ["Add_1247_0"] - }, - { - "inputs" : [ "ReplaceSlice_1237", "Add_1247" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1248", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1248_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1248"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1260", - "op" : "Slice", - "outputs" : ["Slice_1260_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1260", "Negative_1259" ], - "name" : "Add_1261", - "op" : "Add", - "outputs" : ["Add_1261_0"] - }, - { - "inputs" : [ "ReplaceSlice_1248", "Add_1261" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1262", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1262_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1262"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1272", - "op" : "Slice", - "outputs" : ["Slice_1272_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1272", "Negative_1271" ], - "name" : "Add_1273", - "op" : "Add", - "outputs" : ["Add_1273_0"] - }, - { - "inputs" : [ "ReplaceSlice_1262", "Add_1273" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1274", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1274_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1274"], - "name" : "Sum_1275", - "op" : "Sum", - "outputs" : ["Sum_1275_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1274"], - "name" : "Reshape_1277", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1277_0"] - }, - { - "inputs" : [ "Reshape_1280", "ReplaceSlice_1274" ], - "name" : "Dot_1281", - "op" : "Dot", - "outputs" : ["Dot_1281_0"] - }, - { - "inputs" : ["ReplaceSlice_1274"], - "name" : "Sum_2803", - "op" : "Sum", - "outputs" : ["Sum_2803_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1274"], - "name" : "Reshape_2805", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2805_0"] - }, - { - "inputs" : [ "Reshape_2808", "ReplaceSlice_1274" ], - "name" : "Dot_2809", - "op" : "Dot", - "outputs" : ["Dot_2809_0"] - }, - { - "inputs" : [ "Add_1215", "Sum_1275" ], - "name" : "Add_1276", - "op" : "Add", - "outputs" : ["Add_1276_0"] - }, - { - "inputs" : [ "Reshape_817", "Reshape_1277" ], - "name" : "Dot_1278", - "op" : "Dot", - "outputs" : ["Dot_1278_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1281"], - "name" : "Reshape_1282", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1282_0"] - }, - { - "inputs" : [ "Reshape_29", "Reshape_2805" ], - "name" : "Dot_2806", - "op" : "Dot", - "outputs" : ["Dot_2806_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2809"], - "name" : "Reshape_2810", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2810_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1278"], - "name" : "Reshape_1279", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1279_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1282"], - "name" : "Reshape_1283", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1283_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2806"], - "name" : "Reshape_2807", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2807_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2810"], - "name" : "Reshape_2811", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2811_0"] - }, - { - "inputs" : [ "Reshape_1279", "Tanh_815" ], - "name" : "Multiply_1285", - "op" : "Multiply", - "outputs" : ["Multiply_1285_0"] - }, - { - "inputs" : [ "Divide_795", "Reshape_1279" ], - "name" : "Multiply_1286", - "op" : "Multiply", - "outputs" : ["Multiply_1286_0"] - }, - { - "inputs" : [ "Add_1223", "Reshape_1283" ], - "name" : "Add_1284", - "op" : "Add", - "outputs" : ["Add_1284_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2807"], - "name" : "Reshape_2813", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2813_0"] - }, - { - "inputs" : ["Multiply_1285"], - "name" : "Negative_1327", - "op" : "Negative", - "outputs" : ["Negative_1327_0"] - }, - { - "inputs" : [ "Multiply_1286", "Multiply_1288" ], - "name" : "Divide_1289", - "op" : "Divide", - "outputs" : ["Divide_1289_0"] - }, - { - "inputs" : [ "Negative_1327", "Divide_795" ], - "name" : "Multiply_1328", - "op" : "Multiply", - "outputs" : ["Multiply_1328_0"] - }, - { - "inputs" : [ "Multiply_1251", "Divide_1289" ], - "name" : "Add_1290", - "op" : "Add", - "outputs" : ["Add_1290_0"] - }, - { - "inputs" : [ "Multiply_1328", "Add_794" ], - "name" : "Divide_1329", - "op" : "Divide", - "outputs" : ["Divide_1329_0"] - }, - { - "inputs" : [ "Add_1290", "Tanh_812" ], - "name" : "Multiply_1291", - "op" : "Multiply", - "outputs" : ["Multiply_1291_0"] - }, - { - "inputs" : [ "Divide_810", "Add_1290" ], - "name" : "Multiply_1292", - "op" : "Multiply", - "outputs" : ["Multiply_1292_0"] - }, - { - "inputs" : [ "Add_1290", "Add_781" ], - "name" : "Multiply_1311", - "op" : "Multiply", - "outputs" : ["Multiply_1311_0"] - }, - { - "inputs" : [ "Divide_802", "Add_1290" ], - "name" : "Multiply_1312", - "op" : "Multiply", - "outputs" : ["Multiply_1312_0"] - }, - { - "inputs" : [ "Divide_1329", "Exp_793" ], - "name" : "Multiply_1331", - "op" : "Multiply", - "outputs" : ["Multiply_1331_0"] - }, - { - "inputs" : ["Multiply_1291"], - "name" : "Negative_1301", - "op" : "Negative", - "outputs" : ["Negative_1301_0"] - }, - { - "inputs" : [ "Multiply_1292", "Multiply_1294" ], - "name" : "Divide_1295", - "op" : "Divide", - "outputs" : ["Divide_1295_0"] - }, - { - "inputs" : ["Multiply_1311"], - "name" : "Negative_1315", - "op" : "Negative", - "outputs" : ["Negative_1315_0"] - }, - { - "inputs" : ["Multiply_1331"], - "name" : "Negative_1332", - "op" : "Negative", - "outputs" : ["Negative_1332_0"] - }, - { - "inputs" : [ "Negative_1301", "Divide_810" ], - "name" : "Multiply_1302", - "op" : "Multiply", - "outputs" : ["Multiply_1302_0"] - }, - { - "inputs" : [ "Broadcast_1297", "Divide_1295" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1298", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1298_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1315", "Divide_802" ], - "name" : "Multiply_1316", - "op" : "Multiply", - "outputs" : ["Multiply_1316_0"] - }, - { - "inputs" : [ "Multiply_1302", "Add_809" ], - "name" : "Divide_1303", - "op" : "Divide", - "outputs" : ["Divide_1303_0"] - }, - { - "inputs" : ["ReplaceSlice_1298"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1307", - "op" : "Slice", - "outputs" : ["Slice_1307_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1316", "Add_801" ], - "name" : "Divide_1317", - "op" : "Divide", - "outputs" : ["Divide_1317_0"] - }, - { - "inputs" : [ "Divide_1303", "Exp_808" ], - "name" : "Multiply_1305", - "op" : "Multiply", - "outputs" : ["Multiply_1305_0"] - }, - { - "inputs" : [ "Divide_1317", "Exp_800" ], - "name" : "Multiply_1319", - "op" : "Multiply", - "outputs" : ["Multiply_1319_0"] - }, - { - "inputs" : ["Multiply_1305"], - "name" : "Negative_1306", - "op" : "Negative", - "outputs" : ["Negative_1306_0"] - }, - { - "inputs" : ["Multiply_1319"], - "name" : "Negative_1320", - "op" : "Negative", - "outputs" : ["Negative_1320_0"] - }, - { - "inputs" : [ "Slice_1307", "Negative_1306" ], - "name" : "Add_1308", - "op" : "Add", - "outputs" : ["Add_1308_0"] - }, - { - "inputs" : [ "ReplaceSlice_1298", "Add_1308" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1309", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1309"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1321", - "op" : "Slice", - "outputs" : ["Slice_1321_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1321", "Negative_1320" ], - "name" : "Add_1322", - "op" : "Add", - "outputs" : ["Add_1322_0"] - }, - { - "inputs" : [ "ReplaceSlice_1309", "Add_1322" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1323", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1323_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1323"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1333", - "op" : "Slice", - "outputs" : ["Slice_1333_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1333", "Negative_1332" ], - "name" : "Add_1334", - "op" : "Add", - "outputs" : ["Add_1334_0"] - }, - { - "inputs" : [ "ReplaceSlice_1323", "Add_1334" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1335", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1335_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1335"], - "name" : "Sum_1336", - "op" : "Sum", - "outputs" : ["Sum_1336_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1335"], - "name" : "Reshape_1338", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1338_0"] - }, - { - "inputs" : [ "Reshape_1341", "ReplaceSlice_1335" ], - "name" : "Dot_1342", - "op" : "Dot", - "outputs" : ["Dot_1342_0"] - }, - { - "inputs" : ["ReplaceSlice_1335"], - "name" : "Sum_2788", - "op" : "Sum", - "outputs" : ["Sum_2788_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1335"], - "name" : "Reshape_2790", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2790_0"] - }, - { - "inputs" : [ "Reshape_2793", "ReplaceSlice_1335" ], - "name" : "Dot_2794", - "op" : "Dot", - "outputs" : ["Dot_2794_0"] - }, - { - "inputs" : [ "Add_1276", "Sum_1336" ], - "name" : "Add_1337", - "op" : "Add", - "outputs" : ["Add_1337_0"] - }, - { - "inputs" : [ "Reshape_784", "Reshape_1338" ], - "name" : "Dot_1339", - "op" : "Dot", - "outputs" : ["Dot_1339_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1342"], - "name" : "Reshape_1343", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1343_0"] - }, - { - "inputs" : [ "Reshape_35", "Reshape_2790" ], - "name" : "Dot_2791", - "op" : "Dot", - "outputs" : ["Dot_2791_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2794"], - "name" : "Reshape_2795", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2795_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1339"], - "name" : "Reshape_1340", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1340_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1343"], - "name" : "Reshape_1344", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1344_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2791"], - "name" : "Reshape_2792", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2792_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2795"], - "name" : "Reshape_2796", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2796_0"] - }, - { - "inputs" : [ "Reshape_1340", "Tanh_782" ], - "name" : "Multiply_1346", - "op" : "Multiply", - "outputs" : ["Multiply_1346_0"] - }, - { - "inputs" : [ "Divide_762", "Reshape_1340" ], - "name" : "Multiply_1347", - "op" : "Multiply", - "outputs" : ["Multiply_1347_0"] - }, - { - "inputs" : [ "Add_1284", "Reshape_1344" ], - "name" : "Add_1345", - "op" : "Add", - "outputs" : ["Add_1345_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2792"], - "name" : "Reshape_2798", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2798_0"] - }, - { - "inputs" : ["Multiply_1346"], - "name" : "Negative_1388", - "op" : "Negative", - "outputs" : ["Negative_1388_0"] - }, - { - "inputs" : [ "Multiply_1347", "Multiply_1349" ], - "name" : "Divide_1350", - "op" : "Divide", - "outputs" : ["Divide_1350_0"] - }, - { - "inputs" : [ "Negative_1388", "Divide_762" ], - "name" : "Multiply_1389", - "op" : "Multiply", - "outputs" : ["Multiply_1389_0"] - }, - { - "inputs" : [ "Multiply_1312", "Divide_1350" ], - "name" : "Add_1351", - "op" : "Add", - "outputs" : ["Add_1351_0"] - }, - { - "inputs" : [ "Multiply_1389", "Add_761" ], - "name" : "Divide_1390", - "op" : "Divide", - "outputs" : ["Divide_1390_0"] - }, - { - "inputs" : [ "Add_1351", "Tanh_779" ], - "name" : "Multiply_1352", - "op" : "Multiply", - "outputs" : ["Multiply_1352_0"] - }, - { - "inputs" : [ "Divide_777", "Add_1351" ], - "name" : "Multiply_1353", - "op" : "Multiply", - "outputs" : ["Multiply_1353_0"] - }, - { - "inputs" : [ "Add_1351", "Add_748" ], - "name" : "Multiply_1372", - "op" : "Multiply", - "outputs" : ["Multiply_1372_0"] - }, - { - "inputs" : [ "Divide_769", "Add_1351" ], - "name" : "Multiply_1373", - "op" : "Multiply", - "outputs" : ["Multiply_1373_0"] - }, - { - "inputs" : [ "Divide_1390", "Exp_760" ], - "name" : "Multiply_1392", - "op" : "Multiply", - "outputs" : ["Multiply_1392_0"] - }, - { - "inputs" : ["Multiply_1352"], - "name" : "Negative_1362", - "op" : "Negative", - "outputs" : ["Negative_1362_0"] - }, - { - "inputs" : [ "Multiply_1353", "Multiply_1355" ], - "name" : "Divide_1356", - "op" : "Divide", - "outputs" : ["Divide_1356_0"] - }, - { - "inputs" : ["Multiply_1372"], - "name" : "Negative_1376", - "op" : "Negative", - "outputs" : ["Negative_1376_0"] - }, - { - "inputs" : ["Multiply_1392"], - "name" : "Negative_1393", - "op" : "Negative", - "outputs" : ["Negative_1393_0"] - }, - { - "inputs" : [ "Negative_1362", "Divide_777" ], - "name" : "Multiply_1363", - "op" : "Multiply", - "outputs" : ["Multiply_1363_0"] - }, - { - "inputs" : [ "Broadcast_1358", "Divide_1356" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1359", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1359_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1376", "Divide_769" ], - "name" : "Multiply_1377", - "op" : "Multiply", - "outputs" : ["Multiply_1377_0"] - }, - { - "inputs" : [ "Multiply_1363", "Add_776" ], - "name" : "Divide_1364", - "op" : "Divide", - "outputs" : ["Divide_1364_0"] - }, - { - "inputs" : ["ReplaceSlice_1359"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1368", - "op" : "Slice", - "outputs" : ["Slice_1368_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1377", "Add_768" ], - "name" : "Divide_1378", - "op" : "Divide", - "outputs" : ["Divide_1378_0"] - }, - { - "inputs" : [ "Divide_1364", "Exp_775" ], - "name" : "Multiply_1366", - "op" : "Multiply", - "outputs" : ["Multiply_1366_0"] - }, - { - "inputs" : [ "Divide_1378", "Exp_767" ], - "name" : "Multiply_1380", - "op" : "Multiply", - "outputs" : ["Multiply_1380_0"] - }, - { - "inputs" : ["Multiply_1366"], - "name" : "Negative_1367", - "op" : "Negative", - "outputs" : ["Negative_1367_0"] - }, - { - "inputs" : ["Multiply_1380"], - "name" : "Negative_1381", - "op" : "Negative", - "outputs" : ["Negative_1381_0"] - }, - { - "inputs" : [ "Slice_1368", "Negative_1367" ], - "name" : "Add_1369", - "op" : "Add", - "outputs" : ["Add_1369_0"] - }, - { - "inputs" : [ "ReplaceSlice_1359", "Add_1369" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1370", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1370_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1370"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1382", - "op" : "Slice", - "outputs" : ["Slice_1382_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1382", "Negative_1381" ], - "name" : "Add_1383", - "op" : "Add", - "outputs" : ["Add_1383_0"] - }, - { - "inputs" : [ "ReplaceSlice_1370", "Add_1383" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1384", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1384_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1384"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1394", - "op" : "Slice", - "outputs" : ["Slice_1394_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1394", "Negative_1393" ], - "name" : "Add_1395", - "op" : "Add", - "outputs" : ["Add_1395_0"] - }, - { - "inputs" : [ "ReplaceSlice_1384", "Add_1395" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1396", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1396_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1396"], - "name" : "Sum_1397", - "op" : "Sum", - "outputs" : ["Sum_1397_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1396"], - "name" : "Reshape_1399", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1399_0"] - }, - { - "inputs" : [ "Reshape_1402", "ReplaceSlice_1396" ], - "name" : "Dot_1403", - "op" : "Dot", - "outputs" : ["Dot_1403_0"] - }, - { - "inputs" : ["ReplaceSlice_1396"], - "name" : "Sum_2773", - "op" : "Sum", - "outputs" : ["Sum_2773_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1396"], - "name" : "Reshape_2775", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2775_0"] - }, - { - "inputs" : [ "Reshape_2778", "ReplaceSlice_1396" ], - "name" : "Dot_2779", - "op" : "Dot", - "outputs" : ["Dot_2779_0"] - }, - { - "inputs" : [ "Add_1337", "Sum_1397" ], - "name" : "Add_1398", - "op" : "Add", - "outputs" : ["Add_1398_0"] - }, - { - "inputs" : [ "Reshape_751", "Reshape_1399" ], - "name" : "Dot_1400", - "op" : "Dot", - "outputs" : ["Dot_1400_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1403"], - "name" : "Reshape_1404", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1404_0"] - }, - { - "inputs" : [ "Reshape_41", "Reshape_2775" ], - "name" : "Dot_2776", - "op" : "Dot", - "outputs" : ["Dot_2776_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2779"], - "name" : "Reshape_2780", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2780_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1400"], - "name" : "Reshape_1401", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1401_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1404"], - "name" : "Reshape_1405", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1405_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2776"], - "name" : "Reshape_2777", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2777_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2780"], - "name" : "Reshape_2781", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2781_0"] - }, - { - "inputs" : [ "Reshape_1401", "Tanh_749" ], - "name" : "Multiply_1407", - "op" : "Multiply", - "outputs" : ["Multiply_1407_0"] - }, - { - "inputs" : [ "Divide_729", "Reshape_1401" ], - "name" : "Multiply_1408", - "op" : "Multiply", - "outputs" : ["Multiply_1408_0"] - }, - { - "inputs" : [ "Add_1345", "Reshape_1405" ], - "name" : "Add_1406", - "op" : "Add", - "outputs" : ["Add_1406_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2777"], - "name" : "Reshape_2783", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2783_0"] - }, - { - "inputs" : ["Multiply_1407"], - "name" : "Negative_1449", - "op" : "Negative", - "outputs" : ["Negative_1449_0"] - }, - { - "inputs" : [ "Multiply_1408", "Multiply_1410" ], - "name" : "Divide_1411", - "op" : "Divide", - "outputs" : ["Divide_1411_0"] - }, - { - "inputs" : [ "Negative_1449", "Divide_729" ], - "name" : "Multiply_1450", - "op" : "Multiply", - "outputs" : ["Multiply_1450_0"] - }, - { - "inputs" : [ "Multiply_1373", "Divide_1411" ], - "name" : "Add_1412", - "op" : "Add", - "outputs" : ["Add_1412_0"] - }, - { - "inputs" : [ "Multiply_1450", "Add_728" ], - "name" : "Divide_1451", - "op" : "Divide", - "outputs" : ["Divide_1451_0"] - }, - { - "inputs" : [ "Add_1412", "Tanh_746" ], - "name" : "Multiply_1413", - "op" : "Multiply", - "outputs" : ["Multiply_1413_0"] - }, - { - "inputs" : [ "Divide_744", "Add_1412" ], - "name" : "Multiply_1414", - "op" : "Multiply", - "outputs" : ["Multiply_1414_0"] - }, - { - "inputs" : [ "Add_1412", "Add_715" ], - "name" : "Multiply_1433", - "op" : "Multiply", - "outputs" : ["Multiply_1433_0"] - }, - { - "inputs" : [ "Divide_736", "Add_1412" ], - "name" : "Multiply_1434", - "op" : "Multiply", - "outputs" : ["Multiply_1434_0"] - }, - { - "inputs" : [ "Divide_1451", "Exp_727" ], - "name" : "Multiply_1453", - "op" : "Multiply", - "outputs" : ["Multiply_1453_0"] - }, - { - "inputs" : ["Multiply_1413"], - "name" : "Negative_1423", - "op" : "Negative", - "outputs" : ["Negative_1423_0"] - }, - { - "inputs" : [ "Multiply_1414", "Multiply_1416" ], - "name" : "Divide_1417", - "op" : "Divide", - "outputs" : ["Divide_1417_0"] - }, - { - "inputs" : ["Multiply_1433"], - "name" : "Negative_1437", - "op" : "Negative", - "outputs" : ["Negative_1437_0"] - }, - { - "inputs" : ["Multiply_1453"], - "name" : "Negative_1454", - "op" : "Negative", - "outputs" : ["Negative_1454_0"] - }, - { - "inputs" : [ "Negative_1423", "Divide_744" ], - "name" : "Multiply_1424", - "op" : "Multiply", - "outputs" : ["Multiply_1424_0"] - }, - { - "inputs" : [ "Broadcast_1419", "Divide_1417" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1420", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1420_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1437", "Divide_736" ], - "name" : "Multiply_1438", - "op" : "Multiply", - "outputs" : ["Multiply_1438_0"] - }, - { - "inputs" : [ "Multiply_1424", "Add_743" ], - "name" : "Divide_1425", - "op" : "Divide", - "outputs" : ["Divide_1425_0"] - }, - { - "inputs" : ["ReplaceSlice_1420"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1429", - "op" : "Slice", - "outputs" : ["Slice_1429_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1438", "Add_735" ], - "name" : "Divide_1439", - "op" : "Divide", - "outputs" : ["Divide_1439_0"] - }, - { - "inputs" : [ "Divide_1425", "Exp_742" ], - "name" : "Multiply_1427", - "op" : "Multiply", - "outputs" : ["Multiply_1427_0"] - }, - { - "inputs" : [ "Divide_1439", "Exp_734" ], - "name" : "Multiply_1441", - "op" : "Multiply", - "outputs" : ["Multiply_1441_0"] - }, - { - "inputs" : ["Multiply_1427"], - "name" : "Negative_1428", - "op" : "Negative", - "outputs" : ["Negative_1428_0"] - }, - { - "inputs" : ["Multiply_1441"], - "name" : "Negative_1442", - "op" : "Negative", - "outputs" : ["Negative_1442_0"] - }, - { - "inputs" : [ "Slice_1429", "Negative_1428" ], - "name" : "Add_1430", - "op" : "Add", - "outputs" : ["Add_1430_0"] - }, - { - "inputs" : [ "ReplaceSlice_1420", "Add_1430" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1431", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1431_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1431"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1443", - "op" : "Slice", - "outputs" : ["Slice_1443_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1443", "Negative_1442" ], - "name" : "Add_1444", - "op" : "Add", - "outputs" : ["Add_1444_0"] - }, - { - "inputs" : [ "ReplaceSlice_1431", "Add_1444" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1445", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1445_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1445"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1455", - "op" : "Slice", - "outputs" : ["Slice_1455_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1455", "Negative_1454" ], - "name" : "Add_1456", - "op" : "Add", - "outputs" : ["Add_1456_0"] - }, - { - "inputs" : [ "ReplaceSlice_1445", "Add_1456" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1457", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1457_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1457"], - "name" : "Sum_1458", - "op" : "Sum", - "outputs" : ["Sum_1458_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1457"], - "name" : "Reshape_1460", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1460_0"] - }, - { - "inputs" : [ "Reshape_1463", "ReplaceSlice_1457" ], - "name" : "Dot_1464", - "op" : "Dot", - "outputs" : ["Dot_1464_0"] - }, - { - "inputs" : ["ReplaceSlice_1457"], - "name" : "Sum_2758", - "op" : "Sum", - "outputs" : ["Sum_2758_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1457"], - "name" : "Reshape_2760", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2760_0"] - }, - { - "inputs" : [ "Reshape_2763", "ReplaceSlice_1457" ], - "name" : "Dot_2764", - "op" : "Dot", - "outputs" : ["Dot_2764_0"] - }, - { - "inputs" : [ "Add_1398", "Sum_1458" ], - "name" : "Add_1459", - "op" : "Add", - "outputs" : ["Add_1459_0"] - }, - { - "inputs" : [ "Reshape_718", "Reshape_1460" ], - "name" : "Dot_1461", - "op" : "Dot", - "outputs" : ["Dot_1461_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1464"], - "name" : "Reshape_1465", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1465_0"] - }, - { - "inputs" : [ "Reshape_47", "Reshape_2760" ], - "name" : "Dot_2761", - "op" : "Dot", - "outputs" : ["Dot_2761_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2764"], - "name" : "Reshape_2765", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2765_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1461"], - "name" : "Reshape_1462", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1462_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1465"], - "name" : "Reshape_1466", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1466_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2761"], - "name" : "Reshape_2762", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2762_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2765"], - "name" : "Reshape_2766", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2766_0"] - }, - { - "inputs" : [ "Reshape_1462", "Tanh_716" ], - "name" : "Multiply_1468", - "op" : "Multiply", - "outputs" : ["Multiply_1468_0"] - }, - { - "inputs" : [ "Divide_696", "Reshape_1462" ], - "name" : "Multiply_1469", - "op" : "Multiply", - "outputs" : ["Multiply_1469_0"] - }, - { - "inputs" : [ "Add_1406", "Reshape_1466" ], - "name" : "Add_1467", - "op" : "Add", - "outputs" : ["Add_1467_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2762"], - "name" : "Reshape_2768", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2768_0"] - }, - { - "inputs" : ["Multiply_1468"], - "name" : "Negative_1510", - "op" : "Negative", - "outputs" : ["Negative_1510_0"] - }, - { - "inputs" : [ "Multiply_1469", "Multiply_1471" ], - "name" : "Divide_1472", - "op" : "Divide", - "outputs" : ["Divide_1472_0"] - }, - { - "inputs" : [ "Negative_1510", "Divide_696" ], - "name" : "Multiply_1511", - "op" : "Multiply", - "outputs" : ["Multiply_1511_0"] - }, - { - "inputs" : [ "Multiply_1434", "Divide_1472" ], - "name" : "Add_1473", - "op" : "Add", - "outputs" : ["Add_1473_0"] - }, - { - "inputs" : [ "Multiply_1511", "Add_695" ], - "name" : "Divide_1512", - "op" : "Divide", - "outputs" : ["Divide_1512_0"] - }, - { - "inputs" : [ "Add_1473", "Tanh_713" ], - "name" : "Multiply_1474", - "op" : "Multiply", - "outputs" : ["Multiply_1474_0"] - }, - { - "inputs" : [ "Divide_711", "Add_1473" ], - "name" : "Multiply_1475", - "op" : "Multiply", - "outputs" : ["Multiply_1475_0"] - }, - { - "inputs" : [ "Add_1473", "Add_682" ], - "name" : "Multiply_1494", - "op" : "Multiply", - "outputs" : ["Multiply_1494_0"] - }, - { - "inputs" : [ "Divide_703", "Add_1473" ], - "name" : "Multiply_1495", - "op" : "Multiply", - "outputs" : ["Multiply_1495_0"] - }, - { - "inputs" : [ "Divide_1512", "Exp_694" ], - "name" : "Multiply_1514", - "op" : "Multiply", - "outputs" : ["Multiply_1514_0"] - }, - { - "inputs" : ["Multiply_1474"], - "name" : "Negative_1484", - "op" : "Negative", - "outputs" : ["Negative_1484_0"] - }, - { - "inputs" : [ "Multiply_1475", "Multiply_1477" ], - "name" : "Divide_1478", - "op" : "Divide", - "outputs" : ["Divide_1478_0"] - }, - { - "inputs" : ["Multiply_1494"], - "name" : "Negative_1498", - "op" : "Negative", - "outputs" : ["Negative_1498_0"] - }, - { - "inputs" : ["Multiply_1514"], - "name" : "Negative_1515", - "op" : "Negative", - "outputs" : ["Negative_1515_0"] - }, - { - "inputs" : [ "Negative_1484", "Divide_711" ], - "name" : "Multiply_1485", - "op" : "Multiply", - "outputs" : ["Multiply_1485_0"] - }, - { - "inputs" : [ "Broadcast_1480", "Divide_1478" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1481", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1481_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1498", "Divide_703" ], - "name" : "Multiply_1499", - "op" : "Multiply", - "outputs" : ["Multiply_1499_0"] - }, - { - "inputs" : [ "Multiply_1485", "Add_710" ], - "name" : "Divide_1486", - "op" : "Divide", - "outputs" : ["Divide_1486_0"] - }, - { - "inputs" : ["ReplaceSlice_1481"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1490", - "op" : "Slice", - "outputs" : ["Slice_1490_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1499", "Add_702" ], - "name" : "Divide_1500", - "op" : "Divide", - "outputs" : ["Divide_1500_0"] - }, - { - "inputs" : [ "Divide_1486", "Exp_709" ], - "name" : "Multiply_1488", - "op" : "Multiply", - "outputs" : ["Multiply_1488_0"] - }, - { - "inputs" : [ "Divide_1500", "Exp_701" ], - "name" : "Multiply_1502", - "op" : "Multiply", - "outputs" : ["Multiply_1502_0"] - }, - { - "inputs" : ["Multiply_1488"], - "name" : "Negative_1489", - "op" : "Negative", - "outputs" : ["Negative_1489_0"] - }, - { - "inputs" : ["Multiply_1502"], - "name" : "Negative_1503", - "op" : "Negative", - "outputs" : ["Negative_1503_0"] - }, - { - "inputs" : [ "Slice_1490", "Negative_1489" ], - "name" : "Add_1491", - "op" : "Add", - "outputs" : ["Add_1491_0"] - }, - { - "inputs" : [ "ReplaceSlice_1481", "Add_1491" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1492", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1492_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1492"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1504", - "op" : "Slice", - "outputs" : ["Slice_1504_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1504", "Negative_1503" ], - "name" : "Add_1505", - "op" : "Add", - "outputs" : ["Add_1505_0"] - }, - { - "inputs" : [ "ReplaceSlice_1492", "Add_1505" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1506", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1506_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1506"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1516", - "op" : "Slice", - "outputs" : ["Slice_1516_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1516", "Negative_1515" ], - "name" : "Add_1517", - "op" : "Add", - "outputs" : ["Add_1517_0"] - }, - { - "inputs" : [ "ReplaceSlice_1506", "Add_1517" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1518", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1518_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1518"], - "name" : "Sum_1519", - "op" : "Sum", - "outputs" : ["Sum_1519_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1518"], - "name" : "Reshape_1521", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1521_0"] - }, - { - "inputs" : [ "Reshape_1524", "ReplaceSlice_1518" ], - "name" : "Dot_1525", - "op" : "Dot", - "outputs" : ["Dot_1525_0"] - }, - { - "inputs" : ["ReplaceSlice_1518"], - "name" : "Sum_2743", - "op" : "Sum", - "outputs" : ["Sum_2743_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1518"], - "name" : "Reshape_2745", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2745_0"] - }, - { - "inputs" : [ "Reshape_2748", "ReplaceSlice_1518" ], - "name" : "Dot_2749", - "op" : "Dot", - "outputs" : ["Dot_2749_0"] - }, - { - "inputs" : [ "Add_1459", "Sum_1519" ], - "name" : "Add_1520", - "op" : "Add", - "outputs" : ["Add_1520_0"] - }, - { - "inputs" : [ "Reshape_685", "Reshape_1521" ], - "name" : "Dot_1522", - "op" : "Dot", - "outputs" : ["Dot_1522_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1525"], - "name" : "Reshape_1526", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1526_0"] - }, - { - "inputs" : [ "Reshape_53", "Reshape_2745" ], - "name" : "Dot_2746", - "op" : "Dot", - "outputs" : ["Dot_2746_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2749"], - "name" : "Reshape_2750", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2750_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1522"], - "name" : "Reshape_1523", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1523_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1526"], - "name" : "Reshape_1527", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1527_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2746"], - "name" : "Reshape_2747", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2747_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2750"], - "name" : "Reshape_2751", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2751_0"] - }, - { - "inputs" : [ "Reshape_1523", "Tanh_683" ], - "name" : "Multiply_1529", - "op" : "Multiply", - "outputs" : ["Multiply_1529_0"] - }, - { - "inputs" : [ "Divide_663", "Reshape_1523" ], - "name" : "Multiply_1530", - "op" : "Multiply", - "outputs" : ["Multiply_1530_0"] - }, - { - "inputs" : [ "Add_1467", "Reshape_1527" ], - "name" : "Add_1528", - "op" : "Add", - "outputs" : ["Add_1528_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2747"], - "name" : "Reshape_2753", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2753_0"] - }, - { - "inputs" : ["Multiply_1529"], - "name" : "Negative_1571", - "op" : "Negative", - "outputs" : ["Negative_1571_0"] - }, - { - "inputs" : [ "Multiply_1530", "Multiply_1532" ], - "name" : "Divide_1533", - "op" : "Divide", - "outputs" : ["Divide_1533_0"] - }, - { - "inputs" : [ "Negative_1571", "Divide_663" ], - "name" : "Multiply_1572", - "op" : "Multiply", - "outputs" : ["Multiply_1572_0"] - }, - { - "inputs" : [ "Multiply_1495", "Divide_1533" ], - "name" : "Add_1534", - "op" : "Add", - "outputs" : ["Add_1534_0"] - }, - { - "inputs" : [ "Multiply_1572", "Add_662" ], - "name" : "Divide_1573", - "op" : "Divide", - "outputs" : ["Divide_1573_0"] - }, - { - "inputs" : [ "Add_1534", "Tanh_680" ], - "name" : "Multiply_1535", - "op" : "Multiply", - "outputs" : ["Multiply_1535_0"] - }, - { - "inputs" : [ "Divide_678", "Add_1534" ], - "name" : "Multiply_1536", - "op" : "Multiply", - "outputs" : ["Multiply_1536_0"] - }, - { - "inputs" : [ "Add_1534", "Add_649" ], - "name" : "Multiply_1555", - "op" : "Multiply", - "outputs" : ["Multiply_1555_0"] - }, - { - "inputs" : [ "Divide_670", "Add_1534" ], - "name" : "Multiply_1556", - "op" : "Multiply", - "outputs" : ["Multiply_1556_0"] - }, - { - "inputs" : [ "Divide_1573", "Exp_661" ], - "name" : "Multiply_1575", - "op" : "Multiply", - "outputs" : ["Multiply_1575_0"] - }, - { - "inputs" : ["Multiply_1535"], - "name" : "Negative_1545", - "op" : "Negative", - "outputs" : ["Negative_1545_0"] - }, - { - "inputs" : [ "Multiply_1536", "Multiply_1538" ], - "name" : "Divide_1539", - "op" : "Divide", - "outputs" : ["Divide_1539_0"] - }, - { - "inputs" : ["Multiply_1555"], - "name" : "Negative_1559", - "op" : "Negative", - "outputs" : ["Negative_1559_0"] - }, - { - "inputs" : ["Multiply_1575"], - "name" : "Negative_1576", - "op" : "Negative", - "outputs" : ["Negative_1576_0"] - }, - { - "inputs" : [ "Negative_1545", "Divide_678" ], - "name" : "Multiply_1546", - "op" : "Multiply", - "outputs" : ["Multiply_1546_0"] - }, - { - "inputs" : [ "Broadcast_1541", "Divide_1539" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1542", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1542_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1559", "Divide_670" ], - "name" : "Multiply_1560", - "op" : "Multiply", - "outputs" : ["Multiply_1560_0"] - }, - { - "inputs" : [ "Multiply_1546", "Add_677" ], - "name" : "Divide_1547", - "op" : "Divide", - "outputs" : ["Divide_1547_0"] - }, - { - "inputs" : ["ReplaceSlice_1542"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1551", - "op" : "Slice", - "outputs" : ["Slice_1551_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1560", "Add_669" ], - "name" : "Divide_1561", - "op" : "Divide", - "outputs" : ["Divide_1561_0"] - }, - { - "inputs" : [ "Divide_1547", "Exp_676" ], - "name" : "Multiply_1549", - "op" : "Multiply", - "outputs" : ["Multiply_1549_0"] - }, - { - "inputs" : [ "Divide_1561", "Exp_668" ], - "name" : "Multiply_1563", - "op" : "Multiply", - "outputs" : ["Multiply_1563_0"] - }, - { - "inputs" : ["Multiply_1549"], - "name" : "Negative_1550", - "op" : "Negative", - "outputs" : ["Negative_1550_0"] - }, - { - "inputs" : ["Multiply_1563"], - "name" : "Negative_1564", - "op" : "Negative", - "outputs" : ["Negative_1564_0"] - }, - { - "inputs" : [ "Slice_1551", "Negative_1550" ], - "name" : "Add_1552", - "op" : "Add", - "outputs" : ["Add_1552_0"] - }, - { - "inputs" : [ "ReplaceSlice_1542", "Add_1552" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1553", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1553_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1553"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1565", - "op" : "Slice", - "outputs" : ["Slice_1565_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1565", "Negative_1564" ], - "name" : "Add_1566", - "op" : "Add", - "outputs" : ["Add_1566_0"] - }, - { - "inputs" : [ "ReplaceSlice_1553", "Add_1566" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1567", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1567_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1567"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1577", - "op" : "Slice", - "outputs" : ["Slice_1577_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1577", "Negative_1576" ], - "name" : "Add_1578", - "op" : "Add", - "outputs" : ["Add_1578_0"] - }, - { - "inputs" : [ "ReplaceSlice_1567", "Add_1578" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1579", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1579_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1579"], - "name" : "Sum_1580", - "op" : "Sum", - "outputs" : ["Sum_1580_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1579"], - "name" : "Reshape_1582", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1582_0"] - }, - { - "inputs" : [ "Reshape_1585", "ReplaceSlice_1579" ], - "name" : "Dot_1586", - "op" : "Dot", - "outputs" : ["Dot_1586_0"] - }, - { - "inputs" : ["ReplaceSlice_1579"], - "name" : "Sum_2728", - "op" : "Sum", - "outputs" : ["Sum_2728_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1579"], - "name" : "Reshape_2730", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2730_0"] - }, - { - "inputs" : [ "Reshape_2733", "ReplaceSlice_1579" ], - "name" : "Dot_2734", - "op" : "Dot", - "outputs" : ["Dot_2734_0"] - }, - { - "inputs" : [ "Add_1520", "Sum_1580" ], - "name" : "Add_1581", - "op" : "Add", - "outputs" : ["Add_1581_0"] - }, - { - "inputs" : [ "Reshape_652", "Reshape_1582" ], - "name" : "Dot_1583", - "op" : "Dot", - "outputs" : ["Dot_1583_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1586"], - "name" : "Reshape_1587", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1587_0"] - }, - { - "inputs" : [ "Reshape_59", "Reshape_2730" ], - "name" : "Dot_2731", - "op" : "Dot", - "outputs" : ["Dot_2731_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2734"], - "name" : "Reshape_2735", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2735_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1583"], - "name" : "Reshape_1584", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1584_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1587"], - "name" : "Reshape_1588", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1588_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2731"], - "name" : "Reshape_2732", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2732_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2735"], - "name" : "Reshape_2736", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2736_0"] - }, - { - "inputs" : [ "Reshape_1584", "Tanh_650" ], - "name" : "Multiply_1590", - "op" : "Multiply", - "outputs" : ["Multiply_1590_0"] - }, - { - "inputs" : [ "Divide_630", "Reshape_1584" ], - "name" : "Multiply_1591", - "op" : "Multiply", - "outputs" : ["Multiply_1591_0"] - }, - { - "inputs" : [ "Add_1528", "Reshape_1588" ], - "name" : "Add_1589", - "op" : "Add", - "outputs" : ["Add_1589_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2732"], - "name" : "Reshape_2738", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2738_0"] - }, - { - "inputs" : ["Multiply_1590"], - "name" : "Negative_1632", - "op" : "Negative", - "outputs" : ["Negative_1632_0"] - }, - { - "inputs" : [ "Multiply_1591", "Multiply_1593" ], - "name" : "Divide_1594", - "op" : "Divide", - "outputs" : ["Divide_1594_0"] - }, - { - "inputs" : [ "Negative_1632", "Divide_630" ], - "name" : "Multiply_1633", - "op" : "Multiply", - "outputs" : ["Multiply_1633_0"] - }, - { - "inputs" : [ "Multiply_1556", "Divide_1594" ], - "name" : "Add_1595", - "op" : "Add", - "outputs" : ["Add_1595_0"] - }, - { - "inputs" : [ "Multiply_1633", "Add_629" ], - "name" : "Divide_1634", - "op" : "Divide", - "outputs" : ["Divide_1634_0"] - }, - { - "inputs" : [ "Add_1595", "Tanh_647" ], - "name" : "Multiply_1596", - "op" : "Multiply", - "outputs" : ["Multiply_1596_0"] - }, - { - "inputs" : [ "Divide_645", "Add_1595" ], - "name" : "Multiply_1597", - "op" : "Multiply", - "outputs" : ["Multiply_1597_0"] - }, - { - "inputs" : [ "Add_1595", "Add_616" ], - "name" : "Multiply_1616", - "op" : "Multiply", - "outputs" : ["Multiply_1616_0"] - }, - { - "inputs" : [ "Divide_637", "Add_1595" ], - "name" : "Multiply_1617", - "op" : "Multiply", - "outputs" : ["Multiply_1617_0"] - }, - { - "inputs" : [ "Divide_1634", "Exp_628" ], - "name" : "Multiply_1636", - "op" : "Multiply", - "outputs" : ["Multiply_1636_0"] - }, - { - "inputs" : ["Multiply_1596"], - "name" : "Negative_1606", - "op" : "Negative", - "outputs" : ["Negative_1606_0"] - }, - { - "inputs" : [ "Multiply_1597", "Multiply_1599" ], - "name" : "Divide_1600", - "op" : "Divide", - "outputs" : ["Divide_1600_0"] - }, - { - "inputs" : ["Multiply_1616"], - "name" : "Negative_1620", - "op" : "Negative", - "outputs" : ["Negative_1620_0"] - }, - { - "inputs" : ["Multiply_1636"], - "name" : "Negative_1637", - "op" : "Negative", - "outputs" : ["Negative_1637_0"] - }, - { - "inputs" : [ "Negative_1606", "Divide_645" ], - "name" : "Multiply_1607", - "op" : "Multiply", - "outputs" : ["Multiply_1607_0"] - }, - { - "inputs" : [ "Broadcast_1602", "Divide_1600" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1603", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1603_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1620", "Divide_637" ], - "name" : "Multiply_1621", - "op" : "Multiply", - "outputs" : ["Multiply_1621_0"] - }, - { - "inputs" : [ "Multiply_1607", "Add_644" ], - "name" : "Divide_1608", - "op" : "Divide", - "outputs" : ["Divide_1608_0"] - }, - { - "inputs" : ["ReplaceSlice_1603"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1612", - "op" : "Slice", - "outputs" : ["Slice_1612_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1621", "Add_636" ], - "name" : "Divide_1622", - "op" : "Divide", - "outputs" : ["Divide_1622_0"] - }, - { - "inputs" : [ "Divide_1608", "Exp_643" ], - "name" : "Multiply_1610", - "op" : "Multiply", - "outputs" : ["Multiply_1610_0"] - }, - { - "inputs" : [ "Divide_1622", "Exp_635" ], - "name" : "Multiply_1624", - "op" : "Multiply", - "outputs" : ["Multiply_1624_0"] - }, - { - "inputs" : ["Multiply_1610"], - "name" : "Negative_1611", - "op" : "Negative", - "outputs" : ["Negative_1611_0"] - }, - { - "inputs" : ["Multiply_1624"], - "name" : "Negative_1625", - "op" : "Negative", - "outputs" : ["Negative_1625_0"] - }, - { - "inputs" : [ "Slice_1612", "Negative_1611" ], - "name" : "Add_1613", - "op" : "Add", - "outputs" : ["Add_1613_0"] - }, - { - "inputs" : [ "ReplaceSlice_1603", "Add_1613" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1614", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1614_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1614"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1626", - "op" : "Slice", - "outputs" : ["Slice_1626_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1626", "Negative_1625" ], - "name" : "Add_1627", - "op" : "Add", - "outputs" : ["Add_1627_0"] - }, - { - "inputs" : [ "ReplaceSlice_1614", "Add_1627" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1628", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1628_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1628"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1638", - "op" : "Slice", - "outputs" : ["Slice_1638_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1638", "Negative_1637" ], - "name" : "Add_1639", - "op" : "Add", - "outputs" : ["Add_1639_0"] - }, - { - "inputs" : [ "ReplaceSlice_1628", "Add_1639" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1640", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1640_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1640"], - "name" : "Sum_1641", - "op" : "Sum", - "outputs" : ["Sum_1641_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1640"], - "name" : "Reshape_1643", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1643_0"] - }, - { - "inputs" : [ "Reshape_1646", "ReplaceSlice_1640" ], - "name" : "Dot_1647", - "op" : "Dot", - "outputs" : ["Dot_1647_0"] - }, - { - "inputs" : ["ReplaceSlice_1640"], - "name" : "Sum_2713", - "op" : "Sum", - "outputs" : ["Sum_2713_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1640"], - "name" : "Reshape_2715", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2715_0"] - }, - { - "inputs" : [ "Reshape_2718", "ReplaceSlice_1640" ], - "name" : "Dot_2719", - "op" : "Dot", - "outputs" : ["Dot_2719_0"] - }, - { - "inputs" : [ "Add_1581", "Sum_1641" ], - "name" : "Add_1642", - "op" : "Add", - "outputs" : ["Add_1642_0"] - }, - { - "inputs" : [ "Reshape_619", "Reshape_1643" ], - "name" : "Dot_1644", - "op" : "Dot", - "outputs" : ["Dot_1644_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1647"], - "name" : "Reshape_1648", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1648_0"] - }, - { - "inputs" : [ "Reshape_65", "Reshape_2715" ], - "name" : "Dot_2716", - "op" : "Dot", - "outputs" : ["Dot_2716_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2719"], - "name" : "Reshape_2720", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2720_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1644"], - "name" : "Reshape_1645", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1645_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1648"], - "name" : "Reshape_1649", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1649_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2716"], - "name" : "Reshape_2717", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2717_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2720"], - "name" : "Reshape_2721", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2721_0"] - }, - { - "inputs" : [ "Reshape_1645", "Tanh_617" ], - "name" : "Multiply_1651", - "op" : "Multiply", - "outputs" : ["Multiply_1651_0"] - }, - { - "inputs" : [ "Divide_597", "Reshape_1645" ], - "name" : "Multiply_1652", - "op" : "Multiply", - "outputs" : ["Multiply_1652_0"] - }, - { - "inputs" : [ "Add_1589", "Reshape_1649" ], - "name" : "Add_1650", - "op" : "Add", - "outputs" : ["Add_1650_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2717"], - "name" : "Reshape_2723", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2723_0"] - }, - { - "inputs" : ["Multiply_1651"], - "name" : "Negative_1693", - "op" : "Negative", - "outputs" : ["Negative_1693_0"] - }, - { - "inputs" : [ "Multiply_1652", "Multiply_1654" ], - "name" : "Divide_1655", - "op" : "Divide", - "outputs" : ["Divide_1655_0"] - }, - { - "inputs" : [ "Negative_1693", "Divide_597" ], - "name" : "Multiply_1694", - "op" : "Multiply", - "outputs" : ["Multiply_1694_0"] - }, - { - "inputs" : [ "Multiply_1617", "Divide_1655" ], - "name" : "Add_1656", - "op" : "Add", - "outputs" : ["Add_1656_0"] - }, - { - "inputs" : [ "Multiply_1694", "Add_596" ], - "name" : "Divide_1695", - "op" : "Divide", - "outputs" : ["Divide_1695_0"] - }, - { - "inputs" : [ "Add_1656", "Tanh_614" ], - "name" : "Multiply_1657", - "op" : "Multiply", - "outputs" : ["Multiply_1657_0"] - }, - { - "inputs" : [ "Divide_612", "Add_1656" ], - "name" : "Multiply_1658", - "op" : "Multiply", - "outputs" : ["Multiply_1658_0"] - }, - { - "inputs" : [ "Add_1656", "Add_583" ], - "name" : "Multiply_1677", - "op" : "Multiply", - "outputs" : ["Multiply_1677_0"] - }, - { - "inputs" : [ "Divide_604", "Add_1656" ], - "name" : "Multiply_1678", - "op" : "Multiply", - "outputs" : ["Multiply_1678_0"] - }, - { - "inputs" : [ "Divide_1695", "Exp_595" ], - "name" : "Multiply_1697", - "op" : "Multiply", - "outputs" : ["Multiply_1697_0"] - }, - { - "inputs" : ["Multiply_1657"], - "name" : "Negative_1667", - "op" : "Negative", - "outputs" : ["Negative_1667_0"] - }, - { - "inputs" : [ "Multiply_1658", "Multiply_1660" ], - "name" : "Divide_1661", - "op" : "Divide", - "outputs" : ["Divide_1661_0"] - }, - { - "inputs" : ["Multiply_1677"], - "name" : "Negative_1681", - "op" : "Negative", - "outputs" : ["Negative_1681_0"] - }, - { - "inputs" : ["Multiply_1697"], - "name" : "Negative_1698", - "op" : "Negative", - "outputs" : ["Negative_1698_0"] - }, - { - "inputs" : [ "Negative_1667", "Divide_612" ], - "name" : "Multiply_1668", - "op" : "Multiply", - "outputs" : ["Multiply_1668_0"] - }, - { - "inputs" : [ "Broadcast_1663", "Divide_1661" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1664", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1664_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1681", "Divide_604" ], - "name" : "Multiply_1682", - "op" : "Multiply", - "outputs" : ["Multiply_1682_0"] - }, - { - "inputs" : [ "Multiply_1668", "Add_611" ], - "name" : "Divide_1669", - "op" : "Divide", - "outputs" : ["Divide_1669_0"] - }, - { - "inputs" : ["ReplaceSlice_1664"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1673", - "op" : "Slice", - "outputs" : ["Slice_1673_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1682", "Add_603" ], - "name" : "Divide_1683", - "op" : "Divide", - "outputs" : ["Divide_1683_0"] - }, - { - "inputs" : [ "Divide_1669", "Exp_610" ], - "name" : "Multiply_1671", - "op" : "Multiply", - "outputs" : ["Multiply_1671_0"] - }, - { - "inputs" : [ "Divide_1683", "Exp_602" ], - "name" : "Multiply_1685", - "op" : "Multiply", - "outputs" : ["Multiply_1685_0"] - }, - { - "inputs" : ["Multiply_1671"], - "name" : "Negative_1672", - "op" : "Negative", - "outputs" : ["Negative_1672_0"] - }, - { - "inputs" : ["Multiply_1685"], - "name" : "Negative_1686", - "op" : "Negative", - "outputs" : ["Negative_1686_0"] - }, - { - "inputs" : [ "Slice_1673", "Negative_1672" ], - "name" : "Add_1674", - "op" : "Add", - "outputs" : ["Add_1674_0"] - }, - { - "inputs" : [ "ReplaceSlice_1664", "Add_1674" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1675", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1675_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1675"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1687", - "op" : "Slice", - "outputs" : ["Slice_1687_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1687", "Negative_1686" ], - "name" : "Add_1688", - "op" : "Add", - "outputs" : ["Add_1688_0"] - }, - { - "inputs" : [ "ReplaceSlice_1675", "Add_1688" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1689", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1689_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1689"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1699", - "op" : "Slice", - "outputs" : ["Slice_1699_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1699", "Negative_1698" ], - "name" : "Add_1700", - "op" : "Add", - "outputs" : ["Add_1700_0"] - }, - { - "inputs" : [ "ReplaceSlice_1689", "Add_1700" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1701", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1701_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1701"], - "name" : "Sum_1702", - "op" : "Sum", - "outputs" : ["Sum_1702_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1701"], - "name" : "Reshape_1704", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1704_0"] - }, - { - "inputs" : [ "Reshape_1707", "ReplaceSlice_1701" ], - "name" : "Dot_1708", - "op" : "Dot", - "outputs" : ["Dot_1708_0"] - }, - { - "inputs" : ["ReplaceSlice_1701"], - "name" : "Sum_2698", - "op" : "Sum", - "outputs" : ["Sum_2698_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1701"], - "name" : "Reshape_2700", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2700_0"] - }, - { - "inputs" : [ "Reshape_2703", "ReplaceSlice_1701" ], - "name" : "Dot_2704", - "op" : "Dot", - "outputs" : ["Dot_2704_0"] - }, - { - "inputs" : [ "Add_1642", "Sum_1702" ], - "name" : "Add_1703", - "op" : "Add", - "outputs" : ["Add_1703_0"] - }, - { - "inputs" : [ "Reshape_586", "Reshape_1704" ], - "name" : "Dot_1705", - "op" : "Dot", - "outputs" : ["Dot_1705_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1708"], - "name" : "Reshape_1709", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1709_0"] - }, - { - "inputs" : [ "Reshape_71", "Reshape_2700" ], - "name" : "Dot_2701", - "op" : "Dot", - "outputs" : ["Dot_2701_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2704"], - "name" : "Reshape_2705", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2705_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1705"], - "name" : "Reshape_1706", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1706_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1709"], - "name" : "Reshape_1710", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1710_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2701"], - "name" : "Reshape_2702", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2702_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2705"], - "name" : "Reshape_2706", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2706_0"] - }, - { - "inputs" : [ "Reshape_1706", "Tanh_584" ], - "name" : "Multiply_1712", - "op" : "Multiply", - "outputs" : ["Multiply_1712_0"] - }, - { - "inputs" : [ "Divide_564", "Reshape_1706" ], - "name" : "Multiply_1713", - "op" : "Multiply", - "outputs" : ["Multiply_1713_0"] - }, - { - "inputs" : [ "Add_1650", "Reshape_1710" ], - "name" : "Add_1711", - "op" : "Add", - "outputs" : ["Add_1711_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2702"], - "name" : "Reshape_2708", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2708_0"] - }, - { - "inputs" : ["Multiply_1712"], - "name" : "Negative_1754", - "op" : "Negative", - "outputs" : ["Negative_1754_0"] - }, - { - "inputs" : [ "Multiply_1713", "Multiply_1715" ], - "name" : "Divide_1716", - "op" : "Divide", - "outputs" : ["Divide_1716_0"] - }, - { - "inputs" : [ "Negative_1754", "Divide_564" ], - "name" : "Multiply_1755", - "op" : "Multiply", - "outputs" : ["Multiply_1755_0"] - }, - { - "inputs" : [ "Multiply_1678", "Divide_1716" ], - "name" : "Add_1717", - "op" : "Add", - "outputs" : ["Add_1717_0"] - }, - { - "inputs" : [ "Multiply_1755", "Add_563" ], - "name" : "Divide_1756", - "op" : "Divide", - "outputs" : ["Divide_1756_0"] - }, - { - "inputs" : [ "Add_1717", "Tanh_581" ], - "name" : "Multiply_1718", - "op" : "Multiply", - "outputs" : ["Multiply_1718_0"] - }, - { - "inputs" : [ "Divide_579", "Add_1717" ], - "name" : "Multiply_1719", - "op" : "Multiply", - "outputs" : ["Multiply_1719_0"] - }, - { - "inputs" : [ "Add_1717", "Add_550" ], - "name" : "Multiply_1738", - "op" : "Multiply", - "outputs" : ["Multiply_1738_0"] - }, - { - "inputs" : [ "Divide_571", "Add_1717" ], - "name" : "Multiply_1739", - "op" : "Multiply", - "outputs" : ["Multiply_1739_0"] - }, - { - "inputs" : [ "Divide_1756", "Exp_562" ], - "name" : "Multiply_1758", - "op" : "Multiply", - "outputs" : ["Multiply_1758_0"] - }, - { - "inputs" : ["Multiply_1718"], - "name" : "Negative_1728", - "op" : "Negative", - "outputs" : ["Negative_1728_0"] - }, - { - "inputs" : [ "Multiply_1719", "Multiply_1721" ], - "name" : "Divide_1722", - "op" : "Divide", - "outputs" : ["Divide_1722_0"] - }, - { - "inputs" : ["Multiply_1738"], - "name" : "Negative_1742", - "op" : "Negative", - "outputs" : ["Negative_1742_0"] - }, - { - "inputs" : ["Multiply_1758"], - "name" : "Negative_1759", - "op" : "Negative", - "outputs" : ["Negative_1759_0"] - }, - { - "inputs" : [ "Negative_1728", "Divide_579" ], - "name" : "Multiply_1729", - "op" : "Multiply", - "outputs" : ["Multiply_1729_0"] - }, - { - "inputs" : [ "Broadcast_1724", "Divide_1722" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1725", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1725_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1742", "Divide_571" ], - "name" : "Multiply_1743", - "op" : "Multiply", - "outputs" : ["Multiply_1743_0"] - }, - { - "inputs" : [ "Multiply_1729", "Add_578" ], - "name" : "Divide_1730", - "op" : "Divide", - "outputs" : ["Divide_1730_0"] - }, - { - "inputs" : ["ReplaceSlice_1725"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1734", - "op" : "Slice", - "outputs" : ["Slice_1734_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1743", "Add_570" ], - "name" : "Divide_1744", - "op" : "Divide", - "outputs" : ["Divide_1744_0"] - }, - { - "inputs" : [ "Divide_1730", "Exp_577" ], - "name" : "Multiply_1732", - "op" : "Multiply", - "outputs" : ["Multiply_1732_0"] - }, - { - "inputs" : [ "Divide_1744", "Exp_569" ], - "name" : "Multiply_1746", - "op" : "Multiply", - "outputs" : ["Multiply_1746_0"] - }, - { - "inputs" : ["Multiply_1732"], - "name" : "Negative_1733", - "op" : "Negative", - "outputs" : ["Negative_1733_0"] - }, - { - "inputs" : ["Multiply_1746"], - "name" : "Negative_1747", - "op" : "Negative", - "outputs" : ["Negative_1747_0"] - }, - { - "inputs" : [ "Slice_1734", "Negative_1733" ], - "name" : "Add_1735", - "op" : "Add", - "outputs" : ["Add_1735_0"] - }, - { - "inputs" : [ "ReplaceSlice_1725", "Add_1735" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1736", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1736_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1736"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1748", - "op" : "Slice", - "outputs" : ["Slice_1748_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1748", "Negative_1747" ], - "name" : "Add_1749", - "op" : "Add", - "outputs" : ["Add_1749_0"] - }, - { - "inputs" : [ "ReplaceSlice_1736", "Add_1749" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1750", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1750_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1750"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1760", - "op" : "Slice", - "outputs" : ["Slice_1760_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1760", "Negative_1759" ], - "name" : "Add_1761", - "op" : "Add", - "outputs" : ["Add_1761_0"] - }, - { - "inputs" : [ "ReplaceSlice_1750", "Add_1761" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1762", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1762_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1762"], - "name" : "Sum_1763", - "op" : "Sum", - "outputs" : ["Sum_1763_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1762"], - "name" : "Reshape_1765", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1765_0"] - }, - { - "inputs" : [ "Reshape_1768", "ReplaceSlice_1762" ], - "name" : "Dot_1769", - "op" : "Dot", - "outputs" : ["Dot_1769_0"] - }, - { - "inputs" : ["ReplaceSlice_1762"], - "name" : "Sum_2683", - "op" : "Sum", - "outputs" : ["Sum_2683_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1762"], - "name" : "Reshape_2685", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2685_0"] - }, - { - "inputs" : [ "Reshape_2688", "ReplaceSlice_1762" ], - "name" : "Dot_2689", - "op" : "Dot", - "outputs" : ["Dot_2689_0"] - }, - { - "inputs" : [ "Add_1703", "Sum_1763" ], - "name" : "Add_1764", - "op" : "Add", - "outputs" : ["Add_1764_0"] - }, - { - "inputs" : [ "Reshape_553", "Reshape_1765" ], - "name" : "Dot_1766", - "op" : "Dot", - "outputs" : ["Dot_1766_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1769"], - "name" : "Reshape_1770", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1770_0"] - }, - { - "inputs" : [ "Reshape_77", "Reshape_2685" ], - "name" : "Dot_2686", - "op" : "Dot", - "outputs" : ["Dot_2686_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2689"], - "name" : "Reshape_2690", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2690_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1766"], - "name" : "Reshape_1767", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1767_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1770"], - "name" : "Reshape_1771", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1771_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2686"], - "name" : "Reshape_2687", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2687_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2690"], - "name" : "Reshape_2691", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2691_0"] - }, - { - "inputs" : [ "Reshape_1767", "Tanh_551" ], - "name" : "Multiply_1773", - "op" : "Multiply", - "outputs" : ["Multiply_1773_0"] - }, - { - "inputs" : [ "Divide_531", "Reshape_1767" ], - "name" : "Multiply_1774", - "op" : "Multiply", - "outputs" : ["Multiply_1774_0"] - }, - { - "inputs" : [ "Add_1711", "Reshape_1771" ], - "name" : "Add_1772", - "op" : "Add", - "outputs" : ["Add_1772_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2687"], - "name" : "Reshape_2693", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2693_0"] - }, - { - "inputs" : ["Multiply_1773"], - "name" : "Negative_1815", - "op" : "Negative", - "outputs" : ["Negative_1815_0"] - }, - { - "inputs" : [ "Multiply_1774", "Multiply_1776" ], - "name" : "Divide_1777", - "op" : "Divide", - "outputs" : ["Divide_1777_0"] - }, - { - "inputs" : [ "Negative_1815", "Divide_531" ], - "name" : "Multiply_1816", - "op" : "Multiply", - "outputs" : ["Multiply_1816_0"] - }, - { - "inputs" : [ "Multiply_1739", "Divide_1777" ], - "name" : "Add_1778", - "op" : "Add", - "outputs" : ["Add_1778_0"] - }, - { - "inputs" : [ "Multiply_1816", "Add_530" ], - "name" : "Divide_1817", - "op" : "Divide", - "outputs" : ["Divide_1817_0"] - }, - { - "inputs" : [ "Add_1778", "Tanh_548" ], - "name" : "Multiply_1779", - "op" : "Multiply", - "outputs" : ["Multiply_1779_0"] - }, - { - "inputs" : [ "Divide_546", "Add_1778" ], - "name" : "Multiply_1780", - "op" : "Multiply", - "outputs" : ["Multiply_1780_0"] - }, - { - "inputs" : [ "Add_1778", "Add_517" ], - "name" : "Multiply_1799", - "op" : "Multiply", - "outputs" : ["Multiply_1799_0"] - }, - { - "inputs" : [ "Divide_538", "Add_1778" ], - "name" : "Multiply_1800", - "op" : "Multiply", - "outputs" : ["Multiply_1800_0"] - }, - { - "inputs" : [ "Divide_1817", "Exp_529" ], - "name" : "Multiply_1819", - "op" : "Multiply", - "outputs" : ["Multiply_1819_0"] - }, - { - "inputs" : ["Multiply_1779"], - "name" : "Negative_1789", - "op" : "Negative", - "outputs" : ["Negative_1789_0"] - }, - { - "inputs" : [ "Multiply_1780", "Multiply_1782" ], - "name" : "Divide_1783", - "op" : "Divide", - "outputs" : ["Divide_1783_0"] - }, - { - "inputs" : ["Multiply_1799"], - "name" : "Negative_1803", - "op" : "Negative", - "outputs" : ["Negative_1803_0"] - }, - { - "inputs" : ["Multiply_1819"], - "name" : "Negative_1820", - "op" : "Negative", - "outputs" : ["Negative_1820_0"] - }, - { - "inputs" : [ "Negative_1789", "Divide_546" ], - "name" : "Multiply_1790", - "op" : "Multiply", - "outputs" : ["Multiply_1790_0"] - }, - { - "inputs" : [ "Broadcast_1785", "Divide_1783" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1786", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1786_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1803", "Divide_538" ], - "name" : "Multiply_1804", - "op" : "Multiply", - "outputs" : ["Multiply_1804_0"] - }, - { - "inputs" : [ "Multiply_1790", "Add_545" ], - "name" : "Divide_1791", - "op" : "Divide", - "outputs" : ["Divide_1791_0"] - }, - { - "inputs" : ["ReplaceSlice_1786"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1795", - "op" : "Slice", - "outputs" : ["Slice_1795_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1804", "Add_537" ], - "name" : "Divide_1805", - "op" : "Divide", - "outputs" : ["Divide_1805_0"] - }, - { - "inputs" : [ "Divide_1791", "Exp_544" ], - "name" : "Multiply_1793", - "op" : "Multiply", - "outputs" : ["Multiply_1793_0"] - }, - { - "inputs" : [ "Divide_1805", "Exp_536" ], - "name" : "Multiply_1807", - "op" : "Multiply", - "outputs" : ["Multiply_1807_0"] - }, - { - "inputs" : ["Multiply_1793"], - "name" : "Negative_1794", - "op" : "Negative", - "outputs" : ["Negative_1794_0"] - }, - { - "inputs" : ["Multiply_1807"], - "name" : "Negative_1808", - "op" : "Negative", - "outputs" : ["Negative_1808_0"] - }, - { - "inputs" : [ "Slice_1795", "Negative_1794" ], - "name" : "Add_1796", - "op" : "Add", - "outputs" : ["Add_1796_0"] - }, - { - "inputs" : [ "ReplaceSlice_1786", "Add_1796" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1797", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1797_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1797"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1809", - "op" : "Slice", - "outputs" : ["Slice_1809_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1809", "Negative_1808" ], - "name" : "Add_1810", - "op" : "Add", - "outputs" : ["Add_1810_0"] - }, - { - "inputs" : [ "ReplaceSlice_1797", "Add_1810" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1811", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1811_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1811"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1821", - "op" : "Slice", - "outputs" : ["Slice_1821_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1821", "Negative_1820" ], - "name" : "Add_1822", - "op" : "Add", - "outputs" : ["Add_1822_0"] - }, - { - "inputs" : [ "ReplaceSlice_1811", "Add_1822" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1823", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1823_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1823"], - "name" : "Sum_1824", - "op" : "Sum", - "outputs" : ["Sum_1824_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1823"], - "name" : "Reshape_1826", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1826_0"] - }, - { - "inputs" : [ "Reshape_1829", "ReplaceSlice_1823" ], - "name" : "Dot_1830", - "op" : "Dot", - "outputs" : ["Dot_1830_0"] - }, - { - "inputs" : ["ReplaceSlice_1823"], - "name" : "Sum_2668", - "op" : "Sum", - "outputs" : ["Sum_2668_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1823"], - "name" : "Reshape_2670", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2670_0"] - }, - { - "inputs" : [ "Reshape_2673", "ReplaceSlice_1823" ], - "name" : "Dot_2674", - "op" : "Dot", - "outputs" : ["Dot_2674_0"] - }, - { - "inputs" : [ "Add_1764", "Sum_1824" ], - "name" : "Add_1825", - "op" : "Add", - "outputs" : ["Add_1825_0"] - }, - { - "inputs" : [ "Reshape_520", "Reshape_1826" ], - "name" : "Dot_1827", - "op" : "Dot", - "outputs" : ["Dot_1827_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1830"], - "name" : "Reshape_1831", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1831_0"] - }, - { - "inputs" : [ "Reshape_83", "Reshape_2670" ], - "name" : "Dot_2671", - "op" : "Dot", - "outputs" : ["Dot_2671_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2674"], - "name" : "Reshape_2675", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2675_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1827"], - "name" : "Reshape_1828", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1828_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1831"], - "name" : "Reshape_1832", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1832_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2671"], - "name" : "Reshape_2672", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2672_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2675"], - "name" : "Reshape_2676", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2676_0"] - }, - { - "inputs" : [ "Reshape_1828", "Tanh_518" ], - "name" : "Multiply_1834", - "op" : "Multiply", - "outputs" : ["Multiply_1834_0"] - }, - { - "inputs" : [ "Divide_498", "Reshape_1828" ], - "name" : "Multiply_1835", - "op" : "Multiply", - "outputs" : ["Multiply_1835_0"] - }, - { - "inputs" : [ "Add_1772", "Reshape_1832" ], - "name" : "Add_1833", - "op" : "Add", - "outputs" : ["Add_1833_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2672"], - "name" : "Reshape_2678", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2678_0"] - }, - { - "inputs" : ["Multiply_1834"], - "name" : "Negative_1876", - "op" : "Negative", - "outputs" : ["Negative_1876_0"] - }, - { - "inputs" : [ "Multiply_1835", "Multiply_1837" ], - "name" : "Divide_1838", - "op" : "Divide", - "outputs" : ["Divide_1838_0"] - }, - { - "inputs" : [ "Negative_1876", "Divide_498" ], - "name" : "Multiply_1877", - "op" : "Multiply", - "outputs" : ["Multiply_1877_0"] - }, - { - "inputs" : [ "Multiply_1800", "Divide_1838" ], - "name" : "Add_1839", - "op" : "Add", - "outputs" : ["Add_1839_0"] - }, - { - "inputs" : [ "Multiply_1877", "Add_497" ], - "name" : "Divide_1878", - "op" : "Divide", - "outputs" : ["Divide_1878_0"] - }, - { - "inputs" : [ "Add_1839", "Tanh_515" ], - "name" : "Multiply_1840", - "op" : "Multiply", - "outputs" : ["Multiply_1840_0"] - }, - { - "inputs" : [ "Divide_513", "Add_1839" ], - "name" : "Multiply_1841", - "op" : "Multiply", - "outputs" : ["Multiply_1841_0"] - }, - { - "inputs" : [ "Add_1839", "Add_484" ], - "name" : "Multiply_1860", - "op" : "Multiply", - "outputs" : ["Multiply_1860_0"] - }, - { - "inputs" : [ "Divide_505", "Add_1839" ], - "name" : "Multiply_1861", - "op" : "Multiply", - "outputs" : ["Multiply_1861_0"] - }, - { - "inputs" : [ "Divide_1878", "Exp_496" ], - "name" : "Multiply_1880", - "op" : "Multiply", - "outputs" : ["Multiply_1880_0"] - }, - { - "inputs" : ["Multiply_1840"], - "name" : "Negative_1850", - "op" : "Negative", - "outputs" : ["Negative_1850_0"] - }, - { - "inputs" : [ "Multiply_1841", "Multiply_1843" ], - "name" : "Divide_1844", - "op" : "Divide", - "outputs" : ["Divide_1844_0"] - }, - { - "inputs" : ["Multiply_1860"], - "name" : "Negative_1864", - "op" : "Negative", - "outputs" : ["Negative_1864_0"] - }, - { - "inputs" : ["Multiply_1880"], - "name" : "Negative_1881", - "op" : "Negative", - "outputs" : ["Negative_1881_0"] - }, - { - "inputs" : [ "Negative_1850", "Divide_513" ], - "name" : "Multiply_1851", - "op" : "Multiply", - "outputs" : ["Multiply_1851_0"] - }, - { - "inputs" : [ "Broadcast_1846", "Divide_1844" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1847", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1847_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1864", "Divide_505" ], - "name" : "Multiply_1865", - "op" : "Multiply", - "outputs" : ["Multiply_1865_0"] - }, - { - "inputs" : [ "Multiply_1851", "Add_512" ], - "name" : "Divide_1852", - "op" : "Divide", - "outputs" : ["Divide_1852_0"] - }, - { - "inputs" : ["ReplaceSlice_1847"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1856", - "op" : "Slice", - "outputs" : ["Slice_1856_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1865", "Add_504" ], - "name" : "Divide_1866", - "op" : "Divide", - "outputs" : ["Divide_1866_0"] - }, - { - "inputs" : [ "Divide_1852", "Exp_511" ], - "name" : "Multiply_1854", - "op" : "Multiply", - "outputs" : ["Multiply_1854_0"] - }, - { - "inputs" : [ "Divide_1866", "Exp_503" ], - "name" : "Multiply_1868", - "op" : "Multiply", - "outputs" : ["Multiply_1868_0"] - }, - { - "inputs" : ["Multiply_1854"], - "name" : "Negative_1855", - "op" : "Negative", - "outputs" : ["Negative_1855_0"] - }, - { - "inputs" : ["Multiply_1868"], - "name" : "Negative_1869", - "op" : "Negative", - "outputs" : ["Negative_1869_0"] - }, - { - "inputs" : [ "Slice_1856", "Negative_1855" ], - "name" : "Add_1857", - "op" : "Add", - "outputs" : ["Add_1857_0"] - }, - { - "inputs" : [ "ReplaceSlice_1847", "Add_1857" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1858", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1858_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1858"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1870", - "op" : "Slice", - "outputs" : ["Slice_1870_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1870", "Negative_1869" ], - "name" : "Add_1871", - "op" : "Add", - "outputs" : ["Add_1871_0"] - }, - { - "inputs" : [ "ReplaceSlice_1858", "Add_1871" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1872", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1872_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1872"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1882", - "op" : "Slice", - "outputs" : ["Slice_1882_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1882", "Negative_1881" ], - "name" : "Add_1883", - "op" : "Add", - "outputs" : ["Add_1883_0"] - }, - { - "inputs" : [ "ReplaceSlice_1872", "Add_1883" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1884", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1884_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1884"], - "name" : "Sum_1885", - "op" : "Sum", - "outputs" : ["Sum_1885_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1884"], - "name" : "Reshape_1887", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1887_0"] - }, - { - "inputs" : [ "Reshape_1890", "ReplaceSlice_1884" ], - "name" : "Dot_1891", - "op" : "Dot", - "outputs" : ["Dot_1891_0"] - }, - { - "inputs" : ["ReplaceSlice_1884"], - "name" : "Sum_2653", - "op" : "Sum", - "outputs" : ["Sum_2653_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1884"], - "name" : "Reshape_2655", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2655_0"] - }, - { - "inputs" : [ "Reshape_2658", "ReplaceSlice_1884" ], - "name" : "Dot_2659", - "op" : "Dot", - "outputs" : ["Dot_2659_0"] - }, - { - "inputs" : [ "Add_1825", "Sum_1885" ], - "name" : "Add_1886", - "op" : "Add", - "outputs" : ["Add_1886_0"] - }, - { - "inputs" : [ "Reshape_487", "Reshape_1887" ], - "name" : "Dot_1888", - "op" : "Dot", - "outputs" : ["Dot_1888_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1891"], - "name" : "Reshape_1892", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1892_0"] - }, - { - "inputs" : [ "Reshape_89", "Reshape_2655" ], - "name" : "Dot_2656", - "op" : "Dot", - "outputs" : ["Dot_2656_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2659"], - "name" : "Reshape_2660", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2660_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1888"], - "name" : "Reshape_1889", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1889_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1892"], - "name" : "Reshape_1893", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1893_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2656"], - "name" : "Reshape_2657", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2657_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2660"], - "name" : "Reshape_2661", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2661_0"] - }, - { - "inputs" : [ "Reshape_1889", "Tanh_485" ], - "name" : "Multiply_1895", - "op" : "Multiply", - "outputs" : ["Multiply_1895_0"] - }, - { - "inputs" : [ "Divide_465", "Reshape_1889" ], - "name" : "Multiply_1896", - "op" : "Multiply", - "outputs" : ["Multiply_1896_0"] - }, - { - "inputs" : [ "Add_1833", "Reshape_1893" ], - "name" : "Add_1894", - "op" : "Add", - "outputs" : ["Add_1894_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2657"], - "name" : "Reshape_2663", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2663_0"] - }, - { - "inputs" : ["Multiply_1895"], - "name" : "Negative_1937", - "op" : "Negative", - "outputs" : ["Negative_1937_0"] - }, - { - "inputs" : [ "Multiply_1896", "Multiply_1898" ], - "name" : "Divide_1899", - "op" : "Divide", - "outputs" : ["Divide_1899_0"] - }, - { - "inputs" : [ "Negative_1937", "Divide_465" ], - "name" : "Multiply_1938", - "op" : "Multiply", - "outputs" : ["Multiply_1938_0"] - }, - { - "inputs" : [ "Multiply_1861", "Divide_1899" ], - "name" : "Add_1900", - "op" : "Add", - "outputs" : ["Add_1900_0"] - }, - { - "inputs" : [ "Multiply_1938", "Add_464" ], - "name" : "Divide_1939", - "op" : "Divide", - "outputs" : ["Divide_1939_0"] - }, - { - "inputs" : [ "Add_1900", "Tanh_482" ], - "name" : "Multiply_1901", - "op" : "Multiply", - "outputs" : ["Multiply_1901_0"] - }, - { - "inputs" : [ "Divide_480", "Add_1900" ], - "name" : "Multiply_1902", - "op" : "Multiply", - "outputs" : ["Multiply_1902_0"] - }, - { - "inputs" : [ "Add_1900", "Add_451" ], - "name" : "Multiply_1921", - "op" : "Multiply", - "outputs" : ["Multiply_1921_0"] - }, - { - "inputs" : [ "Divide_472", "Add_1900" ], - "name" : "Multiply_1922", - "op" : "Multiply", - "outputs" : ["Multiply_1922_0"] - }, - { - "inputs" : [ "Divide_1939", "Exp_463" ], - "name" : "Multiply_1941", - "op" : "Multiply", - "outputs" : ["Multiply_1941_0"] - }, - { - "inputs" : ["Multiply_1901"], - "name" : "Negative_1911", - "op" : "Negative", - "outputs" : ["Negative_1911_0"] - }, - { - "inputs" : [ "Multiply_1902", "Multiply_1904" ], - "name" : "Divide_1905", - "op" : "Divide", - "outputs" : ["Divide_1905_0"] - }, - { - "inputs" : ["Multiply_1921"], - "name" : "Negative_1925", - "op" : "Negative", - "outputs" : ["Negative_1925_0"] - }, - { - "inputs" : ["Multiply_1941"], - "name" : "Negative_1942", - "op" : "Negative", - "outputs" : ["Negative_1942_0"] - }, - { - "inputs" : [ "Negative_1911", "Divide_480" ], - "name" : "Multiply_1912", - "op" : "Multiply", - "outputs" : ["Multiply_1912_0"] - }, - { - "inputs" : [ "Broadcast_1907", "Divide_1905" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1908", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1908_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1925", "Divide_472" ], - "name" : "Multiply_1926", - "op" : "Multiply", - "outputs" : ["Multiply_1926_0"] - }, - { - "inputs" : [ "Multiply_1912", "Add_479" ], - "name" : "Divide_1913", - "op" : "Divide", - "outputs" : ["Divide_1913_0"] - }, - { - "inputs" : ["ReplaceSlice_1908"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1917", - "op" : "Slice", - "outputs" : ["Slice_1917_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1926", "Add_471" ], - "name" : "Divide_1927", - "op" : "Divide", - "outputs" : ["Divide_1927_0"] - }, - { - "inputs" : [ "Divide_1913", "Exp_478" ], - "name" : "Multiply_1915", - "op" : "Multiply", - "outputs" : ["Multiply_1915_0"] - }, - { - "inputs" : [ "Divide_1927", "Exp_470" ], - "name" : "Multiply_1929", - "op" : "Multiply", - "outputs" : ["Multiply_1929_0"] - }, - { - "inputs" : ["Multiply_1915"], - "name" : "Negative_1916", - "op" : "Negative", - "outputs" : ["Negative_1916_0"] - }, - { - "inputs" : ["Multiply_1929"], - "name" : "Negative_1930", - "op" : "Negative", - "outputs" : ["Negative_1930_0"] - }, - { - "inputs" : [ "Slice_1917", "Negative_1916" ], - "name" : "Add_1918", - "op" : "Add", - "outputs" : ["Add_1918_0"] - }, - { - "inputs" : [ "ReplaceSlice_1908", "Add_1918" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1919", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1919_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1919"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1931", - "op" : "Slice", - "outputs" : ["Slice_1931_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1931", "Negative_1930" ], - "name" : "Add_1932", - "op" : "Add", - "outputs" : ["Add_1932_0"] - }, - { - "inputs" : [ "ReplaceSlice_1919", "Add_1932" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1933", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1933_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1933"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_1943", - "op" : "Slice", - "outputs" : ["Slice_1943_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_1943", "Negative_1942" ], - "name" : "Add_1944", - "op" : "Add", - "outputs" : ["Add_1944_0"] - }, - { - "inputs" : [ "ReplaceSlice_1933", "Add_1944" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_1945", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1945_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_1945"], - "name" : "Sum_1946", - "op" : "Sum", - "outputs" : ["Sum_1946_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1945"], - "name" : "Reshape_1948", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_1948_0"] - }, - { - "inputs" : [ "Reshape_1951", "ReplaceSlice_1945" ], - "name" : "Dot_1952", - "op" : "Dot", - "outputs" : ["Dot_1952_0"] - }, - { - "inputs" : ["ReplaceSlice_1945"], - "name" : "Sum_2638", - "op" : "Sum", - "outputs" : ["Sum_2638_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_1945"], - "name" : "Reshape_2640", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2640_0"] - }, - { - "inputs" : [ "Reshape_2643", "ReplaceSlice_1945" ], - "name" : "Dot_2644", - "op" : "Dot", - "outputs" : ["Dot_2644_0"] - }, - { - "inputs" : [ "Add_1886", "Sum_1946" ], - "name" : "Add_1947", - "op" : "Add", - "outputs" : ["Add_1947_0"] - }, - { - "inputs" : [ "Reshape_454", "Reshape_1948" ], - "name" : "Dot_1949", - "op" : "Dot", - "outputs" : ["Dot_1949_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_1952"], - "name" : "Reshape_1953", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_1953_0"] - }, - { - "inputs" : [ "Reshape_95", "Reshape_2640" ], - "name" : "Dot_2641", - "op" : "Dot", - "outputs" : ["Dot_2641_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2644"], - "name" : "Reshape_2645", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2645_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_1949"], - "name" : "Reshape_1950", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_1950_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1953"], - "name" : "Reshape_1954", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_1954_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2641"], - "name" : "Reshape_2642", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2642_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2645"], - "name" : "Reshape_2646", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2646_0"] - }, - { - "inputs" : [ "Reshape_1950", "Tanh_452" ], - "name" : "Multiply_1956", - "op" : "Multiply", - "outputs" : ["Multiply_1956_0"] - }, - { - "inputs" : [ "Divide_432", "Reshape_1950" ], - "name" : "Multiply_1957", - "op" : "Multiply", - "outputs" : ["Multiply_1957_0"] - }, - { - "inputs" : [ "Add_1894", "Reshape_1954" ], - "name" : "Add_1955", - "op" : "Add", - "outputs" : ["Add_1955_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2642"], - "name" : "Reshape_2648", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2648_0"] - }, - { - "inputs" : ["Multiply_1956"], - "name" : "Negative_1998", - "op" : "Negative", - "outputs" : ["Negative_1998_0"] - }, - { - "inputs" : [ "Multiply_1957", "Multiply_1959" ], - "name" : "Divide_1960", - "op" : "Divide", - "outputs" : ["Divide_1960_0"] - }, - { - "inputs" : [ "Negative_1998", "Divide_432" ], - "name" : "Multiply_1999", - "op" : "Multiply", - "outputs" : ["Multiply_1999_0"] - }, - { - "inputs" : [ "Multiply_1922", "Divide_1960" ], - "name" : "Add_1961", - "op" : "Add", - "outputs" : ["Add_1961_0"] - }, - { - "inputs" : [ "Multiply_1999", "Add_431" ], - "name" : "Divide_2000", - "op" : "Divide", - "outputs" : ["Divide_2000_0"] - }, - { - "inputs" : [ "Add_1961", "Tanh_449" ], - "name" : "Multiply_1962", - "op" : "Multiply", - "outputs" : ["Multiply_1962_0"] - }, - { - "inputs" : [ "Divide_447", "Add_1961" ], - "name" : "Multiply_1963", - "op" : "Multiply", - "outputs" : ["Multiply_1963_0"] - }, - { - "inputs" : [ "Add_1961", "Add_418" ], - "name" : "Multiply_1982", - "op" : "Multiply", - "outputs" : ["Multiply_1982_0"] - }, - { - "inputs" : [ "Divide_439", "Add_1961" ], - "name" : "Multiply_1983", - "op" : "Multiply", - "outputs" : ["Multiply_1983_0"] - }, - { - "inputs" : [ "Divide_2000", "Exp_430" ], - "name" : "Multiply_2002", - "op" : "Multiply", - "outputs" : ["Multiply_2002_0"] - }, - { - "inputs" : ["Multiply_1962"], - "name" : "Negative_1972", - "op" : "Negative", - "outputs" : ["Negative_1972_0"] - }, - { - "inputs" : [ "Multiply_1963", "Multiply_1965" ], - "name" : "Divide_1966", - "op" : "Divide", - "outputs" : ["Divide_1966_0"] - }, - { - "inputs" : ["Multiply_1982"], - "name" : "Negative_1986", - "op" : "Negative", - "outputs" : ["Negative_1986_0"] - }, - { - "inputs" : ["Multiply_2002"], - "name" : "Negative_2003", - "op" : "Negative", - "outputs" : ["Negative_2003_0"] - }, - { - "inputs" : [ "Negative_1972", "Divide_447" ], - "name" : "Multiply_1973", - "op" : "Multiply", - "outputs" : ["Multiply_1973_0"] - }, - { - "inputs" : [ "Broadcast_1968", "Divide_1966" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_1969", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1969_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_1986", "Divide_439" ], - "name" : "Multiply_1987", - "op" : "Multiply", - "outputs" : ["Multiply_1987_0"] - }, - { - "inputs" : [ "Multiply_1973", "Add_446" ], - "name" : "Divide_1974", - "op" : "Divide", - "outputs" : ["Divide_1974_0"] - }, - { - "inputs" : ["ReplaceSlice_1969"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_1978", - "op" : "Slice", - "outputs" : ["Slice_1978_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_1987", "Add_438" ], - "name" : "Divide_1988", - "op" : "Divide", - "outputs" : ["Divide_1988_0"] - }, - { - "inputs" : [ "Divide_1974", "Exp_445" ], - "name" : "Multiply_1976", - "op" : "Multiply", - "outputs" : ["Multiply_1976_0"] - }, - { - "inputs" : [ "Divide_1988", "Exp_437" ], - "name" : "Multiply_1990", - "op" : "Multiply", - "outputs" : ["Multiply_1990_0"] - }, - { - "inputs" : ["Multiply_1976"], - "name" : "Negative_1977", - "op" : "Negative", - "outputs" : ["Negative_1977_0"] - }, - { - "inputs" : ["Multiply_1990"], - "name" : "Negative_1991", - "op" : "Negative", - "outputs" : ["Negative_1991_0"] - }, - { - "inputs" : [ "Slice_1978", "Negative_1977" ], - "name" : "Add_1979", - "op" : "Add", - "outputs" : ["Add_1979_0"] - }, - { - "inputs" : [ "ReplaceSlice_1969", "Add_1979" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_1980", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1980_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_1980"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_1992", - "op" : "Slice", - "outputs" : ["Slice_1992_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_1992", "Negative_1991" ], - "name" : "Add_1993", - "op" : "Add", - "outputs" : ["Add_1993_0"] - }, - { - "inputs" : [ "ReplaceSlice_1980", "Add_1993" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_1994", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_1994_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_1994"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2004", - "op" : "Slice", - "outputs" : ["Slice_2004_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2004", "Negative_2003" ], - "name" : "Add_2005", - "op" : "Add", - "outputs" : ["Add_2005_0"] - }, - { - "inputs" : [ "ReplaceSlice_1994", "Add_2005" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2006", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2006_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2006"], - "name" : "Sum_2007", - "op" : "Sum", - "outputs" : ["Sum_2007_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2006"], - "name" : "Reshape_2009", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2009_0"] - }, - { - "inputs" : [ "Reshape_2012", "ReplaceSlice_2006" ], - "name" : "Dot_2013", - "op" : "Dot", - "outputs" : ["Dot_2013_0"] - }, - { - "inputs" : ["ReplaceSlice_2006"], - "name" : "Sum_2623", - "op" : "Sum", - "outputs" : ["Sum_2623_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2006"], - "name" : "Reshape_2625", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2625_0"] - }, - { - "inputs" : [ "Reshape_2628", "ReplaceSlice_2006" ], - "name" : "Dot_2629", - "op" : "Dot", - "outputs" : ["Dot_2629_0"] - }, - { - "inputs" : [ "Add_1947", "Sum_2007" ], - "name" : "Add_2008", - "op" : "Add", - "outputs" : ["Add_2008_0"] - }, - { - "inputs" : [ "Reshape_421", "Reshape_2009" ], - "name" : "Dot_2010", - "op" : "Dot", - "outputs" : ["Dot_2010_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2013"], - "name" : "Reshape_2014", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2014_0"] - }, - { - "inputs" : [ "Reshape_101", "Reshape_2625" ], - "name" : "Dot_2626", - "op" : "Dot", - "outputs" : ["Dot_2626_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2629"], - "name" : "Reshape_2630", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2630_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2010"], - "name" : "Reshape_2011", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2011_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2014"], - "name" : "Reshape_2015", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2015_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2626"], - "name" : "Reshape_2627", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2627_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2630"], - "name" : "Reshape_2631", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2631_0"] - }, - { - "inputs" : [ "Reshape_2011", "Tanh_419" ], - "name" : "Multiply_2017", - "op" : "Multiply", - "outputs" : ["Multiply_2017_0"] - }, - { - "inputs" : [ "Divide_399", "Reshape_2011" ], - "name" : "Multiply_2018", - "op" : "Multiply", - "outputs" : ["Multiply_2018_0"] - }, - { - "inputs" : [ "Add_1955", "Reshape_2015" ], - "name" : "Add_2016", - "op" : "Add", - "outputs" : ["Add_2016_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2627"], - "name" : "Reshape_2633", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2633_0"] - }, - { - "inputs" : ["Multiply_2017"], - "name" : "Negative_2059", - "op" : "Negative", - "outputs" : ["Negative_2059_0"] - }, - { - "inputs" : [ "Multiply_2018", "Multiply_2020" ], - "name" : "Divide_2021", - "op" : "Divide", - "outputs" : ["Divide_2021_0"] - }, - { - "inputs" : [ "Negative_2059", "Divide_399" ], - "name" : "Multiply_2060", - "op" : "Multiply", - "outputs" : ["Multiply_2060_0"] - }, - { - "inputs" : [ "Multiply_1983", "Divide_2021" ], - "name" : "Add_2022", - "op" : "Add", - "outputs" : ["Add_2022_0"] - }, - { - "inputs" : [ "Multiply_2060", "Add_398" ], - "name" : "Divide_2061", - "op" : "Divide", - "outputs" : ["Divide_2061_0"] - }, - { - "inputs" : [ "Add_2022", "Tanh_416" ], - "name" : "Multiply_2023", - "op" : "Multiply", - "outputs" : ["Multiply_2023_0"] - }, - { - "inputs" : [ "Divide_414", "Add_2022" ], - "name" : "Multiply_2024", - "op" : "Multiply", - "outputs" : ["Multiply_2024_0"] - }, - { - "inputs" : [ "Add_2022", "Add_385" ], - "name" : "Multiply_2043", - "op" : "Multiply", - "outputs" : ["Multiply_2043_0"] - }, - { - "inputs" : [ "Divide_406", "Add_2022" ], - "name" : "Multiply_2044", - "op" : "Multiply", - "outputs" : ["Multiply_2044_0"] - }, - { - "inputs" : [ "Divide_2061", "Exp_397" ], - "name" : "Multiply_2063", - "op" : "Multiply", - "outputs" : ["Multiply_2063_0"] - }, - { - "inputs" : ["Multiply_2023"], - "name" : "Negative_2033", - "op" : "Negative", - "outputs" : ["Negative_2033_0"] - }, - { - "inputs" : [ "Multiply_2024", "Multiply_2026" ], - "name" : "Divide_2027", - "op" : "Divide", - "outputs" : ["Divide_2027_0"] - }, - { - "inputs" : ["Multiply_2043"], - "name" : "Negative_2047", - "op" : "Negative", - "outputs" : ["Negative_2047_0"] - }, - { - "inputs" : ["Multiply_2063"], - "name" : "Negative_2064", - "op" : "Negative", - "outputs" : ["Negative_2064_0"] - }, - { - "inputs" : [ "Negative_2033", "Divide_414" ], - "name" : "Multiply_2034", - "op" : "Multiply", - "outputs" : ["Multiply_2034_0"] - }, - { - "inputs" : [ "Broadcast_2029", "Divide_2027" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2030", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2030_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2047", "Divide_406" ], - "name" : "Multiply_2048", - "op" : "Multiply", - "outputs" : ["Multiply_2048_0"] - }, - { - "inputs" : [ "Multiply_2034", "Add_413" ], - "name" : "Divide_2035", - "op" : "Divide", - "outputs" : ["Divide_2035_0"] - }, - { - "inputs" : ["ReplaceSlice_2030"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2039", - "op" : "Slice", - "outputs" : ["Slice_2039_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2048", "Add_405" ], - "name" : "Divide_2049", - "op" : "Divide", - "outputs" : ["Divide_2049_0"] - }, - { - "inputs" : [ "Divide_2035", "Exp_412" ], - "name" : "Multiply_2037", - "op" : "Multiply", - "outputs" : ["Multiply_2037_0"] - }, - { - "inputs" : [ "Divide_2049", "Exp_404" ], - "name" : "Multiply_2051", - "op" : "Multiply", - "outputs" : ["Multiply_2051_0"] - }, - { - "inputs" : ["Multiply_2037"], - "name" : "Negative_2038", - "op" : "Negative", - "outputs" : ["Negative_2038_0"] - }, - { - "inputs" : ["Multiply_2051"], - "name" : "Negative_2052", - "op" : "Negative", - "outputs" : ["Negative_2052_0"] - }, - { - "inputs" : [ "Slice_2039", "Negative_2038" ], - "name" : "Add_2040", - "op" : "Add", - "outputs" : ["Add_2040_0"] - }, - { - "inputs" : [ "ReplaceSlice_2030", "Add_2040" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2041", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2041_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2041"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2053", - "op" : "Slice", - "outputs" : ["Slice_2053_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2053", "Negative_2052" ], - "name" : "Add_2054", - "op" : "Add", - "outputs" : ["Add_2054_0"] - }, - { - "inputs" : [ "ReplaceSlice_2041", "Add_2054" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2055", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2055_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2055"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2065", - "op" : "Slice", - "outputs" : ["Slice_2065_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2065", "Negative_2064" ], - "name" : "Add_2066", - "op" : "Add", - "outputs" : ["Add_2066_0"] - }, - { - "inputs" : [ "ReplaceSlice_2055", "Add_2066" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2067", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2067_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2067"], - "name" : "Sum_2068", - "op" : "Sum", - "outputs" : ["Sum_2068_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2067"], - "name" : "Reshape_2070", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2070_0"] - }, - { - "inputs" : [ "Reshape_2073", "ReplaceSlice_2067" ], - "name" : "Dot_2074", - "op" : "Dot", - "outputs" : ["Dot_2074_0"] - }, - { - "inputs" : ["ReplaceSlice_2067"], - "name" : "Sum_2608", - "op" : "Sum", - "outputs" : ["Sum_2608_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2067"], - "name" : "Reshape_2610", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2610_0"] - }, - { - "inputs" : [ "Reshape_2613", "ReplaceSlice_2067" ], - "name" : "Dot_2614", - "op" : "Dot", - "outputs" : ["Dot_2614_0"] - }, - { - "inputs" : [ "Add_2008", "Sum_2068" ], - "name" : "Add_2069", - "op" : "Add", - "outputs" : ["Add_2069_0"] - }, - { - "inputs" : [ "Reshape_388", "Reshape_2070" ], - "name" : "Dot_2071", - "op" : "Dot", - "outputs" : ["Dot_2071_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2074"], - "name" : "Reshape_2075", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2075_0"] - }, - { - "inputs" : [ "Reshape_107", "Reshape_2610" ], - "name" : "Dot_2611", - "op" : "Dot", - "outputs" : ["Dot_2611_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2614"], - "name" : "Reshape_2615", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2615_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2071"], - "name" : "Reshape_2072", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2072_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2075"], - "name" : "Reshape_2076", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2076_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2611"], - "name" : "Reshape_2612", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2612_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2615"], - "name" : "Reshape_2616", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2616_0"] - }, - { - "inputs" : [ "Reshape_2072", "Tanh_386" ], - "name" : "Multiply_2078", - "op" : "Multiply", - "outputs" : ["Multiply_2078_0"] - }, - { - "inputs" : [ "Divide_366", "Reshape_2072" ], - "name" : "Multiply_2079", - "op" : "Multiply", - "outputs" : ["Multiply_2079_0"] - }, - { - "inputs" : [ "Add_2016", "Reshape_2076" ], - "name" : "Add_2077", - "op" : "Add", - "outputs" : ["Add_2077_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2612"], - "name" : "Reshape_2618", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2618_0"] - }, - { - "inputs" : ["Multiply_2078"], - "name" : "Negative_2120", - "op" : "Negative", - "outputs" : ["Negative_2120_0"] - }, - { - "inputs" : [ "Multiply_2079", "Multiply_2081" ], - "name" : "Divide_2082", - "op" : "Divide", - "outputs" : ["Divide_2082_0"] - }, - { - "inputs" : [ "Negative_2120", "Divide_366" ], - "name" : "Multiply_2121", - "op" : "Multiply", - "outputs" : ["Multiply_2121_0"] - }, - { - "inputs" : [ "Multiply_2044", "Divide_2082" ], - "name" : "Add_2083", - "op" : "Add", - "outputs" : ["Add_2083_0"] - }, - { - "inputs" : [ "Multiply_2121", "Add_365" ], - "name" : "Divide_2122", - "op" : "Divide", - "outputs" : ["Divide_2122_0"] - }, - { - "inputs" : [ "Add_2083", "Tanh_383" ], - "name" : "Multiply_2084", - "op" : "Multiply", - "outputs" : ["Multiply_2084_0"] - }, - { - "inputs" : [ "Divide_381", "Add_2083" ], - "name" : "Multiply_2085", - "op" : "Multiply", - "outputs" : ["Multiply_2085_0"] - }, - { - "inputs" : [ "Add_2083", "Add_352" ], - "name" : "Multiply_2104", - "op" : "Multiply", - "outputs" : ["Multiply_2104_0"] - }, - { - "inputs" : [ "Divide_373", "Add_2083" ], - "name" : "Multiply_2105", - "op" : "Multiply", - "outputs" : ["Multiply_2105_0"] - }, - { - "inputs" : [ "Divide_2122", "Exp_364" ], - "name" : "Multiply_2124", - "op" : "Multiply", - "outputs" : ["Multiply_2124_0"] - }, - { - "inputs" : ["Multiply_2084"], - "name" : "Negative_2094", - "op" : "Negative", - "outputs" : ["Negative_2094_0"] - }, - { - "inputs" : [ "Multiply_2085", "Multiply_2087" ], - "name" : "Divide_2088", - "op" : "Divide", - "outputs" : ["Divide_2088_0"] - }, - { - "inputs" : ["Multiply_2104"], - "name" : "Negative_2108", - "op" : "Negative", - "outputs" : ["Negative_2108_0"] - }, - { - "inputs" : ["Multiply_2124"], - "name" : "Negative_2125", - "op" : "Negative", - "outputs" : ["Negative_2125_0"] - }, - { - "inputs" : [ "Negative_2094", "Divide_381" ], - "name" : "Multiply_2095", - "op" : "Multiply", - "outputs" : ["Multiply_2095_0"] - }, - { - "inputs" : [ "Broadcast_2090", "Divide_2088" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2091", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2091_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2108", "Divide_373" ], - "name" : "Multiply_2109", - "op" : "Multiply", - "outputs" : ["Multiply_2109_0"] - }, - { - "inputs" : [ "Multiply_2095", "Add_380" ], - "name" : "Divide_2096", - "op" : "Divide", - "outputs" : ["Divide_2096_0"] - }, - { - "inputs" : ["ReplaceSlice_2091"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2100", - "op" : "Slice", - "outputs" : ["Slice_2100_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2109", "Add_372" ], - "name" : "Divide_2110", - "op" : "Divide", - "outputs" : ["Divide_2110_0"] - }, - { - "inputs" : [ "Divide_2096", "Exp_379" ], - "name" : "Multiply_2098", - "op" : "Multiply", - "outputs" : ["Multiply_2098_0"] - }, - { - "inputs" : [ "Divide_2110", "Exp_371" ], - "name" : "Multiply_2112", - "op" : "Multiply", - "outputs" : ["Multiply_2112_0"] - }, - { - "inputs" : ["Multiply_2098"], - "name" : "Negative_2099", - "op" : "Negative", - "outputs" : ["Negative_2099_0"] - }, - { - "inputs" : ["Multiply_2112"], - "name" : "Negative_2113", - "op" : "Negative", - "outputs" : ["Negative_2113_0"] - }, - { - "inputs" : [ "Slice_2100", "Negative_2099" ], - "name" : "Add_2101", - "op" : "Add", - "outputs" : ["Add_2101_0"] - }, - { - "inputs" : [ "ReplaceSlice_2091", "Add_2101" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2102", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2102_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2102"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2114", - "op" : "Slice", - "outputs" : ["Slice_2114_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2114", "Negative_2113" ], - "name" : "Add_2115", - "op" : "Add", - "outputs" : ["Add_2115_0"] - }, - { - "inputs" : [ "ReplaceSlice_2102", "Add_2115" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2116", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2116_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2116"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2126", - "op" : "Slice", - "outputs" : ["Slice_2126_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2126", "Negative_2125" ], - "name" : "Add_2127", - "op" : "Add", - "outputs" : ["Add_2127_0"] - }, - { - "inputs" : [ "ReplaceSlice_2116", "Add_2127" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2128", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2128_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2128"], - "name" : "Sum_2129", - "op" : "Sum", - "outputs" : ["Sum_2129_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2128"], - "name" : "Reshape_2131", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2131_0"] - }, - { - "inputs" : [ "Reshape_2134", "ReplaceSlice_2128" ], - "name" : "Dot_2135", - "op" : "Dot", - "outputs" : ["Dot_2135_0"] - }, - { - "inputs" : ["ReplaceSlice_2128"], - "name" : "Sum_2593", - "op" : "Sum", - "outputs" : ["Sum_2593_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2128"], - "name" : "Reshape_2595", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2595_0"] - }, - { - "inputs" : [ "Reshape_2598", "ReplaceSlice_2128" ], - "name" : "Dot_2599", - "op" : "Dot", - "outputs" : ["Dot_2599_0"] - }, - { - "inputs" : [ "Add_2069", "Sum_2129" ], - "name" : "Add_2130", - "op" : "Add", - "outputs" : ["Add_2130_0"] - }, - { - "inputs" : [ "Reshape_355", "Reshape_2131" ], - "name" : "Dot_2132", - "op" : "Dot", - "outputs" : ["Dot_2132_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2135"], - "name" : "Reshape_2136", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2136_0"] - }, - { - "inputs" : [ "Reshape_113", "Reshape_2595" ], - "name" : "Dot_2596", - "op" : "Dot", - "outputs" : ["Dot_2596_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2599"], - "name" : "Reshape_2600", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2600_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2132"], - "name" : "Reshape_2133", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2133_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2136"], - "name" : "Reshape_2137", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2137_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2596"], - "name" : "Reshape_2597", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2597_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2600"], - "name" : "Reshape_2601", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2601_0"] - }, - { - "inputs" : [ "Reshape_2133", "Tanh_353" ], - "name" : "Multiply_2139", - "op" : "Multiply", - "outputs" : ["Multiply_2139_0"] - }, - { - "inputs" : [ "Divide_333", "Reshape_2133" ], - "name" : "Multiply_2140", - "op" : "Multiply", - "outputs" : ["Multiply_2140_0"] - }, - { - "inputs" : [ "Add_2077", "Reshape_2137" ], - "name" : "Add_2138", - "op" : "Add", - "outputs" : ["Add_2138_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2597"], - "name" : "Reshape_2603", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2603_0"] - }, - { - "inputs" : ["Multiply_2139"], - "name" : "Negative_2181", - "op" : "Negative", - "outputs" : ["Negative_2181_0"] - }, - { - "inputs" : [ "Multiply_2140", "Multiply_2142" ], - "name" : "Divide_2143", - "op" : "Divide", - "outputs" : ["Divide_2143_0"] - }, - { - "inputs" : [ "Negative_2181", "Divide_333" ], - "name" : "Multiply_2182", - "op" : "Multiply", - "outputs" : ["Multiply_2182_0"] - }, - { - "inputs" : [ "Multiply_2105", "Divide_2143" ], - "name" : "Add_2144", - "op" : "Add", - "outputs" : ["Add_2144_0"] - }, - { - "inputs" : [ "Multiply_2182", "Add_332" ], - "name" : "Divide_2183", - "op" : "Divide", - "outputs" : ["Divide_2183_0"] - }, - { - "inputs" : [ "Add_2144", "Tanh_350" ], - "name" : "Multiply_2145", - "op" : "Multiply", - "outputs" : ["Multiply_2145_0"] - }, - { - "inputs" : [ "Divide_348", "Add_2144" ], - "name" : "Multiply_2146", - "op" : "Multiply", - "outputs" : ["Multiply_2146_0"] - }, - { - "inputs" : [ "Add_2144", "Add_319" ], - "name" : "Multiply_2165", - "op" : "Multiply", - "outputs" : ["Multiply_2165_0"] - }, - { - "inputs" : [ "Divide_340", "Add_2144" ], - "name" : "Multiply_2166", - "op" : "Multiply", - "outputs" : ["Multiply_2166_0"] - }, - { - "inputs" : [ "Divide_2183", "Exp_331" ], - "name" : "Multiply_2185", - "op" : "Multiply", - "outputs" : ["Multiply_2185_0"] - }, - { - "inputs" : ["Multiply_2145"], - "name" : "Negative_2155", - "op" : "Negative", - "outputs" : ["Negative_2155_0"] - }, - { - "inputs" : [ "Multiply_2146", "Multiply_2148" ], - "name" : "Divide_2149", - "op" : "Divide", - "outputs" : ["Divide_2149_0"] - }, - { - "inputs" : ["Multiply_2165"], - "name" : "Negative_2169", - "op" : "Negative", - "outputs" : ["Negative_2169_0"] - }, - { - "inputs" : ["Multiply_2185"], - "name" : "Negative_2186", - "op" : "Negative", - "outputs" : ["Negative_2186_0"] - }, - { - "inputs" : [ "Negative_2155", "Divide_348" ], - "name" : "Multiply_2156", - "op" : "Multiply", - "outputs" : ["Multiply_2156_0"] - }, - { - "inputs" : [ "Broadcast_2151", "Divide_2149" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2152", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2152_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2169", "Divide_340" ], - "name" : "Multiply_2170", - "op" : "Multiply", - "outputs" : ["Multiply_2170_0"] - }, - { - "inputs" : [ "Multiply_2156", "Add_347" ], - "name" : "Divide_2157", - "op" : "Divide", - "outputs" : ["Divide_2157_0"] - }, - { - "inputs" : ["ReplaceSlice_2152"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2161", - "op" : "Slice", - "outputs" : ["Slice_2161_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2170", "Add_339" ], - "name" : "Divide_2171", - "op" : "Divide", - "outputs" : ["Divide_2171_0"] - }, - { - "inputs" : [ "Divide_2157", "Exp_346" ], - "name" : "Multiply_2159", - "op" : "Multiply", - "outputs" : ["Multiply_2159_0"] - }, - { - "inputs" : [ "Divide_2171", "Exp_338" ], - "name" : "Multiply_2173", - "op" : "Multiply", - "outputs" : ["Multiply_2173_0"] - }, - { - "inputs" : ["Multiply_2159"], - "name" : "Negative_2160", - "op" : "Negative", - "outputs" : ["Negative_2160_0"] - }, - { - "inputs" : ["Multiply_2173"], - "name" : "Negative_2174", - "op" : "Negative", - "outputs" : ["Negative_2174_0"] - }, - { - "inputs" : [ "Slice_2161", "Negative_2160" ], - "name" : "Add_2162", - "op" : "Add", - "outputs" : ["Add_2162_0"] - }, - { - "inputs" : [ "ReplaceSlice_2152", "Add_2162" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2163", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2163_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2163"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2175", - "op" : "Slice", - "outputs" : ["Slice_2175_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2175", "Negative_2174" ], - "name" : "Add_2176", - "op" : "Add", - "outputs" : ["Add_2176_0"] - }, - { - "inputs" : [ "ReplaceSlice_2163", "Add_2176" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2177", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2177_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2177"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2187", - "op" : "Slice", - "outputs" : ["Slice_2187_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2187", "Negative_2186" ], - "name" : "Add_2188", - "op" : "Add", - "outputs" : ["Add_2188_0"] - }, - { - "inputs" : [ "ReplaceSlice_2177", "Add_2188" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2189", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2189_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2189"], - "name" : "Sum_2190", - "op" : "Sum", - "outputs" : ["Sum_2190_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2189"], - "name" : "Reshape_2192", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2192_0"] - }, - { - "inputs" : [ "Reshape_2195", "ReplaceSlice_2189" ], - "name" : "Dot_2196", - "op" : "Dot", - "outputs" : ["Dot_2196_0"] - }, - { - "inputs" : ["ReplaceSlice_2189"], - "name" : "Sum_2578", - "op" : "Sum", - "outputs" : ["Sum_2578_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2189"], - "name" : "Reshape_2580", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2580_0"] - }, - { - "inputs" : [ "Reshape_2583", "ReplaceSlice_2189" ], - "name" : "Dot_2584", - "op" : "Dot", - "outputs" : ["Dot_2584_0"] - }, - { - "inputs" : [ "Add_2130", "Sum_2190" ], - "name" : "Add_2191", - "op" : "Add", - "outputs" : ["Add_2191_0"] - }, - { - "inputs" : [ "Reshape_322", "Reshape_2192" ], - "name" : "Dot_2193", - "op" : "Dot", - "outputs" : ["Dot_2193_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2196"], - "name" : "Reshape_2197", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2197_0"] - }, - { - "inputs" : [ "Reshape_119", "Reshape_2580" ], - "name" : "Dot_2581", - "op" : "Dot", - "outputs" : ["Dot_2581_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2584"], - "name" : "Reshape_2585", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2585_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2193"], - "name" : "Reshape_2194", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2194_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2197"], - "name" : "Reshape_2198", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2198_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2581"], - "name" : "Reshape_2582", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2582_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2585"], - "name" : "Reshape_2586", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2586_0"] - }, - { - "inputs" : [ "Reshape_2194", "Tanh_320" ], - "name" : "Multiply_2200", - "op" : "Multiply", - "outputs" : ["Multiply_2200_0"] - }, - { - "inputs" : [ "Divide_300", "Reshape_2194" ], - "name" : "Multiply_2201", - "op" : "Multiply", - "outputs" : ["Multiply_2201_0"] - }, - { - "inputs" : [ "Add_2138", "Reshape_2198" ], - "name" : "Add_2199", - "op" : "Add", - "outputs" : ["Add_2199_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2582"], - "name" : "Reshape_2588", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2588_0"] - }, - { - "inputs" : ["Multiply_2200"], - "name" : "Negative_2242", - "op" : "Negative", - "outputs" : ["Negative_2242_0"] - }, - { - "inputs" : [ "Multiply_2201", "Multiply_2203" ], - "name" : "Divide_2204", - "op" : "Divide", - "outputs" : ["Divide_2204_0"] - }, - { - "inputs" : [ "Negative_2242", "Divide_300" ], - "name" : "Multiply_2243", - "op" : "Multiply", - "outputs" : ["Multiply_2243_0"] - }, - { - "inputs" : [ "Multiply_2166", "Divide_2204" ], - "name" : "Add_2205", - "op" : "Add", - "outputs" : ["Add_2205_0"] - }, - { - "inputs" : [ "Multiply_2243", "Add_299" ], - "name" : "Divide_2244", - "op" : "Divide", - "outputs" : ["Divide_2244_0"] - }, - { - "inputs" : [ "Add_2205", "Tanh_317" ], - "name" : "Multiply_2206", - "op" : "Multiply", - "outputs" : ["Multiply_2206_0"] - }, - { - "inputs" : [ "Divide_315", "Add_2205" ], - "name" : "Multiply_2207", - "op" : "Multiply", - "outputs" : ["Multiply_2207_0"] - }, - { - "inputs" : [ "Add_2205", "Add_286" ], - "name" : "Multiply_2226", - "op" : "Multiply", - "outputs" : ["Multiply_2226_0"] - }, - { - "inputs" : [ "Divide_307", "Add_2205" ], - "name" : "Multiply_2227", - "op" : "Multiply", - "outputs" : ["Multiply_2227_0"] - }, - { - "inputs" : [ "Divide_2244", "Exp_298" ], - "name" : "Multiply_2246", - "op" : "Multiply", - "outputs" : ["Multiply_2246_0"] - }, - { - "inputs" : ["Multiply_2206"], - "name" : "Negative_2216", - "op" : "Negative", - "outputs" : ["Negative_2216_0"] - }, - { - "inputs" : [ "Multiply_2207", "Multiply_2209" ], - "name" : "Divide_2210", - "op" : "Divide", - "outputs" : ["Divide_2210_0"] - }, - { - "inputs" : ["Multiply_2226"], - "name" : "Negative_2230", - "op" : "Negative", - "outputs" : ["Negative_2230_0"] - }, - { - "inputs" : ["Multiply_2246"], - "name" : "Negative_2247", - "op" : "Negative", - "outputs" : ["Negative_2247_0"] - }, - { - "inputs" : [ "Negative_2216", "Divide_315" ], - "name" : "Multiply_2217", - "op" : "Multiply", - "outputs" : ["Multiply_2217_0"] - }, - { - "inputs" : [ "Broadcast_2212", "Divide_2210" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2213", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2213_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2230", "Divide_307" ], - "name" : "Multiply_2231", - "op" : "Multiply", - "outputs" : ["Multiply_2231_0"] - }, - { - "inputs" : [ "Multiply_2217", "Add_314" ], - "name" : "Divide_2218", - "op" : "Divide", - "outputs" : ["Divide_2218_0"] - }, - { - "inputs" : ["ReplaceSlice_2213"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2222", - "op" : "Slice", - "outputs" : ["Slice_2222_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2231", "Add_306" ], - "name" : "Divide_2232", - "op" : "Divide", - "outputs" : ["Divide_2232_0"] - }, - { - "inputs" : [ "Divide_2218", "Exp_313" ], - "name" : "Multiply_2220", - "op" : "Multiply", - "outputs" : ["Multiply_2220_0"] - }, - { - "inputs" : [ "Divide_2232", "Exp_305" ], - "name" : "Multiply_2234", - "op" : "Multiply", - "outputs" : ["Multiply_2234_0"] - }, - { - "inputs" : ["Multiply_2220"], - "name" : "Negative_2221", - "op" : "Negative", - "outputs" : ["Negative_2221_0"] - }, - { - "inputs" : ["Multiply_2234"], - "name" : "Negative_2235", - "op" : "Negative", - "outputs" : ["Negative_2235_0"] - }, - { - "inputs" : [ "Slice_2222", "Negative_2221" ], - "name" : "Add_2223", - "op" : "Add", - "outputs" : ["Add_2223_0"] - }, - { - "inputs" : [ "ReplaceSlice_2213", "Add_2223" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2224", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2224_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2224"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2236", - "op" : "Slice", - "outputs" : ["Slice_2236_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2236", "Negative_2235" ], - "name" : "Add_2237", - "op" : "Add", - "outputs" : ["Add_2237_0"] - }, - { - "inputs" : [ "ReplaceSlice_2224", "Add_2237" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2238", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2238_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2238"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2248", - "op" : "Slice", - "outputs" : ["Slice_2248_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2248", "Negative_2247" ], - "name" : "Add_2249", - "op" : "Add", - "outputs" : ["Add_2249_0"] - }, - { - "inputs" : [ "ReplaceSlice_2238", "Add_2249" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2250", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2250_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2250"], - "name" : "Sum_2251", - "op" : "Sum", - "outputs" : ["Sum_2251_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2250"], - "name" : "Reshape_2253", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2253_0"] - }, - { - "inputs" : [ "Reshape_2256", "ReplaceSlice_2250" ], - "name" : "Dot_2257", - "op" : "Dot", - "outputs" : ["Dot_2257_0"] - }, - { - "inputs" : ["ReplaceSlice_2250"], - "name" : "Sum_2563", - "op" : "Sum", - "outputs" : ["Sum_2563_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2250"], - "name" : "Reshape_2565", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2565_0"] - }, - { - "inputs" : [ "Reshape_2568", "ReplaceSlice_2250" ], - "name" : "Dot_2569", - "op" : "Dot", - "outputs" : ["Dot_2569_0"] - }, - { - "inputs" : [ "Add_2191", "Sum_2251" ], - "name" : "Add_2252", - "op" : "Add", - "outputs" : ["Add_2252_0"] - }, - { - "inputs" : [ "Reshape_289", "Reshape_2253" ], - "name" : "Dot_2254", - "op" : "Dot", - "outputs" : ["Dot_2254_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2257"], - "name" : "Reshape_2258", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2258_0"] - }, - { - "inputs" : [ "Reshape_125", "Reshape_2565" ], - "name" : "Dot_2566", - "op" : "Dot", - "outputs" : ["Dot_2566_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2569"], - "name" : "Reshape_2570", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2570_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2254"], - "name" : "Reshape_2255", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2255_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2258"], - "name" : "Reshape_2259", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2259_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2566"], - "name" : "Reshape_2567", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2567_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2570"], - "name" : "Reshape_2571", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2571_0"] - }, - { - "inputs" : [ "Reshape_2255", "Tanh_287" ], - "name" : "Multiply_2261", - "op" : "Multiply", - "outputs" : ["Multiply_2261_0"] - }, - { - "inputs" : [ "Divide_267", "Reshape_2255" ], - "name" : "Multiply_2262", - "op" : "Multiply", - "outputs" : ["Multiply_2262_0"] - }, - { - "inputs" : [ "Add_2199", "Reshape_2259" ], - "name" : "Add_2260", - "op" : "Add", - "outputs" : ["Add_2260_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2567"], - "name" : "Reshape_2573", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2573_0"] - }, - { - "inputs" : ["Multiply_2261"], - "name" : "Negative_2303", - "op" : "Negative", - "outputs" : ["Negative_2303_0"] - }, - { - "inputs" : [ "Multiply_2262", "Multiply_2264" ], - "name" : "Divide_2265", - "op" : "Divide", - "outputs" : ["Divide_2265_0"] - }, - { - "inputs" : [ "Negative_2303", "Divide_267" ], - "name" : "Multiply_2304", - "op" : "Multiply", - "outputs" : ["Multiply_2304_0"] - }, - { - "inputs" : [ "Multiply_2227", "Divide_2265" ], - "name" : "Add_2266", - "op" : "Add", - "outputs" : ["Add_2266_0"] - }, - { - "inputs" : [ "Multiply_2304", "Add_266" ], - "name" : "Divide_2305", - "op" : "Divide", - "outputs" : ["Divide_2305_0"] - }, - { - "inputs" : [ "Add_2266", "Tanh_284" ], - "name" : "Multiply_2267", - "op" : "Multiply", - "outputs" : ["Multiply_2267_0"] - }, - { - "inputs" : [ "Divide_282", "Add_2266" ], - "name" : "Multiply_2268", - "op" : "Multiply", - "outputs" : ["Multiply_2268_0"] - }, - { - "inputs" : [ "Add_2266", "Add_253" ], - "name" : "Multiply_2287", - "op" : "Multiply", - "outputs" : ["Multiply_2287_0"] - }, - { - "inputs" : [ "Divide_274", "Add_2266" ], - "name" : "Multiply_2288", - "op" : "Multiply", - "outputs" : ["Multiply_2288_0"] - }, - { - "inputs" : [ "Divide_2305", "Exp_265" ], - "name" : "Multiply_2307", - "op" : "Multiply", - "outputs" : ["Multiply_2307_0"] - }, - { - "inputs" : ["Multiply_2267"], - "name" : "Negative_2277", - "op" : "Negative", - "outputs" : ["Negative_2277_0"] - }, - { - "inputs" : [ "Multiply_2268", "Multiply_2270" ], - "name" : "Divide_2271", - "op" : "Divide", - "outputs" : ["Divide_2271_0"] - }, - { - "inputs" : ["Multiply_2287"], - "name" : "Negative_2291", - "op" : "Negative", - "outputs" : ["Negative_2291_0"] - }, - { - "inputs" : ["Multiply_2307"], - "name" : "Negative_2308", - "op" : "Negative", - "outputs" : ["Negative_2308_0"] - }, - { - "inputs" : [ "Negative_2277", "Divide_282" ], - "name" : "Multiply_2278", - "op" : "Multiply", - "outputs" : ["Multiply_2278_0"] - }, - { - "inputs" : [ "Broadcast_2273", "Divide_2271" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2274", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2274_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2291", "Divide_274" ], - "name" : "Multiply_2292", - "op" : "Multiply", - "outputs" : ["Multiply_2292_0"] - }, - { - "inputs" : [ "Multiply_2278", "Add_281" ], - "name" : "Divide_2279", - "op" : "Divide", - "outputs" : ["Divide_2279_0"] - }, - { - "inputs" : ["ReplaceSlice_2274"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2283", - "op" : "Slice", - "outputs" : ["Slice_2283_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2292", "Add_273" ], - "name" : "Divide_2293", - "op" : "Divide", - "outputs" : ["Divide_2293_0"] - }, - { - "inputs" : [ "Divide_2279", "Exp_280" ], - "name" : "Multiply_2281", - "op" : "Multiply", - "outputs" : ["Multiply_2281_0"] - }, - { - "inputs" : [ "Divide_2293", "Exp_272" ], - "name" : "Multiply_2295", - "op" : "Multiply", - "outputs" : ["Multiply_2295_0"] - }, - { - "inputs" : ["Multiply_2281"], - "name" : "Negative_2282", - "op" : "Negative", - "outputs" : ["Negative_2282_0"] - }, - { - "inputs" : ["Multiply_2295"], - "name" : "Negative_2296", - "op" : "Negative", - "outputs" : ["Negative_2296_0"] - }, - { - "inputs" : [ "Slice_2283", "Negative_2282" ], - "name" : "Add_2284", - "op" : "Add", - "outputs" : ["Add_2284_0"] - }, - { - "inputs" : [ "ReplaceSlice_2274", "Add_2284" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2285", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2285_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2285"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2297", - "op" : "Slice", - "outputs" : ["Slice_2297_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2297", "Negative_2296" ], - "name" : "Add_2298", - "op" : "Add", - "outputs" : ["Add_2298_0"] - }, - { - "inputs" : [ "ReplaceSlice_2285", "Add_2298" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2299", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2299_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2299"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2309", - "op" : "Slice", - "outputs" : ["Slice_2309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2309", "Negative_2308" ], - "name" : "Add_2310", - "op" : "Add", - "outputs" : ["Add_2310_0"] - }, - { - "inputs" : [ "ReplaceSlice_2299", "Add_2310" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2311", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2311_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2311"], - "name" : "Sum_2312", - "op" : "Sum", - "outputs" : ["Sum_2312_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2311"], - "name" : "Reshape_2314", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2314_0"] - }, - { - "inputs" : [ "Reshape_2317", "ReplaceSlice_2311" ], - "name" : "Dot_2318", - "op" : "Dot", - "outputs" : ["Dot_2318_0"] - }, - { - "inputs" : ["ReplaceSlice_2311"], - "name" : "Sum_2548", - "op" : "Sum", - "outputs" : ["Sum_2548_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2311"], - "name" : "Reshape_2550", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2550_0"] - }, - { - "inputs" : [ "Reshape_2553", "ReplaceSlice_2311" ], - "name" : "Dot_2554", - "op" : "Dot", - "outputs" : ["Dot_2554_0"] - }, - { - "inputs" : [ "Add_2252", "Sum_2312" ], - "name" : "Add_2313", - "op" : "Add", - "outputs" : ["Add_2313_0"] - }, - { - "inputs" : [ "Reshape_256", "Reshape_2314" ], - "name" : "Dot_2315", - "op" : "Dot", - "outputs" : ["Dot_2315_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2318"], - "name" : "Reshape_2319", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2319_0"] - }, - { - "inputs" : [ "Reshape_131", "Reshape_2550" ], - "name" : "Dot_2551", - "op" : "Dot", - "outputs" : ["Dot_2551_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2554"], - "name" : "Reshape_2555", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2555_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2315"], - "name" : "Reshape_2316", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2316_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2319"], - "name" : "Reshape_2320", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2320_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2551"], - "name" : "Reshape_2552", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2552_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2555"], - "name" : "Reshape_2556", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2556_0"] - }, - { - "inputs" : [ "Reshape_2316", "Tanh_254" ], - "name" : "Multiply_2322", - "op" : "Multiply", - "outputs" : ["Multiply_2322_0"] - }, - { - "inputs" : [ "Divide_234", "Reshape_2316" ], - "name" : "Multiply_2323", - "op" : "Multiply", - "outputs" : ["Multiply_2323_0"] - }, - { - "inputs" : [ "Add_2260", "Reshape_2320" ], - "name" : "Add_2321", - "op" : "Add", - "outputs" : ["Add_2321_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2552"], - "name" : "Reshape_2558", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2558_0"] - }, - { - "inputs" : ["Multiply_2322"], - "name" : "Negative_2364", - "op" : "Negative", - "outputs" : ["Negative_2364_0"] - }, - { - "inputs" : [ "Multiply_2323", "Multiply_2325" ], - "name" : "Divide_2326", - "op" : "Divide", - "outputs" : ["Divide_2326_0"] - }, - { - "inputs" : [ "Negative_2364", "Divide_234" ], - "name" : "Multiply_2365", - "op" : "Multiply", - "outputs" : ["Multiply_2365_0"] - }, - { - "inputs" : [ "Multiply_2288", "Divide_2326" ], - "name" : "Add_2327", - "op" : "Add", - "outputs" : ["Add_2327_0"] - }, - { - "inputs" : [ "Multiply_2365", "Add_233" ], - "name" : "Divide_2366", - "op" : "Divide", - "outputs" : ["Divide_2366_0"] - }, - { - "inputs" : [ "Add_2327", "Tanh_251" ], - "name" : "Multiply_2328", - "op" : "Multiply", - "outputs" : ["Multiply_2328_0"] - }, - { - "inputs" : [ "Divide_249", "Add_2327" ], - "name" : "Multiply_2329", - "op" : "Multiply", - "outputs" : ["Multiply_2329_0"] - }, - { - "inputs" : [ "Add_2327", "Add_220" ], - "name" : "Multiply_2348", - "op" : "Multiply", - "outputs" : ["Multiply_2348_0"] - }, - { - "inputs" : [ "Divide_241", "Add_2327" ], - "name" : "Multiply_2349", - "op" : "Multiply", - "outputs" : ["Multiply_2349_0"] - }, - { - "inputs" : [ "Divide_2366", "Exp_232" ], - "name" : "Multiply_2368", - "op" : "Multiply", - "outputs" : ["Multiply_2368_0"] - }, - { - "inputs" : ["Multiply_2328"], - "name" : "Negative_2338", - "op" : "Negative", - "outputs" : ["Negative_2338_0"] - }, - { - "inputs" : [ "Multiply_2329", "Multiply_2331" ], - "name" : "Divide_2332", - "op" : "Divide", - "outputs" : ["Divide_2332_0"] - }, - { - "inputs" : ["Multiply_2348"], - "name" : "Negative_2352", - "op" : "Negative", - "outputs" : ["Negative_2352_0"] - }, - { - "inputs" : ["Multiply_2368"], - "name" : "Negative_2369", - "op" : "Negative", - "outputs" : ["Negative_2369_0"] - }, - { - "inputs" : [ "Negative_2338", "Divide_249" ], - "name" : "Multiply_2339", - "op" : "Multiply", - "outputs" : ["Multiply_2339_0"] - }, - { - "inputs" : [ "Broadcast_2334", "Divide_2332" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2335", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2335_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2352", "Divide_241" ], - "name" : "Multiply_2353", - "op" : "Multiply", - "outputs" : ["Multiply_2353_0"] - }, - { - "inputs" : [ "Multiply_2339", "Add_248" ], - "name" : "Divide_2340", - "op" : "Divide", - "outputs" : ["Divide_2340_0"] - }, - { - "inputs" : ["ReplaceSlice_2335"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2344", - "op" : "Slice", - "outputs" : ["Slice_2344_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2353", "Add_240" ], - "name" : "Divide_2354", - "op" : "Divide", - "outputs" : ["Divide_2354_0"] - }, - { - "inputs" : [ "Divide_2340", "Exp_247" ], - "name" : "Multiply_2342", - "op" : "Multiply", - "outputs" : ["Multiply_2342_0"] - }, - { - "inputs" : [ "Divide_2354", "Exp_239" ], - "name" : "Multiply_2356", - "op" : "Multiply", - "outputs" : ["Multiply_2356_0"] - }, - { - "inputs" : ["Multiply_2342"], - "name" : "Negative_2343", - "op" : "Negative", - "outputs" : ["Negative_2343_0"] - }, - { - "inputs" : ["Multiply_2356"], - "name" : "Negative_2357", - "op" : "Negative", - "outputs" : ["Negative_2357_0"] - }, - { - "inputs" : [ "Slice_2344", "Negative_2343" ], - "name" : "Add_2345", - "op" : "Add", - "outputs" : ["Add_2345_0"] - }, - { - "inputs" : [ "ReplaceSlice_2335", "Add_2345" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2346", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2346_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2346"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2358", - "op" : "Slice", - "outputs" : ["Slice_2358_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2358", "Negative_2357" ], - "name" : "Add_2359", - "op" : "Add", - "outputs" : ["Add_2359_0"] - }, - { - "inputs" : [ "ReplaceSlice_2346", "Add_2359" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2360", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2360_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2360"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2370", - "op" : "Slice", - "outputs" : ["Slice_2370_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2370", "Negative_2369" ], - "name" : "Add_2371", - "op" : "Add", - "outputs" : ["Add_2371_0"] - }, - { - "inputs" : [ "ReplaceSlice_2360", "Add_2371" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2372", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2372_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2372"], - "name" : "Sum_2373", - "op" : "Sum", - "outputs" : ["Sum_2373_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2372"], - "name" : "Reshape_2375", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2375_0"] - }, - { - "inputs" : [ "Reshape_2378", "ReplaceSlice_2372" ], - "name" : "Dot_2379", - "op" : "Dot", - "outputs" : ["Dot_2379_0"] - }, - { - "inputs" : ["ReplaceSlice_2372"], - "name" : "Sum_2533", - "op" : "Sum", - "outputs" : ["Sum_2533_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2372"], - "name" : "Reshape_2535", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2535_0"] - }, - { - "inputs" : [ "Reshape_2538", "ReplaceSlice_2372" ], - "name" : "Dot_2539", - "op" : "Dot", - "outputs" : ["Dot_2539_0"] - }, - { - "inputs" : [ "Add_2313", "Sum_2373" ], - "name" : "Add_2374", - "op" : "Add", - "outputs" : ["Add_2374_0"] - }, - { - "inputs" : [ "Reshape_223", "Reshape_2375" ], - "name" : "Dot_2376", - "op" : "Dot", - "outputs" : ["Dot_2376_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2379"], - "name" : "Reshape_2380", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2380_0"] - }, - { - "inputs" : [ "Reshape_137", "Reshape_2535" ], - "name" : "Dot_2536", - "op" : "Dot", - "outputs" : ["Dot_2536_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2539"], - "name" : "Reshape_2540", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2540_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2376"], - "name" : "Reshape_2377", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2377_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2380"], - "name" : "Reshape_2381", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2381_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2536"], - "name" : "Reshape_2537", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2537_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2540"], - "name" : "Reshape_2541", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2541_0"] - }, - { - "inputs" : [ "Reshape_2377", "Tanh_221" ], - "name" : "Multiply_2383", - "op" : "Multiply", - "outputs" : ["Multiply_2383_0"] - }, - { - "inputs" : [ "Divide_201", "Reshape_2377" ], - "name" : "Multiply_2384", - "op" : "Multiply", - "outputs" : ["Multiply_2384_0"] - }, - { - "inputs" : [ "Add_2321", "Reshape_2381" ], - "name" : "Add_2382", - "op" : "Add", - "outputs" : ["Add_2382_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2537"], - "name" : "Reshape_2543", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2543_0"] - }, - { - "inputs" : ["Multiply_2383"], - "name" : "Negative_2425", - "op" : "Negative", - "outputs" : ["Negative_2425_0"] - }, - { - "inputs" : [ "Multiply_2384", "Multiply_2386" ], - "name" : "Divide_2387", - "op" : "Divide", - "outputs" : ["Divide_2387_0"] - }, - { - "inputs" : [ "Negative_2425", "Divide_201" ], - "name" : "Multiply_2426", - "op" : "Multiply", - "outputs" : ["Multiply_2426_0"] - }, - { - "inputs" : [ "Multiply_2349", "Divide_2387" ], - "name" : "Add_2388", - "op" : "Add", - "outputs" : ["Add_2388_0"] - }, - { - "inputs" : [ "Multiply_2426", "Add_200" ], - "name" : "Divide_2427", - "op" : "Divide", - "outputs" : ["Divide_2427_0"] - }, - { - "inputs" : [ "Add_2388", "Tanh_218" ], - "name" : "Multiply_2389", - "op" : "Multiply", - "outputs" : ["Multiply_2389_0"] - }, - { - "inputs" : [ "Divide_216", "Add_2388" ], - "name" : "Multiply_2390", - "op" : "Multiply", - "outputs" : ["Multiply_2390_0"] - }, - { - "inputs" : [ "Add_2388", "Add_187" ], - "name" : "Multiply_2409", - "op" : "Multiply", - "outputs" : ["Multiply_2409_0"] - }, - { - "inputs" : [ "Divide_208", "Add_2388" ], - "name" : "Multiply_2410", - "op" : "Multiply", - "outputs" : ["Multiply_2410_0"] - }, - { - "inputs" : [ "Divide_2427", "Exp_199" ], - "name" : "Multiply_2429", - "op" : "Multiply", - "outputs" : ["Multiply_2429_0"] - }, - { - "inputs" : ["Multiply_2389"], - "name" : "Negative_2399", - "op" : "Negative", - "outputs" : ["Negative_2399_0"] - }, - { - "inputs" : [ "Multiply_2390", "Multiply_2392" ], - "name" : "Divide_2393", - "op" : "Divide", - "outputs" : ["Divide_2393_0"] - }, - { - "inputs" : ["Multiply_2409"], - "name" : "Negative_2413", - "op" : "Negative", - "outputs" : ["Negative_2413_0"] - }, - { - "inputs" : ["Multiply_2429"], - "name" : "Negative_2430", - "op" : "Negative", - "outputs" : ["Negative_2430_0"] - }, - { - "inputs" : [ "Negative_2399", "Divide_216" ], - "name" : "Multiply_2400", - "op" : "Multiply", - "outputs" : ["Multiply_2400_0"] - }, - { - "inputs" : [ "Broadcast_2395", "Divide_2393" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2396", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2396_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2413", "Divide_208" ], - "name" : "Multiply_2414", - "op" : "Multiply", - "outputs" : ["Multiply_2414_0"] - }, - { - "inputs" : [ "Multiply_2400", "Add_215" ], - "name" : "Divide_2401", - "op" : "Divide", - "outputs" : ["Divide_2401_0"] - }, - { - "inputs" : ["ReplaceSlice_2396"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2405", - "op" : "Slice", - "outputs" : ["Slice_2405_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2414", "Add_207" ], - "name" : "Divide_2415", - "op" : "Divide", - "outputs" : ["Divide_2415_0"] - }, - { - "inputs" : [ "Divide_2401", "Exp_214" ], - "name" : "Multiply_2403", - "op" : "Multiply", - "outputs" : ["Multiply_2403_0"] - }, - { - "inputs" : [ "Divide_2415", "Exp_206" ], - "name" : "Multiply_2417", - "op" : "Multiply", - "outputs" : ["Multiply_2417_0"] - }, - { - "inputs" : ["Multiply_2403"], - "name" : "Negative_2404", - "op" : "Negative", - "outputs" : ["Negative_2404_0"] - }, - { - "inputs" : ["Multiply_2417"], - "name" : "Negative_2418", - "op" : "Negative", - "outputs" : ["Negative_2418_0"] - }, - { - "inputs" : [ "Slice_2405", "Negative_2404" ], - "name" : "Add_2406", - "op" : "Add", - "outputs" : ["Add_2406_0"] - }, - { - "inputs" : [ "ReplaceSlice_2396", "Add_2406" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2407", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2407_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2407"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2419", - "op" : "Slice", - "outputs" : ["Slice_2419_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2419", "Negative_2418" ], - "name" : "Add_2420", - "op" : "Add", - "outputs" : ["Add_2420_0"] - }, - { - "inputs" : [ "ReplaceSlice_2407", "Add_2420" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2421", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2421_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2421"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2431", - "op" : "Slice", - "outputs" : ["Slice_2431_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2431", "Negative_2430" ], - "name" : "Add_2432", - "op" : "Add", - "outputs" : ["Add_2432_0"] - }, - { - "inputs" : [ "ReplaceSlice_2421", "Add_2432" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2433", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2433_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2433"], - "name" : "Sum_2434", - "op" : "Sum", - "outputs" : ["Sum_2434_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2433"], - "name" : "Reshape_2436", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2436_0"] - }, - { - "inputs" : [ "Reshape_2439", "ReplaceSlice_2433" ], - "name" : "Dot_2440", - "op" : "Dot", - "outputs" : ["Dot_2440_0"] - }, - { - "inputs" : ["ReplaceSlice_2433"], - "name" : "Sum_2518", - "op" : "Sum", - "outputs" : ["Sum_2518_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2433"], - "name" : "Reshape_2520", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2520_0"] - }, - { - "inputs" : [ "Reshape_2523", "ReplaceSlice_2433" ], - "name" : "Dot_2524", - "op" : "Dot", - "outputs" : ["Dot_2524_0"] - }, - { - "inputs" : [ "Add_2374", "Sum_2434" ], - "name" : "Add_2435", - "op" : "Add", - "outputs" : ["Add_2435_0"] - }, - { - "inputs" : [ "Reshape_190", "Reshape_2436" ], - "name" : "Dot_2437", - "op" : "Dot", - "outputs" : ["Dot_2437_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2440"], - "name" : "Reshape_2441", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2441_0"] - }, - { - "inputs" : [ "Reshape_143", "Reshape_2520" ], - "name" : "Dot_2521", - "op" : "Dot", - "outputs" : ["Dot_2521_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2524"], - "name" : "Reshape_2525", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2525_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2437"], - "name" : "Reshape_2438", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2438_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2441"], - "name" : "Reshape_2442", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2442_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2521"], - "name" : "Reshape_2522", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2522_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2525"], - "name" : "Reshape_2526", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2526_0"] - }, - { - "inputs" : [ "Reshape_2438", "Tanh_188" ], - "name" : "Multiply_2444", - "op" : "Multiply", - "outputs" : ["Multiply_2444_0"] - }, - { - "inputs" : [ "Divide_167", "Reshape_2438" ], - "name" : "Multiply_2445", - "op" : "Multiply", - "outputs" : ["Multiply_2445_0"] - }, - { - "inputs" : [ "Add_2382", "Reshape_2442" ], - "name" : "Add_2443", - "op" : "Add", - "outputs" : ["Add_2443_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2522"], - "name" : "Reshape_2528", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2528_0"] - }, - { - "inputs" : ["Multiply_2444"], - "name" : "Negative_2486", - "op" : "Negative", - "outputs" : ["Negative_2486_0"] - }, - { - "inputs" : [ "Multiply_2445", "Multiply_2447" ], - "name" : "Divide_2448", - "op" : "Divide", - "outputs" : ["Divide_2448_0"] - }, - { - "inputs" : [ "Negative_2486", "Divide_167" ], - "name" : "Multiply_2487", - "op" : "Multiply", - "outputs" : ["Multiply_2487_0"] - }, - { - "inputs" : [ "Multiply_2410", "Divide_2448" ], - "name" : "Add_2449", - "op" : "Add", - "outputs" : ["Add_2449_0"] - }, - { - "inputs" : [ "Multiply_2487", "Add_166" ], - "name" : "Divide_2488", - "op" : "Divide", - "outputs" : ["Divide_2488_0"] - }, - { - "inputs" : [ "Add_2449", "Tanh_185" ], - "name" : "Multiply_2450", - "op" : "Multiply", - "outputs" : ["Multiply_2450_0"] - }, - { - "inputs" : [ "Divide_183", "Add_2449" ], - "name" : "Multiply_2451", - "op" : "Multiply", - "outputs" : ["Multiply_2451_0"] - }, - { - "inputs" : [ "Add_2449", "Parameter_175" ], - "name" : "Multiply_2470", - "op" : "Multiply", - "outputs" : ["Multiply_2470_0"] - }, - { - "inputs" : [ "Divide_174", "Add_2449" ], - "name" : "Multiply_2471", - "op" : "Multiply", - "outputs" : ["Multiply_2471_0"] - }, - { - "inputs" : [ "Divide_2488", "Exp_165" ], - "name" : "Multiply_2490", - "op" : "Multiply", - "outputs" : ["Multiply_2490_0"] - }, - { - "inputs" : ["Multiply_2450"], - "name" : "Negative_2460", - "op" : "Negative", - "outputs" : ["Negative_2460_0"] - }, - { - "inputs" : [ "Multiply_2451", "Multiply_2453" ], - "name" : "Divide_2454", - "op" : "Divide", - "outputs" : ["Divide_2454_0"] - }, - { - "inputs" : ["Multiply_2470"], - "name" : "Negative_2474", - "op" : "Negative", - "outputs" : ["Negative_2474_0"] - }, - { - "inputs" : ["Multiply_2490"], - "name" : "Negative_2491", - "op" : "Negative", - "outputs" : ["Negative_2491_0"] - }, - { - "inputs" : [ "Negative_2460", "Divide_183" ], - "name" : "Multiply_2461", - "op" : "Multiply", - "outputs" : ["Multiply_2461_0"] - }, - { - "inputs" : [ "Broadcast_2456", "Divide_2454" ], - "lower_bounds" : [ 0, 150 ], - "name" : "ReplaceSlice_2457", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2457_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : [ "Negative_2474", "Divide_174" ], - "name" : "Multiply_2475", - "op" : "Multiply", - "outputs" : ["Multiply_2475_0"] - }, - { - "inputs" : [ "Multiply_2461", "Add_182" ], - "name" : "Divide_2462", - "op" : "Divide", - "outputs" : ["Divide_2462_0"] - }, - { - "inputs" : ["ReplaceSlice_2457"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_2466", - "op" : "Slice", - "outputs" : ["Slice_2466_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : [ "Multiply_2475", "Add_173" ], - "name" : "Divide_2476", - "op" : "Divide", - "outputs" : ["Divide_2476_0"] - }, - { - "inputs" : [ "Divide_2462", "Exp_181" ], - "name" : "Multiply_2464", - "op" : "Multiply", - "outputs" : ["Multiply_2464_0"] - }, - { - "inputs" : [ "Divide_2476", "Exp_172" ], - "name" : "Multiply_2478", - "op" : "Multiply", - "outputs" : ["Multiply_2478_0"] - }, - { - "inputs" : ["Multiply_2464"], - "name" : "Negative_2465", - "op" : "Negative", - "outputs" : ["Negative_2465_0"] - }, - { - "inputs" : ["Multiply_2478"], - "name" : "Negative_2479", - "op" : "Negative", - "outputs" : ["Negative_2479_0"] - }, - { - "inputs" : [ "Slice_2466", "Negative_2465" ], - "name" : "Add_2467", - "op" : "Add", - "outputs" : ["Add_2467_0"] - }, - { - "inputs" : [ "ReplaceSlice_2457", "Add_2467" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_2468", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2468_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2468"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_2480", - "op" : "Slice", - "outputs" : ["Slice_2480_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : [ "Slice_2480", "Negative_2479" ], - "name" : "Add_2481", - "op" : "Add", - "outputs" : ["Add_2481_0"] - }, - { - "inputs" : [ "ReplaceSlice_2468", "Add_2481" ], - "lower_bounds" : [ 0, 300 ], - "name" : "ReplaceSlice_2482", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2482_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["ReplaceSlice_2482"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_2492", - "op" : "Slice", - "outputs" : ["Slice_2492_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : [ "Slice_2492", "Negative_2491" ], - "name" : "Add_2493", - "op" : "Add", - "outputs" : ["Add_2493_0"] - }, - { - "inputs" : [ "ReplaceSlice_2482", "Add_2493" ], - "lower_bounds" : [ 0, 450 ], - "name" : "ReplaceSlice_2494", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2494_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["ReplaceSlice_2494"], - "name" : "Sum_2495", - "op" : "Sum", - "outputs" : ["Sum_2495_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2494"], - "name" : "Reshape_2497", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2497_0"] - }, - { - "inputs" : [ "Reshape_2500", "ReplaceSlice_2494" ], - "name" : "Dot_2501", - "op" : "Dot", - "outputs" : ["Dot_2501_0"] - }, - { - "inputs" : ["ReplaceSlice_2494"], - "name" : "Sum_2505", - "op" : "Sum", - "outputs" : ["Sum_2505_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["ReplaceSlice_2494"], - "name" : "Reshape_2506", - "op" : "Reshape", - "output_shape" : [ 600, 10 ], - "outputs" : ["Reshape_2506_0"] - }, - { - "inputs" : [ "Reshape_2509", "ReplaceSlice_2494" ], - "name" : "Dot_2510", - "op" : "Dot", - "outputs" : ["Dot_2510_0"] - }, - { - "inputs" : [ "Add_2435", "Sum_2495" ], - "name" : "Add_2496", - "op" : "Add", - "outputs" : ["Add_2496_0"] - }, - { - "inputs" : [ "Reshape_156", "Reshape_2497" ], - "name" : "Dot_2498", - "op" : "Dot", - "outputs" : ["Dot_2498_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2501"], - "name" : "Reshape_2502", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2502_0"] - }, - { - "inputs" : [ "Sum_2505", "Sum_2518" ], - "name" : "Add_2519", - "op" : "Add", - "outputs" : ["Add_2519_0"] - }, - { - "inputs" : [ "Reshape_149", "Reshape_2506" ], - "name" : "Dot_2507", - "op" : "Dot", - "outputs" : ["Dot_2507_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_2510"], - "name" : "Reshape_2511", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_2511_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2498"], - "name" : "Reshape_2499", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2499_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2502"], - "name" : "Reshape_2503", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2503_0"] - }, - { - "inputs" : [ "Add_2519", "Sum_2533" ], - "name" : "Add_2534", - "op" : "Add", - "outputs" : ["Add_2534_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Dot_2507"], - "name" : "Reshape_2508", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2508_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_2511"], - "name" : "Reshape_2512", - "op" : "Reshape", - "output_shape" : [ 600, 150 ], - "outputs" : ["Reshape_2512_0"] - }, - { - "inputs" : [ "Add_2443", "Reshape_2503" ], - "name" : "Add_2504", - "op" : "Add", - "outputs" : ["Add_2504_0"] - }, - { - "inputs" : [ "Add_2534", "Sum_2548" ], - "name" : "Add_2549", - "op" : "Add", - "outputs" : ["Add_2549_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_2508"], - "name" : "Reshape_2513", - "op" : "Reshape", - "output_shape" : [ 10, 1, 150 ], - "outputs" : ["Reshape_2513_0"] - }, - { - "inputs" : [ "Reshape_2512", "Reshape_2526" ], - "name" : "Add_2527", - "op" : "Add", - "outputs" : ["Add_2527_0"] - }, - { - "inputs" : [ "Add_2549", "Sum_2563" ], - "name" : "Add_2564", - "op" : "Add", - "outputs" : ["Add_2564_0"] - }, - { - "inputs" : [ "Broadcast_2515", "Reshape_2513" ], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "ReplaceSlice_2516", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2516_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 1, 150 ] - }, - { - "inputs" : [ "Add_2527", "Reshape_2541" ], - "name" : "Add_2542", - "op" : "Add", - "outputs" : ["Add_2542_0"] - }, - { - "inputs" : [ "Add_2564", "Sum_2578" ], - "name" : "Add_2579", - "op" : "Add", - "outputs" : ["Add_2579_0"] - }, - { - "inputs" : ["ReplaceSlice_2516"], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "Slice_2529", - "op" : "Slice", - "outputs" : ["Slice_2529_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 2, 150 ] - }, - { - "inputs" : [ "Add_2542", "Reshape_2556" ], - "name" : "Add_2557", - "op" : "Add", - "outputs" : ["Add_2557_0"] - }, - { - "inputs" : [ "Add_2579", "Sum_2593" ], - "name" : "Add_2594", - "op" : "Add", - "outputs" : ["Add_2594_0"] - }, - { - "inputs" : [ "Slice_2529", "Reshape_2528" ], - "name" : "Add_2530", - "op" : "Add", - "outputs" : ["Add_2530_0"] - }, - { - "inputs" : [ "Add_2557", "Reshape_2571" ], - "name" : "Add_2572", - "op" : "Add", - "outputs" : ["Add_2572_0"] - }, - { - "inputs" : [ "Add_2594", "Sum_2608" ], - "name" : "Add_2609", - "op" : "Add", - "outputs" : ["Add_2609_0"] - }, - { - "inputs" : [ "ReplaceSlice_2516", "Add_2530" ], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "ReplaceSlice_2531", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2531_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 2, 150 ] - }, - { - "inputs" : [ "Add_2572", "Reshape_2586" ], - "name" : "Add_2587", - "op" : "Add", - "outputs" : ["Add_2587_0"] - }, - { - "inputs" : [ "Add_2609", "Sum_2623" ], - "name" : "Add_2624", - "op" : "Add", - "outputs" : ["Add_2624_0"] - }, - { - "inputs" : ["ReplaceSlice_2531"], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "Slice_2544", - "op" : "Slice", - "outputs" : ["Slice_2544_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 3, 150 ] - }, - { - "inputs" : [ "Add_2587", "Reshape_2601" ], - "name" : "Add_2602", - "op" : "Add", - "outputs" : ["Add_2602_0"] - }, - { - "inputs" : [ "Add_2624", "Sum_2638" ], - "name" : "Add_2639", - "op" : "Add", - "outputs" : ["Add_2639_0"] - }, - { - "inputs" : [ "Slice_2544", "Reshape_2543" ], - "name" : "Add_2545", - "op" : "Add", - "outputs" : ["Add_2545_0"] - }, - { - "inputs" : [ "Add_2602", "Reshape_2616" ], - "name" : "Add_2617", - "op" : "Add", - "outputs" : ["Add_2617_0"] - }, - { - "inputs" : [ "Add_2639", "Sum_2653" ], - "name" : "Add_2654", - "op" : "Add", - "outputs" : ["Add_2654_0"] - }, - { - "inputs" : [ "ReplaceSlice_2531", "Add_2545" ], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "ReplaceSlice_2546", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2546_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 3, 150 ] - }, - { - "inputs" : [ "Add_2617", "Reshape_2631" ], - "name" : "Add_2632", - "op" : "Add", - "outputs" : ["Add_2632_0"] - }, - { - "inputs" : [ "Add_2654", "Sum_2668" ], - "name" : "Add_2669", - "op" : "Add", - "outputs" : ["Add_2669_0"] - }, - { - "inputs" : ["ReplaceSlice_2546"], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "Slice_2559", - "op" : "Slice", - "outputs" : ["Slice_2559_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 4, 150 ] - }, - { - "inputs" : [ "Add_2632", "Reshape_2646" ], - "name" : "Add_2647", - "op" : "Add", - "outputs" : ["Add_2647_0"] - }, - { - "inputs" : [ "Add_2669", "Sum_2683" ], - "name" : "Add_2684", - "op" : "Add", - "outputs" : ["Add_2684_0"] - }, - { - "inputs" : [ "Slice_2559", "Reshape_2558" ], - "name" : "Add_2560", - "op" : "Add", - "outputs" : ["Add_2560_0"] - }, - { - "inputs" : [ "Add_2647", "Reshape_2661" ], - "name" : "Add_2662", - "op" : "Add", - "outputs" : ["Add_2662_0"] - }, - { - "inputs" : [ "Add_2684", "Sum_2698" ], - "name" : "Add_2699", - "op" : "Add", - "outputs" : ["Add_2699_0"] - }, - { - "inputs" : [ "ReplaceSlice_2546", "Add_2560" ], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "ReplaceSlice_2561", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2561_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 4, 150 ] - }, - { - "inputs" : [ "Add_2662", "Reshape_2676" ], - "name" : "Add_2677", - "op" : "Add", - "outputs" : ["Add_2677_0"] - }, - { - "inputs" : [ "Add_2699", "Sum_2713" ], - "name" : "Add_2714", - "op" : "Add", - "outputs" : ["Add_2714_0"] - }, - { - "inputs" : ["ReplaceSlice_2561"], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "Slice_2574", - "op" : "Slice", - "outputs" : ["Slice_2574_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 5, 150 ] - }, - { - "inputs" : [ "Add_2677", "Reshape_2691" ], - "name" : "Add_2692", - "op" : "Add", - "outputs" : ["Add_2692_0"] - }, - { - "inputs" : [ "Add_2714", "Sum_2728" ], - "name" : "Add_2729", - "op" : "Add", - "outputs" : ["Add_2729_0"] - }, - { - "inputs" : [ "Slice_2574", "Reshape_2573" ], - "name" : "Add_2575", - "op" : "Add", - "outputs" : ["Add_2575_0"] - }, - { - "inputs" : [ "Add_2692", "Reshape_2706" ], - "name" : "Add_2707", - "op" : "Add", - "outputs" : ["Add_2707_0"] - }, - { - "inputs" : [ "Add_2729", "Sum_2743" ], - "name" : "Add_2744", - "op" : "Add", - "outputs" : ["Add_2744_0"] - }, - { - "inputs" : [ "ReplaceSlice_2561", "Add_2575" ], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "ReplaceSlice_2576", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2576_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 5, 150 ] - }, - { - "inputs" : [ "Add_2707", "Reshape_2721" ], - "name" : "Add_2722", - "op" : "Add", - "outputs" : ["Add_2722_0"] - }, - { - "inputs" : [ "Add_2744", "Sum_2758" ], - "name" : "Add_2759", - "op" : "Add", - "outputs" : ["Add_2759_0"] - }, - { - "inputs" : ["ReplaceSlice_2576"], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "Slice_2589", - "op" : "Slice", - "outputs" : ["Slice_2589_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 6, 150 ] - }, - { - "inputs" : [ "Add_2722", "Reshape_2736" ], - "name" : "Add_2737", - "op" : "Add", - "outputs" : ["Add_2737_0"] - }, - { - "inputs" : [ "Add_2759", "Sum_2773" ], - "name" : "Add_2774", - "op" : "Add", - "outputs" : ["Add_2774_0"] - }, - { - "inputs" : [ "Slice_2589", "Reshape_2588" ], - "name" : "Add_2590", - "op" : "Add", - "outputs" : ["Add_2590_0"] - }, - { - "inputs" : [ "Add_2737", "Reshape_2751" ], - "name" : "Add_2752", - "op" : "Add", - "outputs" : ["Add_2752_0"] - }, - { - "inputs" : [ "Add_2774", "Sum_2788" ], - "name" : "Add_2789", - "op" : "Add", - "outputs" : ["Add_2789_0"] - }, - { - "inputs" : [ "ReplaceSlice_2576", "Add_2590" ], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "ReplaceSlice_2591", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2591_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 6, 150 ] - }, - { - "inputs" : [ "Add_2752", "Reshape_2766" ], - "name" : "Add_2767", - "op" : "Add", - "outputs" : ["Add_2767_0"] - }, - { - "inputs" : [ "Add_2789", "Sum_2803" ], - "name" : "Add_2804", - "op" : "Add", - "outputs" : ["Add_2804_0"] - }, - { - "inputs" : ["ReplaceSlice_2591"], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "Slice_2604", - "op" : "Slice", - "outputs" : ["Slice_2604_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 7, 150 ] - }, - { - "inputs" : [ "Add_2767", "Reshape_2781" ], - "name" : "Add_2782", - "op" : "Add", - "outputs" : ["Add_2782_0"] - }, - { - "inputs" : [ "Add_2804", "Sum_2818" ], - "name" : "Add_2819", - "op" : "Add", - "outputs" : ["Add_2819_0"] - }, - { - "inputs" : [ "Slice_2604", "Reshape_2603" ], - "name" : "Add_2605", - "op" : "Add", - "outputs" : ["Add_2605_0"] - }, - { - "inputs" : [ "Add_2782", "Reshape_2796" ], - "name" : "Add_2797", - "op" : "Add", - "outputs" : ["Add_2797_0"] - }, - { - "inputs" : [ "Add_2819", "Sum_2833" ], - "name" : "Add_2834", - "op" : "Add", - "outputs" : ["Add_2834_0"] - }, - { - "inputs" : [ "ReplaceSlice_2591", "Add_2605" ], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "ReplaceSlice_2606", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2606_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 7, 150 ] - }, - { - "inputs" : [ "Add_2797", "Reshape_2811" ], - "name" : "Add_2812", - "op" : "Add", - "outputs" : ["Add_2812_0"] - }, - { - "inputs" : [ "Add_2834", "Sum_2848" ], - "name" : "Add_2849", - "op" : "Add", - "outputs" : ["Add_2849_0"] - }, - { - "inputs" : ["ReplaceSlice_2606"], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "Slice_2619", - "op" : "Slice", - "outputs" : ["Slice_2619_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 8, 150 ] - }, - { - "inputs" : [ "Add_2812", "Reshape_2826" ], - "name" : "Add_2827", - "op" : "Add", - "outputs" : ["Add_2827_0"] - }, - { - "inputs" : [ "Add_2849", "Sum_2863" ], - "name" : "Add_2864", - "op" : "Add", - "outputs" : ["Add_2864_0"] - }, - { - "inputs" : [ "Slice_2619", "Reshape_2618" ], - "name" : "Add_2620", - "op" : "Add", - "outputs" : ["Add_2620_0"] - }, - { - "inputs" : [ "Add_2827", "Reshape_2841" ], - "name" : "Add_2842", - "op" : "Add", - "outputs" : ["Add_2842_0"] - }, - { - "inputs" : [ "ReplaceSlice_2606", "Add_2620" ], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "ReplaceSlice_2621", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2621_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 8, 150 ] - }, - { - "inputs" : [ "Add_2842", "Reshape_2856" ], - "name" : "Add_2857", - "op" : "Add", - "outputs" : ["Add_2857_0"] - }, - { - "inputs" : ["ReplaceSlice_2621"], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "Slice_2634", - "op" : "Slice", - "outputs" : ["Slice_2634_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 9, 150 ] - }, - { - "inputs" : [ "Add_2857", "Reshape_2871" ], - "name" : "Add_2872", - "op" : "Add", - "outputs" : ["Add_2872_0"] - }, - { - "inputs" : [ "Slice_2634", "Reshape_2633" ], - "name" : "Add_2635", - "op" : "Add", - "outputs" : ["Add_2635_0"] - }, - { - "inputs" : [ "ReplaceSlice_2621", "Add_2635" ], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "ReplaceSlice_2636", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2636_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 9, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2636"], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "Slice_2649", - "op" : "Slice", - "outputs" : ["Slice_2649_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 10, 150 ] - }, - { - "inputs" : [ "Slice_2649", "Reshape_2648" ], - "name" : "Add_2650", - "op" : "Add", - "outputs" : ["Add_2650_0"] - }, - { - "inputs" : [ "ReplaceSlice_2636", "Add_2650" ], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "ReplaceSlice_2651", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2651_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 10, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2651"], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "Slice_2664", - "op" : "Slice", - "outputs" : ["Slice_2664_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 11, 150 ] - }, - { - "inputs" : [ "Slice_2664", "Reshape_2663" ], - "name" : "Add_2665", - "op" : "Add", - "outputs" : ["Add_2665_0"] - }, - { - "inputs" : [ "ReplaceSlice_2651", "Add_2665" ], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "ReplaceSlice_2666", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2666_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 11, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2666"], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "Slice_2679", - "op" : "Slice", - "outputs" : ["Slice_2679_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 12, 150 ] - }, - { - "inputs" : [ "Slice_2679", "Reshape_2678" ], - "name" : "Add_2680", - "op" : "Add", - "outputs" : ["Add_2680_0"] - }, - { - "inputs" : [ "ReplaceSlice_2666", "Add_2680" ], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "ReplaceSlice_2681", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2681_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 12, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2681"], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "Slice_2694", - "op" : "Slice", - "outputs" : ["Slice_2694_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 13, 150 ] - }, - { - "inputs" : [ "Slice_2694", "Reshape_2693" ], - "name" : "Add_2695", - "op" : "Add", - "outputs" : ["Add_2695_0"] - }, - { - "inputs" : [ "ReplaceSlice_2681", "Add_2695" ], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "ReplaceSlice_2696", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2696_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 13, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2696"], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "Slice_2709", - "op" : "Slice", - "outputs" : ["Slice_2709_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 14, 150 ] - }, - { - "inputs" : [ "Slice_2709", "Reshape_2708" ], - "name" : "Add_2710", - "op" : "Add", - "outputs" : ["Add_2710_0"] - }, - { - "inputs" : [ "ReplaceSlice_2696", "Add_2710" ], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "ReplaceSlice_2711", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2711_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 14, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2711"], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "Slice_2724", - "op" : "Slice", - "outputs" : ["Slice_2724_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 15, 150 ] - }, - { - "inputs" : [ "Slice_2724", "Reshape_2723" ], - "name" : "Add_2725", - "op" : "Add", - "outputs" : ["Add_2725_0"] - }, - { - "inputs" : [ "ReplaceSlice_2711", "Add_2725" ], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "ReplaceSlice_2726", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2726_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 15, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2726"], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "Slice_2739", - "op" : "Slice", - "outputs" : ["Slice_2739_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 16, 150 ] - }, - { - "inputs" : [ "Slice_2739", "Reshape_2738" ], - "name" : "Add_2740", - "op" : "Add", - "outputs" : ["Add_2740_0"] - }, - { - "inputs" : [ "ReplaceSlice_2726", "Add_2740" ], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "ReplaceSlice_2741", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2741_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 16, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2741"], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "Slice_2754", - "op" : "Slice", - "outputs" : ["Slice_2754_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 17, 150 ] - }, - { - "inputs" : [ "Slice_2754", "Reshape_2753" ], - "name" : "Add_2755", - "op" : "Add", - "outputs" : ["Add_2755_0"] - }, - { - "inputs" : [ "ReplaceSlice_2741", "Add_2755" ], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "ReplaceSlice_2756", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2756_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 17, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2756"], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "Slice_2769", - "op" : "Slice", - "outputs" : ["Slice_2769_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 18, 150 ] - }, - { - "inputs" : [ "Slice_2769", "Reshape_2768" ], - "name" : "Add_2770", - "op" : "Add", - "outputs" : ["Add_2770_0"] - }, - { - "inputs" : [ "ReplaceSlice_2756", "Add_2770" ], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "ReplaceSlice_2771", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2771_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 18, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2771"], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "Slice_2784", - "op" : "Slice", - "outputs" : ["Slice_2784_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 19, 150 ] - }, - { - "inputs" : [ "Slice_2784", "Reshape_2783" ], - "name" : "Add_2785", - "op" : "Add", - "outputs" : ["Add_2785_0"] - }, - { - "inputs" : [ "ReplaceSlice_2771", "Add_2785" ], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "ReplaceSlice_2786", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2786_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 19, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2786"], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "Slice_2799", - "op" : "Slice", - "outputs" : ["Slice_2799_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 20, 150 ] - }, - { - "inputs" : [ "Slice_2799", "Reshape_2798" ], - "name" : "Add_2800", - "op" : "Add", - "outputs" : ["Add_2800_0"] - }, - { - "inputs" : [ "ReplaceSlice_2786", "Add_2800" ], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "ReplaceSlice_2801", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2801_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 20, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2801"], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "Slice_2814", - "op" : "Slice", - "outputs" : ["Slice_2814_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 21, 150 ] - }, - { - "inputs" : [ "Slice_2814", "Reshape_2813" ], - "name" : "Add_2815", - "op" : "Add", - "outputs" : ["Add_2815_0"] - }, - { - "inputs" : [ "ReplaceSlice_2801", "Add_2815" ], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "ReplaceSlice_2816", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2816_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 21, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2816"], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "Slice_2829", - "op" : "Slice", - "outputs" : ["Slice_2829_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 22, 150 ] - }, - { - "inputs" : [ "Slice_2829", "Reshape_2828" ], - "name" : "Add_2830", - "op" : "Add", - "outputs" : ["Add_2830_0"] - }, - { - "inputs" : [ "ReplaceSlice_2816", "Add_2830" ], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "ReplaceSlice_2831", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2831_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 22, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2831"], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "Slice_2844", - "op" : "Slice", - "outputs" : ["Slice_2844_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 23, 150 ] - }, - { - "inputs" : [ "Slice_2844", "Reshape_2843" ], - "name" : "Add_2845", - "op" : "Add", - "outputs" : ["Add_2845_0"] - }, - { - "inputs" : [ "ReplaceSlice_2831", "Add_2845" ], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "ReplaceSlice_2846", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2846_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 23, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2846"], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "Slice_2859", - "op" : "Slice", - "outputs" : ["Slice_2859_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 24, 150 ] - }, - { - "inputs" : [ "Slice_2859", "Reshape_2858" ], - "name" : "Add_2860", - "op" : "Add", - "outputs" : ["Add_2860_0"] - }, - { - "inputs" : [ "ReplaceSlice_2846", "Add_2860" ], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "ReplaceSlice_2861", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2861_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 24, 150 ] - }, - { - "inputs" : ["ReplaceSlice_2861"], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "Slice_2874", - "op" : "Slice", - "outputs" : ["Slice_2874_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 25, 150 ] - }, - { - "inputs" : [ "Slice_2874", "Reshape_2873" ], - "name" : "Add_2875", - "op" : "Add", - "outputs" : ["Add_2875_0"] - }, - { - "inputs" : [ "ReplaceSlice_2861", "Add_2875" ], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "ReplaceSlice_2876", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_2876_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 25, 150 ] - } - ], - "parameters" : [ - "Parameter_982", "Parameter_0", "Parameter_3", "Parameter_4", - "Parameter_153", "Parameter_154", "Parameter_155", "Parameter_175" - ], - "result" : [ - "ReplaceSlice_2876", "Add_2872", "Add_2864", "Reshape_2499", "Add_2504", - "Add_2496", "Multiply_2471" - ] -}] diff --git a/ngraph/test/models/mxnet/Seq2Seq_forward.json b/ngraph/test/models/mxnet/Seq2Seq_forward.json deleted file mode 100644 index a265c69c0c3f5f..00000000000000 --- a/ngraph/test/models/mxnet/Seq2Seq_forward.json +++ /dev/null @@ -1,6916 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_175", - "op" : "Parameter", - "outputs" : ["Parameter_175_0"], - "shape" : [ 10, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_155", - "op" : "Parameter", - "outputs" : ["Parameter_155_0"], - "shape" : [600] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_154", - "op" : "Parameter", - "outputs" : ["Parameter_154_0"], - "shape" : [ 600, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_153", - "op" : "Parameter", - "outputs" : ["Parameter_153_0"], - "shape" : [ 10, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_4", - "op" : "Parameter", - "outputs" : ["Parameter_4_0"], - "shape" : [600] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [ 600, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 10, 25, 150 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_178", - "op" : "Constant", - "outputs" : ["Constant_178_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_169", - "op" : "Constant", - "outputs" : ["Constant_169_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_162", - "op" : "Constant", - "outputs" : ["Constant_162_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_211", - "op" : "Constant", - "outputs" : ["Constant_211_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_203", - "op" : "Constant", - "outputs" : ["Constant_203_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_196", - "op" : "Constant", - "outputs" : ["Constant_196_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_244", - "op" : "Constant", - "outputs" : ["Constant_244_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_236", - "op" : "Constant", - "outputs" : ["Constant_236_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_229", - "op" : "Constant", - "outputs" : ["Constant_229_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_277", - "op" : "Constant", - "outputs" : ["Constant_277_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_269", - "op" : "Constant", - "outputs" : ["Constant_269_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_262", - "op" : "Constant", - "outputs" : ["Constant_262_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_310", - "op" : "Constant", - "outputs" : ["Constant_310_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_302", - "op" : "Constant", - "outputs" : ["Constant_302_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_295", - "op" : "Constant", - "outputs" : ["Constant_295_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_343", - "op" : "Constant", - "outputs" : ["Constant_343_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_335", - "op" : "Constant", - "outputs" : ["Constant_335_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_328", - "op" : "Constant", - "outputs" : ["Constant_328_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_376", - "op" : "Constant", - "outputs" : ["Constant_376_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_368", - "op" : "Constant", - "outputs" : ["Constant_368_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_361", - "op" : "Constant", - "outputs" : ["Constant_361_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_409", - "op" : "Constant", - "outputs" : ["Constant_409_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_401", - "op" : "Constant", - "outputs" : ["Constant_401_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_394", - "op" : "Constant", - "outputs" : ["Constant_394_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_442", - "op" : "Constant", - "outputs" : ["Constant_442_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_434", - "op" : "Constant", - "outputs" : ["Constant_434_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_427", - "op" : "Constant", - "outputs" : ["Constant_427_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_475", - "op" : "Constant", - "outputs" : ["Constant_475_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_467", - "op" : "Constant", - "outputs" : ["Constant_467_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_460", - "op" : "Constant", - "outputs" : ["Constant_460_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_508", - "op" : "Constant", - "outputs" : ["Constant_508_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_500", - "op" : "Constant", - "outputs" : ["Constant_500_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_493", - "op" : "Constant", - "outputs" : ["Constant_493_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_541", - "op" : "Constant", - "outputs" : ["Constant_541_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_533", - "op" : "Constant", - "outputs" : ["Constant_533_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_526", - "op" : "Constant", - "outputs" : ["Constant_526_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_574", - "op" : "Constant", - "outputs" : ["Constant_574_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_566", - "op" : "Constant", - "outputs" : ["Constant_566_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_559", - "op" : "Constant", - "outputs" : ["Constant_559_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_607", - "op" : "Constant", - "outputs" : ["Constant_607_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_599", - "op" : "Constant", - "outputs" : ["Constant_599_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_592", - "op" : "Constant", - "outputs" : ["Constant_592_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_640", - "op" : "Constant", - "outputs" : ["Constant_640_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_632", - "op" : "Constant", - "outputs" : ["Constant_632_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_625", - "op" : "Constant", - "outputs" : ["Constant_625_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_673", - "op" : "Constant", - "outputs" : ["Constant_673_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_665", - "op" : "Constant", - "outputs" : ["Constant_665_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_658", - "op" : "Constant", - "outputs" : ["Constant_658_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_706", - "op" : "Constant", - "outputs" : ["Constant_706_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_698", - "op" : "Constant", - "outputs" : ["Constant_698_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_691", - "op" : "Constant", - "outputs" : ["Constant_691_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_739", - "op" : "Constant", - "outputs" : ["Constant_739_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_731", - "op" : "Constant", - "outputs" : ["Constant_731_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_724", - "op" : "Constant", - "outputs" : ["Constant_724_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_772", - "op" : "Constant", - "outputs" : ["Constant_772_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_764", - "op" : "Constant", - "outputs" : ["Constant_764_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_757", - "op" : "Constant", - "outputs" : ["Constant_757_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_805", - "op" : "Constant", - "outputs" : ["Constant_805_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_797", - "op" : "Constant", - "outputs" : ["Constant_797_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_790", - "op" : "Constant", - "outputs" : ["Constant_790_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_838", - "op" : "Constant", - "outputs" : ["Constant_838_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_830", - "op" : "Constant", - "outputs" : ["Constant_830_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_823", - "op" : "Constant", - "outputs" : ["Constant_823_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_871", - "op" : "Constant", - "outputs" : ["Constant_871_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_863", - "op" : "Constant", - "outputs" : ["Constant_863_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_856", - "op" : "Constant", - "outputs" : ["Constant_856_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_904", - "op" : "Constant", - "outputs" : ["Constant_904_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_896", - "op" : "Constant", - "outputs" : ["Constant_896_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_889", - "op" : "Constant", - "outputs" : ["Constant_889_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_937", - "op" : "Constant", - "outputs" : ["Constant_937_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_929", - "op" : "Constant", - "outputs" : ["Constant_929_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_922", - "op" : "Constant", - "outputs" : ["Constant_922_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_970", - "op" : "Constant", - "outputs" : ["Constant_970_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_962", - "op" : "Constant", - "outputs" : ["Constant_962_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_955", - "op" : "Constant", - "outputs" : ["Constant_955_0"], - "shape" : [], - "value" : ["1"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_158", - "op" : "Broadcast", - "outputs" : ["Broadcast_158_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_192", - "op" : "Broadcast", - "outputs" : ["Broadcast_192_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_225", - "op" : "Broadcast", - "outputs" : ["Broadcast_225_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_258", - "op" : "Broadcast", - "outputs" : ["Broadcast_258_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_291", - "op" : "Broadcast", - "outputs" : ["Broadcast_291_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_324", - "op" : "Broadcast", - "outputs" : ["Broadcast_324_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_357", - "op" : "Broadcast", - "outputs" : ["Broadcast_357_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_390", - "op" : "Broadcast", - "outputs" : ["Broadcast_390_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_423", - "op" : "Broadcast", - "outputs" : ["Broadcast_423_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_456", - "op" : "Broadcast", - "outputs" : ["Broadcast_456_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_489", - "op" : "Broadcast", - "outputs" : ["Broadcast_489_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_522", - "op" : "Broadcast", - "outputs" : ["Broadcast_522_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_555", - "op" : "Broadcast", - "outputs" : ["Broadcast_555_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_588", - "op" : "Broadcast", - "outputs" : ["Broadcast_588_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_621", - "op" : "Broadcast", - "outputs" : ["Broadcast_621_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_654", - "op" : "Broadcast", - "outputs" : ["Broadcast_654_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_687", - "op" : "Broadcast", - "outputs" : ["Broadcast_687_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_720", - "op" : "Broadcast", - "outputs" : ["Broadcast_720_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_753", - "op" : "Broadcast", - "outputs" : ["Broadcast_753_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_786", - "op" : "Broadcast", - "outputs" : ["Broadcast_786_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_819", - "op" : "Broadcast", - "outputs" : ["Broadcast_819_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_852", - "op" : "Broadcast", - "outputs" : ["Broadcast_852_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_885", - "op" : "Broadcast", - "outputs" : ["Broadcast_885_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_918", - "op" : "Broadcast", - "outputs" : ["Broadcast_918_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_155"], - "name" : "Broadcast_951", - "op" : "Broadcast", - "outputs" : ["Broadcast_951_0"], - "shape" : [ 10, 600 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_156", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_156_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_190", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_190_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_223", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_223_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_256", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_256_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_289", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_289_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_322", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_322_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_355", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_355_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_388", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_388_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_421", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_421_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_454", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_454_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_487", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_487_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_520", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_520_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_553", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_553_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_586", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_586_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_619", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_619_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_652", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_652_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_685", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_685_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_718", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_718_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_751", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_751_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_784", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_784_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_817", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_817_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_850", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_850_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_883", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_883_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_916", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_916_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_154"], - "name" : "Reshape_949", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_949_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_7", - "op" : "Broadcast", - "outputs" : ["Broadcast_7_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_13", - "op" : "Broadcast", - "outputs" : ["Broadcast_13_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_25", - "op" : "Broadcast", - "outputs" : ["Broadcast_25_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_31", - "op" : "Broadcast", - "outputs" : ["Broadcast_31_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_37", - "op" : "Broadcast", - "outputs" : ["Broadcast_37_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_43", - "op" : "Broadcast", - "outputs" : ["Broadcast_43_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_49", - "op" : "Broadcast", - "outputs" : ["Broadcast_49_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_55", - "op" : "Broadcast", - "outputs" : ["Broadcast_55_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_61", - "op" : "Broadcast", - "outputs" : ["Broadcast_61_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_67", - "op" : "Broadcast", - "outputs" : ["Broadcast_67_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_73", - "op" : "Broadcast", - "outputs" : ["Broadcast_73_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_79", - "op" : "Broadcast", - "outputs" : ["Broadcast_79_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_85", - "op" : "Broadcast", - "outputs" : ["Broadcast_85_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_91", - "op" : "Broadcast", - "outputs" : ["Broadcast_91_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_97", - "op" : "Broadcast", - "outputs" : ["Broadcast_97_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_103", - "op" : "Broadcast", - "outputs" : ["Broadcast_103_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_109", - "op" : "Broadcast", - "outputs" : ["Broadcast_109_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_115", - "op" : "Broadcast", - "outputs" : ["Broadcast_115_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_121", - "op" : "Broadcast", - "outputs" : ["Broadcast_121_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_127", - "op" : "Broadcast", - "outputs" : ["Broadcast_127_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_133", - "op" : "Broadcast", - "outputs" : ["Broadcast_133_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_139", - "op" : "Broadcast", - "outputs" : ["Broadcast_139_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_145", - "op" : "Broadcast", - "outputs" : ["Broadcast_145_0"], - "shape" : [ 10, 600 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_4"], - "name" : "Broadcast_151", - "op" : "Broadcast", - "outputs" : ["Broadcast_151_0"], - "shape" : [ 10, 600 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_5", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_5_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_11", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_11_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_17", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_17_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_23", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_23_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_29", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_29_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_35", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_35_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_41", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_41_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_47", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_47_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_53", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_53_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_59", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_59_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_65", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_65_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_71", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_71_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_77", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_77_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_83", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_83_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_89", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_89_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_95", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_95_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_101", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_101_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_107", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_107_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_113", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_113_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_119", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_119_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_125", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_125_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_131", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_131_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_137", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_137_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_143", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_143_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_149", - "op" : "Reshape", - "output_shape" : [ 150, 600 ], - "outputs" : ["Reshape_149_0"] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 24, 0 ], - "name" : "Slice_1", - "op" : "Slice", - "outputs" : ["Slice_1_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 25, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 23, 0 ], - "name" : "Slice_9", - "op" : "Slice", - "outputs" : ["Slice_9_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 24, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 22, 0 ], - "name" : "Slice_15", - "op" : "Slice", - "outputs" : ["Slice_15_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 23, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 21, 0 ], - "name" : "Slice_21", - "op" : "Slice", - "outputs" : ["Slice_21_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 22, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 20, 0 ], - "name" : "Slice_27", - "op" : "Slice", - "outputs" : ["Slice_27_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 21, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 19, 0 ], - "name" : "Slice_33", - "op" : "Slice", - "outputs" : ["Slice_33_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 20, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 18, 0 ], - "name" : "Slice_39", - "op" : "Slice", - "outputs" : ["Slice_39_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 19, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 17, 0 ], - "name" : "Slice_45", - "op" : "Slice", - "outputs" : ["Slice_45_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 18, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 16, 0 ], - "name" : "Slice_51", - "op" : "Slice", - "outputs" : ["Slice_51_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 17, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 15, 0 ], - "name" : "Slice_57", - "op" : "Slice", - "outputs" : ["Slice_57_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 16, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 14, 0 ], - "name" : "Slice_63", - "op" : "Slice", - "outputs" : ["Slice_63_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 15, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 13, 0 ], - "name" : "Slice_69", - "op" : "Slice", - "outputs" : ["Slice_69_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 14, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 12, 0 ], - "name" : "Slice_75", - "op" : "Slice", - "outputs" : ["Slice_75_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 13, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 11, 0 ], - "name" : "Slice_81", - "op" : "Slice", - "outputs" : ["Slice_81_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 12, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 10, 0 ], - "name" : "Slice_87", - "op" : "Slice", - "outputs" : ["Slice_87_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 11, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 9, 0 ], - "name" : "Slice_93", - "op" : "Slice", - "outputs" : ["Slice_93_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 10, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 8, 0 ], - "name" : "Slice_99", - "op" : "Slice", - "outputs" : ["Slice_99_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 9, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 7, 0 ], - "name" : "Slice_105", - "op" : "Slice", - "outputs" : ["Slice_105_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 8, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 6, 0 ], - "name" : "Slice_111", - "op" : "Slice", - "outputs" : ["Slice_111_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 7, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 5, 0 ], - "name" : "Slice_117", - "op" : "Slice", - "outputs" : ["Slice_117_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 6, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 4, 0 ], - "name" : "Slice_123", - "op" : "Slice", - "outputs" : ["Slice_123_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 5, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 3, 0 ], - "name" : "Slice_129", - "op" : "Slice", - "outputs" : ["Slice_129_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 4, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 2, 0 ], - "name" : "Slice_135", - "op" : "Slice", - "outputs" : ["Slice_135_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 3, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 1, 0 ], - "name" : "Slice_141", - "op" : "Slice", - "outputs" : ["Slice_141_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 2, 150 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_147", - "op" : "Slice", - "outputs" : ["Slice_147_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 1, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_178"], - "name" : "Broadcast_179", - "op" : "Broadcast", - "outputs" : ["Broadcast_179_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_169"], - "name" : "Broadcast_170", - "op" : "Broadcast", - "outputs" : ["Broadcast_170_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_162"], - "name" : "Broadcast_163", - "op" : "Broadcast", - "outputs" : ["Broadcast_163_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_211"], - "name" : "Broadcast_212", - "op" : "Broadcast", - "outputs" : ["Broadcast_212_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_203"], - "name" : "Broadcast_204", - "op" : "Broadcast", - "outputs" : ["Broadcast_204_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_196"], - "name" : "Broadcast_197", - "op" : "Broadcast", - "outputs" : ["Broadcast_197_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_244"], - "name" : "Broadcast_245", - "op" : "Broadcast", - "outputs" : ["Broadcast_245_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_236"], - "name" : "Broadcast_237", - "op" : "Broadcast", - "outputs" : ["Broadcast_237_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_229"], - "name" : "Broadcast_230", - "op" : "Broadcast", - "outputs" : ["Broadcast_230_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_277"], - "name" : "Broadcast_278", - "op" : "Broadcast", - "outputs" : ["Broadcast_278_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_269"], - "name" : "Broadcast_270", - "op" : "Broadcast", - "outputs" : ["Broadcast_270_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_262"], - "name" : "Broadcast_263", - "op" : "Broadcast", - "outputs" : ["Broadcast_263_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_310"], - "name" : "Broadcast_311", - "op" : "Broadcast", - "outputs" : ["Broadcast_311_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_302"], - "name" : "Broadcast_303", - "op" : "Broadcast", - "outputs" : ["Broadcast_303_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_295"], - "name" : "Broadcast_296", - "op" : "Broadcast", - "outputs" : ["Broadcast_296_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_343"], - "name" : "Broadcast_344", - "op" : "Broadcast", - "outputs" : ["Broadcast_344_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_335"], - "name" : "Broadcast_336", - "op" : "Broadcast", - "outputs" : ["Broadcast_336_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_328"], - "name" : "Broadcast_329", - "op" : "Broadcast", - "outputs" : ["Broadcast_329_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_376"], - "name" : "Broadcast_377", - "op" : "Broadcast", - "outputs" : ["Broadcast_377_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_368"], - "name" : "Broadcast_369", - "op" : "Broadcast", - "outputs" : ["Broadcast_369_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_361"], - "name" : "Broadcast_362", - "op" : "Broadcast", - "outputs" : ["Broadcast_362_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_409"], - "name" : "Broadcast_410", - "op" : "Broadcast", - "outputs" : ["Broadcast_410_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_401"], - "name" : "Broadcast_402", - "op" : "Broadcast", - "outputs" : ["Broadcast_402_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_394"], - "name" : "Broadcast_395", - "op" : "Broadcast", - "outputs" : ["Broadcast_395_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_442"], - "name" : "Broadcast_443", - "op" : "Broadcast", - "outputs" : ["Broadcast_443_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_434"], - "name" : "Broadcast_435", - "op" : "Broadcast", - "outputs" : ["Broadcast_435_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_427"], - "name" : "Broadcast_428", - "op" : "Broadcast", - "outputs" : ["Broadcast_428_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_475"], - "name" : "Broadcast_476", - "op" : "Broadcast", - "outputs" : ["Broadcast_476_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_467"], - "name" : "Broadcast_468", - "op" : "Broadcast", - "outputs" : ["Broadcast_468_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_460"], - "name" : "Broadcast_461", - "op" : "Broadcast", - "outputs" : ["Broadcast_461_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_508"], - "name" : "Broadcast_509", - "op" : "Broadcast", - "outputs" : ["Broadcast_509_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_500"], - "name" : "Broadcast_501", - "op" : "Broadcast", - "outputs" : ["Broadcast_501_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_493"], - "name" : "Broadcast_494", - "op" : "Broadcast", - "outputs" : ["Broadcast_494_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_541"], - "name" : "Broadcast_542", - "op" : "Broadcast", - "outputs" : ["Broadcast_542_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_533"], - "name" : "Broadcast_534", - "op" : "Broadcast", - "outputs" : ["Broadcast_534_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_526"], - "name" : "Broadcast_527", - "op" : "Broadcast", - "outputs" : ["Broadcast_527_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_574"], - "name" : "Broadcast_575", - "op" : "Broadcast", - "outputs" : ["Broadcast_575_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_566"], - "name" : "Broadcast_567", - "op" : "Broadcast", - "outputs" : ["Broadcast_567_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_559"], - "name" : "Broadcast_560", - "op" : "Broadcast", - "outputs" : ["Broadcast_560_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_607"], - "name" : "Broadcast_608", - "op" : "Broadcast", - "outputs" : ["Broadcast_608_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_599"], - "name" : "Broadcast_600", - "op" : "Broadcast", - "outputs" : ["Broadcast_600_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_592"], - "name" : "Broadcast_593", - "op" : "Broadcast", - "outputs" : ["Broadcast_593_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_640"], - "name" : "Broadcast_641", - "op" : "Broadcast", - "outputs" : ["Broadcast_641_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_632"], - "name" : "Broadcast_633", - "op" : "Broadcast", - "outputs" : ["Broadcast_633_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_625"], - "name" : "Broadcast_626", - "op" : "Broadcast", - "outputs" : ["Broadcast_626_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_673"], - "name" : "Broadcast_674", - "op" : "Broadcast", - "outputs" : ["Broadcast_674_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_665"], - "name" : "Broadcast_666", - "op" : "Broadcast", - "outputs" : ["Broadcast_666_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_658"], - "name" : "Broadcast_659", - "op" : "Broadcast", - "outputs" : ["Broadcast_659_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_706"], - "name" : "Broadcast_707", - "op" : "Broadcast", - "outputs" : ["Broadcast_707_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_698"], - "name" : "Broadcast_699", - "op" : "Broadcast", - "outputs" : ["Broadcast_699_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_691"], - "name" : "Broadcast_692", - "op" : "Broadcast", - "outputs" : ["Broadcast_692_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_739"], - "name" : "Broadcast_740", - "op" : "Broadcast", - "outputs" : ["Broadcast_740_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_731"], - "name" : "Broadcast_732", - "op" : "Broadcast", - "outputs" : ["Broadcast_732_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_724"], - "name" : "Broadcast_725", - "op" : "Broadcast", - "outputs" : ["Broadcast_725_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_772"], - "name" : "Broadcast_773", - "op" : "Broadcast", - "outputs" : ["Broadcast_773_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_764"], - "name" : "Broadcast_765", - "op" : "Broadcast", - "outputs" : ["Broadcast_765_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_757"], - "name" : "Broadcast_758", - "op" : "Broadcast", - "outputs" : ["Broadcast_758_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_805"], - "name" : "Broadcast_806", - "op" : "Broadcast", - "outputs" : ["Broadcast_806_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_797"], - "name" : "Broadcast_798", - "op" : "Broadcast", - "outputs" : ["Broadcast_798_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_790"], - "name" : "Broadcast_791", - "op" : "Broadcast", - "outputs" : ["Broadcast_791_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_838"], - "name" : "Broadcast_839", - "op" : "Broadcast", - "outputs" : ["Broadcast_839_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_830"], - "name" : "Broadcast_831", - "op" : "Broadcast", - "outputs" : ["Broadcast_831_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_823"], - "name" : "Broadcast_824", - "op" : "Broadcast", - "outputs" : ["Broadcast_824_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_871"], - "name" : "Broadcast_872", - "op" : "Broadcast", - "outputs" : ["Broadcast_872_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_863"], - "name" : "Broadcast_864", - "op" : "Broadcast", - "outputs" : ["Broadcast_864_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_856"], - "name" : "Broadcast_857", - "op" : "Broadcast", - "outputs" : ["Broadcast_857_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_904"], - "name" : "Broadcast_905", - "op" : "Broadcast", - "outputs" : ["Broadcast_905_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_896"], - "name" : "Broadcast_897", - "op" : "Broadcast", - "outputs" : ["Broadcast_897_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_889"], - "name" : "Broadcast_890", - "op" : "Broadcast", - "outputs" : ["Broadcast_890_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_937"], - "name" : "Broadcast_938", - "op" : "Broadcast", - "outputs" : ["Broadcast_938_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_929"], - "name" : "Broadcast_930", - "op" : "Broadcast", - "outputs" : ["Broadcast_930_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_922"], - "name" : "Broadcast_923", - "op" : "Broadcast", - "outputs" : ["Broadcast_923_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_970"], - "name" : "Broadcast_971", - "op" : "Broadcast", - "outputs" : ["Broadcast_971_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_962"], - "name" : "Broadcast_963", - "op" : "Broadcast", - "outputs" : ["Broadcast_963_0"], - "shape" : [ 10, 150 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_955"], - "name" : "Broadcast_956", - "op" : "Broadcast", - "outputs" : ["Broadcast_956_0"], - "shape" : [ 10, 150 ] - }, - { - "inputs" : [ "Parameter_153", "Reshape_156" ], - "name" : "Dot_157", - "op" : "Dot", - "outputs" : ["Dot_157_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_1"], - "name" : "Reshape_2", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_2_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_9"], - "name" : "Reshape_10", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_10_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_15"], - "name" : "Reshape_16", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_16_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_21"], - "name" : "Reshape_22", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_22_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27"], - "name" : "Reshape_28", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_28_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_33"], - "name" : "Reshape_34", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_34_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_39"], - "name" : "Reshape_40", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_40_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_45"], - "name" : "Reshape_46", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_46_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_51"], - "name" : "Reshape_52", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_52_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_57"], - "name" : "Reshape_58", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_58_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_63"], - "name" : "Reshape_64", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_64_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_69"], - "name" : "Reshape_70", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_70_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_75"], - "name" : "Reshape_76", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_76_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_81"], - "name" : "Reshape_82", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_82_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_87"], - "name" : "Reshape_88", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_88_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_93"], - "name" : "Reshape_94", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_94_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_99"], - "name" : "Reshape_100", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_100_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_105"], - "name" : "Reshape_106", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_106_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_111"], - "name" : "Reshape_112", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_112_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_117"], - "name" : "Reshape_118", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_118_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_123"], - "name" : "Reshape_124", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_124_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_129"], - "name" : "Reshape_130", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_130_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_135"], - "name" : "Reshape_136", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_136_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_141"], - "name" : "Reshape_142", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_142_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_147"], - "name" : "Reshape_148", - "op" : "Reshape", - "output_shape" : [ 10, 150 ], - "outputs" : ["Reshape_148_0"] - }, - { - "inputs" : [ "Dot_157", "Broadcast_158" ], - "name" : "Add_159", - "op" : "Add", - "outputs" : ["Add_159_0"] - }, - { - "inputs" : [ "Reshape_2", "Reshape_5" ], - "name" : "Dot_6", - "op" : "Dot", - "outputs" : ["Dot_6_0"] - }, - { - "inputs" : [ "Reshape_10", "Reshape_11" ], - "name" : "Dot_12", - "op" : "Dot", - "outputs" : ["Dot_12_0"] - }, - { - "inputs" : [ "Reshape_16", "Reshape_17" ], - "name" : "Dot_18", - "op" : "Dot", - "outputs" : ["Dot_18_0"] - }, - { - "inputs" : [ "Reshape_22", "Reshape_23" ], - "name" : "Dot_24", - "op" : "Dot", - "outputs" : ["Dot_24_0"] - }, - { - "inputs" : [ "Reshape_28", "Reshape_29" ], - "name" : "Dot_30", - "op" : "Dot", - "outputs" : ["Dot_30_0"] - }, - { - "inputs" : [ "Reshape_34", "Reshape_35" ], - "name" : "Dot_36", - "op" : "Dot", - "outputs" : ["Dot_36_0"] - }, - { - "inputs" : [ "Reshape_40", "Reshape_41" ], - "name" : "Dot_42", - "op" : "Dot", - "outputs" : ["Dot_42_0"] - }, - { - "inputs" : [ "Reshape_46", "Reshape_47" ], - "name" : "Dot_48", - "op" : "Dot", - "outputs" : ["Dot_48_0"] - }, - { - "inputs" : [ "Reshape_52", "Reshape_53" ], - "name" : "Dot_54", - "op" : "Dot", - "outputs" : ["Dot_54_0"] - }, - { - "inputs" : [ "Reshape_58", "Reshape_59" ], - "name" : "Dot_60", - "op" : "Dot", - "outputs" : ["Dot_60_0"] - }, - { - "inputs" : [ "Reshape_64", "Reshape_65" ], - "name" : "Dot_66", - "op" : "Dot", - "outputs" : ["Dot_66_0"] - }, - { - "inputs" : [ "Reshape_70", "Reshape_71" ], - "name" : "Dot_72", - "op" : "Dot", - "outputs" : ["Dot_72_0"] - }, - { - "inputs" : [ "Reshape_76", "Reshape_77" ], - "name" : "Dot_78", - "op" : "Dot", - "outputs" : ["Dot_78_0"] - }, - { - "inputs" : [ "Reshape_82", "Reshape_83" ], - "name" : "Dot_84", - "op" : "Dot", - "outputs" : ["Dot_84_0"] - }, - { - "inputs" : [ "Reshape_88", "Reshape_89" ], - "name" : "Dot_90", - "op" : "Dot", - "outputs" : ["Dot_90_0"] - }, - { - "inputs" : [ "Reshape_94", "Reshape_95" ], - "name" : "Dot_96", - "op" : "Dot", - "outputs" : ["Dot_96_0"] - }, - { - "inputs" : [ "Reshape_100", "Reshape_101" ], - "name" : "Dot_102", - "op" : "Dot", - "outputs" : ["Dot_102_0"] - }, - { - "inputs" : [ "Reshape_106", "Reshape_107" ], - "name" : "Dot_108", - "op" : "Dot", - "outputs" : ["Dot_108_0"] - }, - { - "inputs" : [ "Reshape_112", "Reshape_113" ], - "name" : "Dot_114", - "op" : "Dot", - "outputs" : ["Dot_114_0"] - }, - { - "inputs" : [ "Reshape_118", "Reshape_119" ], - "name" : "Dot_120", - "op" : "Dot", - "outputs" : ["Dot_120_0"] - }, - { - "inputs" : [ "Reshape_124", "Reshape_125" ], - "name" : "Dot_126", - "op" : "Dot", - "outputs" : ["Dot_126_0"] - }, - { - "inputs" : [ "Reshape_130", "Reshape_131" ], - "name" : "Dot_132", - "op" : "Dot", - "outputs" : ["Dot_132_0"] - }, - { - "inputs" : [ "Reshape_136", "Reshape_137" ], - "name" : "Dot_138", - "op" : "Dot", - "outputs" : ["Dot_138_0"] - }, - { - "inputs" : [ "Reshape_142", "Reshape_143" ], - "name" : "Dot_144", - "op" : "Dot", - "outputs" : ["Dot_144_0"] - }, - { - "inputs" : [ "Reshape_148", "Reshape_149" ], - "name" : "Dot_150", - "op" : "Dot", - "outputs" : ["Dot_150_0"] - }, - { - "inputs" : [ "Dot_6", "Broadcast_7" ], - "name" : "Add_8", - "op" : "Add", - "outputs" : ["Add_8_0"] - }, - { - "inputs" : [ "Dot_12", "Broadcast_13" ], - "name" : "Add_14", - "op" : "Add", - "outputs" : ["Add_14_0"] - }, - { - "inputs" : [ "Dot_18", "Broadcast_19" ], - "name" : "Add_20", - "op" : "Add", - "outputs" : ["Add_20_0"] - }, - { - "inputs" : [ "Dot_24", "Broadcast_25" ], - "name" : "Add_26", - "op" : "Add", - "outputs" : ["Add_26_0"] - }, - { - "inputs" : [ "Dot_30", "Broadcast_31" ], - "name" : "Add_32", - "op" : "Add", - "outputs" : ["Add_32_0"] - }, - { - "inputs" : [ "Dot_36", "Broadcast_37" ], - "name" : "Add_38", - "op" : "Add", - "outputs" : ["Add_38_0"] - }, - { - "inputs" : [ "Dot_42", "Broadcast_43" ], - "name" : "Add_44", - "op" : "Add", - "outputs" : ["Add_44_0"] - }, - { - "inputs" : [ "Dot_48", "Broadcast_49" ], - "name" : "Add_50", - "op" : "Add", - "outputs" : ["Add_50_0"] - }, - { - "inputs" : [ "Dot_54", "Broadcast_55" ], - "name" : "Add_56", - "op" : "Add", - "outputs" : ["Add_56_0"] - }, - { - "inputs" : [ "Dot_60", "Broadcast_61" ], - "name" : "Add_62", - "op" : "Add", - "outputs" : ["Add_62_0"] - }, - { - "inputs" : [ "Dot_66", "Broadcast_67" ], - "name" : "Add_68", - "op" : "Add", - "outputs" : ["Add_68_0"] - }, - { - "inputs" : [ "Dot_72", "Broadcast_73" ], - "name" : "Add_74", - "op" : "Add", - "outputs" : ["Add_74_0"] - }, - { - "inputs" : [ "Dot_78", "Broadcast_79" ], - "name" : "Add_80", - "op" : "Add", - "outputs" : ["Add_80_0"] - }, - { - "inputs" : [ "Dot_84", "Broadcast_85" ], - "name" : "Add_86", - "op" : "Add", - "outputs" : ["Add_86_0"] - }, - { - "inputs" : [ "Dot_90", "Broadcast_91" ], - "name" : "Add_92", - "op" : "Add", - "outputs" : ["Add_92_0"] - }, - { - "inputs" : [ "Dot_96", "Broadcast_97" ], - "name" : "Add_98", - "op" : "Add", - "outputs" : ["Add_98_0"] - }, - { - "inputs" : [ "Dot_102", "Broadcast_103" ], - "name" : "Add_104", - "op" : "Add", - "outputs" : ["Add_104_0"] - }, - { - "inputs" : [ "Dot_108", "Broadcast_109" ], - "name" : "Add_110", - "op" : "Add", - "outputs" : ["Add_110_0"] - }, - { - "inputs" : [ "Dot_114", "Broadcast_115" ], - "name" : "Add_116", - "op" : "Add", - "outputs" : ["Add_116_0"] - }, - { - "inputs" : [ "Dot_120", "Broadcast_121" ], - "name" : "Add_122", - "op" : "Add", - "outputs" : ["Add_122_0"] - }, - { - "inputs" : [ "Dot_126", "Broadcast_127" ], - "name" : "Add_128", - "op" : "Add", - "outputs" : ["Add_128_0"] - }, - { - "inputs" : [ "Dot_132", "Broadcast_133" ], - "name" : "Add_134", - "op" : "Add", - "outputs" : ["Add_134_0"] - }, - { - "inputs" : [ "Dot_138", "Broadcast_139" ], - "name" : "Add_140", - "op" : "Add", - "outputs" : ["Add_140_0"] - }, - { - "inputs" : [ "Dot_144", "Broadcast_145" ], - "name" : "Add_146", - "op" : "Add", - "outputs" : ["Add_146_0"] - }, - { - "inputs" : [ "Dot_150", "Broadcast_151" ], - "name" : "Add_152", - "op" : "Add", - "outputs" : ["Add_152_0"] - }, - { - "inputs" : [ "Add_152", "Add_159" ], - "name" : "Add_160", - "op" : "Add", - "outputs" : ["Add_160_0"] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_161", - "op" : "Slice", - "outputs" : ["Slice_161_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_168", - "op" : "Slice", - "outputs" : ["Slice_168_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_177", - "op" : "Slice", - "outputs" : ["Slice_177_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_160"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_184", - "op" : "Slice", - "outputs" : ["Slice_184_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_161"], - "name" : "Negative_164", - "op" : "Negative", - "outputs" : ["Negative_164_0"] - }, - { - "inputs" : ["Slice_168"], - "name" : "Negative_171", - "op" : "Negative", - "outputs" : ["Negative_171_0"] - }, - { - "inputs" : ["Slice_177"], - "name" : "Negative_180", - "op" : "Negative", - "outputs" : ["Negative_180_0"] - }, - { - "inputs" : ["Slice_184"], - "name" : "Tanh_185", - "op" : "Tanh", - "outputs" : ["Tanh_185_0"] - }, - { - "inputs" : ["Negative_164"], - "name" : "Exp_165", - "op" : "Exp", - "outputs" : ["Exp_165_0"] - }, - { - "inputs" : ["Negative_171"], - "name" : "Exp_172", - "op" : "Exp", - "outputs" : ["Exp_172_0"] - }, - { - "inputs" : ["Negative_180"], - "name" : "Exp_181", - "op" : "Exp", - "outputs" : ["Exp_181_0"] - }, - { - "inputs" : [ "Broadcast_163", "Exp_165" ], - "name" : "Add_166", - "op" : "Add", - "outputs" : ["Add_166_0"] - }, - { - "inputs" : [ "Broadcast_170", "Exp_172" ], - "name" : "Add_173", - "op" : "Add", - "outputs" : ["Add_173_0"] - }, - { - "inputs" : [ "Broadcast_179", "Exp_181" ], - "name" : "Add_182", - "op" : "Add", - "outputs" : ["Add_182_0"] - }, - { - "inputs" : [ "Broadcast_163", "Add_166" ], - "name" : "Divide_167", - "op" : "Divide", - "outputs" : ["Divide_167_0"] - }, - { - "inputs" : [ "Broadcast_170", "Add_173" ], - "name" : "Divide_174", - "op" : "Divide", - "outputs" : ["Divide_174_0"] - }, - { - "inputs" : [ "Broadcast_179", "Add_182" ], - "name" : "Divide_183", - "op" : "Divide", - "outputs" : ["Divide_183_0"] - }, - { - "inputs" : [ "Divide_174", "Parameter_175" ], - "name" : "Multiply_176", - "op" : "Multiply", - "outputs" : ["Multiply_176_0"] - }, - { - "inputs" : [ "Divide_183", "Tanh_185" ], - "name" : "Multiply_186", - "op" : "Multiply", - "outputs" : ["Multiply_186_0"] - }, - { - "inputs" : [ "Multiply_176", "Multiply_186" ], - "name" : "Add_187", - "op" : "Add", - "outputs" : ["Add_187_0"] - }, - { - "inputs" : ["Add_187"], - "name" : "Tanh_188", - "op" : "Tanh", - "outputs" : ["Tanh_188_0"] - }, - { - "inputs" : [ "Divide_167", "Tanh_188" ], - "name" : "Multiply_189", - "op" : "Multiply", - "outputs" : ["Multiply_189_0"] - }, - { - "inputs" : [ "Multiply_189", "Reshape_190" ], - "name" : "Dot_191", - "op" : "Dot", - "outputs" : ["Dot_191_0"] - }, - { - "inputs" : [ "Dot_191", "Broadcast_192" ], - "name" : "Add_193", - "op" : "Add", - "outputs" : ["Add_193_0"] - }, - { - "inputs" : [ "Add_146", "Add_193" ], - "name" : "Add_194", - "op" : "Add", - "outputs" : ["Add_194_0"] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_195", - "op" : "Slice", - "outputs" : ["Slice_195_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_202", - "op" : "Slice", - "outputs" : ["Slice_202_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_210", - "op" : "Slice", - "outputs" : ["Slice_210_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_194"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_217", - "op" : "Slice", - "outputs" : ["Slice_217_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_195"], - "name" : "Negative_198", - "op" : "Negative", - "outputs" : ["Negative_198_0"] - }, - { - "inputs" : ["Slice_202"], - "name" : "Negative_205", - "op" : "Negative", - "outputs" : ["Negative_205_0"] - }, - { - "inputs" : ["Slice_210"], - "name" : "Negative_213", - "op" : "Negative", - "outputs" : ["Negative_213_0"] - }, - { - "inputs" : ["Slice_217"], - "name" : "Tanh_218", - "op" : "Tanh", - "outputs" : ["Tanh_218_0"] - }, - { - "inputs" : ["Negative_198"], - "name" : "Exp_199", - "op" : "Exp", - "outputs" : ["Exp_199_0"] - }, - { - "inputs" : ["Negative_205"], - "name" : "Exp_206", - "op" : "Exp", - "outputs" : ["Exp_206_0"] - }, - { - "inputs" : ["Negative_213"], - "name" : "Exp_214", - "op" : "Exp", - "outputs" : ["Exp_214_0"] - }, - { - "inputs" : [ "Broadcast_197", "Exp_199" ], - "name" : "Add_200", - "op" : "Add", - "outputs" : ["Add_200_0"] - }, - { - "inputs" : [ "Broadcast_204", "Exp_206" ], - "name" : "Add_207", - "op" : "Add", - "outputs" : ["Add_207_0"] - }, - { - "inputs" : [ "Broadcast_212", "Exp_214" ], - "name" : "Add_215", - "op" : "Add", - "outputs" : ["Add_215_0"] - }, - { - "inputs" : [ "Broadcast_197", "Add_200" ], - "name" : "Divide_201", - "op" : "Divide", - "outputs" : ["Divide_201_0"] - }, - { - "inputs" : [ "Broadcast_204", "Add_207" ], - "name" : "Divide_208", - "op" : "Divide", - "outputs" : ["Divide_208_0"] - }, - { - "inputs" : [ "Broadcast_212", "Add_215" ], - "name" : "Divide_216", - "op" : "Divide", - "outputs" : ["Divide_216_0"] - }, - { - "inputs" : [ "Divide_208", "Add_187" ], - "name" : "Multiply_209", - "op" : "Multiply", - "outputs" : ["Multiply_209_0"] - }, - { - "inputs" : [ "Divide_216", "Tanh_218" ], - "name" : "Multiply_219", - "op" : "Multiply", - "outputs" : ["Multiply_219_0"] - }, - { - "inputs" : [ "Multiply_209", "Multiply_219" ], - "name" : "Add_220", - "op" : "Add", - "outputs" : ["Add_220_0"] - }, - { - "inputs" : ["Add_220"], - "name" : "Tanh_221", - "op" : "Tanh", - "outputs" : ["Tanh_221_0"] - }, - { - "inputs" : [ "Divide_201", "Tanh_221" ], - "name" : "Multiply_222", - "op" : "Multiply", - "outputs" : ["Multiply_222_0"] - }, - { - "inputs" : [ "Multiply_222", "Reshape_223" ], - "name" : "Dot_224", - "op" : "Dot", - "outputs" : ["Dot_224_0"] - }, - { - "inputs" : [ "Dot_224", "Broadcast_225" ], - "name" : "Add_226", - "op" : "Add", - "outputs" : ["Add_226_0"] - }, - { - "inputs" : [ "Add_140", "Add_226" ], - "name" : "Add_227", - "op" : "Add", - "outputs" : ["Add_227_0"] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_228", - "op" : "Slice", - "outputs" : ["Slice_228_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_235", - "op" : "Slice", - "outputs" : ["Slice_235_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_243", - "op" : "Slice", - "outputs" : ["Slice_243_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_227"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_250", - "op" : "Slice", - "outputs" : ["Slice_250_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_228"], - "name" : "Negative_231", - "op" : "Negative", - "outputs" : ["Negative_231_0"] - }, - { - "inputs" : ["Slice_235"], - "name" : "Negative_238", - "op" : "Negative", - "outputs" : ["Negative_238_0"] - }, - { - "inputs" : ["Slice_243"], - "name" : "Negative_246", - "op" : "Negative", - "outputs" : ["Negative_246_0"] - }, - { - "inputs" : ["Slice_250"], - "name" : "Tanh_251", - "op" : "Tanh", - "outputs" : ["Tanh_251_0"] - }, - { - "inputs" : ["Negative_231"], - "name" : "Exp_232", - "op" : "Exp", - "outputs" : ["Exp_232_0"] - }, - { - "inputs" : ["Negative_238"], - "name" : "Exp_239", - "op" : "Exp", - "outputs" : ["Exp_239_0"] - }, - { - "inputs" : ["Negative_246"], - "name" : "Exp_247", - "op" : "Exp", - "outputs" : ["Exp_247_0"] - }, - { - "inputs" : [ "Broadcast_230", "Exp_232" ], - "name" : "Add_233", - "op" : "Add", - "outputs" : ["Add_233_0"] - }, - { - "inputs" : [ "Broadcast_237", "Exp_239" ], - "name" : "Add_240", - "op" : "Add", - "outputs" : ["Add_240_0"] - }, - { - "inputs" : [ "Broadcast_245", "Exp_247" ], - "name" : "Add_248", - "op" : "Add", - "outputs" : ["Add_248_0"] - }, - { - "inputs" : [ "Broadcast_230", "Add_233" ], - "name" : "Divide_234", - "op" : "Divide", - "outputs" : ["Divide_234_0"] - }, - { - "inputs" : [ "Broadcast_237", "Add_240" ], - "name" : "Divide_241", - "op" : "Divide", - "outputs" : ["Divide_241_0"] - }, - { - "inputs" : [ "Broadcast_245", "Add_248" ], - "name" : "Divide_249", - "op" : "Divide", - "outputs" : ["Divide_249_0"] - }, - { - "inputs" : [ "Divide_241", "Add_220" ], - "name" : "Multiply_242", - "op" : "Multiply", - "outputs" : ["Multiply_242_0"] - }, - { - "inputs" : [ "Divide_249", "Tanh_251" ], - "name" : "Multiply_252", - "op" : "Multiply", - "outputs" : ["Multiply_252_0"] - }, - { - "inputs" : [ "Multiply_242", "Multiply_252" ], - "name" : "Add_253", - "op" : "Add", - "outputs" : ["Add_253_0"] - }, - { - "inputs" : ["Add_253"], - "name" : "Tanh_254", - "op" : "Tanh", - "outputs" : ["Tanh_254_0"] - }, - { - "inputs" : [ "Divide_234", "Tanh_254" ], - "name" : "Multiply_255", - "op" : "Multiply", - "outputs" : ["Multiply_255_0"] - }, - { - "inputs" : [ "Multiply_255", "Reshape_256" ], - "name" : "Dot_257", - "op" : "Dot", - "outputs" : ["Dot_257_0"] - }, - { - "inputs" : [ "Dot_257", "Broadcast_258" ], - "name" : "Add_259", - "op" : "Add", - "outputs" : ["Add_259_0"] - }, - { - "inputs" : [ "Add_134", "Add_259" ], - "name" : "Add_260", - "op" : "Add", - "outputs" : ["Add_260_0"] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_261", - "op" : "Slice", - "outputs" : ["Slice_261_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_268", - "op" : "Slice", - "outputs" : ["Slice_268_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_276", - "op" : "Slice", - "outputs" : ["Slice_276_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_260"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_283", - "op" : "Slice", - "outputs" : ["Slice_283_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_261"], - "name" : "Negative_264", - "op" : "Negative", - "outputs" : ["Negative_264_0"] - }, - { - "inputs" : ["Slice_268"], - "name" : "Negative_271", - "op" : "Negative", - "outputs" : ["Negative_271_0"] - }, - { - "inputs" : ["Slice_276"], - "name" : "Negative_279", - "op" : "Negative", - "outputs" : ["Negative_279_0"] - }, - { - "inputs" : ["Slice_283"], - "name" : "Tanh_284", - "op" : "Tanh", - "outputs" : ["Tanh_284_0"] - }, - { - "inputs" : ["Negative_264"], - "name" : "Exp_265", - "op" : "Exp", - "outputs" : ["Exp_265_0"] - }, - { - "inputs" : ["Negative_271"], - "name" : "Exp_272", - "op" : "Exp", - "outputs" : ["Exp_272_0"] - }, - { - "inputs" : ["Negative_279"], - "name" : "Exp_280", - "op" : "Exp", - "outputs" : ["Exp_280_0"] - }, - { - "inputs" : [ "Broadcast_263", "Exp_265" ], - "name" : "Add_266", - "op" : "Add", - "outputs" : ["Add_266_0"] - }, - { - "inputs" : [ "Broadcast_270", "Exp_272" ], - "name" : "Add_273", - "op" : "Add", - "outputs" : ["Add_273_0"] - }, - { - "inputs" : [ "Broadcast_278", "Exp_280" ], - "name" : "Add_281", - "op" : "Add", - "outputs" : ["Add_281_0"] - }, - { - "inputs" : [ "Broadcast_263", "Add_266" ], - "name" : "Divide_267", - "op" : "Divide", - "outputs" : ["Divide_267_0"] - }, - { - "inputs" : [ "Broadcast_270", "Add_273" ], - "name" : "Divide_274", - "op" : "Divide", - "outputs" : ["Divide_274_0"] - }, - { - "inputs" : [ "Broadcast_278", "Add_281" ], - "name" : "Divide_282", - "op" : "Divide", - "outputs" : ["Divide_282_0"] - }, - { - "inputs" : [ "Divide_274", "Add_253" ], - "name" : "Multiply_275", - "op" : "Multiply", - "outputs" : ["Multiply_275_0"] - }, - { - "inputs" : [ "Divide_282", "Tanh_284" ], - "name" : "Multiply_285", - "op" : "Multiply", - "outputs" : ["Multiply_285_0"] - }, - { - "inputs" : [ "Multiply_275", "Multiply_285" ], - "name" : "Add_286", - "op" : "Add", - "outputs" : ["Add_286_0"] - }, - { - "inputs" : ["Add_286"], - "name" : "Tanh_287", - "op" : "Tanh", - "outputs" : ["Tanh_287_0"] - }, - { - "inputs" : [ "Divide_267", "Tanh_287" ], - "name" : "Multiply_288", - "op" : "Multiply", - "outputs" : ["Multiply_288_0"] - }, - { - "inputs" : [ "Multiply_288", "Reshape_289" ], - "name" : "Dot_290", - "op" : "Dot", - "outputs" : ["Dot_290_0"] - }, - { - "inputs" : [ "Dot_290", "Broadcast_291" ], - "name" : "Add_292", - "op" : "Add", - "outputs" : ["Add_292_0"] - }, - { - "inputs" : [ "Add_128", "Add_292" ], - "name" : "Add_293", - "op" : "Add", - "outputs" : ["Add_293_0"] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_294", - "op" : "Slice", - "outputs" : ["Slice_294_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_301", - "op" : "Slice", - "outputs" : ["Slice_301_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_309", - "op" : "Slice", - "outputs" : ["Slice_309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_293"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_316", - "op" : "Slice", - "outputs" : ["Slice_316_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_294"], - "name" : "Negative_297", - "op" : "Negative", - "outputs" : ["Negative_297_0"] - }, - { - "inputs" : ["Slice_301"], - "name" : "Negative_304", - "op" : "Negative", - "outputs" : ["Negative_304_0"] - }, - { - "inputs" : ["Slice_309"], - "name" : "Negative_312", - "op" : "Negative", - "outputs" : ["Negative_312_0"] - }, - { - "inputs" : ["Slice_316"], - "name" : "Tanh_317", - "op" : "Tanh", - "outputs" : ["Tanh_317_0"] - }, - { - "inputs" : ["Negative_297"], - "name" : "Exp_298", - "op" : "Exp", - "outputs" : ["Exp_298_0"] - }, - { - "inputs" : ["Negative_304"], - "name" : "Exp_305", - "op" : "Exp", - "outputs" : ["Exp_305_0"] - }, - { - "inputs" : ["Negative_312"], - "name" : "Exp_313", - "op" : "Exp", - "outputs" : ["Exp_313_0"] - }, - { - "inputs" : [ "Broadcast_296", "Exp_298" ], - "name" : "Add_299", - "op" : "Add", - "outputs" : ["Add_299_0"] - }, - { - "inputs" : [ "Broadcast_303", "Exp_305" ], - "name" : "Add_306", - "op" : "Add", - "outputs" : ["Add_306_0"] - }, - { - "inputs" : [ "Broadcast_311", "Exp_313" ], - "name" : "Add_314", - "op" : "Add", - "outputs" : ["Add_314_0"] - }, - { - "inputs" : [ "Broadcast_296", "Add_299" ], - "name" : "Divide_300", - "op" : "Divide", - "outputs" : ["Divide_300_0"] - }, - { - "inputs" : [ "Broadcast_303", "Add_306" ], - "name" : "Divide_307", - "op" : "Divide", - "outputs" : ["Divide_307_0"] - }, - { - "inputs" : [ "Broadcast_311", "Add_314" ], - "name" : "Divide_315", - "op" : "Divide", - "outputs" : ["Divide_315_0"] - }, - { - "inputs" : [ "Divide_307", "Add_286" ], - "name" : "Multiply_308", - "op" : "Multiply", - "outputs" : ["Multiply_308_0"] - }, - { - "inputs" : [ "Divide_315", "Tanh_317" ], - "name" : "Multiply_318", - "op" : "Multiply", - "outputs" : ["Multiply_318_0"] - }, - { - "inputs" : [ "Multiply_308", "Multiply_318" ], - "name" : "Add_319", - "op" : "Add", - "outputs" : ["Add_319_0"] - }, - { - "inputs" : ["Add_319"], - "name" : "Tanh_320", - "op" : "Tanh", - "outputs" : ["Tanh_320_0"] - }, - { - "inputs" : [ "Divide_300", "Tanh_320" ], - "name" : "Multiply_321", - "op" : "Multiply", - "outputs" : ["Multiply_321_0"] - }, - { - "inputs" : [ "Multiply_321", "Reshape_322" ], - "name" : "Dot_323", - "op" : "Dot", - "outputs" : ["Dot_323_0"] - }, - { - "inputs" : [ "Dot_323", "Broadcast_324" ], - "name" : "Add_325", - "op" : "Add", - "outputs" : ["Add_325_0"] - }, - { - "inputs" : [ "Add_122", "Add_325" ], - "name" : "Add_326", - "op" : "Add", - "outputs" : ["Add_326_0"] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_327", - "op" : "Slice", - "outputs" : ["Slice_327_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_334", - "op" : "Slice", - "outputs" : ["Slice_334_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_342", - "op" : "Slice", - "outputs" : ["Slice_342_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_326"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_349", - "op" : "Slice", - "outputs" : ["Slice_349_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_327"], - "name" : "Negative_330", - "op" : "Negative", - "outputs" : ["Negative_330_0"] - }, - { - "inputs" : ["Slice_334"], - "name" : "Negative_337", - "op" : "Negative", - "outputs" : ["Negative_337_0"] - }, - { - "inputs" : ["Slice_342"], - "name" : "Negative_345", - "op" : "Negative", - "outputs" : ["Negative_345_0"] - }, - { - "inputs" : ["Slice_349"], - "name" : "Tanh_350", - "op" : "Tanh", - "outputs" : ["Tanh_350_0"] - }, - { - "inputs" : ["Negative_330"], - "name" : "Exp_331", - "op" : "Exp", - "outputs" : ["Exp_331_0"] - }, - { - "inputs" : ["Negative_337"], - "name" : "Exp_338", - "op" : "Exp", - "outputs" : ["Exp_338_0"] - }, - { - "inputs" : ["Negative_345"], - "name" : "Exp_346", - "op" : "Exp", - "outputs" : ["Exp_346_0"] - }, - { - "inputs" : [ "Broadcast_329", "Exp_331" ], - "name" : "Add_332", - "op" : "Add", - "outputs" : ["Add_332_0"] - }, - { - "inputs" : [ "Broadcast_336", "Exp_338" ], - "name" : "Add_339", - "op" : "Add", - "outputs" : ["Add_339_0"] - }, - { - "inputs" : [ "Broadcast_344", "Exp_346" ], - "name" : "Add_347", - "op" : "Add", - "outputs" : ["Add_347_0"] - }, - { - "inputs" : [ "Broadcast_329", "Add_332" ], - "name" : "Divide_333", - "op" : "Divide", - "outputs" : ["Divide_333_0"] - }, - { - "inputs" : [ "Broadcast_336", "Add_339" ], - "name" : "Divide_340", - "op" : "Divide", - "outputs" : ["Divide_340_0"] - }, - { - "inputs" : [ "Broadcast_344", "Add_347" ], - "name" : "Divide_348", - "op" : "Divide", - "outputs" : ["Divide_348_0"] - }, - { - "inputs" : [ "Divide_340", "Add_319" ], - "name" : "Multiply_341", - "op" : "Multiply", - "outputs" : ["Multiply_341_0"] - }, - { - "inputs" : [ "Divide_348", "Tanh_350" ], - "name" : "Multiply_351", - "op" : "Multiply", - "outputs" : ["Multiply_351_0"] - }, - { - "inputs" : [ "Multiply_341", "Multiply_351" ], - "name" : "Add_352", - "op" : "Add", - "outputs" : ["Add_352_0"] - }, - { - "inputs" : ["Add_352"], - "name" : "Tanh_353", - "op" : "Tanh", - "outputs" : ["Tanh_353_0"] - }, - { - "inputs" : [ "Divide_333", "Tanh_353" ], - "name" : "Multiply_354", - "op" : "Multiply", - "outputs" : ["Multiply_354_0"] - }, - { - "inputs" : [ "Multiply_354", "Reshape_355" ], - "name" : "Dot_356", - "op" : "Dot", - "outputs" : ["Dot_356_0"] - }, - { - "inputs" : [ "Dot_356", "Broadcast_357" ], - "name" : "Add_358", - "op" : "Add", - "outputs" : ["Add_358_0"] - }, - { - "inputs" : [ "Add_116", "Add_358" ], - "name" : "Add_359", - "op" : "Add", - "outputs" : ["Add_359_0"] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_360", - "op" : "Slice", - "outputs" : ["Slice_360_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_367", - "op" : "Slice", - "outputs" : ["Slice_367_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_375", - "op" : "Slice", - "outputs" : ["Slice_375_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_359"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_382", - "op" : "Slice", - "outputs" : ["Slice_382_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_360"], - "name" : "Negative_363", - "op" : "Negative", - "outputs" : ["Negative_363_0"] - }, - { - "inputs" : ["Slice_367"], - "name" : "Negative_370", - "op" : "Negative", - "outputs" : ["Negative_370_0"] - }, - { - "inputs" : ["Slice_375"], - "name" : "Negative_378", - "op" : "Negative", - "outputs" : ["Negative_378_0"] - }, - { - "inputs" : ["Slice_382"], - "name" : "Tanh_383", - "op" : "Tanh", - "outputs" : ["Tanh_383_0"] - }, - { - "inputs" : ["Negative_363"], - "name" : "Exp_364", - "op" : "Exp", - "outputs" : ["Exp_364_0"] - }, - { - "inputs" : ["Negative_370"], - "name" : "Exp_371", - "op" : "Exp", - "outputs" : ["Exp_371_0"] - }, - { - "inputs" : ["Negative_378"], - "name" : "Exp_379", - "op" : "Exp", - "outputs" : ["Exp_379_0"] - }, - { - "inputs" : [ "Broadcast_362", "Exp_364" ], - "name" : "Add_365", - "op" : "Add", - "outputs" : ["Add_365_0"] - }, - { - "inputs" : [ "Broadcast_369", "Exp_371" ], - "name" : "Add_372", - "op" : "Add", - "outputs" : ["Add_372_0"] - }, - { - "inputs" : [ "Broadcast_377", "Exp_379" ], - "name" : "Add_380", - "op" : "Add", - "outputs" : ["Add_380_0"] - }, - { - "inputs" : [ "Broadcast_362", "Add_365" ], - "name" : "Divide_366", - "op" : "Divide", - "outputs" : ["Divide_366_0"] - }, - { - "inputs" : [ "Broadcast_369", "Add_372" ], - "name" : "Divide_373", - "op" : "Divide", - "outputs" : ["Divide_373_0"] - }, - { - "inputs" : [ "Broadcast_377", "Add_380" ], - "name" : "Divide_381", - "op" : "Divide", - "outputs" : ["Divide_381_0"] - }, - { - "inputs" : [ "Divide_373", "Add_352" ], - "name" : "Multiply_374", - "op" : "Multiply", - "outputs" : ["Multiply_374_0"] - }, - { - "inputs" : [ "Divide_381", "Tanh_383" ], - "name" : "Multiply_384", - "op" : "Multiply", - "outputs" : ["Multiply_384_0"] - }, - { - "inputs" : [ "Multiply_374", "Multiply_384" ], - "name" : "Add_385", - "op" : "Add", - "outputs" : ["Add_385_0"] - }, - { - "inputs" : ["Add_385"], - "name" : "Tanh_386", - "op" : "Tanh", - "outputs" : ["Tanh_386_0"] - }, - { - "inputs" : [ "Divide_366", "Tanh_386" ], - "name" : "Multiply_387", - "op" : "Multiply", - "outputs" : ["Multiply_387_0"] - }, - { - "inputs" : [ "Multiply_387", "Reshape_388" ], - "name" : "Dot_389", - "op" : "Dot", - "outputs" : ["Dot_389_0"] - }, - { - "inputs" : [ "Dot_389", "Broadcast_390" ], - "name" : "Add_391", - "op" : "Add", - "outputs" : ["Add_391_0"] - }, - { - "inputs" : [ "Add_110", "Add_391" ], - "name" : "Add_392", - "op" : "Add", - "outputs" : ["Add_392_0"] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_393", - "op" : "Slice", - "outputs" : ["Slice_393_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_400", - "op" : "Slice", - "outputs" : ["Slice_400_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_408", - "op" : "Slice", - "outputs" : ["Slice_408_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_392"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_415", - "op" : "Slice", - "outputs" : ["Slice_415_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_393"], - "name" : "Negative_396", - "op" : "Negative", - "outputs" : ["Negative_396_0"] - }, - { - "inputs" : ["Slice_400"], - "name" : "Negative_403", - "op" : "Negative", - "outputs" : ["Negative_403_0"] - }, - { - "inputs" : ["Slice_408"], - "name" : "Negative_411", - "op" : "Negative", - "outputs" : ["Negative_411_0"] - }, - { - "inputs" : ["Slice_415"], - "name" : "Tanh_416", - "op" : "Tanh", - "outputs" : ["Tanh_416_0"] - }, - { - "inputs" : ["Negative_396"], - "name" : "Exp_397", - "op" : "Exp", - "outputs" : ["Exp_397_0"] - }, - { - "inputs" : ["Negative_403"], - "name" : "Exp_404", - "op" : "Exp", - "outputs" : ["Exp_404_0"] - }, - { - "inputs" : ["Negative_411"], - "name" : "Exp_412", - "op" : "Exp", - "outputs" : ["Exp_412_0"] - }, - { - "inputs" : [ "Broadcast_395", "Exp_397" ], - "name" : "Add_398", - "op" : "Add", - "outputs" : ["Add_398_0"] - }, - { - "inputs" : [ "Broadcast_402", "Exp_404" ], - "name" : "Add_405", - "op" : "Add", - "outputs" : ["Add_405_0"] - }, - { - "inputs" : [ "Broadcast_410", "Exp_412" ], - "name" : "Add_413", - "op" : "Add", - "outputs" : ["Add_413_0"] - }, - { - "inputs" : [ "Broadcast_395", "Add_398" ], - "name" : "Divide_399", - "op" : "Divide", - "outputs" : ["Divide_399_0"] - }, - { - "inputs" : [ "Broadcast_402", "Add_405" ], - "name" : "Divide_406", - "op" : "Divide", - "outputs" : ["Divide_406_0"] - }, - { - "inputs" : [ "Broadcast_410", "Add_413" ], - "name" : "Divide_414", - "op" : "Divide", - "outputs" : ["Divide_414_0"] - }, - { - "inputs" : [ "Divide_406", "Add_385" ], - "name" : "Multiply_407", - "op" : "Multiply", - "outputs" : ["Multiply_407_0"] - }, - { - "inputs" : [ "Divide_414", "Tanh_416" ], - "name" : "Multiply_417", - "op" : "Multiply", - "outputs" : ["Multiply_417_0"] - }, - { - "inputs" : [ "Multiply_407", "Multiply_417" ], - "name" : "Add_418", - "op" : "Add", - "outputs" : ["Add_418_0"] - }, - { - "inputs" : ["Add_418"], - "name" : "Tanh_419", - "op" : "Tanh", - "outputs" : ["Tanh_419_0"] - }, - { - "inputs" : [ "Divide_399", "Tanh_419" ], - "name" : "Multiply_420", - "op" : "Multiply", - "outputs" : ["Multiply_420_0"] - }, - { - "inputs" : [ "Multiply_420", "Reshape_421" ], - "name" : "Dot_422", - "op" : "Dot", - "outputs" : ["Dot_422_0"] - }, - { - "inputs" : [ "Dot_422", "Broadcast_423" ], - "name" : "Add_424", - "op" : "Add", - "outputs" : ["Add_424_0"] - }, - { - "inputs" : [ "Add_104", "Add_424" ], - "name" : "Add_425", - "op" : "Add", - "outputs" : ["Add_425_0"] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_426", - "op" : "Slice", - "outputs" : ["Slice_426_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_433", - "op" : "Slice", - "outputs" : ["Slice_433_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_441", - "op" : "Slice", - "outputs" : ["Slice_441_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_425"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_448", - "op" : "Slice", - "outputs" : ["Slice_448_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_426"], - "name" : "Negative_429", - "op" : "Negative", - "outputs" : ["Negative_429_0"] - }, - { - "inputs" : ["Slice_433"], - "name" : "Negative_436", - "op" : "Negative", - "outputs" : ["Negative_436_0"] - }, - { - "inputs" : ["Slice_441"], - "name" : "Negative_444", - "op" : "Negative", - "outputs" : ["Negative_444_0"] - }, - { - "inputs" : ["Slice_448"], - "name" : "Tanh_449", - "op" : "Tanh", - "outputs" : ["Tanh_449_0"] - }, - { - "inputs" : ["Negative_429"], - "name" : "Exp_430", - "op" : "Exp", - "outputs" : ["Exp_430_0"] - }, - { - "inputs" : ["Negative_436"], - "name" : "Exp_437", - "op" : "Exp", - "outputs" : ["Exp_437_0"] - }, - { - "inputs" : ["Negative_444"], - "name" : "Exp_445", - "op" : "Exp", - "outputs" : ["Exp_445_0"] - }, - { - "inputs" : [ "Broadcast_428", "Exp_430" ], - "name" : "Add_431", - "op" : "Add", - "outputs" : ["Add_431_0"] - }, - { - "inputs" : [ "Broadcast_435", "Exp_437" ], - "name" : "Add_438", - "op" : "Add", - "outputs" : ["Add_438_0"] - }, - { - "inputs" : [ "Broadcast_443", "Exp_445" ], - "name" : "Add_446", - "op" : "Add", - "outputs" : ["Add_446_0"] - }, - { - "inputs" : [ "Broadcast_428", "Add_431" ], - "name" : "Divide_432", - "op" : "Divide", - "outputs" : ["Divide_432_0"] - }, - { - "inputs" : [ "Broadcast_435", "Add_438" ], - "name" : "Divide_439", - "op" : "Divide", - "outputs" : ["Divide_439_0"] - }, - { - "inputs" : [ "Broadcast_443", "Add_446" ], - "name" : "Divide_447", - "op" : "Divide", - "outputs" : ["Divide_447_0"] - }, - { - "inputs" : [ "Divide_439", "Add_418" ], - "name" : "Multiply_440", - "op" : "Multiply", - "outputs" : ["Multiply_440_0"] - }, - { - "inputs" : [ "Divide_447", "Tanh_449" ], - "name" : "Multiply_450", - "op" : "Multiply", - "outputs" : ["Multiply_450_0"] - }, - { - "inputs" : [ "Multiply_440", "Multiply_450" ], - "name" : "Add_451", - "op" : "Add", - "outputs" : ["Add_451_0"] - }, - { - "inputs" : ["Add_451"], - "name" : "Tanh_452", - "op" : "Tanh", - "outputs" : ["Tanh_452_0"] - }, - { - "inputs" : [ "Divide_432", "Tanh_452" ], - "name" : "Multiply_453", - "op" : "Multiply", - "outputs" : ["Multiply_453_0"] - }, - { - "inputs" : [ "Multiply_453", "Reshape_454" ], - "name" : "Dot_455", - "op" : "Dot", - "outputs" : ["Dot_455_0"] - }, - { - "inputs" : [ "Dot_455", "Broadcast_456" ], - "name" : "Add_457", - "op" : "Add", - "outputs" : ["Add_457_0"] - }, - { - "inputs" : [ "Add_98", "Add_457" ], - "name" : "Add_458", - "op" : "Add", - "outputs" : ["Add_458_0"] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_459", - "op" : "Slice", - "outputs" : ["Slice_459_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_466", - "op" : "Slice", - "outputs" : ["Slice_466_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_474", - "op" : "Slice", - "outputs" : ["Slice_474_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_458"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_481", - "op" : "Slice", - "outputs" : ["Slice_481_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_459"], - "name" : "Negative_462", - "op" : "Negative", - "outputs" : ["Negative_462_0"] - }, - { - "inputs" : ["Slice_466"], - "name" : "Negative_469", - "op" : "Negative", - "outputs" : ["Negative_469_0"] - }, - { - "inputs" : ["Slice_474"], - "name" : "Negative_477", - "op" : "Negative", - "outputs" : ["Negative_477_0"] - }, - { - "inputs" : ["Slice_481"], - "name" : "Tanh_482", - "op" : "Tanh", - "outputs" : ["Tanh_482_0"] - }, - { - "inputs" : ["Negative_462"], - "name" : "Exp_463", - "op" : "Exp", - "outputs" : ["Exp_463_0"] - }, - { - "inputs" : ["Negative_469"], - "name" : "Exp_470", - "op" : "Exp", - "outputs" : ["Exp_470_0"] - }, - { - "inputs" : ["Negative_477"], - "name" : "Exp_478", - "op" : "Exp", - "outputs" : ["Exp_478_0"] - }, - { - "inputs" : [ "Broadcast_461", "Exp_463" ], - "name" : "Add_464", - "op" : "Add", - "outputs" : ["Add_464_0"] - }, - { - "inputs" : [ "Broadcast_468", "Exp_470" ], - "name" : "Add_471", - "op" : "Add", - "outputs" : ["Add_471_0"] - }, - { - "inputs" : [ "Broadcast_476", "Exp_478" ], - "name" : "Add_479", - "op" : "Add", - "outputs" : ["Add_479_0"] - }, - { - "inputs" : [ "Broadcast_461", "Add_464" ], - "name" : "Divide_465", - "op" : "Divide", - "outputs" : ["Divide_465_0"] - }, - { - "inputs" : [ "Broadcast_468", "Add_471" ], - "name" : "Divide_472", - "op" : "Divide", - "outputs" : ["Divide_472_0"] - }, - { - "inputs" : [ "Broadcast_476", "Add_479" ], - "name" : "Divide_480", - "op" : "Divide", - "outputs" : ["Divide_480_0"] - }, - { - "inputs" : [ "Divide_472", "Add_451" ], - "name" : "Multiply_473", - "op" : "Multiply", - "outputs" : ["Multiply_473_0"] - }, - { - "inputs" : [ "Divide_480", "Tanh_482" ], - "name" : "Multiply_483", - "op" : "Multiply", - "outputs" : ["Multiply_483_0"] - }, - { - "inputs" : [ "Multiply_473", "Multiply_483" ], - "name" : "Add_484", - "op" : "Add", - "outputs" : ["Add_484_0"] - }, - { - "inputs" : ["Add_484"], - "name" : "Tanh_485", - "op" : "Tanh", - "outputs" : ["Tanh_485_0"] - }, - { - "inputs" : [ "Divide_465", "Tanh_485" ], - "name" : "Multiply_486", - "op" : "Multiply", - "outputs" : ["Multiply_486_0"] - }, - { - "inputs" : [ "Multiply_486", "Reshape_487" ], - "name" : "Dot_488", - "op" : "Dot", - "outputs" : ["Dot_488_0"] - }, - { - "inputs" : [ "Dot_488", "Broadcast_489" ], - "name" : "Add_490", - "op" : "Add", - "outputs" : ["Add_490_0"] - }, - { - "inputs" : [ "Add_92", "Add_490" ], - "name" : "Add_491", - "op" : "Add", - "outputs" : ["Add_491_0"] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_492", - "op" : "Slice", - "outputs" : ["Slice_492_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_499", - "op" : "Slice", - "outputs" : ["Slice_499_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_507", - "op" : "Slice", - "outputs" : ["Slice_507_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_491"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_514", - "op" : "Slice", - "outputs" : ["Slice_514_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_492"], - "name" : "Negative_495", - "op" : "Negative", - "outputs" : ["Negative_495_0"] - }, - { - "inputs" : ["Slice_499"], - "name" : "Negative_502", - "op" : "Negative", - "outputs" : ["Negative_502_0"] - }, - { - "inputs" : ["Slice_507"], - "name" : "Negative_510", - "op" : "Negative", - "outputs" : ["Negative_510_0"] - }, - { - "inputs" : ["Slice_514"], - "name" : "Tanh_515", - "op" : "Tanh", - "outputs" : ["Tanh_515_0"] - }, - { - "inputs" : ["Negative_495"], - "name" : "Exp_496", - "op" : "Exp", - "outputs" : ["Exp_496_0"] - }, - { - "inputs" : ["Negative_502"], - "name" : "Exp_503", - "op" : "Exp", - "outputs" : ["Exp_503_0"] - }, - { - "inputs" : ["Negative_510"], - "name" : "Exp_511", - "op" : "Exp", - "outputs" : ["Exp_511_0"] - }, - { - "inputs" : [ "Broadcast_494", "Exp_496" ], - "name" : "Add_497", - "op" : "Add", - "outputs" : ["Add_497_0"] - }, - { - "inputs" : [ "Broadcast_501", "Exp_503" ], - "name" : "Add_504", - "op" : "Add", - "outputs" : ["Add_504_0"] - }, - { - "inputs" : [ "Broadcast_509", "Exp_511" ], - "name" : "Add_512", - "op" : "Add", - "outputs" : ["Add_512_0"] - }, - { - "inputs" : [ "Broadcast_494", "Add_497" ], - "name" : "Divide_498", - "op" : "Divide", - "outputs" : ["Divide_498_0"] - }, - { - "inputs" : [ "Broadcast_501", "Add_504" ], - "name" : "Divide_505", - "op" : "Divide", - "outputs" : ["Divide_505_0"] - }, - { - "inputs" : [ "Broadcast_509", "Add_512" ], - "name" : "Divide_513", - "op" : "Divide", - "outputs" : ["Divide_513_0"] - }, - { - "inputs" : [ "Divide_505", "Add_484" ], - "name" : "Multiply_506", - "op" : "Multiply", - "outputs" : ["Multiply_506_0"] - }, - { - "inputs" : [ "Divide_513", "Tanh_515" ], - "name" : "Multiply_516", - "op" : "Multiply", - "outputs" : ["Multiply_516_0"] - }, - { - "inputs" : [ "Multiply_506", "Multiply_516" ], - "name" : "Add_517", - "op" : "Add", - "outputs" : ["Add_517_0"] - }, - { - "inputs" : ["Add_517"], - "name" : "Tanh_518", - "op" : "Tanh", - "outputs" : ["Tanh_518_0"] - }, - { - "inputs" : [ "Divide_498", "Tanh_518" ], - "name" : "Multiply_519", - "op" : "Multiply", - "outputs" : ["Multiply_519_0"] - }, - { - "inputs" : [ "Multiply_519", "Reshape_520" ], - "name" : "Dot_521", - "op" : "Dot", - "outputs" : ["Dot_521_0"] - }, - { - "inputs" : [ "Dot_521", "Broadcast_522" ], - "name" : "Add_523", - "op" : "Add", - "outputs" : ["Add_523_0"] - }, - { - "inputs" : [ "Add_86", "Add_523" ], - "name" : "Add_524", - "op" : "Add", - "outputs" : ["Add_524_0"] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_525", - "op" : "Slice", - "outputs" : ["Slice_525_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_532", - "op" : "Slice", - "outputs" : ["Slice_532_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_540", - "op" : "Slice", - "outputs" : ["Slice_540_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_524"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_547", - "op" : "Slice", - "outputs" : ["Slice_547_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_525"], - "name" : "Negative_528", - "op" : "Negative", - "outputs" : ["Negative_528_0"] - }, - { - "inputs" : ["Slice_532"], - "name" : "Negative_535", - "op" : "Negative", - "outputs" : ["Negative_535_0"] - }, - { - "inputs" : ["Slice_540"], - "name" : "Negative_543", - "op" : "Negative", - "outputs" : ["Negative_543_0"] - }, - { - "inputs" : ["Slice_547"], - "name" : "Tanh_548", - "op" : "Tanh", - "outputs" : ["Tanh_548_0"] - }, - { - "inputs" : ["Negative_528"], - "name" : "Exp_529", - "op" : "Exp", - "outputs" : ["Exp_529_0"] - }, - { - "inputs" : ["Negative_535"], - "name" : "Exp_536", - "op" : "Exp", - "outputs" : ["Exp_536_0"] - }, - { - "inputs" : ["Negative_543"], - "name" : "Exp_544", - "op" : "Exp", - "outputs" : ["Exp_544_0"] - }, - { - "inputs" : [ "Broadcast_527", "Exp_529" ], - "name" : "Add_530", - "op" : "Add", - "outputs" : ["Add_530_0"] - }, - { - "inputs" : [ "Broadcast_534", "Exp_536" ], - "name" : "Add_537", - "op" : "Add", - "outputs" : ["Add_537_0"] - }, - { - "inputs" : [ "Broadcast_542", "Exp_544" ], - "name" : "Add_545", - "op" : "Add", - "outputs" : ["Add_545_0"] - }, - { - "inputs" : [ "Broadcast_527", "Add_530" ], - "name" : "Divide_531", - "op" : "Divide", - "outputs" : ["Divide_531_0"] - }, - { - "inputs" : [ "Broadcast_534", "Add_537" ], - "name" : "Divide_538", - "op" : "Divide", - "outputs" : ["Divide_538_0"] - }, - { - "inputs" : [ "Broadcast_542", "Add_545" ], - "name" : "Divide_546", - "op" : "Divide", - "outputs" : ["Divide_546_0"] - }, - { - "inputs" : [ "Divide_538", "Add_517" ], - "name" : "Multiply_539", - "op" : "Multiply", - "outputs" : ["Multiply_539_0"] - }, - { - "inputs" : [ "Divide_546", "Tanh_548" ], - "name" : "Multiply_549", - "op" : "Multiply", - "outputs" : ["Multiply_549_0"] - }, - { - "inputs" : [ "Multiply_539", "Multiply_549" ], - "name" : "Add_550", - "op" : "Add", - "outputs" : ["Add_550_0"] - }, - { - "inputs" : ["Add_550"], - "name" : "Tanh_551", - "op" : "Tanh", - "outputs" : ["Tanh_551_0"] - }, - { - "inputs" : [ "Divide_531", "Tanh_551" ], - "name" : "Multiply_552", - "op" : "Multiply", - "outputs" : ["Multiply_552_0"] - }, - { - "inputs" : [ "Multiply_552", "Reshape_553" ], - "name" : "Dot_554", - "op" : "Dot", - "outputs" : ["Dot_554_0"] - }, - { - "inputs" : [ "Dot_554", "Broadcast_555" ], - "name" : "Add_556", - "op" : "Add", - "outputs" : ["Add_556_0"] - }, - { - "inputs" : [ "Add_80", "Add_556" ], - "name" : "Add_557", - "op" : "Add", - "outputs" : ["Add_557_0"] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_558", - "op" : "Slice", - "outputs" : ["Slice_558_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_565", - "op" : "Slice", - "outputs" : ["Slice_565_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_573", - "op" : "Slice", - "outputs" : ["Slice_573_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_557"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_580", - "op" : "Slice", - "outputs" : ["Slice_580_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_558"], - "name" : "Negative_561", - "op" : "Negative", - "outputs" : ["Negative_561_0"] - }, - { - "inputs" : ["Slice_565"], - "name" : "Negative_568", - "op" : "Negative", - "outputs" : ["Negative_568_0"] - }, - { - "inputs" : ["Slice_573"], - "name" : "Negative_576", - "op" : "Negative", - "outputs" : ["Negative_576_0"] - }, - { - "inputs" : ["Slice_580"], - "name" : "Tanh_581", - "op" : "Tanh", - "outputs" : ["Tanh_581_0"] - }, - { - "inputs" : ["Negative_561"], - "name" : "Exp_562", - "op" : "Exp", - "outputs" : ["Exp_562_0"] - }, - { - "inputs" : ["Negative_568"], - "name" : "Exp_569", - "op" : "Exp", - "outputs" : ["Exp_569_0"] - }, - { - "inputs" : ["Negative_576"], - "name" : "Exp_577", - "op" : "Exp", - "outputs" : ["Exp_577_0"] - }, - { - "inputs" : [ "Broadcast_560", "Exp_562" ], - "name" : "Add_563", - "op" : "Add", - "outputs" : ["Add_563_0"] - }, - { - "inputs" : [ "Broadcast_567", "Exp_569" ], - "name" : "Add_570", - "op" : "Add", - "outputs" : ["Add_570_0"] - }, - { - "inputs" : [ "Broadcast_575", "Exp_577" ], - "name" : "Add_578", - "op" : "Add", - "outputs" : ["Add_578_0"] - }, - { - "inputs" : [ "Broadcast_560", "Add_563" ], - "name" : "Divide_564", - "op" : "Divide", - "outputs" : ["Divide_564_0"] - }, - { - "inputs" : [ "Broadcast_567", "Add_570" ], - "name" : "Divide_571", - "op" : "Divide", - "outputs" : ["Divide_571_0"] - }, - { - "inputs" : [ "Broadcast_575", "Add_578" ], - "name" : "Divide_579", - "op" : "Divide", - "outputs" : ["Divide_579_0"] - }, - { - "inputs" : [ "Divide_571", "Add_550" ], - "name" : "Multiply_572", - "op" : "Multiply", - "outputs" : ["Multiply_572_0"] - }, - { - "inputs" : [ "Divide_579", "Tanh_581" ], - "name" : "Multiply_582", - "op" : "Multiply", - "outputs" : ["Multiply_582_0"] - }, - { - "inputs" : [ "Multiply_572", "Multiply_582" ], - "name" : "Add_583", - "op" : "Add", - "outputs" : ["Add_583_0"] - }, - { - "inputs" : ["Add_583"], - "name" : "Tanh_584", - "op" : "Tanh", - "outputs" : ["Tanh_584_0"] - }, - { - "inputs" : [ "Divide_564", "Tanh_584" ], - "name" : "Multiply_585", - "op" : "Multiply", - "outputs" : ["Multiply_585_0"] - }, - { - "inputs" : [ "Multiply_585", "Reshape_586" ], - "name" : "Dot_587", - "op" : "Dot", - "outputs" : ["Dot_587_0"] - }, - { - "inputs" : [ "Dot_587", "Broadcast_588" ], - "name" : "Add_589", - "op" : "Add", - "outputs" : ["Add_589_0"] - }, - { - "inputs" : [ "Add_74", "Add_589" ], - "name" : "Add_590", - "op" : "Add", - "outputs" : ["Add_590_0"] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_591", - "op" : "Slice", - "outputs" : ["Slice_591_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_598", - "op" : "Slice", - "outputs" : ["Slice_598_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_606", - "op" : "Slice", - "outputs" : ["Slice_606_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_590"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_613", - "op" : "Slice", - "outputs" : ["Slice_613_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_591"], - "name" : "Negative_594", - "op" : "Negative", - "outputs" : ["Negative_594_0"] - }, - { - "inputs" : ["Slice_598"], - "name" : "Negative_601", - "op" : "Negative", - "outputs" : ["Negative_601_0"] - }, - { - "inputs" : ["Slice_606"], - "name" : "Negative_609", - "op" : "Negative", - "outputs" : ["Negative_609_0"] - }, - { - "inputs" : ["Slice_613"], - "name" : "Tanh_614", - "op" : "Tanh", - "outputs" : ["Tanh_614_0"] - }, - { - "inputs" : ["Negative_594"], - "name" : "Exp_595", - "op" : "Exp", - "outputs" : ["Exp_595_0"] - }, - { - "inputs" : ["Negative_601"], - "name" : "Exp_602", - "op" : "Exp", - "outputs" : ["Exp_602_0"] - }, - { - "inputs" : ["Negative_609"], - "name" : "Exp_610", - "op" : "Exp", - "outputs" : ["Exp_610_0"] - }, - { - "inputs" : [ "Broadcast_593", "Exp_595" ], - "name" : "Add_596", - "op" : "Add", - "outputs" : ["Add_596_0"] - }, - { - "inputs" : [ "Broadcast_600", "Exp_602" ], - "name" : "Add_603", - "op" : "Add", - "outputs" : ["Add_603_0"] - }, - { - "inputs" : [ "Broadcast_608", "Exp_610" ], - "name" : "Add_611", - "op" : "Add", - "outputs" : ["Add_611_0"] - }, - { - "inputs" : [ "Broadcast_593", "Add_596" ], - "name" : "Divide_597", - "op" : "Divide", - "outputs" : ["Divide_597_0"] - }, - { - "inputs" : [ "Broadcast_600", "Add_603" ], - "name" : "Divide_604", - "op" : "Divide", - "outputs" : ["Divide_604_0"] - }, - { - "inputs" : [ "Broadcast_608", "Add_611" ], - "name" : "Divide_612", - "op" : "Divide", - "outputs" : ["Divide_612_0"] - }, - { - "inputs" : [ "Divide_604", "Add_583" ], - "name" : "Multiply_605", - "op" : "Multiply", - "outputs" : ["Multiply_605_0"] - }, - { - "inputs" : [ "Divide_612", "Tanh_614" ], - "name" : "Multiply_615", - "op" : "Multiply", - "outputs" : ["Multiply_615_0"] - }, - { - "inputs" : [ "Multiply_605", "Multiply_615" ], - "name" : "Add_616", - "op" : "Add", - "outputs" : ["Add_616_0"] - }, - { - "inputs" : ["Add_616"], - "name" : "Tanh_617", - "op" : "Tanh", - "outputs" : ["Tanh_617_0"] - }, - { - "inputs" : [ "Divide_597", "Tanh_617" ], - "name" : "Multiply_618", - "op" : "Multiply", - "outputs" : ["Multiply_618_0"] - }, - { - "inputs" : [ "Multiply_618", "Reshape_619" ], - "name" : "Dot_620", - "op" : "Dot", - "outputs" : ["Dot_620_0"] - }, - { - "inputs" : [ "Dot_620", "Broadcast_621" ], - "name" : "Add_622", - "op" : "Add", - "outputs" : ["Add_622_0"] - }, - { - "inputs" : [ "Add_68", "Add_622" ], - "name" : "Add_623", - "op" : "Add", - "outputs" : ["Add_623_0"] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_624", - "op" : "Slice", - "outputs" : ["Slice_624_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_631", - "op" : "Slice", - "outputs" : ["Slice_631_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_639", - "op" : "Slice", - "outputs" : ["Slice_639_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_623"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_646", - "op" : "Slice", - "outputs" : ["Slice_646_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_624"], - "name" : "Negative_627", - "op" : "Negative", - "outputs" : ["Negative_627_0"] - }, - { - "inputs" : ["Slice_631"], - "name" : "Negative_634", - "op" : "Negative", - "outputs" : ["Negative_634_0"] - }, - { - "inputs" : ["Slice_639"], - "name" : "Negative_642", - "op" : "Negative", - "outputs" : ["Negative_642_0"] - }, - { - "inputs" : ["Slice_646"], - "name" : "Tanh_647", - "op" : "Tanh", - "outputs" : ["Tanh_647_0"] - }, - { - "inputs" : ["Negative_627"], - "name" : "Exp_628", - "op" : "Exp", - "outputs" : ["Exp_628_0"] - }, - { - "inputs" : ["Negative_634"], - "name" : "Exp_635", - "op" : "Exp", - "outputs" : ["Exp_635_0"] - }, - { - "inputs" : ["Negative_642"], - "name" : "Exp_643", - "op" : "Exp", - "outputs" : ["Exp_643_0"] - }, - { - "inputs" : [ "Broadcast_626", "Exp_628" ], - "name" : "Add_629", - "op" : "Add", - "outputs" : ["Add_629_0"] - }, - { - "inputs" : [ "Broadcast_633", "Exp_635" ], - "name" : "Add_636", - "op" : "Add", - "outputs" : ["Add_636_0"] - }, - { - "inputs" : [ "Broadcast_641", "Exp_643" ], - "name" : "Add_644", - "op" : "Add", - "outputs" : ["Add_644_0"] - }, - { - "inputs" : [ "Broadcast_626", "Add_629" ], - "name" : "Divide_630", - "op" : "Divide", - "outputs" : ["Divide_630_0"] - }, - { - "inputs" : [ "Broadcast_633", "Add_636" ], - "name" : "Divide_637", - "op" : "Divide", - "outputs" : ["Divide_637_0"] - }, - { - "inputs" : [ "Broadcast_641", "Add_644" ], - "name" : "Divide_645", - "op" : "Divide", - "outputs" : ["Divide_645_0"] - }, - { - "inputs" : [ "Divide_637", "Add_616" ], - "name" : "Multiply_638", - "op" : "Multiply", - "outputs" : ["Multiply_638_0"] - }, - { - "inputs" : [ "Divide_645", "Tanh_647" ], - "name" : "Multiply_648", - "op" : "Multiply", - "outputs" : ["Multiply_648_0"] - }, - { - "inputs" : [ "Multiply_638", "Multiply_648" ], - "name" : "Add_649", - "op" : "Add", - "outputs" : ["Add_649_0"] - }, - { - "inputs" : ["Add_649"], - "name" : "Tanh_650", - "op" : "Tanh", - "outputs" : ["Tanh_650_0"] - }, - { - "inputs" : [ "Divide_630", "Tanh_650" ], - "name" : "Multiply_651", - "op" : "Multiply", - "outputs" : ["Multiply_651_0"] - }, - { - "inputs" : [ "Multiply_651", "Reshape_652" ], - "name" : "Dot_653", - "op" : "Dot", - "outputs" : ["Dot_653_0"] - }, - { - "inputs" : [ "Dot_653", "Broadcast_654" ], - "name" : "Add_655", - "op" : "Add", - "outputs" : ["Add_655_0"] - }, - { - "inputs" : [ "Add_62", "Add_655" ], - "name" : "Add_656", - "op" : "Add", - "outputs" : ["Add_656_0"] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_657", - "op" : "Slice", - "outputs" : ["Slice_657_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_664", - "op" : "Slice", - "outputs" : ["Slice_664_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_672", - "op" : "Slice", - "outputs" : ["Slice_672_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_656"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_679", - "op" : "Slice", - "outputs" : ["Slice_679_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_657"], - "name" : "Negative_660", - "op" : "Negative", - "outputs" : ["Negative_660_0"] - }, - { - "inputs" : ["Slice_664"], - "name" : "Negative_667", - "op" : "Negative", - "outputs" : ["Negative_667_0"] - }, - { - "inputs" : ["Slice_672"], - "name" : "Negative_675", - "op" : "Negative", - "outputs" : ["Negative_675_0"] - }, - { - "inputs" : ["Slice_679"], - "name" : "Tanh_680", - "op" : "Tanh", - "outputs" : ["Tanh_680_0"] - }, - { - "inputs" : ["Negative_660"], - "name" : "Exp_661", - "op" : "Exp", - "outputs" : ["Exp_661_0"] - }, - { - "inputs" : ["Negative_667"], - "name" : "Exp_668", - "op" : "Exp", - "outputs" : ["Exp_668_0"] - }, - { - "inputs" : ["Negative_675"], - "name" : "Exp_676", - "op" : "Exp", - "outputs" : ["Exp_676_0"] - }, - { - "inputs" : [ "Broadcast_659", "Exp_661" ], - "name" : "Add_662", - "op" : "Add", - "outputs" : ["Add_662_0"] - }, - { - "inputs" : [ "Broadcast_666", "Exp_668" ], - "name" : "Add_669", - "op" : "Add", - "outputs" : ["Add_669_0"] - }, - { - "inputs" : [ "Broadcast_674", "Exp_676" ], - "name" : "Add_677", - "op" : "Add", - "outputs" : ["Add_677_0"] - }, - { - "inputs" : [ "Broadcast_659", "Add_662" ], - "name" : "Divide_663", - "op" : "Divide", - "outputs" : ["Divide_663_0"] - }, - { - "inputs" : [ "Broadcast_666", "Add_669" ], - "name" : "Divide_670", - "op" : "Divide", - "outputs" : ["Divide_670_0"] - }, - { - "inputs" : [ "Broadcast_674", "Add_677" ], - "name" : "Divide_678", - "op" : "Divide", - "outputs" : ["Divide_678_0"] - }, - { - "inputs" : [ "Divide_670", "Add_649" ], - "name" : "Multiply_671", - "op" : "Multiply", - "outputs" : ["Multiply_671_0"] - }, - { - "inputs" : [ "Divide_678", "Tanh_680" ], - "name" : "Multiply_681", - "op" : "Multiply", - "outputs" : ["Multiply_681_0"] - }, - { - "inputs" : [ "Multiply_671", "Multiply_681" ], - "name" : "Add_682", - "op" : "Add", - "outputs" : ["Add_682_0"] - }, - { - "inputs" : ["Add_682"], - "name" : "Tanh_683", - "op" : "Tanh", - "outputs" : ["Tanh_683_0"] - }, - { - "inputs" : [ "Divide_663", "Tanh_683" ], - "name" : "Multiply_684", - "op" : "Multiply", - "outputs" : ["Multiply_684_0"] - }, - { - "inputs" : [ "Multiply_684", "Reshape_685" ], - "name" : "Dot_686", - "op" : "Dot", - "outputs" : ["Dot_686_0"] - }, - { - "inputs" : [ "Dot_686", "Broadcast_687" ], - "name" : "Add_688", - "op" : "Add", - "outputs" : ["Add_688_0"] - }, - { - "inputs" : [ "Add_56", "Add_688" ], - "name" : "Add_689", - "op" : "Add", - "outputs" : ["Add_689_0"] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_690", - "op" : "Slice", - "outputs" : ["Slice_690_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_697", - "op" : "Slice", - "outputs" : ["Slice_697_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_705", - "op" : "Slice", - "outputs" : ["Slice_705_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_689"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_712", - "op" : "Slice", - "outputs" : ["Slice_712_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_690"], - "name" : "Negative_693", - "op" : "Negative", - "outputs" : ["Negative_693_0"] - }, - { - "inputs" : ["Slice_697"], - "name" : "Negative_700", - "op" : "Negative", - "outputs" : ["Negative_700_0"] - }, - { - "inputs" : ["Slice_705"], - "name" : "Negative_708", - "op" : "Negative", - "outputs" : ["Negative_708_0"] - }, - { - "inputs" : ["Slice_712"], - "name" : "Tanh_713", - "op" : "Tanh", - "outputs" : ["Tanh_713_0"] - }, - { - "inputs" : ["Negative_693"], - "name" : "Exp_694", - "op" : "Exp", - "outputs" : ["Exp_694_0"] - }, - { - "inputs" : ["Negative_700"], - "name" : "Exp_701", - "op" : "Exp", - "outputs" : ["Exp_701_0"] - }, - { - "inputs" : ["Negative_708"], - "name" : "Exp_709", - "op" : "Exp", - "outputs" : ["Exp_709_0"] - }, - { - "inputs" : [ "Broadcast_692", "Exp_694" ], - "name" : "Add_695", - "op" : "Add", - "outputs" : ["Add_695_0"] - }, - { - "inputs" : [ "Broadcast_699", "Exp_701" ], - "name" : "Add_702", - "op" : "Add", - "outputs" : ["Add_702_0"] - }, - { - "inputs" : [ "Broadcast_707", "Exp_709" ], - "name" : "Add_710", - "op" : "Add", - "outputs" : ["Add_710_0"] - }, - { - "inputs" : [ "Broadcast_692", "Add_695" ], - "name" : "Divide_696", - "op" : "Divide", - "outputs" : ["Divide_696_0"] - }, - { - "inputs" : [ "Broadcast_699", "Add_702" ], - "name" : "Divide_703", - "op" : "Divide", - "outputs" : ["Divide_703_0"] - }, - { - "inputs" : [ "Broadcast_707", "Add_710" ], - "name" : "Divide_711", - "op" : "Divide", - "outputs" : ["Divide_711_0"] - }, - { - "inputs" : [ "Divide_703", "Add_682" ], - "name" : "Multiply_704", - "op" : "Multiply", - "outputs" : ["Multiply_704_0"] - }, - { - "inputs" : [ "Divide_711", "Tanh_713" ], - "name" : "Multiply_714", - "op" : "Multiply", - "outputs" : ["Multiply_714_0"] - }, - { - "inputs" : [ "Multiply_704", "Multiply_714" ], - "name" : "Add_715", - "op" : "Add", - "outputs" : ["Add_715_0"] - }, - { - "inputs" : ["Add_715"], - "name" : "Tanh_716", - "op" : "Tanh", - "outputs" : ["Tanh_716_0"] - }, - { - "inputs" : [ "Divide_696", "Tanh_716" ], - "name" : "Multiply_717", - "op" : "Multiply", - "outputs" : ["Multiply_717_0"] - }, - { - "inputs" : [ "Multiply_717", "Reshape_718" ], - "name" : "Dot_719", - "op" : "Dot", - "outputs" : ["Dot_719_0"] - }, - { - "inputs" : [ "Dot_719", "Broadcast_720" ], - "name" : "Add_721", - "op" : "Add", - "outputs" : ["Add_721_0"] - }, - { - "inputs" : [ "Add_50", "Add_721" ], - "name" : "Add_722", - "op" : "Add", - "outputs" : ["Add_722_0"] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_723", - "op" : "Slice", - "outputs" : ["Slice_723_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_730", - "op" : "Slice", - "outputs" : ["Slice_730_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_738", - "op" : "Slice", - "outputs" : ["Slice_738_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_722"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_745", - "op" : "Slice", - "outputs" : ["Slice_745_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_723"], - "name" : "Negative_726", - "op" : "Negative", - "outputs" : ["Negative_726_0"] - }, - { - "inputs" : ["Slice_730"], - "name" : "Negative_733", - "op" : "Negative", - "outputs" : ["Negative_733_0"] - }, - { - "inputs" : ["Slice_738"], - "name" : "Negative_741", - "op" : "Negative", - "outputs" : ["Negative_741_0"] - }, - { - "inputs" : ["Slice_745"], - "name" : "Tanh_746", - "op" : "Tanh", - "outputs" : ["Tanh_746_0"] - }, - { - "inputs" : ["Negative_726"], - "name" : "Exp_727", - "op" : "Exp", - "outputs" : ["Exp_727_0"] - }, - { - "inputs" : ["Negative_733"], - "name" : "Exp_734", - "op" : "Exp", - "outputs" : ["Exp_734_0"] - }, - { - "inputs" : ["Negative_741"], - "name" : "Exp_742", - "op" : "Exp", - "outputs" : ["Exp_742_0"] - }, - { - "inputs" : [ "Broadcast_725", "Exp_727" ], - "name" : "Add_728", - "op" : "Add", - "outputs" : ["Add_728_0"] - }, - { - "inputs" : [ "Broadcast_732", "Exp_734" ], - "name" : "Add_735", - "op" : "Add", - "outputs" : ["Add_735_0"] - }, - { - "inputs" : [ "Broadcast_740", "Exp_742" ], - "name" : "Add_743", - "op" : "Add", - "outputs" : ["Add_743_0"] - }, - { - "inputs" : [ "Broadcast_725", "Add_728" ], - "name" : "Divide_729", - "op" : "Divide", - "outputs" : ["Divide_729_0"] - }, - { - "inputs" : [ "Broadcast_732", "Add_735" ], - "name" : "Divide_736", - "op" : "Divide", - "outputs" : ["Divide_736_0"] - }, - { - "inputs" : [ "Broadcast_740", "Add_743" ], - "name" : "Divide_744", - "op" : "Divide", - "outputs" : ["Divide_744_0"] - }, - { - "inputs" : [ "Divide_736", "Add_715" ], - "name" : "Multiply_737", - "op" : "Multiply", - "outputs" : ["Multiply_737_0"] - }, - { - "inputs" : [ "Divide_744", "Tanh_746" ], - "name" : "Multiply_747", - "op" : "Multiply", - "outputs" : ["Multiply_747_0"] - }, - { - "inputs" : [ "Multiply_737", "Multiply_747" ], - "name" : "Add_748", - "op" : "Add", - "outputs" : ["Add_748_0"] - }, - { - "inputs" : ["Add_748"], - "name" : "Tanh_749", - "op" : "Tanh", - "outputs" : ["Tanh_749_0"] - }, - { - "inputs" : [ "Divide_729", "Tanh_749" ], - "name" : "Multiply_750", - "op" : "Multiply", - "outputs" : ["Multiply_750_0"] - }, - { - "inputs" : [ "Multiply_750", "Reshape_751" ], - "name" : "Dot_752", - "op" : "Dot", - "outputs" : ["Dot_752_0"] - }, - { - "inputs" : [ "Dot_752", "Broadcast_753" ], - "name" : "Add_754", - "op" : "Add", - "outputs" : ["Add_754_0"] - }, - { - "inputs" : [ "Add_44", "Add_754" ], - "name" : "Add_755", - "op" : "Add", - "outputs" : ["Add_755_0"] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_756", - "op" : "Slice", - "outputs" : ["Slice_756_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_763", - "op" : "Slice", - "outputs" : ["Slice_763_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_771", - "op" : "Slice", - "outputs" : ["Slice_771_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_755"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_778", - "op" : "Slice", - "outputs" : ["Slice_778_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_756"], - "name" : "Negative_759", - "op" : "Negative", - "outputs" : ["Negative_759_0"] - }, - { - "inputs" : ["Slice_763"], - "name" : "Negative_766", - "op" : "Negative", - "outputs" : ["Negative_766_0"] - }, - { - "inputs" : ["Slice_771"], - "name" : "Negative_774", - "op" : "Negative", - "outputs" : ["Negative_774_0"] - }, - { - "inputs" : ["Slice_778"], - "name" : "Tanh_779", - "op" : "Tanh", - "outputs" : ["Tanh_779_0"] - }, - { - "inputs" : ["Negative_759"], - "name" : "Exp_760", - "op" : "Exp", - "outputs" : ["Exp_760_0"] - }, - { - "inputs" : ["Negative_766"], - "name" : "Exp_767", - "op" : "Exp", - "outputs" : ["Exp_767_0"] - }, - { - "inputs" : ["Negative_774"], - "name" : "Exp_775", - "op" : "Exp", - "outputs" : ["Exp_775_0"] - }, - { - "inputs" : [ "Broadcast_758", "Exp_760" ], - "name" : "Add_761", - "op" : "Add", - "outputs" : ["Add_761_0"] - }, - { - "inputs" : [ "Broadcast_765", "Exp_767" ], - "name" : "Add_768", - "op" : "Add", - "outputs" : ["Add_768_0"] - }, - { - "inputs" : [ "Broadcast_773", "Exp_775" ], - "name" : "Add_776", - "op" : "Add", - "outputs" : ["Add_776_0"] - }, - { - "inputs" : [ "Broadcast_758", "Add_761" ], - "name" : "Divide_762", - "op" : "Divide", - "outputs" : ["Divide_762_0"] - }, - { - "inputs" : [ "Broadcast_765", "Add_768" ], - "name" : "Divide_769", - "op" : "Divide", - "outputs" : ["Divide_769_0"] - }, - { - "inputs" : [ "Broadcast_773", "Add_776" ], - "name" : "Divide_777", - "op" : "Divide", - "outputs" : ["Divide_777_0"] - }, - { - "inputs" : [ "Divide_769", "Add_748" ], - "name" : "Multiply_770", - "op" : "Multiply", - "outputs" : ["Multiply_770_0"] - }, - { - "inputs" : [ "Divide_777", "Tanh_779" ], - "name" : "Multiply_780", - "op" : "Multiply", - "outputs" : ["Multiply_780_0"] - }, - { - "inputs" : [ "Multiply_770", "Multiply_780" ], - "name" : "Add_781", - "op" : "Add", - "outputs" : ["Add_781_0"] - }, - { - "inputs" : ["Add_781"], - "name" : "Tanh_782", - "op" : "Tanh", - "outputs" : ["Tanh_782_0"] - }, - { - "inputs" : [ "Divide_762", "Tanh_782" ], - "name" : "Multiply_783", - "op" : "Multiply", - "outputs" : ["Multiply_783_0"] - }, - { - "inputs" : [ "Multiply_783", "Reshape_784" ], - "name" : "Dot_785", - "op" : "Dot", - "outputs" : ["Dot_785_0"] - }, - { - "inputs" : [ "Dot_785", "Broadcast_786" ], - "name" : "Add_787", - "op" : "Add", - "outputs" : ["Add_787_0"] - }, - { - "inputs" : [ "Add_38", "Add_787" ], - "name" : "Add_788", - "op" : "Add", - "outputs" : ["Add_788_0"] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_789", - "op" : "Slice", - "outputs" : ["Slice_789_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_796", - "op" : "Slice", - "outputs" : ["Slice_796_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_804", - "op" : "Slice", - "outputs" : ["Slice_804_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_788"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_811", - "op" : "Slice", - "outputs" : ["Slice_811_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_789"], - "name" : "Negative_792", - "op" : "Negative", - "outputs" : ["Negative_792_0"] - }, - { - "inputs" : ["Slice_796"], - "name" : "Negative_799", - "op" : "Negative", - "outputs" : ["Negative_799_0"] - }, - { - "inputs" : ["Slice_804"], - "name" : "Negative_807", - "op" : "Negative", - "outputs" : ["Negative_807_0"] - }, - { - "inputs" : ["Slice_811"], - "name" : "Tanh_812", - "op" : "Tanh", - "outputs" : ["Tanh_812_0"] - }, - { - "inputs" : ["Negative_792"], - "name" : "Exp_793", - "op" : "Exp", - "outputs" : ["Exp_793_0"] - }, - { - "inputs" : ["Negative_799"], - "name" : "Exp_800", - "op" : "Exp", - "outputs" : ["Exp_800_0"] - }, - { - "inputs" : ["Negative_807"], - "name" : "Exp_808", - "op" : "Exp", - "outputs" : ["Exp_808_0"] - }, - { - "inputs" : [ "Broadcast_791", "Exp_793" ], - "name" : "Add_794", - "op" : "Add", - "outputs" : ["Add_794_0"] - }, - { - "inputs" : [ "Broadcast_798", "Exp_800" ], - "name" : "Add_801", - "op" : "Add", - "outputs" : ["Add_801_0"] - }, - { - "inputs" : [ "Broadcast_806", "Exp_808" ], - "name" : "Add_809", - "op" : "Add", - "outputs" : ["Add_809_0"] - }, - { - "inputs" : [ "Broadcast_791", "Add_794" ], - "name" : "Divide_795", - "op" : "Divide", - "outputs" : ["Divide_795_0"] - }, - { - "inputs" : [ "Broadcast_798", "Add_801" ], - "name" : "Divide_802", - "op" : "Divide", - "outputs" : ["Divide_802_0"] - }, - { - "inputs" : [ "Broadcast_806", "Add_809" ], - "name" : "Divide_810", - "op" : "Divide", - "outputs" : ["Divide_810_0"] - }, - { - "inputs" : [ "Divide_802", "Add_781" ], - "name" : "Multiply_803", - "op" : "Multiply", - "outputs" : ["Multiply_803_0"] - }, - { - "inputs" : [ "Divide_810", "Tanh_812" ], - "name" : "Multiply_813", - "op" : "Multiply", - "outputs" : ["Multiply_813_0"] - }, - { - "inputs" : [ "Multiply_803", "Multiply_813" ], - "name" : "Add_814", - "op" : "Add", - "outputs" : ["Add_814_0"] - }, - { - "inputs" : ["Add_814"], - "name" : "Tanh_815", - "op" : "Tanh", - "outputs" : ["Tanh_815_0"] - }, - { - "inputs" : [ "Divide_795", "Tanh_815" ], - "name" : "Multiply_816", - "op" : "Multiply", - "outputs" : ["Multiply_816_0"] - }, - { - "inputs" : [ "Multiply_816", "Reshape_817" ], - "name" : "Dot_818", - "op" : "Dot", - "outputs" : ["Dot_818_0"] - }, - { - "inputs" : [ "Dot_818", "Broadcast_819" ], - "name" : "Add_820", - "op" : "Add", - "outputs" : ["Add_820_0"] - }, - { - "inputs" : [ "Add_32", "Add_820" ], - "name" : "Add_821", - "op" : "Add", - "outputs" : ["Add_821_0"] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_822", - "op" : "Slice", - "outputs" : ["Slice_822_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_829", - "op" : "Slice", - "outputs" : ["Slice_829_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_837", - "op" : "Slice", - "outputs" : ["Slice_837_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_821"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_844", - "op" : "Slice", - "outputs" : ["Slice_844_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_822"], - "name" : "Negative_825", - "op" : "Negative", - "outputs" : ["Negative_825_0"] - }, - { - "inputs" : ["Slice_829"], - "name" : "Negative_832", - "op" : "Negative", - "outputs" : ["Negative_832_0"] - }, - { - "inputs" : ["Slice_837"], - "name" : "Negative_840", - "op" : "Negative", - "outputs" : ["Negative_840_0"] - }, - { - "inputs" : ["Slice_844"], - "name" : "Tanh_845", - "op" : "Tanh", - "outputs" : ["Tanh_845_0"] - }, - { - "inputs" : ["Negative_825"], - "name" : "Exp_826", - "op" : "Exp", - "outputs" : ["Exp_826_0"] - }, - { - "inputs" : ["Negative_832"], - "name" : "Exp_833", - "op" : "Exp", - "outputs" : ["Exp_833_0"] - }, - { - "inputs" : ["Negative_840"], - "name" : "Exp_841", - "op" : "Exp", - "outputs" : ["Exp_841_0"] - }, - { - "inputs" : [ "Broadcast_824", "Exp_826" ], - "name" : "Add_827", - "op" : "Add", - "outputs" : ["Add_827_0"] - }, - { - "inputs" : [ "Broadcast_831", "Exp_833" ], - "name" : "Add_834", - "op" : "Add", - "outputs" : ["Add_834_0"] - }, - { - "inputs" : [ "Broadcast_839", "Exp_841" ], - "name" : "Add_842", - "op" : "Add", - "outputs" : ["Add_842_0"] - }, - { - "inputs" : [ "Broadcast_824", "Add_827" ], - "name" : "Divide_828", - "op" : "Divide", - "outputs" : ["Divide_828_0"] - }, - { - "inputs" : [ "Broadcast_831", "Add_834" ], - "name" : "Divide_835", - "op" : "Divide", - "outputs" : ["Divide_835_0"] - }, - { - "inputs" : [ "Broadcast_839", "Add_842" ], - "name" : "Divide_843", - "op" : "Divide", - "outputs" : ["Divide_843_0"] - }, - { - "inputs" : [ "Divide_835", "Add_814" ], - "name" : "Multiply_836", - "op" : "Multiply", - "outputs" : ["Multiply_836_0"] - }, - { - "inputs" : [ "Divide_843", "Tanh_845" ], - "name" : "Multiply_846", - "op" : "Multiply", - "outputs" : ["Multiply_846_0"] - }, - { - "inputs" : [ "Multiply_836", "Multiply_846" ], - "name" : "Add_847", - "op" : "Add", - "outputs" : ["Add_847_0"] - }, - { - "inputs" : ["Add_847"], - "name" : "Tanh_848", - "op" : "Tanh", - "outputs" : ["Tanh_848_0"] - }, - { - "inputs" : [ "Divide_828", "Tanh_848" ], - "name" : "Multiply_849", - "op" : "Multiply", - "outputs" : ["Multiply_849_0"] - }, - { - "inputs" : [ "Multiply_849", "Reshape_850" ], - "name" : "Dot_851", - "op" : "Dot", - "outputs" : ["Dot_851_0"] - }, - { - "inputs" : [ "Dot_851", "Broadcast_852" ], - "name" : "Add_853", - "op" : "Add", - "outputs" : ["Add_853_0"] - }, - { - "inputs" : [ "Add_26", "Add_853" ], - "name" : "Add_854", - "op" : "Add", - "outputs" : ["Add_854_0"] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_855", - "op" : "Slice", - "outputs" : ["Slice_855_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_862", - "op" : "Slice", - "outputs" : ["Slice_862_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_870", - "op" : "Slice", - "outputs" : ["Slice_870_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_854"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_877", - "op" : "Slice", - "outputs" : ["Slice_877_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_855"], - "name" : "Negative_858", - "op" : "Negative", - "outputs" : ["Negative_858_0"] - }, - { - "inputs" : ["Slice_862"], - "name" : "Negative_865", - "op" : "Negative", - "outputs" : ["Negative_865_0"] - }, - { - "inputs" : ["Slice_870"], - "name" : "Negative_873", - "op" : "Negative", - "outputs" : ["Negative_873_0"] - }, - { - "inputs" : ["Slice_877"], - "name" : "Tanh_878", - "op" : "Tanh", - "outputs" : ["Tanh_878_0"] - }, - { - "inputs" : ["Negative_858"], - "name" : "Exp_859", - "op" : "Exp", - "outputs" : ["Exp_859_0"] - }, - { - "inputs" : ["Negative_865"], - "name" : "Exp_866", - "op" : "Exp", - "outputs" : ["Exp_866_0"] - }, - { - "inputs" : ["Negative_873"], - "name" : "Exp_874", - "op" : "Exp", - "outputs" : ["Exp_874_0"] - }, - { - "inputs" : [ "Broadcast_857", "Exp_859" ], - "name" : "Add_860", - "op" : "Add", - "outputs" : ["Add_860_0"] - }, - { - "inputs" : [ "Broadcast_864", "Exp_866" ], - "name" : "Add_867", - "op" : "Add", - "outputs" : ["Add_867_0"] - }, - { - "inputs" : [ "Broadcast_872", "Exp_874" ], - "name" : "Add_875", - "op" : "Add", - "outputs" : ["Add_875_0"] - }, - { - "inputs" : [ "Broadcast_857", "Add_860" ], - "name" : "Divide_861", - "op" : "Divide", - "outputs" : ["Divide_861_0"] - }, - { - "inputs" : [ "Broadcast_864", "Add_867" ], - "name" : "Divide_868", - "op" : "Divide", - "outputs" : ["Divide_868_0"] - }, - { - "inputs" : [ "Broadcast_872", "Add_875" ], - "name" : "Divide_876", - "op" : "Divide", - "outputs" : ["Divide_876_0"] - }, - { - "inputs" : [ "Divide_868", "Add_847" ], - "name" : "Multiply_869", - "op" : "Multiply", - "outputs" : ["Multiply_869_0"] - }, - { - "inputs" : [ "Divide_876", "Tanh_878" ], - "name" : "Multiply_879", - "op" : "Multiply", - "outputs" : ["Multiply_879_0"] - }, - { - "inputs" : [ "Multiply_869", "Multiply_879" ], - "name" : "Add_880", - "op" : "Add", - "outputs" : ["Add_880_0"] - }, - { - "inputs" : ["Add_880"], - "name" : "Tanh_881", - "op" : "Tanh", - "outputs" : ["Tanh_881_0"] - }, - { - "inputs" : [ "Divide_861", "Tanh_881" ], - "name" : "Multiply_882", - "op" : "Multiply", - "outputs" : ["Multiply_882_0"] - }, - { - "inputs" : [ "Multiply_882", "Reshape_883" ], - "name" : "Dot_884", - "op" : "Dot", - "outputs" : ["Dot_884_0"] - }, - { - "inputs" : [ "Dot_884", "Broadcast_885" ], - "name" : "Add_886", - "op" : "Add", - "outputs" : ["Add_886_0"] - }, - { - "inputs" : [ "Add_20", "Add_886" ], - "name" : "Add_887", - "op" : "Add", - "outputs" : ["Add_887_0"] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_888", - "op" : "Slice", - "outputs" : ["Slice_888_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_895", - "op" : "Slice", - "outputs" : ["Slice_895_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_903", - "op" : "Slice", - "outputs" : ["Slice_903_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_887"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_910", - "op" : "Slice", - "outputs" : ["Slice_910_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_888"], - "name" : "Negative_891", - "op" : "Negative", - "outputs" : ["Negative_891_0"] - }, - { - "inputs" : ["Slice_895"], - "name" : "Negative_898", - "op" : "Negative", - "outputs" : ["Negative_898_0"] - }, - { - "inputs" : ["Slice_903"], - "name" : "Negative_906", - "op" : "Negative", - "outputs" : ["Negative_906_0"] - }, - { - "inputs" : ["Slice_910"], - "name" : "Tanh_911", - "op" : "Tanh", - "outputs" : ["Tanh_911_0"] - }, - { - "inputs" : ["Negative_891"], - "name" : "Exp_892", - "op" : "Exp", - "outputs" : ["Exp_892_0"] - }, - { - "inputs" : ["Negative_898"], - "name" : "Exp_899", - "op" : "Exp", - "outputs" : ["Exp_899_0"] - }, - { - "inputs" : ["Negative_906"], - "name" : "Exp_907", - "op" : "Exp", - "outputs" : ["Exp_907_0"] - }, - { - "inputs" : [ "Broadcast_890", "Exp_892" ], - "name" : "Add_893", - "op" : "Add", - "outputs" : ["Add_893_0"] - }, - { - "inputs" : [ "Broadcast_897", "Exp_899" ], - "name" : "Add_900", - "op" : "Add", - "outputs" : ["Add_900_0"] - }, - { - "inputs" : [ "Broadcast_905", "Exp_907" ], - "name" : "Add_908", - "op" : "Add", - "outputs" : ["Add_908_0"] - }, - { - "inputs" : [ "Broadcast_890", "Add_893" ], - "name" : "Divide_894", - "op" : "Divide", - "outputs" : ["Divide_894_0"] - }, - { - "inputs" : [ "Broadcast_897", "Add_900" ], - "name" : "Divide_901", - "op" : "Divide", - "outputs" : ["Divide_901_0"] - }, - { - "inputs" : [ "Broadcast_905", "Add_908" ], - "name" : "Divide_909", - "op" : "Divide", - "outputs" : ["Divide_909_0"] - }, - { - "inputs" : [ "Divide_901", "Add_880" ], - "name" : "Multiply_902", - "op" : "Multiply", - "outputs" : ["Multiply_902_0"] - }, - { - "inputs" : [ "Divide_909", "Tanh_911" ], - "name" : "Multiply_912", - "op" : "Multiply", - "outputs" : ["Multiply_912_0"] - }, - { - "inputs" : [ "Multiply_902", "Multiply_912" ], - "name" : "Add_913", - "op" : "Add", - "outputs" : ["Add_913_0"] - }, - { - "inputs" : ["Add_913"], - "name" : "Tanh_914", - "op" : "Tanh", - "outputs" : ["Tanh_914_0"] - }, - { - "inputs" : [ "Divide_894", "Tanh_914" ], - "name" : "Multiply_915", - "op" : "Multiply", - "outputs" : ["Multiply_915_0"] - }, - { - "inputs" : [ "Multiply_915", "Reshape_916" ], - "name" : "Dot_917", - "op" : "Dot", - "outputs" : ["Dot_917_0"] - }, - { - "inputs" : [ "Dot_917", "Broadcast_918" ], - "name" : "Add_919", - "op" : "Add", - "outputs" : ["Add_919_0"] - }, - { - "inputs" : [ "Add_14", "Add_919" ], - "name" : "Add_920", - "op" : "Add", - "outputs" : ["Add_920_0"] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_921", - "op" : "Slice", - "outputs" : ["Slice_921_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_928", - "op" : "Slice", - "outputs" : ["Slice_928_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_936", - "op" : "Slice", - "outputs" : ["Slice_936_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_920"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_943", - "op" : "Slice", - "outputs" : ["Slice_943_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_921"], - "name" : "Negative_924", - "op" : "Negative", - "outputs" : ["Negative_924_0"] - }, - { - "inputs" : ["Slice_928"], - "name" : "Negative_931", - "op" : "Negative", - "outputs" : ["Negative_931_0"] - }, - { - "inputs" : ["Slice_936"], - "name" : "Negative_939", - "op" : "Negative", - "outputs" : ["Negative_939_0"] - }, - { - "inputs" : ["Slice_943"], - "name" : "Tanh_944", - "op" : "Tanh", - "outputs" : ["Tanh_944_0"] - }, - { - "inputs" : ["Negative_924"], - "name" : "Exp_925", - "op" : "Exp", - "outputs" : ["Exp_925_0"] - }, - { - "inputs" : ["Negative_931"], - "name" : "Exp_932", - "op" : "Exp", - "outputs" : ["Exp_932_0"] - }, - { - "inputs" : ["Negative_939"], - "name" : "Exp_940", - "op" : "Exp", - "outputs" : ["Exp_940_0"] - }, - { - "inputs" : [ "Broadcast_923", "Exp_925" ], - "name" : "Add_926", - "op" : "Add", - "outputs" : ["Add_926_0"] - }, - { - "inputs" : [ "Broadcast_930", "Exp_932" ], - "name" : "Add_933", - "op" : "Add", - "outputs" : ["Add_933_0"] - }, - { - "inputs" : [ "Broadcast_938", "Exp_940" ], - "name" : "Add_941", - "op" : "Add", - "outputs" : ["Add_941_0"] - }, - { - "inputs" : [ "Broadcast_923", "Add_926" ], - "name" : "Divide_927", - "op" : "Divide", - "outputs" : ["Divide_927_0"] - }, - { - "inputs" : [ "Broadcast_930", "Add_933" ], - "name" : "Divide_934", - "op" : "Divide", - "outputs" : ["Divide_934_0"] - }, - { - "inputs" : [ "Broadcast_938", "Add_941" ], - "name" : "Divide_942", - "op" : "Divide", - "outputs" : ["Divide_942_0"] - }, - { - "inputs" : [ "Divide_934", "Add_913" ], - "name" : "Multiply_935", - "op" : "Multiply", - "outputs" : ["Multiply_935_0"] - }, - { - "inputs" : [ "Divide_942", "Tanh_944" ], - "name" : "Multiply_945", - "op" : "Multiply", - "outputs" : ["Multiply_945_0"] - }, - { - "inputs" : [ "Multiply_935", "Multiply_945" ], - "name" : "Add_946", - "op" : "Add", - "outputs" : ["Add_946_0"] - }, - { - "inputs" : ["Add_946"], - "name" : "Tanh_947", - "op" : "Tanh", - "outputs" : ["Tanh_947_0"] - }, - { - "inputs" : [ "Divide_927", "Tanh_947" ], - "name" : "Multiply_948", - "op" : "Multiply", - "outputs" : ["Multiply_948_0"] - }, - { - "inputs" : [ "Multiply_948", "Reshape_949" ], - "name" : "Dot_950", - "op" : "Dot", - "outputs" : ["Dot_950_0"] - }, - { - "inputs" : [ "Dot_950", "Broadcast_951" ], - "name" : "Add_952", - "op" : "Add", - "outputs" : ["Add_952_0"] - }, - { - "inputs" : [ "Add_8", "Add_952" ], - "name" : "Add_953", - "op" : "Add", - "outputs" : ["Add_953_0"] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 450 ], - "name" : "Slice_954", - "op" : "Slice", - "outputs" : ["Slice_954_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 600 ] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 300 ], - "name" : "Slice_961", - "op" : "Slice", - "outputs" : ["Slice_961_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 450 ] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_969", - "op" : "Slice", - "outputs" : ["Slice_969_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 150 ] - }, - { - "inputs" : ["Add_953"], - "lower_bounds" : [ 0, 150 ], - "name" : "Slice_976", - "op" : "Slice", - "outputs" : ["Slice_976_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 10, 300 ] - }, - { - "inputs" : ["Slice_954"], - "name" : "Negative_957", - "op" : "Negative", - "outputs" : ["Negative_957_0"] - }, - { - "inputs" : ["Slice_961"], - "name" : "Negative_964", - "op" : "Negative", - "outputs" : ["Negative_964_0"] - }, - { - "inputs" : ["Slice_969"], - "name" : "Negative_972", - "op" : "Negative", - "outputs" : ["Negative_972_0"] - }, - { - "inputs" : ["Slice_976"], - "name" : "Tanh_977", - "op" : "Tanh", - "outputs" : ["Tanh_977_0"] - }, - { - "inputs" : ["Negative_957"], - "name" : "Exp_958", - "op" : "Exp", - "outputs" : ["Exp_958_0"] - }, - { - "inputs" : ["Negative_964"], - "name" : "Exp_965", - "op" : "Exp", - "outputs" : ["Exp_965_0"] - }, - { - "inputs" : ["Negative_972"], - "name" : "Exp_973", - "op" : "Exp", - "outputs" : ["Exp_973_0"] - }, - { - "inputs" : [ "Broadcast_956", "Exp_958" ], - "name" : "Add_959", - "op" : "Add", - "outputs" : ["Add_959_0"] - }, - { - "inputs" : [ "Broadcast_963", "Exp_965" ], - "name" : "Add_966", - "op" : "Add", - "outputs" : ["Add_966_0"] - }, - { - "inputs" : [ "Broadcast_971", "Exp_973" ], - "name" : "Add_974", - "op" : "Add", - "outputs" : ["Add_974_0"] - }, - { - "inputs" : [ "Broadcast_956", "Add_959" ], - "name" : "Divide_960", - "op" : "Divide", - "outputs" : ["Divide_960_0"] - }, - { - "inputs" : [ "Broadcast_963", "Add_966" ], - "name" : "Divide_967", - "op" : "Divide", - "outputs" : ["Divide_967_0"] - }, - { - "inputs" : [ "Broadcast_971", "Add_974" ], - "name" : "Divide_975", - "op" : "Divide", - "outputs" : ["Divide_975_0"] - }, - { - "inputs" : [ "Divide_967", "Add_946" ], - "name" : "Multiply_968", - "op" : "Multiply", - "outputs" : ["Multiply_968_0"] - }, - { - "inputs" : [ "Divide_975", "Tanh_977" ], - "name" : "Multiply_978", - "op" : "Multiply", - "outputs" : ["Multiply_978_0"] - }, - { - "inputs" : [ "Multiply_968", "Multiply_978" ], - "name" : "Add_979", - "op" : "Add", - "outputs" : ["Add_979_0"] - }, - { - "inputs" : ["Add_979"], - "name" : "Tanh_980", - "op" : "Tanh", - "outputs" : ["Tanh_980_0"] - }, - { - "inputs" : [ "Divide_960", "Tanh_980" ], - "name" : "Multiply_981", - "op" : "Multiply", - "outputs" : ["Multiply_981_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_3", "Parameter_4", "Parameter_153", - "Parameter_154", "Parameter_155", "Parameter_175" - ], - "result" : ["Multiply_981"] -}] diff --git a/ngraph/test/models/mxnet/Sockeye_Seq2Seq_backward.json b/ngraph/test/models/mxnet/Sockeye_Seq2Seq_backward.json deleted file mode 100644 index ad4f48b83f7562..00000000000000 --- a/ngraph/test/models/mxnet/Sockeye_Seq2Seq_backward.json +++ /dev/null @@ -1,46181 +0,0 @@ -[{ - "name" : "Function_43", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35324", - "op" : "Parameter", - "outputs" : ["Parameter_35324_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34059", - "op" : "Parameter", - "outputs" : ["Parameter_34059_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35323", - "op" : "Parameter", - "outputs" : ["Parameter_35323_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35314", - "op" : "Parameter", - "outputs" : ["Parameter_35314_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35311", - "op" : "Parameter", - "outputs" : ["Parameter_35311_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36096", - "op" : "Parameter", - "outputs" : ["Parameter_36096_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35305", - "op" : "Parameter", - "outputs" : ["Parameter_35305_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34802", - "op" : "Parameter", - "outputs" : ["Parameter_34802_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35304", - "op" : "Parameter", - "outputs" : ["Parameter_35304_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36076", - "op" : "Parameter", - "outputs" : ["Parameter_36076_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35303", - "op" : "Parameter", - "outputs" : ["Parameter_35303_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34724", - "op" : "Parameter", - "outputs" : ["Parameter_34724_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35960", - "op" : "Parameter", - "outputs" : ["Parameter_35960_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35302", - "op" : "Parameter", - "outputs" : ["Parameter_35302_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35301", - "op" : "Parameter", - "outputs" : ["Parameter_35301_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35919", - "op" : "Parameter", - "outputs" : ["Parameter_35919_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35299", - "op" : "Parameter", - "outputs" : ["Parameter_35299_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35307", - "op" : "Parameter", - "outputs" : ["Parameter_35307_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35262", - "op" : "Parameter", - "outputs" : ["Parameter_35262_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35298", - "op" : "Parameter", - "outputs" : ["Parameter_35298_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35297", - "op" : "Parameter", - "outputs" : ["Parameter_35297_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35293", - "op" : "Parameter", - "outputs" : ["Parameter_35293_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36150", - "op" : "Parameter", - "outputs" : ["Parameter_36150_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35292", - "op" : "Parameter", - "outputs" : ["Parameter_35292_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35289", - "op" : "Parameter", - "outputs" : ["Parameter_35289_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36178", - "op" : "Parameter", - "outputs" : ["Parameter_36178_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35318", - "op" : "Parameter", - "outputs" : ["Parameter_35318_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35288", - "op" : "Parameter", - "outputs" : ["Parameter_35288_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35284", - "op" : "Parameter", - "outputs" : ["Parameter_35284_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34293", - "op" : "Parameter", - "outputs" : ["Parameter_34293_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35568", - "op" : "Parameter", - "outputs" : ["Parameter_35568_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35279", - "op" : "Parameter", - "outputs" : ["Parameter_35279_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34231", - "op" : "Parameter", - "outputs" : ["Parameter_34231_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35277", - "op" : "Parameter", - "outputs" : ["Parameter_35277_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34949", - "op" : "Parameter", - "outputs" : ["Parameter_34949_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35276", - "op" : "Parameter", - "outputs" : ["Parameter_35276_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34626", - "op" : "Parameter", - "outputs" : ["Parameter_34626_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35273", - "op" : "Parameter", - "outputs" : ["Parameter_35273_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35271", - "op" : "Parameter", - "outputs" : ["Parameter_35271_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35054", - "op" : "Parameter", - "outputs" : ["Parameter_35054_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35270", - "op" : "Parameter", - "outputs" : ["Parameter_35270_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35268", - "op" : "Parameter", - "outputs" : ["Parameter_35268_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35059", - "op" : "Parameter", - "outputs" : ["Parameter_35059_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35977", - "op" : "Parameter", - "outputs" : ["Parameter_35977_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35267", - "op" : "Parameter", - "outputs" : ["Parameter_35267_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35640", - "op" : "Parameter", - "outputs" : ["Parameter_35640_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35266", - "op" : "Parameter", - "outputs" : ["Parameter_35266_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35122", - "op" : "Parameter", - "outputs" : ["Parameter_35122_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35997", - "op" : "Parameter", - "outputs" : ["Parameter_35997_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35264", - "op" : "Parameter", - "outputs" : ["Parameter_35264_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35261", - "op" : "Parameter", - "outputs" : ["Parameter_35261_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34376", - "op" : "Parameter", - "outputs" : ["Parameter_34376_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34538", - "op" : "Parameter", - "outputs" : ["Parameter_34538_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35259", - "op" : "Parameter", - "outputs" : ["Parameter_35259_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35258", - "op" : "Parameter", - "outputs" : ["Parameter_35258_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33909", - "op" : "Parameter", - "outputs" : ["Parameter_33909_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34528", - "op" : "Parameter", - "outputs" : ["Parameter_34528_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35257", - "op" : "Parameter", - "outputs" : ["Parameter_35257_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34091", - "op" : "Parameter", - "outputs" : ["Parameter_34091_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34239", - "op" : "Parameter", - "outputs" : ["Parameter_34239_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35256", - "op" : "Parameter", - "outputs" : ["Parameter_35256_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34986", - "op" : "Parameter", - "outputs" : ["Parameter_34986_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35255", - "op" : "Parameter", - "outputs" : ["Parameter_35255_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35121", - "op" : "Parameter", - "outputs" : ["Parameter_35121_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35253", - "op" : "Parameter", - "outputs" : ["Parameter_35253_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35251", - "op" : "Parameter", - "outputs" : ["Parameter_35251_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35246", - "op" : "Parameter", - "outputs" : ["Parameter_35246_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36162", - "op" : "Parameter", - "outputs" : ["Parameter_36162_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35245", - "op" : "Parameter", - "outputs" : ["Parameter_35245_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35244", - "op" : "Parameter", - "outputs" : ["Parameter_35244_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35243", - "op" : "Parameter", - "outputs" : ["Parameter_35243_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35803", - "op" : "Parameter", - "outputs" : ["Parameter_35803_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35242", - "op" : "Parameter", - "outputs" : ["Parameter_35242_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35239", - "op" : "Parameter", - "outputs" : ["Parameter_35239_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35769", - "op" : "Parameter", - "outputs" : ["Parameter_35769_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35238", - "op" : "Parameter", - "outputs" : ["Parameter_35238_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35234", - "op" : "Parameter", - "outputs" : ["Parameter_35234_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35187", - "op" : "Parameter", - "outputs" : ["Parameter_35187_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34495", - "op" : "Parameter", - "outputs" : ["Parameter_34495_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35233", - "op" : "Parameter", - "outputs" : ["Parameter_35233_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35612", - "op" : "Parameter", - "outputs" : ["Parameter_35612_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35232", - "op" : "Parameter", - "outputs" : ["Parameter_35232_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34310", - "op" : "Parameter", - "outputs" : ["Parameter_34310_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35608", - "op" : "Parameter", - "outputs" : ["Parameter_35608_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35231", - "op" : "Parameter", - "outputs" : ["Parameter_35231_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33917", - "op" : "Parameter", - "outputs" : ["Parameter_33917_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35590", - "op" : "Parameter", - "outputs" : ["Parameter_35590_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35286", - "op" : "Parameter", - "outputs" : ["Parameter_35286_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35228", - "op" : "Parameter", - "outputs" : ["Parameter_35228_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35145", - "op" : "Parameter", - "outputs" : ["Parameter_35145_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34529", - "op" : "Parameter", - "outputs" : ["Parameter_34529_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35226", - "op" : "Parameter", - "outputs" : ["Parameter_35226_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33907", - "op" : "Parameter", - "outputs" : ["Parameter_33907_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35618", - "op" : "Parameter", - "outputs" : ["Parameter_35618_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35224", - "op" : "Parameter", - "outputs" : ["Parameter_35224_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35222", - "op" : "Parameter", - "outputs" : ["Parameter_35222_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34675", - "op" : "Parameter", - "outputs" : ["Parameter_34675_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35904", - "op" : "Parameter", - "outputs" : ["Parameter_35904_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36161", - "op" : "Parameter", - "outputs" : ["Parameter_36161_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35221", - "op" : "Parameter", - "outputs" : ["Parameter_35221_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34095", - "op" : "Parameter", - "outputs" : ["Parameter_34095_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35283", - "op" : "Parameter", - "outputs" : ["Parameter_35283_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35217", - "op" : "Parameter", - "outputs" : ["Parameter_35217_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35625", - "op" : "Parameter", - "outputs" : ["Parameter_35625_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35216", - "op" : "Parameter", - "outputs" : ["Parameter_35216_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35322", - "op" : "Parameter", - "outputs" : ["Parameter_35322_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35779", - "op" : "Parameter", - "outputs" : ["Parameter_35779_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35215", - "op" : "Parameter", - "outputs" : ["Parameter_35215_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33843", - "op" : "Parameter", - "outputs" : ["Parameter_33843_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34212", - "op" : "Parameter", - "outputs" : ["Parameter_34212_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34494", - "op" : "Parameter", - "outputs" : ["Parameter_34494_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35378", - "op" : "Parameter", - "outputs" : ["Parameter_35378_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35206", - "op" : "Parameter", - "outputs" : ["Parameter_35206_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35201", - "op" : "Parameter", - "outputs" : ["Parameter_35201_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33972", - "op" : "Parameter", - "outputs" : ["Parameter_33972_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35200", - "op" : "Parameter", - "outputs" : ["Parameter_35200_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35199", - "op" : "Parameter", - "outputs" : ["Parameter_35199_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35326", - "op" : "Parameter", - "outputs" : ["Parameter_35326_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35198", - "op" : "Parameter", - "outputs" : ["Parameter_35198_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33871", - "op" : "Parameter", - "outputs" : ["Parameter_33871_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35344", - "op" : "Parameter", - "outputs" : ["Parameter_35344_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35445", - "op" : "Parameter", - "outputs" : ["Parameter_35445_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35197", - "op" : "Parameter", - "outputs" : ["Parameter_35197_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34960", - "op" : "Parameter", - "outputs" : ["Parameter_34960_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34078", - "op" : "Parameter", - "outputs" : ["Parameter_34078_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33958", - "op" : "Parameter", - "outputs" : ["Parameter_33958_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35252", - "op" : "Parameter", - "outputs" : ["Parameter_35252_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34905", - "op" : "Parameter", - "outputs" : ["Parameter_34905_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35195", - "op" : "Parameter", - "outputs" : ["Parameter_35195_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34258", - "op" : "Parameter", - "outputs" : ["Parameter_34258_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35194", - "op" : "Parameter", - "outputs" : ["Parameter_35194_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35193", - "op" : "Parameter", - "outputs" : ["Parameter_35193_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35191", - "op" : "Parameter", - "outputs" : ["Parameter_35191_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35241", - "op" : "Parameter", - "outputs" : ["Parameter_35241_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35721", - "op" : "Parameter", - "outputs" : ["Parameter_35721_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35189", - "op" : "Parameter", - "outputs" : ["Parameter_35189_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35599", - "op" : "Parameter", - "outputs" : ["Parameter_35599_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35188", - "op" : "Parameter", - "outputs" : ["Parameter_35188_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34614", - "op" : "Parameter", - "outputs" : ["Parameter_34614_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34070", - "op" : "Parameter", - "outputs" : ["Parameter_34070_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35185", - "op" : "Parameter", - "outputs" : ["Parameter_35185_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33845", - "op" : "Parameter", - "outputs" : ["Parameter_33845_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33862", - "op" : "Parameter", - "outputs" : ["Parameter_33862_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34216", - "op" : "Parameter", - "outputs" : ["Parameter_34216_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35183", - "op" : "Parameter", - "outputs" : ["Parameter_35183_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36000", - "op" : "Parameter", - "outputs" : ["Parameter_36000_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35182", - "op" : "Parameter", - "outputs" : ["Parameter_35182_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36070", - "op" : "Parameter", - "outputs" : ["Parameter_36070_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35248", - "op" : "Parameter", - "outputs" : ["Parameter_35248_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34785", - "op" : "Parameter", - "outputs" : ["Parameter_34785_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35179", - "op" : "Parameter", - "outputs" : ["Parameter_35179_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36015", - "op" : "Parameter", - "outputs" : ["Parameter_36015_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35174", - "op" : "Parameter", - "outputs" : ["Parameter_35174_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35172", - "op" : "Parameter", - "outputs" : ["Parameter_35172_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34366", - "op" : "Parameter", - "outputs" : ["Parameter_34366_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35167", - "op" : "Parameter", - "outputs" : ["Parameter_35167_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35164", - "op" : "Parameter", - "outputs" : ["Parameter_35164_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35214", - "op" : "Parameter", - "outputs" : ["Parameter_35214_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35727", - "op" : "Parameter", - "outputs" : ["Parameter_35727_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35160", - "op" : "Parameter", - "outputs" : ["Parameter_35160_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36016", - "op" : "Parameter", - "outputs" : ["Parameter_36016_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35213", - "op" : "Parameter", - "outputs" : ["Parameter_35213_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34828", - "op" : "Parameter", - "outputs" : ["Parameter_34828_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35394", - "op" : "Parameter", - "outputs" : ["Parameter_35394_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35157", - "op" : "Parameter", - "outputs" : ["Parameter_35157_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35724", - "op" : "Parameter", - "outputs" : ["Parameter_35724_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35156", - "op" : "Parameter", - "outputs" : ["Parameter_35156_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35424", - "op" : "Parameter", - "outputs" : ["Parameter_35424_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35154", - "op" : "Parameter", - "outputs" : ["Parameter_35154_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35153", - "op" : "Parameter", - "outputs" : ["Parameter_35153_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35819", - "op" : "Parameter", - "outputs" : ["Parameter_35819_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35148", - "op" : "Parameter", - "outputs" : ["Parameter_35148_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35144", - "op" : "Parameter", - "outputs" : ["Parameter_35144_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35227", - "op" : "Parameter", - "outputs" : ["Parameter_35227_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34530", - "op" : "Parameter", - "outputs" : ["Parameter_34530_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35140", - "op" : "Parameter", - "outputs" : ["Parameter_35140_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35139", - "op" : "Parameter", - "outputs" : ["Parameter_35139_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35893", - "op" : "Parameter", - "outputs" : ["Parameter_35893_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35137", - "op" : "Parameter", - "outputs" : ["Parameter_35137_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35778", - "op" : "Parameter", - "outputs" : ["Parameter_35778_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35135", - "op" : "Parameter", - "outputs" : ["Parameter_35135_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35132", - "op" : "Parameter", - "outputs" : ["Parameter_35132_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35131", - "op" : "Parameter", - "outputs" : ["Parameter_35131_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35498", - "op" : "Parameter", - "outputs" : ["Parameter_35498_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35130", - "op" : "Parameter", - "outputs" : ["Parameter_35130_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35129", - "op" : "Parameter", - "outputs" : ["Parameter_35129_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34849", - "op" : "Parameter", - "outputs" : ["Parameter_34849_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34820", - "op" : "Parameter", - "outputs" : ["Parameter_34820_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34843", - "op" : "Parameter", - "outputs" : ["Parameter_34843_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35127", - "op" : "Parameter", - "outputs" : ["Parameter_35127_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35126", - "op" : "Parameter", - "outputs" : ["Parameter_35126_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33995", - "op" : "Parameter", - "outputs" : ["Parameter_33995_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35693", - "op" : "Parameter", - "outputs" : ["Parameter_35693_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35118", - "op" : "Parameter", - "outputs" : ["Parameter_35118_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35163", - "op" : "Parameter", - "outputs" : ["Parameter_35163_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34171", - "op" : "Parameter", - "outputs" : ["Parameter_34171_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35117", - "op" : "Parameter", - "outputs" : ["Parameter_35117_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34408", - "op" : "Parameter", - "outputs" : ["Parameter_34408_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35133", - "op" : "Parameter", - "outputs" : ["Parameter_35133_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33861", - "op" : "Parameter", - "outputs" : ["Parameter_33861_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35940", - "op" : "Parameter", - "outputs" : ["Parameter_35940_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35115", - "op" : "Parameter", - "outputs" : ["Parameter_35115_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35451", - "op" : "Parameter", - "outputs" : ["Parameter_35451_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35138", - "op" : "Parameter", - "outputs" : ["Parameter_35138_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35894", - "op" : "Parameter", - "outputs" : ["Parameter_35894_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35111", - "op" : "Parameter", - "outputs" : ["Parameter_35111_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35110", - "op" : "Parameter", - "outputs" : ["Parameter_35110_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35109", - "op" : "Parameter", - "outputs" : ["Parameter_35109_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35889", - "op" : "Parameter", - "outputs" : ["Parameter_35889_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35108", - "op" : "Parameter", - "outputs" : ["Parameter_35108_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36051", - "op" : "Parameter", - "outputs" : ["Parameter_36051_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35103", - "op" : "Parameter", - "outputs" : ["Parameter_35103_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35100", - "op" : "Parameter", - "outputs" : ["Parameter_35100_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35099", - "op" : "Parameter", - "outputs" : ["Parameter_35099_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34654", - "op" : "Parameter", - "outputs" : ["Parameter_34654_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35090", - "op" : "Parameter", - "outputs" : ["Parameter_35090_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35944", - "op" : "Parameter", - "outputs" : ["Parameter_35944_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35088", - "op" : "Parameter", - "outputs" : ["Parameter_35088_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35087", - "op" : "Parameter", - "outputs" : ["Parameter_35087_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34010", - "op" : "Parameter", - "outputs" : ["Parameter_34010_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35082", - "op" : "Parameter", - "outputs" : ["Parameter_35082_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33965", - "op" : "Parameter", - "outputs" : ["Parameter_33965_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35439", - "op" : "Parameter", - "outputs" : ["Parameter_35439_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35081", - "op" : "Parameter", - "outputs" : ["Parameter_35081_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34890", - "op" : "Parameter", - "outputs" : ["Parameter_34890_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35078", - "op" : "Parameter", - "outputs" : ["Parameter_35078_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35076", - "op" : "Parameter", - "outputs" : ["Parameter_35076_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35074", - "op" : "Parameter", - "outputs" : ["Parameter_35074_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35073", - "op" : "Parameter", - "outputs" : ["Parameter_35073_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34507", - "op" : "Parameter", - "outputs" : ["Parameter_34507_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35064", - "op" : "Parameter", - "outputs" : ["Parameter_35064_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36116", - "op" : "Parameter", - "outputs" : ["Parameter_36116_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35063", - "op" : "Parameter", - "outputs" : ["Parameter_35063_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34129", - "op" : "Parameter", - "outputs" : ["Parameter_34129_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34481", - "op" : "Parameter", - "outputs" : ["Parameter_34481_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35060", - "op" : "Parameter", - "outputs" : ["Parameter_35060_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34189", - "op" : "Parameter", - "outputs" : ["Parameter_34189_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35319", - "op" : "Parameter", - "outputs" : ["Parameter_35319_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35058", - "op" : "Parameter", - "outputs" : ["Parameter_35058_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33991", - "op" : "Parameter", - "outputs" : ["Parameter_33991_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35057", - "op" : "Parameter", - "outputs" : ["Parameter_35057_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35055", - "op" : "Parameter", - "outputs" : ["Parameter_35055_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34879", - "op" : "Parameter", - "outputs" : ["Parameter_34879_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35317", - "op" : "Parameter", - "outputs" : ["Parameter_35317_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35046", - "op" : "Parameter", - "outputs" : ["Parameter_35046_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34903", - "op" : "Parameter", - "outputs" : ["Parameter_34903_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35856", - "op" : "Parameter", - "outputs" : ["Parameter_35856_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35044", - "op" : "Parameter", - "outputs" : ["Parameter_35044_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35281", - "op" : "Parameter", - "outputs" : ["Parameter_35281_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35043", - "op" : "Parameter", - "outputs" : ["Parameter_35043_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34315", - "op" : "Parameter", - "outputs" : ["Parameter_34315_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35040", - "op" : "Parameter", - "outputs" : ["Parameter_35040_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35038", - "op" : "Parameter", - "outputs" : ["Parameter_35038_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34194", - "op" : "Parameter", - "outputs" : ["Parameter_34194_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33938", - "op" : "Parameter", - "outputs" : ["Parameter_33938_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35037", - "op" : "Parameter", - "outputs" : ["Parameter_35037_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35034", - "op" : "Parameter", - "outputs" : ["Parameter_35034_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35688", - "op" : "Parameter", - "outputs" : ["Parameter_35688_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35033", - "op" : "Parameter", - "outputs" : ["Parameter_35033_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35031", - "op" : "Parameter", - "outputs" : ["Parameter_35031_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34004", - "op" : "Parameter", - "outputs" : ["Parameter_34004_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35030", - "op" : "Parameter", - "outputs" : ["Parameter_35030_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34629", - "op" : "Parameter", - "outputs" : ["Parameter_34629_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35094", - "op" : "Parameter", - "outputs" : ["Parameter_35094_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35029", - "op" : "Parameter", - "outputs" : ["Parameter_35029_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34352", - "op" : "Parameter", - "outputs" : ["Parameter_34352_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34354", - "op" : "Parameter", - "outputs" : ["Parameter_34354_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35028", - "op" : "Parameter", - "outputs" : ["Parameter_35028_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35023", - "op" : "Parameter", - "outputs" : ["Parameter_35023_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35022", - "op" : "Parameter", - "outputs" : ["Parameter_35022_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35020", - "op" : "Parameter", - "outputs" : ["Parameter_35020_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35107", - "op" : "Parameter", - "outputs" : ["Parameter_35107_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35016", - "op" : "Parameter", - "outputs" : ["Parameter_35016_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34957", - "op" : "Parameter", - "outputs" : ["Parameter_34957_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35943", - "op" : "Parameter", - "outputs" : ["Parameter_35943_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35014", - "op" : "Parameter", - "outputs" : ["Parameter_35014_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35012", - "op" : "Parameter", - "outputs" : ["Parameter_35012_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35089", - "op" : "Parameter", - "outputs" : ["Parameter_35089_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35011", - "op" : "Parameter", - "outputs" : ["Parameter_35011_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35010", - "op" : "Parameter", - "outputs" : ["Parameter_35010_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34858", - "op" : "Parameter", - "outputs" : ["Parameter_34858_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35808", - "op" : "Parameter", - "outputs" : ["Parameter_35808_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35008", - "op" : "Parameter", - "outputs" : ["Parameter_35008_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33977", - "op" : "Parameter", - "outputs" : ["Parameter_33977_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35007", - "op" : "Parameter", - "outputs" : ["Parameter_35007_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34236", - "op" : "Parameter", - "outputs" : ["Parameter_34236_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36025", - "op" : "Parameter", - "outputs" : ["Parameter_36025_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35005", - "op" : "Parameter", - "outputs" : ["Parameter_35005_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35387", - "op" : "Parameter", - "outputs" : ["Parameter_35387_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35004", - "op" : "Parameter", - "outputs" : ["Parameter_35004_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35383", - "op" : "Parameter", - "outputs" : ["Parameter_35383_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35003", - "op" : "Parameter", - "outputs" : ["Parameter_35003_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35382", - "op" : "Parameter", - "outputs" : ["Parameter_35382_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35001", - "op" : "Parameter", - "outputs" : ["Parameter_35001_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34999", - "op" : "Parameter", - "outputs" : ["Parameter_34999_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35381", - "op" : "Parameter", - "outputs" : ["Parameter_35381_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34994", - "op" : "Parameter", - "outputs" : ["Parameter_34994_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34993", - "op" : "Parameter", - "outputs" : ["Parameter_34993_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34992", - "op" : "Parameter", - "outputs" : ["Parameter_34992_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34991", - "op" : "Parameter", - "outputs" : ["Parameter_34991_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34988", - "op" : "Parameter", - "outputs" : ["Parameter_34988_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34461", - "op" : "Parameter", - "outputs" : ["Parameter_34461_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34985", - "op" : "Parameter", - "outputs" : ["Parameter_34985_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34925", - "op" : "Parameter", - "outputs" : ["Parameter_34925_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34418", - "op" : "Parameter", - "outputs" : ["Parameter_34418_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34271", - "op" : "Parameter", - "outputs" : ["Parameter_34271_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34980", - "op" : "Parameter", - "outputs" : ["Parameter_34980_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34977", - "op" : "Parameter", - "outputs" : ["Parameter_34977_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35086", - "op" : "Parameter", - "outputs" : ["Parameter_35086_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34976", - "op" : "Parameter", - "outputs" : ["Parameter_34976_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34973", - "op" : "Parameter", - "outputs" : ["Parameter_34973_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34971", - "op" : "Parameter", - "outputs" : ["Parameter_34971_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33836", - "op" : "Parameter", - "outputs" : ["Parameter_33836_0"], - "shape" : [1024] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34970", - "op" : "Parameter", - "outputs" : ["Parameter_34970_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34969", - "op" : "Parameter", - "outputs" : ["Parameter_34969_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35525", - "op" : "Parameter", - "outputs" : ["Parameter_35525_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34961", - "op" : "Parameter", - "outputs" : ["Parameter_34961_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34968", - "op" : "Parameter", - "outputs" : ["Parameter_34968_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34959", - "op" : "Parameter", - "outputs" : ["Parameter_34959_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34952", - "op" : "Parameter", - "outputs" : ["Parameter_34952_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35235", - "op" : "Parameter", - "outputs" : ["Parameter_35235_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34950", - "op" : "Parameter", - "outputs" : ["Parameter_34950_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35762", - "op" : "Parameter", - "outputs" : ["Parameter_35762_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35050", - "op" : "Parameter", - "outputs" : ["Parameter_35050_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34947", - "op" : "Parameter", - "outputs" : ["Parameter_34947_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35018", - "op" : "Parameter", - "outputs" : ["Parameter_35018_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34328", - "op" : "Parameter", - "outputs" : ["Parameter_34328_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34946", - "op" : "Parameter", - "outputs" : ["Parameter_34946_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35615", - "op" : "Parameter", - "outputs" : ["Parameter_35615_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34945", - "op" : "Parameter", - "outputs" : ["Parameter_34945_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34404", - "op" : "Parameter", - "outputs" : ["Parameter_34404_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34943", - "op" : "Parameter", - "outputs" : ["Parameter_34943_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34130", - "op" : "Parameter", - "outputs" : ["Parameter_34130_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34482", - "op" : "Parameter", - "outputs" : ["Parameter_34482_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35150", - "op" : "Parameter", - "outputs" : ["Parameter_35150_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35642", - "op" : "Parameter", - "outputs" : ["Parameter_35642_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34942", - "op" : "Parameter", - "outputs" : ["Parameter_34942_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34935", - "op" : "Parameter", - "outputs" : ["Parameter_34935_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34634", - "op" : "Parameter", - "outputs" : ["Parameter_34634_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35169", - "op" : "Parameter", - "outputs" : ["Parameter_35169_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34931", - "op" : "Parameter", - "outputs" : ["Parameter_34931_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34641", - "op" : "Parameter", - "outputs" : ["Parameter_34641_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34930", - "op" : "Parameter", - "outputs" : ["Parameter_34930_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34966", - "op" : "Parameter", - "outputs" : ["Parameter_34966_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35503", - "op" : "Parameter", - "outputs" : ["Parameter_35503_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35052", - "op" : "Parameter", - "outputs" : ["Parameter_35052_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36027", - "op" : "Parameter", - "outputs" : ["Parameter_36027_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34929", - "op" : "Parameter", - "outputs" : ["Parameter_34929_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34632", - "op" : "Parameter", - "outputs" : ["Parameter_34632_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34928", - "op" : "Parameter", - "outputs" : ["Parameter_34928_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34857", - "op" : "Parameter", - "outputs" : ["Parameter_34857_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35170", - "op" : "Parameter", - "outputs" : ["Parameter_35170_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36064", - "op" : "Parameter", - "outputs" : ["Parameter_36064_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34927", - "op" : "Parameter", - "outputs" : ["Parameter_34927_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35826", - "op" : "Parameter", - "outputs" : ["Parameter_35826_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35155", - "op" : "Parameter", - "outputs" : ["Parameter_35155_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34924", - "op" : "Parameter", - "outputs" : ["Parameter_34924_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34920", - "op" : "Parameter", - "outputs" : ["Parameter_34920_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34299", - "op" : "Parameter", - "outputs" : ["Parameter_34299_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34944", - "op" : "Parameter", - "outputs" : ["Parameter_34944_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33834", - "op" : "Parameter", - "outputs" : ["Parameter_33834_0"], - "shape" : [1024] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34919", - "op" : "Parameter", - "outputs" : ["Parameter_34919_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35134", - "op" : "Parameter", - "outputs" : ["Parameter_35134_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34918", - "op" : "Parameter", - "outputs" : ["Parameter_34918_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35176", - "op" : "Parameter", - "outputs" : ["Parameter_35176_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34917", - "op" : "Parameter", - "outputs" : ["Parameter_34917_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34914", - "op" : "Parameter", - "outputs" : ["Parameter_34914_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34365", - "op" : "Parameter", - "outputs" : ["Parameter_34365_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35470", - "op" : "Parameter", - "outputs" : ["Parameter_35470_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34912", - "op" : "Parameter", - "outputs" : ["Parameter_34912_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36031", - "op" : "Parameter", - "outputs" : ["Parameter_36031_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34911", - "op" : "Parameter", - "outputs" : ["Parameter_34911_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34415", - "op" : "Parameter", - "outputs" : ["Parameter_34415_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35175", - "op" : "Parameter", - "outputs" : ["Parameter_35175_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34910", - "op" : "Parameter", - "outputs" : ["Parameter_34910_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35177", - "op" : "Parameter", - "outputs" : ["Parameter_35177_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34939", - "op" : "Parameter", - "outputs" : ["Parameter_34939_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34909", - "op" : "Parameter", - "outputs" : ["Parameter_34909_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33892", - "op" : "Parameter", - "outputs" : ["Parameter_33892_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35635", - "op" : "Parameter", - "outputs" : ["Parameter_35635_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34907", - "op" : "Parameter", - "outputs" : ["Parameter_34907_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34906", - "op" : "Parameter", - "outputs" : ["Parameter_34906_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35009", - "op" : "Parameter", - "outputs" : ["Parameter_35009_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33986", - "op" : "Parameter", - "outputs" : ["Parameter_33986_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34904", - "op" : "Parameter", - "outputs" : ["Parameter_34904_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34623", - "op" : "Parameter", - "outputs" : ["Parameter_34623_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34901", - "op" : "Parameter", - "outputs" : ["Parameter_34901_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33941", - "op" : "Parameter", - "outputs" : ["Parameter_33941_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34899", - "op" : "Parameter", - "outputs" : ["Parameter_34899_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35123", - "op" : "Parameter", - "outputs" : ["Parameter_35123_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34896", - "op" : "Parameter", - "outputs" : ["Parameter_34896_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35047", - "op" : "Parameter", - "outputs" : ["Parameter_35047_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34892", - "op" : "Parameter", - "outputs" : ["Parameter_34892_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34587", - "op" : "Parameter", - "outputs" : ["Parameter_34587_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34308", - "op" : "Parameter", - "outputs" : ["Parameter_34308_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34887", - "op" : "Parameter", - "outputs" : ["Parameter_34887_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34886", - "op" : "Parameter", - "outputs" : ["Parameter_34886_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35062", - "op" : "Parameter", - "outputs" : ["Parameter_35062_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34885", - "op" : "Parameter", - "outputs" : ["Parameter_34885_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34536", - "op" : "Parameter", - "outputs" : ["Parameter_34536_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35923", - "op" : "Parameter", - "outputs" : ["Parameter_35923_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35045", - "op" : "Parameter", - "outputs" : ["Parameter_35045_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34989", - "op" : "Parameter", - "outputs" : ["Parameter_34989_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34699", - "op" : "Parameter", - "outputs" : ["Parameter_34699_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35903", - "op" : "Parameter", - "outputs" : ["Parameter_35903_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34884", - "op" : "Parameter", - "outputs" : ["Parameter_34884_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35066", - "op" : "Parameter", - "outputs" : ["Parameter_35066_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35042", - "op" : "Parameter", - "outputs" : ["Parameter_35042_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34264", - "op" : "Parameter", - "outputs" : ["Parameter_34264_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34488", - "op" : "Parameter", - "outputs" : ["Parameter_34488_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34883", - "op" : "Parameter", - "outputs" : ["Parameter_34883_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35147", - "op" : "Parameter", - "outputs" : ["Parameter_35147_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35783", - "op" : "Parameter", - "outputs" : ["Parameter_35783_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36024", - "op" : "Parameter", - "outputs" : ["Parameter_36024_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34882", - "op" : "Parameter", - "outputs" : ["Parameter_34882_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34880", - "op" : "Parameter", - "outputs" : ["Parameter_34880_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34467", - "op" : "Parameter", - "outputs" : ["Parameter_34467_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34878", - "op" : "Parameter", - "outputs" : ["Parameter_34878_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35345", - "op" : "Parameter", - "outputs" : ["Parameter_35345_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35263", - "op" : "Parameter", - "outputs" : ["Parameter_35263_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34442", - "op" : "Parameter", - "outputs" : ["Parameter_34442_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34525", - "op" : "Parameter", - "outputs" : ["Parameter_34525_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34877", - "op" : "Parameter", - "outputs" : ["Parameter_34877_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35112", - "op" : "Parameter", - "outputs" : ["Parameter_35112_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34875", - "op" : "Parameter", - "outputs" : ["Parameter_34875_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36043", - "op" : "Parameter", - "outputs" : ["Parameter_36043_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34873", - "op" : "Parameter", - "outputs" : ["Parameter_34873_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34868", - "op" : "Parameter", - "outputs" : ["Parameter_34868_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34864", - "op" : "Parameter", - "outputs" : ["Parameter_34864_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34622", - "op" : "Parameter", - "outputs" : ["Parameter_34622_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35296", - "op" : "Parameter", - "outputs" : ["Parameter_35296_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34963", - "op" : "Parameter", - "outputs" : ["Parameter_34963_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34863", - "op" : "Parameter", - "outputs" : ["Parameter_34863_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36100", - "op" : "Parameter", - "outputs" : ["Parameter_36100_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35269", - "op" : "Parameter", - "outputs" : ["Parameter_35269_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34862", - "op" : "Parameter", - "outputs" : ["Parameter_34862_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35095", - "op" : "Parameter", - "outputs" : ["Parameter_35095_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34861", - "op" : "Parameter", - "outputs" : ["Parameter_34861_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33889", - "op" : "Parameter", - "outputs" : ["Parameter_33889_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35361", - "op" : "Parameter", - "outputs" : ["Parameter_35361_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34860", - "op" : "Parameter", - "outputs" : ["Parameter_34860_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34859", - "op" : "Parameter", - "outputs" : ["Parameter_34859_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35006", - "op" : "Parameter", - "outputs" : ["Parameter_35006_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35388", - "op" : "Parameter", - "outputs" : ["Parameter_35388_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34856", - "op" : "Parameter", - "outputs" : ["Parameter_34856_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35560", - "op" : "Parameter", - "outputs" : ["Parameter_35560_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35186", - "op" : "Parameter", - "outputs" : ["Parameter_35186_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34512", - "op" : "Parameter", - "outputs" : ["Parameter_34512_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35114", - "op" : "Parameter", - "outputs" : ["Parameter_35114_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34854", - "op" : "Parameter", - "outputs" : ["Parameter_34854_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34853", - "op" : "Parameter", - "outputs" : ["Parameter_34853_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34852", - "op" : "Parameter", - "outputs" : ["Parameter_34852_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34850", - "op" : "Parameter", - "outputs" : ["Parameter_34850_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34041", - "op" : "Parameter", - "outputs" : ["Parameter_34041_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34848", - "op" : "Parameter", - "outputs" : ["Parameter_34848_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34199", - "op" : "Parameter", - "outputs" : ["Parameter_34199_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34844", - "op" : "Parameter", - "outputs" : ["Parameter_34844_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34846", - "op" : "Parameter", - "outputs" : ["Parameter_34846_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34842", - "op" : "Parameter", - "outputs" : ["Parameter_34842_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34839", - "op" : "Parameter", - "outputs" : ["Parameter_34839_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35672", - "op" : "Parameter", - "outputs" : ["Parameter_35672_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34996", - "op" : "Parameter", - "outputs" : ["Parameter_34996_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34838", - "op" : "Parameter", - "outputs" : ["Parameter_34838_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35181", - "op" : "Parameter", - "outputs" : ["Parameter_35181_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34836", - "op" : "Parameter", - "outputs" : ["Parameter_34836_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35535", - "op" : "Parameter", - "outputs" : ["Parameter_35535_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36140", - "op" : "Parameter", - "outputs" : ["Parameter_36140_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35320", - "op" : "Parameter", - "outputs" : ["Parameter_35320_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35091", - "op" : "Parameter", - "outputs" : ["Parameter_35091_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35933", - "op" : "Parameter", - "outputs" : ["Parameter_35933_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34834", - "op" : "Parameter", - "outputs" : ["Parameter_34834_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35475", - "op" : "Parameter", - "outputs" : ["Parameter_35475_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35067", - "op" : "Parameter", - "outputs" : ["Parameter_35067_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34832", - "op" : "Parameter", - "outputs" : ["Parameter_34832_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35665", - "op" : "Parameter", - "outputs" : ["Parameter_35665_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35085", - "op" : "Parameter", - "outputs" : ["Parameter_35085_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34431", - "op" : "Parameter", - "outputs" : ["Parameter_34431_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34825", - "op" : "Parameter", - "outputs" : ["Parameter_34825_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33989", - "op" : "Parameter", - "outputs" : ["Parameter_33989_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34588", - "op" : "Parameter", - "outputs" : ["Parameter_34588_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34823", - "op" : "Parameter", - "outputs" : ["Parameter_34823_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34822", - "op" : "Parameter", - "outputs" : ["Parameter_34822_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34707", - "op" : "Parameter", - "outputs" : ["Parameter_34707_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34821", - "op" : "Parameter", - "outputs" : ["Parameter_34821_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34164", - "op" : "Parameter", - "outputs" : ["Parameter_34164_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34815", - "op" : "Parameter", - "outputs" : ["Parameter_34815_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33973", - "op" : "Parameter", - "outputs" : ["Parameter_33973_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35674", - "op" : "Parameter", - "outputs" : ["Parameter_35674_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34814", - "op" : "Parameter", - "outputs" : ["Parameter_34814_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34813", - "op" : "Parameter", - "outputs" : ["Parameter_34813_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35574", - "op" : "Parameter", - "outputs" : ["Parameter_35574_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34811", - "op" : "Parameter", - "outputs" : ["Parameter_34811_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34810", - "op" : "Parameter", - "outputs" : ["Parameter_34810_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34809", - "op" : "Parameter", - "outputs" : ["Parameter_34809_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34804", - "op" : "Parameter", - "outputs" : ["Parameter_34804_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34803", - "op" : "Parameter", - "outputs" : ["Parameter_34803_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34801", - "op" : "Parameter", - "outputs" : ["Parameter_34801_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35300", - "op" : "Parameter", - "outputs" : ["Parameter_35300_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34647", - "op" : "Parameter", - "outputs" : ["Parameter_34647_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34799", - "op" : "Parameter", - "outputs" : ["Parameter_34799_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34798", - "op" : "Parameter", - "outputs" : ["Parameter_34798_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35680", - "op" : "Parameter", - "outputs" : ["Parameter_35680_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34795", - "op" : "Parameter", - "outputs" : ["Parameter_34795_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35158", - "op" : "Parameter", - "outputs" : ["Parameter_35158_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34534", - "op" : "Parameter", - "outputs" : ["Parameter_34534_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34936", - "op" : "Parameter", - "outputs" : ["Parameter_34936_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34794", - "op" : "Parameter", - "outputs" : ["Parameter_34794_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34637", - "op" : "Parameter", - "outputs" : ["Parameter_34637_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34793", - "op" : "Parameter", - "outputs" : ["Parameter_34793_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35024", - "op" : "Parameter", - "outputs" : ["Parameter_35024_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34791", - "op" : "Parameter", - "outputs" : ["Parameter_34791_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35713", - "op" : "Parameter", - "outputs" : ["Parameter_35713_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34790", - "op" : "Parameter", - "outputs" : ["Parameter_34790_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34787", - "op" : "Parameter", - "outputs" : ["Parameter_34787_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34784", - "op" : "Parameter", - "outputs" : ["Parameter_34784_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34445", - "op" : "Parameter", - "outputs" : ["Parameter_34445_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35474", - "op" : "Parameter", - "outputs" : ["Parameter_35474_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35313", - "op" : "Parameter", - "outputs" : ["Parameter_35313_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34781", - "op" : "Parameter", - "outputs" : ["Parameter_34781_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34336", - "op" : "Parameter", - "outputs" : ["Parameter_34336_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34778", - "op" : "Parameter", - "outputs" : ["Parameter_34778_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35208", - "op" : "Parameter", - "outputs" : ["Parameter_35208_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34048", - "op" : "Parameter", - "outputs" : ["Parameter_34048_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34746", - "op" : "Parameter", - "outputs" : ["Parameter_34746_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34774", - "op" : "Parameter", - "outputs" : ["Parameter_34774_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35770", - "op" : "Parameter", - "outputs" : ["Parameter_35770_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34773", - "op" : "Parameter", - "outputs" : ["Parameter_34773_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35265", - "op" : "Parameter", - "outputs" : ["Parameter_35265_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34772", - "op" : "Parameter", - "outputs" : ["Parameter_34772_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34771", - "op" : "Parameter", - "outputs" : ["Parameter_34771_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34770", - "op" : "Parameter", - "outputs" : ["Parameter_34770_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33898", - "op" : "Parameter", - "outputs" : ["Parameter_33898_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34437", - "op" : "Parameter", - "outputs" : ["Parameter_34437_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34768", - "op" : "Parameter", - "outputs" : ["Parameter_34768_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34347", - "op" : "Parameter", - "outputs" : ["Parameter_34347_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34767", - "op" : "Parameter", - "outputs" : ["Parameter_34767_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34620", - "op" : "Parameter", - "outputs" : ["Parameter_34620_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34766", - "op" : "Parameter", - "outputs" : ["Parameter_34766_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34636", - "op" : "Parameter", - "outputs" : ["Parameter_34636_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35162", - "op" : "Parameter", - "outputs" : ["Parameter_35162_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35982", - "op" : "Parameter", - "outputs" : ["Parameter_35982_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34762", - "op" : "Parameter", - "outputs" : ["Parameter_34762_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34761", - "op" : "Parameter", - "outputs" : ["Parameter_34761_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34403", - "op" : "Parameter", - "outputs" : ["Parameter_34403_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34756", - "op" : "Parameter", - "outputs" : ["Parameter_34756_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34755", - "op" : "Parameter", - "outputs" : ["Parameter_34755_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34876", - "op" : "Parameter", - "outputs" : ["Parameter_34876_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34754", - "op" : "Parameter", - "outputs" : ["Parameter_34754_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34753", - "op" : "Parameter", - "outputs" : ["Parameter_34753_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35802", - "op" : "Parameter", - "outputs" : ["Parameter_35802_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35000", - "op" : "Parameter", - "outputs" : ["Parameter_35000_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34752", - "op" : "Parameter", - "outputs" : ["Parameter_34752_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34747", - "op" : "Parameter", - "outputs" : ["Parameter_34747_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34745", - "op" : "Parameter", - "outputs" : ["Parameter_34745_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34158", - "op" : "Parameter", - "outputs" : ["Parameter_34158_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34744", - "op" : "Parameter", - "outputs" : ["Parameter_34744_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34741", - "op" : "Parameter", - "outputs" : ["Parameter_34741_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34740", - "op" : "Parameter", - "outputs" : ["Parameter_34740_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34739", - "op" : "Parameter", - "outputs" : ["Parameter_34739_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34274", - "op" : "Parameter", - "outputs" : ["Parameter_34274_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34738", - "op" : "Parameter", - "outputs" : ["Parameter_34738_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34085", - "op" : "Parameter", - "outputs" : ["Parameter_34085_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34737", - "op" : "Parameter", - "outputs" : ["Parameter_34737_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34420", - "op" : "Parameter", - "outputs" : ["Parameter_34420_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34956", - "op" : "Parameter", - "outputs" : ["Parameter_34956_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34736", - "op" : "Parameter", - "outputs" : ["Parameter_34736_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34951", - "op" : "Parameter", - "outputs" : ["Parameter_34951_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35710", - "op" : "Parameter", - "outputs" : ["Parameter_35710_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34735", - "op" : "Parameter", - "outputs" : ["Parameter_34735_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34941", - "op" : "Parameter", - "outputs" : ["Parameter_34941_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34733", - "op" : "Parameter", - "outputs" : ["Parameter_34733_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34732", - "op" : "Parameter", - "outputs" : ["Parameter_34732_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34072", - "op" : "Parameter", - "outputs" : ["Parameter_34072_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35331", - "op" : "Parameter", - "outputs" : ["Parameter_35331_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35205", - "op" : "Parameter", - "outputs" : ["Parameter_35205_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34680", - "op" : "Parameter", - "outputs" : ["Parameter_34680_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35963", - "op" : "Parameter", - "outputs" : ["Parameter_35963_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34731", - "op" : "Parameter", - "outputs" : ["Parameter_34731_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34730", - "op" : "Parameter", - "outputs" : ["Parameter_34730_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34729", - "op" : "Parameter", - "outputs" : ["Parameter_34729_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34728", - "op" : "Parameter", - "outputs" : ["Parameter_34728_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34726", - "op" : "Parameter", - "outputs" : ["Parameter_34726_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35250", - "op" : "Parameter", - "outputs" : ["Parameter_35250_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35039", - "op" : "Parameter", - "outputs" : ["Parameter_35039_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35578", - "op" : "Parameter", - "outputs" : ["Parameter_35578_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34725", - "op" : "Parameter", - "outputs" : ["Parameter_34725_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34723", - "op" : "Parameter", - "outputs" : ["Parameter_34723_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34722", - "op" : "Parameter", - "outputs" : ["Parameter_34722_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34721", - "op" : "Parameter", - "outputs" : ["Parameter_34721_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34720", - "op" : "Parameter", - "outputs" : ["Parameter_34720_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34719", - "op" : "Parameter", - "outputs" : ["Parameter_34719_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34715", - "op" : "Parameter", - "outputs" : ["Parameter_34715_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34713", - "op" : "Parameter", - "outputs" : ["Parameter_34713_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35236", - "op" : "Parameter", - "outputs" : ["Parameter_35236_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34710", - "op" : "Parameter", - "outputs" : ["Parameter_34710_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34708", - "op" : "Parameter", - "outputs" : ["Parameter_34708_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34706", - "op" : "Parameter", - "outputs" : ["Parameter_34706_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35151", - "op" : "Parameter", - "outputs" : ["Parameter_35151_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36157", - "op" : "Parameter", - "outputs" : ["Parameter_36157_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34701", - "op" : "Parameter", - "outputs" : ["Parameter_34701_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34698", - "op" : "Parameter", - "outputs" : ["Parameter_34698_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34694", - "op" : "Parameter", - "outputs" : ["Parameter_34694_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34568", - "op" : "Parameter", - "outputs" : ["Parameter_34568_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35675", - "op" : "Parameter", - "outputs" : ["Parameter_35675_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35805", - "op" : "Parameter", - "outputs" : ["Parameter_35805_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36115", - "op" : "Parameter", - "outputs" : ["Parameter_36115_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34692", - "op" : "Parameter", - "outputs" : ["Parameter_34692_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35104", - "op" : "Parameter", - "outputs" : ["Parameter_35104_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34895", - "op" : "Parameter", - "outputs" : ["Parameter_34895_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33929", - "op" : "Parameter", - "outputs" : ["Parameter_33929_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35697", - "op" : "Parameter", - "outputs" : ["Parameter_35697_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34691", - "op" : "Parameter", - "outputs" : ["Parameter_34691_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34690", - "op" : "Parameter", - "outputs" : ["Parameter_34690_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34688", - "op" : "Parameter", - "outputs" : ["Parameter_34688_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35171", - "op" : "Parameter", - "outputs" : ["Parameter_35171_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35804", - "op" : "Parameter", - "outputs" : ["Parameter_35804_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35942", - "op" : "Parameter", - "outputs" : ["Parameter_35942_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34684", - "op" : "Parameter", - "outputs" : ["Parameter_34684_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34681", - "op" : "Parameter", - "outputs" : ["Parameter_34681_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34186", - "op" : "Parameter", - "outputs" : ["Parameter_34186_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35735", - "op" : "Parameter", - "outputs" : ["Parameter_35735_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34679", - "op" : "Parameter", - "outputs" : ["Parameter_34679_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33960", - "op" : "Parameter", - "outputs" : ["Parameter_33960_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35119", - "op" : "Parameter", - "outputs" : ["Parameter_35119_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34967", - "op" : "Parameter", - "outputs" : ["Parameter_34967_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34678", - "op" : "Parameter", - "outputs" : ["Parameter_34678_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35771", - "op" : "Parameter", - "outputs" : ["Parameter_35771_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34677", - "op" : "Parameter", - "outputs" : ["Parameter_34677_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34676", - "op" : "Parameter", - "outputs" : ["Parameter_34676_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35316", - "op" : "Parameter", - "outputs" : ["Parameter_35316_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34125", - "op" : "Parameter", - "outputs" : ["Parameter_34125_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34671", - "op" : "Parameter", - "outputs" : ["Parameter_34671_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35862", - "op" : "Parameter", - "outputs" : ["Parameter_35862_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34667", - "op" : "Parameter", - "outputs" : ["Parameter_34667_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35887", - "op" : "Parameter", - "outputs" : ["Parameter_35887_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34664", - "op" : "Parameter", - "outputs" : ["Parameter_34664_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35876", - "op" : "Parameter", - "outputs" : ["Parameter_35876_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35077", - "op" : "Parameter", - "outputs" : ["Parameter_35077_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35019", - "op" : "Parameter", - "outputs" : ["Parameter_35019_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34867", - "op" : "Parameter", - "outputs" : ["Parameter_34867_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34663", - "op" : "Parameter", - "outputs" : ["Parameter_34663_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34662", - "op" : "Parameter", - "outputs" : ["Parameter_34662_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34661", - "op" : "Parameter", - "outputs" : ["Parameter_34661_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34660", - "op" : "Parameter", - "outputs" : ["Parameter_34660_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34658", - "op" : "Parameter", - "outputs" : ["Parameter_34658_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35868", - "op" : "Parameter", - "outputs" : ["Parameter_35868_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34656", - "op" : "Parameter", - "outputs" : ["Parameter_34656_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34655", - "op" : "Parameter", - "outputs" : ["Parameter_34655_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34653", - "op" : "Parameter", - "outputs" : ["Parameter_34653_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34727", - "op" : "Parameter", - "outputs" : ["Parameter_34727_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34651", - "op" : "Parameter", - "outputs" : ["Parameter_34651_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36069", - "op" : "Parameter", - "outputs" : ["Parameter_36069_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34926", - "op" : "Parameter", - "outputs" : ["Parameter_34926_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35645", - "op" : "Parameter", - "outputs" : ["Parameter_35645_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34650", - "op" : "Parameter", - "outputs" : ["Parameter_34650_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34646", - "op" : "Parameter", - "outputs" : ["Parameter_34646_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34643", - "op" : "Parameter", - "outputs" : ["Parameter_34643_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34642", - "op" : "Parameter", - "outputs" : ["Parameter_34642_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34372", - "op" : "Parameter", - "outputs" : ["Parameter_34372_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34640", - "op" : "Parameter", - "outputs" : ["Parameter_34640_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34639", - "op" : "Parameter", - "outputs" : ["Parameter_34639_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34638", - "op" : "Parameter", - "outputs" : ["Parameter_34638_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34635", - "op" : "Parameter", - "outputs" : ["Parameter_34635_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34633", - "op" : "Parameter", - "outputs" : ["Parameter_34633_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35247", - "op" : "Parameter", - "outputs" : ["Parameter_35247_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34513", - "op" : "Parameter", - "outputs" : ["Parameter_34513_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35229", - "op" : "Parameter", - "outputs" : ["Parameter_35229_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36131", - "op" : "Parameter", - "outputs" : ["Parameter_36131_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34631", - "op" : "Parameter", - "outputs" : ["Parameter_34631_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34196", - "op" : "Parameter", - "outputs" : ["Parameter_34196_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35015", - "op" : "Parameter", - "outputs" : ["Parameter_35015_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34625", - "op" : "Parameter", - "outputs" : ["Parameter_34625_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34619", - "op" : "Parameter", - "outputs" : ["Parameter_34619_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34618", - "op" : "Parameter", - "outputs" : ["Parameter_34618_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34617", - "op" : "Parameter", - "outputs" : ["Parameter_34617_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34563", - "op" : "Parameter", - "outputs" : ["Parameter_34563_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34451", - "op" : "Parameter", - "outputs" : ["Parameter_34451_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35295", - "op" : "Parameter", - "outputs" : ["Parameter_35295_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33952", - "op" : "Parameter", - "outputs" : ["Parameter_33952_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35725", - "op" : "Parameter", - "outputs" : ["Parameter_35725_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34666", - "op" : "Parameter", - "outputs" : ["Parameter_34666_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35883", - "op" : "Parameter", - "outputs" : ["Parameter_35883_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36155", - "op" : "Parameter", - "outputs" : ["Parameter_36155_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34609", - "op" : "Parameter", - "outputs" : ["Parameter_34609_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34608", - "op" : "Parameter", - "outputs" : ["Parameter_34608_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34824", - "op" : "Parameter", - "outputs" : ["Parameter_34824_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34607", - "op" : "Parameter", - "outputs" : ["Parameter_34607_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33850", - "op" : "Parameter", - "outputs" : ["Parameter_33850_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35025", - "op" : "Parameter", - "outputs" : ["Parameter_35025_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34332", - "op" : "Parameter", - "outputs" : ["Parameter_34332_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34606", - "op" : "Parameter", - "outputs" : ["Parameter_34606_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34760", - "op" : "Parameter", - "outputs" : ["Parameter_34760_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34605", - "op" : "Parameter", - "outputs" : ["Parameter_34605_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34604", - "op" : "Parameter", - "outputs" : ["Parameter_34604_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34537", - "op" : "Parameter", - "outputs" : ["Parameter_34537_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36049", - "op" : "Parameter", - "outputs" : ["Parameter_36049_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35225", - "op" : "Parameter", - "outputs" : ["Parameter_35225_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35610", - "op" : "Parameter", - "outputs" : ["Parameter_35610_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34603", - "op" : "Parameter", - "outputs" : ["Parameter_34603_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34601", - "op" : "Parameter", - "outputs" : ["Parameter_34601_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35544", - "op" : "Parameter", - "outputs" : ["Parameter_35544_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34600", - "op" : "Parameter", - "outputs" : ["Parameter_34600_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34599", - "op" : "Parameter", - "outputs" : ["Parameter_34599_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34598", - "op" : "Parameter", - "outputs" : ["Parameter_34598_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35017", - "op" : "Parameter", - "outputs" : ["Parameter_35017_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35817", - "op" : "Parameter", - "outputs" : ["Parameter_35817_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34597", - "op" : "Parameter", - "outputs" : ["Parameter_34597_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35908", - "op" : "Parameter", - "outputs" : ["Parameter_35908_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35210", - "op" : "Parameter", - "outputs" : ["Parameter_35210_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34595", - "op" : "Parameter", - "outputs" : ["Parameter_34595_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34593", - "op" : "Parameter", - "outputs" : ["Parameter_34593_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34673", - "op" : "Parameter", - "outputs" : ["Parameter_34673_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34260", - "op" : "Parameter", - "outputs" : ["Parameter_34260_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35870", - "op" : "Parameter", - "outputs" : ["Parameter_35870_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36092", - "op" : "Parameter", - "outputs" : ["Parameter_36092_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34592", - "op" : "Parameter", - "outputs" : ["Parameter_34592_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34591", - "op" : "Parameter", - "outputs" : ["Parameter_34591_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34589", - "op" : "Parameter", - "outputs" : ["Parameter_34589_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33879", - "op" : "Parameter", - "outputs" : ["Parameter_33879_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34586", - "op" : "Parameter", - "outputs" : ["Parameter_34586_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34585", - "op" : "Parameter", - "outputs" : ["Parameter_34585_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36094", - "op" : "Parameter", - "outputs" : ["Parameter_36094_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34584", - "op" : "Parameter", - "outputs" : ["Parameter_34584_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35569", - "op" : "Parameter", - "outputs" : ["Parameter_35569_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35718", - "op" : "Parameter", - "outputs" : ["Parameter_35718_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35102", - "op" : "Parameter", - "outputs" : ["Parameter_35102_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34583", - "op" : "Parameter", - "outputs" : ["Parameter_34583_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35021", - "op" : "Parameter", - "outputs" : ["Parameter_35021_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35719", - "op" : "Parameter", - "outputs" : ["Parameter_35719_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34582", - "op" : "Parameter", - "outputs" : ["Parameter_34582_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33928", - "op" : "Parameter", - "outputs" : ["Parameter_33928_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34435", - "op" : "Parameter", - "outputs" : ["Parameter_34435_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35443", - "op" : "Parameter", - "outputs" : ["Parameter_35443_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34581", - "op" : "Parameter", - "outputs" : ["Parameter_34581_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35597", - "op" : "Parameter", - "outputs" : ["Parameter_35597_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36136", - "op" : "Parameter", - "outputs" : ["Parameter_36136_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34580", - "op" : "Parameter", - "outputs" : ["Parameter_34580_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34830", - "op" : "Parameter", - "outputs" : ["Parameter_34830_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34704", - "op" : "Parameter", - "outputs" : ["Parameter_34704_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34576", - "op" : "Parameter", - "outputs" : ["Parameter_34576_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34572", - "op" : "Parameter", - "outputs" : ["Parameter_34572_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34329", - "op" : "Parameter", - "outputs" : ["Parameter_34329_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34244", - "op" : "Parameter", - "outputs" : ["Parameter_34244_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34571", - "op" : "Parameter", - "outputs" : ["Parameter_34571_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34569", - "op" : "Parameter", - "outputs" : ["Parameter_34569_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35105", - "op" : "Parameter", - "outputs" : ["Parameter_35105_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34889", - "op" : "Parameter", - "outputs" : ["Parameter_34889_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34566", - "op" : "Parameter", - "outputs" : ["Parameter_34566_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34565", - "op" : "Parameter", - "outputs" : ["Parameter_34565_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34543", - "op" : "Parameter", - "outputs" : ["Parameter_34543_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35396", - "op" : "Parameter", - "outputs" : ["Parameter_35396_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34562", - "op" : "Parameter", - "outputs" : ["Parameter_34562_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34124", - "op" : "Parameter", - "outputs" : ["Parameter_34124_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34561", - "op" : "Parameter", - "outputs" : ["Parameter_34561_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35493", - "op" : "Parameter", - "outputs" : ["Parameter_35493_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34560", - "op" : "Parameter", - "outputs" : ["Parameter_34560_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34558", - "op" : "Parameter", - "outputs" : ["Parameter_34558_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35879", - "op" : "Parameter", - "outputs" : ["Parameter_35879_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34557", - "op" : "Parameter", - "outputs" : ["Parameter_34557_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34807", - "op" : "Parameter", - "outputs" : ["Parameter_34807_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36113", - "op" : "Parameter", - "outputs" : ["Parameter_36113_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34555", - "op" : "Parameter", - "outputs" : ["Parameter_34555_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35280", - "op" : "Parameter", - "outputs" : ["Parameter_35280_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34553", - "op" : "Parameter", - "outputs" : ["Parameter_34553_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35080", - "op" : "Parameter", - "outputs" : ["Parameter_35080_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34190", - "op" : "Parameter", - "outputs" : ["Parameter_34190_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35752", - "op" : "Parameter", - "outputs" : ["Parameter_35752_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34552", - "op" : "Parameter", - "outputs" : ["Parameter_34552_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34550", - "op" : "Parameter", - "outputs" : ["Parameter_34550_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35142", - "op" : "Parameter", - "outputs" : ["Parameter_35142_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35801", - "op" : "Parameter", - "outputs" : ["Parameter_35801_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35987", - "op" : "Parameter", - "outputs" : ["Parameter_35987_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34548", - "op" : "Parameter", - "outputs" : ["Parameter_34548_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34100", - "op" : "Parameter", - "outputs" : ["Parameter_34100_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34871", - "op" : "Parameter", - "outputs" : ["Parameter_34871_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36011", - "op" : "Parameter", - "outputs" : ["Parameter_36011_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34546", - "op" : "Parameter", - "outputs" : ["Parameter_34546_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34716", - "op" : "Parameter", - "outputs" : ["Parameter_34716_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34545", - "op" : "Parameter", - "outputs" : ["Parameter_34545_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35530", - "op" : "Parameter", - "outputs" : ["Parameter_35530_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34542", - "op" : "Parameter", - "outputs" : ["Parameter_34542_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35482", - "op" : "Parameter", - "outputs" : ["Parameter_35482_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35141", - "op" : "Parameter", - "outputs" : ["Parameter_35141_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33911", - "op" : "Parameter", - "outputs" : ["Parameter_33911_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35380", - "op" : "Parameter", - "outputs" : ["Parameter_35380_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34644", - "op" : "Parameter", - "outputs" : ["Parameter_34644_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34541", - "op" : "Parameter", - "outputs" : ["Parameter_34541_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34168", - "op" : "Parameter", - "outputs" : ["Parameter_34168_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34292", - "op" : "Parameter", - "outputs" : ["Parameter_34292_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34163", - "op" : "Parameter", - "outputs" : ["Parameter_34163_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34162", - "op" : "Parameter", - "outputs" : ["Parameter_34162_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34948", - "op" : "Parameter", - "outputs" : ["Parameter_34948_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34915", - "op" : "Parameter", - "outputs" : ["Parameter_34915_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34734", - "op" : "Parameter", - "outputs" : ["Parameter_34734_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33940", - "op" : "Parameter", - "outputs" : ["Parameter_33940_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34067", - "op" : "Parameter", - "outputs" : ["Parameter_34067_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34161", - "op" : "Parameter", - "outputs" : ["Parameter_34161_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36090", - "op" : "Parameter", - "outputs" : ["Parameter_36090_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34159", - "op" : "Parameter", - "outputs" : ["Parameter_34159_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34777", - "op" : "Parameter", - "outputs" : ["Parameter_34777_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34119", - "op" : "Parameter", - "outputs" : ["Parameter_34119_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34144", - "op" : "Parameter", - "outputs" : ["Parameter_34144_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35774", - "op" : "Parameter", - "outputs" : ["Parameter_35774_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34453", - "op" : "Parameter", - "outputs" : ["Parameter_34453_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34122", - "op" : "Parameter", - "outputs" : ["Parameter_34122_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35885", - "op" : "Parameter", - "outputs" : ["Parameter_35885_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34156", - "op" : "Parameter", - "outputs" : ["Parameter_34156_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34209", - "op" : "Parameter", - "outputs" : ["Parameter_34209_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34027", - "op" : "Parameter", - "outputs" : ["Parameter_34027_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34141", - "op" : "Parameter", - "outputs" : ["Parameter_34141_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34309", - "op" : "Parameter", - "outputs" : ["Parameter_34309_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34157", - "op" : "Parameter", - "outputs" : ["Parameter_34157_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33855", - "op" : "Parameter", - "outputs" : ["Parameter_33855_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34277", - "op" : "Parameter", - "outputs" : ["Parameter_34277_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34457", - "op" : "Parameter", - "outputs" : ["Parameter_34457_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35260", - "op" : "Parameter", - "outputs" : ["Parameter_35260_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34305", - "op" : "Parameter", - "outputs" : ["Parameter_34305_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35913", - "op" : "Parameter", - "outputs" : ["Parameter_35913_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35966", - "op" : "Parameter", - "outputs" : ["Parameter_35966_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34126", - "op" : "Parameter", - "outputs" : ["Parameter_34126_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34052", - "op" : "Parameter", - "outputs" : ["Parameter_34052_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34981", - "op" : "Parameter", - "outputs" : ["Parameter_34981_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33860", - "op" : "Parameter", - "outputs" : ["Parameter_33860_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34624", - "op" : "Parameter", - "outputs" : ["Parameter_34624_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33864", - "op" : "Parameter", - "outputs" : ["Parameter_33864_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34123", - "op" : "Parameter", - "outputs" : ["Parameter_34123_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34476", - "op" : "Parameter", - "outputs" : ["Parameter_34476_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34101", - "op" : "Parameter", - "outputs" : ["Parameter_34101_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33946", - "op" : "Parameter", - "outputs" : ["Parameter_33946_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34132", - "op" : "Parameter", - "outputs" : ["Parameter_34132_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34253", - "op" : "Parameter", - "outputs" : ["Parameter_34253_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35075", - "op" : "Parameter", - "outputs" : ["Parameter_35075_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34685", - "op" : "Parameter", - "outputs" : ["Parameter_34685_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34205", - "op" : "Parameter", - "outputs" : ["Parameter_34205_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34659", - "op" : "Parameter", - "outputs" : ["Parameter_34659_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34136", - "op" : "Parameter", - "outputs" : ["Parameter_34136_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36182", - "op" : "Parameter", - "outputs" : ["Parameter_36182_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34974", - "op" : "Parameter", - "outputs" : ["Parameter_34974_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34140", - "op" : "Parameter", - "outputs" : ["Parameter_34140_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34978", - "op" : "Parameter", - "outputs" : ["Parameter_34978_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34116", - "op" : "Parameter", - "outputs" : ["Parameter_34116_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34317", - "op" : "Parameter", - "outputs" : ["Parameter_34317_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34115", - "op" : "Parameter", - "outputs" : ["Parameter_34115_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34114", - "op" : "Parameter", - "outputs" : ["Parameter_34114_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34818", - "op" : "Parameter", - "outputs" : ["Parameter_34818_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34107", - "op" : "Parameter", - "outputs" : ["Parameter_34107_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34108", - "op" : "Parameter", - "outputs" : ["Parameter_34108_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34351", - "op" : "Parameter", - "outputs" : ["Parameter_34351_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35651", - "op" : "Parameter", - "outputs" : ["Parameter_35651_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34938", - "op" : "Parameter", - "outputs" : ["Parameter_34938_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34106", - "op" : "Parameter", - "outputs" : ["Parameter_34106_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34105", - "op" : "Parameter", - "outputs" : ["Parameter_34105_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33846", - "op" : "Parameter", - "outputs" : ["Parameter_33846_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34953", - "op" : "Parameter", - "outputs" : ["Parameter_34953_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34286", - "op" : "Parameter", - "outputs" : ["Parameter_34286_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36146", - "op" : "Parameter", - "outputs" : ["Parameter_36146_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34319", - "op" : "Parameter", - "outputs" : ["Parameter_34319_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34276", - "op" : "Parameter", - "outputs" : ["Parameter_34276_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34133", - "op" : "Parameter", - "outputs" : ["Parameter_34133_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35310", - "op" : "Parameter", - "outputs" : ["Parameter_35310_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34775", - "op" : "Parameter", - "outputs" : ["Parameter_34775_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34099", - "op" : "Parameter", - "outputs" : ["Parameter_34099_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34098", - "op" : "Parameter", - "outputs" : ["Parameter_34098_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34153", - "op" : "Parameter", - "outputs" : ["Parameter_34153_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35684", - "op" : "Parameter", - "outputs" : ["Parameter_35684_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34579", - "op" : "Parameter", - "outputs" : ["Parameter_34579_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34424", - "op" : "Parameter", - "outputs" : ["Parameter_34424_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34060", - "op" : "Parameter", - "outputs" : ["Parameter_34060_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34693", - "op" : "Parameter", - "outputs" : ["Parameter_34693_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35823", - "op" : "Parameter", - "outputs" : ["Parameter_35823_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34096", - "op" : "Parameter", - "outputs" : ["Parameter_34096_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35557", - "op" : "Parameter", - "outputs" : ["Parameter_35557_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34093", - "op" : "Parameter", - "outputs" : ["Parameter_34093_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34087", - "op" : "Parameter", - "outputs" : ["Parameter_34087_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33968", - "op" : "Parameter", - "outputs" : ["Parameter_33968_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33932", - "op" : "Parameter", - "outputs" : ["Parameter_33932_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34384", - "op" : "Parameter", - "outputs" : ["Parameter_34384_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34089", - "op" : "Parameter", - "outputs" : ["Parameter_34089_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35962", - "op" : "Parameter", - "outputs" : ["Parameter_35962_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34812", - "op" : "Parameter", - "outputs" : ["Parameter_34812_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34230", - "op" : "Parameter", - "outputs" : ["Parameter_34230_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35083", - "op" : "Parameter", - "outputs" : ["Parameter_35083_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34612", - "op" : "Parameter", - "outputs" : ["Parameter_34612_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34088", - "op" : "Parameter", - "outputs" : ["Parameter_34088_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35663", - "op" : "Parameter", - "outputs" : ["Parameter_35663_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34001", - "op" : "Parameter", - "outputs" : ["Parameter_34001_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35035", - "op" : "Parameter", - "outputs" : ["Parameter_35035_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34702", - "op" : "Parameter", - "outputs" : ["Parameter_34702_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34478", - "op" : "Parameter", - "outputs" : ["Parameter_34478_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34869", - "op" : "Parameter", - "outputs" : ["Parameter_34869_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33999", - "op" : "Parameter", - "outputs" : ["Parameter_33999_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34084", - "op" : "Parameter", - "outputs" : ["Parameter_34084_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34575", - "op" : "Parameter", - "outputs" : ["Parameter_34575_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34092", - "op" : "Parameter", - "outputs" : ["Parameter_34092_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34081", - "op" : "Parameter", - "outputs" : ["Parameter_34081_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34387", - "op" : "Parameter", - "outputs" : ["Parameter_34387_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35196", - "op" : "Parameter", - "outputs" : ["Parameter_35196_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34314", - "op" : "Parameter", - "outputs" : ["Parameter_34314_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35989", - "op" : "Parameter", - "outputs" : ["Parameter_35989_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34786", - "op" : "Parameter", - "outputs" : ["Parameter_34786_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34079", - "op" : "Parameter", - "outputs" : ["Parameter_34079_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35219", - "op" : "Parameter", - "outputs" : ["Parameter_35219_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34221", - "op" : "Parameter", - "outputs" : ["Parameter_34221_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35594", - "op" : "Parameter", - "outputs" : ["Parameter_35594_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34076", - "op" : "Parameter", - "outputs" : ["Parameter_34076_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34602", - "op" : "Parameter", - "outputs" : ["Parameter_34602_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34709", - "op" : "Parameter", - "outputs" : ["Parameter_34709_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34628", - "op" : "Parameter", - "outputs" : ["Parameter_34628_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34074", - "op" : "Parameter", - "outputs" : ["Parameter_34074_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34477", - "op" : "Parameter", - "outputs" : ["Parameter_34477_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35084", - "op" : "Parameter", - "outputs" : ["Parameter_35084_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34865", - "op" : "Parameter", - "outputs" : ["Parameter_34865_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35758", - "op" : "Parameter", - "outputs" : ["Parameter_35758_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34847", - "op" : "Parameter", - "outputs" : ["Parameter_34847_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34045", - "op" : "Parameter", - "outputs" : ["Parameter_34045_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34065", - "op" : "Parameter", - "outputs" : ["Parameter_34065_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34012", - "op" : "Parameter", - "outputs" : ["Parameter_34012_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34063", - "op" : "Parameter", - "outputs" : ["Parameter_34063_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34997", - "op" : "Parameter", - "outputs" : ["Parameter_34997_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34845", - "op" : "Parameter", - "outputs" : ["Parameter_34845_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34184", - "op" : "Parameter", - "outputs" : ["Parameter_34184_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34024", - "op" : "Parameter", - "outputs" : ["Parameter_34024_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33985", - "op" : "Parameter", - "outputs" : ["Parameter_33985_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35584", - "op" : "Parameter", - "outputs" : ["Parameter_35584_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34278", - "op" : "Parameter", - "outputs" : ["Parameter_34278_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34069", - "op" : "Parameter", - "outputs" : ["Parameter_34069_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34061", - "op" : "Parameter", - "outputs" : ["Parameter_34061_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35409", - "op" : "Parameter", - "outputs" : ["Parameter_35409_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34383", - "op" : "Parameter", - "outputs" : ["Parameter_34383_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34146", - "op" : "Parameter", - "outputs" : ["Parameter_34146_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34307", - "op" : "Parameter", - "outputs" : ["Parameter_34307_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34104", - "op" : "Parameter", - "outputs" : ["Parameter_34104_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33867", - "op" : "Parameter", - "outputs" : ["Parameter_33867_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34668", - "op" : "Parameter", - "outputs" : ["Parameter_34668_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34053", - "op" : "Parameter", - "outputs" : ["Parameter_34053_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34610", - "op" : "Parameter", - "outputs" : ["Parameter_34610_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34046", - "op" : "Parameter", - "outputs" : ["Parameter_34046_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34118", - "op" : "Parameter", - "outputs" : ["Parameter_34118_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34370", - "op" : "Parameter", - "outputs" : ["Parameter_34370_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35624", - "op" : "Parameter", - "outputs" : ["Parameter_35624_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34835", - "op" : "Parameter", - "outputs" : ["Parameter_34835_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34300", - "op" : "Parameter", - "outputs" : ["Parameter_34300_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34782", - "op" : "Parameter", - "outputs" : ["Parameter_34782_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34042", - "op" : "Parameter", - "outputs" : ["Parameter_34042_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34559", - "op" : "Parameter", - "outputs" : ["Parameter_34559_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34201", - "op" : "Parameter", - "outputs" : ["Parameter_34201_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33971", - "op" : "Parameter", - "outputs" : ["Parameter_33971_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36003", - "op" : "Parameter", - "outputs" : ["Parameter_36003_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36026", - "op" : "Parameter", - "outputs" : ["Parameter_36026_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35202", - "op" : "Parameter", - "outputs" : ["Parameter_35202_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35309", - "op" : "Parameter", - "outputs" : ["Parameter_35309_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35116", - "op" : "Parameter", - "outputs" : ["Parameter_35116_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34913", - "op" : "Parameter", - "outputs" : ["Parameter_34913_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34472", - "op" : "Parameter", - "outputs" : ["Parameter_34472_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34037", - "op" : "Parameter", - "outputs" : ["Parameter_34037_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34841", - "op" : "Parameter", - "outputs" : ["Parameter_34841_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35306", - "op" : "Parameter", - "outputs" : ["Parameter_35306_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35918", - "op" : "Parameter", - "outputs" : ["Parameter_35918_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35986", - "op" : "Parameter", - "outputs" : ["Parameter_35986_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34035", - "op" : "Parameter", - "outputs" : ["Parameter_34035_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34039", - "op" : "Parameter", - "outputs" : ["Parameter_34039_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34034", - "op" : "Parameter", - "outputs" : ["Parameter_34034_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34031", - "op" : "Parameter", - "outputs" : ["Parameter_34031_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34138", - "op" : "Parameter", - "outputs" : ["Parameter_34138_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34594", - "op" : "Parameter", - "outputs" : ["Parameter_34594_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33857", - "op" : "Parameter", - "outputs" : ["Parameter_33857_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34203", - "op" : "Parameter", - "outputs" : ["Parameter_34203_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34665", - "op" : "Parameter", - "outputs" : ["Parameter_34665_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35843", - "op" : "Parameter", - "outputs" : ["Parameter_35843_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35869", - "op" : "Parameter", - "outputs" : ["Parameter_35869_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33954", - "op" : "Parameter", - "outputs" : ["Parameter_33954_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35315", - "op" : "Parameter", - "outputs" : ["Parameter_35315_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35459", - "op" : "Parameter", - "outputs" : ["Parameter_35459_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35746", - "op" : "Parameter", - "outputs" : ["Parameter_35746_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34026", - "op" : "Parameter", - "outputs" : ["Parameter_34026_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36117", - "op" : "Parameter", - "outputs" : ["Parameter_36117_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35240", - "op" : "Parameter", - "outputs" : ["Parameter_35240_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35230", - "op" : "Parameter", - "outputs" : ["Parameter_35230_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34492", - "op" : "Parameter", - "outputs" : ["Parameter_34492_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35056", - "op" : "Parameter", - "outputs" : ["Parameter_35056_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34025", - "op" : "Parameter", - "outputs" : ["Parameter_34025_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34022", - "op" : "Parameter", - "outputs" : ["Parameter_34022_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35272", - "op" : "Parameter", - "outputs" : ["Parameter_35272_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34695", - "op" : "Parameter", - "outputs" : ["Parameter_34695_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34040", - "op" : "Parameter", - "outputs" : ["Parameter_34040_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34062", - "op" : "Parameter", - "outputs" : ["Parameter_34062_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34345", - "op" : "Parameter", - "outputs" : ["Parameter_34345_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34020", - "op" : "Parameter", - "outputs" : ["Parameter_34020_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34829", - "op" : "Parameter", - "outputs" : ["Parameter_34829_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35706", - "op" : "Parameter", - "outputs" : ["Parameter_35706_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34014", - "op" : "Parameter", - "outputs" : ["Parameter_34014_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34109", - "op" : "Parameter", - "outputs" : ["Parameter_34109_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33926", - "op" : "Parameter", - "outputs" : ["Parameter_33926_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34750", - "op" : "Parameter", - "outputs" : ["Parameter_34750_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34117", - "op" : "Parameter", - "outputs" : ["Parameter_34117_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34009", - "op" : "Parameter", - "outputs" : ["Parameter_34009_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34177", - "op" : "Parameter", - "outputs" : ["Parameter_34177_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35282", - "op" : "Parameter", - "outputs" : ["Parameter_35282_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34248", - "op" : "Parameter", - "outputs" : ["Parameter_34248_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34796", - "op" : "Parameter", - "outputs" : ["Parameter_34796_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35673", - "op" : "Parameter", - "outputs" : ["Parameter_35673_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34003", - "op" : "Parameter", - "outputs" : ["Parameter_34003_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33910", - "op" : "Parameter", - "outputs" : ["Parameter_33910_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33881", - "op" : "Parameter", - "outputs" : ["Parameter_33881_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34397", - "op" : "Parameter", - "outputs" : ["Parameter_34397_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34765", - "op" : "Parameter", - "outputs" : ["Parameter_34765_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34120", - "op" : "Parameter", - "outputs" : ["Parameter_34120_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35351", - "op" : "Parameter", - "outputs" : ["Parameter_35351_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35922", - "op" : "Parameter", - "outputs" : ["Parameter_35922_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34007", - "op" : "Parameter", - "outputs" : ["Parameter_34007_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34134", - "op" : "Parameter", - "outputs" : ["Parameter_34134_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33905", - "op" : "Parameter", - "outputs" : ["Parameter_33905_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33913", - "op" : "Parameter", - "outputs" : ["Parameter_33913_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35069", - "op" : "Parameter", - "outputs" : ["Parameter_35069_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34443", - "op" : "Parameter", - "outputs" : ["Parameter_34443_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35027", - "op" : "Parameter", - "outputs" : ["Parameter_35027_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33891", - "op" : "Parameter", - "outputs" : ["Parameter_33891_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34516", - "op" : "Parameter", - "outputs" : ["Parameter_34516_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34933", - "op" : "Parameter", - "outputs" : ["Parameter_34933_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33904", - "op" : "Parameter", - "outputs" : ["Parameter_33904_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35726", - "op" : "Parameter", - "outputs" : ["Parameter_35726_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35152", - "op" : "Parameter", - "outputs" : ["Parameter_35152_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34057", - "op" : "Parameter", - "outputs" : ["Parameter_34057_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35519", - "op" : "Parameter", - "outputs" : ["Parameter_35519_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33894", - "op" : "Parameter", - "outputs" : ["Parameter_33894_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34615", - "op" : "Parameter", - "outputs" : ["Parameter_34615_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35190", - "op" : "Parameter", - "outputs" : ["Parameter_35190_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33838", - "op" : "Parameter", - "outputs" : ["Parameter_33838_0"], - "shape" : [ 60, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34321", - "op" : "Parameter", - "outputs" : ["Parameter_34321_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35448", - "op" : "Parameter", - "outputs" : ["Parameter_35448_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34831", - "op" : "Parameter", - "outputs" : ["Parameter_34831_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34556", - "op" : "Parameter", - "outputs" : ["Parameter_34556_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35834", - "op" : "Parameter", - "outputs" : ["Parameter_35834_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34202", - "op" : "Parameter", - "outputs" : ["Parameter_34202_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34590", - "op" : "Parameter", - "outputs" : ["Parameter_34590_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33858", - "op" : "Parameter", - "outputs" : ["Parameter_33858_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35168", - "op" : "Parameter", - "outputs" : ["Parameter_35168_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33895", - "op" : "Parameter", - "outputs" : ["Parameter_33895_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36174", - "op" : "Parameter", - "outputs" : ["Parameter_36174_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34154", - "op" : "Parameter", - "outputs" : ["Parameter_34154_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35990", - "op" : "Parameter", - "outputs" : ["Parameter_35990_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35278", - "op" : "Parameter", - "outputs" : ["Parameter_35278_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34222", - "op" : "Parameter", - "outputs" : ["Parameter_34222_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35136", - "op" : "Parameter", - "outputs" : ["Parameter_35136_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36086", - "op" : "Parameter", - "outputs" : ["Parameter_36086_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33887", - "op" : "Parameter", - "outputs" : ["Parameter_33887_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33844", - "op" : "Parameter", - "outputs" : ["Parameter_33844_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34433", - "op" : "Parameter", - "outputs" : ["Parameter_34433_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35071", - "op" : "Parameter", - "outputs" : ["Parameter_35071_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34826", - "op" : "Parameter", - "outputs" : ["Parameter_34826_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35687", - "op" : "Parameter", - "outputs" : ["Parameter_35687_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34080", - "op" : "Parameter", - "outputs" : ["Parameter_34080_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33869", - "op" : "Parameter", - "outputs" : ["Parameter_33869_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34368", - "op" : "Parameter", - "outputs" : ["Parameter_34368_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34166", - "op" : "Parameter", - "outputs" : ["Parameter_34166_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33897", - "op" : "Parameter", - "outputs" : ["Parameter_33897_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34390", - "op" : "Parameter", - "outputs" : ["Parameter_34390_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35249", - "op" : "Parameter", - "outputs" : ["Parameter_35249_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36020", - "op" : "Parameter", - "outputs" : ["Parameter_36020_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34019", - "op" : "Parameter", - "outputs" : ["Parameter_34019_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34990", - "op" : "Parameter", - "outputs" : ["Parameter_34990_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34326", - "op" : "Parameter", - "outputs" : ["Parameter_34326_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34175", - "op" : "Parameter", - "outputs" : ["Parameter_34175_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34218", - "op" : "Parameter", - "outputs" : ["Parameter_34218_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34487", - "op" : "Parameter", - "outputs" : ["Parameter_34487_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35178", - "op" : "Parameter", - "outputs" : ["Parameter_35178_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33886", - "op" : "Parameter", - "outputs" : ["Parameter_33886_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34855", - "op" : "Parameter", - "outputs" : ["Parameter_34855_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33852", - "op" : "Parameter", - "outputs" : ["Parameter_33852_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33877", - "op" : "Parameter", - "outputs" : ["Parameter_33877_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34805", - "op" : "Parameter", - "outputs" : ["Parameter_34805_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34891", - "op" : "Parameter", - "outputs" : ["Parameter_34891_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34412", - "op" : "Parameter", - "outputs" : ["Parameter_34412_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34940", - "op" : "Parameter", - "outputs" : ["Parameter_34940_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34103", - "op" : "Parameter", - "outputs" : ["Parameter_34103_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35405", - "op" : "Parameter", - "outputs" : ["Parameter_35405_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34251", - "op" : "Parameter", - "outputs" : ["Parameter_34251_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35761", - "op" : "Parameter", - "outputs" : ["Parameter_35761_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33876", - "op" : "Parameter", - "outputs" : ["Parameter_33876_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34207", - "op" : "Parameter", - "outputs" : ["Parameter_34207_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36091", - "op" : "Parameter", - "outputs" : ["Parameter_36091_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34788", - "op" : "Parameter", - "outputs" : ["Parameter_34788_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33967", - "op" : "Parameter", - "outputs" : ["Parameter_33967_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34322", - "op" : "Parameter", - "outputs" : ["Parameter_34322_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34434", - "op" : "Parameter", - "outputs" : ["Parameter_34434_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35290", - "op" : "Parameter", - "outputs" : ["Parameter_35290_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33937", - "op" : "Parameter", - "outputs" : ["Parameter_33937_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35662", - "op" : "Parameter", - "outputs" : ["Parameter_35662_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34334", - "op" : "Parameter", - "outputs" : ["Parameter_34334_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34657", - "op" : "Parameter", - "outputs" : ["Parameter_34657_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35898", - "op" : "Parameter", - "outputs" : ["Parameter_35898_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34023", - "op" : "Parameter", - "outputs" : ["Parameter_34023_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33933", - "op" : "Parameter", - "outputs" : ["Parameter_33933_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35097", - "op" : "Parameter", - "outputs" : ["Parameter_35097_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34648", - "op" : "Parameter", - "outputs" : ["Parameter_34648_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34483", - "op" : "Parameter", - "outputs" : ["Parameter_34483_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33920", - "op" : "Parameter", - "outputs" : ["Parameter_33920_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35527", - "op" : "Parameter", - "outputs" : ["Parameter_35527_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33902", - "op" : "Parameter", - "outputs" : ["Parameter_33902_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34616", - "op" : "Parameter", - "outputs" : ["Parameter_34616_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34113", - "op" : "Parameter", - "outputs" : ["Parameter_34113_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35959", - "op" : "Parameter", - "outputs" : ["Parameter_35959_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34436", - "op" : "Parameter", - "outputs" : ["Parameter_34436_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34425", - "op" : "Parameter", - "outputs" : ["Parameter_34425_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33880", - "op" : "Parameter", - "outputs" : ["Parameter_33880_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33908", - "op" : "Parameter", - "outputs" : ["Parameter_33908_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34291", - "op" : "Parameter", - "outputs" : ["Parameter_34291_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35878", - "op" : "Parameter", - "outputs" : ["Parameter_35878_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35988", - "op" : "Parameter", - "outputs" : ["Parameter_35988_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34142", - "op" : "Parameter", - "outputs" : ["Parameter_34142_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36066", - "op" : "Parameter", - "outputs" : ["Parameter_36066_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33870", - "op" : "Parameter", - "outputs" : ["Parameter_33870_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35890", - "op" : "Parameter", - "outputs" : ["Parameter_35890_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34263", - "op" : "Parameter", - "outputs" : ["Parameter_34263_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33930", - "op" : "Parameter", - "outputs" : ["Parameter_33930_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34402", - "op" : "Parameter", - "outputs" : ["Parameter_34402_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34071", - "op" : "Parameter", - "outputs" : ["Parameter_34071_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34670", - "op" : "Parameter", - "outputs" : ["Parameter_34670_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34574", - "op" : "Parameter", - "outputs" : ["Parameter_34574_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34051", - "op" : "Parameter", - "outputs" : ["Parameter_34051_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34006", - "op" : "Parameter", - "outputs" : ["Parameter_34006_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34262", - "op" : "Parameter", - "outputs" : ["Parameter_34262_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35220", - "op" : "Parameter", - "outputs" : ["Parameter_35220_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35717", - "op" : "Parameter", - "outputs" : ["Parameter_35717_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34303", - "op" : "Parameter", - "outputs" : ["Parameter_34303_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35649", - "op" : "Parameter", - "outputs" : ["Parameter_35649_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33947", - "op" : "Parameter", - "outputs" : ["Parameter_33947_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34075", - "op" : "Parameter", - "outputs" : ["Parameter_34075_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34000", - "op" : "Parameter", - "outputs" : ["Parameter_34000_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33912", - "op" : "Parameter", - "outputs" : ["Parameter_33912_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35347", - "op" : "Parameter", - "outputs" : ["Parameter_35347_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35542", - "op" : "Parameter", - "outputs" : ["Parameter_35542_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36035", - "op" : "Parameter", - "outputs" : ["Parameter_36035_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34526", - "op" : "Parameter", - "outputs" : ["Parameter_34526_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33961", - "op" : "Parameter", - "outputs" : ["Parameter_33961_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35907", - "op" : "Parameter", - "outputs" : ["Parameter_35907_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34789", - "op" : "Parameter", - "outputs" : ["Parameter_34789_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34043", - "op" : "Parameter", - "outputs" : ["Parameter_34043_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34700", - "op" : "Parameter", - "outputs" : ["Parameter_34700_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34463", - "op" : "Parameter", - "outputs" : ["Parameter_34463_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34147", - "op" : "Parameter", - "outputs" : ["Parameter_34147_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34381", - "op" : "Parameter", - "outputs" : ["Parameter_34381_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34696", - "op" : "Parameter", - "outputs" : ["Parameter_34696_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34296", - "op" : "Parameter", - "outputs" : ["Parameter_34296_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34174", - "op" : "Parameter", - "outputs" : ["Parameter_34174_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34219", - "op" : "Parameter", - "outputs" : ["Parameter_34219_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34257", - "op" : "Parameter", - "outputs" : ["Parameter_34257_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33993", - "op" : "Parameter", - "outputs" : ["Parameter_33993_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34102", - "op" : "Parameter", - "outputs" : ["Parameter_34102_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34509", - "op" : "Parameter", - "outputs" : ["Parameter_34509_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33893", - "op" : "Parameter", - "outputs" : ["Parameter_33893_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34047", - "op" : "Parameter", - "outputs" : ["Parameter_34047_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34151", - "op" : "Parameter", - "outputs" : ["Parameter_34151_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34672", - "op" : "Parameter", - "outputs" : ["Parameter_34672_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35861", - "op" : "Parameter", - "outputs" : ["Parameter_35861_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34155", - "op" : "Parameter", - "outputs" : ["Parameter_34155_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33914", - "op" : "Parameter", - "outputs" : ["Parameter_33914_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33896", - "op" : "Parameter", - "outputs" : ["Parameter_33896_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34669", - "op" : "Parameter", - "outputs" : ["Parameter_34669_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33916", - "op" : "Parameter", - "outputs" : ["Parameter_33916_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33878", - "op" : "Parameter", - "outputs" : ["Parameter_33878_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33874", - "op" : "Parameter", - "outputs" : ["Parameter_33874_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34872", - "op" : "Parameter", - "outputs" : ["Parameter_34872_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34030", - "op" : "Parameter", - "outputs" : ["Parameter_34030_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34851", - "op" : "Parameter", - "outputs" : ["Parameter_34851_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33962", - "op" : "Parameter", - "outputs" : ["Parameter_33962_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35203", - "op" : "Parameter", - "outputs" : ["Parameter_35203_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34452", - "op" : "Parameter", - "outputs" : ["Parameter_34452_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33833", - "op" : "Parameter", - "outputs" : ["Parameter_33833_0"], - "shape" : [ 60, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34979", - "op" : "Parameter", - "outputs" : ["Parameter_34979_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34289", - "op" : "Parameter", - "outputs" : ["Parameter_34289_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33837", - "op" : "Parameter", - "outputs" : ["Parameter_33837_0"], - "shape" : [ 1024, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35209", - "op" : "Parameter", - "outputs" : ["Parameter_35209_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34547", - "op" : "Parameter", - "outputs" : ["Parameter_34547_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35180", - "op" : "Parameter", - "outputs" : ["Parameter_35180_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34578", - "op" : "Parameter", - "outputs" : ["Parameter_34578_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35098", - "op" : "Parameter", - "outputs" : ["Parameter_35098_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33866", - "op" : "Parameter", - "outputs" : ["Parameter_33866_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34346", - "op" : "Parameter", - "outputs" : ["Parameter_34346_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34018", - "op" : "Parameter", - "outputs" : ["Parameter_34018_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35920", - "op" : "Parameter", - "outputs" : ["Parameter_35920_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35274", - "op" : "Parameter", - "outputs" : ["Parameter_35274_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35444", - "op" : "Parameter", - "outputs" : ["Parameter_35444_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34444", - "op" : "Parameter", - "outputs" : ["Parameter_34444_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33851", - "op" : "Parameter", - "outputs" : ["Parameter_33851_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35308", - "op" : "Parameter", - "outputs" : ["Parameter_35308_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34338", - "op" : "Parameter", - "outputs" : ["Parameter_34338_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34245", - "op" : "Parameter", - "outputs" : ["Parameter_34245_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34505", - "op" : "Parameter", - "outputs" : ["Parameter_34505_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33899", - "op" : "Parameter", - "outputs" : ["Parameter_33899_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34573", - "op" : "Parameter", - "outputs" : ["Parameter_34573_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33978", - "op" : "Parameter", - "outputs" : ["Parameter_33978_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35143", - "op" : "Parameter", - "outputs" : ["Parameter_35143_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34215", - "op" : "Parameter", - "outputs" : ["Parameter_34215_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33923", - "op" : "Parameter", - "outputs" : ["Parameter_33923_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35835", - "op" : "Parameter", - "outputs" : ["Parameter_35835_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34029", - "op" : "Parameter", - "outputs" : ["Parameter_34029_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33927", - "op" : "Parameter", - "outputs" : ["Parameter_33927_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34596", - "op" : "Parameter", - "outputs" : ["Parameter_34596_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33915", - "op" : "Parameter", - "outputs" : ["Parameter_33915_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34527", - "op" : "Parameter", - "outputs" : ["Parameter_34527_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35192", - "op" : "Parameter", - "outputs" : ["Parameter_35192_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35895", - "op" : "Parameter", - "outputs" : ["Parameter_35895_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35065", - "op" : "Parameter", - "outputs" : ["Parameter_35065_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33979", - "op" : "Parameter", - "outputs" : ["Parameter_33979_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33868", - "op" : "Parameter", - "outputs" : ["Parameter_33868_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34874", - "op" : "Parameter", - "outputs" : ["Parameter_34874_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33900", - "op" : "Parameter", - "outputs" : ["Parameter_33900_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33997", - "op" : "Parameter", - "outputs" : ["Parameter_33997_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34121", - "op" : "Parameter", - "outputs" : ["Parameter_34121_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34417", - "op" : "Parameter", - "outputs" : ["Parameter_34417_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34491", - "op" : "Parameter", - "outputs" : ["Parameter_34491_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36166", - "op" : "Parameter", - "outputs" : ["Parameter_36166_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33856", - "op" : "Parameter", - "outputs" : ["Parameter_33856_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34152", - "op" : "Parameter", - "outputs" : ["Parameter_34152_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34718", - "op" : "Parameter", - "outputs" : ["Parameter_34718_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35937", - "op" : "Parameter", - "outputs" : ["Parameter_35937_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34282", - "op" : "Parameter", - "outputs" : ["Parameter_34282_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33943", - "op" : "Parameter", - "outputs" : ["Parameter_33943_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34223", - "op" : "Parameter", - "outputs" : ["Parameter_34223_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35400", - "op" : "Parameter", - "outputs" : ["Parameter_35400_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34776", - "op" : "Parameter", - "outputs" : ["Parameter_34776_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34987", - "op" : "Parameter", - "outputs" : ["Parameter_34987_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34055", - "op" : "Parameter", - "outputs" : ["Parameter_34055_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34500", - "op" : "Parameter", - "outputs" : ["Parameter_34500_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33854", - "op" : "Parameter", - "outputs" : ["Parameter_33854_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34090", - "op" : "Parameter", - "outputs" : ["Parameter_34090_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34054", - "op" : "Parameter", - "outputs" : ["Parameter_34054_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34128", - "op" : "Parameter", - "outputs" : ["Parameter_34128_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34036", - "op" : "Parameter", - "outputs" : ["Parameter_34036_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34082", - "op" : "Parameter", - "outputs" : ["Parameter_34082_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33984", - "op" : "Parameter", - "outputs" : ["Parameter_33984_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34111", - "op" : "Parameter", - "outputs" : ["Parameter_34111_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34272", - "op" : "Parameter", - "outputs" : ["Parameter_34272_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34401", - "op" : "Parameter", - "outputs" : ["Parameter_34401_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33885", - "op" : "Parameter", - "outputs" : ["Parameter_33885_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34544", - "op" : "Parameter", - "outputs" : ["Parameter_34544_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34498", - "op" : "Parameter", - "outputs" : ["Parameter_34498_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36167", - "op" : "Parameter", - "outputs" : ["Parameter_36167_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33998", - "op" : "Parameter", - "outputs" : ["Parameter_33998_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34683", - "op" : "Parameter", - "outputs" : ["Parameter_34683_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34073", - "op" : "Parameter", - "outputs" : ["Parameter_34073_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33906", - "op" : "Parameter", - "outputs" : ["Parameter_33906_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33925", - "op" : "Parameter", - "outputs" : ["Parameter_33925_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34902", - "op" : "Parameter", - "outputs" : ["Parameter_34902_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33945", - "op" : "Parameter", - "outputs" : ["Parameter_33945_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35478", - "op" : "Parameter", - "outputs" : ["Parameter_35478_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34937", - "op" : "Parameter", - "outputs" : ["Parameter_34937_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33901", - "op" : "Parameter", - "outputs" : ["Parameter_33901_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34265", - "op" : "Parameter", - "outputs" : ["Parameter_34265_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33849", - "op" : "Parameter", - "outputs" : ["Parameter_33849_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35842", - "op" : "Parameter", - "outputs" : ["Parameter_35842_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34038", - "op" : "Parameter", - "outputs" : ["Parameter_34038_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34348", - "op" : "Parameter", - "outputs" : ["Parameter_34348_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34630", - "op" : "Parameter", - "outputs" : ["Parameter_34630_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34900", - "op" : "Parameter", - "outputs" : ["Parameter_34900_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34077", - "op" : "Parameter", - "outputs" : ["Parameter_34077_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34705", - "op" : "Parameter", - "outputs" : ["Parameter_34705_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33919", - "op" : "Parameter", - "outputs" : ["Parameter_33919_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33875", - "op" : "Parameter", - "outputs" : ["Parameter_33875_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34535", - "op" : "Parameter", - "outputs" : ["Parameter_34535_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34139", - "op" : "Parameter", - "outputs" : ["Parameter_34139_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34050", - "op" : "Parameter", - "outputs" : ["Parameter_34050_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34021", - "op" : "Parameter", - "outputs" : ["Parameter_34021_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33863", - "op" : "Parameter", - "outputs" : ["Parameter_33863_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35173", - "op" : "Parameter", - "outputs" : ["Parameter_35173_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33970", - "op" : "Parameter", - "outputs" : ["Parameter_33970_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35508", - "op" : "Parameter", - "outputs" : ["Parameter_35508_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34068", - "op" : "Parameter", - "outputs" : ["Parameter_34068_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34112", - "op" : "Parameter", - "outputs" : ["Parameter_34112_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33950", - "op" : "Parameter", - "outputs" : ["Parameter_33950_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34143", - "op" : "Parameter", - "outputs" : ["Parameter_34143_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34549", - "op" : "Parameter", - "outputs" : ["Parameter_34549_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34331", - "op" : "Parameter", - "outputs" : ["Parameter_34331_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34382", - "op" : "Parameter", - "outputs" : ["Parameter_34382_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35113", - "op" : "Parameter", - "outputs" : ["Parameter_35113_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33918", - "op" : "Parameter", - "outputs" : ["Parameter_33918_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34465", - "op" : "Parameter", - "outputs" : ["Parameter_34465_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34287", - "op" : "Parameter", - "outputs" : ["Parameter_34287_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35654", - "op" : "Parameter", - "outputs" : ["Parameter_35654_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35068", - "op" : "Parameter", - "outputs" : ["Parameter_35068_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34181", - "op" : "Parameter", - "outputs" : ["Parameter_34181_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35637", - "op" : "Parameter", - "outputs" : ["Parameter_35637_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34150", - "op" : "Parameter", - "outputs" : ["Parameter_34150_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35946", - "op" : "Parameter", - "outputs" : ["Parameter_35946_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33922", - "op" : "Parameter", - "outputs" : ["Parameter_33922_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35796", - "op" : "Parameter", - "outputs" : ["Parameter_35796_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35877", - "op" : "Parameter", - "outputs" : ["Parameter_35877_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34407", - "op" : "Parameter", - "outputs" : ["Parameter_34407_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33924", - "op" : "Parameter", - "outputs" : ["Parameter_33924_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34567", - "op" : "Parameter", - "outputs" : ["Parameter_34567_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33988", - "op" : "Parameter", - "outputs" : ["Parameter_33988_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35967", - "op" : "Parameter", - "outputs" : ["Parameter_35967_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34086", - "op" : "Parameter", - "outputs" : ["Parameter_34086_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35051", - "op" : "Parameter", - "outputs" : ["Parameter_35051_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35845", - "op" : "Parameter", - "outputs" : ["Parameter_35845_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34496", - "op" : "Parameter", - "outputs" : ["Parameter_34496_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35659", - "op" : "Parameter", - "outputs" : ["Parameter_35659_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33935", - "op" : "Parameter", - "outputs" : ["Parameter_33935_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35947", - "op" : "Parameter", - "outputs" : ["Parameter_35947_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34742", - "op" : "Parameter", - "outputs" : ["Parameter_34742_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33931", - "op" : "Parameter", - "outputs" : ["Parameter_33931_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35447", - "op" : "Parameter", - "outputs" : ["Parameter_35447_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34013", - "op" : "Parameter", - "outputs" : ["Parameter_34013_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34160", - "op" : "Parameter", - "outputs" : ["Parameter_34160_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34749", - "op" : "Parameter", - "outputs" : ["Parameter_34749_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34044", - "op" : "Parameter", - "outputs" : ["Parameter_34044_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35606", - "op" : "Parameter", - "outputs" : ["Parameter_35606_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33934", - "op" : "Parameter", - "outputs" : ["Parameter_33934_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33949", - "op" : "Parameter", - "outputs" : ["Parameter_33949_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34419", - "op" : "Parameter", - "outputs" : ["Parameter_34419_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35641", - "op" : "Parameter", - "outputs" : ["Parameter_35641_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34984", - "op" : "Parameter", - "outputs" : ["Parameter_34984_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33936", - "op" : "Parameter", - "outputs" : ["Parameter_33936_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34499", - "op" : "Parameter", - "outputs" : ["Parameter_34499_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34323", - "op" : "Parameter", - "outputs" : ["Parameter_34323_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35691", - "op" : "Parameter", - "outputs" : ["Parameter_35691_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33888", - "op" : "Parameter", - "outputs" : ["Parameter_33888_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35128", - "op" : "Parameter", - "outputs" : ["Parameter_35128_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34324", - "op" : "Parameter", - "outputs" : ["Parameter_34324_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34002", - "op" : "Parameter", - "outputs" : ["Parameter_34002_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34518", - "op" : "Parameter", - "outputs" : ["Parameter_34518_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33942", - "op" : "Parameter", - "outputs" : ["Parameter_33942_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34652", - "op" : "Parameter", - "outputs" : ["Parameter_34652_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34017", - "op" : "Parameter", - "outputs" : ["Parameter_34017_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34471", - "op" : "Parameter", - "outputs" : ["Parameter_34471_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35899", - "op" : "Parameter", - "outputs" : ["Parameter_35899_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34165", - "op" : "Parameter", - "outputs" : ["Parameter_34165_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34094", - "op" : "Parameter", - "outputs" : ["Parameter_34094_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34954", - "op" : "Parameter", - "outputs" : ["Parameter_34954_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34711", - "op" : "Parameter", - "outputs" : ["Parameter_34711_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35723", - "op" : "Parameter", - "outputs" : ["Parameter_35723_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34288", - "op" : "Parameter", - "outputs" : ["Parameter_34288_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34127", - "op" : "Parameter", - "outputs" : ["Parameter_34127_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34064", - "op" : "Parameter", - "outputs" : ["Parameter_34064_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33921", - "op" : "Parameter", - "outputs" : ["Parameter_33921_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34484", - "op" : "Parameter", - "outputs" : ["Parameter_34484_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34131", - "op" : "Parameter", - "outputs" : ["Parameter_34131_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33980", - "op" : "Parameter", - "outputs" : ["Parameter_33980_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33957", - "op" : "Parameter", - "outputs" : ["Parameter_33957_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35207", - "op" : "Parameter", - "outputs" : ["Parameter_35207_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35367", - "op" : "Parameter", - "outputs" : ["Parameter_35367_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35603", - "op" : "Parameter", - "outputs" : ["Parameter_35603_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33873", - "op" : "Parameter", - "outputs" : ["Parameter_33873_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33882", - "op" : "Parameter", - "outputs" : ["Parameter_33882_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35739", - "op" : "Parameter", - "outputs" : ["Parameter_35739_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34210", - "op" : "Parameter", - "outputs" : ["Parameter_34210_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35605", - "op" : "Parameter", - "outputs" : ["Parameter_35605_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34998", - "op" : "Parameter", - "outputs" : ["Parameter_34998_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34290", - "op" : "Parameter", - "outputs" : ["Parameter_34290_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34613", - "op" : "Parameter", - "outputs" : ["Parameter_34613_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34294", - "op" : "Parameter", - "outputs" : ["Parameter_34294_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34682", - "op" : "Parameter", - "outputs" : ["Parameter_34682_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35827", - "op" : "Parameter", - "outputs" : ["Parameter_35827_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36144", - "op" : "Parameter", - "outputs" : ["Parameter_36144_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33883", - "op" : "Parameter", - "outputs" : ["Parameter_33883_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33951", - "op" : "Parameter", - "outputs" : ["Parameter_33951_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34032", - "op" : "Parameter", - "outputs" : ["Parameter_34032_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33956", - "op" : "Parameter", - "outputs" : ["Parameter_33956_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33955", - "op" : "Parameter", - "outputs" : ["Parameter_33955_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34410", - "op" : "Parameter", - "outputs" : ["Parameter_34410_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34367", - "op" : "Parameter", - "outputs" : ["Parameter_34367_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35681", - "op" : "Parameter", - "outputs" : ["Parameter_35681_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33959", - "op" : "Parameter", - "outputs" : ["Parameter_33959_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34005", - "op" : "Parameter", - "outputs" : ["Parameter_34005_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34295", - "op" : "Parameter", - "outputs" : ["Parameter_34295_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34195", - "op" : "Parameter", - "outputs" : ["Parameter_34195_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34423", - "op" : "Parameter", - "outputs" : ["Parameter_34423_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33948", - "op" : "Parameter", - "outputs" : ["Parameter_33948_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34515", - "op" : "Parameter", - "outputs" : ["Parameter_34515_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35053", - "op" : "Parameter", - "outputs" : ["Parameter_35053_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35846", - "op" : "Parameter", - "outputs" : ["Parameter_35846_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34056", - "op" : "Parameter", - "outputs" : ["Parameter_34056_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34764", - "op" : "Parameter", - "outputs" : ["Parameter_34764_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33884", - "op" : "Parameter", - "outputs" : ["Parameter_33884_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35079", - "op" : "Parameter", - "outputs" : ["Parameter_35079_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34342", - "op" : "Parameter", - "outputs" : ["Parameter_34342_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34485", - "op" : "Parameter", - "outputs" : ["Parameter_34485_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35165", - "op" : "Parameter", - "outputs" : ["Parameter_35165_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34743", - "op" : "Parameter", - "outputs" : ["Parameter_34743_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33987", - "op" : "Parameter", - "outputs" : ["Parameter_33987_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34297", - "op" : "Parameter", - "outputs" : ["Parameter_34297_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35676", - "op" : "Parameter", - "outputs" : ["Parameter_35676_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33992", - "op" : "Parameter", - "outputs" : ["Parameter_33992_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35061", - "op" : "Parameter", - "outputs" : ["Parameter_35061_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35332", - "op" : "Parameter", - "outputs" : ["Parameter_35332_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33974", - "op" : "Parameter", - "outputs" : ["Parameter_33974_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34554", - "op" : "Parameter", - "outputs" : ["Parameter_34554_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34350", - "op" : "Parameter", - "outputs" : ["Parameter_34350_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35357", - "op" : "Parameter", - "outputs" : ["Parameter_35357_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33990", - "op" : "Parameter", - "outputs" : ["Parameter_33990_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34962", - "op" : "Parameter", - "outputs" : ["Parameter_34962_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34870", - "op" : "Parameter", - "outputs" : ["Parameter_34870_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33865", - "op" : "Parameter", - "outputs" : ["Parameter_33865_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34312", - "op" : "Parameter", - "outputs" : ["Parameter_34312_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33976", - "op" : "Parameter", - "outputs" : ["Parameter_33976_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34751", - "op" : "Parameter", - "outputs" : ["Parameter_34751_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36143", - "op" : "Parameter", - "outputs" : ["Parameter_36143_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35285", - "op" : "Parameter", - "outputs" : ["Parameter_35285_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34521", - "op" : "Parameter", - "outputs" : ["Parameter_34521_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35546", - "op" : "Parameter", - "outputs" : ["Parameter_35546_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35854", - "op" : "Parameter", - "outputs" : ["Parameter_35854_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33981", - "op" : "Parameter", - "outputs" : ["Parameter_33981_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34763", - "op" : "Parameter", - "outputs" : ["Parameter_34763_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34306", - "op" : "Parameter", - "outputs" : ["Parameter_34306_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33890", - "op" : "Parameter", - "outputs" : ["Parameter_33890_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33966", - "op" : "Parameter", - "outputs" : ["Parameter_33966_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33996", - "op" : "Parameter", - "outputs" : ["Parameter_33996_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34066", - "op" : "Parameter", - "outputs" : ["Parameter_34066_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34169", - "op" : "Parameter", - "outputs" : ["Parameter_34169_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34172", - "op" : "Parameter", - "outputs" : ["Parameter_34172_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34687", - "op" : "Parameter", - "outputs" : ["Parameter_34687_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34173", - "op" : "Parameter", - "outputs" : ["Parameter_34173_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34176", - "op" : "Parameter", - "outputs" : ["Parameter_34176_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34806", - "op" : "Parameter", - "outputs" : ["Parameter_34806_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34389", - "op" : "Parameter", - "outputs" : ["Parameter_34389_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35291", - "op" : "Parameter", - "outputs" : ["Parameter_35291_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34178", - "op" : "Parameter", - "outputs" : ["Parameter_34178_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34179", - "op" : "Parameter", - "outputs" : ["Parameter_34179_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35166", - "op" : "Parameter", - "outputs" : ["Parameter_35166_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34180", - "op" : "Parameter", - "outputs" : ["Parameter_34180_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34182", - "op" : "Parameter", - "outputs" : ["Parameter_34182_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34564", - "op" : "Parameter", - "outputs" : ["Parameter_34564_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35497", - "op" : "Parameter", - "outputs" : ["Parameter_35497_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34243", - "op" : "Parameter", - "outputs" : ["Parameter_34243_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36010", - "op" : "Parameter", - "outputs" : ["Parameter_36010_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34340", - "op" : "Parameter", - "outputs" : ["Parameter_34340_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34395", - "op" : "Parameter", - "outputs" : ["Parameter_34395_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35511", - "op" : "Parameter", - "outputs" : ["Parameter_35511_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35632", - "op" : "Parameter", - "outputs" : ["Parameter_35632_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34183", - "op" : "Parameter", - "outputs" : ["Parameter_34183_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35254", - "op" : "Parameter", - "outputs" : ["Parameter_35254_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34185", - "op" : "Parameter", - "outputs" : ["Parameter_34185_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34995", - "op" : "Parameter", - "outputs" : ["Parameter_34995_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34422", - "op" : "Parameter", - "outputs" : ["Parameter_34422_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34187", - "op" : "Parameter", - "outputs" : ["Parameter_34187_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34188", - "op" : "Parameter", - "outputs" : ["Parameter_34188_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34840", - "op" : "Parameter", - "outputs" : ["Parameter_34840_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34016", - "op" : "Parameter", - "outputs" : ["Parameter_34016_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34191", - "op" : "Parameter", - "outputs" : ["Parameter_34191_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34405", - "op" : "Parameter", - "outputs" : ["Parameter_34405_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34192", - "op" : "Parameter", - "outputs" : ["Parameter_34192_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34466", - "op" : "Parameter", - "outputs" : ["Parameter_34466_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34193", - "op" : "Parameter", - "outputs" : ["Parameter_34193_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34514", - "op" : "Parameter", - "outputs" : ["Parameter_34514_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35041", - "op" : "Parameter", - "outputs" : ["Parameter_35041_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34375", - "op" : "Parameter", - "outputs" : ["Parameter_34375_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35664", - "op" : "Parameter", - "outputs" : ["Parameter_35664_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34524", - "op" : "Parameter", - "outputs" : ["Parameter_34524_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34455", - "op" : "Parameter", - "outputs" : ["Parameter_34455_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34399", - "op" : "Parameter", - "outputs" : ["Parameter_34399_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35393", - "op" : "Parameter", - "outputs" : ["Parameter_35393_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35595", - "op" : "Parameter", - "outputs" : ["Parameter_35595_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34197", - "op" : "Parameter", - "outputs" : ["Parameter_34197_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35976", - "op" : "Parameter", - "outputs" : ["Parameter_35976_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34198", - "op" : "Parameter", - "outputs" : ["Parameter_34198_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34200", - "op" : "Parameter", - "outputs" : ["Parameter_34200_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34645", - "op" : "Parameter", - "outputs" : ["Parameter_34645_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35742", - "op" : "Parameter", - "outputs" : ["Parameter_35742_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34341", - "op" : "Parameter", - "outputs" : ["Parameter_34341_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34249", - "op" : "Parameter", - "outputs" : ["Parameter_34249_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34349", - "op" : "Parameter", - "outputs" : ["Parameter_34349_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34204", - "op" : "Parameter", - "outputs" : ["Parameter_34204_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34250", - "op" : "Parameter", - "outputs" : ["Parameter_34250_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35836", - "op" : "Parameter", - "outputs" : ["Parameter_35836_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35211", - "op" : "Parameter", - "outputs" : ["Parameter_35211_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35328", - "op" : "Parameter", - "outputs" : ["Parameter_35328_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34206", - "op" : "Parameter", - "outputs" : ["Parameter_34206_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34686", - "op" : "Parameter", - "outputs" : ["Parameter_34686_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34611", - "op" : "Parameter", - "outputs" : ["Parameter_34611_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34208", - "op" : "Parameter", - "outputs" : ["Parameter_34208_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34975", - "op" : "Parameter", - "outputs" : ["Parameter_34975_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35812", - "op" : "Parameter", - "outputs" : ["Parameter_35812_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34551", - "op" : "Parameter", - "outputs" : ["Parameter_34551_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34135", - "op" : "Parameter", - "outputs" : ["Parameter_34135_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35619", - "op" : "Parameter", - "outputs" : ["Parameter_35619_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34280", - "op" : "Parameter", - "outputs" : ["Parameter_34280_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35275", - "op" : "Parameter", - "outputs" : ["Parameter_35275_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35891", - "op" : "Parameter", - "outputs" : ["Parameter_35891_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34460", - "op" : "Parameter", - "outputs" : ["Parameter_34460_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34058", - "op" : "Parameter", - "outputs" : ["Parameter_34058_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34213", - "op" : "Parameter", - "outputs" : ["Parameter_34213_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35830", - "op" : "Parameter", - "outputs" : ["Parameter_35830_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34360", - "op" : "Parameter", - "outputs" : ["Parameter_34360_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34511", - "op" : "Parameter", - "outputs" : ["Parameter_34511_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36040", - "op" : "Parameter", - "outputs" : ["Parameter_36040_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34748", - "op" : "Parameter", - "outputs" : ["Parameter_34748_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34217", - "op" : "Parameter", - "outputs" : ["Parameter_34217_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34769", - "op" : "Parameter", - "outputs" : ["Parameter_34769_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34220", - "op" : "Parameter", - "outputs" : ["Parameter_34220_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35720", - "op" : "Parameter", - "outputs" : ["Parameter_35720_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35800", - "op" : "Parameter", - "outputs" : ["Parameter_35800_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34224", - "op" : "Parameter", - "outputs" : ["Parameter_34224_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35582", - "op" : "Parameter", - "outputs" : ["Parameter_35582_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34225", - "op" : "Parameter", - "outputs" : ["Parameter_34225_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34932", - "op" : "Parameter", - "outputs" : ["Parameter_34932_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34227", - "op" : "Parameter", - "outputs" : ["Parameter_34227_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34228", - "op" : "Parameter", - "outputs" : ["Parameter_34228_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35161", - "op" : "Parameter", - "outputs" : ["Parameter_35161_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34779", - "op" : "Parameter", - "outputs" : ["Parameter_34779_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34229", - "op" : "Parameter", - "outputs" : ["Parameter_34229_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34479", - "op" : "Parameter", - "outputs" : ["Parameter_34479_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34232", - "op" : "Parameter", - "outputs" : ["Parameter_34232_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35623", - "op" : "Parameter", - "outputs" : ["Parameter_35623_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34570", - "op" : "Parameter", - "outputs" : ["Parameter_34570_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34234", - "op" : "Parameter", - "outputs" : ["Parameter_34234_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34486", - "op" : "Parameter", - "outputs" : ["Parameter_34486_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34712", - "op" : "Parameter", - "outputs" : ["Parameter_34712_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34235", - "op" : "Parameter", - "outputs" : ["Parameter_34235_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35991", - "op" : "Parameter", - "outputs" : ["Parameter_35991_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35096", - "op" : "Parameter", - "outputs" : ["Parameter_35096_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34148", - "op" : "Parameter", - "outputs" : ["Parameter_34148_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33859", - "op" : "Parameter", - "outputs" : ["Parameter_33859_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34211", - "op" : "Parameter", - "outputs" : ["Parameter_34211_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35184", - "op" : "Parameter", - "outputs" : ["Parameter_35184_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34493", - "op" : "Parameter", - "outputs" : ["Parameter_34493_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34237", - "op" : "Parameter", - "outputs" : ["Parameter_34237_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34238", - "op" : "Parameter", - "outputs" : ["Parameter_34238_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36105", - "op" : "Parameter", - "outputs" : ["Parameter_36105_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35101", - "op" : "Parameter", - "outputs" : ["Parameter_35101_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33953", - "op" : "Parameter", - "outputs" : ["Parameter_33953_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34240", - "op" : "Parameter", - "outputs" : ["Parameter_34240_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35419", - "op" : "Parameter", - "outputs" : ["Parameter_35419_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35036", - "op" : "Parameter", - "outputs" : ["Parameter_35036_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33982", - "op" : "Parameter", - "outputs" : ["Parameter_33982_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35212", - "op" : "Parameter", - "outputs" : ["Parameter_35212_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35294", - "op" : "Parameter", - "outputs" : ["Parameter_35294_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35495", - "op" : "Parameter", - "outputs" : ["Parameter_35495_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34241", - "op" : "Parameter", - "outputs" : ["Parameter_34241_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35469", - "op" : "Parameter", - "outputs" : ["Parameter_35469_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33969", - "op" : "Parameter", - "outputs" : ["Parameter_33969_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34357", - "op" : "Parameter", - "outputs" : ["Parameter_34357_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34429", - "op" : "Parameter", - "outputs" : ["Parameter_34429_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34337", - "op" : "Parameter", - "outputs" : ["Parameter_34337_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34469", - "op" : "Parameter", - "outputs" : ["Parameter_34469_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34242", - "op" : "Parameter", - "outputs" : ["Parameter_34242_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35423", - "op" : "Parameter", - "outputs" : ["Parameter_35423_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35312", - "op" : "Parameter", - "outputs" : ["Parameter_35312_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34432", - "op" : "Parameter", - "outputs" : ["Parameter_34432_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34261", - "op" : "Parameter", - "outputs" : ["Parameter_34261_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35397", - "op" : "Parameter", - "outputs" : ["Parameter_35397_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34908", - "op" : "Parameter", - "outputs" : ["Parameter_34908_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34246", - "op" : "Parameter", - "outputs" : ["Parameter_34246_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33848", - "op" : "Parameter", - "outputs" : ["Parameter_33848_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35764", - "op" : "Parameter", - "outputs" : ["Parameter_35764_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33939", - "op" : "Parameter", - "outputs" : ["Parameter_33939_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34519", - "op" : "Parameter", - "outputs" : ["Parameter_34519_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34247", - "op" : "Parameter", - "outputs" : ["Parameter_34247_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35149", - "op" : "Parameter", - "outputs" : ["Parameter_35149_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35941", - "op" : "Parameter", - "outputs" : ["Parameter_35941_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34881", - "op" : "Parameter", - "outputs" : ["Parameter_34881_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34252", - "op" : "Parameter", - "outputs" : ["Parameter_34252_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35864", - "op" : "Parameter", - "outputs" : ["Parameter_35864_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34916", - "op" : "Parameter", - "outputs" : ["Parameter_34916_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35938", - "op" : "Parameter", - "outputs" : ["Parameter_35938_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34792", - "op" : "Parameter", - "outputs" : ["Parameter_34792_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34254", - "op" : "Parameter", - "outputs" : ["Parameter_34254_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34255", - "op" : "Parameter", - "outputs" : ["Parameter_34255_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34972", - "op" : "Parameter", - "outputs" : ["Parameter_34972_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33872", - "op" : "Parameter", - "outputs" : ["Parameter_33872_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34256", - "op" : "Parameter", - "outputs" : ["Parameter_34256_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35822", - "op" : "Parameter", - "outputs" : ["Parameter_35822_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35897", - "op" : "Parameter", - "outputs" : ["Parameter_35897_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34888", - "op" : "Parameter", - "outputs" : ["Parameter_34888_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34923", - "op" : "Parameter", - "outputs" : ["Parameter_34923_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34259", - "op" : "Parameter", - "outputs" : ["Parameter_34259_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35600", - "op" : "Parameter", - "outputs" : ["Parameter_35600_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34897", - "op" : "Parameter", - "outputs" : ["Parameter_34897_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34033", - "op" : "Parameter", - "outputs" : ["Parameter_34033_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35607", - "op" : "Parameter", - "outputs" : ["Parameter_35607_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35237", - "op" : "Parameter", - "outputs" : ["Parameter_35237_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34439", - "op" : "Parameter", - "outputs" : ["Parameter_34439_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35159", - "op" : "Parameter", - "outputs" : ["Parameter_35159_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34921", - "op" : "Parameter", - "outputs" : ["Parameter_34921_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34267", - "op" : "Parameter", - "outputs" : ["Parameter_34267_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33944", - "op" : "Parameter", - "outputs" : ["Parameter_33944_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34281", - "op" : "Parameter", - "outputs" : ["Parameter_34281_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35287", - "op" : "Parameter", - "outputs" : ["Parameter_35287_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34371", - "op" : "Parameter", - "outputs" : ["Parameter_34371_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34266", - "op" : "Parameter", - "outputs" : ["Parameter_34266_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34268", - "op" : "Parameter", - "outputs" : ["Parameter_34268_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34269", - "op" : "Parameter", - "outputs" : ["Parameter_34269_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34270", - "op" : "Parameter", - "outputs" : ["Parameter_34270_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35342", - "op" : "Parameter", - "outputs" : ["Parameter_35342_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36089", - "op" : "Parameter", - "outputs" : ["Parameter_36089_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34358", - "op" : "Parameter", - "outputs" : ["Parameter_34358_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34273", - "op" : "Parameter", - "outputs" : ["Parameter_34273_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34480", - "op" : "Parameter", - "outputs" : ["Parameter_34480_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35458", - "op" : "Parameter", - "outputs" : ["Parameter_35458_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35875", - "op" : "Parameter", - "outputs" : ["Parameter_35875_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34275", - "op" : "Parameter", - "outputs" : ["Parameter_34275_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35321", - "op" : "Parameter", - "outputs" : ["Parameter_35321_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34283", - "op" : "Parameter", - "outputs" : ["Parameter_34283_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34226", - "op" : "Parameter", - "outputs" : ["Parameter_34226_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34298", - "op" : "Parameter", - "outputs" : ["Parameter_34298_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35601", - "op" : "Parameter", - "outputs" : ["Parameter_35601_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35013", - "op" : "Parameter", - "outputs" : ["Parameter_35013_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34922", - "op" : "Parameter", - "outputs" : ["Parameter_34922_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34279", - "op" : "Parameter", - "outputs" : ["Parameter_34279_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34982", - "op" : "Parameter", - "outputs" : ["Parameter_34982_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35562", - "op" : "Parameter", - "outputs" : ["Parameter_35562_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34355", - "op" : "Parameter", - "outputs" : ["Parameter_34355_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35032", - "op" : "Parameter", - "outputs" : ["Parameter_35032_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34284", - "op" : "Parameter", - "outputs" : ["Parameter_34284_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34689", - "op" : "Parameter", - "outputs" : ["Parameter_34689_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36104", - "op" : "Parameter", - "outputs" : ["Parameter_36104_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34531", - "op" : "Parameter", - "outputs" : ["Parameter_34531_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34285", - "op" : "Parameter", - "outputs" : ["Parameter_34285_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34145", - "op" : "Parameter", - "outputs" : ["Parameter_34145_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36018", - "op" : "Parameter", - "outputs" : ["Parameter_36018_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34456", - "op" : "Parameter", - "outputs" : ["Parameter_34456_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35565", - "op" : "Parameter", - "outputs" : ["Parameter_35565_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33975", - "op" : "Parameter", - "outputs" : ["Parameter_33975_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34301", - "op" : "Parameter", - "outputs" : ["Parameter_34301_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34983", - "op" : "Parameter", - "outputs" : ["Parameter_34983_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34893", - "op" : "Parameter", - "outputs" : ["Parameter_34893_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34304", - "op" : "Parameter", - "outputs" : ["Parameter_34304_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34311", - "op" : "Parameter", - "outputs" : ["Parameter_34311_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35873", - "op" : "Parameter", - "outputs" : ["Parameter_35873_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34313", - "op" : "Parameter", - "outputs" : ["Parameter_34313_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34827", - "op" : "Parameter", - "outputs" : ["Parameter_34827_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34137", - "op" : "Parameter", - "outputs" : ["Parameter_34137_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34316", - "op" : "Parameter", - "outputs" : ["Parameter_34316_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35002", - "op" : "Parameter", - "outputs" : ["Parameter_35002_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35807", - "op" : "Parameter", - "outputs" : ["Parameter_35807_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34800", - "op" : "Parameter", - "outputs" : ["Parameter_34800_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34318", - "op" : "Parameter", - "outputs" : ["Parameter_34318_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34320", - "op" : "Parameter", - "outputs" : ["Parameter_34320_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34325", - "op" : "Parameter", - "outputs" : ["Parameter_34325_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34894", - "op" : "Parameter", - "outputs" : ["Parameter_34894_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33963", - "op" : "Parameter", - "outputs" : ["Parameter_33963_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34817", - "op" : "Parameter", - "outputs" : ["Parameter_34817_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35146", - "op" : "Parameter", - "outputs" : ["Parameter_35146_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35125", - "op" : "Parameter", - "outputs" : ["Parameter_35125_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35070", - "op" : "Parameter", - "outputs" : ["Parameter_35070_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34335", - "op" : "Parameter", - "outputs" : ["Parameter_34335_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35847", - "op" : "Parameter", - "outputs" : ["Parameter_35847_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34327", - "op" : "Parameter", - "outputs" : ["Parameter_34327_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34330", - "op" : "Parameter", - "outputs" : ["Parameter_34330_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34411", - "op" : "Parameter", - "outputs" : ["Parameter_34411_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34333", - "op" : "Parameter", - "outputs" : ["Parameter_34333_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34627", - "op" : "Parameter", - "outputs" : ["Parameter_34627_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34343", - "op" : "Parameter", - "outputs" : ["Parameter_34343_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34344", - "op" : "Parameter", - "outputs" : ["Parameter_34344_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35954", - "op" : "Parameter", - "outputs" : ["Parameter_35954_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35072", - "op" : "Parameter", - "outputs" : ["Parameter_35072_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34475", - "op" : "Parameter", - "outputs" : ["Parameter_34475_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35395", - "op" : "Parameter", - "outputs" : ["Parameter_35395_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35970", - "op" : "Parameter", - "outputs" : ["Parameter_35970_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34028", - "op" : "Parameter", - "outputs" : ["Parameter_34028_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35462", - "op" : "Parameter", - "outputs" : ["Parameter_35462_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34363", - "op" : "Parameter", - "outputs" : ["Parameter_34363_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34097", - "op" : "Parameter", - "outputs" : ["Parameter_34097_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34353", - "op" : "Parameter", - "outputs" : ["Parameter_34353_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35106", - "op" : "Parameter", - "outputs" : ["Parameter_35106_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34356", - "op" : "Parameter", - "outputs" : ["Parameter_34356_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35677", - "op" : "Parameter", - "outputs" : ["Parameter_35677_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34489", - "op" : "Parameter", - "outputs" : ["Parameter_34489_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34964", - "op" : "Parameter", - "outputs" : ["Parameter_34964_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34621", - "op" : "Parameter", - "outputs" : ["Parameter_34621_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34359", - "op" : "Parameter", - "outputs" : ["Parameter_34359_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34377", - "op" : "Parameter", - "outputs" : ["Parameter_34377_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35750", - "op" : "Parameter", - "outputs" : ["Parameter_35750_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34361", - "op" : "Parameter", - "outputs" : ["Parameter_34361_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33994", - "op" : "Parameter", - "outputs" : ["Parameter_33994_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34362", - "op" : "Parameter", - "outputs" : ["Parameter_34362_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34364", - "op" : "Parameter", - "outputs" : ["Parameter_34364_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34866", - "op" : "Parameter", - "outputs" : ["Parameter_34866_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34427", - "op" : "Parameter", - "outputs" : ["Parameter_34427_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34049", - "op" : "Parameter", - "outputs" : ["Parameter_34049_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34703", - "op" : "Parameter", - "outputs" : ["Parameter_34703_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34934", - "op" : "Parameter", - "outputs" : ["Parameter_34934_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34369", - "op" : "Parameter", - "outputs" : ["Parameter_34369_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34083", - "op" : "Parameter", - "outputs" : ["Parameter_34083_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35481", - "op" : "Parameter", - "outputs" : ["Parameter_35481_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34373", - "op" : "Parameter", - "outputs" : ["Parameter_34373_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34430", - "op" : "Parameter", - "outputs" : ["Parameter_34430_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34504", - "op" : "Parameter", - "outputs" : ["Parameter_34504_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35049", - "op" : "Parameter", - "outputs" : ["Parameter_35049_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35931", - "op" : "Parameter", - "outputs" : ["Parameter_35931_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34816", - "op" : "Parameter", - "outputs" : ["Parameter_34816_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34374", - "op" : "Parameter", - "outputs" : ["Parameter_34374_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35092", - "op" : "Parameter", - "outputs" : ["Parameter_35092_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35592", - "op" : "Parameter", - "outputs" : ["Parameter_35592_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34378", - "op" : "Parameter", - "outputs" : ["Parameter_34378_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35679", - "op" : "Parameter", - "outputs" : ["Parameter_35679_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34379", - "op" : "Parameter", - "outputs" : ["Parameter_34379_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35782", - "op" : "Parameter", - "outputs" : ["Parameter_35782_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34380", - "op" : "Parameter", - "outputs" : ["Parameter_34380_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34385", - "op" : "Parameter", - "outputs" : ["Parameter_34385_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35048", - "op" : "Parameter", - "outputs" : ["Parameter_35048_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35389", - "op" : "Parameter", - "outputs" : ["Parameter_35389_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35924", - "op" : "Parameter", - "outputs" : ["Parameter_35924_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34386", - "op" : "Parameter", - "outputs" : ["Parameter_34386_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35655", - "op" : "Parameter", - "outputs" : ["Parameter_35655_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34388", - "op" : "Parameter", - "outputs" : ["Parameter_34388_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34717", - "op" : "Parameter", - "outputs" : ["Parameter_34717_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34008", - "op" : "Parameter", - "outputs" : ["Parameter_34008_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34391", - "op" : "Parameter", - "outputs" : ["Parameter_34391_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34392", - "op" : "Parameter", - "outputs" : ["Parameter_34392_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34819", - "op" : "Parameter", - "outputs" : ["Parameter_34819_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34393", - "op" : "Parameter", - "outputs" : ["Parameter_34393_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35811", - "op" : "Parameter", - "outputs" : ["Parameter_35811_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35093", - "op" : "Parameter", - "outputs" : ["Parameter_35093_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34833", - "op" : "Parameter", - "outputs" : ["Parameter_34833_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35852", - "op" : "Parameter", - "outputs" : ["Parameter_35852_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34394", - "op" : "Parameter", - "outputs" : ["Parameter_34394_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35501", - "op" : "Parameter", - "outputs" : ["Parameter_35501_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34149", - "op" : "Parameter", - "outputs" : ["Parameter_34149_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33835", - "op" : "Parameter", - "outputs" : ["Parameter_33835_0"], - "shape" : [ 1024, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34396", - "op" : "Parameter", - "outputs" : ["Parameter_34396_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34965", - "op" : "Parameter", - "outputs" : ["Parameter_34965_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34674", - "op" : "Parameter", - "outputs" : ["Parameter_34674_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34170", - "op" : "Parameter", - "outputs" : ["Parameter_34170_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35540", - "op" : "Parameter", - "outputs" : ["Parameter_35540_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34398", - "op" : "Parameter", - "outputs" : ["Parameter_34398_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34400", - "op" : "Parameter", - "outputs" : ["Parameter_34400_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35433", - "op" : "Parameter", - "outputs" : ["Parameter_35433_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35768", - "op" : "Parameter", - "outputs" : ["Parameter_35768_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34837", - "op" : "Parameter", - "outputs" : ["Parameter_34837_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34409", - "op" : "Parameter", - "outputs" : ["Parameter_34409_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33983", - "op" : "Parameter", - "outputs" : ["Parameter_33983_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34413", - "op" : "Parameter", - "outputs" : ["Parameter_34413_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34797", - "op" : "Parameter", - "outputs" : ["Parameter_34797_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35874", - "op" : "Parameter", - "outputs" : ["Parameter_35874_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34414", - "op" : "Parameter", - "outputs" : ["Parameter_34414_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34416", - "op" : "Parameter", - "outputs" : ["Parameter_34416_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34302", - "op" : "Parameter", - "outputs" : ["Parameter_34302_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34454", - "op" : "Parameter", - "outputs" : ["Parameter_34454_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33853", - "op" : "Parameter", - "outputs" : ["Parameter_33853_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34421", - "op" : "Parameter", - "outputs" : ["Parameter_34421_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36007", - "op" : "Parameter", - "outputs" : ["Parameter_36007_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34898", - "op" : "Parameter", - "outputs" : ["Parameter_34898_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34426", - "op" : "Parameter", - "outputs" : ["Parameter_34426_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34428", - "op" : "Parameter", - "outputs" : ["Parameter_34428_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34955", - "op" : "Parameter", - "outputs" : ["Parameter_34955_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33903", - "op" : "Parameter", - "outputs" : ["Parameter_33903_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34759", - "op" : "Parameter", - "outputs" : ["Parameter_34759_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34958", - "op" : "Parameter", - "outputs" : ["Parameter_34958_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34649", - "op" : "Parameter", - "outputs" : ["Parameter_34649_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36036", - "op" : "Parameter", - "outputs" : ["Parameter_36036_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34438", - "op" : "Parameter", - "outputs" : ["Parameter_34438_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35428", - "op" : "Parameter", - "outputs" : ["Parameter_35428_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34233", - "op" : "Parameter", - "outputs" : ["Parameter_34233_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34440", - "op" : "Parameter", - "outputs" : ["Parameter_34440_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34577", - "op" : "Parameter", - "outputs" : ["Parameter_34577_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34015", - "op" : "Parameter", - "outputs" : ["Parameter_34015_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34406", - "op" : "Parameter", - "outputs" : ["Parameter_34406_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34441", - "op" : "Parameter", - "outputs" : ["Parameter_34441_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35622", - "op" : "Parameter", - "outputs" : ["Parameter_35622_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35905", - "op" : "Parameter", - "outputs" : ["Parameter_35905_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34214", - "op" : "Parameter", - "outputs" : ["Parameter_34214_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34446", - "op" : "Parameter", - "outputs" : ["Parameter_34446_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35952", - "op" : "Parameter", - "outputs" : ["Parameter_35952_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33847", - "op" : "Parameter", - "outputs" : ["Parameter_33847_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34447", - "op" : "Parameter", - "outputs" : ["Parameter_34447_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34697", - "op" : "Parameter", - "outputs" : ["Parameter_34697_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35683", - "op" : "Parameter", - "outputs" : ["Parameter_35683_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34011", - "op" : "Parameter", - "outputs" : ["Parameter_34011_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34448", - "op" : "Parameter", - "outputs" : ["Parameter_34448_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34449", - "op" : "Parameter", - "outputs" : ["Parameter_34449_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35657", - "op" : "Parameter", - "outputs" : ["Parameter_35657_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34450", - "op" : "Parameter", - "outputs" : ["Parameter_34450_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34458", - "op" : "Parameter", - "outputs" : ["Parameter_34458_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34459", - "op" : "Parameter", - "outputs" : ["Parameter_34459_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35841", - "op" : "Parameter", - "outputs" : ["Parameter_35841_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35844", - "op" : "Parameter", - "outputs" : ["Parameter_35844_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36093", - "op" : "Parameter", - "outputs" : ["Parameter_36093_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36176", - "op" : "Parameter", - "outputs" : ["Parameter_36176_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36181", - "op" : "Parameter", - "outputs" : ["Parameter_36181_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35204", - "op" : "Parameter", - "outputs" : ["Parameter_35204_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35974", - "op" : "Parameter", - "outputs" : ["Parameter_35974_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34758", - "op" : "Parameter", - "outputs" : ["Parameter_34758_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34714", - "op" : "Parameter", - "outputs" : ["Parameter_34714_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34464", - "op" : "Parameter", - "outputs" : ["Parameter_34464_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35703", - "op" : "Parameter", - "outputs" : ["Parameter_35703_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34462", - "op" : "Parameter", - "outputs" : ["Parameter_34462_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34468", - "op" : "Parameter", - "outputs" : ["Parameter_34468_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35223", - "op" : "Parameter", - "outputs" : ["Parameter_35223_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34520", - "op" : "Parameter", - "outputs" : ["Parameter_34520_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34470", - "op" : "Parameter", - "outputs" : ["Parameter_34470_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34473", - "op" : "Parameter", - "outputs" : ["Parameter_34473_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34517", - "op" : "Parameter", - "outputs" : ["Parameter_34517_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36164", - "op" : "Parameter", - "outputs" : ["Parameter_36164_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34474", - "op" : "Parameter", - "outputs" : ["Parameter_34474_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34808", - "op" : "Parameter", - "outputs" : ["Parameter_34808_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34490", - "op" : "Parameter", - "outputs" : ["Parameter_34490_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34757", - "op" : "Parameter", - "outputs" : ["Parameter_34757_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33964", - "op" : "Parameter", - "outputs" : ["Parameter_33964_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34783", - "op" : "Parameter", - "outputs" : ["Parameter_34783_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34110", - "op" : "Parameter", - "outputs" : ["Parameter_34110_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34497", - "op" : "Parameter", - "outputs" : ["Parameter_34497_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35120", - "op" : "Parameter", - "outputs" : ["Parameter_35120_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34167", - "op" : "Parameter", - "outputs" : ["Parameter_34167_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35741", - "op" : "Parameter", - "outputs" : ["Parameter_35741_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34501", - "op" : "Parameter", - "outputs" : ["Parameter_34501_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34502", - "op" : "Parameter", - "outputs" : ["Parameter_34502_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36111", - "op" : "Parameter", - "outputs" : ["Parameter_36111_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34503", - "op" : "Parameter", - "outputs" : ["Parameter_34503_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34780", - "op" : "Parameter", - "outputs" : ["Parameter_34780_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34339", - "op" : "Parameter", - "outputs" : ["Parameter_34339_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34506", - "op" : "Parameter", - "outputs" : ["Parameter_34506_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34510", - "op" : "Parameter", - "outputs" : ["Parameter_34510_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34508", - "op" : "Parameter", - "outputs" : ["Parameter_34508_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34539", - "op" : "Parameter", - "outputs" : ["Parameter_34539_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35124", - "op" : "Parameter", - "outputs" : ["Parameter_35124_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34522", - "op" : "Parameter", - "outputs" : ["Parameter_34522_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34523", - "op" : "Parameter", - "outputs" : ["Parameter_34523_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35026", - "op" : "Parameter", - "outputs" : ["Parameter_35026_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34532", - "op" : "Parameter", - "outputs" : ["Parameter_34532_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34533", - "op" : "Parameter", - "outputs" : ["Parameter_34533_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35218", - "op" : "Parameter", - "outputs" : ["Parameter_35218_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35617", - "op" : "Parameter", - "outputs" : ["Parameter_35617_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_34540", - "op" : "Parameter", - "outputs" : ["Parameter_34540_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35325", - "op" : "Parameter", - "outputs" : ["Parameter_35325_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35327", - "op" : "Parameter", - "outputs" : ["Parameter_35327_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36081", - "op" : "Parameter", - "outputs" : ["Parameter_36081_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35329", - "op" : "Parameter", - "outputs" : ["Parameter_35329_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35330", - "op" : "Parameter", - "outputs" : ["Parameter_35330_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35685", - "op" : "Parameter", - "outputs" : ["Parameter_35685_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35333", - "op" : "Parameter", - "outputs" : ["Parameter_35333_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36095", - "op" : "Parameter", - "outputs" : ["Parameter_36095_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35334", - "op" : "Parameter", - "outputs" : ["Parameter_35334_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35335", - "op" : "Parameter", - "outputs" : ["Parameter_35335_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35336", - "op" : "Parameter", - "outputs" : ["Parameter_35336_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35337", - "op" : "Parameter", - "outputs" : ["Parameter_35337_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35338", - "op" : "Parameter", - "outputs" : ["Parameter_35338_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35339", - "op" : "Parameter", - "outputs" : ["Parameter_35339_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36082", - "op" : "Parameter", - "outputs" : ["Parameter_36082_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35340", - "op" : "Parameter", - "outputs" : ["Parameter_35340_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35341", - "op" : "Parameter", - "outputs" : ["Parameter_35341_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35343", - "op" : "Parameter", - "outputs" : ["Parameter_35343_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35346", - "op" : "Parameter", - "outputs" : ["Parameter_35346_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35348", - "op" : "Parameter", - "outputs" : ["Parameter_35348_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36121", - "op" : "Parameter", - "outputs" : ["Parameter_36121_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35349", - "op" : "Parameter", - "outputs" : ["Parameter_35349_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35949", - "op" : "Parameter", - "outputs" : ["Parameter_35949_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35350", - "op" : "Parameter", - "outputs" : ["Parameter_35350_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35352", - "op" : "Parameter", - "outputs" : ["Parameter_35352_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35541", - "op" : "Parameter", - "outputs" : ["Parameter_35541_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35353", - "op" : "Parameter", - "outputs" : ["Parameter_35353_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35354", - "op" : "Parameter", - "outputs" : ["Parameter_35354_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35355", - "op" : "Parameter", - "outputs" : ["Parameter_35355_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36074", - "op" : "Parameter", - "outputs" : ["Parameter_36074_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35356", - "op" : "Parameter", - "outputs" : ["Parameter_35356_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35358", - "op" : "Parameter", - "outputs" : ["Parameter_35358_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35359", - "op" : "Parameter", - "outputs" : ["Parameter_35359_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35360", - "op" : "Parameter", - "outputs" : ["Parameter_35360_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35916", - "op" : "Parameter", - "outputs" : ["Parameter_35916_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35362", - "op" : "Parameter", - "outputs" : ["Parameter_35362_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35363", - "op" : "Parameter", - "outputs" : ["Parameter_35363_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35364", - "op" : "Parameter", - "outputs" : ["Parameter_35364_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35365", - "op" : "Parameter", - "outputs" : ["Parameter_35365_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35366", - "op" : "Parameter", - "outputs" : ["Parameter_35366_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35368", - "op" : "Parameter", - "outputs" : ["Parameter_35368_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35369", - "op" : "Parameter", - "outputs" : ["Parameter_35369_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35370", - "op" : "Parameter", - "outputs" : ["Parameter_35370_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35371", - "op" : "Parameter", - "outputs" : ["Parameter_35371_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35372", - "op" : "Parameter", - "outputs" : ["Parameter_35372_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35373", - "op" : "Parameter", - "outputs" : ["Parameter_35373_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35374", - "op" : "Parameter", - "outputs" : ["Parameter_35374_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35375", - "op" : "Parameter", - "outputs" : ["Parameter_35375_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35376", - "op" : "Parameter", - "outputs" : ["Parameter_35376_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35506", - "op" : "Parameter", - "outputs" : ["Parameter_35506_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35377", - "op" : "Parameter", - "outputs" : ["Parameter_35377_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35379", - "op" : "Parameter", - "outputs" : ["Parameter_35379_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35384", - "op" : "Parameter", - "outputs" : ["Parameter_35384_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35588", - "op" : "Parameter", - "outputs" : ["Parameter_35588_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35385", - "op" : "Parameter", - "outputs" : ["Parameter_35385_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35386", - "op" : "Parameter", - "outputs" : ["Parameter_35386_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35580", - "op" : "Parameter", - "outputs" : ["Parameter_35580_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35390", - "op" : "Parameter", - "outputs" : ["Parameter_35390_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35391", - "op" : "Parameter", - "outputs" : ["Parameter_35391_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35392", - "op" : "Parameter", - "outputs" : ["Parameter_35392_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35398", - "op" : "Parameter", - "outputs" : ["Parameter_35398_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35840", - "op" : "Parameter", - "outputs" : ["Parameter_35840_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35399", - "op" : "Parameter", - "outputs" : ["Parameter_35399_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35401", - "op" : "Parameter", - "outputs" : ["Parameter_35401_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35402", - "op" : "Parameter", - "outputs" : ["Parameter_35402_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35403", - "op" : "Parameter", - "outputs" : ["Parameter_35403_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35404", - "op" : "Parameter", - "outputs" : ["Parameter_35404_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35406", - "op" : "Parameter", - "outputs" : ["Parameter_35406_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35407", - "op" : "Parameter", - "outputs" : ["Parameter_35407_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35408", - "op" : "Parameter", - "outputs" : ["Parameter_35408_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35410", - "op" : "Parameter", - "outputs" : ["Parameter_35410_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35411", - "op" : "Parameter", - "outputs" : ["Parameter_35411_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35412", - "op" : "Parameter", - "outputs" : ["Parameter_35412_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36138", - "op" : "Parameter", - "outputs" : ["Parameter_36138_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35413", - "op" : "Parameter", - "outputs" : ["Parameter_35413_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35414", - "op" : "Parameter", - "outputs" : ["Parameter_35414_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35415", - "op" : "Parameter", - "outputs" : ["Parameter_35415_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35416", - "op" : "Parameter", - "outputs" : ["Parameter_35416_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36037", - "op" : "Parameter", - "outputs" : ["Parameter_36037_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35417", - "op" : "Parameter", - "outputs" : ["Parameter_35417_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35418", - "op" : "Parameter", - "outputs" : ["Parameter_35418_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35420", - "op" : "Parameter", - "outputs" : ["Parameter_35420_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35421", - "op" : "Parameter", - "outputs" : ["Parameter_35421_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35422", - "op" : "Parameter", - "outputs" : ["Parameter_35422_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35425", - "op" : "Parameter", - "outputs" : ["Parameter_35425_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35551", - "op" : "Parameter", - "outputs" : ["Parameter_35551_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35426", - "op" : "Parameter", - "outputs" : ["Parameter_35426_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35669", - "op" : "Parameter", - "outputs" : ["Parameter_35669_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35427", - "op" : "Parameter", - "outputs" : ["Parameter_35427_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35429", - "op" : "Parameter", - "outputs" : ["Parameter_35429_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35430", - "op" : "Parameter", - "outputs" : ["Parameter_35430_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35431", - "op" : "Parameter", - "outputs" : ["Parameter_35431_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35432", - "op" : "Parameter", - "outputs" : ["Parameter_35432_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35434", - "op" : "Parameter", - "outputs" : ["Parameter_35434_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35435", - "op" : "Parameter", - "outputs" : ["Parameter_35435_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35436", - "op" : "Parameter", - "outputs" : ["Parameter_35436_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35437", - "op" : "Parameter", - "outputs" : ["Parameter_35437_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35438", - "op" : "Parameter", - "outputs" : ["Parameter_35438_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35440", - "op" : "Parameter", - "outputs" : ["Parameter_35440_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35441", - "op" : "Parameter", - "outputs" : ["Parameter_35441_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35442", - "op" : "Parameter", - "outputs" : ["Parameter_35442_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35446", - "op" : "Parameter", - "outputs" : ["Parameter_35446_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35449", - "op" : "Parameter", - "outputs" : ["Parameter_35449_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35998", - "op" : "Parameter", - "outputs" : ["Parameter_35998_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36147", - "op" : "Parameter", - "outputs" : ["Parameter_36147_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35450", - "op" : "Parameter", - "outputs" : ["Parameter_35450_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35731", - "op" : "Parameter", - "outputs" : ["Parameter_35731_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35452", - "op" : "Parameter", - "outputs" : ["Parameter_35452_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35453", - "op" : "Parameter", - "outputs" : ["Parameter_35453_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35454", - "op" : "Parameter", - "outputs" : ["Parameter_35454_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35455", - "op" : "Parameter", - "outputs" : ["Parameter_35455_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35456", - "op" : "Parameter", - "outputs" : ["Parameter_35456_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35457", - "op" : "Parameter", - "outputs" : ["Parameter_35457_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35460", - "op" : "Parameter", - "outputs" : ["Parameter_35460_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35461", - "op" : "Parameter", - "outputs" : ["Parameter_35461_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35463", - "op" : "Parameter", - "outputs" : ["Parameter_35463_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35464", - "op" : "Parameter", - "outputs" : ["Parameter_35464_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36099", - "op" : "Parameter", - "outputs" : ["Parameter_36099_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35465", - "op" : "Parameter", - "outputs" : ["Parameter_35465_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35466", - "op" : "Parameter", - "outputs" : ["Parameter_35466_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36169", - "op" : "Parameter", - "outputs" : ["Parameter_36169_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35467", - "op" : "Parameter", - "outputs" : ["Parameter_35467_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35468", - "op" : "Parameter", - "outputs" : ["Parameter_35468_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35471", - "op" : "Parameter", - "outputs" : ["Parameter_35471_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35472", - "op" : "Parameter", - "outputs" : ["Parameter_35472_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35553", - "op" : "Parameter", - "outputs" : ["Parameter_35553_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35473", - "op" : "Parameter", - "outputs" : ["Parameter_35473_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35476", - "op" : "Parameter", - "outputs" : ["Parameter_35476_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35486", - "op" : "Parameter", - "outputs" : ["Parameter_35486_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35477", - "op" : "Parameter", - "outputs" : ["Parameter_35477_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35479", - "op" : "Parameter", - "outputs" : ["Parameter_35479_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35480", - "op" : "Parameter", - "outputs" : ["Parameter_35480_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35483", - "op" : "Parameter", - "outputs" : ["Parameter_35483_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35484", - "op" : "Parameter", - "outputs" : ["Parameter_35484_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35485", - "op" : "Parameter", - "outputs" : ["Parameter_35485_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35487", - "op" : "Parameter", - "outputs" : ["Parameter_35487_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35488", - "op" : "Parameter", - "outputs" : ["Parameter_35488_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35489", - "op" : "Parameter", - "outputs" : ["Parameter_35489_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35490", - "op" : "Parameter", - "outputs" : ["Parameter_35490_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35491", - "op" : "Parameter", - "outputs" : ["Parameter_35491_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35520", - "op" : "Parameter", - "outputs" : ["Parameter_35520_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35492", - "op" : "Parameter", - "outputs" : ["Parameter_35492_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35994", - "op" : "Parameter", - "outputs" : ["Parameter_35994_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35494", - "op" : "Parameter", - "outputs" : ["Parameter_35494_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35736", - "op" : "Parameter", - "outputs" : ["Parameter_35736_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35496", - "op" : "Parameter", - "outputs" : ["Parameter_35496_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35499", - "op" : "Parameter", - "outputs" : ["Parameter_35499_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35626", - "op" : "Parameter", - "outputs" : ["Parameter_35626_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35500", - "op" : "Parameter", - "outputs" : ["Parameter_35500_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35502", - "op" : "Parameter", - "outputs" : ["Parameter_35502_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35504", - "op" : "Parameter", - "outputs" : ["Parameter_35504_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35505", - "op" : "Parameter", - "outputs" : ["Parameter_35505_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35507", - "op" : "Parameter", - "outputs" : ["Parameter_35507_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35509", - "op" : "Parameter", - "outputs" : ["Parameter_35509_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35510", - "op" : "Parameter", - "outputs" : ["Parameter_35510_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36006", - "op" : "Parameter", - "outputs" : ["Parameter_36006_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35512", - "op" : "Parameter", - "outputs" : ["Parameter_35512_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35513", - "op" : "Parameter", - "outputs" : ["Parameter_35513_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35528", - "op" : "Parameter", - "outputs" : ["Parameter_35528_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35514", - "op" : "Parameter", - "outputs" : ["Parameter_35514_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35515", - "op" : "Parameter", - "outputs" : ["Parameter_35515_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35516", - "op" : "Parameter", - "outputs" : ["Parameter_35516_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35517", - "op" : "Parameter", - "outputs" : ["Parameter_35517_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35518", - "op" : "Parameter", - "outputs" : ["Parameter_35518_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35521", - "op" : "Parameter", - "outputs" : ["Parameter_35521_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35522", - "op" : "Parameter", - "outputs" : ["Parameter_35522_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35523", - "op" : "Parameter", - "outputs" : ["Parameter_35523_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35524", - "op" : "Parameter", - "outputs" : ["Parameter_35524_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35526", - "op" : "Parameter", - "outputs" : ["Parameter_35526_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35529", - "op" : "Parameter", - "outputs" : ["Parameter_35529_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35585", - "op" : "Parameter", - "outputs" : ["Parameter_35585_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35531", - "op" : "Parameter", - "outputs" : ["Parameter_35531_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35532", - "op" : "Parameter", - "outputs" : ["Parameter_35532_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35533", - "op" : "Parameter", - "outputs" : ["Parameter_35533_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35534", - "op" : "Parameter", - "outputs" : ["Parameter_35534_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35593", - "op" : "Parameter", - "outputs" : ["Parameter_35593_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35536", - "op" : "Parameter", - "outputs" : ["Parameter_35536_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35537", - "op" : "Parameter", - "outputs" : ["Parameter_35537_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35814", - "op" : "Parameter", - "outputs" : ["Parameter_35814_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35538", - "op" : "Parameter", - "outputs" : ["Parameter_35538_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35539", - "op" : "Parameter", - "outputs" : ["Parameter_35539_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35543", - "op" : "Parameter", - "outputs" : ["Parameter_35543_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35545", - "op" : "Parameter", - "outputs" : ["Parameter_35545_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35559", - "op" : "Parameter", - "outputs" : ["Parameter_35559_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35547", - "op" : "Parameter", - "outputs" : ["Parameter_35547_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35548", - "op" : "Parameter", - "outputs" : ["Parameter_35548_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35767", - "op" : "Parameter", - "outputs" : ["Parameter_35767_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35549", - "op" : "Parameter", - "outputs" : ["Parameter_35549_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35550", - "op" : "Parameter", - "outputs" : ["Parameter_35550_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35552", - "op" : "Parameter", - "outputs" : ["Parameter_35552_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35554", - "op" : "Parameter", - "outputs" : ["Parameter_35554_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35555", - "op" : "Parameter", - "outputs" : ["Parameter_35555_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35556", - "op" : "Parameter", - "outputs" : ["Parameter_35556_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35558", - "op" : "Parameter", - "outputs" : ["Parameter_35558_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35646", - "op" : "Parameter", - "outputs" : ["Parameter_35646_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35561", - "op" : "Parameter", - "outputs" : ["Parameter_35561_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35563", - "op" : "Parameter", - "outputs" : ["Parameter_35563_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35583", - "op" : "Parameter", - "outputs" : ["Parameter_35583_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35564", - "op" : "Parameter", - "outputs" : ["Parameter_35564_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35566", - "op" : "Parameter", - "outputs" : ["Parameter_35566_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35567", - "op" : "Parameter", - "outputs" : ["Parameter_35567_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35570", - "op" : "Parameter", - "outputs" : ["Parameter_35570_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36149", - "op" : "Parameter", - "outputs" : ["Parameter_36149_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35571", - "op" : "Parameter", - "outputs" : ["Parameter_35571_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35572", - "op" : "Parameter", - "outputs" : ["Parameter_35572_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35573", - "op" : "Parameter", - "outputs" : ["Parameter_35573_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35575", - "op" : "Parameter", - "outputs" : ["Parameter_35575_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36008", - "op" : "Parameter", - "outputs" : ["Parameter_36008_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35576", - "op" : "Parameter", - "outputs" : ["Parameter_35576_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35577", - "op" : "Parameter", - "outputs" : ["Parameter_35577_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36021", - "op" : "Parameter", - "outputs" : ["Parameter_36021_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35579", - "op" : "Parameter", - "outputs" : ["Parameter_35579_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35775", - "op" : "Parameter", - "outputs" : ["Parameter_35775_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35794", - "op" : "Parameter", - "outputs" : ["Parameter_35794_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35581", - "op" : "Parameter", - "outputs" : ["Parameter_35581_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35586", - "op" : "Parameter", - "outputs" : ["Parameter_35586_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36085", - "op" : "Parameter", - "outputs" : ["Parameter_36085_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35587", - "op" : "Parameter", - "outputs" : ["Parameter_35587_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35589", - "op" : "Parameter", - "outputs" : ["Parameter_35589_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35591", - "op" : "Parameter", - "outputs" : ["Parameter_35591_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35596", - "op" : "Parameter", - "outputs" : ["Parameter_35596_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35598", - "op" : "Parameter", - "outputs" : ["Parameter_35598_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35602", - "op" : "Parameter", - "outputs" : ["Parameter_35602_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35871", - "op" : "Parameter", - "outputs" : ["Parameter_35871_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35604", - "op" : "Parameter", - "outputs" : ["Parameter_35604_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35609", - "op" : "Parameter", - "outputs" : ["Parameter_35609_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35611", - "op" : "Parameter", - "outputs" : ["Parameter_35611_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35927", - "op" : "Parameter", - "outputs" : ["Parameter_35927_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35613", - "op" : "Parameter", - "outputs" : ["Parameter_35613_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35614", - "op" : "Parameter", - "outputs" : ["Parameter_35614_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35647", - "op" : "Parameter", - "outputs" : ["Parameter_35647_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35616", - "op" : "Parameter", - "outputs" : ["Parameter_35616_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35620", - "op" : "Parameter", - "outputs" : ["Parameter_35620_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35695", - "op" : "Parameter", - "outputs" : ["Parameter_35695_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35621", - "op" : "Parameter", - "outputs" : ["Parameter_35621_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35627", - "op" : "Parameter", - "outputs" : ["Parameter_35627_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35628", - "op" : "Parameter", - "outputs" : ["Parameter_35628_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35629", - "op" : "Parameter", - "outputs" : ["Parameter_35629_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35757", - "op" : "Parameter", - "outputs" : ["Parameter_35757_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35630", - "op" : "Parameter", - "outputs" : ["Parameter_35630_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35631", - "op" : "Parameter", - "outputs" : ["Parameter_35631_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35633", - "op" : "Parameter", - "outputs" : ["Parameter_35633_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35634", - "op" : "Parameter", - "outputs" : ["Parameter_35634_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35636", - "op" : "Parameter", - "outputs" : ["Parameter_35636_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35638", - "op" : "Parameter", - "outputs" : ["Parameter_35638_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35759", - "op" : "Parameter", - "outputs" : ["Parameter_35759_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35639", - "op" : "Parameter", - "outputs" : ["Parameter_35639_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35643", - "op" : "Parameter", - "outputs" : ["Parameter_35643_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35644", - "op" : "Parameter", - "outputs" : ["Parameter_35644_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35648", - "op" : "Parameter", - "outputs" : ["Parameter_35648_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35650", - "op" : "Parameter", - "outputs" : ["Parameter_35650_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35652", - "op" : "Parameter", - "outputs" : ["Parameter_35652_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35653", - "op" : "Parameter", - "outputs" : ["Parameter_35653_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35656", - "op" : "Parameter", - "outputs" : ["Parameter_35656_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35658", - "op" : "Parameter", - "outputs" : ["Parameter_35658_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35660", - "op" : "Parameter", - "outputs" : ["Parameter_35660_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35661", - "op" : "Parameter", - "outputs" : ["Parameter_35661_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35666", - "op" : "Parameter", - "outputs" : ["Parameter_35666_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35667", - "op" : "Parameter", - "outputs" : ["Parameter_35667_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35833", - "op" : "Parameter", - "outputs" : ["Parameter_35833_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35668", - "op" : "Parameter", - "outputs" : ["Parameter_35668_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35670", - "op" : "Parameter", - "outputs" : ["Parameter_35670_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35671", - "op" : "Parameter", - "outputs" : ["Parameter_35671_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35837", - "op" : "Parameter", - "outputs" : ["Parameter_35837_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35678", - "op" : "Parameter", - "outputs" : ["Parameter_35678_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35682", - "op" : "Parameter", - "outputs" : ["Parameter_35682_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35686", - "op" : "Parameter", - "outputs" : ["Parameter_35686_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35689", - "op" : "Parameter", - "outputs" : ["Parameter_35689_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35690", - "op" : "Parameter", - "outputs" : ["Parameter_35690_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35692", - "op" : "Parameter", - "outputs" : ["Parameter_35692_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35694", - "op" : "Parameter", - "outputs" : ["Parameter_35694_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35696", - "op" : "Parameter", - "outputs" : ["Parameter_35696_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35698", - "op" : "Parameter", - "outputs" : ["Parameter_35698_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35699", - "op" : "Parameter", - "outputs" : ["Parameter_35699_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35700", - "op" : "Parameter", - "outputs" : ["Parameter_35700_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35701", - "op" : "Parameter", - "outputs" : ["Parameter_35701_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35702", - "op" : "Parameter", - "outputs" : ["Parameter_35702_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35704", - "op" : "Parameter", - "outputs" : ["Parameter_35704_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35705", - "op" : "Parameter", - "outputs" : ["Parameter_35705_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35707", - "op" : "Parameter", - "outputs" : ["Parameter_35707_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35708", - "op" : "Parameter", - "outputs" : ["Parameter_35708_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35709", - "op" : "Parameter", - "outputs" : ["Parameter_35709_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35711", - "op" : "Parameter", - "outputs" : ["Parameter_35711_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35712", - "op" : "Parameter", - "outputs" : ["Parameter_35712_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35714", - "op" : "Parameter", - "outputs" : ["Parameter_35714_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35715", - "op" : "Parameter", - "outputs" : ["Parameter_35715_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35716", - "op" : "Parameter", - "outputs" : ["Parameter_35716_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35722", - "op" : "Parameter", - "outputs" : ["Parameter_35722_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35728", - "op" : "Parameter", - "outputs" : ["Parameter_35728_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35729", - "op" : "Parameter", - "outputs" : ["Parameter_35729_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35730", - "op" : "Parameter", - "outputs" : ["Parameter_35730_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35732", - "op" : "Parameter", - "outputs" : ["Parameter_35732_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35733", - "op" : "Parameter", - "outputs" : ["Parameter_35733_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35734", - "op" : "Parameter", - "outputs" : ["Parameter_35734_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35737", - "op" : "Parameter", - "outputs" : ["Parameter_35737_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35914", - "op" : "Parameter", - "outputs" : ["Parameter_35914_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35738", - "op" : "Parameter", - "outputs" : ["Parameter_35738_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35740", - "op" : "Parameter", - "outputs" : ["Parameter_35740_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35743", - "op" : "Parameter", - "outputs" : ["Parameter_35743_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35744", - "op" : "Parameter", - "outputs" : ["Parameter_35744_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35745", - "op" : "Parameter", - "outputs" : ["Parameter_35745_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35747", - "op" : "Parameter", - "outputs" : ["Parameter_35747_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35748", - "op" : "Parameter", - "outputs" : ["Parameter_35748_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35749", - "op" : "Parameter", - "outputs" : ["Parameter_35749_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35751", - "op" : "Parameter", - "outputs" : ["Parameter_35751_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35753", - "op" : "Parameter", - "outputs" : ["Parameter_35753_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35754", - "op" : "Parameter", - "outputs" : ["Parameter_35754_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35755", - "op" : "Parameter", - "outputs" : ["Parameter_35755_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35756", - "op" : "Parameter", - "outputs" : ["Parameter_35756_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35760", - "op" : "Parameter", - "outputs" : ["Parameter_35760_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35763", - "op" : "Parameter", - "outputs" : ["Parameter_35763_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35765", - "op" : "Parameter", - "outputs" : ["Parameter_35765_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35766", - "op" : "Parameter", - "outputs" : ["Parameter_35766_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36004", - "op" : "Parameter", - "outputs" : ["Parameter_36004_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36130", - "op" : "Parameter", - "outputs" : ["Parameter_36130_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35772", - "op" : "Parameter", - "outputs" : ["Parameter_35772_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35773", - "op" : "Parameter", - "outputs" : ["Parameter_35773_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35776", - "op" : "Parameter", - "outputs" : ["Parameter_35776_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35777", - "op" : "Parameter", - "outputs" : ["Parameter_35777_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35780", - "op" : "Parameter", - "outputs" : ["Parameter_35780_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35781", - "op" : "Parameter", - "outputs" : ["Parameter_35781_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35784", - "op" : "Parameter", - "outputs" : ["Parameter_35784_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35785", - "op" : "Parameter", - "outputs" : ["Parameter_35785_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35786", - "op" : "Parameter", - "outputs" : ["Parameter_35786_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35787", - "op" : "Parameter", - "outputs" : ["Parameter_35787_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35788", - "op" : "Parameter", - "outputs" : ["Parameter_35788_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35789", - "op" : "Parameter", - "outputs" : ["Parameter_35789_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35790", - "op" : "Parameter", - "outputs" : ["Parameter_35790_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35935", - "op" : "Parameter", - "outputs" : ["Parameter_35935_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35791", - "op" : "Parameter", - "outputs" : ["Parameter_35791_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35792", - "op" : "Parameter", - "outputs" : ["Parameter_35792_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35793", - "op" : "Parameter", - "outputs" : ["Parameter_35793_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35950", - "op" : "Parameter", - "outputs" : ["Parameter_35950_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35795", - "op" : "Parameter", - "outputs" : ["Parameter_35795_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35797", - "op" : "Parameter", - "outputs" : ["Parameter_35797_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35798", - "op" : "Parameter", - "outputs" : ["Parameter_35798_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35969", - "op" : "Parameter", - "outputs" : ["Parameter_35969_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35799", - "op" : "Parameter", - "outputs" : ["Parameter_35799_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35806", - "op" : "Parameter", - "outputs" : ["Parameter_35806_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35809", - "op" : "Parameter", - "outputs" : ["Parameter_35809_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35810", - "op" : "Parameter", - "outputs" : ["Parameter_35810_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35813", - "op" : "Parameter", - "outputs" : ["Parameter_35813_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35815", - "op" : "Parameter", - "outputs" : ["Parameter_35815_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36107", - "op" : "Parameter", - "outputs" : ["Parameter_36107_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35816", - "op" : "Parameter", - "outputs" : ["Parameter_35816_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35818", - "op" : "Parameter", - "outputs" : ["Parameter_35818_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35911", - "op" : "Parameter", - "outputs" : ["Parameter_35911_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35820", - "op" : "Parameter", - "outputs" : ["Parameter_35820_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35821", - "op" : "Parameter", - "outputs" : ["Parameter_35821_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35824", - "op" : "Parameter", - "outputs" : ["Parameter_35824_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35825", - "op" : "Parameter", - "outputs" : ["Parameter_35825_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35828", - "op" : "Parameter", - "outputs" : ["Parameter_35828_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35829", - "op" : "Parameter", - "outputs" : ["Parameter_35829_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35831", - "op" : "Parameter", - "outputs" : ["Parameter_35831_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35832", - "op" : "Parameter", - "outputs" : ["Parameter_35832_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35838", - "op" : "Parameter", - "outputs" : ["Parameter_35838_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35839", - "op" : "Parameter", - "outputs" : ["Parameter_35839_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35848", - "op" : "Parameter", - "outputs" : ["Parameter_35848_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35849", - "op" : "Parameter", - "outputs" : ["Parameter_35849_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35850", - "op" : "Parameter", - "outputs" : ["Parameter_35850_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35851", - "op" : "Parameter", - "outputs" : ["Parameter_35851_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36019", - "op" : "Parameter", - "outputs" : ["Parameter_36019_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36184", - "op" : "Parameter", - "outputs" : ["Parameter_36184_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35853", - "op" : "Parameter", - "outputs" : ["Parameter_35853_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35965", - "op" : "Parameter", - "outputs" : ["Parameter_35965_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35855", - "op" : "Parameter", - "outputs" : ["Parameter_35855_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36114", - "op" : "Parameter", - "outputs" : ["Parameter_36114_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36185", - "op" : "Parameter", - "outputs" : ["Parameter_36185_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35857", - "op" : "Parameter", - "outputs" : ["Parameter_35857_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35858", - "op" : "Parameter", - "outputs" : ["Parameter_35858_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35859", - "op" : "Parameter", - "outputs" : ["Parameter_35859_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35860", - "op" : "Parameter", - "outputs" : ["Parameter_35860_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35863", - "op" : "Parameter", - "outputs" : ["Parameter_35863_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35865", - "op" : "Parameter", - "outputs" : ["Parameter_35865_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35866", - "op" : "Parameter", - "outputs" : ["Parameter_35866_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35867", - "op" : "Parameter", - "outputs" : ["Parameter_35867_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35872", - "op" : "Parameter", - "outputs" : ["Parameter_35872_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35880", - "op" : "Parameter", - "outputs" : ["Parameter_35880_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35881", - "op" : "Parameter", - "outputs" : ["Parameter_35881_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35882", - "op" : "Parameter", - "outputs" : ["Parameter_35882_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35884", - "op" : "Parameter", - "outputs" : ["Parameter_35884_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35886", - "op" : "Parameter", - "outputs" : ["Parameter_35886_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35888", - "op" : "Parameter", - "outputs" : ["Parameter_35888_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36158", - "op" : "Parameter", - "outputs" : ["Parameter_36158_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35892", - "op" : "Parameter", - "outputs" : ["Parameter_35892_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35896", - "op" : "Parameter", - "outputs" : ["Parameter_35896_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35900", - "op" : "Parameter", - "outputs" : ["Parameter_35900_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35901", - "op" : "Parameter", - "outputs" : ["Parameter_35901_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35902", - "op" : "Parameter", - "outputs" : ["Parameter_35902_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35906", - "op" : "Parameter", - "outputs" : ["Parameter_35906_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35909", - "op" : "Parameter", - "outputs" : ["Parameter_35909_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35910", - "op" : "Parameter", - "outputs" : ["Parameter_35910_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35912", - "op" : "Parameter", - "outputs" : ["Parameter_35912_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35915", - "op" : "Parameter", - "outputs" : ["Parameter_35915_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35917", - "op" : "Parameter", - "outputs" : ["Parameter_35917_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35921", - "op" : "Parameter", - "outputs" : ["Parameter_35921_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35925", - "op" : "Parameter", - "outputs" : ["Parameter_35925_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35926", - "op" : "Parameter", - "outputs" : ["Parameter_35926_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35928", - "op" : "Parameter", - "outputs" : ["Parameter_35928_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35981", - "op" : "Parameter", - "outputs" : ["Parameter_35981_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35929", - "op" : "Parameter", - "outputs" : ["Parameter_35929_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35930", - "op" : "Parameter", - "outputs" : ["Parameter_35930_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35932", - "op" : "Parameter", - "outputs" : ["Parameter_35932_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35934", - "op" : "Parameter", - "outputs" : ["Parameter_35934_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35936", - "op" : "Parameter", - "outputs" : ["Parameter_35936_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35939", - "op" : "Parameter", - "outputs" : ["Parameter_35939_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35945", - "op" : "Parameter", - "outputs" : ["Parameter_35945_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35948", - "op" : "Parameter", - "outputs" : ["Parameter_35948_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35951", - "op" : "Parameter", - "outputs" : ["Parameter_35951_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35953", - "op" : "Parameter", - "outputs" : ["Parameter_35953_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35955", - "op" : "Parameter", - "outputs" : ["Parameter_35955_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35956", - "op" : "Parameter", - "outputs" : ["Parameter_35956_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35957", - "op" : "Parameter", - "outputs" : ["Parameter_35957_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35958", - "op" : "Parameter", - "outputs" : ["Parameter_35958_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35961", - "op" : "Parameter", - "outputs" : ["Parameter_35961_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35964", - "op" : "Parameter", - "outputs" : ["Parameter_35964_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35968", - "op" : "Parameter", - "outputs" : ["Parameter_35968_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35971", - "op" : "Parameter", - "outputs" : ["Parameter_35971_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35972", - "op" : "Parameter", - "outputs" : ["Parameter_35972_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35973", - "op" : "Parameter", - "outputs" : ["Parameter_35973_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35975", - "op" : "Parameter", - "outputs" : ["Parameter_35975_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35978", - "op" : "Parameter", - "outputs" : ["Parameter_35978_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35979", - "op" : "Parameter", - "outputs" : ["Parameter_35979_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35980", - "op" : "Parameter", - "outputs" : ["Parameter_35980_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35983", - "op" : "Parameter", - "outputs" : ["Parameter_35983_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35984", - "op" : "Parameter", - "outputs" : ["Parameter_35984_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35985", - "op" : "Parameter", - "outputs" : ["Parameter_35985_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35992", - "op" : "Parameter", - "outputs" : ["Parameter_35992_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35993", - "op" : "Parameter", - "outputs" : ["Parameter_35993_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35995", - "op" : "Parameter", - "outputs" : ["Parameter_35995_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35996", - "op" : "Parameter", - "outputs" : ["Parameter_35996_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36039", - "op" : "Parameter", - "outputs" : ["Parameter_36039_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35999", - "op" : "Parameter", - "outputs" : ["Parameter_35999_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36001", - "op" : "Parameter", - "outputs" : ["Parameter_36001_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36002", - "op" : "Parameter", - "outputs" : ["Parameter_36002_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36005", - "op" : "Parameter", - "outputs" : ["Parameter_36005_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36009", - "op" : "Parameter", - "outputs" : ["Parameter_36009_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36012", - "op" : "Parameter", - "outputs" : ["Parameter_36012_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36179", - "op" : "Parameter", - "outputs" : ["Parameter_36179_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36013", - "op" : "Parameter", - "outputs" : ["Parameter_36013_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36014", - "op" : "Parameter", - "outputs" : ["Parameter_36014_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36017", - "op" : "Parameter", - "outputs" : ["Parameter_36017_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36022", - "op" : "Parameter", - "outputs" : ["Parameter_36022_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36023", - "op" : "Parameter", - "outputs" : ["Parameter_36023_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36028", - "op" : "Parameter", - "outputs" : ["Parameter_36028_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36029", - "op" : "Parameter", - "outputs" : ["Parameter_36029_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36030", - "op" : "Parameter", - "outputs" : ["Parameter_36030_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36032", - "op" : "Parameter", - "outputs" : ["Parameter_36032_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36033", - "op" : "Parameter", - "outputs" : ["Parameter_36033_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36034", - "op" : "Parameter", - "outputs" : ["Parameter_36034_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36038", - "op" : "Parameter", - "outputs" : ["Parameter_36038_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36041", - "op" : "Parameter", - "outputs" : ["Parameter_36041_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36042", - "op" : "Parameter", - "outputs" : ["Parameter_36042_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36159", - "op" : "Parameter", - "outputs" : ["Parameter_36159_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36044", - "op" : "Parameter", - "outputs" : ["Parameter_36044_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36045", - "op" : "Parameter", - "outputs" : ["Parameter_36045_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36046", - "op" : "Parameter", - "outputs" : ["Parameter_36046_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36047", - "op" : "Parameter", - "outputs" : ["Parameter_36047_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36048", - "op" : "Parameter", - "outputs" : ["Parameter_36048_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36050", - "op" : "Parameter", - "outputs" : ["Parameter_36050_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36052", - "op" : "Parameter", - "outputs" : ["Parameter_36052_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36053", - "op" : "Parameter", - "outputs" : ["Parameter_36053_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36054", - "op" : "Parameter", - "outputs" : ["Parameter_36054_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36055", - "op" : "Parameter", - "outputs" : ["Parameter_36055_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36056", - "op" : "Parameter", - "outputs" : ["Parameter_36056_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36057", - "op" : "Parameter", - "outputs" : ["Parameter_36057_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36058", - "op" : "Parameter", - "outputs" : ["Parameter_36058_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36059", - "op" : "Parameter", - "outputs" : ["Parameter_36059_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36060", - "op" : "Parameter", - "outputs" : ["Parameter_36060_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36061", - "op" : "Parameter", - "outputs" : ["Parameter_36061_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36062", - "op" : "Parameter", - "outputs" : ["Parameter_36062_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36063", - "op" : "Parameter", - "outputs" : ["Parameter_36063_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36065", - "op" : "Parameter", - "outputs" : ["Parameter_36065_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36067", - "op" : "Parameter", - "outputs" : ["Parameter_36067_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36068", - "op" : "Parameter", - "outputs" : ["Parameter_36068_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36071", - "op" : "Parameter", - "outputs" : ["Parameter_36071_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36072", - "op" : "Parameter", - "outputs" : ["Parameter_36072_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36073", - "op" : "Parameter", - "outputs" : ["Parameter_36073_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36075", - "op" : "Parameter", - "outputs" : ["Parameter_36075_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36077", - "op" : "Parameter", - "outputs" : ["Parameter_36077_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36078", - "op" : "Parameter", - "outputs" : ["Parameter_36078_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36079", - "op" : "Parameter", - "outputs" : ["Parameter_36079_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36080", - "op" : "Parameter", - "outputs" : ["Parameter_36080_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36083", - "op" : "Parameter", - "outputs" : ["Parameter_36083_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36084", - "op" : "Parameter", - "outputs" : ["Parameter_36084_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36087", - "op" : "Parameter", - "outputs" : ["Parameter_36087_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36088", - "op" : "Parameter", - "outputs" : ["Parameter_36088_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36097", - "op" : "Parameter", - "outputs" : ["Parameter_36097_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36098", - "op" : "Parameter", - "outputs" : ["Parameter_36098_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36101", - "op" : "Parameter", - "outputs" : ["Parameter_36101_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36102", - "op" : "Parameter", - "outputs" : ["Parameter_36102_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36103", - "op" : "Parameter", - "outputs" : ["Parameter_36103_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36106", - "op" : "Parameter", - "outputs" : ["Parameter_36106_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36108", - "op" : "Parameter", - "outputs" : ["Parameter_36108_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36109", - "op" : "Parameter", - "outputs" : ["Parameter_36109_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36110", - "op" : "Parameter", - "outputs" : ["Parameter_36110_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36112", - "op" : "Parameter", - "outputs" : ["Parameter_36112_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36118", - "op" : "Parameter", - "outputs" : ["Parameter_36118_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36119", - "op" : "Parameter", - "outputs" : ["Parameter_36119_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36120", - "op" : "Parameter", - "outputs" : ["Parameter_36120_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36122", - "op" : "Parameter", - "outputs" : ["Parameter_36122_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36123", - "op" : "Parameter", - "outputs" : ["Parameter_36123_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36124", - "op" : "Parameter", - "outputs" : ["Parameter_36124_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36125", - "op" : "Parameter", - "outputs" : ["Parameter_36125_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36126", - "op" : "Parameter", - "outputs" : ["Parameter_36126_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36127", - "op" : "Parameter", - "outputs" : ["Parameter_36127_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36128", - "op" : "Parameter", - "outputs" : ["Parameter_36128_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36129", - "op" : "Parameter", - "outputs" : ["Parameter_36129_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36132", - "op" : "Parameter", - "outputs" : ["Parameter_36132_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36133", - "op" : "Parameter", - "outputs" : ["Parameter_36133_0"], - "shape" : [ 256, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36134", - "op" : "Parameter", - "outputs" : ["Parameter_36134_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36135", - "op" : "Parameter", - "outputs" : ["Parameter_36135_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36137", - "op" : "Parameter", - "outputs" : ["Parameter_36137_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36139", - "op" : "Parameter", - "outputs" : ["Parameter_36139_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36141", - "op" : "Parameter", - "outputs" : ["Parameter_36141_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36142", - "op" : "Parameter", - "outputs" : ["Parameter_36142_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36145", - "op" : "Parameter", - "outputs" : ["Parameter_36145_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36148", - "op" : "Parameter", - "outputs" : ["Parameter_36148_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36151", - "op" : "Parameter", - "outputs" : ["Parameter_36151_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36152", - "op" : "Parameter", - "outputs" : ["Parameter_36152_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36153", - "op" : "Parameter", - "outputs" : ["Parameter_36153_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36154", - "op" : "Parameter", - "outputs" : ["Parameter_36154_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36156", - "op" : "Parameter", - "outputs" : ["Parameter_36156_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36160", - "op" : "Parameter", - "outputs" : ["Parameter_36160_0"], - "shape" : [ 64, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36163", - "op" : "Parameter", - "outputs" : ["Parameter_36163_0"], - "shape" : [ 1, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36165", - "op" : "Parameter", - "outputs" : ["Parameter_36165_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36168", - "op" : "Parameter", - "outputs" : ["Parameter_36168_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36170", - "op" : "Parameter", - "outputs" : ["Parameter_36170_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36171", - "op" : "Parameter", - "outputs" : ["Parameter_36171_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36172", - "op" : "Parameter", - "outputs" : ["Parameter_36172_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36173", - "op" : "Parameter", - "outputs" : ["Parameter_36173_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36175", - "op" : "Parameter", - "outputs" : ["Parameter_36175_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36177", - "op" : "Parameter", - "outputs" : ["Parameter_36177_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36180", - "op" : "Parameter", - "outputs" : ["Parameter_36180_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36183", - "op" : "Parameter", - "outputs" : ["Parameter_36183_0"], - "shape" : [ 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36245", - "op" : "Parameter", - "outputs" : ["Parameter_36245_0"], - "shape" : [ 60, 64, 512 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36246", - "op" : "Constant", - "outputs" : ["Constant_36246_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36247", - "op" : "Constant", - "outputs" : ["Constant_36247_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36248", - "op" : "Constant", - "outputs" : ["Constant_36248_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36249", - "op" : "Constant", - "outputs" : ["Constant_36249_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36250", - "op" : "Constant", - "outputs" : ["Constant_36250_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36251", - "op" : "Constant", - "outputs" : ["Constant_36251_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36252", - "op" : "Constant", - "outputs" : ["Constant_36252_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36253", - "op" : "Constant", - "outputs" : ["Constant_36253_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36254", - "op" : "Constant", - "outputs" : ["Constant_36254_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36255", - "op" : "Constant", - "outputs" : ["Constant_36255_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36256", - "op" : "Constant", - "outputs" : ["Constant_36256_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36257", - "op" : "Constant", - "outputs" : ["Constant_36257_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36258", - "op" : "Constant", - "outputs" : ["Constant_36258_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36259", - "op" : "Constant", - "outputs" : ["Constant_36259_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36260", - "op" : "Constant", - "outputs" : ["Constant_36260_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36261", - "op" : "Constant", - "outputs" : ["Constant_36261_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36262", - "op" : "Constant", - "outputs" : ["Constant_36262_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36263", - "op" : "Constant", - "outputs" : ["Constant_36263_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36264", - "op" : "Constant", - "outputs" : ["Constant_36264_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36265", - "op" : "Constant", - "outputs" : ["Constant_36265_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36266", - "op" : "Constant", - "outputs" : ["Constant_36266_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36267", - "op" : "Constant", - "outputs" : ["Constant_36267_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36268", - "op" : "Constant", - "outputs" : ["Constant_36268_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36269", - "op" : "Constant", - "outputs" : ["Constant_36269_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36270", - "op" : "Constant", - "outputs" : ["Constant_36270_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36271", - "op" : "Constant", - "outputs" : ["Constant_36271_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36272", - "op" : "Constant", - "outputs" : ["Constant_36272_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36273", - "op" : "Constant", - "outputs" : ["Constant_36273_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36274", - "op" : "Constant", - "outputs" : ["Constant_36274_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36275", - "op" : "Constant", - "outputs" : ["Constant_36275_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36276", - "op" : "Constant", - "outputs" : ["Constant_36276_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36277", - "op" : "Constant", - "outputs" : ["Constant_36277_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36278", - "op" : "Constant", - "outputs" : ["Constant_36278_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36279", - "op" : "Constant", - "outputs" : ["Constant_36279_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36280", - "op" : "Constant", - "outputs" : ["Constant_36280_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36281", - "op" : "Constant", - "outputs" : ["Constant_36281_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36282", - "op" : "Constant", - "outputs" : ["Constant_36282_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36283", - "op" : "Constant", - "outputs" : ["Constant_36283_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36284", - "op" : "Constant", - "outputs" : ["Constant_36284_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36285", - "op" : "Constant", - "outputs" : ["Constant_36285_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36286", - "op" : "Constant", - "outputs" : ["Constant_36286_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36287", - "op" : "Constant", - "outputs" : ["Constant_36287_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36288", - "op" : "Constant", - "outputs" : ["Constant_36288_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36289", - "op" : "Constant", - "outputs" : ["Constant_36289_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36290", - "op" : "Constant", - "outputs" : ["Constant_36290_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36291", - "op" : "Constant", - "outputs" : ["Constant_36291_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36292", - "op" : "Constant", - "outputs" : ["Constant_36292_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36293", - "op" : "Constant", - "outputs" : ["Constant_36293_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36294", - "op" : "Constant", - "outputs" : ["Constant_36294_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36295", - "op" : "Constant", - "outputs" : ["Constant_36295_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36296", - "op" : "Constant", - "outputs" : ["Constant_36296_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36297", - "op" : "Constant", - "outputs" : ["Constant_36297_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36298", - "op" : "Constant", - "outputs" : ["Constant_36298_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36299", - "op" : "Constant", - "outputs" : ["Constant_36299_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36300", - "op" : "Constant", - "outputs" : ["Constant_36300_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36301", - "op" : "Constant", - "outputs" : ["Constant_36301_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36302", - "op" : "Constant", - "outputs" : ["Constant_36302_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36303", - "op" : "Constant", - "outputs" : ["Constant_36303_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36304", - "op" : "Constant", - "outputs" : ["Constant_36304_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36305", - "op" : "Constant", - "outputs" : ["Constant_36305_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_36306", - "op" : "Constant", - "outputs" : ["Constant_36306_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35293"], - "name" : "Reshape_36441", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36441_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34293"], - "name" : "Reshape_36764", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36764_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35266"], - "name" : "Reshape_36575", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36575_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34538"], - "name" : "Reshape_36559", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36559_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34986"], - "name" : "Reshape_36564", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36564_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36162"], - "name" : "Reshape_36608", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36608_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35769"], - "name" : "Reshape_36464", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36464_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35238"], - "name" : "Reshape_36574", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36574_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33907"], - "name" : "Reshape_36389", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36389_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36161"], - "name" : "Reshape_36450", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36450_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34095"], - "name" : "Reshape_36854", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36854_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35322"], - "name" : "Reshape_36577", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36577_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35378"], - "name" : "Reshape_36580", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36580_0"] - }, - { - "inputs" : ["Parameter_34078"], - "name" : "Cosh_36860", - "op" : "Cosh", - "outputs" : ["Cosh_36860_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34216"], - "name" : "Reshape_36799", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36799_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35182"], - "name" : "Reshape_36571", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36571_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35154"], - "name" : "Reshape_36570", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36570_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35153"], - "name" : "Reshape_36435", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36435_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35126"], - "name" : "Reshape_36569", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36569_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33995"], - "name" : "Reshape_36370", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36370_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34171"], - "name" : "Reshape_36374", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36374_0"] - }, - { - "inputs" : ["Parameter_34408"], - "name" : "Cosh_36710", - "op" : "Cosh", - "outputs" : ["Cosh_36710_0"] - }, - { - "inputs" : ["Parameter_33965"], - "name" : "Cosh_36912", - "op" : "Cosh", - "outputs" : ["Cosh_36912_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34507"], - "name" : "Reshape_36481", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36481_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34315"], - "name" : "Reshape_36754", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36754_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34194"], - "name" : "Reshape_36809", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36809_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34957"], - "name" : "Reshape_36430", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36430_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35014"], - "name" : "Reshape_36565", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36565_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34985"], - "name" : "Reshape_36431", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36431_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34271"], - "name" : "Reshape_36774", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36774_0"] - }, - { - "inputs" : ["Parameter_34328"], - "name" : "Cosh_36747", - "op" : "Cosh", - "outputs" : ["Cosh_36747_0"] - }, - { - "inputs" : ["Parameter_34130"], - "name" : "Cosh_36837", - "op" : "Cosh", - "outputs" : ["Cosh_36837_0"] - }, - { - "inputs" : ["Parameter_34482"], - "name" : "Cosh_36677", - "op" : "Cosh", - "outputs" : ["Cosh_36677_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34930"], - "name" : "Reshape_36562", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36562_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34929"], - "name" : "Reshape_36479", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36479_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35826"], - "name" : "Reshape_36597", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36597_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34901"], - "name" : "Reshape_36478", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36478_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33941"], - "name" : "Reshape_36924", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36924_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35042"], - "name" : "Reshape_36566", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36566_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34873"], - "name" : "Reshape_36477", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36477_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34622"], - "name" : "Reshape_36598", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36598_0"] - }, - { - "inputs" : ["Parameter_34199"], - "name" : "Cosh_36805", - "op" : "Cosh", - "outputs" : ["Cosh_36805_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34846"], - "name" : "Reshape_36558", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36558_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35181"], - "name" : "Reshape_36436", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36436_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33973"], - "name" : "Reshape_36395", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36395_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35574"], - "name" : "Reshape_36587", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36587_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35713"], - "name" : "Reshape_36448", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36448_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34790"], - "name" : "Reshape_36556", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36556_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34336"], - "name" : "Reshape_36417", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36417_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35770"], - "name" : "Reshape_36595", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36595_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35265"], - "name" : "Reshape_36440", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36440_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34347"], - "name" : "Reshape_36424", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36424_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34762"], - "name" : "Reshape_36555", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36555_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34761"], - "name" : "Reshape_36472", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36472_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34403"], - "name" : "Reshape_36714", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36714_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34733"], - "name" : "Reshape_36474", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36474_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34072"], - "name" : "Reshape_36375", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36375_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34706"], - "name" : "Reshape_36553", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36553_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33929"], - "name" : "Reshape_36388", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36388_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34678"], - "name" : "Reshape_36552", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36552_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34677"], - "name" : "Reshape_36469", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36469_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34650"], - "name" : "Reshape_36551", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36551_0"] - }, - { - "inputs" : ["Parameter_34372"], - "name" : "Cosh_36727", - "op" : "Cosh", - "outputs" : ["Cosh_36727_0"] - }, - { - "inputs" : ["Parameter_34196"], - "name" : "Cosh_36807", - "op" : "Cosh", - "outputs" : ["Cosh_36807_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33952"], - "name" : "Reshape_36919", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36919_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34537"], - "name" : "Reshape_36485", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36485_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36049"], - "name" : "Reshape_36452", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36452_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35210"], - "name" : "Reshape_36573", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36573_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34593"], - "name" : "Reshape_36486", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36486_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34260"], - "name" : "Reshape_36779", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36779_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34435"], - "name" : "Reshape_36402", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36402_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34566"], - "name" : "Reshape_36572", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36572_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34565"], - "name" : "Reshape_36483", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36483_0"] - }, - { - "inputs" : ["Parameter_34100"], - "name" : "Cosh_36850", - "op" : "Cosh", - "outputs" : ["Cosh_36850_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34292"], - "name" : "Reshape_36420", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36420_0"] - }, - { - "inputs" : ["Parameter_34163"], - "name" : "Cosh_36822", - "op" : "Cosh", - "outputs" : ["Cosh_36822_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34734"], - "name" : "Reshape_36554", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36554_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33940"], - "name" : "Reshape_36386", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36386_0"] - }, - { - "inputs" : ["Parameter_34067"], - "name" : "Cosh_36865", - "op" : "Cosh", - "outputs" : ["Cosh_36865_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34161"], - "name" : "Reshape_36824", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36824_0"] - }, - { - "inputs" : ["Parameter_34119"], - "name" : "Cosh_36842", - "op" : "Cosh", - "outputs" : ["Cosh_36842_0"] - }, - { - "inputs" : ["Parameter_34144"], - "name" : "Cosh_36830", - "op" : "Cosh", - "outputs" : ["Cosh_36830_0"] - }, - { - "inputs" : ["Parameter_34122"], - "name" : "Cosh_36840", - "op" : "Cosh", - "outputs" : ["Cosh_36840_0"] - }, - { - "inputs" : ["Parameter_34141"], - "name" : "Cosh_36832", - "op" : "Cosh", - "outputs" : ["Cosh_36832_0"] - }, - { - "inputs" : ["Parameter_34309"], - "name" : "Cosh_36755", - "op" : "Cosh", - "outputs" : ["Cosh_36755_0"] - }, - { - "inputs" : ["Parameter_33855"], - "name" : "Cosh_36962", - "op" : "Cosh", - "outputs" : ["Cosh_36962_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34457"], - "name" : "Reshape_36398", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36398_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35966"], - "name" : "Reshape_36604", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36604_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33864"], - "name" : "Reshape_36959", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36959_0"] - }, - { - "inputs" : ["Parameter_33946"], - "name" : "Cosh_36920", - "op" : "Cosh", - "outputs" : ["Cosh_36920_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34205"], - "name" : "Reshape_36804", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36804_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34116"], - "name" : "Reshape_36403", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36403_0"] - }, - { - "inputs" : ["Parameter_34317"], - "name" : "Cosh_36752", - "op" : "Cosh", - "outputs" : ["Cosh_36752_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34818"], - "name" : "Reshape_36557", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36557_0"] - }, - { - "inputs" : ["Parameter_34108"], - "name" : "Cosh_36847", - "op" : "Cosh", - "outputs" : ["Cosh_36847_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34106"], - "name" : "Reshape_36849", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36849_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34105"], - "name" : "Reshape_36385", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36385_0"] - }, - { - "inputs" : ["Parameter_34276"], - "name" : "Cosh_36770", - "op" : "Cosh", - "outputs" : ["Cosh_36770_0"] - }, - { - "inputs" : ["Parameter_34133"], - "name" : "Cosh_36835", - "op" : "Cosh", - "outputs" : ["Cosh_36835_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34424"], - "name" : "Reshape_36401", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36401_0"] - }, - { - "inputs" : ["Parameter_33968"], - "name" : "Cosh_36910", - "op" : "Cosh", - "outputs" : ["Cosh_36910_0"] - }, - { - "inputs" : ["Parameter_33932"], - "name" : "Cosh_36927", - "op" : "Cosh", - "outputs" : ["Cosh_36927_0"] - }, - { - "inputs" : ["Parameter_34089"], - "name" : "Cosh_36855", - "op" : "Cosh", - "outputs" : ["Cosh_36855_0"] - }, - { - "inputs" : ["Parameter_34001"], - "name" : "Cosh_36895", - "op" : "Cosh", - "outputs" : ["Cosh_36895_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34084"], - "name" : "Reshape_36859", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36859_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34314"], - "name" : "Reshape_36415", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36415_0"] - }, - { - "inputs" : ["Parameter_34221"], - "name" : "Cosh_36795", - "op" : "Cosh", - "outputs" : ["Cosh_36795_0"] - }, - { - "inputs" : ["Parameter_34045"], - "name" : "Cosh_36875", - "op" : "Cosh", - "outputs" : ["Cosh_36875_0"] - }, - { - "inputs" : ["Parameter_34012"], - "name" : "Cosh_36890", - "op" : "Cosh", - "outputs" : ["Cosh_36890_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34845"], - "name" : "Reshape_36475", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36475_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33985"], - "name" : "Reshape_36904", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36904_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34061"], - "name" : "Reshape_36428", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36428_0"] - }, - { - "inputs" : ["Parameter_34383"], - "name" : "Cosh_36722", - "op" : "Cosh", - "outputs" : ["Cosh_36722_0"] - }, - { - "inputs" : ["Parameter_34053"], - "name" : "Cosh_36872", - "op" : "Cosh", - "outputs" : ["Cosh_36872_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34370"], - "name" : "Reshape_36729", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36729_0"] - }, - { - "inputs" : ["Parameter_34042"], - "name" : "Cosh_36877", - "op" : "Cosh", - "outputs" : ["Cosh_36877_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34039"], - "name" : "Reshape_36391", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36391_0"] - }, - { - "inputs" : ["Parameter_34034"], - "name" : "Cosh_36880", - "op" : "Cosh", - "outputs" : ["Cosh_36880_0"] - }, - { - "inputs" : ["Parameter_34031"], - "name" : "Cosh_36882", - "op" : "Cosh", - "outputs" : ["Cosh_36882_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34138"], - "name" : "Reshape_36384", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36384_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34594"], - "name" : "Reshape_36583", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36583_0"] - }, - { - "inputs" : ["Parameter_33954"], - "name" : "Cosh_36917", - "op" : "Cosh", - "outputs" : ["Cosh_36917_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34040"], - "name" : "Reshape_36879", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36879_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34062"], - "name" : "Reshape_36869", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36869_0"] - }, - { - "inputs" : ["Parameter_34020"], - "name" : "Cosh_36887", - "op" : "Cosh", - "outputs" : ["Cosh_36887_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34117"], - "name" : "Reshape_36844", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36844_0"] - }, - { - "inputs" : ["Parameter_34009"], - "name" : "Cosh_36892", - "op" : "Cosh", - "outputs" : ["Cosh_36892_0"] - }, - { - "inputs" : ["Parameter_34177"], - "name" : "Cosh_36815", - "op" : "Cosh", - "outputs" : ["Cosh_36815_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34248"], - "name" : "Reshape_36413", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36413_0"] - }, - { - "inputs" : ["Parameter_33910"], - "name" : "Cosh_36937", - "op" : "Cosh", - "outputs" : ["Cosh_36937_0"] - }, - { - "inputs" : ["Parameter_34397"], - "name" : "Cosh_36715", - "op" : "Cosh", - "outputs" : ["Cosh_36715_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34007"], - "name" : "Reshape_36894", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36894_0"] - }, - { - "inputs" : ["Parameter_33913"], - "name" : "Cosh_36935", - "op" : "Cosh", - "outputs" : ["Cosh_36935_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35069"], - "name" : "Reshape_36433", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36433_0"] - }, - { - "inputs" : ["Parameter_33891"], - "name" : "Cosh_36945", - "op" : "Cosh", - "outputs" : ["Cosh_36945_0"] - }, - { - "inputs" : ["Parameter_33858"], - "name" : "Cosh_36960", - "op" : "Cosh", - "outputs" : ["Cosh_36960_0"] - }, - { - "inputs" : ["Parameter_33844"], - "name" : "Cosh_36968", - "op" : "Cosh", - "outputs" : ["Cosh_36968_0"] - }, - { - "inputs" : ["Parameter_33869"], - "name" : "Cosh_36955", - "op" : "Cosh", - "outputs" : ["Cosh_36955_0"] - }, - { - "inputs" : ["Parameter_34166"], - "name" : "Cosh_36820", - "op" : "Cosh", - "outputs" : ["Cosh_36820_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33897"], - "name" : "Reshape_36944", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36944_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34326"], - "name" : "Reshape_36749", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36749_0"] - }, - { - "inputs" : ["Parameter_34218"], - "name" : "Cosh_36797", - "op" : "Cosh", - "outputs" : ["Cosh_36797_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33886"], - "name" : "Reshape_36949", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36949_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33852"], - "name" : "Reshape_36378", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36378_0"] - }, - { - "inputs" : ["Parameter_33877"], - "name" : "Cosh_36952", - "op" : "Cosh", - "outputs" : ["Cosh_36952_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35405"], - "name" : "Reshape_36488", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36488_0"] - }, - { - "inputs" : ["Parameter_34251"], - "name" : "Cosh_36782", - "op" : "Cosh", - "outputs" : ["Cosh_36782_0"] - }, - { - "inputs" : ["Parameter_34207"], - "name" : "Cosh_36802", - "op" : "Cosh", - "outputs" : ["Cosh_36802_0"] - }, - { - "inputs" : ["Parameter_34023"], - "name" : "Cosh_36885", - "op" : "Cosh", - "outputs" : ["Cosh_36885_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35097"], - "name" : "Reshape_36432", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36432_0"] - }, - { - "inputs" : ["Parameter_33902"], - "name" : "Cosh_36940", - "op" : "Cosh", - "outputs" : ["Cosh_36940_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34436"], - "name" : "Reshape_36699", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36699_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34425"], - "name" : "Reshape_36704", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36704_0"] - }, - { - "inputs" : ["Parameter_33880"], - "name" : "Cosh_36950", - "op" : "Cosh", - "outputs" : ["Cosh_36950_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33908"], - "name" : "Reshape_36939", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36939_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33930"], - "name" : "Reshape_36929", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36929_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34402"], - "name" : "Reshape_36399", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36399_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34051"], - "name" : "Reshape_36874", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36874_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34006"], - "name" : "Reshape_36427", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36427_0"] - }, - { - "inputs" : ["Parameter_34262"], - "name" : "Cosh_36777", - "op" : "Cosh", - "outputs" : ["Cosh_36777_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34303"], - "name" : "Reshape_36419", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36419_0"] - }, - { - "inputs" : ["Parameter_34075"], - "name" : "Cosh_36862", - "op" : "Cosh", - "outputs" : ["Cosh_36862_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34789"], - "name" : "Reshape_36473", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36473_0"] - }, - { - "inputs" : ["Parameter_34463"], - "name" : "Cosh_36685", - "op" : "Cosh", - "outputs" : ["Cosh_36685_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34381"], - "name" : "Reshape_36724", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36724_0"] - }, - { - "inputs" : ["Parameter_34174"], - "name" : "Cosh_36817", - "op" : "Cosh", - "outputs" : ["Cosh_36817_0"] - }, - { - "inputs" : ["Parameter_34155"], - "name" : "Cosh_36825", - "op" : "Cosh", - "outputs" : ["Cosh_36825_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33896"], - "name" : "Reshape_36377", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36377_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33874"], - "name" : "Reshape_36390", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36390_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33962"], - "name" : "Reshape_36381", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36381_0"] - }, - { - "inputs" : ["Parameter_34452"], - "name" : "Cosh_36690", - "op" : "Cosh", - "outputs" : ["Cosh_36690_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35209"], - "name" : "Reshape_36437", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36437_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35098"], - "name" : "Reshape_36568", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36568_0"] - }, - { - "inputs" : ["Parameter_33866"], - "name" : "Cosh_36957", - "op" : "Cosh", - "outputs" : ["Cosh_36957_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34018"], - "name" : "Reshape_36889", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36889_0"] - }, - { - "inputs" : ["Parameter_33899"], - "name" : "Cosh_36942", - "op" : "Cosh", - "outputs" : ["Cosh_36942_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34215"], - "name" : "Reshape_36410", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36410_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34029"], - "name" : "Reshape_36884", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36884_0"] - }, - { - "inputs" : ["Parameter_33979"], - "name" : "Cosh_36905", - "op" : "Cosh", - "outputs" : ["Cosh_36905_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34874"], - "name" : "Reshape_36560", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36560_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34491"], - "name" : "Reshape_36674", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36674_0"] - }, - { - "inputs" : ["Parameter_34152"], - "name" : "Cosh_36827", - "op" : "Cosh", - "outputs" : ["Cosh_36827_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35937"], - "name" : "Reshape_36455", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36455_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34282"], - "name" : "Reshape_36769", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36769_0"] - }, - { - "inputs" : ["Parameter_33943"], - "name" : "Cosh_36922", - "op" : "Cosh", - "outputs" : ["Cosh_36922_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34128"], - "name" : "Reshape_36839", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36839_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33984"], - "name" : "Reshape_36408", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36408_0"] - }, - { - "inputs" : ["Parameter_34111"], - "name" : "Cosh_36845", - "op" : "Cosh", - "outputs" : ["Cosh_36845_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33885"], - "name" : "Reshape_36380", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36380_0"] - }, - { - "inputs" : ["Parameter_33998"], - "name" : "Cosh_36897", - "op" : "Cosh", - "outputs" : ["Cosh_36897_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34073"], - "name" : "Reshape_36864", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36864_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34902"], - "name" : "Reshape_36561", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36561_0"] - }, - { - "inputs" : ["Parameter_34265"], - "name" : "Cosh_36775", - "op" : "Cosh", - "outputs" : ["Cosh_36775_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34348"], - "name" : "Reshape_36739", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36739_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34705"], - "name" : "Reshape_36466", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36466_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33919"], - "name" : "Reshape_36934", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36934_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33875"], - "name" : "Reshape_36954", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36954_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34139"], - "name" : "Reshape_36834", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36834_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34050"], - "name" : "Reshape_36387", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36387_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33863"], - "name" : "Reshape_36394", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36394_0"] - }, - { - "inputs" : ["Parameter_34331"], - "name" : "Cosh_36745", - "op" : "Cosh", - "outputs" : ["Cosh_36745_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33918"], - "name" : "Reshape_36379", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36379_0"] - }, - { - "inputs" : ["Parameter_34287"], - "name" : "Cosh_36765", - "op" : "Cosh", - "outputs" : ["Cosh_36765_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34150"], - "name" : "Reshape_36829", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36829_0"] - }, - { - "inputs" : ["Parameter_33924"], - "name" : "Cosh_36930", - "op" : "Cosh", - "outputs" : ["Cosh_36930_0"] - }, - { - "inputs" : ["Parameter_34086"], - "name" : "Cosh_36857", - "op" : "Cosh", - "outputs" : ["Cosh_36857_0"] - }, - { - "inputs" : ["Parameter_34496"], - "name" : "Cosh_36670", - "op" : "Cosh", - "outputs" : ["Cosh_36670_0"] - }, - { - "inputs" : ["Parameter_33935"], - "name" : "Cosh_36925", - "op" : "Cosh", - "outputs" : ["Cosh_36925_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34160"], - "name" : "Reshape_36416", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36416_0"] - }, - { - "inputs" : ["Parameter_34419"], - "name" : "Cosh_36705", - "op" : "Cosh", - "outputs" : ["Cosh_36705_0"] - }, - { - "inputs" : ["Parameter_33888"], - "name" : "Cosh_36947", - "op" : "Cosh", - "outputs" : ["Cosh_36947_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34017"], - "name" : "Reshape_36396", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36396_0"] - }, - { - "inputs" : ["Parameter_34471"], - "name" : "Cosh_36682", - "op" : "Cosh", - "outputs" : ["Cosh_36682_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34094"], - "name" : "Reshape_36407", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36407_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34127"], - "name" : "Reshape_36404", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36404_0"] - }, - { - "inputs" : ["Parameter_34064"], - "name" : "Cosh_36867", - "op" : "Cosh", - "outputs" : ["Cosh_36867_0"] - }, - { - "inputs" : ["Parameter_33921"], - "name" : "Cosh_36932", - "op" : "Cosh", - "outputs" : ["Cosh_36932_0"] - }, - { - "inputs" : ["Parameter_33957"], - "name" : "Cosh_36915", - "op" : "Cosh", - "outputs" : ["Cosh_36915_0"] - }, - { - "inputs" : ["Parameter_34210"], - "name" : "Cosh_36800", - "op" : "Cosh", - "outputs" : ["Cosh_36800_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33951"], - "name" : "Reshape_36376", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36376_0"] - }, - { - "inputs" : ["Parameter_34295"], - "name" : "Cosh_36762", - "op" : "Cosh", - "outputs" : ["Cosh_36762_0"] - }, - { - "inputs" : ["Parameter_34056"], - "name" : "Cosh_36870", - "op" : "Cosh", - "outputs" : ["Cosh_36870_0"] - }, - { - "inputs" : ["Parameter_34342"], - "name" : "Cosh_36740", - "op" : "Cosh", - "outputs" : ["Cosh_36740_0"] - }, - { - "inputs" : ["Parameter_34485"], - "name" : "Cosh_36675", - "op" : "Cosh", - "outputs" : ["Cosh_36675_0"] - }, - { - "inputs" : ["Parameter_33987"], - "name" : "Cosh_36902", - "op" : "Cosh", - "outputs" : ["Cosh_36902_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33974"], - "name" : "Reshape_36909", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36909_0"] - }, - { - "inputs" : ["Parameter_34350"], - "name" : "Cosh_36737", - "op" : "Cosh", - "outputs" : ["Cosh_36737_0"] - }, - { - "inputs" : ["Parameter_33990"], - "name" : "Cosh_36900", - "op" : "Cosh", - "outputs" : ["Cosh_36900_0"] - }, - { - "inputs" : ["Parameter_33976"], - "name" : "Cosh_36907", - "op" : "Cosh", - "outputs" : ["Cosh_36907_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35546"], - "name" : "Reshape_36585", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36585_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35854"], - "name" : "Reshape_36599", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36599_0"] - }, - { - "inputs" : ["Parameter_34306"], - "name" : "Cosh_36757", - "op" : "Cosh", - "outputs" : ["Cosh_36757_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33996"], - "name" : "Reshape_36899", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36899_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34172"], - "name" : "Reshape_36819", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36819_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34182"], - "name" : "Reshape_36373", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36373_0"] - }, - { - "inputs" : ["Parameter_34243"], - "name" : "Cosh_36785", - "op" : "Cosh", - "outputs" : ["Cosh_36785_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34183"], - "name" : "Reshape_36814", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36814_0"] - }, - { - "inputs" : ["Parameter_34185"], - "name" : "Cosh_36812", - "op" : "Cosh", - "outputs" : ["Cosh_36812_0"] - }, - { - "inputs" : ["Parameter_34188"], - "name" : "Cosh_36810", - "op" : "Cosh", - "outputs" : ["Cosh_36810_0"] - }, - { - "inputs" : ["Parameter_34405"], - "name" : "Cosh_36712", - "op" : "Cosh", - "outputs" : ["Cosh_36712_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34193"], - "name" : "Reshape_36372", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36372_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35041"], - "name" : "Reshape_36438", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36438_0"] - }, - { - "inputs" : ["Parameter_34375"], - "name" : "Cosh_36725", - "op" : "Cosh", - "outputs" : ["Cosh_36725_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35742"], - "name" : "Reshape_36594", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36594_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34249"], - "name" : "Reshape_36784", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36784_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34204"], - "name" : "Reshape_36371", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36371_0"] - }, - { - "inputs" : ["Parameter_34460"], - "name" : "Cosh_36687", - "op" : "Cosh", - "outputs" : ["Cosh_36687_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34227"], - "name" : "Reshape_36794", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36794_0"] - }, - { - "inputs" : ["Parameter_34229"], - "name" : "Cosh_36792", - "op" : "Cosh", - "outputs" : ["Cosh_36792_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34479"], - "name" : "Reshape_36393", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36393_0"] - }, - { - "inputs" : ["Parameter_34232"], - "name" : "Cosh_36790", - "op" : "Cosh", - "outputs" : ["Cosh_36790_0"] - }, - { - "inputs" : ["Parameter_34493"], - "name" : "Cosh_36672", - "op" : "Cosh", - "outputs" : ["Cosh_36672_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34237"], - "name" : "Reshape_36412", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36412_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34238"], - "name" : "Reshape_36789", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36789_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36105"], - "name" : "Reshape_36465", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36465_0"] - }, - { - "inputs" : ["Parameter_34240"], - "name" : "Cosh_36787", - "op" : "Cosh", - "outputs" : ["Cosh_36787_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35294"], - "name" : "Reshape_36576", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36576_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34337"], - "name" : "Reshape_36744", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36744_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34469"], - "name" : "Reshape_36684", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36684_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35938"], - "name" : "Reshape_36602", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36602_0"] - }, - { - "inputs" : ["Parameter_34254"], - "name" : "Cosh_36780", - "op" : "Cosh", - "outputs" : ["Cosh_36780_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34259"], - "name" : "Reshape_36409", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36409_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35237"], - "name" : "Reshape_36439", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36439_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34281"], - "name" : "Reshape_36423", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36423_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34270"], - "name" : "Reshape_36414", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36414_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34358"], - "name" : "Reshape_36425", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36425_0"] - }, - { - "inputs" : ["Parameter_34273"], - "name" : "Cosh_36772", - "op" : "Cosh", - "outputs" : ["Cosh_36772_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34480"], - "name" : "Reshape_36679", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36679_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35321"], - "name" : "Reshape_36443", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36443_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34226"], - "name" : "Reshape_36411", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36411_0"] - }, - { - "inputs" : ["Parameter_34298"], - "name" : "Cosh_36760", - "op" : "Cosh", - "outputs" : ["Cosh_36760_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35601"], - "name" : "Reshape_36482", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36482_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35013"], - "name" : "Reshape_36444", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36444_0"] - }, - { - "inputs" : ["Parameter_34284"], - "name" : "Cosh_36767", - "op" : "Cosh", - "outputs" : ["Cosh_36767_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34304"], - "name" : "Reshape_36759", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36759_0"] - }, - { - "inputs" : ["Parameter_34320"], - "name" : "Cosh_36750", - "op" : "Cosh", - "outputs" : ["Cosh_36750_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34325"], - "name" : "Reshape_36421", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36421_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33963"], - "name" : "Reshape_36914", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36914_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34817"], - "name" : "Reshape_36476", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36476_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35125"], - "name" : "Reshape_36434", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36434_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35070"], - "name" : "Reshape_36567", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36567_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34028"], - "name" : "Reshape_36382", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36382_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35462"], - "name" : "Reshape_36581", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36581_0"] - }, - { - "inputs" : ["Parameter_34097"], - "name" : "Cosh_36852", - "op" : "Cosh", - "outputs" : ["Cosh_36852_0"] - }, - { - "inputs" : ["Parameter_34353"], - "name" : "Cosh_36735", - "op" : "Cosh", - "outputs" : ["Cosh_36735_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34621"], - "name" : "Reshape_36463", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36463_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34359"], - "name" : "Reshape_36734", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36734_0"] - }, - { - "inputs" : ["Parameter_34361"], - "name" : "Cosh_36732", - "op" : "Cosh", - "outputs" : ["Cosh_36732_0"] - }, - { - "inputs" : ["Parameter_34364"], - "name" : "Cosh_36730", - "op" : "Cosh", - "outputs" : ["Cosh_36730_0"] - }, - { - "inputs" : ["Parameter_34427"], - "name" : "Cosh_36702", - "op" : "Cosh", - "outputs" : ["Cosh_36702_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34369"], - "name" : "Reshape_36422", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36422_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34083"], - "name" : "Reshape_36383", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36383_0"] - }, - { - "inputs" : ["Parameter_34430"], - "name" : "Cosh_36700", - "op" : "Cosh", - "outputs" : ["Cosh_36700_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34380"], - "name" : "Reshape_36418", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36418_0"] - }, - { - "inputs" : ["Parameter_34386"], - "name" : "Cosh_36720", - "op" : "Cosh", - "outputs" : ["Cosh_36720_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34391"], - "name" : "Reshape_36426", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36426_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34392"], - "name" : "Reshape_36719", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36719_0"] - }, - { - "inputs" : ["Parameter_34394"], - "name" : "Cosh_36717", - "op" : "Cosh", - "outputs" : ["Cosh_36717_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34149"], - "name" : "Reshape_36405", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36405_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35433"], - "name" : "Reshape_36484", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36484_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34413"], - "name" : "Reshape_36400", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36400_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34414"], - "name" : "Reshape_36709", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36709_0"] - }, - { - "inputs" : ["Parameter_34416"], - "name" : "Cosh_36707", - "op" : "Cosh", - "outputs" : ["Cosh_36707_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_33853"], - "name" : "Reshape_36964", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36964_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34958"], - "name" : "Reshape_36563", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36563_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34649"], - "name" : "Reshape_36470", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36470_0"] - }, - { - "inputs" : ["Parameter_34438"], - "name" : "Cosh_36697", - "op" : "Cosh", - "outputs" : ["Cosh_36697_0"] - }, - { - "inputs" : ["Parameter_34441"], - "name" : "Cosh_36695", - "op" : "Cosh", - "outputs" : ["Cosh_36695_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34446"], - "name" : "Reshape_36397", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36397_0"] - }, - { - "inputs" : ["Parameter_33847"], - "name" : "Cosh_36965", - "op" : "Cosh", - "outputs" : ["Cosh_36965_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34447"], - "name" : "Reshape_36694", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36694_0"] - }, - { - "inputs" : ["Parameter_34449"], - "name" : "Cosh_36692", - "op" : "Cosh", - "outputs" : ["Cosh_36692_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35657"], - "name" : "Reshape_36462", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36462_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34458"], - "name" : "Reshape_36689", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36689_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34468"], - "name" : "Reshape_36392", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36392_0"] - }, - { - "inputs" : ["Parameter_34474"], - "name" : "Cosh_36680", - "op" : "Cosh", - "outputs" : ["Cosh_36680_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34490"], - "name" : "Reshape_36406", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36406_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35741"], - "name" : "Reshape_36460", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36460_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34502"], - "name" : "Reshape_36549", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36549_0"] - }, - { - "inputs" : ["Parameter_34339"], - "name" : "Cosh_36742", - "op" : "Cosh", - "outputs" : ["Cosh_36742_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_34508"], - "name" : "Reshape_36550", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36550_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35685"], - "name" : "Reshape_36456", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36456_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35349"], - "name" : "Reshape_36442", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36442_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35350"], - "name" : "Reshape_36586", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36586_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35377"], - "name" : "Reshape_36445", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36445_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35406"], - "name" : "Reshape_36578", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36578_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35434"], - "name" : "Reshape_36579", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36579_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35461"], - "name" : "Reshape_36447", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36447_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35489"], - "name" : "Reshape_36457", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36457_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35490"], - "name" : "Reshape_36582", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36582_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35994"], - "name" : "Reshape_36609", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36609_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35517"], - "name" : "Reshape_36480", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36480_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35518"], - "name" : "Reshape_36584", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36584_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35545"], - "name" : "Reshape_36446", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36446_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35573"], - "name" : "Reshape_36458", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36458_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36021"], - "name" : "Reshape_36461", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36461_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35602"], - "name" : "Reshape_36588", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36588_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35629"], - "name" : "Reshape_36459", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36459_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35630"], - "name" : "Reshape_36589", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36589_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35658"], - "name" : "Reshape_36590", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36590_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35686"], - "name" : "Reshape_36591", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36591_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35714"], - "name" : "Reshape_36592", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36592_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35797"], - "name" : "Reshape_36487", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36487_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35798"], - "name" : "Reshape_36596", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36596_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35825"], - "name" : "Reshape_36429", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36429_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35853"], - "name" : "Reshape_36471", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36471_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35965"], - "name" : "Reshape_36451", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36451_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35881"], - "name" : "Reshape_36467", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36467_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35882"], - "name" : "Reshape_36600", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36600_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35909"], - "name" : "Reshape_36468", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36468_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35910"], - "name" : "Reshape_36601", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36601_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_35993"], - "name" : "Reshape_36449", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36449_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36022"], - "name" : "Reshape_36603", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36603_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36050"], - "name" : "Reshape_36593", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36593_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36077"], - "name" : "Reshape_36454", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36454_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36078"], - "name" : "Reshape_36605", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36605_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36106"], - "name" : "Reshape_36607", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36607_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36133"], - "name" : "Reshape_36453", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_36453_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_36134"], - "name" : "Reshape_36606", - "op" : "Reshape", - "output_shape" : [ 256, 64 ], - "outputs" : ["Reshape_36606_0"] - }, - { - "inputs" : ["Parameter_36245"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_36308", - "op" : "Slice", - "outputs" : ["Slice_36308_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 60, 64, 256 ] - }, - { - "inputs" : ["Parameter_36245"], - "lower_bounds" : [ 0, 0, 256 ], - "name" : "Slice_36307", - "op" : "Slice", - "outputs" : ["Slice_36307_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 60, 64, 512 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36246"], - "name" : "Broadcast_36309", - "op" : "Broadcast", - "outputs" : ["Broadcast_36309_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36247"], - "name" : "Broadcast_36310", - "op" : "Broadcast", - "outputs" : ["Broadcast_36310_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36248"], - "name" : "Broadcast_36311", - "op" : "Broadcast", - "outputs" : ["Broadcast_36311_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36249"], - "name" : "Broadcast_36312", - "op" : "Broadcast", - "outputs" : ["Broadcast_36312_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36250"], - "name" : "Broadcast_36313", - "op" : "Broadcast", - "outputs" : ["Broadcast_36313_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36251"], - "name" : "Broadcast_36314", - "op" : "Broadcast", - "outputs" : ["Broadcast_36314_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36252"], - "name" : "Broadcast_36315", - "op" : "Broadcast", - "outputs" : ["Broadcast_36315_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36253"], - "name" : "Broadcast_36316", - "op" : "Broadcast", - "outputs" : ["Broadcast_36316_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36254"], - "name" : "Broadcast_36317", - "op" : "Broadcast", - "outputs" : ["Broadcast_36317_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36255"], - "name" : "Broadcast_36318", - "op" : "Broadcast", - "outputs" : ["Broadcast_36318_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36256"], - "name" : "Broadcast_36319", - "op" : "Broadcast", - "outputs" : ["Broadcast_36319_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36257"], - "name" : "Broadcast_36320", - "op" : "Broadcast", - "outputs" : ["Broadcast_36320_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36258"], - "name" : "Broadcast_36321", - "op" : "Broadcast", - "outputs" : ["Broadcast_36321_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36259"], - "name" : "Broadcast_36322", - "op" : "Broadcast", - "outputs" : ["Broadcast_36322_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36260"], - "name" : "Broadcast_36323", - "op" : "Broadcast", - "outputs" : ["Broadcast_36323_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36261"], - "name" : "Broadcast_36324", - "op" : "Broadcast", - "outputs" : ["Broadcast_36324_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36262"], - "name" : "Broadcast_36325", - "op" : "Broadcast", - "outputs" : ["Broadcast_36325_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36263"], - "name" : "Broadcast_36326", - "op" : "Broadcast", - "outputs" : ["Broadcast_36326_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36264"], - "name" : "Broadcast_36327", - "op" : "Broadcast", - "outputs" : ["Broadcast_36327_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36265"], - "name" : "Broadcast_36328", - "op" : "Broadcast", - "outputs" : ["Broadcast_36328_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36266"], - "name" : "Broadcast_36329", - "op" : "Broadcast", - "outputs" : ["Broadcast_36329_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36267"], - "name" : "Broadcast_36330", - "op" : "Broadcast", - "outputs" : ["Broadcast_36330_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36268"], - "name" : "Broadcast_36331", - "op" : "Broadcast", - "outputs" : ["Broadcast_36331_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36269"], - "name" : "Broadcast_36332", - "op" : "Broadcast", - "outputs" : ["Broadcast_36332_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36270"], - "name" : "Broadcast_36333", - "op" : "Broadcast", - "outputs" : ["Broadcast_36333_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36271"], - "name" : "Broadcast_36334", - "op" : "Broadcast", - "outputs" : ["Broadcast_36334_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36272"], - "name" : "Broadcast_36335", - "op" : "Broadcast", - "outputs" : ["Broadcast_36335_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36273"], - "name" : "Broadcast_36336", - "op" : "Broadcast", - "outputs" : ["Broadcast_36336_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36274"], - "name" : "Broadcast_36337", - "op" : "Broadcast", - "outputs" : ["Broadcast_36337_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36275"], - "name" : "Broadcast_36338", - "op" : "Broadcast", - "outputs" : ["Broadcast_36338_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36276"], - "name" : "Broadcast_36339", - "op" : "Broadcast", - "outputs" : ["Broadcast_36339_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36277"], - "name" : "Broadcast_36340", - "op" : "Broadcast", - "outputs" : ["Broadcast_36340_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36278"], - "name" : "Broadcast_36341", - "op" : "Broadcast", - "outputs" : ["Broadcast_36341_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36279"], - "name" : "Broadcast_36342", - "op" : "Broadcast", - "outputs" : ["Broadcast_36342_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36280"], - "name" : "Broadcast_36343", - "op" : "Broadcast", - "outputs" : ["Broadcast_36343_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36281"], - "name" : "Broadcast_36344", - "op" : "Broadcast", - "outputs" : ["Broadcast_36344_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36282"], - "name" : "Broadcast_36345", - "op" : "Broadcast", - "outputs" : ["Broadcast_36345_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36283"], - "name" : "Broadcast_36346", - "op" : "Broadcast", - "outputs" : ["Broadcast_36346_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36284"], - "name" : "Broadcast_36347", - "op" : "Broadcast", - "outputs" : ["Broadcast_36347_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36285"], - "name" : "Broadcast_36348", - "op" : "Broadcast", - "outputs" : ["Broadcast_36348_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36286"], - "name" : "Broadcast_36349", - "op" : "Broadcast", - "outputs" : ["Broadcast_36349_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36287"], - "name" : "Broadcast_36350", - "op" : "Broadcast", - "outputs" : ["Broadcast_36350_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36288"], - "name" : "Broadcast_36351", - "op" : "Broadcast", - "outputs" : ["Broadcast_36351_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36289"], - "name" : "Broadcast_36352", - "op" : "Broadcast", - "outputs" : ["Broadcast_36352_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36290"], - "name" : "Broadcast_36353", - "op" : "Broadcast", - "outputs" : ["Broadcast_36353_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36291"], - "name" : "Broadcast_36354", - "op" : "Broadcast", - "outputs" : ["Broadcast_36354_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36292"], - "name" : "Broadcast_36355", - "op" : "Broadcast", - "outputs" : ["Broadcast_36355_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36293"], - "name" : "Broadcast_36356", - "op" : "Broadcast", - "outputs" : ["Broadcast_36356_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36294"], - "name" : "Broadcast_36357", - "op" : "Broadcast", - "outputs" : ["Broadcast_36357_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36295"], - "name" : "Broadcast_36358", - "op" : "Broadcast", - "outputs" : ["Broadcast_36358_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36296"], - "name" : "Broadcast_36359", - "op" : "Broadcast", - "outputs" : ["Broadcast_36359_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36297"], - "name" : "Broadcast_36360", - "op" : "Broadcast", - "outputs" : ["Broadcast_36360_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36298"], - "name" : "Broadcast_36361", - "op" : "Broadcast", - "outputs" : ["Broadcast_36361_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36299"], - "name" : "Broadcast_36362", - "op" : "Broadcast", - "outputs" : ["Broadcast_36362_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36300"], - "name" : "Broadcast_36363", - "op" : "Broadcast", - "outputs" : ["Broadcast_36363_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36301"], - "name" : "Broadcast_36364", - "op" : "Broadcast", - "outputs" : ["Broadcast_36364_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36302"], - "name" : "Broadcast_36365", - "op" : "Broadcast", - "outputs" : ["Broadcast_36365_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36303"], - "name" : "Broadcast_36366", - "op" : "Broadcast", - "outputs" : ["Broadcast_36366_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36304"], - "name" : "Broadcast_36367", - "op" : "Broadcast", - "outputs" : ["Broadcast_36367_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_36305"], - "name" : "Broadcast_36368", - "op" : "Broadcast", - "outputs" : ["Broadcast_36368_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [ 0, 1, 2 ], - "inputs" : ["Constant_36306"], - "name" : "Broadcast_36369", - "op" : "Broadcast", - "outputs" : ["Broadcast_36369_0"], - "shape" : [ 60, 64, 256 ] - }, - { - "inputs" : [ "Cosh_36860", "Cosh_36860" ], - "name" : "Multiply_36861", - "op" : "Multiply", - "outputs" : ["Multiply_36861_0"] - }, - { - "inputs" : [ "Cosh_36710", "Cosh_36710" ], - "name" : "Multiply_36711", - "op" : "Multiply", - "outputs" : ["Multiply_36711_0"] - }, - { - "inputs" : [ "Cosh_36912", "Cosh_36912" ], - "name" : "Multiply_36913", - "op" : "Multiply", - "outputs" : ["Multiply_36913_0"] - }, - { - "inputs" : [ "Cosh_36747", "Cosh_36747" ], - "name" : "Multiply_36748", - "op" : "Multiply", - "outputs" : ["Multiply_36748_0"] - }, - { - "inputs" : [ "Cosh_36837", "Cosh_36837" ], - "name" : "Multiply_36838", - "op" : "Multiply", - "outputs" : ["Multiply_36838_0"] - }, - { - "inputs" : [ "Cosh_36677", "Cosh_36677" ], - "name" : "Multiply_36678", - "op" : "Multiply", - "outputs" : ["Multiply_36678_0"] - }, - { - "inputs" : [ "Cosh_36805", "Cosh_36805" ], - "name" : "Multiply_36806", - "op" : "Multiply", - "outputs" : ["Multiply_36806_0"] - }, - { - "inputs" : [ "Cosh_36727", "Cosh_36727" ], - "name" : "Multiply_36728", - "op" : "Multiply", - "outputs" : ["Multiply_36728_0"] - }, - { - "inputs" : [ "Cosh_36807", "Cosh_36807" ], - "name" : "Multiply_36808", - "op" : "Multiply", - "outputs" : ["Multiply_36808_0"] - }, - { - "inputs" : [ "Cosh_36850", "Cosh_36850" ], - "name" : "Multiply_36851", - "op" : "Multiply", - "outputs" : ["Multiply_36851_0"] - }, - { - "inputs" : [ "Cosh_36822", "Cosh_36822" ], - "name" : "Multiply_36823", - "op" : "Multiply", - "outputs" : ["Multiply_36823_0"] - }, - { - "inputs" : [ "Cosh_36865", "Cosh_36865" ], - "name" : "Multiply_36866", - "op" : "Multiply", - "outputs" : ["Multiply_36866_0"] - }, - { - "inputs" : [ "Cosh_36842", "Cosh_36842" ], - "name" : "Multiply_36843", - "op" : "Multiply", - "outputs" : ["Multiply_36843_0"] - }, - { - "inputs" : [ "Cosh_36830", "Cosh_36830" ], - "name" : "Multiply_36831", - "op" : "Multiply", - "outputs" : ["Multiply_36831_0"] - }, - { - "inputs" : [ "Cosh_36840", "Cosh_36840" ], - "name" : "Multiply_36841", - "op" : "Multiply", - "outputs" : ["Multiply_36841_0"] - }, - { - "inputs" : [ "Cosh_36832", "Cosh_36832" ], - "name" : "Multiply_36833", - "op" : "Multiply", - "outputs" : ["Multiply_36833_0"] - }, - { - "inputs" : [ "Cosh_36755", "Cosh_36755" ], - "name" : "Multiply_36756", - "op" : "Multiply", - "outputs" : ["Multiply_36756_0"] - }, - { - "inputs" : [ "Cosh_36962", "Cosh_36962" ], - "name" : "Multiply_36963", - "op" : "Multiply", - "outputs" : ["Multiply_36963_0"] - }, - { - "inputs" : [ "Cosh_36920", "Cosh_36920" ], - "name" : "Multiply_36921", - "op" : "Multiply", - "outputs" : ["Multiply_36921_0"] - }, - { - "inputs" : [ "Cosh_36752", "Cosh_36752" ], - "name" : "Multiply_36753", - "op" : "Multiply", - "outputs" : ["Multiply_36753_0"] - }, - { - "inputs" : [ "Cosh_36847", "Cosh_36847" ], - "name" : "Multiply_36848", - "op" : "Multiply", - "outputs" : ["Multiply_36848_0"] - }, - { - "inputs" : [ "Cosh_36770", "Cosh_36770" ], - "name" : "Multiply_36771", - "op" : "Multiply", - "outputs" : ["Multiply_36771_0"] - }, - { - "inputs" : [ "Cosh_36835", "Cosh_36835" ], - "name" : "Multiply_36836", - "op" : "Multiply", - "outputs" : ["Multiply_36836_0"] - }, - { - "inputs" : [ "Cosh_36910", "Cosh_36910" ], - "name" : "Multiply_36911", - "op" : "Multiply", - "outputs" : ["Multiply_36911_0"] - }, - { - "inputs" : [ "Cosh_36927", "Cosh_36927" ], - "name" : "Multiply_36928", - "op" : "Multiply", - "outputs" : ["Multiply_36928_0"] - }, - { - "inputs" : [ "Cosh_36855", "Cosh_36855" ], - "name" : "Multiply_36856", - "op" : "Multiply", - "outputs" : ["Multiply_36856_0"] - }, - { - "inputs" : [ "Cosh_36895", "Cosh_36895" ], - "name" : "Multiply_36896", - "op" : "Multiply", - "outputs" : ["Multiply_36896_0"] - }, - { - "inputs" : [ "Cosh_36795", "Cosh_36795" ], - "name" : "Multiply_36796", - "op" : "Multiply", - "outputs" : ["Multiply_36796_0"] - }, - { - "inputs" : [ "Cosh_36875", "Cosh_36875" ], - "name" : "Multiply_36876", - "op" : "Multiply", - "outputs" : ["Multiply_36876_0"] - }, - { - "inputs" : [ "Cosh_36890", "Cosh_36890" ], - "name" : "Multiply_36891", - "op" : "Multiply", - "outputs" : ["Multiply_36891_0"] - }, - { - "inputs" : [ "Cosh_36722", "Cosh_36722" ], - "name" : "Multiply_36723", - "op" : "Multiply", - "outputs" : ["Multiply_36723_0"] - }, - { - "inputs" : [ "Cosh_36872", "Cosh_36872" ], - "name" : "Multiply_36873", - "op" : "Multiply", - "outputs" : ["Multiply_36873_0"] - }, - { - "inputs" : [ "Cosh_36877", "Cosh_36877" ], - "name" : "Multiply_36878", - "op" : "Multiply", - "outputs" : ["Multiply_36878_0"] - }, - { - "inputs" : [ "Cosh_36880", "Cosh_36880" ], - "name" : "Multiply_36881", - "op" : "Multiply", - "outputs" : ["Multiply_36881_0"] - }, - { - "inputs" : [ "Cosh_36882", "Cosh_36882" ], - "name" : "Multiply_36883", - "op" : "Multiply", - "outputs" : ["Multiply_36883_0"] - }, - { - "inputs" : [ "Cosh_36917", "Cosh_36917" ], - "name" : "Multiply_36918", - "op" : "Multiply", - "outputs" : ["Multiply_36918_0"] - }, - { - "inputs" : [ "Cosh_36887", "Cosh_36887" ], - "name" : "Multiply_36888", - "op" : "Multiply", - "outputs" : ["Multiply_36888_0"] - }, - { - "inputs" : [ "Cosh_36892", "Cosh_36892" ], - "name" : "Multiply_36893", - "op" : "Multiply", - "outputs" : ["Multiply_36893_0"] - }, - { - "inputs" : [ "Cosh_36815", "Cosh_36815" ], - "name" : "Multiply_36816", - "op" : "Multiply", - "outputs" : ["Multiply_36816_0"] - }, - { - "inputs" : [ "Cosh_36937", "Cosh_36937" ], - "name" : "Multiply_36938", - "op" : "Multiply", - "outputs" : ["Multiply_36938_0"] - }, - { - "inputs" : [ "Cosh_36715", "Cosh_36715" ], - "name" : "Multiply_36716", - "op" : "Multiply", - "outputs" : ["Multiply_36716_0"] - }, - { - "inputs" : [ "Cosh_36935", "Cosh_36935" ], - "name" : "Multiply_36936", - "op" : "Multiply", - "outputs" : ["Multiply_36936_0"] - }, - { - "inputs" : [ "Cosh_36945", "Cosh_36945" ], - "name" : "Multiply_36946", - "op" : "Multiply", - "outputs" : ["Multiply_36946_0"] - }, - { - "inputs" : [ "Cosh_36960", "Cosh_36960" ], - "name" : "Multiply_36961", - "op" : "Multiply", - "outputs" : ["Multiply_36961_0"] - }, - { - "inputs" : [ "Cosh_36968", "Cosh_36968" ], - "name" : "Multiply_36969", - "op" : "Multiply", - "outputs" : ["Multiply_36969_0"] - }, - { - "inputs" : [ "Cosh_36955", "Cosh_36955" ], - "name" : "Multiply_36956", - "op" : "Multiply", - "outputs" : ["Multiply_36956_0"] - }, - { - "inputs" : [ "Cosh_36820", "Cosh_36820" ], - "name" : "Multiply_36821", - "op" : "Multiply", - "outputs" : ["Multiply_36821_0"] - }, - { - "inputs" : [ "Cosh_36797", "Cosh_36797" ], - "name" : "Multiply_36798", - "op" : "Multiply", - "outputs" : ["Multiply_36798_0"] - }, - { - "inputs" : [ "Cosh_36952", "Cosh_36952" ], - "name" : "Multiply_36953", - "op" : "Multiply", - "outputs" : ["Multiply_36953_0"] - }, - { - "inputs" : [ "Cosh_36782", "Cosh_36782" ], - "name" : "Multiply_36783", - "op" : "Multiply", - "outputs" : ["Multiply_36783_0"] - }, - { - "inputs" : [ "Cosh_36802", "Cosh_36802" ], - "name" : "Multiply_36803", - "op" : "Multiply", - "outputs" : ["Multiply_36803_0"] - }, - { - "inputs" : [ "Cosh_36885", "Cosh_36885" ], - "name" : "Multiply_36886", - "op" : "Multiply", - "outputs" : ["Multiply_36886_0"] - }, - { - "inputs" : [ "Cosh_36940", "Cosh_36940" ], - "name" : "Multiply_36941", - "op" : "Multiply", - "outputs" : ["Multiply_36941_0"] - }, - { - "inputs" : [ "Cosh_36950", "Cosh_36950" ], - "name" : "Multiply_36951", - "op" : "Multiply", - "outputs" : ["Multiply_36951_0"] - }, - { - "inputs" : [ "Cosh_36777", "Cosh_36777" ], - "name" : "Multiply_36778", - "op" : "Multiply", - "outputs" : ["Multiply_36778_0"] - }, - { - "inputs" : [ "Cosh_36862", "Cosh_36862" ], - "name" : "Multiply_36863", - "op" : "Multiply", - "outputs" : ["Multiply_36863_0"] - }, - { - "inputs" : [ "Cosh_36685", "Cosh_36685" ], - "name" : "Multiply_36686", - "op" : "Multiply", - "outputs" : ["Multiply_36686_0"] - }, - { - "inputs" : [ "Cosh_36817", "Cosh_36817" ], - "name" : "Multiply_36818", - "op" : "Multiply", - "outputs" : ["Multiply_36818_0"] - }, - { - "inputs" : [ "Cosh_36825", "Cosh_36825" ], - "name" : "Multiply_36826", - "op" : "Multiply", - "outputs" : ["Multiply_36826_0"] - }, - { - "inputs" : [ "Cosh_36690", "Cosh_36690" ], - "name" : "Multiply_36691", - "op" : "Multiply", - "outputs" : ["Multiply_36691_0"] - }, - { - "inputs" : [ "Cosh_36957", "Cosh_36957" ], - "name" : "Multiply_36958", - "op" : "Multiply", - "outputs" : ["Multiply_36958_0"] - }, - { - "inputs" : [ "Cosh_36942", "Cosh_36942" ], - "name" : "Multiply_36943", - "op" : "Multiply", - "outputs" : ["Multiply_36943_0"] - }, - { - "inputs" : [ "Cosh_36905", "Cosh_36905" ], - "name" : "Multiply_36906", - "op" : "Multiply", - "outputs" : ["Multiply_36906_0"] - }, - { - "inputs" : [ "Cosh_36827", "Cosh_36827" ], - "name" : "Multiply_36828", - "op" : "Multiply", - "outputs" : ["Multiply_36828_0"] - }, - { - "inputs" : [ "Cosh_36922", "Cosh_36922" ], - "name" : "Multiply_36923", - "op" : "Multiply", - "outputs" : ["Multiply_36923_0"] - }, - { - "inputs" : [ "Cosh_36845", "Cosh_36845" ], - "name" : "Multiply_36846", - "op" : "Multiply", - "outputs" : ["Multiply_36846_0"] - }, - { - "inputs" : [ "Cosh_36897", "Cosh_36897" ], - "name" : "Multiply_36898", - "op" : "Multiply", - "outputs" : ["Multiply_36898_0"] - }, - { - "inputs" : [ "Cosh_36775", "Cosh_36775" ], - "name" : "Multiply_36776", - "op" : "Multiply", - "outputs" : ["Multiply_36776_0"] - }, - { - "inputs" : [ "Cosh_36745", "Cosh_36745" ], - "name" : "Multiply_36746", - "op" : "Multiply", - "outputs" : ["Multiply_36746_0"] - }, - { - "inputs" : [ "Cosh_36765", "Cosh_36765" ], - "name" : "Multiply_36766", - "op" : "Multiply", - "outputs" : ["Multiply_36766_0"] - }, - { - "inputs" : [ "Cosh_36930", "Cosh_36930" ], - "name" : "Multiply_36931", - "op" : "Multiply", - "outputs" : ["Multiply_36931_0"] - }, - { - "inputs" : [ "Cosh_36857", "Cosh_36857" ], - "name" : "Multiply_36858", - "op" : "Multiply", - "outputs" : ["Multiply_36858_0"] - }, - { - "inputs" : [ "Cosh_36670", "Cosh_36670" ], - "name" : "Multiply_36671", - "op" : "Multiply", - "outputs" : ["Multiply_36671_0"] - }, - { - "inputs" : [ "Cosh_36925", "Cosh_36925" ], - "name" : "Multiply_36926", - "op" : "Multiply", - "outputs" : ["Multiply_36926_0"] - }, - { - "inputs" : [ "Cosh_36705", "Cosh_36705" ], - "name" : "Multiply_36706", - "op" : "Multiply", - "outputs" : ["Multiply_36706_0"] - }, - { - "inputs" : [ "Cosh_36947", "Cosh_36947" ], - "name" : "Multiply_36948", - "op" : "Multiply", - "outputs" : ["Multiply_36948_0"] - }, - { - "inputs" : [ "Cosh_36682", "Cosh_36682" ], - "name" : "Multiply_36683", - "op" : "Multiply", - "outputs" : ["Multiply_36683_0"] - }, - { - "inputs" : [ "Cosh_36867", "Cosh_36867" ], - "name" : "Multiply_36868", - "op" : "Multiply", - "outputs" : ["Multiply_36868_0"] - }, - { - "inputs" : [ "Cosh_36932", "Cosh_36932" ], - "name" : "Multiply_36933", - "op" : "Multiply", - "outputs" : ["Multiply_36933_0"] - }, - { - "inputs" : [ "Cosh_36915", "Cosh_36915" ], - "name" : "Multiply_36916", - "op" : "Multiply", - "outputs" : ["Multiply_36916_0"] - }, - { - "inputs" : [ "Cosh_36800", "Cosh_36800" ], - "name" : "Multiply_36801", - "op" : "Multiply", - "outputs" : ["Multiply_36801_0"] - }, - { - "inputs" : [ "Cosh_36762", "Cosh_36762" ], - "name" : "Multiply_36763", - "op" : "Multiply", - "outputs" : ["Multiply_36763_0"] - }, - { - "inputs" : [ "Cosh_36870", "Cosh_36870" ], - "name" : "Multiply_36871", - "op" : "Multiply", - "outputs" : ["Multiply_36871_0"] - }, - { - "inputs" : [ "Cosh_36740", "Cosh_36740" ], - "name" : "Multiply_36741", - "op" : "Multiply", - "outputs" : ["Multiply_36741_0"] - }, - { - "inputs" : [ "Cosh_36675", "Cosh_36675" ], - "name" : "Multiply_36676", - "op" : "Multiply", - "outputs" : ["Multiply_36676_0"] - }, - { - "inputs" : [ "Cosh_36902", "Cosh_36902" ], - "name" : "Multiply_36903", - "op" : "Multiply", - "outputs" : ["Multiply_36903_0"] - }, - { - "inputs" : [ "Cosh_36737", "Cosh_36737" ], - "name" : "Multiply_36738", - "op" : "Multiply", - "outputs" : ["Multiply_36738_0"] - }, - { - "inputs" : [ "Cosh_36900", "Cosh_36900" ], - "name" : "Multiply_36901", - "op" : "Multiply", - "outputs" : ["Multiply_36901_0"] - }, - { - "inputs" : [ "Cosh_36907", "Cosh_36907" ], - "name" : "Multiply_36908", - "op" : "Multiply", - "outputs" : ["Multiply_36908_0"] - }, - { - "inputs" : [ "Cosh_36757", "Cosh_36757" ], - "name" : "Multiply_36758", - "op" : "Multiply", - "outputs" : ["Multiply_36758_0"] - }, - { - "inputs" : [ "Cosh_36785", "Cosh_36785" ], - "name" : "Multiply_36786", - "op" : "Multiply", - "outputs" : ["Multiply_36786_0"] - }, - { - "inputs" : [ "Cosh_36812", "Cosh_36812" ], - "name" : "Multiply_36813", - "op" : "Multiply", - "outputs" : ["Multiply_36813_0"] - }, - { - "inputs" : [ "Cosh_36810", "Cosh_36810" ], - "name" : "Multiply_36811", - "op" : "Multiply", - "outputs" : ["Multiply_36811_0"] - }, - { - "inputs" : [ "Cosh_36712", "Cosh_36712" ], - "name" : "Multiply_36713", - "op" : "Multiply", - "outputs" : ["Multiply_36713_0"] - }, - { - "inputs" : [ "Cosh_36725", "Cosh_36725" ], - "name" : "Multiply_36726", - "op" : "Multiply", - "outputs" : ["Multiply_36726_0"] - }, - { - "inputs" : [ "Cosh_36687", "Cosh_36687" ], - "name" : "Multiply_36688", - "op" : "Multiply", - "outputs" : ["Multiply_36688_0"] - }, - { - "inputs" : [ "Cosh_36792", "Cosh_36792" ], - "name" : "Multiply_36793", - "op" : "Multiply", - "outputs" : ["Multiply_36793_0"] - }, - { - "inputs" : [ "Cosh_36790", "Cosh_36790" ], - "name" : "Multiply_36791", - "op" : "Multiply", - "outputs" : ["Multiply_36791_0"] - }, - { - "inputs" : [ "Cosh_36672", "Cosh_36672" ], - "name" : "Multiply_36673", - "op" : "Multiply", - "outputs" : ["Multiply_36673_0"] - }, - { - "inputs" : [ "Cosh_36787", "Cosh_36787" ], - "name" : "Multiply_36788", - "op" : "Multiply", - "outputs" : ["Multiply_36788_0"] - }, - { - "inputs" : [ "Cosh_36780", "Cosh_36780" ], - "name" : "Multiply_36781", - "op" : "Multiply", - "outputs" : ["Multiply_36781_0"] - }, - { - "inputs" : [ "Cosh_36772", "Cosh_36772" ], - "name" : "Multiply_36773", - "op" : "Multiply", - "outputs" : ["Multiply_36773_0"] - }, - { - "inputs" : [ "Cosh_36760", "Cosh_36760" ], - "name" : "Multiply_36761", - "op" : "Multiply", - "outputs" : ["Multiply_36761_0"] - }, - { - "inputs" : [ "Cosh_36767", "Cosh_36767" ], - "name" : "Multiply_36768", - "op" : "Multiply", - "outputs" : ["Multiply_36768_0"] - }, - { - "inputs" : [ "Cosh_36750", "Cosh_36750" ], - "name" : "Multiply_36751", - "op" : "Multiply", - "outputs" : ["Multiply_36751_0"] - }, - { - "inputs" : [ "Cosh_36852", "Cosh_36852" ], - "name" : "Multiply_36853", - "op" : "Multiply", - "outputs" : ["Multiply_36853_0"] - }, - { - "inputs" : [ "Cosh_36735", "Cosh_36735" ], - "name" : "Multiply_36736", - "op" : "Multiply", - "outputs" : ["Multiply_36736_0"] - }, - { - "inputs" : [ "Cosh_36732", "Cosh_36732" ], - "name" : "Multiply_36733", - "op" : "Multiply", - "outputs" : ["Multiply_36733_0"] - }, - { - "inputs" : [ "Cosh_36730", "Cosh_36730" ], - "name" : "Multiply_36731", - "op" : "Multiply", - "outputs" : ["Multiply_36731_0"] - }, - { - "inputs" : [ "Cosh_36702", "Cosh_36702" ], - "name" : "Multiply_36703", - "op" : "Multiply", - "outputs" : ["Multiply_36703_0"] - }, - { - "inputs" : [ "Cosh_36700", "Cosh_36700" ], - "name" : "Multiply_36701", - "op" : "Multiply", - "outputs" : ["Multiply_36701_0"] - }, - { - "inputs" : [ "Cosh_36720", "Cosh_36720" ], - "name" : "Multiply_36721", - "op" : "Multiply", - "outputs" : ["Multiply_36721_0"] - }, - { - "inputs" : [ "Cosh_36717", "Cosh_36717" ], - "name" : "Multiply_36718", - "op" : "Multiply", - "outputs" : ["Multiply_36718_0"] - }, - { - "inputs" : [ "Cosh_36707", "Cosh_36707" ], - "name" : "Multiply_36708", - "op" : "Multiply", - "outputs" : ["Multiply_36708_0"] - }, - { - "inputs" : [ "Cosh_36697", "Cosh_36697" ], - "name" : "Multiply_36698", - "op" : "Multiply", - "outputs" : ["Multiply_36698_0"] - }, - { - "inputs" : [ "Cosh_36695", "Cosh_36695" ], - "name" : "Multiply_36696", - "op" : "Multiply", - "outputs" : ["Multiply_36696_0"] - }, - { - "inputs" : [ "Cosh_36965", "Cosh_36965" ], - "name" : "Multiply_36966", - "op" : "Multiply", - "outputs" : ["Multiply_36966_0"] - }, - { - "inputs" : [ "Cosh_36692", "Cosh_36692" ], - "name" : "Multiply_36693", - "op" : "Multiply", - "outputs" : ["Multiply_36693_0"] - }, - { - "inputs" : [ "Cosh_36680", "Cosh_36680" ], - "name" : "Multiply_36681", - "op" : "Multiply", - "outputs" : ["Multiply_36681_0"] - }, - { - "inputs" : [ "Cosh_36742", "Cosh_36742" ], - "name" : "Multiply_36743", - "op" : "Multiply", - "outputs" : ["Multiply_36743_0"] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 23, 0, 0 ], - "name" : "Slice_36502", - "op" : "Slice", - "outputs" : ["Slice_36502_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 24, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 22, 0, 0 ], - "name" : "Slice_36501", - "op" : "Slice", - "outputs" : ["Slice_36501_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 23, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 39, 0, 0 ], - "name" : "Slice_36524", - "op" : "Slice", - "outputs" : ["Slice_36524_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 40, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 20, 0, 0 ], - "name" : "Slice_36510", - "op" : "Slice", - "outputs" : ["Slice_36510_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 21, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 7, 0, 0 ], - "name" : "Slice_36526", - "op" : "Slice", - "outputs" : ["Slice_36526_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 8, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 40, 0, 0 ], - "name" : "Slice_36525", - "op" : "Slice", - "outputs" : ["Slice_36525_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 41, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 38, 0, 0 ], - "name" : "Slice_36523", - "op" : "Slice", - "outputs" : ["Slice_36523_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 39, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 46, 0, 0 ], - "name" : "Slice_36527", - "op" : "Slice", - "outputs" : ["Slice_36527_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 47, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 27, 0, 0 ], - "name" : "Slice_36514", - "op" : "Slice", - "outputs" : ["Slice_36514_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 28, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 29, 0, 0 ], - "name" : "Slice_36516", - "op" : "Slice", - "outputs" : ["Slice_36516_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 30, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 5, 0, 0 ], - "name" : "Slice_36519", - "op" : "Slice", - "outputs" : ["Slice_36519_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 6, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 31, 0, 0 ], - "name" : "Slice_36518", - "op" : "Slice", - "outputs" : ["Slice_36518_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 28, 0, 0 ], - "name" : "Slice_36515", - "op" : "Slice", - "outputs" : ["Slice_36515_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 29, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 36, 0, 0 ], - "name" : "Slice_36521", - "op" : "Slice", - "outputs" : ["Slice_36521_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 37, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 35, 0, 0 ], - "name" : "Slice_36520", - "op" : "Slice", - "outputs" : ["Slice_36520_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 36, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 30, 0, 0 ], - "name" : "Slice_36517", - "op" : "Slice", - "outputs" : ["Slice_36517_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 31, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 37, 0, 0 ], - "name" : "Slice_36522", - "op" : "Slice", - "outputs" : ["Slice_36522_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 38, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 26, 0, 0 ], - "name" : "Slice_36513", - "op" : "Slice", - "outputs" : ["Slice_36513_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 27, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 25, 0, 0 ], - "name" : "Slice_36512", - "op" : "Slice", - "outputs" : ["Slice_36512_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 26, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 3, 0, 0 ], - "name" : "Slice_36511", - "op" : "Slice", - "outputs" : ["Slice_36511_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 4, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 14, 0, 0 ], - "name" : "Slice_36497", - "op" : "Slice", - "outputs" : ["Slice_36497_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 15, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 11, 0, 0 ], - "name" : "Slice_36494", - "op" : "Slice", - "outputs" : ["Slice_36494_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 12, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 13, 0, 0 ], - "name" : "Slice_36496", - "op" : "Slice", - "outputs" : ["Slice_36496_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 14, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 12, 0, 0 ], - "name" : "Slice_36495", - "op" : "Slice", - "outputs" : ["Slice_36495_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 13, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 10, 0, 0 ], - "name" : "Slice_36493", - "op" : "Slice", - "outputs" : ["Slice_36493_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 11, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 8, 0, 0 ], - "name" : "Slice_36489", - "op" : "Slice", - "outputs" : ["Slice_36489_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 9, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 4, 0, 0 ], - "name" : "Slice_36491", - "op" : "Slice", - "outputs" : ["Slice_36491_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 5, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 6, 0, 0 ], - "name" : "Slice_36490", - "op" : "Slice", - "outputs" : ["Slice_36490_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 7, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 2, 0, 0 ], - "name" : "Slice_36492", - "op" : "Slice", - "outputs" : ["Slice_36492_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 3, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 15, 0, 0 ], - "name" : "Slice_36498", - "op" : "Slice", - "outputs" : ["Slice_36498_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 16, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 16, 0, 0 ], - "name" : "Slice_36499", - "op" : "Slice", - "outputs" : ["Slice_36499_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 17, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 21, 0, 0 ], - "name" : "Slice_36500", - "op" : "Slice", - "outputs" : ["Slice_36500_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 22, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 24, 0, 0 ], - "name" : "Slice_36503", - "op" : "Slice", - "outputs" : ["Slice_36503_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 25, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 9, 0, 0 ], - "name" : "Slice_36504", - "op" : "Slice", - "outputs" : ["Slice_36504_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 1, 0, 0 ], - "name" : "Slice_36505", - "op" : "Slice", - "outputs" : ["Slice_36505_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 2, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 32, 0, 0 ], - "name" : "Slice_36506", - "op" : "Slice", - "outputs" : ["Slice_36506_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 33, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 17, 0, 0 ], - "name" : "Slice_36507", - "op" : "Slice", - "outputs" : ["Slice_36507_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 18, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 19, 0, 0 ], - "name" : "Slice_36509", - "op" : "Slice", - "outputs" : ["Slice_36509_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 20, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 18, 0, 0 ], - "name" : "Slice_36508", - "op" : "Slice", - "outputs" : ["Slice_36508_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 19, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 43, 0, 0 ], - "name" : "Slice_36534", - "op" : "Slice", - "outputs" : ["Slice_36534_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 44, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 42, 0, 0 ], - "name" : "Slice_36533", - "op" : "Slice", - "outputs" : ["Slice_36533_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 43, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 41, 0, 0 ], - "name" : "Slice_36532", - "op" : "Slice", - "outputs" : ["Slice_36532_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 42, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 34, 0, 0 ], - "name" : "Slice_36531", - "op" : "Slice", - "outputs" : ["Slice_36531_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 35, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 33, 0, 0 ], - "name" : "Slice_36530", - "op" : "Slice", - "outputs" : ["Slice_36530_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 34, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 48, 0, 0 ], - "name" : "Slice_36529", - "op" : "Slice", - "outputs" : ["Slice_36529_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 49, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 47, 0, 0 ], - "name" : "Slice_36528", - "op" : "Slice", - "outputs" : ["Slice_36528_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 48, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 49, 0, 0 ], - "name" : "Slice_36537", - "op" : "Slice", - "outputs" : ["Slice_36537_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 50, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 45, 0, 0 ], - "name" : "Slice_36536", - "op" : "Slice", - "outputs" : ["Slice_36536_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 46, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 44, 0, 0 ], - "name" : "Slice_36535", - "op" : "Slice", - "outputs" : ["Slice_36535_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 45, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 50, 0, 0 ], - "name" : "Slice_36538", - "op" : "Slice", - "outputs" : ["Slice_36538_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 51, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 51, 0, 0 ], - "name" : "Slice_36539", - "op" : "Slice", - "outputs" : ["Slice_36539_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 52, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 52, 0, 0 ], - "name" : "Slice_36540", - "op" : "Slice", - "outputs" : ["Slice_36540_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 53, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 53, 0, 0 ], - "name" : "Slice_36541", - "op" : "Slice", - "outputs" : ["Slice_36541_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 54, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 54, 0, 0 ], - "name" : "Slice_36542", - "op" : "Slice", - "outputs" : ["Slice_36542_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 55, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 55, 0, 0 ], - "name" : "Slice_36543", - "op" : "Slice", - "outputs" : ["Slice_36543_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 56, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 56, 0, 0 ], - "name" : "Slice_36544", - "op" : "Slice", - "outputs" : ["Slice_36544_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 57, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 57, 0, 0 ], - "name" : "Slice_36545", - "op" : "Slice", - "outputs" : ["Slice_36545_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 58, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 59, 0, 0 ], - "name" : "Slice_36547", - "op" : "Slice", - "outputs" : ["Slice_36547_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 60, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_36548", - "op" : "Slice", - "outputs" : ["Slice_36548_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 64, 256 ] - }, - { - "inputs" : ["Slice_36308"], - "lower_bounds" : [ 58, 0, 0 ], - "name" : "Slice_36546", - "op" : "Slice", - "outputs" : ["Slice_36546_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 59, 64, 256 ] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36502"], - "name" : "Reshape_36623", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36623_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36501"], - "name" : "Reshape_36622", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36622_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36524"], - "name" : "Reshape_36645", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36645_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36510"], - "name" : "Reshape_36631", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36631_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36526"], - "name" : "Reshape_36647", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36647_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36525"], - "name" : "Reshape_36646", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36646_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36523"], - "name" : "Reshape_36644", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36644_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36527"], - "name" : "Reshape_36648", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36648_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36514"], - "name" : "Reshape_36635", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36635_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36516"], - "name" : "Reshape_36637", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36637_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36519"], - "name" : "Reshape_36640", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36640_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36518"], - "name" : "Reshape_36639", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36639_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36515"], - "name" : "Reshape_36636", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36636_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36521"], - "name" : "Reshape_36642", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36642_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36520"], - "name" : "Reshape_36641", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36641_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36517"], - "name" : "Reshape_36638", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36638_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36522"], - "name" : "Reshape_36643", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36643_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36513"], - "name" : "Reshape_36634", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36634_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36512"], - "name" : "Reshape_36633", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36633_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36511"], - "name" : "Reshape_36632", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36632_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36497"], - "name" : "Reshape_36618", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36618_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36494"], - "name" : "Reshape_36615", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36615_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36496"], - "name" : "Reshape_36617", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36617_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36495"], - "name" : "Reshape_36616", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36616_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36493"], - "name" : "Reshape_36614", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36614_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36489"], - "name" : "Reshape_36610", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36610_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36491"], - "name" : "Reshape_36612", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36612_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36490"], - "name" : "Reshape_36611", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36611_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36492"], - "name" : "Reshape_36613", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36613_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36498"], - "name" : "Reshape_36619", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36619_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36499"], - "name" : "Reshape_36620", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36620_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36500"], - "name" : "Reshape_36621", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36621_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36503"], - "name" : "Reshape_36624", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36624_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36504"], - "name" : "Reshape_36625", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36625_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36505"], - "name" : "Reshape_36626", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36626_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36506"], - "name" : "Reshape_36627", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36627_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36507"], - "name" : "Reshape_36628", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36628_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36509"], - "name" : "Reshape_36630", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36630_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36508"], - "name" : "Reshape_36629", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36629_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36534"], - "name" : "Reshape_36655", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36655_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36533"], - "name" : "Reshape_36654", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36654_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36532"], - "name" : "Reshape_36653", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36653_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36531"], - "name" : "Reshape_36652", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36652_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36530"], - "name" : "Reshape_36651", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36651_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36529"], - "name" : "Reshape_36650", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36650_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36528"], - "name" : "Reshape_36649", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36649_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36537"], - "name" : "Reshape_36658", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36658_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36536"], - "name" : "Reshape_36657", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36657_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36535"], - "name" : "Reshape_36656", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36656_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36538"], - "name" : "Reshape_36659", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36659_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36539"], - "name" : "Reshape_36660", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36660_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36540"], - "name" : "Reshape_36661", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36661_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36541"], - "name" : "Reshape_36662", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36662_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36542"], - "name" : "Reshape_36663", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36663_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36543"], - "name" : "Reshape_36664", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36664_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36544"], - "name" : "Reshape_36665", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36665_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36545"], - "name" : "Reshape_36666", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36666_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36547"], - "name" : "Reshape_36668", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36668_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36548"], - "name" : "Reshape_36669", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36669_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_36546"], - "name" : "Reshape_36667", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_36667_0"] - }, - { - "inputs" : [ "Parameter_36179", "Reshape_36668" ], - "name" : "Multiply_36967", - "op" : "Multiply", - "outputs" : ["Multiply_36967_0"] - }, - { - "inputs" : [ "Reshape_36668", "Parameter_33843" ], - "name" : "Multiply_36970", - "op" : "Multiply", - "outputs" : ["Multiply_36970_0"] - }, - { - "inputs" : [ "Multiply_36967", "Multiply_36969" ], - "name" : "Divide_36971", - "op" : "Divide", - "outputs" : ["Divide_36971_0"] - }, - { - "inputs" : ["Multiply_36970"], - "name" : "Negative_36972", - "op" : "Negative", - "outputs" : ["Negative_36972_0"] - }, - { - "inputs" : [ "Divide_36971", "Parameter_33846" ], - "name" : "Multiply_36973", - "op" : "Multiply", - "outputs" : ["Multiply_36973_0"] - }, - { - "inputs" : [ "Parameter_36172", "Divide_36971" ], - "name" : "Multiply_36974", - "op" : "Multiply", - "outputs" : ["Multiply_36974_0"] - }, - { - "inputs" : [ "Parameter_36164", "Divide_36971" ], - "name" : "Multiply_36975", - "op" : "Multiply", - "outputs" : ["Multiply_36975_0"] - }, - { - "inputs" : [ "Divide_36971", "Parameter_33855" ], - "name" : "Multiply_36976", - "op" : "Multiply", - "outputs" : ["Multiply_36976_0"] - }, - { - "inputs" : [ "Negative_36972", "Parameter_36179" ], - "name" : "Multiply_36977", - "op" : "Multiply", - "outputs" : ["Multiply_36977_0"] - }, - { - "inputs" : ["Multiply_36973"], - "name" : "Negative_36978", - "op" : "Negative", - "outputs" : ["Negative_36978_0"] - }, - { - "inputs" : [ "Multiply_36975", "Multiply_36966" ], - "name" : "Divide_36979", - "op" : "Divide", - "outputs" : ["Divide_36979_0"] - }, - { - "inputs" : ["Multiply_36976"], - "name" : "Negative_36980", - "op" : "Negative", - "outputs" : ["Negative_36980_0"] - }, - { - "inputs" : [ "Multiply_36977", "Parameter_36180" ], - "name" : "Divide_36981", - "op" : "Divide", - "outputs" : ["Divide_36981_0"] - }, - { - "inputs" : [ "Negative_36978", "Parameter_36164" ], - "name" : "Multiply_36982", - "op" : "Multiply", - "outputs" : ["Multiply_36982_0"] - }, - { - "inputs" : [ "Broadcast_36309", "Divide_36979" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_36983", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_36983_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_36980", "Parameter_36172" ], - "name" : "Multiply_36984", - "op" : "Multiply", - "outputs" : ["Multiply_36984_0"] - }, - { - "inputs" : [ "Divide_36981", "Parameter_36181" ], - "name" : "Multiply_36985", - "op" : "Multiply", - "outputs" : ["Multiply_36985_0"] - }, - { - "inputs" : [ "Multiply_36982", "Parameter_36165" ], - "name" : "Divide_36986", - "op" : "Divide", - "outputs" : ["Divide_36986_0"] - }, - { - "inputs" : ["ReplaceSlice_36983"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_36987", - "op" : "Slice", - "outputs" : ["Slice_36987_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_36984", "Parameter_36173" ], - "name" : "Divide_36988", - "op" : "Divide", - "outputs" : ["Divide_36988_0"] - }, - { - "inputs" : ["Multiply_36985"], - "name" : "Negative_36989", - "op" : "Negative", - "outputs" : ["Negative_36989_0"] - }, - { - "inputs" : [ "Divide_36986", "Parameter_36166" ], - "name" : "Multiply_36990", - "op" : "Multiply", - "outputs" : ["Multiply_36990_0"] - }, - { - "inputs" : [ "Divide_36988", "Parameter_36174" ], - "name" : "Multiply_36991", - "op" : "Multiply", - "outputs" : ["Multiply_36991_0"] - }, - { - "inputs" : ["Multiply_36990"], - "name" : "Negative_36992", - "op" : "Negative", - "outputs" : ["Negative_36992_0"] - }, - { - "inputs" : ["Multiply_36991"], - "name" : "Negative_36993", - "op" : "Negative", - "outputs" : ["Negative_36993_0"] - }, - { - "inputs" : [ "Slice_36987", "Negative_36992" ], - "name" : "Add_36994", - "op" : "Add", - "outputs" : ["Add_36994_0"] - }, - { - "inputs" : [ "ReplaceSlice_36983", "Add_36994" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_36995", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_36995_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_36995"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_36996", - "op" : "Slice", - "outputs" : ["Slice_36996_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_36996", "Negative_36993" ], - "name" : "Add_36997", - "op" : "Add", - "outputs" : ["Add_36997_0"] - }, - { - "inputs" : [ "ReplaceSlice_36995", "Add_36997" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_36998", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_36998_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_36998"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_36999", - "op" : "Slice", - "outputs" : ["Slice_36999_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_36999", "Negative_36989" ], - "name" : "Add_37000", - "op" : "Add", - "outputs" : ["Add_37000_0"] - }, - { - "inputs" : [ "ReplaceSlice_36998", "Add_37000" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37001", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37001_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_37001"], - "name" : "Sum_37006", - "op" : "Sum", - "outputs" : ["Sum_37006_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37001", "Reshape_36450" ], - "name" : "Dot_37003", - "op" : "Dot", - "outputs" : ["Dot_37003_0"] - }, - { - "inputs" : [ "Reshape_36964", "ReplaceSlice_37001" ], - "name" : "Dot_37002", - "op" : "Dot", - "outputs" : ["Dot_37002_0"] - }, - { - "inputs" : [ "ReplaceSlice_37001", "Reshape_36378" ], - "name" : "Dot_37007", - "op" : "Dot", - "outputs" : ["Dot_37007_0"] - }, - { - "inputs" : ["ReplaceSlice_37001"], - "name" : "Sum_37005", - "op" : "Sum", - "outputs" : ["Sum_37005_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36608", "ReplaceSlice_37001" ], - "name" : "Dot_37004", - "op" : "Dot", - "outputs" : ["Dot_37004_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37003"], - "name" : "Reshape_37009", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37009_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37002"], - "name" : "Reshape_37008", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37008_0"] - }, - { - "inputs" : [ "Dot_37007", "Reshape_36667" ], - "name" : "Add_37011", - "op" : "Add", - "outputs" : ["Add_37011_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37004"], - "name" : "Reshape_37010", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37010_0"] - }, - { - "inputs" : [ "Broadcast_36369", "Reshape_37009" ], - "lower_bounds" : [ 59, 0, 0 ], - "name" : "ReplaceSlice_37013", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37013_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 60, 64, 256 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37008"], - "name" : "Reshape_37012", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37012_0"] - }, - { - "inputs" : [ "Parameter_36151", "Add_37011" ], - "name" : "Multiply_37015", - "op" : "Multiply", - "outputs" : ["Multiply_37015_0"] - }, - { - "inputs" : [ "Add_37011", "Parameter_33854" ], - "name" : "Multiply_37016", - "op" : "Multiply", - "outputs" : ["Multiply_37016_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37010"], - "name" : "Reshape_37014", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37014_0"] - }, - { - "inputs" : ["ReplaceSlice_37013"], - "lower_bounds" : [ 58, 0, 0 ], - "name" : "Slice_37017", - "op" : "Slice", - "outputs" : ["Slice_37017_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 59, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37015", "Multiply_36963" ], - "name" : "Divide_37018", - "op" : "Divide", - "outputs" : ["Divide_37018_0"] - }, - { - "inputs" : ["Multiply_37016"], - "name" : "Negative_37019", - "op" : "Negative", - "outputs" : ["Negative_37019_0"] - }, - { - "inputs" : [ "Multiply_36974", "Divide_37018" ], - "name" : "Add_37020", - "op" : "Add", - "outputs" : ["Add_37020_0"] - }, - { - "inputs" : [ "Negative_37019", "Parameter_36151" ], - "name" : "Multiply_37021", - "op" : "Multiply", - "outputs" : ["Multiply_37021_0"] - }, - { - "inputs" : [ "Parameter_36144", "Add_37020" ], - "name" : "Multiply_37022", - "op" : "Multiply", - "outputs" : ["Multiply_37022_0"] - }, - { - "inputs" : [ "Add_37020", "Parameter_33857" ], - "name" : "Multiply_37023", - "op" : "Multiply", - "outputs" : ["Multiply_37023_0"] - }, - { - "inputs" : [ "Parameter_36136", "Add_37020" ], - "name" : "Multiply_37024", - "op" : "Multiply", - "outputs" : ["Multiply_37024_0"] - }, - { - "inputs" : [ "Add_37020", "Parameter_33866" ], - "name" : "Multiply_37025", - "op" : "Multiply", - "outputs" : ["Multiply_37025_0"] - }, - { - "inputs" : [ "Multiply_37021", "Parameter_36152" ], - "name" : "Divide_37026", - "op" : "Divide", - "outputs" : ["Divide_37026_0"] - }, - { - "inputs" : ["Multiply_37023"], - "name" : "Negative_37027", - "op" : "Negative", - "outputs" : ["Negative_37027_0"] - }, - { - "inputs" : [ "Multiply_37024", "Multiply_36961" ], - "name" : "Divide_37028", - "op" : "Divide", - "outputs" : ["Divide_37028_0"] - }, - { - "inputs" : ["Multiply_37025"], - "name" : "Negative_37029", - "op" : "Negative", - "outputs" : ["Negative_37029_0"] - }, - { - "inputs" : [ "Divide_37026", "Parameter_36153" ], - "name" : "Multiply_37030", - "op" : "Multiply", - "outputs" : ["Multiply_37030_0"] - }, - { - "inputs" : [ "Negative_37027", "Parameter_36136" ], - "name" : "Multiply_37031", - "op" : "Multiply", - "outputs" : ["Multiply_37031_0"] - }, - { - "inputs" : [ "Broadcast_36310", "Divide_37028" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37032", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37032_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37029", "Parameter_36144" ], - "name" : "Multiply_37033", - "op" : "Multiply", - "outputs" : ["Multiply_37033_0"] - }, - { - "inputs" : ["Multiply_37030"], - "name" : "Negative_37034", - "op" : "Negative", - "outputs" : ["Negative_37034_0"] - }, - { - "inputs" : [ "Multiply_37031", "Parameter_36137" ], - "name" : "Divide_37035", - "op" : "Divide", - "outputs" : ["Divide_37035_0"] - }, - { - "inputs" : ["ReplaceSlice_37032"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37036", - "op" : "Slice", - "outputs" : ["Slice_37036_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37033", "Parameter_36145" ], - "name" : "Divide_37037", - "op" : "Divide", - "outputs" : ["Divide_37037_0"] - }, - { - "inputs" : [ "Divide_37035", "Parameter_36138" ], - "name" : "Multiply_37038", - "op" : "Multiply", - "outputs" : ["Multiply_37038_0"] - }, - { - "inputs" : [ "Divide_37037", "Parameter_36146" ], - "name" : "Multiply_37039", - "op" : "Multiply", - "outputs" : ["Multiply_37039_0"] - }, - { - "inputs" : ["Multiply_37038"], - "name" : "Negative_37040", - "op" : "Negative", - "outputs" : ["Negative_37040_0"] - }, - { - "inputs" : ["Multiply_37039"], - "name" : "Negative_37041", - "op" : "Negative", - "outputs" : ["Negative_37041_0"] - }, - { - "inputs" : [ "Slice_37036", "Negative_37040" ], - "name" : "Add_37042", - "op" : "Add", - "outputs" : ["Add_37042_0"] - }, - { - "inputs" : [ "ReplaceSlice_37032", "Add_37042" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37043", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37043_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37043"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37044", - "op" : "Slice", - "outputs" : ["Slice_37044_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37044", "Negative_37041" ], - "name" : "Add_37045", - "op" : "Add", - "outputs" : ["Add_37045_0"] - }, - { - "inputs" : [ "ReplaceSlice_37043", "Add_37045" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37046", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37046_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37046"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37047", - "op" : "Slice", - "outputs" : ["Slice_37047_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37047", "Negative_37034" ], - "name" : "Add_37048", - "op" : "Add", - "outputs" : ["Add_37048_0"] - }, - { - "inputs" : [ "ReplaceSlice_37046", "Add_37048" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37049", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37049_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36959", "ReplaceSlice_37049" ], - "name" : "Dot_37051", - "op" : "Dot", - "outputs" : ["Dot_37051_0"] - }, - { - "inputs" : [ "ReplaceSlice_37049", "Reshape_36453" ], - "name" : "Dot_37052", - "op" : "Dot", - "outputs" : ["Dot_37052_0"] - }, - { - "inputs" : [ "Reshape_36606", "ReplaceSlice_37049" ], - "name" : "Dot_37054", - "op" : "Dot", - "outputs" : ["Dot_37054_0"] - }, - { - "inputs" : [ "ReplaceSlice_37049", "Reshape_36394" ], - "name" : "Dot_37053", - "op" : "Dot", - "outputs" : ["Dot_37053_0"] - }, - { - "inputs" : ["ReplaceSlice_37049"], - "name" : "Sum_37055", - "op" : "Sum", - "outputs" : ["Sum_37055_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_37049"], - "name" : "Sum_37050", - "op" : "Sum", - "outputs" : ["Sum_37050_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37051"], - "name" : "Reshape_37057", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37057_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37052"], - "name" : "Reshape_37058", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37058_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37054"], - "name" : "Reshape_37060", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37060_0"] - }, - { - "inputs" : [ "Dot_37053", "Reshape_36666" ], - "name" : "Add_37059", - "op" : "Add", - "outputs" : ["Add_37059_0"] - }, - { - "inputs" : [ "Sum_37006", "Sum_37055" ], - "name" : "Add_37061", - "op" : "Add", - "outputs" : ["Add_37061_0"] - }, - { - "inputs" : [ "Sum_37005", "Sum_37050" ], - "name" : "Add_37056", - "op" : "Add", - "outputs" : ["Add_37056_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37057"], - "name" : "Reshape_37062", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37062_0"] - }, - { - "inputs" : [ "Slice_37017", "Reshape_37058" ], - "name" : "Add_37063", - "op" : "Add", - "outputs" : ["Add_37063_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37060"], - "name" : "Reshape_37066", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37066_0"] - }, - { - "inputs" : [ "Add_37059", "Parameter_33865" ], - "name" : "Multiply_37064", - "op" : "Multiply", - "outputs" : ["Multiply_37064_0"] - }, - { - "inputs" : [ "Parameter_36123", "Add_37059" ], - "name" : "Multiply_37065", - "op" : "Multiply", - "outputs" : ["Multiply_37065_0"] - }, - { - "inputs" : [ "Reshape_37012", "Reshape_37062" ], - "name" : "Add_37067", - "op" : "Add", - "outputs" : ["Add_37067_0"] - }, - { - "inputs" : [ "ReplaceSlice_37013", "Add_37063" ], - "lower_bounds" : [ 58, 0, 0 ], - "name" : "ReplaceSlice_37068", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37068_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 59, 64, 256 ] - }, - { - "inputs" : [ "Reshape_37014", "Reshape_37066" ], - "name" : "Add_37071", - "op" : "Add", - "outputs" : ["Add_37071_0"] - }, - { - "inputs" : ["Multiply_37064"], - "name" : "Negative_37069", - "op" : "Negative", - "outputs" : ["Negative_37069_0"] - }, - { - "inputs" : [ "Multiply_37065", "Multiply_36958" ], - "name" : "Divide_37070", - "op" : "Divide", - "outputs" : ["Divide_37070_0"] - }, - { - "inputs" : ["ReplaceSlice_37068"], - "lower_bounds" : [ 57, 0, 0 ], - "name" : "Slice_37072", - "op" : "Slice", - "outputs" : ["Slice_37072_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 58, 64, 256 ] - }, - { - "inputs" : [ "Negative_37069", "Parameter_36123" ], - "name" : "Multiply_37073", - "op" : "Multiply", - "outputs" : ["Multiply_37073_0"] - }, - { - "inputs" : [ "Multiply_37022", "Divide_37070" ], - "name" : "Add_37074", - "op" : "Add", - "outputs" : ["Add_37074_0"] - }, - { - "inputs" : [ "Multiply_37073", "Parameter_36124" ], - "name" : "Divide_37075", - "op" : "Divide", - "outputs" : ["Divide_37075_0"] - }, - { - "inputs" : [ "Add_37074", "Parameter_33877" ], - "name" : "Multiply_37076", - "op" : "Multiply", - "outputs" : ["Multiply_37076_0"] - }, - { - "inputs" : [ "Parameter_36108", "Add_37074" ], - "name" : "Multiply_37077", - "op" : "Multiply", - "outputs" : ["Multiply_37077_0"] - }, - { - "inputs" : [ "Add_37074", "Parameter_33868" ], - "name" : "Multiply_37078", - "op" : "Multiply", - "outputs" : ["Multiply_37078_0"] - }, - { - "inputs" : [ "Parameter_36116", "Add_37074" ], - "name" : "Multiply_37079", - "op" : "Multiply", - "outputs" : ["Multiply_37079_0"] - }, - { - "inputs" : [ "Divide_37075", "Parameter_36125" ], - "name" : "Multiply_37080", - "op" : "Multiply", - "outputs" : ["Multiply_37080_0"] - }, - { - "inputs" : ["Multiply_37076"], - "name" : "Negative_37081", - "op" : "Negative", - "outputs" : ["Negative_37081_0"] - }, - { - "inputs" : [ "Multiply_37077", "Multiply_36956" ], - "name" : "Divide_37082", - "op" : "Divide", - "outputs" : ["Divide_37082_0"] - }, - { - "inputs" : ["Multiply_37078"], - "name" : "Negative_37083", - "op" : "Negative", - "outputs" : ["Negative_37083_0"] - }, - { - "inputs" : ["Multiply_37080"], - "name" : "Negative_37084", - "op" : "Negative", - "outputs" : ["Negative_37084_0"] - }, - { - "inputs" : [ "Negative_37081", "Parameter_36116" ], - "name" : "Multiply_37085", - "op" : "Multiply", - "outputs" : ["Multiply_37085_0"] - }, - { - "inputs" : [ "Broadcast_36311", "Divide_37082" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37086", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37086_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37083", "Parameter_36108" ], - "name" : "Multiply_37087", - "op" : "Multiply", - "outputs" : ["Multiply_37087_0"] - }, - { - "inputs" : [ "Multiply_37085", "Parameter_36117" ], - "name" : "Divide_37088", - "op" : "Divide", - "outputs" : ["Divide_37088_0"] - }, - { - "inputs" : ["ReplaceSlice_37086"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37089", - "op" : "Slice", - "outputs" : ["Slice_37089_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37087", "Parameter_36109" ], - "name" : "Divide_37090", - "op" : "Divide", - "outputs" : ["Divide_37090_0"] - }, - { - "inputs" : [ "Divide_37088", "Parameter_36118" ], - "name" : "Multiply_37091", - "op" : "Multiply", - "outputs" : ["Multiply_37091_0"] - }, - { - "inputs" : [ "Divide_37090", "Parameter_36110" ], - "name" : "Multiply_37092", - "op" : "Multiply", - "outputs" : ["Multiply_37092_0"] - }, - { - "inputs" : ["Multiply_37091"], - "name" : "Negative_37093", - "op" : "Negative", - "outputs" : ["Negative_37093_0"] - }, - { - "inputs" : ["Multiply_37092"], - "name" : "Negative_37094", - "op" : "Negative", - "outputs" : ["Negative_37094_0"] - }, - { - "inputs" : [ "Slice_37089", "Negative_37094" ], - "name" : "Add_37095", - "op" : "Add", - "outputs" : ["Add_37095_0"] - }, - { - "inputs" : [ "ReplaceSlice_37086", "Add_37095" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37096", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37096_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37096"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37097", - "op" : "Slice", - "outputs" : ["Slice_37097_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37097", "Negative_37093" ], - "name" : "Add_37098", - "op" : "Add", - "outputs" : ["Add_37098_0"] - }, - { - "inputs" : [ "ReplaceSlice_37096", "Add_37098" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37099", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37099_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37099"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37100", - "op" : "Slice", - "outputs" : ["Slice_37100_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37100", "Negative_37084" ], - "name" : "Add_37101", - "op" : "Add", - "outputs" : ["Add_37101_0"] - }, - { - "inputs" : [ "ReplaceSlice_37099", "Add_37101" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37102", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37102_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36954", "ReplaceSlice_37102" ], - "name" : "Dot_37105", - "op" : "Dot", - "outputs" : ["Dot_37105_0"] - }, - { - "inputs" : [ "ReplaceSlice_37102", "Reshape_36465" ], - "name" : "Dot_37103", - "op" : "Dot", - "outputs" : ["Dot_37103_0"] - }, - { - "inputs" : ["ReplaceSlice_37102"], - "name" : "Sum_37106", - "op" : "Sum", - "outputs" : ["Sum_37106_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37102", "Reshape_36390" ], - "name" : "Dot_37104", - "op" : "Dot", - "outputs" : ["Dot_37104_0"] - }, - { - "inputs" : ["ReplaceSlice_37102"], - "name" : "Sum_37107", - "op" : "Sum", - "outputs" : ["Sum_37107_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36607", "ReplaceSlice_37102" ], - "name" : "Dot_37108", - "op" : "Dot", - "outputs" : ["Dot_37108_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37105"], - "name" : "Reshape_37111", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37111_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37103"], - "name" : "Reshape_37109", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37109_0"] - }, - { - "inputs" : [ "Add_37061", "Sum_37106" ], - "name" : "Add_37112", - "op" : "Add", - "outputs" : ["Add_37112_0"] - }, - { - "inputs" : [ "Dot_37104", "Reshape_36665" ], - "name" : "Add_37110", - "op" : "Add", - "outputs" : ["Add_37110_0"] - }, - { - "inputs" : [ "Add_37056", "Sum_37107" ], - "name" : "Add_37113", - "op" : "Add", - "outputs" : ["Add_37113_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37108"], - "name" : "Reshape_37114", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37114_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37111"], - "name" : "Reshape_37118", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37118_0"] - }, - { - "inputs" : [ "Slice_37072", "Reshape_37109" ], - "name" : "Add_37115", - "op" : "Add", - "outputs" : ["Add_37115_0"] - }, - { - "inputs" : [ "Parameter_36095", "Add_37110" ], - "name" : "Multiply_37116", - "op" : "Multiply", - "outputs" : ["Multiply_37116_0"] - }, - { - "inputs" : [ "Add_37110", "Parameter_33876" ], - "name" : "Multiply_37117", - "op" : "Multiply", - "outputs" : ["Multiply_37117_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37114"], - "name" : "Reshape_37119", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37119_0"] - }, - { - "inputs" : [ "Add_37067", "Reshape_37118" ], - "name" : "Add_37123", - "op" : "Add", - "outputs" : ["Add_37123_0"] - }, - { - "inputs" : [ "ReplaceSlice_37068", "Add_37115" ], - "lower_bounds" : [ 57, 0, 0 ], - "name" : "ReplaceSlice_37120", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37120_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 58, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37116", "Multiply_36953" ], - "name" : "Divide_37121", - "op" : "Divide", - "outputs" : ["Divide_37121_0"] - }, - { - "inputs" : ["Multiply_37117"], - "name" : "Negative_37122", - "op" : "Negative", - "outputs" : ["Negative_37122_0"] - }, - { - "inputs" : [ "Add_37071", "Reshape_37119" ], - "name" : "Add_37124", - "op" : "Add", - "outputs" : ["Add_37124_0"] - }, - { - "inputs" : ["ReplaceSlice_37120"], - "lower_bounds" : [ 56, 0, 0 ], - "name" : "Slice_37125", - "op" : "Slice", - "outputs" : ["Slice_37125_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 57, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37079", "Divide_37121" ], - "name" : "Add_37126", - "op" : "Add", - "outputs" : ["Add_37126_0"] - }, - { - "inputs" : [ "Negative_37122", "Parameter_36095" ], - "name" : "Multiply_37127", - "op" : "Multiply", - "outputs" : ["Multiply_37127_0"] - }, - { - "inputs" : [ "Parameter_36080", "Add_37126" ], - "name" : "Multiply_37131", - "op" : "Multiply", - "outputs" : ["Multiply_37131_0"] - }, - { - "inputs" : [ "Add_37126", "Parameter_33879" ], - "name" : "Multiply_37130", - "op" : "Multiply", - "outputs" : ["Multiply_37130_0"] - }, - { - "inputs" : [ "Parameter_36088", "Add_37126" ], - "name" : "Multiply_37128", - "op" : "Multiply", - "outputs" : ["Multiply_37128_0"] - }, - { - "inputs" : [ "Add_37126", "Parameter_33888" ], - "name" : "Multiply_37129", - "op" : "Multiply", - "outputs" : ["Multiply_37129_0"] - }, - { - "inputs" : [ "Multiply_37127", "Parameter_36096" ], - "name" : "Divide_37132", - "op" : "Divide", - "outputs" : ["Divide_37132_0"] - }, - { - "inputs" : [ "Multiply_37131", "Multiply_36951" ], - "name" : "Divide_37135", - "op" : "Divide", - "outputs" : ["Divide_37135_0"] - }, - { - "inputs" : ["Multiply_37130"], - "name" : "Negative_37134", - "op" : "Negative", - "outputs" : ["Negative_37134_0"] - }, - { - "inputs" : ["Multiply_37129"], - "name" : "Negative_37133", - "op" : "Negative", - "outputs" : ["Negative_37133_0"] - }, - { - "inputs" : [ "Divide_37132", "Parameter_36097" ], - "name" : "Multiply_37136", - "op" : "Multiply", - "outputs" : ["Multiply_37136_0"] - }, - { - "inputs" : [ "Broadcast_36312", "Divide_37135" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37139", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37139_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37134", "Parameter_36080" ], - "name" : "Multiply_37138", - "op" : "Multiply", - "outputs" : ["Multiply_37138_0"] - }, - { - "inputs" : [ "Negative_37133", "Parameter_36088" ], - "name" : "Multiply_37137", - "op" : "Multiply", - "outputs" : ["Multiply_37137_0"] - }, - { - "inputs" : ["Multiply_37136"], - "name" : "Negative_37140", - "op" : "Negative", - "outputs" : ["Negative_37140_0"] - }, - { - "inputs" : ["ReplaceSlice_37139"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37143", - "op" : "Slice", - "outputs" : ["Slice_37143_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37138", "Parameter_36081" ], - "name" : "Divide_37142", - "op" : "Divide", - "outputs" : ["Divide_37142_0"] - }, - { - "inputs" : [ "Multiply_37137", "Parameter_36089" ], - "name" : "Divide_37141", - "op" : "Divide", - "outputs" : ["Divide_37141_0"] - }, - { - "inputs" : [ "Divide_37142", "Parameter_36082" ], - "name" : "Multiply_37145", - "op" : "Multiply", - "outputs" : ["Multiply_37145_0"] - }, - { - "inputs" : [ "Divide_37141", "Parameter_36090" ], - "name" : "Multiply_37144", - "op" : "Multiply", - "outputs" : ["Multiply_37144_0"] - }, - { - "inputs" : ["Multiply_37145"], - "name" : "Negative_37147", - "op" : "Negative", - "outputs" : ["Negative_37147_0"] - }, - { - "inputs" : ["Multiply_37144"], - "name" : "Negative_37146", - "op" : "Negative", - "outputs" : ["Negative_37146_0"] - }, - { - "inputs" : [ "Slice_37143", "Negative_37147" ], - "name" : "Add_37148", - "op" : "Add", - "outputs" : ["Add_37148_0"] - }, - { - "inputs" : [ "ReplaceSlice_37139", "Add_37148" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37149", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37149_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37149"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37150", - "op" : "Slice", - "outputs" : ["Slice_37150_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37150", "Negative_37146" ], - "name" : "Add_37151", - "op" : "Add", - "outputs" : ["Add_37151_0"] - }, - { - "inputs" : [ "ReplaceSlice_37149", "Add_37151" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37152", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37152_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37152"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37153", - "op" : "Slice", - "outputs" : ["Slice_37153_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37153", "Negative_37140" ], - "name" : "Add_37154", - "op" : "Add", - "outputs" : ["Add_37154_0"] - }, - { - "inputs" : [ "ReplaceSlice_37152", "Add_37154" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37155", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37155_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37155", "Reshape_36380" ], - "name" : "Dot_37161", - "op" : "Dot", - "outputs" : ["Dot_37161_0"] - }, - { - "inputs" : ["ReplaceSlice_37155"], - "name" : "Sum_37156", - "op" : "Sum", - "outputs" : ["Sum_37156_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_37155"], - "name" : "Sum_37160", - "op" : "Sum", - "outputs" : ["Sum_37160_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37155", "Reshape_36454" ], - "name" : "Dot_37159", - "op" : "Dot", - "outputs" : ["Dot_37159_0"] - }, - { - "inputs" : [ "Reshape_36949", "ReplaceSlice_37155" ], - "name" : "Dot_37158", - "op" : "Dot", - "outputs" : ["Dot_37158_0"] - }, - { - "inputs" : [ "Reshape_36605", "ReplaceSlice_37155" ], - "name" : "Dot_37157", - "op" : "Dot", - "outputs" : ["Dot_37157_0"] - }, - { - "inputs" : [ "Dot_37161", "Reshape_36664" ], - "name" : "Add_37167", - "op" : "Add", - "outputs" : ["Add_37167_0"] - }, - { - "inputs" : [ "Add_37113", "Sum_37156" ], - "name" : "Add_37162", - "op" : "Add", - "outputs" : ["Add_37162_0"] - }, - { - "inputs" : [ "Add_37112", "Sum_37160" ], - "name" : "Add_37166", - "op" : "Add", - "outputs" : ["Add_37166_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37159"], - "name" : "Reshape_37165", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37165_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37158"], - "name" : "Reshape_37164", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37164_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37157"], - "name" : "Reshape_37163", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37163_0"] - }, - { - "inputs" : [ "Add_37167", "Parameter_33887" ], - "name" : "Multiply_37172", - "op" : "Multiply", - "outputs" : ["Multiply_37172_0"] - }, - { - "inputs" : [ "Parameter_36067", "Add_37167" ], - "name" : "Multiply_37171", - "op" : "Multiply", - "outputs" : ["Multiply_37171_0"] - }, - { - "inputs" : [ "Slice_37125", "Reshape_37165" ], - "name" : "Add_37170", - "op" : "Add", - "outputs" : ["Add_37170_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37164"], - "name" : "Reshape_37169", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37169_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37163"], - "name" : "Reshape_37168", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37168_0"] - }, - { - "inputs" : ["Multiply_37172"], - "name" : "Negative_37177", - "op" : "Negative", - "outputs" : ["Negative_37177_0"] - }, - { - "inputs" : [ "Multiply_37171", "Multiply_36948" ], - "name" : "Divide_37176", - "op" : "Divide", - "outputs" : ["Divide_37176_0"] - }, - { - "inputs" : [ "ReplaceSlice_37120", "Add_37170" ], - "lower_bounds" : [ 56, 0, 0 ], - "name" : "ReplaceSlice_37175", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37175_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 57, 64, 256 ] - }, - { - "inputs" : [ "Add_37123", "Reshape_37169" ], - "name" : "Add_37174", - "op" : "Add", - "outputs" : ["Add_37174_0"] - }, - { - "inputs" : [ "Add_37124", "Reshape_37168" ], - "name" : "Add_37173", - "op" : "Add", - "outputs" : ["Add_37173_0"] - }, - { - "inputs" : [ "Negative_37177", "Parameter_36067" ], - "name" : "Multiply_37180", - "op" : "Multiply", - "outputs" : ["Multiply_37180_0"] - }, - { - "inputs" : [ "Multiply_37128", "Divide_37176" ], - "name" : "Add_37179", - "op" : "Add", - "outputs" : ["Add_37179_0"] - }, - { - "inputs" : ["ReplaceSlice_37175"], - "lower_bounds" : [ 55, 0, 0 ], - "name" : "Slice_37178", - "op" : "Slice", - "outputs" : ["Slice_37178_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 56, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37180", "Parameter_36068" ], - "name" : "Divide_37185", - "op" : "Divide", - "outputs" : ["Divide_37185_0"] - }, - { - "inputs" : [ "Parameter_36060", "Add_37179" ], - "name" : "Multiply_37183", - "op" : "Multiply", - "outputs" : ["Multiply_37183_0"] - }, - { - "inputs" : [ "Add_37179", "Parameter_33899" ], - "name" : "Multiply_37184", - "op" : "Multiply", - "outputs" : ["Multiply_37184_0"] - }, - { - "inputs" : [ "Parameter_36052", "Add_37179" ], - "name" : "Multiply_37181", - "op" : "Multiply", - "outputs" : ["Multiply_37181_0"] - }, - { - "inputs" : [ "Add_37179", "Parameter_33890" ], - "name" : "Multiply_37182", - "op" : "Multiply", - "outputs" : ["Multiply_37182_0"] - }, - { - "inputs" : [ "Divide_37185", "Parameter_36069" ], - "name" : "Multiply_37189", - "op" : "Multiply", - "outputs" : ["Multiply_37189_0"] - }, - { - "inputs" : ["Multiply_37184"], - "name" : "Negative_37188", - "op" : "Negative", - "outputs" : ["Negative_37188_0"] - }, - { - "inputs" : [ "Multiply_37181", "Multiply_36946" ], - "name" : "Divide_37186", - "op" : "Divide", - "outputs" : ["Divide_37186_0"] - }, - { - "inputs" : ["Multiply_37182"], - "name" : "Negative_37187", - "op" : "Negative", - "outputs" : ["Negative_37187_0"] - }, - { - "inputs" : ["Multiply_37189"], - "name" : "Negative_37193", - "op" : "Negative", - "outputs" : ["Negative_37193_0"] - }, - { - "inputs" : [ "Negative_37188", "Parameter_36060" ], - "name" : "Multiply_37192", - "op" : "Multiply", - "outputs" : ["Multiply_37192_0"] - }, - { - "inputs" : [ "Broadcast_36313", "Divide_37186" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37190", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37190_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37187", "Parameter_36052" ], - "name" : "Multiply_37191", - "op" : "Multiply", - "outputs" : ["Multiply_37191_0"] - }, - { - "inputs" : [ "Multiply_37192", "Parameter_36061" ], - "name" : "Divide_37196", - "op" : "Divide", - "outputs" : ["Divide_37196_0"] - }, - { - "inputs" : ["ReplaceSlice_37190"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37194", - "op" : "Slice", - "outputs" : ["Slice_37194_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37191", "Parameter_36053" ], - "name" : "Divide_37195", - "op" : "Divide", - "outputs" : ["Divide_37195_0"] - }, - { - "inputs" : [ "Divide_37196", "Parameter_36062" ], - "name" : "Multiply_37198", - "op" : "Multiply", - "outputs" : ["Multiply_37198_0"] - }, - { - "inputs" : [ "Divide_37195", "Parameter_36054" ], - "name" : "Multiply_37197", - "op" : "Multiply", - "outputs" : ["Multiply_37197_0"] - }, - { - "inputs" : ["Multiply_37198"], - "name" : "Negative_37200", - "op" : "Negative", - "outputs" : ["Negative_37200_0"] - }, - { - "inputs" : ["Multiply_37197"], - "name" : "Negative_37199", - "op" : "Negative", - "outputs" : ["Negative_37199_0"] - }, - { - "inputs" : [ "Slice_37194", "Negative_37199" ], - "name" : "Add_37201", - "op" : "Add", - "outputs" : ["Add_37201_0"] - }, - { - "inputs" : [ "ReplaceSlice_37190", "Add_37201" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37202", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37202_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37202"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37203", - "op" : "Slice", - "outputs" : ["Slice_37203_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37203", "Negative_37200" ], - "name" : "Add_37204", - "op" : "Add", - "outputs" : ["Add_37204_0"] - }, - { - "inputs" : [ "ReplaceSlice_37202", "Add_37204" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37205", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37205_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37205"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37206", - "op" : "Slice", - "outputs" : ["Slice_37206_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37206", "Negative_37193" ], - "name" : "Add_37207", - "op" : "Add", - "outputs" : ["Add_37207_0"] - }, - { - "inputs" : [ "ReplaceSlice_37205", "Add_37207" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37208", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37208_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36944", "ReplaceSlice_37208" ], - "name" : "Dot_37211", - "op" : "Dot", - "outputs" : ["Dot_37211_0"] - }, - { - "inputs" : [ "ReplaceSlice_37208", "Reshape_36452" ], - "name" : "Dot_37210", - "op" : "Dot", - "outputs" : ["Dot_37210_0"] - }, - { - "inputs" : ["ReplaceSlice_37208"], - "name" : "Sum_37213", - "op" : "Sum", - "outputs" : ["Sum_37213_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36593", "ReplaceSlice_37208" ], - "name" : "Dot_37212", - "op" : "Dot", - "outputs" : ["Dot_37212_0"] - }, - { - "inputs" : ["ReplaceSlice_37208"], - "name" : "Sum_37214", - "op" : "Sum", - "outputs" : ["Sum_37214_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37208", "Reshape_36377" ], - "name" : "Dot_37209", - "op" : "Dot", - "outputs" : ["Dot_37209_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37211"], - "name" : "Reshape_37217", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37217_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37210"], - "name" : "Reshape_37216", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37216_0"] - }, - { - "inputs" : [ "Add_37162", "Sum_37213" ], - "name" : "Add_37219", - "op" : "Add", - "outputs" : ["Add_37219_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37212"], - "name" : "Reshape_37218", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37218_0"] - }, - { - "inputs" : [ "Add_37166", "Sum_37214" ], - "name" : "Add_37220", - "op" : "Add", - "outputs" : ["Add_37220_0"] - }, - { - "inputs" : [ "Dot_37209", "Reshape_36663" ], - "name" : "Add_37215", - "op" : "Add", - "outputs" : ["Add_37215_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37217"], - "name" : "Reshape_37224", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37224_0"] - }, - { - "inputs" : [ "Slice_37178", "Reshape_37216" ], - "name" : "Add_37223", - "op" : "Add", - "outputs" : ["Add_37223_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37218"], - "name" : "Reshape_37225", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37225_0"] - }, - { - "inputs" : [ "Parameter_36039", "Add_37215" ], - "name" : "Multiply_37221", - "op" : "Multiply", - "outputs" : ["Multiply_37221_0"] - }, - { - "inputs" : [ "Add_37215", "Parameter_33898" ], - "name" : "Multiply_37222", - "op" : "Multiply", - "outputs" : ["Multiply_37222_0"] - }, - { - "inputs" : [ "Add_37174", "Reshape_37224" ], - "name" : "Add_37229", - "op" : "Add", - "outputs" : ["Add_37229_0"] - }, - { - "inputs" : [ "ReplaceSlice_37175", "Add_37223" ], - "lower_bounds" : [ 55, 0, 0 ], - "name" : "ReplaceSlice_37228", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37228_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 56, 64, 256 ] - }, - { - "inputs" : [ "Add_37173", "Reshape_37225" ], - "name" : "Add_37230", - "op" : "Add", - "outputs" : ["Add_37230_0"] - }, - { - "inputs" : [ "Multiply_37221", "Multiply_36943" ], - "name" : "Divide_37226", - "op" : "Divide", - "outputs" : ["Divide_37226_0"] - }, - { - "inputs" : ["Multiply_37222"], - "name" : "Negative_37227", - "op" : "Negative", - "outputs" : ["Negative_37227_0"] - }, - { - "inputs" : ["ReplaceSlice_37228"], - "lower_bounds" : [ 54, 0, 0 ], - "name" : "Slice_37233", - "op" : "Slice", - "outputs" : ["Slice_37233_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 55, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37183", "Divide_37226" ], - "name" : "Add_37231", - "op" : "Add", - "outputs" : ["Add_37231_0"] - }, - { - "inputs" : [ "Negative_37227", "Parameter_36039" ], - "name" : "Multiply_37232", - "op" : "Multiply", - "outputs" : ["Multiply_37232_0"] - }, - { - "inputs" : [ "Parameter_36024", "Add_37231" ], - "name" : "Multiply_37234", - "op" : "Multiply", - "outputs" : ["Multiply_37234_0"] - }, - { - "inputs" : [ "Parameter_36032", "Add_37231" ], - "name" : "Multiply_37235", - "op" : "Multiply", - "outputs" : ["Multiply_37235_0"] - }, - { - "inputs" : [ "Add_37231", "Parameter_33901" ], - "name" : "Multiply_37236", - "op" : "Multiply", - "outputs" : ["Multiply_37236_0"] - }, - { - "inputs" : [ "Add_37231", "Parameter_33910" ], - "name" : "Multiply_37237", - "op" : "Multiply", - "outputs" : ["Multiply_37237_0"] - }, - { - "inputs" : [ "Multiply_37232", "Parameter_36040" ], - "name" : "Divide_37238", - "op" : "Divide", - "outputs" : ["Divide_37238_0"] - }, - { - "inputs" : [ "Multiply_37234", "Multiply_36941" ], - "name" : "Divide_37239", - "op" : "Divide", - "outputs" : ["Divide_37239_0"] - }, - { - "inputs" : ["Multiply_37236"], - "name" : "Negative_37240", - "op" : "Negative", - "outputs" : ["Negative_37240_0"] - }, - { - "inputs" : ["Multiply_37237"], - "name" : "Negative_37241", - "op" : "Negative", - "outputs" : ["Negative_37241_0"] - }, - { - "inputs" : [ "Divide_37238", "Parameter_36041" ], - "name" : "Multiply_37242", - "op" : "Multiply", - "outputs" : ["Multiply_37242_0"] - }, - { - "inputs" : [ "Broadcast_36314", "Divide_37239" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37243", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37243_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37240", "Parameter_36024" ], - "name" : "Multiply_37244", - "op" : "Multiply", - "outputs" : ["Multiply_37244_0"] - }, - { - "inputs" : [ "Negative_37241", "Parameter_36032" ], - "name" : "Multiply_37245", - "op" : "Multiply", - "outputs" : ["Multiply_37245_0"] - }, - { - "inputs" : ["Multiply_37242"], - "name" : "Negative_37246", - "op" : "Negative", - "outputs" : ["Negative_37246_0"] - }, - { - "inputs" : ["ReplaceSlice_37243"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37247", - "op" : "Slice", - "outputs" : ["Slice_37247_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37244", "Parameter_36025" ], - "name" : "Divide_37248", - "op" : "Divide", - "outputs" : ["Divide_37248_0"] - }, - { - "inputs" : [ "Multiply_37245", "Parameter_36033" ], - "name" : "Divide_37249", - "op" : "Divide", - "outputs" : ["Divide_37249_0"] - }, - { - "inputs" : [ "Divide_37248", "Parameter_36026" ], - "name" : "Multiply_37250", - "op" : "Multiply", - "outputs" : ["Multiply_37250_0"] - }, - { - "inputs" : [ "Divide_37249", "Parameter_36034" ], - "name" : "Multiply_37251", - "op" : "Multiply", - "outputs" : ["Multiply_37251_0"] - }, - { - "inputs" : ["Multiply_37250"], - "name" : "Negative_37252", - "op" : "Negative", - "outputs" : ["Negative_37252_0"] - }, - { - "inputs" : ["Multiply_37251"], - "name" : "Negative_37253", - "op" : "Negative", - "outputs" : ["Negative_37253_0"] - }, - { - "inputs" : [ "Slice_37247", "Negative_37252" ], - "name" : "Add_37254", - "op" : "Add", - "outputs" : ["Add_37254_0"] - }, - { - "inputs" : [ "ReplaceSlice_37243", "Add_37254" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37255", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37255_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37255"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37256", - "op" : "Slice", - "outputs" : ["Slice_37256_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37256", "Negative_37253" ], - "name" : "Add_37257", - "op" : "Add", - "outputs" : ["Add_37257_0"] - }, - { - "inputs" : [ "ReplaceSlice_37255", "Add_37257" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37258", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37258_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37258"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37259", - "op" : "Slice", - "outputs" : ["Slice_37259_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37259", "Negative_37246" ], - "name" : "Add_37260", - "op" : "Add", - "outputs" : ["Add_37260_0"] - }, - { - "inputs" : [ "ReplaceSlice_37258", "Add_37260" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37261", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37261_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36939", "ReplaceSlice_37261" ], - "name" : "Dot_37266", - "op" : "Dot", - "outputs" : ["Dot_37266_0"] - }, - { - "inputs" : ["ReplaceSlice_37261"], - "name" : "Sum_37262", - "op" : "Sum", - "outputs" : ["Sum_37262_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37261", "Reshape_36461" ], - "name" : "Dot_37264", - "op" : "Dot", - "outputs" : ["Dot_37264_0"] - }, - { - "inputs" : [ "Reshape_36603", "ReplaceSlice_37261" ], - "name" : "Dot_37263", - "op" : "Dot", - "outputs" : ["Dot_37263_0"] - }, - { - "inputs" : [ "ReplaceSlice_37261", "Reshape_36389" ], - "name" : "Dot_37265", - "op" : "Dot", - "outputs" : ["Dot_37265_0"] - }, - { - "inputs" : ["ReplaceSlice_37261"], - "name" : "Sum_37267", - "op" : "Sum", - "outputs" : ["Sum_37267_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37266"], - "name" : "Reshape_37272", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37272_0"] - }, - { - "inputs" : [ "Add_37220", "Sum_37262" ], - "name" : "Add_37268", - "op" : "Add", - "outputs" : ["Add_37268_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37264"], - "name" : "Reshape_37270", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37270_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37263"], - "name" : "Reshape_37269", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37269_0"] - }, - { - "inputs" : [ "Dot_37265", "Reshape_36662" ], - "name" : "Add_37271", - "op" : "Add", - "outputs" : ["Add_37271_0"] - }, - { - "inputs" : [ "Add_37219", "Sum_37267" ], - "name" : "Add_37273", - "op" : "Add", - "outputs" : ["Add_37273_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37272"], - "name" : "Reshape_37278", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37278_0"] - }, - { - "inputs" : [ "Slice_37233", "Reshape_37270" ], - "name" : "Add_37275", - "op" : "Add", - "outputs" : ["Add_37275_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37269"], - "name" : "Reshape_37274", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37274_0"] - }, - { - "inputs" : [ "Parameter_36011", "Add_37271" ], - "name" : "Multiply_37276", - "op" : "Multiply", - "outputs" : ["Multiply_37276_0"] - }, - { - "inputs" : [ "Add_37271", "Parameter_33909" ], - "name" : "Multiply_37277", - "op" : "Multiply", - "outputs" : ["Multiply_37277_0"] - }, - { - "inputs" : [ "Add_37229", "Reshape_37278" ], - "name" : "Add_37283", - "op" : "Add", - "outputs" : ["Add_37283_0"] - }, - { - "inputs" : [ "ReplaceSlice_37228", "Add_37275" ], - "lower_bounds" : [ 54, 0, 0 ], - "name" : "ReplaceSlice_37280", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37280_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 55, 64, 256 ] - }, - { - "inputs" : [ "Add_37230", "Reshape_37274" ], - "name" : "Add_37279", - "op" : "Add", - "outputs" : ["Add_37279_0"] - }, - { - "inputs" : [ "Multiply_37276", "Multiply_36938" ], - "name" : "Divide_37281", - "op" : "Divide", - "outputs" : ["Divide_37281_0"] - }, - { - "inputs" : ["Multiply_37277"], - "name" : "Negative_37282", - "op" : "Negative", - "outputs" : ["Negative_37282_0"] - }, - { - "inputs" : ["ReplaceSlice_37280"], - "lower_bounds" : [ 53, 0, 0 ], - "name" : "Slice_37284", - "op" : "Slice", - "outputs" : ["Slice_37284_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 54, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37235", "Divide_37281" ], - "name" : "Add_37285", - "op" : "Add", - "outputs" : ["Add_37285_0"] - }, - { - "inputs" : [ "Negative_37282", "Parameter_36011" ], - "name" : "Multiply_37286", - "op" : "Multiply", - "outputs" : ["Multiply_37286_0"] - }, - { - "inputs" : [ "Add_37285", "Parameter_33912" ], - "name" : "Multiply_37287", - "op" : "Multiply", - "outputs" : ["Multiply_37287_0"] - }, - { - "inputs" : [ "Parameter_35996", "Add_37285" ], - "name" : "Multiply_37288", - "op" : "Multiply", - "outputs" : ["Multiply_37288_0"] - }, - { - "inputs" : [ "Add_37285", "Parameter_33921" ], - "name" : "Multiply_37290", - "op" : "Multiply", - "outputs" : ["Multiply_37290_0"] - }, - { - "inputs" : [ "Parameter_36004", "Add_37285" ], - "name" : "Multiply_37289", - "op" : "Multiply", - "outputs" : ["Multiply_37289_0"] - }, - { - "inputs" : [ "Multiply_37286", "Parameter_36012" ], - "name" : "Divide_37291", - "op" : "Divide", - "outputs" : ["Divide_37291_0"] - }, - { - "inputs" : ["Multiply_37287"], - "name" : "Negative_37292", - "op" : "Negative", - "outputs" : ["Negative_37292_0"] - }, - { - "inputs" : [ "Multiply_37288", "Multiply_36936" ], - "name" : "Divide_37293", - "op" : "Divide", - "outputs" : ["Divide_37293_0"] - }, - { - "inputs" : ["Multiply_37290"], - "name" : "Negative_37294", - "op" : "Negative", - "outputs" : ["Negative_37294_0"] - }, - { - "inputs" : [ "Divide_37291", "Parameter_36013" ], - "name" : "Multiply_37295", - "op" : "Multiply", - "outputs" : ["Multiply_37295_0"] - }, - { - "inputs" : [ "Negative_37292", "Parameter_35996" ], - "name" : "Multiply_37296", - "op" : "Multiply", - "outputs" : ["Multiply_37296_0"] - }, - { - "inputs" : [ "Broadcast_36315", "Divide_37293" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37297", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37297_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37294", "Parameter_36004" ], - "name" : "Multiply_37298", - "op" : "Multiply", - "outputs" : ["Multiply_37298_0"] - }, - { - "inputs" : ["Multiply_37295"], - "name" : "Negative_37299", - "op" : "Negative", - "outputs" : ["Negative_37299_0"] - }, - { - "inputs" : [ "Multiply_37296", "Parameter_35997" ], - "name" : "Divide_37300", - "op" : "Divide", - "outputs" : ["Divide_37300_0"] - }, - { - "inputs" : ["ReplaceSlice_37297"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37301", - "op" : "Slice", - "outputs" : ["Slice_37301_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37298", "Parameter_36005" ], - "name" : "Divide_37302", - "op" : "Divide", - "outputs" : ["Divide_37302_0"] - }, - { - "inputs" : [ "Divide_37300", "Parameter_35998" ], - "name" : "Multiply_37303", - "op" : "Multiply", - "outputs" : ["Multiply_37303_0"] - }, - { - "inputs" : [ "Divide_37302", "Parameter_36006" ], - "name" : "Multiply_37304", - "op" : "Multiply", - "outputs" : ["Multiply_37304_0"] - }, - { - "inputs" : ["Multiply_37303"], - "name" : "Negative_37305", - "op" : "Negative", - "outputs" : ["Negative_37305_0"] - }, - { - "inputs" : ["Multiply_37304"], - "name" : "Negative_37306", - "op" : "Negative", - "outputs" : ["Negative_37306_0"] - }, - { - "inputs" : [ "Slice_37301", "Negative_37305" ], - "name" : "Add_37307", - "op" : "Add", - "outputs" : ["Add_37307_0"] - }, - { - "inputs" : [ "ReplaceSlice_37297", "Add_37307" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37308", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37308_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37308"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37309", - "op" : "Slice", - "outputs" : ["Slice_37309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37309", "Negative_37306" ], - "name" : "Add_37310", - "op" : "Add", - "outputs" : ["Add_37310_0"] - }, - { - "inputs" : [ "ReplaceSlice_37308", "Add_37310" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37311", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37311_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37311"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37312", - "op" : "Slice", - "outputs" : ["Slice_37312_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37312", "Negative_37299" ], - "name" : "Add_37313", - "op" : "Add", - "outputs" : ["Add_37313_0"] - }, - { - "inputs" : [ "ReplaceSlice_37311", "Add_37313" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37314", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37314_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_37314"], - "name" : "Sum_37320", - "op" : "Sum", - "outputs" : ["Sum_37320_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36609", "ReplaceSlice_37314" ], - "name" : "Dot_37316", - "op" : "Dot", - "outputs" : ["Dot_37316_0"] - }, - { - "inputs" : [ "Reshape_36934", "ReplaceSlice_37314" ], - "name" : "Dot_37315", - "op" : "Dot", - "outputs" : ["Dot_37315_0"] - }, - { - "inputs" : [ "ReplaceSlice_37314", "Reshape_36379" ], - "name" : "Dot_37317", - "op" : "Dot", - "outputs" : ["Dot_37317_0"] - }, - { - "inputs" : [ "ReplaceSlice_37314", "Reshape_36449" ], - "name" : "Dot_37318", - "op" : "Dot", - "outputs" : ["Dot_37318_0"] - }, - { - "inputs" : ["ReplaceSlice_37314"], - "name" : "Sum_37319", - "op" : "Sum", - "outputs" : ["Sum_37319_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Add_37268", "Sum_37320" ], - "name" : "Add_37326", - "op" : "Add", - "outputs" : ["Add_37326_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37316"], - "name" : "Reshape_37322", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37322_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37315"], - "name" : "Reshape_37321", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37321_0"] - }, - { - "inputs" : [ "Dot_37317", "Reshape_36661" ], - "name" : "Add_37323", - "op" : "Add", - "outputs" : ["Add_37323_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37318"], - "name" : "Reshape_37324", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37324_0"] - }, - { - "inputs" : [ "Add_37273", "Sum_37319" ], - "name" : "Add_37325", - "op" : "Add", - "outputs" : ["Add_37325_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37322"], - "name" : "Reshape_37328", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37328_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37321"], - "name" : "Reshape_37327", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37327_0"] - }, - { - "inputs" : [ "Parameter_35983", "Add_37323" ], - "name" : "Multiply_37330", - "op" : "Multiply", - "outputs" : ["Multiply_37330_0"] - }, - { - "inputs" : [ "Add_37323", "Parameter_33920" ], - "name" : "Multiply_37329", - "op" : "Multiply", - "outputs" : ["Multiply_37329_0"] - }, - { - "inputs" : [ "Slice_37284", "Reshape_37324" ], - "name" : "Add_37331", - "op" : "Add", - "outputs" : ["Add_37331_0"] - }, - { - "inputs" : [ "Add_37279", "Reshape_37328" ], - "name" : "Add_37333", - "op" : "Add", - "outputs" : ["Add_37333_0"] - }, - { - "inputs" : [ "Add_37283", "Reshape_37327" ], - "name" : "Add_37332", - "op" : "Add", - "outputs" : ["Add_37332_0"] - }, - { - "inputs" : [ "Multiply_37330", "Multiply_36933" ], - "name" : "Divide_37335", - "op" : "Divide", - "outputs" : ["Divide_37335_0"] - }, - { - "inputs" : ["Multiply_37329"], - "name" : "Negative_37334", - "op" : "Negative", - "outputs" : ["Negative_37334_0"] - }, - { - "inputs" : [ "ReplaceSlice_37280", "Add_37331" ], - "lower_bounds" : [ 53, 0, 0 ], - "name" : "ReplaceSlice_37336", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37336_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 54, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37289", "Divide_37335" ], - "name" : "Add_37338", - "op" : "Add", - "outputs" : ["Add_37338_0"] - }, - { - "inputs" : [ "Negative_37334", "Parameter_35983" ], - "name" : "Multiply_37337", - "op" : "Multiply", - "outputs" : ["Multiply_37337_0"] - }, - { - "inputs" : ["ReplaceSlice_37336"], - "lower_bounds" : [ 52, 0, 0 ], - "name" : "Slice_37339", - "op" : "Slice", - "outputs" : ["Slice_37339_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 53, 64, 256 ] - }, - { - "inputs" : [ "Add_37338", "Parameter_33923" ], - "name" : "Multiply_37341", - "op" : "Multiply", - "outputs" : ["Multiply_37341_0"] - }, - { - "inputs" : [ "Parameter_35976", "Add_37338" ], - "name" : "Multiply_37344", - "op" : "Multiply", - "outputs" : ["Multiply_37344_0"] - }, - { - "inputs" : [ "Add_37338", "Parameter_33932" ], - "name" : "Multiply_37343", - "op" : "Multiply", - "outputs" : ["Multiply_37343_0"] - }, - { - "inputs" : [ "Parameter_35968", "Add_37338" ], - "name" : "Multiply_37342", - "op" : "Multiply", - "outputs" : ["Multiply_37342_0"] - }, - { - "inputs" : [ "Multiply_37337", "Parameter_35984" ], - "name" : "Divide_37340", - "op" : "Divide", - "outputs" : ["Divide_37340_0"] - }, - { - "inputs" : ["Multiply_37341"], - "name" : "Negative_37346", - "op" : "Negative", - "outputs" : ["Negative_37346_0"] - }, - { - "inputs" : ["Multiply_37343"], - "name" : "Negative_37348", - "op" : "Negative", - "outputs" : ["Negative_37348_0"] - }, - { - "inputs" : [ "Multiply_37342", "Multiply_36931" ], - "name" : "Divide_37347", - "op" : "Divide", - "outputs" : ["Divide_37347_0"] - }, - { - "inputs" : [ "Divide_37340", "Parameter_35985" ], - "name" : "Multiply_37345", - "op" : "Multiply", - "outputs" : ["Multiply_37345_0"] - }, - { - "inputs" : [ "Negative_37346", "Parameter_35968" ], - "name" : "Multiply_37350", - "op" : "Multiply", - "outputs" : ["Multiply_37350_0"] - }, - { - "inputs" : [ "Negative_37348", "Parameter_35976" ], - "name" : "Multiply_37352", - "op" : "Multiply", - "outputs" : ["Multiply_37352_0"] - }, - { - "inputs" : [ "Broadcast_36316", "Divide_37347" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37351", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37351_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_37345"], - "name" : "Negative_37349", - "op" : "Negative", - "outputs" : ["Negative_37349_0"] - }, - { - "inputs" : [ "Multiply_37350", "Parameter_35969" ], - "name" : "Divide_37353", - "op" : "Divide", - "outputs" : ["Divide_37353_0"] - }, - { - "inputs" : [ "Multiply_37352", "Parameter_35977" ], - "name" : "Divide_37355", - "op" : "Divide", - "outputs" : ["Divide_37355_0"] - }, - { - "inputs" : ["ReplaceSlice_37351"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37354", - "op" : "Slice", - "outputs" : ["Slice_37354_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_37353", "Parameter_35970" ], - "name" : "Multiply_37356", - "op" : "Multiply", - "outputs" : ["Multiply_37356_0"] - }, - { - "inputs" : [ "Divide_37355", "Parameter_35978" ], - "name" : "Multiply_37357", - "op" : "Multiply", - "outputs" : ["Multiply_37357_0"] - }, - { - "inputs" : ["Multiply_37356"], - "name" : "Negative_37358", - "op" : "Negative", - "outputs" : ["Negative_37358_0"] - }, - { - "inputs" : ["Multiply_37357"], - "name" : "Negative_37359", - "op" : "Negative", - "outputs" : ["Negative_37359_0"] - }, - { - "inputs" : [ "Slice_37354", "Negative_37358" ], - "name" : "Add_37360", - "op" : "Add", - "outputs" : ["Add_37360_0"] - }, - { - "inputs" : [ "ReplaceSlice_37351", "Add_37360" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37361", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37361_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37361"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37362", - "op" : "Slice", - "outputs" : ["Slice_37362_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37362", "Negative_37359" ], - "name" : "Add_37363", - "op" : "Add", - "outputs" : ["Add_37363_0"] - }, - { - "inputs" : [ "ReplaceSlice_37361", "Add_37363" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37364", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37364_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37364"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37365", - "op" : "Slice", - "outputs" : ["Slice_37365_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37365", "Negative_37349" ], - "name" : "Add_37366", - "op" : "Add", - "outputs" : ["Add_37366_0"] - }, - { - "inputs" : [ "ReplaceSlice_37364", "Add_37366" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37367", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37367_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36604", "ReplaceSlice_37367" ], - "name" : "Dot_37370", - "op" : "Dot", - "outputs" : ["Dot_37370_0"] - }, - { - "inputs" : ["ReplaceSlice_37367"], - "name" : "Sum_37368", - "op" : "Sum", - "outputs" : ["Sum_37368_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36929", "ReplaceSlice_37367" ], - "name" : "Dot_37369", - "op" : "Dot", - "outputs" : ["Dot_37369_0"] - }, - { - "inputs" : [ "ReplaceSlice_37367", "Reshape_36451" ], - "name" : "Dot_37371", - "op" : "Dot", - "outputs" : ["Dot_37371_0"] - }, - { - "inputs" : ["ReplaceSlice_37367"], - "name" : "Sum_37373", - "op" : "Sum", - "outputs" : ["Sum_37373_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37367", "Reshape_36388" ], - "name" : "Dot_37372", - "op" : "Dot", - "outputs" : ["Dot_37372_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37370"], - "name" : "Reshape_37376", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37376_0"] - }, - { - "inputs" : [ "Add_37326", "Sum_37368" ], - "name" : "Add_37374", - "op" : "Add", - "outputs" : ["Add_37374_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37369"], - "name" : "Reshape_37375", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37375_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37371"], - "name" : "Reshape_37377", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37377_0"] - }, - { - "inputs" : [ "Add_37325", "Sum_37373" ], - "name" : "Add_37379", - "op" : "Add", - "outputs" : ["Add_37379_0"] - }, - { - "inputs" : [ "Dot_37372", "Reshape_36660" ], - "name" : "Add_37378", - "op" : "Add", - "outputs" : ["Add_37378_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37376"], - "name" : "Reshape_37381", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37381_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37375"], - "name" : "Reshape_37380", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37380_0"] - }, - { - "inputs" : [ "Slice_37339", "Reshape_37377" ], - "name" : "Add_37382", - "op" : "Add", - "outputs" : ["Add_37382_0"] - }, - { - "inputs" : [ "Add_37378", "Parameter_33931" ], - "name" : "Multiply_37384", - "op" : "Multiply", - "outputs" : ["Multiply_37384_0"] - }, - { - "inputs" : [ "Parameter_35955", "Add_37378" ], - "name" : "Multiply_37383", - "op" : "Multiply", - "outputs" : ["Multiply_37383_0"] - }, - { - "inputs" : [ "Add_37333", "Reshape_37381" ], - "name" : "Add_37386", - "op" : "Add", - "outputs" : ["Add_37386_0"] - }, - { - "inputs" : [ "Add_37332", "Reshape_37380" ], - "name" : "Add_37385", - "op" : "Add", - "outputs" : ["Add_37385_0"] - }, - { - "inputs" : [ "ReplaceSlice_37336", "Add_37382" ], - "lower_bounds" : [ 52, 0, 0 ], - "name" : "ReplaceSlice_37387", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37387_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 53, 64, 256 ] - }, - { - "inputs" : ["Multiply_37384"], - "name" : "Negative_37389", - "op" : "Negative", - "outputs" : ["Negative_37389_0"] - }, - { - "inputs" : [ "Multiply_37383", "Multiply_36928" ], - "name" : "Divide_37388", - "op" : "Divide", - "outputs" : ["Divide_37388_0"] - }, - { - "inputs" : ["ReplaceSlice_37387"], - "lower_bounds" : [ 51, 0, 0 ], - "name" : "Slice_37390", - "op" : "Slice", - "outputs" : ["Slice_37390_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 52, 64, 256 ] - }, - { - "inputs" : [ "Negative_37389", "Parameter_35955" ], - "name" : "Multiply_37392", - "op" : "Multiply", - "outputs" : ["Multiply_37392_0"] - }, - { - "inputs" : [ "Multiply_37344", "Divide_37388" ], - "name" : "Add_37391", - "op" : "Add", - "outputs" : ["Add_37391_0"] - }, - { - "inputs" : [ "Multiply_37392", "Parameter_35956" ], - "name" : "Divide_37397", - "op" : "Divide", - "outputs" : ["Divide_37397_0"] - }, - { - "inputs" : [ "Add_37391", "Parameter_33934" ], - "name" : "Multiply_37393", - "op" : "Multiply", - "outputs" : ["Multiply_37393_0"] - }, - { - "inputs" : [ "Parameter_35940", "Add_37391" ], - "name" : "Multiply_37394", - "op" : "Multiply", - "outputs" : ["Multiply_37394_0"] - }, - { - "inputs" : [ "Add_37391", "Parameter_33943" ], - "name" : "Multiply_37395", - "op" : "Multiply", - "outputs" : ["Multiply_37395_0"] - }, - { - "inputs" : [ "Parameter_35948", "Add_37391" ], - "name" : "Multiply_37396", - "op" : "Multiply", - "outputs" : ["Multiply_37396_0"] - }, - { - "inputs" : [ "Divide_37397", "Parameter_35957" ], - "name" : "Multiply_37401", - "op" : "Multiply", - "outputs" : ["Multiply_37401_0"] - }, - { - "inputs" : ["Multiply_37393"], - "name" : "Negative_37398", - "op" : "Negative", - "outputs" : ["Negative_37398_0"] - }, - { - "inputs" : [ "Multiply_37394", "Multiply_36926" ], - "name" : "Divide_37399", - "op" : "Divide", - "outputs" : ["Divide_37399_0"] - }, - { - "inputs" : ["Multiply_37395"], - "name" : "Negative_37400", - "op" : "Negative", - "outputs" : ["Negative_37400_0"] - }, - { - "inputs" : ["Multiply_37401"], - "name" : "Negative_37405", - "op" : "Negative", - "outputs" : ["Negative_37405_0"] - }, - { - "inputs" : [ "Negative_37398", "Parameter_35940" ], - "name" : "Multiply_37402", - "op" : "Multiply", - "outputs" : ["Multiply_37402_0"] - }, - { - "inputs" : [ "Broadcast_36317", "Divide_37399" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37403", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37403_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37400", "Parameter_35948" ], - "name" : "Multiply_37404", - "op" : "Multiply", - "outputs" : ["Multiply_37404_0"] - }, - { - "inputs" : [ "Multiply_37402", "Parameter_35941" ], - "name" : "Divide_37406", - "op" : "Divide", - "outputs" : ["Divide_37406_0"] - }, - { - "inputs" : ["ReplaceSlice_37403"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37407", - "op" : "Slice", - "outputs" : ["Slice_37407_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37404", "Parameter_35949" ], - "name" : "Divide_37408", - "op" : "Divide", - "outputs" : ["Divide_37408_0"] - }, - { - "inputs" : [ "Divide_37406", "Parameter_35942" ], - "name" : "Multiply_37409", - "op" : "Multiply", - "outputs" : ["Multiply_37409_0"] - }, - { - "inputs" : [ "Divide_37408", "Parameter_35950" ], - "name" : "Multiply_37410", - "op" : "Multiply", - "outputs" : ["Multiply_37410_0"] - }, - { - "inputs" : ["Multiply_37409"], - "name" : "Negative_37411", - "op" : "Negative", - "outputs" : ["Negative_37411_0"] - }, - { - "inputs" : ["Multiply_37410"], - "name" : "Negative_37412", - "op" : "Negative", - "outputs" : ["Negative_37412_0"] - }, - { - "inputs" : [ "Slice_37407", "Negative_37411" ], - "name" : "Add_37413", - "op" : "Add", - "outputs" : ["Add_37413_0"] - }, - { - "inputs" : [ "ReplaceSlice_37403", "Add_37413" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37414", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37414_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37414"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37415", - "op" : "Slice", - "outputs" : ["Slice_37415_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37415", "Negative_37412" ], - "name" : "Add_37416", - "op" : "Add", - "outputs" : ["Add_37416_0"] - }, - { - "inputs" : [ "ReplaceSlice_37414", "Add_37416" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37417", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37417_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37417"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37418", - "op" : "Slice", - "outputs" : ["Slice_37418_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37418", "Negative_37405" ], - "name" : "Add_37419", - "op" : "Add", - "outputs" : ["Add_37419_0"] - }, - { - "inputs" : [ "ReplaceSlice_37417", "Add_37419" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37420", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37420_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37420", "Reshape_36386" ], - "name" : "Dot_37425", - "op" : "Dot", - "outputs" : ["Dot_37425_0"] - }, - { - "inputs" : [ "ReplaceSlice_37420", "Reshape_36455" ], - "name" : "Dot_37423", - "op" : "Dot", - "outputs" : ["Dot_37423_0"] - }, - { - "inputs" : [ "Reshape_36602", "ReplaceSlice_37420" ], - "name" : "Dot_37426", - "op" : "Dot", - "outputs" : ["Dot_37426_0"] - }, - { - "inputs" : [ "Reshape_36924", "ReplaceSlice_37420" ], - "name" : "Dot_37422", - "op" : "Dot", - "outputs" : ["Dot_37422_0"] - }, - { - "inputs" : ["ReplaceSlice_37420"], - "name" : "Sum_37424", - "op" : "Sum", - "outputs" : ["Sum_37424_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_37420"], - "name" : "Sum_37421", - "op" : "Sum", - "outputs" : ["Sum_37421_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Dot_37425", "Reshape_36659" ], - "name" : "Add_37431", - "op" : "Add", - "outputs" : ["Add_37431_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37423"], - "name" : "Reshape_37429", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37429_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37426"], - "name" : "Reshape_37432", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37432_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37422"], - "name" : "Reshape_37428", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37428_0"] - }, - { - "inputs" : [ "Add_37379", "Sum_37424" ], - "name" : "Add_37430", - "op" : "Add", - "outputs" : ["Add_37430_0"] - }, - { - "inputs" : [ "Add_37374", "Sum_37421" ], - "name" : "Add_37427", - "op" : "Add", - "outputs" : ["Add_37427_0"] - }, - { - "inputs" : [ "Add_37431", "Parameter_33942" ], - "name" : "Multiply_37435", - "op" : "Multiply", - "outputs" : ["Multiply_37435_0"] - }, - { - "inputs" : [ "Parameter_35927", "Add_37431" ], - "name" : "Multiply_37436", - "op" : "Multiply", - "outputs" : ["Multiply_37436_0"] - }, - { - "inputs" : [ "Slice_37390", "Reshape_37429" ], - "name" : "Add_37434", - "op" : "Add", - "outputs" : ["Add_37434_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37432"], - "name" : "Reshape_37437", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37437_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37428"], - "name" : "Reshape_37433", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37433_0"] - }, - { - "inputs" : ["Multiply_37435"], - "name" : "Negative_37440", - "op" : "Negative", - "outputs" : ["Negative_37440_0"] - }, - { - "inputs" : [ "Multiply_37436", "Multiply_36923" ], - "name" : "Divide_37441", - "op" : "Divide", - "outputs" : ["Divide_37441_0"] - }, - { - "inputs" : [ "ReplaceSlice_37387", "Add_37434" ], - "lower_bounds" : [ 51, 0, 0 ], - "name" : "ReplaceSlice_37439", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37439_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 52, 64, 256 ] - }, - { - "inputs" : [ "Add_37386", "Reshape_37437" ], - "name" : "Add_37442", - "op" : "Add", - "outputs" : ["Add_37442_0"] - }, - { - "inputs" : [ "Add_37385", "Reshape_37433" ], - "name" : "Add_37438", - "op" : "Add", - "outputs" : ["Add_37438_0"] - }, - { - "inputs" : [ "Negative_37440", "Parameter_35927" ], - "name" : "Multiply_37444", - "op" : "Multiply", - "outputs" : ["Multiply_37444_0"] - }, - { - "inputs" : [ "Multiply_37396", "Divide_37441" ], - "name" : "Add_37445", - "op" : "Add", - "outputs" : ["Add_37445_0"] - }, - { - "inputs" : ["ReplaceSlice_37439"], - "lower_bounds" : [ 50, 0, 0 ], - "name" : "Slice_37443", - "op" : "Slice", - "outputs" : ["Slice_37443_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 51, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37444", "Parameter_35928" ], - "name" : "Divide_37446", - "op" : "Divide", - "outputs" : ["Divide_37446_0"] - }, - { - "inputs" : [ "Parameter_35912", "Add_37445" ], - "name" : "Multiply_37447", - "op" : "Multiply", - "outputs" : ["Multiply_37447_0"] - }, - { - "inputs" : [ "Add_37445", "Parameter_33945" ], - "name" : "Multiply_37448", - "op" : "Multiply", - "outputs" : ["Multiply_37448_0"] - }, - { - "inputs" : [ "Parameter_35920", "Add_37445" ], - "name" : "Multiply_37449", - "op" : "Multiply", - "outputs" : ["Multiply_37449_0"] - }, - { - "inputs" : [ "Add_37445", "Parameter_33954" ], - "name" : "Multiply_37450", - "op" : "Multiply", - "outputs" : ["Multiply_37450_0"] - }, - { - "inputs" : [ "Divide_37446", "Parameter_35929" ], - "name" : "Multiply_37451", - "op" : "Multiply", - "outputs" : ["Multiply_37451_0"] - }, - { - "inputs" : [ "Multiply_37447", "Multiply_36921" ], - "name" : "Divide_37452", - "op" : "Divide", - "outputs" : ["Divide_37452_0"] - }, - { - "inputs" : ["Multiply_37448"], - "name" : "Negative_37453", - "op" : "Negative", - "outputs" : ["Negative_37453_0"] - }, - { - "inputs" : ["Multiply_37450"], - "name" : "Negative_37454", - "op" : "Negative", - "outputs" : ["Negative_37454_0"] - }, - { - "inputs" : ["Multiply_37451"], - "name" : "Negative_37455", - "op" : "Negative", - "outputs" : ["Negative_37455_0"] - }, - { - "inputs" : [ "Broadcast_36318", "Divide_37452" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37456", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37456_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37453", "Parameter_35912" ], - "name" : "Multiply_37457", - "op" : "Multiply", - "outputs" : ["Multiply_37457_0"] - }, - { - "inputs" : [ "Negative_37454", "Parameter_35920" ], - "name" : "Multiply_37458", - "op" : "Multiply", - "outputs" : ["Multiply_37458_0"] - }, - { - "inputs" : ["ReplaceSlice_37456"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37459", - "op" : "Slice", - "outputs" : ["Slice_37459_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37457", "Parameter_35913" ], - "name" : "Divide_37460", - "op" : "Divide", - "outputs" : ["Divide_37460_0"] - }, - { - "inputs" : [ "Multiply_37458", "Parameter_35921" ], - "name" : "Divide_37461", - "op" : "Divide", - "outputs" : ["Divide_37461_0"] - }, - { - "inputs" : [ "Divide_37460", "Parameter_35914" ], - "name" : "Multiply_37462", - "op" : "Multiply", - "outputs" : ["Multiply_37462_0"] - }, - { - "inputs" : [ "Divide_37461", "Parameter_35922" ], - "name" : "Multiply_37463", - "op" : "Multiply", - "outputs" : ["Multiply_37463_0"] - }, - { - "inputs" : ["Multiply_37462"], - "name" : "Negative_37464", - "op" : "Negative", - "outputs" : ["Negative_37464_0"] - }, - { - "inputs" : ["Multiply_37463"], - "name" : "Negative_37465", - "op" : "Negative", - "outputs" : ["Negative_37465_0"] - }, - { - "inputs" : [ "Slice_37459", "Negative_37464" ], - "name" : "Add_37466", - "op" : "Add", - "outputs" : ["Add_37466_0"] - }, - { - "inputs" : [ "ReplaceSlice_37456", "Add_37466" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37467", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37467_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37467"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37468", - "op" : "Slice", - "outputs" : ["Slice_37468_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37468", "Negative_37465" ], - "name" : "Add_37469", - "op" : "Add", - "outputs" : ["Add_37469_0"] - }, - { - "inputs" : [ "ReplaceSlice_37467", "Add_37469" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37470", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37470_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37470"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37471", - "op" : "Slice", - "outputs" : ["Slice_37471_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37471", "Negative_37455" ], - "name" : "Add_37472", - "op" : "Add", - "outputs" : ["Add_37472_0"] - }, - { - "inputs" : [ "ReplaceSlice_37470", "Add_37472" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37473", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37473_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37473", "Reshape_36468" ], - "name" : "Dot_37474", - "op" : "Dot", - "outputs" : ["Dot_37474_0"] - }, - { - "inputs" : ["ReplaceSlice_37473"], - "name" : "Sum_37475", - "op" : "Sum", - "outputs" : ["Sum_37475_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36919", "ReplaceSlice_37473" ], - "name" : "Dot_37476", - "op" : "Dot", - "outputs" : ["Dot_37476_0"] - }, - { - "inputs" : [ "Reshape_36601", "ReplaceSlice_37473" ], - "name" : "Dot_37478", - "op" : "Dot", - "outputs" : ["Dot_37478_0"] - }, - { - "inputs" : [ "ReplaceSlice_37473", "Reshape_36376" ], - "name" : "Dot_37477", - "op" : "Dot", - "outputs" : ["Dot_37477_0"] - }, - { - "inputs" : ["ReplaceSlice_37473"], - "name" : "Sum_37479", - "op" : "Sum", - "outputs" : ["Sum_37479_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37474"], - "name" : "Reshape_37480", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37480_0"] - }, - { - "inputs" : [ "Add_37427", "Sum_37475" ], - "name" : "Add_37481", - "op" : "Add", - "outputs" : ["Add_37481_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37476"], - "name" : "Reshape_37482", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37482_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37478"], - "name" : "Reshape_37484", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37484_0"] - }, - { - "inputs" : [ "Dot_37477", "Reshape_36658" ], - "name" : "Add_37483", - "op" : "Add", - "outputs" : ["Add_37483_0"] - }, - { - "inputs" : [ "Add_37430", "Sum_37479" ], - "name" : "Add_37485", - "op" : "Add", - "outputs" : ["Add_37485_0"] - }, - { - "inputs" : [ "Slice_37443", "Reshape_37480" ], - "name" : "Add_37486", - "op" : "Add", - "outputs" : ["Add_37486_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37482"], - "name" : "Reshape_37487", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37487_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37484"], - "name" : "Reshape_37490", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37490_0"] - }, - { - "inputs" : [ "Add_37483", "Parameter_33953" ], - "name" : "Multiply_37488", - "op" : "Multiply", - "outputs" : ["Multiply_37488_0"] - }, - { - "inputs" : [ "Parameter_35899", "Add_37483" ], - "name" : "Multiply_37489", - "op" : "Multiply", - "outputs" : ["Multiply_37489_0"] - }, - { - "inputs" : [ "ReplaceSlice_37439", "Add_37486" ], - "lower_bounds" : [ 50, 0, 0 ], - "name" : "ReplaceSlice_37491", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37491_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 51, 64, 256 ] - }, - { - "inputs" : [ "Add_37438", "Reshape_37487" ], - "name" : "Add_37492", - "op" : "Add", - "outputs" : ["Add_37492_0"] - }, - { - "inputs" : [ "Add_37442", "Reshape_37490" ], - "name" : "Add_37495", - "op" : "Add", - "outputs" : ["Add_37495_0"] - }, - { - "inputs" : ["Multiply_37488"], - "name" : "Negative_37493", - "op" : "Negative", - "outputs" : ["Negative_37493_0"] - }, - { - "inputs" : [ "Multiply_37489", "Multiply_36918" ], - "name" : "Divide_37494", - "op" : "Divide", - "outputs" : ["Divide_37494_0"] - }, - { - "inputs" : ["ReplaceSlice_37491"], - "lower_bounds" : [ 49, 0, 0 ], - "name" : "Slice_37496", - "op" : "Slice", - "outputs" : ["Slice_37496_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 50, 64, 256 ] - }, - { - "inputs" : [ "Negative_37493", "Parameter_35899" ], - "name" : "Multiply_37497", - "op" : "Multiply", - "outputs" : ["Multiply_37497_0"] - }, - { - "inputs" : [ "Multiply_37449", "Divide_37494" ], - "name" : "Add_37498", - "op" : "Add", - "outputs" : ["Add_37498_0"] - }, - { - "inputs" : [ "Multiply_37497", "Parameter_35900" ], - "name" : "Divide_37499", - "op" : "Divide", - "outputs" : ["Divide_37499_0"] - }, - { - "inputs" : [ "Add_37498", "Parameter_33956" ], - "name" : "Multiply_37503", - "op" : "Multiply", - "outputs" : ["Multiply_37503_0"] - }, - { - "inputs" : [ "Add_37498", "Parameter_33965" ], - "name" : "Multiply_37500", - "op" : "Multiply", - "outputs" : ["Multiply_37500_0"] - }, - { - "inputs" : [ "Parameter_35892", "Add_37498" ], - "name" : "Multiply_37501", - "op" : "Multiply", - "outputs" : ["Multiply_37501_0"] - }, - { - "inputs" : [ "Parameter_35884", "Add_37498" ], - "name" : "Multiply_37502", - "op" : "Multiply", - "outputs" : ["Multiply_37502_0"] - }, - { - "inputs" : [ "Divide_37499", "Parameter_35901" ], - "name" : "Multiply_37504", - "op" : "Multiply", - "outputs" : ["Multiply_37504_0"] - }, - { - "inputs" : ["Multiply_37503"], - "name" : "Negative_37507", - "op" : "Negative", - "outputs" : ["Negative_37507_0"] - }, - { - "inputs" : ["Multiply_37500"], - "name" : "Negative_37505", - "op" : "Negative", - "outputs" : ["Negative_37505_0"] - }, - { - "inputs" : [ "Multiply_37502", "Multiply_36916" ], - "name" : "Divide_37506", - "op" : "Divide", - "outputs" : ["Divide_37506_0"] - }, - { - "inputs" : ["Multiply_37504"], - "name" : "Negative_37508", - "op" : "Negative", - "outputs" : ["Negative_37508_0"] - }, - { - "inputs" : [ "Negative_37507", "Parameter_35884" ], - "name" : "Multiply_37511", - "op" : "Multiply", - "outputs" : ["Multiply_37511_0"] - }, - { - "inputs" : [ "Negative_37505", "Parameter_35892" ], - "name" : "Multiply_37509", - "op" : "Multiply", - "outputs" : ["Multiply_37509_0"] - }, - { - "inputs" : [ "Broadcast_36319", "Divide_37506" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37510", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37510_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_37511", "Parameter_35885" ], - "name" : "Divide_37514", - "op" : "Divide", - "outputs" : ["Divide_37514_0"] - }, - { - "inputs" : [ "Multiply_37509", "Parameter_35893" ], - "name" : "Divide_37512", - "op" : "Divide", - "outputs" : ["Divide_37512_0"] - }, - { - "inputs" : ["ReplaceSlice_37510"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37513", - "op" : "Slice", - "outputs" : ["Slice_37513_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_37514", "Parameter_35886" ], - "name" : "Multiply_37516", - "op" : "Multiply", - "outputs" : ["Multiply_37516_0"] - }, - { - "inputs" : [ "Divide_37512", "Parameter_35894" ], - "name" : "Multiply_37515", - "op" : "Multiply", - "outputs" : ["Multiply_37515_0"] - }, - { - "inputs" : ["Multiply_37516"], - "name" : "Negative_37518", - "op" : "Negative", - "outputs" : ["Negative_37518_0"] - }, - { - "inputs" : ["Multiply_37515"], - "name" : "Negative_37517", - "op" : "Negative", - "outputs" : ["Negative_37517_0"] - }, - { - "inputs" : [ "Slice_37513", "Negative_37518" ], - "name" : "Add_37519", - "op" : "Add", - "outputs" : ["Add_37519_0"] - }, - { - "inputs" : [ "ReplaceSlice_37510", "Add_37519" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37520", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37520_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37520"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37521", - "op" : "Slice", - "outputs" : ["Slice_37521_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37521", "Negative_37517" ], - "name" : "Add_37522", - "op" : "Add", - "outputs" : ["Add_37522_0"] - }, - { - "inputs" : [ "ReplaceSlice_37520", "Add_37522" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37523", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37523_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37523"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37524", - "op" : "Slice", - "outputs" : ["Slice_37524_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37524", "Negative_37508" ], - "name" : "Add_37525", - "op" : "Add", - "outputs" : ["Add_37525_0"] - }, - { - "inputs" : [ "ReplaceSlice_37523", "Add_37525" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37526", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37526_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_37526"], - "name" : "Sum_37530", - "op" : "Sum", - "outputs" : ["Sum_37530_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36600", "ReplaceSlice_37526" ], - "name" : "Dot_37529", - "op" : "Dot", - "outputs" : ["Dot_37529_0"] - }, - { - "inputs" : [ "Reshape_36914", "ReplaceSlice_37526" ], - "name" : "Dot_37528", - "op" : "Dot", - "outputs" : ["Dot_37528_0"] - }, - { - "inputs" : [ "ReplaceSlice_37526", "Reshape_36467" ], - "name" : "Dot_37527", - "op" : "Dot", - "outputs" : ["Dot_37527_0"] - }, - { - "inputs" : ["ReplaceSlice_37526"], - "name" : "Sum_37532", - "op" : "Sum", - "outputs" : ["Sum_37532_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37526", "Reshape_36381" ], - "name" : "Dot_37531", - "op" : "Dot", - "outputs" : ["Dot_37531_0"] - }, - { - "inputs" : [ "Add_37481", "Sum_37530" ], - "name" : "Add_37536", - "op" : "Add", - "outputs" : ["Add_37536_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37529"], - "name" : "Reshape_37535", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37535_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37528"], - "name" : "Reshape_37534", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37534_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37527"], - "name" : "Reshape_37533", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37533_0"] - }, - { - "inputs" : [ "Add_37485", "Sum_37532" ], - "name" : "Add_37538", - "op" : "Add", - "outputs" : ["Add_37538_0"] - }, - { - "inputs" : [ "Dot_37531", "Reshape_36650" ], - "name" : "Add_37537", - "op" : "Add", - "outputs" : ["Add_37537_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37535"], - "name" : "Reshape_37541", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37541_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37534"], - "name" : "Reshape_37540", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37540_0"] - }, - { - "inputs" : [ "Slice_37496", "Reshape_37533" ], - "name" : "Add_37539", - "op" : "Add", - "outputs" : ["Add_37539_0"] - }, - { - "inputs" : [ "Parameter_35871", "Add_37537" ], - "name" : "Multiply_37543", - "op" : "Multiply", - "outputs" : ["Multiply_37543_0"] - }, - { - "inputs" : [ "Add_37537", "Parameter_33964" ], - "name" : "Multiply_37542", - "op" : "Multiply", - "outputs" : ["Multiply_37542_0"] - }, - { - "inputs" : [ "Add_37495", "Reshape_37541" ], - "name" : "Add_37546", - "op" : "Add", - "outputs" : ["Add_37546_0"] - }, - { - "inputs" : [ "Add_37492", "Reshape_37540" ], - "name" : "Add_37545", - "op" : "Add", - "outputs" : ["Add_37545_0"] - }, - { - "inputs" : [ "ReplaceSlice_37491", "Add_37539" ], - "lower_bounds" : [ 49, 0, 0 ], - "name" : "ReplaceSlice_37544", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37544_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 50, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37543", "Multiply_36913" ], - "name" : "Divide_37548", - "op" : "Divide", - "outputs" : ["Divide_37548_0"] - }, - { - "inputs" : ["Multiply_37542"], - "name" : "Negative_37547", - "op" : "Negative", - "outputs" : ["Negative_37547_0"] - }, - { - "inputs" : ["ReplaceSlice_37544"], - "lower_bounds" : [ 48, 0, 0 ], - "name" : "Slice_37549", - "op" : "Slice", - "outputs" : ["Slice_37549_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 49, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37501", "Divide_37548" ], - "name" : "Add_37551", - "op" : "Add", - "outputs" : ["Add_37551_0"] - }, - { - "inputs" : [ "Negative_37547", "Parameter_35871" ], - "name" : "Multiply_37550", - "op" : "Multiply", - "outputs" : ["Multiply_37550_0"] - }, - { - "inputs" : [ "Add_37551", "Parameter_33976" ], - "name" : "Multiply_37556", - "op" : "Multiply", - "outputs" : ["Multiply_37556_0"] - }, - { - "inputs" : [ "Add_37551", "Parameter_33967" ], - "name" : "Multiply_37553", - "op" : "Multiply", - "outputs" : ["Multiply_37553_0"] - }, - { - "inputs" : [ "Parameter_35856", "Add_37551" ], - "name" : "Multiply_37554", - "op" : "Multiply", - "outputs" : ["Multiply_37554_0"] - }, - { - "inputs" : [ "Parameter_35864", "Add_37551" ], - "name" : "Multiply_37555", - "op" : "Multiply", - "outputs" : ["Multiply_37555_0"] - }, - { - "inputs" : [ "Multiply_37550", "Parameter_35872" ], - "name" : "Divide_37552", - "op" : "Divide", - "outputs" : ["Divide_37552_0"] - }, - { - "inputs" : ["Multiply_37556"], - "name" : "Negative_37560", - "op" : "Negative", - "outputs" : ["Negative_37560_0"] - }, - { - "inputs" : ["Multiply_37553"], - "name" : "Negative_37558", - "op" : "Negative", - "outputs" : ["Negative_37558_0"] - }, - { - "inputs" : [ "Multiply_37554", "Multiply_36911" ], - "name" : "Divide_37559", - "op" : "Divide", - "outputs" : ["Divide_37559_0"] - }, - { - "inputs" : [ "Divide_37552", "Parameter_35873" ], - "name" : "Multiply_37557", - "op" : "Multiply", - "outputs" : ["Multiply_37557_0"] - }, - { - "inputs" : [ "Negative_37560", "Parameter_35864" ], - "name" : "Multiply_37564", - "op" : "Multiply", - "outputs" : ["Multiply_37564_0"] - }, - { - "inputs" : [ "Negative_37558", "Parameter_35856" ], - "name" : "Multiply_37562", - "op" : "Multiply", - "outputs" : ["Multiply_37562_0"] - }, - { - "inputs" : [ "Broadcast_36320", "Divide_37559" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37563", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37563_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_37557"], - "name" : "Negative_37561", - "op" : "Negative", - "outputs" : ["Negative_37561_0"] - }, - { - "inputs" : [ "Multiply_37564", "Parameter_35865" ], - "name" : "Divide_37567", - "op" : "Divide", - "outputs" : ["Divide_37567_0"] - }, - { - "inputs" : [ "Multiply_37562", "Parameter_35857" ], - "name" : "Divide_37565", - "op" : "Divide", - "outputs" : ["Divide_37565_0"] - }, - { - "inputs" : ["ReplaceSlice_37563"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37566", - "op" : "Slice", - "outputs" : ["Slice_37566_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_37567", "Parameter_35866" ], - "name" : "Multiply_37569", - "op" : "Multiply", - "outputs" : ["Multiply_37569_0"] - }, - { - "inputs" : [ "Divide_37565", "Parameter_35858" ], - "name" : "Multiply_37568", - "op" : "Multiply", - "outputs" : ["Multiply_37568_0"] - }, - { - "inputs" : ["Multiply_37569"], - "name" : "Negative_37571", - "op" : "Negative", - "outputs" : ["Negative_37571_0"] - }, - { - "inputs" : ["Multiply_37568"], - "name" : "Negative_37570", - "op" : "Negative", - "outputs" : ["Negative_37570_0"] - }, - { - "inputs" : [ "Slice_37566", "Negative_37570" ], - "name" : "Add_37572", - "op" : "Add", - "outputs" : ["Add_37572_0"] - }, - { - "inputs" : [ "ReplaceSlice_37563", "Add_37572" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37573", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37573_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37573"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37574", - "op" : "Slice", - "outputs" : ["Slice_37574_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37574", "Negative_37571" ], - "name" : "Add_37575", - "op" : "Add", - "outputs" : ["Add_37575_0"] - }, - { - "inputs" : [ "ReplaceSlice_37573", "Add_37575" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37576", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37576_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37576"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37577", - "op" : "Slice", - "outputs" : ["Slice_37577_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37577", "Negative_37561" ], - "name" : "Add_37578", - "op" : "Add", - "outputs" : ["Add_37578_0"] - }, - { - "inputs" : [ "ReplaceSlice_37576", "Add_37578" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37579", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37579_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37579", "Reshape_36471" ], - "name" : "Dot_37581", - "op" : "Dot", - "outputs" : ["Dot_37581_0"] - }, - { - "inputs" : [ "ReplaceSlice_37579", "Reshape_36395" ], - "name" : "Dot_37580", - "op" : "Dot", - "outputs" : ["Dot_37580_0"] - }, - { - "inputs" : ["ReplaceSlice_37579"], - "name" : "Sum_37584", - "op" : "Sum", - "outputs" : ["Sum_37584_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36909", "ReplaceSlice_37579" ], - "name" : "Dot_37585", - "op" : "Dot", - "outputs" : ["Dot_37585_0"] - }, - { - "inputs" : [ "Reshape_36599", "ReplaceSlice_37579" ], - "name" : "Dot_37582", - "op" : "Dot", - "outputs" : ["Dot_37582_0"] - }, - { - "inputs" : ["ReplaceSlice_37579"], - "name" : "Sum_37583", - "op" : "Sum", - "outputs" : ["Sum_37583_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37581"], - "name" : "Reshape_37587", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37587_0"] - }, - { - "inputs" : [ "Dot_37580", "Reshape_36649" ], - "name" : "Add_37586", - "op" : "Add", - "outputs" : ["Add_37586_0"] - }, - { - "inputs" : [ "Add_37538", "Sum_37584" ], - "name" : "Add_37590", - "op" : "Add", - "outputs" : ["Add_37590_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37585"], - "name" : "Reshape_37591", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37591_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37582"], - "name" : "Reshape_37588", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37588_0"] - }, - { - "inputs" : [ "Add_37536", "Sum_37583" ], - "name" : "Add_37589", - "op" : "Add", - "outputs" : ["Add_37589_0"] - }, - { - "inputs" : [ "Slice_37549", "Reshape_37587" ], - "name" : "Add_37594", - "op" : "Add", - "outputs" : ["Add_37594_0"] - }, - { - "inputs" : [ "Parameter_35843", "Add_37586" ], - "name" : "Multiply_37592", - "op" : "Multiply", - "outputs" : ["Multiply_37592_0"] - }, - { - "inputs" : [ "Add_37586", "Parameter_33975" ], - "name" : "Multiply_37593", - "op" : "Multiply", - "outputs" : ["Multiply_37593_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37591"], - "name" : "Reshape_37596", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37596_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37588"], - "name" : "Reshape_37595", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37595_0"] - }, - { - "inputs" : [ "ReplaceSlice_37544", "Add_37594" ], - "lower_bounds" : [ 48, 0, 0 ], - "name" : "ReplaceSlice_37599", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37599_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 49, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37592", "Multiply_36908" ], - "name" : "Divide_37597", - "op" : "Divide", - "outputs" : ["Divide_37597_0"] - }, - { - "inputs" : ["Multiply_37593"], - "name" : "Negative_37598", - "op" : "Negative", - "outputs" : ["Negative_37598_0"] - }, - { - "inputs" : [ "Add_37545", "Reshape_37596" ], - "name" : "Add_37601", - "op" : "Add", - "outputs" : ["Add_37601_0"] - }, - { - "inputs" : [ "Add_37546", "Reshape_37595" ], - "name" : "Add_37600", - "op" : "Add", - "outputs" : ["Add_37600_0"] - }, - { - "inputs" : ["ReplaceSlice_37599"], - "lower_bounds" : [ 47, 0, 0 ], - "name" : "Slice_37604", - "op" : "Slice", - "outputs" : ["Slice_37604_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 48, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37555", "Divide_37597" ], - "name" : "Add_37602", - "op" : "Add", - "outputs" : ["Add_37602_0"] - }, - { - "inputs" : [ "Negative_37598", "Parameter_35843" ], - "name" : "Multiply_37603", - "op" : "Multiply", - "outputs" : ["Multiply_37603_0"] - }, - { - "inputs" : [ "Add_37602", "Parameter_33978" ], - "name" : "Multiply_37608", - "op" : "Multiply", - "outputs" : ["Multiply_37608_0"] - }, - { - "inputs" : [ "Parameter_35836", "Add_37602" ], - "name" : "Multiply_37606", - "op" : "Multiply", - "outputs" : ["Multiply_37606_0"] - }, - { - "inputs" : [ "Parameter_35828", "Add_37602" ], - "name" : "Multiply_37607", - "op" : "Multiply", - "outputs" : ["Multiply_37607_0"] - }, - { - "inputs" : [ "Add_37602", "Parameter_33987" ], - "name" : "Multiply_37605", - "op" : "Multiply", - "outputs" : ["Multiply_37605_0"] - }, - { - "inputs" : [ "Multiply_37603", "Parameter_35844" ], - "name" : "Divide_37609", - "op" : "Divide", - "outputs" : ["Divide_37609_0"] - }, - { - "inputs" : ["Multiply_37608"], - "name" : "Negative_37612", - "op" : "Negative", - "outputs" : ["Negative_37612_0"] - }, - { - "inputs" : [ "Multiply_37607", "Multiply_36906" ], - "name" : "Divide_37611", - "op" : "Divide", - "outputs" : ["Divide_37611_0"] - }, - { - "inputs" : ["Multiply_37605"], - "name" : "Negative_37610", - "op" : "Negative", - "outputs" : ["Negative_37610_0"] - }, - { - "inputs" : [ "Divide_37609", "Parameter_35845" ], - "name" : "Multiply_37613", - "op" : "Multiply", - "outputs" : ["Multiply_37613_0"] - }, - { - "inputs" : [ "Negative_37612", "Parameter_35828" ], - "name" : "Multiply_37616", - "op" : "Multiply", - "outputs" : ["Multiply_37616_0"] - }, - { - "inputs" : [ "Broadcast_36321", "Divide_37611" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37615", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37615_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37610", "Parameter_35836" ], - "name" : "Multiply_37614", - "op" : "Multiply", - "outputs" : ["Multiply_37614_0"] - }, - { - "inputs" : ["Multiply_37613"], - "name" : "Negative_37617", - "op" : "Negative", - "outputs" : ["Negative_37617_0"] - }, - { - "inputs" : [ "Multiply_37616", "Parameter_35829" ], - "name" : "Divide_37620", - "op" : "Divide", - "outputs" : ["Divide_37620_0"] - }, - { - "inputs" : ["ReplaceSlice_37615"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37619", - "op" : "Slice", - "outputs" : ["Slice_37619_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37614", "Parameter_35837" ], - "name" : "Divide_37618", - "op" : "Divide", - "outputs" : ["Divide_37618_0"] - }, - { - "inputs" : [ "Divide_37620", "Parameter_35830" ], - "name" : "Multiply_37622", - "op" : "Multiply", - "outputs" : ["Multiply_37622_0"] - }, - { - "inputs" : [ "Divide_37618", "Parameter_35838" ], - "name" : "Multiply_37621", - "op" : "Multiply", - "outputs" : ["Multiply_37621_0"] - }, - { - "inputs" : ["Multiply_37622"], - "name" : "Negative_37624", - "op" : "Negative", - "outputs" : ["Negative_37624_0"] - }, - { - "inputs" : ["Multiply_37621"], - "name" : "Negative_37623", - "op" : "Negative", - "outputs" : ["Negative_37623_0"] - }, - { - "inputs" : [ "Slice_37619", "Negative_37624" ], - "name" : "Add_37625", - "op" : "Add", - "outputs" : ["Add_37625_0"] - }, - { - "inputs" : [ "ReplaceSlice_37615", "Add_37625" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37626", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37626_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37626"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37627", - "op" : "Slice", - "outputs" : ["Slice_37627_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37627", "Negative_37623" ], - "name" : "Add_37628", - "op" : "Add", - "outputs" : ["Add_37628_0"] - }, - { - "inputs" : [ "ReplaceSlice_37626", "Add_37628" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37629", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37629_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37629"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37630", - "op" : "Slice", - "outputs" : ["Slice_37630_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37630", "Negative_37617" ], - "name" : "Add_37631", - "op" : "Add", - "outputs" : ["Add_37631_0"] - }, - { - "inputs" : [ "ReplaceSlice_37629", "Add_37631" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37632", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37632_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_37632"], - "name" : "Sum_37633", - "op" : "Sum", - "outputs" : ["Sum_37633_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36904", "ReplaceSlice_37632" ], - "name" : "Dot_37637", - "op" : "Dot", - "outputs" : ["Dot_37637_0"] - }, - { - "inputs" : [ "Reshape_36597", "ReplaceSlice_37632" ], - "name" : "Dot_37638", - "op" : "Dot", - "outputs" : ["Dot_37638_0"] - }, - { - "inputs" : [ "ReplaceSlice_37632", "Reshape_36429" ], - "name" : "Dot_37634", - "op" : "Dot", - "outputs" : ["Dot_37634_0"] - }, - { - "inputs" : [ "ReplaceSlice_37632", "Reshape_36408" ], - "name" : "Dot_37635", - "op" : "Dot", - "outputs" : ["Dot_37635_0"] - }, - { - "inputs" : ["ReplaceSlice_37632"], - "name" : "Sum_37636", - "op" : "Sum", - "outputs" : ["Sum_37636_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Add_37590", "Sum_37633" ], - "name" : "Add_37639", - "op" : "Add", - "outputs" : ["Add_37639_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37637"], - "name" : "Reshape_37643", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37643_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37638"], - "name" : "Reshape_37644", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37644_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37634"], - "name" : "Reshape_37640", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37640_0"] - }, - { - "inputs" : [ "Dot_37635", "Reshape_36648" ], - "name" : "Add_37641", - "op" : "Add", - "outputs" : ["Add_37641_0"] - }, - { - "inputs" : [ "Add_37589", "Sum_37636" ], - "name" : "Add_37642", - "op" : "Add", - "outputs" : ["Add_37642_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37643"], - "name" : "Reshape_37648", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37648_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37644"], - "name" : "Reshape_37649", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37649_0"] - }, - { - "inputs" : [ "Slice_37604", "Reshape_37640" ], - "name" : "Add_37645", - "op" : "Add", - "outputs" : ["Add_37645_0"] - }, - { - "inputs" : [ "Parameter_35815", "Add_37641" ], - "name" : "Multiply_37646", - "op" : "Multiply", - "outputs" : ["Multiply_37646_0"] - }, - { - "inputs" : [ "Add_37641", "Parameter_33986" ], - "name" : "Multiply_37647", - "op" : "Multiply", - "outputs" : ["Multiply_37647_0"] - }, - { - "inputs" : [ "Add_37601", "Reshape_37648" ], - "name" : "Add_37653", - "op" : "Add", - "outputs" : ["Add_37653_0"] - }, - { - "inputs" : [ "Add_37600", "Reshape_37649" ], - "name" : "Add_37654", - "op" : "Add", - "outputs" : ["Add_37654_0"] - }, - { - "inputs" : [ "ReplaceSlice_37599", "Add_37645" ], - "lower_bounds" : [ 47, 0, 0 ], - "name" : "ReplaceSlice_37650", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37650_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 48, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37646", "Multiply_36903" ], - "name" : "Divide_37651", - "op" : "Divide", - "outputs" : ["Divide_37651_0"] - }, - { - "inputs" : ["Multiply_37647"], - "name" : "Negative_37652", - "op" : "Negative", - "outputs" : ["Negative_37652_0"] - }, - { - "inputs" : ["ReplaceSlice_37650"], - "lower_bounds" : [ 46, 0, 0 ], - "name" : "Slice_37655", - "op" : "Slice", - "outputs" : ["Slice_37655_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 47, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37606", "Divide_37651" ], - "name" : "Add_37656", - "op" : "Add", - "outputs" : ["Add_37656_0"] - }, - { - "inputs" : [ "Negative_37652", "Parameter_35815" ], - "name" : "Multiply_37657", - "op" : "Multiply", - "outputs" : ["Multiply_37657_0"] - }, - { - "inputs" : [ "Add_37656", "Parameter_33989" ], - "name" : "Multiply_37659", - "op" : "Multiply", - "outputs" : ["Multiply_37659_0"] - }, - { - "inputs" : [ "Parameter_35808", "Add_37656" ], - "name" : "Multiply_37660", - "op" : "Multiply", - "outputs" : ["Multiply_37660_0"] - }, - { - "inputs" : [ "Add_37656", "Parameter_33998" ], - "name" : "Multiply_37661", - "op" : "Multiply", - "outputs" : ["Multiply_37661_0"] - }, - { - "inputs" : [ "Parameter_35800", "Add_37656" ], - "name" : "Multiply_37658", - "op" : "Multiply", - "outputs" : ["Multiply_37658_0"] - }, - { - "inputs" : [ "Multiply_37657", "Parameter_35816" ], - "name" : "Divide_37662", - "op" : "Divide", - "outputs" : ["Divide_37662_0"] - }, - { - "inputs" : ["Multiply_37659"], - "name" : "Negative_37664", - "op" : "Negative", - "outputs" : ["Negative_37664_0"] - }, - { - "inputs" : ["Multiply_37661"], - "name" : "Negative_37665", - "op" : "Negative", - "outputs" : ["Negative_37665_0"] - }, - { - "inputs" : [ "Multiply_37658", "Multiply_36901" ], - "name" : "Divide_37663", - "op" : "Divide", - "outputs" : ["Divide_37663_0"] - }, - { - "inputs" : [ "Divide_37662", "Parameter_35817" ], - "name" : "Multiply_37666", - "op" : "Multiply", - "outputs" : ["Multiply_37666_0"] - }, - { - "inputs" : [ "Negative_37664", "Parameter_35800" ], - "name" : "Multiply_37668", - "op" : "Multiply", - "outputs" : ["Multiply_37668_0"] - }, - { - "inputs" : [ "Negative_37665", "Parameter_35808" ], - "name" : "Multiply_37669", - "op" : "Multiply", - "outputs" : ["Multiply_37669_0"] - }, - { - "inputs" : [ "Broadcast_36322", "Divide_37663" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37667", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37667_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_37666"], - "name" : "Negative_37670", - "op" : "Negative", - "outputs" : ["Negative_37670_0"] - }, - { - "inputs" : [ "Multiply_37668", "Parameter_35801" ], - "name" : "Divide_37672", - "op" : "Divide", - "outputs" : ["Divide_37672_0"] - }, - { - "inputs" : [ "Multiply_37669", "Parameter_35809" ], - "name" : "Divide_37673", - "op" : "Divide", - "outputs" : ["Divide_37673_0"] - }, - { - "inputs" : ["ReplaceSlice_37667"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37671", - "op" : "Slice", - "outputs" : ["Slice_37671_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_37672", "Parameter_35802" ], - "name" : "Multiply_37674", - "op" : "Multiply", - "outputs" : ["Multiply_37674_0"] - }, - { - "inputs" : [ "Divide_37673", "Parameter_35810" ], - "name" : "Multiply_37675", - "op" : "Multiply", - "outputs" : ["Multiply_37675_0"] - }, - { - "inputs" : ["Multiply_37674"], - "name" : "Negative_37676", - "op" : "Negative", - "outputs" : ["Negative_37676_0"] - }, - { - "inputs" : ["Multiply_37675"], - "name" : "Negative_37677", - "op" : "Negative", - "outputs" : ["Negative_37677_0"] - }, - { - "inputs" : [ "Slice_37671", "Negative_37676" ], - "name" : "Add_37678", - "op" : "Add", - "outputs" : ["Add_37678_0"] - }, - { - "inputs" : [ "ReplaceSlice_37667", "Add_37678" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37679", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37679_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37679"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37680", - "op" : "Slice", - "outputs" : ["Slice_37680_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37680", "Negative_37677" ], - "name" : "Add_37681", - "op" : "Add", - "outputs" : ["Add_37681_0"] - }, - { - "inputs" : [ "ReplaceSlice_37679", "Add_37681" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37682", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37682_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37682"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37683", - "op" : "Slice", - "outputs" : ["Slice_37683_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37683", "Negative_37670" ], - "name" : "Add_37684", - "op" : "Add", - "outputs" : ["Add_37684_0"] - }, - { - "inputs" : [ "ReplaceSlice_37682", "Add_37684" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37685", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37685_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37685", "Reshape_36487" ], - "name" : "Dot_37691", - "op" : "Dot", - "outputs" : ["Dot_37691_0"] - }, - { - "inputs" : [ "Reshape_36899", "ReplaceSlice_37685" ], - "name" : "Dot_37686", - "op" : "Dot", - "outputs" : ["Dot_37686_0"] - }, - { - "inputs" : [ "Reshape_36596", "ReplaceSlice_37685" ], - "name" : "Dot_37687", - "op" : "Dot", - "outputs" : ["Dot_37687_0"] - }, - { - "inputs" : ["ReplaceSlice_37685"], - "name" : "Sum_37688", - "op" : "Sum", - "outputs" : ["Sum_37688_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37685", "Reshape_36370" ], - "name" : "Dot_37690", - "op" : "Dot", - "outputs" : ["Dot_37690_0"] - }, - { - "inputs" : ["ReplaceSlice_37685"], - "name" : "Sum_37689", - "op" : "Sum", - "outputs" : ["Sum_37689_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37691"], - "name" : "Reshape_37697", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37697_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37686"], - "name" : "Reshape_37692", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37692_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37687"], - "name" : "Reshape_37693", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37693_0"] - }, - { - "inputs" : [ "Add_37642", "Sum_37688" ], - "name" : "Add_37694", - "op" : "Add", - "outputs" : ["Add_37694_0"] - }, - { - "inputs" : [ "Dot_37690", "Reshape_36657" ], - "name" : "Add_37696", - "op" : "Add", - "outputs" : ["Add_37696_0"] - }, - { - "inputs" : [ "Add_37639", "Sum_37689" ], - "name" : "Add_37695", - "op" : "Add", - "outputs" : ["Add_37695_0"] - }, - { - "inputs" : [ "Slice_37655", "Reshape_37697" ], - "name" : "Add_37702", - "op" : "Add", - "outputs" : ["Add_37702_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37692"], - "name" : "Reshape_37698", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37698_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37693"], - "name" : "Reshape_37699", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37699_0"] - }, - { - "inputs" : [ "Parameter_35787", "Add_37696" ], - "name" : "Multiply_37700", - "op" : "Multiply", - "outputs" : ["Multiply_37700_0"] - }, - { - "inputs" : [ "Add_37696", "Parameter_33997" ], - "name" : "Multiply_37701", - "op" : "Multiply", - "outputs" : ["Multiply_37701_0"] - }, - { - "inputs" : [ "ReplaceSlice_37650", "Add_37702" ], - "lower_bounds" : [ 46, 0, 0 ], - "name" : "ReplaceSlice_37707", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37707_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 47, 64, 256 ] - }, - { - "inputs" : [ "Add_37653", "Reshape_37698" ], - "name" : "Add_37703", - "op" : "Add", - "outputs" : ["Add_37703_0"] - }, - { - "inputs" : [ "Add_37654", "Reshape_37699" ], - "name" : "Add_37704", - "op" : "Add", - "outputs" : ["Add_37704_0"] - }, - { - "inputs" : [ "Multiply_37700", "Multiply_36898" ], - "name" : "Divide_37705", - "op" : "Divide", - "outputs" : ["Divide_37705_0"] - }, - { - "inputs" : ["Multiply_37701"], - "name" : "Negative_37706", - "op" : "Negative", - "outputs" : ["Negative_37706_0"] - }, - { - "inputs" : ["ReplaceSlice_37707"], - "lower_bounds" : [ 45, 0, 0 ], - "name" : "Slice_37710", - "op" : "Slice", - "outputs" : ["Slice_37710_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 46, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37660", "Divide_37705" ], - "name" : "Add_37708", - "op" : "Add", - "outputs" : ["Add_37708_0"] - }, - { - "inputs" : [ "Negative_37706", "Parameter_35787" ], - "name" : "Multiply_37709", - "op" : "Multiply", - "outputs" : ["Multiply_37709_0"] - }, - { - "inputs" : [ "Add_37708", "Parameter_34000" ], - "name" : "Multiply_37713", - "op" : "Multiply", - "outputs" : ["Multiply_37713_0"] - }, - { - "inputs" : [ "Parameter_35780", "Add_37708" ], - "name" : "Multiply_37714", - "op" : "Multiply", - "outputs" : ["Multiply_37714_0"] - }, - { - "inputs" : [ "Parameter_35772", "Add_37708" ], - "name" : "Multiply_37712", - "op" : "Multiply", - "outputs" : ["Multiply_37712_0"] - }, - { - "inputs" : [ "Add_37708", "Parameter_34009" ], - "name" : "Multiply_37711", - "op" : "Multiply", - "outputs" : ["Multiply_37711_0"] - }, - { - "inputs" : [ "Multiply_37709", "Parameter_35788" ], - "name" : "Divide_37715", - "op" : "Divide", - "outputs" : ["Divide_37715_0"] - }, - { - "inputs" : ["Multiply_37713"], - "name" : "Negative_37718", - "op" : "Negative", - "outputs" : ["Negative_37718_0"] - }, - { - "inputs" : [ "Multiply_37712", "Multiply_36896" ], - "name" : "Divide_37717", - "op" : "Divide", - "outputs" : ["Divide_37717_0"] - }, - { - "inputs" : ["Multiply_37711"], - "name" : "Negative_37716", - "op" : "Negative", - "outputs" : ["Negative_37716_0"] - }, - { - "inputs" : [ "Divide_37715", "Parameter_35789" ], - "name" : "Multiply_37719", - "op" : "Multiply", - "outputs" : ["Multiply_37719_0"] - }, - { - "inputs" : [ "Negative_37718", "Parameter_35772" ], - "name" : "Multiply_37722", - "op" : "Multiply", - "outputs" : ["Multiply_37722_0"] - }, - { - "inputs" : [ "Broadcast_36323", "Divide_37717" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37721", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37721_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37716", "Parameter_35780" ], - "name" : "Multiply_37720", - "op" : "Multiply", - "outputs" : ["Multiply_37720_0"] - }, - { - "inputs" : ["Multiply_37719"], - "name" : "Negative_37723", - "op" : "Negative", - "outputs" : ["Negative_37723_0"] - }, - { - "inputs" : [ "Multiply_37722", "Parameter_35773" ], - "name" : "Divide_37726", - "op" : "Divide", - "outputs" : ["Divide_37726_0"] - }, - { - "inputs" : ["ReplaceSlice_37721"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37725", - "op" : "Slice", - "outputs" : ["Slice_37725_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37720", "Parameter_35781" ], - "name" : "Divide_37724", - "op" : "Divide", - "outputs" : ["Divide_37724_0"] - }, - { - "inputs" : [ "Divide_37726", "Parameter_35774" ], - "name" : "Multiply_37728", - "op" : "Multiply", - "outputs" : ["Multiply_37728_0"] - }, - { - "inputs" : [ "Divide_37724", "Parameter_35782" ], - "name" : "Multiply_37727", - "op" : "Multiply", - "outputs" : ["Multiply_37727_0"] - }, - { - "inputs" : ["Multiply_37728"], - "name" : "Negative_37730", - "op" : "Negative", - "outputs" : ["Negative_37730_0"] - }, - { - "inputs" : ["Multiply_37727"], - "name" : "Negative_37729", - "op" : "Negative", - "outputs" : ["Negative_37729_0"] - }, - { - "inputs" : [ "Slice_37725", "Negative_37730" ], - "name" : "Add_37731", - "op" : "Add", - "outputs" : ["Add_37731_0"] - }, - { - "inputs" : [ "ReplaceSlice_37721", "Add_37731" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37732", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37732_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37732"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37733", - "op" : "Slice", - "outputs" : ["Slice_37733_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37733", "Negative_37729" ], - "name" : "Add_37734", - "op" : "Add", - "outputs" : ["Add_37734_0"] - }, - { - "inputs" : [ "ReplaceSlice_37732", "Add_37734" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37735", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37735_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37735"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37736", - "op" : "Slice", - "outputs" : ["Slice_37736_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37736", "Negative_37723" ], - "name" : "Add_37737", - "op" : "Add", - "outputs" : ["Add_37737_0"] - }, - { - "inputs" : [ "ReplaceSlice_37735", "Add_37737" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37738", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37738_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_37738"], - "name" : "Sum_37741", - "op" : "Sum", - "outputs" : ["Sum_37741_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37738", "Reshape_36427" ], - "name" : "Dot_37744", - "op" : "Dot", - "outputs" : ["Dot_37744_0"] - }, - { - "inputs" : ["ReplaceSlice_37738"], - "name" : "Sum_37739", - "op" : "Sum", - "outputs" : ["Sum_37739_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36595", "ReplaceSlice_37738" ], - "name" : "Dot_37740", - "op" : "Dot", - "outputs" : ["Dot_37740_0"] - }, - { - "inputs" : [ "Reshape_36894", "ReplaceSlice_37738" ], - "name" : "Dot_37742", - "op" : "Dot", - "outputs" : ["Dot_37742_0"] - }, - { - "inputs" : [ "ReplaceSlice_37738", "Reshape_36464" ], - "name" : "Dot_37743", - "op" : "Dot", - "outputs" : ["Dot_37743_0"] - }, - { - "inputs" : [ "Add_37695", "Sum_37741" ], - "name" : "Add_37747", - "op" : "Add", - "outputs" : ["Add_37747_0"] - }, - { - "inputs" : [ "Dot_37744", "Reshape_36656" ], - "name" : "Add_37750", - "op" : "Add", - "outputs" : ["Add_37750_0"] - }, - { - "inputs" : [ "Add_37694", "Sum_37739" ], - "name" : "Add_37745", - "op" : "Add", - "outputs" : ["Add_37745_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37740"], - "name" : "Reshape_37746", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37746_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37742"], - "name" : "Reshape_37748", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37748_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37743"], - "name" : "Reshape_37749", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37749_0"] - }, - { - "inputs" : [ "Add_37750", "Parameter_34008" ], - "name" : "Multiply_37754", - "op" : "Multiply", - "outputs" : ["Multiply_37754_0"] - }, - { - "inputs" : [ "Parameter_35759", "Add_37750" ], - "name" : "Multiply_37755", - "op" : "Multiply", - "outputs" : ["Multiply_37755_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37746"], - "name" : "Reshape_37751", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37751_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37748"], - "name" : "Reshape_37752", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37752_0"] - }, - { - "inputs" : [ "Slice_37710", "Reshape_37749" ], - "name" : "Add_37753", - "op" : "Add", - "outputs" : ["Add_37753_0"] - }, - { - "inputs" : ["Multiply_37754"], - "name" : "Negative_37759", - "op" : "Negative", - "outputs" : ["Negative_37759_0"] - }, - { - "inputs" : [ "Multiply_37755", "Multiply_36893" ], - "name" : "Divide_37760", - "op" : "Divide", - "outputs" : ["Divide_37760_0"] - }, - { - "inputs" : [ "Add_37704", "Reshape_37751" ], - "name" : "Add_37756", - "op" : "Add", - "outputs" : ["Add_37756_0"] - }, - { - "inputs" : [ "Add_37703", "Reshape_37752" ], - "name" : "Add_37757", - "op" : "Add", - "outputs" : ["Add_37757_0"] - }, - { - "inputs" : [ "ReplaceSlice_37707", "Add_37753" ], - "lower_bounds" : [ 45, 0, 0 ], - "name" : "ReplaceSlice_37758", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37758_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 46, 64, 256 ] - }, - { - "inputs" : [ "Negative_37759", "Parameter_35759" ], - "name" : "Multiply_37762", - "op" : "Multiply", - "outputs" : ["Multiply_37762_0"] - }, - { - "inputs" : [ "Multiply_37714", "Divide_37760" ], - "name" : "Add_37763", - "op" : "Add", - "outputs" : ["Add_37763_0"] - }, - { - "inputs" : ["ReplaceSlice_37758"], - "lower_bounds" : [ 44, 0, 0 ], - "name" : "Slice_37761", - "op" : "Slice", - "outputs" : ["Slice_37761_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 45, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37762", "Parameter_35760" ], - "name" : "Divide_37764", - "op" : "Divide", - "outputs" : ["Divide_37764_0"] - }, - { - "inputs" : [ "Add_37763", "Parameter_34011" ], - "name" : "Multiply_37765", - "op" : "Multiply", - "outputs" : ["Multiply_37765_0"] - }, - { - "inputs" : [ "Parameter_35752", "Add_37763" ], - "name" : "Multiply_37766", - "op" : "Multiply", - "outputs" : ["Multiply_37766_0"] - }, - { - "inputs" : [ "Add_37763", "Parameter_34020" ], - "name" : "Multiply_37767", - "op" : "Multiply", - "outputs" : ["Multiply_37767_0"] - }, - { - "inputs" : [ "Parameter_35744", "Add_37763" ], - "name" : "Multiply_37768", - "op" : "Multiply", - "outputs" : ["Multiply_37768_0"] - }, - { - "inputs" : [ "Divide_37764", "Parameter_35761" ], - "name" : "Multiply_37769", - "op" : "Multiply", - "outputs" : ["Multiply_37769_0"] - }, - { - "inputs" : ["Multiply_37765"], - "name" : "Negative_37770", - "op" : "Negative", - "outputs" : ["Negative_37770_0"] - }, - { - "inputs" : ["Multiply_37767"], - "name" : "Negative_37771", - "op" : "Negative", - "outputs" : ["Negative_37771_0"] - }, - { - "inputs" : [ "Multiply_37768", "Multiply_36891" ], - "name" : "Divide_37772", - "op" : "Divide", - "outputs" : ["Divide_37772_0"] - }, - { - "inputs" : ["Multiply_37769"], - "name" : "Negative_37773", - "op" : "Negative", - "outputs" : ["Negative_37773_0"] - }, - { - "inputs" : [ "Negative_37770", "Parameter_35744" ], - "name" : "Multiply_37774", - "op" : "Multiply", - "outputs" : ["Multiply_37774_0"] - }, - { - "inputs" : [ "Negative_37771", "Parameter_35752" ], - "name" : "Multiply_37775", - "op" : "Multiply", - "outputs" : ["Multiply_37775_0"] - }, - { - "inputs" : [ "Broadcast_36324", "Divide_37772" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37776", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37776_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_37774", "Parameter_35745" ], - "name" : "Divide_37777", - "op" : "Divide", - "outputs" : ["Divide_37777_0"] - }, - { - "inputs" : [ "Multiply_37775", "Parameter_35753" ], - "name" : "Divide_37778", - "op" : "Divide", - "outputs" : ["Divide_37778_0"] - }, - { - "inputs" : ["ReplaceSlice_37776"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37779", - "op" : "Slice", - "outputs" : ["Slice_37779_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_37777", "Parameter_35746" ], - "name" : "Multiply_37780", - "op" : "Multiply", - "outputs" : ["Multiply_37780_0"] - }, - { - "inputs" : [ "Divide_37778", "Parameter_35754" ], - "name" : "Multiply_37781", - "op" : "Multiply", - "outputs" : ["Multiply_37781_0"] - }, - { - "inputs" : ["Multiply_37780"], - "name" : "Negative_37782", - "op" : "Negative", - "outputs" : ["Negative_37782_0"] - }, - { - "inputs" : ["Multiply_37781"], - "name" : "Negative_37783", - "op" : "Negative", - "outputs" : ["Negative_37783_0"] - }, - { - "inputs" : [ "Slice_37779", "Negative_37782" ], - "name" : "Add_37784", - "op" : "Add", - "outputs" : ["Add_37784_0"] - }, - { - "inputs" : [ "ReplaceSlice_37776", "Add_37784" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37785", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37785_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37785"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37786", - "op" : "Slice", - "outputs" : ["Slice_37786_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37786", "Negative_37783" ], - "name" : "Add_37787", - "op" : "Add", - "outputs" : ["Add_37787_0"] - }, - { - "inputs" : [ "ReplaceSlice_37785", "Add_37787" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37788", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37788_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37788"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37789", - "op" : "Slice", - "outputs" : ["Slice_37789_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37789", "Negative_37773" ], - "name" : "Add_37790", - "op" : "Add", - "outputs" : ["Add_37790_0"] - }, - { - "inputs" : [ "ReplaceSlice_37788", "Add_37790" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37791", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37791_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37791", "Reshape_36460" ], - "name" : "Dot_37792", - "op" : "Dot", - "outputs" : ["Dot_37792_0"] - }, - { - "inputs" : [ "ReplaceSlice_37791", "Reshape_36396" ], - "name" : "Dot_37793", - "op" : "Dot", - "outputs" : ["Dot_37793_0"] - }, - { - "inputs" : [ "Reshape_36594", "ReplaceSlice_37791" ], - "name" : "Dot_37795", - "op" : "Dot", - "outputs" : ["Dot_37795_0"] - }, - { - "inputs" : [ "Reshape_36889", "ReplaceSlice_37791" ], - "name" : "Dot_37794", - "op" : "Dot", - "outputs" : ["Dot_37794_0"] - }, - { - "inputs" : ["ReplaceSlice_37791"], - "name" : "Sum_37796", - "op" : "Sum", - "outputs" : ["Sum_37796_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_37791"], - "name" : "Sum_37797", - "op" : "Sum", - "outputs" : ["Sum_37797_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37792"], - "name" : "Reshape_37798", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37798_0"] - }, - { - "inputs" : [ "Dot_37793", "Reshape_36655" ], - "name" : "Add_37799", - "op" : "Add", - "outputs" : ["Add_37799_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37795"], - "name" : "Reshape_37801", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37801_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37794"], - "name" : "Reshape_37800", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37800_0"] - }, - { - "inputs" : [ "Add_37745", "Sum_37796" ], - "name" : "Add_37802", - "op" : "Add", - "outputs" : ["Add_37802_0"] - }, - { - "inputs" : [ "Add_37747", "Sum_37797" ], - "name" : "Add_37803", - "op" : "Add", - "outputs" : ["Add_37803_0"] - }, - { - "inputs" : [ "Slice_37761", "Reshape_37798" ], - "name" : "Add_37804", - "op" : "Add", - "outputs" : ["Add_37804_0"] - }, - { - "inputs" : [ "Add_37799", "Parameter_34019" ], - "name" : "Multiply_37806", - "op" : "Multiply", - "outputs" : ["Multiply_37806_0"] - }, - { - "inputs" : [ "Parameter_35731", "Add_37799" ], - "name" : "Multiply_37805", - "op" : "Multiply", - "outputs" : ["Multiply_37805_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37801"], - "name" : "Reshape_37808", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37808_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37800"], - "name" : "Reshape_37807", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37807_0"] - }, - { - "inputs" : [ "ReplaceSlice_37758", "Add_37804" ], - "lower_bounds" : [ 44, 0, 0 ], - "name" : "ReplaceSlice_37809", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37809_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 45, 64, 256 ] - }, - { - "inputs" : ["Multiply_37806"], - "name" : "Negative_37811", - "op" : "Negative", - "outputs" : ["Negative_37811_0"] - }, - { - "inputs" : [ "Multiply_37805", "Multiply_36888" ], - "name" : "Divide_37810", - "op" : "Divide", - "outputs" : ["Divide_37810_0"] - }, - { - "inputs" : [ "Add_37756", "Reshape_37808" ], - "name" : "Add_37813", - "op" : "Add", - "outputs" : ["Add_37813_0"] - }, - { - "inputs" : [ "Add_37757", "Reshape_37807" ], - "name" : "Add_37812", - "op" : "Add", - "outputs" : ["Add_37812_0"] - }, - { - "inputs" : ["ReplaceSlice_37809"], - "lower_bounds" : [ 43, 0, 0 ], - "name" : "Slice_37814", - "op" : "Slice", - "outputs" : ["Slice_37814_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 44, 64, 256 ] - }, - { - "inputs" : [ "Negative_37811", "Parameter_35731" ], - "name" : "Multiply_37816", - "op" : "Multiply", - "outputs" : ["Multiply_37816_0"] - }, - { - "inputs" : [ "Multiply_37766", "Divide_37810" ], - "name" : "Add_37815", - "op" : "Add", - "outputs" : ["Add_37815_0"] - }, - { - "inputs" : [ "Multiply_37816", "Parameter_35732" ], - "name" : "Divide_37821", - "op" : "Divide", - "outputs" : ["Divide_37821_0"] - }, - { - "inputs" : [ "Parameter_35716", "Add_37815" ], - "name" : "Multiply_37817", - "op" : "Multiply", - "outputs" : ["Multiply_37817_0"] - }, - { - "inputs" : [ "Add_37815", "Parameter_34022" ], - "name" : "Multiply_37818", - "op" : "Multiply", - "outputs" : ["Multiply_37818_0"] - }, - { - "inputs" : [ "Add_37815", "Parameter_34031" ], - "name" : "Multiply_37819", - "op" : "Multiply", - "outputs" : ["Multiply_37819_0"] - }, - { - "inputs" : [ "Parameter_35724", "Add_37815" ], - "name" : "Multiply_37820", - "op" : "Multiply", - "outputs" : ["Multiply_37820_0"] - }, - { - "inputs" : [ "Divide_37821", "Parameter_35733" ], - "name" : "Multiply_37825", - "op" : "Multiply", - "outputs" : ["Multiply_37825_0"] - }, - { - "inputs" : [ "Multiply_37817", "Multiply_36886" ], - "name" : "Divide_37822", - "op" : "Divide", - "outputs" : ["Divide_37822_0"] - }, - { - "inputs" : ["Multiply_37818"], - "name" : "Negative_37823", - "op" : "Negative", - "outputs" : ["Negative_37823_0"] - }, - { - "inputs" : ["Multiply_37819"], - "name" : "Negative_37824", - "op" : "Negative", - "outputs" : ["Negative_37824_0"] - }, - { - "inputs" : ["Multiply_37825"], - "name" : "Negative_37829", - "op" : "Negative", - "outputs" : ["Negative_37829_0"] - }, - { - "inputs" : [ "Broadcast_36325", "Divide_37822" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37826", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37826_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37823", "Parameter_35716" ], - "name" : "Multiply_37827", - "op" : "Multiply", - "outputs" : ["Multiply_37827_0"] - }, - { - "inputs" : [ "Negative_37824", "Parameter_35724" ], - "name" : "Multiply_37828", - "op" : "Multiply", - "outputs" : ["Multiply_37828_0"] - }, - { - "inputs" : ["ReplaceSlice_37826"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37830", - "op" : "Slice", - "outputs" : ["Slice_37830_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37827", "Parameter_35717" ], - "name" : "Divide_37831", - "op" : "Divide", - "outputs" : ["Divide_37831_0"] - }, - { - "inputs" : [ "Multiply_37828", "Parameter_35725" ], - "name" : "Divide_37832", - "op" : "Divide", - "outputs" : ["Divide_37832_0"] - }, - { - "inputs" : [ "Divide_37831", "Parameter_35718" ], - "name" : "Multiply_37833", - "op" : "Multiply", - "outputs" : ["Multiply_37833_0"] - }, - { - "inputs" : [ "Divide_37832", "Parameter_35726" ], - "name" : "Multiply_37834", - "op" : "Multiply", - "outputs" : ["Multiply_37834_0"] - }, - { - "inputs" : ["Multiply_37833"], - "name" : "Negative_37835", - "op" : "Negative", - "outputs" : ["Negative_37835_0"] - }, - { - "inputs" : ["Multiply_37834"], - "name" : "Negative_37836", - "op" : "Negative", - "outputs" : ["Negative_37836_0"] - }, - { - "inputs" : [ "Slice_37830", "Negative_37835" ], - "name" : "Add_37837", - "op" : "Add", - "outputs" : ["Add_37837_0"] - }, - { - "inputs" : [ "ReplaceSlice_37826", "Add_37837" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37838", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37838_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37838"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37839", - "op" : "Slice", - "outputs" : ["Slice_37839_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37839", "Negative_37836" ], - "name" : "Add_37840", - "op" : "Add", - "outputs" : ["Add_37840_0"] - }, - { - "inputs" : [ "ReplaceSlice_37838", "Add_37840" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37841", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37841_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37841"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37842", - "op" : "Slice", - "outputs" : ["Slice_37842_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37842", "Negative_37829" ], - "name" : "Add_37843", - "op" : "Add", - "outputs" : ["Add_37843_0"] - }, - { - "inputs" : [ "ReplaceSlice_37841", "Add_37843" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37844", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37844_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37844", "Reshape_36382" ], - "name" : "Dot_37846", - "op" : "Dot", - "outputs" : ["Dot_37846_0"] - }, - { - "inputs" : [ "Reshape_36884", "ReplaceSlice_37844" ], - "name" : "Dot_37848", - "op" : "Dot", - "outputs" : ["Dot_37848_0"] - }, - { - "inputs" : [ "Reshape_36592", "ReplaceSlice_37844" ], - "name" : "Dot_37849", - "op" : "Dot", - "outputs" : ["Dot_37849_0"] - }, - { - "inputs" : ["ReplaceSlice_37844"], - "name" : "Sum_37845", - "op" : "Sum", - "outputs" : ["Sum_37845_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_37844"], - "name" : "Sum_37850", - "op" : "Sum", - "outputs" : ["Sum_37850_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_37844", "Reshape_36448" ], - "name" : "Dot_37847", - "op" : "Dot", - "outputs" : ["Dot_37847_0"] - }, - { - "inputs" : [ "Dot_37846", "Reshape_36654" ], - "name" : "Add_37852", - "op" : "Add", - "outputs" : ["Add_37852_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37848"], - "name" : "Reshape_37854", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37854_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37849"], - "name" : "Reshape_37855", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37855_0"] - }, - { - "inputs" : [ "Add_37802", "Sum_37845" ], - "name" : "Add_37851", - "op" : "Add", - "outputs" : ["Add_37851_0"] - }, - { - "inputs" : [ "Add_37803", "Sum_37850" ], - "name" : "Add_37856", - "op" : "Add", - "outputs" : ["Add_37856_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37847"], - "name" : "Reshape_37853", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37853_0"] - }, - { - "inputs" : [ "Add_37852", "Parameter_34030" ], - "name" : "Multiply_37858", - "op" : "Multiply", - "outputs" : ["Multiply_37858_0"] - }, - { - "inputs" : [ "Parameter_35703", "Add_37852" ], - "name" : "Multiply_37857", - "op" : "Multiply", - "outputs" : ["Multiply_37857_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37854"], - "name" : "Reshape_37860", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37860_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37855"], - "name" : "Reshape_37861", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37861_0"] - }, - { - "inputs" : [ "Slice_37814", "Reshape_37853" ], - "name" : "Add_37859", - "op" : "Add", - "outputs" : ["Add_37859_0"] - }, - { - "inputs" : ["Multiply_37858"], - "name" : "Negative_37863", - "op" : "Negative", - "outputs" : ["Negative_37863_0"] - }, - { - "inputs" : [ "Multiply_37857", "Multiply_36883" ], - "name" : "Divide_37862", - "op" : "Divide", - "outputs" : ["Divide_37862_0"] - }, - { - "inputs" : [ "Add_37812", "Reshape_37860" ], - "name" : "Add_37865", - "op" : "Add", - "outputs" : ["Add_37865_0"] - }, - { - "inputs" : [ "Add_37813", "Reshape_37861" ], - "name" : "Add_37866", - "op" : "Add", - "outputs" : ["Add_37866_0"] - }, - { - "inputs" : [ "ReplaceSlice_37809", "Add_37859" ], - "lower_bounds" : [ 43, 0, 0 ], - "name" : "ReplaceSlice_37864", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37864_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 44, 64, 256 ] - }, - { - "inputs" : [ "Negative_37863", "Parameter_35703" ], - "name" : "Multiply_37868", - "op" : "Multiply", - "outputs" : ["Multiply_37868_0"] - }, - { - "inputs" : [ "Multiply_37820", "Divide_37862" ], - "name" : "Add_37867", - "op" : "Add", - "outputs" : ["Add_37867_0"] - }, - { - "inputs" : ["ReplaceSlice_37864"], - "lower_bounds" : [ 42, 0, 0 ], - "name" : "Slice_37869", - "op" : "Slice", - "outputs" : ["Slice_37869_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 43, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37868", "Parameter_35704" ], - "name" : "Divide_37874", - "op" : "Divide", - "outputs" : ["Divide_37874_0"] - }, - { - "inputs" : [ "Add_37867", "Parameter_34042" ], - "name" : "Multiply_37870", - "op" : "Multiply", - "outputs" : ["Multiply_37870_0"] - }, - { - "inputs" : [ "Add_37867", "Parameter_34033" ], - "name" : "Multiply_37873", - "op" : "Multiply", - "outputs" : ["Multiply_37873_0"] - }, - { - "inputs" : [ "Parameter_35688", "Add_37867" ], - "name" : "Multiply_37872", - "op" : "Multiply", - "outputs" : ["Multiply_37872_0"] - }, - { - "inputs" : [ "Parameter_35696", "Add_37867" ], - "name" : "Multiply_37871", - "op" : "Multiply", - "outputs" : ["Multiply_37871_0"] - }, - { - "inputs" : [ "Divide_37874", "Parameter_35705" ], - "name" : "Multiply_37878", - "op" : "Multiply", - "outputs" : ["Multiply_37878_0"] - }, - { - "inputs" : ["Multiply_37870"], - "name" : "Negative_37875", - "op" : "Negative", - "outputs" : ["Negative_37875_0"] - }, - { - "inputs" : ["Multiply_37873"], - "name" : "Negative_37877", - "op" : "Negative", - "outputs" : ["Negative_37877_0"] - }, - { - "inputs" : [ "Multiply_37872", "Multiply_36881" ], - "name" : "Divide_37876", - "op" : "Divide", - "outputs" : ["Divide_37876_0"] - }, - { - "inputs" : ["Multiply_37878"], - "name" : "Negative_37882", - "op" : "Negative", - "outputs" : ["Negative_37882_0"] - }, - { - "inputs" : [ "Negative_37875", "Parameter_35696" ], - "name" : "Multiply_37879", - "op" : "Multiply", - "outputs" : ["Multiply_37879_0"] - }, - { - "inputs" : [ "Negative_37877", "Parameter_35688" ], - "name" : "Multiply_37881", - "op" : "Multiply", - "outputs" : ["Multiply_37881_0"] - }, - { - "inputs" : [ "Broadcast_36326", "Divide_37876" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37880", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37880_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_37879", "Parameter_35697" ], - "name" : "Divide_37883", - "op" : "Divide", - "outputs" : ["Divide_37883_0"] - }, - { - "inputs" : [ "Multiply_37881", "Parameter_35689" ], - "name" : "Divide_37885", - "op" : "Divide", - "outputs" : ["Divide_37885_0"] - }, - { - "inputs" : ["ReplaceSlice_37880"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37884", - "op" : "Slice", - "outputs" : ["Slice_37884_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_37883", "Parameter_35698" ], - "name" : "Multiply_37886", - "op" : "Multiply", - "outputs" : ["Multiply_37886_0"] - }, - { - "inputs" : [ "Divide_37885", "Parameter_35690" ], - "name" : "Multiply_37887", - "op" : "Multiply", - "outputs" : ["Multiply_37887_0"] - }, - { - "inputs" : ["Multiply_37886"], - "name" : "Negative_37888", - "op" : "Negative", - "outputs" : ["Negative_37888_0"] - }, - { - "inputs" : ["Multiply_37887"], - "name" : "Negative_37889", - "op" : "Negative", - "outputs" : ["Negative_37889_0"] - }, - { - "inputs" : [ "Slice_37884", "Negative_37889" ], - "name" : "Add_37890", - "op" : "Add", - "outputs" : ["Add_37890_0"] - }, - { - "inputs" : [ "ReplaceSlice_37880", "Add_37890" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37891", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37891_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37891"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37892", - "op" : "Slice", - "outputs" : ["Slice_37892_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37892", "Negative_37888" ], - "name" : "Add_37893", - "op" : "Add", - "outputs" : ["Add_37893_0"] - }, - { - "inputs" : [ "ReplaceSlice_37891", "Add_37893" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37894", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37894_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37894"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37895", - "op" : "Slice", - "outputs" : ["Slice_37895_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37895", "Negative_37882" ], - "name" : "Add_37896", - "op" : "Add", - "outputs" : ["Add_37896_0"] - }, - { - "inputs" : [ "ReplaceSlice_37894", "Add_37896" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37897", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37897_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37897", "Reshape_36391" ], - "name" : "Dot_37903", - "op" : "Dot", - "outputs" : ["Dot_37903_0"] - }, - { - "inputs" : [ "ReplaceSlice_37897", "Reshape_36456" ], - "name" : "Dot_37898", - "op" : "Dot", - "outputs" : ["Dot_37898_0"] - }, - { - "inputs" : ["ReplaceSlice_37897"], - "name" : "Sum_37901", - "op" : "Sum", - "outputs" : ["Sum_37901_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36591", "ReplaceSlice_37897" ], - "name" : "Dot_37902", - "op" : "Dot", - "outputs" : ["Dot_37902_0"] - }, - { - "inputs" : [ "Reshape_36879", "ReplaceSlice_37897" ], - "name" : "Dot_37899", - "op" : "Dot", - "outputs" : ["Dot_37899_0"] - }, - { - "inputs" : ["ReplaceSlice_37897"], - "name" : "Sum_37900", - "op" : "Sum", - "outputs" : ["Sum_37900_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Dot_37903", "Reshape_36653" ], - "name" : "Add_37909", - "op" : "Add", - "outputs" : ["Add_37909_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37898"], - "name" : "Reshape_37904", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37904_0"] - }, - { - "inputs" : [ "Add_37856", "Sum_37901" ], - "name" : "Add_37907", - "op" : "Add", - "outputs" : ["Add_37907_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37902"], - "name" : "Reshape_37908", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37908_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37899"], - "name" : "Reshape_37905", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37905_0"] - }, - { - "inputs" : [ "Add_37851", "Sum_37900" ], - "name" : "Add_37906", - "op" : "Add", - "outputs" : ["Add_37906_0"] - }, - { - "inputs" : [ "Add_37909", "Parameter_34041" ], - "name" : "Multiply_37914", - "op" : "Multiply", - "outputs" : ["Multiply_37914_0"] - }, - { - "inputs" : [ "Parameter_35675", "Add_37909" ], - "name" : "Multiply_37913", - "op" : "Multiply", - "outputs" : ["Multiply_37913_0"] - }, - { - "inputs" : [ "Slice_37869", "Reshape_37904" ], - "name" : "Add_37910", - "op" : "Add", - "outputs" : ["Add_37910_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37908"], - "name" : "Reshape_37912", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37912_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37905"], - "name" : "Reshape_37911", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37911_0"] - }, - { - "inputs" : ["Multiply_37914"], - "name" : "Negative_37919", - "op" : "Negative", - "outputs" : ["Negative_37919_0"] - }, - { - "inputs" : [ "Multiply_37913", "Multiply_36878" ], - "name" : "Divide_37918", - "op" : "Divide", - "outputs" : ["Divide_37918_0"] - }, - { - "inputs" : [ "ReplaceSlice_37864", "Add_37910" ], - "lower_bounds" : [ 42, 0, 0 ], - "name" : "ReplaceSlice_37915", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37915_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 43, 64, 256 ] - }, - { - "inputs" : [ "Add_37866", "Reshape_37912" ], - "name" : "Add_37917", - "op" : "Add", - "outputs" : ["Add_37917_0"] - }, - { - "inputs" : [ "Add_37865", "Reshape_37911" ], - "name" : "Add_37916", - "op" : "Add", - "outputs" : ["Add_37916_0"] - }, - { - "inputs" : [ "Negative_37919", "Parameter_35675" ], - "name" : "Multiply_37922", - "op" : "Multiply", - "outputs" : ["Multiply_37922_0"] - }, - { - "inputs" : [ "Multiply_37871", "Divide_37918" ], - "name" : "Add_37921", - "op" : "Add", - "outputs" : ["Add_37921_0"] - }, - { - "inputs" : ["ReplaceSlice_37915"], - "lower_bounds" : [ 41, 0, 0 ], - "name" : "Slice_37920", - "op" : "Slice", - "outputs" : ["Slice_37920_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 42, 64, 256 ] - }, - { - "inputs" : [ "Multiply_37922", "Parameter_35676" ], - "name" : "Divide_37927", - "op" : "Divide", - "outputs" : ["Divide_37927_0"] - }, - { - "inputs" : [ "Parameter_35668", "Add_37921" ], - "name" : "Multiply_37923", - "op" : "Multiply", - "outputs" : ["Multiply_37923_0"] - }, - { - "inputs" : [ "Add_37921", "Parameter_34044" ], - "name" : "Multiply_37924", - "op" : "Multiply", - "outputs" : ["Multiply_37924_0"] - }, - { - "inputs" : [ "Parameter_35660", "Add_37921" ], - "name" : "Multiply_37925", - "op" : "Multiply", - "outputs" : ["Multiply_37925_0"] - }, - { - "inputs" : [ "Add_37921", "Parameter_34053" ], - "name" : "Multiply_37926", - "op" : "Multiply", - "outputs" : ["Multiply_37926_0"] - }, - { - "inputs" : [ "Divide_37927", "Parameter_35677" ], - "name" : "Multiply_37931", - "op" : "Multiply", - "outputs" : ["Multiply_37931_0"] - }, - { - "inputs" : ["Multiply_37924"], - "name" : "Negative_37928", - "op" : "Negative", - "outputs" : ["Negative_37928_0"] - }, - { - "inputs" : [ "Multiply_37925", "Multiply_36876" ], - "name" : "Divide_37929", - "op" : "Divide", - "outputs" : ["Divide_37929_0"] - }, - { - "inputs" : ["Multiply_37926"], - "name" : "Negative_37930", - "op" : "Negative", - "outputs" : ["Negative_37930_0"] - }, - { - "inputs" : ["Multiply_37931"], - "name" : "Negative_37935", - "op" : "Negative", - "outputs" : ["Negative_37935_0"] - }, - { - "inputs" : [ "Negative_37928", "Parameter_35660" ], - "name" : "Multiply_37932", - "op" : "Multiply", - "outputs" : ["Multiply_37932_0"] - }, - { - "inputs" : [ "Broadcast_36327", "Divide_37929" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37933", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37933_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_37930", "Parameter_35668" ], - "name" : "Multiply_37934", - "op" : "Multiply", - "outputs" : ["Multiply_37934_0"] - }, - { - "inputs" : [ "Multiply_37932", "Parameter_35661" ], - "name" : "Divide_37936", - "op" : "Divide", - "outputs" : ["Divide_37936_0"] - }, - { - "inputs" : ["ReplaceSlice_37933"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37937", - "op" : "Slice", - "outputs" : ["Slice_37937_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_37934", "Parameter_35669" ], - "name" : "Divide_37938", - "op" : "Divide", - "outputs" : ["Divide_37938_0"] - }, - { - "inputs" : [ "Divide_37936", "Parameter_35662" ], - "name" : "Multiply_37939", - "op" : "Multiply", - "outputs" : ["Multiply_37939_0"] - }, - { - "inputs" : [ "Divide_37938", "Parameter_35670" ], - "name" : "Multiply_37940", - "op" : "Multiply", - "outputs" : ["Multiply_37940_0"] - }, - { - "inputs" : ["Multiply_37939"], - "name" : "Negative_37941", - "op" : "Negative", - "outputs" : ["Negative_37941_0"] - }, - { - "inputs" : ["Multiply_37940"], - "name" : "Negative_37942", - "op" : "Negative", - "outputs" : ["Negative_37942_0"] - }, - { - "inputs" : [ "Slice_37937", "Negative_37941" ], - "name" : "Add_37943", - "op" : "Add", - "outputs" : ["Add_37943_0"] - }, - { - "inputs" : [ "ReplaceSlice_37933", "Add_37943" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37944", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37944_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37944"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37945", - "op" : "Slice", - "outputs" : ["Slice_37945_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37945", "Negative_37942" ], - "name" : "Add_37946", - "op" : "Add", - "outputs" : ["Add_37946_0"] - }, - { - "inputs" : [ "ReplaceSlice_37944", "Add_37946" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_37947", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37947_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_37947"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_37948", - "op" : "Slice", - "outputs" : ["Slice_37948_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_37948", "Negative_37935" ], - "name" : "Add_37949", - "op" : "Add", - "outputs" : ["Add_37949_0"] - }, - { - "inputs" : [ "ReplaceSlice_37947", "Add_37949" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_37950", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37950_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_37950", "Reshape_36387" ], - "name" : "Dot_37952", - "op" : "Dot", - "outputs" : ["Dot_37952_0"] - }, - { - "inputs" : [ "ReplaceSlice_37950", "Reshape_36462" ], - "name" : "Dot_37955", - "op" : "Dot", - "outputs" : ["Dot_37955_0"] - }, - { - "inputs" : [ "Reshape_36590", "ReplaceSlice_37950" ], - "name" : "Dot_37954", - "op" : "Dot", - "outputs" : ["Dot_37954_0"] - }, - { - "inputs" : ["ReplaceSlice_37950"], - "name" : "Sum_37951", - "op" : "Sum", - "outputs" : ["Sum_37951_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36874", "ReplaceSlice_37950" ], - "name" : "Dot_37953", - "op" : "Dot", - "outputs" : ["Dot_37953_0"] - }, - { - "inputs" : ["ReplaceSlice_37950"], - "name" : "Sum_37956", - "op" : "Sum", - "outputs" : ["Sum_37956_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Dot_37952", "Reshape_36646" ], - "name" : "Add_37958", - "op" : "Add", - "outputs" : ["Add_37958_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37955"], - "name" : "Reshape_37961", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_37961_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37954"], - "name" : "Reshape_37960", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37960_0"] - }, - { - "inputs" : [ "Add_37907", "Sum_37951" ], - "name" : "Add_37957", - "op" : "Add", - "outputs" : ["Add_37957_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_37953"], - "name" : "Reshape_37959", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_37959_0"] - }, - { - "inputs" : [ "Add_37906", "Sum_37956" ], - "name" : "Add_37962", - "op" : "Add", - "outputs" : ["Add_37962_0"] - }, - { - "inputs" : [ "Parameter_35647", "Add_37958" ], - "name" : "Multiply_37963", - "op" : "Multiply", - "outputs" : ["Multiply_37963_0"] - }, - { - "inputs" : [ "Add_37958", "Parameter_34052" ], - "name" : "Multiply_37964", - "op" : "Multiply", - "outputs" : ["Multiply_37964_0"] - }, - { - "inputs" : [ "Slice_37920", "Reshape_37961" ], - "name" : "Add_37967", - "op" : "Add", - "outputs" : ["Add_37967_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37960"], - "name" : "Reshape_37966", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37966_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_37959"], - "name" : "Reshape_37965", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_37965_0"] - }, - { - "inputs" : [ "Multiply_37963", "Multiply_36873" ], - "name" : "Divide_37968", - "op" : "Divide", - "outputs" : ["Divide_37968_0"] - }, - { - "inputs" : ["Multiply_37964"], - "name" : "Negative_37969", - "op" : "Negative", - "outputs" : ["Negative_37969_0"] - }, - { - "inputs" : [ "ReplaceSlice_37915", "Add_37967" ], - "lower_bounds" : [ 41, 0, 0 ], - "name" : "ReplaceSlice_37972", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37972_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 42, 64, 256 ] - }, - { - "inputs" : [ "Add_37917", "Reshape_37966" ], - "name" : "Add_37971", - "op" : "Add", - "outputs" : ["Add_37971_0"] - }, - { - "inputs" : [ "Add_37916", "Reshape_37965" ], - "name" : "Add_37970", - "op" : "Add", - "outputs" : ["Add_37970_0"] - }, - { - "inputs" : [ "Multiply_37923", "Divide_37968" ], - "name" : "Add_37973", - "op" : "Add", - "outputs" : ["Add_37973_0"] - }, - { - "inputs" : [ "Negative_37969", "Parameter_35647" ], - "name" : "Multiply_37974", - "op" : "Multiply", - "outputs" : ["Multiply_37974_0"] - }, - { - "inputs" : ["ReplaceSlice_37972"], - "lower_bounds" : [ 40, 0, 0 ], - "name" : "Slice_37975", - "op" : "Slice", - "outputs" : ["Slice_37975_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 41, 64, 256 ] - }, - { - "inputs" : [ "Add_37973", "Parameter_34055" ], - "name" : "Multiply_37978", - "op" : "Multiply", - "outputs" : ["Multiply_37978_0"] - }, - { - "inputs" : [ "Add_37973", "Parameter_34064" ], - "name" : "Multiply_37979", - "op" : "Multiply", - "outputs" : ["Multiply_37979_0"] - }, - { - "inputs" : [ "Parameter_35632", "Add_37973" ], - "name" : "Multiply_37976", - "op" : "Multiply", - "outputs" : ["Multiply_37976_0"] - }, - { - "inputs" : [ "Parameter_35640", "Add_37973" ], - "name" : "Multiply_37977", - "op" : "Multiply", - "outputs" : ["Multiply_37977_0"] - }, - { - "inputs" : [ "Multiply_37974", "Parameter_35648" ], - "name" : "Divide_37980", - "op" : "Divide", - "outputs" : ["Divide_37980_0"] - }, - { - "inputs" : ["Multiply_37978"], - "name" : "Negative_37982", - "op" : "Negative", - "outputs" : ["Negative_37982_0"] - }, - { - "inputs" : ["Multiply_37979"], - "name" : "Negative_37983", - "op" : "Negative", - "outputs" : ["Negative_37983_0"] - }, - { - "inputs" : [ "Multiply_37976", "Multiply_36871" ], - "name" : "Divide_37981", - "op" : "Divide", - "outputs" : ["Divide_37981_0"] - }, - { - "inputs" : [ "Divide_37980", "Parameter_35649" ], - "name" : "Multiply_37984", - "op" : "Multiply", - "outputs" : ["Multiply_37984_0"] - }, - { - "inputs" : [ "Negative_37982", "Parameter_35632" ], - "name" : "Multiply_37986", - "op" : "Multiply", - "outputs" : ["Multiply_37986_0"] - }, - { - "inputs" : [ "Negative_37983", "Parameter_35640" ], - "name" : "Multiply_37987", - "op" : "Multiply", - "outputs" : ["Multiply_37987_0"] - }, - { - "inputs" : [ "Broadcast_36328", "Divide_37981" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_37985", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37985_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_37984"], - "name" : "Negative_37988", - "op" : "Negative", - "outputs" : ["Negative_37988_0"] - }, - { - "inputs" : [ "Multiply_37986", "Parameter_35633" ], - "name" : "Divide_37990", - "op" : "Divide", - "outputs" : ["Divide_37990_0"] - }, - { - "inputs" : [ "Multiply_37987", "Parameter_35641" ], - "name" : "Divide_37991", - "op" : "Divide", - "outputs" : ["Divide_37991_0"] - }, - { - "inputs" : ["ReplaceSlice_37985"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_37989", - "op" : "Slice", - "outputs" : ["Slice_37989_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_37990", "Parameter_35634" ], - "name" : "Multiply_37992", - "op" : "Multiply", - "outputs" : ["Multiply_37992_0"] - }, - { - "inputs" : [ "Divide_37991", "Parameter_35642" ], - "name" : "Multiply_37993", - "op" : "Multiply", - "outputs" : ["Multiply_37993_0"] - }, - { - "inputs" : ["Multiply_37992"], - "name" : "Negative_37994", - "op" : "Negative", - "outputs" : ["Negative_37994_0"] - }, - { - "inputs" : ["Multiply_37993"], - "name" : "Negative_37995", - "op" : "Negative", - "outputs" : ["Negative_37995_0"] - }, - { - "inputs" : [ "Slice_37989", "Negative_37994" ], - "name" : "Add_37996", - "op" : "Add", - "outputs" : ["Add_37996_0"] - }, - { - "inputs" : [ "ReplaceSlice_37985", "Add_37996" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_37997", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_37997_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_37997"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_37998", - "op" : "Slice", - "outputs" : ["Slice_37998_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_37998", "Negative_37995" ], - "name" : "Add_37999", - "op" : "Add", - "outputs" : ["Add_37999_0"] - }, - { - "inputs" : [ "ReplaceSlice_37997", "Add_37999" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38000", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38000_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38000"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38001", - "op" : "Slice", - "outputs" : ["Slice_38001_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38001", "Negative_37988" ], - "name" : "Add_38002", - "op" : "Add", - "outputs" : ["Add_38002_0"] - }, - { - "inputs" : [ "ReplaceSlice_38000", "Add_38002" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38003", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38003_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_38003", "Reshape_36428" ], - "name" : "Dot_38007", - "op" : "Dot", - "outputs" : ["Dot_38007_0"] - }, - { - "inputs" : [ "Reshape_36869", "ReplaceSlice_38003" ], - "name" : "Dot_38006", - "op" : "Dot", - "outputs" : ["Dot_38006_0"] - }, - { - "inputs" : [ "Reshape_36589", "ReplaceSlice_38003" ], - "name" : "Dot_38005", - "op" : "Dot", - "outputs" : ["Dot_38005_0"] - }, - { - "inputs" : ["ReplaceSlice_38003"], - "name" : "Sum_38008", - "op" : "Sum", - "outputs" : ["Sum_38008_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_38003"], - "name" : "Sum_38009", - "op" : "Sum", - "outputs" : ["Sum_38009_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38003", "Reshape_36459" ], - "name" : "Dot_38004", - "op" : "Dot", - "outputs" : ["Dot_38004_0"] - }, - { - "inputs" : [ "Dot_38007", "Reshape_36645" ], - "name" : "Add_38013", - "op" : "Add", - "outputs" : ["Add_38013_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38006"], - "name" : "Reshape_38012", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38012_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38005"], - "name" : "Reshape_38011", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38011_0"] - }, - { - "inputs" : [ "Add_37957", "Sum_38008" ], - "name" : "Add_38014", - "op" : "Add", - "outputs" : ["Add_38014_0"] - }, - { - "inputs" : [ "Add_37962", "Sum_38009" ], - "name" : "Add_38015", - "op" : "Add", - "outputs" : ["Add_38015_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38004"], - "name" : "Reshape_38010", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38010_0"] - }, - { - "inputs" : [ "Add_38013", "Parameter_34063" ], - "name" : "Multiply_38020", - "op" : "Multiply", - "outputs" : ["Multiply_38020_0"] - }, - { - "inputs" : [ "Parameter_35619", "Add_38013" ], - "name" : "Multiply_38019", - "op" : "Multiply", - "outputs" : ["Multiply_38019_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38012"], - "name" : "Reshape_38018", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38018_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38011"], - "name" : "Reshape_38017", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38017_0"] - }, - { - "inputs" : [ "Slice_37975", "Reshape_38010" ], - "name" : "Add_38016", - "op" : "Add", - "outputs" : ["Add_38016_0"] - }, - { - "inputs" : ["Multiply_38020"], - "name" : "Negative_38025", - "op" : "Negative", - "outputs" : ["Negative_38025_0"] - }, - { - "inputs" : [ "Multiply_38019", "Multiply_36868" ], - "name" : "Divide_38024", - "op" : "Divide", - "outputs" : ["Divide_38024_0"] - }, - { - "inputs" : [ "Add_37970", "Reshape_38018" ], - "name" : "Add_38023", - "op" : "Add", - "outputs" : ["Add_38023_0"] - }, - { - "inputs" : [ "Add_37971", "Reshape_38017" ], - "name" : "Add_38022", - "op" : "Add", - "outputs" : ["Add_38022_0"] - }, - { - "inputs" : [ "ReplaceSlice_37972", "Add_38016" ], - "lower_bounds" : [ 40, 0, 0 ], - "name" : "ReplaceSlice_38021", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38021_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 41, 64, 256 ] - }, - { - "inputs" : [ "Negative_38025", "Parameter_35619" ], - "name" : "Multiply_38028", - "op" : "Multiply", - "outputs" : ["Multiply_38028_0"] - }, - { - "inputs" : [ "Multiply_37977", "Divide_38024" ], - "name" : "Add_38027", - "op" : "Add", - "outputs" : ["Add_38027_0"] - }, - { - "inputs" : ["ReplaceSlice_38021"], - "lower_bounds" : [ 39, 0, 0 ], - "name" : "Slice_38026", - "op" : "Slice", - "outputs" : ["Slice_38026_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 40, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38028", "Parameter_35620" ], - "name" : "Divide_38033", - "op" : "Divide", - "outputs" : ["Divide_38033_0"] - }, - { - "inputs" : [ "Add_38027", "Parameter_34066" ], - "name" : "Multiply_38032", - "op" : "Multiply", - "outputs" : ["Multiply_38032_0"] - }, - { - "inputs" : [ "Add_38027", "Parameter_34075" ], - "name" : "Multiply_38031", - "op" : "Multiply", - "outputs" : ["Multiply_38031_0"] - }, - { - "inputs" : [ "Parameter_35612", "Add_38027" ], - "name" : "Multiply_38030", - "op" : "Multiply", - "outputs" : ["Multiply_38030_0"] - }, - { - "inputs" : [ "Parameter_35604", "Add_38027" ], - "name" : "Multiply_38029", - "op" : "Multiply", - "outputs" : ["Multiply_38029_0"] - }, - { - "inputs" : [ "Divide_38033", "Parameter_35621" ], - "name" : "Multiply_38037", - "op" : "Multiply", - "outputs" : ["Multiply_38037_0"] - }, - { - "inputs" : ["Multiply_38032"], - "name" : "Negative_38036", - "op" : "Negative", - "outputs" : ["Negative_38036_0"] - }, - { - "inputs" : ["Multiply_38031"], - "name" : "Negative_38035", - "op" : "Negative", - "outputs" : ["Negative_38035_0"] - }, - { - "inputs" : [ "Multiply_38029", "Multiply_36866" ], - "name" : "Divide_38034", - "op" : "Divide", - "outputs" : ["Divide_38034_0"] - }, - { - "inputs" : ["Multiply_38037"], - "name" : "Negative_38041", - "op" : "Negative", - "outputs" : ["Negative_38041_0"] - }, - { - "inputs" : [ "Negative_38036", "Parameter_35604" ], - "name" : "Multiply_38040", - "op" : "Multiply", - "outputs" : ["Multiply_38040_0"] - }, - { - "inputs" : [ "Negative_38035", "Parameter_35612" ], - "name" : "Multiply_38039", - "op" : "Multiply", - "outputs" : ["Multiply_38039_0"] - }, - { - "inputs" : [ "Broadcast_36329", "Divide_38034" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38038", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38038_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_38040", "Parameter_35605" ], - "name" : "Divide_38044", - "op" : "Divide", - "outputs" : ["Divide_38044_0"] - }, - { - "inputs" : [ "Multiply_38039", "Parameter_35613" ], - "name" : "Divide_38043", - "op" : "Divide", - "outputs" : ["Divide_38043_0"] - }, - { - "inputs" : ["ReplaceSlice_38038"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38042", - "op" : "Slice", - "outputs" : ["Slice_38042_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38044", "Parameter_35606" ], - "name" : "Multiply_38046", - "op" : "Multiply", - "outputs" : ["Multiply_38046_0"] - }, - { - "inputs" : [ "Divide_38043", "Parameter_35614" ], - "name" : "Multiply_38045", - "op" : "Multiply", - "outputs" : ["Multiply_38045_0"] - }, - { - "inputs" : ["Multiply_38046"], - "name" : "Negative_38048", - "op" : "Negative", - "outputs" : ["Negative_38048_0"] - }, - { - "inputs" : ["Multiply_38045"], - "name" : "Negative_38047", - "op" : "Negative", - "outputs" : ["Negative_38047_0"] - }, - { - "inputs" : [ "Slice_38042", "Negative_38048" ], - "name" : "Add_38049", - "op" : "Add", - "outputs" : ["Add_38049_0"] - }, - { - "inputs" : [ "ReplaceSlice_38038", "Add_38049" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38050", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38050_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38050"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38051", - "op" : "Slice", - "outputs" : ["Slice_38051_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38051", "Negative_38047" ], - "name" : "Add_38052", - "op" : "Add", - "outputs" : ["Add_38052_0"] - }, - { - "inputs" : [ "ReplaceSlice_38050", "Add_38052" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38053", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38053_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38053"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38054", - "op" : "Slice", - "outputs" : ["Slice_38054_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38054", "Negative_38041" ], - "name" : "Add_38055", - "op" : "Add", - "outputs" : ["Add_38055_0"] - }, - { - "inputs" : [ "ReplaceSlice_38053", "Add_38055" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38056", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38056_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36864", "ReplaceSlice_38056" ], - "name" : "Dot_38062", - "op" : "Dot", - "outputs" : ["Dot_38062_0"] - }, - { - "inputs" : [ "Reshape_36588", "ReplaceSlice_38056" ], - "name" : "Dot_38057", - "op" : "Dot", - "outputs" : ["Dot_38057_0"] - }, - { - "inputs" : ["ReplaceSlice_38056"], - "name" : "Sum_38059", - "op" : "Sum", - "outputs" : ["Sum_38059_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38056", "Reshape_36375" ], - "name" : "Dot_38058", - "op" : "Dot", - "outputs" : ["Dot_38058_0"] - }, - { - "inputs" : ["ReplaceSlice_38056"], - "name" : "Sum_38060", - "op" : "Sum", - "outputs" : ["Sum_38060_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38056", "Reshape_36482" ], - "name" : "Dot_38061", - "op" : "Dot", - "outputs" : ["Dot_38061_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38062"], - "name" : "Reshape_38068", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38068_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38057"], - "name" : "Reshape_38063", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38063_0"] - }, - { - "inputs" : [ "Add_38015", "Sum_38059" ], - "name" : "Add_38065", - "op" : "Add", - "outputs" : ["Add_38065_0"] - }, - { - "inputs" : [ "Dot_38058", "Reshape_36644" ], - "name" : "Add_38064", - "op" : "Add", - "outputs" : ["Add_38064_0"] - }, - { - "inputs" : [ "Add_38014", "Sum_38060" ], - "name" : "Add_38066", - "op" : "Add", - "outputs" : ["Add_38066_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38061"], - "name" : "Reshape_38067", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38067_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38068"], - "name" : "Reshape_38073", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38073_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38063"], - "name" : "Reshape_38069", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38069_0"] - }, - { - "inputs" : [ "Parameter_35591", "Add_38064" ], - "name" : "Multiply_38070", - "op" : "Multiply", - "outputs" : ["Multiply_38070_0"] - }, - { - "inputs" : [ "Add_38064", "Parameter_34074" ], - "name" : "Multiply_38071", - "op" : "Multiply", - "outputs" : ["Multiply_38071_0"] - }, - { - "inputs" : [ "Slice_38026", "Reshape_38067" ], - "name" : "Add_38072", - "op" : "Add", - "outputs" : ["Add_38072_0"] - }, - { - "inputs" : [ "Add_38023", "Reshape_38073" ], - "name" : "Add_38078", - "op" : "Add", - "outputs" : ["Add_38078_0"] - }, - { - "inputs" : [ "Add_38022", "Reshape_38069" ], - "name" : "Add_38074", - "op" : "Add", - "outputs" : ["Add_38074_0"] - }, - { - "inputs" : [ "Multiply_38070", "Multiply_36863" ], - "name" : "Divide_38075", - "op" : "Divide", - "outputs" : ["Divide_38075_0"] - }, - { - "inputs" : ["Multiply_38071"], - "name" : "Negative_38076", - "op" : "Negative", - "outputs" : ["Negative_38076_0"] - }, - { - "inputs" : [ "ReplaceSlice_38021", "Add_38072" ], - "lower_bounds" : [ 39, 0, 0 ], - "name" : "ReplaceSlice_38077", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38077_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 40, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38030", "Divide_38075" ], - "name" : "Add_38079", - "op" : "Add", - "outputs" : ["Add_38079_0"] - }, - { - "inputs" : [ "Negative_38076", "Parameter_35591" ], - "name" : "Multiply_38080", - "op" : "Multiply", - "outputs" : ["Multiply_38080_0"] - }, - { - "inputs" : ["ReplaceSlice_38077"], - "lower_bounds" : [ 38, 0, 0 ], - "name" : "Slice_38081", - "op" : "Slice", - "outputs" : ["Slice_38081_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 39, 64, 256 ] - }, - { - "inputs" : [ "Add_38079", "Parameter_34086" ], - "name" : "Multiply_38085", - "op" : "Multiply", - "outputs" : ["Multiply_38085_0"] - }, - { - "inputs" : [ "Add_38079", "Parameter_34077" ], - "name" : "Multiply_38084", - "op" : "Multiply", - "outputs" : ["Multiply_38084_0"] - }, - { - "inputs" : [ "Parameter_35584", "Add_38079" ], - "name" : "Multiply_38083", - "op" : "Multiply", - "outputs" : ["Multiply_38083_0"] - }, - { - "inputs" : [ "Parameter_35576", "Add_38079" ], - "name" : "Multiply_38082", - "op" : "Multiply", - "outputs" : ["Multiply_38082_0"] - }, - { - "inputs" : [ "Multiply_38080", "Parameter_35592" ], - "name" : "Divide_38086", - "op" : "Divide", - "outputs" : ["Divide_38086_0"] - }, - { - "inputs" : ["Multiply_38085"], - "name" : "Negative_38089", - "op" : "Negative", - "outputs" : ["Negative_38089_0"] - }, - { - "inputs" : ["Multiply_38084"], - "name" : "Negative_38088", - "op" : "Negative", - "outputs" : ["Negative_38088_0"] - }, - { - "inputs" : [ "Multiply_38082", "Multiply_36861" ], - "name" : "Divide_38087", - "op" : "Divide", - "outputs" : ["Divide_38087_0"] - }, - { - "inputs" : [ "Divide_38086", "Parameter_35593" ], - "name" : "Multiply_38090", - "op" : "Multiply", - "outputs" : ["Multiply_38090_0"] - }, - { - "inputs" : [ "Negative_38089", "Parameter_35584" ], - "name" : "Multiply_38093", - "op" : "Multiply", - "outputs" : ["Multiply_38093_0"] - }, - { - "inputs" : [ "Negative_38088", "Parameter_35576" ], - "name" : "Multiply_38092", - "op" : "Multiply", - "outputs" : ["Multiply_38092_0"] - }, - { - "inputs" : [ "Broadcast_36330", "Divide_38087" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38091", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38091_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_38090"], - "name" : "Negative_38094", - "op" : "Negative", - "outputs" : ["Negative_38094_0"] - }, - { - "inputs" : [ "Multiply_38093", "Parameter_35585" ], - "name" : "Divide_38097", - "op" : "Divide", - "outputs" : ["Divide_38097_0"] - }, - { - "inputs" : [ "Multiply_38092", "Parameter_35577" ], - "name" : "Divide_38096", - "op" : "Divide", - "outputs" : ["Divide_38096_0"] - }, - { - "inputs" : ["ReplaceSlice_38091"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38095", - "op" : "Slice", - "outputs" : ["Slice_38095_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38097", "Parameter_35586" ], - "name" : "Multiply_38099", - "op" : "Multiply", - "outputs" : ["Multiply_38099_0"] - }, - { - "inputs" : [ "Divide_38096", "Parameter_35578" ], - "name" : "Multiply_38098", - "op" : "Multiply", - "outputs" : ["Multiply_38098_0"] - }, - { - "inputs" : ["Multiply_38099"], - "name" : "Negative_38101", - "op" : "Negative", - "outputs" : ["Negative_38101_0"] - }, - { - "inputs" : ["Multiply_38098"], - "name" : "Negative_38100", - "op" : "Negative", - "outputs" : ["Negative_38100_0"] - }, - { - "inputs" : [ "Slice_38095", "Negative_38100" ], - "name" : "Add_38102", - "op" : "Add", - "outputs" : ["Add_38102_0"] - }, - { - "inputs" : [ "ReplaceSlice_38091", "Add_38102" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38103", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38103_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38103"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38104", - "op" : "Slice", - "outputs" : ["Slice_38104_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38104", "Negative_38101" ], - "name" : "Add_38105", - "op" : "Add", - "outputs" : ["Add_38105_0"] - }, - { - "inputs" : [ "ReplaceSlice_38103", "Add_38105" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38106", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38106_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38106"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38107", - "op" : "Slice", - "outputs" : ["Slice_38107_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38107", "Negative_38094" ], - "name" : "Add_38108", - "op" : "Add", - "outputs" : ["Add_38108_0"] - }, - { - "inputs" : [ "ReplaceSlice_38106", "Add_38108" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38109", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38109_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36587", "ReplaceSlice_38109" ], - "name" : "Dot_38111", - "op" : "Dot", - "outputs" : ["Dot_38111_0"] - }, - { - "inputs" : [ "ReplaceSlice_38109", "Reshape_36458" ], - "name" : "Dot_38113", - "op" : "Dot", - "outputs" : ["Dot_38113_0"] - }, - { - "inputs" : ["ReplaceSlice_38109"], - "name" : "Sum_38112", - "op" : "Sum", - "outputs" : ["Sum_38112_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_38109"], - "name" : "Sum_38110", - "op" : "Sum", - "outputs" : ["Sum_38110_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38109", "Reshape_36383" ], - "name" : "Dot_38114", - "op" : "Dot", - "outputs" : ["Dot_38114_0"] - }, - { - "inputs" : [ "Reshape_36859", "ReplaceSlice_38109" ], - "name" : "Dot_38115", - "op" : "Dot", - "outputs" : ["Dot_38115_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38111"], - "name" : "Reshape_38117", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38117_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38113"], - "name" : "Reshape_38119", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38119_0"] - }, - { - "inputs" : [ "Add_38066", "Sum_38112" ], - "name" : "Add_38118", - "op" : "Add", - "outputs" : ["Add_38118_0"] - }, - { - "inputs" : [ "Add_38065", "Sum_38110" ], - "name" : "Add_38116", - "op" : "Add", - "outputs" : ["Add_38116_0"] - }, - { - "inputs" : [ "Dot_38114", "Reshape_36643" ], - "name" : "Add_38120", - "op" : "Add", - "outputs" : ["Add_38120_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38115"], - "name" : "Reshape_38121", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38121_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38117"], - "name" : "Reshape_38122", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38122_0"] - }, - { - "inputs" : [ "Slice_38081", "Reshape_38119" ], - "name" : "Add_38123", - "op" : "Add", - "outputs" : ["Add_38123_0"] - }, - { - "inputs" : [ "Parameter_35563", "Add_38120" ], - "name" : "Multiply_38125", - "op" : "Multiply", - "outputs" : ["Multiply_38125_0"] - }, - { - "inputs" : [ "Add_38120", "Parameter_34085" ], - "name" : "Multiply_38124", - "op" : "Multiply", - "outputs" : ["Multiply_38124_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38121"], - "name" : "Reshape_38126", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38126_0"] - }, - { - "inputs" : [ "Add_38074", "Reshape_38122" ], - "name" : "Add_38127", - "op" : "Add", - "outputs" : ["Add_38127_0"] - }, - { - "inputs" : [ "ReplaceSlice_38077", "Add_38123" ], - "lower_bounds" : [ 38, 0, 0 ], - "name" : "ReplaceSlice_38128", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38128_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 39, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38125", "Multiply_36858" ], - "name" : "Divide_38130", - "op" : "Divide", - "outputs" : ["Divide_38130_0"] - }, - { - "inputs" : ["Multiply_38124"], - "name" : "Negative_38129", - "op" : "Negative", - "outputs" : ["Negative_38129_0"] - }, - { - "inputs" : [ "Add_38078", "Reshape_38126" ], - "name" : "Add_38131", - "op" : "Add", - "outputs" : ["Add_38131_0"] - }, - { - "inputs" : ["ReplaceSlice_38128"], - "lower_bounds" : [ 37, 0, 0 ], - "name" : "Slice_38132", - "op" : "Slice", - "outputs" : ["Slice_38132_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 38, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38083", "Divide_38130" ], - "name" : "Add_38134", - "op" : "Add", - "outputs" : ["Add_38134_0"] - }, - { - "inputs" : [ "Negative_38129", "Parameter_35563" ], - "name" : "Multiply_38133", - "op" : "Multiply", - "outputs" : ["Multiply_38133_0"] - }, - { - "inputs" : [ "Add_38134", "Parameter_34097" ], - "name" : "Multiply_38139", - "op" : "Multiply", - "outputs" : ["Multiply_38139_0"] - }, - { - "inputs" : [ "Add_38134", "Parameter_34088" ], - "name" : "Multiply_38136", - "op" : "Multiply", - "outputs" : ["Multiply_38136_0"] - }, - { - "inputs" : [ "Parameter_35556", "Add_38134" ], - "name" : "Multiply_38137", - "op" : "Multiply", - "outputs" : ["Multiply_38137_0"] - }, - { - "inputs" : [ "Parameter_35548", "Add_38134" ], - "name" : "Multiply_38138", - "op" : "Multiply", - "outputs" : ["Multiply_38138_0"] - }, - { - "inputs" : [ "Multiply_38133", "Parameter_35564" ], - "name" : "Divide_38135", - "op" : "Divide", - "outputs" : ["Divide_38135_0"] - }, - { - "inputs" : ["Multiply_38139"], - "name" : "Negative_38143", - "op" : "Negative", - "outputs" : ["Negative_38143_0"] - }, - { - "inputs" : ["Multiply_38136"], - "name" : "Negative_38141", - "op" : "Negative", - "outputs" : ["Negative_38141_0"] - }, - { - "inputs" : [ "Multiply_38138", "Multiply_36856" ], - "name" : "Divide_38142", - "op" : "Divide", - "outputs" : ["Divide_38142_0"] - }, - { - "inputs" : [ "Divide_38135", "Parameter_35565" ], - "name" : "Multiply_38140", - "op" : "Multiply", - "outputs" : ["Multiply_38140_0"] - }, - { - "inputs" : [ "Negative_38143", "Parameter_35556" ], - "name" : "Multiply_38147", - "op" : "Multiply", - "outputs" : ["Multiply_38147_0"] - }, - { - "inputs" : [ "Negative_38141", "Parameter_35548" ], - "name" : "Multiply_38145", - "op" : "Multiply", - "outputs" : ["Multiply_38145_0"] - }, - { - "inputs" : [ "Broadcast_36331", "Divide_38142" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38146", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38146_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_38140"], - "name" : "Negative_38144", - "op" : "Negative", - "outputs" : ["Negative_38144_0"] - }, - { - "inputs" : [ "Multiply_38147", "Parameter_35557" ], - "name" : "Divide_38150", - "op" : "Divide", - "outputs" : ["Divide_38150_0"] - }, - { - "inputs" : [ "Multiply_38145", "Parameter_35549" ], - "name" : "Divide_38148", - "op" : "Divide", - "outputs" : ["Divide_38148_0"] - }, - { - "inputs" : ["ReplaceSlice_38146"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38149", - "op" : "Slice", - "outputs" : ["Slice_38149_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38150", "Parameter_35558" ], - "name" : "Multiply_38152", - "op" : "Multiply", - "outputs" : ["Multiply_38152_0"] - }, - { - "inputs" : [ "Divide_38148", "Parameter_35550" ], - "name" : "Multiply_38151", - "op" : "Multiply", - "outputs" : ["Multiply_38151_0"] - }, - { - "inputs" : ["Multiply_38152"], - "name" : "Negative_38154", - "op" : "Negative", - "outputs" : ["Negative_38154_0"] - }, - { - "inputs" : ["Multiply_38151"], - "name" : "Negative_38153", - "op" : "Negative", - "outputs" : ["Negative_38153_0"] - }, - { - "inputs" : [ "Slice_38149", "Negative_38153" ], - "name" : "Add_38155", - "op" : "Add", - "outputs" : ["Add_38155_0"] - }, - { - "inputs" : [ "ReplaceSlice_38146", "Add_38155" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38156", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38156_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38156"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38157", - "op" : "Slice", - "outputs" : ["Slice_38157_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38157", "Negative_38154" ], - "name" : "Add_38158", - "op" : "Add", - "outputs" : ["Add_38158_0"] - }, - { - "inputs" : [ "ReplaceSlice_38156", "Add_38158" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38159", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38159_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38159"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38160", - "op" : "Slice", - "outputs" : ["Slice_38160_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38160", "Negative_38144" ], - "name" : "Add_38161", - "op" : "Add", - "outputs" : ["Add_38161_0"] - }, - { - "inputs" : [ "ReplaceSlice_38159", "Add_38161" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38162", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38162_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36854", "ReplaceSlice_38162" ], - "name" : "Dot_38163", - "op" : "Dot", - "outputs" : ["Dot_38163_0"] - }, - { - "inputs" : [ "Reshape_36585", "ReplaceSlice_38162" ], - "name" : "Dot_38164", - "op" : "Dot", - "outputs" : ["Dot_38164_0"] - }, - { - "inputs" : ["ReplaceSlice_38162"], - "name" : "Sum_38165", - "op" : "Sum", - "outputs" : ["Sum_38165_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_38162"], - "name" : "Sum_38166", - "op" : "Sum", - "outputs" : ["Sum_38166_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38162", "Reshape_36446" ], - "name" : "Dot_38167", - "op" : "Dot", - "outputs" : ["Dot_38167_0"] - }, - { - "inputs" : [ "ReplaceSlice_38162", "Reshape_36407" ], - "name" : "Dot_38168", - "op" : "Dot", - "outputs" : ["Dot_38168_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38163"], - "name" : "Reshape_38169", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38169_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38164"], - "name" : "Reshape_38170", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38170_0"] - }, - { - "inputs" : [ "Add_38116", "Sum_38165" ], - "name" : "Add_38171", - "op" : "Add", - "outputs" : ["Add_38171_0"] - }, - { - "inputs" : [ "Add_38118", "Sum_38166" ], - "name" : "Add_38172", - "op" : "Add", - "outputs" : ["Add_38172_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38167"], - "name" : "Reshape_38173", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38173_0"] - }, - { - "inputs" : [ "Dot_38168", "Reshape_36642" ], - "name" : "Add_38174", - "op" : "Add", - "outputs" : ["Add_38174_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38169"], - "name" : "Reshape_38175", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38175_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38170"], - "name" : "Reshape_38176", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38176_0"] - }, - { - "inputs" : [ "Slice_38132", "Reshape_38173" ], - "name" : "Add_38177", - "op" : "Add", - "outputs" : ["Add_38177_0"] - }, - { - "inputs" : [ "Add_38174", "Parameter_34096" ], - "name" : "Multiply_38179", - "op" : "Multiply", - "outputs" : ["Multiply_38179_0"] - }, - { - "inputs" : [ "Parameter_35535", "Add_38174" ], - "name" : "Multiply_38178", - "op" : "Multiply", - "outputs" : ["Multiply_38178_0"] - }, - { - "inputs" : [ "Add_38131", "Reshape_38175" ], - "name" : "Add_38180", - "op" : "Add", - "outputs" : ["Add_38180_0"] - }, - { - "inputs" : [ "Add_38127", "Reshape_38176" ], - "name" : "Add_38181", - "op" : "Add", - "outputs" : ["Add_38181_0"] - }, - { - "inputs" : [ "ReplaceSlice_38128", "Add_38177" ], - "lower_bounds" : [ 37, 0, 0 ], - "name" : "ReplaceSlice_38182", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38182_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 38, 64, 256 ] - }, - { - "inputs" : ["Multiply_38179"], - "name" : "Negative_38184", - "op" : "Negative", - "outputs" : ["Negative_38184_0"] - }, - { - "inputs" : [ "Multiply_38178", "Multiply_36853" ], - "name" : "Divide_38183", - "op" : "Divide", - "outputs" : ["Divide_38183_0"] - }, - { - "inputs" : ["ReplaceSlice_38182"], - "lower_bounds" : [ 36, 0, 0 ], - "name" : "Slice_38185", - "op" : "Slice", - "outputs" : ["Slice_38185_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 37, 64, 256 ] - }, - { - "inputs" : [ "Negative_38184", "Parameter_35535" ], - "name" : "Multiply_38187", - "op" : "Multiply", - "outputs" : ["Multiply_38187_0"] - }, - { - "inputs" : [ "Multiply_38137", "Divide_38183" ], - "name" : "Add_38186", - "op" : "Add", - "outputs" : ["Add_38186_0"] - }, - { - "inputs" : [ "Multiply_38187", "Parameter_35536" ], - "name" : "Divide_38192", - "op" : "Divide", - "outputs" : ["Divide_38192_0"] - }, - { - "inputs" : [ "Add_38186", "Parameter_34108" ], - "name" : "Multiply_38190", - "op" : "Multiply", - "outputs" : ["Multiply_38190_0"] - }, - { - "inputs" : [ "Parameter_35528", "Add_38186" ], - "name" : "Multiply_38189", - "op" : "Multiply", - "outputs" : ["Multiply_38189_0"] - }, - { - "inputs" : [ "Add_38186", "Parameter_34099" ], - "name" : "Multiply_38188", - "op" : "Multiply", - "outputs" : ["Multiply_38188_0"] - }, - { - "inputs" : [ "Parameter_35520", "Add_38186" ], - "name" : "Multiply_38191", - "op" : "Multiply", - "outputs" : ["Multiply_38191_0"] - }, - { - "inputs" : [ "Divide_38192", "Parameter_35537" ], - "name" : "Multiply_38196", - "op" : "Multiply", - "outputs" : ["Multiply_38196_0"] - }, - { - "inputs" : ["Multiply_38190"], - "name" : "Negative_38194", - "op" : "Negative", - "outputs" : ["Negative_38194_0"] - }, - { - "inputs" : ["Multiply_38188"], - "name" : "Negative_38193", - "op" : "Negative", - "outputs" : ["Negative_38193_0"] - }, - { - "inputs" : [ "Multiply_38191", "Multiply_36851" ], - "name" : "Divide_38195", - "op" : "Divide", - "outputs" : ["Divide_38195_0"] - }, - { - "inputs" : ["Multiply_38196"], - "name" : "Negative_38200", - "op" : "Negative", - "outputs" : ["Negative_38200_0"] - }, - { - "inputs" : [ "Negative_38194", "Parameter_35528" ], - "name" : "Multiply_38198", - "op" : "Multiply", - "outputs" : ["Multiply_38198_0"] - }, - { - "inputs" : [ "Negative_38193", "Parameter_35520" ], - "name" : "Multiply_38197", - "op" : "Multiply", - "outputs" : ["Multiply_38197_0"] - }, - { - "inputs" : [ "Broadcast_36332", "Divide_38195" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38199", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38199_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_38198", "Parameter_35529" ], - "name" : "Divide_38202", - "op" : "Divide", - "outputs" : ["Divide_38202_0"] - }, - { - "inputs" : [ "Multiply_38197", "Parameter_35521" ], - "name" : "Divide_38201", - "op" : "Divide", - "outputs" : ["Divide_38201_0"] - }, - { - "inputs" : ["ReplaceSlice_38199"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38203", - "op" : "Slice", - "outputs" : ["Slice_38203_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38202", "Parameter_35530" ], - "name" : "Multiply_38205", - "op" : "Multiply", - "outputs" : ["Multiply_38205_0"] - }, - { - "inputs" : [ "Divide_38201", "Parameter_35522" ], - "name" : "Multiply_38204", - "op" : "Multiply", - "outputs" : ["Multiply_38204_0"] - }, - { - "inputs" : ["Multiply_38205"], - "name" : "Negative_38207", - "op" : "Negative", - "outputs" : ["Negative_38207_0"] - }, - { - "inputs" : ["Multiply_38204"], - "name" : "Negative_38206", - "op" : "Negative", - "outputs" : ["Negative_38206_0"] - }, - { - "inputs" : [ "Slice_38203", "Negative_38206" ], - "name" : "Add_38208", - "op" : "Add", - "outputs" : ["Add_38208_0"] - }, - { - "inputs" : [ "ReplaceSlice_38199", "Add_38208" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38209", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38209_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38209"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38210", - "op" : "Slice", - "outputs" : ["Slice_38210_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38210", "Negative_38207" ], - "name" : "Add_38211", - "op" : "Add", - "outputs" : ["Add_38211_0"] - }, - { - "inputs" : [ "ReplaceSlice_38209", "Add_38211" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38212", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38212_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38212"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38213", - "op" : "Slice", - "outputs" : ["Slice_38213_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38213", "Negative_38200" ], - "name" : "Add_38214", - "op" : "Add", - "outputs" : ["Add_38214_0"] - }, - { - "inputs" : [ "ReplaceSlice_38212", "Add_38214" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38215", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38215_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_38215"], - "name" : "Sum_38216", - "op" : "Sum", - "outputs" : ["Sum_38216_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36584", "ReplaceSlice_38215" ], - "name" : "Dot_38217", - "op" : "Dot", - "outputs" : ["Dot_38217_0"] - }, - { - "inputs" : [ "ReplaceSlice_38215", "Reshape_36480" ], - "name" : "Dot_38221", - "op" : "Dot", - "outputs" : ["Dot_38221_0"] - }, - { - "inputs" : [ "Reshape_36849", "ReplaceSlice_38215" ], - "name" : "Dot_38220", - "op" : "Dot", - "outputs" : ["Dot_38220_0"] - }, - { - "inputs" : ["ReplaceSlice_38215"], - "name" : "Sum_38219", - "op" : "Sum", - "outputs" : ["Sum_38219_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38215", "Reshape_36385" ], - "name" : "Dot_38218", - "op" : "Dot", - "outputs" : ["Dot_38218_0"] - }, - { - "inputs" : [ "Add_38172", "Sum_38216" ], - "name" : "Add_38222", - "op" : "Add", - "outputs" : ["Add_38222_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38217"], - "name" : "Reshape_38223", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38223_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38221"], - "name" : "Reshape_38227", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38227_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38220"], - "name" : "Reshape_38226", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38226_0"] - }, - { - "inputs" : [ "Add_38171", "Sum_38219" ], - "name" : "Add_38225", - "op" : "Add", - "outputs" : ["Add_38225_0"] - }, - { - "inputs" : [ "Dot_38218", "Reshape_36641" ], - "name" : "Add_38224", - "op" : "Add", - "outputs" : ["Add_38224_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38223"], - "name" : "Reshape_38228", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38228_0"] - }, - { - "inputs" : [ "Slice_38185", "Reshape_38227" ], - "name" : "Add_38232", - "op" : "Add", - "outputs" : ["Add_38232_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38226"], - "name" : "Reshape_38231", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38231_0"] - }, - { - "inputs" : [ "Add_38224", "Parameter_34107" ], - "name" : "Multiply_38230", - "op" : "Multiply", - "outputs" : ["Multiply_38230_0"] - }, - { - "inputs" : [ "Parameter_35507", "Add_38224" ], - "name" : "Multiply_38229", - "op" : "Multiply", - "outputs" : ["Multiply_38229_0"] - }, - { - "inputs" : [ "Add_38181", "Reshape_38228" ], - "name" : "Add_38233", - "op" : "Add", - "outputs" : ["Add_38233_0"] - }, - { - "inputs" : [ "ReplaceSlice_38182", "Add_38232" ], - "lower_bounds" : [ 36, 0, 0 ], - "name" : "ReplaceSlice_38237", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38237_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 37, 64, 256 ] - }, - { - "inputs" : [ "Add_38180", "Reshape_38231" ], - "name" : "Add_38236", - "op" : "Add", - "outputs" : ["Add_38236_0"] - }, - { - "inputs" : ["Multiply_38230"], - "name" : "Negative_38235", - "op" : "Negative", - "outputs" : ["Negative_38235_0"] - }, - { - "inputs" : [ "Multiply_38229", "Multiply_36848" ], - "name" : "Divide_38234", - "op" : "Divide", - "outputs" : ["Divide_38234_0"] - }, - { - "inputs" : ["ReplaceSlice_38237"], - "lower_bounds" : [ 35, 0, 0 ], - "name" : "Slice_38240", - "op" : "Slice", - "outputs" : ["Slice_38240_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 36, 64, 256 ] - }, - { - "inputs" : [ "Negative_38235", "Parameter_35507" ], - "name" : "Multiply_38239", - "op" : "Multiply", - "outputs" : ["Multiply_38239_0"] - }, - { - "inputs" : [ "Multiply_38189", "Divide_38234" ], - "name" : "Add_38238", - "op" : "Add", - "outputs" : ["Add_38238_0"] - }, - { - "inputs" : [ "Multiply_38239", "Parameter_35508" ], - "name" : "Divide_38245", - "op" : "Divide", - "outputs" : ["Divide_38245_0"] - }, - { - "inputs" : [ "Parameter_35492", "Add_38238" ], - "name" : "Multiply_38241", - "op" : "Multiply", - "outputs" : ["Multiply_38241_0"] - }, - { - "inputs" : [ "Parameter_35500", "Add_38238" ], - "name" : "Multiply_38243", - "op" : "Multiply", - "outputs" : ["Multiply_38243_0"] - }, - { - "inputs" : [ "Add_38238", "Parameter_34119" ], - "name" : "Multiply_38244", - "op" : "Multiply", - "outputs" : ["Multiply_38244_0"] - }, - { - "inputs" : [ "Add_38238", "Parameter_34110" ], - "name" : "Multiply_38242", - "op" : "Multiply", - "outputs" : ["Multiply_38242_0"] - }, - { - "inputs" : [ "Divide_38245", "Parameter_35509" ], - "name" : "Multiply_38249", - "op" : "Multiply", - "outputs" : ["Multiply_38249_0"] - }, - { - "inputs" : [ "Multiply_38241", "Multiply_36846" ], - "name" : "Divide_38246", - "op" : "Divide", - "outputs" : ["Divide_38246_0"] - }, - { - "inputs" : ["Multiply_38244"], - "name" : "Negative_38248", - "op" : "Negative", - "outputs" : ["Negative_38248_0"] - }, - { - "inputs" : ["Multiply_38242"], - "name" : "Negative_38247", - "op" : "Negative", - "outputs" : ["Negative_38247_0"] - }, - { - "inputs" : ["Multiply_38249"], - "name" : "Negative_38253", - "op" : "Negative", - "outputs" : ["Negative_38253_0"] - }, - { - "inputs" : [ "Broadcast_36333", "Divide_38246" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38250", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38250_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38248", "Parameter_35500" ], - "name" : "Multiply_38252", - "op" : "Multiply", - "outputs" : ["Multiply_38252_0"] - }, - { - "inputs" : [ "Negative_38247", "Parameter_35492" ], - "name" : "Multiply_38251", - "op" : "Multiply", - "outputs" : ["Multiply_38251_0"] - }, - { - "inputs" : ["ReplaceSlice_38250"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38254", - "op" : "Slice", - "outputs" : ["Slice_38254_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38252", "Parameter_35501" ], - "name" : "Divide_38256", - "op" : "Divide", - "outputs" : ["Divide_38256_0"] - }, - { - "inputs" : [ "Multiply_38251", "Parameter_35493" ], - "name" : "Divide_38255", - "op" : "Divide", - "outputs" : ["Divide_38255_0"] - }, - { - "inputs" : [ "Divide_38256", "Parameter_35502" ], - "name" : "Multiply_38258", - "op" : "Multiply", - "outputs" : ["Multiply_38258_0"] - }, - { - "inputs" : [ "Divide_38255", "Parameter_35494" ], - "name" : "Multiply_38257", - "op" : "Multiply", - "outputs" : ["Multiply_38257_0"] - }, - { - "inputs" : ["Multiply_38258"], - "name" : "Negative_38260", - "op" : "Negative", - "outputs" : ["Negative_38260_0"] - }, - { - "inputs" : ["Multiply_38257"], - "name" : "Negative_38259", - "op" : "Negative", - "outputs" : ["Negative_38259_0"] - }, - { - "inputs" : [ "Slice_38254", "Negative_38259" ], - "name" : "Add_38261", - "op" : "Add", - "outputs" : ["Add_38261_0"] - }, - { - "inputs" : [ "ReplaceSlice_38250", "Add_38261" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38262", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38262_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38262"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38263", - "op" : "Slice", - "outputs" : ["Slice_38263_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38263", "Negative_38260" ], - "name" : "Add_38264", - "op" : "Add", - "outputs" : ["Add_38264_0"] - }, - { - "inputs" : [ "ReplaceSlice_38262", "Add_38264" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38265", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38265_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38265"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38266", - "op" : "Slice", - "outputs" : ["Slice_38266_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38266", "Negative_38253" ], - "name" : "Add_38267", - "op" : "Add", - "outputs" : ["Add_38267_0"] - }, - { - "inputs" : [ "ReplaceSlice_38265", "Add_38267" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38268", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38268_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36582", "ReplaceSlice_38268" ], - "name" : "Dot_38272", - "op" : "Dot", - "outputs" : ["Dot_38272_0"] - }, - { - "inputs" : [ "Reshape_36844", "ReplaceSlice_38268" ], - "name" : "Dot_38271", - "op" : "Dot", - "outputs" : ["Dot_38271_0"] - }, - { - "inputs" : ["ReplaceSlice_38268"], - "name" : "Sum_38269", - "op" : "Sum", - "outputs" : ["Sum_38269_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38268", "Reshape_36403" ], - "name" : "Dot_38270", - "op" : "Dot", - "outputs" : ["Dot_38270_0"] - }, - { - "inputs" : [ "ReplaceSlice_38268", "Reshape_36457" ], - "name" : "Dot_38273", - "op" : "Dot", - "outputs" : ["Dot_38273_0"] - }, - { - "inputs" : ["ReplaceSlice_38268"], - "name" : "Sum_38274", - "op" : "Sum", - "outputs" : ["Sum_38274_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38272"], - "name" : "Reshape_38278", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38278_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38271"], - "name" : "Reshape_38277", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38277_0"] - }, - { - "inputs" : [ "Add_38225", "Sum_38269" ], - "name" : "Add_38275", - "op" : "Add", - "outputs" : ["Add_38275_0"] - }, - { - "inputs" : [ "Dot_38270", "Reshape_36652" ], - "name" : "Add_38276", - "op" : "Add", - "outputs" : ["Add_38276_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38273"], - "name" : "Reshape_38279", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38279_0"] - }, - { - "inputs" : [ "Add_38222", "Sum_38274" ], - "name" : "Add_38280", - "op" : "Add", - "outputs" : ["Add_38280_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38278"], - "name" : "Reshape_38284", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38284_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38277"], - "name" : "Reshape_38283", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38283_0"] - }, - { - "inputs" : [ "Parameter_35479", "Add_38276" ], - "name" : "Multiply_38282", - "op" : "Multiply", - "outputs" : ["Multiply_38282_0"] - }, - { - "inputs" : [ "Add_38276", "Parameter_34118" ], - "name" : "Multiply_38281", - "op" : "Multiply", - "outputs" : ["Multiply_38281_0"] - }, - { - "inputs" : [ "Slice_38240", "Reshape_38279" ], - "name" : "Add_38285", - "op" : "Add", - "outputs" : ["Add_38285_0"] - }, - { - "inputs" : [ "Add_38233", "Reshape_38284" ], - "name" : "Add_38289", - "op" : "Add", - "outputs" : ["Add_38289_0"] - }, - { - "inputs" : [ "Add_38236", "Reshape_38283" ], - "name" : "Add_38288", - "op" : "Add", - "outputs" : ["Add_38288_0"] - }, - { - "inputs" : [ "Multiply_38282", "Multiply_36843" ], - "name" : "Divide_38287", - "op" : "Divide", - "outputs" : ["Divide_38287_0"] - }, - { - "inputs" : ["Multiply_38281"], - "name" : "Negative_38286", - "op" : "Negative", - "outputs" : ["Negative_38286_0"] - }, - { - "inputs" : [ "ReplaceSlice_38237", "Add_38285" ], - "lower_bounds" : [ 35, 0, 0 ], - "name" : "ReplaceSlice_38290", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38290_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 36, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38243", "Divide_38287" ], - "name" : "Add_38292", - "op" : "Add", - "outputs" : ["Add_38292_0"] - }, - { - "inputs" : [ "Negative_38286", "Parameter_35479" ], - "name" : "Multiply_38291", - "op" : "Multiply", - "outputs" : ["Multiply_38291_0"] - }, - { - "inputs" : ["ReplaceSlice_38290"], - "lower_bounds" : [ 34, 0, 0 ], - "name" : "Slice_38293", - "op" : "Slice", - "outputs" : ["Slice_38293_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 35, 64, 256 ] - }, - { - "inputs" : [ "Parameter_35472", "Add_38292" ], - "name" : "Multiply_38297", - "op" : "Multiply", - "outputs" : ["Multiply_38297_0"] - }, - { - "inputs" : [ "Add_38292", "Parameter_34121" ], - "name" : "Multiply_38296", - "op" : "Multiply", - "outputs" : ["Multiply_38296_0"] - }, - { - "inputs" : [ "Add_38292", "Parameter_34130" ], - "name" : "Multiply_38295", - "op" : "Multiply", - "outputs" : ["Multiply_38295_0"] - }, - { - "inputs" : [ "Parameter_35464", "Add_38292" ], - "name" : "Multiply_38298", - "op" : "Multiply", - "outputs" : ["Multiply_38298_0"] - }, - { - "inputs" : [ "Multiply_38291", "Parameter_35480" ], - "name" : "Divide_38294", - "op" : "Divide", - "outputs" : ["Divide_38294_0"] - }, - { - "inputs" : ["Multiply_38296"], - "name" : "Negative_38301", - "op" : "Negative", - "outputs" : ["Negative_38301_0"] - }, - { - "inputs" : ["Multiply_38295"], - "name" : "Negative_38300", - "op" : "Negative", - "outputs" : ["Negative_38300_0"] - }, - { - "inputs" : [ "Multiply_38298", "Multiply_36841" ], - "name" : "Divide_38302", - "op" : "Divide", - "outputs" : ["Divide_38302_0"] - }, - { - "inputs" : [ "Divide_38294", "Parameter_35481" ], - "name" : "Multiply_38299", - "op" : "Multiply", - "outputs" : ["Multiply_38299_0"] - }, - { - "inputs" : [ "Negative_38301", "Parameter_35464" ], - "name" : "Multiply_38305", - "op" : "Multiply", - "outputs" : ["Multiply_38305_0"] - }, - { - "inputs" : [ "Negative_38300", "Parameter_35472" ], - "name" : "Multiply_38304", - "op" : "Multiply", - "outputs" : ["Multiply_38304_0"] - }, - { - "inputs" : [ "Broadcast_36334", "Divide_38302" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38306", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38306_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_38299"], - "name" : "Negative_38303", - "op" : "Negative", - "outputs" : ["Negative_38303_0"] - }, - { - "inputs" : [ "Multiply_38305", "Parameter_35465" ], - "name" : "Divide_38308", - "op" : "Divide", - "outputs" : ["Divide_38308_0"] - }, - { - "inputs" : [ "Multiply_38304", "Parameter_35473" ], - "name" : "Divide_38307", - "op" : "Divide", - "outputs" : ["Divide_38307_0"] - }, - { - "inputs" : ["ReplaceSlice_38306"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38309", - "op" : "Slice", - "outputs" : ["Slice_38309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38308", "Parameter_35466" ], - "name" : "Multiply_38311", - "op" : "Multiply", - "outputs" : ["Multiply_38311_0"] - }, - { - "inputs" : [ "Divide_38307", "Parameter_35474" ], - "name" : "Multiply_38310", - "op" : "Multiply", - "outputs" : ["Multiply_38310_0"] - }, - { - "inputs" : ["Multiply_38311"], - "name" : "Negative_38313", - "op" : "Negative", - "outputs" : ["Negative_38313_0"] - }, - { - "inputs" : ["Multiply_38310"], - "name" : "Negative_38312", - "op" : "Negative", - "outputs" : ["Negative_38312_0"] - }, - { - "inputs" : [ "Slice_38309", "Negative_38313" ], - "name" : "Add_38314", - "op" : "Add", - "outputs" : ["Add_38314_0"] - }, - { - "inputs" : [ "ReplaceSlice_38306", "Add_38314" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38315", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38315_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38315"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38316", - "op" : "Slice", - "outputs" : ["Slice_38316_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38316", "Negative_38312" ], - "name" : "Add_38317", - "op" : "Add", - "outputs" : ["Add_38317_0"] - }, - { - "inputs" : [ "ReplaceSlice_38315", "Add_38317" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38318", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38318_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38318"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38319", - "op" : "Slice", - "outputs" : ["Slice_38319_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38319", "Negative_38303" ], - "name" : "Add_38320", - "op" : "Add", - "outputs" : ["Add_38320_0"] - }, - { - "inputs" : [ "ReplaceSlice_38318", "Add_38320" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38321", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38321_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_38321"], - "name" : "Sum_38325", - "op" : "Sum", - "outputs" : ["Sum_38325_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38321", "Reshape_36404" ], - "name" : "Dot_38327", - "op" : "Dot", - "outputs" : ["Dot_38327_0"] - }, - { - "inputs" : [ "Reshape_36839", "ReplaceSlice_38321" ], - "name" : "Dot_38322", - "op" : "Dot", - "outputs" : ["Dot_38322_0"] - }, - { - "inputs" : [ "ReplaceSlice_38321", "Reshape_36447" ], - "name" : "Dot_38324", - "op" : "Dot", - "outputs" : ["Dot_38324_0"] - }, - { - "inputs" : ["ReplaceSlice_38321"], - "name" : "Sum_38323", - "op" : "Sum", - "outputs" : ["Sum_38323_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36581", "ReplaceSlice_38321" ], - "name" : "Dot_38326", - "op" : "Dot", - "outputs" : ["Dot_38326_0"] - }, - { - "inputs" : [ "Add_38280", "Sum_38325" ], - "name" : "Add_38331", - "op" : "Add", - "outputs" : ["Add_38331_0"] - }, - { - "inputs" : [ "Dot_38327", "Reshape_36651" ], - "name" : "Add_38333", - "op" : "Add", - "outputs" : ["Add_38333_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38322"], - "name" : "Reshape_38328", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38328_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38324"], - "name" : "Reshape_38330", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38330_0"] - }, - { - "inputs" : [ "Add_38275", "Sum_38323" ], - "name" : "Add_38329", - "op" : "Add", - "outputs" : ["Add_38329_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38326"], - "name" : "Reshape_38332", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38332_0"] - }, - { - "inputs" : [ "Parameter_35451", "Add_38333" ], - "name" : "Multiply_38338", - "op" : "Multiply", - "outputs" : ["Multiply_38338_0"] - }, - { - "inputs" : [ "Add_38333", "Parameter_34129" ], - "name" : "Multiply_38337", - "op" : "Multiply", - "outputs" : ["Multiply_38337_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38328"], - "name" : "Reshape_38334", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38334_0"] - }, - { - "inputs" : [ "Slice_38293", "Reshape_38330" ], - "name" : "Add_38335", - "op" : "Add", - "outputs" : ["Add_38335_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38332"], - "name" : "Reshape_38336", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38336_0"] - }, - { - "inputs" : [ "Multiply_38338", "Multiply_36838" ], - "name" : "Divide_38343", - "op" : "Divide", - "outputs" : ["Divide_38343_0"] - }, - { - "inputs" : ["Multiply_38337"], - "name" : "Negative_38342", - "op" : "Negative", - "outputs" : ["Negative_38342_0"] - }, - { - "inputs" : [ "Add_38288", "Reshape_38334" ], - "name" : "Add_38339", - "op" : "Add", - "outputs" : ["Add_38339_0"] - }, - { - "inputs" : [ "ReplaceSlice_38290", "Add_38335" ], - "lower_bounds" : [ 34, 0, 0 ], - "name" : "ReplaceSlice_38340", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38340_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 35, 64, 256 ] - }, - { - "inputs" : [ "Add_38289", "Reshape_38336" ], - "name" : "Add_38341", - "op" : "Add", - "outputs" : ["Add_38341_0"] - }, - { - "inputs" : [ "Multiply_38297", "Divide_38343" ], - "name" : "Add_38346", - "op" : "Add", - "outputs" : ["Add_38346_0"] - }, - { - "inputs" : [ "Negative_38342", "Parameter_35451" ], - "name" : "Multiply_38345", - "op" : "Multiply", - "outputs" : ["Multiply_38345_0"] - }, - { - "inputs" : ["ReplaceSlice_38340"], - "lower_bounds" : [ 33, 0, 0 ], - "name" : "Slice_38344", - "op" : "Slice", - "outputs" : ["Slice_38344_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 34, 64, 256 ] - }, - { - "inputs" : [ "Add_38346", "Parameter_34141" ], - "name" : "Multiply_38350", - "op" : "Multiply", - "outputs" : ["Multiply_38350_0"] - }, - { - "inputs" : [ "Add_38346", "Parameter_34132" ], - "name" : "Multiply_38348", - "op" : "Multiply", - "outputs" : ["Multiply_38348_0"] - }, - { - "inputs" : [ "Parameter_35436", "Add_38346" ], - "name" : "Multiply_38351", - "op" : "Multiply", - "outputs" : ["Multiply_38351_0"] - }, - { - "inputs" : [ "Parameter_35444", "Add_38346" ], - "name" : "Multiply_38349", - "op" : "Multiply", - "outputs" : ["Multiply_38349_0"] - }, - { - "inputs" : [ "Multiply_38345", "Parameter_35452" ], - "name" : "Divide_38347", - "op" : "Divide", - "outputs" : ["Divide_38347_0"] - }, - { - "inputs" : ["Multiply_38350"], - "name" : "Negative_38354", - "op" : "Negative", - "outputs" : ["Negative_38354_0"] - }, - { - "inputs" : ["Multiply_38348"], - "name" : "Negative_38353", - "op" : "Negative", - "outputs" : ["Negative_38353_0"] - }, - { - "inputs" : [ "Multiply_38351", "Multiply_36836" ], - "name" : "Divide_38355", - "op" : "Divide", - "outputs" : ["Divide_38355_0"] - }, - { - "inputs" : [ "Divide_38347", "Parameter_35453" ], - "name" : "Multiply_38352", - "op" : "Multiply", - "outputs" : ["Multiply_38352_0"] - }, - { - "inputs" : [ "Negative_38354", "Parameter_35444" ], - "name" : "Multiply_38358", - "op" : "Multiply", - "outputs" : ["Multiply_38358_0"] - }, - { - "inputs" : [ "Negative_38353", "Parameter_35436" ], - "name" : "Multiply_38357", - "op" : "Multiply", - "outputs" : ["Multiply_38357_0"] - }, - { - "inputs" : [ "Broadcast_36335", "Divide_38355" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38359", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38359_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_38352"], - "name" : "Negative_38356", - "op" : "Negative", - "outputs" : ["Negative_38356_0"] - }, - { - "inputs" : [ "Multiply_38358", "Parameter_35445" ], - "name" : "Divide_38361", - "op" : "Divide", - "outputs" : ["Divide_38361_0"] - }, - { - "inputs" : [ "Multiply_38357", "Parameter_35437" ], - "name" : "Divide_38360", - "op" : "Divide", - "outputs" : ["Divide_38360_0"] - }, - { - "inputs" : ["ReplaceSlice_38359"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38362", - "op" : "Slice", - "outputs" : ["Slice_38362_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38361", "Parameter_35446" ], - "name" : "Multiply_38364", - "op" : "Multiply", - "outputs" : ["Multiply_38364_0"] - }, - { - "inputs" : [ "Divide_38360", "Parameter_35438" ], - "name" : "Multiply_38363", - "op" : "Multiply", - "outputs" : ["Multiply_38363_0"] - }, - { - "inputs" : ["Multiply_38364"], - "name" : "Negative_38366", - "op" : "Negative", - "outputs" : ["Negative_38366_0"] - }, - { - "inputs" : ["Multiply_38363"], - "name" : "Negative_38365", - "op" : "Negative", - "outputs" : ["Negative_38365_0"] - }, - { - "inputs" : [ "Slice_38362", "Negative_38365" ], - "name" : "Add_38367", - "op" : "Add", - "outputs" : ["Add_38367_0"] - }, - { - "inputs" : [ "ReplaceSlice_38359", "Add_38367" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38368", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38368_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38368"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38369", - "op" : "Slice", - "outputs" : ["Slice_38369_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38369", "Negative_38366" ], - "name" : "Add_38370", - "op" : "Add", - "outputs" : ["Add_38370_0"] - }, - { - "inputs" : [ "ReplaceSlice_38368", "Add_38370" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38371", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38371_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38371"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38372", - "op" : "Slice", - "outputs" : ["Slice_38372_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38372", "Negative_38356" ], - "name" : "Add_38373", - "op" : "Add", - "outputs" : ["Add_38373_0"] - }, - { - "inputs" : [ "ReplaceSlice_38371", "Add_38373" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38374", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38374_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36579", "ReplaceSlice_38374" ], - "name" : "Dot_38379", - "op" : "Dot", - "outputs" : ["Dot_38379_0"] - }, - { - "inputs" : ["ReplaceSlice_38374"], - "name" : "Sum_38375", - "op" : "Sum", - "outputs" : ["Sum_38375_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36834", "ReplaceSlice_38374" ], - "name" : "Dot_38380", - "op" : "Dot", - "outputs" : ["Dot_38380_0"] - }, - { - "inputs" : [ "ReplaceSlice_38374", "Reshape_36384" ], - "name" : "Dot_38377", - "op" : "Dot", - "outputs" : ["Dot_38377_0"] - }, - { - "inputs" : ["ReplaceSlice_38374"], - "name" : "Sum_38378", - "op" : "Sum", - "outputs" : ["Sum_38378_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38374", "Reshape_36484" ], - "name" : "Dot_38376", - "op" : "Dot", - "outputs" : ["Dot_38376_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38379"], - "name" : "Reshape_38385", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38385_0"] - }, - { - "inputs" : [ "Add_38329", "Sum_38375" ], - "name" : "Add_38381", - "op" : "Add", - "outputs" : ["Add_38381_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38380"], - "name" : "Reshape_38386", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38386_0"] - }, - { - "inputs" : [ "Dot_38377", "Reshape_36627" ], - "name" : "Add_38383", - "op" : "Add", - "outputs" : ["Add_38383_0"] - }, - { - "inputs" : [ "Add_38331", "Sum_38378" ], - "name" : "Add_38384", - "op" : "Add", - "outputs" : ["Add_38384_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38376"], - "name" : "Reshape_38382", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38382_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38385"], - "name" : "Reshape_38390", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38390_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38386"], - "name" : "Reshape_38391", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38391_0"] - }, - { - "inputs" : [ "Parameter_35423", "Add_38383" ], - "name" : "Multiply_38388", - "op" : "Multiply", - "outputs" : ["Multiply_38388_0"] - }, - { - "inputs" : [ "Add_38383", "Parameter_34140" ], - "name" : "Multiply_38389", - "op" : "Multiply", - "outputs" : ["Multiply_38389_0"] - }, - { - "inputs" : [ "Slice_38344", "Reshape_38382" ], - "name" : "Add_38387", - "op" : "Add", - "outputs" : ["Add_38387_0"] - }, - { - "inputs" : [ "Add_38341", "Reshape_38390" ], - "name" : "Add_38395", - "op" : "Add", - "outputs" : ["Add_38395_0"] - }, - { - "inputs" : [ "Add_38339", "Reshape_38391" ], - "name" : "Add_38396", - "op" : "Add", - "outputs" : ["Add_38396_0"] - }, - { - "inputs" : [ "Multiply_38388", "Multiply_36833" ], - "name" : "Divide_38393", - "op" : "Divide", - "outputs" : ["Divide_38393_0"] - }, - { - "inputs" : ["Multiply_38389"], - "name" : "Negative_38394", - "op" : "Negative", - "outputs" : ["Negative_38394_0"] - }, - { - "inputs" : [ "ReplaceSlice_38340", "Add_38387" ], - "lower_bounds" : [ 33, 0, 0 ], - "name" : "ReplaceSlice_38392", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38392_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 34, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38349", "Divide_38393" ], - "name" : "Add_38398", - "op" : "Add", - "outputs" : ["Add_38398_0"] - }, - { - "inputs" : [ "Negative_38394", "Parameter_35423" ], - "name" : "Multiply_38399", - "op" : "Multiply", - "outputs" : ["Multiply_38399_0"] - }, - { - "inputs" : ["ReplaceSlice_38392"], - "lower_bounds" : [ 32, 0, 0 ], - "name" : "Slice_38397", - "op" : "Slice", - "outputs" : ["Slice_38397_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 33, 64, 256 ] - }, - { - "inputs" : [ "Parameter_35408", "Add_38398" ], - "name" : "Multiply_38402", - "op" : "Multiply", - "outputs" : ["Multiply_38402_0"] - }, - { - "inputs" : [ "Add_38398", "Parameter_34143" ], - "name" : "Multiply_38403", - "op" : "Multiply", - "outputs" : ["Multiply_38403_0"] - }, - { - "inputs" : [ "Add_38398", "Parameter_34152" ], - "name" : "Multiply_38401", - "op" : "Multiply", - "outputs" : ["Multiply_38401_0"] - }, - { - "inputs" : [ "Parameter_35416", "Add_38398" ], - "name" : "Multiply_38400", - "op" : "Multiply", - "outputs" : ["Multiply_38400_0"] - }, - { - "inputs" : [ "Multiply_38399", "Parameter_35424" ], - "name" : "Divide_38404", - "op" : "Divide", - "outputs" : ["Divide_38404_0"] - }, - { - "inputs" : [ "Multiply_38402", "Multiply_36831" ], - "name" : "Divide_38406", - "op" : "Divide", - "outputs" : ["Divide_38406_0"] - }, - { - "inputs" : ["Multiply_38403"], - "name" : "Negative_38407", - "op" : "Negative", - "outputs" : ["Negative_38407_0"] - }, - { - "inputs" : ["Multiply_38401"], - "name" : "Negative_38405", - "op" : "Negative", - "outputs" : ["Negative_38405_0"] - }, - { - "inputs" : [ "Divide_38404", "Parameter_35425" ], - "name" : "Multiply_38408", - "op" : "Multiply", - "outputs" : ["Multiply_38408_0"] - }, - { - "inputs" : [ "Broadcast_36336", "Divide_38406" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38410", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38410_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38407", "Parameter_35408" ], - "name" : "Multiply_38411", - "op" : "Multiply", - "outputs" : ["Multiply_38411_0"] - }, - { - "inputs" : [ "Negative_38405", "Parameter_35416" ], - "name" : "Multiply_38409", - "op" : "Multiply", - "outputs" : ["Multiply_38409_0"] - }, - { - "inputs" : ["Multiply_38408"], - "name" : "Negative_38412", - "op" : "Negative", - "outputs" : ["Negative_38412_0"] - }, - { - "inputs" : ["ReplaceSlice_38410"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38414", - "op" : "Slice", - "outputs" : ["Slice_38414_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38411", "Parameter_35409" ], - "name" : "Divide_38415", - "op" : "Divide", - "outputs" : ["Divide_38415_0"] - }, - { - "inputs" : [ "Multiply_38409", "Parameter_35417" ], - "name" : "Divide_38413", - "op" : "Divide", - "outputs" : ["Divide_38413_0"] - }, - { - "inputs" : [ "Divide_38415", "Parameter_35410" ], - "name" : "Multiply_38417", - "op" : "Multiply", - "outputs" : ["Multiply_38417_0"] - }, - { - "inputs" : [ "Divide_38413", "Parameter_35418" ], - "name" : "Multiply_38416", - "op" : "Multiply", - "outputs" : ["Multiply_38416_0"] - }, - { - "inputs" : ["Multiply_38417"], - "name" : "Negative_38419", - "op" : "Negative", - "outputs" : ["Negative_38419_0"] - }, - { - "inputs" : ["Multiply_38416"], - "name" : "Negative_38418", - "op" : "Negative", - "outputs" : ["Negative_38418_0"] - }, - { - "inputs" : [ "Slice_38414", "Negative_38419" ], - "name" : "Add_38420", - "op" : "Add", - "outputs" : ["Add_38420_0"] - }, - { - "inputs" : [ "ReplaceSlice_38410", "Add_38420" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38421", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38421_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38421"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38422", - "op" : "Slice", - "outputs" : ["Slice_38422_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38422", "Negative_38418" ], - "name" : "Add_38423", - "op" : "Add", - "outputs" : ["Add_38423_0"] - }, - { - "inputs" : [ "ReplaceSlice_38421", "Add_38423" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38424", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38424_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38424"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38425", - "op" : "Slice", - "outputs" : ["Slice_38425_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38425", "Negative_38412" ], - "name" : "Add_38426", - "op" : "Add", - "outputs" : ["Add_38426_0"] - }, - { - "inputs" : [ "ReplaceSlice_38424", "Add_38426" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38427", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38427_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_38427", "Reshape_36405" ], - "name" : "Dot_38429", - "op" : "Dot", - "outputs" : ["Dot_38429_0"] - }, - { - "inputs" : [ "ReplaceSlice_38427", "Reshape_36488" ], - "name" : "Dot_38428", - "op" : "Dot", - "outputs" : ["Dot_38428_0"] - }, - { - "inputs" : [ "Reshape_36829", "ReplaceSlice_38427" ], - "name" : "Dot_38430", - "op" : "Dot", - "outputs" : ["Dot_38430_0"] - }, - { - "inputs" : ["ReplaceSlice_38427"], - "name" : "Sum_38431", - "op" : "Sum", - "outputs" : ["Sum_38431_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36578", "ReplaceSlice_38427" ], - "name" : "Dot_38432", - "op" : "Dot", - "outputs" : ["Dot_38432_0"] - }, - { - "inputs" : ["ReplaceSlice_38427"], - "name" : "Sum_38433", - "op" : "Sum", - "outputs" : ["Sum_38433_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Dot_38429", "Reshape_36639" ], - "name" : "Add_38435", - "op" : "Add", - "outputs" : ["Add_38435_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38428"], - "name" : "Reshape_38434", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38434_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38430"], - "name" : "Reshape_38436", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38436_0"] - }, - { - "inputs" : [ "Add_38381", "Sum_38431" ], - "name" : "Add_38437", - "op" : "Add", - "outputs" : ["Add_38437_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38432"], - "name" : "Reshape_38438", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38438_0"] - }, - { - "inputs" : [ "Add_38384", "Sum_38433" ], - "name" : "Add_38439", - "op" : "Add", - "outputs" : ["Add_38439_0"] - }, - { - "inputs" : [ "Parameter_35395", "Add_38435" ], - "name" : "Multiply_38441", - "op" : "Multiply", - "outputs" : ["Multiply_38441_0"] - }, - { - "inputs" : [ "Add_38435", "Parameter_34151" ], - "name" : "Multiply_38442", - "op" : "Multiply", - "outputs" : ["Multiply_38442_0"] - }, - { - "inputs" : [ "Slice_38397", "Reshape_38434" ], - "name" : "Add_38440", - "op" : "Add", - "outputs" : ["Add_38440_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38436"], - "name" : "Reshape_38443", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38443_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38438"], - "name" : "Reshape_38444", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38444_0"] - }, - { - "inputs" : [ "Multiply_38441", "Multiply_36828" ], - "name" : "Divide_38446", - "op" : "Divide", - "outputs" : ["Divide_38446_0"] - }, - { - "inputs" : ["Multiply_38442"], - "name" : "Negative_38447", - "op" : "Negative", - "outputs" : ["Negative_38447_0"] - }, - { - "inputs" : [ "ReplaceSlice_38392", "Add_38440" ], - "lower_bounds" : [ 32, 0, 0 ], - "name" : "ReplaceSlice_38445", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38445_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 33, 64, 256 ] - }, - { - "inputs" : [ "Add_38396", "Reshape_38443" ], - "name" : "Add_38448", - "op" : "Add", - "outputs" : ["Add_38448_0"] - }, - { - "inputs" : [ "Add_38395", "Reshape_38444" ], - "name" : "Add_38449", - "op" : "Add", - "outputs" : ["Add_38449_0"] - }, - { - "inputs" : [ "Multiply_38400", "Divide_38446" ], - "name" : "Add_38451", - "op" : "Add", - "outputs" : ["Add_38451_0"] - }, - { - "inputs" : [ "Negative_38447", "Parameter_35395" ], - "name" : "Multiply_38452", - "op" : "Multiply", - "outputs" : ["Multiply_38452_0"] - }, - { - "inputs" : ["ReplaceSlice_38445"], - "lower_bounds" : [ 31, 0, 0 ], - "name" : "Slice_38450", - "op" : "Slice", - "outputs" : ["Slice_38450_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 64, 256 ] - }, - { - "inputs" : [ "Parameter_35380", "Add_38451" ], - "name" : "Multiply_38454", - "op" : "Multiply", - "outputs" : ["Multiply_38454_0"] - }, - { - "inputs" : [ "Add_38451", "Parameter_34163" ], - "name" : "Multiply_38453", - "op" : "Multiply", - "outputs" : ["Multiply_38453_0"] - }, - { - "inputs" : [ "Parameter_35388", "Add_38451" ], - "name" : "Multiply_38456", - "op" : "Multiply", - "outputs" : ["Multiply_38456_0"] - }, - { - "inputs" : [ "Add_38451", "Parameter_34154" ], - "name" : "Multiply_38455", - "op" : "Multiply", - "outputs" : ["Multiply_38455_0"] - }, - { - "inputs" : [ "Multiply_38452", "Parameter_35396" ], - "name" : "Divide_38457", - "op" : "Divide", - "outputs" : ["Divide_38457_0"] - }, - { - "inputs" : [ "Multiply_38454", "Multiply_36826" ], - "name" : "Divide_38459", - "op" : "Divide", - "outputs" : ["Divide_38459_0"] - }, - { - "inputs" : ["Multiply_38453"], - "name" : "Negative_38458", - "op" : "Negative", - "outputs" : ["Negative_38458_0"] - }, - { - "inputs" : ["Multiply_38455"], - "name" : "Negative_38460", - "op" : "Negative", - "outputs" : ["Negative_38460_0"] - }, - { - "inputs" : [ "Divide_38457", "Parameter_35397" ], - "name" : "Multiply_38461", - "op" : "Multiply", - "outputs" : ["Multiply_38461_0"] - }, - { - "inputs" : [ "Broadcast_36337", "Divide_38459" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38463", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38463_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38458", "Parameter_35388" ], - "name" : "Multiply_38462", - "op" : "Multiply", - "outputs" : ["Multiply_38462_0"] - }, - { - "inputs" : [ "Negative_38460", "Parameter_35380" ], - "name" : "Multiply_38464", - "op" : "Multiply", - "outputs" : ["Multiply_38464_0"] - }, - { - "inputs" : ["Multiply_38461"], - "name" : "Negative_38465", - "op" : "Negative", - "outputs" : ["Negative_38465_0"] - }, - { - "inputs" : ["ReplaceSlice_38463"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38467", - "op" : "Slice", - "outputs" : ["Slice_38467_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38462", "Parameter_35389" ], - "name" : "Divide_38466", - "op" : "Divide", - "outputs" : ["Divide_38466_0"] - }, - { - "inputs" : [ "Multiply_38464", "Parameter_35381" ], - "name" : "Divide_38468", - "op" : "Divide", - "outputs" : ["Divide_38468_0"] - }, - { - "inputs" : [ "Divide_38466", "Parameter_35390" ], - "name" : "Multiply_38469", - "op" : "Multiply", - "outputs" : ["Multiply_38469_0"] - }, - { - "inputs" : [ "Divide_38468", "Parameter_35382" ], - "name" : "Multiply_38470", - "op" : "Multiply", - "outputs" : ["Multiply_38470_0"] - }, - { - "inputs" : ["Multiply_38469"], - "name" : "Negative_38471", - "op" : "Negative", - "outputs" : ["Negative_38471_0"] - }, - { - "inputs" : ["Multiply_38470"], - "name" : "Negative_38472", - "op" : "Negative", - "outputs" : ["Negative_38472_0"] - }, - { - "inputs" : [ "Slice_38467", "Negative_38472" ], - "name" : "Add_38473", - "op" : "Add", - "outputs" : ["Add_38473_0"] - }, - { - "inputs" : [ "ReplaceSlice_38463", "Add_38473" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38474", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38474_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38474"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38475", - "op" : "Slice", - "outputs" : ["Slice_38475_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38475", "Negative_38471" ], - "name" : "Add_38476", - "op" : "Add", - "outputs" : ["Add_38476_0"] - }, - { - "inputs" : [ "ReplaceSlice_38474", "Add_38476" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38477", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38477_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38477"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38478", - "op" : "Slice", - "outputs" : ["Slice_38478_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38478", "Negative_38465" ], - "name" : "Add_38479", - "op" : "Add", - "outputs" : ["Add_38479_0"] - }, - { - "inputs" : [ "ReplaceSlice_38477", "Add_38479" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38480", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38480_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_38480"], - "name" : "Sum_38482", - "op" : "Sum", - "outputs" : ["Sum_38482_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38480", "Reshape_36416" ], - "name" : "Dot_38481", - "op" : "Dot", - "outputs" : ["Dot_38481_0"] - }, - { - "inputs" : ["ReplaceSlice_38480"], - "name" : "Sum_38486", - "op" : "Sum", - "outputs" : ["Sum_38486_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38480", "Reshape_36445" ], - "name" : "Dot_38485", - "op" : "Dot", - "outputs" : ["Dot_38485_0"] - }, - { - "inputs" : [ "Reshape_36824", "ReplaceSlice_38480" ], - "name" : "Dot_38484", - "op" : "Dot", - "outputs" : ["Dot_38484_0"] - }, - { - "inputs" : [ "Reshape_36580", "ReplaceSlice_38480" ], - "name" : "Dot_38483", - "op" : "Dot", - "outputs" : ["Dot_38483_0"] - }, - { - "inputs" : [ "Add_38439", "Sum_38482" ], - "name" : "Add_38488", - "op" : "Add", - "outputs" : ["Add_38488_0"] - }, - { - "inputs" : [ "Dot_38481", "Reshape_36638" ], - "name" : "Add_38487", - "op" : "Add", - "outputs" : ["Add_38487_0"] - }, - { - "inputs" : [ "Add_38437", "Sum_38486" ], - "name" : "Add_38492", - "op" : "Add", - "outputs" : ["Add_38492_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38485"], - "name" : "Reshape_38491", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38491_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38484"], - "name" : "Reshape_38490", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38490_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38483"], - "name" : "Reshape_38489", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38489_0"] - }, - { - "inputs" : [ "Parameter_35367", "Add_38487" ], - "name" : "Multiply_38493", - "op" : "Multiply", - "outputs" : ["Multiply_38493_0"] - }, - { - "inputs" : [ "Add_38487", "Parameter_34162" ], - "name" : "Multiply_38494", - "op" : "Multiply", - "outputs" : ["Multiply_38494_0"] - }, - { - "inputs" : [ "Slice_38450", "Reshape_38491" ], - "name" : "Add_38497", - "op" : "Add", - "outputs" : ["Add_38497_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38490"], - "name" : "Reshape_38496", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38496_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38489"], - "name" : "Reshape_38495", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38495_0"] - }, - { - "inputs" : [ "Multiply_38493", "Multiply_36823" ], - "name" : "Divide_38498", - "op" : "Divide", - "outputs" : ["Divide_38498_0"] - }, - { - "inputs" : ["Multiply_38494"], - "name" : "Negative_38499", - "op" : "Negative", - "outputs" : ["Negative_38499_0"] - }, - { - "inputs" : [ "ReplaceSlice_38445", "Add_38497" ], - "lower_bounds" : [ 31, 0, 0 ], - "name" : "ReplaceSlice_38502", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38502_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 64, 256 ] - }, - { - "inputs" : [ "Add_38448", "Reshape_38496" ], - "name" : "Add_38501", - "op" : "Add", - "outputs" : ["Add_38501_0"] - }, - { - "inputs" : [ "Add_38449", "Reshape_38495" ], - "name" : "Add_38500", - "op" : "Add", - "outputs" : ["Add_38500_0"] - }, - { - "inputs" : [ "Multiply_38456", "Divide_38498" ], - "name" : "Add_38503", - "op" : "Add", - "outputs" : ["Add_38503_0"] - }, - { - "inputs" : [ "Negative_38499", "Parameter_35367" ], - "name" : "Multiply_38504", - "op" : "Multiply", - "outputs" : ["Multiply_38504_0"] - }, - { - "inputs" : ["ReplaceSlice_38502"], - "lower_bounds" : [ 30, 0, 0 ], - "name" : "Slice_38505", - "op" : "Slice", - "outputs" : ["Slice_38505_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 31, 64, 256 ] - }, - { - "inputs" : [ "Add_38503", "Parameter_34174" ], - "name" : "Multiply_38509", - "op" : "Multiply", - "outputs" : ["Multiply_38509_0"] - }, - { - "inputs" : [ "Add_38503", "Parameter_34165" ], - "name" : "Multiply_38508", - "op" : "Multiply", - "outputs" : ["Multiply_38508_0"] - }, - { - "inputs" : [ "Parameter_35352", "Add_38503" ], - "name" : "Multiply_38507", - "op" : "Multiply", - "outputs" : ["Multiply_38507_0"] - }, - { - "inputs" : [ "Parameter_35360", "Add_38503" ], - "name" : "Multiply_38506", - "op" : "Multiply", - "outputs" : ["Multiply_38506_0"] - }, - { - "inputs" : [ "Multiply_38504", "Parameter_35368" ], - "name" : "Divide_38510", - "op" : "Divide", - "outputs" : ["Divide_38510_0"] - }, - { - "inputs" : ["Multiply_38509"], - "name" : "Negative_38513", - "op" : "Negative", - "outputs" : ["Negative_38513_0"] - }, - { - "inputs" : ["Multiply_38508"], - "name" : "Negative_38512", - "op" : "Negative", - "outputs" : ["Negative_38512_0"] - }, - { - "inputs" : [ "Multiply_38507", "Multiply_36821" ], - "name" : "Divide_38511", - "op" : "Divide", - "outputs" : ["Divide_38511_0"] - }, - { - "inputs" : [ "Divide_38510", "Parameter_35369" ], - "name" : "Multiply_38514", - "op" : "Multiply", - "outputs" : ["Multiply_38514_0"] - }, - { - "inputs" : [ "Negative_38513", "Parameter_35360" ], - "name" : "Multiply_38517", - "op" : "Multiply", - "outputs" : ["Multiply_38517_0"] - }, - { - "inputs" : [ "Negative_38512", "Parameter_35352" ], - "name" : "Multiply_38516", - "op" : "Multiply", - "outputs" : ["Multiply_38516_0"] - }, - { - "inputs" : [ "Broadcast_36338", "Divide_38511" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38515", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38515_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_38514"], - "name" : "Negative_38518", - "op" : "Negative", - "outputs" : ["Negative_38518_0"] - }, - { - "inputs" : [ "Multiply_38517", "Parameter_35361" ], - "name" : "Divide_38521", - "op" : "Divide", - "outputs" : ["Divide_38521_0"] - }, - { - "inputs" : [ "Multiply_38516", "Parameter_35353" ], - "name" : "Divide_38520", - "op" : "Divide", - "outputs" : ["Divide_38520_0"] - }, - { - "inputs" : ["ReplaceSlice_38515"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38519", - "op" : "Slice", - "outputs" : ["Slice_38519_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38521", "Parameter_35362" ], - "name" : "Multiply_38523", - "op" : "Multiply", - "outputs" : ["Multiply_38523_0"] - }, - { - "inputs" : [ "Divide_38520", "Parameter_35354" ], - "name" : "Multiply_38522", - "op" : "Multiply", - "outputs" : ["Multiply_38522_0"] - }, - { - "inputs" : ["Multiply_38523"], - "name" : "Negative_38525", - "op" : "Negative", - "outputs" : ["Negative_38525_0"] - }, - { - "inputs" : ["Multiply_38522"], - "name" : "Negative_38524", - "op" : "Negative", - "outputs" : ["Negative_38524_0"] - }, - { - "inputs" : [ "Slice_38519", "Negative_38524" ], - "name" : "Add_38526", - "op" : "Add", - "outputs" : ["Add_38526_0"] - }, - { - "inputs" : [ "ReplaceSlice_38515", "Add_38526" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38527", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38527_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38527"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38528", - "op" : "Slice", - "outputs" : ["Slice_38528_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38528", "Negative_38525" ], - "name" : "Add_38529", - "op" : "Add", - "outputs" : ["Add_38529_0"] - }, - { - "inputs" : [ "ReplaceSlice_38527", "Add_38529" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38530", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38530_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38530"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38531", - "op" : "Slice", - "outputs" : ["Slice_38531_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38531", "Negative_38518" ], - "name" : "Add_38532", - "op" : "Add", - "outputs" : ["Add_38532_0"] - }, - { - "inputs" : [ "ReplaceSlice_38530", "Add_38532" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38533", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38533_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36586", "ReplaceSlice_38533" ], - "name" : "Dot_38539", - "op" : "Dot", - "outputs" : ["Dot_38539_0"] - }, - { - "inputs" : [ "ReplaceSlice_38533", "Reshape_36442" ], - "name" : "Dot_38535", - "op" : "Dot", - "outputs" : ["Dot_38535_0"] - }, - { - "inputs" : ["ReplaceSlice_38533"], - "name" : "Sum_38534", - "op" : "Sum", - "outputs" : ["Sum_38534_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_38533"], - "name" : "Sum_38536", - "op" : "Sum", - "outputs" : ["Sum_38536_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38533", "Reshape_36374" ], - "name" : "Dot_38538", - "op" : "Dot", - "outputs" : ["Dot_38538_0"] - }, - { - "inputs" : [ "Reshape_36819", "ReplaceSlice_38533" ], - "name" : "Dot_38537", - "op" : "Dot", - "outputs" : ["Dot_38537_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38539"], - "name" : "Reshape_38545", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38545_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38535"], - "name" : "Reshape_38541", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38541_0"] - }, - { - "inputs" : [ "Add_38492", "Sum_38534" ], - "name" : "Add_38540", - "op" : "Add", - "outputs" : ["Add_38540_0"] - }, - { - "inputs" : [ "Add_38488", "Sum_38536" ], - "name" : "Add_38542", - "op" : "Add", - "outputs" : ["Add_38542_0"] - }, - { - "inputs" : [ "Dot_38538", "Reshape_36637" ], - "name" : "Add_38544", - "op" : "Add", - "outputs" : ["Add_38544_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38537"], - "name" : "Reshape_38543", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38543_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38545"], - "name" : "Reshape_38550", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38550_0"] - }, - { - "inputs" : [ "Slice_38505", "Reshape_38541" ], - "name" : "Add_38546", - "op" : "Add", - "outputs" : ["Add_38546_0"] - }, - { - "inputs" : [ "Parameter_35339", "Add_38544" ], - "name" : "Multiply_38548", - "op" : "Multiply", - "outputs" : ["Multiply_38548_0"] - }, - { - "inputs" : [ "Add_38544", "Parameter_34173" ], - "name" : "Multiply_38549", - "op" : "Multiply", - "outputs" : ["Multiply_38549_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38543"], - "name" : "Reshape_38547", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38547_0"] - }, - { - "inputs" : [ "Add_38500", "Reshape_38550" ], - "name" : "Add_38555", - "op" : "Add", - "outputs" : ["Add_38555_0"] - }, - { - "inputs" : [ "ReplaceSlice_38502", "Add_38546" ], - "lower_bounds" : [ 30, 0, 0 ], - "name" : "ReplaceSlice_38551", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38551_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 31, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38548", "Multiply_36818" ], - "name" : "Divide_38553", - "op" : "Divide", - "outputs" : ["Divide_38553_0"] - }, - { - "inputs" : ["Multiply_38549"], - "name" : "Negative_38554", - "op" : "Negative", - "outputs" : ["Negative_38554_0"] - }, - { - "inputs" : [ "Add_38501", "Reshape_38547" ], - "name" : "Add_38552", - "op" : "Add", - "outputs" : ["Add_38552_0"] - }, - { - "inputs" : ["ReplaceSlice_38551"], - "lower_bounds" : [ 29, 0, 0 ], - "name" : "Slice_38556", - "op" : "Slice", - "outputs" : ["Slice_38556_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 30, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38506", "Divide_38553" ], - "name" : "Add_38557", - "op" : "Add", - "outputs" : ["Add_38557_0"] - }, - { - "inputs" : [ "Negative_38554", "Parameter_35339" ], - "name" : "Multiply_38558", - "op" : "Multiply", - "outputs" : ["Multiply_38558_0"] - }, - { - "inputs" : [ "Add_38557", "Parameter_34176" ], - "name" : "Multiply_38560", - "op" : "Multiply", - "outputs" : ["Multiply_38560_0"] - }, - { - "inputs" : [ "Add_38557", "Parameter_34185" ], - "name" : "Multiply_38559", - "op" : "Multiply", - "outputs" : ["Multiply_38559_0"] - }, - { - "inputs" : [ "Parameter_35332", "Add_38557" ], - "name" : "Multiply_38561", - "op" : "Multiply", - "outputs" : ["Multiply_38561_0"] - }, - { - "inputs" : [ "Parameter_35324", "Add_38557" ], - "name" : "Multiply_38562", - "op" : "Multiply", - "outputs" : ["Multiply_38562_0"] - }, - { - "inputs" : [ "Multiply_38558", "Parameter_35340" ], - "name" : "Divide_38563", - "op" : "Divide", - "outputs" : ["Divide_38563_0"] - }, - { - "inputs" : ["Multiply_38560"], - "name" : "Negative_38565", - "op" : "Negative", - "outputs" : ["Negative_38565_0"] - }, - { - "inputs" : ["Multiply_38559"], - "name" : "Negative_38564", - "op" : "Negative", - "outputs" : ["Negative_38564_0"] - }, - { - "inputs" : [ "Multiply_38562", "Multiply_36816" ], - "name" : "Divide_38566", - "op" : "Divide", - "outputs" : ["Divide_38566_0"] - }, - { - "inputs" : [ "Divide_38563", "Parameter_35341" ], - "name" : "Multiply_38567", - "op" : "Multiply", - "outputs" : ["Multiply_38567_0"] - }, - { - "inputs" : [ "Negative_38565", "Parameter_35324" ], - "name" : "Multiply_38569", - "op" : "Multiply", - "outputs" : ["Multiply_38569_0"] - }, - { - "inputs" : [ "Negative_38564", "Parameter_35332" ], - "name" : "Multiply_38568", - "op" : "Multiply", - "outputs" : ["Multiply_38568_0"] - }, - { - "inputs" : [ "Broadcast_36339", "Divide_38566" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38570", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38570_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_38567"], - "name" : "Negative_38571", - "op" : "Negative", - "outputs" : ["Negative_38571_0"] - }, - { - "inputs" : [ "Multiply_38569", "Parameter_35325" ], - "name" : "Divide_38573", - "op" : "Divide", - "outputs" : ["Divide_38573_0"] - }, - { - "inputs" : [ "Multiply_38568", "Parameter_35333" ], - "name" : "Divide_38572", - "op" : "Divide", - "outputs" : ["Divide_38572_0"] - }, - { - "inputs" : ["ReplaceSlice_38570"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38574", - "op" : "Slice", - "outputs" : ["Slice_38574_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_38573", "Parameter_35326" ], - "name" : "Multiply_38576", - "op" : "Multiply", - "outputs" : ["Multiply_38576_0"] - }, - { - "inputs" : [ "Divide_38572", "Parameter_35334" ], - "name" : "Multiply_38575", - "op" : "Multiply", - "outputs" : ["Multiply_38575_0"] - }, - { - "inputs" : ["Multiply_38576"], - "name" : "Negative_38578", - "op" : "Negative", - "outputs" : ["Negative_38578_0"] - }, - { - "inputs" : ["Multiply_38575"], - "name" : "Negative_38577", - "op" : "Negative", - "outputs" : ["Negative_38577_0"] - }, - { - "inputs" : [ "Slice_38574", "Negative_38578" ], - "name" : "Add_38579", - "op" : "Add", - "outputs" : ["Add_38579_0"] - }, - { - "inputs" : [ "ReplaceSlice_38570", "Add_38579" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38580", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38580_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38580"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38581", - "op" : "Slice", - "outputs" : ["Slice_38581_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38581", "Negative_38577" ], - "name" : "Add_38582", - "op" : "Add", - "outputs" : ["Add_38582_0"] - }, - { - "inputs" : [ "ReplaceSlice_38580", "Add_38582" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38583", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38583_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38583"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38584", - "op" : "Slice", - "outputs" : ["Slice_38584_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38584", "Negative_38571" ], - "name" : "Add_38585", - "op" : "Add", - "outputs" : ["Add_38585_0"] - }, - { - "inputs" : [ "ReplaceSlice_38583", "Add_38585" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38586", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38586_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_38586", "Reshape_36373" ], - "name" : "Dot_38592", - "op" : "Dot", - "outputs" : ["Dot_38592_0"] - }, - { - "inputs" : [ "Reshape_36814", "ReplaceSlice_38586" ], - "name" : "Dot_38587", - "op" : "Dot", - "outputs" : ["Dot_38587_0"] - }, - { - "inputs" : [ "Reshape_36577", "ReplaceSlice_38586" ], - "name" : "Dot_38589", - "op" : "Dot", - "outputs" : ["Dot_38589_0"] - }, - { - "inputs" : ["ReplaceSlice_38586"], - "name" : "Sum_38588", - "op" : "Sum", - "outputs" : ["Sum_38588_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38586", "Reshape_36443" ], - "name" : "Dot_38590", - "op" : "Dot", - "outputs" : ["Dot_38590_0"] - }, - { - "inputs" : ["ReplaceSlice_38586"], - "name" : "Sum_38591", - "op" : "Sum", - "outputs" : ["Sum_38591_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Dot_38592", "Reshape_36636" ], - "name" : "Add_38598", - "op" : "Add", - "outputs" : ["Add_38598_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38587"], - "name" : "Reshape_38593", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38593_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38589"], - "name" : "Reshape_38595", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38595_0"] - }, - { - "inputs" : [ "Add_38542", "Sum_38588" ], - "name" : "Add_38594", - "op" : "Add", - "outputs" : ["Add_38594_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38590"], - "name" : "Reshape_38596", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38596_0"] - }, - { - "inputs" : [ "Add_38540", "Sum_38591" ], - "name" : "Add_38597", - "op" : "Add", - "outputs" : ["Add_38597_0"] - }, - { - "inputs" : [ "Add_38598", "Parameter_34184" ], - "name" : "Multiply_38603", - "op" : "Multiply", - "outputs" : ["Multiply_38603_0"] - }, - { - "inputs" : [ "Parameter_35311", "Add_38598" ], - "name" : "Multiply_38602", - "op" : "Multiply", - "outputs" : ["Multiply_38602_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38593"], - "name" : "Reshape_38599", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38599_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38595"], - "name" : "Reshape_38600", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38600_0"] - }, - { - "inputs" : [ "Slice_38556", "Reshape_38596" ], - "name" : "Add_38601", - "op" : "Add", - "outputs" : ["Add_38601_0"] - }, - { - "inputs" : ["Multiply_38603"], - "name" : "Negative_38608", - "op" : "Negative", - "outputs" : ["Negative_38608_0"] - }, - { - "inputs" : [ "Multiply_38602", "Multiply_36813" ], - "name" : "Divide_38607", - "op" : "Divide", - "outputs" : ["Divide_38607_0"] - }, - { - "inputs" : [ "Add_38552", "Reshape_38599" ], - "name" : "Add_38604", - "op" : "Add", - "outputs" : ["Add_38604_0"] - }, - { - "inputs" : [ "Add_38555", "Reshape_38600" ], - "name" : "Add_38605", - "op" : "Add", - "outputs" : ["Add_38605_0"] - }, - { - "inputs" : [ "ReplaceSlice_38551", "Add_38601" ], - "lower_bounds" : [ 29, 0, 0 ], - "name" : "ReplaceSlice_38606", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38606_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 30, 64, 256 ] - }, - { - "inputs" : [ "Negative_38608", "Parameter_35311" ], - "name" : "Multiply_38611", - "op" : "Multiply", - "outputs" : ["Multiply_38611_0"] - }, - { - "inputs" : [ "Multiply_38561", "Divide_38607" ], - "name" : "Add_38610", - "op" : "Add", - "outputs" : ["Add_38610_0"] - }, - { - "inputs" : ["ReplaceSlice_38606"], - "lower_bounds" : [ 28, 0, 0 ], - "name" : "Slice_38609", - "op" : "Slice", - "outputs" : ["Slice_38609_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 29, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38611", "Parameter_35312" ], - "name" : "Divide_38616", - "op" : "Divide", - "outputs" : ["Divide_38616_0"] - }, - { - "inputs" : [ "Parameter_35304", "Add_38610" ], - "name" : "Multiply_38613", - "op" : "Multiply", - "outputs" : ["Multiply_38613_0"] - }, - { - "inputs" : [ "Add_38610", "Parameter_34196" ], - "name" : "Multiply_38614", - "op" : "Multiply", - "outputs" : ["Multiply_38614_0"] - }, - { - "inputs" : [ "Parameter_35296", "Add_38610" ], - "name" : "Multiply_38612", - "op" : "Multiply", - "outputs" : ["Multiply_38612_0"] - }, - { - "inputs" : [ "Add_38610", "Parameter_34187" ], - "name" : "Multiply_38615", - "op" : "Multiply", - "outputs" : ["Multiply_38615_0"] - }, - { - "inputs" : [ "Divide_38616", "Parameter_35313" ], - "name" : "Multiply_38620", - "op" : "Multiply", - "outputs" : ["Multiply_38620_0"] - }, - { - "inputs" : ["Multiply_38614"], - "name" : "Negative_38618", - "op" : "Negative", - "outputs" : ["Negative_38618_0"] - }, - { - "inputs" : [ "Multiply_38612", "Multiply_36811" ], - "name" : "Divide_38617", - "op" : "Divide", - "outputs" : ["Divide_38617_0"] - }, - { - "inputs" : ["Multiply_38615"], - "name" : "Negative_38619", - "op" : "Negative", - "outputs" : ["Negative_38619_0"] - }, - { - "inputs" : ["Multiply_38620"], - "name" : "Negative_38624", - "op" : "Negative", - "outputs" : ["Negative_38624_0"] - }, - { - "inputs" : [ "Negative_38618", "Parameter_35304" ], - "name" : "Multiply_38622", - "op" : "Multiply", - "outputs" : ["Multiply_38622_0"] - }, - { - "inputs" : [ "Broadcast_36340", "Divide_38617" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38621", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38621_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38619", "Parameter_35296" ], - "name" : "Multiply_38623", - "op" : "Multiply", - "outputs" : ["Multiply_38623_0"] - }, - { - "inputs" : [ "Multiply_38622", "Parameter_35305" ], - "name" : "Divide_38626", - "op" : "Divide", - "outputs" : ["Divide_38626_0"] - }, - { - "inputs" : ["ReplaceSlice_38621"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38625", - "op" : "Slice", - "outputs" : ["Slice_38625_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38623", "Parameter_35297" ], - "name" : "Divide_38627", - "op" : "Divide", - "outputs" : ["Divide_38627_0"] - }, - { - "inputs" : [ "Divide_38626", "Parameter_35306" ], - "name" : "Multiply_38628", - "op" : "Multiply", - "outputs" : ["Multiply_38628_0"] - }, - { - "inputs" : [ "Divide_38627", "Parameter_35298" ], - "name" : "Multiply_38629", - "op" : "Multiply", - "outputs" : ["Multiply_38629_0"] - }, - { - "inputs" : ["Multiply_38628"], - "name" : "Negative_38630", - "op" : "Negative", - "outputs" : ["Negative_38630_0"] - }, - { - "inputs" : ["Multiply_38629"], - "name" : "Negative_38631", - "op" : "Negative", - "outputs" : ["Negative_38631_0"] - }, - { - "inputs" : [ "Slice_38625", "Negative_38631" ], - "name" : "Add_38632", - "op" : "Add", - "outputs" : ["Add_38632_0"] - }, - { - "inputs" : [ "ReplaceSlice_38621", "Add_38632" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38633", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38633_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38633"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38634", - "op" : "Slice", - "outputs" : ["Slice_38634_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38634", "Negative_38630" ], - "name" : "Add_38635", - "op" : "Add", - "outputs" : ["Add_38635_0"] - }, - { - "inputs" : [ "ReplaceSlice_38633", "Add_38635" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38636", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38636_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38636"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38637", - "op" : "Slice", - "outputs" : ["Slice_38637_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38637", "Negative_38624" ], - "name" : "Add_38638", - "op" : "Add", - "outputs" : ["Add_38638_0"] - }, - { - "inputs" : [ "ReplaceSlice_38636", "Add_38638" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38639", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38639_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_38639"], - "name" : "Sum_38643", - "op" : "Sum", - "outputs" : ["Sum_38643_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38639", "Reshape_36441" ], - "name" : "Dot_38640", - "op" : "Dot", - "outputs" : ["Dot_38640_0"] - }, - { - "inputs" : [ "ReplaceSlice_38639", "Reshape_36372" ], - "name" : "Dot_38641", - "op" : "Dot", - "outputs" : ["Dot_38641_0"] - }, - { - "inputs" : ["ReplaceSlice_38639"], - "name" : "Sum_38642", - "op" : "Sum", - "outputs" : ["Sum_38642_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36576", "ReplaceSlice_38639" ], - "name" : "Dot_38644", - "op" : "Dot", - "outputs" : ["Dot_38644_0"] - }, - { - "inputs" : [ "Reshape_36809", "ReplaceSlice_38639" ], - "name" : "Dot_38645", - "op" : "Dot", - "outputs" : ["Dot_38645_0"] - }, - { - "inputs" : [ "Add_38597", "Sum_38643" ], - "name" : "Add_38649", - "op" : "Add", - "outputs" : ["Add_38649_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38640"], - "name" : "Reshape_38646", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38646_0"] - }, - { - "inputs" : [ "Dot_38641", "Reshape_36635" ], - "name" : "Add_38647", - "op" : "Add", - "outputs" : ["Add_38647_0"] - }, - { - "inputs" : [ "Add_38594", "Sum_38642" ], - "name" : "Add_38648", - "op" : "Add", - "outputs" : ["Add_38648_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38644"], - "name" : "Reshape_38650", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38650_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38645"], - "name" : "Reshape_38651", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38651_0"] - }, - { - "inputs" : [ "Slice_38609", "Reshape_38646" ], - "name" : "Add_38652", - "op" : "Add", - "outputs" : ["Add_38652_0"] - }, - { - "inputs" : [ "Add_38647", "Parameter_34195" ], - "name" : "Multiply_38654", - "op" : "Multiply", - "outputs" : ["Multiply_38654_0"] - }, - { - "inputs" : [ "Parameter_35283", "Add_38647" ], - "name" : "Multiply_38653", - "op" : "Multiply", - "outputs" : ["Multiply_38653_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38650"], - "name" : "Reshape_38655", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38655_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38651"], - "name" : "Reshape_38656", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38656_0"] - }, - { - "inputs" : [ "ReplaceSlice_38606", "Add_38652" ], - "lower_bounds" : [ 28, 0, 0 ], - "name" : "ReplaceSlice_38657", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38657_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 29, 64, 256 ] - }, - { - "inputs" : ["Multiply_38654"], - "name" : "Negative_38659", - "op" : "Negative", - "outputs" : ["Negative_38659_0"] - }, - { - "inputs" : [ "Multiply_38653", "Multiply_36808" ], - "name" : "Divide_38658", - "op" : "Divide", - "outputs" : ["Divide_38658_0"] - }, - { - "inputs" : [ "Add_38605", "Reshape_38655" ], - "name" : "Add_38660", - "op" : "Add", - "outputs" : ["Add_38660_0"] - }, - { - "inputs" : [ "Add_38604", "Reshape_38656" ], - "name" : "Add_38661", - "op" : "Add", - "outputs" : ["Add_38661_0"] - }, - { - "inputs" : ["ReplaceSlice_38657"], - "lower_bounds" : [ 27, 0, 0 ], - "name" : "Slice_38662", - "op" : "Slice", - "outputs" : ["Slice_38662_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 28, 64, 256 ] - }, - { - "inputs" : [ "Negative_38659", "Parameter_35283" ], - "name" : "Multiply_38664", - "op" : "Multiply", - "outputs" : ["Multiply_38664_0"] - }, - { - "inputs" : [ "Multiply_38613", "Divide_38658" ], - "name" : "Add_38663", - "op" : "Add", - "outputs" : ["Add_38663_0"] - }, - { - "inputs" : [ "Multiply_38664", "Parameter_35284" ], - "name" : "Divide_38669", - "op" : "Divide", - "outputs" : ["Divide_38669_0"] - }, - { - "inputs" : [ "Parameter_35268", "Add_38663" ], - "name" : "Multiply_38668", - "op" : "Multiply", - "outputs" : ["Multiply_38668_0"] - }, - { - "inputs" : [ "Add_38663", "Parameter_34207" ], - "name" : "Multiply_38667", - "op" : "Multiply", - "outputs" : ["Multiply_38667_0"] - }, - { - "inputs" : [ "Parameter_35276", "Add_38663" ], - "name" : "Multiply_38666", - "op" : "Multiply", - "outputs" : ["Multiply_38666_0"] - }, - { - "inputs" : [ "Add_38663", "Parameter_34198" ], - "name" : "Multiply_38665", - "op" : "Multiply", - "outputs" : ["Multiply_38665_0"] - }, - { - "inputs" : [ "Divide_38669", "Parameter_35285" ], - "name" : "Multiply_38673", - "op" : "Multiply", - "outputs" : ["Multiply_38673_0"] - }, - { - "inputs" : [ "Multiply_38668", "Multiply_36806" ], - "name" : "Divide_38672", - "op" : "Divide", - "outputs" : ["Divide_38672_0"] - }, - { - "inputs" : ["Multiply_38667"], - "name" : "Negative_38671", - "op" : "Negative", - "outputs" : ["Negative_38671_0"] - }, - { - "inputs" : ["Multiply_38665"], - "name" : "Negative_38670", - "op" : "Negative", - "outputs" : ["Negative_38670_0"] - }, - { - "inputs" : ["Multiply_38673"], - "name" : "Negative_38677", - "op" : "Negative", - "outputs" : ["Negative_38677_0"] - }, - { - "inputs" : [ "Broadcast_36341", "Divide_38672" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38676", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38676_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38671", "Parameter_35276" ], - "name" : "Multiply_38675", - "op" : "Multiply", - "outputs" : ["Multiply_38675_0"] - }, - { - "inputs" : [ "Negative_38670", "Parameter_35268" ], - "name" : "Multiply_38674", - "op" : "Multiply", - "outputs" : ["Multiply_38674_0"] - }, - { - "inputs" : ["ReplaceSlice_38676"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38680", - "op" : "Slice", - "outputs" : ["Slice_38680_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38675", "Parameter_35277" ], - "name" : "Divide_38679", - "op" : "Divide", - "outputs" : ["Divide_38679_0"] - }, - { - "inputs" : [ "Multiply_38674", "Parameter_35269" ], - "name" : "Divide_38678", - "op" : "Divide", - "outputs" : ["Divide_38678_0"] - }, - { - "inputs" : [ "Divide_38679", "Parameter_35278" ], - "name" : "Multiply_38682", - "op" : "Multiply", - "outputs" : ["Multiply_38682_0"] - }, - { - "inputs" : [ "Divide_38678", "Parameter_35270" ], - "name" : "Multiply_38681", - "op" : "Multiply", - "outputs" : ["Multiply_38681_0"] - }, - { - "inputs" : ["Multiply_38682"], - "name" : "Negative_38684", - "op" : "Negative", - "outputs" : ["Negative_38684_0"] - }, - { - "inputs" : ["Multiply_38681"], - "name" : "Negative_38683", - "op" : "Negative", - "outputs" : ["Negative_38683_0"] - }, - { - "inputs" : [ "Slice_38680", "Negative_38683" ], - "name" : "Add_38685", - "op" : "Add", - "outputs" : ["Add_38685_0"] - }, - { - "inputs" : [ "ReplaceSlice_38676", "Add_38685" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38686", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38686_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38686"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38687", - "op" : "Slice", - "outputs" : ["Slice_38687_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38687", "Negative_38684" ], - "name" : "Add_38688", - "op" : "Add", - "outputs" : ["Add_38688_0"] - }, - { - "inputs" : [ "ReplaceSlice_38686", "Add_38688" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38689", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38689_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38689"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38690", - "op" : "Slice", - "outputs" : ["Slice_38690_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38690", "Negative_38677" ], - "name" : "Add_38691", - "op" : "Add", - "outputs" : ["Add_38691_0"] - }, - { - "inputs" : [ "ReplaceSlice_38689", "Add_38691" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38692", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38692_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36575", "ReplaceSlice_38692" ], - "name" : "Dot_38695", - "op" : "Dot", - "outputs" : ["Dot_38695_0"] - }, - { - "inputs" : [ "ReplaceSlice_38692", "Reshape_36371" ], - "name" : "Dot_38698", - "op" : "Dot", - "outputs" : ["Dot_38698_0"] - }, - { - "inputs" : ["ReplaceSlice_38692"], - "name" : "Sum_38696", - "op" : "Sum", - "outputs" : ["Sum_38696_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38692", "Reshape_36440" ], - "name" : "Dot_38694", - "op" : "Dot", - "outputs" : ["Dot_38694_0"] - }, - { - "inputs" : [ "Reshape_36804", "ReplaceSlice_38692" ], - "name" : "Dot_38697", - "op" : "Dot", - "outputs" : ["Dot_38697_0"] - }, - { - "inputs" : ["ReplaceSlice_38692"], - "name" : "Sum_38693", - "op" : "Sum", - "outputs" : ["Sum_38693_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38695"], - "name" : "Reshape_38701", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38701_0"] - }, - { - "inputs" : [ "Dot_38698", "Reshape_36634" ], - "name" : "Add_38704", - "op" : "Add", - "outputs" : ["Add_38704_0"] - }, - { - "inputs" : [ "Add_38648", "Sum_38696" ], - "name" : "Add_38702", - "op" : "Add", - "outputs" : ["Add_38702_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38694"], - "name" : "Reshape_38700", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38700_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38697"], - "name" : "Reshape_38703", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38703_0"] - }, - { - "inputs" : [ "Add_38649", "Sum_38693" ], - "name" : "Add_38699", - "op" : "Add", - "outputs" : ["Add_38699_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38701"], - "name" : "Reshape_38706", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38706_0"] - }, - { - "inputs" : [ "Parameter_35255", "Add_38704" ], - "name" : "Multiply_38708", - "op" : "Multiply", - "outputs" : ["Multiply_38708_0"] - }, - { - "inputs" : [ "Add_38704", "Parameter_34206" ], - "name" : "Multiply_38709", - "op" : "Multiply", - "outputs" : ["Multiply_38709_0"] - }, - { - "inputs" : [ "Slice_38662", "Reshape_38700" ], - "name" : "Add_38705", - "op" : "Add", - "outputs" : ["Add_38705_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38703"], - "name" : "Reshape_38707", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38707_0"] - }, - { - "inputs" : [ "Add_38660", "Reshape_38706" ], - "name" : "Add_38711", - "op" : "Add", - "outputs" : ["Add_38711_0"] - }, - { - "inputs" : [ "Multiply_38708", "Multiply_36803" ], - "name" : "Divide_38713", - "op" : "Divide", - "outputs" : ["Divide_38713_0"] - }, - { - "inputs" : ["Multiply_38709"], - "name" : "Negative_38714", - "op" : "Negative", - "outputs" : ["Negative_38714_0"] - }, - { - "inputs" : [ "ReplaceSlice_38657", "Add_38705" ], - "lower_bounds" : [ 27, 0, 0 ], - "name" : "ReplaceSlice_38710", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38710_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 28, 64, 256 ] - }, - { - "inputs" : [ "Add_38661", "Reshape_38707" ], - "name" : "Add_38712", - "op" : "Add", - "outputs" : ["Add_38712_0"] - }, - { - "inputs" : [ "Multiply_38666", "Divide_38713" ], - "name" : "Add_38716", - "op" : "Add", - "outputs" : ["Add_38716_0"] - }, - { - "inputs" : [ "Negative_38714", "Parameter_35255" ], - "name" : "Multiply_38717", - "op" : "Multiply", - "outputs" : ["Multiply_38717_0"] - }, - { - "inputs" : ["ReplaceSlice_38710"], - "lower_bounds" : [ 26, 0, 0 ], - "name" : "Slice_38715", - "op" : "Slice", - "outputs" : ["Slice_38715_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 27, 64, 256 ] - }, - { - "inputs" : [ "Add_38716", "Parameter_34218" ], - "name" : "Multiply_38721", - "op" : "Multiply", - "outputs" : ["Multiply_38721_0"] - }, - { - "inputs" : [ "Parameter_35240", "Add_38716" ], - "name" : "Multiply_38720", - "op" : "Multiply", - "outputs" : ["Multiply_38720_0"] - }, - { - "inputs" : [ "Parameter_35248", "Add_38716" ], - "name" : "Multiply_38718", - "op" : "Multiply", - "outputs" : ["Multiply_38718_0"] - }, - { - "inputs" : [ "Add_38716", "Parameter_34209" ], - "name" : "Multiply_38719", - "op" : "Multiply", - "outputs" : ["Multiply_38719_0"] - }, - { - "inputs" : [ "Multiply_38717", "Parameter_35256" ], - "name" : "Divide_38722", - "op" : "Divide", - "outputs" : ["Divide_38722_0"] - }, - { - "inputs" : ["Multiply_38721"], - "name" : "Negative_38725", - "op" : "Negative", - "outputs" : ["Negative_38725_0"] - }, - { - "inputs" : [ "Multiply_38720", "Multiply_36801" ], - "name" : "Divide_38724", - "op" : "Divide", - "outputs" : ["Divide_38724_0"] - }, - { - "inputs" : ["Multiply_38719"], - "name" : "Negative_38723", - "op" : "Negative", - "outputs" : ["Negative_38723_0"] - }, - { - "inputs" : [ "Divide_38722", "Parameter_35257" ], - "name" : "Multiply_38726", - "op" : "Multiply", - "outputs" : ["Multiply_38726_0"] - }, - { - "inputs" : [ "Negative_38725", "Parameter_35248" ], - "name" : "Multiply_38729", - "op" : "Multiply", - "outputs" : ["Multiply_38729_0"] - }, - { - "inputs" : [ "Broadcast_36342", "Divide_38724" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38728", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38728_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38723", "Parameter_35240" ], - "name" : "Multiply_38727", - "op" : "Multiply", - "outputs" : ["Multiply_38727_0"] - }, - { - "inputs" : ["Multiply_38726"], - "name" : "Negative_38730", - "op" : "Negative", - "outputs" : ["Negative_38730_0"] - }, - { - "inputs" : [ "Multiply_38729", "Parameter_35249" ], - "name" : "Divide_38733", - "op" : "Divide", - "outputs" : ["Divide_38733_0"] - }, - { - "inputs" : ["ReplaceSlice_38728"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38732", - "op" : "Slice", - "outputs" : ["Slice_38732_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38727", "Parameter_35241" ], - "name" : "Divide_38731", - "op" : "Divide", - "outputs" : ["Divide_38731_0"] - }, - { - "inputs" : [ "Divide_38733", "Parameter_35250" ], - "name" : "Multiply_38735", - "op" : "Multiply", - "outputs" : ["Multiply_38735_0"] - }, - { - "inputs" : [ "Divide_38731", "Parameter_35242" ], - "name" : "Multiply_38734", - "op" : "Multiply", - "outputs" : ["Multiply_38734_0"] - }, - { - "inputs" : ["Multiply_38735"], - "name" : "Negative_38737", - "op" : "Negative", - "outputs" : ["Negative_38737_0"] - }, - { - "inputs" : ["Multiply_38734"], - "name" : "Negative_38736", - "op" : "Negative", - "outputs" : ["Negative_38736_0"] - }, - { - "inputs" : [ "Slice_38732", "Negative_38736" ], - "name" : "Add_38738", - "op" : "Add", - "outputs" : ["Add_38738_0"] - }, - { - "inputs" : [ "ReplaceSlice_38728", "Add_38738" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38739", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38739_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38739"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38740", - "op" : "Slice", - "outputs" : ["Slice_38740_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38740", "Negative_38737" ], - "name" : "Add_38741", - "op" : "Add", - "outputs" : ["Add_38741_0"] - }, - { - "inputs" : [ "ReplaceSlice_38739", "Add_38741" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38742", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38742_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38742"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38743", - "op" : "Slice", - "outputs" : ["Slice_38743_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38743", "Negative_38730" ], - "name" : "Add_38744", - "op" : "Add", - "outputs" : ["Add_38744_0"] - }, - { - "inputs" : [ "ReplaceSlice_38742", "Add_38744" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38745", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38745_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36574", "ReplaceSlice_38745" ], - "name" : "Dot_38749", - "op" : "Dot", - "outputs" : ["Dot_38749_0"] - }, - { - "inputs" : [ "Reshape_36799", "ReplaceSlice_38745" ], - "name" : "Dot_38748", - "op" : "Dot", - "outputs" : ["Dot_38748_0"] - }, - { - "inputs" : [ "ReplaceSlice_38745", "Reshape_36439" ], - "name" : "Dot_38750", - "op" : "Dot", - "outputs" : ["Dot_38750_0"] - }, - { - "inputs" : [ "ReplaceSlice_38745", "Reshape_36410" ], - "name" : "Dot_38746", - "op" : "Dot", - "outputs" : ["Dot_38746_0"] - }, - { - "inputs" : ["ReplaceSlice_38745"], - "name" : "Sum_38747", - "op" : "Sum", - "outputs" : ["Sum_38747_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_38745"], - "name" : "Sum_38751", - "op" : "Sum", - "outputs" : ["Sum_38751_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38749"], - "name" : "Reshape_38755", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38755_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38748"], - "name" : "Reshape_38754", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38754_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38750"], - "name" : "Reshape_38756", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38756_0"] - }, - { - "inputs" : [ "Dot_38746", "Reshape_36633" ], - "name" : "Add_38752", - "op" : "Add", - "outputs" : ["Add_38752_0"] - }, - { - "inputs" : [ "Add_38702", "Sum_38747" ], - "name" : "Add_38753", - "op" : "Add", - "outputs" : ["Add_38753_0"] - }, - { - "inputs" : [ "Add_38699", "Sum_38751" ], - "name" : "Add_38757", - "op" : "Add", - "outputs" : ["Add_38757_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38755"], - "name" : "Reshape_38761", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38761_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38754"], - "name" : "Reshape_38760", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38760_0"] - }, - { - "inputs" : [ "Slice_38715", "Reshape_38756" ], - "name" : "Add_38762", - "op" : "Add", - "outputs" : ["Add_38762_0"] - }, - { - "inputs" : [ "Add_38752", "Parameter_34217" ], - "name" : "Multiply_38758", - "op" : "Multiply", - "outputs" : ["Multiply_38758_0"] - }, - { - "inputs" : [ "Parameter_35227", "Add_38752" ], - "name" : "Multiply_38759", - "op" : "Multiply", - "outputs" : ["Multiply_38759_0"] - }, - { - "inputs" : [ "Add_38711", "Reshape_38761" ], - "name" : "Add_38766", - "op" : "Add", - "outputs" : ["Add_38766_0"] - }, - { - "inputs" : [ "Add_38712", "Reshape_38760" ], - "name" : "Add_38765", - "op" : "Add", - "outputs" : ["Add_38765_0"] - }, - { - "inputs" : [ "ReplaceSlice_38710", "Add_38762" ], - "lower_bounds" : [ 26, 0, 0 ], - "name" : "ReplaceSlice_38767", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38767_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 27, 64, 256 ] - }, - { - "inputs" : ["Multiply_38758"], - "name" : "Negative_38763", - "op" : "Negative", - "outputs" : ["Negative_38763_0"] - }, - { - "inputs" : [ "Multiply_38759", "Multiply_36798" ], - "name" : "Divide_38764", - "op" : "Divide", - "outputs" : ["Divide_38764_0"] - }, - { - "inputs" : ["ReplaceSlice_38767"], - "lower_bounds" : [ 25, 0, 0 ], - "name" : "Slice_38770", - "op" : "Slice", - "outputs" : ["Slice_38770_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 26, 64, 256 ] - }, - { - "inputs" : [ "Negative_38763", "Parameter_35227" ], - "name" : "Multiply_38768", - "op" : "Multiply", - "outputs" : ["Multiply_38768_0"] - }, - { - "inputs" : [ "Multiply_38718", "Divide_38764" ], - "name" : "Add_38769", - "op" : "Add", - "outputs" : ["Add_38769_0"] - }, - { - "inputs" : [ "Multiply_38768", "Parameter_35228" ], - "name" : "Divide_38771", - "op" : "Divide", - "outputs" : ["Divide_38771_0"] - }, - { - "inputs" : [ "Parameter_35212", "Add_38769" ], - "name" : "Multiply_38774", - "op" : "Multiply", - "outputs" : ["Multiply_38774_0"] - }, - { - "inputs" : [ "Add_38769", "Parameter_34220" ], - "name" : "Multiply_38773", - "op" : "Multiply", - "outputs" : ["Multiply_38773_0"] - }, - { - "inputs" : [ "Parameter_35220", "Add_38769" ], - "name" : "Multiply_38772", - "op" : "Multiply", - "outputs" : ["Multiply_38772_0"] - }, - { - "inputs" : [ "Add_38769", "Parameter_34229" ], - "name" : "Multiply_38775", - "op" : "Multiply", - "outputs" : ["Multiply_38775_0"] - }, - { - "inputs" : [ "Divide_38771", "Parameter_35229" ], - "name" : "Multiply_38776", - "op" : "Multiply", - "outputs" : ["Multiply_38776_0"] - }, - { - "inputs" : [ "Multiply_38774", "Multiply_36796" ], - "name" : "Divide_38778", - "op" : "Divide", - "outputs" : ["Divide_38778_0"] - }, - { - "inputs" : ["Multiply_38773"], - "name" : "Negative_38777", - "op" : "Negative", - "outputs" : ["Negative_38777_0"] - }, - { - "inputs" : ["Multiply_38775"], - "name" : "Negative_38779", - "op" : "Negative", - "outputs" : ["Negative_38779_0"] - }, - { - "inputs" : ["Multiply_38776"], - "name" : "Negative_38780", - "op" : "Negative", - "outputs" : ["Negative_38780_0"] - }, - { - "inputs" : [ "Broadcast_36343", "Divide_38778" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38782", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38782_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38777", "Parameter_35212" ], - "name" : "Multiply_38781", - "op" : "Multiply", - "outputs" : ["Multiply_38781_0"] - }, - { - "inputs" : [ "Negative_38779", "Parameter_35220" ], - "name" : "Multiply_38783", - "op" : "Multiply", - "outputs" : ["Multiply_38783_0"] - }, - { - "inputs" : ["ReplaceSlice_38782"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38785", - "op" : "Slice", - "outputs" : ["Slice_38785_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38781", "Parameter_35213" ], - "name" : "Divide_38784", - "op" : "Divide", - "outputs" : ["Divide_38784_0"] - }, - { - "inputs" : [ "Multiply_38783", "Parameter_35221" ], - "name" : "Divide_38786", - "op" : "Divide", - "outputs" : ["Divide_38786_0"] - }, - { - "inputs" : [ "Divide_38784", "Parameter_35214" ], - "name" : "Multiply_38787", - "op" : "Multiply", - "outputs" : ["Multiply_38787_0"] - }, - { - "inputs" : [ "Divide_38786", "Parameter_35222" ], - "name" : "Multiply_38788", - "op" : "Multiply", - "outputs" : ["Multiply_38788_0"] - }, - { - "inputs" : ["Multiply_38787"], - "name" : "Negative_38789", - "op" : "Negative", - "outputs" : ["Negative_38789_0"] - }, - { - "inputs" : ["Multiply_38788"], - "name" : "Negative_38790", - "op" : "Negative", - "outputs" : ["Negative_38790_0"] - }, - { - "inputs" : [ "Slice_38785", "Negative_38789" ], - "name" : "Add_38791", - "op" : "Add", - "outputs" : ["Add_38791_0"] - }, - { - "inputs" : [ "ReplaceSlice_38782", "Add_38791" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38792", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38792_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38792"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38793", - "op" : "Slice", - "outputs" : ["Slice_38793_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38793", "Negative_38790" ], - "name" : "Add_38794", - "op" : "Add", - "outputs" : ["Add_38794_0"] - }, - { - "inputs" : [ "ReplaceSlice_38792", "Add_38794" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38795", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38795_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38795"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38796", - "op" : "Slice", - "outputs" : ["Slice_38796_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38796", "Negative_38780" ], - "name" : "Add_38797", - "op" : "Add", - "outputs" : ["Add_38797_0"] - }, - { - "inputs" : [ "ReplaceSlice_38795", "Add_38797" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38798", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38798_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_38798"], - "name" : "Sum_38804", - "op" : "Sum", - "outputs" : ["Sum_38804_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38798", "Reshape_36437" ], - "name" : "Dot_38803", - "op" : "Dot", - "outputs" : ["Dot_38803_0"] - }, - { - "inputs" : ["ReplaceSlice_38798"], - "name" : "Sum_38802", - "op" : "Sum", - "outputs" : ["Sum_38802_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36573", "ReplaceSlice_38798" ], - "name" : "Dot_38799", - "op" : "Dot", - "outputs" : ["Dot_38799_0"] - }, - { - "inputs" : [ "Reshape_36794", "ReplaceSlice_38798" ], - "name" : "Dot_38801", - "op" : "Dot", - "outputs" : ["Dot_38801_0"] - }, - { - "inputs" : [ "ReplaceSlice_38798", "Reshape_36411" ], - "name" : "Dot_38800", - "op" : "Dot", - "outputs" : ["Dot_38800_0"] - }, - { - "inputs" : [ "Add_38753", "Sum_38804" ], - "name" : "Add_38810", - "op" : "Add", - "outputs" : ["Add_38810_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38803"], - "name" : "Reshape_38809", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38809_0"] - }, - { - "inputs" : [ "Add_38757", "Sum_38802" ], - "name" : "Add_38808", - "op" : "Add", - "outputs" : ["Add_38808_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38799"], - "name" : "Reshape_38805", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38805_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38801"], - "name" : "Reshape_38807", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38807_0"] - }, - { - "inputs" : [ "Dot_38800", "Reshape_36624" ], - "name" : "Add_38806", - "op" : "Add", - "outputs" : ["Add_38806_0"] - }, - { - "inputs" : [ "Slice_38770", "Reshape_38809" ], - "name" : "Add_38815", - "op" : "Add", - "outputs" : ["Add_38815_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38805"], - "name" : "Reshape_38811", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38811_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38807"], - "name" : "Reshape_38814", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38814_0"] - }, - { - "inputs" : [ "Add_38806", "Parameter_34228" ], - "name" : "Multiply_38813", - "op" : "Multiply", - "outputs" : ["Multiply_38813_0"] - }, - { - "inputs" : [ "Parameter_35199", "Add_38806" ], - "name" : "Multiply_38812", - "op" : "Multiply", - "outputs" : ["Multiply_38812_0"] - }, - { - "inputs" : [ "ReplaceSlice_38767", "Add_38815" ], - "lower_bounds" : [ 25, 0, 0 ], - "name" : "ReplaceSlice_38820", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38820_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 26, 64, 256 ] - }, - { - "inputs" : [ "Add_38766", "Reshape_38811" ], - "name" : "Add_38816", - "op" : "Add", - "outputs" : ["Add_38816_0"] - }, - { - "inputs" : [ "Add_38765", "Reshape_38814" ], - "name" : "Add_38819", - "op" : "Add", - "outputs" : ["Add_38819_0"] - }, - { - "inputs" : ["Multiply_38813"], - "name" : "Negative_38818", - "op" : "Negative", - "outputs" : ["Negative_38818_0"] - }, - { - "inputs" : [ "Multiply_38812", "Multiply_36793" ], - "name" : "Divide_38817", - "op" : "Divide", - "outputs" : ["Divide_38817_0"] - }, - { - "inputs" : ["ReplaceSlice_38820"], - "lower_bounds" : [ 24, 0, 0 ], - "name" : "Slice_38823", - "op" : "Slice", - "outputs" : ["Slice_38823_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 25, 64, 256 ] - }, - { - "inputs" : [ "Negative_38818", "Parameter_35199" ], - "name" : "Multiply_38822", - "op" : "Multiply", - "outputs" : ["Multiply_38822_0"] - }, - { - "inputs" : [ "Multiply_38772", "Divide_38817" ], - "name" : "Add_38821", - "op" : "Add", - "outputs" : ["Add_38821_0"] - }, - { - "inputs" : [ "Multiply_38822", "Parameter_35200" ], - "name" : "Divide_38828", - "op" : "Divide", - "outputs" : ["Divide_38828_0"] - }, - { - "inputs" : [ "Add_38821", "Parameter_34240" ], - "name" : "Multiply_38825", - "op" : "Multiply", - "outputs" : ["Multiply_38825_0"] - }, - { - "inputs" : [ "Parameter_35192", "Add_38821" ], - "name" : "Multiply_38824", - "op" : "Multiply", - "outputs" : ["Multiply_38824_0"] - }, - { - "inputs" : [ "Parameter_35184", "Add_38821" ], - "name" : "Multiply_38826", - "op" : "Multiply", - "outputs" : ["Multiply_38826_0"] - }, - { - "inputs" : [ "Add_38821", "Parameter_34231" ], - "name" : "Multiply_38827", - "op" : "Multiply", - "outputs" : ["Multiply_38827_0"] - }, - { - "inputs" : [ "Divide_38828", "Parameter_35201" ], - "name" : "Multiply_38832", - "op" : "Multiply", - "outputs" : ["Multiply_38832_0"] - }, - { - "inputs" : ["Multiply_38825"], - "name" : "Negative_38829", - "op" : "Negative", - "outputs" : ["Negative_38829_0"] - }, - { - "inputs" : [ "Multiply_38826", "Multiply_36791" ], - "name" : "Divide_38830", - "op" : "Divide", - "outputs" : ["Divide_38830_0"] - }, - { - "inputs" : ["Multiply_38827"], - "name" : "Negative_38831", - "op" : "Negative", - "outputs" : ["Negative_38831_0"] - }, - { - "inputs" : ["Multiply_38832"], - "name" : "Negative_38836", - "op" : "Negative", - "outputs" : ["Negative_38836_0"] - }, - { - "inputs" : [ "Negative_38829", "Parameter_35192" ], - "name" : "Multiply_38833", - "op" : "Multiply", - "outputs" : ["Multiply_38833_0"] - }, - { - "inputs" : [ "Broadcast_36344", "Divide_38830" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38834", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38834_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38831", "Parameter_35184" ], - "name" : "Multiply_38835", - "op" : "Multiply", - "outputs" : ["Multiply_38835_0"] - }, - { - "inputs" : [ "Multiply_38833", "Parameter_35193" ], - "name" : "Divide_38837", - "op" : "Divide", - "outputs" : ["Divide_38837_0"] - }, - { - "inputs" : ["ReplaceSlice_38834"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38838", - "op" : "Slice", - "outputs" : ["Slice_38838_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38835", "Parameter_35185" ], - "name" : "Divide_38839", - "op" : "Divide", - "outputs" : ["Divide_38839_0"] - }, - { - "inputs" : [ "Divide_38837", "Parameter_35194" ], - "name" : "Multiply_38840", - "op" : "Multiply", - "outputs" : ["Multiply_38840_0"] - }, - { - "inputs" : [ "Divide_38839", "Parameter_35186" ], - "name" : "Multiply_38841", - "op" : "Multiply", - "outputs" : ["Multiply_38841_0"] - }, - { - "inputs" : ["Multiply_38840"], - "name" : "Negative_38842", - "op" : "Negative", - "outputs" : ["Negative_38842_0"] - }, - { - "inputs" : ["Multiply_38841"], - "name" : "Negative_38843", - "op" : "Negative", - "outputs" : ["Negative_38843_0"] - }, - { - "inputs" : [ "Slice_38838", "Negative_38843" ], - "name" : "Add_38844", - "op" : "Add", - "outputs" : ["Add_38844_0"] - }, - { - "inputs" : [ "ReplaceSlice_38834", "Add_38844" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38845", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38845_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38845"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38846", - "op" : "Slice", - "outputs" : ["Slice_38846_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38846", "Negative_38842" ], - "name" : "Add_38847", - "op" : "Add", - "outputs" : ["Add_38847_0"] - }, - { - "inputs" : [ "ReplaceSlice_38845", "Add_38847" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38848", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38848_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38848"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38849", - "op" : "Slice", - "outputs" : ["Slice_38849_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38849", "Negative_38836" ], - "name" : "Add_38850", - "op" : "Add", - "outputs" : ["Add_38850_0"] - }, - { - "inputs" : [ "ReplaceSlice_38848", "Add_38850" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38851", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38851_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36789", "ReplaceSlice_38851" ], - "name" : "Dot_38852", - "op" : "Dot", - "outputs" : ["Dot_38852_0"] - }, - { - "inputs" : ["ReplaceSlice_38851"], - "name" : "Sum_38854", - "op" : "Sum", - "outputs" : ["Sum_38854_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_38851"], - "name" : "Sum_38856", - "op" : "Sum", - "outputs" : ["Sum_38856_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38851", "Reshape_36436" ], - "name" : "Dot_38855", - "op" : "Dot", - "outputs" : ["Dot_38855_0"] - }, - { - "inputs" : [ "Reshape_36571", "ReplaceSlice_38851" ], - "name" : "Dot_38853", - "op" : "Dot", - "outputs" : ["Dot_38853_0"] - }, - { - "inputs" : [ "ReplaceSlice_38851", "Reshape_36412" ], - "name" : "Dot_38857", - "op" : "Dot", - "outputs" : ["Dot_38857_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38852"], - "name" : "Reshape_38858", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38858_0"] - }, - { - "inputs" : [ "Add_38808", "Sum_38854" ], - "name" : "Add_38860", - "op" : "Add", - "outputs" : ["Add_38860_0"] - }, - { - "inputs" : [ "Add_38810", "Sum_38856" ], - "name" : "Add_38862", - "op" : "Add", - "outputs" : ["Add_38862_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38855"], - "name" : "Reshape_38861", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38861_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38853"], - "name" : "Reshape_38859", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38859_0"] - }, - { - "inputs" : [ "Dot_38857", "Reshape_36623" ], - "name" : "Add_38863", - "op" : "Add", - "outputs" : ["Add_38863_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38858"], - "name" : "Reshape_38864", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38864_0"] - }, - { - "inputs" : [ "Slice_38823", "Reshape_38861" ], - "name" : "Add_38866", - "op" : "Add", - "outputs" : ["Add_38866_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38859"], - "name" : "Reshape_38865", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38865_0"] - }, - { - "inputs" : [ "Parameter_35171", "Add_38863" ], - "name" : "Multiply_38867", - "op" : "Multiply", - "outputs" : ["Multiply_38867_0"] - }, - { - "inputs" : [ "Add_38863", "Parameter_34239" ], - "name" : "Multiply_38868", - "op" : "Multiply", - "outputs" : ["Multiply_38868_0"] - }, - { - "inputs" : [ "Add_38819", "Reshape_38864" ], - "name" : "Add_38869", - "op" : "Add", - "outputs" : ["Add_38869_0"] - }, - { - "inputs" : [ "ReplaceSlice_38820", "Add_38866" ], - "lower_bounds" : [ 24, 0, 0 ], - "name" : "ReplaceSlice_38871", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38871_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 25, 64, 256 ] - }, - { - "inputs" : [ "Add_38816", "Reshape_38865" ], - "name" : "Add_38870", - "op" : "Add", - "outputs" : ["Add_38870_0"] - }, - { - "inputs" : [ "Multiply_38867", "Multiply_36788" ], - "name" : "Divide_38872", - "op" : "Divide", - "outputs" : ["Divide_38872_0"] - }, - { - "inputs" : ["Multiply_38868"], - "name" : "Negative_38873", - "op" : "Negative", - "outputs" : ["Negative_38873_0"] - }, - { - "inputs" : ["ReplaceSlice_38871"], - "lower_bounds" : [ 23, 0, 0 ], - "name" : "Slice_38874", - "op" : "Slice", - "outputs" : ["Slice_38874_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 24, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38824", "Divide_38872" ], - "name" : "Add_38875", - "op" : "Add", - "outputs" : ["Add_38875_0"] - }, - { - "inputs" : [ "Negative_38873", "Parameter_35171" ], - "name" : "Multiply_38876", - "op" : "Multiply", - "outputs" : ["Multiply_38876_0"] - }, - { - "inputs" : [ "Parameter_35164", "Add_38875" ], - "name" : "Multiply_38877", - "op" : "Multiply", - "outputs" : ["Multiply_38877_0"] - }, - { - "inputs" : [ "Parameter_35156", "Add_38875" ], - "name" : "Multiply_38880", - "op" : "Multiply", - "outputs" : ["Multiply_38880_0"] - }, - { - "inputs" : [ "Add_38875", "Parameter_34251" ], - "name" : "Multiply_38879", - "op" : "Multiply", - "outputs" : ["Multiply_38879_0"] - }, - { - "inputs" : [ "Add_38875", "Parameter_34242" ], - "name" : "Multiply_38878", - "op" : "Multiply", - "outputs" : ["Multiply_38878_0"] - }, - { - "inputs" : [ "Multiply_38876", "Parameter_35172" ], - "name" : "Divide_38881", - "op" : "Divide", - "outputs" : ["Divide_38881_0"] - }, - { - "inputs" : [ "Multiply_38880", "Multiply_36786" ], - "name" : "Divide_38884", - "op" : "Divide", - "outputs" : ["Divide_38884_0"] - }, - { - "inputs" : ["Multiply_38879"], - "name" : "Negative_38883", - "op" : "Negative", - "outputs" : ["Negative_38883_0"] - }, - { - "inputs" : ["Multiply_38878"], - "name" : "Negative_38882", - "op" : "Negative", - "outputs" : ["Negative_38882_0"] - }, - { - "inputs" : [ "Divide_38881", "Parameter_35173" ], - "name" : "Multiply_38885", - "op" : "Multiply", - "outputs" : ["Multiply_38885_0"] - }, - { - "inputs" : [ "Broadcast_36345", "Divide_38884" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38888", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38888_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38883", "Parameter_35164" ], - "name" : "Multiply_38887", - "op" : "Multiply", - "outputs" : ["Multiply_38887_0"] - }, - { - "inputs" : [ "Negative_38882", "Parameter_35156" ], - "name" : "Multiply_38886", - "op" : "Multiply", - "outputs" : ["Multiply_38886_0"] - }, - { - "inputs" : ["Multiply_38885"], - "name" : "Negative_38889", - "op" : "Negative", - "outputs" : ["Negative_38889_0"] - }, - { - "inputs" : ["ReplaceSlice_38888"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38892", - "op" : "Slice", - "outputs" : ["Slice_38892_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38887", "Parameter_35165" ], - "name" : "Divide_38891", - "op" : "Divide", - "outputs" : ["Divide_38891_0"] - }, - { - "inputs" : [ "Multiply_38886", "Parameter_35157" ], - "name" : "Divide_38890", - "op" : "Divide", - "outputs" : ["Divide_38890_0"] - }, - { - "inputs" : [ "Divide_38891", "Parameter_35166" ], - "name" : "Multiply_38894", - "op" : "Multiply", - "outputs" : ["Multiply_38894_0"] - }, - { - "inputs" : [ "Divide_38890", "Parameter_35158" ], - "name" : "Multiply_38893", - "op" : "Multiply", - "outputs" : ["Multiply_38893_0"] - }, - { - "inputs" : ["Multiply_38894"], - "name" : "Negative_38896", - "op" : "Negative", - "outputs" : ["Negative_38896_0"] - }, - { - "inputs" : ["Multiply_38893"], - "name" : "Negative_38895", - "op" : "Negative", - "outputs" : ["Negative_38895_0"] - }, - { - "inputs" : [ "Slice_38892", "Negative_38895" ], - "name" : "Add_38897", - "op" : "Add", - "outputs" : ["Add_38897_0"] - }, - { - "inputs" : [ "ReplaceSlice_38888", "Add_38897" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38898", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38898_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38898"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38899", - "op" : "Slice", - "outputs" : ["Slice_38899_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38899", "Negative_38896" ], - "name" : "Add_38900", - "op" : "Add", - "outputs" : ["Add_38900_0"] - }, - { - "inputs" : [ "ReplaceSlice_38898", "Add_38900" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38901", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38901_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38901"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38902", - "op" : "Slice", - "outputs" : ["Slice_38902_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38902", "Negative_38889" ], - "name" : "Add_38903", - "op" : "Add", - "outputs" : ["Add_38903_0"] - }, - { - "inputs" : [ "ReplaceSlice_38901", "Add_38903" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38904", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38904_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_38904"], - "name" : "Sum_38905", - "op" : "Sum", - "outputs" : ["Sum_38905_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36570", "ReplaceSlice_38904" ], - "name" : "Dot_38910", - "op" : "Dot", - "outputs" : ["Dot_38910_0"] - }, - { - "inputs" : [ "Reshape_36784", "ReplaceSlice_38904" ], - "name" : "Dot_38906", - "op" : "Dot", - "outputs" : ["Dot_38906_0"] - }, - { - "inputs" : ["ReplaceSlice_38904"], - "name" : "Sum_38907", - "op" : "Sum", - "outputs" : ["Sum_38907_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_38904", "Reshape_36413" ], - "name" : "Dot_38909", - "op" : "Dot", - "outputs" : ["Dot_38909_0"] - }, - { - "inputs" : [ "ReplaceSlice_38904", "Reshape_36435" ], - "name" : "Dot_38908", - "op" : "Dot", - "outputs" : ["Dot_38908_0"] - }, - { - "inputs" : [ "Add_38860", "Sum_38905" ], - "name" : "Add_38911", - "op" : "Add", - "outputs" : ["Add_38911_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38910"], - "name" : "Reshape_38916", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38916_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38906"], - "name" : "Reshape_38912", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38912_0"] - }, - { - "inputs" : [ "Add_38862", "Sum_38907" ], - "name" : "Add_38913", - "op" : "Add", - "outputs" : ["Add_38913_0"] - }, - { - "inputs" : [ "Dot_38909", "Reshape_36622" ], - "name" : "Add_38915", - "op" : "Add", - "outputs" : ["Add_38915_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38908"], - "name" : "Reshape_38914", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38914_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38916"], - "name" : "Reshape_38921", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38921_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38912"], - "name" : "Reshape_38917", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38917_0"] - }, - { - "inputs" : [ "Add_38915", "Parameter_34250" ], - "name" : "Multiply_38920", - "op" : "Multiply", - "outputs" : ["Multiply_38920_0"] - }, - { - "inputs" : [ "Parameter_35143", "Add_38915" ], - "name" : "Multiply_38919", - "op" : "Multiply", - "outputs" : ["Multiply_38919_0"] - }, - { - "inputs" : [ "Slice_38874", "Reshape_38914" ], - "name" : "Add_38918", - "op" : "Add", - "outputs" : ["Add_38918_0"] - }, - { - "inputs" : [ "Add_38870", "Reshape_38921" ], - "name" : "Add_38926", - "op" : "Add", - "outputs" : ["Add_38926_0"] - }, - { - "inputs" : [ "Add_38869", "Reshape_38917" ], - "name" : "Add_38922", - "op" : "Add", - "outputs" : ["Add_38922_0"] - }, - { - "inputs" : ["Multiply_38920"], - "name" : "Negative_38925", - "op" : "Negative", - "outputs" : ["Negative_38925_0"] - }, - { - "inputs" : [ "Multiply_38919", "Multiply_36783" ], - "name" : "Divide_38924", - "op" : "Divide", - "outputs" : ["Divide_38924_0"] - }, - { - "inputs" : [ "ReplaceSlice_38871", "Add_38918" ], - "lower_bounds" : [ 23, 0, 0 ], - "name" : "ReplaceSlice_38923", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38923_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 24, 64, 256 ] - }, - { - "inputs" : [ "Negative_38925", "Parameter_35143" ], - "name" : "Multiply_38929", - "op" : "Multiply", - "outputs" : ["Multiply_38929_0"] - }, - { - "inputs" : [ "Multiply_38877", "Divide_38924" ], - "name" : "Add_38928", - "op" : "Add", - "outputs" : ["Add_38928_0"] - }, - { - "inputs" : ["ReplaceSlice_38923"], - "lower_bounds" : [ 22, 0, 0 ], - "name" : "Slice_38927", - "op" : "Slice", - "outputs" : ["Slice_38927_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 23, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38929", "Parameter_35144" ], - "name" : "Divide_38934", - "op" : "Divide", - "outputs" : ["Divide_38934_0"] - }, - { - "inputs" : [ "Parameter_35136", "Add_38928" ], - "name" : "Multiply_38930", - "op" : "Multiply", - "outputs" : ["Multiply_38930_0"] - }, - { - "inputs" : [ "Add_38928", "Parameter_34262" ], - "name" : "Multiply_38931", - "op" : "Multiply", - "outputs" : ["Multiply_38931_0"] - }, - { - "inputs" : [ "Parameter_35128", "Add_38928" ], - "name" : "Multiply_38933", - "op" : "Multiply", - "outputs" : ["Multiply_38933_0"] - }, - { - "inputs" : [ "Add_38928", "Parameter_34253" ], - "name" : "Multiply_38932", - "op" : "Multiply", - "outputs" : ["Multiply_38932_0"] - }, - { - "inputs" : [ "Divide_38934", "Parameter_35145" ], - "name" : "Multiply_38938", - "op" : "Multiply", - "outputs" : ["Multiply_38938_0"] - }, - { - "inputs" : ["Multiply_38931"], - "name" : "Negative_38935", - "op" : "Negative", - "outputs" : ["Negative_38935_0"] - }, - { - "inputs" : [ "Multiply_38933", "Multiply_36781" ], - "name" : "Divide_38937", - "op" : "Divide", - "outputs" : ["Divide_38937_0"] - }, - { - "inputs" : ["Multiply_38932"], - "name" : "Negative_38936", - "op" : "Negative", - "outputs" : ["Negative_38936_0"] - }, - { - "inputs" : ["Multiply_38938"], - "name" : "Negative_38942", - "op" : "Negative", - "outputs" : ["Negative_38942_0"] - }, - { - "inputs" : [ "Negative_38935", "Parameter_35136" ], - "name" : "Multiply_38939", - "op" : "Multiply", - "outputs" : ["Multiply_38939_0"] - }, - { - "inputs" : [ "Broadcast_36346", "Divide_38937" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38941", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38941_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38936", "Parameter_35128" ], - "name" : "Multiply_38940", - "op" : "Multiply", - "outputs" : ["Multiply_38940_0"] - }, - { - "inputs" : [ "Multiply_38939", "Parameter_35137" ], - "name" : "Divide_38943", - "op" : "Divide", - "outputs" : ["Divide_38943_0"] - }, - { - "inputs" : ["ReplaceSlice_38941"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38945", - "op" : "Slice", - "outputs" : ["Slice_38945_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38940", "Parameter_35129" ], - "name" : "Divide_38944", - "op" : "Divide", - "outputs" : ["Divide_38944_0"] - }, - { - "inputs" : [ "Divide_38943", "Parameter_35138" ], - "name" : "Multiply_38946", - "op" : "Multiply", - "outputs" : ["Multiply_38946_0"] - }, - { - "inputs" : [ "Divide_38944", "Parameter_35130" ], - "name" : "Multiply_38947", - "op" : "Multiply", - "outputs" : ["Multiply_38947_0"] - }, - { - "inputs" : ["Multiply_38946"], - "name" : "Negative_38948", - "op" : "Negative", - "outputs" : ["Negative_38948_0"] - }, - { - "inputs" : ["Multiply_38947"], - "name" : "Negative_38949", - "op" : "Negative", - "outputs" : ["Negative_38949_0"] - }, - { - "inputs" : [ "Slice_38945", "Negative_38949" ], - "name" : "Add_38950", - "op" : "Add", - "outputs" : ["Add_38950_0"] - }, - { - "inputs" : [ "ReplaceSlice_38941", "Add_38950" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_38951", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38951_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_38951"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_38952", - "op" : "Slice", - "outputs" : ["Slice_38952_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_38952", "Negative_38948" ], - "name" : "Add_38953", - "op" : "Add", - "outputs" : ["Add_38953_0"] - }, - { - "inputs" : [ "ReplaceSlice_38951", "Add_38953" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_38954", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38954_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_38954"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_38955", - "op" : "Slice", - "outputs" : ["Slice_38955_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_38955", "Negative_38942" ], - "name" : "Add_38956", - "op" : "Add", - "outputs" : ["Add_38956_0"] - }, - { - "inputs" : [ "ReplaceSlice_38954", "Add_38956" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_38957", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38957_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_38957"], - "name" : "Sum_38961", - "op" : "Sum", - "outputs" : ["Sum_38961_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36779", "ReplaceSlice_38957" ], - "name" : "Dot_38962", - "op" : "Dot", - "outputs" : ["Dot_38962_0"] - }, - { - "inputs" : [ "Reshape_36569", "ReplaceSlice_38957" ], - "name" : "Dot_38960", - "op" : "Dot", - "outputs" : ["Dot_38960_0"] - }, - { - "inputs" : [ "ReplaceSlice_38957", "Reshape_36409" ], - "name" : "Dot_38963", - "op" : "Dot", - "outputs" : ["Dot_38963_0"] - }, - { - "inputs" : [ "ReplaceSlice_38957", "Reshape_36434" ], - "name" : "Dot_38958", - "op" : "Dot", - "outputs" : ["Dot_38958_0"] - }, - { - "inputs" : ["ReplaceSlice_38957"], - "name" : "Sum_38959", - "op" : "Sum", - "outputs" : ["Sum_38959_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Add_38913", "Sum_38961" ], - "name" : "Add_38967", - "op" : "Add", - "outputs" : ["Add_38967_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38962"], - "name" : "Reshape_38968", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38968_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38960"], - "name" : "Reshape_38966", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_38966_0"] - }, - { - "inputs" : [ "Dot_38963", "Reshape_36621" ], - "name" : "Add_38969", - "op" : "Add", - "outputs" : ["Add_38969_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_38958"], - "name" : "Reshape_38964", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_38964_0"] - }, - { - "inputs" : [ "Add_38911", "Sum_38959" ], - "name" : "Add_38965", - "op" : "Add", - "outputs" : ["Add_38965_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38968"], - "name" : "Reshape_38972", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38972_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_38966"], - "name" : "Reshape_38971", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_38971_0"] - }, - { - "inputs" : [ "Parameter_35115", "Add_38969" ], - "name" : "Multiply_38973", - "op" : "Multiply", - "outputs" : ["Multiply_38973_0"] - }, - { - "inputs" : [ "Add_38969", "Parameter_34261" ], - "name" : "Multiply_38974", - "op" : "Multiply", - "outputs" : ["Multiply_38974_0"] - }, - { - "inputs" : [ "Slice_38927", "Reshape_38964" ], - "name" : "Add_38970", - "op" : "Add", - "outputs" : ["Add_38970_0"] - }, - { - "inputs" : [ "Add_38922", "Reshape_38972" ], - "name" : "Add_38977", - "op" : "Add", - "outputs" : ["Add_38977_0"] - }, - { - "inputs" : [ "Add_38926", "Reshape_38971" ], - "name" : "Add_38976", - "op" : "Add", - "outputs" : ["Add_38976_0"] - }, - { - "inputs" : [ "Multiply_38973", "Multiply_36778" ], - "name" : "Divide_38978", - "op" : "Divide", - "outputs" : ["Divide_38978_0"] - }, - { - "inputs" : ["Multiply_38974"], - "name" : "Negative_38979", - "op" : "Negative", - "outputs" : ["Negative_38979_0"] - }, - { - "inputs" : [ "ReplaceSlice_38923", "Add_38970" ], - "lower_bounds" : [ 22, 0, 0 ], - "name" : "ReplaceSlice_38975", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38975_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 23, 64, 256 ] - }, - { - "inputs" : [ "Multiply_38930", "Divide_38978" ], - "name" : "Add_38981", - "op" : "Add", - "outputs" : ["Add_38981_0"] - }, - { - "inputs" : [ "Negative_38979", "Parameter_35115" ], - "name" : "Multiply_38982", - "op" : "Multiply", - "outputs" : ["Multiply_38982_0"] - }, - { - "inputs" : ["ReplaceSlice_38975"], - "lower_bounds" : [ 21, 0, 0 ], - "name" : "Slice_38980", - "op" : "Slice", - "outputs" : ["Slice_38980_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 22, 64, 256 ] - }, - { - "inputs" : [ "Add_38981", "Parameter_34273" ], - "name" : "Multiply_38985", - "op" : "Multiply", - "outputs" : ["Multiply_38985_0"] - }, - { - "inputs" : [ "Parameter_35108", "Add_38981" ], - "name" : "Multiply_38984", - "op" : "Multiply", - "outputs" : ["Multiply_38984_0"] - }, - { - "inputs" : [ "Parameter_35100", "Add_38981" ], - "name" : "Multiply_38983", - "op" : "Multiply", - "outputs" : ["Multiply_38983_0"] - }, - { - "inputs" : [ "Add_38981", "Parameter_34264" ], - "name" : "Multiply_38986", - "op" : "Multiply", - "outputs" : ["Multiply_38986_0"] - }, - { - "inputs" : [ "Multiply_38982", "Parameter_35116" ], - "name" : "Divide_38987", - "op" : "Divide", - "outputs" : ["Divide_38987_0"] - }, - { - "inputs" : ["Multiply_38985"], - "name" : "Negative_38989", - "op" : "Negative", - "outputs" : ["Negative_38989_0"] - }, - { - "inputs" : [ "Multiply_38983", "Multiply_36776" ], - "name" : "Divide_38988", - "op" : "Divide", - "outputs" : ["Divide_38988_0"] - }, - { - "inputs" : ["Multiply_38986"], - "name" : "Negative_38990", - "op" : "Negative", - "outputs" : ["Negative_38990_0"] - }, - { - "inputs" : [ "Divide_38987", "Parameter_35117" ], - "name" : "Multiply_38991", - "op" : "Multiply", - "outputs" : ["Multiply_38991_0"] - }, - { - "inputs" : [ "Negative_38989", "Parameter_35108" ], - "name" : "Multiply_38993", - "op" : "Multiply", - "outputs" : ["Multiply_38993_0"] - }, - { - "inputs" : [ "Broadcast_36347", "Divide_38988" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_38992", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_38992_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_38990", "Parameter_35100" ], - "name" : "Multiply_38994", - "op" : "Multiply", - "outputs" : ["Multiply_38994_0"] - }, - { - "inputs" : ["Multiply_38991"], - "name" : "Negative_38995", - "op" : "Negative", - "outputs" : ["Negative_38995_0"] - }, - { - "inputs" : [ "Multiply_38993", "Parameter_35109" ], - "name" : "Divide_38997", - "op" : "Divide", - "outputs" : ["Divide_38997_0"] - }, - { - "inputs" : ["ReplaceSlice_38992"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_38996", - "op" : "Slice", - "outputs" : ["Slice_38996_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_38994", "Parameter_35101" ], - "name" : "Divide_38998", - "op" : "Divide", - "outputs" : ["Divide_38998_0"] - }, - { - "inputs" : [ "Divide_38997", "Parameter_35110" ], - "name" : "Multiply_38999", - "op" : "Multiply", - "outputs" : ["Multiply_38999_0"] - }, - { - "inputs" : [ "Divide_38998", "Parameter_35102" ], - "name" : "Multiply_39000", - "op" : "Multiply", - "outputs" : ["Multiply_39000_0"] - }, - { - "inputs" : ["Multiply_38999"], - "name" : "Negative_39001", - "op" : "Negative", - "outputs" : ["Negative_39001_0"] - }, - { - "inputs" : ["Multiply_39000"], - "name" : "Negative_39002", - "op" : "Negative", - "outputs" : ["Negative_39002_0"] - }, - { - "inputs" : [ "Slice_38996", "Negative_39002" ], - "name" : "Add_39003", - "op" : "Add", - "outputs" : ["Add_39003_0"] - }, - { - "inputs" : [ "ReplaceSlice_38992", "Add_39003" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39004", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39004_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39004"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39005", - "op" : "Slice", - "outputs" : ["Slice_39005_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39005", "Negative_39001" ], - "name" : "Add_39006", - "op" : "Add", - "outputs" : ["Add_39006_0"] - }, - { - "inputs" : [ "ReplaceSlice_39004", "Add_39006" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39007", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39007_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39007"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39008", - "op" : "Slice", - "outputs" : ["Slice_39008_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39008", "Negative_38995" ], - "name" : "Add_39009", - "op" : "Add", - "outputs" : ["Add_39009_0"] - }, - { - "inputs" : [ "ReplaceSlice_39007", "Add_39009" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39010", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39010_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_39010"], - "name" : "Sum_39015", - "op" : "Sum", - "outputs" : ["Sum_39015_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36774", "ReplaceSlice_39010" ], - "name" : "Dot_39012", - "op" : "Dot", - "outputs" : ["Dot_39012_0"] - }, - { - "inputs" : [ "ReplaceSlice_39010", "Reshape_36414" ], - "name" : "Dot_39013", - "op" : "Dot", - "outputs" : ["Dot_39013_0"] - }, - { - "inputs" : [ "ReplaceSlice_39010", "Reshape_36432" ], - "name" : "Dot_39014", - "op" : "Dot", - "outputs" : ["Dot_39014_0"] - }, - { - "inputs" : ["ReplaceSlice_39010"], - "name" : "Sum_39016", - "op" : "Sum", - "outputs" : ["Sum_39016_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36568", "ReplaceSlice_39010" ], - "name" : "Dot_39011", - "op" : "Dot", - "outputs" : ["Dot_39011_0"] - }, - { - "inputs" : [ "Add_38965", "Sum_39015" ], - "name" : "Add_39021", - "op" : "Add", - "outputs" : ["Add_39021_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39012"], - "name" : "Reshape_39018", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39018_0"] - }, - { - "inputs" : [ "Dot_39013", "Reshape_36631" ], - "name" : "Add_39019", - "op" : "Add", - "outputs" : ["Add_39019_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39014"], - "name" : "Reshape_39020", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39020_0"] - }, - { - "inputs" : [ "Add_38967", "Sum_39016" ], - "name" : "Add_39022", - "op" : "Add", - "outputs" : ["Add_39022_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39011"], - "name" : "Reshape_39017", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39017_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39018"], - "name" : "Reshape_39024", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39024_0"] - }, - { - "inputs" : [ "Parameter_35087", "Add_39019" ], - "name" : "Multiply_39025", - "op" : "Multiply", - "outputs" : ["Multiply_39025_0"] - }, - { - "inputs" : [ "Add_39019", "Parameter_34272" ], - "name" : "Multiply_39026", - "op" : "Multiply", - "outputs" : ["Multiply_39026_0"] - }, - { - "inputs" : [ "Slice_38980", "Reshape_39020" ], - "name" : "Add_39027", - "op" : "Add", - "outputs" : ["Add_39027_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39017"], - "name" : "Reshape_39023", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39023_0"] - }, - { - "inputs" : [ "Add_38977", "Reshape_39024" ], - "name" : "Add_39029", - "op" : "Add", - "outputs" : ["Add_39029_0"] - }, - { - "inputs" : [ "Multiply_39025", "Multiply_36773" ], - "name" : "Divide_39030", - "op" : "Divide", - "outputs" : ["Divide_39030_0"] - }, - { - "inputs" : ["Multiply_39026"], - "name" : "Negative_39031", - "op" : "Negative", - "outputs" : ["Negative_39031_0"] - }, - { - "inputs" : [ "ReplaceSlice_38975", "Add_39027" ], - "lower_bounds" : [ 21, 0, 0 ], - "name" : "ReplaceSlice_39032", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39032_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 22, 64, 256 ] - }, - { - "inputs" : [ "Add_38976", "Reshape_39023" ], - "name" : "Add_39028", - "op" : "Add", - "outputs" : ["Add_39028_0"] - }, - { - "inputs" : [ "Multiply_38984", "Divide_39030" ], - "name" : "Add_39033", - "op" : "Add", - "outputs" : ["Add_39033_0"] - }, - { - "inputs" : [ "Negative_39031", "Parameter_35087" ], - "name" : "Multiply_39034", - "op" : "Multiply", - "outputs" : ["Multiply_39034_0"] - }, - { - "inputs" : ["ReplaceSlice_39032"], - "lower_bounds" : [ 20, 0, 0 ], - "name" : "Slice_39035", - "op" : "Slice", - "outputs" : ["Slice_39035_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 21, 64, 256 ] - }, - { - "inputs" : [ "Add_39033", "Parameter_34275" ], - "name" : "Multiply_39038", - "op" : "Multiply", - "outputs" : ["Multiply_39038_0"] - }, - { - "inputs" : [ "Parameter_35080", "Add_39033" ], - "name" : "Multiply_39036", - "op" : "Multiply", - "outputs" : ["Multiply_39036_0"] - }, - { - "inputs" : [ "Parameter_35072", "Add_39033" ], - "name" : "Multiply_39037", - "op" : "Multiply", - "outputs" : ["Multiply_39037_0"] - }, - { - "inputs" : [ "Add_39033", "Parameter_34284" ], - "name" : "Multiply_39039", - "op" : "Multiply", - "outputs" : ["Multiply_39039_0"] - }, - { - "inputs" : [ "Multiply_39034", "Parameter_35088" ], - "name" : "Divide_39040", - "op" : "Divide", - "outputs" : ["Divide_39040_0"] - }, - { - "inputs" : ["Multiply_39038"], - "name" : "Negative_39042", - "op" : "Negative", - "outputs" : ["Negative_39042_0"] - }, - { - "inputs" : [ "Multiply_39037", "Multiply_36771" ], - "name" : "Divide_39041", - "op" : "Divide", - "outputs" : ["Divide_39041_0"] - }, - { - "inputs" : ["Multiply_39039"], - "name" : "Negative_39043", - "op" : "Negative", - "outputs" : ["Negative_39043_0"] - }, - { - "inputs" : [ "Divide_39040", "Parameter_35089" ], - "name" : "Multiply_39044", - "op" : "Multiply", - "outputs" : ["Multiply_39044_0"] - }, - { - "inputs" : [ "Negative_39042", "Parameter_35072" ], - "name" : "Multiply_39046", - "op" : "Multiply", - "outputs" : ["Multiply_39046_0"] - }, - { - "inputs" : [ "Broadcast_36348", "Divide_39041" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39045", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39045_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39043", "Parameter_35080" ], - "name" : "Multiply_39047", - "op" : "Multiply", - "outputs" : ["Multiply_39047_0"] - }, - { - "inputs" : ["Multiply_39044"], - "name" : "Negative_39048", - "op" : "Negative", - "outputs" : ["Negative_39048_0"] - }, - { - "inputs" : [ "Multiply_39046", "Parameter_35073" ], - "name" : "Divide_39050", - "op" : "Divide", - "outputs" : ["Divide_39050_0"] - }, - { - "inputs" : ["ReplaceSlice_39045"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39049", - "op" : "Slice", - "outputs" : ["Slice_39049_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39047", "Parameter_35081" ], - "name" : "Divide_39051", - "op" : "Divide", - "outputs" : ["Divide_39051_0"] - }, - { - "inputs" : [ "Divide_39050", "Parameter_35074" ], - "name" : "Multiply_39052", - "op" : "Multiply", - "outputs" : ["Multiply_39052_0"] - }, - { - "inputs" : [ "Divide_39051", "Parameter_35082" ], - "name" : "Multiply_39053", - "op" : "Multiply", - "outputs" : ["Multiply_39053_0"] - }, - { - "inputs" : ["Multiply_39052"], - "name" : "Negative_39054", - "op" : "Negative", - "outputs" : ["Negative_39054_0"] - }, - { - "inputs" : ["Multiply_39053"], - "name" : "Negative_39055", - "op" : "Negative", - "outputs" : ["Negative_39055_0"] - }, - { - "inputs" : [ "Slice_39049", "Negative_39054" ], - "name" : "Add_39056", - "op" : "Add", - "outputs" : ["Add_39056_0"] - }, - { - "inputs" : [ "ReplaceSlice_39045", "Add_39056" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39057", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39057_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39057"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39058", - "op" : "Slice", - "outputs" : ["Slice_39058_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39058", "Negative_39055" ], - "name" : "Add_39059", - "op" : "Add", - "outputs" : ["Add_39059_0"] - }, - { - "inputs" : [ "ReplaceSlice_39057", "Add_39059" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39060", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39060_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39060"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39061", - "op" : "Slice", - "outputs" : ["Slice_39061_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39061", "Negative_39048" ], - "name" : "Add_39062", - "op" : "Add", - "outputs" : ["Add_39062_0"] - }, - { - "inputs" : [ "ReplaceSlice_39060", "Add_39062" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39063", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39063_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_39063"], - "name" : "Sum_39068", - "op" : "Sum", - "outputs" : ["Sum_39068_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_39063"], - "name" : "Sum_39064", - "op" : "Sum", - "outputs" : ["Sum_39064_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36567", "ReplaceSlice_39063" ], - "name" : "Dot_39066", - "op" : "Dot", - "outputs" : ["Dot_39066_0"] - }, - { - "inputs" : [ "ReplaceSlice_39063", "Reshape_36433" ], - "name" : "Dot_39067", - "op" : "Dot", - "outputs" : ["Dot_39067_0"] - }, - { - "inputs" : [ "ReplaceSlice_39063", "Reshape_36423" ], - "name" : "Dot_39065", - "op" : "Dot", - "outputs" : ["Dot_39065_0"] - }, - { - "inputs" : [ "Reshape_36769", "ReplaceSlice_39063" ], - "name" : "Dot_39069", - "op" : "Dot", - "outputs" : ["Dot_39069_0"] - }, - { - "inputs" : [ "Add_39022", "Sum_39068" ], - "name" : "Add_39074", - "op" : "Add", - "outputs" : ["Add_39074_0"] - }, - { - "inputs" : [ "Add_39021", "Sum_39064" ], - "name" : "Add_39070", - "op" : "Add", - "outputs" : ["Add_39070_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39066"], - "name" : "Reshape_39072", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39072_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39067"], - "name" : "Reshape_39073", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39073_0"] - }, - { - "inputs" : [ "Dot_39065", "Reshape_36630" ], - "name" : "Add_39071", - "op" : "Add", - "outputs" : ["Add_39071_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39069"], - "name" : "Reshape_39075", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39075_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39072"], - "name" : "Reshape_39078", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39078_0"] - }, - { - "inputs" : [ "Slice_39035", "Reshape_39073" ], - "name" : "Add_39079", - "op" : "Add", - "outputs" : ["Add_39079_0"] - }, - { - "inputs" : [ "Parameter_35059", "Add_39071" ], - "name" : "Multiply_39076", - "op" : "Multiply", - "outputs" : ["Multiply_39076_0"] - }, - { - "inputs" : [ "Add_39071", "Parameter_34283" ], - "name" : "Multiply_39077", - "op" : "Multiply", - "outputs" : ["Multiply_39077_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39075"], - "name" : "Reshape_39080", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39080_0"] - }, - { - "inputs" : [ "Add_39028", "Reshape_39078" ], - "name" : "Add_39083", - "op" : "Add", - "outputs" : ["Add_39083_0"] - }, - { - "inputs" : [ "ReplaceSlice_39032", "Add_39079" ], - "lower_bounds" : [ 20, 0, 0 ], - "name" : "ReplaceSlice_39084", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39084_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 21, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39076", "Multiply_36768" ], - "name" : "Divide_39081", - "op" : "Divide", - "outputs" : ["Divide_39081_0"] - }, - { - "inputs" : ["Multiply_39077"], - "name" : "Negative_39082", - "op" : "Negative", - "outputs" : ["Negative_39082_0"] - }, - { - "inputs" : [ "Add_39029", "Reshape_39080" ], - "name" : "Add_39085", - "op" : "Add", - "outputs" : ["Add_39085_0"] - }, - { - "inputs" : ["ReplaceSlice_39084"], - "lower_bounds" : [ 19, 0, 0 ], - "name" : "Slice_39088", - "op" : "Slice", - "outputs" : ["Slice_39088_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 20, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39036", "Divide_39081" ], - "name" : "Add_39086", - "op" : "Add", - "outputs" : ["Add_39086_0"] - }, - { - "inputs" : [ "Negative_39082", "Parameter_35059" ], - "name" : "Multiply_39087", - "op" : "Multiply", - "outputs" : ["Multiply_39087_0"] - }, - { - "inputs" : [ "Add_39086", "Parameter_34295" ], - "name" : "Multiply_39089", - "op" : "Multiply", - "outputs" : ["Multiply_39089_0"] - }, - { - "inputs" : [ "Add_39086", "Parameter_34286" ], - "name" : "Multiply_39091", - "op" : "Multiply", - "outputs" : ["Multiply_39091_0"] - }, - { - "inputs" : [ "Parameter_35052", "Add_39086" ], - "name" : "Multiply_39090", - "op" : "Multiply", - "outputs" : ["Multiply_39090_0"] - }, - { - "inputs" : [ "Parameter_35044", "Add_39086" ], - "name" : "Multiply_39092", - "op" : "Multiply", - "outputs" : ["Multiply_39092_0"] - }, - { - "inputs" : [ "Multiply_39087", "Parameter_35060" ], - "name" : "Divide_39093", - "op" : "Divide", - "outputs" : ["Divide_39093_0"] - }, - { - "inputs" : ["Multiply_39089"], - "name" : "Negative_39094", - "op" : "Negative", - "outputs" : ["Negative_39094_0"] - }, - { - "inputs" : ["Multiply_39091"], - "name" : "Negative_39095", - "op" : "Negative", - "outputs" : ["Negative_39095_0"] - }, - { - "inputs" : [ "Multiply_39092", "Multiply_36766" ], - "name" : "Divide_39096", - "op" : "Divide", - "outputs" : ["Divide_39096_0"] - }, - { - "inputs" : [ "Divide_39093", "Parameter_35061" ], - "name" : "Multiply_39097", - "op" : "Multiply", - "outputs" : ["Multiply_39097_0"] - }, - { - "inputs" : [ "Negative_39094", "Parameter_35052" ], - "name" : "Multiply_39098", - "op" : "Multiply", - "outputs" : ["Multiply_39098_0"] - }, - { - "inputs" : [ "Negative_39095", "Parameter_35044" ], - "name" : "Multiply_39099", - "op" : "Multiply", - "outputs" : ["Multiply_39099_0"] - }, - { - "inputs" : [ "Broadcast_36349", "Divide_39096" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39100", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39100_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_39097"], - "name" : "Negative_39101", - "op" : "Negative", - "outputs" : ["Negative_39101_0"] - }, - { - "inputs" : [ "Multiply_39098", "Parameter_35053" ], - "name" : "Divide_39102", - "op" : "Divide", - "outputs" : ["Divide_39102_0"] - }, - { - "inputs" : [ "Multiply_39099", "Parameter_35045" ], - "name" : "Divide_39103", - "op" : "Divide", - "outputs" : ["Divide_39103_0"] - }, - { - "inputs" : ["ReplaceSlice_39100"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39104", - "op" : "Slice", - "outputs" : ["Slice_39104_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39102", "Parameter_35054" ], - "name" : "Multiply_39105", - "op" : "Multiply", - "outputs" : ["Multiply_39105_0"] - }, - { - "inputs" : [ "Divide_39103", "Parameter_35046" ], - "name" : "Multiply_39106", - "op" : "Multiply", - "outputs" : ["Multiply_39106_0"] - }, - { - "inputs" : ["Multiply_39105"], - "name" : "Negative_39107", - "op" : "Negative", - "outputs" : ["Negative_39107_0"] - }, - { - "inputs" : ["Multiply_39106"], - "name" : "Negative_39108", - "op" : "Negative", - "outputs" : ["Negative_39108_0"] - }, - { - "inputs" : [ "Slice_39104", "Negative_39108" ], - "name" : "Add_39109", - "op" : "Add", - "outputs" : ["Add_39109_0"] - }, - { - "inputs" : [ "ReplaceSlice_39100", "Add_39109" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39110", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39110_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39110"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39111", - "op" : "Slice", - "outputs" : ["Slice_39111_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39111", "Negative_39107" ], - "name" : "Add_39112", - "op" : "Add", - "outputs" : ["Add_39112_0"] - }, - { - "inputs" : [ "ReplaceSlice_39110", "Add_39112" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39113", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39113_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39113"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39114", - "op" : "Slice", - "outputs" : ["Slice_39114_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39114", "Negative_39101" ], - "name" : "Add_39115", - "op" : "Add", - "outputs" : ["Add_39115_0"] - }, - { - "inputs" : [ "ReplaceSlice_39113", "Add_39115" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39116", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39116_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36566", "ReplaceSlice_39116" ], - "name" : "Dot_39117", - "op" : "Dot", - "outputs" : ["Dot_39117_0"] - }, - { - "inputs" : [ "ReplaceSlice_39116", "Reshape_36420" ], - "name" : "Dot_39120", - "op" : "Dot", - "outputs" : ["Dot_39120_0"] - }, - { - "inputs" : ["ReplaceSlice_39116"], - "name" : "Sum_39121", - "op" : "Sum", - "outputs" : ["Sum_39121_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_39116"], - "name" : "Sum_39122", - "op" : "Sum", - "outputs" : ["Sum_39122_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39116", "Reshape_36438" ], - "name" : "Dot_39119", - "op" : "Dot", - "outputs" : ["Dot_39119_0"] - }, - { - "inputs" : [ "Reshape_36764", "ReplaceSlice_39116" ], - "name" : "Dot_39118", - "op" : "Dot", - "outputs" : ["Dot_39118_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39117"], - "name" : "Reshape_39123", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39123_0"] - }, - { - "inputs" : [ "Dot_39120", "Reshape_36629" ], - "name" : "Add_39126", - "op" : "Add", - "outputs" : ["Add_39126_0"] - }, - { - "inputs" : [ "Add_39074", "Sum_39121" ], - "name" : "Add_39127", - "op" : "Add", - "outputs" : ["Add_39127_0"] - }, - { - "inputs" : [ "Add_39070", "Sum_39122" ], - "name" : "Add_39128", - "op" : "Add", - "outputs" : ["Add_39128_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39119"], - "name" : "Reshape_39125", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39125_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39118"], - "name" : "Reshape_39124", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39124_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39123"], - "name" : "Reshape_39129", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39129_0"] - }, - { - "inputs" : [ "Add_39126", "Parameter_34294" ], - "name" : "Multiply_39133", - "op" : "Multiply", - "outputs" : ["Multiply_39133_0"] - }, - { - "inputs" : [ "Parameter_35031", "Add_39126" ], - "name" : "Multiply_39132", - "op" : "Multiply", - "outputs" : ["Multiply_39132_0"] - }, - { - "inputs" : [ "Slice_39088", "Reshape_39125" ], - "name" : "Add_39131", - "op" : "Add", - "outputs" : ["Add_39131_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39124"], - "name" : "Reshape_39130", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39130_0"] - }, - { - "inputs" : [ "Add_39083", "Reshape_39129" ], - "name" : "Add_39134", - "op" : "Add", - "outputs" : ["Add_39134_0"] - }, - { - "inputs" : ["Multiply_39133"], - "name" : "Negative_39138", - "op" : "Negative", - "outputs" : ["Negative_39138_0"] - }, - { - "inputs" : [ "Multiply_39132", "Multiply_36763" ], - "name" : "Divide_39137", - "op" : "Divide", - "outputs" : ["Divide_39137_0"] - }, - { - "inputs" : [ "ReplaceSlice_39084", "Add_39131" ], - "lower_bounds" : [ 19, 0, 0 ], - "name" : "ReplaceSlice_39136", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39136_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 20, 64, 256 ] - }, - { - "inputs" : [ "Add_39085", "Reshape_39130" ], - "name" : "Add_39135", - "op" : "Add", - "outputs" : ["Add_39135_0"] - }, - { - "inputs" : [ "Negative_39138", "Parameter_35031" ], - "name" : "Multiply_39141", - "op" : "Multiply", - "outputs" : ["Multiply_39141_0"] - }, - { - "inputs" : [ "Multiply_39090", "Divide_39137" ], - "name" : "Add_39140", - "op" : "Add", - "outputs" : ["Add_39140_0"] - }, - { - "inputs" : ["ReplaceSlice_39136"], - "lower_bounds" : [ 18, 0, 0 ], - "name" : "Slice_39139", - "op" : "Slice", - "outputs" : ["Slice_39139_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 19, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39141", "Parameter_35032" ], - "name" : "Divide_39146", - "op" : "Divide", - "outputs" : ["Divide_39146_0"] - }, - { - "inputs" : [ "Parameter_35024", "Add_39140" ], - "name" : "Multiply_39142", - "op" : "Multiply", - "outputs" : ["Multiply_39142_0"] - }, - { - "inputs" : [ "Add_39140", "Parameter_34297" ], - "name" : "Multiply_39143", - "op" : "Multiply", - "outputs" : ["Multiply_39143_0"] - }, - { - "inputs" : [ "Add_39140", "Parameter_34306" ], - "name" : "Multiply_39144", - "op" : "Multiply", - "outputs" : ["Multiply_39144_0"] - }, - { - "inputs" : [ "Parameter_35016", "Add_39140" ], - "name" : "Multiply_39145", - "op" : "Multiply", - "outputs" : ["Multiply_39145_0"] - }, - { - "inputs" : [ "Divide_39146", "Parameter_35033" ], - "name" : "Multiply_39150", - "op" : "Multiply", - "outputs" : ["Multiply_39150_0"] - }, - { - "inputs" : ["Multiply_39143"], - "name" : "Negative_39147", - "op" : "Negative", - "outputs" : ["Negative_39147_0"] - }, - { - "inputs" : ["Multiply_39144"], - "name" : "Negative_39148", - "op" : "Negative", - "outputs" : ["Negative_39148_0"] - }, - { - "inputs" : [ "Multiply_39145", "Multiply_36761" ], - "name" : "Divide_39149", - "op" : "Divide", - "outputs" : ["Divide_39149_0"] - }, - { - "inputs" : ["Multiply_39150"], - "name" : "Negative_39154", - "op" : "Negative", - "outputs" : ["Negative_39154_0"] - }, - { - "inputs" : [ "Negative_39147", "Parameter_35016" ], - "name" : "Multiply_39151", - "op" : "Multiply", - "outputs" : ["Multiply_39151_0"] - }, - { - "inputs" : [ "Negative_39148", "Parameter_35024" ], - "name" : "Multiply_39152", - "op" : "Multiply", - "outputs" : ["Multiply_39152_0"] - }, - { - "inputs" : [ "Broadcast_36350", "Divide_39149" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39153", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39153_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_39151", "Parameter_35017" ], - "name" : "Divide_39155", - "op" : "Divide", - "outputs" : ["Divide_39155_0"] - }, - { - "inputs" : [ "Multiply_39152", "Parameter_35025" ], - "name" : "Divide_39156", - "op" : "Divide", - "outputs" : ["Divide_39156_0"] - }, - { - "inputs" : ["ReplaceSlice_39153"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39157", - "op" : "Slice", - "outputs" : ["Slice_39157_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39155", "Parameter_35018" ], - "name" : "Multiply_39158", - "op" : "Multiply", - "outputs" : ["Multiply_39158_0"] - }, - { - "inputs" : [ "Divide_39156", "Parameter_35026" ], - "name" : "Multiply_39159", - "op" : "Multiply", - "outputs" : ["Multiply_39159_0"] - }, - { - "inputs" : ["Multiply_39158"], - "name" : "Negative_39160", - "op" : "Negative", - "outputs" : ["Negative_39160_0"] - }, - { - "inputs" : ["Multiply_39159"], - "name" : "Negative_39161", - "op" : "Negative", - "outputs" : ["Negative_39161_0"] - }, - { - "inputs" : [ "Slice_39157", "Negative_39160" ], - "name" : "Add_39162", - "op" : "Add", - "outputs" : ["Add_39162_0"] - }, - { - "inputs" : [ "ReplaceSlice_39153", "Add_39162" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39163", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39163_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39163"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39164", - "op" : "Slice", - "outputs" : ["Slice_39164_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39164", "Negative_39161" ], - "name" : "Add_39165", - "op" : "Add", - "outputs" : ["Add_39165_0"] - }, - { - "inputs" : [ "ReplaceSlice_39163", "Add_39165" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39166", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39166_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39166"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39167", - "op" : "Slice", - "outputs" : ["Slice_39167_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39167", "Negative_39154" ], - "name" : "Add_39168", - "op" : "Add", - "outputs" : ["Add_39168_0"] - }, - { - "inputs" : [ "ReplaceSlice_39166", "Add_39168" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39169", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39169_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39169", "Reshape_36419" ], - "name" : "Dot_39172", - "op" : "Dot", - "outputs" : ["Dot_39172_0"] - }, - { - "inputs" : [ "ReplaceSlice_39169", "Reshape_36444" ], - "name" : "Dot_39173", - "op" : "Dot", - "outputs" : ["Dot_39173_0"] - }, - { - "inputs" : ["ReplaceSlice_39169"], - "name" : "Sum_39171", - "op" : "Sum", - "outputs" : ["Sum_39171_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_39169"], - "name" : "Sum_39170", - "op" : "Sum", - "outputs" : ["Sum_39170_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36759", "ReplaceSlice_39169" ], - "name" : "Dot_39175", - "op" : "Dot", - "outputs" : ["Dot_39175_0"] - }, - { - "inputs" : [ "Reshape_36565", "ReplaceSlice_39169" ], - "name" : "Dot_39174", - "op" : "Dot", - "outputs" : ["Dot_39174_0"] - }, - { - "inputs" : [ "Dot_39172", "Reshape_36628" ], - "name" : "Add_39178", - "op" : "Add", - "outputs" : ["Add_39178_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39173"], - "name" : "Reshape_39179", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39179_0"] - }, - { - "inputs" : [ "Add_39127", "Sum_39171" ], - "name" : "Add_39177", - "op" : "Add", - "outputs" : ["Add_39177_0"] - }, - { - "inputs" : [ "Add_39128", "Sum_39170" ], - "name" : "Add_39176", - "op" : "Add", - "outputs" : ["Add_39176_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39175"], - "name" : "Reshape_39181", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39181_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39174"], - "name" : "Reshape_39180", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39180_0"] - }, - { - "inputs" : [ "Add_39178", "Parameter_34305" ], - "name" : "Multiply_39183", - "op" : "Multiply", - "outputs" : ["Multiply_39183_0"] - }, - { - "inputs" : [ "Parameter_35003", "Add_39178" ], - "name" : "Multiply_39182", - "op" : "Multiply", - "outputs" : ["Multiply_39182_0"] - }, - { - "inputs" : [ "Slice_39139", "Reshape_39179" ], - "name" : "Add_39184", - "op" : "Add", - "outputs" : ["Add_39184_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39181"], - "name" : "Reshape_39186", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39186_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39180"], - "name" : "Reshape_39185", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39185_0"] - }, - { - "inputs" : ["Multiply_39183"], - "name" : "Negative_39188", - "op" : "Negative", - "outputs" : ["Negative_39188_0"] - }, - { - "inputs" : [ "Multiply_39182", "Multiply_36758" ], - "name" : "Divide_39187", - "op" : "Divide", - "outputs" : ["Divide_39187_0"] - }, - { - "inputs" : [ "ReplaceSlice_39136", "Add_39184" ], - "lower_bounds" : [ 18, 0, 0 ], - "name" : "ReplaceSlice_39189", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39189_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 19, 64, 256 ] - }, - { - "inputs" : [ "Add_39135", "Reshape_39186" ], - "name" : "Add_39191", - "op" : "Add", - "outputs" : ["Add_39191_0"] - }, - { - "inputs" : [ "Add_39134", "Reshape_39185" ], - "name" : "Add_39190", - "op" : "Add", - "outputs" : ["Add_39190_0"] - }, - { - "inputs" : [ "Negative_39188", "Parameter_35003" ], - "name" : "Multiply_39193", - "op" : "Multiply", - "outputs" : ["Multiply_39193_0"] - }, - { - "inputs" : [ "Multiply_39142", "Divide_39187" ], - "name" : "Add_39192", - "op" : "Add", - "outputs" : ["Add_39192_0"] - }, - { - "inputs" : ["ReplaceSlice_39189"], - "lower_bounds" : [ 17, 0, 0 ], - "name" : "Slice_39194", - "op" : "Slice", - "outputs" : ["Slice_39194_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 18, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39193", "Parameter_35004" ], - "name" : "Divide_39199", - "op" : "Divide", - "outputs" : ["Divide_39199_0"] - }, - { - "inputs" : [ "Add_39192", "Parameter_34317" ], - "name" : "Multiply_39196", - "op" : "Multiply", - "outputs" : ["Multiply_39196_0"] - }, - { - "inputs" : [ "Parameter_34988", "Add_39192" ], - "name" : "Multiply_39197", - "op" : "Multiply", - "outputs" : ["Multiply_39197_0"] - }, - { - "inputs" : [ "Add_39192", "Parameter_34308" ], - "name" : "Multiply_39198", - "op" : "Multiply", - "outputs" : ["Multiply_39198_0"] - }, - { - "inputs" : [ "Parameter_34996", "Add_39192" ], - "name" : "Multiply_39195", - "op" : "Multiply", - "outputs" : ["Multiply_39195_0"] - }, - { - "inputs" : [ "Divide_39199", "Parameter_35005" ], - "name" : "Multiply_39203", - "op" : "Multiply", - "outputs" : ["Multiply_39203_0"] - }, - { - "inputs" : ["Multiply_39196"], - "name" : "Negative_39200", - "op" : "Negative", - "outputs" : ["Negative_39200_0"] - }, - { - "inputs" : [ "Multiply_39197", "Multiply_36756" ], - "name" : "Divide_39201", - "op" : "Divide", - "outputs" : ["Divide_39201_0"] - }, - { - "inputs" : ["Multiply_39198"], - "name" : "Negative_39202", - "op" : "Negative", - "outputs" : ["Negative_39202_0"] - }, - { - "inputs" : ["Multiply_39203"], - "name" : "Negative_39207", - "op" : "Negative", - "outputs" : ["Negative_39207_0"] - }, - { - "inputs" : [ "Negative_39200", "Parameter_34996" ], - "name" : "Multiply_39204", - "op" : "Multiply", - "outputs" : ["Multiply_39204_0"] - }, - { - "inputs" : [ "Broadcast_36351", "Divide_39201" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39205", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39205_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39202", "Parameter_34988" ], - "name" : "Multiply_39206", - "op" : "Multiply", - "outputs" : ["Multiply_39206_0"] - }, - { - "inputs" : [ "Multiply_39204", "Parameter_34997" ], - "name" : "Divide_39208", - "op" : "Divide", - "outputs" : ["Divide_39208_0"] - }, - { - "inputs" : ["ReplaceSlice_39205"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39209", - "op" : "Slice", - "outputs" : ["Slice_39209_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39206", "Parameter_34989" ], - "name" : "Divide_39210", - "op" : "Divide", - "outputs" : ["Divide_39210_0"] - }, - { - "inputs" : [ "Divide_39208", "Parameter_34998" ], - "name" : "Multiply_39211", - "op" : "Multiply", - "outputs" : ["Multiply_39211_0"] - }, - { - "inputs" : [ "Divide_39210", "Parameter_34990" ], - "name" : "Multiply_39212", - "op" : "Multiply", - "outputs" : ["Multiply_39212_0"] - }, - { - "inputs" : ["Multiply_39211"], - "name" : "Negative_39213", - "op" : "Negative", - "outputs" : ["Negative_39213_0"] - }, - { - "inputs" : ["Multiply_39212"], - "name" : "Negative_39214", - "op" : "Negative", - "outputs" : ["Negative_39214_0"] - }, - { - "inputs" : [ "Slice_39209", "Negative_39214" ], - "name" : "Add_39215", - "op" : "Add", - "outputs" : ["Add_39215_0"] - }, - { - "inputs" : [ "ReplaceSlice_39205", "Add_39215" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39216", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39216_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39216"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39217", - "op" : "Slice", - "outputs" : ["Slice_39217_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39217", "Negative_39213" ], - "name" : "Add_39218", - "op" : "Add", - "outputs" : ["Add_39218_0"] - }, - { - "inputs" : [ "ReplaceSlice_39216", "Add_39218" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39219", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39219_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39219"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39220", - "op" : "Slice", - "outputs" : ["Slice_39220_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39220", "Negative_39207" ], - "name" : "Add_39221", - "op" : "Add", - "outputs" : ["Add_39221_0"] - }, - { - "inputs" : [ "ReplaceSlice_39219", "Add_39221" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39222", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39222_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36564", "ReplaceSlice_39222" ], - "name" : "Dot_39228", - "op" : "Dot", - "outputs" : ["Dot_39228_0"] - }, - { - "inputs" : [ "ReplaceSlice_39222", "Reshape_36431" ], - "name" : "Dot_39223", - "op" : "Dot", - "outputs" : ["Dot_39223_0"] - }, - { - "inputs" : ["ReplaceSlice_39222"], - "name" : "Sum_39224", - "op" : "Sum", - "outputs" : ["Sum_39224_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36754", "ReplaceSlice_39222" ], - "name" : "Dot_39225", - "op" : "Dot", - "outputs" : ["Dot_39225_0"] - }, - { - "inputs" : ["ReplaceSlice_39222"], - "name" : "Sum_39227", - "op" : "Sum", - "outputs" : ["Sum_39227_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39222", "Reshape_36415" ], - "name" : "Dot_39226", - "op" : "Dot", - "outputs" : ["Dot_39226_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39228"], - "name" : "Reshape_39234", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39234_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39223"], - "name" : "Reshape_39229", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39229_0"] - }, - { - "inputs" : [ "Add_39176", "Sum_39224" ], - "name" : "Add_39230", - "op" : "Add", - "outputs" : ["Add_39230_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39225"], - "name" : "Reshape_39231", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39231_0"] - }, - { - "inputs" : [ "Add_39177", "Sum_39227" ], - "name" : "Add_39233", - "op" : "Add", - "outputs" : ["Add_39233_0"] - }, - { - "inputs" : [ "Dot_39226", "Reshape_36620" ], - "name" : "Add_39232", - "op" : "Add", - "outputs" : ["Add_39232_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39234"], - "name" : "Reshape_39239", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39239_0"] - }, - { - "inputs" : [ "Slice_39194", "Reshape_39229" ], - "name" : "Add_39235", - "op" : "Add", - "outputs" : ["Add_39235_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39231"], - "name" : "Reshape_39236", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39236_0"] - }, - { - "inputs" : [ "Parameter_34975", "Add_39232" ], - "name" : "Multiply_39238", - "op" : "Multiply", - "outputs" : ["Multiply_39238_0"] - }, - { - "inputs" : [ "Add_39232", "Parameter_34316" ], - "name" : "Multiply_39237", - "op" : "Multiply", - "outputs" : ["Multiply_39237_0"] - }, - { - "inputs" : [ "Add_39190", "Reshape_39239" ], - "name" : "Add_39244", - "op" : "Add", - "outputs" : ["Add_39244_0"] - }, - { - "inputs" : [ "ReplaceSlice_39189", "Add_39235" ], - "lower_bounds" : [ 17, 0, 0 ], - "name" : "ReplaceSlice_39240", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39240_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 18, 64, 256 ] - }, - { - "inputs" : [ "Add_39191", "Reshape_39236" ], - "name" : "Add_39241", - "op" : "Add", - "outputs" : ["Add_39241_0"] - }, - { - "inputs" : [ "Multiply_39238", "Multiply_36753" ], - "name" : "Divide_39243", - "op" : "Divide", - "outputs" : ["Divide_39243_0"] - }, - { - "inputs" : ["Multiply_39237"], - "name" : "Negative_39242", - "op" : "Negative", - "outputs" : ["Negative_39242_0"] - }, - { - "inputs" : ["ReplaceSlice_39240"], - "lower_bounds" : [ 16, 0, 0 ], - "name" : "Slice_39245", - "op" : "Slice", - "outputs" : ["Slice_39245_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 17, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39195", "Divide_39243" ], - "name" : "Add_39247", - "op" : "Add", - "outputs" : ["Add_39247_0"] - }, - { - "inputs" : [ "Negative_39242", "Parameter_34975" ], - "name" : "Multiply_39246", - "op" : "Multiply", - "outputs" : ["Multiply_39246_0"] - }, - { - "inputs" : [ "Parameter_34968", "Add_39247" ], - "name" : "Multiply_39251", - "op" : "Multiply", - "outputs" : ["Multiply_39251_0"] - }, - { - "inputs" : [ "Parameter_34960", "Add_39247" ], - "name" : "Multiply_39252", - "op" : "Multiply", - "outputs" : ["Multiply_39252_0"] - }, - { - "inputs" : [ "Add_39247", "Parameter_34328" ], - "name" : "Multiply_39249", - "op" : "Multiply", - "outputs" : ["Multiply_39249_0"] - }, - { - "inputs" : [ "Add_39247", "Parameter_34319" ], - "name" : "Multiply_39250", - "op" : "Multiply", - "outputs" : ["Multiply_39250_0"] - }, - { - "inputs" : [ "Multiply_39246", "Parameter_34976" ], - "name" : "Divide_39248", - "op" : "Divide", - "outputs" : ["Divide_39248_0"] - }, - { - "inputs" : [ "Multiply_39252", "Multiply_36751" ], - "name" : "Divide_39256", - "op" : "Divide", - "outputs" : ["Divide_39256_0"] - }, - { - "inputs" : ["Multiply_39249"], - "name" : "Negative_39254", - "op" : "Negative", - "outputs" : ["Negative_39254_0"] - }, - { - "inputs" : ["Multiply_39250"], - "name" : "Negative_39255", - "op" : "Negative", - "outputs" : ["Negative_39255_0"] - }, - { - "inputs" : [ "Divide_39248", "Parameter_34977" ], - "name" : "Multiply_39253", - "op" : "Multiply", - "outputs" : ["Multiply_39253_0"] - }, - { - "inputs" : [ "Broadcast_36352", "Divide_39256" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39260", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39260_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39254", "Parameter_34968" ], - "name" : "Multiply_39258", - "op" : "Multiply", - "outputs" : ["Multiply_39258_0"] - }, - { - "inputs" : [ "Negative_39255", "Parameter_34960" ], - "name" : "Multiply_39259", - "op" : "Multiply", - "outputs" : ["Multiply_39259_0"] - }, - { - "inputs" : ["Multiply_39253"], - "name" : "Negative_39257", - "op" : "Negative", - "outputs" : ["Negative_39257_0"] - }, - { - "inputs" : ["ReplaceSlice_39260"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39263", - "op" : "Slice", - "outputs" : ["Slice_39263_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39258", "Parameter_34969" ], - "name" : "Divide_39261", - "op" : "Divide", - "outputs" : ["Divide_39261_0"] - }, - { - "inputs" : [ "Multiply_39259", "Parameter_34961" ], - "name" : "Divide_39262", - "op" : "Divide", - "outputs" : ["Divide_39262_0"] - }, - { - "inputs" : [ "Divide_39261", "Parameter_34970" ], - "name" : "Multiply_39264", - "op" : "Multiply", - "outputs" : ["Multiply_39264_0"] - }, - { - "inputs" : [ "Divide_39262", "Parameter_34962" ], - "name" : "Multiply_39265", - "op" : "Multiply", - "outputs" : ["Multiply_39265_0"] - }, - { - "inputs" : ["Multiply_39264"], - "name" : "Negative_39266", - "op" : "Negative", - "outputs" : ["Negative_39266_0"] - }, - { - "inputs" : ["Multiply_39265"], - "name" : "Negative_39267", - "op" : "Negative", - "outputs" : ["Negative_39267_0"] - }, - { - "inputs" : [ "Slice_39263", "Negative_39267" ], - "name" : "Add_39268", - "op" : "Add", - "outputs" : ["Add_39268_0"] - }, - { - "inputs" : [ "ReplaceSlice_39260", "Add_39268" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39269", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39269_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39269"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39270", - "op" : "Slice", - "outputs" : ["Slice_39270_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39270", "Negative_39266" ], - "name" : "Add_39271", - "op" : "Add", - "outputs" : ["Add_39271_0"] - }, - { - "inputs" : [ "ReplaceSlice_39269", "Add_39271" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39272", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39272_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39272"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39273", - "op" : "Slice", - "outputs" : ["Slice_39273_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39273", "Negative_39257" ], - "name" : "Add_39274", - "op" : "Add", - "outputs" : ["Add_39274_0"] - }, - { - "inputs" : [ "ReplaceSlice_39272", "Add_39274" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39275", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39275_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39275", "Reshape_36421" ], - "name" : "Dot_39279", - "op" : "Dot", - "outputs" : ["Dot_39279_0"] - }, - { - "inputs" : ["ReplaceSlice_39275"], - "name" : "Sum_39278", - "op" : "Sum", - "outputs" : ["Sum_39278_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39275", "Reshape_36430" ], - "name" : "Dot_39281", - "op" : "Dot", - "outputs" : ["Dot_39281_0"] - }, - { - "inputs" : [ "Reshape_36749", "ReplaceSlice_39275" ], - "name" : "Dot_39276", - "op" : "Dot", - "outputs" : ["Dot_39276_0"] - }, - { - "inputs" : [ "Reshape_36563", "ReplaceSlice_39275" ], - "name" : "Dot_39277", - "op" : "Dot", - "outputs" : ["Dot_39277_0"] - }, - { - "inputs" : ["ReplaceSlice_39275"], - "name" : "Sum_39280", - "op" : "Sum", - "outputs" : ["Sum_39280_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Dot_39279", "Reshape_36619" ], - "name" : "Add_39285", - "op" : "Add", - "outputs" : ["Add_39285_0"] - }, - { - "inputs" : [ "Add_39230", "Sum_39278" ], - "name" : "Add_39284", - "op" : "Add", - "outputs" : ["Add_39284_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39281"], - "name" : "Reshape_39287", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39287_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39276"], - "name" : "Reshape_39282", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39282_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39277"], - "name" : "Reshape_39283", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39283_0"] - }, - { - "inputs" : [ "Add_39233", "Sum_39280" ], - "name" : "Add_39286", - "op" : "Add", - "outputs" : ["Add_39286_0"] - }, - { - "inputs" : [ "Parameter_34947", "Add_39285" ], - "name" : "Multiply_39290", - "op" : "Multiply", - "outputs" : ["Multiply_39290_0"] - }, - { - "inputs" : [ "Add_39285", "Parameter_34327" ], - "name" : "Multiply_39291", - "op" : "Multiply", - "outputs" : ["Multiply_39291_0"] - }, - { - "inputs" : [ "Slice_39245", "Reshape_39287" ], - "name" : "Add_39292", - "op" : "Add", - "outputs" : ["Add_39292_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39282"], - "name" : "Reshape_39288", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39288_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39283"], - "name" : "Reshape_39289", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39289_0"] - }, - { - "inputs" : [ "Multiply_39290", "Multiply_36748" ], - "name" : "Divide_39295", - "op" : "Divide", - "outputs" : ["Divide_39295_0"] - }, - { - "inputs" : ["Multiply_39291"], - "name" : "Negative_39296", - "op" : "Negative", - "outputs" : ["Negative_39296_0"] - }, - { - "inputs" : [ "ReplaceSlice_39240", "Add_39292" ], - "lower_bounds" : [ 16, 0, 0 ], - "name" : "ReplaceSlice_39297", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39297_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 17, 64, 256 ] - }, - { - "inputs" : [ "Add_39241", "Reshape_39288" ], - "name" : "Add_39293", - "op" : "Add", - "outputs" : ["Add_39293_0"] - }, - { - "inputs" : [ "Add_39244", "Reshape_39289" ], - "name" : "Add_39294", - "op" : "Add", - "outputs" : ["Add_39294_0"] - }, - { - "inputs" : [ "Multiply_39251", "Divide_39295" ], - "name" : "Add_39298", - "op" : "Add", - "outputs" : ["Add_39298_0"] - }, - { - "inputs" : [ "Negative_39296", "Parameter_34947" ], - "name" : "Multiply_39299", - "op" : "Multiply", - "outputs" : ["Multiply_39299_0"] - }, - { - "inputs" : ["ReplaceSlice_39297"], - "lower_bounds" : [ 15, 0, 0 ], - "name" : "Slice_39300", - "op" : "Slice", - "outputs" : ["Slice_39300_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 16, 64, 256 ] - }, - { - "inputs" : [ "Add_39298", "Parameter_34339" ], - "name" : "Multiply_39303", - "op" : "Multiply", - "outputs" : ["Multiply_39303_0"] - }, - { - "inputs" : [ "Parameter_34940", "Add_39298" ], - "name" : "Multiply_39304", - "op" : "Multiply", - "outputs" : ["Multiply_39304_0"] - }, - { - "inputs" : [ "Add_39298", "Parameter_34330" ], - "name" : "Multiply_39301", - "op" : "Multiply", - "outputs" : ["Multiply_39301_0"] - }, - { - "inputs" : [ "Parameter_34932", "Add_39298" ], - "name" : "Multiply_39302", - "op" : "Multiply", - "outputs" : ["Multiply_39302_0"] - }, - { - "inputs" : [ "Multiply_39299", "Parameter_34948" ], - "name" : "Divide_39305", - "op" : "Divide", - "outputs" : ["Divide_39305_0"] - }, - { - "inputs" : ["Multiply_39303"], - "name" : "Negative_39308", - "op" : "Negative", - "outputs" : ["Negative_39308_0"] - }, - { - "inputs" : ["Multiply_39301"], - "name" : "Negative_39306", - "op" : "Negative", - "outputs" : ["Negative_39306_0"] - }, - { - "inputs" : [ "Multiply_39302", "Multiply_36746" ], - "name" : "Divide_39307", - "op" : "Divide", - "outputs" : ["Divide_39307_0"] - }, - { - "inputs" : [ "Divide_39305", "Parameter_34949" ], - "name" : "Multiply_39309", - "op" : "Multiply", - "outputs" : ["Multiply_39309_0"] - }, - { - "inputs" : [ "Negative_39308", "Parameter_34940" ], - "name" : "Multiply_39312", - "op" : "Multiply", - "outputs" : ["Multiply_39312_0"] - }, - { - "inputs" : [ "Negative_39306", "Parameter_34932" ], - "name" : "Multiply_39310", - "op" : "Multiply", - "outputs" : ["Multiply_39310_0"] - }, - { - "inputs" : [ "Broadcast_36353", "Divide_39307" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39311", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39311_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_39309"], - "name" : "Negative_39313", - "op" : "Negative", - "outputs" : ["Negative_39313_0"] - }, - { - "inputs" : [ "Multiply_39312", "Parameter_34941" ], - "name" : "Divide_39316", - "op" : "Divide", - "outputs" : ["Divide_39316_0"] - }, - { - "inputs" : [ "Multiply_39310", "Parameter_34933" ], - "name" : "Divide_39314", - "op" : "Divide", - "outputs" : ["Divide_39314_0"] - }, - { - "inputs" : ["ReplaceSlice_39311"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39315", - "op" : "Slice", - "outputs" : ["Slice_39315_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39316", "Parameter_34942" ], - "name" : "Multiply_39318", - "op" : "Multiply", - "outputs" : ["Multiply_39318_0"] - }, - { - "inputs" : [ "Divide_39314", "Parameter_34934" ], - "name" : "Multiply_39317", - "op" : "Multiply", - "outputs" : ["Multiply_39317_0"] - }, - { - "inputs" : ["Multiply_39318"], - "name" : "Negative_39320", - "op" : "Negative", - "outputs" : ["Negative_39320_0"] - }, - { - "inputs" : ["Multiply_39317"], - "name" : "Negative_39319", - "op" : "Negative", - "outputs" : ["Negative_39319_0"] - }, - { - "inputs" : [ "Slice_39315", "Negative_39319" ], - "name" : "Add_39321", - "op" : "Add", - "outputs" : ["Add_39321_0"] - }, - { - "inputs" : [ "ReplaceSlice_39311", "Add_39321" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39322", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39322_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39322"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39323", - "op" : "Slice", - "outputs" : ["Slice_39323_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39323", "Negative_39320" ], - "name" : "Add_39324", - "op" : "Add", - "outputs" : ["Add_39324_0"] - }, - { - "inputs" : [ "ReplaceSlice_39322", "Add_39324" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39325", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39325_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39325"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39326", - "op" : "Slice", - "outputs" : ["Slice_39326_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39326", "Negative_39313" ], - "name" : "Add_39327", - "op" : "Add", - "outputs" : ["Add_39327_0"] - }, - { - "inputs" : [ "ReplaceSlice_39325", "Add_39327" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39328", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39328_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36562", "ReplaceSlice_39328" ], - "name" : "Dot_39333", - "op" : "Dot", - "outputs" : ["Dot_39333_0"] - }, - { - "inputs" : ["ReplaceSlice_39328"], - "name" : "Sum_39331", - "op" : "Sum", - "outputs" : ["Sum_39331_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39328", "Reshape_36417" ], - "name" : "Dot_39332", - "op" : "Dot", - "outputs" : ["Dot_39332_0"] - }, - { - "inputs" : [ "ReplaceSlice_39328", "Reshape_36479" ], - "name" : "Dot_39330", - "op" : "Dot", - "outputs" : ["Dot_39330_0"] - }, - { - "inputs" : ["ReplaceSlice_39328"], - "name" : "Sum_39334", - "op" : "Sum", - "outputs" : ["Sum_39334_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36744", "ReplaceSlice_39328" ], - "name" : "Dot_39329", - "op" : "Dot", - "outputs" : ["Dot_39329_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39333"], - "name" : "Reshape_39339", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39339_0"] - }, - { - "inputs" : [ "Add_39286", "Sum_39331" ], - "name" : "Add_39337", - "op" : "Add", - "outputs" : ["Add_39337_0"] - }, - { - "inputs" : [ "Dot_39332", "Reshape_36618" ], - "name" : "Add_39338", - "op" : "Add", - "outputs" : ["Add_39338_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39330"], - "name" : "Reshape_39336", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39336_0"] - }, - { - "inputs" : [ "Add_39284", "Sum_39334" ], - "name" : "Add_39340", - "op" : "Add", - "outputs" : ["Add_39340_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39329"], - "name" : "Reshape_39335", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39335_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39339"], - "name" : "Reshape_39345", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39345_0"] - }, - { - "inputs" : [ "Parameter_34919", "Add_39338" ], - "name" : "Multiply_39343", - "op" : "Multiply", - "outputs" : ["Multiply_39343_0"] - }, - { - "inputs" : [ "Add_39338", "Parameter_34338" ], - "name" : "Multiply_39344", - "op" : "Multiply", - "outputs" : ["Multiply_39344_0"] - }, - { - "inputs" : [ "Slice_39300", "Reshape_39336" ], - "name" : "Add_39342", - "op" : "Add", - "outputs" : ["Add_39342_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39335"], - "name" : "Reshape_39341", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39341_0"] - }, - { - "inputs" : [ "Add_39294", "Reshape_39345" ], - "name" : "Add_39350", - "op" : "Add", - "outputs" : ["Add_39350_0"] - }, - { - "inputs" : [ "Multiply_39343", "Multiply_36743" ], - "name" : "Divide_39348", - "op" : "Divide", - "outputs" : ["Divide_39348_0"] - }, - { - "inputs" : ["Multiply_39344"], - "name" : "Negative_39349", - "op" : "Negative", - "outputs" : ["Negative_39349_0"] - }, - { - "inputs" : [ "ReplaceSlice_39297", "Add_39342" ], - "lower_bounds" : [ 15, 0, 0 ], - "name" : "ReplaceSlice_39347", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39347_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 16, 64, 256 ] - }, - { - "inputs" : [ "Add_39293", "Reshape_39341" ], - "name" : "Add_39346", - "op" : "Add", - "outputs" : ["Add_39346_0"] - }, - { - "inputs" : [ "Multiply_39304", "Divide_39348" ], - "name" : "Add_39352", - "op" : "Add", - "outputs" : ["Add_39352_0"] - }, - { - "inputs" : [ "Negative_39349", "Parameter_34919" ], - "name" : "Multiply_39353", - "op" : "Multiply", - "outputs" : ["Multiply_39353_0"] - }, - { - "inputs" : ["ReplaceSlice_39347"], - "lower_bounds" : [ 14, 0, 0 ], - "name" : "Slice_39351", - "op" : "Slice", - "outputs" : ["Slice_39351_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 15, 64, 256 ] - }, - { - "inputs" : [ "Parameter_34912", "Add_39352" ], - "name" : "Multiply_39355", - "op" : "Multiply", - "outputs" : ["Multiply_39355_0"] - }, - { - "inputs" : [ "Add_39352", "Parameter_34350" ], - "name" : "Multiply_39356", - "op" : "Multiply", - "outputs" : ["Multiply_39356_0"] - }, - { - "inputs" : [ "Parameter_34904", "Add_39352" ], - "name" : "Multiply_39354", - "op" : "Multiply", - "outputs" : ["Multiply_39354_0"] - }, - { - "inputs" : [ "Add_39352", "Parameter_34341" ], - "name" : "Multiply_39357", - "op" : "Multiply", - "outputs" : ["Multiply_39357_0"] - }, - { - "inputs" : [ "Multiply_39353", "Parameter_34920" ], - "name" : "Divide_39358", - "op" : "Divide", - "outputs" : ["Divide_39358_0"] - }, - { - "inputs" : ["Multiply_39356"], - "name" : "Negative_39360", - "op" : "Negative", - "outputs" : ["Negative_39360_0"] - }, - { - "inputs" : [ "Multiply_39354", "Multiply_36741" ], - "name" : "Divide_39359", - "op" : "Divide", - "outputs" : ["Divide_39359_0"] - }, - { - "inputs" : ["Multiply_39357"], - "name" : "Negative_39361", - "op" : "Negative", - "outputs" : ["Negative_39361_0"] - }, - { - "inputs" : [ "Divide_39358", "Parameter_34921" ], - "name" : "Multiply_39362", - "op" : "Multiply", - "outputs" : ["Multiply_39362_0"] - }, - { - "inputs" : [ "Negative_39360", "Parameter_34912" ], - "name" : "Multiply_39364", - "op" : "Multiply", - "outputs" : ["Multiply_39364_0"] - }, - { - "inputs" : [ "Broadcast_36354", "Divide_39359" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39363", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39363_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39361", "Parameter_34904" ], - "name" : "Multiply_39365", - "op" : "Multiply", - "outputs" : ["Multiply_39365_0"] - }, - { - "inputs" : ["Multiply_39362"], - "name" : "Negative_39366", - "op" : "Negative", - "outputs" : ["Negative_39366_0"] - }, - { - "inputs" : [ "Multiply_39364", "Parameter_34913" ], - "name" : "Divide_39368", - "op" : "Divide", - "outputs" : ["Divide_39368_0"] - }, - { - "inputs" : ["ReplaceSlice_39363"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39367", - "op" : "Slice", - "outputs" : ["Slice_39367_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39365", "Parameter_34905" ], - "name" : "Divide_39369", - "op" : "Divide", - "outputs" : ["Divide_39369_0"] - }, - { - "inputs" : [ "Divide_39368", "Parameter_34914" ], - "name" : "Multiply_39370", - "op" : "Multiply", - "outputs" : ["Multiply_39370_0"] - }, - { - "inputs" : [ "Divide_39369", "Parameter_34906" ], - "name" : "Multiply_39371", - "op" : "Multiply", - "outputs" : ["Multiply_39371_0"] - }, - { - "inputs" : ["Multiply_39370"], - "name" : "Negative_39372", - "op" : "Negative", - "outputs" : ["Negative_39372_0"] - }, - { - "inputs" : ["Multiply_39371"], - "name" : "Negative_39373", - "op" : "Negative", - "outputs" : ["Negative_39373_0"] - }, - { - "inputs" : [ "Slice_39367", "Negative_39373" ], - "name" : "Add_39374", - "op" : "Add", - "outputs" : ["Add_39374_0"] - }, - { - "inputs" : [ "ReplaceSlice_39363", "Add_39374" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39375", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39375_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39375"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39376", - "op" : "Slice", - "outputs" : ["Slice_39376_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39376", "Negative_39372" ], - "name" : "Add_39377", - "op" : "Add", - "outputs" : ["Add_39377_0"] - }, - { - "inputs" : [ "ReplaceSlice_39375", "Add_39377" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39378", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39378_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39378"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39379", - "op" : "Slice", - "outputs" : ["Slice_39379_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39379", "Negative_39366" ], - "name" : "Add_39380", - "op" : "Add", - "outputs" : ["Add_39380_0"] - }, - { - "inputs" : [ "ReplaceSlice_39378", "Add_39380" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39381", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39381_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39381", "Reshape_36424" ], - "name" : "Dot_39383", - "op" : "Dot", - "outputs" : ["Dot_39383_0"] - }, - { - "inputs" : [ "Reshape_36739", "ReplaceSlice_39381" ], - "name" : "Dot_39384", - "op" : "Dot", - "outputs" : ["Dot_39384_0"] - }, - { - "inputs" : [ "Reshape_36561", "ReplaceSlice_39381" ], - "name" : "Dot_39382", - "op" : "Dot", - "outputs" : ["Dot_39382_0"] - }, - { - "inputs" : ["ReplaceSlice_39381"], - "name" : "Sum_39385", - "op" : "Sum", - "outputs" : ["Sum_39385_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_39381"], - "name" : "Sum_39386", - "op" : "Sum", - "outputs" : ["Sum_39386_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39381", "Reshape_36478" ], - "name" : "Dot_39387", - "op" : "Dot", - "outputs" : ["Dot_39387_0"] - }, - { - "inputs" : [ "Dot_39383", "Reshape_36617" ], - "name" : "Add_39389", - "op" : "Add", - "outputs" : ["Add_39389_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39384"], - "name" : "Reshape_39390", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39390_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39382"], - "name" : "Reshape_39388", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39388_0"] - }, - { - "inputs" : [ "Add_39340", "Sum_39385" ], - "name" : "Add_39391", - "op" : "Add", - "outputs" : ["Add_39391_0"] - }, - { - "inputs" : [ "Add_39337", "Sum_39386" ], - "name" : "Add_39392", - "op" : "Add", - "outputs" : ["Add_39392_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39387"], - "name" : "Reshape_39393", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39393_0"] - }, - { - "inputs" : [ "Add_39389", "Parameter_34349" ], - "name" : "Multiply_39396", - "op" : "Multiply", - "outputs" : ["Multiply_39396_0"] - }, - { - "inputs" : [ "Parameter_34891", "Add_39389" ], - "name" : "Multiply_39395", - "op" : "Multiply", - "outputs" : ["Multiply_39395_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39390"], - "name" : "Reshape_39397", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39397_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39388"], - "name" : "Reshape_39394", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39394_0"] - }, - { - "inputs" : [ "Slice_39351", "Reshape_39393" ], - "name" : "Add_39398", - "op" : "Add", - "outputs" : ["Add_39398_0"] - }, - { - "inputs" : ["Multiply_39396"], - "name" : "Negative_39401", - "op" : "Negative", - "outputs" : ["Negative_39401_0"] - }, - { - "inputs" : [ "Multiply_39395", "Multiply_36738" ], - "name" : "Divide_39400", - "op" : "Divide", - "outputs" : ["Divide_39400_0"] - }, - { - "inputs" : [ "Add_39346", "Reshape_39397" ], - "name" : "Add_39402", - "op" : "Add", - "outputs" : ["Add_39402_0"] - }, - { - "inputs" : [ "Add_39350", "Reshape_39394" ], - "name" : "Add_39399", - "op" : "Add", - "outputs" : ["Add_39399_0"] - }, - { - "inputs" : [ "ReplaceSlice_39347", "Add_39398" ], - "lower_bounds" : [ 14, 0, 0 ], - "name" : "ReplaceSlice_39403", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39403_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 15, 64, 256 ] - }, - { - "inputs" : [ "Negative_39401", "Parameter_34891" ], - "name" : "Multiply_39405", - "op" : "Multiply", - "outputs" : ["Multiply_39405_0"] - }, - { - "inputs" : [ "Multiply_39355", "Divide_39400" ], - "name" : "Add_39404", - "op" : "Add", - "outputs" : ["Add_39404_0"] - }, - { - "inputs" : ["ReplaceSlice_39403"], - "lower_bounds" : [ 13, 0, 0 ], - "name" : "Slice_39406", - "op" : "Slice", - "outputs" : ["Slice_39406_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 14, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39405", "Parameter_34892" ], - "name" : "Divide_39411", - "op" : "Divide", - "outputs" : ["Divide_39411_0"] - }, - { - "inputs" : [ "Parameter_34876", "Add_39404" ], - "name" : "Multiply_39410", - "op" : "Multiply", - "outputs" : ["Multiply_39410_0"] - }, - { - "inputs" : [ "Parameter_34884", "Add_39404" ], - "name" : "Multiply_39407", - "op" : "Multiply", - "outputs" : ["Multiply_39407_0"] - }, - { - "inputs" : [ "Add_39404", "Parameter_34361" ], - "name" : "Multiply_39408", - "op" : "Multiply", - "outputs" : ["Multiply_39408_0"] - }, - { - "inputs" : [ "Add_39404", "Parameter_34352" ], - "name" : "Multiply_39409", - "op" : "Multiply", - "outputs" : ["Multiply_39409_0"] - }, - { - "inputs" : [ "Divide_39411", "Parameter_34893" ], - "name" : "Multiply_39415", - "op" : "Multiply", - "outputs" : ["Multiply_39415_0"] - }, - { - "inputs" : [ "Multiply_39410", "Multiply_36736" ], - "name" : "Divide_39414", - "op" : "Divide", - "outputs" : ["Divide_39414_0"] - }, - { - "inputs" : ["Multiply_39408"], - "name" : "Negative_39412", - "op" : "Negative", - "outputs" : ["Negative_39412_0"] - }, - { - "inputs" : ["Multiply_39409"], - "name" : "Negative_39413", - "op" : "Negative", - "outputs" : ["Negative_39413_0"] - }, - { - "inputs" : ["Multiply_39415"], - "name" : "Negative_39419", - "op" : "Negative", - "outputs" : ["Negative_39419_0"] - }, - { - "inputs" : [ "Broadcast_36355", "Divide_39414" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39418", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39418_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39412", "Parameter_34884" ], - "name" : "Multiply_39416", - "op" : "Multiply", - "outputs" : ["Multiply_39416_0"] - }, - { - "inputs" : [ "Negative_39413", "Parameter_34876" ], - "name" : "Multiply_39417", - "op" : "Multiply", - "outputs" : ["Multiply_39417_0"] - }, - { - "inputs" : ["ReplaceSlice_39418"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39422", - "op" : "Slice", - "outputs" : ["Slice_39422_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39416", "Parameter_34885" ], - "name" : "Divide_39420", - "op" : "Divide", - "outputs" : ["Divide_39420_0"] - }, - { - "inputs" : [ "Multiply_39417", "Parameter_34877" ], - "name" : "Divide_39421", - "op" : "Divide", - "outputs" : ["Divide_39421_0"] - }, - { - "inputs" : [ "Divide_39420", "Parameter_34886" ], - "name" : "Multiply_39423", - "op" : "Multiply", - "outputs" : ["Multiply_39423_0"] - }, - { - "inputs" : [ "Divide_39421", "Parameter_34878" ], - "name" : "Multiply_39424", - "op" : "Multiply", - "outputs" : ["Multiply_39424_0"] - }, - { - "inputs" : ["Multiply_39423"], - "name" : "Negative_39425", - "op" : "Negative", - "outputs" : ["Negative_39425_0"] - }, - { - "inputs" : ["Multiply_39424"], - "name" : "Negative_39426", - "op" : "Negative", - "outputs" : ["Negative_39426_0"] - }, - { - "inputs" : [ "Slice_39422", "Negative_39426" ], - "name" : "Add_39427", - "op" : "Add", - "outputs" : ["Add_39427_0"] - }, - { - "inputs" : [ "ReplaceSlice_39418", "Add_39427" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39428", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39428_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39428"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39429", - "op" : "Slice", - "outputs" : ["Slice_39429_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39429", "Negative_39425" ], - "name" : "Add_39430", - "op" : "Add", - "outputs" : ["Add_39430_0"] - }, - { - "inputs" : [ "ReplaceSlice_39428", "Add_39430" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39431", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39431_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39431"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39432", - "op" : "Slice", - "outputs" : ["Slice_39432_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39432", "Negative_39419" ], - "name" : "Add_39433", - "op" : "Add", - "outputs" : ["Add_39433_0"] - }, - { - "inputs" : [ "ReplaceSlice_39431", "Add_39433" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39434", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39434_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39434", "Reshape_36425" ], - "name" : "Dot_39439", - "op" : "Dot", - "outputs" : ["Dot_39439_0"] - }, - { - "inputs" : ["ReplaceSlice_39434"], - "name" : "Sum_39437", - "op" : "Sum", - "outputs" : ["Sum_39437_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36734", "ReplaceSlice_39434" ], - "name" : "Dot_39435", - "op" : "Dot", - "outputs" : ["Dot_39435_0"] - }, - { - "inputs" : [ "ReplaceSlice_39434", "Reshape_36477" ], - "name" : "Dot_39436", - "op" : "Dot", - "outputs" : ["Dot_39436_0"] - }, - { - "inputs" : ["ReplaceSlice_39434"], - "name" : "Sum_39438", - "op" : "Sum", - "outputs" : ["Sum_39438_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36560", "ReplaceSlice_39434" ], - "name" : "Dot_39440", - "op" : "Dot", - "outputs" : ["Dot_39440_0"] - }, - { - "inputs" : [ "Dot_39439", "Reshape_36616" ], - "name" : "Add_39445", - "op" : "Add", - "outputs" : ["Add_39445_0"] - }, - { - "inputs" : [ "Add_39392", "Sum_39437" ], - "name" : "Add_39443", - "op" : "Add", - "outputs" : ["Add_39443_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39435"], - "name" : "Reshape_39441", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39441_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39436"], - "name" : "Reshape_39442", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39442_0"] - }, - { - "inputs" : [ "Add_39391", "Sum_39438" ], - "name" : "Add_39444", - "op" : "Add", - "outputs" : ["Add_39444_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39440"], - "name" : "Reshape_39446", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39446_0"] - }, - { - "inputs" : [ "Parameter_34863", "Add_39445" ], - "name" : "Multiply_39449", - "op" : "Multiply", - "outputs" : ["Multiply_39449_0"] - }, - { - "inputs" : [ "Add_39445", "Parameter_34360" ], - "name" : "Multiply_39450", - "op" : "Multiply", - "outputs" : ["Multiply_39450_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39441"], - "name" : "Reshape_39447", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39447_0"] - }, - { - "inputs" : [ "Slice_39406", "Reshape_39442" ], - "name" : "Add_39448", - "op" : "Add", - "outputs" : ["Add_39448_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39446"], - "name" : "Reshape_39451", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39451_0"] - }, - { - "inputs" : [ "Multiply_39449", "Multiply_36733" ], - "name" : "Divide_39454", - "op" : "Divide", - "outputs" : ["Divide_39454_0"] - }, - { - "inputs" : ["Multiply_39450"], - "name" : "Negative_39455", - "op" : "Negative", - "outputs" : ["Negative_39455_0"] - }, - { - "inputs" : [ "Add_39402", "Reshape_39447" ], - "name" : "Add_39452", - "op" : "Add", - "outputs" : ["Add_39452_0"] - }, - { - "inputs" : [ "ReplaceSlice_39403", "Add_39448" ], - "lower_bounds" : [ 13, 0, 0 ], - "name" : "ReplaceSlice_39453", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39453_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 14, 64, 256 ] - }, - { - "inputs" : [ "Add_39399", "Reshape_39451" ], - "name" : "Add_39456", - "op" : "Add", - "outputs" : ["Add_39456_0"] - }, - { - "inputs" : [ "Multiply_39407", "Divide_39454" ], - "name" : "Add_39458", - "op" : "Add", - "outputs" : ["Add_39458_0"] - }, - { - "inputs" : [ "Negative_39455", "Parameter_34863" ], - "name" : "Multiply_39459", - "op" : "Multiply", - "outputs" : ["Multiply_39459_0"] - }, - { - "inputs" : ["ReplaceSlice_39453"], - "lower_bounds" : [ 12, 0, 0 ], - "name" : "Slice_39457", - "op" : "Slice", - "outputs" : ["Slice_39457_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 13, 64, 256 ] - }, - { - "inputs" : [ "Parameter_34856", "Add_39458" ], - "name" : "Multiply_39461", - "op" : "Multiply", - "outputs" : ["Multiply_39461_0"] - }, - { - "inputs" : [ "Add_39458", "Parameter_34372" ], - "name" : "Multiply_39462", - "op" : "Multiply", - "outputs" : ["Multiply_39462_0"] - }, - { - "inputs" : [ "Parameter_34848", "Add_39458" ], - "name" : "Multiply_39463", - "op" : "Multiply", - "outputs" : ["Multiply_39463_0"] - }, - { - "inputs" : [ "Add_39458", "Parameter_34363" ], - "name" : "Multiply_39460", - "op" : "Multiply", - "outputs" : ["Multiply_39460_0"] - }, - { - "inputs" : [ "Multiply_39459", "Parameter_34864" ], - "name" : "Divide_39464", - "op" : "Divide", - "outputs" : ["Divide_39464_0"] - }, - { - "inputs" : ["Multiply_39462"], - "name" : "Negative_39466", - "op" : "Negative", - "outputs" : ["Negative_39466_0"] - }, - { - "inputs" : [ "Multiply_39463", "Multiply_36731" ], - "name" : "Divide_39467", - "op" : "Divide", - "outputs" : ["Divide_39467_0"] - }, - { - "inputs" : ["Multiply_39460"], - "name" : "Negative_39465", - "op" : "Negative", - "outputs" : ["Negative_39465_0"] - }, - { - "inputs" : [ "Divide_39464", "Parameter_34865" ], - "name" : "Multiply_39468", - "op" : "Multiply", - "outputs" : ["Multiply_39468_0"] - }, - { - "inputs" : [ "Negative_39466", "Parameter_34856" ], - "name" : "Multiply_39470", - "op" : "Multiply", - "outputs" : ["Multiply_39470_0"] - }, - { - "inputs" : [ "Broadcast_36356", "Divide_39467" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39471", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39471_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39465", "Parameter_34848" ], - "name" : "Multiply_39469", - "op" : "Multiply", - "outputs" : ["Multiply_39469_0"] - }, - { - "inputs" : ["Multiply_39468"], - "name" : "Negative_39472", - "op" : "Negative", - "outputs" : ["Negative_39472_0"] - }, - { - "inputs" : [ "Multiply_39470", "Parameter_34857" ], - "name" : "Divide_39474", - "op" : "Divide", - "outputs" : ["Divide_39474_0"] - }, - { - "inputs" : ["ReplaceSlice_39471"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39475", - "op" : "Slice", - "outputs" : ["Slice_39475_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39469", "Parameter_34849" ], - "name" : "Divide_39473", - "op" : "Divide", - "outputs" : ["Divide_39473_0"] - }, - { - "inputs" : [ "Divide_39474", "Parameter_34858" ], - "name" : "Multiply_39477", - "op" : "Multiply", - "outputs" : ["Multiply_39477_0"] - }, - { - "inputs" : [ "Divide_39473", "Parameter_34850" ], - "name" : "Multiply_39476", - "op" : "Multiply", - "outputs" : ["Multiply_39476_0"] - }, - { - "inputs" : ["Multiply_39477"], - "name" : "Negative_39479", - "op" : "Negative", - "outputs" : ["Negative_39479_0"] - }, - { - "inputs" : ["Multiply_39476"], - "name" : "Negative_39478", - "op" : "Negative", - "outputs" : ["Negative_39478_0"] - }, - { - "inputs" : [ "Slice_39475", "Negative_39478" ], - "name" : "Add_39480", - "op" : "Add", - "outputs" : ["Add_39480_0"] - }, - { - "inputs" : [ "ReplaceSlice_39471", "Add_39480" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39481", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39481_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39481"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39482", - "op" : "Slice", - "outputs" : ["Slice_39482_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39482", "Negative_39479" ], - "name" : "Add_39483", - "op" : "Add", - "outputs" : ["Add_39483_0"] - }, - { - "inputs" : [ "ReplaceSlice_39481", "Add_39483" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39484", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39484_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39484"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39485", - "op" : "Slice", - "outputs" : ["Slice_39485_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39485", "Negative_39472" ], - "name" : "Add_39486", - "op" : "Add", - "outputs" : ["Add_39486_0"] - }, - { - "inputs" : [ "ReplaceSlice_39484", "Add_39486" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39487", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39487_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_39487"], - "name" : "Sum_39489", - "op" : "Sum", - "outputs" : ["Sum_39489_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39487", "Reshape_36475" ], - "name" : "Dot_39490", - "op" : "Dot", - "outputs" : ["Dot_39490_0"] - }, - { - "inputs" : [ "Reshape_36558", "ReplaceSlice_39487" ], - "name" : "Dot_39493", - "op" : "Dot", - "outputs" : ["Dot_39493_0"] - }, - { - "inputs" : ["ReplaceSlice_39487"], - "name" : "Sum_39488", - "op" : "Sum", - "outputs" : ["Sum_39488_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36729", "ReplaceSlice_39487" ], - "name" : "Dot_39491", - "op" : "Dot", - "outputs" : ["Dot_39491_0"] - }, - { - "inputs" : [ "ReplaceSlice_39487", "Reshape_36422" ], - "name" : "Dot_39492", - "op" : "Dot", - "outputs" : ["Dot_39492_0"] - }, - { - "inputs" : [ "Add_39443", "Sum_39489" ], - "name" : "Add_39495", - "op" : "Add", - "outputs" : ["Add_39495_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39490"], - "name" : "Reshape_39496", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39496_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39493"], - "name" : "Reshape_39499", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39499_0"] - }, - { - "inputs" : [ "Add_39444", "Sum_39488" ], - "name" : "Add_39494", - "op" : "Add", - "outputs" : ["Add_39494_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39491"], - "name" : "Reshape_39497", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39497_0"] - }, - { - "inputs" : [ "Dot_39492", "Reshape_36615" ], - "name" : "Add_39498", - "op" : "Add", - "outputs" : ["Add_39498_0"] - }, - { - "inputs" : [ "Slice_39457", "Reshape_39496" ], - "name" : "Add_39500", - "op" : "Add", - "outputs" : ["Add_39500_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39499"], - "name" : "Reshape_39504", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39504_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39497"], - "name" : "Reshape_39501", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39501_0"] - }, - { - "inputs" : [ "Add_39498", "Parameter_34371" ], - "name" : "Multiply_39503", - "op" : "Multiply", - "outputs" : ["Multiply_39503_0"] - }, - { - "inputs" : [ "Parameter_34835", "Add_39498" ], - "name" : "Multiply_39502", - "op" : "Multiply", - "outputs" : ["Multiply_39502_0"] - }, - { - "inputs" : [ "ReplaceSlice_39453", "Add_39500" ], - "lower_bounds" : [ 12, 0, 0 ], - "name" : "ReplaceSlice_39505", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39505_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 13, 64, 256 ] - }, - { - "inputs" : [ "Add_39456", "Reshape_39504" ], - "name" : "Add_39509", - "op" : "Add", - "outputs" : ["Add_39509_0"] - }, - { - "inputs" : [ "Add_39452", "Reshape_39501" ], - "name" : "Add_39506", - "op" : "Add", - "outputs" : ["Add_39506_0"] - }, - { - "inputs" : ["Multiply_39503"], - "name" : "Negative_39508", - "op" : "Negative", - "outputs" : ["Negative_39508_0"] - }, - { - "inputs" : [ "Multiply_39502", "Multiply_36728" ], - "name" : "Divide_39507", - "op" : "Divide", - "outputs" : ["Divide_39507_0"] - }, - { - "inputs" : ["ReplaceSlice_39505"], - "lower_bounds" : [ 11, 0, 0 ], - "name" : "Slice_39510", - "op" : "Slice", - "outputs" : ["Slice_39510_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 12, 64, 256 ] - }, - { - "inputs" : [ "Negative_39508", "Parameter_34835" ], - "name" : "Multiply_39512", - "op" : "Multiply", - "outputs" : ["Multiply_39512_0"] - }, - { - "inputs" : [ "Multiply_39461", "Divide_39507" ], - "name" : "Add_39511", - "op" : "Add", - "outputs" : ["Add_39511_0"] - }, - { - "inputs" : [ "Multiply_39512", "Parameter_34836" ], - "name" : "Divide_39517", - "op" : "Divide", - "outputs" : ["Divide_39517_0"] - }, - { - "inputs" : [ "Add_39511", "Parameter_34383" ], - "name" : "Multiply_39514", - "op" : "Multiply", - "outputs" : ["Multiply_39514_0"] - }, - { - "inputs" : [ "Add_39511", "Parameter_34374" ], - "name" : "Multiply_39513", - "op" : "Multiply", - "outputs" : ["Multiply_39513_0"] - }, - { - "inputs" : [ "Parameter_34828", "Add_39511" ], - "name" : "Multiply_39516", - "op" : "Multiply", - "outputs" : ["Multiply_39516_0"] - }, - { - "inputs" : [ "Parameter_34820", "Add_39511" ], - "name" : "Multiply_39515", - "op" : "Multiply", - "outputs" : ["Multiply_39515_0"] - }, - { - "inputs" : [ "Divide_39517", "Parameter_34837" ], - "name" : "Multiply_39521", - "op" : "Multiply", - "outputs" : ["Multiply_39521_0"] - }, - { - "inputs" : ["Multiply_39514"], - "name" : "Negative_39519", - "op" : "Negative", - "outputs" : ["Negative_39519_0"] - }, - { - "inputs" : ["Multiply_39513"], - "name" : "Negative_39518", - "op" : "Negative", - "outputs" : ["Negative_39518_0"] - }, - { - "inputs" : [ "Multiply_39515", "Multiply_36726" ], - "name" : "Divide_39520", - "op" : "Divide", - "outputs" : ["Divide_39520_0"] - }, - { - "inputs" : ["Multiply_39521"], - "name" : "Negative_39525", - "op" : "Negative", - "outputs" : ["Negative_39525_0"] - }, - { - "inputs" : [ "Negative_39519", "Parameter_34828" ], - "name" : "Multiply_39523", - "op" : "Multiply", - "outputs" : ["Multiply_39523_0"] - }, - { - "inputs" : [ "Negative_39518", "Parameter_34820" ], - "name" : "Multiply_39522", - "op" : "Multiply", - "outputs" : ["Multiply_39522_0"] - }, - { - "inputs" : [ "Broadcast_36357", "Divide_39520" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39524", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39524_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_39523", "Parameter_34829" ], - "name" : "Divide_39527", - "op" : "Divide", - "outputs" : ["Divide_39527_0"] - }, - { - "inputs" : [ "Multiply_39522", "Parameter_34821" ], - "name" : "Divide_39526", - "op" : "Divide", - "outputs" : ["Divide_39526_0"] - }, - { - "inputs" : ["ReplaceSlice_39524"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39528", - "op" : "Slice", - "outputs" : ["Slice_39528_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39527", "Parameter_34830" ], - "name" : "Multiply_39530", - "op" : "Multiply", - "outputs" : ["Multiply_39530_0"] - }, - { - "inputs" : [ "Divide_39526", "Parameter_34822" ], - "name" : "Multiply_39529", - "op" : "Multiply", - "outputs" : ["Multiply_39529_0"] - }, - { - "inputs" : ["Multiply_39530"], - "name" : "Negative_39532", - "op" : "Negative", - "outputs" : ["Negative_39532_0"] - }, - { - "inputs" : ["Multiply_39529"], - "name" : "Negative_39531", - "op" : "Negative", - "outputs" : ["Negative_39531_0"] - }, - { - "inputs" : [ "Slice_39528", "Negative_39531" ], - "name" : "Add_39533", - "op" : "Add", - "outputs" : ["Add_39533_0"] - }, - { - "inputs" : [ "ReplaceSlice_39524", "Add_39533" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39534", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39534_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39534"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39535", - "op" : "Slice", - "outputs" : ["Slice_39535_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39535", "Negative_39532" ], - "name" : "Add_39536", - "op" : "Add", - "outputs" : ["Add_39536_0"] - }, - { - "inputs" : [ "ReplaceSlice_39534", "Add_39536" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39537", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39537_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39537"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39538", - "op" : "Slice", - "outputs" : ["Slice_39538_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39538", "Negative_39525" ], - "name" : "Add_39539", - "op" : "Add", - "outputs" : ["Add_39539_0"] - }, - { - "inputs" : [ "ReplaceSlice_39537", "Add_39539" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39540", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39540_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39540", "Reshape_36418" ], - "name" : "Dot_39542", - "op" : "Dot", - "outputs" : ["Dot_39542_0"] - }, - { - "inputs" : ["ReplaceSlice_39540"], - "name" : "Sum_39545", - "op" : "Sum", - "outputs" : ["Sum_39545_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39540", "Reshape_36476" ], - "name" : "Dot_39541", - "op" : "Dot", - "outputs" : ["Dot_39541_0"] - }, - { - "inputs" : ["ReplaceSlice_39540"], - "name" : "Sum_39546", - "op" : "Sum", - "outputs" : ["Sum_39546_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36724", "ReplaceSlice_39540" ], - "name" : "Dot_39543", - "op" : "Dot", - "outputs" : ["Dot_39543_0"] - }, - { - "inputs" : [ "Reshape_36557", "ReplaceSlice_39540" ], - "name" : "Dot_39544", - "op" : "Dot", - "outputs" : ["Dot_39544_0"] - }, - { - "inputs" : [ "Dot_39542", "Reshape_36614" ], - "name" : "Add_39548", - "op" : "Add", - "outputs" : ["Add_39548_0"] - }, - { - "inputs" : [ "Add_39494", "Sum_39545" ], - "name" : "Add_39551", - "op" : "Add", - "outputs" : ["Add_39551_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39541"], - "name" : "Reshape_39547", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39547_0"] - }, - { - "inputs" : [ "Add_39495", "Sum_39546" ], - "name" : "Add_39552", - "op" : "Add", - "outputs" : ["Add_39552_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39543"], - "name" : "Reshape_39549", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39549_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39544"], - "name" : "Reshape_39550", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39550_0"] - }, - { - "inputs" : [ "Parameter_34807", "Add_39548" ], - "name" : "Multiply_39555", - "op" : "Multiply", - "outputs" : ["Multiply_39555_0"] - }, - { - "inputs" : [ "Add_39548", "Parameter_34382" ], - "name" : "Multiply_39554", - "op" : "Multiply", - "outputs" : ["Multiply_39554_0"] - }, - { - "inputs" : [ "Slice_39510", "Reshape_39547" ], - "name" : "Add_39553", - "op" : "Add", - "outputs" : ["Add_39553_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39549"], - "name" : "Reshape_39556", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39556_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39550"], - "name" : "Reshape_39557", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39557_0"] - }, - { - "inputs" : [ "Multiply_39555", "Multiply_36723" ], - "name" : "Divide_39560", - "op" : "Divide", - "outputs" : ["Divide_39560_0"] - }, - { - "inputs" : ["Multiply_39554"], - "name" : "Negative_39559", - "op" : "Negative", - "outputs" : ["Negative_39559_0"] - }, - { - "inputs" : [ "ReplaceSlice_39505", "Add_39553" ], - "lower_bounds" : [ 11, 0, 0 ], - "name" : "ReplaceSlice_39558", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39558_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 12, 64, 256 ] - }, - { - "inputs" : [ "Add_39506", "Reshape_39556" ], - "name" : "Add_39561", - "op" : "Add", - "outputs" : ["Add_39561_0"] - }, - { - "inputs" : [ "Add_39509", "Reshape_39557" ], - "name" : "Add_39562", - "op" : "Add", - "outputs" : ["Add_39562_0"] - }, - { - "inputs" : [ "Multiply_39516", "Divide_39560" ], - "name" : "Add_39565", - "op" : "Add", - "outputs" : ["Add_39565_0"] - }, - { - "inputs" : [ "Negative_39559", "Parameter_34807" ], - "name" : "Multiply_39564", - "op" : "Multiply", - "outputs" : ["Multiply_39564_0"] - }, - { - "inputs" : ["ReplaceSlice_39558"], - "lower_bounds" : [ 10, 0, 0 ], - "name" : "Slice_39563", - "op" : "Slice", - "outputs" : ["Slice_39563_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 11, 64, 256 ] - }, - { - "inputs" : [ "Add_39565", "Parameter_34394" ], - "name" : "Multiply_39567", - "op" : "Multiply", - "outputs" : ["Multiply_39567_0"] - }, - { - "inputs" : [ "Add_39565", "Parameter_34385" ], - "name" : "Multiply_39570", - "op" : "Multiply", - "outputs" : ["Multiply_39570_0"] - }, - { - "inputs" : [ "Parameter_34800", "Add_39565" ], - "name" : "Multiply_39568", - "op" : "Multiply", - "outputs" : ["Multiply_39568_0"] - }, - { - "inputs" : [ "Parameter_34792", "Add_39565" ], - "name" : "Multiply_39569", - "op" : "Multiply", - "outputs" : ["Multiply_39569_0"] - }, - { - "inputs" : [ "Multiply_39564", "Parameter_34808" ], - "name" : "Divide_39566", - "op" : "Divide", - "outputs" : ["Divide_39566_0"] - }, - { - "inputs" : ["Multiply_39567"], - "name" : "Negative_39572", - "op" : "Negative", - "outputs" : ["Negative_39572_0"] - }, - { - "inputs" : ["Multiply_39570"], - "name" : "Negative_39574", - "op" : "Negative", - "outputs" : ["Negative_39574_0"] - }, - { - "inputs" : [ "Multiply_39569", "Multiply_36721" ], - "name" : "Divide_39573", - "op" : "Divide", - "outputs" : ["Divide_39573_0"] - }, - { - "inputs" : [ "Divide_39566", "Parameter_34809" ], - "name" : "Multiply_39571", - "op" : "Multiply", - "outputs" : ["Multiply_39571_0"] - }, - { - "inputs" : [ "Negative_39572", "Parameter_34800" ], - "name" : "Multiply_39576", - "op" : "Multiply", - "outputs" : ["Multiply_39576_0"] - }, - { - "inputs" : [ "Negative_39574", "Parameter_34792" ], - "name" : "Multiply_39578", - "op" : "Multiply", - "outputs" : ["Multiply_39578_0"] - }, - { - "inputs" : [ "Broadcast_36358", "Divide_39573" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39577", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39577_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_39571"], - "name" : "Negative_39575", - "op" : "Negative", - "outputs" : ["Negative_39575_0"] - }, - { - "inputs" : [ "Multiply_39576", "Parameter_34801" ], - "name" : "Divide_39579", - "op" : "Divide", - "outputs" : ["Divide_39579_0"] - }, - { - "inputs" : [ "Multiply_39578", "Parameter_34793" ], - "name" : "Divide_39581", - "op" : "Divide", - "outputs" : ["Divide_39581_0"] - }, - { - "inputs" : ["ReplaceSlice_39577"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39580", - "op" : "Slice", - "outputs" : ["Slice_39580_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39579", "Parameter_34802" ], - "name" : "Multiply_39582", - "op" : "Multiply", - "outputs" : ["Multiply_39582_0"] - }, - { - "inputs" : [ "Divide_39581", "Parameter_34794" ], - "name" : "Multiply_39583", - "op" : "Multiply", - "outputs" : ["Multiply_39583_0"] - }, - { - "inputs" : ["Multiply_39582"], - "name" : "Negative_39584", - "op" : "Negative", - "outputs" : ["Negative_39584_0"] - }, - { - "inputs" : ["Multiply_39583"], - "name" : "Negative_39585", - "op" : "Negative", - "outputs" : ["Negative_39585_0"] - }, - { - "inputs" : [ "Slice_39580", "Negative_39585" ], - "name" : "Add_39586", - "op" : "Add", - "outputs" : ["Add_39586_0"] - }, - { - "inputs" : [ "ReplaceSlice_39577", "Add_39586" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39587", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39587_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39587"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39588", - "op" : "Slice", - "outputs" : ["Slice_39588_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39588", "Negative_39584" ], - "name" : "Add_39589", - "op" : "Add", - "outputs" : ["Add_39589_0"] - }, - { - "inputs" : [ "ReplaceSlice_39587", "Add_39589" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39590", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39590_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39590"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39591", - "op" : "Slice", - "outputs" : ["Slice_39591_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39591", "Negative_39575" ], - "name" : "Add_39592", - "op" : "Add", - "outputs" : ["Add_39592_0"] - }, - { - "inputs" : [ "ReplaceSlice_39590", "Add_39592" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39593", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39593_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36719", "ReplaceSlice_39593" ], - "name" : "Dot_39599", - "op" : "Dot", - "outputs" : ["Dot_39599_0"] - }, - { - "inputs" : ["ReplaceSlice_39593"], - "name" : "Sum_39596", - "op" : "Sum", - "outputs" : ["Sum_39596_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39593", "Reshape_36426" ], - "name" : "Dot_39597", - "op" : "Dot", - "outputs" : ["Dot_39597_0"] - }, - { - "inputs" : ["ReplaceSlice_39593"], - "name" : "Sum_39594", - "op" : "Sum", - "outputs" : ["Sum_39594_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39593", "Reshape_36473" ], - "name" : "Dot_39598", - "op" : "Dot", - "outputs" : ["Dot_39598_0"] - }, - { - "inputs" : [ "Reshape_36556", "ReplaceSlice_39593" ], - "name" : "Dot_39595", - "op" : "Dot", - "outputs" : ["Dot_39595_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39599"], - "name" : "Reshape_39605", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39605_0"] - }, - { - "inputs" : [ "Add_39552", "Sum_39596" ], - "name" : "Add_39602", - "op" : "Add", - "outputs" : ["Add_39602_0"] - }, - { - "inputs" : [ "Dot_39597", "Reshape_36625" ], - "name" : "Add_39603", - "op" : "Add", - "outputs" : ["Add_39603_0"] - }, - { - "inputs" : [ "Add_39551", "Sum_39594" ], - "name" : "Add_39600", - "op" : "Add", - "outputs" : ["Add_39600_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39598"], - "name" : "Reshape_39604", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39604_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39595"], - "name" : "Reshape_39601", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39601_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39605"], - "name" : "Reshape_39610", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39610_0"] - }, - { - "inputs" : [ "Add_39603", "Parameter_34393" ], - "name" : "Multiply_39607", - "op" : "Multiply", - "outputs" : ["Multiply_39607_0"] - }, - { - "inputs" : [ "Parameter_34779", "Add_39603" ], - "name" : "Multiply_39608", - "op" : "Multiply", - "outputs" : ["Multiply_39608_0"] - }, - { - "inputs" : [ "Slice_39563", "Reshape_39604" ], - "name" : "Add_39609", - "op" : "Add", - "outputs" : ["Add_39609_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39601"], - "name" : "Reshape_39606", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39606_0"] - }, - { - "inputs" : [ "Add_39561", "Reshape_39610" ], - "name" : "Add_39615", - "op" : "Add", - "outputs" : ["Add_39615_0"] - }, - { - "inputs" : ["Multiply_39607"], - "name" : "Negative_39612", - "op" : "Negative", - "outputs" : ["Negative_39612_0"] - }, - { - "inputs" : [ "Multiply_39608", "Multiply_36718" ], - "name" : "Divide_39613", - "op" : "Divide", - "outputs" : ["Divide_39613_0"] - }, - { - "inputs" : [ "ReplaceSlice_39558", "Add_39609" ], - "lower_bounds" : [ 10, 0, 0 ], - "name" : "ReplaceSlice_39614", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39614_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 11, 64, 256 ] - }, - { - "inputs" : [ "Add_39562", "Reshape_39606" ], - "name" : "Add_39611", - "op" : "Add", - "outputs" : ["Add_39611_0"] - }, - { - "inputs" : [ "Negative_39612", "Parameter_34779" ], - "name" : "Multiply_39616", - "op" : "Multiply", - "outputs" : ["Multiply_39616_0"] - }, - { - "inputs" : [ "Multiply_39568", "Divide_39613" ], - "name" : "Add_39617", - "op" : "Add", - "outputs" : ["Add_39617_0"] - }, - { - "inputs" : ["ReplaceSlice_39614"], - "lower_bounds" : [ 9, 0, 0 ], - "name" : "Slice_39618", - "op" : "Slice", - "outputs" : ["Slice_39618_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39616", "Parameter_34780" ], - "name" : "Divide_39619", - "op" : "Divide", - "outputs" : ["Divide_39619_0"] - }, - { - "inputs" : [ "Add_39617", "Parameter_34405" ], - "name" : "Multiply_39620", - "op" : "Multiply", - "outputs" : ["Multiply_39620_0"] - }, - { - "inputs" : [ "Parameter_34764", "Add_39617" ], - "name" : "Multiply_39623", - "op" : "Multiply", - "outputs" : ["Multiply_39623_0"] - }, - { - "inputs" : [ "Parameter_34772", "Add_39617" ], - "name" : "Multiply_39621", - "op" : "Multiply", - "outputs" : ["Multiply_39621_0"] - }, - { - "inputs" : [ "Add_39617", "Parameter_34396" ], - "name" : "Multiply_39622", - "op" : "Multiply", - "outputs" : ["Multiply_39622_0"] - }, - { - "inputs" : [ "Divide_39619", "Parameter_34781" ], - "name" : "Multiply_39624", - "op" : "Multiply", - "outputs" : ["Multiply_39624_0"] - }, - { - "inputs" : ["Multiply_39620"], - "name" : "Negative_39625", - "op" : "Negative", - "outputs" : ["Negative_39625_0"] - }, - { - "inputs" : [ "Multiply_39623", "Multiply_36716" ], - "name" : "Divide_39627", - "op" : "Divide", - "outputs" : ["Divide_39627_0"] - }, - { - "inputs" : ["Multiply_39622"], - "name" : "Negative_39626", - "op" : "Negative", - "outputs" : ["Negative_39626_0"] - }, - { - "inputs" : ["Multiply_39624"], - "name" : "Negative_39628", - "op" : "Negative", - "outputs" : ["Negative_39628_0"] - }, - { - "inputs" : [ "Negative_39625", "Parameter_34772" ], - "name" : "Multiply_39629", - "op" : "Multiply", - "outputs" : ["Multiply_39629_0"] - }, - { - "inputs" : [ "Broadcast_36359", "Divide_39627" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39631", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39631_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39626", "Parameter_34764" ], - "name" : "Multiply_39630", - "op" : "Multiply", - "outputs" : ["Multiply_39630_0"] - }, - { - "inputs" : [ "Multiply_39629", "Parameter_34773" ], - "name" : "Divide_39632", - "op" : "Divide", - "outputs" : ["Divide_39632_0"] - }, - { - "inputs" : ["ReplaceSlice_39631"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39634", - "op" : "Slice", - "outputs" : ["Slice_39634_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39630", "Parameter_34765" ], - "name" : "Divide_39633", - "op" : "Divide", - "outputs" : ["Divide_39633_0"] - }, - { - "inputs" : [ "Divide_39632", "Parameter_34774" ], - "name" : "Multiply_39635", - "op" : "Multiply", - "outputs" : ["Multiply_39635_0"] - }, - { - "inputs" : [ "Divide_39633", "Parameter_34766" ], - "name" : "Multiply_39636", - "op" : "Multiply", - "outputs" : ["Multiply_39636_0"] - }, - { - "inputs" : ["Multiply_39635"], - "name" : "Negative_39637", - "op" : "Negative", - "outputs" : ["Negative_39637_0"] - }, - { - "inputs" : ["Multiply_39636"], - "name" : "Negative_39638", - "op" : "Negative", - "outputs" : ["Negative_39638_0"] - }, - { - "inputs" : [ "Slice_39634", "Negative_39638" ], - "name" : "Add_39639", - "op" : "Add", - "outputs" : ["Add_39639_0"] - }, - { - "inputs" : [ "ReplaceSlice_39631", "Add_39639" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39640", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39640_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39640"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39641", - "op" : "Slice", - "outputs" : ["Slice_39641_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39641", "Negative_39637" ], - "name" : "Add_39642", - "op" : "Add", - "outputs" : ["Add_39642_0"] - }, - { - "inputs" : [ "ReplaceSlice_39640", "Add_39642" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39643", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39643_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39643"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39644", - "op" : "Slice", - "outputs" : ["Slice_39644_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39644", "Negative_39628" ], - "name" : "Add_39645", - "op" : "Add", - "outputs" : ["Add_39645_0"] - }, - { - "inputs" : [ "ReplaceSlice_39643", "Add_39645" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39646", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39646_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36555", "ReplaceSlice_39646" ], - "name" : "Dot_39648", - "op" : "Dot", - "outputs" : ["Dot_39648_0"] - }, - { - "inputs" : [ "ReplaceSlice_39646", "Reshape_36399" ], - "name" : "Dot_39647", - "op" : "Dot", - "outputs" : ["Dot_39647_0"] - }, - { - "inputs" : [ "Reshape_36714", "ReplaceSlice_39646" ], - "name" : "Dot_39652", - "op" : "Dot", - "outputs" : ["Dot_39652_0"] - }, - { - "inputs" : ["ReplaceSlice_39646"], - "name" : "Sum_39649", - "op" : "Sum", - "outputs" : ["Sum_39649_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39646", "Reshape_36472" ], - "name" : "Dot_39650", - "op" : "Dot", - "outputs" : ["Dot_39650_0"] - }, - { - "inputs" : ["ReplaceSlice_39646"], - "name" : "Sum_39651", - "op" : "Sum", - "outputs" : ["Sum_39651_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39648"], - "name" : "Reshape_39654", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39654_0"] - }, - { - "inputs" : [ "Dot_39647", "Reshape_36610" ], - "name" : "Add_39653", - "op" : "Add", - "outputs" : ["Add_39653_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39652"], - "name" : "Reshape_39658", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39658_0"] - }, - { - "inputs" : [ "Add_39602", "Sum_39649" ], - "name" : "Add_39655", - "op" : "Add", - "outputs" : ["Add_39655_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39650"], - "name" : "Reshape_39656", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39656_0"] - }, - { - "inputs" : [ "Add_39600", "Sum_39651" ], - "name" : "Add_39657", - "op" : "Add", - "outputs" : ["Add_39657_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39654"], - "name" : "Reshape_39661", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39661_0"] - }, - { - "inputs" : [ "Add_39653", "Parameter_34404" ], - "name" : "Multiply_39659", - "op" : "Multiply", - "outputs" : ["Multiply_39659_0"] - }, - { - "inputs" : [ "Parameter_34751", "Add_39653" ], - "name" : "Multiply_39660", - "op" : "Multiply", - "outputs" : ["Multiply_39660_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39658"], - "name" : "Reshape_39663", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39663_0"] - }, - { - "inputs" : [ "Slice_39618", "Reshape_39656" ], - "name" : "Add_39662", - "op" : "Add", - "outputs" : ["Add_39662_0"] - }, - { - "inputs" : [ "Add_39611", "Reshape_39661" ], - "name" : "Add_39666", - "op" : "Add", - "outputs" : ["Add_39666_0"] - }, - { - "inputs" : ["Multiply_39659"], - "name" : "Negative_39664", - "op" : "Negative", - "outputs" : ["Negative_39664_0"] - }, - { - "inputs" : [ "Multiply_39660", "Multiply_36713" ], - "name" : "Divide_39665", - "op" : "Divide", - "outputs" : ["Divide_39665_0"] - }, - { - "inputs" : [ "Add_39615", "Reshape_39663" ], - "name" : "Add_39668", - "op" : "Add", - "outputs" : ["Add_39668_0"] - }, - { - "inputs" : [ "ReplaceSlice_39614", "Add_39662" ], - "lower_bounds" : [ 9, 0, 0 ], - "name" : "ReplaceSlice_39667", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39667_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 64, 256 ] - }, - { - "inputs" : [ "Negative_39664", "Parameter_34751" ], - "name" : "Multiply_39669", - "op" : "Multiply", - "outputs" : ["Multiply_39669_0"] - }, - { - "inputs" : [ "Multiply_39621", "Divide_39665" ], - "name" : "Add_39670", - "op" : "Add", - "outputs" : ["Add_39670_0"] - }, - { - "inputs" : ["ReplaceSlice_39667"], - "lower_bounds" : [ 8, 0, 0 ], - "name" : "Slice_39671", - "op" : "Slice", - "outputs" : ["Slice_39671_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 9, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39669", "Parameter_34752" ], - "name" : "Divide_39672", - "op" : "Divide", - "outputs" : ["Divide_39672_0"] - }, - { - "inputs" : [ "Parameter_34736", "Add_39670" ], - "name" : "Multiply_39676", - "op" : "Multiply", - "outputs" : ["Multiply_39676_0"] - }, - { - "inputs" : [ "Add_39670", "Parameter_34416" ], - "name" : "Multiply_39675", - "op" : "Multiply", - "outputs" : ["Multiply_39675_0"] - }, - { - "inputs" : [ "Parameter_34744", "Add_39670" ], - "name" : "Multiply_39674", - "op" : "Multiply", - "outputs" : ["Multiply_39674_0"] - }, - { - "inputs" : [ "Add_39670", "Parameter_34407" ], - "name" : "Multiply_39673", - "op" : "Multiply", - "outputs" : ["Multiply_39673_0"] - }, - { - "inputs" : [ "Divide_39672", "Parameter_34753" ], - "name" : "Multiply_39677", - "op" : "Multiply", - "outputs" : ["Multiply_39677_0"] - }, - { - "inputs" : [ "Multiply_39676", "Multiply_36711" ], - "name" : "Divide_39680", - "op" : "Divide", - "outputs" : ["Divide_39680_0"] - }, - { - "inputs" : ["Multiply_39675"], - "name" : "Negative_39679", - "op" : "Negative", - "outputs" : ["Negative_39679_0"] - }, - { - "inputs" : ["Multiply_39673"], - "name" : "Negative_39678", - "op" : "Negative", - "outputs" : ["Negative_39678_0"] - }, - { - "inputs" : ["Multiply_39677"], - "name" : "Negative_39681", - "op" : "Negative", - "outputs" : ["Negative_39681_0"] - }, - { - "inputs" : [ "Broadcast_36360", "Divide_39680" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39684", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39684_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39679", "Parameter_34744" ], - "name" : "Multiply_39683", - "op" : "Multiply", - "outputs" : ["Multiply_39683_0"] - }, - { - "inputs" : [ "Negative_39678", "Parameter_34736" ], - "name" : "Multiply_39682", - "op" : "Multiply", - "outputs" : ["Multiply_39682_0"] - }, - { - "inputs" : ["ReplaceSlice_39684"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39687", - "op" : "Slice", - "outputs" : ["Slice_39687_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39683", "Parameter_34745" ], - "name" : "Divide_39686", - "op" : "Divide", - "outputs" : ["Divide_39686_0"] - }, - { - "inputs" : [ "Multiply_39682", "Parameter_34737" ], - "name" : "Divide_39685", - "op" : "Divide", - "outputs" : ["Divide_39685_0"] - }, - { - "inputs" : [ "Divide_39686", "Parameter_34746" ], - "name" : "Multiply_39689", - "op" : "Multiply", - "outputs" : ["Multiply_39689_0"] - }, - { - "inputs" : [ "Divide_39685", "Parameter_34738" ], - "name" : "Multiply_39688", - "op" : "Multiply", - "outputs" : ["Multiply_39688_0"] - }, - { - "inputs" : ["Multiply_39689"], - "name" : "Negative_39691", - "op" : "Negative", - "outputs" : ["Negative_39691_0"] - }, - { - "inputs" : ["Multiply_39688"], - "name" : "Negative_39690", - "op" : "Negative", - "outputs" : ["Negative_39690_0"] - }, - { - "inputs" : [ "Slice_39687", "Negative_39690" ], - "name" : "Add_39692", - "op" : "Add", - "outputs" : ["Add_39692_0"] - }, - { - "inputs" : [ "ReplaceSlice_39684", "Add_39692" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39693", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39693_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39693"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39694", - "op" : "Slice", - "outputs" : ["Slice_39694_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39694", "Negative_39691" ], - "name" : "Add_39695", - "op" : "Add", - "outputs" : ["Add_39695_0"] - }, - { - "inputs" : [ "ReplaceSlice_39693", "Add_39695" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39696", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39696_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39696"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39697", - "op" : "Slice", - "outputs" : ["Slice_39697_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39697", "Negative_39681" ], - "name" : "Add_39698", - "op" : "Add", - "outputs" : ["Add_39698_0"] - }, - { - "inputs" : [ "ReplaceSlice_39696", "Add_39698" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39699", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39699_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39699", "Reshape_36400" ], - "name" : "Dot_39702", - "op" : "Dot", - "outputs" : ["Dot_39702_0"] - }, - { - "inputs" : ["ReplaceSlice_39699"], - "name" : "Sum_39704", - "op" : "Sum", - "outputs" : ["Sum_39704_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36554", "ReplaceSlice_39699" ], - "name" : "Dot_39705", - "op" : "Dot", - "outputs" : ["Dot_39705_0"] - }, - { - "inputs" : ["ReplaceSlice_39699"], - "name" : "Sum_39703", - "op" : "Sum", - "outputs" : ["Sum_39703_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36709", "ReplaceSlice_39699" ], - "name" : "Dot_39700", - "op" : "Dot", - "outputs" : ["Dot_39700_0"] - }, - { - "inputs" : [ "ReplaceSlice_39699", "Reshape_36474" ], - "name" : "Dot_39701", - "op" : "Dot", - "outputs" : ["Dot_39701_0"] - }, - { - "inputs" : [ "Dot_39702", "Reshape_36647" ], - "name" : "Add_39708", - "op" : "Add", - "outputs" : ["Add_39708_0"] - }, - { - "inputs" : [ "Add_39657", "Sum_39704" ], - "name" : "Add_39710", - "op" : "Add", - "outputs" : ["Add_39710_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39705"], - "name" : "Reshape_39711", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39711_0"] - }, - { - "inputs" : [ "Add_39655", "Sum_39703" ], - "name" : "Add_39709", - "op" : "Add", - "outputs" : ["Add_39709_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39700"], - "name" : "Reshape_39706", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39706_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39701"], - "name" : "Reshape_39707", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39707_0"] - }, - { - "inputs" : [ "Add_39708", "Parameter_34415" ], - "name" : "Multiply_39714", - "op" : "Multiply", - "outputs" : ["Multiply_39714_0"] - }, - { - "inputs" : [ "Parameter_34723", "Add_39708" ], - "name" : "Multiply_39715", - "op" : "Multiply", - "outputs" : ["Multiply_39715_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39711"], - "name" : "Reshape_39716", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39716_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39706"], - "name" : "Reshape_39712", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39712_0"] - }, - { - "inputs" : [ "Slice_39671", "Reshape_39707" ], - "name" : "Add_39713", - "op" : "Add", - "outputs" : ["Add_39713_0"] - }, - { - "inputs" : ["Multiply_39714"], - "name" : "Negative_39719", - "op" : "Negative", - "outputs" : ["Negative_39719_0"] - }, - { - "inputs" : [ "Multiply_39715", "Multiply_36708" ], - "name" : "Divide_39720", - "op" : "Divide", - "outputs" : ["Divide_39720_0"] - }, - { - "inputs" : [ "Add_39666", "Reshape_39716" ], - "name" : "Add_39721", - "op" : "Add", - "outputs" : ["Add_39721_0"] - }, - { - "inputs" : [ "Add_39668", "Reshape_39712" ], - "name" : "Add_39717", - "op" : "Add", - "outputs" : ["Add_39717_0"] - }, - { - "inputs" : [ "ReplaceSlice_39667", "Add_39713" ], - "lower_bounds" : [ 8, 0, 0 ], - "name" : "ReplaceSlice_39718", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39718_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 9, 64, 256 ] - }, - { - "inputs" : [ "Negative_39719", "Parameter_34723" ], - "name" : "Multiply_39723", - "op" : "Multiply", - "outputs" : ["Multiply_39723_0"] - }, - { - "inputs" : [ "Multiply_39674", "Divide_39720" ], - "name" : "Add_39724", - "op" : "Add", - "outputs" : ["Add_39724_0"] - }, - { - "inputs" : ["ReplaceSlice_39718"], - "lower_bounds" : [ 7, 0, 0 ], - "name" : "Slice_39722", - "op" : "Slice", - "outputs" : ["Slice_39722_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 8, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39723", "Parameter_34724" ], - "name" : "Divide_39725", - "op" : "Divide", - "outputs" : ["Divide_39725_0"] - }, - { - "inputs" : [ "Parameter_34716", "Add_39724" ], - "name" : "Multiply_39727", - "op" : "Multiply", - "outputs" : ["Multiply_39727_0"] - }, - { - "inputs" : [ "Add_39724", "Parameter_34418" ], - "name" : "Multiply_39728", - "op" : "Multiply", - "outputs" : ["Multiply_39728_0"] - }, - { - "inputs" : [ "Add_39724", "Parameter_34427" ], - "name" : "Multiply_39729", - "op" : "Multiply", - "outputs" : ["Multiply_39729_0"] - }, - { - "inputs" : [ "Parameter_34708", "Add_39724" ], - "name" : "Multiply_39726", - "op" : "Multiply", - "outputs" : ["Multiply_39726_0"] - }, - { - "inputs" : [ "Divide_39725", "Parameter_34725" ], - "name" : "Multiply_39730", - "op" : "Multiply", - "outputs" : ["Multiply_39730_0"] - }, - { - "inputs" : ["Multiply_39728"], - "name" : "Negative_39732", - "op" : "Negative", - "outputs" : ["Negative_39732_0"] - }, - { - "inputs" : ["Multiply_39729"], - "name" : "Negative_39733", - "op" : "Negative", - "outputs" : ["Negative_39733_0"] - }, - { - "inputs" : [ "Multiply_39726", "Multiply_36706" ], - "name" : "Divide_39731", - "op" : "Divide", - "outputs" : ["Divide_39731_0"] - }, - { - "inputs" : ["Multiply_39730"], - "name" : "Negative_39734", - "op" : "Negative", - "outputs" : ["Negative_39734_0"] - }, - { - "inputs" : [ "Negative_39732", "Parameter_34708" ], - "name" : "Multiply_39736", - "op" : "Multiply", - "outputs" : ["Multiply_39736_0"] - }, - { - "inputs" : [ "Negative_39733", "Parameter_34716" ], - "name" : "Multiply_39737", - "op" : "Multiply", - "outputs" : ["Multiply_39737_0"] - }, - { - "inputs" : [ "Broadcast_36361", "Divide_39731" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39735", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39735_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_39736", "Parameter_34709" ], - "name" : "Divide_39739", - "op" : "Divide", - "outputs" : ["Divide_39739_0"] - }, - { - "inputs" : [ "Multiply_39737", "Parameter_34717" ], - "name" : "Divide_39740", - "op" : "Divide", - "outputs" : ["Divide_39740_0"] - }, - { - "inputs" : ["ReplaceSlice_39735"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39738", - "op" : "Slice", - "outputs" : ["Slice_39738_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39739", "Parameter_34710" ], - "name" : "Multiply_39741", - "op" : "Multiply", - "outputs" : ["Multiply_39741_0"] - }, - { - "inputs" : [ "Divide_39740", "Parameter_34718" ], - "name" : "Multiply_39742", - "op" : "Multiply", - "outputs" : ["Multiply_39742_0"] - }, - { - "inputs" : ["Multiply_39741"], - "name" : "Negative_39743", - "op" : "Negative", - "outputs" : ["Negative_39743_0"] - }, - { - "inputs" : ["Multiply_39742"], - "name" : "Negative_39744", - "op" : "Negative", - "outputs" : ["Negative_39744_0"] - }, - { - "inputs" : [ "Slice_39738", "Negative_39743" ], - "name" : "Add_39745", - "op" : "Add", - "outputs" : ["Add_39745_0"] - }, - { - "inputs" : [ "ReplaceSlice_39735", "Add_39745" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39746", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39746_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39746"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39747", - "op" : "Slice", - "outputs" : ["Slice_39747_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39747", "Negative_39744" ], - "name" : "Add_39748", - "op" : "Add", - "outputs" : ["Add_39748_0"] - }, - { - "inputs" : [ "ReplaceSlice_39746", "Add_39748" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39749", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39749_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39749"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39750", - "op" : "Slice", - "outputs" : ["Slice_39750_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39750", "Negative_39734" ], - "name" : "Add_39751", - "op" : "Add", - "outputs" : ["Add_39751_0"] - }, - { - "inputs" : [ "ReplaceSlice_39749", "Add_39751" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39752", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39752_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39752", "Reshape_36466" ], - "name" : "Dot_39757", - "op" : "Dot", - "outputs" : ["Dot_39757_0"] - }, - { - "inputs" : [ "ReplaceSlice_39752", "Reshape_36401" ], - "name" : "Dot_39758", - "op" : "Dot", - "outputs" : ["Dot_39758_0"] - }, - { - "inputs" : ["ReplaceSlice_39752"], - "name" : "Sum_39756", - "op" : "Sum", - "outputs" : ["Sum_39756_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36704", "ReplaceSlice_39752" ], - "name" : "Dot_39753", - "op" : "Dot", - "outputs" : ["Dot_39753_0"] - }, - { - "inputs" : ["ReplaceSlice_39752"], - "name" : "Sum_39755", - "op" : "Sum", - "outputs" : ["Sum_39755_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36553", "ReplaceSlice_39752" ], - "name" : "Dot_39754", - "op" : "Dot", - "outputs" : ["Dot_39754_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39757"], - "name" : "Reshape_39763", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39763_0"] - }, - { - "inputs" : [ "Dot_39758", "Reshape_36611" ], - "name" : "Add_39764", - "op" : "Add", - "outputs" : ["Add_39764_0"] - }, - { - "inputs" : [ "Add_39709", "Sum_39756" ], - "name" : "Add_39762", - "op" : "Add", - "outputs" : ["Add_39762_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39753"], - "name" : "Reshape_39759", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39759_0"] - }, - { - "inputs" : [ "Add_39710", "Sum_39755" ], - "name" : "Add_39761", - "op" : "Add", - "outputs" : ["Add_39761_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39754"], - "name" : "Reshape_39760", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39760_0"] - }, - { - "inputs" : [ "Slice_39722", "Reshape_39763" ], - "name" : "Add_39767", - "op" : "Add", - "outputs" : ["Add_39767_0"] - }, - { - "inputs" : [ "Parameter_34695", "Add_39764" ], - "name" : "Multiply_39769", - "op" : "Multiply", - "outputs" : ["Multiply_39769_0"] - }, - { - "inputs" : [ "Add_39764", "Parameter_34426" ], - "name" : "Multiply_39768", - "op" : "Multiply", - "outputs" : ["Multiply_39768_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39759"], - "name" : "Reshape_39765", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39765_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39760"], - "name" : "Reshape_39766", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39766_0"] - }, - { - "inputs" : [ "ReplaceSlice_39718", "Add_39767" ], - "lower_bounds" : [ 7, 0, 0 ], - "name" : "ReplaceSlice_39772", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39772_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 8, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39769", "Multiply_36703" ], - "name" : "Divide_39774", - "op" : "Divide", - "outputs" : ["Divide_39774_0"] - }, - { - "inputs" : ["Multiply_39768"], - "name" : "Negative_39773", - "op" : "Negative", - "outputs" : ["Negative_39773_0"] - }, - { - "inputs" : [ "Add_39717", "Reshape_39765" ], - "name" : "Add_39770", - "op" : "Add", - "outputs" : ["Add_39770_0"] - }, - { - "inputs" : [ "Add_39721", "Reshape_39766" ], - "name" : "Add_39771", - "op" : "Add", - "outputs" : ["Add_39771_0"] - }, - { - "inputs" : ["ReplaceSlice_39772"], - "lower_bounds" : [ 6, 0, 0 ], - "name" : "Slice_39775", - "op" : "Slice", - "outputs" : ["Slice_39775_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 7, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39727", "Divide_39774" ], - "name" : "Add_39777", - "op" : "Add", - "outputs" : ["Add_39777_0"] - }, - { - "inputs" : [ "Negative_39773", "Parameter_34695" ], - "name" : "Multiply_39776", - "op" : "Multiply", - "outputs" : ["Multiply_39776_0"] - }, - { - "inputs" : [ "Add_39777", "Parameter_34429" ], - "name" : "Multiply_39781", - "op" : "Multiply", - "outputs" : ["Multiply_39781_0"] - }, - { - "inputs" : [ "Add_39777", "Parameter_34438" ], - "name" : "Multiply_39779", - "op" : "Multiply", - "outputs" : ["Multiply_39779_0"] - }, - { - "inputs" : [ "Parameter_34688", "Add_39777" ], - "name" : "Multiply_39780", - "op" : "Multiply", - "outputs" : ["Multiply_39780_0"] - }, - { - "inputs" : [ "Parameter_34680", "Add_39777" ], - "name" : "Multiply_39782", - "op" : "Multiply", - "outputs" : ["Multiply_39782_0"] - }, - { - "inputs" : [ "Multiply_39776", "Parameter_34696" ], - "name" : "Divide_39778", - "op" : "Divide", - "outputs" : ["Divide_39778_0"] - }, - { - "inputs" : ["Multiply_39781"], - "name" : "Negative_39785", - "op" : "Negative", - "outputs" : ["Negative_39785_0"] - }, - { - "inputs" : ["Multiply_39779"], - "name" : "Negative_39784", - "op" : "Negative", - "outputs" : ["Negative_39784_0"] - }, - { - "inputs" : [ "Multiply_39782", "Multiply_36701" ], - "name" : "Divide_39786", - "op" : "Divide", - "outputs" : ["Divide_39786_0"] - }, - { - "inputs" : [ "Divide_39778", "Parameter_34697" ], - "name" : "Multiply_39783", - "op" : "Multiply", - "outputs" : ["Multiply_39783_0"] - }, - { - "inputs" : [ "Negative_39785", "Parameter_34680" ], - "name" : "Multiply_39789", - "op" : "Multiply", - "outputs" : ["Multiply_39789_0"] - }, - { - "inputs" : [ "Negative_39784", "Parameter_34688" ], - "name" : "Multiply_39788", - "op" : "Multiply", - "outputs" : ["Multiply_39788_0"] - }, - { - "inputs" : [ "Broadcast_36362", "Divide_39786" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39790", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39790_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Multiply_39783"], - "name" : "Negative_39787", - "op" : "Negative", - "outputs" : ["Negative_39787_0"] - }, - { - "inputs" : [ "Multiply_39789", "Parameter_34681" ], - "name" : "Divide_39792", - "op" : "Divide", - "outputs" : ["Divide_39792_0"] - }, - { - "inputs" : [ "Multiply_39788", "Parameter_34689" ], - "name" : "Divide_39791", - "op" : "Divide", - "outputs" : ["Divide_39791_0"] - }, - { - "inputs" : ["ReplaceSlice_39790"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39793", - "op" : "Slice", - "outputs" : ["Slice_39793_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39792", "Parameter_34682" ], - "name" : "Multiply_39795", - "op" : "Multiply", - "outputs" : ["Multiply_39795_0"] - }, - { - "inputs" : [ "Divide_39791", "Parameter_34690" ], - "name" : "Multiply_39794", - "op" : "Multiply", - "outputs" : ["Multiply_39794_0"] - }, - { - "inputs" : ["Multiply_39795"], - "name" : "Negative_39797", - "op" : "Negative", - "outputs" : ["Negative_39797_0"] - }, - { - "inputs" : ["Multiply_39794"], - "name" : "Negative_39796", - "op" : "Negative", - "outputs" : ["Negative_39796_0"] - }, - { - "inputs" : [ "Slice_39793", "Negative_39797" ], - "name" : "Add_39798", - "op" : "Add", - "outputs" : ["Add_39798_0"] - }, - { - "inputs" : [ "ReplaceSlice_39790", "Add_39798" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39799", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39799_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39799"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39800", - "op" : "Slice", - "outputs" : ["Slice_39800_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39800", "Negative_39796" ], - "name" : "Add_39801", - "op" : "Add", - "outputs" : ["Add_39801_0"] - }, - { - "inputs" : [ "ReplaceSlice_39799", "Add_39801" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39802", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39802_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39802"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39803", - "op" : "Slice", - "outputs" : ["Slice_39803_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39803", "Negative_39787" ], - "name" : "Add_39804", - "op" : "Add", - "outputs" : ["Add_39804_0"] - }, - { - "inputs" : [ "ReplaceSlice_39802", "Add_39804" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39805", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39805_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_39805"], - "name" : "Sum_39806", - "op" : "Sum", - "outputs" : ["Sum_39806_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36699", "ReplaceSlice_39805" ], - "name" : "Dot_39811", - "op" : "Dot", - "outputs" : ["Dot_39811_0"] - }, - { - "inputs" : ["ReplaceSlice_39805"], - "name" : "Sum_39810", - "op" : "Sum", - "outputs" : ["Sum_39810_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39805", "Reshape_36469" ], - "name" : "Dot_39808", - "op" : "Dot", - "outputs" : ["Dot_39808_0"] - }, - { - "inputs" : [ "Reshape_36552", "ReplaceSlice_39805" ], - "name" : "Dot_39809", - "op" : "Dot", - "outputs" : ["Dot_39809_0"] - }, - { - "inputs" : [ "ReplaceSlice_39805", "Reshape_36402" ], - "name" : "Dot_39807", - "op" : "Dot", - "outputs" : ["Dot_39807_0"] - }, - { - "inputs" : [ "Add_39762", "Sum_39806" ], - "name" : "Add_39812", - "op" : "Add", - "outputs" : ["Add_39812_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39811"], - "name" : "Reshape_39817", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39817_0"] - }, - { - "inputs" : [ "Add_39761", "Sum_39810" ], - "name" : "Add_39816", - "op" : "Add", - "outputs" : ["Add_39816_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39808"], - "name" : "Reshape_39814", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39814_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39809"], - "name" : "Reshape_39815", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39815_0"] - }, - { - "inputs" : [ "Dot_39807", "Reshape_36640" ], - "name" : "Add_39813", - "op" : "Add", - "outputs" : ["Add_39813_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39817"], - "name" : "Reshape_39822", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39822_0"] - }, - { - "inputs" : [ "Slice_39775", "Reshape_39814" ], - "name" : "Add_39820", - "op" : "Add", - "outputs" : ["Add_39820_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39815"], - "name" : "Reshape_39821", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39821_0"] - }, - { - "inputs" : [ "Add_39813", "Parameter_34437" ], - "name" : "Multiply_39818", - "op" : "Multiply", - "outputs" : ["Multiply_39818_0"] - }, - { - "inputs" : [ "Parameter_34667", "Add_39813" ], - "name" : "Multiply_39819", - "op" : "Multiply", - "outputs" : ["Multiply_39819_0"] - }, - { - "inputs" : [ "Add_39770", "Reshape_39822" ], - "name" : "Add_39827", - "op" : "Add", - "outputs" : ["Add_39827_0"] - }, - { - "inputs" : [ "ReplaceSlice_39772", "Add_39820" ], - "lower_bounds" : [ 6, 0, 0 ], - "name" : "ReplaceSlice_39825", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39825_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 7, 64, 256 ] - }, - { - "inputs" : [ "Add_39771", "Reshape_39821" ], - "name" : "Add_39826", - "op" : "Add", - "outputs" : ["Add_39826_0"] - }, - { - "inputs" : ["Multiply_39818"], - "name" : "Negative_39823", - "op" : "Negative", - "outputs" : ["Negative_39823_0"] - }, - { - "inputs" : [ "Multiply_39819", "Multiply_36698" ], - "name" : "Divide_39824", - "op" : "Divide", - "outputs" : ["Divide_39824_0"] - }, - { - "inputs" : ["ReplaceSlice_39825"], - "lower_bounds" : [ 5, 0, 0 ], - "name" : "Slice_39830", - "op" : "Slice", - "outputs" : ["Slice_39830_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 6, 64, 256 ] - }, - { - "inputs" : [ "Negative_39823", "Parameter_34667" ], - "name" : "Multiply_39828", - "op" : "Multiply", - "outputs" : ["Multiply_39828_0"] - }, - { - "inputs" : [ "Multiply_39780", "Divide_39824" ], - "name" : "Add_39829", - "op" : "Add", - "outputs" : ["Add_39829_0"] - }, - { - "inputs" : [ "Multiply_39828", "Parameter_34668" ], - "name" : "Divide_39831", - "op" : "Divide", - "outputs" : ["Divide_39831_0"] - }, - { - "inputs" : [ "Parameter_34660", "Add_39829" ], - "name" : "Multiply_39833", - "op" : "Multiply", - "outputs" : ["Multiply_39833_0"] - }, - { - "inputs" : [ "Parameter_34652", "Add_39829" ], - "name" : "Multiply_39835", - "op" : "Multiply", - "outputs" : ["Multiply_39835_0"] - }, - { - "inputs" : [ "Add_39829", "Parameter_34449" ], - "name" : "Multiply_39834", - "op" : "Multiply", - "outputs" : ["Multiply_39834_0"] - }, - { - "inputs" : [ "Add_39829", "Parameter_34440" ], - "name" : "Multiply_39832", - "op" : "Multiply", - "outputs" : ["Multiply_39832_0"] - }, - { - "inputs" : [ "Divide_39831", "Parameter_34669" ], - "name" : "Multiply_39836", - "op" : "Multiply", - "outputs" : ["Multiply_39836_0"] - }, - { - "inputs" : [ "Multiply_39835", "Multiply_36696" ], - "name" : "Divide_39839", - "op" : "Divide", - "outputs" : ["Divide_39839_0"] - }, - { - "inputs" : ["Multiply_39834"], - "name" : "Negative_39838", - "op" : "Negative", - "outputs" : ["Negative_39838_0"] - }, - { - "inputs" : ["Multiply_39832"], - "name" : "Negative_39837", - "op" : "Negative", - "outputs" : ["Negative_39837_0"] - }, - { - "inputs" : ["Multiply_39836"], - "name" : "Negative_39840", - "op" : "Negative", - "outputs" : ["Negative_39840_0"] - }, - { - "inputs" : [ "Broadcast_36363", "Divide_39839" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39843", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39843_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39838", "Parameter_34660" ], - "name" : "Multiply_39842", - "op" : "Multiply", - "outputs" : ["Multiply_39842_0"] - }, - { - "inputs" : [ "Negative_39837", "Parameter_34652" ], - "name" : "Multiply_39841", - "op" : "Multiply", - "outputs" : ["Multiply_39841_0"] - }, - { - "inputs" : ["ReplaceSlice_39843"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39846", - "op" : "Slice", - "outputs" : ["Slice_39846_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39842", "Parameter_34661" ], - "name" : "Divide_39845", - "op" : "Divide", - "outputs" : ["Divide_39845_0"] - }, - { - "inputs" : [ "Multiply_39841", "Parameter_34653" ], - "name" : "Divide_39844", - "op" : "Divide", - "outputs" : ["Divide_39844_0"] - }, - { - "inputs" : [ "Divide_39845", "Parameter_34662" ], - "name" : "Multiply_39848", - "op" : "Multiply", - "outputs" : ["Multiply_39848_0"] - }, - { - "inputs" : [ "Divide_39844", "Parameter_34654" ], - "name" : "Multiply_39847", - "op" : "Multiply", - "outputs" : ["Multiply_39847_0"] - }, - { - "inputs" : ["Multiply_39848"], - "name" : "Negative_39850", - "op" : "Negative", - "outputs" : ["Negative_39850_0"] - }, - { - "inputs" : ["Multiply_39847"], - "name" : "Negative_39849", - "op" : "Negative", - "outputs" : ["Negative_39849_0"] - }, - { - "inputs" : [ "Slice_39846", "Negative_39849" ], - "name" : "Add_39851", - "op" : "Add", - "outputs" : ["Add_39851_0"] - }, - { - "inputs" : [ "ReplaceSlice_39843", "Add_39851" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39852", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39852_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39852"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39853", - "op" : "Slice", - "outputs" : ["Slice_39853_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39853", "Negative_39850" ], - "name" : "Add_39854", - "op" : "Add", - "outputs" : ["Add_39854_0"] - }, - { - "inputs" : [ "ReplaceSlice_39852", "Add_39854" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39855", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39855_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39855"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39856", - "op" : "Slice", - "outputs" : ["Slice_39856_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39856", "Negative_39840" ], - "name" : "Add_39857", - "op" : "Add", - "outputs" : ["Add_39857_0"] - }, - { - "inputs" : [ "ReplaceSlice_39855", "Add_39857" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39858", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39858_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36694", "ReplaceSlice_39858" ], - "name" : "Dot_39861", - "op" : "Dot", - "outputs" : ["Dot_39861_0"] - }, - { - "inputs" : ["ReplaceSlice_39858"], - "name" : "Sum_39862", - "op" : "Sum", - "outputs" : ["Sum_39862_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39858", "Reshape_36397" ], - "name" : "Dot_39864", - "op" : "Dot", - "outputs" : ["Dot_39864_0"] - }, - { - "inputs" : [ "Reshape_36551", "ReplaceSlice_39858" ], - "name" : "Dot_39860", - "op" : "Dot", - "outputs" : ["Dot_39860_0"] - }, - { - "inputs" : ["ReplaceSlice_39858"], - "name" : "Sum_39863", - "op" : "Sum", - "outputs" : ["Sum_39863_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39858", "Reshape_36470" ], - "name" : "Dot_39859", - "op" : "Dot", - "outputs" : ["Dot_39859_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39861"], - "name" : "Reshape_39867", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39867_0"] - }, - { - "inputs" : [ "Add_39816", "Sum_39862" ], - "name" : "Add_39868", - "op" : "Add", - "outputs" : ["Add_39868_0"] - }, - { - "inputs" : [ "Dot_39864", "Reshape_36612" ], - "name" : "Add_39870", - "op" : "Add", - "outputs" : ["Add_39870_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39860"], - "name" : "Reshape_39866", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39866_0"] - }, - { - "inputs" : [ "Add_39812", "Sum_39863" ], - "name" : "Add_39869", - "op" : "Add", - "outputs" : ["Add_39869_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39859"], - "name" : "Reshape_39865", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39865_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39867"], - "name" : "Reshape_39873", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39873_0"] - }, - { - "inputs" : [ "Add_39870", "Parameter_34448" ], - "name" : "Multiply_39874", - "op" : "Multiply", - "outputs" : ["Multiply_39874_0"] - }, - { - "inputs" : [ "Parameter_34639", "Add_39870" ], - "name" : "Multiply_39875", - "op" : "Multiply", - "outputs" : ["Multiply_39875_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39866"], - "name" : "Reshape_39872", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39872_0"] - }, - { - "inputs" : [ "Slice_39830", "Reshape_39865" ], - "name" : "Add_39871", - "op" : "Add", - "outputs" : ["Add_39871_0"] - }, - { - "inputs" : [ "Add_39827", "Reshape_39873" ], - "name" : "Add_39878", - "op" : "Add", - "outputs" : ["Add_39878_0"] - }, - { - "inputs" : ["Multiply_39874"], - "name" : "Negative_39879", - "op" : "Negative", - "outputs" : ["Negative_39879_0"] - }, - { - "inputs" : [ "Multiply_39875", "Multiply_36693" ], - "name" : "Divide_39880", - "op" : "Divide", - "outputs" : ["Divide_39880_0"] - }, - { - "inputs" : [ "Add_39826", "Reshape_39872" ], - "name" : "Add_39877", - "op" : "Add", - "outputs" : ["Add_39877_0"] - }, - { - "inputs" : [ "ReplaceSlice_39825", "Add_39871" ], - "lower_bounds" : [ 5, 0, 0 ], - "name" : "ReplaceSlice_39876", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39876_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 6, 64, 256 ] - }, - { - "inputs" : [ "Negative_39879", "Parameter_34639" ], - "name" : "Multiply_39882", - "op" : "Multiply", - "outputs" : ["Multiply_39882_0"] - }, - { - "inputs" : [ "Multiply_39833", "Divide_39880" ], - "name" : "Add_39883", - "op" : "Add", - "outputs" : ["Add_39883_0"] - }, - { - "inputs" : ["ReplaceSlice_39876"], - "lower_bounds" : [ 4, 0, 0 ], - "name" : "Slice_39881", - "op" : "Slice", - "outputs" : ["Slice_39881_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 5, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39882", "Parameter_34640" ], - "name" : "Divide_39884", - "op" : "Divide", - "outputs" : ["Divide_39884_0"] - }, - { - "inputs" : [ "Parameter_34632", "Add_39883" ], - "name" : "Multiply_39888", - "op" : "Multiply", - "outputs" : ["Multiply_39888_0"] - }, - { - "inputs" : [ "Add_39883", "Parameter_34451" ], - "name" : "Multiply_39885", - "op" : "Multiply", - "outputs" : ["Multiply_39885_0"] - }, - { - "inputs" : [ "Add_39883", "Parameter_34460" ], - "name" : "Multiply_39886", - "op" : "Multiply", - "outputs" : ["Multiply_39886_0"] - }, - { - "inputs" : [ "Parameter_34624", "Add_39883" ], - "name" : "Multiply_39887", - "op" : "Multiply", - "outputs" : ["Multiply_39887_0"] - }, - { - "inputs" : [ "Divide_39884", "Parameter_34641" ], - "name" : "Multiply_39889", - "op" : "Multiply", - "outputs" : ["Multiply_39889_0"] - }, - { - "inputs" : ["Multiply_39885"], - "name" : "Negative_39890", - "op" : "Negative", - "outputs" : ["Negative_39890_0"] - }, - { - "inputs" : ["Multiply_39886"], - "name" : "Negative_39891", - "op" : "Negative", - "outputs" : ["Negative_39891_0"] - }, - { - "inputs" : [ "Multiply_39887", "Multiply_36691" ], - "name" : "Divide_39892", - "op" : "Divide", - "outputs" : ["Divide_39892_0"] - }, - { - "inputs" : ["Multiply_39889"], - "name" : "Negative_39893", - "op" : "Negative", - "outputs" : ["Negative_39893_0"] - }, - { - "inputs" : [ "Negative_39890", "Parameter_34624" ], - "name" : "Multiply_39894", - "op" : "Multiply", - "outputs" : ["Multiply_39894_0"] - }, - { - "inputs" : [ "Negative_39891", "Parameter_34632" ], - "name" : "Multiply_39895", - "op" : "Multiply", - "outputs" : ["Multiply_39895_0"] - }, - { - "inputs" : [ "Broadcast_36364", "Divide_39892" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39896", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39896_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_39894", "Parameter_34625" ], - "name" : "Divide_39897", - "op" : "Divide", - "outputs" : ["Divide_39897_0"] - }, - { - "inputs" : [ "Multiply_39895", "Parameter_34633" ], - "name" : "Divide_39898", - "op" : "Divide", - "outputs" : ["Divide_39898_0"] - }, - { - "inputs" : ["ReplaceSlice_39896"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39899", - "op" : "Slice", - "outputs" : ["Slice_39899_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_39897", "Parameter_34626" ], - "name" : "Multiply_39900", - "op" : "Multiply", - "outputs" : ["Multiply_39900_0"] - }, - { - "inputs" : [ "Divide_39898", "Parameter_34634" ], - "name" : "Multiply_39901", - "op" : "Multiply", - "outputs" : ["Multiply_39901_0"] - }, - { - "inputs" : ["Multiply_39900"], - "name" : "Negative_39902", - "op" : "Negative", - "outputs" : ["Negative_39902_0"] - }, - { - "inputs" : ["Multiply_39901"], - "name" : "Negative_39903", - "op" : "Negative", - "outputs" : ["Negative_39903_0"] - }, - { - "inputs" : [ "Slice_39899", "Negative_39902" ], - "name" : "Add_39904", - "op" : "Add", - "outputs" : ["Add_39904_0"] - }, - { - "inputs" : [ "ReplaceSlice_39896", "Add_39904" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39905", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39905_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39905"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39906", - "op" : "Slice", - "outputs" : ["Slice_39906_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39906", "Negative_39903" ], - "name" : "Add_39907", - "op" : "Add", - "outputs" : ["Add_39907_0"] - }, - { - "inputs" : [ "ReplaceSlice_39905", "Add_39907" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39908", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39908_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39908"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39909", - "op" : "Slice", - "outputs" : ["Slice_39909_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39909", "Negative_39893" ], - "name" : "Add_39910", - "op" : "Add", - "outputs" : ["Add_39910_0"] - }, - { - "inputs" : [ "ReplaceSlice_39908", "Add_39910" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39911", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39911_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_39911", "Reshape_36398" ], - "name" : "Dot_39915", - "op" : "Dot", - "outputs" : ["Dot_39915_0"] - }, - { - "inputs" : [ "Reshape_36689", "ReplaceSlice_39911" ], - "name" : "Dot_39912", - "op" : "Dot", - "outputs" : ["Dot_39912_0"] - }, - { - "inputs" : ["ReplaceSlice_39911"], - "name" : "Sum_39917", - "op" : "Sum", - "outputs" : ["Sum_39917_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_39911"], - "name" : "Sum_39916", - "op" : "Sum", - "outputs" : ["Sum_39916_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_39911", "Reshape_36463" ], - "name" : "Dot_39913", - "op" : "Dot", - "outputs" : ["Dot_39913_0"] - }, - { - "inputs" : [ "Reshape_36598", "ReplaceSlice_39911" ], - "name" : "Dot_39914", - "op" : "Dot", - "outputs" : ["Dot_39914_0"] - }, - { - "inputs" : [ "Dot_39915", "Reshape_36632" ], - "name" : "Add_39921", - "op" : "Add", - "outputs" : ["Add_39921_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39912"], - "name" : "Reshape_39918", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39918_0"] - }, - { - "inputs" : [ "Add_39868", "Sum_39917" ], - "name" : "Add_39923", - "op" : "Add", - "outputs" : ["Add_39923_0"] - }, - { - "inputs" : [ "Add_39869", "Sum_39916" ], - "name" : "Add_39922", - "op" : "Add", - "outputs" : ["Add_39922_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39913"], - "name" : "Reshape_39919", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39919_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39914"], - "name" : "Reshape_39920", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39920_0"] - }, - { - "inputs" : [ "Add_39921", "Parameter_34459" ], - "name" : "Multiply_39927", - "op" : "Multiply", - "outputs" : ["Multiply_39927_0"] - }, - { - "inputs" : [ "Parameter_34611", "Add_39921" ], - "name" : "Multiply_39928", - "op" : "Multiply", - "outputs" : ["Multiply_39928_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39918"], - "name" : "Reshape_39924", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39924_0"] - }, - { - "inputs" : [ "Slice_39881", "Reshape_39919" ], - "name" : "Add_39925", - "op" : "Add", - "outputs" : ["Add_39925_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39920"], - "name" : "Reshape_39926", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39926_0"] - }, - { - "inputs" : ["Multiply_39927"], - "name" : "Negative_39932", - "op" : "Negative", - "outputs" : ["Negative_39932_0"] - }, - { - "inputs" : [ "Multiply_39928", "Multiply_36688" ], - "name" : "Divide_39933", - "op" : "Divide", - "outputs" : ["Divide_39933_0"] - }, - { - "inputs" : [ "Add_39878", "Reshape_39924" ], - "name" : "Add_39929", - "op" : "Add", - "outputs" : ["Add_39929_0"] - }, - { - "inputs" : [ "ReplaceSlice_39876", "Add_39925" ], - "lower_bounds" : [ 4, 0, 0 ], - "name" : "ReplaceSlice_39930", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39930_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 5, 64, 256 ] - }, - { - "inputs" : [ "Add_39877", "Reshape_39926" ], - "name" : "Add_39931", - "op" : "Add", - "outputs" : ["Add_39931_0"] - }, - { - "inputs" : [ "Negative_39932", "Parameter_34611" ], - "name" : "Multiply_39935", - "op" : "Multiply", - "outputs" : ["Multiply_39935_0"] - }, - { - "inputs" : [ "Multiply_39888", "Divide_39933" ], - "name" : "Add_39936", - "op" : "Add", - "outputs" : ["Add_39936_0"] - }, - { - "inputs" : ["ReplaceSlice_39930"], - "lower_bounds" : [ 3, 0, 0 ], - "name" : "Slice_39934", - "op" : "Slice", - "outputs" : ["Slice_39934_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 4, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39935", "Parameter_34612" ], - "name" : "Divide_39937", - "op" : "Divide", - "outputs" : ["Divide_39937_0"] - }, - { - "inputs" : [ "Parameter_34596", "Add_39936" ], - "name" : "Multiply_39940", - "op" : "Multiply", - "outputs" : ["Multiply_39940_0"] - }, - { - "inputs" : [ "Add_39936", "Parameter_34462" ], - "name" : "Multiply_39941", - "op" : "Multiply", - "outputs" : ["Multiply_39941_0"] - }, - { - "inputs" : [ "Parameter_34604", "Add_39936" ], - "name" : "Multiply_39938", - "op" : "Multiply", - "outputs" : ["Multiply_39938_0"] - }, - { - "inputs" : [ "Add_39936", "Parameter_34471" ], - "name" : "Multiply_39939", - "op" : "Multiply", - "outputs" : ["Multiply_39939_0"] - }, - { - "inputs" : [ "Divide_39937", "Parameter_34613" ], - "name" : "Multiply_39942", - "op" : "Multiply", - "outputs" : ["Multiply_39942_0"] - }, - { - "inputs" : [ "Multiply_39940", "Multiply_36686" ], - "name" : "Divide_39944", - "op" : "Divide", - "outputs" : ["Divide_39944_0"] - }, - { - "inputs" : ["Multiply_39941"], - "name" : "Negative_39945", - "op" : "Negative", - "outputs" : ["Negative_39945_0"] - }, - { - "inputs" : ["Multiply_39939"], - "name" : "Negative_39943", - "op" : "Negative", - "outputs" : ["Negative_39943_0"] - }, - { - "inputs" : ["Multiply_39942"], - "name" : "Negative_39946", - "op" : "Negative", - "outputs" : ["Negative_39946_0"] - }, - { - "inputs" : [ "Broadcast_36365", "Divide_39944" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_39948", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39948_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39945", "Parameter_34596" ], - "name" : "Multiply_39949", - "op" : "Multiply", - "outputs" : ["Multiply_39949_0"] - }, - { - "inputs" : [ "Negative_39943", "Parameter_34604" ], - "name" : "Multiply_39947", - "op" : "Multiply", - "outputs" : ["Multiply_39947_0"] - }, - { - "inputs" : ["ReplaceSlice_39948"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_39951", - "op" : "Slice", - "outputs" : ["Slice_39951_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_39949", "Parameter_34597" ], - "name" : "Divide_39952", - "op" : "Divide", - "outputs" : ["Divide_39952_0"] - }, - { - "inputs" : [ "Multiply_39947", "Parameter_34605" ], - "name" : "Divide_39950", - "op" : "Divide", - "outputs" : ["Divide_39950_0"] - }, - { - "inputs" : [ "Divide_39952", "Parameter_34598" ], - "name" : "Multiply_39954", - "op" : "Multiply", - "outputs" : ["Multiply_39954_0"] - }, - { - "inputs" : [ "Divide_39950", "Parameter_34606" ], - "name" : "Multiply_39953", - "op" : "Multiply", - "outputs" : ["Multiply_39953_0"] - }, - { - "inputs" : ["Multiply_39954"], - "name" : "Negative_39956", - "op" : "Negative", - "outputs" : ["Negative_39956_0"] - }, - { - "inputs" : ["Multiply_39953"], - "name" : "Negative_39955", - "op" : "Negative", - "outputs" : ["Negative_39955_0"] - }, - { - "inputs" : [ "Slice_39951", "Negative_39956" ], - "name" : "Add_39957", - "op" : "Add", - "outputs" : ["Add_39957_0"] - }, - { - "inputs" : [ "ReplaceSlice_39948", "Add_39957" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_39958", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39958_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_39958"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_39959", - "op" : "Slice", - "outputs" : ["Slice_39959_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_39959", "Negative_39955" ], - "name" : "Add_39960", - "op" : "Add", - "outputs" : ["Add_39960_0"] - }, - { - "inputs" : [ "ReplaceSlice_39958", "Add_39960" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_39961", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39961_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_39961"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_39962", - "op" : "Slice", - "outputs" : ["Slice_39962_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_39962", "Negative_39946" ], - "name" : "Add_39963", - "op" : "Add", - "outputs" : ["Add_39963_0"] - }, - { - "inputs" : [ "ReplaceSlice_39961", "Add_39963" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_39964", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39964_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_39964"], - "name" : "Sum_39966", - "op" : "Sum", - "outputs" : ["Sum_39966_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36684", "ReplaceSlice_39964" ], - "name" : "Dot_39967", - "op" : "Dot", - "outputs" : ["Dot_39967_0"] - }, - { - "inputs" : [ "ReplaceSlice_39964", "Reshape_36392" ], - "name" : "Dot_39969", - "op" : "Dot", - "outputs" : ["Dot_39969_0"] - }, - { - "inputs" : [ "ReplaceSlice_39964", "Reshape_36486" ], - "name" : "Dot_39965", - "op" : "Dot", - "outputs" : ["Dot_39965_0"] - }, - { - "inputs" : ["ReplaceSlice_39964"], - "name" : "Sum_39968", - "op" : "Sum", - "outputs" : ["Sum_39968_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36583", "ReplaceSlice_39964" ], - "name" : "Dot_39970", - "op" : "Dot", - "outputs" : ["Dot_39970_0"] - }, - { - "inputs" : [ "Add_39923", "Sum_39966" ], - "name" : "Add_39972", - "op" : "Add", - "outputs" : ["Add_39972_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39967"], - "name" : "Reshape_39973", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39973_0"] - }, - { - "inputs" : [ "Dot_39969", "Reshape_36613" ], - "name" : "Add_39975", - "op" : "Add", - "outputs" : ["Add_39975_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39965"], - "name" : "Reshape_39971", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_39971_0"] - }, - { - "inputs" : [ "Add_39922", "Sum_39968" ], - "name" : "Add_39974", - "op" : "Add", - "outputs" : ["Add_39974_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_39970"], - "name" : "Reshape_39976", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_39976_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39973"], - "name" : "Reshape_39978", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39978_0"] - }, - { - "inputs" : [ "Add_39975", "Parameter_34470" ], - "name" : "Multiply_39980", - "op" : "Multiply", - "outputs" : ["Multiply_39980_0"] - }, - { - "inputs" : [ "Parameter_34583", "Add_39975" ], - "name" : "Multiply_39979", - "op" : "Multiply", - "outputs" : ["Multiply_39979_0"] - }, - { - "inputs" : [ "Slice_39934", "Reshape_39971" ], - "name" : "Add_39977", - "op" : "Add", - "outputs" : ["Add_39977_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_39976"], - "name" : "Reshape_39981", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_39981_0"] - }, - { - "inputs" : [ "Add_39929", "Reshape_39978" ], - "name" : "Add_39983", - "op" : "Add", - "outputs" : ["Add_39983_0"] - }, - { - "inputs" : ["Multiply_39980"], - "name" : "Negative_39985", - "op" : "Negative", - "outputs" : ["Negative_39985_0"] - }, - { - "inputs" : [ "Multiply_39979", "Multiply_36683" ], - "name" : "Divide_39984", - "op" : "Divide", - "outputs" : ["Divide_39984_0"] - }, - { - "inputs" : [ "ReplaceSlice_39930", "Add_39977" ], - "lower_bounds" : [ 3, 0, 0 ], - "name" : "ReplaceSlice_39982", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_39982_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 4, 64, 256 ] - }, - { - "inputs" : [ "Add_39931", "Reshape_39981" ], - "name" : "Add_39986", - "op" : "Add", - "outputs" : ["Add_39986_0"] - }, - { - "inputs" : [ "Negative_39985", "Parameter_34583" ], - "name" : "Multiply_39989", - "op" : "Multiply", - "outputs" : ["Multiply_39989_0"] - }, - { - "inputs" : [ "Multiply_39938", "Divide_39984" ], - "name" : "Add_39988", - "op" : "Add", - "outputs" : ["Add_39988_0"] - }, - { - "inputs" : ["ReplaceSlice_39982"], - "lower_bounds" : [ 2, 0, 0 ], - "name" : "Slice_39987", - "op" : "Slice", - "outputs" : ["Slice_39987_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 3, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39989", "Parameter_34584" ], - "name" : "Divide_39994", - "op" : "Divide", - "outputs" : ["Divide_39994_0"] - }, - { - "inputs" : [ "Parameter_34568", "Add_39988" ], - "name" : "Multiply_39991", - "op" : "Multiply", - "outputs" : ["Multiply_39991_0"] - }, - { - "inputs" : [ "Parameter_34576", "Add_39988" ], - "name" : "Multiply_39992", - "op" : "Multiply", - "outputs" : ["Multiply_39992_0"] - }, - { - "inputs" : [ "Add_39988", "Parameter_34482" ], - "name" : "Multiply_39993", - "op" : "Multiply", - "outputs" : ["Multiply_39993_0"] - }, - { - "inputs" : [ "Add_39988", "Parameter_34473" ], - "name" : "Multiply_39990", - "op" : "Multiply", - "outputs" : ["Multiply_39990_0"] - }, - { - "inputs" : [ "Divide_39994", "Parameter_34585" ], - "name" : "Multiply_39998", - "op" : "Multiply", - "outputs" : ["Multiply_39998_0"] - }, - { - "inputs" : [ "Multiply_39991", "Multiply_36681" ], - "name" : "Divide_39996", - "op" : "Divide", - "outputs" : ["Divide_39996_0"] - }, - { - "inputs" : ["Multiply_39993"], - "name" : "Negative_39997", - "op" : "Negative", - "outputs" : ["Negative_39997_0"] - }, - { - "inputs" : ["Multiply_39990"], - "name" : "Negative_39995", - "op" : "Negative", - "outputs" : ["Negative_39995_0"] - }, - { - "inputs" : ["Multiply_39998"], - "name" : "Negative_40002", - "op" : "Negative", - "outputs" : ["Negative_40002_0"] - }, - { - "inputs" : [ "Broadcast_36366", "Divide_39996" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_40000", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40000_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_39997", "Parameter_34576" ], - "name" : "Multiply_40001", - "op" : "Multiply", - "outputs" : ["Multiply_40001_0"] - }, - { - "inputs" : [ "Negative_39995", "Parameter_34568" ], - "name" : "Multiply_39999", - "op" : "Multiply", - "outputs" : ["Multiply_39999_0"] - }, - { - "inputs" : ["ReplaceSlice_40000"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_40004", - "op" : "Slice", - "outputs" : ["Slice_40004_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_40001", "Parameter_34577" ], - "name" : "Divide_40005", - "op" : "Divide", - "outputs" : ["Divide_40005_0"] - }, - { - "inputs" : [ "Multiply_39999", "Parameter_34569" ], - "name" : "Divide_40003", - "op" : "Divide", - "outputs" : ["Divide_40003_0"] - }, - { - "inputs" : [ "Divide_40005", "Parameter_34578" ], - "name" : "Multiply_40007", - "op" : "Multiply", - "outputs" : ["Multiply_40007_0"] - }, - { - "inputs" : [ "Divide_40003", "Parameter_34570" ], - "name" : "Multiply_40006", - "op" : "Multiply", - "outputs" : ["Multiply_40006_0"] - }, - { - "inputs" : ["Multiply_40007"], - "name" : "Negative_40009", - "op" : "Negative", - "outputs" : ["Negative_40009_0"] - }, - { - "inputs" : ["Multiply_40006"], - "name" : "Negative_40008", - "op" : "Negative", - "outputs" : ["Negative_40008_0"] - }, - { - "inputs" : [ "Slice_40004", "Negative_40008" ], - "name" : "Add_40010", - "op" : "Add", - "outputs" : ["Add_40010_0"] - }, - { - "inputs" : [ "ReplaceSlice_40000", "Add_40010" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_40011", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40011_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_40011"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_40012", - "op" : "Slice", - "outputs" : ["Slice_40012_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_40012", "Negative_40009" ], - "name" : "Add_40013", - "op" : "Add", - "outputs" : ["Add_40013_0"] - }, - { - "inputs" : [ "ReplaceSlice_40011", "Add_40013" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_40014", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40014_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_40014"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_40015", - "op" : "Slice", - "outputs" : ["Slice_40015_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_40015", "Negative_40002" ], - "name" : "Add_40016", - "op" : "Add", - "outputs" : ["Add_40016_0"] - }, - { - "inputs" : [ "ReplaceSlice_40014", "Add_40016" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_40017", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40017_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "ReplaceSlice_40017", "Reshape_36393" ], - "name" : "Dot_40021", - "op" : "Dot", - "outputs" : ["Dot_40021_0"] - }, - { - "inputs" : [ "Reshape_36572", "ReplaceSlice_40017" ], - "name" : "Dot_40022", - "op" : "Dot", - "outputs" : ["Dot_40022_0"] - }, - { - "inputs" : [ "Reshape_36679", "ReplaceSlice_40017" ], - "name" : "Dot_40018", - "op" : "Dot", - "outputs" : ["Dot_40018_0"] - }, - { - "inputs" : ["ReplaceSlice_40017"], - "name" : "Sum_40019", - "op" : "Sum", - "outputs" : ["Sum_40019_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_40017"], - "name" : "Sum_40020", - "op" : "Sum", - "outputs" : ["Sum_40020_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_40017", "Reshape_36483" ], - "name" : "Dot_40023", - "op" : "Dot", - "outputs" : ["Dot_40023_0"] - }, - { - "inputs" : [ "Dot_40021", "Reshape_36626" ], - "name" : "Add_40027", - "op" : "Add", - "outputs" : ["Add_40027_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40022"], - "name" : "Reshape_40028", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_40028_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40018"], - "name" : "Reshape_40024", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_40024_0"] - }, - { - "inputs" : [ "Add_39972", "Sum_40019" ], - "name" : "Add_40025", - "op" : "Add", - "outputs" : ["Add_40025_0"] - }, - { - "inputs" : [ "Add_39974", "Sum_40020" ], - "name" : "Add_40026", - "op" : "Add", - "outputs" : ["Add_40026_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40023"], - "name" : "Reshape_40029", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_40029_0"] - }, - { - "inputs" : [ "Parameter_34555", "Add_40027" ], - "name" : "Multiply_40031", - "op" : "Multiply", - "outputs" : ["Multiply_40031_0"] - }, - { - "inputs" : [ "Add_40027", "Parameter_34481" ], - "name" : "Multiply_40032", - "op" : "Multiply", - "outputs" : ["Multiply_40032_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_40028"], - "name" : "Reshape_40033", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_40033_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_40024"], - "name" : "Reshape_40030", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_40030_0"] - }, - { - "inputs" : [ "Slice_39987", "Reshape_40029" ], - "name" : "Add_40034", - "op" : "Add", - "outputs" : ["Add_40034_0"] - }, - { - "inputs" : [ "Multiply_40031", "Multiply_36678" ], - "name" : "Divide_40036", - "op" : "Divide", - "outputs" : ["Divide_40036_0"] - }, - { - "inputs" : ["Multiply_40032"], - "name" : "Negative_40037", - "op" : "Negative", - "outputs" : ["Negative_40037_0"] - }, - { - "inputs" : [ "Add_39986", "Reshape_40033" ], - "name" : "Add_40038", - "op" : "Add", - "outputs" : ["Add_40038_0"] - }, - { - "inputs" : [ "Add_39983", "Reshape_40030" ], - "name" : "Add_40035", - "op" : "Add", - "outputs" : ["Add_40035_0"] - }, - { - "inputs" : [ "ReplaceSlice_39982", "Add_40034" ], - "lower_bounds" : [ 2, 0, 0 ], - "name" : "ReplaceSlice_40039", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40039_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 3, 64, 256 ] - }, - { - "inputs" : [ "Multiply_39992", "Divide_40036" ], - "name" : "Add_40040", - "op" : "Add", - "outputs" : ["Add_40040_0"] - }, - { - "inputs" : [ "Negative_40037", "Parameter_34555" ], - "name" : "Multiply_40041", - "op" : "Multiply", - "outputs" : ["Multiply_40041_0"] - }, - { - "inputs" : ["ReplaceSlice_40039"], - "lower_bounds" : [ 1, 0, 0 ], - "name" : "Slice_40042", - "op" : "Slice", - "outputs" : ["Slice_40042_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 2, 64, 256 ] - }, - { - "inputs" : [ "Parameter_34540", "Add_40040" ], - "name" : "Multiply_40043", - "op" : "Multiply", - "outputs" : ["Multiply_40043_0"] - }, - { - "inputs" : [ "Add_40040", "Parameter_34484" ], - "name" : "Multiply_40044", - "op" : "Multiply", - "outputs" : ["Multiply_40044_0"] - }, - { - "inputs" : [ "Add_40040", "Parameter_34493" ], - "name" : "Multiply_40045", - "op" : "Multiply", - "outputs" : ["Multiply_40045_0"] - }, - { - "inputs" : [ "Parameter_34548", "Add_40040" ], - "name" : "Multiply_40046", - "op" : "Multiply", - "outputs" : ["Multiply_40046_0"] - }, - { - "inputs" : [ "Multiply_40041", "Parameter_34556" ], - "name" : "Divide_40047", - "op" : "Divide", - "outputs" : ["Divide_40047_0"] - }, - { - "inputs" : [ "Multiply_40043", "Multiply_36676" ], - "name" : "Divide_40048", - "op" : "Divide", - "outputs" : ["Divide_40048_0"] - }, - { - "inputs" : ["Multiply_40044"], - "name" : "Negative_40049", - "op" : "Negative", - "outputs" : ["Negative_40049_0"] - }, - { - "inputs" : ["Multiply_40045"], - "name" : "Negative_40050", - "op" : "Negative", - "outputs" : ["Negative_40050_0"] - }, - { - "inputs" : [ "Divide_40047", "Parameter_34557" ], - "name" : "Multiply_40051", - "op" : "Multiply", - "outputs" : ["Multiply_40051_0"] - }, - { - "inputs" : [ "Broadcast_36367", "Divide_40048" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_40052", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40052_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Negative_40049", "Parameter_34540" ], - "name" : "Multiply_40053", - "op" : "Multiply", - "outputs" : ["Multiply_40053_0"] - }, - { - "inputs" : [ "Negative_40050", "Parameter_34548" ], - "name" : "Multiply_40054", - "op" : "Multiply", - "outputs" : ["Multiply_40054_0"] - }, - { - "inputs" : ["Multiply_40051"], - "name" : "Negative_40055", - "op" : "Negative", - "outputs" : ["Negative_40055_0"] - }, - { - "inputs" : ["ReplaceSlice_40052"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_40056", - "op" : "Slice", - "outputs" : ["Slice_40056_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Multiply_40053", "Parameter_34541" ], - "name" : "Divide_40057", - "op" : "Divide", - "outputs" : ["Divide_40057_0"] - }, - { - "inputs" : [ "Multiply_40054", "Parameter_34549" ], - "name" : "Divide_40058", - "op" : "Divide", - "outputs" : ["Divide_40058_0"] - }, - { - "inputs" : [ "Divide_40057", "Parameter_34542" ], - "name" : "Multiply_40059", - "op" : "Multiply", - "outputs" : ["Multiply_40059_0"] - }, - { - "inputs" : [ "Divide_40058", "Parameter_34550" ], - "name" : "Multiply_40060", - "op" : "Multiply", - "outputs" : ["Multiply_40060_0"] - }, - { - "inputs" : ["Multiply_40059"], - "name" : "Negative_40061", - "op" : "Negative", - "outputs" : ["Negative_40061_0"] - }, - { - "inputs" : ["Multiply_40060"], - "name" : "Negative_40062", - "op" : "Negative", - "outputs" : ["Negative_40062_0"] - }, - { - "inputs" : [ "Slice_40056", "Negative_40061" ], - "name" : "Add_40063", - "op" : "Add", - "outputs" : ["Add_40063_0"] - }, - { - "inputs" : [ "ReplaceSlice_40052", "Add_40063" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_40064", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40064_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_40064"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_40065", - "op" : "Slice", - "outputs" : ["Slice_40065_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_40065", "Negative_40062" ], - "name" : "Add_40066", - "op" : "Add", - "outputs" : ["Add_40066_0"] - }, - { - "inputs" : [ "ReplaceSlice_40064", "Add_40066" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_40067", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40067_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_40067"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_40068", - "op" : "Slice", - "outputs" : ["Slice_40068_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_40068", "Negative_40055" ], - "name" : "Add_40069", - "op" : "Add", - "outputs" : ["Add_40069_0"] - }, - { - "inputs" : [ "ReplaceSlice_40067", "Add_40069" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_40070", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40070_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["ReplaceSlice_40070"], - "name" : "Sum_40076", - "op" : "Sum", - "outputs" : ["Sum_40076_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36559", "ReplaceSlice_40070" ], - "name" : "Dot_40074", - "op" : "Dot", - "outputs" : ["Dot_40074_0"] - }, - { - "inputs" : ["ReplaceSlice_40070"], - "name" : "Sum_40071", - "op" : "Sum", - "outputs" : ["Sum_40071_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_36674", "ReplaceSlice_40070" ], - "name" : "Dot_40073", - "op" : "Dot", - "outputs" : ["Dot_40073_0"] - }, - { - "inputs" : [ "ReplaceSlice_40070", "Reshape_36485" ], - "name" : "Dot_40072", - "op" : "Dot", - "outputs" : ["Dot_40072_0"] - }, - { - "inputs" : [ "ReplaceSlice_40070", "Reshape_36406" ], - "name" : "Dot_40075", - "op" : "Dot", - "outputs" : ["Dot_40075_0"] - }, - { - "inputs" : [ "Add_40026", "Sum_40076" ], - "name" : "Add_40082", - "op" : "Add", - "outputs" : ["Add_40082_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40074"], - "name" : "Reshape_40080", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_40080_0"] - }, - { - "inputs" : [ "Add_40025", "Sum_40071" ], - "name" : "Add_40077", - "op" : "Add", - "outputs" : ["Add_40077_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40073"], - "name" : "Reshape_40079", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_40079_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40072"], - "name" : "Reshape_40078", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_40078_0"] - }, - { - "inputs" : [ "Dot_40075", "Reshape_36669" ], - "name" : "Add_40081", - "op" : "Add", - "outputs" : ["Add_40081_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_40080"], - "name" : "Reshape_40085", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_40085_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_40079"], - "name" : "Reshape_40084", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_40084_0"] - }, - { - "inputs" : [ "Slice_40042", "Reshape_40078" ], - "name" : "Add_40083", - "op" : "Add", - "outputs" : ["Add_40083_0"] - }, - { - "inputs" : [ "Add_40081", "Parameter_34492" ], - "name" : "Multiply_40086", - "op" : "Multiply", - "outputs" : ["Multiply_40086_0"] - }, - { - "inputs" : [ "Parameter_34527", "Add_40081" ], - "name" : "Multiply_40087", - "op" : "Multiply", - "outputs" : ["Multiply_40087_0"] - }, - { - "inputs" : [ "Add_40038", "Reshape_40085" ], - "name" : "Add_40090", - "op" : "Add", - "outputs" : ["Add_40090_0"] - }, - { - "inputs" : [ "Add_40035", "Reshape_40084" ], - "name" : "Add_40089", - "op" : "Add", - "outputs" : ["Add_40089_0"] - }, - { - "inputs" : [ "ReplaceSlice_40039", "Add_40083" ], - "lower_bounds" : [ 1, 0, 0 ], - "name" : "ReplaceSlice_40088", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40088_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 2, 64, 256 ] - }, - { - "inputs" : ["Multiply_40086"], - "name" : "Negative_40091", - "op" : "Negative", - "outputs" : ["Negative_40091_0"] - }, - { - "inputs" : [ "Multiply_40087", "Multiply_36673" ], - "name" : "Divide_40092", - "op" : "Divide", - "outputs" : ["Divide_40092_0"] - }, - { - "inputs" : ["ReplaceSlice_40088"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_40093", - "op" : "Slice", - "outputs" : ["Slice_40093_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 64, 256 ] - }, - { - "inputs" : [ "Negative_40091", "Parameter_34527" ], - "name" : "Multiply_40094", - "op" : "Multiply", - "outputs" : ["Multiply_40094_0"] - }, - { - "inputs" : [ "Multiply_40046", "Divide_40092" ], - "name" : "Add_40095", - "op" : "Add", - "outputs" : ["Add_40095_0"] - }, - { - "inputs" : [ "Multiply_40094", "Parameter_34528" ], - "name" : "Divide_40096", - "op" : "Divide", - "outputs" : ["Divide_40096_0"] - }, - { - "inputs" : [ "Add_40095", "Parameter_34518" ], - "name" : "Multiply_40097", - "op" : "Multiply", - "outputs" : ["Multiply_40097_0"] - }, - { - "inputs" : [ "Add_40095", "Parameter_34495" ], - "name" : "Multiply_40098", - "op" : "Multiply", - "outputs" : ["Multiply_40098_0"] - }, - { - "inputs" : [ "Parameter_34510", "Add_40095" ], - "name" : "Multiply_40099", - "op" : "Multiply", - "outputs" : ["Multiply_40099_0"] - }, - { - "inputs" : [ "Divide_40096", "Parameter_34529" ], - "name" : "Multiply_40100", - "op" : "Multiply", - "outputs" : ["Multiply_40100_0"] - }, - { - "inputs" : ["Multiply_40097"], - "name" : "Negative_40101", - "op" : "Negative", - "outputs" : ["Negative_40101_0"] - }, - { - "inputs" : ["Multiply_40098"], - "name" : "Negative_40102", - "op" : "Negative", - "outputs" : ["Negative_40102_0"] - }, - { - "inputs" : [ "Multiply_40099", "Multiply_36671" ], - "name" : "Divide_40103", - "op" : "Divide", - "outputs" : ["Divide_40103_0"] - }, - { - "inputs" : ["Multiply_40100"], - "name" : "Negative_40104", - "op" : "Negative", - "outputs" : ["Negative_40104_0"] - }, - { - "inputs" : [ "Negative_40101", "Parameter_34520" ], - "name" : "Multiply_40105", - "op" : "Multiply", - "outputs" : ["Multiply_40105_0"] - }, - { - "inputs" : [ "Negative_40102", "Parameter_34510" ], - "name" : "Multiply_40106", - "op" : "Multiply", - "outputs" : ["Multiply_40106_0"] - }, - { - "inputs" : [ "Broadcast_36368", "Divide_40103" ], - "lower_bounds" : [ 0, 512 ], - "name" : "ReplaceSlice_40107", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40107_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : [ "Multiply_40105", "Parameter_34521" ], - "name" : "Divide_40108", - "op" : "Divide", - "outputs" : ["Divide_40108_0"] - }, - { - "inputs" : [ "Multiply_40106", "Parameter_34511" ], - "name" : "Divide_40109", - "op" : "Divide", - "outputs" : ["Divide_40109_0"] - }, - { - "inputs" : ["ReplaceSlice_40107"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_40110", - "op" : "Slice", - "outputs" : ["Slice_40110_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : [ "Divide_40108", "Parameter_34522" ], - "name" : "Multiply_40111", - "op" : "Multiply", - "outputs" : ["Multiply_40111_0"] - }, - { - "inputs" : [ "Divide_40109", "Parameter_34512" ], - "name" : "Multiply_40112", - "op" : "Multiply", - "outputs" : ["Multiply_40112_0"] - }, - { - "inputs" : ["Multiply_40111"], - "name" : "Negative_40113", - "op" : "Negative", - "outputs" : ["Negative_40113_0"] - }, - { - "inputs" : ["Multiply_40112"], - "name" : "Negative_40114", - "op" : "Negative", - "outputs" : ["Negative_40114_0"] - }, - { - "inputs" : [ "Slice_40110", "Negative_40114" ], - "name" : "Add_40115", - "op" : "Add", - "outputs" : ["Add_40115_0"] - }, - { - "inputs" : [ "ReplaceSlice_40107", "Add_40115" ], - "lower_bounds" : [ 0, 0 ], - "name" : "ReplaceSlice_40116", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40116_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["ReplaceSlice_40116"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_40117", - "op" : "Slice", - "outputs" : ["Slice_40117_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : [ "Slice_40117", "Negative_40113" ], - "name" : "Add_40118", - "op" : "Add", - "outputs" : ["Add_40118_0"] - }, - { - "inputs" : [ "ReplaceSlice_40116", "Add_40118" ], - "lower_bounds" : [ 0, 256 ], - "name" : "ReplaceSlice_40119", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40119_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["ReplaceSlice_40119"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_40120", - "op" : "Slice", - "outputs" : ["Slice_40120_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Slice_40120", "Negative_40104" ], - "name" : "Add_40121", - "op" : "Add", - "outputs" : ["Add_40121_0"] - }, - { - "inputs" : [ "ReplaceSlice_40119", "Add_40121" ], - "lower_bounds" : [ 0, 768 ], - "name" : "ReplaceSlice_40122", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40122_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : [ "Reshape_36549", "ReplaceSlice_40122" ], - "name" : "Dot_40123", - "op" : "Dot", - "outputs" : ["Dot_40123_0"] - }, - { - "inputs" : ["ReplaceSlice_40122"], - "name" : "Sum_40124", - "op" : "Sum", - "outputs" : ["Sum_40124_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["ReplaceSlice_40122"], - "name" : "Sum_40125", - "op" : "Sum", - "outputs" : ["Sum_40125_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "ReplaceSlice_40122", "Reshape_36481" ], - "name" : "Dot_40126", - "op" : "Dot", - "outputs" : ["Dot_40126_0"] - }, - { - "inputs" : [ "Reshape_36550", "ReplaceSlice_40122" ], - "name" : "Dot_40127", - "op" : "Dot", - "outputs" : ["Dot_40127_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40123"], - "name" : "Reshape_40128", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_40128_0"] - }, - { - "inputs" : [ "Add_40077", "Sum_40124" ], - "name" : "Add_40129", - "op" : "Add", - "outputs" : ["Add_40129_0"] - }, - { - "inputs" : [ "Add_40082", "Sum_40125" ], - "name" : "Add_40130", - "op" : "Add", - "outputs" : ["Add_40130_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40126"], - "name" : "Reshape_40131", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_40131_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_40127"], - "name" : "Reshape_40132", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_40132_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_40128"], - "name" : "Reshape_40133", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_40133_0"] - }, - { - "inputs" : [ "Slice_40093", "Reshape_40131" ], - "name" : "Add_40134", - "op" : "Add", - "outputs" : ["Add_40134_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_40132"], - "name" : "Reshape_40135", - "op" : "Reshape", - "output_shape" : [ 1024, 256 ], - "outputs" : ["Reshape_40135_0"] - }, - { - "inputs" : [ "Add_40089", "Reshape_40133" ], - "name" : "Add_40136", - "op" : "Add", - "outputs" : ["Add_40136_0"] - }, - { - "inputs" : [ "ReplaceSlice_40088", "Add_40134" ], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "ReplaceSlice_40137", - "op" : "ReplaceSlice", - "outputs" : ["ReplaceSlice_40137_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 64, 256 ] - }, - { - "inputs" : [ "Add_40090", "Reshape_40135" ], - "name" : "Add_40138", - "op" : "Add", - "outputs" : ["Add_40138_0"] - } - ], - "parameters" : [ - "Parameter_36245", "Parameter_36183", "Parameter_36180", "Parameter_36177", - "Parameter_36175", "Parameter_36173", "Parameter_36172", "Parameter_36171", - "Parameter_36170", "Parameter_36168", "Parameter_36165", "Parameter_36163", - "Parameter_36160", "Parameter_36156", "Parameter_36154", "Parameter_36153", - "Parameter_36152", "Parameter_36151", "Parameter_36148", "Parameter_36145", - "Parameter_36142", "Parameter_36141", "Parameter_36139", "Parameter_36137", - "Parameter_36135", "Parameter_36134", "Parameter_36133", "Parameter_36132", - "Parameter_36129", "Parameter_36128", "Parameter_36127", "Parameter_36126", - "Parameter_36125", "Parameter_36124", "Parameter_36123", "Parameter_36122", - "Parameter_36120", "Parameter_36119", "Parameter_36118", "Parameter_36112", - "Parameter_36110", "Parameter_36109", "Parameter_36108", "Parameter_36106", - "Parameter_36103", "Parameter_36102", "Parameter_36101", "Parameter_36098", - "Parameter_36097", "Parameter_36088", "Parameter_36087", "Parameter_36084", - "Parameter_36083", "Parameter_36080", "Parameter_36079", "Parameter_36078", - "Parameter_36077", "Parameter_36075", "Parameter_36073", "Parameter_36072", - "Parameter_36071", "Parameter_36068", "Parameter_36067", "Parameter_36065", - "Parameter_36063", "Parameter_36062", "Parameter_36061", "Parameter_36060", - "Parameter_36059", "Parameter_36058", "Parameter_36057", "Parameter_36056", - "Parameter_36055", "Parameter_36054", "Parameter_36053", "Parameter_36052", - "Parameter_36050", "Parameter_36048", "Parameter_36047", "Parameter_36046", - "Parameter_36045", "Parameter_36044", "Parameter_36159", "Parameter_36042", - "Parameter_36041", "Parameter_36038", "Parameter_36034", "Parameter_36033", - "Parameter_36032", "Parameter_36030", "Parameter_36029", "Parameter_36028", - "Parameter_36023", "Parameter_36022", "Parameter_36017", "Parameter_36014", - "Parameter_36013", "Parameter_36179", "Parameter_36012", "Parameter_36009", - "Parameter_36005", "Parameter_36002", "Parameter_36001", "Parameter_35999", - "Parameter_36039", "Parameter_35996", "Parameter_35995", "Parameter_35993", - "Parameter_35992", "Parameter_35985", "Parameter_35984", "Parameter_35983", - "Parameter_35980", "Parameter_35979", "Parameter_35978", "Parameter_35975", - "Parameter_35973", "Parameter_35972", "Parameter_35971", "Parameter_35968", - "Parameter_35964", "Parameter_35961", "Parameter_35958", "Parameter_35957", - "Parameter_35956", "Parameter_35955", "Parameter_35953", "Parameter_35951", - "Parameter_35948", "Parameter_35945", "Parameter_35939", "Parameter_35936", - "Parameter_35934", "Parameter_35932", "Parameter_35930", "Parameter_35929", - "Parameter_35981", "Parameter_35928", "Parameter_35926", "Parameter_35925", - "Parameter_35921", "Parameter_35917", "Parameter_35915", "Parameter_35912", - "Parameter_35910", "Parameter_35909", "Parameter_35906", "Parameter_35902", - "Parameter_35901", "Parameter_35900", "Parameter_35896", "Parameter_35892", - "Parameter_36158", "Parameter_35888", "Parameter_35886", "Parameter_35884", - "Parameter_35882", "Parameter_35881", "Parameter_35880", "Parameter_35872", - "Parameter_35867", "Parameter_35866", "Parameter_35865", "Parameter_35863", - "Parameter_35860", "Parameter_35859", "Parameter_35858", "Parameter_35857", - "Parameter_36185", "Parameter_36114", "Parameter_35855", "Parameter_35965", - "Parameter_35853", "Parameter_36184", "Parameter_36019", "Parameter_35851", - "Parameter_35850", "Parameter_35849", "Parameter_35848", "Parameter_35839", - "Parameter_35838", "Parameter_35832", "Parameter_35831", "Parameter_35829", - "Parameter_35828", "Parameter_35825", "Parameter_35824", "Parameter_35821", - "Parameter_35820", "Parameter_35911", "Parameter_35818", "Parameter_35816", - "Parameter_36107", "Parameter_35815", "Parameter_35813", "Parameter_35810", - "Parameter_35809", "Parameter_35806", "Parameter_35799", "Parameter_35969", - "Parameter_35798", "Parameter_35797", "Parameter_35795", "Parameter_35950", - "Parameter_35793", "Parameter_35792", "Parameter_35791", "Parameter_35935", - "Parameter_35790", "Parameter_35789", "Parameter_35788", "Parameter_35787", - "Parameter_35786", "Parameter_35785", "Parameter_35784", "Parameter_35781", - "Parameter_35780", "Parameter_35777", "Parameter_35776", "Parameter_35773", - "Parameter_35772", "Parameter_36130", "Parameter_36004", "Parameter_35766", - "Parameter_35765", "Parameter_35763", "Parameter_35760", "Parameter_35756", - "Parameter_35755", "Parameter_35754", "Parameter_35753", "Parameter_35751", - "Parameter_35749", "Parameter_35748", "Parameter_35747", "Parameter_35745", - "Parameter_35744", "Parameter_35743", "Parameter_35740", "Parameter_35738", - "Parameter_35914", "Parameter_35737", "Parameter_35734", "Parameter_35733", - "Parameter_35732", "Parameter_35730", "Parameter_35729", "Parameter_35728", - "Parameter_35722", "Parameter_35716", "Parameter_35715", "Parameter_35714", - "Parameter_35712", "Parameter_35711", "Parameter_35709", "Parameter_35708", - "Parameter_35707", "Parameter_35705", "Parameter_35704", "Parameter_35702", - "Parameter_35701", "Parameter_35700", "Parameter_35699", "Parameter_35698", - "Parameter_35696", "Parameter_35694", "Parameter_35692", "Parameter_35690", - "Parameter_35689", "Parameter_35686", "Parameter_35682", "Parameter_35678", - "Parameter_35837", "Parameter_35671", "Parameter_35670", "Parameter_35668", - "Parameter_35833", "Parameter_35667", "Parameter_35666", "Parameter_35661", - "Parameter_35660", "Parameter_35658", "Parameter_35656", "Parameter_35653", - "Parameter_35652", "Parameter_35650", "Parameter_35648", "Parameter_35644", - "Parameter_35643", "Parameter_35639", "Parameter_35759", "Parameter_35638", - "Parameter_35636", "Parameter_35634", "Parameter_35633", "Parameter_35631", - "Parameter_35630", "Parameter_35757", "Parameter_35629", "Parameter_35628", - "Parameter_35627", "Parameter_35621", "Parameter_35695", "Parameter_35620", - "Parameter_35616", "Parameter_35647", "Parameter_35614", "Parameter_35613", - "Parameter_35927", "Parameter_35611", "Parameter_35609", "Parameter_35604", - "Parameter_35871", "Parameter_35602", "Parameter_35598", "Parameter_35596", - "Parameter_35591", "Parameter_35589", "Parameter_35587", "Parameter_36085", - "Parameter_35586", "Parameter_35581", "Parameter_35794", "Parameter_35775", - "Parameter_35579", "Parameter_36021", "Parameter_35577", "Parameter_35576", - "Parameter_36008", "Parameter_35575", "Parameter_35573", "Parameter_35572", - "Parameter_35571", "Parameter_36149", "Parameter_35570", "Parameter_35567", - "Parameter_35566", "Parameter_35564", "Parameter_35583", "Parameter_35563", - "Parameter_35561", "Parameter_35646", "Parameter_35558", "Parameter_35556", - "Parameter_35555", "Parameter_35554", "Parameter_35552", "Parameter_35550", - "Parameter_35549", "Parameter_35767", "Parameter_35548", "Parameter_35547", - "Parameter_35559", "Parameter_35545", "Parameter_35543", "Parameter_35539", - "Parameter_35538", "Parameter_35814", "Parameter_35537", "Parameter_35536", - "Parameter_35593", "Parameter_35534", "Parameter_35533", "Parameter_35532", - "Parameter_35531", "Parameter_35585", "Parameter_35529", "Parameter_35526", - "Parameter_35524", "Parameter_35523", "Parameter_35522", "Parameter_35521", - "Parameter_35518", "Parameter_35517", "Parameter_35516", "Parameter_35515", - "Parameter_35514", "Parameter_35528", "Parameter_35513", "Parameter_35512", - "Parameter_36006", "Parameter_35510", "Parameter_35509", "Parameter_35507", - "Parameter_35505", "Parameter_35504", "Parameter_35502", "Parameter_35500", - "Parameter_35626", "Parameter_35499", "Parameter_35496", "Parameter_35736", - "Parameter_35494", "Parameter_35994", "Parameter_35492", "Parameter_35520", - "Parameter_35491", "Parameter_35490", "Parameter_35489", "Parameter_35488", - "Parameter_35487", "Parameter_35485", "Parameter_35484", "Parameter_35483", - "Parameter_35480", "Parameter_35479", "Parameter_35477", "Parameter_35486", - "Parameter_35476", "Parameter_35473", "Parameter_35553", "Parameter_35472", - "Parameter_35471", "Parameter_35468", "Parameter_35467", "Parameter_36169", - "Parameter_35466", "Parameter_35465", "Parameter_36099", "Parameter_35464", - "Parameter_35463", "Parameter_35461", "Parameter_35460", "Parameter_35457", - "Parameter_35456", "Parameter_35455", "Parameter_35454", "Parameter_35453", - "Parameter_35452", "Parameter_35731", "Parameter_35450", "Parameter_36147", - "Parameter_35998", "Parameter_35449", "Parameter_35446", "Parameter_35442", - "Parameter_35441", "Parameter_35440", "Parameter_35438", "Parameter_35437", - "Parameter_35436", "Parameter_35435", "Parameter_35434", "Parameter_35432", - "Parameter_35431", "Parameter_35430", "Parameter_35429", "Parameter_35427", - "Parameter_35669", "Parameter_35426", "Parameter_35551", "Parameter_35425", - "Parameter_35422", "Parameter_35421", "Parameter_35420", "Parameter_35418", - "Parameter_35417", "Parameter_36037", "Parameter_35416", "Parameter_35415", - "Parameter_35414", "Parameter_35413", "Parameter_36138", "Parameter_35412", - "Parameter_35411", "Parameter_35410", "Parameter_35408", "Parameter_35407", - "Parameter_35406", "Parameter_35404", "Parameter_35403", "Parameter_35402", - "Parameter_35401", "Parameter_35399", "Parameter_35840", "Parameter_35398", - "Parameter_35392", "Parameter_35391", "Parameter_35390", "Parameter_35580", - "Parameter_35386", "Parameter_35385", "Parameter_35588", "Parameter_35384", - "Parameter_35379", "Parameter_35377", "Parameter_35506", "Parameter_35376", - "Parameter_35375", "Parameter_35374", "Parameter_35373", "Parameter_35372", - "Parameter_35371", "Parameter_35370", "Parameter_35369", "Parameter_35368", - "Parameter_35366", "Parameter_35365", "Parameter_35364", "Parameter_35363", - "Parameter_35362", "Parameter_35916", "Parameter_35360", "Parameter_35359", - "Parameter_35358", "Parameter_35356", "Parameter_36074", "Parameter_35355", - "Parameter_35354", "Parameter_35353", "Parameter_35541", "Parameter_35352", - "Parameter_35350", "Parameter_35949", "Parameter_35349", "Parameter_36121", - "Parameter_35348", "Parameter_35346", "Parameter_35343", "Parameter_35341", - "Parameter_35340", "Parameter_36082", "Parameter_35339", "Parameter_35338", - "Parameter_35337", "Parameter_35336", "Parameter_35335", "Parameter_35334", - "Parameter_36095", "Parameter_35333", "Parameter_35685", "Parameter_35330", - "Parameter_35329", "Parameter_36081", "Parameter_35327", "Parameter_35325", - "Parameter_34540", "Parameter_35617", "Parameter_35218", "Parameter_34533", - "Parameter_34532", "Parameter_35026", "Parameter_34523", "Parameter_34522", - "Parameter_35124", "Parameter_34539", "Parameter_34508", "Parameter_34510", - "Parameter_34506", "Parameter_34339", "Parameter_34780", "Parameter_34503", - "Parameter_36111", "Parameter_34502", "Parameter_34501", "Parameter_35741", - "Parameter_34167", "Parameter_35120", "Parameter_34497", "Parameter_34110", - "Parameter_34783", "Parameter_33964", "Parameter_34757", "Parameter_34490", - "Parameter_34808", "Parameter_34474", "Parameter_36164", "Parameter_34517", - "Parameter_34473", "Parameter_34470", "Parameter_34520", "Parameter_35223", - "Parameter_34468", "Parameter_34462", "Parameter_35703", "Parameter_34464", - "Parameter_34714", "Parameter_34758", "Parameter_35974", "Parameter_35204", - "Parameter_36181", "Parameter_36176", "Parameter_36093", "Parameter_35844", - "Parameter_35841", "Parameter_34459", "Parameter_34458", "Parameter_34450", - "Parameter_35657", "Parameter_34449", "Parameter_34448", "Parameter_34011", - "Parameter_35683", "Parameter_34697", "Parameter_34447", "Parameter_33847", - "Parameter_35952", "Parameter_34446", "Parameter_34214", "Parameter_35905", - "Parameter_35622", "Parameter_34441", "Parameter_34406", "Parameter_34015", - "Parameter_34577", "Parameter_34440", "Parameter_34233", "Parameter_35428", - "Parameter_34438", "Parameter_36036", "Parameter_34649", "Parameter_34958", - "Parameter_34759", "Parameter_33903", "Parameter_34955", "Parameter_34428", - "Parameter_34426", "Parameter_34898", "Parameter_36007", "Parameter_34421", - "Parameter_33853", "Parameter_34454", "Parameter_34302", "Parameter_34416", - "Parameter_34414", "Parameter_35874", "Parameter_34797", "Parameter_34413", - "Parameter_33983", "Parameter_34409", "Parameter_34837", "Parameter_35768", - "Parameter_35433", "Parameter_34400", "Parameter_34398", "Parameter_35540", - "Parameter_34170", "Parameter_34674", "Parameter_34965", "Parameter_34396", - "Parameter_33835", "Parameter_34149", "Parameter_35501", "Parameter_34394", - "Parameter_35852", "Parameter_34833", "Parameter_35093", "Parameter_35811", - "Parameter_34393", "Parameter_34819", "Parameter_34392", "Parameter_34391", - "Parameter_34008", "Parameter_34717", "Parameter_34388", "Parameter_35655", - "Parameter_34386", "Parameter_35924", "Parameter_35389", "Parameter_35048", - "Parameter_34385", "Parameter_34380", "Parameter_35782", "Parameter_34379", - "Parameter_35679", "Parameter_34378", "Parameter_35592", "Parameter_35092", - "Parameter_34374", "Parameter_34816", "Parameter_35931", "Parameter_35049", - "Parameter_34504", "Parameter_34430", "Parameter_34373", "Parameter_35481", - "Parameter_34083", "Parameter_34369", "Parameter_34934", "Parameter_34703", - "Parameter_34049", "Parameter_34427", "Parameter_34866", "Parameter_34364", - "Parameter_34362", "Parameter_33994", "Parameter_34361", "Parameter_35750", - "Parameter_34377", "Parameter_34359", "Parameter_34621", "Parameter_34964", - "Parameter_34489", "Parameter_35677", "Parameter_34356", "Parameter_35106", - "Parameter_34353", "Parameter_34097", "Parameter_34363", "Parameter_35462", - "Parameter_34028", "Parameter_35970", "Parameter_35395", "Parameter_34475", - "Parameter_35072", "Parameter_35954", "Parameter_34344", "Parameter_34343", - "Parameter_34627", "Parameter_34333", "Parameter_34411", "Parameter_34330", - "Parameter_34327", "Parameter_35847", "Parameter_34335", "Parameter_35070", - "Parameter_35125", "Parameter_35146", "Parameter_34817", "Parameter_33963", - "Parameter_34894", "Parameter_34325", "Parameter_34320", "Parameter_34318", - "Parameter_34800", "Parameter_35807", "Parameter_35002", "Parameter_34316", - "Parameter_34137", "Parameter_34827", "Parameter_34313", "Parameter_35873", - "Parameter_34311", "Parameter_34304", "Parameter_34893", "Parameter_34983", - "Parameter_34301", "Parameter_33975", "Parameter_35565", "Parameter_34456", - "Parameter_36018", "Parameter_34145", "Parameter_34285", "Parameter_34531", - "Parameter_36104", "Parameter_34689", "Parameter_34284", "Parameter_35032", - "Parameter_34355", "Parameter_35562", "Parameter_34982", "Parameter_34279", - "Parameter_34922", "Parameter_35013", "Parameter_35601", "Parameter_34298", - "Parameter_34226", "Parameter_34283", "Parameter_35321", "Parameter_34275", - "Parameter_35875", "Parameter_35458", "Parameter_34480", "Parameter_34273", - "Parameter_34358", "Parameter_36089", "Parameter_35342", "Parameter_34270", - "Parameter_34269", "Parameter_34268", "Parameter_34266", "Parameter_34371", - "Parameter_35287", "Parameter_34281", "Parameter_33944", "Parameter_34267", - "Parameter_34921", "Parameter_35159", "Parameter_34439", "Parameter_35237", - "Parameter_35607", "Parameter_34033", "Parameter_34897", "Parameter_35600", - "Parameter_34259", "Parameter_34923", "Parameter_34888", "Parameter_35897", - "Parameter_35822", "Parameter_34256", "Parameter_33872", "Parameter_34972", - "Parameter_34255", "Parameter_34254", "Parameter_34792", "Parameter_35938", - "Parameter_34916", "Parameter_35864", "Parameter_34252", "Parameter_34881", - "Parameter_35941", "Parameter_35149", "Parameter_34247", "Parameter_34519", - "Parameter_33939", "Parameter_35764", "Parameter_33848", "Parameter_34246", - "Parameter_34908", "Parameter_35397", "Parameter_34261", "Parameter_34432", - "Parameter_35312", "Parameter_35423", "Parameter_34242", "Parameter_34469", - "Parameter_34337", "Parameter_34429", "Parameter_34357", "Parameter_33969", - "Parameter_35469", "Parameter_34241", "Parameter_35495", "Parameter_35294", - "Parameter_35212", "Parameter_33982", "Parameter_35036", "Parameter_35419", - "Parameter_34240", "Parameter_33953", "Parameter_35101", "Parameter_36105", - "Parameter_34238", "Parameter_34237", "Parameter_34493", "Parameter_35184", - "Parameter_34211", "Parameter_33859", "Parameter_34148", "Parameter_35096", - "Parameter_35991", "Parameter_34235", "Parameter_34712", "Parameter_34486", - "Parameter_34234", "Parameter_34570", "Parameter_35623", "Parameter_34232", - "Parameter_34479", "Parameter_34229", "Parameter_34779", "Parameter_35161", - "Parameter_34228", "Parameter_34227", "Parameter_34932", "Parameter_34225", - "Parameter_35582", "Parameter_34224", "Parameter_35800", "Parameter_35720", - "Parameter_34220", "Parameter_34769", "Parameter_34217", "Parameter_34748", - "Parameter_36040", "Parameter_34511", "Parameter_34360", "Parameter_35830", - "Parameter_34213", "Parameter_34058", "Parameter_34460", "Parameter_35891", - "Parameter_35275", "Parameter_34280", "Parameter_35619", "Parameter_34135", - "Parameter_34551", "Parameter_35812", "Parameter_34975", "Parameter_34208", - "Parameter_34611", "Parameter_34686", "Parameter_34206", "Parameter_35328", - "Parameter_35211", "Parameter_35836", "Parameter_34250", "Parameter_34204", - "Parameter_34349", "Parameter_34249", "Parameter_34341", "Parameter_35742", - "Parameter_34645", "Parameter_34200", "Parameter_34198", "Parameter_35976", - "Parameter_34197", "Parameter_35595", "Parameter_35393", "Parameter_34399", - "Parameter_34455", "Parameter_34524", "Parameter_35664", "Parameter_34375", - "Parameter_35041", "Parameter_34514", "Parameter_34193", "Parameter_34466", - "Parameter_34192", "Parameter_34405", "Parameter_34191", "Parameter_34016", - "Parameter_34840", "Parameter_34188", "Parameter_34187", "Parameter_34422", - "Parameter_34995", "Parameter_34185", "Parameter_35254", "Parameter_34183", - "Parameter_35632", "Parameter_35511", "Parameter_34395", "Parameter_34340", - "Parameter_36010", "Parameter_34243", "Parameter_35497", "Parameter_34564", - "Parameter_34182", "Parameter_34180", "Parameter_35166", "Parameter_34179", - "Parameter_34178", "Parameter_35291", "Parameter_34389", "Parameter_34806", - "Parameter_34176", "Parameter_34173", "Parameter_34687", "Parameter_34172", - "Parameter_34169", "Parameter_34066", "Parameter_33996", "Parameter_33966", - "Parameter_33890", "Parameter_34306", "Parameter_34763", "Parameter_33981", - "Parameter_35854", "Parameter_35546", "Parameter_34521", "Parameter_35285", - "Parameter_36143", "Parameter_34751", "Parameter_33976", "Parameter_34312", - "Parameter_33865", "Parameter_34870", "Parameter_34962", "Parameter_33990", - "Parameter_35357", "Parameter_34350", "Parameter_34554", "Parameter_33974", - "Parameter_35332", "Parameter_35061", "Parameter_33992", "Parameter_35676", - "Parameter_34297", "Parameter_33987", "Parameter_34743", "Parameter_35165", - "Parameter_34485", "Parameter_34342", "Parameter_35079", "Parameter_33884", - "Parameter_34764", "Parameter_34056", "Parameter_35846", "Parameter_35053", - "Parameter_34515", "Parameter_33948", "Parameter_34423", "Parameter_34195", - "Parameter_34295", "Parameter_34005", "Parameter_33959", "Parameter_35681", - "Parameter_34367", "Parameter_34410", "Parameter_33955", "Parameter_33956", - "Parameter_34032", "Parameter_33951", "Parameter_33883", "Parameter_36144", - "Parameter_35827", "Parameter_34682", "Parameter_34294", "Parameter_34613", - "Parameter_34290", "Parameter_34998", "Parameter_35605", "Parameter_34210", - "Parameter_35739", "Parameter_33882", "Parameter_33873", "Parameter_35603", - "Parameter_35367", "Parameter_35207", "Parameter_33957", "Parameter_33980", - "Parameter_34131", "Parameter_34484", "Parameter_33921", "Parameter_34064", - "Parameter_34127", "Parameter_34288", "Parameter_35723", "Parameter_34711", - "Parameter_34954", "Parameter_34094", "Parameter_34165", "Parameter_35899", - "Parameter_34471", "Parameter_34017", "Parameter_34652", "Parameter_33942", - "Parameter_34518", "Parameter_34002", "Parameter_34324", "Parameter_35128", - "Parameter_33888", "Parameter_35691", "Parameter_34323", "Parameter_34499", - "Parameter_33936", "Parameter_34984", "Parameter_35641", "Parameter_34419", - "Parameter_33949", "Parameter_33934", "Parameter_35606", "Parameter_34044", - "Parameter_34749", "Parameter_34160", "Parameter_34013", "Parameter_35447", - "Parameter_33931", "Parameter_34742", "Parameter_35947", "Parameter_33935", - "Parameter_35659", "Parameter_34496", "Parameter_35845", "Parameter_35051", - "Parameter_34086", "Parameter_35967", "Parameter_33988", "Parameter_34567", - "Parameter_33924", "Parameter_34407", "Parameter_35877", "Parameter_35796", - "Parameter_33922", "Parameter_35946", "Parameter_34150", "Parameter_35637", - "Parameter_34181", "Parameter_35068", "Parameter_35654", "Parameter_34287", - "Parameter_34465", "Parameter_33918", "Parameter_35113", "Parameter_34382", - "Parameter_34331", "Parameter_34549", "Parameter_34143", "Parameter_33950", - "Parameter_34112", "Parameter_34068", "Parameter_35508", "Parameter_33970", - "Parameter_35173", "Parameter_33863", "Parameter_34021", "Parameter_34050", - "Parameter_34139", "Parameter_34535", "Parameter_33875", "Parameter_33919", - "Parameter_34705", "Parameter_34077", "Parameter_34900", "Parameter_34630", - "Parameter_34348", "Parameter_34038", "Parameter_35842", "Parameter_33849", - "Parameter_34265", "Parameter_33901", "Parameter_34937", "Parameter_35478", - "Parameter_33945", "Parameter_34902", "Parameter_33925", "Parameter_33906", - "Parameter_34073", "Parameter_34683", "Parameter_33998", "Parameter_36167", - "Parameter_34498", "Parameter_34544", "Parameter_33885", "Parameter_34401", - "Parameter_34272", "Parameter_34111", "Parameter_33984", "Parameter_34082", - "Parameter_34036", "Parameter_34128", "Parameter_34054", "Parameter_34090", - "Parameter_33854", "Parameter_34500", "Parameter_34055", "Parameter_34987", - "Parameter_34776", "Parameter_35400", "Parameter_34223", "Parameter_33943", - "Parameter_34282", "Parameter_35937", "Parameter_34718", "Parameter_34152", - "Parameter_33856", "Parameter_36166", "Parameter_34491", "Parameter_34417", - "Parameter_34121", "Parameter_33997", "Parameter_33900", "Parameter_34874", - "Parameter_33868", "Parameter_33979", "Parameter_35065", "Parameter_35895", - "Parameter_35192", "Parameter_34527", "Parameter_33915", "Parameter_34596", - "Parameter_33927", "Parameter_34029", "Parameter_35835", "Parameter_33923", - "Parameter_34215", "Parameter_35143", "Parameter_33978", "Parameter_34573", - "Parameter_33899", "Parameter_34505", "Parameter_34245", "Parameter_34338", - "Parameter_35308", "Parameter_33851", "Parameter_34444", "Parameter_35444", - "Parameter_35274", "Parameter_35920", "Parameter_34018", "Parameter_34346", - "Parameter_33866", "Parameter_35098", "Parameter_34578", "Parameter_35180", - "Parameter_34547", "Parameter_35209", "Parameter_33837", "Parameter_34289", - "Parameter_34979", "Parameter_33833", "Parameter_34452", "Parameter_35203", - "Parameter_33962", "Parameter_34851", "Parameter_34030", "Parameter_34872", - "Parameter_33874", "Parameter_33878", "Parameter_33916", "Parameter_34669", - "Parameter_33896", "Parameter_33914", "Parameter_34155", "Parameter_35861", - "Parameter_34672", "Parameter_34151", "Parameter_34047", "Parameter_33893", - "Parameter_34509", "Parameter_34102", "Parameter_33993", "Parameter_34257", - "Parameter_34219", "Parameter_34174", "Parameter_34296", "Parameter_34696", - "Parameter_34381", "Parameter_34147", "Parameter_34463", "Parameter_34700", - "Parameter_34043", "Parameter_34789", "Parameter_35907", "Parameter_33961", - "Parameter_34526", "Parameter_36035", "Parameter_35542", "Parameter_35347", - "Parameter_33912", "Parameter_34000", "Parameter_34075", "Parameter_33947", - "Parameter_35649", "Parameter_34303", "Parameter_35717", "Parameter_35220", - "Parameter_34262", "Parameter_34006", "Parameter_34051", "Parameter_34574", - "Parameter_34670", "Parameter_34071", "Parameter_34402", "Parameter_33930", - "Parameter_34263", "Parameter_35890", "Parameter_33870", "Parameter_36066", - "Parameter_34142", "Parameter_35988", "Parameter_35878", "Parameter_34291", - "Parameter_33908", "Parameter_33880", "Parameter_34425", "Parameter_34436", - "Parameter_35959", "Parameter_34113", "Parameter_34616", "Parameter_33902", - "Parameter_35527", "Parameter_33920", "Parameter_34483", "Parameter_34648", - "Parameter_35097", "Parameter_33933", "Parameter_34023", "Parameter_35898", - "Parameter_34657", "Parameter_34334", "Parameter_35662", "Parameter_33937", - "Parameter_35290", "Parameter_34434", "Parameter_34322", "Parameter_33967", - "Parameter_34788", "Parameter_36091", "Parameter_34207", "Parameter_33876", - "Parameter_35761", "Parameter_34251", "Parameter_35405", "Parameter_34103", - "Parameter_34940", "Parameter_34412", "Parameter_34891", "Parameter_34805", - "Parameter_33877", "Parameter_33852", "Parameter_34855", "Parameter_33886", - "Parameter_35178", "Parameter_34487", "Parameter_34218", "Parameter_34175", - "Parameter_34326", "Parameter_34990", "Parameter_34019", "Parameter_36020", - "Parameter_35249", "Parameter_34390", "Parameter_33897", "Parameter_34166", - "Parameter_34368", "Parameter_33869", "Parameter_34080", "Parameter_35687", - "Parameter_34826", "Parameter_35071", "Parameter_34433", "Parameter_33844", - "Parameter_33887", "Parameter_36086", "Parameter_35136", "Parameter_34222", - "Parameter_35278", "Parameter_35990", "Parameter_34154", "Parameter_36174", - "Parameter_33895", "Parameter_35168", "Parameter_33858", "Parameter_34590", - "Parameter_34202", "Parameter_35834", "Parameter_34556", "Parameter_34831", - "Parameter_35448", "Parameter_34321", "Parameter_33838", "Parameter_35190", - "Parameter_34615", "Parameter_33894", "Parameter_35519", "Parameter_34057", - "Parameter_35152", "Parameter_35726", "Parameter_33904", "Parameter_34933", - "Parameter_34516", "Parameter_33891", "Parameter_35027", "Parameter_34443", - "Parameter_35069", "Parameter_33913", "Parameter_33905", "Parameter_34134", - "Parameter_34007", "Parameter_35922", "Parameter_35351", "Parameter_34120", - "Parameter_34765", "Parameter_34397", "Parameter_33881", "Parameter_33910", - "Parameter_34003", "Parameter_35673", "Parameter_34796", "Parameter_34248", - "Parameter_35282", "Parameter_34177", "Parameter_34009", "Parameter_34117", - "Parameter_34750", "Parameter_33926", "Parameter_34109", "Parameter_34014", - "Parameter_35706", "Parameter_34829", "Parameter_34020", "Parameter_34345", - "Parameter_34062", "Parameter_34040", "Parameter_34695", "Parameter_35272", - "Parameter_34022", "Parameter_34025", "Parameter_35056", "Parameter_34492", - "Parameter_35230", "Parameter_35240", "Parameter_36117", "Parameter_34026", - "Parameter_35746", "Parameter_35459", "Parameter_35315", "Parameter_33954", - "Parameter_35869", "Parameter_35843", "Parameter_34665", "Parameter_34203", - "Parameter_33857", "Parameter_34594", "Parameter_34138", "Parameter_34031", - "Parameter_34034", "Parameter_34039", "Parameter_34035", "Parameter_35986", - "Parameter_35918", "Parameter_35306", "Parameter_34841", "Parameter_34037", - "Parameter_34472", "Parameter_34913", "Parameter_35116", "Parameter_35309", - "Parameter_35202", "Parameter_36026", "Parameter_36003", "Parameter_33971", - "Parameter_34201", "Parameter_34559", "Parameter_34042", "Parameter_34782", - "Parameter_34300", "Parameter_34835", "Parameter_35624", "Parameter_34370", - "Parameter_34118", "Parameter_34046", "Parameter_34610", "Parameter_34053", - "Parameter_34668", "Parameter_33867", "Parameter_34104", "Parameter_34307", - "Parameter_34146", "Parameter_34383", "Parameter_35409", "Parameter_34061", - "Parameter_34069", "Parameter_34278", "Parameter_35584", "Parameter_33985", - "Parameter_34024", "Parameter_34184", "Parameter_34845", "Parameter_34997", - "Parameter_34063", "Parameter_34012", "Parameter_34065", "Parameter_34045", - "Parameter_34847", "Parameter_35758", "Parameter_34865", "Parameter_35084", - "Parameter_34477", "Parameter_34074", "Parameter_34628", "Parameter_34709", - "Parameter_34602", "Parameter_34076", "Parameter_35594", "Parameter_34221", - "Parameter_35219", "Parameter_34079", "Parameter_34786", "Parameter_35989", - "Parameter_34314", "Parameter_35196", "Parameter_34387", "Parameter_34081", - "Parameter_34092", "Parameter_34575", "Parameter_34084", "Parameter_33999", - "Parameter_34869", "Parameter_34478", "Parameter_34702", "Parameter_35035", - "Parameter_34001", "Parameter_35663", "Parameter_34088", "Parameter_34612", - "Parameter_35083", "Parameter_34230", "Parameter_34812", "Parameter_35962", - "Parameter_34089", "Parameter_34384", "Parameter_33932", "Parameter_33968", - "Parameter_34087", "Parameter_34093", "Parameter_35557", "Parameter_34096", - "Parameter_35823", "Parameter_34693", "Parameter_34060", "Parameter_34424", - "Parameter_34579", "Parameter_35684", "Parameter_34153", "Parameter_34098", - "Parameter_34099", "Parameter_34775", "Parameter_35310", "Parameter_34133", - "Parameter_34276", "Parameter_34319", "Parameter_36146", "Parameter_34286", - "Parameter_34953", "Parameter_33846", "Parameter_34105", "Parameter_34106", - "Parameter_34938", "Parameter_35651", "Parameter_34351", "Parameter_34108", - "Parameter_34107", "Parameter_34818", "Parameter_34114", "Parameter_34115", - "Parameter_34317", "Parameter_34116", "Parameter_34978", "Parameter_34140", - "Parameter_34974", "Parameter_36182", "Parameter_34136", "Parameter_34659", - "Parameter_34205", "Parameter_34685", "Parameter_35075", "Parameter_34253", - "Parameter_34132", "Parameter_33946", "Parameter_34101", "Parameter_34476", - "Parameter_34123", "Parameter_33864", "Parameter_34624", "Parameter_33860", - "Parameter_34981", "Parameter_34052", "Parameter_34126", "Parameter_35966", - "Parameter_35913", "Parameter_34305", "Parameter_35260", "Parameter_34457", - "Parameter_34277", "Parameter_33855", "Parameter_34157", "Parameter_34309", - "Parameter_34141", "Parameter_34027", "Parameter_34209", "Parameter_34156", - "Parameter_35885", "Parameter_34122", "Parameter_34453", "Parameter_35774", - "Parameter_34144", "Parameter_34119", "Parameter_34777", "Parameter_34159", - "Parameter_36090", "Parameter_34161", "Parameter_34067", "Parameter_33940", - "Parameter_34734", "Parameter_34915", "Parameter_34948", "Parameter_34162", - "Parameter_34163", "Parameter_34292", "Parameter_34168", "Parameter_34541", - "Parameter_34644", "Parameter_35380", "Parameter_33911", "Parameter_35141", - "Parameter_35482", "Parameter_34542", "Parameter_35530", "Parameter_34545", - "Parameter_34716", "Parameter_34546", "Parameter_36011", "Parameter_34871", - "Parameter_34100", "Parameter_34548", "Parameter_35987", "Parameter_35801", - "Parameter_35142", "Parameter_34550", "Parameter_34552", "Parameter_35752", - "Parameter_34190", "Parameter_35080", "Parameter_34553", "Parameter_35280", - "Parameter_34555", "Parameter_36113", "Parameter_34807", "Parameter_34557", - "Parameter_35879", "Parameter_34558", "Parameter_34560", "Parameter_35493", - "Parameter_34561", "Parameter_34124", "Parameter_34562", "Parameter_35396", - "Parameter_34543", "Parameter_34565", "Parameter_34566", "Parameter_34889", - "Parameter_35105", "Parameter_34569", "Parameter_34571", "Parameter_34244", - "Parameter_34329", "Parameter_34572", "Parameter_34576", "Parameter_34704", - "Parameter_34830", "Parameter_34580", "Parameter_36136", "Parameter_35597", - "Parameter_34581", "Parameter_35443", "Parameter_34435", "Parameter_33928", - "Parameter_34582", "Parameter_35719", "Parameter_35021", "Parameter_34583", - "Parameter_35102", "Parameter_35718", "Parameter_35569", "Parameter_34584", - "Parameter_36094", "Parameter_34585", "Parameter_34586", "Parameter_33879", - "Parameter_34589", "Parameter_34591", "Parameter_34592", "Parameter_36092", - "Parameter_35870", "Parameter_34260", "Parameter_34673", "Parameter_34593", - "Parameter_34595", "Parameter_35210", "Parameter_35908", "Parameter_34597", - "Parameter_35817", "Parameter_35017", "Parameter_34598", "Parameter_34599", - "Parameter_34600", "Parameter_35544", "Parameter_34601", "Parameter_34603", - "Parameter_35610", "Parameter_35225", "Parameter_36049", "Parameter_34537", - "Parameter_34604", "Parameter_34605", "Parameter_34760", "Parameter_34606", - "Parameter_34332", "Parameter_35025", "Parameter_33850", "Parameter_34607", - "Parameter_34824", "Parameter_34608", "Parameter_34609", "Parameter_36155", - "Parameter_35883", "Parameter_34666", "Parameter_35725", "Parameter_33952", - "Parameter_35295", "Parameter_34451", "Parameter_34563", "Parameter_34617", - "Parameter_34618", "Parameter_34619", "Parameter_34625", "Parameter_35015", - "Parameter_34196", "Parameter_34631", "Parameter_36131", "Parameter_35229", - "Parameter_34513", "Parameter_35247", "Parameter_34633", "Parameter_34635", - "Parameter_34638", "Parameter_34639", "Parameter_34640", "Parameter_34372", - "Parameter_34642", "Parameter_34643", "Parameter_34646", "Parameter_34650", - "Parameter_35645", "Parameter_34926", "Parameter_36069", "Parameter_34651", - "Parameter_34727", "Parameter_34653", "Parameter_34655", "Parameter_34656", - "Parameter_35868", "Parameter_34658", "Parameter_34660", "Parameter_34661", - "Parameter_34662", "Parameter_34663", "Parameter_34867", "Parameter_35019", - "Parameter_35077", "Parameter_35876", "Parameter_34664", "Parameter_35887", - "Parameter_34667", "Parameter_35862", "Parameter_34671", "Parameter_34125", - "Parameter_35316", "Parameter_34676", "Parameter_34677", "Parameter_35771", - "Parameter_34678", "Parameter_34967", "Parameter_35119", "Parameter_33960", - "Parameter_34679", "Parameter_35735", "Parameter_34186", "Parameter_34681", - "Parameter_34684", "Parameter_35942", "Parameter_35804", "Parameter_35171", - "Parameter_34688", "Parameter_34690", "Parameter_34691", "Parameter_35697", - "Parameter_33929", "Parameter_34895", "Parameter_35104", "Parameter_34692", - "Parameter_36115", "Parameter_35805", "Parameter_35675", "Parameter_34568", - "Parameter_34694", "Parameter_34698", "Parameter_34701", "Parameter_36157", - "Parameter_35151", "Parameter_34706", "Parameter_34708", "Parameter_34710", - "Parameter_35236", "Parameter_34713", "Parameter_34715", "Parameter_34719", - "Parameter_34720", "Parameter_34721", "Parameter_34722", "Parameter_34723", - "Parameter_34725", "Parameter_35578", "Parameter_35039", "Parameter_35250", - "Parameter_34726", "Parameter_34728", "Parameter_34729", "Parameter_34730", - "Parameter_34731", "Parameter_35963", "Parameter_34680", "Parameter_35205", - "Parameter_35331", "Parameter_34072", "Parameter_34732", "Parameter_34733", - "Parameter_34941", "Parameter_34735", "Parameter_35710", "Parameter_34951", - "Parameter_34736", "Parameter_34956", "Parameter_34420", "Parameter_34737", - "Parameter_34085", "Parameter_34738", "Parameter_34274", "Parameter_34739", - "Parameter_34740", "Parameter_34741", "Parameter_34744", "Parameter_34158", - "Parameter_34745", "Parameter_34747", "Parameter_34752", "Parameter_35000", - "Parameter_35802", "Parameter_34753", "Parameter_34754", "Parameter_34876", - "Parameter_34755", "Parameter_34756", "Parameter_34403", "Parameter_34761", - "Parameter_34762", "Parameter_35982", "Parameter_35162", "Parameter_34636", - "Parameter_34766", "Parameter_34620", "Parameter_34767", "Parameter_34347", - "Parameter_34768", "Parameter_34437", "Parameter_33898", "Parameter_34770", - "Parameter_34771", "Parameter_34772", "Parameter_35265", "Parameter_34773", - "Parameter_35770", "Parameter_34774", "Parameter_34746", "Parameter_34048", - "Parameter_35208", "Parameter_34778", "Parameter_34336", "Parameter_34781", - "Parameter_35313", "Parameter_35474", "Parameter_34445", "Parameter_34784", - "Parameter_34787", "Parameter_34790", "Parameter_35713", "Parameter_34791", - "Parameter_35024", "Parameter_34793", "Parameter_34637", "Parameter_34794", - "Parameter_34936", "Parameter_34534", "Parameter_35158", "Parameter_34795", - "Parameter_35680", "Parameter_34798", "Parameter_34799", "Parameter_34647", - "Parameter_35300", "Parameter_34801", "Parameter_34803", "Parameter_34804", - "Parameter_34809", "Parameter_34810", "Parameter_34811", "Parameter_35574", - "Parameter_34813", "Parameter_34814", "Parameter_35674", "Parameter_33973", - "Parameter_34815", "Parameter_34164", "Parameter_34821", "Parameter_34707", - "Parameter_34822", "Parameter_34823", "Parameter_34588", "Parameter_33989", - "Parameter_34825", "Parameter_34431", "Parameter_35085", "Parameter_35665", - "Parameter_34832", "Parameter_35067", "Parameter_35475", "Parameter_34834", - "Parameter_35933", "Parameter_35091", "Parameter_35320", "Parameter_36140", - "Parameter_35535", "Parameter_34836", "Parameter_35181", "Parameter_34838", - "Parameter_34996", "Parameter_35672", "Parameter_34839", "Parameter_34842", - "Parameter_34846", "Parameter_34844", "Parameter_34199", "Parameter_34848", - "Parameter_34041", "Parameter_34850", "Parameter_34852", "Parameter_34853", - "Parameter_34854", "Parameter_35114", "Parameter_34512", "Parameter_35186", - "Parameter_35560", "Parameter_34856", "Parameter_35388", "Parameter_35006", - "Parameter_34859", "Parameter_34860", "Parameter_35361", "Parameter_33889", - "Parameter_34861", "Parameter_35095", "Parameter_34862", "Parameter_35269", - "Parameter_36100", "Parameter_34863", "Parameter_34963", "Parameter_35296", - "Parameter_34622", "Parameter_34864", "Parameter_34868", "Parameter_34873", - "Parameter_36043", "Parameter_34875", "Parameter_35112", "Parameter_34877", - "Parameter_34525", "Parameter_34442", "Parameter_35263", "Parameter_35345", - "Parameter_34878", "Parameter_34467", "Parameter_34880", "Parameter_34882", - "Parameter_36024", "Parameter_35783", "Parameter_35147", "Parameter_34883", - "Parameter_34488", "Parameter_34264", "Parameter_35042", "Parameter_35066", - "Parameter_34884", "Parameter_35903", "Parameter_34699", "Parameter_34989", - "Parameter_35045", "Parameter_35923", "Parameter_34536", "Parameter_34885", - "Parameter_35062", "Parameter_34886", "Parameter_34887", "Parameter_34308", - "Parameter_34587", "Parameter_34892", "Parameter_35047", "Parameter_34896", - "Parameter_35123", "Parameter_34899", "Parameter_33941", "Parameter_34901", - "Parameter_34623", "Parameter_34904", "Parameter_33986", "Parameter_35009", - "Parameter_34906", "Parameter_34907", "Parameter_35635", "Parameter_33892", - "Parameter_34909", "Parameter_34939", "Parameter_35177", "Parameter_34910", - "Parameter_35175", "Parameter_34415", "Parameter_34911", "Parameter_36031", - "Parameter_34912", "Parameter_35470", "Parameter_34365", "Parameter_34914", - "Parameter_34917", "Parameter_35176", "Parameter_34918", "Parameter_35134", - "Parameter_34919", "Parameter_33834", "Parameter_34944", "Parameter_34299", - "Parameter_34920", "Parameter_34924", "Parameter_35155", "Parameter_35826", - "Parameter_34927", "Parameter_36064", "Parameter_35170", "Parameter_34857", - "Parameter_34928", "Parameter_34632", "Parameter_34929", "Parameter_36027", - "Parameter_35052", "Parameter_35503", "Parameter_34966", "Parameter_34930", - "Parameter_34641", "Parameter_34931", "Parameter_35169", "Parameter_34634", - "Parameter_34935", "Parameter_34942", "Parameter_35642", "Parameter_35150", - "Parameter_34482", "Parameter_34130", "Parameter_34943", "Parameter_34404", - "Parameter_34945", "Parameter_35615", "Parameter_34946", "Parameter_34328", - "Parameter_35018", "Parameter_34947", "Parameter_35050", "Parameter_35762", - "Parameter_34950", "Parameter_35235", "Parameter_34952", "Parameter_34959", - "Parameter_34968", "Parameter_34961", "Parameter_35525", "Parameter_34969", - "Parameter_34970", "Parameter_33836", "Parameter_34971", "Parameter_34973", - "Parameter_34976", "Parameter_35086", "Parameter_34977", "Parameter_34980", - "Parameter_34271", "Parameter_34418", "Parameter_34925", "Parameter_34985", - "Parameter_34461", "Parameter_34988", "Parameter_34991", "Parameter_34992", - "Parameter_34993", "Parameter_34994", "Parameter_35381", "Parameter_34999", - "Parameter_35001", "Parameter_35382", "Parameter_35003", "Parameter_35383", - "Parameter_35004", "Parameter_35387", "Parameter_35005", "Parameter_36025", - "Parameter_34236", "Parameter_35007", "Parameter_33977", "Parameter_35008", - "Parameter_35808", "Parameter_34858", "Parameter_35010", "Parameter_35011", - "Parameter_35089", "Parameter_35012", "Parameter_35014", "Parameter_35943", - "Parameter_34957", "Parameter_35016", "Parameter_35107", "Parameter_35020", - "Parameter_35022", "Parameter_35023", "Parameter_35028", "Parameter_34354", - "Parameter_34352", "Parameter_35029", "Parameter_35094", "Parameter_34629", - "Parameter_35030", "Parameter_34004", "Parameter_35031", "Parameter_35033", - "Parameter_35688", "Parameter_35034", "Parameter_35037", "Parameter_33938", - "Parameter_34194", "Parameter_35038", "Parameter_35040", "Parameter_34315", - "Parameter_35043", "Parameter_35281", "Parameter_35044", "Parameter_35856", - "Parameter_34903", "Parameter_35046", "Parameter_35317", "Parameter_34879", - "Parameter_35055", "Parameter_35057", "Parameter_33991", "Parameter_35058", - "Parameter_35319", "Parameter_34189", "Parameter_35060", "Parameter_34481", - "Parameter_34129", "Parameter_35063", "Parameter_36116", "Parameter_35064", - "Parameter_34507", "Parameter_35073", "Parameter_35074", "Parameter_35076", - "Parameter_35078", "Parameter_34890", "Parameter_35081", "Parameter_35439", - "Parameter_33965", "Parameter_35082", "Parameter_34010", "Parameter_35087", - "Parameter_35088", "Parameter_35944", "Parameter_35090", "Parameter_34654", - "Parameter_35099", "Parameter_35100", "Parameter_35103", "Parameter_36051", - "Parameter_35108", "Parameter_35889", "Parameter_35109", "Parameter_35110", - "Parameter_35111", "Parameter_35894", "Parameter_35138", "Parameter_35451", - "Parameter_35115", "Parameter_35940", "Parameter_33861", "Parameter_35133", - "Parameter_34408", "Parameter_35117", "Parameter_34171", "Parameter_35163", - "Parameter_35118", "Parameter_35693", "Parameter_33995", "Parameter_35126", - "Parameter_35127", "Parameter_34843", "Parameter_34820", "Parameter_34849", - "Parameter_35129", "Parameter_35130", "Parameter_35498", "Parameter_35131", - "Parameter_35132", "Parameter_35135", "Parameter_35778", "Parameter_35137", - "Parameter_35893", "Parameter_35139", "Parameter_35140", "Parameter_34530", - "Parameter_35227", "Parameter_35144", "Parameter_35148", "Parameter_35819", - "Parameter_35153", "Parameter_35154", "Parameter_35424", "Parameter_35156", - "Parameter_35724", "Parameter_35157", "Parameter_35394", "Parameter_34828", - "Parameter_35213", "Parameter_36016", "Parameter_35160", "Parameter_35727", - "Parameter_35214", "Parameter_35164", "Parameter_35167", "Parameter_34366", - "Parameter_35172", "Parameter_35174", "Parameter_36015", "Parameter_35179", - "Parameter_34785", "Parameter_35248", "Parameter_36070", "Parameter_35182", - "Parameter_36000", "Parameter_35183", "Parameter_34216", "Parameter_33862", - "Parameter_33845", "Parameter_35185", "Parameter_34070", "Parameter_34614", - "Parameter_35188", "Parameter_35599", "Parameter_35189", "Parameter_35721", - "Parameter_35241", "Parameter_35191", "Parameter_35193", "Parameter_35194", - "Parameter_34258", "Parameter_35195", "Parameter_34905", "Parameter_35252", - "Parameter_33958", "Parameter_34078", "Parameter_34960", "Parameter_35197", - "Parameter_35445", "Parameter_35344", "Parameter_33871", "Parameter_35198", - "Parameter_35326", "Parameter_35199", "Parameter_35200", "Parameter_33972", - "Parameter_35201", "Parameter_35206", "Parameter_35378", "Parameter_34494", - "Parameter_34212", "Parameter_33843", "Parameter_35215", "Parameter_35779", - "Parameter_35322", "Parameter_35216", "Parameter_35625", "Parameter_35217", - "Parameter_35283", "Parameter_34095", "Parameter_35221", "Parameter_36161", - "Parameter_35904", "Parameter_34675", "Parameter_35222", "Parameter_35224", - "Parameter_35618", "Parameter_33907", "Parameter_35226", "Parameter_34529", - "Parameter_35145", "Parameter_35228", "Parameter_35286", "Parameter_35590", - "Parameter_33917", "Parameter_35231", "Parameter_35608", "Parameter_34310", - "Parameter_35232", "Parameter_35612", "Parameter_35233", "Parameter_34495", - "Parameter_35187", "Parameter_35234", "Parameter_35238", "Parameter_35769", - "Parameter_35239", "Parameter_35242", "Parameter_35803", "Parameter_35243", - "Parameter_35244", "Parameter_35245", "Parameter_36162", "Parameter_35246", - "Parameter_35251", "Parameter_35253", "Parameter_35121", "Parameter_35255", - "Parameter_34986", "Parameter_35256", "Parameter_34239", "Parameter_34091", - "Parameter_35257", "Parameter_34528", "Parameter_33909", "Parameter_35258", - "Parameter_35259", "Parameter_34538", "Parameter_34376", "Parameter_35261", - "Parameter_35264", "Parameter_35997", "Parameter_35122", "Parameter_35266", - "Parameter_35640", "Parameter_35267", "Parameter_35977", "Parameter_35059", - "Parameter_35268", "Parameter_35270", "Parameter_35054", "Parameter_35271", - "Parameter_35273", "Parameter_34626", "Parameter_35276", "Parameter_34949", - "Parameter_35277", "Parameter_34231", "Parameter_35279", "Parameter_35568", - "Parameter_34293", "Parameter_35284", "Parameter_35288", "Parameter_35318", - "Parameter_36178", "Parameter_35289", "Parameter_35292", "Parameter_36150", - "Parameter_35293", "Parameter_35297", "Parameter_35298", "Parameter_35262", - "Parameter_35307", "Parameter_35299", "Parameter_35919", "Parameter_35301", - "Parameter_35302", "Parameter_35960", "Parameter_34724", "Parameter_35303", - "Parameter_36076", "Parameter_35304", "Parameter_34802", "Parameter_35305", - "Parameter_36096", "Parameter_35311", "Parameter_35314", "Parameter_35323", - "Parameter_34059", "Parameter_35324" - ], - "result" : - [ "ReplaceSlice_40137", "Add_40138", "Add_40130", "Add_40136", "Add_40129", "Slice_36307" ] -}] diff --git a/ngraph/test/models/mxnet/Sockeye_Seq2Seq_forward.json b/ngraph/test/models/mxnet/Sockeye_Seq2Seq_forward.json deleted file mode 100644 index 2bff407a9807fb..00000000000000 --- a/ngraph/test/models/mxnet/Sockeye_Seq2Seq_forward.json +++ /dev/null @@ -1,17632 +0,0 @@ -[{ - "name" : "Function_42", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_29212", - "op" : "Parameter", - "outputs" : ["Parameter_29212_0"], - "shape" : [ 60, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_26814", - "op" : "Parameter", - "outputs" : ["Parameter_26814_0"], - "shape" : [1024] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_26813", - "op" : "Parameter", - "outputs" : ["Parameter_26813_0"], - "shape" : [ 1024, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_26806", - "op" : "Parameter", - "outputs" : ["Parameter_26806_0"], - "shape" : [1024] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_26805", - "op" : "Parameter", - "outputs" : ["Parameter_26805_0"], - "shape" : [ 1024, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_26802", - "op" : "Parameter", - "outputs" : ["Parameter_26802_0"], - "shape" : [ 60, 64, 256 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26811", - "op" : "Constant", - "outputs" : ["Constant_26811_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26838", - "op" : "Constant", - "outputs" : ["Constant_26838_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26834", - "op" : "Constant", - "outputs" : ["Constant_26834_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26828", - "op" : "Constant", - "outputs" : ["Constant_26828_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26821", - "op" : "Constant", - "outputs" : ["Constant_26821_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26878", - "op" : "Constant", - "outputs" : ["Constant_26878_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26870", - "op" : "Constant", - "outputs" : ["Constant_26870_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26863", - "op" : "Constant", - "outputs" : ["Constant_26863_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26918", - "op" : "Constant", - "outputs" : ["Constant_26918_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26910", - "op" : "Constant", - "outputs" : ["Constant_26910_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26903", - "op" : "Constant", - "outputs" : ["Constant_26903_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26958", - "op" : "Constant", - "outputs" : ["Constant_26958_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26950", - "op" : "Constant", - "outputs" : ["Constant_26950_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26943", - "op" : "Constant", - "outputs" : ["Constant_26943_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26998", - "op" : "Constant", - "outputs" : ["Constant_26998_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26990", - "op" : "Constant", - "outputs" : ["Constant_26990_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_26983", - "op" : "Constant", - "outputs" : ["Constant_26983_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27038", - "op" : "Constant", - "outputs" : ["Constant_27038_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27030", - "op" : "Constant", - "outputs" : ["Constant_27030_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27023", - "op" : "Constant", - "outputs" : ["Constant_27023_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27078", - "op" : "Constant", - "outputs" : ["Constant_27078_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27070", - "op" : "Constant", - "outputs" : ["Constant_27070_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27063", - "op" : "Constant", - "outputs" : ["Constant_27063_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27118", - "op" : "Constant", - "outputs" : ["Constant_27118_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27110", - "op" : "Constant", - "outputs" : ["Constant_27110_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27103", - "op" : "Constant", - "outputs" : ["Constant_27103_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27158", - "op" : "Constant", - "outputs" : ["Constant_27158_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27150", - "op" : "Constant", - "outputs" : ["Constant_27150_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27143", - "op" : "Constant", - "outputs" : ["Constant_27143_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27198", - "op" : "Constant", - "outputs" : ["Constant_27198_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27190", - "op" : "Constant", - "outputs" : ["Constant_27190_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27183", - "op" : "Constant", - "outputs" : ["Constant_27183_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27238", - "op" : "Constant", - "outputs" : ["Constant_27238_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27230", - "op" : "Constant", - "outputs" : ["Constant_27230_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27223", - "op" : "Constant", - "outputs" : ["Constant_27223_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27278", - "op" : "Constant", - "outputs" : ["Constant_27278_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27270", - "op" : "Constant", - "outputs" : ["Constant_27270_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27263", - "op" : "Constant", - "outputs" : ["Constant_27263_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27318", - "op" : "Constant", - "outputs" : ["Constant_27318_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27310", - "op" : "Constant", - "outputs" : ["Constant_27310_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27303", - "op" : "Constant", - "outputs" : ["Constant_27303_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27358", - "op" : "Constant", - "outputs" : ["Constant_27358_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27350", - "op" : "Constant", - "outputs" : ["Constant_27350_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27343", - "op" : "Constant", - "outputs" : ["Constant_27343_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27398", - "op" : "Constant", - "outputs" : ["Constant_27398_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27390", - "op" : "Constant", - "outputs" : ["Constant_27390_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27383", - "op" : "Constant", - "outputs" : ["Constant_27383_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27438", - "op" : "Constant", - "outputs" : ["Constant_27438_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27430", - "op" : "Constant", - "outputs" : ["Constant_27430_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27423", - "op" : "Constant", - "outputs" : ["Constant_27423_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27478", - "op" : "Constant", - "outputs" : ["Constant_27478_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27470", - "op" : "Constant", - "outputs" : ["Constant_27470_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27463", - "op" : "Constant", - "outputs" : ["Constant_27463_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27518", - "op" : "Constant", - "outputs" : ["Constant_27518_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27510", - "op" : "Constant", - "outputs" : ["Constant_27510_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27503", - "op" : "Constant", - "outputs" : ["Constant_27503_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27558", - "op" : "Constant", - "outputs" : ["Constant_27558_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27550", - "op" : "Constant", - "outputs" : ["Constant_27550_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27543", - "op" : "Constant", - "outputs" : ["Constant_27543_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27598", - "op" : "Constant", - "outputs" : ["Constant_27598_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27590", - "op" : "Constant", - "outputs" : ["Constant_27590_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27583", - "op" : "Constant", - "outputs" : ["Constant_27583_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27638", - "op" : "Constant", - "outputs" : ["Constant_27638_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27630", - "op" : "Constant", - "outputs" : ["Constant_27630_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27623", - "op" : "Constant", - "outputs" : ["Constant_27623_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27678", - "op" : "Constant", - "outputs" : ["Constant_27678_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27670", - "op" : "Constant", - "outputs" : ["Constant_27670_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27663", - "op" : "Constant", - "outputs" : ["Constant_27663_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27718", - "op" : "Constant", - "outputs" : ["Constant_27718_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27710", - "op" : "Constant", - "outputs" : ["Constant_27710_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27703", - "op" : "Constant", - "outputs" : ["Constant_27703_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27758", - "op" : "Constant", - "outputs" : ["Constant_27758_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27750", - "op" : "Constant", - "outputs" : ["Constant_27750_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27743", - "op" : "Constant", - "outputs" : ["Constant_27743_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27798", - "op" : "Constant", - "outputs" : ["Constant_27798_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27790", - "op" : "Constant", - "outputs" : ["Constant_27790_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27783", - "op" : "Constant", - "outputs" : ["Constant_27783_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27838", - "op" : "Constant", - "outputs" : ["Constant_27838_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27830", - "op" : "Constant", - "outputs" : ["Constant_27830_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27823", - "op" : "Constant", - "outputs" : ["Constant_27823_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27878", - "op" : "Constant", - "outputs" : ["Constant_27878_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27870", - "op" : "Constant", - "outputs" : ["Constant_27870_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27863", - "op" : "Constant", - "outputs" : ["Constant_27863_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27918", - "op" : "Constant", - "outputs" : ["Constant_27918_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27910", - "op" : "Constant", - "outputs" : ["Constant_27910_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27903", - "op" : "Constant", - "outputs" : ["Constant_27903_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27958", - "op" : "Constant", - "outputs" : ["Constant_27958_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27950", - "op" : "Constant", - "outputs" : ["Constant_27950_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27943", - "op" : "Constant", - "outputs" : ["Constant_27943_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27998", - "op" : "Constant", - "outputs" : ["Constant_27998_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27990", - "op" : "Constant", - "outputs" : ["Constant_27990_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_27983", - "op" : "Constant", - "outputs" : ["Constant_27983_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28038", - "op" : "Constant", - "outputs" : ["Constant_28038_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28030", - "op" : "Constant", - "outputs" : ["Constant_28030_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28023", - "op" : "Constant", - "outputs" : ["Constant_28023_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28078", - "op" : "Constant", - "outputs" : ["Constant_28078_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28070", - "op" : "Constant", - "outputs" : ["Constant_28070_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28063", - "op" : "Constant", - "outputs" : ["Constant_28063_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28118", - "op" : "Constant", - "outputs" : ["Constant_28118_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28110", - "op" : "Constant", - "outputs" : ["Constant_28110_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28103", - "op" : "Constant", - "outputs" : ["Constant_28103_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28158", - "op" : "Constant", - "outputs" : ["Constant_28158_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28150", - "op" : "Constant", - "outputs" : ["Constant_28150_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28143", - "op" : "Constant", - "outputs" : ["Constant_28143_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28198", - "op" : "Constant", - "outputs" : ["Constant_28198_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28190", - "op" : "Constant", - "outputs" : ["Constant_28190_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28183", - "op" : "Constant", - "outputs" : ["Constant_28183_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28238", - "op" : "Constant", - "outputs" : ["Constant_28238_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28230", - "op" : "Constant", - "outputs" : ["Constant_28230_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28223", - "op" : "Constant", - "outputs" : ["Constant_28223_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28278", - "op" : "Constant", - "outputs" : ["Constant_28278_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28270", - "op" : "Constant", - "outputs" : ["Constant_28270_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28263", - "op" : "Constant", - "outputs" : ["Constant_28263_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28318", - "op" : "Constant", - "outputs" : ["Constant_28318_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28310", - "op" : "Constant", - "outputs" : ["Constant_28310_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28303", - "op" : "Constant", - "outputs" : ["Constant_28303_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28358", - "op" : "Constant", - "outputs" : ["Constant_28358_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28350", - "op" : "Constant", - "outputs" : ["Constant_28350_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28343", - "op" : "Constant", - "outputs" : ["Constant_28343_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28398", - "op" : "Constant", - "outputs" : ["Constant_28398_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28390", - "op" : "Constant", - "outputs" : ["Constant_28390_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28383", - "op" : "Constant", - "outputs" : ["Constant_28383_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28438", - "op" : "Constant", - "outputs" : ["Constant_28438_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28430", - "op" : "Constant", - "outputs" : ["Constant_28430_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28423", - "op" : "Constant", - "outputs" : ["Constant_28423_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28478", - "op" : "Constant", - "outputs" : ["Constant_28478_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28470", - "op" : "Constant", - "outputs" : ["Constant_28470_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28463", - "op" : "Constant", - "outputs" : ["Constant_28463_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28518", - "op" : "Constant", - "outputs" : ["Constant_28518_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28510", - "op" : "Constant", - "outputs" : ["Constant_28510_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28503", - "op" : "Constant", - "outputs" : ["Constant_28503_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28558", - "op" : "Constant", - "outputs" : ["Constant_28558_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28550", - "op" : "Constant", - "outputs" : ["Constant_28550_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28543", - "op" : "Constant", - "outputs" : ["Constant_28543_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28598", - "op" : "Constant", - "outputs" : ["Constant_28598_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28590", - "op" : "Constant", - "outputs" : ["Constant_28590_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28583", - "op" : "Constant", - "outputs" : ["Constant_28583_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28638", - "op" : "Constant", - "outputs" : ["Constant_28638_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28630", - "op" : "Constant", - "outputs" : ["Constant_28630_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28623", - "op" : "Constant", - "outputs" : ["Constant_28623_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28678", - "op" : "Constant", - "outputs" : ["Constant_28678_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28670", - "op" : "Constant", - "outputs" : ["Constant_28670_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28663", - "op" : "Constant", - "outputs" : ["Constant_28663_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28718", - "op" : "Constant", - "outputs" : ["Constant_28718_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28710", - "op" : "Constant", - "outputs" : ["Constant_28710_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28703", - "op" : "Constant", - "outputs" : ["Constant_28703_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28758", - "op" : "Constant", - "outputs" : ["Constant_28758_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28750", - "op" : "Constant", - "outputs" : ["Constant_28750_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28743", - "op" : "Constant", - "outputs" : ["Constant_28743_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28798", - "op" : "Constant", - "outputs" : ["Constant_28798_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28790", - "op" : "Constant", - "outputs" : ["Constant_28790_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28783", - "op" : "Constant", - "outputs" : ["Constant_28783_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28838", - "op" : "Constant", - "outputs" : ["Constant_28838_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28830", - "op" : "Constant", - "outputs" : ["Constant_28830_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28823", - "op" : "Constant", - "outputs" : ["Constant_28823_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28878", - "op" : "Constant", - "outputs" : ["Constant_28878_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28870", - "op" : "Constant", - "outputs" : ["Constant_28870_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28863", - "op" : "Constant", - "outputs" : ["Constant_28863_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28918", - "op" : "Constant", - "outputs" : ["Constant_28918_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28910", - "op" : "Constant", - "outputs" : ["Constant_28910_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28903", - "op" : "Constant", - "outputs" : ["Constant_28903_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28958", - "op" : "Constant", - "outputs" : ["Constant_28958_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28950", - "op" : "Constant", - "outputs" : ["Constant_28950_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28943", - "op" : "Constant", - "outputs" : ["Constant_28943_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28998", - "op" : "Constant", - "outputs" : ["Constant_28998_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28990", - "op" : "Constant", - "outputs" : ["Constant_28990_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_28983", - "op" : "Constant", - "outputs" : ["Constant_28983_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29038", - "op" : "Constant", - "outputs" : ["Constant_29038_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29030", - "op" : "Constant", - "outputs" : ["Constant_29030_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29023", - "op" : "Constant", - "outputs" : ["Constant_29023_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29063", - "op" : "Constant", - "outputs" : ["Constant_29063_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29150", - "op" : "Constant", - "outputs" : ["Constant_29150_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29190", - "op" : "Constant", - "outputs" : ["Constant_29190_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29078", - "op" : "Constant", - "outputs" : ["Constant_29078_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29070", - "op" : "Constant", - "outputs" : ["Constant_29070_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29118", - "op" : "Constant", - "outputs" : ["Constant_29118_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29110", - "op" : "Constant", - "outputs" : ["Constant_29110_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29103", - "op" : "Constant", - "outputs" : ["Constant_29103_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29158", - "op" : "Constant", - "outputs" : ["Constant_29158_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29143", - "op" : "Constant", - "outputs" : ["Constant_29143_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29198", - "op" : "Constant", - "outputs" : ["Constant_29198_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_29183", - "op" : "Constant", - "outputs" : ["Constant_29183_0"], - "shape" : [], - "value" : ["1"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_26817", - "op" : "Broadcast", - "outputs" : ["Broadcast_26817_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27019", - "op" : "Broadcast", - "outputs" : ["Broadcast_27019_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27059", - "op" : "Broadcast", - "outputs" : ["Broadcast_27059_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27099", - "op" : "Broadcast", - "outputs" : ["Broadcast_27099_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27139", - "op" : "Broadcast", - "outputs" : ["Broadcast_27139_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27179", - "op" : "Broadcast", - "outputs" : ["Broadcast_27179_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27219", - "op" : "Broadcast", - "outputs" : ["Broadcast_27219_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27259", - "op" : "Broadcast", - "outputs" : ["Broadcast_27259_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27299", - "op" : "Broadcast", - "outputs" : ["Broadcast_27299_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27339", - "op" : "Broadcast", - "outputs" : ["Broadcast_27339_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27379", - "op" : "Broadcast", - "outputs" : ["Broadcast_27379_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_26859", - "op" : "Broadcast", - "outputs" : ["Broadcast_26859_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27419", - "op" : "Broadcast", - "outputs" : ["Broadcast_27419_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27459", - "op" : "Broadcast", - "outputs" : ["Broadcast_27459_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27499", - "op" : "Broadcast", - "outputs" : ["Broadcast_27499_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27539", - "op" : "Broadcast", - "outputs" : ["Broadcast_27539_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27579", - "op" : "Broadcast", - "outputs" : ["Broadcast_27579_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27619", - "op" : "Broadcast", - "outputs" : ["Broadcast_27619_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27659", - "op" : "Broadcast", - "outputs" : ["Broadcast_27659_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27699", - "op" : "Broadcast", - "outputs" : ["Broadcast_27699_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27739", - "op" : "Broadcast", - "outputs" : ["Broadcast_27739_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27779", - "op" : "Broadcast", - "outputs" : ["Broadcast_27779_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27819", - "op" : "Broadcast", - "outputs" : ["Broadcast_27819_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_26899", - "op" : "Broadcast", - "outputs" : ["Broadcast_26899_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27859", - "op" : "Broadcast", - "outputs" : ["Broadcast_27859_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28899", - "op" : "Broadcast", - "outputs" : ["Broadcast_28899_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27899", - "op" : "Broadcast", - "outputs" : ["Broadcast_27899_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28099", - "op" : "Broadcast", - "outputs" : ["Broadcast_28099_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28139", - "op" : "Broadcast", - "outputs" : ["Broadcast_28139_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28059", - "op" : "Broadcast", - "outputs" : ["Broadcast_28059_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28179", - "op" : "Broadcast", - "outputs" : ["Broadcast_28179_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28219", - "op" : "Broadcast", - "outputs" : ["Broadcast_28219_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28019", - "op" : "Broadcast", - "outputs" : ["Broadcast_28019_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28259", - "op" : "Broadcast", - "outputs" : ["Broadcast_28259_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28299", - "op" : "Broadcast", - "outputs" : ["Broadcast_28299_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_26939", - "op" : "Broadcast", - "outputs" : ["Broadcast_26939_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28339", - "op" : "Broadcast", - "outputs" : ["Broadcast_28339_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28379", - "op" : "Broadcast", - "outputs" : ["Broadcast_28379_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28419", - "op" : "Broadcast", - "outputs" : ["Broadcast_28419_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27979", - "op" : "Broadcast", - "outputs" : ["Broadcast_27979_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28459", - "op" : "Broadcast", - "outputs" : ["Broadcast_28459_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28499", - "op" : "Broadcast", - "outputs" : ["Broadcast_28499_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28539", - "op" : "Broadcast", - "outputs" : ["Broadcast_28539_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28579", - "op" : "Broadcast", - "outputs" : ["Broadcast_28579_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_27939", - "op" : "Broadcast", - "outputs" : ["Broadcast_27939_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28619", - "op" : "Broadcast", - "outputs" : ["Broadcast_28619_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28659", - "op" : "Broadcast", - "outputs" : ["Broadcast_28659_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28699", - "op" : "Broadcast", - "outputs" : ["Broadcast_28699_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_29019", - "op" : "Broadcast", - "outputs" : ["Broadcast_29019_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28739", - "op" : "Broadcast", - "outputs" : ["Broadcast_28739_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28779", - "op" : "Broadcast", - "outputs" : ["Broadcast_28779_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_26979", - "op" : "Broadcast", - "outputs" : ["Broadcast_26979_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28819", - "op" : "Broadcast", - "outputs" : ["Broadcast_28819_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28859", - "op" : "Broadcast", - "outputs" : ["Broadcast_28859_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28979", - "op" : "Broadcast", - "outputs" : ["Broadcast_28979_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_29059", - "op" : "Broadcast", - "outputs" : ["Broadcast_29059_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_29139", - "op" : "Broadcast", - "outputs" : ["Broadcast_29139_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_29099", - "op" : "Broadcast", - "outputs" : ["Broadcast_29099_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_29179", - "op" : "Broadcast", - "outputs" : ["Broadcast_29179_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26814"], - "name" : "Broadcast_28939", - "op" : "Broadcast", - "outputs" : ["Broadcast_28939_0"], - "shape" : [ 64, 1024 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28657", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28657_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27897", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27897_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27937", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27937_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27977", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27977_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28017", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28017_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28377", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28377_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28817", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28817_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_26815", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26815_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_29017", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29017_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_29177", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29177_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28937", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28937_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_29057", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29057_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28777", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28777_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28537", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28537_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28337", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28337_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28137", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28137_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28257", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28257_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28857", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28857_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28457", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28457_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28897", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28897_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28977", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28977_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_29097", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29097_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28497", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28497_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_26937", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26937_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_26897", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26897_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_29137", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29137_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28737", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28737_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28577", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28577_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27017", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27017_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_26977", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26977_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27177", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27177_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27137", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27137_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27097", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27097_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27057", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27057_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28217", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28217_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28177", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28177_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28097", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28097_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_26857", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26857_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28297", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28297_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28697", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28697_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27697", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27697_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27857", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27857_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27817", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27817_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27777", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27777_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27737", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27737_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27657", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27657_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27497", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27497_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28057", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28057_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27417", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27417_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27257", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27257_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27537", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27537_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27577", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27577_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27457", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27457_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27297", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27297_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27617", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27617_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27377", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27377_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27337", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27337_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_27217", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27217_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28617", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28617_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26813"], - "name" : "Reshape_28417", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28417_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_26809", - "op" : "Broadcast", - "outputs" : ["Broadcast_26809_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27055", - "op" : "Broadcast", - "outputs" : ["Broadcast_27055_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27095", - "op" : "Broadcast", - "outputs" : ["Broadcast_27095_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27135", - "op" : "Broadcast", - "outputs" : ["Broadcast_27135_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27175", - "op" : "Broadcast", - "outputs" : ["Broadcast_27175_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27215", - "op" : "Broadcast", - "outputs" : ["Broadcast_27215_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27255", - "op" : "Broadcast", - "outputs" : ["Broadcast_27255_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27295", - "op" : "Broadcast", - "outputs" : ["Broadcast_27295_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27335", - "op" : "Broadcast", - "outputs" : ["Broadcast_27335_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_26855", - "op" : "Broadcast", - "outputs" : ["Broadcast_26855_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27375", - "op" : "Broadcast", - "outputs" : ["Broadcast_27375_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27415", - "op" : "Broadcast", - "outputs" : ["Broadcast_27415_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27455", - "op" : "Broadcast", - "outputs" : ["Broadcast_27455_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27495", - "op" : "Broadcast", - "outputs" : ["Broadcast_27495_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27535", - "op" : "Broadcast", - "outputs" : ["Broadcast_27535_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27575", - "op" : "Broadcast", - "outputs" : ["Broadcast_27575_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27615", - "op" : "Broadcast", - "outputs" : ["Broadcast_27615_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27655", - "op" : "Broadcast", - "outputs" : ["Broadcast_27655_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27695", - "op" : "Broadcast", - "outputs" : ["Broadcast_27695_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27735", - "op" : "Broadcast", - "outputs" : ["Broadcast_27735_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27775", - "op" : "Broadcast", - "outputs" : ["Broadcast_27775_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27815", - "op" : "Broadcast", - "outputs" : ["Broadcast_27815_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_26895", - "op" : "Broadcast", - "outputs" : ["Broadcast_26895_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27855", - "op" : "Broadcast", - "outputs" : ["Broadcast_27855_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_29175", - "op" : "Broadcast", - "outputs" : ["Broadcast_29175_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_29135", - "op" : "Broadcast", - "outputs" : ["Broadcast_29135_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27975", - "op" : "Broadcast", - "outputs" : ["Broadcast_27975_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28015", - "op" : "Broadcast", - "outputs" : ["Broadcast_28015_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28055", - "op" : "Broadcast", - "outputs" : ["Broadcast_28055_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28095", - "op" : "Broadcast", - "outputs" : ["Broadcast_28095_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28135", - "op" : "Broadcast", - "outputs" : ["Broadcast_28135_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28175", - "op" : "Broadcast", - "outputs" : ["Broadcast_28175_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28215", - "op" : "Broadcast", - "outputs" : ["Broadcast_28215_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28255", - "op" : "Broadcast", - "outputs" : ["Broadcast_28255_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28295", - "op" : "Broadcast", - "outputs" : ["Broadcast_28295_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_26935", - "op" : "Broadcast", - "outputs" : ["Broadcast_26935_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28335", - "op" : "Broadcast", - "outputs" : ["Broadcast_28335_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28375", - "op" : "Broadcast", - "outputs" : ["Broadcast_28375_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28415", - "op" : "Broadcast", - "outputs" : ["Broadcast_28415_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28455", - "op" : "Broadcast", - "outputs" : ["Broadcast_28455_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28495", - "op" : "Broadcast", - "outputs" : ["Broadcast_28495_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28535", - "op" : "Broadcast", - "outputs" : ["Broadcast_28535_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28575", - "op" : "Broadcast", - "outputs" : ["Broadcast_28575_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27935", - "op" : "Broadcast", - "outputs" : ["Broadcast_27935_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28615", - "op" : "Broadcast", - "outputs" : ["Broadcast_28615_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28655", - "op" : "Broadcast", - "outputs" : ["Broadcast_28655_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28695", - "op" : "Broadcast", - "outputs" : ["Broadcast_28695_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28735", - "op" : "Broadcast", - "outputs" : ["Broadcast_28735_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27895", - "op" : "Broadcast", - "outputs" : ["Broadcast_27895_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28775", - "op" : "Broadcast", - "outputs" : ["Broadcast_28775_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_26975", - "op" : "Broadcast", - "outputs" : ["Broadcast_26975_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28815", - "op" : "Broadcast", - "outputs" : ["Broadcast_28815_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28855", - "op" : "Broadcast", - "outputs" : ["Broadcast_28855_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28935", - "op" : "Broadcast", - "outputs" : ["Broadcast_28935_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28895", - "op" : "Broadcast", - "outputs" : ["Broadcast_28895_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_29015", - "op" : "Broadcast", - "outputs" : ["Broadcast_29015_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_29095", - "op" : "Broadcast", - "outputs" : ["Broadcast_29095_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_29055", - "op" : "Broadcast", - "outputs" : ["Broadcast_29055_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_28975", - "op" : "Broadcast", - "outputs" : ["Broadcast_28975_0"], - "shape" : [ 64, 1024 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_26806"], - "name" : "Broadcast_27015", - "op" : "Broadcast", - "outputs" : ["Broadcast_27015_0"], - "shape" : [ 64, 1024 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28693", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28693_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27453", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27453_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27493", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27493_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27653", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27653_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27613", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27613_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27693", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27693_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27733", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27733_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27773", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27773_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27813", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27813_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27573", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27573_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27853", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27853_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27893", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27893_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27933", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27933_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28013", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28013_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27973", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27973_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27533", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27533_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28053", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28053_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28293", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28293_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28173", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28173_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28533", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28533_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28933", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28933_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_29173", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29173_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28893", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28893_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_29013", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29013_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_29133", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29133_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_29053", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29053_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28853", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28853_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28493", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28493_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28213", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28213_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28333", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28333_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28413", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28413_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28573", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28573_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28973", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28973_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28453", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28453_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_26973", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26973_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28613", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28613_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_29093", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_29093_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27093", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27093_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28773", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28773_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28813", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28813_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27053", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27053_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27013", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27013_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28733", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28733_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27173", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27173_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27213", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27213_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27133", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27133_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27293", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27293_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27253", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27253_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27333", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27333_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27373", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27373_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_27413", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_27413_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28253", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28253_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_26807", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26807_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28373", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28373_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_26893", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26893_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28133", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28133_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_26853", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26853_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_26933", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_26933_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28653", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28653_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_26805"], - "name" : "Reshape_28093", - "op" : "Reshape", - "output_shape" : [ 256, 1024 ], - "outputs" : ["Reshape_28093_0"] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_26803", - "op" : "Slice", - "outputs" : ["Slice_26803_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 5, 0, 0 ], - "name" : "Slice_27011", - "op" : "Slice", - "outputs" : ["Slice_27011_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 6, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 6, 0, 0 ], - "name" : "Slice_27051", - "op" : "Slice", - "outputs" : ["Slice_27051_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 7, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 7, 0, 0 ], - "name" : "Slice_27091", - "op" : "Slice", - "outputs" : ["Slice_27091_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 8, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 8, 0, 0 ], - "name" : "Slice_27131", - "op" : "Slice", - "outputs" : ["Slice_27131_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 9, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 9, 0, 0 ], - "name" : "Slice_27171", - "op" : "Slice", - "outputs" : ["Slice_27171_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 10, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 10, 0, 0 ], - "name" : "Slice_27211", - "op" : "Slice", - "outputs" : ["Slice_27211_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 11, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 11, 0, 0 ], - "name" : "Slice_27251", - "op" : "Slice", - "outputs" : ["Slice_27251_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 12, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 12, 0, 0 ], - "name" : "Slice_27291", - "op" : "Slice", - "outputs" : ["Slice_27291_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 13, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 1, 0, 0 ], - "name" : "Slice_26851", - "op" : "Slice", - "outputs" : ["Slice_26851_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 2, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 13, 0, 0 ], - "name" : "Slice_27331", - "op" : "Slice", - "outputs" : ["Slice_27331_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 14, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 14, 0, 0 ], - "name" : "Slice_27371", - "op" : "Slice", - "outputs" : ["Slice_27371_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 15, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 15, 0, 0 ], - "name" : "Slice_27411", - "op" : "Slice", - "outputs" : ["Slice_27411_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 16, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 16, 0, 0 ], - "name" : "Slice_27451", - "op" : "Slice", - "outputs" : ["Slice_27451_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 17, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 17, 0, 0 ], - "name" : "Slice_27491", - "op" : "Slice", - "outputs" : ["Slice_27491_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 18, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 18, 0, 0 ], - "name" : "Slice_27531", - "op" : "Slice", - "outputs" : ["Slice_27531_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 19, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 19, 0, 0 ], - "name" : "Slice_27571", - "op" : "Slice", - "outputs" : ["Slice_27571_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 20, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 20, 0, 0 ], - "name" : "Slice_27611", - "op" : "Slice", - "outputs" : ["Slice_27611_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 21, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 21, 0, 0 ], - "name" : "Slice_27651", - "op" : "Slice", - "outputs" : ["Slice_27651_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 22, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 22, 0, 0 ], - "name" : "Slice_27691", - "op" : "Slice", - "outputs" : ["Slice_27691_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 23, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 23, 0, 0 ], - "name" : "Slice_27731", - "op" : "Slice", - "outputs" : ["Slice_27731_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 24, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 24, 0, 0 ], - "name" : "Slice_27771", - "op" : "Slice", - "outputs" : ["Slice_27771_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 25, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 2, 0, 0 ], - "name" : "Slice_26891", - "op" : "Slice", - "outputs" : ["Slice_26891_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 3, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 25, 0, 0 ], - "name" : "Slice_27811", - "op" : "Slice", - "outputs" : ["Slice_27811_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 26, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 26, 0, 0 ], - "name" : "Slice_27851", - "op" : "Slice", - "outputs" : ["Slice_27851_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 27, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 27, 0, 0 ], - "name" : "Slice_27891", - "op" : "Slice", - "outputs" : ["Slice_27891_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 28, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 28, 0, 0 ], - "name" : "Slice_27931", - "op" : "Slice", - "outputs" : ["Slice_27931_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 29, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 29, 0, 0 ], - "name" : "Slice_27971", - "op" : "Slice", - "outputs" : ["Slice_27971_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 30, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 32, 0, 0 ], - "name" : "Slice_28091", - "op" : "Slice", - "outputs" : ["Slice_28091_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 33, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 33, 0, 0 ], - "name" : "Slice_28131", - "op" : "Slice", - "outputs" : ["Slice_28131_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 34, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 31, 0, 0 ], - "name" : "Slice_28051", - "op" : "Slice", - "outputs" : ["Slice_28051_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 32, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 34, 0, 0 ], - "name" : "Slice_28171", - "op" : "Slice", - "outputs" : ["Slice_28171_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 35, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 35, 0, 0 ], - "name" : "Slice_28211", - "op" : "Slice", - "outputs" : ["Slice_28211_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 36, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 3, 0, 0 ], - "name" : "Slice_26931", - "op" : "Slice", - "outputs" : ["Slice_26931_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 4, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 36, 0, 0 ], - "name" : "Slice_28251", - "op" : "Slice", - "outputs" : ["Slice_28251_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 37, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 37, 0, 0 ], - "name" : "Slice_28291", - "op" : "Slice", - "outputs" : ["Slice_28291_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 38, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 30, 0, 0 ], - "name" : "Slice_28011", - "op" : "Slice", - "outputs" : ["Slice_28011_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 31, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 38, 0, 0 ], - "name" : "Slice_28331", - "op" : "Slice", - "outputs" : ["Slice_28331_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 39, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 39, 0, 0 ], - "name" : "Slice_28371", - "op" : "Slice", - "outputs" : ["Slice_28371_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 40, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 40, 0, 0 ], - "name" : "Slice_28411", - "op" : "Slice", - "outputs" : ["Slice_28411_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 41, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 41, 0, 0 ], - "name" : "Slice_28451", - "op" : "Slice", - "outputs" : ["Slice_28451_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 42, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 42, 0, 0 ], - "name" : "Slice_28491", - "op" : "Slice", - "outputs" : ["Slice_28491_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 43, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 43, 0, 0 ], - "name" : "Slice_28531", - "op" : "Slice", - "outputs" : ["Slice_28531_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 44, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 55, 0, 0 ], - "name" : "Slice_29011", - "op" : "Slice", - "outputs" : ["Slice_29011_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 56, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 44, 0, 0 ], - "name" : "Slice_28571", - "op" : "Slice", - "outputs" : ["Slice_28571_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 45, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 45, 0, 0 ], - "name" : "Slice_28611", - "op" : "Slice", - "outputs" : ["Slice_28611_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 46, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 46, 0, 0 ], - "name" : "Slice_28651", - "op" : "Slice", - "outputs" : ["Slice_28651_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 47, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 47, 0, 0 ], - "name" : "Slice_28691", - "op" : "Slice", - "outputs" : ["Slice_28691_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 48, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 4, 0, 0 ], - "name" : "Slice_26971", - "op" : "Slice", - "outputs" : ["Slice_26971_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 5, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 48, 0, 0 ], - "name" : "Slice_28731", - "op" : "Slice", - "outputs" : ["Slice_28731_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 49, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 49, 0, 0 ], - "name" : "Slice_28771", - "op" : "Slice", - "outputs" : ["Slice_28771_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 50, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 50, 0, 0 ], - "name" : "Slice_28811", - "op" : "Slice", - "outputs" : ["Slice_28811_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 51, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 51, 0, 0 ], - "name" : "Slice_28851", - "op" : "Slice", - "outputs" : ["Slice_28851_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 52, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 54, 0, 0 ], - "name" : "Slice_28971", - "op" : "Slice", - "outputs" : ["Slice_28971_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 55, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 52, 0, 0 ], - "name" : "Slice_28891", - "op" : "Slice", - "outputs" : ["Slice_28891_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 53, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 56, 0, 0 ], - "name" : "Slice_29051", - "op" : "Slice", - "outputs" : ["Slice_29051_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 57, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 58, 0, 0 ], - "name" : "Slice_29131", - "op" : "Slice", - "outputs" : ["Slice_29131_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 59, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 57, 0, 0 ], - "name" : "Slice_29091", - "op" : "Slice", - "outputs" : ["Slice_29091_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 58, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 59, 0, 0 ], - "name" : "Slice_29171", - "op" : "Slice", - "outputs" : ["Slice_29171_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 60, 64, 256 ] - }, - { - "inputs" : ["Parameter_26802"], - "lower_bounds" : [ 53, 0, 0 ], - "name" : "Slice_28931", - "op" : "Slice", - "outputs" : ["Slice_28931_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 54, 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26811"], - "name" : "Broadcast_26812", - "op" : "Broadcast", - "outputs" : ["Broadcast_26812_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26838"], - "name" : "Broadcast_26839", - "op" : "Broadcast", - "outputs" : ["Broadcast_26839_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26834"], - "name" : "Broadcast_26835", - "op" : "Broadcast", - "outputs" : ["Broadcast_26835_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26828"], - "name" : "Broadcast_26829", - "op" : "Broadcast", - "outputs" : ["Broadcast_26829_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26821"], - "name" : "Broadcast_26822", - "op" : "Broadcast", - "outputs" : ["Broadcast_26822_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26878"], - "name" : "Broadcast_26879", - "op" : "Broadcast", - "outputs" : ["Broadcast_26879_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26870"], - "name" : "Broadcast_26871", - "op" : "Broadcast", - "outputs" : ["Broadcast_26871_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26863"], - "name" : "Broadcast_26864", - "op" : "Broadcast", - "outputs" : ["Broadcast_26864_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26918"], - "name" : "Broadcast_26919", - "op" : "Broadcast", - "outputs" : ["Broadcast_26919_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26910"], - "name" : "Broadcast_26911", - "op" : "Broadcast", - "outputs" : ["Broadcast_26911_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26903"], - "name" : "Broadcast_26904", - "op" : "Broadcast", - "outputs" : ["Broadcast_26904_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26958"], - "name" : "Broadcast_26959", - "op" : "Broadcast", - "outputs" : ["Broadcast_26959_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26950"], - "name" : "Broadcast_26951", - "op" : "Broadcast", - "outputs" : ["Broadcast_26951_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26943"], - "name" : "Broadcast_26944", - "op" : "Broadcast", - "outputs" : ["Broadcast_26944_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26998"], - "name" : "Broadcast_26999", - "op" : "Broadcast", - "outputs" : ["Broadcast_26999_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26990"], - "name" : "Broadcast_26991", - "op" : "Broadcast", - "outputs" : ["Broadcast_26991_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_26983"], - "name" : "Broadcast_26984", - "op" : "Broadcast", - "outputs" : ["Broadcast_26984_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27038"], - "name" : "Broadcast_27039", - "op" : "Broadcast", - "outputs" : ["Broadcast_27039_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27030"], - "name" : "Broadcast_27031", - "op" : "Broadcast", - "outputs" : ["Broadcast_27031_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27023"], - "name" : "Broadcast_27024", - "op" : "Broadcast", - "outputs" : ["Broadcast_27024_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27078"], - "name" : "Broadcast_27079", - "op" : "Broadcast", - "outputs" : ["Broadcast_27079_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27070"], - "name" : "Broadcast_27071", - "op" : "Broadcast", - "outputs" : ["Broadcast_27071_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27063"], - "name" : "Broadcast_27064", - "op" : "Broadcast", - "outputs" : ["Broadcast_27064_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27118"], - "name" : "Broadcast_27119", - "op" : "Broadcast", - "outputs" : ["Broadcast_27119_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27110"], - "name" : "Broadcast_27111", - "op" : "Broadcast", - "outputs" : ["Broadcast_27111_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27103"], - "name" : "Broadcast_27104", - "op" : "Broadcast", - "outputs" : ["Broadcast_27104_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27158"], - "name" : "Broadcast_27159", - "op" : "Broadcast", - "outputs" : ["Broadcast_27159_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27150"], - "name" : "Broadcast_27151", - "op" : "Broadcast", - "outputs" : ["Broadcast_27151_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27143"], - "name" : "Broadcast_27144", - "op" : "Broadcast", - "outputs" : ["Broadcast_27144_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27198"], - "name" : "Broadcast_27199", - "op" : "Broadcast", - "outputs" : ["Broadcast_27199_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27190"], - "name" : "Broadcast_27191", - "op" : "Broadcast", - "outputs" : ["Broadcast_27191_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27183"], - "name" : "Broadcast_27184", - "op" : "Broadcast", - "outputs" : ["Broadcast_27184_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27238"], - "name" : "Broadcast_27239", - "op" : "Broadcast", - "outputs" : ["Broadcast_27239_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27230"], - "name" : "Broadcast_27231", - "op" : "Broadcast", - "outputs" : ["Broadcast_27231_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27223"], - "name" : "Broadcast_27224", - "op" : "Broadcast", - "outputs" : ["Broadcast_27224_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27278"], - "name" : "Broadcast_27279", - "op" : "Broadcast", - "outputs" : ["Broadcast_27279_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27270"], - "name" : "Broadcast_27271", - "op" : "Broadcast", - "outputs" : ["Broadcast_27271_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27263"], - "name" : "Broadcast_27264", - "op" : "Broadcast", - "outputs" : ["Broadcast_27264_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27318"], - "name" : "Broadcast_27319", - "op" : "Broadcast", - "outputs" : ["Broadcast_27319_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27310"], - "name" : "Broadcast_27311", - "op" : "Broadcast", - "outputs" : ["Broadcast_27311_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27303"], - "name" : "Broadcast_27304", - "op" : "Broadcast", - "outputs" : ["Broadcast_27304_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27358"], - "name" : "Broadcast_27359", - "op" : "Broadcast", - "outputs" : ["Broadcast_27359_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27350"], - "name" : "Broadcast_27351", - "op" : "Broadcast", - "outputs" : ["Broadcast_27351_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27343"], - "name" : "Broadcast_27344", - "op" : "Broadcast", - "outputs" : ["Broadcast_27344_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27398"], - "name" : "Broadcast_27399", - "op" : "Broadcast", - "outputs" : ["Broadcast_27399_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27390"], - "name" : "Broadcast_27391", - "op" : "Broadcast", - "outputs" : ["Broadcast_27391_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27383"], - "name" : "Broadcast_27384", - "op" : "Broadcast", - "outputs" : ["Broadcast_27384_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27438"], - "name" : "Broadcast_27439", - "op" : "Broadcast", - "outputs" : ["Broadcast_27439_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27430"], - "name" : "Broadcast_27431", - "op" : "Broadcast", - "outputs" : ["Broadcast_27431_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27423"], - "name" : "Broadcast_27424", - "op" : "Broadcast", - "outputs" : ["Broadcast_27424_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27478"], - "name" : "Broadcast_27479", - "op" : "Broadcast", - "outputs" : ["Broadcast_27479_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27470"], - "name" : "Broadcast_27471", - "op" : "Broadcast", - "outputs" : ["Broadcast_27471_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27463"], - "name" : "Broadcast_27464", - "op" : "Broadcast", - "outputs" : ["Broadcast_27464_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27518"], - "name" : "Broadcast_27519", - "op" : "Broadcast", - "outputs" : ["Broadcast_27519_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27510"], - "name" : "Broadcast_27511", - "op" : "Broadcast", - "outputs" : ["Broadcast_27511_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27503"], - "name" : "Broadcast_27504", - "op" : "Broadcast", - "outputs" : ["Broadcast_27504_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27558"], - "name" : "Broadcast_27559", - "op" : "Broadcast", - "outputs" : ["Broadcast_27559_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27550"], - "name" : "Broadcast_27551", - "op" : "Broadcast", - "outputs" : ["Broadcast_27551_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27543"], - "name" : "Broadcast_27544", - "op" : "Broadcast", - "outputs" : ["Broadcast_27544_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27598"], - "name" : "Broadcast_27599", - "op" : "Broadcast", - "outputs" : ["Broadcast_27599_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27590"], - "name" : "Broadcast_27591", - "op" : "Broadcast", - "outputs" : ["Broadcast_27591_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27583"], - "name" : "Broadcast_27584", - "op" : "Broadcast", - "outputs" : ["Broadcast_27584_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27638"], - "name" : "Broadcast_27639", - "op" : "Broadcast", - "outputs" : ["Broadcast_27639_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27630"], - "name" : "Broadcast_27631", - "op" : "Broadcast", - "outputs" : ["Broadcast_27631_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27623"], - "name" : "Broadcast_27624", - "op" : "Broadcast", - "outputs" : ["Broadcast_27624_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27678"], - "name" : "Broadcast_27679", - "op" : "Broadcast", - "outputs" : ["Broadcast_27679_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27670"], - "name" : "Broadcast_27671", - "op" : "Broadcast", - "outputs" : ["Broadcast_27671_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27663"], - "name" : "Broadcast_27664", - "op" : "Broadcast", - "outputs" : ["Broadcast_27664_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27718"], - "name" : "Broadcast_27719", - "op" : "Broadcast", - "outputs" : ["Broadcast_27719_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27710"], - "name" : "Broadcast_27711", - "op" : "Broadcast", - "outputs" : ["Broadcast_27711_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27703"], - "name" : "Broadcast_27704", - "op" : "Broadcast", - "outputs" : ["Broadcast_27704_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27758"], - "name" : "Broadcast_27759", - "op" : "Broadcast", - "outputs" : ["Broadcast_27759_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27750"], - "name" : "Broadcast_27751", - "op" : "Broadcast", - "outputs" : ["Broadcast_27751_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27743"], - "name" : "Broadcast_27744", - "op" : "Broadcast", - "outputs" : ["Broadcast_27744_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27798"], - "name" : "Broadcast_27799", - "op" : "Broadcast", - "outputs" : ["Broadcast_27799_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27790"], - "name" : "Broadcast_27791", - "op" : "Broadcast", - "outputs" : ["Broadcast_27791_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27783"], - "name" : "Broadcast_27784", - "op" : "Broadcast", - "outputs" : ["Broadcast_27784_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27838"], - "name" : "Broadcast_27839", - "op" : "Broadcast", - "outputs" : ["Broadcast_27839_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27830"], - "name" : "Broadcast_27831", - "op" : "Broadcast", - "outputs" : ["Broadcast_27831_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27823"], - "name" : "Broadcast_27824", - "op" : "Broadcast", - "outputs" : ["Broadcast_27824_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27878"], - "name" : "Broadcast_27879", - "op" : "Broadcast", - "outputs" : ["Broadcast_27879_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27870"], - "name" : "Broadcast_27871", - "op" : "Broadcast", - "outputs" : ["Broadcast_27871_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27863"], - "name" : "Broadcast_27864", - "op" : "Broadcast", - "outputs" : ["Broadcast_27864_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27918"], - "name" : "Broadcast_27919", - "op" : "Broadcast", - "outputs" : ["Broadcast_27919_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27910"], - "name" : "Broadcast_27911", - "op" : "Broadcast", - "outputs" : ["Broadcast_27911_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27903"], - "name" : "Broadcast_27904", - "op" : "Broadcast", - "outputs" : ["Broadcast_27904_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27958"], - "name" : "Broadcast_27959", - "op" : "Broadcast", - "outputs" : ["Broadcast_27959_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27950"], - "name" : "Broadcast_27951", - "op" : "Broadcast", - "outputs" : ["Broadcast_27951_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27943"], - "name" : "Broadcast_27944", - "op" : "Broadcast", - "outputs" : ["Broadcast_27944_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27998"], - "name" : "Broadcast_27999", - "op" : "Broadcast", - "outputs" : ["Broadcast_27999_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27990"], - "name" : "Broadcast_27991", - "op" : "Broadcast", - "outputs" : ["Broadcast_27991_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_27983"], - "name" : "Broadcast_27984", - "op" : "Broadcast", - "outputs" : ["Broadcast_27984_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28038"], - "name" : "Broadcast_28039", - "op" : "Broadcast", - "outputs" : ["Broadcast_28039_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28030"], - "name" : "Broadcast_28031", - "op" : "Broadcast", - "outputs" : ["Broadcast_28031_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28023"], - "name" : "Broadcast_28024", - "op" : "Broadcast", - "outputs" : ["Broadcast_28024_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28078"], - "name" : "Broadcast_28079", - "op" : "Broadcast", - "outputs" : ["Broadcast_28079_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28070"], - "name" : "Broadcast_28071", - "op" : "Broadcast", - "outputs" : ["Broadcast_28071_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28063"], - "name" : "Broadcast_28064", - "op" : "Broadcast", - "outputs" : ["Broadcast_28064_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28118"], - "name" : "Broadcast_28119", - "op" : "Broadcast", - "outputs" : ["Broadcast_28119_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28110"], - "name" : "Broadcast_28111", - "op" : "Broadcast", - "outputs" : ["Broadcast_28111_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28103"], - "name" : "Broadcast_28104", - "op" : "Broadcast", - "outputs" : ["Broadcast_28104_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28158"], - "name" : "Broadcast_28159", - "op" : "Broadcast", - "outputs" : ["Broadcast_28159_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28150"], - "name" : "Broadcast_28151", - "op" : "Broadcast", - "outputs" : ["Broadcast_28151_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28143"], - "name" : "Broadcast_28144", - "op" : "Broadcast", - "outputs" : ["Broadcast_28144_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28198"], - "name" : "Broadcast_28199", - "op" : "Broadcast", - "outputs" : ["Broadcast_28199_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28190"], - "name" : "Broadcast_28191", - "op" : "Broadcast", - "outputs" : ["Broadcast_28191_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28183"], - "name" : "Broadcast_28184", - "op" : "Broadcast", - "outputs" : ["Broadcast_28184_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28238"], - "name" : "Broadcast_28239", - "op" : "Broadcast", - "outputs" : ["Broadcast_28239_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28230"], - "name" : "Broadcast_28231", - "op" : "Broadcast", - "outputs" : ["Broadcast_28231_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28223"], - "name" : "Broadcast_28224", - "op" : "Broadcast", - "outputs" : ["Broadcast_28224_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28278"], - "name" : "Broadcast_28279", - "op" : "Broadcast", - "outputs" : ["Broadcast_28279_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28270"], - "name" : "Broadcast_28271", - "op" : "Broadcast", - "outputs" : ["Broadcast_28271_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28263"], - "name" : "Broadcast_28264", - "op" : "Broadcast", - "outputs" : ["Broadcast_28264_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28318"], - "name" : "Broadcast_28319", - "op" : "Broadcast", - "outputs" : ["Broadcast_28319_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28310"], - "name" : "Broadcast_28311", - "op" : "Broadcast", - "outputs" : ["Broadcast_28311_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28303"], - "name" : "Broadcast_28304", - "op" : "Broadcast", - "outputs" : ["Broadcast_28304_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28358"], - "name" : "Broadcast_28359", - "op" : "Broadcast", - "outputs" : ["Broadcast_28359_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28350"], - "name" : "Broadcast_28351", - "op" : "Broadcast", - "outputs" : ["Broadcast_28351_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28343"], - "name" : "Broadcast_28344", - "op" : "Broadcast", - "outputs" : ["Broadcast_28344_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28398"], - "name" : "Broadcast_28399", - "op" : "Broadcast", - "outputs" : ["Broadcast_28399_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28390"], - "name" : "Broadcast_28391", - "op" : "Broadcast", - "outputs" : ["Broadcast_28391_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28383"], - "name" : "Broadcast_28384", - "op" : "Broadcast", - "outputs" : ["Broadcast_28384_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28438"], - "name" : "Broadcast_28439", - "op" : "Broadcast", - "outputs" : ["Broadcast_28439_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28430"], - "name" : "Broadcast_28431", - "op" : "Broadcast", - "outputs" : ["Broadcast_28431_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28423"], - "name" : "Broadcast_28424", - "op" : "Broadcast", - "outputs" : ["Broadcast_28424_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28478"], - "name" : "Broadcast_28479", - "op" : "Broadcast", - "outputs" : ["Broadcast_28479_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28470"], - "name" : "Broadcast_28471", - "op" : "Broadcast", - "outputs" : ["Broadcast_28471_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28463"], - "name" : "Broadcast_28464", - "op" : "Broadcast", - "outputs" : ["Broadcast_28464_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28518"], - "name" : "Broadcast_28519", - "op" : "Broadcast", - "outputs" : ["Broadcast_28519_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28510"], - "name" : "Broadcast_28511", - "op" : "Broadcast", - "outputs" : ["Broadcast_28511_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28503"], - "name" : "Broadcast_28504", - "op" : "Broadcast", - "outputs" : ["Broadcast_28504_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28558"], - "name" : "Broadcast_28559", - "op" : "Broadcast", - "outputs" : ["Broadcast_28559_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28550"], - "name" : "Broadcast_28551", - "op" : "Broadcast", - "outputs" : ["Broadcast_28551_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28543"], - "name" : "Broadcast_28544", - "op" : "Broadcast", - "outputs" : ["Broadcast_28544_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28598"], - "name" : "Broadcast_28599", - "op" : "Broadcast", - "outputs" : ["Broadcast_28599_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28590"], - "name" : "Broadcast_28591", - "op" : "Broadcast", - "outputs" : ["Broadcast_28591_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28583"], - "name" : "Broadcast_28584", - "op" : "Broadcast", - "outputs" : ["Broadcast_28584_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28638"], - "name" : "Broadcast_28639", - "op" : "Broadcast", - "outputs" : ["Broadcast_28639_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28630"], - "name" : "Broadcast_28631", - "op" : "Broadcast", - "outputs" : ["Broadcast_28631_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28623"], - "name" : "Broadcast_28624", - "op" : "Broadcast", - "outputs" : ["Broadcast_28624_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28678"], - "name" : "Broadcast_28679", - "op" : "Broadcast", - "outputs" : ["Broadcast_28679_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28670"], - "name" : "Broadcast_28671", - "op" : "Broadcast", - "outputs" : ["Broadcast_28671_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28663"], - "name" : "Broadcast_28664", - "op" : "Broadcast", - "outputs" : ["Broadcast_28664_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28718"], - "name" : "Broadcast_28719", - "op" : "Broadcast", - "outputs" : ["Broadcast_28719_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28710"], - "name" : "Broadcast_28711", - "op" : "Broadcast", - "outputs" : ["Broadcast_28711_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28703"], - "name" : "Broadcast_28704", - "op" : "Broadcast", - "outputs" : ["Broadcast_28704_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28758"], - "name" : "Broadcast_28759", - "op" : "Broadcast", - "outputs" : ["Broadcast_28759_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28750"], - "name" : "Broadcast_28751", - "op" : "Broadcast", - "outputs" : ["Broadcast_28751_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28743"], - "name" : "Broadcast_28744", - "op" : "Broadcast", - "outputs" : ["Broadcast_28744_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28798"], - "name" : "Broadcast_28799", - "op" : "Broadcast", - "outputs" : ["Broadcast_28799_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28790"], - "name" : "Broadcast_28791", - "op" : "Broadcast", - "outputs" : ["Broadcast_28791_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28783"], - "name" : "Broadcast_28784", - "op" : "Broadcast", - "outputs" : ["Broadcast_28784_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28838"], - "name" : "Broadcast_28839", - "op" : "Broadcast", - "outputs" : ["Broadcast_28839_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28830"], - "name" : "Broadcast_28831", - "op" : "Broadcast", - "outputs" : ["Broadcast_28831_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28823"], - "name" : "Broadcast_28824", - "op" : "Broadcast", - "outputs" : ["Broadcast_28824_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28878"], - "name" : "Broadcast_28879", - "op" : "Broadcast", - "outputs" : ["Broadcast_28879_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28870"], - "name" : "Broadcast_28871", - "op" : "Broadcast", - "outputs" : ["Broadcast_28871_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28863"], - "name" : "Broadcast_28864", - "op" : "Broadcast", - "outputs" : ["Broadcast_28864_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28918"], - "name" : "Broadcast_28919", - "op" : "Broadcast", - "outputs" : ["Broadcast_28919_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28910"], - "name" : "Broadcast_28911", - "op" : "Broadcast", - "outputs" : ["Broadcast_28911_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28903"], - "name" : "Broadcast_28904", - "op" : "Broadcast", - "outputs" : ["Broadcast_28904_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28958"], - "name" : "Broadcast_28959", - "op" : "Broadcast", - "outputs" : ["Broadcast_28959_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28950"], - "name" : "Broadcast_28951", - "op" : "Broadcast", - "outputs" : ["Broadcast_28951_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28943"], - "name" : "Broadcast_28944", - "op" : "Broadcast", - "outputs" : ["Broadcast_28944_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28998"], - "name" : "Broadcast_28999", - "op" : "Broadcast", - "outputs" : ["Broadcast_28999_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28990"], - "name" : "Broadcast_28991", - "op" : "Broadcast", - "outputs" : ["Broadcast_28991_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_28983"], - "name" : "Broadcast_28984", - "op" : "Broadcast", - "outputs" : ["Broadcast_28984_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29038"], - "name" : "Broadcast_29039", - "op" : "Broadcast", - "outputs" : ["Broadcast_29039_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29030"], - "name" : "Broadcast_29031", - "op" : "Broadcast", - "outputs" : ["Broadcast_29031_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29023"], - "name" : "Broadcast_29024", - "op" : "Broadcast", - "outputs" : ["Broadcast_29024_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29063"], - "name" : "Broadcast_29064", - "op" : "Broadcast", - "outputs" : ["Broadcast_29064_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29150"], - "name" : "Broadcast_29151", - "op" : "Broadcast", - "outputs" : ["Broadcast_29151_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29190"], - "name" : "Broadcast_29191", - "op" : "Broadcast", - "outputs" : ["Broadcast_29191_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29078"], - "name" : "Broadcast_29079", - "op" : "Broadcast", - "outputs" : ["Broadcast_29079_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29070"], - "name" : "Broadcast_29071", - "op" : "Broadcast", - "outputs" : ["Broadcast_29071_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29118"], - "name" : "Broadcast_29119", - "op" : "Broadcast", - "outputs" : ["Broadcast_29119_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29110"], - "name" : "Broadcast_29111", - "op" : "Broadcast", - "outputs" : ["Broadcast_29111_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29103"], - "name" : "Broadcast_29104", - "op" : "Broadcast", - "outputs" : ["Broadcast_29104_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29158"], - "name" : "Broadcast_29159", - "op" : "Broadcast", - "outputs" : ["Broadcast_29159_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29143"], - "name" : "Broadcast_29144", - "op" : "Broadcast", - "outputs" : ["Broadcast_29144_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29198"], - "name" : "Broadcast_29199", - "op" : "Broadcast", - "outputs" : ["Broadcast_29199_0"], - "shape" : [ 64, 256 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_29183"], - "name" : "Broadcast_29184", - "op" : "Broadcast", - "outputs" : ["Broadcast_29184_0"], - "shape" : [ 64, 256 ] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_26803"], - "name" : "Reshape_26804", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_26804_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27011"], - "name" : "Reshape_27012", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27012_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27051"], - "name" : "Reshape_27052", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27052_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27091"], - "name" : "Reshape_27092", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27092_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27131"], - "name" : "Reshape_27132", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27132_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27171"], - "name" : "Reshape_27172", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27172_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27211"], - "name" : "Reshape_27212", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27212_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27251"], - "name" : "Reshape_27252", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27252_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27291"], - "name" : "Reshape_27292", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27292_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_26851"], - "name" : "Reshape_26852", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_26852_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27331"], - "name" : "Reshape_27332", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27332_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27371"], - "name" : "Reshape_27372", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27372_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27411"], - "name" : "Reshape_27412", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27412_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27451"], - "name" : "Reshape_27452", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27452_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27491"], - "name" : "Reshape_27492", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27492_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27531"], - "name" : "Reshape_27532", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27532_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27571"], - "name" : "Reshape_27572", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27572_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27611"], - "name" : "Reshape_27612", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27612_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27651"], - "name" : "Reshape_27652", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27652_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27691"], - "name" : "Reshape_27692", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27692_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27731"], - "name" : "Reshape_27732", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27732_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27771"], - "name" : "Reshape_27772", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27772_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_26891"], - "name" : "Reshape_26892", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_26892_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27811"], - "name" : "Reshape_27812", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27812_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27851"], - "name" : "Reshape_27852", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27852_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27891"], - "name" : "Reshape_27892", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27892_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27931"], - "name" : "Reshape_27932", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27932_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_27971"], - "name" : "Reshape_27972", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_27972_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28091"], - "name" : "Reshape_28092", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28092_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28131"], - "name" : "Reshape_28132", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28132_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28051"], - "name" : "Reshape_28052", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28052_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28171"], - "name" : "Reshape_28172", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28172_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28211"], - "name" : "Reshape_28212", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28212_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_26931"], - "name" : "Reshape_26932", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_26932_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28251"], - "name" : "Reshape_28252", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28252_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28291"], - "name" : "Reshape_28292", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28292_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28011"], - "name" : "Reshape_28012", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28012_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28331"], - "name" : "Reshape_28332", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28332_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28371"], - "name" : "Reshape_28372", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28372_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28411"], - "name" : "Reshape_28412", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28412_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28451"], - "name" : "Reshape_28452", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28452_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28491"], - "name" : "Reshape_28492", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28492_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28531"], - "name" : "Reshape_28532", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28532_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_29011"], - "name" : "Reshape_29012", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_29012_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28571"], - "name" : "Reshape_28572", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28572_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28611"], - "name" : "Reshape_28612", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28612_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28651"], - "name" : "Reshape_28652", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28652_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28691"], - "name" : "Reshape_28692", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28692_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_26971"], - "name" : "Reshape_26972", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_26972_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28731"], - "name" : "Reshape_28732", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28732_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28771"], - "name" : "Reshape_28772", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28772_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28811"], - "name" : "Reshape_28812", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28812_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28851"], - "name" : "Reshape_28852", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28852_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28971"], - "name" : "Reshape_28972", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28972_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28891"], - "name" : "Reshape_28892", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28892_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_29051"], - "name" : "Reshape_29052", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_29052_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_29131"], - "name" : "Reshape_29132", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_29132_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_29091"], - "name" : "Reshape_29092", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_29092_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_29171"], - "name" : "Reshape_29172", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_29172_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_28931"], - "name" : "Reshape_28932", - "op" : "Reshape", - "output_shape" : [ 64, 256 ], - "outputs" : ["Reshape_28932_0"] - }, - { - "inputs" : [ "Broadcast_26812", "Reshape_26815" ], - "name" : "Dot_26816", - "op" : "Dot", - "outputs" : ["Dot_26816_0"] - }, - { - "inputs" : [ "Reshape_26804", "Reshape_26807" ], - "name" : "Dot_26808", - "op" : "Dot", - "outputs" : ["Dot_26808_0"] - }, - { - "inputs" : [ "Reshape_27012", "Reshape_27013" ], - "name" : "Dot_27014", - "op" : "Dot", - "outputs" : ["Dot_27014_0"] - }, - { - "inputs" : [ "Reshape_27052", "Reshape_27053" ], - "name" : "Dot_27054", - "op" : "Dot", - "outputs" : ["Dot_27054_0"] - }, - { - "inputs" : [ "Reshape_27092", "Reshape_27093" ], - "name" : "Dot_27094", - "op" : "Dot", - "outputs" : ["Dot_27094_0"] - }, - { - "inputs" : [ "Reshape_27132", "Reshape_27133" ], - "name" : "Dot_27134", - "op" : "Dot", - "outputs" : ["Dot_27134_0"] - }, - { - "inputs" : [ "Reshape_27172", "Reshape_27173" ], - "name" : "Dot_27174", - "op" : "Dot", - "outputs" : ["Dot_27174_0"] - }, - { - "inputs" : [ "Reshape_27212", "Reshape_27213" ], - "name" : "Dot_27214", - "op" : "Dot", - "outputs" : ["Dot_27214_0"] - }, - { - "inputs" : [ "Reshape_27252", "Reshape_27253" ], - "name" : "Dot_27254", - "op" : "Dot", - "outputs" : ["Dot_27254_0"] - }, - { - "inputs" : [ "Reshape_27292", "Reshape_27293" ], - "name" : "Dot_27294", - "op" : "Dot", - "outputs" : ["Dot_27294_0"] - }, - { - "inputs" : [ "Reshape_26852", "Reshape_26853" ], - "name" : "Dot_26854", - "op" : "Dot", - "outputs" : ["Dot_26854_0"] - }, - { - "inputs" : [ "Reshape_27332", "Reshape_27333" ], - "name" : "Dot_27334", - "op" : "Dot", - "outputs" : ["Dot_27334_0"] - }, - { - "inputs" : [ "Reshape_27372", "Reshape_27373" ], - "name" : "Dot_27374", - "op" : "Dot", - "outputs" : ["Dot_27374_0"] - }, - { - "inputs" : [ "Reshape_27412", "Reshape_27413" ], - "name" : "Dot_27414", - "op" : "Dot", - "outputs" : ["Dot_27414_0"] - }, - { - "inputs" : [ "Reshape_27452", "Reshape_27453" ], - "name" : "Dot_27454", - "op" : "Dot", - "outputs" : ["Dot_27454_0"] - }, - { - "inputs" : [ "Reshape_27492", "Reshape_27493" ], - "name" : "Dot_27494", - "op" : "Dot", - "outputs" : ["Dot_27494_0"] - }, - { - "inputs" : [ "Reshape_27532", "Reshape_27533" ], - "name" : "Dot_27534", - "op" : "Dot", - "outputs" : ["Dot_27534_0"] - }, - { - "inputs" : [ "Reshape_27572", "Reshape_27573" ], - "name" : "Dot_27574", - "op" : "Dot", - "outputs" : ["Dot_27574_0"] - }, - { - "inputs" : [ "Reshape_27612", "Reshape_27613" ], - "name" : "Dot_27614", - "op" : "Dot", - "outputs" : ["Dot_27614_0"] - }, - { - "inputs" : [ "Reshape_27652", "Reshape_27653" ], - "name" : "Dot_27654", - "op" : "Dot", - "outputs" : ["Dot_27654_0"] - }, - { - "inputs" : [ "Reshape_27692", "Reshape_27693" ], - "name" : "Dot_27694", - "op" : "Dot", - "outputs" : ["Dot_27694_0"] - }, - { - "inputs" : [ "Reshape_27732", "Reshape_27733" ], - "name" : "Dot_27734", - "op" : "Dot", - "outputs" : ["Dot_27734_0"] - }, - { - "inputs" : [ "Reshape_27772", "Reshape_27773" ], - "name" : "Dot_27774", - "op" : "Dot", - "outputs" : ["Dot_27774_0"] - }, - { - "inputs" : [ "Reshape_26892", "Reshape_26893" ], - "name" : "Dot_26894", - "op" : "Dot", - "outputs" : ["Dot_26894_0"] - }, - { - "inputs" : [ "Reshape_27812", "Reshape_27813" ], - "name" : "Dot_27814", - "op" : "Dot", - "outputs" : ["Dot_27814_0"] - }, - { - "inputs" : [ "Reshape_27852", "Reshape_27853" ], - "name" : "Dot_27854", - "op" : "Dot", - "outputs" : ["Dot_27854_0"] - }, - { - "inputs" : [ "Reshape_27892", "Reshape_27893" ], - "name" : "Dot_27894", - "op" : "Dot", - "outputs" : ["Dot_27894_0"] - }, - { - "inputs" : [ "Reshape_27932", "Reshape_27933" ], - "name" : "Dot_27934", - "op" : "Dot", - "outputs" : ["Dot_27934_0"] - }, - { - "inputs" : [ "Reshape_27972", "Reshape_27973" ], - "name" : "Dot_27974", - "op" : "Dot", - "outputs" : ["Dot_27974_0"] - }, - { - "inputs" : [ "Reshape_28092", "Reshape_28093" ], - "name" : "Dot_28094", - "op" : "Dot", - "outputs" : ["Dot_28094_0"] - }, - { - "inputs" : [ "Reshape_28132", "Reshape_28133" ], - "name" : "Dot_28134", - "op" : "Dot", - "outputs" : ["Dot_28134_0"] - }, - { - "inputs" : [ "Reshape_28052", "Reshape_28053" ], - "name" : "Dot_28054", - "op" : "Dot", - "outputs" : ["Dot_28054_0"] - }, - { - "inputs" : [ "Reshape_28172", "Reshape_28173" ], - "name" : "Dot_28174", - "op" : "Dot", - "outputs" : ["Dot_28174_0"] - }, - { - "inputs" : [ "Reshape_28212", "Reshape_28213" ], - "name" : "Dot_28214", - "op" : "Dot", - "outputs" : ["Dot_28214_0"] - }, - { - "inputs" : [ "Reshape_26932", "Reshape_26933" ], - "name" : "Dot_26934", - "op" : "Dot", - "outputs" : ["Dot_26934_0"] - }, - { - "inputs" : [ "Reshape_28252", "Reshape_28253" ], - "name" : "Dot_28254", - "op" : "Dot", - "outputs" : ["Dot_28254_0"] - }, - { - "inputs" : [ "Reshape_28292", "Reshape_28293" ], - "name" : "Dot_28294", - "op" : "Dot", - "outputs" : ["Dot_28294_0"] - }, - { - "inputs" : [ "Reshape_28012", "Reshape_28013" ], - "name" : "Dot_28014", - "op" : "Dot", - "outputs" : ["Dot_28014_0"] - }, - { - "inputs" : [ "Reshape_28332", "Reshape_28333" ], - "name" : "Dot_28334", - "op" : "Dot", - "outputs" : ["Dot_28334_0"] - }, - { - "inputs" : [ "Reshape_28372", "Reshape_28373" ], - "name" : "Dot_28374", - "op" : "Dot", - "outputs" : ["Dot_28374_0"] - }, - { - "inputs" : [ "Reshape_28412", "Reshape_28413" ], - "name" : "Dot_28414", - "op" : "Dot", - "outputs" : ["Dot_28414_0"] - }, - { - "inputs" : [ "Reshape_28452", "Reshape_28453" ], - "name" : "Dot_28454", - "op" : "Dot", - "outputs" : ["Dot_28454_0"] - }, - { - "inputs" : [ "Reshape_28492", "Reshape_28493" ], - "name" : "Dot_28494", - "op" : "Dot", - "outputs" : ["Dot_28494_0"] - }, - { - "inputs" : [ "Reshape_28532", "Reshape_28533" ], - "name" : "Dot_28534", - "op" : "Dot", - "outputs" : ["Dot_28534_0"] - }, - { - "inputs" : [ "Reshape_29012", "Reshape_29013" ], - "name" : "Dot_29014", - "op" : "Dot", - "outputs" : ["Dot_29014_0"] - }, - { - "inputs" : [ "Reshape_28572", "Reshape_28573" ], - "name" : "Dot_28574", - "op" : "Dot", - "outputs" : ["Dot_28574_0"] - }, - { - "inputs" : [ "Reshape_28612", "Reshape_28613" ], - "name" : "Dot_28614", - "op" : "Dot", - "outputs" : ["Dot_28614_0"] - }, - { - "inputs" : [ "Reshape_28652", "Reshape_28653" ], - "name" : "Dot_28654", - "op" : "Dot", - "outputs" : ["Dot_28654_0"] - }, - { - "inputs" : [ "Reshape_28692", "Reshape_28693" ], - "name" : "Dot_28694", - "op" : "Dot", - "outputs" : ["Dot_28694_0"] - }, - { - "inputs" : [ "Reshape_26972", "Reshape_26973" ], - "name" : "Dot_26974", - "op" : "Dot", - "outputs" : ["Dot_26974_0"] - }, - { - "inputs" : [ "Reshape_28732", "Reshape_28733" ], - "name" : "Dot_28734", - "op" : "Dot", - "outputs" : ["Dot_28734_0"] - }, - { - "inputs" : [ "Reshape_28772", "Reshape_28773" ], - "name" : "Dot_28774", - "op" : "Dot", - "outputs" : ["Dot_28774_0"] - }, - { - "inputs" : [ "Reshape_28812", "Reshape_28813" ], - "name" : "Dot_28814", - "op" : "Dot", - "outputs" : ["Dot_28814_0"] - }, - { - "inputs" : [ "Reshape_28852", "Reshape_28853" ], - "name" : "Dot_28854", - "op" : "Dot", - "outputs" : ["Dot_28854_0"] - }, - { - "inputs" : [ "Reshape_28972", "Reshape_28973" ], - "name" : "Dot_28974", - "op" : "Dot", - "outputs" : ["Dot_28974_0"] - }, - { - "inputs" : [ "Reshape_28892", "Reshape_28893" ], - "name" : "Dot_28894", - "op" : "Dot", - "outputs" : ["Dot_28894_0"] - }, - { - "inputs" : [ "Reshape_29052", "Reshape_29053" ], - "name" : "Dot_29054", - "op" : "Dot", - "outputs" : ["Dot_29054_0"] - }, - { - "inputs" : [ "Reshape_29132", "Reshape_29133" ], - "name" : "Dot_29134", - "op" : "Dot", - "outputs" : ["Dot_29134_0"] - }, - { - "inputs" : [ "Reshape_29092", "Reshape_29093" ], - "name" : "Dot_29094", - "op" : "Dot", - "outputs" : ["Dot_29094_0"] - }, - { - "inputs" : [ "Reshape_29172", "Reshape_29173" ], - "name" : "Dot_29174", - "op" : "Dot", - "outputs" : ["Dot_29174_0"] - }, - { - "inputs" : [ "Reshape_28932", "Reshape_28933" ], - "name" : "Dot_28934", - "op" : "Dot", - "outputs" : ["Dot_28934_0"] - }, - { - "inputs" : [ "Dot_26816", "Broadcast_26817" ], - "name" : "Add_26818", - "op" : "Add", - "outputs" : ["Add_26818_0"] - }, - { - "inputs" : [ "Dot_26808", "Broadcast_26809" ], - "name" : "Add_26810", - "op" : "Add", - "outputs" : ["Add_26810_0"] - }, - { - "inputs" : [ "Dot_27014", "Broadcast_27015" ], - "name" : "Add_27016", - "op" : "Add", - "outputs" : ["Add_27016_0"] - }, - { - "inputs" : [ "Dot_27054", "Broadcast_27055" ], - "name" : "Add_27056", - "op" : "Add", - "outputs" : ["Add_27056_0"] - }, - { - "inputs" : [ "Dot_27094", "Broadcast_27095" ], - "name" : "Add_27096", - "op" : "Add", - "outputs" : ["Add_27096_0"] - }, - { - "inputs" : [ "Dot_27134", "Broadcast_27135" ], - "name" : "Add_27136", - "op" : "Add", - "outputs" : ["Add_27136_0"] - }, - { - "inputs" : [ "Dot_27174", "Broadcast_27175" ], - "name" : "Add_27176", - "op" : "Add", - "outputs" : ["Add_27176_0"] - }, - { - "inputs" : [ "Dot_27214", "Broadcast_27215" ], - "name" : "Add_27216", - "op" : "Add", - "outputs" : ["Add_27216_0"] - }, - { - "inputs" : [ "Dot_27254", "Broadcast_27255" ], - "name" : "Add_27256", - "op" : "Add", - "outputs" : ["Add_27256_0"] - }, - { - "inputs" : [ "Dot_27294", "Broadcast_27295" ], - "name" : "Add_27296", - "op" : "Add", - "outputs" : ["Add_27296_0"] - }, - { - "inputs" : [ "Dot_26854", "Broadcast_26855" ], - "name" : "Add_26856", - "op" : "Add", - "outputs" : ["Add_26856_0"] - }, - { - "inputs" : [ "Dot_27334", "Broadcast_27335" ], - "name" : "Add_27336", - "op" : "Add", - "outputs" : ["Add_27336_0"] - }, - { - "inputs" : [ "Dot_27374", "Broadcast_27375" ], - "name" : "Add_27376", - "op" : "Add", - "outputs" : ["Add_27376_0"] - }, - { - "inputs" : [ "Dot_27414", "Broadcast_27415" ], - "name" : "Add_27416", - "op" : "Add", - "outputs" : ["Add_27416_0"] - }, - { - "inputs" : [ "Dot_27454", "Broadcast_27455" ], - "name" : "Add_27456", - "op" : "Add", - "outputs" : ["Add_27456_0"] - }, - { - "inputs" : [ "Dot_27494", "Broadcast_27495" ], - "name" : "Add_27496", - "op" : "Add", - "outputs" : ["Add_27496_0"] - }, - { - "inputs" : [ "Dot_27534", "Broadcast_27535" ], - "name" : "Add_27536", - "op" : "Add", - "outputs" : ["Add_27536_0"] - }, - { - "inputs" : [ "Dot_27574", "Broadcast_27575" ], - "name" : "Add_27576", - "op" : "Add", - "outputs" : ["Add_27576_0"] - }, - { - "inputs" : [ "Dot_27614", "Broadcast_27615" ], - "name" : "Add_27616", - "op" : "Add", - "outputs" : ["Add_27616_0"] - }, - { - "inputs" : [ "Dot_27654", "Broadcast_27655" ], - "name" : "Add_27656", - "op" : "Add", - "outputs" : ["Add_27656_0"] - }, - { - "inputs" : [ "Dot_27694", "Broadcast_27695" ], - "name" : "Add_27696", - "op" : "Add", - "outputs" : ["Add_27696_0"] - }, - { - "inputs" : [ "Dot_27734", "Broadcast_27735" ], - "name" : "Add_27736", - "op" : "Add", - "outputs" : ["Add_27736_0"] - }, - { - "inputs" : [ "Dot_27774", "Broadcast_27775" ], - "name" : "Add_27776", - "op" : "Add", - "outputs" : ["Add_27776_0"] - }, - { - "inputs" : [ "Dot_26894", "Broadcast_26895" ], - "name" : "Add_26896", - "op" : "Add", - "outputs" : ["Add_26896_0"] - }, - { - "inputs" : [ "Dot_27814", "Broadcast_27815" ], - "name" : "Add_27816", - "op" : "Add", - "outputs" : ["Add_27816_0"] - }, - { - "inputs" : [ "Dot_27854", "Broadcast_27855" ], - "name" : "Add_27856", - "op" : "Add", - "outputs" : ["Add_27856_0"] - }, - { - "inputs" : [ "Dot_27894", "Broadcast_27895" ], - "name" : "Add_27896", - "op" : "Add", - "outputs" : ["Add_27896_0"] - }, - { - "inputs" : [ "Dot_27934", "Broadcast_27935" ], - "name" : "Add_27936", - "op" : "Add", - "outputs" : ["Add_27936_0"] - }, - { - "inputs" : [ "Dot_27974", "Broadcast_27975" ], - "name" : "Add_27976", - "op" : "Add", - "outputs" : ["Add_27976_0"] - }, - { - "inputs" : [ "Dot_28094", "Broadcast_28095" ], - "name" : "Add_28096", - "op" : "Add", - "outputs" : ["Add_28096_0"] - }, - { - "inputs" : [ "Dot_28134", "Broadcast_28135" ], - "name" : "Add_28136", - "op" : "Add", - "outputs" : ["Add_28136_0"] - }, - { - "inputs" : [ "Dot_28054", "Broadcast_28055" ], - "name" : "Add_28056", - "op" : "Add", - "outputs" : ["Add_28056_0"] - }, - { - "inputs" : [ "Dot_28174", "Broadcast_28175" ], - "name" : "Add_28176", - "op" : "Add", - "outputs" : ["Add_28176_0"] - }, - { - "inputs" : [ "Dot_28214", "Broadcast_28215" ], - "name" : "Add_28216", - "op" : "Add", - "outputs" : ["Add_28216_0"] - }, - { - "inputs" : [ "Dot_26934", "Broadcast_26935" ], - "name" : "Add_26936", - "op" : "Add", - "outputs" : ["Add_26936_0"] - }, - { - "inputs" : [ "Dot_28254", "Broadcast_28255" ], - "name" : "Add_28256", - "op" : "Add", - "outputs" : ["Add_28256_0"] - }, - { - "inputs" : [ "Dot_28294", "Broadcast_28295" ], - "name" : "Add_28296", - "op" : "Add", - "outputs" : ["Add_28296_0"] - }, - { - "inputs" : [ "Dot_28014", "Broadcast_28015" ], - "name" : "Add_28016", - "op" : "Add", - "outputs" : ["Add_28016_0"] - }, - { - "inputs" : [ "Dot_28334", "Broadcast_28335" ], - "name" : "Add_28336", - "op" : "Add", - "outputs" : ["Add_28336_0"] - }, - { - "inputs" : [ "Dot_28374", "Broadcast_28375" ], - "name" : "Add_28376", - "op" : "Add", - "outputs" : ["Add_28376_0"] - }, - { - "inputs" : [ "Dot_28414", "Broadcast_28415" ], - "name" : "Add_28416", - "op" : "Add", - "outputs" : ["Add_28416_0"] - }, - { - "inputs" : [ "Dot_28454", "Broadcast_28455" ], - "name" : "Add_28456", - "op" : "Add", - "outputs" : ["Add_28456_0"] - }, - { - "inputs" : [ "Dot_28494", "Broadcast_28495" ], - "name" : "Add_28496", - "op" : "Add", - "outputs" : ["Add_28496_0"] - }, - { - "inputs" : [ "Dot_28534", "Broadcast_28535" ], - "name" : "Add_28536", - "op" : "Add", - "outputs" : ["Add_28536_0"] - }, - { - "inputs" : [ "Dot_29014", "Broadcast_29015" ], - "name" : "Add_29016", - "op" : "Add", - "outputs" : ["Add_29016_0"] - }, - { - "inputs" : [ "Dot_28574", "Broadcast_28575" ], - "name" : "Add_28576", - "op" : "Add", - "outputs" : ["Add_28576_0"] - }, - { - "inputs" : [ "Dot_28614", "Broadcast_28615" ], - "name" : "Add_28616", - "op" : "Add", - "outputs" : ["Add_28616_0"] - }, - { - "inputs" : [ "Dot_28654", "Broadcast_28655" ], - "name" : "Add_28656", - "op" : "Add", - "outputs" : ["Add_28656_0"] - }, - { - "inputs" : [ "Dot_28694", "Broadcast_28695" ], - "name" : "Add_28696", - "op" : "Add", - "outputs" : ["Add_28696_0"] - }, - { - "inputs" : [ "Dot_26974", "Broadcast_26975" ], - "name" : "Add_26976", - "op" : "Add", - "outputs" : ["Add_26976_0"] - }, - { - "inputs" : [ "Dot_28734", "Broadcast_28735" ], - "name" : "Add_28736", - "op" : "Add", - "outputs" : ["Add_28736_0"] - }, - { - "inputs" : [ "Dot_28774", "Broadcast_28775" ], - "name" : "Add_28776", - "op" : "Add", - "outputs" : ["Add_28776_0"] - }, - { - "inputs" : [ "Dot_28814", "Broadcast_28815" ], - "name" : "Add_28816", - "op" : "Add", - "outputs" : ["Add_28816_0"] - }, - { - "inputs" : [ "Dot_28854", "Broadcast_28855" ], - "name" : "Add_28856", - "op" : "Add", - "outputs" : ["Add_28856_0"] - }, - { - "inputs" : [ "Dot_28974", "Broadcast_28975" ], - "name" : "Add_28976", - "op" : "Add", - "outputs" : ["Add_28976_0"] - }, - { - "inputs" : [ "Dot_28894", "Broadcast_28895" ], - "name" : "Add_28896", - "op" : "Add", - "outputs" : ["Add_28896_0"] - }, - { - "inputs" : [ "Dot_29054", "Broadcast_29055" ], - "name" : "Add_29056", - "op" : "Add", - "outputs" : ["Add_29056_0"] - }, - { - "inputs" : [ "Dot_29134", "Broadcast_29135" ], - "name" : "Add_29136", - "op" : "Add", - "outputs" : ["Add_29136_0"] - }, - { - "inputs" : [ "Dot_29094", "Broadcast_29095" ], - "name" : "Add_29096", - "op" : "Add", - "outputs" : ["Add_29096_0"] - }, - { - "inputs" : [ "Dot_29174", "Broadcast_29175" ], - "name" : "Add_29176", - "op" : "Add", - "outputs" : ["Add_29176_0"] - }, - { - "inputs" : [ "Dot_28934", "Broadcast_28935" ], - "name" : "Add_28936", - "op" : "Add", - "outputs" : ["Add_28936_0"] - }, - { - "inputs" : [ "Add_26810", "Add_26818" ], - "name" : "Add_26819", - "op" : "Add", - "outputs" : ["Add_26819_0"] - }, - { - "inputs" : ["Add_26819"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_26820", - "op" : "Slice", - "outputs" : ["Slice_26820_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_26819"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_26827", - "op" : "Slice", - "outputs" : ["Slice_26827_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_26819"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_26837", - "op" : "Slice", - "outputs" : ["Slice_26837_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_26819"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_26844", - "op" : "Slice", - "outputs" : ["Slice_26844_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_26820"], - "name" : "Negative_26823", - "op" : "Negative", - "outputs" : ["Negative_26823_0"] - }, - { - "inputs" : ["Slice_26827"], - "name" : "Negative_26830", - "op" : "Negative", - "outputs" : ["Negative_26830_0"] - }, - { - "inputs" : ["Slice_26837"], - "name" : "Negative_26840", - "op" : "Negative", - "outputs" : ["Negative_26840_0"] - }, - { - "inputs" : ["Slice_26844"], - "name" : "Tanh_26845", - "op" : "Tanh", - "outputs" : ["Tanh_26845_0"] - }, - { - "inputs" : ["Negative_26823"], - "name" : "Exp_26824", - "op" : "Exp", - "outputs" : ["Exp_26824_0"] - }, - { - "inputs" : ["Negative_26830"], - "name" : "Exp_26831", - "op" : "Exp", - "outputs" : ["Exp_26831_0"] - }, - { - "inputs" : ["Negative_26840"], - "name" : "Exp_26841", - "op" : "Exp", - "outputs" : ["Exp_26841_0"] - }, - { - "inputs" : [ "Broadcast_26822", "Exp_26824" ], - "name" : "Add_26825", - "op" : "Add", - "outputs" : ["Add_26825_0"] - }, - { - "inputs" : [ "Broadcast_26829", "Exp_26831" ], - "name" : "Add_26832", - "op" : "Add", - "outputs" : ["Add_26832_0"] - }, - { - "inputs" : [ "Broadcast_26839", "Exp_26841" ], - "name" : "Add_26842", - "op" : "Add", - "outputs" : ["Add_26842_0"] - }, - { - "inputs" : [ "Broadcast_26822", "Add_26825" ], - "name" : "Divide_26826", - "op" : "Divide", - "outputs" : ["Divide_26826_0"] - }, - { - "inputs" : [ "Broadcast_26829", "Add_26832" ], - "name" : "Divide_26833", - "op" : "Divide", - "outputs" : ["Divide_26833_0"] - }, - { - "inputs" : [ "Broadcast_26839", "Add_26842" ], - "name" : "Divide_26843", - "op" : "Divide", - "outputs" : ["Divide_26843_0"] - }, - { - "inputs" : [ "Divide_26833", "Broadcast_26835" ], - "name" : "Multiply_26836", - "op" : "Multiply", - "outputs" : ["Multiply_26836_0"] - }, - { - "inputs" : [ "Divide_26843", "Tanh_26845" ], - "name" : "Multiply_26846", - "op" : "Multiply", - "outputs" : ["Multiply_26846_0"] - }, - { - "inputs" : [ "Multiply_26836", "Multiply_26846" ], - "name" : "Add_26847", - "op" : "Add", - "outputs" : ["Add_26847_0"] - }, - { - "inputs" : ["Add_26847"], - "name" : "Tanh_26848", - "op" : "Tanh", - "outputs" : ["Tanh_26848_0"] - }, - { - "inputs" : [ "Divide_26826", "Tanh_26848" ], - "name" : "Multiply_26849", - "op" : "Multiply", - "outputs" : ["Multiply_26849_0"] - }, - { - "inputs" : [ "Multiply_26849", "Reshape_26857" ], - "name" : "Dot_26858", - "op" : "Dot", - "outputs" : ["Dot_26858_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_26849"], - "name" : "Reshape_26850", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_26850_0"] - }, - { - "inputs" : [ "Dot_26858", "Broadcast_26859" ], - "name" : "Add_26860", - "op" : "Add", - "outputs" : ["Add_26860_0"] - }, - { - "inputs" : [ "Add_26856", "Add_26860" ], - "name" : "Add_26861", - "op" : "Add", - "outputs" : ["Add_26861_0"] - }, - { - "inputs" : ["Add_26861"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_26862", - "op" : "Slice", - "outputs" : ["Slice_26862_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_26861"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_26869", - "op" : "Slice", - "outputs" : ["Slice_26869_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_26861"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_26877", - "op" : "Slice", - "outputs" : ["Slice_26877_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_26861"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_26884", - "op" : "Slice", - "outputs" : ["Slice_26884_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_26862"], - "name" : "Negative_26865", - "op" : "Negative", - "outputs" : ["Negative_26865_0"] - }, - { - "inputs" : ["Slice_26869"], - "name" : "Negative_26872", - "op" : "Negative", - "outputs" : ["Negative_26872_0"] - }, - { - "inputs" : ["Slice_26877"], - "name" : "Negative_26880", - "op" : "Negative", - "outputs" : ["Negative_26880_0"] - }, - { - "inputs" : ["Slice_26884"], - "name" : "Tanh_26885", - "op" : "Tanh", - "outputs" : ["Tanh_26885_0"] - }, - { - "inputs" : ["Negative_26865"], - "name" : "Exp_26866", - "op" : "Exp", - "outputs" : ["Exp_26866_0"] - }, - { - "inputs" : ["Negative_26872"], - "name" : "Exp_26873", - "op" : "Exp", - "outputs" : ["Exp_26873_0"] - }, - { - "inputs" : ["Negative_26880"], - "name" : "Exp_26881", - "op" : "Exp", - "outputs" : ["Exp_26881_0"] - }, - { - "inputs" : [ "Broadcast_26864", "Exp_26866" ], - "name" : "Add_26867", - "op" : "Add", - "outputs" : ["Add_26867_0"] - }, - { - "inputs" : [ "Broadcast_26871", "Exp_26873" ], - "name" : "Add_26874", - "op" : "Add", - "outputs" : ["Add_26874_0"] - }, - { - "inputs" : [ "Broadcast_26879", "Exp_26881" ], - "name" : "Add_26882", - "op" : "Add", - "outputs" : ["Add_26882_0"] - }, - { - "inputs" : [ "Broadcast_26864", "Add_26867" ], - "name" : "Divide_26868", - "op" : "Divide", - "outputs" : ["Divide_26868_0"] - }, - { - "inputs" : [ "Broadcast_26871", "Add_26874" ], - "name" : "Divide_26875", - "op" : "Divide", - "outputs" : ["Divide_26875_0"] - }, - { - "inputs" : [ "Broadcast_26879", "Add_26882" ], - "name" : "Divide_26883", - "op" : "Divide", - "outputs" : ["Divide_26883_0"] - }, - { - "inputs" : [ "Divide_26875", "Add_26847" ], - "name" : "Multiply_26876", - "op" : "Multiply", - "outputs" : ["Multiply_26876_0"] - }, - { - "inputs" : [ "Divide_26883", "Tanh_26885" ], - "name" : "Multiply_26886", - "op" : "Multiply", - "outputs" : ["Multiply_26886_0"] - }, - { - "inputs" : [ "Multiply_26876", "Multiply_26886" ], - "name" : "Add_26887", - "op" : "Add", - "outputs" : ["Add_26887_0"] - }, - { - "inputs" : ["Add_26887"], - "name" : "Tanh_26888", - "op" : "Tanh", - "outputs" : ["Tanh_26888_0"] - }, - { - "inputs" : [ "Divide_26868", "Tanh_26888" ], - "name" : "Multiply_26889", - "op" : "Multiply", - "outputs" : ["Multiply_26889_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_26889"], - "name" : "Reshape_26890", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_26890_0"] - }, - { - "inputs" : [ "Multiply_26889", "Reshape_26897" ], - "name" : "Dot_26898", - "op" : "Dot", - "outputs" : ["Dot_26898_0"] - }, - { - "inputs" : [ "Dot_26898", "Broadcast_26899" ], - "name" : "Add_26900", - "op" : "Add", - "outputs" : ["Add_26900_0"] - }, - { - "inputs" : [ "Add_26896", "Add_26900" ], - "name" : "Add_26901", - "op" : "Add", - "outputs" : ["Add_26901_0"] - }, - { - "inputs" : ["Add_26901"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_26909", - "op" : "Slice", - "outputs" : ["Slice_26909_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_26901"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_26917", - "op" : "Slice", - "outputs" : ["Slice_26917_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_26901"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_26924", - "op" : "Slice", - "outputs" : ["Slice_26924_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_26901"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_26902", - "op" : "Slice", - "outputs" : ["Slice_26902_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Slice_26909"], - "name" : "Negative_26912", - "op" : "Negative", - "outputs" : ["Negative_26912_0"] - }, - { - "inputs" : ["Slice_26917"], - "name" : "Negative_26920", - "op" : "Negative", - "outputs" : ["Negative_26920_0"] - }, - { - "inputs" : ["Slice_26924"], - "name" : "Tanh_26925", - "op" : "Tanh", - "outputs" : ["Tanh_26925_0"] - }, - { - "inputs" : ["Slice_26902"], - "name" : "Negative_26905", - "op" : "Negative", - "outputs" : ["Negative_26905_0"] - }, - { - "inputs" : ["Negative_26912"], - "name" : "Exp_26913", - "op" : "Exp", - "outputs" : ["Exp_26913_0"] - }, - { - "inputs" : ["Negative_26920"], - "name" : "Exp_26921", - "op" : "Exp", - "outputs" : ["Exp_26921_0"] - }, - { - "inputs" : ["Negative_26905"], - "name" : "Exp_26906", - "op" : "Exp", - "outputs" : ["Exp_26906_0"] - }, - { - "inputs" : [ "Broadcast_26911", "Exp_26913" ], - "name" : "Add_26914", - "op" : "Add", - "outputs" : ["Add_26914_0"] - }, - { - "inputs" : [ "Broadcast_26919", "Exp_26921" ], - "name" : "Add_26922", - "op" : "Add", - "outputs" : ["Add_26922_0"] - }, - { - "inputs" : [ "Broadcast_26904", "Exp_26906" ], - "name" : "Add_26907", - "op" : "Add", - "outputs" : ["Add_26907_0"] - }, - { - "inputs" : [ "Broadcast_26911", "Add_26914" ], - "name" : "Divide_26915", - "op" : "Divide", - "outputs" : ["Divide_26915_0"] - }, - { - "inputs" : [ "Broadcast_26919", "Add_26922" ], - "name" : "Divide_26923", - "op" : "Divide", - "outputs" : ["Divide_26923_0"] - }, - { - "inputs" : [ "Broadcast_26904", "Add_26907" ], - "name" : "Divide_26908", - "op" : "Divide", - "outputs" : ["Divide_26908_0"] - }, - { - "inputs" : [ "Divide_26915", "Add_26887" ], - "name" : "Multiply_26916", - "op" : "Multiply", - "outputs" : ["Multiply_26916_0"] - }, - { - "inputs" : [ "Divide_26923", "Tanh_26925" ], - "name" : "Multiply_26926", - "op" : "Multiply", - "outputs" : ["Multiply_26926_0"] - }, - { - "inputs" : [ "Multiply_26916", "Multiply_26926" ], - "name" : "Add_26927", - "op" : "Add", - "outputs" : ["Add_26927_0"] - }, - { - "inputs" : ["Add_26927"], - "name" : "Tanh_26928", - "op" : "Tanh", - "outputs" : ["Tanh_26928_0"] - }, - { - "inputs" : [ "Divide_26908", "Tanh_26928" ], - "name" : "Multiply_26929", - "op" : "Multiply", - "outputs" : ["Multiply_26929_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_26929"], - "name" : "Reshape_26930", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_26930_0"] - }, - { - "inputs" : [ "Multiply_26929", "Reshape_26937" ], - "name" : "Dot_26938", - "op" : "Dot", - "outputs" : ["Dot_26938_0"] - }, - { - "inputs" : [ "Dot_26938", "Broadcast_26939" ], - "name" : "Add_26940", - "op" : "Add", - "outputs" : ["Add_26940_0"] - }, - { - "inputs" : [ "Add_26936", "Add_26940" ], - "name" : "Add_26941", - "op" : "Add", - "outputs" : ["Add_26941_0"] - }, - { - "inputs" : ["Add_26941"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_26942", - "op" : "Slice", - "outputs" : ["Slice_26942_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_26941"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_26949", - "op" : "Slice", - "outputs" : ["Slice_26949_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_26941"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_26957", - "op" : "Slice", - "outputs" : ["Slice_26957_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_26941"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_26964", - "op" : "Slice", - "outputs" : ["Slice_26964_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_26942"], - "name" : "Negative_26945", - "op" : "Negative", - "outputs" : ["Negative_26945_0"] - }, - { - "inputs" : ["Slice_26949"], - "name" : "Negative_26952", - "op" : "Negative", - "outputs" : ["Negative_26952_0"] - }, - { - "inputs" : ["Slice_26957"], - "name" : "Negative_26960", - "op" : "Negative", - "outputs" : ["Negative_26960_0"] - }, - { - "inputs" : ["Slice_26964"], - "name" : "Tanh_26965", - "op" : "Tanh", - "outputs" : ["Tanh_26965_0"] - }, - { - "inputs" : ["Negative_26945"], - "name" : "Exp_26946", - "op" : "Exp", - "outputs" : ["Exp_26946_0"] - }, - { - "inputs" : ["Negative_26952"], - "name" : "Exp_26953", - "op" : "Exp", - "outputs" : ["Exp_26953_0"] - }, - { - "inputs" : ["Negative_26960"], - "name" : "Exp_26961", - "op" : "Exp", - "outputs" : ["Exp_26961_0"] - }, - { - "inputs" : [ "Broadcast_26944", "Exp_26946" ], - "name" : "Add_26947", - "op" : "Add", - "outputs" : ["Add_26947_0"] - }, - { - "inputs" : [ "Broadcast_26951", "Exp_26953" ], - "name" : "Add_26954", - "op" : "Add", - "outputs" : ["Add_26954_0"] - }, - { - "inputs" : [ "Broadcast_26959", "Exp_26961" ], - "name" : "Add_26962", - "op" : "Add", - "outputs" : ["Add_26962_0"] - }, - { - "inputs" : [ "Broadcast_26944", "Add_26947" ], - "name" : "Divide_26948", - "op" : "Divide", - "outputs" : ["Divide_26948_0"] - }, - { - "inputs" : [ "Broadcast_26951", "Add_26954" ], - "name" : "Divide_26955", - "op" : "Divide", - "outputs" : ["Divide_26955_0"] - }, - { - "inputs" : [ "Broadcast_26959", "Add_26962" ], - "name" : "Divide_26963", - "op" : "Divide", - "outputs" : ["Divide_26963_0"] - }, - { - "inputs" : [ "Divide_26955", "Add_26927" ], - "name" : "Multiply_26956", - "op" : "Multiply", - "outputs" : ["Multiply_26956_0"] - }, - { - "inputs" : [ "Divide_26963", "Tanh_26965" ], - "name" : "Multiply_26966", - "op" : "Multiply", - "outputs" : ["Multiply_26966_0"] - }, - { - "inputs" : [ "Multiply_26956", "Multiply_26966" ], - "name" : "Add_26967", - "op" : "Add", - "outputs" : ["Add_26967_0"] - }, - { - "inputs" : ["Add_26967"], - "name" : "Tanh_26968", - "op" : "Tanh", - "outputs" : ["Tanh_26968_0"] - }, - { - "inputs" : [ "Divide_26948", "Tanh_26968" ], - "name" : "Multiply_26969", - "op" : "Multiply", - "outputs" : ["Multiply_26969_0"] - }, - { - "inputs" : [ "Multiply_26969", "Reshape_26977" ], - "name" : "Dot_26978", - "op" : "Dot", - "outputs" : ["Dot_26978_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_26969"], - "name" : "Reshape_26970", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_26970_0"] - }, - { - "inputs" : [ "Dot_26978", "Broadcast_26979" ], - "name" : "Add_26980", - "op" : "Add", - "outputs" : ["Add_26980_0"] - }, - { - "inputs" : [ "Add_26976", "Add_26980" ], - "name" : "Add_26981", - "op" : "Add", - "outputs" : ["Add_26981_0"] - }, - { - "inputs" : ["Add_26981"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_26989", - "op" : "Slice", - "outputs" : ["Slice_26989_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_26981"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_26997", - "op" : "Slice", - "outputs" : ["Slice_26997_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_26981"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27004", - "op" : "Slice", - "outputs" : ["Slice_27004_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_26981"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_26982", - "op" : "Slice", - "outputs" : ["Slice_26982_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Slice_26989"], - "name" : "Negative_26992", - "op" : "Negative", - "outputs" : ["Negative_26992_0"] - }, - { - "inputs" : ["Slice_26997"], - "name" : "Negative_27000", - "op" : "Negative", - "outputs" : ["Negative_27000_0"] - }, - { - "inputs" : ["Slice_27004"], - "name" : "Tanh_27005", - "op" : "Tanh", - "outputs" : ["Tanh_27005_0"] - }, - { - "inputs" : ["Slice_26982"], - "name" : "Negative_26985", - "op" : "Negative", - "outputs" : ["Negative_26985_0"] - }, - { - "inputs" : ["Negative_26992"], - "name" : "Exp_26993", - "op" : "Exp", - "outputs" : ["Exp_26993_0"] - }, - { - "inputs" : ["Negative_27000"], - "name" : "Exp_27001", - "op" : "Exp", - "outputs" : ["Exp_27001_0"] - }, - { - "inputs" : ["Negative_26985"], - "name" : "Exp_26986", - "op" : "Exp", - "outputs" : ["Exp_26986_0"] - }, - { - "inputs" : [ "Broadcast_26991", "Exp_26993" ], - "name" : "Add_26994", - "op" : "Add", - "outputs" : ["Add_26994_0"] - }, - { - "inputs" : [ "Broadcast_26999", "Exp_27001" ], - "name" : "Add_27002", - "op" : "Add", - "outputs" : ["Add_27002_0"] - }, - { - "inputs" : [ "Broadcast_26984", "Exp_26986" ], - "name" : "Add_26987", - "op" : "Add", - "outputs" : ["Add_26987_0"] - }, - { - "inputs" : [ "Broadcast_26991", "Add_26994" ], - "name" : "Divide_26995", - "op" : "Divide", - "outputs" : ["Divide_26995_0"] - }, - { - "inputs" : [ "Broadcast_26999", "Add_27002" ], - "name" : "Divide_27003", - "op" : "Divide", - "outputs" : ["Divide_27003_0"] - }, - { - "inputs" : [ "Broadcast_26984", "Add_26987" ], - "name" : "Divide_26988", - "op" : "Divide", - "outputs" : ["Divide_26988_0"] - }, - { - "inputs" : [ "Divide_26995", "Add_26967" ], - "name" : "Multiply_26996", - "op" : "Multiply", - "outputs" : ["Multiply_26996_0"] - }, - { - "inputs" : [ "Divide_27003", "Tanh_27005" ], - "name" : "Multiply_27006", - "op" : "Multiply", - "outputs" : ["Multiply_27006_0"] - }, - { - "inputs" : [ "Multiply_26996", "Multiply_27006" ], - "name" : "Add_27007", - "op" : "Add", - "outputs" : ["Add_27007_0"] - }, - { - "inputs" : ["Add_27007"], - "name" : "Tanh_27008", - "op" : "Tanh", - "outputs" : ["Tanh_27008_0"] - }, - { - "inputs" : [ "Divide_26988", "Tanh_27008" ], - "name" : "Multiply_27009", - "op" : "Multiply", - "outputs" : ["Multiply_27009_0"] - }, - { - "inputs" : [ "Multiply_27009", "Reshape_27017" ], - "name" : "Dot_27018", - "op" : "Dot", - "outputs" : ["Dot_27018_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27009"], - "name" : "Reshape_27010", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27010_0"] - }, - { - "inputs" : [ "Dot_27018", "Broadcast_27019" ], - "name" : "Add_27020", - "op" : "Add", - "outputs" : ["Add_27020_0"] - }, - { - "inputs" : [ "Add_27016", "Add_27020" ], - "name" : "Add_27021", - "op" : "Add", - "outputs" : ["Add_27021_0"] - }, - { - "inputs" : ["Add_27021"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27022", - "op" : "Slice", - "outputs" : ["Slice_27022_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27021"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27029", - "op" : "Slice", - "outputs" : ["Slice_27029_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27021"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27037", - "op" : "Slice", - "outputs" : ["Slice_27037_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27021"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27044", - "op" : "Slice", - "outputs" : ["Slice_27044_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27022"], - "name" : "Negative_27025", - "op" : "Negative", - "outputs" : ["Negative_27025_0"] - }, - { - "inputs" : ["Slice_27029"], - "name" : "Negative_27032", - "op" : "Negative", - "outputs" : ["Negative_27032_0"] - }, - { - "inputs" : ["Slice_27037"], - "name" : "Negative_27040", - "op" : "Negative", - "outputs" : ["Negative_27040_0"] - }, - { - "inputs" : ["Slice_27044"], - "name" : "Tanh_27045", - "op" : "Tanh", - "outputs" : ["Tanh_27045_0"] - }, - { - "inputs" : ["Negative_27025"], - "name" : "Exp_27026", - "op" : "Exp", - "outputs" : ["Exp_27026_0"] - }, - { - "inputs" : ["Negative_27032"], - "name" : "Exp_27033", - "op" : "Exp", - "outputs" : ["Exp_27033_0"] - }, - { - "inputs" : ["Negative_27040"], - "name" : "Exp_27041", - "op" : "Exp", - "outputs" : ["Exp_27041_0"] - }, - { - "inputs" : [ "Broadcast_27024", "Exp_27026" ], - "name" : "Add_27027", - "op" : "Add", - "outputs" : ["Add_27027_0"] - }, - { - "inputs" : [ "Broadcast_27031", "Exp_27033" ], - "name" : "Add_27034", - "op" : "Add", - "outputs" : ["Add_27034_0"] - }, - { - "inputs" : [ "Broadcast_27039", "Exp_27041" ], - "name" : "Add_27042", - "op" : "Add", - "outputs" : ["Add_27042_0"] - }, - { - "inputs" : [ "Broadcast_27024", "Add_27027" ], - "name" : "Divide_27028", - "op" : "Divide", - "outputs" : ["Divide_27028_0"] - }, - { - "inputs" : [ "Broadcast_27031", "Add_27034" ], - "name" : "Divide_27035", - "op" : "Divide", - "outputs" : ["Divide_27035_0"] - }, - { - "inputs" : [ "Broadcast_27039", "Add_27042" ], - "name" : "Divide_27043", - "op" : "Divide", - "outputs" : ["Divide_27043_0"] - }, - { - "inputs" : [ "Divide_27035", "Add_27007" ], - "name" : "Multiply_27036", - "op" : "Multiply", - "outputs" : ["Multiply_27036_0"] - }, - { - "inputs" : [ "Divide_27043", "Tanh_27045" ], - "name" : "Multiply_27046", - "op" : "Multiply", - "outputs" : ["Multiply_27046_0"] - }, - { - "inputs" : [ "Multiply_27036", "Multiply_27046" ], - "name" : "Add_27047", - "op" : "Add", - "outputs" : ["Add_27047_0"] - }, - { - "inputs" : ["Add_27047"], - "name" : "Tanh_27048", - "op" : "Tanh", - "outputs" : ["Tanh_27048_0"] - }, - { - "inputs" : [ "Divide_27028", "Tanh_27048" ], - "name" : "Multiply_27049", - "op" : "Multiply", - "outputs" : ["Multiply_27049_0"] - }, - { - "inputs" : [ "Multiply_27049", "Reshape_27057" ], - "name" : "Dot_27058", - "op" : "Dot", - "outputs" : ["Dot_27058_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27049"], - "name" : "Reshape_27050", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27050_0"] - }, - { - "inputs" : [ "Dot_27058", "Broadcast_27059" ], - "name" : "Add_27060", - "op" : "Add", - "outputs" : ["Add_27060_0"] - }, - { - "inputs" : [ "Add_27056", "Add_27060" ], - "name" : "Add_27061", - "op" : "Add", - "outputs" : ["Add_27061_0"] - }, - { - "inputs" : ["Add_27061"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27062", - "op" : "Slice", - "outputs" : ["Slice_27062_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27061"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27069", - "op" : "Slice", - "outputs" : ["Slice_27069_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27061"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27077", - "op" : "Slice", - "outputs" : ["Slice_27077_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27061"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27084", - "op" : "Slice", - "outputs" : ["Slice_27084_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27062"], - "name" : "Negative_27065", - "op" : "Negative", - "outputs" : ["Negative_27065_0"] - }, - { - "inputs" : ["Slice_27069"], - "name" : "Negative_27072", - "op" : "Negative", - "outputs" : ["Negative_27072_0"] - }, - { - "inputs" : ["Slice_27077"], - "name" : "Negative_27080", - "op" : "Negative", - "outputs" : ["Negative_27080_0"] - }, - { - "inputs" : ["Slice_27084"], - "name" : "Tanh_27085", - "op" : "Tanh", - "outputs" : ["Tanh_27085_0"] - }, - { - "inputs" : ["Negative_27065"], - "name" : "Exp_27066", - "op" : "Exp", - "outputs" : ["Exp_27066_0"] - }, - { - "inputs" : ["Negative_27072"], - "name" : "Exp_27073", - "op" : "Exp", - "outputs" : ["Exp_27073_0"] - }, - { - "inputs" : ["Negative_27080"], - "name" : "Exp_27081", - "op" : "Exp", - "outputs" : ["Exp_27081_0"] - }, - { - "inputs" : [ "Broadcast_27064", "Exp_27066" ], - "name" : "Add_27067", - "op" : "Add", - "outputs" : ["Add_27067_0"] - }, - { - "inputs" : [ "Broadcast_27071", "Exp_27073" ], - "name" : "Add_27074", - "op" : "Add", - "outputs" : ["Add_27074_0"] - }, - { - "inputs" : [ "Broadcast_27079", "Exp_27081" ], - "name" : "Add_27082", - "op" : "Add", - "outputs" : ["Add_27082_0"] - }, - { - "inputs" : [ "Broadcast_27064", "Add_27067" ], - "name" : "Divide_27068", - "op" : "Divide", - "outputs" : ["Divide_27068_0"] - }, - { - "inputs" : [ "Broadcast_27071", "Add_27074" ], - "name" : "Divide_27075", - "op" : "Divide", - "outputs" : ["Divide_27075_0"] - }, - { - "inputs" : [ "Broadcast_27079", "Add_27082" ], - "name" : "Divide_27083", - "op" : "Divide", - "outputs" : ["Divide_27083_0"] - }, - { - "inputs" : [ "Divide_27075", "Add_27047" ], - "name" : "Multiply_27076", - "op" : "Multiply", - "outputs" : ["Multiply_27076_0"] - }, - { - "inputs" : [ "Divide_27083", "Tanh_27085" ], - "name" : "Multiply_27086", - "op" : "Multiply", - "outputs" : ["Multiply_27086_0"] - }, - { - "inputs" : [ "Multiply_27076", "Multiply_27086" ], - "name" : "Add_27087", - "op" : "Add", - "outputs" : ["Add_27087_0"] - }, - { - "inputs" : ["Add_27087"], - "name" : "Tanh_27088", - "op" : "Tanh", - "outputs" : ["Tanh_27088_0"] - }, - { - "inputs" : [ "Divide_27068", "Tanh_27088" ], - "name" : "Multiply_27089", - "op" : "Multiply", - "outputs" : ["Multiply_27089_0"] - }, - { - "inputs" : [ "Multiply_27089", "Reshape_27097" ], - "name" : "Dot_27098", - "op" : "Dot", - "outputs" : ["Dot_27098_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27089"], - "name" : "Reshape_27090", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27090_0"] - }, - { - "inputs" : [ "Dot_27098", "Broadcast_27099" ], - "name" : "Add_27100", - "op" : "Add", - "outputs" : ["Add_27100_0"] - }, - { - "inputs" : [ "Add_27096", "Add_27100" ], - "name" : "Add_27101", - "op" : "Add", - "outputs" : ["Add_27101_0"] - }, - { - "inputs" : ["Add_27101"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27102", - "op" : "Slice", - "outputs" : ["Slice_27102_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27101"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27109", - "op" : "Slice", - "outputs" : ["Slice_27109_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27101"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27117", - "op" : "Slice", - "outputs" : ["Slice_27117_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27101"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27124", - "op" : "Slice", - "outputs" : ["Slice_27124_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27102"], - "name" : "Negative_27105", - "op" : "Negative", - "outputs" : ["Negative_27105_0"] - }, - { - "inputs" : ["Slice_27109"], - "name" : "Negative_27112", - "op" : "Negative", - "outputs" : ["Negative_27112_0"] - }, - { - "inputs" : ["Slice_27117"], - "name" : "Negative_27120", - "op" : "Negative", - "outputs" : ["Negative_27120_0"] - }, - { - "inputs" : ["Slice_27124"], - "name" : "Tanh_27125", - "op" : "Tanh", - "outputs" : ["Tanh_27125_0"] - }, - { - "inputs" : ["Negative_27105"], - "name" : "Exp_27106", - "op" : "Exp", - "outputs" : ["Exp_27106_0"] - }, - { - "inputs" : ["Negative_27112"], - "name" : "Exp_27113", - "op" : "Exp", - "outputs" : ["Exp_27113_0"] - }, - { - "inputs" : ["Negative_27120"], - "name" : "Exp_27121", - "op" : "Exp", - "outputs" : ["Exp_27121_0"] - }, - { - "inputs" : [ "Broadcast_27104", "Exp_27106" ], - "name" : "Add_27107", - "op" : "Add", - "outputs" : ["Add_27107_0"] - }, - { - "inputs" : [ "Broadcast_27111", "Exp_27113" ], - "name" : "Add_27114", - "op" : "Add", - "outputs" : ["Add_27114_0"] - }, - { - "inputs" : [ "Broadcast_27119", "Exp_27121" ], - "name" : "Add_27122", - "op" : "Add", - "outputs" : ["Add_27122_0"] - }, - { - "inputs" : [ "Broadcast_27104", "Add_27107" ], - "name" : "Divide_27108", - "op" : "Divide", - "outputs" : ["Divide_27108_0"] - }, - { - "inputs" : [ "Broadcast_27111", "Add_27114" ], - "name" : "Divide_27115", - "op" : "Divide", - "outputs" : ["Divide_27115_0"] - }, - { - "inputs" : [ "Broadcast_27119", "Add_27122" ], - "name" : "Divide_27123", - "op" : "Divide", - "outputs" : ["Divide_27123_0"] - }, - { - "inputs" : [ "Divide_27115", "Add_27087" ], - "name" : "Multiply_27116", - "op" : "Multiply", - "outputs" : ["Multiply_27116_0"] - }, - { - "inputs" : [ "Divide_27123", "Tanh_27125" ], - "name" : "Multiply_27126", - "op" : "Multiply", - "outputs" : ["Multiply_27126_0"] - }, - { - "inputs" : [ "Multiply_27116", "Multiply_27126" ], - "name" : "Add_27127", - "op" : "Add", - "outputs" : ["Add_27127_0"] - }, - { - "inputs" : ["Add_27127"], - "name" : "Tanh_27128", - "op" : "Tanh", - "outputs" : ["Tanh_27128_0"] - }, - { - "inputs" : [ "Divide_27108", "Tanh_27128" ], - "name" : "Multiply_27129", - "op" : "Multiply", - "outputs" : ["Multiply_27129_0"] - }, - { - "inputs" : [ "Multiply_27129", "Reshape_27137" ], - "name" : "Dot_27138", - "op" : "Dot", - "outputs" : ["Dot_27138_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27129"], - "name" : "Reshape_27130", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27130_0"] - }, - { - "inputs" : [ "Dot_27138", "Broadcast_27139" ], - "name" : "Add_27140", - "op" : "Add", - "outputs" : ["Add_27140_0"] - }, - { - "inputs" : [ "Add_27136", "Add_27140" ], - "name" : "Add_27141", - "op" : "Add", - "outputs" : ["Add_27141_0"] - }, - { - "inputs" : ["Add_27141"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27142", - "op" : "Slice", - "outputs" : ["Slice_27142_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27141"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27149", - "op" : "Slice", - "outputs" : ["Slice_27149_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27141"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27157", - "op" : "Slice", - "outputs" : ["Slice_27157_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27141"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27164", - "op" : "Slice", - "outputs" : ["Slice_27164_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27142"], - "name" : "Negative_27145", - "op" : "Negative", - "outputs" : ["Negative_27145_0"] - }, - { - "inputs" : ["Slice_27149"], - "name" : "Negative_27152", - "op" : "Negative", - "outputs" : ["Negative_27152_0"] - }, - { - "inputs" : ["Slice_27157"], - "name" : "Negative_27160", - "op" : "Negative", - "outputs" : ["Negative_27160_0"] - }, - { - "inputs" : ["Slice_27164"], - "name" : "Tanh_27165", - "op" : "Tanh", - "outputs" : ["Tanh_27165_0"] - }, - { - "inputs" : ["Negative_27145"], - "name" : "Exp_27146", - "op" : "Exp", - "outputs" : ["Exp_27146_0"] - }, - { - "inputs" : ["Negative_27152"], - "name" : "Exp_27153", - "op" : "Exp", - "outputs" : ["Exp_27153_0"] - }, - { - "inputs" : ["Negative_27160"], - "name" : "Exp_27161", - "op" : "Exp", - "outputs" : ["Exp_27161_0"] - }, - { - "inputs" : [ "Broadcast_27144", "Exp_27146" ], - "name" : "Add_27147", - "op" : "Add", - "outputs" : ["Add_27147_0"] - }, - { - "inputs" : [ "Broadcast_27151", "Exp_27153" ], - "name" : "Add_27154", - "op" : "Add", - "outputs" : ["Add_27154_0"] - }, - { - "inputs" : [ "Broadcast_27159", "Exp_27161" ], - "name" : "Add_27162", - "op" : "Add", - "outputs" : ["Add_27162_0"] - }, - { - "inputs" : [ "Broadcast_27144", "Add_27147" ], - "name" : "Divide_27148", - "op" : "Divide", - "outputs" : ["Divide_27148_0"] - }, - { - "inputs" : [ "Broadcast_27151", "Add_27154" ], - "name" : "Divide_27155", - "op" : "Divide", - "outputs" : ["Divide_27155_0"] - }, - { - "inputs" : [ "Broadcast_27159", "Add_27162" ], - "name" : "Divide_27163", - "op" : "Divide", - "outputs" : ["Divide_27163_0"] - }, - { - "inputs" : [ "Divide_27155", "Add_27127" ], - "name" : "Multiply_27156", - "op" : "Multiply", - "outputs" : ["Multiply_27156_0"] - }, - { - "inputs" : [ "Divide_27163", "Tanh_27165" ], - "name" : "Multiply_27166", - "op" : "Multiply", - "outputs" : ["Multiply_27166_0"] - }, - { - "inputs" : [ "Multiply_27156", "Multiply_27166" ], - "name" : "Add_27167", - "op" : "Add", - "outputs" : ["Add_27167_0"] - }, - { - "inputs" : ["Add_27167"], - "name" : "Tanh_27168", - "op" : "Tanh", - "outputs" : ["Tanh_27168_0"] - }, - { - "inputs" : [ "Divide_27148", "Tanh_27168" ], - "name" : "Multiply_27169", - "op" : "Multiply", - "outputs" : ["Multiply_27169_0"] - }, - { - "inputs" : [ "Multiply_27169", "Reshape_27177" ], - "name" : "Dot_27178", - "op" : "Dot", - "outputs" : ["Dot_27178_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27169"], - "name" : "Reshape_27170", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27170_0"] - }, - { - "inputs" : [ "Dot_27178", "Broadcast_27179" ], - "name" : "Add_27180", - "op" : "Add", - "outputs" : ["Add_27180_0"] - }, - { - "inputs" : [ "Add_27176", "Add_27180" ], - "name" : "Add_27181", - "op" : "Add", - "outputs" : ["Add_27181_0"] - }, - { - "inputs" : ["Add_27181"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27182", - "op" : "Slice", - "outputs" : ["Slice_27182_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27181"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27189", - "op" : "Slice", - "outputs" : ["Slice_27189_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27181"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27204", - "op" : "Slice", - "outputs" : ["Slice_27204_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27181"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27197", - "op" : "Slice", - "outputs" : ["Slice_27197_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_27182"], - "name" : "Negative_27185", - "op" : "Negative", - "outputs" : ["Negative_27185_0"] - }, - { - "inputs" : ["Slice_27189"], - "name" : "Negative_27192", - "op" : "Negative", - "outputs" : ["Negative_27192_0"] - }, - { - "inputs" : ["Slice_27204"], - "name" : "Tanh_27205", - "op" : "Tanh", - "outputs" : ["Tanh_27205_0"] - }, - { - "inputs" : ["Slice_27197"], - "name" : "Negative_27200", - "op" : "Negative", - "outputs" : ["Negative_27200_0"] - }, - { - "inputs" : ["Negative_27185"], - "name" : "Exp_27186", - "op" : "Exp", - "outputs" : ["Exp_27186_0"] - }, - { - "inputs" : ["Negative_27192"], - "name" : "Exp_27193", - "op" : "Exp", - "outputs" : ["Exp_27193_0"] - }, - { - "inputs" : ["Negative_27200"], - "name" : "Exp_27201", - "op" : "Exp", - "outputs" : ["Exp_27201_0"] - }, - { - "inputs" : [ "Broadcast_27184", "Exp_27186" ], - "name" : "Add_27187", - "op" : "Add", - "outputs" : ["Add_27187_0"] - }, - { - "inputs" : [ "Broadcast_27191", "Exp_27193" ], - "name" : "Add_27194", - "op" : "Add", - "outputs" : ["Add_27194_0"] - }, - { - "inputs" : [ "Broadcast_27199", "Exp_27201" ], - "name" : "Add_27202", - "op" : "Add", - "outputs" : ["Add_27202_0"] - }, - { - "inputs" : [ "Broadcast_27184", "Add_27187" ], - "name" : "Divide_27188", - "op" : "Divide", - "outputs" : ["Divide_27188_0"] - }, - { - "inputs" : [ "Broadcast_27191", "Add_27194" ], - "name" : "Divide_27195", - "op" : "Divide", - "outputs" : ["Divide_27195_0"] - }, - { - "inputs" : [ "Broadcast_27199", "Add_27202" ], - "name" : "Divide_27203", - "op" : "Divide", - "outputs" : ["Divide_27203_0"] - }, - { - "inputs" : [ "Divide_27195", "Add_27167" ], - "name" : "Multiply_27196", - "op" : "Multiply", - "outputs" : ["Multiply_27196_0"] - }, - { - "inputs" : [ "Divide_27203", "Tanh_27205" ], - "name" : "Multiply_27206", - "op" : "Multiply", - "outputs" : ["Multiply_27206_0"] - }, - { - "inputs" : [ "Multiply_27196", "Multiply_27206" ], - "name" : "Add_27207", - "op" : "Add", - "outputs" : ["Add_27207_0"] - }, - { - "inputs" : ["Add_27207"], - "name" : "Tanh_27208", - "op" : "Tanh", - "outputs" : ["Tanh_27208_0"] - }, - { - "inputs" : [ "Divide_27188", "Tanh_27208" ], - "name" : "Multiply_27209", - "op" : "Multiply", - "outputs" : ["Multiply_27209_0"] - }, - { - "inputs" : [ "Multiply_27209", "Reshape_27217" ], - "name" : "Dot_27218", - "op" : "Dot", - "outputs" : ["Dot_27218_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27209"], - "name" : "Reshape_27210", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27210_0"] - }, - { - "inputs" : [ "Dot_27218", "Broadcast_27219" ], - "name" : "Add_27220", - "op" : "Add", - "outputs" : ["Add_27220_0"] - }, - { - "inputs" : [ "Add_27216", "Add_27220" ], - "name" : "Add_27221", - "op" : "Add", - "outputs" : ["Add_27221_0"] - }, - { - "inputs" : ["Add_27221"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27222", - "op" : "Slice", - "outputs" : ["Slice_27222_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27221"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27229", - "op" : "Slice", - "outputs" : ["Slice_27229_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27221"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27237", - "op" : "Slice", - "outputs" : ["Slice_27237_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27221"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27244", - "op" : "Slice", - "outputs" : ["Slice_27244_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27222"], - "name" : "Negative_27225", - "op" : "Negative", - "outputs" : ["Negative_27225_0"] - }, - { - "inputs" : ["Slice_27229"], - "name" : "Negative_27232", - "op" : "Negative", - "outputs" : ["Negative_27232_0"] - }, - { - "inputs" : ["Slice_27237"], - "name" : "Negative_27240", - "op" : "Negative", - "outputs" : ["Negative_27240_0"] - }, - { - "inputs" : ["Slice_27244"], - "name" : "Tanh_27245", - "op" : "Tanh", - "outputs" : ["Tanh_27245_0"] - }, - { - "inputs" : ["Negative_27225"], - "name" : "Exp_27226", - "op" : "Exp", - "outputs" : ["Exp_27226_0"] - }, - { - "inputs" : ["Negative_27232"], - "name" : "Exp_27233", - "op" : "Exp", - "outputs" : ["Exp_27233_0"] - }, - { - "inputs" : ["Negative_27240"], - "name" : "Exp_27241", - "op" : "Exp", - "outputs" : ["Exp_27241_0"] - }, - { - "inputs" : [ "Broadcast_27224", "Exp_27226" ], - "name" : "Add_27227", - "op" : "Add", - "outputs" : ["Add_27227_0"] - }, - { - "inputs" : [ "Broadcast_27231", "Exp_27233" ], - "name" : "Add_27234", - "op" : "Add", - "outputs" : ["Add_27234_0"] - }, - { - "inputs" : [ "Broadcast_27239", "Exp_27241" ], - "name" : "Add_27242", - "op" : "Add", - "outputs" : ["Add_27242_0"] - }, - { - "inputs" : [ "Broadcast_27224", "Add_27227" ], - "name" : "Divide_27228", - "op" : "Divide", - "outputs" : ["Divide_27228_0"] - }, - { - "inputs" : [ "Broadcast_27231", "Add_27234" ], - "name" : "Divide_27235", - "op" : "Divide", - "outputs" : ["Divide_27235_0"] - }, - { - "inputs" : [ "Broadcast_27239", "Add_27242" ], - "name" : "Divide_27243", - "op" : "Divide", - "outputs" : ["Divide_27243_0"] - }, - { - "inputs" : [ "Divide_27235", "Add_27207" ], - "name" : "Multiply_27236", - "op" : "Multiply", - "outputs" : ["Multiply_27236_0"] - }, - { - "inputs" : [ "Divide_27243", "Tanh_27245" ], - "name" : "Multiply_27246", - "op" : "Multiply", - "outputs" : ["Multiply_27246_0"] - }, - { - "inputs" : [ "Multiply_27236", "Multiply_27246" ], - "name" : "Add_27247", - "op" : "Add", - "outputs" : ["Add_27247_0"] - }, - { - "inputs" : ["Add_27247"], - "name" : "Tanh_27248", - "op" : "Tanh", - "outputs" : ["Tanh_27248_0"] - }, - { - "inputs" : [ "Divide_27228", "Tanh_27248" ], - "name" : "Multiply_27249", - "op" : "Multiply", - "outputs" : ["Multiply_27249_0"] - }, - { - "inputs" : [ "Multiply_27249", "Reshape_27257" ], - "name" : "Dot_27258", - "op" : "Dot", - "outputs" : ["Dot_27258_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27249"], - "name" : "Reshape_27250", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27250_0"] - }, - { - "inputs" : [ "Dot_27258", "Broadcast_27259" ], - "name" : "Add_27260", - "op" : "Add", - "outputs" : ["Add_27260_0"] - }, - { - "inputs" : [ "Add_27256", "Add_27260" ], - "name" : "Add_27261", - "op" : "Add", - "outputs" : ["Add_27261_0"] - }, - { - "inputs" : ["Add_27261"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27262", - "op" : "Slice", - "outputs" : ["Slice_27262_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27261"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27269", - "op" : "Slice", - "outputs" : ["Slice_27269_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27261"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27284", - "op" : "Slice", - "outputs" : ["Slice_27284_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27261"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27277", - "op" : "Slice", - "outputs" : ["Slice_27277_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_27262"], - "name" : "Negative_27265", - "op" : "Negative", - "outputs" : ["Negative_27265_0"] - }, - { - "inputs" : ["Slice_27269"], - "name" : "Negative_27272", - "op" : "Negative", - "outputs" : ["Negative_27272_0"] - }, - { - "inputs" : ["Slice_27284"], - "name" : "Tanh_27285", - "op" : "Tanh", - "outputs" : ["Tanh_27285_0"] - }, - { - "inputs" : ["Slice_27277"], - "name" : "Negative_27280", - "op" : "Negative", - "outputs" : ["Negative_27280_0"] - }, - { - "inputs" : ["Negative_27265"], - "name" : "Exp_27266", - "op" : "Exp", - "outputs" : ["Exp_27266_0"] - }, - { - "inputs" : ["Negative_27272"], - "name" : "Exp_27273", - "op" : "Exp", - "outputs" : ["Exp_27273_0"] - }, - { - "inputs" : ["Negative_27280"], - "name" : "Exp_27281", - "op" : "Exp", - "outputs" : ["Exp_27281_0"] - }, - { - "inputs" : [ "Broadcast_27264", "Exp_27266" ], - "name" : "Add_27267", - "op" : "Add", - "outputs" : ["Add_27267_0"] - }, - { - "inputs" : [ "Broadcast_27271", "Exp_27273" ], - "name" : "Add_27274", - "op" : "Add", - "outputs" : ["Add_27274_0"] - }, - { - "inputs" : [ "Broadcast_27279", "Exp_27281" ], - "name" : "Add_27282", - "op" : "Add", - "outputs" : ["Add_27282_0"] - }, - { - "inputs" : [ "Broadcast_27264", "Add_27267" ], - "name" : "Divide_27268", - "op" : "Divide", - "outputs" : ["Divide_27268_0"] - }, - { - "inputs" : [ "Broadcast_27271", "Add_27274" ], - "name" : "Divide_27275", - "op" : "Divide", - "outputs" : ["Divide_27275_0"] - }, - { - "inputs" : [ "Broadcast_27279", "Add_27282" ], - "name" : "Divide_27283", - "op" : "Divide", - "outputs" : ["Divide_27283_0"] - }, - { - "inputs" : [ "Divide_27275", "Add_27247" ], - "name" : "Multiply_27276", - "op" : "Multiply", - "outputs" : ["Multiply_27276_0"] - }, - { - "inputs" : [ "Divide_27283", "Tanh_27285" ], - "name" : "Multiply_27286", - "op" : "Multiply", - "outputs" : ["Multiply_27286_0"] - }, - { - "inputs" : [ "Multiply_27276", "Multiply_27286" ], - "name" : "Add_27287", - "op" : "Add", - "outputs" : ["Add_27287_0"] - }, - { - "inputs" : ["Add_27287"], - "name" : "Tanh_27288", - "op" : "Tanh", - "outputs" : ["Tanh_27288_0"] - }, - { - "inputs" : [ "Divide_27268", "Tanh_27288" ], - "name" : "Multiply_27289", - "op" : "Multiply", - "outputs" : ["Multiply_27289_0"] - }, - { - "inputs" : [ "Multiply_27289", "Reshape_27297" ], - "name" : "Dot_27298", - "op" : "Dot", - "outputs" : ["Dot_27298_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27289"], - "name" : "Reshape_27290", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27290_0"] - }, - { - "inputs" : [ "Dot_27298", "Broadcast_27299" ], - "name" : "Add_27300", - "op" : "Add", - "outputs" : ["Add_27300_0"] - }, - { - "inputs" : [ "Add_27296", "Add_27300" ], - "name" : "Add_27301", - "op" : "Add", - "outputs" : ["Add_27301_0"] - }, - { - "inputs" : ["Add_27301"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27302", - "op" : "Slice", - "outputs" : ["Slice_27302_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27301"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27317", - "op" : "Slice", - "outputs" : ["Slice_27317_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27301"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27309", - "op" : "Slice", - "outputs" : ["Slice_27309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27301"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27324", - "op" : "Slice", - "outputs" : ["Slice_27324_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27302"], - "name" : "Negative_27305", - "op" : "Negative", - "outputs" : ["Negative_27305_0"] - }, - { - "inputs" : ["Slice_27317"], - "name" : "Negative_27320", - "op" : "Negative", - "outputs" : ["Negative_27320_0"] - }, - { - "inputs" : ["Slice_27309"], - "name" : "Negative_27312", - "op" : "Negative", - "outputs" : ["Negative_27312_0"] - }, - { - "inputs" : ["Slice_27324"], - "name" : "Tanh_27325", - "op" : "Tanh", - "outputs" : ["Tanh_27325_0"] - }, - { - "inputs" : ["Negative_27305"], - "name" : "Exp_27306", - "op" : "Exp", - "outputs" : ["Exp_27306_0"] - }, - { - "inputs" : ["Negative_27320"], - "name" : "Exp_27321", - "op" : "Exp", - "outputs" : ["Exp_27321_0"] - }, - { - "inputs" : ["Negative_27312"], - "name" : "Exp_27313", - "op" : "Exp", - "outputs" : ["Exp_27313_0"] - }, - { - "inputs" : [ "Broadcast_27304", "Exp_27306" ], - "name" : "Add_27307", - "op" : "Add", - "outputs" : ["Add_27307_0"] - }, - { - "inputs" : [ "Broadcast_27319", "Exp_27321" ], - "name" : "Add_27322", - "op" : "Add", - "outputs" : ["Add_27322_0"] - }, - { - "inputs" : [ "Broadcast_27311", "Exp_27313" ], - "name" : "Add_27314", - "op" : "Add", - "outputs" : ["Add_27314_0"] - }, - { - "inputs" : [ "Broadcast_27304", "Add_27307" ], - "name" : "Divide_27308", - "op" : "Divide", - "outputs" : ["Divide_27308_0"] - }, - { - "inputs" : [ "Broadcast_27319", "Add_27322" ], - "name" : "Divide_27323", - "op" : "Divide", - "outputs" : ["Divide_27323_0"] - }, - { - "inputs" : [ "Broadcast_27311", "Add_27314" ], - "name" : "Divide_27315", - "op" : "Divide", - "outputs" : ["Divide_27315_0"] - }, - { - "inputs" : [ "Divide_27323", "Tanh_27325" ], - "name" : "Multiply_27326", - "op" : "Multiply", - "outputs" : ["Multiply_27326_0"] - }, - { - "inputs" : [ "Divide_27315", "Add_27287" ], - "name" : "Multiply_27316", - "op" : "Multiply", - "outputs" : ["Multiply_27316_0"] - }, - { - "inputs" : [ "Multiply_27316", "Multiply_27326" ], - "name" : "Add_27327", - "op" : "Add", - "outputs" : ["Add_27327_0"] - }, - { - "inputs" : ["Add_27327"], - "name" : "Tanh_27328", - "op" : "Tanh", - "outputs" : ["Tanh_27328_0"] - }, - { - "inputs" : [ "Divide_27308", "Tanh_27328" ], - "name" : "Multiply_27329", - "op" : "Multiply", - "outputs" : ["Multiply_27329_0"] - }, - { - "inputs" : [ "Multiply_27329", "Reshape_27337" ], - "name" : "Dot_27338", - "op" : "Dot", - "outputs" : ["Dot_27338_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27329"], - "name" : "Reshape_27330", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27330_0"] - }, - { - "inputs" : [ "Dot_27338", "Broadcast_27339" ], - "name" : "Add_27340", - "op" : "Add", - "outputs" : ["Add_27340_0"] - }, - { - "inputs" : [ "Add_27336", "Add_27340" ], - "name" : "Add_27341", - "op" : "Add", - "outputs" : ["Add_27341_0"] - }, - { - "inputs" : ["Add_27341"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27342", - "op" : "Slice", - "outputs" : ["Slice_27342_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27341"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27349", - "op" : "Slice", - "outputs" : ["Slice_27349_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27341"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27357", - "op" : "Slice", - "outputs" : ["Slice_27357_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27341"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27364", - "op" : "Slice", - "outputs" : ["Slice_27364_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27342"], - "name" : "Negative_27345", - "op" : "Negative", - "outputs" : ["Negative_27345_0"] - }, - { - "inputs" : ["Slice_27349"], - "name" : "Negative_27352", - "op" : "Negative", - "outputs" : ["Negative_27352_0"] - }, - { - "inputs" : ["Slice_27357"], - "name" : "Negative_27360", - "op" : "Negative", - "outputs" : ["Negative_27360_0"] - }, - { - "inputs" : ["Slice_27364"], - "name" : "Tanh_27365", - "op" : "Tanh", - "outputs" : ["Tanh_27365_0"] - }, - { - "inputs" : ["Negative_27345"], - "name" : "Exp_27346", - "op" : "Exp", - "outputs" : ["Exp_27346_0"] - }, - { - "inputs" : ["Negative_27352"], - "name" : "Exp_27353", - "op" : "Exp", - "outputs" : ["Exp_27353_0"] - }, - { - "inputs" : ["Negative_27360"], - "name" : "Exp_27361", - "op" : "Exp", - "outputs" : ["Exp_27361_0"] - }, - { - "inputs" : [ "Broadcast_27344", "Exp_27346" ], - "name" : "Add_27347", - "op" : "Add", - "outputs" : ["Add_27347_0"] - }, - { - "inputs" : [ "Broadcast_27351", "Exp_27353" ], - "name" : "Add_27354", - "op" : "Add", - "outputs" : ["Add_27354_0"] - }, - { - "inputs" : [ "Broadcast_27359", "Exp_27361" ], - "name" : "Add_27362", - "op" : "Add", - "outputs" : ["Add_27362_0"] - }, - { - "inputs" : [ "Broadcast_27344", "Add_27347" ], - "name" : "Divide_27348", - "op" : "Divide", - "outputs" : ["Divide_27348_0"] - }, - { - "inputs" : [ "Broadcast_27351", "Add_27354" ], - "name" : "Divide_27355", - "op" : "Divide", - "outputs" : ["Divide_27355_0"] - }, - { - "inputs" : [ "Broadcast_27359", "Add_27362" ], - "name" : "Divide_27363", - "op" : "Divide", - "outputs" : ["Divide_27363_0"] - }, - { - "inputs" : [ "Divide_27355", "Add_27327" ], - "name" : "Multiply_27356", - "op" : "Multiply", - "outputs" : ["Multiply_27356_0"] - }, - { - "inputs" : [ "Divide_27363", "Tanh_27365" ], - "name" : "Multiply_27366", - "op" : "Multiply", - "outputs" : ["Multiply_27366_0"] - }, - { - "inputs" : [ "Multiply_27356", "Multiply_27366" ], - "name" : "Add_27367", - "op" : "Add", - "outputs" : ["Add_27367_0"] - }, - { - "inputs" : ["Add_27367"], - "name" : "Tanh_27368", - "op" : "Tanh", - "outputs" : ["Tanh_27368_0"] - }, - { - "inputs" : [ "Divide_27348", "Tanh_27368" ], - "name" : "Multiply_27369", - "op" : "Multiply", - "outputs" : ["Multiply_27369_0"] - }, - { - "inputs" : [ "Multiply_27369", "Reshape_27377" ], - "name" : "Dot_27378", - "op" : "Dot", - "outputs" : ["Dot_27378_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27369"], - "name" : "Reshape_27370", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27370_0"] - }, - { - "inputs" : [ "Dot_27378", "Broadcast_27379" ], - "name" : "Add_27380", - "op" : "Add", - "outputs" : ["Add_27380_0"] - }, - { - "inputs" : [ "Add_27376", "Add_27380" ], - "name" : "Add_27381", - "op" : "Add", - "outputs" : ["Add_27381_0"] - }, - { - "inputs" : ["Add_27381"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27382", - "op" : "Slice", - "outputs" : ["Slice_27382_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27381"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27389", - "op" : "Slice", - "outputs" : ["Slice_27389_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27381"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27397", - "op" : "Slice", - "outputs" : ["Slice_27397_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27381"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27404", - "op" : "Slice", - "outputs" : ["Slice_27404_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27382"], - "name" : "Negative_27385", - "op" : "Negative", - "outputs" : ["Negative_27385_0"] - }, - { - "inputs" : ["Slice_27389"], - "name" : "Negative_27392", - "op" : "Negative", - "outputs" : ["Negative_27392_0"] - }, - { - "inputs" : ["Slice_27397"], - "name" : "Negative_27400", - "op" : "Negative", - "outputs" : ["Negative_27400_0"] - }, - { - "inputs" : ["Slice_27404"], - "name" : "Tanh_27405", - "op" : "Tanh", - "outputs" : ["Tanh_27405_0"] - }, - { - "inputs" : ["Negative_27385"], - "name" : "Exp_27386", - "op" : "Exp", - "outputs" : ["Exp_27386_0"] - }, - { - "inputs" : ["Negative_27392"], - "name" : "Exp_27393", - "op" : "Exp", - "outputs" : ["Exp_27393_0"] - }, - { - "inputs" : ["Negative_27400"], - "name" : "Exp_27401", - "op" : "Exp", - "outputs" : ["Exp_27401_0"] - }, - { - "inputs" : [ "Broadcast_27384", "Exp_27386" ], - "name" : "Add_27387", - "op" : "Add", - "outputs" : ["Add_27387_0"] - }, - { - "inputs" : [ "Broadcast_27391", "Exp_27393" ], - "name" : "Add_27394", - "op" : "Add", - "outputs" : ["Add_27394_0"] - }, - { - "inputs" : [ "Broadcast_27399", "Exp_27401" ], - "name" : "Add_27402", - "op" : "Add", - "outputs" : ["Add_27402_0"] - }, - { - "inputs" : [ "Broadcast_27384", "Add_27387" ], - "name" : "Divide_27388", - "op" : "Divide", - "outputs" : ["Divide_27388_0"] - }, - { - "inputs" : [ "Broadcast_27391", "Add_27394" ], - "name" : "Divide_27395", - "op" : "Divide", - "outputs" : ["Divide_27395_0"] - }, - { - "inputs" : [ "Broadcast_27399", "Add_27402" ], - "name" : "Divide_27403", - "op" : "Divide", - "outputs" : ["Divide_27403_0"] - }, - { - "inputs" : [ "Divide_27395", "Add_27367" ], - "name" : "Multiply_27396", - "op" : "Multiply", - "outputs" : ["Multiply_27396_0"] - }, - { - "inputs" : [ "Divide_27403", "Tanh_27405" ], - "name" : "Multiply_27406", - "op" : "Multiply", - "outputs" : ["Multiply_27406_0"] - }, - { - "inputs" : [ "Multiply_27396", "Multiply_27406" ], - "name" : "Add_27407", - "op" : "Add", - "outputs" : ["Add_27407_0"] - }, - { - "inputs" : ["Add_27407"], - "name" : "Tanh_27408", - "op" : "Tanh", - "outputs" : ["Tanh_27408_0"] - }, - { - "inputs" : [ "Divide_27388", "Tanh_27408" ], - "name" : "Multiply_27409", - "op" : "Multiply", - "outputs" : ["Multiply_27409_0"] - }, - { - "inputs" : [ "Multiply_27409", "Reshape_27417" ], - "name" : "Dot_27418", - "op" : "Dot", - "outputs" : ["Dot_27418_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27409"], - "name" : "Reshape_27410", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27410_0"] - }, - { - "inputs" : [ "Dot_27418", "Broadcast_27419" ], - "name" : "Add_27420", - "op" : "Add", - "outputs" : ["Add_27420_0"] - }, - { - "inputs" : [ "Add_27416", "Add_27420" ], - "name" : "Add_27421", - "op" : "Add", - "outputs" : ["Add_27421_0"] - }, - { - "inputs" : ["Add_27421"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27422", - "op" : "Slice", - "outputs" : ["Slice_27422_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27421"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27429", - "op" : "Slice", - "outputs" : ["Slice_27429_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27421"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27437", - "op" : "Slice", - "outputs" : ["Slice_27437_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27421"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27444", - "op" : "Slice", - "outputs" : ["Slice_27444_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27422"], - "name" : "Negative_27425", - "op" : "Negative", - "outputs" : ["Negative_27425_0"] - }, - { - "inputs" : ["Slice_27429"], - "name" : "Negative_27432", - "op" : "Negative", - "outputs" : ["Negative_27432_0"] - }, - { - "inputs" : ["Slice_27437"], - "name" : "Negative_27440", - "op" : "Negative", - "outputs" : ["Negative_27440_0"] - }, - { - "inputs" : ["Slice_27444"], - "name" : "Tanh_27445", - "op" : "Tanh", - "outputs" : ["Tanh_27445_0"] - }, - { - "inputs" : ["Negative_27425"], - "name" : "Exp_27426", - "op" : "Exp", - "outputs" : ["Exp_27426_0"] - }, - { - "inputs" : ["Negative_27432"], - "name" : "Exp_27433", - "op" : "Exp", - "outputs" : ["Exp_27433_0"] - }, - { - "inputs" : ["Negative_27440"], - "name" : "Exp_27441", - "op" : "Exp", - "outputs" : ["Exp_27441_0"] - }, - { - "inputs" : [ "Broadcast_27424", "Exp_27426" ], - "name" : "Add_27427", - "op" : "Add", - "outputs" : ["Add_27427_0"] - }, - { - "inputs" : [ "Broadcast_27431", "Exp_27433" ], - "name" : "Add_27434", - "op" : "Add", - "outputs" : ["Add_27434_0"] - }, - { - "inputs" : [ "Broadcast_27439", "Exp_27441" ], - "name" : "Add_27442", - "op" : "Add", - "outputs" : ["Add_27442_0"] - }, - { - "inputs" : [ "Broadcast_27424", "Add_27427" ], - "name" : "Divide_27428", - "op" : "Divide", - "outputs" : ["Divide_27428_0"] - }, - { - "inputs" : [ "Broadcast_27431", "Add_27434" ], - "name" : "Divide_27435", - "op" : "Divide", - "outputs" : ["Divide_27435_0"] - }, - { - "inputs" : [ "Broadcast_27439", "Add_27442" ], - "name" : "Divide_27443", - "op" : "Divide", - "outputs" : ["Divide_27443_0"] - }, - { - "inputs" : [ "Divide_27435", "Add_27407" ], - "name" : "Multiply_27436", - "op" : "Multiply", - "outputs" : ["Multiply_27436_0"] - }, - { - "inputs" : [ "Divide_27443", "Tanh_27445" ], - "name" : "Multiply_27446", - "op" : "Multiply", - "outputs" : ["Multiply_27446_0"] - }, - { - "inputs" : [ "Multiply_27436", "Multiply_27446" ], - "name" : "Add_27447", - "op" : "Add", - "outputs" : ["Add_27447_0"] - }, - { - "inputs" : ["Add_27447"], - "name" : "Tanh_27448", - "op" : "Tanh", - "outputs" : ["Tanh_27448_0"] - }, - { - "inputs" : [ "Divide_27428", "Tanh_27448" ], - "name" : "Multiply_27449", - "op" : "Multiply", - "outputs" : ["Multiply_27449_0"] - }, - { - "inputs" : [ "Multiply_27449", "Reshape_27457" ], - "name" : "Dot_27458", - "op" : "Dot", - "outputs" : ["Dot_27458_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27449"], - "name" : "Reshape_27450", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27450_0"] - }, - { - "inputs" : [ "Dot_27458", "Broadcast_27459" ], - "name" : "Add_27460", - "op" : "Add", - "outputs" : ["Add_27460_0"] - }, - { - "inputs" : [ "Add_27456", "Add_27460" ], - "name" : "Add_27461", - "op" : "Add", - "outputs" : ["Add_27461_0"] - }, - { - "inputs" : ["Add_27461"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27462", - "op" : "Slice", - "outputs" : ["Slice_27462_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27461"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27469", - "op" : "Slice", - "outputs" : ["Slice_27469_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27461"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27477", - "op" : "Slice", - "outputs" : ["Slice_27477_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27461"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27484", - "op" : "Slice", - "outputs" : ["Slice_27484_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27462"], - "name" : "Negative_27465", - "op" : "Negative", - "outputs" : ["Negative_27465_0"] - }, - { - "inputs" : ["Slice_27469"], - "name" : "Negative_27472", - "op" : "Negative", - "outputs" : ["Negative_27472_0"] - }, - { - "inputs" : ["Slice_27477"], - "name" : "Negative_27480", - "op" : "Negative", - "outputs" : ["Negative_27480_0"] - }, - { - "inputs" : ["Slice_27484"], - "name" : "Tanh_27485", - "op" : "Tanh", - "outputs" : ["Tanh_27485_0"] - }, - { - "inputs" : ["Negative_27465"], - "name" : "Exp_27466", - "op" : "Exp", - "outputs" : ["Exp_27466_0"] - }, - { - "inputs" : ["Negative_27472"], - "name" : "Exp_27473", - "op" : "Exp", - "outputs" : ["Exp_27473_0"] - }, - { - "inputs" : ["Negative_27480"], - "name" : "Exp_27481", - "op" : "Exp", - "outputs" : ["Exp_27481_0"] - }, - { - "inputs" : [ "Broadcast_27464", "Exp_27466" ], - "name" : "Add_27467", - "op" : "Add", - "outputs" : ["Add_27467_0"] - }, - { - "inputs" : [ "Broadcast_27471", "Exp_27473" ], - "name" : "Add_27474", - "op" : "Add", - "outputs" : ["Add_27474_0"] - }, - { - "inputs" : [ "Broadcast_27479", "Exp_27481" ], - "name" : "Add_27482", - "op" : "Add", - "outputs" : ["Add_27482_0"] - }, - { - "inputs" : [ "Broadcast_27464", "Add_27467" ], - "name" : "Divide_27468", - "op" : "Divide", - "outputs" : ["Divide_27468_0"] - }, - { - "inputs" : [ "Broadcast_27471", "Add_27474" ], - "name" : "Divide_27475", - "op" : "Divide", - "outputs" : ["Divide_27475_0"] - }, - { - "inputs" : [ "Broadcast_27479", "Add_27482" ], - "name" : "Divide_27483", - "op" : "Divide", - "outputs" : ["Divide_27483_0"] - }, - { - "inputs" : [ "Divide_27475", "Add_27447" ], - "name" : "Multiply_27476", - "op" : "Multiply", - "outputs" : ["Multiply_27476_0"] - }, - { - "inputs" : [ "Divide_27483", "Tanh_27485" ], - "name" : "Multiply_27486", - "op" : "Multiply", - "outputs" : ["Multiply_27486_0"] - }, - { - "inputs" : [ "Multiply_27476", "Multiply_27486" ], - "name" : "Add_27487", - "op" : "Add", - "outputs" : ["Add_27487_0"] - }, - { - "inputs" : ["Add_27487"], - "name" : "Tanh_27488", - "op" : "Tanh", - "outputs" : ["Tanh_27488_0"] - }, - { - "inputs" : [ "Divide_27468", "Tanh_27488" ], - "name" : "Multiply_27489", - "op" : "Multiply", - "outputs" : ["Multiply_27489_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27489"], - "name" : "Reshape_27490", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27490_0"] - }, - { - "inputs" : [ "Multiply_27489", "Reshape_27497" ], - "name" : "Dot_27498", - "op" : "Dot", - "outputs" : ["Dot_27498_0"] - }, - { - "inputs" : [ "Dot_27498", "Broadcast_27499" ], - "name" : "Add_27500", - "op" : "Add", - "outputs" : ["Add_27500_0"] - }, - { - "inputs" : [ "Add_27496", "Add_27500" ], - "name" : "Add_27501", - "op" : "Add", - "outputs" : ["Add_27501_0"] - }, - { - "inputs" : ["Add_27501"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27509", - "op" : "Slice", - "outputs" : ["Slice_27509_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27501"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27517", - "op" : "Slice", - "outputs" : ["Slice_27517_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27501"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27502", - "op" : "Slice", - "outputs" : ["Slice_27502_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27501"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27524", - "op" : "Slice", - "outputs" : ["Slice_27524_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27509"], - "name" : "Negative_27512", - "op" : "Negative", - "outputs" : ["Negative_27512_0"] - }, - { - "inputs" : ["Slice_27517"], - "name" : "Negative_27520", - "op" : "Negative", - "outputs" : ["Negative_27520_0"] - }, - { - "inputs" : ["Slice_27502"], - "name" : "Negative_27505", - "op" : "Negative", - "outputs" : ["Negative_27505_0"] - }, - { - "inputs" : ["Slice_27524"], - "name" : "Tanh_27525", - "op" : "Tanh", - "outputs" : ["Tanh_27525_0"] - }, - { - "inputs" : ["Negative_27512"], - "name" : "Exp_27513", - "op" : "Exp", - "outputs" : ["Exp_27513_0"] - }, - { - "inputs" : ["Negative_27520"], - "name" : "Exp_27521", - "op" : "Exp", - "outputs" : ["Exp_27521_0"] - }, - { - "inputs" : ["Negative_27505"], - "name" : "Exp_27506", - "op" : "Exp", - "outputs" : ["Exp_27506_0"] - }, - { - "inputs" : [ "Broadcast_27511", "Exp_27513" ], - "name" : "Add_27514", - "op" : "Add", - "outputs" : ["Add_27514_0"] - }, - { - "inputs" : [ "Broadcast_27519", "Exp_27521" ], - "name" : "Add_27522", - "op" : "Add", - "outputs" : ["Add_27522_0"] - }, - { - "inputs" : [ "Broadcast_27504", "Exp_27506" ], - "name" : "Add_27507", - "op" : "Add", - "outputs" : ["Add_27507_0"] - }, - { - "inputs" : [ "Broadcast_27511", "Add_27514" ], - "name" : "Divide_27515", - "op" : "Divide", - "outputs" : ["Divide_27515_0"] - }, - { - "inputs" : [ "Broadcast_27519", "Add_27522" ], - "name" : "Divide_27523", - "op" : "Divide", - "outputs" : ["Divide_27523_0"] - }, - { - "inputs" : [ "Broadcast_27504", "Add_27507" ], - "name" : "Divide_27508", - "op" : "Divide", - "outputs" : ["Divide_27508_0"] - }, - { - "inputs" : [ "Divide_27515", "Add_27487" ], - "name" : "Multiply_27516", - "op" : "Multiply", - "outputs" : ["Multiply_27516_0"] - }, - { - "inputs" : [ "Divide_27523", "Tanh_27525" ], - "name" : "Multiply_27526", - "op" : "Multiply", - "outputs" : ["Multiply_27526_0"] - }, - { - "inputs" : [ "Multiply_27516", "Multiply_27526" ], - "name" : "Add_27527", - "op" : "Add", - "outputs" : ["Add_27527_0"] - }, - { - "inputs" : ["Add_27527"], - "name" : "Tanh_27528", - "op" : "Tanh", - "outputs" : ["Tanh_27528_0"] - }, - { - "inputs" : [ "Divide_27508", "Tanh_27528" ], - "name" : "Multiply_27529", - "op" : "Multiply", - "outputs" : ["Multiply_27529_0"] - }, - { - "inputs" : [ "Multiply_27529", "Reshape_27537" ], - "name" : "Dot_27538", - "op" : "Dot", - "outputs" : ["Dot_27538_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27529"], - "name" : "Reshape_27530", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27530_0"] - }, - { - "inputs" : [ "Dot_27538", "Broadcast_27539" ], - "name" : "Add_27540", - "op" : "Add", - "outputs" : ["Add_27540_0"] - }, - { - "inputs" : [ "Add_27536", "Add_27540" ], - "name" : "Add_27541", - "op" : "Add", - "outputs" : ["Add_27541_0"] - }, - { - "inputs" : ["Add_27541"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27549", - "op" : "Slice", - "outputs" : ["Slice_27549_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27541"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27542", - "op" : "Slice", - "outputs" : ["Slice_27542_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27541"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27557", - "op" : "Slice", - "outputs" : ["Slice_27557_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27541"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27564", - "op" : "Slice", - "outputs" : ["Slice_27564_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27549"], - "name" : "Negative_27552", - "op" : "Negative", - "outputs" : ["Negative_27552_0"] - }, - { - "inputs" : ["Slice_27542"], - "name" : "Negative_27545", - "op" : "Negative", - "outputs" : ["Negative_27545_0"] - }, - { - "inputs" : ["Slice_27557"], - "name" : "Negative_27560", - "op" : "Negative", - "outputs" : ["Negative_27560_0"] - }, - { - "inputs" : ["Slice_27564"], - "name" : "Tanh_27565", - "op" : "Tanh", - "outputs" : ["Tanh_27565_0"] - }, - { - "inputs" : ["Negative_27552"], - "name" : "Exp_27553", - "op" : "Exp", - "outputs" : ["Exp_27553_0"] - }, - { - "inputs" : ["Negative_27545"], - "name" : "Exp_27546", - "op" : "Exp", - "outputs" : ["Exp_27546_0"] - }, - { - "inputs" : ["Negative_27560"], - "name" : "Exp_27561", - "op" : "Exp", - "outputs" : ["Exp_27561_0"] - }, - { - "inputs" : [ "Broadcast_27551", "Exp_27553" ], - "name" : "Add_27554", - "op" : "Add", - "outputs" : ["Add_27554_0"] - }, - { - "inputs" : [ "Broadcast_27544", "Exp_27546" ], - "name" : "Add_27547", - "op" : "Add", - "outputs" : ["Add_27547_0"] - }, - { - "inputs" : [ "Broadcast_27559", "Exp_27561" ], - "name" : "Add_27562", - "op" : "Add", - "outputs" : ["Add_27562_0"] - }, - { - "inputs" : [ "Broadcast_27551", "Add_27554" ], - "name" : "Divide_27555", - "op" : "Divide", - "outputs" : ["Divide_27555_0"] - }, - { - "inputs" : [ "Broadcast_27544", "Add_27547" ], - "name" : "Divide_27548", - "op" : "Divide", - "outputs" : ["Divide_27548_0"] - }, - { - "inputs" : [ "Broadcast_27559", "Add_27562" ], - "name" : "Divide_27563", - "op" : "Divide", - "outputs" : ["Divide_27563_0"] - }, - { - "inputs" : [ "Divide_27555", "Add_27527" ], - "name" : "Multiply_27556", - "op" : "Multiply", - "outputs" : ["Multiply_27556_0"] - }, - { - "inputs" : [ "Divide_27563", "Tanh_27565" ], - "name" : "Multiply_27566", - "op" : "Multiply", - "outputs" : ["Multiply_27566_0"] - }, - { - "inputs" : [ "Multiply_27556", "Multiply_27566" ], - "name" : "Add_27567", - "op" : "Add", - "outputs" : ["Add_27567_0"] - }, - { - "inputs" : ["Add_27567"], - "name" : "Tanh_27568", - "op" : "Tanh", - "outputs" : ["Tanh_27568_0"] - }, - { - "inputs" : [ "Divide_27548", "Tanh_27568" ], - "name" : "Multiply_27569", - "op" : "Multiply", - "outputs" : ["Multiply_27569_0"] - }, - { - "inputs" : [ "Multiply_27569", "Reshape_27577" ], - "name" : "Dot_27578", - "op" : "Dot", - "outputs" : ["Dot_27578_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27569"], - "name" : "Reshape_27570", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27570_0"] - }, - { - "inputs" : [ "Dot_27578", "Broadcast_27579" ], - "name" : "Add_27580", - "op" : "Add", - "outputs" : ["Add_27580_0"] - }, - { - "inputs" : [ "Add_27576", "Add_27580" ], - "name" : "Add_27581", - "op" : "Add", - "outputs" : ["Add_27581_0"] - }, - { - "inputs" : ["Add_27581"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27589", - "op" : "Slice", - "outputs" : ["Slice_27589_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27581"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27582", - "op" : "Slice", - "outputs" : ["Slice_27582_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27581"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27597", - "op" : "Slice", - "outputs" : ["Slice_27597_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27581"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27604", - "op" : "Slice", - "outputs" : ["Slice_27604_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27589"], - "name" : "Negative_27592", - "op" : "Negative", - "outputs" : ["Negative_27592_0"] - }, - { - "inputs" : ["Slice_27582"], - "name" : "Negative_27585", - "op" : "Negative", - "outputs" : ["Negative_27585_0"] - }, - { - "inputs" : ["Slice_27597"], - "name" : "Negative_27600", - "op" : "Negative", - "outputs" : ["Negative_27600_0"] - }, - { - "inputs" : ["Slice_27604"], - "name" : "Tanh_27605", - "op" : "Tanh", - "outputs" : ["Tanh_27605_0"] - }, - { - "inputs" : ["Negative_27592"], - "name" : "Exp_27593", - "op" : "Exp", - "outputs" : ["Exp_27593_0"] - }, - { - "inputs" : ["Negative_27585"], - "name" : "Exp_27586", - "op" : "Exp", - "outputs" : ["Exp_27586_0"] - }, - { - "inputs" : ["Negative_27600"], - "name" : "Exp_27601", - "op" : "Exp", - "outputs" : ["Exp_27601_0"] - }, - { - "inputs" : [ "Broadcast_27591", "Exp_27593" ], - "name" : "Add_27594", - "op" : "Add", - "outputs" : ["Add_27594_0"] - }, - { - "inputs" : [ "Broadcast_27584", "Exp_27586" ], - "name" : "Add_27587", - "op" : "Add", - "outputs" : ["Add_27587_0"] - }, - { - "inputs" : [ "Broadcast_27599", "Exp_27601" ], - "name" : "Add_27602", - "op" : "Add", - "outputs" : ["Add_27602_0"] - }, - { - "inputs" : [ "Broadcast_27591", "Add_27594" ], - "name" : "Divide_27595", - "op" : "Divide", - "outputs" : ["Divide_27595_0"] - }, - { - "inputs" : [ "Broadcast_27584", "Add_27587" ], - "name" : "Divide_27588", - "op" : "Divide", - "outputs" : ["Divide_27588_0"] - }, - { - "inputs" : [ "Broadcast_27599", "Add_27602" ], - "name" : "Divide_27603", - "op" : "Divide", - "outputs" : ["Divide_27603_0"] - }, - { - "inputs" : [ "Divide_27595", "Add_27567" ], - "name" : "Multiply_27596", - "op" : "Multiply", - "outputs" : ["Multiply_27596_0"] - }, - { - "inputs" : [ "Divide_27603", "Tanh_27605" ], - "name" : "Multiply_27606", - "op" : "Multiply", - "outputs" : ["Multiply_27606_0"] - }, - { - "inputs" : [ "Multiply_27596", "Multiply_27606" ], - "name" : "Add_27607", - "op" : "Add", - "outputs" : ["Add_27607_0"] - }, - { - "inputs" : ["Add_27607"], - "name" : "Tanh_27608", - "op" : "Tanh", - "outputs" : ["Tanh_27608_0"] - }, - { - "inputs" : [ "Divide_27588", "Tanh_27608" ], - "name" : "Multiply_27609", - "op" : "Multiply", - "outputs" : ["Multiply_27609_0"] - }, - { - "inputs" : [ "Multiply_27609", "Reshape_27617" ], - "name" : "Dot_27618", - "op" : "Dot", - "outputs" : ["Dot_27618_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27609"], - "name" : "Reshape_27610", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27610_0"] - }, - { - "inputs" : [ "Dot_27618", "Broadcast_27619" ], - "name" : "Add_27620", - "op" : "Add", - "outputs" : ["Add_27620_0"] - }, - { - "inputs" : [ "Add_27616", "Add_27620" ], - "name" : "Add_27621", - "op" : "Add", - "outputs" : ["Add_27621_0"] - }, - { - "inputs" : ["Add_27621"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27622", - "op" : "Slice", - "outputs" : ["Slice_27622_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27621"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27629", - "op" : "Slice", - "outputs" : ["Slice_27629_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27621"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27637", - "op" : "Slice", - "outputs" : ["Slice_27637_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27621"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27644", - "op" : "Slice", - "outputs" : ["Slice_27644_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27622"], - "name" : "Negative_27625", - "op" : "Negative", - "outputs" : ["Negative_27625_0"] - }, - { - "inputs" : ["Slice_27629"], - "name" : "Negative_27632", - "op" : "Negative", - "outputs" : ["Negative_27632_0"] - }, - { - "inputs" : ["Slice_27637"], - "name" : "Negative_27640", - "op" : "Negative", - "outputs" : ["Negative_27640_0"] - }, - { - "inputs" : ["Slice_27644"], - "name" : "Tanh_27645", - "op" : "Tanh", - "outputs" : ["Tanh_27645_0"] - }, - { - "inputs" : ["Negative_27625"], - "name" : "Exp_27626", - "op" : "Exp", - "outputs" : ["Exp_27626_0"] - }, - { - "inputs" : ["Negative_27632"], - "name" : "Exp_27633", - "op" : "Exp", - "outputs" : ["Exp_27633_0"] - }, - { - "inputs" : ["Negative_27640"], - "name" : "Exp_27641", - "op" : "Exp", - "outputs" : ["Exp_27641_0"] - }, - { - "inputs" : [ "Broadcast_27624", "Exp_27626" ], - "name" : "Add_27627", - "op" : "Add", - "outputs" : ["Add_27627_0"] - }, - { - "inputs" : [ "Broadcast_27631", "Exp_27633" ], - "name" : "Add_27634", - "op" : "Add", - "outputs" : ["Add_27634_0"] - }, - { - "inputs" : [ "Broadcast_27639", "Exp_27641" ], - "name" : "Add_27642", - "op" : "Add", - "outputs" : ["Add_27642_0"] - }, - { - "inputs" : [ "Broadcast_27624", "Add_27627" ], - "name" : "Divide_27628", - "op" : "Divide", - "outputs" : ["Divide_27628_0"] - }, - { - "inputs" : [ "Broadcast_27631", "Add_27634" ], - "name" : "Divide_27635", - "op" : "Divide", - "outputs" : ["Divide_27635_0"] - }, - { - "inputs" : [ "Broadcast_27639", "Add_27642" ], - "name" : "Divide_27643", - "op" : "Divide", - "outputs" : ["Divide_27643_0"] - }, - { - "inputs" : [ "Divide_27635", "Add_27607" ], - "name" : "Multiply_27636", - "op" : "Multiply", - "outputs" : ["Multiply_27636_0"] - }, - { - "inputs" : [ "Divide_27643", "Tanh_27645" ], - "name" : "Multiply_27646", - "op" : "Multiply", - "outputs" : ["Multiply_27646_0"] - }, - { - "inputs" : [ "Multiply_27636", "Multiply_27646" ], - "name" : "Add_27647", - "op" : "Add", - "outputs" : ["Add_27647_0"] - }, - { - "inputs" : ["Add_27647"], - "name" : "Tanh_27648", - "op" : "Tanh", - "outputs" : ["Tanh_27648_0"] - }, - { - "inputs" : [ "Divide_27628", "Tanh_27648" ], - "name" : "Multiply_27649", - "op" : "Multiply", - "outputs" : ["Multiply_27649_0"] - }, - { - "inputs" : [ "Multiply_27649", "Reshape_27657" ], - "name" : "Dot_27658", - "op" : "Dot", - "outputs" : ["Dot_27658_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27649"], - "name" : "Reshape_27650", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27650_0"] - }, - { - "inputs" : [ "Dot_27658", "Broadcast_27659" ], - "name" : "Add_27660", - "op" : "Add", - "outputs" : ["Add_27660_0"] - }, - { - "inputs" : [ "Add_27656", "Add_27660" ], - "name" : "Add_27661", - "op" : "Add", - "outputs" : ["Add_27661_0"] - }, - { - "inputs" : ["Add_27661"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27662", - "op" : "Slice", - "outputs" : ["Slice_27662_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27661"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27669", - "op" : "Slice", - "outputs" : ["Slice_27669_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27661"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27684", - "op" : "Slice", - "outputs" : ["Slice_27684_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27661"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27677", - "op" : "Slice", - "outputs" : ["Slice_27677_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_27662"], - "name" : "Negative_27665", - "op" : "Negative", - "outputs" : ["Negative_27665_0"] - }, - { - "inputs" : ["Slice_27669"], - "name" : "Negative_27672", - "op" : "Negative", - "outputs" : ["Negative_27672_0"] - }, - { - "inputs" : ["Slice_27684"], - "name" : "Tanh_27685", - "op" : "Tanh", - "outputs" : ["Tanh_27685_0"] - }, - { - "inputs" : ["Slice_27677"], - "name" : "Negative_27680", - "op" : "Negative", - "outputs" : ["Negative_27680_0"] - }, - { - "inputs" : ["Negative_27665"], - "name" : "Exp_27666", - "op" : "Exp", - "outputs" : ["Exp_27666_0"] - }, - { - "inputs" : ["Negative_27672"], - "name" : "Exp_27673", - "op" : "Exp", - "outputs" : ["Exp_27673_0"] - }, - { - "inputs" : ["Negative_27680"], - "name" : "Exp_27681", - "op" : "Exp", - "outputs" : ["Exp_27681_0"] - }, - { - "inputs" : [ "Broadcast_27664", "Exp_27666" ], - "name" : "Add_27667", - "op" : "Add", - "outputs" : ["Add_27667_0"] - }, - { - "inputs" : [ "Broadcast_27671", "Exp_27673" ], - "name" : "Add_27674", - "op" : "Add", - "outputs" : ["Add_27674_0"] - }, - { - "inputs" : [ "Broadcast_27679", "Exp_27681" ], - "name" : "Add_27682", - "op" : "Add", - "outputs" : ["Add_27682_0"] - }, - { - "inputs" : [ "Broadcast_27664", "Add_27667" ], - "name" : "Divide_27668", - "op" : "Divide", - "outputs" : ["Divide_27668_0"] - }, - { - "inputs" : [ "Broadcast_27671", "Add_27674" ], - "name" : "Divide_27675", - "op" : "Divide", - "outputs" : ["Divide_27675_0"] - }, - { - "inputs" : [ "Broadcast_27679", "Add_27682" ], - "name" : "Divide_27683", - "op" : "Divide", - "outputs" : ["Divide_27683_0"] - }, - { - "inputs" : [ "Divide_27675", "Add_27647" ], - "name" : "Multiply_27676", - "op" : "Multiply", - "outputs" : ["Multiply_27676_0"] - }, - { - "inputs" : [ "Divide_27683", "Tanh_27685" ], - "name" : "Multiply_27686", - "op" : "Multiply", - "outputs" : ["Multiply_27686_0"] - }, - { - "inputs" : [ "Multiply_27676", "Multiply_27686" ], - "name" : "Add_27687", - "op" : "Add", - "outputs" : ["Add_27687_0"] - }, - { - "inputs" : ["Add_27687"], - "name" : "Tanh_27688", - "op" : "Tanh", - "outputs" : ["Tanh_27688_0"] - }, - { - "inputs" : [ "Divide_27668", "Tanh_27688" ], - "name" : "Multiply_27689", - "op" : "Multiply", - "outputs" : ["Multiply_27689_0"] - }, - { - "inputs" : [ "Multiply_27689", "Reshape_27697" ], - "name" : "Dot_27698", - "op" : "Dot", - "outputs" : ["Dot_27698_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27689"], - "name" : "Reshape_27690", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27690_0"] - }, - { - "inputs" : [ "Dot_27698", "Broadcast_27699" ], - "name" : "Add_27700", - "op" : "Add", - "outputs" : ["Add_27700_0"] - }, - { - "inputs" : [ "Add_27696", "Add_27700" ], - "name" : "Add_27701", - "op" : "Add", - "outputs" : ["Add_27701_0"] - }, - { - "inputs" : ["Add_27701"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27702", - "op" : "Slice", - "outputs" : ["Slice_27702_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27701"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27709", - "op" : "Slice", - "outputs" : ["Slice_27709_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27701"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27717", - "op" : "Slice", - "outputs" : ["Slice_27717_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27701"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27724", - "op" : "Slice", - "outputs" : ["Slice_27724_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27702"], - "name" : "Negative_27705", - "op" : "Negative", - "outputs" : ["Negative_27705_0"] - }, - { - "inputs" : ["Slice_27709"], - "name" : "Negative_27712", - "op" : "Negative", - "outputs" : ["Negative_27712_0"] - }, - { - "inputs" : ["Slice_27717"], - "name" : "Negative_27720", - "op" : "Negative", - "outputs" : ["Negative_27720_0"] - }, - { - "inputs" : ["Slice_27724"], - "name" : "Tanh_27725", - "op" : "Tanh", - "outputs" : ["Tanh_27725_0"] - }, - { - "inputs" : ["Negative_27705"], - "name" : "Exp_27706", - "op" : "Exp", - "outputs" : ["Exp_27706_0"] - }, - { - "inputs" : ["Negative_27712"], - "name" : "Exp_27713", - "op" : "Exp", - "outputs" : ["Exp_27713_0"] - }, - { - "inputs" : ["Negative_27720"], - "name" : "Exp_27721", - "op" : "Exp", - "outputs" : ["Exp_27721_0"] - }, - { - "inputs" : [ "Broadcast_27704", "Exp_27706" ], - "name" : "Add_27707", - "op" : "Add", - "outputs" : ["Add_27707_0"] - }, - { - "inputs" : [ "Broadcast_27711", "Exp_27713" ], - "name" : "Add_27714", - "op" : "Add", - "outputs" : ["Add_27714_0"] - }, - { - "inputs" : [ "Broadcast_27719", "Exp_27721" ], - "name" : "Add_27722", - "op" : "Add", - "outputs" : ["Add_27722_0"] - }, - { - "inputs" : [ "Broadcast_27704", "Add_27707" ], - "name" : "Divide_27708", - "op" : "Divide", - "outputs" : ["Divide_27708_0"] - }, - { - "inputs" : [ "Broadcast_27711", "Add_27714" ], - "name" : "Divide_27715", - "op" : "Divide", - "outputs" : ["Divide_27715_0"] - }, - { - "inputs" : [ "Broadcast_27719", "Add_27722" ], - "name" : "Divide_27723", - "op" : "Divide", - "outputs" : ["Divide_27723_0"] - }, - { - "inputs" : [ "Divide_27715", "Add_27687" ], - "name" : "Multiply_27716", - "op" : "Multiply", - "outputs" : ["Multiply_27716_0"] - }, - { - "inputs" : [ "Divide_27723", "Tanh_27725" ], - "name" : "Multiply_27726", - "op" : "Multiply", - "outputs" : ["Multiply_27726_0"] - }, - { - "inputs" : [ "Multiply_27716", "Multiply_27726" ], - "name" : "Add_27727", - "op" : "Add", - "outputs" : ["Add_27727_0"] - }, - { - "inputs" : ["Add_27727"], - "name" : "Tanh_27728", - "op" : "Tanh", - "outputs" : ["Tanh_27728_0"] - }, - { - "inputs" : [ "Divide_27708", "Tanh_27728" ], - "name" : "Multiply_27729", - "op" : "Multiply", - "outputs" : ["Multiply_27729_0"] - }, - { - "inputs" : [ "Multiply_27729", "Reshape_27737" ], - "name" : "Dot_27738", - "op" : "Dot", - "outputs" : ["Dot_27738_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27729"], - "name" : "Reshape_27730", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27730_0"] - }, - { - "inputs" : [ "Dot_27738", "Broadcast_27739" ], - "name" : "Add_27740", - "op" : "Add", - "outputs" : ["Add_27740_0"] - }, - { - "inputs" : [ "Add_27736", "Add_27740" ], - "name" : "Add_27741", - "op" : "Add", - "outputs" : ["Add_27741_0"] - }, - { - "inputs" : ["Add_27741"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27742", - "op" : "Slice", - "outputs" : ["Slice_27742_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27741"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27749", - "op" : "Slice", - "outputs" : ["Slice_27749_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27741"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27764", - "op" : "Slice", - "outputs" : ["Slice_27764_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27741"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27757", - "op" : "Slice", - "outputs" : ["Slice_27757_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_27742"], - "name" : "Negative_27745", - "op" : "Negative", - "outputs" : ["Negative_27745_0"] - }, - { - "inputs" : ["Slice_27749"], - "name" : "Negative_27752", - "op" : "Negative", - "outputs" : ["Negative_27752_0"] - }, - { - "inputs" : ["Slice_27764"], - "name" : "Tanh_27765", - "op" : "Tanh", - "outputs" : ["Tanh_27765_0"] - }, - { - "inputs" : ["Slice_27757"], - "name" : "Negative_27760", - "op" : "Negative", - "outputs" : ["Negative_27760_0"] - }, - { - "inputs" : ["Negative_27745"], - "name" : "Exp_27746", - "op" : "Exp", - "outputs" : ["Exp_27746_0"] - }, - { - "inputs" : ["Negative_27752"], - "name" : "Exp_27753", - "op" : "Exp", - "outputs" : ["Exp_27753_0"] - }, - { - "inputs" : ["Negative_27760"], - "name" : "Exp_27761", - "op" : "Exp", - "outputs" : ["Exp_27761_0"] - }, - { - "inputs" : [ "Broadcast_27744", "Exp_27746" ], - "name" : "Add_27747", - "op" : "Add", - "outputs" : ["Add_27747_0"] - }, - { - "inputs" : [ "Broadcast_27751", "Exp_27753" ], - "name" : "Add_27754", - "op" : "Add", - "outputs" : ["Add_27754_0"] - }, - { - "inputs" : [ "Broadcast_27759", "Exp_27761" ], - "name" : "Add_27762", - "op" : "Add", - "outputs" : ["Add_27762_0"] - }, - { - "inputs" : [ "Broadcast_27744", "Add_27747" ], - "name" : "Divide_27748", - "op" : "Divide", - "outputs" : ["Divide_27748_0"] - }, - { - "inputs" : [ "Broadcast_27751", "Add_27754" ], - "name" : "Divide_27755", - "op" : "Divide", - "outputs" : ["Divide_27755_0"] - }, - { - "inputs" : [ "Broadcast_27759", "Add_27762" ], - "name" : "Divide_27763", - "op" : "Divide", - "outputs" : ["Divide_27763_0"] - }, - { - "inputs" : [ "Divide_27755", "Add_27727" ], - "name" : "Multiply_27756", - "op" : "Multiply", - "outputs" : ["Multiply_27756_0"] - }, - { - "inputs" : [ "Divide_27763", "Tanh_27765" ], - "name" : "Multiply_27766", - "op" : "Multiply", - "outputs" : ["Multiply_27766_0"] - }, - { - "inputs" : [ "Multiply_27756", "Multiply_27766" ], - "name" : "Add_27767", - "op" : "Add", - "outputs" : ["Add_27767_0"] - }, - { - "inputs" : ["Add_27767"], - "name" : "Tanh_27768", - "op" : "Tanh", - "outputs" : ["Tanh_27768_0"] - }, - { - "inputs" : [ "Divide_27748", "Tanh_27768" ], - "name" : "Multiply_27769", - "op" : "Multiply", - "outputs" : ["Multiply_27769_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27769"], - "name" : "Reshape_27770", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27770_0"] - }, - { - "inputs" : [ "Multiply_27769", "Reshape_27777" ], - "name" : "Dot_27778", - "op" : "Dot", - "outputs" : ["Dot_27778_0"] - }, - { - "inputs" : [ "Dot_27778", "Broadcast_27779" ], - "name" : "Add_27780", - "op" : "Add", - "outputs" : ["Add_27780_0"] - }, - { - "inputs" : [ "Add_27776", "Add_27780" ], - "name" : "Add_27781", - "op" : "Add", - "outputs" : ["Add_27781_0"] - }, - { - "inputs" : ["Add_27781"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27789", - "op" : "Slice", - "outputs" : ["Slice_27789_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27781"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27782", - "op" : "Slice", - "outputs" : ["Slice_27782_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27781"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27797", - "op" : "Slice", - "outputs" : ["Slice_27797_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27781"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27804", - "op" : "Slice", - "outputs" : ["Slice_27804_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_27789"], - "name" : "Negative_27792", - "op" : "Negative", - "outputs" : ["Negative_27792_0"] - }, - { - "inputs" : ["Slice_27782"], - "name" : "Negative_27785", - "op" : "Negative", - "outputs" : ["Negative_27785_0"] - }, - { - "inputs" : ["Slice_27797"], - "name" : "Negative_27800", - "op" : "Negative", - "outputs" : ["Negative_27800_0"] - }, - { - "inputs" : ["Slice_27804"], - "name" : "Tanh_27805", - "op" : "Tanh", - "outputs" : ["Tanh_27805_0"] - }, - { - "inputs" : ["Negative_27792"], - "name" : "Exp_27793", - "op" : "Exp", - "outputs" : ["Exp_27793_0"] - }, - { - "inputs" : ["Negative_27785"], - "name" : "Exp_27786", - "op" : "Exp", - "outputs" : ["Exp_27786_0"] - }, - { - "inputs" : ["Negative_27800"], - "name" : "Exp_27801", - "op" : "Exp", - "outputs" : ["Exp_27801_0"] - }, - { - "inputs" : [ "Broadcast_27791", "Exp_27793" ], - "name" : "Add_27794", - "op" : "Add", - "outputs" : ["Add_27794_0"] - }, - { - "inputs" : [ "Broadcast_27784", "Exp_27786" ], - "name" : "Add_27787", - "op" : "Add", - "outputs" : ["Add_27787_0"] - }, - { - "inputs" : [ "Broadcast_27799", "Exp_27801" ], - "name" : "Add_27802", - "op" : "Add", - "outputs" : ["Add_27802_0"] - }, - { - "inputs" : [ "Broadcast_27791", "Add_27794" ], - "name" : "Divide_27795", - "op" : "Divide", - "outputs" : ["Divide_27795_0"] - }, - { - "inputs" : [ "Broadcast_27784", "Add_27787" ], - "name" : "Divide_27788", - "op" : "Divide", - "outputs" : ["Divide_27788_0"] - }, - { - "inputs" : [ "Broadcast_27799", "Add_27802" ], - "name" : "Divide_27803", - "op" : "Divide", - "outputs" : ["Divide_27803_0"] - }, - { - "inputs" : [ "Divide_27795", "Add_27767" ], - "name" : "Multiply_27796", - "op" : "Multiply", - "outputs" : ["Multiply_27796_0"] - }, - { - "inputs" : [ "Divide_27803", "Tanh_27805" ], - "name" : "Multiply_27806", - "op" : "Multiply", - "outputs" : ["Multiply_27806_0"] - }, - { - "inputs" : [ "Multiply_27796", "Multiply_27806" ], - "name" : "Add_27807", - "op" : "Add", - "outputs" : ["Add_27807_0"] - }, - { - "inputs" : ["Add_27807"], - "name" : "Tanh_27808", - "op" : "Tanh", - "outputs" : ["Tanh_27808_0"] - }, - { - "inputs" : [ "Divide_27788", "Tanh_27808" ], - "name" : "Multiply_27809", - "op" : "Multiply", - "outputs" : ["Multiply_27809_0"] - }, - { - "inputs" : [ "Multiply_27809", "Reshape_27817" ], - "name" : "Dot_27818", - "op" : "Dot", - "outputs" : ["Dot_27818_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27809"], - "name" : "Reshape_27810", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27810_0"] - }, - { - "inputs" : [ "Dot_27818", "Broadcast_27819" ], - "name" : "Add_27820", - "op" : "Add", - "outputs" : ["Add_27820_0"] - }, - { - "inputs" : [ "Add_27816", "Add_27820" ], - "name" : "Add_27821", - "op" : "Add", - "outputs" : ["Add_27821_0"] - }, - { - "inputs" : ["Add_27821"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27822", - "op" : "Slice", - "outputs" : ["Slice_27822_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27821"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27829", - "op" : "Slice", - "outputs" : ["Slice_27829_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27821"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27844", - "op" : "Slice", - "outputs" : ["Slice_27844_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27821"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27837", - "op" : "Slice", - "outputs" : ["Slice_27837_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_27822"], - "name" : "Negative_27825", - "op" : "Negative", - "outputs" : ["Negative_27825_0"] - }, - { - "inputs" : ["Slice_27829"], - "name" : "Negative_27832", - "op" : "Negative", - "outputs" : ["Negative_27832_0"] - }, - { - "inputs" : ["Slice_27844"], - "name" : "Tanh_27845", - "op" : "Tanh", - "outputs" : ["Tanh_27845_0"] - }, - { - "inputs" : ["Slice_27837"], - "name" : "Negative_27840", - "op" : "Negative", - "outputs" : ["Negative_27840_0"] - }, - { - "inputs" : ["Negative_27825"], - "name" : "Exp_27826", - "op" : "Exp", - "outputs" : ["Exp_27826_0"] - }, - { - "inputs" : ["Negative_27832"], - "name" : "Exp_27833", - "op" : "Exp", - "outputs" : ["Exp_27833_0"] - }, - { - "inputs" : ["Negative_27840"], - "name" : "Exp_27841", - "op" : "Exp", - "outputs" : ["Exp_27841_0"] - }, - { - "inputs" : [ "Broadcast_27824", "Exp_27826" ], - "name" : "Add_27827", - "op" : "Add", - "outputs" : ["Add_27827_0"] - }, - { - "inputs" : [ "Broadcast_27831", "Exp_27833" ], - "name" : "Add_27834", - "op" : "Add", - "outputs" : ["Add_27834_0"] - }, - { - "inputs" : [ "Broadcast_27839", "Exp_27841" ], - "name" : "Add_27842", - "op" : "Add", - "outputs" : ["Add_27842_0"] - }, - { - "inputs" : [ "Broadcast_27824", "Add_27827" ], - "name" : "Divide_27828", - "op" : "Divide", - "outputs" : ["Divide_27828_0"] - }, - { - "inputs" : [ "Broadcast_27831", "Add_27834" ], - "name" : "Divide_27835", - "op" : "Divide", - "outputs" : ["Divide_27835_0"] - }, - { - "inputs" : [ "Broadcast_27839", "Add_27842" ], - "name" : "Divide_27843", - "op" : "Divide", - "outputs" : ["Divide_27843_0"] - }, - { - "inputs" : [ "Divide_27835", "Add_27807" ], - "name" : "Multiply_27836", - "op" : "Multiply", - "outputs" : ["Multiply_27836_0"] - }, - { - "inputs" : [ "Divide_27843", "Tanh_27845" ], - "name" : "Multiply_27846", - "op" : "Multiply", - "outputs" : ["Multiply_27846_0"] - }, - { - "inputs" : [ "Multiply_27836", "Multiply_27846" ], - "name" : "Add_27847", - "op" : "Add", - "outputs" : ["Add_27847_0"] - }, - { - "inputs" : ["Add_27847"], - "name" : "Tanh_27848", - "op" : "Tanh", - "outputs" : ["Tanh_27848_0"] - }, - { - "inputs" : [ "Divide_27828", "Tanh_27848" ], - "name" : "Multiply_27849", - "op" : "Multiply", - "outputs" : ["Multiply_27849_0"] - }, - { - "inputs" : [ "Multiply_27849", "Reshape_27857" ], - "name" : "Dot_27858", - "op" : "Dot", - "outputs" : ["Dot_27858_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27849"], - "name" : "Reshape_27850", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27850_0"] - }, - { - "inputs" : [ "Dot_27858", "Broadcast_27859" ], - "name" : "Add_27860", - "op" : "Add", - "outputs" : ["Add_27860_0"] - }, - { - "inputs" : [ "Add_27856", "Add_27860" ], - "name" : "Add_27861", - "op" : "Add", - "outputs" : ["Add_27861_0"] - }, - { - "inputs" : ["Add_27861"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27862", - "op" : "Slice", - "outputs" : ["Slice_27862_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27861"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27877", - "op" : "Slice", - "outputs" : ["Slice_27877_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27861"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27884", - "op" : "Slice", - "outputs" : ["Slice_27884_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27861"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27869", - "op" : "Slice", - "outputs" : ["Slice_27869_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_27862"], - "name" : "Negative_27865", - "op" : "Negative", - "outputs" : ["Negative_27865_0"] - }, - { - "inputs" : ["Slice_27877"], - "name" : "Negative_27880", - "op" : "Negative", - "outputs" : ["Negative_27880_0"] - }, - { - "inputs" : ["Slice_27884"], - "name" : "Tanh_27885", - "op" : "Tanh", - "outputs" : ["Tanh_27885_0"] - }, - { - "inputs" : ["Slice_27869"], - "name" : "Negative_27872", - "op" : "Negative", - "outputs" : ["Negative_27872_0"] - }, - { - "inputs" : ["Negative_27865"], - "name" : "Exp_27866", - "op" : "Exp", - "outputs" : ["Exp_27866_0"] - }, - { - "inputs" : ["Negative_27880"], - "name" : "Exp_27881", - "op" : "Exp", - "outputs" : ["Exp_27881_0"] - }, - { - "inputs" : ["Negative_27872"], - "name" : "Exp_27873", - "op" : "Exp", - "outputs" : ["Exp_27873_0"] - }, - { - "inputs" : [ "Broadcast_27864", "Exp_27866" ], - "name" : "Add_27867", - "op" : "Add", - "outputs" : ["Add_27867_0"] - }, - { - "inputs" : [ "Broadcast_27879", "Exp_27881" ], - "name" : "Add_27882", - "op" : "Add", - "outputs" : ["Add_27882_0"] - }, - { - "inputs" : [ "Broadcast_27871", "Exp_27873" ], - "name" : "Add_27874", - "op" : "Add", - "outputs" : ["Add_27874_0"] - }, - { - "inputs" : [ "Broadcast_27864", "Add_27867" ], - "name" : "Divide_27868", - "op" : "Divide", - "outputs" : ["Divide_27868_0"] - }, - { - "inputs" : [ "Broadcast_27879", "Add_27882" ], - "name" : "Divide_27883", - "op" : "Divide", - "outputs" : ["Divide_27883_0"] - }, - { - "inputs" : [ "Broadcast_27871", "Add_27874" ], - "name" : "Divide_27875", - "op" : "Divide", - "outputs" : ["Divide_27875_0"] - }, - { - "inputs" : [ "Divide_27883", "Tanh_27885" ], - "name" : "Multiply_27886", - "op" : "Multiply", - "outputs" : ["Multiply_27886_0"] - }, - { - "inputs" : [ "Divide_27875", "Add_27847" ], - "name" : "Multiply_27876", - "op" : "Multiply", - "outputs" : ["Multiply_27876_0"] - }, - { - "inputs" : [ "Multiply_27876", "Multiply_27886" ], - "name" : "Add_27887", - "op" : "Add", - "outputs" : ["Add_27887_0"] - }, - { - "inputs" : ["Add_27887"], - "name" : "Tanh_27888", - "op" : "Tanh", - "outputs" : ["Tanh_27888_0"] - }, - { - "inputs" : [ "Divide_27868", "Tanh_27888" ], - "name" : "Multiply_27889", - "op" : "Multiply", - "outputs" : ["Multiply_27889_0"] - }, - { - "inputs" : [ "Multiply_27889", "Reshape_27897" ], - "name" : "Dot_27898", - "op" : "Dot", - "outputs" : ["Dot_27898_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27889"], - "name" : "Reshape_27890", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27890_0"] - }, - { - "inputs" : [ "Dot_27898", "Broadcast_27899" ], - "name" : "Add_27900", - "op" : "Add", - "outputs" : ["Add_27900_0"] - }, - { - "inputs" : [ "Add_27896", "Add_27900" ], - "name" : "Add_27901", - "op" : "Add", - "outputs" : ["Add_27901_0"] - }, - { - "inputs" : ["Add_27901"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27902", - "op" : "Slice", - "outputs" : ["Slice_27902_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27901"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27917", - "op" : "Slice", - "outputs" : ["Slice_27917_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27901"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27924", - "op" : "Slice", - "outputs" : ["Slice_27924_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27901"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27909", - "op" : "Slice", - "outputs" : ["Slice_27909_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_27902"], - "name" : "Negative_27905", - "op" : "Negative", - "outputs" : ["Negative_27905_0"] - }, - { - "inputs" : ["Slice_27917"], - "name" : "Negative_27920", - "op" : "Negative", - "outputs" : ["Negative_27920_0"] - }, - { - "inputs" : ["Slice_27924"], - "name" : "Tanh_27925", - "op" : "Tanh", - "outputs" : ["Tanh_27925_0"] - }, - { - "inputs" : ["Slice_27909"], - "name" : "Negative_27912", - "op" : "Negative", - "outputs" : ["Negative_27912_0"] - }, - { - "inputs" : ["Negative_27905"], - "name" : "Exp_27906", - "op" : "Exp", - "outputs" : ["Exp_27906_0"] - }, - { - "inputs" : ["Negative_27920"], - "name" : "Exp_27921", - "op" : "Exp", - "outputs" : ["Exp_27921_0"] - }, - { - "inputs" : ["Negative_27912"], - "name" : "Exp_27913", - "op" : "Exp", - "outputs" : ["Exp_27913_0"] - }, - { - "inputs" : [ "Broadcast_27904", "Exp_27906" ], - "name" : "Add_27907", - "op" : "Add", - "outputs" : ["Add_27907_0"] - }, - { - "inputs" : [ "Broadcast_27919", "Exp_27921" ], - "name" : "Add_27922", - "op" : "Add", - "outputs" : ["Add_27922_0"] - }, - { - "inputs" : [ "Broadcast_27911", "Exp_27913" ], - "name" : "Add_27914", - "op" : "Add", - "outputs" : ["Add_27914_0"] - }, - { - "inputs" : [ "Broadcast_27904", "Add_27907" ], - "name" : "Divide_27908", - "op" : "Divide", - "outputs" : ["Divide_27908_0"] - }, - { - "inputs" : [ "Broadcast_27919", "Add_27922" ], - "name" : "Divide_27923", - "op" : "Divide", - "outputs" : ["Divide_27923_0"] - }, - { - "inputs" : [ "Broadcast_27911", "Add_27914" ], - "name" : "Divide_27915", - "op" : "Divide", - "outputs" : ["Divide_27915_0"] - }, - { - "inputs" : [ "Divide_27923", "Tanh_27925" ], - "name" : "Multiply_27926", - "op" : "Multiply", - "outputs" : ["Multiply_27926_0"] - }, - { - "inputs" : [ "Divide_27915", "Add_27887" ], - "name" : "Multiply_27916", - "op" : "Multiply", - "outputs" : ["Multiply_27916_0"] - }, - { - "inputs" : [ "Multiply_27916", "Multiply_27926" ], - "name" : "Add_27927", - "op" : "Add", - "outputs" : ["Add_27927_0"] - }, - { - "inputs" : ["Add_27927"], - "name" : "Tanh_27928", - "op" : "Tanh", - "outputs" : ["Tanh_27928_0"] - }, - { - "inputs" : [ "Divide_27908", "Tanh_27928" ], - "name" : "Multiply_27929", - "op" : "Multiply", - "outputs" : ["Multiply_27929_0"] - }, - { - "inputs" : [ "Multiply_27929", "Reshape_27937" ], - "name" : "Dot_27938", - "op" : "Dot", - "outputs" : ["Dot_27938_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27929"], - "name" : "Reshape_27930", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27930_0"] - }, - { - "inputs" : [ "Dot_27938", "Broadcast_27939" ], - "name" : "Add_27940", - "op" : "Add", - "outputs" : ["Add_27940_0"] - }, - { - "inputs" : [ "Add_27936", "Add_27940" ], - "name" : "Add_27941", - "op" : "Add", - "outputs" : ["Add_27941_0"] - }, - { - "inputs" : ["Add_27941"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27942", - "op" : "Slice", - "outputs" : ["Slice_27942_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27941"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27949", - "op" : "Slice", - "outputs" : ["Slice_27949_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_27941"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_27964", - "op" : "Slice", - "outputs" : ["Slice_27964_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27941"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27957", - "op" : "Slice", - "outputs" : ["Slice_27957_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_27942"], - "name" : "Negative_27945", - "op" : "Negative", - "outputs" : ["Negative_27945_0"] - }, - { - "inputs" : ["Slice_27949"], - "name" : "Negative_27952", - "op" : "Negative", - "outputs" : ["Negative_27952_0"] - }, - { - "inputs" : ["Slice_27964"], - "name" : "Tanh_27965", - "op" : "Tanh", - "outputs" : ["Tanh_27965_0"] - }, - { - "inputs" : ["Slice_27957"], - "name" : "Negative_27960", - "op" : "Negative", - "outputs" : ["Negative_27960_0"] - }, - { - "inputs" : ["Negative_27945"], - "name" : "Exp_27946", - "op" : "Exp", - "outputs" : ["Exp_27946_0"] - }, - { - "inputs" : ["Negative_27952"], - "name" : "Exp_27953", - "op" : "Exp", - "outputs" : ["Exp_27953_0"] - }, - { - "inputs" : ["Negative_27960"], - "name" : "Exp_27961", - "op" : "Exp", - "outputs" : ["Exp_27961_0"] - }, - { - "inputs" : [ "Broadcast_27944", "Exp_27946" ], - "name" : "Add_27947", - "op" : "Add", - "outputs" : ["Add_27947_0"] - }, - { - "inputs" : [ "Broadcast_27951", "Exp_27953" ], - "name" : "Add_27954", - "op" : "Add", - "outputs" : ["Add_27954_0"] - }, - { - "inputs" : [ "Broadcast_27959", "Exp_27961" ], - "name" : "Add_27962", - "op" : "Add", - "outputs" : ["Add_27962_0"] - }, - { - "inputs" : [ "Broadcast_27944", "Add_27947" ], - "name" : "Divide_27948", - "op" : "Divide", - "outputs" : ["Divide_27948_0"] - }, - { - "inputs" : [ "Broadcast_27951", "Add_27954" ], - "name" : "Divide_27955", - "op" : "Divide", - "outputs" : ["Divide_27955_0"] - }, - { - "inputs" : [ "Broadcast_27959", "Add_27962" ], - "name" : "Divide_27963", - "op" : "Divide", - "outputs" : ["Divide_27963_0"] - }, - { - "inputs" : [ "Divide_27955", "Add_27927" ], - "name" : "Multiply_27956", - "op" : "Multiply", - "outputs" : ["Multiply_27956_0"] - }, - { - "inputs" : [ "Divide_27963", "Tanh_27965" ], - "name" : "Multiply_27966", - "op" : "Multiply", - "outputs" : ["Multiply_27966_0"] - }, - { - "inputs" : [ "Multiply_27956", "Multiply_27966" ], - "name" : "Add_27967", - "op" : "Add", - "outputs" : ["Add_27967_0"] - }, - { - "inputs" : ["Add_27967"], - "name" : "Tanh_27968", - "op" : "Tanh", - "outputs" : ["Tanh_27968_0"] - }, - { - "inputs" : [ "Divide_27948", "Tanh_27968" ], - "name" : "Multiply_27969", - "op" : "Multiply", - "outputs" : ["Multiply_27969_0"] - }, - { - "inputs" : [ "Multiply_27969", "Reshape_27977" ], - "name" : "Dot_27978", - "op" : "Dot", - "outputs" : ["Dot_27978_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_27969"], - "name" : "Reshape_27970", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_27970_0"] - }, - { - "inputs" : [ "Dot_27978", "Broadcast_27979" ], - "name" : "Add_27980", - "op" : "Add", - "outputs" : ["Add_27980_0"] - }, - { - "inputs" : [ "Add_27976", "Add_27980" ], - "name" : "Add_27981", - "op" : "Add", - "outputs" : ["Add_27981_0"] - }, - { - "inputs" : ["Add_27981"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_27982", - "op" : "Slice", - "outputs" : ["Slice_27982_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_27981"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28004", - "op" : "Slice", - "outputs" : ["Slice_28004_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_27981"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_27997", - "op" : "Slice", - "outputs" : ["Slice_27997_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_27981"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_27989", - "op" : "Slice", - "outputs" : ["Slice_27989_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_27982"], - "name" : "Negative_27985", - "op" : "Negative", - "outputs" : ["Negative_27985_0"] - }, - { - "inputs" : ["Slice_28004"], - "name" : "Tanh_28005", - "op" : "Tanh", - "outputs" : ["Tanh_28005_0"] - }, - { - "inputs" : ["Slice_27997"], - "name" : "Negative_28000", - "op" : "Negative", - "outputs" : ["Negative_28000_0"] - }, - { - "inputs" : ["Slice_27989"], - "name" : "Negative_27992", - "op" : "Negative", - "outputs" : ["Negative_27992_0"] - }, - { - "inputs" : ["Negative_27985"], - "name" : "Exp_27986", - "op" : "Exp", - "outputs" : ["Exp_27986_0"] - }, - { - "inputs" : ["Negative_28000"], - "name" : "Exp_28001", - "op" : "Exp", - "outputs" : ["Exp_28001_0"] - }, - { - "inputs" : ["Negative_27992"], - "name" : "Exp_27993", - "op" : "Exp", - "outputs" : ["Exp_27993_0"] - }, - { - "inputs" : [ "Broadcast_27984", "Exp_27986" ], - "name" : "Add_27987", - "op" : "Add", - "outputs" : ["Add_27987_0"] - }, - { - "inputs" : [ "Broadcast_27999", "Exp_28001" ], - "name" : "Add_28002", - "op" : "Add", - "outputs" : ["Add_28002_0"] - }, - { - "inputs" : [ "Broadcast_27991", "Exp_27993" ], - "name" : "Add_27994", - "op" : "Add", - "outputs" : ["Add_27994_0"] - }, - { - "inputs" : [ "Broadcast_27984", "Add_27987" ], - "name" : "Divide_27988", - "op" : "Divide", - "outputs" : ["Divide_27988_0"] - }, - { - "inputs" : [ "Broadcast_27999", "Add_28002" ], - "name" : "Divide_28003", - "op" : "Divide", - "outputs" : ["Divide_28003_0"] - }, - { - "inputs" : [ "Broadcast_27991", "Add_27994" ], - "name" : "Divide_27995", - "op" : "Divide", - "outputs" : ["Divide_27995_0"] - }, - { - "inputs" : [ "Divide_28003", "Tanh_28005" ], - "name" : "Multiply_28006", - "op" : "Multiply", - "outputs" : ["Multiply_28006_0"] - }, - { - "inputs" : [ "Divide_27995", "Add_27967" ], - "name" : "Multiply_27996", - "op" : "Multiply", - "outputs" : ["Multiply_27996_0"] - }, - { - "inputs" : [ "Multiply_27996", "Multiply_28006" ], - "name" : "Add_28007", - "op" : "Add", - "outputs" : ["Add_28007_0"] - }, - { - "inputs" : ["Add_28007"], - "name" : "Tanh_28008", - "op" : "Tanh", - "outputs" : ["Tanh_28008_0"] - }, - { - "inputs" : [ "Divide_27988", "Tanh_28008" ], - "name" : "Multiply_28009", - "op" : "Multiply", - "outputs" : ["Multiply_28009_0"] - }, - { - "inputs" : [ "Multiply_28009", "Reshape_28017" ], - "name" : "Dot_28018", - "op" : "Dot", - "outputs" : ["Dot_28018_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28009"], - "name" : "Reshape_28010", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28010_0"] - }, - { - "inputs" : [ "Dot_28018", "Broadcast_28019" ], - "name" : "Add_28020", - "op" : "Add", - "outputs" : ["Add_28020_0"] - }, - { - "inputs" : [ "Add_28016", "Add_28020" ], - "name" : "Add_28021", - "op" : "Add", - "outputs" : ["Add_28021_0"] - }, - { - "inputs" : ["Add_28021"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28022", - "op" : "Slice", - "outputs" : ["Slice_28022_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28021"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28037", - "op" : "Slice", - "outputs" : ["Slice_28037_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28021"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28044", - "op" : "Slice", - "outputs" : ["Slice_28044_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28021"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28029", - "op" : "Slice", - "outputs" : ["Slice_28029_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_28022"], - "name" : "Negative_28025", - "op" : "Negative", - "outputs" : ["Negative_28025_0"] - }, - { - "inputs" : ["Slice_28037"], - "name" : "Negative_28040", - "op" : "Negative", - "outputs" : ["Negative_28040_0"] - }, - { - "inputs" : ["Slice_28044"], - "name" : "Tanh_28045", - "op" : "Tanh", - "outputs" : ["Tanh_28045_0"] - }, - { - "inputs" : ["Slice_28029"], - "name" : "Negative_28032", - "op" : "Negative", - "outputs" : ["Negative_28032_0"] - }, - { - "inputs" : ["Negative_28025"], - "name" : "Exp_28026", - "op" : "Exp", - "outputs" : ["Exp_28026_0"] - }, - { - "inputs" : ["Negative_28040"], - "name" : "Exp_28041", - "op" : "Exp", - "outputs" : ["Exp_28041_0"] - }, - { - "inputs" : ["Negative_28032"], - "name" : "Exp_28033", - "op" : "Exp", - "outputs" : ["Exp_28033_0"] - }, - { - "inputs" : [ "Broadcast_28024", "Exp_28026" ], - "name" : "Add_28027", - "op" : "Add", - "outputs" : ["Add_28027_0"] - }, - { - "inputs" : [ "Broadcast_28039", "Exp_28041" ], - "name" : "Add_28042", - "op" : "Add", - "outputs" : ["Add_28042_0"] - }, - { - "inputs" : [ "Broadcast_28031", "Exp_28033" ], - "name" : "Add_28034", - "op" : "Add", - "outputs" : ["Add_28034_0"] - }, - { - "inputs" : [ "Broadcast_28024", "Add_28027" ], - "name" : "Divide_28028", - "op" : "Divide", - "outputs" : ["Divide_28028_0"] - }, - { - "inputs" : [ "Broadcast_28039", "Add_28042" ], - "name" : "Divide_28043", - "op" : "Divide", - "outputs" : ["Divide_28043_0"] - }, - { - "inputs" : [ "Broadcast_28031", "Add_28034" ], - "name" : "Divide_28035", - "op" : "Divide", - "outputs" : ["Divide_28035_0"] - }, - { - "inputs" : [ "Divide_28043", "Tanh_28045" ], - "name" : "Multiply_28046", - "op" : "Multiply", - "outputs" : ["Multiply_28046_0"] - }, - { - "inputs" : [ "Divide_28035", "Add_28007" ], - "name" : "Multiply_28036", - "op" : "Multiply", - "outputs" : ["Multiply_28036_0"] - }, - { - "inputs" : [ "Multiply_28036", "Multiply_28046" ], - "name" : "Add_28047", - "op" : "Add", - "outputs" : ["Add_28047_0"] - }, - { - "inputs" : ["Add_28047"], - "name" : "Tanh_28048", - "op" : "Tanh", - "outputs" : ["Tanh_28048_0"] - }, - { - "inputs" : [ "Divide_28028", "Tanh_28048" ], - "name" : "Multiply_28049", - "op" : "Multiply", - "outputs" : ["Multiply_28049_0"] - }, - { - "inputs" : [ "Multiply_28049", "Reshape_28057" ], - "name" : "Dot_28058", - "op" : "Dot", - "outputs" : ["Dot_28058_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28049"], - "name" : "Reshape_28050", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28050_0"] - }, - { - "inputs" : [ "Dot_28058", "Broadcast_28059" ], - "name" : "Add_28060", - "op" : "Add", - "outputs" : ["Add_28060_0"] - }, - { - "inputs" : [ "Add_28056", "Add_28060" ], - "name" : "Add_28061", - "op" : "Add", - "outputs" : ["Add_28061_0"] - }, - { - "inputs" : ["Add_28061"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28084", - "op" : "Slice", - "outputs" : ["Slice_28084_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28061"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28077", - "op" : "Slice", - "outputs" : ["Slice_28077_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28061"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28062", - "op" : "Slice", - "outputs" : ["Slice_28062_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28061"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28069", - "op" : "Slice", - "outputs" : ["Slice_28069_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_28084"], - "name" : "Tanh_28085", - "op" : "Tanh", - "outputs" : ["Tanh_28085_0"] - }, - { - "inputs" : ["Slice_28077"], - "name" : "Negative_28080", - "op" : "Negative", - "outputs" : ["Negative_28080_0"] - }, - { - "inputs" : ["Slice_28062"], - "name" : "Negative_28065", - "op" : "Negative", - "outputs" : ["Negative_28065_0"] - }, - { - "inputs" : ["Slice_28069"], - "name" : "Negative_28072", - "op" : "Negative", - "outputs" : ["Negative_28072_0"] - }, - { - "inputs" : ["Negative_28080"], - "name" : "Exp_28081", - "op" : "Exp", - "outputs" : ["Exp_28081_0"] - }, - { - "inputs" : ["Negative_28065"], - "name" : "Exp_28066", - "op" : "Exp", - "outputs" : ["Exp_28066_0"] - }, - { - "inputs" : ["Negative_28072"], - "name" : "Exp_28073", - "op" : "Exp", - "outputs" : ["Exp_28073_0"] - }, - { - "inputs" : [ "Broadcast_28079", "Exp_28081" ], - "name" : "Add_28082", - "op" : "Add", - "outputs" : ["Add_28082_0"] - }, - { - "inputs" : [ "Broadcast_28064", "Exp_28066" ], - "name" : "Add_28067", - "op" : "Add", - "outputs" : ["Add_28067_0"] - }, - { - "inputs" : [ "Broadcast_28071", "Exp_28073" ], - "name" : "Add_28074", - "op" : "Add", - "outputs" : ["Add_28074_0"] - }, - { - "inputs" : [ "Broadcast_28079", "Add_28082" ], - "name" : "Divide_28083", - "op" : "Divide", - "outputs" : ["Divide_28083_0"] - }, - { - "inputs" : [ "Broadcast_28064", "Add_28067" ], - "name" : "Divide_28068", - "op" : "Divide", - "outputs" : ["Divide_28068_0"] - }, - { - "inputs" : [ "Broadcast_28071", "Add_28074" ], - "name" : "Divide_28075", - "op" : "Divide", - "outputs" : ["Divide_28075_0"] - }, - { - "inputs" : [ "Divide_28083", "Tanh_28085" ], - "name" : "Multiply_28086", - "op" : "Multiply", - "outputs" : ["Multiply_28086_0"] - }, - { - "inputs" : [ "Divide_28075", "Add_28047" ], - "name" : "Multiply_28076", - "op" : "Multiply", - "outputs" : ["Multiply_28076_0"] - }, - { - "inputs" : [ "Multiply_28076", "Multiply_28086" ], - "name" : "Add_28087", - "op" : "Add", - "outputs" : ["Add_28087_0"] - }, - { - "inputs" : ["Add_28087"], - "name" : "Tanh_28088", - "op" : "Tanh", - "outputs" : ["Tanh_28088_0"] - }, - { - "inputs" : [ "Divide_28068", "Tanh_28088" ], - "name" : "Multiply_28089", - "op" : "Multiply", - "outputs" : ["Multiply_28089_0"] - }, - { - "inputs" : [ "Multiply_28089", "Reshape_28097" ], - "name" : "Dot_28098", - "op" : "Dot", - "outputs" : ["Dot_28098_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28089"], - "name" : "Reshape_28090", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28090_0"] - }, - { - "inputs" : [ "Dot_28098", "Broadcast_28099" ], - "name" : "Add_28100", - "op" : "Add", - "outputs" : ["Add_28100_0"] - }, - { - "inputs" : [ "Add_28096", "Add_28100" ], - "name" : "Add_28101", - "op" : "Add", - "outputs" : ["Add_28101_0"] - }, - { - "inputs" : ["Add_28101"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28109", - "op" : "Slice", - "outputs" : ["Slice_28109_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28101"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28102", - "op" : "Slice", - "outputs" : ["Slice_28102_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28101"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28117", - "op" : "Slice", - "outputs" : ["Slice_28117_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28101"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28124", - "op" : "Slice", - "outputs" : ["Slice_28124_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28109"], - "name" : "Negative_28112", - "op" : "Negative", - "outputs" : ["Negative_28112_0"] - }, - { - "inputs" : ["Slice_28102"], - "name" : "Negative_28105", - "op" : "Negative", - "outputs" : ["Negative_28105_0"] - }, - { - "inputs" : ["Slice_28117"], - "name" : "Negative_28120", - "op" : "Negative", - "outputs" : ["Negative_28120_0"] - }, - { - "inputs" : ["Slice_28124"], - "name" : "Tanh_28125", - "op" : "Tanh", - "outputs" : ["Tanh_28125_0"] - }, - { - "inputs" : ["Negative_28112"], - "name" : "Exp_28113", - "op" : "Exp", - "outputs" : ["Exp_28113_0"] - }, - { - "inputs" : ["Negative_28105"], - "name" : "Exp_28106", - "op" : "Exp", - "outputs" : ["Exp_28106_0"] - }, - { - "inputs" : ["Negative_28120"], - "name" : "Exp_28121", - "op" : "Exp", - "outputs" : ["Exp_28121_0"] - }, - { - "inputs" : [ "Broadcast_28111", "Exp_28113" ], - "name" : "Add_28114", - "op" : "Add", - "outputs" : ["Add_28114_0"] - }, - { - "inputs" : [ "Broadcast_28104", "Exp_28106" ], - "name" : "Add_28107", - "op" : "Add", - "outputs" : ["Add_28107_0"] - }, - { - "inputs" : [ "Broadcast_28119", "Exp_28121" ], - "name" : "Add_28122", - "op" : "Add", - "outputs" : ["Add_28122_0"] - }, - { - "inputs" : [ "Broadcast_28111", "Add_28114" ], - "name" : "Divide_28115", - "op" : "Divide", - "outputs" : ["Divide_28115_0"] - }, - { - "inputs" : [ "Broadcast_28104", "Add_28107" ], - "name" : "Divide_28108", - "op" : "Divide", - "outputs" : ["Divide_28108_0"] - }, - { - "inputs" : [ "Broadcast_28119", "Add_28122" ], - "name" : "Divide_28123", - "op" : "Divide", - "outputs" : ["Divide_28123_0"] - }, - { - "inputs" : [ "Divide_28115", "Add_28087" ], - "name" : "Multiply_28116", - "op" : "Multiply", - "outputs" : ["Multiply_28116_0"] - }, - { - "inputs" : [ "Divide_28123", "Tanh_28125" ], - "name" : "Multiply_28126", - "op" : "Multiply", - "outputs" : ["Multiply_28126_0"] - }, - { - "inputs" : [ "Multiply_28116", "Multiply_28126" ], - "name" : "Add_28127", - "op" : "Add", - "outputs" : ["Add_28127_0"] - }, - { - "inputs" : ["Add_28127"], - "name" : "Tanh_28128", - "op" : "Tanh", - "outputs" : ["Tanh_28128_0"] - }, - { - "inputs" : [ "Divide_28108", "Tanh_28128" ], - "name" : "Multiply_28129", - "op" : "Multiply", - "outputs" : ["Multiply_28129_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28129"], - "name" : "Reshape_28130", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28130_0"] - }, - { - "inputs" : [ "Multiply_28129", "Reshape_28137" ], - "name" : "Dot_28138", - "op" : "Dot", - "outputs" : ["Dot_28138_0"] - }, - { - "inputs" : [ "Dot_28138", "Broadcast_28139" ], - "name" : "Add_28140", - "op" : "Add", - "outputs" : ["Add_28140_0"] - }, - { - "inputs" : [ "Add_28136", "Add_28140" ], - "name" : "Add_28141", - "op" : "Add", - "outputs" : ["Add_28141_0"] - }, - { - "inputs" : ["Add_28141"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28142", - "op" : "Slice", - "outputs" : ["Slice_28142_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28141"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28149", - "op" : "Slice", - "outputs" : ["Slice_28149_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28141"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28164", - "op" : "Slice", - "outputs" : ["Slice_28164_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28141"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28157", - "op" : "Slice", - "outputs" : ["Slice_28157_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_28142"], - "name" : "Negative_28145", - "op" : "Negative", - "outputs" : ["Negative_28145_0"] - }, - { - "inputs" : ["Slice_28149"], - "name" : "Negative_28152", - "op" : "Negative", - "outputs" : ["Negative_28152_0"] - }, - { - "inputs" : ["Slice_28164"], - "name" : "Tanh_28165", - "op" : "Tanh", - "outputs" : ["Tanh_28165_0"] - }, - { - "inputs" : ["Slice_28157"], - "name" : "Negative_28160", - "op" : "Negative", - "outputs" : ["Negative_28160_0"] - }, - { - "inputs" : ["Negative_28145"], - "name" : "Exp_28146", - "op" : "Exp", - "outputs" : ["Exp_28146_0"] - }, - { - "inputs" : ["Negative_28152"], - "name" : "Exp_28153", - "op" : "Exp", - "outputs" : ["Exp_28153_0"] - }, - { - "inputs" : ["Negative_28160"], - "name" : "Exp_28161", - "op" : "Exp", - "outputs" : ["Exp_28161_0"] - }, - { - "inputs" : [ "Broadcast_28144", "Exp_28146" ], - "name" : "Add_28147", - "op" : "Add", - "outputs" : ["Add_28147_0"] - }, - { - "inputs" : [ "Broadcast_28151", "Exp_28153" ], - "name" : "Add_28154", - "op" : "Add", - "outputs" : ["Add_28154_0"] - }, - { - "inputs" : [ "Broadcast_28159", "Exp_28161" ], - "name" : "Add_28162", - "op" : "Add", - "outputs" : ["Add_28162_0"] - }, - { - "inputs" : [ "Broadcast_28144", "Add_28147" ], - "name" : "Divide_28148", - "op" : "Divide", - "outputs" : ["Divide_28148_0"] - }, - { - "inputs" : [ "Broadcast_28151", "Add_28154" ], - "name" : "Divide_28155", - "op" : "Divide", - "outputs" : ["Divide_28155_0"] - }, - { - "inputs" : [ "Broadcast_28159", "Add_28162" ], - "name" : "Divide_28163", - "op" : "Divide", - "outputs" : ["Divide_28163_0"] - }, - { - "inputs" : [ "Divide_28155", "Add_28127" ], - "name" : "Multiply_28156", - "op" : "Multiply", - "outputs" : ["Multiply_28156_0"] - }, - { - "inputs" : [ "Divide_28163", "Tanh_28165" ], - "name" : "Multiply_28166", - "op" : "Multiply", - "outputs" : ["Multiply_28166_0"] - }, - { - "inputs" : [ "Multiply_28156", "Multiply_28166" ], - "name" : "Add_28167", - "op" : "Add", - "outputs" : ["Add_28167_0"] - }, - { - "inputs" : ["Add_28167"], - "name" : "Tanh_28168", - "op" : "Tanh", - "outputs" : ["Tanh_28168_0"] - }, - { - "inputs" : [ "Divide_28148", "Tanh_28168" ], - "name" : "Multiply_28169", - "op" : "Multiply", - "outputs" : ["Multiply_28169_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28169"], - "name" : "Reshape_28170", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28170_0"] - }, - { - "inputs" : [ "Multiply_28169", "Reshape_28177" ], - "name" : "Dot_28178", - "op" : "Dot", - "outputs" : ["Dot_28178_0"] - }, - { - "inputs" : [ "Dot_28178", "Broadcast_28179" ], - "name" : "Add_28180", - "op" : "Add", - "outputs" : ["Add_28180_0"] - }, - { - "inputs" : [ "Add_28176", "Add_28180" ], - "name" : "Add_28181", - "op" : "Add", - "outputs" : ["Add_28181_0"] - }, - { - "inputs" : ["Add_28181"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28182", - "op" : "Slice", - "outputs" : ["Slice_28182_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28181"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28197", - "op" : "Slice", - "outputs" : ["Slice_28197_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28181"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28189", - "op" : "Slice", - "outputs" : ["Slice_28189_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28181"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28204", - "op" : "Slice", - "outputs" : ["Slice_28204_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28182"], - "name" : "Negative_28185", - "op" : "Negative", - "outputs" : ["Negative_28185_0"] - }, - { - "inputs" : ["Slice_28197"], - "name" : "Negative_28200", - "op" : "Negative", - "outputs" : ["Negative_28200_0"] - }, - { - "inputs" : ["Slice_28189"], - "name" : "Negative_28192", - "op" : "Negative", - "outputs" : ["Negative_28192_0"] - }, - { - "inputs" : ["Slice_28204"], - "name" : "Tanh_28205", - "op" : "Tanh", - "outputs" : ["Tanh_28205_0"] - }, - { - "inputs" : ["Negative_28185"], - "name" : "Exp_28186", - "op" : "Exp", - "outputs" : ["Exp_28186_0"] - }, - { - "inputs" : ["Negative_28200"], - "name" : "Exp_28201", - "op" : "Exp", - "outputs" : ["Exp_28201_0"] - }, - { - "inputs" : ["Negative_28192"], - "name" : "Exp_28193", - "op" : "Exp", - "outputs" : ["Exp_28193_0"] - }, - { - "inputs" : [ "Broadcast_28184", "Exp_28186" ], - "name" : "Add_28187", - "op" : "Add", - "outputs" : ["Add_28187_0"] - }, - { - "inputs" : [ "Broadcast_28199", "Exp_28201" ], - "name" : "Add_28202", - "op" : "Add", - "outputs" : ["Add_28202_0"] - }, - { - "inputs" : [ "Broadcast_28191", "Exp_28193" ], - "name" : "Add_28194", - "op" : "Add", - "outputs" : ["Add_28194_0"] - }, - { - "inputs" : [ "Broadcast_28184", "Add_28187" ], - "name" : "Divide_28188", - "op" : "Divide", - "outputs" : ["Divide_28188_0"] - }, - { - "inputs" : [ "Broadcast_28199", "Add_28202" ], - "name" : "Divide_28203", - "op" : "Divide", - "outputs" : ["Divide_28203_0"] - }, - { - "inputs" : [ "Broadcast_28191", "Add_28194" ], - "name" : "Divide_28195", - "op" : "Divide", - "outputs" : ["Divide_28195_0"] - }, - { - "inputs" : [ "Divide_28203", "Tanh_28205" ], - "name" : "Multiply_28206", - "op" : "Multiply", - "outputs" : ["Multiply_28206_0"] - }, - { - "inputs" : [ "Divide_28195", "Add_28167" ], - "name" : "Multiply_28196", - "op" : "Multiply", - "outputs" : ["Multiply_28196_0"] - }, - { - "inputs" : [ "Multiply_28196", "Multiply_28206" ], - "name" : "Add_28207", - "op" : "Add", - "outputs" : ["Add_28207_0"] - }, - { - "inputs" : ["Add_28207"], - "name" : "Tanh_28208", - "op" : "Tanh", - "outputs" : ["Tanh_28208_0"] - }, - { - "inputs" : [ "Divide_28188", "Tanh_28208" ], - "name" : "Multiply_28209", - "op" : "Multiply", - "outputs" : ["Multiply_28209_0"] - }, - { - "inputs" : [ "Multiply_28209", "Reshape_28217" ], - "name" : "Dot_28218", - "op" : "Dot", - "outputs" : ["Dot_28218_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28209"], - "name" : "Reshape_28210", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28210_0"] - }, - { - "inputs" : [ "Dot_28218", "Broadcast_28219" ], - "name" : "Add_28220", - "op" : "Add", - "outputs" : ["Add_28220_0"] - }, - { - "inputs" : [ "Add_28216", "Add_28220" ], - "name" : "Add_28221", - "op" : "Add", - "outputs" : ["Add_28221_0"] - }, - { - "inputs" : ["Add_28221"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28222", - "op" : "Slice", - "outputs" : ["Slice_28222_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28221"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28244", - "op" : "Slice", - "outputs" : ["Slice_28244_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28221"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28237", - "op" : "Slice", - "outputs" : ["Slice_28237_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28221"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28229", - "op" : "Slice", - "outputs" : ["Slice_28229_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_28222"], - "name" : "Negative_28225", - "op" : "Negative", - "outputs" : ["Negative_28225_0"] - }, - { - "inputs" : ["Slice_28244"], - "name" : "Tanh_28245", - "op" : "Tanh", - "outputs" : ["Tanh_28245_0"] - }, - { - "inputs" : ["Slice_28237"], - "name" : "Negative_28240", - "op" : "Negative", - "outputs" : ["Negative_28240_0"] - }, - { - "inputs" : ["Slice_28229"], - "name" : "Negative_28232", - "op" : "Negative", - "outputs" : ["Negative_28232_0"] - }, - { - "inputs" : ["Negative_28225"], - "name" : "Exp_28226", - "op" : "Exp", - "outputs" : ["Exp_28226_0"] - }, - { - "inputs" : ["Negative_28240"], - "name" : "Exp_28241", - "op" : "Exp", - "outputs" : ["Exp_28241_0"] - }, - { - "inputs" : ["Negative_28232"], - "name" : "Exp_28233", - "op" : "Exp", - "outputs" : ["Exp_28233_0"] - }, - { - "inputs" : [ "Broadcast_28224", "Exp_28226" ], - "name" : "Add_28227", - "op" : "Add", - "outputs" : ["Add_28227_0"] - }, - { - "inputs" : [ "Broadcast_28239", "Exp_28241" ], - "name" : "Add_28242", - "op" : "Add", - "outputs" : ["Add_28242_0"] - }, - { - "inputs" : [ "Broadcast_28231", "Exp_28233" ], - "name" : "Add_28234", - "op" : "Add", - "outputs" : ["Add_28234_0"] - }, - { - "inputs" : [ "Broadcast_28224", "Add_28227" ], - "name" : "Divide_28228", - "op" : "Divide", - "outputs" : ["Divide_28228_0"] - }, - { - "inputs" : [ "Broadcast_28239", "Add_28242" ], - "name" : "Divide_28243", - "op" : "Divide", - "outputs" : ["Divide_28243_0"] - }, - { - "inputs" : [ "Broadcast_28231", "Add_28234" ], - "name" : "Divide_28235", - "op" : "Divide", - "outputs" : ["Divide_28235_0"] - }, - { - "inputs" : [ "Divide_28243", "Tanh_28245" ], - "name" : "Multiply_28246", - "op" : "Multiply", - "outputs" : ["Multiply_28246_0"] - }, - { - "inputs" : [ "Divide_28235", "Add_28207" ], - "name" : "Multiply_28236", - "op" : "Multiply", - "outputs" : ["Multiply_28236_0"] - }, - { - "inputs" : [ "Multiply_28236", "Multiply_28246" ], - "name" : "Add_28247", - "op" : "Add", - "outputs" : ["Add_28247_0"] - }, - { - "inputs" : ["Add_28247"], - "name" : "Tanh_28248", - "op" : "Tanh", - "outputs" : ["Tanh_28248_0"] - }, - { - "inputs" : [ "Divide_28228", "Tanh_28248" ], - "name" : "Multiply_28249", - "op" : "Multiply", - "outputs" : ["Multiply_28249_0"] - }, - { - "inputs" : [ "Multiply_28249", "Reshape_28257" ], - "name" : "Dot_28258", - "op" : "Dot", - "outputs" : ["Dot_28258_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28249"], - "name" : "Reshape_28250", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28250_0"] - }, - { - "inputs" : [ "Dot_28258", "Broadcast_28259" ], - "name" : "Add_28260", - "op" : "Add", - "outputs" : ["Add_28260_0"] - }, - { - "inputs" : [ "Add_28256", "Add_28260" ], - "name" : "Add_28261", - "op" : "Add", - "outputs" : ["Add_28261_0"] - }, - { - "inputs" : ["Add_28261"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28269", - "op" : "Slice", - "outputs" : ["Slice_28269_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28261"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28262", - "op" : "Slice", - "outputs" : ["Slice_28262_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28261"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28277", - "op" : "Slice", - "outputs" : ["Slice_28277_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28261"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28284", - "op" : "Slice", - "outputs" : ["Slice_28284_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28269"], - "name" : "Negative_28272", - "op" : "Negative", - "outputs" : ["Negative_28272_0"] - }, - { - "inputs" : ["Slice_28262"], - "name" : "Negative_28265", - "op" : "Negative", - "outputs" : ["Negative_28265_0"] - }, - { - "inputs" : ["Slice_28277"], - "name" : "Negative_28280", - "op" : "Negative", - "outputs" : ["Negative_28280_0"] - }, - { - "inputs" : ["Slice_28284"], - "name" : "Tanh_28285", - "op" : "Tanh", - "outputs" : ["Tanh_28285_0"] - }, - { - "inputs" : ["Negative_28272"], - "name" : "Exp_28273", - "op" : "Exp", - "outputs" : ["Exp_28273_0"] - }, - { - "inputs" : ["Negative_28265"], - "name" : "Exp_28266", - "op" : "Exp", - "outputs" : ["Exp_28266_0"] - }, - { - "inputs" : ["Negative_28280"], - "name" : "Exp_28281", - "op" : "Exp", - "outputs" : ["Exp_28281_0"] - }, - { - "inputs" : [ "Broadcast_28271", "Exp_28273" ], - "name" : "Add_28274", - "op" : "Add", - "outputs" : ["Add_28274_0"] - }, - { - "inputs" : [ "Broadcast_28264", "Exp_28266" ], - "name" : "Add_28267", - "op" : "Add", - "outputs" : ["Add_28267_0"] - }, - { - "inputs" : [ "Broadcast_28279", "Exp_28281" ], - "name" : "Add_28282", - "op" : "Add", - "outputs" : ["Add_28282_0"] - }, - { - "inputs" : [ "Broadcast_28271", "Add_28274" ], - "name" : "Divide_28275", - "op" : "Divide", - "outputs" : ["Divide_28275_0"] - }, - { - "inputs" : [ "Broadcast_28264", "Add_28267" ], - "name" : "Divide_28268", - "op" : "Divide", - "outputs" : ["Divide_28268_0"] - }, - { - "inputs" : [ "Broadcast_28279", "Add_28282" ], - "name" : "Divide_28283", - "op" : "Divide", - "outputs" : ["Divide_28283_0"] - }, - { - "inputs" : [ "Divide_28275", "Add_28247" ], - "name" : "Multiply_28276", - "op" : "Multiply", - "outputs" : ["Multiply_28276_0"] - }, - { - "inputs" : [ "Divide_28283", "Tanh_28285" ], - "name" : "Multiply_28286", - "op" : "Multiply", - "outputs" : ["Multiply_28286_0"] - }, - { - "inputs" : [ "Multiply_28276", "Multiply_28286" ], - "name" : "Add_28287", - "op" : "Add", - "outputs" : ["Add_28287_0"] - }, - { - "inputs" : ["Add_28287"], - "name" : "Tanh_28288", - "op" : "Tanh", - "outputs" : ["Tanh_28288_0"] - }, - { - "inputs" : [ "Divide_28268", "Tanh_28288" ], - "name" : "Multiply_28289", - "op" : "Multiply", - "outputs" : ["Multiply_28289_0"] - }, - { - "inputs" : [ "Multiply_28289", "Reshape_28297" ], - "name" : "Dot_28298", - "op" : "Dot", - "outputs" : ["Dot_28298_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28289"], - "name" : "Reshape_28290", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28290_0"] - }, - { - "inputs" : [ "Dot_28298", "Broadcast_28299" ], - "name" : "Add_28300", - "op" : "Add", - "outputs" : ["Add_28300_0"] - }, - { - "inputs" : [ "Add_28296", "Add_28300" ], - "name" : "Add_28301", - "op" : "Add", - "outputs" : ["Add_28301_0"] - }, - { - "inputs" : ["Add_28301"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28302", - "op" : "Slice", - "outputs" : ["Slice_28302_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28301"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28324", - "op" : "Slice", - "outputs" : ["Slice_28324_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28301"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28309", - "op" : "Slice", - "outputs" : ["Slice_28309_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28301"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28317", - "op" : "Slice", - "outputs" : ["Slice_28317_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_28302"], - "name" : "Negative_28305", - "op" : "Negative", - "outputs" : ["Negative_28305_0"] - }, - { - "inputs" : ["Slice_28324"], - "name" : "Tanh_28325", - "op" : "Tanh", - "outputs" : ["Tanh_28325_0"] - }, - { - "inputs" : ["Slice_28309"], - "name" : "Negative_28312", - "op" : "Negative", - "outputs" : ["Negative_28312_0"] - }, - { - "inputs" : ["Slice_28317"], - "name" : "Negative_28320", - "op" : "Negative", - "outputs" : ["Negative_28320_0"] - }, - { - "inputs" : ["Negative_28305"], - "name" : "Exp_28306", - "op" : "Exp", - "outputs" : ["Exp_28306_0"] - }, - { - "inputs" : ["Negative_28312"], - "name" : "Exp_28313", - "op" : "Exp", - "outputs" : ["Exp_28313_0"] - }, - { - "inputs" : ["Negative_28320"], - "name" : "Exp_28321", - "op" : "Exp", - "outputs" : ["Exp_28321_0"] - }, - { - "inputs" : [ "Broadcast_28304", "Exp_28306" ], - "name" : "Add_28307", - "op" : "Add", - "outputs" : ["Add_28307_0"] - }, - { - "inputs" : [ "Broadcast_28311", "Exp_28313" ], - "name" : "Add_28314", - "op" : "Add", - "outputs" : ["Add_28314_0"] - }, - { - "inputs" : [ "Broadcast_28319", "Exp_28321" ], - "name" : "Add_28322", - "op" : "Add", - "outputs" : ["Add_28322_0"] - }, - { - "inputs" : [ "Broadcast_28304", "Add_28307" ], - "name" : "Divide_28308", - "op" : "Divide", - "outputs" : ["Divide_28308_0"] - }, - { - "inputs" : [ "Broadcast_28311", "Add_28314" ], - "name" : "Divide_28315", - "op" : "Divide", - "outputs" : ["Divide_28315_0"] - }, - { - "inputs" : [ "Broadcast_28319", "Add_28322" ], - "name" : "Divide_28323", - "op" : "Divide", - "outputs" : ["Divide_28323_0"] - }, - { - "inputs" : [ "Divide_28315", "Add_28287" ], - "name" : "Multiply_28316", - "op" : "Multiply", - "outputs" : ["Multiply_28316_0"] - }, - { - "inputs" : [ "Divide_28323", "Tanh_28325" ], - "name" : "Multiply_28326", - "op" : "Multiply", - "outputs" : ["Multiply_28326_0"] - }, - { - "inputs" : [ "Multiply_28316", "Multiply_28326" ], - "name" : "Add_28327", - "op" : "Add", - "outputs" : ["Add_28327_0"] - }, - { - "inputs" : ["Add_28327"], - "name" : "Tanh_28328", - "op" : "Tanh", - "outputs" : ["Tanh_28328_0"] - }, - { - "inputs" : [ "Divide_28308", "Tanh_28328" ], - "name" : "Multiply_28329", - "op" : "Multiply", - "outputs" : ["Multiply_28329_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28329"], - "name" : "Reshape_28330", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28330_0"] - }, - { - "inputs" : [ "Multiply_28329", "Reshape_28337" ], - "name" : "Dot_28338", - "op" : "Dot", - "outputs" : ["Dot_28338_0"] - }, - { - "inputs" : [ "Dot_28338", "Broadcast_28339" ], - "name" : "Add_28340", - "op" : "Add", - "outputs" : ["Add_28340_0"] - }, - { - "inputs" : [ "Add_28336", "Add_28340" ], - "name" : "Add_28341", - "op" : "Add", - "outputs" : ["Add_28341_0"] - }, - { - "inputs" : ["Add_28341"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28357", - "op" : "Slice", - "outputs" : ["Slice_28357_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28341"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28349", - "op" : "Slice", - "outputs" : ["Slice_28349_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28341"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28342", - "op" : "Slice", - "outputs" : ["Slice_28342_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28341"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28364", - "op" : "Slice", - "outputs" : ["Slice_28364_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28357"], - "name" : "Negative_28360", - "op" : "Negative", - "outputs" : ["Negative_28360_0"] - }, - { - "inputs" : ["Slice_28349"], - "name" : "Negative_28352", - "op" : "Negative", - "outputs" : ["Negative_28352_0"] - }, - { - "inputs" : ["Slice_28342"], - "name" : "Negative_28345", - "op" : "Negative", - "outputs" : ["Negative_28345_0"] - }, - { - "inputs" : ["Slice_28364"], - "name" : "Tanh_28365", - "op" : "Tanh", - "outputs" : ["Tanh_28365_0"] - }, - { - "inputs" : ["Negative_28360"], - "name" : "Exp_28361", - "op" : "Exp", - "outputs" : ["Exp_28361_0"] - }, - { - "inputs" : ["Negative_28352"], - "name" : "Exp_28353", - "op" : "Exp", - "outputs" : ["Exp_28353_0"] - }, - { - "inputs" : ["Negative_28345"], - "name" : "Exp_28346", - "op" : "Exp", - "outputs" : ["Exp_28346_0"] - }, - { - "inputs" : [ "Broadcast_28359", "Exp_28361" ], - "name" : "Add_28362", - "op" : "Add", - "outputs" : ["Add_28362_0"] - }, - { - "inputs" : [ "Broadcast_28351", "Exp_28353" ], - "name" : "Add_28354", - "op" : "Add", - "outputs" : ["Add_28354_0"] - }, - { - "inputs" : [ "Broadcast_28344", "Exp_28346" ], - "name" : "Add_28347", - "op" : "Add", - "outputs" : ["Add_28347_0"] - }, - { - "inputs" : [ "Broadcast_28359", "Add_28362" ], - "name" : "Divide_28363", - "op" : "Divide", - "outputs" : ["Divide_28363_0"] - }, - { - "inputs" : [ "Broadcast_28351", "Add_28354" ], - "name" : "Divide_28355", - "op" : "Divide", - "outputs" : ["Divide_28355_0"] - }, - { - "inputs" : [ "Broadcast_28344", "Add_28347" ], - "name" : "Divide_28348", - "op" : "Divide", - "outputs" : ["Divide_28348_0"] - }, - { - "inputs" : [ "Divide_28363", "Tanh_28365" ], - "name" : "Multiply_28366", - "op" : "Multiply", - "outputs" : ["Multiply_28366_0"] - }, - { - "inputs" : [ "Divide_28355", "Add_28327" ], - "name" : "Multiply_28356", - "op" : "Multiply", - "outputs" : ["Multiply_28356_0"] - }, - { - "inputs" : [ "Multiply_28356", "Multiply_28366" ], - "name" : "Add_28367", - "op" : "Add", - "outputs" : ["Add_28367_0"] - }, - { - "inputs" : ["Add_28367"], - "name" : "Tanh_28368", - "op" : "Tanh", - "outputs" : ["Tanh_28368_0"] - }, - { - "inputs" : [ "Divide_28348", "Tanh_28368" ], - "name" : "Multiply_28369", - "op" : "Multiply", - "outputs" : ["Multiply_28369_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28369"], - "name" : "Reshape_28370", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28370_0"] - }, - { - "inputs" : [ "Multiply_28369", "Reshape_28377" ], - "name" : "Dot_28378", - "op" : "Dot", - "outputs" : ["Dot_28378_0"] - }, - { - "inputs" : [ "Dot_28378", "Broadcast_28379" ], - "name" : "Add_28380", - "op" : "Add", - "outputs" : ["Add_28380_0"] - }, - { - "inputs" : [ "Add_28376", "Add_28380" ], - "name" : "Add_28381", - "op" : "Add", - "outputs" : ["Add_28381_0"] - }, - { - "inputs" : ["Add_28381"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28382", - "op" : "Slice", - "outputs" : ["Slice_28382_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28381"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28389", - "op" : "Slice", - "outputs" : ["Slice_28389_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28381"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28397", - "op" : "Slice", - "outputs" : ["Slice_28397_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28381"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28404", - "op" : "Slice", - "outputs" : ["Slice_28404_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28382"], - "name" : "Negative_28385", - "op" : "Negative", - "outputs" : ["Negative_28385_0"] - }, - { - "inputs" : ["Slice_28389"], - "name" : "Negative_28392", - "op" : "Negative", - "outputs" : ["Negative_28392_0"] - }, - { - "inputs" : ["Slice_28397"], - "name" : "Negative_28400", - "op" : "Negative", - "outputs" : ["Negative_28400_0"] - }, - { - "inputs" : ["Slice_28404"], - "name" : "Tanh_28405", - "op" : "Tanh", - "outputs" : ["Tanh_28405_0"] - }, - { - "inputs" : ["Negative_28385"], - "name" : "Exp_28386", - "op" : "Exp", - "outputs" : ["Exp_28386_0"] - }, - { - "inputs" : ["Negative_28392"], - "name" : "Exp_28393", - "op" : "Exp", - "outputs" : ["Exp_28393_0"] - }, - { - "inputs" : ["Negative_28400"], - "name" : "Exp_28401", - "op" : "Exp", - "outputs" : ["Exp_28401_0"] - }, - { - "inputs" : [ "Broadcast_28384", "Exp_28386" ], - "name" : "Add_28387", - "op" : "Add", - "outputs" : ["Add_28387_0"] - }, - { - "inputs" : [ "Broadcast_28391", "Exp_28393" ], - "name" : "Add_28394", - "op" : "Add", - "outputs" : ["Add_28394_0"] - }, - { - "inputs" : [ "Broadcast_28399", "Exp_28401" ], - "name" : "Add_28402", - "op" : "Add", - "outputs" : ["Add_28402_0"] - }, - { - "inputs" : [ "Broadcast_28384", "Add_28387" ], - "name" : "Divide_28388", - "op" : "Divide", - "outputs" : ["Divide_28388_0"] - }, - { - "inputs" : [ "Broadcast_28391", "Add_28394" ], - "name" : "Divide_28395", - "op" : "Divide", - "outputs" : ["Divide_28395_0"] - }, - { - "inputs" : [ "Broadcast_28399", "Add_28402" ], - "name" : "Divide_28403", - "op" : "Divide", - "outputs" : ["Divide_28403_0"] - }, - { - "inputs" : [ "Divide_28395", "Add_28367" ], - "name" : "Multiply_28396", - "op" : "Multiply", - "outputs" : ["Multiply_28396_0"] - }, - { - "inputs" : [ "Divide_28403", "Tanh_28405" ], - "name" : "Multiply_28406", - "op" : "Multiply", - "outputs" : ["Multiply_28406_0"] - }, - { - "inputs" : [ "Multiply_28396", "Multiply_28406" ], - "name" : "Add_28407", - "op" : "Add", - "outputs" : ["Add_28407_0"] - }, - { - "inputs" : ["Add_28407"], - "name" : "Tanh_28408", - "op" : "Tanh", - "outputs" : ["Tanh_28408_0"] - }, - { - "inputs" : [ "Divide_28388", "Tanh_28408" ], - "name" : "Multiply_28409", - "op" : "Multiply", - "outputs" : ["Multiply_28409_0"] - }, - { - "inputs" : [ "Multiply_28409", "Reshape_28417" ], - "name" : "Dot_28418", - "op" : "Dot", - "outputs" : ["Dot_28418_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28409"], - "name" : "Reshape_28410", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28410_0"] - }, - { - "inputs" : [ "Dot_28418", "Broadcast_28419" ], - "name" : "Add_28420", - "op" : "Add", - "outputs" : ["Add_28420_0"] - }, - { - "inputs" : [ "Add_28416", "Add_28420" ], - "name" : "Add_28421", - "op" : "Add", - "outputs" : ["Add_28421_0"] - }, - { - "inputs" : ["Add_28421"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28429", - "op" : "Slice", - "outputs" : ["Slice_28429_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28421"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28444", - "op" : "Slice", - "outputs" : ["Slice_28444_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28421"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28437", - "op" : "Slice", - "outputs" : ["Slice_28437_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28421"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28422", - "op" : "Slice", - "outputs" : ["Slice_28422_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Slice_28429"], - "name" : "Negative_28432", - "op" : "Negative", - "outputs" : ["Negative_28432_0"] - }, - { - "inputs" : ["Slice_28444"], - "name" : "Tanh_28445", - "op" : "Tanh", - "outputs" : ["Tanh_28445_0"] - }, - { - "inputs" : ["Slice_28437"], - "name" : "Negative_28440", - "op" : "Negative", - "outputs" : ["Negative_28440_0"] - }, - { - "inputs" : ["Slice_28422"], - "name" : "Negative_28425", - "op" : "Negative", - "outputs" : ["Negative_28425_0"] - }, - { - "inputs" : ["Negative_28432"], - "name" : "Exp_28433", - "op" : "Exp", - "outputs" : ["Exp_28433_0"] - }, - { - "inputs" : ["Negative_28440"], - "name" : "Exp_28441", - "op" : "Exp", - "outputs" : ["Exp_28441_0"] - }, - { - "inputs" : ["Negative_28425"], - "name" : "Exp_28426", - "op" : "Exp", - "outputs" : ["Exp_28426_0"] - }, - { - "inputs" : [ "Broadcast_28431", "Exp_28433" ], - "name" : "Add_28434", - "op" : "Add", - "outputs" : ["Add_28434_0"] - }, - { - "inputs" : [ "Broadcast_28439", "Exp_28441" ], - "name" : "Add_28442", - "op" : "Add", - "outputs" : ["Add_28442_0"] - }, - { - "inputs" : [ "Broadcast_28424", "Exp_28426" ], - "name" : "Add_28427", - "op" : "Add", - "outputs" : ["Add_28427_0"] - }, - { - "inputs" : [ "Broadcast_28431", "Add_28434" ], - "name" : "Divide_28435", - "op" : "Divide", - "outputs" : ["Divide_28435_0"] - }, - { - "inputs" : [ "Broadcast_28439", "Add_28442" ], - "name" : "Divide_28443", - "op" : "Divide", - "outputs" : ["Divide_28443_0"] - }, - { - "inputs" : [ "Broadcast_28424", "Add_28427" ], - "name" : "Divide_28428", - "op" : "Divide", - "outputs" : ["Divide_28428_0"] - }, - { - "inputs" : [ "Divide_28435", "Add_28407" ], - "name" : "Multiply_28436", - "op" : "Multiply", - "outputs" : ["Multiply_28436_0"] - }, - { - "inputs" : [ "Divide_28443", "Tanh_28445" ], - "name" : "Multiply_28446", - "op" : "Multiply", - "outputs" : ["Multiply_28446_0"] - }, - { - "inputs" : [ "Multiply_28436", "Multiply_28446" ], - "name" : "Add_28447", - "op" : "Add", - "outputs" : ["Add_28447_0"] - }, - { - "inputs" : ["Add_28447"], - "name" : "Tanh_28448", - "op" : "Tanh", - "outputs" : ["Tanh_28448_0"] - }, - { - "inputs" : [ "Divide_28428", "Tanh_28448" ], - "name" : "Multiply_28449", - "op" : "Multiply", - "outputs" : ["Multiply_28449_0"] - }, - { - "inputs" : [ "Multiply_28449", "Reshape_28457" ], - "name" : "Dot_28458", - "op" : "Dot", - "outputs" : ["Dot_28458_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28449"], - "name" : "Reshape_28450", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28450_0"] - }, - { - "inputs" : [ "Dot_28458", "Broadcast_28459" ], - "name" : "Add_28460", - "op" : "Add", - "outputs" : ["Add_28460_0"] - }, - { - "inputs" : [ "Add_28456", "Add_28460" ], - "name" : "Add_28461", - "op" : "Add", - "outputs" : ["Add_28461_0"] - }, - { - "inputs" : ["Add_28461"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28469", - "op" : "Slice", - "outputs" : ["Slice_28469_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28461"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28462", - "op" : "Slice", - "outputs" : ["Slice_28462_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28461"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28484", - "op" : "Slice", - "outputs" : ["Slice_28484_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28461"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28477", - "op" : "Slice", - "outputs" : ["Slice_28477_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_28469"], - "name" : "Negative_28472", - "op" : "Negative", - "outputs" : ["Negative_28472_0"] - }, - { - "inputs" : ["Slice_28462"], - "name" : "Negative_28465", - "op" : "Negative", - "outputs" : ["Negative_28465_0"] - }, - { - "inputs" : ["Slice_28484"], - "name" : "Tanh_28485", - "op" : "Tanh", - "outputs" : ["Tanh_28485_0"] - }, - { - "inputs" : ["Slice_28477"], - "name" : "Negative_28480", - "op" : "Negative", - "outputs" : ["Negative_28480_0"] - }, - { - "inputs" : ["Negative_28472"], - "name" : "Exp_28473", - "op" : "Exp", - "outputs" : ["Exp_28473_0"] - }, - { - "inputs" : ["Negative_28465"], - "name" : "Exp_28466", - "op" : "Exp", - "outputs" : ["Exp_28466_0"] - }, - { - "inputs" : ["Negative_28480"], - "name" : "Exp_28481", - "op" : "Exp", - "outputs" : ["Exp_28481_0"] - }, - { - "inputs" : [ "Broadcast_28471", "Exp_28473" ], - "name" : "Add_28474", - "op" : "Add", - "outputs" : ["Add_28474_0"] - }, - { - "inputs" : [ "Broadcast_28464", "Exp_28466" ], - "name" : "Add_28467", - "op" : "Add", - "outputs" : ["Add_28467_0"] - }, - { - "inputs" : [ "Broadcast_28479", "Exp_28481" ], - "name" : "Add_28482", - "op" : "Add", - "outputs" : ["Add_28482_0"] - }, - { - "inputs" : [ "Broadcast_28471", "Add_28474" ], - "name" : "Divide_28475", - "op" : "Divide", - "outputs" : ["Divide_28475_0"] - }, - { - "inputs" : [ "Broadcast_28464", "Add_28467" ], - "name" : "Divide_28468", - "op" : "Divide", - "outputs" : ["Divide_28468_0"] - }, - { - "inputs" : [ "Broadcast_28479", "Add_28482" ], - "name" : "Divide_28483", - "op" : "Divide", - "outputs" : ["Divide_28483_0"] - }, - { - "inputs" : [ "Divide_28475", "Add_28447" ], - "name" : "Multiply_28476", - "op" : "Multiply", - "outputs" : ["Multiply_28476_0"] - }, - { - "inputs" : [ "Divide_28483", "Tanh_28485" ], - "name" : "Multiply_28486", - "op" : "Multiply", - "outputs" : ["Multiply_28486_0"] - }, - { - "inputs" : [ "Multiply_28476", "Multiply_28486" ], - "name" : "Add_28487", - "op" : "Add", - "outputs" : ["Add_28487_0"] - }, - { - "inputs" : ["Add_28487"], - "name" : "Tanh_28488", - "op" : "Tanh", - "outputs" : ["Tanh_28488_0"] - }, - { - "inputs" : [ "Divide_28468", "Tanh_28488" ], - "name" : "Multiply_28489", - "op" : "Multiply", - "outputs" : ["Multiply_28489_0"] - }, - { - "inputs" : [ "Multiply_28489", "Reshape_28497" ], - "name" : "Dot_28498", - "op" : "Dot", - "outputs" : ["Dot_28498_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28489"], - "name" : "Reshape_28490", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28490_0"] - }, - { - "inputs" : [ "Dot_28498", "Broadcast_28499" ], - "name" : "Add_28500", - "op" : "Add", - "outputs" : ["Add_28500_0"] - }, - { - "inputs" : [ "Add_28496", "Add_28500" ], - "name" : "Add_28501", - "op" : "Add", - "outputs" : ["Add_28501_0"] - }, - { - "inputs" : ["Add_28501"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28502", - "op" : "Slice", - "outputs" : ["Slice_28502_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28501"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28509", - "op" : "Slice", - "outputs" : ["Slice_28509_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28501"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28524", - "op" : "Slice", - "outputs" : ["Slice_28524_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28501"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28517", - "op" : "Slice", - "outputs" : ["Slice_28517_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_28502"], - "name" : "Negative_28505", - "op" : "Negative", - "outputs" : ["Negative_28505_0"] - }, - { - "inputs" : ["Slice_28509"], - "name" : "Negative_28512", - "op" : "Negative", - "outputs" : ["Negative_28512_0"] - }, - { - "inputs" : ["Slice_28524"], - "name" : "Tanh_28525", - "op" : "Tanh", - "outputs" : ["Tanh_28525_0"] - }, - { - "inputs" : ["Slice_28517"], - "name" : "Negative_28520", - "op" : "Negative", - "outputs" : ["Negative_28520_0"] - }, - { - "inputs" : ["Negative_28505"], - "name" : "Exp_28506", - "op" : "Exp", - "outputs" : ["Exp_28506_0"] - }, - { - "inputs" : ["Negative_28512"], - "name" : "Exp_28513", - "op" : "Exp", - "outputs" : ["Exp_28513_0"] - }, - { - "inputs" : ["Negative_28520"], - "name" : "Exp_28521", - "op" : "Exp", - "outputs" : ["Exp_28521_0"] - }, - { - "inputs" : [ "Broadcast_28504", "Exp_28506" ], - "name" : "Add_28507", - "op" : "Add", - "outputs" : ["Add_28507_0"] - }, - { - "inputs" : [ "Broadcast_28511", "Exp_28513" ], - "name" : "Add_28514", - "op" : "Add", - "outputs" : ["Add_28514_0"] - }, - { - "inputs" : [ "Broadcast_28519", "Exp_28521" ], - "name" : "Add_28522", - "op" : "Add", - "outputs" : ["Add_28522_0"] - }, - { - "inputs" : [ "Broadcast_28504", "Add_28507" ], - "name" : "Divide_28508", - "op" : "Divide", - "outputs" : ["Divide_28508_0"] - }, - { - "inputs" : [ "Broadcast_28511", "Add_28514" ], - "name" : "Divide_28515", - "op" : "Divide", - "outputs" : ["Divide_28515_0"] - }, - { - "inputs" : [ "Broadcast_28519", "Add_28522" ], - "name" : "Divide_28523", - "op" : "Divide", - "outputs" : ["Divide_28523_0"] - }, - { - "inputs" : [ "Divide_28515", "Add_28487" ], - "name" : "Multiply_28516", - "op" : "Multiply", - "outputs" : ["Multiply_28516_0"] - }, - { - "inputs" : [ "Divide_28523", "Tanh_28525" ], - "name" : "Multiply_28526", - "op" : "Multiply", - "outputs" : ["Multiply_28526_0"] - }, - { - "inputs" : [ "Multiply_28516", "Multiply_28526" ], - "name" : "Add_28527", - "op" : "Add", - "outputs" : ["Add_28527_0"] - }, - { - "inputs" : ["Add_28527"], - "name" : "Tanh_28528", - "op" : "Tanh", - "outputs" : ["Tanh_28528_0"] - }, - { - "inputs" : [ "Divide_28508", "Tanh_28528" ], - "name" : "Multiply_28529", - "op" : "Multiply", - "outputs" : ["Multiply_28529_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28529"], - "name" : "Reshape_28530", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28530_0"] - }, - { - "inputs" : [ "Multiply_28529", "Reshape_28537" ], - "name" : "Dot_28538", - "op" : "Dot", - "outputs" : ["Dot_28538_0"] - }, - { - "inputs" : [ "Dot_28538", "Broadcast_28539" ], - "name" : "Add_28540", - "op" : "Add", - "outputs" : ["Add_28540_0"] - }, - { - "inputs" : [ "Add_28536", "Add_28540" ], - "name" : "Add_28541", - "op" : "Add", - "outputs" : ["Add_28541_0"] - }, - { - "inputs" : ["Add_28541"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28542", - "op" : "Slice", - "outputs" : ["Slice_28542_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28541"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28557", - "op" : "Slice", - "outputs" : ["Slice_28557_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28541"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28549", - "op" : "Slice", - "outputs" : ["Slice_28549_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28541"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28564", - "op" : "Slice", - "outputs" : ["Slice_28564_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28542"], - "name" : "Negative_28545", - "op" : "Negative", - "outputs" : ["Negative_28545_0"] - }, - { - "inputs" : ["Slice_28557"], - "name" : "Negative_28560", - "op" : "Negative", - "outputs" : ["Negative_28560_0"] - }, - { - "inputs" : ["Slice_28549"], - "name" : "Negative_28552", - "op" : "Negative", - "outputs" : ["Negative_28552_0"] - }, - { - "inputs" : ["Slice_28564"], - "name" : "Tanh_28565", - "op" : "Tanh", - "outputs" : ["Tanh_28565_0"] - }, - { - "inputs" : ["Negative_28545"], - "name" : "Exp_28546", - "op" : "Exp", - "outputs" : ["Exp_28546_0"] - }, - { - "inputs" : ["Negative_28560"], - "name" : "Exp_28561", - "op" : "Exp", - "outputs" : ["Exp_28561_0"] - }, - { - "inputs" : ["Negative_28552"], - "name" : "Exp_28553", - "op" : "Exp", - "outputs" : ["Exp_28553_0"] - }, - { - "inputs" : [ "Broadcast_28544", "Exp_28546" ], - "name" : "Add_28547", - "op" : "Add", - "outputs" : ["Add_28547_0"] - }, - { - "inputs" : [ "Broadcast_28559", "Exp_28561" ], - "name" : "Add_28562", - "op" : "Add", - "outputs" : ["Add_28562_0"] - }, - { - "inputs" : [ "Broadcast_28551", "Exp_28553" ], - "name" : "Add_28554", - "op" : "Add", - "outputs" : ["Add_28554_0"] - }, - { - "inputs" : [ "Broadcast_28544", "Add_28547" ], - "name" : "Divide_28548", - "op" : "Divide", - "outputs" : ["Divide_28548_0"] - }, - { - "inputs" : [ "Broadcast_28559", "Add_28562" ], - "name" : "Divide_28563", - "op" : "Divide", - "outputs" : ["Divide_28563_0"] - }, - { - "inputs" : [ "Broadcast_28551", "Add_28554" ], - "name" : "Divide_28555", - "op" : "Divide", - "outputs" : ["Divide_28555_0"] - }, - { - "inputs" : [ "Divide_28563", "Tanh_28565" ], - "name" : "Multiply_28566", - "op" : "Multiply", - "outputs" : ["Multiply_28566_0"] - }, - { - "inputs" : [ "Divide_28555", "Add_28527" ], - "name" : "Multiply_28556", - "op" : "Multiply", - "outputs" : ["Multiply_28556_0"] - }, - { - "inputs" : [ "Multiply_28556", "Multiply_28566" ], - "name" : "Add_28567", - "op" : "Add", - "outputs" : ["Add_28567_0"] - }, - { - "inputs" : ["Add_28567"], - "name" : "Tanh_28568", - "op" : "Tanh", - "outputs" : ["Tanh_28568_0"] - }, - { - "inputs" : [ "Divide_28548", "Tanh_28568" ], - "name" : "Multiply_28569", - "op" : "Multiply", - "outputs" : ["Multiply_28569_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28569"], - "name" : "Reshape_28570", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28570_0"] - }, - { - "inputs" : [ "Multiply_28569", "Reshape_28577" ], - "name" : "Dot_28578", - "op" : "Dot", - "outputs" : ["Dot_28578_0"] - }, - { - "inputs" : [ "Dot_28578", "Broadcast_28579" ], - "name" : "Add_28580", - "op" : "Add", - "outputs" : ["Add_28580_0"] - }, - { - "inputs" : [ "Add_28576", "Add_28580" ], - "name" : "Add_28581", - "op" : "Add", - "outputs" : ["Add_28581_0"] - }, - { - "inputs" : ["Add_28581"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28582", - "op" : "Slice", - "outputs" : ["Slice_28582_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28581"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28604", - "op" : "Slice", - "outputs" : ["Slice_28604_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28581"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28597", - "op" : "Slice", - "outputs" : ["Slice_28597_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28581"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28589", - "op" : "Slice", - "outputs" : ["Slice_28589_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_28582"], - "name" : "Negative_28585", - "op" : "Negative", - "outputs" : ["Negative_28585_0"] - }, - { - "inputs" : ["Slice_28604"], - "name" : "Tanh_28605", - "op" : "Tanh", - "outputs" : ["Tanh_28605_0"] - }, - { - "inputs" : ["Slice_28597"], - "name" : "Negative_28600", - "op" : "Negative", - "outputs" : ["Negative_28600_0"] - }, - { - "inputs" : ["Slice_28589"], - "name" : "Negative_28592", - "op" : "Negative", - "outputs" : ["Negative_28592_0"] - }, - { - "inputs" : ["Negative_28585"], - "name" : "Exp_28586", - "op" : "Exp", - "outputs" : ["Exp_28586_0"] - }, - { - "inputs" : ["Negative_28600"], - "name" : "Exp_28601", - "op" : "Exp", - "outputs" : ["Exp_28601_0"] - }, - { - "inputs" : ["Negative_28592"], - "name" : "Exp_28593", - "op" : "Exp", - "outputs" : ["Exp_28593_0"] - }, - { - "inputs" : [ "Broadcast_28584", "Exp_28586" ], - "name" : "Add_28587", - "op" : "Add", - "outputs" : ["Add_28587_0"] - }, - { - "inputs" : [ "Broadcast_28599", "Exp_28601" ], - "name" : "Add_28602", - "op" : "Add", - "outputs" : ["Add_28602_0"] - }, - { - "inputs" : [ "Broadcast_28591", "Exp_28593" ], - "name" : "Add_28594", - "op" : "Add", - "outputs" : ["Add_28594_0"] - }, - { - "inputs" : [ "Broadcast_28584", "Add_28587" ], - "name" : "Divide_28588", - "op" : "Divide", - "outputs" : ["Divide_28588_0"] - }, - { - "inputs" : [ "Broadcast_28599", "Add_28602" ], - "name" : "Divide_28603", - "op" : "Divide", - "outputs" : ["Divide_28603_0"] - }, - { - "inputs" : [ "Broadcast_28591", "Add_28594" ], - "name" : "Divide_28595", - "op" : "Divide", - "outputs" : ["Divide_28595_0"] - }, - { - "inputs" : [ "Divide_28603", "Tanh_28605" ], - "name" : "Multiply_28606", - "op" : "Multiply", - "outputs" : ["Multiply_28606_0"] - }, - { - "inputs" : [ "Divide_28595", "Add_28567" ], - "name" : "Multiply_28596", - "op" : "Multiply", - "outputs" : ["Multiply_28596_0"] - }, - { - "inputs" : [ "Multiply_28596", "Multiply_28606" ], - "name" : "Add_28607", - "op" : "Add", - "outputs" : ["Add_28607_0"] - }, - { - "inputs" : ["Add_28607"], - "name" : "Tanh_28608", - "op" : "Tanh", - "outputs" : ["Tanh_28608_0"] - }, - { - "inputs" : [ "Divide_28588", "Tanh_28608" ], - "name" : "Multiply_28609", - "op" : "Multiply", - "outputs" : ["Multiply_28609_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28609"], - "name" : "Reshape_28610", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28610_0"] - }, - { - "inputs" : [ "Multiply_28609", "Reshape_28617" ], - "name" : "Dot_28618", - "op" : "Dot", - "outputs" : ["Dot_28618_0"] - }, - { - "inputs" : [ "Dot_28618", "Broadcast_28619" ], - "name" : "Add_28620", - "op" : "Add", - "outputs" : ["Add_28620_0"] - }, - { - "inputs" : [ "Add_28616", "Add_28620" ], - "name" : "Add_28621", - "op" : "Add", - "outputs" : ["Add_28621_0"] - }, - { - "inputs" : ["Add_28621"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28629", - "op" : "Slice", - "outputs" : ["Slice_28629_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28621"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28622", - "op" : "Slice", - "outputs" : ["Slice_28622_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28621"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28637", - "op" : "Slice", - "outputs" : ["Slice_28637_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28621"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28644", - "op" : "Slice", - "outputs" : ["Slice_28644_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28629"], - "name" : "Negative_28632", - "op" : "Negative", - "outputs" : ["Negative_28632_0"] - }, - { - "inputs" : ["Slice_28622"], - "name" : "Negative_28625", - "op" : "Negative", - "outputs" : ["Negative_28625_0"] - }, - { - "inputs" : ["Slice_28637"], - "name" : "Negative_28640", - "op" : "Negative", - "outputs" : ["Negative_28640_0"] - }, - { - "inputs" : ["Slice_28644"], - "name" : "Tanh_28645", - "op" : "Tanh", - "outputs" : ["Tanh_28645_0"] - }, - { - "inputs" : ["Negative_28632"], - "name" : "Exp_28633", - "op" : "Exp", - "outputs" : ["Exp_28633_0"] - }, - { - "inputs" : ["Negative_28625"], - "name" : "Exp_28626", - "op" : "Exp", - "outputs" : ["Exp_28626_0"] - }, - { - "inputs" : ["Negative_28640"], - "name" : "Exp_28641", - "op" : "Exp", - "outputs" : ["Exp_28641_0"] - }, - { - "inputs" : [ "Broadcast_28631", "Exp_28633" ], - "name" : "Add_28634", - "op" : "Add", - "outputs" : ["Add_28634_0"] - }, - { - "inputs" : [ "Broadcast_28624", "Exp_28626" ], - "name" : "Add_28627", - "op" : "Add", - "outputs" : ["Add_28627_0"] - }, - { - "inputs" : [ "Broadcast_28639", "Exp_28641" ], - "name" : "Add_28642", - "op" : "Add", - "outputs" : ["Add_28642_0"] - }, - { - "inputs" : [ "Broadcast_28631", "Add_28634" ], - "name" : "Divide_28635", - "op" : "Divide", - "outputs" : ["Divide_28635_0"] - }, - { - "inputs" : [ "Broadcast_28624", "Add_28627" ], - "name" : "Divide_28628", - "op" : "Divide", - "outputs" : ["Divide_28628_0"] - }, - { - "inputs" : [ "Broadcast_28639", "Add_28642" ], - "name" : "Divide_28643", - "op" : "Divide", - "outputs" : ["Divide_28643_0"] - }, - { - "inputs" : [ "Divide_28635", "Add_28607" ], - "name" : "Multiply_28636", - "op" : "Multiply", - "outputs" : ["Multiply_28636_0"] - }, - { - "inputs" : [ "Divide_28643", "Tanh_28645" ], - "name" : "Multiply_28646", - "op" : "Multiply", - "outputs" : ["Multiply_28646_0"] - }, - { - "inputs" : [ "Multiply_28636", "Multiply_28646" ], - "name" : "Add_28647", - "op" : "Add", - "outputs" : ["Add_28647_0"] - }, - { - "inputs" : ["Add_28647"], - "name" : "Tanh_28648", - "op" : "Tanh", - "outputs" : ["Tanh_28648_0"] - }, - { - "inputs" : [ "Divide_28628", "Tanh_28648" ], - "name" : "Multiply_28649", - "op" : "Multiply", - "outputs" : ["Multiply_28649_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28649"], - "name" : "Reshape_28650", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28650_0"] - }, - { - "inputs" : [ "Multiply_28649", "Reshape_28657" ], - "name" : "Dot_28658", - "op" : "Dot", - "outputs" : ["Dot_28658_0"] - }, - { - "inputs" : [ "Dot_28658", "Broadcast_28659" ], - "name" : "Add_28660", - "op" : "Add", - "outputs" : ["Add_28660_0"] - }, - { - "inputs" : [ "Add_28656", "Add_28660" ], - "name" : "Add_28661", - "op" : "Add", - "outputs" : ["Add_28661_0"] - }, - { - "inputs" : ["Add_28661"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28662", - "op" : "Slice", - "outputs" : ["Slice_28662_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28661"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28669", - "op" : "Slice", - "outputs" : ["Slice_28669_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28661"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28677", - "op" : "Slice", - "outputs" : ["Slice_28677_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28661"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28684", - "op" : "Slice", - "outputs" : ["Slice_28684_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28662"], - "name" : "Negative_28665", - "op" : "Negative", - "outputs" : ["Negative_28665_0"] - }, - { - "inputs" : ["Slice_28669"], - "name" : "Negative_28672", - "op" : "Negative", - "outputs" : ["Negative_28672_0"] - }, - { - "inputs" : ["Slice_28677"], - "name" : "Negative_28680", - "op" : "Negative", - "outputs" : ["Negative_28680_0"] - }, - { - "inputs" : ["Slice_28684"], - "name" : "Tanh_28685", - "op" : "Tanh", - "outputs" : ["Tanh_28685_0"] - }, - { - "inputs" : ["Negative_28665"], - "name" : "Exp_28666", - "op" : "Exp", - "outputs" : ["Exp_28666_0"] - }, - { - "inputs" : ["Negative_28672"], - "name" : "Exp_28673", - "op" : "Exp", - "outputs" : ["Exp_28673_0"] - }, - { - "inputs" : ["Negative_28680"], - "name" : "Exp_28681", - "op" : "Exp", - "outputs" : ["Exp_28681_0"] - }, - { - "inputs" : [ "Broadcast_28664", "Exp_28666" ], - "name" : "Add_28667", - "op" : "Add", - "outputs" : ["Add_28667_0"] - }, - { - "inputs" : [ "Broadcast_28671", "Exp_28673" ], - "name" : "Add_28674", - "op" : "Add", - "outputs" : ["Add_28674_0"] - }, - { - "inputs" : [ "Broadcast_28679", "Exp_28681" ], - "name" : "Add_28682", - "op" : "Add", - "outputs" : ["Add_28682_0"] - }, - { - "inputs" : [ "Broadcast_28664", "Add_28667" ], - "name" : "Divide_28668", - "op" : "Divide", - "outputs" : ["Divide_28668_0"] - }, - { - "inputs" : [ "Broadcast_28671", "Add_28674" ], - "name" : "Divide_28675", - "op" : "Divide", - "outputs" : ["Divide_28675_0"] - }, - { - "inputs" : [ "Broadcast_28679", "Add_28682" ], - "name" : "Divide_28683", - "op" : "Divide", - "outputs" : ["Divide_28683_0"] - }, - { - "inputs" : [ "Divide_28675", "Add_28647" ], - "name" : "Multiply_28676", - "op" : "Multiply", - "outputs" : ["Multiply_28676_0"] - }, - { - "inputs" : [ "Divide_28683", "Tanh_28685" ], - "name" : "Multiply_28686", - "op" : "Multiply", - "outputs" : ["Multiply_28686_0"] - }, - { - "inputs" : [ "Multiply_28676", "Multiply_28686" ], - "name" : "Add_28687", - "op" : "Add", - "outputs" : ["Add_28687_0"] - }, - { - "inputs" : ["Add_28687"], - "name" : "Tanh_28688", - "op" : "Tanh", - "outputs" : ["Tanh_28688_0"] - }, - { - "inputs" : [ "Divide_28668", "Tanh_28688" ], - "name" : "Multiply_28689", - "op" : "Multiply", - "outputs" : ["Multiply_28689_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28689"], - "name" : "Reshape_28690", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28690_0"] - }, - { - "inputs" : [ "Multiply_28689", "Reshape_28697" ], - "name" : "Dot_28698", - "op" : "Dot", - "outputs" : ["Dot_28698_0"] - }, - { - "inputs" : [ "Dot_28698", "Broadcast_28699" ], - "name" : "Add_28700", - "op" : "Add", - "outputs" : ["Add_28700_0"] - }, - { - "inputs" : [ "Add_28696", "Add_28700" ], - "name" : "Add_28701", - "op" : "Add", - "outputs" : ["Add_28701_0"] - }, - { - "inputs" : ["Add_28701"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28724", - "op" : "Slice", - "outputs" : ["Slice_28724_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28701"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28717", - "op" : "Slice", - "outputs" : ["Slice_28717_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28701"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28709", - "op" : "Slice", - "outputs" : ["Slice_28709_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28701"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28702", - "op" : "Slice", - "outputs" : ["Slice_28702_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Slice_28724"], - "name" : "Tanh_28725", - "op" : "Tanh", - "outputs" : ["Tanh_28725_0"] - }, - { - "inputs" : ["Slice_28717"], - "name" : "Negative_28720", - "op" : "Negative", - "outputs" : ["Negative_28720_0"] - }, - { - "inputs" : ["Slice_28709"], - "name" : "Negative_28712", - "op" : "Negative", - "outputs" : ["Negative_28712_0"] - }, - { - "inputs" : ["Slice_28702"], - "name" : "Negative_28705", - "op" : "Negative", - "outputs" : ["Negative_28705_0"] - }, - { - "inputs" : ["Negative_28720"], - "name" : "Exp_28721", - "op" : "Exp", - "outputs" : ["Exp_28721_0"] - }, - { - "inputs" : ["Negative_28712"], - "name" : "Exp_28713", - "op" : "Exp", - "outputs" : ["Exp_28713_0"] - }, - { - "inputs" : ["Negative_28705"], - "name" : "Exp_28706", - "op" : "Exp", - "outputs" : ["Exp_28706_0"] - }, - { - "inputs" : [ "Broadcast_28719", "Exp_28721" ], - "name" : "Add_28722", - "op" : "Add", - "outputs" : ["Add_28722_0"] - }, - { - "inputs" : [ "Broadcast_28711", "Exp_28713" ], - "name" : "Add_28714", - "op" : "Add", - "outputs" : ["Add_28714_0"] - }, - { - "inputs" : [ "Broadcast_28704", "Exp_28706" ], - "name" : "Add_28707", - "op" : "Add", - "outputs" : ["Add_28707_0"] - }, - { - "inputs" : [ "Broadcast_28719", "Add_28722" ], - "name" : "Divide_28723", - "op" : "Divide", - "outputs" : ["Divide_28723_0"] - }, - { - "inputs" : [ "Broadcast_28711", "Add_28714" ], - "name" : "Divide_28715", - "op" : "Divide", - "outputs" : ["Divide_28715_0"] - }, - { - "inputs" : [ "Broadcast_28704", "Add_28707" ], - "name" : "Divide_28708", - "op" : "Divide", - "outputs" : ["Divide_28708_0"] - }, - { - "inputs" : [ "Divide_28723", "Tanh_28725" ], - "name" : "Multiply_28726", - "op" : "Multiply", - "outputs" : ["Multiply_28726_0"] - }, - { - "inputs" : [ "Divide_28715", "Add_28687" ], - "name" : "Multiply_28716", - "op" : "Multiply", - "outputs" : ["Multiply_28716_0"] - }, - { - "inputs" : [ "Multiply_28716", "Multiply_28726" ], - "name" : "Add_28727", - "op" : "Add", - "outputs" : ["Add_28727_0"] - }, - { - "inputs" : ["Add_28727"], - "name" : "Tanh_28728", - "op" : "Tanh", - "outputs" : ["Tanh_28728_0"] - }, - { - "inputs" : [ "Divide_28708", "Tanh_28728" ], - "name" : "Multiply_28729", - "op" : "Multiply", - "outputs" : ["Multiply_28729_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28729"], - "name" : "Reshape_28730", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28730_0"] - }, - { - "inputs" : [ "Multiply_28729", "Reshape_28737" ], - "name" : "Dot_28738", - "op" : "Dot", - "outputs" : ["Dot_28738_0"] - }, - { - "inputs" : [ "Dot_28738", "Broadcast_28739" ], - "name" : "Add_28740", - "op" : "Add", - "outputs" : ["Add_28740_0"] - }, - { - "inputs" : [ "Add_28736", "Add_28740" ], - "name" : "Add_28741", - "op" : "Add", - "outputs" : ["Add_28741_0"] - }, - { - "inputs" : ["Add_28741"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28742", - "op" : "Slice", - "outputs" : ["Slice_28742_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28741"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28764", - "op" : "Slice", - "outputs" : ["Slice_28764_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28741"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28749", - "op" : "Slice", - "outputs" : ["Slice_28749_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28741"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28757", - "op" : "Slice", - "outputs" : ["Slice_28757_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_28742"], - "name" : "Negative_28745", - "op" : "Negative", - "outputs" : ["Negative_28745_0"] - }, - { - "inputs" : ["Slice_28764"], - "name" : "Tanh_28765", - "op" : "Tanh", - "outputs" : ["Tanh_28765_0"] - }, - { - "inputs" : ["Slice_28749"], - "name" : "Negative_28752", - "op" : "Negative", - "outputs" : ["Negative_28752_0"] - }, - { - "inputs" : ["Slice_28757"], - "name" : "Negative_28760", - "op" : "Negative", - "outputs" : ["Negative_28760_0"] - }, - { - "inputs" : ["Negative_28745"], - "name" : "Exp_28746", - "op" : "Exp", - "outputs" : ["Exp_28746_0"] - }, - { - "inputs" : ["Negative_28752"], - "name" : "Exp_28753", - "op" : "Exp", - "outputs" : ["Exp_28753_0"] - }, - { - "inputs" : ["Negative_28760"], - "name" : "Exp_28761", - "op" : "Exp", - "outputs" : ["Exp_28761_0"] - }, - { - "inputs" : [ "Broadcast_28744", "Exp_28746" ], - "name" : "Add_28747", - "op" : "Add", - "outputs" : ["Add_28747_0"] - }, - { - "inputs" : [ "Broadcast_28751", "Exp_28753" ], - "name" : "Add_28754", - "op" : "Add", - "outputs" : ["Add_28754_0"] - }, - { - "inputs" : [ "Broadcast_28759", "Exp_28761" ], - "name" : "Add_28762", - "op" : "Add", - "outputs" : ["Add_28762_0"] - }, - { - "inputs" : [ "Broadcast_28744", "Add_28747" ], - "name" : "Divide_28748", - "op" : "Divide", - "outputs" : ["Divide_28748_0"] - }, - { - "inputs" : [ "Broadcast_28751", "Add_28754" ], - "name" : "Divide_28755", - "op" : "Divide", - "outputs" : ["Divide_28755_0"] - }, - { - "inputs" : [ "Broadcast_28759", "Add_28762" ], - "name" : "Divide_28763", - "op" : "Divide", - "outputs" : ["Divide_28763_0"] - }, - { - "inputs" : [ "Divide_28755", "Add_28727" ], - "name" : "Multiply_28756", - "op" : "Multiply", - "outputs" : ["Multiply_28756_0"] - }, - { - "inputs" : [ "Divide_28763", "Tanh_28765" ], - "name" : "Multiply_28766", - "op" : "Multiply", - "outputs" : ["Multiply_28766_0"] - }, - { - "inputs" : [ "Multiply_28756", "Multiply_28766" ], - "name" : "Add_28767", - "op" : "Add", - "outputs" : ["Add_28767_0"] - }, - { - "inputs" : ["Add_28767"], - "name" : "Tanh_28768", - "op" : "Tanh", - "outputs" : ["Tanh_28768_0"] - }, - { - "inputs" : [ "Divide_28748", "Tanh_28768" ], - "name" : "Multiply_28769", - "op" : "Multiply", - "outputs" : ["Multiply_28769_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28769"], - "name" : "Reshape_28770", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28770_0"] - }, - { - "inputs" : [ "Multiply_28769", "Reshape_28777" ], - "name" : "Dot_28778", - "op" : "Dot", - "outputs" : ["Dot_28778_0"] - }, - { - "inputs" : [ "Dot_28778", "Broadcast_28779" ], - "name" : "Add_28780", - "op" : "Add", - "outputs" : ["Add_28780_0"] - }, - { - "inputs" : [ "Add_28776", "Add_28780" ], - "name" : "Add_28781", - "op" : "Add", - "outputs" : ["Add_28781_0"] - }, - { - "inputs" : ["Add_28781"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28782", - "op" : "Slice", - "outputs" : ["Slice_28782_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28781"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28804", - "op" : "Slice", - "outputs" : ["Slice_28804_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28781"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28789", - "op" : "Slice", - "outputs" : ["Slice_28789_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28781"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28797", - "op" : "Slice", - "outputs" : ["Slice_28797_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_28782"], - "name" : "Negative_28785", - "op" : "Negative", - "outputs" : ["Negative_28785_0"] - }, - { - "inputs" : ["Slice_28804"], - "name" : "Tanh_28805", - "op" : "Tanh", - "outputs" : ["Tanh_28805_0"] - }, - { - "inputs" : ["Slice_28789"], - "name" : "Negative_28792", - "op" : "Negative", - "outputs" : ["Negative_28792_0"] - }, - { - "inputs" : ["Slice_28797"], - "name" : "Negative_28800", - "op" : "Negative", - "outputs" : ["Negative_28800_0"] - }, - { - "inputs" : ["Negative_28785"], - "name" : "Exp_28786", - "op" : "Exp", - "outputs" : ["Exp_28786_0"] - }, - { - "inputs" : ["Negative_28792"], - "name" : "Exp_28793", - "op" : "Exp", - "outputs" : ["Exp_28793_0"] - }, - { - "inputs" : ["Negative_28800"], - "name" : "Exp_28801", - "op" : "Exp", - "outputs" : ["Exp_28801_0"] - }, - { - "inputs" : [ "Broadcast_28784", "Exp_28786" ], - "name" : "Add_28787", - "op" : "Add", - "outputs" : ["Add_28787_0"] - }, - { - "inputs" : [ "Broadcast_28791", "Exp_28793" ], - "name" : "Add_28794", - "op" : "Add", - "outputs" : ["Add_28794_0"] - }, - { - "inputs" : [ "Broadcast_28799", "Exp_28801" ], - "name" : "Add_28802", - "op" : "Add", - "outputs" : ["Add_28802_0"] - }, - { - "inputs" : [ "Broadcast_28784", "Add_28787" ], - "name" : "Divide_28788", - "op" : "Divide", - "outputs" : ["Divide_28788_0"] - }, - { - "inputs" : [ "Broadcast_28791", "Add_28794" ], - "name" : "Divide_28795", - "op" : "Divide", - "outputs" : ["Divide_28795_0"] - }, - { - "inputs" : [ "Broadcast_28799", "Add_28802" ], - "name" : "Divide_28803", - "op" : "Divide", - "outputs" : ["Divide_28803_0"] - }, - { - "inputs" : [ "Divide_28795", "Add_28767" ], - "name" : "Multiply_28796", - "op" : "Multiply", - "outputs" : ["Multiply_28796_0"] - }, - { - "inputs" : [ "Divide_28803", "Tanh_28805" ], - "name" : "Multiply_28806", - "op" : "Multiply", - "outputs" : ["Multiply_28806_0"] - }, - { - "inputs" : [ "Multiply_28796", "Multiply_28806" ], - "name" : "Add_28807", - "op" : "Add", - "outputs" : ["Add_28807_0"] - }, - { - "inputs" : ["Add_28807"], - "name" : "Tanh_28808", - "op" : "Tanh", - "outputs" : ["Tanh_28808_0"] - }, - { - "inputs" : [ "Divide_28788", "Tanh_28808" ], - "name" : "Multiply_28809", - "op" : "Multiply", - "outputs" : ["Multiply_28809_0"] - }, - { - "inputs" : [ "Multiply_28809", "Reshape_28817" ], - "name" : "Dot_28818", - "op" : "Dot", - "outputs" : ["Dot_28818_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28809"], - "name" : "Reshape_28810", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28810_0"] - }, - { - "inputs" : [ "Dot_28818", "Broadcast_28819" ], - "name" : "Add_28820", - "op" : "Add", - "outputs" : ["Add_28820_0"] - }, - { - "inputs" : [ "Add_28816", "Add_28820" ], - "name" : "Add_28821", - "op" : "Add", - "outputs" : ["Add_28821_0"] - }, - { - "inputs" : ["Add_28821"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28837", - "op" : "Slice", - "outputs" : ["Slice_28837_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28821"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28829", - "op" : "Slice", - "outputs" : ["Slice_28829_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28821"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28822", - "op" : "Slice", - "outputs" : ["Slice_28822_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28821"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28844", - "op" : "Slice", - "outputs" : ["Slice_28844_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28837"], - "name" : "Negative_28840", - "op" : "Negative", - "outputs" : ["Negative_28840_0"] - }, - { - "inputs" : ["Slice_28829"], - "name" : "Negative_28832", - "op" : "Negative", - "outputs" : ["Negative_28832_0"] - }, - { - "inputs" : ["Slice_28822"], - "name" : "Negative_28825", - "op" : "Negative", - "outputs" : ["Negative_28825_0"] - }, - { - "inputs" : ["Slice_28844"], - "name" : "Tanh_28845", - "op" : "Tanh", - "outputs" : ["Tanh_28845_0"] - }, - { - "inputs" : ["Negative_28840"], - "name" : "Exp_28841", - "op" : "Exp", - "outputs" : ["Exp_28841_0"] - }, - { - "inputs" : ["Negative_28832"], - "name" : "Exp_28833", - "op" : "Exp", - "outputs" : ["Exp_28833_0"] - }, - { - "inputs" : ["Negative_28825"], - "name" : "Exp_28826", - "op" : "Exp", - "outputs" : ["Exp_28826_0"] - }, - { - "inputs" : [ "Broadcast_28839", "Exp_28841" ], - "name" : "Add_28842", - "op" : "Add", - "outputs" : ["Add_28842_0"] - }, - { - "inputs" : [ "Broadcast_28831", "Exp_28833" ], - "name" : "Add_28834", - "op" : "Add", - "outputs" : ["Add_28834_0"] - }, - { - "inputs" : [ "Broadcast_28824", "Exp_28826" ], - "name" : "Add_28827", - "op" : "Add", - "outputs" : ["Add_28827_0"] - }, - { - "inputs" : [ "Broadcast_28839", "Add_28842" ], - "name" : "Divide_28843", - "op" : "Divide", - "outputs" : ["Divide_28843_0"] - }, - { - "inputs" : [ "Broadcast_28831", "Add_28834" ], - "name" : "Divide_28835", - "op" : "Divide", - "outputs" : ["Divide_28835_0"] - }, - { - "inputs" : [ "Broadcast_28824", "Add_28827" ], - "name" : "Divide_28828", - "op" : "Divide", - "outputs" : ["Divide_28828_0"] - }, - { - "inputs" : [ "Divide_28843", "Tanh_28845" ], - "name" : "Multiply_28846", - "op" : "Multiply", - "outputs" : ["Multiply_28846_0"] - }, - { - "inputs" : [ "Divide_28835", "Add_28807" ], - "name" : "Multiply_28836", - "op" : "Multiply", - "outputs" : ["Multiply_28836_0"] - }, - { - "inputs" : [ "Multiply_28836", "Multiply_28846" ], - "name" : "Add_28847", - "op" : "Add", - "outputs" : ["Add_28847_0"] - }, - { - "inputs" : ["Add_28847"], - "name" : "Tanh_28848", - "op" : "Tanh", - "outputs" : ["Tanh_28848_0"] - }, - { - "inputs" : [ "Divide_28828", "Tanh_28848" ], - "name" : "Multiply_28849", - "op" : "Multiply", - "outputs" : ["Multiply_28849_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28849"], - "name" : "Reshape_28850", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28850_0"] - }, - { - "inputs" : [ "Multiply_28849", "Reshape_28857" ], - "name" : "Dot_28858", - "op" : "Dot", - "outputs" : ["Dot_28858_0"] - }, - { - "inputs" : [ "Dot_28858", "Broadcast_28859" ], - "name" : "Add_28860", - "op" : "Add", - "outputs" : ["Add_28860_0"] - }, - { - "inputs" : [ "Add_28856", "Add_28860" ], - "name" : "Add_28861", - "op" : "Add", - "outputs" : ["Add_28861_0"] - }, - { - "inputs" : ["Add_28861"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28884", - "op" : "Slice", - "outputs" : ["Slice_28884_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28861"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28862", - "op" : "Slice", - "outputs" : ["Slice_28862_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28861"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28869", - "op" : "Slice", - "outputs" : ["Slice_28869_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28861"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28877", - "op" : "Slice", - "outputs" : ["Slice_28877_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_28884"], - "name" : "Tanh_28885", - "op" : "Tanh", - "outputs" : ["Tanh_28885_0"] - }, - { - "inputs" : ["Slice_28862"], - "name" : "Negative_28865", - "op" : "Negative", - "outputs" : ["Negative_28865_0"] - }, - { - "inputs" : ["Slice_28869"], - "name" : "Negative_28872", - "op" : "Negative", - "outputs" : ["Negative_28872_0"] - }, - { - "inputs" : ["Slice_28877"], - "name" : "Negative_28880", - "op" : "Negative", - "outputs" : ["Negative_28880_0"] - }, - { - "inputs" : ["Negative_28865"], - "name" : "Exp_28866", - "op" : "Exp", - "outputs" : ["Exp_28866_0"] - }, - { - "inputs" : ["Negative_28872"], - "name" : "Exp_28873", - "op" : "Exp", - "outputs" : ["Exp_28873_0"] - }, - { - "inputs" : ["Negative_28880"], - "name" : "Exp_28881", - "op" : "Exp", - "outputs" : ["Exp_28881_0"] - }, - { - "inputs" : [ "Broadcast_28864", "Exp_28866" ], - "name" : "Add_28867", - "op" : "Add", - "outputs" : ["Add_28867_0"] - }, - { - "inputs" : [ "Broadcast_28871", "Exp_28873" ], - "name" : "Add_28874", - "op" : "Add", - "outputs" : ["Add_28874_0"] - }, - { - "inputs" : [ "Broadcast_28879", "Exp_28881" ], - "name" : "Add_28882", - "op" : "Add", - "outputs" : ["Add_28882_0"] - }, - { - "inputs" : [ "Broadcast_28864", "Add_28867" ], - "name" : "Divide_28868", - "op" : "Divide", - "outputs" : ["Divide_28868_0"] - }, - { - "inputs" : [ "Broadcast_28871", "Add_28874" ], - "name" : "Divide_28875", - "op" : "Divide", - "outputs" : ["Divide_28875_0"] - }, - { - "inputs" : [ "Broadcast_28879", "Add_28882" ], - "name" : "Divide_28883", - "op" : "Divide", - "outputs" : ["Divide_28883_0"] - }, - { - "inputs" : [ "Divide_28875", "Add_28847" ], - "name" : "Multiply_28876", - "op" : "Multiply", - "outputs" : ["Multiply_28876_0"] - }, - { - "inputs" : [ "Divide_28883", "Tanh_28885" ], - "name" : "Multiply_28886", - "op" : "Multiply", - "outputs" : ["Multiply_28886_0"] - }, - { - "inputs" : [ "Multiply_28876", "Multiply_28886" ], - "name" : "Add_28887", - "op" : "Add", - "outputs" : ["Add_28887_0"] - }, - { - "inputs" : ["Add_28887"], - "name" : "Tanh_28888", - "op" : "Tanh", - "outputs" : ["Tanh_28888_0"] - }, - { - "inputs" : [ "Divide_28868", "Tanh_28888" ], - "name" : "Multiply_28889", - "op" : "Multiply", - "outputs" : ["Multiply_28889_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28889"], - "name" : "Reshape_28890", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28890_0"] - }, - { - "inputs" : [ "Multiply_28889", "Reshape_28897" ], - "name" : "Dot_28898", - "op" : "Dot", - "outputs" : ["Dot_28898_0"] - }, - { - "inputs" : [ "Dot_28898", "Broadcast_28899" ], - "name" : "Add_28900", - "op" : "Add", - "outputs" : ["Add_28900_0"] - }, - { - "inputs" : [ "Add_28896", "Add_28900" ], - "name" : "Add_28901", - "op" : "Add", - "outputs" : ["Add_28901_0"] - }, - { - "inputs" : ["Add_28901"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28909", - "op" : "Slice", - "outputs" : ["Slice_28909_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28901"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28917", - "op" : "Slice", - "outputs" : ["Slice_28917_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28901"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28902", - "op" : "Slice", - "outputs" : ["Slice_28902_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28901"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28924", - "op" : "Slice", - "outputs" : ["Slice_28924_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_28909"], - "name" : "Negative_28912", - "op" : "Negative", - "outputs" : ["Negative_28912_0"] - }, - { - "inputs" : ["Slice_28917"], - "name" : "Negative_28920", - "op" : "Negative", - "outputs" : ["Negative_28920_0"] - }, - { - "inputs" : ["Slice_28902"], - "name" : "Negative_28905", - "op" : "Negative", - "outputs" : ["Negative_28905_0"] - }, - { - "inputs" : ["Slice_28924"], - "name" : "Tanh_28925", - "op" : "Tanh", - "outputs" : ["Tanh_28925_0"] - }, - { - "inputs" : ["Negative_28912"], - "name" : "Exp_28913", - "op" : "Exp", - "outputs" : ["Exp_28913_0"] - }, - { - "inputs" : ["Negative_28920"], - "name" : "Exp_28921", - "op" : "Exp", - "outputs" : ["Exp_28921_0"] - }, - { - "inputs" : ["Negative_28905"], - "name" : "Exp_28906", - "op" : "Exp", - "outputs" : ["Exp_28906_0"] - }, - { - "inputs" : [ "Broadcast_28911", "Exp_28913" ], - "name" : "Add_28914", - "op" : "Add", - "outputs" : ["Add_28914_0"] - }, - { - "inputs" : [ "Broadcast_28919", "Exp_28921" ], - "name" : "Add_28922", - "op" : "Add", - "outputs" : ["Add_28922_0"] - }, - { - "inputs" : [ "Broadcast_28904", "Exp_28906" ], - "name" : "Add_28907", - "op" : "Add", - "outputs" : ["Add_28907_0"] - }, - { - "inputs" : [ "Broadcast_28911", "Add_28914" ], - "name" : "Divide_28915", - "op" : "Divide", - "outputs" : ["Divide_28915_0"] - }, - { - "inputs" : [ "Broadcast_28919", "Add_28922" ], - "name" : "Divide_28923", - "op" : "Divide", - "outputs" : ["Divide_28923_0"] - }, - { - "inputs" : [ "Broadcast_28904", "Add_28907" ], - "name" : "Divide_28908", - "op" : "Divide", - "outputs" : ["Divide_28908_0"] - }, - { - "inputs" : [ "Divide_28915", "Add_28887" ], - "name" : "Multiply_28916", - "op" : "Multiply", - "outputs" : ["Multiply_28916_0"] - }, - { - "inputs" : [ "Divide_28923", "Tanh_28925" ], - "name" : "Multiply_28926", - "op" : "Multiply", - "outputs" : ["Multiply_28926_0"] - }, - { - "inputs" : [ "Multiply_28916", "Multiply_28926" ], - "name" : "Add_28927", - "op" : "Add", - "outputs" : ["Add_28927_0"] - }, - { - "inputs" : ["Add_28927"], - "name" : "Tanh_28928", - "op" : "Tanh", - "outputs" : ["Tanh_28928_0"] - }, - { - "inputs" : [ "Divide_28908", "Tanh_28928" ], - "name" : "Multiply_28929", - "op" : "Multiply", - "outputs" : ["Multiply_28929_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28929"], - "name" : "Reshape_28930", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28930_0"] - }, - { - "inputs" : [ "Multiply_28929", "Reshape_28937" ], - "name" : "Dot_28938", - "op" : "Dot", - "outputs" : ["Dot_28938_0"] - }, - { - "inputs" : [ "Dot_28938", "Broadcast_28939" ], - "name" : "Add_28940", - "op" : "Add", - "outputs" : ["Add_28940_0"] - }, - { - "inputs" : [ "Add_28936", "Add_28940" ], - "name" : "Add_28941", - "op" : "Add", - "outputs" : ["Add_28941_0"] - }, - { - "inputs" : ["Add_28941"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28957", - "op" : "Slice", - "outputs" : ["Slice_28957_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28941"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28942", - "op" : "Slice", - "outputs" : ["Slice_28942_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_28941"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_28964", - "op" : "Slice", - "outputs" : ["Slice_28964_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28941"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28949", - "op" : "Slice", - "outputs" : ["Slice_28949_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Slice_28957"], - "name" : "Negative_28960", - "op" : "Negative", - "outputs" : ["Negative_28960_0"] - }, - { - "inputs" : ["Slice_28942"], - "name" : "Negative_28945", - "op" : "Negative", - "outputs" : ["Negative_28945_0"] - }, - { - "inputs" : ["Slice_28964"], - "name" : "Tanh_28965", - "op" : "Tanh", - "outputs" : ["Tanh_28965_0"] - }, - { - "inputs" : ["Slice_28949"], - "name" : "Negative_28952", - "op" : "Negative", - "outputs" : ["Negative_28952_0"] - }, - { - "inputs" : ["Negative_28960"], - "name" : "Exp_28961", - "op" : "Exp", - "outputs" : ["Exp_28961_0"] - }, - { - "inputs" : ["Negative_28945"], - "name" : "Exp_28946", - "op" : "Exp", - "outputs" : ["Exp_28946_0"] - }, - { - "inputs" : ["Negative_28952"], - "name" : "Exp_28953", - "op" : "Exp", - "outputs" : ["Exp_28953_0"] - }, - { - "inputs" : [ "Broadcast_28959", "Exp_28961" ], - "name" : "Add_28962", - "op" : "Add", - "outputs" : ["Add_28962_0"] - }, - { - "inputs" : [ "Broadcast_28944", "Exp_28946" ], - "name" : "Add_28947", - "op" : "Add", - "outputs" : ["Add_28947_0"] - }, - { - "inputs" : [ "Broadcast_28951", "Exp_28953" ], - "name" : "Add_28954", - "op" : "Add", - "outputs" : ["Add_28954_0"] - }, - { - "inputs" : [ "Broadcast_28959", "Add_28962" ], - "name" : "Divide_28963", - "op" : "Divide", - "outputs" : ["Divide_28963_0"] - }, - { - "inputs" : [ "Broadcast_28944", "Add_28947" ], - "name" : "Divide_28948", - "op" : "Divide", - "outputs" : ["Divide_28948_0"] - }, - { - "inputs" : [ "Broadcast_28951", "Add_28954" ], - "name" : "Divide_28955", - "op" : "Divide", - "outputs" : ["Divide_28955_0"] - }, - { - "inputs" : [ "Divide_28963", "Tanh_28965" ], - "name" : "Multiply_28966", - "op" : "Multiply", - "outputs" : ["Multiply_28966_0"] - }, - { - "inputs" : [ "Divide_28955", "Add_28927" ], - "name" : "Multiply_28956", - "op" : "Multiply", - "outputs" : ["Multiply_28956_0"] - }, - { - "inputs" : [ "Multiply_28956", "Multiply_28966" ], - "name" : "Add_28967", - "op" : "Add", - "outputs" : ["Add_28967_0"] - }, - { - "inputs" : ["Add_28967"], - "name" : "Tanh_28968", - "op" : "Tanh", - "outputs" : ["Tanh_28968_0"] - }, - { - "inputs" : [ "Divide_28948", "Tanh_28968" ], - "name" : "Multiply_28969", - "op" : "Multiply", - "outputs" : ["Multiply_28969_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_28969"], - "name" : "Reshape_28970", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_28970_0"] - }, - { - "inputs" : [ "Multiply_28969", "Reshape_28977" ], - "name" : "Dot_28978", - "op" : "Dot", - "outputs" : ["Dot_28978_0"] - }, - { - "inputs" : [ "Dot_28978", "Broadcast_28979" ], - "name" : "Add_28980", - "op" : "Add", - "outputs" : ["Add_28980_0"] - }, - { - "inputs" : [ "Add_28976", "Add_28980" ], - "name" : "Add_28981", - "op" : "Add", - "outputs" : ["Add_28981_0"] - }, - { - "inputs" : ["Add_28981"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_28997", - "op" : "Slice", - "outputs" : ["Slice_28997_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_28981"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_29004", - "op" : "Slice", - "outputs" : ["Slice_29004_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_28981"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_28989", - "op" : "Slice", - "outputs" : ["Slice_28989_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_28981"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_28982", - "op" : "Slice", - "outputs" : ["Slice_28982_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Slice_28997"], - "name" : "Negative_29000", - "op" : "Negative", - "outputs" : ["Negative_29000_0"] - }, - { - "inputs" : ["Slice_29004"], - "name" : "Tanh_29005", - "op" : "Tanh", - "outputs" : ["Tanh_29005_0"] - }, - { - "inputs" : ["Slice_28989"], - "name" : "Negative_28992", - "op" : "Negative", - "outputs" : ["Negative_28992_0"] - }, - { - "inputs" : ["Slice_28982"], - "name" : "Negative_28985", - "op" : "Negative", - "outputs" : ["Negative_28985_0"] - }, - { - "inputs" : ["Negative_29000"], - "name" : "Exp_29001", - "op" : "Exp", - "outputs" : ["Exp_29001_0"] - }, - { - "inputs" : ["Negative_28992"], - "name" : "Exp_28993", - "op" : "Exp", - "outputs" : ["Exp_28993_0"] - }, - { - "inputs" : ["Negative_28985"], - "name" : "Exp_28986", - "op" : "Exp", - "outputs" : ["Exp_28986_0"] - }, - { - "inputs" : [ "Broadcast_28999", "Exp_29001" ], - "name" : "Add_29002", - "op" : "Add", - "outputs" : ["Add_29002_0"] - }, - { - "inputs" : [ "Broadcast_28991", "Exp_28993" ], - "name" : "Add_28994", - "op" : "Add", - "outputs" : ["Add_28994_0"] - }, - { - "inputs" : [ "Broadcast_28984", "Exp_28986" ], - "name" : "Add_28987", - "op" : "Add", - "outputs" : ["Add_28987_0"] - }, - { - "inputs" : [ "Broadcast_28999", "Add_29002" ], - "name" : "Divide_29003", - "op" : "Divide", - "outputs" : ["Divide_29003_0"] - }, - { - "inputs" : [ "Broadcast_28991", "Add_28994" ], - "name" : "Divide_28995", - "op" : "Divide", - "outputs" : ["Divide_28995_0"] - }, - { - "inputs" : [ "Broadcast_28984", "Add_28987" ], - "name" : "Divide_28988", - "op" : "Divide", - "outputs" : ["Divide_28988_0"] - }, - { - "inputs" : [ "Divide_29003", "Tanh_29005" ], - "name" : "Multiply_29006", - "op" : "Multiply", - "outputs" : ["Multiply_29006_0"] - }, - { - "inputs" : [ "Divide_28995", "Add_28967" ], - "name" : "Multiply_28996", - "op" : "Multiply", - "outputs" : ["Multiply_28996_0"] - }, - { - "inputs" : [ "Multiply_28996", "Multiply_29006" ], - "name" : "Add_29007", - "op" : "Add", - "outputs" : ["Add_29007_0"] - }, - { - "inputs" : ["Add_29007"], - "name" : "Tanh_29008", - "op" : "Tanh", - "outputs" : ["Tanh_29008_0"] - }, - { - "inputs" : [ "Divide_28988", "Tanh_29008" ], - "name" : "Multiply_29009", - "op" : "Multiply", - "outputs" : ["Multiply_29009_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_29009"], - "name" : "Reshape_29010", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_29010_0"] - }, - { - "inputs" : [ "Multiply_29009", "Reshape_29017" ], - "name" : "Dot_29018", - "op" : "Dot", - "outputs" : ["Dot_29018_0"] - }, - { - "inputs" : [ "Dot_29018", "Broadcast_29019" ], - "name" : "Add_29020", - "op" : "Add", - "outputs" : ["Add_29020_0"] - }, - { - "inputs" : [ "Add_29016", "Add_29020" ], - "name" : "Add_29021", - "op" : "Add", - "outputs" : ["Add_29021_0"] - }, - { - "inputs" : ["Add_29021"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_29029", - "op" : "Slice", - "outputs" : ["Slice_29029_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_29021"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_29037", - "op" : "Slice", - "outputs" : ["Slice_29037_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_29021"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_29022", - "op" : "Slice", - "outputs" : ["Slice_29022_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_29021"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_29044", - "op" : "Slice", - "outputs" : ["Slice_29044_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_29029"], - "name" : "Negative_29032", - "op" : "Negative", - "outputs" : ["Negative_29032_0"] - }, - { - "inputs" : ["Slice_29037"], - "name" : "Negative_29040", - "op" : "Negative", - "outputs" : ["Negative_29040_0"] - }, - { - "inputs" : ["Slice_29022"], - "name" : "Negative_29025", - "op" : "Negative", - "outputs" : ["Negative_29025_0"] - }, - { - "inputs" : ["Slice_29044"], - "name" : "Tanh_29045", - "op" : "Tanh", - "outputs" : ["Tanh_29045_0"] - }, - { - "inputs" : ["Negative_29032"], - "name" : "Exp_29033", - "op" : "Exp", - "outputs" : ["Exp_29033_0"] - }, - { - "inputs" : ["Negative_29040"], - "name" : "Exp_29041", - "op" : "Exp", - "outputs" : ["Exp_29041_0"] - }, - { - "inputs" : ["Negative_29025"], - "name" : "Exp_29026", - "op" : "Exp", - "outputs" : ["Exp_29026_0"] - }, - { - "inputs" : [ "Broadcast_29031", "Exp_29033" ], - "name" : "Add_29034", - "op" : "Add", - "outputs" : ["Add_29034_0"] - }, - { - "inputs" : [ "Broadcast_29039", "Exp_29041" ], - "name" : "Add_29042", - "op" : "Add", - "outputs" : ["Add_29042_0"] - }, - { - "inputs" : [ "Broadcast_29024", "Exp_29026" ], - "name" : "Add_29027", - "op" : "Add", - "outputs" : ["Add_29027_0"] - }, - { - "inputs" : [ "Broadcast_29031", "Add_29034" ], - "name" : "Divide_29035", - "op" : "Divide", - "outputs" : ["Divide_29035_0"] - }, - { - "inputs" : [ "Broadcast_29039", "Add_29042" ], - "name" : "Divide_29043", - "op" : "Divide", - "outputs" : ["Divide_29043_0"] - }, - { - "inputs" : [ "Broadcast_29024", "Add_29027" ], - "name" : "Divide_29028", - "op" : "Divide", - "outputs" : ["Divide_29028_0"] - }, - { - "inputs" : [ "Divide_29035", "Add_29007" ], - "name" : "Multiply_29036", - "op" : "Multiply", - "outputs" : ["Multiply_29036_0"] - }, - { - "inputs" : [ "Divide_29043", "Tanh_29045" ], - "name" : "Multiply_29046", - "op" : "Multiply", - "outputs" : ["Multiply_29046_0"] - }, - { - "inputs" : [ "Multiply_29036", "Multiply_29046" ], - "name" : "Add_29047", - "op" : "Add", - "outputs" : ["Add_29047_0"] - }, - { - "inputs" : ["Add_29047"], - "name" : "Tanh_29048", - "op" : "Tanh", - "outputs" : ["Tanh_29048_0"] - }, - { - "inputs" : [ "Divide_29028", "Tanh_29048" ], - "name" : "Multiply_29049", - "op" : "Multiply", - "outputs" : ["Multiply_29049_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_29049"], - "name" : "Reshape_29050", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_29050_0"] - }, - { - "inputs" : [ "Multiply_29049", "Reshape_29057" ], - "name" : "Dot_29058", - "op" : "Dot", - "outputs" : ["Dot_29058_0"] - }, - { - "inputs" : [ "Dot_29058", "Broadcast_29059" ], - "name" : "Add_29060", - "op" : "Add", - "outputs" : ["Add_29060_0"] - }, - { - "inputs" : [ "Add_29056", "Add_29060" ], - "name" : "Add_29061", - "op" : "Add", - "outputs" : ["Add_29061_0"] - }, - { - "inputs" : ["Add_29061"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_29084", - "op" : "Slice", - "outputs" : ["Slice_29084_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_29061"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_29069", - "op" : "Slice", - "outputs" : ["Slice_29069_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_29061"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_29077", - "op" : "Slice", - "outputs" : ["Slice_29077_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_29061"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_29062", - "op" : "Slice", - "outputs" : ["Slice_29062_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Slice_29084"], - "name" : "Tanh_29085", - "op" : "Tanh", - "outputs" : ["Tanh_29085_0"] - }, - { - "inputs" : ["Slice_29069"], - "name" : "Negative_29072", - "op" : "Negative", - "outputs" : ["Negative_29072_0"] - }, - { - "inputs" : ["Slice_29077"], - "name" : "Negative_29080", - "op" : "Negative", - "outputs" : ["Negative_29080_0"] - }, - { - "inputs" : ["Slice_29062"], - "name" : "Negative_29065", - "op" : "Negative", - "outputs" : ["Negative_29065_0"] - }, - { - "inputs" : ["Negative_29072"], - "name" : "Exp_29073", - "op" : "Exp", - "outputs" : ["Exp_29073_0"] - }, - { - "inputs" : ["Negative_29080"], - "name" : "Exp_29081", - "op" : "Exp", - "outputs" : ["Exp_29081_0"] - }, - { - "inputs" : ["Negative_29065"], - "name" : "Exp_29066", - "op" : "Exp", - "outputs" : ["Exp_29066_0"] - }, - { - "inputs" : [ "Broadcast_29071", "Exp_29073" ], - "name" : "Add_29074", - "op" : "Add", - "outputs" : ["Add_29074_0"] - }, - { - "inputs" : [ "Broadcast_29079", "Exp_29081" ], - "name" : "Add_29082", - "op" : "Add", - "outputs" : ["Add_29082_0"] - }, - { - "inputs" : [ "Broadcast_29064", "Exp_29066" ], - "name" : "Add_29067", - "op" : "Add", - "outputs" : ["Add_29067_0"] - }, - { - "inputs" : [ "Broadcast_29071", "Add_29074" ], - "name" : "Divide_29075", - "op" : "Divide", - "outputs" : ["Divide_29075_0"] - }, - { - "inputs" : [ "Broadcast_29079", "Add_29082" ], - "name" : "Divide_29083", - "op" : "Divide", - "outputs" : ["Divide_29083_0"] - }, - { - "inputs" : [ "Broadcast_29064", "Add_29067" ], - "name" : "Divide_29068", - "op" : "Divide", - "outputs" : ["Divide_29068_0"] - }, - { - "inputs" : [ "Divide_29075", "Add_29047" ], - "name" : "Multiply_29076", - "op" : "Multiply", - "outputs" : ["Multiply_29076_0"] - }, - { - "inputs" : [ "Divide_29083", "Tanh_29085" ], - "name" : "Multiply_29086", - "op" : "Multiply", - "outputs" : ["Multiply_29086_0"] - }, - { - "inputs" : [ "Multiply_29076", "Multiply_29086" ], - "name" : "Add_29087", - "op" : "Add", - "outputs" : ["Add_29087_0"] - }, - { - "inputs" : ["Add_29087"], - "name" : "Tanh_29088", - "op" : "Tanh", - "outputs" : ["Tanh_29088_0"] - }, - { - "inputs" : [ "Divide_29068", "Tanh_29088" ], - "name" : "Multiply_29089", - "op" : "Multiply", - "outputs" : ["Multiply_29089_0"] - }, - { - "inputs" : [ "Multiply_29089", "Reshape_29097" ], - "name" : "Dot_29098", - "op" : "Dot", - "outputs" : ["Dot_29098_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_29089"], - "name" : "Reshape_29090", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_29090_0"] - }, - { - "inputs" : [ "Dot_29098", "Broadcast_29099" ], - "name" : "Add_29100", - "op" : "Add", - "outputs" : ["Add_29100_0"] - }, - { - "inputs" : [ "Add_29096", "Add_29100" ], - "name" : "Add_29101", - "op" : "Add", - "outputs" : ["Add_29101_0"] - }, - { - "inputs" : ["Add_29101"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_29117", - "op" : "Slice", - "outputs" : ["Slice_29117_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_29101"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_29102", - "op" : "Slice", - "outputs" : ["Slice_29102_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_29101"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_29109", - "op" : "Slice", - "outputs" : ["Slice_29109_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_29101"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_29124", - "op" : "Slice", - "outputs" : ["Slice_29124_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Slice_29117"], - "name" : "Negative_29120", - "op" : "Negative", - "outputs" : ["Negative_29120_0"] - }, - { - "inputs" : ["Slice_29102"], - "name" : "Negative_29105", - "op" : "Negative", - "outputs" : ["Negative_29105_0"] - }, - { - "inputs" : ["Slice_29109"], - "name" : "Negative_29112", - "op" : "Negative", - "outputs" : ["Negative_29112_0"] - }, - { - "inputs" : ["Slice_29124"], - "name" : "Tanh_29125", - "op" : "Tanh", - "outputs" : ["Tanh_29125_0"] - }, - { - "inputs" : ["Negative_29120"], - "name" : "Exp_29121", - "op" : "Exp", - "outputs" : ["Exp_29121_0"] - }, - { - "inputs" : ["Negative_29105"], - "name" : "Exp_29106", - "op" : "Exp", - "outputs" : ["Exp_29106_0"] - }, - { - "inputs" : ["Negative_29112"], - "name" : "Exp_29113", - "op" : "Exp", - "outputs" : ["Exp_29113_0"] - }, - { - "inputs" : [ "Broadcast_29119", "Exp_29121" ], - "name" : "Add_29122", - "op" : "Add", - "outputs" : ["Add_29122_0"] - }, - { - "inputs" : [ "Broadcast_29104", "Exp_29106" ], - "name" : "Add_29107", - "op" : "Add", - "outputs" : ["Add_29107_0"] - }, - { - "inputs" : [ "Broadcast_29111", "Exp_29113" ], - "name" : "Add_29114", - "op" : "Add", - "outputs" : ["Add_29114_0"] - }, - { - "inputs" : [ "Broadcast_29119", "Add_29122" ], - "name" : "Divide_29123", - "op" : "Divide", - "outputs" : ["Divide_29123_0"] - }, - { - "inputs" : [ "Broadcast_29104", "Add_29107" ], - "name" : "Divide_29108", - "op" : "Divide", - "outputs" : ["Divide_29108_0"] - }, - { - "inputs" : [ "Broadcast_29111", "Add_29114" ], - "name" : "Divide_29115", - "op" : "Divide", - "outputs" : ["Divide_29115_0"] - }, - { - "inputs" : [ "Divide_29123", "Tanh_29125" ], - "name" : "Multiply_29126", - "op" : "Multiply", - "outputs" : ["Multiply_29126_0"] - }, - { - "inputs" : [ "Divide_29115", "Add_29087" ], - "name" : "Multiply_29116", - "op" : "Multiply", - "outputs" : ["Multiply_29116_0"] - }, - { - "inputs" : [ "Multiply_29116", "Multiply_29126" ], - "name" : "Add_29127", - "op" : "Add", - "outputs" : ["Add_29127_0"] - }, - { - "inputs" : ["Add_29127"], - "name" : "Tanh_29128", - "op" : "Tanh", - "outputs" : ["Tanh_29128_0"] - }, - { - "inputs" : [ "Divide_29108", "Tanh_29128" ], - "name" : "Multiply_29129", - "op" : "Multiply", - "outputs" : ["Multiply_29129_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_29129"], - "name" : "Reshape_29130", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_29130_0"] - }, - { - "inputs" : [ "Multiply_29129", "Reshape_29137" ], - "name" : "Dot_29138", - "op" : "Dot", - "outputs" : ["Dot_29138_0"] - }, - { - "inputs" : [ "Dot_29138", "Broadcast_29139" ], - "name" : "Add_29140", - "op" : "Add", - "outputs" : ["Add_29140_0"] - }, - { - "inputs" : [ "Add_29136", "Add_29140" ], - "name" : "Add_29141", - "op" : "Add", - "outputs" : ["Add_29141_0"] - }, - { - "inputs" : ["Add_29141"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_29149", - "op" : "Slice", - "outputs" : ["Slice_29149_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_29141"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_29157", - "op" : "Slice", - "outputs" : ["Slice_29157_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Add_29141"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_29164", - "op" : "Slice", - "outputs" : ["Slice_29164_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_29141"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_29142", - "op" : "Slice", - "outputs" : ["Slice_29142_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Slice_29149"], - "name" : "Negative_29152", - "op" : "Negative", - "outputs" : ["Negative_29152_0"] - }, - { - "inputs" : ["Slice_29157"], - "name" : "Negative_29160", - "op" : "Negative", - "outputs" : ["Negative_29160_0"] - }, - { - "inputs" : ["Slice_29164"], - "name" : "Tanh_29165", - "op" : "Tanh", - "outputs" : ["Tanh_29165_0"] - }, - { - "inputs" : ["Slice_29142"], - "name" : "Negative_29145", - "op" : "Negative", - "outputs" : ["Negative_29145_0"] - }, - { - "inputs" : ["Negative_29152"], - "name" : "Exp_29153", - "op" : "Exp", - "outputs" : ["Exp_29153_0"] - }, - { - "inputs" : ["Negative_29160"], - "name" : "Exp_29161", - "op" : "Exp", - "outputs" : ["Exp_29161_0"] - }, - { - "inputs" : ["Negative_29145"], - "name" : "Exp_29146", - "op" : "Exp", - "outputs" : ["Exp_29146_0"] - }, - { - "inputs" : [ "Broadcast_29151", "Exp_29153" ], - "name" : "Add_29154", - "op" : "Add", - "outputs" : ["Add_29154_0"] - }, - { - "inputs" : [ "Broadcast_29159", "Exp_29161" ], - "name" : "Add_29162", - "op" : "Add", - "outputs" : ["Add_29162_0"] - }, - { - "inputs" : [ "Broadcast_29144", "Exp_29146" ], - "name" : "Add_29147", - "op" : "Add", - "outputs" : ["Add_29147_0"] - }, - { - "inputs" : [ "Broadcast_29151", "Add_29154" ], - "name" : "Divide_29155", - "op" : "Divide", - "outputs" : ["Divide_29155_0"] - }, - { - "inputs" : [ "Broadcast_29159", "Add_29162" ], - "name" : "Divide_29163", - "op" : "Divide", - "outputs" : ["Divide_29163_0"] - }, - { - "inputs" : [ "Broadcast_29144", "Add_29147" ], - "name" : "Divide_29148", - "op" : "Divide", - "outputs" : ["Divide_29148_0"] - }, - { - "inputs" : [ "Divide_29155", "Add_29127" ], - "name" : "Multiply_29156", - "op" : "Multiply", - "outputs" : ["Multiply_29156_0"] - }, - { - "inputs" : [ "Divide_29163", "Tanh_29165" ], - "name" : "Multiply_29166", - "op" : "Multiply", - "outputs" : ["Multiply_29166_0"] - }, - { - "inputs" : [ "Multiply_29156", "Multiply_29166" ], - "name" : "Add_29167", - "op" : "Add", - "outputs" : ["Add_29167_0"] - }, - { - "inputs" : ["Add_29167"], - "name" : "Tanh_29168", - "op" : "Tanh", - "outputs" : ["Tanh_29168_0"] - }, - { - "inputs" : [ "Divide_29148", "Tanh_29168" ], - "name" : "Multiply_29169", - "op" : "Multiply", - "outputs" : ["Multiply_29169_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_29169"], - "name" : "Reshape_29170", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_29170_0"] - }, - { - "inputs" : [ "Multiply_29169", "Reshape_29177" ], - "name" : "Dot_29178", - "op" : "Dot", - "outputs" : ["Dot_29178_0"] - }, - { - "inputs" : [ "Dot_29178", "Broadcast_29179" ], - "name" : "Add_29180", - "op" : "Add", - "outputs" : ["Add_29180_0"] - }, - { - "inputs" : [ "Add_29176", "Add_29180" ], - "name" : "Add_29181", - "op" : "Add", - "outputs" : ["Add_29181_0"] - }, - { - "inputs" : ["Add_29181"], - "lower_bounds" : [ 0, 768 ], - "name" : "Slice_29182", - "op" : "Slice", - "outputs" : ["Slice_29182_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 1024 ] - }, - { - "inputs" : ["Add_29181"], - "lower_bounds" : [ 0, 512 ], - "name" : "Slice_29204", - "op" : "Slice", - "outputs" : ["Slice_29204_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 768 ] - }, - { - "inputs" : ["Add_29181"], - "lower_bounds" : [ 0, 256 ], - "name" : "Slice_29189", - "op" : "Slice", - "outputs" : ["Slice_29189_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 512 ] - }, - { - "inputs" : ["Add_29181"], - "lower_bounds" : [ 0, 0 ], - "name" : "Slice_29197", - "op" : "Slice", - "outputs" : ["Slice_29197_0"], - "strides" : [ 1, 1 ], - "upper_bounds" : [ 64, 256 ] - }, - { - "inputs" : ["Slice_29182"], - "name" : "Negative_29185", - "op" : "Negative", - "outputs" : ["Negative_29185_0"] - }, - { - "inputs" : ["Slice_29204"], - "name" : "Tanh_29205", - "op" : "Tanh", - "outputs" : ["Tanh_29205_0"] - }, - { - "inputs" : ["Slice_29189"], - "name" : "Negative_29192", - "op" : "Negative", - "outputs" : ["Negative_29192_0"] - }, - { - "inputs" : ["Slice_29197"], - "name" : "Negative_29200", - "op" : "Negative", - "outputs" : ["Negative_29200_0"] - }, - { - "inputs" : ["Negative_29185"], - "name" : "Exp_29186", - "op" : "Exp", - "outputs" : ["Exp_29186_0"] - }, - { - "inputs" : ["Negative_29192"], - "name" : "Exp_29193", - "op" : "Exp", - "outputs" : ["Exp_29193_0"] - }, - { - "inputs" : ["Negative_29200"], - "name" : "Exp_29201", - "op" : "Exp", - "outputs" : ["Exp_29201_0"] - }, - { - "inputs" : [ "Broadcast_29184", "Exp_29186" ], - "name" : "Add_29187", - "op" : "Add", - "outputs" : ["Add_29187_0"] - }, - { - "inputs" : [ "Broadcast_29191", "Exp_29193" ], - "name" : "Add_29194", - "op" : "Add", - "outputs" : ["Add_29194_0"] - }, - { - "inputs" : [ "Broadcast_29199", "Exp_29201" ], - "name" : "Add_29202", - "op" : "Add", - "outputs" : ["Add_29202_0"] - }, - { - "inputs" : [ "Broadcast_29184", "Add_29187" ], - "name" : "Divide_29188", - "op" : "Divide", - "outputs" : ["Divide_29188_0"] - }, - { - "inputs" : [ "Broadcast_29191", "Add_29194" ], - "name" : "Divide_29195", - "op" : "Divide", - "outputs" : ["Divide_29195_0"] - }, - { - "inputs" : [ "Broadcast_29199", "Add_29202" ], - "name" : "Divide_29203", - "op" : "Divide", - "outputs" : ["Divide_29203_0"] - }, - { - "inputs" : [ "Divide_29195", "Add_29167" ], - "name" : "Multiply_29196", - "op" : "Multiply", - "outputs" : ["Multiply_29196_0"] - }, - { - "inputs" : [ "Divide_29203", "Tanh_29205" ], - "name" : "Multiply_29206", - "op" : "Multiply", - "outputs" : ["Multiply_29206_0"] - }, - { - "inputs" : [ "Multiply_29196", "Multiply_29206" ], - "name" : "Add_29207", - "op" : "Add", - "outputs" : ["Add_29207_0"] - }, - { - "inputs" : ["Add_29207"], - "name" : "Tanh_29208", - "op" : "Tanh", - "outputs" : ["Tanh_29208_0"] - }, - { - "inputs" : [ "Divide_29188", "Tanh_29208" ], - "name" : "Multiply_29209", - "op" : "Multiply", - "outputs" : ["Multiply_29209_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_29209"], - "name" : "Reshape_29210", - "op" : "Reshape", - "output_shape" : [ 1, 64, 256 ], - "outputs" : ["Reshape_29210_0"] - }, - { - "axis" : 0, - "inputs" : [ - "Reshape_26850", "Reshape_26890", "Reshape_26930", "Reshape_26970", "Reshape_27010", - "Reshape_27050", "Reshape_27090", "Reshape_27130", "Reshape_27170", "Reshape_27210", - "Reshape_27250", "Reshape_27290", "Reshape_27330", "Reshape_27370", "Reshape_27410", - "Reshape_27450", "Reshape_27490", "Reshape_27530", "Reshape_27570", "Reshape_27610", - "Reshape_27650", "Reshape_27690", "Reshape_27730", "Reshape_27770", "Reshape_27810", - "Reshape_27850", "Reshape_27890", "Reshape_27930", "Reshape_27970", "Reshape_28010", - "Reshape_28050", "Reshape_28090", "Reshape_28130", "Reshape_28170", "Reshape_28210", - "Reshape_28250", "Reshape_28290", "Reshape_28330", "Reshape_28370", "Reshape_28410", - "Reshape_28450", "Reshape_28490", "Reshape_28530", "Reshape_28570", "Reshape_28610", - "Reshape_28650", "Reshape_28690", "Reshape_28730", "Reshape_28770", "Reshape_28810", - "Reshape_28850", "Reshape_28890", "Reshape_28930", "Reshape_28970", "Reshape_29010", - "Reshape_29050", "Reshape_29090", "Reshape_29130", "Reshape_29170", "Reshape_29210" - ], - "name" : "Concat_29211", - "op" : "Concat", - "outputs" : ["Concat_29211_0"] - }, - { - "axis" : 2, - "inputs" : [ "Concat_29211", "Parameter_29212" ], - "name" : "Concat_29213", - "op" : "Concat", - "outputs" : ["Concat_29213_0"] - } - ], - "parameters" : [ - "Parameter_26802", - "Parameter_26805", - "Parameter_26806", - "Parameter_26813", - "Parameter_26814", - "Parameter_29212" - ], - "result" : [ - "Concat_29213", "Slice_29182", "Add_29187", "Broadcast_29191", - "Negative_29192", "Add_29194", "Divide_29195", "Multiply_29196", - "Constant_29198", "Slice_29197", "Add_29202", "Slice_29171", - "Dot_29174", "Broadcast_29144", "Negative_29145", "Exp_29146", - "Add_29147", "Divide_29148", "Slice_29149", "Add_29154", - "Constant_29158", "Broadcast_29159", "Negative_29160", "Add_29162", - "Slice_29131", "Reshape_29132", "Reshape_29133", "Dot_29134", - "Constant_29103", "Broadcast_29104", "Slice_29102", "Negative_29105", - "Exp_29106", "Add_29107", "Divide_29108", "Constant_29110", - "Slice_29109", "Negative_29112", "Exp_29113", "Slice_29117", - "Exp_29121", "Add_29122", "Divide_29123", "Reshape_29092", - "Broadcast_29095", "Add_29096", "Constant_29063", "Negative_29065", - "Exp_29066", "Divide_29075", "Multiply_29076", "Slice_29077", - "Negative_29080", "Divide_29083", "Slice_29051", "Reshape_29052", - "Reshape_29053", "Broadcast_29055", "Constant_29023", "Broadcast_29024", - "Slice_29022", "Add_29027", "Divide_29028", "Broadcast_29031", - "Negative_29032", "Exp_29033", "Add_29034", "Divide_29035", - "Multiply_29036", "Constant_29038", "Broadcast_29039", "Slice_29037", - "Negative_29040", "Exp_29041", "Add_29042", "Divide_29043", - "Reshape_29012", "Dot_29014", "Broadcast_29015", "Add_29016", - "Constant_28983", "Broadcast_28984", "Broadcast_29175", "Negative_28985", - "Exp_28986", "Constant_28990", "Exp_28993", "Add_28994", - "Divide_28995", "Constant_28998", "Broadcast_28999", "Slice_28997", - "Slice_28971", "Reshape_28972", "Constant_28943", "Negative_28945", - "Exp_28946", "Divide_29188", "Add_28947", "Broadcast_28951", - "Add_28954", "Constant_28958", "Broadcast_28959", "Negative_28960", - "Divide_28988", "Divide_28963", "Slice_28931", "Reshape_28933", - "Dot_28934", "Exp_28906", "Add_28907", "Divide_28908", - "Slice_28909", "Negative_28912", "Exp_28913", "Multiply_28916", - "Broadcast_28919", "Slice_28917", "Negative_28920", "Divide_28923", - "Dot_28894", "Constant_28863", "Negative_28865", "Exp_28866", - "Add_28867", "Divide_28868", "Broadcast_28871", "Negative_28872", - "Divide_28875", "Broadcast_28879", "Slice_28851", "Dot_28854", - "Add_28856", "Broadcast_28824", "Negative_28825", "Exp_28826", - "Broadcast_28911", "Add_28827", "Constant_28830", "Broadcast_28831", - "Add_28834", "Broadcast_28839", "Negative_28840", "Divide_28843", - "Reshape_28812", "Reshape_28813", "Add_28816", "Negative_28785", - "Exp_28786", "Add_28787", "Slice_28789", "Divide_28795", - "Add_29176", "Slice_28797", "Exp_28801", "Divide_28803", - "Reshape_28772", "Reshape_28773", "Dot_28774", "Add_28747", - "Negative_28752", "Exp_28753", "Add_28754", "Multiply_28756", - "Slice_28757", "Negative_28760", "Exp_28761", "Add_28762", - "Constant_29183", "Constant_29118", "Slice_28731", "Reshape_28893", - "Reshape_28733", "Broadcast_29184", "Broadcast_28975", "Broadcast_28735", - "Add_28736", "Constant_28703", "Broadcast_28704", "Negative_28712", - "Exp_28713", "Slice_28717", "Negative_28720", "Add_28722", - "Divide_28723", "Reshape_28693", "Dot_28694", "Constant_28663", - "Broadcast_28664", "Slice_28811", "Negative_28665", "Add_28667", - "Slice_29091", "Divide_28668", "Broadcast_28671", "Exp_28673", - "Add_28674", "Constant_28678", "Slice_28651", "Add_28922", - "Reshape_28652", "Reshape_28653", "Broadcast_28655", "Exp_28873", - "Constant_28623", "Broadcast_28624", "Slice_28622", "Broadcast_28855", - "Negative_28625", "Exp_28626", "Add_28627", "Divide_28628", - "Constant_28630", "Broadcast_28631", "Slice_28629", "Add_28634", - "Divide_28635", "Broadcast_28639", "Slice_28637", "Add_28642", - "Divide_28643", "Add_29136", "Divide_28955", "Add_28616", - "Constant_28583", "Slice_28582", "Add_28587", "Slice_28589", - "Negative_28592", "Exp_28593", "Add_28594", "Multiply_28596", - "Broadcast_28599", "Slice_28597", "Negative_28600", "Add_28602", - "Divide_28603", "Slice_28571", "Dot_28574", "Add_28576", - "Exp_28841", "Constant_28543", "Negative_28545", "Exp_28546", - "Add_28547", "Constant_28550", "Broadcast_28551", "Slice_28549", - "Constant_28558", "Divide_28563", "Slice_28531", "Reshape_28532", - "Dot_28534", "Broadcast_28535", "Constant_28503", "Broadcast_28504", - "Slice_28502", "Exp_28506", "Add_28507", "Constant_28510", - "Broadcast_28511", "Slice_28509", "Negative_28512", "Exp_28513", - "Divide_28515", "Constant_28518", "Slice_28517", "Exp_28521", - "Add_28522", "Reshape_28492", "Add_28496", "Negative_28465", - "Add_28714", "Negative_28472", "Exp_28473", "Divide_28475", - "Broadcast_28719", "Multiply_28476", "Constant_28478", "Add_28482", - "Divide_28483", "Reshape_28452", "Dot_28454", "Constant_28423", - "Broadcast_28424", "Negative_28425", "Add_28427", "Slice_28429", - "Negative_28432", "Multiply_28436", "Divide_28588", "Constant_28438", - "Slice_28437", "Exp_28441", "Add_28442", "Slice_28411", - "Reshape_28412", "Broadcast_28591", "Reshape_28413", "Dot_28414", - "Broadcast_28415", "Exp_28386", "Multiply_28516", "Add_28387", - "Slice_28389", "Divide_28428", "Exp_28393", "Add_28394", - "Divide_28828", "Multiply_28396", "Broadcast_28399", "Divide_28403", - "Divide_28748", "Reshape_28372", "Add_28376", "Broadcast_28344", - "Divide_28348", "Broadcast_28351", "Negative_28352", "Broadcast_29079", - "Exp_28353", "Broadcast_28359", "Add_28656", "Negative_28640", - "Negative_28360", "Reshape_28973", "Add_28362", "Divide_28363", - "Slice_28949", "Slice_28331", "Reshape_28333", "Dot_28334", - "Broadcast_28335", "Broadcast_29151", "Add_28336", "Slice_28302", - "Negative_28305", "Add_28307", "Multiply_28356", "Divide_28308", - "Broadcast_28311", "Constant_28430", "Exp_28313", "Divide_28315", - "Multiply_28316", "Constant_28318", "Slice_28317", "Exp_28321", - "Add_28322", "Broadcast_28615", "Divide_28323", "Slice_28291", - "Negative_28312", "Reshape_28293", "Broadcast_28295", "Slice_28262", - "Negative_28265", "Constant_28670", "Exp_28266", "Add_28267", - "Exp_28346", "Constant_28270", "Broadcast_28271", "Slice_28269", - "Negative_28272", "Add_28354", "Add_28274", "Constant_28278", - "Slice_28277", "Negative_28280", "Exp_28281", "Add_28282", - "Reshape_28252", "Reshape_28253", "Dot_28254", "Broadcast_28255", - "Add_28256", "Divide_28275", "Constant_28223", "Broadcast_28224", - "Exp_28953", "Negative_28225", "Exp_28226", "Divide_28228", - "Broadcast_28231", "Slice_28229", "Exp_28233", "Divide_28235", - "Add_28416", "Multiply_28236", "Slice_28237", "Broadcast_28544", - "Exp_28241", "Reshape_28932", "Divide_28243", "Divide_28283", - "Slice_28211", "Reshape_28212", "Reshape_28213", "Dot_28214", - "Broadcast_28215", "Constant_28183", "Broadcast_28184", "Slice_28182", - "Add_28187", "Divide_28188", "Broadcast_28191", "Add_28216", - "Slice_28189", "Add_28194", "Broadcast_28319", "Divide_28195", - "Multiply_28196", "Slice_28197", "Negative_28200", "Broadcast_29199", - "Exp_28201", "Add_28202", "Slice_29062", "Divide_28203", - "Slice_28171", "Reshape_28173", "Dot_28174", "Constant_28143", - "Broadcast_28144", "Slice_28142", "Negative_28145", "Exp_28146", - "Add_28147", "Divide_28548", "Constant_28150", "Negative_29152", - "Exp_28961", "Broadcast_28151", "Exp_28153", "Constant_28158", - "Broadcast_28159", "Slice_28157", "Exp_28161", "Add_28162", - "Divide_28163", "Slice_28131", "Reshape_28132", "Dot_28134", - "Broadcast_28135", "Add_28136", "Constant_28103", "Slice_28102", - "Add_28474", "Negative_28105", "Negative_28320", "Exp_28106", - "Constant_28110", "Broadcast_28111", "Slice_28109", "Exp_28113", - "Add_28114", "Broadcast_28991", "Divide_28115", "Multiply_28116", - "Constant_28118", "Broadcast_28119", "Exp_29161", "Slice_28117", - "Negative_28120", "Exp_28121", "Divide_28123", "Slice_28091", - "Reshape_28092", "Dot_28094", "Broadcast_28095", "Add_28096", - "Constant_28063", "Slice_28062", "Slice_28709", "Negative_28065", - "Slice_28069", "Negative_28072", "Exp_28073", "Slice_28357", - "Constant_28078", "Broadcast_28079", "Slice_28349", "Slice_28077", - "Slice_28051", "Reshape_28053", "Constant_28230", "Dot_28054", - "Broadcast_28055", "Add_28056", "Constant_28023", "Broadcast_28024", - "Slice_28022", "Negative_28025", "Exp_28026", "Add_28027", - "Constant_28030", "Broadcast_28031", "Slice_28029", "Negative_28032", - "Exp_28033", "Slice_28837", "Divide_28035", "Multiply_28036", - "Constant_28038", "Slice_28037", "Add_29056", "Negative_28040", - "Exp_28041", "Add_28042", "Constant_28263", "Divide_28043", - "Reshape_28012", "Add_28874", "Reshape_28013", "Broadcast_29111", - "Dot_28014", "Add_28016", "Slice_27982", "Exp_27986", - "Add_27987", "Exp_29081", "Divide_27988", "Constant_27990", - "Broadcast_27991", "Slice_27989", "Negative_27992", "Exp_27993", - "Divide_29068", "Add_27994", "Reshape_28493", "Constant_27998", - "Broadcast_27999", "Add_29082", "Negative_28000", "Add_28002", - "Divide_26883", "Broadcast_28391", "Constant_27838", "Constant_26821", - "Broadcast_26822", "Exp_27553", "Negative_26830", "Exp_26831", - "Dot_27694", "Slice_26851", "Reshape_26804", "Divide_26843", - "Dot_26808", "Add_27407", "Add_27187", "Constant_26811", - "Negative_29120", "Broadcast_26812", "Reshape_26815", "Reshape_28573", - "Add_28021", "Broadcast_27664", "Add_26819", "Tanh_28245", - "Slice_27182", "Tanh_28768", "Constant_27143", "Reshape_26857", - "Add_27227", "Slice_26924", "Divide_29203", "Multiply_26836", - "Tanh_26925", "Tanh_26928", "Divide_26833", "Negative_27832", - "Reshape_26937", "Tanh_26965", "Divide_28508", "Add_26941", - "Constant_27118", "Add_27176", "Constant_28918", "Broadcast_27784", - "Exp_29186", "Slice_29189", "Broadcast_29071", "Add_28707", - "Broadcast_28711", "Tanh_26968", "Multiply_26969", "Multiply_27006", - "Reshape_28453", "Add_27007", "Tanh_27008", "Tanh_28605", - "Broadcast_28495", "Exp_27066", "Multiply_27009", "Slice_29204", - "Slice_28869", "Reshape_27017", "Dot_27858", "Constant_28783", - "Negative_28385", "Slice_27044", "Multiply_27166", "Broadcast_28579", - "Add_26914", "Tanh_27045", "Add_27781", "Broadcast_28104", - "Add_27047", "Slice_28989", "Reshape_27013", "Reshape_27452", - "Broadcast_27175", "Add_28981", "Broadcast_27455", "Multiply_27086", - "Tanh_27088", "Add_27376", "Negative_28952", "Add_27100", - "Multiply_29169", "Add_26980", "Dot_27538", "Add_27127", - "Multiply_27129", "Negative_28745", "Broadcast_27239", "Reshape_27137", - "Dot_28698", "Add_27141", "Exp_27266", "Dot_28614", - "Reshape_28133", "Broadcast_27179", "Add_27181", "Broadcast_28264", - "Dot_28018", "Add_27056", "Broadcast_27479", "Tanh_27205", - "Parameter_26813", "Reshape_28097", "Add_28234", "Add_27207", - "Dot_28734", "Broadcast_27271", "Constant_27623", "Negative_28672", - "Tanh_27208", "Slice_27251", "Multiply_27209", "Reshape_27217", - "Tanh_28608", "Add_27114", "Add_27220", "Broadcast_28455", - "Slice_27244", "Slice_28829", "Add_28074", "Slice_27597", - "Tanh_27245", "Reshape_27257", "Exp_28633", "Dot_27258", - "Slice_28462", "Broadcast_27259", "Add_28347", "Broadcast_27624", - "Tanh_27285", "Dot_27254", "Slice_28822", "Broadcast_27599", - "Add_26810", "Slice_27084", "Multiply_27286", "Exp_28186", - "Reshape_28337", "Reshape_27297", "Exp_27441", "Broadcast_27095", - "Dot_28458", "Add_27087", "Negative_27305", "Slice_27324", - "Multiply_27326", "Dot_28658", "Add_27327", "Constant_28598", - "Add_27260", "Multiply_27329", "Reshape_26973", "Slice_27477", - "Dot_26858", "Exp_28466", "Broadcast_27339", "Constant_27678", - "Slice_27364", "Add_28287", "Tanh_27325", "Reshape_28172", - "Reshape_28537", "Exp_28921", "Divide_28068", "Add_26901", - "Divide_27643", "Constant_28870", "Add_27380", "Add_27381", - "Negative_27000", "Add_27420", "Broadcast_27139", "Tanh_27445", - "Tanh_27448", "Slice_28702", "Dot_27418", "Reshape_27612", - "Reshape_27693", "Negative_27705", "Reshape_27253", "Multiply_28769", - "Negative_27345", "Reshape_27457", "Slice_27484", "Multiply_27486", - "Divide_27235", "Multiply_28676", "Constant_27510", "Tanh_27488", - "Dot_28138", "Multiply_27276", "Dot_27498", "Exp_28746", - "Add_27500", "Multiply_27529", "Exp_27346", "Broadcast_27495", - "Broadcast_27539", "Tanh_28728", "Exp_28306", "Dot_26978", - "Add_28976", "Add_28101", "Multiply_27606", "Slice_26820", - "Dot_29094", "Add_27074", "Add_27607", "Add_27547", - "Add_27340", "Constant_28310", "Add_27496", "Broadcast_27619", - "Negative_27385", "Reshape_27533", "Reshape_28373", "Slice_27564", - "Reshape_27817", "Tanh_27608", "Reshape_27973", "Tanh_27645", - "Slice_28742", "Add_28176", "Multiply_26889", "Add_27647", - "Reshape_27337", "Add_29074", "Negative_27985", "Reshape_27657", - "Dot_27658", "Broadcast_27659", "Add_27661", "Tanh_27288", - "Slice_27902", "Reshape_27617", "Multiply_28846", "Add_27660", - "Exp_27386", "Negative_27760", "Multiply_27046", "Reshape_27853", - "Negative_28400", "Tanh_28525", "Constant_27343", "Dot_28374", - "Reshape_27697", "Slice_27382", "Slice_27349", "Broadcast_28791", - "Add_28696", "Add_27700", "Broadcast_29099", "Slice_27469", - "Add_27701", "Slice_27724", "Divide_27243", "Reshape_28852", - "Slice_27389", "Divide_28755", "Multiply_27726", "Broadcast_27359", - "Add_28882", "Constant_27703", "Dot_27738", "Constant_26834", - "Dot_28858", "Broadcast_28584", "Add_29181", "Broadcast_27739", - "Slice_27397", "Exp_28066", "Tanh_27688", "Add_27060", - "Add_27947", "Divide_28108", "Tanh_27765", "Multiply_26929", - "Multiply_27409", "Tanh_27085", "Dot_27338", "Add_28741", - "Broadcast_28199", "Multiply_27766", "Negative_28240", "Reshape_27932", - "Divide_27843", "Broadcast_28699", "Broadcast_27544", "Negative_28112", - "Add_27767", "Tanh_28808", "Add_27682", "Reshape_29093", - "Multiply_27769", "Reshape_27777", "Add_26847", "Divide_27803", - "Add_27861", "Add_29141", "Dot_28098", "Dot_27654", - "Broadcast_28935", "Broadcast_27779", "Slice_27117", "Add_26861", - "Add_27780", "Exp_26921", "Slice_28382", "Slice_27804", - "Reshape_26897", "Add_27807", "Divide_27188", "Broadcast_27759", - "Tanh_27808", "Multiply_27809", "Divide_27443", "Dot_27818", - "Constant_28358", "Broadcast_27819", "Divide_28683", "Slice_28557", - "Tanh_27845", "Broadcast_27199", "Tanh_27848", "Slice_27149", - "Add_28987", "Add_26842", "Tanh_27328", "Exp_28721", - "Broadcast_27859", "Add_28420", "Add_26967", "Multiply_28796", - "Multiply_27916", "Dot_27618", "Divide_28388", "Add_28140", - "Negative_26872", "Slice_28669", "Divide_27468", "Multiply_27886", - "Divide_26948", "Constant_27078", "Tanh_27888", "Slice_27997", - "Slice_27811", "Divide_28715", "Tanh_27728", "Reshape_27897", - "Tanh_27368", "Multiply_27729", "Tanh_27405", "Reshape_28572", - "Constant_26983", "Add_27901", "Tanh_27925", "Divide_28915", - "Multiply_27926", "Slice_28342", "Broadcast_28071", "Add_27180", - "Broadcast_26979", "Slice_26827", "Slice_28477", "Slice_27284", - "Reshape_27573", "Slice_26837", "Reshape_27937", "Broadcast_26939", - "Dot_27938", "Add_27167", "Broadcast_27939", "Dot_28578", - "Broadcast_27264", "Slice_27964", "Tanh_27965", "Broadcast_27099", - "Multiply_27516", "Add_27967", "Constant_27870", "Multiply_27969", - "Divide_28443", "Slice_28222", "Multiply_27206", "Multiply_27406", - "Constant_28950", "Slice_27764", "Broadcast_28239", "Dot_26894", - "Reshape_27977", "Broadcast_27979", "Exp_27753", "Add_27980", - "Add_27981", "Broadcast_27935", "Broadcast_27219", "Constant_27230", - "Tanh_28005", "Tanh_28008", "Multiply_27076", "Multiply_28009", - "Broadcast_28019", "Tanh_28405", "Multiply_28649", "Multiply_28766", - "Tanh_29045", "Add_27527", "Slice_27171", "Add_28700", - "Reshape_28732", "Reshape_28292", "Add_26832", "Exp_27906", - "Multiply_29156", "Divide_27148", "Add_28727", "Broadcast_27499", - "Tanh_29128", "Add_27336", "Exp_27481", "Slice_28684", - "Broadcast_28039", "Add_27367", "Constant_26870", "Multiply_28729", - "Divide_27995", "Exp_27586", "Add_28660", "Add_28467", - "Tanh_27565", "Add_28687", "Multiply_27156", "Add_27754", - "Slice_26884", "Slice_27404", "Multiply_27636", "Dot_29058", - "Divide_27203", "Slice_28444", "Negative_28705", "Add_27594", - "Broadcast_26839", "Add_28820", "Dot_27098", "Tanh_27928", - "Add_27567", "Dot_28618", "Add_28780", "Constant_28463", - "Broadcast_27299", "Add_27140", "Multiply_28806", "Tanh_28805", - "Multiply_28526", "Reshape_28817", "Broadcast_29059", "Divide_29155", - "Slice_28691", "Exp_27081", "Tanh_27568", "Exp_26946", - "Broadcast_27579", "Exp_27513", "Add_28402", "Slice_27884", - "Broadcast_28575", "Add_29060", "Dot_29098", "Slice_28371", - "Divide_28028", "Broadcast_27815", "Slice_28804", "Add_28701", - "Multiply_28166", "Tanh_26885", "Add_28927", "Add_28407", - "Reshape_28177", "Add_27581", "Multiply_28556", "Negative_27120", - "Add_27456", "Reshape_28297", "Tanh_28045", "Divide_28788", - "Add_26927", "Reshape_28577", "Divide_27043", "Tanh_28848", - "Broadcast_26835", "Add_28621", "Dot_27458", "Divide_27723", - "Add_29047", "Negative_28520", "Broadcast_27459", "Broadcast_26817", - "Add_28861", "Dot_27494", "Add_28434", "Slice_27124", - "Broadcast_28819", "Tanh_28885", "Exp_28401", "Tanh_28485", - "Broadcast_27151", "Reshape_28057", "Add_28581", "Negative_28152", - "Tanh_28888", "Constant_27158", "Multiply_28876", "Slice_28884", - "Slice_28451", "Slice_26844", "Exp_28706", "Multiply_27596", - "Add_28327", "Slice_28891", "Multiply_28686", "Slice_26891", - "Slice_28924", "Tanh_27165", "Constant_28743", "Dot_28654", - "Multiply_28926", "Constant_28878", "Multiply_28089", "Broadcast_28439", - "Dot_27978", "Dot_27614", "Add_28456", "Slice_27604", - "Add_26940", "Reshape_28937", "Broadcast_27671", "Tanh_27248", - "Slice_27444", "Add_26874", "Tanh_28125", "Dot_28818", - "Add_28221", "Add_28381", "Add_28227", "Add_28740", - "Exp_27746", "Reshape_29137", "Multiply_28566", "Reshape_28457", - "Multiply_28129", "Broadcast_26855", "Multiply_29089", "Multiply_28929", - "Reshape_27093", "Tanh_28365", "Dot_27374", "Constant_26998", - "Multiply_27369", "Dot_28498", "Constant_28710", "Add_29180", - "Slice_27684", "Tanh_29005", "Broadcast_27439", "Constant_28190", - "Tanh_28845", "Reshape_27372", "Add_28901", "Dot_28978", - "Multiply_28369", "Negative_27080", "Add_28647", "Negative_29200", - "Add_26818", "Slice_26877", "Reshape_29057", "Dot_27178", - "Tanh_27648", "Slice_28244", "Reshape_28697", "Dot_28338", - "Add_28500", "Multiply_28169", "Multiply_28446", "Add_28301", - "Tanh_29168", "Dot_26816", "Tanh_28445", "Slice_27491", - "Slice_27189", "Broadcast_28064", "Add_27820", "Add_28847", - "Multiply_27609", "Reshape_28853", "Exp_27113", "Add_28087", - "Multiply_29166", "Exp_29201", "Multiply_26849", "Multiply_27126", - "Tanh_28205", "Tanh_28648", "Multiply_29006", "Reshape_27332", - "Tanh_29125", "Slice_28724", "Constant_27583", "Negative_28792", - "Divide_27795", "Divide_26826", "Add_28940", "Divide_26963", - "Broadcast_28899", "Multiply_28529", "Multiply_28716", "Tanh_28925", - "Reshape_27857", "Divide_27708", "Tanh_28725", "Broadcast_26919", - "Add_29007", "Broadcast_26809", "Add_27740", "Tanh_27408", - "Slice_27949", "Dot_29178", "Broadcast_27019", "Divide_28155", - "Constant_27918", "Divide_28835", "Multiply_28569", "Dot_27378", - "Add_29127", "Reshape_27652", "Exp_26913", "Dot_27774", - "Multiply_26876", "Reshape_27813", "Parameter_26805", "Add_27580", - "Slice_27462", "Parameter_29212", "Slice_27004", "Slice_27782", - "Reshape_28777", "Negative_27320", "Tanh_28528", "Dot_27334", - "Reshape_29097", "Multiply_29086", "Broadcast_28939", "Exp_27026", - "Reshape_29017", "Add_28941", "Slice_28084", "Broadcast_28759", - "Broadcast_27024", "Tanh_28088", "Add_28460", "Add_29020", - "Slice_26803", "Add_28260", "Broadcast_28659", "Broadcast_27699", - "Multiply_27846", "Add_28007", "Multiply_27566", "Add_27067", - "Multiply_27249", "Broadcast_28099", "Slice_26964", "Broadcast_27064", - "Multiply_28486", "Reshape_27213", "Broadcast_28815", "Dot_28778", - "Constant_26828", "Negative_28992", "Add_28296", "Broadcast_28015", - "Tanh_28965", "Tanh_28645", "Add_28367", "Add_28821", - "Exp_28426", "Reshape_27537", "Add_28562", "Divide_27835", - "Add_27687", "Reshape_28617", "Multiply_28449", "Constant_26918", - "Negative_27025", "Dot_28378", "Reshape_27177", "Multiply_28889", - "Multiply_27686", "Constant_28798", "Add_29101", "Constant_29030", - "Multiply_28126", "Broadcast_28904", "Add_28776", "Dot_27578", - "Multiply_28969", "Slice_29084", "Multiply_27089", "Multiply_27049", - "Slice_28862", "Add_28220", "Broadcast_26944", "Slice_29004", - "Multiply_28276", "Tanh_28928", "Multiply_26886", "Dot_27014", - "Reshape_27653", "Multiply_28886", "Slice_28564", "Constant_28790", - "Broadcast_27039", "Broadcast_27419", "Exp_28481", "Add_28860", - "Add_27936", "Dot_27058", "Add_27460", "Tanh_28765", - "Dot_27214", "Negative_29072", "Add_27887", "Tanh_29088", - "Exp_28586", "Add_27727", "Reshape_28093", "Broadcast_28259", - "Divide_27435", "Dot_27138", "Divide_27348", "Broadcast_27231", - "Add_29087", "Reshape_29177", "Multiply_27316", "Multiply_29049", - "Add_27776", "Add_26860", "Add_27847", "Multiply_28006", - "Multiply_27449", "Exp_27521", "Tanh_28568", "Dot_28974", - "Add_27874", "Dot_27218", "Multiply_29009", "Slice_28044", - "Dot_27298", "Slice_29124", "Add_28340", "Slice_28491", - "Constant_27278", "Slice_27611", "Broadcast_27059", "Add_29207", - "Tanh_29048", "Constant_29078", "Divide_27715", "Add_27821", - "Exp_27913", "Add_28936", "Tanh_28085", "Exp_29193", - "Dot_29018", "Slice_27749", "Slice_29164", "Add_26936", - "Broadcast_27899", "Constant_28718", "Add_26867", "Negative_27272", - "Slice_28149", "Add_27461", "Parameter_26802", "Constant_27798", - "Slice_26942", "Broadcast_29019", "Slice_28251", "Add_28421", - "Dot_27734", "Exp_28553", "Add_28980", "Add_27442", - "Constant_26838", "Slice_29044", "Negative_27552", "Add_27020", - "Reshape_27613", "Slice_28964", "Broadcast_28979", "Add_28141", - "Multiply_28609", "Exp_28833", "Slice_28011", "Multiply_28206", - "Add_27202", "Slice_27204", "Add_29061", "Add_28967", - "Add_28620", "Broadcast_28471", "Slice_27237", "Reshape_27737", - "Constant_27910", "Slice_28004", "Add_28607", "Multiply_28209", - "Constant_27150", "Add_28900", "Multiply_28246", "Add_28580", - "Negative_28505", "Add_27274", "Add_28567", "Broadcast_27379", - "Multiply_28409", "Multiply_28489", "Divide_27068", "Slice_27917", - "Tanh_28565", "Add_28540", "Slice_27589", "Tanh_26848", - "Negative_27825", "Divide_27883", "Add_29114", "Broadcast_28539", - "Exp_28601", "Broadcast_28175", "Slice_27942", "Add_28807", - "Broadcast_28751", "Divide_28708", "Broadcast_27031", "Dot_27898", - "Tanh_29165", "Reshape_26932", "Reshape_28137", "Add_28527", - "Slice_28524", "Reshape_28497", "Add_28501", "Negative_28905", - "Constant_28838", "Exp_27953", "Constant_27263", "Broadcast_28499", - "Multiply_26926", "Add_27394", "Add_27667", "Broadcast_27951", - "Negative_27785", "Exp_29001", "Multiply_28956", "Broadcast_28739", - "Add_27900", "Slice_26862", "Add_28487", "Negative_27185", - "Add_27540", "Divide_27268", "Broadcast_28384", "Multiply_27289", - "Tanh_28208", "Add_28461", "Constant_26950", "Add_28447", - "Add_27027", "Multiply_29126", "Dot_28258", "Multiply_27526", - "Add_28100", "Add_27247", "Add_28122", "Reshape_28417", - "Add_28380", "Add_27620", "Divide_28355", "Multiply_28689", - "Add_28541", "Tanh_27968", "Reshape_27293", "Add_27514", - "Tanh_28408", "Slice_28604", "Multiply_28406", "Slice_28484", - "Slice_27291", "Constant_28590", "Exp_27306", "Slice_27629", - "Broadcast_26899", "Tanh_28368", "Slice_26997", "Add_27122", - "Constant_26958", "Multiply_28366", "Negative_28345", "Slice_27844", - "Multiply_27836", "Add_28341", "Add_27216", "Constant_28903", - "Reshape_27497", "Slice_27789", "Add_27221", "Broadcast_28339", - "Broadcast_28299", "Multiply_26916", "Multiply_28329", "Multiply_28646", - "Constant_27303", "Dot_26898", "Add_27096", "Slice_27542", - "Slice_28644", "Negative_28480", "Tanh_28325", "Add_26947", - "Negative_27632", "Multiply_27806", "Broadcast_27224", "Add_28896", - "Slice_28324", "Multiply_27246", "Add_28887", "Slice_28764", - "Multiply_28326", "Dot_28298", "Add_28314", "Tanh_28288", - "Broadcast_28695", "Broadcast_27071", "Dot_28418", "Reshape_27097", - "Negative_26912", "Dot_28494", "Multiply_28086", "Multiply_28286", - "Tanh_28285", "Negative_27192", "Constant_27950", "Slice_28164", - "Slice_27644", "Tanh_27485", "Exp_29153", "Tanh_27605", - "Constant_27423", "Tanh_29205", "Reshape_28257", "Multiply_28249", - "Constant_27438", "Slice_28422", "Multiply_27366", "Add_28247", - "Tanh_28248", "Reshape_27252", "Broadcast_28219", "Dot_28218", - "Add_27487", "Reshape_28217", "Negative_27465", "Tanh_28128", - "Constant_27470", "Negative_29185", "Broadcast_28139", "Multiply_27036", - "Multiply_27889", "Broadcast_27079", "Negative_27640", "Tanh_27725", - "Tanh_28165", "Slice_28844", "Add_28261", "Add_26900", - "Add_28181", "Multiply_29129", "Divide_27003", "Add_29140", - "Constant_27463", "Tanh_28448", "Dot_28178", "Reshape_28892", - "Add_28842", "Tanh_27528", "Broadcast_27864", "Reshape_26977", - "Add_27621", "Add_29167", "Add_28060", "Slice_27524", - "Add_28127", "Dot_28538", "Tanh_27885", "Add_28061", - "Add_28802", "Slice_28204", "Add_26981", "Exp_28641", - "Slice_28124", "Add_28207", "Broadcast_27191", "Dot_28058", - "Exp_29073", "Multiply_28049", "Slice_28404", "Reshape_28857", - "Reshape_27132", "Negative_27392", "Add_27427", "Tanh_28048", - "Add_28047", "Reshape_27577", "Add_28020", "Add_26882", - "Broadcast_26984", "Divide_28083", "Multiply_28966", "Broadcast_27711", - "Negative_28185", "Exp_26881", "Exp_28273", "Broadcast_26879", - "Divide_27115", "Constant_26878", "Divide_28948", "Broadcast_27335", - "Slice_28284", "Divide_26875", "Slice_28902", "Add_28682", - "Constant_27710", "Exp_26873", "Slice_26869", "Divide_28595", - "Add_27940", "Divide_27635", "Broadcast_26871", "Slice_27909", - "Divide_26868", "Broadcast_29119", "Divide_27228", "Exp_26866", - "Broadcast_28775", "Negative_26865", "Broadcast_26864", "Add_28242", - "Constant_26863", "Add_28180", "Add_26896", "Add_28067", - "Negative_26880", "Reshape_26893", "Reshape_26892", "Broadcast_27351", - "Broadcast_27679", "Add_26922", "Negative_26920", "Add_27741", - "Multiply_27446", "Slice_26917", "Divide_26915", "Dot_27094", - "Exp_27273", "Slice_26909", "Divide_29163", "Constant_28343", - "Broadcast_26911", "Multiply_28156", "Reshape_27057", "Dot_28898", - "Constant_26910", "Negative_28560", "Broadcast_27559", "Divide_26908", - "Exp_27681", "Exp_28561", "Constant_28303", "Add_26907", - "Constant_29070", "Exp_26906", "Negative_26905", "Tanh_29085", - "Constant_26903", "Broadcast_26935", "Dot_26934", "Slice_29069", - "Constant_28750", "Multiply_27689", "Constant_27023", "Reshape_26933", - "Slice_26931", "Reshape_27812", "Dot_28814", "Add_26962", - "Exp_28666", "Add_27562", "Exp_26961", "Negative_26960", - "Slice_26957", "Dot_28294", "Broadcast_26959", "Multiply_26956", - "Constant_28398", "Broadcast_27831", "Reshape_29013", "Reshape_26853", - "Divide_26955", "Add_26954", "Dot_27174", "Exp_26953", - "Add_27421", "Add_27554", "Broadcast_29179", "Negative_26952", - "Slice_27277", "Slice_26949", "Broadcast_26951", "Slice_29142", - "Slice_28771", "Constant_27030", "Add_28554", "Multiply_28809", - "Slice_27931", "Tanh_27005", "Broadcast_26895", "Constant_26943", - "Add_26976", "Broadcast_26975", "Add_27002", "Slice_27531", - "Add_27927", "Multiply_26996", "Broadcast_29135", "Exp_27826", - "Negative_26840", "Multiply_27876", "Add_26994", "Negative_26992", - "Constant_26990", "Divide_26988", "Add_26987", "Add_27287", - "Negative_26985", "Slice_26982", "Add_27016", "Reshape_27012", - "Broadcast_28431", "Add_27416", "Exp_29026", "Slice_27011", - "Slice_27102", "Add_27042", "Negative_27040", "Slice_27037", - "Slice_28749", "Constant_27038", "Divide_27035", "Add_27034", - "Exp_27033", "Negative_27032", "Slice_27302", "Negative_27560", - "Broadcast_27639", "Broadcast_28744", "Slice_27029", "Negative_28800", - "Divide_27028", "Constant_28758", "Slice_27022", "Broadcast_28179", - "Broadcast_27944", "Dot_27054", "Reshape_27053", "Slice_28611", - "Reshape_27052", "Multiply_27476", "Slice_27662", "Broadcast_28779", - "Slice_27051", "Slice_28542", "Multiply_27966", "Add_27082", - "Slice_27077", "Exp_28881", "Slice_28677", "Divide_27748", - "Divide_27075", "Exp_27073", "Negative_27072", "Add_28514", - "Reshape_28897", "Slice_27342", "Slice_27677", "Slice_27069", - "Multiply_29116", "Broadcast_28679", "Divide_28468", "Divide_26923", - "Constant_27070", "Negative_27065", "Constant_27063", "Constant_29143", - "Broadcast_27735", "Reshape_27092", "Divide_27123", "Exp_27121", - "Dot_27854", "Broadcast_27119", "Multiply_27116", "Negative_27112", - "Slice_27109", "Broadcast_27111", "Constant_27110", "Divide_27108", - "Exp_27106", "Exp_28361", "Broadcast_27575", "Exp_27873", - "Negative_27105", "Broadcast_27104", "Constant_27103", "Add_27136", - "Broadcast_27135", "Broadcast_28895", "Divide_27083", "Constant_27783", - "Multiply_27996", "Reshape_28377", "Dot_27134", "Reshape_27133", - "Add_27434", "Slice_27131", "Add_28536", "Slice_27422", - "Divide_27163", "Dot_27454", "Add_27101", "Add_27162", - "Tanh_28328", "Exp_27161", "Multiply_27646", "Negative_27160", - "Slice_27157", "Broadcast_27159", "Divide_27155", "Broadcast_28059", - "Add_27154", "Negative_27152", "Add_27147", "Slice_27509", - "Exp_28681", "Exp_27146", "Negative_27145", "Divide_27363", - "Slice_27142", "Broadcast_27144", "Multiply_27169", "Reshape_27173", - "Reshape_27172", "Constant_28910", "Constant_27758", "Slice_26989", - "Exp_27201", "Dot_26974", "Negative_27200", "Reshape_27377", - "Slice_27197", "Tanh_27048", "Tanh_29008", "Constant_27198", - "Multiply_27196", "Divide_27195", "Reshape_27893", "Add_27194", - "Reshape_28612", "Exp_27193", "Exp_27153", "Broadcast_28459", - "Dot_27814", "Constant_27190", "Reshape_27417", "Exp_27186", - "Exp_27946", "Exp_28193", "Dot_27018", "Broadcast_27184", - "Broadcast_27215", "Reshape_27212", "Reshape_28533", "Slice_27211", - "Divide_27555", "Add_27242", "Broadcast_26991", "Exp_27241", - "Slice_27437", "Add_26856", "Exp_27761", "Negative_27240", - "Broadcast_28464", "Constant_27238", "Multiply_27236", "Broadcast_27015", - "Slice_27957", "Add_27234", "Negative_27232", "Slice_27229", - "Exp_27226", "Negative_27225", "Slice_27222", "Reshape_28332", - "Constant_27223", "Add_27256", "Constant_28470", "Reshape_28737", - "Broadcast_27255", "Multiply_28046", "Add_27282", "Slice_27091", - "Exp_27281", "Negative_27280", "Broadcast_26904", "Tanh_28685", - "Broadcast_27279", "Add_27061", "Broadcast_27631", "Broadcast_28479", - "Slice_27269", "Broadcast_27615", "Negative_28192", "Constant_27270", - "Constant_28823", "Slice_27622", "Dot_27974", "Slice_29157", - "Divide_28268", "Add_27267", "Reshape_27773", "Negative_27265", - "Divide_27515", "Slice_28469", "Slice_27262", "Add_27296", - "Reshape_27292", "Dot_27294", "Slice_27924", "Divide_27323", - "Tanh_28488", "Exp_27321", "Slice_27317", "Broadcast_27319", - "Constant_27318", "Constant_27670", "Exp_26841", "Exp_27801", - "Slice_28309", "Divide_27315", "Divide_28075", "Negative_27505", - "Negative_27312", "Slice_27309", "Add_28034", "Multiply_29046", - "Broadcast_27311", "Broadcast_27655", "Constant_27310", "Add_27922", - "Broadcast_29064", "Divide_27308", "Negative_27480", "Divide_27963", - "Reshape_26972", "Add_27307", "Broadcast_27304", "Reshape_27333", - "Slice_28982", "Slice_27331", "Slice_27669", "Add_27362", - "Broadcast_26829", "Add_27021", "Broadcast_27895", "Constant_27983", - "Exp_27361", "Dot_26938", "Slice_27357", "Constant_27358", - "Divide_29003", "Negative_28632", "Slice_27702", "Multiply_27356", - "Broadcast_26859", "Tanh_27685", "Reshape_27572", "Add_27616", - "Divide_27355", "Slice_28782", "Slice_27062", "Add_27522", - "Add_27602", "Negative_28832", "Dot_26854", "Add_27354", - "Negative_27585", "Exp_27353", "Negative_27352", "Tanh_27525", - "Slice_26902", "Add_27347", "Negative_27600", "Broadcast_27344", - "Broadcast_27695", "Broadcast_27375", "Multiply_28849", "Reshape_27373", - "Slice_26971", "Divide_27403", "Tanh_28688", "Constant_27503", - "Exp_27401", "Negative_27400", "Negative_28440", "Add_29021", - "Broadcast_27399", "Multiply_27436", "Constant_27743", "Constant_27398", - "Slice_27742", "Tanh_27128", "Multiply_27396", "Multiply_28996", - "Divide_27395", "Constant_28198", "Add_27301", "Exp_27393", - "Broadcast_27391", "Broadcast_27744", "Constant_27390", "Constant_27718", - "Divide_27388", "Parameter_26814", "Slice_27429", "Add_27541", - "Add_27387", "Broadcast_27384", "Slice_27731", "Reshape_28692", - "Broadcast_27415", "Slice_29029", "Constant_27750", "Add_27314", - "Dot_27414", "Divide_26995", "Reshape_27413", "Negative_29000", - "Divide_27595", "Negative_28232", "Constant_27478", "Reshape_27412", - "Exp_26986", "Slice_27411", "Broadcast_27751", "Exp_26993", - "Negative_27440", "Exp_27433", "Exp_28433", "Add_27736", - "Add_26887", "Add_28167", "Negative_27432", "Tanh_27168", - "Broadcast_27431", "Negative_28392", "Constant_27430", "Add_27447", - "Exp_27561", "Divide_27428", "Constant_27598", "Negative_28585", - "Negative_27425", "Broadcast_27855", "Broadcast_27424", "Slice_27451", - "Divide_27475", "Add_27482", "Broadcast_28279", "Add_27474", - "Exp_27473", "Parameter_26806", "Negative_27472", "Broadcast_27471", - "Add_27467", "Constant_27630", "Exp_27466", "Broadcast_27464", - "Multiply_27649", "Tanh_27125", "Constant_27383", "Reshape_27493", - "Multiply_26966", "Divide_27523", "Negative_27520", "Slice_27517", - "Broadcast_27519", "Constant_27518", "Add_28082", "Negative_27512", - "Broadcast_27511", "Exp_28081", "Divide_27508", "Negative_28080", - "Add_27507", "Multiply_28076", "Exp_27506", "Add_29002", - "Dot_27778", "Slice_27502", "Multiply_28726", "Broadcast_27504", - "Divide_28675", "Exp_27313", "Add_27536", "Broadcast_27535", - "Exp_27626", "Dot_27534", "Reshape_27532", "Negative_28880", - "Reshape_27453", "Divide_27563", "Multiply_27676", "Slice_27557", - "Constant_27558", "Multiply_27556", "Slice_27549", "Add_27341", - "Tanh_27365", "Broadcast_27551", "Add_27656", "Broadcast_26999", - "Constant_27550", "Broadcast_28619", "Divide_27548", "Exp_27546", - "Divide_28523", "Negative_27545", "Constant_27543", "Broadcast_28859", - "Multiply_27929", "Add_27576", "Dot_27574", "Multiply_27489", - "Slice_27571", "Broadcast_27911", "Divide_27603", "Divide_28763", - "Slice_27371", "Exp_27601", "Constant_27943", "Negative_27360", - "Negative_27592", "Broadcast_27591", "Add_28661", "Constant_27590", - "Broadcast_27975", "Add_27941", "Add_27587", "Tanh_26888", - "Tanh_28168", "Slice_27582", "Divide_29115", "Broadcast_27584", - "Reshape_26807", "Add_27642", "Exp_27641", "Slice_27637", - "Constant_27638", "Constant_27350", "Add_27634", "Negative_28160", - "Add_28767", "Exp_27633", "Multiply_28606", "Divide_27628", - "Add_27627", "Slice_28877", "Negative_27625", "Exp_27041", - "Slice_27651", "Divide_27683", "Negative_27680", "Slice_29011", - "Divide_27675", "Broadcast_28799", "Add_27674", "Exp_27673", - "Negative_27672", "Exp_28793", "Exp_27713", "Divide_28148", - "Divide_27668", "Divide_28883", "Broadcast_29139", "Broadcast_27719", - "Slice_27164", "Exp_27666", "Reshape_28017", "Multiply_27756", - "Negative_27665", "Broadcast_28519", "Reshape_28657", "Reshape_27692", - "Slice_27691", "Broadcast_27295", "Divide_27283", "Add_27322", - "Add_27722", "Exp_27721", "Constant_28238", "Negative_27720", - "Slice_27717", "Multiply_27716", "Constant_28638", "Add_27714", - "Add_28794", "Negative_27712", "Slice_27709", "Negative_26823", - "Divide_27828", "Add_27707", "Broadcast_27704", "Slice_28662", - "Reshape_27733", "Reshape_27732", "Add_28107", "Divide_27763", - "Divide_28555", "Add_27762", "Constant_28070", "Divide_27275", - "Add_27842", "Broadcast_28944", "Slice_27757", "Negative_28552", - "Exp_27841", "Divide_27755", "Negative_27752", "Add_27300", - "Add_27747", "Negative_27745", "Slice_28942", "Broadcast_27775", - "Constant_27183", "Divide_27875", "Negative_29025", "Reshape_27772", - "Slice_28957", "Slice_27771", "Multiply_27849", "Dot_29138", - "Multiply_29206", "Add_27802", "Broadcast_28379", "Negative_26945", - "Slice_27797", "Broadcast_28375", "Broadcast_27799", "Broadcast_28559", - "Add_27882", "Multiply_27796", "Add_27794", "Exp_27793", - "Dot_27698", "Negative_27792", "Add_27402", "Slice_27869", - "Add_28781", "Slice_28364", "Divide_27483", "Broadcast_27791", - "Add_28154", "Broadcast_27984", "Add_29100", "Constant_27790", - "Exp_28001", "Divide_27788", "Add_27787", "Dot_28738", - "Exp_27786", "Add_27816", "Reshape_28052", "Multiply_26846", - "Add_27860", "Tanh_29208", "Negative_27840", "Multiply_28636", - "Reshape_27972", "Slice_27837", "Constant_28383", "Broadcast_27839", - "Divide_27908", "Multiply_28289", "Add_27834", "Reshape_29173", - "Broadcast_28784", "Broadcast_27055", "Exp_27833", "Slice_27829", - "Constant_28390", "Reshape_28977", "Constant_27830", "Exp_26824", - "Exp_27706", "Add_27827", "Negative_27905", "Constant_28350", - "Dot_28938", "Slice_27822", "Slice_28397", "Add_27501", - "Broadcast_27824", "Divide_28395", "Constant_27823", "Tanh_26845", - "Negative_27800", "Add_27856", "Reshape_27852", "Reshape_28613", - "Slice_27851", "Exp_27881", "Negative_28680", "Negative_27880", - "Slice_27877", "Broadcast_27879", "Reshape_29172", "Constant_27878", - "Negative_27872", "Broadcast_27871", "Constant_27663", "Divide_27868", - "Reshape_27492", "Add_27867", "Tanh_27768", "Add_28300", - "Exp_27866", "Add_26825", "Tanh_28968", "Negative_27865", - "Slice_27862", "Reshape_26852", "Add_27261", "Constant_27863", - "Dot_27894", "Add_28962", "Add_27696", "Reshape_27892", - "Divide_28435", "Slice_27891", "Add_28914", "Divide_27588", - "Divide_27923", "Exp_27921", "Exp_27593", "Negative_27920", - "Broadcast_27919", "Exp_27001", "Divide_27915", "Exp_27426", - "Add_27914", "Tanh_27805", "Negative_27912", "Broadcast_28304", - "Multiply_27569", "Add_27907", "Broadcast_27904", "Add_27976", - "Constant_29190", "Constant_27903", "Dot_27934", "Constant_29150", - "Reshape_27933", "Add_27962", "Exp_27961", "Add_27896", - "Negative_27952", "Negative_27960", "Multiply_28836", "Broadcast_27959", - "Constant_27958", "Broadcast_28864", "Add_27107", "Multiply_27956", - "Dot_29054", "Divide_27955", "Exp_27233", "Add_27954", - "Add_29067", "Divide_27948", "Negative_27945", "Slice_27971", - "Broadcast_28419", "Divide_28003" - ] -}] diff --git a/ngraph/test/models/mxnet/batch_dot_3.json b/ngraph/test/models/mxnet/batch_dot_3.json deleted file mode 100644 index 80f82658ba1e53..00000000000000 --- a/ngraph/test/models/mxnet/batch_dot_3.json +++ /dev/null @@ -1,207 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [ 3, 3, 2 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 3, 4, 2 ] - }, - { - "inputs" : ["Parameter_1"], - "lower_bounds" : [ 1, 0, 0 ], - "name" : "Slice_11", - "op" : "Slice", - "outputs" : ["Slice_11_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 2, 3, 2 ] - }, - { - "inputs" : ["Parameter_1"], - "lower_bounds" : [ 2, 0, 0 ], - "name" : "Slice_18", - "op" : "Slice", - "outputs" : ["Slice_18_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 3, 3, 2 ] - }, - { - "inputs" : ["Parameter_1"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_4", - "op" : "Slice", - "outputs" : ["Slice_4_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 3, 2 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 1, 0, 0 ], - "name" : "Slice_9", - "op" : "Slice", - "outputs" : ["Slice_9_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 2, 4, 2 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 2, 0, 0 ], - "name" : "Slice_16", - "op" : "Slice", - "outputs" : ["Slice_16_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 3, 4, 2 ] - }, - { - "inputs" : ["Parameter_0"], - "lower_bounds" : [ 0, 0, 0 ], - "name" : "Slice_2", - "op" : "Slice", - "outputs" : ["Slice_2_0"], - "strides" : [ 1, 1, 1 ], - "upper_bounds" : [ 1, 4, 2 ] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_11"], - "name" : "Reshape_12", - "op" : "Reshape", - "output_shape" : [ 3, 2 ], - "outputs" : ["Reshape_12_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_18"], - "name" : "Reshape_19", - "op" : "Reshape", - "output_shape" : [ 3, 2 ], - "outputs" : ["Reshape_19_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_4"], - "name" : "Reshape_5", - "op" : "Reshape", - "output_shape" : [ 3, 2 ], - "outputs" : ["Reshape_5_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_9"], - "name" : "Reshape_10", - "op" : "Reshape", - "output_shape" : [ 4, 2 ], - "outputs" : ["Reshape_10_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_16"], - "name" : "Reshape_17", - "op" : "Reshape", - "output_shape" : [ 4, 2 ], - "outputs" : ["Reshape_17_0"] - }, - { - "input_order" : [ 0, 1, 2 ], - "inputs" : ["Slice_2"], - "name" : "Reshape_3", - "op" : "Reshape", - "output_shape" : [ 4, 2 ], - "outputs" : ["Reshape_3_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_12"], - "name" : "Reshape_13", - "op" : "Reshape", - "output_shape" : [ 2, 3 ], - "outputs" : ["Reshape_13_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_19"], - "name" : "Reshape_20", - "op" : "Reshape", - "output_shape" : [ 2, 3 ], - "outputs" : ["Reshape_20_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_5"], - "name" : "Reshape_6", - "op" : "Reshape", - "output_shape" : [ 2, 3 ], - "outputs" : ["Reshape_6_0"] - }, - { - "inputs" : [ "Reshape_10", "Reshape_13" ], - "name" : "Dot_14", - "op" : "Dot", - "outputs" : ["Dot_14_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_17", "Reshape_20" ], - "name" : "Dot_21", - "op" : "Dot", - "outputs" : ["Dot_21_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_3", "Reshape_6" ], - "name" : "Dot_7", - "op" : "Dot", - "outputs" : ["Dot_7_0"], - "reduction_axes_count" : 1 - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_14"], - "name" : "Reshape_15", - "op" : "Reshape", - "output_shape" : [ 1, 4, 3 ], - "outputs" : ["Reshape_15_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_21"], - "name" : "Reshape_22", - "op" : "Reshape", - "output_shape" : [ 1, 4, 3 ], - "outputs" : ["Reshape_22_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_7"], - "name" : "Reshape_8", - "op" : "Reshape", - "output_shape" : [ 1, 4, 3 ], - "outputs" : ["Reshape_8_0"] - }, - { - "axis" : 0, - "inputs" : [ "Reshape_8", "Reshape_15", "Reshape_22" ], - "name" : "Concat_23", - "op" : "Concat", - "outputs" : ["Concat_23_0"] - }, - { - "inputs" : ["Concat_23"], - "name" : "Result_24", - "op" : "Result", - "outputs" : ["Result_24_0"] - } - ], - "parameters" : [ "Parameter_0", "Parameter_1" ], - "result" : ["Result_24"] -}] diff --git a/ngraph/test/models/mxnet/bn_bprop.json b/ngraph/test/models/mxnet/bn_bprop.json deleted file mode 100644 index d86e73a9722cf2..00000000000000 --- a/ngraph/test/models/mxnet/bn_bprop.json +++ /dev/null @@ -1,613 +0,0 @@ -[{ - "name" : "Function_1", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36", - "op" : "Parameter", - "outputs" : ["Parameter_36_0"], - "shape" : [ 2, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_4", - "op" : "Parameter", - "outputs" : ["Parameter_4_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 2, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_38", - "op" : "Parameter", - "outputs" : ["Parameter_38_0"], - "shape" : [ 2, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_18", - "op" : "Constant", - "outputs" : ["Constant_18_0"], - "shape" : [], - "value" : ["0.001"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_12", - "op" : "Constant", - "outputs" : ["Constant_12_0"], - "shape" : [3], - "value" : [ "2", "2", "2" ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_6", - "op" : "Constant", - "outputs" : ["Constant_6_0"], - "shape" : [3], - "value" : [ "2", "2", "2" ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_95", - "op" : "Constant", - "outputs" : ["Constant_95_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_93", - "op" : "Constant", - "outputs" : ["Constant_93_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_2"], - "name" : "Reshape_29", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_29_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_1"], - "name" : "Reshape_28", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_28_0"] - }, - { - "inputs" : [ "Parameter_0", "Parameter_0" ], - "name" : "Multiply_10", - "op" : "Multiply", - "outputs" : ["Multiply_10_0"] - }, - { - "inputs" : ["Parameter_0"], - "name" : "Sum_5", - "op" : "Sum", - "outputs" : ["Sum_5_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Parameter_0"], - "name" : "Sum_9", - "op" : "Sum", - "outputs" : ["Sum_9_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Parameter_38", "Parameter_36" ], - "name" : "Multiply_39", - "op" : "Multiply", - "outputs" : ["Multiply_39_0"] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 2, 3 ] - }, - { - "axes" : [0], - "inputs" : ["Constant_95"], - "name" : "Broadcast_96", - "op" : "Broadcast", - "outputs" : ["Broadcast_96_0"], - "shape" : [3] - }, - { - "axes" : [0], - "inputs" : ["Constant_93"], - "name" : "Broadcast_94", - "op" : "Broadcast", - "outputs" : ["Broadcast_94_0"], - "shape" : [3] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_29"], - "name" : "Reshape_33", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_33_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_28"], - "name" : "Reshape_30", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_30_0"] - }, - { - "inputs" : ["Multiply_10"], - "name" : "Sum_11", - "op" : "Sum", - "outputs" : ["Sum_11_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Sum_5", "Constant_6" ], - "name" : "Divide_7", - "op" : "Divide", - "outputs" : ["Divide_7_0"] - }, - { - "inputs" : [ "Sum_9", "Sum_9" ], - "name" : "Multiply_13", - "op" : "Multiply", - "outputs" : ["Multiply_13_0"] - }, - { - "inputs" : ["Multiply_39"], - "name" : "Sum_41", - "op" : "Sum", - "outputs" : ["Sum_41_0"], - "reduction_axes" : [0] - }, - { - "axes" : [0], - "inputs" : ["Reshape_33"], - "name" : "Broadcast_34", - "op" : "Broadcast", - "outputs" : ["Broadcast_34_0"], - "shape" : [ 2, 3 ] - }, - { - "axes" : [0], - "inputs" : ["Reshape_30"], - "name" : "Broadcast_31", - "op" : "Broadcast", - "outputs" : ["Broadcast_31_0"], - "shape" : [ 2, 3 ] - }, - { - "input_order" : [0], - "inputs" : ["Divide_7"], - "name" : "Reshape_8", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_8_0"] - }, - { - "inputs" : [ "Multiply_13", "Constant_12" ], - "name" : "Divide_14", - "op" : "Divide", - "outputs" : ["Divide_14_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_41"], - "name" : "Reshape_42", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_42_0"] - }, - { - "inputs" : [ "Multiply_39", "Broadcast_31" ], - "name" : "Multiply_44", - "op" : "Multiply", - "outputs" : ["Multiply_44_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_8"], - "name" : "Reshape_24", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_24_0"] - }, - { - "inputs" : [ "Sum_11", "Divide_14" ], - "name" : "Subtract_15", - "op" : "Subtract", - "outputs" : ["Subtract_15_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_42"], - "name" : "Reshape_43", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_43_0"] - }, - { - "inputs" : ["Multiply_44"], - "name" : "Negative_51", - "op" : "Negative", - "outputs" : ["Negative_51_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_24"], - "name" : "Broadcast_25", - "op" : "Broadcast", - "outputs" : ["Broadcast_25_0"], - "shape" : [ 2, 3 ] - }, - { - "inputs" : [ "Subtract_15", "Constant_12" ], - "name" : "Divide_16", - "op" : "Divide", - "outputs" : ["Divide_16_0"] - }, - { - "inputs" : [ "Parameter_0", "Broadcast_25" ], - "name" : "Subtract_26", - "op" : "Subtract", - "outputs" : ["Subtract_26_0"] - }, - { - "input_order" : [0], - "inputs" : ["Divide_16"], - "name" : "Reshape_17", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_17_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_17"], - "name" : "Reshape_20", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_20_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_20"], - "name" : "Broadcast_21", - "op" : "Broadcast", - "outputs" : ["Broadcast_21_0"], - "shape" : [ 2, 3 ] - }, - { - "inputs" : [ "Broadcast_21", "Broadcast_19" ], - "name" : "Add_22", - "op" : "Add", - "outputs" : ["Add_22_0"] - }, - { - "inputs" : ["Add_22"], - "name" : "Sqrt_23", - "op" : "Sqrt", - "outputs" : ["Sqrt_23_0"] - }, - { - "inputs" : [ "Subtract_26", "Sqrt_23" ], - "name" : "Divide_27", - "op" : "Divide", - "outputs" : ["Divide_27_0"] - }, - { - "inputs" : [ "Sqrt_23", "Sqrt_23" ], - "name" : "Add_54", - "op" : "Add", - "outputs" : ["Add_54_0"] - }, - { - "inputs" : [ "Divide_27", "Broadcast_31" ], - "name" : "Multiply_32", - "op" : "Multiply", - "outputs" : ["Multiply_32_0"] - }, - { - "inputs" : [ "Divide_27", "Multiply_39" ], - "name" : "Multiply_45", - "op" : "Multiply", - "outputs" : ["Multiply_45_0"] - }, - { - "inputs" : [ "Multiply_44", "Divide_27" ], - "name" : "Multiply_49", - "op" : "Multiply", - "outputs" : ["Multiply_49_0"] - }, - { - "inputs" : [ "Negative_51", "Divide_27" ], - "name" : "Multiply_52", - "op" : "Multiply", - "outputs" : ["Multiply_52_0"] - }, - { - "inputs" : [ "Multiply_32", "Broadcast_34" ], - "name" : "Add_35", - "op" : "Add", - "outputs" : ["Add_35_0"] - }, - { - "inputs" : ["Multiply_45"], - "name" : "Sum_46", - "op" : "Sum", - "outputs" : ["Sum_46_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Multiply_49", "Subtract_26" ], - "name" : "Divide_50", - "op" : "Divide", - "outputs" : ["Divide_50_0"] - }, - { - "inputs" : [ "Multiply_52", "Sqrt_23" ], - "name" : "Divide_53", - "op" : "Divide", - "outputs" : ["Divide_53_0"] - }, - { - "inputs" : [ "Add_35", "Parameter_38" ], - "name" : "Multiply_40", - "op" : "Multiply", - "outputs" : ["Multiply_40_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_46"], - "name" : "Reshape_47", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_47_0"] - }, - { - "inputs" : ["Divide_50"], - "name" : "Negative_82", - "op" : "Negative", - "outputs" : ["Negative_82_0"] - }, - { - "inputs" : [ "Divide_53", "Add_54" ], - "name" : "Divide_55", - "op" : "Divide", - "outputs" : ["Divide_55_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_47"], - "name" : "Reshape_48", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_48_0"] - }, - { - "inputs" : ["Negative_82"], - "name" : "Sum_83", - "op" : "Sum", - "outputs" : ["Sum_83_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Divide_55"], - "name" : "Sum_57", - "op" : "Sum", - "outputs" : ["Sum_57_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [0], - "inputs" : ["Sum_83"], - "name" : "Reshape_84", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_84_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_57"], - "name" : "Reshape_58", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_58_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_84"], - "name" : "Reshape_85", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_85_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_58"], - "name" : "Reshape_59", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_59_0"] - }, - { - "inputs" : [ "Reshape_85", "Divide_7" ], - "name" : "Multiply_86", - "op" : "Multiply", - "outputs" : ["Multiply_86_0"] - }, - { - "inputs" : [ "Reshape_59", "Divide_16" ], - "name" : "Multiply_60", - "op" : "Multiply", - "outputs" : ["Multiply_60_0"] - }, - { - "inputs" : [ "Multiply_86", "Sum_5" ], - "name" : "Divide_87", - "op" : "Divide", - "outputs" : ["Divide_87_0"] - }, - { - "inputs" : [ "Multiply_60", "Subtract_15" ], - "name" : "Divide_61", - "op" : "Divide", - "outputs" : ["Divide_61_0"] - }, - { - "axes" : [0], - "inputs" : ["Divide_87"], - "name" : "Broadcast_91", - "op" : "Broadcast", - "outputs" : ["Broadcast_91_0"], - "shape" : [ 2, 3 ] - }, - { - "axes" : [0], - "inputs" : ["Divide_61"], - "name" : "Broadcast_76", - "op" : "Broadcast", - "outputs" : ["Broadcast_76_0"], - "shape" : [ 2, 3 ] - }, - { - "inputs" : ["Divide_61"], - "name" : "Negative_65", - "op" : "Negative", - "outputs" : ["Negative_65_0"] - }, - { - "inputs" : [ "Broadcast_76", "Parameter_0" ], - "name" : "Multiply_77", - "op" : "Multiply", - "outputs" : ["Multiply_77_0"] - }, - { - "inputs" : [ "Parameter_0", "Broadcast_76" ], - "name" : "Multiply_79", - "op" : "Multiply", - "outputs" : ["Multiply_79_0"] - }, - { - "inputs" : [ "Negative_65", "Divide_14" ], - "name" : "Multiply_66", - "op" : "Multiply", - "outputs" : ["Multiply_66_0"] - }, - { - "inputs" : [ "Multiply_66", "Multiply_13" ], - "name" : "Divide_67", - "op" : "Divide", - "outputs" : ["Divide_67_0"] - }, - { - "inputs" : [ "Divide_67", "Sum_9" ], - "name" : "Multiply_72", - "op" : "Multiply", - "outputs" : ["Multiply_72_0"] - }, - { - "inputs" : [ "Sum_9", "Divide_67" ], - "name" : "Multiply_73", - "op" : "Multiply", - "outputs" : ["Multiply_73_0"] - }, - { - "inputs" : [ "Multiply_72", "Multiply_73" ], - "name" : "Add_74", - "op" : "Add", - "outputs" : ["Add_74_0"] - }, - { - "axes" : [0], - "inputs" : ["Add_74"], - "name" : "Broadcast_75", - "op" : "Broadcast", - "outputs" : ["Broadcast_75_0"], - "shape" : [ 2, 3 ] - }, - { - "inputs" : [ "Broadcast_75", "Multiply_77" ], - "name" : "Add_78", - "op" : "Add", - "outputs" : ["Add_78_0"] - }, - { - "inputs" : [ "Add_78", "Multiply_79" ], - "name" : "Add_80", - "op" : "Add", - "outputs" : ["Add_80_0"] - }, - { - "inputs" : [ "Add_80", "Divide_50" ], - "name" : "Add_81", - "op" : "Add", - "outputs" : ["Add_81_0"] - }, - { - "inputs" : [ "Add_81", "Broadcast_91" ], - "name" : "Add_92", - "op" : "Add", - "outputs" : ["Add_92_0"] - } - ], - "parameters" : [ - "Parameter_38", "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_3", - "Parameter_4", "Parameter_36" - ], - "result" : [ - "Add_92", "Reshape_48", "Reshape_43", "Broadcast_94", "Broadcast_96", - "Multiply_40" - ] -}] - - diff --git a/ngraph/test/models/mxnet/bn_fprop.json b/ngraph/test/models/mxnet/bn_fprop.json deleted file mode 100644 index 9fa1da090d8181..00000000000000 --- a/ngraph/test/models/mxnet/bn_fprop.json +++ /dev/null @@ -1,289 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36", - "op" : "Parameter", - "outputs" : ["Parameter_36_0"], - "shape" : [ 2, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_4", - "op" : "Parameter", - "outputs" : ["Parameter_4_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 2, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_18", - "op" : "Constant", - "outputs" : ["Constant_18_0"], - "shape" : [], - "value" : ["0.001"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_12", - "op" : "Constant", - "outputs" : ["Constant_12_0"], - "shape" : [3], - "value" : [ "2", "2", "2" ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_6", - "op" : "Constant", - "outputs" : ["Constant_6_0"], - "shape" : [3], - "value" : [ "2", "2", "2" ] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_2"], - "name" : "Reshape_29", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_29_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_1"], - "name" : "Reshape_28", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_28_0"] - }, - { - "inputs" : [ "Parameter_0", "Parameter_0" ], - "name" : "Multiply_10", - "op" : "Multiply", - "outputs" : ["Multiply_10_0"] - }, - { - "inputs" : ["Parameter_0"], - "name" : "Sum_5", - "op" : "Sum", - "outputs" : ["Sum_5_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Parameter_0"], - "name" : "Sum_9", - "op" : "Sum", - "outputs" : ["Sum_9_0"], - "reduction_axes" : [0] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_18"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 2, 3 ] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_29"], - "name" : "Reshape_33", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_33_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_28"], - "name" : "Reshape_30", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_30_0"] - }, - { - "inputs" : ["Multiply_10"], - "name" : "Sum_11", - "op" : "Sum", - "outputs" : ["Sum_11_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Sum_5", "Constant_6" ], - "name" : "Divide_7", - "op" : "Divide", - "outputs" : ["Divide_7_0"] - }, - { - "inputs" : [ "Sum_9", "Sum_9" ], - "name" : "Multiply_13", - "op" : "Multiply", - "outputs" : ["Multiply_13_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_33"], - "name" : "Broadcast_34", - "op" : "Broadcast", - "outputs" : ["Broadcast_34_0"], - "shape" : [ 2, 3 ] - }, - { - "axes" : [0], - "inputs" : ["Reshape_30"], - "name" : "Broadcast_31", - "op" : "Broadcast", - "outputs" : ["Broadcast_31_0"], - "shape" : [ 2, 3 ] - }, - { - "input_order" : [0], - "inputs" : ["Divide_7"], - "name" : "Reshape_8", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_8_0"] - }, - { - "inputs" : [ "Multiply_13", "Constant_12" ], - "name" : "Divide_14", - "op" : "Divide", - "outputs" : ["Divide_14_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_8"], - "name" : "Reshape_24", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_24_0"] - }, - { - "inputs" : [ "Sum_11", "Divide_14" ], - "name" : "Subtract_15", - "op" : "Subtract", - "outputs" : ["Subtract_15_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_24"], - "name" : "Broadcast_25", - "op" : "Broadcast", - "outputs" : ["Broadcast_25_0"], - "shape" : [ 2, 3 ] - }, - { - "inputs" : [ "Subtract_15", "Constant_12" ], - "name" : "Divide_16", - "op" : "Divide", - "outputs" : ["Divide_16_0"] - }, - { - "inputs" : [ "Parameter_0", "Broadcast_25" ], - "name" : "Subtract_26", - "op" : "Subtract", - "outputs" : ["Subtract_26_0"] - }, - { - "input_order" : [0], - "inputs" : ["Divide_16"], - "name" : "Reshape_17", - "op" : "Reshape", - "output_shape" : [ 1, 3 ], - "outputs" : ["Reshape_17_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_17"], - "name" : "Reshape_20", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_20_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_20"], - "name" : "Broadcast_21", - "op" : "Broadcast", - "outputs" : ["Broadcast_21_0"], - "shape" : [ 2, 3 ] - }, - { - "inputs" : [ "Broadcast_21", "Broadcast_19" ], - "name" : "Add_22", - "op" : "Add", - "outputs" : ["Add_22_0"] - }, - { - "inputs" : ["Add_22"], - "name" : "Sqrt_23", - "op" : "Sqrt", - "outputs" : ["Sqrt_23_0"] - }, - { - "inputs" : [ "Subtract_26", "Sqrt_23" ], - "name" : "Divide_27", - "op" : "Divide", - "outputs" : ["Divide_27_0"] - }, - { - "inputs" : [ "Divide_27", "Broadcast_31" ], - "name" : "Multiply_32", - "op" : "Multiply", - "outputs" : ["Multiply_32_0"] - }, - { - "inputs" : [ "Multiply_32", "Broadcast_34" ], - "name" : "Add_35", - "op" : "Add", - "outputs" : ["Add_35_0"] - }, - { - "inputs" : [ "Add_35", "Parameter_36" ], - "name" : "Multiply_37", - "op" : "Multiply", - "outputs" : ["Multiply_37_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_3", "Parameter_4", - "Parameter_36" - ], - "result" : ["Multiply_37"] -}] - diff --git a/ngraph/test/models/mxnet/bn_fprop_b2c3h2w2.json b/ngraph/test/models/mxnet/bn_fprop_b2c3h2w2.json deleted file mode 100644 index 1d1c1ce9db6309..00000000000000 --- a/ngraph/test/models/mxnet/bn_fprop_b2c3h2w2.json +++ /dev/null @@ -1,288 +0,0 @@ -[{ - "name" : "Function_4", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_155", - "op" : "Parameter", - "outputs" : ["Parameter_155_0"], - "shape" : [ 2, 3, 2, 2 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_109", - "op" : "Parameter", - "outputs" : ["Parameter_109_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_108", - "op" : "Parameter", - "outputs" : ["Parameter_108_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_107", - "op" : "Parameter", - "outputs" : ["Parameter_107_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_106", - "op" : "Parameter", - "outputs" : ["Parameter_106_0"], - "shape" : [3] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_105", - "op" : "Parameter", - "outputs" : ["Parameter_105_0"], - "shape" : [ 2, 3, 2, 2 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_137", - "op" : "Constant", - "outputs" : ["Constant_137_0"], - "shape" : [], - "value" : ["0.001"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_117", - "op" : "Constant", - "outputs" : ["Constant_117_0"], - "shape" : [3], - "value" : [ "8", "8", "8" ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_111", - "op" : "Constant", - "outputs" : ["Constant_111_0"], - "shape" : [3], - "value" : [ "8", "8", "8" ] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_107"], - "name" : "Reshape_148", - "op" : "Reshape", - "output_shape" : [ 1, 3, 1, 1 ], - "outputs" : ["Reshape_148_0"] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_106"], - "name" : "Reshape_147", - "op" : "Reshape", - "output_shape" : [ 1, 3, 1, 1 ], - "outputs" : ["Reshape_147_0"] - }, - { - "inputs" : [ "Parameter_105", "Parameter_105" ], - "name" : "Multiply_115", - "op" : "Multiply", - "outputs" : ["Multiply_115_0"] - }, - { - "inputs" : ["Parameter_105"], - "name" : "Sum_110", - "op" : "Sum", - "outputs" : ["Sum_110_0"], - "reduction_axes" : [ 0, 2, 3 ] - }, - { - "inputs" : ["Parameter_105"], - "name" : "Sum_114", - "op" : "Sum", - "outputs" : ["Sum_114_0"], - "reduction_axes" : [ 0, 2, 3 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_137"], - "name" : "Broadcast_138", - "op" : "Broadcast", - "outputs" : ["Broadcast_138_0"], - "shape" : [ 2, 3, 2, 2 ] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_148"], - "name" : "Reshape_152", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_152_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_147"], - "name" : "Reshape_149", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_149_0"] - }, - { - "inputs" : ["Multiply_115"], - "name" : "Sum_116", - "op" : "Sum", - "outputs" : ["Sum_116_0"], - "reduction_axes" : [ 0, 2, 3 ] - }, - { - "inputs" : [ "Sum_110", "Constant_111" ], - "name" : "Divide_112", - "op" : "Divide", - "outputs" : ["Divide_112_0"] - }, - { - "inputs" : [ "Sum_114", "Sum_114" ], - "name" : "Multiply_118", - "op" : "Multiply", - "outputs" : ["Multiply_118_0"] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_152"], - "name" : "Broadcast_153", - "op" : "Broadcast", - "outputs" : ["Broadcast_153_0"], - "shape" : [ 2, 3, 2, 2 ] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_149"], - "name" : "Broadcast_150", - "op" : "Broadcast", - "outputs" : ["Broadcast_150_0"], - "shape" : [ 2, 3, 2, 2 ] - }, - { - "input_order" : [0], - "inputs" : ["Divide_112"], - "name" : "Reshape_113", - "op" : "Reshape", - "output_shape" : [ 1, 3, 1, 1 ], - "outputs" : ["Reshape_113_0"] - }, - { - "inputs" : [ "Multiply_118", "Constant_117" ], - "name" : "Divide_119", - "op" : "Divide", - "outputs" : ["Divide_119_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_113"], - "name" : "Reshape_143", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_143_0"] - }, - { - "inputs" : [ "Sum_116", "Divide_119" ], - "name" : "Subtract_120", - "op" : "Subtract", - "outputs" : ["Subtract_120_0"] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_143"], - "name" : "Broadcast_144", - "op" : "Broadcast", - "outputs" : ["Broadcast_144_0"], - "shape" : [ 2, 3, 2, 2 ] - }, - { - "inputs" : [ "Subtract_120", "Constant_117" ], - "name" : "Divide_121", - "op" : "Divide", - "outputs" : ["Divide_121_0"] - }, - { - "inputs" : [ "Parameter_105", "Broadcast_144" ], - "name" : "Subtract_145", - "op" : "Subtract", - "outputs" : ["Subtract_145_0"] - }, - { - "input_order" : [0], - "inputs" : ["Divide_121"], - "name" : "Reshape_122", - "op" : "Reshape", - "output_shape" : [ 1, 3, 1, 1 ], - "outputs" : ["Reshape_122_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_122"], - "name" : "Reshape_139", - "op" : "Reshape", - "output_shape" : [3], - "outputs" : ["Reshape_139_0"] - }, - { - "axes" : [ 0, 2, 3 ], - "inputs" : ["Reshape_139"], - "name" : "Broadcast_140", - "op" : "Broadcast", - "outputs" : ["Broadcast_140_0"], - "shape" : [ 2, 3, 2, 2 ] - }, - { - "inputs" : [ "Broadcast_140", "Broadcast_138" ], - "name" : "Add_141", - "op" : "Add", - "outputs" : ["Add_141_0"] - }, - { - "inputs" : ["Add_141"], - "name" : "Sqrt_142", - "op" : "Sqrt", - "outputs" : ["Sqrt_142_0"] - }, - { - "inputs" : [ "Subtract_145", "Sqrt_142" ], - "name" : "Divide_146", - "op" : "Divide", - "outputs" : ["Divide_146_0"] - }, - { - "inputs" : [ "Divide_146", "Broadcast_150" ], - "name" : "Multiply_151", - "op" : "Multiply", - "outputs" : ["Multiply_151_0"] - }, - { - "inputs" : [ "Multiply_151", "Broadcast_153" ], - "name" : "Add_154", - "op" : "Add", - "outputs" : ["Add_154_0"] - }, - { - "inputs" : [ "Add_154", "Parameter_155" ], - "name" : "Multiply_156", - "op" : "Multiply", - "outputs" : ["Multiply_156_0"] - } - ], - "parameters" : [ - "Parameter_105", "Parameter_106", "Parameter_107", "Parameter_108", - "Parameter_109", "Parameter_155" - ], - "result" : ["Multiply_156"] -}] diff --git a/ngraph/test/models/mxnet/gru_debug.json b/ngraph/test/models/mxnet/gru_debug.json deleted file mode 100644 index 49e2a635c5cda4..00000000000000 --- a/ngraph/test/models/mxnet/gru_debug.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"Function_12","ops":[{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1114","op":"Parameter","outputs":["Parameter_1114_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1113","op":"Parameter","outputs":["Parameter_1113_0"],"shape":[30,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1105","op":"Parameter","outputs":["Parameter_1105_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1104","op":"Parameter","outputs":["Parameter_1104_0"],"shape":[30,20]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_993","op":"Parameter","outputs":["Parameter_993_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_992","op":"Parameter","outputs":["Parameter_992_0"],"shape":[30,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_984","op":"Parameter","outputs":["Parameter_984_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_983","op":"Parameter","outputs":["Parameter_983_0"],"shape":[30,20]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_917","op":"Parameter","outputs":["Parameter_917_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_916","op":"Parameter","outputs":["Parameter_916_0"],"shape":[30,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_901","op":"Parameter","outputs":["Parameter_901_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_900","op":"Parameter","outputs":["Parameter_900_0"],"shape":[30,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_867","op":"Parameter","outputs":["Parameter_867_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_866","op":"Parameter","outputs":["Parameter_866_0"],"shape":[30,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_858","op":"Parameter","outputs":["Parameter_858_0"],"shape":[30]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_857","op":"Parameter","outputs":["Parameter_857_0"],"shape":[30,10]},{"cacheable":false,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_854","op":"Parameter","outputs":["Parameter_854_0"],"shape":[2,2,10]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1111","op":"Constant","outputs":["Constant_1111_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_914","op":"Constant","outputs":["Constant_914_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_924","op":"Constant","outputs":["Constant_924_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_937","op":"Constant","outputs":["Constant_937_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_930","op":"Constant","outputs":["Constant_930_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_864","op":"Constant","outputs":["Constant_864_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_874","op":"Constant","outputs":["Constant_874_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_887","op":"Constant","outputs":["Constant_887_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_880","op":"Constant","outputs":["Constant_880_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1038","op":"Constant","outputs":["Constant_1038_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1051","op":"Constant","outputs":["Constant_1051_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1044","op":"Constant","outputs":["Constant_1044_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1121","op":"Constant","outputs":["Constant_1121_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1134","op":"Constant","outputs":["Constant_1134_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1127","op":"Constant","outputs":["Constant_1127_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_956","op":"Constant","outputs":["Constant_956_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_969","op":"Constant","outputs":["Constant_969_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_962","op":"Constant","outputs":["Constant_962_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1159","op":"Constant","outputs":["Constant_1159_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1172","op":"Constant","outputs":["Constant_1172_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1165","op":"Constant","outputs":["Constant_1165_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_990","op":"Constant","outputs":["Constant_990_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1000","op":"Constant","outputs":["Constant_1000_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1013","op":"Constant","outputs":["Constant_1013_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1006","op":"Constant","outputs":["Constant_1006_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1076","op":"Constant","outputs":["Constant_1076_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1089","op":"Constant","outputs":["Constant_1089_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1082","op":"Constant","outputs":["Constant_1082_0"],"shape":[],"value":["1"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_1114"],"name":"Broadcast_1117","op":"Broadcast","outputs":["Broadcast_1117_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_1114"],"name":"Broadcast_1155","op":"Broadcast","outputs":["Broadcast_1155_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1113"],"name":"Reshape_1115","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_1115_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1113"],"name":"Reshape_1153","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_1153_0"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_1105"],"name":"Broadcast_1108","op":"Broadcast","outputs":["Broadcast_1108_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_1105"],"name":"Broadcast_1150","op":"Broadcast","outputs":["Broadcast_1150_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1104"],"name":"Reshape_1106","op":"Reshape","output_shape":[20,30],"outputs":["Reshape_1106_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1104"],"name":"Reshape_1148","op":"Reshape","output_shape":[20,30],"outputs":["Reshape_1148_0"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_993"],"name":"Broadcast_996","op":"Broadcast","outputs":["Broadcast_996_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_993"],"name":"Broadcast_1072","op":"Broadcast","outputs":["Broadcast_1072_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_992"],"name":"Reshape_994","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_994_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_992"],"name":"Reshape_1070","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_1070_0"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_984"],"name":"Broadcast_987","op":"Broadcast","outputs":["Broadcast_987_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_984"],"name":"Broadcast_1067","op":"Broadcast","outputs":["Broadcast_1067_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_983"],"name":"Reshape_985","op":"Reshape","output_shape":[20,30],"outputs":["Reshape_985_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_983"],"name":"Reshape_1065","op":"Reshape","output_shape":[20,30],"outputs":["Reshape_1065_0"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_917"],"name":"Broadcast_920","op":"Broadcast","outputs":["Broadcast_920_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_917"],"name":"Broadcast_952","op":"Broadcast","outputs":["Broadcast_952_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_916"],"name":"Reshape_918","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_918_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_916"],"name":"Reshape_950","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_950_0"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_901"],"name":"Broadcast_904","op":"Broadcast","outputs":["Broadcast_904_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_901"],"name":"Broadcast_911","op":"Broadcast","outputs":["Broadcast_911_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_900"],"name":"Reshape_902","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_902_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_900"],"name":"Reshape_909","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_909_0"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_867"],"name":"Broadcast_870","op":"Broadcast","outputs":["Broadcast_870_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_867"],"name":"Broadcast_1034","op":"Broadcast","outputs":["Broadcast_1034_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_866"],"name":"Reshape_868","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_868_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_866"],"name":"Reshape_1032","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_1032_0"]},{"axes":[0],"control_deps":[],"inputs":["Parameter_858"],"name":"Broadcast_861","op":"Broadcast","outputs":["Broadcast_861_0"],"shape":[2,30]},{"axes":[0],"control_deps":[],"inputs":["Parameter_858"],"name":"Broadcast_1029","op":"Broadcast","outputs":["Broadcast_1029_0"],"shape":[2,30]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_857"],"name":"Reshape_859","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_859_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_857"],"name":"Reshape_1027","op":"Reshape","output_shape":[10,30],"outputs":["Reshape_1027_0"]},{"control_deps":[],"inputs":["Parameter_854"],"lower_bounds":[0,0,0],"name":"Slice_855","op":"Slice","outputs":["Slice_855_0"],"strides":[1,1,1],"upper_bounds":[2,1,10]},{"control_deps":[],"inputs":["Parameter_854"],"lower_bounds":[0,1,0],"name":"Slice_907","op":"Slice","outputs":["Slice_907_0"],"strides":[1,1,1],"upper_bounds":[2,2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1111"],"name":"Broadcast_1112","op":"Broadcast","outputs":["Broadcast_1112_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_914"],"name":"Broadcast_915","op":"Broadcast","outputs":["Broadcast_915_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_924"],"name":"Broadcast_925","op":"Broadcast","outputs":["Broadcast_925_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_937"],"name":"Broadcast_938","op":"Broadcast","outputs":["Broadcast_938_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_930"],"name":"Broadcast_931","op":"Broadcast","outputs":["Broadcast_931_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_864"],"name":"Broadcast_865","op":"Broadcast","outputs":["Broadcast_865_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_874"],"name":"Broadcast_875","op":"Broadcast","outputs":["Broadcast_875_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_887"],"name":"Broadcast_888","op":"Broadcast","outputs":["Broadcast_888_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_880"],"name":"Broadcast_881","op":"Broadcast","outputs":["Broadcast_881_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1038"],"name":"Broadcast_1039","op":"Broadcast","outputs":["Broadcast_1039_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1051"],"name":"Broadcast_1052","op":"Broadcast","outputs":["Broadcast_1052_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1044"],"name":"Broadcast_1045","op":"Broadcast","outputs":["Broadcast_1045_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1121"],"name":"Broadcast_1122","op":"Broadcast","outputs":["Broadcast_1122_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1134"],"name":"Broadcast_1135","op":"Broadcast","outputs":["Broadcast_1135_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1127"],"name":"Broadcast_1128","op":"Broadcast","outputs":["Broadcast_1128_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_956"],"name":"Broadcast_957","op":"Broadcast","outputs":["Broadcast_957_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_969"],"name":"Broadcast_970","op":"Broadcast","outputs":["Broadcast_970_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_962"],"name":"Broadcast_963","op":"Broadcast","outputs":["Broadcast_963_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1159"],"name":"Broadcast_1160","op":"Broadcast","outputs":["Broadcast_1160_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1172"],"name":"Broadcast_1173","op":"Broadcast","outputs":["Broadcast_1173_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1165"],"name":"Broadcast_1166","op":"Broadcast","outputs":["Broadcast_1166_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_990"],"name":"Broadcast_991","op":"Broadcast","outputs":["Broadcast_991_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1000"],"name":"Broadcast_1001","op":"Broadcast","outputs":["Broadcast_1001_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1013"],"name":"Broadcast_1014","op":"Broadcast","outputs":["Broadcast_1014_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1006"],"name":"Broadcast_1007","op":"Broadcast","outputs":["Broadcast_1007_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1076"],"name":"Broadcast_1077","op":"Broadcast","outputs":["Broadcast_1077_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1089"],"name":"Broadcast_1090","op":"Broadcast","outputs":["Broadcast_1090_0"],"shape":[2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1082"],"name":"Broadcast_1083","op":"Broadcast","outputs":["Broadcast_1083_0"],"shape":[2,10]},{"control_deps":[],"input_order":[0,1,2],"inputs":["Slice_855"],"name":"Reshape_856","op":"Reshape","output_shape":[2,10],"outputs":["Reshape_856_0"]},{"control_deps":[],"input_order":[0,1,2],"inputs":["Slice_907"],"name":"Reshape_908","op":"Reshape","output_shape":[2,10],"outputs":["Reshape_908_0"]},{"control_deps":[],"inputs":["Broadcast_1112","Reshape_1115"],"name":"Dot_1116","op":"Dot","outputs":["Dot_1116_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Broadcast_915","Reshape_918"],"name":"Dot_919","op":"Dot","outputs":["Dot_919_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Broadcast_865","Reshape_868"],"name":"Dot_869","op":"Dot","outputs":["Dot_869_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Broadcast_991","Reshape_994"],"name":"Dot_995","op":"Dot","outputs":["Dot_995_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_856","Reshape_859"],"name":"Dot_860","op":"Dot","outputs":["Dot_860_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_856","Reshape_902"],"name":"Dot_903","op":"Dot","outputs":["Dot_903_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_908","Reshape_909"],"name":"Dot_910","op":"Dot","outputs":["Dot_910_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_908","Reshape_1027"],"name":"Dot_1028","op":"Dot","outputs":["Dot_1028_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Dot_1116","Broadcast_1117"],"name":"Add_1118","op":"Add","outputs":["Add_1118_0"]},{"control_deps":[],"inputs":["Dot_919","Broadcast_920"],"name":"Add_921","op":"Add","outputs":["Add_921_0"]},{"control_deps":[],"inputs":["Dot_869","Broadcast_870"],"name":"Add_871","op":"Add","outputs":["Add_871_0"]},{"control_deps":[],"inputs":["Dot_995","Broadcast_996"],"name":"Add_997","op":"Add","outputs":["Add_997_0"]},{"control_deps":[],"inputs":["Dot_860","Broadcast_861"],"name":"Add_862","op":"Add","outputs":["Add_862_0"]},{"control_deps":[],"inputs":["Dot_903","Broadcast_904"],"name":"Add_905","op":"Add","outputs":["Add_905_0"]},{"control_deps":[],"inputs":["Dot_910","Broadcast_911"],"name":"Add_912","op":"Add","outputs":["Add_912_0"]},{"control_deps":[],"inputs":["Dot_1028","Broadcast_1029"],"name":"Add_1030","op":"Add","outputs":["Add_1030_0"]},{"control_deps":[],"inputs":["Add_1118"],"lower_bounds":[0,10],"name":"Slice_1119","op":"Slice","outputs":["Slice_1119_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1118"],"lower_bounds":[0,0],"name":"Slice_1132","op":"Slice","outputs":["Slice_1132_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_1118"],"lower_bounds":[0,20],"name":"Slice_1140","op":"Slice","outputs":["Slice_1140_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_921"],"lower_bounds":[0,10],"name":"Slice_922","op":"Slice","outputs":["Slice_922_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_921"],"lower_bounds":[0,0],"name":"Slice_935","op":"Slice","outputs":["Slice_935_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_921"],"lower_bounds":[0,20],"name":"Slice_943","op":"Slice","outputs":["Slice_943_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_871"],"lower_bounds":[0,10],"name":"Slice_872","op":"Slice","outputs":["Slice_872_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_871"],"lower_bounds":[0,0],"name":"Slice_885","op":"Slice","outputs":["Slice_885_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_871"],"lower_bounds":[0,20],"name":"Slice_893","op":"Slice","outputs":["Slice_893_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_997"],"lower_bounds":[0,10],"name":"Slice_998","op":"Slice","outputs":["Slice_998_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_997"],"lower_bounds":[0,0],"name":"Slice_1011","op":"Slice","outputs":["Slice_1011_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_997"],"lower_bounds":[0,20],"name":"Slice_1019","op":"Slice","outputs":["Slice_1019_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_862"],"lower_bounds":[0,10],"name":"Slice_863","op":"Slice","outputs":["Slice_863_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_862"],"lower_bounds":[0,20],"name":"Slice_883","op":"Slice","outputs":["Slice_883_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_862"],"lower_bounds":[0,0],"name":"Slice_884","op":"Slice","outputs":["Slice_884_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_905"],"lower_bounds":[0,10],"name":"Slice_906","op":"Slice","outputs":["Slice_906_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_905"],"lower_bounds":[0,20],"name":"Slice_965","op":"Slice","outputs":["Slice_965_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_905"],"lower_bounds":[0,0],"name":"Slice_966","op":"Slice","outputs":["Slice_966_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_912"],"lower_bounds":[0,10],"name":"Slice_913","op":"Slice","outputs":["Slice_913_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_912"],"lower_bounds":[0,20],"name":"Slice_933","op":"Slice","outputs":["Slice_933_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_912"],"lower_bounds":[0,0],"name":"Slice_934","op":"Slice","outputs":["Slice_934_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_1030"],"lower_bounds":[0,10],"name":"Slice_1031","op":"Slice","outputs":["Slice_1031_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1030"],"lower_bounds":[0,20],"name":"Slice_1047","op":"Slice","outputs":["Slice_1047_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_1030"],"lower_bounds":[0,0],"name":"Slice_1048","op":"Slice","outputs":["Slice_1048_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Slice_863","Slice_872"],"name":"Add_873","op":"Add","outputs":["Add_873_0"]},{"control_deps":[],"inputs":["Slice_884","Slice_885"],"name":"Add_886","op":"Add","outputs":["Add_886_0"]},{"control_deps":[],"inputs":["Slice_913","Slice_922"],"name":"Add_923","op":"Add","outputs":["Add_923_0"]},{"control_deps":[],"inputs":["Slice_934","Slice_935"],"name":"Add_936","op":"Add","outputs":["Add_936_0"]},{"control_deps":[],"inputs":["Add_873"],"name":"Negative_876","op":"Negative","outputs":["Negative_876_0"]},{"control_deps":[],"inputs":["Add_886"],"name":"Negative_889","op":"Negative","outputs":["Negative_889_0"]},{"control_deps":[],"inputs":["Add_923"],"name":"Negative_926","op":"Negative","outputs":["Negative_926_0"]},{"control_deps":[],"inputs":["Add_936"],"name":"Negative_939","op":"Negative","outputs":["Negative_939_0"]},{"control_deps":[],"inputs":["Negative_876"],"name":"Exp_877","op":"Exp","outputs":["Exp_877_0"]},{"control_deps":[],"inputs":["Negative_889"],"name":"Exp_890","op":"Exp","outputs":["Exp_890_0"]},{"control_deps":[],"inputs":["Negative_926"],"name":"Exp_927","op":"Exp","outputs":["Exp_927_0"]},{"control_deps":[],"inputs":["Negative_939"],"name":"Exp_940","op":"Exp","outputs":["Exp_940_0"]},{"control_deps":[],"inputs":["Broadcast_875","Exp_877"],"name":"Add_878","op":"Add","outputs":["Add_878_0"]},{"control_deps":[],"inputs":["Broadcast_888","Exp_890"],"name":"Add_891","op":"Add","outputs":["Add_891_0"]},{"control_deps":[],"inputs":["Broadcast_925","Exp_927"],"name":"Add_928","op":"Add","outputs":["Add_928_0"]},{"control_deps":[],"inputs":["Broadcast_938","Exp_940"],"name":"Add_941","op":"Add","outputs":["Add_941_0"]},{"control_deps":[],"inputs":["Broadcast_875","Add_878"],"name":"Divide_879","op":"Divide","outputs":["Divide_879_0"]},{"control_deps":[],"inputs":["Broadcast_888","Add_891"],"name":"Divide_892","op":"Divide","outputs":["Divide_892_0"]},{"control_deps":[],"inputs":["Broadcast_925","Add_928"],"name":"Divide_929","op":"Divide","outputs":["Divide_929_0"]},{"control_deps":[],"inputs":["Broadcast_938","Add_941"],"name":"Divide_942","op":"Divide","outputs":["Divide_942_0"]},{"control_deps":[],"inputs":["Broadcast_881","Divide_879"],"name":"Subtract_882","op":"Subtract","outputs":["Subtract_882_0"]},{"control_deps":[],"inputs":["Divide_879","Broadcast_865"],"name":"Multiply_898","op":"Multiply","outputs":["Multiply_898_0"]},{"control_deps":[],"inputs":["Divide_892","Slice_893"],"name":"Multiply_894","op":"Multiply","outputs":["Multiply_894_0"]},{"control_deps":[],"inputs":["Broadcast_931","Divide_929"],"name":"Subtract_932","op":"Subtract","outputs":["Subtract_932_0"]},{"control_deps":[],"inputs":["Divide_929","Broadcast_915"],"name":"Multiply_948","op":"Multiply","outputs":["Multiply_948_0"]},{"control_deps":[],"inputs":["Divide_942","Slice_943"],"name":"Multiply_944","op":"Multiply","outputs":["Multiply_944_0"]},{"control_deps":[],"inputs":["Slice_883","Multiply_894"],"name":"Add_895","op":"Add","outputs":["Add_895_0"]},{"control_deps":[],"inputs":["Slice_933","Multiply_944"],"name":"Add_945","op":"Add","outputs":["Add_945_0"]},{"control_deps":[],"inputs":["Add_895"],"name":"Tanh_896","op":"Tanh","outputs":["Tanh_896_0"]},{"control_deps":[],"inputs":["Add_945"],"name":"Tanh_946","op":"Tanh","outputs":["Tanh_946_0"]},{"control_deps":[],"inputs":["Subtract_882","Tanh_896"],"name":"Multiply_897","op":"Multiply","outputs":["Multiply_897_0"]},{"control_deps":[],"inputs":["Subtract_932","Tanh_946"],"name":"Multiply_947","op":"Multiply","outputs":["Multiply_947_0"]},{"control_deps":[],"inputs":["Multiply_897","Multiply_898"],"name":"Add_899","op":"Add","outputs":["Add_899_0"]},{"control_deps":[],"inputs":["Multiply_947","Multiply_948"],"name":"Add_949","op":"Add","outputs":["Add_949_0"]},{"control_deps":[],"inputs":["Add_899","Reshape_1032"],"name":"Dot_1033","op":"Dot","outputs":["Dot_1033_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Add_949","Reshape_950"],"name":"Dot_951","op":"Dot","outputs":["Dot_951_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Dot_1033","Broadcast_1034"],"name":"Add_1035","op":"Add","outputs":["Add_1035_0"]},{"control_deps":[],"inputs":["Dot_951","Broadcast_952"],"name":"Add_953","op":"Add","outputs":["Add_953_0"]},{"control_deps":[],"inputs":["Add_1035"],"lower_bounds":[0,10],"name":"Slice_1036","op":"Slice","outputs":["Slice_1036_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1035"],"lower_bounds":[0,0],"name":"Slice_1049","op":"Slice","outputs":["Slice_1049_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_1035"],"lower_bounds":[0,20],"name":"Slice_1057","op":"Slice","outputs":["Slice_1057_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_953"],"lower_bounds":[0,10],"name":"Slice_954","op":"Slice","outputs":["Slice_954_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_953"],"lower_bounds":[0,0],"name":"Slice_967","op":"Slice","outputs":["Slice_967_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_953"],"lower_bounds":[0,20],"name":"Slice_975","op":"Slice","outputs":["Slice_975_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Slice_1031","Slice_1036"],"name":"Add_1037","op":"Add","outputs":["Add_1037_0"]},{"control_deps":[],"inputs":["Slice_1048","Slice_1049"],"name":"Add_1050","op":"Add","outputs":["Add_1050_0"]},{"control_deps":[],"inputs":["Slice_906","Slice_954"],"name":"Add_955","op":"Add","outputs":["Add_955_0"]},{"control_deps":[],"inputs":["Slice_966","Slice_967"],"name":"Add_968","op":"Add","outputs":["Add_968_0"]},{"control_deps":[],"inputs":["Add_1037"],"name":"Negative_1040","op":"Negative","outputs":["Negative_1040_0"]},{"control_deps":[],"inputs":["Add_1050"],"name":"Negative_1053","op":"Negative","outputs":["Negative_1053_0"]},{"control_deps":[],"inputs":["Add_955"],"name":"Negative_958","op":"Negative","outputs":["Negative_958_0"]},{"control_deps":[],"inputs":["Add_968"],"name":"Negative_971","op":"Negative","outputs":["Negative_971_0"]},{"control_deps":[],"inputs":["Negative_1040"],"name":"Exp_1041","op":"Exp","outputs":["Exp_1041_0"]},{"control_deps":[],"inputs":["Negative_1053"],"name":"Exp_1054","op":"Exp","outputs":["Exp_1054_0"]},{"control_deps":[],"inputs":["Negative_958"],"name":"Exp_959","op":"Exp","outputs":["Exp_959_0"]},{"control_deps":[],"inputs":["Negative_971"],"name":"Exp_972","op":"Exp","outputs":["Exp_972_0"]},{"control_deps":[],"inputs":["Broadcast_1039","Exp_1041"],"name":"Add_1042","op":"Add","outputs":["Add_1042_0"]},{"control_deps":[],"inputs":["Broadcast_1052","Exp_1054"],"name":"Add_1055","op":"Add","outputs":["Add_1055_0"]},{"control_deps":[],"inputs":["Broadcast_957","Exp_959"],"name":"Add_960","op":"Add","outputs":["Add_960_0"]},{"control_deps":[],"inputs":["Broadcast_970","Exp_972"],"name":"Add_973","op":"Add","outputs":["Add_973_0"]},{"control_deps":[],"inputs":["Broadcast_1039","Add_1042"],"name":"Divide_1043","op":"Divide","outputs":["Divide_1043_0"]},{"control_deps":[],"inputs":["Broadcast_1052","Add_1055"],"name":"Divide_1056","op":"Divide","outputs":["Divide_1056_0"]},{"control_deps":[],"inputs":["Broadcast_957","Add_960"],"name":"Divide_961","op":"Divide","outputs":["Divide_961_0"]},{"control_deps":[],"inputs":["Broadcast_970","Add_973"],"name":"Divide_974","op":"Divide","outputs":["Divide_974_0"]},{"control_deps":[],"inputs":["Broadcast_1045","Divide_1043"],"name":"Subtract_1046","op":"Subtract","outputs":["Subtract_1046_0"]},{"control_deps":[],"inputs":["Divide_1043","Add_899"],"name":"Multiply_1062","op":"Multiply","outputs":["Multiply_1062_0"]},{"control_deps":[],"inputs":["Divide_1056","Slice_1057"],"name":"Multiply_1058","op":"Multiply","outputs":["Multiply_1058_0"]},{"control_deps":[],"inputs":["Broadcast_963","Divide_961"],"name":"Subtract_964","op":"Subtract","outputs":["Subtract_964_0"]},{"control_deps":[],"inputs":["Divide_961","Add_949"],"name":"Multiply_980","op":"Multiply","outputs":["Multiply_980_0"]},{"control_deps":[],"inputs":["Divide_974","Slice_975"],"name":"Multiply_976","op":"Multiply","outputs":["Multiply_976_0"]},{"control_deps":[],"inputs":["Slice_1047","Multiply_1058"],"name":"Add_1059","op":"Add","outputs":["Add_1059_0"]},{"control_deps":[],"inputs":["Slice_965","Multiply_976"],"name":"Add_977","op":"Add","outputs":["Add_977_0"]},{"control_deps":[],"inputs":["Add_1059"],"name":"Tanh_1060","op":"Tanh","outputs":["Tanh_1060_0"]},{"control_deps":[],"inputs":["Add_977"],"name":"Tanh_978","op":"Tanh","outputs":["Tanh_978_0"]},{"control_deps":[],"inputs":["Subtract_1046","Tanh_1060"],"name":"Multiply_1061","op":"Multiply","outputs":["Multiply_1061_0"]},{"control_deps":[],"inputs":["Subtract_964","Tanh_978"],"name":"Multiply_979","op":"Multiply","outputs":["Multiply_979_0"]},{"control_deps":[],"inputs":["Multiply_1061","Multiply_1062"],"name":"Add_1063","op":"Add","outputs":["Add_1063_0"]},{"control_deps":[],"inputs":["Multiply_979","Multiply_980"],"name":"Add_981","op":"Add","outputs":["Add_981_0"]},{"axis":1,"control_deps":[],"inputs":["Add_1063","Add_949"],"name":"Concat_1064","op":"Concat","outputs":["Concat_1064_0"]},{"axis":1,"control_deps":[],"inputs":["Add_899","Add_981"],"name":"Concat_982","op":"Concat","outputs":["Concat_982_0"]},{"control_deps":[],"inputs":["Concat_1064","Reshape_1065"],"name":"Dot_1066","op":"Dot","outputs":["Dot_1066_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Concat_1064","Reshape_1106"],"name":"Dot_1107","op":"Dot","outputs":["Dot_1107_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Concat_982","Reshape_985"],"name":"Dot_986","op":"Dot","outputs":["Dot_986_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Concat_982","Reshape_1148"],"name":"Dot_1149","op":"Dot","outputs":["Dot_1149_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Dot_1066","Broadcast_1067"],"name":"Add_1068","op":"Add","outputs":["Add_1068_0"]},{"control_deps":[],"inputs":["Dot_1107","Broadcast_1108"],"name":"Add_1109","op":"Add","outputs":["Add_1109_0"]},{"control_deps":[],"inputs":["Dot_986","Broadcast_987"],"name":"Add_988","op":"Add","outputs":["Add_988_0"]},{"control_deps":[],"inputs":["Dot_1149","Broadcast_1150"],"name":"Add_1151","op":"Add","outputs":["Add_1151_0"]},{"control_deps":[],"inputs":["Add_1068"],"lower_bounds":[0,10],"name":"Slice_1069","op":"Slice","outputs":["Slice_1069_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1068"],"lower_bounds":[0,20],"name":"Slice_1085","op":"Slice","outputs":["Slice_1085_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_1068"],"lower_bounds":[0,0],"name":"Slice_1086","op":"Slice","outputs":["Slice_1086_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_1109"],"lower_bounds":[0,10],"name":"Slice_1110","op":"Slice","outputs":["Slice_1110_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1109"],"lower_bounds":[0,20],"name":"Slice_1130","op":"Slice","outputs":["Slice_1130_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_1109"],"lower_bounds":[0,0],"name":"Slice_1131","op":"Slice","outputs":["Slice_1131_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_988"],"lower_bounds":[0,10],"name":"Slice_989","op":"Slice","outputs":["Slice_989_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_988"],"lower_bounds":[0,20],"name":"Slice_1009","op":"Slice","outputs":["Slice_1009_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_988"],"lower_bounds":[0,0],"name":"Slice_1010","op":"Slice","outputs":["Slice_1010_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_1151"],"lower_bounds":[0,10],"name":"Slice_1152","op":"Slice","outputs":["Slice_1152_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1151"],"lower_bounds":[0,20],"name":"Slice_1168","op":"Slice","outputs":["Slice_1168_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_1151"],"lower_bounds":[0,0],"name":"Slice_1169","op":"Slice","outputs":["Slice_1169_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Slice_1110","Slice_1119"],"name":"Add_1120","op":"Add","outputs":["Add_1120_0"]},{"control_deps":[],"inputs":["Slice_1131","Slice_1132"],"name":"Add_1133","op":"Add","outputs":["Add_1133_0"]},{"control_deps":[],"inputs":["Slice_989","Slice_998"],"name":"Add_999","op":"Add","outputs":["Add_999_0"]},{"control_deps":[],"inputs":["Slice_1010","Slice_1011"],"name":"Add_1012","op":"Add","outputs":["Add_1012_0"]},{"control_deps":[],"inputs":["Add_1120"],"name":"Negative_1123","op":"Negative","outputs":["Negative_1123_0"]},{"control_deps":[],"inputs":["Add_1133"],"name":"Negative_1136","op":"Negative","outputs":["Negative_1136_0"]},{"control_deps":[],"inputs":["Add_999"],"name":"Negative_1002","op":"Negative","outputs":["Negative_1002_0"]},{"control_deps":[],"inputs":["Add_1012"],"name":"Negative_1015","op":"Negative","outputs":["Negative_1015_0"]},{"control_deps":[],"inputs":["Negative_1123"],"name":"Exp_1124","op":"Exp","outputs":["Exp_1124_0"]},{"control_deps":[],"inputs":["Negative_1136"],"name":"Exp_1137","op":"Exp","outputs":["Exp_1137_0"]},{"control_deps":[],"inputs":["Negative_1002"],"name":"Exp_1003","op":"Exp","outputs":["Exp_1003_0"]},{"control_deps":[],"inputs":["Negative_1015"],"name":"Exp_1016","op":"Exp","outputs":["Exp_1016_0"]},{"control_deps":[],"inputs":["Broadcast_1122","Exp_1124"],"name":"Add_1125","op":"Add","outputs":["Add_1125_0"]},{"control_deps":[],"inputs":["Broadcast_1135","Exp_1137"],"name":"Add_1138","op":"Add","outputs":["Add_1138_0"]},{"control_deps":[],"inputs":["Broadcast_1001","Exp_1003"],"name":"Add_1004","op":"Add","outputs":["Add_1004_0"]},{"control_deps":[],"inputs":["Broadcast_1014","Exp_1016"],"name":"Add_1017","op":"Add","outputs":["Add_1017_0"]},{"control_deps":[],"inputs":["Broadcast_1122","Add_1125"],"name":"Divide_1126","op":"Divide","outputs":["Divide_1126_0"]},{"control_deps":[],"inputs":["Broadcast_1135","Add_1138"],"name":"Divide_1139","op":"Divide","outputs":["Divide_1139_0"]},{"control_deps":[],"inputs":["Broadcast_1001","Add_1004"],"name":"Divide_1005","op":"Divide","outputs":["Divide_1005_0"]},{"control_deps":[],"inputs":["Broadcast_1014","Add_1017"],"name":"Divide_1018","op":"Divide","outputs":["Divide_1018_0"]},{"control_deps":[],"inputs":["Broadcast_1128","Divide_1126"],"name":"Subtract_1129","op":"Subtract","outputs":["Subtract_1129_0"]},{"control_deps":[],"inputs":["Divide_1126","Broadcast_1112"],"name":"Multiply_1145","op":"Multiply","outputs":["Multiply_1145_0"]},{"control_deps":[],"inputs":["Divide_1139","Slice_1140"],"name":"Multiply_1141","op":"Multiply","outputs":["Multiply_1141_0"]},{"control_deps":[],"inputs":["Broadcast_1007","Divide_1005"],"name":"Subtract_1008","op":"Subtract","outputs":["Subtract_1008_0"]},{"control_deps":[],"inputs":["Divide_1005","Broadcast_991"],"name":"Multiply_1024","op":"Multiply","outputs":["Multiply_1024_0"]},{"control_deps":[],"inputs":["Divide_1018","Slice_1019"],"name":"Multiply_1020","op":"Multiply","outputs":["Multiply_1020_0"]},{"control_deps":[],"inputs":["Slice_1130","Multiply_1141"],"name":"Add_1142","op":"Add","outputs":["Add_1142_0"]},{"control_deps":[],"inputs":["Slice_1009","Multiply_1020"],"name":"Add_1021","op":"Add","outputs":["Add_1021_0"]},{"control_deps":[],"inputs":["Add_1142"],"name":"Tanh_1143","op":"Tanh","outputs":["Tanh_1143_0"]},{"control_deps":[],"inputs":["Add_1021"],"name":"Tanh_1022","op":"Tanh","outputs":["Tanh_1022_0"]},{"control_deps":[],"inputs":["Subtract_1129","Tanh_1143"],"name":"Multiply_1144","op":"Multiply","outputs":["Multiply_1144_0"]},{"control_deps":[],"inputs":["Subtract_1008","Tanh_1022"],"name":"Multiply_1023","op":"Multiply","outputs":["Multiply_1023_0"]},{"control_deps":[],"inputs":["Multiply_1144","Multiply_1145"],"name":"Add_1146","op":"Add","outputs":["Add_1146_0"]},{"control_deps":[],"inputs":["Multiply_1023","Multiply_1024"],"name":"Add_1025","op":"Add","outputs":["Add_1025_0"]},{"control_deps":[],"input_order":[0,1],"inputs":["Add_1146"],"name":"Reshape_1147","op":"Reshape","output_shape":[2,1,10],"outputs":["Reshape_1147_0"]},{"control_deps":[],"inputs":["Add_1146","Reshape_1153"],"name":"Dot_1154","op":"Dot","outputs":["Dot_1154_0"],"reduction_axes_count":1},{"control_deps":[],"input_order":[0,1],"inputs":["Add_1025"],"name":"Reshape_1026","op":"Reshape","output_shape":[2,1,10],"outputs":["Reshape_1026_0"]},{"control_deps":[],"inputs":["Add_1025","Reshape_1070"],"name":"Dot_1071","op":"Dot","outputs":["Dot_1071_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Dot_1154","Broadcast_1155"],"name":"Add_1156","op":"Add","outputs":["Add_1156_0"]},{"control_deps":[],"inputs":["Dot_1071","Broadcast_1072"],"name":"Add_1073","op":"Add","outputs":["Add_1073_0"]},{"control_deps":[],"inputs":["Add_1156"],"lower_bounds":[0,10],"name":"Slice_1157","op":"Slice","outputs":["Slice_1157_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1156"],"lower_bounds":[0,0],"name":"Slice_1170","op":"Slice","outputs":["Slice_1170_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_1156"],"lower_bounds":[0,20],"name":"Slice_1178","op":"Slice","outputs":["Slice_1178_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Add_1073"],"lower_bounds":[0,10],"name":"Slice_1074","op":"Slice","outputs":["Slice_1074_0"],"strides":[1,1],"upper_bounds":[2,20]},{"control_deps":[],"inputs":["Add_1073"],"lower_bounds":[0,0],"name":"Slice_1087","op":"Slice","outputs":["Slice_1087_0"],"strides":[1,1],"upper_bounds":[2,10]},{"control_deps":[],"inputs":["Add_1073"],"lower_bounds":[0,20],"name":"Slice_1095","op":"Slice","outputs":["Slice_1095_0"],"strides":[1,1],"upper_bounds":[2,30]},{"control_deps":[],"inputs":["Slice_1152","Slice_1157"],"name":"Add_1158","op":"Add","outputs":["Add_1158_0"]},{"control_deps":[],"inputs":["Slice_1169","Slice_1170"],"name":"Add_1171","op":"Add","outputs":["Add_1171_0"]},{"control_deps":[],"inputs":["Slice_1069","Slice_1074"],"name":"Add_1075","op":"Add","outputs":["Add_1075_0"]},{"control_deps":[],"inputs":["Slice_1086","Slice_1087"],"name":"Add_1088","op":"Add","outputs":["Add_1088_0"]},{"control_deps":[],"inputs":["Add_1158"],"name":"Negative_1161","op":"Negative","outputs":["Negative_1161_0"]},{"control_deps":[],"inputs":["Add_1171"],"name":"Negative_1174","op":"Negative","outputs":["Negative_1174_0"]},{"control_deps":[],"inputs":["Add_1075"],"name":"Negative_1078","op":"Negative","outputs":["Negative_1078_0"]},{"control_deps":[],"inputs":["Add_1088"],"name":"Negative_1091","op":"Negative","outputs":["Negative_1091_0"]},{"control_deps":[],"inputs":["Negative_1161"],"name":"Exp_1162","op":"Exp","outputs":["Exp_1162_0"]},{"control_deps":[],"inputs":["Negative_1174"],"name":"Exp_1175","op":"Exp","outputs":["Exp_1175_0"]},{"control_deps":[],"inputs":["Negative_1078"],"name":"Exp_1079","op":"Exp","outputs":["Exp_1079_0"]},{"control_deps":[],"inputs":["Negative_1091"],"name":"Exp_1092","op":"Exp","outputs":["Exp_1092_0"]},{"control_deps":[],"inputs":["Broadcast_1160","Exp_1162"],"name":"Add_1163","op":"Add","outputs":["Add_1163_0"]},{"control_deps":[],"inputs":["Broadcast_1173","Exp_1175"],"name":"Add_1176","op":"Add","outputs":["Add_1176_0"]},{"control_deps":[],"inputs":["Broadcast_1077","Exp_1079"],"name":"Add_1080","op":"Add","outputs":["Add_1080_0"]},{"control_deps":[],"inputs":["Broadcast_1090","Exp_1092"],"name":"Add_1093","op":"Add","outputs":["Add_1093_0"]},{"control_deps":[],"inputs":["Broadcast_1160","Add_1163"],"name":"Divide_1164","op":"Divide","outputs":["Divide_1164_0"]},{"control_deps":[],"inputs":["Broadcast_1173","Add_1176"],"name":"Divide_1177","op":"Divide","outputs":["Divide_1177_0"]},{"control_deps":[],"inputs":["Broadcast_1077","Add_1080"],"name":"Divide_1081","op":"Divide","outputs":["Divide_1081_0"]},{"control_deps":[],"inputs":["Broadcast_1090","Add_1093"],"name":"Divide_1094","op":"Divide","outputs":["Divide_1094_0"]},{"control_deps":[],"inputs":["Broadcast_1166","Divide_1164"],"name":"Subtract_1167","op":"Subtract","outputs":["Subtract_1167_0"]},{"control_deps":[],"inputs":["Divide_1164","Add_1146"],"name":"Multiply_1183","op":"Multiply","outputs":["Multiply_1183_0"]},{"control_deps":[],"inputs":["Divide_1177","Slice_1178"],"name":"Multiply_1179","op":"Multiply","outputs":["Multiply_1179_0"]},{"control_deps":[],"inputs":["Broadcast_1083","Divide_1081"],"name":"Subtract_1084","op":"Subtract","outputs":["Subtract_1084_0"]},{"control_deps":[],"inputs":["Divide_1081","Add_1025"],"name":"Multiply_1100","op":"Multiply","outputs":["Multiply_1100_0"]},{"control_deps":[],"inputs":["Divide_1094","Slice_1095"],"name":"Multiply_1096","op":"Multiply","outputs":["Multiply_1096_0"]},{"control_deps":[],"inputs":["Slice_1168","Multiply_1179"],"name":"Add_1180","op":"Add","outputs":["Add_1180_0"]},{"control_deps":[],"inputs":["Slice_1085","Multiply_1096"],"name":"Add_1097","op":"Add","outputs":["Add_1097_0"]},{"control_deps":[],"inputs":["Add_1180"],"name":"Tanh_1181","op":"Tanh","outputs":["Tanh_1181_0"]},{"control_deps":[],"inputs":["Add_1097"],"name":"Tanh_1098","op":"Tanh","outputs":["Tanh_1098_0"]},{"control_deps":[],"inputs":["Subtract_1167","Tanh_1181"],"name":"Multiply_1182","op":"Multiply","outputs":["Multiply_1182_0"]},{"control_deps":[],"inputs":["Subtract_1084","Tanh_1098"],"name":"Multiply_1099","op":"Multiply","outputs":["Multiply_1099_0"]},{"control_deps":[],"inputs":["Multiply_1182","Multiply_1183"],"name":"Add_1184","op":"Add","outputs":["Add_1184_0"]},{"control_deps":[],"inputs":["Multiply_1099","Multiply_1100"],"name":"Add_1101","op":"Add","outputs":["Add_1101_0"]},{"control_deps":[],"input_order":[0,1],"inputs":["Add_1184"],"name":"Reshape_1185","op":"Reshape","output_shape":[2,1,10],"outputs":["Reshape_1185_0"]},{"control_deps":[],"input_order":[0,1],"inputs":["Add_1101"],"name":"Reshape_1102","op":"Reshape","output_shape":[2,1,10],"outputs":["Reshape_1102_0"]},{"axis":1,"control_deps":[],"inputs":["Reshape_1147","Reshape_1185"],"name":"Concat_1186","op":"Concat","outputs":["Concat_1186_0"]},{"axis":1,"control_deps":[],"inputs":["Reshape_1026","Reshape_1102"],"name":"Concat_1103","op":"Concat","outputs":["Concat_1103_0"]},{"control_deps":[],"inputs":["Concat_1186"],"name":"Reverse_1187","op":"Reverse","outputs":["Reverse_1187_0"],"reversed_axes":[1]},{"axis":2,"control_deps":[],"inputs":["Concat_1103","Reverse_1187"],"name":"Concat_1188","op":"Concat","outputs":["Concat_1188_0"]},{"control_deps":[],"inputs":["Concat_1188"],"name":"Result_1189","op":"Result","outputs":["Result_1189_0"]}],"parameters":["Parameter_854","Parameter_857","Parameter_858","Parameter_866","Parameter_867","Parameter_900","Parameter_901","Parameter_916","Parameter_917","Parameter_983","Parameter_984","Parameter_992","Parameter_993","Parameter_1104","Parameter_1105","Parameter_1113","Parameter_1114"],"result":["Result_1189"]}] diff --git a/ngraph/test/models/mxnet/lstm_bi_directional.json b/ngraph/test/models/mxnet/lstm_bi_directional.json deleted file mode 100644 index 937c509bc16602..00000000000000 --- a/ngraph/test/models/mxnet/lstm_bi_directional.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"Function_12","ops":[{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1321","op":"Parameter","outputs":["Parameter_1321_0"],"shape":[40]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1320","op":"Parameter","outputs":["Parameter_1320_0"],"shape":[40,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1313","op":"Parameter","outputs":["Parameter_1313_0"],"shape":[40]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1312","op":"Parameter","outputs":["Parameter_1312_0"],"shape":[40,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1234","op":"Parameter","outputs":["Parameter_1234_0"],"shape":[40]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1233","op":"Parameter","outputs":["Parameter_1233_0"],"shape":[40,10]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1226","op":"Parameter","outputs":["Parameter_1226_0"],"shape":[40]},{"cacheable":true,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1225","op":"Parameter","outputs":["Parameter_1225_0"],"shape":[40,10]},{"cacheable":false,"control_deps":[],"element_type":"float","inputs":[],"name":"Parameter_1222","op":"Parameter","outputs":["Parameter_1222_0"],"shape":[1,2,10]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1318","op":"Constant","outputs":["Constant_1318_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1345","op":"Constant","outputs":["Constant_1345_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1341","op":"Constant","outputs":["Constant_1341_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1335","op":"Constant","outputs":["Constant_1335_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1328","op":"Constant","outputs":["Constant_1328_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1383","op":"Constant","outputs":["Constant_1383_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1375","op":"Constant","outputs":["Constant_1375_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1368","op":"Constant","outputs":["Constant_1368_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1231","op":"Constant","outputs":["Constant_1231_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1258","op":"Constant","outputs":["Constant_1258_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1254","op":"Constant","outputs":["Constant_1254_0"],"shape":[],"value":["0"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1248","op":"Constant","outputs":["Constant_1248_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1241","op":"Constant","outputs":["Constant_1241_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1298","op":"Constant","outputs":["Constant_1298_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1290","op":"Constant","outputs":["Constant_1290_0"],"shape":[],"value":["1"]},{"control_deps":[],"element_type":"float","inputs":[],"name":"Constant_1283","op":"Constant","outputs":["Constant_1283_0"],"shape":[],"value":["1"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1321"],"name":"Reshape_1324","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1324_0"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1321"],"name":"Reshape_1364","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1364_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1320"],"name":"Reshape_1322","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1322_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1320"],"name":"Reshape_1362","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1362_0"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1313"],"name":"Reshape_1316","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1316_0"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1313"],"name":"Reshape_1360","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1360_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1312"],"name":"Reshape_1314","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1314_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1312"],"name":"Reshape_1358","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1358_0"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1234"],"name":"Reshape_1237","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1237_0"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1234"],"name":"Reshape_1279","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1279_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1233"],"name":"Reshape_1235","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1235_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1233"],"name":"Reshape_1277","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1277_0"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1226"],"name":"Reshape_1229","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1229_0"]},{"control_deps":[],"input_order":[0],"inputs":["Parameter_1226"],"name":"Reshape_1275","op":"Reshape","output_shape":[1,40],"outputs":["Reshape_1275_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1225"],"name":"Reshape_1227","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1227_0"]},{"control_deps":[],"input_order":[1,0],"inputs":["Parameter_1225"],"name":"Reshape_1273","op":"Reshape","output_shape":[10,40],"outputs":["Reshape_1273_0"]},{"control_deps":[],"inputs":["Parameter_1222"],"lower_bounds":[0,0,0],"name":"Slice_1223","op":"Slice","outputs":["Slice_1223_0"],"strides":[1,1,1],"upper_bounds":[1,1,10]},{"control_deps":[],"inputs":["Parameter_1222"],"lower_bounds":[0,1,0],"name":"Slice_1271","op":"Slice","outputs":["Slice_1271_0"],"strides":[1,1,1],"upper_bounds":[1,2,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1318"],"name":"Broadcast_1319","op":"Broadcast","outputs":["Broadcast_1319_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1345"],"name":"Broadcast_1346","op":"Broadcast","outputs":["Broadcast_1346_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1341"],"name":"Broadcast_1342","op":"Broadcast","outputs":["Broadcast_1342_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1335"],"name":"Broadcast_1336","op":"Broadcast","outputs":["Broadcast_1336_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1328"],"name":"Broadcast_1329","op":"Broadcast","outputs":["Broadcast_1329_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1383"],"name":"Broadcast_1384","op":"Broadcast","outputs":["Broadcast_1384_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1375"],"name":"Broadcast_1376","op":"Broadcast","outputs":["Broadcast_1376_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1368"],"name":"Broadcast_1369","op":"Broadcast","outputs":["Broadcast_1369_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1231"],"name":"Broadcast_1232","op":"Broadcast","outputs":["Broadcast_1232_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1258"],"name":"Broadcast_1259","op":"Broadcast","outputs":["Broadcast_1259_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1254"],"name":"Broadcast_1255","op":"Broadcast","outputs":["Broadcast_1255_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1248"],"name":"Broadcast_1249","op":"Broadcast","outputs":["Broadcast_1249_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1241"],"name":"Broadcast_1242","op":"Broadcast","outputs":["Broadcast_1242_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1298"],"name":"Broadcast_1299","op":"Broadcast","outputs":["Broadcast_1299_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1290"],"name":"Broadcast_1291","op":"Broadcast","outputs":["Broadcast_1291_0"],"shape":[1,10]},{"axes":[0,1],"control_deps":[],"inputs":["Constant_1283"],"name":"Broadcast_1284","op":"Broadcast","outputs":["Broadcast_1284_0"],"shape":[1,10]},{"control_deps":[],"input_order":[0,1,2],"inputs":["Slice_1223"],"name":"Reshape_1224","op":"Reshape","output_shape":[1,10],"outputs":["Reshape_1224_0"]},{"control_deps":[],"input_order":[0,1,2],"inputs":["Slice_1271"],"name":"Reshape_1272","op":"Reshape","output_shape":[1,10],"outputs":["Reshape_1272_0"]},{"control_deps":[],"inputs":["Broadcast_1319","Reshape_1322"],"name":"Dot_1323","op":"Dot","outputs":["Dot_1323_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Broadcast_1232","Reshape_1235"],"name":"Dot_1236","op":"Dot","outputs":["Dot_1236_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_1224","Reshape_1227"],"name":"Dot_1228","op":"Dot","outputs":["Dot_1228_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_1224","Reshape_1358"],"name":"Dot_1359","op":"Dot","outputs":["Dot_1359_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_1272","Reshape_1273"],"name":"Dot_1274","op":"Dot","outputs":["Dot_1274_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Reshape_1272","Reshape_1314"],"name":"Dot_1315","op":"Dot","outputs":["Dot_1315_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Dot_1323","Reshape_1324"],"name":"Add_1325","op":"Add","outputs":["Add_1325_0"]},{"control_deps":[],"inputs":["Dot_1236","Reshape_1237"],"name":"Add_1238","op":"Add","outputs":["Add_1238_0"]},{"control_deps":[],"inputs":["Dot_1228","Reshape_1229"],"name":"Add_1230","op":"Add","outputs":["Add_1230_0"]},{"control_deps":[],"inputs":["Dot_1359","Reshape_1360"],"name":"Add_1361","op":"Add","outputs":["Add_1361_0"]},{"control_deps":[],"inputs":["Dot_1274","Reshape_1275"],"name":"Add_1276","op":"Add","outputs":["Add_1276_0"]},{"control_deps":[],"inputs":["Dot_1315","Reshape_1316"],"name":"Add_1317","op":"Add","outputs":["Add_1317_0"]},{"control_deps":[],"inputs":["Add_1230","Add_1238"],"name":"Add_1239","op":"Add","outputs":["Add_1239_0"]},{"control_deps":[],"inputs":["Add_1317","Add_1325"],"name":"Add_1326","op":"Add","outputs":["Add_1326_0"]},{"control_deps":[],"inputs":["Add_1239"],"lower_bounds":[0,30],"name":"Slice_1240","op":"Slice","outputs":["Slice_1240_0"],"strides":[1,1],"upper_bounds":[1,40]},{"control_deps":[],"inputs":["Add_1239"],"lower_bounds":[0,10],"name":"Slice_1247","op":"Slice","outputs":["Slice_1247_0"],"strides":[1,1],"upper_bounds":[1,20]},{"control_deps":[],"inputs":["Add_1239"],"lower_bounds":[0,0],"name":"Slice_1257","op":"Slice","outputs":["Slice_1257_0"],"strides":[1,1],"upper_bounds":[1,10]},{"control_deps":[],"inputs":["Add_1239"],"lower_bounds":[0,20],"name":"Slice_1264","op":"Slice","outputs":["Slice_1264_0"],"strides":[1,1],"upper_bounds":[1,30]},{"control_deps":[],"inputs":["Add_1326"],"lower_bounds":[0,30],"name":"Slice_1327","op":"Slice","outputs":["Slice_1327_0"],"strides":[1,1],"upper_bounds":[1,40]},{"control_deps":[],"inputs":["Add_1326"],"lower_bounds":[0,10],"name":"Slice_1334","op":"Slice","outputs":["Slice_1334_0"],"strides":[1,1],"upper_bounds":[1,20]},{"control_deps":[],"inputs":["Add_1326"],"lower_bounds":[0,0],"name":"Slice_1344","op":"Slice","outputs":["Slice_1344_0"],"strides":[1,1],"upper_bounds":[1,10]},{"control_deps":[],"inputs":["Add_1326"],"lower_bounds":[0,20],"name":"Slice_1351","op":"Slice","outputs":["Slice_1351_0"],"strides":[1,1],"upper_bounds":[1,30]},{"control_deps":[],"inputs":["Slice_1240"],"name":"Negative_1243","op":"Negative","outputs":["Negative_1243_0"]},{"control_deps":[],"inputs":["Slice_1247"],"name":"Negative_1250","op":"Negative","outputs":["Negative_1250_0"]},{"control_deps":[],"inputs":["Slice_1257"],"name":"Negative_1260","op":"Negative","outputs":["Negative_1260_0"]},{"control_deps":[],"inputs":["Slice_1264"],"name":"Tanh_1265","op":"Tanh","outputs":["Tanh_1265_0"]},{"control_deps":[],"inputs":["Slice_1327"],"name":"Negative_1330","op":"Negative","outputs":["Negative_1330_0"]},{"control_deps":[],"inputs":["Slice_1334"],"name":"Negative_1337","op":"Negative","outputs":["Negative_1337_0"]},{"control_deps":[],"inputs":["Slice_1344"],"name":"Negative_1347","op":"Negative","outputs":["Negative_1347_0"]},{"control_deps":[],"inputs":["Slice_1351"],"name":"Tanh_1352","op":"Tanh","outputs":["Tanh_1352_0"]},{"control_deps":[],"inputs":["Negative_1243"],"name":"Exp_1244","op":"Exp","outputs":["Exp_1244_0"]},{"control_deps":[],"inputs":["Negative_1250"],"name":"Exp_1251","op":"Exp","outputs":["Exp_1251_0"]},{"control_deps":[],"inputs":["Negative_1260"],"name":"Exp_1261","op":"Exp","outputs":["Exp_1261_0"]},{"control_deps":[],"inputs":["Negative_1330"],"name":"Exp_1331","op":"Exp","outputs":["Exp_1331_0"]},{"control_deps":[],"inputs":["Negative_1337"],"name":"Exp_1338","op":"Exp","outputs":["Exp_1338_0"]},{"control_deps":[],"inputs":["Negative_1347"],"name":"Exp_1348","op":"Exp","outputs":["Exp_1348_0"]},{"control_deps":[],"inputs":["Broadcast_1242","Exp_1244"],"name":"Add_1245","op":"Add","outputs":["Add_1245_0"]},{"control_deps":[],"inputs":["Broadcast_1249","Exp_1251"],"name":"Add_1252","op":"Add","outputs":["Add_1252_0"]},{"control_deps":[],"inputs":["Broadcast_1259","Exp_1261"],"name":"Add_1262","op":"Add","outputs":["Add_1262_0"]},{"control_deps":[],"inputs":["Broadcast_1329","Exp_1331"],"name":"Add_1332","op":"Add","outputs":["Add_1332_0"]},{"control_deps":[],"inputs":["Broadcast_1336","Exp_1338"],"name":"Add_1339","op":"Add","outputs":["Add_1339_0"]},{"control_deps":[],"inputs":["Broadcast_1346","Exp_1348"],"name":"Add_1349","op":"Add","outputs":["Add_1349_0"]},{"control_deps":[],"inputs":["Broadcast_1242","Add_1245"],"name":"Divide_1246","op":"Divide","outputs":["Divide_1246_0"]},{"control_deps":[],"inputs":["Broadcast_1249","Add_1252"],"name":"Divide_1253","op":"Divide","outputs":["Divide_1253_0"]},{"control_deps":[],"inputs":["Broadcast_1259","Add_1262"],"name":"Divide_1263","op":"Divide","outputs":["Divide_1263_0"]},{"control_deps":[],"inputs":["Broadcast_1329","Add_1332"],"name":"Divide_1333","op":"Divide","outputs":["Divide_1333_0"]},{"control_deps":[],"inputs":["Broadcast_1336","Add_1339"],"name":"Divide_1340","op":"Divide","outputs":["Divide_1340_0"]},{"control_deps":[],"inputs":["Broadcast_1346","Add_1349"],"name":"Divide_1350","op":"Divide","outputs":["Divide_1350_0"]},{"control_deps":[],"inputs":["Divide_1253","Broadcast_1255"],"name":"Multiply_1256","op":"Multiply","outputs":["Multiply_1256_0"]},{"control_deps":[],"inputs":["Divide_1263","Tanh_1265"],"name":"Multiply_1266","op":"Multiply","outputs":["Multiply_1266_0"]},{"control_deps":[],"inputs":["Divide_1340","Broadcast_1342"],"name":"Multiply_1343","op":"Multiply","outputs":["Multiply_1343_0"]},{"control_deps":[],"inputs":["Divide_1350","Tanh_1352"],"name":"Multiply_1353","op":"Multiply","outputs":["Multiply_1353_0"]},{"control_deps":[],"inputs":["Multiply_1256","Multiply_1266"],"name":"Add_1267","op":"Add","outputs":["Add_1267_0"]},{"control_deps":[],"inputs":["Multiply_1343","Multiply_1353"],"name":"Add_1354","op":"Add","outputs":["Add_1354_0"]},{"control_deps":[],"inputs":["Add_1267"],"name":"Tanh_1268","op":"Tanh","outputs":["Tanh_1268_0"]},{"control_deps":[],"inputs":["Add_1354"],"name":"Tanh_1355","op":"Tanh","outputs":["Tanh_1355_0"]},{"control_deps":[],"inputs":["Divide_1246","Tanh_1268"],"name":"Multiply_1269","op":"Multiply","outputs":["Multiply_1269_0"]},{"control_deps":[],"inputs":["Divide_1333","Tanh_1355"],"name":"Multiply_1356","op":"Multiply","outputs":["Multiply_1356_0"]},{"control_deps":[],"input_order":[0,1],"inputs":["Multiply_1269"],"name":"Reshape_1270","op":"Reshape","output_shape":[1,1,10],"outputs":["Reshape_1270_0"]},{"control_deps":[],"inputs":["Multiply_1269","Reshape_1277"],"name":"Dot_1278","op":"Dot","outputs":["Dot_1278_0"],"reduction_axes_count":1},{"control_deps":[],"input_order":[0,1],"inputs":["Multiply_1356"],"name":"Reshape_1357","op":"Reshape","output_shape":[1,1,10],"outputs":["Reshape_1357_0"]},{"control_deps":[],"inputs":["Multiply_1356","Reshape_1362"],"name":"Dot_1363","op":"Dot","outputs":["Dot_1363_0"],"reduction_axes_count":1},{"control_deps":[],"inputs":["Dot_1278","Reshape_1279"],"name":"Add_1280","op":"Add","outputs":["Add_1280_0"]},{"control_deps":[],"inputs":["Dot_1363","Reshape_1364"],"name":"Add_1365","op":"Add","outputs":["Add_1365_0"]},{"control_deps":[],"inputs":["Add_1276","Add_1280"],"name":"Add_1281","op":"Add","outputs":["Add_1281_0"]},{"control_deps":[],"inputs":["Add_1361","Add_1365"],"name":"Add_1366","op":"Add","outputs":["Add_1366_0"]},{"control_deps":[],"inputs":["Add_1281"],"lower_bounds":[0,30],"name":"Slice_1282","op":"Slice","outputs":["Slice_1282_0"],"strides":[1,1],"upper_bounds":[1,40]},{"control_deps":[],"inputs":["Add_1281"],"lower_bounds":[0,10],"name":"Slice_1289","op":"Slice","outputs":["Slice_1289_0"],"strides":[1,1],"upper_bounds":[1,20]},{"control_deps":[],"inputs":["Add_1281"],"lower_bounds":[0,0],"name":"Slice_1297","op":"Slice","outputs":["Slice_1297_0"],"strides":[1,1],"upper_bounds":[1,10]},{"control_deps":[],"inputs":["Add_1281"],"lower_bounds":[0,20],"name":"Slice_1304","op":"Slice","outputs":["Slice_1304_0"],"strides":[1,1],"upper_bounds":[1,30]},{"control_deps":[],"inputs":["Add_1366"],"lower_bounds":[0,30],"name":"Slice_1367","op":"Slice","outputs":["Slice_1367_0"],"strides":[1,1],"upper_bounds":[1,40]},{"control_deps":[],"inputs":["Add_1366"],"lower_bounds":[0,10],"name":"Slice_1374","op":"Slice","outputs":["Slice_1374_0"],"strides":[1,1],"upper_bounds":[1,20]},{"control_deps":[],"inputs":["Add_1366"],"lower_bounds":[0,0],"name":"Slice_1382","op":"Slice","outputs":["Slice_1382_0"],"strides":[1,1],"upper_bounds":[1,10]},{"control_deps":[],"inputs":["Add_1366"],"lower_bounds":[0,20],"name":"Slice_1389","op":"Slice","outputs":["Slice_1389_0"],"strides":[1,1],"upper_bounds":[1,30]},{"control_deps":[],"inputs":["Slice_1282"],"name":"Negative_1285","op":"Negative","outputs":["Negative_1285_0"]},{"control_deps":[],"inputs":["Slice_1289"],"name":"Negative_1292","op":"Negative","outputs":["Negative_1292_0"]},{"control_deps":[],"inputs":["Slice_1297"],"name":"Negative_1300","op":"Negative","outputs":["Negative_1300_0"]},{"control_deps":[],"inputs":["Slice_1304"],"name":"Tanh_1305","op":"Tanh","outputs":["Tanh_1305_0"]},{"control_deps":[],"inputs":["Slice_1367"],"name":"Negative_1370","op":"Negative","outputs":["Negative_1370_0"]},{"control_deps":[],"inputs":["Slice_1374"],"name":"Negative_1377","op":"Negative","outputs":["Negative_1377_0"]},{"control_deps":[],"inputs":["Slice_1382"],"name":"Negative_1385","op":"Negative","outputs":["Negative_1385_0"]},{"control_deps":[],"inputs":["Slice_1389"],"name":"Tanh_1390","op":"Tanh","outputs":["Tanh_1390_0"]},{"control_deps":[],"inputs":["Negative_1285"],"name":"Exp_1286","op":"Exp","outputs":["Exp_1286_0"]},{"control_deps":[],"inputs":["Negative_1292"],"name":"Exp_1293","op":"Exp","outputs":["Exp_1293_0"]},{"control_deps":[],"inputs":["Negative_1300"],"name":"Exp_1301","op":"Exp","outputs":["Exp_1301_0"]},{"control_deps":[],"inputs":["Negative_1370"],"name":"Exp_1371","op":"Exp","outputs":["Exp_1371_0"]},{"control_deps":[],"inputs":["Negative_1377"],"name":"Exp_1378","op":"Exp","outputs":["Exp_1378_0"]},{"control_deps":[],"inputs":["Negative_1385"],"name":"Exp_1386","op":"Exp","outputs":["Exp_1386_0"]},{"control_deps":[],"inputs":["Broadcast_1284","Exp_1286"],"name":"Add_1287","op":"Add","outputs":["Add_1287_0"]},{"control_deps":[],"inputs":["Broadcast_1291","Exp_1293"],"name":"Add_1294","op":"Add","outputs":["Add_1294_0"]},{"control_deps":[],"inputs":["Broadcast_1299","Exp_1301"],"name":"Add_1302","op":"Add","outputs":["Add_1302_0"]},{"control_deps":[],"inputs":["Broadcast_1369","Exp_1371"],"name":"Add_1372","op":"Add","outputs":["Add_1372_0"]},{"control_deps":[],"inputs":["Broadcast_1376","Exp_1378"],"name":"Add_1379","op":"Add","outputs":["Add_1379_0"]},{"control_deps":[],"inputs":["Broadcast_1384","Exp_1386"],"name":"Add_1387","op":"Add","outputs":["Add_1387_0"]},{"control_deps":[],"inputs":["Broadcast_1284","Add_1287"],"name":"Divide_1288","op":"Divide","outputs":["Divide_1288_0"]},{"control_deps":[],"inputs":["Broadcast_1291","Add_1294"],"name":"Divide_1295","op":"Divide","outputs":["Divide_1295_0"]},{"control_deps":[],"inputs":["Broadcast_1299","Add_1302"],"name":"Divide_1303","op":"Divide","outputs":["Divide_1303_0"]},{"control_deps":[],"inputs":["Broadcast_1369","Add_1372"],"name":"Divide_1373","op":"Divide","outputs":["Divide_1373_0"]},{"control_deps":[],"inputs":["Broadcast_1376","Add_1379"],"name":"Divide_1380","op":"Divide","outputs":["Divide_1380_0"]},{"control_deps":[],"inputs":["Broadcast_1384","Add_1387"],"name":"Divide_1388","op":"Divide","outputs":["Divide_1388_0"]},{"control_deps":[],"inputs":["Divide_1295","Add_1267"],"name":"Multiply_1296","op":"Multiply","outputs":["Multiply_1296_0"]},{"control_deps":[],"inputs":["Divide_1303","Tanh_1305"],"name":"Multiply_1306","op":"Multiply","outputs":["Multiply_1306_0"]},{"control_deps":[],"inputs":["Divide_1380","Add_1354"],"name":"Multiply_1381","op":"Multiply","outputs":["Multiply_1381_0"]},{"control_deps":[],"inputs":["Divide_1388","Tanh_1390"],"name":"Multiply_1391","op":"Multiply","outputs":["Multiply_1391_0"]},{"control_deps":[],"inputs":["Multiply_1296","Multiply_1306"],"name":"Add_1307","op":"Add","outputs":["Add_1307_0"]},{"control_deps":[],"inputs":["Multiply_1381","Multiply_1391"],"name":"Add_1392","op":"Add","outputs":["Add_1392_0"]},{"control_deps":[],"inputs":["Add_1307"],"name":"Tanh_1308","op":"Tanh","outputs":["Tanh_1308_0"]},{"control_deps":[],"inputs":["Add_1392"],"name":"Tanh_1393","op":"Tanh","outputs":["Tanh_1393_0"]},{"control_deps":[],"inputs":["Divide_1288","Tanh_1308"],"name":"Multiply_1309","op":"Multiply","outputs":["Multiply_1309_0"]},{"control_deps":[],"inputs":["Divide_1373","Tanh_1393"],"name":"Multiply_1394","op":"Multiply","outputs":["Multiply_1394_0"]},{"control_deps":[],"input_order":[0,1],"inputs":["Multiply_1309"],"name":"Reshape_1310","op":"Reshape","output_shape":[1,1,10],"outputs":["Reshape_1310_0"]},{"control_deps":[],"input_order":[0,1],"inputs":["Multiply_1394"],"name":"Reshape_1395","op":"Reshape","output_shape":[1,1,10],"outputs":["Reshape_1395_0"]},{"axis":1,"control_deps":[],"inputs":["Reshape_1270","Reshape_1310"],"name":"Concat_1311","op":"Concat","outputs":["Concat_1311_0"]},{"axis":1,"control_deps":[],"inputs":["Reshape_1357","Reshape_1395"],"name":"Concat_1396","op":"Concat","outputs":["Concat_1396_0"]},{"control_deps":[],"inputs":["Concat_1396"],"name":"Reverse_1397","op":"Reverse","outputs":["Reverse_1397_0"],"reversed_axes":[1]},{"axis":2,"control_deps":[],"inputs":["Concat_1311","Reverse_1397"],"name":"Concat_1398","op":"Concat","outputs":["Concat_1398_0"]},{"control_deps":[],"inputs":["Concat_1398"],"name":"Result_1399","op":"Result","outputs":["Result_1399_0"]}],"parameters":["Parameter_1222","Parameter_1225","Parameter_1226","Parameter_1233","Parameter_1234","Parameter_1312","Parameter_1313","Parameter_1320","Parameter_1321"],"result":["Result_1399"]}] diff --git a/ngraph/test/models/mxnet/mnist_mlp_forward.json b/ngraph/test/models/mxnet/mnist_mlp_forward.json deleted file mode 100644 index a4c4f1324b1d0e..00000000000000 --- a/ngraph/test/models/mxnet/mnist_mlp_forward.json +++ /dev/null @@ -1,12809 +0,0 @@ -[ - { - "name": "Function_0", - "ops": [ - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Parameter_19", - "op": "Parameter", - "outputs": [ - "Parameter_19" - ], - "shape": [ - 10 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Parameter_18", - "op": "Parameter", - "outputs": [ - "Parameter_18" - ], - "shape": [ - 10, - 64 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Parameter_11", - "op": "Parameter", - "outputs": [ - "Parameter_11" - ], - "shape": [ - 64 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Parameter_10", - "op": "Parameter", - "outputs": [ - "Parameter_10" - ], - "shape": [ - 64, - 128 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Parameter_3", - "op": "Parameter", - "outputs": [ - "Parameter_3" - ], - "shape": [ - 128 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Parameter_2", - "op": "Parameter", - "outputs": [ - "Parameter_2" - ], - "shape": [ - 128, - 784 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Parameter_0", - "op": "Parameter", - "outputs": [ - "Parameter_0" - ], - "shape": [ - 64, - 1, - 28, - 28 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Constant_16", - "op": "Constant", - "outputs": [ - "Constant_16" - ], - "shape": [ - 64, - 64 - ], - "value": [ - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [], - "name": "Constant_8", - "op": "Constant", - "outputs": [ - "Constant_8" - ], - "shape": [ - 64, - 128 - ], - "value": [ - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0" - ] - }, - { - "axes": [ - 0 - ], - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Parameter_19" - ], - "name": "Broadcast_22", - "op": "Broadcast", - "outputs": [ - "Broadcast_22" - ], - "shape": [ - 64, - 10 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_18" - ], - "name": "Reshape_20", - "op": "Reshape", - "output_shape": [ - 64, - 10 - ], - "outputs": [ - "Reshape_20" - ] - }, - { - "axes": [ - 0 - ], - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Parameter_11" - ], - "name": "Broadcast_14", - "op": "Broadcast", - "outputs": [ - "Broadcast_14" - ], - "shape": [ - 64, - 64 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_10" - ], - "name": "Reshape_12", - "op": "Reshape", - "output_shape": [ - 128, - 64 - ], - "outputs": [ - "Reshape_12" - ] - }, - { - "axes": [ - 0 - ], - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Parameter_3" - ], - "name": "Broadcast_6", - "op": "Broadcast", - "outputs": [ - "Broadcast_6" - ], - "shape": [ - 64, - 128 - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_2" - ], - "name": "Reshape_4", - "op": "Reshape", - "output_shape": [ - 784, - 128 - ], - "outputs": [ - "Reshape_4" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "input_order": [ - 0, - 1, - 2, - 3 - ], - "inputs": [ - "Parameter_0" - ], - "name": "Reshape_1", - "op": "Reshape", - "output_shape": [ - 64, - 784 - ], - "outputs": [ - "Reshape_1" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Reshape_1", - "Reshape_4" - ], - "name": "Dot_5", - "op": "Dot", - "outputs": [ - "Dot_5" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Dot_5", - "Broadcast_6" - ], - "name": "Add_7", - "op": "Add", - "outputs": [ - "Add_7" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Add_7", - "Constant_8" - ], - "name": "Maximum_9", - "op": "Maximum", - "outputs": [ - "Maximum_9" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Maximum_9", - "Reshape_12" - ], - "name": "Dot_13", - "op": "Dot", - "outputs": [ - "Dot_13" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Dot_13", - "Broadcast_14" - ], - "name": "Add_15", - "op": "Add", - "outputs": [ - "Add_15" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Add_15", - "Constant_16" - ], - "name": "Maximum_17", - "op": "Maximum", - "outputs": [ - "Maximum_17" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Maximum_17", - "Reshape_20" - ], - "name": "Dot_21", - "op": "Dot", - "outputs": [ - "Dot_21" - ] - }, - { - "element_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true, - "is_quantized": false - }, - "inputs": [ - "Dot_21", - "Broadcast_22" - ], - "name": "Add_23", - "op": "Add", - "outputs": [ - "Add_23" - ] - } - ], - "parameters": [ - "Parameter_0", - "Parameter_2", - "Parameter_3", - "Parameter_10", - "Parameter_11", - "Parameter_18", - "Parameter_19" - ], - "result": [ - "Add_23" - ], - "result_shape": [ - 64, - 10 - ], - "result_type": { - "bitwidth": 32, - "c_type_string": "float", - "is_real": true, - "is_signed": true - } - } -] diff --git a/ngraph/test/models/mxnet/mxnet_densenet121_inference_batch1_float32.json b/ngraph/test/models/mxnet/mxnet_densenet121_inference_batch1_float32.json deleted file mode 100644 index bbb28f77f3eb79..00000000000000 --- a/ngraph/test/models/mxnet/mxnet_densenet121_inference_batch1_float32.json +++ /dev/null @@ -1,9398 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1037", - "op" : "Parameter", - "outputs" : ["Parameter_1037_0"], - "shape" : [1] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1032", - "op" : "Parameter", - "outputs" : ["Parameter_1032_0"], - "shape" : [1000] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1031", - "op" : "Parameter", - "outputs" : ["Parameter_1031_0"], - "shape" : [ 1000, 1024 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1026", - "op" : "Parameter", - "outputs" : ["Parameter_1026_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1025", - "op" : "Parameter", - "outputs" : ["Parameter_1025_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1024", - "op" : "Parameter", - "outputs" : ["Parameter_1024_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1023", - "op" : "Parameter", - "outputs" : ["Parameter_1023_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1020", - "op" : "Parameter", - "outputs" : ["Parameter_1020_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1017", - "op" : "Parameter", - "outputs" : ["Parameter_1017_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1016", - "op" : "Parameter", - "outputs" : ["Parameter_1016_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1015", - "op" : "Parameter", - "outputs" : ["Parameter_1015_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1014", - "op" : "Parameter", - "outputs" : ["Parameter_1014_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1012", - "op" : "Parameter", - "outputs" : ["Parameter_1012_0"], - "shape" : [ 128, 992, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1009", - "op" : "Parameter", - "outputs" : ["Parameter_1009_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1008", - "op" : "Parameter", - "outputs" : ["Parameter_1008_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1007", - "op" : "Parameter", - "outputs" : ["Parameter_1007_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1006", - "op" : "Parameter", - "outputs" : ["Parameter_1006_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1003", - "op" : "Parameter", - "outputs" : ["Parameter_1003_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1000", - "op" : "Parameter", - "outputs" : ["Parameter_1000_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_999", - "op" : "Parameter", - "outputs" : ["Parameter_999_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_998", - "op" : "Parameter", - "outputs" : ["Parameter_998_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_997", - "op" : "Parameter", - "outputs" : ["Parameter_997_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_995", - "op" : "Parameter", - "outputs" : ["Parameter_995_0"], - "shape" : [ 128, 960, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_992", - "op" : "Parameter", - "outputs" : ["Parameter_992_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_991", - "op" : "Parameter", - "outputs" : ["Parameter_991_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_990", - "op" : "Parameter", - "outputs" : ["Parameter_990_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_989", - "op" : "Parameter", - "outputs" : ["Parameter_989_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_986", - "op" : "Parameter", - "outputs" : ["Parameter_986_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_983", - "op" : "Parameter", - "outputs" : ["Parameter_983_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_982", - "op" : "Parameter", - "outputs" : ["Parameter_982_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_981", - "op" : "Parameter", - "outputs" : ["Parameter_981_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_980", - "op" : "Parameter", - "outputs" : ["Parameter_980_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_978", - "op" : "Parameter", - "outputs" : ["Parameter_978_0"], - "shape" : [ 128, 928, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_975", - "op" : "Parameter", - "outputs" : ["Parameter_975_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_974", - "op" : "Parameter", - "outputs" : ["Parameter_974_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_973", - "op" : "Parameter", - "outputs" : ["Parameter_973_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_972", - "op" : "Parameter", - "outputs" : ["Parameter_972_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_969", - "op" : "Parameter", - "outputs" : ["Parameter_969_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_966", - "op" : "Parameter", - "outputs" : ["Parameter_966_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_965", - "op" : "Parameter", - "outputs" : ["Parameter_965_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_964", - "op" : "Parameter", - "outputs" : ["Parameter_964_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_963", - "op" : "Parameter", - "outputs" : ["Parameter_963_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_961", - "op" : "Parameter", - "outputs" : ["Parameter_961_0"], - "shape" : [ 128, 896, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_958", - "op" : "Parameter", - "outputs" : ["Parameter_958_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_957", - "op" : "Parameter", - "outputs" : ["Parameter_957_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_956", - "op" : "Parameter", - "outputs" : ["Parameter_956_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_955", - "op" : "Parameter", - "outputs" : ["Parameter_955_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_952", - "op" : "Parameter", - "outputs" : ["Parameter_952_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_949", - "op" : "Parameter", - "outputs" : ["Parameter_949_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_948", - "op" : "Parameter", - "outputs" : ["Parameter_948_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_947", - "op" : "Parameter", - "outputs" : ["Parameter_947_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_946", - "op" : "Parameter", - "outputs" : ["Parameter_946_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_944", - "op" : "Parameter", - "outputs" : ["Parameter_944_0"], - "shape" : [ 128, 864, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_941", - "op" : "Parameter", - "outputs" : ["Parameter_941_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_940", - "op" : "Parameter", - "outputs" : ["Parameter_940_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_939", - "op" : "Parameter", - "outputs" : ["Parameter_939_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_938", - "op" : "Parameter", - "outputs" : ["Parameter_938_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_935", - "op" : "Parameter", - "outputs" : ["Parameter_935_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_932", - "op" : "Parameter", - "outputs" : ["Parameter_932_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_931", - "op" : "Parameter", - "outputs" : ["Parameter_931_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_930", - "op" : "Parameter", - "outputs" : ["Parameter_930_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_929", - "op" : "Parameter", - "outputs" : ["Parameter_929_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_927", - "op" : "Parameter", - "outputs" : ["Parameter_927_0"], - "shape" : [ 128, 832, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_924", - "op" : "Parameter", - "outputs" : ["Parameter_924_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_923", - "op" : "Parameter", - "outputs" : ["Parameter_923_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_922", - "op" : "Parameter", - "outputs" : ["Parameter_922_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_921", - "op" : "Parameter", - "outputs" : ["Parameter_921_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_918", - "op" : "Parameter", - "outputs" : ["Parameter_918_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_915", - "op" : "Parameter", - "outputs" : ["Parameter_915_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_914", - "op" : "Parameter", - "outputs" : ["Parameter_914_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_913", - "op" : "Parameter", - "outputs" : ["Parameter_913_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_912", - "op" : "Parameter", - "outputs" : ["Parameter_912_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_910", - "op" : "Parameter", - "outputs" : ["Parameter_910_0"], - "shape" : [ 128, 800, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_907", - "op" : "Parameter", - "outputs" : ["Parameter_907_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_906", - "op" : "Parameter", - "outputs" : ["Parameter_906_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_905", - "op" : "Parameter", - "outputs" : ["Parameter_905_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_904", - "op" : "Parameter", - "outputs" : ["Parameter_904_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_901", - "op" : "Parameter", - "outputs" : ["Parameter_901_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_898", - "op" : "Parameter", - "outputs" : ["Parameter_898_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_897", - "op" : "Parameter", - "outputs" : ["Parameter_897_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_896", - "op" : "Parameter", - "outputs" : ["Parameter_896_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_895", - "op" : "Parameter", - "outputs" : ["Parameter_895_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_893", - "op" : "Parameter", - "outputs" : ["Parameter_893_0"], - "shape" : [ 128, 768, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_890", - "op" : "Parameter", - "outputs" : ["Parameter_890_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_889", - "op" : "Parameter", - "outputs" : ["Parameter_889_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_888", - "op" : "Parameter", - "outputs" : ["Parameter_888_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_887", - "op" : "Parameter", - "outputs" : ["Parameter_887_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_884", - "op" : "Parameter", - "outputs" : ["Parameter_884_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_881", - "op" : "Parameter", - "outputs" : ["Parameter_881_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_880", - "op" : "Parameter", - "outputs" : ["Parameter_880_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_879", - "op" : "Parameter", - "outputs" : ["Parameter_879_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_878", - "op" : "Parameter", - "outputs" : ["Parameter_878_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_876", - "op" : "Parameter", - "outputs" : ["Parameter_876_0"], - "shape" : [ 128, 736, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_873", - "op" : "Parameter", - "outputs" : ["Parameter_873_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_872", - "op" : "Parameter", - "outputs" : ["Parameter_872_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_871", - "op" : "Parameter", - "outputs" : ["Parameter_871_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_870", - "op" : "Parameter", - "outputs" : ["Parameter_870_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_867", - "op" : "Parameter", - "outputs" : ["Parameter_867_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_864", - "op" : "Parameter", - "outputs" : ["Parameter_864_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_863", - "op" : "Parameter", - "outputs" : ["Parameter_863_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_862", - "op" : "Parameter", - "outputs" : ["Parameter_862_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_861", - "op" : "Parameter", - "outputs" : ["Parameter_861_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_859", - "op" : "Parameter", - "outputs" : ["Parameter_859_0"], - "shape" : [ 128, 704, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_856", - "op" : "Parameter", - "outputs" : ["Parameter_856_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_855", - "op" : "Parameter", - "outputs" : ["Parameter_855_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_854", - "op" : "Parameter", - "outputs" : ["Parameter_854_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_853", - "op" : "Parameter", - "outputs" : ["Parameter_853_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_850", - "op" : "Parameter", - "outputs" : ["Parameter_850_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_847", - "op" : "Parameter", - "outputs" : ["Parameter_847_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_846", - "op" : "Parameter", - "outputs" : ["Parameter_846_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_845", - "op" : "Parameter", - "outputs" : ["Parameter_845_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_844", - "op" : "Parameter", - "outputs" : ["Parameter_844_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_842", - "op" : "Parameter", - "outputs" : ["Parameter_842_0"], - "shape" : [ 128, 672, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_839", - "op" : "Parameter", - "outputs" : ["Parameter_839_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_838", - "op" : "Parameter", - "outputs" : ["Parameter_838_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_837", - "op" : "Parameter", - "outputs" : ["Parameter_837_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_836", - "op" : "Parameter", - "outputs" : ["Parameter_836_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_833", - "op" : "Parameter", - "outputs" : ["Parameter_833_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_830", - "op" : "Parameter", - "outputs" : ["Parameter_830_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_829", - "op" : "Parameter", - "outputs" : ["Parameter_829_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_828", - "op" : "Parameter", - "outputs" : ["Parameter_828_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_827", - "op" : "Parameter", - "outputs" : ["Parameter_827_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_825", - "op" : "Parameter", - "outputs" : ["Parameter_825_0"], - "shape" : [ 128, 640, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_822", - "op" : "Parameter", - "outputs" : ["Parameter_822_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_821", - "op" : "Parameter", - "outputs" : ["Parameter_821_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_820", - "op" : "Parameter", - "outputs" : ["Parameter_820_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_819", - "op" : "Parameter", - "outputs" : ["Parameter_819_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_816", - "op" : "Parameter", - "outputs" : ["Parameter_816_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_813", - "op" : "Parameter", - "outputs" : ["Parameter_813_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_812", - "op" : "Parameter", - "outputs" : ["Parameter_812_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_811", - "op" : "Parameter", - "outputs" : ["Parameter_811_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_810", - "op" : "Parameter", - "outputs" : ["Parameter_810_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_808", - "op" : "Parameter", - "outputs" : ["Parameter_808_0"], - "shape" : [ 128, 608, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_805", - "op" : "Parameter", - "outputs" : ["Parameter_805_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_804", - "op" : "Parameter", - "outputs" : ["Parameter_804_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_803", - "op" : "Parameter", - "outputs" : ["Parameter_803_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_802", - "op" : "Parameter", - "outputs" : ["Parameter_802_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_799", - "op" : "Parameter", - "outputs" : ["Parameter_799_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_796", - "op" : "Parameter", - "outputs" : ["Parameter_796_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_795", - "op" : "Parameter", - "outputs" : ["Parameter_795_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_794", - "op" : "Parameter", - "outputs" : ["Parameter_794_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_793", - "op" : "Parameter", - "outputs" : ["Parameter_793_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_791", - "op" : "Parameter", - "outputs" : ["Parameter_791_0"], - "shape" : [ 128, 576, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_788", - "op" : "Parameter", - "outputs" : ["Parameter_788_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_787", - "op" : "Parameter", - "outputs" : ["Parameter_787_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_786", - "op" : "Parameter", - "outputs" : ["Parameter_786_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_785", - "op" : "Parameter", - "outputs" : ["Parameter_785_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_782", - "op" : "Parameter", - "outputs" : ["Parameter_782_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_779", - "op" : "Parameter", - "outputs" : ["Parameter_779_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_778", - "op" : "Parameter", - "outputs" : ["Parameter_778_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_777", - "op" : "Parameter", - "outputs" : ["Parameter_777_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_776", - "op" : "Parameter", - "outputs" : ["Parameter_776_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_774", - "op" : "Parameter", - "outputs" : ["Parameter_774_0"], - "shape" : [ 128, 544, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_771", - "op" : "Parameter", - "outputs" : ["Parameter_771_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_770", - "op" : "Parameter", - "outputs" : ["Parameter_770_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_769", - "op" : "Parameter", - "outputs" : ["Parameter_769_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_768", - "op" : "Parameter", - "outputs" : ["Parameter_768_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_765", - "op" : "Parameter", - "outputs" : ["Parameter_765_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_762", - "op" : "Parameter", - "outputs" : ["Parameter_762_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_761", - "op" : "Parameter", - "outputs" : ["Parameter_761_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_760", - "op" : "Parameter", - "outputs" : ["Parameter_760_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_759", - "op" : "Parameter", - "outputs" : ["Parameter_759_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_757", - "op" : "Parameter", - "outputs" : ["Parameter_757_0"], - "shape" : [ 128, 512, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_754", - "op" : "Parameter", - "outputs" : ["Parameter_754_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_753", - "op" : "Parameter", - "outputs" : ["Parameter_753_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_752", - "op" : "Parameter", - "outputs" : ["Parameter_752_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_751", - "op" : "Parameter", - "outputs" : ["Parameter_751_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_748", - "op" : "Parameter", - "outputs" : ["Parameter_748_0"], - "shape" : [ 512, 1024, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_745", - "op" : "Parameter", - "outputs" : ["Parameter_745_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_744", - "op" : "Parameter", - "outputs" : ["Parameter_744_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_743", - "op" : "Parameter", - "outputs" : ["Parameter_743_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_742", - "op" : "Parameter", - "outputs" : ["Parameter_742_0"], - "shape" : [1024] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_739", - "op" : "Parameter", - "outputs" : ["Parameter_739_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_736", - "op" : "Parameter", - "outputs" : ["Parameter_736_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_735", - "op" : "Parameter", - "outputs" : ["Parameter_735_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_734", - "op" : "Parameter", - "outputs" : ["Parameter_734_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_733", - "op" : "Parameter", - "outputs" : ["Parameter_733_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_731", - "op" : "Parameter", - "outputs" : ["Parameter_731_0"], - "shape" : [ 128, 992, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_728", - "op" : "Parameter", - "outputs" : ["Parameter_728_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_727", - "op" : "Parameter", - "outputs" : ["Parameter_727_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_726", - "op" : "Parameter", - "outputs" : ["Parameter_726_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_725", - "op" : "Parameter", - "outputs" : ["Parameter_725_0"], - "shape" : [992] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_722", - "op" : "Parameter", - "outputs" : ["Parameter_722_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_719", - "op" : "Parameter", - "outputs" : ["Parameter_719_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_718", - "op" : "Parameter", - "outputs" : ["Parameter_718_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_717", - "op" : "Parameter", - "outputs" : ["Parameter_717_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_716", - "op" : "Parameter", - "outputs" : ["Parameter_716_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_714", - "op" : "Parameter", - "outputs" : ["Parameter_714_0"], - "shape" : [ 128, 960, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_711", - "op" : "Parameter", - "outputs" : ["Parameter_711_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_710", - "op" : "Parameter", - "outputs" : ["Parameter_710_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_709", - "op" : "Parameter", - "outputs" : ["Parameter_709_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_708", - "op" : "Parameter", - "outputs" : ["Parameter_708_0"], - "shape" : [960] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_705", - "op" : "Parameter", - "outputs" : ["Parameter_705_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_702", - "op" : "Parameter", - "outputs" : ["Parameter_702_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_701", - "op" : "Parameter", - "outputs" : ["Parameter_701_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_700", - "op" : "Parameter", - "outputs" : ["Parameter_700_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_699", - "op" : "Parameter", - "outputs" : ["Parameter_699_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_697", - "op" : "Parameter", - "outputs" : ["Parameter_697_0"], - "shape" : [ 128, 928, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_694", - "op" : "Parameter", - "outputs" : ["Parameter_694_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_693", - "op" : "Parameter", - "outputs" : ["Parameter_693_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_692", - "op" : "Parameter", - "outputs" : ["Parameter_692_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_691", - "op" : "Parameter", - "outputs" : ["Parameter_691_0"], - "shape" : [928] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_688", - "op" : "Parameter", - "outputs" : ["Parameter_688_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_685", - "op" : "Parameter", - "outputs" : ["Parameter_685_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_684", - "op" : "Parameter", - "outputs" : ["Parameter_684_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_683", - "op" : "Parameter", - "outputs" : ["Parameter_683_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_682", - "op" : "Parameter", - "outputs" : ["Parameter_682_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_680", - "op" : "Parameter", - "outputs" : ["Parameter_680_0"], - "shape" : [ 128, 896, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_677", - "op" : "Parameter", - "outputs" : ["Parameter_677_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_676", - "op" : "Parameter", - "outputs" : ["Parameter_676_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_675", - "op" : "Parameter", - "outputs" : ["Parameter_675_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_674", - "op" : "Parameter", - "outputs" : ["Parameter_674_0"], - "shape" : [896] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_671", - "op" : "Parameter", - "outputs" : ["Parameter_671_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_668", - "op" : "Parameter", - "outputs" : ["Parameter_668_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_667", - "op" : "Parameter", - "outputs" : ["Parameter_667_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_666", - "op" : "Parameter", - "outputs" : ["Parameter_666_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_665", - "op" : "Parameter", - "outputs" : ["Parameter_665_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_663", - "op" : "Parameter", - "outputs" : ["Parameter_663_0"], - "shape" : [ 128, 864, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_660", - "op" : "Parameter", - "outputs" : ["Parameter_660_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_659", - "op" : "Parameter", - "outputs" : ["Parameter_659_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_658", - "op" : "Parameter", - "outputs" : ["Parameter_658_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_657", - "op" : "Parameter", - "outputs" : ["Parameter_657_0"], - "shape" : [864] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_654", - "op" : "Parameter", - "outputs" : ["Parameter_654_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_651", - "op" : "Parameter", - "outputs" : ["Parameter_651_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_650", - "op" : "Parameter", - "outputs" : ["Parameter_650_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_649", - "op" : "Parameter", - "outputs" : ["Parameter_649_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_648", - "op" : "Parameter", - "outputs" : ["Parameter_648_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_646", - "op" : "Parameter", - "outputs" : ["Parameter_646_0"], - "shape" : [ 128, 832, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_643", - "op" : "Parameter", - "outputs" : ["Parameter_643_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_642", - "op" : "Parameter", - "outputs" : ["Parameter_642_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_641", - "op" : "Parameter", - "outputs" : ["Parameter_641_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_640", - "op" : "Parameter", - "outputs" : ["Parameter_640_0"], - "shape" : [832] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_637", - "op" : "Parameter", - "outputs" : ["Parameter_637_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_634", - "op" : "Parameter", - "outputs" : ["Parameter_634_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_633", - "op" : "Parameter", - "outputs" : ["Parameter_633_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_632", - "op" : "Parameter", - "outputs" : ["Parameter_632_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_631", - "op" : "Parameter", - "outputs" : ["Parameter_631_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_629", - "op" : "Parameter", - "outputs" : ["Parameter_629_0"], - "shape" : [ 128, 800, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_626", - "op" : "Parameter", - "outputs" : ["Parameter_626_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_625", - "op" : "Parameter", - "outputs" : ["Parameter_625_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_624", - "op" : "Parameter", - "outputs" : ["Parameter_624_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_623", - "op" : "Parameter", - "outputs" : ["Parameter_623_0"], - "shape" : [800] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_620", - "op" : "Parameter", - "outputs" : ["Parameter_620_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_617", - "op" : "Parameter", - "outputs" : ["Parameter_617_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_616", - "op" : "Parameter", - "outputs" : ["Parameter_616_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_615", - "op" : "Parameter", - "outputs" : ["Parameter_615_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_614", - "op" : "Parameter", - "outputs" : ["Parameter_614_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_612", - "op" : "Parameter", - "outputs" : ["Parameter_612_0"], - "shape" : [ 128, 768, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_609", - "op" : "Parameter", - "outputs" : ["Parameter_609_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_608", - "op" : "Parameter", - "outputs" : ["Parameter_608_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_607", - "op" : "Parameter", - "outputs" : ["Parameter_607_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_606", - "op" : "Parameter", - "outputs" : ["Parameter_606_0"], - "shape" : [768] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_603", - "op" : "Parameter", - "outputs" : ["Parameter_603_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_600", - "op" : "Parameter", - "outputs" : ["Parameter_600_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_599", - "op" : "Parameter", - "outputs" : ["Parameter_599_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_598", - "op" : "Parameter", - "outputs" : ["Parameter_598_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_597", - "op" : "Parameter", - "outputs" : ["Parameter_597_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_595", - "op" : "Parameter", - "outputs" : ["Parameter_595_0"], - "shape" : [ 128, 736, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_592", - "op" : "Parameter", - "outputs" : ["Parameter_592_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_591", - "op" : "Parameter", - "outputs" : ["Parameter_591_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_590", - "op" : "Parameter", - "outputs" : ["Parameter_590_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_589", - "op" : "Parameter", - "outputs" : ["Parameter_589_0"], - "shape" : [736] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_586", - "op" : "Parameter", - "outputs" : ["Parameter_586_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_583", - "op" : "Parameter", - "outputs" : ["Parameter_583_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_582", - "op" : "Parameter", - "outputs" : ["Parameter_582_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_581", - "op" : "Parameter", - "outputs" : ["Parameter_581_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_580", - "op" : "Parameter", - "outputs" : ["Parameter_580_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_578", - "op" : "Parameter", - "outputs" : ["Parameter_578_0"], - "shape" : [ 128, 704, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_575", - "op" : "Parameter", - "outputs" : ["Parameter_575_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_574", - "op" : "Parameter", - "outputs" : ["Parameter_574_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_573", - "op" : "Parameter", - "outputs" : ["Parameter_573_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_572", - "op" : "Parameter", - "outputs" : ["Parameter_572_0"], - "shape" : [704] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_569", - "op" : "Parameter", - "outputs" : ["Parameter_569_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_566", - "op" : "Parameter", - "outputs" : ["Parameter_566_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_565", - "op" : "Parameter", - "outputs" : ["Parameter_565_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_564", - "op" : "Parameter", - "outputs" : ["Parameter_564_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_563", - "op" : "Parameter", - "outputs" : ["Parameter_563_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_561", - "op" : "Parameter", - "outputs" : ["Parameter_561_0"], - "shape" : [ 128, 672, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_558", - "op" : "Parameter", - "outputs" : ["Parameter_558_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_557", - "op" : "Parameter", - "outputs" : ["Parameter_557_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_556", - "op" : "Parameter", - "outputs" : ["Parameter_556_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_555", - "op" : "Parameter", - "outputs" : ["Parameter_555_0"], - "shape" : [672] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_552", - "op" : "Parameter", - "outputs" : ["Parameter_552_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_549", - "op" : "Parameter", - "outputs" : ["Parameter_549_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_548", - "op" : "Parameter", - "outputs" : ["Parameter_548_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_547", - "op" : "Parameter", - "outputs" : ["Parameter_547_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_546", - "op" : "Parameter", - "outputs" : ["Parameter_546_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_544", - "op" : "Parameter", - "outputs" : ["Parameter_544_0"], - "shape" : [ 128, 640, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_541", - "op" : "Parameter", - "outputs" : ["Parameter_541_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_540", - "op" : "Parameter", - "outputs" : ["Parameter_540_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_539", - "op" : "Parameter", - "outputs" : ["Parameter_539_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_538", - "op" : "Parameter", - "outputs" : ["Parameter_538_0"], - "shape" : [640] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_535", - "op" : "Parameter", - "outputs" : ["Parameter_535_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_532", - "op" : "Parameter", - "outputs" : ["Parameter_532_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_531", - "op" : "Parameter", - "outputs" : ["Parameter_531_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_530", - "op" : "Parameter", - "outputs" : ["Parameter_530_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_529", - "op" : "Parameter", - "outputs" : ["Parameter_529_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_527", - "op" : "Parameter", - "outputs" : ["Parameter_527_0"], - "shape" : [ 128, 608, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_524", - "op" : "Parameter", - "outputs" : ["Parameter_524_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_523", - "op" : "Parameter", - "outputs" : ["Parameter_523_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_522", - "op" : "Parameter", - "outputs" : ["Parameter_522_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_521", - "op" : "Parameter", - "outputs" : ["Parameter_521_0"], - "shape" : [608] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_518", - "op" : "Parameter", - "outputs" : ["Parameter_518_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_515", - "op" : "Parameter", - "outputs" : ["Parameter_515_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_514", - "op" : "Parameter", - "outputs" : ["Parameter_514_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_513", - "op" : "Parameter", - "outputs" : ["Parameter_513_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_512", - "op" : "Parameter", - "outputs" : ["Parameter_512_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_510", - "op" : "Parameter", - "outputs" : ["Parameter_510_0"], - "shape" : [ 128, 576, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_507", - "op" : "Parameter", - "outputs" : ["Parameter_507_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_506", - "op" : "Parameter", - "outputs" : ["Parameter_506_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_505", - "op" : "Parameter", - "outputs" : ["Parameter_505_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_504", - "op" : "Parameter", - "outputs" : ["Parameter_504_0"], - "shape" : [576] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_501", - "op" : "Parameter", - "outputs" : ["Parameter_501_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_498", - "op" : "Parameter", - "outputs" : ["Parameter_498_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_497", - "op" : "Parameter", - "outputs" : ["Parameter_497_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_496", - "op" : "Parameter", - "outputs" : ["Parameter_496_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_495", - "op" : "Parameter", - "outputs" : ["Parameter_495_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_493", - "op" : "Parameter", - "outputs" : ["Parameter_493_0"], - "shape" : [ 128, 544, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_490", - "op" : "Parameter", - "outputs" : ["Parameter_490_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_489", - "op" : "Parameter", - "outputs" : ["Parameter_489_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_488", - "op" : "Parameter", - "outputs" : ["Parameter_488_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_487", - "op" : "Parameter", - "outputs" : ["Parameter_487_0"], - "shape" : [544] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_484", - "op" : "Parameter", - "outputs" : ["Parameter_484_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_481", - "op" : "Parameter", - "outputs" : ["Parameter_481_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_480", - "op" : "Parameter", - "outputs" : ["Parameter_480_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_479", - "op" : "Parameter", - "outputs" : ["Parameter_479_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_478", - "op" : "Parameter", - "outputs" : ["Parameter_478_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_476", - "op" : "Parameter", - "outputs" : ["Parameter_476_0"], - "shape" : [ 128, 512, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_473", - "op" : "Parameter", - "outputs" : ["Parameter_473_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_472", - "op" : "Parameter", - "outputs" : ["Parameter_472_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_471", - "op" : "Parameter", - "outputs" : ["Parameter_471_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_470", - "op" : "Parameter", - "outputs" : ["Parameter_470_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_467", - "op" : "Parameter", - "outputs" : ["Parameter_467_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_464", - "op" : "Parameter", - "outputs" : ["Parameter_464_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_463", - "op" : "Parameter", - "outputs" : ["Parameter_463_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_462", - "op" : "Parameter", - "outputs" : ["Parameter_462_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_461", - "op" : "Parameter", - "outputs" : ["Parameter_461_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_459", - "op" : "Parameter", - "outputs" : ["Parameter_459_0"], - "shape" : [ 128, 480, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_456", - "op" : "Parameter", - "outputs" : ["Parameter_456_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_455", - "op" : "Parameter", - "outputs" : ["Parameter_455_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_454", - "op" : "Parameter", - "outputs" : ["Parameter_454_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_453", - "op" : "Parameter", - "outputs" : ["Parameter_453_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_450", - "op" : "Parameter", - "outputs" : ["Parameter_450_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_447", - "op" : "Parameter", - "outputs" : ["Parameter_447_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_446", - "op" : "Parameter", - "outputs" : ["Parameter_446_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_445", - "op" : "Parameter", - "outputs" : ["Parameter_445_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_444", - "op" : "Parameter", - "outputs" : ["Parameter_444_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_442", - "op" : "Parameter", - "outputs" : ["Parameter_442_0"], - "shape" : [ 128, 448, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_439", - "op" : "Parameter", - "outputs" : ["Parameter_439_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_438", - "op" : "Parameter", - "outputs" : ["Parameter_438_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_437", - "op" : "Parameter", - "outputs" : ["Parameter_437_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_436", - "op" : "Parameter", - "outputs" : ["Parameter_436_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_433", - "op" : "Parameter", - "outputs" : ["Parameter_433_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_430", - "op" : "Parameter", - "outputs" : ["Parameter_430_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_429", - "op" : "Parameter", - "outputs" : ["Parameter_429_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_428", - "op" : "Parameter", - "outputs" : ["Parameter_428_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_427", - "op" : "Parameter", - "outputs" : ["Parameter_427_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_425", - "op" : "Parameter", - "outputs" : ["Parameter_425_0"], - "shape" : [ 128, 416, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_422", - "op" : "Parameter", - "outputs" : ["Parameter_422_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_421", - "op" : "Parameter", - "outputs" : ["Parameter_421_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_420", - "op" : "Parameter", - "outputs" : ["Parameter_420_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_419", - "op" : "Parameter", - "outputs" : ["Parameter_419_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_416", - "op" : "Parameter", - "outputs" : ["Parameter_416_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_413", - "op" : "Parameter", - "outputs" : ["Parameter_413_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_412", - "op" : "Parameter", - "outputs" : ["Parameter_412_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_411", - "op" : "Parameter", - "outputs" : ["Parameter_411_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_410", - "op" : "Parameter", - "outputs" : ["Parameter_410_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_408", - "op" : "Parameter", - "outputs" : ["Parameter_408_0"], - "shape" : [ 128, 384, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_405", - "op" : "Parameter", - "outputs" : ["Parameter_405_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_404", - "op" : "Parameter", - "outputs" : ["Parameter_404_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_403", - "op" : "Parameter", - "outputs" : ["Parameter_403_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_402", - "op" : "Parameter", - "outputs" : ["Parameter_402_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_399", - "op" : "Parameter", - "outputs" : ["Parameter_399_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_396", - "op" : "Parameter", - "outputs" : ["Parameter_396_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_395", - "op" : "Parameter", - "outputs" : ["Parameter_395_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_394", - "op" : "Parameter", - "outputs" : ["Parameter_394_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_393", - "op" : "Parameter", - "outputs" : ["Parameter_393_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_391", - "op" : "Parameter", - "outputs" : ["Parameter_391_0"], - "shape" : [ 128, 352, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_388", - "op" : "Parameter", - "outputs" : ["Parameter_388_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_387", - "op" : "Parameter", - "outputs" : ["Parameter_387_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_386", - "op" : "Parameter", - "outputs" : ["Parameter_386_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_385", - "op" : "Parameter", - "outputs" : ["Parameter_385_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_382", - "op" : "Parameter", - "outputs" : ["Parameter_382_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_379", - "op" : "Parameter", - "outputs" : ["Parameter_379_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_378", - "op" : "Parameter", - "outputs" : ["Parameter_378_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_377", - "op" : "Parameter", - "outputs" : ["Parameter_377_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_376", - "op" : "Parameter", - "outputs" : ["Parameter_376_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_374", - "op" : "Parameter", - "outputs" : ["Parameter_374_0"], - "shape" : [ 128, 320, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_371", - "op" : "Parameter", - "outputs" : ["Parameter_371_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_370", - "op" : "Parameter", - "outputs" : ["Parameter_370_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_369", - "op" : "Parameter", - "outputs" : ["Parameter_369_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_368", - "op" : "Parameter", - "outputs" : ["Parameter_368_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_365", - "op" : "Parameter", - "outputs" : ["Parameter_365_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_362", - "op" : "Parameter", - "outputs" : ["Parameter_362_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_361", - "op" : "Parameter", - "outputs" : ["Parameter_361_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_360", - "op" : "Parameter", - "outputs" : ["Parameter_360_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_359", - "op" : "Parameter", - "outputs" : ["Parameter_359_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_357", - "op" : "Parameter", - "outputs" : ["Parameter_357_0"], - "shape" : [ 128, 288, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_354", - "op" : "Parameter", - "outputs" : ["Parameter_354_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_353", - "op" : "Parameter", - "outputs" : ["Parameter_353_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_352", - "op" : "Parameter", - "outputs" : ["Parameter_352_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_351", - "op" : "Parameter", - "outputs" : ["Parameter_351_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_348", - "op" : "Parameter", - "outputs" : ["Parameter_348_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_345", - "op" : "Parameter", - "outputs" : ["Parameter_345_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_344", - "op" : "Parameter", - "outputs" : ["Parameter_344_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_343", - "op" : "Parameter", - "outputs" : ["Parameter_343_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_342", - "op" : "Parameter", - "outputs" : ["Parameter_342_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_340", - "op" : "Parameter", - "outputs" : ["Parameter_340_0"], - "shape" : [ 128, 256, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_337", - "op" : "Parameter", - "outputs" : ["Parameter_337_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_336", - "op" : "Parameter", - "outputs" : ["Parameter_336_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_335", - "op" : "Parameter", - "outputs" : ["Parameter_335_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_334", - "op" : "Parameter", - "outputs" : ["Parameter_334_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_331", - "op" : "Parameter", - "outputs" : ["Parameter_331_0"], - "shape" : [ 256, 512, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_328", - "op" : "Parameter", - "outputs" : ["Parameter_328_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_327", - "op" : "Parameter", - "outputs" : ["Parameter_327_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_326", - "op" : "Parameter", - "outputs" : ["Parameter_326_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_325", - "op" : "Parameter", - "outputs" : ["Parameter_325_0"], - "shape" : [512] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_322", - "op" : "Parameter", - "outputs" : ["Parameter_322_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_319", - "op" : "Parameter", - "outputs" : ["Parameter_319_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_318", - "op" : "Parameter", - "outputs" : ["Parameter_318_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_317", - "op" : "Parameter", - "outputs" : ["Parameter_317_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_316", - "op" : "Parameter", - "outputs" : ["Parameter_316_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_314", - "op" : "Parameter", - "outputs" : ["Parameter_314_0"], - "shape" : [ 128, 480, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_311", - "op" : "Parameter", - "outputs" : ["Parameter_311_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_310", - "op" : "Parameter", - "outputs" : ["Parameter_310_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_309", - "op" : "Parameter", - "outputs" : ["Parameter_309_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_308", - "op" : "Parameter", - "outputs" : ["Parameter_308_0"], - "shape" : [480] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_305", - "op" : "Parameter", - "outputs" : ["Parameter_305_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_302", - "op" : "Parameter", - "outputs" : ["Parameter_302_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_301", - "op" : "Parameter", - "outputs" : ["Parameter_301_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_300", - "op" : "Parameter", - "outputs" : ["Parameter_300_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_299", - "op" : "Parameter", - "outputs" : ["Parameter_299_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_297", - "op" : "Parameter", - "outputs" : ["Parameter_297_0"], - "shape" : [ 128, 448, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_294", - "op" : "Parameter", - "outputs" : ["Parameter_294_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_293", - "op" : "Parameter", - "outputs" : ["Parameter_293_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_292", - "op" : "Parameter", - "outputs" : ["Parameter_292_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_291", - "op" : "Parameter", - "outputs" : ["Parameter_291_0"], - "shape" : [448] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_288", - "op" : "Parameter", - "outputs" : ["Parameter_288_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_285", - "op" : "Parameter", - "outputs" : ["Parameter_285_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_284", - "op" : "Parameter", - "outputs" : ["Parameter_284_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_283", - "op" : "Parameter", - "outputs" : ["Parameter_283_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_282", - "op" : "Parameter", - "outputs" : ["Parameter_282_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_280", - "op" : "Parameter", - "outputs" : ["Parameter_280_0"], - "shape" : [ 128, 416, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_277", - "op" : "Parameter", - "outputs" : ["Parameter_277_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_276", - "op" : "Parameter", - "outputs" : ["Parameter_276_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_275", - "op" : "Parameter", - "outputs" : ["Parameter_275_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_274", - "op" : "Parameter", - "outputs" : ["Parameter_274_0"], - "shape" : [416] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_271", - "op" : "Parameter", - "outputs" : ["Parameter_271_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_268", - "op" : "Parameter", - "outputs" : ["Parameter_268_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_267", - "op" : "Parameter", - "outputs" : ["Parameter_267_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_266", - "op" : "Parameter", - "outputs" : ["Parameter_266_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_265", - "op" : "Parameter", - "outputs" : ["Parameter_265_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_263", - "op" : "Parameter", - "outputs" : ["Parameter_263_0"], - "shape" : [ 128, 384, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_260", - "op" : "Parameter", - "outputs" : ["Parameter_260_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_259", - "op" : "Parameter", - "outputs" : ["Parameter_259_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_258", - "op" : "Parameter", - "outputs" : ["Parameter_258_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_257", - "op" : "Parameter", - "outputs" : ["Parameter_257_0"], - "shape" : [384] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_254", - "op" : "Parameter", - "outputs" : ["Parameter_254_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_251", - "op" : "Parameter", - "outputs" : ["Parameter_251_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_250", - "op" : "Parameter", - "outputs" : ["Parameter_250_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_249", - "op" : "Parameter", - "outputs" : ["Parameter_249_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_248", - "op" : "Parameter", - "outputs" : ["Parameter_248_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_246", - "op" : "Parameter", - "outputs" : ["Parameter_246_0"], - "shape" : [ 128, 352, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_243", - "op" : "Parameter", - "outputs" : ["Parameter_243_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_242", - "op" : "Parameter", - "outputs" : ["Parameter_242_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_241", - "op" : "Parameter", - "outputs" : ["Parameter_241_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_240", - "op" : "Parameter", - "outputs" : ["Parameter_240_0"], - "shape" : [352] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_237", - "op" : "Parameter", - "outputs" : ["Parameter_237_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_234", - "op" : "Parameter", - "outputs" : ["Parameter_234_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_233", - "op" : "Parameter", - "outputs" : ["Parameter_233_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_232", - "op" : "Parameter", - "outputs" : ["Parameter_232_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_231", - "op" : "Parameter", - "outputs" : ["Parameter_231_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_229", - "op" : "Parameter", - "outputs" : ["Parameter_229_0"], - "shape" : [ 128, 320, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_226", - "op" : "Parameter", - "outputs" : ["Parameter_226_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_225", - "op" : "Parameter", - "outputs" : ["Parameter_225_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_224", - "op" : "Parameter", - "outputs" : ["Parameter_224_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_223", - "op" : "Parameter", - "outputs" : ["Parameter_223_0"], - "shape" : [320] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_220", - "op" : "Parameter", - "outputs" : ["Parameter_220_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_217", - "op" : "Parameter", - "outputs" : ["Parameter_217_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_216", - "op" : "Parameter", - "outputs" : ["Parameter_216_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_215", - "op" : "Parameter", - "outputs" : ["Parameter_215_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_214", - "op" : "Parameter", - "outputs" : ["Parameter_214_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_212", - "op" : "Parameter", - "outputs" : ["Parameter_212_0"], - "shape" : [ 128, 288, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_209", - "op" : "Parameter", - "outputs" : ["Parameter_209_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_208", - "op" : "Parameter", - "outputs" : ["Parameter_208_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_207", - "op" : "Parameter", - "outputs" : ["Parameter_207_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_206", - "op" : "Parameter", - "outputs" : ["Parameter_206_0"], - "shape" : [288] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_203", - "op" : "Parameter", - "outputs" : ["Parameter_203_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_200", - "op" : "Parameter", - "outputs" : ["Parameter_200_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_199", - "op" : "Parameter", - "outputs" : ["Parameter_199_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_198", - "op" : "Parameter", - "outputs" : ["Parameter_198_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_197", - "op" : "Parameter", - "outputs" : ["Parameter_197_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_195", - "op" : "Parameter", - "outputs" : ["Parameter_195_0"], - "shape" : [ 128, 256, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_192", - "op" : "Parameter", - "outputs" : ["Parameter_192_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_191", - "op" : "Parameter", - "outputs" : ["Parameter_191_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_190", - "op" : "Parameter", - "outputs" : ["Parameter_190_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_189", - "op" : "Parameter", - "outputs" : ["Parameter_189_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_186", - "op" : "Parameter", - "outputs" : ["Parameter_186_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_183", - "op" : "Parameter", - "outputs" : ["Parameter_183_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_182", - "op" : "Parameter", - "outputs" : ["Parameter_182_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_181", - "op" : "Parameter", - "outputs" : ["Parameter_181_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_180", - "op" : "Parameter", - "outputs" : ["Parameter_180_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_178", - "op" : "Parameter", - "outputs" : ["Parameter_178_0"], - "shape" : [ 128, 224, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_175", - "op" : "Parameter", - "outputs" : ["Parameter_175_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_174", - "op" : "Parameter", - "outputs" : ["Parameter_174_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_173", - "op" : "Parameter", - "outputs" : ["Parameter_173_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_172", - "op" : "Parameter", - "outputs" : ["Parameter_172_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_169", - "op" : "Parameter", - "outputs" : ["Parameter_169_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_166", - "op" : "Parameter", - "outputs" : ["Parameter_166_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_165", - "op" : "Parameter", - "outputs" : ["Parameter_165_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_164", - "op" : "Parameter", - "outputs" : ["Parameter_164_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_163", - "op" : "Parameter", - "outputs" : ["Parameter_163_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_161", - "op" : "Parameter", - "outputs" : ["Parameter_161_0"], - "shape" : [ 128, 192, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_158", - "op" : "Parameter", - "outputs" : ["Parameter_158_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_157", - "op" : "Parameter", - "outputs" : ["Parameter_157_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_156", - "op" : "Parameter", - "outputs" : ["Parameter_156_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_155", - "op" : "Parameter", - "outputs" : ["Parameter_155_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_152", - "op" : "Parameter", - "outputs" : ["Parameter_152_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_149", - "op" : "Parameter", - "outputs" : ["Parameter_149_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_148", - "op" : "Parameter", - "outputs" : ["Parameter_148_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_147", - "op" : "Parameter", - "outputs" : ["Parameter_147_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_146", - "op" : "Parameter", - "outputs" : ["Parameter_146_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_144", - "op" : "Parameter", - "outputs" : ["Parameter_144_0"], - "shape" : [ 128, 160, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_141", - "op" : "Parameter", - "outputs" : ["Parameter_141_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_140", - "op" : "Parameter", - "outputs" : ["Parameter_140_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_139", - "op" : "Parameter", - "outputs" : ["Parameter_139_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_138", - "op" : "Parameter", - "outputs" : ["Parameter_138_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_135", - "op" : "Parameter", - "outputs" : ["Parameter_135_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_132", - "op" : "Parameter", - "outputs" : ["Parameter_132_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_131", - "op" : "Parameter", - "outputs" : ["Parameter_131_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_130", - "op" : "Parameter", - "outputs" : ["Parameter_130_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_129", - "op" : "Parameter", - "outputs" : ["Parameter_129_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_127", - "op" : "Parameter", - "outputs" : ["Parameter_127_0"], - "shape" : [ 128, 128, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_124", - "op" : "Parameter", - "outputs" : ["Parameter_124_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_123", - "op" : "Parameter", - "outputs" : ["Parameter_123_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_122", - "op" : "Parameter", - "outputs" : ["Parameter_122_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_121", - "op" : "Parameter", - "outputs" : ["Parameter_121_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_118", - "op" : "Parameter", - "outputs" : ["Parameter_118_0"], - "shape" : [ 128, 256, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_115", - "op" : "Parameter", - "outputs" : ["Parameter_115_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_114", - "op" : "Parameter", - "outputs" : ["Parameter_114_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_113", - "op" : "Parameter", - "outputs" : ["Parameter_113_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_112", - "op" : "Parameter", - "outputs" : ["Parameter_112_0"], - "shape" : [256] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_109", - "op" : "Parameter", - "outputs" : ["Parameter_109_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_106", - "op" : "Parameter", - "outputs" : ["Parameter_106_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_105", - "op" : "Parameter", - "outputs" : ["Parameter_105_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_104", - "op" : "Parameter", - "outputs" : ["Parameter_104_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_103", - "op" : "Parameter", - "outputs" : ["Parameter_103_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_101", - "op" : "Parameter", - "outputs" : ["Parameter_101_0"], - "shape" : [ 128, 224, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_98", - "op" : "Parameter", - "outputs" : ["Parameter_98_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_97", - "op" : "Parameter", - "outputs" : ["Parameter_97_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_96", - "op" : "Parameter", - "outputs" : ["Parameter_96_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_95", - "op" : "Parameter", - "outputs" : ["Parameter_95_0"], - "shape" : [224] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_92", - "op" : "Parameter", - "outputs" : ["Parameter_92_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_89", - "op" : "Parameter", - "outputs" : ["Parameter_89_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_88", - "op" : "Parameter", - "outputs" : ["Parameter_88_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_87", - "op" : "Parameter", - "outputs" : ["Parameter_87_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_86", - "op" : "Parameter", - "outputs" : ["Parameter_86_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_84", - "op" : "Parameter", - "outputs" : ["Parameter_84_0"], - "shape" : [ 128, 192, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_81", - "op" : "Parameter", - "outputs" : ["Parameter_81_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_80", - "op" : "Parameter", - "outputs" : ["Parameter_80_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_79", - "op" : "Parameter", - "outputs" : ["Parameter_79_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_78", - "op" : "Parameter", - "outputs" : ["Parameter_78_0"], - "shape" : [192] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_75", - "op" : "Parameter", - "outputs" : ["Parameter_75_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_72", - "op" : "Parameter", - "outputs" : ["Parameter_72_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_71", - "op" : "Parameter", - "outputs" : ["Parameter_71_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_70", - "op" : "Parameter", - "outputs" : ["Parameter_70_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_69", - "op" : "Parameter", - "outputs" : ["Parameter_69_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_67", - "op" : "Parameter", - "outputs" : ["Parameter_67_0"], - "shape" : [ 128, 160, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_64", - "op" : "Parameter", - "outputs" : ["Parameter_64_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_63", - "op" : "Parameter", - "outputs" : ["Parameter_63_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_62", - "op" : "Parameter", - "outputs" : ["Parameter_62_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_61", - "op" : "Parameter", - "outputs" : ["Parameter_61_0"], - "shape" : [160] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_58", - "op" : "Parameter", - "outputs" : ["Parameter_58_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_55", - "op" : "Parameter", - "outputs" : ["Parameter_55_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_54", - "op" : "Parameter", - "outputs" : ["Parameter_54_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_53", - "op" : "Parameter", - "outputs" : ["Parameter_53_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_52", - "op" : "Parameter", - "outputs" : ["Parameter_52_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_50", - "op" : "Parameter", - "outputs" : ["Parameter_50_0"], - "shape" : [ 128, 128, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_47", - "op" : "Parameter", - "outputs" : ["Parameter_47_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_46", - "op" : "Parameter", - "outputs" : ["Parameter_46_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_45", - "op" : "Parameter", - "outputs" : ["Parameter_45_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_44", - "op" : "Parameter", - "outputs" : ["Parameter_44_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_41", - "op" : "Parameter", - "outputs" : ["Parameter_41_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_38", - "op" : "Parameter", - "outputs" : ["Parameter_38_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_37", - "op" : "Parameter", - "outputs" : ["Parameter_37_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_36", - "op" : "Parameter", - "outputs" : ["Parameter_36_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_35", - "op" : "Parameter", - "outputs" : ["Parameter_35_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_33", - "op" : "Parameter", - "outputs" : ["Parameter_33_0"], - "shape" : [ 128, 96, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_30", - "op" : "Parameter", - "outputs" : ["Parameter_30_0"], - "shape" : [96] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_29", - "op" : "Parameter", - "outputs" : ["Parameter_29_0"], - "shape" : [96] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_28", - "op" : "Parameter", - "outputs" : ["Parameter_28_0"], - "shape" : [96] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_27", - "op" : "Parameter", - "outputs" : ["Parameter_27_0"], - "shape" : [96] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_24", - "op" : "Parameter", - "outputs" : ["Parameter_24_0"], - "shape" : [ 32, 128, 3, 3 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_21", - "op" : "Parameter", - "outputs" : ["Parameter_21_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_20", - "op" : "Parameter", - "outputs" : ["Parameter_20_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_19", - "op" : "Parameter", - "outputs" : ["Parameter_19_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_18", - "op" : "Parameter", - "outputs" : ["Parameter_18_0"], - "shape" : [128] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_16", - "op" : "Parameter", - "outputs" : ["Parameter_16_0"], - "shape" : [ 128, 64, 1, 1 ] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_13", - "op" : "Parameter", - "outputs" : ["Parameter_13_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_12", - "op" : "Parameter", - "outputs" : ["Parameter_12_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_11", - "op" : "Parameter", - "outputs" : ["Parameter_11_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_10", - "op" : "Parameter", - "outputs" : ["Parameter_10_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_6", - "op" : "Parameter", - "outputs" : ["Parameter_6_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_5", - "op" : "Parameter", - "outputs" : ["Parameter_5_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_4", - "op" : "Parameter", - "outputs" : ["Parameter_4_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [64] - }, - { - "cacheable" : true, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [ 64, 3, 7, 7 ] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 1, 3, 224, 224 ] - }, - { - "input_order" : [0], - "inputs" : ["Parameter_1032"], - "name" : "Reshape_1035", - "op" : "Reshape", - "output_shape" : [ 1, 1000 ], - "outputs" : ["Reshape_1035_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_1031"], - "name" : "Reshape_1033", - "op" : "Reshape", - "output_shape" : [ 1024, 1000 ], - "outputs" : ["Reshape_1033_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Parameter_0", "Parameter_1" ], - "name" : "Convolution_2", - "op" : "Convolution", - "outputs" : ["Convolution_2_0"], - "padding_above" : [ 3, 3 ], - "padding_below" : [ 3, 3 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 2, 2 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_3", "Parameter_4", "Convolution_2", "Parameter_5", - "Parameter_6" - ], - "name" : "BatchNormInference_7", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_7_0"] - }, - { - "inputs" : ["BatchNormInference_7"], - "name" : "Relu_8", - "op" : "Relu", - "outputs" : ["Relu_8_0"] - }, - { - "inputs" : ["Relu_8"], - "name" : "MaxPool_9", - "op" : "MaxPool", - "outputs" : ["MaxPool_9_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 3, 3 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_10", "Parameter_11", "MaxPool_9", "Parameter_12", - "Parameter_13" - ], - "name" : "BatchNormInference_14", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_14_0"] - }, - { - "inputs" : ["BatchNormInference_14"], - "name" : "Relu_15", - "op" : "Relu", - "outputs" : ["Relu_15_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_15", "Parameter_16" ], - "name" : "Convolution_17", - "op" : "Convolution", - "outputs" : ["Convolution_17_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_18", "Parameter_19", "Convolution_17", "Parameter_20", - "Parameter_21" - ], - "name" : "BatchNormInference_22", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_22_0"] - }, - { - "inputs" : ["BatchNormInference_22"], - "name" : "Relu_23", - "op" : "Relu", - "outputs" : ["Relu_23_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_23", "Parameter_24" ], - "name" : "Convolution_25", - "op" : "Convolution", - "outputs" : ["Convolution_25_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "MaxPool_9", "Convolution_25" ], - "name" : "Concat_26", - "op" : "Concat", - "outputs" : ["Concat_26_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_27", "Parameter_28", "Concat_26", "Parameter_29", - "Parameter_30" - ], - "name" : "BatchNormInference_31", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_31_0"] - }, - { - "inputs" : ["BatchNormInference_31"], - "name" : "Relu_32", - "op" : "Relu", - "outputs" : ["Relu_32_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_32", "Parameter_33" ], - "name" : "Convolution_34", - "op" : "Convolution", - "outputs" : ["Convolution_34_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_35", "Parameter_36", "Convolution_34", "Parameter_37", - "Parameter_38" - ], - "name" : "BatchNormInference_39", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_39_0"] - }, - { - "inputs" : ["BatchNormInference_39"], - "name" : "Relu_40", - "op" : "Relu", - "outputs" : ["Relu_40_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_40", "Parameter_41" ], - "name" : "Convolution_42", - "op" : "Convolution", - "outputs" : ["Convolution_42_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_26", "Convolution_42" ], - "name" : "Concat_43", - "op" : "Concat", - "outputs" : ["Concat_43_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_44", "Parameter_45", "Concat_43", "Parameter_46", - "Parameter_47" - ], - "name" : "BatchNormInference_48", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_48_0"] - }, - { - "inputs" : ["BatchNormInference_48"], - "name" : "Relu_49", - "op" : "Relu", - "outputs" : ["Relu_49_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_49", "Parameter_50" ], - "name" : "Convolution_51", - "op" : "Convolution", - "outputs" : ["Convolution_51_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_52", "Parameter_53", "Convolution_51", "Parameter_54", - "Parameter_55" - ], - "name" : "BatchNormInference_56", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_56_0"] - }, - { - "inputs" : ["BatchNormInference_56"], - "name" : "Relu_57", - "op" : "Relu", - "outputs" : ["Relu_57_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_57", "Parameter_58" ], - "name" : "Convolution_59", - "op" : "Convolution", - "outputs" : ["Convolution_59_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_43", "Convolution_59" ], - "name" : "Concat_60", - "op" : "Concat", - "outputs" : ["Concat_60_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_61", "Parameter_62", "Concat_60", "Parameter_63", - "Parameter_64" - ], - "name" : "BatchNormInference_65", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_65_0"] - }, - { - "inputs" : ["BatchNormInference_65"], - "name" : "Relu_66", - "op" : "Relu", - "outputs" : ["Relu_66_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_66", "Parameter_67" ], - "name" : "Convolution_68", - "op" : "Convolution", - "outputs" : ["Convolution_68_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_69", "Parameter_70", "Convolution_68", "Parameter_71", - "Parameter_72" - ], - "name" : "BatchNormInference_73", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_73_0"] - }, - { - "inputs" : ["BatchNormInference_73"], - "name" : "Relu_74", - "op" : "Relu", - "outputs" : ["Relu_74_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_74", "Parameter_75" ], - "name" : "Convolution_76", - "op" : "Convolution", - "outputs" : ["Convolution_76_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_60", "Convolution_76" ], - "name" : "Concat_77", - "op" : "Concat", - "outputs" : ["Concat_77_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_78", "Parameter_79", "Concat_77", "Parameter_80", - "Parameter_81" - ], - "name" : "BatchNormInference_82", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_82_0"] - }, - { - "inputs" : ["BatchNormInference_82"], - "name" : "Relu_83", - "op" : "Relu", - "outputs" : ["Relu_83_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_83", "Parameter_84" ], - "name" : "Convolution_85", - "op" : "Convolution", - "outputs" : ["Convolution_85_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_86", "Parameter_87", "Convolution_85", "Parameter_88", - "Parameter_89" - ], - "name" : "BatchNormInference_90", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_90_0"] - }, - { - "inputs" : ["BatchNormInference_90"], - "name" : "Relu_91", - "op" : "Relu", - "outputs" : ["Relu_91_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_91", "Parameter_92" ], - "name" : "Convolution_93", - "op" : "Convolution", - "outputs" : ["Convolution_93_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_77", "Convolution_93" ], - "name" : "Concat_94", - "op" : "Concat", - "outputs" : ["Concat_94_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_95", "Parameter_96", "Concat_94", "Parameter_97", - "Parameter_98" - ], - "name" : "BatchNormInference_99", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_99_0"] - }, - { - "inputs" : ["BatchNormInference_99"], - "name" : "Relu_100", - "op" : "Relu", - "outputs" : ["Relu_100_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_100", "Parameter_101" ], - "name" : "Convolution_102", - "op" : "Convolution", - "outputs" : ["Convolution_102_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_103", "Parameter_104", "Convolution_102", "Parameter_105", - "Parameter_106" - ], - "name" : "BatchNormInference_107", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_107_0"] - }, - { - "inputs" : ["BatchNormInference_107"], - "name" : "Relu_108", - "op" : "Relu", - "outputs" : ["Relu_108_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_108", "Parameter_109" ], - "name" : "Convolution_110", - "op" : "Convolution", - "outputs" : ["Convolution_110_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_94", "Convolution_110" ], - "name" : "Concat_111", - "op" : "Concat", - "outputs" : ["Concat_111_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_112", "Parameter_113", "Concat_111", "Parameter_114", - "Parameter_115" - ], - "name" : "BatchNormInference_116", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_116_0"] - }, - { - "inputs" : ["BatchNormInference_116"], - "name" : "Relu_117", - "op" : "Relu", - "outputs" : ["Relu_117_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_117", "Parameter_118" ], - "name" : "Convolution_119", - "op" : "Convolution", - "outputs" : ["Convolution_119_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "include_padding_in_avg_computation" : true, - "inputs" : ["Convolution_119"], - "name" : "AvgPool_120", - "op" : "AvgPool", - "outputs" : ["AvgPool_120_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_121", "Parameter_122", "AvgPool_120", "Parameter_123", - "Parameter_124" - ], - "name" : "BatchNormInference_125", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_125_0"] - }, - { - "inputs" : ["BatchNormInference_125"], - "name" : "Relu_126", - "op" : "Relu", - "outputs" : ["Relu_126_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_126", "Parameter_127" ], - "name" : "Convolution_128", - "op" : "Convolution", - "outputs" : ["Convolution_128_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_129", "Parameter_130", "Convolution_128", "Parameter_131", - "Parameter_132" - ], - "name" : "BatchNormInference_133", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_133_0"] - }, - { - "inputs" : ["BatchNormInference_133"], - "name" : "Relu_134", - "op" : "Relu", - "outputs" : ["Relu_134_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_134", "Parameter_135" ], - "name" : "Convolution_136", - "op" : "Convolution", - "outputs" : ["Convolution_136_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "AvgPool_120", "Convolution_136" ], - "name" : "Concat_137", - "op" : "Concat", - "outputs" : ["Concat_137_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_138", "Parameter_139", "Concat_137", "Parameter_140", - "Parameter_141" - ], - "name" : "BatchNormInference_142", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_142_0"] - }, - { - "inputs" : ["BatchNormInference_142"], - "name" : "Relu_143", - "op" : "Relu", - "outputs" : ["Relu_143_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_143", "Parameter_144" ], - "name" : "Convolution_145", - "op" : "Convolution", - "outputs" : ["Convolution_145_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_146", "Parameter_147", "Convolution_145", "Parameter_148", - "Parameter_149" - ], - "name" : "BatchNormInference_150", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_150_0"] - }, - { - "inputs" : ["BatchNormInference_150"], - "name" : "Relu_151", - "op" : "Relu", - "outputs" : ["Relu_151_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_151", "Parameter_152" ], - "name" : "Convolution_153", - "op" : "Convolution", - "outputs" : ["Convolution_153_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_137", "Convolution_153" ], - "name" : "Concat_154", - "op" : "Concat", - "outputs" : ["Concat_154_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_155", "Parameter_156", "Concat_154", "Parameter_157", - "Parameter_158" - ], - "name" : "BatchNormInference_159", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_159_0"] - }, - { - "inputs" : ["BatchNormInference_159"], - "name" : "Relu_160", - "op" : "Relu", - "outputs" : ["Relu_160_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_160", "Parameter_161" ], - "name" : "Convolution_162", - "op" : "Convolution", - "outputs" : ["Convolution_162_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_163", "Parameter_164", "Convolution_162", "Parameter_165", - "Parameter_166" - ], - "name" : "BatchNormInference_167", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_167_0"] - }, - { - "inputs" : ["BatchNormInference_167"], - "name" : "Relu_168", - "op" : "Relu", - "outputs" : ["Relu_168_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_168", "Parameter_169" ], - "name" : "Convolution_170", - "op" : "Convolution", - "outputs" : ["Convolution_170_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_154", "Convolution_170" ], - "name" : "Concat_171", - "op" : "Concat", - "outputs" : ["Concat_171_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_172", "Parameter_173", "Concat_171", "Parameter_174", - "Parameter_175" - ], - "name" : "BatchNormInference_176", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_176_0"] - }, - { - "inputs" : ["BatchNormInference_176"], - "name" : "Relu_177", - "op" : "Relu", - "outputs" : ["Relu_177_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_177", "Parameter_178" ], - "name" : "Convolution_179", - "op" : "Convolution", - "outputs" : ["Convolution_179_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_180", "Parameter_181", "Convolution_179", "Parameter_182", - "Parameter_183" - ], - "name" : "BatchNormInference_184", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_184_0"] - }, - { - "inputs" : ["BatchNormInference_184"], - "name" : "Relu_185", - "op" : "Relu", - "outputs" : ["Relu_185_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_185", "Parameter_186" ], - "name" : "Convolution_187", - "op" : "Convolution", - "outputs" : ["Convolution_187_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_171", "Convolution_187" ], - "name" : "Concat_188", - "op" : "Concat", - "outputs" : ["Concat_188_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_189", "Parameter_190", "Concat_188", "Parameter_191", - "Parameter_192" - ], - "name" : "BatchNormInference_193", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_193_0"] - }, - { - "inputs" : ["BatchNormInference_193"], - "name" : "Relu_194", - "op" : "Relu", - "outputs" : ["Relu_194_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_194", "Parameter_195" ], - "name" : "Convolution_196", - "op" : "Convolution", - "outputs" : ["Convolution_196_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_197", "Parameter_198", "Convolution_196", "Parameter_199", - "Parameter_200" - ], - "name" : "BatchNormInference_201", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_201_0"] - }, - { - "inputs" : ["BatchNormInference_201"], - "name" : "Relu_202", - "op" : "Relu", - "outputs" : ["Relu_202_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_202", "Parameter_203" ], - "name" : "Convolution_204", - "op" : "Convolution", - "outputs" : ["Convolution_204_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_188", "Convolution_204" ], - "name" : "Concat_205", - "op" : "Concat", - "outputs" : ["Concat_205_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_206", "Parameter_207", "Concat_205", "Parameter_208", - "Parameter_209" - ], - "name" : "BatchNormInference_210", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_210_0"] - }, - { - "inputs" : ["BatchNormInference_210"], - "name" : "Relu_211", - "op" : "Relu", - "outputs" : ["Relu_211_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_211", "Parameter_212" ], - "name" : "Convolution_213", - "op" : "Convolution", - "outputs" : ["Convolution_213_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_214", "Parameter_215", "Convolution_213", "Parameter_216", - "Parameter_217" - ], - "name" : "BatchNormInference_218", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_218_0"] - }, - { - "inputs" : ["BatchNormInference_218"], - "name" : "Relu_219", - "op" : "Relu", - "outputs" : ["Relu_219_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_219", "Parameter_220" ], - "name" : "Convolution_221", - "op" : "Convolution", - "outputs" : ["Convolution_221_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_205", "Convolution_221" ], - "name" : "Concat_222", - "op" : "Concat", - "outputs" : ["Concat_222_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_223", "Parameter_224", "Concat_222", "Parameter_225", - "Parameter_226" - ], - "name" : "BatchNormInference_227", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_227_0"] - }, - { - "inputs" : ["BatchNormInference_227"], - "name" : "Relu_228", - "op" : "Relu", - "outputs" : ["Relu_228_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_228", "Parameter_229" ], - "name" : "Convolution_230", - "op" : "Convolution", - "outputs" : ["Convolution_230_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_231", "Parameter_232", "Convolution_230", "Parameter_233", - "Parameter_234" - ], - "name" : "BatchNormInference_235", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_235_0"] - }, - { - "inputs" : ["BatchNormInference_235"], - "name" : "Relu_236", - "op" : "Relu", - "outputs" : ["Relu_236_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_236", "Parameter_237" ], - "name" : "Convolution_238", - "op" : "Convolution", - "outputs" : ["Convolution_238_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_222", "Convolution_238" ], - "name" : "Concat_239", - "op" : "Concat", - "outputs" : ["Concat_239_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_240", "Parameter_241", "Concat_239", "Parameter_242", - "Parameter_243" - ], - "name" : "BatchNormInference_244", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_244_0"] - }, - { - "inputs" : ["BatchNormInference_244"], - "name" : "Relu_245", - "op" : "Relu", - "outputs" : ["Relu_245_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_245", "Parameter_246" ], - "name" : "Convolution_247", - "op" : "Convolution", - "outputs" : ["Convolution_247_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_248", "Parameter_249", "Convolution_247", "Parameter_250", - "Parameter_251" - ], - "name" : "BatchNormInference_252", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_252_0"] - }, - { - "inputs" : ["BatchNormInference_252"], - "name" : "Relu_253", - "op" : "Relu", - "outputs" : ["Relu_253_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_253", "Parameter_254" ], - "name" : "Convolution_255", - "op" : "Convolution", - "outputs" : ["Convolution_255_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_239", "Convolution_255" ], - "name" : "Concat_256", - "op" : "Concat", - "outputs" : ["Concat_256_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_257", "Parameter_258", "Concat_256", "Parameter_259", - "Parameter_260" - ], - "name" : "BatchNormInference_261", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_261_0"] - }, - { - "inputs" : ["BatchNormInference_261"], - "name" : "Relu_262", - "op" : "Relu", - "outputs" : ["Relu_262_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_262", "Parameter_263" ], - "name" : "Convolution_264", - "op" : "Convolution", - "outputs" : ["Convolution_264_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_265", "Parameter_266", "Convolution_264", "Parameter_267", - "Parameter_268" - ], - "name" : "BatchNormInference_269", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_269_0"] - }, - { - "inputs" : ["BatchNormInference_269"], - "name" : "Relu_270", - "op" : "Relu", - "outputs" : ["Relu_270_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_270", "Parameter_271" ], - "name" : "Convolution_272", - "op" : "Convolution", - "outputs" : ["Convolution_272_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_256", "Convolution_272" ], - "name" : "Concat_273", - "op" : "Concat", - "outputs" : ["Concat_273_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_274", "Parameter_275", "Concat_273", "Parameter_276", - "Parameter_277" - ], - "name" : "BatchNormInference_278", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_278_0"] - }, - { - "inputs" : ["BatchNormInference_278"], - "name" : "Relu_279", - "op" : "Relu", - "outputs" : ["Relu_279_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_279", "Parameter_280" ], - "name" : "Convolution_281", - "op" : "Convolution", - "outputs" : ["Convolution_281_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_282", "Parameter_283", "Convolution_281", "Parameter_284", - "Parameter_285" - ], - "name" : "BatchNormInference_286", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_286_0"] - }, - { - "inputs" : ["BatchNormInference_286"], - "name" : "Relu_287", - "op" : "Relu", - "outputs" : ["Relu_287_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_287", "Parameter_288" ], - "name" : "Convolution_289", - "op" : "Convolution", - "outputs" : ["Convolution_289_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_273", "Convolution_289" ], - "name" : "Concat_290", - "op" : "Concat", - "outputs" : ["Concat_290_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_291", "Parameter_292", "Concat_290", "Parameter_293", - "Parameter_294" - ], - "name" : "BatchNormInference_295", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_295_0"] - }, - { - "inputs" : ["BatchNormInference_295"], - "name" : "Relu_296", - "op" : "Relu", - "outputs" : ["Relu_296_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_296", "Parameter_297" ], - "name" : "Convolution_298", - "op" : "Convolution", - "outputs" : ["Convolution_298_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_299", "Parameter_300", "Convolution_298", "Parameter_301", - "Parameter_302" - ], - "name" : "BatchNormInference_303", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_303_0"] - }, - { - "inputs" : ["BatchNormInference_303"], - "name" : "Relu_304", - "op" : "Relu", - "outputs" : ["Relu_304_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_304", "Parameter_305" ], - "name" : "Convolution_306", - "op" : "Convolution", - "outputs" : ["Convolution_306_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_290", "Convolution_306" ], - "name" : "Concat_307", - "op" : "Concat", - "outputs" : ["Concat_307_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_308", "Parameter_309", "Concat_307", "Parameter_310", - "Parameter_311" - ], - "name" : "BatchNormInference_312", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_312_0"] - }, - { - "inputs" : ["BatchNormInference_312"], - "name" : "Relu_313", - "op" : "Relu", - "outputs" : ["Relu_313_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_313", "Parameter_314" ], - "name" : "Convolution_315", - "op" : "Convolution", - "outputs" : ["Convolution_315_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_316", "Parameter_317", "Convolution_315", "Parameter_318", - "Parameter_319" - ], - "name" : "BatchNormInference_320", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_320_0"] - }, - { - "inputs" : ["BatchNormInference_320"], - "name" : "Relu_321", - "op" : "Relu", - "outputs" : ["Relu_321_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_321", "Parameter_322" ], - "name" : "Convolution_323", - "op" : "Convolution", - "outputs" : ["Convolution_323_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_307", "Convolution_323" ], - "name" : "Concat_324", - "op" : "Concat", - "outputs" : ["Concat_324_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_325", "Parameter_326", "Concat_324", "Parameter_327", - "Parameter_328" - ], - "name" : "BatchNormInference_329", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_329_0"] - }, - { - "inputs" : ["BatchNormInference_329"], - "name" : "Relu_330", - "op" : "Relu", - "outputs" : ["Relu_330_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_330", "Parameter_331" ], - "name" : "Convolution_332", - "op" : "Convolution", - "outputs" : ["Convolution_332_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "include_padding_in_avg_computation" : true, - "inputs" : ["Convolution_332"], - "name" : "AvgPool_333", - "op" : "AvgPool", - "outputs" : ["AvgPool_333_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_334", "Parameter_335", "AvgPool_333", "Parameter_336", - "Parameter_337" - ], - "name" : "BatchNormInference_338", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_338_0"] - }, - { - "inputs" : ["BatchNormInference_338"], - "name" : "Relu_339", - "op" : "Relu", - "outputs" : ["Relu_339_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_339", "Parameter_340" ], - "name" : "Convolution_341", - "op" : "Convolution", - "outputs" : ["Convolution_341_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_342", "Parameter_343", "Convolution_341", "Parameter_344", - "Parameter_345" - ], - "name" : "BatchNormInference_346", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_346_0"] - }, - { - "inputs" : ["BatchNormInference_346"], - "name" : "Relu_347", - "op" : "Relu", - "outputs" : ["Relu_347_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_347", "Parameter_348" ], - "name" : "Convolution_349", - "op" : "Convolution", - "outputs" : ["Convolution_349_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "AvgPool_333", "Convolution_349" ], - "name" : "Concat_350", - "op" : "Concat", - "outputs" : ["Concat_350_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_351", "Parameter_352", "Concat_350", "Parameter_353", - "Parameter_354" - ], - "name" : "BatchNormInference_355", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_355_0"] - }, - { - "inputs" : ["BatchNormInference_355"], - "name" : "Relu_356", - "op" : "Relu", - "outputs" : ["Relu_356_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_356", "Parameter_357" ], - "name" : "Convolution_358", - "op" : "Convolution", - "outputs" : ["Convolution_358_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_359", "Parameter_360", "Convolution_358", "Parameter_361", - "Parameter_362" - ], - "name" : "BatchNormInference_363", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_363_0"] - }, - { - "inputs" : ["BatchNormInference_363"], - "name" : "Relu_364", - "op" : "Relu", - "outputs" : ["Relu_364_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_364", "Parameter_365" ], - "name" : "Convolution_366", - "op" : "Convolution", - "outputs" : ["Convolution_366_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_350", "Convolution_366" ], - "name" : "Concat_367", - "op" : "Concat", - "outputs" : ["Concat_367_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_368", "Parameter_369", "Concat_367", "Parameter_370", - "Parameter_371" - ], - "name" : "BatchNormInference_372", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_372_0"] - }, - { - "inputs" : ["BatchNormInference_372"], - "name" : "Relu_373", - "op" : "Relu", - "outputs" : ["Relu_373_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_373", "Parameter_374" ], - "name" : "Convolution_375", - "op" : "Convolution", - "outputs" : ["Convolution_375_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_376", "Parameter_377", "Convolution_375", "Parameter_378", - "Parameter_379" - ], - "name" : "BatchNormInference_380", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_380_0"] - }, - { - "inputs" : ["BatchNormInference_380"], - "name" : "Relu_381", - "op" : "Relu", - "outputs" : ["Relu_381_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_381", "Parameter_382" ], - "name" : "Convolution_383", - "op" : "Convolution", - "outputs" : ["Convolution_383_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_367", "Convolution_383" ], - "name" : "Concat_384", - "op" : "Concat", - "outputs" : ["Concat_384_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_385", "Parameter_386", "Concat_384", "Parameter_387", - "Parameter_388" - ], - "name" : "BatchNormInference_389", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_389_0"] - }, - { - "inputs" : ["BatchNormInference_389"], - "name" : "Relu_390", - "op" : "Relu", - "outputs" : ["Relu_390_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_390", "Parameter_391" ], - "name" : "Convolution_392", - "op" : "Convolution", - "outputs" : ["Convolution_392_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_393", "Parameter_394", "Convolution_392", "Parameter_395", - "Parameter_396" - ], - "name" : "BatchNormInference_397", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_397_0"] - }, - { - "inputs" : ["BatchNormInference_397"], - "name" : "Relu_398", - "op" : "Relu", - "outputs" : ["Relu_398_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_398", "Parameter_399" ], - "name" : "Convolution_400", - "op" : "Convolution", - "outputs" : ["Convolution_400_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_384", "Convolution_400" ], - "name" : "Concat_401", - "op" : "Concat", - "outputs" : ["Concat_401_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_402", "Parameter_403", "Concat_401", "Parameter_404", - "Parameter_405" - ], - "name" : "BatchNormInference_406", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_406_0"] - }, - { - "inputs" : ["BatchNormInference_406"], - "name" : "Relu_407", - "op" : "Relu", - "outputs" : ["Relu_407_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_407", "Parameter_408" ], - "name" : "Convolution_409", - "op" : "Convolution", - "outputs" : ["Convolution_409_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_410", "Parameter_411", "Convolution_409", "Parameter_412", - "Parameter_413" - ], - "name" : "BatchNormInference_414", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_414_0"] - }, - { - "inputs" : ["BatchNormInference_414"], - "name" : "Relu_415", - "op" : "Relu", - "outputs" : ["Relu_415_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_415", "Parameter_416" ], - "name" : "Convolution_417", - "op" : "Convolution", - "outputs" : ["Convolution_417_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_401", "Convolution_417" ], - "name" : "Concat_418", - "op" : "Concat", - "outputs" : ["Concat_418_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_419", "Parameter_420", "Concat_418", "Parameter_421", - "Parameter_422" - ], - "name" : "BatchNormInference_423", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_423_0"] - }, - { - "inputs" : ["BatchNormInference_423"], - "name" : "Relu_424", - "op" : "Relu", - "outputs" : ["Relu_424_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_424", "Parameter_425" ], - "name" : "Convolution_426", - "op" : "Convolution", - "outputs" : ["Convolution_426_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_427", "Parameter_428", "Convolution_426", "Parameter_429", - "Parameter_430" - ], - "name" : "BatchNormInference_431", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_431_0"] - }, - { - "inputs" : ["BatchNormInference_431"], - "name" : "Relu_432", - "op" : "Relu", - "outputs" : ["Relu_432_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_432", "Parameter_433" ], - "name" : "Convolution_434", - "op" : "Convolution", - "outputs" : ["Convolution_434_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_418", "Convolution_434" ], - "name" : "Concat_435", - "op" : "Concat", - "outputs" : ["Concat_435_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_436", "Parameter_437", "Concat_435", "Parameter_438", - "Parameter_439" - ], - "name" : "BatchNormInference_440", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_440_0"] - }, - { - "inputs" : ["BatchNormInference_440"], - "name" : "Relu_441", - "op" : "Relu", - "outputs" : ["Relu_441_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_441", "Parameter_442" ], - "name" : "Convolution_443", - "op" : "Convolution", - "outputs" : ["Convolution_443_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_444", "Parameter_445", "Convolution_443", "Parameter_446", - "Parameter_447" - ], - "name" : "BatchNormInference_448", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_448_0"] - }, - { - "inputs" : ["BatchNormInference_448"], - "name" : "Relu_449", - "op" : "Relu", - "outputs" : ["Relu_449_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_449", "Parameter_450" ], - "name" : "Convolution_451", - "op" : "Convolution", - "outputs" : ["Convolution_451_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_435", "Convolution_451" ], - "name" : "Concat_452", - "op" : "Concat", - "outputs" : ["Concat_452_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_453", "Parameter_454", "Concat_452", "Parameter_455", - "Parameter_456" - ], - "name" : "BatchNormInference_457", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_457_0"] - }, - { - "inputs" : ["BatchNormInference_457"], - "name" : "Relu_458", - "op" : "Relu", - "outputs" : ["Relu_458_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_458", "Parameter_459" ], - "name" : "Convolution_460", - "op" : "Convolution", - "outputs" : ["Convolution_460_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_461", "Parameter_462", "Convolution_460", "Parameter_463", - "Parameter_464" - ], - "name" : "BatchNormInference_465", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_465_0"] - }, - { - "inputs" : ["BatchNormInference_465"], - "name" : "Relu_466", - "op" : "Relu", - "outputs" : ["Relu_466_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_466", "Parameter_467" ], - "name" : "Convolution_468", - "op" : "Convolution", - "outputs" : ["Convolution_468_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_452", "Convolution_468" ], - "name" : "Concat_469", - "op" : "Concat", - "outputs" : ["Concat_469_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_470", "Parameter_471", "Concat_469", "Parameter_472", - "Parameter_473" - ], - "name" : "BatchNormInference_474", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_474_0"] - }, - { - "inputs" : ["BatchNormInference_474"], - "name" : "Relu_475", - "op" : "Relu", - "outputs" : ["Relu_475_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_475", "Parameter_476" ], - "name" : "Convolution_477", - "op" : "Convolution", - "outputs" : ["Convolution_477_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_478", "Parameter_479", "Convolution_477", "Parameter_480", - "Parameter_481" - ], - "name" : "BatchNormInference_482", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_482_0"] - }, - { - "inputs" : ["BatchNormInference_482"], - "name" : "Relu_483", - "op" : "Relu", - "outputs" : ["Relu_483_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_483", "Parameter_484" ], - "name" : "Convolution_485", - "op" : "Convolution", - "outputs" : ["Convolution_485_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_469", "Convolution_485" ], - "name" : "Concat_486", - "op" : "Concat", - "outputs" : ["Concat_486_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_487", "Parameter_488", "Concat_486", "Parameter_489", - "Parameter_490" - ], - "name" : "BatchNormInference_491", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_491_0"] - }, - { - "inputs" : ["BatchNormInference_491"], - "name" : "Relu_492", - "op" : "Relu", - "outputs" : ["Relu_492_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_492", "Parameter_493" ], - "name" : "Convolution_494", - "op" : "Convolution", - "outputs" : ["Convolution_494_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_495", "Parameter_496", "Convolution_494", "Parameter_497", - "Parameter_498" - ], - "name" : "BatchNormInference_499", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_499_0"] - }, - { - "inputs" : ["BatchNormInference_499"], - "name" : "Relu_500", - "op" : "Relu", - "outputs" : ["Relu_500_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_500", "Parameter_501" ], - "name" : "Convolution_502", - "op" : "Convolution", - "outputs" : ["Convolution_502_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_486", "Convolution_502" ], - "name" : "Concat_503", - "op" : "Concat", - "outputs" : ["Concat_503_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_504", "Parameter_505", "Concat_503", "Parameter_506", - "Parameter_507" - ], - "name" : "BatchNormInference_508", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_508_0"] - }, - { - "inputs" : ["BatchNormInference_508"], - "name" : "Relu_509", - "op" : "Relu", - "outputs" : ["Relu_509_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_509", "Parameter_510" ], - "name" : "Convolution_511", - "op" : "Convolution", - "outputs" : ["Convolution_511_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_512", "Parameter_513", "Convolution_511", "Parameter_514", - "Parameter_515" - ], - "name" : "BatchNormInference_516", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_516_0"] - }, - { - "inputs" : ["BatchNormInference_516"], - "name" : "Relu_517", - "op" : "Relu", - "outputs" : ["Relu_517_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_517", "Parameter_518" ], - "name" : "Convolution_519", - "op" : "Convolution", - "outputs" : ["Convolution_519_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_503", "Convolution_519" ], - "name" : "Concat_520", - "op" : "Concat", - "outputs" : ["Concat_520_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_521", "Parameter_522", "Concat_520", "Parameter_523", - "Parameter_524" - ], - "name" : "BatchNormInference_525", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_525_0"] - }, - { - "inputs" : ["BatchNormInference_525"], - "name" : "Relu_526", - "op" : "Relu", - "outputs" : ["Relu_526_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_526", "Parameter_527" ], - "name" : "Convolution_528", - "op" : "Convolution", - "outputs" : ["Convolution_528_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_529", "Parameter_530", "Convolution_528", "Parameter_531", - "Parameter_532" - ], - "name" : "BatchNormInference_533", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_533_0"] - }, - { - "inputs" : ["BatchNormInference_533"], - "name" : "Relu_534", - "op" : "Relu", - "outputs" : ["Relu_534_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_534", "Parameter_535" ], - "name" : "Convolution_536", - "op" : "Convolution", - "outputs" : ["Convolution_536_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_520", "Convolution_536" ], - "name" : "Concat_537", - "op" : "Concat", - "outputs" : ["Concat_537_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_538", "Parameter_539", "Concat_537", "Parameter_540", - "Parameter_541" - ], - "name" : "BatchNormInference_542", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_542_0"] - }, - { - "inputs" : ["BatchNormInference_542"], - "name" : "Relu_543", - "op" : "Relu", - "outputs" : ["Relu_543_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_543", "Parameter_544" ], - "name" : "Convolution_545", - "op" : "Convolution", - "outputs" : ["Convolution_545_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_546", "Parameter_547", "Convolution_545", "Parameter_548", - "Parameter_549" - ], - "name" : "BatchNormInference_550", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_550_0"] - }, - { - "inputs" : ["BatchNormInference_550"], - "name" : "Relu_551", - "op" : "Relu", - "outputs" : ["Relu_551_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_551", "Parameter_552" ], - "name" : "Convolution_553", - "op" : "Convolution", - "outputs" : ["Convolution_553_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_537", "Convolution_553" ], - "name" : "Concat_554", - "op" : "Concat", - "outputs" : ["Concat_554_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_555", "Parameter_556", "Concat_554", "Parameter_557", - "Parameter_558" - ], - "name" : "BatchNormInference_559", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_559_0"] - }, - { - "inputs" : ["BatchNormInference_559"], - "name" : "Relu_560", - "op" : "Relu", - "outputs" : ["Relu_560_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_560", "Parameter_561" ], - "name" : "Convolution_562", - "op" : "Convolution", - "outputs" : ["Convolution_562_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_563", "Parameter_564", "Convolution_562", "Parameter_565", - "Parameter_566" - ], - "name" : "BatchNormInference_567", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_567_0"] - }, - { - "inputs" : ["BatchNormInference_567"], - "name" : "Relu_568", - "op" : "Relu", - "outputs" : ["Relu_568_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_568", "Parameter_569" ], - "name" : "Convolution_570", - "op" : "Convolution", - "outputs" : ["Convolution_570_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_554", "Convolution_570" ], - "name" : "Concat_571", - "op" : "Concat", - "outputs" : ["Concat_571_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_572", "Parameter_573", "Concat_571", "Parameter_574", - "Parameter_575" - ], - "name" : "BatchNormInference_576", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_576_0"] - }, - { - "inputs" : ["BatchNormInference_576"], - "name" : "Relu_577", - "op" : "Relu", - "outputs" : ["Relu_577_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_577", "Parameter_578" ], - "name" : "Convolution_579", - "op" : "Convolution", - "outputs" : ["Convolution_579_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_580", "Parameter_581", "Convolution_579", "Parameter_582", - "Parameter_583" - ], - "name" : "BatchNormInference_584", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_584_0"] - }, - { - "inputs" : ["BatchNormInference_584"], - "name" : "Relu_585", - "op" : "Relu", - "outputs" : ["Relu_585_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_585", "Parameter_586" ], - "name" : "Convolution_587", - "op" : "Convolution", - "outputs" : ["Convolution_587_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_571", "Convolution_587" ], - "name" : "Concat_588", - "op" : "Concat", - "outputs" : ["Concat_588_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_589", "Parameter_590", "Concat_588", "Parameter_591", - "Parameter_592" - ], - "name" : "BatchNormInference_593", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_593_0"] - }, - { - "inputs" : ["BatchNormInference_593"], - "name" : "Relu_594", - "op" : "Relu", - "outputs" : ["Relu_594_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_594", "Parameter_595" ], - "name" : "Convolution_596", - "op" : "Convolution", - "outputs" : ["Convolution_596_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_597", "Parameter_598", "Convolution_596", "Parameter_599", - "Parameter_600" - ], - "name" : "BatchNormInference_601", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_601_0"] - }, - { - "inputs" : ["BatchNormInference_601"], - "name" : "Relu_602", - "op" : "Relu", - "outputs" : ["Relu_602_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_602", "Parameter_603" ], - "name" : "Convolution_604", - "op" : "Convolution", - "outputs" : ["Convolution_604_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_588", "Convolution_604" ], - "name" : "Concat_605", - "op" : "Concat", - "outputs" : ["Concat_605_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_606", "Parameter_607", "Concat_605", "Parameter_608", - "Parameter_609" - ], - "name" : "BatchNormInference_610", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_610_0"] - }, - { - "inputs" : ["BatchNormInference_610"], - "name" : "Relu_611", - "op" : "Relu", - "outputs" : ["Relu_611_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_611", "Parameter_612" ], - "name" : "Convolution_613", - "op" : "Convolution", - "outputs" : ["Convolution_613_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_614", "Parameter_615", "Convolution_613", "Parameter_616", - "Parameter_617" - ], - "name" : "BatchNormInference_618", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_618_0"] - }, - { - "inputs" : ["BatchNormInference_618"], - "name" : "Relu_619", - "op" : "Relu", - "outputs" : ["Relu_619_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_619", "Parameter_620" ], - "name" : "Convolution_621", - "op" : "Convolution", - "outputs" : ["Convolution_621_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_605", "Convolution_621" ], - "name" : "Concat_622", - "op" : "Concat", - "outputs" : ["Concat_622_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_623", "Parameter_624", "Concat_622", "Parameter_625", - "Parameter_626" - ], - "name" : "BatchNormInference_627", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_627_0"] - }, - { - "inputs" : ["BatchNormInference_627"], - "name" : "Relu_628", - "op" : "Relu", - "outputs" : ["Relu_628_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_628", "Parameter_629" ], - "name" : "Convolution_630", - "op" : "Convolution", - "outputs" : ["Convolution_630_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_631", "Parameter_632", "Convolution_630", "Parameter_633", - "Parameter_634" - ], - "name" : "BatchNormInference_635", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_635_0"] - }, - { - "inputs" : ["BatchNormInference_635"], - "name" : "Relu_636", - "op" : "Relu", - "outputs" : ["Relu_636_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_636", "Parameter_637" ], - "name" : "Convolution_638", - "op" : "Convolution", - "outputs" : ["Convolution_638_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_622", "Convolution_638" ], - "name" : "Concat_639", - "op" : "Concat", - "outputs" : ["Concat_639_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_640", "Parameter_641", "Concat_639", "Parameter_642", - "Parameter_643" - ], - "name" : "BatchNormInference_644", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_644_0"] - }, - { - "inputs" : ["BatchNormInference_644"], - "name" : "Relu_645", - "op" : "Relu", - "outputs" : ["Relu_645_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_645", "Parameter_646" ], - "name" : "Convolution_647", - "op" : "Convolution", - "outputs" : ["Convolution_647_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_648", "Parameter_649", "Convolution_647", "Parameter_650", - "Parameter_651" - ], - "name" : "BatchNormInference_652", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_652_0"] - }, - { - "inputs" : ["BatchNormInference_652"], - "name" : "Relu_653", - "op" : "Relu", - "outputs" : ["Relu_653_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_653", "Parameter_654" ], - "name" : "Convolution_655", - "op" : "Convolution", - "outputs" : ["Convolution_655_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_639", "Convolution_655" ], - "name" : "Concat_656", - "op" : "Concat", - "outputs" : ["Concat_656_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_657", "Parameter_658", "Concat_656", "Parameter_659", - "Parameter_660" - ], - "name" : "BatchNormInference_661", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_661_0"] - }, - { - "inputs" : ["BatchNormInference_661"], - "name" : "Relu_662", - "op" : "Relu", - "outputs" : ["Relu_662_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_662", "Parameter_663" ], - "name" : "Convolution_664", - "op" : "Convolution", - "outputs" : ["Convolution_664_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_665", "Parameter_666", "Convolution_664", "Parameter_667", - "Parameter_668" - ], - "name" : "BatchNormInference_669", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_669_0"] - }, - { - "inputs" : ["BatchNormInference_669"], - "name" : "Relu_670", - "op" : "Relu", - "outputs" : ["Relu_670_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_670", "Parameter_671" ], - "name" : "Convolution_672", - "op" : "Convolution", - "outputs" : ["Convolution_672_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_656", "Convolution_672" ], - "name" : "Concat_673", - "op" : "Concat", - "outputs" : ["Concat_673_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_674", "Parameter_675", "Concat_673", "Parameter_676", - "Parameter_677" - ], - "name" : "BatchNormInference_678", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_678_0"] - }, - { - "inputs" : ["BatchNormInference_678"], - "name" : "Relu_679", - "op" : "Relu", - "outputs" : ["Relu_679_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_679", "Parameter_680" ], - "name" : "Convolution_681", - "op" : "Convolution", - "outputs" : ["Convolution_681_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_682", "Parameter_683", "Convolution_681", "Parameter_684", - "Parameter_685" - ], - "name" : "BatchNormInference_686", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_686_0"] - }, - { - "inputs" : ["BatchNormInference_686"], - "name" : "Relu_687", - "op" : "Relu", - "outputs" : ["Relu_687_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_687", "Parameter_688" ], - "name" : "Convolution_689", - "op" : "Convolution", - "outputs" : ["Convolution_689_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_673", "Convolution_689" ], - "name" : "Concat_690", - "op" : "Concat", - "outputs" : ["Concat_690_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_691", "Parameter_692", "Concat_690", "Parameter_693", - "Parameter_694" - ], - "name" : "BatchNormInference_695", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_695_0"] - }, - { - "inputs" : ["BatchNormInference_695"], - "name" : "Relu_696", - "op" : "Relu", - "outputs" : ["Relu_696_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_696", "Parameter_697" ], - "name" : "Convolution_698", - "op" : "Convolution", - "outputs" : ["Convolution_698_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_699", "Parameter_700", "Convolution_698", "Parameter_701", - "Parameter_702" - ], - "name" : "BatchNormInference_703", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_703_0"] - }, - { - "inputs" : ["BatchNormInference_703"], - "name" : "Relu_704", - "op" : "Relu", - "outputs" : ["Relu_704_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_704", "Parameter_705" ], - "name" : "Convolution_706", - "op" : "Convolution", - "outputs" : ["Convolution_706_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_690", "Convolution_706" ], - "name" : "Concat_707", - "op" : "Concat", - "outputs" : ["Concat_707_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_708", "Parameter_709", "Concat_707", "Parameter_710", - "Parameter_711" - ], - "name" : "BatchNormInference_712", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_712_0"] - }, - { - "inputs" : ["BatchNormInference_712"], - "name" : "Relu_713", - "op" : "Relu", - "outputs" : ["Relu_713_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_713", "Parameter_714" ], - "name" : "Convolution_715", - "op" : "Convolution", - "outputs" : ["Convolution_715_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_716", "Parameter_717", "Convolution_715", "Parameter_718", - "Parameter_719" - ], - "name" : "BatchNormInference_720", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_720_0"] - }, - { - "inputs" : ["BatchNormInference_720"], - "name" : "Relu_721", - "op" : "Relu", - "outputs" : ["Relu_721_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_721", "Parameter_722" ], - "name" : "Convolution_723", - "op" : "Convolution", - "outputs" : ["Convolution_723_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_707", "Convolution_723" ], - "name" : "Concat_724", - "op" : "Concat", - "outputs" : ["Concat_724_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_725", "Parameter_726", "Concat_724", "Parameter_727", - "Parameter_728" - ], - "name" : "BatchNormInference_729", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_729_0"] - }, - { - "inputs" : ["BatchNormInference_729"], - "name" : "Relu_730", - "op" : "Relu", - "outputs" : ["Relu_730_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_730", "Parameter_731" ], - "name" : "Convolution_732", - "op" : "Convolution", - "outputs" : ["Convolution_732_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_733", "Parameter_734", "Convolution_732", "Parameter_735", - "Parameter_736" - ], - "name" : "BatchNormInference_737", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_737_0"] - }, - { - "inputs" : ["BatchNormInference_737"], - "name" : "Relu_738", - "op" : "Relu", - "outputs" : ["Relu_738_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_738", "Parameter_739" ], - "name" : "Convolution_740", - "op" : "Convolution", - "outputs" : ["Convolution_740_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_724", "Convolution_740" ], - "name" : "Concat_741", - "op" : "Concat", - "outputs" : ["Concat_741_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_742", "Parameter_743", "Concat_741", "Parameter_744", - "Parameter_745" - ], - "name" : "BatchNormInference_746", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_746_0"] - }, - { - "inputs" : ["BatchNormInference_746"], - "name" : "Relu_747", - "op" : "Relu", - "outputs" : ["Relu_747_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_747", "Parameter_748" ], - "name" : "Convolution_749", - "op" : "Convolution", - "outputs" : ["Convolution_749_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "include_padding_in_avg_computation" : true, - "inputs" : ["Convolution_749"], - "name" : "AvgPool_750", - "op" : "AvgPool", - "outputs" : ["AvgPool_750_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_751", "Parameter_752", "AvgPool_750", "Parameter_753", - "Parameter_754" - ], - "name" : "BatchNormInference_755", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_755_0"] - }, - { - "inputs" : ["BatchNormInference_755"], - "name" : "Relu_756", - "op" : "Relu", - "outputs" : ["Relu_756_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_756", "Parameter_757" ], - "name" : "Convolution_758", - "op" : "Convolution", - "outputs" : ["Convolution_758_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_759", "Parameter_760", "Convolution_758", "Parameter_761", - "Parameter_762" - ], - "name" : "BatchNormInference_763", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_763_0"] - }, - { - "inputs" : ["BatchNormInference_763"], - "name" : "Relu_764", - "op" : "Relu", - "outputs" : ["Relu_764_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_764", "Parameter_765" ], - "name" : "Convolution_766", - "op" : "Convolution", - "outputs" : ["Convolution_766_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "AvgPool_750", "Convolution_766" ], - "name" : "Concat_767", - "op" : "Concat", - "outputs" : ["Concat_767_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_768", "Parameter_769", "Concat_767", "Parameter_770", - "Parameter_771" - ], - "name" : "BatchNormInference_772", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_772_0"] - }, - { - "inputs" : ["BatchNormInference_772"], - "name" : "Relu_773", - "op" : "Relu", - "outputs" : ["Relu_773_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_773", "Parameter_774" ], - "name" : "Convolution_775", - "op" : "Convolution", - "outputs" : ["Convolution_775_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_776", "Parameter_777", "Convolution_775", "Parameter_778", - "Parameter_779" - ], - "name" : "BatchNormInference_780", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_780_0"] - }, - { - "inputs" : ["BatchNormInference_780"], - "name" : "Relu_781", - "op" : "Relu", - "outputs" : ["Relu_781_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_781", "Parameter_782" ], - "name" : "Convolution_783", - "op" : "Convolution", - "outputs" : ["Convolution_783_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_767", "Convolution_783" ], - "name" : "Concat_784", - "op" : "Concat", - "outputs" : ["Concat_784_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_785", "Parameter_786", "Concat_784", "Parameter_787", - "Parameter_788" - ], - "name" : "BatchNormInference_789", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_789_0"] - }, - { - "inputs" : ["BatchNormInference_789"], - "name" : "Relu_790", - "op" : "Relu", - "outputs" : ["Relu_790_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_790", "Parameter_791" ], - "name" : "Convolution_792", - "op" : "Convolution", - "outputs" : ["Convolution_792_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_793", "Parameter_794", "Convolution_792", "Parameter_795", - "Parameter_796" - ], - "name" : "BatchNormInference_797", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_797_0"] - }, - { - "inputs" : ["BatchNormInference_797"], - "name" : "Relu_798", - "op" : "Relu", - "outputs" : ["Relu_798_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_798", "Parameter_799" ], - "name" : "Convolution_800", - "op" : "Convolution", - "outputs" : ["Convolution_800_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_784", "Convolution_800" ], - "name" : "Concat_801", - "op" : "Concat", - "outputs" : ["Concat_801_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_802", "Parameter_803", "Concat_801", "Parameter_804", - "Parameter_805" - ], - "name" : "BatchNormInference_806", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_806_0"] - }, - { - "inputs" : ["BatchNormInference_806"], - "name" : "Relu_807", - "op" : "Relu", - "outputs" : ["Relu_807_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_807", "Parameter_808" ], - "name" : "Convolution_809", - "op" : "Convolution", - "outputs" : ["Convolution_809_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_810", "Parameter_811", "Convolution_809", "Parameter_812", - "Parameter_813" - ], - "name" : "BatchNormInference_814", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_814_0"] - }, - { - "inputs" : ["BatchNormInference_814"], - "name" : "Relu_815", - "op" : "Relu", - "outputs" : ["Relu_815_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_815", "Parameter_816" ], - "name" : "Convolution_817", - "op" : "Convolution", - "outputs" : ["Convolution_817_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_801", "Convolution_817" ], - "name" : "Concat_818", - "op" : "Concat", - "outputs" : ["Concat_818_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_819", "Parameter_820", "Concat_818", "Parameter_821", - "Parameter_822" - ], - "name" : "BatchNormInference_823", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_823_0"] - }, - { - "inputs" : ["BatchNormInference_823"], - "name" : "Relu_824", - "op" : "Relu", - "outputs" : ["Relu_824_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_824", "Parameter_825" ], - "name" : "Convolution_826", - "op" : "Convolution", - "outputs" : ["Convolution_826_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_827", "Parameter_828", "Convolution_826", "Parameter_829", - "Parameter_830" - ], - "name" : "BatchNormInference_831", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_831_0"] - }, - { - "inputs" : ["BatchNormInference_831"], - "name" : "Relu_832", - "op" : "Relu", - "outputs" : ["Relu_832_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_832", "Parameter_833" ], - "name" : "Convolution_834", - "op" : "Convolution", - "outputs" : ["Convolution_834_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_818", "Convolution_834" ], - "name" : "Concat_835", - "op" : "Concat", - "outputs" : ["Concat_835_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_836", "Parameter_837", "Concat_835", "Parameter_838", - "Parameter_839" - ], - "name" : "BatchNormInference_840", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_840_0"] - }, - { - "inputs" : ["BatchNormInference_840"], - "name" : "Relu_841", - "op" : "Relu", - "outputs" : ["Relu_841_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_841", "Parameter_842" ], - "name" : "Convolution_843", - "op" : "Convolution", - "outputs" : ["Convolution_843_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_844", "Parameter_845", "Convolution_843", "Parameter_846", - "Parameter_847" - ], - "name" : "BatchNormInference_848", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_848_0"] - }, - { - "inputs" : ["BatchNormInference_848"], - "name" : "Relu_849", - "op" : "Relu", - "outputs" : ["Relu_849_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_849", "Parameter_850" ], - "name" : "Convolution_851", - "op" : "Convolution", - "outputs" : ["Convolution_851_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_835", "Convolution_851" ], - "name" : "Concat_852", - "op" : "Concat", - "outputs" : ["Concat_852_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_853", "Parameter_854", "Concat_852", "Parameter_855", - "Parameter_856" - ], - "name" : "BatchNormInference_857", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_857_0"] - }, - { - "inputs" : ["BatchNormInference_857"], - "name" : "Relu_858", - "op" : "Relu", - "outputs" : ["Relu_858_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_858", "Parameter_859" ], - "name" : "Convolution_860", - "op" : "Convolution", - "outputs" : ["Convolution_860_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_861", "Parameter_862", "Convolution_860", "Parameter_863", - "Parameter_864" - ], - "name" : "BatchNormInference_865", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_865_0"] - }, - { - "inputs" : ["BatchNormInference_865"], - "name" : "Relu_866", - "op" : "Relu", - "outputs" : ["Relu_866_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_866", "Parameter_867" ], - "name" : "Convolution_868", - "op" : "Convolution", - "outputs" : ["Convolution_868_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_852", "Convolution_868" ], - "name" : "Concat_869", - "op" : "Concat", - "outputs" : ["Concat_869_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_870", "Parameter_871", "Concat_869", "Parameter_872", - "Parameter_873" - ], - "name" : "BatchNormInference_874", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_874_0"] - }, - { - "inputs" : ["BatchNormInference_874"], - "name" : "Relu_875", - "op" : "Relu", - "outputs" : ["Relu_875_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_875", "Parameter_876" ], - "name" : "Convolution_877", - "op" : "Convolution", - "outputs" : ["Convolution_877_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_878", "Parameter_879", "Convolution_877", "Parameter_880", - "Parameter_881" - ], - "name" : "BatchNormInference_882", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_882_0"] - }, - { - "inputs" : ["BatchNormInference_882"], - "name" : "Relu_883", - "op" : "Relu", - "outputs" : ["Relu_883_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_883", "Parameter_884" ], - "name" : "Convolution_885", - "op" : "Convolution", - "outputs" : ["Convolution_885_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_869", "Convolution_885" ], - "name" : "Concat_886", - "op" : "Concat", - "outputs" : ["Concat_886_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_887", "Parameter_888", "Concat_886", "Parameter_889", - "Parameter_890" - ], - "name" : "BatchNormInference_891", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_891_0"] - }, - { - "inputs" : ["BatchNormInference_891"], - "name" : "Relu_892", - "op" : "Relu", - "outputs" : ["Relu_892_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_892", "Parameter_893" ], - "name" : "Convolution_894", - "op" : "Convolution", - "outputs" : ["Convolution_894_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_895", "Parameter_896", "Convolution_894", "Parameter_897", - "Parameter_898" - ], - "name" : "BatchNormInference_899", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_899_0"] - }, - { - "inputs" : ["BatchNormInference_899"], - "name" : "Relu_900", - "op" : "Relu", - "outputs" : ["Relu_900_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_900", "Parameter_901" ], - "name" : "Convolution_902", - "op" : "Convolution", - "outputs" : ["Convolution_902_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_886", "Convolution_902" ], - "name" : "Concat_903", - "op" : "Concat", - "outputs" : ["Concat_903_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_904", "Parameter_905", "Concat_903", "Parameter_906", - "Parameter_907" - ], - "name" : "BatchNormInference_908", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_908_0"] - }, - { - "inputs" : ["BatchNormInference_908"], - "name" : "Relu_909", - "op" : "Relu", - "outputs" : ["Relu_909_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_909", "Parameter_910" ], - "name" : "Convolution_911", - "op" : "Convolution", - "outputs" : ["Convolution_911_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_912", "Parameter_913", "Convolution_911", "Parameter_914", - "Parameter_915" - ], - "name" : "BatchNormInference_916", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_916_0"] - }, - { - "inputs" : ["BatchNormInference_916"], - "name" : "Relu_917", - "op" : "Relu", - "outputs" : ["Relu_917_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_917", "Parameter_918" ], - "name" : "Convolution_919", - "op" : "Convolution", - "outputs" : ["Convolution_919_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_903", "Convolution_919" ], - "name" : "Concat_920", - "op" : "Concat", - "outputs" : ["Concat_920_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_921", "Parameter_922", "Concat_920", "Parameter_923", - "Parameter_924" - ], - "name" : "BatchNormInference_925", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_925_0"] - }, - { - "inputs" : ["BatchNormInference_925"], - "name" : "Relu_926", - "op" : "Relu", - "outputs" : ["Relu_926_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_926", "Parameter_927" ], - "name" : "Convolution_928", - "op" : "Convolution", - "outputs" : ["Convolution_928_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_929", "Parameter_930", "Convolution_928", "Parameter_931", - "Parameter_932" - ], - "name" : "BatchNormInference_933", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_933_0"] - }, - { - "inputs" : ["BatchNormInference_933"], - "name" : "Relu_934", - "op" : "Relu", - "outputs" : ["Relu_934_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_934", "Parameter_935" ], - "name" : "Convolution_936", - "op" : "Convolution", - "outputs" : ["Convolution_936_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_920", "Convolution_936" ], - "name" : "Concat_937", - "op" : "Concat", - "outputs" : ["Concat_937_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_938", "Parameter_939", "Concat_937", "Parameter_940", - "Parameter_941" - ], - "name" : "BatchNormInference_942", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_942_0"] - }, - { - "inputs" : ["BatchNormInference_942"], - "name" : "Relu_943", - "op" : "Relu", - "outputs" : ["Relu_943_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_943", "Parameter_944" ], - "name" : "Convolution_945", - "op" : "Convolution", - "outputs" : ["Convolution_945_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_946", "Parameter_947", "Convolution_945", "Parameter_948", - "Parameter_949" - ], - "name" : "BatchNormInference_950", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_950_0"] - }, - { - "inputs" : ["BatchNormInference_950"], - "name" : "Relu_951", - "op" : "Relu", - "outputs" : ["Relu_951_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_951", "Parameter_952" ], - "name" : "Convolution_953", - "op" : "Convolution", - "outputs" : ["Convolution_953_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_937", "Convolution_953" ], - "name" : "Concat_954", - "op" : "Concat", - "outputs" : ["Concat_954_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_955", "Parameter_956", "Concat_954", "Parameter_957", - "Parameter_958" - ], - "name" : "BatchNormInference_959", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_959_0"] - }, - { - "inputs" : ["BatchNormInference_959"], - "name" : "Relu_960", - "op" : "Relu", - "outputs" : ["Relu_960_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_960", "Parameter_961" ], - "name" : "Convolution_962", - "op" : "Convolution", - "outputs" : ["Convolution_962_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_963", "Parameter_964", "Convolution_962", "Parameter_965", - "Parameter_966" - ], - "name" : "BatchNormInference_967", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_967_0"] - }, - { - "inputs" : ["BatchNormInference_967"], - "name" : "Relu_968", - "op" : "Relu", - "outputs" : ["Relu_968_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_968", "Parameter_969" ], - "name" : "Convolution_970", - "op" : "Convolution", - "outputs" : ["Convolution_970_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_954", "Convolution_970" ], - "name" : "Concat_971", - "op" : "Concat", - "outputs" : ["Concat_971_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_972", "Parameter_973", "Concat_971", "Parameter_974", - "Parameter_975" - ], - "name" : "BatchNormInference_976", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_976_0"] - }, - { - "inputs" : ["BatchNormInference_976"], - "name" : "Relu_977", - "op" : "Relu", - "outputs" : ["Relu_977_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_977", "Parameter_978" ], - "name" : "Convolution_979", - "op" : "Convolution", - "outputs" : ["Convolution_979_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_980", "Parameter_981", "Convolution_979", "Parameter_982", - "Parameter_983" - ], - "name" : "BatchNormInference_984", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_984_0"] - }, - { - "inputs" : ["BatchNormInference_984"], - "name" : "Relu_985", - "op" : "Relu", - "outputs" : ["Relu_985_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_985", "Parameter_986" ], - "name" : "Convolution_987", - "op" : "Convolution", - "outputs" : ["Convolution_987_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_971", "Convolution_987" ], - "name" : "Concat_988", - "op" : "Concat", - "outputs" : ["Concat_988_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_989", "Parameter_990", "Concat_988", "Parameter_991", - "Parameter_992" - ], - "name" : "BatchNormInference_993", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_993_0"] - }, - { - "inputs" : ["BatchNormInference_993"], - "name" : "Relu_994", - "op" : "Relu", - "outputs" : ["Relu_994_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_994", "Parameter_995" ], - "name" : "Convolution_996", - "op" : "Convolution", - "outputs" : ["Convolution_996_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_997", "Parameter_998", "Convolution_996", "Parameter_999", - "Parameter_1000" - ], - "name" : "BatchNormInference_1001", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_1001_0"] - }, - { - "inputs" : ["BatchNormInference_1001"], - "name" : "Relu_1002", - "op" : "Relu", - "outputs" : ["Relu_1002_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_1002", "Parameter_1003" ], - "name" : "Convolution_1004", - "op" : "Convolution", - "outputs" : ["Convolution_1004_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_988", "Convolution_1004" ], - "name" : "Concat_1005", - "op" : "Concat", - "outputs" : ["Concat_1005_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_1006", "Parameter_1007", "Concat_1005", "Parameter_1008", - "Parameter_1009" - ], - "name" : "BatchNormInference_1010", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_1010_0"] - }, - { - "inputs" : ["BatchNormInference_1010"], - "name" : "Relu_1011", - "op" : "Relu", - "outputs" : ["Relu_1011_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_1011", "Parameter_1012" ], - "name" : "Convolution_1013", - "op" : "Convolution", - "outputs" : ["Convolution_1013_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_1014", "Parameter_1015", "Convolution_1013", - "Parameter_1016", "Parameter_1017" - ], - "name" : "BatchNormInference_1018", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_1018_0"] - }, - { - "inputs" : ["BatchNormInference_1018"], - "name" : "Relu_1019", - "op" : "Relu", - "outputs" : ["Relu_1019_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Relu_1019", "Parameter_1020" ], - "name" : "Convolution_1021", - "op" : "Convolution", - "outputs" : ["Convolution_1021_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "axis" : 1, - "inputs" : [ "Concat_1005", "Convolution_1021" ], - "name" : "Concat_1022", - "op" : "Concat", - "outputs" : ["Concat_1022_0"] - }, - { - "eps" : 9.999999747378752e-06, - "inputs" : [ - "Parameter_1023", "Parameter_1024", "Concat_1022", "Parameter_1025", - "Parameter_1026" - ], - "name" : "BatchNormInference_1027", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_1027_0"] - }, - { - "inputs" : ["BatchNormInference_1027"], - "name" : "Relu_1028", - "op" : "Relu", - "outputs" : ["Relu_1028_0"] - }, - { - "include_padding_in_avg_computation" : true, - "inputs" : ["Relu_1028"], - "name" : "AvgPool_1029", - "op" : "AvgPool", - "outputs" : ["AvgPool_1029_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 7, 7 ], - "window_shape" : [ 7, 7 ] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["AvgPool_1029"], - "name" : "Reshape_1030", - "op" : "Reshape", - "output_shape" : [ 1, 1024 ], - "outputs" : ["Reshape_1030_0"] - }, - { - "inputs" : [ "Reshape_1030", "Reshape_1033" ], - "name" : "Dot_1034", - "op" : "Dot", - "outputs" : ["Dot_1034_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_1034", "Reshape_1035" ], - "name" : "Add_1036", - "op" : "Add", - "outputs" : ["Add_1036_0"] - }, - { - "inputs" : ["Add_1036"], - "name" : "Softmax_1038", - "op" : "Softmax", - "outputs" : ["Softmax_1038_0"], - "softmax_axes" : [1] - }, - { - "inputs" : ["Softmax_1038"], - "name" : "Result_1039", - "op" : "Result", - "outputs" : ["Result_1039_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_1", "Parameter_3", "Parameter_4", - "Parameter_5", "Parameter_6", "Parameter_10", "Parameter_11", - "Parameter_12", "Parameter_13", "Parameter_16", "Parameter_18", - "Parameter_19", "Parameter_20", "Parameter_21", "Parameter_24", - "Parameter_27", "Parameter_28", "Parameter_29", "Parameter_30", - "Parameter_33", "Parameter_35", "Parameter_36", "Parameter_37", - "Parameter_38", "Parameter_41", "Parameter_44", "Parameter_45", - "Parameter_46", "Parameter_47", "Parameter_50", "Parameter_52", - "Parameter_53", "Parameter_54", "Parameter_55", "Parameter_58", - "Parameter_61", "Parameter_62", "Parameter_63", "Parameter_64", - "Parameter_67", "Parameter_69", "Parameter_70", "Parameter_71", - "Parameter_72", "Parameter_75", "Parameter_78", "Parameter_79", - "Parameter_80", "Parameter_81", "Parameter_84", "Parameter_86", - "Parameter_87", "Parameter_88", "Parameter_89", "Parameter_92", - "Parameter_95", "Parameter_96", "Parameter_97", "Parameter_98", - "Parameter_101", "Parameter_103", "Parameter_104", "Parameter_105", - "Parameter_106", "Parameter_109", "Parameter_112", "Parameter_113", - "Parameter_114", "Parameter_115", "Parameter_118", "Parameter_121", - "Parameter_122", "Parameter_123", "Parameter_124", "Parameter_127", - "Parameter_129", "Parameter_130", "Parameter_131", "Parameter_132", - "Parameter_135", "Parameter_138", "Parameter_139", "Parameter_140", - "Parameter_141", "Parameter_144", "Parameter_146", "Parameter_147", - "Parameter_148", "Parameter_149", "Parameter_152", "Parameter_155", - "Parameter_156", "Parameter_157", "Parameter_158", "Parameter_161", - "Parameter_163", "Parameter_164", "Parameter_165", "Parameter_166", - "Parameter_169", "Parameter_172", "Parameter_173", "Parameter_174", - "Parameter_175", "Parameter_178", "Parameter_180", "Parameter_181", - "Parameter_182", "Parameter_183", "Parameter_186", "Parameter_189", - "Parameter_190", "Parameter_191", "Parameter_192", "Parameter_195", - "Parameter_197", "Parameter_198", "Parameter_199", "Parameter_200", - "Parameter_203", "Parameter_206", "Parameter_207", "Parameter_208", - "Parameter_209", "Parameter_212", "Parameter_214", "Parameter_215", - "Parameter_216", "Parameter_217", "Parameter_220", "Parameter_223", - "Parameter_224", "Parameter_225", "Parameter_226", "Parameter_229", - "Parameter_231", "Parameter_232", "Parameter_233", "Parameter_234", - "Parameter_237", "Parameter_240", "Parameter_241", "Parameter_242", - "Parameter_243", "Parameter_246", "Parameter_248", "Parameter_249", - "Parameter_250", "Parameter_251", "Parameter_254", "Parameter_257", - "Parameter_258", "Parameter_259", "Parameter_260", "Parameter_263", - "Parameter_265", "Parameter_266", "Parameter_267", "Parameter_268", - "Parameter_271", "Parameter_274", "Parameter_275", "Parameter_276", - "Parameter_277", "Parameter_280", "Parameter_282", "Parameter_283", - "Parameter_284", "Parameter_285", "Parameter_288", "Parameter_291", - "Parameter_292", "Parameter_293", "Parameter_294", "Parameter_297", - "Parameter_299", "Parameter_300", "Parameter_301", "Parameter_302", - "Parameter_305", "Parameter_308", "Parameter_309", "Parameter_310", - "Parameter_311", "Parameter_314", "Parameter_316", "Parameter_317", - "Parameter_318", "Parameter_319", "Parameter_322", "Parameter_325", - "Parameter_326", "Parameter_327", "Parameter_328", "Parameter_331", - "Parameter_334", "Parameter_335", "Parameter_336", "Parameter_337", - "Parameter_340", "Parameter_342", "Parameter_343", "Parameter_344", - "Parameter_345", "Parameter_348", "Parameter_351", "Parameter_352", - "Parameter_353", "Parameter_354", "Parameter_357", "Parameter_359", - "Parameter_360", "Parameter_361", "Parameter_362", "Parameter_365", - "Parameter_368", "Parameter_369", "Parameter_370", "Parameter_371", - "Parameter_374", "Parameter_376", "Parameter_377", "Parameter_378", - "Parameter_379", "Parameter_382", "Parameter_385", "Parameter_386", - "Parameter_387", "Parameter_388", "Parameter_391", "Parameter_393", - "Parameter_394", "Parameter_395", "Parameter_396", "Parameter_399", - "Parameter_402", "Parameter_403", "Parameter_404", "Parameter_405", - "Parameter_408", "Parameter_410", "Parameter_411", "Parameter_412", - "Parameter_413", "Parameter_416", "Parameter_419", "Parameter_420", - "Parameter_421", "Parameter_422", "Parameter_425", "Parameter_427", - "Parameter_428", "Parameter_429", "Parameter_430", "Parameter_433", - "Parameter_436", "Parameter_437", "Parameter_438", "Parameter_439", - "Parameter_442", "Parameter_444", "Parameter_445", "Parameter_446", - "Parameter_447", "Parameter_450", "Parameter_453", "Parameter_454", - "Parameter_455", "Parameter_456", "Parameter_459", "Parameter_461", - "Parameter_462", "Parameter_463", "Parameter_464", "Parameter_467", - "Parameter_470", "Parameter_471", "Parameter_472", "Parameter_473", - "Parameter_476", "Parameter_478", "Parameter_479", "Parameter_480", - "Parameter_481", "Parameter_484", "Parameter_487", "Parameter_488", - "Parameter_489", "Parameter_490", "Parameter_493", "Parameter_495", - "Parameter_496", "Parameter_497", "Parameter_498", "Parameter_501", - "Parameter_504", "Parameter_505", "Parameter_506", "Parameter_507", - "Parameter_510", "Parameter_512", "Parameter_513", "Parameter_514", - "Parameter_515", "Parameter_518", "Parameter_521", "Parameter_522", - "Parameter_523", "Parameter_524", "Parameter_527", "Parameter_529", - "Parameter_530", "Parameter_531", "Parameter_532", "Parameter_535", - "Parameter_538", "Parameter_539", "Parameter_540", "Parameter_541", - "Parameter_544", "Parameter_546", "Parameter_547", "Parameter_548", - "Parameter_549", "Parameter_552", "Parameter_555", "Parameter_556", - "Parameter_557", "Parameter_558", "Parameter_561", "Parameter_563", - "Parameter_564", "Parameter_565", "Parameter_566", "Parameter_569", - "Parameter_572", "Parameter_573", "Parameter_574", "Parameter_575", - "Parameter_578", "Parameter_580", "Parameter_581", "Parameter_582", - "Parameter_583", "Parameter_586", "Parameter_589", "Parameter_590", - "Parameter_591", "Parameter_592", "Parameter_595", "Parameter_597", - "Parameter_598", "Parameter_599", "Parameter_600", "Parameter_603", - "Parameter_606", "Parameter_607", "Parameter_608", "Parameter_609", - "Parameter_612", "Parameter_614", "Parameter_615", "Parameter_616", - "Parameter_617", "Parameter_620", "Parameter_623", "Parameter_624", - "Parameter_625", "Parameter_626", "Parameter_629", "Parameter_631", - "Parameter_632", "Parameter_633", "Parameter_634", "Parameter_637", - "Parameter_640", "Parameter_641", "Parameter_642", "Parameter_643", - "Parameter_646", "Parameter_648", "Parameter_649", "Parameter_650", - "Parameter_651", "Parameter_654", "Parameter_657", "Parameter_658", - "Parameter_659", "Parameter_660", "Parameter_663", "Parameter_665", - "Parameter_666", "Parameter_667", "Parameter_668", "Parameter_671", - "Parameter_674", "Parameter_675", "Parameter_676", "Parameter_677", - "Parameter_680", "Parameter_682", "Parameter_683", "Parameter_684", - "Parameter_685", "Parameter_688", "Parameter_691", "Parameter_692", - "Parameter_693", "Parameter_694", "Parameter_697", "Parameter_699", - "Parameter_700", "Parameter_701", "Parameter_702", "Parameter_705", - "Parameter_708", "Parameter_709", "Parameter_710", "Parameter_711", - "Parameter_714", "Parameter_716", "Parameter_717", "Parameter_718", - "Parameter_719", "Parameter_722", "Parameter_725", "Parameter_726", - "Parameter_727", "Parameter_728", "Parameter_731", "Parameter_733", - "Parameter_734", "Parameter_735", "Parameter_736", "Parameter_739", - "Parameter_742", "Parameter_743", "Parameter_744", "Parameter_745", - "Parameter_748", "Parameter_751", "Parameter_752", "Parameter_753", - "Parameter_754", "Parameter_757", "Parameter_759", "Parameter_760", - "Parameter_761", "Parameter_762", "Parameter_765", "Parameter_768", - "Parameter_769", "Parameter_770", "Parameter_771", "Parameter_774", - "Parameter_776", "Parameter_777", "Parameter_778", "Parameter_779", - "Parameter_782", "Parameter_785", "Parameter_786", "Parameter_787", - "Parameter_788", "Parameter_791", "Parameter_793", "Parameter_794", - "Parameter_795", "Parameter_796", "Parameter_799", "Parameter_802", - "Parameter_803", "Parameter_804", "Parameter_805", "Parameter_808", - "Parameter_810", "Parameter_811", "Parameter_812", "Parameter_813", - "Parameter_816", "Parameter_819", "Parameter_820", "Parameter_821", - "Parameter_822", "Parameter_825", "Parameter_827", "Parameter_828", - "Parameter_829", "Parameter_830", "Parameter_833", "Parameter_836", - "Parameter_837", "Parameter_838", "Parameter_839", "Parameter_842", - "Parameter_844", "Parameter_845", "Parameter_846", "Parameter_847", - "Parameter_850", "Parameter_853", "Parameter_854", "Parameter_855", - "Parameter_856", "Parameter_859", "Parameter_861", "Parameter_862", - "Parameter_863", "Parameter_864", "Parameter_867", "Parameter_870", - "Parameter_871", "Parameter_872", "Parameter_873", "Parameter_876", - "Parameter_878", "Parameter_879", "Parameter_880", "Parameter_881", - "Parameter_884", "Parameter_887", "Parameter_888", "Parameter_889", - "Parameter_890", "Parameter_893", "Parameter_895", "Parameter_896", - "Parameter_897", "Parameter_898", "Parameter_901", "Parameter_904", - "Parameter_905", "Parameter_906", "Parameter_907", "Parameter_910", - "Parameter_912", "Parameter_913", "Parameter_914", "Parameter_915", - "Parameter_918", "Parameter_921", "Parameter_922", "Parameter_923", - "Parameter_924", "Parameter_927", "Parameter_929", "Parameter_930", - "Parameter_931", "Parameter_932", "Parameter_935", "Parameter_938", - "Parameter_939", "Parameter_940", "Parameter_941", "Parameter_944", - "Parameter_946", "Parameter_947", "Parameter_948", "Parameter_949", - "Parameter_952", "Parameter_955", "Parameter_956", "Parameter_957", - "Parameter_958", "Parameter_961", "Parameter_963", "Parameter_964", - "Parameter_965", "Parameter_966", "Parameter_969", "Parameter_972", - "Parameter_973", "Parameter_974", "Parameter_975", "Parameter_978", - "Parameter_980", "Parameter_981", "Parameter_982", "Parameter_983", - "Parameter_986", "Parameter_989", "Parameter_990", "Parameter_991", - "Parameter_992", "Parameter_995", "Parameter_997", "Parameter_998", - "Parameter_999", "Parameter_1000", "Parameter_1003", "Parameter_1006", - "Parameter_1007", "Parameter_1008", "Parameter_1009", "Parameter_1012", - "Parameter_1014", "Parameter_1015", "Parameter_1016", "Parameter_1017", - "Parameter_1020", "Parameter_1023", "Parameter_1024", "Parameter_1025", - "Parameter_1026", "Parameter_1031", "Parameter_1032", "Parameter_1037" - ], - "result" : ["Result_1039"] -}] diff --git a/ngraph/test/models/mxnet/rnn-10-step-fusion-test.json b/ngraph/test/models/mxnet/rnn-10-step-fusion-test.json deleted file mode 100644 index 0b2d9abc238878..00000000000000 --- a/ngraph/test/models/mxnet/rnn-10-step-fusion-test.json +++ /dev/null @@ -1,10983 +0,0 @@ -[ - { - "name": "Function_0", - "ops": [ - { - "element_type": "float", - "inputs": [], - "name": "Parameter_790", - "op": "Parameter", - "outputs": [ - "Parameter_790_0" - ], - "shape": [ - 10000 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_789", - "op": "Parameter", - "outputs": [ - "Parameter_789_0" - ], - "shape": [ - 10000, - 200 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_57", - "op": "Parameter", - "outputs": [ - "Parameter_57_0" - ], - "shape": [ - 800 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_56", - "op": "Parameter", - "outputs": [ - "Parameter_56_0" - ], - "shape": [ - 800, - 200 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_49", - "op": "Parameter", - "outputs": [ - "Parameter_49_0" - ], - "shape": [ - 800 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_48", - "op": "Parameter", - "outputs": [ - "Parameter_48_0" - ], - "shape": [ - 800, - 200 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_12", - "op": "Parameter", - "outputs": [ - "Parameter_12_0" - ], - "shape": [ - 800 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_11", - "op": "Parameter", - "outputs": [ - "Parameter_11_0" - ], - "shape": [ - 800, - 200 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_4", - "op": "Parameter", - "outputs": [ - "Parameter_4_0" - ], - "shape": [ - 800 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_3", - "op": "Parameter", - "outputs": [ - "Parameter_3_0" - ], - "shape": [ - 800, - 200 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Parameter_0", - "op": "Parameter", - "outputs": [ - "Parameter_0_0" - ], - "shape": [ - 32, - 10, - 200 - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_54", - "op": "Constant", - "outputs": [ - "Constant_54_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_9", - "op": "Constant", - "outputs": [ - "Constant_9_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_36", - "op": "Constant", - "outputs": [ - "Constant_36_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_32", - "op": "Constant", - "outputs": [ - "Constant_32_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_26", - "op": "Constant", - "outputs": [ - "Constant_26_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_19", - "op": "Constant", - "outputs": [ - "Constant_19_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_81", - "op": "Constant", - "outputs": [ - "Constant_81_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_77", - "op": "Constant", - "outputs": [ - "Constant_77_0" - ], - "shape": [], - "value": [ - "0" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_71", - "op": "Constant", - "outputs": [ - "Constant_71_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_64", - "op": "Constant", - "outputs": [ - "Constant_64_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_121", - "op": "Constant", - "outputs": [ - "Constant_121_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_113", - "op": "Constant", - "outputs": [ - "Constant_113_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_106", - "op": "Constant", - "outputs": [ - "Constant_106_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_158", - "op": "Constant", - "outputs": [ - "Constant_158_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_150", - "op": "Constant", - "outputs": [ - "Constant_150_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_143", - "op": "Constant", - "outputs": [ - "Constant_143_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_198", - "op": "Constant", - "outputs": [ - "Constant_198_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_190", - "op": "Constant", - "outputs": [ - "Constant_190_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_183", - "op": "Constant", - "outputs": [ - "Constant_183_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_235", - "op": "Constant", - "outputs": [ - "Constant_235_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_227", - "op": "Constant", - "outputs": [ - "Constant_227_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_220", - "op": "Constant", - "outputs": [ - "Constant_220_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_275", - "op": "Constant", - "outputs": [ - "Constant_275_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_267", - "op": "Constant", - "outputs": [ - "Constant_267_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_260", - "op": "Constant", - "outputs": [ - "Constant_260_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_312", - "op": "Constant", - "outputs": [ - "Constant_312_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_304", - "op": "Constant", - "outputs": [ - "Constant_304_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_297", - "op": "Constant", - "outputs": [ - "Constant_297_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_352", - "op": "Constant", - "outputs": [ - "Constant_352_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_344", - "op": "Constant", - "outputs": [ - "Constant_344_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_337", - "op": "Constant", - "outputs": [ - "Constant_337_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_389", - "op": "Constant", - "outputs": [ - "Constant_389_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_381", - "op": "Constant", - "outputs": [ - "Constant_381_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_374", - "op": "Constant", - "outputs": [ - "Constant_374_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_429", - "op": "Constant", - "outputs": [ - "Constant_429_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_421", - "op": "Constant", - "outputs": [ - "Constant_421_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_414", - "op": "Constant", - "outputs": [ - "Constant_414_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_466", - "op": "Constant", - "outputs": [ - "Constant_466_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_458", - "op": "Constant", - "outputs": [ - "Constant_458_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_451", - "op": "Constant", - "outputs": [ - "Constant_451_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_506", - "op": "Constant", - "outputs": [ - "Constant_506_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_498", - "op": "Constant", - "outputs": [ - "Constant_498_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_491", - "op": "Constant", - "outputs": [ - "Constant_491_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_543", - "op": "Constant", - "outputs": [ - "Constant_543_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_535", - "op": "Constant", - "outputs": [ - "Constant_535_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_528", - "op": "Constant", - "outputs": [ - "Constant_528_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_583", - "op": "Constant", - "outputs": [ - "Constant_583_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_575", - "op": "Constant", - "outputs": [ - "Constant_575_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_568", - "op": "Constant", - "outputs": [ - "Constant_568_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_620", - "op": "Constant", - "outputs": [ - "Constant_620_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_612", - "op": "Constant", - "outputs": [ - "Constant_612_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_605", - "op": "Constant", - "outputs": [ - "Constant_605_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_660", - "op": "Constant", - "outputs": [ - "Constant_660_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_652", - "op": "Constant", - "outputs": [ - "Constant_652_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_645", - "op": "Constant", - "outputs": [ - "Constant_645_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_697", - "op": "Constant", - "outputs": [ - "Constant_697_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_689", - "op": "Constant", - "outputs": [ - "Constant_689_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_682", - "op": "Constant", - "outputs": [ - "Constant_682_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_737", - "op": "Constant", - "outputs": [ - "Constant_737_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_729", - "op": "Constant", - "outputs": [ - "Constant_729_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_722", - "op": "Constant", - "outputs": [ - "Constant_722_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_774", - "op": "Constant", - "outputs": [ - "Constant_774_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_766", - "op": "Constant", - "outputs": [ - "Constant_766_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "element_type": "float", - "inputs": [], - "name": "Constant_759", - "op": "Constant", - "outputs": [ - "Constant_759_0" - ], - "shape": [], - "value": [ - "1" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_790" - ], - "name": "Broadcast_793", - "op": "Broadcast", - "outputs": [ - "Broadcast_793_0" - ], - "shape": [ - 320, - 10000 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_789" - ], - "name": "Reshape_791", - "op": "Reshape", - "output_shape": [ - 200, - 10000 - ], - "outputs": [ - "Reshape_791_0" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_60", - "op": "Broadcast", - "outputs": [ - "Broadcast_60_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_139", - "op": "Broadcast", - "outputs": [ - "Broadcast_139_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_216", - "op": "Broadcast", - "outputs": [ - "Broadcast_216_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_293", - "op": "Broadcast", - "outputs": [ - "Broadcast_293_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_370", - "op": "Broadcast", - "outputs": [ - "Broadcast_370_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_447", - "op": "Broadcast", - "outputs": [ - "Broadcast_447_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_524", - "op": "Broadcast", - "outputs": [ - "Broadcast_524_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_601", - "op": "Broadcast", - "outputs": [ - "Broadcast_601_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_678", - "op": "Broadcast", - "outputs": [ - "Broadcast_678_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_57" - ], - "name": "Broadcast_755", - "op": "Broadcast", - "outputs": [ - "Broadcast_755_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_58", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_58_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_137", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_137_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_214", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_214_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_291", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_291_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_368", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_368_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_445", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_445_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_522", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_522_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_599", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_599_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_676", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_676_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_56" - ], - "name": "Reshape_753", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_753_0" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_52", - "op": "Broadcast", - "outputs": [ - "Broadcast_52_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_135", - "op": "Broadcast", - "outputs": [ - "Broadcast_135_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_212", - "op": "Broadcast", - "outputs": [ - "Broadcast_212_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_289", - "op": "Broadcast", - "outputs": [ - "Broadcast_289_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_366", - "op": "Broadcast", - "outputs": [ - "Broadcast_366_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_443", - "op": "Broadcast", - "outputs": [ - "Broadcast_443_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_520", - "op": "Broadcast", - "outputs": [ - "Broadcast_520_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_597", - "op": "Broadcast", - "outputs": [ - "Broadcast_597_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_674", - "op": "Broadcast", - "outputs": [ - "Broadcast_674_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_49" - ], - "name": "Broadcast_751", - "op": "Broadcast", - "outputs": [ - "Broadcast_751_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_50", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_50_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_133", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_133_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_210", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_210_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_287", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_287_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_364", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_364_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_441", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_441_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_518", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_518_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_595", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_595_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_672", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_672_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_48" - ], - "name": "Reshape_749", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_749_0" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_102", - "op": "Broadcast", - "outputs": [ - "Broadcast_102_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_179", - "op": "Broadcast", - "outputs": [ - "Broadcast_179_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_256", - "op": "Broadcast", - "outputs": [ - "Broadcast_256_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_333", - "op": "Broadcast", - "outputs": [ - "Broadcast_333_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_410", - "op": "Broadcast", - "outputs": [ - "Broadcast_410_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_487", - "op": "Broadcast", - "outputs": [ - "Broadcast_487_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_564", - "op": "Broadcast", - "outputs": [ - "Broadcast_564_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_641", - "op": "Broadcast", - "outputs": [ - "Broadcast_641_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_718", - "op": "Broadcast", - "outputs": [ - "Broadcast_718_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_12" - ], - "name": "Broadcast_15", - "op": "Broadcast", - "outputs": [ - "Broadcast_15_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_13", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_13_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_100", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_100_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_177", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_177_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_254", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_254_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_331", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_331_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_408", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_408_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_485", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_485_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_562", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_562_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_639", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_639_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_11" - ], - "name": "Reshape_716", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_716_0" - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_98", - "op": "Broadcast", - "outputs": [ - "Broadcast_98_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_175", - "op": "Broadcast", - "outputs": [ - "Broadcast_175_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_252", - "op": "Broadcast", - "outputs": [ - "Broadcast_252_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_329", - "op": "Broadcast", - "outputs": [ - "Broadcast_329_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_406", - "op": "Broadcast", - "outputs": [ - "Broadcast_406_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_483", - "op": "Broadcast", - "outputs": [ - "Broadcast_483_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_560", - "op": "Broadcast", - "outputs": [ - "Broadcast_560_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_637", - "op": "Broadcast", - "outputs": [ - "Broadcast_637_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_714", - "op": "Broadcast", - "outputs": [ - "Broadcast_714_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "axes": [ - 0 - ], - "inputs": [ - "Parameter_4" - ], - "name": "Broadcast_7", - "op": "Broadcast", - "outputs": [ - "Broadcast_7_0" - ], - "shape": [ - 32, - 800 - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_96", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_96_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_173", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_173_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_250", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_250_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_327", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_327_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_404", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_404_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_481", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_481_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_558", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_558_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_635", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_635_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_712", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_712_0" - ] - }, - { - "input_order": [ - 1, - 0 - ], - "inputs": [ - "Parameter_3" - ], - "name": "Reshape_5", - "op": "Reshape", - "output_shape": [ - 200, - 800 - ], - "outputs": [ - "Reshape_5_0" - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 1, - 0 - ], - "name": "Slice_94", - "op": "Slice", - "outputs": [ - "Slice_94_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 2, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 2, - 0 - ], - "name": "Slice_171", - "op": "Slice", - "outputs": [ - "Slice_171_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 3, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 3, - 0 - ], - "name": "Slice_248", - "op": "Slice", - "outputs": [ - "Slice_248_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 4, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 4, - 0 - ], - "name": "Slice_325", - "op": "Slice", - "outputs": [ - "Slice_325_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 5, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 5, - 0 - ], - "name": "Slice_402", - "op": "Slice", - "outputs": [ - "Slice_402_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 6, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 6, - 0 - ], - "name": "Slice_479", - "op": "Slice", - "outputs": [ - "Slice_479_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 7, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 7, - 0 - ], - "name": "Slice_556", - "op": "Slice", - "outputs": [ - "Slice_556_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 8, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 8, - 0 - ], - "name": "Slice_633", - "op": "Slice", - "outputs": [ - "Slice_633_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 9, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 9, - 0 - ], - "name": "Slice_710", - "op": "Slice", - "outputs": [ - "Slice_710_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 10, - 200 - ] - }, - { - "inputs": [ - "Parameter_0" - ], - "lower_bounds": [ - 0, - 0, - 0 - ], - "name": "Slice_1", - "op": "Slice", - "outputs": [ - "Slice_1_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "upper_bounds": [ - 32, - 1, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_54" - ], - "name": "Broadcast_55", - "op": "Broadcast", - "outputs": [ - "Broadcast_55_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_9" - ], - "name": "Broadcast_10", - "op": "Broadcast", - "outputs": [ - "Broadcast_10_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_36" - ], - "name": "Broadcast_37", - "op": "Broadcast", - "outputs": [ - "Broadcast_37_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_32" - ], - "name": "Broadcast_33", - "op": "Broadcast", - "outputs": [ - "Broadcast_33_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_26" - ], - "name": "Broadcast_27", - "op": "Broadcast", - "outputs": [ - "Broadcast_27_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_19" - ], - "name": "Broadcast_20", - "op": "Broadcast", - "outputs": [ - "Broadcast_20_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_81" - ], - "name": "Broadcast_82", - "op": "Broadcast", - "outputs": [ - "Broadcast_82_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_77" - ], - "name": "Broadcast_78", - "op": "Broadcast", - "outputs": [ - "Broadcast_78_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_71" - ], - "name": "Broadcast_72", - "op": "Broadcast", - "outputs": [ - "Broadcast_72_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_64" - ], - "name": "Broadcast_65", - "op": "Broadcast", - "outputs": [ - "Broadcast_65_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_121" - ], - "name": "Broadcast_122", - "op": "Broadcast", - "outputs": [ - "Broadcast_122_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_113" - ], - "name": "Broadcast_114", - "op": "Broadcast", - "outputs": [ - "Broadcast_114_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_106" - ], - "name": "Broadcast_107", - "op": "Broadcast", - "outputs": [ - "Broadcast_107_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_158" - ], - "name": "Broadcast_159", - "op": "Broadcast", - "outputs": [ - "Broadcast_159_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_150" - ], - "name": "Broadcast_151", - "op": "Broadcast", - "outputs": [ - "Broadcast_151_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_143" - ], - "name": "Broadcast_144", - "op": "Broadcast", - "outputs": [ - "Broadcast_144_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_198" - ], - "name": "Broadcast_199", - "op": "Broadcast", - "outputs": [ - "Broadcast_199_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_190" - ], - "name": "Broadcast_191", - "op": "Broadcast", - "outputs": [ - "Broadcast_191_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_183" - ], - "name": "Broadcast_184", - "op": "Broadcast", - "outputs": [ - "Broadcast_184_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_235" - ], - "name": "Broadcast_236", - "op": "Broadcast", - "outputs": [ - "Broadcast_236_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_227" - ], - "name": "Broadcast_228", - "op": "Broadcast", - "outputs": [ - "Broadcast_228_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_220" - ], - "name": "Broadcast_221", - "op": "Broadcast", - "outputs": [ - "Broadcast_221_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_275" - ], - "name": "Broadcast_276", - "op": "Broadcast", - "outputs": [ - "Broadcast_276_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_267" - ], - "name": "Broadcast_268", - "op": "Broadcast", - "outputs": [ - "Broadcast_268_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_260" - ], - "name": "Broadcast_261", - "op": "Broadcast", - "outputs": [ - "Broadcast_261_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_312" - ], - "name": "Broadcast_313", - "op": "Broadcast", - "outputs": [ - "Broadcast_313_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_304" - ], - "name": "Broadcast_305", - "op": "Broadcast", - "outputs": [ - "Broadcast_305_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_297" - ], - "name": "Broadcast_298", - "op": "Broadcast", - "outputs": [ - "Broadcast_298_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_352" - ], - "name": "Broadcast_353", - "op": "Broadcast", - "outputs": [ - "Broadcast_353_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_344" - ], - "name": "Broadcast_345", - "op": "Broadcast", - "outputs": [ - "Broadcast_345_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_337" - ], - "name": "Broadcast_338", - "op": "Broadcast", - "outputs": [ - "Broadcast_338_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_389" - ], - "name": "Broadcast_390", - "op": "Broadcast", - "outputs": [ - "Broadcast_390_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_381" - ], - "name": "Broadcast_382", - "op": "Broadcast", - "outputs": [ - "Broadcast_382_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_374" - ], - "name": "Broadcast_375", - "op": "Broadcast", - "outputs": [ - "Broadcast_375_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_429" - ], - "name": "Broadcast_430", - "op": "Broadcast", - "outputs": [ - "Broadcast_430_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_421" - ], - "name": "Broadcast_422", - "op": "Broadcast", - "outputs": [ - "Broadcast_422_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_414" - ], - "name": "Broadcast_415", - "op": "Broadcast", - "outputs": [ - "Broadcast_415_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_466" - ], - "name": "Broadcast_467", - "op": "Broadcast", - "outputs": [ - "Broadcast_467_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_458" - ], - "name": "Broadcast_459", - "op": "Broadcast", - "outputs": [ - "Broadcast_459_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_451" - ], - "name": "Broadcast_452", - "op": "Broadcast", - "outputs": [ - "Broadcast_452_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_506" - ], - "name": "Broadcast_507", - "op": "Broadcast", - "outputs": [ - "Broadcast_507_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_498" - ], - "name": "Broadcast_499", - "op": "Broadcast", - "outputs": [ - "Broadcast_499_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_491" - ], - "name": "Broadcast_492", - "op": "Broadcast", - "outputs": [ - "Broadcast_492_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_543" - ], - "name": "Broadcast_544", - "op": "Broadcast", - "outputs": [ - "Broadcast_544_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_535" - ], - "name": "Broadcast_536", - "op": "Broadcast", - "outputs": [ - "Broadcast_536_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_528" - ], - "name": "Broadcast_529", - "op": "Broadcast", - "outputs": [ - "Broadcast_529_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_583" - ], - "name": "Broadcast_584", - "op": "Broadcast", - "outputs": [ - "Broadcast_584_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_575" - ], - "name": "Broadcast_576", - "op": "Broadcast", - "outputs": [ - "Broadcast_576_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_568" - ], - "name": "Broadcast_569", - "op": "Broadcast", - "outputs": [ - "Broadcast_569_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_620" - ], - "name": "Broadcast_621", - "op": "Broadcast", - "outputs": [ - "Broadcast_621_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_612" - ], - "name": "Broadcast_613", - "op": "Broadcast", - "outputs": [ - "Broadcast_613_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_605" - ], - "name": "Broadcast_606", - "op": "Broadcast", - "outputs": [ - "Broadcast_606_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_660" - ], - "name": "Broadcast_661", - "op": "Broadcast", - "outputs": [ - "Broadcast_661_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_652" - ], - "name": "Broadcast_653", - "op": "Broadcast", - "outputs": [ - "Broadcast_653_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_645" - ], - "name": "Broadcast_646", - "op": "Broadcast", - "outputs": [ - "Broadcast_646_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_697" - ], - "name": "Broadcast_698", - "op": "Broadcast", - "outputs": [ - "Broadcast_698_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_689" - ], - "name": "Broadcast_690", - "op": "Broadcast", - "outputs": [ - "Broadcast_690_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_682" - ], - "name": "Broadcast_683", - "op": "Broadcast", - "outputs": [ - "Broadcast_683_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_737" - ], - "name": "Broadcast_738", - "op": "Broadcast", - "outputs": [ - "Broadcast_738_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_729" - ], - "name": "Broadcast_730", - "op": "Broadcast", - "outputs": [ - "Broadcast_730_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_722" - ], - "name": "Broadcast_723", - "op": "Broadcast", - "outputs": [ - "Broadcast_723_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_774" - ], - "name": "Broadcast_775", - "op": "Broadcast", - "outputs": [ - "Broadcast_775_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_766" - ], - "name": "Broadcast_767", - "op": "Broadcast", - "outputs": [ - "Broadcast_767_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Constant_759" - ], - "name": "Broadcast_760", - "op": "Broadcast", - "outputs": [ - "Broadcast_760_0" - ], - "shape": [ - 32, - 200 - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_94" - ], - "name": "Reshape_95", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_95_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_171" - ], - "name": "Reshape_172", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_172_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_248" - ], - "name": "Reshape_249", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_249_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_325" - ], - "name": "Reshape_326", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_326_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_402" - ], - "name": "Reshape_403", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_403_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_479" - ], - "name": "Reshape_480", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_480_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_556" - ], - "name": "Reshape_557", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_557_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_633" - ], - "name": "Reshape_634", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_634_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_710" - ], - "name": "Reshape_711", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_711_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_1" - ], - "name": "Reshape_2", - "op": "Reshape", - "output_shape": [ - 32, - 200 - ], - "outputs": [ - "Reshape_2_0" - ] - }, - { - "inputs": [ - "Broadcast_55", - "Reshape_58" - ], - "name": "Dot_59", - "op": "Dot", - "outputs": [ - "Dot_59_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Broadcast_10", - "Reshape_13" - ], - "name": "Dot_14", - "op": "Dot", - "outputs": [ - "Dot_14_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_95", - "Reshape_96" - ], - "name": "Dot_97", - "op": "Dot", - "outputs": [ - "Dot_97_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_172", - "Reshape_173" - ], - "name": "Dot_174", - "op": "Dot", - "outputs": [ - "Dot_174_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_249", - "Reshape_250" - ], - "name": "Dot_251", - "op": "Dot", - "outputs": [ - "Dot_251_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_326", - "Reshape_327" - ], - "name": "Dot_328", - "op": "Dot", - "outputs": [ - "Dot_328_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_403", - "Reshape_404" - ], - "name": "Dot_405", - "op": "Dot", - "outputs": [ - "Dot_405_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_480", - "Reshape_481" - ], - "name": "Dot_482", - "op": "Dot", - "outputs": [ - "Dot_482_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_557", - "Reshape_558" - ], - "name": "Dot_559", - "op": "Dot", - "outputs": [ - "Dot_559_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_634", - "Reshape_635" - ], - "name": "Dot_636", - "op": "Dot", - "outputs": [ - "Dot_636_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_711", - "Reshape_712" - ], - "name": "Dot_713", - "op": "Dot", - "outputs": [ - "Dot_713_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Reshape_2", - "Reshape_5" - ], - "name": "Dot_6", - "op": "Dot", - "outputs": [ - "Dot_6_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_59", - "Broadcast_60" - ], - "name": "Add_61", - "op": "Add", - "outputs": [ - "Add_61_0" - ] - }, - { - "inputs": [ - "Dot_14", - "Broadcast_15" - ], - "name": "Add_16", - "op": "Add", - "outputs": [ - "Add_16_0" - ] - }, - { - "inputs": [ - "Dot_97", - "Broadcast_98" - ], - "name": "Add_99", - "op": "Add", - "outputs": [ - "Add_99_0" - ] - }, - { - "inputs": [ - "Dot_174", - "Broadcast_175" - ], - "name": "Add_176", - "op": "Add", - "outputs": [ - "Add_176_0" - ] - }, - { - "inputs": [ - "Dot_251", - "Broadcast_252" - ], - "name": "Add_253", - "op": "Add", - "outputs": [ - "Add_253_0" - ] - }, - { - "inputs": [ - "Dot_328", - "Broadcast_329" - ], - "name": "Add_330", - "op": "Add", - "outputs": [ - "Add_330_0" - ] - }, - { - "inputs": [ - "Dot_405", - "Broadcast_406" - ], - "name": "Add_407", - "op": "Add", - "outputs": [ - "Add_407_0" - ] - }, - { - "inputs": [ - "Dot_482", - "Broadcast_483" - ], - "name": "Add_484", - "op": "Add", - "outputs": [ - "Add_484_0" - ] - }, - { - "inputs": [ - "Dot_559", - "Broadcast_560" - ], - "name": "Add_561", - "op": "Add", - "outputs": [ - "Add_561_0" - ] - }, - { - "inputs": [ - "Dot_636", - "Broadcast_637" - ], - "name": "Add_638", - "op": "Add", - "outputs": [ - "Add_638_0" - ] - }, - { - "inputs": [ - "Dot_713", - "Broadcast_714" - ], - "name": "Add_715", - "op": "Add", - "outputs": [ - "Add_715_0" - ] - }, - { - "inputs": [ - "Dot_6", - "Broadcast_7" - ], - "name": "Add_8", - "op": "Add", - "outputs": [ - "Add_8_0" - ] - }, - { - "inputs": [ - "Add_8", - "Add_16" - ], - "name": "Add_17", - "op": "Add", - "outputs": [ - "Add_17_0" - ] - }, - { - "inputs": [ - "Add_17" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_35", - "op": "Slice", - "outputs": [ - "Slice_35_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_17" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_42", - "op": "Slice", - "outputs": [ - "Slice_42_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_17" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_18", - "op": "Slice", - "outputs": [ - "Slice_18_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_17" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_25", - "op": "Slice", - "outputs": [ - "Slice_25_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Slice_35" - ], - "name": "Negative_38", - "op": "Negative", - "outputs": [ - "Negative_38_0" - ] - }, - { - "inputs": [ - "Slice_42" - ], - "name": "Tanh_43", - "op": "Tanh", - "outputs": [ - "Tanh_43_0" - ] - }, - { - "inputs": [ - "Slice_18" - ], - "name": "Negative_21", - "op": "Negative", - "outputs": [ - "Negative_21_0" - ] - }, - { - "inputs": [ - "Slice_25" - ], - "name": "Negative_28", - "op": "Negative", - "outputs": [ - "Negative_28_0" - ] - }, - { - "inputs": [ - "Negative_38" - ], - "name": "Exp_39", - "op": "Exp", - "outputs": [ - "Exp_39_0" - ] - }, - { - "inputs": [ - "Negative_21" - ], - "name": "Exp_22", - "op": "Exp", - "outputs": [ - "Exp_22_0" - ] - }, - { - "inputs": [ - "Negative_28" - ], - "name": "Exp_29", - "op": "Exp", - "outputs": [ - "Exp_29_0" - ] - }, - { - "inputs": [ - "Broadcast_37", - "Exp_39" - ], - "name": "Add_40", - "op": "Add", - "outputs": [ - "Add_40_0" - ] - }, - { - "inputs": [ - "Broadcast_20", - "Exp_22" - ], - "name": "Add_23", - "op": "Add", - "outputs": [ - "Add_23_0" - ] - }, - { - "inputs": [ - "Broadcast_27", - "Exp_29" - ], - "name": "Add_30", - "op": "Add", - "outputs": [ - "Add_30_0" - ] - }, - { - "inputs": [ - "Broadcast_37", - "Add_40" - ], - "name": "Divide_41", - "op": "Divide", - "outputs": [ - "Divide_41_0" - ] - }, - { - "inputs": [ - "Broadcast_20", - "Add_23" - ], - "name": "Divide_24", - "op": "Divide", - "outputs": [ - "Divide_24_0" - ] - }, - { - "inputs": [ - "Broadcast_27", - "Add_30" - ], - "name": "Divide_31", - "op": "Divide", - "outputs": [ - "Divide_31_0" - ] - }, - { - "inputs": [ - "Divide_41", - "Tanh_43" - ], - "name": "Multiply_44", - "op": "Multiply", - "outputs": [ - "Multiply_44_0" - ] - }, - { - "inputs": [ - "Divide_31", - "Broadcast_33" - ], - "name": "Multiply_34", - "op": "Multiply", - "outputs": [ - "Multiply_34_0" - ] - }, - { - "inputs": [ - "Multiply_34", - "Multiply_44" - ], - "name": "Add_45", - "op": "Add", - "outputs": [ - "Add_45_0" - ] - }, - { - "inputs": [ - "Add_45" - ], - "name": "Tanh_46", - "op": "Tanh", - "outputs": [ - "Tanh_46_0" - ] - }, - { - "inputs": [ - "Divide_24", - "Tanh_46" - ], - "name": "Multiply_47", - "op": "Multiply", - "outputs": [ - "Multiply_47_0" - ] - }, - { - "inputs": [ - "Multiply_47", - "Reshape_50" - ], - "name": "Dot_51", - "op": "Dot", - "outputs": [ - "Dot_51_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_47", - "Reshape_100" - ], - "name": "Dot_101", - "op": "Dot", - "outputs": [ - "Dot_101_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_51", - "Broadcast_52" - ], - "name": "Add_53", - "op": "Add", - "outputs": [ - "Add_53_0" - ] - }, - { - "inputs": [ - "Dot_101", - "Broadcast_102" - ], - "name": "Add_103", - "op": "Add", - "outputs": [ - "Add_103_0" - ] - }, - { - "inputs": [ - "Add_53", - "Add_61" - ], - "name": "Add_62", - "op": "Add", - "outputs": [ - "Add_62_0" - ] - }, - { - "inputs": [ - "Add_99", - "Add_103" - ], - "name": "Add_104", - "op": "Add", - "outputs": [ - "Add_104_0" - ] - }, - { - "inputs": [ - "Add_62" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_63", - "op": "Slice", - "outputs": [ - "Slice_63_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_62" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_70", - "op": "Slice", - "outputs": [ - "Slice_70_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_62" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_80", - "op": "Slice", - "outputs": [ - "Slice_80_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_62" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_87", - "op": "Slice", - "outputs": [ - "Slice_87_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_104" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_105", - "op": "Slice", - "outputs": [ - "Slice_105_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_104" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_112", - "op": "Slice", - "outputs": [ - "Slice_112_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_104" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_120", - "op": "Slice", - "outputs": [ - "Slice_120_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_104" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_127", - "op": "Slice", - "outputs": [ - "Slice_127_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_63" - ], - "name": "Negative_66", - "op": "Negative", - "outputs": [ - "Negative_66_0" - ] - }, - { - "inputs": [ - "Slice_70" - ], - "name": "Negative_73", - "op": "Negative", - "outputs": [ - "Negative_73_0" - ] - }, - { - "inputs": [ - "Slice_80" - ], - "name": "Negative_83", - "op": "Negative", - "outputs": [ - "Negative_83_0" - ] - }, - { - "inputs": [ - "Slice_87" - ], - "name": "Tanh_88", - "op": "Tanh", - "outputs": [ - "Tanh_88_0" - ] - }, - { - "inputs": [ - "Slice_105" - ], - "name": "Negative_108", - "op": "Negative", - "outputs": [ - "Negative_108_0" - ] - }, - { - "inputs": [ - "Slice_112" - ], - "name": "Negative_115", - "op": "Negative", - "outputs": [ - "Negative_115_0" - ] - }, - { - "inputs": [ - "Slice_120" - ], - "name": "Negative_123", - "op": "Negative", - "outputs": [ - "Negative_123_0" - ] - }, - { - "inputs": [ - "Slice_127" - ], - "name": "Tanh_128", - "op": "Tanh", - "outputs": [ - "Tanh_128_0" - ] - }, - { - "inputs": [ - "Negative_66" - ], - "name": "Exp_67", - "op": "Exp", - "outputs": [ - "Exp_67_0" - ] - }, - { - "inputs": [ - "Negative_73" - ], - "name": "Exp_74", - "op": "Exp", - "outputs": [ - "Exp_74_0" - ] - }, - { - "inputs": [ - "Negative_83" - ], - "name": "Exp_84", - "op": "Exp", - "outputs": [ - "Exp_84_0" - ] - }, - { - "inputs": [ - "Negative_108" - ], - "name": "Exp_109", - "op": "Exp", - "outputs": [ - "Exp_109_0" - ] - }, - { - "inputs": [ - "Negative_115" - ], - "name": "Exp_116", - "op": "Exp", - "outputs": [ - "Exp_116_0" - ] - }, - { - "inputs": [ - "Negative_123" - ], - "name": "Exp_124", - "op": "Exp", - "outputs": [ - "Exp_124_0" - ] - }, - { - "inputs": [ - "Broadcast_65", - "Exp_67" - ], - "name": "Add_68", - "op": "Add", - "outputs": [ - "Add_68_0" - ] - }, - { - "inputs": [ - "Broadcast_72", - "Exp_74" - ], - "name": "Add_75", - "op": "Add", - "outputs": [ - "Add_75_0" - ] - }, - { - "inputs": [ - "Broadcast_82", - "Exp_84" - ], - "name": "Add_85", - "op": "Add", - "outputs": [ - "Add_85_0" - ] - }, - { - "inputs": [ - "Broadcast_107", - "Exp_109" - ], - "name": "Add_110", - "op": "Add", - "outputs": [ - "Add_110_0" - ] - }, - { - "inputs": [ - "Broadcast_114", - "Exp_116" - ], - "name": "Add_117", - "op": "Add", - "outputs": [ - "Add_117_0" - ] - }, - { - "inputs": [ - "Broadcast_122", - "Exp_124" - ], - "name": "Add_125", - "op": "Add", - "outputs": [ - "Add_125_0" - ] - }, - { - "inputs": [ - "Broadcast_65", - "Add_68" - ], - "name": "Divide_69", - "op": "Divide", - "outputs": [ - "Divide_69_0" - ] - }, - { - "inputs": [ - "Broadcast_72", - "Add_75" - ], - "name": "Divide_76", - "op": "Divide", - "outputs": [ - "Divide_76_0" - ] - }, - { - "inputs": [ - "Broadcast_82", - "Add_85" - ], - "name": "Divide_86", - "op": "Divide", - "outputs": [ - "Divide_86_0" - ] - }, - { - "inputs": [ - "Broadcast_107", - "Add_110" - ], - "name": "Divide_111", - "op": "Divide", - "outputs": [ - "Divide_111_0" - ] - }, - { - "inputs": [ - "Broadcast_114", - "Add_117" - ], - "name": "Divide_118", - "op": "Divide", - "outputs": [ - "Divide_118_0" - ] - }, - { - "inputs": [ - "Broadcast_122", - "Add_125" - ], - "name": "Divide_126", - "op": "Divide", - "outputs": [ - "Divide_126_0" - ] - }, - { - "inputs": [ - "Divide_76", - "Broadcast_78" - ], - "name": "Multiply_79", - "op": "Multiply", - "outputs": [ - "Multiply_79_0" - ] - }, - { - "inputs": [ - "Divide_86", - "Tanh_88" - ], - "name": "Multiply_89", - "op": "Multiply", - "outputs": [ - "Multiply_89_0" - ] - }, - { - "inputs": [ - "Divide_118", - "Add_45" - ], - "name": "Multiply_119", - "op": "Multiply", - "outputs": [ - "Multiply_119_0" - ] - }, - { - "inputs": [ - "Divide_126", - "Tanh_128" - ], - "name": "Multiply_129", - "op": "Multiply", - "outputs": [ - "Multiply_129_0" - ] - }, - { - "inputs": [ - "Multiply_79", - "Multiply_89" - ], - "name": "Add_90", - "op": "Add", - "outputs": [ - "Add_90_0" - ] - }, - { - "inputs": [ - "Multiply_119", - "Multiply_129" - ], - "name": "Add_130", - "op": "Add", - "outputs": [ - "Add_130_0" - ] - }, - { - "inputs": [ - "Add_90" - ], - "name": "Tanh_91", - "op": "Tanh", - "outputs": [ - "Tanh_91_0" - ] - }, - { - "inputs": [ - "Add_130" - ], - "name": "Tanh_131", - "op": "Tanh", - "outputs": [ - "Tanh_131_0" - ] - }, - { - "inputs": [ - "Divide_69", - "Tanh_91" - ], - "name": "Multiply_92", - "op": "Multiply", - "outputs": [ - "Multiply_92_0" - ] - }, - { - "inputs": [ - "Divide_111", - "Tanh_131" - ], - "name": "Multiply_132", - "op": "Multiply", - "outputs": [ - "Multiply_132_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_92" - ], - "name": "Reshape_93", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_93_0" - ] - }, - { - "inputs": [ - "Multiply_92", - "Reshape_137" - ], - "name": "Dot_138", - "op": "Dot", - "outputs": [ - "Dot_138_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_132", - "Reshape_133" - ], - "name": "Dot_134", - "op": "Dot", - "outputs": [ - "Dot_134_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_132", - "Reshape_177" - ], - "name": "Dot_178", - "op": "Dot", - "outputs": [ - "Dot_178_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_138", - "Broadcast_139" - ], - "name": "Add_140", - "op": "Add", - "outputs": [ - "Add_140_0" - ] - }, - { - "inputs": [ - "Dot_134", - "Broadcast_135" - ], - "name": "Add_136", - "op": "Add", - "outputs": [ - "Add_136_0" - ] - }, - { - "inputs": [ - "Dot_178", - "Broadcast_179" - ], - "name": "Add_180", - "op": "Add", - "outputs": [ - "Add_180_0" - ] - }, - { - "inputs": [ - "Add_136", - "Add_140" - ], - "name": "Add_141", - "op": "Add", - "outputs": [ - "Add_141_0" - ] - }, - { - "inputs": [ - "Add_176", - "Add_180" - ], - "name": "Add_181", - "op": "Add", - "outputs": [ - "Add_181_0" - ] - }, - { - "inputs": [ - "Add_141" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_142", - "op": "Slice", - "outputs": [ - "Slice_142_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_141" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_149", - "op": "Slice", - "outputs": [ - "Slice_149_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_141" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_157", - "op": "Slice", - "outputs": [ - "Slice_157_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_141" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_164", - "op": "Slice", - "outputs": [ - "Slice_164_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_181" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_189", - "op": "Slice", - "outputs": [ - "Slice_189_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_181" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_182", - "op": "Slice", - "outputs": [ - "Slice_182_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_181" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_197", - "op": "Slice", - "outputs": [ - "Slice_197_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_181" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_204", - "op": "Slice", - "outputs": [ - "Slice_204_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_142" - ], - "name": "Negative_145", - "op": "Negative", - "outputs": [ - "Negative_145_0" - ] - }, - { - "inputs": [ - "Slice_149" - ], - "name": "Negative_152", - "op": "Negative", - "outputs": [ - "Negative_152_0" - ] - }, - { - "inputs": [ - "Slice_157" - ], - "name": "Negative_160", - "op": "Negative", - "outputs": [ - "Negative_160_0" - ] - }, - { - "inputs": [ - "Slice_164" - ], - "name": "Tanh_165", - "op": "Tanh", - "outputs": [ - "Tanh_165_0" - ] - }, - { - "inputs": [ - "Slice_189" - ], - "name": "Negative_192", - "op": "Negative", - "outputs": [ - "Negative_192_0" - ] - }, - { - "inputs": [ - "Slice_182" - ], - "name": "Negative_185", - "op": "Negative", - "outputs": [ - "Negative_185_0" - ] - }, - { - "inputs": [ - "Slice_197" - ], - "name": "Negative_200", - "op": "Negative", - "outputs": [ - "Negative_200_0" - ] - }, - { - "inputs": [ - "Slice_204" - ], - "name": "Tanh_205", - "op": "Tanh", - "outputs": [ - "Tanh_205_0" - ] - }, - { - "inputs": [ - "Negative_145" - ], - "name": "Exp_146", - "op": "Exp", - "outputs": [ - "Exp_146_0" - ] - }, - { - "inputs": [ - "Negative_152" - ], - "name": "Exp_153", - "op": "Exp", - "outputs": [ - "Exp_153_0" - ] - }, - { - "inputs": [ - "Negative_160" - ], - "name": "Exp_161", - "op": "Exp", - "outputs": [ - "Exp_161_0" - ] - }, - { - "inputs": [ - "Negative_192" - ], - "name": "Exp_193", - "op": "Exp", - "outputs": [ - "Exp_193_0" - ] - }, - { - "inputs": [ - "Negative_185" - ], - "name": "Exp_186", - "op": "Exp", - "outputs": [ - "Exp_186_0" - ] - }, - { - "inputs": [ - "Negative_200" - ], - "name": "Exp_201", - "op": "Exp", - "outputs": [ - "Exp_201_0" - ] - }, - { - "inputs": [ - "Broadcast_144", - "Exp_146" - ], - "name": "Add_147", - "op": "Add", - "outputs": [ - "Add_147_0" - ] - }, - { - "inputs": [ - "Broadcast_151", - "Exp_153" - ], - "name": "Add_154", - "op": "Add", - "outputs": [ - "Add_154_0" - ] - }, - { - "inputs": [ - "Broadcast_159", - "Exp_161" - ], - "name": "Add_162", - "op": "Add", - "outputs": [ - "Add_162_0" - ] - }, - { - "inputs": [ - "Broadcast_191", - "Exp_193" - ], - "name": "Add_194", - "op": "Add", - "outputs": [ - "Add_194_0" - ] - }, - { - "inputs": [ - "Broadcast_184", - "Exp_186" - ], - "name": "Add_187", - "op": "Add", - "outputs": [ - "Add_187_0" - ] - }, - { - "inputs": [ - "Broadcast_199", - "Exp_201" - ], - "name": "Add_202", - "op": "Add", - "outputs": [ - "Add_202_0" - ] - }, - { - "inputs": [ - "Broadcast_144", - "Add_147" - ], - "name": "Divide_148", - "op": "Divide", - "outputs": [ - "Divide_148_0" - ] - }, - { - "inputs": [ - "Broadcast_151", - "Add_154" - ], - "name": "Divide_155", - "op": "Divide", - "outputs": [ - "Divide_155_0" - ] - }, - { - "inputs": [ - "Broadcast_159", - "Add_162" - ], - "name": "Divide_163", - "op": "Divide", - "outputs": [ - "Divide_163_0" - ] - }, - { - "inputs": [ - "Broadcast_191", - "Add_194" - ], - "name": "Divide_195", - "op": "Divide", - "outputs": [ - "Divide_195_0" - ] - }, - { - "inputs": [ - "Broadcast_184", - "Add_187" - ], - "name": "Divide_188", - "op": "Divide", - "outputs": [ - "Divide_188_0" - ] - }, - { - "inputs": [ - "Broadcast_199", - "Add_202" - ], - "name": "Divide_203", - "op": "Divide", - "outputs": [ - "Divide_203_0" - ] - }, - { - "inputs": [ - "Divide_155", - "Add_90" - ], - "name": "Multiply_156", - "op": "Multiply", - "outputs": [ - "Multiply_156_0" - ] - }, - { - "inputs": [ - "Divide_163", - "Tanh_165" - ], - "name": "Multiply_166", - "op": "Multiply", - "outputs": [ - "Multiply_166_0" - ] - }, - { - "inputs": [ - "Divide_195", - "Add_130" - ], - "name": "Multiply_196", - "op": "Multiply", - "outputs": [ - "Multiply_196_0" - ] - }, - { - "inputs": [ - "Divide_203", - "Tanh_205" - ], - "name": "Multiply_206", - "op": "Multiply", - "outputs": [ - "Multiply_206_0" - ] - }, - { - "inputs": [ - "Multiply_156", - "Multiply_166" - ], - "name": "Add_167", - "op": "Add", - "outputs": [ - "Add_167_0" - ] - }, - { - "inputs": [ - "Multiply_196", - "Multiply_206" - ], - "name": "Add_207", - "op": "Add", - "outputs": [ - "Add_207_0" - ] - }, - { - "inputs": [ - "Add_167" - ], - "name": "Tanh_168", - "op": "Tanh", - "outputs": [ - "Tanh_168_0" - ] - }, - { - "inputs": [ - "Add_207" - ], - "name": "Tanh_208", - "op": "Tanh", - "outputs": [ - "Tanh_208_0" - ] - }, - { - "inputs": [ - "Divide_148", - "Tanh_168" - ], - "name": "Multiply_169", - "op": "Multiply", - "outputs": [ - "Multiply_169_0" - ] - }, - { - "inputs": [ - "Divide_188", - "Tanh_208" - ], - "name": "Multiply_209", - "op": "Multiply", - "outputs": [ - "Multiply_209_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_169" - ], - "name": "Reshape_170", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_170_0" - ] - }, - { - "inputs": [ - "Multiply_169", - "Reshape_214" - ], - "name": "Dot_215", - "op": "Dot", - "outputs": [ - "Dot_215_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_209", - "Reshape_210" - ], - "name": "Dot_211", - "op": "Dot", - "outputs": [ - "Dot_211_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_209", - "Reshape_254" - ], - "name": "Dot_255", - "op": "Dot", - "outputs": [ - "Dot_255_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_215", - "Broadcast_216" - ], - "name": "Add_217", - "op": "Add", - "outputs": [ - "Add_217_0" - ] - }, - { - "inputs": [ - "Dot_211", - "Broadcast_212" - ], - "name": "Add_213", - "op": "Add", - "outputs": [ - "Add_213_0" - ] - }, - { - "inputs": [ - "Dot_255", - "Broadcast_256" - ], - "name": "Add_257", - "op": "Add", - "outputs": [ - "Add_257_0" - ] - }, - { - "inputs": [ - "Add_213", - "Add_217" - ], - "name": "Add_218", - "op": "Add", - "outputs": [ - "Add_218_0" - ] - }, - { - "inputs": [ - "Add_253", - "Add_257" - ], - "name": "Add_258", - "op": "Add", - "outputs": [ - "Add_258_0" - ] - }, - { - "inputs": [ - "Add_218" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_219", - "op": "Slice", - "outputs": [ - "Slice_219_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_218" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_226", - "op": "Slice", - "outputs": [ - "Slice_226_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_218" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_234", - "op": "Slice", - "outputs": [ - "Slice_234_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_218" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_241", - "op": "Slice", - "outputs": [ - "Slice_241_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_258" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_259", - "op": "Slice", - "outputs": [ - "Slice_259_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_258" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_266", - "op": "Slice", - "outputs": [ - "Slice_266_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_258" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_274", - "op": "Slice", - "outputs": [ - "Slice_274_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_258" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_281", - "op": "Slice", - "outputs": [ - "Slice_281_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_219" - ], - "name": "Negative_222", - "op": "Negative", - "outputs": [ - "Negative_222_0" - ] - }, - { - "inputs": [ - "Slice_226" - ], - "name": "Negative_229", - "op": "Negative", - "outputs": [ - "Negative_229_0" - ] - }, - { - "inputs": [ - "Slice_234" - ], - "name": "Negative_237", - "op": "Negative", - "outputs": [ - "Negative_237_0" - ] - }, - { - "inputs": [ - "Slice_241" - ], - "name": "Tanh_242", - "op": "Tanh", - "outputs": [ - "Tanh_242_0" - ] - }, - { - "inputs": [ - "Slice_259" - ], - "name": "Negative_262", - "op": "Negative", - "outputs": [ - "Negative_262_0" - ] - }, - { - "inputs": [ - "Slice_266" - ], - "name": "Negative_269", - "op": "Negative", - "outputs": [ - "Negative_269_0" - ] - }, - { - "inputs": [ - "Slice_274" - ], - "name": "Negative_277", - "op": "Negative", - "outputs": [ - "Negative_277_0" - ] - }, - { - "inputs": [ - "Slice_281" - ], - "name": "Tanh_282", - "op": "Tanh", - "outputs": [ - "Tanh_282_0" - ] - }, - { - "inputs": [ - "Negative_222" - ], - "name": "Exp_223", - "op": "Exp", - "outputs": [ - "Exp_223_0" - ] - }, - { - "inputs": [ - "Negative_229" - ], - "name": "Exp_230", - "op": "Exp", - "outputs": [ - "Exp_230_0" - ] - }, - { - "inputs": [ - "Negative_237" - ], - "name": "Exp_238", - "op": "Exp", - "outputs": [ - "Exp_238_0" - ] - }, - { - "inputs": [ - "Negative_262" - ], - "name": "Exp_263", - "op": "Exp", - "outputs": [ - "Exp_263_0" - ] - }, - { - "inputs": [ - "Negative_269" - ], - "name": "Exp_270", - "op": "Exp", - "outputs": [ - "Exp_270_0" - ] - }, - { - "inputs": [ - "Negative_277" - ], - "name": "Exp_278", - "op": "Exp", - "outputs": [ - "Exp_278_0" - ] - }, - { - "inputs": [ - "Broadcast_221", - "Exp_223" - ], - "name": "Add_224", - "op": "Add", - "outputs": [ - "Add_224_0" - ] - }, - { - "inputs": [ - "Broadcast_228", - "Exp_230" - ], - "name": "Add_231", - "op": "Add", - "outputs": [ - "Add_231_0" - ] - }, - { - "inputs": [ - "Broadcast_236", - "Exp_238" - ], - "name": "Add_239", - "op": "Add", - "outputs": [ - "Add_239_0" - ] - }, - { - "inputs": [ - "Broadcast_261", - "Exp_263" - ], - "name": "Add_264", - "op": "Add", - "outputs": [ - "Add_264_0" - ] - }, - { - "inputs": [ - "Broadcast_268", - "Exp_270" - ], - "name": "Add_271", - "op": "Add", - "outputs": [ - "Add_271_0" - ] - }, - { - "inputs": [ - "Broadcast_276", - "Exp_278" - ], - "name": "Add_279", - "op": "Add", - "outputs": [ - "Add_279_0" - ] - }, - { - "inputs": [ - "Broadcast_221", - "Add_224" - ], - "name": "Divide_225", - "op": "Divide", - "outputs": [ - "Divide_225_0" - ] - }, - { - "inputs": [ - "Broadcast_228", - "Add_231" - ], - "name": "Divide_232", - "op": "Divide", - "outputs": [ - "Divide_232_0" - ] - }, - { - "inputs": [ - "Broadcast_236", - "Add_239" - ], - "name": "Divide_240", - "op": "Divide", - "outputs": [ - "Divide_240_0" - ] - }, - { - "inputs": [ - "Broadcast_261", - "Add_264" - ], - "name": "Divide_265", - "op": "Divide", - "outputs": [ - "Divide_265_0" - ] - }, - { - "inputs": [ - "Broadcast_268", - "Add_271" - ], - "name": "Divide_272", - "op": "Divide", - "outputs": [ - "Divide_272_0" - ] - }, - { - "inputs": [ - "Broadcast_276", - "Add_279" - ], - "name": "Divide_280", - "op": "Divide", - "outputs": [ - "Divide_280_0" - ] - }, - { - "inputs": [ - "Divide_232", - "Add_167" - ], - "name": "Multiply_233", - "op": "Multiply", - "outputs": [ - "Multiply_233_0" - ] - }, - { - "inputs": [ - "Divide_240", - "Tanh_242" - ], - "name": "Multiply_243", - "op": "Multiply", - "outputs": [ - "Multiply_243_0" - ] - }, - { - "inputs": [ - "Divide_272", - "Add_207" - ], - "name": "Multiply_273", - "op": "Multiply", - "outputs": [ - "Multiply_273_0" - ] - }, - { - "inputs": [ - "Divide_280", - "Tanh_282" - ], - "name": "Multiply_283", - "op": "Multiply", - "outputs": [ - "Multiply_283_0" - ] - }, - { - "inputs": [ - "Multiply_233", - "Multiply_243" - ], - "name": "Add_244", - "op": "Add", - "outputs": [ - "Add_244_0" - ] - }, - { - "inputs": [ - "Multiply_273", - "Multiply_283" - ], - "name": "Add_284", - "op": "Add", - "outputs": [ - "Add_284_0" - ] - }, - { - "inputs": [ - "Add_244" - ], - "name": "Tanh_245", - "op": "Tanh", - "outputs": [ - "Tanh_245_0" - ] - }, - { - "inputs": [ - "Add_284" - ], - "name": "Tanh_285", - "op": "Tanh", - "outputs": [ - "Tanh_285_0" - ] - }, - { - "inputs": [ - "Divide_225", - "Tanh_245" - ], - "name": "Multiply_246", - "op": "Multiply", - "outputs": [ - "Multiply_246_0" - ] - }, - { - "inputs": [ - "Divide_265", - "Tanh_285" - ], - "name": "Multiply_286", - "op": "Multiply", - "outputs": [ - "Multiply_286_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_246" - ], - "name": "Reshape_247", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_247_0" - ] - }, - { - "inputs": [ - "Multiply_246", - "Reshape_291" - ], - "name": "Dot_292", - "op": "Dot", - "outputs": [ - "Dot_292_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_286", - "Reshape_287" - ], - "name": "Dot_288", - "op": "Dot", - "outputs": [ - "Dot_288_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_286", - "Reshape_331" - ], - "name": "Dot_332", - "op": "Dot", - "outputs": [ - "Dot_332_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_292", - "Broadcast_293" - ], - "name": "Add_294", - "op": "Add", - "outputs": [ - "Add_294_0" - ] - }, - { - "inputs": [ - "Dot_288", - "Broadcast_289" - ], - "name": "Add_290", - "op": "Add", - "outputs": [ - "Add_290_0" - ] - }, - { - "inputs": [ - "Dot_332", - "Broadcast_333" - ], - "name": "Add_334", - "op": "Add", - "outputs": [ - "Add_334_0" - ] - }, - { - "inputs": [ - "Add_290", - "Add_294" - ], - "name": "Add_295", - "op": "Add", - "outputs": [ - "Add_295_0" - ] - }, - { - "inputs": [ - "Add_330", - "Add_334" - ], - "name": "Add_335", - "op": "Add", - "outputs": [ - "Add_335_0" - ] - }, - { - "inputs": [ - "Add_295" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_296", - "op": "Slice", - "outputs": [ - "Slice_296_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_295" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_303", - "op": "Slice", - "outputs": [ - "Slice_303_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_295" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_311", - "op": "Slice", - "outputs": [ - "Slice_311_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_295" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_318", - "op": "Slice", - "outputs": [ - "Slice_318_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_335" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_336", - "op": "Slice", - "outputs": [ - "Slice_336_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_335" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_343", - "op": "Slice", - "outputs": [ - "Slice_343_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_335" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_351", - "op": "Slice", - "outputs": [ - "Slice_351_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_335" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_358", - "op": "Slice", - "outputs": [ - "Slice_358_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_296" - ], - "name": "Negative_299", - "op": "Negative", - "outputs": [ - "Negative_299_0" - ] - }, - { - "inputs": [ - "Slice_303" - ], - "name": "Negative_306", - "op": "Negative", - "outputs": [ - "Negative_306_0" - ] - }, - { - "inputs": [ - "Slice_311" - ], - "name": "Negative_314", - "op": "Negative", - "outputs": [ - "Negative_314_0" - ] - }, - { - "inputs": [ - "Slice_318" - ], - "name": "Tanh_319", - "op": "Tanh", - "outputs": [ - "Tanh_319_0" - ] - }, - { - "inputs": [ - "Slice_336" - ], - "name": "Negative_339", - "op": "Negative", - "outputs": [ - "Negative_339_0" - ] - }, - { - "inputs": [ - "Slice_343" - ], - "name": "Negative_346", - "op": "Negative", - "outputs": [ - "Negative_346_0" - ] - }, - { - "inputs": [ - "Slice_351" - ], - "name": "Negative_354", - "op": "Negative", - "outputs": [ - "Negative_354_0" - ] - }, - { - "inputs": [ - "Slice_358" - ], - "name": "Tanh_359", - "op": "Tanh", - "outputs": [ - "Tanh_359_0" - ] - }, - { - "inputs": [ - "Negative_299" - ], - "name": "Exp_300", - "op": "Exp", - "outputs": [ - "Exp_300_0" - ] - }, - { - "inputs": [ - "Negative_306" - ], - "name": "Exp_307", - "op": "Exp", - "outputs": [ - "Exp_307_0" - ] - }, - { - "inputs": [ - "Negative_314" - ], - "name": "Exp_315", - "op": "Exp", - "outputs": [ - "Exp_315_0" - ] - }, - { - "inputs": [ - "Negative_339" - ], - "name": "Exp_340", - "op": "Exp", - "outputs": [ - "Exp_340_0" - ] - }, - { - "inputs": [ - "Negative_346" - ], - "name": "Exp_347", - "op": "Exp", - "outputs": [ - "Exp_347_0" - ] - }, - { - "inputs": [ - "Negative_354" - ], - "name": "Exp_355", - "op": "Exp", - "outputs": [ - "Exp_355_0" - ] - }, - { - "inputs": [ - "Broadcast_298", - "Exp_300" - ], - "name": "Add_301", - "op": "Add", - "outputs": [ - "Add_301_0" - ] - }, - { - "inputs": [ - "Broadcast_305", - "Exp_307" - ], - "name": "Add_308", - "op": "Add", - "outputs": [ - "Add_308_0" - ] - }, - { - "inputs": [ - "Broadcast_313", - "Exp_315" - ], - "name": "Add_316", - "op": "Add", - "outputs": [ - "Add_316_0" - ] - }, - { - "inputs": [ - "Broadcast_338", - "Exp_340" - ], - "name": "Add_341", - "op": "Add", - "outputs": [ - "Add_341_0" - ] - }, - { - "inputs": [ - "Broadcast_345", - "Exp_347" - ], - "name": "Add_348", - "op": "Add", - "outputs": [ - "Add_348_0" - ] - }, - { - "inputs": [ - "Broadcast_353", - "Exp_355" - ], - "name": "Add_356", - "op": "Add", - "outputs": [ - "Add_356_0" - ] - }, - { - "inputs": [ - "Broadcast_298", - "Add_301" - ], - "name": "Divide_302", - "op": "Divide", - "outputs": [ - "Divide_302_0" - ] - }, - { - "inputs": [ - "Broadcast_305", - "Add_308" - ], - "name": "Divide_309", - "op": "Divide", - "outputs": [ - "Divide_309_0" - ] - }, - { - "inputs": [ - "Broadcast_313", - "Add_316" - ], - "name": "Divide_317", - "op": "Divide", - "outputs": [ - "Divide_317_0" - ] - }, - { - "inputs": [ - "Broadcast_338", - "Add_341" - ], - "name": "Divide_342", - "op": "Divide", - "outputs": [ - "Divide_342_0" - ] - }, - { - "inputs": [ - "Broadcast_345", - "Add_348" - ], - "name": "Divide_349", - "op": "Divide", - "outputs": [ - "Divide_349_0" - ] - }, - { - "inputs": [ - "Broadcast_353", - "Add_356" - ], - "name": "Divide_357", - "op": "Divide", - "outputs": [ - "Divide_357_0" - ] - }, - { - "inputs": [ - "Divide_309", - "Add_244" - ], - "name": "Multiply_310", - "op": "Multiply", - "outputs": [ - "Multiply_310_0" - ] - }, - { - "inputs": [ - "Divide_317", - "Tanh_319" - ], - "name": "Multiply_320", - "op": "Multiply", - "outputs": [ - "Multiply_320_0" - ] - }, - { - "inputs": [ - "Divide_349", - "Add_284" - ], - "name": "Multiply_350", - "op": "Multiply", - "outputs": [ - "Multiply_350_0" - ] - }, - { - "inputs": [ - "Divide_357", - "Tanh_359" - ], - "name": "Multiply_360", - "op": "Multiply", - "outputs": [ - "Multiply_360_0" - ] - }, - { - "inputs": [ - "Multiply_310", - "Multiply_320" - ], - "name": "Add_321", - "op": "Add", - "outputs": [ - "Add_321_0" - ] - }, - { - "inputs": [ - "Multiply_350", - "Multiply_360" - ], - "name": "Add_361", - "op": "Add", - "outputs": [ - "Add_361_0" - ] - }, - { - "inputs": [ - "Add_321" - ], - "name": "Tanh_322", - "op": "Tanh", - "outputs": [ - "Tanh_322_0" - ] - }, - { - "inputs": [ - "Add_361" - ], - "name": "Tanh_362", - "op": "Tanh", - "outputs": [ - "Tanh_362_0" - ] - }, - { - "inputs": [ - "Divide_302", - "Tanh_322" - ], - "name": "Multiply_323", - "op": "Multiply", - "outputs": [ - "Multiply_323_0" - ] - }, - { - "inputs": [ - "Divide_342", - "Tanh_362" - ], - "name": "Multiply_363", - "op": "Multiply", - "outputs": [ - "Multiply_363_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_323" - ], - "name": "Reshape_324", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_324_0" - ] - }, - { - "inputs": [ - "Multiply_323", - "Reshape_368" - ], - "name": "Dot_369", - "op": "Dot", - "outputs": [ - "Dot_369_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_363", - "Reshape_364" - ], - "name": "Dot_365", - "op": "Dot", - "outputs": [ - "Dot_365_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_363", - "Reshape_408" - ], - "name": "Dot_409", - "op": "Dot", - "outputs": [ - "Dot_409_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_369", - "Broadcast_370" - ], - "name": "Add_371", - "op": "Add", - "outputs": [ - "Add_371_0" - ] - }, - { - "inputs": [ - "Dot_365", - "Broadcast_366" - ], - "name": "Add_367", - "op": "Add", - "outputs": [ - "Add_367_0" - ] - }, - { - "inputs": [ - "Dot_409", - "Broadcast_410" - ], - "name": "Add_411", - "op": "Add", - "outputs": [ - "Add_411_0" - ] - }, - { - "inputs": [ - "Add_367", - "Add_371" - ], - "name": "Add_372", - "op": "Add", - "outputs": [ - "Add_372_0" - ] - }, - { - "inputs": [ - "Add_407", - "Add_411" - ], - "name": "Add_412", - "op": "Add", - "outputs": [ - "Add_412_0" - ] - }, - { - "inputs": [ - "Add_372" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_373", - "op": "Slice", - "outputs": [ - "Slice_373_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_372" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_380", - "op": "Slice", - "outputs": [ - "Slice_380_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_372" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_388", - "op": "Slice", - "outputs": [ - "Slice_388_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_372" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_395", - "op": "Slice", - "outputs": [ - "Slice_395_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_412" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_420", - "op": "Slice", - "outputs": [ - "Slice_420_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_412" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_413", - "op": "Slice", - "outputs": [ - "Slice_413_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_412" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_428", - "op": "Slice", - "outputs": [ - "Slice_428_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_412" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_435", - "op": "Slice", - "outputs": [ - "Slice_435_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_373" - ], - "name": "Negative_376", - "op": "Negative", - "outputs": [ - "Negative_376_0" - ] - }, - { - "inputs": [ - "Slice_380" - ], - "name": "Negative_383", - "op": "Negative", - "outputs": [ - "Negative_383_0" - ] - }, - { - "inputs": [ - "Slice_388" - ], - "name": "Negative_391", - "op": "Negative", - "outputs": [ - "Negative_391_0" - ] - }, - { - "inputs": [ - "Slice_395" - ], - "name": "Tanh_396", - "op": "Tanh", - "outputs": [ - "Tanh_396_0" - ] - }, - { - "inputs": [ - "Slice_420" - ], - "name": "Negative_423", - "op": "Negative", - "outputs": [ - "Negative_423_0" - ] - }, - { - "inputs": [ - "Slice_413" - ], - "name": "Negative_416", - "op": "Negative", - "outputs": [ - "Negative_416_0" - ] - }, - { - "inputs": [ - "Slice_428" - ], - "name": "Negative_431", - "op": "Negative", - "outputs": [ - "Negative_431_0" - ] - }, - { - "inputs": [ - "Slice_435" - ], - "name": "Tanh_436", - "op": "Tanh", - "outputs": [ - "Tanh_436_0" - ] - }, - { - "inputs": [ - "Negative_376" - ], - "name": "Exp_377", - "op": "Exp", - "outputs": [ - "Exp_377_0" - ] - }, - { - "inputs": [ - "Negative_383" - ], - "name": "Exp_384", - "op": "Exp", - "outputs": [ - "Exp_384_0" - ] - }, - { - "inputs": [ - "Negative_391" - ], - "name": "Exp_392", - "op": "Exp", - "outputs": [ - "Exp_392_0" - ] - }, - { - "inputs": [ - "Negative_423" - ], - "name": "Exp_424", - "op": "Exp", - "outputs": [ - "Exp_424_0" - ] - }, - { - "inputs": [ - "Negative_416" - ], - "name": "Exp_417", - "op": "Exp", - "outputs": [ - "Exp_417_0" - ] - }, - { - "inputs": [ - "Negative_431" - ], - "name": "Exp_432", - "op": "Exp", - "outputs": [ - "Exp_432_0" - ] - }, - { - "inputs": [ - "Broadcast_375", - "Exp_377" - ], - "name": "Add_378", - "op": "Add", - "outputs": [ - "Add_378_0" - ] - }, - { - "inputs": [ - "Broadcast_382", - "Exp_384" - ], - "name": "Add_385", - "op": "Add", - "outputs": [ - "Add_385_0" - ] - }, - { - "inputs": [ - "Broadcast_390", - "Exp_392" - ], - "name": "Add_393", - "op": "Add", - "outputs": [ - "Add_393_0" - ] - }, - { - "inputs": [ - "Broadcast_422", - "Exp_424" - ], - "name": "Add_425", - "op": "Add", - "outputs": [ - "Add_425_0" - ] - }, - { - "inputs": [ - "Broadcast_415", - "Exp_417" - ], - "name": "Add_418", - "op": "Add", - "outputs": [ - "Add_418_0" - ] - }, - { - "inputs": [ - "Broadcast_430", - "Exp_432" - ], - "name": "Add_433", - "op": "Add", - "outputs": [ - "Add_433_0" - ] - }, - { - "inputs": [ - "Broadcast_375", - "Add_378" - ], - "name": "Divide_379", - "op": "Divide", - "outputs": [ - "Divide_379_0" - ] - }, - { - "inputs": [ - "Broadcast_382", - "Add_385" - ], - "name": "Divide_386", - "op": "Divide", - "outputs": [ - "Divide_386_0" - ] - }, - { - "inputs": [ - "Broadcast_390", - "Add_393" - ], - "name": "Divide_394", - "op": "Divide", - "outputs": [ - "Divide_394_0" - ] - }, - { - "inputs": [ - "Broadcast_422", - "Add_425" - ], - "name": "Divide_426", - "op": "Divide", - "outputs": [ - "Divide_426_0" - ] - }, - { - "inputs": [ - "Broadcast_415", - "Add_418" - ], - "name": "Divide_419", - "op": "Divide", - "outputs": [ - "Divide_419_0" - ] - }, - { - "inputs": [ - "Broadcast_430", - "Add_433" - ], - "name": "Divide_434", - "op": "Divide", - "outputs": [ - "Divide_434_0" - ] - }, - { - "inputs": [ - "Divide_386", - "Add_321" - ], - "name": "Multiply_387", - "op": "Multiply", - "outputs": [ - "Multiply_387_0" - ] - }, - { - "inputs": [ - "Divide_394", - "Tanh_396" - ], - "name": "Multiply_397", - "op": "Multiply", - "outputs": [ - "Multiply_397_0" - ] - }, - { - "inputs": [ - "Divide_426", - "Add_361" - ], - "name": "Multiply_427", - "op": "Multiply", - "outputs": [ - "Multiply_427_0" - ] - }, - { - "inputs": [ - "Divide_434", - "Tanh_436" - ], - "name": "Multiply_437", - "op": "Multiply", - "outputs": [ - "Multiply_437_0" - ] - }, - { - "inputs": [ - "Multiply_387", - "Multiply_397" - ], - "name": "Add_398", - "op": "Add", - "outputs": [ - "Add_398_0" - ] - }, - { - "inputs": [ - "Multiply_427", - "Multiply_437" - ], - "name": "Add_438", - "op": "Add", - "outputs": [ - "Add_438_0" - ] - }, - { - "inputs": [ - "Add_398" - ], - "name": "Tanh_399", - "op": "Tanh", - "outputs": [ - "Tanh_399_0" - ] - }, - { - "inputs": [ - "Add_438" - ], - "name": "Tanh_439", - "op": "Tanh", - "outputs": [ - "Tanh_439_0" - ] - }, - { - "inputs": [ - "Divide_379", - "Tanh_399" - ], - "name": "Multiply_400", - "op": "Multiply", - "outputs": [ - "Multiply_400_0" - ] - }, - { - "inputs": [ - "Divide_419", - "Tanh_439" - ], - "name": "Multiply_440", - "op": "Multiply", - "outputs": [ - "Multiply_440_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_400" - ], - "name": "Reshape_401", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_401_0" - ] - }, - { - "inputs": [ - "Multiply_400", - "Reshape_445" - ], - "name": "Dot_446", - "op": "Dot", - "outputs": [ - "Dot_446_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_440", - "Reshape_441" - ], - "name": "Dot_442", - "op": "Dot", - "outputs": [ - "Dot_442_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_440", - "Reshape_485" - ], - "name": "Dot_486", - "op": "Dot", - "outputs": [ - "Dot_486_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_446", - "Broadcast_447" - ], - "name": "Add_448", - "op": "Add", - "outputs": [ - "Add_448_0" - ] - }, - { - "inputs": [ - "Dot_442", - "Broadcast_443" - ], - "name": "Add_444", - "op": "Add", - "outputs": [ - "Add_444_0" - ] - }, - { - "inputs": [ - "Dot_486", - "Broadcast_487" - ], - "name": "Add_488", - "op": "Add", - "outputs": [ - "Add_488_0" - ] - }, - { - "inputs": [ - "Add_444", - "Add_448" - ], - "name": "Add_449", - "op": "Add", - "outputs": [ - "Add_449_0" - ] - }, - { - "inputs": [ - "Add_484", - "Add_488" - ], - "name": "Add_489", - "op": "Add", - "outputs": [ - "Add_489_0" - ] - }, - { - "inputs": [ - "Add_449" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_450", - "op": "Slice", - "outputs": [ - "Slice_450_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_449" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_457", - "op": "Slice", - "outputs": [ - "Slice_457_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_449" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_465", - "op": "Slice", - "outputs": [ - "Slice_465_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_449" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_472", - "op": "Slice", - "outputs": [ - "Slice_472_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_489" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_490", - "op": "Slice", - "outputs": [ - "Slice_490_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_489" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_497", - "op": "Slice", - "outputs": [ - "Slice_497_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_489" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_505", - "op": "Slice", - "outputs": [ - "Slice_505_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_489" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_512", - "op": "Slice", - "outputs": [ - "Slice_512_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_450" - ], - "name": "Negative_453", - "op": "Negative", - "outputs": [ - "Negative_453_0" - ] - }, - { - "inputs": [ - "Slice_457" - ], - "name": "Negative_460", - "op": "Negative", - "outputs": [ - "Negative_460_0" - ] - }, - { - "inputs": [ - "Slice_465" - ], - "name": "Negative_468", - "op": "Negative", - "outputs": [ - "Negative_468_0" - ] - }, - { - "inputs": [ - "Slice_472" - ], - "name": "Tanh_473", - "op": "Tanh", - "outputs": [ - "Tanh_473_0" - ] - }, - { - "inputs": [ - "Slice_490" - ], - "name": "Negative_493", - "op": "Negative", - "outputs": [ - "Negative_493_0" - ] - }, - { - "inputs": [ - "Slice_497" - ], - "name": "Negative_500", - "op": "Negative", - "outputs": [ - "Negative_500_0" - ] - }, - { - "inputs": [ - "Slice_505" - ], - "name": "Negative_508", - "op": "Negative", - "outputs": [ - "Negative_508_0" - ] - }, - { - "inputs": [ - "Slice_512" - ], - "name": "Tanh_513", - "op": "Tanh", - "outputs": [ - "Tanh_513_0" - ] - }, - { - "inputs": [ - "Negative_453" - ], - "name": "Exp_454", - "op": "Exp", - "outputs": [ - "Exp_454_0" - ] - }, - { - "inputs": [ - "Negative_460" - ], - "name": "Exp_461", - "op": "Exp", - "outputs": [ - "Exp_461_0" - ] - }, - { - "inputs": [ - "Negative_468" - ], - "name": "Exp_469", - "op": "Exp", - "outputs": [ - "Exp_469_0" - ] - }, - { - "inputs": [ - "Negative_493" - ], - "name": "Exp_494", - "op": "Exp", - "outputs": [ - "Exp_494_0" - ] - }, - { - "inputs": [ - "Negative_500" - ], - "name": "Exp_501", - "op": "Exp", - "outputs": [ - "Exp_501_0" - ] - }, - { - "inputs": [ - "Negative_508" - ], - "name": "Exp_509", - "op": "Exp", - "outputs": [ - "Exp_509_0" - ] - }, - { - "inputs": [ - "Broadcast_452", - "Exp_454" - ], - "name": "Add_455", - "op": "Add", - "outputs": [ - "Add_455_0" - ] - }, - { - "inputs": [ - "Broadcast_459", - "Exp_461" - ], - "name": "Add_462", - "op": "Add", - "outputs": [ - "Add_462_0" - ] - }, - { - "inputs": [ - "Broadcast_467", - "Exp_469" - ], - "name": "Add_470", - "op": "Add", - "outputs": [ - "Add_470_0" - ] - }, - { - "inputs": [ - "Broadcast_492", - "Exp_494" - ], - "name": "Add_495", - "op": "Add", - "outputs": [ - "Add_495_0" - ] - }, - { - "inputs": [ - "Broadcast_499", - "Exp_501" - ], - "name": "Add_502", - "op": "Add", - "outputs": [ - "Add_502_0" - ] - }, - { - "inputs": [ - "Broadcast_507", - "Exp_509" - ], - "name": "Add_510", - "op": "Add", - "outputs": [ - "Add_510_0" - ] - }, - { - "inputs": [ - "Broadcast_452", - "Add_455" - ], - "name": "Divide_456", - "op": "Divide", - "outputs": [ - "Divide_456_0" - ] - }, - { - "inputs": [ - "Broadcast_459", - "Add_462" - ], - "name": "Divide_463", - "op": "Divide", - "outputs": [ - "Divide_463_0" - ] - }, - { - "inputs": [ - "Broadcast_467", - "Add_470" - ], - "name": "Divide_471", - "op": "Divide", - "outputs": [ - "Divide_471_0" - ] - }, - { - "inputs": [ - "Broadcast_492", - "Add_495" - ], - "name": "Divide_496", - "op": "Divide", - "outputs": [ - "Divide_496_0" - ] - }, - { - "inputs": [ - "Broadcast_499", - "Add_502" - ], - "name": "Divide_503", - "op": "Divide", - "outputs": [ - "Divide_503_0" - ] - }, - { - "inputs": [ - "Broadcast_507", - "Add_510" - ], - "name": "Divide_511", - "op": "Divide", - "outputs": [ - "Divide_511_0" - ] - }, - { - "inputs": [ - "Divide_463", - "Add_398" - ], - "name": "Multiply_464", - "op": "Multiply", - "outputs": [ - "Multiply_464_0" - ] - }, - { - "inputs": [ - "Divide_471", - "Tanh_473" - ], - "name": "Multiply_474", - "op": "Multiply", - "outputs": [ - "Multiply_474_0" - ] - }, - { - "inputs": [ - "Divide_503", - "Add_438" - ], - "name": "Multiply_504", - "op": "Multiply", - "outputs": [ - "Multiply_504_0" - ] - }, - { - "inputs": [ - "Divide_511", - "Tanh_513" - ], - "name": "Multiply_514", - "op": "Multiply", - "outputs": [ - "Multiply_514_0" - ] - }, - { - "inputs": [ - "Multiply_464", - "Multiply_474" - ], - "name": "Add_475", - "op": "Add", - "outputs": [ - "Add_475_0" - ] - }, - { - "inputs": [ - "Multiply_504", - "Multiply_514" - ], - "name": "Add_515", - "op": "Add", - "outputs": [ - "Add_515_0" - ] - }, - { - "inputs": [ - "Add_475" - ], - "name": "Tanh_476", - "op": "Tanh", - "outputs": [ - "Tanh_476_0" - ] - }, - { - "inputs": [ - "Add_515" - ], - "name": "Tanh_516", - "op": "Tanh", - "outputs": [ - "Tanh_516_0" - ] - }, - { - "inputs": [ - "Divide_456", - "Tanh_476" - ], - "name": "Multiply_477", - "op": "Multiply", - "outputs": [ - "Multiply_477_0" - ] - }, - { - "inputs": [ - "Divide_496", - "Tanh_516" - ], - "name": "Multiply_517", - "op": "Multiply", - "outputs": [ - "Multiply_517_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_477" - ], - "name": "Reshape_478", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_478_0" - ] - }, - { - "inputs": [ - "Multiply_477", - "Reshape_522" - ], - "name": "Dot_523", - "op": "Dot", - "outputs": [ - "Dot_523_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_517", - "Reshape_518" - ], - "name": "Dot_519", - "op": "Dot", - "outputs": [ - "Dot_519_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_517", - "Reshape_562" - ], - "name": "Dot_563", - "op": "Dot", - "outputs": [ - "Dot_563_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_523", - "Broadcast_524" - ], - "name": "Add_525", - "op": "Add", - "outputs": [ - "Add_525_0" - ] - }, - { - "inputs": [ - "Dot_519", - "Broadcast_520" - ], - "name": "Add_521", - "op": "Add", - "outputs": [ - "Add_521_0" - ] - }, - { - "inputs": [ - "Dot_563", - "Broadcast_564" - ], - "name": "Add_565", - "op": "Add", - "outputs": [ - "Add_565_0" - ] - }, - { - "inputs": [ - "Add_521", - "Add_525" - ], - "name": "Add_526", - "op": "Add", - "outputs": [ - "Add_526_0" - ] - }, - { - "inputs": [ - "Add_561", - "Add_565" - ], - "name": "Add_566", - "op": "Add", - "outputs": [ - "Add_566_0" - ] - }, - { - "inputs": [ - "Add_526" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_527", - "op": "Slice", - "outputs": [ - "Slice_527_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_526" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_534", - "op": "Slice", - "outputs": [ - "Slice_534_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_526" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_542", - "op": "Slice", - "outputs": [ - "Slice_542_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_526" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_549", - "op": "Slice", - "outputs": [ - "Slice_549_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_566" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_567", - "op": "Slice", - "outputs": [ - "Slice_567_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_566" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_574", - "op": "Slice", - "outputs": [ - "Slice_574_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_566" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_582", - "op": "Slice", - "outputs": [ - "Slice_582_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_566" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_589", - "op": "Slice", - "outputs": [ - "Slice_589_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_527" - ], - "name": "Negative_530", - "op": "Negative", - "outputs": [ - "Negative_530_0" - ] - }, - { - "inputs": [ - "Slice_534" - ], - "name": "Negative_537", - "op": "Negative", - "outputs": [ - "Negative_537_0" - ] - }, - { - "inputs": [ - "Slice_542" - ], - "name": "Negative_545", - "op": "Negative", - "outputs": [ - "Negative_545_0" - ] - }, - { - "inputs": [ - "Slice_549" - ], - "name": "Tanh_550", - "op": "Tanh", - "outputs": [ - "Tanh_550_0" - ] - }, - { - "inputs": [ - "Slice_567" - ], - "name": "Negative_570", - "op": "Negative", - "outputs": [ - "Negative_570_0" - ] - }, - { - "inputs": [ - "Slice_574" - ], - "name": "Negative_577", - "op": "Negative", - "outputs": [ - "Negative_577_0" - ] - }, - { - "inputs": [ - "Slice_582" - ], - "name": "Negative_585", - "op": "Negative", - "outputs": [ - "Negative_585_0" - ] - }, - { - "inputs": [ - "Slice_589" - ], - "name": "Tanh_590", - "op": "Tanh", - "outputs": [ - "Tanh_590_0" - ] - }, - { - "inputs": [ - "Negative_530" - ], - "name": "Exp_531", - "op": "Exp", - "outputs": [ - "Exp_531_0" - ] - }, - { - "inputs": [ - "Negative_537" - ], - "name": "Exp_538", - "op": "Exp", - "outputs": [ - "Exp_538_0" - ] - }, - { - "inputs": [ - "Negative_545" - ], - "name": "Exp_546", - "op": "Exp", - "outputs": [ - "Exp_546_0" - ] - }, - { - "inputs": [ - "Negative_570" - ], - "name": "Exp_571", - "op": "Exp", - "outputs": [ - "Exp_571_0" - ] - }, - { - "inputs": [ - "Negative_577" - ], - "name": "Exp_578", - "op": "Exp", - "outputs": [ - "Exp_578_0" - ] - }, - { - "inputs": [ - "Negative_585" - ], - "name": "Exp_586", - "op": "Exp", - "outputs": [ - "Exp_586_0" - ] - }, - { - "inputs": [ - "Broadcast_529", - "Exp_531" - ], - "name": "Add_532", - "op": "Add", - "outputs": [ - "Add_532_0" - ] - }, - { - "inputs": [ - "Broadcast_536", - "Exp_538" - ], - "name": "Add_539", - "op": "Add", - "outputs": [ - "Add_539_0" - ] - }, - { - "inputs": [ - "Broadcast_544", - "Exp_546" - ], - "name": "Add_547", - "op": "Add", - "outputs": [ - "Add_547_0" - ] - }, - { - "inputs": [ - "Broadcast_569", - "Exp_571" - ], - "name": "Add_572", - "op": "Add", - "outputs": [ - "Add_572_0" - ] - }, - { - "inputs": [ - "Broadcast_576", - "Exp_578" - ], - "name": "Add_579", - "op": "Add", - "outputs": [ - "Add_579_0" - ] - }, - { - "inputs": [ - "Broadcast_584", - "Exp_586" - ], - "name": "Add_587", - "op": "Add", - "outputs": [ - "Add_587_0" - ] - }, - { - "inputs": [ - "Broadcast_529", - "Add_532" - ], - "name": "Divide_533", - "op": "Divide", - "outputs": [ - "Divide_533_0" - ] - }, - { - "inputs": [ - "Broadcast_536", - "Add_539" - ], - "name": "Divide_540", - "op": "Divide", - "outputs": [ - "Divide_540_0" - ] - }, - { - "inputs": [ - "Broadcast_544", - "Add_547" - ], - "name": "Divide_548", - "op": "Divide", - "outputs": [ - "Divide_548_0" - ] - }, - { - "inputs": [ - "Broadcast_569", - "Add_572" - ], - "name": "Divide_573", - "op": "Divide", - "outputs": [ - "Divide_573_0" - ] - }, - { - "inputs": [ - "Broadcast_576", - "Add_579" - ], - "name": "Divide_580", - "op": "Divide", - "outputs": [ - "Divide_580_0" - ] - }, - { - "inputs": [ - "Broadcast_584", - "Add_587" - ], - "name": "Divide_588", - "op": "Divide", - "outputs": [ - "Divide_588_0" - ] - }, - { - "inputs": [ - "Divide_540", - "Add_475" - ], - "name": "Multiply_541", - "op": "Multiply", - "outputs": [ - "Multiply_541_0" - ] - }, - { - "inputs": [ - "Divide_548", - "Tanh_550" - ], - "name": "Multiply_551", - "op": "Multiply", - "outputs": [ - "Multiply_551_0" - ] - }, - { - "inputs": [ - "Divide_580", - "Add_515" - ], - "name": "Multiply_581", - "op": "Multiply", - "outputs": [ - "Multiply_581_0" - ] - }, - { - "inputs": [ - "Divide_588", - "Tanh_590" - ], - "name": "Multiply_591", - "op": "Multiply", - "outputs": [ - "Multiply_591_0" - ] - }, - { - "inputs": [ - "Multiply_541", - "Multiply_551" - ], - "name": "Add_552", - "op": "Add", - "outputs": [ - "Add_552_0" - ] - }, - { - "inputs": [ - "Multiply_581", - "Multiply_591" - ], - "name": "Add_592", - "op": "Add", - "outputs": [ - "Add_592_0" - ] - }, - { - "inputs": [ - "Add_552" - ], - "name": "Tanh_553", - "op": "Tanh", - "outputs": [ - "Tanh_553_0" - ] - }, - { - "inputs": [ - "Add_592" - ], - "name": "Tanh_593", - "op": "Tanh", - "outputs": [ - "Tanh_593_0" - ] - }, - { - "inputs": [ - "Divide_533", - "Tanh_553" - ], - "name": "Multiply_554", - "op": "Multiply", - "outputs": [ - "Multiply_554_0" - ] - }, - { - "inputs": [ - "Divide_573", - "Tanh_593" - ], - "name": "Multiply_594", - "op": "Multiply", - "outputs": [ - "Multiply_594_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_554" - ], - "name": "Reshape_555", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_555_0" - ] - }, - { - "inputs": [ - "Multiply_554", - "Reshape_599" - ], - "name": "Dot_600", - "op": "Dot", - "outputs": [ - "Dot_600_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_594", - "Reshape_595" - ], - "name": "Dot_596", - "op": "Dot", - "outputs": [ - "Dot_596_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_594", - "Reshape_639" - ], - "name": "Dot_640", - "op": "Dot", - "outputs": [ - "Dot_640_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_600", - "Broadcast_601" - ], - "name": "Add_602", - "op": "Add", - "outputs": [ - "Add_602_0" - ] - }, - { - "inputs": [ - "Dot_596", - "Broadcast_597" - ], - "name": "Add_598", - "op": "Add", - "outputs": [ - "Add_598_0" - ] - }, - { - "inputs": [ - "Dot_640", - "Broadcast_641" - ], - "name": "Add_642", - "op": "Add", - "outputs": [ - "Add_642_0" - ] - }, - { - "inputs": [ - "Add_598", - "Add_602" - ], - "name": "Add_603", - "op": "Add", - "outputs": [ - "Add_603_0" - ] - }, - { - "inputs": [ - "Add_638", - "Add_642" - ], - "name": "Add_643", - "op": "Add", - "outputs": [ - "Add_643_0" - ] - }, - { - "inputs": [ - "Add_603" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_604", - "op": "Slice", - "outputs": [ - "Slice_604_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_603" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_611", - "op": "Slice", - "outputs": [ - "Slice_611_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_603" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_619", - "op": "Slice", - "outputs": [ - "Slice_619_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_603" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_626", - "op": "Slice", - "outputs": [ - "Slice_626_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_643" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_644", - "op": "Slice", - "outputs": [ - "Slice_644_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_643" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_651", - "op": "Slice", - "outputs": [ - "Slice_651_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_643" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_659", - "op": "Slice", - "outputs": [ - "Slice_659_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_643" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_666", - "op": "Slice", - "outputs": [ - "Slice_666_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_604" - ], - "name": "Negative_607", - "op": "Negative", - "outputs": [ - "Negative_607_0" - ] - }, - { - "inputs": [ - "Slice_611" - ], - "name": "Negative_614", - "op": "Negative", - "outputs": [ - "Negative_614_0" - ] - }, - { - "inputs": [ - "Slice_619" - ], - "name": "Negative_622", - "op": "Negative", - "outputs": [ - "Negative_622_0" - ] - }, - { - "inputs": [ - "Slice_626" - ], - "name": "Tanh_627", - "op": "Tanh", - "outputs": [ - "Tanh_627_0" - ] - }, - { - "inputs": [ - "Slice_644" - ], - "name": "Negative_647", - "op": "Negative", - "outputs": [ - "Negative_647_0" - ] - }, - { - "inputs": [ - "Slice_651" - ], - "name": "Negative_654", - "op": "Negative", - "outputs": [ - "Negative_654_0" - ] - }, - { - "inputs": [ - "Slice_659" - ], - "name": "Negative_662", - "op": "Negative", - "outputs": [ - "Negative_662_0" - ] - }, - { - "inputs": [ - "Slice_666" - ], - "name": "Tanh_667", - "op": "Tanh", - "outputs": [ - "Tanh_667_0" - ] - }, - { - "inputs": [ - "Negative_607" - ], - "name": "Exp_608", - "op": "Exp", - "outputs": [ - "Exp_608_0" - ] - }, - { - "inputs": [ - "Negative_614" - ], - "name": "Exp_615", - "op": "Exp", - "outputs": [ - "Exp_615_0" - ] - }, - { - "inputs": [ - "Negative_622" - ], - "name": "Exp_623", - "op": "Exp", - "outputs": [ - "Exp_623_0" - ] - }, - { - "inputs": [ - "Negative_647" - ], - "name": "Exp_648", - "op": "Exp", - "outputs": [ - "Exp_648_0" - ] - }, - { - "inputs": [ - "Negative_654" - ], - "name": "Exp_655", - "op": "Exp", - "outputs": [ - "Exp_655_0" - ] - }, - { - "inputs": [ - "Negative_662" - ], - "name": "Exp_663", - "op": "Exp", - "outputs": [ - "Exp_663_0" - ] - }, - { - "inputs": [ - "Broadcast_606", - "Exp_608" - ], - "name": "Add_609", - "op": "Add", - "outputs": [ - "Add_609_0" - ] - }, - { - "inputs": [ - "Broadcast_613", - "Exp_615" - ], - "name": "Add_616", - "op": "Add", - "outputs": [ - "Add_616_0" - ] - }, - { - "inputs": [ - "Broadcast_621", - "Exp_623" - ], - "name": "Add_624", - "op": "Add", - "outputs": [ - "Add_624_0" - ] - }, - { - "inputs": [ - "Broadcast_646", - "Exp_648" - ], - "name": "Add_649", - "op": "Add", - "outputs": [ - "Add_649_0" - ] - }, - { - "inputs": [ - "Broadcast_653", - "Exp_655" - ], - "name": "Add_656", - "op": "Add", - "outputs": [ - "Add_656_0" - ] - }, - { - "inputs": [ - "Broadcast_661", - "Exp_663" - ], - "name": "Add_664", - "op": "Add", - "outputs": [ - "Add_664_0" - ] - }, - { - "inputs": [ - "Broadcast_606", - "Add_609" - ], - "name": "Divide_610", - "op": "Divide", - "outputs": [ - "Divide_610_0" - ] - }, - { - "inputs": [ - "Broadcast_613", - "Add_616" - ], - "name": "Divide_617", - "op": "Divide", - "outputs": [ - "Divide_617_0" - ] - }, - { - "inputs": [ - "Broadcast_621", - "Add_624" - ], - "name": "Divide_625", - "op": "Divide", - "outputs": [ - "Divide_625_0" - ] - }, - { - "inputs": [ - "Broadcast_646", - "Add_649" - ], - "name": "Divide_650", - "op": "Divide", - "outputs": [ - "Divide_650_0" - ] - }, - { - "inputs": [ - "Broadcast_653", - "Add_656" - ], - "name": "Divide_657", - "op": "Divide", - "outputs": [ - "Divide_657_0" - ] - }, - { - "inputs": [ - "Broadcast_661", - "Add_664" - ], - "name": "Divide_665", - "op": "Divide", - "outputs": [ - "Divide_665_0" - ] - }, - { - "inputs": [ - "Divide_617", - "Add_552" - ], - "name": "Multiply_618", - "op": "Multiply", - "outputs": [ - "Multiply_618_0" - ] - }, - { - "inputs": [ - "Divide_625", - "Tanh_627" - ], - "name": "Multiply_628", - "op": "Multiply", - "outputs": [ - "Multiply_628_0" - ] - }, - { - "inputs": [ - "Divide_657", - "Add_592" - ], - "name": "Multiply_658", - "op": "Multiply", - "outputs": [ - "Multiply_658_0" - ] - }, - { - "inputs": [ - "Divide_665", - "Tanh_667" - ], - "name": "Multiply_668", - "op": "Multiply", - "outputs": [ - "Multiply_668_0" - ] - }, - { - "inputs": [ - "Multiply_618", - "Multiply_628" - ], - "name": "Add_629", - "op": "Add", - "outputs": [ - "Add_629_0" - ] - }, - { - "inputs": [ - "Multiply_658", - "Multiply_668" - ], - "name": "Add_669", - "op": "Add", - "outputs": [ - "Add_669_0" - ] - }, - { - "inputs": [ - "Add_629" - ], - "name": "Tanh_630", - "op": "Tanh", - "outputs": [ - "Tanh_630_0" - ] - }, - { - "inputs": [ - "Add_669" - ], - "name": "Tanh_670", - "op": "Tanh", - "outputs": [ - "Tanh_670_0" - ] - }, - { - "inputs": [ - "Divide_610", - "Tanh_630" - ], - "name": "Multiply_631", - "op": "Multiply", - "outputs": [ - "Multiply_631_0" - ] - }, - { - "inputs": [ - "Divide_650", - "Tanh_670" - ], - "name": "Multiply_671", - "op": "Multiply", - "outputs": [ - "Multiply_671_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_631" - ], - "name": "Reshape_632", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_632_0" - ] - }, - { - "inputs": [ - "Multiply_631", - "Reshape_676" - ], - "name": "Dot_677", - "op": "Dot", - "outputs": [ - "Dot_677_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_671", - "Reshape_672" - ], - "name": "Dot_673", - "op": "Dot", - "outputs": [ - "Dot_673_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_671", - "Reshape_716" - ], - "name": "Dot_717", - "op": "Dot", - "outputs": [ - "Dot_717_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_677", - "Broadcast_678" - ], - "name": "Add_679", - "op": "Add", - "outputs": [ - "Add_679_0" - ] - }, - { - "inputs": [ - "Dot_673", - "Broadcast_674" - ], - "name": "Add_675", - "op": "Add", - "outputs": [ - "Add_675_0" - ] - }, - { - "inputs": [ - "Dot_717", - "Broadcast_718" - ], - "name": "Add_719", - "op": "Add", - "outputs": [ - "Add_719_0" - ] - }, - { - "inputs": [ - "Add_675", - "Add_679" - ], - "name": "Add_680", - "op": "Add", - "outputs": [ - "Add_680_0" - ] - }, - { - "inputs": [ - "Add_715", - "Add_719" - ], - "name": "Add_720", - "op": "Add", - "outputs": [ - "Add_720_0" - ] - }, - { - "inputs": [ - "Add_680" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_681", - "op": "Slice", - "outputs": [ - "Slice_681_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_680" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_688", - "op": "Slice", - "outputs": [ - "Slice_688_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_680" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_696", - "op": "Slice", - "outputs": [ - "Slice_696_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_680" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_703", - "op": "Slice", - "outputs": [ - "Slice_703_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Add_720" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_721", - "op": "Slice", - "outputs": [ - "Slice_721_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_720" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_728", - "op": "Slice", - "outputs": [ - "Slice_728_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_720" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_736", - "op": "Slice", - "outputs": [ - "Slice_736_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_720" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_743", - "op": "Slice", - "outputs": [ - "Slice_743_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_681" - ], - "name": "Negative_684", - "op": "Negative", - "outputs": [ - "Negative_684_0" - ] - }, - { - "inputs": [ - "Slice_688" - ], - "name": "Negative_691", - "op": "Negative", - "outputs": [ - "Negative_691_0" - ] - }, - { - "inputs": [ - "Slice_696" - ], - "name": "Negative_699", - "op": "Negative", - "outputs": [ - "Negative_699_0" - ] - }, - { - "inputs": [ - "Slice_703" - ], - "name": "Tanh_704", - "op": "Tanh", - "outputs": [ - "Tanh_704_0" - ] - }, - { - "inputs": [ - "Slice_721" - ], - "name": "Negative_724", - "op": "Negative", - "outputs": [ - "Negative_724_0" - ] - }, - { - "inputs": [ - "Slice_728" - ], - "name": "Negative_731", - "op": "Negative", - "outputs": [ - "Negative_731_0" - ] - }, - { - "inputs": [ - "Slice_736" - ], - "name": "Negative_739", - "op": "Negative", - "outputs": [ - "Negative_739_0" - ] - }, - { - "inputs": [ - "Slice_743" - ], - "name": "Tanh_744", - "op": "Tanh", - "outputs": [ - "Tanh_744_0" - ] - }, - { - "inputs": [ - "Negative_684" - ], - "name": "Exp_685", - "op": "Exp", - "outputs": [ - "Exp_685_0" - ] - }, - { - "inputs": [ - "Negative_691" - ], - "name": "Exp_692", - "op": "Exp", - "outputs": [ - "Exp_692_0" - ] - }, - { - "inputs": [ - "Negative_699" - ], - "name": "Exp_700", - "op": "Exp", - "outputs": [ - "Exp_700_0" - ] - }, - { - "inputs": [ - "Negative_724" - ], - "name": "Exp_725", - "op": "Exp", - "outputs": [ - "Exp_725_0" - ] - }, - { - "inputs": [ - "Negative_731" - ], - "name": "Exp_732", - "op": "Exp", - "outputs": [ - "Exp_732_0" - ] - }, - { - "inputs": [ - "Negative_739" - ], - "name": "Exp_740", - "op": "Exp", - "outputs": [ - "Exp_740_0" - ] - }, - { - "inputs": [ - "Broadcast_683", - "Exp_685" - ], - "name": "Add_686", - "op": "Add", - "outputs": [ - "Add_686_0" - ] - }, - { - "inputs": [ - "Broadcast_690", - "Exp_692" - ], - "name": "Add_693", - "op": "Add", - "outputs": [ - "Add_693_0" - ] - }, - { - "inputs": [ - "Broadcast_698", - "Exp_700" - ], - "name": "Add_701", - "op": "Add", - "outputs": [ - "Add_701_0" - ] - }, - { - "inputs": [ - "Broadcast_723", - "Exp_725" - ], - "name": "Add_726", - "op": "Add", - "outputs": [ - "Add_726_0" - ] - }, - { - "inputs": [ - "Broadcast_730", - "Exp_732" - ], - "name": "Add_733", - "op": "Add", - "outputs": [ - "Add_733_0" - ] - }, - { - "inputs": [ - "Broadcast_738", - "Exp_740" - ], - "name": "Add_741", - "op": "Add", - "outputs": [ - "Add_741_0" - ] - }, - { - "inputs": [ - "Broadcast_683", - "Add_686" - ], - "name": "Divide_687", - "op": "Divide", - "outputs": [ - "Divide_687_0" - ] - }, - { - "inputs": [ - "Broadcast_690", - "Add_693" - ], - "name": "Divide_694", - "op": "Divide", - "outputs": [ - "Divide_694_0" - ] - }, - { - "inputs": [ - "Broadcast_698", - "Add_701" - ], - "name": "Divide_702", - "op": "Divide", - "outputs": [ - "Divide_702_0" - ] - }, - { - "inputs": [ - "Broadcast_723", - "Add_726" - ], - "name": "Divide_727", - "op": "Divide", - "outputs": [ - "Divide_727_0" - ] - }, - { - "inputs": [ - "Broadcast_730", - "Add_733" - ], - "name": "Divide_734", - "op": "Divide", - "outputs": [ - "Divide_734_0" - ] - }, - { - "inputs": [ - "Broadcast_738", - "Add_741" - ], - "name": "Divide_742", - "op": "Divide", - "outputs": [ - "Divide_742_0" - ] - }, - { - "inputs": [ - "Divide_694", - "Add_629" - ], - "name": "Multiply_695", - "op": "Multiply", - "outputs": [ - "Multiply_695_0" - ] - }, - { - "inputs": [ - "Divide_702", - "Tanh_704" - ], - "name": "Multiply_705", - "op": "Multiply", - "outputs": [ - "Multiply_705_0" - ] - }, - { - "inputs": [ - "Divide_734", - "Add_669" - ], - "name": "Multiply_735", - "op": "Multiply", - "outputs": [ - "Multiply_735_0" - ] - }, - { - "inputs": [ - "Divide_742", - "Tanh_744" - ], - "name": "Multiply_745", - "op": "Multiply", - "outputs": [ - "Multiply_745_0" - ] - }, - { - "inputs": [ - "Multiply_695", - "Multiply_705" - ], - "name": "Add_706", - "op": "Add", - "outputs": [ - "Add_706_0" - ] - }, - { - "inputs": [ - "Multiply_735", - "Multiply_745" - ], - "name": "Add_746", - "op": "Add", - "outputs": [ - "Add_746_0" - ] - }, - { - "inputs": [ - "Add_706" - ], - "name": "Tanh_707", - "op": "Tanh", - "outputs": [ - "Tanh_707_0" - ] - }, - { - "inputs": [ - "Add_746" - ], - "name": "Tanh_747", - "op": "Tanh", - "outputs": [ - "Tanh_747_0" - ] - }, - { - "inputs": [ - "Divide_687", - "Tanh_707" - ], - "name": "Multiply_708", - "op": "Multiply", - "outputs": [ - "Multiply_708_0" - ] - }, - { - "inputs": [ - "Divide_727", - "Tanh_747" - ], - "name": "Multiply_748", - "op": "Multiply", - "outputs": [ - "Multiply_748_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_708" - ], - "name": "Reshape_709", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_709_0" - ] - }, - { - "inputs": [ - "Multiply_708", - "Reshape_753" - ], - "name": "Dot_754", - "op": "Dot", - "outputs": [ - "Dot_754_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Multiply_748", - "Reshape_749" - ], - "name": "Dot_750", - "op": "Dot", - "outputs": [ - "Dot_750_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_754", - "Broadcast_755" - ], - "name": "Add_756", - "op": "Add", - "outputs": [ - "Add_756_0" - ] - }, - { - "inputs": [ - "Dot_750", - "Broadcast_751" - ], - "name": "Add_752", - "op": "Add", - "outputs": [ - "Add_752_0" - ] - }, - { - "inputs": [ - "Add_752", - "Add_756" - ], - "name": "Add_757", - "op": "Add", - "outputs": [ - "Add_757_0" - ] - }, - { - "inputs": [ - "Add_757" - ], - "lower_bounds": [ - 0, - 600 - ], - "name": "Slice_758", - "op": "Slice", - "outputs": [ - "Slice_758_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 800 - ] - }, - { - "inputs": [ - "Add_757" - ], - "lower_bounds": [ - 0, - 200 - ], - "name": "Slice_765", - "op": "Slice", - "outputs": [ - "Slice_765_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 400 - ] - }, - { - "inputs": [ - "Add_757" - ], - "lower_bounds": [ - 0, - 0 - ], - "name": "Slice_773", - "op": "Slice", - "outputs": [ - "Slice_773_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 200 - ] - }, - { - "inputs": [ - "Add_757" - ], - "lower_bounds": [ - 0, - 400 - ], - "name": "Slice_780", - "op": "Slice", - "outputs": [ - "Slice_780_0" - ], - "strides": [ - 1, - 1 - ], - "upper_bounds": [ - 32, - 600 - ] - }, - { - "inputs": [ - "Slice_758" - ], - "name": "Negative_761", - "op": "Negative", - "outputs": [ - "Negative_761_0" - ] - }, - { - "inputs": [ - "Slice_765" - ], - "name": "Negative_768", - "op": "Negative", - "outputs": [ - "Negative_768_0" - ] - }, - { - "inputs": [ - "Slice_773" - ], - "name": "Negative_776", - "op": "Negative", - "outputs": [ - "Negative_776_0" - ] - }, - { - "inputs": [ - "Slice_780" - ], - "name": "Tanh_781", - "op": "Tanh", - "outputs": [ - "Tanh_781_0" - ] - }, - { - "inputs": [ - "Negative_761" - ], - "name": "Exp_762", - "op": "Exp", - "outputs": [ - "Exp_762_0" - ] - }, - { - "inputs": [ - "Negative_768" - ], - "name": "Exp_769", - "op": "Exp", - "outputs": [ - "Exp_769_0" - ] - }, - { - "inputs": [ - "Negative_776" - ], - "name": "Exp_777", - "op": "Exp", - "outputs": [ - "Exp_777_0" - ] - }, - { - "inputs": [ - "Broadcast_760", - "Exp_762" - ], - "name": "Add_763", - "op": "Add", - "outputs": [ - "Add_763_0" - ] - }, - { - "inputs": [ - "Broadcast_767", - "Exp_769" - ], - "name": "Add_770", - "op": "Add", - "outputs": [ - "Add_770_0" - ] - }, - { - "inputs": [ - "Broadcast_775", - "Exp_777" - ], - "name": "Add_778", - "op": "Add", - "outputs": [ - "Add_778_0" - ] - }, - { - "inputs": [ - "Broadcast_760", - "Add_763" - ], - "name": "Divide_764", - "op": "Divide", - "outputs": [ - "Divide_764_0" - ] - }, - { - "inputs": [ - "Broadcast_767", - "Add_770" - ], - "name": "Divide_771", - "op": "Divide", - "outputs": [ - "Divide_771_0" - ] - }, - { - "inputs": [ - "Broadcast_775", - "Add_778" - ], - "name": "Divide_779", - "op": "Divide", - "outputs": [ - "Divide_779_0" - ] - }, - { - "inputs": [ - "Divide_771", - "Add_706" - ], - "name": "Multiply_772", - "op": "Multiply", - "outputs": [ - "Multiply_772_0" - ] - }, - { - "inputs": [ - "Divide_779", - "Tanh_781" - ], - "name": "Multiply_782", - "op": "Multiply", - "outputs": [ - "Multiply_782_0" - ] - }, - { - "inputs": [ - "Multiply_772", - "Multiply_782" - ], - "name": "Add_783", - "op": "Add", - "outputs": [ - "Add_783_0" - ] - }, - { - "inputs": [ - "Add_783" - ], - "name": "Tanh_784", - "op": "Tanh", - "outputs": [ - "Tanh_784_0" - ] - }, - { - "inputs": [ - "Divide_764", - "Tanh_784" - ], - "name": "Multiply_785", - "op": "Multiply", - "outputs": [ - "Multiply_785_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Multiply_785" - ], - "name": "Reshape_786", - "op": "Reshape", - "output_shape": [ - 32, - 1, - 200 - ], - "outputs": [ - "Reshape_786_0" - ] - }, - { - "axis": 1, - "inputs": [ - "Reshape_93", - "Reshape_170", - "Reshape_247", - "Reshape_324", - "Reshape_401", - "Reshape_478", - "Reshape_555", - "Reshape_632", - "Reshape_709", - "Reshape_786" - ], - "name": "Concat_787", - "op": "Concat", - "outputs": [ - "Concat_787_0" - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Concat_787" - ], - "name": "Reshape_788", - "op": "Reshape", - "output_shape": [ - 320, - 200 - ], - "outputs": [ - "Reshape_788_0" - ] - }, - { - "inputs": [ - "Reshape_788", - "Reshape_791" - ], - "name": "Dot_792", - "op": "Dot", - "outputs": [ - "Dot_792_0" - ], - "reduction_axes_count": 1 - }, - { - "inputs": [ - "Dot_792", - "Broadcast_793" - ], - "name": "Add_794", - "op": "Add", - "outputs": [ - "Add_794_0" - ] - }, - { - "inputs": [ - "Add_794" - ], - "name": "Result_795", - "op": "Result", - "outputs": [ - "Result_795_0" - ] - } - ], - "parameters": [ - "Parameter_0", - "Parameter_3", - "Parameter_4", - "Parameter_11", - "Parameter_12", - "Parameter_48", - "Parameter_49", - "Parameter_56", - "Parameter_57", - "Parameter_789", - "Parameter_790" - ], - "result": [ - "Result_795" - ] - } -] \ No newline at end of file diff --git a/ngraph/test/models/mxnet/tranpose.json b/ngraph/test/models/mxnet/tranpose.json deleted file mode 100644 index 3e444ed908ed85..00000000000000 --- a/ngraph/test/models/mxnet/tranpose.json +++ /dev/null @@ -1,395 +0,0 @@ -[{ - "name" : "Function_1", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_21", - "op" : "Parameter", - "outputs" : ["Parameter_21_0"], - "shape" : [10] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_20", - "op" : "Parameter", - "outputs" : ["Parameter_20_0"], - "shape" : [ 10, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_12", - "op" : "Parameter", - "outputs" : ["Parameter_12_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_11", - "op" : "Parameter", - "outputs" : ["Parameter_11_0"], - "shape" : [ 64, 128 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [128] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [ 128, 784 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 64, 1, 28, 28 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_26", - "op" : "Parameter", - "outputs" : ["Parameter_26_0"], - "shape" : [ 64, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_17", - "op" : "Constant", - "outputs" : ["Constant_17_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_8", - "op" : "Constant", - "outputs" : ["Constant_8_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_20"], - "name" : "Reshape_22", - "op" : "Reshape", - "output_shape" : [ 64, 10 ], - "outputs" : ["Reshape_22_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_12"], - "name" : "Broadcast_15", - "op" : "Broadcast", - "outputs" : ["Broadcast_15_0"], - "shape" : [ 64, 64 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_11"], - "name" : "Reshape_13", - "op" : "Reshape", - "output_shape" : [ 128, 64 ], - "outputs" : ["Reshape_13_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_3"], - "name" : "Broadcast_6", - "op" : "Broadcast", - "outputs" : ["Broadcast_6_0"], - "shape" : [ 64, 128 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_2"], - "name" : "Reshape_4", - "op" : "Reshape", - "output_shape" : [ 784, 128 ], - "outputs" : ["Reshape_4_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_0"], - "name" : "Reshape_1", - "op" : "Reshape", - "output_shape" : [ 64, 784 ], - "outputs" : ["Reshape_1_0"] - }, - { - "inputs" : ["Parameter_26"], - "name" : "Sum_27", - "op" : "Sum", - "outputs" : ["Sum_27_0"], - "reduction_axes" : [0] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_17"], - "name" : "Broadcast_18", - "op" : "Broadcast", - "outputs" : ["Broadcast_18_0"], - "shape" : [ 64, 64 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_8"], - "name" : "Broadcast_9", - "op" : "Broadcast", - "outputs" : ["Broadcast_9_0"], - "shape" : [ 64, 128 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_22"], - "name" : "Reshape_28", - "op" : "Reshape", - "output_shape" : [ 10, 64 ], - "outputs" : ["Reshape_28_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_13"], - "name" : "Reshape_42", - "op" : "Reshape", - "output_shape" : [ 64, 128 ], - "outputs" : ["Reshape_42_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_4"], - "name" : "Reshape_56", - "op" : "Reshape", - "output_shape" : [ 128, 784 ], - "outputs" : ["Reshape_56_0"] - }, - { - "inputs" : [ "Reshape_1", "Reshape_4" ], - "name" : "Dot_5", - "op" : "Dot", - "outputs" : ["Dot_5_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_1"], - "name" : "Reshape_58", - "op" : "Reshape", - "output_shape" : [ 784, 64 ], - "outputs" : ["Reshape_58_0"] - }, - { - "inputs" : [ "Parameter_26", "Reshape_28" ], - "name" : "Dot_29", - "op" : "Dot", - "outputs" : ["Dot_29_0"] - }, - { - "inputs" : [ "Dot_5", "Broadcast_6" ], - "name" : "Add_7", - "op" : "Add", - "outputs" : ["Add_7_0"] - }, - { - "inputs" : [ "Add_7", "Broadcast_9" ], - "name" : "Maximum_10", - "op" : "Maximum", - "outputs" : ["Maximum_10_0"] - }, - { - "inputs" : [ "Add_7", "Broadcast_9" ], - "name" : "Greater_48", - "op" : "Greater", - "outputs" : ["Greater_48_0"] - }, - { - "inputs" : [ "Maximum_10", "Reshape_13" ], - "name" : "Dot_14", - "op" : "Dot", - "outputs" : ["Dot_14_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Maximum_10"], - "name" : "Reshape_44", - "op" : "Reshape", - "output_shape" : [ 128, 64 ], - "outputs" : ["Reshape_44_0"] - }, - { - "inputs" : ["Greater_48"], - "name" : "Convert_49", - "op" : "Convert", - "outputs" : ["Convert_49_0"], - "target_type" : "float" - }, - { - "inputs" : [ "Dot_14", "Broadcast_15" ], - "name" : "Add_16", - "op" : "Add", - "outputs" : ["Add_16_0"] - }, - { - "inputs" : [ "Add_16", "Broadcast_18" ], - "name" : "Maximum_19", - "op" : "Maximum", - "outputs" : ["Maximum_19_0"] - }, - { - "inputs" : [ "Add_16", "Broadcast_18" ], - "name" : "Greater_34", - "op" : "Greater", - "outputs" : ["Greater_34_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Maximum_19"], - "name" : "Reshape_30", - "op" : "Reshape", - "output_shape" : [ 64, 64 ], - "outputs" : ["Reshape_30_0"] - }, - { - "inputs" : ["Greater_34"], - "name" : "Convert_35", - "op" : "Convert", - "outputs" : ["Convert_35_0"], - "target_type" : "float" - }, - { - "inputs" : [ "Reshape_30", "Parameter_26" ], - "name" : "Dot_31", - "op" : "Dot", - "outputs" : ["Dot_31_0"] - }, - { - "inputs" : [ "Dot_29", "Convert_35" ], - "name" : "Multiply_36", - "op" : "Multiply", - "outputs" : ["Multiply_36_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_31"], - "name" : "Reshape_32", - "op" : "Reshape", - "output_shape" : [ 64, 10 ], - "outputs" : ["Reshape_32_0"] - }, - { - "inputs" : ["Multiply_36"], - "name" : "Sum_41", - "op" : "Sum", - "outputs" : ["Sum_41_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Multiply_36", "Reshape_42" ], - "name" : "Dot_43", - "op" : "Dot", - "outputs" : ["Dot_43_0"] - }, - { - "inputs" : [ "Reshape_44", "Multiply_36" ], - "name" : "Dot_45", - "op" : "Dot", - "outputs" : ["Dot_45_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_32"], - "name" : "Reshape_33", - "op" : "Reshape", - "output_shape" : [ 10, 64 ], - "outputs" : ["Reshape_33_0"] - }, - { - "inputs" : [ "Dot_43", "Convert_49" ], - "name" : "Multiply_50", - "op" : "Multiply", - "outputs" : ["Multiply_50_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_45"], - "name" : "Reshape_46", - "op" : "Reshape", - "output_shape" : [ 128, 64 ], - "outputs" : ["Reshape_46_0"] - }, - { - "inputs" : ["Multiply_50"], - "name" : "Sum_55", - "op" : "Sum", - "outputs" : ["Sum_55_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Multiply_50", "Reshape_56" ], - "name" : "Dot_57", - "op" : "Dot", - "outputs" : ["Dot_57_0"] - }, - { - "inputs" : [ "Reshape_58", "Multiply_50" ], - "name" : "Dot_59", - "op" : "Dot", - "outputs" : ["Dot_59_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_46"], - "name" : "Reshape_47", - "op" : "Reshape", - "output_shape" : [ 64, 128 ], - "outputs" : ["Reshape_47_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_57"], - "name" : "Reshape_62", - "op" : "Reshape", - "output_shape" : [ 64, 1, 28, 28 ], - "outputs" : ["Reshape_62_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_59"], - "name" : "Reshape_60", - "op" : "Reshape", - "output_shape" : [ 784, 128 ], - "outputs" : ["Reshape_60_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_60"], - "name" : "Reshape_61", - "op" : "Reshape", - "output_shape" : [ 128, 784 ], - "outputs" : ["Reshape_61_0"] - } - ], - "parameters" : [ - "Parameter_26", "Parameter_0", "Parameter_2", "Parameter_3", "Parameter_11", - "Parameter_12", "Parameter_20", "Parameter_21" - ], - "result" : [ - "Reshape_62", "Reshape_61", "Sum_55", "Reshape_47", "Sum_41", "Reshape_33", - "Sum_27" - ] -}] - diff --git a/ngraph/test/models/onnx/add_v6_broadcast_axes_1_2.prototxt b/ngraph/test/models/onnx/add_v6_broadcast_axes_1_2.prototxt new file mode 100644 index 00000000000000..e72ff7f5c093cd --- /dev/null +++ b/ngraph/test/models/onnx/add_v6_broadcast_axes_1_2.prototxt @@ -0,0 +1,85 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "A" + input: "B" + output: "X" + name: "add" + op_type: "Add" + attribute { + name: "broadcast" + i: 1 + type: INT + } + attribute { + name: "axis" + i: 1 + type: INT + } + } + name: "test_graph" + input { + name: "A" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + input { + name: "B" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + } + } + } + } + output { + name: "X" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } +} +opset_import { + version: 6 +} diff --git a/ngraph/test/models/onnx/div_v6_broadcast_axes_1_2.prototxt b/ngraph/test/models/onnx/div_v6_broadcast_axes_1_2.prototxt new file mode 100644 index 00000000000000..272b0cf6c55c29 --- /dev/null +++ b/ngraph/test/models/onnx/div_v6_broadcast_axes_1_2.prototxt @@ -0,0 +1,85 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "A" + input: "B" + output: "X" + name: "div" + op_type: "Div" + attribute { + name: "broadcast" + i: 1 + type: INT + } + attribute { + name: "axis" + i: 1 + type: INT + } + } + name: "test_graph" + input { + name: "A" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + input { + name: "B" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + } + } + } + } + output { + name: "X" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } +} +opset_import { + version: 6 +} diff --git a/ngraph/test/models/onnx/dynamic_shapes/conv_with_dynamic_bias.prototxt b/ngraph/test/models/onnx/dynamic_shapes/conv_with_dynamic_bias.prototxt new file mode 100644 index 00000000000000..c6d9444947d2e3 --- /dev/null +++ b/ngraph/test/models/onnx/dynamic_shapes/conv_with_dynamic_bias.prototxt @@ -0,0 +1,97 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +model_version: 1 +graph { + node { + name: "dyn_conv" + input: "data" + input: "filters" + input: "bias" + output: "dyn_conv_out" + op_type: "Conv" + } + input { + name: "data" + type { + tensor_type { + elem_type: 7 + shape { + dim { + dim_param: "batch" + } + dim { + dim_value: 3 + } + dim { + dim_value: 7 + } + dim { + dim_value: 7 + } + } + } + } + } + input { + name: "filters" + type { + tensor_type { + elem_type: 7 + shape { + dim { + dim_param: "feature maps" + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + input { + name: "bias" + type { + tensor_type { + elem_type: 7 + shape { + dim { + dim_param: "bias" + } + } + } + } + } + output { + name: "dyn_conv_out" + type { + tensor_type { + elem_type: 7 + shape { + dim { + dim_param: "batch" + } + dim { + dim_value: 10 + } + dim { + dim_value: 6 + } + dim { + dim_value: 6 + } + } + } + } + } + name: "simple_dyn_shapes_graph" +} +opset_import { + domain: "" + version: 7 +} diff --git a/ngraph/test/models/onnx/dynamic_shapes/depth_to_space.prototxt b/ngraph/test/models/onnx/dynamic_shapes/depth_to_space.prototxt new file mode 100644 index 00000000000000..d2333b515de61a --- /dev/null +++ b/ngraph/test/models/onnx/dynamic_shapes/depth_to_space.prototxt @@ -0,0 +1,59 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "A" + output: "B" + op_type: "DepthToSpace" + attribute { + name: "blocksize" + i: 2 + type: INT + } + attribute { + name: "mode" + s: "DCR" + type: STRING + } + } + name: "compute_graph" + input { + name: "A" + type { + tensor_type { + elem_type: 1 + shape { + dim { + } + dim { + } + dim { + } + dim { + } + } + } + } + } + output { + name: "B" + type { + tensor_type { + elem_type: 1 + shape { + dim { + } + dim { + } + dim { + } + dim { + } + } + } + } + } +} +opset_import { + version: 11 +} diff --git a/ngraph/test/models/onnx/dynamic_shapes/space_to_depth.prototxt b/ngraph/test/models/onnx/dynamic_shapes/space_to_depth.prototxt new file mode 100644 index 00000000000000..0aab54f75ba971 --- /dev/null +++ b/ngraph/test/models/onnx/dynamic_shapes/space_to_depth.prototxt @@ -0,0 +1,54 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "A" + output: "B" + op_type: "SpaceToDepth" + attribute { + name: "blocksize" + i: 2 + type: INT + } + } + name: "compute_graph" + input { + name: "A" + type { + tensor_type { + elem_type: 1 + shape { + dim { + } + dim { + } + dim { + } + dim { + } + } + } + } + } + output { + name: "B" + type { + tensor_type { + elem_type: 1 + shape { + dim { + } + dim { + } + dim { + } + dim { + } + } + } + } + } +} +opset_import { + version: 1 +} diff --git a/ngraph/test/models/onnx/group_norm_5d.prototxt b/ngraph/test/models/onnx/group_norm_5d.prototxt new file mode 100644 index 00000000000000..aced083efd2780 --- /dev/null +++ b/ngraph/test/models/onnx/group_norm_5d.prototxt @@ -0,0 +1,114 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "data" + input: "gamma" + input: "beta" + output: "y" + op_type: "GroupNorm" + domain: "org.openvinotoolkit" + attribute { + name: "num_groups" + i: 4 + type: INT + } + attribute { + name: "eps" + f: 1e-5 + type: FLOAT + } + } + name: "group_norm_example" + initializer { + dims: 8 + data_type: 1 + name: "gamma" + raw_data: "\0\0\200?\0\0\0@\0\0@@\0\0\200@\0\0\240@\0\0\300@\0\0\340@\0\0\0A" + } + initializer { + dims: 8 + data_type: 1 + name: "beta" + raw_data: "\0\0\200?\0\0\0@\0\0@@\0\0\200@\0\0\240@\0\0\300@\0\0\340@\0\0\0A" + } + input { + name: "data" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 2 + } + dim { + dim_value: 8 + } + dim { + dim_value: 1 + } + dim { + dim_value: 2 + } + dim { + dim_value: 1 + } + } + } + } + } + input { + name: "gamma" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 8 + } + } + } + } + } + input { + name: "beta" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 8 + } + } + } + } + } + output { + name: "y" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 2 + } + dim { + dim_value: 8 + } + dim { + dim_value: 1 + } + dim { + dim_value: 2 + } + dim { + dim_value: 3 + } + } + } + } + } +} +opset_import { + version: 1 +} diff --git a/ngraph/test/models/onnx/gru_fwd_activations.prototxt b/ngraph/test/models/onnx/gru_fwd_activations_relu_hardsigmoid.prototxt similarity index 100% rename from ngraph/test/models/onnx/gru_fwd_activations.prototxt rename to ngraph/test/models/onnx/gru_fwd_activations_relu_hardsigmoid.prototxt diff --git a/ngraph/test/models/onnx/instance_norm_dynamic.prototxt b/ngraph/test/models/onnx/instance_norm_dynamic.prototxt new file mode 100644 index 00000000000000..4d6a938ad5ee81 --- /dev/null +++ b/ngraph/test/models/onnx/instance_norm_dynamic.prototxt @@ -0,0 +1,73 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "input" + input: "input_IN.weight" + input: "input_IN.bias" + output: "560" + op_type: "InstanceNormalization" + attribute { + name: "epsilon" + f: 9.9999997473787516e-06 + type: FLOAT + } + } + initializer { + dims: 3 + data_type: 1 + name: "input_IN.bias" + raw_data: "\341\033\253>\034\013\252>\006r\256>" + } + initializer { + dims: 3 + data_type: 1 + name: "input_IN.weight" + raw_data: "\245\024\361>Z\271\003?\016^\337>" + } + name: "test_instancenorm_example" + input { + name: "input" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_param: "batch_size" + } + dim { + dim_param: "channels" + } + dim { + dim_param: "height" + } + dim { + dim_param: "width" + } + } + } + } + } + output { + name: "560" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 4 + } + dim { + dim_value: 5 + } + } + } + } + } +} +opset_import { + version: 7 +} diff --git a/ngraph/test/models/onnx/lp_norm_default_dynamic.prototxt b/ngraph/test/models/onnx/lp_norm_default_dynamic.prototxt new file mode 100644 index 00000000000000..55d3bd3e705e09 --- /dev/null +++ b/ngraph/test/models/onnx/lp_norm_default_dynamic.prototxt @@ -0,0 +1,50 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "x" + output: "y" + op_type: "LpNormalization" + } + name: "lp_norm_graph" + input { + name: "x" + type { + tensor_type { + elem_type: 1 + shape { + dim { + } + dim { + dim_value: 3 + } + dim { + dim_value: 4 + } + } + } + } + } + output { + name: "y" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 2 + } + dim { + dim_value: 3 + } + dim { + dim_value: 4 + } + } + } + } + } +} +opset_import { + version: 1 +} diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__existing_inputs_and_outputs_based_extraction.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__existing_inputs_and_outputs_based_extraction.prototxt index f47378b8af2583..535ab6a83b4dff 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__existing_inputs_and_outputs_based_extraction.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__existing_inputs_and_outputs_based_extraction.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in1" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_to_input_replacement.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_to_input_replacement.prototxt index 145580668c1d77..64d29267fb6aca 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_to_input_replacement.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_to_input_replacement.prototxt @@ -1,5 +1,5 @@ ir_version: 3 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_without_matching_input_tail_cut.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_without_matching_input_tail_cut.prototxt index 5b2a9a0d1e117b..a26c205ebc8af2 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_without_matching_input_tail_cut.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__initializer_without_matching_input_tail_cut.prototxt @@ -1,5 +1,5 @@ ir_version: 3 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers.prototxt index e68c95d134bf03..ade2123bafd865 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "relu1" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_2.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_2.prototxt index 405c9fdd0d848d..5d62d03bb617ac 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_2.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_2.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in3" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_3.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_3.prototxt index 209b4bd32ece8e..ea70f359331898 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_3.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__input_edge_from_tensor_with_multiple_consumers_3.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "relu1" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_head_cut.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_head_cut.prototxt index 44b3a3f1ce9715..6c718ff0b39166 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_head_cut.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_head_cut.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_tail_cut.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_tail_cut.prototxt index c2b948b1c7c90b..dd42e019cfbf01 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_tail_cut.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_deeper_tail_cut.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_head_cut.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_head_cut.prototxt index f43cfcc2904711..46c5056cb63db5 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_head_cut.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_head_cut.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_tail_cut.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_tail_cut.prototxt index 65518599cabbab..59efc1294d5d30 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_tail_cut.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_tail_cut.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_with_initializer_tail_cut.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_with_initializer_tail_cut.prototxt index af08b388c2d936..ad845070c8362d 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_with_initializer_tail_cut.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__linear_model_with_initializer_tail_cut.prototxt @@ -1,5 +1,5 @@ ir_version: 3 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiout_op_output_edge.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiout_op_output_edge.prototxt index 0d99c4e70c0b9e..ccd953073ceaa4 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiout_op_output_edge.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiout_op_output_edge.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in1" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer.prototxt index b237e23b63e2aa..9f70d286c5c3a6 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in1" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer_relu2_and_init.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer_relu2_and_init.prototxt index ca4d93f203d382..186d8f4f01c400 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer_relu2_and_init.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_initializer_relu2_and_init.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in1" diff --git a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_input_relu2.prototxt b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_input_relu2.prototxt index 962bac303b0779..c8556c7d366c44 100644 --- a/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_input_relu2.prototxt +++ b/ngraph/test/models/onnx/model_editor/reference/subgraph__multiple_consumers_of_graph_input_relu2.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in1" diff --git a/ngraph/test/models/onnx/model_editor/subgraph__inception_head.prototxt b/ngraph/test/models/onnx/model_editor/subgraph__inception_head.prototxt index 250c8c75444c59..f41a21428ab232 100644 --- a/ngraph/test/models/onnx/model_editor/subgraph__inception_head.prototxt +++ b/ngraph/test/models/onnx/model_editor/subgraph__inception_head.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/subgraph__inception_head_with_initializer.prototxt b/ngraph/test/models/onnx/model_editor/subgraph__inception_head_with_initializer.prototxt index 933290aed2e54f..ca779cb9fffca6 100644 --- a/ngraph/test/models/onnx/model_editor/subgraph__inception_head_with_initializer.prototxt +++ b/ngraph/test/models/onnx/model_editor/subgraph__inception_head_with_initializer.prototxt @@ -1,5 +1,5 @@ ir_version: 3 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/subgraph__initializer_without_matching_input.prototxt b/ngraph/test/models/onnx/model_editor/subgraph__initializer_without_matching_input.prototxt index 040273881a4f26..06fd4c315b35bc 100644 --- a/ngraph/test/models/onnx/model_editor/subgraph__initializer_without_matching_input.prototxt +++ b/ngraph/test/models/onnx/model_editor/subgraph__initializer_without_matching_input.prototxt @@ -1,5 +1,5 @@ ir_version: 3 -producer_name: "tomdol" +producer_name: "test_data_generator" doc_string: "This model contains the first few nodes of the ONNX Inception V1 model" graph { name: "Inception V1 fragment" diff --git a/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests.prototxt b/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests.prototxt index 2b60155688eb34..9e79acc9cf9411 100644 --- a/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests.prototxt +++ b/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in1" diff --git a/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests_2.prototxt b/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests_2.prototxt index 9d721dd8324f50..76d8587d9e8cb2 100644 --- a/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests_2.prototxt +++ b/ngraph/test/models/onnx/model_editor/subgraph_extraction_tests_2.prototxt @@ -1,5 +1,5 @@ ir_version: 7 -producer_name: "tomdol" +producer_name: "test_data_generator" graph { node { input: "in1" diff --git a/ngraph/test/models/onnx/mul_v6_broadcast_axes_1_2.prototxt b/ngraph/test/models/onnx/mul_v6_broadcast_axes_1_2.prototxt new file mode 100644 index 00000000000000..0a0b40fb60dfb8 --- /dev/null +++ b/ngraph/test/models/onnx/mul_v6_broadcast_axes_1_2.prototxt @@ -0,0 +1,85 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "A" + input: "B" + output: "X" + name: "mul" + op_type: "Mul" + attribute { + name: "broadcast" + i: 1 + type: INT + } + attribute { + name: "axis" + i: 1 + type: INT + } + } + name: "test_graph" + input { + name: "A" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + input { + name: "B" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + } + } + } + } + output { + name: "X" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } +} +opset_import { + version: 6 +} diff --git a/ngraph/test/models/onnx/multiple_slices_last_layer.prototxt b/ngraph/test/models/onnx/multiple_slices_last_layer.prototxt new file mode 100644 index 00000000000000..6804369b77c35d --- /dev/null +++ b/ngraph/test/models/onnx/multiple_slices_last_layer.prototxt @@ -0,0 +1,205 @@ +ir_version: 7 +producer_name: "onnx-importer-test" +graph { + node { + output: "643" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 0 + name: "const_tensor" + } + type: TENSOR + } + } + node { + output: "644" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 21 + name: "const_tensor" + } + type: TENSOR + } + } + node { + output: "642" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 3 + name: "const_tensor" + } + type: TENSOR + } + } + node { + output: "645" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 1 + name: "const_tensor" + } + type: TENSOR + } + } + node { + output: "648" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 21 + name: "const_tensor" + } + type: TENSOR + } + } + node { + output: "649" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 30 + name: "const_tensor" + } + type: TENSOR + } + } + node { + output: "647" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 3 + name: "const_tensor" + } + type: TENSOR + } + } + node { + output: "650" + op_type: "Constant" + attribute { + name: "value" + t { + dims: 1 + data_type: 7 + int64_data: 1 + name: "const_tensor" + } + type: TENSOR + } + } + node { + input: "data" + input: "643" + input: "644" + input: "642" + input: "645" + output: "corner_pred" + op_type: "Slice" + } + node { + input: "data" + input: "648" + input: "649" + input: "647" + input: "650" + output: "icon_pred" + op_type: "Slice" + } + name: "test-model" + input { + name: "data" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 320 + } + dim { + dim_value: 320 + } + dim { + dim_value: 30 + } + } + } + } + } + output { + name: "corner_pred" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 320 + } + dim { + dim_value: 320 + } + dim { + dim_value: 21 + } + } + } + } + } + output { + name: "icon_pred" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 320 + } + dim { + dim_value: 320 + } + dim { + dim_value: 9 + } + } + } + } + } +} +opset_import { + domain: "" + version: 11 +} \ No newline at end of file diff --git a/ngraph/test/models/onnx/negativelog_likelihood_loss.prototxt b/ngraph/test/models/onnx/negativelog_likelihood_loss.prototxt new file mode 100644 index 00000000000000..0383bb878bac13 --- /dev/null +++ b/ngraph/test/models/onnx/negativelog_likelihood_loss.prototxt @@ -0,0 +1,64 @@ +ir_version: 7 +producer_name: "backend-test" +graph { + node { + input: "input" + input: "target" + output: "loss" + op_type: "NegativeLogLikelihoodLoss" + attribute { + name: "reduction" + s: "mean" + type: STRING + } + } + name: "test_nllloss_NCd1" + input { + name: "input" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 5 + } + dim { + dim_value: 2 + } + } + } + } + } + input { + name: "target" + type { + tensor_type { + elem_type: 7 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + } + } + } + } + output { + name: "loss" + type { + tensor_type { + elem_type: 1 + shape { + } + } + } + } +} +opset_import { + version: 13 +} diff --git a/ngraph/test/models/onnx/onnx_prototxt_converter.py b/ngraph/test/models/onnx/onnx_prototxt_converter.py index ad2c9933daf17b..d8e06d58698955 100644 --- a/ngraph/test/models/onnx/onnx_prototxt_converter.py +++ b/ngraph/test/models/onnx/onnx_prototxt_converter.py @@ -1,19 +1,8 @@ #!/usr/bin/env python -# ***************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ***************************************************************************** + +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + """Converts protobuf files from binary message format into prototxt format and vice-versa. Supports files with only '.onnx' or '.prototxt' extensions. Application may accept only single diff --git a/ngraph/test/models/onnx/org.openvinotoolkit/deformable_conv_2d.prototxt b/ngraph/test/models/onnx/org.openvinotoolkit/deformable_conv_2d.prototxt new file mode 100644 index 00000000000000..6151ddd7435349 --- /dev/null +++ b/ngraph/test/models/onnx/org.openvinotoolkit/deformable_conv_2d.prototxt @@ -0,0 +1,115 @@ +ir_version: 7 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "data" + input: "deformation" + input: "filters" + output: "out" + op_type: "DeformableConv2D" + } + name: "test_graph" + input { + name: "data" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 1 + } + dim { + dim_value: 4 + } + dim { + dim_value: 4 + } + } + } + } + } + input { + name: "deformation" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 1 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + input { + name: "filters" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 1 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + initializer { + name: "filters" + dims: 1 + dims: 1 + dims: 2 + dims: 2 + data_type: 1 + float_data: 0.1 + float_data: 0.2 + float_data: 0.3 + float_data: 0.4 + } + output { + name: "out" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 3 + } + } + } + } + } +} +opset_import { + version: 7 +} diff --git a/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.prototxt b/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.prototxt index 2408075c42955b..1863687d27215c 100644 --- a/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.prototxt +++ b/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.prototxt @@ -52,7 +52,7 @@ graph { elem_type: 1 shape { dim { - dim_value: 16 + dim_value: 36 } dim { dim_value: 4 @@ -87,7 +87,7 @@ graph { elem_type: 1 shape { dim { - dim_value: 13 + dim_value: 3 } dim { dim_value: 2 diff --git a/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/group_norm.prototxt b/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/group_norm.prototxt index c4e6dcb0241721..ea2106b5621be4 100644 --- a/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/group_norm.prototxt +++ b/ngraph/test/models/onnx/org.openvinotoolkit/experimental_detectron/group_norm.prototxt @@ -97,7 +97,3 @@ opset_import { domain: "" version: 10 } -opset_import { - domain: "org.openvinotoolkit" - version: 1 -} diff --git a/ngraph/test/models/onnx/softmax_crossentropy_loss_mean.prototxt b/ngraph/test/models/onnx/softmax_crossentropy_loss_mean.prototxt new file mode 100644 index 00000000000000..89b569ec158fe1 --- /dev/null +++ b/ngraph/test/models/onnx/softmax_crossentropy_loss_mean.prototxt @@ -0,0 +1,58 @@ +ir_version: 7 +producer_name: "backend-test" +graph { + node { + input: "x" + input: "y" + output: "z" + op_type: "SoftmaxCrossEntropyLoss" + attribute { + name: "reduction" + s: "mean" + type: STRING + } + } + name: "test_sce_mean" + input { + name: "x" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 5 + } + } + } + } + } + input { + name: "y" + type { + tensor_type { + elem_type: 7 + shape { + dim { + dim_value: 3 + } + } + } + } + } + output { + name: "z" + type { + tensor_type { + elem_type: 1 + shape { + } + } + } + } +} +opset_import { + version: 13 +} diff --git a/ngraph/test/models/onnx/sub_v6_broadcast_axes_1_2.prototxt b/ngraph/test/models/onnx/sub_v6_broadcast_axes_1_2.prototxt new file mode 100644 index 00000000000000..50cd26ab6cfaf9 --- /dev/null +++ b/ngraph/test/models/onnx/sub_v6_broadcast_axes_1_2.prototxt @@ -0,0 +1,85 @@ +ir_version: 3 +producer_name: "nGraph ONNX Importer" +graph { + node { + input: "A" + input: "B" + output: "X" + name: "sub" + op_type: "Sub" + attribute { + name: "broadcast" + i: 1 + type: INT + } + attribute { + name: "axis" + i: 1 + type: INT + } + } + name: "test_graph" + input { + name: "A" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + input { + name: "B" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + } + } + } + } + output { + name: "X" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 3 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } +} +opset_import { + version: 6 +} diff --git a/ngraph/test/models/onnx/upsample6_bilinear.prototxt b/ngraph/test/models/onnx/upsample6_bilinear.prototxt new file mode 100644 index 00000000000000..6c987d81c0f69e --- /dev/null +++ b/ngraph/test/models/onnx/upsample6_bilinear.prototxt @@ -0,0 +1,61 @@ +ir_version: 3 +producer_name: "onnx-importer-test" +graph { + node { + input: "X" + output: "Y" + op_type: "Upsample" + attribute { + name: "mode" + s: "bilinear" + type: STRING + } + attribute { + name: "height_scale" + f: 2.0 + type: FLOAT + } + attribute { + name: "width_scale" + f: 3.0 + type: FLOAT + } + } + name: "test-model" + input { + name: "X" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 1 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + output { + name: "Y" + type { + tensor_type { + elem_type: 1 + shape { + } + } + } + } +} +opset_import { + domain: "" + version: 6 +} diff --git a/ngraph/test/models/onnx/upsample6_dynamic.prototxt b/ngraph/test/models/onnx/upsample6_dynamic.prototxt new file mode 100644 index 00000000000000..ca7d6485c01820 --- /dev/null +++ b/ngraph/test/models/onnx/upsample6_dynamic.prototxt @@ -0,0 +1,71 @@ +ir_version: 3 +producer_name: "onnx-importer-test" +graph { + node { + input: "X" + input: "S" + output: "R" + op_type: "Reshape" + } + node { + input: "R" + output: "Y" + op_type: "Upsample" + attribute { + name: "mode" + s: "nearest" + type: STRING + } + attribute { + name: "height_scale" + f: 1.5 + type: FLOAT + } + attribute { + name: "width_scale" + f: 2.5 + type: FLOAT + } + } + name: "test-model" + input { + name: "X" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 4 + } + } + } + } + } + input { + name: "S" + type { + tensor_type { + elem_type: 7 + shape { + dim { + dim_value: 4 + } + } + } + } + } + output { + name: "Y" + type { + tensor_type { + elem_type: 1 + shape { + } + } + } + } +} +opset_import { + domain: "" + version: 6 +} diff --git a/ngraph/test/models/onnx/upsample6_nearest.prototxt b/ngraph/test/models/onnx/upsample6_nearest.prototxt new file mode 100644 index 00000000000000..699c6516c462c9 --- /dev/null +++ b/ngraph/test/models/onnx/upsample6_nearest.prototxt @@ -0,0 +1,61 @@ +ir_version: 3 +producer_name: "onnx-importer-test" +graph { + node { + input: "X" + output: "Y" + op_type: "Upsample" + attribute { + name: "mode" + s: "nearest" + type: STRING + } + attribute { + name: "height_scale" + f: 2.0 + type: FLOAT + } + attribute { + name: "width_scale" + f: 3.0 + type: FLOAT + } + } + name: "test-model" + input { + name: "X" + type { + tensor_type { + elem_type: 1 + shape { + dim { + dim_value: 1 + } + dim { + dim_value: 1 + } + dim { + dim_value: 2 + } + dim { + dim_value: 2 + } + } + } + } + } + output { + name: "Y" + type { + tensor_type { + elem_type: 1 + shape { + } + } + } + } +} +opset_import { + domain: "" + version: 6 +} diff --git a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-bprop0.json b/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-bprop0.json deleted file mode 100644 index f172728e2213ee..00000000000000 --- a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-bprop0.json +++ /dev/null @@ -1,423 +0,0 @@ -[ - { - "name": "Function_2", - "ops": [ - { - "cacheable": true, - "element_type": "double", - "name": "Parameter_1571", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_1571_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "cacheable": true, - "element_type": "double", - "name": "Parameter_1572", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_1572_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "inputs": [ - "Parameter_1571" - ], - "name": "Negative_1607", - "op": "Negative", - "op_version": 0, - "outputs": [ - "Negative_1607_0" - ] - }, - { - "element_type": "double", - "name": "Constant_1597", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_1597_0" - ], - "shape": [ - 1 - ], - "value": [ - "1" - ] - }, - { - "element_type": "double", - "name": "Constant_1598", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_1598_0" - ], - "shape": [ - 1 - ], - "value": [ - "41" - ] - }, - { - "inputs": [ - "Constant_1597", - "Constant_1598" - ], - "name": "Divide_1601", - "op": "Divide", - "op_version": 0, - "outputs": [ - "Divide_1601_0" - ], - "pythondiv": true - }, - { - "axes": [ - 0, - 1 - ], - "inputs": [ - "Divide_1601" - ], - "name": "Broadcast_1602", - "op": "Broadcast", - "op_version": 0, - "outputs": [ - "Broadcast_1602_0" - ], - "shape": [ - 41, - 1, - 1 - ] - }, - { - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Broadcast_1602" - ], - "name": "Reshape_1603", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 41, - 1 - ], - "outputs": [ - "Reshape_1603_0" - ] - }, - { - "element_type": "double", - "name": "Constant_1600", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_1600_0" - ], - "shape": [ - 41, - 1 - ], - "value": [ - "0" - ] - }, - { - "inputs": [ - "Reshape_1603", - "Constant_1600" - ], - "name": "Add_1604", - "op": "Add", - "op_version": 0, - "outputs": [ - "Add_1604_0" - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Add_1604" - ], - "name": "Reshape_1605", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 41 - ], - "outputs": [ - "Reshape_1605_0" - ] - }, - { - "axes": [ - 1 - ], - "inputs": [ - "Reshape_1605" - ], - "name": "Broadcast_1606", - "op": "Broadcast", - "op_version": 0, - "outputs": [ - "Broadcast_1606_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "inputs": [ - "Negative_1607", - "Broadcast_1606" - ], - "name": "Multiply_1608", - "op": "Multiply", - "op_version": 0, - "outputs": [ - "Multiply_1608_0" - ] - }, - { - "element_type": "double", - "name": "Constant_1583", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_1583_0" - ], - "shape": [ - 41, - 37 - ], - "value": [ - "-64" - ] - }, - { - "element_type": "int64_t", - "name": "Constant_1579", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_1579_0" - ], - "shape": [ - 1 - ], - "value": [ - "1" - ] - }, - { - "inputs": [ - "Parameter_1572", - "Constant_1579" - ], - "name": "Max_1580", - "op": "Max", - "op_version": 0, - "outputs": [ - "Max_1580_0" - ], - "reduction_axes": [ - 1 - ] - }, - { - "axes": [ - 1 - ], - "inputs": [ - "Max_1580" - ], - "name": "Broadcast_1581", - "op": "Broadcast", - "op_version": 0, - "outputs": [ - "Broadcast_1581_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "inputs": [ - "Parameter_1572", - "Broadcast_1581" - ], - "name": "Subtract_1582", - "op": "Subtract", - "op_version": 0, - "outputs": [ - "Subtract_1582_0" - ] - }, - { - "inputs": [ - "Constant_1583", - "Subtract_1582" - ], - "name": "Maximum_1584", - "op": "Maximum", - "op_version": 0, - "outputs": [ - "Maximum_1584_0" - ] - }, - { - "inputs": [ - "Maximum_1584" - ], - "name": "Softmax_1585", - "op": "Softmax", - "op_version": 0, - "outputs": [ - "Softmax_1585_0" - ], - "softmax_axes": [ - 1 - ] - }, - { - "inputs": [ - "Multiply_1608", - "Softmax_1585" - ], - "name": "Divide_1609", - "op": "Divide", - "op_version": 0, - "outputs": [ - "Divide_1609_0" - ], - "pythondiv": true - }, - { - "inputs": [ - "Softmax_1585", - "Divide_1609" - ], - "name": "Multiply_1610", - "op": "Multiply", - "op_version": 0, - "outputs": [ - "Multiply_1610_0" - ] - }, - { - "element_type": "int64_t", - "name": "Constant_1611", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_1611_0" - ], - "shape": [ - 1 - ], - "value": [ - "1" - ] - }, - { - "inputs": [ - "Multiply_1610", - "Constant_1611" - ], - "name": "Sum_1612", - "op": "Sum", - "op_version": 0, - "outputs": [ - "Sum_1612_0" - ], - "reduction_axes": [ - 1 - ] - }, - { - "axes": [ - 1 - ], - "inputs": [ - "Sum_1612" - ], - "name": "Broadcast_1613", - "op": "Broadcast", - "op_version": 0, - "outputs": [ - "Broadcast_1613_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "inputs": [ - "Divide_1609", - "Broadcast_1613" - ], - "name": "Subtract_1614", - "op": "Subtract", - "op_version": 0, - "outputs": [ - "Subtract_1614_0" - ] - }, - { - "inputs": [ - "Subtract_1614", - "Softmax_1585" - ], - "name": "Multiply_1615", - "op": "Multiply", - "op_version": 0, - "outputs": [ - "Multiply_1615_0" - ] - }, - { - "inputs": [ - "Multiply_1615" - ], - "name": "Result_1616", - "needs_default_layout": true, - "op": "Result", - "op_version": 0, - "outputs": [ - "Result_1616_0" - ] - } - ], - "parameters": [ - "Parameter_1571", - "Parameter_1572" - ], - "result": [ - "Result_1616" - ] - } -] diff --git a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-bprop1.json b/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-bprop1.json deleted file mode 100644 index 9474ebaa0345ac..00000000000000 --- a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-bprop1.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"Function_4","ops":[{"cacheable":true,"element_type":"int64_t","name":"Parameter_3133","op":"Parameter","op_version":0,"outputs":["Parameter_3133_0"],"shape":[41,1]},{"cacheable":true,"element_type":"double","name":"Parameter_3134","op":"Parameter","op_version":0,"outputs":["Parameter_3134_0"],"shape":[41,37]},{"input_order":[0,1],"inputs":["Parameter_3133"],"name":"Reshape_3179","op":"Reshape","op_version":0,"output_shape":[41],"outputs":["Reshape_3179_0"]},{"inputs":["Reshape_3179"],"name":"OneHot_3180","one_hot_axis":1,"op":"OneHot","op_version":0,"outputs":["OneHot_3180_0"],"shape":[41,37]},{"inputs":["OneHot_3180"],"name":"Convert_3183","op":"Convert","op_version":0,"outputs":["Convert_3183_0"],"target_type":"double"},{"inputs":["Convert_3183"],"name":"Negative_3184","op":"Negative","op_version":0,"outputs":["Negative_3184_0"]},{"element_type":"double","name":"Constant_3166","op":"Constant","op_version":0,"outputs":["Constant_3166_0"],"shape":[1],"value":["1"]},{"element_type":"double","name":"Constant_3167","op":"Constant","op_version":0,"outputs":["Constant_3167_0"],"shape":[1],"value":["41"]},{"inputs":["Constant_3166","Constant_3167"],"name":"Divide_3170","op":"Divide","op_version":0,"outputs":["Divide_3170_0"],"pythondiv":true},{"axes":[0,1],"inputs":["Divide_3170"],"name":"Broadcast_3171","op":"Broadcast","op_version":0,"outputs":["Broadcast_3171_0"],"shape":[41,1,1]},{"input_order":[0,1,2],"inputs":["Broadcast_3171"],"name":"Reshape_3172","op":"Reshape","op_version":0,"output_shape":[41,1],"outputs":["Reshape_3172_0"]},{"element_type":"double","name":"Constant_3169","op":"Constant","op_version":0,"outputs":["Constant_3169_0"],"shape":[41,1],"value":["0"]},{"inputs":["Reshape_3172","Constant_3169"],"name":"Add_3173","op":"Add","op_version":0,"outputs":["Add_3173_0"]},{"input_order":[0,1],"inputs":["Add_3173"],"name":"Reshape_3181","op":"Reshape","op_version":0,"output_shape":[41],"outputs":["Reshape_3181_0"]},{"axes":[1],"inputs":["Reshape_3181"],"name":"Broadcast_3182","op":"Broadcast","op_version":0,"outputs":["Broadcast_3182_0"],"shape":[41,37]},{"inputs":["Negative_3184","Broadcast_3182"],"name":"Multiply_3185","op":"Multiply","op_version":0,"outputs":["Multiply_3185_0"]},{"element_type":"double","name":"Constant_3145","op":"Constant","op_version":0,"outputs":["Constant_3145_0"],"shape":[41,37],"value":["-64"]},{"element_type":"int64_t","name":"Constant_3141","op":"Constant","op_version":0,"outputs":["Constant_3141_0"],"shape":[1],"value":["1"]},{"inputs":["Parameter_3134","Constant_3141"],"name":"Max_3142","op":"Max","op_version":0,"outputs":["Max_3142_0"],"reduction_axes":[1]},{"axes":[1],"inputs":["Max_3142"],"name":"Broadcast_3143","op":"Broadcast","op_version":0,"outputs":["Broadcast_3143_0"],"shape":[41,37]},{"inputs":["Parameter_3134","Broadcast_3143"],"name":"Subtract_3144","op":"Subtract","op_version":0,"outputs":["Subtract_3144_0"]},{"inputs":["Constant_3145","Subtract_3144"],"name":"Maximum_3146","op":"Maximum","op_version":0,"outputs":["Maximum_3146_0"]},{"inputs":["Maximum_3146"],"name":"Softmax_3147","op":"Softmax","op_version":0,"outputs":["Softmax_3147_0"],"softmax_axes":[1]},{"inputs":["Multiply_3185","Softmax_3147"],"name":"Divide_3186","op":"Divide","op_version":0,"outputs":["Divide_3186_0"],"pythondiv":true},{"element_type":"int64_t","name":"Constant_3174","op":"Constant","op_version":0,"outputs":["Constant_3174_0"],"shape":[41,1],"value":["5"]},{"inputs":["Parameter_3133","Constant_3174"],"name":"NotEqual_3175","op":"NotEqual","op_version":0,"outputs":["NotEqual_3175_0"]},{"inputs":["NotEqual_3175"],"name":"Convert_3176","op":"Convert","op_version":0,"outputs":["Convert_3176_0"],"target_type":"double"},{"input_order":[0,1],"inputs":["Convert_3176"],"name":"Reshape_3177","op":"Reshape","op_version":0,"output_shape":[41],"outputs":["Reshape_3177_0"]},{"axes":[1],"inputs":["Reshape_3177"],"name":"Broadcast_3178","op":"Broadcast","op_version":0,"outputs":["Broadcast_3178_0"],"shape":[41,37]},{"inputs":["Divide_3186","Broadcast_3178"],"name":"Multiply_3187","op":"Multiply","op_version":0,"outputs":["Multiply_3187_0"]},{"inputs":["Softmax_3147","Multiply_3187"],"name":"Multiply_3188","op":"Multiply","op_version":0,"outputs":["Multiply_3188_0"]},{"element_type":"int64_t","name":"Constant_3189","op":"Constant","op_version":0,"outputs":["Constant_3189_0"],"shape":[1],"value":["1"]},{"inputs":["Multiply_3188","Constant_3189"],"name":"Sum_3190","op":"Sum","op_version":0,"outputs":["Sum_3190_0"],"reduction_axes":[1]},{"axes":[1],"inputs":["Sum_3190"],"name":"Broadcast_3191","op":"Broadcast","op_version":0,"outputs":["Broadcast_3191_0"],"shape":[41,37]},{"inputs":["Multiply_3187","Broadcast_3191"],"name":"Subtract_3192","op":"Subtract","op_version":0,"outputs":["Subtract_3192_0"]},{"inputs":["Subtract_3192","Softmax_3147"],"name":"Multiply_3193","op":"Multiply","op_version":0,"outputs":["Multiply_3193_0"]},{"inputs":["Multiply_3193"],"name":"Result_3194","needs_default_layout":true,"op":"Result","op_version":0,"outputs":["Result_3194_0"]}],"parameters":["Parameter_3133","Parameter_3134"],"result":["Result_3194"]}] diff --git a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-function1.json b/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-function1.json deleted file mode 100644 index 3555df01599fe4..00000000000000 --- a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-function1.json +++ /dev/null @@ -1,196 +0,0 @@ -[ - { - "name": "Function_1", - "ops": [ - { - "cacheable": true, - "element_type": "int64_t", - "name": "Parameter_785", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_785_0" - ], - "shape": [ - 41, - 1 - ] - }, - { - "cacheable": true, - "element_type": "double", - "name": "Parameter_786", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_786_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "input_order": [ - 0, - 1 - ], - "inputs": [ - "Parameter_785" - ], - "name": "Reshape_790", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 41 - ], - "outputs": [ - "Reshape_790_0" - ] - }, - { - "inputs": [ - "Reshape_790" - ], - "name": "OneHot_791", - "one_hot_axis": 1, - "op": "OneHot", - "op_version": 0, - "outputs": [ - "OneHot_791_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "inputs": [ - "OneHot_791" - ], - "name": "Convert_792", - "op": "Convert", - "op_version": 0, - "outputs": [ - "Convert_792_0" - ], - "target_type": "double" - }, - { - "inputs": [ - "Parameter_786" - ], - "name": "Softmax_789", - "op": "Softmax", - "op_version": 0, - "outputs": [ - "Softmax_789_0" - ], - "softmax_axes": [ - 1 - ] - }, - { - "inputs": [ - "Softmax_789" - ], - "name": "Log_793", - "op": "Log", - "op_version": 0, - "outputs": [ - "Log_793_0" - ] - }, - { - "inputs": [ - "Convert_792", - "Log_793" - ], - "name": "Multiply_794", - "op": "Multiply", - "op_version": 0, - "outputs": [ - "Multiply_794_0" - ] - }, - { - "element_type": "int64_t", - "name": "Constant_795", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_795_0" - ], - "shape": [ - 1 - ], - "value": [ - "1" - ] - }, - { - "inputs": [ - "Multiply_794", - "Constant_795" - ], - "name": "Sum_796", - "op": "Sum", - "op_version": 0, - "outputs": [ - "Sum_796_0" - ], - "reduction_axes": [ - 1 - ] - }, - { - "inputs": [ - "Sum_796" - ], - "name": "Negative_797", - "op": "Negative", - "op_version": 0, - "outputs": [ - "Negative_797_0" - ] - }, - { - "input_order": [ - 0 - ], - "inputs": [ - "Negative_797" - ], - "name": "Reshape_798", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 41, - 1 - ], - "outputs": [ - "Reshape_798_0" - ] - }, - { - "inputs": [ - "Reshape_798" - ], - "name": "Result_799", - "needs_default_layout": true, - "op": "Result", - "op_version": 0, - "outputs": [ - "Result_799_0" - ] - } - ], - "parameters": [ - "Parameter_785", - "Parameter_786" - ], - "result": [ - "Result_799" - ] - } -] diff --git a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-function3.json b/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-function3.json deleted file mode 100644 index d205670b1655cb..00000000000000 --- a/ngraph/test/models/paddlepaddle/ngraph-paddlepaddle-function3.json +++ /dev/null @@ -1,150 +0,0 @@ -[ - { - "name": "Function_3", - "ops": [ - { - "cacheable": true, - "element_type": "double", - "name": "Parameter_2309", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_2309_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "cacheable": true, - "element_type": "double", - "name": "Parameter_2310", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_2310_0" - ], - "shape": [ - 41, - 37 - ] - }, - { - "inputs": [ - "Parameter_2310" - ], - "name": "Softmax_2313", - "op": "Softmax", - "op_version": 0, - "outputs": [ - "Softmax_2313_0" - ], - "softmax_axes": [ - 1 - ] - }, - { - "inputs": [ - "Softmax_2313" - ], - "name": "Log_2314", - "op": "Log", - "op_version": 0, - "outputs": [ - "Log_2314_0" - ] - }, - { - "inputs": [ - "Parameter_2309", - "Log_2314" - ], - "name": "Multiply_2315", - "op": "Multiply", - "op_version": 0, - "outputs": [ - "Multiply_2315_0" - ] - }, - { - "element_type": "int64_t", - "name": "Constant_2316", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_2316_0" - ], - "shape": [ - 1 - ], - "value": [ - "1" - ] - }, - { - "inputs": [ - "Multiply_2315", - "Constant_2316" - ], - "name": "Sum_2317", - "op": "Sum", - "op_version": 0, - "outputs": [ - "Sum_2317_0" - ], - "reduction_axes": [ - 1 - ] - }, - { - "inputs": [ - "Sum_2317" - ], - "name": "Negative_2318", - "op": "Negative", - "op_version": 0, - "outputs": [ - "Negative_2318_0" - ] - }, - { - "input_order": [ - 0 - ], - "inputs": [ - "Negative_2318" - ], - "name": "Reshape_2319", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 41, - 1 - ], - "outputs": [ - "Reshape_2319_0" - ] - }, - { - "inputs": [ - "Reshape_2319" - ], - "name": "Result_2320", - "needs_default_layout": true, - "op": "Result", - "op_version": 0, - "outputs": [ - "Result_2320_0" - ] - } - ], - "parameters": [ - "Parameter_2309", - "Parameter_2310" - ], - "result": [ - "Result_2320" - ] - } -] diff --git a/ngraph/test/models/tensorflow/mnist_cnn_maxpool/tf_function_cluster_13[_XlaCompiledKernel=true,_XlaNumConstantArgs=0,_XlaNumResourceArgs=0].v33.json b/ngraph/test/models/tensorflow/mnist_cnn_maxpool/tf_function_cluster_13[_XlaCompiledKernel=true,_XlaNumConstantArgs=0,_XlaNumResourceArgs=0].v33.json deleted file mode 100644 index e9e5ef6584b998..00000000000000 --- a/ngraph/test/models/tensorflow/mnist_cnn_maxpool/tf_function_cluster_13[_XlaCompiledKernel=true,_XlaNumConstantArgs=0,_XlaNumResourceArgs=0].v33.json +++ /dev/null @@ -1,360 +0,0 @@ -[{ - "name" : "Function_4", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_176", - "op" : "Parameter", - "outputs" : ["Parameter_176_0"], - "shape" : [ 50, 784 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_175", - "op" : "Parameter", - "outputs" : ["Parameter_175_0"], - "shape" : [10] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_174", - "op" : "Parameter", - "outputs" : ["Parameter_174_0"], - "shape" : [ 1024, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_173", - "op" : "Parameter", - "outputs" : ["Parameter_173_0"], - "shape" : [1024] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_172", - "op" : "Parameter", - "outputs" : ["Parameter_172_0"], - "shape" : [ 3136, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_171", - "op" : "Parameter", - "outputs" : ["Parameter_171_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_170", - "op" : "Parameter", - "outputs" : ["Parameter_170_0"], - "shape" : [ 5, 5, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_169", - "op" : "Parameter", - "outputs" : ["Parameter_169_0"], - "shape" : [32] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_168", - "op" : "Parameter", - "outputs" : ["Parameter_168_0"], - "shape" : [ 5, 5, 1, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_179", - "op" : "Constant", - "outputs" : ["Constant_179_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_178", - "op" : "Constant", - "outputs" : ["Constant_178_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_177", - "op" : "Constant", - "outputs" : ["Constant_177_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Parameter_176"], - "name" : "Reshape_180", - "op" : "Reshape", - "output_shape" : [ 50, 28, 28, 1 ], - "outputs" : ["Reshape_180_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_175"], - "name" : "Broadcast_210", - "op" : "Broadcast", - "outputs" : ["Broadcast_210_0"], - "shape" : [ 50, 10 ] - }, - { - "axes" : [0], - "inputs" : ["Parameter_173"], - "name" : "Broadcast_205", - "op" : "Broadcast", - "outputs" : ["Broadcast_205_0"], - "shape" : [ 50, 1024 ] - }, - { - "axes" : [ 0, 1, 2 ], - "inputs" : ["Parameter_171"], - "name" : "Broadcast_196", - "op" : "Broadcast", - "outputs" : ["Broadcast_196_0"], - "shape" : [ 50, 14, 14, 64 ] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_170"], - "name" : "Reshape_193", - "op" : "Reshape", - "output_shape" : [ 64, 32, 5, 5 ], - "outputs" : ["Reshape_193_0"] - }, - { - "axes" : [ 0, 1, 2 ], - "inputs" : ["Parameter_169"], - "name" : "Broadcast_185", - "op" : "Broadcast", - "outputs" : ["Broadcast_185_0"], - "shape" : [ 50, 28, 28, 32 ] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_168"], - "name" : "Reshape_182", - "op" : "Reshape", - "output_shape" : [ 32, 1, 5, 5 ], - "outputs" : ["Reshape_182_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_179"], - "name" : "Broadcast_187", - "op" : "Broadcast", - "outputs" : ["Broadcast_187_0"], - "shape" : [ 50, 28, 28, 32 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_178"], - "name" : "Broadcast_198", - "op" : "Broadcast", - "outputs" : ["Broadcast_198_0"], - "shape" : [ 50, 14, 14, 64 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_177"], - "name" : "Broadcast_207", - "op" : "Broadcast", - "outputs" : ["Broadcast_207_0"], - "shape" : [ 50, 1024 ] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_180"], - "name" : "Reshape_181", - "op" : "Reshape", - "output_shape" : [ 50, 1, 28, 28 ], - "outputs" : ["Reshape_181_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_181", "Reshape_182" ], - "name" : "Convolution_183", - "op" : "Convolution", - "outputs" : ["Convolution_183_0"], - "padding_above" : [ 2, 2 ], - "padding_below" : [ 2, 2 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_183"], - "name" : "Reshape_184", - "op" : "Reshape", - "output_shape" : [ 50, 28, 28, 32 ], - "outputs" : ["Reshape_184_0"] - }, - { - "inputs" : [ "Reshape_184", "Broadcast_185" ], - "name" : "Add_186", - "op" : "Add", - "outputs" : ["Add_186_0"] - }, - { - "inputs" : [ "Broadcast_187", "Add_186" ], - "name" : "Maximum_188", - "op" : "Maximum", - "outputs" : ["Maximum_188_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_188"], - "name" : "Reshape_189", - "op" : "Reshape", - "output_shape" : [ 50, 32, 28, 28 ], - "outputs" : ["Reshape_189_0"] - }, - { - "inputs" : ["Reshape_189"], - "name" : "MaxPool_190", - "op" : "MaxPool", - "outputs" : ["MaxPool_190_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["MaxPool_190"], - "name" : "Reshape_191", - "op" : "Reshape", - "output_shape" : [ 50, 14, 14, 32 ], - "outputs" : ["Reshape_191_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_191"], - "name" : "Reshape_192", - "op" : "Reshape", - "output_shape" : [ 50, 32, 14, 14 ], - "outputs" : ["Reshape_192_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_192", "Reshape_193" ], - "name" : "Convolution_194", - "op" : "Convolution", - "outputs" : ["Convolution_194_0"], - "padding_above" : [ 2, 2 ], - "padding_below" : [ 2, 2 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_194"], - "name" : "Reshape_195", - "op" : "Reshape", - "output_shape" : [ 50, 14, 14, 64 ], - "outputs" : ["Reshape_195_0"] - }, - { - "inputs" : [ "Reshape_195", "Broadcast_196" ], - "name" : "Add_197", - "op" : "Add", - "outputs" : ["Add_197_0"] - }, - { - "inputs" : [ "Broadcast_198", "Add_197" ], - "name" : "Maximum_199", - "op" : "Maximum", - "outputs" : ["Maximum_199_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_199"], - "name" : "Reshape_200", - "op" : "Reshape", - "output_shape" : [ 50, 64, 14, 14 ], - "outputs" : ["Reshape_200_0"] - }, - { - "inputs" : ["Reshape_200"], - "name" : "MaxPool_201", - "op" : "MaxPool", - "outputs" : ["MaxPool_201_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["MaxPool_201"], - "name" : "Reshape_202", - "op" : "Reshape", - "output_shape" : [ 50, 7, 7, 64 ], - "outputs" : ["Reshape_202_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_202"], - "name" : "Reshape_203", - "op" : "Reshape", - "output_shape" : [ 50, 3136 ], - "outputs" : ["Reshape_203_0"] - }, - { - "inputs" : [ "Reshape_203", "Parameter_172" ], - "name" : "Dot_204", - "op" : "Dot", - "outputs" : ["Dot_204_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_204", "Broadcast_205" ], - "name" : "Add_206", - "op" : "Add", - "outputs" : ["Add_206_0"] - }, - { - "inputs" : [ "Broadcast_207", "Add_206" ], - "name" : "Maximum_208", - "op" : "Maximum", - "outputs" : ["Maximum_208_0"] - }, - { - "inputs" : [ "Maximum_208", "Parameter_174" ], - "name" : "Dot_209", - "op" : "Dot", - "outputs" : ["Dot_209_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_209", "Broadcast_210" ], - "name" : "Add_211", - "op" : "Add", - "outputs" : ["Add_211_0"] - } - ], - "parameters" : [ - "Parameter_168", "Parameter_169", "Parameter_170", "Parameter_171", - "Parameter_172", "Parameter_173", "Parameter_174", "Parameter_175", - "Parameter_176" - ], - "result" : ["Add_211"] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/mnist_cnn_maxpool/tf_function_cluster_17[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v170.json b/ngraph/test/models/tensorflow/mnist_cnn_maxpool/tf_function_cluster_17[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v170.json deleted file mode 100644 index 2ec74c5e1cc2aa..00000000000000 --- a/ngraph/test/models/tensorflow/mnist_cnn_maxpool/tf_function_cluster_17[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v170.json +++ /dev/null @@ -1,1219 +0,0 @@ -[{ - "name" : "Function_6", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_323", - "op" : "Parameter", - "outputs" : ["Parameter_323_0"], - "shape" : [ 50, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_322", - "op" : "Parameter", - "outputs" : ["Parameter_322_0"], - "shape" : [ 50, 784 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_321", - "op" : "Parameter", - "outputs" : ["Parameter_321_0"], - "shape" : [10] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_320", - "op" : "Parameter", - "outputs" : ["Parameter_320_0"], - "shape" : [ 1024, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_319", - "op" : "Parameter", - "outputs" : ["Parameter_319_0"], - "shape" : [1024] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_318", - "op" : "Parameter", - "outputs" : ["Parameter_318_0"], - "shape" : [ 3136, 1024 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_317", - "op" : "Parameter", - "outputs" : ["Parameter_317_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_316", - "op" : "Parameter", - "outputs" : ["Parameter_316_0"], - "shape" : [ 5, 5, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_315", - "op" : "Parameter", - "outputs" : ["Parameter_315_0"], - "shape" : [32] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_314", - "op" : "Parameter", - "outputs" : ["Parameter_314_0"], - "shape" : [ 5, 5, 1, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_469", - "op" : "Constant", - "outputs" : ["Constant_469_0"], - "shape" : [], - "value" : ["50"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_326", - "op" : "Constant", - "outputs" : ["Constant_326_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_325", - "op" : "Constant", - "outputs" : ["Constant_325_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_324", - "op" : "Constant", - "outputs" : ["Constant_324_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_441", - "op" : "Constant", - "outputs" : ["Constant_441_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_422", - "op" : "Constant", - "outputs" : ["Constant_422_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_411", - "op" : "Constant", - "outputs" : ["Constant_411_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_372", - "op" : "Constant", - "outputs" : ["Constant_372_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_365", - "op" : "Constant", - "outputs" : ["Constant_365_0"], - "shape" : [1], - "value" : ["50"] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_381", - "op" : "Constant", - "outputs" : ["Constant_381_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_370", - "op" : "Constant", - "outputs" : ["Constant_370_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_361", - "op" : "Constant", - "outputs" : ["Constant_361_0"], - "shape" : [1], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_359", - "op" : "Constant", - "outputs" : ["Constant_359_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Parameter_323"], - "name" : "Reshape_400", - "op" : "Reshape", - "output_shape" : [ 50, 10 ], - "outputs" : ["Reshape_400_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Parameter_322"], - "name" : "Reshape_327", - "op" : "Reshape", - "output_shape" : [ 50, 28, 28, 1 ], - "outputs" : ["Reshape_327_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_321"], - "name" : "Broadcast_357", - "op" : "Broadcast", - "outputs" : ["Broadcast_357_0"], - "shape" : [ 50, 10 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_320"], - "name" : "Reshape_414", - "op" : "Reshape", - "output_shape" : [ 10, 1024 ], - "outputs" : ["Reshape_414_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_319"], - "name" : "Broadcast_352", - "op" : "Broadcast", - "outputs" : ["Broadcast_352_0"], - "shape" : [ 50, 1024 ] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_318"], - "name" : "Reshape_425", - "op" : "Reshape", - "output_shape" : [ 1024, 3136 ], - "outputs" : ["Reshape_425_0"] - }, - { - "axes" : [ 0, 1, 2 ], - "inputs" : ["Parameter_317"], - "name" : "Broadcast_343", - "op" : "Broadcast", - "outputs" : ["Broadcast_343_0"], - "shape" : [ 50, 14, 14, 64 ] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_316"], - "name" : "Reshape_340", - "op" : "Reshape", - "output_shape" : [ 64, 32, 5, 5 ], - "outputs" : ["Reshape_340_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_316"], - "name" : "Reshape_445", - "op" : "Reshape", - "output_shape" : [ 64, 32, 5, 5 ], - "outputs" : ["Reshape_445_0"] - }, - { - "axes" : [ 0, 1, 2 ], - "inputs" : ["Parameter_315"], - "name" : "Broadcast_332", - "op" : "Broadcast", - "outputs" : ["Broadcast_332_0"], - "shape" : [ 50, 28, 28, 32 ] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_314"], - "name" : "Reshape_329", - "op" : "Reshape", - "output_shape" : [ 32, 1, 5, 5 ], - "outputs" : ["Reshape_329_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_326"], - "name" : "Broadcast_334", - "op" : "Broadcast", - "outputs" : ["Broadcast_334_0"], - "shape" : [ 50, 28, 28, 32 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_325"], - "name" : "Broadcast_345", - "op" : "Broadcast", - "outputs" : ["Broadcast_345_0"], - "shape" : [ 50, 14, 14, 64 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_324"], - "name" : "Broadcast_354", - "op" : "Broadcast", - "outputs" : ["Broadcast_354_0"], - "shape" : [ 50, 1024 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_441"], - "name" : "Broadcast_442", - "op" : "Broadcast", - "outputs" : ["Broadcast_442_0"], - "shape" : [ 50, 28, 28, 32 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_422"], - "name" : "Broadcast_423", - "op" : "Broadcast", - "outputs" : ["Broadcast_423_0"], - "shape" : [ 50, 14, 14, 64 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Constant_411"], - "name" : "Broadcast_412", - "op" : "Broadcast", - "outputs" : ["Broadcast_412_0"], - "shape" : [ 50, 1024 ] - }, - { - "input_order" : [], - "inputs" : ["Constant_372"], - "name" : "Reshape_373", - "op" : "Reshape", - "output_shape" : [1], - "outputs" : ["Reshape_373_0"] - }, - { - "inputs" : ["Constant_365"], - "name" : "Product_366", - "op" : "Product", - "outputs" : ["Product_366_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [0], - "inputs" : ["Constant_361"], - "name" : "Reshape_362", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_362_0"] - }, - { - "axes" : [0], - "inputs" : ["Constant_359"], - "name" : "Broadcast_360", - "op" : "Broadcast", - "outputs" : ["Broadcast_360_0"], - "shape" : [50] - }, - { - "inputs" : ["Reshape_400"], - "name" : "Negative_461", - "op" : "Negative", - "outputs" : ["Negative_461_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Reshape_327"], - "name" : "Reshape_456", - "op" : "Reshape", - "output_shape" : [ 1, 50, 28, 28 ], - "outputs" : ["Reshape_456_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_327"], - "name" : "Reshape_328", - "op" : "Reshape", - "output_shape" : [ 50, 1, 28, 28 ], - "outputs" : ["Reshape_328_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_373"], - "name" : "Broadcast_374", - "op" : "Broadcast", - "outputs" : ["Broadcast_374_0"], - "shape" : [ 1, 1 ] - }, - { - "input_order" : [], - "inputs" : ["Product_366"], - "name" : "Reshape_367", - "op" : "Reshape", - "output_shape" : [1], - "outputs" : ["Reshape_367_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_362"], - "name" : "Broadcast_363", - "op" : "Broadcast", - "outputs" : ["Broadcast_363_0"], - "shape" : [50] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_328", "Reshape_329" ], - "name" : "Convolution_330", - "op" : "Convolution", - "outputs" : ["Convolution_330_0"], - "padding_above" : [ 2, 2 ], - "padding_below" : [ 2, 2 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Broadcast_374"], - "name" : "Reshape_375", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_375_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_367"], - "name" : "Broadcast_368", - "op" : "Broadcast", - "outputs" : ["Broadcast_368_0"], - "shape" : [ 1, 1 ] - }, - { - "inputs" : [ "Broadcast_360", "Broadcast_363" ], - "name" : "Add_364", - "op" : "Add", - "outputs" : ["Add_364_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_330"], - "name" : "Reshape_331", - "op" : "Reshape", - "output_shape" : [ 50, 28, 28, 32 ], - "outputs" : ["Reshape_331_0"] - }, - { - "inputs" : [ "Reshape_375", "Constant_370" ], - "name" : "Less_376", - "op" : "Less", - "outputs" : ["Less_376_0"] - }, - { - "inputs" : ["Reshape_375"], - "name" : "Abs_379", - "op" : "Abs", - "outputs" : ["Abs_379_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Broadcast_368"], - "name" : "Reshape_369", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_369_0"] - }, - { - "inputs" : [ "Reshape_331", "Broadcast_332" ], - "name" : "Add_333", - "op" : "Add", - "outputs" : ["Add_333_0"] - }, - { - "inputs" : [ "Reshape_369", "Constant_370" ], - "name" : "Less_371", - "op" : "Less", - "outputs" : ["Less_371_0"] - }, - { - "inputs" : [ "Reshape_369", "Reshape_375" ], - "name" : "Divide_385", - "op" : "Divide", - "outputs" : ["Divide_385_0"] - }, - { - "inputs" : ["Reshape_369"], - "name" : "Abs_378", - "op" : "Abs", - "outputs" : ["Abs_378_0"] - }, - { - "inputs" : [ "Broadcast_334", "Add_333" ], - "name" : "Maximum_335", - "op" : "Maximum", - "outputs" : ["Maximum_335_0"] - }, - { - "inputs" : [ "Less_371", "Less_376" ], - "name" : "NotEqual_377", - "op" : "NotEqual", - "outputs" : ["NotEqual_377_0"] - }, - { - "inputs" : [ "Abs_378", "Abs_379" ], - "name" : "Add_380", - "op" : "Add", - "outputs" : ["Add_380_0"] - }, - { - "inputs" : [ "Maximum_335", "Broadcast_442" ], - "name" : "Greater_443", - "op" : "Greater", - "outputs" : ["Greater_443_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_335"], - "name" : "Reshape_336", - "op" : "Reshape", - "output_shape" : [ 50, 32, 28, 28 ], - "outputs" : ["Reshape_336_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_335"], - "name" : "Reshape_448", - "op" : "Reshape", - "output_shape" : [ 50, 32, 28, 28 ], - "outputs" : ["Reshape_448_0"] - }, - { - "inputs" : [ "Add_380", "Constant_381" ], - "name" : "Subtract_382", - "op" : "Subtract", - "outputs" : ["Subtract_382_0"] - }, - { - "inputs" : ["Reshape_336"], - "name" : "MaxPool_337", - "op" : "MaxPool", - "outputs" : ["MaxPool_337_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "inputs" : ["Subtract_382"], - "name" : "Negative_383", - "op" : "Negative", - "outputs" : ["Negative_383_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["MaxPool_337"], - "name" : "Reshape_338", - "op" : "Reshape", - "output_shape" : [ 50, 14, 14, 32 ], - "outputs" : ["Reshape_338_0"] - }, - { - "inputs" : [ "Negative_383", "Abs_379" ], - "name" : "Divide_384", - "op" : "Divide", - "outputs" : ["Divide_384_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Reshape_338"], - "name" : "Reshape_436", - "op" : "Reshape", - "output_shape" : [ 32, 50, 14, 14 ], - "outputs" : ["Reshape_436_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_338"], - "name" : "Reshape_339", - "op" : "Reshape", - "output_shape" : [ 50, 32, 14, 14 ], - "outputs" : ["Reshape_339_0"] - }, - { - "inputs" : [ "NotEqual_377", "Divide_384", "Divide_385" ], - "name" : "Select_386", - "op" : "Select", - "outputs" : ["Select_386_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_339", "Reshape_340" ], - "name" : "Convolution_341", - "op" : "Convolution", - "outputs" : ["Convolution_341_0"], - "padding_above" : [ 2, 2 ], - "padding_below" : [ 2, 2 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : ["Select_386"], - "name" : "Convert_387", - "op" : "Convert", - "outputs" : ["Convert_387_0"], - "target_type" : "float" - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_341"], - "name" : "Reshape_342", - "op" : "Reshape", - "output_shape" : [ 50, 14, 14, 64 ], - "outputs" : ["Reshape_342_0"] - }, - { - "axes" : [0], - "inputs" : ["Convert_387"], - "name" : "Broadcast_388", - "op" : "Broadcast", - "outputs" : ["Broadcast_388_0"], - "shape" : [50] - }, - { - "inputs" : [ "Reshape_342", "Broadcast_343" ], - "name" : "Add_344", - "op" : "Add", - "outputs" : ["Add_344_0"] - }, - { - "inputs" : [ "Add_364", "Broadcast_388" ], - "name" : "Divide_389", - "op" : "Divide", - "outputs" : ["Divide_389_0"] - }, - { - "inputs" : [ "Broadcast_345", "Add_344" ], - "name" : "Maximum_346", - "op" : "Maximum", - "outputs" : ["Maximum_346_0"] - }, - { - "input_order" : [0], - "inputs" : ["Divide_389"], - "name" : "Reshape_390", - "op" : "Reshape", - "output_shape" : [50], - "outputs" : ["Reshape_390_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_346"], - "name" : "Reshape_428", - "op" : "Reshape", - "output_shape" : [ 50, 64, 14, 14 ], - "outputs" : ["Reshape_428_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_346"], - "name" : "Reshape_347", - "op" : "Reshape", - "output_shape" : [ 50, 64, 14, 14 ], - "outputs" : ["Reshape_347_0"] - }, - { - "inputs" : [ "Maximum_346", "Broadcast_423" ], - "name" : "Greater_424", - "op" : "Greater", - "outputs" : ["Greater_424_0"] - }, - { - "input_order" : [0], - "inputs" : ["Reshape_390"], - "name" : "Reshape_391", - "op" : "Reshape", - "output_shape" : [ 50, 1 ], - "outputs" : ["Reshape_391_0"] - }, - { - "inputs" : ["Reshape_347"], - "name" : "MaxPool_348", - "op" : "MaxPool", - "outputs" : ["MaxPool_348_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_391"], - "name" : "Reshape_402", - "op" : "Reshape", - "output_shape" : [50], - "outputs" : ["Reshape_402_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["MaxPool_348"], - "name" : "Reshape_349", - "op" : "Reshape", - "output_shape" : [ 50, 7, 7, 64 ], - "outputs" : ["Reshape_349_0"] - }, - { - "axes" : [1], - "inputs" : ["Reshape_402"], - "name" : "Broadcast_403", - "op" : "Broadcast", - "outputs" : ["Broadcast_403_0"], - "shape" : [ 50, 10 ] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_349"], - "name" : "Reshape_350", - "op" : "Reshape", - "output_shape" : [ 50, 3136 ], - "outputs" : ["Reshape_350_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_350"], - "name" : "Reshape_419", - "op" : "Reshape", - "output_shape" : [ 3136, 50 ], - "outputs" : ["Reshape_419_0"] - }, - { - "inputs" : [ "Reshape_350", "Parameter_318" ], - "name" : "Dot_351", - "op" : "Dot", - "outputs" : ["Dot_351_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_351", "Broadcast_352" ], - "name" : "Add_353", - "op" : "Add", - "outputs" : ["Add_353_0"] - }, - { - "inputs" : [ "Broadcast_354", "Add_353" ], - "name" : "Maximum_355", - "op" : "Maximum", - "outputs" : ["Maximum_355_0"] - }, - { - "inputs" : [ "Maximum_355", "Parameter_320" ], - "name" : "Dot_356", - "op" : "Dot", - "outputs" : ["Dot_356_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Maximum_355", "Broadcast_412" ], - "name" : "Greater_413", - "op" : "Greater", - "outputs" : ["Greater_413_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Maximum_355"], - "name" : "Reshape_408", - "op" : "Reshape", - "output_shape" : [ 1024, 50 ], - "outputs" : ["Reshape_408_0"] - }, - { - "inputs" : [ "Dot_356", "Broadcast_357" ], - "name" : "Add_358", - "op" : "Add", - "outputs" : ["Add_358_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Add_358"], - "name" : "Reshape_392", - "op" : "Reshape", - "output_shape" : [ 50, 10 ], - "outputs" : ["Reshape_392_0"] - }, - { - "inputs" : ["Reshape_392"], - "name" : "Max_393", - "op" : "Max", - "outputs" : ["Max_393_0"], - "reduction_axes" : [1] - }, - { - "axes" : [1], - "inputs" : ["Max_393"], - "name" : "Broadcast_394", - "op" : "Broadcast", - "outputs" : ["Broadcast_394_0"], - "shape" : [ 50, 10 ] - }, - { - "inputs" : [ "Reshape_392", "Broadcast_394" ], - "name" : "Subtract_395", - "op" : "Subtract", - "outputs" : ["Subtract_395_0"] - }, - { - "inputs" : ["Subtract_395"], - "name" : "Exp_396", - "op" : "Exp", - "outputs" : ["Exp_396_0"] - }, - { - "inputs" : ["Exp_396"], - "name" : "Sum_397", - "op" : "Sum", - "outputs" : ["Sum_397_0"], - "reduction_axes" : [1] - }, - { - "inputs" : ["Sum_397"], - "name" : "Log_462", - "op" : "Log", - "outputs" : ["Log_462_0"] - }, - { - "axes" : [1], - "inputs" : ["Sum_397"], - "name" : "Broadcast_398", - "op" : "Broadcast", - "outputs" : ["Broadcast_398_0"], - "shape" : [ 50, 10 ] - }, - { - "axes" : [1], - "inputs" : ["Log_462"], - "name" : "Broadcast_463", - "op" : "Broadcast", - "outputs" : ["Broadcast_463_0"], - "shape" : [ 50, 10 ] - }, - { - "inputs" : [ "Exp_396", "Broadcast_398" ], - "name" : "Divide_399", - "op" : "Divide", - "outputs" : ["Divide_399_0"] - }, - { - "inputs" : [ "Subtract_395", "Broadcast_463" ], - "name" : "Subtract_464", - "op" : "Subtract", - "outputs" : ["Subtract_464_0"] - }, - { - "inputs" : [ "Divide_399", "Reshape_400" ], - "name" : "Subtract_401", - "op" : "Subtract", - "outputs" : ["Subtract_401_0"] - }, - { - "inputs" : [ "Negative_461", "Subtract_464" ], - "name" : "Multiply_465", - "op" : "Multiply", - "outputs" : ["Multiply_465_0"] - }, - { - "inputs" : [ "Broadcast_403", "Subtract_401" ], - "name" : "Multiply_404", - "op" : "Multiply", - "outputs" : ["Multiply_404_0"] - }, - { - "inputs" : ["Multiply_465"], - "name" : "Sum_466", - "op" : "Sum", - "outputs" : ["Sum_466_0"], - "reduction_axes" : [1] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_404"], - "name" : "Reshape_405", - "op" : "Reshape", - "output_shape" : [ 50, 10 ], - "outputs" : ["Reshape_405_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_466"], - "name" : "Reshape_467", - "op" : "Reshape", - "output_shape" : [50], - "outputs" : ["Reshape_467_0"] - }, - { - "inputs" : ["Reshape_405"], - "name" : "Sum_406", - "op" : "Sum", - "outputs" : ["Sum_406_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_405"], - "name" : "Reshape_409", - "op" : "Reshape", - "output_shape" : [ 50, 10 ], - "outputs" : ["Reshape_409_0"] - }, - { - "inputs" : ["Reshape_467"], - "name" : "Sum_468", - "op" : "Sum", - "outputs" : ["Sum_468_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [0], - "inputs" : ["Sum_406"], - "name" : "Reshape_407", - "op" : "Reshape", - "output_shape" : [10], - "outputs" : ["Reshape_407_0"] - }, - { - "inputs" : [ "Reshape_408", "Reshape_409" ], - "name" : "Dot_410", - "op" : "Dot", - "outputs" : ["Dot_410_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_409", "Reshape_414" ], - "name" : "Dot_415", - "op" : "Dot", - "outputs" : ["Dot_415_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Sum_468", "Constant_469" ], - "name" : "Divide_470", - "op" : "Divide", - "outputs" : ["Divide_470_0"] - }, - { - "inputs" : [ "Greater_413", "Dot_415", "Broadcast_412" ], - "name" : "Select_416", - "op" : "Select", - "outputs" : ["Select_416_0"] - }, - { - "inputs" : ["Select_416"], - "name" : "Sum_417", - "op" : "Sum", - "outputs" : ["Sum_417_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Select_416"], - "name" : "Reshape_420", - "op" : "Reshape", - "output_shape" : [ 50, 1024 ], - "outputs" : ["Reshape_420_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_417"], - "name" : "Reshape_418", - "op" : "Reshape", - "output_shape" : [1024], - "outputs" : ["Reshape_418_0"] - }, - { - "inputs" : [ "Reshape_420", "Reshape_425" ], - "name" : "Dot_426", - "op" : "Dot", - "outputs" : ["Dot_426_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_419", "Reshape_420" ], - "name" : "Dot_421", - "op" : "Dot", - "outputs" : ["Dot_421_0"], - "reduction_axes_count" : 1 - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_426"], - "name" : "Reshape_427", - "op" : "Reshape", - "output_shape" : [ 50, 7, 7, 64 ], - "outputs" : ["Reshape_427_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_427"], - "name" : "Reshape_429", - "op" : "Reshape", - "output_shape" : [ 50, 64, 7, 7 ], - "outputs" : ["Reshape_429_0"] - }, - { - "inputs" : [ "Reshape_428", "Reshape_429" ], - "name" : "MaxPoolBackprop_430", - "op" : "MaxPoolBackprop", - "outputs" : ["MaxPoolBackprop_430_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["MaxPoolBackprop_430"], - "name" : "Reshape_431", - "op" : "Reshape", - "output_shape" : [ 50, 14, 14, 64 ], - "outputs" : ["Reshape_431_0"] - }, - { - "inputs" : [ "Greater_424", "Reshape_431", "Broadcast_423" ], - "name" : "Select_432", - "op" : "Select", - "outputs" : ["Select_432_0"] - }, - { - "inputs" : ["Select_432"], - "name" : "Sum_433", - "op" : "Sum", - "outputs" : ["Sum_433_0"], - "reduction_axes" : [ 0, 1, 2 ] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Select_432"], - "name" : "Reshape_435", - "op" : "Reshape", - "output_shape" : [ 50, 14, 14, 64 ], - "outputs" : ["Reshape_435_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_433"], - "name" : "Reshape_434", - "op" : "Reshape", - "output_shape" : [64], - "outputs" : ["Reshape_434_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Reshape_435"], - "name" : "Reshape_437", - "op" : "Reshape", - "output_shape" : [ 64, 50, 14, 14 ], - "outputs" : ["Reshape_437_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_435"], - "name" : "Reshape_444", - "op" : "Reshape", - "output_shape" : [ 50, 64, 14, 14 ], - "outputs" : ["Reshape_444_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_436", "Reshape_437" ], - "name" : "Convolution_438", - "op" : "Convolution", - "outputs" : ["Convolution_438_0"], - "padding_above" : [ 2, 2 ], - "padding_below" : [ 2, 2 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_batch_shape" : [ 50, 32, 14, 14 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_445", "Reshape_444" ], - "name" : "ConvolutionBackpropData_446", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_446_0"], - "padding_above_forward" : [ 2, 2 ], - "padding_below_forward" : [ 2, 2 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 1, 1 ] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_438"], - "name" : "Reshape_439", - "op" : "Reshape", - "output_shape" : [ 64, 5, 5, 32 ], - "outputs" : ["Reshape_439_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_446"], - "name" : "Reshape_447", - "op" : "Reshape", - "output_shape" : [ 50, 14, 14, 32 ], - "outputs" : ["Reshape_447_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_439"], - "name" : "Reshape_440", - "op" : "Reshape", - "output_shape" : [ 5, 5, 32, 64 ], - "outputs" : ["Reshape_440_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_447"], - "name" : "Reshape_449", - "op" : "Reshape", - "output_shape" : [ 50, 32, 14, 14 ], - "outputs" : ["Reshape_449_0"] - }, - { - "inputs" : [ "Reshape_448", "Reshape_449" ], - "name" : "MaxPoolBackprop_450", - "op" : "MaxPoolBackprop", - "outputs" : ["MaxPoolBackprop_450_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["MaxPoolBackprop_450"], - "name" : "Reshape_451", - "op" : "Reshape", - "output_shape" : [ 50, 28, 28, 32 ], - "outputs" : ["Reshape_451_0"] - }, - { - "inputs" : [ "Greater_443", "Reshape_451", "Broadcast_442" ], - "name" : "Select_452", - "op" : "Select", - "outputs" : ["Select_452_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Select_452"], - "name" : "Reshape_455", - "op" : "Reshape", - "output_shape" : [ 50, 28, 28, 32 ], - "outputs" : ["Reshape_455_0"] - }, - { - "inputs" : ["Select_452"], - "name" : "Sum_453", - "op" : "Sum", - "outputs" : ["Sum_453_0"], - "reduction_axes" : [ 0, 1, 2 ] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Reshape_455"], - "name" : "Reshape_457", - "op" : "Reshape", - "output_shape" : [ 32, 50, 28, 28 ], - "outputs" : ["Reshape_457_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_453"], - "name" : "Reshape_454", - "op" : "Reshape", - "output_shape" : [32], - "outputs" : ["Reshape_454_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_456", "Reshape_457" ], - "name" : "Convolution_458", - "op" : "Convolution", - "outputs" : ["Convolution_458_0"], - "padding_above" : [ 2, 2 ], - "padding_below" : [ 2, 2 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_458"], - "name" : "Reshape_459", - "op" : "Reshape", - "output_shape" : [ 32, 5, 5, 1 ], - "outputs" : ["Reshape_459_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_459"], - "name" : "Reshape_460", - "op" : "Reshape", - "output_shape" : [ 5, 5, 1, 32 ], - "outputs" : ["Reshape_460_0"] - } - ], - "parameters" : [ - "Parameter_314", "Parameter_315", "Parameter_316", "Parameter_317", - "Parameter_318", "Parameter_319", "Parameter_320", "Parameter_321", - "Parameter_322", "Parameter_323" - ], - "result" : [ - "Add_358", "Reshape_407", "Dot_410", "Reshape_418", "Dot_421", - "Reshape_434", "Reshape_440", "Reshape_454", "Reshape_460", "Divide_470" - ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/mnist_mlp/tf_function_cluster_4[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v82.json b/ngraph/test/models/tensorflow/mnist_mlp/tf_function_cluster_4[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v82.json deleted file mode 100644 index d836915a668fff..00000000000000 --- a/ngraph/test/models/tensorflow/mnist_mlp/tf_function_cluster_4[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v82.json +++ /dev/null @@ -1,440 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [ 100, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [ 100, 784 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [10] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 784, 10 ] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_17", - "op" : "Constant", - "outputs" : ["Constant_17_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_10", - "op" : "Constant", - "outputs" : ["Constant_10_0"], - "shape" : [1], - "value" : ["100"] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_26", - "op" : "Constant", - "outputs" : ["Constant_26_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "int32_t", - "inputs" : [], - "name" : "Constant_15", - "op" : "Constant", - "outputs" : ["Constant_15_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_6", - "op" : "Constant", - "outputs" : ["Constant_6_0"], - "shape" : [1], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_4", - "op" : "Constant", - "outputs" : ["Constant_4_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Parameter_3"], - "name" : "Reshape_48", - "op" : "Reshape", - "output_shape" : [ 100, 10 ], - "outputs" : ["Reshape_48_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_2"], - "name" : "Reshape_56", - "op" : "Reshape", - "output_shape" : [ 784, 100 ], - "outputs" : ["Reshape_56_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_1"], - "name" : "Broadcast_38", - "op" : "Broadcast", - "outputs" : ["Broadcast_38_0"], - "shape" : [ 100, 10 ] - }, - { - "inputs" : [ "Parameter_2", "Parameter_0" ], - "name" : "Dot_37", - "op" : "Dot", - "outputs" : ["Dot_37_0"], - "reduction_axes_count" : 1 - }, - { - "input_order" : [], - "inputs" : ["Constant_17"], - "name" : "Reshape_18", - "op" : "Reshape", - "output_shape" : [1], - "outputs" : ["Reshape_18_0"] - }, - { - "inputs" : ["Constant_10"], - "name" : "Product_11", - "op" : "Product", - "outputs" : ["Product_11_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [0], - "inputs" : ["Constant_6"], - "name" : "Reshape_7", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_7_0"] - }, - { - "axes" : [0], - "inputs" : ["Constant_4"], - "name" : "Broadcast_5", - "op" : "Broadcast", - "outputs" : ["Broadcast_5_0"], - "shape" : [100] - }, - { - "inputs" : [ "Dot_37", "Broadcast_38" ], - "name" : "Add_39", - "op" : "Add", - "outputs" : ["Add_39_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_18"], - "name" : "Broadcast_19", - "op" : "Broadcast", - "outputs" : ["Broadcast_19_0"], - "shape" : [ 1, 1 ] - }, - { - "input_order" : [], - "inputs" : ["Product_11"], - "name" : "Reshape_12", - "op" : "Reshape", - "output_shape" : [1], - "outputs" : ["Reshape_12_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_7"], - "name" : "Broadcast_8", - "op" : "Broadcast", - "outputs" : ["Broadcast_8_0"], - "shape" : [100] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Add_39"], - "name" : "Reshape_40", - "op" : "Reshape", - "output_shape" : [ 100, 10 ], - "outputs" : ["Reshape_40_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Broadcast_19"], - "name" : "Reshape_20", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_20_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_12"], - "name" : "Broadcast_13", - "op" : "Broadcast", - "outputs" : ["Broadcast_13_0"], - "shape" : [ 1, 1 ] - }, - { - "inputs" : [ "Broadcast_5", "Broadcast_8" ], - "name" : "Add_9", - "op" : "Add", - "outputs" : ["Add_9_0"] - }, - { - "inputs" : ["Reshape_40"], - "name" : "Max_41", - "op" : "Max", - "outputs" : ["Max_41_0"], - "reduction_axes" : [1] - }, - { - "inputs" : [ "Reshape_20", "Constant_15" ], - "name" : "Less_21", - "op" : "Less", - "outputs" : ["Less_21_0"] - }, - { - "inputs" : ["Reshape_20"], - "name" : "Abs_24", - "op" : "Abs", - "outputs" : ["Abs_24_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Broadcast_13"], - "name" : "Reshape_14", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_14_0"] - }, - { - "axes" : [1], - "inputs" : ["Max_41"], - "name" : "Broadcast_42", - "op" : "Broadcast", - "outputs" : ["Broadcast_42_0"], - "shape" : [ 100, 10 ] - }, - { - "inputs" : ["Reshape_14"], - "name" : "Abs_23", - "op" : "Abs", - "outputs" : ["Abs_23_0"] - }, - { - "inputs" : [ "Reshape_14", "Constant_15" ], - "name" : "Less_16", - "op" : "Less", - "outputs" : ["Less_16_0"] - }, - { - "inputs" : [ "Reshape_14", "Reshape_20" ], - "name" : "Divide_30", - "op" : "Divide", - "outputs" : ["Divide_30_0"] - }, - { - "inputs" : [ "Reshape_40", "Broadcast_42" ], - "name" : "Subtract_43", - "op" : "Subtract", - "outputs" : ["Subtract_43_0"] - }, - { - "inputs" : [ "Abs_23", "Abs_24" ], - "name" : "Add_25", - "op" : "Add", - "outputs" : ["Add_25_0"] - }, - { - "inputs" : [ "Less_16", "Less_21" ], - "name" : "NotEqual_22", - "op" : "NotEqual", - "outputs" : ["NotEqual_22_0"] - }, - { - "inputs" : ["Subtract_43"], - "name" : "Exp_44", - "op" : "Exp", - "outputs" : ["Exp_44_0"] - }, - { - "inputs" : [ "Add_25", "Constant_26" ], - "name" : "Subtract_27", - "op" : "Subtract", - "outputs" : ["Subtract_27_0"] - }, - { - "inputs" : ["Exp_44"], - "name" : "Sum_45", - "op" : "Sum", - "outputs" : ["Sum_45_0"], - "reduction_axes" : [1] - }, - { - "inputs" : ["Subtract_27"], - "name" : "Negative_28", - "op" : "Negative", - "outputs" : ["Negative_28_0"] - }, - { - "axes" : [1], - "inputs" : ["Sum_45"], - "name" : "Broadcast_46", - "op" : "Broadcast", - "outputs" : ["Broadcast_46_0"], - "shape" : [ 100, 10 ] - }, - { - "inputs" : [ "Negative_28", "Abs_24" ], - "name" : "Divide_29", - "op" : "Divide", - "outputs" : ["Divide_29_0"] - }, - { - "inputs" : [ "Exp_44", "Broadcast_46" ], - "name" : "Divide_47", - "op" : "Divide", - "outputs" : ["Divide_47_0"] - }, - { - "inputs" : [ "NotEqual_22", "Divide_29", "Divide_30" ], - "name" : "Select_31", - "op" : "Select", - "outputs" : ["Select_31_0"] - }, - { - "inputs" : [ "Divide_47", "Reshape_48" ], - "name" : "Subtract_49", - "op" : "Subtract", - "outputs" : ["Subtract_49_0"] - }, - { - "inputs" : ["Select_31"], - "name" : "Convert_32", - "op" : "Convert", - "outputs" : ["Convert_32_0"], - "target_type" : "float" - }, - { - "axes" : [0], - "inputs" : ["Convert_32"], - "name" : "Broadcast_33", - "op" : "Broadcast", - "outputs" : ["Broadcast_33_0"], - "shape" : [100] - }, - { - "inputs" : [ "Add_9", "Broadcast_33" ], - "name" : "Divide_34", - "op" : "Divide", - "outputs" : ["Divide_34_0"] - }, - { - "input_order" : [0], - "inputs" : ["Divide_34"], - "name" : "Reshape_35", - "op" : "Reshape", - "output_shape" : [100], - "outputs" : ["Reshape_35_0"] - }, - { - "input_order" : [0], - "inputs" : ["Reshape_35"], - "name" : "Reshape_36", - "op" : "Reshape", - "output_shape" : [ 100, 1 ], - "outputs" : ["Reshape_36_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_36"], - "name" : "Reshape_50", - "op" : "Reshape", - "output_shape" : [100], - "outputs" : ["Reshape_50_0"] - }, - { - "axes" : [1], - "inputs" : ["Reshape_50"], - "name" : "Broadcast_51", - "op" : "Broadcast", - "outputs" : ["Broadcast_51_0"], - "shape" : [ 100, 10 ] - }, - { - "inputs" : [ "Broadcast_51", "Subtract_49" ], - "name" : "Multiply_52", - "op" : "Multiply", - "outputs" : ["Multiply_52_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_52"], - "name" : "Reshape_53", - "op" : "Reshape", - "output_shape" : [ 100, 10 ], - "outputs" : ["Reshape_53_0"] - }, - { - "inputs" : ["Reshape_53"], - "name" : "Sum_54", - "op" : "Sum", - "outputs" : ["Sum_54_0"], - "reduction_axes" : [0] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_53"], - "name" : "Reshape_57", - "op" : "Reshape", - "output_shape" : [ 100, 10 ], - "outputs" : ["Reshape_57_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_54"], - "name" : "Reshape_55", - "op" : "Reshape", - "output_shape" : [10], - "outputs" : ["Reshape_55_0"] - }, - { - "inputs" : [ "Reshape_56", "Reshape_57" ], - "name" : "Dot_58", - "op" : "Dot", - "outputs" : ["Dot_58_0"], - "reduction_axes_count" : 1 - } - ], - "parameters" : [ "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_3" ], - "result" : [ "Reshape_55", "Dot_58" ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_12[_XlaCompiledKernel=true,_XlaNumConstantArgs=3,_XlaNumResourceArgs=0].v23.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_12[_XlaCompiledKernel=true,_XlaNumConstantArgs=3,_XlaNumResourceArgs=0].v23.json deleted file mode 100644 index 8e1d009b9ff1b8..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_12[_XlaCompiledKernel=true,_XlaNumConstantArgs=3,_XlaNumResourceArgs=0].v23.json +++ /dev/null @@ -1,185 +0,0 @@ -[{ - "name" : "Function_19", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1379", - "op" : "Parameter", - "outputs" : ["Parameter_1379_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1378", - "op" : "Parameter", - "outputs" : ["Parameter_1378_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1377", - "op" : "Parameter", - "outputs" : ["Parameter_1377_0"], - "shape" : [ 3, 3, 16, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1376", - "op" : "Parameter", - "outputs" : ["Parameter_1376_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1381", - "op" : "Constant", - "outputs" : ["Constant_1381_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1379"], - "name" : "Reshape_1392", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1392_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1378"], - "name" : "Reshape_1384", - "op" : "Reshape", - "output_shape" : [ 50, 32, 32, 16 ], - "outputs" : ["Reshape_1384_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1378"], - "name" : "Reshape_1380", - "op" : "Reshape", - "output_shape" : [ 50, 32, 32, 16 ], - "outputs" : ["Reshape_1380_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_1377"], - "name" : "Reshape_1386", - "op" : "Reshape", - "output_shape" : [ 16, 16, 3, 3 ], - "outputs" : ["Reshape_1386_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1376"], - "name" : "Broadcast_1390", - "op" : "Broadcast", - "outputs" : ["Broadcast_1390_0"], - "shape" : [ 3, 3, 16, 16 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_1381"], - "name" : "Broadcast_1382", - "op" : "Broadcast", - "outputs" : ["Broadcast_1382_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Reshape_1384"], - "name" : "Reshape_1393", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1393_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_1384"], - "name" : "Reshape_1385", - "op" : "Reshape", - "output_shape" : [ 50, 16, 32, 32 ], - "outputs" : ["Reshape_1385_0"] - }, - { - "inputs" : [ "Parameter_1377", "Broadcast_1390" ], - "name" : "Multiply_1391", - "op" : "Multiply", - "outputs" : ["Multiply_1391_0"] - }, - { - "inputs" : [ "Parameter_1379", "Broadcast_1382" ], - "name" : "Greater_1383", - "op" : "Greater", - "outputs" : ["Greater_1383_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_1392", "Reshape_1393" ], - "name" : "Convolution_1394", - "op" : "Convolution", - "outputs" : ["Convolution_1394_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_batch_shape" : [ 50, 16, 32, 32 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_1386", "Reshape_1385" ], - "name" : "ConvolutionBackpropData_1387", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_1387_0"], - "padding_above_forward" : [ 1, 1 ], - "padding_below_forward" : [ 1, 1 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 1, 1 ] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_1394"], - "name" : "Reshape_1395", - "op" : "Reshape", - "output_shape" : [ 16, 3, 3, 16 ], - "outputs" : ["Reshape_1395_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_1387"], - "name" : "Reshape_1388", - "op" : "Reshape", - "output_shape" : [ 50, 32, 32, 16 ], - "outputs" : ["Reshape_1388_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_1395"], - "name" : "Reshape_1396", - "op" : "Reshape", - "output_shape" : [ 3, 3, 16, 16 ], - "outputs" : ["Reshape_1396_0"] - }, - { - "inputs" : [ "Greater_1383", "Reshape_1388", "Broadcast_1382" ], - "name" : "Select_1389", - "op" : "Select", - "outputs" : ["Select_1389_0"] - }, - { - "inputs" : [ "Multiply_1391", "Reshape_1396" ], - "name" : "Add_1397", - "op" : "Add", - "outputs" : ["Add_1397_0"] - } - ], - "parameters" : [ - "Parameter_1376", "Parameter_1377", "Parameter_1378", "Parameter_1379" - ], - "result" : [ "Reshape_1380", "Select_1389", "Add_1397" ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_16[_XlaCompiledKernel=true,_XlaNumConstantArgs=6,_XlaNumResourceArgs=0].v42.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_16[_XlaCompiledKernel=true,_XlaNumConstantArgs=6,_XlaNumResourceArgs=0].v42.json deleted file mode 100644 index 72856bc6b18919..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_16[_XlaCompiledKernel=true,_XlaNumConstantArgs=6,_XlaNumResourceArgs=0].v42.json +++ /dev/null @@ -1,311 +0,0 @@ -[{ - "name" : "Function_16", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1208", - "op" : "Parameter", - "outputs" : ["Parameter_1208_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1207", - "op" : "Parameter", - "outputs" : ["Parameter_1207_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1206", - "op" : "Parameter", - "outputs" : ["Parameter_1206_0"], - "shape" : [ 50, 34, 34, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1205", - "op" : "Parameter", - "outputs" : ["Parameter_1205_0"], - "shape" : [ 1, 1, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1204", - "op" : "Parameter", - "outputs" : ["Parameter_1204_0"], - "shape" : [ 1, 1, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1203", - "op" : "Parameter", - "outputs" : ["Parameter_1203_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1202", - "op" : "Parameter", - "outputs" : ["Parameter_1202_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1201", - "op" : "Parameter", - "outputs" : ["Parameter_1201_0"], - "shape" : [ 3, 3, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1200", - "op" : "Parameter", - "outputs" : ["Parameter_1200_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1209", - "op" : "Constant", - "outputs" : ["Constant_1209_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1207"], - "name" : "Reshape_1226", - "op" : "Reshape", - "output_shape" : [ 32, 50, 16, 16 ], - "outputs" : ["Reshape_1226_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Parameter_1207"], - "name" : "Reshape_1216", - "op" : "Reshape", - "output_shape" : [ 50, 32, 16, 16 ], - "outputs" : ["Reshape_1216_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1206"], - "name" : "Reshape_1225", - "op" : "Reshape", - "output_shape" : [ 16, 50, 34, 34 ], - "outputs" : ["Reshape_1225_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_1204"], - "name" : "Reshape_1213", - "op" : "Reshape", - "output_shape" : [ 32, 16, 1, 1 ], - "outputs" : ["Reshape_1213_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1203"], - "name" : "Reshape_1231", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1231_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1202"], - "name" : "Reshape_1232", - "op" : "Reshape", - "output_shape" : [ 32, 50, 16, 16 ], - "outputs" : ["Reshape_1232_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Parameter_1202"], - "name" : "Reshape_1212", - "op" : "Reshape", - "output_shape" : [ 50, 32, 16, 16 ], - "outputs" : ["Reshape_1212_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_1201"], - "name" : "Reshape_1217", - "op" : "Reshape", - "output_shape" : [ 32, 16, 3, 3 ], - "outputs" : ["Reshape_1217_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1200"], - "name" : "Broadcast_1223", - "op" : "Broadcast", - "outputs" : ["Broadcast_1223_0"], - "shape" : [ 3, 3, 16, 32 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_1209"], - "name" : "Broadcast_1210", - "op" : "Broadcast", - "outputs" : ["Broadcast_1210_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_1225", "Reshape_1226" ], - "name" : "Convolution_1227", - "op" : "Convolution", - "outputs" : ["Convolution_1227_0"], - "padding_above" : [ -1, -1 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 2, 2 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_1231", "Reshape_1232" ], - "name" : "Convolution_1233", - "op" : "Convolution", - "outputs" : ["Convolution_1233_0"], - "padding_above" : [ -1, -1 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 2, 2 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_batch_shape" : [ 50, 16, 32, 32 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_1213", "Reshape_1212" ], - "name" : "ConvolutionBackpropData_1214", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_1214_0"], - "padding_above_forward" : [ 0, 0 ], - "padding_below_forward" : [ 0, 0 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 2, 2 ] - }, - { - "data_batch_shape" : [ 50, 16, 34, 34 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_1217", "Reshape_1216" ], - "name" : "ConvolutionBackpropData_1218", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_1218_0"], - "padding_above_forward" : [ 0, 0 ], - "padding_below_forward" : [ 0, 0 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 2, 2 ] - }, - { - "inputs" : [ "Parameter_1201", "Broadcast_1223" ], - "name" : "Multiply_1224", - "op" : "Multiply", - "outputs" : ["Multiply_1224_0"] - }, - { - "inputs" : [ "Parameter_1208", "Broadcast_1210" ], - "name" : "Greater_1211", - "op" : "Greater", - "outputs" : ["Greater_1211_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_1227"], - "name" : "Reshape_1228", - "op" : "Reshape", - "output_shape" : [ 32, 3, 3, 16 ], - "outputs" : ["Reshape_1228_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_1233"], - "name" : "Reshape_1234", - "op" : "Reshape", - "output_shape" : [ 32, 1, 1, 16 ], - "outputs" : ["Reshape_1234_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_1214"], - "name" : "Reshape_1215", - "op" : "Reshape", - "output_shape" : [ 50, 32, 32, 16 ], - "outputs" : ["Reshape_1215_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_1218"], - "name" : "Reshape_1219", - "op" : "Reshape", - "output_shape" : [ 50, 34, 34, 16 ], - "outputs" : ["Reshape_1219_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_1228"], - "name" : "Reshape_1229", - "op" : "Reshape", - "output_shape" : [ 3, 3, 16, 32 ], - "outputs" : ["Reshape_1229_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_1234"], - "name" : "Reshape_1235", - "op" : "Reshape", - "output_shape" : [ 1, 1, 16, 32 ], - "outputs" : ["Reshape_1235_0"] - }, - { - "inputs" : ["Reshape_1219"], - "lower_bounds" : [ 0, 1, 1, 0 ], - "name" : "Slice_1220", - "op" : "Slice", - "outputs" : ["Slice_1220_0"], - "strides" : [ 1, 1, 1, 1 ], - "upper_bounds" : [ 50, 33, 33, 16 ] - }, - { - "inputs" : [ "Multiply_1224", "Reshape_1229" ], - "name" : "Add_1230", - "op" : "Add", - "outputs" : ["Add_1230_0"] - }, - { - "inputs" : [ "Parameter_1205", "Reshape_1235" ], - "name" : "Add_1236", - "op" : "Add", - "outputs" : ["Add_1236_0"] - }, - { - "inputs" : [ "Reshape_1215", "Slice_1220" ], - "name" : "Add_1221", - "op" : "Add", - "outputs" : ["Add_1221_0"] - }, - { - "inputs" : [ "Greater_1211", "Add_1221", "Broadcast_1210" ], - "name" : "Select_1222", - "op" : "Select", - "outputs" : ["Select_1222_0"] - } - ], - "parameters" : [ - "Parameter_1200", "Parameter_1201", "Parameter_1202", "Parameter_1203", - "Parameter_1204", "Parameter_1205", "Parameter_1206", "Parameter_1207", - "Parameter_1208" - ], - "result" : [ "Select_1222", "Add_1230", "Add_1236" ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_20[_XlaCompiledKernel=true,_XlaNumConstantArgs=3,_XlaNumResourceArgs=0].v23.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_20[_XlaCompiledKernel=true,_XlaNumConstantArgs=3,_XlaNumResourceArgs=0].v23.json deleted file mode 100644 index b2d9defb04a596..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_20[_XlaCompiledKernel=true,_XlaNumConstantArgs=3,_XlaNumResourceArgs=0].v23.json +++ /dev/null @@ -1,185 +0,0 @@ -[{ - "name" : "Function_13", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1044", - "op" : "Parameter", - "outputs" : ["Parameter_1044_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1043", - "op" : "Parameter", - "outputs" : ["Parameter_1043_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1042", - "op" : "Parameter", - "outputs" : ["Parameter_1042_0"], - "shape" : [ 3, 3, 32, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1041", - "op" : "Parameter", - "outputs" : ["Parameter_1041_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1046", - "op" : "Constant", - "outputs" : ["Constant_1046_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1044"], - "name" : "Reshape_1057", - "op" : "Reshape", - "output_shape" : [ 32, 50, 16, 16 ], - "outputs" : ["Reshape_1057_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1043"], - "name" : "Reshape_1045", - "op" : "Reshape", - "output_shape" : [ 50, 16, 16, 32 ], - "outputs" : ["Reshape_1045_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1043"], - "name" : "Reshape_1049", - "op" : "Reshape", - "output_shape" : [ 50, 16, 16, 32 ], - "outputs" : ["Reshape_1049_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_1042"], - "name" : "Reshape_1051", - "op" : "Reshape", - "output_shape" : [ 32, 32, 3, 3 ], - "outputs" : ["Reshape_1051_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1041"], - "name" : "Broadcast_1055", - "op" : "Broadcast", - "outputs" : ["Broadcast_1055_0"], - "shape" : [ 3, 3, 32, 32 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_1046"], - "name" : "Broadcast_1047", - "op" : "Broadcast", - "outputs" : ["Broadcast_1047_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_1049"], - "name" : "Reshape_1050", - "op" : "Reshape", - "output_shape" : [ 50, 32, 16, 16 ], - "outputs" : ["Reshape_1050_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Reshape_1049"], - "name" : "Reshape_1058", - "op" : "Reshape", - "output_shape" : [ 32, 50, 16, 16 ], - "outputs" : ["Reshape_1058_0"] - }, - { - "inputs" : [ "Parameter_1042", "Broadcast_1055" ], - "name" : "Multiply_1056", - "op" : "Multiply", - "outputs" : ["Multiply_1056_0"] - }, - { - "inputs" : [ "Parameter_1044", "Broadcast_1047" ], - "name" : "Greater_1048", - "op" : "Greater", - "outputs" : ["Greater_1048_0"] - }, - { - "data_batch_shape" : [ 50, 32, 16, 16 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_1051", "Reshape_1050" ], - "name" : "ConvolutionBackpropData_1052", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_1052_0"], - "padding_above_forward" : [ 1, 1 ], - "padding_below_forward" : [ 1, 1 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 1, 1 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_1057", "Reshape_1058" ], - "name" : "Convolution_1059", - "op" : "Convolution", - "outputs" : ["Convolution_1059_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_1052"], - "name" : "Reshape_1053", - "op" : "Reshape", - "output_shape" : [ 50, 16, 16, 32 ], - "outputs" : ["Reshape_1053_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_1059"], - "name" : "Reshape_1060", - "op" : "Reshape", - "output_shape" : [ 32, 3, 3, 32 ], - "outputs" : ["Reshape_1060_0"] - }, - { - "inputs" : [ "Greater_1048", "Reshape_1053", "Broadcast_1047" ], - "name" : "Select_1054", - "op" : "Select", - "outputs" : ["Select_1054_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_1060"], - "name" : "Reshape_1061", - "op" : "Reshape", - "output_shape" : [ 3, 3, 32, 32 ], - "outputs" : ["Reshape_1061_0"] - }, - { - "inputs" : [ "Multiply_1056", "Reshape_1061" ], - "name" : "Add_1062", - "op" : "Add", - "outputs" : ["Add_1062_0"] - } - ], - "parameters" : [ - "Parameter_1041", "Parameter_1042", "Parameter_1043", "Parameter_1044" - ], - "result" : [ "Reshape_1045", "Select_1054", "Add_1062" ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_22[_XlaCompiledKernel=true,_XlaNumConstantArgs=4,_XlaNumResourceArgs=0].v24.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_22[_XlaCompiledKernel=true,_XlaNumConstantArgs=4,_XlaNumResourceArgs=0].v24.json deleted file mode 100644 index 6d687fe8c49219..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_22[_XlaCompiledKernel=true,_XlaNumConstantArgs=4,_XlaNumResourceArgs=0].v24.json +++ /dev/null @@ -1,200 +0,0 @@ -[{ - "name" : "Function_9", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_763", - "op" : "Parameter", - "outputs" : ["Parameter_763_0"], - "shape" : [ 3, 3, 64, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_762", - "op" : "Parameter", - "outputs" : ["Parameter_762_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_761", - "op" : "Parameter", - "outputs" : ["Parameter_761_0"], - "shape" : [ 1, 1, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_760", - "op" : "Parameter", - "outputs" : ["Parameter_760_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_775", - "op" : "Constant", - "outputs" : ["Constant_775_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_763"], - "name" : "Reshape_779", - "op" : "Reshape", - "output_shape" : [ 64, 64, 3, 3 ], - "outputs" : ["Reshape_779_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_762"], - "name" : "Reshape_770", - "op" : "Reshape", - "output_shape" : [ 64, 50, 8, 8 ], - "outputs" : ["Reshape_770_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_761"], - "name" : "Reshape_766", - "op" : "Reshape", - "output_shape" : [ 64, 32, 1, 1 ], - "outputs" : ["Reshape_766_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_760"], - "name" : "Reshape_764", - "op" : "Reshape", - "output_shape" : [ 50, 8, 8, 64 ], - "outputs" : ["Reshape_764_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_760"], - "name" : "Reshape_769", - "op" : "Reshape", - "output_shape" : [ 50, 8, 8, 64 ], - "outputs" : ["Reshape_769_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_775"], - "name" : "Broadcast_776", - "op" : "Broadcast", - "outputs" : ["Broadcast_776_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_764"], - "name" : "Reshape_765", - "op" : "Reshape", - "output_shape" : [ 50, 64, 8, 8 ], - "outputs" : ["Reshape_765_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Reshape_769"], - "name" : "Reshape_771", - "op" : "Reshape", - "output_shape" : [ 64, 50, 8, 8 ], - "outputs" : ["Reshape_771_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_769"], - "name" : "Reshape_778", - "op" : "Reshape", - "output_shape" : [ 50, 64, 8, 8 ], - "outputs" : ["Reshape_778_0"] - }, - { - "inputs" : [ "Parameter_762", "Broadcast_776" ], - "name" : "Greater_777", - "op" : "Greater", - "outputs" : ["Greater_777_0"] - }, - { - "data_batch_shape" : [ 50, 32, 16, 16 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_766", "Reshape_765" ], - "name" : "ConvolutionBackpropData_767", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_767_0"], - "padding_above_forward" : [ 0, 0 ], - "padding_below_forward" : [ 0, 0 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 2, 2 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_770", "Reshape_771" ], - "name" : "Convolution_772", - "op" : "Convolution", - "outputs" : ["Convolution_772_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_batch_shape" : [ 50, 64, 8, 8 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_779", "Reshape_778" ], - "name" : "ConvolutionBackpropData_780", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_780_0"], - "padding_above_forward" : [ 1, 1 ], - "padding_below_forward" : [ 1, 1 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_767"], - "name" : "Reshape_768", - "op" : "Reshape", - "output_shape" : [ 50, 16, 16, 32 ], - "outputs" : ["Reshape_768_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_772"], - "name" : "Reshape_773", - "op" : "Reshape", - "output_shape" : [ 64, 3, 3, 64 ], - "outputs" : ["Reshape_773_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_780"], - "name" : "Reshape_781", - "op" : "Reshape", - "output_shape" : [ 50, 8, 8, 64 ], - "outputs" : ["Reshape_781_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_773"], - "name" : "Reshape_774", - "op" : "Reshape", - "output_shape" : [ 3, 3, 64, 64 ], - "outputs" : ["Reshape_774_0"] - }, - { - "inputs" : [ "Greater_777", "Reshape_781", "Broadcast_776" ], - "name" : "Select_782", - "op" : "Select", - "outputs" : ["Select_782_0"] - } - ], - "parameters" : - [ "Parameter_760", "Parameter_761", "Parameter_762", "Parameter_763" ], - "result" : [ "Reshape_764", "Reshape_768", "Reshape_774", "Select_782" ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_23[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v296.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_23[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v296.json deleted file mode 100644 index 0d3f98ebeb7c67..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_23[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v296.json +++ /dev/null @@ -1,1707 +0,0 @@ -[{ - "name" : "Function_8", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_507", - "op" : "Parameter", - "outputs" : ["Parameter_507_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_506", - "op" : "Parameter", - "outputs" : ["Parameter_506_0"], - "shape" : [ 50, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_505", - "op" : "Parameter", - "outputs" : ["Parameter_505_0"], - "shape" : [ 3, 3, 3, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_504", - "op" : "Parameter", - "outputs" : ["Parameter_504_0"], - "shape" : [16] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_503", - "op" : "Parameter", - "outputs" : ["Parameter_503_0"], - "shape" : [16] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_502", - "op" : "Parameter", - "outputs" : ["Parameter_502_0"], - "shape" : [ 1, 1, 16, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_501", - "op" : "Parameter", - "outputs" : ["Parameter_501_0"], - "shape" : [ 3, 3, 16, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_500", - "op" : "Parameter", - "outputs" : ["Parameter_500_0"], - "shape" : [16] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_499", - "op" : "Parameter", - "outputs" : ["Parameter_499_0"], - "shape" : [16] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_498", - "op" : "Parameter", - "outputs" : ["Parameter_498_0"], - "shape" : [ 3, 3, 16, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_497", - "op" : "Parameter", - "outputs" : ["Parameter_497_0"], - "shape" : [16] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_496", - "op" : "Parameter", - "outputs" : ["Parameter_496_0"], - "shape" : [16] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_495", - "op" : "Parameter", - "outputs" : ["Parameter_495_0"], - "shape" : [ 1, 1, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_494", - "op" : "Parameter", - "outputs" : ["Parameter_494_0"], - "shape" : [ 3, 3, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_493", - "op" : "Parameter", - "outputs" : ["Parameter_493_0"], - "shape" : [32] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_492", - "op" : "Parameter", - "outputs" : ["Parameter_492_0"], - "shape" : [32] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_491", - "op" : "Parameter", - "outputs" : ["Parameter_491_0"], - "shape" : [ 3, 3, 32, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_490", - "op" : "Parameter", - "outputs" : ["Parameter_490_0"], - "shape" : [32] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_489", - "op" : "Parameter", - "outputs" : ["Parameter_489_0"], - "shape" : [32] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_488", - "op" : "Parameter", - "outputs" : ["Parameter_488_0"], - "shape" : [ 1, 1, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_487", - "op" : "Parameter", - "outputs" : ["Parameter_487_0"], - "shape" : [ 3, 3, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_486", - "op" : "Parameter", - "outputs" : ["Parameter_486_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_485", - "op" : "Parameter", - "outputs" : ["Parameter_485_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_484", - "op" : "Parameter", - "outputs" : ["Parameter_484_0"], - "shape" : [ 3, 3, 64, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_483", - "op" : "Parameter", - "outputs" : ["Parameter_483_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_482", - "op" : "Parameter", - "outputs" : ["Parameter_482_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_481", - "op" : "Parameter", - "outputs" : ["Parameter_481_0"], - "shape" : [ 64, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_480", - "op" : "Parameter", - "outputs" : ["Parameter_480_0"], - "shape" : [10] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_514", - "op" : "Constant", - "outputs" : ["Constant_514_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_509", - "op" : "Constant", - "outputs" : ["Constant_509_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_508", - "op" : "Constant", - "outputs" : ["Constant_508_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_540", - "op" : "Constant", - "outputs" : ["Constant_540_0"], - "shape" : [], - "value" : ["1"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_518", - "op" : "Constant", - "outputs" : ["Constant_518_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_711", - "op" : "Constant", - "outputs" : ["Constant_711_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_706", - "op" : "Constant", - "outputs" : ["Constant_706_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_701", - "op" : "Constant", - "outputs" : ["Constant_701_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_696", - "op" : "Constant", - "outputs" : ["Constant_696_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_691", - "op" : "Constant", - "outputs" : ["Constant_691_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_686", - "op" : "Constant", - "outputs" : ["Constant_686_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_681", - "op" : "Constant", - "outputs" : ["Constant_681_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_676", - "op" : "Constant", - "outputs" : ["Constant_676_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_671", - "op" : "Constant", - "outputs" : ["Constant_671_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_666", - "op" : "Constant", - "outputs" : ["Constant_666_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_661", - "op" : "Constant", - "outputs" : ["Constant_661_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_656", - "op" : "Constant", - "outputs" : ["Constant_656_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_651", - "op" : "Constant", - "outputs" : ["Constant_651_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_646", - "op" : "Constant", - "outputs" : ["Constant_646_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_641", - "op" : "Constant", - "outputs" : ["Constant_641_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_636", - "op" : "Constant", - "outputs" : ["Constant_636_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_631", - "op" : "Constant", - "outputs" : ["Constant_631_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_626", - "op" : "Constant", - "outputs" : ["Constant_626_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_621", - "op" : "Constant", - "outputs" : ["Constant_621_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_616", - "op" : "Constant", - "outputs" : ["Constant_616_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_611", - "op" : "Constant", - "outputs" : ["Constant_611_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_606", - "op" : "Constant", - "outputs" : ["Constant_606_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_601", - "op" : "Constant", - "outputs" : ["Constant_601_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_596", - "op" : "Constant", - "outputs" : ["Constant_596_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_591", - "op" : "Constant", - "outputs" : ["Constant_591_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_587", - "op" : "Constant", - "outputs" : ["Constant_587_0"], - "shape" : [], - "value" : ["2"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_584", - "op" : "Constant", - "outputs" : ["Constant_584_0"], - "shape" : [], - "value" : ["0.0002"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_574", - "op" : "Constant", - "outputs" : ["Constant_574_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_550", - "op" : "Constant", - "outputs" : ["Constant_550_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_548", - "op" : "Constant", - "outputs" : ["Constant_548_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Parameter_506"], - "name" : "Reshape_516", - "op" : "Reshape", - "output_shape" : [ 50, 10 ], - "outputs" : ["Reshape_516_0"] - }, - { - "inputs" : [ "Parameter_505", "Parameter_505" ], - "name" : "Multiply_585", - "op" : "Multiply", - "outputs" : ["Multiply_585_0"] - }, - { - "inputs" : [ "Parameter_504", "Parameter_504" ], - "name" : "Multiply_589", - "op" : "Multiply", - "outputs" : ["Multiply_589_0"] - }, - { - "inputs" : [ "Parameter_503", "Parameter_503" ], - "name" : "Multiply_594", - "op" : "Multiply", - "outputs" : ["Multiply_594_0"] - }, - { - "inputs" : [ "Parameter_502", "Parameter_502" ], - "name" : "Multiply_599", - "op" : "Multiply", - "outputs" : ["Multiply_599_0"] - }, - { - "inputs" : [ "Parameter_501", "Parameter_501" ], - "name" : "Multiply_604", - "op" : "Multiply", - "outputs" : ["Multiply_604_0"] - }, - { - "inputs" : [ "Parameter_500", "Parameter_500" ], - "name" : "Multiply_609", - "op" : "Multiply", - "outputs" : ["Multiply_609_0"] - }, - { - "inputs" : [ "Parameter_499", "Parameter_499" ], - "name" : "Multiply_614", - "op" : "Multiply", - "outputs" : ["Multiply_614_0"] - }, - { - "inputs" : [ "Parameter_498", "Parameter_498" ], - "name" : "Multiply_619", - "op" : "Multiply", - "outputs" : ["Multiply_619_0"] - }, - { - "inputs" : [ "Parameter_497", "Parameter_497" ], - "name" : "Multiply_624", - "op" : "Multiply", - "outputs" : ["Multiply_624_0"] - }, - { - "inputs" : [ "Parameter_496", "Parameter_496" ], - "name" : "Multiply_629", - "op" : "Multiply", - "outputs" : ["Multiply_629_0"] - }, - { - "inputs" : [ "Parameter_495", "Parameter_495" ], - "name" : "Multiply_634", - "op" : "Multiply", - "outputs" : ["Multiply_634_0"] - }, - { - "inputs" : [ "Parameter_494", "Parameter_494" ], - "name" : "Multiply_639", - "op" : "Multiply", - "outputs" : ["Multiply_639_0"] - }, - { - "inputs" : [ "Parameter_493", "Parameter_493" ], - "name" : "Multiply_644", - "op" : "Multiply", - "outputs" : ["Multiply_644_0"] - }, - { - "inputs" : [ "Parameter_492", "Parameter_492" ], - "name" : "Multiply_649", - "op" : "Multiply", - "outputs" : ["Multiply_649_0"] - }, - { - "inputs" : [ "Parameter_491", "Parameter_491" ], - "name" : "Multiply_654", - "op" : "Multiply", - "outputs" : ["Multiply_654_0"] - }, - { - "inputs" : [ "Parameter_490", "Parameter_490" ], - "name" : "Multiply_659", - "op" : "Multiply", - "outputs" : ["Multiply_659_0"] - }, - { - "inputs" : [ "Parameter_489", "Parameter_489" ], - "name" : "Multiply_664", - "op" : "Multiply", - "outputs" : ["Multiply_664_0"] - }, - { - "inputs" : [ "Parameter_488", "Parameter_488" ], - "name" : "Multiply_669", - "op" : "Multiply", - "outputs" : ["Multiply_669_0"] - }, - { - "inputs" : [ "Parameter_487", "Parameter_487" ], - "name" : "Multiply_674", - "op" : "Multiply", - "outputs" : ["Multiply_674_0"] - }, - { - "inputs" : [ "Parameter_486", "Parameter_486" ], - "name" : "Multiply_679", - "op" : "Multiply", - "outputs" : ["Multiply_679_0"] - }, - { - "inputs" : [ "Parameter_485", "Parameter_485" ], - "name" : "Multiply_684", - "op" : "Multiply", - "outputs" : ["Multiply_684_0"] - }, - { - "inputs" : [ "Parameter_484", "Parameter_484" ], - "name" : "Multiply_689", - "op" : "Multiply", - "outputs" : ["Multiply_689_0"] - }, - { - "inputs" : [ "Parameter_483", "Parameter_483" ], - "name" : "Multiply_694", - "op" : "Multiply", - "outputs" : ["Multiply_694_0"] - }, - { - "inputs" : [ "Parameter_482", "Parameter_482" ], - "name" : "Multiply_699", - "op" : "Multiply", - "outputs" : ["Multiply_699_0"] - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Parameter_481"], - "name" : "Reshape_577", - "op" : "Reshape", - "output_shape" : [ 10, 64 ], - "outputs" : ["Reshape_577_0"] - }, - { - "inputs" : [ "Parameter_481", "Parameter_481" ], - "name" : "Multiply_704", - "op" : "Multiply", - "outputs" : ["Multiply_704_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_480"], - "name" : "Broadcast_526", - "op" : "Broadcast", - "outputs" : ["Broadcast_526_0"], - "shape" : [ 50, 10 ] - }, - { - "inputs" : [ "Parameter_480", "Parameter_480" ], - "name" : "Multiply_709", - "op" : "Multiply", - "outputs" : ["Multiply_709_0"] - }, - { - "axes" : [0], - "inputs" : ["Constant_509"], - "name" : "Broadcast_510", - "op" : "Broadcast", - "outputs" : ["Broadcast_510_0"], - "shape" : [50] - }, - { - "axes" : [0], - "inputs" : ["Constant_508"], - "name" : "Broadcast_511", - "op" : "Broadcast", - "outputs" : ["Broadcast_511_0"], - "shape" : [50] - }, - { - "axes" : [0], - "inputs" : ["Constant_540"], - "name" : "Broadcast_541", - "op" : "Broadcast", - "outputs" : ["Broadcast_541_0"], - "shape" : [50] - }, - { - "axes" : [0], - "inputs" : ["Constant_540"], - "name" : "Broadcast_559", - "op" : "Broadcast", - "outputs" : ["Broadcast_559_0"], - "shape" : [50] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_518"], - "name" : "Broadcast_519", - "op" : "Broadcast", - "outputs" : ["Broadcast_519_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_574"], - "name" : "Broadcast_575", - "op" : "Broadcast", - "outputs" : ["Broadcast_575_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "axes" : [0], - "inputs" : ["Constant_548"], - "name" : "Broadcast_549", - "op" : "Broadcast", - "outputs" : ["Broadcast_549_0"], - "shape" : [50] - }, - { - "inputs" : ["Reshape_516"], - "name" : "Negative_517", - "op" : "Negative", - "outputs" : ["Negative_517_0"] - }, - { - "inputs" : ["Multiply_585"], - "name" : "Sum_586", - "op" : "Sum", - "outputs" : ["Sum_586_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_589"], - "name" : "Sum_590", - "op" : "Sum", - "outputs" : ["Sum_590_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_594"], - "name" : "Sum_595", - "op" : "Sum", - "outputs" : ["Sum_595_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_599"], - "name" : "Sum_600", - "op" : "Sum", - "outputs" : ["Sum_600_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_604"], - "name" : "Sum_605", - "op" : "Sum", - "outputs" : ["Sum_605_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_609"], - "name" : "Sum_610", - "op" : "Sum", - "outputs" : ["Sum_610_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_614"], - "name" : "Sum_615", - "op" : "Sum", - "outputs" : ["Sum_615_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_619"], - "name" : "Sum_620", - "op" : "Sum", - "outputs" : ["Sum_620_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_624"], - "name" : "Sum_625", - "op" : "Sum", - "outputs" : ["Sum_625_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_629"], - "name" : "Sum_630", - "op" : "Sum", - "outputs" : ["Sum_630_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_634"], - "name" : "Sum_635", - "op" : "Sum", - "outputs" : ["Sum_635_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_639"], - "name" : "Sum_640", - "op" : "Sum", - "outputs" : ["Sum_640_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_644"], - "name" : "Sum_645", - "op" : "Sum", - "outputs" : ["Sum_645_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_649"], - "name" : "Sum_650", - "op" : "Sum", - "outputs" : ["Sum_650_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_654"], - "name" : "Sum_655", - "op" : "Sum", - "outputs" : ["Sum_655_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_659"], - "name" : "Sum_660", - "op" : "Sum", - "outputs" : ["Sum_660_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_664"], - "name" : "Sum_665", - "op" : "Sum", - "outputs" : ["Sum_665_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_669"], - "name" : "Sum_670", - "op" : "Sum", - "outputs" : ["Sum_670_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_674"], - "name" : "Sum_675", - "op" : "Sum", - "outputs" : ["Sum_675_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_679"], - "name" : "Sum_680", - "op" : "Sum", - "outputs" : ["Sum_680_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_684"], - "name" : "Sum_685", - "op" : "Sum", - "outputs" : ["Sum_685_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_689"], - "name" : "Sum_690", - "op" : "Sum", - "outputs" : ["Sum_690_0"], - "reduction_axes" : [ 0, 1, 2, 3 ] - }, - { - "inputs" : ["Multiply_694"], - "name" : "Sum_695", - "op" : "Sum", - "outputs" : ["Sum_695_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_699"], - "name" : "Sum_700", - "op" : "Sum", - "outputs" : ["Sum_700_0"], - "reduction_axes" : [0] - }, - { - "inputs" : ["Multiply_704"], - "name" : "Sum_705", - "op" : "Sum", - "outputs" : ["Sum_705_0"], - "reduction_axes" : [ 0, 1 ] - }, - { - "inputs" : ["Multiply_709"], - "name" : "Sum_710", - "op" : "Sum", - "outputs" : ["Sum_710_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Broadcast_511", "Broadcast_510" ], - "name" : "Multiply_512", - "op" : "Multiply", - "outputs" : ["Multiply_512_0"] - }, - { - "inputs" : [ "Broadcast_519", "Parameter_507" ], - "name" : "Maximum_520", - "op" : "Maximum", - "outputs" : ["Maximum_520_0"] - }, - { - "inputs" : [ "Sum_586", "Constant_587" ], - "name" : "Divide_588", - "op" : "Divide", - "outputs" : ["Divide_588_0"] - }, - { - "inputs" : [ "Sum_590", "Constant_591" ], - "name" : "Divide_592", - "op" : "Divide", - "outputs" : ["Divide_592_0"] - }, - { - "inputs" : [ "Sum_595", "Constant_596" ], - "name" : "Divide_597", - "op" : "Divide", - "outputs" : ["Divide_597_0"] - }, - { - "inputs" : [ "Sum_600", "Constant_601" ], - "name" : "Divide_602", - "op" : "Divide", - "outputs" : ["Divide_602_0"] - }, - { - "inputs" : [ "Sum_605", "Constant_606" ], - "name" : "Divide_607", - "op" : "Divide", - "outputs" : ["Divide_607_0"] - }, - { - "inputs" : [ "Sum_610", "Constant_611" ], - "name" : "Divide_612", - "op" : "Divide", - "outputs" : ["Divide_612_0"] - }, - { - "inputs" : [ "Sum_615", "Constant_616" ], - "name" : "Divide_617", - "op" : "Divide", - "outputs" : ["Divide_617_0"] - }, - { - "inputs" : [ "Sum_620", "Constant_621" ], - "name" : "Divide_622", - "op" : "Divide", - "outputs" : ["Divide_622_0"] - }, - { - "inputs" : [ "Sum_625", "Constant_626" ], - "name" : "Divide_627", - "op" : "Divide", - "outputs" : ["Divide_627_0"] - }, - { - "inputs" : [ "Sum_630", "Constant_631" ], - "name" : "Divide_632", - "op" : "Divide", - "outputs" : ["Divide_632_0"] - }, - { - "inputs" : [ "Sum_635", "Constant_636" ], - "name" : "Divide_637", - "op" : "Divide", - "outputs" : ["Divide_637_0"] - }, - { - "inputs" : [ "Sum_640", "Constant_641" ], - "name" : "Divide_642", - "op" : "Divide", - "outputs" : ["Divide_642_0"] - }, - { - "inputs" : [ "Sum_645", "Constant_646" ], - "name" : "Divide_647", - "op" : "Divide", - "outputs" : ["Divide_647_0"] - }, - { - "inputs" : [ "Sum_650", "Constant_651" ], - "name" : "Divide_652", - "op" : "Divide", - "outputs" : ["Divide_652_0"] - }, - { - "inputs" : [ "Sum_655", "Constant_656" ], - "name" : "Divide_657", - "op" : "Divide", - "outputs" : ["Divide_657_0"] - }, - { - "inputs" : [ "Sum_660", "Constant_661" ], - "name" : "Divide_662", - "op" : "Divide", - "outputs" : ["Divide_662_0"] - }, - { - "inputs" : [ "Sum_665", "Constant_666" ], - "name" : "Divide_667", - "op" : "Divide", - "outputs" : ["Divide_667_0"] - }, - { - "inputs" : [ "Sum_670", "Constant_671" ], - "name" : "Divide_672", - "op" : "Divide", - "outputs" : ["Divide_672_0"] - }, - { - "inputs" : [ "Sum_675", "Constant_676" ], - "name" : "Divide_677", - "op" : "Divide", - "outputs" : ["Divide_677_0"] - }, - { - "inputs" : [ "Sum_680", "Constant_681" ], - "name" : "Divide_682", - "op" : "Divide", - "outputs" : ["Divide_682_0"] - }, - { - "inputs" : [ "Sum_685", "Constant_686" ], - "name" : "Divide_687", - "op" : "Divide", - "outputs" : ["Divide_687_0"] - }, - { - "inputs" : [ "Sum_690", "Constant_691" ], - "name" : "Divide_692", - "op" : "Divide", - "outputs" : ["Divide_692_0"] - }, - { - "inputs" : [ "Sum_695", "Constant_696" ], - "name" : "Divide_697", - "op" : "Divide", - "outputs" : ["Divide_697_0"] - }, - { - "inputs" : [ "Sum_700", "Constant_701" ], - "name" : "Divide_702", - "op" : "Divide", - "outputs" : ["Divide_702_0"] - }, - { - "inputs" : [ "Sum_705", "Constant_706" ], - "name" : "Divide_707", - "op" : "Divide", - "outputs" : ["Divide_707_0"] - }, - { - "inputs" : [ "Sum_710", "Constant_711" ], - "name" : "Divide_712", - "op" : "Divide", - "outputs" : ["Divide_712_0"] - }, - { - "inputs" : ["Multiply_512"], - "name" : "Sum_513", - "op" : "Sum", - "outputs" : ["Sum_513_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Maximum_520", "Broadcast_575" ], - "name" : "Greater_576", - "op" : "Greater", - "outputs" : ["Greater_576_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_520"], - "name" : "Reshape_521", - "op" : "Reshape", - "output_shape" : [ 50, 64, 8, 8 ], - "outputs" : ["Reshape_521_0"] - }, - { - "inputs" : [ "Divide_588", "Divide_592" ], - "name" : "Add_593", - "op" : "Add", - "outputs" : ["Add_593_0"] - }, - { - "inputs" : [ "Sum_513", "Constant_514" ], - "name" : "Equal_544", - "op" : "Equal", - "outputs" : ["Equal_544_0"] - }, - { - "inputs" : [ "Sum_513", "Constant_514" ], - "name" : "Greater_515", - "op" : "Greater", - "outputs" : ["Greater_515_0"] - }, - { - "include_padding_in_avg_computation" : false, - "inputs" : ["Reshape_521"], - "name" : "AvgPool_522", - "op" : "AvgPool", - "outputs" : ["AvgPool_522_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 1, 1 ], - "window_shape" : [ 8, 8 ] - }, - { - "inputs" : [ "Add_593", "Divide_597" ], - "name" : "Add_598", - "op" : "Add", - "outputs" : ["Add_598_0"] - }, - { - "inputs" : [ "Equal_544", "Constant_508", "Sum_513" ], - "name" : "Select_545", - "op" : "Select", - "outputs" : ["Select_545_0"] - }, - { - "inputs" : [ "Greater_515", "Constant_508", "Constant_550" ], - "name" : "Select_551", - "op" : "Select", - "outputs" : ["Select_551_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["AvgPool_522"], - "name" : "Reshape_523", - "op" : "Reshape", - "output_shape" : [ 50, 1, 1, 64 ], - "outputs" : ["Reshape_523_0"] - }, - { - "inputs" : [ "Add_598", "Divide_602" ], - "name" : "Add_603", - "op" : "Add", - "outputs" : ["Add_603_0"] - }, - { - "inputs" : [ "Select_551", "Select_545" ], - "name" : "Divide_552", - "op" : "Divide", - "outputs" : ["Divide_552_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_523"], - "name" : "Reshape_524", - "op" : "Reshape", - "output_shape" : [ 50, 64 ], - "outputs" : ["Reshape_524_0"] - }, - { - "inputs" : [ "Add_603", "Divide_607" ], - "name" : "Add_608", - "op" : "Add", - "outputs" : ["Add_608_0"] - }, - { - "input_order" : [], - "inputs" : ["Divide_552"], - "name" : "Reshape_553", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_553_0"] - }, - { - "inputs" : [ "Reshape_524", "Parameter_481" ], - "name" : "Dot_525", - "op" : "Dot", - "outputs" : ["Dot_525_0"], - "reduction_axes_count" : 1 - }, - { - "input_order" : [ 1, 0 ], - "inputs" : ["Reshape_524"], - "name" : "Reshape_572", - "op" : "Reshape", - "output_shape" : [ 64, 50 ], - "outputs" : ["Reshape_572_0"] - }, - { - "inputs" : [ "Add_608", "Divide_612" ], - "name" : "Add_613", - "op" : "Add", - "outputs" : ["Add_613_0"] - }, - { - "input_order" : [], - "inputs" : ["Reshape_553"], - "name" : "Reshape_554", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_554_0"] - }, - { - "inputs" : [ "Dot_525", "Broadcast_526" ], - "name" : "Add_527", - "op" : "Add", - "outputs" : ["Add_527_0"] - }, - { - "inputs" : [ "Add_613", "Divide_617" ], - "name" : "Add_618", - "op" : "Add", - "outputs" : ["Add_618_0"] - }, - { - "input_order" : [], - "inputs" : ["Reshape_554"], - "name" : "Reshape_555", - "op" : "Reshape", - "output_shape" : [1], - "outputs" : ["Reshape_555_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Add_527"], - "name" : "Reshape_528", - "op" : "Reshape", - "output_shape" : [ 50, 10 ], - "outputs" : ["Reshape_528_0"] - }, - { - "inputs" : [ "Add_618", "Divide_622" ], - "name" : "Add_623", - "op" : "Add", - "outputs" : ["Add_623_0"] - }, - { - "input_order" : [0], - "inputs" : ["Reshape_555"], - "name" : "Reshape_556", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_556_0"] - }, - { - "inputs" : ["Reshape_528"], - "name" : "Max_529", - "op" : "Max", - "outputs" : ["Max_529_0"], - "reduction_axes" : [1] - }, - { - "inputs" : [ "Add_623", "Divide_627" ], - "name" : "Add_628", - "op" : "Add", - "outputs" : ["Add_628_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_556"], - "name" : "Broadcast_557", - "op" : "Broadcast", - "outputs" : ["Broadcast_557_0"], - "shape" : [50] - }, - { - "axes" : [1], - "inputs" : ["Max_529"], - "name" : "Broadcast_530", - "op" : "Broadcast", - "outputs" : ["Broadcast_530_0"], - "shape" : [ 50, 10 ] - }, - { - "inputs" : [ "Add_628", "Divide_632" ], - "name" : "Add_633", - "op" : "Add", - "outputs" : ["Add_633_0"] - }, - { - "inputs" : [ "Broadcast_549", "Broadcast_557" ], - "name" : "Add_558", - "op" : "Add", - "outputs" : ["Add_558_0"] - }, - { - "inputs" : [ "Reshape_528", "Broadcast_530" ], - "name" : "Subtract_531", - "op" : "Subtract", - "outputs" : ["Subtract_531_0"] - }, - { - "inputs" : [ "Add_633", "Divide_637" ], - "name" : "Add_638", - "op" : "Add", - "outputs" : ["Add_638_0"] - }, - { - "inputs" : [ "Add_558", "Broadcast_559" ], - "name" : "Multiply_560", - "op" : "Multiply", - "outputs" : ["Multiply_560_0"] - }, - { - "inputs" : ["Subtract_531"], - "name" : "Exp_532", - "op" : "Exp", - "outputs" : ["Exp_532_0"] - }, - { - "inputs" : [ "Add_638", "Divide_642" ], - "name" : "Add_643", - "op" : "Add", - "outputs" : ["Add_643_0"] - }, - { - "input_order" : [0], - "inputs" : ["Multiply_560"], - "name" : "Reshape_561", - "op" : "Reshape", - "output_shape" : [50], - "outputs" : ["Reshape_561_0"] - }, - { - "inputs" : ["Exp_532"], - "name" : "Sum_533", - "op" : "Sum", - "outputs" : ["Sum_533_0"], - "reduction_axes" : [1] - }, - { - "inputs" : [ "Add_643", "Divide_647" ], - "name" : "Add_648", - "op" : "Add", - "outputs" : ["Add_648_0"] - }, - { - "input_order" : [0], - "inputs" : ["Reshape_561"], - "name" : "Reshape_562", - "op" : "Reshape", - "output_shape" : [50], - "outputs" : ["Reshape_562_0"] - }, - { - "axes" : [1], - "inputs" : ["Sum_533"], - "name" : "Broadcast_564", - "op" : "Broadcast", - "outputs" : ["Broadcast_564_0"], - "shape" : [ 50, 10 ] - }, - { - "inputs" : ["Sum_533"], - "name" : "Log_534", - "op" : "Log", - "outputs" : ["Log_534_0"] - }, - { - "inputs" : [ "Add_648", "Divide_652" ], - "name" : "Add_653", - "op" : "Add", - "outputs" : ["Add_653_0"] - }, - { - "input_order" : [0], - "inputs" : ["Reshape_562"], - "name" : "Reshape_563", - "op" : "Reshape", - "output_shape" : [ 50, 1 ], - "outputs" : ["Reshape_563_0"] - }, - { - "inputs" : [ "Exp_532", "Broadcast_564" ], - "name" : "Divide_565", - "op" : "Divide", - "outputs" : ["Divide_565_0"] - }, - { - "axes" : [1], - "inputs" : ["Log_534"], - "name" : "Broadcast_535", - "op" : "Broadcast", - "outputs" : ["Broadcast_535_0"], - "shape" : [ 50, 10 ] - }, - { - "inputs" : [ "Add_653", "Divide_657" ], - "name" : "Add_658", - "op" : "Add", - "outputs" : ["Add_658_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Reshape_563"], - "name" : "Reshape_567", - "op" : "Reshape", - "output_shape" : [50], - "outputs" : ["Reshape_567_0"] - }, - { - "inputs" : [ "Divide_565", "Reshape_516" ], - "name" : "Subtract_566", - "op" : "Subtract", - "outputs" : ["Subtract_566_0"] - }, - { - "inputs" : [ "Subtract_531", "Broadcast_535" ], - "name" : "Subtract_536", - "op" : "Subtract", - "outputs" : ["Subtract_536_0"] - }, - { - "inputs" : [ "Add_658", "Divide_662" ], - "name" : "Add_663", - "op" : "Add", - "outputs" : ["Add_663_0"] - }, - { - "axes" : [1], - "inputs" : ["Reshape_567"], - "name" : "Broadcast_568", - "op" : "Broadcast", - "outputs" : ["Broadcast_568_0"], - "shape" : [ 50, 10 ] - }, - { - "inputs" : [ "Negative_517", "Subtract_536" ], - "name" : "Multiply_537", - "op" : "Multiply", - "outputs" : ["Multiply_537_0"] - }, - { - "inputs" : [ "Add_663", "Divide_667" ], - "name" : "Add_668", - "op" : "Add", - "outputs" : ["Add_668_0"] - }, - { - "inputs" : [ "Broadcast_568", "Subtract_566" ], - "name" : "Multiply_569", - "op" : "Multiply", - "outputs" : ["Multiply_569_0"] - }, - { - "inputs" : ["Multiply_537"], - "name" : "Sum_538", - "op" : "Sum", - "outputs" : ["Sum_538_0"], - "reduction_axes" : [1] - }, - { - "inputs" : [ "Add_668", "Divide_672" ], - "name" : "Add_673", - "op" : "Add", - "outputs" : ["Add_673_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Multiply_569"], - "name" : "Reshape_570", - "op" : "Reshape", - "output_shape" : [ 50, 10 ], - "outputs" : ["Reshape_570_0"] - }, - { - "input_order" : [0], - "inputs" : ["Sum_538"], - "name" : "Reshape_539", - "op" : "Reshape", - "output_shape" : [50], - "outputs" : ["Reshape_539_0"] - }, - { - "inputs" : [ "Add_673", "Divide_677" ], - "name" : "Add_678", - "op" : "Add", - "outputs" : ["Add_678_0"] - }, - { - "inputs" : [ "Reshape_570", "Reshape_577" ], - "name" : "Dot_578", - "op" : "Dot", - "outputs" : ["Dot_578_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Reshape_572", "Reshape_570" ], - "name" : "Dot_573", - "op" : "Dot", - "outputs" : ["Dot_573_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : ["Reshape_570"], - "name" : "Sum_571", - "op" : "Sum", - "outputs" : ["Sum_571_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Reshape_539", "Broadcast_541" ], - "name" : "Multiply_542", - "op" : "Multiply", - "outputs" : ["Multiply_542_0"] - }, - { - "inputs" : [ "Add_678", "Divide_682" ], - "name" : "Add_683", - "op" : "Add", - "outputs" : ["Add_683_0"] - }, - { - "input_order" : [ 0, 1 ], - "inputs" : ["Dot_578"], - "name" : "Reshape_579", - "op" : "Reshape", - "output_shape" : [ 50, 1, 1, 64 ], - "outputs" : ["Reshape_579_0"] - }, - { - "inputs" : ["Multiply_542"], - "name" : "Sum_543", - "op" : "Sum", - "outputs" : ["Sum_543_0"], - "reduction_axes" : [0] - }, - { - "inputs" : [ "Add_683", "Divide_687" ], - "name" : "Add_688", - "op" : "Add", - "outputs" : ["Add_688_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_579"], - "name" : "Reshape_580", - "op" : "Reshape", - "output_shape" : [ 50, 64, 1, 1 ], - "outputs" : ["Reshape_580_0"] - }, - { - "inputs" : [ "Sum_543", "Select_545" ], - "name" : "Divide_546", - "op" : "Divide", - "outputs" : ["Divide_546_0"] - }, - { - "inputs" : [ "Add_688", "Divide_692" ], - "name" : "Add_693", - "op" : "Add", - "outputs" : ["Add_693_0"] - }, - { - "forward_arg_shape" : [ 50, 64, 8, 8 ], - "include_padding_in_avg_computation" : false, - "inputs" : ["Reshape_580"], - "name" : "AvgPoolBackprop_581", - "op" : "AvgPoolBackprop", - "outputs" : ["AvgPoolBackprop_581_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 1, 1 ], - "window_shape" : [ 8, 8 ] - }, - { - "inputs" : [ "Greater_515", "Divide_546", "Constant_514" ], - "name" : "Select_547", - "op" : "Select", - "outputs" : ["Select_547_0"] - }, - { - "inputs" : [ "Add_693", "Divide_697" ], - "name" : "Add_698", - "op" : "Add", - "outputs" : ["Add_698_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["AvgPoolBackprop_581"], - "name" : "Reshape_582", - "op" : "Reshape", - "output_shape" : [ 50, 8, 8, 64 ], - "outputs" : ["Reshape_582_0"] - }, - { - "inputs" : [ "Add_698", "Divide_702" ], - "name" : "Add_703", - "op" : "Add", - "outputs" : ["Add_703_0"] - }, - { - "inputs" : [ "Greater_576", "Reshape_582", "Broadcast_575" ], - "name" : "Select_583", - "op" : "Select", - "outputs" : ["Select_583_0"] - }, - { - "inputs" : [ "Add_703", "Divide_707" ], - "name" : "Add_708", - "op" : "Add", - "outputs" : ["Add_708_0"] - }, - { - "inputs" : [ "Add_708", "Divide_712" ], - "name" : "Add_713", - "op" : "Add", - "outputs" : ["Add_713_0"] - }, - { - "inputs" : [ "Constant_584", "Add_713" ], - "name" : "Multiply_714", - "op" : "Multiply", - "outputs" : ["Multiply_714_0"] - }, - { - "inputs" : [ "Select_547", "Multiply_714" ], - "name" : "Add_715", - "op" : "Add", - "outputs" : ["Add_715_0"] - } - ], - "parameters" : [ - "Parameter_480", "Parameter_481", "Parameter_482", "Parameter_483", - "Parameter_484", "Parameter_485", "Parameter_486", "Parameter_487", - "Parameter_488", "Parameter_489", "Parameter_490", "Parameter_491", - "Parameter_492", "Parameter_493", "Parameter_494", "Parameter_495", - "Parameter_496", "Parameter_497", "Parameter_498", "Parameter_499", - "Parameter_500", "Parameter_501", "Parameter_502", "Parameter_503", - "Parameter_504", "Parameter_505", "Parameter_506", "Parameter_507" - ], - "result" : [ - "Select_547", "Add_527", "Sum_571", "Dot_573", "Select_583", "Add_715", - "Select_547" - ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_28[_XlaCompiledKernel=true,_XlaNumConstantArgs=0,_XlaNumResourceArgs=0].v13.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_28[_XlaCompiledKernel=true,_XlaNumConstantArgs=0,_XlaNumResourceArgs=0].v13.json deleted file mode 100644 index 9a30195249b90f..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_28[_XlaCompiledKernel=true,_XlaNumConstantArgs=0,_XlaNumResourceArgs=0].v13.json +++ /dev/null @@ -1,158 +0,0 @@ -[{ - "name" : "Function_7", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_412", - "op" : "Parameter", - "outputs" : ["Parameter_412_0"], - "shape" : [ 1, 1, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_411", - "op" : "Parameter", - "outputs" : ["Parameter_411_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_410", - "op" : "Parameter", - "outputs" : ["Parameter_410_0"], - "shape" : [ 3, 3, 64, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_409", - "op" : "Parameter", - "outputs" : ["Parameter_409_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_413", - "op" : "Constant", - "outputs" : ["Constant_413_0"], - "shape" : [], - "value" : ["0"] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_420", - "op" : "Constant", - "outputs" : ["Constant_420_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_412"], - "name" : "Reshape_423", - "op" : "Reshape", - "output_shape" : [ 64, 32, 1, 1 ], - "outputs" : ["Reshape_423_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_410"], - "name" : "Reshape_417", - "op" : "Reshape", - "output_shape" : [ 64, 64, 3, 3 ], - "outputs" : ["Reshape_417_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_413"], - "name" : "Broadcast_414", - "op" : "Broadcast", - "outputs" : ["Broadcast_414_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "inputs" : [ "Parameter_411", "Constant_420" ], - "name" : "Pad_421", - "op" : "Pad", - "outputs" : ["Pad_421_0"], - "padding_above" : [ 0, 0, 0, 0 ], - "padding_below" : [ 0, 0, 0, 0 ], - "padding_interior" : [ 0, 0, 0, 0 ] - }, - { - "inputs" : [ "Broadcast_414", "Parameter_409" ], - "name" : "Maximum_415", - "op" : "Maximum", - "outputs" : ["Maximum_415_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Pad_421"], - "name" : "Reshape_422", - "op" : "Reshape", - "output_shape" : [ 50, 32, 16, 16 ], - "outputs" : ["Reshape_422_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Maximum_415"], - "name" : "Reshape_416", - "op" : "Reshape", - "output_shape" : [ 50, 64, 8, 8 ], - "outputs" : ["Reshape_416_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_422", "Reshape_423" ], - "name" : "Convolution_424", - "op" : "Convolution", - "outputs" : ["Convolution_424_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 2, 2 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_416", "Reshape_417" ], - "name" : "Convolution_418", - "op" : "Convolution", - "outputs" : ["Convolution_418_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_424"], - "name" : "Reshape_425", - "op" : "Reshape", - "output_shape" : [ 50, 8, 8, 64 ], - "outputs" : ["Reshape_425_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_418"], - "name" : "Reshape_419", - "op" : "Reshape", - "output_shape" : [ 50, 8, 8, 64 ], - "outputs" : ["Reshape_419_0"] - }, - { - "inputs" : [ "Reshape_419", "Reshape_425" ], - "name" : "Add_426", - "op" : "Add", - "outputs" : ["Add_426_0"] - } - ], - "parameters" : - [ "Parameter_409", "Parameter_410", "Parameter_411", "Parameter_412" ], - "result" : - [ "Add_426", "Pad_421", "Maximum_415", "Reshape_425", "Reshape_419" ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_34[_XlaCompiledKernel=true,_XlaNumConstantArgs=7,_XlaNumResourceArgs=0].v73.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_34[_XlaCompiledKernel=true,_XlaNumConstantArgs=7,_XlaNumResourceArgs=0].v73.json deleted file mode 100644 index 7f879155558ea3..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_34[_XlaCompiledKernel=true,_XlaNumConstantArgs=7,_XlaNumResourceArgs=0].v73.json +++ /dev/null @@ -1,594 +0,0 @@ -[{ - "name" : "Function_10", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_849", - "op" : "Parameter", - "outputs" : ["Parameter_849_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_848", - "op" : "Parameter", - "outputs" : ["Parameter_848_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_847", - "op" : "Parameter", - "outputs" : ["Parameter_847_0"], - "shape" : [ 50, 18, 18, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_846", - "op" : "Parameter", - "outputs" : ["Parameter_846_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_845", - "op" : "Parameter", - "outputs" : ["Parameter_845_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_844", - "op" : "Parameter", - "outputs" : ["Parameter_844_0"], - "shape" : [ 3, 3, 64, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_843", - "op" : "Parameter", - "outputs" : ["Parameter_843_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_842", - "op" : "Parameter", - "outputs" : ["Parameter_842_0"], - "shape" : [ 50, 8, 8, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_841", - "op" : "Parameter", - "outputs" : ["Parameter_841_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_840", - "op" : "Parameter", - "outputs" : ["Parameter_840_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_839", - "op" : "Parameter", - "outputs" : ["Parameter_839_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_838", - "op" : "Parameter", - "outputs" : ["Parameter_838_0"], - "shape" : [ 64, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_837", - "op" : "Parameter", - "outputs" : ["Parameter_837_0"], - "shape" : [10] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_836", - "op" : "Parameter", - "outputs" : ["Parameter_836_0"], - "shape" : [ 1, 1, 16, 32 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_835", - "op" : "Parameter", - "outputs" : ["Parameter_835_0"], - "shape" : [ 1, 1, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_834", - "op" : "Parameter", - "outputs" : ["Parameter_834_0"], - "shape" : [ 3, 3, 32, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_833", - "op" : "Parameter", - "outputs" : ["Parameter_833_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_832", - "op" : "Parameter", - "outputs" : ["Parameter_832_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_831", - "op" : "Parameter", - "outputs" : ["Parameter_831_0"], - "shape" : [ 3, 3, 64, 64 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_830", - "op" : "Parameter", - "outputs" : ["Parameter_830_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_829", - "op" : "Parameter", - "outputs" : ["Parameter_829_0"], - "shape" : [64] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_828", - "op" : "Parameter", - "outputs" : ["Parameter_828_0"], - "shape" : [ 64, 10 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_827", - "op" : "Parameter", - "outputs" : ["Parameter_827_0"], - "shape" : [10] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_826", - "op" : "Parameter", - "outputs" : ["Parameter_826_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_851", - "op" : "Constant", - "outputs" : ["Constant_851_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Parameter_848"], - "name" : "Reshape_854", - "op" : "Reshape", - "output_shape" : [ 50, 64, 8, 8 ], - "outputs" : ["Reshape_854_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_848"], - "name" : "Reshape_888", - "op" : "Reshape", - "output_shape" : [ 64, 50, 8, 8 ], - "outputs" : ["Reshape_888_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_847"], - "name" : "Reshape_887", - "op" : "Reshape", - "output_shape" : [ 32, 50, 18, 18 ], - "outputs" : ["Reshape_887_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_842"], - "name" : "Reshape_897", - "op" : "Reshape", - "output_shape" : [ 64, 50, 8, 8 ], - "outputs" : ["Reshape_897_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_841"], - "name" : "Reshape_896", - "op" : "Reshape", - "output_shape" : [ 32, 50, 16, 16 ], - "outputs" : ["Reshape_896_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_834"], - "name" : "Reshape_855", - "op" : "Reshape", - "output_shape" : [ 64, 32, 3, 3 ], - "outputs" : ["Reshape_855_0"] - }, - { - "input_order" : [], - "inputs" : ["Parameter_826"], - "name" : "Reshape_850", - "op" : "Reshape", - "output_shape" : [], - "outputs" : ["Reshape_850_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_851"], - "name" : "Broadcast_852", - "op" : "Broadcast", - "outputs" : ["Broadcast_852_0"], - "shape" : [ 50, 16, 16, 32 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_887", "Reshape_888" ], - "name" : "Convolution_889", - "op" : "Convolution", - "outputs" : ["Convolution_889_0"], - "padding_above" : [ -1, -1 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 2, 2 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_896", "Reshape_897" ], - "name" : "Convolution_898", - "op" : "Convolution", - "outputs" : ["Convolution_898_0"], - "padding_above" : [ -1, -1 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 2, 2 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_batch_shape" : [ 50, 32, 18, 18 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_855", "Reshape_854" ], - "name" : "ConvolutionBackpropData_856", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_856_0"], - "padding_above_forward" : [ 0, 0 ], - "padding_below_forward" : [ 0, 0 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 2, 2 ] - }, - { - "axes" : [0], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_873", - "op" : "Broadcast", - "outputs" : ["Broadcast_873_0"], - "shape" : [64] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_876", - "op" : "Broadcast", - "outputs" : ["Broadcast_876_0"], - "shape" : [ 3, 3, 64, 64 ] - }, - { - "axes" : [ 0, 1 ], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_867", - "op" : "Broadcast", - "outputs" : ["Broadcast_867_0"], - "shape" : [ 64, 10 ] - }, - { - "axes" : [0], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_879", - "op" : "Broadcast", - "outputs" : ["Broadcast_879_0"], - "shape" : [64] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_885", - "op" : "Broadcast", - "outputs" : ["Broadcast_885_0"], - "shape" : [ 3, 3, 32, 64 ] - }, - { - "input_order" : [], - "inputs" : ["Reshape_850"], - "name" : "Reshape_893", - "op" : "Reshape", - "output_shape" : [ 1, 1 ], - "outputs" : ["Reshape_893_0"] - }, - { - "axes" : [0], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_864", - "op" : "Broadcast", - "outputs" : ["Broadcast_864_0"], - "shape" : [10] - }, - { - "axes" : [0], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_882", - "op" : "Broadcast", - "outputs" : ["Broadcast_882_0"], - "shape" : [64] - }, - { - "axes" : [0], - "inputs" : ["Reshape_850"], - "name" : "Broadcast_870", - "op" : "Broadcast", - "outputs" : ["Broadcast_870_0"], - "shape" : [64] - }, - { - "input_order" : [], - "inputs" : ["Reshape_850"], - "name" : "Reshape_861", - "op" : "Reshape", - "output_shape" : [ 1, 1 ], - "outputs" : ["Reshape_861_0"] - }, - { - "inputs" : [ "Parameter_849", "Broadcast_852" ], - "name" : "Greater_853", - "op" : "Greater", - "outputs" : ["Greater_853_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_889"], - "name" : "Reshape_890", - "op" : "Reshape", - "output_shape" : [ 64, 3, 3, 32 ], - "outputs" : ["Reshape_890_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_898"], - "name" : "Reshape_899", - "op" : "Reshape", - "output_shape" : [ 64, 1, 1, 32 ], - "outputs" : ["Reshape_899_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_856"], - "name" : "Reshape_857", - "op" : "Reshape", - "output_shape" : [ 50, 18, 18, 32 ], - "outputs" : ["Reshape_857_0"] - }, - { - "inputs" : [ "Parameter_830", "Broadcast_873" ], - "name" : "Multiply_874", - "op" : "Multiply", - "outputs" : ["Multiply_874_0"] - }, - { - "inputs" : [ "Parameter_831", "Broadcast_876" ], - "name" : "Multiply_877", - "op" : "Multiply", - "outputs" : ["Multiply_877_0"] - }, - { - "inputs" : [ "Parameter_828", "Broadcast_867" ], - "name" : "Multiply_868", - "op" : "Multiply", - "outputs" : ["Multiply_868_0"] - }, - { - "inputs" : [ "Parameter_832", "Broadcast_879" ], - "name" : "Multiply_880", - "op" : "Multiply", - "outputs" : ["Multiply_880_0"] - }, - { - "inputs" : [ "Parameter_834", "Broadcast_885" ], - "name" : "Multiply_886", - "op" : "Multiply", - "outputs" : ["Multiply_886_0"] - }, - { - "axes" : [ 2, 3 ], - "inputs" : ["Reshape_893"], - "name" : "Broadcast_894", - "op" : "Broadcast", - "outputs" : ["Broadcast_894_0"], - "shape" : [ 1, 1, 32, 64 ] - }, - { - "inputs" : [ "Parameter_827", "Broadcast_864" ], - "name" : "Multiply_865", - "op" : "Multiply", - "outputs" : ["Multiply_865_0"] - }, - { - "inputs" : [ "Parameter_833", "Broadcast_882" ], - "name" : "Multiply_883", - "op" : "Multiply", - "outputs" : ["Multiply_883_0"] - }, - { - "inputs" : [ "Parameter_829", "Broadcast_870" ], - "name" : "Multiply_871", - "op" : "Multiply", - "outputs" : ["Multiply_871_0"] - }, - { - "axes" : [ 2, 3 ], - "inputs" : ["Reshape_861"], - "name" : "Broadcast_862", - "op" : "Broadcast", - "outputs" : ["Broadcast_862_0"], - "shape" : [ 1, 1, 16, 32 ] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_890"], - "name" : "Reshape_891", - "op" : "Reshape", - "output_shape" : [ 3, 3, 32, 64 ], - "outputs" : ["Reshape_891_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_899"], - "name" : "Reshape_900", - "op" : "Reshape", - "output_shape" : [ 1, 1, 32, 64 ], - "outputs" : ["Reshape_900_0"] - }, - { - "inputs" : ["Reshape_857"], - "lower_bounds" : [ 0, 1, 1, 0 ], - "name" : "Slice_858", - "op" : "Slice", - "outputs" : ["Slice_858_0"], - "strides" : [ 1, 1, 1, 1 ], - "upper_bounds" : [ 50, 17, 17, 32 ] - }, - { - "inputs" : [ "Multiply_874", "Parameter_839" ], - "name" : "Add_875", - "op" : "Add", - "outputs" : ["Add_875_0"] - }, - { - "inputs" : [ "Multiply_877", "Parameter_844" ], - "name" : "Add_878", - "op" : "Add", - "outputs" : ["Add_878_0"] - }, - { - "inputs" : [ "Multiply_868", "Parameter_838" ], - "name" : "Add_869", - "op" : "Add", - "outputs" : ["Add_869_0"] - }, - { - "inputs" : [ "Multiply_880", "Parameter_846" ], - "name" : "Add_881", - "op" : "Add", - "outputs" : ["Add_881_0"] - }, - { - "inputs" : [ "Parameter_835", "Broadcast_894" ], - "name" : "Multiply_895", - "op" : "Multiply", - "outputs" : ["Multiply_895_0"] - }, - { - "inputs" : [ "Multiply_865", "Parameter_837" ], - "name" : "Add_866", - "op" : "Add", - "outputs" : ["Add_866_0"] - }, - { - "inputs" : [ "Multiply_883", "Parameter_845" ], - "name" : "Add_884", - "op" : "Add", - "outputs" : ["Add_884_0"] - }, - { - "inputs" : [ "Multiply_871", "Parameter_840" ], - "name" : "Add_872", - "op" : "Add", - "outputs" : ["Add_872_0"] - }, - { - "inputs" : [ "Parameter_836", "Broadcast_862" ], - "name" : "Multiply_863", - "op" : "Multiply", - "outputs" : ["Multiply_863_0"] - }, - { - "inputs" : [ "Multiply_886", "Reshape_891" ], - "name" : "Add_892", - "op" : "Add", - "outputs" : ["Add_892_0"] - }, - { - "inputs" : [ "Parameter_843", "Slice_858" ], - "name" : "Add_859", - "op" : "Add", - "outputs" : ["Add_859_0"] - }, - { - "inputs" : [ "Multiply_895", "Reshape_900" ], - "name" : "Add_901", - "op" : "Add", - "outputs" : ["Add_901_0"] - }, - { - "inputs" : [ "Greater_853", "Add_859", "Broadcast_852" ], - "name" : "Select_860", - "op" : "Select", - "outputs" : ["Select_860_0"] - } - ], - "parameters" : [ - "Parameter_826", "Parameter_827", "Parameter_828", "Parameter_829", - "Parameter_830", "Parameter_831", "Parameter_832", "Parameter_833", - "Parameter_834", "Parameter_835", "Parameter_836", "Parameter_837", - "Parameter_838", "Parameter_839", "Parameter_840", "Parameter_841", - "Parameter_842", "Parameter_843", "Parameter_844", "Parameter_845", - "Parameter_846", "Parameter_847", "Parameter_848", "Parameter_849" - ], - "result" : [ - "Reshape_850", "Select_860", "Multiply_863", "Add_866", "Add_869", - "Add_872", "Add_875", "Add_878", "Add_881", "Add_884", "Add_892", - "Add_901" - ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_4[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v14.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_4[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v14.json deleted file mode 100644 index 2216091e6ce9a5..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_4[_XlaCompiledKernel=true,_XlaNumConstantArgs=1,_XlaNumResourceArgs=0].v14.json +++ /dev/null @@ -1,104 +0,0 @@ -[{ - "name" : "Function_25", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1713", - "op" : "Parameter", - "outputs" : ["Parameter_1713_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1712", - "op" : "Parameter", - "outputs" : ["Parameter_1712_0"], - "shape" : [ 50, 32, 32, 3 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1711", - "op" : "Parameter", - "outputs" : ["Parameter_1711_0"], - "shape" : [ 3, 3, 3, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1710", - "op" : "Parameter", - "outputs" : ["Parameter_1710_0"], - "shape" : [] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1713"], - "name" : "Reshape_1717", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1717_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1712"], - "name" : "Reshape_1716", - "op" : "Reshape", - "output_shape" : [ 3, 50, 32, 32 ], - "outputs" : ["Reshape_1716_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1710"], - "name" : "Broadcast_1714", - "op" : "Broadcast", - "outputs" : ["Broadcast_1714_0"], - "shape" : [ 3, 3, 3, 16 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_1716", "Reshape_1717" ], - "name" : "Convolution_1718", - "op" : "Convolution", - "outputs" : ["Convolution_1718_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "inputs" : [ "Parameter_1711", "Broadcast_1714" ], - "name" : "Multiply_1715", - "op" : "Multiply", - "outputs" : ["Multiply_1715_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_1718"], - "name" : "Reshape_1719", - "op" : "Reshape", - "output_shape" : [ 16, 3, 3, 3 ], - "outputs" : ["Reshape_1719_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_1719"], - "name" : "Reshape_1720", - "op" : "Reshape", - "output_shape" : [ 3, 3, 3, 16 ], - "outputs" : ["Reshape_1720_0"] - }, - { - "inputs" : [ "Multiply_1715", "Reshape_1720" ], - "name" : "Add_1721", - "op" : "Add", - "outputs" : ["Add_1721_0"] - } - ], - "parameters" : [ - "Parameter_1710", "Parameter_1711", "Parameter_1712", "Parameter_1713" - ], - "result" : ["Add_1721"] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_8[_XlaCompiledKernel=true,_XlaNumConstantArgs=2,_XlaNumResourceArgs=0].v28.json b/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_8[_XlaCompiledKernel=true,_XlaNumConstantArgs=2,_XlaNumResourceArgs=0].v28.json deleted file mode 100644 index 87198b26150ba9..00000000000000 --- a/ngraph/test/models/tensorflow/resnet8/tf_function_cluster_8[_XlaCompiledKernel=true,_XlaNumConstantArgs=2,_XlaNumResourceArgs=0].v28.json +++ /dev/null @@ -1,299 +0,0 @@ -[{ - "name" : "Function_22", - "ops" : [ - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1540", - "op" : "Parameter", - "outputs" : ["Parameter_1540_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1539", - "op" : "Parameter", - "outputs" : ["Parameter_1539_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1538", - "op" : "Parameter", - "outputs" : ["Parameter_1538_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1537", - "op" : "Parameter", - "outputs" : ["Parameter_1537_0"], - "shape" : [ 1, 1, 16, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1536", - "op" : "Parameter", - "outputs" : ["Parameter_1536_0"], - "shape" : [ 3, 3, 16, 16 ] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1535", - "op" : "Parameter", - "outputs" : ["Parameter_1535_0"], - "shape" : [] - }, - { - "element_type" : "float", - "inputs" : [], - "name" : "Constant_1541", - "op" : "Constant", - "outputs" : ["Constant_1541_0"], - "shape" : [], - "value" : ["0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Parameter_1540"], - "name" : "Reshape_1548", - "op" : "Reshape", - "output_shape" : [ 50, 16, 32, 32 ], - "outputs" : ["Reshape_1548_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1540"], - "name" : "Reshape_1557", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1557_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1539"], - "name" : "Reshape_1565", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1565_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1539"], - "name" : "Reshape_1556", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1556_0"] - }, - { - "input_order" : [ 3, 0, 1, 2 ], - "inputs" : ["Parameter_1538"], - "name" : "Reshape_1566", - "op" : "Reshape", - "output_shape" : [ 16, 50, 32, 32 ], - "outputs" : ["Reshape_1566_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Parameter_1538"], - "name" : "Reshape_1544", - "op" : "Reshape", - "output_shape" : [ 50, 16, 32, 32 ], - "outputs" : ["Reshape_1544_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_1537"], - "name" : "Reshape_1545", - "op" : "Reshape", - "output_shape" : [ 16, 16, 1, 1 ], - "outputs" : ["Reshape_1545_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_1536"], - "name" : "Reshape_1549", - "op" : "Reshape", - "output_shape" : [ 16, 16, 3, 3 ], - "outputs" : ["Reshape_1549_0"] - }, - { - "input_order" : [], - "inputs" : ["Parameter_1535"], - "name" : "Reshape_1562", - "op" : "Reshape", - "output_shape" : [ 1, 1 ], - "outputs" : ["Reshape_1562_0"] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Parameter_1535"], - "name" : "Broadcast_1554", - "op" : "Broadcast", - "outputs" : ["Broadcast_1554_0"], - "shape" : [ 3, 3, 16, 16 ] - }, - { - "axes" : [ 0, 1, 2, 3 ], - "inputs" : ["Constant_1541"], - "name" : "Broadcast_1542", - "op" : "Broadcast", - "outputs" : ["Broadcast_1542_0"], - "shape" : [ 50, 32, 32, 16 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_1556", "Reshape_1557" ], - "name" : "Convolution_1558", - "op" : "Convolution", - "outputs" : ["Convolution_1558_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_1565", "Reshape_1566" ], - "name" : "Convolution_1567", - "op" : "Convolution", - "outputs" : ["Convolution_1567_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "data_batch_shape" : [ 50, 16, 32, 32 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_1545", "Reshape_1544" ], - "name" : "ConvolutionBackpropData_1546", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_1546_0"], - "padding_above_forward" : [ 0, 0 ], - "padding_below_forward" : [ 0, 0 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 1, 1 ] - }, - { - "data_batch_shape" : [ 50, 16, 32, 32 ], - "data_dilation_strides_forward" : [ 1, 1 ], - "inputs" : [ "Reshape_1549", "Reshape_1548" ], - "name" : "ConvolutionBackpropData_1550", - "op" : "ConvolutionBackpropData", - "outputs" : ["ConvolutionBackpropData_1550_0"], - "padding_above_forward" : [ 1, 1 ], - "padding_below_forward" : [ 1, 1 ], - "window_dilation_strides_forward" : [ 1, 1 ], - "window_movement_strides_forward" : [ 1, 1 ] - }, - { - "axes" : [ 2, 3 ], - "inputs" : ["Reshape_1562"], - "name" : "Broadcast_1563", - "op" : "Broadcast", - "outputs" : ["Broadcast_1563_0"], - "shape" : [ 1, 1, 16, 16 ] - }, - { - "inputs" : [ "Parameter_1536", "Broadcast_1554" ], - "name" : "Multiply_1555", - "op" : "Multiply", - "outputs" : ["Multiply_1555_0"] - }, - { - "inputs" : [ "Parameter_1539", "Broadcast_1542" ], - "name" : "Greater_1543", - "op" : "Greater", - "outputs" : ["Greater_1543_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_1558"], - "name" : "Reshape_1559", - "op" : "Reshape", - "output_shape" : [ 16, 3, 3, 16 ], - "outputs" : ["Reshape_1559_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Convolution_1567"], - "name" : "Reshape_1568", - "op" : "Reshape", - "output_shape" : [ 16, 1, 1, 16 ], - "outputs" : ["Reshape_1568_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_1546"], - "name" : "Reshape_1547", - "op" : "Reshape", - "output_shape" : [ 50, 32, 32, 16 ], - "outputs" : ["Reshape_1547_0"] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["ConvolutionBackpropData_1550"], - "name" : "Reshape_1551", - "op" : "Reshape", - "output_shape" : [ 50, 32, 32, 16 ], - "outputs" : ["Reshape_1551_0"] - }, - { - "inputs" : [ "Parameter_1537", "Broadcast_1563" ], - "name" : "Multiply_1564", - "op" : "Multiply", - "outputs" : ["Multiply_1564_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_1559"], - "name" : "Reshape_1560", - "op" : "Reshape", - "output_shape" : [ 3, 3, 16, 16 ], - "outputs" : ["Reshape_1560_0"] - }, - { - "input_order" : [ 1, 2, 3, 0 ], - "inputs" : ["Reshape_1568"], - "name" : "Reshape_1569", - "op" : "Reshape", - "output_shape" : [ 1, 1, 16, 16 ], - "outputs" : ["Reshape_1569_0"] - }, - { - "inputs" : [ "Reshape_1547", "Reshape_1551" ], - "name" : "Add_1552", - "op" : "Add", - "outputs" : ["Add_1552_0"] - }, - { - "inputs" : [ "Multiply_1555", "Reshape_1560" ], - "name" : "Add_1561", - "op" : "Add", - "outputs" : ["Add_1561_0"] - }, - { - "inputs" : [ "Multiply_1564", "Reshape_1569" ], - "name" : "Add_1570", - "op" : "Add", - "outputs" : ["Add_1570_0"] - }, - { - "inputs" : [ "Greater_1543", "Add_1552", "Broadcast_1542" ], - "name" : "Select_1553", - "op" : "Select", - "outputs" : ["Select_1553_0"] - } - ], - "parameters" : [ - "Parameter_1535", "Parameter_1536", "Parameter_1537", "Parameter_1538", - "Parameter_1539", "Parameter_1540" - ], - "result" : [ "Select_1553", "Add_1561", "Add_1570" ] -}] \ No newline at end of file diff --git a/ngraph/test/models/tensorflow/rnn/vanilla_rnn_3_time_step.json b/ngraph/test/models/tensorflow/rnn/vanilla_rnn_3_time_step.json deleted file mode 100644 index 76a305a8f3090b..00000000000000 --- a/ngraph/test/models/tensorflow/rnn/vanilla_rnn_3_time_step.json +++ /dev/null @@ -1,587 +0,0 @@ -[ - { - "name": "Function_5", - "ops": [ - { - "cacheable": false, - "element_type": "float", - "friendly_name": "rnn/basic_rnn_cell/kernel", - "name": "Parameter_4535", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_4535_0" - ], - "shape": [ - 34, - 2 - ], - "type_info": { - "name": "Parameter", - "version": 0 - } - }, - { - "cacheable": false, - "element_type": "float", - "friendly_name": "rnn/basic_rnn_cell/bias", - "name": "Parameter_4536", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_4536_0" - ], - "shape": [ - 2 - ], - "type_info": { - "name": "Parameter", - "version": 0 - } - }, - { - "cacheable": false, - "element_type": "float", - "friendly_name": "_arg_x_0_0", - "name": "Parameter_4537", - "op": "Parameter", - "op_version": 0, - "outputs": [ - "Parameter_4537_0" - ], - "shape": [ - 64, - 3, - 32 - ], - "type_info": { - "name": "Parameter", - "version": 0 - } - }, - { - "friendly_name": "unstack", - "inputs": [ - "Parameter_4537" - ], - "lower_bounds": [ - 0, - 0, - 0 - ], - "name": "Slice_4538", - "op": "Slice", - "op_version": 0, - "outputs": [ - "Slice_4538_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "type_info": { - "name": "Slice", - "version": 0 - }, - "upper_bounds": [ - 64, - 1, - 32 - ] - }, - { - "friendly_name": "unstack", - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_4538" - ], - "name": "Reshape_4539", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 64, - 32 - ], - "outputs": [ - "Reshape_4539_0" - ], - "type_info": { - "name": "Reshape", - "version": 0 - } - }, - { - "element_type": "float", - "friendly_name": "rnn/BasicRNNCellZeroState/zeros", - "name": "Constant_4544", - "op": "Constant", - "op_version": 0, - "outputs": [ - "Constant_4544_0" - ], - "shape": [ - 64, - 2 - ], - "type_info": { - "name": "Constant", - "version": 0 - }, - "value": [ - "0" - ] - }, - { - "axis": 1, - "friendly_name": "rnn/basic_rnn_cell/concat", - "inputs": [ - "Reshape_4539", - "Constant_4544" - ], - "name": "Concat_4546", - "op": "Concat", - "op_version": 0, - "outputs": [ - "Concat_4546_0" - ], - "type_info": { - "name": "Concat", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/BiasAdd", - "inputs": [ - "Concat_4546", - "Parameter_4535" - ], - "name": "Dot_4547", - "op": "Dot", - "op_version": 0, - "outputs": [ - "Dot_4547_0" - ], - "reduction_axes_count": 1, - "type_info": { - "name": "Dot", - "version": 0 - } - }, - { - "axes": [ - 0 - ], - "friendly_name": "rnn/basic_rnn_cell/BiasAdd", - "inputs": [ - "Parameter_4536" - ], - "name": "Broadcast_4548", - "op": "Broadcast", - "op_version": 0, - "outputs": [ - "Broadcast_4548_0" - ], - "shape": [ - 64, - 2 - ], - "type_info": { - "name": "Broadcast", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/BiasAdd", - "inputs": [ - "Dot_4547", - "Broadcast_4548" - ], - "name": "Add_4549", - "op": "Add", - "op_version": 0, - "outputs": [ - "Add_4549_0" - ], - "type_info": { - "name": "Add", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/Tanh", - "inputs": [ - "Add_4549" - ], - "name": "Tanh_4550", - "op": "Tanh", - "op_version": 0, - "outputs": [ - "Tanh_4550_0" - ], - "type_info": { - "name": "Tanh", - "version": 0 - } - }, - { - "inputs": [ - "Tanh_4550" - ], - "name": "Result_4561", - "needs_default_layout": true, - "op": "Result", - "op_version": 0, - "outputs": [ - "Result_4561_0" - ], - "type_info": { - "name": "Result", - "version": 0 - } - }, - { - "friendly_name": "unstack", - "inputs": [ - "Parameter_4537" - ], - "lower_bounds": [ - 0, - 1, - 0 - ], - "name": "Slice_4540", - "op": "Slice", - "op_version": 0, - "outputs": [ - "Slice_4540_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "type_info": { - "name": "Slice", - "version": 0 - }, - "upper_bounds": [ - 64, - 2, - 32 - ] - }, - { - "friendly_name": "unstack", - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_4540" - ], - "name": "Reshape_4541", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 64, - 32 - ], - "outputs": [ - "Reshape_4541_0" - ], - "type_info": { - "name": "Reshape", - "version": 0 - } - }, - { - "axis": 1, - "friendly_name": "rnn/basic_rnn_cell/concat_1", - "inputs": [ - "Reshape_4541", - "Tanh_4550" - ], - "name": "Concat_4551", - "op": "Concat", - "op_version": 0, - "outputs": [ - "Concat_4551_0" - ], - "type_info": { - "name": "Concat", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/BiasAdd_1", - "inputs": [ - "Concat_4551", - "Parameter_4535" - ], - "name": "Dot_4552", - "op": "Dot", - "op_version": 0, - "outputs": [ - "Dot_4552_0" - ], - "reduction_axes_count": 1, - "type_info": { - "name": "Dot", - "version": 0 - } - }, - { - "axes": [ - 0 - ], - "friendly_name": "rnn/basic_rnn_cell/BiasAdd_1", - "inputs": [ - "Parameter_4536" - ], - "name": "Broadcast_4553", - "op": "Broadcast", - "op_version": 0, - "outputs": [ - "Broadcast_4553_0" - ], - "shape": [ - 64, - 2 - ], - "type_info": { - "name": "Broadcast", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/BiasAdd_1", - "inputs": [ - "Dot_4552", - "Broadcast_4553" - ], - "name": "Add_4554", - "op": "Add", - "op_version": 0, - "outputs": [ - "Add_4554_0" - ], - "type_info": { - "name": "Add", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/Tanh_1", - "inputs": [ - "Add_4554" - ], - "name": "Tanh_4555", - "op": "Tanh", - "op_version": 0, - "outputs": [ - "Tanh_4555_0" - ], - "type_info": { - "name": "Tanh", - "version": 0 - } - }, - { - "inputs": [ - "Tanh_4555" - ], - "name": "Result_4562", - "needs_default_layout": true, - "op": "Result", - "op_version": 0, - "outputs": [ - "Result_4562_0" - ], - "type_info": { - "name": "Result", - "version": 0 - } - }, - { - "friendly_name": "unstack", - "inputs": [ - "Parameter_4537" - ], - "lower_bounds": [ - 0, - 2, - 0 - ], - "name": "Slice_4542", - "op": "Slice", - "op_version": 0, - "outputs": [ - "Slice_4542_0" - ], - "strides": [ - 1, - 1, - 1 - ], - "type_info": { - "name": "Slice", - "version": 0 - }, - "upper_bounds": [ - 64, - 3, - 32 - ] - }, - { - "friendly_name": "unstack", - "input_order": [ - 0, - 1, - 2 - ], - "inputs": [ - "Slice_4542" - ], - "name": "Reshape_4543", - "op": "Reshape", - "op_version": 0, - "output_shape": [ - 64, - 32 - ], - "outputs": [ - "Reshape_4543_0" - ], - "type_info": { - "name": "Reshape", - "version": 0 - } - }, - { - "axis": 1, - "friendly_name": "rnn/basic_rnn_cell/concat_2", - "inputs": [ - "Reshape_4543", - "Tanh_4555" - ], - "name": "Concat_4556", - "op": "Concat", - "op_version": 0, - "outputs": [ - "Concat_4556_0" - ], - "type_info": { - "name": "Concat", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/BiasAdd_2", - "inputs": [ - "Concat_4556", - "Parameter_4535" - ], - "name": "Dot_4557", - "op": "Dot", - "op_version": 0, - "outputs": [ - "Dot_4557_0" - ], - "reduction_axes_count": 1, - "type_info": { - "name": "Dot", - "version": 0 - } - }, - { - "axes": [ - 0 - ], - "friendly_name": "rnn/basic_rnn_cell/BiasAdd_2", - "inputs": [ - "Parameter_4536" - ], - "name": "Broadcast_4558", - "op": "Broadcast", - "op_version": 0, - "outputs": [ - "Broadcast_4558_0" - ], - "shape": [ - 64, - 2 - ], - "type_info": { - "name": "Broadcast", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/BiasAdd_2", - "inputs": [ - "Dot_4557", - "Broadcast_4558" - ], - "name": "Add_4559", - "op": "Add", - "op_version": 0, - "outputs": [ - "Add_4559_0" - ], - "type_info": { - "name": "Add", - "version": 0 - } - }, - { - "friendly_name": "rnn/basic_rnn_cell/Tanh_2", - "inputs": [ - "Add_4559" - ], - "name": "Tanh_4560", - "op": "Tanh", - "op_version": 0, - "outputs": [ - "Tanh_4560_0" - ], - "type_info": { - "name": "Tanh", - "version": 0 - } - }, - { - "inputs": [ - "Tanh_4560" - ], - "name": "Result_4563", - "needs_default_layout": true, - "op": "Result", - "op_version": 0, - "outputs": [ - "Result_4563_0" - ], - "type_info": { - "name": "Result", - "version": 0 - } - } - ], - "parameters": [ - "Parameter_4535", - "Parameter_4536", - "Parameter_4537" - ], - "result": [ - "Result_4561", - "Result_4562", - "Result_4563" - ] - } -] \ No newline at end of file diff --git a/ngraph/test/models/tf_conv_mnist_nhwc.json b/ngraph/test/models/tf_conv_mnist_nhwc.json deleted file mode 100644 index c049d77d9983db..00000000000000 --- a/ngraph/test/models/tf_conv_mnist_nhwc.json +++ /dev/null @@ -1,332 +0,0 @@ -[{ - "name" : "Function_0", - "ops" : [ - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_12", - "op" : "Parameter", - "outputs" : ["Parameter_12_0"], - "shape" : [ 2, 224, 224, 3 ] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_11", - "op" : "Parameter", - "outputs" : ["Parameter_11_0"], - "shape" : [10] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_10", - "op" : "Parameter", - "outputs" : ["Parameter_10_0"], - "shape" : [ 37632, 10 ] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_9", - "op" : "Parameter", - "outputs" : ["Parameter_9_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_8", - "op" : "Parameter", - "outputs" : ["Parameter_8_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_7", - "op" : "Parameter", - "outputs" : ["Parameter_7_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_6", - "op" : "Parameter", - "outputs" : ["Parameter_6_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_5", - "op" : "Parameter", - "outputs" : ["Parameter_5_0"], - "shape" : [ 3, 3, 3, 3 ] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_4", - "op" : "Parameter", - "outputs" : ["Parameter_4_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_3", - "op" : "Parameter", - "outputs" : ["Parameter_3_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_2", - "op" : "Parameter", - "outputs" : ["Parameter_2_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_1", - "op" : "Parameter", - "outputs" : ["Parameter_1_0"], - "shape" : [3] - }, - { - "cacheable" : false, - "element_type" : "float", - "inputs" : [], - "name" : "Parameter_0", - "op" : "Parameter", - "outputs" : ["Parameter_0_0"], - "shape" : [ 3, 3, 3, 3 ] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Parameter_12"], - "name" : "Reshape_13", - "op" : "Reshape", - "output_shape" : [ 2, 3, 224, 224 ], - "outputs" : ["Reshape_13_0"] - }, - { - "axes" : [0], - "inputs" : ["Parameter_11"], - "name" : "Broadcast_36", - "op" : "Broadcast", - "outputs" : ["Broadcast_36_0"], - "shape" : [ 2, 10 ] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_5"], - "name" : "Reshape_22", - "op" : "Reshape", - "output_shape" : [ 3, 3, 3, 3 ], - "outputs" : ["Reshape_22_0"] - }, - { - "input_order" : [ 3, 2, 0, 1 ], - "inputs" : ["Parameter_0"], - "name" : "Reshape_14", - "op" : "Reshape", - "output_shape" : [ 3, 3, 3, 3 ], - "outputs" : ["Reshape_14_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_13", "Reshape_14" ], - "name" : "Convolution_15", - "op" : "Convolution", - "outputs" : ["Convolution_15_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_15"], - "name" : "Reshape_16", - "op" : "Reshape", - "output_shape" : [ 2, 224, 224, 3 ], - "outputs" : ["Reshape_16_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_16"], - "name" : "Reshape_17", - "op" : "Reshape", - "output_shape" : [ 2, 3, 224, 224 ], - "outputs" : ["Reshape_17_0"] - }, - { - "eps" : 1.0009999641624745e-05, - "inputs" : [ - "Parameter_1", "Parameter_2", "Reshape_17", "Parameter_3", - "Parameter_4" - ], - "name" : "BatchNormInference_18", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_18_0"], - "training" : false - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["BatchNormInference_18"], - "name" : "Reshape_19", - "op" : "Reshape", - "output_shape" : [ 2, 224, 224, 3 ], - "outputs" : ["Reshape_19_0"] - }, - { - "inputs" : ["Reshape_19"], - "name" : "Relu_20", - "op" : "Relu", - "outputs" : ["Relu_20_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Relu_20"], - "name" : "Reshape_21", - "op" : "Reshape", - "output_shape" : [ 2, 3, 224, 224 ], - "outputs" : ["Reshape_21_0"] - }, - { - "data_dilation_strides" : [ 1, 1 ], - "inputs" : [ "Reshape_21", "Reshape_22" ], - "name" : "Convolution_23", - "op" : "Convolution", - "outputs" : ["Convolution_23_0"], - "padding_above" : [ 1, 1 ], - "padding_below" : [ 1, 1 ], - "window_dilation_strides" : [ 1, 1 ], - "window_movement_strides" : [ 1, 1 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["Convolution_23"], - "name" : "Reshape_24", - "op" : "Reshape", - "output_shape" : [ 2, 224, 224, 3 ], - "outputs" : ["Reshape_24_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Reshape_24"], - "name" : "Reshape_25", - "op" : "Reshape", - "output_shape" : [ 2, 3, 224, 224 ], - "outputs" : ["Reshape_25_0"] - }, - { - "eps" : 1.0009999641624745e-05, - "inputs" : [ - "Parameter_6", "Parameter_7", "Reshape_25", "Parameter_8", - "Parameter_9" - ], - "name" : "BatchNormInference_26", - "op" : "BatchNormInference", - "outputs" : ["BatchNormInference_26_0"], - "training" : false - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["BatchNormInference_26"], - "name" : "Reshape_27", - "op" : "Reshape", - "output_shape" : [ 2, 224, 224, 3 ], - "outputs" : ["Reshape_27_0"] - }, - { - "inputs" : [ "Reshape_27", "Parameter_12" ], - "name" : "Add_28", - "op" : "Add", - "outputs" : ["Add_28_0"] - }, - { - "inputs" : ["Add_28"], - "name" : "Relu_29", - "op" : "Relu", - "outputs" : ["Relu_29_0"] - }, - { - "input_order" : [ 0, 3, 1, 2 ], - "inputs" : ["Relu_29"], - "name" : "Reshape_30", - "op" : "Reshape", - "output_shape" : [ 2, 3, 224, 224 ], - "outputs" : ["Reshape_30_0"] - }, - { - "include_padding_in_avg_computation" : false, - "inputs" : ["Reshape_30"], - "name" : "AvgPool_31", - "op" : "AvgPool", - "outputs" : ["AvgPool_31_0"], - "padding_above" : [ 0, 0 ], - "padding_below" : [ 0, 0 ], - "window_movement_strides" : [ 2, 2 ], - "window_shape" : [ 2, 2 ] - }, - { - "input_order" : [ 0, 2, 3, 1 ], - "inputs" : ["AvgPool_31"], - "name" : "Reshape_32", - "op" : "Reshape", - "output_shape" : [ 2, 112, 112, 3 ], - "outputs" : ["Reshape_32_0"] - }, - { - "input_order" : [ 0, 1, 2, 3 ], - "inputs" : ["Reshape_32"], - "name" : "Reshape_34", - "op" : "Reshape", - "output_shape" : [ 2, 37632 ], - "outputs" : ["Reshape_34_0"] - }, - { - "inputs" : [ "Reshape_34", "Parameter_10" ], - "name" : "Dot_35", - "op" : "Dot", - "outputs" : ["Dot_35_0"], - "reduction_axes_count" : 1 - }, - { - "inputs" : [ "Dot_35", "Broadcast_36" ], - "name" : "Add_37", - "op" : "Add", - "outputs" : ["Add_37_0"] - }, - { - "inputs" : ["Add_37"], - "name" : "Result_38", - "op" : "Result", - "outputs" : ["Result_38_0"] - } - ], - "parameters" : [ - "Parameter_0", "Parameter_1", "Parameter_2", "Parameter_3", "Parameter_4", - "Parameter_5", "Parameter_6", "Parameter_7", "Parameter_8", "Parameter_9", - "Parameter_10", "Parameter_11", "Parameter_12" - ], - "result" : ["Result_38"] -}] diff --git a/ngraph/test/ngraph_api.cpp b/ngraph/test/ngraph_api.cpp index f7153150562554..1b6cc1e4f30653 100644 --- a/ngraph/test/ngraph_api.cpp +++ b/ngraph/test/ngraph_api.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/node_input_output.cpp b/ngraph/test/node_input_output.cpp index 5d1f7d06932d0b..e8c530ccee013c 100644 --- a/ngraph/test/node_input_output.cpp +++ b/ngraph/test/node_input_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/onnx/onnx_editor.cpp b/ngraph/test/onnx/onnx_editor.cpp index c9eb00572fab8d..898d5e449b1509 100644 --- a/ngraph/test/onnx/onnx_editor.cpp +++ b/ngraph/test/onnx/onnx_editor.cpp @@ -1,20 +1,9 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include +#include #include "gtest/gtest.h" @@ -22,17 +11,19 @@ #include "ngraph/file_util.hpp" #include "ngraph/op/util/op_types.hpp" #include "ngraph/opsets/opset1.hpp" -#include "onnx_import/editor/editor.hpp" +#include "onnx_editor/editor.hpp" #include "onnx_import/onnx.hpp" #include "util/engine/interpreter_engine.hpp" +#include "util/onnx_test_util.hpp" #include "util/test_case.hpp" #include "util/test_control.hpp" -#include "utils/onnx_test_util.hpp" NGRAPH_SUPPRESS_DEPRECATED_START using namespace ngraph; using namespace ngraph::onnx_import; +using namespace ngraph::onnx_editor; +using namespace ngraph::test; static std::string s_manifest = "${MANIFEST}"; @@ -63,12 +54,13 @@ namespace NGRAPH_TEST(onnx_editor, types__single_input_type_substitution) { // the original model contains 2 inputs with i64 data type and one f32 input - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_abc.prototxt")}; editor.set_input_types({{"A", element::i64}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -87,12 +79,13 @@ NGRAPH_TEST(onnx_editor, types__single_input_type_substitution) NGRAPH_TEST(onnx_editor, types__all_inputs_type_substitution) { // the original model contains 2 inputs with i64 data type and one f32 input - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_abc.prototxt")}; editor.set_input_types({{"A", element::i8}, {"B", element::i8}, {"C", element::i8}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -108,7 +101,7 @@ NGRAPH_TEST(onnx_editor, types__all_inputs_type_substitution) NGRAPH_TEST(onnx_editor, types__missing_type_in_input_descriptor) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/invalid_input_no_type.prototxt")}; // input A doesn't have the "type" field in the model and so the data type cannot be modified @@ -117,7 +110,7 @@ NGRAPH_TEST(onnx_editor, types__missing_type_in_input_descriptor) NGRAPH_TEST(onnx_editor, types__missing_tensor_type_in_input_descriptor) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/invalid_input_no_tensor_type.prototxt")}; // input A doesn't have the "tensor_type" field in the model @@ -126,7 +119,7 @@ NGRAPH_TEST(onnx_editor, types__missing_tensor_type_in_input_descriptor) NGRAPH_TEST(onnx_editor, types__unsupported_data_type_passed) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_abc.prototxt")}; EXPECT_THROW(editor.set_input_types({{"A", element::dynamic}}), ngraph_error); @@ -134,7 +127,7 @@ NGRAPH_TEST(onnx_editor, types__unsupported_data_type_passed) NGRAPH_TEST(onnx_editor, types__incorrect_input_name_passed) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_abc.prototxt")}; EXPECT_THROW(editor.set_input_types({{"ShiaLaBeouf", element::i64}}), ngraph_error); @@ -143,13 +136,14 @@ NGRAPH_TEST(onnx_editor, types__incorrect_input_name_passed) NGRAPH_TEST(onnx_editor, types__elem_type_missing_in_input) { // the original model contains 2 inputs with i64 data type and one f32 input - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/elem_type_missing_in_input.prototxt")}; // the "elem_type" is missing in the model but it should be possible to set the type anyway EXPECT_NO_THROW(editor.set_input_types({{"A", element::i64}})); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -164,14 +158,15 @@ NGRAPH_TEST(onnx_editor, types__elem_type_missing_in_input) NGRAPH_TEST(onnx_editor, shapes__modify_single_input) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/shapes__add_two_inputs.prototxt")}; const auto new_shape = PartialShape{1}; editor.set_input_shapes({{"B", new_shape}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -180,14 +175,15 @@ NGRAPH_TEST(onnx_editor, shapes__modify_single_input) NGRAPH_TEST(onnx_editor, shapes__modify_all_inputs) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/shapes__add_two_inputs.prototxt")}; const auto new_shape = PartialShape{1, 2, 3, 5, 8, 13}; editor.set_input_shapes({{"A", new_shape}, {"B", new_shape}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -199,7 +195,7 @@ NGRAPH_TEST(onnx_editor, shapes__modify_all_inputs) NGRAPH_TEST(onnx_editor, shapes__dynamic_rank_in_model) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/shapes__dynamic_rank_in_model.prototxt")}; // input A in the model doesn't have the "shape" field meaning it has dynamic rank @@ -207,7 +203,8 @@ NGRAPH_TEST(onnx_editor, shapes__dynamic_rank_in_model) const auto expected_shape_of_A = PartialShape{1, 2}; EXPECT_NO_THROW(editor.set_input_shapes({{"A", expected_shape_of_A}})); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -217,14 +214,15 @@ NGRAPH_TEST(onnx_editor, shapes__dynamic_rank_in_model) NGRAPH_TEST(onnx_editor, shapes__set_dynamic_dimension) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/shapes__add_two_inputs.prototxt")}; const auto new_shape = PartialShape{Dimension::dynamic()}; editor.set_input_shapes({{"A", new_shape}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -233,7 +231,7 @@ NGRAPH_TEST(onnx_editor, shapes__set_dynamic_dimension) NGRAPH_TEST(onnx_editor, shapes__set_mixed_dimensions) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/shapes__add_two_inputs.prototxt")}; const auto new_shape_A = PartialShape{21, Dimension::dynamic()}; @@ -241,7 +239,8 @@ NGRAPH_TEST(onnx_editor, shapes__set_mixed_dimensions) editor.set_input_shapes({{"A", new_shape_A}, {"B", new_shape_B}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -254,14 +253,15 @@ NGRAPH_TEST(onnx_editor, shapes__set_mixed_dimensions) NGRAPH_TEST(onnx_editor, shapes__set_scalar_inputs) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/shapes__add_two_inputs.prototxt")}; const auto new_shape = PartialShape{}; editor.set_input_shapes({{"A", new_shape}, {"B", new_shape}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -274,14 +274,15 @@ NGRAPH_TEST(onnx_editor, shapes__set_scalar_inputs) NGRAPH_TEST(onnx_editor, shapes__static_to_dynamic_rank_substitution) { - onnx_import::ONNXModelEditor editor{ + ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/shapes__add_two_inputs.prototxt")}; const auto new_shape = PartialShape::dynamic(); editor.set_input_shapes({{"A", new_shape}, {"B", new_shape}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); const auto graph_inputs = function->get_parameters(); @@ -291,123 +292,9 @@ NGRAPH_TEST(onnx_editor, shapes__static_to_dynamic_rank_substitution) } } -using TestEngine = test::INTERPRETER_Engine; - -NGRAPH_TEST(onnx_editor, values__append_one_initializer) -{ - onnx_import::ONNXModelEditor editor{ - file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_1D.prototxt")}; - std::map> in_vals; - - in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {1, 2})); - editor.set_input_values(in_vals); - - const auto function = onnx_import::import_onnx_model(editor); - auto test_case = test::TestCase(function); - test_case.add_input(Shape{2}, {5, 6}); - test_case.add_expected_output(Shape{2}, {6, 8}); - test_case.run(); -} - -NGRAPH_TEST(onnx_editor, values__append_two_initializers_to_invalid) -{ - onnx_import::ONNXModelEditor editor{ - file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_1D_invalid.prototxt")}; - std::map> in_vals; - - in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {4, 2})); - in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {1, 3})); - editor.set_input_values(in_vals); - - const auto function = onnx_import::import_onnx_model(editor); - auto test_case = test::TestCase(function); - test_case.add_expected_output(Shape{2}, {5, 5}); - test_case.run(); -} - -NGRAPH_TEST(onnx_editor, values__modify_one_initializer) -{ - onnx_import::ONNXModelEditor editor{file_util::path_join( - SERIALIZED_ZOO, "onnx/model_editor/add_1D_with_initializers.prototxt")}; - std::map> in_vals; - - in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {3, 4})); - editor.set_input_values(in_vals); - - const auto function = onnx_import::import_onnx_model(editor); - auto test_case = test::TestCase(function); - test_case.add_expected_output(Shape{2}, {4, 6}); - test_case.run(); -} - -NGRAPH_TEST(onnx_editor, values__modify_two_initializers) -{ - onnx_import::ONNXModelEditor editor{file_util::path_join( - SERIALIZED_ZOO, "onnx/model_editor/add_1D_with_initializers.prototxt")}; - std::map> in_vals; - - in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {3, 6})); - in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {2, 1})); - editor.set_input_values(in_vals); - - const auto function = onnx_import::import_onnx_model(editor); - auto test_case = test::TestCase(function); - test_case.add_expected_output(Shape{2}, {5, 7}); - test_case.run(); -} - -NGRAPH_TEST(onnx_editor, values__no_inputs_modify_two_initializers) -{ - onnx_import::ONNXModelEditor editor{file_util::path_join( - SERIALIZED_ZOO, "onnx/model_editor/add_1D_with_initializers_only.prototxt")}; - std::map> in_vals; - - in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {1, 2})); - in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {11, 22})); - editor.set_input_values(in_vals); - - const auto function = onnx_import::import_onnx_model(editor); - auto test_case = test::TestCase(function); - test_case.add_expected_output(Shape{2}, {12, 24}); - test_case.run(); -} - -NGRAPH_TEST(onnx_editor, values__append_two_initializers_change_shape_type) -{ - onnx_import::ONNXModelEditor editor{ - file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_1D.prototxt")}; - std::map> in_vals; - - in_vals.emplace("A", op::Constant::create(element::i8, Shape{2, 1}, {-1, 1})); - in_vals.emplace("B", op::Constant::create(element::i8, Shape{2, 1}, {-2, 2})); - editor.set_input_values(in_vals); - - const auto function = onnx_import::import_onnx_model(editor); - auto test_case = test::TestCase(function); - test_case.add_expected_output(Shape{2, 1}, {-3, 3}); - test_case.run(); -} - -NGRAPH_TEST(onnx_editor, values__append_two_initializers_mixed_types) -{ - onnx_import::ONNXModelEditor editor{ - file_util::path_join(SERIALIZED_ZOO, "onnx/gather_elements_float_3D_axis_2.prototxt")}; - std::map> in_vals; - - in_vals.emplace("data", - op::Constant::create(element::i16, Shape{2, 2, 2}, {1, 2, 3, 4, 5, 6, 7, 8})); - in_vals.emplace("indices", op::Constant::create(element::i32, Shape{2, 2, 1}, {0, 1, 0, 1})); - editor.set_input_values(in_vals); - - const auto function = onnx_import::import_onnx_model(editor); - auto test_case = test::TestCase(function); - test_case.add_expected_output(Shape{2, 2, 1}, {1, 4, 5, 8}); - test_case.run(); -} - NGRAPH_TEST(onnx_editor, subgraph__linear_model_head_cut) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt")}; editor.cut_graph_fragment({{InputEdge(1, "conv1/7x7_s2_1")}}, {}); @@ -422,7 +309,7 @@ NGRAPH_TEST(onnx_editor, subgraph__linear_model_head_cut) NGRAPH_TEST(onnx_editor, subgraph__linear_model_head_cut_ins_and_outs) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt")}; editor.cut_graph_fragment({{InputEdge(1, "conv1/7x7_s2_1")}}, @@ -439,7 +326,7 @@ NGRAPH_TEST(onnx_editor, subgraph__linear_model_head_cut_ins_and_outs) NGRAPH_TEST(onnx_editor, subgraph__linear_model_deeper_head_cut) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt")}; editor.cut_graph_fragment({{InputEdge(2, "conv1/7x7_s2_2")}}, {}); @@ -455,7 +342,7 @@ NGRAPH_TEST(onnx_editor, subgraph__linear_model_deeper_head_cut) NGRAPH_TEST(onnx_editor, subgraph__linear_model_tail_cut) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt")}; editor.cut_graph_fragment({}, {{OutputEdge{1, "conv1/7x7_s2_2"}}}); @@ -470,7 +357,7 @@ NGRAPH_TEST(onnx_editor, subgraph__linear_model_tail_cut) NGRAPH_TEST(onnx_editor, subgraph__linear_model_tail_cut_ins_and_outs) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt")}; editor.cut_graph_fragment({{InputEdge{0, "data_0"}}}, {{OutputEdge{1, "conv1/7x7_s2_2"}}}); @@ -486,7 +373,7 @@ NGRAPH_TEST(onnx_editor, subgraph__linear_model_tail_cut_ins_and_outs) NGRAPH_TEST(onnx_editor, subgraph__linear_model_with_initializer_tail_cut) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head_with_initializer.prototxt")}; editor.cut_graph_fragment({}, {{OutputEdge{1, "conv1/7x7_s2_2"}}}); @@ -502,7 +389,7 @@ NGRAPH_TEST(onnx_editor, subgraph__linear_model_with_initializer_tail_cut) NGRAPH_TEST(onnx_editor, subgraph__initializer_without_matching_input_tail_cut) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__initializer_without_matching_input.prototxt")}; editor.cut_graph_fragment({}, {{OutputEdge{1, "conv1/7x7_s2_2"}}}); @@ -519,7 +406,7 @@ NGRAPH_TEST(onnx_editor, subgraph__initializer_without_matching_input_tail_cut) NGRAPH_TEST(onnx_editor, subgraph__linear_model_deeper_tail_cut) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt")}; editor.cut_graph_fragment({}, {{OutputEdge{0, "conv1/7x7_s2_1"}}}); @@ -538,7 +425,7 @@ NGRAPH_TEST(onnx_editor, subgraph__no_input_params) const auto model_path = file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt"); - onnx_import::ONNXModelEditor editor{model_path}; + ONNXModelEditor editor{model_path}; editor.cut_graph_fragment({}, {}); @@ -549,7 +436,7 @@ NGRAPH_TEST(onnx_editor, subgraph__no_input_params) NGRAPH_TEST(onnx_editor, subgraph__initializer_to_input_replacement) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head_with_initializer.prototxt")}; editor.cut_graph_fragment({{InputEdge{0, "conv1/7x7_s2_b_0"}}}, @@ -566,7 +453,7 @@ NGRAPH_TEST(onnx_editor, subgraph__initializer_to_input_replacement) NGRAPH_TEST(onnx_editor, subgraph__initializer_to_input_replacement_2) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__initializer_without_matching_input.prototxt")}; editor.cut_graph_fragment({{InputEdge{0, "conv1/7x7_s2_b_0"}}}, @@ -583,7 +470,7 @@ NGRAPH_TEST(onnx_editor, subgraph__initializer_to_input_replacement_2) NGRAPH_TEST(onnx_editor, subgraph__multiout_op_output_edge) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests.prototxt")}; editor.cut_graph_fragment({}, {{OutputEdge{5, "split2"}}}); @@ -598,7 +485,7 @@ NGRAPH_TEST(onnx_editor, subgraph__multiout_op_output_edge) NGRAPH_TEST(onnx_editor, subgraph__existing_inputs_and_outputs_based_extraction) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests.prototxt")}; editor.cut_graph_fragment({{InputEdge{1, "in2"}, InputEdge{2, "in3"}}}, @@ -616,7 +503,7 @@ NGRAPH_TEST(onnx_editor, subgraph__existing_inputs_and_outputs_based_extraction) NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumers) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests.prototxt")}; editor.cut_graph_fragment({{InputEdge{1, "relu1"}, InputEdge{6, "relu1"}}}, @@ -634,7 +521,7 @@ NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumer NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumers_2) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests.prototxt")}; editor.cut_graph_fragment({{InputEdge{3, "relu1"}, InputEdge{3, "add1"}}}, @@ -652,7 +539,7 @@ NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumer NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumers_3) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests.prototxt")}; editor.cut_graph_fragment({{InputEdge{3, "relu1"}, InputEdge{6, "relu1"}}}, @@ -670,7 +557,7 @@ NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumer NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumers_4) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests.prototxt")}; editor.cut_graph_fragment({{InputEdge{3, "relu1"}}}, @@ -689,7 +576,7 @@ NGRAPH_TEST(onnx_editor, subgraph__input_edge_from_tensor_with_multiple_consumer NGRAPH_TEST(onnx_editor, subgraph__multiple_consumers_of_graph_input_relu2) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests_2.prototxt")}; editor.cut_graph_fragment({{InputEdge{4, "relu2"}}}, {}); @@ -706,7 +593,7 @@ NGRAPH_TEST(onnx_editor, subgraph__multiple_consumers_of_graph_input_relu2) NGRAPH_TEST(onnx_editor, subgraph__multiple_consumers_of_graph_initializer) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests_2.prototxt")}; editor.cut_graph_fragment({{InputEdge{2, "in2"}}}, {}); @@ -723,7 +610,7 @@ NGRAPH_TEST(onnx_editor, subgraph__multiple_consumers_of_graph_initializer) NGRAPH_TEST(onnx_editor, subgraph__multiple_consumers_of_graph_initializer_2) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests_2.prototxt")}; editor.cut_graph_fragment({{InputEdge{2, "in2"}, InputEdge{3, "in2"}}}, {}); @@ -741,7 +628,7 @@ NGRAPH_TEST(onnx_editor, subgraph__multiple_consumers_of_graph_initializer_2) NGRAPH_TEST(onnx_editor, subgraph__multiple_consumers_of_graph_initializer_relu2_and_init) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph_extraction_tests_2.prototxt")}; editor.cut_graph_fragment({{InputEdge{5, "relu2"}, InputEdge{3, "in2"}}}, {}); @@ -761,7 +648,7 @@ NGRAPH_TEST(onnx_editor, subgraph__invalid_edge_idx) const auto model_path = file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt"); - onnx_import::ONNXModelEditor editor{model_path}; + ONNXModelEditor editor{model_path}; EXPECT_THROW(editor.cut_graph_fragment({{InputEdge{15, "x"}}}, {}), ngraph::ngraph_error); } @@ -771,14 +658,14 @@ NGRAPH_TEST(onnx_editor, subgraph__invalid_edge_name) const auto model_path = file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt"); - onnx_import::ONNXModelEditor editor{model_path}; + ONNXModelEditor editor{model_path}; EXPECT_THROW(editor.cut_graph_fragment({{InputEdge{0, "x"}}}, {}), ngraph::ngraph_error); } NGRAPH_TEST(onnx_editor, subgraph__inputs_getter) { - onnx_import::ONNXModelEditor editor{file_util::path_join( + ONNXModelEditor editor{file_util::path_join( SERIALIZED_ZOO, "onnx/model_editor/subgraph__inception_head.prototxt")}; EXPECT_EQ(editor.model_inputs(), @@ -788,3 +675,124 @@ NGRAPH_TEST(onnx_editor, subgraph__inputs_getter) EXPECT_EQ(editor.model_inputs(), (std::vector{"conv1/7x7_s2_2:conv1/7x7_s2_1"})); } + +using TestEngine = test::INTERPRETER_Engine; + +NGRAPH_TEST(onnx_editor, values__append_one_initializer) +{ + onnx_editor::ONNXModelEditor editor{ + file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_1D.prototxt")}; + std::map> in_vals; + + in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {1, 2})); + editor.set_input_values(in_vals); + + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); + auto test_case = test::TestCase(function); + test_case.add_input(Shape{2}, {5, 6}); + test_case.add_expected_output(Shape{2}, {6, 8}); + test_case.run(); +} + +NGRAPH_TEST(onnx_editor, values__append_two_initializers_to_invalid) +{ + onnx_editor::ONNXModelEditor editor{ + file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_1D_invalid.prototxt")}; + std::map> in_vals; + + in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {4, 2})); + in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {1, 3})); + editor.set_input_values(in_vals); + + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); + auto test_case = test::TestCase(function); + test_case.add_expected_output(Shape{2}, {5, 5}); + test_case.run(); +} + +NGRAPH_TEST(onnx_editor, values__modify_one_initializer) +{ + onnx_editor::ONNXModelEditor editor{file_util::path_join( + SERIALIZED_ZOO, "onnx/model_editor/add_1D_with_initializers.prototxt")}; + std::map> in_vals; + + in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {3, 4})); + editor.set_input_values(in_vals); + + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); + auto test_case = test::TestCase(function); + test_case.add_expected_output(Shape{2}, {4, 6}); + test_case.run(); +} + +NGRAPH_TEST(onnx_editor, values__modify_two_initializers) +{ + onnx_editor::ONNXModelEditor editor{file_util::path_join( + SERIALIZED_ZOO, "onnx/model_editor/add_1D_with_initializers.prototxt")}; + std::map> in_vals; + + in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {3, 6})); + in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {2, 1})); + editor.set_input_values(in_vals); + + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); + auto test_case = test::TestCase(function); + test_case.add_expected_output(Shape{2}, {5, 7}); + test_case.run(); +} + +NGRAPH_TEST(onnx_editor, values__no_inputs_modify_two_initializers) +{ + onnx_editor::ONNXModelEditor editor{file_util::path_join( + SERIALIZED_ZOO, "onnx/model_editor/add_1D_with_initializers_only.prototxt")}; + std::map> in_vals; + + in_vals.emplace("A", op::Constant::create(element::i64, Shape{2}, {1, 2})); + in_vals.emplace("B", op::Constant::create(element::i64, Shape{2}, {11, 22})); + editor.set_input_values(in_vals); + + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); + auto test_case = test::TestCase(function); + test_case.add_expected_output(Shape{2}, {12, 24}); + test_case.run(); +} + +NGRAPH_TEST(onnx_editor, values__append_two_initializers_change_shape_type) +{ + onnx_editor::ONNXModelEditor editor{ + file_util::path_join(SERIALIZED_ZOO, "onnx/model_editor/add_1D.prototxt")}; + std::map> in_vals; + + in_vals.emplace("A", op::Constant::create(element::i8, Shape{2, 1}, {-1, 1})); + in_vals.emplace("B", op::Constant::create(element::i8, Shape{2, 1}, {-2, 2})); + editor.set_input_values(in_vals); + + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); + auto test_case = test::TestCase(function); + test_case.add_expected_output(Shape{2, 1}, {-3, 3}); + test_case.run(); +} + +NGRAPH_TEST(onnx_editor, values__append_two_initializers_mixed_types) +{ + onnx_editor::ONNXModelEditor editor{ + file_util::path_join(SERIALIZED_ZOO, "onnx/gather_elements_float_3D_axis_2.prototxt")}; + std::map> in_vals; + + in_vals.emplace("data", + op::Constant::create(element::i16, Shape{2, 2, 2}, {1, 2, 3, 4, 5, 6, 7, 8})); + in_vals.emplace("indices", op::Constant::create(element::i32, Shape{2, 2, 1}, {0, 1, 0, 1})); + editor.set_input_values(in_vals); + + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); + auto test_case = test::TestCase(function); + test_case.add_expected_output(Shape{2, 2, 1}, {1, 4, 5, 8}); + test_case.run(); +} diff --git a/ngraph/test/onnx/onnx_import.in.cpp b/ngraph/test/onnx/onnx_import.in.cpp index de8abb7b56040b..e7cf0c0b752e11 100644 --- a/ngraph/test/onnx/onnx_import.in.cpp +++ b/ngraph/test/onnx/onnx_import.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -50,6 +38,7 @@ #include "util/engine/test_engines.hpp" #include "util/test_tools.hpp" #include "util/type_prop.hpp" +#include NGRAPH_SUPPRESS_DEPRECATED_START @@ -115,10 +104,10 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_node_names_check) [](std::shared_ptr op) { return std::string(op->get_type_name()) == "Add"; }); EXPECT_EQ(additions.size(), 2); - EXPECT_EQ(additions.at(0)->get_friendly_name(), "add_node1"); + EXPECT_EQ(additions.at(0)->get_friendly_name(), "X"); EXPECT_EQ(additions.at(0)->get_output_tensor(0).get_names(), std::unordered_set{"X"}); - EXPECT_EQ(additions.at(1)->get_friendly_name(), "add_node2"); + EXPECT_EQ(additions.at(1)->get_friendly_name(), "Y"); EXPECT_EQ(additions.at(1)->get_output_tensor(0).get_names(), std::unordered_set{"Y"}); } @@ -2791,7 +2780,7 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_erf_int32) const std::vector> inputs{ {-std::numeric_limits::max(), -1, 0, 1, std::numeric_limits::max()}}; - const std::vector expected_output{-1, 0, 0, 0, 1}; + const std::vector expected_output{-1, -1, 0, 1, 1}; auto test_case = test::TestCase(function); test_case.add_multiple_inputs(inputs); @@ -2885,6 +2874,26 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_lp_norm_default) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_lp_norm_default_dynamic) +{ + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/lp_norm_default_dynamic.prototxt")); + + Shape data_shape{2, 3, 4}; + std::vector data(shape_size(data_shape)); + std::iota(std::begin(data), std::end(data), 1); + + auto test_case = test::TestCase(function); + test_case.add_input(data_shape, data); + test_case.add_expected_output( + data_shape, {0.18257418f, 0.36514837f, 0.5477225f, 0.73029673f, 0.37904903f, 0.45485884f, + 0.5306686f, 0.60647845f, 0.42616236f, 0.47351375f, 0.5208651f, 0.5682165f, + 0.4469492f, 0.48132992f, 0.51571065f, 0.5500913f, 0.45862272f, 0.48560053f, + 0.5125783f, 0.53955615f, 0.46609157f, 0.4882864f, 0.51048124f, 0.5326761f}); + + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_model_instance_normalization) { const auto function = onnx_import::import_onnx_model( @@ -2907,6 +2916,19 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_instance_normalization) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_instance_normalization_dynamic) +{ + auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/instance_norm_dynamic.prototxt")); + + auto test_case = test::TestCase(function); + std::vector input_data{1.f, 2.f, 3.f}; + test_case.add_input(Shape{1, 3, 1, 1}, input_data); + test_case.add_expected_output( + Shape{1, 3, 1, 1}, {0.3341970741748809814, 0.3321160078048706055, 0.3407136797904968262}); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_model_eye_like) { const auto function = onnx_import::import_onnx_model( @@ -3241,19 +3263,77 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_scatter_elements_import_only) EXPECT_EQ(count_ops_of_type(scatter_fn), 4); } -NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample8_import_only) +NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample6_nearest_infer) { + // clang-format off const auto function = onnx_import::import_onnx_model( - file_util::path_join(SERIALIZED_ZOO, "onnx/upsample8_nearest.prototxt")); + file_util::path_join(SERIALIZED_ZOO, "onnx/upsample6_nearest.prototxt")); + // height_scale: 2.0 + // width_scale: 3.0 + // mode: nearest + const Shape input_shape {1, 1, 2, 2}; + const Shape expected_output_shape{1, 1, 4, 6}; - // Input data shape (1, 1, 2, 2) - // Scales attribute values {1.0, 1.0, 2.0, 3.0} + auto test_case = test::TestCase(function); + test_case.add_input(input_shape, + { 1.f, 2.f, + 3.f, 4.f }); + test_case.add_expected_output(expected_output_shape, + { 1.f, 1.f, 1.f, 2.f, 2.f, 2.f, + 1.f, 1.f, 1.f, 2.f, 2.f, 2.f, + 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, + 3.f, 3.f, 3.f, 4.f, 4.f, 4.f }); + test_case.run(); + // clang-format on +} +NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample6_bilinear_infer) +{ + // clang-format off + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/upsample6_bilinear.prototxt")); + // height_scale: 2.0 + // width_scale: 3.0 + // mode: bilinear + const Shape input_shape {1, 1, 2, 2}; const Shape expected_output_shape{1, 1, 4, 6}; - EXPECT_EQ(function->get_output_size(), 1); - EXPECT_EQ(function->get_output_shape(0), expected_output_shape); - EXPECT_EQ(count_ops_of_type(function), 1); - EXPECT_EQ(count_ops_of_type(function), 2); + + auto test_case = test::TestCase(function); + test_case.add_input(input_shape, + { 1.f, 2.f, + 3.f, 4.f }); + test_case.add_expected_output(expected_output_shape, + { 1.f, 4.f/3, 5.f/3, 2.f, 2.f, 2.f, + 2.f, 7.f/3, 8.f/3, 3.f, 3.f, 3.f, + 3.f, 10.f/3, 11.f/3, 4.f, 4.f, 4.f, + 3.f, 10.f/3, 11.f/3, 4.f, 4.f, 4.f }); + test_case.run(); + // clang-format on +} + +NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample6_dynamic) +{ + // clang-format off + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/upsample6_dynamic.prototxt")); + // height_scale: 1.5 + // width_scale: 2.5 + // mode: nearest + // + // X ───╤══> Reshape ──R──> Upsample ──> Y + // S ───┘ + + auto test_case = test::TestCase(function); + + test_case.add_input(Shape {4}, // X + { 1.f, 2.f, 3.f, 4.f }); + test_case.add_input(Shape {4}, {1, 1, 2, 2}); // S + test_case.add_expected_output(Shape {1, 1, 3, 5}, // Y + { 1.f, 1.f, 1.f, 2.f, 2.f, + 1.f, 1.f, 1.f, 2.f, 2.f, + 3.f, 3.f, 3.f, 4.f, 4.f }); + test_case.run(); + // clang-format on } NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample8_nearest_infer) @@ -3292,20 +3372,6 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample8_linear_infer) test_case.run(); } -NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample9_scales_const_import_only) -{ - const auto function = onnx_import::import_onnx_model( - file_util::path_join(SERIALIZED_ZOO, "onnx/upsample9_scales_const_nearest.prototxt")); - - // Input data shape (1, 1, 2, 2) - // Input const scales values {1.0, 1.0, 2.0, 3.0} - const Shape expected_output_shape{1, 1, 4, 6}; - EXPECT_EQ(function->get_output_size(), 1); - EXPECT_EQ(function->get_output_shape(0), expected_output_shape); - EXPECT_EQ(count_ops_of_type(function), 1); - EXPECT_EQ(count_ops_of_type(function), 2); -} - NGRAPH_TEST(${BACKEND_NAME}, onnx_upsample9_scales_const_nearest_infer) { const auto function = onnx_import::import_onnx_model( @@ -3546,6 +3612,18 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_logsoftmax13_2D) test_case.run_with_tolerance_as_fp(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_logsoftmax13_2D_reshape) +{ + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/logsoftmax13_2D.prototxt")); + InferenceEngine::CNNNetwork net(function); + InferenceEngine::ICNNNetwork::InputShapes shapes = {}; + InferenceEngine::SizeVector shape = {1, 1, 4000}; + shapes[net.getInputsInfo().begin()->first] = shape; + EXPECT_NO_THROW(net.reshape(shapes)); + ASSERT_EQ(shape, net.getOutputsInfo().begin()->second->getDims()); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_model_hard_sigmoid) { auto function = onnx_import::import_onnx_model( @@ -3589,6 +3667,21 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_mul_v6_broadcast_axis_1) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_mul_v6_broadcast_axes_1_2) +{ + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/mul_v6_broadcast_axes_1_2.prototxt")); + auto test_case = test::TestCase(function); + + Shape shape{1, 3, 2, 2}; + std::vector A(shape_size(shape), -1.f); + test_case.add_input(A); + test_case.add_input({3.f, 4.f, 5.f, 6.f, 7.f, 8.f}); + test_case.add_expected_output( + shape, {-3.f, -3.f, -4.f, -4.f, -5.f, -5.f, -6.f, -6.f, -7.f, -7.f, -8.f, -8.f}); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_model_mul_v6_broadcast_no_axis) { const auto function = onnx_import::import_onnx_model( @@ -3647,6 +3740,21 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_add_v6_broadcast_axis_1) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_add_v6_broadcast_axes_1_2) +{ + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/add_v6_broadcast_axes_1_2.prototxt")); + auto test_case = test::TestCase(function); + + Shape shape{1, 3, 2, 2}; + std::vector A(shape_size(shape), 0.f); + test_case.add_input(A); + test_case.add_input({3.f, 4.f, 5.f, 6.f, 7.f, 8.f}); + test_case.add_expected_output( + shape, {3.f, 3.f, 4.f, 4.f, 5.f, 5.f, 6.f, 6.f, 7.f, 7.f, 8.f, 8.f}); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_model_add_v6_broadcast_no_axis) { const auto function = onnx_import::import_onnx_model( @@ -3690,6 +3798,21 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_sub_v6_broadcast_axis_1) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_sub_v6_broadcast_axes_1_2) +{ + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/sub_v6_broadcast_axes_1_2.prototxt")); + auto test_case = test::TestCase(function); + + Shape shape{1, 3, 2, 2}; + std::vector A(shape_size(shape), 0.f); + test_case.add_input(A); + test_case.add_input({3.f, 4.f, 5.f, 6.f, 7.f, 8.f}); + test_case.add_expected_output( + shape, {-3.f, -3.f, -4.f, -4.f, -5.f, -5.f, -6.f, -6.f, -7.f, -7.f, -8.f, -8.f}); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_model_sub_v6_broadcast_no_axis) { const auto function = onnx_import::import_onnx_model( @@ -3749,6 +3872,22 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_div_v6_broadcast_axis_1) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_div_v6_broadcast_axes_1_2) +{ + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/div_v6_broadcast_axes_1_2.prototxt")); + auto test_case = test::TestCase(function); + + Shape shape{1, 3, 2, 2}; + std::vector A(shape_size(shape), 840.f); + test_case.add_input(A); + test_case.add_input({3.f, 4.f, 5.f, 6.f, 7.f, 8.f}); + test_case.add_expected_output( + shape, + {280.f, 280.f, 210.f, 210.f, 168.f, 168.f, 140.f, 140.f, 120.f, 120.f, 105.f, 105.f}); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_model_div_v6_broadcast_no_axis) { const auto function = onnx_import::import_onnx_model( @@ -3949,3 +4088,70 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_dropout12_not_const_training_mode) FAIL() << "Expected ngraph_error exception was not thrown"; } } + +NGRAPH_TEST(${BACKEND_NAME}, onnx_multiple_slices_last_layer) +{ + std::vector data(1 * 30 * 320 * 320); + std::fill(data.begin(), data.end(), 1); + + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/multiple_slices_last_layer.prototxt")); + auto test_case = test::TestCase(function); + std::vector o1(1 * 320 * 320 * 21); + std::fill(o1.begin(), o1.end(), 1); + + std::vector o2(1 * 320 * 320 * 9); + std::fill(o2.begin(), o2.end(), 1); + + test_case.add_input(data); + test_case.add_expected_output(Shape{1, 320, 320, 21}, o1); + test_case.add_expected_output(Shape{1, 320, 320, 9}, o2); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, onnx_softmax_crossentropy_loss_mean) +{ + auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/softmax_crossentropy_loss_mean.prototxt")); + + auto test_case = test::TestCase(function); + test_case.add_input({0.54881352186203, + 0.7151893377304077, + 0.6027633547782898, + 0.5448831915855408, + 0.42365479469299316, + 0.6458941102027893, + 0.4375872015953064, + 0.891772985458374, + 0.9636627435684204, + 0.3834415078163147, + 0.7917250394821167, + 0.5288949012756348, + 0.5680445432662964, + 0.9255966544151306, + 0.07103605568408966}); + test_case.add_input({1, 4, 3}); + test_case.add_expected_output(Shape{}, {1.561384797096252441}); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, onnx_negativelog_likelihood_loss) +{ + auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/negativelog_likelihood_loss.prototxt")); + + auto test_case = test::TestCase(function); + test_case.add_input({ + 0.54881352186203, 0.7151893377304077, 0.6027633547782898, 0.5448831915855408, + 0.42365479469299316, 0.6458941102027893, 0.4375872015953064, 0.891772985458374, + 0.9636627435684204, 0.3834415078163147, 0.7917250394821167, 0.5288949012756348, + 0.5680445432662964, 0.9255966544151306, 0.07103605568408966, 0.08712930232286453, + 0.020218396559357643, 0.832619845867157, 0.7781567573547363, 0.8700121641159058, + 0.978618323802948, 0.7991585731506348, 0.4614793658256531, 0.7805292010307312, + 0.11827442795038223, 0.6399210095405579, 0.14335328340530396, 0.9446688890457153, + 0.5218483209609985, 0.4146619439125061, + }); + test_case.add_input({3, 3, 2, 4, 2, 0}); + test_case.add_expected_output(Shape{}, {-0.531306922435760498}); + test_case.run(); +} diff --git a/ngraph/test/onnx/onnx_import_const_folding.in.cpp b/ngraph/test/onnx/onnx_import_const_folding.in.cpp index 10ed7ef6252954..473c98b2834fe3 100644 --- a/ngraph/test/onnx/onnx_import_const_folding.in.cpp +++ b/ngraph/test/onnx/onnx_import_const_folding.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/onnx/onnx_import_controlflow.in.cpp b/ngraph/test/onnx/onnx_import_controlflow.in.cpp index 4235501b5d3c04..fa97cd42176fb9 100644 --- a/ngraph/test/onnx/onnx_import_controlflow.in.cpp +++ b/ngraph/test/onnx/onnx_import_controlflow.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "gtest/gtest.h" diff --git a/ngraph/test/onnx/onnx_import_convpool.in.cpp b/ngraph/test/onnx/onnx_import_convpool.in.cpp index 1d0b7ed2451fa5..9c0057d4b5073d 100644 --- a/ngraph/test/onnx/onnx_import_convpool.in.cpp +++ b/ngraph/test/onnx/onnx_import_convpool.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/onnx/onnx_import_dyn_shapes.in.cpp b/ngraph/test/onnx/onnx_import_dyn_shapes.in.cpp index 10a9882e2f679d..1c679e6813b368 100644 --- a/ngraph/test/onnx/onnx_import_dyn_shapes.in.cpp +++ b/ngraph/test/onnx/onnx_import_dyn_shapes.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // clang-format off #ifdef ${BACKEND_NAME}_FLOAT_TOLERANCE_BITS @@ -290,6 +278,29 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_dyn_shapes_model_conv_with_dynamic_batch) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_dyn_shapes_model_conv_with_dynamic_bias) +{ + const auto function = onnx_import::import_onnx_model(file_util::path_join( + SERIALIZED_ZOO, "onnx/dynamic_shapes/conv_with_dynamic_bias.prototxt")); + + auto test_case = test::TestCase(function); + + const auto data_shape = Shape{1, 3, 7, 7}; + const auto filters_shape = Shape{10, 3, 2, 2}; + const auto data_elems = shape_size(data_shape); + const auto filters_elems = shape_size(filters_shape); + + test_case.add_input(data_shape, std::vector(data_elems, 1)); + test_case.add_input(filters_shape, std::vector(filters_elems, 1)); + test_case.add_input(Shape{10}, std::vector(10, 1)); + + const auto expected_out_shape = Shape{1, 10, 6, 6}; + const std::vector expected_values(shape_size(expected_out_shape), 13); + test_case.add_expected_output(expected_out_shape, expected_values); + + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_dyn_shapes_avg_pool_dyn_shape) { const auto function = onnx_import::import_onnx_model( @@ -1337,3 +1348,40 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_max_pool_dyn_rank_without_default_attrs) test_case.add_expected_output(Shape{1, 1, 3, 3}, {5, 6, 7, 9, 10, 11, 13, 14, 15}); test_case.run(); } + +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_depth_to_space_dynamic_input) +{ + auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/dynamic_shapes/depth_to_space.prototxt")); + + std::vector input(32); + std::iota(input.begin(), input.end(), 0); + + std::vector expected_output{ + 0.f, 8.f, 1.f, 9.f, 16.f, 24.f, 17.f, 25.f, 2.f, 10.f, 3.f, 11.f, 18.f, 26.f, 19.f, 27.f, + 4.f, 12.f, 5.f, 13.f, 20.f, 28.f, 21.f, 29.f, 6.f, 14.f, 7.f, 15.f, 22.f, 30.f, 23.f, 31.f}; + + auto test_case = test::TestCase(function); + test_case.add_input(Shape{1, 8, 2, 2}, input); + test_case.add_expected_output(Shape{1, 2, 4, 4}, expected_output); + test_case.run(); +} + +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_space_to_depth_dynamic_input) +{ + auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/dynamic_shapes/space_to_depth.prototxt")); + + std::vector input(32); + std::iota(input.begin(), input.end(), 0); + + std::vector expected_output{ + 0.f, 2.f, 8.f, 10.f, 16.f, 18.f, 24.f, 26.f, 1.f, 3.f, 9.f, 11.f, 17.f, 19.f, 25.f, 27.f, + 4.f, 6.f, 12.f, 14.f, 20.f, 22.f, 28.f, 30.f, 5.f, 7.f, 13.f, 15.f, 21.f, 23.f, 29.f, 31.f, + }; + + auto test_case = test::TestCase(function); + test_case.add_input(Shape{1, 2, 4, 4}, input); + test_case.add_expected_output(Shape{1, 8, 2, 2}, expected_output); + test_case.run(); +} diff --git a/ngraph/test/onnx/onnx_import_exceptions.cpp b/ngraph/test/onnx/onnx_import_exceptions.cpp index 8dacea78394a7a..80f530362c0875 100644 --- a/ngraph/test/onnx/onnx_import_exceptions.cpp +++ b/ngraph/test/onnx/onnx_import_exceptions.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/onnx/onnx_import_external_data.in.cpp b/ngraph/test/onnx/onnx_import_external_data.in.cpp index d8e91a1673c54d..6d318ca0436f7d 100644 --- a/ngraph/test/onnx/onnx_import_external_data.in.cpp +++ b/ngraph/test/onnx/onnx_import_external_data.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "gtest/gtest.h" diff --git a/ngraph/test/onnx/onnx_import_library.cpp b/ngraph/test/onnx/onnx_import_library.cpp index 643a584ce68c74..14e81d3d7b36cf 100644 --- a/ngraph/test/onnx/onnx_import_library.cpp +++ b/ngraph/test/onnx/onnx_import_library.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/onnx/onnx_import_org_openvino.in.cpp b/ngraph/test/onnx/onnx_import_org_openvino.in.cpp index be025c982786c2..3407ad8e956bda 100644 --- a/ngraph/test/onnx/onnx_import_org_openvino.in.cpp +++ b/ngraph/test/onnx/onnx_import_org_openvino.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -233,6 +221,29 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_group_norm) test_case.run(); } +NGRAPH_TEST(${BACKEND_NAME}, onnx_group_norm_5d) +{ + const auto function = onnx_import::import_onnx_model( + file_util::path_join(SERIALIZED_ZOO, "onnx/group_norm_5d.prototxt")); + auto test_case = test::TestCase(function); + Shape shape{2, 8, 1, 2, 1}; + int size = shape_size(shape); + std::vector data(size); + std::iota(data.begin(), data.end(), 0); + std::vector output = {-0.34163546562, 0.55278813838, 2.89442372322, 4.68327093124, + -1.02490639686, 1.65836453437, 5.78884744644, 9.36654186248, + -1.70817732810, 2.76394081115, 8.68327140808, 14.04981231689, + -2.39144825935, 3.86951708793, 11.57769489288, 18.73308372497, + -0.34163546562, 0.55278813838, 2.89442372322, 4.68327093124, + -1.02490639686, 1.65836453437, 5.78884744644, 9.36654186248, + -1.70817732810, 2.76394081115, 8.68327140808, 14.04981231689, + -2.39144825935, 3.86951708793, 11.57769489288, 18.73308372497}; + + test_case.add_input(data); + test_case.add_expected_output(shape, output); + test_case.run(); +} + NGRAPH_TEST(${BACKEND_NAME}, onnx_normalize) { const auto function = onnx_import::import_onnx_model( @@ -408,14 +419,6 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_experimental_detectron_generate_proposal // im_info test_case.add_input({1.0f, 1.0f, 1.0f}); // anchors - test_case.add_input({ - 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - }); - // deltas test_case.add_input( {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, @@ -431,27 +434,33 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_experimental_detectron_generate_proposal 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}); - // scores + // deltas test_case.add_input( - {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}); + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f}); + // scores + test_case.add_input({ + 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f, + }); test_case.add_expected_output( Shape{6, 4}, {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}); - test_case.add_expected_output(Shape{6}, {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}); + test_case.add_expected_output(Shape{6}, {8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}); test_case.run(); } @@ -526,42 +535,43 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_experimental_detectron_roi_feature_extra test_case.add_input(rois); test_case.add_input(pyramid_layer_0); - test_case.add_expected_output(Shape{2, 2, 3, 3}, {1.416666746139526367, - 1.750000119209289551, - 2.083333492279052734, - 2.416666746139526367, - 2.75, - 3.083333492279052734, - 3.166666507720947266, - 3.5, - 3.833333492279052734, - 7.416666507720947266, - 7.75, - 8.083333015441894531, - 8.416666984558105469, - 8.75, - 9.083333969116210938, - 9.166666030883789062, - 9.5, - 9.833333969116210938, - 4.166666984558105469, - 4.5, - 4.833333492279052734, - 4.166666984558105469, - 4.5, - 4.833333492279052734, - 2.083333492279052734, - 2.25, - 2.416666746139526367, - 10.16666603088378906, - 10.5, - 10.83333206176757812, - 10.16666603088378906, - 10.5, - 10.83333206176757812, - 5.083333015441894531, - 5.25, - 5.416666507720947266}); + test_case.add_expected_output(Shape{2, 2, 3, 3}, + {1.416666746139526367, + 1.750000119209289551, + 2.083333492279052734, + 2.416666746139526367, + 2.75, + 3.083333492279052734, + 3.166666507720947266, + 3.5, + 3.833333492279052734, + 7.416666507720947266, + 7.75, + 8.083333015441894531, + 8.416666984558105469, + 8.75, + 9.083333969116210938, + 9.166666030883789062, + 9.5, + 9.833333969116210938, + 4.166666984558105469, + 4.5, + 4.833333492279052734, + 4.166666984558105469, + 4.5, + 4.833333492279052734, + 2.083333492279052734, + 2.25, + 2.416666746139526367, + 10.16666603088378906, + 10.5, + 10.83333206176757812, + 10.16666603088378906, + 10.5, + 10.83333206176757812, + 5.083333015441894531, + 5.25, + 5.416666507720947266}); test_case.add_expected_output(Shape{2, 4}, {0, 1, 2, 3, 4, 5, 6, 7}); test_case.run(); @@ -580,3 +590,45 @@ NGRAPH_TEST(${BACKEND_NAME}, onnx_model_experimental_detectron_topk_rios) test_case.add_expected_output(Shape{1, 4}, {1, 1, 3, 4}); test_case.run(); } + +NGRAPH_TEST(${BACKEND_NAME}, onnx_model_deformable_conv_2d) +{ + auto function = onnx_import::import_onnx_model(file_util::path_join( + SERIALIZED_ZOO, "onnx/org.openvinotoolkit/deformable_conv_2d.prototxt")); + + auto test_case = test::TestCase(function); + + // data + test_case.add_input({1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}); + + // deformations + test_case.add_input({0.5f, -0.5f, 0.0f, 1.0f}); + + test_case.add_expected_output(Shape{1, 1, 3, 3}, + {4.5999999f, + 5.2000003f, + 6.4000001f, + 8.4000006f, + 9.8000002f, + 9.6999998f, + 11.5f, + 13.4000006f, + 14.3999996f}); + + test_case.run(); +} diff --git a/ngraph/test/onnx/onnx_import_provenance.in.cpp b/ngraph/test/onnx/onnx_import_provenance.in.cpp index 84536b95674db4..4934a4343e3f74 100644 --- a/ngraph/test/onnx/onnx_import_provenance.in.cpp +++ b/ngraph/test/onnx/onnx_import_provenance.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "default_opset.hpp" #include "gtest/gtest.h" diff --git a/ngraph/test/onnx/onnx_import_quant.in.cpp b/ngraph/test/onnx/onnx_import_quant.in.cpp index c53be73b02bbc4..bd34e85718b476 100644 --- a/ngraph/test/onnx/onnx_import_quant.in.cpp +++ b/ngraph/test/onnx/onnx_import_quant.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/onnx/onnx_import_reshape.in.cpp b/ngraph/test/onnx/onnx_import_reshape.in.cpp index 6ac40a2cb3a25c..68dfb23376740f 100644 --- a/ngraph/test/onnx/onnx_import_reshape.in.cpp +++ b/ngraph/test/onnx/onnx_import_reshape.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/onnx/onnx_import_rnn.in.cpp b/ngraph/test/onnx/onnx_import_rnn.in.cpp index 98ffb30578fd29..7d81f799ca4922 100644 --- a/ngraph/test/onnx/onnx_import_rnn.in.cpp +++ b/ngraph/test/onnx/onnx_import_rnn.in.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -851,11 +839,11 @@ NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_activations_con test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 5); } -NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_activations) +NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_activations_relu_hardsigmoid) { // activations: relu, hardsigmoid auto function = onnx_import::import_onnx_model( - file_util::path_join(SERIALIZED_ZOO, "onnx/gru_fwd_activations.prototxt")); + file_util::path_join(SERIALIZED_ZOO, "onnx/gru_fwd_activations_relu_hardsigmoid.prototxt")); auto test_case = test::TestCase(function); @@ -1839,7 +1827,7 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_activations_con 0.f, 0.f, }); - test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3); + test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 5); } NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_activations) @@ -1887,7 +1875,7 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_activations) 0.f, 0.f, }); - test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3); + test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 5); } NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_mixed_seq_len_const) @@ -1983,7 +1971,7 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_mixed_seq_len) -0.18203181f, 0.9996245f, }); - test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3); + test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 4); } NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_reverse_mixed_seq_len_const) diff --git a/ngraph/test/onnx/onnx_tensor_names.cpp b/ngraph/test/onnx/onnx_tensor_names.cpp index 6b31a42e7954af..e9a69187e8a8a0 100644 --- a/ngraph/test/onnx/onnx_tensor_names.cpp +++ b/ngraph/test/onnx/onnx_tensor_names.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -38,10 +26,10 @@ NGRAPH_TEST(onnx_tensor_names, simple_model) auto ops = function->get_ordered_ops(); ASSERT_EQ(ops[0]->get_friendly_name(), "input"); ASSERT_EQ(ops[0]->get_output_tensor(0).get_names(), std::unordered_set{"input"}); - ASSERT_EQ(ops[1]->get_friendly_name(), "relu"); + ASSERT_EQ(ops[1]->get_friendly_name(), "relu_t"); ASSERT_EQ(ops[1]->get_output_tensor(0).get_names(), std::unordered_set{"relu_t"}); // ops[2] is a constant created in the ONNX importer as part of Identity operator - ASSERT_EQ(ops[3]->get_friendly_name(), "ident"); + ASSERT_EQ(ops[3]->get_friendly_name(), "final_output"); ASSERT_EQ(ops[3]->get_output_tensor(0).get_names(), std::unordered_set{"final_output"}); ASSERT_EQ(ops[4]->get_friendly_name(), "final_output"); diff --git a/ngraph/test/onnx/onnx_test_utils.in.cpp b/ngraph/test/onnx/onnx_test_utils.in.cpp index a4e50b3efa7df5..00f24a6e4fb8c1 100644 --- a/ngraph/test/onnx/onnx_test_utils.in.cpp +++ b/ngraph/test/onnx/onnx_test_utils.in.cpp @@ -1,26 +1,15 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include +#include #include "gtest/gtest.h" #include "default_opset.hpp" #include "ngraph/file_util.hpp" #include "ngraph/op/util/op_types.hpp" -#include "onnx_import/editor/editor.hpp" +#include "onnx_editor/editor.hpp" #include "onnx_import/onnx.hpp" #include "util/test_control.hpp" @@ -47,12 +36,13 @@ TYPED_TEST_P(ElemTypesTests, onnx_test_add_abc_set_precission) using DataType = TypeParam; const element::Type ng_type = element::from(); - onnx_import::ONNXModelEditor editor{ + onnx_editor::ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/add_abc_3d.prototxt")}; editor.set_input_types({{"A", ng_type}, {"B", ng_type}, {"C", ng_type}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); auto test_case = test::TestCase(function); test_case.add_input(std::vector{1, 2, 3}); test_case.add_input(std::vector{4, 5, 6}); @@ -67,12 +57,13 @@ TYPED_TEST_P(ElemTypesTests, onnx_test_split_multioutput_set_precission) using DataType = TypeParam; const element::Type ng_type = element::from(); - onnx_import::ONNXModelEditor editor{ + onnx_editor::ONNXModelEditor editor{ file_util::path_join(SERIALIZED_ZOO, "onnx/split_equal_parts_default.prototxt")}; editor.set_input_types({{"input", ng_type}}); - const auto function = onnx_import::import_onnx_model(editor); + std::istringstream model_stream(editor.model_string()); + const auto function = onnx_import::import_onnx_model(model_stream); auto test_case = test::TestCase(function); test_case.add_input(std::vector{1, 2, 3, 4, 5, 6}); test_case.add_expected_output(Shape{2}, std::vector{1, 2}); diff --git a/ngraph/test/op.cpp b/ngraph/test/op.cpp index 8be0155b52334c..d8cfceb016717f 100644 --- a/ngraph/test/op.cpp +++ b/ngraph/test/op.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/binary_convolution.cpp b/ngraph/test/op_eval/binary_convolution.cpp new file mode 100644 index 00000000000000..dfc4d27530b633 --- /dev/null +++ b/ngraph/test/op_eval/binary_convolution.cpp @@ -0,0 +1,233 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "ngraph/runtime/tensor.hpp" +#include "runtime/backend.hpp" +#include "util/all_close.hpp" +#include "util/all_close_f.hpp" +#include "util/test_control.hpp" + +using namespace std; +using namespace ngraph; + +static string s_manifest = "${MANIFEST}"; + +template +static void BinaryConvolutionTest(const std::vector& inputs, + const Shape inputs_shape, + const std::vector& filters, + const Shape filters_shape, + const std::vector& outputs, + const Shape outputs_shape, + const Strides& strides, + const CoordinateDiff& padding, + const Strides& dilations) +{ + const CoordinateDiff pads_begin{padding}; + const CoordinateDiff pads_end{padding}; + const op::PadType auto_pad{op::PadType::EXPLICIT}; + float pad_value = 0; + + auto inputs_param = make_shared(element::from(), inputs_shape); + auto filters_const = make_shared(element::u1, filters_shape, &filters[0]); + auto bin_conv = make_shared( + inputs_param, + filters_const, + strides, + pads_begin, + pads_end, + dilations, + op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT, + pad_value, + auto_pad); + auto f = make_shared(bin_conv, ParameterVector{inputs_param}); + + auto backend = runtime::Backend::create("INTERPRETER"); + + auto input_tensor = backend->create_tensor(element::from(), inputs_shape); + copy_data(input_tensor, inputs); + auto result = backend->create_tensor(element::from(), outputs_shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {input_tensor}); + EXPECT_TRUE(test::all_close_f((outputs), read_vector(result), MIN_FLOAT_TOLERANCE_BITS)); +} + +template +static void ConvolutionTest(const std::vector& inputs, + const Shape inputs_shape, + const std::vector& filters, + const Shape filters_shape, + const std::vector& outputs, + const Shape outputs_shape, + const Strides& strides, + const CoordinateDiff& padding, + const Strides& dilations) +{ + const CoordinateDiff pads_begin{padding}; + const CoordinateDiff pads_end{padding}; + const op::PadType auto_pad{op::PadType::EXPLICIT}; + + auto inputs_param = make_shared(element::from(), inputs_shape); + auto filters_param = make_shared(element::from(), filters_shape); + auto conv = make_shared( + inputs_param, filters_param, strides, pads_begin, pads_end, dilations, auto_pad); + auto f = make_shared(conv, ParameterVector{inputs_param, filters_param}); + + auto backend = runtime::Backend::create("INTERPRETER"); + + auto input_tensor = backend->create_tensor(element::from(), inputs_shape); + copy_data(input_tensor, inputs); + auto filters_tensor = backend->create_tensor(element::from(), filters_shape); + copy_data(filters_tensor, filters); + auto result = backend->create_tensor(element::from(), outputs_shape); + + auto handle = backend->compile(f); + handle->call_with_validate({result}, {input_tensor, filters_tensor}); + EXPECT_TRUE(test::all_close_f((outputs), read_vector(result), MIN_FLOAT_TOLERANCE_BITS)); +} + +// --------------------- 1D convolution ------------------------------------------ +TEST(op_eval, bin_convolution_1D_1batch_1channel_no_padding) +{ + const Strides strides{1}; + const CoordinateDiff padding{0}; + const Strides dilations{1}; + + const Shape inputs_shape{1, 1, 5}; + const std::vector inputs_conv{1.0f, -1.0f, -1.0f, 1.0f, -1.0f}; + const std::vector inputs_bin_conv{1.0f, 0.0f, 0.0f, 1.0f, 0.0f}; + + const Shape filters_shape{1, 1, 3}; + const std::vector filters_conv{1.0f, -1.0f, 1.0f}; + const std::vector filters_bin_conv{0xA0}; // 1010 0000 + + const Shape outputs_shape{1, 1, 3}; + const std::vector outputs{1.0f, 1.0f, -3.0f}; + + BinaryConvolutionTest(inputs_bin_conv, + inputs_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); + + ConvolutionTest(inputs_conv, + inputs_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); +} + +// --------------------- 3D convolution ------------------------------------------ +// clang-format off +NGRAPH_TEST(op_eval, bin_convolution_3D_1batch_1channel_no_padding) +{ + const Strides strides{1, 1, 1}; + const CoordinateDiff padding{0, 0, 0}; + const Strides dilations{1, 1, 1}; + + const Shape inputs_shape{1, 1, 4, 4, 4}; + const std::vector inputs_conv{ + // depth: 1 + 1.0f, -1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, -1.0f, + // depth: 2 + -1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, -1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, -1.0f, + // depth: 3 + 1.0f, 1.0f, 1.0f, -1.0f, + -1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, -1.0f, + // depth: 4 + 1.0f, -1.0f, 1.0f, -1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f + }; + const std::vector inputs_bin_conv{ + // depth: 1 + 1.0f, 0.0f, 0.0f, 1.0f, + 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 0.0f, + // depth: 2 + 0.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 0.0f, 0.0f, 1.0f, + 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 0.0f, + // depth: 3 + 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 0.0f, 1.0f, 0.0f, + // depth: 4 + 1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 0.0f, 1.0f, + 0.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 1.0f + }; + + const Shape filters_shape{1, 1, 3, 3, 3}; + const std::vector filters_conv{ + // depth: 1 + 1.0f, -1.0f, 1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, -1.0f, 1.0f, + // depth: 2 + -1.0f, 1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, + 1.0f, 1.0f, -1.0f, + // depth: 3 + 1.0f, 1.0f, -1.0f, + -1.0f, 1.0f, -1.0f, + 1.0f, 1.0f, 1.0f}; + const std::vector filters_bin_conv{0xAA, 0xBB, 0xB2, 0xE0}; + + const Shape outputs_shape{1, 1, 2, 2, 2}; + const std::vector outputs{ + // depth: 1 + 13.0f, 3.0f, + -3.0f, -3.0f, + // depth: 2 + -3.0f, 5.0f, + 11.0f, -3.0f}; + + BinaryConvolutionTest( + inputs_bin_conv, + inputs_shape, + filters_bin_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); + + ConvolutionTest( + inputs_conv, + inputs_shape, + filters_conv, + filters_shape, + outputs, + outputs_shape, + strides, + padding, + dilations); +} +// clang-format off diff --git a/ngraph/test/op_eval/bucketize.cpp b/ngraph/test/op_eval/bucketize.cpp index f925f3513d50d6..f0b68ba56a9c9a 100644 --- a/ngraph/test/op_eval/bucketize.cpp +++ b/ngraph/test/op_eval/bucketize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/op_eval/clamp.cpp b/ngraph/test/op_eval/clamp.cpp new file mode 100644 index 00000000000000..a48ab39f08131f --- /dev/null +++ b/ngraph/test/op_eval/clamp.cpp @@ -0,0 +1,402 @@ +//***************************************************************************** +// Copyright 2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "util/engine/interpreter_engine.hpp" +#include "util/engine/test_engines.hpp" +#include "util/test_case.hpp" +#include "util/test_control.hpp" + +using namespace std; +using namespace ngraph; + +static string s_manifest = "${MANIFEST}"; + +namespace +{ + template + void clamp_test(const element::Type& type, + const PartialShape& dynamic_shape, + const Shape& static_shape, + const std::vector& input, + double min, + double max, + const std::vector& output) + { + auto data = make_shared(type, dynamic_shape); + auto clamp = make_shared(data, min, max); + auto function = make_shared(clamp, ParameterVector{data}); + + auto test_case = test::TestCase(function); + test_case.template add_input(static_shape, input); + test_case.template add_expected_output(static_shape, output); + return test_case.run(); + } +} + +TEST(op_eval, clamp_float_dynamic) +{ + auto type = element::f32; + typedef float ctype; + + auto sshape = Shape{5, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; + + clamp_test( + type, + dshape, + sshape, + {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, + 0.2, + 0.6, + {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); + + clamp_test( + type, + dshape, + sshape, + input, + 10.0, + 20.0, + {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); + + clamp_test( + type, + dshape, + sshape, + input, + 10.0, + pinf, + {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); + + clamp_test( + type, + dshape, + sshape, + input, + ninf, + 20.0, + {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); +} + +TEST(op_eval, clamp_int8_dynamic) +{ + auto type = element::i8; + typedef int8_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_int16_dynamic) +{ + auto type = element::i16; + typedef int16_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_int32_dynamic) +{ + auto type = element::i32; + typedef int32_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_int64_dynamic) +{ + auto type = element::i64; + typedef int64_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_uint8_dynamic) +{ + auto type = element::u8; + typedef uint8_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_uint16_dynamic) +{ + auto type = element::u16; + typedef uint16_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + // dynamic shape + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_uint32_dynamic) +{ + auto type = element::u32; + typedef uint32_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (numeric_limits::digits - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_uint64_dynamic) +{ + auto type = element::u64; + typedef uint64_t ctype; + + auto sshape = Shape{4, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + // TODO: Fix CPU DEX / MLIR correctness bug: using signed comparison for unsigned ints + // auto max = numeric_limits::max(); + // auto pinf = numeric_limits::infinity(); + ctype max = (static_cast(1) << (32 - 1)) - 1; + auto pinf = static_cast(max); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, 9, 10, 11, 19, 20, 21}; + + clamp_test( + type, dshape, sshape, input, 10.0, 20.0, {10, 20, 10, 10, 11, 19, 20, 20}); + clamp_test( + type, dshape, sshape, input, 10.0, pinf, {10, max, 10, 10, 11, 19, 20, 21}); + clamp_test( + type, dshape, sshape, input, ninf, 20.0, {min, 20, 9, 10, 11, 19, 20, 20}); +} + +TEST(op_eval, clamp_float16_dynamic) +{ + auto type = element::f16; + typedef float16 ctype; + + auto sshape = Shape{5, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; + + clamp_test( + type, + dshape, + sshape, + {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, + 0.2, + 0.6, + {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); + + clamp_test( + type, + dshape, + sshape, + input, + 10.0, + 20.0, + {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); + + clamp_test( + type, + dshape, + sshape, + input, + 10.0, + pinf, + {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); + + clamp_test( + type, + dshape, + sshape, + input, + ninf, + 20.0, + {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); +} + +TEST(op_eval, clamp_bfloat16_dynamic) +{ + auto type = element::bf16; + typedef bfloat16 ctype; + + auto sshape = Shape{5, 2}; + auto dshape = PartialShape::dynamic(); + + auto min = numeric_limits::min(); + auto max = numeric_limits::max(); + auto pinf = numeric_limits::infinity(); + auto ninf = -numeric_limits::infinity(); + + vector input{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}; + + clamp_test( + type, + dshape, + sshape, + {-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, + 0.2, + 0.6, + {0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}); + + clamp_test( + type, + dshape, + sshape, + input, + 10.0, + 20.0, + {10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}); + + clamp_test( + type, + dshape, + sshape, + input, + 10.0, + pinf, + {10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}); + + clamp_test( + type, + dshape, + sshape, + input, + ninf, + 20.0, + {min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}); +} diff --git a/ngraph/test/op_eval/floor_mod.cpp b/ngraph/test/op_eval/floor_mod.cpp index 5524b4a53e1246..373c5e4ef05603 100644 --- a/ngraph/test/op_eval/floor_mod.cpp +++ b/ngraph/test/op_eval/floor_mod.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/gelu.cpp b/ngraph/test/op_eval/gelu.cpp new file mode 100644 index 00000000000000..aa253042d995da --- /dev/null +++ b/ngraph/test/op_eval/gelu.cpp @@ -0,0 +1,60 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "gtest/gtest.h" + +#include "ngraph/op/gelu.hpp" +#include "ngraph/runtime/host_tensor.hpp" +#include "ngraph/validation_util.hpp" +#include "util/test_tools.hpp" + +using namespace std; +using namespace ngraph; + +TEST(op_eval, gelu_tanh) +{ + auto p = make_shared(element::f32, Shape{}); + auto gelu = make_shared(p, op::GeluApproximationMode::TANH); + auto fun = make_shared(OutputVector{gelu}, ParameterVector{p}); + + std::vector> inputs{{-1.0}, {-0.5}, {0}, {0.5}, {1.0}}; + std::vector> expected_result{ + {-0.15880796}, {-0.154286}, {0}, {0.345714}, {0.841192}}; + + for (size_t i = 0; i < inputs.size(); i++) + { + auto result = make_shared(); + ASSERT_TRUE( + fun->evaluate({result}, {make_host_tensor(Shape{}, inputs[i])})); + EXPECT_EQ(result->get_element_type(), element::f32); + EXPECT_EQ(result->get_shape(), (Shape{})); + auto result_data = read_vector(result); + EXPECT_NEAR(result_data[0], expected_result[i][0], 0.000001); + } +} + +TEST(op_eval, gelu_erf) +{ + auto p = make_shared(element::f32, Shape{}); + auto gelu = make_shared(p, op::GeluApproximationMode::ERF); + auto fun = make_shared(OutputVector{gelu}, ParameterVector{p}); + + std::vector> inputs{{-1.0}, {-0.5}, {0}, {0.5}, {1.0}}; + std::vector> expected_result{ + {-0.15865529}, {-0.15426877}, {0}, {0.34573123}, {0.8413447}}; + + for (size_t i = 0; i < inputs.size(); i++) + { + auto result = make_shared(); + ASSERT_TRUE( + fun->evaluate({result}, {make_host_tensor(Shape{}, inputs[i])})); + EXPECT_EQ(result->get_element_type(), element::f32); + EXPECT_EQ(result->get_shape(), (Shape{})); + auto result_data = read_vector(result); + EXPECT_NEAR(result_data[0], expected_result[i][0], 0.000001); + } +} diff --git a/ngraph/test/op_eval/hsigmoid.cpp b/ngraph/test/op_eval/hsigmoid.cpp index cfbebceb6d79a3..a23e013fec6aa1 100644 --- a/ngraph/test/op_eval/hsigmoid.cpp +++ b/ngraph/test/op_eval/hsigmoid.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/hswish.cpp b/ngraph/test/op_eval/hswish.cpp index b30519554f84d5..f7d83889884d34 100644 --- a/ngraph/test/op_eval/hswish.cpp +++ b/ngraph/test/op_eval/hswish.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/interpolate.cpp b/ngraph/test/op_eval/interpolate.cpp index 72c3444e1d1dda..bb0d14a1e7148e 100644 --- a/ngraph/test/op_eval/interpolate.cpp +++ b/ngraph/test/op_eval/interpolate.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/matmul.cpp b/ngraph/test/op_eval/matmul.cpp index e0eb1f18d4637b..8d12dbe04c15a1 100644 --- a/ngraph/test/op_eval/matmul.cpp +++ b/ngraph/test/op_eval/matmul.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/mish.cpp b/ngraph/test/op_eval/mish.cpp index 67850796b1e61a..2f0acf74045dbd 100644 --- a/ngraph/test/op_eval/mish.cpp +++ b/ngraph/test/op_eval/mish.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/non_zero.cpp b/ngraph/test/op_eval/non_zero.cpp index 0039726cb94d1e..c83f93d7a3d2cc 100644 --- a/ngraph/test/op_eval/non_zero.cpp +++ b/ngraph/test/op_eval/non_zero.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/reduce_l1.cpp b/ngraph/test/op_eval/reduce_l1.cpp index b7edfb57357da5..2db944be1391cd 100644 --- a/ngraph/test/op_eval/reduce_l1.cpp +++ b/ngraph/test/op_eval/reduce_l1.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/reduce_l2.cpp b/ngraph/test/op_eval/reduce_l2.cpp index 9bbf3c6606e918..bc5c2172da54aa 100644 --- a/ngraph/test/op_eval/reduce_l2.cpp +++ b/ngraph/test/op_eval/reduce_l2.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/roi_align.cpp b/ngraph/test/op_eval/roi_align.cpp index 8472528efea89d..65609865b0ce4a 100644 --- a/ngraph/test/op_eval/roi_align.cpp +++ b/ngraph/test/op_eval/roi_align.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/roi_pooling.cpp b/ngraph/test/op_eval/roi_pooling.cpp index 97c9da79d2647c..608a0773acdda6 100644 --- a/ngraph/test/op_eval/roi_pooling.cpp +++ b/ngraph/test/op_eval/roi_pooling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/op_eval/round.cpp b/ngraph/test/op_eval/round.cpp index 0c85533892dbd0..dcadb4142b6002 100644 --- a/ngraph/test/op_eval/round.cpp +++ b/ngraph/test/op_eval/round.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/softplus.cpp b/ngraph/test/op_eval/softplus.cpp index 11c609f80b9f05..2c244a263456b6 100644 --- a/ngraph/test/op_eval/softplus.cpp +++ b/ngraph/test/op_eval/softplus.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/split.cpp b/ngraph/test/op_eval/split.cpp index f5d00e47f66b15..cf17c9df750dc2 100644 --- a/ngraph/test/op_eval/split.cpp +++ b/ngraph/test/op_eval/split.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/strided_slice.cpp b/ngraph/test/op_eval/strided_slice.cpp index ae1cff7b3606fc..ba7a647b9df401 100644 --- a/ngraph/test/op_eval/strided_slice.cpp +++ b/ngraph/test/op_eval/strided_slice.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/swish.cpp b/ngraph/test/op_eval/swish.cpp index 190598d7336399..6376a17b95479a 100644 --- a/ngraph/test/op_eval/swish.cpp +++ b/ngraph/test/op_eval/swish.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_eval/variadic_split.cpp b/ngraph/test/op_eval/variadic_split.cpp index 2f8573a9ea5fb4..eeaa3ab01a92df 100644 --- a/ngraph/test/op_eval/variadic_split.cpp +++ b/ngraph/test/op_eval/variadic_split.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/op_is.cpp b/ngraph/test/op_is.cpp index 2665d4afb2668a..0ef08f0026b862 100644 --- a/ngraph/test/op_is.cpp +++ b/ngraph/test/op_is.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/op_version_tbl.hpp b/ngraph/test/op_version_tbl.hpp index 89438ea1a9cd34..98e6b61405770e 100644 --- a/ngraph/test/op_version_tbl.hpp +++ b/ngraph/test/op_version_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// Licensed under the Apache License, Version 2.0 (the "License", 0); -// 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. -//***************************************************************************** // This collection contains one entry for each op. If an op is added it must be // added to this list. diff --git a/ngraph/test/opset1.cpp b/ngraph/test/opset1.cpp index 4f5aaf4a2bc59e..ea71b2d9071d26 100644 --- a/ngraph/test/opset1.cpp +++ b/ngraph/test/opset1.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/partial_shape.cpp b/ngraph/test/partial_shape.cpp index 3fcdb6f918a462..18c476cd13d0b1 100644 --- a/ngraph/test/partial_shape.cpp +++ b/ngraph/test/partial_shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/pass_liveness.cpp b/ngraph/test/pass_liveness.cpp index 80e5fb2f139226..5c3553de38199b 100644 --- a/ngraph/test/pass_liveness.cpp +++ b/ngraph/test/pass_liveness.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/pass_manager.cpp b/ngraph/test/pass_manager.cpp index 9f51b97c9fdfb7..569c318d4e5df4 100644 --- a/ngraph/test/pass_manager.cpp +++ b/ngraph/test/pass_manager.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/pass_shape_relevance.cpp b/ngraph/test/pass_shape_relevance.cpp index c86bb3326475ad..d288f8d0b52206 100644 --- a/ngraph/test/pass_shape_relevance.cpp +++ b/ngraph/test/pass_shape_relevance.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/pattern.cpp b/ngraph/test/pattern.cpp index 733078815274a8..a2a59c29333080 100644 --- a/ngraph/test/pattern.cpp +++ b/ngraph/test/pattern.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/provenance.cpp b/ngraph/test/provenance.cpp index 85fca785056508..c814eb55c1e1a9 100644 --- a/ngraph/test/provenance.cpp +++ b/ngraph/test/provenance.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -398,7 +386,7 @@ TEST(provenance, fused_copy_origin_tags) auto p1 = make_shared(element::f32, PartialShape{2, 3, 4}); p1->add_provenance_tag("P1"); - auto g = make_shared(p1); + auto g = make_shared(p1); g->add_provenance_tag("G"); auto r = make_shared(g); auto f = make_shared(ResultVector{r}, ParameterVector{p1}); @@ -420,7 +408,7 @@ TEST(provenance, fused_copy_origin_tags) else { EXPECT_TRUE(tags.find("G") != tags.end()); - EXPECT_TRUE(tags.find("") != tags.end()); + EXPECT_TRUE(tags.find("") != tags.end()); } }); } diff --git a/ngraph/test/ref_generators/generate_lrn_across_axes.py b/ngraph/test/ref_generators/generate_lrn_across_axes.py deleted file mode 100644 index fc1e76cf64e5f5..00000000000000 --- a/ngraph/test/ref_generators/generate_lrn_across_axes.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -import copy -import numpy as np - -def LRN(input, size=3, bias=1.0, alpha=3.0, beta=0.5): - output = copy.deepcopy(input) - N = input.shape[0] - C = input.shape[1] - H = input.shape[2] - W = input.shape[3] - for n in range(N): - begin_n = max(0, n - (size-1)//2) - end_n = min(N, n + (size-1)//2 + 1) - for c in range(C): - begin_c = max(0, c - (size-1)//2) - end_c = min(C, c + (size-1)//2 + 1) - for h in range(H): - begin_h = max(0, h - (size-1)//2) - end_h = min(H, h + (size-1)//2 + 1) - for w in range(W): - begin_w = max(0, w - (size-1)//2) - end_w = min(W, w + (size-1)//2 + 1) - patch = input[n, c, begin_h:end_h, begin_w:end_w] - output[n, c, h, w] /= ( - np.power(bias + (alpha/(size**2)) * np.sum(patch * patch), beta)) - return output - -input = np.arange(0, 12, 1).reshape(2, 3, 2, 1).astype(np.float32) -result = LRN(input) -for elem in np.nditer(result): - print("{:.7f}f,".format(elem)) diff --git a/ngraph/test/ref_generators/generate_normalize_l2_ref.py b/ngraph/test/ref_generators/generate_normalize_l2_ref.py deleted file mode 100644 index 5f369284bea449..00000000000000 --- a/ngraph/test/ref_generators/generate_normalize_l2_ref.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ****************************************************************************** - -import numpy as np - -input = np.arange(1, 25, 1).reshape(1, 2, 3, 4).astype(np.float32) -eps = np.array([1e-6]).astype(np.float32) -# across chw axes -norm = np.sqrt(np.sum(np.power(input, 2), axis=(1), keepdims=True) + eps) -result = input/norm - -for elem in np.nditer(result): - print(str(round(elem, 8)) + 'f, ') diff --git a/ngraph/test/replace_node.cpp b/ngraph/test/replace_node.cpp index 24a3fcf8817420..498fb8ad1d72ba 100644 --- a/ngraph/test/replace_node.cpp +++ b/ngraph/test/replace_node.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "util/type_prop.hpp" diff --git a/ngraph/test/runtime/CMakeLists.txt b/ngraph/test/runtime/CMakeLists.txt index 2943722accf02b..1cdc08429288a4 100644 --- a/ngraph/test/runtime/CMakeLists.txt +++ b/ngraph/test/runtime/CMakeLists.txt @@ -1,18 +1,7 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** + set (SRC backend.cpp backend.hpp diff --git a/ngraph/test/runtime/backend.cpp b/ngraph/test/runtime/backend.cpp index 4770211c3c515f..c003c2c0a31531 100644 --- a/ngraph/test/runtime/backend.cpp +++ b/ngraph/test/runtime/backend.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifdef _WIN32 #include @@ -63,9 +51,7 @@ static string find_my_pathname() #endif } -runtime::Backend::~Backend() -{ -} +runtime::Backend::~Backend() {} std::shared_ptr runtime::Backend::create(const string& t, bool must_support_dynamic) diff --git a/ngraph/test/runtime/backend.hpp b/ngraph/test/runtime/backend.hpp index bc78a34dcb920f..703247d88a8e87 100644 --- a/ngraph/test/runtime/backend.hpp +++ b/ngraph/test/runtime/backend.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -135,6 +123,7 @@ class BACKEND_API ngraph::runtime::Backend /// \brief Get the version of the backend /// The default value of 0.0.0 is chosen to be a parsable version number virtual std::string get_version() const { return "0.0.0"; } + private: // mutex to modify s_backend_shared_library_search_directory thread safe static std::mutex m_mtx; diff --git a/ngraph/test/runtime/backend_manager.cpp b/ngraph/test/runtime/backend_manager.cpp index 6c8e5b1bb868f0..3776bfbe607ae4 100644 --- a/ngraph/test/runtime/backend_manager.cpp +++ b/ngraph/test/runtime/backend_manager.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifdef _WIN32 #include diff --git a/ngraph/test/runtime/backend_manager.hpp b/ngraph/test/runtime/backend_manager.hpp index a54b03b4833768..4ea297c4086464 100644 --- a/ngraph/test/runtime/backend_manager.hpp +++ b/ngraph/test/runtime/backend_manager.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/backend_visibility.hpp b/ngraph/test/runtime/backend_visibility.hpp index ec8e510f05bf21..9e5ad6629d9975 100644 --- a/ngraph/test/runtime/backend_visibility.hpp +++ b/ngraph/test/runtime/backend_visibility.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/visibility.hpp" diff --git a/ngraph/test/runtime/cache.cpp b/ngraph/test/runtime/cache.cpp index a71f1f2f926f59..bf49a1626f29b4 100644 --- a/ngraph/test/runtime/cache.cpp +++ b/ngraph/test/runtime/cache.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "cache.hpp" #include "ngraph/env_util.hpp" diff --git a/ngraph/test/runtime/cache.hpp b/ngraph/test/runtime/cache.hpp index dd27e7471e20e4..17ac623cd25e4e 100644 --- a/ngraph/test/runtime/cache.hpp +++ b/ngraph/test/runtime/cache.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/dynamic/dynamic_backend.cpp b/ngraph/test/runtime/dynamic/dynamic_backend.cpp index d91f82091225ef..ec7f5a6fb52b9f 100644 --- a/ngraph/test/runtime/dynamic/dynamic_backend.cpp +++ b/ngraph/test/runtime/dynamic/dynamic_backend.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "dynamic_backend.hpp" #include "ngraph/graph_util.hpp" diff --git a/ngraph/test/runtime/dynamic/dynamic_backend.hpp b/ngraph/test/runtime/dynamic/dynamic_backend.hpp index 42b695cf5ada2d..102e38230f3128 100644 --- a/ngraph/test/runtime/dynamic/dynamic_backend.hpp +++ b/ngraph/test/runtime/dynamic/dynamic_backend.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/executable.cpp b/ngraph/test/runtime/executable.cpp index 400686d9ff43b4..15fb6de21e60d3 100644 --- a/ngraph/test/runtime/executable.cpp +++ b/ngraph/test/runtime/executable.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -24,13 +12,9 @@ using namespace std; using namespace ngraph; -runtime::Executable::Executable() -{ -} +runtime::Executable::Executable() {} -runtime::Executable::~Executable() -{ -} +runtime::Executable::~Executable() {} bool runtime::Executable::call_with_validate(const vector>& outputs, const vector>& inputs) diff --git a/ngraph/test/runtime/executable.hpp b/ngraph/test/runtime/executable.hpp index 56e6d953cd481a..55d6d0f7be6d2b 100644 --- a/ngraph/test/runtime/executable.hpp +++ b/ngraph/test/runtime/executable.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/ie/CMakeLists.txt b/ngraph/test/runtime/ie/CMakeLists.txt index 8d245c8ff6947c..05b5d10b6362fd 100644 --- a/ngraph/test/runtime/ie/CMakeLists.txt +++ b/ngraph/test/runtime/ie/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** set(SRC ie_backend.cpp diff --git a/ngraph/test/runtime/ie/ie_backend.cpp b/ngraph/test/runtime/ie/ie_backend.cpp index 47ead2ce1c35bf..e40b31fc86fb10 100644 --- a/ngraph/test/runtime/ie/ie_backend.cpp +++ b/ngraph/test/runtime/ie/ie_backend.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ie_backend.hpp" diff --git a/ngraph/test/runtime/ie/ie_backend.hpp b/ngraph/test/runtime/ie/ie_backend.hpp index c08127599fd9bc..8f273c19d5641e 100644 --- a/ngraph/test/runtime/ie/ie_backend.hpp +++ b/ngraph/test/runtime/ie/ie_backend.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/ie/ie_backend_visibility.hpp b/ngraph/test/runtime/ie/ie_backend_visibility.hpp index 9bde601ee7556d..96bfbf1eceb9bb 100644 --- a/ngraph/test/runtime/ie/ie_backend_visibility.hpp +++ b/ngraph/test/runtime/ie/ie_backend_visibility.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/visibility.hpp" diff --git a/ngraph/test/runtime/ie/ie_executable.cpp b/ngraph/test/runtime/ie/ie_executable.cpp index f9b7245f33f870..47b2b125ab41b2 100644 --- a/ngraph/test/runtime/ie/ie_executable.cpp +++ b/ngraph/test/runtime/ie/ie_executable.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ie_executable.hpp" #include "ie_tensor.hpp" @@ -44,7 +32,7 @@ namespace case 4: layout = InferenceEngine::Layout::NCHW; break; case 5: layout = InferenceEngine::Layout::NCDHW; break; case 6: layout = InferenceEngine::Layout::GOIDHW; break; - default: THROW_IE_EXCEPTION << "Can't convert dims " << shape.size() << " to Layout!"; + default: IE_THROW() << "Can't convert dims " << shape.size() << " to Layout!"; } InferenceEngine::MemoryBlob::Ptr blob; @@ -66,7 +54,7 @@ namespace case element::Type_t::i64: blob = MAKE_IE_TBLOB(int64_t, I64, shape, layout); break; case element::Type_t::u64: blob = MAKE_IE_TBLOB(uint64_t, U64, shape, layout); break; case element::Type_t::boolean: blob = MAKE_IE_TBLOB(uint8_t, BOOL, shape, layout); break; - default: THROW_IE_EXCEPTION << "Can't convert type " << elem_type << " to IE Precision!"; + default: IE_THROW() << "Can't convert type " << elem_type << " to IE Precision!"; } #undef MAKE_IE_TBLOB @@ -107,7 +95,7 @@ runtime::ie::IE_Executable::IE_Executable(shared_ptr func, string devi if (ie_ops.find(node->get_type_info()) == ie_ops.end()) { cout << "UNSUPPORTED OP DETECTED: " << node->get_type_info().name << endl; - THROW_IE_EXCEPTION << "Detected op not belonging to opset1!"; + IE_THROW() << "Detected op not belonging to opset1!"; } } @@ -138,7 +126,7 @@ bool runtime::ie::IE_Executable::call(const vector>& if (input_info.size() != inputs.size()) { - THROW_IE_EXCEPTION << "Function inputs number differ from number of given inputs"; + IE_THROW() << "Function inputs number differ from number of given inputs"; } size_t i = 0; @@ -157,7 +145,7 @@ bool runtime::ie::IE_Executable::call(const vector>& // Prepare output blobs auto outInfo = m_network.getOutputsInfo(); if (outInfo.size() != 1) - THROW_IE_EXCEPTION << "Networks should contain only one output!"; + IE_THROW() << "Networks should contain only one output!"; string output_name = outInfo.begin()->first; infer_request.Infer(); @@ -167,7 +155,7 @@ bool runtime::ie::IE_Executable::call(const vector>& InferenceEngine::as(output); if (!moutput) { - THROW_IE_EXCEPTION << "Cannot get output MemoryBlob in call_with_validate()"; + IE_THROW() << "Cannot get output MemoryBlob in call_with_validate()"; } auto lm = moutput->rmap(); diff --git a/ngraph/test/runtime/ie/ie_executable.hpp b/ngraph/test/runtime/ie/ie_executable.hpp index e80043f87876e7..c71102ed4314f0 100644 --- a/ngraph/test/runtime/ie/ie_executable.hpp +++ b/ngraph/test/runtime/ie/ie_executable.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/ie/ie_tensor.cpp b/ngraph/test/runtime/ie/ie_tensor.cpp index 682fd6f900bae2..88b7f79ea97036 100644 --- a/ngraph/test/runtime/ie/ie_tensor.cpp +++ b/ngraph/test/runtime/ie/ie_tensor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/runtime/ie/ie_tensor.hpp b/ngraph/test/runtime/ie/ie_tensor.hpp index 4b8b9b0f48ff8e..02a79e1a489c19 100644 --- a/ngraph/test/runtime/ie/ie_tensor.hpp +++ b/ngraph/test/runtime/ie/ie_tensor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/ie/unit_test.manifest b/ngraph/test/runtime/ie/unit_test.manifest index cdf36d122c7641..1ce45471ac3cad 100644 --- a/ngraph/test/runtime/ie/unit_test.manifest +++ b/ngraph/test/runtime/ie/unit_test.manifest @@ -42,6 +42,7 @@ onnx_model_qlinear_matmul onnx_model_qlinear_matmul_3d # Result mismatch +onnx_model_shape onnx_model_split_equal_parts_default onnx_model_argmin_no_keepdims onnx_model_softmax @@ -52,9 +53,6 @@ onnx_model_addmul_abc IE_CPU.interpolate_down_scales_const_linear # data [] doesn't exist -onnx_model_sum_one_input -onnx_model_shape -onnx_model_eye_like convert_float32_bool broadcast_trivial aliased_output @@ -62,7 +60,6 @@ bool_init_raw bool_const_op onnx_model_tile onnx_model_tile_static -onnx_model_softmax_0D onnx_model_logsoftmax_0D builder_opset1_collapse_none @@ -109,11 +106,11 @@ ceiling_int64 matmul_2x2x3_2x3x1_int64 matmul_2x2x3_2x1x3_transpose_int64 onnx_dyn_shapes_slice_10_3d_input_12_axes -IE_CPU.fused_clamp_int64 IE_CPU.onnx_dyn_shapes_slice_10_default_axes onnx_dyn_shapes_ab_plus_c_inference onnx_dyn_shapes_dynamic_rank_input_inference onnx_dyn_shapes_model_conv_with_dynamic_batch +onnx_dyn_shapes_model_conv_with_dynamic_bias onnx_dyn_shapes_expand_1_dyn_shape onnx_dyn_shapes_expand_2_dyn_shape onnx_dyn_shapes_expand_3_dyn_shape @@ -137,9 +134,6 @@ onnx_dyn_shapes_slice_10_3d_input_12_axes onnx_top_k_opset_10 onnx_model_scatterND_param_i64_indices -# [NOT_IMPLEMENTED] Input image format U64 is not supported yet... -IE_CPU.fused_clamp_uint64 - # TopK Incorrect input data/index values precision onnx_model_argmax_int32 onnx_model_argmin_int32 @@ -174,12 +168,6 @@ onnx_model_one_hot_without_axis onnx_model_one_hot_with_axis # Dynamic function 'get_shape was called on a descriptor::Tensor with dynamic shape' -fused_clamp_uint16 -fused_clamp_uint8 -fused_clamp_int32 -fused_clamp_int8 -fused_clamp_float -fused_clamp_int16 onnx_dyn_shapes_model_acosh_1_3 onnx_dyn_shapes_model_acosh_3_2 onnx_dyn_shapes_model_asinh_1_3 @@ -205,29 +193,24 @@ onnx_model_range_positive_step onnx_model_range_negative_step onnx_dyn_shapes_slice_1_3d_input_21_axes_ends_max onnx_model_max_pool_dyn_rank_without_default_attrs - -# LSTMSequence Layer is not instance of RNNLayer class -# (Constant W, B, R inputs are required) -onnx_model_lstm_fwd_with_clip_peepholes -onnx_model_lstm_fwd_mixed_seq -onnx_model_lstm_fwd_hardsigmoid_activation -onnx_model_lstm_fwd_large_batch_no_clip -onnx_model_lstm_bdir_short_input_seq_peepholes -onnx_model_lstm_mixed_seq_reverse - -# GRUCell/GRUSequence operation has a form that is not supported -# (Constant W, B, R inputs are required) +onnx_model_lp_norm_default_dynamic +onnx_instance_normalization_dynamic + +# (Constant W, R inputs are required) Ticket: 49207 +# Function references undeclared parameters +# LSTMSequence +IE_CPU.onnx_model_lstm_fwd_large_batch_no_clip +IE_CPU.onnx_model_lstm_fwd_mixed_seq +IE_CPU.onnx_model_lstm_mixed_seq_reverse +# GRUSequence IE_CPU.onnx_model_gru_defaults_fwd -IE_CPU.onnx_model_gru_fwd_activations IE_CPU.onnx_model_gru_fwd_mixed_seq_len IE_CPU.onnx_model_gru_rev_clip IE_CPU.onnx_model_gru_reverse IE_CPU.onnx_model_gru_fwd_bias_initial_h IE_CPU.onnx_model_gru_bidirectional IE_CPU.onnx_model_gru_fwd_linear_before_reset - -# RNNCell/RNNSequence operation has a form that is not supported -# (Constant W, B, R inputs are required) +# RNNSequence IE_CPU.onnx_model_rnn_defaults_fwd IE_CPU.onnx_model_rnn_fwd_activations IE_CPU.onnx_model_rnn_fwd_mixed_seq_len @@ -236,13 +219,13 @@ IE_CPU.onnx_model_rnn_reverse IE_CPU.onnx_model_rnn_fwd_bias_initial_h IE_CPU.onnx_model_rnn_bidirectional -# RNN/GRU/LSTM Sequence: Output values mismatch - seq_lengths not supported -IE_GPU.onnx_model_lstm_fwd_mixed_seq_const -IE_GPU.onnx_model_lstm_reverse_mixed_seq_const -IE_GPU.onnx_model_rnn_fwd_mixed_seq_len -IE_GPU.onnx_model_rnn_fwd_mixed_seq_len_const -IE_GPU.onnx_model_gru_fwd_mixed_seq_len -IE_GPU.onnx_model_gru_fwd_mixed_seq_len_const +# Legacy tests with unsupported features from opset4 LSTM/GRU/RNN +# Peepholes input unsupported +onnx_model_lstm_fwd_with_clip_peepholes +onnx_model_lstm_bdir_short_input_seq_peepholes +# Activation function hardsigmoid is not supported +onnx_model_gru_fwd_activations_relu_hardsigmoid +onnx_model_lstm_fwd_hardsigmoid_activation # Const layer has incorrect dimensions in the output data IE_CPU.nothing_to_reverse @@ -251,6 +234,10 @@ IE_CPU.nothing_to_reverse onnx_size_dyn_op onnx_model_gru_defaults_fwd_const_dynamic onnx_model_rnn_defaults_fwd_const_dynamic +onnx_model_depth_to_space_dynamic_input +onnx_model_space_to_depth_dynamic_input +squeeze_dynamic + # Constant network # MKLDNNGraph::CreateGraph: No inputs for the topology @@ -462,9 +449,6 @@ dynamic_reverse_shape tile_3d_small_data_rank tile_3d_few_repeats -# Error of validate layer: MatMul_683292 with type: Gemm. Gemm input shapes must have at least 2 dimensions -matmul_2_2 - # Result mismatch sum_large_1d_to_scalar sum_stable_acc @@ -580,7 +564,6 @@ select_double quantize_clamp_int32 max_3d_to_scalar_double argmin_trivial_in_double -IE_CPU.fused_clamp_double # Incorrect precision bf16! convert_float32_bf16 @@ -606,11 +589,6 @@ broadcast_vector_rowwise_int64 broadcast_scalar_to_matrix_int64 abc_int64 -# Unsupported primitive of type: Round -IE_CPU.onnx_model_round -IE_CPU.onnx_model_round_half_nearest_even -round_away_from_zero - # Unsupported primitive of type: SigmoidBackprop sigmoid_bprop_n1c1h4 @@ -754,30 +732,24 @@ dyn_convolution_backprop_data dyn_convolution_backprop_filter # Pad Pad_524448 with not constant pad_value is not allowed -pad_exterior_1d pad_negative_exterior_1d pad_negative_exterior_1d_check_limits -pad_edge_1d pad_edge_1d_top_neg pad_edge_1d_top_neg_bigger_than_tensor pad_edge_1d_bottom_neg pad_edge_1d_bottom_neg_bigger_than_tensor -pad_edge_2d pad_edge_2d_with_neg -pad_reflect_1d pad_reflect_1d_top_neg pad_reflect_1d_top_neg_bigger_than_tensor pad_reflect_1d_bottom_neg pad_reflect_1d_bottom_neg_bigger_than_tensor pad_reflect_1d_multi_reflect -pad_reflect_2d pad_reflect_2d_with_neg pad_negative_exterior_2d pad_negative_exterior_2d_all_negative pad_exterior_4d_1x2x2x2 pad_negative_exterior_4d pad_2channel_2image_asym -pad_symmetric # LRN operation should be converted to LRN_IE lrn_across_h @@ -834,25 +806,6 @@ shuffle_channels_simple shuffle_channels_negative_axis shuffle_channels_float -# Cannot cast ngraph node LSTMCell to CNNLayer! -lstm_cell_no_bias_no_peepholes -lstm_cell_zero_bias_peepholes -lstm_cell_zero_bias_peepholes_constant -lstm_cell_fixed_no_bias_no_peepholes -lstm_cell_bias_peepholes -lstm_cell_bias_peepholes_clip_input_forget -lstm_cell_activaction_functions - -# RNNCell should be converted to RNNCellIE operation! -rnn_cell_no_bias -rnn_cell_bias_clip -rnn_cell_activation_function - -# GRUCell should be converted to GRUCellIE operation! -gru_cell_bias_clip -gru_cell_linear_before_reset -gru_cell_activation_function - # Detected op not belonging to opset1! onnx_model_quant_conv_linear onnx_model_quant_conv_linear_2d @@ -1094,16 +1047,41 @@ non_zero non_zero_all_1s non_zero_all_0s +# (Constant W, R inputs are required) Ticket: 49207 +# W, R inputs as Parameter, default clip value +# Operation has a form that is not supported. +# LSTMCell_... should be converted to LSTMCellIE operation. +lstm_cell_zero_bias_default_attrs +lstm_cell_bias_default_attrs +# RNNCell_.. should be converted to RNNCellIE operation. +rnn_cell_zero_bias_default_attrs + +# Legacy tests with unsupported features from opset4 LSTM/GRU/RNN +# Activation function hardsigmoid is not supported +gru_cell_hardsigmoid_activation_function + #------------------------------------------------------------------------------- # # Inference Engine CPU plugin excludes # #------------------------------------------------------------------------------- -# Cannot cast ngraph node ReplaceSlice to CNNLayer! -# Incorrect precision u32! -# Parameter has zero dimension that is not allowable -IE_CPU.fused_clamp_uint32 +# Clamp op: +# Issue 51676: Output mismatch due to wrong conversion of bounds +IE_CPU.clamp_integral +IE_CPU.clamp_integral_negative +# Issue 51679: CI failure on Ubuntu 20. Overflow handling -inf lower bound +IE_CPU.clamp_int32 +# Precision mismatch +IE_CPU.clamp_uint32 +IE_CPU.clamp_uint16 +IE_CPU.clamp_int16 +IE_CPU.clamp_int64 +IE_CPU.clamp_float16 +# [NOT_IMPLEMENTED] Input image format U64 is not supported yet... +IE_CPU.clamp_uint64 +# [NOT_IMPLEMENTED] Input image format BF16 is not supported yet... +IE_CPU.clamp_bfloat16 # Cannot cast ngraph node Reshape to CNNLayer! # Parameter has zero dimension that is not allowable @@ -1129,12 +1107,6 @@ IE_CPU.convert_like_float32_bfloat16 IE_CPU.convert_like_bfloat16_float32 IE_CPU.convert_like_dyn_float16_to_int64 -# Can't convert type f16 to IE Precision! -IE_CPU.fused_clamp_float16 - -# [NOT_IMPLEMENTED] Input image format BF16 is not supported yet... -IE_CPU.fused_clamp_bfloat16 - # Operations were removed from opset IE_CPU.atanh IE_CPU.asinh @@ -1151,12 +1123,6 @@ IE_CPU.onnx_resize11_up_sizes_cubic_half_pixel_dynamic_sizes # Input data precision not supported. Expected float. ctc_greedy_decoder_f16 -# RNN/LSTM Cells should be converted to IE representation -IE_CPU.lstm_cell__zero_bias_peepholes -IE_CPU.rnn_cell__no_bias -IE_CPU.rnn_cell__bias_clip -IE_CPU.rnn_cell__activation_function - # function with NMS-5 to get the nGraph function with NMSIE3 (internal # operation, similar with NMS-5, but with all static output shapes), before # the method compile() call, then tests for INTERPRETER backend for NMS-5 will @@ -1406,7 +1372,7 @@ IE_GPU.normalize_across_chw_4d IE_GPU.normalize_across_h_4d IE_GPU.normalize_across_c_2x2_shape IE_GPU.normalize_across_c_2x4_shape -IE_GPU.fused_clamp +IE_GPU.clamp IE_GPU.grn_4d IE_GPU.squeeze IE_GPU.squared_difference @@ -1478,7 +1444,14 @@ IE_GPU.onnx_dyn_shapes_model_acosh_1_3 IE_GPU.onnx_dyn_shapes_model_acosh_3_2 IE_GPU.onnx_dyn_shapes_model_asinh_1_3 IE_GPU.onnx_dyn_shapes_model_asinh_3_2 -# IE_GPU.onnx_upsample9_scales_input_nearest_infer + +# RNN/GRU/LSTM Sequence: Output values mismatch - seq_lengths not supported +IE_GPU.onnx_model_lstm_fwd_mixed_seq_const +IE_GPU.onnx_model_lstm_reverse_mixed_seq_const +IE_GPU.onnx_model_rnn_fwd_mixed_seq_len +IE_GPU.onnx_model_rnn_fwd_mixed_seq_len_const +IE_GPU.onnx_model_gru_fwd_mixed_seq_len +IE_GPU.onnx_model_gru_fwd_mixed_seq_len_const IE_GPU.sum_matrix_6d IE_GPU.sqrt @@ -1586,16 +1559,8 @@ IE_GPU.onnx_model_gather_elements_int32_axis_0 IE_GPU.onnx_model_gather_elements_int8_axis_1 IE_GPU.onnx_model_gather_elements_float_3D_axis_2 -IE_CPU.evaluate_ctc_greedy_decoder_seq_len -IE_GPU.evaluate_ctc_greedy_decoder_seq_len +# not supported fp16 blob input IE_CPU.evaluate_ctc_greedy_decoder_seq_len_f16 -IE_GPU.evaluate_ctc_greedy_decoder_seq_len_f16 -IE_CPU.evaluate_ctc_greedy_decoder_seq_len_merge -IE_GPU.evaluate_ctc_greedy_decoder_seq_len_merge -IE_CPU.evaluate_ctc_greedy_decoder_seq_len_multiple_batches -IE_GPU.evaluate_ctc_greedy_decoder_seq_len_multiple_batches -IE_CPU.evaluate_ctc_greedy_decoder_seq_len_multiple_batches2 -IE_GPU.evaluate_ctc_greedy_decoder_seq_len_multiple_batches2 # incorrect result for Minimum if u16 type is used minimum_u16 @@ -1608,3 +1573,20 @@ evaluate_mvn_6_inside_sqrt evaluate_mvn_6_across_chanells evaluate_mvn_6_across_batch IE_CPU.onnx_mvn_v6 + +# Issue 49621: Incorrect blob sizes for node BinaryConvolution_X +bin_convolution_2D_1batch_1channel +bin_convolution_2D_1batch_1channel_padding_pad_val_0 +bin_convolution_2D_1batch_1channel_padding_pad_val_1 +bin_convolution_2D_1batch_1channel_stride +bin_convolution_2D_1batch_1channel_dilation +bin_convolution_2D_1batch_1channel_strides_dilation_padding_pad_val_0 +bin_convolution_2D_1batch_1channel_strides_dilation_padding_pad_val_1 +bin_convolution_2D_1batch_2channel +bin_convolution_2D_2batch_1channel + +# RuntimeError: Unsupported dynamic ops: v4::Interpolate - Ticket: 50691 +onnx_upsample6_dynamic + +# random values returned from the plugin: ticket 51762 +onnx_model_deformable_conv_2d diff --git a/ngraph/test/runtime/interpreter/CMakeLists.txt b/ngraph/test/runtime/interpreter/CMakeLists.txt index da0730f8c9853b..2a0383d91f4fd8 100644 --- a/ngraph/test/runtime/interpreter/CMakeLists.txt +++ b/ngraph/test/runtime/interpreter/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** if (NGRAPH_INTERPRETER_ENABLE) add_library(interpreter_backend SHARED int_backend.cpp int_executable.cpp evaluates_map.cpp) diff --git a/ngraph/test/runtime/interpreter/evaluates_map.cpp b/ngraph/test/runtime/interpreter/evaluates_map.cpp index f786643c555178..d6ab1816057d7b 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.cpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "evaluates_map.hpp" @@ -22,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -54,7 +43,6 @@ #include #include #include -#include #include #include #include @@ -214,6 +202,55 @@ namespace return true; } + namespace bin_conv_v1 + { + template + inline void evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& inputs) + { + using T_IN = typename element_type_traits::value_type; + using T_F = typename element_type_traits::value_type; + + const auto in_data_ptr = inputs[0]->get_data_ptr(); + const auto filter_data_ptr = inputs[1]->get_data_ptr(); + auto out_data_ptr = outputs[0]->get_data_ptr(); + const auto in_shape = inputs[0]->get_shape(); + const auto filter_shape = inputs[1]->get_shape(); + const auto out_shape = outputs[0]->get_shape(); + + runtime::reference::binary_convolution(in_data_ptr, + filter_data_ptr, + out_data_ptr, + in_shape, + filter_shape, + out_shape, + op->get_strides(), + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end(), + op->get_pad_value()); + } + } // bin_conv_v1 + + template + bool evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& inputs) + { + switch (inputs[1]->get_element_type()) + { + case element::Type_t::u1: + bin_conv_v1::evaluate(op, outputs, inputs); + break; + default: + throw std::runtime_error( + "BinaryConvolution supports only u1 element type for filters input"); + break; + } + return true; + } + template bool evaluate(const shared_ptr& op, const HostTensorVector& outputs, @@ -1108,6 +1145,20 @@ namespace using T = typename element_type_traits::value_type; runtime::reference::gelu(inputs[0]->get_data_ptr(), outputs[0]->get_data_ptr(), + op::GeluApproximationMode::ERF, + shape_size(inputs[0]->get_shape())); + return true; + } + + template + bool evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& inputs) + { + using T = typename element_type_traits::value_type; + runtime::reference::gelu(inputs[0]->get_data_ptr(), + outputs[0]->get_data_ptr(), + op->get_approximation_mode(), shape_size(inputs[0]->get_shape())); return true; } @@ -1429,46 +1480,6 @@ namespace } return true; } - - template - bool evaluate(const shared_ptr& op, - const HostTensorVector& outputs, - const HostTensorVector& inputs) - { - using T = typename element_type_traits::value_type; - switch (inputs[0]->get_element_type()) - { - case element::Type_t::i32: - runtime::reference:: - one_hot::value_type, T>( - inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - outputs[0]->get_shape(), - op->get_axis(), - inputs[2]->get_data_ptr()[0], - inputs[3]->get_data_ptr()[0]); - break; - case element::Type_t::i64: - runtime::reference:: - one_hot::value_type, T>( - inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - outputs[0]->get_shape(), - op->get_axis(), - inputs[2]->get_data_ptr()[0], - inputs[3]->get_data_ptr()[0]); - break; - default: - std::stringstream ss; - ss << "Unhandled input precision " << inputs[0]->get_element_type().get_type_name() - << " in v1::OneHot evaluate call"; - throw ngraph_error(ss.str()); - } - return true; - } - template bool evaluate(const shared_ptr& op, const HostTensorVector& outputs, diff --git a/ngraph/test/runtime/interpreter/evaluates_map.hpp b/ngraph/test/runtime/interpreter/evaluates_map.hpp index d120557b703189..1a45c3025c34b7 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.hpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.hpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #pragma once #include "int_backend_visibility.hpp" #include "ngraph/node.hpp" diff --git a/ngraph/test/runtime/interpreter/int_backend.cpp b/ngraph/test/runtime/interpreter/int_backend.cpp index 4e05950383e023..eae3d6c039a52b 100644 --- a/ngraph/test/runtime/interpreter/int_backend.cpp +++ b/ngraph/test/runtime/interpreter/int_backend.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "int_backend_visibility.hpp" @@ -33,9 +21,7 @@ extern "C" INTERPRETER_BACKEND_API void ngraph_register_interpreter_backend() }); } -runtime::interpreter::INTBackend::INTBackend() -{ -} +runtime::interpreter::INTBackend::INTBackend() {} runtime::interpreter::INTBackend::INTBackend(const vector& unsupported_op_name_list) : m_unsupported_op_name_list{unsupported_op_name_list.begin(), unsupported_op_name_list.end()} diff --git a/ngraph/test/runtime/interpreter/int_backend.hpp b/ngraph/test/runtime/interpreter/int_backend.hpp index 05fe8b8d7a4b4c..a30d4e7d7821ce 100644 --- a/ngraph/test/runtime/interpreter/int_backend.hpp +++ b/ngraph/test/runtime/interpreter/int_backend.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/interpreter/int_backend_visibility.hpp b/ngraph/test/runtime/interpreter/int_backend_visibility.hpp index c97a92b8198d72..3c272e0a379ee2 100644 --- a/ngraph/test/runtime/interpreter/int_backend_visibility.hpp +++ b/ngraph/test/runtime/interpreter/int_backend_visibility.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/visibility.hpp" diff --git a/ngraph/test/runtime/interpreter/int_executable.cpp b/ngraph/test/runtime/interpreter/int_executable.cpp index 3cc28cc6fd9d13..3d2cad83343a74 100644 --- a/ngraph/test/runtime/interpreter/int_executable.cpp +++ b/ngraph/test/runtime/interpreter/int_executable.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "int_executable.hpp" #include diff --git a/ngraph/test/runtime/interpreter/int_executable.hpp b/ngraph/test/runtime/interpreter/int_executable.hpp index c16139b1c56bb9..d7edc790aab851 100644 --- a/ngraph/test/runtime/interpreter/int_executable.hpp +++ b/ngraph/test/runtime/interpreter/int_executable.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/interpreter/opset_int_tbl.hpp b/ngraph/test/runtime/interpreter/opset_int_tbl.hpp index 16453b5e413158..4e52bd26201da6 100644 --- a/ngraph/test/runtime/interpreter/opset_int_tbl.hpp +++ b/ngraph/test/runtime/interpreter/opset_int_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #ifndef NGRAPH_OP #warning "NGRAPH_OP not defined" @@ -49,6 +37,7 @@ NGRAPH_OP(TensorIterator, op::v0) NGRAPH_OP(ROIPooling, op::v0) NGRAPH_OP(AvgPool, op::v1) +NGRAPH_OP(BinaryConvolution, ngraph::op::v1) NGRAPH_OP(ConvertLike, op::v1) NGRAPH_OP(Convolution, ngraph::op::v1) NGRAPH_OP(ConvolutionBackpropData, ngraph::op::v1) diff --git a/ngraph/test/runtime/interpreter/unit_test.manifest b/ngraph/test/runtime/interpreter/unit_test.manifest index 17ea5512d8b380..9856353f7b817b 100644 --- a/ngraph/test/runtime/interpreter/unit_test.manifest +++ b/ngraph/test/runtime/interpreter/unit_test.manifest @@ -65,12 +65,6 @@ INTERPRETER.gather_axis_0_int8 INTERPRETER.gather_axis_0_int16 INTERPRETER.gather_axis_0_uint8 INTERPRETER.gather_axis_0_uint16 -INTERPRETER.fused_clamp_double -INTERPRETER.fused_clamp_int8 -INTERPRETER.fused_clamp_int16 -INTERPRETER.fused_clamp_uint8 -INTERPRETER.fused_clamp_uint16 -INTERPRETER.fused_clamp_bfloat16 INTERPRETER.auto_bcast_binary_elementwise INTERPRETER.auto_bcast_binary_elementwise_pdpd @@ -113,18 +107,14 @@ INTERPRETER.onnx_model_conv_integer_zero_point_zero INTERPRETER.onnx_model_conv_integer_no_zero_point INTERPRETER.onnx_model_conv_integer_pads -# Activation function hardsigmoid is not supported. -gru_cell_activation_function -lstm_cell_activaction_functions -onnx_model_gru_fwd_activations -onnx_model_lstm_fwd_hardsigmoid_activation - -# Peepholes, input_forget are not supported +# Legacy tests with unsupported features from opset4 LSTM/GRU/RNN +# Peepholes input unsupported onnx_model_lstm_fwd_with_clip_peepholes onnx_model_lstm_bdir_short_input_seq_peepholes -lstm_cell_bias_peepholes -lstm_cell_bias_peepholes_clip_input_forget - +# Activation function hardsigmoid unsupported +onnx_model_gru_fwd_activations_relu_hardsigmoid +onnx_model_lstm_fwd_hardsigmoid_activation +gru_cell_hardsigmoid_activation_function # Check 'n_data_channels % groups == 0' failed dyn_group_convolution_backprop_data @@ -152,6 +142,7 @@ onnx_controlflow_loop_infinite onnx_controlflow_loop_2d_trip_count_dynamic onnx_controlflow_loop_no_variadic_inputs_and_outputs onnx_controlflow_loop_power +squeeze_dynamic # The test fails in CI on Ubuntu i386 # There's an overflow of some kind: 2147483647 is not close to -2147483648 at index 2 @@ -174,4 +165,7 @@ INTERPRETER.onnx_model_experimental_detectron_generate_proposals_single_image INTERPRETER.onnx_model_experimental_detectron_prior_grid_generator # Interpreter backend doesn't implement evaluate method for OP ExperimentalDetectronROIFeatureExtractor -INTERPRETER.onnx_model_experimental_detectron_roi_feature_extractor \ No newline at end of file +INTERPRETER.onnx_model_experimental_detectron_roi_feature_extractor + +# No evaluator for DeformableConv2D +onnx_model_deformable_conv_2d diff --git a/ngraph/test/runtime/op/atan2.cpp b/ngraph/test/runtime/op/atan2.cpp index 00e99c3a124015..4d0af74cba39a1 100644 --- a/ngraph/test/runtime/op/atan2.cpp +++ b/ngraph/test/runtime/op/atan2.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "atan2.hpp" #include "ngraph/op/add.hpp" diff --git a/ngraph/test/runtime/op/atan2.hpp b/ngraph/test/runtime/op/atan2.hpp index 96cb321e3f6b0e..683edc851623d5 100644 --- a/ngraph/test/runtime/op/atan2.hpp +++ b/ngraph/test/runtime/op/atan2.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/op/avg_pool.cpp b/ngraph/test/runtime/op/avg_pool.cpp index cb78058aace164..d8f8d8bb0916b9 100644 --- a/ngraph/test/runtime/op/avg_pool.cpp +++ b/ngraph/test/runtime/op/avg_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "avg_pool.hpp" #include "ngraph/attribute_visitor.hpp" diff --git a/ngraph/test/runtime/op/avg_pool.hpp b/ngraph/test/runtime/op/avg_pool.hpp index 1a769945f84086..1fab6fc25de2ec 100644 --- a/ngraph/test/runtime/op/avg_pool.hpp +++ b/ngraph/test/runtime/op/avg_pool.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/op/convolution.cpp b/ngraph/test/runtime/op/convolution.cpp index f65affc109e9ad..1d4d8bea6c697e 100644 --- a/ngraph/test/runtime/op/convolution.cpp +++ b/ngraph/test/runtime/op/convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "convolution.hpp" #include "ngraph/axis_vector.hpp" diff --git a/ngraph/test/runtime/op/convolution.hpp b/ngraph/test/runtime/op/convolution.hpp index 64fa992524421f..5ddea7b0f7de6f 100644 --- a/ngraph/test/runtime/op/convolution.hpp +++ b/ngraph/test/runtime/op/convolution.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/op/group_conv.cpp b/ngraph/test/runtime/op/group_conv.cpp index 7a4e2a5eaeea32..1a9ce2b464a832 100644 --- a/ngraph/test/runtime/op/group_conv.cpp +++ b/ngraph/test/runtime/op/group_conv.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/runtime/op/group_conv.hpp b/ngraph/test/runtime/op/group_conv.hpp index ebc7e0156e5675..088d9ca4be6557 100644 --- a/ngraph/test/runtime/op/group_conv.hpp +++ b/ngraph/test/runtime/op/group_conv.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -81,6 +69,7 @@ namespace ngraph virtual void post_validate_and_infer_types() override; bool has_groups_in_filters() const { return m_groups_in_filters; } + protected: Strides m_window_movement_strides; Strides m_window_dilation_strides; diff --git a/ngraph/test/runtime/opset0_tbl.hpp b/ngraph/test/runtime/opset0_tbl.hpp index 724131c84c0dd6..3f4f94509f25c9 100644 --- a/ngraph/test/runtime/opset0_tbl.hpp +++ b/ngraph/test/runtime/opset0_tbl.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // This collection contains one entry for each op. If an op is added it must be // added to this list. diff --git a/ngraph/test/runtime/pass/dyn_elimination.cpp b/ngraph/test/runtime/pass/dyn_elimination.cpp index 9a28218d7afe1b..95a08bc0ec3b7a 100644 --- a/ngraph/test/runtime/pass/dyn_elimination.cpp +++ b/ngraph/test/runtime/pass/dyn_elimination.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -124,6 +112,8 @@ void pass::DynElimination::construct_range() case element::Type_t::u64: replacement = make_range_replacement(et, shape, start_arg, step_arg); break; + case element::Type_t::i4: + case element::Type_t::u4: case element::Type_t::u1: case element::Type_t::undefined: case element::Type_t::dynamic: diff --git a/ngraph/test/runtime/pass/dyn_elimination.hpp b/ngraph/test/runtime/pass/dyn_elimination.hpp index dc3101dce4ec77..79af7854ce467c 100644 --- a/ngraph/test/runtime/pass/dyn_elimination.hpp +++ b/ngraph/test/runtime/pass/dyn_elimination.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/pass/fused_op_decomposition.cpp b/ngraph/test/runtime/pass/fused_op_decomposition.cpp index 92000617a83697..89cbba09536168 100644 --- a/ngraph/test/runtime/pass/fused_op_decomposition.cpp +++ b/ngraph/test/runtime/pass/fused_op_decomposition.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "fused_op_decomposition.hpp" #include "ngraph/graph_util.hpp" #include "ngraph/op/util/op_types.hpp" diff --git a/ngraph/test/runtime/pass/fused_op_decomposition.hpp b/ngraph/test/runtime/pass/fused_op_decomposition.hpp index 7cda76a38cb5d2..e1b7fdcfc352cf 100644 --- a/ngraph/test/runtime/pass/fused_op_decomposition.hpp +++ b/ngraph/test/runtime/pass/fused_op_decomposition.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/pass/implicit_broadcast_elimination.cpp b/ngraph/test/runtime/pass/implicit_broadcast_elimination.cpp index b9500d14d54221..ce380781e791dd 100644 --- a/ngraph/test/runtime/pass/implicit_broadcast_elimination.cpp +++ b/ngraph/test/runtime/pass/implicit_broadcast_elimination.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "implicit_broadcast_elimination.hpp" diff --git a/ngraph/test/runtime/pass/implicit_broadcast_elimination.hpp b/ngraph/test/runtime/pass/implicit_broadcast_elimination.hpp index 64440e9316a5d9..939c2b2073c652 100644 --- a/ngraph/test/runtime/pass/implicit_broadcast_elimination.hpp +++ b/ngraph/test/runtime/pass/implicit_broadcast_elimination.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/pass/liveness.cpp b/ngraph/test/runtime/pass/liveness.cpp index 39213ee881d24e..bb0b9487a6e565 100644 --- a/ngraph/test/runtime/pass/liveness.cpp +++ b/ngraph/test/runtime/pass/liveness.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/runtime/pass/liveness.hpp b/ngraph/test/runtime/pass/liveness.hpp index 67e5f189b609d4..64aff0bc8e00c7 100644 --- a/ngraph/test/runtime/pass/liveness.hpp +++ b/ngraph/test/runtime/pass/liveness.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/pass/opset0_downgrade.cpp b/ngraph/test/runtime/pass/opset0_downgrade.cpp index fcc9376f99c595..4d48854bf6b02b 100644 --- a/ngraph/test/runtime/pass/opset0_downgrade.cpp +++ b/ngraph/test/runtime/pass/opset0_downgrade.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/runtime/pass/opset0_downgrade.hpp b/ngraph/test/runtime/pass/opset0_downgrade.hpp index 9f949e7968b10a..96a831d9c9f259 100644 --- a/ngraph/test/runtime/pass/opset0_downgrade.hpp +++ b/ngraph/test/runtime/pass/opset0_downgrade.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/pass/opset1_downgrade.cpp b/ngraph/test/runtime/pass/opset1_downgrade.cpp index 900a5bcc774a24..1d77d39b8aaf2d 100644 --- a/ngraph/test/runtime/pass/opset1_downgrade.cpp +++ b/ngraph/test/runtime/pass/opset1_downgrade.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/runtime/pass/opset1_downgrade.hpp b/ngraph/test/runtime/pass/opset1_downgrade.hpp index 5c718c17fee3d8..52e9d8397bc0c1 100644 --- a/ngraph/test/runtime/pass/opset1_downgrade.hpp +++ b/ngraph/test/runtime/pass/opset1_downgrade.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/pass/opset1_upgrade.cpp b/ngraph/test/runtime/pass/opset1_upgrade.cpp index 9843ade5bf5dd4..9c8f2d4c8e7cde 100644 --- a/ngraph/test/runtime/pass/opset1_upgrade.cpp +++ b/ngraph/test/runtime/pass/opset1_upgrade.cpp @@ -1,18 +1,7 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** + #include "opset1_upgrade.hpp" #include diff --git a/ngraph/test/runtime/pass/opset1_upgrade.hpp b/ngraph/test/runtime/pass/opset1_upgrade.hpp index 16555eaa9fe52d..c1942626fe3b2d 100644 --- a/ngraph/test/runtime/pass/opset1_upgrade.hpp +++ b/ngraph/test/runtime/pass/opset1_upgrade.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/pass/shape_relevance.cpp b/ngraph/test/runtime/pass/shape_relevance.cpp index 16ba4f9a5f3305..13cd821b39b4e6 100644 --- a/ngraph/test/runtime/pass/shape_relevance.cpp +++ b/ngraph/test/runtime/pass/shape_relevance.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "pass/shape_relevance.hpp" #include "ngraph/graph_util.hpp" diff --git a/ngraph/test/runtime/pass/shape_relevance.hpp b/ngraph/test/runtime/pass/shape_relevance.hpp index cea73f4685e2c6..17f0707a07c5bd 100644 --- a/ngraph/test/runtime/pass/shape_relevance.hpp +++ b/ngraph/test/runtime/pass/shape_relevance.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/runtime/performance_counter.hpp b/ngraph/test/runtime/performance_counter.hpp index 2363e5458080c4..92d3c68d54cdb5 100644 --- a/ngraph/test/runtime/performance_counter.hpp +++ b/ngraph/test/runtime/performance_counter.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/shape.cpp b/ngraph/test/shape.cpp index 5157e52189adf9..e6103dba582245 100644 --- a/ngraph/test/shape.cpp +++ b/ngraph/test/shape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/specialize_function.cpp b/ngraph/test/specialize_function.cpp index e4156cb9266f0e..c023cc3cd7499d 100644 --- a/ngraph/test/specialize_function.cpp +++ b/ngraph/test/specialize_function.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/tensor.cpp b/ngraph/test/tensor.cpp index be9cc26ab1f180..6b4c3597eeb143 100644 --- a/ngraph/test/tensor.cpp +++ b/ngraph/test/tensor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/type_prop/arithmetic_ops.hpp b/ngraph/test/type_prop/arithmetic_ops.hpp new file mode 100644 index 00000000000000..103982f9b1a175 --- /dev/null +++ b/ngraph/test/type_prop/arithmetic_ops.hpp @@ -0,0 +1,223 @@ +//***************************************************************************** +// Copyright 2017-2021 Intel Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" + +using namespace ngraph; + +template +class ArithmeticOperator : public testing::Test +{ +}; + +TYPED_TEST_CASE_P(ArithmeticOperator); + +TYPED_TEST_P(ArithmeticOperator, shape_inference_2D) +{ + auto A = std::make_shared(element::f32, Shape{2, 2}); + auto B = std::make_shared(element::f32, Shape{2, 2}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 2})); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_4D) +{ + auto A = std::make_shared(element::f32, Shape{2, 2, 3, 3}); + auto B = std::make_shared(element::f32, Shape{2, 2, 3, 3}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 2, 3, 3})); +} + +TYPED_TEST_P(ArithmeticOperator, default_autobroadcast) +{ + auto A = std::make_shared(element::f32, Shape{2, 2}); + auto B = std::make_shared(element::f32, Shape{2, 2}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 2})); + ASSERT_EQ(op->get_autob(), op::AutoBroadcastType::NUMPY); +} + +TYPED_TEST_P(ArithmeticOperator, no_autobroadcast) +{ + auto A = std::make_shared(element::f32, Shape{2, 2}); + auto B = std::make_shared(element::f32, Shape{2, 2}); + + const auto op = std::make_shared(A, B, op::AutoBroadcastSpec::NONE); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 2})); + ASSERT_EQ(op->get_autob(), op::AutoBroadcastType::NONE); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_4D_x_scalar_numpy_broadcast) +{ + auto A = std::make_shared(element::f32, Shape{2, 3, 4, 5}); + auto B = std::make_shared(element::f32, Shape{1}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 3, 4, 5})); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_4D_x_1D_numpy_broadcast) +{ + auto A = std::make_shared(element::f32, Shape{2, 3, 4, 5}); + auto B = std::make_shared(element::f32, Shape{5}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 3, 4, 5})); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_2D_x_4D_numpy_broadcast) +{ + auto A = std::make_shared(element::f32, Shape{4, 5}); + auto B = std::make_shared(element::f32, Shape{2, 3, 4, 5}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 3, 4, 5})); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_3D_x_4D_numpy_broadcast) +{ + auto A = std::make_shared(element::f32, Shape{1, 4, 5}); + auto B = std::make_shared(element::f32, Shape{2, 3, 1, 1}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{2, 3, 4, 5})); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_4D_x_3D_numpy_broadcast) +{ + auto A = std::make_shared(element::f32, Shape{8, 1, 6, 1}); + auto B = std::make_shared(element::f32, Shape{7, 1, 5}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_shape(), (Shape{8, 7, 6, 5})); + ASSERT_EQ(op->get_autob(), op::AutoBroadcastType::NUMPY); +} + +TYPED_TEST_P(ArithmeticOperator, incompatible_element_types) +{ + auto A = std::make_shared(element::f32, Shape{2, 2, 3, 3}); + auto B = std::make_shared(element::i32, Shape{2, 2, 3, 3}); + + ASSERT_THROW(std::make_shared(A, B), ngraph::NodeValidationFailure); +} + +TYPED_TEST_P(ArithmeticOperator, incompatible_boolean_type) +{ + auto A = std::make_shared(element::boolean, Shape{2, 2, 3, 3}); + auto B = std::make_shared(element::boolean, Shape{2, 2, 3, 3}); + + ASSERT_THROW(std::make_shared(A, B), ngraph::NodeValidationFailure); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_1D_x_1D_incompatible) +{ + auto A = std::make_shared(element::f32, Shape{3}); + auto B = std::make_shared(element::f32, Shape{4}); + + ASSERT_THROW(std::make_shared(A, B), ngraph::NodeValidationFailure); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_3D_x_3D_incompatible) +{ + auto A = std::make_shared(element::f32, Shape{3, 5, 6}); + auto B = std::make_shared(element::f32, Shape{4, 10, 12}); + + ASSERT_THROW(std::make_shared(A, B), ngraph::NodeValidationFailure); +} + +TYPED_TEST_P(ArithmeticOperator, shape_inference_5D_x_5D_incompatible) +{ + auto A = std::make_shared(element::f32, Shape{389, 112, 12}); + auto B = std::make_shared(element::f32, Shape{389, 112, 19}); + + ASSERT_THROW(std::make_shared(A, B), ngraph::NodeValidationFailure); +} + +TYPED_TEST_P(ArithmeticOperator, dynamic_shape_3D) +{ + Dimension dynamic = Dimension::dynamic(); + auto A = std::make_shared(element::f32, PartialShape{dynamic, dynamic, 6}); + auto B = std::make_shared(element::f32, PartialShape{dynamic, dynamic, 6}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_output_partial_shape(0), (PartialShape{dynamic, dynamic, 6})); +} + +TYPED_TEST_P(ArithmeticOperator, dynamic_shape_5D) +{ + Dimension dynamic = Dimension::dynamic(); + auto A = + std::make_shared(element::f32, PartialShape{dynamic, 4, dynamic, dynamic, 6}); + auto B = + std::make_shared(element::f32, PartialShape{dynamic, 4, dynamic, dynamic, 6}); + + const auto op = std::make_shared(A, B); + + ASSERT_EQ(op->get_element_type(), element::f32); + ASSERT_EQ(op->get_output_partial_shape(0), + (PartialShape{dynamic, 4, dynamic, dynamic, 6})); +} + +TYPED_TEST_P(ArithmeticOperator, full_dynamic_shape) +{ + auto param = std::make_shared(element::f64, PartialShape::dynamic()); + const auto op = std::make_shared(param, param); + ASSERT_EQ(op->get_element_type(), element::f64); + ASSERT_TRUE(op->get_output_partial_shape(0).same_scheme(PartialShape::dynamic())); +} + +REGISTER_TYPED_TEST_CASE_P(ArithmeticOperator, + shape_inference_2D, + shape_inference_4D, + default_autobroadcast, + no_autobroadcast, + shape_inference_4D_x_scalar_numpy_broadcast, + shape_inference_4D_x_1D_numpy_broadcast, + shape_inference_2D_x_4D_numpy_broadcast, + shape_inference_3D_x_4D_numpy_broadcast, + shape_inference_4D_x_3D_numpy_broadcast, + incompatible_element_types, + incompatible_boolean_type, + shape_inference_1D_x_1D_incompatible, + shape_inference_3D_x_3D_incompatible, + shape_inference_5D_x_5D_incompatible, + dynamic_shape_3D, + dynamic_shape_5D, + full_dynamic_shape); diff --git a/ngraph/test/type_prop/assign.cpp b/ngraph/test/type_prop/assign.cpp index 26306175f8836c..9f8169ae71f3c2 100644 --- a/ngraph/test/type_prop/assign.cpp +++ b/ngraph/test/type_prop/assign.cpp @@ -1,22 +1,12 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" +#include "ngraph/op/util/variable.hpp" #include "ngraph/opsets/opset5.hpp" +#include "ngraph/opsets/opset6.hpp" #include "util/type_prop.hpp" using namespace std; @@ -51,3 +41,26 @@ TEST(type_prop, assign_deduce) ASSERT_EQ(assign->get_element_type(), element::f32); ASSERT_EQ(assign->get_shape(), (Shape{1, 2, 64, 64})); } + +TEST(type_prop, assign_read_value_new_shape) +{ + auto input = make_shared(element::f16, Shape{4, 3, 2, 1}); + + auto variable = + std::make_shared(VariableInfo{PartialShape::dynamic(), element::dynamic, "ID"}); + auto read_value = make_shared(input, variable); + auto assign = make_shared(read_value, variable); + + ASSERT_EQ(assign->get_element_type(), element::f16); + ASSERT_EQ(assign->get_shape(), (Shape{4, 3, 2, 1})); + + auto f = std::make_shared(ResultVector{}, SinkVector{assign}, ParameterVector{input}); + + input->set_partial_shape({3, {4, 5}, 8}); + f->validate_nodes_and_infer_types(); + + ASSERT_EQ(assign->get_element_type(), element::f16); + ASSERT_EQ(assign->get_output_partial_shape(0), (PartialShape{3, {4, 5}, 8})); + ASSERT_EQ(variable->get_info().data_type, element::f16); + ASSERT_EQ(variable->get_info().data_shape, (PartialShape{3, {4, 5}, 8})); +} diff --git a/ngraph/test/type_prop/avg_pool.cpp b/ngraph/test/type_prop/avg_pool.cpp index 24aee61a7f9435..2fbd3c2fb95060 100644 --- a/ngraph/test/type_prop/avg_pool.cpp +++ b/ngraph/test/type_prop/avg_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/batch_norm.cpp b/ngraph/test/type_prop/batch_norm.cpp index 73f33cb5242ef9..e9185988975381 100644 --- a/ngraph/test/type_prop/batch_norm.cpp +++ b/ngraph/test/type_prop/batch_norm.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/batch_to_space.cpp b/ngraph/test/type_prop/batch_to_space.cpp index ec950fb4858520..885db5cd933793 100644 --- a/ngraph/test/type_prop/batch_to_space.cpp +++ b/ngraph/test/type_prop/batch_to_space.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -90,3 +78,35 @@ TEST(type_prop, batch_to_space_and_space_to_batch) ASSERT_EQ(space_to_batch->get_element_type(), element::f32); ASSERT_EQ(space_to_batch->get_shape(), (Shape{4800, 9, 11, 2})); } + +TEST(type_prop, batch_to_space_dynamic_shape_static_rank) +{ + auto data = make_shared(element::f32, PartialShape::dynamic(4)); + auto block_shape = + make_shared(element::i64, Shape{4}, vector{1, 10, 5, 1}); + auto pads_begin = + make_shared(element::i64, Shape{4}, vector{0, 3, 1, 0}); + auto pads_end = make_shared(element::i64, Shape{4}, vector{0, 3, 0, 0}); + + auto batch_to_space = + make_shared(data, block_shape, pads_begin, pads_end); + + ASSERT_EQ(batch_to_space->get_element_type(), element::f32); + ASSERT_EQ(batch_to_space->get_output_partial_shape(0), PartialShape::dynamic(4)); +} + +TEST(type_prop, batch_to_space_dynamic_shape_dynamic_rank) +{ + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto block_shape = + make_shared(element::i64, Shape{4}, vector{1, 10, 5, 1}); + auto pads_begin = + make_shared(element::i64, Shape{4}, vector{0, 3, 1, 0}); + auto pads_end = make_shared(element::i64, Shape{4}, vector{0, 3, 0, 0}); + + auto batch_to_space = + make_shared(data, block_shape, pads_begin, pads_end); + + ASSERT_EQ(batch_to_space->get_element_type(), element::f32); + ASSERT_EQ(batch_to_space->get_output_partial_shape(0), PartialShape::dynamic()); +} diff --git a/ngraph/test/type_prop/binary_convolution.cpp b/ngraph/test/type_prop/binary_convolution.cpp index d6518a655c86cb..6f0cc7806388c8 100644 --- a/ngraph/test/type_prop/binary_convolution.cpp +++ b/ngraph/test/type_prop/binary_convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -21,7 +9,7 @@ using namespace std; using namespace ngraph; -TEST(type_prop, binary_conv_v1_partial_auto_padding_same) +TEST(type_prop, bin_convolution_auto_padding_same) { const PartialShape data_batch_shape{1, 1, 5, 5}; const PartialShape filters_shape{1, 1, 3, 3}; @@ -34,7 +22,7 @@ TEST(type_prop, binary_conv_v1_partial_auto_padding_same) const auto auto_pad = op::PadType::SAME_LOWER; auto data_batch = make_shared(element::f32, data_batch_shape); - auto filters = make_shared(element::f32, filters_shape); + auto filters = make_shared(element::u1, filters_shape); auto conv = make_shared( data_batch, filters, strides, pads_begin, pads_end, dilations, mode, pad_value, auto_pad); @@ -44,10 +32,10 @@ TEST(type_prop, binary_conv_v1_partial_auto_padding_same) ASSERT_EQ(conv->get_pads_end(), (CoordinateDiff{1, 1})); } -TEST(type_prop, binary_conv_v1_partial_auto_padding_same_nc_dims_dynamic_same_lower) +TEST(type_prop, bin_convolution_auto_padding_same_lower_spatial_dims_static) { const PartialShape data_batch_shape{Dimension::dynamic(), Dimension::dynamic(), 5, 5}; - const PartialShape filters_shape{1, 1, 3, 3}; + const PartialShape filters_shape{Dimension::dynamic(), Dimension::dynamic(), 3, 3}; Strides strides{1, 1}; CoordinateDiff pads_begin{0, 0}; CoordinateDiff pads_end{0, 0}; @@ -57,20 +45,21 @@ TEST(type_prop, binary_conv_v1_partial_auto_padding_same_nc_dims_dynamic_same_lo const auto auto_pad = op::PadType::SAME_LOWER; auto data_batch = make_shared(element::f32, data_batch_shape); - auto filters = make_shared(element::f32, filters_shape); + auto filters = make_shared(element::u1, filters_shape); auto conv = make_shared( data_batch, filters, strides, pads_begin, pads_end, dilations, mode, pad_value, auto_pad); - ASSERT_TRUE(conv->get_output_partial_shape(0).same_scheme({Dimension::dynamic(), 1, 5, 5})); + ASSERT_TRUE(conv->get_output_partial_shape(0).same_scheme( + {Dimension::dynamic(), Dimension::dynamic(), 5, 5})); ASSERT_EQ(conv->get_pads_begin(), (CoordinateDiff{1, 1})); ASSERT_EQ(conv->get_pads_end(), (CoordinateDiff{1, 1})); } -TEST(type_prop, binary_conv_v1_partial_auto_padding_same_nc_dims_dynamic_same_upper) +TEST(type_prop, bin_convolution_auto_padding_same_upper_spatial_dims_static) { const PartialShape data_batch_shape{Dimension::dynamic(), Dimension::dynamic(), 5, 5}; - const PartialShape filters_shape{1, 1, 2, 2}; + const PartialShape filters_shape{Dimension::dynamic(), Dimension::dynamic(), 2, 2}; Strides strides{1, 1}; CoordinateDiff pads_begin{0, 0}; CoordinateDiff pads_end{0, 0}; @@ -80,20 +69,21 @@ TEST(type_prop, binary_conv_v1_partial_auto_padding_same_nc_dims_dynamic_same_up const auto auto_pad = op::PadType::SAME_UPPER; auto data_batch = make_shared(element::f32, data_batch_shape); - auto filters = make_shared(element::f32, filters_shape); + auto filters = make_shared(element::u1, filters_shape); auto conv = make_shared( data_batch, filters, strides, pads_begin, pads_end, dilations, mode, pad_value, auto_pad); - ASSERT_TRUE(conv->get_output_partial_shape(0).same_scheme({Dimension::dynamic(), 1, 5, 5})); + ASSERT_TRUE(conv->get_output_partial_shape(0).same_scheme( + {Dimension::dynamic(), Dimension::dynamic(), 5, 5})); ASSERT_EQ(conv->get_pads_begin(), (CoordinateDiff{0, 0})); ASSERT_EQ(conv->get_pads_end(), (CoordinateDiff{1, 1})); } -TEST(type_prop, binary_conv_v1_partial_auto_padding_same_spatial_dims_dynamic) +TEST(type_prop, bin_convolution_auto_padding_same_data_batch_spatial_dims_dynamic) { const PartialShape data_batch_shape{1, 1, Dimension::dynamic(), 5}; - const PartialShape filters_shape{1, 1, 3, 3}; + const PartialShape filters_shape{Dimension::dynamic(), 1, 3, 3}; Strides strides{1, 1}; CoordinateDiff pads_begin{0, 0}; CoordinateDiff pads_end{0, 0}; @@ -103,12 +93,305 @@ TEST(type_prop, binary_conv_v1_partial_auto_padding_same_spatial_dims_dynamic) const auto auto_pad = op::PadType::SAME_LOWER; auto data_batch = make_shared(element::f32, data_batch_shape); - auto filters = make_shared(element::f32, filters_shape); + auto filters = make_shared(element::u1, filters_shape); auto conv = make_shared( data_batch, filters, strides, pads_begin, pads_end, dilations, mode, pad_value, auto_pad); - ASSERT_TRUE(conv->get_output_partial_shape(0).same_scheme({1, 1, Dimension::dynamic(), 5})); + ASSERT_TRUE(conv->get_output_partial_shape(0).same_scheme( + {1, Dimension::dynamic(), Dimension::dynamic(), 5})); ASSERT_EQ(conv->get_pads_begin(), (CoordinateDiff{0, 1})); ASSERT_EQ(conv->get_pads_end(), (CoordinateDiff{0, 1})); } + +TEST(type_prop, bin_convolution_dyn_data_batch) +{ + const auto mode = op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + const float pad_value = 1.0f; + const auto auto_pad = op::PadType::EXPLICIT; + + const auto data_batch = make_shared(element::f32, PartialShape::dynamic()); + const auto filters = make_shared(element::u1, PartialShape{1, 1, 3}); + const auto bin_conv = make_shared(data_batch, + filters, + Strides{}, + CoordinateDiff{}, + CoordinateDiff{}, + Strides{}, + mode, + pad_value, + auto_pad); + ASSERT_TRUE(bin_conv->get_output_partial_shape(0).rank().same_scheme(Rank{3})); + ASSERT_TRUE(bin_conv->get_output_partial_shape(0).same_scheme( + PartialShape{Dimension::dynamic(), 1, Dimension::dynamic()})); +} + +TEST(type_prop, bin_convolution_dyn_filters) +{ + const auto mode = op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + const float pad_value = 1.0f; + const auto auto_pad = op::PadType::EXPLICIT; + + const auto data_batch = make_shared(element::f32, PartialShape{1, 1, 5, 5}); + const auto filters = make_shared(element::u1, PartialShape::dynamic()); + const auto bin_conv = make_shared(data_batch, + filters, + Strides{}, + CoordinateDiff{}, + CoordinateDiff{}, + Strides{}, + mode, + pad_value, + auto_pad); + ASSERT_TRUE(bin_conv->get_output_partial_shape(0).rank().same_scheme(Rank{4})); + ASSERT_TRUE(bin_conv->get_output_partial_shape(0).same_scheme( + PartialShape{1, Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic()})); +} + +TEST(type_prop, bin_convolution_dyn_data_batch_and_filters) +{ + const auto mode = op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + const float pad_value = 1.0f; + const auto auto_pad = op::PadType::EXPLICIT; + + const auto data_batch = make_shared(element::f32, PartialShape::dynamic()); + const auto filters = make_shared(element::u1, PartialShape::dynamic()); + const auto bin_conv = make_shared(data_batch, + filters, + Strides{}, + CoordinateDiff{}, + CoordinateDiff{}, + Strides{}, + mode, + pad_value, + auto_pad); + ASSERT_TRUE(bin_conv->get_output_partial_shape(0).rank().is_dynamic()); + ASSERT_TRUE(bin_conv->get_output_partial_shape(0).same_scheme(PartialShape::dynamic())); +} + +TEST(type_prop, bin_convolution_invalid_inputs_et) +{ + const auto mode = op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + const float pad_value = 1.0f; + const auto auto_pad = op::PadType::EXPLICIT; + try + { + const auto data_batch = make_shared(element::i32, PartialShape{1, 1, 5, 5}); + const auto filters = make_shared(element::u1, PartialShape{1, 1, 3, 3}); + const auto bin_conv = make_shared(data_batch, + filters, + Strides{}, + CoordinateDiff{}, + CoordinateDiff{}, + Strides{}, + mode, + pad_value, + auto_pad); + // data batch element type must be float point + FAIL() << "Incompatible element type of data batch input not detected"; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), "Data batch element type must be float point"); + } + catch (...) + { + FAIL() << "Data batch element type validation check failed for unexpected reason"; + } + // TODO: Add test with check filters element type once u1 is supported in nGraph Python API + // (#49517) +} + +TEST(type_prop, bin_convolution_incompatible_input_channels) +{ + const auto mode = op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + const float pad_value = 1.0f; + const auto auto_pad = op::PadType::EXPLICIT; + + auto data_batch = make_shared(element::f32, PartialShape{1, 1, 5, 5}); + auto filters = make_shared(element::u1, PartialShape{1, 2, 3, 3}); + + try + { + auto conv = make_shared(data_batch, + filters, + Strides{}, + CoordinateDiff{}, + CoordinateDiff{}, + Strides{}, + mode, + pad_value, + auto_pad); + FAIL() << "Incompatible input channel dimension in data batch and filters not detected"; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), std::string("Data batch channel count")); + } + catch (...) + { + FAIL() << "Data batch and filters input channel count validation check failed for " + "unexpected reason"; + } +} + +TEST(type_prop, bin_convolution_invalid_input_ranks) +{ + const auto mode = op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + const float pad_value = 1.0f; + const auto auto_pad = op::PadType::EXPLICIT; + + // data partial shape provided is rank 4 (Conv2D) + // filter partial shape provided is rank 5 (Conv3D) + try + { + const auto data_batch = make_shared(element::f32, PartialShape{1, 1, 5, 5}); + const auto filters = make_shared(element::u1, PartialShape{1, 1, 3, 3, 3}); + const auto bin_conv = make_shared(data_batch, + filters, + Strides{}, + CoordinateDiff{}, + CoordinateDiff{}, + Strides{}, + mode, + pad_value, + auto_pad); + // data batch and filters have incompatible ranks + FAIL() << "Incompatible input ranks not detected"; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), + "Shapes for data batch and filters must have same rank."); + } + catch (...) + { + FAIL() << "Rank validation check of inputs failed for unexpected reason"; + } + + // data partial shape provided is rank 5 (Conv3D) + // filter partial shape provided is rank 4 (Conv2D) + try + { + const auto data_batch = + make_shared(element::f32, PartialShape{1, 1, 5, 5, 5}); + const auto filters = make_shared(element::u1, PartialShape{1, 1, 3, 3}); + const auto bin_conv = make_shared(data_batch, + filters, + Strides{}, + CoordinateDiff{}, + CoordinateDiff{}, + Strides{}, + mode, + pad_value, + auto_pad); + // data batch and filters have incompatible ranks + FAIL() << "Incompatible input ranks not detected"; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), + "Shapes for data batch and filters must have same rank."); + } + catch (...) + { + FAIL() << "Rank validation check of inputs failed for unexpected reason"; + } +} + +TEST(type_prop, bin_convolution_invalid_spatial_dims_parameters) +{ + Strides strides_1d{1}; + Strides strides_3d{1, 1, 1}; + + Strides dilations_2d{1, 1}; + Strides dilations_3d{1, 1, 1}; + + CoordinateDiff pads_end_2d{0, 0}; + CoordinateDiff pads_begin_3d{0, 0, 0}; + + const auto mode = op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + const float pad_value = 1.0f; + const auto auto_pad = op::PadType::EXPLICIT; + + try + { + const auto data_batch = make_shared(element::f32, PartialShape{1, 1, 5, 5}); + const auto filters = make_shared(element::u1, PartialShape{1, 1, 3, 3}); + const auto bin_conv = make_shared(data_batch, + filters, + strides_3d, + CoordinateDiff{}, + CoordinateDiff{}, + dilations_2d, + mode, + pad_value, + auto_pad); + // Strides have incompatible number of spatial dimensions + FAIL() << "Incompatible stride number of spatial dimensions not detected."; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING( + error.what(), + std::string("Strides should be defined for all and only spatial features.")); + } + catch (...) + { + FAIL() << "Strides validation check failed for unexpected reason."; + } + + try + { + const auto data_batch = make_shared(element::f32, PartialShape{1, 1, 5}); + const auto filters = make_shared(element::u1, PartialShape{1, 1, 3}); + const auto bin_conv = make_shared(data_batch, + filters, + strides_1d, + CoordinateDiff{}, + CoordinateDiff{}, + dilations_2d, + mode, + pad_value, + auto_pad); + // Dilations have incompatible number of spatial dimensions + FAIL() << "Incompatible dilations number of spatial dimensions not detected."; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING( + error.what(), + std::string("Dilations should be defined for all and only spatial features.")); + } + catch (...) + { + FAIL() << "Dilations validation check failed for unexpected reason."; + } + + try + { + const auto data_batch = + make_shared(element::f32, PartialShape{1, 1, 5, 5, 5}); + const auto filters = make_shared(element::u1, PartialShape{1, 1, 3, 3, 3}); + const auto bin_conv = make_shared(data_batch, + filters, + strides_3d, + pads_begin_3d, + pads_end_2d, + dilations_3d, + mode, + pad_value, + auto_pad); + // Pads have incompatible number of spatial dimensions + FAIL() << "Incompatible pads number of spatial dimensions not detected."; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING( + error.what(), std::string("Pads should be defined for all and only spatial features.")); + } + catch (...) + { + FAIL() << "Pads validation check failed for unexpected reason."; + } +} diff --git a/ngraph/test/type_prop/binary_elementwise.cpp b/ngraph/test/type_prop/binary_elementwise.cpp index b036fb73e48271..6f39b7bcbaef4d 100644 --- a/ngraph/test/type_prop/binary_elementwise.cpp +++ b/ngraph/test/type_prop/binary_elementwise.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -88,30 +76,6 @@ TEST(type_prop, add_bad_arguments) }); } -TEST(type_prop, divide_bad_arguments) -{ - test_binary("Divide", - [](const shared_ptr& x, const shared_ptr& y) -> shared_ptr { - return make_shared(x, y); - }); -} - -TEST(type_prop, multiply_bad_arguments) -{ - test_binary("Multiply", - [](const shared_ptr& x, const shared_ptr& y) -> shared_ptr { - return make_shared(x, y); - }); -} - -TEST(type_prop, subtract_bad_arguments) -{ - test_binary("Subtract", - [](const shared_ptr& x, const shared_ptr& y) -> shared_ptr { - return make_shared(x, y); - }); -} - // // Tests for binary elementwise logical ops. // @@ -179,7 +143,6 @@ void test_binary_logical(std::string /* node_type */, { FAIL() << "Deduced type check failed for unexpected reason"; } - }; test_binary_differ_arguments_view_element_types(tv0_2_4_param_0, tv0_2_4_param_2); @@ -216,9 +179,13 @@ void test_binary_eltwise_numpy(const element::Type& et, const op::AutoBroadcastS auto param2 = make_shared(et, Shape{3, 1}); auto param3 = make_shared(et, Shape{2, 3, 6}); auto param4 = make_shared(et, Shape{6}); + auto param5 = make_shared(et, Shape{}); + EXPECT_EQ(make_shared(param1, param2, autob)->get_shape(), (Shape{1, 3, 6})); EXPECT_EQ(make_shared(param1, param3, autob)->get_shape(), (Shape{2, 3, 6})); EXPECT_EQ(make_shared(param4, param3, autob)->get_shape(), (Shape{2, 3, 6})); + EXPECT_EQ(make_shared(param5, param3, autob)->get_shape(), (Shape{2, 3, 6})); + EXPECT_EQ(make_shared(param3, param5, autob)->get_shape(), (Shape{2, 3, 6})); auto pp1 = make_shared(et, PartialShape{1, Dimension::dynamic(), 6}); auto pp2 = make_shared(et, PartialShape{3, 1}); @@ -228,19 +195,14 @@ void test_binary_eltwise_numpy(const element::Type& et, const op::AutoBroadcastS TEST(type_prop, eltwise_auto_bcast) { test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); - test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); - test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); - test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::boolean, op::AutoBroadcastType::NUMPY); - test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); - test_binary_eltwise_numpy(element::f32, op::AutoBroadcastType::NUMPY); test_binary_eltwise_numpy(element::boolean, op::AutoBroadcastType::NUMPY); } @@ -274,6 +236,44 @@ TEST(type_prop, binary_arithmetic_bad_argument_element_types) } } +namespace +{ + template + void test_binary_eltwise_bad_argument_shape(const element::Type& et) + { + auto input1 = make_shared(element::f32, Shape{2, 4}); + auto input2 = make_shared(element::f32, Shape{1, 2, 4}); + try + { + auto bc = make_shared(input1, input2, op::AutoBroadcastType::NONE); + // Should have thrown, so fail if it didn't + FAIL() << "Did not detect incorrect element types for arithmetic operator"; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), std::string("Argument shapes are inconsistent")); + } + catch (...) + { + FAIL() << "Deduced type check failed for unexpected reason"; + } + } +} // namespace + +TEST(type_prop, binary_arithmetic_bad_argument_shape_with_none_autobroadcast_attribute) +{ + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::f32); + test_binary_eltwise_bad_argument_shape(element::boolean); + test_binary_eltwise_bad_argument_shape(element::boolean); +} + TEST(type_prop, binary_elementwise_arithmetic_both_dynamic) { auto a = make_shared(element::f32, PartialShape::dynamic()); diff --git a/ngraph/test/type_prop/broadcast.cpp b/ngraph/test/type_prop/broadcast.cpp index de5a784ffa26ef..b72f537271ab07 100644 --- a/ngraph/test/type_prop/broadcast.cpp +++ b/ngraph/test/type_prop/broadcast.cpp @@ -1,21 +1,10 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" +#include "ngraph/opsets/opset6.hpp" #include "util/type_prop.hpp" NGRAPH_SUPPRESS_DEPRECATED_START @@ -216,6 +205,19 @@ TYPED_TEST_P(BroadcastTests, broadcast_fully_dynamic_target_shape) ASSERT_TRUE(bc->get_output_partial_shape(0).is_dynamic()); } +TYPED_TEST_P(BroadcastTests, broadcast_dynamic_values_of_target_shape) +{ + const auto data = make_shared(element::f32, Shape{2}); + const auto target = make_shared(element::i32, PartialShape::dynamic(4)); + const auto target_shape = std::make_shared(target); + const auto axes_mapping = op::Constant::create(element::i64, Shape{1}, {1}); + + auto bc = make_shared(data, target_shape, axes_mapping); + ASSERT_TRUE(bc->get_output_partial_shape(0).is_dynamic()); + ASSERT_EQ(bc->get_output_partial_shape(0).rank().get_length(), 4); + ASSERT_EQ(bc->get_output_partial_shape(0), PartialShape::dynamic(4)); +} + TYPED_TEST_P(BroadcastTests, broadcast_broadcast_shape_et_wrong) { auto arg = make_shared(element::f32, Shape{2, 4}); @@ -626,6 +628,7 @@ REGISTER_TYPED_TEST_CASE_P(BroadcastTests, broadcast_fail_axes_map_shape, broadcast_axes_wrong_rank, broadcast_fully_dynamic_target_shape, + broadcast_dynamic_values_of_target_shape, broadcast_broadcast_shape_et_wrong, broadcast_axes_et_wrong, broadcast_explicit_all_inputs_dynamic, diff --git a/ngraph/test/type_prop/bucketize.cpp b/ngraph/test/type_prop/bucketize.cpp index 097312bcaf4d3b..316b140d1a3680 100644 --- a/ngraph/test/type_prop/bucketize.cpp +++ b/ngraph/test/type_prop/bucketize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/clamp.cpp b/ngraph/test/type_prop/clamp.cpp index 1f06018068fdd5..cb752b16c034b0 100644 --- a/ngraph/test/type_prop/clamp.cpp +++ b/ngraph/test/type_prop/clamp.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -21,23 +9,88 @@ using namespace std; using namespace ngraph; -TEST(type_prop, fused_clamp) +TEST(type_prop, clamp_basic_f32) +{ + auto data = make_shared(element::f32, Shape{1, 32, 32}); + auto clamp = make_shared(data, 0.0, 2.1); + + ASSERT_EQ(clamp->get_element_type(), element::f32); + ASSERT_EQ(clamp->get_min(), 0.0); + ASSERT_EQ(clamp->get_max(), 2.1); + ASSERT_EQ(clamp->get_output_shape(0), (Shape{1, 32, 32})); +} + +TEST(type_prop, clamp_basic_i32) +{ + auto data = make_shared(element::i32, Shape{1, 32, 32}); + auto clamp = make_shared(data, 0.0, 2.1); + + ASSERT_EQ(clamp->get_element_type(), element::i32); + ASSERT_EQ(clamp->get_min(), 0.0); + ASSERT_EQ(clamp->get_max(), 2.1); + ASSERT_EQ(clamp->get_output_shape(0), (Shape{1, 32, 32})); +} + +TEST(type_prop, clamp_shape_static_rank) +{ + auto data = make_shared( + element::f16, PartialShape{Dimension::dynamic(), Dimension::dynamic(), 32}); + auto clamp = make_shared(data, -2.1, 2.1); + + ASSERT_EQ(clamp->get_element_type(), element::f16); + ASSERT_EQ(clamp->get_min(), -2.1); + ASSERT_EQ(clamp->get_max(), 2.1); + ASSERT_EQ(clamp->get_output_partial_shape(0), + (PartialShape{Dimension::dynamic(), Dimension::dynamic(), 32})); +} + +TEST(type_prop, clamp_shape_dynamic) { - const auto data = make_shared(element::f64, Shape{2, 2}); + auto data = make_shared(element::u16, PartialShape::dynamic()); + auto clamp = make_shared(data, 1.5, 15.0); + + ASSERT_EQ(clamp->get_element_type(), element::u16); + ASSERT_EQ(clamp->get_min(), 1.5); + ASSERT_EQ(clamp->get_max(), 15.0); + ASSERT_EQ(clamp->get_output_partial_shape(0), (PartialShape::dynamic())); +} + +TEST(type_prop, clamp_invalid_element_type) +{ + auto data = make_shared(element::boolean, Shape{2, 2}); try { - const auto clamp = make_shared(data, 2.0, 1.0); - EXPECT_FALSE(clamp.get()) - << "Clamp validation did not work. Op node was created with incorrect params."; + auto clamp = make_shared(data, 0.5, 5.5); + // Input element type is boolean + FAIL() << "Invalid boolean element type for input not detected"; } catch (const NodeValidationFailure& error) { - EXPECT_HAS_SUBSTRING( - error.what(), std::string("The 'min' parameter needs to be less than 'max' for Clamp")); + EXPECT_HAS_SUBSTRING(error.what(), "Input element type must be numeric"); + } + catch (...) + { + FAIL() << "Numeric element type node validation check failed for unexpected reason"; } +} + +TEST(type_prop, clamp_invalid_attributes) +{ + auto data = make_shared(element::f64, Shape{2, 2}); - const auto clamp = make_shared(data, 1.0, 2.0); - EXPECT_EQ(clamp->get_element_type(), element::f64); - EXPECT_EQ(clamp->get_shape(), (Shape{2, 2})); + try + { + auto clamp = make_shared(data, 1.0, 1.0); + // Attribute 'max' not greater than 'min' + FAIL() << "Attribute 'min' equal to 'max' not detected"; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), "Attribute 'min' must be less than 'max'"); + } + catch (...) + { + FAIL() << "'min' and 'max' attributes node validation check failed for unexpected reason"; + } } diff --git a/ngraph/test/type_prop/concat.cpp b/ngraph/test/type_prop/concat.cpp index b8d82ff453cea2..27b0ccbca7d2f8 100644 --- a/ngraph/test/type_prop/concat.cpp +++ b/ngraph/test/type_prop/concat.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -38,7 +26,8 @@ TEST(type_prop, concat_deduce_wrong_rank) auto param1 = make_shared(element::f32, Shape{2, 7, 4}); auto param2 = make_shared(element::f32, Shape{ - 2, 2, + 2, + 2, }); try { @@ -367,3 +356,37 @@ TEST(type_prop, concat_partial_all_static_with_concat_axis_static_dims_incompati FAIL() << "Deduced type check failed for unexpected reason"; } } + +TEST(type_prop, concat_partial_negative_axis_correct) +{ + auto param0 = make_shared(element::f32, Shape{3, 2, 4}); + auto param1 = make_shared(element::f32, Shape{7, 2, 4}); + auto param2 = make_shared(element::f32, Shape{2, 2, 4}); + + auto c = make_shared(NodeVector{param0, param1, param2}, -3); + + ASSERT_EQ(c->get_element_type(), element::f32); + ASSERT_EQ(c->get_shape(), (Shape{12, 2, 4})); +} + +TEST(type_prop, concat_partial_negative_axis_incorrect) +{ + auto param0 = make_shared(element::f32, Shape{2, 3, 4}); + auto param1 = make_shared(element::f32, Shape{2, 7, 4}); + auto param2 = make_shared(element::f32, Shape{2, 2, 4}); + + try + { + auto c = make_shared(NodeVector{param0, param1, param2}, -4); + // Should have thrown, so fail if it didn't + FAIL() << "Incorrect negative axis value not detected (out of bounds)"; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), std::string("Concatenation axis (-1) is out of bounds")); + } + catch (...) + { + FAIL() << "Deduced type check failed for unexpected reason"; + } +} diff --git a/ngraph/test/type_prop/constant.cpp b/ngraph/test/type_prop/constant.cpp index 58282de1153706..50b889166ff7f6 100644 --- a/ngraph/test/type_prop/constant.cpp +++ b/ngraph/test/type_prop/constant.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/convert.cpp b/ngraph/test/type_prop/convert.cpp index bc8a4bf7a447c8..e774f7980cdac0 100644 --- a/ngraph/test/type_prop/convert.cpp +++ b/ngraph/test/type_prop/convert.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/convolution.cpp b/ngraph/test/type_prop/convolution.cpp index 6b37df6ab33451..e0f2328e3cd674 100644 --- a/ngraph/test/type_prop/convolution.cpp +++ b/ngraph/test/type_prop/convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "op/convolution.hpp" #include "gtest/gtest.h" diff --git a/ngraph/test/type_prop/ctc_greedy_decoder.cpp b/ngraph/test/type_prop/ctc_greedy_decoder.cpp index 16ebf736d700ca..90232ebc9648a1 100644 --- a/ngraph/test/type_prop/ctc_greedy_decoder.cpp +++ b/ngraph/test/type_prop/ctc_greedy_decoder.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/ctc_greedy_decoder_seq_len.cpp b/ngraph/test/type_prop/ctc_greedy_decoder_seq_len.cpp index c1847653d24292..b4689482b8031c 100644 --- a/ngraph/test/type_prop/ctc_greedy_decoder_seq_len.cpp +++ b/ngraph/test/type_prop/ctc_greedy_decoder_seq_len.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/ctc_loss.cpp b/ngraph/test/type_prop/ctc_loss.cpp index 6afeba7a23b1c7..438ef675299680 100644 --- a/ngraph/test/type_prop/ctc_loss.cpp +++ b/ngraph/test/type_prop/ctc_loss.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/deformable_convolution.cpp b/ngraph/test/type_prop/deformable_convolution.cpp index 2ebcd69672c05a..3b1935967cb564 100644 --- a/ngraph/test/type_prop/deformable_convolution.cpp +++ b/ngraph/test/type_prop/deformable_convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/deformable_psroi_pooling.cpp b/ngraph/test/type_prop/deformable_psroi_pooling.cpp index 76b2fe01bcd720..3c1509f2518e3d 100644 --- a/ngraph/test/type_prop/deformable_psroi_pooling.cpp +++ b/ngraph/test/type_prop/deformable_psroi_pooling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/depth_to_space.cpp b/ngraph/test/type_prop/depth_to_space.cpp index 16431eb01dfe76..d5f07228810c60 100644 --- a/ngraph/test/type_prop/depth_to_space.cpp +++ b/ngraph/test/type_prop/depth_to_space.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -112,3 +100,23 @@ TEST(type_prop, depth_to_space_blocksize_not_matched) FAIL() << "DepthToSpace decomposition failed for unexpected reason"; } } + +TEST(type_prop, depth_to_space_dynamic_shape_static_rank) +{ + auto A = make_shared(element::f32, PartialShape::dynamic(4)); + auto space_to_depth = + make_shared(A, op::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST, 2); + + ASSERT_EQ(space_to_depth->get_element_type(), element::f32); + ASSERT_EQ(space_to_depth->get_output_partial_shape(0), PartialShape::dynamic(4)); +} + +TEST(type_prop, depth_to_space_dynamic_shape_dynamic_rank) +{ + auto A = make_shared(element::f32, PartialShape::dynamic()); + auto space_to_depth = + make_shared(A, op::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST, 2); + + ASSERT_EQ(space_to_depth->get_element_type(), element::f32); + ASSERT_EQ(space_to_depth->get_output_partial_shape(0), PartialShape::dynamic()); +} diff --git a/ngraph/test/type_prop/detection_output.cpp b/ngraph/test/type_prop/detection_output.cpp index 18fb9ab2578c18..75a91b469f4181 100644 --- a/ngraph/test/type_prop/detection_output.cpp +++ b/ngraph/test/type_prop/detection_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/type_prop/dft.cpp b/ngraph/test/type_prop/dft.cpp new file mode 100644 index 00000000000000..c1fce89e03850c --- /dev/null +++ b/ngraph/test/type_prop/dft.cpp @@ -0,0 +1,346 @@ +//***************************************************************************** +// Copyright 2017-2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "util/type_prop.hpp" + +using namespace ngraph; + +struct ConstantAxesAndConstantSignalSizeTestParams +{ + PartialShape input_shape; + Shape axes_shape; + Shape signal_size_shape; + PartialShape ref_output_shape; + std::vector axes; + std::vector signal_size; +}; + +struct ConstantAxesAndConstantSignalSizeTest + : ::testing::TestWithParam +{ +}; + +TEST_P(ConstantAxesAndConstantSignalSizeTest, dft_constant_axes_and_signal_size) +{ + auto params = GetParam(); + + auto data = std::make_shared(element::f32, params.input_shape); + auto axes_input = op::Constant::create(element::i64, params.axes_shape, params.axes); + + std::shared_ptr dft; + if (params.signal_size.empty()) + { + dft = std::make_shared(data, axes_input); + } + else + { + auto signal_size_input = op::Constant::create( + element::i64, params.signal_size_shape, params.signal_size); + dft = std::make_shared(data, axes_input, signal_size_input); + } + + EXPECT_EQ(dft->get_element_type(), element::f32); + ASSERT_TRUE(dft->get_output_partial_shape(0).same_scheme(params.ref_output_shape)); +} + +INSTANTIATE_TEST_CASE_P( + type_prop, + ConstantAxesAndConstantSignalSizeTest, + ::testing::Values( + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, Shape{}, {2, 180, 180, 2}, {1, 2}, {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, Shape{}, {2, 180, 180, 2}, {2, 0}, {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {16, 500, 180, 369, 2}, {3}, Shape{}, {16, 500, 180, 369, 2}, {0, 3, 1}, {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, 180, 180, Dimension(1, 18)}, + {2}, + Shape{}, + {2, 180, 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, 180, Dimension(7, 500), 2}, + {2}, + Shape{}, + {2, 180, Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {2, 180, Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(7, 500), 180, 2}, + {2}, + Shape{}, + {2, Dimension(7, 500), 180, 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + Shape{}, + {2, Dimension(7, 500), 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + Shape{}, + {2, Dimension(7, 500), Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {2, Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), 180, 180, 2}, + {2}, + Shape{}, + {Dimension(0, 2), 180, 180, 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), 180, 180, Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), 180, 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), 180, Dimension(7, 500), 2}, + {2}, + Shape{}, + {Dimension(0, 2), 180, Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), 180, Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), Dimension(7, 500), 180, 2}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), 180, 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, {2}, {2, 180, 77, 2}, {1, 2}, {-1, 77}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, {2}, {87, 180, 390, 2}, {2, 0}, {390, 87}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {7, 50, 130, 400, 2}, {3}, {3}, {7, 40, 130, 600, 2}, {3, 0, 1}, {600, -1, 40}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(0, 200), 180, 2}, + {2}, + {2}, + {2, Dimension(0, 200), 77, 2}, + {1, 2}, + {-1, 77}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 18), 180, Dimension(0, 400), 2}, + {2}, + {2}, + {87, 180, 390, 2}, + {2, 0}, + {390, 87}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(8, 129), 50, 130, Dimension(0, 500), 2}, + {3}, + {3}, + {Dimension(8, 129), 40, 130, 600, 2}, + {3, 0, 1}, + {600, -1, 40}}), + PrintToDummyParamName()); + +TEST(type_prop, dft_dynamic_axes) +{ + const auto input_shape = PartialShape{2, 180, 180, Dimension(1, 18)}; + const auto axes_shape = PartialShape::dynamic(); + const auto ref_output_shape = PartialShape{Dimension::dynamic(), + Dimension::dynamic(), + Dimension::dynamic(), + Dimension(1, 18)}; + + auto data = std::make_shared(element::f32, input_shape); + auto axes_input = std::make_shared(element::i64, axes_shape); + auto dft = std::make_shared(data, axes_input); + + EXPECT_EQ(dft->get_element_type(), element::f32); + ASSERT_TRUE(dft->get_output_partial_shape(0).same_scheme(ref_output_shape)); +} + +struct NonConstantAxesTestParams +{ + PartialShape input_shape; + Shape axes_shape; + PartialShape ref_output_shape; +}; + +struct NonConstantAxesTest : ::testing::TestWithParam +{ +}; + +TEST_P(NonConstantAxesTest, dft_non_constant_axes) +{ + auto params = GetParam(); + + auto data = std::make_shared(element::f32, params.input_shape); + auto axes_input = std::make_shared(element::i64, params.axes_shape); + auto dft = std::make_shared(data, axes_input); + + EXPECT_EQ(dft->get_element_type(), element::f32); + ASSERT_TRUE(dft->get_output_partial_shape(0).same_scheme(params.ref_output_shape)); +} + +INSTANTIATE_TEST_CASE_P( + type_prop, + NonConstantAxesTest, + ::testing::Values( + NonConstantAxesTestParams{ + {2, 180, 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {2, 180, Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {2, 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), 180, 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, 180, 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), 180, 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}), + PrintToDummyParamName()); + +struct NonConstantSignalSizeTestParams +{ + PartialShape input_shape; + Shape axes_shape; + Shape signal_size_shape; + PartialShape ref_output_shape; + std::vector axes; +}; + +struct NonConstantSignalSizeTest : ::testing::TestWithParam +{ +}; + +TEST_P(NonConstantSignalSizeTest, dft_non_constant_signal_size) +{ + auto params = GetParam(); + + auto data = std::make_shared(element::f32, params.input_shape); + auto axes_input = op::Constant::create(element::i64, params.axes_shape, params.axes); + auto signal_size_input = + std::make_shared(element::i64, params.signal_size_shape); + auto dft = std::make_shared(data, axes_input, signal_size_input); + + EXPECT_EQ(dft->get_element_type(), element::f32); + ASSERT_TRUE(dft->get_output_partial_shape(0).same_scheme(params.ref_output_shape)); +} + +INSTANTIATE_TEST_CASE_P( + type_prop, + NonConstantSignalSizeTest, + ::testing::Values( + NonConstantSignalSizeTestParams{{2, Dimension(0, 200), 180, 2}, + {2}, + {2}, + {2, Dimension::dynamic(), Dimension::dynamic(), 2}, + {1, 2}}, + NonConstantSignalSizeTestParams{{Dimension(0, 18), 180, Dimension(0, 400), 2}, + {2}, + {2}, + {Dimension::dynamic(), 180, Dimension::dynamic(), 2}, + {2, 0}}, + NonConstantSignalSizeTestParams{ + {Dimension(8, 129), 50, 130, Dimension(0, 500), 2}, + {3}, + {3}, + {Dimension::dynamic(), Dimension::dynamic(), 130, Dimension::dynamic(), 2}, + {3, 0, 1}}), + PrintToDummyParamName()); diff --git a/ngraph/test/type_prop/divide.cpp b/ngraph/test/type_prop/divide.cpp new file mode 100644 index 00000000000000..599312f77cf3f9 --- /dev/null +++ b/ngraph/test/type_prop/divide.cpp @@ -0,0 +1,21 @@ +//***************************************************************************** +// Copyright 2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "arithmetic_ops.hpp" + +using Type = ::testing::Types; + +INSTANTIATE_TYPED_TEST_CASE_P(type_prop_divide, ArithmeticOperator, Type); diff --git a/ngraph/test/type_prop/dyn_reshape.cpp b/ngraph/test/type_prop/dyn_reshape.cpp index d6b62c45f2b932..eec5905141be1c 100644 --- a/ngraph/test/type_prop/dyn_reshape.cpp +++ b/ngraph/test/type_prop/dyn_reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/elu.cpp b/ngraph/test/type_prop/elu.cpp index 3318fabce04ce6..4a6dcf67d0a956 100644 --- a/ngraph/test/type_prop/elu.cpp +++ b/ngraph/test/type_prop/elu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/embedding_segments_sum.cpp b/ngraph/test/type_prop/embedding_segments_sum.cpp index e27e917021f810..08692c9bbb243c 100644 --- a/ngraph/test/type_prop/embedding_segments_sum.cpp +++ b/ngraph/test/type_prop/embedding_segments_sum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/embeddingbag_offsetssum.cpp b/ngraph/test/type_prop/embeddingbag_offsetssum.cpp index 53aa1e92e8ee91..4ae9be29b135f8 100644 --- a/ngraph/test/type_prop/embeddingbag_offsetssum.cpp +++ b/ngraph/test/type_prop/embeddingbag_offsetssum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/embeddingbag_packedsum.cpp b/ngraph/test/type_prop/embeddingbag_packedsum.cpp index e9bf633d43f3ea..a013e01bdbbcd8 100644 --- a/ngraph/test/type_prop/embeddingbag_packedsum.cpp +++ b/ngraph/test/type_prop/embeddingbag_packedsum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/experimental_detectron_detection_output.cpp b/ngraph/test/type_prop/experimental_detectron_detection_output.cpp index 1c74a94d33889a..fe00f7e7cf9b28 100644 --- a/ngraph/test/type_prop/experimental_detectron_detection_output.cpp +++ b/ngraph/test/type_prop/experimental_detectron_detection_output.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/type_prop/experimental_detectron_generate_proposals.cpp b/ngraph/test/type_prop/experimental_detectron_generate_proposals.cpp index 1400cc79ada14a..86afea80b1b2cd 100644 --- a/ngraph/test/type_prop/experimental_detectron_generate_proposals.cpp +++ b/ngraph/test/type_prop/experimental_detectron_generate_proposals.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/type_prop/experimental_detectron_prior_grid_generator.cpp b/ngraph/test/type_prop/experimental_detectron_prior_grid_generator.cpp index 863b50a1e9ff3c..6f7b9024d491ed 100644 --- a/ngraph/test/type_prop/experimental_detectron_prior_grid_generator.cpp +++ b/ngraph/test/type_prop/experimental_detectron_prior_grid_generator.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/type_prop/experimental_detectron_roi_feature_extractor.cpp b/ngraph/test/type_prop/experimental_detectron_roi_feature_extractor.cpp index b6942a585feddd..f2fa6d26613ec9 100644 --- a/ngraph/test/type_prop/experimental_detectron_roi_feature_extractor.cpp +++ b/ngraph/test/type_prop/experimental_detectron_roi_feature_extractor.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/type_prop/experimental_detectron_topkrois.cpp b/ngraph/test/type_prop/experimental_detectron_topkrois.cpp index 32b1db191cb385..e4b1161d2d1035 100644 --- a/ngraph/test/type_prop/experimental_detectron_topkrois.cpp +++ b/ngraph/test/type_prop/experimental_detectron_topkrois.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include diff --git a/ngraph/test/type_prop/extractimagepatches.cpp b/ngraph/test/type_prop/extractimagepatches.cpp index 40898b4fca7407..4b77ad647397e3 100644 --- a/ngraph/test/type_prop/extractimagepatches.cpp +++ b/ngraph/test/type_prop/extractimagepatches.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/fake_quantize.cpp b/ngraph/test/type_prop/fake_quantize.cpp index 8014ab686ba9a1..0488d9a755ab53 100644 --- a/ngraph/test/type_prop/fake_quantize.cpp +++ b/ngraph/test/type_prop/fake_quantize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/gather.cpp b/ngraph/test/type_prop/gather.cpp index 6a640cb371f9b2..151ef437e9c519 100644 --- a/ngraph/test/type_prop/gather.cpp +++ b/ngraph/test/type_prop/gather.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/gather_elements.cpp b/ngraph/test/type_prop/gather_elements.cpp index 06a80fdf46670d..d496ef0721f112 100644 --- a/ngraph/test/type_prop/gather_elements.cpp +++ b/ngraph/test/type_prop/gather_elements.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/gather_nd.cpp b/ngraph/test/type_prop/gather_nd.cpp index e058af885b44ee..b59457405e5145 100644 --- a/ngraph/test/type_prop/gather_nd.cpp +++ b/ngraph/test/type_prop/gather_nd.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/gather_tree.cpp b/ngraph/test/type_prop/gather_tree.cpp index 9aa6728bff9f37..485663d18ab8ad 100644 --- a/ngraph/test/type_prop/gather_tree.cpp +++ b/ngraph/test/type_prop/gather_tree.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/grn.cpp b/ngraph/test/type_prop/grn.cpp index 72b06026565497..d3299f1982540d 100644 --- a/ngraph/test/type_prop/grn.cpp +++ b/ngraph/test/type_prop/grn.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/group_convolution.cpp b/ngraph/test/type_prop/group_convolution.cpp index f6aa43412e92ba..50d1041ccb5008 100644 --- a/ngraph/test/type_prop/group_convolution.cpp +++ b/ngraph/test/type_prop/group_convolution.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/group_convolution_backprop_data.cpp b/ngraph/test/type_prop/group_convolution_backprop_data.cpp index 2d76807ca25fca..0e0897d91f823f 100644 --- a/ngraph/test/type_prop/group_convolution_backprop_data.cpp +++ b/ngraph/test/type_prop/group_convolution_backprop_data.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/gru_cell.cpp b/ngraph/test/type_prop/gru_cell.cpp index 58dcaedd7d07e7..c35653d3568300 100644 --- a/ngraph/test/type_prop/gru_cell.cpp +++ b/ngraph/test/type_prop/gru_cell.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/gru_sequence.cpp b/ngraph/test/type_prop/gru_sequence.cpp index 27eb88a3fb181d..d1e3c28acd0366 100644 --- a/ngraph/test/type_prop/gru_sequence.cpp +++ b/ngraph/test/type_prop/gru_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/hard_sigmoid.cpp b/ngraph/test/type_prop/hard_sigmoid.cpp index c927871804a33a..dc37082a01f016 100644 --- a/ngraph/test/type_prop/hard_sigmoid.cpp +++ b/ngraph/test/type_prop/hard_sigmoid.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/hsigmoid.cpp b/ngraph/test/type_prop/hsigmoid.cpp index e5164756843622..5377204aed4af7 100644 --- a/ngraph/test/type_prop/hsigmoid.cpp +++ b/ngraph/test/type_prop/hsigmoid.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/hswish.cpp b/ngraph/test/type_prop/hswish.cpp index 8296ec3b001120..c4ef9249877015 100644 --- a/ngraph/test/type_prop/hswish.cpp +++ b/ngraph/test/type_prop/hswish.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/idft.cpp b/ngraph/test/type_prop/idft.cpp new file mode 100644 index 00000000000000..9fdd315a2b3242 --- /dev/null +++ b/ngraph/test/type_prop/idft.cpp @@ -0,0 +1,334 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "util/type_prop.hpp" + +using namespace ngraph; + +struct ConstantAxesAndConstantSignalSizeTestParams +{ + PartialShape input_shape; + Shape axes_shape; + Shape signal_size_shape; + PartialShape ref_output_shape; + std::vector axes; + std::vector signal_size; +}; + +struct ConstantAxesAndConstantSignalSizeTest + : ::testing::TestWithParam +{ +}; + +TEST_P(ConstantAxesAndConstantSignalSizeTest, idft_constant_axes_and_signal_size) +{ + auto params = GetParam(); + + auto data = std::make_shared(element::f32, params.input_shape); + auto axes_input = op::Constant::create(element::i64, params.axes_shape, params.axes); + + std::shared_ptr idft; + if (params.signal_size.empty()) + { + idft = std::make_shared(data, axes_input); + } + else + { + auto signal_size_input = op::Constant::create( + element::i64, params.signal_size_shape, params.signal_size); + idft = std::make_shared(data, axes_input, signal_size_input); + } + + EXPECT_EQ(idft->get_element_type(), element::f32); + ASSERT_TRUE(idft->get_output_partial_shape(0).same_scheme(params.ref_output_shape)); +} + +INSTANTIATE_TEST_CASE_P( + type_prop, + ConstantAxesAndConstantSignalSizeTest, + ::testing::Values( + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, Shape{}, {2, 180, 180, 2}, {1, 2}, {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, Shape{}, {2, 180, 180, 2}, {2, 0}, {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {16, 500, 180, 369, 2}, {3}, Shape{}, {16, 500, 180, 369, 2}, {0, 3, 1}, {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, 180, 180, Dimension(1, 18)}, + {2}, + Shape{}, + {2, 180, 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, 180, Dimension(7, 500), 2}, + {2}, + Shape{}, + {2, 180, Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {2, 180, Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(7, 500), 180, 2}, + {2}, + Shape{}, + {2, Dimension(7, 500), 180, 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + Shape{}, + {2, Dimension(7, 500), 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + Shape{}, + {2, Dimension(7, 500), Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {2, Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), 180, 180, 2}, + {2}, + Shape{}, + {Dimension(0, 2), 180, 180, 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), 180, 180, Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), 180, 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), 180, Dimension(7, 500), 2}, + {2}, + Shape{}, + {Dimension(0, 2), 180, Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), 180, Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 2), Dimension(7, 500), 180, 2}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), 180, 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), 180, Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), 2}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + Shape{}, + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {1, 2}, + {}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, {2}, {2, 180, 77, 2}, {1, 2}, {-1, 77}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {2, 180, 180, 2}, {2}, {2}, {87, 180, 390, 2}, {2, 0}, {390, 87}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {7, 50, 130, 400, 2}, {3}, {3}, {7, 40, 130, 600, 2}, {3, 0, 1}, {600, -1, 40}}, + ConstantAxesAndConstantSignalSizeTestParams{{2, Dimension(0, 200), 180, 2}, + {2}, + {2}, + {2, Dimension(0, 200), 77, 2}, + {1, 2}, + {-1, 77}}, + ConstantAxesAndConstantSignalSizeTestParams{{Dimension(0, 18), 180, Dimension(0, 400), 2}, + {2}, + {2}, + {87, 180, 390, 2}, + {2, 0}, + {390, 87}}, + ConstantAxesAndConstantSignalSizeTestParams{ + {Dimension(8, 129), 50, 130, Dimension(0, 500), 2}, + {3}, + {3}, + {Dimension(8, 129), 40, 130, 600, 2}, + {3, 0, 1}, + {600, -1, 40}}), + PrintToDummyParamName()); + +TEST(type_prop, idft_dynamic_axes) +{ + const auto input_shape = PartialShape{2, 180, 180, Dimension(1, 18)}; + const auto axes_shape = PartialShape::dynamic(); + const auto ref_output_shape = PartialShape{Dimension::dynamic(), + Dimension::dynamic(), + Dimension::dynamic(), + Dimension(1, 18)}; + + auto data = std::make_shared(element::f32, input_shape); + auto axes_input = std::make_shared(element::i64, axes_shape); + auto idft = std::make_shared(data, axes_input); + + EXPECT_EQ(idft->get_element_type(), element::f32); + ASSERT_TRUE(idft->get_output_partial_shape(0).same_scheme(ref_output_shape)); +} + +struct NonConstantAxesTestParams +{ + PartialShape input_shape; + Shape axes_shape; + PartialShape ref_output_shape; +}; + +struct NonConstantAxesTest : ::testing::TestWithParam +{ +}; + +TEST_P(NonConstantAxesTest, idft_non_constant_axes) +{ + auto params = GetParam(); + + auto data = std::make_shared(element::f32, params.input_shape); + auto axes_input = std::make_shared(element::i64, params.axes_shape); + auto idft = std::make_shared(data, axes_input); + + EXPECT_EQ(idft->get_element_type(), element::f32); + ASSERT_TRUE(idft->get_output_partial_shape(0).same_scheme(params.ref_output_shape)); +} + +INSTANTIATE_TEST_CASE_P( + type_prop, + NonConstantAxesTest, + ::testing::Values( + NonConstantAxesTestParams{ + {2, 180, 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {2, 180, Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {2, 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), 180, 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {2, Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, 180, 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), 180, Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), 180, 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), 180, Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), 2}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), 2}}, + NonConstantAxesTestParams{ + {Dimension(0, 2), Dimension(7, 500), Dimension(7, 500), Dimension(1, 18)}, + {2}, + {Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension(1, 18)}}), + PrintToDummyParamName()); + +struct NonConstantSignalSizeTestParams +{ + PartialShape input_shape; + Shape axes_shape; + Shape signal_size_shape; + PartialShape ref_output_shape; + std::vector axes; +}; + +struct NonConstantSignalSizeTest : ::testing::TestWithParam +{ +}; + +TEST_P(NonConstantSignalSizeTest, idft_non_constant_signal_size) +{ + auto params = GetParam(); + + auto data = std::make_shared(element::f32, params.input_shape); + auto axes_input = op::Constant::create(element::i64, params.axes_shape, params.axes); + auto signal_size_input = + std::make_shared(element::i64, params.signal_size_shape); + auto idft = std::make_shared(data, axes_input, signal_size_input); + + EXPECT_EQ(idft->get_element_type(), element::f32); + ASSERT_TRUE(idft->get_output_partial_shape(0).same_scheme(params.ref_output_shape)); +} + +INSTANTIATE_TEST_CASE_P( + type_prop, + NonConstantSignalSizeTest, + ::testing::Values( + NonConstantSignalSizeTestParams{{2, Dimension(0, 200), 180, 2}, + {2}, + {2}, + {2, Dimension::dynamic(), Dimension::dynamic(), 2}, + {1, 2}}, + NonConstantSignalSizeTestParams{{Dimension(0, 18), 180, Dimension(0, 400), 2}, + {2}, + {2}, + {Dimension::dynamic(), 180, Dimension::dynamic(), 2}, + {2, 0}}, + NonConstantSignalSizeTestParams{ + {Dimension(8, 129), 50, 130, Dimension(0, 500), 2}, + {3}, + {3}, + {Dimension::dynamic(), Dimension::dynamic(), 130, Dimension::dynamic(), 2}, + {3, 0, 1}}), + PrintToDummyParamName()); diff --git a/ngraph/test/type_prop/interpolate.cpp b/ngraph/test/type_prop/interpolate.cpp index 83b81b9f16e6b5..504b8f8acccb1e 100644 --- a/ngraph/test/type_prop/interpolate.cpp +++ b/ngraph/test/type_prop/interpolate.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -210,3 +198,28 @@ TEST(type_prop, interpolate_v4_partial_static_rank3) ASSERT_TRUE(interp->get_output_partial_shape(0).same_scheme(out_shape)); ASSERT_TRUE(interp->get_output_partial_shape(0).rank().is_static()); } + +TEST(type_prop, interpolate_v4_interval_logic) +{ + auto image = std::make_shared( + element::f32, PartialShape{2, 2, Dimension(12, 800), Dimension(0, -1), Dimension(24, -1)}); + auto target_shape = std::make_shared(element::i32, Shape{3}); + auto scales = op::Constant::create(element::f32, Shape{3}, {0.5f, 0.25f, 0.125f}); + auto axes = op::Constant::create(element::i64, Shape{3}, {2, 3, 4}); + + const auto out_shape = PartialShape{2, 2, Dimension(6, 400), Dimension(0, -1), Dimension(3, -1)}; + + InterpolateAttrs attrs; + attrs.mode = InterpolateMode::nearest; + attrs.shape_calculation_mode = ShapeCalcMode::scales; + attrs.coordinate_transformation_mode = CoordinateTransformMode::half_pixel; + attrs.nearest_mode = Nearest_mode::round_prefer_floor; + attrs.antialias = false; + attrs.pads_begin = {0, 0, 0, 0, 0}; + attrs.pads_end = {0, 0, 0, 0, 0}; + attrs.cube_coeff = -0.75; + auto interp = std::make_shared(image, target_shape, scales, axes, attrs); + + EXPECT_EQ(interp->get_element_type(), element::f32); + ASSERT_TRUE(interp->get_output_partial_shape(0).same_scheme(out_shape)); +} diff --git a/ngraph/test/type_prop/log_softmax.cpp b/ngraph/test/type_prop/log_softmax.cpp index 684180f9a8f6d2..16a5052156801c 100644 --- a/ngraph/test/type_prop/log_softmax.cpp +++ b/ngraph/test/type_prop/log_softmax.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/loop.cpp b/ngraph/test/type_prop/loop.cpp index ba43967042f0dc..973e7ad8d31049 100644 --- a/ngraph/test/type_prop/loop.cpp +++ b/ngraph/test/type_prop/loop.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/lrn.cpp b/ngraph/test/type_prop/lrn.cpp index de117490c7f112..d54bae2c2c902e 100644 --- a/ngraph/test/type_prop/lrn.cpp +++ b/ngraph/test/type_prop/lrn.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/lstm_cell.cpp b/ngraph/test/type_prop/lstm_cell.cpp index df91e485594b09..461a334a34e1c2 100644 --- a/ngraph/test/type_prop/lstm_cell.cpp +++ b/ngraph/test/type_prop/lstm_cell.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/lstm_sequence.cpp b/ngraph/test/type_prop/lstm_sequence.cpp index d58a84d745bcff..f681c9e4a3338f 100644 --- a/ngraph/test/type_prop/lstm_sequence.cpp +++ b/ngraph/test/type_prop/lstm_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/matmul.cpp b/ngraph/test/type_prop/matmul.cpp index 9b9afc704bf94a..d3dc9235bf3d6e 100644 --- a/ngraph/test/type_prop/matmul.cpp +++ b/ngraph/test/type_prop/matmul.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/max_pool.cpp b/ngraph/test/type_prop/max_pool.cpp index d5a8572f331b85..3c6391a52137ab 100644 --- a/ngraph/test/type_prop/max_pool.cpp +++ b/ngraph/test/type_prop/max_pool.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/minimum.cpp b/ngraph/test/type_prop/minimum.cpp new file mode 100644 index 00000000000000..f62373923d52dc --- /dev/null +++ b/ngraph/test/type_prop/minimum.cpp @@ -0,0 +1,9 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "arithmetic_ops.hpp" + +using Type = ::testing::Types; + +INSTANTIATE_TYPED_TEST_CASE_P(type_prop_minimum, ArithmeticOperator, Type); diff --git a/ngraph/test/type_prop/mish.cpp b/ngraph/test/type_prop/mish.cpp index 75854632fda1e5..ff9da495d01f58 100644 --- a/ngraph/test/type_prop/mish.cpp +++ b/ngraph/test/type_prop/mish.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/multiply.cpp b/ngraph/test/type_prop/multiply.cpp new file mode 100644 index 00000000000000..423aaa78ace54f --- /dev/null +++ b/ngraph/test/type_prop/multiply.cpp @@ -0,0 +1,21 @@ +//***************************************************************************** +// Copyright 2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "arithmetic_ops.hpp" + +using Type = ::testing::Types; + +INSTANTIATE_TYPED_TEST_CASE_P(type_prop_multiply, ArithmeticOperator, Type); diff --git a/ngraph/test/type_prop/mvn.cpp b/ngraph/test/type_prop/mvn.cpp index ca50467b481942..04ebf597e84e54 100644 --- a/ngraph/test/type_prop/mvn.cpp +++ b/ngraph/test/type_prop/mvn.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/non_max_suppression.cpp b/ngraph/test/type_prop/non_max_suppression.cpp index 684c9c5462e50a..25287bc59cd72c 100644 --- a/ngraph/test/type_prop/non_max_suppression.cpp +++ b/ngraph/test/type_prop/non_max_suppression.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/non_zero.cpp b/ngraph/test/type_prop/non_zero.cpp index 3aea6789b17830..0a2c4e4f5db9ce 100644 --- a/ngraph/test/type_prop/non_zero.cpp +++ b/ngraph/test/type_prop/non_zero.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/normalize.cpp b/ngraph/test/type_prop/normalize.cpp index d1bbf08235c744..e9b236c177aac6 100644 --- a/ngraph/test/type_prop/normalize.cpp +++ b/ngraph/test/type_prop/normalize.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/one_hot.cpp b/ngraph/test/type_prop/one_hot.cpp index c55a393afdcf67..ac9fb14e85b19a 100644 --- a/ngraph/test/type_prop/one_hot.cpp +++ b/ngraph/test/type_prop/one_hot.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -194,3 +182,36 @@ TEST(type_prop, one_hot_v1_off_value_not_scalar) FAIL() << "Deduced type check failed for unexpected reason"; } } + +TEST(type_prop, one_hot_v1_out_types_1) +{ + auto indices = make_shared(element::i32, Shape{3, 2}); + auto depth = op::Constant::create(element::i32, Shape{}, {2}); + int64_t axis = -1; + auto on_value = op::Constant::create(element::f32, Shape{}, {-3.3}); + auto off_value = op::Constant::create(element::f32, Shape{}, {-10.12}); + auto ont_hot = make_shared(indices, depth, on_value, off_value, axis); + ASSERT_EQ(ont_hot->get_element_type(), element::f32); +} + +TEST(type_prop, one_hot_v1_out_types_2) +{ + auto indices = make_shared(element::i64, Shape{3, 2}); + auto depth = op::Constant::create(element::i32, Shape{}, {2}); + int64_t axis = -1; + auto on_value = op::Constant::create(element::i32, Shape{}, {-1}); + auto off_value = op::Constant::create(element::i32, Shape{}, {7}); + auto ont_hot = make_shared(indices, depth, on_value, off_value, axis); + ASSERT_EQ(ont_hot->get_element_type(), element::i32); +} + +TEST(type_prop, one_hot_v1_out_types_3) +{ + auto indices = make_shared(element::i32, Shape{3, 2}); + auto depth = op::Constant::create(element::i32, Shape{}, {2}); + int64_t axis = -1; + auto on_value = op::Constant::create(element::boolean, Shape{}, {true}); + auto off_value = op::Constant::create(element::boolean, Shape{}, {false}); + auto ont_hot = make_shared(indices, depth, on_value, off_value, axis); + ASSERT_EQ(ont_hot->get_element_type(), element::boolean); +} \ No newline at end of file diff --git a/ngraph/test/type_prop/pad.cpp b/ngraph/test/type_prop/pad.cpp index 932e043ce338ba..cc63171d135a80 100644 --- a/ngraph/test/type_prop/pad.cpp +++ b/ngraph/test/type_prop/pad.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -281,3 +269,27 @@ TEST(type_prop, pad_v1_deduce_too_small_for_reflect) FAIL() << "Deduced type check failed for unexpected reason"; } } + +TEST(type_prop, pad_v1_dynamic_output_with_dynamic_rank) +{ + auto arg = make_shared(element::f32, PartialShape::dynamic()); + auto pads_begin = make_shared(element::i32, Shape{1}); + auto pads_end = make_shared(element::i32, Shape{1}); + auto arg_pad_value = op::Constant::create(element::f32, Shape{}, {0}); + + auto pad = + make_shared(arg, pads_begin, pads_end, arg_pad_value, op::PadMode::CONSTANT); + ASSERT_EQ(pad->get_output_partial_shape(0), PartialShape::dynamic()); +} + +TEST(type_prop, pad_v1_dynamic_output_with_static_rank) +{ + auto arg = make_shared(element::f32, Shape{1, 2, 3}); + auto pads_begin = make_shared(element::i32, Shape{1}); + auto pads_end = make_shared(element::i32, Shape{1}); + auto arg_pad_value = op::Constant::create(element::f32, Shape{}, {0}); + + auto pad = + make_shared(arg, pads_begin, pads_end, arg_pad_value, op::PadMode::CONSTANT); + ASSERT_EQ(pad->get_output_partial_shape(0), PartialShape::dynamic(3)); +} diff --git a/ngraph/test/type_prop/parameter.cpp b/ngraph/test/type_prop/parameter.cpp index 4f09c5652fae6b..7c260aa9e7554c 100644 --- a/ngraph/test/type_prop/parameter.cpp +++ b/ngraph/test/type_prop/parameter.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/power.cpp b/ngraph/test/type_prop/power.cpp new file mode 100644 index 00000000000000..c8e3580cb6aee2 --- /dev/null +++ b/ngraph/test/type_prop/power.cpp @@ -0,0 +1,9 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "arithmetic_ops.hpp" + +using Type = ::testing::Types; + +INSTANTIATE_TYPED_TEST_CASE_P(type_prop_power, ArithmeticOperator, Type); diff --git a/ngraph/test/type_prop/prelu.cpp b/ngraph/test/type_prop/prelu.cpp index 92fb346b974a78..043ec4910a27ce 100644 --- a/ngraph/test/type_prop/prelu.cpp +++ b/ngraph/test/type_prop/prelu.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/proposal.cpp b/ngraph/test/type_prop/proposal.cpp index 9eb5cbe15ac44d..82279b0d9d7c90 100644 --- a/ngraph/test/type_prop/proposal.cpp +++ b/ngraph/test/type_prop/proposal.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/op/proposal.hpp" #include "gtest/gtest.h" diff --git a/ngraph/test/type_prop/psroi_pooling.cpp b/ngraph/test/type_prop/psroi_pooling.cpp index a5fad60561d82e..205d642dcbc20f 100644 --- a/ngraph/test/type_prop/psroi_pooling.cpp +++ b/ngraph/test/type_prop/psroi_pooling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/type_prop/range.cpp b/ngraph/test/type_prop/range.cpp index 5dc0281d6c1cc1..56913fabf6d772 100644 --- a/ngraph/test/type_prop/range.cpp +++ b/ngraph/test/type_prop/range.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/read_value.cpp b/ngraph/test/type_prop/read_value.cpp index 852456a757236a..0a42ecacb24d84 100644 --- a/ngraph/test/type_prop/read_value.cpp +++ b/ngraph/test/type_prop/read_value.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reduce_l1.cpp b/ngraph/test/type_prop/reduce_l1.cpp index d837c12c065958..07947615747da8 100644 --- a/ngraph/test/type_prop/reduce_l1.cpp +++ b/ngraph/test/type_prop/reduce_l1.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reduce_l2.cpp b/ngraph/test/type_prop/reduce_l2.cpp index 216cb9a2821ef6..f2c2541b3852a4 100644 --- a/ngraph/test/type_prop/reduce_l2.cpp +++ b/ngraph/test/type_prop/reduce_l2.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reduce_mean.cpp b/ngraph/test/type_prop/reduce_mean.cpp index a0da0536ae019b..5f184fab97dd4c 100644 --- a/ngraph/test/type_prop/reduce_mean.cpp +++ b/ngraph/test/type_prop/reduce_mean.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reduce_prod.cpp b/ngraph/test/type_prop/reduce_prod.cpp index fb15c612888546..243f158d7e25a2 100644 --- a/ngraph/test/type_prop/reduce_prod.cpp +++ b/ngraph/test/type_prop/reduce_prod.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reduce_sum.cpp b/ngraph/test/type_prop/reduce_sum.cpp index eb1f3c4db19885..0a1f0422a3ad64 100644 --- a/ngraph/test/type_prop/reduce_sum.cpp +++ b/ngraph/test/type_prop/reduce_sum.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reorg_yolo.cpp b/ngraph/test/type_prop/reorg_yolo.cpp index 2e6e42d881cf93..17f295a5b19cef 100644 --- a/ngraph/test/type_prop/reorg_yolo.cpp +++ b/ngraph/test/type_prop/reorg_yolo.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reshape.cpp b/ngraph/test/type_prop/reshape.cpp index ff2cb4b438f814..08573806c42572 100644 --- a/ngraph/test/type_prop/reshape.cpp +++ b/ngraph/test/type_prop/reshape.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -145,6 +133,70 @@ TEST(type_prop, interval_value_propagation_mul_div) ASSERT_EQ(r->get_output_partial_shape(0), PartialShape({Dimension(2, 8), Dimension(4, 16), 2})); } +TEST(type_prop, interval_value_propagation_mul_div_lhs_scalar) +{ + auto param = make_shared(element::f32, + PartialShape{Dimension(2, 8), Dimension(4, 16), 6}); + auto shape_of = make_shared(param); + auto cast_fp = make_shared(shape_of, element::f32); + auto mul = make_shared(op::Constant::create(element::f32, {}, {2}), cast_fp); + auto div = make_shared(mul, op::Constant::create(element::f32, {3}, {2, 1, 3})); + auto cast_int = make_shared(div, element::i32); + + auto r = make_shared(param, cast_int, false); + + ASSERT_EQ(r->get_element_type(), element::f32); + ASSERT_EQ(r->get_output_partial_shape(0), PartialShape({Dimension(2, 8), Dimension(8, 32), 4})); +} + +TEST(type_prop, interval_value_propagation_mul_div_rhs_scalar) +{ + auto param = make_shared(element::f32, + PartialShape{Dimension(2, 8), Dimension(4, 16), 6}); + auto shape_of = make_shared(param); + auto cast_fp = make_shared(shape_of, element::f32); + auto mul = make_shared(cast_fp, op::Constant::create(element::f32, {}, {2})); + auto div = make_shared(mul, op::Constant::create(element::f32, {3}, {2, 1, 3})); + auto cast_int = make_shared(div, element::i32); + + auto r = make_shared(param, cast_int, false); + + ASSERT_EQ(r->get_element_type(), element::f32); + ASSERT_EQ(r->get_output_partial_shape(0), PartialShape({Dimension(2, 8), Dimension(8, 32), 4})); +} + +TEST(type_prop, interval_value_propagation_mul_div_lhs_1D) +{ + auto param = make_shared(element::f32, + PartialShape{Dimension(2, 8), Dimension(4, 16), 6}); + auto shape_of = make_shared(param); + auto cast_fp = make_shared(shape_of, element::f32); + auto mul = make_shared(op::Constant::create(element::f32, {1}, {2}), cast_fp); + auto div = make_shared(mul, op::Constant::create(element::f32, {3}, {2, 1, 3})); + auto cast_int = make_shared(div, element::i32); + + auto r = make_shared(param, cast_int, false); + + ASSERT_EQ(r->get_element_type(), element::f32); + ASSERT_EQ(r->get_output_partial_shape(0), PartialShape({Dimension(2, 8), Dimension(8, 32), 4})); +} + +TEST(type_prop, interval_value_propagation_mul_div_rhs_1D) +{ + auto param = make_shared(element::f32, + PartialShape{Dimension(2, 8), Dimension(4, 16), 6}); + auto shape_of = make_shared(param); + auto cast_fp = make_shared(shape_of, element::f32); + auto mul = make_shared(cast_fp, op::Constant::create(element::f32, {1}, {2})); + auto div = make_shared(mul, op::Constant::create(element::f32, {3}, {2, 1, 3})); + auto cast_int = make_shared(div, element::i32); + + auto r = make_shared(param, cast_int, false); + + ASSERT_EQ(r->get_element_type(), element::f32); + ASSERT_EQ(r->get_output_partial_shape(0), PartialShape({Dimension(2, 8), Dimension(8, 32), 4})); +} + TEST(type_prop, interval_value_propagation_reduce) { auto param = make_shared(element::f32, PartialShape{Dimension(1, 8), 2, 3}); diff --git a/ngraph/test/type_prop/reverse.cpp b/ngraph/test/type_prop/reverse.cpp index d0006f0f73442f..853e1f19f6f1e3 100644 --- a/ngraph/test/type_prop/reverse.cpp +++ b/ngraph/test/type_prop/reverse.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/reverse_sequence.cpp b/ngraph/test/type_prop/reverse_sequence.cpp index 987d1e433a8eab..38be9f2aec41cf 100644 --- a/ngraph/test/type_prop/reverse_sequence.cpp +++ b/ngraph/test/type_prop/reverse_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/rnn_cell.cpp b/ngraph/test/type_prop/rnn_cell.cpp index ef166340a8cebc..86c3b04f5f5e24 100644 --- a/ngraph/test/type_prop/rnn_cell.cpp +++ b/ngraph/test/type_prop/rnn_cell.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/rnn_sequence.cpp b/ngraph/test/type_prop/rnn_sequence.cpp index a000c1d96f785f..b17b2784e3767f 100644 --- a/ngraph/test/type_prop/rnn_sequence.cpp +++ b/ngraph/test/type_prop/rnn_sequence.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/roi_align.cpp b/ngraph/test/type_prop/roi_align.cpp index 39f199fe629ed0..1329db36cc1bc0 100644 --- a/ngraph/test/type_prop/roi_align.cpp +++ b/ngraph/test/type_prop/roi_align.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/roi_pooling.cpp b/ngraph/test/type_prop/roi_pooling.cpp index 4b0cfec8322c54..3035ff8814e542 100644 --- a/ngraph/test/type_prop/roi_pooling.cpp +++ b/ngraph/test/type_prop/roi_pooling.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/roll.cpp b/ngraph/test/type_prop/roll.cpp new file mode 100644 index 00000000000000..61b66cf98061aa --- /dev/null +++ b/ngraph/test/type_prop/roll.cpp @@ -0,0 +1,177 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "ngraph/opsets/opset7.hpp" +#include "util/type_prop.hpp" + +using namespace std; +using namespace ngraph; + +TEST(type_prop, roll_output_shape_type_test) +{ + auto arg = make_shared(element::f32, Shape{3, 3, 4, 1, 5}); + auto shift = make_shared(element::i32, Shape{2}); + auto axes = make_shared(element::i64, Shape{2}); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::f32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(PartialShape{3, 3, 4, 1, 5})); +} + +TEST(type_prop, roll_axis_const_test) +{ + auto arg = make_shared(element::f32, Shape{3, 3, 3}); + auto shift = make_shared(element::i32, Shape{3}); + auto axes = opset7::Constant::create(element::i64, Shape{3}, {0, 1, -1}); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::f32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(PartialShape{3, 3, 3})); +} + +TEST(type_prop, roll_incorrect_axis_test) +{ + auto arg = make_shared(element::f32, Shape{3, 3}); + auto shift = make_shared(element::i32, Shape{2}); + auto axes = opset7::Constant::create(element::i64, Shape{2}, {0, 2}); + + try + { + auto r = make_shared(arg, shift, axes); + // Should have thrown, so fail if it didn't + FAIL() << "Unexpected pass with invalid axes and shift."; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), std::string("Axes must be less than data tensor rank.")); + } + catch (...) + { + FAIL() << "Check failed for unexpected reason"; + } +} + +TEST(type_prop, roll_incorrect_negative_axis_test) +{ + auto arg = make_shared(element::f32, Shape{3, 3}); + auto shift = make_shared(element::i32, Shape{2}); + auto axes = opset7::Constant::create(element::i64, Shape{2}, {0, -5}); + + try + { + auto r = make_shared(arg, shift, axes); + // Should have thrown, so fail if it didn't + FAIL() << "Unexpected pass with invalid axes and shift."; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING(error.what(), std::string("Axes must be positive or equal to zero.")); + } + catch (...) + { + FAIL() << "Check failed for unexpected reason"; + } +} + +TEST(type_prop, roll_axis_scalar_test) +{ + auto arg = make_shared(element::i32, Shape{3, 3, 4}); + auto shift = opset7::Constant::create(element::i64, Shape{}, {5}); + auto axes = make_shared(element::i32, Shape{3}); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::i32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(PartialShape{3, 3, 4})); +} + +TEST(type_prop, roll_invalid_axes_check) +{ + auto arg = make_shared(element::f32, Shape{3, 3, 4, 1, 5}); + auto shift = make_shared(element::i32, Shape{3}); + auto axes = make_shared(element::i64, Shape{1}); + + try + { + auto r = make_shared(arg, shift, axes); + // Should have thrown, so fail if it didn't + FAIL() << "Unexpected pass with invalid axes and shift."; + } + catch (const NodeValidationFailure& error) + { + EXPECT_HAS_SUBSTRING( + error.what(), + std::string("If shift is a 1D vector, axes must be a 1D tensor of the same size.")); + } + catch (...) + { + FAIL() << "Check failed for unexpected reason"; + } +} + +TEST(type_prop, roll_dynamic_shape) +{ + auto arg = make_shared( + element::f32, PartialShape{Dimension::dynamic(), Dimension::dynamic()}); + auto shift = make_shared(element::i64, PartialShape{Dimension::dynamic()}); + auto axes = make_shared(element::i32, PartialShape{Dimension::dynamic()}); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::f32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(PartialShape::dynamic(2))); +} + +TEST(type_prop, roll_dynamic_ranks) +{ + auto arg = make_shared(element::f32, PartialShape::dynamic()); + auto shift = make_shared(element::i64, PartialShape::dynamic()); + auto axes = make_shared(element::i32, PartialShape::dynamic()); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::f32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(PartialShape::dynamic())); +} + +TEST(type_prop, roll_dynamic_axes_static_shift) +{ + auto arg = make_shared(element::i32, Shape{3, 3, 4, 2}); + auto shift = opset7::Constant::create(element::i64, Shape{}, {5}); + auto axes = make_shared(element::i32, PartialShape{Dimension::dynamic()}); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::i32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(Shape{3, 3, 4, 2})); +} + +TEST(type_prop, roll_scatic_axes_dynamic_shift) +{ + auto arg = make_shared(element::i32, Shape{1, 2, 4}); + auto shift = make_shared(element::i64, PartialShape{Dimension::dynamic()}); + auto axes = make_shared(element::i32, Shape{3}); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::i32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(Shape{1, 2, 4})); +} + +TEST(type_prop, roll_scatic_axes_dynamic_data) +{ + auto arg = make_shared( + element::f32, PartialShape{Dimension::dynamic(), Dimension::dynamic()}); + auto shift = opset7::Constant::create(element::i64, Shape{}, {5}); + auto axes = make_shared(element::i32, PartialShape{Dimension::dynamic()}); + + auto r = make_shared(arg, shift, axes); + + EXPECT_EQ(r->get_output_element_type(0), element::f32); + EXPECT_TRUE(r->get_output_partial_shape(0).same_scheme(PartialShape::dynamic(2))); +} diff --git a/ngraph/test/type_prop/round.cpp b/ngraph/test/type_prop/round.cpp index c742c9c9990ca8..e19a9979df953b 100644 --- a/ngraph/test/type_prop/round.cpp +++ b/ngraph/test/type_prop/round.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/scatter_elements_update.cpp b/ngraph/test/type_prop/scatter_elements_update.cpp index e36c5f5e60a225..bf62e20411c2cd 100644 --- a/ngraph/test/type_prop/scatter_elements_update.cpp +++ b/ngraph/test/type_prop/scatter_elements_update.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/scatter_nd_update.cpp b/ngraph/test/type_prop/scatter_nd_update.cpp index b8649ff0b06dd8..3fcde9c2a5eadf 100644 --- a/ngraph/test/type_prop/scatter_nd_update.cpp +++ b/ngraph/test/type_prop/scatter_nd_update.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/scatter_update.cpp b/ngraph/test/type_prop/scatter_update.cpp index 02b8c79be75d44..2441c739808fe2 100644 --- a/ngraph/test/type_prop/scatter_update.cpp +++ b/ngraph/test/type_prop/scatter_update.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/select.cpp b/ngraph/test/type_prop/select.cpp index c405f736533edb..31eee863e59c61 100644 --- a/ngraph/test/type_prop/select.cpp +++ b/ngraph/test/type_prop/select.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/shape_of.cpp b/ngraph/test/type_prop/shape_of.cpp index d8b45658aac1cd..d15597cb25ac41 100644 --- a/ngraph/test/type_prop/shape_of.cpp +++ b/ngraph/test/type_prop/shape_of.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/shuffle_channels.cpp b/ngraph/test/type_prop/shuffle_channels.cpp index 159e16a89a95ee..95cd2fd3cca804 100644 --- a/ngraph/test/type_prop/shuffle_channels.cpp +++ b/ngraph/test/type_prop/shuffle_channels.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/softmax.cpp b/ngraph/test/type_prop/softmax.cpp index 483198b1255859..59b502dbb6584c 100644 --- a/ngraph/test/type_prop/softmax.cpp +++ b/ngraph/test/type_prop/softmax.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/softplus.cpp b/ngraph/test/type_prop/softplus.cpp index 69f9db8904d9eb..7d6ddb49144b0e 100644 --- a/ngraph/test/type_prop/softplus.cpp +++ b/ngraph/test/type_prop/softplus.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/space_to_batch.cpp b/ngraph/test/type_prop/space_to_batch.cpp index 71cf73a673b0ca..cf4b3ffdf7f9cd 100644 --- a/ngraph/test/type_prop/space_to_batch.cpp +++ b/ngraph/test/type_prop/space_to_batch.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -90,3 +78,35 @@ TEST(type_prop, space_to_batch_and_batch_to_space) ASSERT_EQ(batch_to_space->get_element_type(), element::f32); ASSERT_EQ(batch_to_space->get_shape(), (Shape{2, 100, 1024, 3})); } + +TEST(type_prop, space_to_batch_dynamic_shape_static_rank) +{ + auto data = make_shared(element::f32, PartialShape::dynamic(4)); + auto block_shape = + make_shared(element::i64, Shape{4}, vector{1, 10, 5, 1}); + auto pads_begin = + make_shared(element::i64, Shape{4}, vector{0, 3, 1, 0}); + auto pads_end = make_shared(element::i64, Shape{4}, vector{0, 3, 0, 0}); + + auto space_to_batch = + make_shared(data, block_shape, pads_begin, pads_end); + + ASSERT_EQ(space_to_batch->get_element_type(), element::f32); + ASSERT_EQ(space_to_batch->get_output_partial_shape(0), PartialShape::dynamic(4)); +} + +TEST(type_prop, space_to_batch_dynamic_shape_dynamic_rank) +{ + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto block_shape = + make_shared(element::i64, Shape{4}, vector{1, 10, 5, 1}); + auto pads_begin = + make_shared(element::i64, Shape{4}, vector{0, 3, 1, 0}); + auto pads_end = make_shared(element::i64, Shape{4}, vector{0, 3, 0, 0}); + + auto space_to_batch = + make_shared(data, block_shape, pads_begin, pads_end); + + ASSERT_EQ(space_to_batch->get_element_type(), element::f32); + ASSERT_EQ(space_to_batch->get_output_partial_shape(0), PartialShape::dynamic()); +} diff --git a/ngraph/test/type_prop/space_to_depth.cpp b/ngraph/test/type_prop/space_to_depth.cpp index a83c546d9ca1bc..914a9e22e7619f 100644 --- a/ngraph/test/type_prop/space_to_depth.cpp +++ b/ngraph/test/type_prop/space_to_depth.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -61,6 +49,26 @@ TEST(type_prop, space_to_depth_output_shape_depth_first_5D) ASSERT_EQ(space_to_depth->get_shape(), (Shape{1, 12 * 8, 4 / 2, 1080 / 2, 1616 / 2})); } +TEST(type_prop, space_to_depth_dynamic_shape_static_rank) +{ + auto A = make_shared(element::f32, PartialShape::dynamic(4)); + const auto mode = ngraph::op::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; + auto space_to_depth = make_shared(A, mode, 8); + + ASSERT_EQ(space_to_depth->get_element_type(), element::f32); + ASSERT_EQ(space_to_depth->get_output_partial_shape(0), PartialShape::dynamic(4)); +} + +TEST(type_prop, space_to_depth_dynamic_shape_dynamic_rank) +{ + auto A = make_shared(element::f32, PartialShape::dynamic()); + const auto mode = ngraph::op::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; + auto space_to_depth = make_shared(A, mode, 8); + + ASSERT_EQ(space_to_depth->get_element_type(), element::f32); + ASSERT_EQ(space_to_depth->get_output_partial_shape(0), PartialShape::dynamic()); +} + TEST(type_prop, space_to_depth_input_rank_not_supported) { auto A = make_shared(element::f32, Shape{1, 8}); diff --git a/ngraph/test/type_prop/split.cpp b/ngraph/test/type_prop/split.cpp index f8144c9d99c161..e6ffc0f58e73f3 100644 --- a/ngraph/test/type_prop/split.cpp +++ b/ngraph/test/type_prop/split.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/squared_difference.cpp b/ngraph/test/type_prop/squared_difference.cpp index a573d6490f9320..edf7b0fbdfb0c2 100644 --- a/ngraph/test/type_prop/squared_difference.cpp +++ b/ngraph/test/type_prop/squared_difference.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -37,7 +25,11 @@ TEST(type_prop, squared_difference) EXPECT_HAS_SUBSTRING(error.what(), std::string("Argument shapes are inconsistent")); } - const auto clamp = make_shared(x1, x3); - EXPECT_EQ(clamp->get_element_type(), element::f64); - EXPECT_EQ(clamp->get_shape(), (Shape{2, 2})); + const auto squared_diff = make_shared(x1, x3); + EXPECT_EQ(squared_diff->get_element_type(), element::f64); + EXPECT_EQ(squared_diff->get_shape(), (Shape{2, 2})); + EXPECT_EQ(squared_diff->get_autob(), op::AutoBroadcastType::NUMPY); + + const auto squared_diff_no_args = make_shared(); + EXPECT_EQ(squared_diff_no_args->get_autob(), op::AutoBroadcastType::NUMPY); } diff --git a/ngraph/test/type_prop/squeeze.cpp b/ngraph/test/type_prop/squeeze.cpp index bc806e0e1deea7..01fd146ce5eb30 100644 --- a/ngraph/test/type_prop/squeeze.cpp +++ b/ngraph/test/type_prop/squeeze.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/strided_slice.cpp b/ngraph/test/type_prop/strided_slice.cpp index 6294239cfa9c2f..9e59dcdc351af6 100644 --- a/ngraph/test/type_prop/strided_slice.cpp +++ b/ngraph/test/type_prop/strided_slice.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/subtract.cpp b/ngraph/test/type_prop/subtract.cpp new file mode 100644 index 00000000000000..a36447311e1760 --- /dev/null +++ b/ngraph/test/type_prop/subtract.cpp @@ -0,0 +1,21 @@ +//***************************************************************************** +// Copyright 2021 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** + +#include "arithmetic_ops.hpp" + +using Type = ::testing::Types; + +INSTANTIATE_TYPED_TEST_CASE_P(type_prop_subtract, ArithmeticOperator, Type); diff --git a/ngraph/test/type_prop/swish.cpp b/ngraph/test/type_prop/swish.cpp index a9bc99b8621ed3..bdb45ed1292a36 100644 --- a/ngraph/test/type_prop/swish.cpp +++ b/ngraph/test/type_prop/swish.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/ti.cpp b/ngraph/test/type_prop/ti.cpp index 22c0b2deee3567..6133019252402b 100644 --- a/ngraph/test/type_prop/ti.cpp +++ b/ngraph/test/type_prop/ti.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/builder/reshape.hpp" diff --git a/ngraph/test/type_prop/tile.cpp b/ngraph/test/type_prop/tile.cpp index 370822b30991c9..79dd9a2c9a678c 100644 --- a/ngraph/test/type_prop/tile.cpp +++ b/ngraph/test/type_prop/tile.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/top_k.cpp b/ngraph/test/type_prop/top_k.cpp index f5753adff34401..4733b3e911abc0 100644 --- a/ngraph/test/type_prop/top_k.cpp +++ b/ngraph/test/type_prop/top_k.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/transpose.cpp b/ngraph/test/type_prop/transpose.cpp index ac5ffd6b1d8b3e..920ec4eb954968 100644 --- a/ngraph/test/type_prop/transpose.cpp +++ b/ngraph/test/type_prop/transpose.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/unary_elementwise.cpp b/ngraph/test/type_prop/unary_elementwise.cpp index 81e82e45fe8894..695d5739dd70e6 100644 --- a/ngraph/test/type_prop/unary_elementwise.cpp +++ b/ngraph/test/type_prop/unary_elementwise.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/unary_ops.cpp b/ngraph/test/type_prop/unary_ops.cpp index 96d886c5771109..99db29e0612b94 100644 --- a/ngraph/test/type_prop/unary_ops.cpp +++ b/ngraph/test/type_prop/unary_ops.cpp @@ -1,17 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include "gtest/gtest.h" @@ -107,6 +96,6 @@ REGISTER_TYPED_TEST_CASE_P(UnaryOperator, dynamic_rank_input_shape_3D, dynamic_rank_input_shape_full); -using Types = ::testing::Types; +using Types = ::testing::Types; INSTANTIATE_TYPED_TEST_CASE_P(type_prop, UnaryOperator, Types); diff --git a/ngraph/test/type_prop/unsqueeze.cpp b/ngraph/test/type_prop/unsqueeze.cpp index 197491eef155d6..252e3139b73aa8 100644 --- a/ngraph/test/type_prop/unsqueeze.cpp +++ b/ngraph/test/type_prop/unsqueeze.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop/variadic_split.cpp b/ngraph/test/type_prop/variadic_split.cpp index d7df54e15dea51..52081fe737bf9b 100644 --- a/ngraph/test/type_prop/variadic_split.cpp +++ b/ngraph/test/type_prop/variadic_split.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" diff --git a/ngraph/test/type_prop_layers.cpp b/ngraph/test/type_prop_layers.cpp index 6fbb64a551c1ef..fec662e75e05a4 100644 --- a/ngraph/test/type_prop_layers.cpp +++ b/ngraph/test/type_prop_layers.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "gtest/gtest.h" diff --git a/ngraph/test/uint4.cpp b/ngraph/test/uint4.cpp new file mode 100644 index 00000000000000..dc5a201e97081d --- /dev/null +++ b/ngraph/test/uint4.cpp @@ -0,0 +1,23 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" +#include "ngraph/ngraph.hpp" +#include "util/all_close_f.hpp" +#include "util/test_tools.hpp" + +using namespace ngraph; +using namespace std; + +TEST(uint4, convert_u4_to_string) +{ + vector values{171, 16}; + auto constant = make_shared(element::u4, Shape{3}, &values[0]); + + vector ref{"10", "11", "1"}; + for (size_t i = 0; i < 3; ++i) + { + ASSERT_EQ(constant->convert_value_to_string(i), ref[i]); + } +} diff --git a/ngraph/test/util.cpp b/ngraph/test/util.cpp index ebea0f7dbf304a..d51e3c28030981 100644 --- a/ngraph/test/util.cpp +++ b/ngraph/test/util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include @@ -26,6 +14,7 @@ #include "ngraph/graph_util.hpp" #include "ngraph/ngraph.hpp" #include "ngraph/op/util/op_annotations.hpp" +#include "ngraph/opsets/opset6.hpp" #include "ngraph/pass/manager.hpp" #include "ngraph/pass/visualize_tree.hpp" #include "util/all_close.hpp" @@ -261,6 +250,74 @@ TEST(graph_util, clone_multiple_results) auto copy = clone_function(*f); } +TEST(graph_util, clone_rt_info) +{ + const std::string testAffinity = "CPU"; + std::shared_ptr original_f; + { + ngraph::PartialShape shape({1, 84}); + ngraph::element::Type type(ngraph::element::Type_t::f32); + auto param = std::make_shared(type, shape); + auto matMulWeights = + ngraph::opset6::Constant::create(ngraph::element::Type_t::f32, {10, 84}, {1}); + auto shapeOf = std::make_shared(matMulWeights); + auto gConst1 = ngraph::opset6::Constant::create(ngraph::element::Type_t::i32, {1}, {1}); + auto gConst2 = ngraph::opset6::Constant::create(ngraph::element::Type_t::i64, {}, {0}); + auto gather = std::make_shared(shapeOf, gConst1, gConst2); + auto concatConst = ngraph::opset6::Constant::create(ngraph::element::Type_t::i64, {1}, {1}); + auto concat = + std::make_shared(ngraph::NodeVector{concatConst, gather}, 0); + auto relu = std::make_shared(param); + auto reshape = std::make_shared(relu, concat, false); + auto matMul = std::make_shared(reshape, matMulWeights, false, true); + auto matMulBias = + ngraph::opset6::Constant::create(ngraph::element::Type_t::f32, {1, 10}, {1}); + auto addBias = std::make_shared(matMul, matMulBias); + auto result = std::make_shared(addBias); + + ngraph::ParameterVector params = {param}; + ngraph::ResultVector results = {result}; + + original_f = std::make_shared(results, params); + } + + std::unordered_map affinity; + + for (auto&& node : original_f->get_ordered_ops()) + { + auto& nodeInfo = node->get_rt_info(); + + nodeInfo["affinity"] = std::make_shared>(testAffinity); + affinity[node->get_friendly_name()] = testAffinity; + + for (auto&& output : node->outputs()) + { + auto& outputInfo = output.get_rt_info(); + outputInfo["affinity"] = + std::make_shared>(testAffinity); + } + } + + auto clonedFunction = ngraph::clone_function(*original_f); + + for (auto&& node : clonedFunction->get_ordered_ops()) + { + auto& nodeInfo = node->get_rt_info(); + auto itInfo = nodeInfo.find("affinity"); + ASSERT_TRUE(itInfo != nodeInfo.end()); + auto value = + ngraph::as_type_ptr>(itInfo->second)->get(); + ASSERT_TRUE(affinity.find(node->get_friendly_name()) != affinity.end()); + ASSERT_TRUE(affinity[node->get_friendly_name()] == value); + + for (auto&& output : node->outputs()) + { + auto& outputInfo = output.get_rt_info(); + ASSERT_TRUE(outputInfo.count("affinity")); + } + } +} + TEST(util, round_up) { EXPECT_EQ(0, round_up(0, 4)); diff --git a/ngraph/test/util/CMakeLists.txt b/ngraph/test/util/CMakeLists.txt index 548326c6c85a33..1382f2d18334f4 100644 --- a/ngraph/test/util/CMakeLists.txt +++ b/ngraph/test/util/CMakeLists.txt @@ -1,33 +1,21 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** - -if(NOT NGRAPH_TEST_UTIL_ENABLE) - return() -endif() set (SRC all_close_f.cpp engine/ie_engines.cpp engine/interpreter_engine.cpp + engine/shared_utils.cpp float_util.cpp test_tools.cpp test_control.cpp visitor.hpp provenance_enabler.hpp ) +if (NGRAPH_ONNX_IMPORT_ENABLE) + list(APPEND SRC onnx_test_util.cpp) +endif() add_library(ngraph_test_util STATIC ${SRC}) @@ -42,4 +30,7 @@ if(NGRAPH_LIB_VERSIONING_ENABLE) VERSION ${NGRAPH_VERSION}) endif() target_include_directories(ngraph_test_util PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/.. ${IE_MAIN_SOURCE_DIR}/include) -target_link_libraries(ngraph_test_util PRIVATE ngraph ngraph_backend libgtest) +target_link_libraries(ngraph_test_util PUBLIC ngraph ngraph_backend libgtest) +if (NGRAPH_ONNX_IMPORT_ENABLE) + target_link_libraries(ngraph_test_util PRIVATE onnx_common) +endif() diff --git a/ngraph/test/util/all_close.hpp b/ngraph/test/util/all_close.hpp index b7969ccb6f6bb2..cfd70e24176b6b 100644 --- a/ngraph/test/util/all_close.hpp +++ b/ngraph/test/util/all_close.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/all_close_f.cpp b/ngraph/test/util/all_close_f.cpp index f1bbcb40873088..16173680fe8644 100644 --- a/ngraph/test/util/all_close_f.cpp +++ b/ngraph/test/util/all_close_f.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/util/all_close_f.hpp b/ngraph/test/util/all_close_f.hpp index 3cc9075eaaa501..ef28983aaf475c 100644 --- a/ngraph/test/util/all_close_f.hpp +++ b/ngraph/test/util/all_close_f.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/engine/engine_factory.hpp b/ngraph/test/util/engine/engine_factory.hpp index 1590fcf4059e83..22db838f88ea17 100644 --- a/ngraph/test/util/engine/engine_factory.hpp +++ b/ngraph/test/util/engine/engine_factory.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/engine/engine_traits.hpp b/ngraph/test/util/engine/engine_traits.hpp index f097bcf7ca586f..4525839ba19a0f 100644 --- a/ngraph/test/util/engine/engine_traits.hpp +++ b/ngraph/test/util/engine/engine_traits.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/engine/ie_engines.cpp b/ngraph/test/util/engine/ie_engines.cpp index f7cbdd3b62bc10..a7af958304ff5b 100644 --- a/ngraph/test/util/engine/ie_engines.cpp +++ b/ngraph/test/util/engine/ie_engines.cpp @@ -1,24 +1,13 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ie_engines.hpp" #include "ngraph/opsets/opset.hpp" #include "ngraph/pass/manager.hpp" #include "pass/opset1_upgrade.hpp" +#include "shared_utils.hpp" using namespace ngraph; @@ -118,10 +107,10 @@ namespace case InferenceEngine::Precision::BOOL: return compare_blobs(computed, expected, tolerance_bits); break; - default: THROW_IE_EXCEPTION << "Not implemented yet"; + default: IE_THROW() << "Not implemented yet"; } } -}; +}; // namespace namespace { @@ -147,8 +136,10 @@ namespace case element::Type_t::u16: return InferenceEngine::Precision::U16; break; case element::Type_t::u32: return InferenceEngine::Precision::U32; break; case element::Type_t::u64: return InferenceEngine::Precision::U64; break; - case element::Type_t::u1: throw std::runtime_error("unsupported type"); - case element::Type_t::undefined: throw std::runtime_error("unsupported type"); + case element::Type_t::u1: return InferenceEngine::Precision::BIN; break; + case element::Type_t::i4: + case element::Type_t::u4: + case element::Type_t::undefined: case element::Type_t::dynamic: throw std::runtime_error("unsupported type"); } #if defined(__GNUC__) && !(__GNUC__ == 4 && __GNUC_MINOR__ == 8) @@ -156,7 +147,7 @@ namespace #endif throw std::runtime_error("unsupported type"); } -} +} // namespace test::IE_Engine::IE_Engine(const std::shared_ptr function, const char* device) : m_function{function} @@ -182,7 +173,7 @@ void test::IE_Engine::infer() { if (m_network_inputs.size() != m_allocated_inputs) { - THROW_IE_EXCEPTION << "The tested graph has " << m_network_inputs.size() << " inputs, but " + IE_THROW() << "The tested graph has " << m_network_inputs.size() << " inputs, but " << m_allocated_inputs << " were passed."; } else @@ -244,6 +235,36 @@ testing::AssertionResult test::IE_Engine::compare_results_with_tolerance_as_fp(const float tolerance) { auto comparison_result = testing::AssertionSuccess(); + + for (const auto& output : m_network_outputs) + { + if (comparison_result == testing::AssertionFailure()) + { + break; + } + + InferenceEngine::MemoryBlob::CPtr computed_output_blob = + InferenceEngine::as(m_inference_req.GetBlob(output.first)); + + const auto& expected_output_blob = m_expected_outputs[output.first]; + + switch (expected_output_blob->getTensorDesc().getPrecision()) + { + case InferenceEngine::Precision::FP32: + { + const auto test_results = + extract_test_results(computed_output_blob, expected_output_blob); + comparison_result = + test::compare_with_tolerance(test_results.first, test_results.second, tolerance); + break; + } + default: + comparison_result = testing::AssertionFailure() + << "Unsupported data type encountered in " + "'compare_results_with_tolerance_as_fp' method"; + } + } + return comparison_result; } @@ -259,7 +280,7 @@ std::shared_ptr { if (ie_ops.find(node->get_type_info()) == ie_ops.end()) { - THROW_IE_EXCEPTION << "Unsupported operator detected in the graph: " + IE_THROW() << "Unsupported operator detected in the graph: " << node->get_type_info().name; } } @@ -280,6 +301,8 @@ std::set test::IE_Engine::get_ie_ops() const ie_ops.insert(opset5.begin(), opset5.end()); const auto& opset6 = get_opset6().get_type_info_set(); ie_ops.insert(opset6.begin(), opset6.end()); + const auto& opset7 = get_opset7().get_type_info_set(); + ie_ops.insert(opset7.begin(), opset7.end()); return ie_ops; } @@ -292,20 +315,14 @@ void test::IE_Engine::reset() namespace InferenceEngine { -// those definitions and template specializations are required for clang (both Linux and Mac) // Without this section the linker is not able to find destructors for missing TBlob specializations // which are instantiated in the unit tests that use TestCase and this engine -#ifdef __clang__ template TBlob::~TBlob() { free(); } - template class TBlob; - template class TBlob; template class TBlob; template class TBlob; - template class TBlob; -#endif -} +} // namespace InferenceEngine diff --git a/ngraph/test/util/engine/ie_engines.hpp b/ngraph/test/util/engine/ie_engines.hpp index 5e393cac6ede52..4bcc5de195e3ae 100644 --- a/ngraph/test/util/engine/ie_engines.hpp +++ b/ngraph/test/util/engine/ie_engines.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/engine/interpreter_engine.cpp b/ngraph/test/util/engine/interpreter_engine.cpp index f0ea62d01ad241..d6fb1a51c20647 100644 --- a/ngraph/test/util/engine/interpreter_engine.cpp +++ b/ngraph/test/util/engine/interpreter_engine.cpp @@ -1,24 +1,14 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** -#include "interpreter_engine.hpp" #include #include #include +#include "interpreter_engine.hpp" +#include "shared_utils.hpp" + using namespace ngraph; namespace @@ -45,32 +35,7 @@ namespace const auto expected = expected_results->get_vector(); const auto result = read_vector(results); - Shape out_shape = expected_results->get_shape(); - - size_t num_of_elems = shape_size(out_shape); - std::stringstream msg; - - msg << std::setprecision(std::numeric_limits::digits10 + 1); - - bool rc = true; - - for (std::size_t j = 0; j < num_of_elems; ++j) - { - float diff = std::abs(result[j] - expected[j]); - if (diff > tolerance) - { - msg << expected[j] << " is not close to " << result[j] << " at index " << j << "\n"; - rc = false; - } - } - - if (!rc) - { - comparison_result = testing::AssertionFailure(); - } - - comparison_result << msg.str(); - return comparison_result; + return ngraph::test::compare_with_tolerance(expected, result, tolerance); } template diff --git a/ngraph/test/util/engine/interpreter_engine.hpp b/ngraph/test/util/engine/interpreter_engine.hpp index 4158c449109a0f..77279bfae6cdbc 100644 --- a/ngraph/test/util/engine/interpreter_engine.hpp +++ b/ngraph/test/util/engine/interpreter_engine.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/engine/shared_utils.cpp b/ngraph/test/util/engine/shared_utils.cpp new file mode 100644 index 00000000000000..113cb856338418 --- /dev/null +++ b/ngraph/test/util/engine/shared_utils.cpp @@ -0,0 +1,38 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +#include "shared_utils.hpp" + +testing::AssertionResult ngraph::test::compare_with_tolerance(const std::vector& expected, + const std::vector& results, + const float tolerance) +{ + auto comparison_result = testing::AssertionSuccess(); + + std::stringstream msg; + msg << std::setprecision(std::numeric_limits::digits10 + 1); + + bool rc = true; + + for (std::size_t j = 0; j < expected.size(); ++j) + { + float diff = std::fabs(results[j] - expected[j]); + if (diff > tolerance) + { + msg << expected[j] << " is not close to " << results[j] << " at index " << j << "\n"; + rc = false; + } + } + + if (!rc) + { + comparison_result = testing::AssertionFailure(); + comparison_result << msg.str(); + } + + return comparison_result; +} diff --git a/ngraph/test/util/engine/shared_utils.hpp b/ngraph/test/util/engine/shared_utils.hpp new file mode 100644 index 00000000000000..35888b5b19f69d --- /dev/null +++ b/ngraph/test/util/engine/shared_utils.hpp @@ -0,0 +1,18 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph +{ + namespace test + { + testing::AssertionResult compare_with_tolerance(const std::vector& expected_results, + const std::vector& results, + const float tolerance); + } +} // namespace ngraph diff --git a/ngraph/test/util/engine/test_case_engine.hpp b/ngraph/test/util/engine/test_case_engine.hpp index 51fb8f904c76f2..445cbd47abb037 100644 --- a/ngraph/test/util/engine/test_case_engine.hpp +++ b/ngraph/test/util/engine/test_case_engine.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/engine/test_engines.hpp b/ngraph/test/util/engine/test_engines.hpp index 225eacae2f8a86..509b06212d8d22 100644 --- a/ngraph/test/util/engine/test_engines.hpp +++ b/ngraph/test/util/engine/test_engines.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/float_util.cpp b/ngraph/test/util/float_util.cpp index 7881d0eccad4fc..a8788bb64e148b 100644 --- a/ngraph/test/util/float_util.cpp +++ b/ngraph/test/util/float_util.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "util/float_util.hpp" diff --git a/ngraph/test/util/float_util.hpp b/ngraph/test/util/float_util.hpp index 0f35471f9f9689..d9e4254f1bfcd6 100644 --- a/ngraph/test/util/float_util.hpp +++ b/ngraph/test/util/float_util.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/util/known_element_types.hpp b/ngraph/test/util/known_element_types.hpp index 1d73b2447facaf..64e73e0f376245 100644 --- a/ngraph/test/util/known_element_types.hpp +++ b/ngraph/test/util/known_element_types.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/matcher.hpp b/ngraph/test/util/matcher.hpp index 272b0d6a15e856..3297105a72392a 100644 --- a/ngraph/test/util/matcher.hpp +++ b/ngraph/test/util/matcher.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // this is for more nuanced testing class TestMatcher : public ngraph::pattern::Matcher diff --git a/ngraph/test/util/ndarray.hpp b/ngraph/test/util/ndarray.hpp index 113f5853564326..1cf89a8328af79 100644 --- a/ngraph/test/util/ndarray.hpp +++ b/ngraph/test/util/ndarray.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** // Based on the Matrix class in // The C++ Programming Language diff --git a/ngraph/frontend/onnx_import/src/utils/onnx_test_util.cpp b/ngraph/test/util/onnx_test_util.cpp similarity index 87% rename from ngraph/frontend/onnx_import/src/utils/onnx_test_util.cpp rename to ngraph/test/util/onnx_test_util.cpp index b396c27b80cb28..0a2d7319a232d2 100644 --- a/ngraph/frontend/onnx_import/src/utils/onnx_test_util.cpp +++ b/ngraph/test/util/onnx_test_util.cpp @@ -1,28 +1,17 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include #include #include +#include "onnx_common/parser.hpp" #include "onnx_test_util.hpp" -#include "parser.hpp" -using namespace ngraph::onnx_import; +using namespace ngraph; +using namespace ngraph::test; namespace { @@ -78,8 +67,8 @@ namespace { if (lhs.name() != rhs.name()) { - return ComparisonResult::fail(item_type + " names in the graph don't match: " + - lhs.name() + " vs " + rhs.name()); + return ComparisonResult::fail( + item_type + " names in the graph don't match: " + lhs.name() + " vs " + rhs.name()); } const auto& lhs_tensor = lhs.type().tensor_type(); @@ -110,14 +99,14 @@ namespace (rhs_dim.has_dim_value() && lhs_dim.has_dim_param())) { return ComparisonResult::fail("Dynamic vs static dimension mismatch for " + - item_type + " " + lhs.name() + " at index: " + - std::to_string(j)); + item_type + " " + lhs.name() + + " at index: " + std::to_string(j)); } else if (lhs_dim.has_dim_value() && lhs_dim.dim_value() != rhs_dim.dim_value()) { return ComparisonResult::fail("Shape dimensions don't match for " + item_type + - " " + lhs.name() + " at index: " + - std::to_string(j) + ". " + + " " + lhs.name() + + " at index: " + std::to_string(j) + ". " + std::to_string(lhs_dim.dim_value()) + " vs " + std::to_string(rhs_dim.dim_value())); } @@ -261,15 +250,15 @@ namespace } // namespace namespace ngraph { - namespace onnx_import + namespace test { ComparisonResult compare_onnx_models(const std::string& model, const std::string& reference_model_path) { std::stringstream model_stream{model}; - const auto model_proto = onnx_import::parse_from_istream(model_stream); - const auto ref_model = onnx_import::parse_from_file(reference_model_path); + const auto model_proto = onnx_common::parse_from_istream(model_stream); + const auto ref_model = onnx_common::parse_from_file(reference_model_path); return compare_onnx_graphs(model_proto.graph(), ref_model.graph()); } - } // namespace onnx_import + } // namespace test } // namespace ngraph diff --git a/ngraph/test/util/onnx_test_util.hpp b/ngraph/test/util/onnx_test_util.hpp new file mode 100644 index 00000000000000..0a458e01cba672 --- /dev/null +++ b/ngraph/test/util/onnx_test_util.hpp @@ -0,0 +1,40 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +namespace ngraph +{ + namespace test + { + struct ComparisonResult + { + ComparisonResult() = default; + ComparisonResult(std::string error) + : is_ok{false} + , error_message{std::move(error)} + { + } + ComparisonResult(ComparisonResult&&) = default; + ComparisonResult(const ComparisonResult&) = default; + ComparisonResult& operator=(ComparisonResult&&) = default; + ComparisonResult& operator=(const ComparisonResult&) = default; + + bool is_ok = true; + std::string error_message; + + static ComparisonResult pass() { return {}; } + static ComparisonResult fail(std::string error) + { + return ComparisonResult{std::move(error)}; + } + }; + + ComparisonResult compare_onnx_models(const std::string& model, + const std::string& reference_model_path); + + } // namespace test +} // namespace ngraph diff --git a/ngraph/test/util/provenance_enabler.hpp b/ngraph/test/util/provenance_enabler.hpp index 4410583987bd88..97799751c82f5e 100644 --- a/ngraph/test/util/provenance_enabler.hpp +++ b/ngraph/test/util/provenance_enabler.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include "ngraph/provenance.hpp" @@ -33,6 +21,7 @@ namespace ngraph set_provenance_enabled(true); } ~ProvenanceEnabler() { set_provenance_enabled(saved_enable_state); } + private: bool saved_enable_state; }; diff --git a/ngraph/test/util/random.hpp b/ngraph/test/util/random.hpp index ed7f9d0ebba1fc..9b6c508e2cdb73 100644 --- a/ngraph/test/util/random.hpp +++ b/ngraph/test/util/random.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/test_case.hpp b/ngraph/test/util/test_case.hpp index 48da4b14a43109..bd30536918fd2c 100644 --- a/ngraph/test/util/test_case.hpp +++ b/ngraph/test/util/test_case.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/test_control.cpp b/ngraph/test/util/test_control.cpp index 3876a169029485..670eeffed03aa5 100644 --- a/ngraph/test/util/test_control.cpp +++ b/ngraph/test/util/test_control.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/ngraph/test/util/test_control.hpp b/ngraph/test/util/test_control.hpp index 5d966cc209be3a..58ca0b7bf4d8db 100644 --- a/ngraph/test/util/test_control.hpp +++ b/ngraph/test/util/test_control.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -39,6 +27,7 @@ namespace ngraph { \ public: \ NGRAPH_GTEST_TEST_CLASS_NAME_(backend_name, test_case_name, test_name)() {} \ + \ private: \ virtual void TestBody(); \ static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \ diff --git a/ngraph/test/util/test_tools.cpp b/ngraph/test/util/test_tools.cpp index 5f5eaa75a93c61..83f6b2daa82061 100644 --- a/ngraph/test/util/test_tools.cpp +++ b/ngraph/test/util/test_tools.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include @@ -227,16 +215,16 @@ ::testing::AssertionResult test_ordered_ops(shared_ptr f, const NodeVe Node* dep = node->get_input_node_ptr(i); if (seen.count(dep) == 0) { - return ::testing::AssertionFailure() << "Argument " << *dep - << " does not occur before op" << *node; + return ::testing::AssertionFailure() + << "Argument " << *dep << " does not occur before op" << *node; } } for (auto& dep_ptr : node->get_control_dependencies()) { if (seen.count(dep_ptr.get()) == 0) { - return ::testing::AssertionFailure() << "Control dependency " << *dep_ptr - << " does not occur before op" << *node; + return ::testing::AssertionFailure() + << "Control dependency " << *dep_ptr << " does not occur before op" << *node; } } seen.insert(node); @@ -245,8 +233,8 @@ ::testing::AssertionResult test_ordered_ops(shared_ptr f, const NodeVe { if (seen.count(node_ptr.get()) == 0) { - return ::testing::AssertionFailure() << "Required op " << *node_ptr - << "does not occur in ordered ops"; + return ::testing::AssertionFailure() + << "Required op " << *node_ptr << "does not occur in ordered ops"; } } return ::testing::AssertionSuccess(); diff --git a/ngraph/test/util/test_tools.hpp b/ngraph/test/util/test_tools.hpp index cedb575df0e333..67d1eb6df078c7 100644 --- a/ngraph/test/util/test_tools.hpp +++ b/ngraph/test/util/test_tools.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/type_prop.hpp b/ngraph/test/util/type_prop.hpp index 26431aad8964df..f4c5e1143f6407 100644 --- a/ngraph/test/util/type_prop.hpp +++ b/ngraph/test/util/type_prop.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once diff --git a/ngraph/test/util/unit-test-execution/conftest.py b/ngraph/test/util/unit-test-execution/conftest.py index 5937fb88580e4c..796e74b3f40f96 100644 --- a/ngraph/test/util/unit-test-execution/conftest.py +++ b/ngraph/test/util/unit-test-execution/conftest.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import logging as log import sys import subprocess diff --git a/ngraph/test/util/unit-test-execution/unit_test_executable.py b/ngraph/test/util/unit-test-execution/unit_test_executable.py index 8f747d39b94021..173d973f089fe4 100644 --- a/ngraph/test/util/unit-test-execution/unit_test_executable.py +++ b/ngraph/test/util/unit-test-execution/unit_test_executable.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import logging as log import sys import os diff --git a/ngraph/test/util/visitor.hpp b/ngraph/test/util/visitor.hpp index 7a40caa18a9f95..22cf6a8544ac46 100644 --- a/ngraph/test/util/visitor.hpp +++ b/ngraph/test/util/visitor.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2021 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -77,6 +65,7 @@ namespace ngraph } virtual operator HostTensorPtr&() { NGRAPH_CHECK(false, "Invalid type access"); } uint64_t get_index() { return m_index; } + protected: uint64_t m_index{0}; }; @@ -91,6 +80,7 @@ namespace ngraph m_index = index; } operator T&() override { return m_value; } + protected: T m_value; }; diff --git a/ngraph/test/visitors/op/broadcast.cpp b/ngraph/test/visitors/op/broadcast.cpp new file mode 100644 index 00000000000000..9cbab69d21e592 --- /dev/null +++ b/ngraph/test/visitors/op/broadcast.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, broadcast_v3) +{ + NodeBuilder::get_ops().register_factory(); + const auto arg = make_shared(element::i64, Shape{1, 3, 1}); + const auto shape = make_shared(element::i64, Shape{3}); + const auto broadcast_spec = op::BroadcastType::BIDIRECTIONAL; + + const auto broadcast_v3 = make_shared(arg, shape, broadcast_spec); + NodeBuilder builder(broadcast_v3); + auto g_broadcast_v3 = as_type_ptr(builder.create()); + + EXPECT_EQ(g_broadcast_v3->get_broadcast_spec(), broadcast_spec); +} diff --git a/ngraph/test/visitors/op/bucketize.cpp b/ngraph/test/visitors/op/bucketize.cpp new file mode 100644 index 00000000000000..5fa741040a8659 --- /dev/null +++ b/ngraph/test/visitors/op/bucketize.cpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, bucketize_v3_op_default_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{2, 3, 4}); + auto buckets = make_shared(element::f32, Shape{5}); + auto bucketize = make_shared(data, buckets); + NodeBuilder builder(bucketize); + + auto g_bucketize = as_type_ptr(builder.create()); + + EXPECT_EQ(g_bucketize->get_output_type(), bucketize->get_output_type()); + EXPECT_EQ(g_bucketize->get_with_right_bound(), bucketize->get_with_right_bound()); +} + +TEST(attributes, bucketize_v3_op_custom_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{2, 3, 4}); + auto buckets = make_shared(element::f32, Shape{5}); + element::Type output_type = element::i32; + bool with_right_bound = false; + + auto bucketize = make_shared(data, buckets, output_type, with_right_bound); + NodeBuilder builder(bucketize); + + auto g_bucketize = as_type_ptr(builder.create()); + + EXPECT_EQ(g_bucketize->get_output_type(), bucketize->get_output_type()); + EXPECT_EQ(g_bucketize->get_with_right_bound(), bucketize->get_with_right_bound()); +} diff --git a/ngraph/test/visitors/op/constant.cpp b/ngraph/test/visitors/op/constant.cpp new file mode 100644 index 00000000000000..5917dab22d7ae9 --- /dev/null +++ b/ngraph/test/visitors/op/constant.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, constant_op) +{ + vector data{5.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.0f}; + auto k = make_shared(element::f32, Shape{2, 3}, data); + NodeBuilder builder(k); + auto g_k = as_type_ptr(builder.create()); + g_k->validate_and_infer_types(); + ASSERT_TRUE(g_k); + EXPECT_EQ(k->get_element_type(), g_k->get_element_type()); + EXPECT_EQ(k->get_shape(), g_k->get_shape()); + vector g_data = g_k->get_vector(); + EXPECT_EQ(data, g_data); +} diff --git a/ngraph/test/visitors/op/cum_sum.cpp b/ngraph/test/visitors/op/cum_sum.cpp new file mode 100644 index 00000000000000..871de84c41032e --- /dev/null +++ b/ngraph/test/visitors/op/cum_sum.cpp @@ -0,0 +1,54 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, cum_sum_op_default_attributes) +{ + NodeBuilder::get_ops().register_factory(); + + Shape shape{1, 4}; + auto A = make_shared(element::f32, shape); + auto axis = make_shared(element::i32, Shape{1}); + auto cs = make_shared(A, axis); + + NodeBuilder builder(cs); + auto g_cs = as_type_ptr(builder.create()); + + EXPECT_EQ(g_cs->is_exclusive(), cs->is_exclusive()); + EXPECT_EQ(g_cs->is_reverse(), cs->is_reverse()); +} + +TEST(attributes, cum_sum_op_custom_attributes) +{ + NodeBuilder::get_ops().register_factory(); + + Shape shape{1, 4}; + auto A = make_shared(element::f32, shape); + auto axis = make_shared(element::i32, Shape{1}); + bool exclusive = true; + bool reverse = true; + auto cs = make_shared(A, axis, exclusive, reverse); + + NodeBuilder builder(cs); + auto g_cs = as_type_ptr(builder.create()); + + EXPECT_EQ(g_cs->is_exclusive(), cs->is_exclusive()); + EXPECT_EQ(g_cs->is_reverse(), cs->is_reverse()); +} + diff --git a/ngraph/test/visitors/op/detection_output.cpp b/ngraph/test/visitors/op/detection_output.cpp new file mode 100644 index 00000000000000..a71dd4a88577d1 --- /dev/null +++ b/ngraph/test/visitors/op/detection_output.cpp @@ -0,0 +1,72 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, detection_output_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto box_logits = make_shared(element::f32, Shape{1, 2 * 1 * 4}); + const auto class_preds = make_shared(element::f32, Shape{1, 2 * 32}); + const auto proposals = make_shared(element::f32, Shape{1, 2, 2 * 4}); + const auto aux_class_preds = make_shared(element::f32, Shape{1, 2 * 2}); + const auto aux_box_pred = make_shared(element::f32, Shape{1, 2 * 1 * 4}); + + op::DetectionOutputAttrs attrs; + attrs.num_classes = 32; + attrs.background_label_id = 0; + attrs.top_k = 1; + attrs.variance_encoded_in_target = false; + attrs.keep_top_k = {1}; + attrs.code_type = string{"caffe.PriorBoxParameter.CORNER"}; + attrs.share_location = true; + attrs.nms_threshold = 0.64f; + attrs.confidence_threshold = 1e-4f; + attrs.clip_after_nms = true; + attrs.clip_before_nms = false; + attrs.decrease_label_id = false; + attrs.normalized = true; + attrs.input_height = 32; + attrs.input_width = 32; + attrs.objectness_score = 0.73f; + + auto detection_output = make_shared( + box_logits, class_preds, proposals, aux_class_preds, aux_box_pred, attrs); + NodeBuilder builder(detection_output); + auto g_detection_output = as_type_ptr(builder.create()); + + const auto do_attrs = detection_output->get_attrs(); + const auto g_do_attrs = g_detection_output->get_attrs(); + + EXPECT_EQ(g_do_attrs.num_classes, do_attrs.num_classes); + EXPECT_EQ(g_do_attrs.background_label_id, do_attrs.background_label_id); + EXPECT_EQ(g_do_attrs.top_k, do_attrs.top_k); + EXPECT_EQ(g_do_attrs.variance_encoded_in_target, do_attrs.variance_encoded_in_target); + EXPECT_EQ(g_do_attrs.keep_top_k, do_attrs.keep_top_k); + EXPECT_EQ(g_do_attrs.code_type, do_attrs.code_type); + EXPECT_EQ(g_do_attrs.share_location, do_attrs.share_location); + EXPECT_EQ(g_do_attrs.nms_threshold, do_attrs.nms_threshold); + EXPECT_EQ(g_do_attrs.confidence_threshold, do_attrs.confidence_threshold); + EXPECT_EQ(g_do_attrs.clip_after_nms, do_attrs.clip_after_nms); + EXPECT_EQ(g_do_attrs.clip_before_nms, do_attrs.clip_before_nms); + EXPECT_EQ(g_do_attrs.decrease_label_id, do_attrs.decrease_label_id); + EXPECT_EQ(g_do_attrs.normalized, do_attrs.normalized); + EXPECT_EQ(g_do_attrs.input_height, do_attrs.input_height); + EXPECT_EQ(g_do_attrs.input_width, do_attrs.input_width); + EXPECT_EQ(g_do_attrs.objectness_score, do_attrs.objectness_score); +} diff --git a/ngraph/test/visitors/op/elu.cpp b/ngraph/test/visitors/op/elu.cpp new file mode 100644 index 00000000000000..ecc9884e827770 --- /dev/null +++ b/ngraph/test/visitors/op/elu.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, elu_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{2, 4}); + + double alpha = 0.1; + + const auto elu = make_shared(data, alpha); + NodeBuilder builder(elu); + auto g_elu = as_type_ptr(builder.create()); + + EXPECT_EQ(g_elu->get_alpha(), elu->get_alpha()); +} diff --git a/ngraph/test/visitors/op/extractimagepatches.cpp b/ngraph/test/visitors/op/extractimagepatches.cpp new file mode 100644 index 00000000000000..6d5c99146eac10 --- /dev/null +++ b/ngraph/test/visitors/op/extractimagepatches.cpp @@ -0,0 +1,40 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, extractimagepatches_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{64, 3, 10, 10}); + + auto sizes = Shape{3, 3}; + auto strides = Strides{5, 5}; + auto rates = Shape{1, 1}; + auto padtype_padding = ngraph::op::PadType::VALID; + + auto extractimagepatches = + make_shared(data, sizes, strides, rates, padtype_padding); + NodeBuilder builder(extractimagepatches); + auto g_extractimagepatches = as_type_ptr(builder.create()); + + EXPECT_EQ(g_extractimagepatches->get_sizes(), sizes); + EXPECT_EQ(g_extractimagepatches->get_strides(), strides); + EXPECT_EQ(g_extractimagepatches->get_rates(), rates); + EXPECT_EQ(g_extractimagepatches->get_auto_pad(), padtype_padding); +} diff --git a/ngraph/test/visitors/op/fake_quantize.cpp b/ngraph/test/visitors/op/fake_quantize.cpp new file mode 100644 index 00000000000000..161e65f5ed8432 --- /dev/null +++ b/ngraph/test/visitors/op/fake_quantize.cpp @@ -0,0 +1,40 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, fake_quantize_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto data = make_shared(element::f32, Shape{1, 2, 3, 4}); + const auto input_low = make_shared(element::f32, Shape{}); + const auto input_high = make_shared(element::f32, Shape{}); + const auto output_low = make_shared(element::f32, Shape{}); + const auto output_high = make_shared(element::f32, Shape{}); + + auto levels = 5; + auto auto_broadcast = op::AutoBroadcastType::NUMPY; + + const auto fake_quantize = make_shared( + data, input_low, input_high, output_low, output_high, levels, auto_broadcast); + NodeBuilder builder(fake_quantize); + auto g_fake_quantize = as_type_ptr(builder.create()); + + EXPECT_EQ(g_fake_quantize->get_levels(), fake_quantize->get_levels()); + EXPECT_EQ(g_fake_quantize->get_auto_broadcast(), fake_quantize->get_auto_broadcast()); +} diff --git a/ngraph/test/visitors/op/grn.cpp b/ngraph/test/visitors/op/grn.cpp new file mode 100644 index 00000000000000..b45846f7c97993 --- /dev/null +++ b/ngraph/test/visitors/op/grn.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, grn_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{2, 3, 4, 5}); + + float bias = 1.25f; + + auto grn = make_shared(data, bias); + NodeBuilder builder(grn); + auto g_grn = as_type_ptr(builder.create()); + + EXPECT_EQ(g_grn->get_bias(), grn->get_bias()); +} diff --git a/ngraph/test/visitors/op/group_conv.cpp b/ngraph/test/visitors/op/group_conv.cpp new file mode 100644 index 00000000000000..abc6b0ff1e087d --- /dev/null +++ b/ngraph/test/visitors/op/group_conv.cpp @@ -0,0 +1,74 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, group_conv_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{1, 12, 224, 224}); + auto filters = make_shared(element::f32, Shape{4, 1, 3, 5, 5}); + auto strides = Strides{1, 1}; + auto pads_begin = CoordinateDiff{1, 2}; + auto pads_end = CoordinateDiff{1, 2}; + auto dilations = Strides{1, 1}; + auto group_conv = make_shared( + data, filters, strides, pads_begin, pads_end, dilations, op::PadType::VALID); + NodeBuilder builder(group_conv); + auto g_group_conv = as_type_ptr(builder.create()); + EXPECT_EQ(g_group_conv->get_strides(), group_conv->get_strides()); + EXPECT_EQ(g_group_conv->get_pads_begin(), group_conv->get_pads_begin()); + EXPECT_EQ(g_group_conv->get_pads_end(), group_conv->get_pads_end()); + EXPECT_EQ(g_group_conv->get_dilations(), group_conv->get_dilations()); + EXPECT_EQ(g_group_conv->get_auto_pad(), group_conv->get_auto_pad()); +} + +TEST(attributes, group_conv_backprop_data_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto data = make_shared(element::f32, Shape{1, 20, 224, 224}); + const auto filter = make_shared(element::f32, Shape{4, 5, 2, 3, 3}); + const auto output_shape = make_shared(element::i32, Shape{1}); + + const auto strides = Strides{2, 1}; + const auto pads_begin = CoordinateDiff{3, 4}; + const auto pads_end = CoordinateDiff{4, 6}; + const auto dilations = Strides{3, 1}; + const auto auto_pad = op::PadType::EXPLICIT; + const auto output_padding = CoordinateDiff{3, 4}; + + const auto gcbd = make_shared(data, + filter, + output_shape, + strides, + pads_begin, + pads_end, + dilations, + auto_pad, + output_padding); + NodeBuilder builder(gcbd); + const auto g_gcbd = as_type_ptr(builder.create()); + + EXPECT_EQ(g_gcbd->get_strides(), gcbd->get_strides()); + EXPECT_EQ(g_gcbd->get_pads_begin(), gcbd->get_pads_begin()); + EXPECT_EQ(g_gcbd->get_pads_end(), gcbd->get_pads_end()); + EXPECT_EQ(g_gcbd->get_dilations(), gcbd->get_dilations()); + EXPECT_EQ(g_gcbd->get_auto_pad(), gcbd->get_auto_pad()); + EXPECT_EQ(g_gcbd->get_output_padding(), gcbd->get_output_padding()); +} + diff --git a/ngraph/test/visitors/op/interpolate.cpp b/ngraph/test/visitors/op/interpolate.cpp new file mode 100644 index 00000000000000..93b216b440a57b --- /dev/null +++ b/ngraph/test/visitors/op/interpolate.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, interpolate_op) +{ + NodeBuilder::get_ops().register_factory(); + auto img = make_shared(element::f32, Shape{1, 3, 32, 32}); + auto out_shape = make_shared(element::i32, Shape{2}); + + op::v0::InterpolateAttrs interp_atrs; + interp_atrs.axes = AxisSet{1, 2}; + interp_atrs.mode = "cubic"; + interp_atrs.align_corners = true; + interp_atrs.antialias = true; + interp_atrs.pads_begin = vector{0, 0}; + interp_atrs.pads_end = vector{0, 0}; + + auto interpolate = make_shared(img, out_shape, interp_atrs); + NodeBuilder builder(interpolate); + auto g_interpolate = as_type_ptr(builder.create()); + + const auto i_attrs = interpolate->get_attrs(); + const auto g_i_attrs = g_interpolate->get_attrs(); + + EXPECT_EQ(g_i_attrs.axes, i_attrs.axes); + EXPECT_EQ(g_i_attrs.mode, i_attrs.mode); + EXPECT_EQ(g_i_attrs.align_corners, i_attrs.align_corners); + EXPECT_EQ(g_i_attrs.antialias, i_attrs.antialias); + EXPECT_EQ(g_i_attrs.pads_begin, i_attrs.pads_begin); + EXPECT_EQ(g_i_attrs.pads_end, i_attrs.pads_end); +} diff --git a/ngraph/test/visitors/op/logical_xor.cpp b/ngraph/test/visitors/op/logical_xor.cpp new file mode 100644 index 00000000000000..80f0085b094648 --- /dev/null +++ b/ngraph/test/visitors/op/logical_xor.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, logical_xor_op) +{ + NodeBuilder::get_ops().register_factory(); + auto x1 = make_shared(element::boolean, Shape{200}); + auto x2 = make_shared(element::boolean, Shape{200}); + + auto auto_broadcast = op::AutoBroadcastType::NUMPY; + + auto logical_xor = make_shared(x1, x2, auto_broadcast); + NodeBuilder builder(logical_xor); + auto g_logical_xor = as_type_ptr(builder.create()); + + EXPECT_EQ(g_logical_xor->get_autob(), logical_xor->get_autob()); +} diff --git a/ngraph/test/visitors/op/lrn.cpp b/ngraph/test/visitors/op/lrn.cpp new file mode 100644 index 00000000000000..5b93e83cbac68b --- /dev/null +++ b/ngraph/test/visitors/op/lrn.cpp @@ -0,0 +1,40 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, lrn_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto arg = make_shared(element::f32, Shape{1, 2, 3, 4}); + const auto axes = make_shared(element::i32, Shape{2}); + + const double alpha = 1.1; + const double beta = 2.2; + const double bias = 3.3; + const size_t size = 4; + + const auto lrn = make_shared(arg, axes, alpha, beta, bias, size); + NodeBuilder builder(lrn); + auto g_lrn = as_type_ptr(builder.create()); + + EXPECT_EQ(g_lrn->get_alpha(), lrn->get_alpha()); + EXPECT_EQ(g_lrn->get_beta(), lrn->get_beta()); + EXPECT_EQ(g_lrn->get_bias(), lrn->get_bias()); + EXPECT_EQ(g_lrn->get_nsize(), lrn->get_nsize()); +} diff --git a/ngraph/test/visitors/op/lstm_cell.cpp b/ngraph/test/visitors/op/lstm_cell.cpp new file mode 100644 index 00000000000000..1a7b8805e08ca3 --- /dev/null +++ b/ngraph/test/visitors/op/lstm_cell.cpp @@ -0,0 +1,54 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, lstm_cell_op) +{ + NodeBuilder::get_ops().register_factory(); + auto X = make_shared(element::f32, Shape{2, 3}); + auto H = make_shared(element::f32, Shape{2, 3}); + auto W = make_shared(element::f32, Shape{12, 3}); + auto R = make_shared(element::f32, Shape{12, 3}); + const auto initial_hidden_state = make_shared(element::f32, Shape{2, 3}); + const auto initial_cell_state = make_shared(element::f32, Shape{2, 3}); + + const auto hidden_size = 3; + const std::vector activations = {"tanh", "sigmoid", "tanh"}; + auto activations_alpha = std::vector{1.0, 1.5}; + auto activations_beta = std::vector{2.0, 1.0}; + const float clip = 0.5f; + const auto lstm_cell = make_shared(X, + initial_hidden_state, + initial_cell_state, + W, + R, + hidden_size, + activations, + activations_alpha, + activations_beta, + clip); + NodeBuilder builder(lstm_cell); + auto g_lstm_cell = as_type_ptr(builder.create()); + + EXPECT_EQ(g_lstm_cell->get_hidden_size(), lstm_cell->get_hidden_size()); + EXPECT_EQ(g_lstm_cell->get_activations(), lstm_cell->get_activations()); + EXPECT_EQ(g_lstm_cell->get_activations_alpha(), lstm_cell->get_activations_alpha()); + EXPECT_EQ(g_lstm_cell->get_activations_beta(), lstm_cell->get_activations_beta()); + EXPECT_EQ(g_lstm_cell->get_clip(), lstm_cell->get_clip()); +} diff --git a/ngraph/test/visitors/op/lstm_sequence.cpp b/ngraph/test/visitors/op/lstm_sequence.cpp new file mode 100644 index 00000000000000..4bdc3925913eff --- /dev/null +++ b/ngraph/test/visitors/op/lstm_sequence.cpp @@ -0,0 +1,72 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, lstm_sequence_op) +{ + NodeBuilder::get_ops().register_factory(); + + const size_t batch_size = 4; + const size_t num_directions = 2; + const size_t seq_length = 8; + const size_t input_size = 16; + const size_t hidden_size = 64; + + const auto X = + make_shared(element::f32, Shape{batch_size, seq_length, input_size}); + const auto initial_hidden_state = + make_shared(element::f32, Shape{batch_size, num_directions, hidden_size}); + const auto initial_cell_state = + make_shared(element::f32, Shape{batch_size, num_directions, hidden_size}); + const auto sequence_lengths = make_shared(element::i32, Shape{batch_size}); + const auto W = make_shared(element::f32, + Shape{num_directions, 4 * hidden_size, input_size}); + const auto R = make_shared(element::f32, + Shape{num_directions, 4 * hidden_size, hidden_size}); + const auto B = make_shared(element::f32, Shape{num_directions, 4 * hidden_size}); + + const auto lstm_direction = op::RecurrentSequenceDirection::BIDIRECTIONAL; + const std::vector activations_alpha = {1, 2, 3}; + const std::vector activations_beta = {4, 5, 6}; + const std::vector activations = {"tanh", "sigmoid", "tanh"}; + const float clip_threshold = 0.5f; + + const auto lstm_sequence = make_shared(X, + initial_hidden_state, + initial_cell_state, + sequence_lengths, + W, + R, + B, + hidden_size, + lstm_direction, + activations_alpha, + activations_beta, + activations, + clip_threshold); + NodeBuilder builder(lstm_sequence); + auto g_lstm_sequence = as_type_ptr(builder.create()); + + EXPECT_EQ(g_lstm_sequence->get_hidden_size(), lstm_sequence->get_hidden_size()); + EXPECT_EQ(g_lstm_sequence->get_activations(), lstm_sequence->get_activations()); + EXPECT_EQ(g_lstm_sequence->get_activations_alpha(), lstm_sequence->get_activations_alpha()); + EXPECT_EQ(g_lstm_sequence->get_activations_beta(), lstm_sequence->get_activations_beta()); + EXPECT_EQ(g_lstm_sequence->get_clip(), lstm_sequence->get_clip()); + EXPECT_EQ(g_lstm_sequence->get_direction(), lstm_sequence->get_direction()); +} diff --git a/ngraph/test/visitors/op/matmul.cpp b/ngraph/test/visitors/op/matmul.cpp new file mode 100644 index 00000000000000..5c072552e3b5f5 --- /dev/null +++ b/ngraph/test/visitors/op/matmul.cpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, matmul_op) +{ + NodeBuilder::get_ops().register_factory(); + auto A = make_shared(element::f32, Shape{0, 2}); + auto B = make_shared(element::f32, Shape{2, 0}); + + bool transpose_a = true; + bool transpose_b = true; + + auto matmul = make_shared(A, B, transpose_a, transpose_b); + NodeBuilder builder(matmul); + auto g_matmul = as_type_ptr(builder.create()); + + EXPECT_EQ(g_matmul->get_transpose_a(), matmul->get_transpose_a()); + EXPECT_EQ(g_matmul->get_transpose_b(), matmul->get_transpose_b()); +} diff --git a/ngraph/test/visitors/op/max_pool.cpp b/ngraph/test/visitors/op/max_pool.cpp new file mode 100644 index 00000000000000..1f7847ed912cde --- /dev/null +++ b/ngraph/test/visitors/op/max_pool.cpp @@ -0,0 +1,44 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, max_pool_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{64, 3, 5}); + + auto strides = Strides{2}; + auto pads_begin = Shape{1}; + auto pads_end = Shape{1}; + auto kernel = Shape{1}; + auto rounding_mode = op::RoundingType::FLOOR; + auto auto_pad = op::PadType::EXPLICIT; + + auto max_pool = make_shared( + data, strides, pads_begin, pads_end, kernel, rounding_mode, auto_pad); + NodeBuilder builder(max_pool); + auto g_max_pool = as_type_ptr(builder.create()); + + EXPECT_EQ(g_max_pool->get_strides(), max_pool->get_strides()); + EXPECT_EQ(g_max_pool->get_pads_begin(), max_pool->get_pads_begin()); + EXPECT_EQ(g_max_pool->get_pads_end(), max_pool->get_pads_end()); + EXPECT_EQ(g_max_pool->get_kernel(), max_pool->get_kernel()); + EXPECT_EQ(g_max_pool->get_rounding_type(), max_pool->get_rounding_type()); + EXPECT_EQ(g_max_pool->get_auto_pad(), max_pool->get_auto_pad()); +} diff --git a/ngraph/test/visitors/op/mod.cpp b/ngraph/test/visitors/op/mod.cpp new file mode 100644 index 00000000000000..7f6e6ab5688604 --- /dev/null +++ b/ngraph/test/visitors/op/mod.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, mod_op) +{ + NodeBuilder::get_ops().register_factory(); + auto A = make_shared(element::f32, Shape{1, 2}); + auto B = make_shared(element::f32, Shape{2, 1}); + + auto auto_broadcast = op::AutoBroadcastType::NUMPY; + + auto mod = make_shared(A, B, auto_broadcast); + NodeBuilder builder(mod); + auto g_mod = as_type_ptr(builder.create()); + + EXPECT_EQ(g_mod->get_auto_broadcast(), mod->get_auto_broadcast()); +} diff --git a/ngraph/test/visitors/op/mvn.cpp b/ngraph/test/visitors/op/mvn.cpp new file mode 100644 index 00000000000000..0f2bf38ecdce62 --- /dev/null +++ b/ngraph/test/visitors/op/mvn.cpp @@ -0,0 +1,37 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, mvn_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto data = make_shared(element::i32, Shape{2, 3, 4, 5}); + + const auto axes = AxisSet{0, 1}; + + const auto op = make_shared(data, true, false, 0.1); + op->set_reduction_axes(axes); + NodeBuilder builder(op); + const auto g_op = as_type_ptr(builder.create()); + + EXPECT_EQ(g_op->get_reduction_axes(), op->get_reduction_axes()); + EXPECT_EQ(g_op->get_across_channels(), op->get_across_channels()); + EXPECT_EQ(g_op->get_normalize_variance(), op->get_normalize_variance()); + EXPECT_EQ(g_op->get_eps(), op->get_eps()); +} diff --git a/ngraph/test/visitors/op/non_max_suppression.cpp b/ngraph/test/visitors/op/non_max_suppression.cpp new file mode 100644 index 00000000000000..79bbc1d40c5c44 --- /dev/null +++ b/ngraph/test/visitors/op/non_max_suppression.cpp @@ -0,0 +1,86 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, non_max_suppression_op_custom_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto boxes = make_shared(element::f32, Shape{1, 1, 4}); + auto scores = make_shared(element::f32, Shape{1, 1, 1}); + + auto box_encoding = opset1::NonMaxSuppression::BoxEncodingType::CENTER; + bool sort_result_descending = false; + + auto nms = + make_shared(boxes, scores, box_encoding, sort_result_descending); + NodeBuilder builder(nms); + auto g_nms = as_type_ptr(builder.create()); + + EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); + EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); +} + +TEST(attributes, non_max_suppression_op_default_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto boxes = make_shared(element::f32, Shape{1, 1, 4}); + auto scores = make_shared(element::f32, Shape{1, 1, 1}); + + auto nms = make_shared(boxes, scores); + NodeBuilder builder(nms); + auto g_nms = as_type_ptr(builder.create()); + + EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); + EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); +} + +TEST(attributes, non_max_suppression_v3_op_custom_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto boxes = make_shared(element::f32, Shape{1, 1, 4}); + auto scores = make_shared(element::f32, Shape{1, 1, 1}); + + auto box_encoding = opset3::NonMaxSuppression::BoxEncodingType::CENTER; + bool sort_result_descending = false; + element::Type output_type = element::i32; + + auto nms = make_shared( + boxes, scores, box_encoding, sort_result_descending, output_type); + NodeBuilder builder(nms); + auto g_nms = as_type_ptr(builder.create()); + + EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); + EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); + EXPECT_EQ(g_nms->get_output_type(), nms->get_output_type()); +} + +TEST(attributes, non_max_suppression_v3_op_default_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto boxes = make_shared(element::f32, Shape{1, 1, 4}); + auto scores = make_shared(element::f32, Shape{1, 1, 1}); + + auto nms = make_shared(boxes, scores); + NodeBuilder builder(nms); + auto g_nms = as_type_ptr(builder.create()); + + EXPECT_EQ(g_nms->get_box_encoding(), nms->get_box_encoding()); + EXPECT_EQ(g_nms->get_sort_result_descending(), nms->get_sort_result_descending()); + EXPECT_EQ(g_nms->get_output_type(), nms->get_output_type()); +} diff --git a/ngraph/test/visitors/op/normalize_l2.cpp b/ngraph/test/visitors/op/normalize_l2.cpp new file mode 100644 index 00000000000000..b14b9a5b3b17a2 --- /dev/null +++ b/ngraph/test/visitors/op/normalize_l2.cpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, normalize_l2_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{1}); + const auto axes = make_shared(element::i32, Shape{}, vector{0}); + + float eps{1e-6f}; + auto eps_mode = op::EpsMode::ADD; + + auto normalize_l2 = make_shared(data, axes, eps, eps_mode); + NodeBuilder builder(normalize_l2); + auto g_normalize_l2 = as_type_ptr(builder.create()); + + EXPECT_EQ(g_normalize_l2->get_eps(), normalize_l2->get_eps()); + EXPECT_EQ(g_normalize_l2->get_eps_mode(), normalize_l2->get_eps_mode()); +} diff --git a/ngraph/test/visitors/op/one_hot.cpp b/ngraph/test/visitors/op/one_hot.cpp new file mode 100644 index 00000000000000..4362abb70edb65 --- /dev/null +++ b/ngraph/test/visitors/op/one_hot.cpp @@ -0,0 +1,37 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, one_hot_op) +{ + NodeBuilder::get_ops().register_factory(); + auto indices = make_shared(element::i64, Shape{1, 3, 2, 3}); + auto depth = op::Constant::create(element::i64, Shape{}, {4}); + auto on_value = op::Constant::create(element::f32, Shape{}, {1.0f}); + auto off_value = op::Constant::create(element::f32, Shape{}, {0.0f}); + + int64_t axis = 3; + + auto one_hot = make_shared(indices, depth, on_value, off_value, axis); + NodeBuilder builder(one_hot); + auto g_one_hot = as_type_ptr(builder.create()); + + EXPECT_EQ(g_one_hot->get_axis(), one_hot->get_axis()); +} + diff --git a/ngraph/test/visitors/op/pad.cpp b/ngraph/test/visitors/op/pad.cpp new file mode 100644 index 00000000000000..a2cd17c3bd415a --- /dev/null +++ b/ngraph/test/visitors/op/pad.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, pad_op) +{ + NodeBuilder::get_ops().register_factory(); + auto arg = make_shared(element::f32, Shape{1, 2, 3}); + auto pads_begin = make_shared(element::i64, Shape{1}); + auto pads_end = make_shared(element::i64, Shape{1}); + + auto pad_mode = op::PadMode::EDGE; + + auto pad = make_shared(arg, pads_begin, pads_end, pad_mode); + NodeBuilder builder(pad); + auto g_pad = as_type_ptr(builder.create()); + + EXPECT_EQ(g_pad->get_pad_mode(), pad->get_pad_mode()); +} diff --git a/ngraph/test/visitors/op/prior_box.cpp b/ngraph/test/visitors/op/prior_box.cpp new file mode 100644 index 00000000000000..3e0c5c706d24d2 --- /dev/null +++ b/ngraph/test/visitors/op/prior_box.cpp @@ -0,0 +1,60 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, prior_box_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto layer_shape = make_shared(element::i64, Shape{128, 128}); + const auto image_shape = make_shared(element::i64, Shape{32, 32}); + + op::PriorBoxAttrs attrs; + attrs.min_size = vector{16.f, 32.f}; + attrs.max_size = vector{256.f, 512.f}; + attrs.aspect_ratio = vector{0.66f, 1.56f}; + attrs.density = vector{0.55f}; + attrs.fixed_ratio = vector{0.88f}; + attrs.fixed_size = vector{1.25f}; + attrs.clip = true; + attrs.flip = false; + attrs.step = 1.0f; + attrs.offset = 0.0f; + attrs.variance = vector{2.22f, 3.14f}; + attrs.scale_all_sizes = true; + + auto prior_box = make_shared(layer_shape, image_shape, attrs); + NodeBuilder builder(prior_box); + auto g_prior_box = as_type_ptr(builder.create()); + + const auto prior_box_attrs = prior_box->get_attrs(); + const auto g_prior_box_attrs = g_prior_box->get_attrs(); + + EXPECT_EQ(g_prior_box_attrs.min_size, prior_box_attrs.min_size); + EXPECT_EQ(g_prior_box_attrs.max_size, prior_box_attrs.max_size); + EXPECT_EQ(g_prior_box_attrs.aspect_ratio, prior_box_attrs.aspect_ratio); + EXPECT_EQ(g_prior_box_attrs.density, prior_box_attrs.density); + EXPECT_EQ(g_prior_box_attrs.fixed_ratio, prior_box_attrs.fixed_ratio); + EXPECT_EQ(g_prior_box_attrs.fixed_size, prior_box_attrs.fixed_size); + EXPECT_EQ(g_prior_box_attrs.clip, prior_box_attrs.clip); + EXPECT_EQ(g_prior_box_attrs.flip, prior_box_attrs.flip); + EXPECT_EQ(g_prior_box_attrs.step, prior_box_attrs.step); + EXPECT_EQ(g_prior_box_attrs.offset, prior_box_attrs.offset); + EXPECT_EQ(g_prior_box_attrs.variance, prior_box_attrs.variance); + EXPECT_EQ(g_prior_box_attrs.scale_all_sizes, prior_box_attrs.scale_all_sizes); +} diff --git a/ngraph/test/visitors/op/proposal.cpp b/ngraph/test/visitors/op/proposal.cpp new file mode 100644 index 00000000000000..6db451a8f42bb6 --- /dev/null +++ b/ngraph/test/visitors/op/proposal.cpp @@ -0,0 +1,65 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, proposal_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto class_probs = make_shared(element::f32, Shape{1024, 2, 128, 128}); + const auto class_logits = make_shared(element::f32, Shape{1024, 4, 128, 128}); + const auto image_shape = make_shared(element::f32, Shape{4}); + + op::ProposalAttrs attrs; + attrs.base_size = 224; + attrs.pre_nms_topn = 100; + attrs.post_nms_topn = 110; + attrs.nms_thresh = 0.12f; + attrs.feat_stride = 2; + attrs.min_size = 10; + attrs.ratio = vector{1.44f, 0.66f}; + attrs.scale = vector{2.25f, 1.83f}; + attrs.clip_before_nms = true; + attrs.clip_after_nms = true; + attrs.normalize = false; + attrs.box_size_scale = 2.f; + attrs.box_coordinate_scale = 4.55f; + attrs.framework = string{"nGraph"}; + + auto proposal = make_shared(class_probs, class_logits, image_shape, attrs); + NodeBuilder builder(proposal); + auto g_proposal = as_type_ptr(builder.create()); + + const auto proposal_attrs = proposal->get_attrs(); + const auto g_proposal_attrs = g_proposal->get_attrs(); + + EXPECT_EQ(g_proposal_attrs.base_size, proposal_attrs.base_size); + EXPECT_EQ(g_proposal_attrs.pre_nms_topn, proposal_attrs.pre_nms_topn); + EXPECT_EQ(g_proposal_attrs.post_nms_topn, proposal_attrs.post_nms_topn); + EXPECT_EQ(g_proposal_attrs.nms_thresh, proposal_attrs.nms_thresh); + EXPECT_EQ(g_proposal_attrs.feat_stride, proposal_attrs.feat_stride); + EXPECT_EQ(g_proposal_attrs.min_size, proposal_attrs.min_size); + EXPECT_EQ(g_proposal_attrs.ratio, proposal_attrs.ratio); + EXPECT_EQ(g_proposal_attrs.scale, proposal_attrs.scale); + EXPECT_EQ(g_proposal_attrs.clip_before_nms, proposal_attrs.clip_before_nms); + EXPECT_EQ(g_proposal_attrs.clip_after_nms, proposal_attrs.clip_after_nms); + EXPECT_EQ(g_proposal_attrs.normalize, proposal_attrs.normalize); + EXPECT_EQ(g_proposal_attrs.box_size_scale, proposal_attrs.box_size_scale); + EXPECT_EQ(g_proposal_attrs.box_coordinate_scale, proposal_attrs.box_coordinate_scale); + EXPECT_EQ(g_proposal_attrs.framework, proposal_attrs.framework); +} diff --git a/ngraph/test/visitors/op/psroi_pooling.cpp b/ngraph/test/visitors/op/psroi_pooling.cpp new file mode 100644 index 00000000000000..e951fe6842ff73 --- /dev/null +++ b/ngraph/test/visitors/op/psroi_pooling.cpp @@ -0,0 +1,45 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, psroi_pooling_op) +{ + NodeBuilder::get_ops().register_factory(); + auto input = make_shared(element::f32, Shape{1, 1024, 63, 38}); + auto coords = make_shared(element::f32, Shape{300, 5}); + + const int64_t output_dim = 64; + const int64_t group_size = 4; + const float spatial_scale = 0.0625; + int spatial_bins_x = 1; + int spatial_bins_y = 1; + string mode = "average"; + + auto psroi_pool = make_shared( + input, coords, output_dim, group_size, spatial_scale, spatial_bins_x, spatial_bins_y, mode); + NodeBuilder builder(psroi_pool); + auto g_psroi_pool = as_type_ptr(builder.create()); + + EXPECT_EQ(g_psroi_pool->get_output_dim(), psroi_pool->get_output_dim()); + EXPECT_EQ(g_psroi_pool->get_group_size(), psroi_pool->get_group_size()); + EXPECT_EQ(g_psroi_pool->get_spatial_scale(), psroi_pool->get_spatial_scale()); + EXPECT_EQ(g_psroi_pool->get_spatial_bins_x(), psroi_pool->get_spatial_bins_x()); + EXPECT_EQ(g_psroi_pool->get_spatial_bins_y(), psroi_pool->get_spatial_bins_y()); + EXPECT_EQ(g_psroi_pool->get_mode(), psroi_pool->get_mode()); +} diff --git a/ngraph/test/visitors/op/reduce_logical_and.cpp b/ngraph/test/visitors/op/reduce_logical_and.cpp new file mode 100644 index 00000000000000..8a5d68010e75a2 --- /dev/null +++ b/ngraph/test/visitors/op/reduce_logical_and.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reduce_logical_and_op) +{ + // ReduceLogicalAnd derives visit_attributes from op::util::LogicalReductionKeepDims + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{3, 4, 5}); + auto reduction_axes = make_shared(element::i64, Shape{2}); + + bool keep_dims = true; + + auto reduce_logical_and = make_shared(data, reduction_axes, keep_dims); + NodeBuilder builder(reduce_logical_and); + auto g_reduce_logical_and = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reduce_logical_and->get_keep_dims(), reduce_logical_and->get_keep_dims()); +} diff --git a/ngraph/test/visitors/op/reduce_logical_or.cpp b/ngraph/test/visitors/op/reduce_logical_or.cpp new file mode 100644 index 00000000000000..87fc81e36b8231 --- /dev/null +++ b/ngraph/test/visitors/op/reduce_logical_or.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reduce_logical_or_op) +{ + // ReduceLogicalOr derives visit_attributes from op::util::LogicalReductionKeepDims + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{3, 4, 5}); + auto reduction_axes = make_shared(element::i64, Shape{2}); + + bool keep_dims = true; + + auto reduce_logical_or = make_shared(data, reduction_axes, keep_dims); + NodeBuilder builder(reduce_logical_or); + auto g_reduce_logical_or = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reduce_logical_or->get_keep_dims(), reduce_logical_or->get_keep_dims()); +} diff --git a/ngraph/test/visitors/op/reduce_max.cpp b/ngraph/test/visitors/op/reduce_max.cpp new file mode 100644 index 00000000000000..6ff4a6174ef100 --- /dev/null +++ b/ngraph/test/visitors/op/reduce_max.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reduce_max_op) +{ + // ReduceMax derives visit_attributes from op::util::ArithmeticReductionKeepDims + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{3, 4, 5}); + auto reduction_axes = make_shared(element::i64, Shape{2}); + + bool keep_dims = true; + + auto reduce_max = make_shared(data, reduction_axes, keep_dims); + NodeBuilder builder(reduce_max); + auto g_reduce_max = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reduce_max->get_keep_dims(), reduce_max->get_keep_dims()); +} diff --git a/ngraph/test/visitors/op/reduce_mean.cpp b/ngraph/test/visitors/op/reduce_mean.cpp new file mode 100644 index 00000000000000..e8f90e3d28260e --- /dev/null +++ b/ngraph/test/visitors/op/reduce_mean.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reduce_mean_op) +{ + // ReduceMean derives visit_attributes from op::util::ArithmeticReductionKeepDims + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{3, 4, 5}); + auto reduction_axes = make_shared(element::i64, Shape{2}); + + bool keep_dims = true; + + auto reduce_mean = make_shared(data, reduction_axes, keep_dims); + NodeBuilder builder(reduce_mean); + auto g_reduce_mean = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reduce_mean->get_keep_dims(), reduce_mean->get_keep_dims()); +} diff --git a/ngraph/test/visitors/op/reduce_min.cpp b/ngraph/test/visitors/op/reduce_min.cpp new file mode 100644 index 00000000000000..e0972bfd28db5a --- /dev/null +++ b/ngraph/test/visitors/op/reduce_min.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reduce_min_op) +{ + // ReduceMin derives visit_attributes from op::util::ArithmeticReductionKeepDims + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{3, 4, 5}); + auto reduction_axes = make_shared(element::i64, Shape{2}); + + bool keep_dims = true; + + auto reduce_min = make_shared(data, reduction_axes, keep_dims); + NodeBuilder builder(reduce_min); + auto g_reduce_min = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reduce_min->get_keep_dims(), reduce_min->get_keep_dims()); +} diff --git a/ngraph/test/visitors/op/reduce_prod.cpp b/ngraph/test/visitors/op/reduce_prod.cpp new file mode 100644 index 00000000000000..059186376d25d8 --- /dev/null +++ b/ngraph/test/visitors/op/reduce_prod.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reduce_prod_op) +{ + // ReduceProd derives visit_attributes from op::util::ArithmeticReductionKeepDims + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{3, 4, 5}); + auto reduction_axes = make_shared(element::i64, Shape{2}); + + bool keep_dims = true; + + auto reduce_prod = make_shared(data, reduction_axes, keep_dims); + NodeBuilder builder(reduce_prod); + auto g_reduce_prod = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reduce_prod->get_keep_dims(), reduce_prod->get_keep_dims()); +} diff --git a/ngraph/test/visitors/op/reduce_sum.cpp b/ngraph/test/visitors/op/reduce_sum.cpp new file mode 100644 index 00000000000000..46d2a73ae465ea --- /dev/null +++ b/ngraph/test/visitors/op/reduce_sum.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reduce_sum_op) +{ + // ReduceSum derives visit_attributes from op::util::ArithmeticReductionKeepDims + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{3, 4, 5}); + auto reduction_axes = make_shared(element::i64, Shape{2}); + + bool keep_dims = true; + + auto reduce_sum = make_shared(data, reduction_axes, keep_dims); + NodeBuilder builder(reduce_sum); + auto g_reduce_sum = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reduce_sum->get_keep_dims(), reduce_sum->get_keep_dims()); +} diff --git a/ngraph/test/visitors/op/region_yolo.cpp b/ngraph/test/visitors/op/region_yolo.cpp new file mode 100644 index 00000000000000..6cd74fd7fe59bb --- /dev/null +++ b/ngraph/test/visitors/op/region_yolo.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, region_yolo_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::f32, Shape{1, 255, 26, 26}); + + size_t num_coords = 4; + size_t num_classes = 1; + size_t num_regions = 6; + auto do_softmax = false; + auto mask = std::vector{0, 1}; + auto axis = 1; + auto end_axis = 3; + auto anchors = std::vector{10, 14, 23, 27, 37, 58, 81, 82, 135, 169, 344, 319}; + + auto region_yolo = make_shared( + data, num_coords, num_classes, num_regions, do_softmax, mask, axis, end_axis, anchors); + NodeBuilder builder(region_yolo); + auto g_region_yolo = as_type_ptr(builder.create()); + + EXPECT_EQ(g_region_yolo->get_num_coords(), region_yolo->get_num_coords()); + EXPECT_EQ(g_region_yolo->get_num_classes(), region_yolo->get_num_classes()); + EXPECT_EQ(g_region_yolo->get_num_regions(), region_yolo->get_num_regions()); + EXPECT_EQ(g_region_yolo->get_do_softmax(), region_yolo->get_do_softmax()); + EXPECT_EQ(g_region_yolo->get_mask(), region_yolo->get_mask()); + EXPECT_EQ(g_region_yolo->get_anchors(), region_yolo->get_anchors()); + EXPECT_EQ(g_region_yolo->get_axis(), region_yolo->get_axis()); + EXPECT_EQ(g_region_yolo->get_end_axis(), region_yolo->get_end_axis()); +} diff --git a/ngraph/test/visitors/op/reorg_yolo.cpp b/ngraph/test/visitors/op/reorg_yolo.cpp new file mode 100644 index 00000000000000..f305ec60d61801 --- /dev/null +++ b/ngraph/test/visitors/op/reorg_yolo.cpp @@ -0,0 +1,44 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reorg_yolo_op_stride) +{ + NodeBuilder::get_ops().register_factory(); + const auto data = make_shared(element::i32, Shape{1, 64, 26, 26}); + + const auto op = make_shared(data, 2); + NodeBuilder builder(op); + const auto g_op = as_type_ptr(builder.create()); + + EXPECT_EQ(g_op->get_strides(), op->get_strides()); +} + +TEST(attributes, reorg_yolo_op_strides) +{ + NodeBuilder::get_ops().register_factory(); + const auto data = make_shared(element::i32, Shape{1, 64, 26, 26}); + + const auto op = make_shared(data, Strides{2}); + NodeBuilder builder(op); + const auto g_op = as_type_ptr(builder.create()); + + EXPECT_EQ(g_op->get_strides(), op->get_strides()); +} + diff --git a/ngraph/test/visitors/op/reshape.cpp b/ngraph/test/visitors/op/reshape.cpp new file mode 100644 index 00000000000000..8acad56678edb3 --- /dev/null +++ b/ngraph/test/visitors/op/reshape.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reshape_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{2, 3, 4}); + auto pattern = make_shared(element::i32, Shape{2}); + + bool special_zero = true; + + auto reshape = make_shared(data, pattern, special_zero); + NodeBuilder builder(reshape); + auto g_reshape = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reshape->get_special_zero(), reshape->get_special_zero()); +} diff --git a/ngraph/test/visitors/op/reverse.cpp b/ngraph/test/visitors/op/reverse.cpp new file mode 100644 index 00000000000000..953b337dddfefc --- /dev/null +++ b/ngraph/test/visitors/op/reverse.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reverse_op_enum_mode) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{200}); + auto reversed_axes = make_shared(element::i32, Shape{200}); + + auto reverse = make_shared(data, reversed_axes, opset1::Reverse::Mode::INDEX); + NodeBuilder builder(reverse); + auto g_reverse = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reverse->get_mode(), reverse->get_mode()); +} + +TEST(attributes, reverse_op_string_mode) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{200}); + auto reversed_axes = make_shared(element::i32, Shape{200}); + + std::string mode = "index"; + + auto reverse = make_shared(data, reversed_axes, mode); + NodeBuilder builder(reverse); + auto g_reverse = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reverse->get_mode(), reverse->get_mode()); +} + diff --git a/ngraph/test/visitors/op/reverse_sequence.cpp b/ngraph/test/visitors/op/reverse_sequence.cpp new file mode 100644 index 00000000000000..0f2f03890f27de --- /dev/null +++ b/ngraph/test/visitors/op/reverse_sequence.cpp @@ -0,0 +1,39 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, reverse_sequence_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{2, 3, 4, 2}); + auto seq_indices = make_shared(element::i32, Shape{4}); + + auto batch_axis = 2; + auto seq_axis = 1; + + auto reverse_sequence = + make_shared(data, seq_indices, batch_axis, seq_axis); + NodeBuilder builder(reverse_sequence); + auto g_reverse_sequence = as_type_ptr(builder.create()); + + EXPECT_EQ(g_reverse_sequence->get_origin_batch_axis(), + reverse_sequence->get_origin_batch_axis()); + EXPECT_EQ(g_reverse_sequence->get_origin_sequence_axis(), + reverse_sequence->get_origin_sequence_axis()); +} diff --git a/ngraph/test/visitors/op/rnn_cell.cpp b/ngraph/test/visitors/op/rnn_cell.cpp new file mode 100644 index 00000000000000..3e29c6a5a2224f --- /dev/null +++ b/ngraph/test/visitors/op/rnn_cell.cpp @@ -0,0 +1,68 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, rnn_cell_op_custom_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto X = make_shared(element::f32, Shape{2, 3}); + auto H = make_shared(element::f32, Shape{2, 3}); + auto W = make_shared(element::f32, Shape{3, 3}); + auto R = make_shared(element::f32, Shape{3, 3}); + + const size_t hidden_size = 3; + auto activations = std::vector{"sigmoid", "tanh"}; + auto activations_alpha = std::vector{1.0, 1.5}; + auto activations_beta = std::vector{2.0, 1.0}; + float clip = 1.0; + + auto rnn_cell = make_shared( + X, H, W, R, hidden_size, activations, activations_alpha, activations_beta, clip); + + NodeBuilder builder(rnn_cell); + auto g_rnn_cell = as_type_ptr(builder.create()); + + EXPECT_EQ(g_rnn_cell->get_hidden_size(), rnn_cell->get_hidden_size()); + EXPECT_EQ(g_rnn_cell->get_clip(), rnn_cell->get_clip()); + EXPECT_EQ(g_rnn_cell->get_activations(), rnn_cell->get_activations()); + EXPECT_EQ(g_rnn_cell->get_activations_alpha(), rnn_cell->get_activations_alpha()); + EXPECT_EQ(g_rnn_cell->get_activations_beta(), rnn_cell->get_activations_beta()); +} + +TEST(attributes, rnn_cell_op_default_attributes) +{ + NodeBuilder::get_ops().register_factory(); + auto X = make_shared(element::f32, Shape{2, 3}); + auto H = make_shared(element::f32, Shape{2, 3}); + auto W = make_shared(element::f32, Shape{3, 3}); + auto R = make_shared(element::f32, Shape{3, 3}); + + const size_t hidden_size = 3; + + auto rnn_cell = make_shared(X, H, W, R, hidden_size); + + NodeBuilder builder(rnn_cell); + auto g_rnn_cell = as_type_ptr(builder.create()); + + EXPECT_EQ(g_rnn_cell->get_hidden_size(), rnn_cell->get_hidden_size()); + EXPECT_EQ(g_rnn_cell->get_clip(), rnn_cell->get_clip()); + EXPECT_EQ(g_rnn_cell->get_activations(), rnn_cell->get_activations()); + EXPECT_EQ(g_rnn_cell->get_activations_alpha(), rnn_cell->get_activations_alpha()); + EXPECT_EQ(g_rnn_cell->get_activations_beta(), rnn_cell->get_activations_beta()); +} diff --git a/ngraph/test/visitors/op/roi_pooling.cpp b/ngraph/test/visitors/op/roi_pooling.cpp new file mode 100644 index 00000000000000..6fbea454d1f5b5 --- /dev/null +++ b/ngraph/test/visitors/op/roi_pooling.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, roi_pooling_op) +{ + NodeBuilder::get_ops().register_factory(); + const auto data = make_shared(element::f32, Shape{2, 3, 4, 5}); + const auto coords = make_shared(element::f32, Shape{2, 5}); + + const auto op = make_shared(data, coords, Shape{5, 5}, 0.123, "bilinear"); + NodeBuilder builder(op); + const auto g_op = as_type_ptr(builder.create()); + + EXPECT_EQ(g_op->get_output_size(), op->get_output_size()); + EXPECT_EQ(g_op->get_spatial_scale(), op->get_spatial_scale()); + EXPECT_EQ(g_op->get_method(), op->get_method()); +} diff --git a/ngraph/test/visitors/op/shuffle_channels.cpp b/ngraph/test/visitors/op/shuffle_channels.cpp new file mode 100644 index 00000000000000..ae1a5867779350 --- /dev/null +++ b/ngraph/test/visitors/op/shuffle_channels.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, shuffle_channels_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{200}); + auto axis = 0; + auto groups = 2; + auto shuffle_channels = make_shared(data, axis, groups); + NodeBuilder builder(shuffle_channels); + auto g_shuffle_channels = as_type_ptr(builder.create()); + + EXPECT_EQ(g_shuffle_channels->get_axis(), shuffle_channels->get_axis()); + EXPECT_EQ(g_shuffle_channels->get_group(), shuffle_channels->get_group()); +} diff --git a/ngraph/test/visitors/op/softmax.cpp b/ngraph/test/visitors/op/softmax.cpp new file mode 100644 index 00000000000000..29c5060a6fb482 --- /dev/null +++ b/ngraph/test/visitors/op/softmax.cpp @@ -0,0 +1,31 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, softmax_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{200}); + auto axis = 0; + auto softmax = make_shared(data, axis); + NodeBuilder builder(softmax); + auto g_softmax = as_type_ptr(builder.create()); + + EXPECT_EQ(g_softmax->get_axis(), softmax->get_axis()); +} diff --git a/ngraph/test/visitors/op/space_to_depth.cpp b/ngraph/test/visitors/op/space_to_depth.cpp new file mode 100644 index 00000000000000..da3cfd16177d50 --- /dev/null +++ b/ngraph/test/visitors/op/space_to_depth.cpp @@ -0,0 +1,33 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, space_to_depth_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{2, 3, 50, 50}); + auto block_size = 2; + auto mode = opset1::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; + auto space_to_depth = make_shared(data, mode, block_size); + NodeBuilder builder(space_to_depth); + auto g_space_to_depth = as_type_ptr(builder.create()); + + EXPECT_EQ(g_space_to_depth->get_block_size(), space_to_depth->get_block_size()); + EXPECT_EQ(g_space_to_depth->get_mode(), space_to_depth->get_mode()); +} diff --git a/ngraph/test/visitors/op/split.cpp b/ngraph/test/visitors/op/split.cpp new file mode 100644 index 00000000000000..0799c2be9f6bbc --- /dev/null +++ b/ngraph/test/visitors/op/split.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, split_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{200}); + auto axis = make_shared(element::i32, Shape{}); + auto num_splits = 2; + auto split = make_shared(data, axis, num_splits); + NodeBuilder builder(split); + auto g_split = as_type_ptr(builder.create()); + + EXPECT_EQ(g_split->get_num_splits(), split->get_num_splits()); +} diff --git a/ngraph/test/visitors/op/squared_difference.cpp b/ngraph/test/visitors/op/squared_difference.cpp new file mode 100644 index 00000000000000..cf2a7e0981e96e --- /dev/null +++ b/ngraph/test/visitors/op/squared_difference.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, squared_difference_op) +{ + NodeBuilder::get_ops().register_factory(); + auto x1 = make_shared(element::i32, Shape{200}); + auto x2 = make_shared(element::i32, Shape{200}); + auto auto_broadcast = op::AutoBroadcastType::NUMPY; + auto squared_difference = make_shared(x1, x2, auto_broadcast); + NodeBuilder builder(squared_difference); + auto g_squared_difference = as_type_ptr(builder.create()); + + EXPECT_EQ(g_squared_difference->get_autob(), squared_difference->get_autob()); +} diff --git a/ngraph/test/visitors/op/strided_slice.cpp b/ngraph/test/visitors/op/strided_slice.cpp new file mode 100644 index 00000000000000..d31e3611b676e3 --- /dev/null +++ b/ngraph/test/visitors/op/strided_slice.cpp @@ -0,0 +1,52 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, strided_slice_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{2, 3, 4, 5}); + auto begin = make_shared(element::i32, Shape{2}); + auto end = make_shared(element::i32, Shape{2}); + auto stride = make_shared(element::i32, Shape{2}); + + auto begin_mask = std::vector{0, 0}; + auto end_mask = std::vector{0, 0}; + auto new_axis_mask = std::vector{0, 0}; + auto shrink_axis_mask = std::vector{0, 0}; + auto ellipsis_mask = std::vector{0, 0}; + + auto strided_slice = make_shared(data, + begin, + end, + stride, + begin_mask, + end_mask, + new_axis_mask, + shrink_axis_mask, + ellipsis_mask); + NodeBuilder builder(strided_slice); + auto g_strided_slice = as_type_ptr(builder.create()); + + EXPECT_EQ(g_strided_slice->get_begin_mask(), strided_slice->get_begin_mask()); + EXPECT_EQ(g_strided_slice->get_end_mask(), strided_slice->get_end_mask()); + EXPECT_EQ(g_strided_slice->get_new_axis_mask(), strided_slice->get_new_axis_mask()); + EXPECT_EQ(g_strided_slice->get_shrink_axis_mask(), strided_slice->get_shrink_axis_mask()); + EXPECT_EQ(g_strided_slice->get_ellipsis_mask(), strided_slice->get_ellipsis_mask()); +} diff --git a/ngraph/test/visitors/op/topk.cpp b/ngraph/test/visitors/op/topk.cpp new file mode 100644 index 00000000000000..2f7c4096fe19f1 --- /dev/null +++ b/ngraph/test/visitors/op/topk.cpp @@ -0,0 +1,38 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, topk_op) +{ + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(element::i32, Shape{2, 3, 4, 5}); + auto k = make_shared(element::i32, Shape{}); + + auto axis = 0; + auto mode = opset1::TopK::Mode::MAX; + auto sort_type = opset1::TopK::SortType::SORT_VALUES; + + auto topk = make_shared(data, k, axis, mode, sort_type); + NodeBuilder builder(topk); + auto g_topk = as_type_ptr(builder.create()); + + EXPECT_EQ(g_topk->get_axis(), topk->get_axis()); + EXPECT_EQ(g_topk->get_mode(), topk->get_mode()); + EXPECT_EQ(g_topk->get_sort_type(), topk->get_sort_type()); +} diff --git a/ngraph/test/visitors/partial_shape.cpp b/ngraph/test/visitors/partial_shape.cpp new file mode 100644 index 00000000000000..822b51b42be931 --- /dev/null +++ b/ngraph/test/visitors/partial_shape.cpp @@ -0,0 +1,57 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, partial_shape) +{ + NodeBuilder builder; + AttributeVisitor& loader = builder.get_node_loader(); + AttributeVisitor& saver = builder.get_node_saver(); + + PartialShape dyn = PartialShape::dynamic(); + saver.on_attribute("dyn", dyn); + PartialShape g_dyn; + loader.on_attribute("dyn", g_dyn); + EXPECT_EQ(dyn, g_dyn); + + PartialShape scalar{}; + saver.on_attribute("scalar", scalar); + PartialShape g_scalar; + loader.on_attribute("scalar", g_scalar); + EXPECT_EQ(scalar, g_scalar); + + PartialShape dyn_vector{Dimension::dynamic()}; + saver.on_attribute("dyn_vector", dyn_vector); + PartialShape g_dyn_vector; + loader.on_attribute("dyn_vector", g_dyn_vector); + EXPECT_EQ(dyn_vector, g_dyn_vector); + + PartialShape stat_vector{7}; + saver.on_attribute("stat_vector", stat_vector); + PartialShape g_stat_vector; + loader.on_attribute("stat_vector", g_stat_vector); + EXPECT_EQ(stat_vector, g_stat_vector); + + PartialShape general{7, Dimension::dynamic(), 2, Dimension::dynamic(), 4}; + saver.on_attribute("general", general); + PartialShape g_general; + loader.on_attribute("general", g_general); + EXPECT_EQ(general, g_general); +} + diff --git a/ngraph/test/visitors/user_op.cpp b/ngraph/test/visitors/user_op.cpp new file mode 100644 index 00000000000000..b48194f3877f41 --- /dev/null +++ b/ngraph/test/visitors/user_op.cpp @@ -0,0 +1,410 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +enum class TuringModel +{ + XL400, + XL1200 +}; + +namespace ngraph +{ + template <> + EnumNames& EnumNames::get() + { + static auto enum_names = EnumNames( + "TuringModel", {{"XL400", TuringModel::XL400}, {"XL1200", TuringModel::XL1200}}); + return enum_names; + } + + template <> + class AttributeAdapter : public EnumAttributeAdapterBase + { + public: + AttributeAdapter(TuringModel& value) + : EnumAttributeAdapterBase(value) + { + } + + static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; + const DiscreteTypeInfo& get_type_info() const override { return type_info; } + }; + + constexpr DiscreteTypeInfo AttributeAdapter::type_info; + + struct Position + { + float x; + float y; + float z; + bool operator==(const Position& p) const { return x == p.x && y == p.y && z == p.z; } + Position& operator=(const Position& p) + { + x = p.x; + y = p.y; + z = p.z; + return *this; + } + }; + + template <> + class AttributeAdapter : public VisitorAdapter + { + public: + AttributeAdapter(Position& value) + : m_ref(value) + { + } + bool visit_attributes(AttributeVisitor& visitor) override + { + visitor.on_attribute("x", m_ref.x); + visitor.on_attribute("y", m_ref.y); + visitor.on_attribute("z", m_ref.z); + return true; + } + static constexpr DiscreteTypeInfo type_info{"AttributeAdapter", 0}; + const DiscreteTypeInfo& get_type_info() const override { return type_info; } + + protected: + Position& m_ref; + }; + + constexpr DiscreteTypeInfo AttributeAdapter::type_info; +} + +// Given a Turing machine program and data, return scalar 1 if the program would +// complete, 1 if it would not. +class Oracle : public op::Op +{ +public: + Oracle(const Output& program, + const Output& data, + TuringModel turing_model, + const element::Type element_type, + element::Type_t element_type_t, + const string& val_string, + bool val_bool, + float val_float, + double val_double, + uint8_t val_uint8_t, + uint16_t val_uint16_t, + uint32_t val_uint32_t, + uint64_t val_uint64_t, + int8_t val_int8_t, + int16_t val_int16_t, + int32_t val_int32_t, + int64_t val_int64_t, + size_t val_size_t, + const std::vector& vec_string, + const std::vector& vec_float, + const std::vector& vec_double, + const std::vector& vec_uint8_t, + const std::vector& vec_uint16_t, + const std::vector& vec_uint32_t, + const std::vector& vec_uint64_t, + const std::vector& vec_int8_t, + const std::vector& vec_int16_t, + const std::vector& vec_int32_t, + const std::vector& vec_int64_t, + const std::vector& vec_size_t, + const Position& position, + const shared_ptr& node, + const NodeVector& node_vector, + const ParameterVector& parameter_vector, + const ResultVector& result_vector) + : Op({program, data}) + , m_turing_model(turing_model) + , m_element_type(element_type) + , m_element_type_t(element_type_t) + , m_val_string(val_string) + , m_val_bool(val_bool) + , m_val_float(val_float) + , m_val_double(val_double) + , m_val_uint8_t(val_uint8_t) + , m_val_uint16_t(val_uint16_t) + , m_val_uint32_t(val_uint32_t) + , m_val_uint64_t(val_uint64_t) + , m_val_int8_t(val_int8_t) + , m_val_int16_t(val_int16_t) + , m_val_int32_t(val_int32_t) + , m_val_int64_t(val_int64_t) + , m_val_size_t(val_size_t) + , m_vec_string(vec_string) + , m_vec_float(vec_float) + , m_vec_double(vec_double) + , m_vec_uint8_t(vec_uint8_t) + , m_vec_uint16_t(vec_uint16_t) + , m_vec_uint32_t(vec_uint32_t) + , m_vec_uint64_t(vec_uint64_t) + , m_vec_int8_t(vec_int8_t) + , m_vec_int16_t(vec_int16_t) + , m_vec_int32_t(vec_int32_t) + , m_vec_int64_t(vec_int64_t) + , m_vec_size_t(vec_size_t) + , m_position(position) + , m_node(node) + , m_node_vector(node_vector) + , m_parameter_vector(parameter_vector) + , m_result_vector(result_vector) + { + } + + static constexpr NodeTypeInfo type_info{"Oracle", 0}; + const NodeTypeInfo& get_type_info() const override { return type_info; } + Oracle() = default; + + TuringModel get_turing_model() const { return m_turing_model; } + const element::Type get_element_type() const { return m_element_type; } + const element::Type_t get_element_type_t() const { return m_element_type_t; } + const string& get_val_string() const { return m_val_string; } + bool get_val_bool() const { return m_val_bool; } + bool get_val_float() const { return m_val_float; } + bool get_val_double() const { return m_val_double; } + uint64_t get_val_uint8_t() const { return m_val_uint8_t; } + uint64_t get_val_uint16_t() const { return m_val_uint16_t; } + uint64_t get_val_uint32_t() const { return m_val_uint32_t; } + uint64_t get_val_uint64_t() const { return m_val_uint64_t; } + int64_t get_val_int8_t() const { return m_val_int8_t; } + int64_t get_val_int16_t() const { return m_val_int16_t; } + int64_t get_val_int32_t() const { return m_val_int32_t; } + int64_t get_val_int64_t() const { return m_val_int64_t; } + size_t get_val_size_t() const { return m_val_size_t; } + const vector& get_vec_uint8_t() const { return m_vec_uint8_t; } + const vector& get_vec_uint16_t() const { return m_vec_uint16_t; } + const vector& get_vec_uint32_t() const { return m_vec_uint32_t; } + const vector& get_vec_uint64_t() const { return m_vec_uint64_t; } + const vector& get_vec_int8_t() const { return m_vec_int8_t; } + const vector& get_vec_int16_t() const { return m_vec_int16_t; } + const vector& get_vec_int32_t() const { return m_vec_int32_t; } + const vector& get_vec_int64_t() const { return m_vec_int64_t; } + const vector& get_vec_string() const { return m_vec_string; } + const vector& get_vec_float() const { return m_vec_float; } + const vector& get_vec_double() const { return m_vec_double; } + const vector& get_vec_size_t() const { return m_vec_size_t; } + const Position& get_position() const { return m_position; } + const shared_ptr& get_node() const { return m_node; } + const NodeVector& get_node_vector() const { return m_node_vector; } + const ParameterVector& get_parameter_vector() const { return m_parameter_vector; } + const ResultVector& get_result_vector() const { return m_result_vector; } + shared_ptr clone_with_new_inputs(const OutputVector& args) const override + { + return make_shared(args[0], + args[1], + m_turing_model, + m_element_type, + m_element_type_t, + m_val_string, + m_val_bool, + m_val_float, + m_val_double, + m_val_uint8_t, + m_val_uint16_t, + m_val_uint32_t, + m_val_uint64_t, + m_val_int8_t, + m_val_int16_t, + m_val_int32_t, + m_val_int64_t, + m_val_size_t, + m_vec_string, + m_vec_float, + m_vec_double, + m_vec_uint8_t, + m_vec_uint16_t, + m_vec_uint32_t, + m_vec_uint64_t, + m_vec_int8_t, + m_vec_int16_t, + m_vec_int32_t, + m_vec_int64_t, + m_vec_size_t, + m_position, + m_node, + m_node_vector, + m_parameter_vector, + m_result_vector); + } + + void validate_and_infer_types() override { set_output_type(0, element::i64, {}); } + bool visit_attributes(AttributeVisitor& visitor) override + { + visitor.on_attribute("turing_model", m_turing_model); + visitor.on_attribute("element_type", m_element_type); + visitor.on_attribute("element_type_t", m_element_type_t); + visitor.on_attribute("val_string", m_val_string); + visitor.on_attribute("val_bool", m_val_bool); + visitor.on_attribute("val_float", m_val_float); + visitor.on_attribute("val_double", m_val_double); + visitor.on_attribute("val_uint8_t", m_val_uint8_t); + visitor.on_attribute("val_uint16_t", m_val_uint16_t); + visitor.on_attribute("val_uint32_t", m_val_uint32_t); + visitor.on_attribute("val_uint64_t", m_val_uint64_t); + visitor.on_attribute("val_int8_t", m_val_int8_t); + visitor.on_attribute("val_int16_t", m_val_int16_t); + visitor.on_attribute("val_int32_t", m_val_int32_t); + visitor.on_attribute("val_int64_t", m_val_int64_t); + visitor.on_attribute("val_size_t", m_val_size_t); + visitor.on_attribute("vec_string", m_vec_string); + visitor.on_attribute("vec_float", m_vec_float); + visitor.on_attribute("vec_double", m_vec_double); + visitor.on_attribute("vec_uint8_t", m_vec_uint8_t); + visitor.on_attribute("vec_uint16_t", m_vec_uint16_t); + visitor.on_attribute("vec_uint32_t", m_vec_uint32_t); + visitor.on_attribute("vec_uint64_t", m_vec_uint64_t); + visitor.on_attribute("vec_int8_t", m_vec_int8_t); + visitor.on_attribute("vec_int16_t", m_vec_int16_t); + visitor.on_attribute("vec_int32_t", m_vec_int32_t); + visitor.on_attribute("vec_int64_t", m_vec_int64_t); + visitor.on_attribute("vec_size_t", m_vec_size_t); + visitor.on_attribute("position", m_position); + visitor.on_attribute("node", m_node); + visitor.on_attribute("node_vector", m_node_vector); + visitor.on_attribute("parameter_vector", m_parameter_vector); + visitor.on_attribute("result_vector", m_result_vector); + return true; + } + +protected: + TuringModel m_turing_model; + element::Type m_element_type; + element::Type_t m_element_type_t; + string m_val_string; + bool m_val_bool; + float m_val_float; + double m_val_double; + uint8_t m_val_uint8_t; + uint16_t m_val_uint16_t; + uint32_t m_val_uint32_t; + uint64_t m_val_uint64_t; + int8_t m_val_int8_t; + int16_t m_val_int16_t; + int32_t m_val_int32_t; + int64_t m_val_int64_t; + size_t m_val_size_t{23}; + vector m_vec_string; + vector m_vec_float; + vector m_vec_double; + vector m_vec_uint8_t; + vector m_vec_uint16_t; + vector m_vec_uint32_t; + vector m_vec_uint64_t; + vector m_vec_int8_t; + vector m_vec_int16_t; + vector m_vec_int32_t; + vector m_vec_int64_t; + vector m_vec_size_t; + Position m_position; + shared_ptr m_node; + NodeVector m_node_vector; + ParameterVector m_parameter_vector; + ResultVector m_result_vector; +}; + +constexpr NodeTypeInfo Oracle::type_info; + +TEST(attributes, user_op) +{ + NodeBuilder::get_ops().register_factory(); + auto program = make_shared(element::i32, Shape{200}); + auto data = make_shared(element::i32, Shape{200}); + auto result = make_shared(data); + auto oracle = make_shared(program, + data, + TuringModel::XL1200, + element::f32, + element::Type_t::i64, + "12AU7", + true, + 1.0f, + 1.0, + 2, + 4, + 8, + 16, + -1, + -2, + -4, + -8, + 34, + vector{"Hello", "World"}, + vector{1.0f, 2.0f}, + vector{1.0, 2.0}, + vector{1, 2, 4, 8}, + vector{1, 2, 4, 8}, + vector{1, 2, 4, 8}, + vector{1, 2, 4, 8}, + vector{1, 2, 4, 8}, + vector{1, 2, 4, 8}, + vector{1, 2, 4, 8}, + vector{1, 2, 4, 8}, + vector{1, 3, 8, 4, 2}, + Position{1.3f, 5.1f, 2.3f}, + data, + NodeVector{program, result, data}, + ParameterVector{data, data, program}, + ResultVector{result}); + NodeBuilder builder; + AttributeVisitor& saver = builder.get_node_saver(); + AttributeVisitor& loader = builder.get_node_loader(); + loader.register_node(program, "program"); + ASSERT_EQ(loader.get_registered_node("program"), program); + ASSERT_EQ(loader.get_registered_node_id(program), "program"); + loader.register_node(data, "data"); + loader.register_node(result, "result"); + saver.register_node(program, "program"); + saver.register_node(data, "data"); + saver.register_node(result, "result"); + builder.save_node(oracle); + auto g_oracle = as_type_ptr(builder.create()); + + EXPECT_EQ(g_oracle->get_turing_model(), oracle->get_turing_model()); + EXPECT_EQ(g_oracle->get_element_type(), oracle->get_element_type()); + EXPECT_EQ(g_oracle->get_element_type_t(), oracle->get_element_type_t()); + EXPECT_EQ(g_oracle->get_val_bool(), oracle->get_val_bool()); + EXPECT_EQ(g_oracle->get_val_string(), oracle->get_val_string()); + EXPECT_EQ(g_oracle->get_val_float(), oracle->get_val_float()); + EXPECT_EQ(g_oracle->get_val_double(), oracle->get_val_double()); + EXPECT_EQ(g_oracle->get_val_uint8_t(), oracle->get_val_uint8_t()); + EXPECT_EQ(g_oracle->get_val_uint16_t(), oracle->get_val_uint16_t()); + EXPECT_EQ(g_oracle->get_val_uint32_t(), oracle->get_val_uint32_t()); + EXPECT_EQ(g_oracle->get_val_uint64_t(), oracle->get_val_uint64_t()); + EXPECT_EQ(g_oracle->get_val_int8_t(), oracle->get_val_int8_t()); + EXPECT_EQ(g_oracle->get_val_int16_t(), oracle->get_val_int16_t()); + EXPECT_EQ(g_oracle->get_val_int32_t(), oracle->get_val_int32_t()); + EXPECT_EQ(g_oracle->get_val_int64_t(), oracle->get_val_int64_t()); + EXPECT_EQ(g_oracle->get_val_size_t(), oracle->get_val_size_t()); + EXPECT_EQ(g_oracle->get_vec_uint8_t(), oracle->get_vec_uint8_t()); + EXPECT_EQ(g_oracle->get_vec_uint16_t(), oracle->get_vec_uint16_t()); + EXPECT_EQ(g_oracle->get_vec_uint32_t(), oracle->get_vec_uint32_t()); + EXPECT_EQ(g_oracle->get_vec_uint64_t(), oracle->get_vec_uint64_t()); + EXPECT_EQ(g_oracle->get_vec_int8_t(), oracle->get_vec_int8_t()); + EXPECT_EQ(g_oracle->get_vec_int16_t(), oracle->get_vec_int16_t()); + EXPECT_EQ(g_oracle->get_vec_int32_t(), oracle->get_vec_int32_t()); + EXPECT_EQ(g_oracle->get_vec_int64_t(), oracle->get_vec_int64_t()); + EXPECT_EQ(g_oracle->get_vec_string(), oracle->get_vec_string()); + EXPECT_EQ(g_oracle->get_vec_float(), oracle->get_vec_float()); + EXPECT_EQ(g_oracle->get_vec_double(), oracle->get_vec_double()); + EXPECT_EQ(g_oracle->get_vec_size_t(), oracle->get_vec_size_t()); + EXPECT_EQ(g_oracle->get_position(), oracle->get_position()); + EXPECT_EQ(g_oracle->get_node(), oracle->get_node()); + EXPECT_EQ(g_oracle->get_node_vector(), oracle->get_node_vector()); + EXPECT_EQ(g_oracle->get_parameter_vector(), oracle->get_parameter_vector()); + EXPECT_EQ(g_oracle->get_result_vector(), oracle->get_result_vector()); +} diff --git a/ngraph/test/visitors/value_map.cpp b/ngraph/test/visitors/value_map.cpp new file mode 100644 index 00000000000000..c38008405fe897 --- /dev/null +++ b/ngraph/test/visitors/value_map.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "ngraph/opsets/opset3.hpp" +#include "ngraph/opsets/opset4.hpp" +#include "ngraph/opsets/opset5.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +TEST(attributes, value_map) +{ + ValueMap value_map; + bool a = true; + int8_t b = 2; + value_map.insert("a", a); + value_map.insert("b", b); + bool g_a = value_map.get("a"); + int8_t g_b = value_map.get("b"); + EXPECT_EQ(a, g_a); + EXPECT_EQ(b, g_b); +} diff --git a/openvino/CMakeLists.txt b/openvino/CMakeLists.txt index cf548389b360a3..a5b9d3ef7bdead 100644 --- a/openvino/CMakeLists.txt +++ b/openvino/CMakeLists.txt @@ -1,20 +1,9 @@ -# ****************************************************************************** -# Copyright 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** +add_subdirectory(pp) add_subdirectory(itt) add_subdirectory(conditional_compilation) -openvino_developer_export_targets(COMPONENT openvino_common TARGETS openvino::itt openvino::conditional_compilation) +openvino_developer_export_targets(COMPONENT openvino_common TARGETS openvino::pp openvino::itt openvino::conditional_compilation) diff --git a/openvino/conditional_compilation/CMakeLists.txt b/openvino/conditional_compilation/CMakeLists.txt index dfe2386fa5901f..d2772cf36beff2 100644 --- a/openvino/conditional_compilation/CMakeLists.txt +++ b/openvino/conditional_compilation/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** set(TARGET_NAME conditional_compilation) @@ -49,7 +37,7 @@ elseif(SELECTIVE_BUILD STREQUAL "ON") -Wunused-local-typedefs) endif() - set(GENERATED_HEADER ${CMAKE_CURRENT_BINARY_DIR}/conditional_compilation_gen.h) + set(GENERATED_HEADER ${CMAKE_CURRENT_BINARY_DIR}/conditional_compilation_gen.h CACHE FILEPATH "") set(GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/scripts/ccheader.py) add_custom_command(OUTPUT ${GENERATED_HEADER} diff --git a/openvino/conditional_compilation/include/openvino/cc/factory.h b/openvino/conditional_compilation/include/openvino/cc/factory.h index 7aa8dd1a389b1f..cef44409e50d06 100644 --- a/openvino/conditional_compilation/include/openvino/cc/factory.h +++ b/openvino/conditional_compilation/include/openvino/cc/factory.h @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once #include "selective_build.h" @@ -40,7 +28,7 @@ class Factory { #ifdef SELECTIVE_BUILD #define registerNodeIfRequired(Module, Name, key, Impl) \ - OV_CC_EXPAND(OV_CC_CAT(registerImpl, OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(Module, _, Name)))(key)) + OV_PP_EXPAND(OV_PP_CAT(registerImpl, OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(Module, _, Name)))(key)) #define createNodeIfRegistered(Module, key, ...) createImpl(key, __VA_ARGS__) template @@ -64,8 +52,8 @@ class Factory { } #elif defined(SELECTIVE_BUILD_ANALYZER) - #define registerNodeIfRequired(Module, Name, key, Impl) registerImpl(key, OV_CC_TOSTRING(Name)) - #define createNodeIfRegistered(Module, key, ...) createImpl(key, __VA_ARGS__) + #define registerNodeIfRequired(Module, Name, key, Impl) registerImpl(key, OV_PP_TOSTRING(Name)) + #define createNodeIfRegistered(Module, key, ...) createImpl(key, __VA_ARGS__) template void registerImpl(const Key & key, const char *typeName) { diff --git a/openvino/conditional_compilation/include/openvino/cc/selective_build.h b/openvino/conditional_compilation/include/openvino/cc/selective_build.h index 7e41d463dcf067..15a7b70805b371 100644 --- a/openvino/conditional_compilation/include/openvino/cc/selective_build.h +++ b/openvino/conditional_compilation/include/openvino/cc/selective_build.h @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #pragma once @@ -67,8 +55,13 @@ * */ +#include #include +#define OV_CC_EXPAND OV_PP_EXPAND +#define OV_CC_CAT OV_PP_CAT +#define OV_CC_TOSTRING OV_PP_TOSTRING + #ifdef SELECTIVE_BUILD_ANALYZER # include #endif @@ -117,27 +110,12 @@ bool match(Ctx && ctx, T && val, Case && cs, Cases&&... cases) { #endif // SELECTIVE_BUILD_ANALYZER -// Macros for names concatenation -#define OV_CC_CAT_(x, y) x ## y -#define OV_CC_CAT(x, y) OV_CC_CAT_(x, y) -#define OV_CC_CAT3_(x, y, z) x ## y ## z -#define OV_CC_CAT3(x, y, z) OV_CC_CAT3_(x, y, z) -#define OV_CC_CAT4_(x, y, z, w) x ## y ## z ## w -#define OV_CC_CAT4(x, y, z, w) OV_CC_CAT4_(x, y, z, w) - -// Expand macro argument -#define OV_CC_EXPAND(x) x - -// Macros for string conversion -#define OV_CC_TOSTRING(...) OV_CC_TOSTRING_(__VA_ARGS__) -#define OV_CC_TOSTRING_(...) #__VA_ARGS__ - #ifdef SELECTIVE_BUILD_ANALYZER // OpenVINO analysis #define OV_CC_DOMAINS(Module) \ - OV_ITT_DOMAIN(OV_CC_CAT(SIMPLE_, Module)); /* Domain for simple scope surrounded by ifdefs */ \ - OV_ITT_DOMAIN(OV_CC_CAT(SWITCH_, Module)); /* Domain for switch/cases */ \ - OV_ITT_DOMAIN(OV_CC_CAT(FACTORY_, Module)); /* Domain for factories */ + OV_ITT_DOMAIN(OV_PP_CAT(SIMPLE_, Module)); /* Domain for simple scope surrounded by ifdefs */ \ + OV_ITT_DOMAIN(OV_PP_CAT(SWITCH_, Module)); /* Domain for switch/cases */ \ + OV_ITT_DOMAIN(OV_PP_CAT(FACTORY_, Module)); /* Domain for factories */ namespace internal { @@ -188,22 +166,22 @@ bool match(char const *region, Ctx && ctx, T && val, Case && cs, Cases&&... case } // namespace internal #define OV_SCOPE(Module, region) \ - OV_ITT_SCOPED_TASK(OV_CC_CAT(SIMPLE_, Module), OV_CC_TOSTRING(region)); + OV_ITT_SCOPED_TASK(OV_PP_CAT(SIMPLE_, Module), OV_PP_TOSTRING(region)); #define OV_SWITCH(Module, fn, ctx, val, ...) \ - openvino::cc::internal::match \ - (OV_CC_TOSTRING(fn), ctx, val, __VA_ARGS__); + openvino::cc::internal::match \ + (OV_PP_TOSTRING(fn), ctx, val, __VA_ARGS__); #define OV_CC_LBR ( #define OV_CC_RBR ) #define OV_CASE(Case, Type) \ - openvino::cc::internal::make_case_wrapper(Case, OV_CC_TOSTRING(OV_CASE OV_CC_LBR Case, Type OV_CC_RBR)) + openvino::cc::internal::make_case_wrapper(Case, OV_PP_TOSTRING(OV_CASE OV_CC_LBR Case, Type OV_CC_RBR)) #define OV_CASE2(Case1, Case2, Type1, Type2) \ openvino::cc::internal::make_case_wrapper>( \ std::make_tuple(Case1, Case2), \ - OV_CC_TOSTRING(OV_CASE2 OV_CC_LBR Case1, Case2, Type1, Type2 OV_CC_RBR)) + OV_PP_TOSTRING(OV_CASE2 OV_CC_LBR Case1, Case2, Type1, Type2 OV_CC_RBR)) #elif defined(SELECTIVE_BUILD) // OpenVINO selective build is enabled @@ -213,30 +191,30 @@ bool match(char const *region, Ctx && ctx, T && val, Case && cs, Cases&&... case #define OV_CC_SCOPE_ARG_PLACEHOLDER_1 0, // This macro returns second argument, first argument is ignored -#define OV_CC_SCOPE_SECOND_ARG(...) OV_CC_EXPAND(OV_CC_SCOPE_SECOND_ARG_(__VA_ARGS__, 0)) -#define OV_CC_SCOPE_SECOND_ARG_(...) OV_CC_EXPAND(OV_CC_SCOPE_SECOND_ARG_GET(__VA_ARGS__)) +#define OV_CC_SCOPE_SECOND_ARG(...) OV_PP_EXPAND(OV_CC_SCOPE_SECOND_ARG_(__VA_ARGS__, 0)) +#define OV_CC_SCOPE_SECOND_ARG_(...) OV_PP_EXPAND(OV_CC_SCOPE_SECOND_ARG_GET(__VA_ARGS__)) #define OV_CC_SCOPE_SECOND_ARG_GET(ignored, val, ...) val // Return macro argument value #define OV_CC_SCOPE_IS_ENABLED(x) OV_CC_SCOPE_IS_ENABLED1(x) // Generate junk macro or {0, } sequence if val is 1 -#define OV_CC_SCOPE_IS_ENABLED1(val) OV_CC_SCOPE_IS_ENABLED2(OV_CC_CAT(OV_CC_SCOPE_ARG_PLACEHOLDER_, val)) +#define OV_CC_SCOPE_IS_ENABLED1(val) OV_CC_SCOPE_IS_ENABLED2(OV_PP_CAT(OV_CC_SCOPE_ARG_PLACEHOLDER_, val)) // Return second argument from possible sequences {1, 0}, {0, 1, 0} #define OV_CC_SCOPE_IS_ENABLED2(arg1_or_junk) OV_CC_SCOPE_SECOND_ARG(arg1_or_junk 1, 0) -#define OV_SCOPE(Module, region) \ - if (OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(Module, _, region))) +#define OV_SCOPE(Module, region) \ + for (bool ovCCScopeIsEnabled = OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(Module, _, region)); ovCCScopeIsEnabled; ovCCScopeIsEnabled = false) // Switch is disabled #define OV_CC_SWITCH_0(Module, fn, ctx, val) // Switch is enabled -#define OV_CC_SWITCH_1(Module, fn, ctx, val) openvino::cc::internal::match(ctx, val, OV_CC_CAT4(Module, _, fn, _cases)); +#define OV_CC_SWITCH_1(Module, fn, ctx, val) openvino::cc::internal::match(ctx, val, OV_PP_CAT4(Module, _, fn, _cases)); #define OV_SWITCH(Module, fn, ctx, val, ...) \ - OV_CC_EXPAND(OV_CC_CAT(OV_CC_SWITCH_, OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(Module, _, fn)))(Module, fn, ctx, val)) + OV_PP_EXPAND(OV_PP_CAT(OV_CC_SWITCH_, OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(Module, _, fn)))(Module, fn, ctx, val)) #define OV_CASE(Case, Type) openvino::cc::internal::make_case_wrapper(Case) diff --git a/openvino/conditional_compilation/scripts/ccheader.py b/openvino/conditional_compilation/scripts/ccheader.py index f0527af6ebba10..15dcbc892c1b96 100755 --- a/openvino/conditional_compilation/scripts/ccheader.py +++ b/openvino/conditional_compilation/scripts/ccheader.py @@ -1,18 +1,7 @@ #!/usr/bin/env python3 -# Copyright (c) 2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # The main purpose of this script is code generation for conditional compilation. # After collecting statistics using IntelSEAPI, several CSV files are generated. diff --git a/openvino/itt/CMakeLists.txt b/openvino/itt/CMakeLists.txt index 85a8cf198749b7..0f9437c9f574d9 100644 --- a/openvino/itt/CMakeLists.txt +++ b/openvino/itt/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** set(TARGET_NAME itt) @@ -22,6 +10,8 @@ add_library(${TARGET_NAME} STATIC ${SOURCES}) add_library(openvino::itt ALIAS ${TARGET_NAME}) +target_link_libraries(${TARGET_NAME} PUBLIC openvino::pp) + if(TARGET ittnotify) target_link_libraries(${TARGET_NAME} PUBLIC ittnotify) endif() diff --git a/openvino/itt/cmake/ITTConfig.cmake b/openvino/itt/cmake/ITTConfig.cmake index 5b0a3aab189cce..8ef152804ab34c 100644 --- a/openvino/itt/cmake/ITTConfig.cmake +++ b/openvino/itt/cmake/ITTConfig.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/openvino/itt/include/openvino/function_name.hpp b/openvino/itt/include/openvino/function_name.hpp index 90d3a5af9ec5a9..09b99e084d6a31 100644 --- a/openvino/itt/include/openvino/function_name.hpp +++ b/openvino/itt/include/openvino/function_name.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines a macro to get the name of a function diff --git a/openvino/itt/include/openvino/itt.hpp b/openvino/itt/include/openvino/itt.hpp index 153983b6d13e4b..d950664ea80c7f 100644 --- a/openvino/itt/include/openvino/itt.hpp +++ b/openvino/itt/include/openvino/itt.hpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** /** * @brief Defines API to trace using Intel ITT. @@ -21,7 +9,7 @@ #pragma once #include -#include +#include #include #include @@ -224,15 +212,12 @@ namespace openvino * @param domainName [in] Known at compile time name of module or library (the domain name). * @param domainDisplayName [in] Domain name used as the ITT counter name and displayed in Intel VTune. Parameter is optional. */ -#define OV_ITT_DOMAIN(...) OV_ITT_MACRO_OVERLOAD(OV_ITT_DOMAIN, __VA_ARGS__) +#define OV_ITT_DOMAIN(...) OV_PP_OVERLOAD(OV_ITT_DOMAIN, __VA_ARGS__) /** * @cond */ -#define OV_ITT_CONCAT2(X, Y) X ## Y -#define OV_ITT_CONCAT(X, Y) OV_ITT_CONCAT2(X, Y) - #define OV_ITT_DOMAIN_1(domainName) \ inline openvino::itt::domain_t domainName() noexcept \ { \ @@ -259,19 +244,19 @@ inline openvino::itt::domain_t domainName() noexcept * @param domainName [in] Known at compile time name of module or library (the domain name). * @param handleOrTaskName [in] The annotation name or handle for section of code. Parameter is optional. */ -#define OV_ITT_SCOPED_TASK(...) OV_ITT_MACRO_OVERLOAD(OV_ITT_SCOPED_TASK, __VA_ARGS__) +#define OV_ITT_SCOPED_TASK(...) OV_PP_OVERLOAD(OV_ITT_SCOPED_TASK, __VA_ARGS__) /** * @cond */ #define OV_ITT_SCOPED_TASK_1(domain) \ - openvino::itt::ScopedTask OV_ITT_CONCAT(ittScopedTask, __LINE__) \ - (openvino::itt::handle(ITT_FUNCTION_NAME)); + openvino::itt::ScopedTask OV_PP_CAT(ittScopedTask, __LINE__) \ + (openvino::itt::handle(ITT_FUNCTION_NAME)); #define OV_ITT_SCOPED_TASK_2(domain, taskOrTaskName) \ - openvino::itt::ScopedTask OV_ITT_CONCAT(ittScopedTask, __LINE__) \ - (openvino::itt::handle(taskOrTaskName)); + openvino::itt::ScopedTask OV_PP_CAT(ittScopedTask, __LINE__) \ + (openvino::itt::handle(taskOrTaskName)); /** * @endcond @@ -288,7 +273,7 @@ inline openvino::itt::domain_t domainName() noexcept * @param prefix [in] The task chain name prefix. The task name starts with this prefix. Parameter is optional. * @param taskName [in] The annotation name for section of code. Parameter is optional. */ -#define OV_ITT_TASK_CHAIN(...) OV_ITT_MACRO_OVERLOAD(OV_ITT_TASK_CHAIN, __VA_ARGS__) +#define OV_ITT_TASK_CHAIN(...) OV_PP_OVERLOAD(OV_ITT_TASK_CHAIN, __VA_ARGS__) /** * @cond @@ -296,19 +281,19 @@ inline openvino::itt::domain_t domainName() noexcept #define OV_ITT_TASK_CHAIN_2(chainId, domain) \ openvino::itt::TaskChain chainId \ - (openvino::itt::handle \ + (openvino::itt::handle \ (std::string(ITT_FUNCTION_NAME) + "_1"), \ ITT_FUNCTION_NAME); #define OV_ITT_TASK_CHAIN_3(chainId, domain, prefix) \ openvino::itt::TaskChain chainId \ - (openvino::itt::handle \ + (openvino::itt::handle \ (std::string(prefix) + "_1"), \ prefix); #define OV_ITT_TASK_CHAIN_4(chainId, domain, prefix, taskName) \ openvino::itt::TaskChain chainId \ - (openvino::itt::handle \ + (openvino::itt::handle \ (std::string(prefix) + "_" + taskName), \ prefix); @@ -324,17 +309,17 @@ inline openvino::itt::domain_t domainName() noexcept * @param chainId [in] The tasks chain identifier. * @param taskOrTaskName [in] The annotation name or handle for section of code. Parameter is optional. */ -#define OV_ITT_TASK_NEXT(...) OV_ITT_MACRO_OVERLOAD(OV_ITT_TASK_NEXT, __VA_ARGS__) +#define OV_ITT_TASK_NEXT(...) OV_PP_OVERLOAD(OV_ITT_TASK_NEXT, __VA_ARGS__) /** * @cond */ #define OV_ITT_TASK_NEXT_1(chainId) \ - chainId.next(openvino::itt::handle(chainId.taskName())); + chainId.next(openvino::itt::handle(chainId.taskName())); #define OV_ITT_TASK_NEXT_2(chainId, taskOrTaskName) \ - chainId.next(openvino::itt::handle(chainId.taskNameOrHandle(taskOrTaskName))); + chainId.next(openvino::itt::handle(chainId.taskNameOrHandle(taskOrTaskName))); /** * @endcond diff --git a/openvino/itt/src/itt.cpp b/openvino/itt/src/itt.cpp index 9fe27e1d8f12d5..5fa17f81213229 100644 --- a/openvino/itt/src/itt.cpp +++ b/openvino/itt/src/itt.cpp @@ -1,18 +1,6 @@ -//***************************************************************************** -// Copyright 2017-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 // -// 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. -//***************************************************************************** #include #include diff --git a/openvino/pp/CMakeLists.txt b/openvino/pp/CMakeLists.txt new file mode 100644 index 00000000000000..9583171dcbce60 --- /dev/null +++ b/openvino/pp/CMakeLists.txt @@ -0,0 +1,11 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME openvino_preprocessor) + +add_library(${TARGET_NAME} INTERFACE) + +add_library(openvino::pp ALIAS ${TARGET_NAME}) + +target_include_directories(${TARGET_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) diff --git a/openvino/pp/include/openvino/pp.hpp b/openvino/pp/include/openvino/pp.hpp new file mode 100644 index 00000000000000..f54e6e1b015346 --- /dev/null +++ b/openvino/pp/include/openvino/pp.hpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief Set of macro used by openvino + * @file pp.hpp + */ + +#pragma once + +// Macros for string conversion +#define OV_PP_TOSTRING(...) OV_PP_TOSTRING_(__VA_ARGS__) +#define OV_PP_TOSTRING_(...) #__VA_ARGS__ + +#define OV_PP_EXPAND(X) X + +#define OV_PP_NARG(...) OV_PP_EXPAND( OV_PP_NARG_(__VA_ARGS__, OV_PP_RSEQ_N()) ) +#define OV_PP_NARG_(...) OV_PP_EXPAND( OV_PP_ARG_N(__VA_ARGS__) ) +#define OV_PP_ARG_N(_0, _1, _2, _3, _4, N, ...) N +#define OV_PP_RSEQ_N() 0, 4, 3, 2, 1, 0 +#define OV_PP_NO_ARGS(NAME) ,,,, + +// Macros for names concatenation +#define OV_PP_CAT_(x, y) x ## y +#define OV_PP_CAT(x, y) OV_PP_CAT_(x, y) +#define OV_PP_CAT3_(x, y, z) x ## y ## z +#define OV_PP_CAT3(x, y, z) OV_PP_CAT3_(x, y, z) +#define OV_PP_CAT4_(x, y, z, w) x ## y ## z ## w +#define OV_PP_CAT4(x, y, z, w) OV_PP_CAT4_(x, y, z, w) + +#define OV_PP_OVERLOAD(NAME, ...) OV_PP_EXPAND( OV_PP_CAT3(NAME, _, OV_PP_EXPAND( OV_PP_NARG(OV_PP_NO_ARGS __VA_ARGS__ (NAME)) ))(__VA_ARGS__) ) diff --git a/scripts/demo/demo_benchmark_app.sh b/scripts/demo/demo_benchmark_app.sh index 97f67c58266c83..5420a0d7bc140d 100755 --- a/scripts/demo/demo_benchmark_app.sh +++ b/scripts/demo/demo_benchmark_app.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" diff --git a/scripts/demo/demo_security_barrier_camera.sh b/scripts/demo/demo_security_barrier_camera.sh index 6f1337112c30b8..5116cd4b7f1f04 100755 --- a/scripts/demo/demo_security_barrier_camera.sh +++ b/scripts/demo/demo_security_barrier_camera.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" diff --git a/scripts/demo/demo_squeezenet_download_convert_run.sh b/scripts/demo/demo_squeezenet_download_convert_run.sh index 7e173cf7bb1637..0aa4ad64ef2b2c 100755 --- a/scripts/demo/demo_squeezenet_download_convert_run.sh +++ b/scripts/demo/demo_squeezenet_download_convert_run.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" diff --git a/scripts/demo/utils.sh b/scripts/demo/utils.sh index f4d0ea967ee2f9..552ba20aefa99f 100755 --- a/scripts/demo/utils.sh +++ b/scripts/demo/utils.sh @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + error() { local code="${3:-1}" if [[ -n "$2" ]]; then diff --git a/scripts/install_dependencies/install_4_14_kernel.sh b/scripts/install_dependencies/install_4_14_kernel.sh index cbab52c3ddcbf2..a7e01309f19505 100755 --- a/scripts/install_dependencies/install_4_14_kernel.sh +++ b/scripts/install_dependencies/install_4_14_kernel.sh @@ -1,18 +1,7 @@ #!/bin/bash -x -# Copyright (c) 2018-2019 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # This script installs Linux kernel 4.14 required for Intel NEO OpenCL driver on Ubuntu and CentOS diff --git a/scripts/install_dependencies/install_NCS_udev_rules.sh b/scripts/install_dependencies/install_NCS_udev_rules.sh index aac8c2510aed73..3666b4502e9a44 100755 --- a/scripts/install_dependencies/install_NCS_udev_rules.sh +++ b/scripts/install_dependencies/install_NCS_udev_rules.sh @@ -1,18 +1,7 @@ #!/bin/bash -# Copyright (c) 2018-2019 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 echo "Updating udev rules..." diff --git a/scripts/install_dependencies/install_NEO_OCL_driver.sh b/scripts/install_dependencies/install_NEO_OCL_driver.sh index afce70a9280cc9..81deadd3d8a039 100755 --- a/scripts/install_dependencies/install_NEO_OCL_driver.sh +++ b/scripts/install_dependencies/install_NEO_OCL_driver.sh @@ -1,18 +1,7 @@ #!/bin/bash -# Copyright (c) 2018 - 2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # # Installs the Intel® Graphics Compute Runtime for OpenCL™ Driver on Linux. @@ -479,7 +468,7 @@ _check_distro_version() exit $EXIT_FAILURE fi elif [[ $DISTRO == redhat ]]; then - RHEL_VERSION=$(grep -m1 'VERSION_ID' /etc/os-release | grep -Eo "8.[0-9]{1,2}") + RHEL_VERSION=$(grep -m1 'VERSION_ID' /etc/os-release | grep -Eo "8.[0-9]") if [[ $? -ne 0 ]]; then echo "Warning: This runtime can be installed only on RHEL 8" >&2 echo "Installation of Intel Compute Runtime interrupted" diff --git a/scripts/install_dependencies/install_openvino_dependencies.sh b/scripts/install_dependencies/install_openvino_dependencies.sh index 773fd30c48ce35..4b4a729c92f5da 100755 --- a/scripts/install_dependencies/install_openvino_dependencies.sh +++ b/scripts/install_dependencies/install_openvino_dependencies.sh @@ -1,18 +1,7 @@ #!/bin/bash -# Copyright (c) 2018 - 2021 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 set -e @@ -93,8 +82,11 @@ fi if [ "$os" == "auto" ] ; then os=$( . /etc/os-release ; echo "${ID}${VERSION_ID}" ) + if [[ "$os" =~ "rhel8".* ]] ; then + os="rhel8" + fi case $os in - centos7|rhel8.2|ubuntu18.04|ubuntu20.04) [ -z "$print" ] && echo "Detected OS: ${os}" ;; + centos7|rhel8|ubuntu18.04|ubuntu20.04) [ -z "$print" ] && echo "Detected OS: ${os}" ;; *) echo "Unsupported OS: ${os:-detection failed}" >&2 ; exit 1 ;; esac fi @@ -180,6 +172,7 @@ elif [ "$os" == "ubuntu20.04" ] ; then gstreamer1.0-plugins-ugly gstreamer1.0-vaapi gstreamer1.0-tools + gstreamer1.0-x libfaac0 libfluidsynth2 libgl-dev @@ -195,7 +188,7 @@ elif [ "$os" == "ubuntu20.04" ] ; then vainfo ) -elif [ "$os" == "rhel8.2" ] ; then +elif [ "$os" == "rhel8" ] ; then pkgs_opencv_req=(gtk3) pkgs_python=(python3 python3-devel python3-setuptools python3-pip) @@ -210,6 +203,7 @@ elif [ "$os" == "rhel8.2" ] ; then gstreamer1-plugins-ugly-free ) pkgs_dlstreamer=() + extra_repos+=(https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm) elif [ "$os" == "centos7" ] ; then @@ -373,7 +367,7 @@ if [ "$os" == "ubuntu18.04" ] || [ "$os" == "ubuntu20.04" ] ; then apt-get update && apt-get install --no-install-recommends $iopt ${pkgs[@]} -elif [ "$os" == "centos7" ] || [ "$os" == "rhel8.2" ] ; then +elif [ "$os" == "centos7" ] || [ "$os" == "rhel8" ] ; then [ -z "$interactive" ] && iopt="--assumeyes" [ -n "$dry" ] && iopt="--downloadonly" diff --git a/scripts/setupvars/setupvars.bat b/scripts/setupvars/setupvars.bat index e31aeb91505232..83c8d7520c21bf 100644 --- a/scripts/setupvars/setupvars.bat +++ b/scripts/setupvars/setupvars.bat @@ -1,19 +1,7 @@ @echo off -:: Copyright (c) 2018-2020 Intel Corporation -:: -:: Licensed under the Apache License, Version 2.0 (the "License"); -:: you may not use this file except in compliance with the License. -:: You may obtain a copy of the License at -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. - +:: Copyright (C) 2018-2021 Intel Corporation +:: SPDX-License-Identifier: Apache-2.0 set ROOT=%~dp0 call :GetFullPath "%ROOT%\.." ROOT @@ -55,7 +43,7 @@ set "HDDL_INSTALL_DIR=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\ext set "OPENMP_DIR=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\omp\lib" set "GNA_DIR=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\gna\lib" -set "PATH=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Release;%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Debug;%HDDL_INSTALL_DIR%\bin;%OPENMP_DIR%;%GNA_DIR%;%PATH%" +set "OPENVINO_LIB_PATHS=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Release;%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Debug;%HDDL_INSTALL_DIR%\bin;%OPENMP_DIR%;%GNA_DIR%;%OPENVINO_LIB_PATHS%" if exist %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\arch_descriptions ( set ARCH_ROOT_DIR=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\arch_descriptions ) @@ -65,16 +53,19 @@ set ARCH_ROOT_DIR=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\int :: TBB if exist %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\tbb ( -set "PATH=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\tbb\bin;%PATH%" +set "OPENVINO_LIB_PATHS=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\tbb\bin;%OPENVINO_LIB_PATHS%" set "TBB_DIR=%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\tbb\cmake" ) :: nGraph if exist %INTEL_OPENVINO_DIR%\deployment_tools\ngraph ( -set "PATH=%INTEL_OPENVINO_DIR%\deployment_tools\ngraph\lib;%PATH%" +set "OPENVINO_LIB_PATHS=%INTEL_OPENVINO_DIR%\deployment_tools\ngraph\lib;%OPENVINO_LIB_PATHS%" set "ngraph_DIR=%INTEL_OPENVINO_DIR%\deployment_tools\ngraph\cmake" ) +:: Add libs dirs to the PATH +set "PATH=%OPENVINO_LIB_PATHS%;%PATH%" + :: Check if Python is installed python --version 2>NUL if errorlevel 1 ( diff --git a/scripts/setupvars/setupvars.sh b/scripts/setupvars/setupvars.sh index 02cd4c5934ebd6..958a3a00781e52 100755 --- a/scripts/setupvars/setupvars.sh +++ b/scripts/setupvars/setupvars.sh @@ -1,18 +1,7 @@ #!/bin/bash -# Copyright (c) 2018-2020 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" BASE_DIR="$( dirname "$SCRIPT_DIR" )" diff --git a/scripts/utils/create_package.py b/scripts/utils/create_package.py index 6eb53adbb14d66..6d9703b539bd51 100644 --- a/scripts/utils/create_package.py +++ b/scripts/utils/create_package.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import argparse import os from shutil import rmtree diff --git a/scripts/utils/utils.py b/scripts/utils/utils.py index 7d33e9e72d7adc..fb6df995f4e980 100644 --- a/scripts/utils/utils.py +++ b/scripts/utils/utils.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import subprocess import tarfile diff --git a/tests/conditional_compilation/conftest.py b/tests/conditional_compilation/conftest.py index 6c4202c1e44aec..764cb497e8fd9f 100644 --- a/tests/conditional_compilation/conftest.py +++ b/tests/conditional_compilation/conftest.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -# Copyright (C) 2021 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # pylint: disable=line-too-long @@ -13,23 +14,22 @@ """ import sys +import pytest +import yaml + from inspect import getsourcefile from pathlib import Path -import pytest -import yaml +from tests_utils import write_session_info, SESSION_INFO_FILE # add ../lib to imports -sys.path.insert( - 0, str((Path(getsourcefile(lambda: 0)) / ".." / ".." / "lib").resolve(strict=True)) -) +sys.path.insert(0, str((Path(getsourcefile(lambda: 0)) / ".." / ".." / "lib").resolve(strict=True))) from path_utils import expand_env_vars # pylint: disable=import-error def pytest_addoption(parser): - """ Define extra options for pytest options - """ + """Define extra options for pytest options.""" parser.addoption( "--test_conf", type=Path, @@ -58,11 +58,15 @@ def pytest_addoption(parser): type=Path, help="Artifacts directory where tests write output or read input", ) + parser.addoption( + "--openvino_ref", + type=Path, + help="Path to root directory with installed OpenVINO", + ) def pytest_generate_tests(metafunc): - """ Generate tests depending on command line options - """ + """Generate tests depending on command line options.""" params = [] ids = [] @@ -81,6 +85,25 @@ def pytest_generate_tests(metafunc): metafunc.parametrize("test_id, model", params, ids=ids) +@pytest.fixture(scope="function") +def test_info(request, pytestconfig): + """Fixture function for getting the additional attributes of the current test.""" + setattr(request.node._request, "test_info", {}) + if not hasattr(pytestconfig, "session_info"): + setattr(pytestconfig, "session_info", []) + + yield request.node._request.test_info + + pytestconfig.session_info.append(request.node._request.test_info) + + +@pytest.fixture(scope="session", autouse=True) +def save_session_info(pytestconfig, artifacts): + """Fixture function for saving additional attributes to configuration file.""" + yield + write_session_info(path=artifacts / SESSION_INFO_FILE, data=pytestconfig.session_info) + + @pytest.fixture(scope="session") def sea_runtool(request): """Fixture function for command-line option.""" @@ -103,3 +126,9 @@ def collector_dir(request): def artifacts(request): """Fixture function for command-line option.""" return request.config.getoption("artifacts") + + +@pytest.fixture(scope="session") +def openvino_root_dir(request): + """Fixture function for command-line option.""" + return request.config.getoption("openvino_ref") diff --git a/tests/conditional_compilation/test_collect.py b/tests/conditional_compilation/test_collect.py index ea4e0219b0c3e9..6014f16e7950bd 100644 --- a/tests/conditional_compilation/test_collect.py +++ b/tests/conditional_compilation/test_collect.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -# Copyright (C) 2021 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ Test conditional compilation statistics collection. @@ -12,21 +13,25 @@ from proc_utils import cmd_exec # pylint: disable=import-error -def test_cc_collect(test_id, model, sea_runtool, benchmark_app, collector_dir, artifacts): +def test_cc_collect(test_id, model, sea_runtool, benchmark_app, collector_dir, artifacts, test_info): """ Test conditional compilation statistics collection + :param test_info: custom `test_info` field of built-in `request` pytest fixture. + contain a dictionary to store test metadata. """ out = artifacts / test_id + test_info["test_id"] = test_id # cleanup old data if any - prev_results = glob.glob(f"{out}.pid*.csv") - for path in prev_results: + prev_result = glob.glob(f"{out}.pid*.csv") + for path in prev_result: os.remove(path) # run use case - returncode, output = cmd_exec( + return_code, output = cmd_exec( [ sys.executable, str(sea_runtool), - f"-o={out}", + f"--output={out}", f"--bindir={collector_dir}", + "--app_status", "!", str(benchmark_app), "-d=CPU", @@ -35,7 +40,8 @@ def test_cc_collect(test_id, model, sea_runtool, benchmark_app, collector_dir, a "-nireq=1", ] ) - assert returncode == 0, f"Command exited with non-zero status {returncode}:\n {output}" - assert ( - len(glob.glob(f"{out}.pid*.csv")) == 1 - ), f'Multiple or none "{out}.pid*.csv" files' + out_csv = glob.glob(f"{out}.pid*.csv") + test_info["out_csv"] = out_csv + + assert return_code == 0, f"Command exited with non-zero status {return_code}:\n {output}" + assert (len(out_csv) == 1), f'Multiple or none "{out}.pid*.csv" files' diff --git a/tests/conditional_compilation/test_infer.py b/tests/conditional_compilation/test_infer.py index 8b15ed8591c839..312cf43eefdd7e 100644 --- a/tests/conditional_compilation/test_infer.py +++ b/tests/conditional_compilation/test_infer.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -# Copyright (C) 2021 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ Test inference with conditional compiled binaries. diff --git a/tests/conditional_compilation/test_size_tracking.py b/tests/conditional_compilation/test_size_tracking.py new file mode 100644 index 00000000000000..c6185531baec3f --- /dev/null +++ b/tests/conditional_compilation/test_size_tracking.py @@ -0,0 +1,41 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from pathlib import Path +import logging + +from path_utils import get_lib_path # pylint: disable=import-error + + +def get_lib_sizes(path, libraries): + """Function for getting lib sizes by lib names""" + assert Path.exists(path), f'Directory {path} isn\'t created' + result = {} + error_lib = [] + for lib in libraries: + try: + result[lib] = Path(path).joinpath(get_lib_path(lib)).stat().st_size + except FileNotFoundError as error: + error_lib.append(str(error)) + assert len(error_lib) == 0, 'Following libraries couldn\'t be found: \n{}'.format('\n'.join(error_lib)) + return result + + +def test_size_tracking_libs(openvino_root_dir, test_id, model, artifacts): + log = logging.getLogger('size_tracking') + libraries = ['inference_engine_transformations', 'MKLDNNPlugin', 'ngraph'] + + ref_libs_size = get_lib_sizes(openvino_root_dir, libraries) + install_prefix = artifacts / test_id / 'install_pkg' + lib_sizes = get_lib_sizes(install_prefix, libraries) + + for lib in libraries: + lib_size_diff = ref_libs_size[lib] - lib_sizes[lib] + lib_size_diff_percent = lib_size_diff / ref_libs_size[lib] * 100 + log.info('{}: old - {}kB; new - {}kB; diff = {}kB({:.2f}%)'.format(lib, + ref_libs_size[lib] / 1024, + lib_sizes[lib] / 1024, + lib_size_diff / 1024, + lib_size_diff_percent)) + res = [lib for lib in libraries if lib_sizes[lib] > ref_libs_size[lib]] + assert len(res) == 0, f'These libraries: {res} have increased in size!' diff --git a/tests/conditional_compilation/tests_utils.py b/tests/conditional_compilation/tests_utils.py new file mode 100644 index 00000000000000..2b186726843017 --- /dev/null +++ b/tests/conditional_compilation/tests_utils.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +# Copyright (C) 2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +""" Utility functions for work with json test configuration file. +""" +import json + +from inspect import getsourcefile +from pathlib import Path + + +SESSION_INFO_FILE = "cc_tests.json" + + +def read_session_info(path: Path = Path(getsourcefile(lambda: 0)).parent / SESSION_INFO_FILE): + with open(path, 'r') as json_file: + cc_tests_ids = json.load(json_file) + return cc_tests_ids + + +def write_session_info(path: Path = Path(getsourcefile(lambda: 0)).parent / SESSION_INFO_FILE, + data: dict = None): + with open(path, "w") as json_file: + json.dump(data, json_file, indent=4) diff --git a/tests/conditional_compilation/tools/infer_tool.py b/tests/conditional_compilation/tools/infer_tool.py new file mode 100644 index 00000000000000..9cc705d5c5f85d --- /dev/null +++ b/tests/conditional_compilation/tools/infer_tool.py @@ -0,0 +1,79 @@ +# !/usr/bin/env python3 + +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# pylint:disable=invalid-name,no-name-in-module,logging-format-interpolation,redefined-outer-name + +""" Tool for running inference and storing results in npz files. +""" +import argparse +import logging as log +import sys +import os +import numpy as np +from openvino.inference_engine import IECore + +log.basicConfig(format="[ %(levelname)s ] %(message)s", level=log.INFO, stream=sys.stdout) + + +def input_preparation(net): + """ + Function to prepare reproducible from run to run input data + :param net: IENetwork object + :return: Dict where keys are layers' names and values are numpy arrays with layers' shapes + """ + + feed_dict = {} + for layer_name, layer_data in net.inputs.items(): + feed_dict.update({layer_name: np.ones(shape=layer_data.shape)}) + return feed_dict + + +def infer(ir_path, device): + """ + Function to perform IE inference using python API "in place" + :param ir_path: Path to XML file of IR + :param device: Device name for inference + :return: Dict containing out blob name and out data + """ + + bin_path = os.path.splitext(ir_path)[0] + '.bin' + ie = IECore() + net = ie.read_network(model=ir_path, weights=bin_path) + exec_net = ie.load_network(net, device) + res = exec_net.infer(inputs=input_preparation(net)) + + del net + # It's important to delete executable network first to avoid double free in plugin offloading. + # Issue relates ony for hetero and Myriad plugins + del exec_net + del ie + return res + + +def cli_parser(): + """ + Function for parsing arguments from command line. + :return: ir path, device and output folder path variables. + """ + parser = argparse.ArgumentParser(description='Arguments for python API inference') + parser.add_argument('-m', dest='ir_path', required=True, help='Path to XML file of IR') + parser.add_argument('-d', dest='device', required=True, help='Target device to infer on') + parser.add_argument('-r', dest='out_path', required=True, + help='Dumps results to the output file') + args = parser.parse_args() + ir_path = args.ir_path + device = args.device + out_path = args.out_path + return ir_path, device, out_path + + +if __name__ == "__main__": + ir_path, device, out_path = cli_parser() + results = infer(ir_path=ir_path, device=device) + np.savez(out_path, **results) + log.info("Path for inference results: {}".format(out_path)) + log.info("Inference results:") + log.info(results) + log.info("SUCCESS!") diff --git a/tests/fuzz/CMakeLists.txt b/tests/fuzz/CMakeLists.txt index 97f1829c39eda5..2b75e6aa85bac8 100644 --- a/tests/fuzz/CMakeLists.txt +++ b/tests/fuzz/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/fuzz/fuzz-testhelper/CMakeLists.txt b/tests/fuzz/fuzz-testhelper/CMakeLists.txt index 84155cdfec518d..2c47dbd2d3f86a 100644 --- a/tests/fuzz/fuzz-testhelper/CMakeLists.txt +++ b/tests/fuzz/fuzz-testhelper/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/fuzz/fuzz-testhelper/main-testhelper.cc b/tests/fuzz/fuzz-testhelper/main-testhelper.cc index 4f32da064d9890..45c10242248c7f 100644 --- a/tests/fuzz/fuzz-testhelper/main-testhelper.cc +++ b/tests/fuzz/fuzz-testhelper/main-testhelper.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/fuzz/fuzz-testhelper/main.h b/tests/fuzz/fuzz-testhelper/main.h index d3f4211809644a..43e94cd8f9edb8 100644 --- a/tests/fuzz/fuzz-testhelper/main.h +++ b/tests/fuzz/fuzz-testhelper/main.h @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/fuzz/src/CMakeLists.txt b/tests/fuzz/src/CMakeLists.txt index 71e59cd63e15af..b58a2d018aae5a 100644 --- a/tests/fuzz/src/CMakeLists.txt +++ b/tests/fuzz/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/fuzz/src/read_network-fuzzer.cc b/tests/fuzz/src/read_network-fuzzer.cc index 87fbce9c86a0bf..613dbe1cc04f3a 100644 --- a/tests/fuzz/src/read_network-fuzzer.cc +++ b/tests/fuzz/src/read_network-fuzzer.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -38,7 +38,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { try { InferenceEngine::Core ie; InferenceEngine::CNNNetwork network = ie.ReadNetwork(net, weights_blob); - } catch (const InferenceEngine::details::InferenceEngineException& error) { + } catch (const std::exception&) { return 0; // fail gracefully on expected exceptions } diff --git a/tests/lib/__init__.py b/tests/lib/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/tests/lib/__init__.py +++ b/tests/lib/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/tests/lib/install_pkg.py b/tests/lib/install_pkg.py index 5729ac5b413147..c45d985c10a111 100644 --- a/tests/lib/install_pkg.py +++ b/tests/lib/install_pkg.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -# Copyright (C) 2021 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ Common utilities for OpenVINO install package. diff --git a/tests/lib/path_utils.py b/tests/lib/path_utils.py index 5d9718996a0e36..f97da037c5facd 100644 --- a/tests/lib/path_utils.py +++ b/tests/lib/path_utils.py @@ -1,11 +1,14 @@ #!/usr/bin/env python3 -# Copyright (C) 2021 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ Common utilities for working with paths """ import os +import sys +from pathlib import Path def expand_env_vars(obj): @@ -20,3 +23,29 @@ def expand_env_vars(obj): else: obj = os.path.expandvars(obj) return obj + + +def get_os_name(): + """Function for getting OS name""" + if sys.platform == "win32": + os_name = 'Windows' + else: + os_name = 'Linux' + return os_name + + +def get_lib_path(lib_name): + """Function for getting absolute path in OpenVINO directory to specific lib""" + os_name = get_os_name() + all_libs = { + 'inference_engine_transformations': { + 'Windows': Path('deployment_tools/inference_engine/bin/intel64/Release/inference_engine_transformations.dll'), + 'Linux': Path('deployment_tools/inference_engine/lib/intel64/libinference_engine_transformations.so')}, + 'MKLDNNPlugin': { + 'Windows': Path('deployment_tools/inference_engine/bin/intel64/Release/MKLDNNPlugin.dll'), + 'Linux': Path('deployment_tools/inference_engine/lib/intel64/libMKLDNNPlugin.so')}, + 'ngraph': { + 'Windows': Path('deployment_tools/ngraph/lib/ngraph.dll'), + 'Linux': Path('deployment_tools/ngraph/lib/libngraph.so')} + } + return all_libs[lib_name][os_name] diff --git a/tests/lib/proc_utils.py b/tests/lib/proc_utils.py index 8057765bfc08a4..1eaf6a6bed94f6 100644 --- a/tests/lib/proc_utils.py +++ b/tests/lib/proc_utils.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -# Copyright (C) 2021 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ Common utilities for working with processes. diff --git a/tests/lsan/suppressions.txt b/tests/lsan/suppressions.txt new file mode 100644 index 00000000000000..64ff833d1efa1d --- /dev/null +++ b/tests/lsan/suppressions.txt @@ -0,0 +1,26 @@ +# Copyright (C) 2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# This is a LeakSanitizer (LSan) suppression file which provides a default +# configuration for the builds with -DENABLE_SANITIZER=ON. +# More information about LSan suppressions on +# https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer#suppressions + +# Noisy indirect leaks from pthread. TODO: investigate. +leak:__pthread_once_slow + +# memory leaks in graphics driver +leak:libigdrcl.so + +# Noisy leaks from pybind11. TODO: investigate. +leak:pybind11 + +# leak reported if you run through `bash -c` +leak:/bin/bash + +# leak reported by E2E tests +leak:libfontconfig.so + +# leak reported from python wrappers of 3rd parties +leak:_pywrap_tensorflow_internal.so +leak:site-packages/google/protobuf diff --git a/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_references_config.xml b/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_references_config.xml index 549f04af8337fc..2d9e6e4db5b18a 100644 --- a/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_references_config.xml +++ b/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_references_config.xml @@ -1,323 +1,320 @@ - # References were collected from DB with next query: {"target_branch": "releases/2020/4", "commit_date": - "2020-06-15 13:21:41+00:00"} + # References were collected from DB with next query: {"target_branch": "releases/2020/4", "commit_date": "2020-06-15 13:21:41+00:00"} # and modified on FACTOR = 1.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 - # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + # values from {"target_branch": "releases/2020/2", "commit_date": "2020-05-14 11:19:36+00:00"} and *= 1.3 + + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 - \ No newline at end of file + diff --git a/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_test_config.xml index 5ed61a76729305..a9696483d720d9 100644 --- a/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memcheck_tests/nightly_configs/desktop_test_config.xml @@ -4,44 +4,85 @@ GPU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_references_config.xml b/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_references_config.xml index fd8ab239de8cd9..5bc91171c9d68d 100644 --- a/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_references_config.xml +++ b/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_references_config.xml @@ -1,21 +1,39 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 + # values from {"commit_id": "af63cb78ee5cbd66bac0d0980db61cb11b5d9995", "commit_date": "2021-03-03 15:44"} and *= 1.3 diff --git a/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_test_config.xml index 11853239e486e8..ebb16b7de2dd3c 100644 --- a/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memcheck_tests/precommit_configs/desktop_test_config.xml @@ -4,9 +4,15 @@ GPU - - - - + + + + + + + + + + \ No newline at end of file diff --git a/tests/stress_tests/.automation/memcheck_tests/weekly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memcheck_tests/weekly_configs/desktop_test_config.xml index 4d7fc7d70588ae..1dd9795ffb4ee6 100644 --- a/tests/stress_tests/.automation/memcheck_tests/weekly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memcheck_tests/weekly_configs/desktop_test_config.xml @@ -4,180 +4,326 @@ GPU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml index b7c8e7b01dcdd0..8025c9e04ec9b0 100644 --- a/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml @@ -1,5 +1,4 @@ - 1 @@ -14,8 +13,8 @@ GPU - - - + + + \ No newline at end of file diff --git a/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml index c660c287af37ce..12cd28c0c8cd7c 100644 --- a/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml @@ -1,5 +1,4 @@ - 1 @@ -14,6 +13,6 @@ GPU - + \ No newline at end of file diff --git a/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml index 81687014ec117e..1d688686773beb 100644 --- a/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml @@ -1,5 +1,4 @@ - 1 @@ -14,8 +13,8 @@ GPU - - - + + + \ No newline at end of file diff --git a/tests/stress_tests/.automation/unittests/nightly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/unittests/nightly_configs/desktop_test_config.xml index 8081b53cf717fc..fdb3e2746ca1ad 100644 --- a/tests/stress_tests/.automation/unittests/nightly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/unittests/nightly_configs/desktop_test_config.xml @@ -14,8 +14,8 @@ GPU - - - + + + \ No newline at end of file diff --git a/tests/stress_tests/.automation/unittests/weekly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/unittests/weekly_configs/desktop_test_config.xml index d466a1bff32469..2ada874cccb268 100644 --- a/tests/stress_tests/.automation/unittests/weekly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/unittests/weekly_configs/desktop_test_config.xml @@ -1,7 +1,6 @@ 1 - 1 @@ -15,8 +14,7 @@ GPU - - - + + \ No newline at end of file diff --git a/tests/stress_tests/CMakeLists.txt b/tests/stress_tests/CMakeLists.txt index f21b3e6e7f1536..5b5e7b7adf6346 100644 --- a/tests/stress_tests/CMakeLists.txt +++ b/tests/stress_tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/stress_tests/common/ie_pipelines/pipelines.cpp b/tests/stress_tests/common/ie_pipelines/pipelines.cpp index c31c636bdf819f..4e6894a7b09591 100644 --- a/tests/stress_tests/common/ie_pipelines/pipelines.cpp +++ b/tests/stress_tests/common/ie_pipelines/pipelines.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/common/ie_pipelines/pipelines.h b/tests/stress_tests/common/ie_pipelines/pipelines.h index c474d83d3c0560..4bb93fd861d724 100644 --- a/tests/stress_tests/common/ie_pipelines/pipelines.h +++ b/tests/stress_tests/common/ie_pipelines/pipelines.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/common/ie_utils.cpp b/tests/stress_tests/common/ie_utils.cpp index 9909e760adde51..cc1a1041ac9fcb 100644 --- a/tests/stress_tests/common/ie_utils.cpp +++ b/tests/stress_tests/common/ie_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -32,7 +32,7 @@ void fillBlobs(InferenceEngine::InferRequest inferRequest, } else if (item.second->getPrecision() == InferenceEngine::Precision::I32) { fillBlobImInfo(inputBlob, batchSize, image_size); } else { - THROW_IE_EXCEPTION << "Input precision is not supported for image info!"; + IE_THROW() << "Input precision is not supported for image info!"; } continue; } @@ -52,7 +52,7 @@ void fillBlobs(InferenceEngine::InferRequest inferRequest, } else if (item.second->getPrecision() == InferenceEngine::Precision::I16) { fillBlobRandom(inputBlob); } else { - THROW_IE_EXCEPTION << "Input precision is not supported for " << item.first; + IE_THROW() << "Input precision is not supported for " << item.first; } } } \ No newline at end of file diff --git a/tests/stress_tests/common/ie_utils.h b/tests/stress_tests/common/ie_utils.h index c9df6d52396334..7520ed66066459 100644 --- a/tests/stress_tests/common/ie_utils.h +++ b/tests/stress_tests/common/ie_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -57,7 +57,7 @@ inline std::pair getTensorHeightWidth(const InferenceEngine::Ten // Regardless of layout, dimensions are stored in fixed order return std::make_pair(dims.back(), dims.at(size - 2)); } else { - THROW_IE_EXCEPTION << "Tensor does not have height and width dimensions"; + IE_THROW() << "Tensor does not have height and width dimensions"; } } diff --git a/tests/stress_tests/common/managers/task_manager.h b/tests/stress_tests/common/managers/task_manager.h index a6490677811100..a7125f0d721a45 100644 --- a/tests/stress_tests/common/managers/task_manager.h +++ b/tests/stress_tests/common/managers/task_manager.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/common/managers/thread_manager.h b/tests/stress_tests/common/managers/thread_manager.h index cf9f3e2d699bd5..710a2f67a422ca 100644 --- a/tests/stress_tests/common/managers/thread_manager.h +++ b/tests/stress_tests/common/managers/thread_manager.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/common/tests_utils.cpp b/tests/stress_tests/common/tests_utils.cpp index a28fcba7e5d9a4..f872400d897adf 100644 --- a/tests/stress_tests/common/tests_utils.cpp +++ b/tests/stress_tests/common/tests_utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -23,7 +23,7 @@ std::vector generateTestsParams(std::initializer_list fie const pugi::xml_document & test_config = Environment::Instance().getTestConfig(); std::vector processes, threads, iterations; - std::vector devices, models, models_names; + std::vector devices, models, models_names, precisions; pugi::xml_node values; for (auto field = fields.begin(); field != fields.end(); field++) { @@ -54,6 +54,8 @@ std::vector generateTestsParams(std::initializer_list fie models.push_back(full_path); models_names.push_back(path); } + std::string precision = val.attribute("precision").as_string(); + precisions.push_back(precision); } } } @@ -64,6 +66,7 @@ std::vector generateTestsParams(std::initializer_list fie iterations = !iterations.empty() ? iterations: std::vector{1}; devices = !devices.empty() ? devices : std::vector{"NULL"}; models = !models.empty() ? models : std::vector{"NULL"}; + precisions = !precisions.empty() ? precisions : std::vector{"NULL"}; models_names = !models_names.empty() ? models_names : std::vector{"NULL"}; for (auto &numprocesses : processes) @@ -71,8 +74,7 @@ std::vector generateTestsParams(std::initializer_list fie for (auto &numiters : iterations) for (auto &device : devices) for (int i = 0; i < models.size(); i++) - tests_cases.push_back(TestCase(numprocesses, numthreads, numiters, device, models[i], models_names[i])); - + tests_cases.push_back(TestCase(numprocesses, numthreads, numiters, device, models[i], models_names[i], precisions[i])); return tests_cases; } diff --git a/tests/stress_tests/common/tests_utils.h b/tests/stress_tests/common/tests_utils.h index ec691e464f1998..62cd8137a14d03 100644 --- a/tests/stress_tests/common/tests_utils.h +++ b/tests/stress_tests/common/tests_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -31,14 +31,15 @@ class TestCase { std::string device; std::string model_name; std::string model; + std::string precision; std::string test_case_name; - TestCase(int _numprocesses, int _numthreads, int _numiters, std::string _device, const std::string& _model, const std::string& _model_name) { - numprocesses = _numprocesses, numthreads = _numthreads, numiters = _numiters, device = _device, model = _model, model_name = _model_name; + TestCase(int _numprocesses, int _numthreads, int _numiters, std::string _device, const std::string& _model, const std::string& _model_name, const std::string& _precision) { + numprocesses = _numprocesses, numthreads = _numthreads, numiters = _numiters, device = _device, model = _model, model_name = _model_name, precision = _precision; test_case_name = "Numprocesses_" + std::to_string(numprocesses) + "_Numthreads_" + std::to_string(numthreads) + - "_Numiters_" + std::to_string(numiters) + "_Device_" + update_item_for_name(device) + "_Model_" + - update_item_for_name(model_name); + "_Numiters_" + std::to_string(numiters) + "_Device_" + update_item_for_name(device) + "_Precision_" + + update_item_for_name(precision) + "_Model_" + update_item_for_name(model_name); } private: diff --git a/tests/stress_tests/common/utils.cpp b/tests/stress_tests/common/utils.cpp index 3d47da38c7253d..d93513a1c6cf28 100644 --- a/tests/stress_tests/common/utils.cpp +++ b/tests/stress_tests/common/utils.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/common/utils.h b/tests/stress_tests/common/utils.h index 759f8d8213f2be..407c9f77cddb43 100644 --- a/tests/stress_tests/common/utils.h +++ b/tests/stress_tests/common/utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/memcheck_tests/CMakeLists.txt b/tests/stress_tests/memcheck_tests/CMakeLists.txt index f6009ad3460bd3..8c52cb306b14da 100644 --- a/tests/stress_tests/memcheck_tests/CMakeLists.txt +++ b/tests/stress_tests/memcheck_tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/stress_tests/memcheck_tests/flags.h b/tests/stress_tests/memcheck_tests/flags.h index 354d61a69f007e..89b75751d5bbd2 100644 --- a/tests/stress_tests/memcheck_tests/flags.h +++ b/tests/stress_tests/memcheck_tests/flags.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/memcheck_tests/local_configs/references_config.xml b/tests/stress_tests/memcheck_tests/local_configs/references_config.xml index fe07641000f067..3c2c5213ff1463 100644 --- a/tests/stress_tests/memcheck_tests/local_configs/references_config.xml +++ b/tests/stress_tests/memcheck_tests/local_configs/references_config.xml @@ -1,21 +1,21 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/tests/stress_tests/memcheck_tests/local_configs/test_config.xml b/tests/stress_tests/memcheck_tests/local_configs/test_config.xml index b127e37e22615f..cbb163c0a481e8 100644 --- a/tests/stress_tests/memcheck_tests/local_configs/test_config.xml +++ b/tests/stress_tests/memcheck_tests/local_configs/test_config.xml @@ -5,9 +5,10 @@ GPU - - - - + + + + + diff --git a/tests/stress_tests/memcheck_tests/main.cpp b/tests/stress_tests/memcheck_tests/main.cpp index bc2abae6cfb47f..b5f78fae2ca015 100644 --- a/tests/stress_tests/memcheck_tests/main.cpp +++ b/tests/stress_tests/memcheck_tests/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/memcheck_tests/tests.cpp b/tests/stress_tests/memcheck_tests/tests.cpp index 1cdfa9f715a00a..2a64bf314a2672 100644 --- a/tests/stress_tests/memcheck_tests/tests.cpp +++ b/tests/stress_tests/memcheck_tests/tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -17,7 +17,7 @@ using namespace InferenceEngine; class MemCheckTestSuite : public ::testing::TestWithParam { public: - std::string test_name, model, model_name, device; + std::string test_name, model, model_name, device, precision; TestReferences test_refs; void SetUp() override { @@ -29,6 +29,7 @@ class MemCheckTestSuite : public ::testing::TestWithParam { model = test_params.model; model_name = test_params.model_name; device = test_params.device; + precision = test_params.precision; test_refs.collect_vm_values_for_test(test_name, test_params); EXPECT_GT(test_refs.references[VMSIZE], 0) << "Reference value of VmSize is less than 0. Value: " @@ -45,6 +46,7 @@ class MemCheckTestSuite : public ::testing::TestWithParam { // tests_pipelines/tests_pipelines.cpp TEST_P(MemCheckTestSuite, create_exenetwork) { log_info("Create ExecutableNetwork from network: \"" << model + << "\" with precision: \"" << precision << "\" for device: \"" << device << "\""); auto test_pipeline = [&]{ MemCheckPipeline memCheckPipeline; @@ -57,7 +59,7 @@ TEST_P(MemCheckTestSuite, create_exenetwork) { log_info("Memory consumption after LoadNetwork:"); memCheckPipeline.record_measures(test_name); - log_debug(memCheckPipeline.get_reference_record_for_test(test_name, model_name, device)); + log_debug(memCheckPipeline.get_reference_record_for_test(test_name, model_name, precision, device)); return memCheckPipeline.measure(); }; @@ -67,6 +69,7 @@ TEST_P(MemCheckTestSuite, create_exenetwork) { TEST_P(MemCheckTestSuite, infer_request_inference) { log_info("Inference of InferRequest from network: \"" << model + << "\" with precision: \"" << precision << "\" for device: \"" << device << "\""); auto test_pipeline = [&]{ MemCheckPipeline memCheckPipeline; @@ -90,7 +93,7 @@ TEST_P(MemCheckTestSuite, infer_request_inference) { log_info("Memory consumption after Inference:"); memCheckPipeline.record_measures(test_name); - log_debug(memCheckPipeline.get_reference_record_for_test(test_name, model_name, device)); + log_debug(memCheckPipeline.get_reference_record_for_test(test_name, model_name, precision, device)); return memCheckPipeline.measure(); }; diff --git a/tests/stress_tests/memcheck_tests/tests_pipelines/tests_pipelines.cpp b/tests/stress_tests/memcheck_tests/tests_pipelines/tests_pipelines.cpp index d142065eb48352..215da61d9dea55 100644 --- a/tests/stress_tests/memcheck_tests/tests_pipelines/tests_pipelines.cpp +++ b/tests/stress_tests/memcheck_tests/tests_pipelines/tests_pipelines.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -47,12 +47,14 @@ void MemCheckPipeline::record_measures(const std::string & id) { } std::string MemCheckPipeline::get_reference_record_for_test(std::string test_name, std::string model_name, - std::string target_device) { + std::string precision, std::string target_device) { std::array measures = measure(); std::stringstream ss; ss << "Record to update reference config: " - << "()>& test_pipeline, diff --git a/tests/stress_tests/memcheck_tests/tests_utils.h b/tests/stress_tests/memcheck_tests/tests_utils.h index 5c2710ce7254de..2ca9210c350698 100644 --- a/tests/stress_tests/memcheck_tests/tests_utils.h +++ b/tests/stress_tests/memcheck_tests/tests_utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -54,7 +54,7 @@ class MemCheckEnvironment { class TestReferences { private: - std::vector model_name_v, test_name_v, device_v; + std::vector model_name_v, test_name_v, device_v, precision_v; std::vector vmsize_v, vmpeak_v, vmrss_v, vmhwm_v; public: std::array references; @@ -69,6 +69,8 @@ class TestReferences { for (pugi::xml_attribute_iterator ait = node.attributes_begin(); ait != node.attributes_end(); ait++) { if (strncmp(ait->name(), "path", strlen(ait->name())) == 0) { model_name_v.push_back(ait->value()); + } else if (strncmp(ait->name(), "precision", strlen(ait->name())) == 0) { + precision_v.push_back(ait->value()); } else if (strncmp(ait->name(), "test", strlen(ait->name())) == 0) { test_name_v.push_back(ait->value()); } else if (strncmp(ait->name(), "device", strlen(ait->name())) == 0) { @@ -90,11 +92,12 @@ class TestReferences { for (int i = 0; i < test_name_v.size(); i++) if (test_name_v[i] == test_name) if (model_name_v[i] == test_params.model_name) - if (device_v[i] == test_params.device) { - references[VMSIZE] = vmsize_v[i]; - references[VMPEAK] = vmpeak_v[i]; - references[VMRSS] = vmrss_v[i]; - references[VMHWM] = vmhwm_v[i]; - } + if (device_v[i] == test_params.device) + if (precision_v[i] == test_params.precision) { + references[VMSIZE] = vmsize_v[i]; + references[VMPEAK] = vmpeak_v[i]; + references[VMRSS] = vmrss_v[i]; + references[VMHWM] = vmhwm_v[i]; + } } }; diff --git a/tests/stress_tests/memleaks_tests/CMakeLists.txt b/tests/stress_tests/memleaks_tests/CMakeLists.txt index 037bfbd7a65f35..e8d0915136ca9d 100644 --- a/tests/stress_tests/memleaks_tests/CMakeLists.txt +++ b/tests/stress_tests/memleaks_tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -21,7 +21,6 @@ file (GLOB HDR add_executable(${TARGET_NAME} ${HDR} ${SRC}) find_package(gflags REQUIRED) -find_package(Threads REQUIRED) target_link_libraries(${TARGET_NAME} IE::gtest diff --git a/tests/stress_tests/memleaks_tests/flags.h b/tests/stress_tests/memleaks_tests/flags.h index 1f8b3aa62072b0..e5d96b55c4ca12 100644 --- a/tests/stress_tests/memleaks_tests/flags.h +++ b/tests/stress_tests/memleaks_tests/flags.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/memleaks_tests/local_configs/test_config.xml b/tests/stress_tests/memleaks_tests/local_configs/test_config.xml index b4e8205194841d..ce92ba10d50c13 100644 --- a/tests/stress_tests/memleaks_tests/local_configs/test_config.xml +++ b/tests/stress_tests/memleaks_tests/local_configs/test_config.xml @@ -15,6 +15,6 @@ - + diff --git a/tests/stress_tests/memleaks_tests/main.cpp b/tests/stress_tests/memleaks_tests/main.cpp index 1b3ff98190f494..485200d4149a1d 100644 --- a/tests/stress_tests/memleaks_tests/main.cpp +++ b/tests/stress_tests/memleaks_tests/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/memleaks_tests/tests.cpp b/tests/stress_tests/memleaks_tests/tests.cpp index 599c9573f6d4b8..c1eea833c81bd9 100644 --- a/tests/stress_tests/memleaks_tests/tests.cpp +++ b/tests/stress_tests/memleaks_tests/tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.cpp b/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.cpp index a7cd6d760dd962..10a91006885048 100644 --- a/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.cpp +++ b/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.h b/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.h index 37a891b3352aae..dec1f4ac968d3d 100644 --- a/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.h +++ b/tests/stress_tests/memleaks_tests/tests_pipelines/tests_pipelines.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/scripts/__init__.py b/tests/stress_tests/scripts/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/tests/stress_tests/scripts/__init__.py +++ b/tests/stress_tests/scripts/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/tests/stress_tests/scripts/compare_memcheck_2_runs.py b/tests/stress_tests/scripts/compare_memcheck_2_runs.py index 92f06995a0f193..7af2f90f490129 100644 --- a/tests/stress_tests/scripts/compare_memcheck_2_runs.py +++ b/tests/stress_tests/scripts/compare_memcheck_2_runs.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 -# Copyright (C) 2020 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# """ Create comparison table based on MemCheckTests results from 2 runs diff --git a/tests/stress_tests/scripts/get_testdata.py b/tests/stress_tests/scripts/get_testdata.py index 785013e249f6fa..f838611d1e4e5f 100755 --- a/tests/stress_tests/scripts/get_testdata.py +++ b/tests/stress_tests/scripts/get_testdata.py @@ -1,8 +1,7 @@ #!/usr/bin/env python3 -# Copyright (C) 2020 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 """ Script to acquire model IRs for stress tests. Usage: ./scrips/get_testdata.py @@ -88,9 +87,8 @@ def run_in_subprocess(cmd, check_call=True): def main(): """Main entry point. """ - parser = argparse.ArgumentParser( - description='Acquire test data', - formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser = argparse.ArgumentParser(description='Acquire test data', + formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--test_conf', required=True, type=Path, help='Path to a test config .xml file containing models ' @@ -102,7 +100,7 @@ def main(): help='Path to Model Optimizer (MO) runner. Required for OMZ converter.py only.') parser.add_argument('--omz_models_out_dir', type=Path, default=abs_path('../_omz_out/models'), - help='Directory to put test data into. Required for OMZ downloader.py and converter.py') + help='Directory to put test data into. Required for OMZ downloader.py and converter.py.') parser.add_argument('--omz_irs_out_dir', type=Path, default=abs_path('../_omz_out/irs'), help='Directory to put test data into. Required for OMZ converter.py only.') @@ -115,9 +113,6 @@ def main(): help='Skip errors caused by OMZ while downloading and converting.') args = parser.parse_args() - # constants - PRECISION = "FP32" - # prepare Open Model Zoo if args.omz_repo: omz_path = Path(args.omz_repo).resolve() @@ -151,32 +146,43 @@ def main(): if "name" not in model_rec.attrib or model_rec.attrib.get("source") != "omz": continue model_name = model_rec.attrib["name"] + precision = model_rec.attrib["precision"] info_dumper_path = omz_path / "tools" / "downloader" / "info_dumper.py" - cmd = "{executable} {info_dumper_path} --name {model_name}"\ - .format(executable=sys.executable, info_dumper_path=info_dumper_path, - model_name=model_name) - out = subprocess.check_output(cmd, shell=True, universal_newlines=True) + cmd = '"{executable}" "{info_dumper_path}" --name {model_name}'.format(executable=sys.executable, + info_dumper_path=info_dumper_path, + model_name=model_name) + try: + out = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True, universal_newlines=True) + except subprocess.CalledProcessError as exc: + log.warning(exc.output) + continue + model_info = json.loads(out)[0] # update model record from test config with Open Model Zoo info fields_to_add = ["framework", "subdirectory"] info_to_add = {key: model_info[key] for key in fields_to_add} + # check selected precision with model info from Open Model Zoo + if precision not in model_info['precisions']: + log.warning("Please specify precision for the model " + "{model_name} from the list: {model_info}".format(model_name=model_name, + model_info=model_info['precisions'])) + continue model_rec.attrib.update(info_to_add) - model_rec.attrib["precision"] = PRECISION model_rec.attrib["path"] = str( - Path(model_rec.attrib["subdirectory"]) / PRECISION / (model_rec.attrib["name"] + ".xml")) + Path(model_rec.attrib["subdirectory"]) / precision / (model_rec.attrib["name"] + ".xml")) model_rec.attrib["full_path"] = str( - args.omz_irs_out_dir / model_rec.attrib["subdirectory"] / PRECISION / (model_rec.attrib["name"] + ".xml")) + args.omz_irs_out_dir / model_rec.attrib["subdirectory"] / precision / (model_rec.attrib["name"] + ".xml")) # prepare models downloader_path = omz_path / "tools" / "downloader" / "downloader.py" cmd = '{downloader_path} --name {model_name}' \ - ' --precisions={PRECISION}' \ + ' --precisions={precision}' \ ' --num_attempts {num_attempts}' \ ' --output_dir {models_dir}' \ ' --cache_dir {cache_dir}'.format(downloader_path=downloader_path, model_name=model_name, - PRECISION=PRECISION, num_attempts=OMZ_NUM_ATTEMPTS, + precision=precision, num_attempts=OMZ_NUM_ATTEMPTS, models_dir=args.omz_models_out_dir, cache_dir=args.omz_cache_dir) run_in_subprocess(cmd, check_call=not args.skip_omz_errors) @@ -186,10 +192,10 @@ def main(): # NOTE: remove --precisions if both precisions (FP32 & FP16) required cmd = '{executable} {converter_path} --name {model_name}' \ ' -p {executable}' \ - ' --precisions={PRECISION}' \ + ' --precisions={precision}' \ ' --output_dir {irs_dir}' \ ' --download_dir {models_dir}' \ - ' --mo {mo_tool}'.format(executable=python_executable, PRECISION=PRECISION, + ' --mo {mo_tool}'.format(executable=python_executable, precision=precision, converter_path=converter_path, model_name=model_name, irs_dir=args.omz_irs_out_dir, models_dir=args.omz_models_out_dir, mo_tool=args.mo_tool) diff --git a/tests/stress_tests/scripts/memcheck_upload.py b/tests/stress_tests/scripts/memcheck_upload.py index e8b3e158827734..75e7fbd2b8f833 100644 --- a/tests/stress_tests/scripts/memcheck_upload.py +++ b/tests/stress_tests/scripts/memcheck_upload.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 -# Copyright (C) 2020 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# """ Upload metrics gathered by MemCheckTests into Mongo DB @@ -123,10 +123,8 @@ def parse_memcheck_log(log_path): entry = SimpleNamespace( metrics=dict(zip(heading, values)), test_name=test_name, - model_name=os.path.splitext( - os.path.basename(model['path']))[0], - precision=next(pr for pr in PRECISSIONS if pr.upper() - in model['path'].upper()), + model_name=os.path.splitext(os.path.basename(model['path']))[0], + precision=next(pr for pr in PRECISSIONS if pr.upper() in model['precision'].upper()), model=model['path'], device=model['device'].upper(), status='passed' if passed_match else 'failed' if failed_match else 'started' diff --git a/tests/stress_tests/scripts/run_memcheck.py b/tests/stress_tests/scripts/run_memcheck.py index 83434ed72e755a..01deaa927236da 100755 --- a/tests/stress_tests/scripts/run_memcheck.py +++ b/tests/stress_tests/scripts/run_memcheck.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 -# Copyright (C) 2020 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# + """ This script runs memcheck tests isolated with help of gtest_parallel. It can upload memory measurment results to database and generate reports. diff --git a/tests/stress_tests/unittests/CMakeLists.txt b/tests/stress_tests/unittests/CMakeLists.txt index b3cd52c9cb021f..d642a96696db36 100644 --- a/tests/stress_tests/unittests/CMakeLists.txt +++ b/tests/stress_tests/unittests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # @@ -21,7 +21,6 @@ file (GLOB HDR add_executable(${TARGET_NAME} ${HDR} ${SRC}) find_package(gflags REQUIRED) -find_package(Threads REQUIRED) target_link_libraries(${TARGET_NAME} IE::gtest diff --git a/tests/stress_tests/unittests/flags.h b/tests/stress_tests/unittests/flags.h index 548708242fa63f..27ba4c54022ca0 100644 --- a/tests/stress_tests/unittests/flags.h +++ b/tests/stress_tests/unittests/flags.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/unittests/local_configs/test_config.xml b/tests/stress_tests/unittests/local_configs/test_config.xml index 5df0571051de16..aa988200a41066 100644 --- a/tests/stress_tests/unittests/local_configs/test_config.xml +++ b/tests/stress_tests/unittests/local_configs/test_config.xml @@ -14,6 +14,6 @@ GPU - + diff --git a/tests/stress_tests/unittests/main.cpp b/tests/stress_tests/unittests/main.cpp index 27111ecb4168a5..a76244c3223c55 100644 --- a/tests/stress_tests/unittests/main.cpp +++ b/tests/stress_tests/unittests/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/unittests/tests.cpp b/tests/stress_tests/unittests/tests.cpp index 4c480c931d91db..43d594563ba8ed 100644 --- a/tests/stress_tests/unittests/tests.cpp +++ b/tests/stress_tests/unittests/tests.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.cpp b/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.cpp index 3bfd9884225443..6d794771cdf226 100644 --- a/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.cpp +++ b/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.h b/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.h index c8105accaebe79..de59b653116e0f 100644 --- a/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.h +++ b/tests/stress_tests/unittests/tests_pipelines/tests_pipelines.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/stress_tests/unittests/tests_pipelines/tests_pipelines_full_pipeline.cpp b/tests/stress_tests/unittests/tests_pipelines/tests_pipelines_full_pipeline.cpp index d3764d271d184f..1c5dae1b860e6b 100644 --- a/tests/stress_tests/unittests/tests_pipelines/tests_pipelines_full_pipeline.cpp +++ b/tests/stress_tests/unittests/tests_pipelines/tests_pipelines_full_pipeline.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/time_tests/CMakeLists.txt b/tests/time_tests/CMakeLists.txt index 57ee88d8b4189d..ea36239c8aed2d 100644 --- a/tests/time_tests/CMakeLists.txt +++ b/tests/time_tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/time_tests/include/timetests_helper/timer.h b/tests/time_tests/include/timetests_helper/timer.h index 9cec3ba123c878..ce2b84c6903fc8 100644 --- a/tests/time_tests/include/timetests_helper/timer.h +++ b/tests/time_tests/include/timetests_helper/timer.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/time_tests/include/timetests_helper/utils.h b/tests/time_tests/include/timetests_helper/utils.h index 5c4370deab6646..841721ac5344c7 100644 --- a/tests/time_tests/include/timetests_helper/utils.h +++ b/tests/time_tests/include/timetests_helper/utils.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/time_tests/scripts/run_timetest.py b/tests/time_tests/scripts/run_timetest.py index c3489f92c9078b..73ec6c1ce0afd0 100644 --- a/tests/time_tests/scripts/run_timetest.py +++ b/tests/time_tests/scripts/run_timetest.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 -# Copyright (C) 2020 Intel Corporation + +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# + """ This script runs timetest executable several times and aggregate collected statistics. diff --git a/tests/time_tests/src/CMakeLists.txt b/tests/time_tests/src/CMakeLists.txt index 376b490afed71a..fdf784c5b06fb9 100644 --- a/tests/time_tests/src/CMakeLists.txt +++ b/tests/time_tests/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/time_tests/src/timetests/CMakeLists.txt b/tests/time_tests/src/timetests/CMakeLists.txt index c83d9ca52999f8..eecd9b48e07254 100644 --- a/tests/time_tests/src/timetests/CMakeLists.txt +++ b/tests/time_tests/src/timetests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/time_tests/src/timetests/common.h b/tests/time_tests/src/timetests/common.h index 555d1757962c66..82ef22eeb93bf5 100644 --- a/tests/time_tests/src/timetests/common.h +++ b/tests/time_tests/src/timetests/common.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -55,7 +55,7 @@ inline std::pair getTensorHeightWidth(const InferenceEngine::Ten // Regardless of layout, dimensions are stored in fixed order return std::make_pair(dims.back(), dims.at(size - 2)); } else { - THROW_IE_EXCEPTION << "Tensor does not have height and width dimensions"; + IE_THROW() << "Tensor does not have height and width dimensions"; } } @@ -128,7 +128,7 @@ void fillBlobs(InferenceEngine::InferRequest inferRequest, } else if (item.second->getPrecision() == InferenceEngine::Precision::I32) { fillBlobImInfo(inputBlob, batchSize, image_size); } else { - THROW_IE_EXCEPTION << "Input precision is not supported for image info!"; + IE_THROW() << "Input precision is not supported for image info!"; } continue; } @@ -148,7 +148,7 @@ void fillBlobs(InferenceEngine::InferRequest inferRequest, } else if (item.second->getPrecision() == InferenceEngine::Precision::I16) { fillBlobRandom(inputBlob); } else { - THROW_IE_EXCEPTION << "Input precision is not supported for " << item.first; + IE_THROW() << "Input precision is not supported for " << item.first; } } } \ No newline at end of file diff --git a/tests/time_tests/src/timetests/timetest_infer.cpp b/tests/time_tests/src/timetests/timetest_infer.cpp index 58010ba0c500f7..1292bcffd08794 100644 --- a/tests/time_tests/src/timetests/timetest_infer.cpp +++ b/tests/time_tests/src/timetests/timetest_infer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // @@ -67,7 +67,7 @@ int runPipeline(const std::string &model, const std::string &device) { try { pipeline(model, device); - } catch (const InferenceEngine::details::InferenceEngineException &iex) { + } catch (const InferenceEngine::Exception &iex) { std::cerr << "Inference Engine pipeline failed with Inference Engine exception:\n" << iex.what(); diff --git a/tests/time_tests/src/timetests_helper/CMakeLists.txt b/tests/time_tests/src/timetests_helper/CMakeLists.txt index 0e75039751e0b3..0e474ce1a335a2 100644 --- a/tests/time_tests/src/timetests_helper/CMakeLists.txt +++ b/tests/time_tests/src/timetests_helper/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # diff --git a/tests/time_tests/src/timetests_helper/cli.h b/tests/time_tests/src/timetests_helper/cli.h index f22e45b5b21c20..3370f16eebdeab 100644 --- a/tests/time_tests/src/timetests_helper/cli.h +++ b/tests/time_tests/src/timetests_helper/cli.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/time_tests/src/timetests_helper/main.cpp b/tests/time_tests/src/timetests_helper/main.cpp index fda85b94aeb46c..dff9704511424d 100644 --- a/tests/time_tests/src/timetests_helper/main.cpp +++ b/tests/time_tests/src/timetests_helper/main.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/time_tests/src/timetests_helper/statistics_writer.h b/tests/time_tests/src/timetests_helper/statistics_writer.h index 548e1af0fde814..60896e7d0e3fa5 100644 --- a/tests/time_tests/src/timetests_helper/statistics_writer.h +++ b/tests/time_tests/src/timetests_helper/statistics_writer.h @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/time_tests/src/timetests_helper/timer.cpp b/tests/time_tests/src/timetests_helper/timer.cpp index 3bb1576a850059..8578fba222f12c 100644 --- a/tests/time_tests/src/timetests_helper/timer.cpp +++ b/tests/time_tests/src/timetests_helper/timer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // diff --git a/tests/time_tests/test_runner/conftest.py b/tests/time_tests/test_runner/conftest.py index 7f6add93e6d742..05346e6c5a2a8a 100644 --- a/tests/time_tests/test_runner/conftest.py +++ b/tests/time_tests/test_runner/conftest.py @@ -1,4 +1,4 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # """ diff --git a/tests/time_tests/test_runner/test_timetest.py b/tests/time_tests/test_runner/test_timetest.py index d562779c7c38fe..d97313e78ef20f 100644 --- a/tests/time_tests/test_runner/test_timetest.py +++ b/tests/time_tests/test_runner/test_timetest.py @@ -1,6 +1,6 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# + """Main entry-point to run timetests tests. Default run: diff --git a/tests/time_tests/test_runner/utils.py b/tests/time_tests/test_runner/utils.py index 9c46237d27b560..40c90edb28bdc3 100644 --- a/tests/time_tests/test_runner/utils.py +++ b/tests/time_tests/test_runner/utils.py @@ -1,6 +1,6 @@ -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -# + """Utility module.""" import os diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 8f91f7510d4f80..a0a5490d4a5450 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** add_subdirectory(ittapi) add_subdirectory(itt_collector) diff --git a/thirdparty/itt_collector/.clang-format b/thirdparty/itt_collector/.clang-format new file mode 100644 index 00000000000000..93b6f4f50f5b96 --- /dev/null +++ b/thirdparty/itt_collector/.clang-format @@ -0,0 +1,26 @@ +BasedOnStyle: Google +IndentWidth: 4 +UseTab: Never +--- +Language: Cpp +Standard: Cpp11 + +AccessModifierOffset: -4 +AlignConsecutiveMacros: true +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortFunctionsOnASingleLine: Empty +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: Empty +AllowShortLoopsOnASingleLine: false +AlwaysBreakBeforeMultilineStrings: false +ColumnLimit: 160 +# Specialize this comment pragma in order to avoid changes in SEA copyrights +CommentPragmas: '^#' +DerivePointerAlignment: false +FixNamespaceComments: true +IndentCaseLabels: false +IndentPPDirectives: BeforeHash +SpaceBeforeCpp11BracedList: true +SpaceBeforeCtorInitializerColon: false +--- diff --git a/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt b/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt index 24724fa37ac539..30252f6fcc4c08 100644 --- a/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt +++ b/thirdparty/itt_collector/sea_itt_lib/CMakeLists.txt @@ -35,4 +35,4 @@ elseif(WIN32) target_link_libraries(${TARGET_NAME} PRIVATE Dbghelp) endif() -add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) +add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) diff --git a/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.cpp b/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.cpp index 1911cb7e549d87..22bd5108804858 100644 --- a/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.cpp +++ b/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.cpp @@ -19,22 +19,23 @@ #include "IttNotifyStdSrc.h" #include +#include #include -#include -#include -#include + #include #include #include +#include #include -#include +#include +#include #ifdef _WIN32 - #include #include + #include #else - #include #include + #include #endif #ifdef __APPLE__ @@ -44,14 +45,13 @@ #endif namespace sea { -IHandler* g_handlers[MAX_HANDLERS] = {}; //10 is more than enough for now +IHandler* g_handlers[MAX_HANDLERS] = {}; // 10 is more than enough for now CIttLocker::CIttLocker() { m_pGlobal = GetITTGlobal(); __itt_mutex_lock(&m_pGlobal->mutex); } - CIttLocker::~CIttLocker() { if (m_pGlobal) { __itt_mutex_unlock(&m_pGlobal->mutex); @@ -60,14 +60,15 @@ CIttLocker::~CIttLocker() { } // namespace sea -//FIXME: in general add much more comments +// FIXME: in general add much more comments -std::map g_stats; //can't be static function variable due to lifetime limits +std::map g_stats; // can't be static function variable due to lifetime limits class CIttFnStat { public: CIttFnStat(const char* name) { - if (!sea::IsVerboseMode()) return; + if (!sea::IsVerboseMode()) + return; sea::CIttLocker locker; ++GetStats()[name]; } @@ -83,30 +84,29 @@ class CIttFnStat { #define ITT_FUNCTION_STAT() #endif - struct __itt_frame_t { __itt_domain* pDomain; __itt_id id; }; -inline bool operator < (const __itt_id& left, const __itt_id& right) { +inline bool operator<(const __itt_id& left, const __itt_id& right) { return memcmp(&left, &right, sizeof(__itt_id)) < 0; } -inline bool operator == (const __itt_id& left, const __itt_id& right) { +inline bool operator==(const __itt_id& left, const __itt_id& right) { return (left.d1 == right.d1) && (left.d2 == right.d2); } namespace sea { -int64_t g_nRingBuffer = 1000000000ll * atoi(get_environ_value("INTEL_SEA_RING").c_str()); //in nanoseconds -uint64_t g_nAutoCut = 1024ull * 1024 * atoi(get_environ_value("INTEL_SEA_AUTOCUT").c_str()); //in MB +int64_t g_nRingBuffer = 1000000000ll * atoi(get_environ_value("INTEL_SEA_RING").c_str()); // in nanoseconds +uint64_t g_nAutoCut = 1024ull * 1024 * atoi(get_environ_value("INTEL_SEA_AUTOCUT").c_str()); // in MB uint64_t g_features = sea::GetFeatureSet(); class DomainFilter { protected: std::string m_path; - typedef std::map TDomains; + typedef std::map TDomains; TDomains m_domains; void ReadFilters(TDomains& domains) { @@ -122,7 +122,8 @@ class DomainFilter { public: DomainFilter() { m_path = get_environ_value("INTEL_SEA_FILTER"); - if (m_path.empty()) return; + if (m_path.empty()) + return; ReadFilters(m_domains); } @@ -131,11 +132,12 @@ class DomainFilter { } bool IsEnabled(const char* szDomain) { - return !m_domains[szDomain]; //new domain gets initialized with bool() which is false, so we invert it + return !m_domains[szDomain]; // new domain gets initialized with bool() which is false, so we invert it } void Finish() { - if (m_path.empty()) return; + if (m_path.empty()) + return; TDomains domains; ReadFilters(domains); domains.insert(m_domains.begin(), m_domains.end()); @@ -158,7 +160,7 @@ bool PathExists(const std::string& path) { #endif } -int mkpath(const char *path, uint32_t mode) { +int mkpath(const char* path, uint32_t mode) { struct stat sb = {}; if (!stat(path, &sb)) @@ -168,7 +170,7 @@ int mkpath(const char *path, uint32_t mode) { #ifdef _WIN32 strcpy_s(parent, path); #else - strcpy(parent, path); // NOLINT + strcpy(parent, path); #endif char* last_slash = strrchr(parent, '//'); if (!last_slash) { @@ -193,7 +195,8 @@ int mkpath(const char *path, uint32_t mode) { } std::string GetDir(std::string path, const std::string& append) { - if (path.empty()) return path; + if (path.empty()) + return path; path += append; VerbosePrint("GetDir: %s\n", path.c_str()); @@ -213,8 +216,7 @@ std::string GetSavePath() { if (save_to.empty()) { return save_to; } - return GetDir(save_to, - ("-" + std::to_string(CTraceEventFormat::GetRegularFields().pid))); + return GetDir(save_to, ("-" + std::to_string(CTraceEventFormat::GetRegularFields().pid))); } bool IsVerboseMode() { @@ -222,19 +224,22 @@ bool IsVerboseMode() { return bVerboseMode; } -std::string g_savepath = GetSavePath(); // NOLINT +std::string g_savepath = GetSavePath(); std::shared_ptr g_spCutName; std::string Escape4Path(std::string str) { - std::replace_if(str.begin(), str.end(), - [](char sym){return strchr("/\\:*?\"<>|", sym);}, + std::replace_if( + str.begin(), str.end(), + [](char sym) { + return strchr("/\\:*?\"<>|", sym); + }, '_'); return str; } void InitDomain(__itt_domain* pDomain) { CIttLocker locker; - pDomain->extra2 = new DomainExtra{}; + pDomain->extra2 = new DomainExtra {}; if (g_savepath.size()) { DomainExtra* pDomainExtra = reinterpret_cast(pDomain->extra2); pDomainExtra->strDomainPath = GetDir(g_savepath, Escape4Path(pDomain->nameA)); @@ -253,7 +258,7 @@ SThreadRecord* GetThreadRecord() { CIttLocker lock; - pThreadRecord = new SThreadRecord{}; + pThreadRecord = new SThreadRecord {}; static __itt_global* pGlobal = GetITTGlobal(); __itt_domain* pDomain = pGlobal->domain_list; @@ -289,11 +294,10 @@ void thread_set_nameW(const wchar_t* name) { } #endif - - inline uint64_t ConvertClockDomains(unsigned long long timestamp, __itt_clock_domain* pClock) { - if (!pClock) return timestamp; - uint64_t start = *(uint64_t*)pClock->extra2; // NOLINT + if (!pClock) + return timestamp; + uint64_t start = *(uint64_t*)pClock->extra2; return start + (timestamp - pClock->info.clock_base) * SHiResClock::period::den / pClock->info.clock_freq; } @@ -316,7 +320,6 @@ CTraceEventFormat::SRegularFields GetRegularFields(__itt_clock_domain* clock_dom return rf; } - __itt_domain* UNICODE_AGNOSTIC(domain_create)(const char* name) { ITT_FUNCTION_STAT(); __itt_domain *h_tail = NULL, *h = NULL; @@ -328,7 +331,8 @@ __itt_domain* UNICODE_AGNOSTIC(domain_create)(const char* name) { CIttLocker locker; static __itt_global* pGlobal = GetITTGlobal(); for (h_tail = NULL, h = pGlobal->domain_list; h != NULL; h_tail = h, h = h->next) { - if (h->nameA != NULL && !__itt_fstrcmp(h->nameA, name)) break; + if (h->nameA != NULL && !__itt_fstrcmp(h->nameA, name)) + break; } if (h == NULL) { NEW_DOMAIN_A(pGlobal, h, h_tail, name); @@ -345,7 +349,8 @@ __itt_domain* domain_createW(const wchar_t* name) { #endif inline __itt_string_handle* get_tail_of_global_string_list(const __itt_global* const pGlobal) { - if (!pGlobal->string_list) return nullptr; + if (!pGlobal->string_list) + return nullptr; __itt_string_handle* result = pGlobal->string_list; @@ -358,9 +363,9 @@ inline __itt_string_handle* get_tail_of_global_string_list(const __itt_global* c inline __itt_string_handle* create_and_add_string_handle_to_list(const char* name) { static __itt_global* pGlobal = GetITTGlobal(); - static __itt_string_handle *string_handle_list_tail = get_tail_of_global_string_list(pGlobal); + static __itt_string_handle* string_handle_list_tail = get_tail_of_global_string_list(pGlobal); - __itt_string_handle *result = NULL; + __itt_string_handle* result = NULL; NEW_STRING_HANDLE_A(pGlobal, result, string_handle_list_tail, name); string_handle_list_tail = result; @@ -379,7 +384,7 @@ __itt_string_handle* ITTAPI UNICODE_AGNOSTIC(string_handle_create)(const char* n return found_handle->second; } - __itt_string_handle *result = create_and_add_string_handle_to_list(name); + __itt_string_handle* result = create_and_add_string_handle_to_list(name); handle_map[name] = result; sea::ReportString(result); return result; @@ -391,11 +396,7 @@ __itt_string_handle* string_handle_createW(const wchar_t* name) { } #endif -void marker_ex(const __itt_domain *pDomain, - __itt_clock_domain* clock_domain, - unsigned long long timestamp, - __itt_id id, - __itt_string_handle *pName, +void marker_ex(const __itt_domain* pDomain, __itt_clock_domain* clock_domain, unsigned long long timestamp, __itt_id id, __itt_string_handle* pName, __itt_scope scope) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(clock_domain, timestamp); @@ -405,12 +406,11 @@ void marker_ex(const __itt_domain *pDomain, } } -void marker(const __itt_domain *pDomain, __itt_id id, __itt_string_handle *pName, __itt_scope scope) { +void marker(const __itt_domain* pDomain, __itt_id id, __itt_string_handle* pName, __itt_scope scope) { ITT_FUNCTION_STAT(); marker_ex(pDomain, nullptr, 0, id, pName, scope); } - bool IHandler::RegisterHandler(IHandler* pHandler) { for (size_t i = 0; i < MAX_HANDLERS; ++i) { if (!g_handlers[i]) { @@ -422,44 +422,44 @@ bool IHandler::RegisterHandler(IHandler* pHandler) { return false; } -//FIXME: Use one coding style, since itt functions are mapped, there's no problem with that -void task_begin(const __itt_domain *pDomain, __itt_id taskid, __itt_id parentid, __itt_string_handle *pName) { +// FIXME: Use one coding style, since itt functions are mapped, there's no problem with that +void task_begin(const __itt_domain* pDomain, __itt_id taskid, __itt_id parentid, __itt_string_handle* pName) { ITT_FUNCTION_STAT(); SThreadRecord* pThreadRecord = GetThreadRecord(); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - pThreadRecord->pTask = placement_new(STaskDescriptor) { - pThreadRecord->pTask, //chaining the previous task inside - rf, - pDomain, pName, - taskid, parentid - }; // NOLINT + pThreadRecord->pTask = placement_new(STaskDescriptor) {pThreadRecord->pTask, // chaining the previous task inside + rf, + pDomain, + pName, + taskid, + parentid}; for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->TaskBegin(*pThreadRecord->pTask, false); } } -void task_begin_fn(const __itt_domain *pDomain, __itt_id taskid, __itt_id parentid, void* fn) { +void task_begin_fn(const __itt_domain* pDomain, __itt_id taskid, __itt_id parentid, void* fn) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(); SThreadRecord* pThreadRecord = GetThreadRecord(); - pThreadRecord->pTask = placement_new(STaskDescriptor) { - pThreadRecord->pTask, //chaining the previous task inside - rf, - pDomain, nullptr, - taskid, parentid, - fn - }; // NOLINT + pThreadRecord->pTask = placement_new(STaskDescriptor) {pThreadRecord->pTask, // chaining the previous task inside + rf, + pDomain, + nullptr, + taskid, + parentid, + fn}; for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->TaskBegin(*pThreadRecord->pTask, false); } } -void task_end(const __itt_domain *pDomain) { +void task_end(const __itt_domain* pDomain) { ITT_FUNCTION_STAT(); SThreadRecord* pThreadRecord = GetThreadRecord(); @@ -469,7 +469,7 @@ void task_end(const __itt_domain *pDomain) { return; } - CTraceEventFormat::SRegularFields rf = GetRegularFields(); //FIXME: get from begin except for time + CTraceEventFormat::SRegularFields rf = GetRegularFields(); // FIXME: get from begin except for time for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->TaskEnd(*pThreadRecord->pTask, rf, false); @@ -480,7 +480,7 @@ void task_end(const __itt_domain *pDomain) { pThreadRecord->pTask = prev; } -void Counter(const __itt_domain *pDomain, __itt_string_handle *pName, double value, __itt_clock_domain* clock_domain, unsigned long long timestamp) { +void Counter(const __itt_domain* pDomain, __itt_string_handle* pName, double value, __itt_clock_domain* clock_domain, unsigned long long timestamp) { CTraceEventFormat::SRegularFields rf = GetRegularFields(clock_domain, timestamp); for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { @@ -488,37 +488,34 @@ void Counter(const __itt_domain *pDomain, __itt_string_handle *pName, double val } } -void counter_inc_delta_v3(const __itt_domain *pDomain, __itt_string_handle *pName, unsigned long long delta) { +void counter_inc_delta_v3(const __itt_domain* pDomain, __itt_string_handle* pName, unsigned long long delta) { ITT_FUNCTION_STAT(); - Counter(pDomain, pName, double(delta)); // NOLINT + Counter(pDomain, pName, double(delta)); } void FixCounter(__itt_counter_info_t* pCounter) { - pCounter->extra2 = new SDomainName{ - UNICODE_AGNOSTIC(domain_create)(pCounter->domainA), - UNICODE_AGNOSTIC(string_handle_create)(pCounter->nameA) - }; + pCounter->extra2 = new SDomainName {UNICODE_AGNOSTIC(domain_create)(pCounter->domainA), UNICODE_AGNOSTIC(string_handle_create)(pCounter->nameA)}; for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->CreateCounter(reinterpret_cast<__itt_counter>(pCounter)); } } -__itt_counter ITTAPI UNICODE_AGNOSTIC(counter_create_typed)(const char *name, const char *domain, __itt_metadata_type type) { +__itt_counter ITTAPI UNICODE_AGNOSTIC(counter_create_typed)(const char* name, const char* domain, __itt_metadata_type type) { ITT_FUNCTION_STAT(); if (!name || !domain) return nullptr; - VerbosePrint("%s: name=%s domain=%s type=%d\n", __FUNCTION__, name, domain, (int)type); // NOLINT + VerbosePrint("%s: name=%s domain=%s type=%d\n", __FUNCTION__, name, domain, (int)type); __itt_counter_info_t *h_tail = NULL, *h = NULL; CIttLocker locker; __itt_global* pGlobal = GetITTGlobal(); for (h_tail = NULL, h = pGlobal->counter_list; h != NULL; h_tail = h, h = h->next) { - if (h->nameA != NULL && h->type == type && !__itt_fstrcmp(h->nameA, name) && ((h->domainA == NULL && domain == NULL) || - (h->domainA != NULL && domain != NULL && !__itt_fstrcmp(h->domainA, domain)))) - break; + if (h->nameA != NULL && h->type == type && !__itt_fstrcmp(h->nameA, name) && + ((h->domainA == NULL && domain == NULL) || (h->domainA != NULL && domain != NULL && !__itt_fstrcmp(h->domainA, domain)))) + break; } if (!h) { NEW_COUNTER_A(pGlobal, h, h_tail, name, domain, type); @@ -529,44 +526,36 @@ __itt_counter ITTAPI UNICODE_AGNOSTIC(counter_create_typed)(const char *name, co } #ifdef _WIN32 -__itt_counter counter_create_typedW(const wchar_t *name, const wchar_t *domain, __itt_metadata_type type) { +__itt_counter counter_create_typedW(const wchar_t* name, const wchar_t* domain, __itt_metadata_type type) { return UNICODE_AGNOSTIC(counter_create_typed)(W2L(name).c_str(), W2L(domain).c_str(), type); } #endif -__itt_counter UNICODE_AGNOSTIC(counter_create)(const char *name, const char *domain) { +__itt_counter UNICODE_AGNOSTIC(counter_create)(const char* name, const char* domain) { ITT_FUNCTION_STAT(); return UNICODE_AGNOSTIC(counter_create_typed)(name, domain, __itt_metadata_double); } #ifdef _WIN32 -__itt_counter counter_createW(const wchar_t *name, const wchar_t *domain) { +__itt_counter counter_createW(const wchar_t* name, const wchar_t* domain) { return UNICODE_AGNOSTIC(counter_create)(W2L(name).c_str(), W2L(domain).c_str()); } #endif -template +template double Convert(void* ptr) { return static_cast(*reinterpret_cast(ptr)); } -typedef double(*FConvert)(void* ptr); +typedef double (*FConvert)(void* ptr); FConvert g_MetatypeFormatConverter[] = { - nullptr, - Convert, - Convert, - Convert, - Convert, - Convert, - Convert, - Convert, - Convert, + nullptr, Convert, Convert, Convert, Convert, Convert, Convert, Convert, Convert, }; -void counter_set_value_ex(__itt_counter id, __itt_clock_domain *clock_domain, unsigned long long timestamp, void *value_ptr) { +void counter_set_value_ex(__itt_counter id, __itt_clock_domain* clock_domain, unsigned long long timestamp, void* value_ptr) { ITT_FUNCTION_STAT(); if (id->type < __itt_metadata_u64 || id->type > __itt_metadata_double) { - VerbosePrint("%s: weird type: %d stack: %s\n", __FUNCTION__, (int)id->type, GetStackString().c_str()); // NOLINT + VerbosePrint("%s: weird type: %d stack: %s\n", __FUNCTION__, (int)id->type, GetStackString().c_str()); return; } double val = g_MetatypeFormatConverter[id->type](value_ptr); @@ -574,12 +563,12 @@ void counter_set_value_ex(__itt_counter id, __itt_clock_domain *clock_domain, un Counter(pDomainName->pDomain, pDomainName->pName, val, clock_domain, timestamp); } -void counter_set_value(__itt_counter id, void *value_ptr) { +void counter_set_value(__itt_counter id, void* value_ptr) { ITT_FUNCTION_STAT(); counter_set_value_ex(id, nullptr, 0, value_ptr); } -void UNICODE_AGNOSTIC(sync_create)(void *addr, const char *objtype, const char *objname, int attribute) { +void UNICODE_AGNOSTIC(sync_create)(void* addr, const char* objtype, const char* objname, int attribute) { ITT_FUNCTION_STAT(); std::string name((attribute == __itt_attr_mutex) ? "mutex:" : "barrier:"); @@ -590,85 +579,85 @@ void UNICODE_AGNOSTIC(sync_create)(void *addr, const char *objtype, const char * __itt_id id = __itt_id_make(addr, 0); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - WriteRecord(ERecordType::ObjectNew, SRecord{rf, *g_pIntelSEAPIDomain, id, __itt_null, pName}); + WriteRecord(ERecordType::ObjectNew, SRecord {rf, *g_pIntelSEAPIDomain, id, __itt_null, pName}); } #ifdef _WIN32 -void sync_createW(void *addr, const wchar_t *objtype, const wchar_t *objname, int attribute) { +void sync_createW(void* addr, const wchar_t* objtype, const wchar_t* objname, int attribute) { UNICODE_AGNOSTIC(sync_create)(addr, W2L(objtype).c_str(), W2L(objname).c_str(), attribute); } #endif -void sync_destroy(void *addr) { +void sync_destroy(void* addr) { ITT_FUNCTION_STAT(); __itt_id id = __itt_id_make(addr, 0); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - WriteRecord(ERecordType::ObjectDelete, SRecord{rf, *g_pIntelSEAPIDomain, id, __itt_null}); + WriteRecord(ERecordType::ObjectDelete, SRecord {rf, *g_pIntelSEAPIDomain, id, __itt_null}); } -inline void SyncState(void * addr, const char * state) { +inline void SyncState(void* addr, const char* state) { ITT_FUNCTION_STAT(); __itt_id id = __itt_id_make(addr, 0); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - WriteRecord(ERecordType::ObjectSnapshot, SRecord{rf, *g_pIntelSEAPIDomain, id, __itt_null, nullptr, nullptr, state, strlen(state)}); + WriteRecord(ERecordType::ObjectSnapshot, SRecord {rf, *g_pIntelSEAPIDomain, id, __itt_null, nullptr, nullptr, state, strlen(state)}); } -void UNICODE_AGNOSTIC(sync_rename)(void * addr, const char * name) { +void UNICODE_AGNOSTIC(sync_rename)(void* addr, const char* name) { ITT_FUNCTION_STAT(); SyncState(addr, (std::string("name=") + name).c_str()); } #ifdef _WIN32 -void sync_renameW(void * addr, const wchar_t * name) { +void sync_renameW(void* addr, const wchar_t* name) { UNICODE_AGNOSTIC(sync_rename)(addr, W2L(name).c_str()); } #endif -void sync_prepare(void *addr) { +void sync_prepare(void* addr) { ITT_FUNCTION_STAT(); SyncState(addr, "state=prepare"); } -void sync_cancel(void *addr) { +void sync_cancel(void* addr) { ITT_FUNCTION_STAT(); SyncState(addr, "state=cancel"); } -void sync_acquired(void *addr) { +void sync_acquired(void* addr) { ITT_FUNCTION_STAT(); SyncState(addr, "state=acquired"); } -void sync_releasing(void *addr) { +void sync_releasing(void* addr) { ITT_FUNCTION_STAT(); SyncState(addr, "state=releasing"); } -//region is the same as frame only explicitly named -void region_begin(const __itt_domain *pDomain, __itt_id id, __itt_id parentid, const __itt_string_handle *pName) { +// region is the same as frame only explicitly named +void region_begin(const __itt_domain* pDomain, __itt_id id, __itt_id parentid, const __itt_string_handle* pName) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - WriteRecord(ERecordType::BeginFrame, SRecord{rf, *pDomain, id, parentid, pName}); + WriteRecord(ERecordType::BeginFrame, SRecord {rf, *pDomain, id, parentid, pName}); } -void region_end(const __itt_domain *pDomain, __itt_id id) { +void region_end(const __itt_domain* pDomain, __itt_id id) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - WriteRecord(ERecordType::EndFrame, SRecord{rf, *pDomain, id, __itt_null}); + WriteRecord(ERecordType::EndFrame, SRecord {rf, *pDomain, id, __itt_null}); } __itt_clock_domain* clock_domain_create(__itt_get_clock_info_fn fn, void* fn_data) { ITT_FUNCTION_STAT(); CIttLocker lock; __itt_domain* pDomain = g_pIntelSEAPIDomain; - DomainExtra* pDomainExtra = (DomainExtra*)pDomain->extra2; // NOLINT + DomainExtra* pDomainExtra = (DomainExtra*)pDomain->extra2; __itt_clock_domain** ppClockDomain = &pDomainExtra->pClockDomain; while (*ppClockDomain && (*ppClockDomain)->next) { ppClockDomain = &(*ppClockDomain)->next; @@ -679,9 +668,9 @@ __itt_clock_domain* clock_domain_create(__itt_get_clock_info_fn fn, void* fn_dat fn(&ci, fn_data); uint64_t now2 = CTraceEventFormat::GetRegularFields().nanoseconds; - *ppClockDomain = new __itt_clock_domain{ + *ppClockDomain = new __itt_clock_domain { ci, fn, fn_data, 0, - new uint64_t((now1 + now2) / 2) //let's keep current time point in extra2 + new uint64_t((now1 + now2) / 2) // let's keep current time point in extra2 }; return *ppClockDomain; @@ -690,25 +679,22 @@ __itt_clock_domain* clock_domain_create(__itt_get_clock_info_fn fn, void* fn_dat void clock_domain_reset() { ITT_FUNCTION_STAT(); - TraverseDomains([](__itt_domain& domain){ - DomainExtra* pDomainExtra = (DomainExtra*)domain.extra2; // NOLINT - if (!pDomainExtra) return; + TraverseDomains([](__itt_domain& domain) { + DomainExtra* pDomainExtra = (DomainExtra*)domain.extra2; + if (!pDomainExtra) + return; __itt_clock_domain* pClockDomain = pDomainExtra->pClockDomain; while (pClockDomain) { uint64_t now1 = CTraceEventFormat::GetRegularFields().nanoseconds; pClockDomain->fn(&pClockDomain->info, pClockDomain->fn_data); uint64_t now2 = CTraceEventFormat::GetRegularFields().nanoseconds; - *(uint64_t*)pClockDomain->extra2 = (now1 + now2) / 2; // NOLINT + *(uint64_t*)pClockDomain->extra2 = (now1 + now2) / 2; pClockDomain = pClockDomain->next; } }); } -void task_begin_ex(const __itt_domain* pDomain, - __itt_clock_domain* clock_domain, - unsigned long long timestamp, - __itt_id taskid, - __itt_id parentid, +void task_begin_ex(const __itt_domain* pDomain, __itt_clock_domain* clock_domain, unsigned long long timestamp, __itt_id taskid, __itt_id parentid, __itt_string_handle* pName) { ITT_FUNCTION_STAT(); @@ -716,12 +702,12 @@ void task_begin_ex(const __itt_domain* pDomain, CTraceEventFormat::SRegularFields rf = GetRegularFields(clock_domain, timestamp); - pThreadRecord->pTask = placement_new(STaskDescriptor) { - pThreadRecord->pTask, //chaining the previous task inside - rf, - pDomain, pName, - taskid, parentid - }; // NOLINT + pThreadRecord->pTask = placement_new(STaskDescriptor) {pThreadRecord->pTask, // chaining the previous task inside + rf, + pDomain, + pName, + taskid, + parentid}; for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->TaskBegin(*pThreadRecord->pTask, false); @@ -746,14 +732,14 @@ void task_end_ex(const __itt_domain* pDomain, __itt_clock_domain* clock_domain, pThreadRecord->pTask = prev; } -void id_create(const __itt_domain *pDomain, __itt_id id) { +void id_create(const __itt_domain* pDomain, __itt_id id) { ITT_FUNCTION_STAT(); - //noting to do here yet + // noting to do here yet } -void id_destroy(const __itt_domain *pDomain, __itt_id id) { +void id_destroy(const __itt_domain* pDomain, __itt_id id) { ITT_FUNCTION_STAT(); - //noting to do here yet + // noting to do here yet } void set_track(__itt_track* track) { @@ -764,12 +750,11 @@ void set_track(__itt_track* track) { int64_t g_lastPseudoThread = -1; int64_t g_lastPseudoProcess = -1; - __itt_track_group* track_group_create(__itt_string_handle* pName, __itt_track_group_type track_group_type) { ITT_FUNCTION_STAT(); CIttLocker lock; __itt_domain* pDomain = g_pIntelSEAPIDomain; - DomainExtra* pDomainExtra = (DomainExtra*)pDomain->extra2; // NOLINT + DomainExtra* pDomainExtra = (DomainExtra*)pDomain->extra2; __itt_track_group** ppTrackGroup = &pDomainExtra->pTrackGroup; while (*ppTrackGroup && (*ppTrackGroup)->next) { if ((*ppTrackGroup)->name == pName) @@ -779,8 +764,8 @@ __itt_track_group* track_group_create(__itt_string_handle* pName, __itt_track_gr if (pName) { WriteGroupName(g_lastPseudoProcess, pName->strA); } - //zero name means current process - return *ppTrackGroup = new __itt_track_group{ pName, nullptr, track_group_type, int(pName ? g_lastPseudoProcess-- : g_PID) }; // NOLINT + // zero name means current process + return *ppTrackGroup = new __itt_track_group {pName, nullptr, track_group_type, int(pName ? g_lastPseudoProcess-- : g_PID)}; } __itt_track* track_create(__itt_track_group* track_group, __itt_string_handle* name, __itt_track_type track_type) { @@ -798,13 +783,13 @@ __itt_track* track_create(__itt_track_group* track_group, __itt_string_handle* n ppTrack = &(*ppTrack)->next; } - CTraceEventFormat::SRegularFields* pRF = new CTraceEventFormat::SRegularFields{int64_t(track_group->extra1), g_lastPseudoThread--}; + CTraceEventFormat::SRegularFields* pRF = new CTraceEventFormat::SRegularFields {int64_t(track_group->extra1), g_lastPseudoThread--}; for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->SetThreadName(*pRF, name->strA); } - return *ppTrack = new __itt_track{name, track_group, track_type, 0, pRF}; + return *ppTrack = new __itt_track {name, track_group, track_type, 0, pRF}; } class COverlapped { @@ -817,19 +802,16 @@ class COverlapped { } void Begin(__itt_id taskid, const CTraceEventFormat::SRegularFields& rf, const __itt_domain* domain, __itt_string_handle* name, __itt_id parentid) { - m_map[taskid].reset(placement_new(STaskDescriptor){ - nullptr, //chaining the previous task inside - rf, - domain, name, - taskid, parentid - }, placement_free); + m_map[taskid].reset(placement_new(STaskDescriptor) {nullptr, // chaining the previous task inside + rf, domain, name, taskid, parentid}, + placement_free); for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->TaskBegin(*m_map[taskid], true); } } - bool AddArg(const __itt_domain *domain, __itt_id id, __itt_string_handle *key, const char *data, size_t length) { + bool AddArg(const __itt_domain* domain, __itt_id id, __itt_string_handle* key, const char* data, size_t length) { TTaskMap::iterator it = m_map.find(id); if (m_map.end() == it) return false; @@ -839,7 +821,7 @@ class COverlapped { return true; } - bool AddArg(const __itt_domain *domain, __itt_id id, __itt_string_handle *key, double value) { + bool AddArg(const __itt_domain* domain, __itt_id id, __itt_string_handle* key, double value) { TTaskMap::iterator it = m_map.find(id); if (m_map.end() == it) return false; @@ -851,7 +833,8 @@ class COverlapped { void End(__itt_id taskid, const CTraceEventFormat::SRegularFields& rf, const __itt_domain* domain) { TTaskMap::iterator it = m_map.find(taskid); - if (m_map.end() == it) return; + if (m_map.end() == it) + return; for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->TaskEnd(*m_map[taskid], rf, true); } @@ -859,7 +842,7 @@ class COverlapped { } static void FinishAll() { - TraverseThreadRecords([](SThreadRecord& record){ + TraverseThreadRecords([](SThreadRecord& record) { if (record.pOverlapped) record.pOverlapped->Finish(); }); @@ -880,11 +863,7 @@ class COverlapped { TTaskMap m_map; }; -void task_begin_overlapped_ex(const __itt_domain* pDomain, - __itt_clock_domain* clock_domain, - unsigned long long timestamp, - __itt_id taskid, - __itt_id parentid, +void task_begin_overlapped_ex(const __itt_domain* pDomain, __itt_clock_domain* clock_domain, unsigned long long timestamp, __itt_id taskid, __itt_id parentid, __itt_string_handle* pName) { ITT_FUNCTION_STAT(); @@ -903,7 +882,7 @@ void task_end_overlapped_ex(const __itt_domain* pDomain, __itt_clock_domain* clo COverlapped::Get().End(taskid, GetRegularFields(clock_domain, timestamp), pDomain); } -void task_end_overlapped(const __itt_domain *pDomain, __itt_id taskid) { +void task_end_overlapped(const __itt_domain* pDomain, __itt_id taskid) { ITT_FUNCTION_STAT(); task_end_overlapped_ex(pDomain, nullptr, 0, taskid); @@ -911,13 +890,13 @@ void task_end_overlapped(const __itt_domain *pDomain, __itt_id taskid) { std::map<__itt_id, __itt_string_handle*> g_namedIds; -void SetIdName(const __itt_id& id, const char *data) { +void SetIdName(const __itt_id& id, const char* data) { CIttLocker lock; g_namedIds[id] = UNICODE_AGNOSTIC(string_handle_create)(data); } -template -void MetadataAdd(const __itt_domain *pDomain, __itt_id id, __itt_string_handle *pKey, Args ... args) { +template +void MetadataAdd(const __itt_domain* pDomain, __itt_id id, __itt_string_handle* pKey, Args... args) { if (id.d1 || id.d2) { SThreadRecord* pThreadRecord = GetThreadRecord(); if (!COverlapped::Get().AddArg(pDomain, id, pKey, args...) && pThreadRecord->pTask && pThreadRecord->pTask->id == id) { @@ -928,7 +907,7 @@ void MetadataAdd(const __itt_domain *pDomain, __itt_id id, __itt_string_handle * } } -void UNICODE_AGNOSTIC(metadata_str_add)(const __itt_domain *pDomain, __itt_id id, __itt_string_handle *pKey, const char *data, size_t length) { +void UNICODE_AGNOSTIC(metadata_str_add)(const __itt_domain* pDomain, __itt_id id, __itt_string_handle* pKey, const char* data, size_t length) { ITT_FUNCTION_STAT(); if (id == __itt_null) { @@ -961,12 +940,12 @@ void UNICODE_AGNOSTIC(metadata_str_add)(const __itt_domain *pDomain, __itt_id id } #ifdef _WIN32 -void metadata_str_addW(const __itt_domain *pDomain, __itt_id id, __itt_string_handle *pKey, const wchar_t *data, size_t length) { +void metadata_str_addW(const __itt_domain* pDomain, __itt_id id, __itt_string_handle* pKey, const wchar_t* data, size_t length) { UNICODE_AGNOSTIC(metadata_str_add)(pDomain, id, pKey, W2L(data).c_str(), length); } #endif -void metadata_add(const __itt_domain *pDomain, __itt_id id, __itt_string_handle *pKey, __itt_metadata_type type, size_t count, void *data) { +void metadata_add(const __itt_domain* pDomain, __itt_id id, __itt_string_handle* pKey, __itt_metadata_type type, size_t count, void* data) { ITT_FUNCTION_STAT(); if (id.d1 || id.d2) { @@ -976,9 +955,9 @@ void metadata_add(const __itt_domain *pDomain, __itt_id id, __itt_string_handle MetadataAdd(pDomain, id, pKey, res); } else { if (count) - MetadataAdd(pDomain, id, pKey, (const char*)data, count); //raw data with size // NOLINT + MetadataAdd(pDomain, id, pKey, (const char*)data, count); // raw data with size else - MetadataAdd(pDomain, id, pKey, (double)(uint64_t)data); //just pointer, convert it to number // NOLINT + MetadataAdd(pDomain, id, pKey, (double)(uint64_t)data); // just pointer, convert it to number } } } else { @@ -993,26 +972,23 @@ const char* api_version(void) { return "IntelSEAPI"; } -void frame_begin_v3(const __itt_domain *pDomain, __itt_id *id) { +void frame_begin_v3(const __itt_domain* pDomain, __itt_id* id) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - WriteRecord(ERecordType::BeginFrame, SRecord{rf, *pDomain, id ? *id : __itt_null, __itt_null}); + WriteRecord(ERecordType::BeginFrame, SRecord {rf, *pDomain, id ? *id : __itt_null, __itt_null}); } -void frame_end_v3(const __itt_domain *pDomain, __itt_id *id) { +void frame_end_v3(const __itt_domain* pDomain, __itt_id* id) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(); - WriteRecord(ERecordType::EndFrame, SRecord{rf, *pDomain, id ? *id : __itt_null, __itt_null}); + WriteRecord(ERecordType::EndFrame, SRecord {rf, *pDomain, id ? *id : __itt_null, __itt_null}); } -__itt_frame_t* UNICODE_AGNOSTIC(frame_create)(const char *domain) { +__itt_frame_t* UNICODE_AGNOSTIC(frame_create)(const char* domain) { ITT_FUNCTION_STAT(); - return new __itt_frame_t{ - UNICODE_AGNOSTIC(domain_create)(domain), - __itt_id_make(const_cast(domain), 0) - }; + return new __itt_frame_t {UNICODE_AGNOSTIC(domain_create)(domain), __itt_id_make(const_cast(domain), 0)}; } #ifdef _WIN32 @@ -1031,16 +1007,16 @@ void frame_end(__itt_frame_t* frame) { frame_end_v3(frame->pDomain, &frame->id); } -void frame_submit_v3(const __itt_domain *pDomain, __itt_id *pId, __itt_timestamp begin, __itt_timestamp end) { +void frame_submit_v3(const __itt_domain* pDomain, __itt_id* pId, __itt_timestamp begin, __itt_timestamp end) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(); if (__itt_timestamp_none == end) end = rf.nanoseconds; - const __itt_string_handle *pName = nullptr; + const __itt_string_handle* pName = nullptr; if (pId) { if (pId->d3) { - pName = reinterpret_cast<__itt_string_handle *>(pId->d3); + pName = reinterpret_cast<__itt_string_handle*>(pId->d3); } else { CIttLocker lock; auto it = g_namedIds.find(*pId); @@ -1051,9 +1027,9 @@ void frame_submit_v3(const __itt_domain *pDomain, __itt_id *pId, __itt_timestamp } } rf.nanoseconds = begin; - WriteRecord(ERecordType::BeginFrame, SRecord{ rf, *pDomain, pId ? *pId : __itt_null, __itt_null, pName }); + WriteRecord(ERecordType::BeginFrame, SRecord {rf, *pDomain, pId ? *pId : __itt_null, __itt_null, pName}); rf.nanoseconds = end; - WriteRecord(ERecordType::EndFrame, SRecord{rf, *pDomain, pId ? *pId : __itt_null, __itt_null}); + WriteRecord(ERecordType::EndFrame, SRecord {rf, *pDomain, pId ? *pId : __itt_null, __itt_null}); } __itt_timestamp get_timestamp() { @@ -1067,7 +1043,7 @@ void Pause() { pGlobal->state = __itt_collection_paused; ___itt_domain* pDomain = pGlobal->domain_list; while (pDomain) { - pDomain->flags = 0; //this flag is analyzed by static part of ITT to decide where to call dynamic part or not + pDomain->flags = 0; // this flag is analyzed by static part of ITT to decide where to call dynamic part or not pDomain = pDomain->next; } pGlobal = pGlobal->next; @@ -1089,7 +1065,7 @@ void Resume() { while (pGlobal) { ___itt_domain* pDomain = pGlobal->domain_list; while (pDomain) { - pDomain->flags = 1; //this flag is analyzed by static part of ITT to decide where to call dynamic part or not + pDomain->flags = 1; // this flag is analyzed by static part of ITT to decide where to call dynamic part or not pDomain = pDomain->next; } pGlobal->state = __itt_collection_normal; @@ -1105,15 +1081,11 @@ void resume() { Resume(); } -using TRelations = __itt_string_handle* [__itt_relation_is_predecessor_to + 1]; -//it's not static member of function to avoid racing -TRelations g_relations = {}; //will be filled in InitSEA +using TRelations = __itt_string_handle * [__itt_relation_is_predecessor_to + 1]; +// it's not static member of function to avoid racing +TRelations g_relations = {}; // will be filled in InitSEA -void relation_add_ex(const __itt_domain *pDomain, - __itt_clock_domain* clock_domain, - unsigned long long timestamp, - __itt_id head, - __itt_relation relation, +void relation_add_ex(const __itt_domain* pDomain, __itt_clock_domain* clock_domain, unsigned long long timestamp, __itt_id head, __itt_relation relation, __itt_id tail) { ITT_FUNCTION_STAT(); CTraceEventFormat::SRegularFields rf = GetRegularFields(clock_domain, timestamp); @@ -1123,20 +1095,17 @@ void relation_add_ex(const __itt_domain *pDomain, } } -void relation_add_to_current(const __itt_domain *pDomain, __itt_relation relation, __itt_id tail) { +void relation_add_to_current(const __itt_domain* pDomain, __itt_relation relation, __itt_id tail) { ITT_FUNCTION_STAT(); relation_add_ex(pDomain, nullptr, 0, __itt_null, relation, tail); } -void relation_add(const __itt_domain *pDomain, __itt_id head, __itt_relation relation, __itt_id tail) { +void relation_add(const __itt_domain* pDomain, __itt_id head, __itt_relation relation, __itt_id tail) { ITT_FUNCTION_STAT(); relation_add_ex(pDomain, nullptr, 0, head, relation, tail); } -void relation_add_to_current_ex(const __itt_domain *pDomain, - __itt_clock_domain* clock_domain, - unsigned long long timestamp, - __itt_relation relation, +void relation_add_to_current_ex(const __itt_domain* pDomain, __itt_clock_domain* clock_domain, unsigned long long timestamp, __itt_relation relation, __itt_id tail) { ITT_FUNCTION_STAT(); relation_add_ex(pDomain, clock_domain, timestamp, __itt_null, relation, tail); @@ -1151,11 +1120,7 @@ struct SHeapFunction { __itt_heap_function ITTAPI UNICODE_AGNOSTIC(heap_function_create)(const char* name, const char* domain) { ITT_FUNCTION_STAT(); std::string counter_name = std::string(name) + ":ALL(bytes)"; - return new SHeapFunction { - UNICODE_AGNOSTIC(domain_create)(domain), - name, - UNICODE_AGNOSTIC(string_handle_create)(counter_name.c_str()) - }; + return new SHeapFunction {UNICODE_AGNOSTIC(domain_create)(domain), name, UNICODE_AGNOSTIC(string_handle_create)(counter_name.c_str())}; } #ifdef _WIN32 @@ -1168,7 +1133,7 @@ class CMemoryTracker { protected: TCritSec m_cs; - typedef std::pair TDomainString; + typedef std::pair TDomainString; struct SNode { struct SMemory { @@ -1181,17 +1146,17 @@ class CMemoryTracker { SNode m_tree; std::map> m_size_map; - typedef std::pair<__itt_string_handle*, size_t/*count*/> TBlockData; - std::map m_counter_map; + typedef std::pair<__itt_string_handle*, size_t /*count*/> TBlockData; + std::map m_counter_map; bool m_bInitialized = false; public: - CMemoryTracker() - : m_bInitialized(true) {} + CMemoryTracker(): m_bInitialized(true) {} void Alloc(SHeapFunction* pHeapFunction, const void* addr, size_t size) { static bool bMemCount = !!(GetFeatureSet() & sfMemCounters); - if (!m_bInitialized) return; + if (!m_bInitialized) + return; for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { g_handlers[i]->Alloc(GetRegularFields(), addr, size, pHeapFunction->pDomain->nameA, pHeapFunction->name.c_str()); @@ -1215,7 +1180,7 @@ class CMemoryTracker { } } if (bMemCount) { - Counter(pHeapFunction->pDomain, block.first, double(block.second)); //report current count for this size // NOLINT + Counter(pHeapFunction->pDomain, block.first, double(block.second)); // report current count for this size } } @@ -1239,7 +1204,7 @@ class CMemoryTracker { stack.pop(); } } - SNode::SMemory & mem = pNode->memory[size]; + SNode::SMemory& mem = pNode->memory[size]; mem.current_amount += delta; if (mem.current_amount > mem.max_amount) mem.max_amount = mem.current_amount; @@ -1259,12 +1224,12 @@ class CMemoryTracker { if (bMemCount) { auto it = m_counter_map.find(size); if (m_counter_map.end() == it) - return; //how come? + return; // how come? else --it->second.second; - Counter(pHeapFunction->pDomain, it->second.first, double(it->second.second)); // NOLINT + Counter(pHeapFunction->pDomain, it->second.first, double(it->second.second)); } - if (pNode) //if we missed allocation, we don't care about freeing + if (pNode) // if we missed allocation, we don't care about freeing UpdateAllocation(size, -1, pNode); } for (size_t i = 0; (i < MAX_HANDLERS) && g_handlers[i]; ++i) { @@ -1279,7 +1244,7 @@ class CMemoryTracker { WriteNode(m_tree); } - template + template void WriteMem(T value) { WriteMemStat(&value, sizeof(T)); } @@ -1287,15 +1252,15 @@ class CMemoryTracker { void WriteNode(const SNode& node) { WriteMem((uint32_t)node.memory.size()); for (const auto& pair : node.memory) { - WriteMem((uint32_t)pair.first); //size - WriteMem(pair.second.current_amount); //SNode::SMemory - WriteMem((uint32_t)pair.second.max_amount); //SNode::SMemory + WriteMem((uint32_t)pair.first); // size + WriteMem(pair.second.current_amount); // SNode::SMemory + WriteMem((uint32_t)pair.second.max_amount); // SNode::SMemory } WriteMem((uint32_t)node.chilren.size()); for (const auto& pair : node.chilren) { const TDomainString& domain_string = pair.first; - WriteMem((const void*)domain_string.first); //domain - WriteMem((const void*)domain_string.second); //string + WriteMem((const void*)domain_string.first); // domain + WriteMem((const void*)domain_string.second); // string WriteNode(pair.second); } } @@ -1329,7 +1294,7 @@ __itt_domain* get_events_domain() { return s_pEvents; } -__itt_event UNICODE_AGNOSTIC(event_create)(const char *name, int namelen) { +__itt_event UNICODE_AGNOSTIC(event_create)(const char* name, int namelen) { ITT_FUNCTION_STAT(); __itt_domain* pEvents = get_events_domain(); __itt_string_handle* pStr = UNICODE_AGNOSTIC(string_handle_create)(name); @@ -1353,7 +1318,7 @@ int event_end(__itt_event event) { } #ifdef _WIN32 -__itt_event ITTAPI event_createW(const wchar_t *name, int namelen) { +__itt_event ITTAPI event_createW(const wchar_t* name, int namelen) { return UNICODE_AGNOSTIC(event_create)(W2L(name).c_str(), namelen); } #endif @@ -1366,172 +1331,179 @@ __itt_event ITTAPI event_createW(const wchar_t *name, int namelen) { #define _AW(macro, name) macro(UNICODE_AGNOSTIC(name)) WIN(macro(ITT_JOIN(name, W))) -#define ORIGINAL_FUNCTIONS()\ - ITT_STUB_IMPL_ORIG(UNICODE_AGNOSTIC(domain_create))\ -WIN(ITT_STUB_IMPL_ORIG(domain_createW))\ - ITT_STUB_IMPL_ORIG(UNICODE_AGNOSTIC(string_handle_create))\ -WIN(ITT_STUB_IMPL_ORIG(string_handle_createW)) - -#define API_MAP()\ -_AW(ITT_STUB_IMPL, thread_set_name)\ - ITT_STUB_IMPL(task_begin)\ - ITT_STUB_IMPL(task_begin_fn)\ - ITT_STUB_IMPL(task_end)\ -_AW(ITT_STUB_IMPL, metadata_str_add)\ - ITT_STUB_IMPL(marker)\ - ITT_STUB_IMPL(marker_ex)\ - ITT_STUB_IMPL(counter_inc_delta_v3)\ -_AW(ITT_STUB_IMPL, counter_create)\ -_AW(ITT_STUB_IMPL, counter_create_typed)\ - ITT_STUB_IMPL(counter_set_value)\ - ITT_STUB_IMPL(counter_set_value_ex)\ - ITT_STUB_IMPL(clock_domain_create)\ - ITT_STUB_IMPL(clock_domain_reset)\ - ITT_STUB_IMPL(task_begin_ex)\ - ITT_STUB_IMPL(task_end_ex)\ - ITT_STUB_IMPL(id_create)\ - ITT_STUB_IMPL(set_track)\ - ITT_STUB_IMPL(track_create)\ - ITT_STUB_IMPL(track_group_create)\ - ITT_STUB_IMPL(task_begin_overlapped)\ - ITT_STUB_IMPL(task_begin_overlapped_ex)\ - ITT_STUB_IMPL(task_end_overlapped)\ - ITT_STUB_IMPL(task_end_overlapped_ex)\ - ITT_STUB_IMPL(id_destroy)\ - ITT_STUB_IMPL(api_version)\ - ITT_STUB_IMPL(frame_begin_v3)\ - ITT_STUB_IMPL(frame_end_v3)\ - ITT_STUB_IMPL(frame_submit_v3)\ -_AW(ITT_STUB_IMPL, frame_create)\ - ITT_STUB_IMPL(frame_begin)\ - ITT_STUB_IMPL(frame_end)\ - ITT_STUB_IMPL(region_begin)\ - ITT_STUB_IMPL(region_end)\ - ITT_STUB_IMPL(pause)\ - ITT_STUB_IMPL(resume)\ - ITT_STUB_IMPL(get_timestamp)\ - ITT_STUB_IMPL(metadata_add)\ -_AW(ITT_STUB_IMPL, sync_create)\ - ITT_STUB_IMPL(sync_destroy)\ - ITT_STUB_IMPL(sync_acquired)\ - ITT_STUB_IMPL(sync_releasing)\ -_AW(ITT_STUB_IMPL, sync_rename)\ - ITT_STUB_IMPL(sync_prepare)\ - ITT_STUB_IMPL(sync_cancel)\ - ITT_STUB_IMPL(relation_add_to_current)\ - ITT_STUB_IMPL(relation_add)\ - ITT_STUB_IMPL(relation_add_to_current_ex)\ - ITT_STUB_IMPL(relation_add_ex)\ -_AW(ITT_STUB_IMPL, heap_function_create)\ - ITT_STUB_IMPL(heap_allocate_begin)\ - ITT_STUB_IMPL(heap_allocate_end)\ - ITT_STUB_IMPL(heap_free_begin)\ - ITT_STUB_IMPL(heap_free_end)\ -_AW(ITT_STUB_IMPL, event_create)\ -WIN(_AW(ITT_STUB_IMPL, event_create))\ - ITT_STUB_IMPL(event_start)\ - ITT_STUB_IMPL(event_end)\ - ORIGINAL_FUNCTIONS()\ - ITT_STUB_NO_IMPL(thread_ignore)\ -_AW(ITT_STUB_NO_IMPL, thr_name_set)\ - ITT_STUB_NO_IMPL(thr_ignore)\ - ITT_STUB_NO_IMPL(counter_inc_delta)\ - ITT_STUB_NO_IMPL(enable_attach)\ - ITT_STUB_NO_IMPL(suppress_push)\ - ITT_STUB_NO_IMPL(suppress_pop)\ - ITT_STUB_NO_IMPL(suppress_mark_range)\ - ITT_STUB_NO_IMPL(suppress_clear_range)\ - ITT_STUB_NO_IMPL(model_site_beginA)\ -WIN(ITT_STUB_NO_IMPL(model_site_beginW))\ - ITT_STUB_NO_IMPL(model_site_beginAL)\ - ITT_STUB_NO_IMPL(model_site_end)\ -_AW(ITT_STUB_NO_IMPL, model_task_begin)\ - ITT_STUB_NO_IMPL(model_task_end)\ - ITT_STUB_NO_IMPL(model_lock_acquire)\ - ITT_STUB_NO_IMPL(model_lock_release)\ - ITT_STUB_NO_IMPL(model_record_allocation)\ - ITT_STUB_NO_IMPL(model_record_deallocation)\ - ITT_STUB_NO_IMPL(model_induction_uses)\ - ITT_STUB_NO_IMPL(model_reduction_uses)\ - ITT_STUB_NO_IMPL(model_observe_uses)\ - ITT_STUB_NO_IMPL(model_clear_uses)\ - ITT_STUB_NO_IMPL(model_site_begin)\ - ITT_STUB_NO_IMPL(model_site_beginA)\ -WIN(ITT_STUB_NO_IMPL(model_site_beginW))\ - ITT_STUB_NO_IMPL(model_site_beginAL)\ - ITT_STUB_NO_IMPL(model_task_begin)\ - ITT_STUB_NO_IMPL(model_task_beginA)\ -WIN(ITT_STUB_NO_IMPL(model_task_beginW))\ - ITT_STUB_NO_IMPL(model_task_beginAL)\ - ITT_STUB_NO_IMPL(model_iteration_taskA)\ -WIN(ITT_STUB_NO_IMPL(model_iteration_taskW))\ - ITT_STUB_NO_IMPL(model_iteration_taskAL)\ - ITT_STUB_NO_IMPL(model_site_end_2)\ - ITT_STUB_NO_IMPL(model_task_end_2)\ - ITT_STUB_NO_IMPL(model_lock_acquire_2)\ - ITT_STUB_NO_IMPL(model_lock_release_2)\ - ITT_STUB_NO_IMPL(model_aggregate_task)\ - ITT_STUB_NO_IMPL(model_disable_push)\ - ITT_STUB_NO_IMPL(model_disable_pop)\ - ITT_STUB_NO_IMPL(heap_reallocate_begin)\ - ITT_STUB_NO_IMPL(heap_reallocate_end)\ - ITT_STUB_NO_IMPL(heap_internal_access_begin)\ - ITT_STUB_NO_IMPL(heap_internal_access_end)\ - ITT_STUB_NO_IMPL(heap_record_memory_growth_begin)\ - ITT_STUB_NO_IMPL(heap_record_memory_growth_end)\ - ITT_STUB_NO_IMPL(heap_reset_detection)\ - ITT_STUB_NO_IMPL(heap_record)\ - ITT_STUB_NO_IMPL(task_group)\ - ITT_STUB_NO_IMPL(counter_inc_v3)\ -_AW(ITT_STUB_NO_IMPL, sync_set_name)\ -_AW(ITT_STUB_NO_IMPL, notify_sync_name)\ - ITT_STUB_NO_IMPL(notify_sync_prepare)\ - ITT_STUB_NO_IMPL(notify_sync_cancel)\ - ITT_STUB_NO_IMPL(notify_sync_acquired)\ - ITT_STUB_NO_IMPL(notify_sync_releasing)\ - ITT_STUB_NO_IMPL(memory_read)\ - ITT_STUB_NO_IMPL(memory_write)\ - ITT_STUB_NO_IMPL(memory_update)\ - ITT_STUB_NO_IMPL(state_get)\ - ITT_STUB_NO_IMPL(state_set)\ - ITT_STUB_NO_IMPL(obj_mode_set)\ - ITT_STUB_NO_IMPL(thr_mode_set)\ - ITT_STUB_NO_IMPL(counter_destroy)\ - ITT_STUB_NO_IMPL(counter_inc)\ - ITT_STUB_NO_IMPL(counter_inc_v3)\ -_AW(ITT_STUB_NO_IMPL, mark_create)\ -_AW(ITT_STUB_NO_IMPL, mark)\ - ITT_STUB_NO_IMPL(mark_off)\ -_AW(ITT_STUB_NO_IMPL, mark_global)\ - ITT_STUB_NO_IMPL(mark_global_off)\ - ITT_STUB_NO_IMPL(stack_caller_create)\ - ITT_STUB_NO_IMPL(stack_caller_destroy)\ - ITT_STUB_NO_IMPL(stack_callee_enter)\ - ITT_STUB_NO_IMPL(stack_callee_leave)\ - ITT_STUB_NO_IMPL(id_create_ex)\ - ITT_STUB_NO_IMPL(id_destroy_ex)\ - ITT_STUB_NO_IMPL(task_begin_fn_ex)\ - ITT_STUB_NO_IMPL(metadata_add_with_scope)\ -_AW(ITT_STUB_NO_IMPL, metadata_str_add_with_scope)\ -_AW(ITT_STUB_NO_IMPL, av_save) +#define ORIGINAL_FUNCTIONS() \ + ITT_STUB_IMPL_ORIG(UNICODE_AGNOSTIC(domain_create)) \ + WIN(ITT_STUB_IMPL_ORIG(domain_createW)) \ + ITT_STUB_IMPL_ORIG(UNICODE_AGNOSTIC(string_handle_create)) \ + WIN(ITT_STUB_IMPL_ORIG(string_handle_createW)) + +#define API_MAP() \ + _AW(ITT_STUB_IMPL, thread_set_name) \ + ITT_STUB_IMPL(task_begin) \ + ITT_STUB_IMPL(task_begin_fn) \ + ITT_STUB_IMPL(task_end) \ + _AW(ITT_STUB_IMPL, metadata_str_add) \ + ITT_STUB_IMPL(marker) \ + ITT_STUB_IMPL(marker_ex) \ + ITT_STUB_IMPL(counter_inc_delta_v3) \ + _AW(ITT_STUB_IMPL, counter_create) \ + _AW(ITT_STUB_IMPL, counter_create_typed) \ + ITT_STUB_IMPL(counter_set_value) \ + ITT_STUB_IMPL(counter_set_value_ex) \ + ITT_STUB_IMPL(clock_domain_create) \ + ITT_STUB_IMPL(clock_domain_reset) \ + ITT_STUB_IMPL(task_begin_ex) \ + ITT_STUB_IMPL(task_end_ex) \ + ITT_STUB_IMPL(id_create) \ + ITT_STUB_IMPL(set_track) \ + ITT_STUB_IMPL(track_create) \ + ITT_STUB_IMPL(track_group_create) \ + ITT_STUB_IMPL(task_begin_overlapped) \ + ITT_STUB_IMPL(task_begin_overlapped_ex) \ + ITT_STUB_IMPL(task_end_overlapped) \ + ITT_STUB_IMPL(task_end_overlapped_ex) \ + ITT_STUB_IMPL(id_destroy) \ + ITT_STUB_IMPL(api_version) \ + ITT_STUB_IMPL(frame_begin_v3) \ + ITT_STUB_IMPL(frame_end_v3) \ + ITT_STUB_IMPL(frame_submit_v3) \ + _AW(ITT_STUB_IMPL, frame_create) \ + ITT_STUB_IMPL(frame_begin) \ + ITT_STUB_IMPL(frame_end) \ + ITT_STUB_IMPL(region_begin) \ + ITT_STUB_IMPL(region_end) \ + ITT_STUB_IMPL(pause) \ + ITT_STUB_IMPL(resume) \ + ITT_STUB_IMPL(get_timestamp) \ + ITT_STUB_IMPL(metadata_add) \ + _AW(ITT_STUB_IMPL, sync_create) \ + ITT_STUB_IMPL(sync_destroy) \ + ITT_STUB_IMPL(sync_acquired) \ + ITT_STUB_IMPL(sync_releasing) \ + _AW(ITT_STUB_IMPL, sync_rename) \ + ITT_STUB_IMPL(sync_prepare) \ + ITT_STUB_IMPL(sync_cancel) \ + ITT_STUB_IMPL(relation_add_to_current) \ + ITT_STUB_IMPL(relation_add) \ + ITT_STUB_IMPL(relation_add_to_current_ex) \ + ITT_STUB_IMPL(relation_add_ex) \ + _AW(ITT_STUB_IMPL, heap_function_create) \ + ITT_STUB_IMPL(heap_allocate_begin) \ + ITT_STUB_IMPL(heap_allocate_end) \ + ITT_STUB_IMPL(heap_free_begin) \ + ITT_STUB_IMPL(heap_free_end) \ + _AW(ITT_STUB_IMPL, event_create) \ + WIN(_AW(ITT_STUB_IMPL, event_create)) \ + ITT_STUB_IMPL(event_start) \ + ITT_STUB_IMPL(event_end) \ + ORIGINAL_FUNCTIONS() \ + ITT_STUB_NO_IMPL(thread_ignore) \ + _AW(ITT_STUB_NO_IMPL, thr_name_set) \ + ITT_STUB_NO_IMPL(thr_ignore) \ + ITT_STUB_NO_IMPL(counter_inc_delta) \ + ITT_STUB_NO_IMPL(enable_attach) \ + ITT_STUB_NO_IMPL(suppress_push) \ + ITT_STUB_NO_IMPL(suppress_pop) \ + ITT_STUB_NO_IMPL(suppress_mark_range) \ + ITT_STUB_NO_IMPL(suppress_clear_range) \ + ITT_STUB_NO_IMPL(model_site_beginA) \ + WIN(ITT_STUB_NO_IMPL(model_site_beginW)) \ + ITT_STUB_NO_IMPL(model_site_beginAL) \ + ITT_STUB_NO_IMPL(model_site_end) \ + _AW(ITT_STUB_NO_IMPL, model_task_begin) \ + ITT_STUB_NO_IMPL(model_task_end) \ + ITT_STUB_NO_IMPL(model_lock_acquire) \ + ITT_STUB_NO_IMPL(model_lock_release) \ + ITT_STUB_NO_IMPL(model_record_allocation) \ + ITT_STUB_NO_IMPL(model_record_deallocation) \ + ITT_STUB_NO_IMPL(model_induction_uses) \ + ITT_STUB_NO_IMPL(model_reduction_uses) \ + ITT_STUB_NO_IMPL(model_observe_uses) \ + ITT_STUB_NO_IMPL(model_clear_uses) \ + ITT_STUB_NO_IMPL(model_site_begin) \ + ITT_STUB_NO_IMPL(model_site_beginA) \ + WIN(ITT_STUB_NO_IMPL(model_site_beginW)) \ + ITT_STUB_NO_IMPL(model_site_beginAL) \ + ITT_STUB_NO_IMPL(model_task_begin) \ + ITT_STUB_NO_IMPL(model_task_beginA) \ + WIN(ITT_STUB_NO_IMPL(model_task_beginW)) \ + ITT_STUB_NO_IMPL(model_task_beginAL) \ + ITT_STUB_NO_IMPL(model_iteration_taskA) \ + WIN(ITT_STUB_NO_IMPL(model_iteration_taskW)) \ + ITT_STUB_NO_IMPL(model_iteration_taskAL) \ + ITT_STUB_NO_IMPL(model_site_end_2) \ + ITT_STUB_NO_IMPL(model_task_end_2) \ + ITT_STUB_NO_IMPL(model_lock_acquire_2) \ + ITT_STUB_NO_IMPL(model_lock_release_2) \ + ITT_STUB_NO_IMPL(model_aggregate_task) \ + ITT_STUB_NO_IMPL(model_disable_push) \ + ITT_STUB_NO_IMPL(model_disable_pop) \ + ITT_STUB_NO_IMPL(heap_reallocate_begin) \ + ITT_STUB_NO_IMPL(heap_reallocate_end) \ + ITT_STUB_NO_IMPL(heap_internal_access_begin) \ + ITT_STUB_NO_IMPL(heap_internal_access_end) \ + ITT_STUB_NO_IMPL(heap_record_memory_growth_begin) \ + ITT_STUB_NO_IMPL(heap_record_memory_growth_end) \ + ITT_STUB_NO_IMPL(heap_reset_detection) \ + ITT_STUB_NO_IMPL(heap_record) \ + ITT_STUB_NO_IMPL(task_group) \ + ITT_STUB_NO_IMPL(counter_inc_v3) \ + _AW(ITT_STUB_NO_IMPL, sync_set_name) \ + _AW(ITT_STUB_NO_IMPL, notify_sync_name) \ + ITT_STUB_NO_IMPL(notify_sync_prepare) \ + ITT_STUB_NO_IMPL(notify_sync_cancel) \ + ITT_STUB_NO_IMPL(notify_sync_acquired) \ + ITT_STUB_NO_IMPL(notify_sync_releasing) \ + ITT_STUB_NO_IMPL(memory_read) \ + ITT_STUB_NO_IMPL(memory_write) \ + ITT_STUB_NO_IMPL(memory_update) \ + ITT_STUB_NO_IMPL(state_get) \ + ITT_STUB_NO_IMPL(state_set) \ + ITT_STUB_NO_IMPL(obj_mode_set) \ + ITT_STUB_NO_IMPL(thr_mode_set) \ + ITT_STUB_NO_IMPL(counter_destroy) \ + ITT_STUB_NO_IMPL(counter_inc) \ + ITT_STUB_NO_IMPL(counter_inc_v3) \ + _AW(ITT_STUB_NO_IMPL, mark_create) \ + _AW(ITT_STUB_NO_IMPL, mark) \ + ITT_STUB_NO_IMPL(mark_off) \ + _AW(ITT_STUB_NO_IMPL, mark_global) \ + ITT_STUB_NO_IMPL(mark_global_off) \ + ITT_STUB_NO_IMPL(stack_caller_create) \ + ITT_STUB_NO_IMPL(stack_caller_destroy) \ + ITT_STUB_NO_IMPL(stack_callee_enter) \ + ITT_STUB_NO_IMPL(stack_callee_leave) \ + ITT_STUB_NO_IMPL(id_create_ex) \ + ITT_STUB_NO_IMPL(id_destroy_ex) \ + ITT_STUB_NO_IMPL(task_begin_fn_ex) \ + ITT_STUB_NO_IMPL(metadata_add_with_scope) \ + _AW(ITT_STUB_NO_IMPL, metadata_str_add_with_scope) \ + _AW(ITT_STUB_NO_IMPL, av_save) void FillApiList(__itt_api_info* api_list_ptr) { -#define ITT_STUB_IMPL(fn) if (0 == strcmp("__itt_" ITT_TO_STR(fn), api_list_ptr[i].name)) {*api_list_ptr[i].func_ptr = (void*)sea::fn; continue;} // NOLINT -#define ITT_STUB_IMPL_ORIG(name) ITT_STUB_IMPL(name) -#ifdef _DEBUG //dangerous stub that doesn't return anything (even when expected) but records the function call for statistics sake - #define ITT_STUB_NO_IMPL(fn) if (0 == strcmp("__itt_" ITT_TO_STR(fn), api_list_ptr[i].name)) { \ - struct local{ \ - static void stub(...) { CIttFnStat oIttFnStat("NO IMPL:\t" ITT_TO_STR(fn)); } \ - }; \ - *api_list_ptr[i].func_ptr = reinterpret_cast(local::stub); \ - continue; \ +#define ITT_STUB_IMPL(fn) \ + if (0 == strcmp("__itt_" ITT_TO_STR(fn), api_list_ptr[i].name)) { \ + *api_list_ptr[i].func_ptr = (void*)sea::fn; \ + continue; \ } +#define ITT_STUB_IMPL_ORIG(name) ITT_STUB_IMPL(name) +#ifdef _DEBUG // dangerous stub that doesn't return anything (even when expected) but records the function call for statistics sake + #define ITT_STUB_NO_IMPL(fn) \ + if (0 == strcmp("__itt_" ITT_TO_STR(fn), api_list_ptr[i].name)) { \ + struct local { \ + static void stub(...) { \ + CIttFnStat oIttFnStat("NO IMPL:\t" ITT_TO_STR(fn)); \ + } \ + }; \ + *api_list_ptr[i].func_ptr = reinterpret_cast(local::stub); \ + continue; \ + } #else #define ITT_STUB_NO_IMPL(fn) #endif for (int i = 0; (api_list_ptr[i].name != NULL) && (*api_list_ptr[i].name != 0); ++i) { - API_MAP(); //continue is called inside when function is found + API_MAP(); // continue is called inside when function is found VerbosePrint("Not bound: %s\n", api_list_ptr[i].name); } #undef ITT_STUB_IMPL @@ -1543,26 +1515,12 @@ uint64_t GetFeatureSet() { static std::string env = get_environ_value("INTEL_SEA_FEATURES"); static std::string save = GetSavePath(); - static uint64_t features = - (std::string::npos != env.find("mfp") ? sfMetricsFrameworkPublisher : 0) - | - (std::string::npos != env.find("mfc") ? sfMetricsFrameworkConsumer : 0) - | - (save.size() ? sfSEA : 0) - | - (std::string::npos != env.find("stack") ? sfStack : 0) - | - (std::string::npos != env.find("vscv") ? sfConcurrencyVisualizer : 0) - | - (std::string::npos != env.find("rmtr") ? sfRemotery : 0) - | - (std::string::npos != env.find("brflr") ? sfBrofiler : 0) - | - (std::string::npos != env.find("memstat") ? sfMemStat : 0) - | - (std::string::npos != env.find("memcount") ? sfMemCounters : 0) - | - (std::string::npos != env.find("rad") ? sfRadTelemetry : 0); + static uint64_t features = (std::string::npos != env.find("mfp") ? sfMetricsFrameworkPublisher : 0) | + (std::string::npos != env.find("mfc") ? sfMetricsFrameworkConsumer : 0) | (save.size() ? sfSEA : 0) | + (std::string::npos != env.find("stack") ? sfStack : 0) | (std::string::npos != env.find("vscv") ? sfConcurrencyVisualizer : 0) | + (std::string::npos != env.find("rmtr") ? sfRemotery : 0) | (std::string::npos != env.find("brflr") ? sfBrofiler : 0) | + (std::string::npos != env.find("memstat") ? sfMemStat : 0) | (std::string::npos != env.find("memcount") ? sfMemCounters : 0) | + (std::string::npos != env.find("rad") ? sfRadTelemetry : 0); return features; } @@ -1574,25 +1532,24 @@ void TraverseDomains(const std::function& callback) { } void TraverseThreadRecords(const std::function& callback) { - TraverseDomains( - [&](___itt_domain& domain){ - if (DomainExtra* pDomainExtra = reinterpret_cast(domain.extra2)) { - for (SThreadRecord* pThreadRecord = pDomainExtra->pThreadRecords; pThreadRecord; pThreadRecord = pThreadRecord->pNext) - callback(*pThreadRecord); - } - }); + TraverseDomains([&](___itt_domain& domain) { + if (DomainExtra* pDomainExtra = reinterpret_cast(domain.extra2)) { + for (SThreadRecord* pThreadRecord = pDomainExtra->pThreadRecords; pThreadRecord; pThreadRecord = pThreadRecord->pNext) + callback(*pThreadRecord); + } + }); } void SetCutName(const std::string& name) { CIttLocker lock; g_spCutName = std::make_shared(Escape4Path(name)); - TraverseThreadRecords([](SThreadRecord& record){ - record.nSpeedupCounter = (std::numeric_limits::max)(); //changing number is safer than changing pointer to last recorder + TraverseThreadRecords([](SThreadRecord& record) { + record.nSpeedupCounter = (std::numeric_limits::max)(); // changing number is safer than changing pointer to last recorder }); } -//in global scope variables are initialized from main thread -//that's the simplest way to get tid of Main Thread +// in global scope variables are initialized from main thread +// that's the simplest way to get tid of Main Thread CTraceEventFormat::SRegularFields g_rfMainThread = CTraceEventFormat::GetRegularFields(); void SetFolder(const std::string& path) { @@ -1603,26 +1560,26 @@ void SetFolder(const std::string& path) { if (g_savepath == new_path) return; - //To move into a new folder we must make sure next things: - //1. per thread files are closed and reopened with new folder - //2. strings are reported to new folder - //3. domain paths are updated, so that any newly created files would be in right place - //4. modules are reported to new folder - //5. write process info to the new trace + // To move into a new folder we must make sure next things: + // 1. per thread files are closed and reopened with new folder + // 2. strings are reported to new folder + // 3. domain paths are updated, so that any newly created files would be in right place + // 4. modules are reported to new folder + // 5. write process info to the new trace g_savepath = new_path; for (__itt_global* pGlobal = GetITTGlobal(); pGlobal; pGlobal = pGlobal->next) { - ReportModule(pGlobal); //4. we move to new folder and need to notify modules there + ReportModule(pGlobal); // 4. we move to new folder and need to notify modules there for (___itt_domain* pDomain = pGlobal->domain_list; pDomain; pDomain = pDomain->next) { DomainExtra* pDomainExtra = reinterpret_cast(pDomain->extra2); if (pDomainExtra) { - pDomainExtra->strDomainPath = g_savepath.size() ? GetDir(g_savepath, Escape4Path(pDomain->nameA)) : ""; //3. + pDomainExtra->strDomainPath = g_savepath.size() ? GetDir(g_savepath, Escape4Path(pDomain->nameA)) : ""; // 3. pDomainExtra->bHasDomainPath = !pDomainExtra->strDomainPath.empty(); for (SThreadRecord* pThreadRecord = pDomainExtra->pThreadRecords; pThreadRecord; pThreadRecord = pThreadRecord->pNext) { if (g_savepath.size()) { - pThreadRecord->bRemoveFiles = true; //1. on next attempt to get a file it will recreate all files with new paths + pThreadRecord->bRemoveFiles = true; // 1. on next attempt to get a file it will recreate all files with new paths } else { pThreadRecord->files.clear(); } @@ -1632,54 +1589,55 @@ void SetFolder(const std::string& path) { if (g_savepath.size()) { for (___itt_string_handle* pString = pGlobal->string_list; pString; pString = pString->next) - sea::ReportString(const_cast<__itt_string_handle *>(pString)); //2. making string to be reported again - into the new folder + sea::ReportString(const_cast<__itt_string_handle*>(pString)); // 2. making string to be reported again - into the new folder } } if (g_savepath.size()) - GetSEARecorder().Init(g_rfMainThread); //5. + GetSEARecorder().Init(g_rfMainThread); // 5. if (g_savepath.size()) g_features |= sfSEA; else - g_features &=~sfSEA; + g_features &= ~sfSEA; } void SetRing(uint64_t nanoseconds) { if (g_nRingBuffer == nanoseconds) return; g_nRingBuffer = nanoseconds; - TraverseThreadRecords([](SThreadRecord& record){ + TraverseThreadRecords([](SThreadRecord& record) { record.bRemoveFiles = true; }); } #ifdef __linux__ - bool WriteFTraceTimeSyncMarkers() { - int fd = open("/sys/kernel/debug/tracing/trace_marker", O_WRONLY); - if (-1 == fd) { - VerbosePrint("Warning: failed to access /sys/kernel/debug/tracing/trace_marker\n"); +bool WriteFTraceTimeSyncMarkers() { + int fd = open("/sys/kernel/debug/tracing/trace_marker", O_WRONLY); + if (-1 == fd) { + VerbosePrint("Warning: failed to access /sys/kernel/debug/tracing/trace_marker\n"); + return false; + } + for (size_t i = 0; i < 5; ++i) { + char buff[100] = {}; + int size = snprintf(buff, sizeof(buff), "IntelSEAPI_Time_Sync: %llu\n", (long long unsigned int)CTraceEventFormat::GetTimeNS()); + int res = write(fd, buff, (unsigned int)size); + if (-1 == res) return false; - } - for (size_t i = 0; i < 5; ++i) { - char buff[100] = {}; - int size = snprintf(buff, sizeof(buff), "IntelSEAPI_Time_Sync: %llu\n", (long long unsigned int)CTraceEventFormat::GetTimeNS()); - int res = write(fd, buff, (unsigned int)size); - if (-1 == res) return false; - } - close(fd); - return true; } + close(fd); + return true; +} #endif #ifdef __APPLE__ - bool WriteKTraceTimeSyncMarkers() { - for (size_t i = 0; i < 5; ++i) { - kdebug_signpost(APPSDBG_CODE(DBG_MACH_CHUD, 0x15EA), CTraceEventFormat::GetTimeNS(), 0x15EA15EA, 0x15EA15EA, 0x15EA15EA); - syscall(SYS_kdebug_trace, APPSDBG_CODE(DBG_MACH_CHUD, 0x15EA) | DBG_FUNC_NONE, CTraceEventFormat::GetTimeNS(), 0x15EA15EA, 0x15EA15EA, 0x15EA15EA); - } - return true; +bool WriteKTraceTimeSyncMarkers() { + for (size_t i = 0; i < 5; ++i) { + kdebug_signpost(APPSDBG_CODE(DBG_MACH_CHUD, 0x15EA), CTraceEventFormat::GetTimeNS(), 0x15EA15EA, 0x15EA15EA, 0x15EA15EA); + syscall(SYS_kdebug_trace, APPSDBG_CODE(DBG_MACH_CHUD, 0x15EA) | DBG_FUNC_NONE, CTraceEventFormat::GetTimeNS(), 0x15EA15EA, 0x15EA15EA, 0x15EA15EA); } + return true; +} #endif void InitSEA() { @@ -1692,26 +1650,25 @@ void InitSEA() { const char* relations[] = { nullptr, - ("dependent_on"), /**< "A is dependent on B" means that A cannot start until B completes */ - ("sibling_of"), /**< "A is sibling of B" means that A and B were created as a group */ - ("parent_of"), /**< "A is parent of B" means that A created B */ - ("continuation_of"), /**< "A is continuation of B" means that A assumes the dependencies of B */ - ("child_of"), /**< "A is child of B" means that A was created by B (inverse of is_parent_of) */ - ("continued_by"), /**< "A is continued by B" means that B assumes the dependencies of A (inverse of is_continuation_of) */ - ("predecessor_to") /**< "A is predecessor to B" means that B cannot start until A completes (inverse of is_dependent_on) */ + ("dependent_on"), /**< "A is dependent on B" means that A cannot start until B completes */ + ("sibling_of"), /**< "A is sibling of B" means that A and B were created as a group */ + ("parent_of"), /**< "A is parent of B" means that A created B */ + ("continuation_of"), /**< "A is continuation of B" means that A assumes the dependencies of B */ + ("child_of"), /**< "A is child of B" means that A was created by B (inverse of is_parent_of) */ + ("continued_by"), /**< "A is continued by B" means that B assumes the dependencies of A (inverse of is_continuation_of) */ + ("predecessor_to") /**< "A is predecessor to B" means that B cannot start until A completes (inverse of is_dependent_on) */ }; size_t i = 0; for (auto ptr : relations) g_relations[i++] = ptr ? UNICODE_AGNOSTIC(string_handle_create)(ptr) : nullptr; - GetSEARecorder().Init(g_rfMainThread); -#ifdef _WIN32 //adding information about process explicitly +#ifdef _WIN32 // adding information about process explicitly ReportModule(GetModuleHandle(NULL)); #else - //XXX ReportModule(dlopen(NULL, RTLD_LAZY)); + // XXX ReportModule(dlopen(NULL, RTLD_LAZY)); #endif #if defined(_DEBUG) && defined(STANDARD_SOURCES) && 0 void Test(); @@ -1733,11 +1690,13 @@ void FinitaLaComedia() { VerbosePrint("Call statistics:\n"); const auto& map = CIttFnStat::GetStats(); for (const auto& pair : map) { - VerbosePrint("%d\t%s\n", (int)pair.second, pair.first.c_str()); // NOLINT + VerbosePrint("%d\t%s\n", (int)pair.second, pair.first.c_str()); } } - TraverseThreadRecords([](SThreadRecord& tr){tr.files.clear();}); + TraverseThreadRecords([](SThreadRecord& tr) { + tr.files.clear(); + }); } #ifdef __linux__ WriteFTraceTimeSyncMarkers(); @@ -1745,120 +1704,81 @@ void FinitaLaComedia() { g_oDomainFilter.Finish(); } -} //namespace sea +} // namespace sea extern "C" { - SEA_EXPORT void* itt_create_domain(const char* str) { - return UNICODE_AGNOSTIC(__itt_domain_create)(str); - } - SEA_EXPORT void* itt_create_string(const char* str) { - return UNICODE_AGNOSTIC(__itt_string_handle_create)(str); - } - SEA_EXPORT void itt_marker(void* domain, uint64_t id, void* name, int scope, uint64_t timestamp) { - __itt_marker_ex( - reinterpret_cast<__itt_domain*>(domain), - nullptr, //zero clock domain means that given time is already a correct timestamp - timestamp, - id ? __itt_id_make(domain, id) : __itt_null, - reinterpret_cast<__itt_string_handle*>(name), - (__itt_scope)scope); - } - - SEA_EXPORT void itt_task_begin(void* domain, uint64_t id, uint64_t parent, void* name, uint64_t timestamp) { - __itt_task_begin_ex( - reinterpret_cast<__itt_domain*>(domain), - nullptr, - timestamp, - id ? __itt_id_make(domain, id) : __itt_null, - parent ? __itt_id_make(domain, parent) : __itt_null, - reinterpret_cast<__itt_string_handle*>(name)); - } +SEA_EXPORT void* itt_create_domain(const char* str) { + return UNICODE_AGNOSTIC(__itt_domain_create)(str); +} +SEA_EXPORT void* itt_create_string(const char* str) { + return UNICODE_AGNOSTIC(__itt_string_handle_create)(str); +} +SEA_EXPORT void itt_marker(void* domain, uint64_t id, void* name, int scope, uint64_t timestamp) { + __itt_marker_ex(reinterpret_cast<__itt_domain*>(domain), + nullptr, // zero clock domain means that given time is already a correct timestamp + timestamp, id ? __itt_id_make(domain, id) : __itt_null, reinterpret_cast<__itt_string_handle*>(name), (__itt_scope)scope); +} - SEA_EXPORT void itt_task_begin_overlapped(void* domain, uint64_t id, uint64_t parent, void* name, uint64_t timestamp) { - __itt_task_begin_overlapped_ex( - reinterpret_cast<__itt_domain*>(domain), - nullptr, - timestamp, - __itt_id_make(domain, id), - parent ? __itt_id_make(domain, parent) : __itt_null, - reinterpret_cast<__itt_string_handle*>(name)); - } +SEA_EXPORT void itt_task_begin(void* domain, uint64_t id, uint64_t parent, void* name, uint64_t timestamp) { + __itt_task_begin_ex(reinterpret_cast<__itt_domain*>(domain), nullptr, timestamp, id ? __itt_id_make(domain, id) : __itt_null, + parent ? __itt_id_make(domain, parent) : __itt_null, reinterpret_cast<__itt_string_handle*>(name)); +} +SEA_EXPORT void itt_task_begin_overlapped(void* domain, uint64_t id, uint64_t parent, void* name, uint64_t timestamp) { + __itt_task_begin_overlapped_ex(reinterpret_cast<__itt_domain*>(domain), nullptr, timestamp, __itt_id_make(domain, id), + parent ? __itt_id_make(domain, parent) : __itt_null, reinterpret_cast<__itt_string_handle*>(name)); +} - SEA_EXPORT void itt_metadata_add(void* domain, uint64_t id, void* name, double value) { - __itt_metadata_add( - reinterpret_cast<__itt_domain*>(domain), - id ? __itt_id_make(domain, id) : __itt_null, - reinterpret_cast<__itt_string_handle*>(name), - __itt_metadata_double, 1, - &value); - } +SEA_EXPORT void itt_metadata_add(void* domain, uint64_t id, void* name, double value) { + __itt_metadata_add(reinterpret_cast<__itt_domain*>(domain), id ? __itt_id_make(domain, id) : __itt_null, reinterpret_cast<__itt_string_handle*>(name), + __itt_metadata_double, 1, &value); +} - SEA_EXPORT void itt_metadata_add_str(void* domain, uint64_t id, void* name, const char* value) { - __itt_metadata_str_add( - reinterpret_cast<__itt_domain*>(domain), - id ? __itt_id_make(domain, id) : __itt_null, - reinterpret_cast<__itt_string_handle*>(name), - value, - 0); - } +SEA_EXPORT void itt_metadata_add_str(void* domain, uint64_t id, void* name, const char* value) { + __itt_metadata_str_add(reinterpret_cast<__itt_domain*>(domain), id ? __itt_id_make(domain, id) : __itt_null, reinterpret_cast<__itt_string_handle*>(name), + value, 0); +} - SEA_EXPORT void itt_metadata_add_blob(void* domain, uint64_t id, void* name, const void* value, uint32_t size) { - __itt_metadata_add( - reinterpret_cast<__itt_domain*>(domain), - id ? __itt_id_make(domain, id) : __itt_null, - reinterpret_cast<__itt_string_handle*>(name), - __itt_metadata_unknown, size, - const_cast(value)); - } +SEA_EXPORT void itt_metadata_add_blob(void* domain, uint64_t id, void* name, const void* value, uint32_t size) { + __itt_metadata_add(reinterpret_cast<__itt_domain*>(domain), id ? __itt_id_make(domain, id) : __itt_null, reinterpret_cast<__itt_string_handle*>(name), + __itt_metadata_unknown, size, const_cast(value)); +} - SEA_EXPORT void itt_task_end(void* domain, uint64_t timestamp) { - __itt_task_end_ex( - reinterpret_cast<__itt_domain*>(domain), - nullptr, - timestamp); - } +SEA_EXPORT void itt_task_end(void* domain, uint64_t timestamp) { + __itt_task_end_ex(reinterpret_cast<__itt_domain*>(domain), nullptr, timestamp); +} - SEA_EXPORT void itt_task_end_overlapped(void* domain, uint64_t timestamp, uint64_t taskid) { - __itt_task_end_overlapped_ex( - reinterpret_cast<__itt_domain*>(domain), - nullptr, - timestamp, - __itt_id_make(domain, taskid)); - } +SEA_EXPORT void itt_task_end_overlapped(void* domain, uint64_t timestamp, uint64_t taskid) { + __itt_task_end_overlapped_ex(reinterpret_cast<__itt_domain*>(domain), nullptr, timestamp, __itt_id_make(domain, taskid)); +} - SEA_EXPORT void* itt_counter_create(void* domain, void* name) { - return __itt_counter_create_typed( - reinterpret_cast<__itt_string_handle*>(name)->strA, - reinterpret_cast<__itt_domain*>(domain)->nameA, - __itt_metadata_u64); - } +SEA_EXPORT void* itt_counter_create(void* domain, void* name) { + return __itt_counter_create_typed(reinterpret_cast<__itt_string_handle*>(name)->strA, reinterpret_cast<__itt_domain*>(domain)->nameA, __itt_metadata_u64); +} - SEA_EXPORT void itt_set_counter(void* id, double value, uint64_t timestamp) { - __itt_counter_set_value_ex(reinterpret_cast<__itt_counter>(id), nullptr, timestamp, &value); - } +SEA_EXPORT void itt_set_counter(void* id, double value, uint64_t timestamp) { + __itt_counter_set_value_ex(reinterpret_cast<__itt_counter>(id), nullptr, timestamp, &value); +} - SEA_EXPORT void* itt_create_track(const char* group, const char* track) { - return __itt_track_create( - __itt_track_group_create(((group) ? __itt_string_handle_create(group) : nullptr), __itt_track_group_type_normal), - __itt_string_handle_create(track), - __itt_track_type_normal); - } +SEA_EXPORT void* itt_create_track(const char* group, const char* track) { + return __itt_track_create(__itt_track_group_create(((group) ? __itt_string_handle_create(group) : nullptr), __itt_track_group_type_normal), + __itt_string_handle_create(track), __itt_track_type_normal); +} - SEA_EXPORT void itt_set_track(void* track) { - __itt_set_track(reinterpret_cast<__itt_track*>(track)); - } +SEA_EXPORT void itt_set_track(void* track) { + __itt_set_track(reinterpret_cast<__itt_track*>(track)); +} - SEA_EXPORT uint64_t itt_get_timestamp() { - return (uint64_t)__itt_get_timestamp(); - } +SEA_EXPORT uint64_t itt_get_timestamp() { + return (uint64_t)__itt_get_timestamp(); +} - SEA_EXPORT void itt_write_time_sync_markers() { +SEA_EXPORT void itt_write_time_sync_markers() { #ifdef __linux__ - sea::WriteFTraceTimeSyncMarkers(); + sea::WriteFTraceTimeSyncMarkers(); #endif #ifdef __APPLE__ - sea::WriteKTraceTimeSyncMarkers(); + sea::WriteKTraceTimeSyncMarkers(); #endif - } +} }; diff --git a/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.h b/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.h index 6be5fa975913c0..f9d763a639d9d6 100644 --- a/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.h +++ b/thirdparty/itt_collector/sea_itt_lib/IttNotifyStdSrc.h @@ -25,55 +25,53 @@ #ifdef _WIN32 #define SEA_EXPORT __declspec(dllexport) - #define _sprintf sprintf_s + #define _sprintf sprintf_s #else - #define SEA_EXPORT __attribute__ ((visibility ("default"))) - #define _sprintf sprintf + #define SEA_EXPORT __attribute__((visibility("default"))) + #define _sprintf sprintf #endif namespace sea { - bool IsVerboseMode(); +bool IsVerboseMode(); } #if defined(_WIN32) - #define VerbosePrint(...) { \ - if (sea::IsVerboseMode()) { \ - std::vector buff(1024); \ - sprintf_s(buff.data(), 1024, __VA_ARGS__); \ - OutputDebugStringA(buff.data()); \ - printf("%s", buff.data()); \ - } \ - } + #define VerbosePrint(...) \ + { \ + if (sea::IsVerboseMode()) { \ + std::vector buff(1024); \ + sprintf_s(buff.data(), 1024, __VA_ARGS__); \ + OutputDebugStringA(buff.data()); \ + printf("%s", buff.data()); \ + } \ + } #else - #define VerbosePrint(...) { \ - if (sea::IsVerboseMode()) \ - printf(__VA_ARGS__); \ - } + #define VerbosePrint(...) \ + { \ + if (sea::IsVerboseMode()) \ + printf(__VA_ARGS__); \ + } #endif -#include "Utils.h" -#include "TraceEventFormat.h" #include #include +#include "TraceEventFormat.h" +#include "Utils.h" __itt_global* GetITTGlobal(); extern __itt_domain* g_pIntelSEAPIDomain; - namespace sea { extern std::string g_savepath; extern uint64_t g_nAutoCut; #ifdef __linux -bool WriteFTraceTimeSyncMarkers(); //For Driver instrumentation see: http://lwn.net/Articles/379903/ +bool WriteFTraceTimeSyncMarkers(); // For Driver instrumentation see: http://lwn.net/Articles/379903/ #endif void InitSEA(); void FillApiList(__itt_api_info* pApiInfo); void FinitaLaComedia(); -void Counter(const __itt_domain *pDomain, - __itt_string_handle *pName, - double value, - __itt_clock_domain* clock_domain = nullptr, +void Counter(const __itt_domain* pDomain, __itt_string_handle* pName, double value, __itt_clock_domain* clock_domain = nullptr, unsigned long long timestamp = 0); __itt_clock_domain* clock_domain_create(__itt_get_clock_info_fn fn, void* fn_data); void SetCutName(const std::string& path); @@ -91,11 +89,11 @@ std::string GetDir(std::string path, const std::string& append = ""); } // namespace sea struct SDomainName { - __itt_domain *pDomain; - __itt_string_handle *pName; + __itt_domain* pDomain; + __itt_string_handle* pName; }; -struct ___itt_counter : public __itt_counter_info_t{}; +struct ___itt_counter : public __itt_counter_info_t {}; #include #define USE_PROBES @@ -104,34 +102,34 @@ struct ___itt_counter : public __itt_counter_info_t{}; #include "windows.h" #elif defined(__linux__) #ifndef USE_PROBES - __thread FILE* stdsrc_trace_info_t::pFile = nullptr; +__thread FILE* stdsrc_trace_info_t::pFile = nullptr; #endif #endif #ifdef _WIN32 #define UNICODE_AGNOSTIC(name) name##A - inline std::string W2L(const wchar_t* wstr) { - size_t len = lstrlenW(wstr); - char* dest = (char*)alloca(len + 2); // NOLINT - errno_t err = wcstombs_s(&len, dest, len + 1, wstr, len + 1); - return std::string(dest, dest + len); - } +inline std::string W2L(const wchar_t* wstr) { + size_t len = lstrlenW(wstr); + char* dest = (char*)alloca(len + 2); + errno_t err = wcstombs_s(&len, dest, len + 1, wstr, len + 1); + return std::string(dest, dest + len); +} - static_assert(sizeof(__itt_id) == 24, "sizeof(__itt_id) == 24"); - static_assert(sizeof(GUID) == 16, "sizeof(GUID) == 16"); +static_assert(sizeof(__itt_id) == 24, "sizeof(__itt_id) == 24"); +static_assert(sizeof(GUID) == 16, "sizeof(GUID) == 16"); - union IdCaster { - __itt_id from; //d3 is not used, so we fit d1 and d2 into 16 bytes - GUID to; - }; +union IdCaster { + __itt_id from; // d3 is not used, so we fit d1 and d2 into 16 bytes + GUID to; +}; #else #include - #define _strdup strdup + #define _strdup strdup #define UNICODE_AGNOSTIC(name) name #endif namespace sea { -__itt_counter UNICODE_AGNOSTIC(counter_create)(const char *name, const char *domain); +__itt_counter UNICODE_AGNOSTIC(counter_create)(const char* name, const char* domain); __itt_domain* UNICODE_AGNOSTIC(domain_create)(const char* name); __itt_string_handle* ITTAPI UNICODE_AGNOSTIC(string_handle_create)(const char* name); @@ -159,8 +157,8 @@ static const size_t MAX_HANDLERS = 10; struct STaskDescriptor { STaskDescriptor* prev; CTraceEventFormat::SRegularFields rf; - const __itt_domain *pDomain; - const __itt_string_handle *pName; + const __itt_domain* pDomain; + const __itt_string_handle* pName; __itt_id id; __itt_id parent; void* fn; @@ -172,7 +170,7 @@ struct STaskDescriptor { #ifdef TURBO_MODE uint64_t nMemCounter; - double *pDur; + double* pDur; #endif ~STaskDescriptor() { @@ -185,7 +183,6 @@ struct STaskDescriptor { } }; - struct IHandler { protected: static bool RegisterHandler(IHandler* pHandler); @@ -194,7 +191,7 @@ struct IHandler { m_cookie = cookie; } - template + template T& Cookie(STaskDescriptor& oTask, TArgs&... args) { if (!oTask.cookies[m_cookie].pCookie) { struct SDeleter { @@ -202,20 +199,13 @@ struct IHandler { placement_free(reinterpret_cast(ptr)); } }; - oTask.cookies[m_cookie] = STaskDescriptor::SCookie{placement_new(T)(args...), SDeleter::Deleter}; //consider placement new here! + oTask.cookies[m_cookie] = STaskDescriptor::SCookie {placement_new(T)(args...), SDeleter::Deleter}; // consider placement new here! } return *reinterpret_cast(oTask.cookies[m_cookie].pCookie); } const char* GetScope(__itt_scope theScope) { - static const char * scopes[] = { - "unknown", - "global", - "track_group", - "track", - "task", - "marker" - }; + static const char* scopes[] = {"unknown", "global", "track_group", "track", "task", "marker"}; return scopes[theScope]; } @@ -224,17 +214,17 @@ struct IHandler { struct SData { CTraceEventFormat::SRegularFields rf; SThreadRecord* pThreadRecord; - const __itt_domain *pDomain; + const __itt_domain* pDomain; const __itt_id& taskid; const __itt_id& parentid; - const __itt_string_handle *pName; + const __itt_string_handle* pName; }; - template + template static T* Register(bool bRegister) { T* pObject = nullptr; -#ifndef _DEBUG //register all in debug to discover all problems sooner - if (bRegister) //NOLINT +#ifndef _DEBUG // register all in debug to discover all problems sooner + if (bRegister) // NOLINT #endif { pObject = new T(); @@ -249,28 +239,25 @@ struct IHandler { virtual void Init(const CTraceEventFormat::SRegularFields& main) {} virtual void TaskBegin(STaskDescriptor& oTask, bool bOverlapped) {} - virtual void AddArg(STaskDescriptor& oTask, const __itt_string_handle *pKey, const char *data, size_t length) {} - virtual void AddArg(STaskDescriptor& oTask, const __itt_string_handle *pKey, double value) {} - virtual void AddRelation(const CTraceEventFormat::SRegularFields& rf, - const __itt_domain *pDomain, - __itt_id head, - __itt_string_handle* relation, + virtual void AddArg(STaskDescriptor& oTask, const __itt_string_handle* pKey, const char* data, size_t length) {} + virtual void AddArg(STaskDescriptor& oTask, const __itt_string_handle* pKey, double value) {} + virtual void AddRelation(const CTraceEventFormat::SRegularFields& rf, const __itt_domain* pDomain, __itt_id head, __itt_string_handle* relation, __itt_id tail) {} virtual void TaskEnd(STaskDescriptor& oTask, const CTraceEventFormat::SRegularFields& rf, bool bOverlapped) {} - virtual void Marker(const CTraceEventFormat::SRegularFields& rf, const __itt_domain *pDomain, __itt_id id, __itt_string_handle *pName, __itt_scope scope) {} + virtual void Marker(const CTraceEventFormat::SRegularFields& rf, const __itt_domain* pDomain, __itt_id id, __itt_string_handle* pName, __itt_scope scope) {} virtual void CreateCounter(const __itt_counter& id) {} - virtual void Counter(const CTraceEventFormat::SRegularFields& rf, const __itt_domain *pDomain, const __itt_string_handle *pName, double value) {} + virtual void Counter(const CTraceEventFormat::SRegularFields& rf, const __itt_domain* pDomain, const __itt_string_handle* pName, double value) {} virtual void SetThreadName(const CTraceEventFormat::SRegularFields& rf, const char* name) {} virtual void Alloc(const CTraceEventFormat::SRegularFields& rf, const void* addr, size_t size, const char* domain, const char* name) {} virtual void Free(const CTraceEventFormat::SRegularFields& rf, const void* addr, size_t size, const char* domain, const char* name) {} - virtual ~IHandler(){} + virtual ~IHandler() {} }; class COverlapped; struct SThreadRecord { - std::map files; + std::map files; bool bRemoveFiles = false; __itt_track* pTrack = nullptr; SThreadRecord* pNext = nullptr; @@ -281,40 +268,45 @@ struct SThreadRecord { const void* pLastDomain = nullptr; int nSpeedupCounter = 0; #ifdef TURBO_MODE - uint64_t nMemMoveCounter = 0; //updated every time memory window moves -#endif // TURBO_MODE + uint64_t nMemMoveCounter = 0; // updated every time memory window moves +#endif // TURBO_MODE }; void TraverseDomains(const std::function& callback); void TraverseThreadRecords(const std::function& callback); - void InitDomain(__itt_domain* pDomain); struct DomainExtra { - std::string strDomainPath; //always changed and accessed under lock - bool bHasDomainPath = false; //for light check of strDomainPath.empty() without lock - SThreadRecord* pThreadRecords = nullptr; //keeping track of thread records for later freeing + std::string strDomainPath; // always changed and accessed under lock + bool bHasDomainPath = false; // for light check of strDomainPath.empty() without lock + SThreadRecord* pThreadRecords = nullptr; // keeping track of thread records for later freeing __itt_clock_domain* pClockDomain = nullptr; __itt_track_group* pTrackGroup = nullptr; }; SThreadRecord* GetThreadRecord(); -#define CHECKRET(cond, res) {if (!(cond)) {VerbosePrint("Error: !(%s) at %s, %s:(%d)\n", #cond, __FUNCTION__, __FILE__, __LINE__); return res;}} - +#define CHECKRET(cond, res) \ + { \ + if (!(cond)) { \ + VerbosePrint("Error: !(%s) at %s, %s:(%d)\n", #cond, __FUNCTION__, __FILE__, __LINE__); \ + return res; \ + } \ + } class CIttLocker { __itt_global* m_pGlobal = nullptr; + public: CIttLocker(); ~CIttLocker(); }; #ifdef _WIN32 - const uint32_t FilePermissions = _S_IWRITE|_S_IWRITE; //read by user, write by user +const uint32_t FilePermissions = _S_IWRITE | _S_IWRITE; // read by user, write by user #else - const uint32_t FilePermissions = S_IRWXU | S_IRWXG | S_IRWXO; //read by all, write by all +const uint32_t FilePermissions = S_IRWXU | S_IRWXG | S_IRWXO; // read by all, write by all #endif -} //namespace sea +} // namespace sea diff --git a/thirdparty/itt_collector/sea_itt_lib/Recorder.cpp b/thirdparty/itt_collector/sea_itt_lib/Recorder.cpp index 1f40dc55978236..d977a11e893620 100644 --- a/thirdparty/itt_collector/sea_itt_lib/Recorder.cpp +++ b/thirdparty/itt_collector/sea_itt_lib/Recorder.cpp @@ -16,33 +16,33 @@ # **********************************************************************************************************************************************************************************************************************************************************************************************/ -#include "IttNotifyStdSrc.h" -#include -#include #include #include -#ifdef _WIN32 -#include -#include -#include +#include +#include +#include "IttNotifyStdSrc.h" -#define open crossopen -#define write _write -#define close _close -int crossopen(_In_z_ const char * _Filename, _In_ int _Openflag, int perm) { +#ifdef _WIN32 + #include + #include + #include + + #define open crossopen + #define write _write + #define close _close +int crossopen(_In_z_ const char* _Filename, _In_ int _Openflag, int perm) { int fd = 0; - _sopen_s(&fd, _Filename, _Openflag|_O_BINARY, _SH_DENYWR, perm); + _sopen_s(&fd, _Filename, _Openflag | _O_BINARY, _SH_DENYWR, perm); return fd; } -//FIXME: support wide char mode +// FIXME: support wide char mode #endif -CRecorder::CRecorder() - : m_pCurPos(nullptr) {} +CRecorder::CRecorder(): m_pCurPos(nullptr) {} -size_t ChunkSize = 1*1020*1024; +size_t ChunkSize = 1 * 1020 * 1024; bool CRecorder::Init(const std::string& path, uint64_t time, void* pCut) { Close(true); @@ -62,12 +62,12 @@ bool CRecorder::Init(const std::string& path, uint64_t time, void* pCut) { size_t CRecorder::CheckCapacity(size_t size) { #ifdef IN_MEMORY_RING - size_t nWroteBytes = (char*)m_pCurPos - (char*)m_pAlloc; // NOLINT + size_t nWroteBytes = (char*)m_pCurPos - (char*)m_pAlloc; if (nWroteBytes + size > m_nBufferSize) { if (m_pBackBuffer) VirtualFree(m_pBackBuffer, 0, MEM_RELEASE); - m_nBufferSize *= 2; //We grow the buffer each time to accommodate needs - m_pBackBuffer = m_pAlloc; //back buffer will always be half of m_nBufferSize + m_nBufferSize *= 2; // We grow the buffer each time to accommodate needs + m_pBackBuffer = m_pAlloc; // back buffer will always be half of m_nBufferSize m_nBackSize = nWroteBytes; m_pCurPos = m_pAlloc = VirtualAlloc(nullptr, m_nBufferSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); sea::GetThreadRecord()->nMemMoveCounter += 1; @@ -77,12 +77,12 @@ size_t CRecorder::CheckCapacity(size_t size) { #else if (!m_memmap) return 0; - size_t nWroteBytes = (char*)m_pCurPos - (char*)m_memmap->GetPtr(); // NOLINT + size_t nWroteBytes = (char*)m_pCurPos - (char*)m_memmap->GetPtr(); if (nWroteBytes + size > m_memmap->GetSize()) { m_pCurPos = m_memmap->Remap((std::max)(ChunkSize, size), m_nWroteTotal); -#ifdef TURBO_MODE + #ifdef TURBO_MODE sea::GetThreadRecord()->nMemMoveCounter += 1; -#endif + #endif if (!m_pCurPos) return 0; } @@ -91,10 +91,10 @@ size_t CRecorder::CheckCapacity(size_t size) { } void* CRecorder::Allocate(size_t size) { - //must be called only from one thread - void * pCurPos = m_pCurPos; + // must be called only from one thread + void* pCurPos = m_pCurPos; m_nWroteTotal += size; - m_pCurPos = (char*)m_pCurPos + size; // NOLINT + m_pCurPos = (char*)m_pCurPos + size; return pCurPos; } @@ -109,7 +109,7 @@ void CRecorder::Close(bool bSave) { if (m_pBackBuffer) res = write(fd, m_pBackBuffer, uint32_t(m_nBackSize)); if (m_pAlloc) - res = write(fd, m_pAlloc, uint32_t((char*)m_pCurPos - (char*)m_pAlloc)); // NOLINT + res = write(fd, m_pAlloc, uint32_t((char*)m_pCurPos - (char*)m_pAlloc)); close(fd); } if (m_pBackBuffer) @@ -117,11 +117,11 @@ void CRecorder::Close(bool bSave) { if (m_pAlloc) VirtualFree(m_pAlloc, 0, MEM_RELEASE); m_pBackBuffer = m_pAlloc = nullptr; -#else // IN_MEMORY_RING +#else // IN_MEMORY_RING if (m_memmap) m_memmap->Resize(m_nWroteTotal); m_memmap.reset(); -#endif // IN_MEMORY_RING +#endif // IN_MEMORY_RING m_pCurPos = nullptr; } @@ -129,7 +129,7 @@ CRecorder::~CRecorder() { Close(true); } -static_assert(sizeof(__itt_id) == 3*8, "sizeof(__itt_id) must be 3*8"); +static_assert(sizeof(__itt_id) == 3 * 8, "sizeof(__itt_id) must be 3*8"); static_assert(sizeof(CTraceEventFormat::SRegularFields().tid) == 8, "sizeof(tid) must be 8"); enum EFlags { @@ -144,19 +144,19 @@ enum EFlags { }; #pragma pack(push, 1) -//File tree is pid/domain/tid (pid is one per dll instance) +// File tree is pid/domain/tid (pid is one per dll instance) struct STinyRecord { uint64_t timestamp; ERecordType ert; - uint8_t flags; //EFlags + uint8_t flags; // EFlags }; #pragma pack(pop) static_assert(sizeof(STinyRecord) == 10, "SRecord must fit in 10 bytes"); -template +template inline T* WriteToBuff(CRecorder& recorder, const T& value) { - T* ptr = (T*)recorder.Allocate(sizeof(T)); // NOLINT + T* ptr = (T*)recorder.Allocate(sizeof(T)); if (ptr) *ptr = value; return ptr; @@ -164,104 +164,105 @@ inline T* WriteToBuff(CRecorder& recorder, const T& value) { namespace sea { - extern int64_t g_nRingBuffer; +extern int64_t g_nRingBuffer; - extern std::shared_ptr g_spCutName; +extern std::shared_ptr g_spCutName; - inline CRecorder* GetFile(const SRecord& record) { - DomainExtra* pDomainExtra = reinterpret_cast(record.domain.extra2); - if (!pDomainExtra || !pDomainExtra->bHasDomainPath) - return nullptr; +inline CRecorder* GetFile(const SRecord& record) { + DomainExtra* pDomainExtra = reinterpret_cast(record.domain.extra2); + if (!pDomainExtra || !pDomainExtra->bHasDomainPath) + return nullptr; - static thread_local SThreadRecord* pThreadRecord = nullptr; - if (!pThreadRecord) - pThreadRecord = GetThreadRecord(); + static thread_local SThreadRecord* pThreadRecord = nullptr; + if (!pThreadRecord) + pThreadRecord = GetThreadRecord(); - if (pThreadRecord->bRemoveFiles) { - pThreadRecord->pLastRecorder = nullptr; - pThreadRecord->pLastDomain = nullptr; - pThreadRecord->bRemoveFiles = false; - pThreadRecord->files.clear(); - } - //with very high probability the same thread will write into the same domain - if (pThreadRecord->pLastRecorder && (pThreadRecord->pLastDomain == record.domain.nameA) && (100 > pThreadRecord->nSpeedupCounter++)) - return reinterpret_cast(pThreadRecord->pLastRecorder); - pThreadRecord->nSpeedupCounter = 0; //we can't avoid checking ring size - pThreadRecord->pLastDomain = record.domain.nameA; - - auto it = pThreadRecord->files.find(record.domain.nameA); - CRecorder* pRecorder = nullptr; - if (it != pThreadRecord->files.end()) { - pRecorder = &it->second; - int64_t diff = record.rf.nanoseconds - pRecorder->GetCreationTime(); //timestamp can be in the past, it's ok - // just checking pointer of g_spCutName.get() is thread safe without any locks: we don't access internals. - // And if it's the same we work with the old path. - // but if it's changed we will lock and access the value below - bool bSameCut = pRecorder->SameCut(g_spCutName.get()); - if (bSameCut && (!g_nRingBuffer || (diff < g_nRingBuffer))) { - pThreadRecord->pLastRecorder = pRecorder; - return pRecorder; //normal flow - } - pRecorder->Close(!bSameCut); //time to create new file + if (pThreadRecord->bRemoveFiles) { + pThreadRecord->pLastRecorder = nullptr; + pThreadRecord->pLastDomain = nullptr; + pThreadRecord->bRemoveFiles = false; + pThreadRecord->files.clear(); + } + // with very high probability the same thread will write into the same domain + if (pThreadRecord->pLastRecorder && (pThreadRecord->pLastDomain == record.domain.nameA) && (100 > pThreadRecord->nSpeedupCounter++)) + return reinterpret_cast(pThreadRecord->pLastRecorder); + pThreadRecord->nSpeedupCounter = 0; // we can't avoid checking ring size + pThreadRecord->pLastDomain = record.domain.nameA; + + auto it = pThreadRecord->files.find(record.domain.nameA); + CRecorder* pRecorder = nullptr; + if (it != pThreadRecord->files.end()) { + pRecorder = &it->second; + int64_t diff = record.rf.nanoseconds - pRecorder->GetCreationTime(); // timestamp can be in the past, it's ok + // just checking pointer of g_spCutName.get() is thread safe without any locks: we don't access internals. + // And if it's the same we work with the old path. + // but if it's changed we will lock and access the value below + bool bSameCut = pRecorder->SameCut(g_spCutName.get()); + if (bSameCut && (!g_nRingBuffer || (diff < g_nRingBuffer))) { + pThreadRecord->pLastRecorder = pRecorder; + return pRecorder; // normal flow } + pRecorder->Close(!bSameCut); // time to create new file + } - if (!pRecorder) { - pRecorder = &pThreadRecord->files[record.domain.nameA]; - } - CIttLocker lock; //locking only on file creation - //this is theoretically possible because we check pDomainExtra->bHasDomainPath without lock above - if (pDomainExtra->strDomainPath.empty()) { - pThreadRecord->pLastRecorder = nullptr; - return nullptr; - } - std::shared_ptr spCutName = g_spCutName; - - CTraceEventFormat::SRegularFields rf = CTraceEventFormat::GetRegularFields(); - char path[1024] = {}; - _sprintf(path, "%s%llu%s%s.sea", - pDomainExtra->strDomainPath.c_str(), - (unsigned long long)rf.tid, - spCutName ? (std::string("!") + *spCutName).c_str() : "", - (g_nRingBuffer ? ((pRecorder->GetCount() % 2) ? "-1" : "-0") : "")); - try { - VerbosePrint("Opening: %s\n", path); - if (!pRecorder->Init(path, rf.nanoseconds, spCutName.get())) { - VerbosePrint("Failed to init recorder\n"); - pThreadRecord->files.erase(record.domain.nameA); - pRecorder = nullptr; - } - } catch (const std::exception& exc) { - VerbosePrint("Exception: %s\n", exc.what()); + if (!pRecorder) { + pRecorder = &pThreadRecord->files[record.domain.nameA]; + } + CIttLocker lock; // locking only on file creation + // this is theoretically possible because we check pDomainExtra->bHasDomainPath without lock above + if (pDomainExtra->strDomainPath.empty()) { + pThreadRecord->pLastRecorder = nullptr; + return nullptr; + } + std::shared_ptr spCutName = g_spCutName; + + CTraceEventFormat::SRegularFields rf = CTraceEventFormat::GetRegularFields(); + char path[1024] = {}; + _sprintf(path, "%s%llu%s%s.sea", pDomainExtra->strDomainPath.c_str(), (unsigned long long)rf.tid, spCutName ? (std::string("!") + *spCutName).c_str() : "", + (g_nRingBuffer ? ((pRecorder->GetCount() % 2) ? "-1" : "-0") : "")); + try { + VerbosePrint("Opening: %s\n", path); + if (!pRecorder->Init(path, rf.nanoseconds, spCutName.get())) { + VerbosePrint("Failed to init recorder\n"); pThreadRecord->files.erase(record.domain.nameA); pRecorder = nullptr; } - pThreadRecord->pLastRecorder = pRecorder; - return pRecorder; + } catch (const std::exception& exc) { + VerbosePrint("Exception: %s\n", exc.what()); + pThreadRecord->files.erase(record.domain.nameA); + pRecorder = nullptr; } + pThreadRecord->pLastRecorder = pRecorder; + return pRecorder; +} } // namespace sea double* WriteRecord(ERecordType type, const SRecord& record) { CRecorder* pFile = sea::GetFile(record); - if (!pFile) return nullptr; + if (!pFile) + return nullptr; CRecorder& stream = *pFile; - const size_t MaxSize = sizeof(STinyRecord) + 2*sizeof(__itt_id) + 3*sizeof(uint64_t) + sizeof(double) + sizeof(void*); + const size_t MaxSize = sizeof(STinyRecord) + 2 * sizeof(__itt_id) + 3 * sizeof(uint64_t) + sizeof(double) + sizeof(void*); size_t size = stream.CheckCapacity(MaxSize + record.length); if (!size) return nullptr; - STinyRecord* pRecord = WriteToBuff(stream, STinyRecord{record.rf.nanoseconds, type}); - if (!pRecord) return nullptr; + STinyRecord* pRecord = WriteToBuff(stream, STinyRecord {record.rf.nanoseconds, type}); + if (!pRecord) + return nullptr; - struct ShortId { unsigned long long a, b; }; + struct ShortId { + unsigned long long a, b; + }; if (record.taskid.d1) { - WriteToBuff(stream, *(ShortId*)&record.taskid); // NOLINT + WriteToBuff(stream, *(ShortId*)&record.taskid); pRecord->flags |= efHasId; } if (record.parentid.d1) { - WriteToBuff(stream, *(ShortId*)&record.parentid); // NOLINT + WriteToBuff(stream, *(ShortId*)&record.parentid); pRecord->flags |= efHasParent; } @@ -308,16 +309,16 @@ double* WriteRecord(ERecordType type, const SRecord& record) { return pDelta; } -CMemMap::CMemMap(const std::string &path, size_t size, size_t offset) { +CMemMap::CMemMap(const std::string& path, size_t size, size_t offset) { #ifdef _WIN32 - m_hFile = CreateFile(path.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, - CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_SEQUENTIAL_SCAN, NULL); + m_hFile = CreateFile(path.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_SEQUENTIAL_SCAN, + NULL); if (INVALID_HANDLE_VALUE == m_hFile) { m_hFile = NULL; throw std::runtime_error("Failed to open file: " + path + " err=" + std::to_string(GetLastError())); } #else - m_fdin = open(path.c_str(), O_CREAT|O_TRUNC|O_RDWR, sea::FilePermissions); + m_fdin = open(path.c_str(), O_CREAT | O_TRUNC | O_RDWR, sea::FilePermissions); if (-1 == m_fdin) { m_fdin = 0; throw std::runtime_error("Failed to open file: " + path + " err=" + std::to_string(errno)); @@ -329,7 +330,7 @@ CMemMap::CMemMap(const std::string &path, size_t size, size_t offset) { void* CMemMap::Remap(size_t size, size_t offset) { Resize(size + offset); static const size_t PageSize = GetMemPageSize(); - size_t nRoundOffset = offset / PageSize * PageSize; //align by memory page size + size_t nRoundOffset = offset / PageSize * PageSize; // align by memory page size m_size = size + offset % PageSize; #ifdef _WIN32 m_hMapping = CreateFileMapping(m_hFile, NULL, PAGE_READWRITE, 0, 0, NULL); @@ -337,12 +338,12 @@ void* CMemMap::Remap(size_t size, size_t offset) { uliOffset.QuadPart = nRoundOffset; m_pView = ::MapViewOfFile(m_hMapping, FILE_MAP_WRITE, uliOffset.HighPart, uliOffset.LowPart, m_size); #else - m_pView = mmap(0, m_size, PROT_READ|PROT_WRITE, MAP_SHARED, m_fdin, nRoundOffset); + m_pView = mmap(0, m_size, PROT_READ | PROT_WRITE, MAP_SHARED, m_fdin, nRoundOffset); if (m_pView == MAP_FAILED) throw std::runtime_error("Failed to map file: err=" + std::to_string(errno)); #endif - return (char*)m_pView + offset % PageSize; // NOLINT + return (char*)m_pView + offset % PageSize; } void CMemMap::Unmap() { @@ -366,7 +367,7 @@ void CMemMap::Unmap() { bool CMemMap::Resize(size_t size) { Unmap(); #ifdef _WIN32 - //resize + // resize LARGE_INTEGER liSize = {}; liSize.QuadPart = size; return SetFilePointerEx(m_hFile, liSize, nullptr, FILE_BEGIN) && ::SetEndOfFile(m_hFile); @@ -394,115 +395,106 @@ CMemMap::~CMemMap() { using namespace sea; const bool g_bWithStacks = !!(GetFeatureSet() & sfStack); - void WriteMeta(const CTraceEventFormat::SRegularFields& main, __itt_string_handle* pKey, const char* name, double* pDelta) { - WriteRecord(ERecordType::Metadata, SRecord{ main, *g_pIntelSEAPIDomain, __itt_null, __itt_null, pKey, pDelta, name, strlen(name) }); + WriteRecord(ERecordType::Metadata, SRecord {main, *g_pIntelSEAPIDomain, __itt_null, __itt_null, pKey, pDelta, name, strlen(name)}); } +class CSEARecorder : public IHandler {void Init(const CTraceEventFormat::SRegularFields& main) + override {// write process name into trace + __itt_string_handle* pKey = UNICODE_AGNOSTIC(string_handle_create)("__process__"); +const char* name = GetProcessName(true); -class CSEARecorder: public IHandler { - void Init(const CTraceEventFormat::SRegularFields& main) override { - //write process name into trace - __itt_string_handle* pKey = UNICODE_AGNOSTIC(string_handle_create)("__process__"); - const char * name = GetProcessName(true); - - double delta = -1;//sort order - highest for processes written thru SEA - WriteMeta(main, pKey, name, &delta); +double delta = -1; // sort order - highest for processes written thru SEA +WriteMeta(main, pKey, name, &delta); - if (!g_savepath.empty()) { - std::ofstream ss(GetDir(g_savepath) + "process.dct"); - ss << "{"; - ss << "'time_freq':" << GetTimeFreq(); +if (!g_savepath.empty()) { + std::ofstream ss(GetDir(g_savepath) + "process.dct"); + ss << "{"; + ss << "'time_freq':" << GetTimeFreq(); #if INTPTR_MAX == INT64_MAX - ss << ", 'bits':64"; + ss << ", 'bits':64"; #else - ss << ", 'bits':32"; + ss << ", 'bits':32"; #endif - ss << "}"; - } - } + ss << "}"; +} +} - void TaskBegin(STaskDescriptor& oTask, bool bOverlapped) override { - const char *pData = nullptr; - size_t length = 0; - if (g_bWithStacks) { - static thread_local TStack* pStack = nullptr; - if (!pStack) - pStack = (TStack*)malloc(sizeof(TStack)); // NOLINT - length = (GetStack(*pStack) - 2) * sizeof(void*); - pData = reinterpret_cast(&(*pStack)[2]); - } +void TaskBegin(STaskDescriptor& oTask, bool bOverlapped) override { + const char* pData = nullptr; + size_t length = 0; + if (g_bWithStacks) { + static thread_local TStack* pStack = nullptr; + if (!pStack) + pStack = (TStack*)malloc(sizeof(TStack)); + length = (GetStack(*pStack) - 2) * sizeof(void*); + pData = reinterpret_cast(&(*pStack)[2]); + } #ifdef TURBO_MODE - double duration = 0; - oTask.pDur = WriteRecord(bOverlapped ? ERecordType::BeginOverlappedTask : ERecordType::BeginTask, SRecord { - oTask.rf, *oTask.pDomain, oTask.id, oTask.parent, oTask.pName, &duration, pData, length, oTask.fn }); - oTask.nMemCounter = GetThreadRecord()->nMemMoveCounter; + double duration = 0; + oTask.pDur = WriteRecord(bOverlapped ? ERecordType::BeginOverlappedTask : ERecordType::BeginTask, + SRecord {oTask.rf, *oTask.pDomain, oTask.id, oTask.parent, oTask.pName, &duration, pData, length, oTask.fn}); + oTask.nMemCounter = GetThreadRecord()->nMemMoveCounter; #else - WriteRecord(bOverlapped ? ERecordType::BeginOverlappedTask : ERecordType::BeginTask, SRecord { - oTask.rf, *oTask.pDomain, oTask.id, oTask.parent, oTask.pName, nullptr, pData, length, oTask.fn }); + WriteRecord(bOverlapped ? ERecordType::BeginOverlappedTask : ERecordType::BeginTask, + SRecord {oTask.rf, *oTask.pDomain, oTask.id, oTask.parent, oTask.pName, nullptr, pData, length, oTask.fn}); #endif - } +} - void AddArg(STaskDescriptor& oTask, const __itt_string_handle *pKey, const char *data, size_t length) override { - WriteRecord(ERecordType::Metadata, SRecord{oTask.rf, *oTask.pDomain, oTask.id, __itt_null, pKey, nullptr, data, length}); +void AddArg(STaskDescriptor& oTask, const __itt_string_handle* pKey, const char* data, size_t length) override { + WriteRecord(ERecordType::Metadata, SRecord {oTask.rf, *oTask.pDomain, oTask.id, __itt_null, pKey, nullptr, data, length}); #ifdef TURBO_MODE - oTask.pDur = nullptr; //for now we don't support turbo tasks with arguments. But if count of arguments was saved it could work. + oTask.pDur = nullptr; // for now we don't support turbo tasks with arguments. But if count of arguments was saved it could work. #endif - } +} - void AddArg(STaskDescriptor& oTask, const __itt_string_handle *pKey, double value) override { - WriteRecord(ERecordType::Metadata, SRecord{ oTask.rf, *oTask.pDomain, oTask.id, __itt_null, pKey, &value}); +void AddArg(STaskDescriptor& oTask, const __itt_string_handle* pKey, double value) override { + WriteRecord(ERecordType::Metadata, SRecord {oTask.rf, *oTask.pDomain, oTask.id, __itt_null, pKey, &value}); #ifdef TURBO_MODE - oTask.pDur = nullptr; //for now we don't support turbo tasks with arguments. But if count of arguments was saved it could work. + oTask.pDur = nullptr; // for now we don't support turbo tasks with arguments. But if count of arguments was saved it could work. #endif - } +} - void AddRelation(const CTraceEventFormat::SRegularFields& rf, - const __itt_domain *pDomain, - __itt_id head, - __itt_string_handle* relation, - __itt_id tail) override { - WriteRecord(ERecordType::Relation, SRecord{ rf, *pDomain, head, tail, relation}); - } +void AddRelation(const CTraceEventFormat::SRegularFields& rf, const __itt_domain* pDomain, __itt_id head, __itt_string_handle* relation, + __itt_id tail) override { + WriteRecord(ERecordType::Relation, SRecord {rf, *pDomain, head, tail, relation}); +} - void TaskEnd(STaskDescriptor& oTask, const CTraceEventFormat::SRegularFields& rf, bool bOverlapped) override { +void TaskEnd(STaskDescriptor& oTask, const CTraceEventFormat::SRegularFields& rf, bool bOverlapped) override { #ifdef TURBO_MODE - if (oTask.pDur && (oTask.nMemCounter == GetThreadRecord()->nMemMoveCounter)) - *oTask.pDur = double(rf.nanoseconds - oTask.rf.nanoseconds); // NOLINT - else - WriteRecord(bOverlapped ? ERecordType::EndOverlappedTask : ERecordType::EndTask, SRecord { - rf, *oTask.pDomain, oTask.id, oTask.parent, oTask.pName, nullptr, nullptr, 0, oTask.fn }); + if (oTask.pDur && (oTask.nMemCounter == GetThreadRecord()->nMemMoveCounter)) + *oTask.pDur = double(rf.nanoseconds - oTask.rf.nanoseconds); + else + WriteRecord(bOverlapped ? ERecordType::EndOverlappedTask : ERecordType::EndTask, + SRecord {rf, *oTask.pDomain, oTask.id, oTask.parent, oTask.pName, nullptr, nullptr, 0, oTask.fn}); #else - WriteRecord(bOverlapped ? ERecordType::EndOverlappedTask : ERecordType::EndTask, SRecord{rf, *oTask.pDomain, oTask.id, __itt_null}); + WriteRecord(bOverlapped ? ERecordType::EndOverlappedTask : ERecordType::EndTask, SRecord {rf, *oTask.pDomain, oTask.id, __itt_null}); #endif - } +} - void Marker(const CTraceEventFormat::SRegularFields& rf, - const __itt_domain *pDomain, - __itt_id id, - __itt_string_handle *pName, - __itt_scope theScope) override { - const char* scope = GetScope(theScope); - WriteRecord(ERecordType::Marker, SRecord{rf, *pDomain, id, __itt_null, pName, nullptr, scope, strlen(scope)}); - } +void Marker(const CTraceEventFormat::SRegularFields& rf, const __itt_domain* pDomain, __itt_id id, __itt_string_handle* pName, __itt_scope theScope) override { + const char* scope = GetScope(theScope); + WriteRecord(ERecordType::Marker, SRecord {rf, *pDomain, id, __itt_null, pName, nullptr, scope, strlen(scope)}); +} - void Counter(const CTraceEventFormat::SRegularFields& rf, const __itt_domain *pDomain, const __itt_string_handle *pName, double value) override { - const char *pData = nullptr; - size_t length = 0; - if (g_bWithStacks) { - static thread_local TStack* pStack = nullptr; - if (!pStack) - pStack = (TStack*)malloc(sizeof(TStack)); // NOLINT - length = (GetStack(*pStack) - 3) * sizeof(void*); - pData = reinterpret_cast(&(*pStack)[3]); - } - WriteRecord(ERecordType::Counter, SRecord{rf, *pDomain, __itt_null, __itt_null, pName, &value, pData, length}); +void Counter(const CTraceEventFormat::SRegularFields& rf, const __itt_domain* pDomain, const __itt_string_handle* pName, double value) override { + const char* pData = nullptr; + size_t length = 0; + if (g_bWithStacks) { + static thread_local TStack* pStack = nullptr; + if (!pStack) + pStack = (TStack*)malloc(sizeof(TStack)); + length = (GetStack(*pStack) - 3) * sizeof(void*); + pData = reinterpret_cast(&(*pStack)[3]); } + WriteRecord(ERecordType::Counter, SRecord {rf, *pDomain, __itt_null, __itt_null, pName, &value, pData, length}); +} - void SetThreadName(const CTraceEventFormat::SRegularFields& rf, const char* name) override { - WriteThreadName(rf, name); - } -}* g_pSEARecorder = IHandler::Register(true); +void SetThreadName(const CTraceEventFormat::SRegularFields& rf, const char* name) override { + WriteThreadName(rf, name); +} +} +*g_pSEARecorder = IHandler::Register(true); IHandler& GetSEARecorder() { return *g_pSEARecorder; @@ -512,33 +504,39 @@ namespace sea { bool WriteThreadName(const CTraceEventFormat::SRegularFields& rf, const char* name) { CIttLocker lock; - if (g_savepath.empty()) return true; + if (g_savepath.empty()) + return true; std::string path = g_savepath + "/"; path += std::to_string(rf.pid) + "," + std::to_string(rf.tid) + ".tid"; - int fd = open(path.c_str(), O_WRONLY|O_CREAT|O_EXCL, FilePermissions); - if (-1 == fd) return true; //file already exists, other thread was faster + int fd = open(path.c_str(), O_WRONLY | O_CREAT | O_EXCL, FilePermissions); + if (-1 == fd) + return true; // file already exists, other thread was faster int res = write(fd, name, (unsigned int)strlen(name)); close(fd); return res != -1; } bool WriteGroupName(int64_t pid, const char* name) { - if (g_savepath.empty()) return true; + if (g_savepath.empty()) + return true; std::string path = g_savepath + "/"; path += std::to_string(pid) + ".pid"; int fd = open(path.c_str(), O_WRONLY | O_CREAT | O_EXCL, FilePermissions); - if (-1 == fd) return true; //file already exists, other thread was faster + if (-1 == fd) + return true; // file already exists, other thread was faster int res = write(fd, name, (unsigned int)strlen(name)); close(fd); return res != -1; } bool ReportString(__itt_string_handle* pStr) { - if (g_savepath.empty()) return true; + if (g_savepath.empty()) + return true; std::string path = g_savepath + "/"; path += std::to_string((uint64_t)pStr) + ".str"; - int fd = open(path.c_str(), O_WRONLY|O_CREAT|O_EXCL, FilePermissions); - if (-1 == fd) return true; //file already exists, other thread was faster + int fd = open(path.c_str(), O_WRONLY | O_CREAT | O_EXCL, FilePermissions); + if (-1 == fd) + return true; // file already exists, other thread was faster int res = write(fd, pStr->strA, (unsigned int)strlen(pStr->strA)); close(fd); return res != -1; @@ -551,8 +549,9 @@ bool ReportModule(void* fn) { SModuleInfo module_info = Fn2Mdl(fn); std::string path = GetDir(g_savepath) + std::to_string((uint64_t)module_info.base) + ".mdl"; - int fd = open(path.c_str(), O_WRONLY|O_CREAT|O_EXCL, FilePermissions); - if (-1 == fd) return true; //file already exists + int fd = open(path.c_str(), O_WRONLY | O_CREAT | O_EXCL, FilePermissions); + if (-1 == fd) + return true; // file already exists std::string text = module_info.path + " " + std::to_string(module_info.size); int res = write(fd, text.c_str(), (unsigned int)text.size()); close(fd); @@ -586,4 +585,4 @@ bool WriteMemStat(const void* buff, size_t size) { return false; } -} //namespace sea +} // namespace sea diff --git a/thirdparty/itt_collector/sea_itt_lib/Recorder.h b/thirdparty/itt_collector/sea_itt_lib/Recorder.h index 674325efde140f..3684a351709fff 100644 --- a/thirdparty/itt_collector/sea_itt_lib/Recorder.h +++ b/thirdparty/itt_collector/sea_itt_lib/Recorder.h @@ -23,15 +23,17 @@ #ifdef _WIN32 #include #else - #include - #include + #include + #include #include #include - #include - #include + #include + #include #endif #include + #include "IttNotifyStdSrc.h" +#include "TraceEventFormat.h" #include "ittnotify.h" inline size_t GetMemPageSize() { @@ -46,7 +48,7 @@ inline size_t GetMemPageSize() { class CMemMap { CMemMap(const CMemMap&) = delete; - CMemMap& operator = (const CMemMap&) = delete; + CMemMap& operator=(const CMemMap&) = delete; public: CMemMap(const std::string& path, size_t size, size_t offset = 0); @@ -79,17 +81,23 @@ class CMemMap { class CRecorder { CRecorder(const CRecorder&) = delete; - CRecorder& operator = (const CRecorder&) = delete; + CRecorder& operator=(const CRecorder&) = delete; public: CRecorder(); bool Init(const std::string& path, uint64_t time, void* pCut); size_t CheckCapacity(size_t size); void* Allocate(size_t size); - uint64_t GetCount() { return m_counter; } - uint64_t GetCreationTime() { return m_time; } + uint64_t GetCount() { + return m_counter; + } + uint64_t GetCreationTime() { + return m_time; + } void Close(bool bSave); - inline bool SameCut(void* pCut) { return pCut == m_pCut; } + inline bool SameCut(void* pCut) { + return pCut == m_pCut; + } ~CRecorder(); protected: @@ -109,8 +117,7 @@ class CRecorder { void* m_pCut = nullptr; }; - -enum class ERecordType: uint8_t { +enum class ERecordType : uint8_t { BeginTask, EndTask, BeginOverlappedTask, @@ -131,9 +138,9 @@ struct SRecord { const __itt_domain& domain; const __itt_id& taskid; const __itt_id& parentid; - const __itt_string_handle *pName; + const __itt_string_handle* pName; double* pDelta; - const char *pData; + const char* pData; size_t length; void* function; }; @@ -141,15 +148,15 @@ double* WriteRecord(ERecordType type, const SRecord& record); void WriteMeta(const CTraceEventFormat::SRegularFields& main, __itt_string_handle* pKey, const char* name, double* pDelta = nullptr); namespace sea { - struct IHandler; - bool WriteThreadName(const CTraceEventFormat::SRegularFields& rf, const char* name); - bool WriteGroupName(int64_t pid, const char* name); - bool ReportString(__itt_string_handle* pStr); - bool ReportModule(void* fn); - bool InitJit(); - bool WriteJit(const void* buff, size_t size); - bool InitMemStat(); - bool WriteMemStat(const void* buff, size_t size); +struct IHandler; +bool WriteThreadName(const CTraceEventFormat::SRegularFields& rf, const char* name); +bool WriteGroupName(int64_t pid, const char* name); +bool ReportString(__itt_string_handle* pStr); +bool ReportModule(void* fn); +bool InitJit(); +bool WriteJit(const void* buff, size_t size); +bool InitMemStat(); +bool WriteMemStat(const void* buff, size_t size); } // namespace sea sea::IHandler& GetSEARecorder(); diff --git a/thirdparty/itt_collector/sea_itt_lib/TraceEventFormat.h b/thirdparty/itt_collector/sea_itt_lib/TraceEventFormat.h index 48735a803f0bb7..3434c11860a04c 100644 --- a/thirdparty/itt_collector/sea_itt_lib/TraceEventFormat.h +++ b/thirdparty/itt_collector/sea_itt_lib/TraceEventFormat.h @@ -21,20 +21,20 @@ #include "Utils.h" #ifndef _WIN32 - #include #include + #include #endif #ifdef _WIN32 - static const int64_t g_PID = (int64_t)GetCurrentProcessId(); +static const int64_t g_PID = (int64_t)GetCurrentProcessId(); #else - static const int64_t g_PID = (int64_t)getpid(); +static const int64_t g_PID = (int64_t)getpid(); #if defined(__APPLE__) - inline int64_t GetTidFromPThread() { - uint64_t tid64 = 0; - pthread_threadid_np(NULL, &tid64); - return (int64_t)tid64; - } +inline int64_t GetTidFromPThread() { + uint64_t tid64 = 0; + pthread_threadid_np(NULL, &tid64); + return (int64_t)tid64; +} #endif #endif @@ -59,29 +59,29 @@ class CTraceEventFormat { }; enum EventPhase { - Begin = 'B', //name, pid, tid, ts - End = 'E', //name, pid, tid, ts - Complete = 'X', //name, pid, tid, ts, dur - Instant = 'i', //name, pid, tid, ts, s = (g, p, t) //vertical line - Counter = 'C', //name, pid, tid, ts //"args": {"cats": 0, "dogs": 7} - AsyncBegin = 'b', //name, pid, tid, ts, id - AsyncInstant = 'n', //name, pid, tid, ts, id - AsyncEnd = 'e', //name, pid, tid, ts, id + Begin = 'B', // name, pid, tid, ts + End = 'E', // name, pid, tid, ts + Complete = 'X', // name, pid, tid, ts, dur + Instant = 'i', // name, pid, tid, ts, s = (g, p, t) //vertical line + Counter = 'C', // name, pid, tid, ts //"args": {"cats": 0, "dogs": 7} + AsyncBegin = 'b', // name, pid, tid, ts, id + AsyncInstant = 'n', // name, pid, tid, ts, id + AsyncEnd = 'e', // name, pid, tid, ts, id //'S', 'T', 'F', //'s', 't', 'f', //Flow events, with arrows: cool but unclear FlowStart = 's', FlowInstant = 't', FlowFinish = 'f', Metadata = 'M', - Sample = 'P', //pid, tid, ts - ObjectNew = 'N', //name, pid, tid, ts, id but no args! - ObjectDelete = 'D', //name, pid, tid, ts, id but no args! - ObjectSnapshot = 'O', //name, pid, tid, ts, id, can have args! See snapshot.basetype for deeper. + Sample = 'P', // pid, tid, ts + ObjectNew = 'N', // name, pid, tid, ts, id but no args! + ObjectDelete = 'D', // name, pid, tid, ts, id but no args! + ObjectSnapshot = 'O', // name, pid, tid, ts, id, can have args! See snapshot.basetype for deeper. }; static uint64_t GetTimeNS() { #ifdef _WIN32 - return SHiResClock::now64(); //in nanoseconds + return SHiResClock::now64(); // in nanoseconds #elif defined(__linux__) static struct timespec res = {}; if (!res.tv_nsec && !res.tv_sec) { @@ -94,24 +94,24 @@ class CTraceEventFormat { struct timespec ts = {}; clock_gettime(CLOCK_MONOTONIC_RAW, &ts); return uint64_t((1000000000. * ts.tv_sec + ts.tv_nsec) / (1000000000. * res.tv_sec + res.tv_nsec)); -#else // FIXME: use mach_absolute_time for APPLE +#else // FIXME: use mach_absolute_time for APPLE using namespace std::chrono; return (uint64_t)duration_cast(SHiResClock::now().time_since_epoch()).count(); #endif } static SRegularFields GetRegularFields() { - return SRegularFields{ - #if defined(_WIN32) + return SRegularFields { +#if defined(_WIN32) g_PID, (int64_t)GetCurrentThreadId(), - #elif defined(__linux__) +#elif defined(__linux__) g_PID, (int64_t)syscall(SYS_gettid), - #elif defined(__APPLE__) +#elif defined(__APPLE__) g_PID, GetTidFromPThread(), - #else +#else g_PID, (int64_t)syscall(SYS_thread_selfid), - #endif - GetTimeNS() +#endif + GetTimeNS() }; } @@ -122,7 +122,7 @@ class CTraceEventFormat { public: CArgs() {} - template + template CArgs(const std::string& name, const T& value) { Add(name, value); } @@ -130,13 +130,14 @@ class CTraceEventFormat { m_args[name] = value ? value : ""; return *this; } - template + template CArgs& Add(const std::string& name, const T& value) { m_args[name] = std::to_string(value); return *this; } - operator bool() const { return !m_args.empty(); } - + operator bool() const { + return !m_args.empty(); + } std::string Str() const { std::string res; @@ -147,7 +148,8 @@ class CTraceEventFormat { } return res; } - const TMap& GetMap() const {return m_args;} + const TMap& GetMap() const { + return m_args; + } }; }; - diff --git a/thirdparty/itt_collector/sea_itt_lib/Utils.cpp b/thirdparty/itt_collector/sea_itt_lib/Utils.cpp index f8504ae553fd89..46b7c2bbc6e2e7 100644 --- a/thirdparty/itt_collector/sea_itt_lib/Utils.cpp +++ b/thirdparty/itt_collector/sea_itt_lib/Utils.cpp @@ -17,9 +17,11 @@ **********************************************************************************************************************************************************************************************************************************************************************************************/ #include "Utils.h" -#include "IttNotifyStdSrc.h" + #include +#include "IttNotifyStdSrc.h" + #ifdef _WIN32 #include #undef API_VERSION @@ -27,7 +29,6 @@ #else #include #include - #include #endif @@ -46,10 +47,9 @@ #include #endif - size_t GetStack(TStack& stack) { #ifdef _WIN32 - typedef USHORT (WINAPI *FCaptureStackBackTrace)(__in ULONG, __in ULONG, __out PVOID*, __out_opt PULONG); + typedef USHORT(WINAPI * FCaptureStackBackTrace)(__in ULONG, __in ULONG, __out PVOID*, __out_opt PULONG); static FCaptureStackBackTrace CaptureStackBackTrace = (FCaptureStackBackTrace)(GetProcAddress(LoadLibraryA("kernel32.dll"), "RtlCaptureStackBackTrace")); return CaptureStackBackTrace ? CaptureStackBackTrace(0, StackSize, stack, NULL) : 0; #else @@ -64,7 +64,7 @@ std::string GetStackString() { TStack stack = {}; size_t size = GetStack(stack); - char **bt_syms = backtrace_symbols(stack, size); + char** bt_syms = backtrace_symbols(stack, size); if (!bt_syms) return std::string(); std::string res; @@ -97,32 +97,27 @@ SModuleInfo Fn2Mdl(void* fn) { GetModuleFileNameA(hModule, filename, sizeof(filename) - 1); MODULEINFO mi = {}; GetModuleInformation(GetCurrentProcess(), hModule, &mi, sizeof(MODULEINFO)); - return SModuleInfo{hModule, mi.SizeOfImage, filename}; + return SModuleInfo {hModule, mi.SizeOfImage, filename}; } LONG WINAPI CreateMiniDump(EXCEPTION_POINTERS* pep) { - typedef BOOL(WINAPI *PDUMPFN)( - HANDLE hProcess, - DWORD ProcessId, - HANDLE hFile, - MINIDUMP_TYPE DumpType, - PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, - PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, - PMINIDUMP_CALLBACK_INFORMATION CallbackParam); + typedef BOOL(WINAPI * PDUMPFN)(HANDLE hProcess, DWORD ProcessId, HANDLE hFile, MINIDUMP_TYPE DumpType, PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, + PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, PMINIDUMP_CALLBACK_INFORMATION CallbackParam); PDUMPFN fnMiniDumpWriteDump = (PDUMPFN)GetProcAddress(::LoadLibraryA("DbgHelp.dll"), "MiniDumpWriteDump"); - if (!fnMiniDumpWriteDump) return EXCEPTION_EXECUTE_HANDLER; + if (!fnMiniDumpWriteDump) + return EXCEPTION_EXECUTE_HANDLER; std::string path = g_savepath.empty() ? "c:/temp" : g_savepath; path += "/isea_minidump.dmp"; HANDLE hFile = CreateFileA(path.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (!hFile || INVALID_HANDLE_VALUE == hFile) return EXCEPTION_EXECUTE_HANDLER; + if (!hFile || INVALID_HANDLE_VALUE == hFile) + return EXCEPTION_EXECUTE_HANDLER; MINIDUMP_EXCEPTION_INFORMATION mdei = {}; mdei.ThreadId = GetCurrentThreadId(); mdei.ExceptionPointers = pep; mdei.ClientPointers = TRUE; - fnMiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, (pep != 0) ? &mdei : 0, 0, 0); CloseHandle(hFile); @@ -136,12 +131,12 @@ void SetGlobalCrashHandler() { #else void SetGlobalCrashHandler() { - //FIXME: implement + // FIXME: implement } -#include + #include -size_t GetFileSize(const char *path) { +size_t GetFileSize(const char* path) { struct stat st = {}; if (0 == stat(path, &st)) @@ -150,17 +145,17 @@ size_t GetFileSize(const char *path) { return -1; } -#ifndef __APPLE__ + #ifndef __APPLE__ -#if !defined(NO_DL_ITERATE_PHDR) -int iterate_callback(struct dl_phdr_info *info, size_t size, void *data) { + #if !defined(NO_DL_ITERATE_PHDR) +int iterate_callback(struct dl_phdr_info* info, size_t size, void* data) { Dl_info* pInfo = reinterpret_cast(data); VerbosePrint("iterate_callback: %lx, %s\n", (long int)info->dlpi_addr, info->dlpi_name); if (reinterpret_cast(info->dlpi_addr) == pInfo->dli_fbase) pInfo->dli_fname = strdup(info->dlpi_name); return 0; } -#endif + #endif bool proc_self_map(Dl_info& info) { char base[100] = {}; @@ -178,52 +173,51 @@ bool proc_self_map(Dl_info& info) { } return false; } -#endif + #endif sea::SModuleInfo Fn2Mdl(void* fn) { Dl_info dl_info = {}; dladdr(fn, &dl_info); VerbosePrint("Fn2Mdl: %p, %s\n", dl_info.dli_fbase, dl_info.dli_fname); if (!dl_info.dli_fname || !strstr(dl_info.dli_fname, ".so")) { -#ifndef __APPLE__ - #if !defined(NO_DL_ITERATE_PHDR) + #ifndef __APPLE__ + #if !defined(NO_DL_ITERATE_PHDR) dl_iterate_phdr(iterate_callback, &dl_info); - #endif + #endif if (!dl_info.dli_fname || !strstr(dl_info.dli_fname, ".so")) proc_self_map(dl_info); -#endif - return SModuleInfo{dl_info.dli_fbase, 0, dl_info.dli_fname}; + #endif + return SModuleInfo {dl_info.dli_fbase, 0, dl_info.dli_fname}; } if (dl_info.dli_fname[0] == '/') { // path is absolute - return SModuleInfo{dl_info.dli_fbase, GetFileSize(dl_info.dli_fname), dl_info.dli_fname}; + return SModuleInfo {dl_info.dli_fbase, GetFileSize(dl_info.dli_fname), dl_info.dli_fname}; } else { - if (const char * absolute = realpath(dl_info.dli_fname, nullptr)) { - SModuleInfo mdlInfo{dl_info.dli_fbase, GetFileSize(absolute), absolute}; - free((void*) absolute); // NOLINT + if (const char* absolute = realpath(dl_info.dli_fname, nullptr)) { + SModuleInfo mdlInfo {dl_info.dli_fbase, GetFileSize(absolute), absolute}; + free((void*)absolute); return mdlInfo; } else { - return SModuleInfo{dl_info.dli_fbase, GetFileSize(dl_info.dli_fname), dl_info.dli_fname}; + return SModuleInfo {dl_info.dli_fbase, GetFileSize(dl_info.dli_fname), dl_info.dli_fname}; } } } const char* GetProcessName(bool bFullPath) { static char process_name[1024] = {}; -#ifdef __APPLE__ + #ifdef __APPLE__ uint32_t size = 1023; _NSGetExecutablePath(process_name, &size); -#else + #else if (!process_name[0]) - process_name[readlink("/proc/self/exe", process_name, sizeof(process_name)/sizeof(process_name[0]) - 1 )] = 0; -#endif //__APPLE__ - if (bFullPath) return process_name; + process_name[readlink("/proc/self/exe", process_name, sizeof(process_name) / sizeof(process_name[0]) - 1)] = 0; + #endif //__APPLE__ + if (bFullPath) + return process_name; return strrchr(process_name, '/') + 1; } #endif -} //namespace sea - - +} // namespace sea diff --git a/thirdparty/itt_collector/sea_itt_lib/Utils.h b/thirdparty/itt_collector/sea_itt_lib/Utils.h index ee7dd2b427f511..235e37846c816f 100644 --- a/thirdparty/itt_collector/sea_itt_lib/Utils.h +++ b/thirdparty/itt_collector/sea_itt_lib/Utils.h @@ -17,17 +17,18 @@ **********************************************************************************************************************************************************************************************************************************************************************************************/ #pragma once -#include -#include -#include +#include #include -#include + +#include +#include #include -#include -#include #include -#include #include +#include +#include +#include +#include #if defined(__arm__) && !defined(__aarch64__) #define ARM32 @@ -36,15 +37,15 @@ #ifdef _WIN32 #include #else - #include - #include #include + #include + #include #endif static std::string get_environ_value(const std::string& name) { #ifdef _WIN32 size_t sz; - char *v = NULL; + char* v = NULL; _dupenv_s(&v, &sz, name.c_str()); std::string ret = v ? v : ""; @@ -52,91 +53,92 @@ static std::string get_environ_value(const std::string& name) { return ret; #else - const char *v = getenv(name.c_str()); + const char* v = getenv(name.c_str()); return v ? v : ""; #endif } #ifdef _WIN32 - //there is bug in VS2012 implementation: high_resolution_clock is in fact not high res... - struct SHiResClock { - typedef uint64_t rep; - typedef std::nano period; - typedef std::chrono::duration duration; - typedef std::chrono::time_point time_point; - static const bool is_steady = true; - static uint64_t now64() { - static long long frequency = 0; - if (!frequency) { - QueryPerformanceFrequency(reinterpret_cast(&frequency)); - } - - LARGE_INTEGER count = {}; - QueryPerformanceCounter(&count); - return static_cast(static_cast(count.QuadPart) / frequency * static_cast(period::den)); - } - static time_point now() { - return time_point(duration(now64())); +// there is bug in VS2012 implementation: high_resolution_clock is in fact not high res... +struct SHiResClock { + typedef uint64_t rep; + typedef std::nano period; + typedef std::chrono::duration duration; + typedef std::chrono::time_point time_point; + static const bool is_steady = true; + static uint64_t now64() { + static long long frequency = 0; + if (!frequency) { + QueryPerformanceFrequency(reinterpret_cast(&frequency)); } - }; - namespace sea { - inline uint64_t GetTime() { - LARGE_INTEGER count = {}; - QueryPerformanceCounter(&count); - return count.QuadPart; - } - inline uint64_t GetTimeFreq() { - static LARGE_INTEGER frequency = {}; - if (!frequency.QuadPart) { - QueryPerformanceFrequency(&frequency); - } - return frequency.QuadPart; - } - } // namespace sea + LARGE_INTEGER count = {}; + QueryPerformanceCounter(&count); + return static_cast(static_cast(count.QuadPart) / frequency * static_cast(period::den)); + } + static time_point now() { + return time_point(duration(now64())); + } +}; + +namespace sea { +inline uint64_t GetTime() { + LARGE_INTEGER count = {}; + QueryPerformanceCounter(&count); + return count.QuadPart; +} +inline uint64_t GetTimeFreq() { + static LARGE_INTEGER frequency = {}; + if (!frequency.QuadPart) { + QueryPerformanceFrequency(&frequency); + } + return frequency.QuadPart; +} +} // namespace sea #else - typedef std::chrono::high_resolution_clock SHiResClock; - namespace sea { - using namespace std::chrono; - inline uint64_t GetTime() { - return (uint64_t)duration_cast(SHiResClock::now().time_since_epoch()).count(); - } - inline uint64_t GetTimeFreq() { - /* - TODO: - struct timespec res = {}; - clock_getres(CLOCK_MONOTONIC_RAW, &res); - uint64_t freq = 1000000000ULL * (uint64_t)res.tv_sec + (uint64_t)res.tv_nsec; - */ - static uint64_t freq = SHiResClock::period::num / SHiResClock::period::den; - return freq; - } - } // namespace sea +typedef std::chrono::high_resolution_clock SHiResClock; +namespace sea { +using namespace std::chrono; +inline uint64_t GetTime() { + return (uint64_t)duration_cast(SHiResClock::now().time_since_epoch()).count(); +} +inline uint64_t GetTimeFreq() { + /* + TODO: + struct timespec res = {}; + clock_getres(CLOCK_MONOTONIC_RAW, &res); + uint64_t freq = 1000000000ULL * (uint64_t)res.tv_sec + (uint64_t)res.tv_nsec; + */ + static uint64_t freq = SHiResClock::period::num / SHiResClock::period::den; + return freq; +} +} // namespace sea #endif -#ifdef _MSC_VER //std::mutex won't work in static constructors due to MS bug - class CCriticalSection { - CRITICAL_SECTION m_cs; - public: - CCriticalSection() { - InitializeCriticalSection(&m_cs); - } - void lock() { - EnterCriticalSection(&m_cs); - } - void unlock() { - LeaveCriticalSection(&m_cs); - } - ~CCriticalSection() { - DeleteCriticalSection(&m_cs); - } - }; - typedef CCriticalSection TCritSec; +#ifdef _MSC_VER // std::mutex won't work in static constructors due to MS bug +class CCriticalSection { + CRITICAL_SECTION m_cs; + +public: + CCriticalSection() { + InitializeCriticalSection(&m_cs); + } + void lock() { + EnterCriticalSection(&m_cs); + } + void unlock() { + LeaveCriticalSection(&m_cs); + } + ~CCriticalSection() { + DeleteCriticalSection(&m_cs); + } +}; +typedef CCriticalSection TCritSec; #else - typedef std::recursive_mutex TCritSec; +typedef std::recursive_mutex TCritSec; #endif #ifdef _MSC_VER @@ -145,7 +147,7 @@ static std::string get_environ_value(const std::string& name) { #define thread_local __thread #endif -template +template class CPlacementPool { static CPlacementPool& GetPool() { static thread_local CPlacementPool* pPool = nullptr; @@ -174,9 +176,10 @@ class CPlacementPool { return GetPool().AllocMem(); } - template + template static void Free(T* ptr) { - if (!ptr) return; + if (!ptr) + return; ptr->~T(); return GetPool().FreeMem(ptr); } @@ -188,7 +191,7 @@ class CPlacementPool { }; #define placement_new(T) new (CPlacementPool::Alloc()) T -template +template inline void placement_free(T* ptr) { CPlacementPool::Free(ptr); } @@ -196,20 +199,19 @@ inline void placement_free(T* ptr) { class CScope { protected: std::function m_fn; + public: - CScope(const std::function& fn) - : m_fn(fn) - {} + CScope(const std::function& fn): m_fn(fn) {} ~CScope() { m_fn(); } }; const size_t StackSize = 100; -using TStack = void*[StackSize]; +using TStack = void* [StackSize]; size_t GetStack(TStack& stack); std::string GetStackString(); namespace sea { - void SetGlobalCrashHandler(); +void SetGlobalCrashHandler(); } diff --git a/thirdparty/itt_collector/sea_itt_lib/sea_itt_lib.cpp b/thirdparty/itt_collector/sea_itt_lib/sea_itt_lib.cpp index 643e263cdb2fd6..a33d41a62b0b2c 100644 --- a/thirdparty/itt_collector/sea_itt_lib/sea_itt_lib.cpp +++ b/thirdparty/itt_collector/sea_itt_lib/sea_itt_lib.cpp @@ -16,11 +16,13 @@ # **********************************************************************************************************************************************************************************************************************************************************************************************/ -#include "IttNotifyStdSrc.h" -#include "Utils.h" #include -#include #include + +#include + +#include "IttNotifyStdSrc.h" +#include "Utils.h" #include "jitprofiling.h" #define INTEL_LIBITTNOTIFY "INTEL_LIBITTNOTIFY" @@ -33,7 +35,7 @@ #include #pragma comment(lib, "dbghelp") #else - #define setenv putenv + #define setenv putenv #define _strdup strdup #endif @@ -48,7 +50,7 @@ int GlobalInit() { static const char var_name[] = INTEL_LIBITTNOTIFY BIT_SUFFIX; static const char jit_var_name[] = INTEL_JIT_PROFILER BIT_SUFFIX; - sea::SModuleInfo mdlinfo = sea::Fn2Mdl((void*)GlobalInit); // NOLINT + sea::SModuleInfo mdlinfo = sea::Fn2Mdl((void*)GlobalInit); VerbosePrint("IntelSEAPI: %s=%s | Loaded from: %s\n", var_name, get_environ_value(var_name).c_str(), mdlinfo.path.c_str()); @@ -70,7 +72,7 @@ int nSetLib = GlobalInit(); void AtExit(); extern "C" { - extern __itt_global ITT_JOIN(INTEL_ITTNOTIFY_PREFIX, _ittapi_global); +extern __itt_global ITT_JOIN(INTEL_ITTNOTIFY_PREFIX, _ittapi_global); } bool g_bInitialized = false; @@ -82,7 +84,7 @@ __itt_global* GetITTGlobal() { void ChainGlobal(__itt_global* pNew) { __itt_global* pCurrent = GetITTGlobal(); while (pCurrent->next) { - if (pCurrent->next == pNew) //already chained + if (pCurrent->next == pNew) // already chained return; pCurrent = pCurrent->next; } @@ -93,115 +95,111 @@ void UnchainGlobal(__itt_global* pOld) { __itt_global* pCurrent = GetITTGlobal(); while (pCurrent->next) { if (pCurrent->next == pOld) { - pCurrent->next = pOld->next; //removing it from list + pCurrent->next = pOld->next; // removing it from list return; } pCurrent = pCurrent->next; } } - - #ifdef _WIN32 #include - #define FIX_STR(type, ptr, name) \ - if (!ptr->name##A) { \ - if (ptr->name##W) { \ - size_t len = lstrlenW((const wchar_t*)ptr->name##W); \ - char* dest = reinterpret_cast(malloc(len + 2)); \ - wcstombs_s(&len, dest, len + 1, (const wchar_t*)ptr->name##W, len + 1); \ - const_cast(ptr)->name##A = dest; \ - } else { \ - const_cast(ptr)->name##A = _strdup("null"); \ - } \ + #define FIX_STR(type, ptr, name) \ + if (!ptr->name##A) { \ + if (ptr->name##W) { \ + size_t len = lstrlenW((const wchar_t*)ptr->name##W); \ + char* dest = reinterpret_cast(malloc(len + 2)); \ + wcstombs_s(&len, dest, len + 1, (const wchar_t*)ptr->name##W, len + 1); \ + const_cast(ptr)->name##A = dest; \ + } else { \ + const_cast(ptr)->name##A = _strdup("null"); \ + } \ } #else - #define FIX_STR(type, ptr, name) \ - if (!ptr->name##A) { \ - if (ptr->name##W) { \ - size_t len = wcslen((const wchar_t*)ptr->name##W); \ - char* dest = reinterpret_cast(malloc(len + 2)); \ - wcstombs(dest, (const wchar_t*)ptr->name##W, len + 1); \ - const_cast(ptr)->name##A = dest; \ - } else { \ - const_cast(ptr)->name##A = _strdup("null"); \ - } \ + #define FIX_STR(type, ptr, name) \ + if (!ptr->name##A) { \ + if (ptr->name##W) { \ + size_t len = wcslen((const wchar_t*)ptr->name##W); \ + char* dest = reinterpret_cast(malloc(len + 2)); \ + wcstombs(dest, (const wchar_t*)ptr->name##W, len + 1); \ + const_cast(ptr)->name##A = dest; \ + } else { \ + const_cast(ptr)->name##A = _strdup("null"); \ + } \ } #endif #define FIX_DOMAIN(ptr) FIX_STR(__itt_domain, ptr, name) #define FIX_STRING(ptr) FIX_STR(__itt_string_handle, ptr, str) -#define FIX_COUNTER(ptr)\ - FIX_STR(__itt_counter_info_t, ptr, name);\ - FIX_STR(__itt_counter_info_t, ptr, domain);\ +#define FIX_COUNTER(ptr) \ + FIX_STR(__itt_counter_info_t, ptr, name); \ + FIX_STR(__itt_counter_info_t, ptr, domain); \ sea::FixCounter(ptr); - void __itt_report_error(__itt_error_code, ...) {} - __itt_domain* g_pIntelSEAPIDomain = nullptr; extern "C" { - SEA_EXPORT void ITTAPI __itt_api_init(__itt_global* pGlob, __itt_group_id id) { - if (!g_bInitialized) { - g_bInitialized = true; - sea::SetGlobalCrashHandler(); - - __itt_global* pGlobal = GetITTGlobal(); - __itt_mutex_init(&pGlobal->mutex); - pGlobal->mutex_initialized = 1; - sea::CIttLocker locker; - using namespace sea; - g_pIntelSEAPIDomain = UNICODE_AGNOSTIC(domain_create)("IntelSEAPI"); - __itt_api_init(pGlobal, id); - pGlobal->api_initialized = 1; - } - const char* procname = sea::GetProcessName(true); - sea::SModuleInfo mdlinfo = sea::Fn2Mdl(pGlob); - VerbosePrint("IntelSEAPI init is called from process '%s' at module '%s'\n", procname, mdlinfo.path.c_str()); - if (GetITTGlobal() != pGlob) - ChainGlobal(pGlob); - sea::FillApiList(pGlob->api_list_ptr); - for (___itt_domain* pDomain = pGlob->domain_list; pDomain; pDomain = pDomain->next) { - FIX_DOMAIN(pDomain); - sea::InitDomain(pDomain); - } - for (__itt_string_handle* pStr = pGlob->string_list; pStr; pStr = pStr->next) { - FIX_STRING(pStr); - sea::ReportString(const_cast<__itt_string_handle *>(pStr)); - } - // counter_list was not yet invented that time - if (pGlob->version_build > 20120000) { - for (__itt_counter_info_t* pCounter = pGlob->counter_list; pCounter; pCounter = pCounter->next) { - FIX_COUNTER(pCounter); - VerbosePrint("Fixed counter: %s | %s\n", pCounter->domainA, pCounter->nameA); - } - } - sea::ReportModule(pGlob); - static bool bInitialized = false; - if (!bInitialized) { - bInitialized = true; - sea::InitSEA(); - atexit(AtExit); - } +SEA_EXPORT void ITTAPI __itt_api_init(__itt_global* pGlob, __itt_group_id id) { + if (!g_bInitialized) { + g_bInitialized = true; + sea::SetGlobalCrashHandler(); + + __itt_global* pGlobal = GetITTGlobal(); + __itt_mutex_init(&pGlobal->mutex); + pGlobal->mutex_initialized = 1; + sea::CIttLocker locker; + using namespace sea; + g_pIntelSEAPIDomain = UNICODE_AGNOSTIC(domain_create)("IntelSEAPI"); + __itt_api_init(pGlobal, id); + pGlobal->api_initialized = 1; } - - SEA_EXPORT void ITTAPI __itt_api_fini(__itt_global* pGlob) { - if (pGlob) { - UnchainGlobal(pGlob); - return; + const char* procname = sea::GetProcessName(true); + sea::SModuleInfo mdlinfo = sea::Fn2Mdl(pGlob); + VerbosePrint("IntelSEAPI init is called from process '%s' at module '%s'\n", procname, mdlinfo.path.c_str()); + if (GetITTGlobal() != pGlob) + ChainGlobal(pGlob); + sea::FillApiList(pGlob->api_list_ptr); + for (___itt_domain* pDomain = pGlob->domain_list; pDomain; pDomain = pDomain->next) { + FIX_DOMAIN(pDomain); + sea::InitDomain(pDomain); + } + for (__itt_string_handle* pStr = pGlob->string_list; pStr; pStr = pStr->next) { + FIX_STRING(pStr); + sea::ReportString(const_cast<__itt_string_handle*>(pStr)); + } + // counter_list was not yet invented that time + if (pGlob->version_build > 20120000) { + for (__itt_counter_info_t* pCounter = pGlob->counter_list; pCounter; pCounter = pCounter->next) { + FIX_COUNTER(pCounter); + VerbosePrint("Fixed counter: %s | %s\n", pCounter->domainA, pCounter->nameA); } + } + sea::ReportModule(pGlob); + static bool bInitialized = false; + if (!bInitialized) { + bInitialized = true; + sea::InitSEA(); + atexit(AtExit); + } +} - if (!g_bInitialized) return; - g_bInitialized = false; - - sea::FinitaLaComedia(); +SEA_EXPORT void ITTAPI __itt_api_fini(__itt_global* pGlob) { + if (pGlob) { + UnchainGlobal(pGlob); + return; } + if (!g_bInitialized) + return; + g_bInitialized = false; + + sea::FinitaLaComedia(); +} } void AtExit() { @@ -210,141 +208,136 @@ void AtExit() { extern "C" { #ifdef STANDARD_SOURCES - typedef bool(*receive_t)(uint64_t receiver, uint64_t time, uint16_t count, const stdsrc::uchar_t** names, const stdsrc::uchar_t** values, double progress); - typedef uint64_t(*get_receiver_t)(const stdsrc::uchar_t* provider, const stdsrc::uchar_t* opcode, const stdsrc::uchar_t* taskName); - - SEA_EXPORT bool parse_standard_source(const char* file, get_receiver_t get_receiver, receive_t receive) { - STDSRC_CHECK_RET(file, false); - class Receiver : public stdsrc::Receiver { - protected: - uint64_t m_receiver = 0; - receive_t m_receive = nullptr; - stdsrc::Reader& m_reader; - - public: - Receiver(stdsrc::Reader& reader, uint64_t receiver, receive_t receive) - : m_receiver(receiver) - , m_reader(reader) - , m_receive(receive) {} - - virtual bool onEvent(uint64_t time, const stdsrc::CVariantTree& props) { - size_t size = props.get_bags().size(); - std::vector names(size), values(size); - std::vector values_temp(size); - names.reserve(size); - values.reserve(size); - size_t i = 0; - for (const auto& pair : props.get_bags()) { - const stdsrc::CVariantTree& prop = pair.second; - const stdsrc::CVariant& name = prop.get_variant(stdsrc::bagname::Name); - names[i] = name.is_empty() ? nullptr : name.get().c_str(); - const stdsrc::CVariant& value = prop.get_variant(stdsrc::bagname::Value); - values[i] = value.is_empty() ? nullptr : value.as_str(values_temp[i]).c_str(); - ++i; - } - return m_receive(m_receiver, time, (uint16_t)size, size ? &names[0] : nullptr, size ? &values[0] : nullptr, m_reader.getProgress()); - } - }; - - class Reader : public stdsrc::Reader { - get_receiver_t m_get_receiver = nullptr; - receive_t m_receive = nullptr; - public: - Reader(get_receiver_t get_receiver, receive_t receive) - : m_get_receiver(get_receiver) - , m_receive(receive) {} - virtual stdsrc::Receiver::Ptr getReceiver(const stdsrc::ustring& provider, const stdsrc::ustring& opcode, const stdsrc::ustring& taskName, - stdsrc::CVariantTree& props) { - uint64_t receiver = m_get_receiver(provider.c_str(), opcode.c_str(), taskName.c_str()); - if (!receiver) return nullptr; - return std::make_shared(*this, receiver, m_receive); +typedef bool (*receive_t)(uint64_t receiver, uint64_t time, uint16_t count, const stdsrc::uchar_t** names, const stdsrc::uchar_t** values, double progress); +typedef uint64_t (*get_receiver_t)(const stdsrc::uchar_t* provider, const stdsrc::uchar_t* opcode, const stdsrc::uchar_t* taskName); + +SEA_EXPORT bool parse_standard_source(const char* file, get_receiver_t get_receiver, receive_t receive) { + STDSRC_CHECK_RET(file, false); + class Receiver : public stdsrc::Receiver { + protected: + uint64_t m_receiver = 0; + receive_t m_receive = nullptr; + stdsrc::Reader& m_reader; + + public: + Receiver(stdsrc::Reader& reader, uint64_t receiver, receive_t receive): m_receiver(receiver), m_reader(reader), m_receive(receive) {} + + virtual bool onEvent(uint64_t time, const stdsrc::CVariantTree& props) { + size_t size = props.get_bags().size(); + std::vector names(size), values(size); + std::vector values_temp(size); + names.reserve(size); + values.reserve(size); + size_t i = 0; + for (const auto& pair : props.get_bags()) { + const stdsrc::CVariantTree& prop = pair.second; + const stdsrc::CVariant& name = prop.get_variant(stdsrc::bagname::Name); + names[i] = name.is_empty() ? nullptr : name.get().c_str(); + const stdsrc::CVariant& value = prop.get_variant(stdsrc::bagname::Value); + values[i] = value.is_empty() ? nullptr : value.as_str(values_temp[i]).c_str(); + ++i; } - }; - Reader reader(get_receiver, receive); - std::string path(file); -#ifdef _WIN32 - if (path.substr(path.size() - 4) == ".etl") - return stdsrc::readETLFile(reader, file, stdsrc::etuRaw); -#endif - return false; - } -#endif - -#ifdef _WIN32 - SEA_EXPORT const char* resolve_pointer(const char* szModulePath, uint64_t addr) { - static std::string res; - res.clear(); - static HANDLE hCurProc = GetCurrentProcess(); - DWORD dwOptions = SymSetOptions((SymGetOptions() | - SYMOPT_LOAD_LINES | - SYMOPT_UNDNAME | - SYMOPT_INCLUDE_32BIT_MODULES | - SYMOPT_ALLOW_ABSOLUTE_SYMBOLS) & ~SYMOPT_DEFERRED_LOADS); - static BOOL bInitialize = SymInitialize(hCurProc, NULL, TRUE); - if (!bInitialize) return nullptr; - static std::map modules; - uint64_t module = 0; - if (modules.count(szModulePath)) { - module = modules[szModulePath]; - } else { - module = SymLoadModule64(hCurProc, NULL, szModulePath, NULL, 0x800000, 0); - modules[szModulePath] = module; + return m_receive(m_receiver, time, (uint16_t)size, size ? &names[0] : nullptr, size ? &values[0] : nullptr, m_reader.getProgress()); } - if (!module) return nullptr; - IMAGEHLP_LINE64 line = { sizeof(IMAGEHLP_LINE64) }; - DWORD dwDisplacement = 0; - SymGetLineFromAddr64(hCurProc, module + addr, &dwDisplacement, &line); - if (line.FileName) { - res += std::string(line.FileName) + "(" + std::to_string(line.LineNumber) + ")\n"; + }; + + class Reader : public stdsrc::Reader { + get_receiver_t m_get_receiver = nullptr; + receive_t m_receive = nullptr; + + public: + Reader(get_receiver_t get_receiver, receive_t receive): m_get_receiver(get_receiver), m_receive(receive) {} + virtual stdsrc::Receiver::Ptr getReceiver(const stdsrc::ustring& provider, const stdsrc::ustring& opcode, const stdsrc::ustring& taskName, + stdsrc::CVariantTree& props) { + uint64_t receiver = m_get_receiver(provider.c_str(), opcode.c_str(), taskName.c_str()); + if (!receiver) + return nullptr; + return std::make_shared(*this, receiver, m_receive); } + }; + Reader reader(get_receiver, receive); + std::string path(file); + #ifdef _WIN32 + if (path.substr(path.size() - 4) == ".etl") + return stdsrc::readETLFile(reader, file, stdsrc::etuRaw); + #endif + return false; +} +#endif - char buff[sizeof(SYMBOL_INFO) + 1024] = {}; - SYMBOL_INFO * symbol = (SYMBOL_INFO*)buff; // NOLINT - symbol->MaxNameLen = 255; - symbol->SizeOfStruct = sizeof(SYMBOL_INFO); - SymFromAddr(hCurProc, module + addr, nullptr, symbol); - res += symbol->Name; - return res.c_str(); +#ifdef _WIN32 +SEA_EXPORT const char* resolve_pointer(const char* szModulePath, uint64_t addr) { + static std::string res; + res.clear(); + static HANDLE hCurProc = GetCurrentProcess(); + DWORD dwOptions = SymSetOptions((SymGetOptions() | SYMOPT_LOAD_LINES | SYMOPT_UNDNAME | SYMOPT_INCLUDE_32BIT_MODULES | SYMOPT_ALLOW_ABSOLUTE_SYMBOLS) & + ~SYMOPT_DEFERRED_LOADS); + static BOOL bInitialize = SymInitialize(hCurProc, NULL, TRUE); + if (!bInitialize) + return nullptr; + static std::map modules; + uint64_t module = 0; + if (modules.count(szModulePath)) { + module = modules[szModulePath]; + } else { + module = SymLoadModule64(hCurProc, NULL, szModulePath, NULL, 0x800000, 0); + modules[szModulePath] = module; + } + if (!module) + return nullptr; + IMAGEHLP_LINE64 line = {sizeof(IMAGEHLP_LINE64)}; + DWORD dwDisplacement = 0; + SymGetLineFromAddr64(hCurProc, module + addr, &dwDisplacement, &line); + if (line.FileName) { + res += std::string(line.FileName) + "(" + std::to_string(line.LineNumber) + ")\n"; } - SEA_EXPORT int NotifyEvent(iJIT_JVM_EVENT event_type, void *EventSpecificData) { - iJIT_Method_Load* methodData = (iJIT_Method_Load*)EventSpecificData; // NOLINT - - switch (event_type) { - case iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED: - { - sea::WriteJit(&(uint32_t)methodData->method_id, sizeof(uint32_t)); // NOLINT - sea::WriteJit(&methodData->method_load_address, sizeof(void*)); // NOLINT - sea::WriteJit(&(uint32_t)methodData->method_size, sizeof(uint32_t)); // NOLINT - sea::WriteJit(&(uint32_t)methodData->line_number_size, sizeof(uint32_t)); // NOLINT - for (unsigned int i = 0; i < methodData->line_number_size; ++i) { - const LineNumberInfo& lni = methodData->line_number_table[i]; - sea::WriteJit(&(uint32_t)lni.Offset, sizeof(uint32_t)); // NOLINT - sea::WriteJit(&(uint32_t)lni.LineNumber, sizeof(uint32_t)); // NOLINT - } - - const char * strings[] = { methodData->method_name, methodData->class_file_name, methodData->source_file_name }; - for (size_t i = 0; i < sizeof(strings) / sizeof(strings[0]); ++i) { - const char * str = strings[i] ? strings[i] : ""; - uint16_t len = (uint16_t)strlen(str); - sea::WriteJit(&len, sizeof(len)); - sea::WriteJit(str, len); - } - break; - } - default: - break; + char buff[sizeof(SYMBOL_INFO) + 1024] = {}; + SYMBOL_INFO* symbol = (SYMBOL_INFO*)buff; + symbol->MaxNameLen = 255; + symbol->SizeOfStruct = sizeof(SYMBOL_INFO); + SymFromAddr(hCurProc, module + addr, nullptr, symbol); + res += symbol->Name; + return res.c_str(); +} + +SEA_EXPORT int NotifyEvent(iJIT_JVM_EVENT event_type, void* EventSpecificData) { + iJIT_Method_Load* methodData = (iJIT_Method_Load*)EventSpecificData; + + switch (event_type) { + case iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED: { + sea::WriteJit(&(uint32_t)methodData->method_id, sizeof(uint32_t)); + sea::WriteJit(&methodData->method_load_address, sizeof(void*)); + sea::WriteJit(&(uint32_t)methodData->method_size, sizeof(uint32_t)); + sea::WriteJit(&(uint32_t)methodData->line_number_size, sizeof(uint32_t)); + for (unsigned int i = 0; i < methodData->line_number_size; ++i) { + const LineNumberInfo& lni = methodData->line_number_table[i]; + sea::WriteJit(&(uint32_t)lni.Offset, sizeof(uint32_t)); + sea::WriteJit(&(uint32_t)lni.LineNumber, sizeof(uint32_t)); } - return 0; + const char* strings[] = {methodData->method_name, methodData->class_file_name, methodData->source_file_name}; + for (size_t i = 0; i < sizeof(strings) / sizeof(strings[0]); ++i) { + const char* str = strings[i] ? strings[i] : ""; + uint16_t len = (uint16_t)strlen(str); + sea::WriteJit(&len, sizeof(len)); + sea::WriteJit(str, len); + } + break; + } + default: + break; } - SEA_EXPORT int Initialize() { - __itt_api_init(GetITTGlobal(), __itt_group_none); - sea::InitJit(); + return 0; +} - return 1; - } +SEA_EXPORT int Initialize() { + __itt_api_init(GetITTGlobal(), __itt_group_none); + sea::InitJit(); + + return 1; +} #endif } @@ -363,4 +356,3 @@ void Test() { } #endif - diff --git a/thirdparty/ittapi/CMakeLists.txt b/thirdparty/ittapi/CMakeLists.txt index f89bb0c0b1c3d6..9cec9b6126a80e 100644 --- a/thirdparty/ittapi/CMakeLists.txt +++ b/thirdparty/ittapi/CMakeLists.txt @@ -1,18 +1,6 @@ -# ****************************************************************************** -# Copyright 2017-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 # -# 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. -# ****************************************************************************** if(ENABLE_PROFILING_ITT) if(DEFINED INTEL_VTUNE_DIR OR DEFINED ENV{INTEL_VTUNE_DIR}) diff --git a/tools/benchmark/__init__.py b/tools/benchmark/__init__.py index e69de29bb2d1d6..60324954ef522e 100644 --- a/tools/benchmark/__init__.py +++ b/tools/benchmark/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + diff --git a/tools/benchmark/benchmark.py b/tools/benchmark/benchmark.py index 8a1d0226bb7bea..6ba7a0de91f6e0 100644 --- a/tools/benchmark/benchmark.py +++ b/tools/benchmark/benchmark.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import os from datetime import datetime from statistics import median diff --git a/tools/benchmark/main.py b/tools/benchmark/main.py index 4f0f69f1d3350b..c3d40ea0d6b159 100644 --- a/tools/benchmark/main.py +++ b/tools/benchmark/main.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os import sys from datetime import datetime @@ -9,10 +12,10 @@ from openvino.tools.benchmark.utils.inputs_filling import set_inputs from openvino.tools.benchmark.utils.logging import logger from openvino.tools.benchmark.utils.progress_bar import ProgressBar -from openvino.tools.benchmark.utils.utils import next_step, config_network_inputs, get_number_iterations, \ +from openvino.tools.benchmark.utils.utils import next_step, get_number_iterations, process_precision, \ process_help_inference_string, print_perf_counters, dump_exec_graph, get_duration_in_milliseconds, \ get_command_line_arguments, parse_nstreams_value_per_device, parse_devices, get_inputs_info, \ - get_batch_size, load_config, dump_config + print_inputs_and_outputs_info, get_batch_size, load_config, dump_config from openvino.tools.benchmark.utils.statistics_report import StatisticsReport, averageCntReport, detailedCntReport @@ -213,10 +216,11 @@ def set_throughput_streams(): logger.info('Network batch size: {}'.format(batch_size)) - # --------------------- 6. Configuring input of the model -------------------------------------------------- + # --------------------- 6. Configuring inputs and outputs of the model -------------------------------------------------- next_step() - config_network_inputs(ie_network, app_inputs_info) + process_precision(ie_network, app_inputs_info, args.input_precision, args.output_precision, args.input_output_precision) + print_inputs_and_outputs_info(ie_network) # --------------------- 7. Loading the model to the device ------------------------------------------------- next_step() diff --git a/tools/benchmark/parameters.py b/tools/benchmark/parameters.py index d86fd169def714..0b9289d89569de 100644 --- a/tools/benchmark/parameters.py +++ b/tools/benchmark/parameters.py @@ -1,3 +1,6 @@ +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import sys,argparse from fnmatch import fnmatch @@ -110,6 +113,12 @@ def parse_args(): " Please note, command line parameters have higher priority then parameters from configuration file.") args.add_argument('-qb', '--quantization_bits', type=int, required=False, default=None, choices=[8, 16], help="Optional. Weight bits for quantization: 8 (I8) or 16 (I16) ") + args.add_argument('-ip', '--input_precision', type=str, required=False, default='U8', choices=['U8', 'FP16', 'FP32'], + help='Optional. Specifies precision for all input layers of the network.') + args.add_argument('-op', '--output_precision', type=str, required=False, default='FP32', choices=['U8', 'FP16', 'FP32'], + help='Optional. Specifies precision for all output layers of the network.') + args.add_argument('-iop', '--input_output_precision', type=str, required=False, + help='Optional. Specifies precision for input and output layers by name. Example: -iop "input:FP16, output:FP16". Notice that quotes are required. Overwrites precision from ip and op options for specified layers.') parsed_args = parser.parse_args() return parsed_args diff --git a/tools/benchmark/utils/__init__.py b/tools/benchmark/utils/__init__.py index 375c1404c3ea10..60324954ef522e 100644 --- a/tools/benchmark/utils/__init__.py +++ b/tools/benchmark/utils/__init__.py @@ -1,15 +1,3 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - 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. -""" diff --git a/tools/benchmark/utils/constants.py b/tools/benchmark/utils/constants.py index 1eb82552bc3f09..fd99d70e19f2e4 100644 --- a/tools/benchmark/utils/constants.py +++ b/tools/benchmark/utils/constants.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 VPU_DEVICE_NAME = 'VPU' MYRIAD_DEVICE_NAME = 'MYRIAD' diff --git a/tools/benchmark/utils/inputs_filling.py b/tools/benchmark/utils/inputs_filling.py index b20a617b85eff1..bbb1fdf63b2396 100644 --- a/tools/benchmark/utils/inputs_filling.py +++ b/tools/benchmark/utils/inputs_filling.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2021 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import os import cv2 @@ -37,11 +24,6 @@ def get_inputs(paths_to_input, batch_size, app_input_info, requests): info = app_input_info[key] if info.is_image: input_image_sizes[key] = (info.width, info.height) - logger.info("Network input '{}' precision {}, dimensions ({}): {}".format(key, - info.precision, - info.layout, - " ".join(str(x) for x in - info.shape))) images_count = len(input_image_sizes.keys()) binaries_count = len(app_input_info) - images_count @@ -161,14 +143,15 @@ def fill_blob_with_image(image_paths, request_id, batch_size, input_id, input_si def get_dtype(precision): format_map = { - 'FP32' : np.float32, - 'I32' : np.int32, - 'I64' : np.int64, - 'FP16' : np.float16, - 'I16' : np.int16, - 'U16' : np.uint16, - 'I8' : np.int8, - 'U8' : np.uint8, + 'FP32' : (np.float32, np.finfo(np.float32).min, np.finfo(np.float32).max), + 'I32' : (np.int32, np.iinfo(np.int32).min, np.iinfo(np.int32).max), + 'I64' : (np.int64, np.iinfo(np.int64).min, np.iinfo(np.int64).max), + 'FP16' : (np.float16, np.finfo(np.float16).min, np.finfo(np.float16).max), + 'I16' : (np.int16, np.iinfo(np.int16).min, np.iinfo(np.int16).max), + 'U16' : (np.uint16, np.iinfo(np.uint16).min, np.iinfo(np.uint16).max), + 'I8' : (np.int8, np.iinfo(np.int8).min, np.iinfo(np.int8).max), + 'U8' : (np.uint8, np.iinfo(np.uint8).min, np.iinfo(np.uint8).max), + 'BOOL' : (np.uint8, 0, 1), } if precision in format_map.keys(): return format_map[precision] @@ -180,7 +163,7 @@ def fill_blob_with_binary(binary_paths, request_id, batch_size, input_id, input_ if 'N' in info.layout: shape[info.layout.index('N')] = 1 binary_index = request_id * batch_size * input_size + input_id - dtype = get_dtype(info.precision) + dtype = get_dtype(info.precision)[0] for b in range(batch_size): binary_index %= len(binary_paths) binary_filename = binary_paths[binary_index] @@ -207,6 +190,11 @@ def fill_blob_with_image_info(image_size, layer): return im_info def fill_blob_with_random(layer): + dtype, rand_min, rand_max = get_dtype(layer.precision) + # np.random.uniform excludes high: add 1 to have it generated + if np.dtype(dtype).kind in ['i', 'u', 'b']: + rand_max += 1 + rs = np.random.RandomState(np.random.MT19937(np.random.SeedSequence(0))) if layer.shape: - return np.random.rand(*layer.shape).astype(get_dtype(layer.precision)) - return (get_dtype(layer.precision))(np.random.rand()) + return rs.uniform(rand_min, rand_max, layer.shape).astype(dtype) + return (dtype)(rs.uniform(rand_min, rand_max)) diff --git a/tools/benchmark/utils/logging.py b/tools/benchmark/utils/logging.py index c71408fb6ba517..38ae33a6448c3c 100644 --- a/tools/benchmark/utils/logging.py +++ b/tools/benchmark/utils/logging.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 import logging import sys diff --git a/tools/benchmark/utils/progress_bar.py b/tools/benchmark/utils/progress_bar.py index 24bbbfa8a309eb..0c284ed29be882 100644 --- a/tools/benchmark/utils/progress_bar.py +++ b/tools/benchmark/utils/progress_bar.py @@ -1,18 +1,5 @@ -""" - Copyright (C) 2018-2020 Intel Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 from progress.bar import Bar diff --git a/tools/benchmark/utils/statistics_report.py b/tools/benchmark/utils/statistics_report.py index a053ebb82f4b93..d8791d4ba8083f 100644 --- a/tools/benchmark/utils/statistics_report.py +++ b/tools/benchmark/utils/statistics_report.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" import os import sys from enum import Enum diff --git a/tools/benchmark/utils/utils.py b/tools/benchmark/utils/utils.py index dd553f5cdb9edc..7fea6b1a46e46e 100644 --- a/tools/benchmark/utils/utils.py +++ b/tools/benchmark/utils/utils.py @@ -1,18 +1,6 @@ -""" - Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" from openvino.inference_engine import IENetwork,IECore from .constants import DEVICE_DURATION_IN_SECS, UNKNOWN_DEVICE_TYPE, \ @@ -59,16 +47,71 @@ def next_step(additional_info='', step_id=0): step_info_template = step_info_template.format(next_step.step_id, len(step_names), step_name) print(step_info_template) +def process_precision(ie_network: IENetwork, app_inputs_info, input_precision: str, output_precision: str, input_output_precision: str): + _configure_network_inputs(ie_network, app_inputs_info, input_precision) + _configure_network_outputs(ie_network, output_precision) + if input_output_precision: + _configure_network_inputs_and_outputs(ie_network, input_output_precision) -def config_network_inputs(ie_network: IENetwork, app_inputs_info): +def _configure_network_inputs(ie_network: IENetwork, app_inputs_info, input_precision: str): input_info = ie_network.input_info + for key in input_info.keys(): if app_inputs_info[key].is_image: - # Set the precision of input data provided by the user - # Should be called before load of the network to the plugin - app_inputs_info[key].precision = 'U8' - input_info[key].precision = 'U8' + app_inputs_info[key].precision = input_precision + input_info[key].precision = input_precision + +def _configure_network_outputs(ie_network: IENetwork, output_precision: str): + output_info = ie_network.outputs + for key in output_info.keys(): + output_info[key].precision = output_precision + +def _configure_network_inputs_and_outputs(ie_network: IENetwork, input_output_precision: str): + if not input_output_precision: + raise Exception("Input/output precision is empty") + + user_precision_map = _parse_arg_map(input_output_precision) + + input_info = ie_network.input_info + output_info = ie_network.outputs + + for key, value in user_precision_map.items(): + if key in input_info: + input_info[key].precision = value + elif key in output_info: + output_info[key].precision = value + else: + raise Exception("Element '{}' does not exist in network".format(key)) + +def _parse_arg_map(arg_map: str): + arg_map = arg_map.replace(" ", "") + pairs = [x.strip() for x in arg_map.split(',')] + + parsed_map = {} + for pair in pairs: + key_value = [x.strip() for x in pair.split(':')] + parsed_map.update({key_value[0]:key_value[1]}) + + return parsed_map + +def print_inputs_and_outputs_info(ie_network: IENetwork): + input_info = ie_network.input_info + for key in input_info.keys(): + tensor_desc = input_info[key].tensor_desc + logger.info("Network input '{}' precision {}, dimensions ({}): {}".format(key, + tensor_desc.precision, + tensor_desc.layout, + " ".join(str(x) for x in + tensor_desc.dims))) + output_info = ie_network.outputs + for key in output_info.keys(): + info = output_info[key] + logger.info("Network output '{}' precision {}, dimensions ({}): {}".format(key, + info.precision, + info.layout, + " ".join(str(x) for x in + info.shape))) def get_number_iterations(number_iterations: int, nireq: int, api_type: str): niter = number_iterations @@ -336,4 +379,4 @@ def dump_config(filename, config): def load_config(filename, config): with open(filename) as f: - config.update(json.load(f)) \ No newline at end of file + config.update(json.load(f))